改变的历史记录:
| 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. | ||
实体定义
带结有理B样条曲面是用控制点和相关的权值描述的分段参数有理曲面。
表面解释如下:

注:实体改编自ISO 10303-42中的有理b样条曲面。
IFC4中增加的新实体。
Attribute definitions
| # | 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 |
Formal Propositions
| 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 | |
EXPRESS Specification
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(SELFIfcBSplineSurface.ControlPointsList)) AND (SIZEOF(WeightsData[1]) = SIZEOF(SELFIfcBSplineSurface.ControlPointsList[1]));
WeightValuesGreaterZero : IfcSurfaceWeightsPositive(SELF);
END_ENTITY;