模型聚合:扩展(选择)在 loadDocumentNode 后不起作用
Model Aggregation : Extensions (Selection) not working after loadDocumentNode
我正在使用下面的代码使用 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()
.
的内容
我尝试了 unloading/re-loading 扩展程序,但仍然无法正常工作。
非常感谢任何帮助!
后来添加了对加载多个模型的支持,为了防止破坏向后兼容性,开发人员添加了新的 API 和事件名称,应该在多模型场景中使用。查找其中包含 "aggregate" 单词的方法和事件,例如 getAggregateSelection、Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT
或 Autodesk.Viewing.AGGREGATE_FIT_TO_VIEW_EVENT
.
我正在使用下面的代码使用 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()
.
我尝试了 unloading/re-loading 扩展程序,但仍然无法正常工作。
非常感谢任何帮助!
后来添加了对加载多个模型的支持,为了防止破坏向后兼容性,开发人员添加了新的 API 和事件名称,应该在多模型场景中使用。查找其中包含 "aggregate" 单词的方法和事件,例如 getAggregateSelection、Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT
或 Autodesk.Viewing.AGGREGATE_FIT_TO_VIEW_EVENT
.