8.9.3.5 IfcBSplineCurve(B样条曲线)
抽象 该定义可能不会被直接实例化。
8.9.3.5.1 语义定义
IfcBSplineCurve 是通过样条函数参数化的样条曲线。
图1展示了B样条曲线。

B样条曲线是用控制点和基函数描述的分段参数多项式或有理曲线。B样条曲线被选为表示所有类型多项式或有理参数曲线的最稳定格式。通过适当的特性值,它能够表示显式多项式、有理、贝塞尔或B样条类型的单跨距或样条曲线。


数据解释如下:
- 所有权重应为正数,曲线由图2给出,变量定义见表4。节点数组是一个包含(k+d+2)个实数的数组 [u-d ... uk+1],使得对于所有在 [-d,k]范围内的索引j,uj <= uj+1。该数组通过根据重数重复每个多重节点从节点数据列表获得。N di, 即第i个d次归一化B样条基函数,定义在该数组的子集 [ui-d, ... , ui+1]上。
- 令L表示节点数组中d+k+2个节点中不同值的数量; L将被称为"节点上索引"。令mj表示第j个不同节点的重数(重复次数)。 然后参见图3。除第一个和最后一个外,所有节点重数应在1...次数范围内;第一个和最后一个节点的最大重数可为次数+1。在计算基函数时,例如重数为3的节点u在节点数组中被解释为字符串u, u, u,。B样条曲线有3个特殊子类型(注意:此IFC版本仅包含1个,贝塞尔曲线),其中节点和节点重数是派生的,以提供简单的默认功能。
- 提供逻辑标志以指示曲线是否自相交。
沿革 IFC2x2中的新实体。
8.9.3.5.2 实体继承
-
- IfcCurve
- IfcAnnotationFillArea
- IfcBooleanResult
- IfcBoundingBox
- IfcCartesianPointList
- IfcCartesianTransformationOperator
- IfcCsgPrimitive3D
- IfcDirection
- IfcFaceBasedSurfaceModel
- IfcFillAreaStyleHatching
- IfcFillAreaStyleTiles
- IfcGeometricSet
- IfcHalfSpaceSolid
- IfcLightSource
- IfcPlacement
- IfcPlanarExtent
- IfcPoint
- IfcSectionedSpine
- IfcSegment
- IfcShellBasedSurfaceModel
- IfcSolidModel
- IfcSurface
- IfcTessellatedItem
- IfcTextLiteral
- IfcVector
8.9.3.5.3 特性
| # | 特性 | 类型 | 描述 |
|---|---|---|---|
| IfcRepresentationItem (2) | |||
| LayerAssignment | SET [0:1] OF IfcPresentationLayerAssignment FOR AssignedItems |
将表示项分配给单个或多个层。LayerAssignments 可以覆盖其所在的 IfcRepresentation 的 Items 列表中的 LayerAssignments。 |
|
| StyledByItem | SET [0:1] OF IfcStyledItem FOR Item |
引用为表示提供表现信息的 IfcStyledItem,例如,为几何曲线提供曲线样式,包括颜色和厚度。 |
|
| IfcCurve (1) | |||
| * | Dim | IfcDimensionCount |
此特性是形式化派生的
此抽象类的空间维度,所有子类(如 IfcLine、IfcConic 和 IfcBoundedCurve)的定义各不相同。 |
| 点击显示 3 个隐藏的继承特性 点击隐藏 3 个继承特性 | |||
| IfcBSplineCurve (7) | |||
| 1 | Degree | IfcInteger |
基函数的代数次数。 |
| 2 | ControlPointsList | LIST [2:?] OF IfcCartesianPoint |
曲线的控制点列表。 |
| 3 | CurveForm | IfcBSplineCurveForm |
用于标识特定类型的曲线;仅用于提供信息。 |
| 4 | ClosedCurve | IfcLogical |
指示曲线是否闭合;仅用于提供信息。 |
| 5 | SelfIntersect | IfcLogical |
指示曲线是否自相交;仅用于提供信息。 |
| * | UpperIndexOnControlPoints | IfcInteger |
此特性是形式化派生的
控制点数组的上索引;下索引为0。 该值从控制点列表派生。 |
| * | ControlPoints | ARRAY [0:UpperIndexOnControlPoints] OF IfcCartesianPoint |
此特性是形式化派生的
用于定义曲线几何形状的控制点数组。该数组从控制点列表派生。 |
8.9.3.5.4 形式化命题
| 名称 | 描述 |
|---|---|
| SameDim |
所有控制点应具有相同的维度。 |
|
|
8.9.3.5.5 形式化表示
ENTITY IfcBSplineCurve
ABSTRACT SUPERTYPE OF (ONEOF
(IfcBSplineCurveWithKnots))
SUBTYPE OF (IfcBoundedCurve);
Degree : IfcInteger;
ControlPointsList : LIST [2:?] OF IfcCartesianPoint;
CurveForm : IfcBSplineCurveForm;
ClosedCurve : IfcLogical;
SelfIntersect : IfcLogical;
DERIVE
UpperIndexOnControlPoints : IfcInteger := (SIZEOF(ControlPointsList) - 1);
ControlPoints : ARRAY [0:UpperIndexOnControlPoints] OF IfcCartesianPoint := IfcListToArray(ControlPointsList,0,UpperIndexOnControlPoints);
WHERE
SameDim : SIZEOF(QUERY(Temp <* ControlPointsList |
Temp.Dim <> ControlPointsList[1].Dim))
= 0;
END_ENTITY;