PDM-UG: Explicit Assembly Bill Of Material
From WikiSTEP
This page belongs to the PDM Usage Guide.
The STEP PDM Schema supports explicit hierarchical assembly structures representing assemblies and the constituents of those assemblies. A constituent of an assembly may itself also be an assembly (a subassembly), which in turn is made up of constituents. Detail components make up the leaves of these hierarchical part structures. This explicit part structure corresponds to the traditional engineering and manufacturing bill of material parts list.
Each individual node in this hierarchy is represented by a part master identification. The relationships are made between product_definition entities representing a view definition of the part master. The relationship itself represents the usage occurrence of a constituent definition within the immediate parent assembly definition. In the simplest form, this structure corresponds to a basic indentured parts list (see Figure 2).

Each node in the assembly structure breakdown is a part master identification, representing the definitional template for the part. The nodes in the product structure each have a corresponding entry in the part list, with indenture level corresponding to depth in the structure.
Contents |
The Instance Model: EXPRESS entities and attributes
The EXPRESS entities and attributes used to support the requirements of basic explicit assembly structure are shown in Diagram 20.

Assembly component usage
This entity represents the general relationship between two part master identifications, one a definition of a component and the other a definition of the parent assembly. This entity is normally not recommended to be instantiated as itself, but is typically instantiated as the subtype next_assembly_usage_occurrence. This subtype represents a unique individual occurrence of the component definition as used within the parent assembly. The assembly_component_usage is only instantiated as itself if there is an explicit requirement to represent the general relationship between a component and an assembly definition.
Attributes
- The id attribute provides a unique identifier for the relationship.
- The name attribute provides a general nomenclature for the relationship.
- The description attribute allows for additional text that further may describe the relationship.
- The relating_product_definition attribute is a reference to the parent assembly.
- The related_product_definition attribute is a reference to the constituent of the assembly.
- The reference_designator attribute is optional.
| ENTITY assembly_component_usage | Attribute Population | Remarks |
| id | type : identifier = string | Should be unique in combination with a given relating (parent) and related (child) product_definition. |
| name | type : label = string | |
| description | type : text = string | OPTIONAL |
| relating_product_definition | type : entity = product_definition | reference to assembly |
| related_product_definition | type : entity = product_definition | reference to component |
| reference_designator | type : identifier = string | OPTIONAL |
===Preprocessor Recommendations=== No cyclic product_definiton_relationship structures may be defined. The value of the id attribute must be unique in combination with the same relating assembly and related component definitions. It is generally recommended that only subtypes of assembly_component_usage be instantiated. It is not recommended to instantiate the optional reference_designator attribute for an instance of assembly_component_usage. In an assembly_component_usage, the attribute reference_designator may be instantiated with a string of reference designators used for that component in the assembly. If information on the assembly type is to be represented, then the name attribute of the product_definition referenced via relating_product_definition should be used. Examples of such type information are 'functional assembly', 'manufacturing assembly', and 'design assembly'.
===Postprocessor Recommendations=== When importing an instance of assembly_component_usage as itself, postprocessors should interpret this as representing the general assembly-component relationship.
===Related Entities=== None specified.
Next assembly usage occurrence
This entity is a subtype of assembly_component_usage. It represents a single individual occurrence of a component definition as used in an immediate next higher parent assembly. The id attribute contains a unique instance identifier for the individual component occurrence.
===Preprocessor Recommendations=== No cyclic product_definiton_relationship structures may be defined. The value of the id attribute must be unique between the same assembly and component definitions. The name attribute may be used to record the item find number corresponding to the particular instance of the component as called out on an engineering drawing. It is recommended the description attribute contain an instance display name label for the usage occurrence, if one exists. The reference designator attribute is optional: it may be used to represent a positional designation for the component within the assembly.
For AP214 compatibility, preprocessors may generate an instance of product_definition_context_association to relate a product_definition representing an assembly to a product_definition_context named ‘assemblydefinition’. The presence of such an additional context named ‘assembly definition’ indicates that the product_definition has component structure provided beneath it within the STEP exchange file, i.e., it is referenced as relating in an assembly_component_usage relationship.
NOTE - this information is inherent in the exchange file – in general it may be obtained by simply traversing the product structure provided in the file.
===Postprocessor Recommendations=== When importing an instance of next_assembly_usage_occurrence as itself, postprocessors should interpret this to represent a single individual usage occurrence of the component definition within the parent assembly definition.
===Related Entities=== None specified.
The Instance Model: STEP exchange file format (ISO10303 Part 21 syntax)
/* primary application context and life cycle stage */
#10 = APPLICATION_CONTEXT('mechanical design');
#220 = PRODUCT_CONTEXT(, #10, );
#230 = PRODUCT_DEFINITION_CONTEXT('part definition', #10, 'design');
/* optional AP214 specific characterization for assembly definition */
#340 = PRODUCT_DEFINITION_CONTEXT_ROLE('part definition type', $);
#350 = PRODUCT_DEFINITION_CONTEXT('assembly definition', #10, );
#520 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#460, #350, #340);
/* type discriminator for part as product */
#100 = PRODUCT_RELATED_PRODUCT_CATEGORY('part', $, (#380, #440));
/* part master for component definition */
#360 = PRODUCT_RELATED_PRODUCT_CATEGORY('detail', $, (#380));
#380 = PRODUCT('g1', 'gasket', $, (#220));
#390 = PRODUCT_DEFINITION_FORMATION('A',,#380);
#400 = PRODUCT_DEFINITION('gv1', 'design view on gasket', #390, #230);
/* part master for assembly definition */
#420 = PRODUCT_RELATED_PRODUCT_CATEGORY('assembly', $, (#440));
#440 = PRODUCT('s1', 'sleeve assembly', $, (#220));
#450 = PRODUCT_DEFINITION_FORMATION('A',,#440);
#460 = PRODUCT_DEFINITION('sv1', 'design view on sleeve assembly', #450, #230);
/* single usage occurrence of component defn within assembly defn */
#530 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('gu1', 'single instance usage',
'gasket usage 1', #460, #400, $);

