Importing PMI from CAD
aPriori supports the import of certain semantic Product Manufacturing Information (PMI) values defined in supported CAD systems. PMI is often added to CAD models to specify non-geometric attributes necessary for the correct manufacturing of the part. These can include Geometric Dimensioning and Tolerancing (GD&T), surface texture specifications, etc.
Two flavors of PMI exist:
Non-semantic or “graphical” PMI – This is an older implementation and is simply the addition of displayable textual annotations (represented by lines and characters) to the CAD model. These annotations are human-readable but are usually not fully associated with the underlying part geometry in machine-readable form.
Semantic PMI – These annotations are implemented as CAD model metadata in a well-defined and machine-readable (as well as human-readable) fashion.
Note: aPriori only reads semantic PMI. (There are some minor, CAD-system-dependent exceptions to this blanket statement. But in general, you can only import semantic PMI annotations into aPriori.)
It can be difficult to determine if an annotation visible in a CAD model is sematic or non-semantic, so most CAD systems provide ways of flagging non-semantic PMI annotations, such as appending a red squiggly line beneath the annotation.
A complete discussion of PMI is far beyond the scope of this aPriori document. You must consult the documentation and Support resources for your CAD system regarding how to properly construct and identify semantic vs. non-semantic PMI in CAD models. Note that some CAD systems may require you to acquire and install an additional module for creating PMI annotations. For example, CATIA requires that you have access to their Functional Tolerancing and Annotation module.
For more information, refer to:
Reputable third-party sites such as the National Institute of Standards and Technology (NIST, http://www.nist.gov).
The PMI sections of the documentation, training, and Support resources for your CAD system(s)
Notes about specific CAD systems and PMI, later in this chapter.
aPriori Support for PMI
As of Release 2018 R1 (18.1), aPriori supports importing certain sematic PMI values from the following CAD systems:
CATIA
Creo
NX
SolidWorks
Note: As noted earlier, there are a couple of non-semantic PMI annotations that aPriori can import, such as Diameter and Roughness annotations. However, in general if aPriori encounters non-semantic PMI when reading a CAD model, it logs the presence for diagnostic purposes, but does not store the information or attempt to use it for costing.
The following types of PMI are generally supported, with some restrictions for different CAD systems:
Diameter tolerances
Most geometric tolerances
Surface Roughness Ra & Rz
“Virtual” Threads/Taps (see Notes about virtual threads and taps below)
aPriori takes the imported PMI data and applies it to the appropriate GCDs for costing. (See Chapter 8, Geometric Cost Drivers .) You control PMI import behavior through the Tolerance Policy Editor.
Notes about virtual threads and taps
Although threaded hole information does not fall under the category of tolerance or roughness annotations, it is imported from the CAD model to aPriori using the same mechanism.
Note: In general, aPriori currently does not import PMI from Assembly models, just part models. This includes thread information for holes created as assembly features rather than part-level features. However, if you are working in the Creo Direct Integration version of aPriori, information about threaded holes made as assembly-level features is provided to aPriori. In all other cases, users will have to indicate that these holes are threaded inside the aPriori application.
Each supported CAD system supports multiple ways to specify that a hole or shaft is threaded, without actually modeling the threads (hence the term “virtual”). The concepts are the same across the different CAD systems, although the ways they are implemented differ.
In general, CAD systems offer two ways to specify virtual threads:
As a property or set of properties of a hole feature, typically implemented as a checkbox that says “threaded”, plus fields for entering other data such as thread length or depth, pitch, etc.
As a separate distinct feature. These features are named differently in different systems:
o CREO: “cosmetic thread”
o Catia: “thread/tap feature”
o NX: “symbolic thread”
o SolidWorks: “cosmetic thread”, “tapped hole”
aPriori currently supports all these methods EXCEPT SolidWorks thread and tapped hole information.
In addition, aPriori Direct Integration mode (see Direct Integration mode) supports both property and feature approaches for CREO.
Regardless of how you import virtual thread information, aPriori costs them simply based on the fact that the hole is threaded and uses the diameter and the thread length to compute cycle time. Any other data such as thread pitch is ignored. In summary, only a subset of thread metadata which may exist in a CAD model is actually imported into aPriori and used to calculate cost.
Importing and reviewing PMI from CAD
Supported semantic PMI annotations are imported to aPriori when you open or refresh a supported CAD file IF you set the Use CAD model values… checkbox in the Tolerance Policy Editor. You must set this checkbox to import semantic PMI information from a CAD model, otherwise it will be ignored.
Note: The following sections describe how to import PMI with the interactive aPriori client. For Interactive Bulk Costing, you must set the Tolerance Policy for the Bulk Costing run, for all or selected scenarios. Tolerance Policy cannot be specified from the command line or the input spreadsheet in aP 2016 R2.
How aPriori imports roughness (Ra and Rz) values
CAD systems provide a variety of ways to completely specify Roughness. aPriori has observed inconsistent use of the available Roughness inputs across our customer base. Therefore, we have adopted a specific method for processing and interpreting the incoming roughness data found in a CAD file, as described below. Note that Roughness import is NOT supported for SolidWorks.
Up to nine Roughness Related fields may be populated, across the varying CAD systems supported by aPriori:
where:
Field 1: Roughness value Ra
Field 2: Unused
Field 3: Minimum material removal
Field 4: Production method
Field 5: Roughness cutoff
Field 6: Roughness value other than Ra (e.g., Rz)
Field 7: Direction of lay
Field 8: Rarely used.
Field 9: Rarely used.
aPriori looks at any values defined in these nine fields according to these rules:
1 Find all fields that look like "Ra number" (case insensitive and ignoring whitespace around "Ra" and around the number).
2 Find all fields that look like "Rz number" (case insensitive and ignoring whitespace around "Rz" and around the number).
3 If Ra and/or Rz is found then aPriori uses the smallest value of each for the GCD properties.
4 If neither Ra nor Rz is found then aPriori tries to parse the contents of Field 1 and Field 6 as numbers. Field 1 contains "Roughness value Ra", Field 6 contains "Roughness value other than Ra". aPriori uses any number in Field 1 for the RoughnessRa property and any number in Field 6 for the RoughnessRz property.
For example, if Field 1 (the nominal Roughness Ra field) is populated with "32" and Field 5 (the Roughness Cutoff field) is populated with "Ra 64", aPriori will use Field 5 since it contains the Ra string and Field 1 does not, even though the VALUE of Field 5 is larger than the value of Field 1.
To import PMI
1 Open the Tolerance Policy Editor.as described in To open the Tolerance Policy Editor.
2 In the Tolerance Policy Editor click the Use CAD model values… radio button.
3 Click OK, then Cost the model.
4 To confirm that the expected PMI values have been correctly imported, go to the Geometric Cost Drivers pane and navigate to a GCD that should have the PMI value from the CAD model.
In this example, note that the “+.005/-.001” CAD PMI tolerance appears in aPriori as a total “.006” tolerance.
Troubleshooting PMI
aPriori can write entries to the log file whenever it encounters a PMI attribute that it cannot map to a GCD. The following messages are “WARN” level and by default are written to the log file:
<PMI NAME> ignored because it is specified on an inactive surface,
<PMI NAME> was not associated with any GCDs, and
<PMI NAME> was not used because it is not semantic and has no magnitude. It would have been associated with GCD(s) <LIST OF GCDs>
To reduce the number of entries written to the log files, several other PMI messages are only written if the logging is set to DEBUG level.
To set DEBUG-level logging for PMI:
5 Open <apriori_install>/log4j.properties in an editor.
6 Add the following line: log4j.logger.com.fbc.util.cad.pmi.PmiLog=debug
7 Save the file and restart aPriori.
To view PMI log messages:
8 Click Help > Explore Logs Directory
9 Open apriori.log in a text editor. Search for entries starting with PmiLog. These messages contain information that allow you to identify the PMI attribute that failed and the nature of the failure. For example:
 
DEBUG PmiLog:285 - [Dim tolerance NIST PMI FTC 06 ASME1|Annotation Set.1|Linear Size.30 LINEAR 7.9375[-0.508:0.508]] were ignored because aPriori currently does not support non-radial/diametrical dimensional tolerances.
Since aPriori imports only semantic PMI, and since it is not always easy to identify semantic vs non-semantic PMI in a CAD system, aPriori logs entries similar to the following when it encounters non-semantic PMI attributes:

WARN PmiLog:285 - Gtol turning|Annotation Set.1|Geometrical Tolerance.13 [SYMMETRY -1] Note:.0005|| is not semantic