加载多个模型并隐藏节点
Loading multiple models and hiding nodes
我想加载两个模型并在模型加载后直接隐藏一些节点。
我将事件侦听器添加到 GEOMETRY_LOADED_EVENT 和 OBJECT_TREE_CREATED_EVENT 以查看加载何时完成。由于加载是异步完成的,因此可以最后加载其中一个模型。
所以我设置了我想隐藏节点的模型。然后隐藏我想隐藏的节点。
viewer.modelstructure.setModel(instanceTree);
这在某些时候有效,但似乎并非一直有效。为了知道加载完成,我应该听一些其他事件吗?或者有什么方法或事件可以确保 setModel(instanceTree) 已经完成?
您的问题是关于识别触发事件的模型吗?
在最新版本的查看器 API 中,viewer.loadModel 接受 returns 正在加载的模型实例,这应该让你在这两个其他事件被触发之前知道模型:
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)
})
如果我遗漏了什么,请告诉我,如果它不起作用,请提供一些代码来说明您的工作流程。
谢谢
我想加载两个模型并在模型加载后直接隐藏一些节点。
我将事件侦听器添加到 GEOMETRY_LOADED_EVENT 和 OBJECT_TREE_CREATED_EVENT 以查看加载何时完成。由于加载是异步完成的,因此可以最后加载其中一个模型。
所以我设置了我想隐藏节点的模型。然后隐藏我想隐藏的节点。
viewer.modelstructure.setModel(instanceTree);
这在某些时候有效,但似乎并非一直有效。为了知道加载完成,我应该听一些其他事件吗?或者有什么方法或事件可以确保 setModel(instanceTree) 已经完成?
您的问题是关于识别触发事件的模型吗?
在最新版本的查看器 API 中,viewer.loadModel 接受 returns 正在加载的模型实例,这应该让你在这两个其他事件被触发之前知道模型:
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)
})
如果我遗漏了什么,请告诉我,如果它不起作用,请提供一些代码来说明您的工作流程。
谢谢