public static RevitType ToSAM(this ElementType elementType, ConvertSettings convertSettings) { if (elementType == null) { return(null); } RevitType result = convertSettings?.GetObject <RevitType>(elementType.Id); if (result != null) { return(result); } switch (elementType.Category.CategoryType) { case CategoryType.AnalyticalModel: case CategoryType.Model: result = new RevitType3D(elementType.Name); break; case CategoryType.Annotation: result = new RevitType2D(elementType.Name); break; } if (result != null) { result.UpdateParameterSets(elementType, ActiveSetting.Setting.GetValue <TypeMap>(Core.Revit.ActiveSetting.Name.ParameterMap)); convertSettings?.Add(elementType.Id, result); } return(result); }
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); }