int cvxSkActivate
(
int idSketch,   /* I: id of sketch in active file (0 to exit active sketch) */
int UpdateGUI   /* I: 1 to update GUI; 0 to leave GUI unchanged */
)
/*
DESCRIPTION:
Activates the specified sketch for query or editing.

Call this function with "idSketch = 0" to exit the 
sketch back to its parent object.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkAddConsDim
(
evxConsDimType type,   /* I: type of constraint dimension */
svxConsDim* pData      /* I: data of constraint dimension */
)
/*
DESCRIPTION:
Add the specified constraint dimension with specified data and the type.

The "pData" defined by current command.
If the "type" is VX_SK_CONSDIM_LINEAR or VX_SK_CONSDIM_LINEAR_OFFSET, 
all the datas of "pData" should be defined.

If the "type" is VX_SK_CONSDIM_ANGULAR, the datas of "pData" should be 
defined by the type of svxConsDim. 

If the "type" is VX_SK_CONSDIM_RADIAL, the second point and second entity
don't need to be defined.

If the "type" is VX_SK_CONSDIM_ARC_LENGTH, the second point, second entity and
the type of svxConsDim don't need to be defined.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkAddGeomCons
(
evxGeomConsType type,    /* I: constraint type */
int subType,             /* I: coordinate constraint type, only fix constraint and
                               point to midpoint constraint need to set the variable:
                                 0: both the X and Y coordinates are constrained
                                 1: only the X coordinate is constrained
                                 2: only the Y coordinate is constrained  
                                 3: point to arc midpoint constraint, used only VX_SK_CONS_MID */
int nGeoms,              /* I: number of constraint geometries */
svxConsGeom* geoms,      /* I: array of constraint geometries data */
int *Count,              /* O: number of constraints generated (NULL to ignore) */
int **idCons             /* O: id of constraints generated (NULL to ignore) */
)
/*
DESCRIPTION:
Add the specified geometry constraint with specified data and the type.
the number of geometry required varies from constraint type, please specify
the number and data of constraint geometry based on the specific constraint
being created.

The number and order of geometry required for each constraint type is as follows:
VX_SK_CONS_FIX: one point or entity;
VX_SK_CONS_ALI_Y: one reference point and one alignment point;
VX_SK_CONS_ALI_X: one reference point and one alignment point;
VX_SK_CONS_MID: two endpoints and one midpoint;
VX_SK_CONS_ON_CRV: one curve and one alignment point;
VX_SK_CONS_ISECT: two curves and one alignment point;
VX_SK_CONS_COIN: two points;
VX_SK_CONS_HOR: one line;
VX_SK_CONS_VER: one line;
VX_SK_CONS_SYM: one symmetrical axis and two symmetrical points or entities;
VX_SK_CONS_PERP: one line and one curve;
VX_SK_CONS_PARA: two lines;
VX_SK_CONS_COLINLN: two lines;
VX_SK_CONS_TANG: one line and one curve;
VX_SK_CONS_EQL_LEN: two lines;
VX_SK_CONS_EQL_CURVATURE: two curves;
VX_SK_CONS_EQL_RAD: two arcs or circles;
VX_SK_CONS_CONC: one arc or circle and one alignment point;

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkAddPolyline
(
int cntPnt,         /* I: count of 2D points */
svxPoint2* pnts,    /* I: list of 2D points */
int addCns          /* I: 1-add constraint, else 0 */
)
/*
Create the polylines with the input points.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkArc3pt
(
svxPoint2 *Start, /* I: start point */
svxPoint2 *End,   /* I: end point */
svxPoint2 *Mid,   /* I: mid (i.e. through) point */
int *idEnt        /* O: id of new 2D arc entity(NULL to ignore) */
)
/*
DESCRIPTION:
Adds a 2D arc to the active sketch or sheet.   If "idEnt" is not 
NULL, the id of the new arc entity is output.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkArcRad
(
svxPoint2 *Center,   /* I: centerpoint (mm) */
double Radius,         /* I: radius (mm) */
double Start,         /* I: start angle (deg - CCW from X axis) */
double End,            /* I: end angle (deg - CCW from X axis) */
int *idEnt            /* O: id of new 2D circle entity(NULL to ignore) */
)
/*
DESCRIPTION:
Adds a 2D circle to the active sketch or sheet.   If "idEnt" is not 
NULL, the id of the new entity is output.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkAutoAddCoinCons
(
int idSketch   /* I: index of sketch (-1 to use the active sketch)*/
)
/*
DESCRIPTION:
Create coincident constraints for the specified sketch/current active sketch.
This function just add the constraints, not solve the constraints.
Return 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkAutoAddCoinConsSkipRefGeom
(
int idSketch,  /* I: index of sketch (-1 to use the active sketch)*/
int skipFlag,  /* I: 1-skip the reference geometries, else 0 */
int solveFlag  /* I: 1-solve the constraints after adding them, else 0 */
)
/*
DESCRIPTION:
Create coincident constraints for the specified sketch/current active sketch.

The difference between this function and cvxSkAutoAddCoinCons is that this function can skip 
the reference geometries and solve the constraints.

Return 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkAutoCons
(
svxConsGeom *BasePnt, /* I: base point (NULL to use the default sketch origin) */
int Count,            /* I: number of entities to add constraints and dimensions (0 for all entities) */
int *idEnts           /* I: list of entities to add constraints and dimensions (NULL for all entities) */
)
/*
DESCRIPTION:
Use the function to analyze the current sketch geometry and add constraints
and dimensions automatically.

Return 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkAxis 
(
const svxSkAxisData *Axis,     /* I: Axis data */
int *idAxis                    /* O: id of new 2D Axis entity (NULL to ignore) */
)
/*
DESCRIPTION:
Adds a 2D Axis to the active sketch. If "idAxis" is not
NULL, the id of the new entity is output.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkBlockActivate
(
int idBlock,      /* I: id of 2d sketch block in active file (0 to exit active sketch block) */
int UpdateGUI     /* I: 1 to update GUI; 0 to leave GUI unchanged */
)
/*
DESCRIPTION:
Activates the specified 2d sketch block for query or editing.

In addition, idBlock can also be the index of a sketch block reference.
In this case the definition sketch block will be activated at the position
of the block reference.

Call this function with "idBlock = 0" to exit the sketch block
back to its parent object or previous target object.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkBlockGetSketch
(
int idBlock,      /* I: id of 2d sketch block */
int *idSketch     /* O: id of the inner sketch of the sketch block */
)
/*
DESCRIPTION:
Output the index of the inner sketch of the sketch block, which is invisible in the feature list.

It can be used to generate the pick path of the entity in the block which is formated as
(-1, idBlockReference, idBlock, idSketch, idEntity).

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkBlockInqDim
(
vxLongName blockName,   /* I: block name */
int *Count,             /* O: number of dimension entities */
int **idEnts            /* O: list of dimension entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of dimension entities that belong to the specified block.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkBlockInqGeom
(
vxLongName blockName,   /* I: block name */
int *Count,             /* O: number of geometry entities */
int **idEnts            /* O: list of geometry entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of geometry entities that belong to the specified block.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkBlockInqGeomX
(
vxLongName blockName,   /* I: block name */
int *Count,             /* O: number of geometry entities */
int **idEnts            /* O: list of geometry entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of construction geometry entities that belong to the specified block.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkBlockInqPnt
(
vxLongName blockName,    /* I: block name */
int *Count,              /* O: number of point entities */
int **idEnts             /* O: list of point entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of point entities that belong to the specified block.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkBlockInqRefs
(
int idBlock,  /* I: id of 2d sketch block */
int*count,    /* O: number of sketch block reference entities */
int**idEnts   /* O: list of sketch block reference entity id's */
)
/*
DESCRIPTION:
Outputs a list of sketch block reference entity id's that belong to the specified block.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkBlockRefGetDefinition
(
int idRef,     /* I: id of sketch block reference */
int *idBlock   /* O: id of the definition sketch block */
)
/*
DESCRIPTION:
Output the index of the definition sketch block of the specified block reference.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkChamfer
(
const svxSkChamferData* chmData,   /* I: information of chamfer in sheeting */
int* idChamfer                     /* O: id of chamfer that created (input NULL to ignore) */
)
/*
DESCRIPTION:
   Create a chamfer in sheeting or sketch. chmInfo must be initialized before used.
RETURN:
  Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxSkCir3pt
(
svxPoint2 *P1,    /* I: first point on circle */
svxPoint2 *P2,    /* I: second point on circle */
svxPoint2 *P3,    /* I: third point on circle */
int *idEnt        /* O: id of new 2D circle entity(NULL to ignore) */
)
/*
DESCRIPTION:
Adds a 2D circle to the active sketch or sheet.   If "idEnt" is not 
NULL, the id of the new circle entity is output.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkCirRad
(
svxPoint2 *Center,   /* I: centerpoint (mm) */
double Radius,         /* I: radius (mm) */
int *idEnt            /* O: id of new 2D circle entity(NULL to ignore) */
)
/*
DESCRIPTION:
Adds a 2D circle to the active sketch or sheet.   If "idEnt" is not 
NULL, the id of the new entity is output.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkCrvInt
(
svxCrvIntData *Crv,  /* I: input data interpolated curve */
int *idEnt           /* O: id of new 2D interpolated curve entity(NULL to ignore) */
)
/*
DESCRIPTION:
Adds a 2D curve interpolated through through the input
points with the specified degree to the active sketch or sheet.   
If "idEnt" is not NULL, the id of the new curve entity 
is output.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkEllipse
(
svxEllipse *ellipse,   /* I: ellipse data */
int *idEnt             /* O: id of new 2D ellipse entity (NULL to ignore) */
)
/*
DESCRIPTION:
Adds a 2D ellipse to the active sketch or sheet. If "idEnt" is not
NULL, the id of the new entity is output.

Return 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkEntWireType
(
int entId,       /* I: id of entity */
int *type        /* O: wire type of specified entity, 1-construct, 0-no */
)
/*
DESCRIPTION:
Outputs the construct type of specified entity. 
1-the entity is construct line, 0-no.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkFillet
(
const svxSkFilletData* filletData,   /* I: information of fillet in sheeting */
int* idFillet                        /* O: id of fillet that created (input NULL to ignore) */
)
/*
DESCRIPTION:
   Create a fillet in sheeting or sketch. filletInfo must be initialized before used.
RETURN:
  Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxSkInqAllAxis
(
int *Count,       /* O: number of Axis */
int **idEnts      /* O: list of Axis entity id's */
)
/*
DESCRIPTION:
Output the axis list of current sketch.
The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqAllAxisById
(
int idSketch,  /* I: id of sketch */
int* count,    /* O: number of Axis */
int** idEnts   /* O: list of Axis entity id's */
)
/*
DESCRIPTION:
Output the axis list of specified sketch.
The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqArea
(
int nCrv,               /* I: number of curve list */
int *idCrvs,            /* I: list of boundary curves */
svxPoint2 *innerPnt,    /* I: reference point (the inner point) */
svxPrfAreaProp *aboutCM,/* O: Area properties about centroid */
svxPrfAreaProp *aboutRf /* O: Area properties about ref */
)
/*
DESCRIPTION:
Calculates the area properties of closed profile(2D).
If the third argument (innerPnt) is V_NULL, aboutRf will be calculated
about (0,0).

Returns 2 if curve list is not closed, 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqAxis
(
int idSketch,  /* I: index of sketch (-1 to inquire active sketch) */
int *xAxis,    /* O: index of X axis */
int* yAxis     /* O: index of Y axis */
)
/*
DESCRIPTION:
Get index of the default x and y axis of the specified sketch. 
if the specified default axis is not found, the value is assigned
to -1, such as *xAxis = -1.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqAxisDir
(
int idAxis,        /* I: index of 2d axis */
svxPoint2 *pPnt,   /* O: start point of axis */
svxPoint2 *pDir    /* O: direction of axis */
)
/*
DESCRIPTION:
Get the direction associated with the specified object (idAxis).
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxSkInqBlockReferences
(
int idSketch,      /* I: id of sketch or sketch block in active file (<1 for active one) */
int *Count,         /* O: number of sketch block reference entities */
int **idEnts      /* O: list of sketch block reference entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of sketch block reference entities
in the specified sketch or sketch block.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqCns
(
int *Count,       /* O: number of constraints */
int **idEnts      /* O: list of constraint entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of constraint entities in the active sketch.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqCnsById
(
int idSketch,  /* I: id of sketch */
int* count,    /* O: number of constraints */
int** idEnts   /* O: list of constraint entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of constraint entities in specified sketch.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqCnsGeoms
(
int idCons,          /* I: index of geometry constraint */
int *Count,          /* O: number of geometry entities */
svxConsGeom **geoms  /* O: data of geometry entities */
)
/*
DESCRIPTION:
Outputs the geom data array of entities associated with the specified 
geometry constraint.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqCnsType
(
int idCons,              /* I: index of geometry constraint */
evxGeomConsType *type,   /* O: type of geometry constraint */
int *subType             /* I: coordinate constraint type, only fix constraint and
                               point to midpoint constraint is valid:
                               0: both the X and Y coordinates are constrained
                               1: only the X coordinate is constrained
                               2: only the Y coordinate is constrained
                               3: point to arc midpoint constraint, used only VX_SK_CONS_MID */
)
/*
DESCRIPTION:
Get the type(evxGeomConsType) of specified geometry constraint.
It can't get the corresponding type if "*type = VX_SK_CONS_UNKNOWN".

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqCrvConnect
(
int iCount,       /* I: count of input curves */
int *idCrvs,      /* I: id list of curves */
int *iUnMatch,    /* O: count of unmatched curves */
int *iOverMatch   /* O: count of over-matched curves */
)
/*
DESCRIPTION:
Output the count of unmatched and over-matched curves of specified list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqDim
(
int *Count,         /* O: number of dimensions */
int **idEnts      /* O: list of dimension entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of dimension entities in the active sketch.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqDimRefFlag
(
int idDim,        /* I: id of dimension to inquire */ 
int* refFlag      /* O: reference dimension flag */
)
/*
DESCRIPTION:
Outputs the reference flag that belong to the specified id.
1-reference flag, 0-no, -1-function fails.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqDimType
(
int idDim,            /* I: index of dimension constraint */
evxConsDimType *type  /* O: type of dimension constraint */
)
/*
DESCRIPTION:
Get the type(evxConsDimType) of specified dimension constraint.
It can't get the corresponding type if "*type = VX_SK_CONSDIM_UNKNOW".

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqExternalSk
(
int idSketch,            /* I: id of external sketch */
vxLongName fileName,     /* O: file name of source sketch */
vxLongName rootName,     /* O: root name of source sketch (output an empty string
                               when file is a single object file) */
vxLongName skName        /* O: name of sketch entity (output an empty string 
                               when root object is a sketch) */
)
/*
DESCRIPTION:
Get information about the source sketch associated with the specified 
external sketch, including file name, root name and sketch name.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqGeom
(
int *Count,       /* O: number of geometry entities */
int **idEnts      /* O: list of geometry entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of geometry entities in the active sketch.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqGeomById
(
int idSketch,  /* I: id of sketch */
int* count,    /* O: number of geometry entities */
int** idEnts   /* O: list of geometry entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of geometry entities in specified sketch.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqGeomX
(
int *Count,       /* O: number of construction geometry entities */
int **idEnts      /* O: list of construction geometry entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of construction geometry entities in the active sketch.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqGeomXById
(
int idSketch,  /* I: id of sketch */
int* count,    /* O: number of construction geometry entities */
int** idEnts   /* O: list of construction geometry entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of construction geometry entities in specified sketch.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqPlane
(
int idSketch,        /* I: id of sketch in active file */
svxEntPath *plnPath  /* O: pick path of the sketch insertion plane */
)
/*
DESCRIPTION:
Get the insertion plane of the specified sketch.

Returns -1 if there was no error, but no entity was retrieved.
Returns 0 if there was no error and an entity was retrieved successfully.
Returns 1 if error.
*/
________________________________________________________________________________

int cvxSkInqPnt
(
int *Count,       /* O: number of point entities */
int **idEnts      /* O: list of point entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of point entities in the active sketch.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqPntById
(
int idSketch,  /* I: id of sketch */
int* count,    /* O: number of point entities */
int** idEnts   /* O: list of point entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of point entities in specified sketch.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqReadyText
(
int idSketch,  /* I: index of sketch (-1 to inquire active sketch) */
int *Count,    /* O: number of ready sketch text entities */
int **idEnts   /* O: list of ready sketch text entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of ready sketch text entities in the active sketch.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqRef
(
int *Count,       /* O: number of external reference entities */
int **idEnts      /* O: list of external reference entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of external reference entities in the active sketch.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqRefById
(
int idSketch,  /* I: id of sketch */
int* count,    /* O: number of external reference entities */
int** idEnts   /* O: list of external reference entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of external reference entities in specified sketch.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqSketchBlocks
(
int *Count,          /* O: no. of sketch blocks in active file */
int **idEnts,        /* O: list of sketch block object id's (NULL to ignore) */
vxLongName **Names   /* O: list of sketch block object names (NULL to ignore) */
)
/*
DESCRIPTION:
Outputs a list of the names of all sketch block objects in the active file.
Also outputs a list of indices of them if needed.

The list referenced by "**Names" or "**idEnts" is allocated by this function and
MUST be deallocated by the calling procedure.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqText
(
int *Count,       /* O: number of text entities */
int **idEnts      /* O: list of text entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of text entities in the active sketch.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqTextById
(
int idSketch,  /* I: id of sketch */
int* count,    /* O: number of text entities */
int** idEnts   /* O: list of text entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of text entities in specified sketch.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkInqVars
(
int *Count,                  /* O: number of variables */
svxVariable **Variables      /* O: list of variables */
)
/*
DESCRIPTION:
Outputs a list of variables that belong to the active sketch. 
The calling procedure MUST deallocate the output list with cvxMemFree.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkIsCosmetic
(
int IdSketch   /*I: id of sketch*/
)
/*
DESCRIPTION:
This function is to determine whether the sketch is cosmetic.
Return 1 indicates it is cosmetic, else it is NOT.
*/
________________________________________________________________________________

int cvxSkIsExternal
(
int IdSketch   /* I: id of sketch */
)
/*
DESCRIPTION:
This function is to determine whether the sketch is external sketch.
Return 1 indicating that it is external Sketch, else it is NOT.
*/
________________________________________________________________________________

int cvxSkLine2pt
(
svxPoint2 *Start,    /* I: start point */
svxPoint2 *End,      /* I: end point */
int *idEnt           /* O: id of new 2D line entity(NULL to ignore) */
)
/*
DESCRIPTION:
Adds a 2D line to the active sketch or sheet.   If "idEnt" is not 
NULL, the id of the new line entity is output.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkMove
(
const svxMoveData2D* data   /* I: move data */
)
/*
DESCRIPTION:
Moves the specified entity(entities) within the active 2D environment(drawing of sketch).

Because this function has an internal call to the "cvxDispRedraw()" function,
it must be called on the main thread.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkPnt
(
svxPoint2 *Point,   /* I: point coordinate */
int *idEnt          /* O: id of new 2D point entity (NULL to ignore) */
)
/*
DESCRIPTION:
Adds a 2D point entity to the active sketch or drawing.

Return 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkPntsOnCrv
(
int idCrv,        /* I: id of curve entity in active object */
svxPoint *Pnt,    /* I: reference point that specifies which end of the curve to start from;
                     this input is only necessary if "Dist" is defined (i.e. non-zero);
                     if this argument is NULL, the geometric start point of the curve will
                     be used if needed. */
int Num,          /* I: the number of points to create along the curve; if "Dist" is zero,
                     then the specified number of points will be created along the curve 
                     with equal spacing between them; if "Dist" is "non-zero", then "Num"
                     points will be created along the curve with "Dist" as the spacing between 
                     each point; in this case, "Pnt" should be input and an extension option
                     should be defined in case the specified number of points at the
                     specified distance exceeds the length of the curve; if "Num" is input
                     as zero, then "Dist" must be specified; in this case, points are created
                     the specified distance apart, beginning at the end of the curve closest
                     to "Pnt" and ending at/before the other end of the curve. */
double Dist,      /* I: the distance (mm) between points (see description of "Num" argument) */
evxExtendOpt Opt, /* I: extension option is "Dist" is non-zero */
int *Count,       /* I: if this argument is not NULL, output the number of points created */
int **idEnts      /* I: if "Count" is not NULL, and this argument is not NULL, a list of 
                        the database id's of the point entities created by this function
                        is output. Memory for the list is allocated by this function.  The
                        calling procedure is responsible to free the memory. */
)
/*
DESCRIPTION:
Creates point entities spaced on and along a curve based on the specified input parameters.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkReadyText
(
const svxReadyText *RdText,   /* I: data of ready sketch text */
int *idRdText                 /* O: index of the ready sketch text (NULL to ignore) */
)
/*
DESCRIPTION:
Adds a ready sketch text to the active sketch. 

Pass in NULL for "idRdText" if the output is not required.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkReadyTextInqCrvs
(
int idRdText,    /* I: index of the ready sketch text */
int *Count,      /* O: number of curves in the ready sketch text */
int **idCrvs     /* O: list of curve id's in the ready sketch text */
)
/*
DESCRIPTION:
Outputs a list of indices of curve the specified ready sketch text.

The calling procedure MUST deallocate the output list.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkReadyTextInqText
(
int idRdText,         /* I: index of the ready sketch text */
svxReadyText *RdText  /* O: data of ready sketch text */
)
/*
DESCRIPTION:
Get string of the specified ready sketch text.

This function allocates memory for the text string. The memory MUST 
be deallocated by the calling procedure using cvxReadyTextFree().

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkReadyTextModText
(
int idRdText,         /* I: index of the ready sketch text */
svxReadyText *RdText  /* I: data of ready sketch text */
)
/*
DESCRIPTION:
Set string of the specified ready sketch text.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

void cvxSkRegen()
/*
DESCRIPTION:
Use the function to solve the current sketch automatically, all constraints, equations, 
dimensions and variable links associated with the current sketch are executed.
*/
________________________________________________________________________________

int cvxSkScale
(
int Count,        /* I: number of entities */
int *idEnts,      /* I: list of entity id's */
double X_scale,   /* I: X scale factor */
double Y_scale,   /* I: Y scale factor */
svxPoint2 *Pnt    /* I: optional reference point (input NULL to ignore) */
)
/*
DESCRIPTION:
Scales the specified entities in the active sketch or sheet by 
the input scale factors relative to the X, Y axes and origin
of the active sketch  If "Pnt" is not NULL, its coordinates 
are used as the center of scaling.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkSetWireType
(
int nEnt,      /* I: number of entity */
int *idEnt,    /* I: list of id's of entity */
int type       /* I: wire type (1-construct line, 0-solid line) */
)
/*
DESCRIPTION:
Change geometry wire type, from 2D geometry(lines, arcs, circles, curves, axis) to construction
geometry, or change construction geometry to 2D geometry.

Return 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkSpline
(
const svxSplineData* PntData,  /* I: spline data*/
int *idEnt                     /* O: id of new 2D spline entity (NULL to ignore) */
)
/*
DESCRIPTION:
Adds a 2D curve interpolated through through the input points/control points with the 
specified data to the active sketch or sheet.

If "idEnt" is not NULL, the id of the new curve entity is output.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkVarAdd
(
svxVariable *Variable   /* I: definition of a variable */
)
/*
DESCRIPTION:
Adds the specified variable to the active part.
Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkVarGet
(
svxVariable *Variable   /* I/O: variable data */
)
/*
DESCRIPTION:
Searches the active sketch for the variable named "Variable->Name".

The value of the specified variable is output via 
"Variable->Value" in database units (mm, deg).

If "Variable->Name" is a string variable, the associated
text is output via "Variable->Expression".  Strings longer
than 256 bytes are truncated.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxSkVarSet
(
int Count,               /* I; number of variables */
svxVariable *Variables   /* I: list of variables */
)
/*
DESCRIPTION:
Updates the sketch variables specified by "Variables" 
and regenerates the active sketch with the modified values.

Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________