3

我想创建使用自定义数值方法生成的几何 STEP 文件。给定坐标列表,我希望能够将它们写入具有有效 STEP 格式的文件中。为此,我一直在寻找STEP文件格式的介绍。

我可以使用各种 CAD 应用程序轻松创建 STEP 文件,并且我一直在仔细检查这些文件以了解它们的结构。其中很多是有道理的,但也有很多仍然是不透明的。例如,考虑以下描述样条的项目。

#38=B_SPLINE_CURVE_WITH_KNOTS('',5,(#43,#44,#45,#46,#47,#48),.UNSPECIFIED.,.F.,.F.,(6,6),(0.,1.),.UNSPECIFIED.);

我一直无法在任何地方找到该元素的九个参数是什么的描述。我为一个名为 SMRL_v6_rc1 的东西向 ISO 支付了一大笔钱,作为回报,我得到了一个庞大的数据库,其中包含以下条目:

ENTITY b_spline_curve_with_knots
  SUBTYPE OF (b_spline_curve);
  knot_multiplicities : LIST[2:?] OF INTEGER;
  knots : LIST[2:?] OF parameter_value;
  knot_spec : knot_type;
DERIVE
  upper_index_on_knots : INTEGER := SIZEOF(knots);
WHERE
  WR1: constraints_param_b_spline(degree, upper_index_on_knots, upper_index_on_control_points, knot_multiplicities, knots);
  WR2: SIZEOF(knot_multiplicities) = upper_index_on_knots;
END_ENTITY;

尽管标题与 STEP 文件中的行相同,但我没有看到包含九个参数的列表。我怀疑我以错误的方式处理整个事情,因此非常感谢任何意见或建议。

(理想情况下,我正在寻找一个编写良好的 STEP 文件格式指南,类似于Adob​​e 发布的PDF 参考。)

4

3 回答 3

2

在深入研究之后,我发现 STEP 文件的 ISO 规范实际上解释了它自己。相关规范为ISO 10303,关键部分如下:

ISO 10303-11解释了 EXPRESS 模式,它是用于在 ISO 10303 中表达抽象结构和关系的语言。

ISO 10303-21解释了 STEP 文件的具体格式。或者更确切地说,您如何从 EXPRESS 模式转换为文件格式。

ISO 10303-42具有曲线、曲面等的所有数学运算,均以 EXPRESS 模式语言表示。

这些文档集需要从标准供应商那里以数百美元的价格购买,例如,我已经这样做了,现在正试图破译这些文档。如果我对这个过程有更多的见解,我会在这里发布。

于 2019-08-02T03:03:36.693 回答
1

我有 SMRL 版本 7,它有更多关于b_spline_curve_with_knots. 我不确定它是否包含超过您拥有的版本,但您引用的代码是 EXPRESS 代码指定b_spline_curve_with_knots. 我认为这是公开的。SMRL 和付费 ISO 文档应该包含的不仅是代码,而且是每个实体的文本信息。

无论如何,它b_spline_curve_with_knots是实体层次结构的一部分。它是这样的;

b_spline_curve_with_knots是一个子类型

b_spline_curve这是的子类型

bounded_curve这是的子类型

curve这是的子类型

geometric_representation_item这是的子类型

representation_item

这些实体中的每一个都有自己的属性。继承另一个实体的每个实体都会继承属性。

从这一行开始:#38=B_SPLINE_CURVE_WITH_KNOTS('',5,(#43,#44,#45,#46,#47,#48),.UNSPECIFIED.,.F.,.F.,(6,6),(0.,1.),.UNSPECIFIED.); 我们可以这样分解:

#38=STEP 文件中此实体实例的标识符。

B_SPLINE_CURVE_WITH_KNOTS(实体名称

'',第一个属性,名为name,继承自representation_item。它设置为空字符串,但可以为曲线命名。

5,第二个属性,名为degree,继承自b_spline_curve。指定 b 样条基函数的次数。

(#43,#44,#45,#46,#47,#48),第三个属性,名为control_points_list,继承自b_spline_curve。它是对定义控制点坐标的笛卡尔点的引用列表。

.UNSPECIFIED.,第 4 个属性,名为curve_form,继承自b_spline_curve。它是一个可以指定曲线类型的枚举,但这里没有指定。

.F.,第 5 个属性,名为closed_curve,继承自b_spline_curve。此处设置为 false。

.F.,第 6 个属性名为self_intersect,继承自b_spline_curve。此处设置为 false。

(6,6),第 7 个属性,命名为knot_multiplicities。该列表定义了结列表中每个结在构造结数组时要重复的次数。

(0.,1.),第 8 个属性,命名为knots。用于定义 B 样条基函数的不同节点列表。

.UNSPECIFIED.);第9个属性,名为knot_spec对节点类型的描述。在这种情况下没有指定。

于 2019-10-08T11:49:00.783 回答
1

我多年来一直在研究 STEP 文件格式,你猜怎么着,我仍然不完全理解它是如何工作的。最大的问题是缺少您要求的详细规范文档。另一方面,您会发现许多我认为根本没用的模式定义。当今最有用的资源是BuildingSmart网站上的这些定义。至少它们包含图纸和一些有用的规格。

对于所有其余部分,您需要从您需要的特定实体开始研究其他 CAD 系统如何编写 STEP 文件。祝你好运!

于 2019-07-31T17:09:18.747 回答