下载app免费领取会员
做机电BIM的朋友都有体会:项目里的系统五花八门,送风、回风、排风、新风、给水、排水、消防喷淋、消火栓……每个系统都要有自己的颜色,方便识图和出图。
手动建过滤器的痛苦,谁建谁知道。
今天这篇,就教你怎么用我们的插件,把半小时的活压缩到30秒。
建系统过滤器这件事,说起来不难,但特别磨人:
关键是,这活没有任何技术含量,纯体力。一个有经验的BIM工程师,把时间耗在这上面,纯粹是浪费。
我们的「管道系统过滤器」和「风管系统过滤器」功能,核心就是一件事:
自动识别项目中的所有系统,按系统类型批量创建过滤器。
具体来说:
管道系统过滤器支持:
System Type 参数风管系统过滤器支持:
两个操作逻辑基本一致,一个给水专业用,一个给暖通专业用。看完视频你会发现:操作简单到离谱,全是自动的。
这个功能的设计原则就一条:能自动的绝不手动,能默认的绝不询问。
用户打开功能,看到的应该是:
高级用户当然可以自定义,但默认值要让新手也能直接用出好效果。
第一步:遍历项目,收集所有系统
遍历项目中的 MEPSystem 集合
↓
按系统类型分类(PipingSystem / DuctSystem)
↓
提取系统名称、系统类型、标识符等信息
↓
去重、排序,展示在UI列表中这里有个细节:Revit 项目中可能存在没有被使用的系统类型,我们做了一个过滤——只显示项目中实际有管线的系统,避免列表里一堆没用的系统干扰用户。
第二步:构建过滤规则
每个系统过滤器的核心是它的过滤规则,我们用的是 System Type 参数匹配:
过滤器类别:管道 / 管件 / 管路附件 / ...
↓
过滤规则:System Type 等于 "[系统名称]"
↓
多类别用 OR 逻辑组合,保证同系统的所有图元都被过滤到为什么选 System Type 而不是 System Name?因为 System Name 是实例参数,同一个系统类型下可以有多个系统名称,用类型参数过滤更稳定。
第三步:应用图形覆盖设置
创建完过滤器后,自动设置图形覆盖:
配色方案我们内置了几套:
第四步:批量创建,统一命名
最后一步就是批量创建了。所有操作包在一个 Transaction 里,要么全成功,要么全回滚,不会创建到一半失败,留下一堆半成品。
命名规则统一为 [系统类型]_[系统名称],比如 风管_送风、管道_给水,方便查找和管理。
这个功能看起来简单,背后还是有不少技术细节的。挑几个重点说:
Revit API 中获取 MEP 系统的方式:
FilteredElementCollector + PipingSystem 类FilteredElementCollector + DuctSystem 类注意区分 系统类型(System Type) 和 系统实例(System Instance):
MEPSystemTypeMEPSystem我们的过滤器是按系统类型来建的,这样同一个类型下的所有管路都会被统一过滤。
一个过滤器要同时过滤管道、管件、附件等多个类别,怎么实现?
关键在于 ParameterFilterElement.Create() 的 categories 参数——它可以传入多个类别ID。
但要注意:不是所有参数在所有类别上都可用。比如 System Type 参数,管道和管件上都有,但某些族实例上可能没有,这时候过滤器规则就会失效。
我们的做法是:先验证每个类别是否支持指定的过滤参数,不支持的就排除,并在UI上提示用户。
怎么给几十个系统自动分配颜色,还要区分度好、好看?
我们的算法思路:
一次性创建几十个过滤器,如果每个都单独开事务,速度会很慢。
优化方法:
Transaction.Start() 开启,全部完成后再 Commit()几乎每个项目启动时,第一件事就是跑一遍这个功能——几分钟的活变成几秒钟,省下来的时间干什么不好?
但我也知道,很多朋友会有顾虑:
想问问大家:
本文版权归腿腿教学网及原创作者所有,未经授权,谢绝转载。
上一篇:【Revit过滤器系列01】Revit MEP过滤器系统全解析:一键管控你的机电模型视图
下一篇:没有了
推荐专题