首页/技术分享

Revit批量改参数,我用Dynamo写了3个脚本,省了80%的时间

发布于:2026-04-25 20:31:22
4人 分享

开篇:手动改参数,改到天荒地老

做机电深化的时候,最烦的事情之一是什么?

改参数。

比如:所有风管的"系统类型"要统一改成"排风",200多根,一根根点进去改,改到眼睛都花了。再比如:直径大于200的管道要加备注,筛完还要一个个填,一个项目下来大半天没了。

Revit本身有批量修改参数的功能,但说实话——用过的都知道,那个界面操作起来比手动改还麻烦。

后来我学聪明了:用Dynamo写脚本,10分钟搞定原来一天的工作。

今天把这3个最常用的批量改参数脚本分享出来,建议收藏,下次遇到改参数直接套。


脚本一:批量改同名参数

适用场景

所有同类元素的某个参数,要改成同一个值。

比如:把项目中所有"送风管"的"备注"字段改成"待审核"。

脚本逻辑

节点序列:
All Elements of Category (MEP Categories → Duct)
→ Element.GetParameterValueByName ("
系统类型")
→ String from Object
→ Code Block ("排风")
→ Element.SetParameterByName

翻译成大白话:

  1. 把项目中所有风管拿出来
  2. 找到"系统类型"这个参数
  3. 改成"排风"
  4. 写回去

实际效果

原来手动改200根风管的系统类型,要点开每一个族,选参数,下拉改值,再关掉——一根最快30秒,200根就是100分钟。

用这个脚本,选好类别,敲一个字符串,10秒完成。

注意: 参数名称要写对,大小写敏感,建议直接从族参数面板复制参数名。


脚本二:按条件筛选后批量改

适用场景

不是所有元素都改,而是满足特定条件的才改。

比如:直径大于200mm的风管,才把"备注"改成"大管径需复核"。

脚本逻辑

节点序列:
All Elements of Category (Duct)
→ Element.GetParameterValueByName (
"直径")
→ >= (Code Block: 200)
→ List.FilterByBoolMask
  → True出口:符合条件的元素
  → False出口:不符合的(
跳过
→ Element.SetParameterByName (
"备注""大管径需复核")

核心节点:List.FilterByBoolMask

这是Dynamo里最常用的筛选节点。左上接原始列表,左下接筛选条件(True/False列表),右边两个出口——True是符合条件的,False是不符合的。

多条件组合

如果条件更复杂,比如"直径大于200  系统类型是送风",可以这样写:

→ 两个筛选条件分别拉 Boolean Mask
→ List.And
→ List.FilterByBoolMask

先把直径条件跑一遍,再把系统类型条件跑一遍,用 And 合并之后的结果去过滤元素列表。

实际效果

手动筛选:先按类型排序,再按直径排序,一个个找出来改——一个项目可能几十上百个,改完累个半死,还容易漏。

用这个脚本:条件写好,一键跑完,准确率100%,不会漏。


脚本三:跨类别批量修改

适用场景

多个类别的元素,要统一改同一个参数。

比如:项目中所有机电设备(水管、风管、电缆桥架),都要在"备注"字段加上项目前缀"PJ-"。

脚本逻辑

节点序列:
All Elements of Category (Duct)
All Elements of Category (Pipe)
All Elements of Category (Cable Tray)
→ List.Create
→ List.Flatten
→ Element.GetParameterValueByName
("备注")
→ String.Insert
(前缀 "PJ-")
→ Element.SetParameterByName (
"备注")

关键点:List.Create + List.Flatten

List.Create 把三个类别的元素列表合并成一个嵌套列表,Flatten 再把它展开成一维列表,这样才能统一处理。

进阶:保留原有备注内容

上面的脚本会覆盖原有备注内容,如果想保留原来的再加前缀,逻辑要改一下:

原有备注值 → String.Insert (在前面插入 "PJ-")

这样原来的备注内容不会丢失,只会在前面加上项目标记。

实际效果

一个多专业综合项目,涉及几十种设备类别,手动一个个改,改完基本上要到第二天才能缓过来。

用这个脚本,选好类别,敲好前缀,跑一遍,两分钟搞定。


注意事项

1. 改之前先备份模型

Dynamo改参数是不可逆的操作(除非你有撤销历史),运行脚本之前务必另存一个备份文件。

2. 参数类型要匹配

Dynamo对参数类型很敏感:

  • 参数是字符串类型 → 用 String
  • 参数是数字类型 → 用 Number
  • 参数是族类型(如"系统类型")→ 要用 ElementType + ElementBinding,不能直接塞字符串

参数类型对不上,脚本会报错或者静默失败。

3. 族参数 vs 实例参数

Revit里参数分两种:

  • 实例参数:每个构件单独的值,改一个不影响另一个
  • 族参数(类型参数):同类型所有构件共用一个值,改一个会影响整类

Dynamo修改实例参数和类型参数的节点是一样的,但如果你的参数是类型参数,改一个就等于改了整类,改之前要确认好。

4. Dynamo Player 运行更安全

Dynamo编辑器里直接运行脚本,Revit会进入事务状态,如果脚本出错有可能导致Revit卡住。建议把脚本保存好,用 Dynamo Player 运行——Player 会在运行前自动生成撤销步骤,出问题可以一键撤回。


结语

Dynamo是BIM工程师的提效神器,这3个脚本覆盖了90%日常遇到的批量改参数需求。

收藏起来,下次遇到改参数的需求,先问自己:所有元素统一改,还是按条件筛选改,还是跨类别一起改?判断清楚,直接套对应的脚本。

你有什么批量提效的Dynamo脚本?欢迎评论区分享!

觉得有用的话,欢迎转发,我们下期见。

转载请注明来源本文地址:https://www.tuituisoft/blog/99030.html

上一篇:

全面提升BIM技术应用能力,达州市人民政府发布《深入推进创新驱动引领达州建筑产业高质量发展的若干措施》

下一篇:没有了