下载app免费领取会员
今天起,我会用一个系列把自研的「过滤器系统插件」彻底讲透。从创建、编辑到批量应用,从视图内传递到跨视图复用,帮你把过滤器这件事,从"体力活"变成"技术活"。
第一篇,先从全局带你认识这套系统到底能解决什么问题。
做过机电BIM的朋友应该都有体会:
Revit自带的过滤器功能不是不能用,是效率太低。每建一个过滤器,要点五六次对话框;每加一个视图,要重新拖一遍过滤器顺序。项目一大,时间全耗在这种重复劳动上。
「过滤器过滤系统」就是为解决这个问题而生的一套完整工具链。它不是一个单一功能,而是一整套围绕"过滤器生命周期"的解决方案,覆盖了从创建 → 编辑 → 应用 → 传递 → 复用的全流程。
完整功能矩阵: 这套系统的设计核心理念是三个词:自动化、可视化、批量化。 自动化:能自动识别的绝不手动选。比如创建系统过滤器,插件会自动读取项目中所有的管道系统/风管系统,按系统名称和类型自动生成过滤规则,用户只需要点确认。 可视化:能看到的绝不靠猜。比如编辑过滤器时,用户可以直观地看到过滤条件、颜色、线型的预览效果,改完即时生效,不用反复打开Visibility/Graphics对话框确认。 批量化:能一次做完的绝不分次做。批量添加、跨视图传递,都是这个思路——把重复性的操作压缩到一次完成。 整个插件基于 Revit API 开发,核心架构分为三层: 1. 过滤器数据模型构建 2. 系统自动识别逻辑 3. 图形覆盖设置封装 4. 批量操作事务管理 做这套插件的过程中,我们踩了不少坑,也积累了一些干货。这里总结几个核心技术点,做Revit二次开发的朋友可以参考: Revit API中创建过滤器的核心是 很多人不知道:Revit视图中过滤器的先后顺序会影响最终显示效果——后面的过滤器会覆盖前面的设置。 跨视图复制过滤器听起来简单,实际有不少细节: 用户自定义的颜色方案怎么保存?我们的做法是: 写这个系列的初衷很简单:自己做项目时被过滤器折磨过,所以做了这套工具,现在想分享给更多人。 做BIM的都知道,工具用得好,下班走得早。但很多人宁愿每天花一两个小时做重复劳动,也不愿意花点时间研究一下怎么提效。我觉得挺可惜的。 想问问大家:二、功能整体思路和实现技术步骤
设计思路
技术实现架构
┌─────────────────────────────────┐
│ UI 交互层 │
│ (WPF面板 / 功能按钮 / 预览) │
├─────────────────────────────────┤
│ 业务逻辑层 │
│ (过滤器创建 / 编辑 / 传递逻辑) │
├─────────────────────────────────┤
│ Revit API 层 │
│ (ParameterFilterElement / │
│ View / OverrideGraphicSettings)│
└─────────────────────────────────┘核心实现步骤
ParameterFilterElement,获取所有已有的过滤器FilterRule),提取类别、参数、条件、值MEPSystem 类获取项目中的所有管道系统和风管系统System Type 参数OverrideGraphicSettings 类的常用操作Transaction 包裹批量操作,确保原子性三、功能技术点总结
1. ParameterFilterElement 的创建与规则配置
ParameterFilterElement.Create() 方法,但真正复杂的是 FilterRule 规则的构建。ElementParameterFilter + FilterStringRule 实现LogicalAndFilter 或 LogicalOrFilter 包裹BuiltInParameter)是不一样的,管道和风管用的不是同一个枚举值2. 视图过滤器的应用顺序
View.SetFilterOverrides() 方法设置单个过滤器的图形覆盖View.GetFilters() 返回的集合顺序决定3. 跨视图传递过滤器的坑
ParameterFilterElement 是不行的,需要用 ElementTransformUtils.CopyElement4. 配色方案的持久化存储
SharedParameter 存到项目文件里,随项目走四、和大家聊两句
本文版权归腿腿教学网及原创作者所有,未经授权,谢绝转载。
上一篇:text-to-BIM 的成功率 86%~95%,从哪来的
下一篇:【过滤器系列02】一键创建管道/风管系统过滤器:30秒搞定几十套系统配色
推荐专题