【问题标题】:Caculate all volume of objects in viewer- Autodesk Forge在查看器中计算所有对象的体积 - Autodesk Forge
【发布时间】:2021-05-09 11:58:54
【问题描述】:

我想计算查看器中所有对象的体积,但这会返回 arrayVolume = [] 和 vol = 0。我哪里出错了?

    $("#kl").click(function(){
viewer.model.getExternalIdMapping(data => kl(data));
function kl(data){
    var arrayVolume = [];
    var vol;
    for(var key in data){
        var dbId = data[key];
        viewer.getProperties(dbId, function(e){
            //console.log('Entire object response ',e);
            //console.log('Properties ',e.properties);
            var propertiesObj = e.properties;
            propertiesObj.forEach(obj => {
                if(obj.displayName === "Volume"){
                    var volume = obj.displayValue;
                    arrayVolume.push(volume);
                }
            });
        });
    }
    vol= arrayVolume.reduce(function(a,b){return a+ b;},0)
    alert('w: '+arrayVolume);
    alert('w: '+vol);
}

【问题讨论】:

    标签: autodesk-forge forge


    【解决方案1】:

    注意同步代码和异步代码。 viewer.getProperties 方法是异步的,这意味着您提供的回调可能会在稍后被调用。在您的代码 sn-p 中,两个alert 调用很可能在之前被调用,arrayVolumevol 属性被您的回调函数填充。

    另外,请注意,当您需要从多个 dbID 检索属性时,有一种更好的方法:https://forge.autodesk.com/en/docs/viewer/v7/reference/Viewing/Model/#getbulkproperties-dbids-options-onsuccesscallback-onerrorcallback

    【讨论】:

      猜你喜欢
      • 2020-10-20
      • 2021-11-12
      • 1970-01-01
      • 2023-03-06
      • 2018-03-16
      • 2017-12-15
      • 2021-09-19
      • 2021-02-24
      • 2020-10-27
      相关资源
      最近更新 更多