IfcBSplineCurveWithKnots

BACnet MVD

#### IfcBSplineCurveWithKnots

Natural language names

| Bézier-Spline-Kurve mit (gegebenen) Kontrollpunkten
| BSpline Curve With Knots

Change log

Item | SPF | XML | Change | Description
--- | --- | --- | --- | ---
IFC2x3 to IFC4
IfcBSplineCurveWithKnots |  |  | ADDED |
IFC4 Addendum 1
IfcBSplineCurveWithKnots |  |  |  |
Degree |  |  | MODIFIED | Type changed from INTEGER to IfcInteger.
ClosedCurve |  |  | MODIFIED | Type changed from LOGICAL to IfcLogical.
SelfIntersect |  |  | MODIFIED | Type changed from LOGICAL to IfcLogical.
KnotMultiplicities |  |  | MODIFIED | Type changed from INTEGER to IfcInteger.

##### Semantic definitions at the entity

Entity definition

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 mj denote the multiplicity (i.e., number of repetitions) of the jth 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.

Attribute definitions

# | Attribute | Type | Cardinality | Description | B
--- | --- | --- | --- | --- | ---
6 | KnotMultiplicities | IfcInteger | L[2:?] | 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. | X | X
7 | Knots | IfcParameterValue | L[2:?] | The list of distinct knots used to define the B-spline basis functions. | X | X
8 | KnotSpec | IfcKnotType |  | The description of the knot type. This is for information only. | X | X
| UpperIndexOnKnots :=SIZEOF(Knots) | IfcInteger |  | The upper index on the knot arrays; the lower index is 1. | X | X

Formal Propositions

Rule | Description
--- | ---
ConsistentBSpline | The function IfcConstraintsParamBSpline returns TRUE if no inconsistencies in the parametrisation of the B-spline are found.
CorrespondingKnotLists | The number of elements in the knot multiplicities list shall be equal to the number of elements in the knots list.

##### Inherited definitions from supertypes

Entity inheritance
Attribute inheritance

# | Attribute | Type | Cardinality | Description | B
--- | --- | --- | --- | --- | ---
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

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 | X
IfcBoundedCurve
IfcBSplineCurve
1 | Degree | IfcInteger |  | The algebraic degree of the basis functions. | X | X
2 | ControlPointsList | IfcCartesianPoint | L[2:?] | The list of control points for the curve. | X | X
3 | CurveForm | IfcBSplineCurveForm |  | Used to identify particular types of curve; it is for information only. | X | X
4 | ClosedCurve | IfcLogical |  | Indication of whether the curve is closed; it is for information only. | X | X
5 | SelfIntersect | IfcLogical |  | Indication whether the curve self-intersects or not; it is for information only. | X | X
| UpperIndexOnControlPoints :=(SIZEOF(ControlPointsList) - 1) | IfcInteger |  | The upper index on the array of control points; the lower index is 0. This value is derived from the control points list. | X | X
| ControlPoints :=IfcListToArray(ControlPointsList,0,UpperIndexOnControlPoints) | IfcCartesianPoint | A[0:UpperIndexOnControlPoints] | The array of control points used to define the geometry of the curve. This is derived from the list of control points. | X | X
IfcBSplineCurveWithKnots
6 | KnotMultiplicities | IfcInteger | L[2:?] | 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. | X | X
7 | Knots | IfcParameterValue | L[2:?] | The list of distinct knots used to define the B-spline basis functions. | X | X
8 | KnotSpec | IfcKnotType |  | The description of the knot type. This is for information only. | X | X
| UpperIndexOnKnots :=SIZEOF(Knots) | IfcInteger |  | The upper index on the knot arrays; the lower index is 1. | X | X

##### Formal representations

XML Specification
`<xs:element name="IfcBSplineCurveWithKnots" type="ifc:IfcBSplineCurveWithKnots" substitutionGroup="ifc:IfcBSplineCurve" nillable="true"/>
<xs:complexType name="IfcBSplineCurveWithKnots">
<xs:complexContent>
<xs:extension base="ifc:IfcBSplineCurve">
<xs:attribute name="KnotMultiplicities" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcInteger"/>
</xs:simpleType>
<xs:minLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Knots" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcParameterValue"/>
</xs:simpleType>
<xs:minLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="KnotSpec" type="ifc:IfcKnotType" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
`
EXPRESS Specification
`ENTITY IfcBSplineCurveWithKnots
SUPERTYPE OF(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;

EXPRESS-G diagram

`

Link to this page