如何通过Autodesk Forge Model Derivative API获取Revit结构柱长度及标高?
问题解答
1. 如何获取结构柱的长度?
Revit中的「Length」是计算型参数,并非模型原生存储的静态参数,Model Derivative API默认不会导出这类动态计算属性。你可以通过两种方式解决:
- 自行计算:利用已获取的底部/顶部标高值,结合底部、顶部偏移量推导柱长:
柱长 = (顶部标高值 + 顶部偏移) - (底部标高值 + 底部偏移) - 通过Design Automation提取:借助Autodesk Design Automation for Revit调用Revit原生API,直接读取结构柱的
Length参数。示例代码如下:
执行脚本后可将结果存入模型属性,再通过Model Derivative API获取。// 假设已获取目标柱的ElementId Column targetColumn = doc.GetElement(targetColumnId) as Column; double columnLength = targetColumn.get_Parameter(BuiltInParameter.CURVE_ELEM_LENGTH).AsDouble();
2. 如何获取标高名称对应的标高信息?
标高的核心属性(如标高值Elevation)可通过Model Derivative API筛选类别获取:
- 调用属性接口时,添加查询参数
filter[type]=Levels,即可返回所有标高元素的属性数据,包含名称、标高值等关键信息:GET /modelderivative/v2/designdata/{urn}/metadata/{guid}/properties?filter[type]=Levels - 若使用Forge Viewer,也可通过Viewer内置的
propertyDb查询标高属性:const propDb = viewer.model.getPropertyDb(); propDb.enumObjects(dbId => { const objProps = propDb.getObjectProperties(dbId); if (objProps.category === 'Levels') { console.log(`标高:${objProps.name},标高值:${objProps.properties.Elevation.value}`); } });
内容的提问来源于stack exchange,提问作者anthip
相关产品推荐
相关产品推荐

