【问题标题】:Loading multiple models and hiding nodes加载多个模型并隐藏节点
【发布时间】:2017-03-31 23:38:41
【问题描述】:

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

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

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

viewer.modelstructure.setModel(instanceTree);

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

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案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)
      })
    

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

    谢谢

    【讨论】:

      猜你喜欢
      • 2021-01-13
      • 1970-01-01
      • 2019-07-03
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      相关资源
      最近更新 更多