Begrenzte Kurve | |
Trimmed Curve | |
Courbe de rognage |
Item | SPF | XML | Change | Description | IFC4 Addendum 1 4.0.1.0 |
---|---|---|---|---|
IfcTrimmedCurve | ||||
SenseAgreement | MODIFIED | Type changed from BOOLEAN to IfcBoolean. | IFC4x2 Candidate 4.2.0.0 | |
IfcTrimmedCurve | ||||
PositioningElement | ADDED | IFC4x2 to IFC4x3_RC1 | ||
IfcTrimmedCurve | ||||
PositioningElement | MODIFIED | Aggregation changed from NONE to SET. | IFC4x3_RC2 to IFC4x3_RC3 | |
IfcTrimmedCurve | ||||
PositioningElement | DELETED |
An IfcTrimmedCurve is a bounded curve that is trimmed at both ends. The trimming points may be provided by a Cartesian point or by a parameter value, based on the parameterization of the BasisCurve. The SenseAgreement attribute indicates whether the direction of the IfcTrimmedCurve agrees with or is opposed to the direction of the BasisCurve.
NOTE In case of the BasisCurve being a closed curve, such as an IfcCircle or IfcEllipse, the SenseAgreement affects the geometric shape of the IfcTrimmedCurve.
Figure 528 — Trimmed curve parameterization |
Figure 528 shows the four arcs (dashed blue and green lines with arrow showing different orientations) that can be defined by the same BasisCurve (of type IfcCircle) and the same trimming points (given by Cartesian points and parameter values) by using different assignments to Trim1 and Trim2 and SenseAgreement.
NOTE Since the BasisCurve is closed (type IfcCircle), the exception of the informal proposition IP3 applies, i.e. the sense flag is not required to be consistent with the parameter values of Trim1 and Trim1, so the rule (sense = parameter 1 < parameter 2) may not be fulfilled.
NOTE Definition according to ISO/CD 10303-42:1992
A trimmed curve is a bounded curve which is created by taking a selected portion, between two identified points, of the associated basis curve. The basis curve itself is unaltered and more than one trimmed curve may reference the same basis curve. Trimming points for the curve may be identified by:
- parametric value
- geometric position
- both of the above
At least one of these shall be specified at each end of the curve. The SenseAgreement makes it possible to unambiguously define any segment of a closed curve such as a circle. The combinations of sense and ordered end points make it possible to define four distinct directed segments connecting two different points on a circle or other closed curve. For this purpose cyclic properties of the parameter range are assumed; for example, 370 degrees is equivalent to 10 degrees.
The IfcTrimmedCurve has a parameterization which is inherited from the particular basis curve reference. More precisely the parameter s of the trimmed curve is derived from the parameter of the basis curve as follows:
- if SenseAgreement is TRUE: s = t - t1
- if SenseAgreement is FALSE: s = t2 - t
In the above equations t1 is the value given by Trim1 or the parameter value corresponding to point 1 and t2 is the value given by Trim2 or the parameter value corresponding to point 2. The resultant IfcTrimmedCurve has a parameter ranging from 0 at the first trimming point to |t2 - t1| at the second trimming point.
NOTE In case of a closed curve, it may be necessary to increment t1 or t2 by the parametric length for consistency with the sense flag.
NOTE Entity adapted from trimmed_curve defined in ISO 10303-42
HISTORY New entity in IFC1.0
Informal Propositions:
# | Attribute | Type | Cardinality | Description | G |
---|---|---|---|---|---|
1 | BasisCurve | IfcCurve | The curve to be trimmed. For curves with multiple representations any parameter values given as Trim1 or Trim2 refer to the master representation of the BasisCurve only. | X | |
2 | Trim1 | IfcTrimmingSelect | S[1:2] | The first trimming point which may be specified as a Cartesian point, as a real parameter or both. | X |
3 | Trim2 | IfcTrimmingSelect | S[1:2] | The second trimming point which may be specified as a Cartesian point, as a real parameter or both. | X |
4 | SenseAgreement | IfcBoolean | Flag to indicate whether the direction of the trimmed curve agrees with or is opposed to the direction of the basis curve. | X | |
5 | MasterRepresentation | IfcTrimmingPreference | Where both parameter and point are present at either end of the curve this indicates the preferred form. | X |
Rule | Description |
---|---|
Trim1ValuesConsistent | Either a single value is specified for Trim1, or the two trimming values are of different type (point and parameter) |
Trim2ValuesConsistent | Either a single value is specified for Trim2, or the two trimming values are of different type (point and parameter) |
NoTrimOfBoundedCurves | Already bounded curves shall not be trimmed. |
# | 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 | |||||
IfcTrimmedCurve | |||||
1 | BasisCurve | IfcCurve | The curve to be trimmed. For curves with multiple representations any parameter values given as Trim1 or Trim2 refer to the master representation of the BasisCurve only. | X | |
2 | Trim1 | IfcTrimmingSelect | S[1:2] | The first trimming point which may be specified as a Cartesian point, as a real parameter or both. | X |
3 | Trim2 | IfcTrimmingSelect | S[1:2] | The second trimming point which may be specified as a Cartesian point, as a real parameter or both. | X |
4 | SenseAgreement | IfcBoolean | Flag to indicate whether the direction of the trimmed curve agrees with or is opposed to the direction of the basis curve. | X | |
5 | MasterRepresentation | IfcTrimmingPreference | Where both parameter and point are present at either end of the curve this indicates the preferred form. | X |
<xs:element name="IfcTrimmedCurve" type="ifc:IfcTrimmedCurve" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
<xs:complexType name="IfcTrimmedCurve">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundedCurve">
<xs:sequence>
<xs:element name="BasisCurve" type="ifc:IfcCurve" nillable="true"/>
<xs:element name="Trim1">
<xs:complexType>
<xs:group ref="ifc:IfcTrimmingSelect" maxOccurs="2"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTrimmingSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Trim2">
<xs:complexType>
<xs:group ref="ifc:IfcTrimmingSelect" maxOccurs="2"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTrimmingSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="SenseAgreement" type="ifc:IfcBoolean" use="optional"/>
<xs:attribute name="MasterRepresentation" type="ifc:IfcTrimmingPreference" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
ENTITY IfcTrimmedCurve
SUBTYPE OF (IfcBoundedCurve);
BasisCurve : IfcCurve;
Trim1 : SET [1:2] OF IfcTrimmingSelect;
Trim2 : SET [1:2] OF IfcTrimmingSelect;
SenseAgreement : IfcBoolean;
MasterRepresentation : IfcTrimmingPreference;
WHERE
Trim1ValuesConsistent : (HIINDEX(Trim1) = 1) OR (TYPEOF(Trim1[1]) <> TYPEOF(Trim1[2]));
Trim2ValuesConsistent : (HIINDEX(Trim2) = 1) OR (TYPEOF(Trim2[1]) <> TYPEOF(Trim2[2]));
NoTrimOfBoundedCurves : NOT('IFCGEOMETRYRESOURCE.IfcBoundedCurve' IN TYPEOF(BasisCurve));
END_ENTITY;