Rationale Bézier-Spline - Oberfläche mit Kontrollpunkten | |

Rational BSpline Surface With Knots | |

Surfaces Bsplines rationnelles avec nœuds |

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

IFC2x3 to IFC4 |
||||

IfcRationalBSplineSurfaceWithKnots | ADDED | |||

IFC4 Addendum 1 |
||||

IfcRationalBSplineSurfaceWithKnots | ||||

UDegree | MODIFIED | Type changed from INTEGER to IfcInteger. | ||

VDegree | MODIFIED | Type changed from INTEGER to IfcInteger. | ||

UClosed | MODIFIED | Type changed from LOGICAL to IfcLogical. | ||

VClosed | MODIFIED | Type changed from LOGICAL to IfcLogical. | ||

SelfIntersect | MODIFIED | Type changed from LOGICAL to IfcLogical. | ||

UMultiplicities | MODIFIED | Type changed from INTEGER to IfcInteger. | ||

VMultiplicities | MODIFIED | Type changed from INTEGER to IfcInteger. | ||

WeightsData | MODIFIED | Type changed from REAL to IfcReal. |

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 fromrational_b_spline_surfacein ISO 10303-42.

HISTORY New entity in IFC4.

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

13 | WeightsData | IfcReal | L[2:?] L[2:?] | The weights associated with the control points in the rational case. | X |

Weights :=IfcMakeArrayOfArray(WeightsData,0,UUpper,0,VUpper) | IfcReal | A[0:UUpper] A[0:VUpper] | Array (two-dimensional) of weight values constructed from the WeightsData. |
X |

Rule | Description |
---|---|

CorrespondingWeightsDataLists | The array dimensions for the weights shall be consistent with the control points data. |

WeightValuesGreaterZero | The weight value associated with each control point shall be greater than zero. |

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

IfcSurface | |||||

Dim :=3 | IfcDimensionCount | The space dimensionality of IfcSurface. It is always a three-dimensional geometric representation item.
IFC4 CHANGE Derived attribute promoted from subtypes. |
X | ||

IfcBoundedSurface | |||||

IfcBSplineSurface | |||||

1 | UDegree | IfcInteger |
Algebraic degree of basis functions in u. | X | |

2 | VDegree | IfcInteger |
Algebraic degree of basis functions in v. | X | |

3 | ControlPointsList | IfcCartesianPoint | L[2:?] L[2:?] | This is a list of lists of control points. | X |

4 | SurfaceForm | IfcBSplineSurfaceForm | Indicator of special surface types. | X | |

5 | UClosed | IfcLogical |
Indication of whether the surface is closed in the u direction; this is for information only. | X | |

6 | VClosed | IfcLogical |
Indication of whether the surface is closed in the v direction; this is for information only. | X | |

7 | SelfIntersect | IfcLogical | Flag to indicate whether, or not, surface is self-intersecting; this is for information only. | X | |

UUpper :=SIZEOF(ControlPointsList) - 1 | IfcInteger | Upper index on control points in u direction. |
X | ||

VUpper :=SIZEOF(ControlPointsList[1]) - 1 | IfcInteger | Upper index on control points in v direction. |
X | ||

ControlPoints :=IfcMakeArrayOfArray(ControlPointsList, 0,UUpper,0,VUpper) | IfcCartesianPoint | A[0:UUpper] A[0:VUpper] | Array (two-dimensional) of control points defining surface geometry. This array is constructed from the control points list. | X | |

IfcBSplineSurfaceWithKnots | |||||

8 | UMultiplicities | IfcInteger | L[2:?] |
The multiplicities of the knots in the u parameter direction. | X |

9 | VMultiplicities | IfcInteger | L[2:?] |
The multiplicities of the knots in the v parameter direction. | X |

10 | UKnots | IfcParameterValue | L[2:?] |
The list of the distinct knots in the u parameter direction. | X |

11 | VKnots | IfcParameterValue | L[2:?] |
The list of the distinct knots in the v parameter direction. | X |

12 | KnotSpec | IfcKnotType | The description of the knot type. | X | |

KnotVUpper :=SIZEOF(VKnots) | IfcInteger | The number of distinct knots in the v parameter direction. |
X | ||

KnotUUpper :=SIZEOF(UKnots) | IfcInteger | The number of distinct knots in the u parameter direction. |
X | ||

IfcRationalBSplineSurfaceWithKnots | |||||

13 | WeightsData | IfcReal | L[2:?] L[2:?] | The weights associated with the control points in the rational case. | X |

Weights :=IfcMakeArrayOfArray(WeightsData,0,UUpper,0,VUpper) | IfcReal | A[0:UUpper] A[0:VUpper] | Array (two-dimensional) of weight values constructed from the WeightsData. |
X |

` <xs:element name="IfcRationalBSplineSurfaceWithKnots" type="ifc:IfcRationalBSplineSurfaceWithKnots" substitutionGroup="ifc:IfcBSplineSurfaceWithKnots" nillable="true"/>`

<xs:complexType name="IfcRationalBSplineSurfaceWithKnots">

<xs:complexContent>

<xs:extension base="ifc:IfcBSplineSurfaceWithKnots">

<xs:sequence>

<xs:element name="WeightsData">

<xs:complexType>

<xs:sequence>

<xs:element ref="ifc:IfcReal-wrapper" minOccurs="4" maxOccurs="unbounded"/>

</xs:sequence>

<xs:attribute ref="ifc:itemType" fixed="ifc:IfcReal-wrapper"/>

<xs:attribute ref="ifc:cType" fixed="list list"/>

<xs:attribute ref="ifc:arraySize" use="optional"/>

</xs:complexType>

</xs:element>

</xs:sequence>

</xs:extension>

</xs:complexContent>

</xs:complexType>

```
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[1]) = SIZEOF(SELF\IfcBSplineSurface.ControlPointsList[1]));

WeightValuesGreaterZero : IfcSurfaceWeightsPositive(SELF);

END_ENTITY;