Filter a BOM table
You can filter parts that will form the Bill of Material. There are 2 filter types: main and column.
A Main filter works in the same way as the DATAEXTRACTION command. First, all parts in the assembly, at the required level (top, bottom or hierarchical), are matched against the filter expression. Then, only the parts that have passed the filter are included in the BOM.
The filter expression may not refer to BOM columns because filtering is done before the BOM is generated. For example, it is possible to create a filter for all standard parts because Is standard is a normal property of the component. However, it is not possible to set the main filter to filter out all parts with a quantity greater than 1. You must use Column filters for that.
The easiest way to configure the main filter is to use the Filter Configurator in the BOM manager.
The Filter Configurator allows to define a set of conditions. Each condition defines a relation between a selected property and a target value.
- Equal to
- Not equal to
- Less than
- Greater than
- Less than or equal to
- Greater than or equal to
- All of group: is "true" if all conditions in that group are "true". This is the same as the "and" operator.
- Any of group: is "true" if at least one condition in that group results in "true". This is the same as the "or" operator.
A group can contain an arbitrary number of conditions. It can also contain nested groups, thus making complex filters possible.
- Select a property from the list of properties.
- Select a required relation operator and specify the target value.
For text values, a target value can be selected from the list of all possible values also. For numerical values, their target unit can be specified also in order to automatically convert the value with respect to the default unit of the document.
For text values, "Equal to" and "Not equal to" relations support wild cards.
The Filter Configurator automatically converts the set of conditions into a filter expression, which can be made visible by clicking :
This expression is fully editable and two-way associative with the set of conditions.
|!=||not equal to|
|<=||less than or equal to|
|>=||greater than or equal to|
- Property names must be enclosed in quotes.
- Relational operators can be combined using "and" and "or" operators. Operator "and" results in "true" if both sides of the operator are true. Operator "or" results in "false" if either left or right side of the operator is true.
- Logical operators "and" and "or" are case sensitive.
- Use "(" and ")" to combine two operators into one.
- String values are enclosed in double quotation marks "".
- Relational operators for strings are case sensitive.
- "==" and "!=" operators support wild cards.
For example, to get a BOM of all standard parts, use the following expression:
To get a BOM of all ISO standard parts, use the following expression:
"Is standard"=="Yes" and "Part standard"=="ISO"
To get a BOM of all ISO or DIN standard parts, use the following expression:
"Is standard"=="Yes" and ("Part standard"=="ISO" or "Part standard"=="DIN")
Wild cards allow you to match property values against a specific template. For example, if you want to find all components containing "nozzle" in their names, the following expression could be used:
Wild cards can also be used as target values in the Filter Configurator.
Only "Equal to" and "Not equal to" relational operators support wild cards.
The following special symbols are supported:
|Back quote||`||Escape the next character (takes it literally).|
|Asterisk||*||Match any character sequence, including a null sequence, anywhere.|
|Question mark||?||Match a single character.|
|Period||.||Match a single non-alphanumeric character.|
|At sign||@||Match a single alphabetic character.|
|Hash tag||#||Match a single numeric character.|
|Tilde||~||If the first character in a pattern matches anything but the pattern.|
|Brackets||[...]||Match a single enclosed character.|
|Tilde brackets||[~...]||Match a single non-enclosed character.|
|Hyphen||-||In brackets, match a single character in the specified range.|
Column filters allows you to quickly set the conditions which rows display, depending on the column content (somewhat similar to filters in some spreadsheet processors). Unlike the main filter, they are applied after the BOM table has been generated. Therefore, it is possible to use column filters for columns with aggregated content, such as quantities.
Each column can have one filter only. However, you can add column filters to as many columns as you need. Only rows that pass all column filters display in the final BOM.
You can configure column filters using the Column Filter dialog box in the BOM manager:
In this dialog box, you can select the type of filter from the list and configure it accordingly. The list of possible filters depends on the column content type, as shown in the table:
|Filter type||Column type||Description|
|always accepted||any||all column values are accepted|
|equal to||numerical||value should be equal to the target one|
|not equal to||numerical||value should be not equal to the target one|
|less than||numerical||value should be less than the target one|
|greater than||numerical||value should be greater than the target one|
|less than or equal to||numerical||value should be less than or equal to the target one|
|greater than or equal to||numerical||value should be greater than or equal to the target one|
|between||numerical||value should be in the given range, both ends included|
|not in range||numerical||value should not be in the given range, both ends excluded|
|exactly matches||text||value should exactly match the target one|
|does not match||text||value should be different from the target one|
|starts with||text||value should start with the given text|
|does not start with||text||value should not start with the given text|
|ends with||text||value should end with the given text|
|does not end with||text||value should not end with the given text|
|contains||text||value should contain the given text|
|does not contain||text||value should not contain the given text|
|matches pattern||text||value should match the given wild card template|
|does not match pattern||text||value should not match the given wild card template|
|in||text and numerical||value should be in the given set of values|
|not in||text and numerical||value should not be in the given set of values|
For all text filters, you can also specify whether they should be case-sensitive or case-insensitive.