An engineering Bill of Materials (BOM) is a list of unique mechanical components used in a drawing. Normally, the list is represented as a BricsCAD 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 the number of occurrences. It is also possible to view and configure Bills of Materials using the Bills of Materials Panel in BricsCAD.
Bill of Materials types
There are three different ways to list a Bill of Materials in BricsCAD. The difference between these is the way in which 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 what component the parts belong to.
Hierarchical lists all components. Each component has its subcomponents listed directly below. In the hierarchical mode. 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 Material table.
It is possible to control which parts are included in the Bill of Material using the BOM status property. The level of a component is deduced in a BOM table with respect 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.
Example: Tripod assembly
Bill of Material
By default, the BOM table contains only three 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 inserts of parametric components).
BOM tables are based on the DataExtraction technology; therefore, it is possible to add any built-in property of components, instances and corresponding block references to the BOM table. Custom formula fields are also supported.
BOM with Density, Volume, and Mass.
Multiple inserts of the same parametric component are grouped in separate BOM rows dependant on the values of their parameters.
Filter a BOM table
It is possible to filter parts that will form the Bill of Material. Filter in the same way as the DataExtraction command: First, all parts in the assembly of 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 filtering expression may not refer to BOM columns and must refer to instance properties because filtering happens before the BOM actually formed. 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.
The filter expression for a BOM should follow the same syntax as the filter in .dxd files (see Edit Data Extraction Definition (.dxd) Files for more details).
|!=||not equal to|
|<=||less than or equal to|
|>=||greater than or equal to|
- Relational expressions are enclosed in '()' brackets.
- Logical operators AND and OR are case-insensitive and enclosed in '<>' brackets.
- Logical expressions use a prefix notation.
- No spaces are allowed between '<' and a logical operator ('<OR', '<AND')
- Tokens can be separated by zero or any number of spaces, except a logical expression beginning,
<AND ( Layer == "MyLayer" )(Thickness<=3) >
- Expressions can be split into any number of lines; tokens are not broken.
- Lines can be commented with ';' .
- String values are enclosed in double quotation marks ""
For example, to get a BOM of all standard parts, you may use the following expression:
To get a BOM of all ISO standard parts, use the following expression:
<AND (Is standard=="Yes") (Part standard=="ISO")>
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 then by quantity.
- Natural order - the table content will not be sorted. Instead, all components will be placed in order of their appearance in the document. In most cases, it means that parts added earlier will proceed parts added later.
- Custom order - the table content is sorted according to columns specified by the user. If no columns are specified, the natural order will be used.
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.
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:
- If the user unit is specified, it will be used
- If the corresponding property is distance, area, volume or mass, and the unit mode is Best for all values, then the unit that will provide the best representation for most values will be 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 the additional column after the corresponding column.
You can specify the Unit mode for distance, area, volume and mass. This defines the units used to display a particular value. For example, if there are masses from 1 gram to several tons, choose the Best for each value mode to display each mass converted to the most suitable mass unit. To see all masses in kilograms regardless, you may specify kilograms as the user-defined unit for the column. By default, the Best for all values mode is used.
Units mode options:
- Don't show units - the 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. If this mode is selected, the In column title mode of the Unit placement will automatically switch to In additional column mode.
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.
The Bill of Materials table supports a footer. You can define which columns will form the footer by setting 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 be displayed in the footer. Note that generally, it is not the equivalent of the sum of all values displayed in the table, as the count of each component instances will be taken into account as well. For formula fields, the sum of values for Quantity=1 will be used.
- Average - the average value of all values for each individual component instance will be 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 instance will be 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 instance will be displayed in the footer. For formula fields, the sum of values for Quantity=1 will be used.
If there is no column with a footer type other than No footer, the footer row will not display.
It is possible to save the BOM configuration as a template and create new BOM tables using this template. The template file contains all necessary data, including table type, title, filter and set of columns with all associated properties. In order to adapt the title from the template, it is possible to 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 .BOM extension.
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 missing. Similarly, the .BOM file cannot be used to define a DataExtraction template.
Each component has a BOM status property, which can be used 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 the Bill of Materials with respect to its position in the assembly structure and the selected mode for the Bill of Materials - default value.
Transparent - the component itself will not appear in the Bill of Material, but their subcomponents may appear in the BOM, depending on their BOM status, positions in the assembly structure and the mode of the BOM table. Effectively, it means that the component acts as a transparent container for its subcomponents.
Terminal - the component will be treated as a leaf component (that is, it has no subcomponents) regardless of the actual presence of the subcomponents. This is useful when for complex parts or standard components.
Excluded - neither the component itself nor its subcomponents will appear in the Bill of Materials.
To set the BOM Status of an external or root component
Open the file that contains the component.
Select the root component in the Mechanical Browser.
Set the BOM status property to the required value.
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 the required BOM status from the BOM Status submenu.
For local components inserted into an external component, it is not possible to set the BOM status via the context menu. To do that you must open the component that directly contains the required local component.