PDM-UG: Multi-Level Assembly Digital Mock Up
From WikiSTEP
This page belongs to the PDM Usage Guide.
STEP has the capability to identify individual occurrences of component in a multi-level assembly (see Multiple Individual Component Occurrences). This provides the ability to assign to each occurrence an identifier, a position in the assembly, a geometrical representation, or other properties that may be different from that assigned to the part definition of the component.
In order to distinguish a specific occurrence of a component in an assembly of more than two hierarchical levels, the specified_higher_usage_occurrence entity is used. For example, a wheel-axle subassembly is composed of an axle and two wheels, the right and the left. A higher-level chassis assembly is in turn composed of two wheel-axle subassemblies, the front and the back. The requirement to individually identify the left-front wheel, for example, is supported by this capability.
From the previous wheel-axle-chassis example, an instance of specified_higher_usage_occurrence is used to represent the left-front wheel. The related_product_definition attribute references the product_definition that represents the part definition of the component wheel. The relating_product_definition attribute references the product_definition representing the definition of the higher-level chassis assembly. The attribute next_usage is a reference to the next_assembly_usage_occurrence that represents the left wheel occurrence in the wheel-axle subassembly. The attribute upper_usage is a reference to the next_assembly_usage_occurrence representing the front occurrence of the wheel-axle subassembly within the higher-level chassis assembly.
This structure corresponds to an indentured parts list with associated part quantity values and individual identification of the specific component occurrences used within a multi-level assembly (see Figure 6).

In Figure 6, the specific higher usage cu-1 of the cylinder (c-1 in a sleeve subassembly) within the rear sleeve (su-1 in a hub assembly) of the higher-level hub assembly is illustrated. Also illustrated is the right gasket (gu2 within a sleeve subassembly) within the front sleeve (su-2 within a hub assembly) of the higher-level hub assembly, individually identified as gu-2b. Each specified higher usage occurrence of the gasket, as well as that of the cylinder, would be individually identified using the same mechanism as illustrated for the rear cylinder and the front right gasket.
Contents |
The Instance Model: EXPRESS entities and attributes
The EXPRESS entities and attributes used to support the requirements of explicit multi-level assemblies and digital mockup are illustrated in Diagram 24.

Specified higher usage occurrence
This entity is a subtype of assembly_component_usage. This entity represents the specific use occurrence within a higher-level assembly of an individual occurrence of a component definition used in an immediate parent sub-assembly.
EXAMPLE - a wheel-axle subassembly is composed of an axle and two wheels, the right and the left. A higher-level chassis assembly is in turn composed of two wheel-axle subassemblies, the front and the back. One specific higher usage of the left wheel occurrence within the higher-level chassis assembly is in the front wheel-axle subassembly (other is in the rear). The specified_higher_usage_occurrence entity represents the individually identified left-front wheel. A second instance of this entity could represent another specified higher usage occurrence of the wheel, for example left rear or right front.
In addition to inherited attributes, this entity defines the attributes next_usage and upper_usage to relate a single usage occurrence at one level in the assembly hierarchy (the next_usage) to a single usage occurrence at the next higher level in the assembly (the upper usage).
In the case of a specified usage occurrence at more than one higher level in the assembly hierarchy, the upper_usage attribute will reference the specified_higher_usage instance representing the specified occurrence at the higher level. In this way, instances of specified_higher_usage_occurrence are "chained" together to identify specific occurrences of components in an assembly hierarchy with an arbitrary number of levels.
Attributes
- The next_usage attribute identifies the single usage occurrence at a given level in the hierarchy.
- The upper_usage attribute identifies the specific higher usage occurrence one level up in the hierarchy.
| ENTITY specified_higher_usage_occurrence | Attribute Population | Remarks |
| id | see supertype | |
| name | see supertype | |
| description | see supertype | OPTIONAL |
| relating_product_definition | see supertype | |
| related_product_definition | see supertype | |
| reference_designator | see supertype | OPTIONAL |
| next_usage | type : entity = next_assembly_usage_occurrence | |
| upper_usage | Type : entity = assembly_component_usage (next_assembly_usage_occurrence OR specified_higher_usage_occurrence) | References specified_higher_usage_occurrence in the case of a specified usage at more than one higher level in the hierarchy |
===Preprocessor Recommendations=== This entity should be instantiated once for each specific use in a higher-level assembly of an individual occurrence of a component definition used in a parent assembly. The value of the attribute id must be unique for each instance. The description attribute may contain a unique display name for presentation of the assembly structure.
===Postprocessor Recommendations=== None specified.
===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 definitions */
#340 = PRODUCT_DEFINITION_CONTEXT_ROLE('part definition type', $);
#350 = PRODUCT_DEFINITION_CONTEXT('assembly definition', #10, '');
#520 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#460, #350, #340);
#530 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#660, #350, #340);
/* type discriminator for part as product */
#100 = PRODUCT_RELATED_PRODUCT_CATEGORY('part', $, (#380, #680, #440, #640));
/* part master for component definitions */
#360 = PRODUCT_RELATED_PRODUCT_CATEGORY('detail', $, (#380, #680));
#380 = PRODUCT('g1', 'gasket', $, (#220));
#390 = PRODUCT_DEFINITION_FORMATION('A','',#380);
#400 = PRODUCT_DEFINITION('gv1', 'design view on gasket', #390, #230);
#680 = PRODUCT('c1', 'cylinder', $, (#220));
#690 = PRODUCT_DEFINITION_FORMATION('A','',#680);
#700 = PRODUCT_DEFINITION('cv1', 'design view on cylinder', #690, #230);
/* part master for sub-assemly definition */
#420 = PRODUCT_RELATED_PRODUCT_CATEGORY('assembly', $, (#440, #640));
#440 = PRODUCT('s1', 'sleeve assembly', $, (#220));
#450 = PRODUCT_DEFINITION_FORMATION('A','',#440);
#460 = PRODUCT_DEFINITION('sv1', 'design view on sleeve assembly', #450, #230);
/* part master for higher level hub assembly definition */
#640 = PRODUCT('h1', 'hub assembly', $, (#220));
#650 = PRODUCT_DEFINITION_FORMATION('A','',#640);
#660 = PRODUCT_DEFINITION('hv1', 'design view on hub assembly', #650, #230);
/* single occurrence of component (cylinder) in subassembly defn */
#520 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('cu-1', 'single instance usage',
'cu1', #460, #700, $);
/* multiple single occurrences of component (gasket) in subassembly */
/* the left gasket in a sleeve subassembly */
#530 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('gu-1', 'single instance usage',
'gu1 left', #460, #400, $);
/* the right gasket in a sleeve subassembly */
#540 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('gu-2', 'single instance usage',
'gu2 right', #460, #400, $);
/* multiple single occurrences of subassembly defn in assembly defn */
/* the rear sleeve subassembly in a hub assembly */
#550 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('su-1', 'single instance usage',
'su1 rear', #660, #460, $);
/* the front sleeve subassembly in a hub assembly */
#560 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('su-2', 'single instance usage',
'su2 front', #660, #460, $);
/* specified usage of individual components in higher level assembly */
/* the right gasket in the front sleeve subassembly */
#570 = SPECIFIED_HIGHER_USAGE_OCCURRENCE('gu-2b', 'single instance usage', 'gu2b front right', #660, #400, $, #560, #540);
/* the cylinder in the rear sleeve subassembly */
#580 = SPECIFIED_HIGHER_USAGE_OCCURRENCE('cu-1', 'single instance usage', 'cu1 rear', #660, #700, $, #550, #520);