要获取Autodesk Forge Viewer中的片段位置,可以使用以下代码示例:
const viewerApp = new Autodesk.Viewing.ViewingApplication('viewerContainer');
viewerApp.registerViewer(viewerApp.k3D, Autodesk.Viewing.Private.GuiViewer3D);
viewerApp.loadDocument('urn:YOUR_URN', onDocumentLoadSuccess, onDocumentLoadFailure);
function onDocumentLoadSuccess(doc) {
const viewables = viewerApp.bubble.search({ type: 'geometry' });
if (viewables.length > 0) {
viewerApp.selectItem(viewables[0].data, onItemLoadSuccess);
}
}
function onDocumentLoadFailure(error) {
console.error('Failed to load document:', error);
}
function onItemLoadSuccess(viewer, item) {
console.log('Item loaded:', item);
}
viewer.addEventListener
方法监听选择模型的事件。viewer.addEventListener(Autodesk.Viewing.SELECTION_CHANGED_EVENT, onSelectionChanged);
function onSelectionChanged(event) {
const fragId = event.dbIdArray[0]; // 获取选择的片段ID
const model = viewer.model;
const fragProxy = model.getFragmentProxy(model, fragId); // 获取片段代理
fragProxy.getAnimTransform(); // 获取片段的位置
fragProxy.getAnimRotation(); // 获取片段的旋转
fragProxy.getAnimScale(); // 获取片段的缩放
const position = new THREE.Vector3();
fragProxy.getWorldPosition(position); // 获取片段的世界坐标
}
这些代码示例将帮助你获取Autodesk Forge Viewer中选择片段的位置。你还可以根据需要使用其他可用的方法来获取更多片段信息。