图元过滤器
元素过滤器是一个根据类别和/或参数过滤元素的工具,由过滤算法和设置界面组成(以下称为“工具”)。该工具在许多插件中使用。例如,在插件工作集、参数化、元素着色等中使用。
该工具由两个过滤器组成——类别过滤器和参数过滤器。在某些插件中可能只使用其中一个过滤器。例如,在插件方位中只使用参数过滤器。
在插件界面中,工具可以是水平形态:

或垂直形态:

如果工具中同时使用两个过滤器,则它们之间有逻辑运算符 且/或。运算符 且 表示元素满足两个过滤器的条件时即满足过滤条件。运算符 或 表示元素满足任一过滤器的条件时即满足过滤条件。
类别过滤器中的类别列表和参数过滤器中的条件列表可以复制到剪贴板,并通过右键菜单粘贴。
类别过滤器
类别过滤器是允许类别的树状列表。类别列表的编辑在父窗口(插件窗口)的对话框中进行:

对话框顶部有一个类别搜索框。搜索既可按显示的类别名,也可按唯一的程序名进行。使用下方的按钮,可以在列表中仅保留特定的类别组。列表右侧的按钮可取消所有类别选择
,展开所有类别
,折叠所有类别
,仅显示选中类别
,或标记当前视图中存在元素的类别
。标记的类别可以保存为集合
,以便在当前插件及使用类别过滤器的其他插件中应用。

可通过按钮
加载类别集合(选中集合中的类别)。
参数过滤器
参数过滤器是由逻辑运算符 且 或 或 分隔的条件列表。在过滤字段中,条件采用特殊语法书写,比较运算符使用以下符号:
| = | – 等于 |
| < | – 小于 |
| <= | – 小于或等于 |
| > | – 大于 |
| >= | – 大于或等于 |
| <> | – 不等于 |
| ~ | – 包含 |
| !~ | – 不包含 |
条件的编辑在单独窗口中进行:

创建条件的规则:
- “值”字段中可以输入多个允许值,用逗号分隔。当参数值匹配任意一个允许值时,参数条件满足
- 若逗号不应被识别为分隔符,则用反斜杠转义。例如,“值 1\,5”
- “存在参数”条件表示只要元素存在该参数,无论参数值如何,元素都将被处理
- “不存在参数”条件表示只要元素不存在该参数,元素都将被处理
- 条件 "只读" 的值为 "否" 表示如果参数可编辑,则将处理该元素。条件 "只读" 的值为 "是" 表示如果参数不可编辑,则将处理该元素。如果参数是不可修改的系统参数(例如参数 "体积"),元素位于不可访问的工作集,或在其他情况下,参数可能不可编辑。
- 字符串参数仅用“等于”、“不等于”、“包含”、“不包含”条件进行检查
- “包含”条件检查元素参数中是否包含任意允许值。“不包含”条件则检查元素参数中是否不包含任意允许值
- 要使用“以……开头”条件,选择“包含”条件并在值末尾加“*”,例如“Wall*”
- 要使用“以……结尾”条件,选择“包含”条件并在值开头加“*”,例如“*Wall”
- 要使用“不以……开头”条件,选择“不包含”条件并在值末尾加“*”,例如“Wall*”
- 要使用“不以……结尾”条件,选择“不包含”条件并在值开头加“*”,例如“*Wall”
- 字符串值比较时区分大小写
- 开关类型参数按整数检查(0-关,1-开)
- 在检查特殊参数 "Group"(父组)时,条件"有参数"和"无参数"分别检查元素是否在组中。也就是说,"有参数"表示"元素应在组中",而"无参数"表示"元素不应在组中"。如果元素在组中,其他任何条件都会按照字符串的规则检查组的名称。
- 在检查特殊参数 "Assembly"(父组件)时,条件"有参数"和"无参数"分别检查元素是否在组件中。也就是说,"有参数"表示"元素应在组件中",而"无参数"表示"元素不应在组件中"。如果元素在组件中,其他任何条件都会按照字符串的规则检查组件名称。
- 在检查特殊参数 "Curtain"(墙是否为幕墙)时,条件"有参数"和"无参数"分别检查墙是否为幕墙。也就是说,"有参数"表示"墙应为幕墙",而"无参数"表示"墙不应为幕墙"。
- 在检查特殊参数 "Nested"(族是否为嵌套族)时,条件"有参数"和"无参数"分别检查族是否为嵌套族。也就是说,"有参数"表示"族应为嵌套族",而"无参数"表示"族不应为嵌套族"。
- 在检查特殊参数 "Parent"(族是否为父族)时,条件"有参数"和"无参数"分别检查族是否为父族(包含嵌套族)。也就是说,"有参数"表示"族应为父族",而"无参数"表示"族不应为父族"。
- 使用"BottomZ"/"TopZ"特殊参数时检查元素几何体的最低/最高Z标高(毫米单位,保留3位小数)。"值"字段可输入标高名称,将使用该标高的毫米值(保留3位小数)
- 特殊参数AreaScheme返回面积所属的面积方案的名称。特殊参数AreaScheme的值按照字符串规则进行检查。
- 在检查特殊参数 "InMEPSystem"(元素位于工程系统中)时,条件"有参数"和"无参数"分别检查元素是否为工程系统的一部分。也就是说,"有参数"表示"元素是工程系统的一部分",而"无参数"表示"元素不是工程系统的一部分"。
- 在检查特殊参数 "InRebarSystem"(钢筋位于钢筋系统中)时,条件 "有参数" 和 "无参数" 分别用于判断钢筋是否属于钢筋系统。也就是说,条件 "存在参数" 表示检查结果为 "钢筋是钢筋系统的一部分",而条件 "不存在参数" 表示检查结果为 "钢筋不是钢筋系统的一部分"。
- 特殊参数 DocumentTitle 返回当前文档的名称。特殊参数 DocumentTitle 的值按照字符串规则进行检查。如果文档未保存或已分离,则返回默认值或空字符串。
- 组合条件中的所有子条件需同时满足(AND逻辑)
- 可用GUID(通用参数)或系统名称(内置参数)替代参数名

已创建的规则可保存为参数条件集
,以便之后在当前插件以及其他使用参数过滤器的插件中使用。可通过
按钮加载参数条件集。
右侧有两个链接作为按钮,可添加新的简单或组条件到条件列表中。
参数标识输入框可能出现按钮,用于从列表中选择参数:

当类别过滤器中设置了类别时,该按钮出现。若当前文档中存在这些类别的元素实例,则显示两个列表——实例参数和类型参数。若无实例但有类型,则仅显示类型参数列表。
参数标识可为参数名、共享参数的GUID或内置参数的系统名。
除参数外,条件中还可以使用元素标识符 (ID)、元素类型标识符 (TypeID),以及特殊参数(Group、Assembly、DocumentTitle 等,如有)。
选择“等于”和“不等于”条件时,将启用用于在项目和当前视图中搜索参数值的按钮
:

组条件是简单条件的列表。组条件内所有简单条件通过逻辑运算符 且 检查。即元素满足所有子条件时满足组条件。在过滤字段中,组条件用方括号括起。
窗口底部有下拉列表 元素满足条件,如果,设置所有条件间使用的逻辑运算符。值 所有条件均满足 对应逻辑运算符 且,值 满足任一条件 对应逻辑运算符 或。
上面截图中的示例在过滤字段中的表现:

这表示,如果墙的“标记”参数包含值“C-1”,或墙的“标记”参数包含值“C-2”且“承重结构”参数包含值“1”,则该墙满足条件。
在被检查元素中,参数搜索按参数名进行。先在实例参数列表中搜索,若未找到再在类型参数列表中搜索。
字符串参数的“等于”、“不等于”、“包含”、“不包含”操作符比较时区分大小写。