![]()
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: