最近我've been building a STEP (iso 10303-21) importer as a necessary requirement for a project I'一直在努力 . 到目前为止,我've got the geometry right (so far as I can tell), but the orientation and position is only right on 60%-80%, which leads me to think that I' m没有正确处理 AXIS2_PLACEMENT_3D .

现在,我解析文件的方式从 SHAPE_REPRESENTATION_RELATIONSHIP 开始,并处理它包含的两个形状表示 . 对于大多数BREP形状,它是's just a simple '级联效应,直到我到达处理所有2D(边缘)数据的 ADVANCED_FACE ,然后传递到 ELEMENTARY_SURFACE ,它根据该数据构造形状 .

目前我正在使用所有2D边缘几何体的变换,但忽略了 ELEMENTARY_SURFACE 的变换 . 我也忽略了所有 SHAPE_REPRESENTATION 转换,但最终使用它们'get'并使用 ITEM_TRANSFORMATION .

我还应该提到(除了2D边缘数据),转换都被加起来,并最终应用 . 要添加变换,我将轴转换为旋转矩阵(通过this问题),将它们相乘,然后只需添加变换 .

Update1

我已经改变了通过删除翻译添加将 AXIS2_PLACEMENT_3D 添加到一起的方式 . 现在我'm just Adding the rotations, and using the 2nd'的翻译,似乎得到了奇怪的更准确的结果 .