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
Répondre
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
})
Merci celui-ci fonctionne également parfaitement. –
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());
});
}
Je l'ai résolu par simple hack: –
'fonction waitForElement() { if (instanceTree.getRootId ()! == "undefined") {...} else { setTimeout (waitForElement, 250); } }; ' –
ou' Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT'? –
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 –