Forge的 Model Derivative 模型數據提取和格式轉換可以操作行業內幾乎所有設計模型格式,包括Autodesk 工程建設行業的設計格式:Revit。Revit設計文件中,一般會包含三維視圖,二維圖紙,二維視圖,導入圖紙,鏈接模型或圖紙等內容。Forge服務都是可以提取轉換的。
本文整理幾點相關事宜:
- Forge轉換服務可以轉換在Revit發佈設置中的設置好的圖紙或視圖。通常以選擇集(Set)方式選擇上。
- 默認Forge服務會尋找名為{3D}的視圖,如果沒有,則會自動創建一個。因此當Revit模型中默認的{3D}視圖被更名(例如中文名)或刪掉了,在發佈設置也要選上,否則Forge轉換後,可能誤認為默認加載的是自己調整後的視圖。
- 轉換後,所有視圖都是這個模型的轉換數據,通過端口API GET Manifest (modelderivative/v2/designdata/:urn),可以看到有多少轉換數據,一個節點(derivative)對應一個三維模型或二維圖紙/視圖。Forge還會處理階段模型視圖,也將是一個derivative。
- 在Forge Viewer中加載模型,若不做特別設置,默認是加載那個{3D}的視圖。而要切換到某個其它視圖圖紙,則需要在加載選項中設置 viewerable id,見上圖中的viewerableId。代碼樣例默認是加載缺省的{3D}視圖,所以直接拿取的是根節點的數據,無需指定viewerableId。
function onDocumentLoadSuccess(doc) {
// if a viewableId was specified, load that view, otherwise the default view
var viewables = (viewableId ? doc.getRoot().findByGuid(viewableId) : doc.getRoot().getDefaultGeometry());
viewer.loadDocumentNode(doc, viewables, { ids: global_queryBuilder.ids }).then(i => {
});
- 如果不做任何開發調整,可以利用Viewer自帶的擴展Autodesk.DocumentBrowser,加載此擴展後,在工具條打開的對話框裏,會列出所有轉換的三維模型和二維圖紙/視圖,點擊就可靈活切換加載。這個對話框也包括階段模型視圖,都集中在此Guid(08f99ae5-b8be-4f8d-881b-128675723c10)的節點下。Guid是Forge管理階段模型視圖 特有id,任何Revit模型都一樣。
- 階段模型視圖 在Revit中是沒有的,只有階段設置(Phase)。啓動轉換Forge轉換必須設置generateMasterViews = true, 才會做階段模型視圖組織工作。否則將沒有階段模型視圖
{
"input": {
"urn": "{{urnBase64}}"
},
"output": {
"destination": {
"region": "us"
},
"formats": [
{
"type": "svf",
"views": [
"2d",
"3d"
],"advanced":{
"generateMasterViews":true
}
}
]
}
}
- 導入圖紙(例如DWG)是和Revit模型原身一體,只需遵循常規轉換要求即可。目前二維的DWG合併進來,某些圖元顯示會有點問題,開發部已知曉,正在研究改進中
- 鏈接模型是屬於額外的數據內容,若只轉換主Revit模型,這些鏈接模型是不被轉換的,Get Manifest會告知 xxx 文件缺失.. 若需要鏈接模型內容,幾個方式:
8.1) 整體打包主Revit模型和鏈接模型為zip,發送zip給Forge服務轉換,並設置轉換選項
{
"input": {
"urn": "{{urnBase64}}",
"compressedUrn":true,
"rootFilename":"main.rvt"
},
"output": {
"destination": {
"region": "us"
},
"formats": [
{
"type": "svf",
"views":["2d", "3d"]
}
]
}
}
8.2)分別轉換主Revit模型和鏈接模型,然後通過模型聚合方式在Viewer中合併。參考模型聚合的專題課程
8.3) BIM 360或ACC中,主Revit模型和鏈接模型分別上載,也分別轉換好,則只需要POST Xref的模式鏈接即可。這篇博客有詳細講述。
- 無論是二維圖紙還是三維模型,甚至三維模型和二維圖紙都是可以做聚合工作。可以自行用常規方式依次加載合併,在模型聚合的專題課程有講述,但推薦使用Viewer的AggregateView類,或直接使用Viewer自帶的擴展Autodesk.AEC.Hypermodeling(底層機制也是用到了AggregateView類)。