![]()
NIST CTC 01 ASME1 |
Product and Manufacturing Information (PMI) is used in 3D CAD and collaborative product development systems to convey information about the design of a product's components for manufacturing. Specifically, PMI includes information such as geometric dimensioning and tolerancing (GD&T), 3D annotations (text), and material specifications.
The PMI-related information is stored in the instances of PMI_Data class. An object of this class could be attached to any ModelData_ModelElement and contains complete PMI information related to the element.
PMI can be expressed using the following representations:
The PMI_Data stores PMI information as a vector of PMI_Element and a vector of PMI_SavedView . Each PMI_Element contains a graphical representation (PMI_GraphicalRepresentation ), which stores graphical components (PMI_GraphicalComponent ) of one PMI entity and a corresponding semantic representation (PMI_SemanticRepresentation ), which stores semantic components (PMI_SemanticComponent ).
The content of PMI_Data could be easily retrieved as shown below:
The following code demonstrates the addition of PMI data and saved views:
An empty PMI_Data contains zero PMI_Element and PMI_SavedView objects.
Associations between PMI entities and topological entities (e.g., faces or edges) are stored as a vector of PMI_Element in ModelData_Shape .
The PMI_Element class stores the representation of a PMI entity:
Type | Graphical representation |
---|---|
PMI_DimensionComponent | ![]() |
PMI_GeometricToleranceComponent | ![]() |
PMI_DatumComponent | ![]() |
The PMI_GraphicalRepresentation class stores a representation of a PMI entity or an annotation in a graphical form.
Type | Dim | Description | Graphical representation |
---|---|---|---|
PMI_OutlinedComponent | 2D/3D | Stores PMI graphical data expressed by outline(s) like unfilled text, lines, frames, arrows, etc. Outline is represented by polyline/polyline2d/curve/curve2d/composite. | ![]() |
PMI_TextComponent | 2D | Stores PMI graphical data expressed by a string. | ![]() |
PMI_TriangulatedComponent | 3D | Stores PMI graphical data expressed by triangulation, like filled text or any other triangulated planar shape. | ![]() |
A graphical representation may contain one or more graphical components.
The PMI_SemanticRepresentation class stores a representation of a PMI entity in the semantic form. The stored information may represent annotations associated with a CAD model's edges and faces such as dimensional/geometric tolerances or datum features. Like graphical element semantic element may consists of several components (PMI_SemanticComponent subclasses) each one representing specific semantic notation.
The PMI_SemanticRepresentation class stores a PMI entity in the semantic form. This includes annotations associated with a CAD model's edges and faces, such as dimensional or geometric tolerances and datum features. Similar to a graphical element, a semantic element may consist of several components (PMI_SemanticComponent ) – each representing a specific semantic notation.
Type | Description | Examples of corresponding graphical representation |
---|---|---|
PMI_DimensionComponent | Stores PMI semantic data related to dimension measurement like nominal value, plus minus bounds, range limits, etc. | ![]() ![]() ![]() |
PMI_GeometricToleranceComponent | Stores PMI semantic data related to geometric tolerance measurement like magnitude value, modifiers, precedence of datum references, etc. | ![]() ![]() ![]() ![]() |
PMI_DatumComponent | Stores PMI semantic data related to datum, datum feature symbol or datum target like label, index (if the datum is composite), datum target description, etc. | ![]() ![]() |
PMI_SurfaceFinishComponent | Contains PMI semantic data related to surface texture: surface texture requirements, manufacturing method, surface lay, machining allowance, etc. | ![]() ![]() |
Each component may have several attributes affecting the meaning of stored data.
Type | Description | Applicable component |
---|---|---|
PMI_ModifierAttribute | Defines the type of modification applied to a dimensional/geometric tolerance or a datum reference (e.g. statistical, free state, maximum material requirement, etc.). | PMI_DimensionComponent PMI_GeometricToleranceComponent PMI_DatumComponent |
PMI_ModifierWithValueAttribute | Defines the type of modification applied to a tolerance with additional value (e.g. minor diameter, etc.). | PMI_DimensionComponent PMI_GeometricToleranceComponent PMI_DatumComponent |
PMI_QualifierAttribute | Defines the type of qualifier that can limit a tolerance (e.g. max, min, etc.). | PMI_DimensionComponent |
PMI_PlusMinusBoundsAttribute | Defines a plus and minus bounds (deviations) of a tolerance. | PMI_DimensionComponent |
PMI_RangeAttribute | Defines range of value. | PMI_DimensionComponent |
PMI_LimitsAndFitsAttribute | Defines the type of tolerance class dimension such as form variance, zone variance, grade, etc. (ISO 286) | PMI_DimensionComponent |
PMI_DatumTargetAttribute | Defines a datum target data. Contains a description (e.g. a point, line or limited area of the part surface) and an index (if the datum is composite). | PMI_DatumComponent |
PMI_DatumRefAttribute | Defines a datum reference. Stores a label of the datum and its precedence in a geometric tolerance. | PMI_GeometricToleranceComponent |
PMI_DatumRefCompartmentAttribute | Defines a compartment of datum references or compartments. Stores a collection of datum references or compartments and optionally a collection of modifiers, which is applied to each added compartment. | PMI_GeometricToleranceComponent |
PMI_MaximumValueAttribute | Defines a maximum value. | PMI_GeometricToleranceComponent |
PMI_DisplacementAttribute | Defines a displacement value for an unequally disposed geometric tolerance. | PMI_GeometricToleranceComponent |
PMI_LengthUnitAttribute | Defines a length unit. | PMI_DimensionComponent PMI_GeometricToleranceComponent PMI_SurfaceFinishComponent |
PMI_AngleUnitAttribute | Defines an angle unit. | PMI_DimensionComponent PMI_GeometricToleranceComponent |
PMI_MachiningAllowanceAttribute | Defines a machining allowance and its bounds (deviations). | PMI_SurfaceFinishComponent |
PMI_SurfaceTextureRequirementAttribute | Defines a surface texture requirement. Stores various requirements for the surface texture (e.g. specification limit, short and long wave filter values, surface parameter, etc) and its precedence (primary, secondary, etc) in the surface finish component. | PMI_SurfaceFinishComponent |
The PMI association is a relation between a PMI entity and a topological entity (e.g. face or edge). This relation is stored in ModelData_Shape . This data could be easily retrieved as shown below:
![]()
Control_Cabinet_assm.jt |
![]()
nist_ctc_02_asme1_ct5210_rc.jt |
Saved views of a design model may be defined to facilitate presentation of the model and its annotation. The PMI_SavedView class represents such saved view. It stores a customized camera (PMI_Camera ) and a selected set of PMI elements. The camera sets the position and direction of the view point relative to the model.
The following code demonstrates the addition of a graphical representation (which should be displayed from this view):
![]()
nist_ctc_04_asme1_ap242.stp |
![]()
nist_ftc_06_asme1_ap242.stp |
Both graphical and semantic PMI data can be extracted from the following formats: