【问题标题】:Unable to retrieve frag IDs in autodesk forge viewer无法在 Autodesk forge 查看器中检索碎片 ID
【发布时间】:2018-08-16 19:48:41
【问题描述】:

我目前正在考虑尝试获得一个非常简单的解决方案作为概念证明,然后再进一步使用 forge。我已经阅读了基本应用程序快速入门指南和基本扩展指南以及它自己的查看器,它可以完美地与我使用 Autodesk pipe 3D 创建的文件(作为 dwg 文件和 dwfx 都试过)。

我要做的就是改变模型的颜色,我能找到的所有指南都使用类似的方法,但它们都要求您获取 FragID 列表以应用材料

 var it = viewer.model.getData().instanceTree;

 var allDbIds = Object.keys(it.nodeAccess.dbIdToIndex);
 for (var i=0; i<allDbIds.length; i++) {
     var dbid = allDbIds[i];
     var fragIds = []
     try {
       it.enumNodeFragments(dbid, function(fragId){
       fragIds.push(fragId)
     })
    }catch(error) {  
    console.error(error);
    }


 fragIds.forEach(function(fragId) {
    //code to actually change colour
 })

它设法使 dbid 正常并带回了许多,但是当它尝试获取 frag id 时它没有带回任何东西。它不会破坏它只会带回任何东西,但很难找到实际查看的原因或从哪里开始

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    首先要在for 循环之外定义fragIds 数组,因此它不会在每次迭代时被覆盖。

    您可以使用以下代码将特定材质设置为 fragId:

    fragIds.forEach((fragId) => {
    
      model.getFragmentList().setMaterial(
        fragId, material)
    })
    

    查看此主题以了解有关该主题的更多信息:

    Forge Viewer THREE.MeshLambertMaterial

    【讨论】:

      猜你喜欢
      • 2020-10-23
      • 2020-09-06
      • 2021-11-12
      • 1970-01-01
      • 2021-09-19
      • 2018-10-28
      • 2017-01-07
      • 2021-02-06
      • 2019-12-29
      相关资源
      最近更新 更多