added |

The *IfcBSplineSurfaceWithKnots* is a general form of rational or polynomial parametric surface in which the knot values are explicitly given.

NOTE Definition according to ISO/CD 10303-42:1992

This is a B-spline surface in which the knot values are explicitly given. This subtype shall be used to represent non-uniform B-spline surfaces, and may also be used for other knot types.

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 from

b_spline_surface_with_knotsdefined in ISO10303-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 | |||

IfcSurface | |||

Dim | INVALID | The space dimensionality of IfcSurface. It is always a three-dimensional geometric representation item. > IFC4 CHANGE Derived attribute promoted from subtypes. | |

IfcBoundedSurface | |||

IfcBSplineSurface | |||

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

IfcBSplineSurfaceWithKnots | |||

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

ENTITY IfcBSplineSurfaceWithKnots SUPERTYPE OF (ONEOF (IfcRationalBSplineSurfaceWithKnots)) SUBTYPE OF (IfcBSplineSurface); UMultiplicities : LIST [2:?] OF IfcInteger; VMultiplicities : LIST [2:?] OF IfcInteger; UKnots : LIST [2:?] OF IfcParameterValue; VKnots : LIST [2:?] OF IfcParameterValue; KnotSpec : IfcKnotType; DERIVE KnotVUpper : IfcInteger := SIZEOF(VKnots); KnotUUpper : IfcInteger := SIZEOF(UKnots); WHERE UDirectionConstraints : IfcConstraintsParamBSpline ( SELF\IfcBSplineSurface.UDegree, KnotUUpper, SELF\IfcBSplineSurface.UUpper, UMultiplicities, UKnots); VDirectionConstraints : IfcConstraintsParamBSpline ( SELF\IfcBSplineSurface.VDegree, KnotVUpper, SELF\IfcBSplineSurface.VUpper, VMultiplicities, VKnots); CorrespondingULists : SIZEOF(UMultiplicities) = KnotUUpper; CorrespondingVLists : SIZEOF(VMultiplicities) = KnotVUpper; END_ENTITY;