加载多个模型时,在forge查看器中获取所选元素属性

时间:2018-05-16 12:30:59

标签: autodesk-forge

我有一个加载了8个模型的查看器应用程序

我有一个插件正在寻找"AGGREGATE_SELECTION_CHANGED_EVENT"事件

this.viewer.addEventListener(Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT, this.onSelectionBinded);

我需要能够访问所选元素属性

this.viewer.getProperties(_dbId, (result) => { })

但它接缝的观察者只看最后加载的模型而不是所有的模型。 我必须load/switch到其他模特吗?如果是这样的话。

2 个答案:

答案 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 enter image description here