2017-08-28 3 views
0

Je reçois cette erreur: Uncaught TypeError:> Impossible de lire la propriété 'getRootId' de non défini, même si j'utilise Autodesk.Viewing.GEOMETRY_LOADED_EVENT..pas encore d'effet.Impossible d'extraire instanceTree autodesk

+0

Quelle version de le spectateur utilisez-vous? Il est recommandé d'utiliser v2.16 ci-dessus, le service de visualisation (View and Data API) est maintenant expiré. Voir là pour plus de détails, https://forge.autodesk.com/blog/viewer-giving-error-403-unauthorized –

Répondre

0

Vous avez juste besoin d'attendre Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT à feu lorsque vous souhaitez accéder à la instanceTree:

viewer.addEventListener(Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT, function() { 

    var instanceTree = model.getData().instanceTree //cool 
}) 
+0

Merci celui-ci fonctionne également parfaitement. –

0

Vous ne devriez pas utiliser la structure de données instanceTree, mais les fonctions/opérations qui sont supportées. Si votre besoin est d'énumérer les nœuds feuilles, essayez quelque chose de similaire comme described here:

function getAllLeafComponents(viewer, callback) { 
    var cbCount = 0; // count pending callbacks 
    var components = []; // store the results 
    var tree; // the instance tree 

    function getLeafComponentsRec(parent) { 
     cbCount++; 
     if (tree.getChildCount(parent) != 0) { 
      tree.enumNodeChildren(parent, function (children) { 
       getLeafComponentsRec(children); 
      }, false); 
     } else { 
      components.push(parent); 
     } 
     if (--cbCount == 0) callback(components); 
    } 
    viewer.getObjectTree(function (objectTree) { 
     tree = objectTree; 
     var allLeafComponents = getLeafComponentsRec(tree.getRootId()); 
    }); 
} 
+0

Je l'ai résolu par simple hack: –

+0

'fonction waitForElement() { if (instanceTree.getRootId ()! == "undefined") {...} else { setTimeout (waitForElement, 250); } }; ' –

+0

ou' Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT'? –