如何在Forge中基于Original Category扩展Autodesk.ModelStructure的Parts节点
实现Revit Parts在ModelStructure扩展中的层级细分思路
1. 批量获取Part元素的关键属性
调用Forge Model Derivative的属性查询接口,精准筛选出所有Part类元素,并提取它们的Original Category、Original Family、Original Type属性:
- 接口示例:
GET /modelderivative/v2/designdata/{urn}/metadata/{guid}/properties?filter=category:Parts - 注意:这些Revit自定义属性通常会被映射到返回数据的
properties字段下,需要确认具体的键名(可能因导出设置略有差异)
2. 按属性层级重构树结构
基于获取到的属性数据,手动构建新的树形层级:
- 核心层级逻辑:
Parts根节点 →Original Category节点 →Original Family节点 →Original Type节点 → 具体Part元素 - 遍历所有Part元素,依次按三个属性进行分组,将同一层级属性值相同的元素归到同一个父节点下,形成嵌套结构
3. 替换ModelStructure的默认树渲染
通过自定义扩展修改ModelStructure的树生成逻辑:
- 继承原ModelStructure扩展,重写
buildTree方法,用自己构建的层级树替换默认的分类树 - 轻量化方案:在默认树加载完成后,定位到原有的"Parts"节点,清空其原有子节点,再插入重构后的层级节点
- 保持原交互逻辑:确保自定义节点的
dbId关联正确,点击时能触发原有的模型高亮、属性面板展示等功能
4. 同步处理节点交互与状态
- 复用原扩展的
onTreeNodeClick等事件处理方法,保证自定义层级的节点和原节点行为一致 - 处理节点的展开/折叠状态记忆,优化用户体验
内容的提问来源于stack exchange,提问作者anthip
相关产品推荐
相关产品推荐

