2017-10-11 143 views
1

我們有一個現有的three.js應用程序,正在嘗試添加對cad設計的支持。之前,我們通過自定義的DXF文件創建的geojson數據來管理這些數據,但現在我們正在使用Autodesk Forge來支持更多的數據類型,並在渲染之前預處理數據。Autodesk Forge - 自定義查看器

作爲前言,我們不能簡單地使用Forge viewer threejs版本,因爲這將涉及到我們將整個應用程序重寫爲在Forge查看器之上構建爲擴展。

因此,對於3D文件,我正在從Forge api下載obj/mtl文件,並使用它們的OBJLoader2示例直接在vanilla three.js中加載這些文件。根據我最初的測試,這似乎工作,並呈現我的喜好。我可以控制網格的創建方式,並確保它能夠在我的應用程序中進行優化。

問題出現在我試圖加載2D文件時,僞造api只能讓我下載f2d文件,據我所知,我沒有辦法使用vanilla three.js加載這些文件。有任何想法嗎? 2D設計會導出另一種格式,因爲我可能能夠獨立加載?

+0

或者,我想替代。有沒有辦法通過API將2D設計轉換爲3D設計?這樣我可以下載obj/mtl,並且只是渲染它,就像渲染3D視圖一樣。 – kerv

回答

2

目前我不知道一個簡單的管道加載2D純三維.js。通過2d我猜你的意思是dwg/dxf,如果不是更明確的話...... Forge Model Derivatives REST API不提供dwg的另一種輸出格式,而不是svf(f2d)。

你可以通過向它添加一個三維實體來將一個2D DWG轉換成一個3D實體,但後來我不知道OBJ輸出是什麼,可能不是很有趣,但你可能想給它一個嘗試。

另一種選擇是將Design Automation API與AutoCAD一起使用,您可以上傳一個dwg並運行一些自定義的dll,將圖形轉換爲您的自定義格式,然後加載到您的查看器中,這將需要AutoCAD ObjectARX或。 Net API的專業知識,取決於您計劃處理的圖紙的複雜程度,可能是一項相當不錯的工作。

最後,您可能要考慮使用Forge Viewer,即使這意味着要重寫應用程序的某些部分,查看器也基於Three.js,因此您可以輕鬆遷移某些功能,所有UI只是html/css,你可以在其上集成任何UI JavaScript框架。從長遠來看,這可能最終會成爲一種更加強大和靈活的解決方案,而不是一種複雜的格式之間的翻譯管道。通過將3d導出到obj,您還將丟失嵌入CAD文件中的所有元數據,這可能是也可能不是問題給你。

我希望可以幫助

+0

有一點幫助。謝謝 是的 - 我所說的2D是沒有3D對象的DWG和DGN文件。想想簡單的線條和一些文字元素。 我會考慮僞裝它,讓系統認爲它是3D。值得一試。 我希望將整個過程自動化,因爲我並不總是奢望在事先轉換這些對象。我真的只想要一個系統,可以上傳任何類型的文件,我的系統會渲染它。 – kerv