Я загружаю дополнительную модель, используя Viewer3D.loadDocumentNode (API v7), используя приведенный ниже код, который прекрасно работает. Однако у меня есть две проблемы:
Autodesk.Viewing.Document.load(`urn:${myURN}`, (doc) => {
var viewables = doc.getRoot().getDefaultGeometry();
viewer.loadDocumentNode(doc, viewables,{
placementTransform: (new THREE.Matrix4()).setPosition({x:0,y:0,z:0}),
keepCurrentModels: true,
globalOffset: {x:0,y:0,z:0}
})
.then( onLoadFinished );
});
1-й выпуск : мое расширение, которое ожидает SELECTION_CHANGED_EVENT, больше не запускается после загрузки агрегированной модели.
load() {
this.onSelectionBinded = this.onSelectionEvent.bind(this);
this.viewer.addEventListener(Autodesk.Viewing.SELECTION_CHANGED_EVENT, this.onSelectionBinded);
console.log('ReactToEvents has been loaded');
return true;
}
пример взят из https://forge.autodesk.com/en/docs/viewer/v7/developers_guide/viewer_basics/events/
2-й выпуск : другое расширение, которое анализирует выбранные элементы, не учитывает выбранные элементы в агрегированной модели (количество выборок = 0)
onToolbarCreated() {
// Create a new toolbar group if it doesn't exist
this._group = this.viewer.toolbar.getControl('allMyAwesomeExtensionsToolbar');
if (!this._group) {
this._group = new Autodesk.Viewing.UI.ControlGroup('allMyAwesomeExtensionsToolbar');
this.viewer.toolbar.addControl(this._group);
}
// Add a new button to the toolbar group
this._button = new Autodesk.Viewing.UI.Button('handleSelectionExtensionButton');
this._button.onClick = (ev) => {
// Get current selection
const selection = this.viewer.getSelection();
this.viewer.clearSelection();
// Anything selected?
console.log("Clicked handleSelectionExtensionButton: ", selection.length);
if (selection.length > 0) { ... }
}
}
Почему-то this.viewer.getSelection()
; игнорирует то, что исходит от loadDocumentNode()
.
Я пытался выгрузить / перегрузить расширения, но он все равно не будет работать.
Любая помощь очень ценится!