通过Ocaf获取step的实体,然后保存为fbx、obj等mesh格式,转换后出现子对象位置错乱的问题
原模型的效果是这样的
转换后
获取了一个模型的多个实体,但是实体的中心位置都变成坐标原点了
那么,怎么设置转换还原到以前的位置?
搜索了API接口,以及很多方法,做坐标系的转换是一个可能有效的方案
参考这个例子https://www.opencascade.com/content/move-topodsshape-global-position去对单个的shape做转换
转换方法如下:
但是并没有效果,经过打印输出(上面红色的部分),shape在创建时初始位置为0,获取不到原始位置,所以这种方法基本宣告无效
这个帖子给了一个可行的方案
https://www.opencascade.com/content/import-step-export-mesh-wrong-placement-items
myAssembly-> GetShapes(frshapes);
需要改成
myAssembly-> GetFreeShapes(frshapes);
我们来看接口说明
蓝色的部分就是区别,它是不基于任何参照的,所以能够获取到比较原始的数据
按以下方法修改就可以了
这是正常导出的效果