setThemingColor 仅适用于叶节点 dbId

2023-12-23

从文档看来,您应该能够使用任何 dbId 调用 setThemingColor,但它似乎只有在您传递的 id 是叶节点时才有效?它是否正确?

还有什么方法可以批量调用此方法,或者一次只能调用一个叶节点?我想将 dbId 数组传递到该方法中。


是的,根据我的经验,它只适用于叶节点。但是,可以通过以下方式检索父节点的叶节点:

function getLeafNodes( model, dbIds ) {

      return new Promise( ( resolve, reject ) => {

        try {

          const instanceTree = model.getData().instanceTree

          dbIds = dbIds || instanceTree.getRootId();

          const dbIdArray = Array.isArray( dbIds ) ? dbIds : [dbIds]
          let leafIds = [];

          const getLeafNodesRec = ( id ) => {
            let childCount = 0;

            instanceTree.enumNodeChildren( id, ( childId ) => {
                getLeafNodesRec( childId );

                ++childCount;
              })

            if( childCount == 0 ) {
              leafIds.push( id );
            }
          }

          for( let i = 0; i < dbIdArray.length; ++i ) {
            getLeafNodesRec( dbIdArray[i] );
          }

          return resolve( leafIds );

        } catch (ex) {

          return reject(ex)
        }
    })
}

getLeafNodes( viewer.model, [1] )
    .then( ( leafNodes ) => {
      // All leaf dbIds under the dbId 1.
      console.log( leafNodes );
    })
    .catch( ( error ) => console.warn( error ) );

检索到所有叶子 dbId 后,您可以简单地编写一个 for 循环来调用setThemingColor对于每个 dbId,如下所示:

const color = new THREE.Vector4( 255/255, 0, 0, 1 );

getLeafNodes( viewer.model, [1] )
    .then( ( leafNodes ) => {

      // Call setThemingColor for every leaf node.
      for( let i = 0; i < leafNodes.length; i++ ) {
          viewer.setThemingColor( leafNodes[i], color );
      }

    })
    .catch( ( error ) => console.warn( error ) );

希望这有帮助。

函数的参考getLeafNodes: https://forge.autodesk.com/blog/hidding-completely-viewer-nodes-no-ghosting https://forge.autodesk.com/blog/hidding-completely-viewer-nodes-no-ghosting

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

setThemingColor 仅适用于叶节点 dbId 的相关文章

  • 更改 Forge 中的材料

    目前 我们正在让客户端在页面加载时检索对象状态 这将导致模型中的 待处理 对象变成不同的颜色 然后我们轮询更改以更新着色 首先 当查看器加载时 挂起的对象会着色 然后我们继续轮询以再次检查和更改状态 以使 Forge 以不同的颜色渲染它们并
  • 使用 Autodesk A360 中的 URN 创建查看器应用程序

    我创建了一个查看器应用程序 它使用两条腿身份验证并显示已上传到我自己的存储桶的项目 现在 我希望能够查看已上传到 Autodesk A360 的项目 而不是查看自己存储桶中的项目 为此 我已完成以下步骤 实现了三足认证 项目中的A360账号
  • 如何在 Forge Viewer 中使用properties.db?

    sqlite数据库文件properties db通常是输出中最大的文件https extract autodesk io 它在 Forge Viewer 中有何用途 如果未使用 为什么会在 ZIP 文件中提供它 此示例复制两者的原因是该示例
  • 使用三个 CSG 进行 3D 布尔运算

    按照此处的示例 http learning Threejs com blog 2011 12 10 constructive solid geometry with csg js 并使用 Three js 与https github com
  • 模型衍生 API 响应未通过 Jackson 映射

    是否对模型派生 API 的响应对象进行了更新 因为我们在将 3D 模型请求的响应映射回清单和元数据对象时遇到问题 两人都抛出了杰克逊的错误 GetManifest 返回未处理的角色枚举 GetMetadataForGuid 抛出 非法字符
  • 尝试在 Autodesk Forge / Bim360 中显示房间信息

    Okay so I m trying to show room information and geometry from a Revit project on Forge I ve made the call to https devel
  • 如何获取bucket文件的urn

    请告诉我如何获取桶文件的瓮 您可以获取上传到存储桶时响应中包含的 urn 但我想获取已上传到存储桶的文件的 urn 有什么办法吗 您可以使用GET buckets bucketKey objects端点以获取存储桶中所有文件的列表 在响应中
  • setThemingColor 仅适用于叶节点 dbId

    从文档看来 您应该能够使用任何 dbId 调用 setThemingColor 但它似乎只有在您传递的 id 是叶节点时才有效 它是否正确 还有什么方法可以批量调用此方法 或者一次只能调用一个叶节点 我想将 dbId 数组传递到该方法中 是
  • Autodesk Forge Data Manager Api 重命名项目

    我尝试使用这个补丁Api https www versti eu TranslateProxy https developer autodesk com en docs data v2 reference http projects pro
  • 如何用FitToView控制页面和组件之间的距离?

    使用FitToView后 页面和组件之间的距离太近 有什么好的方法可以控制这个距离吗 在此输入图像描述 https i stack imgur com 7yxqV png 您可以获取对象 组件 的边界框 并用该框放大 缩小以形成适当的框并调
  • 使用 Python 请求将文件数据放入 Autodesk API

    我正在按照描述的过程进行操作here https developer autodesk com en docs data v2 tutorials upload file 但被一个人拦住了403在第 4 步 我有一个令牌data write
  • 如何调整对象大小 - Autodesk Forge Viewer

    我怎样才能改变对象的大小 我需要改变物体的高度 例如 我们需要更改门或窗帘的高度 在此代码中我的对象消失了 let change function const viewer oViewer const model viewer model
  • 如何通过 AutoCAD Plot API 在 Forge 设计自动化中使用用户定义的字体

    我们使用 Forge Plot API 将 DWG 绘制为 PDF JPG 一位客户提出了使用名为 ROBBI TTF 的特殊 TTF 字体的 DWG 我想这个字体必须上传到 Forge 服务器才能使用 是否可以上传字体一次 以便它可以用于
  • 使用 Autodesk Forge API 检索“描述”或“自定义属性”字段

    我们正在尝试使用 Autodesk Forge API 请求 命令检索 BIM360 文档中所示的描述或自定义属性字段 我们尝试了以下请求来检索有关特定文件的信息 https forge autodesk com en docs data
  • 如何从 Autodesk Forge API 按项目获取评论和传输?

    我试图找到一种获取评论和传输的方法 但在 BIM360 API 或数据管理 API 中没有找到它 可以获得吗 目前尚未公开 BIM 360 的审核和传输 API 有一个Review API的愿望 ALEX 37150 API 希望 公开文档
  • Autodesk Forge Viewer 如何获取线起点/终点的坐标

    我正在尝试在 forge 查看器中突出显示房间 在 Revit 中 我创建了代表房间边界的线条 转换为 svf 后 我知道这些行的 dbids 现在我想知道这些线的起点和终点 顶点 以便我可以创建房间边界的 Three Shape 编辑 我
  • Autodesk Forge BIM 360 API - 激活服务类型

    我们一直在使用 Forge API 在 BIM 360 中自动设置项目 但似乎无法找到自动激活服务 Field Glue 等 的方法 直觉上 我认为 service types 属性是执行此操作的方法 但服务没有激活 1 service t
  • 从存储桶中删除文件。 Autodesk-forge

    从 wip dm prod 存储桶中删除文件时出现问题 errorCode AUTH 012 但我可以使用 x GET 而不是 x DELETE 下载当前文件 我使用这个教程 gt https developer autodesk com
  • 在 Windows 10 上构建 Autodesk Forge RCDB 失败并出现 node-gyp 错误

    尝试构建 Forge 响应式连接数据库时 我无法在我的 Windows 10 计算机上构建此应用程序 我无法成功运行 npm install 我收到如下错误 我最终尝试使用预先配置的 画布 但它仍然无法让节点应用程序运行 https git
  • Autodesk Forge:dbId、objectId 和 nodeId 之间有什么区别?

    dbId objectId 和 nodeId 有什么区别 例如 以下函数的第一个参数是同一种id还是ids fitToView objectIds 模型 objectIds Id 数组 或 null getProperties dbId o

随机推荐