InterOp:Connect/ACIS/ACIS Writer/Manufacturing Information for ACIS/PMI Data for ACIS

From DocR21

Jump to: navigation, search

InterOp supports transfer of PMI data such as Text, Flag Note, Datum, Geometric Tolerance, Roughness, and Dimension. To support PMI data translation, a representation named PMI is defined in the Connect interface. A separate annotation class is defined in ACIS for each type of PMI data.

Contents

Required DLLs

To support translation of PMI data, ensure that the following libraries (DLLs) are available in the base directory:

  • SPAXPMIRep.dll
  • SPAXACISPMIEntities.dll
  • SPAXAcisPMIImporter.dll

Note: Refer to the topic corresponding to the source data format for information on additional DLLs required for supporting PMI data translation.


Annotation Classes in ACIS

InterOp Connect provides a set of classes to store PMI data in the generated ACIS files.

The Text, Roughness, and GD&T annotations are translated as Attributes and the Dimensions are translated as entities, which are attached to the associated ACIS Entities.

Detailed information on ACIS Annotation Classes is provided in the section Annotation Classes in ACIS Detailed.

Detailed information on ACIS PMI Classes is provided in the 3D InterOp Connect Library Reference.

Names of PMI Annotations

ACIS PMI Importer imports 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 entity (ATTRIB or SPACOLLECTION) in the same way the name of the body or face is queried from ENTITY.

PMI with Multiple Owners

In ACIS PMI Importer, Text, Roughness, Geometry Tolerance, Datum or Datum Target has multiple owners, then a SPACOLLECTION entity is created and all the owners are added as members. The corresponding PMI attribute is attached on the SPACOLLECTION entity which is available at the top level in the ACIS output.

Note: There will be no separate attribute to identity the SPACOLLECTION entity as used for PMI, because there is a PMI attribute on the SPACOLLECTION entity.


Note: If PMI has a single owner, then the PMI attribute is attached directly to the particular entity.


Sample Example

The following sample example illustrates code for implementing PMI data translation.

Identifying the SPAXPMI_DIMENSION Class Object

A Dimension entity can be identified in ACIS as a COLLECTION by:

  • Using the ACIS kernel function:
int entity_type = is_SPACOLLECTION(ENTITY*);
Returns 1 for COLLECTION type entities, which may be SPAXPMI_DIMENSION type or any other COLLECTION type.
  • Querying the attribute on the entity:
Attribute Name: "ATTRIB_XACIS_COLLECTION_TYPE"

Value: 0 (zero for collection of Dimension type entity)

If you include the spaxpmi_dimension.hxx header file (available at SPAXAcisPMI\PublicInterfaces), you can query the dimension data. You can identify entity as SPAXPMI_DIMENSION using either:

  • int dim_type = is_SPAXPMI_DIMENSION(ENTITY*)
Returns 1 for Dimension type entities.
  • int Entity_level = iEnt->identity();
Returns SPAXPMI_DIMENSION_TYPE for Dimension type Entity.

Retrieving Dimension Data

while ( NULL ! = (iEnt = pAcisEntities.next() ) )
{
      if( SPAXPMI_DIMENSION_TYPE ! = iEnt ->identity())
            continue;
      //...
      //...
      *
      //...
      //...
}
  • For each iEnt, you may query the Dimension data as shown in the following sections.

Retrieving the Name of Dimension

ATTRIB_GEN_STRING* pId = NULL;
outcome    result = api_find_named_attribute( iEnt, "ATTRIB_XACIS_NAME", reinterpret_cast< ATTRIB_GEN_NAME*&>( pId) );
const char* pDimensionName = pId->value();

Retrieving the Associated Geometric Entities, Dimension, and Values

SPAXPMI_DIMENSION * iGtAtt = static_cast< SPAXPMI_DIMENSION *>(iEnt);
int numEntities = iGtAtt->count();
iGtAtt->init();
ENTITY*associatedEnt = NULL;
while( (associatedEnt = iGtAtt->next()) ! = NULL)
{
     if(associatedEnt ! = NULL)
     {
          //...
          //...
          //associatedEnt is an ACIS entity of type face
          //edge or wire or vertex."
          //...
     }
}
dimension_type    dimType    = iGtAtt->get_dimension_type();
dimension_subtype dimSubType = iGtAtt->get_dimension_subtype();
double dimValue   = iGtAtt->get_dimension_value();
double upperLimit = iGtAtt->get_dimtol_upper_limit();
double lowerLimit = iGtAtt->get_dimtol_lower_limit();
double precision  = iGtAtt->get_dimtol_precision();
const wchar_t * nt_upper = iGtAtt->get_alphanum_tol_upper_val();
const wchar_t * nt_lower = iGtAtt->get_alphanum_tol_lower_val();
const char *    nt       = iGtAtt->get_note();
logical valid = iGtAtt->is_valid();

Retrieving Dimension Extremities

SPAposition dimLineExtPoint1;
SPAposition dimLineExtPoint2;
logical dimLineExtremities = iGtAtt->get_dimension_line_extremities(dimLineExtPoint1,dimLineExtPoint2);

Sample Outputs

Dimension Support

The following illustration represents a 3D-CoordDimension:

Upon translation to ACIS, the SPAXPMI_DIMENSION object has the following values:

Name: Part1|Annotation Set.1|Coordinate Dimension.1 
-
Geometry :VERTEX(id = "7218")
Dimension Type :1
Dimension SubType :7
Dimension Value :10.000000
Dim. Tol. UpperLimit:-10.000000
Dim. Tol. LowerLimit:10.000000
Dim. Tol. Precision :0.000000
Tol. AlphaNum Uval :
Tol. AlphaNum Lval :
Note :
Dimension Validity :1

=========================================================

Basic Dimensions

The following figure illustrates basic dimension:

Upon translation to ACIS, the SPAXPMI_DIMENSION object has the following values:

Dimension: Length_Dims2|Annotation Set.1|Basic dimension.2
-
Geometry :EDGE(id = "13944")
Geometry :EDGE(id = "1829")
Dimension Type :1
Dimension SubType :1
Dimension Value :3.980850
Dim. Tol. UpperLimit:0.000000
Dim. Tol. LowerLimit:0.000000
Dim. Tol. Precision :0.010000
Tol. AlphaNum Uval :
Tol. AlphaNum Lval :
Note :
Dimension Validity :1

Angular Dimension

In ACIS, the unit of Angle is always degree. The following figure illustrates Angular Dim:

In ACIS, the translated values are as follows:

Dimension: Angular_Dims|Annotation Set.1|Dimension.B1a1-B3f3
-
Geometry :FACE(id = "5507")
Geometry :FACE(id = "5513")
Dimension Type :3
Dimension SubType :4
Dimension Value :32.78
Dim. Tol. UpperLimit:0.000000
Dim. Tol. LowerLimit:0.000000
Dim. Tol. Precision :0.010000
Tol. AlphaNum Uval :"H35"
Tol. AlphaNum Lval :"f42"
Note :
Dimension Validity :1

The following illustration shows tolerance values (in degrees) for Angular Dim:

In ACIS, the translated values are as follows:

Dimension: Angular_Dims|Annotation Set.1|Dimension.B2a1-B3f2 found
-
Geometry :EDGE(id = "8425")
Geometry :EDGE(id = "10856")
Dimension Type :3
Dimension SubType :4
Dimension Value :48.75
Dim. Tol. UpperLimit:0.500000
Dim. Tol. LowerLimit:-1.500000
Dim. Tol. Precision :0.010000
Tol. AlphaNum Uval :
Tol. AlphaNum Lval :
Note :
Dimension Validity :1

Note: The Dimensions linked to Free Points, Free Curves, or Work Planes defined in Geometric Sets or Construction geometries are translated with those associated entities if options to translate free points, curves, and workplanes (TranslateFreePoints, TranslateFreeCurves, TranslateWorkPlanes) are set to TRUE.


Dimension Support from Pro/E to ACIS

InterOp supports translation of Driven, Reference, and Driving types of Pro/E Dimensions to ACIS.

Linear Driven Dimension

The following figure shows a Pro/E part file with Linear Driven dimension given on vertices of a solid:

In ACIS the translated Tolerance Linear dimension is represented as:

Dimension: WF2_A1A1|AE_DRIVEN_DIM0 found
-
Geometry :EDGE(id = 49)
Geometry :EDGE(id = 86)
Dimension Type :3
Dimension SubType :1
Dimension Value :15.000000
Dim. Tol. UpperLimit:0.010000
Dim. Tol. LowerLimit:0.010000
Dim. Tol. Precision :0.010000
Tol. AlphaNum Uval :NULL
Tol. AlphaNum Lval :NULL
Note :NULL
Dimension Validity :1

============================================================
Dimension: WF2_A1A1|AE_DRIVEN_DIM1 found
-
Geometry :EDGE(id = 102)
Geometry :EDGE(id = 88)
Dimension Type :3
Dimension SubType :1
Dimension Value :17.500000
Dim. Tol. UpperLimit:0.010000
Dim. Tol. LowerLimit:0.010000
Dim. Tol. Precision :0.010000
Tol. AlphaNum Uval :NULL
Tol. AlphaNum Lval :NULL
Note :NULL
Dimension Validity :1

=============================================================

Reference Angular Dimension

The following figure shows a Pro/E part file with reference angular dimension specified on an edge:

In ACIS the translated REFERENCE Angular dimension on edge is represented as:

Dimension: WF2_B1B1|AE_REFERENCE_DIM0 found
-
Geometry :EDGE(id = 143)
Geometry :EDGE(id = 145)
Dimension Type :2
Dimension SubType :4
Dimension Value :120.000000
Dim. Tol. UpperLimit:0.000000
Dim. Tol. LowerLimit:0.000000
Dim. Tol. Precision :0.000000
Tol. AlphaNum Uval :NULL
Tol. AlphaNum Lval :NULL
Note :|REF||||Dimension Validity :1

==============================================================

Driving Dimension

The following figure shows a part file with Driving dimensions of a Hole feature:

Implementation of Pro/E Driving Dimensions in ACIS

Driving dimensions in the Pro/E model are often attached to sketch entities instead of the resulting BRep faces. In such cases, the sketch entities will be translated to ACIS as wire edges. The Driving dimensions will have associated geometry as follows:

  • BRep faces/edges or the wire edges of the constructive feature geometry wire body (from sketch entities).
  • Respective feature group.

Accessing Driving dimensions data in ACIS is similar to accessing Driven and Reference dimensions. The following figure shows the resultant ACIS Hole with the feature construction geometry wire body (marked in red):

In ACIS the translated Driving dimensions of the Hole feature are represented as:

Dimension Support from Unigraphics to ACIS

InterOp supports translation of Basic, Reference, and Tolerance types of Unigraphics Dimensions to ACIS.

Linear BASIC Dimension

The following figure shows a Unigraphics part file with Linear BASIC dimension given on vertices of a solid:

In ACIS the translated Tolerance Linear dimension is represented as:

Dimension: 2464 found
-
Geometry :FACE(id = "27")
Geometry :FACE(id = "33")
Dimension Type :1
Dimension SubType :1
Dimension Value :120.000000
Dim. Tol. UpperLimit:0.000000
Dim. Tol. LowerLimit:0.000000
Dim. Tol. Precision :0.000000
Tol. AlphaNum Uval :NULL
Tol. AlphaNum Lval :NULL
Note :NULL
Dimension Validity :1

=============================================================

REFERENCE Angular Dimension

The following figure shows a Unigraphics part file with REFERENCE Angular dimension given on the edge of a body:

In ACIS the translated REFERENCE Angular dimension is represented as:

Dimension: 2455 found
-
Geometry :EDGE(id = "12")
Geometry :EDGE(id = "16")
Dimension Type :2
Dimension SubType :4
Dimension Value :48.116
Dim. Tol. UpperLimit:0.000000
Dim. Tol. LowerLimit:0.000000
Dim. Tol. Precision :0.000000
Tol. AlphaNum Uval :NULL
Tol. AlphaNum Lval :NULL
Note :NULL
Dimension Validity :1

=============================================================

Tolerance Dimension

The following figure shows a Unigraphics part file with TOLERANCE dimension given on the edge of a body:

In ACIS the translated Tolerance dimension is represented as:

Dimension: 3193 found
-
Geometry :FACE(id = "16")
Dimension Type :3
Dimension SubType :1
Dimension Value :40.000000
Dim. Tol. UpperLimit:0.200000
Dim. Tol. LowerLimit:-0.100000
Dim. Tol. Precision :0.000000
Tol. AlphaNum Uval :NULL
Tol. AlphaNum Lval :NULL
Note :|||||Dimension Validity :1

=============================================================

Non-semantic GD&T PMI Imported from CATIA V5

Translation of Non-semantic GD&T PMI is supported in ACIS. The following figure illustrates a CATIA V5 file with non-semantic GD&T PMI attached to it:

Non-semantic GD&T PMI

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 -1 and the note field of GeomTol is set to 0.005 Tol|Upper Note|Lower Note.

In ACIS the translated Tolerance dimension is represented as:

Geomtol attribute found
---------------------------------------------------------------------
Owner               :FACE(id = "697")
Tolerance Type      :11
Mod Dia Type        :0
Tolerance Magnitude :-1.000000
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
Semantic            :FALSE
-----------------------------------------
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

Refer to Non-semantic Stacked GeomTol PMI.



Capture Support from CATIA V5 to ACIS

InterOp supports translation of captures from CATIA V5 to ACIS.

Captures in CATIA V5

Refer to SPAXPMI_CAPTURE for implementation details.

XML Dump of Captures

The red dot on the Initial State capture indicates it is a current capture. The flag Current="TRUE" is appended in the XML output. The XML output of the above translated file is as follows:

Hidden Captures

The CATIA V5 modeler automatically hides some of the captures if the displayed capture is changed. A preview is shown below.

Captures in CATIA V5

To translate the hidden captures, the TranslateHiddenEntities option should be set to TRUE; the hidden annotation entities are also translated. The flag Visibility="FALSE" is appended for hidden entities. The XML output of the hidden captures is as shown below.

Hidden Text in Capture

In CATIA V5, moving the cursor over a capture displays its hidden text, if present.

Hidden Text in Capture

In the above image, the capture Dimensions contains the hidden text, "This capture contains all Dimensions". An example of the XML output of this hidden text is as follows:

<HiddenText Value="This capture contains all Dimensions"/>

Clipping Plane in Capture

If the Clipping Plane command is activated in CATIA V5, the clipping of the active view is displayed.

Clipping Plane in Capture

In the above image, Section Cut View.2 is the active view. The clipping plane is displayed in orange dotted lines. The red arrow shows the normal of this clipping plane. In XML the translated clipping plane is displayed with Clipping Plane Display Point and Clipping Plane Display Normal in the following format:


<Clipping_Plane_Information>
        <Clipping_Plane_Origin X=<double> Y=<double> Z=<double>/>
        <Clipping_Plane_Normal X=<double> Y=<double> Z=<double>/>
      </Clipping_Plane_Information>


Camera Associated with Capture

If Camera is associated with a capture, its properties are translated to ACIS. The camera helps a user to display a 3D model in the required orientation and zoom. The Camera Properties window shows various camera properties such as Name, Type, Origin, Target, View Angle, and Zoom.

There are two types of cameras:

  • Parallel
For the Parallel Camera, the View Angle field is not editable in the CATIA V5 modeler.
Parallel Camera


  • Perspective
For the Perspective Camera, the Zoom field is not editable in the CATIA V5 modeler.
Perspective Camera

Note: Irrespective of camera type, both View Angle and Zoom fields are translated to ACIS. You must select a proper field depending upon your application.


Camera Properties
Camera Associated with Capture

In the above image, the camera named "section" is associated with the capture "SectionView". InterOp Connect translates camera properties to ACIS as shown in the following XML snippet.

<CameraProperties>
        <Name Value=<string>/>
        <Type Value=<string>/>
        <ViewAngle Value=<double>/>
        <Zoom Value=<double>/>
        <Origin X=<double> Y=<double> Z=<double>/>
        <TargetPosition X=<double> Y=<double> Z=<double>/>
        <ViewDirection X=<double> Y=<double> Z=<double>/>
        <ViewDirectionNormal X=<double> Y=<double> Z=<double>/>
 </CameraProperties>

Refer to Figure. Camera Parameters for an illustration of properties associated with a camera.

Note: The image has been modified to illustrate the parameters of a camera.


Camera Parameters
Personal tools
Live