【问题标题】:How to learn about the STEP file format?如何了解STEP文件格式?
【发布时间】:2019-12-09 03:22:02
【问题描述】:

我想创建使用自定义数值方法生成的几何 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 文件中的行相同,但我没有看到包含九个参数的列表。我怀疑我以错误的方式处理整个事情,因此非常感谢任何 cmets 或建议。

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

【问题讨论】:

标签: cad step


【解决方案1】:

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

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

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

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

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

【讨论】:

【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    我有 SMRL 版本 7,它有更多关于 b_spline_curve_with_knots 的信息。我不确定它是否包含超过您拥有的版本,但您引用的代码是指定b_spline_curve_with_knots 的 EXPRESS 代码。我认为这是公开的。 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。它是对定义控制点坐标的 cartesian_points 的引用列表。

    .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 结类型的描述。在这种情况下没有指定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 2017-01-26
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多