예제 #1
0
        public static IRevitInstance ToSAM(this FamilyInstance familyInstance, ConvertSettings convertSettings)
        {
            if (familyInstance == null || !familyInstance.IsValidObject)
            {
                return(null);
            }

            IRevitInstance result = convertSettings?.GetObject <IRevitInstance>(familyInstance.Id);

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

            Document document = familyInstance.Document;

            if (document == null)
            {
                return(result);
            }

            ElementType elementType = document.GetElement(familyInstance.GetTypeId()) as ElementType;

            if (elementType == null)
            {
                return(null);
            }

            RevitType revitType = elementType.ToSAM(convertSettings);

            if (revitType == null)
            {
                return(null);
            }

            if (revitType is RevitType3D)
            {
                result = new RevitInstance3D((RevitType3D)revitType, familyInstance.ToSAM_Geometries <Spatial.ISAMGeometry3D>());
            }
            else if (revitType is RevitType2D)
            {
                result = new RevitInstance2D((RevitType2D)revitType, familyInstance.ToSAM_Geometries <Planar.ISAMGeometry2D>());
            }

            if (result != null)
            {
                result.UpdateParameterSets(familyInstance, ActiveSetting.Setting.GetValue <TypeMap>(Core.Revit.ActiveSetting.Name.ParameterMap));
                convertSettings?.Add(familyInstance.Id, result);
            }

            return(result);
        }
예제 #2
0
 public RevitInstance2D(RevitInstance2D revitInstance2D)
     : base(revitInstance2D)
 {
 }