Autodesk forge 查看器GUI外部div中的ModelStructurePanel实例

Autodesk forge 查看器GUI外部div中的ModelStructurePanel实例,autodesk-forge,autodesk-viewer,Autodesk Forge,Autodesk Viewer,我正在从查看器开始构建一个带有模型查询功能的html页面。 我已经实现了一些方法,包括viewer.getProperties()和viewer.getBulkProperties()。在处理这些主题时,我意识到在查看器外部的元素(不在停靠面板中)中创建面板实例(模型结构、属性等)非常有用,可以维护功能,如果可能,还可以自定义它们(例如显示未折叠的元素)。 第一个问题:有可能这样做吗?第二个问题:关于此主题的一般方法或教程的建议?对于Q1,可以这样做,将ModelStructurePanel的容

我正在从查看器开始构建一个带有模型查询功能的html页面。 我已经实现了一些方法,包括viewer.getProperties()和viewer.getBulkProperties()。在处理这些主题时,我意识到在查看器外部的元素(不在停靠面板中)中创建面板实例(模型结构、属性等)非常有用,可以维护功能,如果可能,还可以自定义它们(例如显示未折叠的元素)。
第一个问题:有可能这样做吗?第二个问题:关于此主题的一般方法或教程的建议?

对于Q1,可以这样做,将ModelStructurePanel的容器附加到查看器容器外的div,但不建议这样做。将ModelStructurePanel从查看器容器中移出后,修复它的CSS需要付出额外的努力

对于第2季度,您可以利用来创建一个类似于3的UI,对于像本机ModelStructurePanel那样重建模型层次结构数据,下面是一个代码片段。您必须修改它以匹配jstree的数据需求

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的外观:

  • Autodesk.Viewing.SELECTION\u CHANGED\u EVENT:要使树节点被选中
  • Autodesk.Viewing.ISOLATE_事件:
  • Autodesk.Viewing.HIDE_事件:若要更改树节点的外观,请将树节点的文本颜色设置为灰色(如果此节点不可见)
  • Autodesk.Viewing.SHOW_事件:将选定三个节点的文本颜色从灰色更改为黑色
  • Autodesk.Viewing.ISOLATE_事件:隐藏_事件和显示_事件的组合
和绑定事件以隔离、调整以根据选定的三个节点查看查看器对象

  • 隔离:
  • 适合观看: