有没有办法只使用模型浏览器功能的无头查看器?

时间:2018-04-30 13:39:43

标签: autodesk-forge autodesk-viewer

有没有办法只使用模型浏览器功能的无头查看器 我在角度5中使用并遵循Headless Viewer的使用

<script src="https://developer.api.autodesk.com/modelderivative/v2/viewers/viewer3D.js?v=v4.1.*"></script>

我使用缩放/平移/全屏/旋转功能来使用setActiveNavigationTool选择但没有获得任何关于模型浏览器事件代码的解决方案..

有没有想法在javascript中获取模型浏览器代码而不是自己的面板用法。

由于

1 个答案:

答案 0 :(得分:0)

模型浏览器面板上显示的数据实际上来自加载模型的实例树。以下是获取实例树的两种方法:

//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 );

但以上只是数据部分。如果你想在某个地方像树一样显示它们,你可以尝试使用诸如jstree之类的树UI库来完成它。

希望它有所帮助。