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

在Revit、Dynamo中如何用Python获取所有导线及关联构件?

获取Revit项目中所有导线及连接构件的Dynamo Python脚本

以下脚本可直接在Dynamo中运行,自动获取当前Revit项目内所有导线,并提取每根导线两端连接的电气构件(如插座、开关、配电箱等),最终输出包含导线实例、导线ID、连接构件列表的结构化数据。

# 导入Revit API和Dynamo相关模块
import clr
clr.AddReference('RevitAPI')
clr.AddReference('RevitServices')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Electrical import Wire
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

# 获取当前Revit文档
doc = DocumentManager.Instance.CurrentDBDocument

# 收集所有已放置的导线实例(排除类型族)
wire_collector = FilteredElementCollector(doc).OfClass(Wire).WhereElementIsNotElementType()
wires = list(wire_collector)

# 初始化结果存储列表
result = []

# 遍历每根导线,提取连接构件信息
for wire in wires:
    wire_id = wire.Id.ToString()
    wire_name = wire.Name
    
    # 获取导线关联的所有元素
    connected_element_ids = wire.GetConnectedElements()
    
    # 过滤整理有效连接构件(排除导线本身、空元素)
    connected_components = []
    for elem_id in connected_element_ids:
        elem = doc.GetElement(elem_id)
        if elem and not isinstance(elem, Wire):
            component_detail = {
                "构件ID": elem.Id.ToString(),
                "构件名称": elem.Name,
                "构件类型": elem.GetType().Name
            }
            connected_components.append(component_detail)
    
    # 组装当前导线的完整信息
    wire_detail = {
        "导线实例": wire,
        "导线ID": wire_id,
        "导线名称": wire_name,
        "连接构件": connected_components
    }
    result.append(wire_detail)

# 输出结果至Dynamo节点
OUT = result

注意事项

  • 运行脚本前需确保当前Revit项目已打开,且包含已放置的导线及电气构件
  • Dynamo的OUT端口会输出列表格式数据,可通过后续节点拆分提取单独的导线或构件信息
  • 脚本仅识别已建立有效连接的构件,未连接的导线对应连接构件列表为空

内容的提问来源于stack exchange,提问作者miguel silvestre

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:39:33