int cvxDwgActivate
(
vxLongName drawingName   /* I: drawing name */
)
/*
DESCRIPTION:
Active the special drawing in the current open sheet.

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

int cvxDwgAlignmentGet
(
int idView,      /* I: id of view */
int* align       /* O: 1 if application alignment, else 0. */
)
/*
DESCRIPTION:
Get alignment by idView.

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

int cvxDwgAngDimAdd
(
const svxDwgAngDimData* angDimData,    /* I: angular dimension input data */
int* idDim                             /* O: id of the angular dimension (input NULL to ignore)*/
)
/*
DESCRIPTION:
   Create an angular dimension in a drawing sheet.
RETURN:
   Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgArcDimAdd
(
const svxDwgArcDimData* arcDimData,    /* I: arc dimension input data */
int* idDim                             /* O: id of the arc dimension (input NULL to ignore)*/
)
/*
DESCRIPTION:
   Create an arc length dimension in a drawing sheet.
   Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgAtGet
(
int idDrawing,            /* I: drawing id */
svxDrawingAt *drawingAt   /* O: attribute of drawing */
)
/*
DESCRIPTION:
Retrieves attribute data from the specified drawing in the active file.
Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxDwgAtItemGet
(
evxAtItemId itemId,  /* I: item id */
svxAttribute *At     /* O: item attribute */
)
/*
DESCRIPTION:
Outputs the sheet attribute of specified item.
The itemId includes all of evxAtItemId.
If the sheet has associated parts, this function also can inquire
the parts item attribute.

When itemId is VX_AT_USER, the name of the user-defined attribute must
be assigned to At->label before calling this function.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgAtSet
(
int idDrawing,            /* I: drawing id */
svxDrawingAt *drawingAt   /* I: attribute of drawing */
)
/*
DESCRIPTION:
Set the drawing data.
if useTemplate is 1 or templateName is not NULL, 
add the template to the drawing or replace the template of the drawing
else it will create new drawing border and insert block to drawing

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgAutoBlnAdd
(
const svxDwgAtBlnData* atBlnInfo,              /* I: the information of Creating auto balloon */
int* idDimCount,                               /* O: number of created balloon dim id (input NULL to ignore) */
int** idDimList                                /* O: list of created balloon dim id (input NULL to ignore) */
)
/*
DESCRIPTION:
   Create auto balloon. all values of atBllnInfo need initialization.
RETURN:
   Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgAutoDimAdd
(
const svxDimAuto* pDimData,            /* I: dimension parameters */
int* idDim                             /* O: id of Dim (input NULL to ignore) */
)
/*
DESCRIPTION:
Add auto dimension by special parameter.
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgBalloonDimAdd
(
const svxDwgBalloonDim* pData,     /* I: data of balloon dimension */
int* idDim                         /* O: id of the dimension created (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a Balloon dimension between the specified points in drawing.
pData->condition is set by evxBalloonCon
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgBaseLineDimAdd
(
const svxDwgLineGrpDim* pData,      /* I: data of BaseLine dimension */
int* idDim                          /* O: id of the dimension created (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a Baseline dimension between the specified object in drawing.

pData->sub.cons.type is set by evxDimLineType, as follows:
VX_DIM_LINE_LH -- horizontal
VX_DIM_LINE_LV -- vertical
VX_DIM_LINE_LA -- aligned
VX_DIM_LINE_LR -- rotated
VX_DIM_LINE_LP -- projected
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgBrkLineAtGet
(
int brkLnViewId,           /* I: id of break line */
svxDwgBrkLineAt* brkLnAt   /* O: Attribute of Break Line */
)
/*
DESCRIPTION:
   Get attribute of special break line.
   If brkLineAt->layerName = "",it means layer by view.
RETURN:
   Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgBrkLineAtSet
(
int brkLnViewId,                  /* I: id of break line */
const svxDwgBrkLineAt* brkLnAt    /* I: Attribute of Break Line */
)
/*
DESCRIPTION:
   Set Attribute of special break line.
   Before you use this function, you'd better calling cvxDwgBrkLineAtGet to initialize brkLineAt.
RETURN:
   Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgCenMarkCirDimAdd
(
const svxCenMarkCirDimData* cmcDimData,       /* I: center mark circle dimension input data */
int* idDim                                    /* O: id of the dimension created (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a center mark circle dimension for the specified entities in drawing.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgCenterLineDimAdd
(
const svxCenterLine* pzCenterLine,     /* I: info of two lines or two points */
int* idDim                             /* O: id of dim (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a center line dimension by two lines or two points.
By two lines: should be the same type, one is a straight line, the other must be a straight line;
    one is a arc or a circle, the other must be a arc or circle;
By two points: any point;
default value:
   svxCenterDim
      cmSize   : 4.254534
      breakLen : 1.5
      overRun  : 3.06324
      scaleFac : 1

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgCenterMarkDimAdd
(
const svxCenterMark* pzCenterMark,  /* I: id of the first entity */
int* idDim                          /* O: id of dim (input NULL to ignore) */
)
/*
DESCRIPTION:
Center dimension with specify coordinate.

default value:
   svxCenterDim
      cmSize   : 4.254534
      breakLen : 1.5
      overRun  : 3.06324
      scaleFac : 1

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgContinuousDimAdd
(
const svxDwgLineGrpDim* pData,     /* I: data of Continuous dimension */
int* idDim                         /* O: id of the dimension created (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a Continuous dimension between the specified object in drawing.

pData->sub.cons.type is set by evxDimLineType, as follows:
VX_DIM_LINE_LH -- horizontal
VX_DIM_LINE_LV -- vertical
VX_DIM_LINE_LA -- aligned
VX_DIM_LINE_LR -- rotated
VX_DIM_LINE_LP -- projected
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgCrossHatch
(
int countEnts,               /* I: count of "idEnts" */
int* idEnts,                 /* I: list of entity id */
int countPnts,               /* I: count of "insides" */
svxPoint2* insides,          /* I: list of point */
int isSplit,                 /* I: 1 if split boundary ,else 0 */
svxHatchAttr* hatch,         /* I: hatch attributes (NULL to use default) */
int* idEnt                   /* O: id of hatch (NULL to ignore) */
)
/*
DESCRIPTION:
This function creates a hatch pattern within a boundary.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgDatumDimAdd
(
const svxDatumDimData* datumData,   /* I: datum input data */
int* idDim                          /* O: id of the dimension created (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a datum dimension for the specified entity in drawing.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgDatumTargDimAdd
(
const svxDatumTargDimData* datumTData,   /* I: datum target input data */
int* idDim                               /* O: id of the dimension created (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a datum target dimension for the specified entity in drawing.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgDimAtGet
(
int idDim,           /* I: dimension id */
svxDimAttr *dmAttr   /* O: dimension attributes */
)
/*
DESCRIPTION:
Gets the attributes data of specified dimension.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgDimAtSet
(
int idDim,           /* I: dimension id */
svxDimAttr *dmAttr   /* I: dimension attributes */
)
/*
DESCRIPTION:
Sets the attributes data of specified dimension.
To modify some of the attributes of a dimension, it's better to
use cvxDwgGetDimAt() to get the origional attribtes first.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgEntMoveAlongDirection
(
int idEnt,                   /* I: id of entity to move */
svxVector2* Direction,       /* I: direction */
double Distance,             /* I: distance */
svxPoint2* BasePoint,        /* I: base point */
double angle,                /* I: angle */
double scale                 /* I: scale */
)
/*
DESCRIPTION:
The specified entity within the active drawing moves "Distance" distance in the direction of "Direction".

NOTE:
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 cvxDwgEntMovePntToPnt
(
int idEnt,                       /* I: id of entity to move */
svxPoint2* Start,                /* I: start point */
svxPoint2* End,                  /* I: end point */
evxDrawingMoveDirType type,      /* I: direction type */
double angle,                    /* I: angle */
double scale                     /* I: scale */
)
/*
DESCRIPTION:
Moves the specified entity within the active drawing from one point
"Start" to another "End".

NOTE:
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 cvxDwgFind
(
vxLongName rootName,     /* I: root name */
vxLongName drawingName,  /* I: drawing name */
int *idDrawing           /* O: drawing id */
)
/*
DESCRIPTION:
Get the id of the special drawing in the current active file.
if rootName=NULL, it means using the current sheet.

return 1 means failed, 0 means successful.
*/
________________________________________________________________________________

int cvxDwgFtrCtrlDimAdd
(
const svxDwgFtrCtrl* pData,  /* I: data of feature control dimension */
int* idDim                   /* O: id of the dimension created (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a feature control dimension for the specified entity in drawing.
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgGeomGetView
(
int idGeom,     /* I: index of geometry in view */
int *idView     /* O: index of parent view */
)
/*
DESCRIPTION:
Get index of parent view of specified geometry.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgGetDimTextBox
(
int idDim,            /* I: the index of the dimension object*/   
double *tbWid,        /* O: text box width */
double *tbHgt,        /* O: text box height */
double *chSlp,        /* O: text box slope */
svxPoint2 *txtPt      /* O: text box position */
)
/*
DESCRIPTION:
Get width, height, slope, position for a dimension text box in drawing sheet.

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

int cvxDwgGetTableSize
(
int iTblIdx,      /* I: index of table */
int *pRowNum,     /* O: row number of table */
int *pColNum      /* O: column number of table */
)
/*
DESCRIPTION:
Get the row and column count of table.
return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgHatchAssoCrvsGet
(
int idHatch,     /* I: id of hatch object */
int* count,      /* O: number of associative boundary curves */
int** AssocCrvs  /* O: associative boundary curves */
)
/*
DESCRIPTION:
Get an array of associative boundary curves of given hatch entity.
The memory for boundary curves is allocated in this function, so, the
calling function has to deallocate it.
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgHatchAttrSet
(
int idHatch,             /* I: hatch id */
svxHatchAttr HatchAttr   /* I: hatch attribute */
)
/*
DESCRIPTION:
Set hatch attribute.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgHoleCallOutDimAdd
(
const svxDwgHoleCallOutDim* pData,     /* I: data of hole callout dimension */
int*  numDim,                          /* O: number of resulting dimension (NULL to ignore) */
int** idDims                           /* O: id of list of id's of resulting dimension (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a Hole Callout dimension between the specified holes in drawing.
pData->iCalloutemt is set by evxCalloutEmt combined
Memory for the idDims is allocated by this function. The calling procedure is responsible to free the memory
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgInqActive
(
char *drawingName,   /* O: drawing name */
int nBytes           /* I: string size of active file name */
)
/*
DESCRIPTION:
Outputs the name of the active drawing.

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

int cvxDwgInqBorderTitle
(
int idDrawing,       /* I: index of drawing */
int *idBorder,       /* O: index of Border block(NULL to ignore) */
int *idBorderSkt,    /* O: index of Border sketch(NULL to ignore) */
int *idTitle,        /* O: index of title block(NULL to ignore) */
int *idTitleSkt      /* O: index of title sketch(NULL to ignore) */
)
/*
DESCRIPTION:
Get index of border and title including block and sketch in specified drawing.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgInqBundleDataByDim
(
int idDim,                  /* I: dimension id */
int* count,                 /* O: count of data */
svxDwgBundleDimData** data  /* O: dimension bundle data */
)
/*
DESCRIPTION:
Get information about the dimension bundle.

The memory referenced by "data" is allocated by this function.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgInqDimByDrawing
(
int idDrawing,   /* I: drawing id */
int* count,      /* O: count of "idDims" */
int** idDims     /* O: list of dimension id */
)
/*
DESCRIPTION:
Get dimension id by drawing id.

NOTE:
Dimensions and other annotations created prior to version 27.00 (VX_API_VERSION < 2700) might have been 
attached to either a drawing or to a view within the drawing. Beginning in version 27.00, ZW3D always 
attaches new dimensions and annotations to the drawing.

The cvxDwgInqDimByDrawing function gets entities that are directly attached to the drawing, regardless
of the version in which the entity was created.
The cvxDwgInqDimByView function gets only those older entities that are still attached to a view;
The cvxDwgInqDims function gets all dimension and annotation entities from a drawing regardless of whether
they are attached to the drawing or attached to a view within the drawing.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgInqDimByView
(
int idView,     /* I: view id */
int* count,     /* O: count of "idDims" */
int** idDims    /* O: list of dimension id */
)
/*
DESCRIPTION:
Get dimension id by view id.

NOTE:
Dimensions and other annotations created prior to version 27.00 (VX_API_VERSION < 2700) might have been
attached to either a drawing or to a view within the drawing. Beginning in version 27.00, ZW3D always
attaches new dimensions and annotations to the drawing.

The cvxDwgInqDimByView function gets only those older entities that are still attached to a view;
The cvxDwgInqDimByDrawing function gets entities that are directly attached to the drawing, regardless
of the version in which the entity was created. 
The cvxDwgInqDims function gets all dimension and annotation entities from a drawing regardless of whether 
they are attached to the drawing or attached to a view within the drawing.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgInqDimEnts
(
int idDim,      /* I: index of dimension */
int *count,     /* O: number of list */
int **idEnts    /* O: pointer to pointer of entities array */
)
/*
DESCRIPTION:
Outputs the id list of entities associated with the specified dimension.

The calling procedure MUST deallocate the output list with cvxMemFree.

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

int cvxDwgInqDimGripPnts
(
int idDim,        /* I: id of dimension */
int *Num,         /* O: number of grip points of dimension */
svxPoint **Pnts   /* O: list of grip point coordinates of dimension */
)
/*
DESCRIPTION:
Get grip point coordinates of the specified dimension.

The calling procedure MUST deallocate the output list.

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

int cvxDwgInqDims
(
int idDrawing,                /* I: drawing id */
evxDimType *dimTypeList,      /* I: dimension type list (NULL to get all dimensions) */
int dimTypeCount,             /* I: dimension type count (0 to get all dimensions) */
int *count,                   /* O: count of the object */
int **dims                    /* O: dimension list */
)
/*
DESCRIPTION:
Outputs a list of the dimension entity IDs in the special drawing.

The calling procedure MUST deallocate the output list with cvxMemFree.

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

int cvxDwgInqGeom
(
int idDrawing, /* I: drawing id */
int *count,    /* O: count of objects */
int **idEnts   /* O: list of geometry entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of geometry entities in the specified drawing.

The calling procedure MUST deallocate the output list with cvxMemFree.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgInqHatchAttr
(
int idHatch,                 /* I: hatch id */
svxHatchAttr* HatchAttr      /* O: hatch attribute */
)
/*
DESCRIPTION:
Get hatch attribute.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgInqHatchIdByDrawing
(
int idDrawing,   /* I: drawing id */
int* count,      /* O: count of "idHatchs" */
int** idHatchs   /* O: list of hatch id */
)
/*
DESCRIPTION:
Get hatch id by drawing id.

NOTE:
If the hatch belong to a view and not to a drawing, the hatch id cannot be obtained.
It can use cvxDwgInqHatchIdByView in this case.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgInqHatchIdByView
(
int idView,        /* I: view id */
int* count,        /* O: count of "idHatchs" */
int** idHatchs     /* O: list of hatch id */
)
/*
DESCRIPTION:
Get hatch id by view id.

NOTE:
If the hatch belong to a drawing and not to a view, the hatch id cannot be obtained.
It can use cvxDwgInqHatchIdByDrawing in this case.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgInqList
(
int idRoot,           /* I: root ID */
int *count,           /* O: count of the list */
int **idDrawings      /* O: ID list of the drawings */
)
/*
DESCRIPTION:
Outputs a list of the drawing IDs.
The calling procedure MUST deallocate the output list with cvxMemFree.

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

int cvxDwgInqName
(
int idDrawing,       /* I: drawing id */
char *drawingName,   /* O: drawing name */
int nBytes           /* I: string size of active file name */
)
/*
DESCRIPTION:
Get the name of the special drawing.

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

int cvxDwgInqPart
(
char* rootName,          /* I: root name (rootName[0]=0 or NULL for active sheet)*/
int *iCount,             /* O: count of associated parts */
svxCompName **partList   /* O: part info(part name and file name) list */
)
/*
DESCRIPTION:
Outputs a list of associated parts .
Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxDwgInqSymEnts
(
int idSym,       /* I: index of symbol */
int *Count,      /* O: number of list */
int **idEnts     /* O: pointer to pointer of entities array */
)
/*
DESCRIPTION:
Outputs the id list of entities associated with the specified symbol.

The calling procedure MUST deallocate the output list with cvxMemFree.

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

int cvxDwgInqSymObjList
(
int idSym,     /* I: id of symbol */
int* count,    /* O: count of listId */
int** listId   /* O: list of symbol object id */
)
/*
DESCRIPTION:
Gets a list of symbol objects.

Return 1 if error, -1 if not found symbol object, else 0.
*/
________________________________________________________________________________

int cvxDwgInqSymType
(
int idSym,           /* I: the index of symbol */
evxSymbolType *type  /* O: the type of specified symbol */
)
/*
DESCRIPTION:
Get the type(evxSymbolType) of specified symbol.
It can't get the corresponding type if "*type = VX_SYM_ALL".

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgInqTables
(
int idDrawing,                /* I: drawing id */
evxTableType type,            /* I: table type */
int *count,                   /* O: count of the object */
int **tables                  /* O: table list */
)
/*
DESCRIPTION:
Outputs a list of the table entity IDs in the special drawing.
The calling procedure MUST deallocate the output list with cvxMemFree.

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

int cvxDwgInqText
(
int idDrawing,  /* I: drawing id */
int *count,     /* I: count of objects */
int **idEnts    /* I: list of text entities id's */
)
/*
DESCRIPTION:
Outputs the id list of text entities in the specified drawing sheet.

The calling procedure MUST deallocate the output list with cvxMemFree.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgInqViewMod
(
int idDrawing,    /* I: the index of drawing */
int *modified     /* O: 1 if one of the views in specified drawing need to be updated */
)
/*
DESCRIPTION:
Check whether the views in the specified drawing has outdated and need to be updated,
output 1 if one of the views need to be updated.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgInqViewType
(
int idView,        /* I: the index of view */
evxViewType *type  /* O: the type of specified view */
)
/*
DESCRIPTION:
Get the type(evxViewType) of specified view.
It can't get the corresponding type if "*type = VX_VIEW_ALL".

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgInqViewTypeEx
(
int viewId,               /* I: index of view in sheeting */
evxViewTypeEx* viewType   /* O: type of view */
)
/*
DESCRIPTION:
   Get the type(evxViewTypeEx) of specified view. 
   Types of view are more detailed than cvxDwgInqViewType.
RETURN:
   Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgInqViews
(
int idDrawing,                /* I: drawing id */
evxViewType type,             /* I: view type */
int *count,                   /* O: count of the object */
int **views                   /* O: view list */
)
/*
DESCRIPTION:
Outputs a list of the view entity IDs in the special drawing.
The calling procedure MUST deallocate the output list with cvxMemFree.

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

int cvxDwgInsertSymbol
(
vxLongName fileName,   /* I: file name of specified symbol */
vxLongName symName,    /* I: name of symbol */
svxPoint2 *pnt,        /* I: insert position */
int*symId              /* O: symbol id (pass in NULL to ignore) */
)
/*
DESCRIPTION:
Insert the symbol of specified file to current file.
Output the new symbol id if "symId" is not NULL.

The "symName" can be inquired by cvxRootInqSymbol.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgLabelCoorDimAdd
(
const svxLabelCoorDimData* coorDimData,    /* I: label coordinate dimension input data */
int* idDim                                 /* O: id of the dimension created (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a label coordinate dimension for the specified entity in drawing.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgLabelDimAdd
(
const svxDimLabel* pLabel,       /* I: information needed by creating dimension label */
int* idDim                       /* O: id of Dim (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a label dimension .
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgLineDimAdd
(
const svxDwgLineDim* pData,     /* I: data of line dimension */
int* idDim                      /* O: id of the dimension created (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a Linear dimension between the specified obj in drawing.

pData->cons.type is set by evxDimLineType, as follows:
VX_DIM_LINE_LH -- horizontal
VX_DIM_LINE_LV -- vertical
VX_DIM_LINE_LA -- aligned
VX_DIM_LINE_LR -- rotated
VX_DIM_LINE_LP -- projected
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgLineOffsetDimAdd
(
const svxDwgLineOffsetDim* pData,    /* I: data of LineOffset dimension */
int* idDim                           /* O: id of the dimension created (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a Linear offset dimension between the specified two entities in drawing.
Supported entities include two lines, a point and a line

type of pData  is as follows by evxDimLineOffset:
VX_DIM_OFFSET_LOL offset dimension - line to line
VX_DIM_OFFSET_LOP offset dimension - line to point
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgLnrChmDimAdd
(
const svxDwgLnrChmDimData* dimData,    /* I: the information of linear chamfer dim which will create */
int* idDim                             /* O: id of the linear chamfer dim (input NULL to ignore) */
)
/*
DESCRIPTION:
   Create a linear chamfer dimension in sheeting. dimInfo must initialize before use.
RETURN:
   Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgOrdinateDimAdd
(
const svxDwgOrdinateDim* pData,    /* I: data of Ordinate dimension */
int* idDim                         /* O: id of the dimension created (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a Ordinate dimension between the specified object in drawing.

pData->sub.cons.type is set by evxDimLineType, as follows:
VX_DIM_LINE_LH -- horizontal
VX_DIM_LINE_LV -- vertical
VX_DIM_LINE_LA -- aligned
VX_DIM_LINE_LR -- rotated
VX_DIM_LINE_LP -- projected
VX_DIM_LINE_LO -- ordinate
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgRadDimAdd
(
const svxRadDimData* radDimData,    /* I: radial or diametric input data */
int* idDim                          /* O: id of the dimension created (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a radial or diametric dimension for the specified entity in drawing.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgRefEntDataGet
(
int idRefEnt,          /* I: index of reference entity */
svxRefEntData *data    /* O: data of reference entity */
)
/*
DESCRIPTION:
Get the component or shape data that the reference object points to.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgRegen
(
int count,                     /* I: count of idViews (count < 1, regen all views) */
int* idViews,                  /* I: list of idView */
int isRegenUnModifiedView,     /* I: 1 if regenerate unmodified views,else 0 */
int isRegenTable,              /* I: 1 if regenerate tables,else 0  */
int isPrompt,                  /* I: 1 if auto prompt for view regen ,else 0 */
int isRegenSketch              /* I: 1 if regenerate standalone sketch ,else 0 */
)
/*
DESCRIPTION:
Regenerate drawing.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgRotateView
(
const svxDwgRotView* pData    /* I: data of Rotate View */
)
/*
DESCRIPTION:
This function is used to Rotate View
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgSetRefPart
(
const char  *File,      /* I: drawing sheet file name (NULL string for the active file) */
const char  *Root,      /* I: drawing sheet root name (NULL string for the active target object) */
int         idxView,    /* I: update the specified view, -1 for all in the sheet */
svxCompName *oldPart,   /* I: old part name to be updated (can be NULL, see the description) */
svxCompName *newPart    /* I: new part name */
)
/*
DESCRIPTION:
Set the referenced part for the specified drawing sheet. Root can be NULL if the file
extension is .Z3DRW.

If idxView is >0, only update the specified view, -1 to update all drawing views in the
drawing sheet.

If oldPart is not specified, suppose to update the referenced part of the specified view
(if idxView>0) or the active view of the drawing sheet (mostly the first view).

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgStkBlnAdd
(
const svxDwgStkBlnData* stkBlnData,   /* I : information of creating stack balloons */
int*  idDimCount,                     /* O: number of stacked balloon dim id (input NULL to ignore) */
int** idDimList                       /* O: list of stacked balloon dim id (input NULL to ignore) */
)
/*
DESCRIPTION:
   Create stack balloons in sheeting.
RETURN:
   Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgSymAtGet
(
int idSym,           /* I: index of symbol */
svxSymAttr *symAttr  /* O: symbol attributes */
)
/*
DESCRIPTION:
Gets the attributes data of specified symbol. the function supports
the following 4 symbol types: VX_SYM_SURF, VX_SYM_WELD, VX_SYM_BEAD,
VX_SYM_ENDTRT.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgSymAtSet
(
int idSym,           /* I: index of symbol */
svxSymAttr *symAttr  /* I: symbol attributes */
)
/*
DESCRIPTION:
Sets the attributes data of specified symbol. the function supports
the following 4 symbol types: VX_SYM_SURF, VX_SYM_WELD, VX_SYM_BEAD,
VX_SYM_ENDTRT.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgSymImgAtGet
(
int idSymImg,    /* I: image id */
svxSymImg*data   /* O: image data */
)
/*
DESCRIPTION:
Gets the symbol image data of specified image.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgSymImgAtSet
(
int idSymImg,           /* I: image id */
const svxSymImg*data    /* I: image data */
)
/*
DESCRIPTION:
Sets the symbol image data of specified image.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgSymImgNew
(
svxSymImg*data,  /* I: symbol image data */
int embed,       /* I: 1-embed image file,0 not */
int locked,      /* I: 1-lock aspect ratio,0 not */
int *idSymImg    /* O: image id (NULL to ignore) */
)
/*
DESCRIPTION:
Creates a new image with the symbol image data.

If the "locked" of data is true, the width and the height's aspect ratio 
should be the same as the image. The width and the height can also be 
zero and it will be calculated based on the input points.

if idSymImg != NULL, output the id of new image.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgSymLinkExport
(
const int idSymLink,   /* I: the index of symbol openLink object */
vxPath filePath        /* I/O: path of export file */
)
/*
DESCRIPTION:
Export embedded file from symbol openLink object to specified path.
if only the export path is specified, the file uses the original
file name.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgSymLinkGet
(
const int idSymLink,  /* I: index of OLE object symbol */
vxPath filePath       /* O: the linked file path with symbol */
)
/*
DESCRIPTION:
Get the linked file path with special symbol.

Return 1 if error, else 0;
*/
________________________________________________________________________________

int cvxDwgSymSurfDataGet
(
int idSymSurf,    /* I: symbol id */
svxSymSurf*data   /* O: surface roughness data */
)
/*
DESCRIPTION:
Get the surface roughness data of specified symbol.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgSymSurfDataSet
(
int idSymSurf,      /* I: symbol id */
svxSymSurf*data     /* I: surface roughness data */
)
/*
DESCRIPTION:
Set the surface roughness data of specified symbol.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgSymSurfNew
(
int idEnt,               /* I: id of the parent entity of the reference point (0 to ignore) */
svxPoint2* refPoint,     /* I: coordinate of the reference point */
const svxSymSurf* data,  /* I: surface finish symbol data */
int *idSymSurf           /* O: index of new symbol (NULL to ignore) */
)
/*
DESCRIPTION:
Creates a surface finish symbol with specified data.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgSymWeldDataGet
(
const int      idSymWeld, /* I: symbol id*/
svxSymWeld*    data       /* O: weld data*/
)
/*
DESCRIPTION:
Get the weld data of special symbol.

This function allocates memory for "jogPoints" and "leaderPoints" 
in svxSymWeld struct. The memory MUST be deallocated by the calling 
procedure using cvxSymWeldFree().

Return 1 if error, else 0;
*/
________________________________________________________________________________

int cvxDwgSymWeldDataSet
(
const int            idSymWeld,    /* I: symbol id*/
const svxSymWeld*    data          /* I: weld data*/
)
/*
DESCRIPTION:
Set the weld data of special symbol.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgSymWeldNew
(
int idEnt,               /* I: id of the parent entity of the reference point (0 to ignore) */
svxPoint2* refPoint,     /* I: coordinate of the reference point */
const svxSymWeld* data,  /* I: weld symbol data */
int *idSymWeld           /* O: index of new symbol (NULL to ignore) */
)
/*
DESCRIPTION:
Creates a standard weld symbol with specified data.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgSymmetryDimAdd
(
const svxDwgSymmetryDimData* symmetryDimData,    /* I: symmetry dimension input data */
int* idDim                                       /* O: id of the symmetry dimension (input NULL to ignore)*/
)
/*
DESCRIPTION:
   Create a symmetry dimension in a drawing sheet.
RETURN:
   Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgTableAdjustSize
(
int idTable     /* I: id of table */
)
/*
DESCRIPTION:
Adjust table size to minimum.
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgTableBom
(
const svxDwgBom* pData,    /* I: data of BOM */
int*             idTbl     /* I: id of BOM table */
)
/*
DESCRIPTION:
This function is used to create BOM table
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgTableCellAtGet
(
int idTable,      /* I: index of table */
int Row,          /* I: index of row */
int Col,          /* I: index of column */
svxTextAt *TextAt /* O: attribute of text */
)
/*
DESCRIPTION:
Get text attribute of the specified cell in the table.

Returns 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgTableCellAtSet
(
int idTable,       /* I: index of table */
int Row,           /* I: index of row */
int Col,           /* I: index of column  */
svxTextAt *TextAt  /* I: attribute of text (NULL to use table attribute) */
)
/*
DESCRIPTION:
Set text attribute of the specified cell in the table.

Row>0 && Col>0: set text attribute of the specified cell, TextAT can be NULL
Row>0 && Col<0: set text attribute of specified row, TextAT can be NULL
Row<0 && Col>0: set text attribute of specified column, TextAT can be NULL
Row<0 && Col<0: set text attribute for the entire table, TextAT can not be NULL

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

Returns 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgTableCellGet
(
int idTable,  /* I: table id */
int Row,      /* I: row of table */
int Col,      /* I: column of table */
char* Value,  /* O: value of specified cell */
int nBytes    /* I: string size of value */
)
/*
DESCRIPTION:
Get the value of specified cell of table.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgTableCellSet
(
int idTable,  /* I: table id */
int Row,      /* I: row of table */
int Col,      /* I: column of table */
char* Value   /* I: modify value */
)
/*
DESCRIPTION:
Modify the value of specified cell of table.

Return 1 if error, else 0.
*/
________________________________________________________________________________

void cvxDwgTableCellsMerge
(
int idTable,       /* I: table id */
int minRow,        /* I: min row */
int maxRow,        /* I: max row */
int minCol,        /* I: min column */
int maxCol,        /* I: max column */
int kFirstData     /* I: flag of keep the first data when merging some cells */
)
/*
DESCRIPTION:
merge the selected cells to one cell.

if kFirstData = 0 and the selected cells have a lot of data, it will fail to
merge them.
*/
________________________________________________________________________________

void cvxDwgTableCellsUnMerge
(
int idTable,    /* I: table id */
int minRow,     /* I: min row */
int maxRow,     /* I: max row */
int minCol,     /* I: min column */
int maxCol      /* I: max column */
)
/*
DESCRIPTION:
un-merge the selected cells.
*/
________________________________________________________________________________

int cvxDwgTableColDelete
(
int idTable,   /* I: index of table */
int Col        /* I: index of column */
)
/*
DESCRIPTION:
Delete specified column from table.

Returns 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgTableColInsert
(
int idTable,   /* I: index of table */
int Col        /* I: index of column */
)
/*
DESCRIPTION:
Insert a column to the right of the specified column in the table.

Returns 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgTableColWidthSet
(
int idTable,  /* I: index of table */
int Col,      /* I: index of column */
double Width  /* I: width of column, auto adjust column width when width < 0 */
)
/*
DESCRIPTION:
Set the column width of the specified column in the table.

Returns 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgTableExport
(
int idTable,  /* I: table id */
vxPath path   /* I: export file full path */
)
/*
DESCRIPTION:
Export the specified table to excel file.
The file type is '.xls' or '.xlsx'.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgTableInsert
(
const svxDwgTblInsert* pData    /* I: data of table */
)
/*
DESCRIPTION:
This function is used to insert table
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgTableLinkToExcel
(
int idTable, /* I: table id */
vxPath path  /* I: the linked excel file full path */
)
/*
DESCRIPTION:
Link the specified table to the specified excel.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgTableRowDelete
(
int idTable,   /* I: index of table */
int Row        /* I: index of row */
)
/*
DESCRIPTION:
delete specified row from table.

Returns 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgTableRowHeightSet
(
int idTable,  /* I: index of table */
int Row,      /* I: index of row */
double Height /* I: height of row, auto adjust row height when Height < 0 */
)
/*
DESCRIPTION:
Set the row height of the specified row in the table.

Returns 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgTableRowInsert
(
int idTable,   /* I: index of table */
int Row        /* I: index of row */
)
/*
DESCRIPTION:
Insert a row below the specified row in the table.

Returns 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgUserSymNew
(
int count,          /* I: number of entities that make up the user symbol */
int *idEnt,         /* I: list of index of entities that make up the user symbol */
svxPoint2 *BasePnt, /* I: reference point (NULL to use the first critical point of the first entity) */
vxLongName Name,    /* I: name of new user symbol to create */
int *idBlock        /* O: index of new user symbol (NULL to ignore) */
)
/*
DESCRIPTION:
Use this function to save a group of entities to the active 
symbol library for later use. if BasePnt is NULL, the function 
will use the first critical point of the first entity to make 
up the user symbol as the reference point, see the function 
description of cvxEntPnt for detail of the critical point.

All user symbol blocks can be inquired by cvxRootInqSymbol.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgUserSymObjGet
(
const int   idSymUser,  /* I: id of user symbol */
int*        nObj,       /* O: number of objects in group */
int**       idObjs      /* O: list of object indices */
)
/*
DESCRIPTION:
Get a list of indices of the  objects in the  User Symbol.

This function allocates memory for "list".  The calling procedure is
responsible for deallocating the memory.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgUserTableCreate
(
vxName name,     /* I: table name */
int iRow,        /* I: number of rows  */
int iCol,        /* I: number of columns */
svxPoint2 *pnt,  /* I: the coordinate of the origin of table */
int origin,      /* I: indicate the insertion position(0-8) */
int *idTable     /* O: id of new table(NULL to ignore) */
)
/*
DESCRIPTION:
Create a user table.
Output the table id if idTable is not NULL.

Variable origin specifies where the table is inserted, valid values are as follows:
origin=0: Top-Left
origin=1: Top-Center
origin=2: Top-Right
origin=3: Mid-Left
origin=4: Mid-Center
origin=5: Mid-Right
origin=6: Bottom-Left
origin=7: Bottom-Center
origin=8: Bottom-Right

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgUserTableCreateByTemplate
(
vxName name,     /* I: table name */
vxPath tplPath,  /* I: template file full path */
svxPoint2 *pnt,  /* I: the coordinate of the origin of table */
int origin,      /* I: indicate the insertion position(0-8) */
int *idTable     /* O: id of new table(NULL to ignore) */
)
/*
DESCRIPTION:
Create a user table through a template.
Output the table id if idTable is not NULL.

Variable origin specifies where the table is inserted, valid values are as follows:
origin=0: Top-Left
origin=1: Top-Center
origin=2: Top-Right
origin=3: Mid-Left
origin=4: Mid-Center
origin=5: Mid-Right
origin=6: Bottom-Left
origin=7: Bottom-Center
origin=8: Bottom-Right

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewAtGet
(
int idView,           /* I: index of view (<= 0 to get the global variables) */
svxViewAt *viewAttr   /* O: view attributes */
)
/*
DESCRIPTION:
Gets the attribute data of specified view. if index of view less than 0, the
function will get the global variables for view layout attributes used in CdV3Ins.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewAtSet
(
int idView,         /* I: index of view (<= 0 to set the global variables) */
svxViewAt *viewAttr /* I: view attributes */
)
/*
DESCRIPTION:
Set the attribute of specified view. if index of view less than 0, the
function will set the global variables for view layout attributes used in CdV3Ins.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewAuxiliary
(
const svxAuxViewData* auxViewData,   /* I: auxiliary view data */
int* idView                          /* O: id of the view created (input NULL to ignore) */
)
/*
DESCRIPTION:
Create an auxiliary view for base view in drawing.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewBrokenSection
(
svxDwgBrokenSectionData* data,      /* I: broken section data */
int* idView                         /* O: id of section view (NULL to ignore) */
)
/*
DESCRIPTION:
This interface function is broken section.
A broken section is a cut-away view of the interior of a part.
It is a section view displayed inside a 2D boundary where an existing view of the part has been cut away.

NOTE:
| type(evxDwgDepthType)  | The following variables must be defined                                            |
| VX_DEPTH_POINT         | method,idView,bPoints,countBPs,isShow,isDynamicHatch,dPoint,idCrv,dOffset          |
| VX_DEPTH_SECTION_PLANE | method,idView,bPoints,countBPs,isShow,isDynamicHatch,dPoint,dView,oPoints,countOPs |
| VX_DEPTH_3D_NAMED      | method,idView,bPoints,countBPs,isShow,isDynamicHatch,name                          |

| method(evxDwgBndMethod) | the range of values of "countBPs" |
| VX_RECTANGULAR_BOUNDARY |    countBPs == 2                  |
| VX_CIRCULAR_BOUNDARY    |    countBPs == 2                  |
| VX_POLYLINE_BOUNDARY    |    countBPs >= 3                  |

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewDetail
(
const svxDwgDetailData* data,      /* I: detail data */
int* idView                        /* O: id of detail view (NULL to ignore) */
)
/*
DESCRIPTION:
This function creates a local detail view.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewDottedBorderGet
(
int idView,                /* I: index of view */
svxPoint2* UpperLeft,      /* O: top left corner */
svxPoint2* UpperRight,     /* O: top right corner */
svxPoint2* BottomLeft,     /* O: left bottom */
svxPoint2* BottomRight     /* O: right bottom */
)
/*
DESCRIPTION:
Gets the coordinates of the four vertices of the border.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewEntitiesAssociate
(
int idView,     /* I: index of view (idView = -1 to disassociate) */
int count,      /* I: number of idEnts */
int* idEnts     /* I: list of entity id */
)
/*
DESCRIPTION:
This function is to associate the entities with the view.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewFullSection
(
const svxFulSecViewData* fulSecViewData,     /* I: full section view data */
int* idView                                  /* O: id of the view created (input NULL to ignore) */
)
/*
DESCRIPTION:
Create a full section view for base view in drawing.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewGeomGetShapeId
(
int geomId,          /* I: index of geometry in view */
char *fileName,      /* O: file name of the component of view of line, it can be NULL */
int fileNameBytes,   /* I: maximum bytes that fileName can hold */
char *partName,      /* O: part name of the component of view of line, it can be NULL */
int partNameBytes,   /* I: maximum bytes that partName can hold */
svxEntPath *pickPath,/* O: pick path, it can be NULL*/
int *geom3DId,       /* O: index of geometry 3D correspnding to geomId, it can be NULL */
int *shapeId         /* O: shape or sketch id that geometry in view specified by geomId can */
                     /*    be traced back to, it can be NULL */
)
/*
DESCRIPTION:
This function is to get shape id that geometry in view specified by geomId can be traced back to.
The file name, part name or pick path is also output if one of them is no NULL.

Return value:
0: shape id can be obtained;
1: shape id can NOT be obtained;
*/
________________________________________________________________________________

int cvxDwgViewGeomInqList
(
int viewId,    /* I: view index */
int option,    /* I: number to indicate which type of geometry to obtain.*/
               /*    Detail can refer to description. */
int *count,    /* O: number of list */
int **indices  /* O: pointer to pointer of geometry indices array */
)
/*
DESCRIPTION:
This function is to get the geometry indices list depending on the option.

The calling procedure MUST deallocate the output list with cvxMemFree.

Values of option are as follows:
1: shown geometries NOT cooresponding to original edges and faces, such as
   boundary generated by Broken Section view;
2: shown geometries cooresponding to original edges and faces;
3: hidden geometry;
4: tangent-shown geometry;
5: tangent-hidden geometry;
6: cosmetic thread geometry;
7: section view cutting plane geometry, or for detail view clip boundary
   (circle only)
8: centerline geometry;
9: centerline objects;
10: 3D wireframe data;
11: "hidden" wireframe curves;
12: "hidden" top centermarks;
13: "hidden" centerlines;
14: "hidden" threads;
15: 3D point data;
16: xtra def'n stuff (thick line);
17: 3D anno text;
18: xtra def'n stuff (arrows);
19: bend lines of sheet metal;
20: "hidden" bend lines of sheet metal;
21: thread end lines;
22: hidden thread end lines;
23: bend notes of sheet metal;
24: hidden bend notes of sheet metal;
25: lines for weld beads in idx_beads;
26: weld beads;
27: crop line;
28: 3D hatch lines of cosmetic sketch
29: associated entities
30: associated dimensions

Return value:
0: no error happens;
1: error happens;
*/
________________________________________________________________________________

int cvxDwgViewInqChildView
(
int idView,        /* I: index of view */
int* count,        /* O: number of idViews */
int** idViews      /* O: list of child view */
)
/*
DESCRIPTION:
Output sub-views of the specified view.

The calling procedure MUST deallocate the output list with cvxMemFree.
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewInqOrgPnt
(
int idView,     /* I: id of view */
svxPoint2*pnt,  /* O: origin point of specified view */
int *idEnt      /* O: id of origin point(NULL to ignore) */
)
/*
DESCRIPTION:
Get the origin point of specified view.
If idEnt is not NULL, output the id of origin point.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewInqPart
(
int idView,                   /* I: view id, -1 to get the active view for the target sheet */
svxCompName *part             /* O: part */
)
/*
DESCRIPTION:
Outputs source part object of the drawing view.
Returns 1 if function fails; 0 if it succeeds.
*/
________________________________________________________________________________

int cvxDwgViewInqPartConfig
(
int idView,              /* I: view id, -1 to get the active view for the target sheet */
vxName partCfg           /* O: the name of the active item of configuration table */
)
/*
DESCRIPTION:
Inquire the name of the active item of configuration table by the source part object of the drawing view.

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

int cvxDwgViewInqProjection
(
int idView,                    /* I: id view */
evxViewProjAngle* projection   /* O: projection angle */
)
/*
DESCRIPTION:
Get perspective projection by view id.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewInqRefEnts
(
int viewId,       /* I: view id in drawing */
int *count,       /* O: number of reference entities */
int **idRefEnts   /* O: list of reference entities */
)
/*
DESCRIPTION:
Outputs a list of the reference entity IDs in the special view.

The calling procedure MUST deallocate the output list with cvxMemFree.

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

int cvxDwgViewLayout
(
svxViewLayoutData* data        /* I: layout setting info */
)
/*
DESCRIPTION:
Insert view layout.
This function can create a 1 to 7 view layout of a 3D part.
This interface is used in the engineering drawing environment.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewLocationGet
(
int idView,          /* I: index of view */
svxPoint2* point     /* O: position of specified view */
)
/*
DESCRIPTION:
Gets the starting position of the view.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewPnt2DTo3D
(
int pnt2DId,      /* I: point id in view */
svxPoint *pnt3D   /* O: 3D point */
)
/*
DESCRIPTION:
Get 3D point in part coordinates corresponding to a pick point on
an entity in a drawing sheet view.

The 3D coordinates are output in pnt3D.  If pzPnt is V_NULL, this
function merely determines whether the given pick is on an entity
that can be mapped to a 3D point.

Returns 0 if a mapping to a 3D point is found for the given pick
point.  Returns non-zero if the pick is not on an entity that can
be mapped to 3D.
*/
________________________________________________________________________________

int cvxDwgViewPnt3DTo2D
(
int viewId,        /* I: view id in drawing */
svxPoint pnt3D,    /* I: 3D point */
svxPoint2 *pnt2D   /* O: 2D point */
)
/*
DESCRIPTION:
Get 2D point value in drawing sheet corresponding to a 3D point 
value in the part. The 2D coordinate is output in pnt2D and it is 
converted from the matrix of view. 

Returns 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewProjection
(
int idBaseView,        /* I: id of base view */
svxPoint2* location,   /* I: location of projection view */
int Projection,        /* I: 1 if 1st angle, 2 if 3rd angle */
int DimType,           /* I: 0 if projected, 1 if true */
svxViewAt* ViewAttr,   /* I: view attribute(NULL to use default) */
int* idProjView        /* O: id of projection view (NULL to ignore) */
)
/*
DESCRIPTION:
Insert projection view.
This function can create a view projected from another existing 3D layout view.
This interface is used in the engineering drawing environment.

NOTE:
The value of "ViewAttr" can be obtained through "cvxDwgViewAtGet()".
The default value of "ViewAttr" can be obtained through "cvxDwgViewAtGet(-1,ViewAttr)".

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewRefCompVisSet
(
int idView,            /* I: view id in drawing */
vxLongName fileName,   /* I: file name of component */
vxLongName partName,   /* I: part name of component */
int show               /* I: 1 to unblank component; 0 to blank */
)
/*
DESCRIPTION:
Displays or hides the specified reference component in the specified view,
Do not support section view and detail view.

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

int cvxDwgViewRefEntAtGet
(
int idRefEnt,      /* I: index of reference entity */
int *clrValid,     /* O: 1 from attribute; 0 inherited from view */
int *typeValid,    /* O: 1 from attribute; 0 inherited from view */
int *widthValid,   /* O: 1 from attribute; 0 inherited from view */
svxLineAt *entAt   /* O: wireframe attributes, attribute items that are 
                         not inherit from view is valid */
)
/*
DESCRIPTION:
Gets the wireframe attributes of specified reference entity.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewRefEntAtSet
(
int idRefEnt,           /* I: index of reference entity */
int clrValid,           /* I: 1 to set base on attribute; 0 to inherit view */
int typeValid,          /* I: 1 to set base on attribute; 0 to inherit view */
int widthValid,         /* I: 1 to set base on attribute; 0 to inherit view */
const svxLineAt *entAt  /* I: wireframe attributes, attribute items that are
                              not inherit from view are set */
)
/*
DESCRIPTION:
Set the wireframe attributes of specified reference entity.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewRotate
(
int idView,     /* I: id of view */
double angle    /* I: degree angle */
)
/*
DESCRIPTION:
Rotate the view with specify angle.
Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxDwgViewStandard
(
const svxViewStandardData* data,  /* I: standard setting info */
int* idView                       /* O: id of standard view(NULL to ignore) */
)
/*
DESCRIPTION:
Insert Standard View.
Use this function to create a standard orthographic layout view from a 3D part.
If the part has named views created using the View Manager, they can also be inserted as a standard view.
This interface is used in the engineering drawing environment.

Return 1 if error, else 0.
*/
________________________________________________________________________________

int cvxShtInqSymbol
(
evxSymbolType type,  /* I: symbol object type (VX_SYM_ALL to get all) */
int *Count,          /* O: number of symbol entities */
int **idEnts         /* O: list of symbol entity id's */
)
/*
DESCRIPTION:
Outputs a list of indices of specified type symbol entities
in the active sheet.

The calling procedure MUST deallocate the output list.

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