diff --git a/src/cs/vim/Vim.Format.Tests/ElementParameterInfoServiceTests.cs b/src/cs/vim/Vim.Format.Tests/ElementParameterInfoServiceTests.cs
index 1af0a61..fe7b0a1 100644
--- a/src/cs/vim/Vim.Format.Tests/ElementParameterInfoServiceTests.cs
+++ b/src/cs/vim/Vim.Format.Tests/ElementParameterInfoServiceTests.cs
@@ -34,7 +34,7 @@ public static void TestElementParameterInfoService(string vimFilePath)
var elementLevelInfos = infos.ElementLevelInfos;
var elementMeasureInfos = infos.ElementMeasureInfos;
var elementIfcInfos = infos.ElementIfcInfos;
- var parameterMeasureTypes = infos.ParameterMeasureTypes;
+ var parameterMeasureInfos = infos.ParameterMeasureInfos;
var validationTableSet = new EntityTableSet(
vimFileInfo,
@@ -49,7 +49,7 @@ public static void TestElementParameterInfoService(string vimFilePath)
Assert.AreEqual(elementInstanceCount, elementIfcInfos.Length);
var parameterCount = validationTableSet.ParameterTable.RowCount;
- Assert.AreEqual(parameterCount, parameterMeasureTypes.Length);
+ Assert.AreEqual(parameterCount, parameterMeasureInfos.Length);
var familyInstanceElementMap = validationTableSet.ElementIndexMaps.FamilyInstanceIndexFromElementIndex;
diff --git a/src/cs/vim/Vim.Format/CategoryDomain.cs b/src/cs/vim/Vim.Format/CategoryDomain.cs
new file mode 100644
index 0000000..806a657
--- /dev/null
+++ b/src/cs/vim/Vim.Format/CategoryDomain.cs
@@ -0,0 +1,1202 @@
+using System.Collections.Generic;
+
+namespace Vim.Format
+{
+ public enum CategoryDomainEnum
+ {
+ Conceptual = 0,
+ Physical = 10,
+ Topography = 20,
+ Group = 30,
+ Rooms = 40,
+ System = 50,
+ Link = 60,
+ Annotation = 70,
+ Symbol = 80,
+ }
+
+ public static class CategoryDomainEnumExtensions
+ {
+ public static string ToDisplayString(this CategoryDomainEnum c)
+ => c.ToString("G");
+ }
+
+ ///
+ /// The CategoryDomain is a labeling of each Revit Built-in category to help filter
+ /// whether elements belong to more conceptual domains or whether they
+ /// have a physical presence in buildings.
+ ///
+ public static class CategoryDomain
+ {
+ ///
+ /// Returns a mapping of Revit built-in categories to domains
+ ///
+ public static Dictionary GetCategoryDomainMap()
+ {
+ return new Dictionary
+ {
+ { "INVALID", CategoryDomainEnum.Conceptual },
+ { "OST_AbutmentFoundations", CategoryDomainEnum.Physical },
+ { "OST_AbutmentFoundationTags", CategoryDomainEnum.Annotation },
+ { "OST_AbutmentPiles", CategoryDomainEnum.Physical },
+ { "OST_AbutmentPileTags", CategoryDomainEnum.Annotation },
+ { "OST_AbutmentWalls", CategoryDomainEnum.Physical },
+ { "OST_AbutmentWallTags", CategoryDomainEnum.Annotation },
+ { "OST_AdaptivePoints", CategoryDomainEnum.Conceptual },
+ { "OST_AdaptivePoints_HiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_AdaptivePoints_Lines", CategoryDomainEnum.Conceptual },
+ { "OST_AdaptivePoints_Planes", CategoryDomainEnum.Conceptual },
+ { "OST_AdaptivePoints_Points", CategoryDomainEnum.Conceptual },
+ { "OST_Alignments", CategoryDomainEnum.Conceptual },
+ { "OST_AlignmentsTags", CategoryDomainEnum.Annotation },
+ { "OST_AlignmentStationLabels", CategoryDomainEnum.Conceptual },
+ { "OST_AlignmentStationLabelSets", CategoryDomainEnum.Conceptual },
+ { "OST_AlwaysExcludedInAllViews", CategoryDomainEnum.Conceptual },
+ { "OST_Analemma", CategoryDomainEnum.Conceptual },
+ { "OST_AnalysisDisplayStyle", CategoryDomainEnum.Conceptual },
+ { "OST_AnalysisResults", CategoryDomainEnum.Conceptual },
+ { "OST_AnalyticalMember", CategoryDomainEnum.Conceptual },
+ { "OST_AnalyticalMemberCrossSection", CategoryDomainEnum.Conceptual },
+ { "OST_AnalyticalMemberLocalCoordSys", CategoryDomainEnum.Conceptual },
+ { "OST_AnalyticalMemberTags", CategoryDomainEnum.Annotation },
+ { "OST_AnalyticalNodes", CategoryDomainEnum.Conceptual },
+ { "OST_AnalyticalNodes_Lines", CategoryDomainEnum.Conceptual },
+ { "OST_AnalyticalNodes_Planes", CategoryDomainEnum.Conceptual },
+ { "OST_AnalyticalNodes_Points", CategoryDomainEnum.Conceptual },
+ { "OST_AnalyticalOpening", CategoryDomainEnum.Conceptual },
+ { "OST_AnalyticalOpeningTags", CategoryDomainEnum.Annotation },
+ { "OST_AnalyticalPanel", CategoryDomainEnum.Physical },
+ { "OST_AnalyticalPanelLocalCoordSys", CategoryDomainEnum.Conceptual },
+ { "OST_AnalyticalPanelTags", CategoryDomainEnum.Annotation },
+ { "OST_AnalyticalPipeConnectionLineSymbol", CategoryDomainEnum.Symbol },
+ { "OST_AnalyticalPipeConnections", CategoryDomainEnum.Conceptual },
+ { "OST_AnalyticalRigidLinks", CategoryDomainEnum.Conceptual },
+ { "OST_AnalyticSpaces", CategoryDomainEnum.Conceptual },
+ { "OST_AnalyticSurfaces", CategoryDomainEnum.Conceptual },
+ { "OST_AnnotationCrop", CategoryDomainEnum.Conceptual },
+ { "OST_AnnotationCropSpecial", CategoryDomainEnum.Conceptual },
+ { "OST_AppearanceAsset", CategoryDomainEnum.Conceptual },
+ { "OST_ApproachSlabs", CategoryDomainEnum.Physical },
+ { "OST_ApproachSlabTags", CategoryDomainEnum.Annotation },
+ { "OST_ArcWallRectOpening", CategoryDomainEnum.Conceptual },
+ { "OST_AreaColorFill", CategoryDomainEnum.Conceptual },
+ { "OST_AreaInteriorFill", CategoryDomainEnum.Conceptual },
+ { "OST_AreaInteriorFillVisibility", CategoryDomainEnum.Conceptual },
+ { "OST_AreaLoads", CategoryDomainEnum.Conceptual },
+ { "OST_AreaLoadTags", CategoryDomainEnum.Annotation },
+ { "OST_AreaPolylines", CategoryDomainEnum.Conceptual },
+ { "OST_AreaReference", CategoryDomainEnum.Conceptual },
+ { "OST_AreaReferenceVisibility", CategoryDomainEnum.Conceptual },
+ { "OST_AreaRein", CategoryDomainEnum.Conceptual },
+ { "OST_AreaReinBoundary", CategoryDomainEnum.Conceptual },
+ { "OST_AreaReinSketchOverride", CategoryDomainEnum.Conceptual },
+ { "OST_AreaReinSpanSymbol", CategoryDomainEnum.Symbol },
+ { "OST_AreaReinTags", CategoryDomainEnum.Annotation },
+ { "OST_AreaReinXVisibility", CategoryDomainEnum.Conceptual },
+ { "OST_AreaReport_Arc_Minus", CategoryDomainEnum.Conceptual },
+ { "OST_AreaReport_Arc_Plus", CategoryDomainEnum.Conceptual },
+ { "OST_AreaReport_Boundary", CategoryDomainEnum.Conceptual },
+ { "OST_AreaReport_Triangle", CategoryDomainEnum.Conceptual },
+ { "OST_Areas", CategoryDomainEnum.Conceptual },
+ { "OST_AreaSchemeLines", CategoryDomainEnum.Conceptual },
+ { "OST_AreaSchemes", CategoryDomainEnum.Conceptual },
+ { "OST_AreaTags", CategoryDomainEnum.Annotation },
+ { "OST_Assemblies", CategoryDomainEnum.Group },
+ { "OST_AssemblyOrigin", CategoryDomainEnum.Conceptual },
+ { "OST_AssemblyOrigin_Lines", CategoryDomainEnum.Conceptual },
+ { "OST_AssemblyOrigin_Planes", CategoryDomainEnum.Conceptual },
+ { "OST_AssemblyOrigin_Points", CategoryDomainEnum.Conceptual },
+ { "OST_AssemblyTags", CategoryDomainEnum.Annotation },
+ { "OST_AudioVisualDevices", CategoryDomainEnum.Physical },
+ { "OST_AudioVisualDevicesHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_AudioVisualDeviceTags", CategoryDomainEnum.Annotation },
+ { "OST_Automatic", CategoryDomainEnum.Conceptual },
+ { "OST_AxisOfRotation", CategoryDomainEnum.Conceptual },
+ { "OST_AxisX", CategoryDomainEnum.Conceptual },
+ { "OST_AxisY", CategoryDomainEnum.Conceptual },
+ { "OST_AxisZ", CategoryDomainEnum.Conceptual },
+ { "OST_BasePointAxisX", CategoryDomainEnum.Conceptual },
+ { "OST_BasePointAxisY", CategoryDomainEnum.Conceptual },
+ { "OST_BasePointAxisZ", CategoryDomainEnum.Conceptual },
+ { "OST_BeamAnalytical", CategoryDomainEnum.Conceptual },
+ { "OST_BeamAnalyticalTags", CategoryDomainEnum.Annotation },
+ { "OST_BeamEndSegment", CategoryDomainEnum.Conceptual },
+ { "OST_BeamLocalCoordSys", CategoryDomainEnum.Conceptual },
+ { "OST_BeamStartSegment", CategoryDomainEnum.Conceptual },
+ { "OST_BeamSystemTags", CategoryDomainEnum.Annotation },
+ { "OST_Blocks", CategoryDomainEnum.Conceptual },
+ { "OST_BoundaryConditions", CategoryDomainEnum.Conceptual },
+ { "OST_BraceAnalytical", CategoryDomainEnum.Conceptual },
+ { "OST_BraceAnalyticalTags", CategoryDomainEnum.Annotation },
+ { "OST_BraceEndSegment", CategoryDomainEnum.Conceptual },
+ { "OST_BraceLocalCoordSys", CategoryDomainEnum.Conceptual },
+ { "OST_BraceStartSegment", CategoryDomainEnum.Conceptual },
+ { "OST_BranchPanelScheduleTemplates", CategoryDomainEnum.Conceptual },
+ { "OST_BridgeAbutmentHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_BridgeAbutments", CategoryDomainEnum.Physical },
+ { "OST_BridgeAbutmentTags", CategoryDomainEnum.Annotation },
+ { "OST_BridgeArches", CategoryDomainEnum.Physical },
+ { "OST_BridgeArchHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_BridgeArchTags", CategoryDomainEnum.Annotation },
+ { "OST_BridgeBearingHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_BridgeBearings", CategoryDomainEnum.Physical },
+ { "OST_BridgeBearingTags", CategoryDomainEnum.Annotation },
+ { "OST_BridgeCableHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_BridgeCables", CategoryDomainEnum.Physical },
+ { "OST_BridgeCableTags", CategoryDomainEnum.Annotation },
+ { "OST_BridgeDeckHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_BridgeDecks", CategoryDomainEnum.Physical },
+ { "OST_BridgeDeckTags", CategoryDomainEnum.Annotation },
+ { "OST_BridgeFoundationHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_BridgeFoundations", CategoryDomainEnum.Physical },
+ { "OST_BridgeFoundationTags", CategoryDomainEnum.Annotation },
+ { "OST_BridgeFraming", CategoryDomainEnum.Physical },
+ { "OST_BridgeFramingCrossBracing", CategoryDomainEnum.Physical },
+ { "OST_BridgeFramingCrossBracingTags", CategoryDomainEnum.Annotation },
+ { "OST_BridgeFramingDiaphragms", CategoryDomainEnum.Physical },
+ { "OST_BridgeFramingDiaphragmTags", CategoryDomainEnum.Annotation },
+ { "OST_BridgeFramingHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_BridgeFramingTags", CategoryDomainEnum.Annotation },
+ { "OST_BridgeFramingTrusses", CategoryDomainEnum.Physical },
+ { "OST_BridgeFramingTrussTags", CategoryDomainEnum.Annotation },
+ { "OST_BridgeGirderHiddenLines", CategoryDomainEnum.Annotation },
+ { "OST_BridgeGirders", CategoryDomainEnum.Physical },
+ { "OST_BridgeGirderTags", CategoryDomainEnum.Annotation },
+ { "OST_BridgePierHiddenLines", CategoryDomainEnum.Annotation },
+ { "OST_BridgePiers", CategoryDomainEnum.Physical },
+ { "OST_BridgePierTags", CategoryDomainEnum.Annotation },
+ { "OST_BridgeTowerHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_BridgeTowers", CategoryDomainEnum.Physical },
+ { "OST_BridgeTowerTags", CategoryDomainEnum.Annotation },
+ { "OST_BrokenSectionLine", CategoryDomainEnum.Conceptual },
+ { "OST_BuildingPad", CategoryDomainEnum.Physical },
+ { "OST_CableTray", CategoryDomainEnum.Physical },
+ { "OST_CableTrayCenterLine", CategoryDomainEnum.Conceptual },
+ { "OST_CableTrayDrop", CategoryDomainEnum.Physical },
+ { "OST_CableTrayFitting", CategoryDomainEnum.Physical },
+ { "OST_CableTrayFittingCenterLine", CategoryDomainEnum.Conceptual },
+ { "OST_CableTrayFittingTags", CategoryDomainEnum.Annotation },
+ { "OST_CableTrayRiseDrop", CategoryDomainEnum.Physical },
+ { "OST_CableTrayRun", CategoryDomainEnum.Physical },
+ { "OST_CableTrayTags", CategoryDomainEnum.Annotation },
+ { "OST_Cage", CategoryDomainEnum.Conceptual },
+ { "OST_CalloutBoundary", CategoryDomainEnum.Conceptual },
+ { "OST_CalloutHeads", CategoryDomainEnum.Conceptual },
+ { "OST_CalloutLeaderLine", CategoryDomainEnum.Conceptual },
+ { "OST_Callouts", CategoryDomainEnum.Conceptual },
+ { "OST_Camera_Lines", CategoryDomainEnum.Conceptual },
+ { "OST_Cameras", CategoryDomainEnum.Conceptual },
+ { "OST_Casework", CategoryDomainEnum.Physical },
+ { "OST_CaseworkHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_CaseworkTags", CategoryDomainEnum.Annotation },
+ { "OST_Catalogs", CategoryDomainEnum.Conceptual },
+ { "OST_CeilingOpening", CategoryDomainEnum.Conceptual },
+ { "OST_Ceilings", CategoryDomainEnum.Physical },
+ { "OST_CeilingsCut", CategoryDomainEnum.Conceptual },
+ { "OST_CeilingsCutPattern", CategoryDomainEnum.Conceptual },
+ { "OST_CeilingsDefault", CategoryDomainEnum.Conceptual },
+ { "OST_CeilingsFinish1", CategoryDomainEnum.Conceptual },
+ { "OST_CeilingsFinish2", CategoryDomainEnum.Conceptual },
+ { "OST_CeilingsHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_CeilingsInsulation", CategoryDomainEnum.Conceptual },
+ { "OST_CeilingsMembrane", CategoryDomainEnum.Conceptual },
+ { "OST_CeilingsProjection", CategoryDomainEnum.Conceptual },
+ { "OST_CeilingsStructure", CategoryDomainEnum.Conceptual },
+ { "OST_CeilingsSubstrate", CategoryDomainEnum.Conceptual },
+ { "OST_CeilingsSurfacePattern", CategoryDomainEnum.Conceptual },
+ { "OST_CeilingTags", CategoryDomainEnum.Annotation },
+ { "OST_CenterLines", CategoryDomainEnum.Conceptual },
+ { "OST_CLines", CategoryDomainEnum.Conceptual },
+ { "OST_CloudLines", CategoryDomainEnum.Conceptual },
+ { "OST_ColorFillLegends", CategoryDomainEnum.Conceptual },
+ { "OST_ColorFillSchema", CategoryDomainEnum.Conceptual },
+ { "OST_ColumnAnalytical", CategoryDomainEnum.Conceptual },
+ { "OST_ColumnAnalyticalGeometry", CategoryDomainEnum.Conceptual },
+ { "OST_ColumnAnalyticalRigidLinks", CategoryDomainEnum.Conceptual },
+ { "OST_ColumnAnalyticalTags", CategoryDomainEnum.Annotation },
+ { "OST_ColumnEndSegment", CategoryDomainEnum.Conceptual },
+ { "OST_ColumnLocalCoordSys", CategoryDomainEnum.Conceptual },
+ { "OST_ColumnOpening", CategoryDomainEnum.Conceptual },
+ { "OST_Columns", CategoryDomainEnum.Physical },
+ { "OST_ColumnsHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_ColumnStartSegment", CategoryDomainEnum.Conceptual },
+ { "OST_ColumnTags", CategoryDomainEnum.Annotation },
+ { "OST_CommunicationDevices", CategoryDomainEnum.Physical },
+ { "OST_CommunicationDeviceTags", CategoryDomainEnum.Annotation },
+ { "OST_CompassInner", CategoryDomainEnum.Conceptual },
+ { "OST_CompassOuter", CategoryDomainEnum.Conceptual },
+ { "OST_CompassPrimaryMonth", CategoryDomainEnum.Conceptual },
+ { "OST_CompassSecondaryMonth", CategoryDomainEnum.Conceptual },
+ { "OST_CompassSection", CategoryDomainEnum.Conceptual },
+ { "OST_CompassSectionFilled", CategoryDomainEnum.Conceptual },
+ { "OST_ComponentRepeater", CategoryDomainEnum.Conceptual },
+ { "OST_ComponentRepeaterSlot", CategoryDomainEnum.Conceptual },
+ { "OST_Conduit", CategoryDomainEnum.Physical },
+ { "OST_ConduitCenterLine", CategoryDomainEnum.Conceptual },
+ { "OST_ConduitDrop", CategoryDomainEnum.Physical },
+ { "OST_ConduitFitting", CategoryDomainEnum.Physical },
+ { "OST_ConduitFittingCenterLine", CategoryDomainEnum.Conceptual },
+ { "OST_ConduitFittingTags", CategoryDomainEnum.Annotation },
+ { "OST_ConduitRiseDrop", CategoryDomainEnum.Physical },
+ { "OST_ConduitRun", CategoryDomainEnum.System },
+ { "OST_ConduitStandards", CategoryDomainEnum.Conceptual },
+ { "OST_ConduitTags", CategoryDomainEnum.Annotation },
+ { "OST_ConnectorElem", CategoryDomainEnum.Conceptual },
+ { "OST_ConnectorElemXAxis", CategoryDomainEnum.Conceptual },
+ { "OST_ConnectorElemYAxis", CategoryDomainEnum.Conceptual },
+ { "OST_ConnectorElemZAxis", CategoryDomainEnum.Conceptual },
+ { "OST_Constraints", CategoryDomainEnum.Conceptual },
+ { "OST_ContourLabels", CategoryDomainEnum.Conceptual },
+ { "OST_ControlAxisX", CategoryDomainEnum.Conceptual },
+ { "OST_ControlAxisY", CategoryDomainEnum.Conceptual },
+ { "OST_ControlAxisZ", CategoryDomainEnum.Conceptual },
+ { "OST_ControlLocal", CategoryDomainEnum.Conceptual },
+ { "OST_CoordinateSystem", CategoryDomainEnum.Conceptual },
+ { "OST_Coordination_Model", CategoryDomainEnum.Conceptual },
+ { "OST_Cornices", CategoryDomainEnum.Physical },
+ { "OST_Coupler", CategoryDomainEnum.Physical },
+ { "OST_CouplerHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_CouplerTags", CategoryDomainEnum.Annotation },
+ { "OST_CoverType", CategoryDomainEnum.Conceptual },
+ { "OST_CropBoundary", CategoryDomainEnum.Conceptual },
+ { "OST_CropBoundarySpecial", CategoryDomainEnum.Conceptual },
+ { "OST_Curtain_Systems", CategoryDomainEnum.Conceptual },
+ { "OST_CurtainGrids", CategoryDomainEnum.Conceptual },
+ { "OST_CurtainGridsCurtaSystem", CategoryDomainEnum.Conceptual },
+ { "OST_CurtainGridsRoof", CategoryDomainEnum.Conceptual },
+ { "OST_CurtainGridsSystem", CategoryDomainEnum.Conceptual },
+ { "OST_CurtainGridsWall", CategoryDomainEnum.Conceptual },
+ { "OST_CurtainWallMullions", CategoryDomainEnum.Physical },
+ { "OST_CurtainWallMullionsCut", CategoryDomainEnum.Conceptual },
+ { "OST_CurtainWallMullionsHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_CurtainWallMullionTags", CategoryDomainEnum.Annotation },
+ { "OST_CurtainWallPanels", CategoryDomainEnum.Physical },
+ { "OST_CurtainWallPanelsHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_CurtainWallPanelTags", CategoryDomainEnum.Annotation },
+ { "OST_CurtaSystem", CategoryDomainEnum.Physical },
+ { "OST_CurtaSystemFaceManager", CategoryDomainEnum.Conceptual },
+ { "OST_CurtaSystemHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_CurtaSystemTags", CategoryDomainEnum.Annotation },
+ { "OST_Curves", CategoryDomainEnum.Conceptual },
+ { "OST_CurvesMediumLines", CategoryDomainEnum.Conceptual },
+ { "OST_CurvesThinLines", CategoryDomainEnum.Conceptual },
+ { "OST_CurvesWideLines", CategoryDomainEnum.Conceptual },
+ { "OST_CutOutlines", CategoryDomainEnum.Conceptual },
+ { "OST_DataDevices", CategoryDomainEnum.Physical },
+ { "OST_DataDeviceTags", CategoryDomainEnum.Annotation },
+ { "OST_DataPanelScheduleTemplates", CategoryDomainEnum.Conceptual },
+ { "OST_DecalElement", CategoryDomainEnum.Physical },
+ { "OST_DecalType", CategoryDomainEnum.Conceptual },
+ { "OST_DemolishedLines", CategoryDomainEnum.Conceptual },
+ { "OST_DesignOptions", CategoryDomainEnum.Conceptual },
+ { "OST_DesignOptionSets", CategoryDomainEnum.Conceptual },
+ { "OST_DetailComponents", CategoryDomainEnum.Conceptual },
+ { "OST_DetailComponentsHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_DetailComponentTags", CategoryDomainEnum.Annotation },
+ { "OST_Dimensions", CategoryDomainEnum.Conceptual },
+ { "OST_DimLockControlLeader", CategoryDomainEnum.Conceptual },
+ { "OST_DirectionEdgeLines", CategoryDomainEnum.Conceptual },
+ { "OST_DisplacementElements", CategoryDomainEnum.Conceptual },
+ { "OST_DisplacementPath", CategoryDomainEnum.Conceptual },
+ { "OST_DividedPath", CategoryDomainEnum.Conceptual },
+ { "OST_DividedSurface", CategoryDomainEnum.Conceptual },
+ { "OST_DividedSurface_DiscardedDivisionLines", CategoryDomainEnum.Conceptual },
+ { "OST_DividedSurface_Gridlines", CategoryDomainEnum.Conceptual },
+ { "OST_DividedSurface_Nodes", CategoryDomainEnum.Conceptual },
+ { "OST_DividedSurface_PatternFill", CategoryDomainEnum.Conceptual },
+ { "OST_DividedSurface_PatternLines", CategoryDomainEnum.Conceptual },
+ { "OST_DividedSurface_PreDividedSurface", CategoryDomainEnum.Conceptual },
+ { "OST_DividedSurface_TransparentFace", CategoryDomainEnum.Conceptual },
+ { "OST_DividedSurfaceBelt", CategoryDomainEnum.Conceptual },
+ { "OST_DivisionProfile", CategoryDomainEnum.Conceptual },
+ { "OST_DivisionRules", CategoryDomainEnum.Conceptual },
+ { "OST_Divisions", CategoryDomainEnum.Conceptual },
+ { "OST_Doors", CategoryDomainEnum.Physical },
+ { "OST_DoorsFrameMullionCut", CategoryDomainEnum.Conceptual },
+ { "OST_DoorsFrameMullionProjection", CategoryDomainEnum.Conceptual },
+ { "OST_DoorsGlassCut", CategoryDomainEnum.Conceptual },
+ { "OST_DoorsGlassProjection", CategoryDomainEnum.Conceptual },
+ { "OST_DoorsHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_DoorsOpeningCut", CategoryDomainEnum.Conceptual },
+ { "OST_DoorsOpeningProjection", CategoryDomainEnum.Conceptual },
+ { "OST_DoorsPanelCut", CategoryDomainEnum.Conceptual },
+ { "OST_DoorsPanelProjection", CategoryDomainEnum.Conceptual },
+ { "OST_DoorTags", CategoryDomainEnum.Annotation },
+ { "OST_DormerOpeningIncomplete", CategoryDomainEnum.Conceptual },
+ { "OST_DSR_ArrowHeadStyleId", CategoryDomainEnum.Conceptual },
+ { "OST_DSR_CenterlinePatternCatId", CategoryDomainEnum.Conceptual },
+ { "OST_DSR_CenterlineTickMarkStyleId", CategoryDomainEnum.Conceptual },
+ { "OST_DSR_DimStyleHeavyEndCategoryId", CategoryDomainEnum.Conceptual },
+ { "OST_DSR_DimStyleHeavyEndCatId", CategoryDomainEnum.Conceptual },
+ { "OST_DSR_DimStyleTickCategoryId", CategoryDomainEnum.Conceptual },
+ { "OST_DSR_InteriorTickMarkStyleId", CategoryDomainEnum.Conceptual },
+ { "OST_DSR_LeaderTickMarkStyleId", CategoryDomainEnum.Conceptual },
+ { "OST_DSR_LineAndTextAttrCategoryId", CategoryDomainEnum.Conceptual },
+ { "OST_DSR_LineAndTextAttrFontId", CategoryDomainEnum.Conceptual },
+ { "OST_DuctAccessory", CategoryDomainEnum.Physical },
+ { "OST_DuctAccessoryTags", CategoryDomainEnum.Annotation },
+ { "OST_DuctAnalyticalSegments", CategoryDomainEnum.Conceptual },
+ { "OST_DuctAnalyticalSegmentTags", CategoryDomainEnum.Annotation },
+ { "OST_DuctColorFillLegends", CategoryDomainEnum.Conceptual },
+ { "OST_DuctColorFills", CategoryDomainEnum.Conceptual },
+ { "OST_DuctCurves", CategoryDomainEnum.Physical },
+ { "OST_DuctCurvesCenterLine", CategoryDomainEnum.Conceptual },
+ { "OST_DuctCurvesContour", CategoryDomainEnum.Conceptual },
+ { "OST_DuctCurvesDrop", CategoryDomainEnum.Physical },
+ { "OST_DuctCurvesInsulation", CategoryDomainEnum.Physical },
+ { "OST_DuctCurvesLining", CategoryDomainEnum.Physical },
+ { "OST_DuctCurvesRiseDrop", CategoryDomainEnum.Physical },
+ { "OST_DuctFitting", CategoryDomainEnum.Physical },
+ { "OST_DuctFittingCenterLine", CategoryDomainEnum.Conceptual },
+ { "OST_DuctFittingInsulation", CategoryDomainEnum.Physical },
+ { "OST_DuctFittingLining", CategoryDomainEnum.Physical },
+ { "OST_DuctFittingTags", CategoryDomainEnum.Annotation },
+ { "OST_DuctInsulations", CategoryDomainEnum.Physical },
+ { "OST_DuctInsulationsTags", CategoryDomainEnum.Annotation },
+ { "OST_DuctLinings", CategoryDomainEnum.Physical },
+ { "OST_DuctLiningsTags", CategoryDomainEnum.Annotation },
+ { "OST_DuctSystem", CategoryDomainEnum.System },
+ { "OST_DuctSystem_Reference", CategoryDomainEnum.Conceptual },
+ { "OST_DuctSystem_Reference_Visibility", CategoryDomainEnum.Conceptual },
+ { "OST_DuctTags", CategoryDomainEnum.Annotation },
+ { "OST_DuctTerminal", CategoryDomainEnum.Physical },
+ { "OST_DuctTerminalTags", CategoryDomainEnum.Annotation },
+ { "OST_EAConstructions", CategoryDomainEnum.Conceptual },
+ { "OST_EdgeSlab", CategoryDomainEnum.Physical },
+ { "OST_EditCutProfile", CategoryDomainEnum.Conceptual },
+ { "OST_ElecDistributionSys", CategoryDomainEnum.Conceptual },
+ { "OST_ELECTRICAL_AreaBasedLoads_Boundary", CategoryDomainEnum.Conceptual },
+ { "OST_ELECTRICAL_AreaBasedLoads_InteriorFill", CategoryDomainEnum.Conceptual },
+ { "OST_ELECTRICAL_AreaBasedLoads_InteriorFill_Visibility", CategoryDomainEnum.Conceptual },
+ { "OST_ELECTRICAL_AreaBasedLoads_Reference", CategoryDomainEnum.Conceptual },
+ { "OST_ELECTRICAL_AreaBasedLoads_Reference_Visibility", CategoryDomainEnum.Conceptual },
+ { "OST_ELECTRICAL_AreaBasedLoads_Tags", CategoryDomainEnum.Annotation },
+ { "OST_ElectricalAnalyticalFeeder", CategoryDomainEnum.Physical },
+ { "OST_ElectricalAnalyticalTransformer", CategoryDomainEnum.Physical },
+ { "OST_ElectricalCircuit", CategoryDomainEnum.System },
+ { "OST_ElectricalCircuitNaming", CategoryDomainEnum.Conceptual },
+ { "OST_ElectricalCircuitTags", CategoryDomainEnum.Annotation },
+ { "OST_ElectricalDemandFactor", CategoryDomainEnum.Conceptual },
+ { "OST_ElectricalDemandFactorDefinitions", CategoryDomainEnum.Conceptual },
+ { "OST_ElectricalEquipment", CategoryDomainEnum.Physical },
+ { "OST_ElectricalEquipmentHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_ElectricalEquipmentTags", CategoryDomainEnum.Annotation },
+ { "OST_ElectricalFixtures", CategoryDomainEnum.Physical },
+ { "OST_ElectricalFixturesHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_ElectricalFixtureTags", CategoryDomainEnum.Annotation },
+ { "OST_ElectricalInternalCircuits", CategoryDomainEnum.Conceptual },
+ { "OST_ElectricalLoadClassifications", CategoryDomainEnum.Conceptual },
+ { "OST_ElectricalLoadSet", CategoryDomainEnum.Conceptual },
+ { "OST_ElectricalLoadZoneInstance", CategoryDomainEnum.Conceptual },
+ { "OST_ElectricalLoadZoneType", CategoryDomainEnum.Conceptual },
+ { "OST_ElectricalPowerSource", CategoryDomainEnum.Conceptual },
+ { "OST_ElectricalVoltage", CategoryDomainEnum.Annotation },
+ { "OST_ElectricalZoneEquipment", CategoryDomainEnum.Conceptual },
+ { "OST_Elev", CategoryDomainEnum.Conceptual },
+ { "OST_ElevationMarks", CategoryDomainEnum.Annotation },
+ { "OST_Entourage", CategoryDomainEnum.Physical },
+ { "OST_EntourageHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_EntourageTags", CategoryDomainEnum.Annotation },
+ { "OST_EPS_Demolished", CategoryDomainEnum.Conceptual },
+ { "OST_EPS_Existing", CategoryDomainEnum.Conceptual },
+ { "OST_EPS_Future", CategoryDomainEnum.Conceptual },
+ { "OST_EPS_New", CategoryDomainEnum.Conceptual },
+ { "OST_EPS_Temporary", CategoryDomainEnum.Conceptual },
+ { "OST_ExpansionJointHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_ExpansionJoints", CategoryDomainEnum.Physical },
+ { "OST_ExpansionJointTags", CategoryDomainEnum.Annotation },
+ { "OST_Extrusions", CategoryDomainEnum.Conceptual },
+ { "OST_FabricAreaBoundary", CategoryDomainEnum.Conceptual },
+ { "OST_FabricAreas", CategoryDomainEnum.Conceptual },
+ { "OST_FabricAreaSketchEnvelopeLines", CategoryDomainEnum.Conceptual },
+ { "OST_FabricAreaSketchSheetsLines", CategoryDomainEnum.Conceptual },
+ { "OST_FabricAreaTags", CategoryDomainEnum.Annotation },
+ { "OST_FabricationContainment", CategoryDomainEnum.Physical },
+ { "OST_FabricationContainmentCenterLine", CategoryDomainEnum.Conceptual },
+ { "OST_FabricationContainmentDrop", CategoryDomainEnum.Physical },
+ { "OST_FabricationContainmentRise", CategoryDomainEnum.Physical },
+ { "OST_FabricationContainmentSymbology", CategoryDomainEnum.Symbol },
+ { "OST_FabricationContainmentTags", CategoryDomainEnum.Annotation },
+ { "OST_FabricationDuctwork", CategoryDomainEnum.Physical },
+ { "OST_FabricationDuctworkCenterLine", CategoryDomainEnum.Conceptual },
+ { "OST_FabricationDuctworkDrop", CategoryDomainEnum.Physical },
+ { "OST_FabricationDuctworkInsulation", CategoryDomainEnum.Physical },
+ { "OST_FabricationDuctworkLining", CategoryDomainEnum.Physical },
+ { "OST_FabricationDuctworkRise", CategoryDomainEnum.Physical },
+ { "OST_FabricationDuctworkStiffeners", CategoryDomainEnum.Physical },
+ { "OST_FabricationDuctworkStiffenerTags", CategoryDomainEnum.Annotation },
+ { "OST_FabricationDuctworkSymbology", CategoryDomainEnum.Symbol },
+ { "OST_FabricationDuctworkTags", CategoryDomainEnum.Annotation },
+ { "OST_FabricationHangers", CategoryDomainEnum.Physical },
+ { "OST_FabricationHangerTags", CategoryDomainEnum.Annotation },
+ { "OST_FabricationPartsTmpGraphicDrag", CategoryDomainEnum.Conceptual },
+ { "OST_FabricationPartsTmpGraphicEnd", CategoryDomainEnum.Conceptual },
+ { "OST_FabricationPipework", CategoryDomainEnum.Physical },
+ { "OST_FabricationPipeworkCenterLine", CategoryDomainEnum.Conceptual },
+ { "OST_FabricationPipeworkDrop", CategoryDomainEnum.Physical },
+ { "OST_FabricationPipeworkInsulation", CategoryDomainEnum.Physical },
+ { "OST_FabricationPipeworkRise", CategoryDomainEnum.Physical },
+ { "OST_FabricationPipeworkSymbology", CategoryDomainEnum.Symbol },
+ { "OST_FabricationPipeworkTags", CategoryDomainEnum.Annotation },
+ { "OST_FabricationServiceElements", CategoryDomainEnum.Physical },
+ { "OST_FabricReinforcement", CategoryDomainEnum.Physical },
+ { "OST_FabricReinforcementBoundary", CategoryDomainEnum.Conceptual },
+ { "OST_FabricReinforcementTags", CategoryDomainEnum.Annotation },
+ { "OST_FabricReinforcementWire", CategoryDomainEnum.Physical },
+ { "OST_FabricReinSpanSymbol", CategoryDomainEnum.Symbol },
+ { "OST_FaceSplitter", CategoryDomainEnum.Conceptual },
+ { "OST_Fascia", CategoryDomainEnum.Physical },
+ { "OST_FasciaTags", CategoryDomainEnum.Annotation },
+ { "OST_FilledRegion", CategoryDomainEnum.Conceptual },
+ { "OST_FillPatterns", CategoryDomainEnum.Conceptual },
+ { "OST_FireAlarmDevices", CategoryDomainEnum.Physical },
+ { "OST_FireAlarmDeviceTags", CategoryDomainEnum.Annotation },
+ { "OST_FireProtection", CategoryDomainEnum.Physical },
+ { "OST_FireProtectionHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_FireProtectionTags", CategoryDomainEnum.Annotation },
+ { "OST_Fixtures", CategoryDomainEnum.Physical },
+ { "OST_FlexDuctCurves", CategoryDomainEnum.Physical },
+ { "OST_FlexDuctCurvesCenterLine", CategoryDomainEnum.Conceptual },
+ { "OST_FlexDuctCurvesContour", CategoryDomainEnum.Conceptual },
+ { "OST_FlexDuctCurvesInsulation", CategoryDomainEnum.Physical },
+ { "OST_FlexDuctCurvesPattern", CategoryDomainEnum.Conceptual },
+ { "OST_FlexDuctTags", CategoryDomainEnum.Annotation },
+ { "OST_FlexPipeCurves", CategoryDomainEnum.Physical },
+ { "OST_FlexPipeCurvesCenterLine", CategoryDomainEnum.Conceptual },
+ { "OST_FlexPipeCurvesContour", CategoryDomainEnum.Conceptual },
+ { "OST_FlexPipeCurvesInsulation", CategoryDomainEnum.Conceptual },
+ { "OST_FlexPipeCurvesPattern", CategoryDomainEnum.Conceptual },
+ { "OST_FlexPipeTags", CategoryDomainEnum.Annotation },
+ { "OST_FloorAnalytical", CategoryDomainEnum.Conceptual },
+ { "OST_FloorAnalyticalTags", CategoryDomainEnum.Annotation },
+ { "OST_FloorLocalCoordSys", CategoryDomainEnum.Conceptual },
+ { "OST_FloorOpening", CategoryDomainEnum.Conceptual },
+ { "OST_Floors", CategoryDomainEnum.Physical },
+ { "OST_FloorsAnalyticalGeometry", CategoryDomainEnum.Conceptual },
+ { "OST_FloorsCut", CategoryDomainEnum.Conceptual },
+ { "OST_FloorsCutPattern", CategoryDomainEnum.Conceptual },
+ { "OST_FloorsDefault", CategoryDomainEnum.Conceptual },
+ { "OST_FloorsFinish1", CategoryDomainEnum.Conceptual },
+ { "OST_FloorsFinish2", CategoryDomainEnum.Conceptual },
+ { "OST_FloorsInsulation", CategoryDomainEnum.Conceptual },
+ { "OST_FloorsInteriorEdges", CategoryDomainEnum.Conceptual },
+ { "OST_FloorsMembrane", CategoryDomainEnum.Conceptual },
+ { "OST_FloorsProjection", CategoryDomainEnum.Conceptual },
+ { "OST_FloorsSplitLines", CategoryDomainEnum.Conceptual },
+ { "OST_FloorsStructure", CategoryDomainEnum.Conceptual },
+ { "OST_FloorsSubstrate", CategoryDomainEnum.Conceptual },
+ { "OST_FloorsSurfacePattern", CategoryDomainEnum.Conceptual },
+ { "OST_FloorTags", CategoryDomainEnum.Annotation },
+ { "OST_Fluids", CategoryDomainEnum.Conceptual },
+ { "OST_FndSlabLocalCoordSys", CategoryDomainEnum.Conceptual },
+ { "OST_FoodServiceEquipment", CategoryDomainEnum.Physical },
+ { "OST_FoodServiceEquipmentHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_FoodServiceEquipmentTags", CategoryDomainEnum.Annotation },
+ { "OST_FootingAnalyticalGeometry", CategoryDomainEnum.Conceptual },
+ { "OST_FootingSpanDirectionSymbol", CategoryDomainEnum.Symbol },
+ { "OST_FoundationSlabAnalytical", CategoryDomainEnum.Conceptual },
+ { "OST_FoundationSlabAnalyticalTags", CategoryDomainEnum.Annotation },
+ { "OST_FramingAnalyticalGeometry", CategoryDomainEnum.Conceptual },
+ { "OST_Furniture", CategoryDomainEnum.Physical },
+ { "OST_FurnitureHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_FurnitureSystems", CategoryDomainEnum.Physical },
+ { "OST_FurnitureSystemsHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_FurnitureSystemTags", CategoryDomainEnum.Annotation },
+ { "OST_FurnitureTags", CategoryDomainEnum.Annotation },
+ { "OST_gbXML_Ceiling", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_ExteriorWall", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_FixedSkylight", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_FixedWindow", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_InteriorFloor", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_InteriorWall", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_NonSlidingDoor", CategoryDomainEnum.Conceptual },
+ { "OST_GbXML_Opening", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_OpeningAir", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_OperableSkylight", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_OperableWindow", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_RaisedFloor", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_Roof", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_Shade", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_SlabOnGrade", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_SlidingDoor", CategoryDomainEnum.Conceptual },
+ { "OST_GbXML_SType_Exterior", CategoryDomainEnum.Conceptual },
+ { "OST_GbXML_SType_Interior", CategoryDomainEnum.Conceptual },
+ { "OST_GbXML_SType_Shade", CategoryDomainEnum.Conceptual },
+ { "OST_GbXML_SType_Underground", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_SurfaceAir", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_UndergroundCeiling", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_UndergroundSlab", CategoryDomainEnum.Conceptual },
+ { "OST_gbXML_UndergroundWall", CategoryDomainEnum.Conceptual },
+ { "OST_GbXMLFaces", CategoryDomainEnum.Conceptual },
+ { "OST_GenericAnnotation", CategoryDomainEnum.Annotation },
+ { "OST_GenericLines", CategoryDomainEnum.Conceptual },
+ { "OST_GenericModel", CategoryDomainEnum.Physical },
+ { "OST_GenericModelHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_GenericModelTags", CategoryDomainEnum.Annotation },
+ { "OST_Girder", CategoryDomainEnum.Conceptual },
+ { "OST_GraphicalWarning_OpenConnector", CategoryDomainEnum.Conceptual },
+ { "OST_GridChains", CategoryDomainEnum.Conceptual },
+ { "OST_GridHeads", CategoryDomainEnum.Annotation },
+ { "OST_Grids", CategoryDomainEnum.Conceptual },
+ { "OST_GuideGrid", CategoryDomainEnum.Conceptual },
+ { "OST_Gutter", CategoryDomainEnum.Physical },
+ { "OST_GutterTags", CategoryDomainEnum.Annotation },
+ { "OST_HandrailTags", CategoryDomainEnum.Annotation },
+ { "OST_Hardscape", CategoryDomainEnum.Physical },
+ { "OST_HardscapeHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_HardscapeTags", CategoryDomainEnum.Annotation },
+ { "OST_HiddenFloorLines", CategoryDomainEnum.Conceptual },
+ { "OST_HiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_HiddenStructuralColumnLines", CategoryDomainEnum.Conceptual },
+ { "OST_HiddenStructuralFoundationLines", CategoryDomainEnum.Conceptual },
+ { "OST_HiddenStructuralFramingLines", CategoryDomainEnum.Conceptual },
+ { "OST_HiddenWallLines", CategoryDomainEnum.Conceptual },
+ { "OST_HorizontalBracing", CategoryDomainEnum.Conceptual },
+ { "OST_HostFin", CategoryDomainEnum.Conceptual },
+ { "OST_HostFinCeiling", CategoryDomainEnum.Conceptual },
+ { "OST_HostFinFloor", CategoryDomainEnum.Conceptual },
+ { "OST_HostFinHF", CategoryDomainEnum.Conceptual },
+ { "OST_HostFinRoof", CategoryDomainEnum.Conceptual },
+ { "OST_HostFinTags", CategoryDomainEnum.Annotation },
+ { "OST_HostFinWall", CategoryDomainEnum.Conceptual },
+ { "OST_HostTemplate", CategoryDomainEnum.Conceptual },
+ { "OST_HVAC_Load_Building_Types", CategoryDomainEnum.Conceptual },
+ { "OST_HVAC_Load_Schedules", CategoryDomainEnum.Conceptual },
+ { "OST_HVAC_Load_Space_Types", CategoryDomainEnum.Conceptual },
+ { "OST_HVAC_Zones", CategoryDomainEnum.Conceptual },
+ { "OST_HVAC_Zones_Boundary", CategoryDomainEnum.Conceptual },
+ { "OST_HVAC_Zones_ColorFill", CategoryDomainEnum.Conceptual },
+ { "OST_HVAC_Zones_InteriorFill", CategoryDomainEnum.Conceptual },
+ { "OST_HVAC_Zones_InteriorFill_Visibility", CategoryDomainEnum.Conceptual },
+ { "OST_HVAC_Zones_Reference", CategoryDomainEnum.Conceptual },
+ { "OST_HVAC_Zones_Reference_Visibility", CategoryDomainEnum.Conceptual },
+ { "OST_ImportObjectStyles", CategoryDomainEnum.Conceptual },
+ { "OST_InstanceDrivenLineStyle", CategoryDomainEnum.Conceptual },
+ { "OST_InsulationLines", CategoryDomainEnum.Conceptual },
+ { "OST_InternalAreaLoads", CategoryDomainEnum.Conceptual },
+ { "OST_InternalAreaLoadTags", CategoryDomainEnum.Annotation },
+ { "OST_InternalLineLoads", CategoryDomainEnum.Conceptual },
+ { "OST_InternalLineLoadTags", CategoryDomainEnum.Annotation },
+ { "OST_InternalLoads", CategoryDomainEnum.Conceptual },
+ { "OST_InternalPointLoads", CategoryDomainEnum.Conceptual },
+ { "OST_InternalPointLoadTags", CategoryDomainEnum.Annotation },
+ { "OST_InvisibleLines", CategoryDomainEnum.Conceptual },
+ { "OST_IOS", CategoryDomainEnum.Conceptual },
+ { "OST_IOS_GeoLocations", CategoryDomainEnum.Conceptual },
+ { "OST_IOS_GeoSite", CategoryDomainEnum.Conceptual },
+ { "OST_IOSAligningLine", CategoryDomainEnum.Conceptual },
+ { "OST_IOSAlignmentGraphics", CategoryDomainEnum.Conceptual },
+ { "OST_IOSArrays", CategoryDomainEnum.Group },
+ { "OST_IOSAttachedDetailGroups", CategoryDomainEnum.Conceptual },
+ { "OST_IOSBackedUpElements", CategoryDomainEnum.Conceptual },
+ { "OST_IOSBBoxScreenSize", CategoryDomainEnum.Conceptual },
+ { "OST_IOSConstructionLine", CategoryDomainEnum.Conceptual },
+ { "OST_IOSCrashGraphics", CategoryDomainEnum.Conceptual },
+ { "OST_IOSCuttingGeometry", CategoryDomainEnum.Conceptual },
+ { "OST_IOSDatumPlane", CategoryDomainEnum.Conceptual },
+ { "OST_IOSDetailGroups", CategoryDomainEnum.Conceptual },
+ { "OST_IOSDragBox", CategoryDomainEnum.Conceptual },
+ { "OST_IOSDragBoxInverted", CategoryDomainEnum.Conceptual },
+ { "OST_IOSFabricReinSpanSymbolCtrl", CategoryDomainEnum.Symbol },
+ { "OST_IOSFlipControl", CategoryDomainEnum.Conceptual },
+ { "OST_IOSFreeSnapLine", CategoryDomainEnum.Conceptual },
+ { "OST_IOSGhost", CategoryDomainEnum.Conceptual },
+ { "OST_IOSGroups", CategoryDomainEnum.Conceptual },
+ { "OST_IOSMeasureLine", CategoryDomainEnum.Group },
+ { "OST_IOSMeasureLineScreenSize", CategoryDomainEnum.Conceptual },
+ { "OST_IOSModelGroups", CategoryDomainEnum.Group },
+ { "OST_IOSNavWheelPivotBall", CategoryDomainEnum.Conceptual },
+ { "OST_IOSNotSilhouette", CategoryDomainEnum.Conceptual },
+ { "OST_IOSOpening", CategoryDomainEnum.Conceptual },
+ { "OST_IOSRebarSystemSpanSymbolCtrl", CategoryDomainEnum.Symbol },
+ { "OST_IOSRegeneratedElements", CategoryDomainEnum.Conceptual },
+ { "OST_IOSRegenerationFailure", CategoryDomainEnum.Conceptual },
+ { "OST_IOSRoomCalculationPoint", CategoryDomainEnum.Conceptual },
+ { "OST_IOSRoomComputationHeight", CategoryDomainEnum.Conceptual },
+ { "OST_IOSRoomPerimeterLines", CategoryDomainEnum.Conceptual },
+ { "OST_IOSRoomTagToRoomLines", CategoryDomainEnum.Annotation },
+ { "OST_IOSRoomUpperLowerLines", CategoryDomainEnum.Conceptual },
+ { "OST_IOSSketchGrid", CategoryDomainEnum.Conceptual },
+ { "OST_IOSSlabShapeEditorAutoCrease", CategoryDomainEnum.Conceptual },
+ { "OST_IOSSlabShapeEditorBoundary", CategoryDomainEnum.Conceptual },
+ { "OST_IOSSlabShapeEditorExplitCrease", CategoryDomainEnum.Conceptual },
+ { "OST_IOSSlabShapeEditorPointBoundary", CategoryDomainEnum.Conceptual },
+ { "OST_IOSSlabShapeEditorPointInterior", CategoryDomainEnum.Conceptual },
+ { "OST_IOSSuspendedSketch", CategoryDomainEnum.Conceptual },
+ { "OST_IOSThinPixel", CategoryDomainEnum.Conceptual },
+ { "OST_IOSThinPixel_Dash", CategoryDomainEnum.Conceptual },
+ { "OST_IOSThinPixel_DashDot", CategoryDomainEnum.Conceptual },
+ { "OST_IOSThinPixel_Dot", CategoryDomainEnum.Conceptual },
+ { "OST_IOSTilePatternGrid", CategoryDomainEnum.Conceptual },
+ { "OST_IOSWallCoreBoundary", CategoryDomainEnum.Conceptual },
+ { "OST_IsolatedFoundationAnalytical", CategoryDomainEnum.Conceptual },
+ { "OST_IsolatedFoundationAnalyticalTags", CategoryDomainEnum.Annotation },
+ { "OST_Joist", CategoryDomainEnum.Conceptual },
+ { "OST_KeynoteTags", CategoryDomainEnum.Annotation },
+ { "OST_KickerBracing", CategoryDomainEnum.Physical },
+ { "OST_LayoutNodes", CategoryDomainEnum.Conceptual },
+ { "OST_LayoutPath_Bases", CategoryDomainEnum.Conceptual },
+ { "OST_LayoutPathBase_Pipings", CategoryDomainEnum.Conceptual },
+ { "OST_LegendComponents", CategoryDomainEnum.Conceptual },
+ { "OST_LevelHeads", CategoryDomainEnum.Annotation },
+ { "OST_Levels", CategoryDomainEnum.Conceptual },
+ { "OST_LightingDevices", CategoryDomainEnum.Physical },
+ { "OST_LightingDeviceTags", CategoryDomainEnum.Annotation },
+ { "OST_LightingFixtures", CategoryDomainEnum.Physical },
+ { "OST_LightingFixturesHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_LightingFixtureSource", CategoryDomainEnum.Conceptual },
+ { "OST_LightingFixtureTags", CategoryDomainEnum.Annotation },
+ { "OST_LightLine", CategoryDomainEnum.Conceptual },
+ { "OST_Lights", CategoryDomainEnum.Conceptual },
+ { "OST_LineLoads", CategoryDomainEnum.Conceptual },
+ { "OST_LineLoadTags", CategoryDomainEnum.Annotation },
+ { "OST_Lines", CategoryDomainEnum.Conceptual },
+ { "OST_LinesBeyond", CategoryDomainEnum.Conceptual },
+ { "OST_LinesHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_LinkAnalyticalTags", CategoryDomainEnum.Annotation },
+ { "OST_LinkBasePoint", CategoryDomainEnum.Link },
+ { "OST_LinksAnalytical", CategoryDomainEnum.Link },
+ { "OST_LoadCases", CategoryDomainEnum.Conceptual },
+ { "OST_LoadCasesAccidental", CategoryDomainEnum.Conceptual },
+ { "OST_LoadCasesDead", CategoryDomainEnum.Conceptual },
+ { "OST_LoadCasesLive", CategoryDomainEnum.Conceptual },
+ { "OST_LoadCasesRoofLive", CategoryDomainEnum.Conceptual },
+ { "OST_LoadCasesSeismic", CategoryDomainEnum.Conceptual },
+ { "OST_LoadCasesSnow", CategoryDomainEnum.Conceptual },
+ { "OST_LoadCasesTemperature", CategoryDomainEnum.Conceptual },
+ { "OST_LoadCasesWind", CategoryDomainEnum.Conceptual },
+ { "OST_Loads", CategoryDomainEnum.Conceptual },
+ { "OST_MaskingRegion", CategoryDomainEnum.Conceptual },
+ { "OST_Mass", CategoryDomainEnum.Conceptual },
+ { "OST_MassAreaFaceTags", CategoryDomainEnum.Annotation },
+ { "OST_MassCutter", CategoryDomainEnum.Conceptual },
+ { "OST_MassExteriorWall", CategoryDomainEnum.Conceptual },
+ { "OST_MassExteriorWallUnderground", CategoryDomainEnum.Conceptual },
+ { "OST_MassFaceSplitter", CategoryDomainEnum.Conceptual },
+ { "OST_MassFloor", CategoryDomainEnum.Conceptual },
+ { "OST_MassFloorsAll", CategoryDomainEnum.Conceptual },
+ { "OST_MassForm", CategoryDomainEnum.Conceptual },
+ { "OST_MassGlazing", CategoryDomainEnum.Conceptual },
+ { "OST_MassGlazingAll", CategoryDomainEnum.Conceptual },
+ { "OST_MassHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_Massing", CategoryDomainEnum.Conceptual },
+ { "OST_MassingCutOutlines", CategoryDomainEnum.Conceptual },
+ { "OST_MassingProjectionOutlines", CategoryDomainEnum.Conceptual },
+ { "OST_MassInteriorWall", CategoryDomainEnum.Conceptual },
+ { "OST_MassOpening", CategoryDomainEnum.Conceptual },
+ { "OST_MassRoof", CategoryDomainEnum.Conceptual },
+ { "OST_MassShade", CategoryDomainEnum.Conceptual },
+ { "OST_MassSkylights", CategoryDomainEnum.Conceptual },
+ { "OST_MassSlab", CategoryDomainEnum.Conceptual },
+ { "OST_MassTags", CategoryDomainEnum.Annotation },
+ { "OST_MassWallsAll", CategoryDomainEnum.Conceptual },
+ { "OST_MassZone", CategoryDomainEnum.Conceptual },
+ { "OST_MatchAll", CategoryDomainEnum.Conceptual },
+ { "OST_MatchAnnotation", CategoryDomainEnum.Conceptual },
+ { "OST_MatchDetail", CategoryDomainEnum.Conceptual },
+ { "OST_Matchline", CategoryDomainEnum.Conceptual },
+ { "OST_MatchModel", CategoryDomainEnum.Conceptual },
+ { "OST_MatchProfile", CategoryDomainEnum.Conceptual },
+ { "OST_MatchSiteComponent", CategoryDomainEnum.Conceptual },
+ { "OST_Materials", CategoryDomainEnum.Conceptual },
+ { "OST_MaterialTags", CategoryDomainEnum.Annotation },
+ { "OST_MechanicalControlDevices", CategoryDomainEnum.Physical },
+ { "OST_MechanicalControlDevicesHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_MechanicalControlDeviceTags", CategoryDomainEnum.Annotation },
+ { "OST_MechanicalEquipment", CategoryDomainEnum.Physical },
+ { "OST_MechanicalEquipmentHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_MechanicalEquipmentSet", CategoryDomainEnum.Conceptual },
+ { "OST_MechanicalEquipmentSetBoundaryLines", CategoryDomainEnum.Conceptual },
+ { "OST_MechanicalEquipmentSetTags", CategoryDomainEnum.Annotation },
+ { "OST_MechanicalEquipmentTags", CategoryDomainEnum.Annotation },
+ { "OST_MedicalEquipment", CategoryDomainEnum.Physical },
+ { "OST_MedicalEquipmentHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_MedicalEquipmentTags", CategoryDomainEnum.Annotation },
+ { "OST_MEPAnalyticalAirLoop", CategoryDomainEnum.Conceptual },
+ { "OST_MEPAnalyticalBus", CategoryDomainEnum.Conceptual },
+ { "OST_MEPAnalyticalTransferSwitch", CategoryDomainEnum.Conceptual },
+ { "OST_MEPAnalyticalWaterLoop", CategoryDomainEnum.Conceptual },
+ { "OST_MEPAncillaryFraming", CategoryDomainEnum.Physical },
+ { "OST_MEPAncillaryFramingTags", CategoryDomainEnum.Annotation },
+ { "OST_MEPLoadAreaColorFill", CategoryDomainEnum.Conceptual },
+ { "OST_MEPLoadAreaInteriorFill", CategoryDomainEnum.Conceptual },
+ { "OST_MEPLoadAreaInteriorFillVisibility", CategoryDomainEnum.Conceptual },
+ { "OST_MEPLoadAreaReference", CategoryDomainEnum.Conceptual },
+ { "OST_MEPLoadAreaReferenceVisibility", CategoryDomainEnum.Conceptual },
+ { "OST_MEPLoadAreas", CategoryDomainEnum.Conceptual },
+ { "OST_MEPLoadAreaSeparationLines", CategoryDomainEnum.Conceptual },
+ { "OST_MEPLoadAreaTags", CategoryDomainEnum.Annotation },
+ { "OST_MEPSpaceColorFill", CategoryDomainEnum.Conceptual },
+ { "OST_MEPSpaceInteriorFill", CategoryDomainEnum.Conceptual },
+ { "OST_MEPSpaceInteriorFillVisibility", CategoryDomainEnum.Conceptual },
+ { "OST_MEPSpaceReference", CategoryDomainEnum.Conceptual },
+ { "OST_MEPSpaceReferenceVisibility", CategoryDomainEnum.Conceptual },
+ { "OST_MEPSpaces", CategoryDomainEnum.Conceptual },
+ { "OST_MEPSpaceSeparationLines", CategoryDomainEnum.Conceptual },
+ { "OST_MEPSpaceTags", CategoryDomainEnum.Annotation },
+ { "OST_MEPSystemZone", CategoryDomainEnum.Conceptual },
+ { "OST_MEPSystemZoneBoundary", CategoryDomainEnum.Conceptual },
+ { "OST_MEPSystemZoneInteriorFill", CategoryDomainEnum.Conceptual },
+ { "OST_MEPSystemZoneInteriorFillVisibility", CategoryDomainEnum.Conceptual },
+ { "OST_MEPSystemZoneReferenceLines", CategoryDomainEnum.Conceptual },
+ { "OST_MEPSystemZoneReferenceLinesVisibility", CategoryDomainEnum.Conceptual },
+ { "OST_MEPSystemZoneTags", CategoryDomainEnum.Annotation },
+ { "OST_ModelGroupTags", CategoryDomainEnum.Annotation },
+ { "OST_ModelText", CategoryDomainEnum.Physical },
+ { "OST_MultiCategoryTags", CategoryDomainEnum.Annotation },
+ { "OST_MultiLeaderTag", CategoryDomainEnum.Annotation },
+ { "OST_MultiReferenceAnnotations", CategoryDomainEnum.Conceptual },
+ { "OST_MultistoryStairs", CategoryDomainEnum.Physical },
+ { "OST_MultiSurface", CategoryDomainEnum.Conceptual },
+ { "OST_NodeAnalyticalTags", CategoryDomainEnum.Annotation },
+ { "OST_NumberingSchemas", CategoryDomainEnum.Conceptual },
+ { "OST_NurseCallDevices", CategoryDomainEnum.Physical },
+ { "OST_NurseCallDeviceTags", CategoryDomainEnum.Annotation },
+ { "OST_OverheadLines", CategoryDomainEnum.Conceptual },
+ { "OST_PadTags", CategoryDomainEnum.Annotation },
+ { "OST_PanelScheduleGraphics", CategoryDomainEnum.Conceptual },
+ { "OST_ParamElemElectricalLoadClassification", CategoryDomainEnum.Conceptual },
+ { "OST_Parking", CategoryDomainEnum.Physical },
+ { "OST_ParkingHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_ParkingTags", CategoryDomainEnum.Annotation },
+ { "OST_PartHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_Parts", CategoryDomainEnum.Conceptual },
+ { "OST_PartTags", CategoryDomainEnum.Annotation },
+ { "OST_PathOfTravelLines", CategoryDomainEnum.Conceptual },
+ { "OST_PathOfTravelTags", CategoryDomainEnum.Annotation },
+ { "OST_PathRein", CategoryDomainEnum.Conceptual },
+ { "OST_PathReinBoundary", CategoryDomainEnum.Conceptual },
+ { "OST_PathReinSpanSymbol", CategoryDomainEnum.Symbol },
+ { "OST_PathReinTags", CategoryDomainEnum.Annotation },
+ { "OST_Phases", CategoryDomainEnum.Conceptual },
+ { "OST_PierCaps", CategoryDomainEnum.Physical },
+ { "OST_PierCapTags", CategoryDomainEnum.Annotation },
+ { "OST_PierColumns", CategoryDomainEnum.Physical },
+ { "OST_PierColumnTags", CategoryDomainEnum.Annotation },
+ { "OST_PierPiles", CategoryDomainEnum.Physical },
+ { "OST_PierPileTags", CategoryDomainEnum.Annotation },
+ { "OST_PierWalls", CategoryDomainEnum.Physical },
+ { "OST_PierWallTags", CategoryDomainEnum.Annotation },
+ { "OST_PipeAccessory", CategoryDomainEnum.Physical },
+ { "OST_PipeAccessoryTags", CategoryDomainEnum.Annotation },
+ { "OST_PipeAnalyticalSegments", CategoryDomainEnum.Conceptual },
+ { "OST_PipeAnalyticalSegmentTags", CategoryDomainEnum.Annotation },
+ { "OST_PipeColorFillLegends", CategoryDomainEnum.Conceptual },
+ { "OST_PipeColorFills", CategoryDomainEnum.Conceptual },
+ { "OST_PipeConnections", CategoryDomainEnum.Conceptual },
+ { "OST_PipeCurves", CategoryDomainEnum.Physical },
+ { "OST_PipeCurvesCenterLine", CategoryDomainEnum.Conceptual },
+ { "OST_PipeCurvesContour", CategoryDomainEnum.Conceptual },
+ { "OST_PipeCurvesDrop", CategoryDomainEnum.Physical },
+ { "OST_PipeCurvesInsulation", CategoryDomainEnum.Physical },
+ { "OST_PipeCurvesRiseDrop", CategoryDomainEnum.Physical },
+ { "OST_PipeFitting", CategoryDomainEnum.Physical },
+ { "OST_PipeFittingCenterLine", CategoryDomainEnum.Conceptual },
+ { "OST_PipeFittingInsulation", CategoryDomainEnum.Physical },
+ { "OST_PipeFittingTags", CategoryDomainEnum.Annotation },
+ { "OST_PipeHydronicSeparationSymbols", CategoryDomainEnum.Symbol },
+ { "OST_PipeInsulations", CategoryDomainEnum.Physical },
+ { "OST_PipeInsulationsTags", CategoryDomainEnum.Annotation },
+ { "OST_PipeMaterials", CategoryDomainEnum.Conceptual },
+ { "OST_PipeSchedules", CategoryDomainEnum.Conceptual },
+ { "OST_PipeSegments", CategoryDomainEnum.Physical },
+ { "OST_PipeTags", CategoryDomainEnum.Annotation },
+ { "OST_PipingSystem", CategoryDomainEnum.System },
+ { "OST_PipingSystem_Reference", CategoryDomainEnum.Conceptual },
+ { "OST_PipingSystem_Reference_Visibility", CategoryDomainEnum.Conceptual },
+ { "OST_PlaceHolderDucts", CategoryDomainEnum.Conceptual },
+ { "OST_PlaceHolderPipes", CategoryDomainEnum.Conceptual },
+ { "OST_PlanRegion", CategoryDomainEnum.Conceptual },
+ { "OST_Planting", CategoryDomainEnum.Physical },
+ { "OST_PlantingHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_PlantingTags", CategoryDomainEnum.Annotation },
+ { "OST_PlumbingEquipment", CategoryDomainEnum.Physical },
+ { "OST_PlumbingEquipmentHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_PlumbingEquipmentTags", CategoryDomainEnum.Annotation },
+ { "OST_PlumbingFixtures", CategoryDomainEnum.Physical },
+ { "OST_PlumbingFixturesHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_PlumbingFixtureTags", CategoryDomainEnum.Annotation },
+ { "OST_PointClouds", CategoryDomainEnum.Link },
+ { "OST_PointLoads", CategoryDomainEnum.Conceptual },
+ { "OST_PointLoadTags", CategoryDomainEnum.Annotation },
+ { "OST_PreviewLegendComponents", CategoryDomainEnum.Conceptual },
+ { "OST_ProfileFamilies", CategoryDomainEnum.Conceptual },
+ { "OST_ProjectBasePoint", CategoryDomainEnum.Conceptual },
+ { "OST_ProjectInformation", CategoryDomainEnum.Conceptual },
+ { "OST_Property", CategoryDomainEnum.Physical },
+ { "OST_PropertySet", CategoryDomainEnum.Conceptual },
+ { "OST_Purlin", CategoryDomainEnum.Conceptual },
+ { "OST_RailingBalusterRail", CategoryDomainEnum.Physical },
+ { "OST_RailingBalusterRailCut", CategoryDomainEnum.Conceptual },
+ { "OST_RailingHandRail", CategoryDomainEnum.Physical },
+ { "OST_RailingHandRailAboveCut", CategoryDomainEnum.Conceptual },
+ { "OST_RailingRailPathExtensionLines", CategoryDomainEnum.Conceptual },
+ { "OST_RailingRailPathLines", CategoryDomainEnum.Conceptual },
+ { "OST_Railings", CategoryDomainEnum.Physical },
+ { "OST_RailingSupport", CategoryDomainEnum.Physical },
+ { "OST_RailingSystem", CategoryDomainEnum.Conceptual },
+ { "OST_RailingSystemBaluster", CategoryDomainEnum.Physical },
+ { "OST_RailingSystemHandRail", CategoryDomainEnum.Physical },
+ { "OST_RailingSystemHandRailBracket", CategoryDomainEnum.Physical },
+ { "OST_RailingSystemHardware", CategoryDomainEnum.Physical },
+ { "OST_RailingSystemPanel", CategoryDomainEnum.Physical },
+ { "OST_RailingSystemPost", CategoryDomainEnum.Physical },
+ { "OST_RailingSystemRail", CategoryDomainEnum.Physical },
+ { "OST_RailingSystemSegment", CategoryDomainEnum.Physical },
+ { "OST_RailingSystemTags", CategoryDomainEnum.Annotation },
+ { "OST_RailingSystemTermination", CategoryDomainEnum.Physical },
+ { "OST_RailingSystemTopRail", CategoryDomainEnum.Physical },
+ { "OST_RailingSystemTransition", CategoryDomainEnum.Physical },
+ { "OST_RailingTermination", CategoryDomainEnum.Physical },
+ { "OST_RailingTopRail", CategoryDomainEnum.Physical },
+ { "OST_RailingTopRailAboveCut", CategoryDomainEnum.Conceptual },
+ { "OST_Ramps", CategoryDomainEnum.Physical },
+ { "OST_RampsAboveCut", CategoryDomainEnum.Annotation },
+ { "OST_RampsDownArrow", CategoryDomainEnum.Symbol },
+ { "OST_RampsDownText", CategoryDomainEnum.Symbol },
+ { "OST_RampsHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_RampsIncomplete", CategoryDomainEnum.Conceptual },
+ { "OST_RampsStringer", CategoryDomainEnum.Physical },
+ { "OST_RampsStringerAboveCut", CategoryDomainEnum.Symbol },
+ { "OST_RampsUpArrow", CategoryDomainEnum.Symbol },
+ { "OST_RampsUpText", CategoryDomainEnum.Symbol },
+ { "OST_RampTags", CategoryDomainEnum.Annotation },
+ { "OST_RasterImages", CategoryDomainEnum.Conceptual },
+ { "OST_Rebar", CategoryDomainEnum.Physical },
+ { "OST_RebarBendingDetails", CategoryDomainEnum.Annotation },
+ { "OST_RebarCover", CategoryDomainEnum.Conceptual },
+ { "OST_RebarHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_RebarLines", CategoryDomainEnum.Conceptual },
+ { "OST_RebarSetToggle", CategoryDomainEnum.Conceptual },
+ { "OST_RebarShape", CategoryDomainEnum.Conceptual },
+ { "OST_RebarSketchLines", CategoryDomainEnum.Conceptual },
+ { "OST_RebarSpliceLines", CategoryDomainEnum.Conceptual },
+ { "OST_RebarTags", CategoryDomainEnum.Annotation },
+ { "OST_ReferenceLines", CategoryDomainEnum.Conceptual },
+ { "OST_ReferencePoints", CategoryDomainEnum.Conceptual },
+ { "OST_ReferencePoints_HiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_ReferencePoints_Lines", CategoryDomainEnum.Conceptual },
+ { "OST_ReferencePoints_Planes", CategoryDomainEnum.Conceptual },
+ { "OST_ReferencePoints_Points", CategoryDomainEnum.Conceptual },
+ { "OST_ReferenceViewer", CategoryDomainEnum.Conceptual },
+ { "OST_ReferenceViewerSymbol", CategoryDomainEnum.Symbol },
+ { "OST_RemovedGridSeg", CategoryDomainEnum.Conceptual },
+ { "OST_RenderRegions", CategoryDomainEnum.Conceptual },
+ { "OST_RepeatingDetailLines", CategoryDomainEnum.Conceptual },
+ { "OST_Reveals", CategoryDomainEnum.Physical },
+ { "OST_RevisionClouds", CategoryDomainEnum.Conceptual },
+ { "OST_RevisionCloudTags", CategoryDomainEnum.Annotation },
+ { "OST_RevisionNumberingSequences", CategoryDomainEnum.Conceptual },
+ { "OST_Revisions", CategoryDomainEnum.Conceptual },
+ { "OST_RigidLinksAnalytical", CategoryDomainEnum.Conceptual },
+ { "OST_RiseDropSymbols", CategoryDomainEnum.Symbol },
+ { "OST_Roads", CategoryDomainEnum.Physical },
+ { "OST_RoadsHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_RoadTags", CategoryDomainEnum.Annotation },
+ { "OST_RoofOpening", CategoryDomainEnum.Conceptual },
+ { "OST_Roofs", CategoryDomainEnum.Physical },
+ { "OST_RoofsCut", CategoryDomainEnum.Conceptual },
+ { "OST_RoofsCutPattern", CategoryDomainEnum.Conceptual },
+ { "OST_RoofsDefault", CategoryDomainEnum.Conceptual },
+ { "OST_RoofsFinish1", CategoryDomainEnum.Conceptual },
+ { "OST_RoofsFinish2", CategoryDomainEnum.Conceptual },
+ { "OST_RoofsHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_RoofsInsulation", CategoryDomainEnum.Conceptual },
+ { "OST_RoofsInteriorEdges", CategoryDomainEnum.Conceptual },
+ { "OST_RoofsMembrane", CategoryDomainEnum.Conceptual },
+ { "OST_RoofSoffit", CategoryDomainEnum.Physical },
+ { "OST_RoofSoffitTags", CategoryDomainEnum.Annotation },
+ { "OST_RoofsProjection", CategoryDomainEnum.Conceptual },
+ { "OST_RoofsStructure", CategoryDomainEnum.Conceptual },
+ { "OST_RoofsSubstrate", CategoryDomainEnum.Conceptual },
+ { "OST_RoofsSurfacePattern", CategoryDomainEnum.Conceptual },
+ { "OST_RoofTags", CategoryDomainEnum.Annotation },
+ { "OST_RoomColorFill", CategoryDomainEnum.Conceptual },
+ { "OST_RoomInteriorFill", CategoryDomainEnum.Conceptual },
+ { "OST_RoomInteriorFillVisibility", CategoryDomainEnum.Conceptual },
+ { "OST_RoomPolylines", CategoryDomainEnum.Conceptual },
+ { "OST_RoomReference", CategoryDomainEnum.Conceptual },
+ { "OST_RoomReferenceVisibility", CategoryDomainEnum.Conceptual },
+ { "OST_Rooms", CategoryDomainEnum.Rooms },
+ { "OST_RoomSeparationLines", CategoryDomainEnum.Conceptual },
+ { "OST_RoomTags", CategoryDomainEnum.Annotation },
+ { "OST_RouteCurve", CategoryDomainEnum.Conceptual },
+ { "OST_RouteCurveBranch", CategoryDomainEnum.Conceptual },
+ { "OST_RouteCurveMain", CategoryDomainEnum.Conceptual },
+ { "OST_RoutingPreferences", CategoryDomainEnum.Conceptual },
+ { "OST_RvtLinks", CategoryDomainEnum.Link },
+ { "OST_RvtLinksTags", CategoryDomainEnum.Annotation },
+ { "OST_ScheduleGraphics", CategoryDomainEnum.Conceptual },
+ { "OST_Schedules", CategoryDomainEnum.Conceptual },
+ { "OST_ScheduleViewParamGroup", CategoryDomainEnum.Conceptual },
+ { "OST_SecondaryTopographyContours", CategoryDomainEnum.Conceptual },
+ { "OST_SectionBox", CategoryDomainEnum.Conceptual },
+ { "OST_SectionHeadMediumLines", CategoryDomainEnum.Conceptual },
+ { "OST_SectionHeads", CategoryDomainEnum.Conceptual },
+ { "OST_SectionHeadThinLines", CategoryDomainEnum.Conceptual },
+ { "OST_SectionHeadWideLines", CategoryDomainEnum.Conceptual },
+ { "OST_SectionLine", CategoryDomainEnum.Conceptual },
+ { "OST_Sections", CategoryDomainEnum.Conceptual },
+ { "OST_SecurityDevices", CategoryDomainEnum.Physical },
+ { "OST_SecurityDeviceTags", CategoryDomainEnum.Annotation },
+ { "OST_Sewer", CategoryDomainEnum.Physical },
+ { "OST_ShaftOpening", CategoryDomainEnum.Conceptual },
+ { "OST_ShaftOpeningHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_SharedBasePoint", CategoryDomainEnum.Conceptual },
+ { "OST_SheetCollections", CategoryDomainEnum.Conceptual },
+ { "OST_Sheets", CategoryDomainEnum.Conceptual },
+ { "OST_Signage", CategoryDomainEnum.Physical },
+ { "OST_SignageHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_SignageTags", CategoryDomainEnum.Annotation },
+ { "OST_Site", CategoryDomainEnum.Physical },
+ { "OST_SiteHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_SitePoint", CategoryDomainEnum.Conceptual },
+ { "OST_SitePointBoundary", CategoryDomainEnum.Conceptual },
+ { "OST_SiteProperty", CategoryDomainEnum.Conceptual },
+ { "OST_SitePropertyLineSegment", CategoryDomainEnum.Conceptual },
+ { "OST_SitePropertyLineSegmentTags", CategoryDomainEnum.Annotation },
+ { "OST_SitePropertyTags", CategoryDomainEnum.Annotation },
+ { "OST_SiteRegion", CategoryDomainEnum.Conceptual },
+ { "OST_SiteSurface", CategoryDomainEnum.Conceptual },
+ { "OST_SiteTags", CategoryDomainEnum.Annotation },
+ { "OST_SketchLines", CategoryDomainEnum.Conceptual },
+ { "OST_SlabEdgeTags", CategoryDomainEnum.Annotation },
+ { "OST_SpanDirectionSymbol", CategoryDomainEnum.Symbol },
+ { "OST_SpecialityEquipment", CategoryDomainEnum.Physical },
+ { "OST_SpecialityEquipmentHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_SpecialityEquipmentTags", CategoryDomainEnum.Annotation },
+ { "OST_SplitterProfile", CategoryDomainEnum.Conceptual },
+ { "OST_SpotCoordinates", CategoryDomainEnum.Conceptual },
+ { "OST_SpotCoordinateSymbols", CategoryDomainEnum.Symbol },
+ { "OST_SpotElevations", CategoryDomainEnum.Conceptual },
+ { "OST_SpotElevSymbols", CategoryDomainEnum.Symbol },
+ { "OST_SpotSlopes", CategoryDomainEnum.Conceptual },
+ { "OST_SpotSlopesSymbols", CategoryDomainEnum.Symbol },
+ { "OST_Sprinklers", CategoryDomainEnum.Physical },
+ { "OST_SprinklerTags", CategoryDomainEnum.Annotation },
+ { "OST_StackedWalls", CategoryDomainEnum.Physical },
+ { "OST_Stairs", CategoryDomainEnum.Physical },
+ { "OST_StairsCutMarks", CategoryDomainEnum.Conceptual },
+ { "OST_StairsCutMarksAboveCut", CategoryDomainEnum.Conceptual },
+ { "OST_StairsDownArrows", CategoryDomainEnum.Symbol },
+ { "OST_StairsDownText", CategoryDomainEnum.Symbol },
+ { "OST_StairsHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_StairsLandings", CategoryDomainEnum.Physical },
+ { "OST_StairsLandingTags", CategoryDomainEnum.Annotation },
+ { "OST_StairsNosingLines", CategoryDomainEnum.Conceptual },
+ { "OST_StairsNosingLinesAboveCut", CategoryDomainEnum.Conceptual },
+ { "OST_StairsOutlines", CategoryDomainEnum.Conceptual },
+ { "OST_StairsOutlinesAboveCut", CategoryDomainEnum.Conceptual },
+ { "OST_StairsPaths", CategoryDomainEnum.Conceptual },
+ { "OST_StairsPathsAboveCut", CategoryDomainEnum.Conceptual },
+ { "OST_StairsRailing", CategoryDomainEnum.Physical },
+ { "OST_StairsRailingAboveCut", CategoryDomainEnum.Symbol },
+ { "OST_StairsRailingBaluster", CategoryDomainEnum.Physical },
+ { "OST_StairsRailingHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_StairsRailingRail", CategoryDomainEnum.Physical },
+ { "OST_StairsRailingTags", CategoryDomainEnum.Annotation },
+ { "OST_StairsRiserLines", CategoryDomainEnum.Conceptual },
+ { "OST_StairsRiserLinesAboveCut", CategoryDomainEnum.Conceptual },
+ { "OST_StairsRuns", CategoryDomainEnum.Physical },
+ { "OST_StairsRunTags", CategoryDomainEnum.Annotation },
+ { "OST_StairsSketchBoundaryLines", CategoryDomainEnum.Conceptual },
+ { "OST_StairsSketchLandingCenterLines", CategoryDomainEnum.Conceptual },
+ { "OST_StairsSketchPathLines", CategoryDomainEnum.Conceptual },
+ { "OST_StairsSketchRiserLines", CategoryDomainEnum.Conceptual },
+ { "OST_StairsSketchRunLines", CategoryDomainEnum.Conceptual },
+ { "OST_StairsStringerCarriage", CategoryDomainEnum.Physical },
+ { "OST_StairsSupports", CategoryDomainEnum.Physical },
+ { "OST_StairsSupportsAboveCut", CategoryDomainEnum.Symbol },
+ { "OST_StairsSupportTags", CategoryDomainEnum.Annotation },
+ { "OST_StairsTags", CategoryDomainEnum.Annotation },
+ { "OST_StairsTriserNumbers", CategoryDomainEnum.Conceptual },
+ { "OST_StairsTrisers", CategoryDomainEnum.Physical },
+ { "OST_StairsTriserTags", CategoryDomainEnum.Annotation },
+ { "OST_StairsUpArrows", CategoryDomainEnum.Symbol },
+ { "OST_StairsUpText", CategoryDomainEnum.Symbol },
+ { "OST_SteelElementStale", CategoryDomainEnum.Conceptual },
+ { "OST_StructConnectionAnchors", CategoryDomainEnum.Physical },
+ { "OST_StructConnectionAnchorTags", CategoryDomainEnum.Annotation },
+ { "OST_StructConnectionBolts", CategoryDomainEnum.Physical },
+ { "OST_StructConnectionBoltTags", CategoryDomainEnum.Annotation },
+ { "OST_StructConnectionFailed", CategoryDomainEnum.Conceptual },
+ { "OST_StructConnectionHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_StructConnectionHoles", CategoryDomainEnum.Conceptual },
+ { "OST_StructConnectionHoleTags", CategoryDomainEnum.Annotation },
+ { "OST_StructConnectionModifiers", CategoryDomainEnum.Conceptual },
+ { "OST_StructConnectionNobleWarning", CategoryDomainEnum.Conceptual },
+ { "OST_StructConnectionOthers", CategoryDomainEnum.Physical },
+ { "OST_StructConnectionPlates", CategoryDomainEnum.Physical },
+ { "OST_StructConnectionPlateTags", CategoryDomainEnum.Annotation },
+ { "OST_StructConnectionProfiles", CategoryDomainEnum.Conceptual },
+ { "OST_StructConnectionProfilesTags", CategoryDomainEnum.Annotation },
+ { "OST_StructConnectionReference", CategoryDomainEnum.Conceptual },
+ { "OST_StructConnections", CategoryDomainEnum.Physical },
+ { "OST_StructConnectionShearStuds", CategoryDomainEnum.Physical },
+ { "OST_StructConnectionShearStudTags", CategoryDomainEnum.Annotation },
+ { "OST_StructConnectionStale", CategoryDomainEnum.Conceptual },
+ { "OST_StructConnectionSymbol", CategoryDomainEnum.Symbol },
+ { "OST_StructConnectionSymbols", CategoryDomainEnum.Symbol },
+ { "OST_StructConnectionTags", CategoryDomainEnum.Annotation },
+ { "OST_StructConnectionWelds", CategoryDomainEnum.Physical },
+ { "OST_StructConnectionWeldTags", CategoryDomainEnum.Annotation },
+ { "OST_StructLocationLineControl", CategoryDomainEnum.Conceptual },
+ { "OST_StructSubConnections", CategoryDomainEnum.Physical },
+ { "OST_StructuralAnnotations", CategoryDomainEnum.Annotation },
+ { "OST_StructuralBracePlanReps", CategoryDomainEnum.Annotation },
+ { "OST_StructuralColumnLocationLine", CategoryDomainEnum.Conceptual },
+ { "OST_StructuralColumns", CategoryDomainEnum.Physical },
+ { "OST_StructuralColumnStickSymbols", CategoryDomainEnum.Symbol },
+ { "OST_StructuralColumnTags", CategoryDomainEnum.Annotation },
+ { "OST_StructuralFoundation", CategoryDomainEnum.Physical },
+ { "OST_StructuralFoundationTags", CategoryDomainEnum.Annotation },
+ { "OST_StructuralFraming", CategoryDomainEnum.Physical },
+ { "OST_StructuralFramingLocationLine", CategoryDomainEnum.Conceptual },
+ { "OST_StructuralFramingOpening", CategoryDomainEnum.Conceptual },
+ { "OST_StructuralFramingOther", CategoryDomainEnum.Conceptual },
+ { "OST_StructuralFramingSystem", CategoryDomainEnum.Conceptual },
+ { "OST_StructuralFramingTags", CategoryDomainEnum.Annotation },
+ { "OST_StructuralStiffener", CategoryDomainEnum.Physical },
+ { "OST_StructuralStiffenerHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_StructuralStiffenerTags", CategoryDomainEnum.Annotation },
+ { "OST_StructuralTendonHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_StructuralTendons", CategoryDomainEnum.Physical },
+ { "OST_StructuralTendonTags", CategoryDomainEnum.Annotation },
+ { "OST_StructuralTruss", CategoryDomainEnum.Physical },
+ { "OST_StructuralTrussHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_StructuralTrussStickSymbols", CategoryDomainEnum.Symbol },
+ { "OST_StructWeldLines", CategoryDomainEnum.Conceptual },
+ { "OST_Sun", CategoryDomainEnum.Conceptual },
+ { "OST_SunPath1", CategoryDomainEnum.Conceptual },
+ { "OST_SunPath2", CategoryDomainEnum.Conceptual },
+ { "OST_SunriseText", CategoryDomainEnum.Conceptual },
+ { "OST_SunsetText", CategoryDomainEnum.Conceptual },
+ { "OST_SunStudy", CategoryDomainEnum.Conceptual },
+ { "OST_SunSurface", CategoryDomainEnum.Conceptual },
+ { "OST_SWallRectOpening", CategoryDomainEnum.Conceptual },
+ { "OST_SwitchboardScheduleTemplates", CategoryDomainEnum.Conceptual },
+ { "OST_SwitchSystem", CategoryDomainEnum.System },
+ { "OST_Tags", CategoryDomainEnum.Annotation },
+ { "OST_TelephoneDevices", CategoryDomainEnum.Physical },
+ { "OST_TelephoneDeviceTags", CategoryDomainEnum.Annotation },
+ { "OST_TemporaryStructure", CategoryDomainEnum.Physical },
+ { "OST_TemporaryStructureHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_TemporaryStructureTags", CategoryDomainEnum.Annotation },
+ { "OST_TextNotes", CategoryDomainEnum.Conceptual },
+ { "OST_TilePatterns", CategoryDomainEnum.Conceptual },
+ { "OST_TitleBlockMediumLines", CategoryDomainEnum.Conceptual },
+ { "OST_TitleBlocks", CategoryDomainEnum.Conceptual },
+ { "OST_TitleBlockThinLines", CategoryDomainEnum.Conceptual },
+ { "OST_TitleBlockWideLines", CategoryDomainEnum.Conceptual },
+ { "OST_Topography", CategoryDomainEnum.Topography },
+ { "OST_TopographyContours", CategoryDomainEnum.Conceptual },
+ { "OST_TopographyHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_TopographyLink", CategoryDomainEnum.Link },
+ { "OST_TopographySurface", CategoryDomainEnum.Conceptual },
+ { "OST_Toposolid", CategoryDomainEnum.Physical },
+ { "OST_ToposolidContours", CategoryDomainEnum.Conceptual },
+ { "OST_ToposolidCutPattern", CategoryDomainEnum.Conceptual },
+ { "OST_ToposolidDefault", CategoryDomainEnum.Conceptual },
+ { "OST_ToposolidFinish1", CategoryDomainEnum.Conceptual },
+ { "OST_ToposolidFinish2", CategoryDomainEnum.Conceptual },
+ { "OST_ToposolidFoldingLines", CategoryDomainEnum.Conceptual },
+ { "OST_ToposolidHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_ToposolidInsulation", CategoryDomainEnum.Conceptual },
+ { "OST_ToposolidLink", CategoryDomainEnum.Link },
+ { "OST_ToposolidLinkTags", CategoryDomainEnum.Annotation },
+ { "OST_ToposolidMembrane", CategoryDomainEnum.Conceptual },
+ { "OST_ToposolidOpening", CategoryDomainEnum.Conceptual },
+ { "OST_ToposolidSecondaryContours", CategoryDomainEnum.Conceptual },
+ { "OST_ToposolidSplitLines", CategoryDomainEnum.Conceptual },
+ { "OST_ToposolidStructure", CategoryDomainEnum.Conceptual },
+ { "OST_ToposolidSubstrate", CategoryDomainEnum.Conceptual },
+ { "OST_ToposolidSurfacePattern", CategoryDomainEnum.Conceptual },
+ { "OST_ToposolidTags", CategoryDomainEnum.Annotation },
+ { "OST_TopRailTags", CategoryDomainEnum.Annotation },
+ { "OST_Truss", CategoryDomainEnum.Physical },
+ { "OST_TrussBottomChordCurve", CategoryDomainEnum.Conceptual },
+ { "OST_TrussChord", CategoryDomainEnum.Physical },
+ { "OST_TrussDiagWebCurve", CategoryDomainEnum.Conceptual },
+ { "OST_TrussDummy", CategoryDomainEnum.Conceptual },
+ { "OST_TrussTags", CategoryDomainEnum.Annotation },
+ { "OST_TrussTopChordCurve", CategoryDomainEnum.Conceptual },
+ { "OST_TrussVertWebCurve", CategoryDomainEnum.Conceptual },
+ { "OST_TrussWeb", CategoryDomainEnum.Physical },
+ { "OST_VerticalBracing", CategoryDomainEnum.Conceptual },
+ { "OST_VerticalCirculation", CategoryDomainEnum.Physical },
+ { "OST_VerticalCirculationHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_VerticalCirculationTags", CategoryDomainEnum.Annotation },
+ { "OST_VibrationDampers", CategoryDomainEnum.Physical },
+ { "OST_VibrationDamperTags", CategoryDomainEnum.Annotation },
+ { "OST_VibrationIsolators", CategoryDomainEnum.Physical },
+ { "OST_VibrationIsolatorTags", CategoryDomainEnum.Annotation },
+ { "OST_VibrationManagement", CategoryDomainEnum.Conceptual },
+ { "OST_VibrationManagementHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_VibrationManagementTags", CategoryDomainEnum.Annotation },
+ { "OST_Viewers", CategoryDomainEnum.Conceptual },
+ { "OST_ViewportLabel", CategoryDomainEnum.Conceptual },
+ { "OST_Viewports", CategoryDomainEnum.Conceptual },
+ { "OST_Views", CategoryDomainEnum.Conceptual },
+ { "OST_VolumeOfInterest", CategoryDomainEnum.Conceptual },
+ { "OST_WallAnalytical", CategoryDomainEnum.Conceptual },
+ { "OST_WallAnalyticalTags", CategoryDomainEnum.Annotation },
+ { "OST_WallCoreLayer", CategoryDomainEnum.Conceptual },
+ { "OST_WallFoundationAnalytical", CategoryDomainEnum.Conceptual },
+ { "OST_WallFoundationAnalyticalTags", CategoryDomainEnum.Annotation },
+ { "OST_WallLocalCoordSys", CategoryDomainEnum.Conceptual },
+ { "OST_WallNonCoreLayer", CategoryDomainEnum.Conceptual },
+ { "OST_WallRefPlanes", CategoryDomainEnum.Conceptual },
+ { "OST_Walls", CategoryDomainEnum.Physical },
+ { "OST_WallsAnalyticalGeometry", CategoryDomainEnum.Conceptual },
+ { "OST_WallsCutOutlines", CategoryDomainEnum.Conceptual },
+ { "OST_WallsCutPattern", CategoryDomainEnum.Conceptual },
+ { "OST_WallsDefault", CategoryDomainEnum.Conceptual },
+ { "OST_WallsFinish1", CategoryDomainEnum.Conceptual },
+ { "OST_WallsFinish2", CategoryDomainEnum.Conceptual },
+ { "OST_WallsInsulation", CategoryDomainEnum.Conceptual },
+ { "OST_WallsMembrane", CategoryDomainEnum.Conceptual },
+ { "OST_WallsProjectionOutlines", CategoryDomainEnum.Conceptual },
+ { "OST_WallsStructure", CategoryDomainEnum.Conceptual },
+ { "OST_WallsSubstrate", CategoryDomainEnum.Conceptual },
+ { "OST_WallsSurfacePattern", CategoryDomainEnum.Conceptual },
+ { "OST_WallSweepTags", CategoryDomainEnum.Annotation },
+ { "OST_WallTags", CategoryDomainEnum.Annotation },
+ { "OST_WeakDims", CategoryDomainEnum.Conceptual },
+ { "OST_Windows", CategoryDomainEnum.Physical },
+ { "OST_WindowsFrameMullionCut", CategoryDomainEnum.Conceptual },
+ { "OST_WindowsFrameMullionProjection", CategoryDomainEnum.Conceptual },
+ { "OST_WindowsGlassCut", CategoryDomainEnum.Conceptual },
+ { "OST_WindowsGlassProjection", CategoryDomainEnum.Conceptual },
+ { "OST_WindowsHiddenLines", CategoryDomainEnum.Conceptual },
+ { "OST_WindowsOpeningCut", CategoryDomainEnum.Conceptual },
+ { "OST_WindowsOpeningProjection", CategoryDomainEnum.Conceptual },
+ { "OST_WindowsSillHeadCut", CategoryDomainEnum.Conceptual },
+ { "OST_WindowsSillHeadProjection", CategoryDomainEnum.Conceptual },
+ { "OST_WindowTags", CategoryDomainEnum.Annotation },
+ { "OST_Wire", CategoryDomainEnum.Physical },
+ { "OST_WireHomeRunArrows", CategoryDomainEnum.Conceptual },
+ { "OST_WireInsulations", CategoryDomainEnum.Conceptual },
+ { "OST_WireMaterials", CategoryDomainEnum.Conceptual },
+ { "OST_WireTags", CategoryDomainEnum.Annotation },
+ { "OST_WireTemperatureRatings", CategoryDomainEnum.Conceptual },
+ { "OST_WireTickMarks", CategoryDomainEnum.Conceptual },
+ { "OST_XRayConstrainedProfileEdge", CategoryDomainEnum.Conceptual },
+ { "OST_XRayImplicitPathCurve", CategoryDomainEnum.Conceptual },
+ { "OST_XRayPathCurve", CategoryDomainEnum.Conceptual },
+ { "OST_XRayPathPoint", CategoryDomainEnum.Conceptual },
+ { "OST_XRayProfileEdge", CategoryDomainEnum.Conceptual },
+ { "OST_XRaySideEdge", CategoryDomainEnum.Conceptual },
+ { "OST_ZoneEquipment", CategoryDomainEnum.Conceptual },
+ { "OST_ZoneSchemes", CategoryDomainEnum.Conceptual },
+ { "OST_ZoneTags", CategoryDomainEnum.Annotation },
+ { "OST_DataExchanges", CategoryDomainEnum.Conceptual },
+ { "OST_FloorLayers", CategoryDomainEnum.Physical },
+ { "OST_WallLayers", CategoryDomainEnum.Physical },
+ { "OST_ElectricalConnectorTags", CategoryDomainEnum.Annotation },
+ { "OST_ElectricalConnector", CategoryDomainEnum.Conceptual },
+ { "OST_ElectricalLoadCase", CategoryDomainEnum.Conceptual },
+ { "OST_ZoningEnvelope", CategoryDomainEnum.Conceptual }
+ };
+ }
+ }
+}
diff --git a/src/cs/vim/Vim.Format/ElementDomain.cs b/src/cs/vim/Vim.Format/ElementDomain.cs
new file mode 100644
index 0000000..17ab510
--- /dev/null
+++ b/src/cs/vim/Vim.Format/ElementDomain.cs
@@ -0,0 +1,122 @@
+using System.Collections.Generic;
+using System.Diagnostics;
+using Vim.Format.ObjectModel;
+
+namespace Vim.Format
+{
+ public enum ElementDomainEnum
+ {
+ Conceptual = 0,
+ PhysicalVisible = 10,
+ PhysicalHidden = 11,
+ PhysicalNotInstanced = 12,
+ Topography = 20,
+ Group = 30,
+ Rooms = 40,
+ System = 50,
+ LinkVisible = 60,
+ LinkHidden = 61,
+ Annotation = 70,
+ Symbol = 80
+ }
+
+ public static class ElementDomainEnumExtensions
+ {
+ public static string ToDisplayString(this ElementDomainEnum e)
+ {
+ switch (e)
+ {
+ case ElementDomainEnum.PhysicalVisible: return "Physical-Visible";
+ case ElementDomainEnum.PhysicalHidden: return "Physical-Hidden";
+ case ElementDomainEnum.PhysicalNotInstanced: return "Physical-NotInstanced";
+ case ElementDomainEnum.LinkVisible: return "Link-Visible";
+ case ElementDomainEnum.LinkHidden: return "Link-Hidden";
+ default: return e.ToString("G");
+ }
+ }
+ }
+
+ ///
+ /// The ElementDomain is a labeling of each element which facilitates the filtering of large lists of elements.
+ ///
+ public static class ElementDomain
+ {
+ ///
+ /// Returns an array aligned 1:1 with the element table to identify the ElementDomain.
+ ///
+ public static ElementDomainEnum[] GetElementDomains(
+ ElementTable elementTable,
+ CategoryTable categoryTable,
+ ElementKind[] elementKinds,
+ bool[] elementIsVisibleIn3dView)
+ {
+ var categoryDomains = CategoryDomain.GetCategoryDomainMap();
+
+ var elementDomains = new ElementDomainEnum[elementTable.RowCount];
+
+ for (var i = 0; i < elementDomains.Length; ++i)
+ elementDomains[i] = GetElementDomain(i, elementTable, categoryTable, elementKinds, elementIsVisibleIn3dView, categoryDomains);
+
+ return elementDomains;
+ }
+
+ public static ElementDomainEnum GetElementDomain(
+ int elementIndex,
+ ElementTable elementTable,
+ CategoryTable categoryTable,
+ ElementKind[] elementKinds,
+ bool[] elementIsVisibleIn3dView,
+ Dictionary categoryDomains)
+ {
+ var elementKind = elementKinds[elementIndex];
+
+ // Family and FamilyType elements are relegated to the conceptual element domain.
+ if (elementKind == ElementKind.Family || elementKind == ElementKind.FamilyType)
+ return ElementDomainEnum.Conceptual;
+
+ // Elements which are neither Family or FamilyType are labeled based on the category domain.
+ var categoryIndex = elementTable.GetCategoryIndex(elementIndex);
+ var builtInCategory = categoryTable.GetBuiltInCategory(categoryIndex);
+
+ var hasCategoryDomain = categoryDomains.TryGetValue(builtInCategory, out var categoryDomain);
+ if (!hasCategoryDomain)
+ {
+ // Special case: if the VIM file was sourced from IFC (or some source other than Revit),
+ // it probably won't have category domain. In this case, we use the ElementKind.FamilyInstance
+ // to determine whether the element domain is actually conceptual.
+ return elementKind is ElementKind.FamilyInstance
+ ? GetPhysicalDomain(elementIndex, elementIsVisibleIn3dView)
+ : ElementDomainEnum.Conceptual;
+ }
+
+ switch (categoryDomain)
+ {
+ case CategoryDomainEnum.Conceptual: return ElementDomainEnum.Conceptual;
+ case CategoryDomainEnum.Physical:
+ return elementKind is ElementKind.FamilyInstance
+ ? GetPhysicalDomain(elementIndex, elementIsVisibleIn3dView)
+ : ElementDomainEnum.PhysicalNotInstanced;
+ case CategoryDomainEnum.Topography: return ElementDomainEnum.Topography;
+ case CategoryDomainEnum.Group: return ElementDomainEnum.Group;
+ case CategoryDomainEnum.Rooms: return ElementDomainEnum.Rooms;
+ case CategoryDomainEnum.System: return ElementDomainEnum.System;
+ case CategoryDomainEnum.Link: return GetLinkDomain(elementIndex, elementIsVisibleIn3dView);
+ case CategoryDomainEnum.Annotation: return ElementDomainEnum.Annotation;
+ case CategoryDomainEnum.Symbol: return ElementDomainEnum.Symbol;
+ default:
+ Debug.Fail($"Unknown CategoryDomainEnum {categoryDomain:G}");
+ return ElementDomainEnum.Conceptual;
+ }
+ }
+
+ public static ElementDomainEnum GetPhysicalDomain(int elementIndex, bool[] elementIsVisibleIn3dView)
+ => elementIsVisibleIn3dView[elementIndex]
+ ? ElementDomainEnum.PhysicalVisible
+ : ElementDomainEnum.PhysicalHidden;
+
+ public static ElementDomainEnum GetLinkDomain(int elementIndex, bool[] elementIsVisibleIn3dView)
+ => elementIsVisibleIn3dView[elementIndex]
+ ? ElementDomainEnum.LinkVisible
+ : ElementDomainEnum.LinkHidden;
+ }
+}
diff --git a/src/cs/vim/Vim.Format/ElementParameterInfo/ElementMeasureInfo.cs b/src/cs/vim/Vim.Format/ElementParameterInfo/ElementMeasureInfo.cs
index 813f502..1721140 100644
--- a/src/cs/vim/Vim.Format/ElementParameterInfo/ElementMeasureInfo.cs
+++ b/src/cs/vim/Vim.Format/ElementParameterInfo/ElementMeasureInfo.cs
@@ -21,22 +21,31 @@ public int GetElementIndexOrNone()
=> Element.IndexOrDefault();
public double? Angle { get; set; }
+ public bool AngleIsRevitBuiltIn { get; set; }
public double? Slope { get; set; }
+ public bool SlopeIsRevitBuiltIn { get; set; }
public double? Length { get; set; }
+ public bool LengthIsRevitBuiltIn { get; set; }
public double? Width { get; set; }
+ public bool WidthIsRevitBuiltIn { get; set; }
public double? Height { get; set; }
+ public bool HeightIsRevitBuiltIn { get; set; }
public double? Area { get; set; }
+ public bool AreaIsRevitBuiltIn { get; set; }
public double? Volume { get; set; }
+ public bool VolumeIsRevitBuiltIn { get; set; }
public double? Depth { get; set; }
+ public bool DepthIsRevitBuiltIn { get; set; }
public double? Diameter { get; set; }
+ public bool DiameterIsRevitBuiltIn { get; set; }
///
/// Constructor
@@ -45,7 +54,7 @@ public ElementMeasureInfo(
Element element,
ElementTable elementTable,
ParameterTable parameterTable,
- MeasureType[] parameterMeasureInfos)
+ ParameterMeasureInfo[] parameterMeasureInfos)
{
Element = element;
@@ -68,44 +77,54 @@ public ElementMeasureInfo(
private void ReadParameters(
ParameterTable parameterTable,
- MeasureType[] parameterMeasureInfos,
+ ParameterMeasureInfo[] parameterMeasureInfos,
IReadOnlyList parameterIndices)
{
foreach (var parameterIndex in parameterIndices)
{
- var mt = parameterMeasureInfos[parameterIndex];
+ var pmi = parameterMeasureInfos[parameterIndex];
+ var measureType = pmi.MeasureType;
var (nativeValue, _) = Parameter.SplitValues(parameterTable.Column_Value[parameterIndex]);
var parsed = Parameter.ParseNativeValueAsDouble(nativeValue);
- switch (mt)
+ switch (measureType)
{
case MeasureType.Angle:
Angle = parsed;
+ AngleIsRevitBuiltIn = pmi.IsRevitBuiltIn;
break;
case MeasureType.Slope:
Slope = parsed;
+ SlopeIsRevitBuiltIn = pmi.IsRevitBuiltIn;
break;
case MeasureType.Length:
Length = parsed;
+ LengthIsRevitBuiltIn = pmi.IsRevitBuiltIn;
break;
case MeasureType.Width:
Width = parsed;
+ WidthIsRevitBuiltIn = pmi.IsRevitBuiltIn;
break;
case MeasureType.Height:
Height = parsed;
+ HeightIsRevitBuiltIn = pmi.IsRevitBuiltIn;
break;
case MeasureType.Area:
Area = parsed;
+ AreaIsRevitBuiltIn = pmi.IsRevitBuiltIn;
break;
case MeasureType.Volume:
Volume = parsed;
+ VolumeIsRevitBuiltIn = pmi.IsRevitBuiltIn;
break;
case MeasureType.Depth:
Depth = parsed;
+ DepthIsRevitBuiltIn = pmi.IsRevitBuiltIn;
break;
case MeasureType.Diameter:
Diameter = parsed;
+ DiameterIsRevitBuiltIn = pmi.IsRevitBuiltIn;
break;
case MeasureType.Unknown:
default:
diff --git a/src/cs/vim/Vim.Format/ElementParameterInfo/ElementParameterInfoService.cs b/src/cs/vim/Vim.Format/ElementParameterInfo/ElementParameterInfoService.cs
index b6f9a7e..8f8a45b 100644
--- a/src/cs/vim/Vim.Format/ElementParameterInfo/ElementParameterInfoService.cs
+++ b/src/cs/vim/Vim.Format/ElementParameterInfo/ElementParameterInfoService.cs
@@ -55,10 +55,10 @@ public class ElementParameterInfo
public FamilyTypeUniformatInfo[] FamilyTypeUniformatInfos { get; set; }
///
- /// An array of MeasureType values representing the measure types of each Parameter.
+ /// An array of ParameterMeasureInfos representing the measure types of each Parameter.
/// Items in this array are aligned to the Parameter table.
///
- public MeasureType[] ParameterMeasureTypes { get; set; }
+ public ParameterMeasureInfo[] ParameterMeasureInfos { get; set; }
}
public static class ElementParameterInfoService
@@ -136,9 +136,9 @@ public static ElementParameterInfo GetElementParameterInfos(
levelInfoMap,
levelInfoByBimDocumentIndex);
- var parameterMeasureTypes = CreateParameterMeasureTypes(parameterTable, descriptorTable);
+ var parameterMeasureInfos = CreateParameterMeasureInfos(parameterTable, descriptorTable);
- var elementMeasureInfos = CreateElementMeasureInfos(elementTable, parameterTable, parameterMeasureTypes);
+ var elementMeasureInfos = CreateElementMeasureInfos(elementTable, parameterTable, parameterMeasureInfos);
var elementOffsetInfos = CreateElementOffsetInfos(elementTable, parameterTable, elementIndexMaps);
@@ -154,7 +154,7 @@ public static ElementParameterInfo GetElementParameterInfos(
ElementLevelInfos = elementLevelInfos,
ElementMeasureInfos = elementMeasureInfos,
ElementOffsetInfos = elementOffsetInfos,
- ParameterMeasureTypes = parameterMeasureTypes,
+ ParameterMeasureInfos = parameterMeasureInfos,
ElementIfcInfos = elementIfcInfos,
FamilyOmniClassInfos = familyOmniClassInfos,
FamilyTypeUniformatInfos = familyTypeUniformatInfos,
@@ -259,7 +259,7 @@ private static ElementLevelInfo[] CreateElementLevelInfos(
.ToArray();
}
- public static MeasureType[] CreateParameterMeasureTypes(
+ public static ParameterMeasureInfo[] CreateParameterMeasureInfos(
ParameterTable parameterTable,
ParameterDescriptorTable parameterDescriptorTable)
=> parameterTable.Column_ParameterDescriptorIndex
@@ -268,17 +268,17 @@ public static MeasureType[] CreateParameterMeasureTypes(
{
var parameterDescriptorNameLowerInvariant = parameterDescriptorTable.GetName(pdi).ToLowerInvariant();
var parameterDescriptorGuid = parameterDescriptorTable.GetGuid(pdi);
- return ParameterMeasureInfo.ParseMeasureType(parameterDescriptorNameLowerInvariant, parameterDescriptorGuid);
+ return ParameterMeasureInfo.ParseMeasureInfo(parameterDescriptorNameLowerInvariant, parameterDescriptorGuid);
})
.ToArray();
public static ElementMeasureInfo[] CreateElementMeasureInfos(
ElementTable elementTable,
ParameterTable parameterTable,
- MeasureType[] parameterMeasureTypes)
+ ParameterMeasureInfo[] parameterMeasureInfos)
=> elementTable
.AsParallel()
- .Select(e => new ElementMeasureInfo(e, elementTable, parameterTable, parameterMeasureTypes))
+ .Select(e => new ElementMeasureInfo(e, elementTable, parameterTable, parameterMeasureInfos))
.ToArray();
public static ElementOffsetInfo[] CreateElementOffsetInfos(
diff --git a/src/cs/vim/Vim.Format/ElementParameterInfo/ParameterMeasureInfo.cs b/src/cs/vim/Vim.Format/ElementParameterInfo/ParameterMeasureInfo.cs
index 76a5c8c..2fd684f 100644
--- a/src/cs/vim/Vim.Format/ElementParameterInfo/ParameterMeasureInfo.cs
+++ b/src/cs/vim/Vim.Format/ElementParameterInfo/ParameterMeasureInfo.cs
@@ -34,8 +34,17 @@ public enum MeasureType
// - *DO NOT CHANGE THE ACTUAL ENUM VALUES*
}
- public static class ParameterMeasureInfo
+ public class ParameterMeasureInfo
{
+ public MeasureType MeasureType { get; }
+ public bool IsRevitBuiltIn { get; }
+
+ public ParameterMeasureInfo(MeasureType measureType, bool isRevitBuiltIn)
+ {
+ MeasureType = measureType;
+ IsRevitBuiltIn = isRevitBuiltIn;
+ }
+
///
/// Maps the lowercase parameter name to the MeasureType.
///
@@ -57,15 +66,15 @@ public static class ParameterMeasureInfo
// })
// .ToArray();
- public static MeasureType ParseMeasureType(string parameterDescriptorNameLowerInvariant, string parameterDescriptorGuid)
+ public static ParameterMeasureInfo ParseMeasureInfo(string parameterDescriptorNameLowerInvariant, string parameterDescriptorGuid)
{
// NOTE: parameterDescriptorGuid is either the Revit built-in ID (if the parameter is built-in), or a guid (if the parameter is shared).
- if (BuiltInIdToMeasureTypeMap.TryGetValue(parameterDescriptorGuid, out var measureType))
- return measureType;
+ if (RevitBuiltInIdToMeasureTypeMap.TryGetValue(parameterDescriptorGuid, out var measureType))
+ return new ParameterMeasureInfo(measureType, true);
// Compare the input descriptor name to the known mapping
if (NameLowerInvariantToMeasureTypeMap.TryGetValue(parameterDescriptorNameLowerInvariant, out measureType))
- return measureType;
+ return new ParameterMeasureInfo(measureType, false);
// Fall back to a string comparison to catch any localized parameter descriptor names which either start or end with the key followed by a space and digits,
// for example: "Length of Beam" or "Pipe Length 1"
@@ -82,7 +91,7 @@ public static MeasureType ParseMeasureType(string parameterDescriptorNameLowerIn
// return candidateMeasureType;
//}
- return MeasureType.Unknown;
+ return new ParameterMeasureInfo(MeasureType.Unknown, false);
}
public static void GetQuantityOrDisplayValue(
@@ -154,7 +163,7 @@ public static void GetQuantityOrDisplayValue(
///
/// Maps the built-in parameter Revit ID to the MeasureType
///
- public static readonly Dictionary BuiltInIdToMeasureTypeMap = new Dictionary()
+ public static readonly Dictionary RevitBuiltInIdToMeasureTypeMap = new Dictionary()
{
{ "-1001817", MeasureType.Angle }, // PROFILE_ANGLE, "Angle"
{ "-1001826", MeasureType.Angle }, // PROFILE1_ANGLE, "Angle"
diff --git a/src/cs/vim/Vim.Format/ElementParameterInfo/ParameterSummary.cs b/src/cs/vim/Vim.Format/ElementParameterInfo/ParameterSummary.cs
index 6495d66..f366db8 100644
--- a/src/cs/vim/Vim.Format/ElementParameterInfo/ParameterSummary.cs
+++ b/src/cs/vim/Vim.Format/ElementParameterInfo/ParameterSummary.cs
@@ -6,16 +6,20 @@
namespace Vim.Format.ElementParameterInfo
{
- public class ParameterSummary
+ public class ParameterSummary : IElementKindInfo
{
public string SummaryKey { get; set; }
+ public string DescriptorKindKey { get; set; }
+
public int Descriptor { get; set; }
- public ElementKind ElementKindEnum { get; set; }
+ public int ElementKindEnum { get; set; }
public string ElementKind { get; set; }
+ public bool ElementKindIsLeaf { get; set; }
+
public string CategoryNameFull { get; set; }
public string Name { get; set; } // Derived from Descriptor
@@ -192,13 +196,13 @@ public static IEnumerable GetParameterSummary(
CategoryTable categoryTable)
{
return Enumerable.Range(0, parameterTable.RowCount)
- .GroupBy(i => new ParameterSummaryKey(i, parameterTable, elementTable, elementKindArray, categoryTable))
+ .GroupBy(i => new ParameterSummaryKey(i, parameterTable, elementTable, elementKindArray))
.AsParallel()
.Select(g =>
{
var parameterSummaryKey = g.Key;
var descriptorIndex = parameterSummaryKey.DescriptorIndex;
- var elementKind = parameterSummaryKey.ElementKind;
+ var elementKindValue = parameterSummaryKey.ElementKind;
var categoryIndex = parameterSummaryKey.CategoryIndex;
var displayValues = g.Select(i => Parameter.SplitValues(parameterTable.GetValue(i)).DisplayValue).ToList();
@@ -210,9 +214,8 @@ public static IEnumerable GetParameterSummary(
var ps = new ParameterSummary()
{
SummaryKey = parameterSummaryKey.ToString(),
+ DescriptorKindKey = parameterSummaryKey.ToDescriptorKindKey(),
Descriptor = descriptorIndex,
- ElementKindEnum = elementKind,
- ElementKind = elementKind.ToDisplayString(),
CategoryNameFull = categoryTable.GetNameFull(categoryIndex),
Name = name,
NamePbiCaseSensitive = name.ToPbiCaseSensitiveString(),
@@ -226,6 +229,8 @@ public static IEnumerable GetParameterSummary(
CountDistinct = countDistinct
};
+ ps.SetElementKindInfo(elementKindValue);
+
return ps;
});
}
@@ -296,8 +301,7 @@ public ParameterSummaryKey(
int parameterIndex,
ParameterTable parameterTable,
ElementTable elementTable,
- ElementKind[] elementKindArray,
- CategoryTable categoryTable)
+ ElementKind[] elementKindArray)
{
DescriptorIndex = parameterTable.GetParameterDescriptorIndex(parameterIndex);
var elementIndex = parameterTable.GetElementIndex(parameterIndex);
@@ -321,5 +325,11 @@ public override string ToString()
public static string GetStringKey(int descriptorIndex, ElementKind elementKind, int categoryIndex)
=> $"{descriptorIndex}|{(int)elementKind}|{categoryIndex}";
+
+ public string ToDescriptorKindKey()
+ => GetDescriptorKindKey(DescriptorIndex, ElementKind);
+
+ public static string GetDescriptorKindKey(int descriptorIndex, ElementKind elementKind)
+ => $"{descriptorIndex}|{(int)elementKind}";
}
}
diff --git a/src/cs/vim/Vim.Format/FamilyDescendants.cs b/src/cs/vim/Vim.Format/FamilyDescendants.cs
new file mode 100644
index 0000000..bce8994
--- /dev/null
+++ b/src/cs/vim/Vim.Format/FamilyDescendants.cs
@@ -0,0 +1,74 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Vim.Format.ObjectModel;
+using Vim.Util;
+
+namespace Vim.Format
+{
+ public class FamilyDescendants
+ {
+ public DictionaryOfLists FamilyElementsToFamilyInstanceElements { get; } = new DictionaryOfLists();
+ public DictionaryOfLists FamilyTypeElementsToFamilyInstanceElements { get; } = new DictionaryOfLists();
+
+ ///
+ /// Constructor
+ ///
+ public FamilyDescendants(EntityTableSet tableSet)
+ {
+ var familyInstanceTable = tableSet.FamilyInstanceTable;
+ var familyTypeTable = tableSet.FamilyTypeTable;
+ var familyTable = tableSet.FamilyTable;
+
+ // Build a mapping of FamilyTypeElement -> FamilyInstanceElement by traversing the FamilyInstance table.
+
+ for (var i = 0; i < familyInstanceTable.RowCount; ++i)
+ {
+ var familyInstanceElementIndex = familyInstanceTable.GetElementIndex(i);
+ if (familyInstanceElementIndex == EntityRelation.None)
+ continue;
+
+ var familyTypeIndex = familyInstanceTable.GetFamilyTypeIndex(i);
+ if (familyTypeIndex == EntityRelation.None)
+ continue;
+
+ var familyTypeElementIndex = familyTypeTable.GetElementIndex(familyTypeIndex);
+ if (familyTypeElementIndex == EntityRelation.None)
+ continue;
+
+ FamilyTypeElementsToFamilyInstanceElements.Add(familyTypeElementIndex, familyInstanceElementIndex);
+ }
+
+ // Build a mapping of FamilyElement -> FamilyInstanceElement by traversing the FamilyType table.
+
+ for (var i = 0; i < familyTypeTable.RowCount; ++i)
+ {
+ var familyTypeElementIndex = familyTypeTable.GetElementIndex(i);
+ if (familyTypeElementIndex == EntityRelation.None)
+ continue;
+
+ var familyIndex = familyTypeTable.GetFamilyIndex(i);
+ if (familyIndex == EntityRelation.None)
+ continue;
+
+ var familyElementIndex = familyTable.GetElementIndex(familyIndex);
+ if (familyElementIndex == EntityRelation.None)
+ continue;
+
+ if (!FamilyTypeElementsToFamilyInstanceElements.TryGetValue(familyTypeElementIndex, out var familyInstanceElementIndices))
+ continue;
+
+ foreach (var familyInstanceElementIndex in familyInstanceElementIndices)
+ {
+ FamilyElementsToFamilyInstanceElements.Add(familyElementIndex, familyInstanceElementIndex);
+ }
+ }
+ }
+
+ public bool TryGetFamilyInstanceElementsFromFamilyElement(int familyElementIndex, out List familyInstanceElementIndices)
+ => FamilyElementsToFamilyInstanceElements.TryGetValue(familyElementIndex, out familyInstanceElementIndices);
+
+ public bool TryGetFamilyInstanceElementsFromFamilyTypeElement(int familyTypeElementIndex, out List familyInstanceElementIndices)
+ => FamilyTypeElementsToFamilyInstanceElements.TryGetValue(familyTypeElementIndex, out familyInstanceElementIndices);
+ }
+}
diff --git a/src/cs/vim/Vim.Format/ObjectModel/EntityTableSet.cs b/src/cs/vim/Vim.Format/ObjectModel/EntityTableSet.cs
index 280c784..e774f7b 100644
--- a/src/cs/vim/Vim.Format/ObjectModel/EntityTableSet.cs
+++ b/src/cs/vim/Vim.Format/ObjectModel/EntityTableSet.cs
@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
-
+using Vim.Util;
using static Vim.Format.Serializer;
using ReadOnlyIndexMap = System.Collections.Generic.IReadOnlyDictionary;
@@ -77,6 +77,9 @@ public static ElementKind[] GetElementKinds(FileInfo vimFileInfo)
return ets.GetElementKinds();
}
+
+ public FamilyDescendants GetFamilyDescendants()
+ => new FamilyDescendants(this);
}
public partial class CategoryTable
diff --git a/src/cs/vim/Vim.Format/ObjectModel/IElementKindInfo.cs b/src/cs/vim/Vim.Format/ObjectModel/IElementKindInfo.cs
new file mode 100644
index 0000000..c0272c2
--- /dev/null
+++ b/src/cs/vim/Vim.Format/ObjectModel/IElementKindInfo.cs
@@ -0,0 +1,34 @@
+using Vim.Util;
+
+namespace Vim.Format.ObjectModel
+{
+ public interface IElementKindInfo
+ {
+ string ElementKind { get; set; }
+ int ElementKindEnum { get; set; }
+ bool ElementKindIsLeaf { get; set; }
+ }
+
+ public static class IElementKindInfoExtensions
+ {
+ public static void SetElementKindInfo(
+ this IElementKindInfo info,
+ ElementKind elementKind)
+ {
+ if (info == null) return;
+ info.ElementKind = elementKind.ToDisplayString();
+ info.ElementKindEnum = (int) elementKind;
+ info.ElementKindIsLeaf = elementKind.IsLeaf();
+ }
+
+ public static void SetElementKindInfo(
+ this IElementKindInfo info,
+ int? elementIndex,
+ ElementKind[] elementKinds)
+ {
+ if (info == null) return;
+ var elementKind = elementKinds.ElementAtOrDefault(elementIndex ?? -1, ElementKind.Unknown);
+ info.SetElementKindInfo(elementKind);
+ }
+ }
+}
diff --git a/src/cs/vim/Vim.Format/ObjectModel/ObjectModel.cs b/src/cs/vim/Vim.Format/ObjectModel/ObjectModel.cs
index fa19da2..ddcf884 100644
--- a/src/cs/vim/Vim.Format/ObjectModel/ObjectModel.cs
+++ b/src/cs/vim/Vim.Format/ObjectModel/ObjectModel.cs
@@ -267,7 +267,7 @@ public enum ElementKind
public static class ElementKindExtensions
{
///
- /// Returns a display string representation of the element kind, allowing it to be ranked visually in user interfaces.
+ /// Returns a display string representation of the element kind.
///
public static string ToDisplayString(this ElementKind k)
{
@@ -310,6 +310,28 @@ public static string ToDisplayString(this ElementKind k)
}
return str;
}
+
+ ///
+ /// Returns true if the ElementKind is considered to be a terminal leaf in its hierarchy.
+ /// This is used to facilitate the removal of Family and FamilyType elements in
+ /// lists which may count elements by category.
+ ///
+ /// For example, to accureately count elements with the "Door" category in a building,
+ /// you wouldn't want to include Family and FamilyType elements which also have the
+ /// "Door" category; this would lead to over-counting since Family and FamilyType elements
+ /// should not be considered countable "leaf" nodes (they are conceptual).
+ ///
+ public static bool IsLeaf(this ElementKind k)
+ {
+ switch (k)
+ {
+ case ElementKind.Family:
+ case ElementKind.FamilyType:
+ return false;
+ default:
+ return true;
+ }
+ }
}
public interface IElementKindTable : IEntityTable