SUBSYSTEM OVERVIEW
Geometry Data Exchange (GDX) Subsystem
The GDX subsystem provides support for evaluation, approximation, and modification of GDX geometry and topology entities. Following is a listing of functions and tolerances used in the GDX subsystem.
MODEL ACCESS
The following functions are used to manage GDX models:
Setup the information for a GDX model
Get the GDX DDF
Reads a GDX model. Has special GDX specific Attribute and Precision handling that mda_RestoreModel does not have.
Writes a GDX model. Has special GDX specific Attribute and Precision handling that mda_SaveModel does not have.
ENTITY EVALUATION
The following functions evaluate GDX entities:
Check if a GDX curve is degenerate
Check if a GDX surface is degenerate
Evaluate a point on a GDX curve
Evaluate derivatives on a GDX curve
Evaluate a point on a GDX surface
Evaluate derivatives on a GDX surface
Evaluate a normal on a GDX surface
Project a point to a GDX curve
Project a point to a GDX surface
Project a point to a GDX surface using a surface grid
ENTITY CONVERSION
The following functions convert GDX entities from one form to another in the specified GDX model:
Convert a GDX curve entity to a GDX NURB Curve
Convert a GDX NURB Curve to a GDX curve
Converts a GDX NURB Curve to a uniform, unclamped GDX NURB Curve
Approximate a GDX NURB Curve as a GDX Spline Curve
Convert a GDX surface entity to a GDX NURB Surface
Convert a GDX NURB Surface to a GDX surface
Convert a GDX NURB Surface to a uniform unclamped GDX NURB Surface
Approximate a GDX NURB Surface as a GDX Spline Surface
ENTITY TRANSFORMATION
The following functions apply a transformation matrix to the specified GDX entity:
Apply a transformation matrix to a GDX curve entity
Apply a transformation matrix to a GDX surface entity
ENTITY ATTRIBUTES
The GDX Attributes entity defines attributes for curve and surface entities. The purpose of an attributes entity is to enable the transfer of entity related attributes from a Native System to the Target System. Internally, the GDX subsystem has a GDX attribute table which relates GDX Attributes to Native geometry pointers. Applications should not directly access the attribute table nor attributes in the table. They should be accessed via the functions described below.
GDX Attributes entities can be created while converting Native geometric entities to GDX entites. The function gcr_Attributes should be used to create a GDX Attributes entity from Native attribute information. Calls to gdx_AttributeAddToTable are used to add the attribute to a table that stores the relation between Native entity and GDX Attributes entities. To get the attribute data for use in the Target System, calls to gdx_EntityGetAttribute can be made. The SGDX and IGDX subsystems have functions to transfer the attributes. For more information on those interfaces, see sgdx_intro and igdx_intro.
The attribute table relates the attribute information when the GDX model is in memory. To save and restore the attribute information to and from a GDX saved model file, calls to the funcitons gdx_SaveModel and gdx_RestoreModel should be used. When doing so, the relation to Native geomotry will be lost. The attributes will now relate to GDX entities.
Adds a relation between Native-entity and GDX Attribute Entity to the Relation Table.
Gets the attribute entity from the ralation table using its native-entity
Reads a GDX model. Has special GDX specific Attribute and Precision handling that mda_RestoreModel does not have.
Writes a GDX model. Has special GDX specific Attribute and Precision handling that mda_SaveModel does not have.
SOLID and FACE MODIFICATION/MANIPULATION
The following functions operate on GDX Solid and Face entities:
Rebound the surface of a face
Convert the model and/or parm curves in a face to nurbs curves
Convert the surface in a face to a nurbs surface
Generate vertices for a face
Delete the model curves within a Face
Delete the parm curves within a Face
Extract surface and replace in face
Extract surface and replace in face
Generate the new model curves within a Face
Generate the new parm curves within a Face
Improve loop directions for a Face
Improve loop continuity by senses and order in model space for a face
Improve loop continuity by senses and order in parm space for a face
Improve the loop direction or surface normal to ensure face is trimmed
Duplicate a surface if shared by more than one face
For each Edge Curve in an Edge, force the Edge Curve sense to be true.
For each loop in face, force the loop sense to be true.
Ensure that surface of a face is G1 continuous
Ensure that model curve in each edge is G1 continuous
Make the model and parm curves agree for a face
Convert all Trim Curves in the face to explicit curves.
Make all the curves with in a face topology NURBS curves.
Make all the NURBS curves in a face Spline curves.
Change the form of the NURBS surface within a face
Convert the NURBS surface in a face to a spline surface.
Change the form of the NURBS curves and surfaces within a face
Convert the all NURBS curves and surface in a face to a splines
Convert the planar surface in a face to NURBS
Convert a face with a rect trim surface to a face with explicit surface.
Remove edges that are degenerate from a face
Remove degenerate loops from a face.
Remove edges that are poles
Modify face so that loops do not cross the seams of closed surfaces
Replace a surface in a face and its sub-entities with a new surface
Make a face point the oposite direction
Reverse all loops in a gdx face
Rotate a surface for a face so that the seam crossing could be avoided
Split all edge curves that contain composite curves as parameter space curves for a face
Split face if it contains a closed surface into multiple faces to remove the closed surface
Split face if it contains a discontinuous surface into multiple faces to remove the discontinuous surface
Split model curves in the face, and generate an edge for each new model curve. Closed curves or discontinuous curves can be split.
Improve the parameterization of nurb surfaces in a face.
Approximate a face as a grid of lines and the face boundaries
Convert a face to a polyshell. Similar to faceted approximation.
Rebound the surfaces in a solid
Check a solid to determine if it conforms to the euler equation
Convert the entities within a solid to nurbs (curves and surfaces)
Generate vertices for a solid
Delete the model curves within a solid
Delete the parm curves within a solid
Delete the verticies within a solid
Generate the new model curves within a solid
Generate the new parm curves within a solid
Make all the faces in a solid point the same direction.
Improve loop directions for a solid
Improve continuity of all loops in model space for a solid
Improve continuity of all loops in parm space for a solid
Improve the trimming of the faces
Duplicate a surface if shared by more than one face
For each Edge Curve in an Edge, force the Edge Curve sense to be true.
For each face in solid, force the face sense in shell to be true.
For each loop in solid, force the loop sense in face to be true.
Ensure that each surface in the solid is G1 continuous.
Make the model and parm curves agree for a solid
Convert all Trim Curves in the solid to explicit curves.
Change the form of the NURBS curves and surfaces within a solid
Convert the all NURBS curves and surfaces in a solid to a splines
Convert all retangular trimmed surfaces in a solid to explicit surfaces.
Remove edges that are degenerate from a solid
Modify solid so that loops do not cross the seams of closed surfaces
Modify solid so that no two faces share the same surface
Rotate closed surfaces within faces to get rid of seam crossings
Split all edge curves that contain composite curves as parameter space curves for a solid
Split all faces in a solid that contain a closed surface into multiple faces to remove the closed surfaces
Split all faces in a solid that contain a discontinuous surface into multiple faces to remove the discontinuous surfaces
Split model curves in the solid, and generate an edge for each new model curve. Closed curves or discontinuous curves can be split.
Improve the parameterization of nurb surfaces in each face.
Convert a solid to a polyshell. Similar to faceted approximation.
Convert a solid to a list of shells.
ENTITY MODIFICATION/MANIPULATION
The following functions operate on GDX curve and surface entities:
Delete a GDX entity from all its parents
Extract a subcurve from a GDX curve
Extract a subsurface from a GDX NURB Surface
Extract a GDX iso-parametric curve from a GDX surface
Insert a knot into a GDX NURB Curve multiple times
Perform knot removal on a GDX NURB Curve
Insert a knot into a GDX NURB Surface multiple times
Perform knot removal on a GDX NURB Surface
Force a G0 discontinuous GDX NURB Curve to be continuous
Make a GDX NURB Curve G1 continuous
Force a G0 discontinuous GDX NURB Surface to be continuous
Make a GDX NURB Surface G1 continuous
Reparameterize a GDX NURB Curve
Reparameterize a GDX NURB Surface
Reverse a GDX curve entity
Split a GDX NURB Curve at discontinuities
Split a GDX NURB Surface at discontinuities
ENTITY LINEAR APPROXIMATION
The following function performs linear approximations of a GDX entity:
Linear approximate a GDX entity
ENTITY FITTING
The following functions fit data to produce GDX entities in the current GDX model:
Least squares fit of data to produce a GDX NURB Curve
Least squares fit of data to produce a GDX NURB Surface
ENTITY INTERPOLATION
The following functions interpolate data to produce GDX entities in the current GDX model:
Interpolate data points to produce a GDX NURB Curve
MISCELLANEOUS
The following miscellaneous functions are provided:
Get the approximate extents of a GDX curve
Get the closure status of a GDX curve
Get the continuity of a GDX curve
Get the curvature of a GDX curve
Get the degree of a GDX curve
Get the parametric bounds of a GDX curve
Get the planarity of a GDX curve
Get the rationality of a GDX curve
Get the U and V closure status of a GDX surface
Get the continuity of a GDX surface
Get the curvature of a GDX surface
Get the U and V degree of a GDX surface
Get the U and V parametric bounds of a GDX surface
Apply a GDX matrix to 3D points
Apply a GDX matrix to 4D points
Get the NURBS curve continuous bounds values
Get the NURBS surface continuous bounds values
Find the intersections of two GDX NURB Curves
Normalize a given parameter value
Unnormalize a given parameter value
MODEL CONVERSIONS
Convet the data to specified unit from unit in GDX_MODEL_VAR ent.
TOLERANCING
The tolerances used by the GDX subsystem are assumed to pertain to an entire model. The tolerances for a model can be initialized by calling gdx_InitTolerances. The tolerances can also be individually set or retrieved using the mda_SetTol/mda_SetTol2 and mda_GetTol/mda_GetTol2 functions. Finally, the tolerances used by the GDX subsystem during entity approximation, conversion, or other manipulation are set using gdx_SetTolerances. The entity manipulating functions in the GDX subsystem assume that gdx_SetTolerances has been appropriately called.
The following functions apply to tolerancing:
Initialize GDX tolerances for a model
Set tolerance for use in the GDX subsystem
Clear the global tolerance setting
Get the current GDX ANGLE_TOL
Get the current GDX CONVERGE_TOL
Get the current GDX CURVATURE_TOL
Get the current GDX DERIVATIVE_TOL
Get the current GDX INTERSECT_TOL
Get the current GDX MODEL_SPACE_PNT_TOL
Get the current GDX NORMAL_MAG_TOL
Get the current GDX PARM_SPACE_PNT_TOL
Get the current GDX TANGENT_TOL
The tolerances used by the GDX subsystem can be accessed through the mda_SetTol, mda_SetTol2, mda_GetTol, and mda_GetTol2 functions. The following are the tolerance names, descriptions and default values used by the GDX subsystem:
| Tolerance Name | Description | Default Value |
| ZERO_TOL | Absolute value which when | 1.0e-13 |
| less than will equal zero | ||
| MODEL_SPACE_PNT_TOL | Distance between model | 0.001 |
| space points which when | ||
| less than makes the points | ||
| equivalent. Restored and | ||
| saved from a GDX model | ||
| when gdx_RestoreModel or | ||
| gdx_SaveModel is used | ||
| PARM_SPACE_PNT_TOL | Distance between parameter | 1.0e-8 |
| space points which when | ||
| less than makes the points | ||
| equivalent | ||
| ISO_PARM_TOL | When two surface parameter | 1.0e-8 |
| points differ by less than | ||
| this value the points form | ||
| a surface iso-parametric | ||
| curve | ||
| CONVERGE_TOL | When the difference between | 1.0e-12 |
| two consecutive parametric | ||
| values is less than this | ||
| value non-convergence is | ||
| defined | ||
| KNOT_TOL | When two knots differ by | 1.0e-10 |
| less than this value the | ||
| knots are considered | ||
| identical | ||
| Tolerance Name | Description | Default Value |
| INTERSECT_TOL | For intersections, the | 1.0e-12 |
| value that determines when | ||
| two intersections are | ||
| parametrically the same | ||
| PARALLEL_LINES_TOL | When the radian angle | 1.0e-7 |
| between two lines is less | ||
| than this value the lines | ||
| are considered parallel | ||
| ANGLE_TOL | When an radian angular | 1.0e-7 |
| differences is less than | ||
| this value the angles are | ||
| considered to be the same. | ||
| Restored or saved from a | ||
| GDX model when | ||
| gdx_RestoreModel or | ||
| gdx_SaveModel is used. | ||
| PNT_PROJ_TOL | When a point is project to | 1.0e-10 |
| a curve or surface and the | ||
| difference between projected | ||
| points is less than this | ||
| value the projection is | ||
| considered to have converged | ||
| COLLINEAR_TOL | The tolerance that | 1.0e-7 |
| determines when 3 points | ||
| are colinear as the deviation | ||
| of the dot product of the | ||
| direction vectors from 1.0 | ||
| COPLANAR_TOL | The tolerance that | 1.0e-8 |
| determines when 4 or more | ||
| points are coplanar | ||
| NORMAL_MAG_TOL | When the magnitude for a normal | 1.0e-6 |
| is less than this value the | ||
| normal is considered to have | ||
| a zero magnitude | ||
| Tolerance Name | Description | Default Value |
| SINGULAR_TOL | When the magnitude of a matrix | 1.0e-10 |
| element for solving s set of | ||
| equations is less than this | ||
| value the solution is considered | ||
| singular | ||
| TANGENT_TOL | When the radian angle | 1.0e-4 |
| between two tangents is | ||
| less than this value | ||
| the tangents are considered | ||
| equal | ||
| CURVATURE_TOL | When the difference between | 1.0e-4 |
| two curvature values is less | ||
| than this value the curvature | ||
| is considered equal | ||
| DERIVATIVE_TOL | When the difference between | 0.001 |
| two derivatives is less than | ||
| this value the derivatives | ||
| are considered equal | ||
See the manual pages for the full bindings.