Item | SPF | XML | Change | Description | IFC4x2 to IFC4x3_RC1 |
---|---|---|---|---|
IfcSectionedSurface | ADDED | IFC4x3_RC1 to IFC4x3_RC2 | ||
IfcSectionedSurface | ||||
CrossSectionPositions | X | X | MODIFIED | Type changed from IfcDistanceExpression to IfcPointByDistanceExpression. | IFC4x3_RC3 to IFC4x3_RC4 |
IfcSectionedSurface | MOVED | Schema changed from IfcRoad to IfcGeometricModelResource. | IFC4x3_RC4 Update | |
IfcSectionedSurface | ||||
CrossSectionPositions | X | X | MODIFIED | Type changed from IfcPointByDistanceExpression to IfcAxis2PlacementLinear. |
FixedAxisVertical | X | DELETED |
A surface constructed by sweeping potentially varying open cross sections along a curve horizontally (or near horizontally). The surface is generated by sweeping the CrossSections between CrossSectionPositions; linear interpolation is assumed, unless transitions curves between cross section points are indicated by OpenCrossProfileDef.Tags.
The profile normal is derived from the associated IfcAxis2PlacementLinear, not necessarily the tangent of the Directrix. The profile Y axis is oriented according to Axis attribute of IfcAxis2PlacementLinear and the X is derived from the cross product of Directrix and the Axis attribute of IfcAxis2PlacementLinear.
Figure 500 illustrates an IfcSectionedSurface defined using IfcOpenCrossProfileDef
Figure 500 — Sectioned surface using IfcOpenCrossProfileDef |
In case of branching longitudinal breaklines, the IfcSectionedSurface shall use IfcOpenCrossProfileDef instances with varying number of cross section points. In that case, the point in two consecutive cross sections that are connected are identified by the same tag value.
Figure 501 illustrates an IfcSectionedSurface featuring branching longitudinal breaklines
Figure 501 — Sectioned surface with branching longitudinal breaklines |
Informal Propositions: No two consecutive sections shall intersect.
# | Attribute | Type | Cardinality | Description | G |
---|---|---|---|---|---|
1 | Directrix | IfcCurve | The curve used to define the sweeping operation | X | |
2 | CrossSectionPositions | IfcAxis2PlacementLinear | L[2:?] | List of positions in sequentially increasing order paired with CrossSections, indicating the position of the corresponding section along the Directrix. | X |
3 | CrossSections | IfcProfileDef | L[2:?] | List of cross sections in sequential order along the Directrix | X |
Rule | Description |
---|---|
DirectrixIs3D | The curve entity which is the underlying directrix shall have the dimensionality of 3. |
AreaProfileTypes | Only open curve profile types are allowed as cross sections. |
SectionsSameType | The entity type for each section must be the same. |
CorrespondingSectionPositions | The set of cross sections and the set of cross section placements shall be of the same size. |
NoOffsets | Distance expressions must not use longitudinal, laterial or vertical offsets. |
# | Attribute | Type | Cardinality | Description | G |
---|---|---|---|---|---|
IfcRepresentationItem | |||||
LayerAssignment | IfcPresentationLayerAssignment @AssignedItems | S[0:1] | Assignment of the representation item to a single or multiple layer(s). The LayerAssignments can override a LayerAssignments of the IfcRepresentation it is used within the list of Items.
IFC2x3 CHANGE The inverse attribute LayerAssignments has been added. IFC4 CHANGE The inverse attribute LayerAssignment has been restricted to max 1. Upward compatibility for file based exchange is guaranteed. | X | |
StyledByItem | IfcStyledItem @Item | S[0:1] | Reference to the IfcStyledItem that provides presentation information to the representation, e.g. a curve style, including colour and thickness to a geometric curve.
IFC2x3 CHANGE The inverse attribute StyledByItem has been added. | X | |
IfcGeometricRepresentationItem | |||||
IfcSurface | |||||
Dim :=3 | IfcDimensionCount | The space dimensionality of IfcSurface. It is always a three-dimensional geometric representation item.
IFC4 CHANGE Derived attribute promoted from subtypes. |
X | ||
IfcSectionedSurface | |||||
1 | Directrix | IfcCurve | The curve used to define the sweeping operation | X | |
2 | CrossSectionPositions | IfcAxis2PlacementLinear | L[2:?] | List of positions in sequentially increasing order paired with CrossSections, indicating the position of the corresponding section along the Directrix. | X |
3 | CrossSections | IfcProfileDef | L[2:?] | List of cross sections in sequential order along the Directrix | X |
<xs:element name="IfcSectionedSurface" type="ifc:IfcSectionedSurface" substitutionGroup="ifc:IfcSurface" nillable="true"/>
<xs:complexType name="IfcSectionedSurface">
<xs:complexContent>
<xs:extension base="ifc:IfcSurface">
<xs:sequence>
<xs:element name="Directrix" type="ifc:IfcCurve" nillable="true"/>
<xs:element name="CrossSectionPositions">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcAxis2PlacementLinear" minOccurs="2" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcAxis2PlacementLinear"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="CrossSections">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcProfileDef" minOccurs="2" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProfileDef"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
ENTITY IfcSectionedSurface
SUBTYPE OF (IfcSurface);
Directrix : IfcCurve;
CrossSectionPositions : LIST [2:?] OF IfcAxis2PlacementLinear;
CrossSections : LIST [2:?] OF IfcProfileDef;
WHERE
DirectrixIs3D : Directrix.Dim = 3;
AreaProfileTypes : SIZEOF(QUERY(temp <* CrossSections | temp.ProfileType <> IfcProfileTypeEnum.CURVE)) = 0;
SectionsSameType : SIZEOF(QUERY(temp <* CrossSections | TYPEOF(CrossSections[1]) :<>: TYPEOF(temp))) = 0;
CorrespondingSectionPositions : SIZEOF(CrossSections) = SIZEOF(CrossSectionPositions);
NoOffsets : SIZEOF(QUERY(temp <* CrossSectionPositions | EXISTS(temp.Location.OffsetLateral) OR EXISTS(temp.Location.OffsetVertical) OR EXISTS(temp.Location.OffsetLongitudinal))) = 0;
END_ENTITY;