加载多个模型时在 Forge 查看器中获取选定的元素属性

Getting selected elements properties in forge viewer when more then one model loaded

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

我有一个寻找 "AGGREGATE_SELECTION_CHANGED_EVENT" 事件的插件

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

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

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

但观众看到的只是最后加载的模型,而不是所有模型。 我必须 load/switch 到其他型号吗?如果是这样的话。

根据我的经验,viewer.model 总是指向第一个加载的模型。如果你想访问其他加载的模型,你可以通过调用viewer.impl.modelQueue().getModels()来获取它们。之后,调用 Viewer properties APIs:

var allModels = viewer.impl.modelQueue().getModels();
var model = allModels[1];
model.getProperties( dbId, onSuccessCallback, onErrorCallback );

此外,您可以在 onSelectionBinded 回调的函数参数 event 中获取模型实例。所以,你的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 );
}

希望对您有所帮助!

我知道这有点晚了...

另一种获取多模型属性的方法是使用聚合方法。

var DBids = viewer.impl.selector.getAggregateSelection(); 

我有一个博客 post 和详细介绍的示例网站:

https://forge.autodesk.com/blog/highlighting-clashes-multi-model