如何获取Revit中门构件的高度信息?代码返回None的问题求助
解决Revit API获取门高度返回None的问题
问题原因
- 参数名称不匹配:
LookupParameter依赖参数的显示名称,Revit参数名称会随语言本地化(比如中文环境下门高度的显示名称是“高度”而非“height”),且对大小写敏感,直接用"height"会找不到参数。 - 门实例高度可能继承自类型:部分门的高度是类型参数,实例本身没有独立的高度参数,需要从门的类型元素中获取。
解决方案
方法1:使用内置参数(推荐)
Revit API提供的BuiltInParameter枚举可以避开名称匹配问题,稳定性更高。门高度对应的内置参数是DOOR_HEIGHT。
修改后的完整代码:
import clr clr.AddReference('RevitAPI') import Autodesk.Revit.DB as DB doc = __revit__.ActiveUIDocument.Document collector = DB.FilteredElementCollector(doc) # 获取所有门实例 door_instances = collector.OfCategory(DB.BuiltInCategory.OST_Doors).WhereElementIsNotElementType().ToElements() for door in door_instances: # 尝试从实例获取高度参数 height_param = door.get_Parameter(DB.BuiltInParameter.DOOR_HEIGHT) if height_param: # Revit内部单位为英尺,转换为毫米(1英尺=304.8毫米) height_mm = height_param.AsDouble() * 304.8 print(f"门ID {door.Id} 的高度:{height_mm:.2f} mm") else: # 实例无参数时,从类型元素获取 door_type = doc.GetElement(door.GetTypeId()) type_height_param = door_type.get_Parameter(DB.BuiltInParameter.DOOR_HEIGHT) if type_height_param: height_mm = type_height_param.AsDouble() * 304.8 print(f"门ID {door.Id} 的高度(继承自类型):{height_mm:.2f} mm")
方法2:使用准确的参数显示名称
如果坚持用LookupParameter,需先确认当前Revit语言环境下的参数显示名称:
- 在Revit中选中门实例,打开「属性」面板,查看高度参数的准确名称(比如中文是“高度”,英文是“Height”)。
- 将代码中的"height"替换为准确名称,注意大小写。
示例(中文环境):
omniClassParam = element.LookupParameter("高度")
内容的提问来源于stack exchange,提问作者Ali Eslamifar
相关产品推荐
相关产品推荐

