Zusammengesetzte Kurve | |
Composite Curve | |
Courbe composite |
Item | SPF | XML | Change | Description | IFC4 Addendum 1 4.0.1.0 |
---|---|---|---|---|
IfcCompositeCurve | ||||
SelfIntersect | MODIFIED | Type changed from LOGICAL to IfcLogical. | IFC4x2 Candidate 4.2.0.0 | |
IfcCompositeCurve | ||||
PositioningElement | ADDED | IFC4 Addendum 1 4.0.1.0 | ||
IfcCompositeCurve | ||||
SelfIntersect | MODIFIED | Type changed from LOGICAL to IfcLogical. | IFC4x2 Candidate 4.2.0.0 | |
IfcCompositeCurve | ||||
PositioningElement | ADDED | IFC4x2 to IFC4x3_RC1 | ||
IfcCompositeCurve | ||||
PositioningElement | MODIFIED | Aggregation changed from NONE to SET. |
An IfcCompositeCurve is a continuous curve composed of curve segments.
Figure 364 illustrates an example of a composite curve.
Figure 364 — Composite curve |
Consider an IfcCompositeCurve having line segment and an arc segment. The line should be parameterized:
The arch should be parameterized:
Then the parameterization of the composite curve is:
NOTE Definition according to ISO 10303-42:
A composite curve is a collection of curves joined end-to-end. The individual segments of the curve are themselves defined as composite curve segments. The parameterization of the composite curve is an accumulation of the parametric ranges of the referenced bounded curves. The first segment is parameterized from 0 to l~1~ and for i__≤__2, the i^th^ segment is parameterized from:where l~k~ is the parametric length (i.e., difference between maximum and minimum parameter values) of the curve underlying the k^th^ segment. Let T denote the parameter for the composite curve. Then, if the _i_th segment is not a reparameterised composite curve segment, T is related to the parameter ti; ti0__≤__ti__≤__ti1; for the _i_th segment by the equation:
if Segments[i].SameSense = TRUE; or by the equation:
if Segments[i].SameSense = FALSE; If the segments[i] is of type reparameterised composite curve segment,
where τ is defined at reparameterized composite curve segment (see IfcReparameterizedCompositeCurveSegment).
NOTE Entity adapted from composite_curve defined in ISO 10303-42.
HISTORY New entity in IFC1.0
Informal Propositions:
# | Attribute | Type | Cardinality | Description | G |
---|---|---|---|---|---|
1 | Segments | IfcCompositeCurveSegment | L[1:?] | The component bounded curves, their transitions and senses. The transition attribute for the last segment defines the transition between the end of the last segment and the start of the first; this transition attribute may take the value discontinuous, which indicates an open curve. | X |
2 | SelfIntersect | IfcLogical | Indication of whether the curve intersects itself or not; this is for information only. | X | |
NSegments :=SIZEOF(Segments) | IfcInteger | The number of component curves. | X | ||
ClosedCurve :=Segments[NSegments].Transition <> Discontinuous | IfcLogical | Indication whether the curve is closed or not; this is derived from the transition code of the last segment. | X |
Rule | Description |
---|---|
CurveContinuous | No transition code should be Discontinuous, except for the last code of an open curve. |
SameDim | Ensures, that all segments used in the curve have the same dimensionality. |
# | 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 | |||||
PositioningElement | IfcLinearPositioningElement @Axis | ? S[0:1] | X | ||
IfcCompositeCurve | |||||
1 | Segments | IfcCompositeCurveSegment | L[1:?] | The component bounded curves, their transitions and senses. The transition attribute for the last segment defines the transition between the end of the last segment and the start of the first; this transition attribute may take the value discontinuous, which indicates an open curve. | X |
2 | SelfIntersect | IfcLogical | Indication of whether the curve intersects itself or not; this is for information only. | X | |
NSegments :=SIZEOF(Segments) | IfcInteger | The number of component curves. | X | ||
ClosedCurve :=Segments[NSegments].Transition <> Discontinuous | IfcLogical | Indication whether the curve is closed or not; this is derived from the transition code of the last segment. | X |
<xs:element name="IfcCompositeCurve" type="ifc:IfcCompositeCurve" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
<xs:complexType name="IfcCompositeCurve">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundedCurve">
<xs:sequence>
<xs:element name="Segments">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcCompositeCurveSegment" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCompositeCurveSegment"/>
<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:IfcLogical" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
ENTITY IfcCompositeCurve
SUPERTYPE OF(IfcCompositeCurveOnSurface)
SUBTYPE OF (IfcBoundedCurve);
Segments : LIST [1:?] OF IfcCompositeCurveSegment;
SelfIntersect : IfcLogical;
DERIVE
NSegments : IfcInteger := SIZEOF(Segments);
ClosedCurve : IfcLogical := Segments[NSegments].Transition <> Discontinuous;
WHERE
CurveContinuous : ((NOT ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 1)) OR ((ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 0));
SameDim : SIZEOF( QUERY( Temp <* Segments | Temp.Dim <> Segments[1].Dim)) = 0;
END_ENTITY;
References: IfcSectionedSpine IfcCompositeCurveSegment