Indexed Curve |
Item | SPF | XML | Change | Description | IFC4 Addendum 1 4.0.1.0 |
---|---|---|---|---|
IfcIndexedPolyCurve | ADDED | IFC4x2 Candidate 4.2.0.0 | ||
IfcIndexedPolyCurve | ||||
PositioningElement | ADDED | IFC4x2 to IFC4x3_RC1 | ||
IfcIndexedPolyCurve | ||||
PositioningElement | MODIFIED | Aggregation changed from NONE to SET. | IFC4x3_RC2 to IFC4x3_RC3 | |
IfcIndexedPolyCurve | ||||
PositioningElement | DELETED |
The IfcIndexedPolyCurve is a bounded curve with only linear and circular arc segments defined by a Cartesian point list and an optional list of segments, providing indices into the Cartesian point list. In the case that the list of Segments is not provided, all points in the IfcCartesianPointList are connected by straight line segments in the order they appear in the IfcCartesianPointList.
In the case that the list of Segments is provided, it is interpreted as such:
EXAMPLE Figure 520 illustrates a bounded open IfcIndexedPolyCurve having straight and arc segments. In this example, the straight segments only have two points and one edge, however more then two indices into the Cartesian point list can be includes, defining a multi edge polyline segment.
Figure 520 — Bounded open IfcIndexedPolyCurve with straight and arc segments |
EXAMPLE Figure 520 illustrates a bounded open IfcIndexedPolyCurve having only straight segments. In this example, no list of Segments is provided, hence the points are drawn in the order of their appearance in the IfcCartesianPointList.
Figure 520 — Bounded open IfcIndexedPolyCurve with only straight segments |
The IfcIndexedPolyCurve represents an open or a closed curve depending on the following condition:
HISTORY New entity in IFC4 ADD1
Informal Propositions:
# | Attribute | Type | Cardinality | Description | G |
---|---|---|---|---|---|
1 | Points | IfcCartesianPointList | A list of points, provided by a point list of either two, or three dimensions, that is used to define the poly curve. If the attribute Segments is not provided, the poly curve is generated as a poly line by connecting the points in the order of their appearance in the point list. If the attribute Segments is provided, the segments determine, how the points are to be used to create straigth and circular arc segments. | X | |
2 | Segments | IfcSegmentIndexSelect | ? L[1:?] | List of straight line and circular arc segments, each providing a list of indices into the Cartesian point list. Indices should preserve consecutive connectivity between the segments, the start index of the next segment shall be identical with the end index of the previous segment. | X |
3 | SelfIntersect | IfcBoolean | ? | Indication of whether the curve intersects itself or not; this is for information only. | X |
Rule | Description |
---|---|
Consecutive | If a list of indexed segments is provided, they need to be consecutive, meaning that the last index of all, but the last, segments shall be identical with the first index of the next segment. |
# | 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 | |||||
IfcCurve | |||||
Dim :=IfcCurveDim(SELF) | IfcDimensionCount | The space dimensionality of this abstract class, defined differently for all subtypes, i.e. for IfcLine, IfcConic and IfcBoundedCurve. | X | ||
IfcBoundedCurve | |||||
IfcIndexedPolyCurve | |||||
1 | Points | IfcCartesianPointList | A list of points, provided by a point list of either two, or three dimensions, that is used to define the poly curve. If the attribute Segments is not provided, the poly curve is generated as a poly line by connecting the points in the order of their appearance in the point list. If the attribute Segments is provided, the segments determine, how the points are to be used to create straigth and circular arc segments. | X | |
2 | Segments | IfcSegmentIndexSelect | ? L[1:?] | List of straight line and circular arc segments, each providing a list of indices into the Cartesian point list. Indices should preserve consecutive connectivity between the segments, the start index of the next segment shall be identical with the end index of the previous segment. | X |
3 | SelfIntersect | IfcBoolean | ? | Indication of whether the curve intersects itself or not; this is for information only. | X |
<xs:element name="IfcIndexedPolyCurve" type="ifc:IfcIndexedPolyCurve" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
<xs:complexType name="IfcIndexedPolyCurve">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundedCurve">
<xs:sequence>
<xs:element name="Points" type="ifc:IfcCartesianPointList" nillable="true"/>
<xs:element name="Segments" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcSegmentIndexSelect" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSegmentIndexSelect"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="SelfIntersect" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
ENTITY IfcIndexedPolyCurve
SUBTYPE OF (IfcBoundedCurve);
Points : IfcCartesianPointList;
Segments : OPTIONAL LIST [1:?] OF IfcSegmentIndexSelect;
SelfIntersect : OPTIONAL IfcBoolean;
WHERE
Consecutive : NOT(EXISTS(Segments)) OR IfcConsecutiveSegments(Segments);
END_ENTITY;