Object filter
The Object filter is a tool for filtering objects by type and/or attributes, consisting of filtering algorithms and a configuration interface (hereinafter referred to as the tool). The tool is used in plugins such as Search by condition.
The tool consists of two filters – a type filter and an attribute filter:

A logical operator AND/OR is present between the filters. The operator AND means that an object satisfies the filter conditions if it meets the criteria of both filters. The operator OR means that an object satisfies the conditions if it meets the criteria of at least one of the two filters.
The list of types in the type filter and the list of conditions in the attribute filter can be copied to the clipboard and pasted from it using the context menu, which can be opened by right-clicking.
Type Filter
The type filter is a tree list of valid object types. The list of types is edited in the dialog window of the parent plugin window:

At the top of the dialog is a search field for finding a type by name. When you enter an asterisk (*) in the search field, all selected types will be displayed. The buttons to the right of the list allow you to deselect all types
, expand
and collapse all types
, display only selected types
, or highlight types whose objects are present in the project
. The selected types can be saved as sets
for later use both in the current plugin and in other plugins that use the type filter.

You can load a set of types (mark types from the selected set) using the button
.
Attribute Filter
The attribute filter is a list of conditions separated by a logical operator AND or OR. In the filter field, the conditions are written using a special syntax, where the comparison operators are represented by the following symbols:
| = | – equal to |
| < | – less than |
| <= | – less than or equal to |
| > | – greater than |
| >= | – greater than or equal to |
| <> | – not equal to |
| ~ | – contains |
| !~ | – does not contain |
Editing conditions is done in a separate window:

Rules for creating conditions:
- An attribute is a conditional concept that combines Properties, Parameters, and Quantities of objects.
- In the "Values" field, you can enter multiple acceptable values separated by commas. The attribute meets the condition if its value matches at least one of the acceptable values.
- To prevent a comma from being interpreted as a separator, escape it with a backslash. For example, "value 1\,5".
- The "Attribute presence" condition means that the object will be processed if such an attribute exists, regardless of its value.
- The "Attribute absence" condition means that the object will be processed if such an attribute does not exist.
- String attributes are checked only with the conditions "Equal", "Not equal", "Contains", and "Does not contain".
- Numeric attributes are checked with all conditions except "Contains".
- The "Contains" condition checks that the object's attribute contains at least one of the allowed values. The "Does not contain" condition checks that the attribute does not contain at least one of the values.
- To use the "Starts with" condition, select "Contains" and add "*" to the end of the value. For example, "Concrete*".
- To use the "Ends with" condition, select "Contains" and add "*" at the beginning of the value. For example, "*concrete".
- To use the "Does not start with" condition, select "Does not contain" and add "*" to the end of the value. For example, "Concrete*".
- To use the "Does not end with" condition, select "Does not contain" and add "*" at the beginning of the value. For example, "*concrete".
- String value checking is case-sensitive.
- To check boolean attributes, you can use the values "Yes/No", "true/false", or 0 (no) and 1 (yes).
- If the attribute returns a length, the default value is in millimeters. To use other units, specify them in the condition with a space: "1 m" for meters, "10 cm" for centimeters, "100 mm" for millimeters.
- If the attribute returns an area, the default value is in square meters. To use other units, specify them in the condition with a space: "1 m2" for square meters, "10 cm2" for square centimeters, "100 mm2" for square millimeters.
- If the attribute returns a volume, the default value is in cubic meters. To use other units, specify them in the condition with a space: "1 m3" for cubic meters, "10 cm3" for cubic centimeters, "100 mm3" for cubic millimeters.
- If the attribute returns a mass, the default value is in kilograms. To use other units, specify them in the condition with a space: "1 t" for tons, "10 kg" for kilograms, "100 g" for grams.
- All simple nested conditions of a group condition are checked with the "AND" operator, meaning all nested conditions must match.
To the right, there are two links that act as buttons, allowing you to add a new simple or group condition to the list of conditions.
In the parameter identifier input field, there may be a button that allows you to select an attribute from a list:

This button appears if types are set in the type filter. In that case, three lists are available – properties, parameters, and calculated characteristics.
A group condition is a list of simple conditions. All simple conditions within a group condition are checked using the logical operator AND. That is, an object satisfies the group condition if it meets all nested simple conditions. In the filter field, the group condition is enclosed in square brackets.
At the bottom of the window, there is a dropdown list The object matches if, which defines the logical operator used between all conditions. The value all conditions match corresponds to the logical operator AND, while the value any of condition matches corresponds to the logical operator OR.
The example shown in the screenshot above will look as follows in the filter field:

This means that a wall matches if its "Mark" attribute has the value "W-1" or if its "Mark" attribute has the value "W-2" and its "Nominal length" attribute is greater than 3000.
When checking string attribute values using the operators "Equal to", "Not equal to", "Contains", and "Does not contain", case sensitivity is taken into account.