CAD Exchanger SDK
Product and Manufacturing Information (PMI)
pmi_nist_ctc_01_asme1_ap242.png
NIST CTC 01 ASME1

Product and Manufacturing Information (PMI) is used in 3D CAD and/or collaborative product development systems to convey information about the design of a product's components for manufacturing. More specifically, PMI conveys information such as geometric dimensioning and tolerancing (GD&T), 3D annotation (text), surface finish and material specifications.

PMI Table

The PMI related information is stored in the instances of ModelData_PMITable class. An object of this class could be attached to any scene graph element (ModelData_SceneGraphElement subclass) and contain complete PMI information related to the element. The ModelData_PMITable can be considered as a container of PMI data associated with the certain scene graph element.

Graphical presentation of PMI is stored as the collection of graphical elements (ModelData_PMIGraphicalElement) and the collection of saved views (ModelData_PMISavedView). This data could be easily retrieved via iterators as shown below:

ModelData_SceneGraphElement aSGE = ...;
ModelData_PMITable aTable = aSGE.PMI();
...
// Iterate elements
ModelData_PMITable::GraphicalElementIterator aElementIt (aTable);
while (aElementIt.HasNext()) {
ModelData_PMIGraphicalElement anElement = aElementIt.Next();
...
}
...
// Iterate saved views
ModelData_PMITable::SavedViewIterator aViewIt (aTable);
while (aViewIt.HasNext()) {
ModelData_PMISavedView aView = aViewIt.Next();
...
}
...

The following code demonstrates adding of a graphical element and saved view:

ModelData_PMITable aTable ("PMI_of_part");
...
ModelData_PMIGraphicalElement anElement = ...;
aTable.Add (anElement);
aTable.AddPlane (anElement.Plane()); // optional, in case if plane is used
...
ModelData_PMISavedView aView = ...;
aTable.AddView (aView);
...

Thereby ModelData_PMITable could contain:

Note
It is very important that all PMI entities related to this scene graph element (including referenced) were added into the same ModelData_PMITable, e.g. every ModelData_PMIPlane referenced by ModelData_PMIGraphicalElement should also be added.

The ModelData_PMITable is able to contain graphical presentation of PMI only. The PMI presentations listed below currently aren't supported:

  • Semantic PMI (specific 'attributes' bearing semantics of PMI);
  • associations between PMI entities and topological/geometrical entities (e.g. face or edge);

Graphical element

A graphical element corresponds to an elementary PMI entity such as dimension or tolerance measurement. The ModelData_PMIGraphicalElement class stores a presentation of PMI entity or annotation in graphical form. The information to be presented can be stored in different ways therefore several types of components were introduced to keep each graphical data close to the original.

Component types

Type Dim Description Graphical presentation
ModelData_PMIOutlinedComponent 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_comp_ex_outline.png
ModelData_PMITextComponent 2D Stores PMI graphical data expressed by a string.
pmi_comp_ex_text.png
ModelData_PMITriangulatedComponent 3D Stores PMI graphical data expressed by triangulation, like filled text or any other triangulated planar shape.
pmi_comp_ex_tri.png

The graphical element can contain one or more components. The components can be of any type.

Note
Please pay attention that 2D components (ModelData_PMIOutlinedComponent in case of 2D content and ModelData_PMITextComponent) are defined by coordinates in the plane (ModelData_PMIPlane) of its parent graphical element. So in order to position them correctly the plane of its parent graphical element should be set.

Properties

The graphical element could have properties (ModelData_PropertyTable) but it's very rare. The properties can only be of string type.

Plane

In order to position 2D PMI data on the screen the reference planes are used. The ModelData_PMIPlane class presents such reference plane and stores a geometric plane. The plane could be shared between multiple graphical elements.

Examples of graphical elements

Type Graphical presentation
ModelData_PMI_Dimension
pmi_ex_dim.png
ModelData_PMI_Tolerance
pmi_ex_tol.png
ModelData_PMI_FeatureControlFrame
pmi_ex_fcf.png
ModelData_PMI_Datum
pmi_ex_datum.png

Saved view

Saved views of a design model may be defined to facilitate presentation of the model and its annotation. The ModelData_PMISavedView class presents such saved view. It stores a customized camera (ModelData_PMICamera) and a selected set of graphical elements. The camera sets position and direction of the view point relative to the model.

The following code demonstrates adding of a graphical element (which should be displayed from this view):

ModelData_PMICamera aCamera = ...;
ModelData_PMISavedView aView ("View1", aCamera);
...
ModelData_PMIGraphicalElement anElement = ...;
aView.AddGraphicalElement (anElement);
...

Different CAD software and technical documents use different terms for the "saved view" concept. The following list of equivalent terms might help in technical discussions:

  • ISO 16792, ASME Y14.41-2003 - saved view
  • CATIA V5/V6 - capture
  • NX - work view
  • Creo (Pro/Engineer) - combined state

Examples of saved views

pmi_ex_sv_1.png
nist_ctc_04_asme1_ap242.stp
pmi_ex_sv_2.png
nist_ftc_06_asme1_ap242.stp

Supported formats

The PMI data could be extracted from the following formats:

  • STEP (AP214e3, AP203e2, AP242)
  • JT (version 8.1 and higher)