8.9.3.74 IfcTrimmedCurve
8.9.3.74.1 Semantic definition
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.
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  t~1~
 if SenseAgreement is FALSE: s = t~2~  t
In the above equations t~1~ is the value given by Trim1 or the parameter value corresponding to point 1 and t~2~ 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 t~2~  t~1~ at the second trimming point.
Informal Propositions
 Where both the parameter value and the Cartesian point exist for Trim1 and Trim2 they shall be consistent. (i.e., the BasisCurve evaluated at the parameter value shall coincide with the specified point).
 When a Cartesian point is specified by Trim1 or by Trim2 it shall lie on the BasisCurve.
 Except the case of a closed BasisCurve where both parameter 1 and parameter 2 exist, they shall be consistent with the sense flag, i.e., (sense = parameter 1 < parameter 2). Or, for every open curve where both parameter 1 and parameter 2 exist, they shall be consistent with the SenseAgreement, i.e., SenseAgreement = (parameter 1 < parameter 2).
 If both parameter 1 and parameter 2 exist, then parameter 1 <> parameter 2. For a closed base curve, e.g. IfcCircle or IfcEllipse, this also applies to the cyclic properties, as 360' is equal to 0', parameter 1 = 360' and parameter 2 = 0' are treated as being equal and therefore violating this proposition.
 When a parameter value is specified by Trim1 or Trim2 it shall lie within the parametric range of the BasisCurve.
8.9.3.74.2 Entity inheritance

 IfcCurve
 IfcAnnotationFillArea
 IfcBooleanResult
 IfcBoundingBox
 IfcCartesianPointList
 IfcCartesianTransformationOperator
 IfcCsgPrimitive3D
 IfcDirection
 IfcFaceBasedSurfaceModel
 IfcFillAreaStyleHatching
 IfcFillAreaStyleTiles
 IfcGeometricSet
 IfcHalfSpaceSolid
 IfcLightSource
 IfcPlacement
 IfcPlanarExtent
 IfcPoint
 IfcSectionedSpine
 IfcSegment
 IfcShellBasedSurfaceModel
 IfcSolidModel
 IfcSurface
 IfcTessellatedItem
 IfcTextLiteral
 IfcVector
8.9.3.74.3 Attributes
#  Attribute  Type  Description 

IfcRepresentationItem (2)  
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. 

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. 

IfcCurve (1)  
*  Dim  IfcDimensionCount 
This attribute is formally derived.
The space dimensionality of this abstract class, defined differently for all subtypes, i.e. for IfcLine, IfcConic and IfcBoundedCurve. 
Click to show 3 hidden inherited attributes Click to hide 3 inherited attributes  
IfcTrimmedCurve (5)  
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. 
2  Trim1  SET [1:2] OF IfcTrimmingSelect 
The first trimming point which may be specified as a Cartesian point, as a real parameter or both. 
3  Trim2  SET [1:2] OF IfcTrimmingSelect 
The second trimming point which may be specified as a Cartesian point, as a real parameter or both. 
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. 
5  MasterRepresentation  IfcTrimmingPreference 
Where both parameter and point are present at either end of the curve this indicates the preferred form. 
8.9.3.74.4 Formal propositions
Name  Description 

NoTrimOfBoundedCurves 
Already bounded curves shall not be trimmed. 


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) 

8.9.3.74.5 Examples
8.9.3.74.6 Formal representation
ENTITY IfcTrimmedCurve
SUBTYPE OF (IfcBoundedCurve);
BasisCurve : IfcCurve;
Trim1 : SET [1:2] OF IfcTrimmingSelect;
Trim2 : SET [1:2] OF IfcTrimmingSelect;
SenseAgreement : IfcBoolean;
MasterRepresentation : IfcTrimmingPreference;
WHERE
NoTrimOfBoundedCurves : NOT('IFC4X3_DEV_20bdb3d.IFCBOUNDEDCURVE' IN TYPEOF(BasisCurve));
Trim1ValuesConsistent : (HIINDEX(Trim1) = 1) OR (TYPEOF(Trim1[1]) <> TYPEOF(Trim1[2]));
Trim2ValuesConsistent : (HIINDEX(Trim2) = 1) OR (TYPEOF(Trim2[1]) <> TYPEOF(Trim2[2]));
END_ENTITY;