我已根据此处提供的教程创建了一个onSelection更改方法:Selection Override
我已将此设置为多选也适用。
但是,当我尝试取消选择一个组选定的组件时,它没有触发onSelectionChange事件,因为我编码了它(如下所示)。该方法永远不会被触发。
但如果我注释掉这一行:
viewerApp.getCurrentViewer().select(idsToSelect);
然后,所选组件的切换工作完美。并触发onSelectionChnge事件。
有任何帮助吗?在选择改变后,是否有替代方法?可能在点击零件时?
代码如下所示:
viewerApp.getCurrentViewer().addEventListener(Autodesk.Viewing.SELECTION_CHANGED_EVENT, onSelectionChanged);
function onSelectionChanged(data) {
console.log("selection changed event. Selected dbIds are: " + data.dbIdArray.toString());
if (data.dbIdArray.length > 0 && data.fragIdsArray.length > 0) {
var idsToSelect = [];
var selectionChanged = false;
for (var k = 0; k < data.dbIdArray.length; k++) {
var dbId = data.dbIdArray[k];
if (leafNodes.indexOf(dbId) > -1) {
dbId = viewerApp.getCurrentViewer().model.getData().instanceTree.nodeAccess.getParentId(dbId);
selectionChanged = true;
}
idsToSelect.push(dbId);
}
if (selectionChanged) {
viewerApp.getCurrentViewer().select(idsToSelect);
}
}
}