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:
Initialize the PGDX subsystem
Convert an independent GDX Face to PINT Sheet Body
Convert an independent GDX Shell to PINT Sheet Body
Convert an independent GDX Solid to PINT Solid Body
Convert a PINT Sheet Body to GDX Face
Convert a PINT Sheet Body to GDX Shell
Convert a PINT Sheet Body to GDX Solid
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.