0

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

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

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

viewer.modelstructure.setModel(instanceTree);

这在某些时候有效,但似乎并非一直有效。为了知道加载完成,我应该听其他一些事件吗?或者有什么方法或事件可以确保 setModel(instanceTree) 已经完成?

4

1 回答 1

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)
  })

在此处输入图像描述

让我知道我是否遗漏了什么,如果它不起作用,请提供一些代码来说明您的工作流程。

谢谢

于 2016-11-22T15:58:49.033 回答