#autodesk-forge
#autodesk-forge
Вопрос:
Наши элементы имеют цветовую маркировку, поэтому, когда пользователь выбирает один из них, мы просто хотим изолировать его в представлениях (что работает должным образом), но мы не хотим, чтобы он менял цвет выделения — где мы можем это контролировать?
Ответ №1:
Используйте событие выбора, чтобы определить, какой объект был выбран, отменить выбор и изолировать выбранный идентификатор базы данных, это то поведение, которое вы ищете?
AutodeskNamespace(«Autodesk.ADN.Viewing.Расширение»);
Autodesk.ADN.Viewing.Extension.Basic = function (viewer, options) {
Autodesk.Viewing.Extension.call(this, viewer, options);
var _this = this;
_this.load = function () {
console.log('LOAD')
viewer.addEventListener(
Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT, function(e) {
//console.log(e)
if(e.selections.length) {
var dbId = e.selections[0].dbIdArray[0]
viewer.select([])
viewer.isolate(dbId)
}
})
return true;
};
_this.unload = function () {
Autodesk.Viewing.theExtensionManager.unregisterExtension(
"Autodesk.ADN.Viewing.Extension.Basic");
return true;
};
};
Autodesk.ADN.Viewing.Extension.Basic.prototype =
Object.create(Autodesk.Viewing.Extension.prototype);
Autodesk.ADN.Viewing.Extension.Basic.prototype.constructor =
Autodesk.ADN.Viewing.Extension.Basic;
Autodesk.Viewing.theExtensionManager.registerExtension(
"Autodesk.ADN.Viewing.Extension.Basic",
Autodesk.ADN.Viewing.Extension.Basic);
Ответ №2:
Если вы хотите сохранить выделение, а не просто сделать его синим в пользовательском интерфейсе, вы можете изменить непрозрачность материала выделения на прозрачное:
viewer.impl.selectionMaterialBase.opacity = 0;
viewer.impl.selectionMaterialTop.opacity = 0;
Теперь, когда вы нажимаете на объект, он не становится синим.
Комментарии:
1. Да — все еще хотите, чтобы он был с той же непрозрачностью, которая была у него раньше: просто не меняя цвет. Идея в том, что мы изолируем его в представлении (т. Е. Сделаем другие объекты полупрозрачными
2. Когда вы выбираете объект, сверху добавляется дополнительный слой выделенного цвета с непрозрачностью, которую изменяет приведенный выше код. Итак, этот код просто удаляет цвет выделения сверху. Если цвет выделения был таким же, как и у самого объекта, я не думаю, что это повлияло бы на внешний вид выбранного объекта — так что не уверен, что вы имеете в виду, желая сохранить точно такую же непрозрачность. Приведенный выше код Филиппа показывает, как выполнить изоляцию выбранного объекта, чтобы невыбранные объекты отошли на задний план. Разве этого недостаточно?
3. Моя ошибка — похоже, он отлично справится с задачей. Спасибо. Я попрошу своих программистов попробовать.