added |

A rational B-spline curve with knots is a B-spline curve described in terms of control points and basic functions. It describes weights in addition to the control points defined at the supertype *IfcBSplineCurve*.

All weights shall be positive and the curve is given by:

where

k+1 |
number of control points |

P_{i} |
control points |

w_{i} |
weights |

d |
degree |

NOTE Entity adapted from

rational_b_spline_curvein ISO 10303-42.HISTORY New entity in IFC4.

# | Attribute | Type | Description |
---|---|---|---|

IfcRepresentationItem | |||

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

IfcGeometricRepresentationItem | |||

IfcCurve | |||

Dim | INVALID | The space dimensionality of this abstract class, defined differently for all subtypes, i.e. for IfcLine, IfcConic and IfcBoundedCurve. | |

IfcBoundedCurve | |||

IfcBSplineCurve | |||

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

IfcBSplineCurveWithKnots | |||

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

IfcRationalBSplineCurveWithKnots | |||

9 | WeightsData | LIST [2:?] OF IfcReal | The supplied values of the weights. |

Weights | INVALID | The array of weights associated with the control points. This is derived from the weights data. |

ENTITY IfcRationalBSplineCurveWithKnots SUBTYPE OF (IfcBSplineCurveWithKnots); WeightsData : LIST [2:?] OF IfcReal; DERIVE Weights : ARRAY [0:UpperIndexOnControlPoints] OF IfcReal := IfcListToArray(WeightsData,0,SELF\IfcBSplineCurve.UpperIndexOnControlPoints); WHERE SameNumOfWeightsAndPoints : SIZEOF(WeightsData) = SIZEOF(SELF\IfcBSplineCurve.ControlPointsList); WeightsGreaterZero : IfcCurveWeightsPositive(SELF); END_ENTITY;