IFC 4.3.0.0 (IFC4X3) final

4.7.7.1.2 CompositeCurve Profile Definition

Composite curve profile definitions define the closed two-dimensional curve used for the cross-section by a composite curve, consisting of multiple composite curve segments. Each composite curve segment has a parent curve, being either a polyline or a trimmed curve. Trimmed curves have basis curves of type line, circle or ellipse.

The following diagram shows the generic classes and relationships used when applying this concept.

G IfcArbitraryProfileDefWithVoids IfcArbitraryProfileDefWithVoids ProfileType [1:1] ProfileName [0:1] HasExternalReference [0:?] HasProperties [0:?] OuterCurve [1:1] InnerCurves [1:?] IfcProfileTypeEnum IfcProfileTypeEnum IfcArbitraryProfileDefWithVoids:ProfileType1->IfcProfileTypeEnum:IfcProfileTypeEnum0 IfcLabel IfcLabel IfcArbitraryProfileDefWithVoids:ProfileName1->IfcLabel:IfcLabel0 IfcCompositeCurve_0 IfcCompositeCurve LayerAssignment [0:1] StyledByItem [0:1] Segments [1:?] SelfIntersect [1:1] IfcArbitraryProfileDefWithVoids:OuterCurve1->IfcCompositeCurve_0:IfcCompositeCurve0 IfcCompositeCurve_1 IfcCompositeCurve LayerAssignment [0:1] StyledByItem [0:1] Segments [1:?] SelfIntersect [1:1] IfcArbitraryProfileDefWithVoids:InnerCurves1->IfcCompositeCurve_1:IfcCompositeCurve0 IfcCompositeCurveSegment IfcCompositeCurveSegment LayerAssignment [0:1] StyledByItem [0:1] Transition [1:1] UsingCurves [1:?] SameSense [1:1] ParentCurve [1:1] IfcCompositeCurve_0:Segments1->IfcCompositeCurveSegment:IfcCompositeCurveSegment0 IfcTransitionCode IfcTransitionCode IfcCompositeCurveSegment:Transition1->IfcTransitionCode:IfcTransitionCode0 IfcBoolean_0 IfcBoolean IfcCompositeCurveSegment:SameSense1->IfcBoolean_0:IfcBoolean0 IfcTrimmedCurve IfcTrimmedCurve LayerAssignment [0:1] StyledByItem [0:1] BasisCurve [1:1] Trim1 [1:2] Trim2 [1:2] SenseAgreement [1:1] MasterRepresentation [1:1] IfcCompositeCurveSegment:ParentCurve1->IfcTrimmedCurve:IfcTrimmedCurve0 IfcPolyline IfcPolyline LayerAssignment [0:1] StyledByItem [0:1] Points [2:?] IfcTrimmedCurve:BasisCurve1->IfcPolyline:IfcPolyline0 IfcCircle IfcCircle LayerAssignment [0:1] StyledByItem [0:1] Position [1:1] Radius [1:1] IfcTrimmedCurve:BasisCurve1->IfcCircle:IfcCircle0 IfcEllipse IfcEllipse LayerAssignment [0:1] StyledByItem [0:1] Position [1:1] SemiAxis1 [1:1] SemiAxis2 [1:1] IfcTrimmedCurve:BasisCurve1->IfcEllipse:IfcEllipse0 IfcCartesianPoint_1 IfcCartesianPoint LayerAssignment [0:1] StyledByItem [0:1] Coordinates [1:3] IfcTrimmedCurve:Trim11->IfcCartesianPoint_1:IfcCartesianPoint0 IfcParameterValue_0 IfcParameterValue IfcTrimmedCurve:Trim11->IfcParameterValue_0:IfcParameterValue0 IfcCartesianPoint_2 IfcCartesianPoint LayerAssignment [0:1] StyledByItem [0:1] Coordinates [1:3] IfcTrimmedCurve:Trim21->IfcCartesianPoint_2:IfcCartesianPoint0 IfcParameterValue_1 IfcParameterValue IfcTrimmedCurve:Trim21->IfcParameterValue_1:IfcParameterValue0 IfcBoolean_1 IfcBoolean IfcTrimmedCurve:SenseAgreement1->IfcBoolean_1:IfcBoolean0 IfcTrimmingPreference IfcTrimmingPreference IfcTrimmedCurve:MasterRepresentation1->IfcTrimmingPreference:IfcTrimmingPreference0 IfcCartesianPoint_0 IfcCartesianPoint LayerAssignment [0:1] StyledByItem [0:1] Coordinates [1:3] IfcPolyline:Points1->IfcCartesianPoint_0:IfcCartesianPoint0 IfcAxis2Placement2D_0 IfcAxis2Placement2D LayerAssignment [0:1] StyledByItem [0:1] Location [1:1] RefDirection [0:1] IfcCircle:Position1->IfcAxis2Placement2D_0:IfcAxis2Placement2D0 IfcPositiveLengthMeasure_0 IfcPositiveLengthMeasure IfcCircle:Radius1->IfcPositiveLengthMeasure_0:IfcPositiveLengthMeasure0 IfcAxis2Placement2D_1 IfcAxis2Placement2D LayerAssignment [0:1] StyledByItem [0:1] Location [1:1] RefDirection [0:1] IfcEllipse:Position1->IfcAxis2Placement2D_1:IfcAxis2Placement2D0 IfcPositiveLengthMeasure_1 IfcPositiveLengthMeasure IfcEllipse:SemiAxis11->IfcPositiveLengthMeasure_1:IfcPositiveLengthMeasure0 IfcPositiveLengthMeasure_2 IfcPositiveLengthMeasure IfcEllipse:SemiAxis21->IfcPositiveLengthMeasure_2:IfcPositiveLengthMeasure0
Figure 4.7.7.1.2.A