Commands: BMBOM, BMBOMPANELOPEN, BMBOMPANELCLOSE
An engineering Bill of Materials (BOM) is a list of unique mechanical components used in an assembly. In BricsCAD the list is represented as a table entity (see Tables) and can be placed at any location in the drawing area. Each entity has its own serial number (starting with 1), name, and number of occurrences. It is also possible to view and configure Bills of Materials using the Bills of Materials Manager.
Tipi di Distinta Materiali
There are three different ways to list a Bill of Materials in BricsCAD. The difference is the way the components are listed:
-
Top level lists top-level components only. Top-level components are components inserted directly into the main assembly. This type of BOM lists only the main components with no details of subcomponents.
-
Bottom level lists bottom-level (parts) only. Bottom-level components are terminal parts that do not contain other parts or subassemblies. This type of BOM lists all parts in the main assembly, regardless of which component the parts belong to.
-
Hierarchical lists all components. Each component has its subcomponents listed directly below. The serial numbers for subcomponents will be formed as a sequence of numbers separated by dots (for example, "1.2.3"). This type of BOM allows you to see the assemble hierarchy in the Bill of Materials table.
NOTA |
Control which parts are included in a Bill of Material with the BOM status property. The level of a component in a BOM table is set in relation to the BOM status of all related components. For example, a component with its BOM status set to Terminal will always be considered bottom-level, even if it contains other parts or subassemblies. |
Esempio: assemblaggio di un treppiede
Attenuazione |
Distinta dei Materiali |
Livello superiore | ![]() |
Livello inferiore | ![]() |
Gerarchia | ![]() |
Modalità di conteggio
For hierarchical BOM tables, two counting modes are supported:
- Count all instances - for subassemblies and parts, the BOM table will list the total number in the entire assembly.
- Count instances in parent component - for subassemblies and parts, the BOM table will list the total number in the parental component. The parent component is treated as the root component.
For example, the main Tripod assembly contains 3 Tripod foot assemblies. Each instance of a Tripod foot assembly contains 1 Bond assembly and 1 Tube assembly.
If the counting mode is set to Count all instances, the result is:
Bill of Materials Tripod Assembly (count all instances) | ||
No. | Componente | Quantità |
1 | Tripod assembly | 1 |
1.1 | Tripod foot assembly | 3 |
1.1.1 | Bond assembly | 3 |
1.1.2 | Tubes assembly | 3 |
If the counting mode is set to Count instances in parent component, the result is:
Bill of Materials Tripod Assembly (count instances per component) | ||
No. | Componente | Quantità |
1 | Tripod assembly | 1 |
1.1 | Tripod foot assembly | 3 |
1.1.1 | Bond assembly | 1 |
1.1.2 | Tubes assembly | 1 |
From BricsCAD V20.2, the default value for the counting mode is Count instances in parent component. You can change the counting mode via the BOM Manager or with BMBOM command when you add the table.
NOTA |
Before BricsCAD V20.2, all hierarchical BOM tables used Count all instances mode by defualt. When these tables are updated in BricsCAD V20.2 or later, Count instances in parent component mode will become the default. This may result in different quantities for some parts. If necessary, manually change the counting mode with the BOM Manager |
Colonne BOM
By default, the BOM table contains 3 columns; the number, the name and the number of inserts in the assembly.
Use the Configure option of the BmBom command to add more columns; Description, Density, Volume, Mass, Material, Thickness (for sheet metal parts), and Parameters (for parametric components).
It is possible to add any built-in component property, instances and block references to the BOM table. Custom formula fields are also supported. This is because BOM tables are based on DataExtraction technology.
BOM con densità, volume e massa
Multiple inserts of the same parametric component are grouped in separate BOM rows dependant on value.
Colonne visibili e invisibili
It is possible to make any column in the BOM table invisible. Invisible columns will not appear in the table in the document. However, you still can use these columns in formulas. Invisible columns will also be displayed in the BOM Manager.
Property sets
You can list properties of mechanical components and the properties of entities, e.g. block references in BOM tables. This is because BOM tables use DataExtraction technology. However, these properties are not always necessary. In large assemblies, these properties could affect performance negatively. This is because BricsCAD caches properties during BOM table creation.
Property sets are built-in sets of properties. You can choose the most optimal set of properties for your needs. Currently, the following property sets are supported:
- Mechanical only - only properties of mechanical components will be listed. Default property set.
- All except coordinates - lists all properties of components except coordinate ones. Coordinate properties are typically used only for component instances. They may take significant time to compute.
- All properties - lists all possible properties of components and component instances.
You may change the property set for a BOM table in the BOM Manager or use BMBOM when you add a new table.
Filter a BOM table
It is possible to filter parts that will form the Bill of Material. 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 those parts that have passed the filter will be 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 create a filter to filter out all parts with a quantity greater than 1.
Descrizione della sintassi:
Operatori relazionali:
Operatore | Significato |
== | uguale a |
!= | non uguale a |
< | meno di |
> | maggiore di |
<= | minore o uguale a |
>= | maggiore o uguale a |
- Property names should be enclosed in quotes.
- Relational operators could be combined using 'and' and 'or' operators. Operator 'and' will result in 'true' if both sides of the operator are true. Operator 'or' will result 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.
For example, to get a BOM of all standard parts, you may use the following expression:
"Is standard"=="Yes"
To get a BOM of all ISO standard parts, use the following expression:
"Is standard"=="Yes" and "Part standard"=="ISO"
And 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")
Sort a BOM table
There are three sorting modes for BOM tables:
- Automatic order - the table content will be sorted in order: component name, physical material name, thickness (if applicable), parameters (in alphabetic order) and finally, quantity.
- Natural order - the table content will not be sorted. Instead, all components will be placed in the order of their appearance in the document. In most cases, parts added earlier will proceed parts added later.
- Custom order - the table content is sorted according to the columns you select. If no columns are specified, the natural order is used.
Campi formula
A Bill of Materials supports formula fields. The same syntax is used in the DataExtraction command. FormulaExpression is the expression in the format of \AcExpr formula fields. This can contain constants such as PI or functions such as SIN (see Use Expressions). An operand in an expression can be a ColumnTitle enclosed in arrow brackets (<>).
For instance, formula =<Mass>/<Volume> calculates the average density of the component.
Currently, a formula cannot refer to other formula columns. All columns referred to in the formula must be present in the table. You can still use columns displayed as invisible in the BOM table in formula expressions.
For distance, area, volume and mass properties, the values will be converted to the user-defined unit before substituting to the formula expression. If the user-defined unit is not set, then the document unit will be used. For mass property, kilogram will be used for metric documents and lbs (pound) will be used for imperial documents.
Unità Colonne
You can adjust the units placement mode for columns that have associated units. The following options are available:
- Don't show units - the BOM table will not display units for this column
-
In column title - if all values in the table have the same unit or may be converted to a common unit, all values will be converted to that common unit. The unit name will be added to the column title. The common unit will be picked in the following order:
- A unit set by you.
- If the property is distance, area, volume or mass, and the unit mode is Best for all values, the best representation for the majority of values is used.
- If all values have the same unit, this will be used.
- In cell - the unit name will be added to the value. Value and unit will be displayed in the same cell.
- In additional column - the unit name will be placed in its own column.
You can set the Unit mode for distance, area, volume and mass to define the units used to display a particular value. For example, if there are masses from 1 gram to several tons, choose Best for each value to display each mass converted to the most suitable mass unit. To see all masses in kilograms, set kilograms as the user-defined unit for the column. Best for all values is the default.
Units mode options:
- Don't show units - units are not displayed
- Best for all values - the unit with the best representation for the majority of the values is displayed.
- User-defined - you choose the unit to display.
- Best for each value - the unit most suitable for each value is displayed. The In column title mode of the Unit placement will automatically switch to In additional column mode.
NOTA |
If the user-defined unit is set for a column and this column is used in a formula field, then the values converted to that unit will be substituted in the formula. Otherwise, the document unit will be used. |
Piè di pagina
The Bill of Materials table supports a footer. To define which columns will form the footer set the Footer type for the required columns:
- No footer - the column will not be included in the footer row.
-
Sum - the sum of all values for each individual component instance will display in the footer.
Note this not normally the equivalent of the sum of all values displayed in the table. This is because the number of each component is used. For formula fields, the sum of values for Quantity=1 will be used. - Average - the average value, of all values, for each individual component, is displayed in the footer. For formula fields, the sum of values for Quantity=1 will be used.
- Minimal - the minimal value of all values for each individual component is displayed in the footer. For formula fields, the sum of values for Quantity=1 will be used.
- Maximal - the maximal value of all values for each individual component is displayed in the footer. For formula fields, the sum of values for Quantity=1 will be used.
If all columns have the footer type No footer, the footer row will not display.
Modelli
You can save a BOM configuration as a template and create new BOM tables with this template. The template file contains all necessary data. It includes table type, title, filter and set of columns with all the associated properties. You can use <NAME> in the title as a placeholder for the actual name of the assembly. For example, if your assembly name is My Assembly and the title of the BOM is specified as Bill of Materials for <NAME>, the displayed title of the BOM will be Bill of Materials for My Assembly, as My Assembly will be substituted for <NAME> in the title.
By default, BOM template files have a .BOM extension.
A BOM template file is an extension of the Data Extraction Definition file (.dxd). However, you cannot use a .dxd file as a BOM template. This is because some BOM-specific data will be absent. You can not use a .BOM file to define a DataExtraction template.
You can edit template files in any text editor. However, Bricsys recommends that you use the BMBOM command or the Bills of Materials Panel to create and edit template files.
Stato BOM
Each component has a BOM status property. You can use this to control the behavior of the component in Bill of Materials tables. This property may take one of the following values:
-
Regular - the component will appear in a Bill of Materials at the same position as the assembly structure and the default value of the selected mode for a Bill of Materials.
-
Transparent - the component acts as a transparent container for its subcomponents. The component will not appear in the Bill of Material but subcomponents may appear in the BOM. This will depend on their BOM status, position in the assembly structure and the mode of the BOM table.
-
Terminal - the component will be treated as a leaf component (has no subcomponents). This is useful for complex parts or standard components.
-
Excluded - the component and its subcomponents will not appear in the Bill of Materials.
To set the BOM Status of an external or root component
-
Open the file that contains the component.
-
Selezionare il nodo principale nel Navigatore Meccanico.
-
Set the BOM status property.
To set the BOM Status of a local component
-
Select the component in the Mechanical Browser.
-
Right-click on the selected node to open the context menu.
-
Select a BOM status from the BOM Status submenu.
NOTA |
It is not possible to set the BOM status via the context menu for local components that are inserted into an external component. To do this you must open the component that contains the local component. |