InterOp:Connect/Parasolid/Parasolid Writer/Manufacturing Information for Parasolid/PMI Data for Parasolid
From DocR21
InterOp Connect defines a representation named PMI to support PMI data translation. The following PMI features are supported in InterOp Connect:
- Text PMI
- Roughness PMI
- Datum PMI
- GD&T PMI
- Dimension PMI
- Flag Note PMI
Note that Modeler routines, in addition to removing redundant topologies and repairing them, also merge, delete, and split topologies like Edge(s), Face(s) present in the model. The PMI attached to such topologies may behave differently from the original model. In case of:
- Merge: PMI information may remain on the original topology or move to the topology to which it is merged.
- Split: PMI information will split all specified topologies.
- Delete: PMI information will be lost as the specified topology is deleted.
Note: InterOp interfaces operate with wide character text, whereas Parasolid interfaces operate with Unicode text (given as UTF-16). In general, the two encodings are not directly interchangeable. Refer to the documentation for your target platform for advice on how to convert between the two encodings.
Contents |
Required DLLs
To support translation of PMI data, ensure that the following libraries (DLLs) are available in the base directory:
- SPAXGenericManufacturingImporter.dll
- SPAXGenericManufacturingImporterd.dll
- SPAXGenericPMIImporter.dll
- SPAXGenericPMIImporterd.dll
- SPAXProeManufacturingExporter.dll
- SPAXProeManufacturingExporterd.dll
- SPAXProePMIExporter.dll
- SPAXProePMIExporterd.dll
Note: For debug builds (for example, NT_VC8_DLLD), the DLL name is suffixed with "d", for example: SPAXGenericManufacturingImporterd.dll.
Names of PMI Annotations
The Parasolid PMI Importer supports names of all types of PMI annotations (to wherever the source format exports them). The name of the PMI annotation can be queried from the corresponding PMI PK_GROUP in the same way the name of the body or face is queried from PK_ENTITY.
Detailed information about Parasolid PMI methods is provided in the section PMI Methods in Parasolid Detailed.
Text PMI
InterOp creates a PK_GROUP in Parasolid for each Text PMI using a dummy point body. An attribute named SPAATTRIB_MI_BODY is attached to the dummy point body to identify whether the body is a MI point body or not. If the value of SPAATTRIB_MI_BODY attribute is 1, point body is MI point body; else, otherwise.
An integer attribute with attribute definition name SPAATTRIB_GROUP_TYPE is attached to each PK_GROUP. The value of this attribute identifies whether the PK_GROUP is associated with Text PMI or not. For the Text PMI, the value of this attribute is 1.
All the Text information is attached to PK_GROUP using the SPAATTRIB_PMI_TEXT attribute definition. The following table lists the members of SPAATTRIB_PMI_TEXT attribute definition:
| Field No. | Value Type | Field Description |
|---|---|---|
| 1 | Unicode String | Text String corresponding to the text feature |
An attribute with SPAATTRIB_MFGENTS attribute definition is attached to the PK_GROUP associated with the Text PMI. This attribute contains the Parasolid Entity tags associated with Text PMI as an array of integers.
Because the Parasolid Entity tags are session-specific, an integer attribute with SPAATTRIB_TAG attribute definition is attached to the corresponding Parasolid Entity.
You can use the SPAATTRIB_MFGENTS and SPAATTRIB_TAG attribute values to retrieve the Parasolid Entity(s) associated with the PMI in another session.
Refer to Methods for Text PMI.
Roughness PMI
InterOp creates a PK_GROUP in Parasolid for each Roughness PMI using a dummy point body. An attribute named SPAATTRIB_MI_BODY is attached to the dummy point body to identify whether the body is a MI point body or not. If the value of SPAATTRIB_MI_BODY attribute is 1, point body is MI point body; else, otherwise.
An integer attribute with attribute definition name SPAATTRIB_GROUP_TYPE is attached to each PK_GROUP. The value of this attribute identifies whether the PK_GROUP is associated with Roughness PMI or not. For the Roughness PMI, the value of this attribute is 2.
All the roughness information is attached to PK_GROUP using SPAATTRIB_PMI_ROUGHNESS attribute definition. The following table lists the members of SPAATTRIB_PMI_ROUGHNESS attribute definition:
| Field No. | Value Type | Field Description |
|---|---|---|
| 1 | Integer | Roughness obtention type (Roughness type) |
| 2 | Integer | Roughness applicability type |
| 3 | Integer | Number of fields |
| 4-12 | Unicode String | Roughness fields |
| 13 | Real | Roughness scale factor |
The following diagram shows roughness notation with the nine fields:
For the above figure, description of fields is as following:
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
Field 7: Direction of lay
Field 8: need information
Field 9: need information
An attribute with SPAATTRIB_MFGENTS attribute definition is attached to the PK_GROUP associated with the Roughness PMI. This attribute contains the Parasolid Entity tags associated with Roughness PMI as an array of integers.
Because the Parasolid Entity tags are session-specific, an integer attribute with SPAATTRIB_TAG attribute definition is attached to the corresponding Parasolid Entity.
You can use the SPAATTRIB_MFGENTS and SPAATTRIB_TAG attribute values to retrieve the Parasolid Entity(s) associated with the PMI in another session.
Refer to Methods for Roughness PMI.
Datum PMI
InterOp creates a PK_GROUP in Parasolid for each Datum PMI using a dummy point body. An attribute named SPAATTRIB_MI_BODY is attached to the dummy point body to identify whether the body is a MI point body or not. If the value of SPAATTRIB_MI_BODY attribute is 1, point body is MI point body; else, otherwise.
An integer attribute with attribute definition name SPAATTRIB_GROUP_TYPE is attached to each PK_GROUP. The value of this attribute identifies whether the PK_GROUP is associated with Datum PMI or not. For the Datum PMI, the value of this attribute is 5.
All the Datum information is attached to PK_GROUP using SPAATTRIB_PMI_DATUM attribute definition. The following table lists the members of SPAATTRIB_PMI_DATUM attribute definition:
| Field No. | Value Type | Field Description |
|---|---|---|
| 1 | Array of Integers | Array of tags of Datum targets associated with the datum |
| 2 | Unicode String | Datum Label |
An attribute with SPAATTRIB_MFGENTS attribute definition is attached to the PK_GROUP associated with the Datum PMI. This attribute contains the Parasolid Entity tags associated with the Datum PMI as an array of integers.
Each Datum contains reference to one or more Datum targets. For each Datum target, a PK_GROUP is made with a dummy point. An attribute definition named SPAATTRIB_MI_BODY is attached to the dummy point body to identify whether the body is a MI point body or not. If the value of SPAATTRIB_MI_BODY attribute is 1, point body is MI point body; else, otherwise.
An integer attribute with attribute definition name SPAATTRIB_GROUP_TYPE is attached to each PK_GROUP. The value of this attribute identifies whether the PK_GROUP is associated with Datum PMI or not. For the Datum PMI, the value of this attribute is 6.
An attribute definition named SPAATTRIB_PMI_DATUMTGT is attached to this PK_GROUP. The details of this attribute definition are as follows:
| Field No. | Value Type | Field Description |
|---|---|---|
| 1 | Integer | Datum Target Type defined using datum_target_type enumeration: enum datum_target_type {
DT_UNKNOWN = 0, DT_POINT, DT_LINE, DT_AREA_CIRC, DT_AREA_RECT, DT_AREA_FACE, DT_FEATURE } |
| 2 | Array of doubles | The position 1 for defining orientation of the Datum Target |
| 3 | Array of doubles | The position 2 for defining orientation of the Datum Target |
| 4 - 12 | Unicode String | Target Name |
| 13 | Unicode String | Target Note |
An attribute with SPAATTRIB_MFGENTS attribute definition is attached to the PK_GROUP associated with the Datum target. This attribute contains the Parasolid Entity tags associated with Datum target as an array of integers.
Because the Parasolid Entity tags are session-specific, an integer attribute with SPAATTRIB_TAG attribute definition is attached to the corresponding Parasolid Entity.
You can use the SPAATTRIB_MFGENTS and SPAATTRIB_TAG attribute values to retrieve the Parasolid Entity(s) associated with the PMI in another session.
Refer to Methods for Datum PMI.
GD&T PMI
InterOp creates a PK_GROUP in Parasolid for each GD&T PMI using a dummy point body. An attribute named SPAATTRIB_MI_BODY is attached to the dummy point body to identify whether the body is a MI point body or not. If the value of SPAATTRIB_MI_BODY attribute is 1, point body is MI point body; else, otherwise.
An integer attribute with attribute definition name SPAATTRIB_GROUP_TYPE is attached to each PK_GROUP. The value of this attribute identifies whether the PK_GROUP is associated with GD&T PMI or not. For the GD&T PMI, the value of this attribute is 3.
An attribute with SPAATTRIB_MFGENTS attribute definition is attached to the PK_GROUP associated with the GD&T PMI. This attribute contains the Parasolid Entity tags associated with GD&T PMI as an array of integers.
For each GD&T PMI, a PK_GROUP is created with a dummy point for each Datum Reference Frame. An attribute named SPAATTRIB_MI_BODY is attached to the dummy point body to identify whether the body is a MI point body or not. If the value of SPAATTRIB_MI_BODY attribute is 1, point body is a MI point body; else, otherwise.
An integer attribute with attribute definition name SPAATTRIB_GROUP_TYPE is attached to each PK_GROUP. The value of this attribute identifies whether the PK_GROUP is associated with Datum Reference Frame or not. For the Datum Reference Frame, the value of this attribute is 7.
All the information related to Datum Reference Frame is attached to PK_GROUP using SPAATTRIB_PMI_DRF attribute definition. The details of this attribute definition are as following:
| Field No. | Value Type | Field Description |
|---|---|---|
| 0 | Array of integers | Array of tags of Datum references associated with the datum reference frame |
| 1 | Unicode string | Datum reference frame note |
An attribute with SPAATTRIB_MFGENTS attribute definition is attached to the PK_GROUP associated with the Datum Reference Frame. This attribute contains the Parasolid Entity tags associated with Datum Reference Frame as an array of integers.
For Datum Reference Frames, a PK_GROUP is created with a dummy point for each Datum Reference. An attribute named SPAATTRIB_MI_BODY is attached to the dummy point body to identify whether the body is a MI point body or not. If the value of SPAATTRIB_MI_BODY attribute is 1, point body is MI point body; else, otherwise.
An integer attribute with attribute definition name SPAATTRIB_GROUP_TYPE is attached to each PK_GROUP. The value of this attribute identifies whether the PK_GROUP is associated with Datum Reference or not. For the Datum Reference, the value of this attribute is 8.
All the information related to Datum Reference is attached to PK_GROUP using the SPAATTRIB_PMI_DREF attribute definition. The details of this attribute definition are as following:
| Field No. | Value Type | Field Description |
|---|---|---|
| 0 | Array of integers | Array of tags of the datum associated with this datum reference |
| 1 | Array of integers | Array of Datum Modifier |
| 2 | Unicode string | Label associated with the datum reference |
An attribute with SPAATTRIB_MFGENTS attribute definition is attached to the PK_GROUP associated with the Datum Reference. This attribute contains the Parasolid Entity tags associated with Datum Reference as an array of integers.
For Datum Reference, a PK_GROUP is created with a dummy point for each Datum PMI.
Because the Parasolid Entity tags are session-specific, an integer attribute with the SPAATTRIB_TAG attribute definition is attached to the corresponding Parasolid Entity.
You can use the SPAATTRIB_MFGENTS and SPAATTRIB_TAG attribute values to retrieve the Parasolid Entity(s) associated with the PMI in another session.
Refer to Methods for GD&T PMI.
Dimension PMI
InterOp creates a PK_GROUP in Parasolid for each Dimension PMI using a dummy point body. An attribute named SPAATTRIB_MI_BODY is attached to the dummy point body to identify whether the body is a MI point body or not. If the value of SPAATTRIB_MI_BODY attribute is 1, point body is MI point body; else, otherwise.
An integer attribute with attribute definition name SPAATTRIB_GROUP_TYPE is attached to each PK_GROUP. The value of this attribute identifies whether the PK_GROUP is associated with Dimension PMI or not. For the Dimension PMI, the value of this attribute is 4.
All the Dimension information is attached to PK_GROUP using SPAATTRIB_PMI_DIMENSION attribute definition. The following table lists the members of SPAATTRIB_PMI_DIMENSION attribute definition:
| Field No. | Value Type | Field Description |
|---|---|---|
| 0 | Integer | Tag of the first entity |
| 1 | Integer | Tag of the second entity |
| 2 | Integer | Dimension Type |
| 3 | Integer | Sub Dimension Type |
| 4 | Real | Dimension Value |
| 5 | Real | Dimension Tolerance Upper Limit |
| 6 | Real | Dimension Tolerance Lower Limit |
| 7 | Real | Dimension Tolerance precision |
| 8 | Unicode string | Dimension tolerance's upper value |
| 9 | Unicode string | Dimension tolerance's Lower value |
| 10 | Unicode string | Dimension note |
An attribute with the SPAATTRIB_MFGENTS attribute definition is attached to the PK_GROUP associated with the Dimension PMI. This attribute contains the Parasolid Entity tags associated with Dimension PMI as an array of integers.
Because the Parasolid Entity tags are session-specific, an integer attribute with the SPAATTRIB_TAG attribute definition is attached to the corresponding Parasolid Entity.
You can use the SPAATTRIB_MFGENTS and SPAATTRIB_TAG attribute values to retrieve the Parasolid Entity(s) associated with the PMI in another session.
Refer to Methods for Dimension PMI.
For specific material regarding Pro/E to Parasolid, refer to InterOp:Connect/Parasolid/Parasolid Writer/Manufacturing Information/Dimension Support from Pro/E to Parasolid.
Flag Note PMI
InterOp creates a PK_GROUP in Parasolid for each Flag Note PMI using a dummy point body. An attribute named SPAATTRIB_MI_BODY is attached to the dummy point body to identify whether the body is a MI point body or not. If the value of SPAATTRIB_MI_BODY attribute is 1, point body is MI point body; else, otherwise.
An integer attribute with attribute definition name SPAATTRIB_GROUP_TYPE is attached to each PK_GROUP. The value of this attribute identifies whether the PK_GROUP is associated with Flag Note PMI or not. For the Flag Note PMI, the value of this attribute is 11.
All the Flag note information is attached to PK_GROUP using the SPAATTRIB_PMI_FLAGNOTE attribute definition. The following table lists the members of SPAATTRIB_PMI_FLAGNOTE attribute definition:
| Field No. | Value Type | Field Description |
|---|---|---|
| 1 | Unicode String | Text String corresponding to the flag note feature. |
An attribute with SPAATTRIB_MFGENTS attribute definition is attached to the PK_GROUP associated with the Flag note PMI. This attribute contains the Parasolid Entity tags associated with Flag note PMI as an array of integers.
Because the Parasolid Entity tags are session-specific, an integer attribute with SPAATTRIB_TAG attribute definition is attached to the corresponding Parasolid Entity.
You can use the SPAATTRIB_MFGENTS and SPAATTRIB_TAG attribute values to retrieve the Parasolid Entity(s) associated with the PMI in another session.
Refer to Methods for Flag Note PMI.
Common Attributes
InterOp Connect defines common attributes used for managing PMI information:
SPAATTRIB_MI_BODY
| Field No. | Value Type | Field Description |
|---|---|---|
| 0 | Integer
1- MI point body 0- non-MI body | Integer value that indicates whether the body is MI point body or not. |
SPAATTRIB_GROUP_TYPE
| Field No. | Value Type | Field Description |
|---|---|---|
| 0 | Integer | Enumeration for group type unique to the different PMI Features. The enumeration values are:
Unknown = -1 Hole=0 Text=1 Roughness=2 GDT=3 DimTol=4 Datum=5 DatumTarget=6 DatumRefFrame=7 DatumReferences=8 Note Param=9 Leader=10 Flag Note=11 |
SPAATTRIB_MFGENTS
| Field No. | Value Type | Field Description |
|---|---|---|
| 0 | Array of integers | Array of entity tags associated with a PK_GROUP |
SPAATTRIB_TAG
| Field No. | Value Type | Field Description |
|---|---|---|
| 0 | Integer | Integer corresponding to the Parasolid entity tag |
Display Information
The InterOp Manufacturing Information Reader can translate PMI display information from CATIA V5 to Parasolid format. The display information includes:
- Anchor points of the annotation
- Normal to the view plane
- Primary direction of the annotation
- Leader Information
The PMI display information is attached to the PK_GROUP as a Parasolid attribute. The attribute definition string associated with the Parasolid attribute is SPAATTRIB_PMI_DISPLAY. The display information is attached to the different fields of this attribute definition. The following table describes the fields of the SPAATTRIB_PMI_DISPLAY attribute definition:
| Field No. | Value Type | Field Description |
|---|---|---|
| 0 | PK_VECTOR | Anchor points |
| 1 | PK_VECTOR | Normal to View Plane |
| 2 | PK_VECTOR | Primary direction of the Annotation |
| 3 | Array of Integers | Array of tags of PK_GROUP(s) associated with the Leaders |
The value of these fields can be retrieved using the methods available in the SPAXGenericMfgAttributeTransfer class.
The display information is for the following annotations:
- Text
- Roughness
- Datum and Datum Target
- GD&T
The following figure shows Text annotation in a box where "O" denotes the display point:
The following figure shows Roughness annotation in a box where "O" denotes the display point:
The following figure shows Datum and Datum Target annotation in a box where "O" denotes the display point:
The following figure shows GD&T annotation in a box where "O" denotes the display point:
The Leader information is attached as a Parasolid attribute definition named, SPAATTRIB_PMI_LEADER_POINTS, to a PK_GROUP created using a dummy point. The attribute named SPAATTRIB_GROUP_TYPE, attached to PK_GROUP, contains information about the group type of attribute definition. For a Leader, the value of SPAATTRIB_GROUP_TYPE attribute is ten. A Leader contains the following information:
- Head Point
- Tail Point
The Head and Tail information is attached as fields in the attribute definition. The following tables lists the fields of the SPAATTRIB_PMI_LEADER_POINTS attribute definition.
| Field No. | Value Type | Field Description |
|---|---|---|
| 0 | PK_VECTOR | Head Point |
| 1 | PK_VECTOR | Tail Point |
You can retrieve the values for the fields of SPAATTRIB_PMI_LEADER_POINTS attribute definition using the methods available in the SPAXGenericMfgAttributeTransfer class.
Note: The tag of PK_GROUP associated with the Leader is attached as a field member of the SPAATTRIB_PMI_DISPLAY attribute.
Non-semantic GD&T PMI Imported from CATIA V5
Translation of non-semantic GD&T PMI is supported. The following figure illustrates a CATIA V5 file with non-semantic GD&T PMI attached to it:
Figure. Non-semantic GD&T PMI illustrates a sample non-semantic GeomTol PMI created in CATIA V5. While exporting from CATIA V5, the tolerance magnitude is set to a negative value and the note field of GeomTol is set to 0.005 Tol|Upper Note|Lower Note.
The translated Tolerance dimension is represented as:
Geomtol attribute found
---------------------------------------------------------------------
Tolerance Type :11
Mod Dia Type :0
Tolerance Magnitude :-0.001000
Refinement Tol :0.000000
Rate Unit1 :0.000000
Rate Unit2 :0.000000
Zone Modifier1 :0
Zone Modifier2 :0
Projected Magnitude :0.000000
Profile Shift :0.000000
All Around :FALSE
Note :0.005 Tol|Upper Note|Lower Note
---------------------------------------------------------------------
DRF Information Start{
Note :A|B|C
DREF count :3
-----------------------------------------
DREF [ 0] Information Start{
Note :A
Datum count :0
}DREF [ 0] Information End
-----------------------------------------
DREF [ 1] Information Start{
Note :A
Datum count :0
}DREF [ 1] Information End
-----------------------------------------
DREF [ 2] Information Start{
Note :C
Datum count :0
}DREF [ 2] Information End
}DRF Information End
Important: Datum References of Datum Reference Frames associated with non-semantic GD&Ts will not contain any Datums. This is a limitation as that information is not available with CATIA V5 non-semantic GD&Ts.
Non-semantic Stacked GeomTol PMI
The CATIA V5 Reader translates non-semantic stacked GD&T PMI. Only the first row of the non-semantic stacked GeomTol will have display and leader information as well as note (upper and lower) information. For the first row, the owners are respective owners of that GeomTol (for example, face). The first row GeomTol is the owner of the second row GeomTol. The second row GeomTol is the Owner of the third row GeomTol and so on. While printing the owner information for these rows, Owner is specified as upper GeomTol and its Note, for example:
<Owner :GEOM_TOL(Note:<Note of the upper row>)>
In this example, the text file has the following PMI information:
Note: The PMI information shown is only for the first two rows.
| Example of Text File with Owner Information |
|---|
Geomtol attribute found
---------------------------------------------------------------------
Owner :GEOM_TOL(Note:10(M)||)
Tolerance Type :13
Mod Dia Type :0
Tolerance Magnitude :-0.001000
Refinement Tol :0.000000
Rate Unit1 :0.000000
Rate Unit2 :0.000000
Zone Modifier1 :0
Zone Modifier2 :0
Projected Magnitude :0.000000
Profile Shift :0.000000
All Around :FALSE
Note :3.0||
-----------------------------------------
DRF Information Start{
Note :C
DREF count :1
-----------------------------------------
DREF [ 0] Information Start{
Note :C
Datum count :0
}DREF [ 0] Information End
}DRF Information End
Composite :FALSE
=====================================================================
Geomtol attribute found
---------------------------------------------------------------------
Owner :FACE(id = "17024")
Display Information
-------------------
Display point : ( 0.00000000, -0.02075224, -0.06525758)
Display plane normal : ( 1.00000000, 0.00000000, 0.00000000)
Primary direction : ( 0.00000000, 1.00000000, 0.00000000)
Tolerance Type :11
Mod Dia Type :0
Tolerance Magnitude :-0.001000
Refinement Tol :0.000000
Rate Unit1 :0.000000
Rate Unit2 :0.000000
Zone Modifier1 :0
Zone Modifier2 :0
Projected Magnitude :0.000000
Profile Shift :0.000000
All Around :FALSE
Note :10(M)||
-----------------------------------------
DRF Information Start{
Note :C
DREF count :1
-----------------------------------------
DREF [ 0] Information Start{
Note :C
Datum count :0
}DREF [ 0] Information End
}DRF Information End
Composite :FALSE
-----------------------------------------
|





