# SUBSYSTEM OVERVIEW

PGDX Interface (PINT) Subsystem

The PGDX subsystem is a low level subsystem in the PINT interface. The PGDX subsystem is responsible for converting MDA Parasolid entities (PINT) to/from MDA GDX entities.

# GENERAL CONCEPTS

This subsystem converts GDX entities to PINT or PINT entities to GDX. The conversion will convert the specified entity type and all of its children to the corresponding representation in the other model.

Presently, the PGDX subsystems has conversions for the GDX Solid, Shell, and Face to PINT and for the PINT Solid Body, and Sheet Body to GDX. The functions are documented below.

# TOLERANCES/PRECISIONS

The PINT precision and session precision fields in the body are directly converted to and from GDX model space tolerance and angle tolerance. The PINT edge precision and PINT vertex precision are not processed during PINT to GDX processing. However, PINT edge and vertex precisions can be set with options to pgdx_GDXSolidToPINT.

# FUNCTIONS

The PGDX subsystem consists of the following functions:

pgdx_Initialize

Initialize the PGDX subsystem

pgdx_GDXFaceToPINTSheetBody

Convert an independent GDX Face to PINT Sheet Body

pgdx_GDXShellToPINTSheetBody

Convert an independent GDX Shell to PINT Sheet Body

pgdx_GDXSolidToPINTSolidBody

Convert an independent GDX Solid to PINT Solid Body

pgdx_PINTSheetBodyToGDXFace

Convert a PINT Sheet Body to GDX Face

pgdx_PINTSheetBodyToGDXShell

Convert a PINT Sheet Body to GDX Shell

pgdx_PINTSolidBodyToGDXSolid

Convert a PINT Sheet Body to GDX Solid

pgdx_Terminate

Terminate the PGDX subsystem

# PINT -> GDX conversions

    PINT_ASSEMBLY
       Not processed.  PPIR subsystem does not create assemblies in PINT model.

    PINT_BODY
       To GDX_SOLID.  May create more than one solid.  Only Parasolid Solid
       Bodies are converted, Minimum, wire, and sheet bodies are not converted
       to GDX.  The PINT_BODY has a precision fields.  These represents the
       session precisions in the Parasolid model.  The precisions are used
       to set the GDX model space tolerance and angle tolerance.
    PINT_REGION
       To GDX_SOLD.  The GDX solid only represents solid material, not void
       space.  Thus, only the solid PINT regions are converted to GDX, the
       void regions are ignored.

    PINT_SHELL
       To GDX_SHELL.  Only PINT wire frame free shells are converted to GDX.
       Acorn, wire frame, and mixed shell types are not converted to GDX.

    PINT_FACE
       To GDX_FACE.  Conversion can handle PINT faces without loops.  In such
       cases, the resulting GDX face will have a single loop representing the
       boundary of the surface.
    PINT_LOOP
       To GDX_LOOP.  GDX does not have an isolated loop (vertex loop), thus
       the isolated loops are not converted directly.  The isolated loops are
       handled so that the parent face will still represent the geometric
       face.

    PINT_FIN
       To GDX_EDGE and GDX_EDGE_CURVE.  The PINT_FIN corresponds to an edge
       usage entity.  GDX and Parasolid differ here.  In Parasolid, the
       usage (fin) references the edge, however, in GDX the usage (edge curve)
       is referenced from the edge.  Thus, the PINT_FIN is not a direct
       conversion.  The PINT_FIN will never have a curve.  The PPIR subsystem
       converts the fin curve (usually spcurves) to model curves and stores
       them in the PINT_EDGE.
    PINT_EDGE
       To GDX_EDGE.  Only normal and general edge types are converted.  The
       wire frame and laminar edges are not processed at this time.  Nor, is the
       PINT edge precision handled at this time.  The vertices in the edge
       are used to explicitly trim the GDX curves.  GDX requires trimmed
       curve geometry.
    PINT_VERTEX
       To GDX_VERTEX.  Only isolated and normal vertices are processed at this
       time.  The spur and wire vertices are not processed.
    PINT_SPUN_SURFACE
       To GDX_REV_SURF.  At this time the PPIR subsystem is converting spun
       surfaces to bsurfaces.  This is being done, because the Parasolid spun
       surface can reference infinite geometry, which can not be handled by
       GDX.
    PINT_BSURFACE
       To GDX_NURB_SURFACE.
    PINT_BLEND_SURFACE
       Not processed by PGDX.  PPIR subsystem converts blend surface to
       bsurfaces.
    PINT_OFFSET_SURFACE
       To GDX_OFFSET_SURF.
    PINT_SWEPT_SURFACE
       To GDX_EXT_SURF.
    PINT_CONE
       To GDX_CONE
    PINT_CYLINDER
       To GDX_CYLINDER
    PINT_PLANE
       To GDX_PLANE
    PINT_SPHERE
       To GDX_SPHERE
    PINT_TORUS
       To GDX_TORUS
    PINT_BCURVE
       To GDX_NURB_CURVE
    PINT_LINE
       To GDX_POLYLINE
    PINT_CIRCLE
       To GDX_ARC
    PINT_ELLIPSE
       To GDX_CONIC

    PINT_TRCURVE
       Not processed by PGDX.  PPIR subsystem converts trim curve to bcurve.

    PINT_INTERSECTION_CURVE
       Not processed by PGDX.  PPIR subsystem converts trim curve to bcurve.
    PINT_SPCURVE
       Not processed by PGDX.  PPIR subsystem converts trim curve to bcurve.

# GDX -> PINT conversions

    Special Notes
       Parasolid assumes a default unit of meters.  The function
       gdx_ModelConvertUnits is to be used to convert the geometry to meters.
       The unit conversion is performed on the whole GDX model at once.  It
       could not be an entity mapping.  Thus, any program to create Parasolid
       data must call this function.  For more information on GDX units, see
       gdx_ModelConvertUnits, gcr_ModelVar, gdx_model_var.
       Parasolids does not have a face sense or a loop sense.  Thus, all the
       faces senses and loop senses must be true in the GDX data prior to
       converting it into Parasolids (PINT).  Parasolids also requires
       G1 continuous surfaces and curves. These constraints
       on Parasolid data can be taken care of by using the mapping
       "gdx_solid -> process gdx_solid" with the GMP_PREP_PS option, or the
       gdx_SolidProcessAll() with the GDX_PREP_PS option.

       View the sample programs, ptog.c and gtop.c, to see how GDX and
       Parasolids interact with mappings.
    GDX_SOLID
       To PINT_BODY and REGION.  A PINT solid region and PINT body will be
       created for each body.  Void regions will not be created.  The PPIW
       does not process void regions.  Only manifold GDX bodies should be
       converted to PINT.  The precision and angle precision in the PINT body
       are set by the GDX model space tolerance and angle tolerance
       respectfully.
    GDX_SHELL
       To PINT_SHELL.

       An independent GDX_SHELL entity can be converted to a PINT Sheet Body
    GDX_FACE
       To PINT_FACE.  Parasolid does not have a loop sense.  Thus, the loop
       senses in each GDX edge must be true.  A call to the function
       gdx_SolidMakeLoopSenseTrue will ensure that the loop senses in all
       faces are true.

       An independent GDX_FACE entity can be converted to a PINT Sheet Body
    GDX_LOOP
       To PINT_LOOP and PINT_FIN.  The fin is created from the loop, because
       it is the usage of the edge.

    GDX_EDGE
       To PINT_EDGE.  The curve in the PINT edge is the model curve from the
       GDX edge curve.  Options to pgdx_GDXSolidToPINT enable the PINT edge
       precision to be set.

    GDX_EDGE_CURVE
       To PINT curve in edge.  The model curve in the GDX edge curve is used
       to generate the PINT curve in the PINT edge.  The parm curves in the
       GDX edge curve are ignored.
    GDX_VERTEX
       To PINT_VERTEX.  Options to pgdx_GDXSolidToPINT enable the PINT vertex
       precision to be set.
    GDX_REV_SURF
       To PINT_BSURFACE.  This conversion is being performed because the
       GDX_REV_SURF and PINT_SPUN_SURFACE handle the referenced geometry.
       The two entities bound the curve differently.
    GDX_BSURFACE
       To GDX_NURB_SURFACE.
    GDX_OFFSET_SURFACE
       To PINT_OFFSET_SURF.
    GDX_EXT_SURFACE
       To PINT_SWEPT_SURF.
    GDX_CONE
       To PINT_CONE
    GDX_CYLINDER
       To PINT_CYLINDER
    GDX_PLANE
       To PINT_PLANE
    GDX_SPHERE
       To PINT_SPHERE
    GDX_TORUS
       To PINT_TORUS
    GDX_RULED_SURF
       To PINT_BSURFACE.  Parasolid does not have a ruled surface representation.
    GDX_RECT_TRIM_SURF.
        To PINT_BSURFACE. Parasolid does not have a rectangular surface
       representation.
    GDX_SPLINE_SURF.  Parasolid does not have a parametric spline surface
       representation.
    GDX_NURB_CURVE
       To PINT_BCURVE.
    GDX_POLYLINE
       To PINT_LINE.  Only 2 point polylines are processed.  Resulting PINT
       line is not bounded.  Referencing geometry and topology will bound
       the line.
    GDX_ARC
       To PINT_CIRCLE.  Create a full circle.  Referencing geometry and
       topology will bound the circle if need.
    GDX_CONIC
       To PINT_BCURVE.  Parasolid can not represent all of the GDX conic types,
       so they are converted to bcurves.

    GDX_TRIM_CURVE
       To PINT_BCURVE.  Trim curves are not compatible between Parasolid and
       gdx because of parameterization differences.

    GDX_SPLINE_CURVE
       TO PINT_BCURVE.  Parasolid does not ha a parametric spline
       representation.