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
最后编辑:admin 更新时间:2025-11-19 15:15