public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            UIDocument uidoc = commandData.Application.ActiveUIDocument;
            Document   doc   = uidoc.Document;

            try
            {
                Reference pickedObj = uidoc.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element);

                if (pickedObj != null)
                {
                    ElementId elementId = pickedObj.ElementId;
                    Element   element   = doc.GetElement(elementId);

                    Parameter          param    = element.LookupParameter("Head Height");
                    InternalDefinition paramDef = param.Definition as InternalDefinition;

                    TaskDialog.Show("Parameters",
                                    string.Format("{0} parameter of type {1} with builtinparameter {2}",
                                                  paramDef.Name, paramDef.UnitType, paramDef.BuiltInParameter));
                }
                return(Result.Succeeded);
            }
            catch (Exception e)
            {
                message = e.Message;
                return(Result.Failed);
            }
        }
Example #2
0
 public static void WallElementMySQLPara(Document doc, FilteredElementCollector wallCollector, System.Data.DataTable dt)
 {
     foreach (Element ele in wallCollector)
     {
         Wall  wall  = ele as Wall;
         Level level = doc.GetElement(wall.LevelId) as Level;
         if (wall != null)
         {
             double height = 0.0;
             foreach (Autodesk.Revit.DB.Parameter param in wall.Parameters)
             {
                 InternalDefinition definition = param.Definition as InternalDefinition;
                 if (null == definition)
                 {
                     continue;
                 }
                 if (BuiltInParameter.WALL_USER_HEIGHT_PARAM == definition.BuiltInParameter)
                 {
                     height = param.AsDouble();
                 }
             }
             CreateWallMySQLRow(dt, wall.WallType.Name, level.Name, FeetTomm(wall.Width), FeetTomm(height));
         }
     }
 }
        /// <summary>
        /// Helper method to control `SetAllowVaryBetweenGroups`
        /// option for instance binding param
        /// </summary>
        static void SetInstanceParamVaryBetweenGroupsBehaviour(
            Document doc,
            Guid guid,
            bool allowVaryBetweenGroups = true)
        {
            try // last resort
            {
                SharedParameterElement sp
                    = SharedParameterElement.Lookup(doc, guid);

                // Should never happen as we will call
                // this only for *existing* shared param.

                if (null == sp)
                {
                    return;
                }

                InternalDefinition def = sp.GetDefinition();

                if (def.VariesAcrossGroups != allowVaryBetweenGroups)
                {
                    // Must be within an outer transaction!

                    def.SetAllowVaryBetweenGroups(doc, allowVaryBetweenGroups);
                }
            }
            catch { } // ideally, should report something to log...
        }
Example #4
0
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            UIDocument uidoc = commandData.Application.ActiveUIDocument;
            Document   doc   = uidoc.Document;

            try
            {
                Reference pickObj = uidoc.Selection.PickObject(ObjectType.Element);
                if (pickObj != null)
                {
                    var eleId = pickObj.ElementId;
                    var ele   = doc.GetElement(eleId);

                    //Get parameter
                    Parameter          param    = ele.LookupParameter("Head Height");
                    InternalDefinition paramDef = param.Definition as InternalDefinition;
                    TaskDialog.Show("Parameters",
                                    $"{paramDef.Name} parameter of type {paramDef.UnitType} with builtinparameer {paramDef.BuiltInParameter}");
                }
                return(Result.Succeeded);
            }
            catch (Exception e)
            {
                message = e.Message;
                return(Result.Failed);
            }
        }
Example #5
0
        public static void ExportParameters(Document doc, string path)
        {
            DefinitionFile existingDefFile = doc.Application.OpenSharedParameterFile();

            //
            doc.Application.SharedParametersFilename = path;
            DefinitionFile tempDefFile = doc.Application.OpenSharedParameterFile();

            // Manager the Exported group
            DefinitionGroup exported = null;

            var query = from dg in tempDefFile.Groups
                        where dg.Name.Equals(doc.PathName + "-Exported")
                        select dg;

            if (query.Count() == 0)
            {
                exported = tempDefFile.Groups.Create(doc.PathName + "-Exported");
            }
            else
            {
                exported = query.First();
            }

            // Iterate over the shared parameters in the document
            BindingMap bindingMap           = doc.ParameterBindings;
            DefinitionBindingMapIterator it =
                bindingMap.ForwardIterator();

            it.Reset();

            while (it.MoveNext())
            {
                InternalDefinition        definition  = it.Key as InternalDefinition;
                Autodesk.Revit.DB.Binding currBinding = bindingMap.get_Item(definition);

                // Corroborate that the current parameter has not been exported previously
                Definition existingDef = exported.Definitions
                                         .Where(d => (d.Name.Equals(definition.Name))).FirstOrDefault();
                if (existingDef != null)
                {
                    continue;
                }

                // unearth and assign the parameter's GUID
                SharedParameterElement sharedParamElem =
                    doc.GetElement(definition.Id) as SharedParameterElement;

                if (sharedParamElem == null)
                {
                    continue;
                }

                ExternalDefinitionCreationOptions options =
                    new ExternalDefinitionCreationOptions(definition.Name, definition.ParameterType);
                options.GUID = sharedParamElem.GuidValue;

                Definition createdDefinition = exported.Definitions.Create(options);
            }
        }
Example #6
0
        public static IList <SharedParameter> GetSharedParameters(Document doc)
        {
            IList <SharedParameter> extSharedParams = new List <SharedParameter>();
            BindingMap bindingMap           = doc.ParameterBindings;
            DefinitionBindingMapIterator it =
                bindingMap.ForwardIterator();

            it.Reset();

            while (it.MoveNext())
            {
                InternalDefinition        definition  = it.Key as InternalDefinition;
                Autodesk.Revit.DB.Binding currBinding = bindingMap.get_Item(definition);

                // unearth the parameter's GUID
                SharedParameterElement sharedParamElem =
                    doc.GetElement(definition.Id) as SharedParameterElement;

                if (sharedParamElem == null)
                {
                    continue;
                }

                SharedParameter sharedParam =
                    new SharedParameter(definition.Name, definition.ParameterType,
                                        sharedParamElem.GuidValue, currBinding, definition.ParameterGroup);

                extSharedParams.Add(sharedParam);
            }

            return(extSharedParams);
        }
        public MyFamilyParameter(FamilyParameter param)
        {
            List_AssociatedParameters = new List <MyParameter>();
            InternalDefinition def = param.Definition as InternalDefinition;

            Name = def.Name;

            if (param.IsShared)
            {
                ParamType = MyParameterType.Shared;
            }
            else
            {
                if (def.BuiltInParameter == BuiltInParameter.INVALID)
                {
                    ParamType = MyParameterType.Family;
                }
                else
                {
                    ParamType = MyParameterType.Builtin;
                }
            }

            IsInstance  = param.IsInstance;
            HaveFormula = param.IsDeterminedByFormula;
            Formula     = param.Formula;
            IsReporting = param.IsReporting;
            foreach (Parameter asparam in param.AssociatedParameters)
            {
                MyParameter myasparam = new MyParameter(asparam, false);
                List_AssociatedParameters.Add(myasparam);
            }

            Units = Enum.GetName(typeof(StorageType), param.StorageType);
        }
        static String GetParameterInformation(Parameter para, Document document)
        {
            string defName  = para.Definition.Name + "\t : ";
            string defValue = string.Empty;

            // Use different method to get parameter data according to the storage type
            switch (para.StorageType)
            {
            case StorageType.Double:
                //covert the number into Metric
                defValue = para.AsValueString();
                break;

            case StorageType.ElementId:
                //find out the name of the element
                Autodesk.Revit.DB.ElementId id = para.AsElementId();
                if (id.IntegerValue >= 0)
                {
                    defValue = document.GetElement(id).Name;
                }
                else
                {
                    defValue = id.IntegerValue.ToString();
                }
                break;

            case StorageType.Integer:
                if (ParameterType.YesNo == para.Definition.ParameterType)
                {
                    if (para.AsInteger() == 0)
                    {
                        defValue = "False";
                    }
                    else
                    {
                        defValue = "True";
                    }
                }
                else
                {
                    defValue = para.AsInteger().ToString();
                }
                break;

            case StorageType.String:
                defValue = para.AsString();
                break;

            default:
                InternalDefinition def = para.Definition as InternalDefinition;
                BuiltInParameter   bp  = def.BuiltInParameter;


                defValue = "Unexposed parameter.";
                break;
            }

            return(defName + defValue);
        }
 public SharedParameterContainer(string Name, Guid ParamGuid, BuiltInParameterGroup ParamGroup, bool IsInstance, InternalDefinition ParamDefinition)
 {
     name          = Name;
     paramGroup    = ParamGroup;
     isInstance    = IsInstance;
     intDefinition = ParamDefinition;
     guid          = ParamGuid;
 }
 public static void DoorElementMySQLPara(Document doc, FilteredElementCollector doorCollector,
                                         System.Data.DataTable dt)
 {
     foreach (Element ele in doorCollector)
     {
         FamilyInstance door         = ele as FamilyInstance;
         Level          level        = level = doc.GetElement(ele.LevelId) as Level;
         FamilySymbol   familySymbol =
             door.Document.GetElement(door.GetTypeId()) as FamilySymbol;
         if (door != null)
         {
             string bottomheight = null;
             string width        = null;
             string height       = null;
             string kjcha        = null;
             string drcha        = null;
             foreach (Parameter param in door.Parameters)
             {
                 InternalDefinition definition = null;
                 definition = param.Definition as InternalDefinition;
                 if (null == definition)
                 {
                     continue;
                 }
                 if (BuiltInParameter.INSTANCE_SILL_HEIGHT_PARAM == definition.BuiltInParameter)
                 {
                     bottomheight = param.AsValueString();
                 }
             }
             foreach (Parameter para in familySymbol.ParametersMap)
             {
                 InternalDefinition definition = para.Definition as InternalDefinition;
                 if (null == definition)
                 {
                     continue;
                 }
                 if (BuiltInParameter.DOOR_WIDTH == definition.BuiltInParameter)
                 {
                     width = para.AsValueString();
                 }
                 if (BuiltInParameter.GENERIC_HEIGHT == definition.BuiltInParameter)
                 {
                     height = para.AsValueString();
                 }
                 if (definition.Name == "框架材质")
                 {
                     kjcha = para.AsValueString();
                 }
                 if (definition.Name == "门材质")
                 {
                     drcha = para.AsValueString();
                 }
             }
             CreateDoorMySQLRow(dt, door.Symbol.FamilyName,
                                level.Name, drcha, kjcha, width, bottomheight, height);
         }
     }
 }
Example #11
0
 public static void DuctElementExcelPara(Document doc, FilteredElementCollector ductCollector,
                                         System.Data.DataTable dt)
 {
     foreach (Element ele in ductCollector)
     {
         Duct duct = ele as Duct;
         if (duct != null)
         {
             string Olev       = null;
             double width      = 0.0;
             double height     = 0.0;
             double offset     = 0.0;
             string shuidui    = null;
             string chuizhidui = null;
             string type       = null;
             foreach (Parameter param in duct.Parameters)
             {
                 InternalDefinition definition = null;
                 definition = param.Definition as InternalDefinition;
                 if (null == definition)
                 {
                     continue;
                 }
                 if (BuiltInParameter.RBS_START_LEVEL_PARAM == definition.BuiltInParameter)
                 {
                     Olev = param.AsValueString();
                 }
                 if (BuiltInParameter.RBS_CURVE_WIDTH_PARAM == definition.BuiltInParameter)
                 {
                     width = param.AsDouble();
                 }
                 if (BuiltInParameter.RBS_CURVE_HEIGHT_PARAM == definition.BuiltInParameter)
                 {
                     height = param.AsDouble();
                 }
                 if (BuiltInParameter.RBS_OFFSET_PARAM == definition.BuiltInParameter)
                 {
                     offset = param.AsDouble();
                 }
                 if (BuiltInParameter.RBS_CURVE_HOR_OFFSET_PARAM == definition.BuiltInParameter)
                 {
                     shuidui = param.AsValueString();
                 }
                 if (BuiltInParameter.RBS_CURVE_VERT_OFFSET_PARAM == definition.BuiltInParameter)
                 {
                     chuizhidui = param.AsValueString();
                 }
                 if (BuiltInParameter.RBS_DUCT_SYSTEM_TYPE_PARAM == definition.BuiltInParameter)
                 {
                     type = param.AsValueString();
                 }
             }
             CreateDuctEXCELRow(dt, duct.DuctType.Name, Olev,
                                FeetTomm(width), FeetTomm(height), FeetTomm(offset),
                                shuidui, chuizhidui, type);
         }
     }
 }
Example #12
0
        private void GetParameters(ParameterSet parameters)
        {
            List <string>           ParamLst  = new List <string>();
            List <string>           StrlinLst = new List <string>();
            List <BuiltInParameter> BPs       = new List <BuiltInParameter>();

            foreach (Parameter item in parameters)
            {
                ParamLst.Add(item.Definition.Name);
                StrlinLst.Add(item.Definition.Name + " : " + item.AsString());
                InternalDefinition Int = item.Definition as InternalDefinition;
                BuiltInParameter   BP  = Int.BuiltInParameter;
                BPs.Add(BP);
            }
        }
 public static void RoomElementExcelPara(Document doc, FilteredElementCollector roomCollector, DataTable dt)
 {
     foreach (Element ele in roomCollector)
     {
         Room  room  = ele as Room;
         Level level = doc.GetElement(room.LevelId) as Level;
         if (room != null)
         {
             string number       = null;
             string name         = null;
             double area         = 0.0;
             double tpoffset     = 0.0;
             double bottomoffset = 0.0;
             foreach (Parameter param in room.Parameters)
             {
                 InternalDefinition definition = param.Definition as InternalDefinition;
                 if (null == definition)
                 {
                     continue;
                 }
                 if (BuiltInParameter.ROOM_NUMBER == definition.BuiltInParameter)
                 {
                     number = param.AsString();
                 }
                 if (BuiltInParameter.ROOM_NAME == definition.BuiltInParameter)
                 {
                     name = param.AsString();
                 }
                 if (BuiltInParameter.ROOM_AREA == definition.BuiltInParameter)
                 {
                     area = param.AsDouble();
                 }
                 if (BuiltInParameter.ROOM_LOWER_OFFSET == definition.BuiltInParameter)
                 {
                     bottomoffset = param.AsDouble();
                 }
                 if (BuiltInParameter.ROOM_UPPER_OFFSET == definition.BuiltInParameter)
                 {
                     tpoffset = param.AsDouble();
                 }
             }
             //怎么 又是这里有问题MMP
             RoomIntial.
             CreateRoomExcelRow(dt, number, name, level.Name, FeetTomm(bottomoffset), FeetTomm(area)
                                , FeetTomm(tpoffset));
         }
     }
 }
Example #14
0
        protected internal static Definition GetParameterDefinition(Document doc, string name)
        {
            BindingMap val = doc.get_ParameterBindings();
            DefinitionBindingMapIterator val2 = val.ForwardIterator();

            val2.Reset();
            while (val2.MoveNext())
            {
                InternalDefinition val3 = val2.get_Key();
                if (val3.get_Name().Equals(name))
                {
                    return(val3);
                }
            }
            return(null);
        }
Example #15
0
        public static bool TryGetElementBinding(this Document document, string name, out InternalDefinition internalDefinition, out ElementBinding elementBinding)
        {
            internalDefinition = null;
            elementBinding     = null;

            if (document == null || document.ParameterBindings == null || string.IsNullOrEmpty(name))
            {
                return(false);
            }

            DefinitionBindingMapIterator definitionBindingMapIterator = document.ParameterBindings.ForwardIterator();

            if (definitionBindingMapIterator == null)
            {
                return(false);
            }

            while (definitionBindingMapIterator.MoveNext())
            {
                InternalDefinition aInternalDefinition_Temp = definitionBindingMapIterator.Key as InternalDefinition;
                if (aInternalDefinition_Temp == null)
                {
                    continue;
                }

                ElementId elementId = aInternalDefinition_Temp.Id;
                if (elementId == null || elementId == Autodesk.Revit.DB.ElementId.InvalidElementId)
                {
                    continue;
                }

                ParameterElement parameterElement = document.GetElement(elementId) as ParameterElement;
                if (parameterElement == null)
                {
                    continue;
                }

                if (name == parameterElement.Name)
                {
                    elementBinding     = (ElementBinding)definitionBindingMapIterator.Current;
                    internalDefinition = aInternalDefinition_Temp;
                    return(true);
                }
            }
            return(false);
        }
Example #16
0
        public static bool TryGetElementBinding(this Document document, Guid guid, out InternalDefinition internalDefinition, out ElementBinding elementBinding)
        {
            internalDefinition = null;
            elementBinding     = null;

            if (document == null || document.ParameterBindings == null)
            {
                return(false);
            }

            DefinitionBindingMapIterator definitionBindingMapIterator = document.ParameterBindings.ForwardIterator();

            if (definitionBindingMapIterator == null)
            {
                return(false);
            }

            while (definitionBindingMapIterator.MoveNext())
            {
                InternalDefinition internalDefinition_Temp = definitionBindingMapIterator.Key as InternalDefinition;
                if (internalDefinition_Temp == null)
                {
                    continue;
                }

                ElementId elementId = internalDefinition_Temp.Id;
                if (elementId == null || elementId == Autodesk.Revit.DB.ElementId.InvalidElementId)
                {
                    continue;
                }

                SharedParameterElement sharedParameterElement = document.GetElement(elementId) as SharedParameterElement;
                if (sharedParameterElement == null)
                {
                    continue;
                }

                if (guid == sharedParameterElement.GuidValue)
                {
                    elementBinding     = (ElementBinding)definitionBindingMapIterator.Current;
                    internalDefinition = internalDefinition_Temp;
                    return(true);
                }
            }
            return(false);
        }
Example #17
0
        internal bool DoesParameterExist(string parameterName)
        {
            // iterate the procedure over
            // all the shared parameters in the document
            BindingMap bindingMap            = m_doc.ParameterBindings;
            DefinitionBindingMapIterator itr = bindingMap.ForwardIterator();

            while (itr.MoveNext())
            {
                InternalDefinition internalDefinition
                    = itr.Key as InternalDefinition;
                if (internalDefinition.Name == parameterName)
                {
                    return(true);
                }
            }
            return(false);
        }
Example #18
0
        Stream(ArrayList data, InternalDefinition internalDef)
        {
            data.Add(new Snoop.Data.ClassSeparator(typeof(InternalDefinition)));

            var values = (BuiltInParameter[])Enum.GetValues(typeof(BuiltInParameter));

            string[] allNames = Enum.GetNames(typeof(BuiltInParameter));
            var      names    = new System.Collections.Generic.List <string>();

            for (int i = 0; i < values.Length; i++)
            {
                BuiltInParameter value = values[i];
                if ((int)value != (int)internalDef.BuiltInParameter)
                {
                    continue;
                }
                names.Add(allNames[i]);
            }

            data.Add(new Snoop.Data.String("Built in param", string.Join(", ", names)));
        }
Example #19
0
        internal void CanVaryBtwGroups(
            string parameterName,
            bool allowVaryBtwGrps)
        {
            BindingMap bindingMap            = m_doc.ParameterBindings;
            DefinitionBindingMapIterator itr = bindingMap.ForwardIterator();

            while (itr.MoveNext())
            {
                InternalDefinition internalDef = itr.Key as InternalDefinition;

                if (internalDef.Name == parameterName)
                {
                    using (Transaction t = new Transaction(m_doc)) {
                        t.Start("Allow varying b/w groups");
                        internalDef.SetAllowVaryBetweenGroups(m_doc, allowVaryBtwGrps);
                        t.Commit();
                    }
                }
            }
        }
Example #20
0
        public ParameterImpression(Parameter p)
        {
            ElementId = p.Id.IntegerValue;
            IsShared  = p.IsShared;
            if (p.IsShared)
            {
                Guid = p.GUID;
            }
            InternalDefinition definition = (InternalDefinition)p.Definition;

            Name     = definition.Name;
            HashCode = p.Id.GetHashCode();
            if (definition.BuiltInParameter == BuiltInParameter.INVALID)
            {
                IsBuiltIn = false;
            }
            else
            {
                IsBuiltIn        = true;
                BuiltInParameter = definition.BuiltInParameter;
            }
        }
        public MyProjectSharedParameter(Parameter param, Document doc)
        {
            def  = param.Definition;
            Name = def.Name;

            InternalDefinition intDef = def as InternalDefinition;

            if (intDef != null)
            {
                paramGroup = intDef.ParameterGroup;
            }

            guid = param.GUID;


            ElementBinding elemBind = this.GetBindingByParamName(Name, doc);

            foreach (Category cat in elemBind.Categories)
            {
                categories.Add(cat);
            }
        }
Example #22
0
        public ParametersInFamily(Document familyDoc)
        {
            FamilyManager fMan = familyDoc.FamilyManager;

            foreach (FamilyParameter fParam in fMan.Parameters)
            {
                if (!fParam.IsShared)
                {
                    continue;
                }

                string                name       = fParam.Definition.Name;
                bool                  isInstance = fParam.IsInstance;
                InternalDefinition    def        = fParam.Definition as InternalDefinition;
                Guid                  guid       = fParam.GUID;
                BuiltInParameterGroup paramGroup = fParam.Definition.ParameterGroup;

                SharedParameterContainer paramContainer = new SharedParameterContainer(name, guid, paramGroup, isInstance, def);

                parameters.Add(paramContainer);
            }
        }
 public static void FloorElementMySQLPara(Document doc, FilteredElementCollector floorCollector, System.Data.DataTable dt)
 {
     foreach (Element ele in floorCollector)
     {
         Floor floor = ele as Floor;
         Level level = doc.GetElement(floor.LevelId) as Level;
         if (floor != null)
         {
             double thick  = 0.0;
             double area   = 0.0;
             double offset = 0.0;
             foreach (Parameter param in floor.Parameters)
             {
                 InternalDefinition definition = param.Definition as InternalDefinition;
                 if (null == definition)
                 {
                     continue;
                 }
                 if (BuiltInParameter.FLOOR_ATTR_THICKNESS_PARAM == definition.BuiltInParameter)
                 {
                     thick = param.AsDouble();
                 }
                 if (BuiltInParameter.HOST_AREA_COMPUTED == definition.BuiltInParameter)
                 {
                     area = param.AsDouble();
                 }
                 if (BuiltInParameter.FLOOR_HEIGHTABOVELEVEL_PARAM == definition.BuiltInParameter)
                 {
                     offset = param.AsDouble();
                 }
             }
             FloorIntial.
             CreateFloorMySQLRow(dt, floor.FloorType.Name, level.Name, FeetTomm(thick), FeetTomm(area)
                                 , FeetTomm(offset));
         }
     }
 }
Example #24
0
        /// <summary>
        /// Method to retrieve filtered project parameters ID by category
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="category"></param>
        /// <returns></returns>
        public static string[] ProjectParameters(Document doc, string categoryName)
        {
            List <string> parametersID = new List <string>();

            BindingMap map = doc.ParameterBindings;
            DefinitionBindingMapIterator it = map.ForwardIterator();

            it.Reset();

            while (it.MoveNext())
            {
                ElementBinding  eleBinding = it.Current as ElementBinding;
                InstanceBinding insBinding = eleBinding as InstanceBinding;

                if (insBinding != null && IsInstBindingOfCategory(insBinding, categoryName))
                {
                    Definition def = it.Key;
                    if (def != null)
                    {
                        ExternalDefinition extDef = def as ExternalDefinition;

                        if (extDef != null)
                        {
                            string GUID = extDef.GUID.ToString();
                            parametersID.Add(GUID);
                        }
                        else
                        {
                            InternalDefinition intDef = def as InternalDefinition;
                            string             ID     = intDef.Id.ToString();
                            parametersID.Add(ID);
                        }
                    }
                }
            }
            return(parametersID.ToArray());
        }
Example #25
0
        Stream(ArrayList data, Definition paramDef)
        {
            data.Add(new Snoop.Data.ClassSeparator(typeof(Definition)));

            data.Add(new Snoop.Data.String("Name", paramDef.Name));
            data.Add(new Snoop.Data.String("Parameter type", paramDef.ParameterType.ToString()));
            data.Add(new Snoop.Data.String("Parameter group", paramDef.ParameterGroup.ToString()));

            ExternalDefinition extDef = paramDef as ExternalDefinition;

            if (extDef != null)
            {
                Stream(data, extDef);
                return;
            }

            InternalDefinition intrnalDef = paramDef as InternalDefinition;

            if (intrnalDef != null)
            {
                Stream(data, intrnalDef);
                return;
            }
        }
		Stream(ArrayList data, InternalDefinition internalDef)
		{
		    data.Add(new Snoop.Data.ClassSeparator(typeof(InternalDefinition)));

            var values = (BuiltInParameter[])Enum.GetValues(typeof (BuiltInParameter));
		    string[] allNames = Enum.GetNames(typeof (BuiltInParameter));
		    var names = new System.Collections.Generic.List<string>();
		    for (int i = 0; i < values.Length; i++)
		    {
		        BuiltInParameter value = values[i];
		        if ((int) value != (int) internalDef.BuiltInParameter) continue;
                names.Add(allNames[i]);
		    }

		    data.Add(new Snoop.Data.String("Built in param", string.Join(", ", names)));				
        }
Example #27
0
        /// <summary>
        /// Cache the parameters for an element's subelement (subelementHandle), allowing quick access later.
        /// </summary>
        /// <param name="elementId">The element id.</param>
        /// <param name="subelementHandle">The subelement ifc handle.</param>
        /// <param name="param">The element's parameter that we want to override.</param>
        /// <param name="paramVal">The override value.</param>
        static public void CacheParameterValuesForSubelementHandle(ElementId elementId, IFCAnyHandle subelementHandle, Parameter param, ParameterValue paramVal)
        {
            if ((elementId == ElementId.InvalidElementId) ||
                (subelementHandle == null) ||
                (param == null) ||
                (paramVal == null))
            {
                return;
            }

            if (IsDuplicateParameter(param))
            {
                return;
            }

            Definition paramDefinition = param.Definition;

            if (paramDefinition == null)
            {
                return;
            }

            // Don't cache parameters that aren't visible to the user.
            InternalDefinition internalDefinition = paramDefinition as InternalDefinition;

            if (internalDefinition != null && internalDefinition.Visible == false)
            {
                return;
            }

            if (string.IsNullOrWhiteSpace(paramDefinition.Name))
            {
                return;
            }

            string cleanPropertyName = NamingUtil.RemoveSpaces(paramDefinition.Name);

            IDictionary <IFCAnyHandle, ParameterValueSubelementCache> anyHandleParamValMap;

            if (!m_SubelementParameterValueCache.TryGetValue(elementId, out anyHandleParamValMap))
            {
                anyHandleParamValMap = new Dictionary <IFCAnyHandle, ParameterValueSubelementCache>();
                m_SubelementParameterValueCache[elementId] = anyHandleParamValMap;
            }

            ParameterValueSubelementCache paramCache;

            if (!anyHandleParamValMap.TryGetValue(subelementHandle, out paramCache))
            {
                paramCache = new ParameterValueSubelementCache();
                anyHandleParamValMap[subelementHandle] = paramCache;
            }

            ParameterValue cachedParamVal;

            if (paramCache.ParameterValueCache.TryGetValue(cleanPropertyName, out cachedParamVal))
            {
                return;
            }

            paramCache.ParameterValueCache[cleanPropertyName] = paramVal;
        }
Example #28
0
        /// <summary>
        /// Cache the parameters for an element, allowing quick access later.
        /// </summary>
        /// <param name="id">The element id.</param>
        static private void CacheParametersForElement(ElementId id)
        {
            if (id == ElementId.InvalidElementId)
            {
                return;
            }

            if (m_NonIFCParameters.ContainsKey(id))
            {
                return;
            }

            IDictionary <BuiltInParameterGroup, ParameterElementCache> nonIFCParameters = new SortedDictionary <BuiltInParameterGroup, ParameterElementCache>();
            ParameterElementCache ifcParameters = new ParameterElementCache();

            m_NonIFCParameters[id] = nonIFCParameters;
            m_IFCParameters[id]    = ifcParameters;

            Element element = ExporterCacheManager.Document.GetElement(id);

            if (element == null)
            {
                return;
            }

            ParameterSet parameterIds = element.Parameters;

            if (parameterIds.Size == 0)
            {
                return;
            }

            // We will do two passes.  In the first pass, we will look at parameters in the IFC group.
            // In the second pass, we will look at all other groups.
            ParameterSetIterator parameterIt = parameterIds.ForwardIterator();

            while (parameterIt.MoveNext())
            {
                Parameter parameter = parameterIt.Current as Parameter;
                if (parameter == null)
                {
                    continue;
                }

                if (IsDuplicateParameter(parameter))
                {
                    continue;
                }

                Definition paramDefinition = parameter.Definition;
                if (paramDefinition == null)
                {
                    continue;
                }

                // Don't cache parameters that aren't visible to the user.
                InternalDefinition internalDefinition = paramDefinition as InternalDefinition;
                if (internalDefinition != null && internalDefinition.Visible == false)
                {
                    continue;
                }

                if (string.IsNullOrWhiteSpace(paramDefinition.Name))
                {
                    continue;
                }

                string cleanPropertyName = NamingUtil.RemoveSpaces(paramDefinition.Name);

                BuiltInParameterGroup groupId = paramDefinition.ParameterGroup;
                if (groupId != BuiltInParameterGroup.PG_IFC)
                {
                    ParameterElementCache cacheForGroup = null;
                    if (!nonIFCParameters.TryGetValue(groupId, out cacheForGroup))
                    {
                        cacheForGroup             = new ParameterElementCache();
                        nonIFCParameters[groupId] = cacheForGroup;
                    }
                    cacheForGroup.ParameterCache[cleanPropertyName] = parameter;
                }
                else
                {
                    ifcParameters.ParameterCache[cleanPropertyName] = parameter;
                }
            }
        }
        /// <summary>
        /// Return number of occurrences of
        /// search string in parameter value.
        /// </summary>
        bool SearchParameter(
            SortableBindingList <SearchHit> data,
            Element e,
            Parameter p,
            string bipName,
            Regex regex)
        {
            if (null == p)
            {
                return(false);
            }

            if (StorageType.String != p.StorageType)
            {
                return(false);
            }

            // Do not search non-visible user-defined
            // parameters, e.g. data storage used by
            // many applications prior to 2012:

            Definition def = p.Definition;

            ExternalDefinition extdef = p.Definition
                                        as ExternalDefinition;

            if (null != extdef && !extdef.Visible)
            {
                return(false);
            }

            InternalDefinition intdef = def
                                        as InternalDefinition;

            if (null != intdef && !_searchOptions.StandardParams)
            {
                return(false);
            }

            if (null != extdef && !_searchOptions.UserParams)
            {
                return(false);
            }

            string s = GetParameterString(e, p);

            if (null == s || 0 == s.Length)
            {
                return(false);
            }

            string bipName2 = (null == intdef)
        ? null
        : intdef.BuiltInParameter.ToString();

            if (null == bipName)
            {
                bipName = bipName2;
            }
            else
            {
                Debug.Assert(!_searchOptions.BuiltInParams ||
                             bipName.Equals(bipName2),
                             "expected equal built-in parameter name");
            }

            bool foundOnParam = false;

            MatchCollection matches = regex.Matches(s);

            foreach (Match m in matches)
            {
                if (foundOnParam && 0 == m.Length)
                {
                    // ".*" causes two matches, one at the beginning
                    // and one ot the end of the search string; the
                    // second has a length of zero, so we skip it:

                    continue;
                }

                ++_counters.Hits;
                foundOnParam = true;

                SearchHit hit = new SearchHit(
                    e, bipName, def.Name, s, m.Index);

                data.Add(hit);
            }

            ++_counters.ParametersSearched;

            if (foundOnParam)
            {
                ++_counters.ParametersHit;
            }
            return(foundOnParam);
        }
Example #30
0
 public static void WindowsElementExcelPara(Document doc, FilteredElementCollector doorCollector,
                                            System.Data.DataTable dt)
 {
     foreach (Element ele in doorCollector)
     {
         FamilyInstance windows      = ele as FamilyInstance;
         Level          level        = level = doc.GetElement(ele.LevelId) as Level;
         FamilySymbol   familySymbol =
             windows.Document.GetElement(windows.GetTypeId()) as FamilySymbol;
         if (windows != null)
         {
             string bottomheight = null;
             string width        = null;
             string height       = null;
             string bolicha      = null;
             string outcha       = null;
             string intercha     = null;
             foreach (Parameter param in windows.Parameters)
             {
                 InternalDefinition definition = null;
                 definition = param.Definition as InternalDefinition;
                 if (null == definition)
                 {
                     continue;
                 }
                 if (BuiltInParameter.INSTANCE_SILL_HEIGHT_PARAM == definition.BuiltInParameter)
                 {
                     bottomheight = param.AsValueString();
                 }
             }
             foreach (Parameter para in familySymbol.ParametersMap)
             {
                 InternalDefinition definition = para.Definition as InternalDefinition;
                 if (null == definition)
                 {
                     continue;
                 }
                 if (BuiltInParameter.DOOR_WIDTH == definition.BuiltInParameter)
                 {
                     width = para.AsValueString();
                 }
                 if (BuiltInParameter.GENERIC_HEIGHT == definition.BuiltInParameter)
                 {
                     height = para.AsValueString();
                 }
                 if (definition.Name == "玻璃嵌板材质")
                 {
                     bolicha = para.AsValueString();
                 }
                 if (definition.Name == "框架内部材质")
                 {
                     intercha = para.AsValueString();
                 }
                 if (definition.Name == "框架内部材质")
                 {
                     outcha = para.AsValueString();
                 }
             }
             CreateWindowExcelRow(dt, windows.Symbol.FamilyName, level.Name, outcha, intercha,
                                  bolicha, width, bottomheight, height);
         }
     }
 }
Example #31
0
        Stream(ArrayList data, InternalDefinition internalDef)
        {
            data.Add(new Snoop.Data.ClassSeparator(typeof(InternalDefinition)));

            data.Add(new Snoop.Data.String("Built in param", internalDef.BuiltInParameter.ToString()));
        }
Example #32
0
        private void Stream(ArrayList data, InternalDefinition internalDef)
        {
            data.Add(new Snoop.Data.ClassSeparator(typeof(InternalDefinition)));

            data.Add(new Snoop.Data.String("Built in param", internalDef.BuiltInParameter.ToString()));
        }