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 from rational_b_spline_surface in ISO 10303-42.
HISTORY New entity in IFC4.
# | Attribute | Type | Cardinality | Description | C |
---|---|---|---|---|---|
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 | C |
---|---|---|---|---|---|
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. | 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. | X | |
IfcGeometricRepresentationItem | |||||
IfcSurface | |||||
Dim :=3 | IfcDimensionCount | [1:1] | The space dimensionality of IfcSurface. It is always a three-dimensional geometric representation item. | X | |
IfcBoundedSurface | |||||
IfcBSplineSurface | |||||
1 | UDegree | IfcInteger | [1:1] | Algebraic degree of basis functions in u. | X |
2 | VDegree | IfcInteger | [1:1] | 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 | [1:1] | Indicator of special surface types. | X |
5 | UClosed | IfcLogical | [1:1] | Indication of whether the surface is closed in the u direction; this is for information only. | X |
6 | VClosed | IfcLogical | [1:1] | Indication of whether the surface is closed in the v direction; this is for information only. | X |
7 | SelfIntersect | IfcLogical | [1:1] | Flag to indicate whether, or not, surface is self-intersecting; this is for information only. | X |
UUpper :=SIZEOF(ControlPointsList) - 1 | IfcInteger | [1:1] | Upper index on control points in u direction. | X | |
VUpper :=SIZEOF(ControlPointsList[1]) - 1 | IfcInteger | [1:1] | 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 | [1:1] | The description of the knot type. | X |
KnotVUpper :=SIZEOF(VKnots) | IfcInteger | [1:1] | The number of distinct knots in the v parameter direction. | X | |
KnotUUpper :=SIZEOF(UKnots) | IfcInteger | [1:1] | 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;