通過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);
我們來看接口說明
藍色的部分就是區別,它是不基於任何參照的,所以能夠獲取到比較原始的數據
按以下方法修改就可以了
這是正常導出的效果