图元过滤器
元素过滤器是一个根据类别和/或参数过滤元素的工具,由过滤算法和设置界面组成(以下称为“工具”)。该工具在许多插件中使用。例如,在插件工作集、复制值、元素着色等中使用。
该工具由两个过滤器组成——类别过滤器和参数过滤器。在某些插件中可能只使用其中一个过滤器。例如,在插件方位中只使用参数过滤器。
在插件界面中,工具可以是水平形态:
或垂直形态:
如果工具中同时使用两个过滤器,则它们之间有逻辑运算符 且/或。运算符 且 表示元素满足两个过滤器的条件时即满足过滤条件。运算符 或 表示元素满足任一过滤器的条件时即满足过滤条件。
类别过滤器中的类别列表和参数过滤器中的条件列表可以复制到剪贴板,并通过右键菜单粘贴。
类别过滤器
类别过滤器是允许类别的树状列表。类别列表的编辑在父窗口(插件窗口)的对话框中进行:
对话框顶部有一个类别搜索框。搜索既可按显示的类别名,也可按唯一的程序名进行。搜索框中输入星号(*)时,将显示所有选中的类别。列表右侧的按钮可取消所有类别选择 ,展开所有类别
,折叠所有类别
,仅显示选中类别
,或标记当前视图中存在元素的类别
。标记的类别可以保存为集合
,以便在当前插件及使用类别过滤器的其他插件中应用。
可通过按钮 加载类别集合(选中集合中的类别)。
参数过滤器
参数过滤器是由逻辑运算符 且 或 或 分隔的条件列表。在过滤字段中,条件采用特殊语法书写,比较运算符使用以下符号:
= | – 等于 |
< | – 小于 |
<= | – 小于或等于 |
> | – 大于 |
>= | – 大于或等于 |
<> | – 不等于 |
~ | – 包含 |
!~ | – 不包含 |
条件的编辑在单独窗口中进行:
创建条件的规则:
- “值”字段中可以输入多个允许值,用逗号分隔。当参数值匹配任意一个允许值时,参数条件满足
- 若逗号不应被识别为分隔符,则用反斜杠转义。例如,“值 1\,5”
- “存在参数”条件表示只要元素存在该参数,无论参数值如何,元素都将被处理
- “不存在参数”条件表示只要元素不存在该参数,元素都将被处理
- 字符串参数仅用“等于”、“不等于”、“包含”、“不包含”条件进行检查
- “包含”条件检查元素参数中是否包含任意允许值。“不包含”条件则检查元素参数中是否不包含任意允许值
- 要使用“以……开头”条件,选择“包含”条件并在值末尾加“*”,例如“Wall*”
- 要使用“以……结尾”条件,选择“包含”条件并在值开头加“*”,例如“*Wall”
- 要使用“不以……开头”条件,选择“不包含”条件并在值末尾加“*”,例如“Wall*”
- 要使用“不以……结尾”条件,选择“不包含”条件并在值开头加“*”,例如“*Wall”
- 字符串值比较时区分大小写
- 开关类型参数按整数检查(0-关,1-开)
- 检查关键参数“Group”(父组)时,“存在参数”和“不存在参数”分别表示元素应在组内或不在组内。其他条件则按字符串规则检查组名
- 检查关键参数“Assembly”(父组件)时,“存在参数”和“不存在参数”分别表示元素应在组件内或不在组件内。其他条件按字符串规则检查组件名
- 检查关键参数“Curtain”(墙为幕墙)时,“存在参数”和“不存在参数”分别表示墙应为幕墙或不应为幕墙。非墙元素忽略该条件(始终为真)
- 检查关键参数“Nested”(族为嵌套族)时,“存在参数”和“不存在参数”分别表示族应为嵌套或非嵌套。非族元素忽略该条件(始终为真)
- 检查关键参数“Parent”(族为主族)时,“存在参数”和“不存在参数”分别表示族应为主族或非主族。非族元素忽略该条件(始终为真)
- 使用关键参数“BottomZ”和“TopZ”时,分别检查元素几何体的最低和最高标高。该参数视为数值,按相应条件检查。标高单位为毫米,保留三位小数。值字段可输入楼层名,若找到则用其标高(毫米,保留三位小数)
- 关键参数AreaScheme返回所属分区方案名称。按字符串规则检查。非分区元素忽略该条件(始终为真)
- 组条件中所有简单子条件通过“且”运算符检查,需全部满足
- 参数名可用共享参数的GUID或内置参数的系统名替代
右侧有两个链接作为按钮,可添加新的简单或组条件到条件列表中。
参数标识输入框可能出现按钮,用于从列表中选择参数:
当类别过滤器中设置了类别时,该按钮出现。若当前文档中存在这些类别的元素实例,则显示两个列表——实例参数和类型参数。若无实例但有类型,则仅显示类型参数列表。
参数标识可为参数名、共享参数的GUID或内置参数的系统名。
条件中除参数外,还可使用元素ID、元素类型ID,以及元素的父组(Group)和父组件(Assembly)(若存在)。
组条件是简单条件的列表。组条件内所有简单条件通过逻辑运算符 且 检查。即元素满足所有子条件时满足组条件。在过滤字段中,组条件用方括号括起。
窗口底部有下拉列表 元素满足条件,如果,设置所有条件间使用的逻辑运算符。值 所有条件均满足 对应逻辑运算符 且,值 满足任一条件 对应逻辑运算符 或。
上面截图中的示例在过滤字段中的表现:
这表示,如果墙的“标记”参数包含值“C-1”,或墙的“标记”参数包含值C-2且“承重结构”参数包含值“1”,则该墙满足条件。
在被检查元素中,参数搜索按参数名进行。先在实例参数列表中搜索,若未找到再在类型参数列表中搜索。
字符串参数的“等于”、“不等于”、“包含”、“不包含”操作符比较时区分大小写。