STEP文件的三种类型

类型对比表:

类型 结构 数据组织 典型应用
单一零件 扁平 一个形状 简单零件导出
多零件(无结构) 扁平列表 多个独立形状 批量导出
装配体 树形层级 引用+实例+变换 完整产品结构

类型1:单个零件STEP文件:

ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('Single Part'),'2;1');
FILE_NAME('part.stp','2025-11-19',...);
ENDSEC;

DATA;
#10=PRODUCT('Bolt','M8 Bolt',...);
#20=SHAPE_REPRESENTATION(...);
#30=MANIFOLD_SOLID_BREP(...);
  /* 只有一个实体几何 */
ENDSEC;
END-ISO-10303-21;

特点:

  • 只包含一个几何体
  • 没有装配关系
  • 文件结构简单

类型2: 多零件STEP文件(无装配结构)

DATA;
/* 零件1 */
#10=PRODUCT('Part1',...);
#20=MANIFOLD_SOLID_BREP(...);

/* 零件2 */
#30=PRODUCT('Part2',...);
#40=MANIFOLD_SOLID_BREP(...);

/* 零件3 */
#50=PRODUCT('Part3',...);
#60=MANIFOLD_SOLID_BREP(...);

/* 没有装配关系,只是多个独立零件 */
ENDSEC;

特点:

  • 多个独立的PRODUCT实体
  • 零件之间没有父子关系
  • 每个零件都有完整的几何数据
  • 位置关系是绝对坐标(不是相对变换)

类型3: 装配体STEP文件(AP214/AP203)

DATA;
/* 定义零件几何(只定义一次) */
#100=PRODUCT('Wheel','Standard Wheel',...);
#110=MANIFOLD_SOLID_BREP(...);  /* 轮子的几何 */

/* 定义装配体 */
#200=PRODUCT('Car','Complete Vehicle',...);
#210=PRODUCT_DEFINITION_FORMATION(...);

/* 创建4个轮子实例 */
#300=NEXT_ASSEMBLY_USAGE_OCCURRENCE('Front-Left',...);
#310=ITEM_DEFINED_TRANSFORMATION('Trf1',...);
  /* 位置: X=1000, Y=500, Z=0 */

#320=NEXT_ASSEMBLY_USAGE_OCCURRENCE('Front-Right',...);
#330=ITEM_DEFINED_TRANSFORMATION('Trf2',...);
  /* 位置: X=1000, Y=-500, Z=0 */

#340=NEXT_ASSEMBLY_USAGE_OCCURRENCE('Rear-Left',...);
#350=ITEM_DEFINED_TRANSFORMATION('Trf3',...);
  /* 位置: X=-1000, Y=500, Z=0 */

#360=NEXT_ASSEMBLY_USAGE_OCCURRENCE('Rear-Right',...);
#370=ITEM_DEFINED_TRANSFORMATION('Trf4',...);
  /* 位置: X=-1000, Y=-500, Z=0 */

/* 所有实例引用同一个几何 #110 */
ENDSEC;

关键实体解释:

STEP实体 作用
PRODUCT 定义产品(零件或装配体)
NEXT_ASSEMBLY_USAGE_OCCURRENCE 定义装配关系(父子连接)
ITEM_DEFINED_TRANSFORMATION 定义位置变换矩阵
SHAPE_REPRESENTATION 几何数据容器

FreeCad中快速加载STEP文件原理:

选项 默认状态 作用 影响 性能影响
Enable STEP Compound merge ✅ 勾选 合并相邻的、材质相同的面,减少对象复杂度 几何合并 中等
Use LinkGroup ❌ 不勾选 使用Link对象代替直接复制几何,节省内存 引用方式
Import invisible objects ✅ 勾选 导入STEP文件中标记为”隐藏”的对象:优点是能够保留完整设计意图、 可用于后续建模参考、可手动切换显示等 隐藏对象
Reduce number of objects ❌ 不勾选 激进地合并对象,大幅减少对象数量。 对象简化
Expand compound shape ❌ 不勾选 将复合体(Compound)拆分为独立对象。场景:单独隐藏/显示、分别设置颜色、独立导出、分别进行布尔运算等 复合体展开 中等
Show progress bar when importing ✅ 勾选 显示导入进度条。 界面显示 极低
Ignore instance names ✅ 勾选 忽略STEP文件中的实例名称,使用零件名称代替 命名方式 极低

代码定位1:加载STEP文件入口

 Py::Object importOptions(const Py::Tuple& args)
    {
        char* Name {};
        if (!PyArg_ParseTuple(args.ptr(), "et", "utf-8", &Name)) {
            throw Py::Exception();
        }

        std::string Utf8Name = std::string(Name);
        PyMem_Free(Name);
        std::string name8bit = Part::encodeFilename(Utf8Name);

        Py::Dict options;
        Base::FileInfo file(name8bit.c_str());
        if (file.hasExtension({"stp", "step"})) {
            PartGui::TaskImportStep dlg(Gui::getMainWindow());
            if (dlg.showDialog()) {
                if (!dlg.exec()) {
                    throw Py::Exception(Base::PyExc_FC_AbortIOException, "User cancelled import");
                }
            }
        ...
        }
        return options;
    }
作者:admin  创建时间:2025-11-19 14:34
最后编辑:admin  更新时间:2025-11-19 15:15