2017-08-07 2 views
0

Ich brauche alle DB-IDs aus dem Autodesk-Modell. Ich habe den Code von https://forge.autodesk.com/cloud_and_mobile/2015/12/select-all-elements-in-the-viewer-with-view-and-data-api-with-javascript.htmlSo erhalten Sie alle DB-IDs in Autodesk Forge

verwiesen Ich habe es auch in meiner eigenen Erweiterung versucht und der Code ist wie folgt.

AutodeskNamespace("Autodesk.ADN.Viewing.Extension"); 
 
Autodesk.ADN.Viewing.Extension.Color = function(viewer, options) { 
 

 
    Autodesk.Viewing.Extension.call(this, viewer, options); 
 
    var _self = this; 
 

 
    var _viewer = viewer; 
 
    var instanceTree = viewer.model.getData().instanceTree; 
 

 
    var rootId = this.rootId = instanceTree.getRootId(); 
 
    _self.load = function() { 
 
    getgetAlldbIds(rootId); 
 
    }; 
 

 
    function getAlldbIds(rootId) { 
 
    var alldbId = []; 
 
    if (!rootId) { 
 
     return alldbId; 
 
    } 
 
    var queue = []; 
 
    queue.push(rootId); 
 
    while (queue.length > 0) { 
 
     var node = queue.shift(); 
 
     alldbId.push(node); 
 
     instanceTree.enumNodeChildren(node, function(childrenIds) { 
 
     queue.push(childrenIds); 
 
     }); 
 
    } 
 
    console.log(alldbId); 
 
    } 
 
};

Aber ich einen Fehler in Developer Tools wie cannot read property 'getData' of null bekommen, wo denken Sie, ich falsch gehe. Danke im Voraus.

Antwort

1

Das Problem muss sein, dass das Modell nicht vollständig geladen ist, daher sollten Sie auf dieses Ereignis warten (Autodesk.Viewing.GEOMETRY_LOADED_EVENT). Es könnte besser sein für den Objektbaum erstellt Ereignis zu warten und (Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT) - siehe die Diskussion hier: How to Retrieve Forge Viewer objectTree?

By the way, es ist ein einfacher Weg, jetzt zu bekommen alle Dbids: Get all database id's in the model

+0

Es funktioniert gut @Adam Nagy danke. –

Verwandte Themen