加载多个模型并隐藏节点

时间:2016-11-17 12:20:00

标签: autodesk-forge autodesk-viewer

我想在加载模型后加载两个模型并直接隐藏一些节点。

我将事件侦听器添加到GEOMETRY_LOADED_EVENT和OBJECT_TREE_CREATED_EVENT以查看加载何时完成。因为加载是异步完成的,所以最后可以加载其中一个模型。

所以我设置了我想隐藏节点的模型。然后隐藏我想要隐藏的节点。

viewer.modelstructure.setModel(instanceTree);

这在某些时候有效,但它似乎并不常用。还有其他一些我应该听的事件,以便知道装载完成了吗?或者是否有某种方法或事件来确保setModel(instanceTree)已完成?

1 个答案:

答案 0 :(得分:1)

您是否有关于识别哪些事件被触发的模型的问题?

在最新版本的查看器API中, viewer.loadModel 会接受一个返回正在加载的模型实例的回调,这应该会让您知道之前的模型其他事件被解雇了:

Viewer3D.prototype.loadModel = function(url, options, onSuccessCallback, onErrorCallback, onWorkerStart) {

 // ...

 function onSuccess(model) {
  self.model = model;
  self.impl.addModel(self.model);

  if (self.loadSpinner)
    self.loadSpinner.style.display = "None";

  if (self.model.is2d())
    self.activateLayerState("Initial");

  registerDimensionSpecificHotkeys();

  if (onSuccessCallback) {
    onSuccessCallback(self.model);
  }
 }

 // ...
}

在事件处理程序中,参数还包含触发事件的模型实例:

this.viewer.addEventListener(
  Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT, (args) => {
    console.log(args)
  })

this.viewer.addEventListener(
  Autodesk.Viewing.GEOMETRY_LOADED_EVENT, (args) => {
    console.log(args)
  })

enter image description here

如果我遗漏了某些内容,请告诉我,如果它不起作用,请提供一些说明您的工作流程的代码。

由于