added |

additions | where_rules | Consecutive |

deletions | where_rules | Consecutive |

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:

- Segment of type
*IfcLineIndex*: The first index is the start point of the poly line segment, the last index is the end point of the poly line segment. If more than two indices are included, then all intermediate indices define intermediate points of the polyline connected in the order of appearance of the indices; - Segment of type
*IfcArcIndex*: The first index is the start point of the circular arc, the second index is a point on arc, the third index is the end point of the circular arc. The three points shall not be co-linear. In case that this informal proposition is not maintained, the arc segment shall be treated as a polyline segment.

EXAMPLE Figure 2 illustrates a bounded open

IfcIndexedPolyCurvehaving 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.

EXAMPLE Figure 2 illustrates a bounded open

IfcIndexedPolyCurvehaving only straight segments. In this example, no list ofSegmentsis provided, hence the points are drawn in the order of their appearance in theIfcCartesianPointList.

The *IfcIndexedPolyCurve* represents an open or a closed curve depending on the following condition:

- In the case that the list of
*Segments*is provided: If the last index of the last*Segment*and the first index of the first*Segment*are identical, then the poly curve is a closed curve, otherwise it is an open curve. - In the case that the list of
*Segments*is not provided: If the first and the last Cartesian point in the Cartesian point list are identical, then the poly curve is a closed curve, otherwise it is an open curve.

HISTORY New entity in IFC4 ADD1

Informal Propositions:

- Any two consecutive points of the
*IfcIndexedPolyCurve*shall not be coincident after taking the*Precision*factor into account, given by the applicable*IfcGeometricRepresentationContext*. - The three points of any
*IfcArcIndex*segment of the*IfcIndexedPolyCurve*shall not be colinear after taking the*Precision*factor into account, given by the applicable*IfcGeometricRepresentationContext*.

# | Attribute | Type | Description |
---|---|---|---|

IfcRepresentationItem | |||

LayerAssignment | SET [0:1] OF IfcPresentationLayerAssignment FOR AssignedItems | 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. | |

StyledByItem | SET [0:1] OF IfcStyledItem FOR Item | 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. | |

IfcGeometricRepresentationItem | |||

IfcCurve | |||

Dim | INVALID | The space dimensionality of this abstract class, defined differently for all subtypes, i.e. for IfcLine, IfcConic and IfcBoundedCurve. | |

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. |

2 | Segments | OPTIONAL LIST [1:?] OF IfcSegmentIndexSelect | 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. |

3 | SelfIntersect | OPTIONAL IfcBoolean | Indication of whether the curve intersects itself or not; this is for information only. |

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;