コード例 #1
0
ファイル: IInstance.cs プロジェクト: chuongmep/Revit_Toolkit
        /***************************************************/
        /****               Public Methods              ****/
        /***************************************************/

        public static IInstance InstanceFromRevit(this CurveElement curveElement, RevitSettings settings = null, Dictionary <string, List <IBHoMObject> > refObjects = null)
        {
            settings = settings.DefaultIfNull();

            IInstance instance = refObjects.GetValue <ModelInstance>(curveElement.Id);

            if (instance != null)
            {
                return(instance);
            }

            InstanceProperties instanceProperties = (curveElement.LineStyle as GraphicsStyle).InstancePropertiesFromRevit(settings, refObjects) as InstanceProperties;

            if (curveElement.ViewSpecific)
            {
                View view = curveElement.Document.GetElement(curveElement.OwnerViewId) as View;
                if (view == null)
                {
                    return(null);
                }

                instance = BH.Engine.Adapters.Revit.Create.DraftingInstance(instanceProperties, view.Name, curveElement.GeometryCurve.IFromRevit());
            }
            else
            {
                instance = BH.Engine.Adapters.Revit.Create.ModelInstance(instanceProperties, curveElement.GeometryCurve.IFromRevit());
            }

            instance.Name = curveElement.Name;

            //Set identifiers, parameters & custom data
            instance.SetIdentifiers(curveElement);
            instance.CopyParameters(curveElement, settings.ParameterSettings);
            instance.SetProperties(curveElement, settings.ParameterSettings);

            refObjects.AddOrReplace(curveElement.Id, instance);
            return(instance);
        }