Topo Library Functions

 

EdgesGetVrtxs

TTabCoinEdgMrge

TrmFaceMkUnique

TrmFaceMkUnqShp

TrmFaceMkUnqWkr

VxEdgGetCrv

VxEdgGetTol

VxEdgGtShape

VxEdgMk

VxFaceExplode

VxFaceGetSrf

VxFaceGetSrfF

VxFirstShp

VxIsShpClsd

VxShapGetBndBox

VxShapeExplode

VxShapeMk

VxShlDel

VxShlDelChk

VxShlGtShape

VxShlMk

VxShlRvrsDirs

VxShlSew

VxShpGetShls

VxTopTabCopy

VxTopTabCopyNoErr

VxTopTabDel

VxTopTabResiz

VxTrmFaceMk

VxVtxDel

VxVtxGetCoords

VxVtxGetEdgs

VxVtxGetTol

VxVtxGtShape

VxVtxMk

 


 

 EdgesGetVrtxs

int EdgesGetVrtxs(VsApplTopTable *, VsListObj *, VsListObj **)
VsApplTopTable *pzTt i
pointer to topology table 
VsListObj *pzEdgLst i
index list of edges 
VsListObj **ppzVtxLst i
index list of vertices 

Description

   Get index list of vertices attached to the given edge list.
   Note that The VsAppData field in VsVertex entities is used as a visit
   flag to speed up the traverse.

Memory-Management

   if *ppzVtxLst == V_NULL, this routine allocate vertex index list.
   Caller has to deallocate index list of vertices.

Caveats

 

 Top


 TTabCoinEdgMrge

int TTabCoinEdgMrge(VsListObj *, VsApplTopTable *)
VsListObj *pzLstEdge i
List of edge indices to merge
If set to null, all edges in
the table will be merged 
VsApplTopTable*top_table i
Topology table 

Description

   This routine detects and joins coincident edges in the topology table. Only
   edges within the same shape will be merged.

Memory-Management

 

Caveats

 

 Top


 TrmFaceMkUnique

int TrmFaceMkUnique(double,VsApplTopTable*,int,VsNurbSurf*,int*)
double dTol i
3D tolerance 
VsApplTopTable *pzTt io
pointer to topology table 
int idShl i
index to current shell 
VsNurbSurf *pzSrf i
pointer to surface 
int *pidFac o
index of new face 

Description


Creates a face, loops, pre-edges, edges and vertices from surface data
in the topology table.


Note that this routine is the same as VxTrmFaceMk() except this creates a new vertex while VxTrmFaceMk() refers to existing one if there is a vertex of same coordinates in the vertex table of the shape. This routine is written to speed up face join of parting surfaces.

Memory-Management

 

Caveats

   err == -2  means surface was found to be a duplicate.

 Top


 TrmFaceMkUnqShp

int TrmFaceMkUnqShp(double,VsApplTopTable*,int,VsNurbSurf*,int*,int)
double dTol i
3D tolerance 
VsApplTopTable *pzTt io
pointer to topology table 
int idShl i
index to current shell 
VsNurbSurf *pzSrf i
pointer to surface 
int *pidFac o
index of new face 
int idShp i
search only this shape 

Description


Creates a face, loops, pre-edges, edges and vertices from surface data
in the topology table.


Note that this routine is the same as VxTrmFaceMk() except this creates a new vertex while VxTrmFaceMk() refers to existing one if there is a vertex of same coordinates in the vertex table of the shape. This routine is written to speed up face join of parting surfaces.

Memory-Management

 

Caveats

   err == -2  means surface was found to be a duplicate.

 Top


 TrmFaceMkUnqWkr

int TrmFaceMkUnqWkr(double,VsApplTopTable*,int,VsNurbSurf*,int,int,int*)
double dTol i
3D tolerance 
VsApplTopTable *pzTt io
pointer to topology table 
int idShl i
index to current shell 
VsNurbSurf *pzSrf i
pointer to surface 
intfChkDup i
Flag whether to check for a duplicate face 
int idShp i
restrict search to Shape ID 
int *pidFac o
index of new face 

Description


Creates a face, loops, pre-edges, edges and vertices from surface data
in the topology table.


Note that this routine is the same as VxTrmFaceMk() except this creates a new vertex while VxTrmFaceMk() refers to existing one if there is a vertex of same coordinates in the vertex table of the shape. This routine is written to speed up face join of parting surfaces.

Memory-Management

 

Caveats

   err == -2  means surface was found to be a duplicate.

 Top


 VxEdgGetCrv

int VxEdgGetCrv( const VsApplTopTable *, int , VsNurbCurv **)
const VsApplTopTable *toptbl i
Topology table. 
int edge_index i
Index of edge in topo table. 
VsNurbCurv **curve o
Pointer to NURB curve. 

Description

   Given an edge, this routine returns a pointer to the underlying edge. 

Memory-Management

 

Caveats

 

 Top


 VxEdgGetTol

int VxEdgGetTol(VsApplTopTable *,int ,double *)
VsApplTopTable *toptbl i
Topology table 
int edg_index i
Edge index 
double *tol o
Pointer to tolerance 

Description

   This routine gets the tolerance associated with a given edge.
   Return 1 if error, else 0.

Memory-Management

 

Caveats

 

 Top


 VxEdgGtShape

int VxEdgGtShape(VsApplTopTable *, int , int *)
VsApplTopTable *toptbl i
Topology table. 
int indxEdge i
Index of edge to check. 
int *indxShape o
Index of associated shape. 

Description

   Find the index of the shape associated with the specified edge.

Memory-Management

 

Caveats

 

 Top


 VxEdgMk

int VxEdgMk( VsApplTopTable *, VsNurbCurv *, double , int , int *)
VsApplTopTable *toptbl i
Topology table. 
VsNurbCurv *curve i
Nurb curve. 
double tol i
Tolerance. 
int shape_indx i
Index of shape the edge is being added to 
int *index o
Index of new edge. 

Description

   Creates a new edge in the topology table.

Memory-Management

 

Caveats

 

 Top


 VxFaceExplode

int VxFaceExplode(VsApplTopTable *, VsXRef2, int, int, int *)
VsApplTopTable *pzTT i/o
Topology table 
VsXRef2 zShlFcIndx i
Face to explode 
int fOldBox i
Recompute old shell box. 
int fRebuild i
Rebuild 3D edges after explode from boundary. 
int *piNewShlIdx o
Index of shell containing the exploded face 

Description


Explode a face from a shell. No checking is done on the shell the face is
exploded from. Call VxShlChkVld() to validate the shell.

Memory-Management

 

Caveats

 

 Top


 VxFaceGetSrf

int VxFaceGetSrf( const VsApplTopTable *, int , int , VsNurbSurf **)
const VsApplTopTable *toptbl i
Topology table. 
int face_index i
Face index. 
int shell_index i
Shell index. 
VsNurbSurf **surf o
Pointer to a VsNurbSurf pointer. 

Description

   Given a face, returns the underlying surface.

Memory-Management

   Same as VxTopTabGetGeom, calling function must deallocate surface
   structure after completion preferably via VmSurfDealloc(surf).

Caveats

 

 Top


 VxFaceGetSrfF

int VxFaceGetSrfF( const VsApplTopTable *, int , int , VsNurbSurf **, int)
const VsApplTopTable *tt i
Topology table. 
int fndx i
Face index. 
int sndx i
Shell index. 
VsNurbSurf **sf o
Pointer to a VsNurbSurf pointer. 
int flg i
options
**  0x1 == Flip if outnorm==0
**	0x2 == get trimloops too

Description

 

Memory-Management

 

Caveats

 

 Top


 VxFirstShp

int VxFirstShp(VsApplTopTable *, int *)
VsApplTopTable*pzTopTab i
input topology table 
int*piShpIdx o
shape index 

Description

   Get the index of the first non-deleted shape.
   Create a new shape if necessary.

Memory-Management

 

Caveats

 

 Top


 VxIsShpClsd

int VxIsShpClsd(int , VsApplTopTable *, int *)
intiShpIdx i
index of shape 
VsApplTopTable*pzTopTab i
pointer to the topology table 
int*fClosed i
open/close flag 

Description

   Check the open/closed flags for each shell in shape.

Memory-Management

 

Caveats

 

 Top


 VxShapGetBndBox

int VxShapGetBndBox(VsApplTopTable *, int, VsLim3 *)
VsApplTopTable*tt i
Topology Table 
int shape_indx i
Input Shape 
VsLim3 *box o
Bounding Box 

Description

Get the bounding box of the specified shape.
Return 1 if error, else 0.

Memory-Management

 

Caveats

 

 Top


 VxShapeExplode

int VxShapeExplode(VsApplTopTable *, int )
VsApplTopTable*top_table i/o
Topology Table 
inti_shape i
Index of shape to explode. 

Description

   This routine separates the top level shells of the given shape. All shells
   adjacent to the first shell in the shape are assigned to separate
   shapes. All inner and lower level shells go along with the top level shells.

Memory-Management

 

Caveats

 

 Top


 VxShapeMk

int VxShapeMk ( VsApplTopTable *, int *)
VsApplTopTable *pzTopTbl i/o
Topology table to add shape to 
int *piShapeIndx o
Index of the new shape in the topology
table 

Description

  Create a new shape in the topology table for holding entities of
  type iType.

Memory-Management

 

Caveats

 

 Top


 VxShlDel

int VxShlDel(VsApplTopTable *, int )
VsApplTopTable *pzTT i
Topology table 
int iShlIdx i
Index of the shell to delete 

Description


Deletes a shell from the topology table.
Return 1 if error, else 0.

Memory-Management

 

Caveats

 

 Top


 VxShlDelChk

int VxShlDelChk(VsApplTopTable *, int, int *)
VsApplTopTable *pzTT i/o
Pointer to topology table 
int i_shl i
Shell index 
int *idDelShp o
index of parent shape if deleted, else -1. 

Description

Check if a shell needs to be deleted and if so, delete it.


This function does not actually go and delete faces...loops...edges...vtxs belonging to the shell.  It just makes sure none of the other shells or shapes refer to the deleted shell.
This functions will also mark the shape as deleted if it refers to no shells. Return 1 if error; else 0.

Memory-Management

 

Caveats

 

 Top


 VxShlGtShape

int VxShlGtShape(VsApplTopTable *, int , int *)
VsApplTopTable *toptbl i
Topology table. 
int indxShell i
Index of shell to check. 
int *indxShape o
Index of associated shape. 

Description

   Find the index of the shape associated with the specified shell.

Memory-Management

 

Caveats

 

 Top


 VxShlMk

int VxShlMk(VsApplTopTable *, top_mod_flag , int , int , int *)
VsApplTopTable *toptbl i/o
Pointer to topology table. 
top_mod_flag initMod i
Value used to init object mod flag. 
int initNumFace i
Number of faces used to initialize face list. 
int shape_index i
Index of shape to add new shell to.
(-1 if shape is unknown) 
int *shell_index o
Index of new shell. 

Description

   Create a new empty shell.


  If a shape is specified attempt to add shell to face.  If shape   does not point to a shell it is modified to point to new shell,   if shape already points to a shell then this shell is added   to end of shell->shl_nxt list.

Memory-Management

 

Caveats

 

 Top


 VxShlRvrsDirs

int VxShlRvrsDirs(VsApplTopTable *, int )
VsApplTopTable*top_table i
Topology Table 
intshell_index i
Index of Shell to be flipped 

Description

   This routine flips the face dir flags of all the faces in a shell.

Memory-Management

 

Caveats

 

 Top


 VxShlSew

int VxShlSew(VsApplTopTable *, VsListObj *, int , double, int, int, int, VsSewInfo *)
VsApplTopTable *pzTT i/o
Pointer to topology table 
VsListObj *plShls i
List of new shells to sew. Used
in conjunction with fSewType.
Can be null if fSewType is V_SEW_TT 
int fSewType i
Type of sewing.
V_SEW_TT - Topology table sewing.
Sews all shell in top-table.
V_SEW_INCR - Incremental sewing
Sews new shell in plShls
with the topology table.
V_SEW_LIST - Sew shell list
Sews list of shells in
plShls with each-other 
double mtchTol i
tolerance to use for matching, may be
different to pnt conic tol. 
int fMrgVtx i
Flag indicating whether to merge
vertices of the new shells BEFORE
sewing the shells. 
int fErrUnOrient i
Flag whether to error out when we
encounter an unorientable surfset.
= 0, don't err out, but explode it
= 1, err out
= 2, continue processing with a warning 
int fGetSewInfo i
Get information after sew 
VsSewInfo *pzSewInfo o
Output information after the sew if
fGetSewInfo is set, else pass V_NULL 

Description


   This routine sews a list of shell (or all shells) into a single shell.

Memory-Management

 

Caveats

 

 Top


 VxShpGetShls

int VxShpGetShls(VsApplTopTable *, int , VsListObj **)
VsApplTopTable *pzTt i
pointer to topology table 
int idShp i
shape index 
VsListObj **ppzShlLst o
a list of indices of the shells contained
in the shape 

Description

   Returns a list of indices of the shells contained in the shape.

Memory-Management

   The caller should deallocate the list in any case.
   If *ppzShlLst == V_NULL, this routine allocate a list to store shell
   indexes.

Caveats

 

 Top


 VxTopTabCopy

int VxTopTabCopy(VsApplTopTable *, VsApplTopTable *)
VsApplTopTable*toptabold i
input topology table 
VsApplTopTable*toptabnew o
output topology table 

Description

   Copies the first shape to a new topology table.

Memory-Management

 

Caveats

 

 Top


 VxTopTabCopyNoErr

int VxTopTabCopyNoErr(VsApplTopTable *, VsApplTopTable *)
VsApplTopTable*toptabold i
input topology table 
VsApplTopTable*toptabnew o
output topology table 

Description

 

Memory-Management

 

Caveats

 

 Top


 VxTopTabDel

int VxTopTabDel(VsApplTopTable *)
VsApplTopTable*toptab i
input topology table

Description

   Deletes the topology table after cleaning it up.

Memory-Management

 

Caveats

 

 Top


 VxTopTabResiz

int VxTopTabResiz(int , int , int , int , int , int , int , int , VsApplTopTable *)
int numShape i
number of new shapes 
int numShell i
number of new shells 
int numFeat i
number of new features 
int numLoop i
number of new loops 
int numEdge i
number of new edges 
int numVrtx i
number of new vertices 
int numGeom i
number of new geometric entities 
int numDb i
number of new local database entities 
VsApplTopTable *toptab o
topology table 

Description

   Creates memory for topology table with the specified number of shells,
   features, loops, edges and vertices & returns a pointer to the table.
   If table already exists then the nums are used to resize the table.

Memory-Management

 

Caveats

 

 Top


 VxTrmFaceMk

int VxTrmFaceMk(VsApplTopTable*,int,VsNurbSurf*,int*)
VsApplTopTable *toptbl i/o
Pointer to topology table. 
int shell_index i
Index to current shell. 
VsNurbSurf *srf_ptr i
Pointer to surface. 
int *face_index o
Index of new face. 

Description

 

Memory-Management

   Objects added to topology table.

Caveats

 

 Top


 VxVtxDel

int VxVtxDel(VsApplTopTable *, int )
VsApplTopTable *toptbl i
Topology table. 
int vrtx_indx i
Index of vertex to delete. 

Description

   The vertex is cleaned and marked for DELETION.

Memory-Management

 

Caveats

   This routine does not remove any edge references to this vertex.

 Top


 VxVtxGetCoords

int VxVtxGetCoords( VsApplTopTable *, int , VsPoint *)
VsApplTopTable *toptbl i
Topology table. 
int vtx_index i
Vertex index. 
VsPoint *point o
Pointer to 3d point. 

Description

   Returns the 3d location of the vertex.

Memory-Management

 

Caveats

 

 Top


 VxVtxGetEdgs

int VxVtxGetEdgs(VsListObj *, int *, int **)
VsListObj *vrtxLstEdgs i
Vertex edge list (object).
int *nEdg o
number of edge indices in lstEdg. 
int **lstEdg o
array of distinct edges. 

Description

   Convert the vertex edge list to an array of unique edge indices.

Memory-Management

   if 0 is returned then calling function must deallocate lstEdg.

Caveats

 

 Top


 VxVtxGetTol

int VxVtxGetTol( VsApplTopTable *, int , double *)
VsApplTopTable *toptbl i
Topology table. 
int vtx_index i
Vertex index. 
double *tol o
Pointer to tolerance. 

Description

   Returns the tolerance associated to the vertex.

Memory-Management

 

Caveats

 

 Top


 VxVtxGtShape

int VxVtxGtShape(VsApplTopTable *, int , int *)
VsApplTopTable *toptbl i
Topology table. 
int indxVrtx i
Index of vertex to check. 
int *indxShape o
Index of associated shape. 

Description

   Find the index of the shape associated with the specified vertex.

Memory-Management

 

Caveats

 

 Top


 VxVtxMk

int VxVtxMk( VsApplTopTable *, VsPoint *, double , int , int *)
VsApplTopTable *top_tbl i
Topology table. 
VsPoint *point i
3d point. 
double tol i
tolerance. 
int shape_indx i
Shape the vertex is being created in 
int *vrtx_indx o
Index to vertex. 

Description

   Creates a new vertex with the given location and tolerance.  Returns the
   index of the new vertex.

Memory-Management

 

Caveats

 

 Top