You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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语言环境下的参数显示名称:

  1. 在Revit中选中门实例,打开「属性」面板,查看高度参数的准确名称(比如中文是“高度”,英文是“Height”)。
  2. 将代码中的"height"替换为准确名称,注意大小写。

示例(中文环境):

omniClassParam = element.LookupParameter("高度")

内容的提问来源于stack exchange,提问作者Ali Eslamifar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:00:03