The IfcBSplineCurveWithKnots is a spline curve parameterized by spline functions for which the knot values are explicitly given.
NOTE Definition according to ISO/CD 10303-42:1992
This is the type of b-spline curve for which the knot values are explicitly given. This subtype shall be used to represent non-uniform B-spline curves and may be used for other knot types.
Let L denote the number of distinct values amongst the d+k+2 knots in the knot list; L will be referred to as the ‘upper index on knots’. Let m~j~ denote the multiplicity (i.e., number of repetitions) of the _j_th distinct knot. Then:
All knot multiplicities except the first and the last shall be in the range 1,...,d; the first and last may have a maximum value of d + 1. In evaluating the basis functions, a knot u of, e.g., multiplicity 3 is interpreted as a sequence u, u, u,; in the knot array.
NOTE Entity adapted from b_spline_curve_with_knots defined in ISO10303-42.
HISTORY New entity in IFC4.
|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.
|Dim||INVALID||The space dimensionality of this abstract class, defined differently for all subtypes, i.e. for IfcLine, IfcConic and IfcBoundedCurve.|
|1||Degree||IfcInteger||The algebraic degree of the basis functions.|
|2||ControlPointsList||LIST [2:?] OF IfcCartesianPoint||The list of control points for the curve.|
|3||CurveForm||IfcBSplineCurveForm||Used to identify particular types of curve; it is for information only.|
|4||ClosedCurve||IfcLogical||Indication of whether the curve is closed; it is for information only.|
|5||SelfIntersect||IfcLogical||Indication whether the curve self-intersects or not; it is for information only.|
|UpperIndexOnControlPoints||INVALID||The upper index on the array of control points; the lower index is 0.|
This value is derived from the control points list.
|ControlPoints||INVALID||The array of control points used to define the geometry of the curve. This is derived from the list of control points.|
|6||KnotMultiplicities||LIST [2:?] OF IfcInteger||The multiplicities of the knots. This list defines the number of times each knot in the knots list is to be repeated in constructing the knot array.|
|7||Knots||LIST [2:?] OF IfcParameterValue||The list of distinct knots used to define the B-spline basis functions.|
|8||KnotSpec||IfcKnotType||The description of the knot type. This is for information only.|
|UpperIndexOnKnots||INVALID||The upper index on the knot arrays; the lower index is 1.|
ENTITY IfcBSplineCurveWithKnots SUPERTYPE OF (ONEOF (IfcRationalBSplineCurveWithKnots)) SUBTYPE OF (IfcBSplineCurve); KnotMultiplicities : LIST [2:?] OF IfcInteger; Knots : LIST [2:?] OF IfcParameterValue; KnotSpec : IfcKnotType; DERIVE UpperIndexOnKnots : IfcInteger := SIZEOF(Knots); WHERE ConsistentBSpline : IfcConstraintsParamBSpline(Degree, UpperIndexOnKnots, UpperIndexOnControlPoints, KnotMultiplicities, Knots); CorrespondingKnotLists : SIZEOF(KnotMultiplicities) = UpperIndexOnKnots; END_ENTITY;