• 首页
  • 新闻
  • Revit。参数化。新策略、新函数、图元分组、预过滤器、快速启动选项板以及更多内容

Revit。参数化。新策略、新函数、图元分组、预过滤器、快速启动选项板以及更多内容

1

今天我们发布了参数化有史以来最大的一次更新,或许也是所有 ModPlus 插件中最大的一次更新!

在新版参数化中,等待您的有新函数、新策略、图元分组、独一无二的 ManyToMany 策略、预过滤器、用于快速运行的选项板、重新设计的说明、公式编辑器的新特性等等。下面我们将逐一介绍,并强烈建议您阅读本文

说明

说明的内容和设计经过了大幅改造:说明中补充了更多关于插件工作方式的信息,章节的编排更加合理,正文中还增加了交叉引用。设计我们在开头的截图中已经展示过。顺便一提,现在不仅可以从公式编辑器打开说明,也可以从插件主窗口的设置面板打开。

公式与公式编辑器

公式编辑器中新增了公式高亮功能:

  • 函数现在可以折叠和展开。这不会影响公式本身
  • 函数体现在会以背景高亮标示

公式编辑器中出现了函数的悬浮提示。将光标移到函数名称上即会显示其说明,因此无需再查阅说明来回忆各参数的用途:

现在可以在公式中书写注释。注释有助于向自己或同事解释复杂的表达式,也可以在不删除的情况下临时停用公式的一部分:

函数名称现在采用駝峰式大小寫书写,而不再使用全大写:CvIf 代替 CVIF,Round 代替 ROUND。较长的名称这样读起来明显更轻松。函数名称仍然不区分大小写,因此现有公式可以继续正常使用。

公式选项单元格采用了新的设计:选项更加直观,占用空间更少:

公式的新功能

项目信息参数和全局参数。现在公式中可以使用项目信息参数和全局参数的值。例如,可以将项目编号写入图元,或在计算中使用整个项目仅设置一次的值。公式编辑器中新增了用于插入它们的专门按钮:

5

SKIP_ELEMENT 关键字。它可以直接在公式中将图元排除在处理之外。当跳过条件难以用过滤器表达,而在公式中只需一行即可写出时,这非常方便:

6

“仅用于检查”表达式。如果在目标参数之后不写 =,而是写比较运算符(!=、>、<、>=、<=、~、!~),该表达式将只在检查模式下生效。在该模式下,参数的当前值会与表达式的计算结果进行比较,而在执行模式下该表达式会被跳过。这样,同一个配置中既可以保留参数填写,也可以保留模型检查。此类表达式会在公式单元格和公式编辑器中以图标标示:

7

新增“包含于”和“不包含于”运算符。公式中新增了两个运算符:=| 检查某个值是否在列表中,!=| 检查其是否不在列表中。列表既可以通过 List 函数以字符串形式给出,也可以用 CcList 和 CrList 函数从数据源的某一列或某一行中获取。再也不需要用“或”串起长长的条件链:

8

新增回写函数。在 Sum 和 Join 的基础上新增了 Min、Max、Avg、First 和 Last。现在写入条件源图元的不仅可以是关联图元值的总和或列表,还可以是最小值、最大值、平均值以及第一个或最后一个值。

此外,现在还可以通过 @[参数] = … 形式的表达式直接向源图元写入值。例如,@[客房数量] = GCount(t) 会将与该房间匹配的空间数量写入房间。

新函数

函数列表得到了明显扩充:

  • 数据源(Excel 文件)相关:CvOr 查找至少满足一个条件的第一行,CcMin、CcMax、CrMin 和 CrMax 返回数据源某一列或某一行中的最小值和最大值
  • 列表相关:Item 按索引返回列表项,FindItem 返回包含所查找值的第一个列表项,ItemIndex 返回该列表项的索引
  • 字符串相关:Trim 去除字符串首尾的空格,RgxMatch 检查值是否与正则表达式匹配,RgxReplace 按正则表达式执行替换
  • 几何相关:TargetBottomZ、TargetTopZ、SourceBottomZ 和 SourceTopZ 返回目标图元和源图元的底部与顶部标高
  • 其他:HasValue 检查参数是否已被赋值,DocTitle 返回文档标题,GetCurrentViewParameter 返回执行处理所在视图的参数值

每个函数的详细说明及示例均可在说明中找到。

新策略

新增了九个策略:

  • InAssembly —— 处理位于组合中的图元
  • ViewSpecific —— 处理仅存在于单个视图中的图元:标注、文字注释、标记、详图线和详图区域,以及图纸的内容
  • StairComponents —— 处理楼梯构件:梯段、平台、支撑和栏杆扶手。条件源图元为楼梯
  • RoomOpenings —— 处理通向房间的门和窗。条件源图元为房间
  • RoomFinishing —— 处理由房间装修插件创建的房间装饰面。条件源图元为房间
  • OnLevel —— 按图元与标高的关联进行处理
  • LevelViews —— 处理基于标高创建的视图:楼层平面、天花板平面、结构平面和面积平面
  • RebarCouplers —— 处理由钢筋连接器连接的钢筋。条件源图元为连接器
  • ManyToMany —— 我们将在下文单独介绍

RoomBoundaries 策略经过改造:现在它不仅处理房间的竖向围护结构,也处理水平围护结构。

现在可以为规则命名。在包含十来条规则的策略中,一眼就能看出每条规则负责什么:

9

预过滤器

策略新增了预过滤器。预过滤器会一次性为策略的所有规则收窄图元集合。它并不取代规则的过滤器,而是与之共同作用:只有同时通过预过滤器和规则过滤器的图元才会进入处理。

例如,可以在预过滤器中设置“墙”“结构柱”和“结构框架”类别以及“结构”参数。这样策略的所有规则就只会处理这些类别中的结构图元,并在其中按各自的过滤器进一步筛选。以前,同样的条件必须在每条规则中重复设置。

如果某条规则的类别与预过滤器的类别没有交集,插件会提示该规则将无法处理任何图元。

10

图元分组与聚合函数

这是本版本最重要的新增功能之一。现在可以为规则设置目标图元的分组:取值相同的图元,例如同一类型或同一标记的图元,会合并为一个组。为便于处理分组,新增了以 G 为前缀的聚合函数:GSum、GMin、GMax、GAvg、GCount、GJoin、GIndex。此外还新增了 Ranges 函数,可将一系列编号折叠为区间:“1-3, 5-7, 10”。

利用分组,可以把同一类型所有风管的总面积写入每一根风管,可以对组内图元编号,也可以把出现相同标记图元的所有房间编号汇集到一个字符串中。分组可以排序,取值比较也可以不区分大小写:

11

ManyToMany 策略与匹配

其他所有策略都是依据图元在模型中的关系来配对:图元位于房间中、插入在墙中、属于某个系统等等。ManyToMany 的工作方式不同:它按取值是否相同来关联两组彼此独立的图元。典型的例子是建筑模型中的房间与机电模型中的空间。房间带有“户型”参数,空间带有“客房类型”参数。您设置匹配 @[户型] ↔ $[客房类型],插件便会自行找出配对。

若要在运行前检查设置,请使用匹配预览。它会显示哪些值相互吻合、每个组中进入了多少源图元和目标图元,以及哪些图元未找到配对。不完整的组会优先列出,因此问题一目了然。

12

选项板

新增了用于快速运行当前配置中策略和规则的选项板。如果您经常运行同一个策略或某一条规则,就不必再打开插件主窗口:直接在选项板中即可运行:

13

配置

现在可以将配置合并为分组。如果您为不同专业和项目准备了数十个配置,查找所需配置将会方便得多:

14

策略和规则的“已选”复选框状态现在会保存到单独的文件中。因此,运行前所做的选择不再改变配置本身。在使用组织设置、同一个配置由多人共用时,这一点尤为方便。

运行前同步

插件设置中新增了运行前询问是否与中心模型同步选项。若已启用该选项且文档为协作文档,插件会在处理前建议与中心模型进行同步。同步参数与 Revit 的标准对话框一致:压缩、放弃图元和工作集、保存本地文件。从选项板运行时该询问同样有效。

结果窗口与逐步计算

  • 如果结果的嵌套对象少于四个,则会自动展开
  • 策略现在会显示其中含有已处理表达式的规则数量
  • 逐步计算中取消了逗号高亮,它更多是干扰而非帮助

其他改进

  • 新增了对“回路编号”参数的处理
  • 如果图元有多个同名参数,插件现在会报错,而不会任意取用第一个找到的参数。以前在这种情况下可能会在无声无息中读取或写入错误的参数
  • 修复了在上一版本中发现的各种错误

即使是这样一次大规模更新,我们仍然有许多后续更新的想法!因此别忘了在我们的支持群聊中提出您的建议!

祝您使用 ModPlus 愉快!