A rational B-spline surface with knots is a piecewise parametric rational surface described in terms of control points, and associated weight values.
The surface is to be interpreted as follows:
NOTE Entity adapted from rational_b_spline_surface in ISO 10303-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 IfcSurface. It is always a three-dimensional geometric representation item.|
> IFC4 CHANGE Derived attribute promoted from subtypes.
|1||UDegree||IfcInteger||Algebraic degree of basis functions in u.|
|2||VDegree||IfcInteger||Algebraic degree of basis functions in v.|
|3||ControlPointsList||LIST [2:?] OF LIST [2:?] OF IfcCartesianPoint||This is a list of lists of control points.|
|4||SurfaceForm||IfcBSplineSurfaceForm||Indicator of special surface types.|
|5||UClosed||IfcLogical||Indication of whether the surface is closed in the u direction; this is for information only.|
|6||VClosed||IfcLogical||Indication of whether the surface is closed in the v direction; this is for information only.|
|7||SelfIntersect||IfcLogical||Flag to indicate whether, or not, surface is self-intersecting; this is for information only.|
|UUpper||INVALID||Upper index on control points in u direction.|
|VUpper||INVALID||Upper index on control points in v direction.|
|ControlPoints||INVALID||Array (two-dimensional) of control points defining surface geometry. This array is constructed from the control points list.|
|8||UMultiplicities||LIST [2:?] OF IfcInteger||The multiplicities of the knots in the u parameter direction.|
|9||VMultiplicities||LIST [2:?] OF IfcInteger||The multiplicities of the knots in the v parameter direction.|
|10||UKnots||LIST [2:?] OF IfcParameterValue||The list of the distinct knots in the u parameter direction.|
|11||VKnots||LIST [2:?] OF IfcParameterValue||The list of the distinct knots in the v parameter direction.|
|12||KnotSpec||IfcKnotType||The description of the knot type.|
|KnotVUpper||INVALID||The number of distinct knots in the v parameter direction.|
|KnotUUpper||INVALID||The number of distinct knots in the u parameter direction.|
|13||WeightsData||LIST [2:?] OF LIST [2:?] OF IfcReal||The weights associated with the control points in the rational case.|
|Weights||INVALID||Array (two-dimensional) of weight values constructed from the WeightsData.|
ENTITY IfcRationalBSplineSurfaceWithKnots SUBTYPE OF (IfcBSplineSurfaceWithKnots); WeightsData : LIST [2:?] OF LIST [2:?] OF IfcReal; DERIVE Weights : ARRAY [0:UUpper] OF ARRAY [0:VUpper] OF IfcReal := IfcMakeArrayOfArray(WeightsData,0,UUpper,0,VUpper); WHERE CorrespondingWeightsDataLists : (SIZEOF(WeightsData) = SIZEOF(SELF\IfcBSplineSurface.ControlPointsList)) AND (SIZEOF(WeightsData) = SIZEOF(SELF\IfcBSplineSurface.ControlPointsList)); WeightValuesGreaterZero : IfcSurfaceWeightsPositive(SELF); END_ENTITY;