Данные, отображаемые на панели браузера модели, на самом деле взяты из дерева экземпляров загруженной модели. Вот два способа получить дерево экземпляров:
//To get the instance tree
var it = viewer.model.getData().instanceTree;
//or
viewer.getObjectTree(function( instanceTree ) {
console.log( instanceTree );
});
После получения дерева экземпляров вам, возможно, придется использовать некоторые приемы для перестройки иерархии дерева, как показано ниже, поскольку Forge Viewer хранит связи экземпляров в уплощенной структуре данных.
// To rebuild node tree hierarchy
function buildModelTree( model ) {
//builds model tree recursively
function _buildModelTreeRec( node ) {
it.enumNodeChildren( node.dbId, function(childId) {
node.children = node.children || [];
var childNode = {
dbId: childId,
name: it.getNodeName( childId )
};
node.children.push( childNode );
_buildModelTreeRec( childNode );
});
}
//get model instance tree and root component
var it = model.getData().instanceTree;
var rootId = it.getRootId();
var rootNode = {
dbId: rootId,
name: it.getNodeName( rootId )
};
_buildModelTreeRec( rootNode );
return rootNode;
}
var root = buildModelTree( viewer.model );
Но выше приведена только часть данных. Если вы хотите отобразить их как дерево где-то, вы можете попробовать использовать библиотеки UI Tree, такие как jstree , чтобы сделать это.
Надеюсь, это поможет.