STEP 文件中无意义的数据重复

问题描述

在我用 OpenCascade 生成的 STEP 文件中,我可以看到:

#58 = VERTEX_POINT('',#59);
#59 = CARTESIAN_POINT('',(-0.5,-0.5,-0.5));
#60 = VERTEX_POINT('',#61);
#61 = CARTESIAN_POINT('',(0.5,-0.5));
#62 = SURFACE_CURVE('',#63,(#67,#79),.PCURVE_S1.);
#63 = LINE('',#64,#65);
#64 = CARTESIAN_POINT('',-0.5));
#65 = VECTOR('',#66,1.);
#66 = DIRECTION('',(1.,0.,0.));
#67 = PCURVE('',#68,#73);

重复的数据 #59#64我有点恼火。 看起来这个 STEP 文件可能会小一点(特别是如果有数千个顶点)。 当我编辑文件以在使用 #59 的地方使用 #64 时,它看起来仍然很好。

是否有充分的理由拥有这些重复数据? 更重要的是,有没有办法避免它?

我已经尝试为每个顶点创建一个 TopoDS_Vertex 并避免重复连接相同的两个顶点的 TopoDS_Edge。 然后使用这些边创建 TopoDS_Wire,而后者又用于创建 TopoDS_Face。 整个网格用 BRepBuilderAPI_Sewing 放在一起。

谢谢

解决方法

我的回答只是猜测!

两个笛卡尔点 #59#64 碰巧是相同的,但在它们之上构建了不同的几何实体。显然,曲面曲线 #62 指代直线 #63 指代笛卡尔点 #64 也可以指代点 #59

但是,如果有人打开 STEP 文件并想要修改存储在笛卡尔点 #58 中的顶点 #59 的坐标,会发生什么?线#63和曲面曲线#62也应该修改吗?还是应该重新定义?为什么顶点 #58 的修改会导致重新定义另一个仅偶然共享一个笛卡尔位置的实体?

因此,我猜您的建议是某种“STEP 格式压缩”,但实际意图是几何实体层次结构的清晰定义。