最近我一直在构建一个 STEP (iso 10303-21) 导入器,作为我一直在从事的项目的必要要求。到目前为止,我的几何形状是正确的(据我所知),但方向和位置仅在 60%-80% 上正确,这让我认为我没有正确处理AXIS2_PLACEMENT_3D
s。
现在我解析文件的方式从 开始SHAPE_REPRESENTATION_RELATIONSHIP
,并处理它包含的两个形状表示。对于大多数 BREP 形状,这只是一个简单的“级联”效果,直到我到达处理ADVANCED_FACE
所有 2D(边缘)数据的位置,然后再传递到ELEMENTARY_SURFACE
基于该数据构造形状的 BREP 中。
目前我正在使用所有 2D 边缘几何的变换,但忽略ELEMENTARY_SURFACE
. 我也忽略了所有的SHAPE_REPRESENTATION
转换,但使用它们最终“获取”并使用ITEM_TRANSFORMATION
s.
我还应该提一下(除了 2D 边缘数据),所有的变换都是相加的,并最终应用。要添加转换,我将轴转换为旋转矩阵(通过这个问题),将它们相乘,然后简单地添加转换。
更新1
我AXIS2_PLACEMENT_3D
通过删除翻译添加改变了 s 添加在一起的方式。现在我只是添加旋转,并使用第二个平移,并且似乎得到了更准确的结果。