GD&T: Implementation Guidelines For GD&T Representation
From WikiSTEP
Defining the Dimensioning Standard
Different dimensioning standards define the visual representation and interpretation of the symbology of the tolerances. In order for the receiving system to create the correct visual representation of the tolerance, the dimensioning standard must be known. This information is captured as an applied_document_reference which applies the referenced document, i.e., the dimensioning standard, to the product_definition of the part. This is shown in Figure 10.
Figure 10. Choice of Dimensioning Standard
The following standard strings may be used for the document identifier:
“ASME Y14.41-2003�
“ASME Y14.5M-1994�
“ISO 1101:2004�
Per the tolerancing harmonization project, the object role for the document has the string value of 'dimensioning standard'.
#218=OBJECT_ROLE('#218','dimensioning standard');
#219=DOCUMENT_TYPE('Standards Document');
#220=DOCUMENT('ASME Y14.5M-1994','Geometric Tolerancing Standard','Geometric Tolerancing Standard',#219);
#221=ROLE_ASSOCIATION(#218,#220);
#222=APPLIED_DOCUMENT_REFERENCE(#220,'Standards Body',(#167));
Associating tolerances with Features
In STEP, the tolerance entities are associated with a shape_aspect that identifies the toleranced feature. The feature is identified by a shape_aspect which has a representation. In the case of a solid boundary representation model, the feature of the part is represented by one or more topological_representation_items such as advanced_face entities. For example, a through hole in a solid model might be represented by two semi-circular surfaces, each an advanced_face entity. These topological_representation_items are collected together by a shape_representation which is representation of the shape_aspect for the feature. This shape_representation shall share the same geometric_representation_context as the solid. See Figure 11 for an example of how the tolerance entities are related to the shape elements of the toleranced feature.
Figure 11. Defining Toleranced Features using Shape_Aspect
Part 21 Example
#187=ADVANCED_FACE('feature face',(#181),#186,.T.);
#252=PRODUCT_DEFINITION_SHAPE('',$,#17);
#315=SHAPE_ASPECT('',$,#252,.T.);
#316=PROPERTY_DEFINITION('',$,#315);
#317=SHAPE_REPRESENTATION('',(#187),#246);
#318=SHAPE_DEFINITION_REPRESENTATION(#316,#317);
#320=FLATNESS_TOLERANCE('#320','flatness tolerance',#319,#315);
Associating tolerances with Multiple Features
There are many cases where a Tolerance or Datum needs to be associated with more than one feature, for example, when a face based on the datum geometry has been split by a slot or other feature. In these cases, the associated features are combined under a Composite_Shape_Aspect. Figure 12 shows the STEP Entities required to implement this functionality. In order to distinguish this case from the Pattern of Features case (see below), the name attribute of the composite_shape_aspect shall be set to the string 'multiple elements'.
Figure 12. Multiple Feature Construct
Part 21 Example
#10341=PRODUCT_DEFINITION_SHAPE('',$,#17);
#10396=SHAPE_ASPECT('',$,#10341,.T.);
#10397=PROPERTY_DEFINITION('',$,#10396);
#10398=SHAPE_REPRESENTATION('',(#5423),#10335);
#10399=SHAPE_DEFINITION_REPRESENTATION(#10397,#10398);
#10400=SHAPE_ASPECT('',$,#10341,.T.);
#10401=PROPERTY_DEFINITION('',$,#10400);
#10402=SHAPE_REPRESENTATION('',(#5411),#10335);
#10403=SHAPE_DEFINITION_REPRESENTATION(#10401,#10402);
#10404=COMPOSITE_SHAPE_ASPECT('multiple elements',$,#10341,.T.);
#10405=SHAPE_ASPECT_RELATIONSHIP('',$,#10404,#10396);
#10406=SHAPE_ASPECT_RELATIONSHIP('',$,#10404,#10400);
Associating tolerances with a Pattern of Features
One of the uses of the Multiple Feature construct is allowing the exchange of Tolerances applied to a pattern of features. In order to differentiate this from the normal case, the string “pattern of features� is used to populate the composite_shape_aspect.name attribute. e.g.
#299=COMPOSITE_SHAPE_ASPECT('pattern of features',$,#246,.T.);
Implementing DATUMS in a STEP File
This section of the document deals with the implementation of Datums for geometric tolerancing in the STEP File. For a description of the meaning of Datums in the context of tolerancing see Datum Systems.
In STEP, a Datum is a specialisation of the Shape_Aspect entity. It needs to define the geometric portion of the datum; the 'theoretically exact' geometric reference, as well as to attach to the feature of the model which represents the datum. These attachments are shown in Figure 13.
- Note that the Datum Identifier is stored as an Alphanumeric string in the DATUM.identification attribute.
Figure 13. STEP entities for defining DATUMs
Part21 Example
#180=PLANE('',#179);
#181=ADVANCED_FACE('',(#175),#180,.T.);
#265=DATUM('#',$,#246,.F.,'B');
#266=SHAPE_REPRESENTATION('',(#180),#240);
#267=PROPERTY_DEFINITION('#',$,#265);
#268=SHAPE_DEFINITION_REPRESENTATION(#267,#266);
#269=DATUM_FEATURE('',$,#246,.T.);
#270=SHAPE_ASPECT_RELATIONSHIP('',$,#269,#265);
#271=PROPERTY_DEFINITION('',$,#269);
#272=SHAPE_REPRESENTATION('',(#181),#240);
#273=SHAPE_DEFINITION_REPRESENTATION(#271,#272);
Implementing DATUM TARGETS in a STEP File
A Datum Target is a point, line or limited area of the part surface that is used in the construction of a Datum, when it is not practical to use an entire feature nor a substantial region. A Datum is constructed from one or more Datum Targets, and may be offset from the part surface. The implementation of Datum Targets is done by relating the Placed_Datum_Target_Feature to the Datum it is part of the definition of, by means of a Shape_Aspect_Relationship. This is shown in Figure 14.
Figure 14. Datum Target Instantiation
The identification of the Datum Target is stored in the Placed_Datum_Target_Feature.identification attribute.
- Note that for ease of use, it is intended that the full identification of the Datum Target is stored here, i.e. For Datum Target 'A1', store the string 'A1', not just the numeric portion of the target.
Part21 Example
#277=DATUM('',$,#252,.F.,'A');
#278=PLACED_DATUM_TARGET_FEATURE('','circle',#252,.T.,'A1');
#279=SHAPE_ASPECT_RELATIONSHIP('','datum target',#277,#278);
#280=PROPERTY_DEFINITION('',$,#278);
#281=CARTESIAN_POINT('',(1.0,2.0,0.5));
#282=DIRECTION('',(1.0,0.0,0.0));
#283=DIRECTION('',(0.0,0.0,1.0));
#284=AXIS2_PLACEMENT_3D('',#281,#283,#282);
#285=MEASURE_REPRESENTATION_ITEM('target diameter',LENGTH_MEASURE(0.75),#6);
#286=SHAPE_REPRESENTATION_WITH_PARAMETERS('',(#284,#285),#246);
#287=SHAPE_DEFINITION_REPRESENTATION(#280,#286);
#288=PLACED_DATUM_TARGET_FEATURE('','circle',#252,.T.,'A2');
#289=SHAPE_ASPECT_RELATIONSHIP('','datum target',#277,#288);
#290=PROPERTY_DEFINITION('',$,#288);
#291=CARTESIAN_POINT('',(3.0,2.0,0.5));
#292=DIRECTION('',(1.0,0.0,0.0));
#293=DIRECTION('',(0.0,0.0,1.0));
#294=AXIS2_PLACEMENT_3D('',#291,#293,#292);
#295=MEASURE_REPRESENTATION_ITEM('target diameter',LENGTH_MEASURE(0.5),#6);
#296=SHAPE_REPRESENTATION_WITH_PARAMETERS('',(#294,#295),#246);
#297=SHAPE_DEFINITION_REPRESENTATION(#290,#296);
DATUM TARGET types
The particular geometric representation that forms the Datum Target is defined by the Shape Representation with Parameters, as well as by the Placed_Datum_Target_Feature.description field. The allowable values for this are:
- point
- line
- rectangle
- circle
Each of these requires particular representation items, complete with pre-defined strings, in the Shape_Representation_with_Parameters that conveys the target area. The table below defines the relevant entities and values required.
| Target Type | Representation Entities |
|---|---|
| Point | A Placement entity (A2P3D) with a name of 'orientation' |
| Line | A Placement entity (A2P3D) with a name of 'orientation' Plus
A Composite Entity of Measure_Representation_Item AND Length_Measure_With_Unit with a name of 'target length' denoting the length along the 'Z' axis of the Placement. |
| Rectangle | A Placement entity (A2P3D) with a name of “orientation� Plus
Two Composite Entities of Measure_Representation_Item AND Length_Measure_With_Unit with names of 'target length' and 'target width'. The length is along the placement 'X' axis and the width along the placement 'Y' axis, with the placement itself positioned at the centre of the Rectangle. |
| Circle | A Placement entity (A2P3D) with a name of 'orientation' Plus
A Composite Entity of Measure_Representation_Item AND Length_Measure_With_Unit with a name of 'target diameter' |
Feature Control Frames
This section defines the instantiation requirements for the Feature Control Frames which define the Geometric Tolerance. A Feature Control Frame takes the form shown in Figure 15 below, in order to define the type and value of the tolerance that has been applied to the feature.
Figure 15.. Feature Control Frame
Reading from Left to right, Figure 15 shows:
- In the first Box, the type of the tolerance, in this case, a Position Tolerance.
See Table 4 for the full list of tolerance types supported.
- The second box defines the tolerance value itself (0.1) along with any tolerance modifiers.
- The third and subsequent boxes specify the datum references along with any datum modifiers.
STEP Supported Tolerance Types
The following table shows the Geometric Tolerance types supported by STEP. The table lists the Tolerance name, the STEP Entity which is used to represent it, and additionally any restrictions on the number of Datum References that apply in the STEP Schema to that tolerance type.
| Tolerance type | STEP Entity | Datums |
|---|---|---|
| Angularity | ANGULARITY_TOLERANCE | 1, 2 or 3 |
| Circular Runout | CIRCULAR_RUNOUT_TOLERANCE | 1 or 2 |
| Circularity / Roundness | ROUNDNESS_TOLERANCE | None |
| Concentricity / Coaxiality | COAXIALITY_TOLERANCE | 1 or 2 |
| Cylindricity | CYLINDRICITY_TOLERANCE | None |
| Flatness | FLATNESS_TOLERANCE | None |
| Parallelism | PARALLELISM_TOLERANCE | 1 or 2 |
| Perpendicularity | PERPENDICULARITY_TOLERANCE | 1, 2 or 3 |
| Position | POSITION_TOLERANCE | None, 1, 2 or 3 |
| Profile of a Line | LINE_PROFILE_TOLERANCE | None, 1, 2 or 3 |
| Profile of a Surface | SURFACE_PROFILE_TOLERANCE | None, 1, 2 or 3 |
| Straightness | STRAIGHTNESS_TOLERANCE | None |
| Symmetry | SYMMETRY_TOLERANCE | 1, 2 or 3 |
| Total Runout | TOTAL_RUNOUT_TOLERANCE | 1 or 2 |
Table 4. Supported Tolerance Types
Implementing Feature Control Frames
The STEP file implementation of the Geometric Tolerances makes use of the entities shown in the sections below, each section showing the entities required for the different cases, i.e. tolerance without modification or datums, tolerance with datums and modified tolerances.
- Note that the linkage to the Feature(s) being toleranced is covered in Figure 11 and Figure 12.
Geometric Tolerance without Modification or Datums
This case can only occur for the following Tolerance types:
- Roundness
- Cylindricity
- Flatness
- Position
- Profile of a Line
- Profile of a Surface
- Straightness
For this example, we will show a Position Tolerance. The Length_Measure_With_Unit entity is used to convey the Tolerance Value.
Figure 16. Tolerance without Modification or Datums
Part21 Example
#274=LENGTH_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.1),#4);
#277=POSITION_TOLERANCE('','position tolerance',#274,#264);
Geometric Tolerance with Modification
A modified geometric tolerance is mapped to STEP as a complex entity, containing the geometric tolerance entity and a Modified_Geometric_Tolerance Entity. The modifier attribute of the Modified_Geometric_Tolerance Entity defines the type of modification applied to the tolerance, and is an enumeration with the following allowable values:
- .MAXIMUM_MATERIAL_CONDITION.
- .LEAST_MATERIAL_CONDITION.
- .REGARDLESS_OF_FEATURE_SIZE.
In the following example, Position Tolerance is used for illustration purposes:
Figure 17. Modified Geometric Tolerance
Part21 Example
#274=LENGTH_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.1),#4);
#277=(GEOMETRIC_TOLERANCE('','position tolerance',#274,#264)MODIFIED_GEOMETRIC_TOLERANCE(.MAXIMUM_MATERIAL_CONDITION.)
POSITION_TOLERANCE());
Geometric Tolerance with Datums
Most Geometric Tolerances require one or more Datums in order to specify from where the tolerance is measured. In the STEP File this is represented by a complex entity of Geometric_Tolerances and Geometric_Tolerance_With_Datum_Reference, as shown in Figure 18.
Figure 18. Tolerance with Datum Reference
In the Feature Control Frame, the datums, if present, appear in a specific order, i.e. Primary, secondary and tertiary. The STEP inplementation of the datum_system attribute is as a SET, which is an unordered list. The precedence of the Datum in the tolerance is therefore given by the precedence attribute in the Datum_Reference entity. It is important to note this, as there is no guarantee that the order in the Geometric_Tolerance_with_Datum_Reference entity is correct.
- Note that if the Datum Reference is modified, as shown in Figure 15, then the Datum_reference entity is replaced with a subtype, Referenced_Modified_Datum.
- Note that it is possible to have both datum references and modified tolerances. This is achieved in the STEP file by extending the complex entities to include both mechanisms.
Part21 Example
#274=LENGTH_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.1),#4);
#275=DATUM_REFERENCE(1,#246);
#276=DATUM_REFERENCE(2,#255);
#277=(GEOMETRIC_TOLERANCE('','position tolerance',#274,#264) GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE((#275,#276)) MODIFIED_GEOMETRIC_TOLERANCE(.MAXIMUM_MATERIAL_CONDITION.) POSITION_TOLERANCE());
Common or Multiple Datums
It is possible for two Datums to have equal importance when specifying the Datum Refererences. A Feature control frame with this condition is shown in Figure 19.
Figure 19. Common/Multiple Datum
In the STEP File, this is inplemented by using the Common_Datum entity, which is a subtype of both Datum and Composite_Shape_Aspect. This entity is used to collect the 'equal weight' datums together and provide a target for the Datum_Reference SET. An instantiation of this is shown in Figure 20.
Figure 20. Common/Multiple Datum Instantiation
As the Common_Datum entity is a subtype of DATUM, it requires a String for it's identifier. Although the Identifier can be derived from the Datums that it is as multiple of, it is recommended that a string containing the identifiers from both of these, separated by a hyphen, is used, e.g. If the common datum is made up of 'A' and 'B', then it's identifier will be 'A-B'.
Composite Geometric Tolerances
Some tolerances have multiple requirements as represented by a multiple frame tolerance control frame whose visual representation is shown in Figure 21.
Figure 21. Composite Geometric Tolerance
This is implemented by creating the appropriate geometric_tolerance entity for each frame. The geometric_tolerance entities are then related via a geometric_tolerance_relationship. The description attribute of the geometric_tolerance_relationship entity shall contain the value 'Composite Tolerance'. See Figure 22 for the structure of the tolerance depicted in Figure 21.
In the geometric_tolerance_relationship entity, the upper frame is the 'relating' reference and the lower frame is the 'related' reference. For tolerances with more than two frames, multiple geometric_tolerance_relationship entities are used to relate the frames together. For example, a tolerance with three frames would require two geometric_tolerance_relationship entities: one relating the top ('relating') and middle frames ('related'), the second relating the middle ('relating') and the bottom ('related') frames. These relationships will allow the receiver to reconstruct the semantic relationships as well as the visual representation.
Figure 22. Composite Tolerance Structure
Part21 Example
#307=SHAPE_ASPECT('',$,#223,.T.);
#308=PROPERTY_DEFINITION('',$,#307);
#309=SHAPE_REPRESENTATION('',(#185),#217);
#310=SHAPE_DEFINITION_REPRESENTATION(#308,#309);
#311=LENGTH_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.2),#4);
#312=DATUM_REFERENCE(1,#264);
#313=(GEOMETRIC_TOLERANCE('','surface profile tolerance',#311,#307)GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE((#312))
SURFACE_PROFILE_TOLERANCE());
#314=LENGTH_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.1),#4);
#315=SURFACE_PROFILE_TOLERANCE('','surface profile tolerance',#314,#307);
#316=GEOMETRIC_TOLERANCE_RELATIONSHIP('','composite tolerance',#313,#315);
Feature of Size
CAD systems can have a 'Feature of Size' associated with the Geometric Tolerancing informations, especially on the position tolerance of a Hole or Pin. In this case, a mix of Geometric and Dimensional Tolerances are used to exchange this information, by mapping the 'Feature of Size' as a Dimensional Size in the STEP File (See Dimensional Size) applied to the same Shape Aspect as the Geometric Tolerance. An example of this is shown in Figure 23.
Figure 23. Feature of Size
Part21 Example
#342=SHAPE_ASPECT('',$,#252,.T.);
#343=PROPERTY_DEFINITION('',$,#342);
#344=SHAPE_REPRESENTATION('',(#229),#246);
#345=SHAPE_DEFINITION_REPRESENTATION(#343,#344);
#346=(LENGTH_MEASURE_WITH_UNIT()
MEASURE_REPRESENTATION_ITEM()
MEASURE_WITH_UNIT(POSITIVE_PLANE_ANGLE_MEASURE(1.05),#6)
REPRESENTATION_ITEM('upper limit'));
#347=(LENGTH_MEASURE_WITH_UNIT()MEASURE_REPRESENTATION_ITEM()MEASURE_WITH_UNIT(POSITIVE_PLANE_ANGLE_MEASURE(0.95),#6)REPRESENTATION_ITEM('lower limit'));
#348=(LENGTH_MEASURE_WITH_UNIT()MEASURE_REPRESENTATION_ITEM()MEASURE_WITH_UNIT(POSITIVE_PLANE_ANGLE_MEASURE(1.0),#6
REPRESENTATION_ITEM('nominal value'));
#349=SHAPE_DIMENSION_REPRESENTATION('',(#346,#347,#348),#246);
#350=DIMENSIONAL_SIZE(#342,'diameter');
#351=DIMENSIONAL_CHARACTERISTIC_REPRESENTATION(#350,#349);
#352=LENGTH_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.08),#6);
#353=ROUNDNESS_TOLERANCE('','circularity tolerance',#352,#342);













