2017-01-09 37 views
0

我用viewer.getObjectTree = function(onSuccessCallback, onErrorCallback)得到模型對象樹,然後遍歷從根節點到所有葉節點。這裏是代碼:如何獲得2D的模型對象繪製樹

viewer.getObjectTree(function (objTree) { 
    objTree.enumNodeChildren(
     objTree.getRootId(), 
     function (dbId) { 
      // Work with dbId 
     }, 
     true 
    ); 
}; 

但是,它只適用於3D模型。 2D模型不會跳入回調事件。我如何獲得2D佈局/繪圖的所有對象ID?

+0

我只是在我們的樣本的Revit文件驗證獲得的dbid的列表,並在瀏覽器2.11使用二維模型,它工作正常。 對於你的問題,通常,原因是當你試圖獲取它時,實例樹沒有被初始化。所以你需要確保實例樹已經建立。你檢查這個帖子http://stackoverflow.com/questions/38904993/how-to-retrieve-forge-viewer-objecttree/38909765#38909765萬一它是相同的問題? –

+0

我在'Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT'中放置'viewer.getObjectTree',但它不適用於2D繪圖,只適用於3D模型。你可以分享你的完整代碼嗎? –

+0

您是否嘗試在Autodesk.Viewing.GEOMETRY_LOADED_EVENT中執行此操作?我實際上是在這個事件裏面做的。 –

回答

0

我找到了原因。二維佈局/繪圖沒有模型對象樹(只是圖層)。它使用與3D模型不同的數據結構。 3D使用實例樹來獲取所有節點,但2D使用一串DbIds。

要瀏覽的對象在三維模型中,使用viewer.getObjectTreeviewer.model.getData().instanceTree

要在2D佈局瀏覽對象,請使用viewer.model.getData()。我可以從viewer.model.getData().stringDbIds

+0

'viewer.model.getData()。stringDbIds'不返回2D繪圖中使用的正確的DbIds。 –

+0

你的種子文件的格式是什麼?這是一個DWG文件嗎? –

+0

我的種子文件是2D DWF。 DWG將是相同的。 –

相關問題