How to Create a Custom Standard Part in BricsCAD Mechanical
Quick answer: -BMHARDWARE creates custom standard parts across several categories (Pipe, Cross, Tee, and more), confirming the standard parts concept covered on this hub’s bottom-up and top-down assembly design page. Its Custom option lets you select one or more TXT files, each containing mandatory creation parameters, optional creation parameters, and a configuration table.
General File Structure and Rules
Lines starting with a semicolon (;) are ignored as comments. Every creation parameter line follows this format:
PARAMETER_NAME: "parameter_value"
Mandatory Creation Parameters
Without these, the part simply won’t create:
- NAME: the created part’s name.
- CATEGORY: the part’s category (English names required, categories listed below).
- PATH: the part’s path in the Library panel (separate folders with semicolons,
"Piping;Elbows"places it at Standard Parts > Piping > Elbows > [the STANDARD value]). - STANDARD: the standard family (ASME, ANSI, DIN, ISO, and so on), not a specific standard like ASME B16.5 or DIN EN 1092-1.
- DESCRIPTION: the part’s description.
Optional Creation Parameters
- EXPOSED_PARAMETERS: space-separated list of table parameters accessible to users of the part.
- INITIAL_VALUE: the key value used when the part is dragged from the library (defaults to the table’s first row if omitted).
- MATERIAL: the part’s material (must exist in the material library).
- CUSTOM_PARAMETERS: parameters with any value, not determined by the table (pipe length, for example).
- KEY_PARAMETER: the parameter used as the table’s key (defaults to the first column if omitted).
- LENGTH_MEASUREMENT_TYPE_PARAMETERS, AREA_MEASUREMENT_TYPE_PARAMETERS, VOLUME_MEASUREMENT_TYPE_PARAMETERS, UNKNOWN_MEASUREMENT_TYPE_PARAMETERS: parameters that convert appropriately (length, area, or volume) when a part inserts into a document using different units. Length is the default type.
The Configuration Table
Mandatory: geometrical parameters (varying by category, detailed below), a key parameter (uniquely identifying each configuration), and a unit parameter (IN for inches, MM for millimeters). Any number of additional parameters can follow.
String parameters go inside quotation marks; if a quotation mark is part of the value itself, escape it with a backslash, for example "1/2\" X 1/2\" SCH 5" is recognized as 1/2" X 1/2" SCH 5.
Building and Using the File
- Build a table from the relevant standard’s values, including key values and geometrical parameters, plus a units column and any custom parameter columns you need.
- Convert the table to text format (CSV, for example), using a space as the separator and double quotation marks around text values.
- Copy that content into a TXT file, or simply rename the CSV file’s extension to
.txt. - Add every mandatory (and any needed optional) creation parameter to the beginning of the file.
- The file is ready to use.
To create the part from your finished TXT file:
- In any drawing, run
-BMHARDWAREand choose the create Custom option. - In the Select configuration table file dialog, choose your TXT file (or files).
- BricsCAD creates the new standard part: opening a new drawing with the correct units, creating components with properties matching the TXT file, saving the part to the right location, and generating thumbnails for the library.
Worked Example: A Sample Elbow
; Mandatory creation parameters
NAME: "Sample elbow"
CATEGORY: "Elbow"
PATH: "Piping;Elbows"
STANDARD: "Sample standard"
DESCRIPTION: "Sample description"
; Optional creation parameters
EXPOSED_PARAMETERS: "PartNumber" "Size" "OuterDiameter" "Thickness" "Schedule"
INITIAL_VALUE: "1/2\" X 0.065\" (SCH 5S)"
LENGTH_MEASUREMENT_TYPE_PARAMETERS: "OuterDiameter" "Thickness"
MATERIAL: "Steel"
; other possible optional parameters
; CUSTOM_PARAMETERS:
; KEY_PARAMETER:
; UNKNOWN_MEASUREMENT_TYPE_PARAMETERS:
; AREA_MEASUREMENT_TYPE_PARAMETERS:
; VOLUME_MEASUREMENT_TYPE_PARAMETERS:
; table
"PartNumber" "Size" "UNIT" "OuterDiameter" "Thickness" "Schedule" "B" "DEG"
"1/2\" X 0.065\" (SCH 5)" "1/2\"" "IN" 0.84 0.065 "SCH 5" 0.62 45.0
"1/2\" X 0.065\" (SCH 5S)" "1/2\"" "IN" 0.84 0.065 "SCH 5S" 0.62 45.0
"1/2\" X 0.083\" (SCH 10)" "1/2\"" "IN" 0.84 0.083 "SCH 10" 0.62 45.0
Transferring Models with Custom Standard Parts
Custom standard part data stores separately from the drawing it’s inserted into. Anyone else working with that model needs the original TXT file too, and needs to run through the same creation steps themselves.
Parts Categories and Geometrical Parameters
Pipe (CATEGORY: "Pipe"), all parameters mandatory: OuterDiameter, Thickness, VAR_LG (initial length).
Cross and Tee (CATEGORY: "Cross" or "Tee"), all parameters mandatory: OuterDiameter (run outer diameter), OuterDiameter_2 (outlet outer diameter), C (run center-to-end distance), M (outlet center-to-end distance), Thickness (run thickness), Thickness_2 (outlet thickness).
Reducer and Eccentric reducer (CATEGORY: "Reducer" or "Eccentric reducer"):
- Mandatory:
OuterDiameter(1st end),OuterDiameter_2(2nd end),Thickness(1st end wall),Thickness_2(2nd end wall),L(overall length). - Optional:
THKNS3(conical part wall thickness, not for eccentric reducers, defaults to the maximum of Thickness and Thickness_2),L1(1st end’s cylindrical part length, defaults to 0.25 × L),L2(2nd end’s cylindrical part length, defaults to 0.25 × L).
Elbow (CATEGORY: "Elbow"), all parameters mandatory: OuterDiameter, Thickness, B (center-to-end distance), DEG (angle in degrees).
Flange (CATEGORY: "Flange"):
Mandatory parameters: OD (outer diameter); ID (bore diameter, omit or set to 0 for BLIND type); FLANGE_THK (thickness, excluding face height); BoltCircleDiameter; BoltsNumber; HOLE_D; BoltDiameter; OuterDiameter (pipe); GasketThickness (omit if face type is ASME_RING_JOINT); DistanceBetweenFlanges (omit unless face type is ASME_RING_JOINT).
FLANGE_TYPE (must be the same value across every row):
| Type | Description | Extra mandatory parameters |
|---|---|---|
| BLIND | No bore, no raised hub part, no pipe connection | |
| PLATE | No raised hub part, pipe inserted into the bore | |
| CYL_RAISE_HUB_PIPE_INS_INTO_BORE | Cylindrical raised hub, pipe inserted into the bore | HUB_OD, HUB_L |
| CYL_RAISE_HUB_PIPE_CONN_TO_HUB | Cylindrical raised hub, pipe connected to the hub | HUB_OD, HUB_L |
| CYL_RAISE_HUB_WITH_SOCKET | Cylindrical raised hub with a socket, pipe inserted into the socket | HUB_OD, HUB_L, SOCKET_OD, SOCKET_DEPTH |
| CON_RAISE_HUB_PIPE_INS_INTO_BORE | Conical raised hub, pipe inserted into the bore | HUB_RAISE_BOTTOM_OD, HUB_RAISE_TOP_OD, HUB_L |
| CON_RAISE_HUB_PIPE_CONN_TO_HUB | Conical raised hub, pipe connected to the hub | HUB_RAISE_BOTTOM_OD, HUB_RAISE_TOP_OD, HUB_L |
| CON_CYL_RAISE_HUB_PIPE_CONN_TO_HUB | Conical part at the bottom, cylindrical part at the top, pipe connected to the hub | HUB_OD, HUB_L, HUB_CYL_PART_OD, HUB_CYL_PART_L |
FACE_TYPE (must be the same value across every row; the reference face for measuring GasketThickness or DistanceBetweenFlanges along the Z-axis varies by type):
| Type | Extra mandatory parameters |
|---|---|
| FLAT | none |
| RAISED | RAISE_OD, RAISE_H |
| TONGUE | TONGUE_ID, TONGUE_OD, TONGUE_H, FF_DEPTH |
| FEMALE | TONGUE_ID, TONGUE_OD, TONGUE_H, FF_DEPTH |
| FLAT_WITH_GROOVE | GROOVE_ID, GROOVE_OD, GROOVE_DEPTH |
| GROOVE | RAISE_OD, RAISE_H, GROOVE_ID, GROOVE_OD |
| ASME_RING_JOINT | RAISE_OD, RAISE_H, GROOVE_CENTER_D, GROOVE_TOP_WIDTH |
| DIN_O-RING_GROOVE | RAISE_OD, RAISE_H, GROOVE_OD, GROOVE_DEPTH, GROOVE_SLOPE_ANGLE |
Optional flange parameters: Thickness (pipe thickness); Gap (Z-axis distance from the bore’s highest point, or the socket’s bottom, to the pipe connection point, defaults to 0, omit for other connection types); IS_CUSTOM_PIPE_THK_ALLOWED (nonzero enables custom Thickness values, currently only functional for CON_RAISE_HUB_PIPE_CONN_TO_HUB when HUB_RAISE_TOP_OD equals OuterDiameter, defaults to 0).
Gasket (CATEGORY: "Gasket"):
| Type | Standard | Parameters |
|---|---|---|
| MULTIRING | One or more rectangular-profile rings; ring thickness H(i), bounding diameters D(i-1)/D(i); GasketThickness serves as a fallback for any ring without its own H set (H can’t exceed GasketThickness) | |
| FLATFACE | GasketID, GasketOD, GasketThickness | |
| OVAL | GasketDiameter (pitch diameter), GasketWidth, GasketThickness (Width can be greater than, less than, or equal to Thickness, as in ASME B16.20 Jacketed/Oval or AS 2129 O-Ring) | |
| OCTAGONAL_R | ASME B16.20 Type R | WIDTH_A, HEIGHT_H, EDGE_C, PITCH_DIAMETER_P, ANGLE_R1 |
| OCTAGONAL_RX | ASME B16.20 Type RX | WIDTH_A, EDGE_C, OUT_BEVEL_D, HEIGHT_H, OUT_DIAMETER_OD, ANGLE_R1 |
| OCTAGONAL_BX | ASME B16.20 Type BX | WIDTH_A, EDGE_C, HEIGHT_H, OUT_DIAMETER_OD, OUT_FLAT_DIAMETER_ODT, ANGLE_R1 |
| JACKET_A | DIN EN 1514-3 Type A | GasketID, JacketOD, GasketOD, JacketThickness, GasketThickness (whole gasket: core plus both jacket layers), JacketTail, Angle |
| JACKET_C | DIN EN 1514-3 Type C | GasketID, JacketOD, GasketOD, JacketThickness, GasketThickness |
To add bolt holes to a gasket (an ASME B16.21 FullFace gasket, for example): N_HOLES, HOLE_D, HOLES_CRCL_D.
Frequently Asked Questions
What happens to another user’s model if I share it with them and it contains custom standard parts? They also need the original TXT file the parts were created from, and need to run through the same creation steps themselves, since the data stores separately from the drawing.
Can I set a custom initial pipe thickness on a flange? Only for the CON_RAISE_HUB_PIPE_CONN_TO_HUB flange type, and only when HUB_RAISE_TOP_OD equals OuterDiameter, set IS_CUSTOM_PIPE_THK_ALLOWED to a nonzero value to enable it.
How do I escape a literal quotation mark inside a string parameter value? Place a backslash before it, "1/2\" X 1/2\" SCH 5" is recognized as 1/2" X 1/2" SCH 5.
Which parameters are required for every gasket type, regardless of shape? None universally, each gasket type (MULTIRING, FLATFACE, OVAL, and so on) has its own distinct set of required parameters.