<?xml version="1.0" encoding="utf-8"?>
<ECSchema schemaName="IntegratedStructuralModel" alias="ism" version="02.00.02" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2" displayLabel="Integrated Structural Model" description="Integrated Structural Model Schema.">
    <ECSchemaReference name="CoreCustomAttributes" version="01.00.03" alias="CoreCA"/>
    <ECSchemaReference name="BisCustomAttributes" version="01.00.00" alias="bisCA"/>
    <ECSchemaReference name="BisCore" version="01.00.14" alias="bis" />
    <ECSchemaReference name="AecUnits" version="01.00.03" alias="AECU" />
    <ECSchemaReference name="Units" version="01.00.04" alias="u" />
    <ECSchemaReference name="Formats" version="01.00.00" alias="f" />
    <ECSchemaReference name="ECDbMeta" version="04.00.03" alias="meta" />

    <ECCustomAttributes>
        <ProductionStatus xmlns="CoreCustomAttributes.01.00.03">
            <SupportedUse>Deprecated</SupportedUse>
        </ProductionStatus>
        <SchemaLayerInfo xmlns="BisCustomAttributes.01.00.00">
            <Value>Application</Value>
        </SchemaLayerInfo>
        <Deprecated xmlns="CoreCustomAttributes.01.00.03">
            <Description>Replaced by newer generation IntegratedStructuralModel 03.00.00 schema.</Description>
        </Deprecated>
    </ECCustomAttributes>

    <PropertyCategory typeName="Calculated_category" displayLabel="Calculated" priority="0" />

    <ECCustomAttributeClass typeName="RelationshipHasLabels" appliesTo="RelationshipClass" description="Applied to relationships to indicate displayable labels for source and target objects of a relationship.">
        <ECProperty propertyName="SourceDisplayLabel" typeName="string" description="Displayable relationship source label."/>
        <ECProperty propertyName="TargetDisplayLabel" typeName="string" description="Displayable relationship target label."/>
    </ECCustomAttributeClass>

    <ECEnumeration typeName="IsmGeometryType" backingTypeName="string" isStrict="true" description="Geometry Type.">
        <ECEnumerator value="ismLineSegment2d" name="IsmLineSegment2d" displayLabel="Ism Line Segment 2d" />
        <ECEnumerator value="ismLineSegment3d" name="IsmLineSegment3d" displayLabel="Ism LineSegment 3d" />
        <ECEnumerator value="ismCircularArc2d" name="IsmCircularArc2d" displayLabel="Ism Circular Arc 2d" />
        <ECEnumerator value="ismCircularArc3d" name="IsmCircularArc3d" displayLabel="Ism Circular Arc 3d" />
        <ECEnumerator value="ismEllipticalArc3d" name="IsmEllipticalArc3d" displayLabel="Ism Elliptical Arc 3d" />
        <ECEnumerator value="ismCylinder3d" name="IsmCylinder3d" displayLabel="Ism Cylinder 3d" />
        <ECEnumerator value="ismBsplineCurve3d" name="IsmBsplineCurve3d" displayLabel="Ism Bspline Curve 3d" />
        <ECEnumerator value="ismVolumeExtrusion3d" name="IsmVolumeExtrusion3d" displayLabel="Ism Volume Extrusion 3d" />
        <ECEnumerator value="ismEllipticalCylinder3d" name="IsmEllipticalCylinder3d" displayLabel="Ism Elliptical Cylinder 3d" />
        <ECEnumerator value="ismSolidExtrusion3d" name="IsmSolidExtrusion3d" displayLabel="Ism Solid Extrusion 3d" />
        <ECEnumerator value="ismPolyline2d" name="IsmPolyline2d" displayLabel="Ism Polyline 2d" />
        <ECEnumerator value="ismPolyline3d" name="IsmPolyline3d" displayLabel="Ism Polyline 3d" />
        <ECEnumerator value="ismCurveChain3d" name="IsmCurveChain3d" displayLabel="Ism CurveChain 3d" />
        <ECEnumerator value="ismCurveChain2d" name="IsmCurveChain2d" displayLabel="Ism CurveChain 2d" />
        <ECEnumerator value="ismPerimeterSurface2d" name="IsmPerimeterSurface2d" displayLabel="Ism PerimeterSurface 2d" />
        <ECEnumerator value="ismPoint3dArray" name="IsmPoint3dArray" displayLabel="Ism Point 3d Array" />
        <ECEnumerator value="ismMultiSurface2d" name="IsmMultiSurface2d" displayLabel="Ism Multi Surface 2d" />
        <ECEnumerator value="ismTrimmedSurface3d" name="IsmTrimmedSurface3d" displayLabel="Ism Trimmed Surface 3d" />
    </ECEnumeration>

    <ECStructClass typeName="IsmPrimitiveGeometry" description="Primitive Geometry" modifier="Sealed">
        <ECProperty propertyName="type" typeName="IsmGeometryType" description="Type of geometry defined in ISM API format." />
        <ECProperty propertyName="geometry" typeName="Bentley.Geometry.Common.IGeometry" displayLabel="Geometry" kindOfQuantity="AECU:LENGTH" description="Actual geometry defined in iTwin format." />
    </ECStructClass>

    <ECStructClass typeName="IsmArrayGeometry" description="Array Geometry" modifier="Sealed">
        <ECProperty propertyName="type" typeName="IsmGeometryType" description="Type of geometry defined in ISM API format." />
        <ECArrayProperty propertyName="geometry" typeName="Bentley.Geometry.Common.IGeometry" displayLabel="Geometry" kindOfQuantity="AECU:LENGTH" description="An array of geometries representing more complex geometry." />
    </ECStructClass>

    <ECRelationshipClass typeName="IsmObject_Object" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>bis:ElementRefersToElements</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="bis:Element" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="is referred by" polymorphic="true">
            <Class class="bis:Element" />
        </Target>
    </ECRelationshipClass>

    <ECEntityClass typeName="IIsmPropertyHolder" modifier="Abstract">
        <ECCustomAttributes>
            <IsMixin xmlns="CoreCustomAttributes.01.00.03">
                <AppliesToEntityClass>bis:Element</AppliesToEntityClass>
            </IsMixin>
        </ECCustomAttributes>
    </ECEntityClass>

    <PropertyCategory typeName="IIsmObject_category" displayLabel="Object" priority="200" />
    <ECEntityClass typeName="IIsmObject" displayLabel="Ism Object" modifier="Abstract">
        <BaseClass>IIsmPropertyHolder</BaseClass>
        <ECCustomAttributes>
            <IsMixin xmlns="CoreCustomAttributes.01.00.03">
                <AppliesToEntityClass>bis:Element</AppliesToEntityClass>
            </IsMixin>
        </ECCustomAttributes>
        <ECProperty propertyName="CustomProperties" typeName="string" displayLabel="Custom Property Values" category="IIsmObject_category" />
        <ECProperty propertyName="AutoNavigatorTransparency" typeName="double" category="IIsmObject_category" description="A legacy property required for Local based Synchronizer to work." />
        <ECProperty propertyName="ShortId" typeName="string" displayLabel="Short Id" category="IIsmObject_category" />
        <ECProperty propertyName="Name" typeName="string" category="IIsmObject_category" description="User defined Element name." />
        <ECProperty propertyName="IsmId" typeName="string" category="IIsmObject_category" description="Internal id used for mapping iTwin and Consuming Application Elements." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmAnalysisDesign" displayLabel="Analysis Design" modifier="None">
        <BaseClass>bis:InformationRecordElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmAnalysisResults_AnalysisDesign" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="belongs to" polymorphic="false">
            <Class class="IsmAnalysisResults" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="has" polymorphic="false">
            <Class class="IsmAnalysisDesign" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Results</SourceDisplayLabel>
                <TargetDisplayLabel>Design</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmDesignResults_AnalysisDesign" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="belongs to" polymorphic="false">
            <Class class="IsmDesignResults" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="has" polymorphic="false">
            <Class class="IsmAnalysisDesign" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Results</SourceDisplayLabel>
                <TargetDisplayLabel>Design</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmMemberDesignCriteria_AnalysisDesign" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="belongs to" polymorphic="true">
            <Class class="IsmMemberDesignCriteria" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="has" polymorphic="true">
            <Class class="IsmAnalysisDesign" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Design criteria</SourceDisplayLabel>
                <TargetDisplayLabel>Design</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmResults" modifier="Abstract" displayLabel="Results">
        <BaseClass>bis:InformationRecordElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="AnalysisEngine" typeName="string" displayLabel="Analysis Engine" />
        <ECProperty propertyName="AnalysisFileName" typeName="string" displayLabel="Analysis File Name" description="File analysis was ran against" />
        <ECProperty propertyName="AnalyzedTime" typeName="dateTime" displayLabel="Analyzed Time" />
        <ECProperty propertyName="AnalysisEngineVersion" typeName="string" displayLabel="Analysis Engine Version" />
    </ECEntityClass>

    <ECEntityClass typeName="IsmAnalysisResults" modifier="None" displayLabel="Analysis Results">
        <BaseClass>IsmResults</BaseClass>
        <ECProperty propertyName="MaxDisplacedLocation" typeName="Point3d" kindOfQuantity="AECU:LENGTH" displayLabel="Max Displaced Location" description="The point that was displaced the most under all load conditions." />
        <ECProperty propertyName="MaxDisplacement" typeName="Point3d" kindOfQuantity="AECU:LENGTH" displayLabel="Max Displacement" description="Node max displacement vector." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmAnalysisResults_MaxDisplacementLoadContainer" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="false">
            <Class class="IsmAnalysisResults" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmLoadContainer" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Analysis Results</SourceDisplayLabel>
                <TargetDisplayLabel>Load container</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmMemberAnalysisResults" modifier="Abstract" displayLabel="Member Analysis Results">
        <BaseClass>bis:InformationRecordElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmMemberAnalysisResults_AnalysisResults" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="belongs to" polymorphic="true">
            <Class class="IsmMemberAnalysisResults" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="has" polymorphic="false">
            <Class class="IsmAnalysisResults" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Analysis results</SourceDisplayLabel>
                <TargetDisplayLabel>Results</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmMemberAnalysisResults_Member" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmMemberAnalysisResults" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmSpanningMember" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Analysis results</SourceDisplayLabel>
                <TargetDisplayLabel>Member</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmCurveMemberAnalysisResults" modifier="None" displayLabel="Curve Member Analysis Results">
        <BaseClass>IsmMemberAnalysisResults</BaseClass>
        <ECProperty propertyName="MaxDisplacement" typeName="Point3d" kindOfQuantity="AECU:LENGTH" displayLabel="Max Displacement" description="Represents the members displacement along its length, that was displaced the most under all Load Conditions." />
        <ECProperty propertyName="MaxDisplacedLinearDistance" typeName="double" displayLabel="Max Displaced Distance" kindOfQuantity="AECU:LENGTH" description="Displacement vector magnitude." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmCurveMemberAnalysisResults_MaxDisplacementLoadContainer" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmCurveMemberAnalysisResults" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmLoadContainer" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Analysis results</SourceDisplayLabel>
                <TargetDisplayLabel>Load container</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmDesignResults" displayLabel="Design Results" modifier="None">
        <BaseClass>IsmResults</BaseClass>
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmDesignResults_CriticalMemberResults" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="refers to" polymorphic="false">
            <Class class="IsmDesignResults" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmMemberDesignResults" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Design results</SourceDisplayLabel>
                <TargetDisplayLabel>Member Design results</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmMemberDesignResults_DesignResults" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmMemberDesignResults" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="refers to" polymorphic="false">
            <Class class="IsmDesignResults" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Member design results</SourceDisplayLabel>
                <TargetDisplayLabel>Design results</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmMemberDesignResults_ConsideredLoadContainers" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmMemberDesignResults" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmLoadContainer" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Member design results</SourceDisplayLabel>
                <TargetDisplayLabel>Load containers</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmMemberDesignResults" modifier="Abstract" displayLabel="Member Design Results">
        <BaseClass>bis:InformationRecordElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="Status" typeName="StatusType" description="Specifies if the design passed all relevant checks." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmMemberDesignResults_Member" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmMemberDesignResults" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmSpanningMember" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Member design results</SourceDisplayLabel>
                <TargetDisplayLabel>Spanning member</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmMemberDesignResults_MemberDesignCriteria" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmMemberDesignResults" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmMemberDesignCriteria" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Member design results</SourceDisplayLabel>
                <TargetDisplayLabel>Member design criteria</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmMemberCheck_MemberDesignResults" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="belongs to" polymorphic="false">
            <Class class="IsmMemberCheck" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="has" polymorphic="true">
            <Class class="IsmMemberDesignResults" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Member check</SourceDisplayLabel>
                <TargetDisplayLabel>Member design results</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmCurveMemberDesignResults" modifier="Abstract" displayLabel="Curve Member Design Results">
        <BaseClass>IsmMemberDesignResults</BaseClass>
    </ECEntityClass>

    <ECEntityClass typeName="IsmCurveMemberSteelDesignResults" modifier="None" displayLabel="Curve Member Steel Design Results">
        <BaseClass>IsmCurveMemberDesignResults</BaseClass>
        <ECProperty propertyName="PercentComposite" typeName="double" displayLabel="Percent Composite"  />
    </ECEntityClass>

    <ECEntityClass typeName="IsmCurveMemberConcreteDesignResults" modifier="None" displayLabel="Curve Member Concrete Design Results">
        <BaseClass>IsmCurveMemberDesignResults</BaseClass>
        <ECProperty propertyName="LongitudinalSteelRequired" typeName="double" displayLabel="Longitudinal Steel Required" kindOfQuantity="AECU:WEIGHT" />
        <ECProperty propertyName="LongitudinalSteelProvided" typeName="double" displayLabel="Longitudinal Steel Provided" kindOfQuantity="AECU:WEIGHT" />
        <ECProperty propertyName="MaxTransverseSteelDensityProvided" typeName="double" displayLabel="Max Transverse Steel Density Provided" kindOfQuantity="AECU:DENSITY" />
        <ECProperty propertyName="MaxTransverseSteelDensityRequired" typeName="double" displayLabel="Max Transverse Steel Density Required" kindOfQuantity="AECU:DENSITY" />
    </ECEntityClass>

    <ECEntityClass typeName="IsmMemberCheck" modifier="None" displayLabel="Member check">
        <BaseClass>bis:InformationRecordElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="CriticalClause" typeName="string" displayLabel="Critical Clause" description="Critical clause under Design Code used for this check." />
        <ECProperty propertyName="Capacity" typeName="double" description="The total capacity (limit) for this check." />
        <ECProperty propertyName="Demand" typeName="double" description="The actual value of this check." />
        <ECProperty propertyName="UtilizationRatio" typeName="double" displayLabel="Utilization Ratio" description="Utilization ratio of this check." />
        <ECProperty propertyName="CheckName" typeName="CheckNameType" displayLabel="Check Name" description="Check name, used to identify the check among those with the same." />
        <ECProperty propertyName="CheckKind" typeName="CheckKindType" displayLabel="Check Kind" description="Specified check kind, used for grouping checks together." />
        <ECProperty propertyName="QuantityKind" typeName="QuantityKindType" displayLabel="Quantity Kind" description="The quantity kind of Demand and Capacity" />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmMemberCheck_CriticalLoadContainer" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="false">
            <Class class="IsmMemberCheck" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmLoadContainer" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Member checks</SourceDisplayLabel>
                <TargetDisplayLabel>Critical Load container</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmMemberDesignCriteria" modifier="Abstract" displayLabel="Member Design Criteria">
        <BaseClass>bis:DefinitionElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="DesignCode" typeName="string" displayLabel="Design Code" description="Design Code that criteria based on." />
        <ECProperty propertyName="DesignMethod" typeName="DesignMethodType" displayLabel="Design Method" description="Method that will be used to generate Design Results." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmCurveMemberDesignCriteria" modifier="None" displayLabel="Curve member design criteria">
        <BaseClass>IsmMemberDesignCriteria</BaseClass>
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmDesignParameter_MemberDesignCriteria" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="belongs to" polymorphic="false">
            <Class class="IsmDesignParameter" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="has" polymorphic="true">
            <Class class="IsmMemberDesignCriteria" />
        </Target>
    <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Design parameter</SourceDisplayLabel>
                <TargetDisplayLabel>Design criteria</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmDesignParameter" modifier="None" displayLabel="Design Parameter">
        <BaseClass>bis:InformationRecordElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="StringValue" typeName="string" displayLabel="String Parameter Value" />
        <ECProperty propertyName="IntValue" typeName="int" displayLabel="Int Parameter Value" />
        <ECProperty propertyName="DoubleValue" typeName="double" displayLabel="Double Parameter Value" />
        <ECProperty propertyName="BooleanValue" typeName="boolean" displayLabel="Boolean Parameter Value" />
        <ECProperty propertyName="QuantityKind" typeName="QuantityKindType" displayLabel="Quantity Kind" />
    </ECEntityClass>

    <ECEntityClass typeName="IIsmSubObject" displayLabel="IIsm Sub Object" modifier="Abstract">
        <BaseClass>IIsmObject</BaseClass>
        <ECCustomAttributes>
            <IsMixin xmlns="CoreCustomAttributes.01.00.03">
                <AppliesToEntityClass>bis:Element</AppliesToEntityClass>
            </IsMixin>
        </ECCustomAttributes>
    </ECEntityClass>

    <ECEnumeration typeName="FixedParametricSectionType" backingTypeName="int" isStrict="true" description="Fixed Parametric Section Type.">
        <ECEnumerator value="50" name="BentPlate" displayLabel="Bent Plate" />
        <ECEnumerator value="100" name="C" />
        <ECEnumerator value="200" name="DoubleL" displayLabel="Double L" />
        <ECEnumerator value="210" name="DoubleT" displayLabel="Double T" />
        <ECEnumerator value="300" name="HollowCircle" displayLabel="Hollow Circle" />
        <ECEnumerator value="400" name="HollowRectangle" displayLabel="Hollow Rectangle" />
        <ECEnumerator value="500" name="I" />
        <ECEnumerator value="600" name="L" />
        <ECEnumerator value="610" name="RoundedC" displayLabel="Rounded C" />
        <ECEnumerator value="640" name="RoundedLippedC" displayLabel="Rounded Lipped C" />
        <ECEnumerator value="660" name="RoundedLippedZ" displayLabel="Rounded Lipped Z" />
        <ECEnumerator value="670" name="RoundedHollowRectangle" displayLabel="Rounded Hollow Rectangle" />
        <ECEnumerator value="675" name="RoundedZ" displayLabel="Rounded Z" />
        <ECEnumerator value="680" name="SchifflerizedL" displayLabel="Schifflerized L" />
        <ECEnumerator value="700" name="SolidCircle" displayLabel="Solid Circle" />
        <ECEnumerator value="800" name="SolidRectangle" displayLabel="Solid Rectangle" />
        <ECEnumerator value="900" name="T" />
        <ECEnumerator value="1000" name="Unknown" />
    </ECEnumeration>

    <ECEntityClass typeName="IsmSection" displayLabel="Ism Section" modifier="Abstract">
        <BaseClass>bis:DefinitionElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
    </ECEntityClass>

    <ECEntityClass typeName="IsmConstantSection" displayLabel="Ism Constant Section" modifier="Abstract">
        <BaseClass>IsmSection</BaseClass>
        <ECStructProperty propertyName="Shape" typeName="IsmPrimitiveGeometry" description="2d Shape that represents section perimeter." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmVaryingSection" displayLabel="Varying Section" modifier="Sealed">
        <BaseClass>IsmSection</BaseClass>
    </ECEntityClass>

    <ECEntityClass typeName="IsmVaryingSectionSegment" displayLabel="Varying Section Segment" modifier="Sealed">
        <BaseClass>bis:DefinitionElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="Index" typeName="int" description="Index of this segment in the context of Varying Member." />
        <ECProperty propertyName="Transition" typeName="int" description="The transition of the shape between the Start Section and End Section along this segment." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmVaryingSectionSegment_VaryingSection" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="is part of" polymorphic="false">
            <Class class="IsmVaryingSectionSegment" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="has" polymorphic="false">
            <Class class="IsmVaryingSection" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Segments</SourceDisplayLabel>
                <TargetDisplayLabel>Section</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmVaryingSectionSegment_StartSection" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="false">
            <Class class="IsmVaryingSectionSegment" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmConstantSection" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Segments</SourceDisplayLabel>
                <TargetDisplayLabel>Start section</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmVaryingSectionSegment_EndSection" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="false">
            <Class class="IsmVaryingSectionSegment" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmConstantSection" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Segment</SourceDisplayLabel>
                <TargetDisplayLabel>End section</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmFixedParametricSection" displayLabel="Ism Fixed Parametric Section" modifier="Abstract">
        <BaseClass>IsmConstantSection</BaseClass>
        <ECProperty propertyName="Angle" typeName="double" kindOfQuantity="AECU:ANGLE" />
        <ECProperty propertyName="Depth" typeName="double" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="Diameter" typeName="double" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="FlangeThickness" typeName="double" displayLabel="Flange Thickness" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="FlangeWidth" typeName="double" displayLabel="Flange Width" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="Length" typeName="double" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="LipLength" typeName="double" displayLabel="Lip Length" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="ParametricShapeKind" typeName="FixedParametricSectionType" displayLabel="Parametric Shape Kind" />
        <ECProperty propertyName="Radius" typeName="double" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="Spacing" typeName="double" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="Span" typeName="double" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="Thickness" typeName="double" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="WebThickness" typeName="double" displayLabel="Web Thickness" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="WebThicknessBottom" typeName="double" displayLabel="Bottom Web Thickness" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="WebThicknessTop" typeName="double" displayLabel="Top Web Thickness" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="Width" typeName="double" kindOfQuantity="AECU:LENGTH_SHORT" />
    </ECEntityClass>

    <ECEntityClass typeName="IsmBuiltUpSection" displayLabel="Built-Up Section" modifier="Sealed">
        <BaseClass>IsmConstantSection</BaseClass>
    </ECEntityClass>

    <ECEntityClass typeName="IsmBuiltUpSectionComponent" displayLabel="Built-Up Section Component" modifier="Sealed">
        <BaseClass>bis:DefinitionElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="Offset" typeName="Point2d" kindOfQuantity="AECU:LENGTH_SHORT" description="The offset in Built Up Section to the Placement Point." />
        <ECProperty propertyName="Index" typeName="int" description="Index of this component in the context of whole Built Up Section." />
        <ECProperty propertyName="MirrorShapeAboutYAxis" typeName="boolean" displayLabel="Mirror Shape About Y-Axis" description="Is Shape mirrored about Y-Axis?" />
        <ECProperty propertyName="PlacementPoint" typeName="int" displayLabel="Placement Point" description="The location on the Section that is the Offset away from 0,0 on the Built Up Section." />
        <ECProperty propertyName="Rotation" typeName="double" kindOfQuantity="AECU:ANGLE" description="The rotation of this component's shape relative to the Built Up Section's axes." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmBuiltUpSectionComponent_BuiltUpSection" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="is part of" polymorphic="false">
            <Class class="IsmBuiltUpSectionComponent" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="has components" polymorphic="false">
            <Class class="IsmBuiltUpSection" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Components</SourceDisplayLabel>
                <TargetDisplayLabel>Section</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmBuiltUpSectionComponent_Section" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="false">
            <Class class="IsmBuiltUpSectionComponent" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmConstantSection" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Components</SourceDisplayLabel>
                <TargetDisplayLabel>Section</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmTableSection" displayLabel="Table Section" modifier="Sealed">
        <BaseClass>IsmFixedParametricSection</BaseClass>
        <ECProperty propertyName="StandardsOrganization" typeName="string" displayLabel="Standards' Organization" description="The standards organization that defines classification for this Section." />
        <ECProperty propertyName="SectionName" typeName="string" displayLabel="Section Name" />
        <ECProperty propertyName="Manufacturer" typeName="string" />
        <ECProperty propertyName="Revision" typeName="string" />
    </ECEntityClass>

    <ECEntityClass typeName="IsmParametricSection" displayLabel="Parametric Section" modifier="None">
        <BaseClass>IsmFixedParametricSection</BaseClass>
    </ECEntityClass>

    <ECEnumeration typeName="SteelJoistBearing" backingTypeName="int" isStrict="true" description="Steel Joist Bearing.">
        <ECEnumerator value="10" name="Bottom" />
        <ECEnumerator value="20" name="Top" />
    </ECEnumeration>

    <ECEntityClass typeName="IsmSteelJoist" modifier="Abstract">
        <BaseClass>IsmSection</BaseClass>
        <ECProperty propertyName="Bearing" typeName="SteelJoistBearing" />
    </ECEntityClass>

    <ECEntityClass typeName="IsmParametricSteelJoist" modifier="Abstract">
        <BaseClass>IsmSteelJoist</BaseClass>
    </ECEntityClass>

    <ECEntityClass typeName="IsmTableSteelJoist" displayLabel="Table Steel Joist" modifier="Sealed">
        <BaseClass>IsmParametricSteelJoist</BaseClass>
        <ECProperty propertyName="Organization" typeName="string" description="The standards organization that defines classification for this Joist." />
        <ECProperty propertyName="JoistName" typeName="string" displayLabel="Joist Name" />
        <ECProperty propertyName="Revision" typeName="string" />
    </ECEntityClass>

    <ECEntityClass typeName="IsmParallelChordSteelJoist" displayLabel="Parallel Chord Steel Joist" modifier="Sealed">
        <BaseClass>IsmParametricSteelJoist</BaseClass>
        <ECProperty propertyName="Depth" typeName="double" kindOfQuantity="AECU:LENGTH_SHORT" description="Total depth of the joist." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmMaterial" displayLabel="Material" modifier="Abstract">
        <BaseClass>bis:DefinitionElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
    </ECEntityClass>

    <ECEntityClass typeName="IsmSteel" displayLabel="Steel" modifier="Sealed">
        <BaseClass>IsmMaterial</BaseClass>
        <ECProperty propertyName="YieldStress" typeName="double" displayLabel="Yield Stress" kindOfQuantity="AECU:PRESSURE" description="Minimum stress at which a solid will undergo permanent deformation or plastic flow without a significant increase in the load or external force." />
        <ECProperty propertyName="ElasticModulus" typeName="double" displayLabel="Elastic Modulus" kindOfQuantity="AECU:PRESSURE" description="Resistance of a solid to being deformed." />
        <ECProperty propertyName="PoissonsRatio" typeName="double" displayLabel="Poisson's Ratio" description="The deformation (expansion or contraction) of a material in directions perpendicular to the specific direction of loading." />
        <ECProperty propertyName="TensileStrength" typeName="double" displayLabel="Tensile Strength" kindOfQuantity="AECU:PRESSURE" description="Stress after which a solid will break." />
        <ECProperty propertyName="ThermalExpansionCoefficient" typeName="double" displayLabel="Thermal Expansion Coefficient" kindOfQuantity="AECU:THERMAL_EXPANSION_COEFFICIENT" description="Expansion or contraction of a solid due to change in temperature." />
        <ECProperty propertyName="UnitMass" typeName="double" displayLabel="Unit Mass" kindOfQuantity="AECU:WEIGHT" />
        <ECProperty propertyName="UnitMassForLoads" typeName="double" displayLabel="Unit Mass for Loads" kindOfQuantity="AECU:DENSITY" description="Unit mass of steel for use in calculating loads." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmAluminum" displayLabel="Aluminum" modifier="Sealed">
        <BaseClass>IsmMaterial</BaseClass>
    </ECEntityClass>

    <ECEntityClass typeName="IsmNodeLink" displayLabel="Node Link" modifier="Sealed" >
        <BaseClass>bis:SpatialLocationElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
        <ECProperty propertyName="RAxisTranslationFixity" typeName="boolean" displayLabel="R-Axis Translation Fixity" description="Is motion restricted along R-Axis?" />
        <ECProperty propertyName="SAxisTranslationFixity" typeName="boolean" displayLabel="S-Axis Translation Fixity" description="Is motion restricted along S-Axis?" />
        <ECProperty propertyName="TAxisTranslationFixity" typeName="boolean" displayLabel="T-Axis Translation Fixity" description="Is motion restricted along T-Axis?" />
        <ECProperty propertyName="RAxisRotationFixity" typeName="boolean" displayLabel="R-Axis Rotation Fixity" description="Is rotation restricted about R-Axis?" />
        <ECProperty propertyName="SAxisRotationFixity" typeName="boolean" displayLabel="S-Axis Rotation Fixity" description="Is rotation restricted about S-Axis?" />
        <ECProperty propertyName="TAxisRotationFixity" typeName="boolean" displayLabel="T-Axis Rotation Fixity" description="Is rotation restricted about T-Axis?" />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmNodeLink_StartNode" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="false">
            <Class class="IsmNodeLink" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmNode" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Node links</SourceDisplayLabel>
                <TargetDisplayLabel>Start node</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmNodeLink_EndNode" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="false">
            <Class class="IsmNodeLink" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmNode" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Node links</SourceDisplayLabel>
                <TargetDisplayLabel>End node</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEnumeration typeName="HookType" backingTypeName="int" isStrict="true" description="Describes one end of bar.">
        <ECEnumerator value="10" name="Anchor" description="A full-development anchor." />
        <ECEnumerator value="20" name="Hook90" displayLabel="Hook 90 degrees" description="90 degree hook." />
        <ECEnumerator value="30" name="Hook135" displayLabel="Hook 135 degrees" description="135 degree hook." />
        <ECEnumerator value="40" name="Hook180" displayLabel="Hook 180 degrees" description="180 degree hook." />
        <ECEnumerator value="50" name="LapSplice" displayLabel="Lap Splice" description="A lap splice into an adjacent region." />
        <ECEnumerator value="60" name="MechanicalSplice" displayLabel="Mechanical Splice" description="A mechanical splice into an adjacent region." />
        <ECEnumerator value="70" name="None" description="There is no hook." />
        <ECEnumerator value="80" name="OffsetLapSplice" displayLabel="Offset Lap Splice" description="A lap splice with an offset into an adjacent region." />
        <ECEnumerator value="90" name="WeldedSplice" displayLabel="Welded Splice" description="A welded splice into an adjacent region." />
        <ECEnumerator value="1000" name="Other" description="Hook configuration that does not match any other." />
    </ECEnumeration>

    <ECEnumeration typeName="RebarUseType" backingTypeName="int" isStrict="true" description="Describes use of rebar.">
        <ECEnumerator value="10" name="Primary" description="This is a regular 'primary' reinforcement (not a tie)." />
        <ECEnumerator value="20" name="SeismicTie" displayLabel="Seismic Tie" description="This is a stirrup, tie, link, ligature or fitment bar, with special seismic detailing requirements." />
        <ECEnumerator value="30" name="Tie" description="This is a stirrup, tie, link, ligature or fitment bar." />
    </ECEnumeration>

    <PropertyCategory typeName="IsmRebar_category" displayLabel="Rebar" priority="190" />
    <ECEntityClass typeName="IsmRebar" modifier="None" displayLabel="Rebar">
        <BaseClass>bis:PhysicalElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECArrayProperty propertyName="CustomBendRadii" typeName="double" displayLabel="Custom Bend Radii" category="IsmRebar_Category" kindOfQuantity="AECU:LENGTH_SHORT" description="The radii for all of the non-hook bends in the bar." />
        <ECProperty propertyName="CustomEndHookExtension" typeName="double" displayLabel="Custom End Hook Extension" category="IsmRebar_Category" kindOfQuantity="AECU:LENGTH_SHORT" description="The custom extension for the End Hook." />
        <ECProperty propertyName="CustomEndHookRadius" typeName="double" displayLabel="Custom End Hook Radius" category="IsmRebar_Category" kindOfQuantity="AECU:LENGTH_SHORT" description="The custom radius for the End Hook." />
        <ECProperty propertyName="CustomStartHookExtension" typeName="double" displayLabel="Custom Start Hook Extension" category="IsmRebar_Category" kindOfQuantity="AECU:LENGTH_SHORT" description="The custom extension for the Start Hook." />
        <ECProperty propertyName="CustomStartHookRadius" typeName="double" displayLabel="Custom Start Hook Radius" category="IsmRebar_Category" kindOfQuantity="AECU:LENGTH_SHORT" description="The custom radius for the End Hook." />
        <ECProperty propertyName="EndHook" typeName="HookType" displayLabel="End Hook" category="IsmRebar_Category" description="The hook type at the end of the bars." />
        <ECProperty propertyName="StartHook" typeName="HookType" displayLabel="Start Hook" category="IsmRebar_Category" description="The hook type at the start of the bars." />
        <ECProperty propertyName="Use" typeName="RebarUseType" category="IsmRebar_Category" description="Use of these bars." />
    </ECEntityClass>

    <ECEnumeration typeName="LayoutPlacementType" backingTypeName="int" isStrict="true" description="Defines placement surface on the host.">
        <ECEnumerator value="10" name="SlabTopMajorDirection" displayLabel="Slab Top Major Direction" description="Rebar is placed at the top of a slab along Major direction." />
        <ECEnumerator value="20" name="SlabTopMinorDirection" displayLabel="Slab Top Minor Direction" description="Rebar is placed at the top of a slab along Minor direction." />
        <ECEnumerator value="30" name="SlabCenterMajorDirection" displayLabel="Slab Center Major Direction" description="Rebar is placed at the center of a slab along Major direction." />
        <ECEnumerator value="40" name="SlabCenterMinorDirection" displayLabel="Slab Center Minor Direction" description="Rebar is placed at the center of a slab along Minor direction." />
        <ECEnumerator value="50" name="SlabBottomMajorDirection" displayLabel="Slab Bottom Major Direction" description="Rebar is placed at the bottom of a slab along Major direction." />
        <ECEnumerator value="60" name="SlabBottomMinorDirection" displayLabel="Slab Bottom Minor Direction" description="Rebar is placed at the bottom of a slab along Minor direction." />
        <ECEnumerator value="70" name="WallFace1MajorDirection" displayLabel="Wall Face1 Major Direction" description="Rebar is placed at the Face1 of a wall along Major direction." />
        <ECEnumerator value="80" name="WallFace1MinorDirection" displayLabel="Wall Face1 Minor Direction" description="Rebar is placed at the Face1 of a wall along Minor direction." />
        <ECEnumerator value="90" name="WallCenterMajorDirection" displayLabel="Wall Center Major Direction" description="Rebar is placed at the center of a wall along Major direction." />
        <ECEnumerator value="100" name="WallCenterMinorDirection" displayLabel="Wall Center Minor Direction" description="Rebar is placed at the center of a wall along Minor direction." />
        <ECEnumerator value="110" name="WallFace2MajorDirection" displayLabel="Wall Face2 Major Direction" description="Rebar is placed at the Face2 of a wall along Major direction." />
        <ECEnumerator value="120" name="WallFace2MinorDirection" displayLabel="Wall Face2 Minor Direction" description="Rebar is placed at the Face2 of a wall along Minor direction." />
    </ECEnumeration>

    <PropertyCategory typeName="IsmSurfaceRebar_category" displayLabel="Surface Rebar" priority="180" />
    <ECEntityClass typeName="IsmSurfaceRebar" modifier="None" displayLabel="Surface Rebar">
        <BaseClass>IsmRebar</BaseClass>
        <ECProperty propertyName="LayoutPlacement" typeName="LayoutPlacementType" displayLabel="Layout Placement" category="IsmSurfaceRebar_category" description="Placement surface at which Surface Rebar is placed on the Host." />
        <ECProperty propertyName="BarDirection" typeName="Point3d" displayLabel="Bar Direction" category="IsmSurfaceRebar_category" description="The unit vector direction that is parallel to the bar. This defines the R-Axis of the rebar." />
        <ECProperty propertyName="BarSpacing" typeName="double" displayLabel="Bar Spacing" category="IsmSurfaceRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The perpendicular spacing of the bars." />
        <ECProperty propertyName="EndHookDirection" typeName="double" displayLabel="End Hook Direction" category="IsmSurfaceRebar_category" kindOfQuantity="AECU:ANGLE" description="The angle/orientation of the End Hook." />
        <ECProperty propertyName="StartHookDirection" typeName="double" displayLabel="Start Hook Direction" category="IsmSurfaceRebar_category" kindOfQuantity="AECU:ANGLE" description="The angle/orientation of the Start Hook." />
    </ECEntityClass>

    <ECEnumeration typeName="ConstrainedDimensionType" backingTypeName="int" isStrict="true" description="This enumeration defines which property is auto-calculated.">
        <ECEnumerator value="10" name="BarSpacing" displayLabel="Bar spacing" description="Bar Spacing is auto-calculated." />
        <ECEnumerator value="20" name="BarCount" displayLabel="Bar count" description="Bar Count is auto-calculated." />
        <ECEnumerator value="30" name="LayoutWidth" displayLabel="Layout width" description="Layout Width is auto-calculated." />
    </ECEnumeration>

    <PropertyCategory typeName="IsmConcentratedSurfaceRebar_category" displayLabel="Concentrated Surface Rebar" priority="170" />
    <ECEntityClass typeName="IsmConcentratedSurfaceRebar" modifier="Sealed" displayLabel="Concentrated Surface Rebar">
        <BaseClass>IsmSurfaceRebar</BaseClass>
        <ECProperty propertyName="LayoutPoint" typeName="Point3d" displayLabel="Layout Point" category="IsmConcentratedSurfaceRebar_category" kindOfQuantity="AECU:LENGTH" description="The central point from which the layout is done." />
        <ECProperty propertyName="LayoutDirection" typeName="Point3d" displayLabel="Layout Direction" category="IsmConcentratedSurfaceRebar_category" description="Unit vector defining the direction in which to offset bars." />
        <ECProperty propertyName="BarLength" typeName="double" displayLabel="Bar Length" category="IsmConcentratedSurfaceRebar_category" kindOfQuantity="AECU:LENGTH" description="The length of the bar, not including hooks, nor Stagger Length." />
        <ECProperty propertyName="AutoDetailedLength" typeName="double" displayLabel="Detailed Length" category="Calculated_category" kindOfQuantity="AECU:LENGTH" description="Auto-calculated detailed bar length (including hooks)." />
        <ECProperty propertyName="AutoGroupBarWeight" typeName="double" displayLabel="Group Bar Weight" category="Calculated_category" kindOfQuantity="AECU:WEIGHT" description="Auto-calculated detailed bar weight (including hooks)." />
        <ECProperty propertyName="BarCount" typeName="int" displayLabel="Bar Count" category="IsmConcentratedSurfaceRebar_category" description="The number of bars." />
        <ECProperty propertyName="LayoutWidth" typeName="double" displayLabel="Layout Width" category="IsmConcentratedSurfaceRebar_category" kindOfQuantity="AECU:LENGTH" description="Rebar Layout Width." />
        <ECProperty propertyName="ConstrainedDimension" typeName="ConstrainedDimensionType" category="IsmConcentratedSurfaceRebar_category" displayLabel="Constrained Dimension" description="Defines which property is auto-calculated." />
        <ECProperty propertyName="StaggerLength" typeName="double" displayLabel="Stagger Length" category="IsmConcentratedSurfaceRebar_category" kindOfQuantity="AECU:LENGTH" description="The length of the bar that alternate bars are staggered by." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmAreaSurfaceRebar_category" displayLabel="Area Surface Rebar" priority="170" />
    <ECEntityClass typeName="IsmAreaSurfaceRebar" modifier="Sealed" displayLabel="Area Surface Rebar">
        <BaseClass>IsmSurfaceRebar</BaseClass>
        <ECStructProperty propertyName="LayoutBoundary" typeName="IsmPrimitiveGeometry" displayLabel="Layout Boundary" category="IsmAreaSurfaceRebar_category" description="The planar boundary of the region filled with bars." />
        <ECProperty propertyName="ConsiderMemberOpenings" typeName="boolean" displayLabel="Consider Member Openings" category="IsmAreaSurfaceRebar_category" description="Should rebars be placed within openings?" />
        <ECProperty propertyName="EndAndSideCover" typeName="double" displayLabel="End and Side Cover" category="IsmAreaSurfaceRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="AutoBarCount" typeName="int" displayLabel="Bar Count" category="Calculated_category" description="Auto-calculated total bar count." />
        <ECProperty propertyName="AutoGroupBarWeight" typeName="double" displayLabel="Group Bar Weight" category="Calculated_category" kindOfQuantity="AECU:WEIGHT" description="Auto-calculated total group bar weight." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmGrid_category" displayLabel="Grid" priority="190" />
    <ECEntityClass typeName="IsmGrid" modifier="Abstract" displayLabel="Grid" >
        <BaseClass>bis:SpatialLocationElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
        <ECProperty propertyName="RAxis" typeName="Point3d" displayLabel="R-Axis" category="IsmGrid_category" description="The unit vector orientation of the grid R-Axis." />
        <ECProperty propertyName="SAxis" typeName="Point3d" displayLabel="S-Axis" category="IsmGrid_category" description="The unit vector orientation of the grid S-Axis." />
        <ECProperty propertyName="Location" typeName="Point3d" displayLabel="Origin" category="IsmGrid_category" kindOfQuantity="AECU:LENGTH" description="The origin point for the grid in global coordinates." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmCartesianGrid" modifier="Sealed" displayLabel="Cartesian Grid">
        <BaseClass>IsmGrid</BaseClass>
    </ECEntityClass>

    <PropertyCategory typeName="IsmGridLine_category" displayLabel="Grid Line" priority="190" />
    <ECEntityClass typeName="IsmGridLine" modifier="Abstract" displayLabel="Grid Line" >
        <BaseClass>bis:SpatialLocationElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="IsMajor" typeName="boolean" displayLabel="Is Major" category="IsmGridLine_category" description="Is this grid line a major grid line?" />
        <ECProperty propertyName="StartBubble" typeName="boolean" displayLabel="Start Bubble" category="IsmGridLine_category" description="Is start bubble displayed?" />
        <ECProperty propertyName="StartBubbleOffset" typeName="double" displayLabel="Start Bubble Offset" category="IsmGridLine_category" kindOfQuantity="AECU:LENGTH" description="The offset distance of the start bubble from the grid line start point." />
        <ECProperty propertyName="EndBubble" typeName="boolean" displayLabel="End Bubble" category="IsmGridLine_category" description="Is end bubble displayed?" />
        <ECProperty propertyName="EndBubbleOffset" typeName="double" displayLabel="End Bubble Offset" category="IsmGridLine_category" kindOfQuantity="AECU:LENGTH" description="The offset distance of the end bubble from the grid line end point." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmCartesianGridLine_category" displayLabel="Cartesian Grid Line" priority="180" />
    <ECEntityClass typeName="IsmCartesianGridLine" modifier="Sealed" displayLabel="Cartesian Grid Line">
        <BaseClass>IsmGridLine</BaseClass>
        <ECProperty propertyName="Coordinate" typeName="double" category="IsmCartesianGridLine_category" kindOfQuantity="AECU:LENGTH" description="The coordinate value that this is constant along this grid line." />
        <ECProperty propertyName="GridLineKind" typeName="IsmCartesianGridLineKind" displayLabel="Grid Line Kind" category="IsmCartesianGridLine_category" description="The kind of grid line that this is." />
        <ECProperty propertyName="MaximumExtent" typeName="double" displayLabel="Maximum Extent" category="IsmCartesianGridLine_category" kindOfQuantity="AECU:LENGTH" description="The maximum coordinate value in the otheR-Axis direction." />
        <ECProperty propertyName="MinimumExtent" typeName="double" displayLabel="Minimum Extent" category="IsmCartesianGridLine_category" kindOfQuantity="AECU:LENGTH" description="The minimum coordinate value in the otheR-Axis direction." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmParallelRebar_category" displayLabel="Parallel Rebar" priority="180" />
    <ECEntityClass typeName="IsmParallelRebar" modifier="Abstract" displayLabel="Parallel Rebar">
        <BaseClass>IsmRebar</BaseClass>
        <ECStructProperty propertyName="LayoutPath" typeName="IsmPrimitiveGeometry" displayLabel="Layout Path" category="IsmParallelRebar_category" />
        <ECProperty propertyName="TAxis" typeName="Point3d" displayLabel="T-Axis" category="IsmParallelRebar_category" description="Unit vector specifying the direction of the layout T-Axis." />
        <ECProperty propertyName="AutoBarCount" typeName="int" displayLabel="Bar Count" category="Calculated_category" description="Auto-calculated total bar count." />
        <ECProperty propertyName="AutoLayoutLength" typeName="double" displayLabel="Layout Length" category="Calculated_category" kindOfQuantity="AECU:LENGTH" description="Auto-calculated bar layout path length." />
        <ECProperty propertyName="AutoDetailedLength" typeName="double" displayLabel="Detailed Length" category="Calculated_category" kindOfQuantity="AECU:LENGTH" description="Auto-calculated detailed bar length (including hooks)." />
        <ECProperty propertyName="AutoGroupBarWeight" typeName="double" displayLabel="Group Bar Weight" category="Calculated_category" kindOfQuantity="AECU:WEIGHT" description="Auto-calculated total group bar weight." />
        <ECArrayProperty propertyName="StartHookDirections" typeName="double" displayLabel="Start Hook Directions" category="IsmParallelRebar_category" kindOfQuantity="AECU:ANGLE" description="The angle/orientation of the Start Hook." />
        <ECArrayProperty propertyName="EndHookDirections" typeName="double" displayLabel="End Hook Directions" category="IsmParallelRebar_category" kindOfQuantity="AECU:ANGLE" description="The angle/orientation of the End Hook." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmCircleParallelRebar_category" displayLabel="Circle Parallel Rebar" priority="170" />
    <ECEntityClass typeName="IsmCircleParallelRebar" modifier="Sealed" displayLabel="Circle Parallel Rebar">
        <BaseClass>IsmParallelRebar</BaseClass>
        <ECProperty propertyName="BarCount" typeName="int" displayLabel="Bar Count" category="IsmCircleParallelRebar_category" description="Total number of bars." />
        <ECProperty propertyName="Diameter" typeName="double" category="IsmCircleParallelRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The diameter of the circle through the bar centers." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmPerpendicularRebar_category" displayLabel="Perpendicular Rebar" priority="180" />
    <ECEntityClass typeName="IsmPerpendicularRebar" modifier="Abstract" displayLabel="Perpendicular Rebar">
        <BaseClass>IsmRebar</BaseClass>
        <ECProperty propertyName="SAxis" typeName="Point3d" displayLabel="S-Axis" category="IsmPerpendicularRebar_category" description="The unit vector defining the S-Axis of the rebar layout at the Layout Path start point." />
        <ECProperty propertyName="TAxis" typeName="Point3d" displayLabel="T-Axis" category="IsmPerpendicularRebar_category" description="The unit vector defining the T-Axis of the rebar layout at the Layout Path start point." />
        <ECStructProperty propertyName="LayoutPath" typeName="IsmPrimitiveGeometry" displayLabel="Layout Path" category="IsmPerpendicularRebar_category" description="The path that defines the reinforced zone, and along which the bars are laid out." />
        <ECProperty propertyName="AutoBarCount" typeName="int" displayLabel="Bar Count" category="Calculated_category" description="Auto-calculated total bar count." />
        <ECProperty propertyName="AutoLayoutLength" typeName="double" displayLabel="Layout Length" category="Calculated_category" kindOfQuantity="AECU:LENGTH" description="Auto-calculated detailed bar length (including hooks)." />
        <ECProperty propertyName="AutoDetailedLength" typeName="double" displayLabel="Detailed Length" category="Calculated_category" kindOfQuantity="AECU:LENGTH" description="Auto-calculated detailed bar length (including hooks)." />
        <ECProperty propertyName="AutoGroupBarWeight" typeName="double" displayLabel="Group Bar Weight" category="Calculated_category" kindOfQuantity="AECU:WEIGHT" description="Auto-calculated total group bar weight." />
        <ECProperty propertyName="StartHookDirection" typeName="double" displayLabel="Start Hook Direction" category="IsmPerpendicularRebar_category" kindOfQuantity="AECU:ANGLE" description="The angle/orientation Start Hook." />
        <ECProperty propertyName="Spacing" typeName="double" category="IsmPerpendicularRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The nominal ('design') spacing between the bars along the Layout Path." />
        <ECProperty propertyName="EndHookDirection" typeName="double" displayLabel="End Hook Direction" category="IsmPerpendicularRebar_category" kindOfQuantity="AECU:ANGLE" description="The angle/orientation of the End Hook." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmCircleTieRebar_category" displayLabel="Circle Tie Rebar" priority="170" />
    <ECEntityClass typeName="IsmCircleTieRebar" modifier="None" displayLabel="Circle Tie Rebar">
        <BaseClass>IsmPerpendicularRebar</BaseClass>
        <ECProperty propertyName="Diameter" typeName="double" category="IsmCircleTieRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The diameter of the circle." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmCircularGridLine_category" displayLabel="Circular Grid Line" priority="180" />
    <ECEntityClass typeName="IsmCircularGridLine" modifier="None" displayLabel="Circular Grid Line">
        <BaseClass>IsmGridLine</BaseClass>
        <ECProperty propertyName="Radius" typeName="double" category="IsmCircularGridLine_category" kindOfQuantity="AECU:LENGTH" description="The distance from the grid arc to Origin." />
        <ECProperty propertyName="MinimumAngle" typeName="double" displayLabel="Minimum Angle" category="IsmCircularGridLine_category" kindOfQuantity="AECU:ANGLE" description="Starting angle of the grid arc." />
        <ECProperty propertyName="MaximumAngle" typeName="double" displayLabel="Maximum Angle" category="IsmCircularGridLine_category" kindOfQuantity="AECU:ANGLE" description="Angular distance of the grid arc." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmCompositeDeck" modifier="None" displayLabel="Composite Deck">
        <BaseClass>IsmMaterial</BaseClass>
    </ECEntityClass>

    <ECEnumeration typeName="CompressiveStrengthTest" backingTypeName="int" isStrict="true" description="Compressive Strength Test.">
        <ECEnumerator value="10" name="BritishStandardsCube" displayLabel="British Standards Cube" />
        <ECEnumerator value="20" name="StandardCylinder" displayLabel="Standard Cylinder" />
    </ECEnumeration>

    <ECEnumeration typeName="MaterialPropertyTestMethod" backingTypeName="int" isStrict="true" description="Material Property Test Method.">
        <ECEnumerator value="10" name="PerCode" displayLabel="Per Code" />
        <ECEnumerator value="20" name="Specified" />
    </ECEnumeration>

    <ECEntityClass typeName="IsmConcrete" displayLabel="Concrete" modifier="Sealed">
        <BaseClass>IsmMaterial</BaseClass>
        <ECProperty propertyName="CompressiveStrength" typeName="double" displayLabel="Compressive Strength" kindOfQuantity="AECU:PRESSURE" description="Maximum stress taken by a material or structural element before undergoing crushing failure." />
        <ECProperty propertyName="CompressiveStrengthTest" typeName="CompressiveStrengthTest" displayLabel="Compressive Strength Test" description="Test type for measuring Compressive Strength value." />
        <ECProperty propertyName="ElasticModulusCalc" typeName="MaterialPropertyTestMethod" displayLabel="Elastic Modulus Calculation" description="The type of calc to use to determine the elastic modulus." />
        <ECProperty propertyName="FirstLoadCompressiveStrength" typeName="double" displayLabel="First Load Compressive Strength" kindOfQuantity="AECU:PRESSURE" description="Compressive strength at first load." />
        <ECProperty propertyName="FirstLoadSpecifiedElasticModulus" typeName="double" displayLabel="First Load Specified Elastic Modulus" kindOfQuantity="AECU:PRESSURE" description="Specified elastic modulus at first load." />
        <ECProperty propertyName="FirstLoadSpecifiedTensileStrength" typeName="double" displayLabel="First Load Specified Tensile Strength" kindOfQuantity="AECU:PRESSURE" description="Specified tensile strength at first load." />
        <ECProperty propertyName="PoissonsRatio" typeName="double" displayLabel="Poisson's Ratio" description="The deformation (expansion or contraction) of a material in directions perpendicular to the specific direction of loading." />
        <ECProperty propertyName="SpecifiedElasticModulus" typeName="double" displayLabel="Specified Elastic Modulus" kindOfQuantity="AECU:PRESSURE" description="User-specified elastic modulus." />
        <ECProperty propertyName="SpecifiedTensileStrength" typeName="double" displayLabel="Specified Tensile Strength" kindOfQuantity="AECU:PRESSURE" description="User-specified tensile strength." />
        <ECProperty propertyName="TensileStrengthCalc" typeName="MaterialPropertyTestMethod" displayLabel="Tensile Strength Calculation" />
        <ECProperty propertyName="ThermalExpansionCoefficient" typeName="double" displayLabel="Thermal Expansion Coefficient" kindOfQuantity="AECU:THERMAL_EXPANSION_COEFFICIENT" description="Expansion or contraction of a solid due to change in temperature." />
        <ECProperty propertyName="UnitMass" typeName="double" displayLabel="Unit Mass" kindOfQuantity="AECU:DENSITY" />
        <ECProperty propertyName="UnitMassForLoads" typeName="double" displayLabel="Unit Mass for Loads" kindOfQuantity="AECU:DENSITY" description="Unit mass of steel for use in calculating loads." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmCompositeDeck_Concrete" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="false">
            <Class class="IsmCompositeDeck" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmConcrete" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Composite decks</SourceDisplayLabel>
                <TargetDisplayLabel>Concrete</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmSteelDeck" modifier="Abstract" displayLabel="Steel Deck">
        <BaseClass>IsmMaterial</BaseClass>
        <ECProperty propertyName="Thickness" typeName="double" kindOfQuantity="AECU:LENGTH_SHORT" description="The steel sheet material thickness." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmCompositeDeck_SteelDeck" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="false">
            <Class class="IsmCompositeDeck" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmSteelDeck" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Composite decks</SourceDisplayLabel>
                <TargetDisplayLabel>Steel deck</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <PropertyCategory typeName="IsmLoad_category" displayLabel="Load" priority="190" />
    <ECEntityClass typeName="IsmLoad" modifier="Abstract" displayLabel="Load">
        <BaseClass>bis:SpatialLocationElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
        <ECProperty propertyName="IsReaction" typeName="boolean" displayLabel="Is Reaction" category="IsmLoad_category" description="Is this a Reaction Load?" />
    </ECEntityClass>

    <ECEntityClass typeName="IsmMemberLoad" modifier="Abstract" displayLabel="Member Load">
        <BaseClass>IsmLoad</BaseClass>
    </ECEntityClass>

    <PropertyCategory typeName="IsmForceMemberLoad_category" displayLabel="Force Member Load" priority="180" />
    <ECEntityClass typeName="IsmForceMemberLoad" modifier="Abstract" displayLabel="Force Member Load">
        <BaseClass>IsmLoad</BaseClass>
        <ECProperty propertyName="UseProjectedScale" typeName="boolean" displayLabel="Use Projected Scale" category="IsmForceMemberLoad_category" description="Should the force load be scaled?" />
    </ECEntityClass>

    <PropertyCategory typeName="IsmCurveForceMemberLoad_category" displayLabel="Curve Force Member Load" priority="170" />
    <ECEntityClass typeName="IsmCurveForceMemberLoad" modifier="Sealed" displayLabel="Curve Force Member Load">
        <BaseClass>IsmForceMemberLoad</BaseClass>
        <ECProperty propertyName="Force0" typeName="Point3d" displayLabel="Force #0" category="IsmCurveForceMemberLoad_category" kindOfQuantity="AECU:LINEAR_FORCE" description="The force vector per unit length at the start of Location." />
        <ECProperty propertyName="Force1" typeName="Point3d" displayLabel="Force #1" category="IsmCurveForceMemberLoad_category" kindOfQuantity="AECU:LINEAR_FORCE" description="The force vector per unit length at the end of Location." />
        <ECProperty propertyName="Moment0" typeName="Point3d" displayLabel="Moment #0" category="IsmCurveForceMemberLoad_category" kindOfQuantity="AECU:LINEAR_MOMENT" description="The moment vector per unit length at the start of Location." />
        <ECProperty propertyName="Moment1" typeName="Point3d" displayLabel="Moment #1" category="IsmCurveForceMemberLoad_category" kindOfQuantity="AECU:LINEAR_MOMENT" description="The moment vector per unit length at the end of Location." />
        <ECStructProperty propertyName="Location" typeName="IsmPrimitiveGeometry" category="IsmCurveForceMemberLoad_category" description="The location of the applied Load." />
    </ECEntityClass>

    <ECEnumeration typeName="IsmCurveMemberPlacementPoint" backingTypeName="int" isStrict="true" description="Placement Point.">
        <ECEnumerator value="1" name="LeftBottom" displayLabel="Left Bottom" />
        <ECEnumerator value="2" name="MiddleBottom" displayLabel="Middle Bottom" />
        <ECEnumerator value="3" name="RightBottom" displayLabel="Right Bottom" />
        <ECEnumerator value="4" name="LeftMiddle" displayLabel="Left Middle" />
        <ECEnumerator value="5" name="MiddleMiddle" displayLabel="Middle Middle" />
        <ECEnumerator value="6" name="RightMiddle" displayLabel="Right Middle" />
        <ECEnumerator value="7" name="LeftTop" displayLabel="Left Top" />
        <ECEnumerator value="8" name="MiddleTop" displayLabel="Middle Top" />
        <ECEnumerator value="9" name="RightTop" displayLabel="Right Top" />
        <ECEnumerator value="10" name="CentroidCentroid" displayLabel="Centroid Centroid" />
        <ECEnumerator value="11" name="CentroidBottom" displayLabel="Centroid Bottom" />
        <ECEnumerator value="12" name="LeftCentroid" displayLabel="Left Centroid" />
        <ECEnumerator value="13" name="RightCentroid" displayLabel="Right Centroid" />
        <ECEnumerator value="14" name="CentroidTop" displayLabel="Centroid Top" />
        <ECEnumerator value="15" name="ShearCenter" displayLabel="Shear Center" />
        <ECEnumerator value="16" name="ShearBottom" displayLabel="Shear Bottom" />
        <ECEnumerator value="17" name="LeftShear" displayLabel="Left Shear" />
        <ECEnumerator value="18" name="RightShear" displayLabel="Right Shear" />
        <ECEnumerator value="19" name="ShearTop" displayLabel="Shear Top" />
    </ECEnumeration>

    <ECEnumeration typeName="IsmCurveMemberSystemKind" backingTypeName="int" isStrict="true" description="System Kind.">
        <ECEnumerator value="100" name="ConcreteUnspecified" displayLabel="Concrete Unspecified" />
        <ECEnumerator value="200" name="ConcreteCastinPlace" displayLabel="Concrete Cast in Place" />
        <ECEnumerator value="300" name="ConcreteCastinPlacePosttensioned" displayLabel="Concrete Cast in Place Post-tensioned" />
        <ECEnumerator value="400" name="ConcreteCastinPlaceReinforced" displayLabel="Concrete Cast in Place Reinforced" />
        <ECEnumerator value="500" name="ConcretePrecast" displayLabel="Concrete Precast" />
        <ECEnumerator value="600" name="ConcretePrecastPostTensioned" displayLabel="Concrete Precast Post-tensioned" />
        <ECEnumerator value="700" name="ConcretePrecastPreTensioned" displayLabel="Concrete Precast Pre-tensioned" />
        <ECEnumerator value="800" name="ConcretePrecastReinforced" displayLabel="Concrete Precast Reinforced" />
        <ECEnumerator value="900" name="MasonryUnspecified" displayLabel="Masonry Unspecified" />
        <ECEnumerator value="1300" name="SteelUnspecified" displayLabel="Steel Unspecified" />
        <ECEnumerator value="1400" name="SteelBuiltUp" displayLabel="Steel Built Up" />
        <ECEnumerator value="1500" name="SteelCable" displayLabel="Steel Cable" />
        <ECEnumerator value="1600" name="SteelCastellated" displayLabel="Steel Castellated" />
        <ECEnumerator value="1700" name="SteelCellular" displayLabel="Steel Cellular" />
        <ECEnumerator value="1750" name="SteelColdFormed" displayLabel="Steel Cold Formed" />
        <ECEnumerator value="1800" name="SteelJoist" displayLabel="Steel Joist" />
        <ECEnumerator value="1900" name="SteelRod" displayLabel="Steel Rod" />
        <ECEnumerator value="2000" name="SteelRolled" displayLabel="Steel Rolled" />
        <ECEnumerator value="2100" name="SteelTruss" displayLabel="Steel Truss" />
        <ECEnumerator value="2200" name="TimberUnspecified" displayLabel="Timber Unspecified" />
    </ECEnumeration>

    <ECEnumeration typeName="IsmCurveMemberUse" backingTypeName="int" isStrict="true" description="Curve Member Use.">
        <ECEnumerator value="100" name="Beam" />
        <ECEnumerator value="200" name="Column" />
        <ECEnumerator value="300" name="HorizontalBrace" displayLabel="Horizontal Brace" />
        <ECEnumerator value="400" name="StripFooting" displayLabel="Strip Footing" />
        <ECEnumerator value="500" name="Pile" />
        <ECEnumerator value="600" name="VerticalBrace" displayLabel="Vertical Brace" />
        <ECEnumerator value="450" name="Pedestal" />
    </ECEnumeration>

    <ECEnumeration typeName="IsmMemberLoadResistance" backingTypeName="int" isStrict="true" description="Load Resistance.">
        <ECEnumerator value="100" name="GravityOnly" displayLabel="Gravity Only" />
        <ECEnumerator value="200" name="GravityAndLateral" displayLabel="Gravity and Lateral" />
        <ECEnumerator value="300" name="LateralOnly" displayLabel="Lateral Only" />
        <ECEnumerator value="400" name="None" />
    </ECEnumeration>

    <ECEnumeration typeName="IsmCartesianGridLineKind" backingTypeName="int" isStrict="true" description="Ism Grid Line Kind.">
        <ECEnumerator value="20" name="R" />
        <ECEnumerator value="40" name="S" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmMember_category" displayLabel="Member" priority="190" />
    <ECEntityClass typeName="IsmMember" displayLabel="Ism Member" modifier="Abstract" >
        <BaseClass>bis:PhysicalElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
        <ECProperty propertyName="LoadResistance" typeName="IsmMemberLoadResistance" displayLabel="Load Resistance" category="IsmMember_category" />
    </ECEntityClass>

    <ECEntityClass typeName="IsmSpanningMember" displayLabel="Ism Spanning Member" modifier="Abstract">
        <BaseClass>IsmMember</BaseClass>
    </ECEntityClass>

    <ECEnumeration typeName="ReactionLimitState" backingTypeName="int" isStrict="true" description="Ism Grid Line Kind.">
        <ECEnumerator value="10" name="Service" />
        <ECEnumerator value="20" name="Ultimate" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmCurveMember_category" displayLabel="Curve Member" priority="180" />
    <PropertyCategory typeName="IsmCurveMember_Reactions_category" displayLabel="Curve Member Reactions" priority="150" />
    <ECEntityClass typeName="IsmCurveMember" displayLabel="Curve Member" modifier="Sealed">
        <BaseClass>IsmSpanningMember</BaseClass>
        <ECStructProperty propertyName="Location" typeName="IsmPrimitiveGeometry" category="IsmCurveMember_category" description="The location of this Member line in space." />
        <ECProperty propertyName="AxialBehavior" typeName="AxialBehavior" displayLabel="Axial Behavior" category="IsmCurveMember_category" description="A particular axial structural behavior." />
        <ECProperty propertyName="Camber" typeName="double" kindOfQuantity="AECU:LENGTH_SHORT" category="IsmCurveMember_category" description="Height of camber." />
        <ECProperty propertyName="MirrorShapeAboutYAxis" typeName="boolean" displayLabel="Mirror Shape about Y-Axis" category="IsmCurveMember_category" description="Is Shape mirrored about Y-Axis?" />
        <ECProperty propertyName="Orientation" typeName="Point3d" category="IsmCurveMember_category" description="Unit vector defining the up-vector of a Section at the start of this Member." />
        <ECProperty propertyName="PlacementPoint" typeName="IsmCurveMemberPlacementPoint" displayLabel="Placement Point" category="IsmCurveMember_category" description="A Section point that is intersected by Member Location." />
        <ECProperty propertyName="SystemKind" typeName="IsmCurveMemberSystemKind" displayLabel="System Kind" category="IsmCurveMember_category" description="A more detailed specification of Member Material." />
        <ECArrayProperty propertyName="SteelConnectionTagAtStart" typeName="string" displayLabel="Steel Connection Tag at Start" category="IsmCurveMember_category" description="Steel connection detailing information that is relevant at the start of this Member." />
        <ECArrayProperty propertyName="SteelConnectionTagAtEnd" typeName="string" displayLabel="Steel Connection Tag at End" category="IsmCurveMember_category" description="Steel connection detailing information that is relevant at the end of this Member." />
        <ECProperty propertyName="Use" typeName="IsmCurveMemberUse" category="IsmCurveMember_category" />
        <ECProperty propertyName="RAxisTranslationFixity1" typeName="boolean" displayLabel="R-Axis Translation Fixity #1" description="Is translation fully restrained in the R-Axis direction at the end 1?" />
        <ECProperty propertyName="SAxisTranslationFixity1" typeName="boolean" displayLabel="S-Axis Translation Fixity #1" description="Is translation fully restrained in the S-Axis direction at the end 1?" />
        <ECProperty propertyName="TAxisTranslationFixity1" typeName="boolean" displayLabel="T-Axis Translation Fixity #1" description="Is translation fully restrained in the T-Axis direction at the end 1?" />
        <ECProperty propertyName="RAxisRotationFixity1" typeName="boolean" displayLabel="R-Axis Rotation Fixity #1" description="Is rotation fully restrained about the R-Axis at the end 1?" />
        <ECProperty propertyName="SAxisRotationFixity1" typeName="boolean" displayLabel="S-Axis Rotation Fixity #1" description="Is rotation fully restrained about the S-Axis at the end 1?" />
        <ECProperty propertyName="TAxisRotationFixity1" typeName="boolean" displayLabel="T-Axis Rotation Fixity #1" description="Is rotation fully restrained about the T-Axis at the end 1?" />
        <ECProperty propertyName="RAxisTranslationFixity2" typeName="boolean" displayLabel="R-Axis Translation Fixity #2" description="Is translation fully restrained in the R-Axis direction at the end 2?" />
        <ECProperty propertyName="SAxisTranslationFixity2" typeName="boolean" displayLabel="S-Axis Translation Fixity #2" description="Is translation fully restrained in the S-Axis direction at the end 2?" />
        <ECProperty propertyName="TAxisTranslationFixity2" typeName="boolean" displayLabel="T-Axis Translation Fixity #2" description="Is translation fully restrained in the T-Axis direction at the end 2?" />
        <ECProperty propertyName="RAxisRotationFixity2" typeName="boolean" displayLabel="R-Axis Rotation Fixity #2" description="Is rotation fully restrained about the R-Axis at the end 2?" />
        <ECProperty propertyName="SAxisRotationFixity2" typeName="boolean" displayLabel="S-Axis Rotation Fixity #2" description="Is rotation fully restrained about the S-Axis at the end 2?" />
        <ECProperty propertyName="TAxisRotationFixity2" typeName="boolean" displayLabel="T-Axis Rotation Fixity #2" description="Is rotation fully restrained about the T-Axis at the end 2?" />
        <ECProperty propertyName="ReactionForceAtStart" typeName="double" displayLabel="Reaction Force at Start" category="IsmCurveMember_Reactions_category" kindOfQuantity="AECU:FORCE" description="The reaction force at the start of this member intended to be shown in structural drawings." />
        <ECProperty propertyName="ReactionForceAtEnd" typeName="double" displayLabel="Reaction Force at End" category="IsmCurveMember_Reactions_category" kindOfQuantity="AECU:FORCE" description="The reaction force at the end of this member intended to be shown in structural drawings." />
        <ECProperty propertyName="ReactionMomentAtStart" typeName="double" displayLabel="Reaction Moment at Start" category="IsmCurveMember_Reactions_category" kindOfQuantity="AECU:MOMENT" description="The reaction moment at the start of this member intended to be shown in structural drawings." />
        <ECProperty propertyName="ReactionMomentAtEnd" typeName="double" displayLabel="Reaction Moment at End" category="IsmCurveMember_Reactions_category" kindOfQuantity="AECU:MOMENT" description="The reaction moment at the end of this member intended to be shown in structural drawings." />
        <ECProperty propertyName="ReactionLimitState" typeName="ReactionLimitState" displayLabel="Reaction Limit State" category="IsmCurveMember_Reactions_category" description="The limit state that Reaction Force At Start, Reaction Force At End, Reaction Moment At Start and Reaction Moment At End values are calculated for." />
        <ECProperty propertyName="AutoLength" typeName="double" displayLabel="Length" category="Calculated_category" kindOfQuantity="AECU:LENGTH" />
        <ECProperty propertyName="AutoVolume" typeName="double" displayLabel="Volume" category="Calculated_category" kindOfQuantity="AECU:VOLUME" />
        <ECProperty propertyName="AutoWeight" typeName="double" displayLabel="Weight" category="Calculated_category" kindOfQuantity="AECU:WEIGHT" />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmCurveMember_Material" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmCurveMember" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmMaterial" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Curve members</SourceDisplayLabel>
                <TargetDisplayLabel>Material</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmCurveMember_Section" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmCurveMember" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmSection" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Members</SourceDisplayLabel>
                <TargetDisplayLabel>Section</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmSupportMember" modifier="Abstract">
        <BaseClass>IsmMember</BaseClass>
    </ECEntityClass>

    <KindOfQuantity typeName="LINEAR_SPRING_CONSTANT_KN"
                  displayLabel="Linear Spring Constant (kN/m²)"
                  persistenceUnit="u:LINEAR_SPRING_CONSTANT_N_PER_SQ_M"
                  relativeError="0.001"
                  presentationUnits="f:DefaultRealU(4)[u:LINEAR_SPRING_CONSTANT_KN_PER_SQ_M];f:DefaultRealU(4)[u:LINEAR_SPRING_CONSTANT_N_PER_SQ_M];f:DefaultRealU(4)[u:LINEAR_SPRING_CONSTANT_KPF_PER_SQ_FT]"/>

    <PropertyCategory typeName="IsmCurveSupport_category" displayLabel="Curve Support" priority="180" />
    <ECEntityClass typeName="IsmCurveSupport" displayLabel="Curve Support" modifier="Sealed">
        <BaseClass>IsmSupportMember</BaseClass>
        <ECStructProperty propertyName="Location" typeName="IsmPrimitiveGeometry" category="IsmCurveSupport_category" description="The location of this member line in space." />
        <ECProperty propertyName="TAxis" typeName="Point3d" displayLabel="T-Axis" category="IsmCurveSupport_category" description="The unit vector orientation of the member T-Axis." />
        <ECProperty propertyName="TAxisTranslationStiffness" typeName="double" displayLabel="T-Axis Translation Stiffness" category="IsmCurveSupport_category" kindOfQuantity="LINEAR_SPRING_CONSTANT_KN" description="Translation spring stiffness (per unit length) in the T-Axis direction." />
        <ECProperty propertyName="RAxisRotationStiffness" typeName="double" displayLabel="R-Axis Rotation Stiffness" category="IsmCurveSupport_category" kindOfQuantity="AECU:ROTATIONAL_SPRING_CONSTANT" description="Rotation spring stiffness (per unit length) about the R-Axis." />
        <ECProperty propertyName="RAxisTranslationDirection" typeName="IsmFixityDirection" displayLabel="R-Axis Translation Direction" category="IsmCurveSupport_category" description="Can this R-Axis translation restraint resist compression, tension or both?" />
        <ECProperty propertyName="RAxisTranslationStiffness" typeName="double" displayLabel="R-Axis Translation Stiffness" category="IsmCurveSupport_category" kindOfQuantity="LINEAR_SPRING_CONSTANT_KN" description="Translation spring stiffness (per unit length) in the R-Axis direction." />
        <ECProperty propertyName="SAxisTranslationDirection" typeName="IsmFixityDirection" displayLabel="S-Axis Translation Direction" category="IsmCurveSupport_category" description="Can this S-Axis translation restraint resist compression, tension or both?" />
        <ECProperty propertyName="SAxisTranslationStiffness" typeName="double" displayLabel="S-Axis Translation Stiffness" category="IsmCurveSupport_category" kindOfQuantity="LINEAR_SPRING_CONSTANT_KN" description="Translation spring stiffness (per unit length) in the S-Axis direction." />
        <ECProperty propertyName="TAxisTranslationDirection" typeName="IsmFixityDirection" displayLabel="T-Axis Translation Direction" category="IsmCurveSupport_category" description="Can this T-Axis translation restraint resist compression, tension or both?" />
    </ECEntityClass>

    <ECEntityClass typeName="IsmCustomData" modifier="Sealed" displayLabel="Custom Data">
        <BaseClass>bis:DefinitionElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>

        <ECCustomAttributes>
            <Deprecated xmlns="CoreCustomAttributes.01.00.03">
                <Description>IsmCustomData is not used by ISM and will be removed.</Description>
            </Deprecated>
        </ECCustomAttributes>
        
        <ECProperty propertyName="ApplicationId" typeName="string" displayLabel="Application Id" description="Unique id for the application." />
        <ECProperty propertyName="DataId" typeName="string" displayLabel="Data Id" description="Identifying id for the set of data." />
        <ECProperty propertyName="ApplicationName" typeName="string" displayLabel="Application Name" />
        <ECProperty propertyName="DataName" typeName="string" displayLabel="Data Name" />
        <ECProperty propertyName="Data" typeName="string" description="Actual data that the Element defines." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmCustomGrid_category" displayLabel="Custom Grid" priority="180" />
    <ECEntityClass typeName="IsmCustomGrid" modifier="Sealed" displayLabel="Custom Grid">
        <BaseClass>IsmGrid</BaseClass>
        <ECArrayProperty propertyName="AxisGroups" typeName="string" displayLabel="Axis Groups" category="IsmCustomGrid_category" description="A list of custom grid axis group names." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmCustomGridLine_category" displayLabel="Custom Grid Line" priority="180" />
    <ECEntityClass typeName="IsmCustomGridLine" modifier="Sealed" displayLabel="Custom Grid Line">
        <BaseClass>IsmGridLine</BaseClass>
        <ECStructProperty propertyName="Location" typeName="IsmPrimitiveGeometry" category="IsmCustomGridLine_category" description="This grid line's location curve." />
        <ECProperty propertyName="AxisGroup" typeName="string" displayLabel="Axis Group" category="IsmCustomGridLine_category" description="The axis group that this grid line's belongs to." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmCustomParallelRebar_category" displayLabel="Custom Parallel Rebar" priority="170" />
    <ECEntityClass typeName="IsmCustomParallelRebar" modifier="Sealed" displayLabel="Custom Parallel Rebar">
        <BaseClass>IsmParallelRebar</BaseClass>
        <ECArrayProperty propertyName="BarPositions" typeName="Point2d" displayLabel="Bar Positions" category="IsmCustomParallelRebar_category" kindOfQuantity="AECU:LENGTH" description="The arrangement of bars in 2D space along the Layout Path." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmCustomPerpendicularRebar_category" displayLabel="Custom Perpendicular Rebar" priority="170" />
    <ECEntityClass typeName="IsmCustomPerpendicularRebar" modifier="Sealed" displayLabel="Custom Perpendicular Rebar">
        <BaseClass>IsmPerpendicularRebar</BaseClass>
        <ECStructProperty propertyName="BarShape" typeName="IsmPrimitiveGeometry" displayLabel="Bar Shape" category="IsmCustomPerpendicularRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The shape of the bar in x-y-z coordinates (ignoring hooks)." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmCustomSection" modifier="Sealed" displayLabel="Custom Section" >
        <BaseClass>IsmConstantSection</BaseClass>
    </ECEntityClass>

    <ECEntityClass typeName="IsmCustomSteelDeck" modifier="Sealed" displayLabel="Custom Steel Deck">
        <BaseClass>IsmSteelDeck</BaseClass>
        <ECStructProperty propertyName="Profile" typeName="IsmPrimitiveGeometry" displayLabel="Bar Shape" kindOfQuantity="AECU:LENGTH_SHORT" description="The 2D curve showing the profile/shape of the deck in an end-on view." />
        <ECProperty propertyName="OverlapWidth" typeName="double" displayLabel="Overlap Width" kindOfQuantity="AECU:LENGTH_SHORT" description="The horizontal distance by which one sheet overlaps the adjacent sheet." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmDiamondTieRebar_category" displayLabel="Diamond Tie Rebar" priority="170" />
    <ECEntityClass typeName="IsmDiamondTieRebar" modifier="Sealed" displayLabel="Diamond Tie Rebar" >
        <BaseClass>IsmPerpendicularRebar</BaseClass>
        <ECProperty propertyName="Depth" typeName="double" category="IsmDiamondTieRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The depth of the diamond, measured to center of bar along the T-Axis." />
        <ECProperty propertyName="Width" typeName="double" category="IsmDiamondTieRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The width of the diamond, measured to center of bar along the S-Axis." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmModelRule" modifier="Abstract" displayLabel="Model Rule" >
        <BaseClass>bis:DefinitionElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
    </ECEntityClass>

    <ECEntityClass typeName="IsmRebarLabelRule" displayLabel="Rebar Label Rule" modifier="Abstract" >
        <BaseClass>IsmModelRule</BaseClass>
        <ECProperty propertyName="DisplayLabelFormat" typeName="string" displayLabel="Display Label Format" description="Format that is used to define Rebar labels in 3d view." />
    </ECEntityClass>

    <ECEnumeration typeName="ConstrainedDimension" backingTypeName="int" isStrict="true" description="Constrained dimension.">
        <ECEnumerator value="10" name="BarSpacing" displayLabel="Bar Spacing" description="Spacing between bars in surface reinforcement group." />
        <ECEnumerator value="20" name="BarCount" displayLabel="Bar Count" description="Count of bars that form a single surface reinforcement group." />
        <ECEnumerator value="30" name="LayoutWidth" displayLabel="Layout Width" description="Whole width along bars are laid." />
    </ECEnumeration>

    <ECEnumeration typeName="UnitType" backingTypeName="int" isStrict="true" description="Unit used for displaying some specific phenomenon in a Rebar Label.">
        <ECEnumerator value="10" name="Millimeter" />
        <ECEnumerator value="20" name="Centimeter" />
        <ECEnumerator value="30" name="Meter" />
        <ECEnumerator value="40" name="Inch" />
        <ECEnumerator value="50" name="Foot" />
        <ECEnumerator value="60" name="Yard" />
    </ECEnumeration>

    <ECEntityClass typeName="IsmConcentratedSurfaceRebarLabelRule" modifier="Sealed" displayLabel="Concentrated Surface Rebar Label Rule">
        <BaseClass>IsmRebarLabelRule</BaseClass>
        <ECProperty propertyName="ConstrainedDimension" typeName="ConstrainedDimensionType" displayLabel="Constrained Dimension" description="Auto-calculated dimension." />
        <ECProperty propertyName="LengthUnit" typeName="UnitType" displayLabel="Length Unit" description="Units in which Length is displayed." />
        <ECProperty propertyName="LengthDecimalPlace" typeName="int" displayLabel="Length Decimal Place" description="Number of decimal digits to round Length to." />
        <ECProperty propertyName="SpacingUnit" typeName="UnitType" displayLabel="Spacing Unit" description="Units in which Spacing is displayed." />
        <ECProperty propertyName="SpacingDecimalPlace" typeName="int" displayLabel="Spacing Decimal Place" description="Number of decimal digits to round Spacing to." />
        <ECProperty propertyName="WidthUnit" typeName="UnitType" displayLabel="Width Unit" description="Units in which Width is displayed." />
        <ECProperty propertyName="WidthDecimalPlace" typeName="int" displayLabel="Width Decimal Place" description="Number of decimal digits to round Width to." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmAreaSurfaceRebarLabelRule" modifier="Sealed" displayLabel="Area Surface Rebar Label Rule">
        <BaseClass>IsmRebarLabelRule</BaseClass>
        <ECProperty propertyName="SpacingUnit" typeName="UnitType" displayLabel="Spacing Unit" description="Units in which Spacing is displayed." />
        <ECProperty propertyName="SpacingDecimalPlace" typeName="int" displayLabel="Spacing Decimal Place" description="Number of decimal digits to round Spacing to." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmFeature_category" displayLabel="Feature" priority="190" />
    <ECEntityClass typeName="IsmFeature" modifier="Abstract" displayLabel="Feature">
        <BaseClass>bis:PhysicalElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="Priority" typeName="int" category="IsmFeature_category" description="The relative order of modification when multiple Features overlap." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmFeature_Member" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmFeature" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmSpanningMember" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Features</SourceDisplayLabel>
                <TargetDisplayLabel>Member</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEnumeration typeName="FeatureUse" backingTypeName="int" isStrict="true" description="Feature Use.">
        <ECEnumerator value="100" name="BasePlate" displayLabel="Base Plate" />
        <ECEnumerator value="200" name="Connector" displayLabel="Connector" />
        <ECEnumerator value="300" name="EndPlate" displayLabel="End Plate" />
        <ECEnumerator value="400" name="FlangeCover" displayLabel="Flange Cover" />
        <ECEnumerator value="500" name="GussetPlate" displayLabel="Gusset Plate" />
        <ECEnumerator value="600" name="Haunch" />
        <ECEnumerator value="700" name="OpeningReinforcement" displayLabel="Opening Reinforcement" />
        <ECEnumerator value="800" name="ShearTab" displayLabel="Shear Tab" />
        <ECEnumerator value="900" name="Splice" />
        <ECEnumerator value="1000" name="WebDoubler" displayLabel="Web Doubler" />
        <ECEnumerator value="1100" name="WebStiffener" displayLabel="Web Stiffener" />
        <ECEnumerator value="10000" name="Other" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmFeatureAddition_category" displayLabel="Feature Addition" priority="180" />
    <ECEntityClass typeName="IsmFeatureAddition" modifier="Sealed" displayLabel="Feature Addition">
        <BaseClass>IsmFeature</BaseClass>
        <ECStructProperty propertyName="Location" typeName="IsmArrayGeometry" category="IsmFeatureAddition_category" description="The volume that augments the Member." />
        <ECProperty propertyName="Use" typeName="FeatureUse" category="IsmFeatureAddition_category" description="The purpose of this addition." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmFeatureAddition_Material" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmFeatureAddition" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmMaterial" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Feature additions</SourceDisplayLabel>
                <TargetDisplayLabel>Material</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEnumeration typeName="SubtractionUse" backingTypeName="int" isStrict="true" description="Feature Use.">
        <ECEnumerator value="100" name="BoltHole" displayLabel="Bolt Hole" />
        <ECEnumerator value="200" name="Coping" />
        <ECEnumerator value="300" name="EndCut" displayLabel="End Cute" />
        <ECEnumerator value="400" name="Opening" />
        <ECEnumerator value="500" name="Recess" />
        <ECEnumerator value="700" name="ReducedSection" displayLabel="Reduced Section" />
        <ECEnumerator value="1000" name="Other" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmFeatureSubtraction_category" displayLabel="Feature Subtraction" priority="180" />
    <ECEntityClass typeName="IsmFeatureSubtraction" modifier="Sealed" displayLabel="Feature Subtraction">
        <BaseClass>IsmFeature</BaseClass>
        <ECStructProperty propertyName="Location" typeName="IsmArrayGeometry" category="IsmFeatureSubtraction_category" description="The volume that is subtracted from the Member and from all Feature Additions." />
        <ECProperty propertyName="Use" typeName="SubtractionUse" category="IsmFeatureSubtraction_category" description="The purpose of this subtraction." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmGridLine_Grid" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmGridLine" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmGrid" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Grid lines</SourceDisplayLabel>
                <TargetDisplayLabel>Grid</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <PropertyCategory typeName="IsmGridParallelRebar_category" displayLabel="Grid Parallel Rebar" priority="170" />
    <ECEntityClass typeName="IsmGridParallelRebar" modifier="Sealed" displayLabel="Grid Parallel Rebar">
        <BaseClass>IsmParallelRebar</BaseClass>
        <ECProperty propertyName="LayerCount" typeName="int" displayLabel="Layer Count" category="IsmGridParallelRebar_category" description="The number of layers (or rows)." />
        <ECProperty propertyName="BarsPerLayer" typeName="int" displayLabel="Bars Per Layer" category="IsmGridParallelRebar_category" description="The number of bars in each layer (or the number of columns)." />
        <ECProperty propertyName="Depth" typeName="double" category="IsmGridParallelRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Total (T-Axis) depth from bottom bar center to top bar center." />
        <ECProperty propertyName="Width" typeName="double" category="IsmGridParallelRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Total (S-Axis) width from left bar center to right bar center." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmLappedTopRectangleTieRebar_category" displayLabel="Lapped Top Rectangle Tie Rebar" priority="170" />
    <ECEntityClass typeName="IsmLappedTopRectangleTieRebar" modifier="Sealed" displayLabel="Lapped Top Rectangle Tie Rebar">
        <BaseClass>IsmPerpendicularRebar</BaseClass>
        <ECProperty propertyName="Depth" typeName="double" category="IsmLappedTopRectangleTieRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The depth of the rectangle, measured to center of bar along the T-Axis." />
        <ECProperty propertyName="Width" typeName="double" category="IsmLappedTopRectangleTieRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The width of the rectangle, measured to center of bar along the S-Axis." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmLayerParallelRebar_category" displayLabel="Layer Parallel Rebar" priority="170" />
    <ECEntityClass typeName="IsmLayerParallelRebar" modifier="Sealed" displayLabel="Layer Parallel Rebar">
        <BaseClass>IsmParallelRebar</BaseClass>
        <ECProperty propertyName="Width" typeName="double" category="IsmLayerParallelRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Width of the layout, from outer bar center to outer bar center." />
        <ECProperty propertyName="BarCount" typeName="int" displayLabel="Bar Count" category="IsmLayerParallelRebar_category" description="The total number of bars." />
    </ECEntityClass>

    <ECEnumeration typeName="LoadAdditionMethod" backingTypeName="int" isStrict="true" description="Load Addition Method.">
        <ECEnumerator value="100" name="Normal" />
        <ECEnumerator value="200" name="ABS" />
        <ECEnumerator value="300" name="SRSS" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmLoadCombination_category" displayLabel="Load Combination" priority="190" />
    <ECEntityClass typeName="IsmLoadCombination" modifier="Sealed" displayLabel="Load Combination">
        <BaseClass>IsmLoadContainer</BaseClass>
        <ECProperty propertyName="SRSSFactor" typeName="double" displayLabel="SRSS Factor" category="IsmLoadCombination_category" />
    </ECEntityClass>

    <PropertyCategory typeName="IsmFactoredLoadCase_category" displayLabel="Factored Load Case" priority="190" />
    <ECEntityClass typeName="IsmFactoredLoadCase" modifier="Sealed" displayLabel="Factored Load Case">
        <BaseClass>bis:InformationRecordElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="Factor" typeName="double" category="IsmFactoredLoadCase_category" description="Factor that the Load Case is multiplied by when considered in the full equation of the parent Load Combination." />
        <ECProperty propertyName="Type" typeName="LoadAdditionMethod" category="IsmFactoredLoadCase_category" description="Type of method that is used to apply referenced Load Case." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmFactoredLoadCombination_category" displayLabel="Factored Load Combination" priority="190" />
    <ECEntityClass typeName="IsmFactoredLoadCombination" modifier="Sealed" displayLabel="Factored Load Combination">
        <BaseClass>bis:InformationRecordElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="Factor" typeName="double" category="IsmFactoredLoadCombination_category" description="Factor that the Load Combination is multiplied by when considered in the full equation of the parent Load Combination." />
        <ECProperty propertyName="Type" typeName="LoadAdditionMethod" category="IsmFactoredLoadCombination_category" description="Type of method that is used to apply referenced Load Combination." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmLoadCombination_FactoredLoadCases" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmLoadCombination" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmFactoredLoadCase" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Load combination</SourceDisplayLabel>
                <TargetDisplayLabel>Factored load cases</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmLoadCombination_FactoredLoadCombinations" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmLoadCombination" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmFactoredLoadCombination" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Load combination</SourceDisplayLabel>
                <TargetDisplayLabel>Factored load combinations</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmFactoredLoadCase_LoadCase" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmFactoredLoadCase" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmLoadCase" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Factored load case</SourceDisplayLabel>
                <TargetDisplayLabel>Load cases</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmFactoredLoadCombination_LoadCombination" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmFactoredLoadCombination" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmLoadCombination" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Factored load combination</SourceDisplayLabel>
                <TargetDisplayLabel>Load combinations</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEnumeration typeName="LoadAnalysisCase" backingTypeName="int" isStrict="true" description="Load Analysis Case.">
        <ECEnumerator value="200" name="Static" displayLabel="Static" />
    </ECEnumeration>

    <ECEnumeration typeName="LoadCause" backingTypeName="int" isStrict="true" description="Load Cause.">
        <ECEnumerator value="50" name="Blast" />
        <ECEnumerator value="100" name="DeadUnspecified" displayLabel="Dead Unspecified" />
        <ECEnumerator value="110" name="DeadStructure" displayLabel="Dead Structure" />
        <ECEnumerator value="120" name="DeadSuperimposed" displayLabel="Dead Superimposed" />
        <ECEnumerator value="130" name="DeadConstruction" displayLabel="Dead Construction" />
        <ECEnumerator value="200" name="EarthPressureUnspecified" displayLabel="Earth Pressure Unspecified" />
        <ECEnumerator value="210" name="EarthPressureService" displayLabel="Earth Pressure Service" />
        <ECEnumerator value="220" name="EarthPressureUltimate" displayLabel="Earth Pressure Ultimate" />
        <ECEnumerator value="250" name="Equipment" />
        <ECEnumerator value="300" name="FloorUnspecified" displayLabel="Floor Unspecified" />
        <ECEnumerator value="310" name="FloorConstruction" displayLabel="Floor Construction" />
        <ECEnumerator value="320" name="FloorResidential" displayLabel="Floor Residential" />
        <ECEnumerator value="330" name="FloorOffice" displayLabel="Floor Office" />
        <ECEnumerator value="340" name="FloorAssembly" displayLabel="Floor Assembly" />
        <ECEnumerator value="350" name="FloorStorage" displayLabel="Floor Storage" />
        <ECEnumerator value="360" name="FloorRetail" displayLabel="Floor Retail" />
        <ECEnumerator value="400" name="FluidUnspecified" displayLabel="Fluid Unspecified" />
        <ECEnumerator value="410" name="FluidContained" displayLabel="Fluid Contained" />
        <ECEnumerator value="420" name="FluidUncontained" displayLabel="Fluid Uncontained" />
        <ECEnumerator value="500" name="GroundWaterPressure" displayLabel="Ground Water Pressure" />
        <ECEnumerator value="610" name="Hydrodynamic" />
        <ECEnumerator value="620" name="Hydrostatic" />
        <ECEnumerator value="700" name="Ice" />
        <ECEnumerator value="740" name="MechanicalVibration" displayLabel="Mechanical Vibration" />
        <ECEnumerator value="750" name="Notional" />
        <ECEnumerator value="800" name="ParkingUnspecified" displayLabel="Parking Unspecified" />
        <ECEnumerator value="810" name="ParkingLight" displayLabel="Parking Light" />
        <ECEnumerator value="820" name="ParkingHeavy" displayLabel="Parking Heavy" />
        <ECEnumerator value="910" name="PostTensioning" displayLabel="Post-tensioning" />
        <ECEnumerator value="920" name="PostTensioningRestraint" displayLabel="Post-tensioning Restraint" />
        <ECEnumerator value="1000" name="RoofUnspecified" displayLabel="Roof Unspecified" />
        <ECEnumerator value="1010" name="RoofAccess" displayLabel="Roof Access" />
        <ECEnumerator value="1020" name="RoofRain" displayLabel="Roof Rain" />
        <ECEnumerator value="1030" name="RoofSnowUnspecified" displayLabel="Roof Snow Unspecified" />
        <ECEnumerator value="1040" name="RoofSnowUniform" displayLabel="Roof Snow Uniform" />
        <ECEnumerator value="1050" name="RoofSnowDrift" displayLabel="Roof Snow Drift" />
        <ECEnumerator value="1100" name="SeismicUnspecified" displayLabel="Seismic Unspecified" />
        <ECEnumerator value="1110" name="SeismicService" displayLabel="Seismic Service" />
        <ECEnumerator value="1120" name="SeismicUltimate" displayLabel="Seismic Ultimate" />
        <ECEnumerator value="1200" name="Settlement" displayLabel="Settlement" />
        <ECEnumerator value="1300" name="Shrinkage" />
        <ECEnumerator value="1400" name="Thermal" />
        <ECEnumerator value="1450" name="TimeHistory" displayLabel="Time History" />
        <ECEnumerator value="1500" name="WindUnspecified" displayLabel="Wind Unspecified" />
        <ECEnumerator value="1510" name="WindService" displayLabel="Wind Service" />
        <ECEnumerator value="1520" name="WindUltimate" displayLabel="Wind Ultimate" />
        <ECEnumerator value="1600" name="SnowUnspecified" displayLabel="Snow Unspecified" />
        <ECEnumerator value="1610" name="SnowService" displayLabel="Snow Service" />
        <ECEnumerator value="1620" name="SnowUltimate" displayLabel="Snow Ultimate" />
        <ECEnumerator value="10000" name="Other" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmLoadCase_category" displayLabel="Load Case" priority="190" />
    <ECEntityClass typeName="IsmLoadCase" modifier="Sealed" displayLabel="Load Case">
        <BaseClass>IsmLoadContainer</BaseClass>
        <ECProperty propertyName="Description" typeName="string" category="IsmLoadCase_category" description="Load Case description text." />
        <ECProperty propertyName="AnalysisKind" typeName="LoadAnalysisCase" displayLabel="Analysis Kind" category="IsmLoadCase_category" description="The type of analysis require by this Load Case." />
        <ECProperty propertyName="IncludesSelfWeightLoads" typeName="boolean" displayLabel="Includes Self Weight Loads" category="IsmLoadCase_category" description="In addition to explicitly specified Loads, structure self-weight loads are considered in this Load Case." />
        <ECProperty propertyName="LoadCause" typeName="LoadCause" displayLabel="Load Cause" category="IsmLoadCase_category" description="The type of Load Case this is (to be used in determining Load Factors in Load combinations)." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmLoad_LoadCase" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmLoad" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmLoadCase" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Loads</SourceDisplayLabel>
                <TargetDisplayLabel>Load case</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmLoadContainer" modifier="Abstract" displayLabel="Load Container">
        <BaseClass>bis:InformationRecordElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
    </ECEntityClass>

    <ECEntityClass typeName="IsmMasonry" modifier="Sealed">
        <BaseClass>IsmMaterial</BaseClass>
    </ECEntityClass>

    <PropertyCategory typeName="IsmStory_category" displayLabel="Story" priority="190" />
    <ECEntityClass typeName="IsmStory" modifier="Sealed" displayLabel="Story">
        <BaseClass>bis:PhysicalElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
        <ECProperty propertyName="ReferenceElevation" typeName="double" displayLabel="Reference Elevation" category="IsmStory_category" kindOfQuantity="AECU:LENGTH" description="The elevation of this story." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmMember_Story" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmMember" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmStory" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Members</SourceDisplayLabel>
                <TargetDisplayLabel>Story</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmMemberLoad_Member" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmMemberLoad" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmMember" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Member loads</SourceDisplayLabel>
                <TargetDisplayLabel>Member</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEnumeration typeName="IsmFixityDirection" backingTypeName="int" isStrict="true" description="Fixity direction.">
        <ECEnumerator value="1" name="CompressionOnly" displayLabel="Compression Only" />
        <ECEnumerator value="2" name="TensionOnly" displayLabel="Tension Only" />
        <ECEnumerator value="3" name="CompressionAndTension" displayLabel="Compression And Tension" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmPointSupport_category" displayLabel="Point Support" priority="180" />
    <ECEntityClass typeName="IsmPointSupport" displayLabel="Point Support" modifier="Sealed">
        <BaseClass>IsmSupportMember</BaseClass>
        <ECProperty propertyName="RAxis" typeName="Point3d" category="IsmPointSupport_category" description="The unit vector orientation of the boundary condition R-Axis." />
        <ECProperty propertyName="SAxis" typeName="Point3d" category="IsmPointSupport_category" description="The unit vector orientation of the boundary condition S-Axis." />
        <ECProperty propertyName="Location" typeName="Point3d" category="IsmPointSupport_category" kindOfQuantity="AECU:LENGTH" description="The location of this node." />
        <ECProperty propertyName="RAxisRotationStiffness" typeName="double" displayLabel="R-Axis Rotation Stiffness" category="IsmPointSupport_category" kindOfQuantity="AECU:ROTATIONAL_SPRING_CONSTANT" description="Rotation spring stiffness about the R-Axis." />
        <ECProperty propertyName="RAxisTranslationDirection" typeName="IsmFixityDirection" displayLabel="R-Axis Translation Direction" category="IsmPointSupport_category" description="Can this R-Axis translation restraint resist compression, tension or both?" />
        <ECProperty propertyName="RAxisTranslationStiffness" typeName="double" displayLabel="R-Axis Translation Stiffness" category="IsmPointSupport_category" kindOfQuantity="LINEAR_SPRING_CONSTANT_KN" description="Translation spring stiffness in the R-Axis direction." />
        <ECProperty propertyName="SAxisRotationStiffness" typeName="double" displayLabel="S-Axis Rotation Stiffness" category="IsmPointSupport_category" kindOfQuantity="LINEAR_SPRING_CONSTANT_KN" description="Rotation spring stiffness about the S-Axis." />
        <ECProperty propertyName="SAxisTranslationDirection" typeName="IsmFixityDirection" displayLabel="S-Axis Translation Direction" category="IsmPointSupport_category" description="Can this S-Axis translation restraint resist compression, tension or both?" />
        <ECProperty propertyName="SAxisTranslationStiffness" typeName="double" displayLabel="S-Axis Translation Stiffness" category="IsmPointSupport_category" kindOfQuantity="AECU:SPRING_CONSTANT" description="Translation spring stiffness in the S-Axis direction." />
        <ECProperty propertyName="TAxisRotationStiffness" typeName="double" displayLabel="T-Axis Rotation Stiffness" category="IsmPointSupport_category" kindOfQuantity="AECU:ROTATIONAL_SPRING_CONSTANT" description="Rotation spring stiffness about the T-Axis." />
        <ECProperty propertyName="TAxisTranslationDirection" typeName="IsmFixityDirection" displayLabel="T-Axis Translation Direction" category="IsmPointSupport_category" description="Can this T-Axis translation restraint resist compression, tension or both?" />
        <ECProperty propertyName="TAxisTranslationStiffness" typeName="double" displayLabel="T-Axis Translation Stiffness" category="IsmPointSupport_category" kindOfQuantity="LINEAR_SPRING_CONSTANT_KN" description="Translation spring stiffness in the T-Axis direction." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmNode_category" displayLabel="Node" priority="190" />
    <ECEntityClass typeName="IsmNode" displayLabel="Node" modifier="None" >
        <BaseClass>bis:SpatialLocationElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
        <ECProperty propertyName="Location" typeName="Point3d" category="IsmNode_category" kindOfQuantity="AECU:LENGTH" description="The location of this node." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmNode_Members" strength="referencing" strengthDirection="forward" modifier="Sealed">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmNode" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmMember" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Nodes</SourceDisplayLabel>
                <TargetDisplayLabel>Members</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <PropertyCategory typeName="IsmOpenUTieRebar_category" displayLabel="Open-U Tie Rebar" priority="170" />
    <ECEntityClass typeName="IsmOpenUTieRebar" displayLabel="Open-U Tie Rebar" modifier="Sealed">
        <BaseClass>IsmPerpendicularRebar</BaseClass>
        <ECProperty propertyName="Depth" typeName="double" category="IsmOpenUTieRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The depth of the u-shape, measured to center of bar along the T-Axis." />
        <ECProperty propertyName="Width" typeName="double" category="IsmOpenUTieRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The width of the u-shape, measured to center of bar along the S-Axis." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmOtherMaterial" modifier="Sealed" displayLabel="Other Material">
        <BaseClass>IsmMaterial</BaseClass>
    </ECEntityClass>

    <ECEntityClass typeName="IsmParametricSteelDeck" modifier="Abstract" displayLabel="Parametric Steel Deck">
        <BaseClass>IsmSteelDeck</BaseClass>
    </ECEntityClass>

    <PropertyCategory typeName="IsmPipingLine_category" displayLabel="Piping Line" priority="190" />
    <ECEntityClass typeName="IsmPipingLine" modifier="Sealed" displayLabel="Piping Line">
        <BaseClass>bis:PhysicalElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
        <ECProperty propertyName="Tag" typeName="string" category="IsmPipingLine_category" />
    </ECEntityClass>

    <ECEntityClass typeName="IsmPipingMember" modifier="Abstract" displayLabel="Piping Member">
        <BaseClass>IsmMember</BaseClass>
    </ECEntityClass>

    <PropertyCategory typeName="IsmPipingComponent_category" displayLabel="Piping Component" priority="180" />
    <ECEntityClass typeName="IsmPipingComponent" modifier="Abstract" displayLabel="Piping Component">
        <BaseClass>IsmPipingMember</BaseClass>
        <ECProperty propertyName="IsRigid" typeName="boolean" displayLabel="Is Rigid" category="IsmPipingComponent_category" description="Specifies if the component is rigid." />
        <ECProperty propertyName="Diameter" typeName="double" category="IsmPipingComponent_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Full Component diameter - from outer edge to outer edge." />
        <ECProperty propertyName="NominalDiameter" typeName="double" displayLabel="Nominal Diameter" category="IsmPipingComponent_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Diameter component centerline." />
        <ECProperty propertyName="WallThickness" typeName="double" displayLabel="Wall Thickness" category="IsmPipingComponent_category" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="Orientation" typeName="Point3d" displayLabel="Orientation" category="IsmPipingComponent_category" description="The unit vector orientation of the member T-Axis." />
    </ECEntityClass>

    <ECEnumeration typeName="PipingBranchingType" backingTypeName="int" isStrict="true" description="Piping Branching Type.">
        <ECEnumerator value="10" name="Welding" />
        <ECEnumerator value="20" name="Reinforced" />
        <ECEnumerator value="30" name="Unreinforced" />
        <ECEnumerator value="40" name="Extruded" />
        <ECEnumerator value="50" name="Contour" />
        <ECEnumerator value="60" name="Fitting" />
        <ECEnumerator value="70" name="Other" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmPipingRunComponent_category" displayLabel="Piping Run Component" priority="170" />
    <ECEntityClass typeName="IsmPipingRunComponent" modifier="Sealed" displayLabel="Piping Run Component">
        <BaseClass>IsmPipingComponent</BaseClass>
        <ECStructProperty propertyName="Location" typeName="IsmPrimitiveGeometry" category="IsmPipingComponent_category" description="The location of this run component line in space." />
        <ECProperty propertyName="StartBranchingType" typeName="PipingBranchingType" displayLabel="Start Branching Type" category="IsmPipingRunComponent_category" description="Defines branching type for a component which is a branch of the piping line and connects to a header at the start point." />
        <ECProperty propertyName="EndBranchingType" typeName="PipingBranchingType" displayLabel="End Branching Type" category="IsmPipingRunComponent_category" description="Defines branching type for a component which is a branch of the piping line and connects to a header at the end point." />
    </ECEntityClass>

    <ECEnumeration typeName="PipingFlangeType" backingTypeName="int" isStrict="true" description="Piping flange Type.">
        <ECEnumerator value="10" name="SlipOn" displayLabel="Slip On" />
        <ECEnumerator value="20" name="WeldNeck" displayLabel="Weld Neck" />
        <ECEnumerator value="30" name="LapJoint" displayLabel="Lap Joint" />
        <ECEnumerator value="40" name="Blind" />
        <ECEnumerator value="50" name="Socket" />
        <ECEnumerator value="60" name="NonStandard" displayLabel="Non Standard" />
    </ECEnumeration>

    <ECEnumeration typeName="PipingFlangeComponentPlacement" backingTypeName="int" isStrict="true" description="Piping Flange Component Placement.">
        <ECEnumerator value="1" name="Bottom" />
        <ECEnumerator value="2" name="Center" />
        <ECEnumerator value="3" name="Top" />
    </ECEnumeration>

    <ECEnumeration typeName="PipingJoint" backingTypeName="int" isStrict="true" description="Piping Flange Component Joint.">
        <ECEnumerator value="10" name="UserDefined" displayLabel="User Defined" />
        <ECEnumerator value="20" name="ButtWeld" displayLabel="Butt Weld" />
        <ECEnumerator value="30" name="SlipOn" displayLabel="Slip On" />
        <ECEnumerator value="40" name="SocketWeld" displayLabel="Socket Weld" />
        <ECEnumerator value="50" name="LapJoint" displayLabel="Lap Joint" />
        <ECEnumerator value="60" name="ThreadedJoint" displayLabel="Threaded Joint" />
        <ECEnumerator value="70" name="WeldNeck" displayLabel="Weld Neck" />
        <ECEnumerator value="80" name="ButtWeldTransition" displayLabel="Butt Weld Transition" />
        <ECEnumerator value="90" name="SocketWeldNoUndercut" displayLabel="Socket Weld No Undercut" />
        <ECEnumerator value="100" name="AsmeButtAsWelded" displayLabel="Asme Butt As Welded" />
        <ECEnumerator value="110" name="AsmeFlushButtWelded" displayLabel="Asme Flush Butt Welded" />
        <ECEnumerator value="120" name="AsmeAsWeldedButtWeldNb4250Transition" displayLabel="Asme As Welded Butt Weld Nb-4250 Transition" />
        <ECEnumerator value="130" name="AsmeFlushButtWeldNb4250Transition" displayLabel="Asme Flush Butt Weld Nb-4250 Transition" />
        <ECEnumerator value="140" name="AsmeAsWeldedButtWeld13Transition" displayLabel="Asme As Welded Butt Weld-13 Transition" />
        <ECEnumerator value="150" name="AsmeFlushButtWeld13Transition" displayLabel="Asme Flush Butt Weld-13 Transition" />
        <ECEnumerator value="160" name="AsmeSocketOrFilletWeld" displayLabel="Asme Socket Or Fillet Weld" />
        <ECEnumerator value="170" name="AsmeAnsiB162530TaperedTransition" displayLabel="Asme Ansi B-162530 Tapered Transition" />
        <ECEnumerator value="180" name="Iso14692SpigotSocket" displayLabel="Iso-14692 Spigot Socket" />
        <ECEnumerator value="190" name="Iso14692Threaded" displayLabel="Iso-14692 Threaded" />
        <ECEnumerator value="200" name="Iso14692Flange" displayLabel="Iso-14692 Flange" />
        <ECEnumerator value="210" name="Iso14692Laminated" displayLabel="Iso-14692 Laminated" />
        <ECEnumerator value="220" name="HdpeButtFusion" displayLabel="Hdpe Butt Fusion" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmPipingFlangeComponent_category" displayLabel="Piping Flange Component" priority="170" />
    <ECEntityClass typeName="IsmPipingFlangeComponent" modifier="Sealed" displayLabel="Piping Flange Component">
        <BaseClass>IsmPipingComponent</BaseClass>
        <ECProperty propertyName="Location" typeName="Point3d" category="IsmPipingComponent_category" description="The location of this flange component point in space." />
        <ECProperty propertyName="BoltNutWeight" typeName="double" displayLabel="Bolt Nut Weight" category="IsmPipingFlangeComponent_category" kindOfQuantity="AECU:WEIGHT" description="Combined bolt/nut weight." />
        <ECProperty propertyName="Weight" typeName="double" category="IsmPipingFlangeComponent_category" kindOfQuantity="AECU:WEIGHT" description="Component weight that could bear down on the piping point." />
        <ECProperty propertyName="FlangeType" typeName="PipingFlangeType" displayLabel="Flange Type" category="IsmPipingFlangeComponent_category" />
        <ECProperty propertyName="Tag" typeName="string" category="IsmPipingFlangeComponent_category" />
        <ECProperty propertyName="PressureRating" typeName="string" displayLabel="Pressure Rating" category="IsmPipingFlangeComponent_category" />
        <ECProperty propertyName="FlangePlacement" typeName="PipingFlangeComponentPlacement" category="IsmPipingFlangeComponent_category" description="Flange placement defines how flange should be placed in relation to its Location and along direction." />
        <ECProperty propertyName="Direction" typeName="Point3d" category="IsmPipingFlangeComponent_category" description="The direction unit vector at the local RST coordinate system." />
        <ECProperty propertyName="Series" typeName="string" category="IsmPipingFlangeComponent_category" />
        <ECProperty propertyName="OffsetJoint" typeName="double" displayLabel="Offset Joint" category="IsmPipingFlangeComponent_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Joint offset for a butt weld (BW) or a butt weld with tapered transition (BWT) joint." />
        <ECProperty propertyName="OffsetAverage" typeName="double" displayLabel="Offset Average" category="IsmPipingFlangeComponent_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Average joint offset for a butt weld connection." />
        <ECProperty propertyName="OffsetMaximum" typeName="double" displayLabel="Offset Maximum" category="IsmPipingFlangeComponent_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Maximum joint offset for a butt weld connection." />
        <ECProperty propertyName="JointStressIntensificationFactor" typeName="double" displayLabel="Joint Stress Intensification Factor" category="IsmPipingFlangeComponent_category" description="Joint Stress Intensification Factor." />
        <ECProperty propertyName="JointType" typeName="PipingJoint" displayLabel="Joint End Type" category="IsmPipingFlangeComponent_category" description="The manner in which this point is connected." />
    </ECEntityClass>

    <ECEnumeration typeName="PipingBendComponentType" backingTypeName="int" isStrict="true" description="Piping Flange Component Joint.">
        <ECEnumerator value="10" name="Elbow" />
        <ECEnumerator value="20" name="Close" />
        <ECEnumerator value="30" name="Wide" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmPipingBendComponent_category" displayLabel="Piping Bend Component" priority="170" />
    <ECEntityClass typeName="IsmPipingBendComponent" modifier="Sealed" displayLabel="Piping Bend Component">
        <BaseClass>IsmPipingComponent</BaseClass>
        <ECStructProperty propertyName="Location" typeName="IsmPrimitiveGeometry" category="IsmPipingComponent_category" description="The location of this bend component arc in space." />
        <ECProperty propertyName="BendType" typeName="PipingBendComponentType" category="IsmPipingBendComponent_category" />
    </ECEntityClass>

    <PropertyCategory typeName="IsmPipingNode_category" displayLabel="Piping Node" priority="170" />
    <ECEntityClass typeName="IsmPipingNode" modifier="Sealed" displayLabel="Piping Node">
        <BaseClass>IsmNode</BaseClass>
        <ECProperty propertyName="JointType" typeName="PipingJoint" displayLabel="Joint End Type" category="IsmPipingNode_category" />
        <ECProperty propertyName="WeldSize" typeName="double" displayLabel="Weld Size" category="IsmPipingNode_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The manner in which this point is connected." />
        <ECProperty propertyName="OffsetJoint" typeName="double" displayLabel="Offset Joint" category="IsmPipingNode_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Weld size for double-welded slip-on and socket or fillet weld (with undercut) joints." />
        <ECProperty propertyName="OffsetAverage" typeName="double" displayLabel="Offset Average" category="IsmPipingNode_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Average joint offset for a butt weld connection." />
        <ECProperty propertyName="OffsetMaximum" typeName="double" displayLabel="Offset Maximum" category="IsmPipingNode_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Maximum joint offset for a butt weld connection." />
        <ECProperty propertyName="StressIntensificationFactor" typeName="double" displayLabel="Stress Intensification Factor" category="IsmPipingNode_category" description="Stress intensification factor." />
        <ECProperty propertyName="InPlaneStressIntensificationFactor" typeName="double" displayLabel="In Plane Stress Intensification Factor" category="IsmPipingNode_category" description="Stress Intensification Factor for forces/moments which cause deflection/rotation in-plane (the deflected component shape remains in the defined plane)." />
        <ECProperty propertyName="OutPlaneStressIntensificationFactor" typeName="double" displayLabel="Out Plane Stress Intensification Factor" category="IsmPipingNode_category" description="Stress Intensification Factor for forces/moments which cause deflection/rotation out-of-plane (the deflected component shape rises off of the defined plane)." />
    </ECEntityClass>

    <ECEnumeration typeName="ValveType" backingTypeName="int" isStrict="true" description="Valve Type.">
        <ECEnumerator value="200" name="GateFlanged" displayLabel="Gate Flanged" />
        <ECEnumerator value="400" name="GlobeFlanged" displayLabel="Globe Flanged" />
        <ECEnumerator value="600" name="SwingCheckFlanged" displayLabel="Swing Check Flanged" />
        <ECEnumerator value="800" name="TiltingDiskCheckFlanged" displayLabel="Tilting Disk Check Flanged" />
        <ECEnumerator value="1000" name="BallSideEntryFlanged" displayLabel="Ball Side Entry Flanged" />
        <ECEnumerator value="1200" name="GateButtweld" displayLabel="Gate Buttweld" />
        <ECEnumerator value="1400" name="GlobeButtweld" displayLabel="Globe Buttweld" />
        <ECEnumerator value="1600" name="SwingCheckButtweld" displayLabel="Swing Check Buttweld" />
        <ECEnumerator value="1800" name="TiltingDiskCheckButtweld" displayLabel="Tilting Disk Check Buttweld" />
        <ECEnumerator value="2000" name="NonStandard" displayLabel="Non-Standard" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmPipingValveComponent_category" displayLabel="Piping Valve Component" priority="170" />
    <ECEntityClass typeName="IsmPipingValveComponent" modifier="Sealed" displayLabel="Piping Valve Component">
        <BaseClass>IsmPipingComponent</BaseClass>
        <ECStructProperty propertyName="Location" typeName="IsmPrimitiveGeometry" category="IsmPipingComponent_category" />
        <ECProperty propertyName="Tag" typeName="string" category="IsmPipingValveComponent_category" />
        <ECProperty propertyName="ValveType" typeName="ValveType" displayLabel="Valve Type" category="IsmPipingValveComponent_category" />
        <ECProperty propertyName="ValveWeight" typeName="double" displayLabel="Valve Weight" category="IsmPipingValveComponent_category" kindOfQuantity="AECU:WEIGHT" />
        <ECProperty propertyName="HasActuator" typeName="boolean" displayLabel="Has Actuator" category="IsmPipingValveComponent_category" description="Indicates if valve has an actuator." />
        <ECProperty propertyName="ActuatorWeight" typeName="double" displayLabel="Actuator Weight" category="IsmPipingValveComponent_category" kindOfQuantity="AECU:WEIGHT" description="Dry weight of the actuator or hand-wheel." />
        <ECProperty propertyName="ActuatorLength" typeName="double" displayLabel="Actuator Length" category="IsmPipingValveComponent_category" kindOfQuantity="AECU:LENGTH" description="Distance between actuator start and valve midpoint." />
        <ECProperty propertyName="PressureRating" typeName="string" displayLabel="Pressure Rating" category="IsmPipingValveComponent_category" kindOfQuantity="AECU:PRESSURE" />
    </ECEntityClass>

    <PropertyCategory typeName="IsmPipingReducerComponent_category" displayLabel="Piping Reducer Component" priority="170" />
    <ECEntityClass typeName="IsmPipingReducerComponent" modifier="Sealed" displayLabel="Piping Reducer Component">
        <BaseClass>IsmPipingComponent</BaseClass>
        <ECStructProperty propertyName="Location" typeName="IsmPrimitiveGeometry" category="IsmPipingComponent_category" description="The location of this reducer component line in space." />
        <ECProperty propertyName="EndDiameter" typeName="double" category="IsmPipingReducerComponent_category" kindOfQuantity="AECU:LENGTH_SHORT" />
        <ECProperty propertyName="EndNominalDiameter" typeName="double" category="IsmPipingReducerComponent_category" kindOfQuantity="AECU:LENGTH_SHORT" />
    </ECEntityClass>

    <ECEntityClass typeName="IsmPipingFlexibleJointComponent" modifier="Sealed" displayLabel="Piping Flexible Joint Component">
        <ECStructProperty propertyName="Location" typeName="IsmPrimitiveGeometry" category="IsmPipingComponent_category" description="The location of this flexible joint component line in space." />
        <BaseClass>IsmPipingComponent</BaseClass>
    </ECEntityClass>

    <ECEnumeration typeName="FlexibilityMethod" backingTypeName="int" isStrict="true" description="Flexibility Method.">
        <ECEnumerator value="20" name="Asme" />
        <ECEnumerator value="40" name="Api650" displayLabel="Api-650" />
        <ECEnumerator value="60" name="Wrc297" displayLabel="Wrc-297" />
        <ECEnumerator value="80" name="Bijlaard" />
        <ECEnumerator value="100" name="Spherical" />
        <ECEnumerator value="120" name="User" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmPipingNozzleComponent_category" displayLabel="Piping Nozzle Component" priority="170" />
    <ECEntityClass typeName="IsmPipingNozzleComponent" modifier="Sealed" displayLabel="Piping Nozzle Component">
        <BaseClass>IsmPipingComponent</BaseClass>
        <ECStructProperty propertyName="Location" typeName="IsmPrimitiveGeometry" category="IsmPipingComponent_category" description="Nozzle location line segment." />
        <ECProperty propertyName="VesselDiameter" typeName="double" displayLabel="Vessel Diameter" category="IsmPipingNozzleComponent_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Diameter of vessel." />
        <ECProperty propertyName="VesselDirection" typeName="Point3d" displayLabel="Vessel Direction" category="IsmPipingNozzleComponent_category" description="Vessel spatial orientation indicated by a unit vector." />
        <ECProperty propertyName="FlexibilityMethod" typeName="FlexibilityMethod" displayLabel="Flexibility Method" category="IsmPipingNozzleComponent_category" description="Nozzle flexibility type." />
        <ECProperty propertyName="RadialStiffness" typeName="double" displayLabel="Radial Stiffness" category="IsmPipingNozzleComponent_category" kindOfQuantity="AECU:ROTATIONAL_SPRING_CONSTANT" />
        <ECProperty propertyName="CircularStiffness" typeName="double" displayLabel="Circular Stiffness" category="IsmPipingNozzleComponent_category" kindOfQuantity="AECU:ROTATIONAL_SPRING_CONSTANT" />
        <ECProperty propertyName="LongitudinalStiffness" typeName="double" displayLabel="Longitudinal Stiffness" category="IsmPipingNozzleComponent_category" kindOfQuantity="AECU:ROTATIONAL_SPRING_CONSTANT" />
    </ECEntityClass>

    <PropertyCategory typeName="IsmPipingSupport_category" displayLabel="Piping Support" priority="180" />
    <ECEntityClass typeName="IsmPipingSupport" modifier="Abstract" displayLabel="Piping Support">
        <BaseClass>IsmPipingMember</BaseClass>
        <ECProperty propertyName="Tag" typeName="string" category="IsmPipingSupport_category" />
        <ECProperty propertyName="AttachmentId" typeName="string" displayLabel="Attachment Id" category="IsmPipingSupport_category" />
        <ECProperty propertyName="ComponentWeight" typeName="double" displayLabel="Component Weight" category="IsmPipingSupport_category" kindOfQuantity="AECU:WEIGHT" description="Component weight that could bear down on the piping point." />
        <ECProperty propertyName="IsConnectedToGround" typeName="boolean" displayLabel="Is Connected To Ground" category="IsmPipingSupport_category" description="Indicates if this support is connected to ground." />
        <ECProperty propertyName="StartPoint" typeName="Point3d" displayLabel="Start Point" category="IsmPipingSupport_category" kindOfQuantity="AECU:LENGTH" description="Connection start point on piping component." />
        <ECProperty propertyName="EndPoint" typeName="Point3d" displayLabel="End Point" category="IsmPipingSupport_category" kindOfQuantity="AECU:LENGTH" description="Connection end point on piping component." />
        <ECProperty propertyName="PipeDiameter" typeName="double" displayLabel="PipeDiameter" category="IsmPipingSupport_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Diameter of the pipe component this support connects to." />
        <ECProperty propertyName="RAxis" typeName="Point3d" displayLabel="R-Axis" category="IsmPipingSupport_category" description="The unit vector orientation of the boundary condition R-Axis." />
        <ECProperty propertyName="SAxis" typeName="Point3d" displayLabel="S-Axis" category="IsmPipingSupport_category" description="The unit vector orientation of the boundary condition S-Axis." />
    </ECEntityClass>

    <ECEnumeration typeName="PipingSupportDesignMethod" backingTypeName="int" isStrict="true" description="Piping Spring Support Design Method.">
        <ECEnumerator value="10" name="HotLoad" displayLabel="Hot Load" />
        <ECEnumerator value="20" name="ColdLoad" displayLabel="Cold Load" />
    </ECEnumeration>

    <ECEnumeration typeName="PipingSpringType" backingTypeName="int" isStrict="true" description="Piping Spring Support Design Method.">
        <ECEnumerator value="10" name="Hanger" />
        <ECEnumerator value="20" name="Can" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmPipingSpringSupport_category" displayLabel="Piping Spring Support" priority="170" />
    <ECEntityClass typeName="IsmPipingSpringSupport" modifier="Sealed" displayLabel="Piping Spring Support">
        <BaseClass>IsmPipingSupport</BaseClass>
        <ECProperty propertyName="DesignMethod" typeName="PipingSupportDesignMethod" displayLabel="Design Method" category="IsmPipingSpringSupport_category" kindOfQuantity="AECU:LENGTH" />
        <ECProperty propertyName="MaximumVerticalTravelRange" typeName="double" displayLabel="Maximum Vertical Travel Range" category="IsmPipingSpringSupport_category" kindOfQuantity="AECU:LENGTH" />
        <ECProperty propertyName="MovementDistance" typeName="double" displayLabel="Movement Distance" category="IsmPipingSpringSupport_category" kindOfQuantity="AECU:LENGTH" />
        <ECProperty propertyName="Load" typeName="double" category="IsmPipingSpringSupport_category" kindOfQuantity="AECU:FORCE" description="Hot or cold load value used for design Design Method." />
        <ECProperty propertyName="LoadVariationRatio" typeName="double" displayLabel="Load Variation Ratio" category="IsmPipingSpringSupport_category" description="Load variation ratio applied to the support." />
        <ECProperty propertyName="Stiffness" typeName="double" category="IsmPipingSpringSupport_category" kindOfQuantity="AECU:SPRING_CONSTANT" description="Stiffness value for the bearing spring." />
        <ECProperty propertyName="CatalogName" typeName="string" displayLabel="Catalog Name" category="IsmPipingSpringSupport_category" />
        <ECProperty propertyName="SpringType" typeName="PipingSpringType" displayLabel="Spring Type" category="IsmPipingSpringSupport_category" description="Support type indicating if this support is hanging or standing." />
        <ECProperty propertyName="IsDesigned" typeName="boolean" displayLabel="Is Designed" category="IsmPipingSpringSupport_category" description="Indicates if spring is designed." />
        <ECProperty propertyName="HangerCount" typeName="int" displayLabel="Hanger Count" category="IsmPipingSpringSupport_category" description="The number of hangers (or individual springs) to be connected in parallel for this support." />
        <ECProperty propertyName="SpringSize" typeName="string" displayLabel="Spring Size" category="IsmPipingSpringSupport_category" description="The designed or existing spring hanger size." />
        <ECProperty propertyName="SpringFigure" typeName="string" displayLabel="Spring Figure" category="IsmPipingSpringSupport_category" description="The reference figure/name of the spring hanger corresponding to the spring hanger size from the manufacturers catalog." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmPipingConstantSupport_category" displayLabel="Piping Constant Support" priority="170" />
    <ECEntityClass typeName="IsmPipingConstantSupport" modifier="Sealed" displayLabel="Piping Constant Support">
        <BaseClass>IsmPipingSupport</BaseClass>
        <ECProperty propertyName="DesignMethod" typeName="PipingSupportDesignMethod" displayLabel="Design Method" category="IsmPipingConstantSupport_category" />
        <ECProperty propertyName="MaximumVerticalTravelRange" typeName="double" displayLabel="Maximum Vertical Travel Range" category="IsmPipingConstantSupport_category" kindOfQuantity="AECU:LENGTH" />
        <ECProperty propertyName="MovementDistance" typeName="double" displayLabel="Movement Distance" category="IsmPipingConstantSupport_category" kindOfQuantity="AECU:LENGTH" />
        <ECProperty propertyName="Load" typeName="double" category="IsmPipingConstantSupport_category" kindOfQuantity="AECU:FORCE" description="Hot or cold load value used for design (depending on Design Method." />
        <ECProperty propertyName="CatalogName" typeName="string" displayLabel="Catalog Name" category="IsmPipingConstantSupport_category" />
        <ECProperty propertyName="SpringType" typeName="PipingSpringType" displayLabel="Spring Type" category="IsmPipingConstantSupport_category" description="Support type indicating if this support is hanging or standing." />
        <ECProperty propertyName="IsDesigned" typeName="boolean" displayLabel="Is Designed" category="IsmPipingConstantSupport_category" description="Is spring designed?" />
        <ECProperty propertyName="HangerCount" typeName="int" displayLabel="Hanger Count" category="IsmPipingConstantSupport_category" description="The number of hangers (or individual springs) to be connected in parallel for this support." />
    </ECEntityClass>

    <ECEnumeration typeName="PipingVStopSupportType" backingTypeName="int" isStrict="true" description="V-Stop Type.">
        <ECEnumerator value="10" name="Bidirectional" />
        <ECEnumerator value="20" name="RodHanger" />
        <ECEnumerator value="30" name="Shoe" />
    </ECEnumeration>

    <ECEnumeration typeName="PipingVStopSupportGap" backingTypeName="int" isStrict="true" description="V-Stop Type.">
        <ECEnumerator value="10" name="Bidirectional" />
        <ECEnumerator value="20" name="RodHanger" />
        <ECEnumerator value="30" name="Shoe" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmPipingVStopSupport_category" displayLabel="Piping V-Stop Support" priority="170" />
    <ECEntityClass typeName="IsmPipingVStopSupport" modifier="Sealed" displayLabel="Piping V-Stop Support">
        <BaseClass>IsmPipingSupport</BaseClass>
        <ECProperty propertyName="VStopType" typeName="PipingVStopSupportType" displayLabel="V-Stop Type" category="IsmPipingVStopSupport_category" description="V-Stop Support type" />
        <ECProperty propertyName="GapDown" typeName="double" displayLabel="Gap Down" category="IsmPipingVStopSupport_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Gap below which enables the supported point to move downward along the T-Axis before being restrained." />
        <ECProperty propertyName="GapUp" typeName="double" displayLabel="Gap Up" category="IsmPipingVStopSupport_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Gap above which enables the supported point to move upward along the T-Axis before being restrained." />
        <ECProperty propertyName="GapType" typeName="PipingVStopSupportGap" category="IsmPipingVStopSupport_category" displayLabel="Gap Type" />
        <ECProperty propertyName="FrictionCoefficient" typeName="double" displayLabel="Friction Coefficient" category="IsmPipingVStopSupport_category" kindOfQuantity="Coefficient3DP" description="Friction coefficient value is used to calculate the effect of friction forces." />
    </ECEntityClass>

    <ECEnumeration typeName="PipingSupportGapType" backingTypeName="int" isStrict="true" description="Piping Support Weight Gap.">
        <ECEnumerator value="10" name="Weightless" />
        <ECEnumerator value="20" name="AsBuilt" displayLabel="As Built" />
    </ECEnumeration>

    <KindOfQuantity typeName='Coefficient3DP' description='Coefficient 3DP'
        displayLabel='Coefficient 3DP' persistenceUnit='u:COEFFICIENT' relativeError='.0005'
        presentationUnits='f:DefaultRealU(3)[u:COEFFICIENT|]' />

    <PropertyCategory typeName="IsmPipingInclineSupport_category" displayLabel="Piping Incline Support" priority="170" />
    <ECEntityClass typeName="IsmPipingInclineSupport" modifier="Sealed" displayLabel="Piping Incline Support">
        <BaseClass>IsmPipingSupport</BaseClass>
        <ECProperty propertyName="Direction" typeName="Point3d" category="IsmPipingInclineSupport_category" description="The direction unit vector at the local RST coordinate system." />
        <ECProperty propertyName="Stiffness" typeName="double" category="IsmPipingInclineSupport_category" kindOfQuantity="AECU:SPRING_CONSTANT" description="Stiffness value for the bearing spring." />
        <ECProperty propertyName="GapForward" typeName="double" displayLabel="Gap Forward" category="IsmPipingInclineSupport_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Forward gap enables the supported point to move in a forward segment direction." />
        <ECProperty propertyName="GapBackward" typeName="double" displayLabel="Gap Backward" category="IsmPipingInclineSupport_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Backward gap enables the supported point to move in the opposite direction." />
        <ECProperty propertyName="GapType" typeName="PipingSupportGapType" displayLabel="Gap Type" category="IsmPipingInclineSupport_category" />
        <ECProperty propertyName="FrictionCoefficient" typeName="double" displayLabel="Friction Coefficient" category="IsmPipingInclineSupport_category" kindOfQuantity="Coefficient3DP" description="Friction coefficient value is used to calculate the effect of friction forces." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmPipingLineStopSupport_category" displayLabel="Piping Line Stop Support" priority="170" />
    <ECEntityClass typeName="IsmPipingLineStopSupport" modifier="Sealed" displayLabel="Piping Line Stop Support">
        <BaseClass>IsmPipingSupport</BaseClass>
        <ECProperty propertyName="Stiffness" typeName="double" category="IsmPipingLineStopSupport_category" kindOfQuantity="AECU:SPRING_CONSTANT" description="Stiffness value for the bearing spring." />
        <ECProperty propertyName="GapForward" typeName="double" displayLabel="Gap Forward" category="IsmPipingLineStopSupport_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Forward gap enables the supported point to move in a forward segment." />
        <ECProperty propertyName="GapBackward" typeName="double" displayLabel="Gap Backward" category="IsmPipingLineStopSupport_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Backward gap enables the supported point to move in the opposite." />
        <ECProperty propertyName="GapType" typeName="PipingSupportGapType" displayLabel="Gap Type" category="IsmPipingLineStopSupport_category" />
    </ECEntityClass>

    <PropertyCategory typeName="IsmPipingGuideSupport_category" displayLabel="Piping Guide Support" priority="170" />
    <ECEntityClass typeName="IsmPipingGuideSupport" modifier="Sealed" displayLabel="Piping Guide Support">
        <BaseClass>IsmPipingSupport</BaseClass>
        <ECProperty propertyName="Stiffness" typeName="double" category="IsmPipingGuideSupport_category" kindOfQuantity="AECU:SPRING_CONSTANT" description="Stiffness value for the bearing spring." />
        <ECProperty propertyName="GapDown" typeName="double" displayLabel="Gap Down" category="IsmPipingGuideSupport_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Gap below which enables the supported point to move downward along the T-Axis before being restrained." />
        <ECProperty propertyName="GapUp" typeName="double" displayLabel="Gap Up" category="IsmPipingGuideSupport_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Gap above which enables the supported point to move upward along the T-Axis before being restrained." />
        <ECProperty propertyName="GapLeft" typeName="double" displayLabel="Gap Left" category="IsmPipingGuideSupport_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Left side gap which enables the supported point to move left along the S-Axis before being restrained." />
        <ECProperty propertyName="GapRight" typeName="double" displayLabel="Gap Right" category="IsmPipingGuideSupport_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Right side gap which enables the supported point to move right along the S-Axis before being restrained." />
        <ECProperty propertyName="FrictionCoefficient" typeName="double" displayLabel="Friction Coefficient" category="IsmPipingGuideSupport_category" kindOfQuantity="Coefficient3DP" description="Friction coefficient value is used to calculate the effect of friction forces." />
        <ECProperty propertyName="GapType" typeName="PipingSupportGapType" displayLabel="Gap Type" category="IsmPipingGuideSupport_category" />
    </ECEntityClass>

    <PropertyCategory typeName="IsmPipingRotationSupport_category" displayLabel="Piping Rotation Support" priority="170" />
    <ECEntityClass typeName="IsmPipingRotationSupport" modifier="Sealed" displayLabel="Piping Rotation Support">
        <BaseClass>IsmPipingSupport</BaseClass>
        <ECProperty propertyName="Direction" typeName="Point3d" category="IsmPipingRotationSupport_category" description="The direction unit vector at the local RST coordinate system." />
        <ECProperty propertyName="Stiffness" typeName="double" category="IsmPipingRotationSupport_category" kindOfQuantity="AECU:SPRING_CONSTANT" description="Stiffness value for the bearing spring." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmPipingDamperSupport_category" displayLabel="Piping Damper Support" priority="170" />
    <ECEntityClass typeName="IsmPipingDamperSupport" modifier="Sealed" displayLabel="Piping Damper Support">
        <BaseClass>IsmPipingSupport</BaseClass>
        <ECProperty propertyName="Direction" typeName="Point3d" category="IsmPipingDamperSupport_category" description="The direction unit vector at the local RST coordinate system." />
        <ECProperty propertyName="Stiffness" typeName="double" category="IsmPipingDamperSupport_category" kindOfQuantity="AECU:SPRING_CONSTANT" description="Stiffness value for the bearing spring." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmPipingTieLinkSupport_category" displayLabel="Piping Tie/Link Support" priority="170" />
    <ECEntityClass typeName="IsmPipingTieLinkSupport" modifier="Sealed" displayLabel="Piping Tie/Link Support">
        <BaseClass>IsmPipingSupport</BaseClass>
        <ECProperty propertyName="Stiffness" typeName="double" category="IsmPipingTieLinkSupport_category" kindOfQuantity="AECU:SPRING_CONSTANT" description="Stiffness value for the bearing spring." />
        <ECProperty propertyName="GapForward" typeName="double" displayLabel="Gap Forward" category="IsmPipingTieLinkSupport_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Forward gap enables the supported point to move in a forward segment." />
        <ECProperty propertyName="GapBackward" typeName="double" displayLabel="Gap Backward" category="IsmPipingTieLinkSupport_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Backward gap enables the supported point to move in the opposite." />
        <ECProperty propertyName="GapType" typeName="PipingSupportGapType" displayLabel="Gap Type" category="IsmPipingTieLinkSupport_category" />
        <ECProperty propertyName="FrictionCoefficient" typeName="double" displayLabel="Friction Coefficient" category="IsmPipingTieLinkSupport_category" kindOfQuantity="Coefficient3DP" description="Friction coefficient value is used to calculate the effect of friction forces." />
    </ECEntityClass>

    <ECEnumeration typeName="AxialBehavior" backingTypeName="int" isStrict="true" description="Axial Behavior.">
        <ECEnumerator value="1" name="CompressionOnly" displayLabel="CompressionOnly" />
        <ECEnumerator value="2" name="TensionOnly" displayLabel="TensionOnly" />
        <ECEnumerator value="3" name="CompressionAndTension" displayLabel="Compression And Tension" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmPipingAnchorSupport_category" displayLabel="Piping Anchor Support" priority="170" />
    <ECEntityClass typeName="IsmPipingAnchorSupport" modifier="Sealed" displayLabel="Piping Anchor Support">
        <BaseClass>IsmPipingSupport</BaseClass>
        <ECProperty propertyName="RAxisRotationStiffness" typeName="double" displayLabel="R-Axis Rotation Stiffness" category="IsmPipingAnchorSupport_category" kindOfQuantity="AECU:ROTATIONAL_SPRING_CONSTANT" description="Rotation spring stiffness about the R-Axis." />
        <ECProperty propertyName="RAxisTranslationDirection" typeName="AxialBehavior" displayLabel="R-Axis Translation Direction" category="IsmPipingAnchorSupport_category" description="Can this R-Axis translation restraint resist compression, tension or both?" />
        <ECProperty propertyName="RAxisTranslationStiffness" typeName="double" displayLabel="R-Axis Translation Stiffness" category="IsmPipingAnchorSupport_category" kindOfQuantity="LINEAR_SPRING_CONSTANT_KN" description="Translation spring stiffness in the R-Axis direction." />
        <ECProperty propertyName="SAxisRotationStiffness" typeName="double" displayLabel="S-Axis Rotation Stiffness" category="IsmPipingAnchorSupport_category" kindOfQuantity="AECU:ROTATIONAL_SPRING_CONSTANT" description="Rotation spring stiffness about the S-Axis." />
        <ECProperty propertyName="SAxisTranslationDirection" typeName="AxialBehavior" displayLabel="S-Axis Translation Direction" category="IsmPipingAnchorSupport_category" description="Can this S-Axis translation restraint resist compression, tension or both?" />
        <ECProperty propertyName="SAxisTranslationStiffness" typeName="double" displayLabel="S-Axis Translation Stiffness" category="IsmPipingAnchorSupport_category" kindOfQuantity="LINEAR_SPRING_CONSTANT_KN" description="Translation spring stiffness in the S-Axis direction." />
        <ECProperty propertyName="TAxisRotationStiffness" typeName="double" displayLabel="T-Axis Rotation Stiffness" category="IsmPipingAnchorSupport_category" kindOfQuantity="AECU:ROTATIONAL_SPRING_CONSTANT" description="Rotation spring stiffness about the T-Axis." />
        <ECProperty propertyName="TAxisTranslationDirection" typeName="AxialBehavior" displayLabel="T-Axis Translation Direction" category="IsmPipingAnchorSupport_category" description="Can this T-Axis translation restraint resist compression, tension or both?" />
        <ECProperty propertyName="TAxisTranslationStiffness" typeName="double" displayLabel="T-Axis Translation Stiffness" category="IsmPipingAnchorSupport_category" kindOfQuantity="LINEAR_SPRING_CONSTANT_KN" description="Translation spring stiffness in the T-Axis direction." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmPipingMember_PipingLine" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmPipingMember" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="false">
            <Class class="IsmPipingLine" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Piping members</SourceDisplayLabel>
                <TargetDisplayLabel>Piping line</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmPipingMember_Material" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmPipingMember" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="false">
            <Class class="IsmMaterial" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Piping members</SourceDisplayLabel>
                <TargetDisplayLabel>Material</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>


    <ECEnumeration typeName="TendonStrandType" backingTypeName="int" isStrict="true">
        <ECEnumerator value="0" name="Unspecified" />
        <ECEnumerator value="10" name="Wire" />
        <ECEnumerator value="20" name="Strand" />
        <ECEnumerator value="30" name="Bar" />
    </ECEnumeration>

    <!-- Deprecated renamed enum. Use "TendonDuctProfile" instead. -->
    <ECEnumeration typeName="TendonDuctShapeType" backingTypeName="int" isStrict="true">
        <ECEnumerator value="0" name="Unspecified" />
        <ECEnumerator value="10" name="Flat" />
        <ECEnumerator value="20" name="Round" />
        <ECEnumerator value="30" name="Oval" />
    </ECEnumeration>

    <ECEnumeration typeName="TendonDuctProfile" backingTypeName="int" isStrict="true">
        <ECEnumerator value="0" name="Unspecified" />
        <ECEnumerator value="10" name="Flat" />
        <ECEnumerator value="20" name="Round" />
        <ECEnumerator value="30" name="Oval" />
    </ECEnumeration>

    <ECEnumeration typeName="DuctMaterial" backingTypeName="int" isStrict="true">
        <ECEnumerator value="0" name="Unspecified" />
        <ECEnumerator value="10" name="Plastic" />
        <ECEnumerator value="20" name="Steel" />
    </ECEnumeration>

    <ECEnumeration typeName="PostTensioningSystem" backingTypeName="int" isStrict="true">
        <ECEnumerator value="0" name="Unspecified" />
        <ECEnumerator value="10" name="Bonded" />
        <ECEnumerator value="20" name="Unbonded" />
    </ECEnumeration>

    <ECEnumeration typeName="AnchorType" backingTypeName="int" isStrict="true">
        <ECEnumerator value="0" name="Unspecified" />
        <ECEnumerator value="10" name="Monostrand" />
        <ECEnumerator value="20" name="FlatMultiPlane" displayLabel="Flat Multi Plane" />
        <ECEnumerator value="30" name="FlatSinglePlane" displayLabel="Flat Single Plane" />
        <ECEnumerator value="40" name="CircularMultiPlane" displayLabel="Circular Multi Plane" />
        <ECEnumerator value="50" name="CircularSinglePlane" displayLabel="Circular Single Plane" />
        <ECEnumerator value="60" name="SquareMultiPlane" displayLabel="Square Multi Plane" />
        <ECEnumerator value="70" name="SquareSinglePlane" displayLabel="Square Single Plane" />
    </ECEnumeration>

    <ECEntityClass typeName="IsmTendonSet" modifier="None" displayLabel="Tendon Set">
        <BaseClass>bis:InformationRecordElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmTendonSet_Members" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="false">
            <Class class="IsmTendonSet" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmSpanningMember" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Tendon sets</SourceDisplayLabel>
                <TargetDisplayLabel>Members</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <PropertyCategory typeName="IsmTendonNode_category" displayLabel="Tendon Node" priority="190" />
    <ECEntityClass typeName="IsmTendonNode" modifier="None" displayLabel="Tendon Node">
        <BaseClass>bis:SpatialLocationElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="Location" typeName="Point3d" category="IsmTendonNode_category" kindOfQuantity="AECU:LENGTH" description="Location of this Node." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmTendonSet_Nodes" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="refers to" polymorphic="false">
            <Class class="IsmTendonSet" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="is referred by" polymorphic="false">
            <Class class="IsmTendonNode" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Tendon set</SourceDisplayLabel>
                <TargetDisplayLabel>Tendon nodes</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <PropertyCategory typeName="IsmTendon_category" displayLabel="Tendon" priority="190" />
    <ECEntityClass typeName="IsmTendon" modifier="None" displayLabel="Tendon">
        <BaseClass>bis:PhysicalElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="StrandCount" typeName="double" displayLabel="Strand Count" category="IsmTendon_category" description="Total strand count in this Tendon." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmTendonSet_Tendon" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="assembles" polymorphic="false">
            <Class class="IsmTendonSet" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="is part of" polymorphic="false">
            <Class class="IsmTendon" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Tendon set</SourceDisplayLabel>
                <TargetDisplayLabel>Tendons</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmTendonSystem" modifier="Abstract" displayLabel="Tendon System">
        <BaseClass>bis:DefinitionElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
        <ECProperty propertyName="AngularFriction" typeName="double" displayLabel="Angular Friction" description="Friction coefficient per angular change of Tendon for use with intentional curvatures." />
        <ECProperty propertyName="WobbleFriction" typeName="double" displayLabel="Wobble Friction" description="Friction coefficient per unit length of Tendon due to unintentional curvatures." />
        <ECProperty propertyName="StrandType" typeName="TendonStrandType" displayLabel="Strand Type" description="Type of strands that form or run in the Tendon." />
        <ECProperty propertyName="StrandArea" typeName="double" displayLabel="Strand Area" kindOfQuantity="AECU:AREA_SMALL" description="Area of a single strand." />
        <ECProperty propertyName="StrandElasticModulus" typeName="double" displayLabel="Strand Elastic Modulus" kindOfQuantity="AECU:PRESSURE" description="Strand resistance to being deformed elastically when stress is applied to it." />
        <ECProperty propertyName="StrandUltimateTensileStrength" typeName="double" displayLabel="Strand Ultimate Tensile Strength" kindOfQuantity="AECU:PRESSURE" description="Maximum amount of stress that a strand can withstand while being stretched or pulled before breaking." />
        <ECProperty propertyName="StrandYieldStrength" typeName="double" displayLabel="Strand Yield Strength" kindOfQuantity="AECU:PRESSURE" description="Stress at which a predetermined amount of permanent strand deformation occurs." />
        <ECProperty propertyName="StrandFinalEffectiveStress" typeName="double" displayLabel="Strand Final Effective Stress" kindOfQuantity="AECU:PRESSURE" description="Average stress along the length of a tendon after all immediate and long-term losses." />
        <ECProperty propertyName="LongTermLosses" typeName="double" displayLabel="Long Term Losses" kindOfQuantity="AECU:PRESSURE" description="Lump-sum long-term losses to use in calculating effective tendon stresses." />
        <ECProperty propertyName="MinCurvatureRadius" typeName="double" displayLabel="Minimum Curvature Radius" kindOfQuantity="AECU:LENGTH" description="Minimum radius of curvature acceptable for this Tendon System." />
        <ECProperty propertyName="PostTensioningSystem" typeName="PostTensioningSystem" displayLabel="Post Tensioning System" description="Type of post-tensioning used for Tendons." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmTendonDuctedSystem" modifier="None" displayLabel="Tendon Ducted System">
        <BaseClass>IsmTendonSystem</BaseClass>
        <ECProperty propertyName="DuctShape" typeName="TendonDuctShapeType" displayLabel="Duct Shape" description="Profile (shape) of the duct used in this tendon system." />
        <ECProperty propertyName="DuctProfile" typeName="TendonDuctProfile" displayLabel="Duct Profile" description="Profile (shape) of the duct used in this tendon system." />
        <ECProperty propertyName="DuctWidth" typeName="double" displayLabel="Duct Width" kindOfQuantity="AECU:LENGTH_SHORT" description="Width of the Duct Profile, which extends to the outside of the duct wall." />
        <ECProperty propertyName="DuctHeight" typeName="double" displayLabel="Duct Height" kindOfQuantity="AECU:LENGTH_SHORT" description="Height of the Duct Profile, which extends to the outside of the duct wall." />
        <ECProperty propertyName="StrandsPerDuct" typeName="double" displayLabel="Strands per Duct" description="Maximum number of strands to place in a single duct." />
        <ECProperty propertyName="DuctWallThickness" typeName="double" displayLabel="Duct Wall Thickness" kindOfQuantity="AECU:LENGTH_SHORT" description="Thickness of the duct wall." />
        <ECProperty propertyName="DuctMaterial" typeName="DuctMaterial" displayLabel="Duct Material" description="Material, which the duct is made of." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmTendonCorrugatedDuctedSystem" modifier="Sealed" displayLabel="Tendon Corrugated Ducted System">
        <BaseClass>IsmTendonDuctedSystem</BaseClass>
        <ECProperty propertyName="CorrugationDimension" typeName="double" displayLabel="Corrugation Dimension" description="Corrugation dimension (thickness), starting from the Duct Width and Duct Height dimensions and extending to the outside of the ridge/rib." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmTendonSmoothDuctedSystem" modifier="Sealed" displayLabel="Tendon Smooth Ducted System">
        <BaseClass>IsmTendonDuctedSystem</BaseClass>
    </ECEntityClass>

    <ECEntityClass typeName="IsmTendonTightlySheathedSystem" modifier="None" displayLabel="Tendon Tightly Sheathed System">
        <BaseClass>IsmTendonSystem</BaseClass>
        <ECProperty propertyName="Diameter" typeName="double" description="Maximum diameter of the sheathed Tendons." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmTendon_System" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="is part of" polymorphic="false">
            <Class class="IsmTendon" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="has" polymorphic="true">
            <Class class="IsmTendonSystem" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Tendons</SourceDisplayLabel>
                <TargetDisplayLabel>Tendon system</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <PropertyCategory typeName="IsmTendonPart_category" displayLabel="Tendon Part" priority="190" />
    <ECEntityClass typeName="IsmTendonPart" modifier="Abstract" displayLabel="Tendon Part">
        <BaseClass>bis:PhysicalElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="Orientation" typeName="Point3d" category="IsmTendonPart_category" description="Orientation vector of this tendon part." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmTendon_TendonPart" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="has" polymorphic="false">
            <Class class="IsmTendon" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="belongs to" polymorphic="true">
            <Class class="IsmTendonPart" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Tendon</SourceDisplayLabel>
                <TargetDisplayLabel>Tendon parts</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <PropertyCategory typeName="IsmTendonSegment_category" displayLabel="Tendon Segment" priority="180" />
    <ECEntityClass typeName="IsmTendonSegment" modifier="None" displayLabel="Tendon Segment">
        <BaseClass>IsmTendonPart</BaseClass>
        <ECProperty propertyName="Harped" typeName="boolean" category="IsmTendonSegment_category" description="Property that describes the intent of making this tendon segment a straight line rather than a parabolic or some other b-spline curve." />
        <ECProperty propertyName="InflectionRatio" typeName="double" displayLabel="Inflection Ratio" category="IsmTendonSegment_category" description="Location of inflection point as a fractional distance along location projection of this segment." />
        <ECStructProperty propertyName="Location" typeName="IsmPrimitiveGeometry" category="IsmTendonSegment_category" description="Any 3D curve that represents the CGS (center gravity steel) location (path) of this tendon segment as closely as possible." />
        <ECStructProperty propertyName="DuctLocation" typeName="IsmPrimitiveGeometry" displayLabel="Duct Location" category="IsmTendonSegment_category" description="Any 3D curve that represents the duct centerline location (path) of this tendon segment as closely as possible." />
        <ECProperty propertyName="StartStress" typeName="double" displayLabel="Start Stress" category="IsmTendonSegment_category" kindOfQuantity="AECU:AREA_FORCE_LARGE" description="Stress at the segment Start Node after all short and long term losses have occurred." />
        <ECProperty propertyName="EndStress" typeName="double" displayLabel="End Stress" category="IsmTendonSegment_category" kindOfQuantity="AECU:AREA_FORCE_LARGE" description="Stress at the segment End Node after all short and long term losses have occurred." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmTendonSegment_StartNode" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="false">
            <Class class="IsmTendonSegment" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="false">
            <Class class="IsmTendonNode" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Tendon segments</SourceDisplayLabel>
                <TargetDisplayLabel>Tendon node</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmTendonSegment_EndNode" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="false">
            <Class class="IsmTendonSegment" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="false">
            <Class class="IsmTendonNode" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Tendon segments</SourceDisplayLabel>
                <TargetDisplayLabel>Tendon node</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <PropertyCategory typeName="IsmTendonAnchor_category" displayLabel="Tendon Anchor" priority="180" />
    <ECEntityClass typeName="IsmTendonAnchor" modifier="Abstract" displayLabel="Tendon Anchor">
        <BaseClass>IsmTendonPart</BaseClass>
        <ECProperty propertyName="AnchorFriction" typeName="double" displayLabel="Anchor Friction" category="IsmTendonAnchor_category" description="Friction coefficient for strands moving through the anchor." />
        <ECProperty propertyName="AnchorType" typeName="AnchorType" displayLabel="Anchor Type" category="IsmTendonAnchor_category" />
        <ECProperty propertyName="Direction" typeName="Point3d" category="IsmTendonAnchor_category" description="Direction vector, defining where Tendon strands are coming out of this anchor." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmTendonAnchor_Node" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..1)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmTendonAnchor" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="false">
            <Class class="IsmTendonNode" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Tendon anchor</SourceDisplayLabel>
                <TargetDisplayLabel>Tendon node</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <PropertyCategory typeName="IsmTendonTensioningEndAnchor_category" displayLabel="Tendon Tensioning End Anchor" priority="170" />
    <ECEntityClass typeName="IsmTendonTensioningEndAnchor" modifier="None" displayLabel="Tendon Tensioning-End Anchor">
        <BaseClass>IsmTendonAnchor</BaseClass>
        <ECProperty propertyName="JackStress" typeName="double" displayLabel="Jack Stress" category="IsmTendonTensioningEndAnchor_category" kindOfQuantity="AECU:AREA_FORCE_LARGE" description="Stress applied to the strands at anchor by the tensioning jack." />
        <ECProperty propertyName="SeatingDistance" typeName="double" displayLabel="Seating Distance" category="IsmTendonTensioningEndAnchor_category" kindOfQuantity="AECU:LENGTH" description="Distance strands retract back into anchor while seating the wedges." />
        <ECProperty propertyName="Elongation" typeName="double" category="IsmTendonTensioningEndAnchor_category" kindOfQuantity="AECU:LENGTH" description="Elongation of the Tendon stressed by this anchor." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmTendonFixedEndAnchor" modifier="None" displayLabel="Tendon Fixed-End Anchor">
        <BaseClass>IsmTendonAnchor</BaseClass>
    </ECEntityClass>

    <ECEnumeration typeName="DesignMethodType" backingTypeName="int" isStrict="true">
        <ECEnumerator value="10" name="Check" />
        <ECEnumerator value="20" name="Design" />
        <ECEnumerator value="100" name="Other" />
    </ECEnumeration>

    <ECEnumeration typeName="StatusType" backingTypeName="int" isStrict="true">
        <ECEnumerator value="10" name="Fail" />
        <ECEnumerator value="20" name="Pass" />
        <ECEnumerator value="30" name="PassWithWarnings" displayLabel="Pass With Warnings" />
    </ECEnumeration>

    <ECEnumeration typeName="CheckNameType" backingTypeName="int" isStrict="true">
        <ECEnumerator value="100" name="AxialCompression" displayLabel="Axial Compression" />
        <ECEnumerator value="200" name="AxialTension" displayLabel="Axial Tension" />
        <ECEnumerator value="300" name="Bending" />
        <ECEnumerator value="400" name="CrackWidth" displayLabel="Crack Width" />
        <ECEnumerator value="500" name="Deflection" />
        <ECEnumerator value="600" name="Interaction" />
        <ECEnumerator value="700" name="Shear" />
        <ECEnumerator value="800" name="Torsion" />
        <ECEnumerator value="1000" name="Other" />
    </ECEnumeration>

    <ECEnumeration typeName="CheckKindType" backingTypeName="int" isStrict="true">
        <ECEnumerator value="100" name="Serviceability" displayLabel="Serviceability" />
        <ECEnumerator value="200" name="Strength" />
        <ECEnumerator value="1000" name="Other" />
    </ECEnumeration>

    <ECEnumeration typeName="QuantityKindType" backingTypeName="int" isStrict="true">
        <ECEnumerator value="100" name="Angle" />
        <ECEnumerator value="200" name="Area" />
        <ECEnumerator value="300" name="Density" />
        <ECEnumerator value="400" name="Force" />
        <ECEnumerator value="500" name="ForceMoment" displayLabel="Force Moment" />
        <ECEnumerator value="600" name="Length" />
        <ECEnumerator value="700" name="Mass" />
        <ECEnumerator value="800" name="Volume" />
        <ECEnumerator value="900" name="Time" />
        <ECEnumerator value="1000" name="TemperatureAbsolute" displayLabel="Temperature Absolute" />
        <ECEnumerator value="1100" name="TemperatureChange" displayLabel="Temperature Change" />
        <ECEnumerator value="1110" name="ThermalExpansionCoefficient" displayLabel="Thermal Expansion Coefficient" />
        <ECEnumerator value="1200" name="Stress" />
        <ECEnumerator value="1300" name="Other" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmPointForceMemberLoad_category" displayLabel="Point Force Member Load" priority="180" />
    <ECEntityClass typeName="IsmPointForceMemberLoad" modifier="None" displayLabel="Point Force Member Load">
        <BaseClass>IsmForceMemberLoad</BaseClass>
        <ECProperty propertyName="Force" typeName="Point3d" category="IsmPointForceMemberLoad_category" kindOfQuantity="AECU:FORCE" description="The 3D force vector in global coordinates." />
        <ECProperty propertyName="Moment" typeName="Point3d" category="IsmPointForceMemberLoad_category" kindOfQuantity="AECU:MOMENT" description="The 3D moment vector in global coordinates." />
        <ECProperty propertyName="Location" typeName="Point3d" category="IsmPointForceMemberLoad_category" kindOfQuantity="AECU:LENGTH" description="The location in global coordinates." />
        <ECProperty propertyName="IsNodalLoad" typeName="boolean" displayLabel="Is Nodal Load" category="IsmPointForceMemberLoad_category" description="This flag specifies if this point load was initially a nodal load that has been converted to a member load in ISM." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmProxy_category" displayLabel="Proxy" priority="190" />
    <ECEntityClass typeName="IsmProxy" modifier="None" displayLabel="Proxy">
        <BaseClass>bis:PhysicalElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
        <ECProperty propertyName="Location" typeName="binary" category="IsmProxy_category" kindOfQuantity="AECU:LENGTH" description="The geometry that should be displayed for the proxy object." />
        <ECProperty propertyName="ProxyType" typeName="string" displayLabel="Proxy Type" category="IsmProxy_category" description="The object type that this proxy represents." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmRadialGrid" modifier="None" displayLabel="Radial Grid">
        <BaseClass>IsmGrid</BaseClass>
    </ECEntityClass>

    <PropertyCategory typeName="IsmRadialGridLine_category" displayLabel="Radial Grid Line" priority="180" />
    <ECEntityClass typeName="IsmRadialGridLine" modifier="None" displayLabel="Radial Grid Line">
        <BaseClass>IsmGridLine</BaseClass>
        <ECProperty propertyName="Angle" typeName="double" category="IsmRadialGridLine_category" kindOfQuantity="AECU:ANGLE" description="The orientation angle of the grid line." />
        <ECProperty propertyName="MinimumRadius" typeName="double" displayLabel="Minimum Radius" category="IsmRadialGridLine_category" kindOfQuantity="AECU:LENGTH" description="The distance from the Origin to the grid line start." />
        <ECProperty propertyName="MaximumRadius" typeName="double" displayLabel="Maximum Radius" category="IsmRadialGridLine_category" kindOfQuantity="AECU:LENGTH" description="The distance from the Origin to the grid line end." />
    </ECEntityClass>


    <ECEntityClass typeName="IsmRebarCage" modifier="None" displayLabel="Rebar Cage" >
        <BaseClass>bis:PhysicalElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmRebar_Cage" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="Is part of" polymorphic="true">
            <Class class="IsmRebar" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="has" polymorphic="false">
            <Class class="IsmRebarCage" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Rebars</SourceDisplayLabel>
                <TargetDisplayLabel>Rebar cage</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEnumeration typeName="RebarMaterialCoatingType" backingTypeName="int" isStrict="true">
        <ECEnumerator value="10" name="Epoxy" />
        <ECEnumerator value="20" name="Galvanized" displayLabel="Galvanized" />
        <ECEnumerator value="30" name="None" />
        <ECEnumerator value="1000" name="Other" />
    </ECEnumeration>

    <ECEnumeration typeName="RebarMaterialDetailingCodeType" backingTypeName="int" isStrict="true">
        <ECEnumerator value="100" name="A233" displayLabel="A23.3" />
        <ECEnumerator value="200" name="ACI318" displayLabel="ACI 318" />
        <ECEnumerator value="300" name="ACI318Metric" displayLabel="ACI 318 Metric" />
        <ECEnumerator value="400" name="AS3600" displayLabel="AS 3600" />
        <ECEnumerator value="500" name="BS8110" displayLabel="BS 8110" />
        <ECEnumerator value="600" name="CP65" displayLabel="CP 65" />
        <ECEnumerator value="700" name="EuroCode2" displayLabel="Euro Code 2" />
        <ECEnumerator value="800" name="EuroCode2Malaysia" displayLabel="Euro Code 2 Malaysia" />
        <ECEnumerator value="900" name="EuroCode2Singapore" displayLabel="Euro Code 2 Singapore" />
        <ECEnumerator value="1000" name="EuroCode2UK" displayLabel="Euro Code 2 UK" />
        <ECEnumerator value="1100" name="GB50010" displayLabel="GB 50010" />
        <ECEnumerator value="1200" name="IS456" displayLabel="IS 456" />
    </ECEnumeration>

    <ECEnumeration typeName="RebarMaterialSurfaceType" backingTypeName="int" isStrict="true">
        <ECEnumerator value="10" name="Deformed" />
        <ECEnumerator value="20" name="Smooth" />
        <ECEnumerator value="1000" name="Other" />
    </ECEnumeration>

    <ECEntityClass typeName="IsmRebarMaterial" modifier="None" displayLabel="Rebar Material">
        <BaseClass>bis:DefinitionElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
        <ECProperty propertyName="Area" typeName="double" kindOfQuantity="AECU:AREA_SMALL" description="The cross sectional area of the bar." />
        <ECProperty propertyName="Coating" typeName="RebarMaterialCoatingType" description="Coating on the bars." />
        <ECProperty propertyName="DetailingCode" typeName="RebarMaterialDetailingCodeType" displayLabel="Detailing Code" description="The detailing code that specifies standard bend diameters, hook extensions, etc." />
        <ECProperty propertyName="Diameter" typeName="double" kindOfQuantity="AECU:LENGTH_SHORT" description="The nominal diameter of the bar (size)." />
        <ECProperty propertyName="Surface" typeName="RebarMaterialSurfaceType" description="Surface on the bars." />
        <ECProperty propertyName="YieldStress" typeName="double" displayLabel="Yield Stress" kindOfQuantity="AECU:PRESSURE" description="Minimum yield strength." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmRebar_Material" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmRebar" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmRebarMaterial" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Rebars</SourceDisplayLabel>
                <TargetDisplayLabel>Rebar material</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmRebar_Members" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmRebar" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmSpanningMember" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Rebars</SourceDisplayLabel>
                <TargetDisplayLabel>Members</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <PropertyCategory typeName="IsmRectangleParallelRebar_category" displayLabel="Rectangle Parallel Rebar" priority="170" />
    <ECEntityClass typeName="IsmRectangleParallelRebar" modifier="None" displayLabel="Rectangle Parallel Rebar" >
        <BaseClass>IsmParallelRebar</BaseClass>
        <ECProperty propertyName="BottomBarCount" typeName="int" displayLabel="Bottom Bar Count" category="IsmRectangleParallelRebar_category" description="The number of between the corners on the bottom (negative T-Axis) face." />
        <ECProperty propertyName="CornerBarCount" typeName="int" displayLabel="Corner Bar Count" category="IsmRectangleParallelRebar_category" description="The number of bars in the corners (must be 0 or 4)." />
        <ECProperty propertyName="Depth" typeName="double" category="IsmRectangleParallelRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Total (T-Axis) depth from outer bar center to outer bar center." />
        <ECProperty propertyName="LeftBarCount" typeName="int" displayLabel="Left Bar Count" category="IsmRectangleParallelRebar_category" description="The number of between the corners on the left (negative S-Axis) face." />
        <ECProperty propertyName="RightBarCount" typeName="int" displayLabel="Right Bar Count" category="IsmRectangleParallelRebar_category" description="The number of between the corners on the right (positive S-Axis) face." />
        <ECProperty propertyName="TopBarCount" typeName="int" displayLabel="Top Bar Count" category="IsmRectangleParallelRebar_category" description="The number of between the corners on the top (positive T-Axis) face." />
        <ECProperty propertyName="Width" typeName="double" category="IsmRectangleParallelRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="Total (S-Axis) width from outer bar center to outer bar center." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmRectangleTieRebar_category" displayLabel="Rectangle Tie Rebar" priority="170" />
    <ECEntityClass typeName="IsmRectangleTieRebar" modifier="None" displayLabel="Rectangle Tie Rebar" >
        <BaseClass>IsmPerpendicularRebar</BaseClass>
        <ECProperty propertyName="Depth" typeName="double" category="IsmRectangleTieRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The depth of the rectangle, measured to center of bar along the T-Axis." />
        <ECProperty propertyName="Width" typeName="double" category="IsmRectangleTieRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The width of the rectangle, measured to center of bar along the S-Axis." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmShearStudZone_category" displayLabel="Rectangle Tie Rebar" priority="190" />
    <ECEntityClass typeName="IsmShearStudZone" modifier="None" displayLabel="Shear Stud Zone" >
        <BaseClass>bis:PhysicalElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="ZoneLength" typeName="double" displayLabel="Zone Length" category="IsmShearStudZone_category" kindOfQuantity="AECU:LENGTH" description="The length of this zone, starting from end of the zone with the previous Index." />
        <ECProperty propertyName="Index" typeName="int" category="IsmShearStudZone_category" description="Zero-based index corresponding to the order of the zones in the Member." />
        <ECProperty propertyName="StudCount" typeName="int" displayLabel="Stud Count" category="IsmShearStudZone_category" description="The number of studs in this zone." />
        <ECProperty propertyName="StudDiameter" typeName="double" displayLabel="Stud Diameter" category="IsmShearStudZone_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The diameter of the stud (not the head)." />
        <ECProperty propertyName="StudLength" typeName="double" displayLabel="Stud Length" category="IsmShearStudZone_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The total length (height) of each stud (including the head)." />
        <ECProperty propertyName="StudTensileStrength" typeName="double" displayLabel="Stud Tensile Length" category="IsmShearStudZone_category" kindOfQuantity="AECU:AREA_FORCE_LARGE" description="The tensile strength of the stud steel." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmShearStudZone_Member" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmShearStudZone" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmCurveMember" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Shear stud zones</SourceDisplayLabel>
                <TargetDisplayLabel>Members</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmSineWaveSteelDeck" modifier="None" displayLabel="Sine Wave Steel Deck" >
        <BaseClass>IsmParametricSteelDeck</BaseClass>
        <ECProperty propertyName="Depth" typeName="double" kindOfQuantity="AECU:LENGTH_SHORT" description="Total depth of the deck (from top to bottom)." />
        <ECProperty propertyName="WaveLength" typeName="double" displayLabel="Wave Length" kindOfQuantity="AECU:LENGTH_SHORT" description="Width of a full wave cycle (repeat length)." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmSingleRebar" modifier="None" displayLabel="Single Rebar" >
        <BaseClass>IsmParallelRebar</BaseClass>
    </ECEntityClass>

    <ECEnumeration typeName="GirderLoadKind" backingTypeName="int" isStrict="true">
        <ECEnumerator value="10" name="Service" />
        <ECEnumerator value="20" name="Ultimate" />
    </ECEnumeration>

    <ECEntityClass typeName="IsmSjiParallelChordJoistGirder" modifier="None" displayLabel="Sji Parallel Chord Joist Girder" >
        <BaseClass>IsmParametricSteelJoist</BaseClass>
        <ECProperty propertyName="Depth" typeName="double" kindOfQuantity="AECU:LENGTH_SHORT" description="Total depth of the joist-girder." />
        <ECProperty propertyName="LoadKind" typeName="GirderLoadKind" displayLabel="Load Kind" description="What kind of value is Point Load?" />
        <ECProperty propertyName="PointLoad" typeName="double" displayLabel="Point Load" kindOfQuantity="AECU:FORCE" description="Vertical (positive downward) load at each panel point." />
        <ECProperty propertyName="Spaces" typeName="int" description="Number of equal spaces that define panels (number of loads + 1)." />
    </ECEntityClass>

    <PropertyCategory typeName="IsmSpiralTieRebar_category" displayLabel="Spiral Tie Rebar" priority="170" />
    <ECEntityClass typeName="IsmSpiralTieRebar" modifier="None" displayLabel="Spiral Tie Rebar" >
        <BaseClass>IsmPerpendicularRebar</BaseClass>
        <ECProperty propertyName="Diameter" typeName="double" category="IsmSpiralTieRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The diameter of the helix (to center of bar)." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmStandardSteelDeck" modifier="None" displayLabel="Standard Steel Deck" >
        <BaseClass>IsmParametricSteelDeck</BaseClass>
        <ECProperty propertyName="Depth" typeName="double" displayLabel="Depth" kindOfQuantity="AECU:LENGTH_SHORT" description="Total depth of the deck (from top to bottom)." />
        <ECProperty propertyName="TopHorizontalWidth" typeName="double" displayLabel="Top Horizontal Width" description="Width of horizontal top flange." />
        <ECProperty propertyName="BottomHorizontalWidth" typeName="double" displayLabel="Bottom Horizontal Width" description="Width of horizontal bottom flange." />
        <ECProperty propertyName="DiagonalWidth" typeName="double" displayLabel="Diagonal Width" kindOfQuantity="AECU:LENGTH_SHORT" description="Horizontal width of web diagonals." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmStory_Grids" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmStory" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmGrid" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Stories</SourceDisplayLabel>
                <TargetDisplayLabel>Grids</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <PropertyCategory typeName="IsmStraightPerpendicularRebar_category" displayLabel="Straight Perpendicular Rebar" priority="170" />
    <ECEntityClass typeName="IsmStraightPerpendicularRebar" modifier="None" displayLabel="Straight Perpendicular Rebar" >
        <BaseClass>IsmPerpendicularRebar</BaseClass>
        <ECProperty propertyName="Length" typeName="double" category="IsmStraightPerpendicularRebar_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The length of the bar." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmSubStructure" modifier="None" displayLabel="Sub Structure" >
        <BaseClass>bis:PhysicalElement</BaseClass>
        <BaseClass>IIsmObject</BaseClass>
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmSubStructure_Objects" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmSubStructure" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="is referred by" polymorphic="true">
            <Class class="IIsmObject" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Sub structures</SourceDisplayLabel>
                <TargetDisplayLabel>Objects</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmSupportMember_RepresentedMembers" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmSupportMember" />
        </Source>
        <Target multiplicity="(0..*)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmSpanningMember" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Supports</SourceDisplayLabel>
                <TargetDisplayLabel>Members</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>


    <PropertyCategory typeName="IsmSurfaceForceMemberLoad_category" displayLabel="Surface Force Member Load" priority="170" />
    <ECEntityClass typeName="IsmSurfaceForceMemberLoad" modifier="Sealed" displayLabel="Surface Force Member Load" >
        <BaseClass>IsmForceMemberLoad</BaseClass>
        <ECProperty propertyName="Force0" typeName="Point3d" displayLabel="Force #0" kindOfQuantity="AECU:AREA_FORCE" category="IsmSurfaceForceMemberLoad_category" description="The 3d force vector per unit area at reference point 0." />
        <ECProperty propertyName="Force1" typeName="Point3d" displayLabel="Force #1" kindOfQuantity="AECU:AREA_FORCE" category="IsmSurfaceForceMemberLoad_category" description="The 3d force vector per unit area at reference point 1." />
        <ECProperty propertyName="Force2" typeName="Point3d" displayLabel="Force #2" kindOfQuantity="AECU:AREA_FORCE" category="IsmSurfaceForceMemberLoad_category" description="The 3d force vector per unit area at reference point 2." />
        <ECProperty propertyName="Moment0" typeName="Point3d" displayLabel="Moment #0" kindOfQuantity="AECU:AREA_MOMENT" category="IsmSurfaceForceMemberLoad_category" description="The 3d force moment per unit area at reference point 0." />
        <ECProperty propertyName="Moment1" typeName="Point3d" displayLabel="Moment #1" kindOfQuantity="AECU:AREA_MOMENT" category="IsmSurfaceForceMemberLoad_category" description="The 3d force moment per unit area at reference point 1."/>
        <ECProperty propertyName="Moment2" typeName="Point3d" displayLabel="Moment #2" kindOfQuantity="AECU:AREA_MOMENT" category="IsmSurfaceForceMemberLoad_category" description="The 3d force moment per unit area at reference point 2."/>
        <ECStructProperty propertyName="Location" typeName="IsmPrimitiveGeometry" displayLabel="Location" category="IsmSurfaceForceMemberLoad_category" description="The outer boundary of the load. Must be a closed curve." />
        <ECProperty propertyName="ReferencePoint0" typeName="Point3d" displayLabel="Reference Point #0" kindOfQuantity="AECU:LENGTH" category="IsmSurfaceForceMemberLoad_category" description="The location where Force0 and Moment0 are defined." />
        <ECProperty propertyName="ReferencePoint1" typeName="Point3d" displayLabel="Reference Point #1" kindOfQuantity="AECU:LENGTH" category="IsmSurfaceForceMemberLoad_category" description="The location where Force0 and Moment1 are defined."/>
        <ECProperty propertyName="ReferencePoint2" typeName="Point3d" displayLabel="Reference Point #2" kindOfQuantity="AECU:LENGTH" category="IsmSurfaceForceMemberLoad_category" description="The location where Force0 and Moment2 are defined."/>
    </ECEntityClass>

    <ECEnumeration typeName="SurfaceMemberBendingBehavior" backingTypeName="int" isStrict="true">
        <ECEnumerator value="1" name="OneWay" displayLabel="One Way" />
        <ECEnumerator value="3" name="TwoWayTwistFree" displayLabel="Two Way Twist Free" />
        <ECEnumerator value="7" name="TwoWay" displayLabel="Two Way" />
    </ECEnumeration>

    <ECEnumeration typeName="PlacementSurface" backingTypeName="int" isStrict="true">
        <ECEnumerator value="10" name="Bottom" displayLabel="Bottom" />
        <ECEnumerator value="20" name="Center" displayLabel="Center" />
        <ECEnumerator value="30" name="Top" />
    </ECEnumeration>

    <ECEnumeration typeName="SurfaceMemberUse" backingTypeName="int" isStrict="true">
        <ECEnumerator value="100" name="Cladding" />
        <ECEnumerator value="200" name="Footing" />
        <ECEnumerator value="300" name="PileCap" displayLabel="Pile Cap" />
        <ECEnumerator value="400" name="Slab" />
        <ECEnumerator value="600" name="Wall" />
    </ECEnumeration>

    <ECEnumeration typeName="SurfaceMemberSystemKind" backingTypeName="int" isStrict="true">
        <ECEnumerator value="100" name="ConcreteUnspecified" displayLabel="Concrete Unspecified" />
        <ECEnumerator value="200" name="ConcreteCastInPlace" displayLabel="Concrete Cast in Place" />
        <ECEnumerator value="300" name="ConcretePrecast" displayLabel="Concrete Precast" />
        <ECEnumerator value="350" name="MasonryUnspecified" displayLabel="Masonry Unspecified" />
        <ECEnumerator value="400" name="SteelUnspecified" displayLabel="Steel Unspecified" />
        <ECEnumerator value="410" name="SteelDeck" displayLabel="Steel Deck" />
        <ECEnumerator value="420" name="SteelDeckWithConcreteFill" displayLabel="Steel Deck with Concrete Fill" />
        <ECEnumerator value="500" name="TimberUnspecified" displayLabel="Timber Unspecified" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmSurfaceMember_category" displayLabel="Surface Member" priority="180" />
    <ECEntityClass typeName="IsmSurfaceMember" modifier="Sealed" displayLabel="Surface Member" >
        <BaseClass>IsmSpanningMember</BaseClass>
        <ECStructProperty propertyName="Location" typeName="IsmArrayGeometry" category="IsmSurfaceMember_category" description="The contiguous finite trimmed surface of this member in space." />
        <ECProperty propertyName="BendingBehavior" typeName="SurfaceMemberBendingBehavior" displayLabel="Bending Behavior" category="IsmSurfaceMember_category" description="The analytical behavior of this region when subjected to transverse loads." />
        <ECProperty propertyName="SurfaceOffset" typeName="double" displayLabel="Surface Offset" kindOfQuantity="AECU:LENGTH_SHORT" category="IsmSurfaceMember_category" description="An offset out of the Surface Member's surface in the up direction of this region." />
        <ECProperty propertyName="PlacementSurface" typeName="PlacementSurface" displayLabel="Placement Surface" category="IsmSurfaceMember_category" description="The top/center/bottom reference surface on analytical location that physical volume is extruded from." />
        <ECProperty propertyName="RAxisOrientation" typeName="Point3d" displayLabel="R-Axis Orientation" category="IsmSurfaceMember_category" description="Orientation of R-Axis in 3d space." />
        <ECProperty propertyName="SystemKind" typeName="SurfaceMemberSystemKind" displayLabel="System Kind" category="IsmSurfaceMember_category" description="The kind of system that this member is/uses." />
        <ECProperty propertyName="Thickness" typeName="double" displayLabel="Thickness" kindOfQuantity="AECU:LENGTH_SHORT" category="IsmSurfaceMember_category" description="The thickness of this region." />
        <ECProperty propertyName="Thickness1" typeName="double" displayLabel="Thickness 1" kindOfQuantity="AECU:LENGTH_SHORT" category="IsmSurfaceMember_category" description="The thickness of this region at global point Location1." />
        <ECProperty propertyName="Thickness2" typeName="double" displayLabel="Thickness 2" kindOfQuantity="AECU:LENGTH_SHORT" category="IsmSurfaceMember_category" description="The thickness of this region at global point Location2." />
        <ECProperty propertyName="Thickness3" typeName="double" displayLabel="Thickness 3" kindOfQuantity="AECU:LENGTH_SHORT" category="IsmSurfaceMember_category" description="The thickness of this region at global point Location3." />
        <ECProperty propertyName="Location1" typeName="Point3d" displayLabel="Location 1" kindOfQuantity="AECU:LENGTH" category="IsmSurfaceMember_category" description="The global point where the thickness of this region is defined by Thickness1." />
        <ECProperty propertyName="Location2" typeName="Point3d" displayLabel="Location 2" kindOfQuantity="AECU:LENGTH" category="IsmSurfaceMember_category" description="The global point where the thickness of this region is defined by Thickness2." />
        <ECProperty propertyName="Location3" typeName="Point3d" displayLabel="Location 3" kindOfQuantity="AECU:LENGTH" category="IsmSurfaceMember_category" description="The global point where the thickness of this region is defined by Thickness3." />
        <ECProperty propertyName="Use" typeName="SurfaceMemberUse" category="IsmSurfaceMember_category" description="Tags this modifier as being of a certain use." />
        <ECProperty propertyName="AutoArea" typeName="double" displayLabel="Auto Area"  kindOfQuantity="AECU:AREA" category="Calculated_category" description="Auto-calculated surface member area value." />
        <ECProperty propertyName="AutoVolume" typeName="double" displayLabel="Auto Volume" kindOfQuantity="AECU:VOLUME" category="Calculated_category" description="Auto-calculated surface member volume value." />
        <ECProperty propertyName="AutoWeight" typeName="double" displayLabel="Auto Weight" kindOfQuantity="AECU:WEIGHT" category="Calculated_category" description="Auto-calculated surface member weight value." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmSurfaceMember_Material" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmSurfaceMember" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmMaterial" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Surface members</SourceDisplayLabel>
                <TargetDisplayLabel>Material</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEnumeration typeName="SurfaceMemberModifierUse" backingTypeName="int" isStrict="true">
        <ECEnumerator value="100" name="ColumnCapital" displayLabel="Column Capital" />
    </ECEnumeration>

    <PropertyCategory typeName="IsmSurfaceMemberModifier_category" displayLabel="Surface Member Modifier" priority="190" />
    <ECEntityClass typeName="IsmSurfaceMemberModifier" modifier="Sealed" displayLabel="Surface Member Modifier" >
        <BaseClass>bis:PhysicalElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECProperty propertyName="RAxisOrientation" typeName="Point3d" displayLabel="R-Axis Orientation" category="IsmSurfaceMemberModifier_category" description="Orientation of R-Axis in 3d space." />
        <ECProperty propertyName="Use" typeName="SurfaceMemberModifierUse" category="IsmSurfaceMemberModifier_category" description="Tags this modifier as being of a certain use." />
        <ECProperty propertyName="Thickness" typeName="double" category="IsmSurfaceMemberModifier_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The thickness of this region." />
        <ECStructProperty propertyName="Location" typeName="IsmArrayGeometry" category="IsmSurfaceMemberModifier_category" description="The contiguous finite trimmed surface of this member in space." />
        <ECProperty propertyName="Thickness1" typeName="double" displayLabel="Thickness 1" category="IsmSurfaceMemberModifier_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The thickness of this region at global point Location1." />
        <ECProperty propertyName="Thickness2" typeName="double" displayLabel="Thickness 2" category="IsmSurfaceMemberModifier_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The thickness of this region at global point Location2." />
        <ECProperty propertyName="Thickness3" typeName="double" displayLabel="Thickness 3" category="IsmSurfaceMemberModifier_category" kindOfQuantity="AECU:LENGTH_SHORT" description="The thickness of this region at global point Location3." />
        <ECProperty propertyName="Location1" typeName="Point3d" displayLabel="Location 1" category="IsmSurfaceMemberModifier_category" kindOfQuantity="AECU:LENGTH" description="The global point where the thickness of this region is defined by Thickness1." />
        <ECProperty propertyName="Location2" typeName="Point3d" displayLabel="Location 2" category="IsmSurfaceMemberModifier_category" kindOfQuantity="AECU:LENGTH" description="The global point where the thickness of this region is defined by Thickness2." />
        <ECProperty propertyName="Location3" typeName="Point3d" displayLabel="Location 3" category="IsmSurfaceMemberModifier_category" kindOfQuantity="AECU:LENGTH" description="The global point where the thickness of this region is defined by Thickness3." />
        <ECProperty propertyName="BendingBehavior" typeName="SurfaceMemberBendingBehavior" displayLabel="Bending Behavior" category="IsmSurfaceMemberModifier_category" description="The analytical behavior of this region when subjected to transverse loads." />
        <ECProperty propertyName="ModificationPriority" typeName="int" displayLabel="Modification Priority" category="IsmSurfaceMemberModifier_category" description="The relative order of modification when multiple Surface Member Modifiers overlap." />
        <ECProperty propertyName="SurfaceOffset" typeName="double" displayLabel="Surface Offset" category="IsmSurfaceMemberModifier_category" kindOfQuantity="AECU:LENGTH_SHORT" description="An offset out of the Surface Member's surface in the up direction of this region." />
        <ECProperty propertyName="PlacementSurface" typeName="PlacementSurface" displayLabel="Placement Surface" category="IsmSurfaceMemberModifier_category" description="The top/center/bottom reference surface." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmSurfaceMemberModifier_Material" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmSurfaceMemberModifier" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmMaterial" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Surface modifiers</SourceDisplayLabel>
                <TargetDisplayLabel>Material</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECRelationshipClass typeName="IsmSurfaceMemberModifier_SurfaceMember" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmSurfaceMemberModifier" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmSurfaceMember" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Surface modifiers</SourceDisplayLabel>
                <TargetDisplayLabel>Surface member</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <PropertyCategory typeName="IsmSurfaceMemberOpening_category" displayLabel="Surface Member Opening" priority="190" />
    <ECEntityClass typeName="IsmSurfaceMemberOpening" modifier="Sealed" displayLabel="Surface Member Opening" >
        <BaseClass>bis:PhysicalElement</BaseClass>
        <BaseClass>IIsmSubObject</BaseClass>
        <ECStructProperty propertyName="Location" typeName="IsmArrayGeometry" category="IsmSurfaceMemberOpening_category" description="The contiguous finite trimmed surface of this opening." />
    </ECEntityClass>

    <ECRelationshipClass typeName="IsmSurfaceMemberOpening_SurfaceMember" modifier="None" strength="referencing" strengthDirection="forward">
        <BaseClass>IsmObject_Object</BaseClass>
        <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
            <Class class="IsmSurfaceMemberOpening" />
        </Source>
        <Target multiplicity="(0..1)" roleLabel="is referred by" polymorphic="true">
            <Class class="IsmSurfaceMember" />
        </Target>
        <ECCustomAttributes>
            <RelationshipHasLabels>
                <SourceDisplayLabel>Surface openings</SourceDisplayLabel>
                <TargetDisplayLabel>Surface member</TargetDisplayLabel>
            </RelationshipHasLabels>
        </ECCustomAttributes>
    </ECRelationshipClass>

    <ECEntityClass typeName="IsmTableSteelDeck" modifier="Sealed" displayLabel="Table Steel Deck" >
        <BaseClass>IsmParametricSteelDeck</BaseClass>
        <ECProperty propertyName="Organization" typeName="string" displayLabel="Organization" description="The organization (typically a manufacturer) that defines the deck." />
        <ECProperty propertyName="ProfileName" typeName="string" displayLabel="Profile Name" description="The name of deck profile within the table or catalog." />
        <ECProperty propertyName="Revision" typeName="string" description="The revision date, name or number of the table or catalog." />
    </ECEntityClass>

    <ECEntityClass typeName="IsmTimber" modifier="Sealed" displayLabel="Timber" >
        <BaseClass>IsmMaterial</BaseClass>
    </ECEntityClass>

</ECSchema>
