Esempio n. 1
0
        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);
        }
Esempio n. 2
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);
        }