Synopsis
PDX_MSGT gdx_SolidToPolyShell2(long option, MDA_PTR gdx_solid_ptr, double approx_tol, int model, long *num_gdx_ps_ptrs, MDA_PTR **gdx_ps_ptrs, OTM_TREE *gdx_ps_surf_tree)
Purpose
Convert (tessellate) GDX Solid to GDX Polyshell(s)
Description
This function tessellates a GDX Solid to one or more GDX Polyshell entities. The resulting polyshell consists of counter-clockwise polygons (sometimes referred to as facets or tessellants). Each of the polygons will be within approx_tol of the Solid.
For the best results, incoming solids should not contain loops which are open, self-intersecting or intersect other loops, and incoming solids must contain faces with single outer loops. This can be taken care of by calling the following function with this option: gdx_SolidProcessAll with the GDX_PREP_POLYSHELL By default the input GDX Solid will be exactly the same as the output GDX Solid. If the option GDX_NO_COPY, is used, the UV points that are returned in the tessalation were calculated on the returned GDX Solids re-parameterized surfaces. When the option GDX_POLYSHELL_PER_FACE, is used, and the binding OTM_TREE @d gdx_ps_surf_tree is passed in, then each polyshell will be directly associated with its corresponding re-parameterized surface in the tree. If this is not wanted, pass in NULL instead of the OTM_TREE. The tree will be populated by the object: typedef struct gdx_solid_ps_surf { MDA_PTR gdx_ps_ptr; GDX polyshell MDA_PTR gdx_surf_ptr; Associated re-parameterized surface } GDX_SOLID_PS_SURF; The tree should be allocated with the form: OTM_TREE *gdx_ps_surf_tree; gdx_ps_surf_tree = otm_CreateTree (OTM_NOOPT, sizeof (GDX_SOLID_PS_SURF), gdx__PSSurfCompareObject, NULL)
Input
option
GDX_NOOPT
(default) Solid is converted to a single polyshell. Each segment of the polyshell is used in exactly two polygons
GDX_NO_COPY
The output Solid may have new UV points based on the new re-parameterized surfaces
GDX_POLYSHELL_PER_FACE
Solid is converted to multiple polyshells, one per each face of solid
GDX_POLYSHELL_FAST
By default the tesselation merges all duplicate edges and points. However, when this option is specified, the duplicates are not removed.
gdx_solid_ptr
GDX Solid data base pointer
approx_tol
Approximation tolerance
model
Destination model
Output
num_gdx_ps_ptrs
Number of GDX Polyshell entities returned
gdx_ps_ptrs
GDX Polyshell data base pointers
gdx_ps_surf_tree
OTM tree that associates polyshells to their surfaces
Return
GEA_NOERR
.fi