Bézier-Spline-Kurve mit (gegebenen) Kontrollpunkten | |

BSpline Curve With Knots |

Item | SPF | XML | Change | Description |
---|---|---|---|---|

4.0.0.0 |
||||

IfcBSplineCurveWithKnots | ADDED | |||

4.0.1.0 |
||||

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. |

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.

LetLdenote the number of distinct values amongst thed+k+2 knots in the knot list;Lwill be referred to as the ‘upper index on knots’. Letmdenote the multiplicity (i.e., number of repetitions) of the_{j}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 ofd+ 1. In evaluating the basis functions, a knotuof, e.g., multiplicity 3 is interpreted as a sequenceu,u,u,; in the knot array.

NOTE Entity adapted fromb_spline_curve_with_knotsdefined in ISO10303-42.

HISTORY New entity in IFC4.

# | Attribute | Type | Cardinality | Description | G |
---|---|---|---|---|---|

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 |

7 | Knots | IfcParameterValue | L[2:?] | The list of distinct knots used to define the B-spline basis functions. | X |

8 | KnotSpec | IfcKnotType | The description of the knot type. This is for information only. | X | |

UpperIndexOnKnots :=SIZEOF(Knots) | IfcInteger | The upper index on the knot arrays; the lower index is 1. | X |

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. |

# | 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 IFC4 CHANGE The inverse attribute | 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 | 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 | |||||

IfcBSplineCurve | |||||

1 | Degree | IfcInteger | The algebraic degree of the basis functions. | X | |

2 | ControlPointsList | IfcCartesianPoint | L[2:?] | The list of control points for the curve. | X |

3 | CurveForm | IfcBSplineCurveForm | Used to identify particular types of curve; it is for information only. | X | |

4 | ClosedCurve | IfcLogical | Indication of whether the curve is closed; it is for information only. | X | |

5 | SelfIntersect | IfcLogical | Indication whether the curve self-intersects or not; it is for information only. | 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 | ||

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 | |

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 |

7 | Knots | IfcParameterValue | L[2:?] | The list of distinct knots used to define the B-spline basis functions. | X |

8 | KnotSpec | IfcKnotType | The description of the knot type. This is for information only. | X | |

UpperIndexOnKnots :=SIZEOF(Knots) | IfcInteger | The upper index on the knot arrays; the lower index is 1. | X |

` <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>

```
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;