IFC 4.3.2.20260714 (IFC4X3_ADD2) under development

8.9.3.53 IfcRationalBSplineCurveWithKnots(带节点有理B样条曲线)

8.9.3.53.1 语义定义

带节点有理B样条曲线是一种通过控制点和基函数描述的B样条曲线。除了在超类型 IfcBSplineCurve 中定义的控制点外,它还描述了权重。

所有权重应为正,曲线由以下公式给出:

Math
图 8.9.3.53.A

其中:

变量 定义
k+1 控制点数量
Pi 控制点
wi 权重
d 次数
表 8.9.3.53.B

沿革 IFC4 中的新实体。

8.9.3.53.2 实体继承

8.9.3.53.3 特性

# 特性 类型 描述
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)的定义各不相同。

IfcBSplineCurve (7)
1 Degree IfcInteger

基函数的代数次数。

2 ControlPointsList LIST [2:?] OF IfcCartesianPoint

曲线的控制点列表。

3 CurveForm IfcBSplineCurveForm

用于标识特定类型的曲线;仅用于提供信息。

4 ClosedCurve IfcLogical

指示曲线是否闭合;仅用于提供信息。

5 SelfIntersect IfcLogical

指示曲线是否自相交;仅用于提供信息。

* UpperIndexOnControlPoints IfcInteger

此特性是形式化派生的

(SIZEOF(ControlPointsList) - 1)

控制点数组的上索引;下索引为0。 该值从控制点列表派生。

* ControlPoints ARRAY [0:UpperIndexOnControlPoints] OF IfcCartesianPoint

此特性是形式化派生的

IfcListToArray(ControlPointsList,0,UpperIndexOnControlPoints)

用于定义曲线几何形状的控制点数组。该数组从控制点列表派生。

IfcBSplineCurveWithKnots (4)
6 KnotMultiplicities LIST [2:?] OF IfcInteger

节点的重数。此列表定义了在构建节点数组时,节点列表中每个节点需要重复的次数。

7 Knots LIST [2:?] OF IfcParameterValue

用于定义B样条基函数的不同节点列表。

8 KnotSpec IfcKnotType

节点类型的描述。此信息仅供参考。

* UpperIndexOnKnots IfcInteger

此特性是形式化派生的

SIZEOF(Knots)

节点数组的上索引;下索引为1。

点击显示 14 个隐藏的继承特性 点击隐藏 14 个继承特性
IfcRationalBSplineCurveWithKnots (2)
9 WeightsData LIST [2:?] OF IfcReal

提供的权重值。

* Weights ARRAY [0:UpperIndexOnControlPoints] OF IfcReal

此特性是形式化派生的

IfcListToArray(WeightsData,0,SELF\IfcBSplineCurve.UpperIndexOnControlPoints)

与控制点关联的权重数组。这是从权重数据派生而来的。

表 8.9.3.53.C

8.9.3.53.4 形式化命题

名称 描述
SameNumOfWeightsAndPoints

权重数量应与控制点数量相同。

SIZEOF(WeightsData) = SIZEOF(SELF\IfcBSplineCurve.ControlPointsList)
WeightsGreaterZero

所有权重应具有大于 0.0 的值。

IfcCurveWeightsPositive(SELF)
表 8.9.3.53.D

8.9.3.53.5 形式化表示

ENTITY IfcRationalBSplineCurveWithKnots
 SUBTYPE OF (IfcBSplineCurveWithKnots);
	WeightsData : LIST [2:?] OF IfcReal;
 DERIVE
	 Weights : ARRAY [0:UpperIndexOnControlPoints] OF IfcReal := IfcListToArray(WeightsData,0,SELF\IfcBSplineCurve.UpperIndexOnControlPoints);
 WHERE
	SameNumOfWeightsAndPoints : SIZEOF(WeightsData) = SIZEOF(SELF\IfcBSplineCurve.ControlPointsList);
	WeightsGreaterZero : IfcCurveWeightsPositive(SELF);
END_ENTITY;

8.9.3.53.6 参考