【发布时间】:2021-09-10 22:27:44
【问题描述】:
如果您拥有最新的查看器版本 (7.46),则此问题中的所有内容都适用于仅使用控制台,因此如果您想自己尝试,只需复制并粘贴到控制台
问题来了,我想在不同的时间插入精灵,视觉上接下来的代码可以正常工作
this.dataVizExtn = await viewer.loadExtension("Autodesk.DataVisualization");
this.DataVizCore = Autodesk.DataVisualization.Core;
this.style = new this.DataVizCore.ViewableStyle(this.DataVizCore.ViewableType.SPRITE, new THREE.Color(0xffffff), 'https://avatars.githubusercontent.com/u/16883010');
this.viewableData = new this.DataVizCore.ViewableData();
this.viewableData.spriteSize = 20; // Size in px
this.worldPoint = {x:Math.floor(Math.random() * 10),y:Math.floor(Math.random() * 10),z:Math.floor(Math.random() * 10)};
this.viewable = new this.DataVizCore.SpriteViewable(this.worldPoint, style, Math.floor(Math.random() * 1000000));
this.viewableData.addViewable(viewable);
await this.viewableData.finish();
this.dataVizExtn.addViewables(this.viewableData);
问题是当我使用方法on the documentation检索精灵的信息时,我只得到最后添加的精灵的信息
console.log(viewableData.viewables)
我知道这是为什么,是因为我每次添加新精灵时都会重新创建 viewableData 变量。
但是进行更改,所以我只在控制台中声明一次
this.dataVizExtn = await viewer.loadExtension("Autodesk.DataVisualization");
this.DataVizCore = Autodesk.DataVisualization.Core;
this.viewableData = new this.DataVizCore.ViewableData();
然后多次执行新的更新代码而不再次声明viewableData
this.style = new this.DataVizCore.ViewableStyle(this.DataVizCore.ViewableType.SPRITE, new THREE.Color(0xffffff), 'https://avatars.githubusercontent.com/u/16883010');
this.viewableData.spriteSize = 20; // Size in px
this.worldPoint = {x:Math.floor(Math.random() * 10),y:Math.floor(Math.random() * 10),z:Math.floor(Math.random() * 10)};
this.viewable = new this.DataVizCore.SpriteViewable(this.worldPoint, style, Math.floor(Math.random() * 1000000));
this.viewableData.addViewable(viewable);
await this.viewableData.finish();
this.dataVizExtn.addViewables(this.viewableData);
将使console.log(viewableData.viewables)返回所有插入的精灵,但它只会在查看器中绘制第一个
我不确定这是否是一个错误,因为数据可视化扩展是在不到 2 个月前发布的,或者我做错了什么
编辑:我做了一些似乎可以解决问题的事情,可能有更好的解决方案,但现在这似乎对我有用
let oldViewableData = this.viewableData;
this.viewableData = new this.DataVizCore.ViewableData();
if(oldViewableData){
this.dataVizExtn.removeAllViewables()
for (let value of oldViewableData.viewables) {
this.viewableData.addViewable(value);
}
}
现在让我们将新的精灵添加到已经存在的精灵中,现在看起来它工作正常
【问题讨论】:
标签: autodesk-forge autodesk-viewer