IFC 4.3.2.20251031 (IFC4X3_ADD2) under development

8.9.3.5 IfcBSplineCurve(B样条曲线)

抽象 该定义可能不会被直接实例化。

8.9.3.5.1 语义定义(Semantic definition)

IfcBSplineCurve 是通过样条函数参数化的样条曲线。

图1展示了B样条曲线。

控制点
图1 — B样条曲线

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

公式1
图2 - 公式1
公式2
图3 - 公式2
变量 定义
k+1 控制点数量
Pi 控制点
wi 权重
d 次数
表4 - 变量定义

数据解释如下:

  1. 所有权重应为正数,曲线由图2给出,变量定义见表4。节点数组是一个包含(k+d+2)个实数的数组 [u-d ... uk+1],使得对于所有在 [-d,k]范围内的索引j,uj <= uj+1。该数组通过根据重数重复每个多重节点从节点数据列表获得。N di, 即第id次归一化B样条基函数,定义在该数组的子集 [ui-d, ... , ui+1]上。
  2. L表示节点数组中d+k+2个节点中不同值的数量; L将被称为"节点上索引"。令mj表示第j个不同节点的重数(重复次数)。 然后参见图3。除第一个和最后一个外,所有节点重数应在1...次数范围内;第一个和最后一个节点的最大重数可为次数+1。在计算基函数时,例如重数为3的节点u在节点数组中被解释为字符串u, u, u,。B样条曲线有3个特殊子类型(注意:此IFC版本仅包含1个,贝塞尔曲线),其中节点和节点重数是派生的,以提供简单的默认功能。
  3. 提供逻辑标志以指示曲线是否自相交。

8.9.3.5.2 实体继承(Entity inheritance)

8.9.3.5.3 特性(Attributes)

# 特性(Attributes) 类型 描述
IfcRepresentationItem (2)
LayerAssignment SET [0:1] OF IfcPresentationLayerAssignment FOR AssignedItems

将表示项分配给单个或多个层。LayerAssignments 可以覆盖其所在的 IfcRepresentationItems 列表中的 LayerAssignments

StyledByItem SET [0:1] OF IfcStyledItem FOR Item

引用为表示提供表现信息的 IfcStyledItem,例如,为几何曲线提供曲线样式,包括颜色和厚度。

IfcCurve (1)
* Dim IfcDimensionCount

此属性是形式化派生的

IfcCurveDim(SELF)

此抽象类的空间维度,所有子类(如 IfcLineIfcConicIfcBoundedCurve)的定义各不相同。

点击显示 3 个隐藏的继承特性 点击隐藏 3 个继承特性
IfcBSplineCurve (7)
1 Degree IfcInteger

The algebraic degree of the basis functions.

2 ControlPointsList LIST [2:?] OF IfcCartesianPoint

The list of control points for the curve.

3 CurveForm IfcBSplineCurveForm

Used to identify particular types of curve; it is for information only.

4 ClosedCurve IfcLogical

Indication of whether the curve is closed; it is for information only.

5 SelfIntersect IfcLogical

Indication whether the curve self-intersects or not; it is for information only.

* UpperIndexOnControlPoints IfcInteger

此属性是形式化派生的

(SIZEOF(ControlPointsList) - 1)

The upper index on the array of control points; the lower index is 0. This value is derived from the control points list.

* ControlPoints ARRAY [0:UpperIndexOnControlPoints] OF IfcCartesianPoint

此属性是形式化派生的

IfcListToArray(ControlPointsList,0,UpperIndexOnControlPoints)

The array of control points used to define the geometry of the curve. This is derived from the list of control points.

表 8.9.3.5.C

8.9.3.5.4 形式化命题(Formal propositions)

名称 描述
SameDim

无可用描述

SIZEOF(QUERY(Temp <* ControlPointsList |
  Temp.Dim <> ControlPointsList[1].Dim))
= 0
表 8.9.3.5.D

8.9.3.5.5 形式化表示(Formal representation)

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;

8.9.3.5.6 参考文献