最近我'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'的翻译,似乎得到了奇怪的更准确的结果 .