我有一个加载了8个模型的查看器应用程序
我有一个插件正在寻找"AGGREGATE_SELECTION_CHANGED_EVENT"
事件
this.viewer.addEventListener(Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT, this.onSelectionBinded);
我需要能够访问所选元素属性
this.viewer.getProperties(_dbId, (result) => { })
但它接缝的观察者只看最后加载的模型而不是所有的模型。
我必须load/switch
到其他模特吗?如果是这样的话。
答案 0 :(得分:0)
根据我的经验,viewer.model
始终指向第一个加载的模型。如果要访问其他已加载的模型,可以通过调用viewer.impl.modelQueue().getModels()
来获取它们。然后,以这种方式调用Viewer属性API:
var allModels = viewer.impl.modelQueue().getModels();
var model = allModels[1];
model.getProperties( dbId, onSuccessCallback, onErrorCallback );
此外,您可以在event
回调的函数参数onSelectionBinded
中获取模型实例。因此,您的onSelectionBinded
可以根据上述逻辑修改为:
this.onSelectionBinded = function( event ) {
var selSet = event.selections;
var firstSel = selSet[0];
var model = firstSel.model;
var dbIds = firstSel.dbIdArray;
var firstDbId = dbIds[0];
model.getProperties( firstDbId, onSuccessCallback, onErrorCallback );
}
希望它有所帮助!
答案 1 :(得分:0)
我知道这有点晚了...
获取多模型属性的另一种方法是使用聚合方法。
var DBids = viewer.impl.selector.getAggregateSelection();
我有一篇博客文章和示例网站,都提供了详细信息:
https://forge.autodesk.com/blog/highlighting-clashes-multi-model