Получение свойств выбранных элементов в программе просмотра Forge, когда загружено более одной модели - PullRequest
0 голосов
/ 16 мая 2018

У меня есть приложение для просмотра с 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 голосов
/ 09 октября 2018

Я знаю, что немного поздно ...

Еще один способ получить свойства для нескольких моделей - использовать агрегированный метод.

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

У меня есть запись в блоге и пример веб-сайта, в котором подробно рассматриваются:

https://forge.autodesk.com/blog/highlighting-clashes-multi-model enter image description here

0 голосов
/ 16 мая 2018

viewer.model всегда указывает на первую загруженную модель с моим опытом. Если вы хотите получить доступ к другим загруженным моделям, вы можете получить их, позвонив по номеру viewer.impl.modelQueue().getModels(). После этого вызовите API свойств Viewer следующим образом:

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 );
}

Надеюсь, это поможет!

...