#ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /*! api version number #define VX_API_VERSION 2700
basic data types
/* object or file name (null-terminated text string) */ typedef char vxName[32]; /* long object or file name (null-terminated text string) */ typedef char vxLongName[256]; /* complete file path (null-terminated text string) */ typedef char vxPath[256]; /* arithmetic expression (null-terminated text string) */ typedef char vxExp[256]; /* variable expression (null-terminated text string) */ typedef char vxVarExp[1024]; /* 32 bit unsigned integer */ typedef unsigned int vxUint32; /* integer tree widget item id */ typedef int vxTreeItemId; /* maximum length of a non-persistent (i.e. evaluated) pick path (sync with VsPickPath in VxToolsPub.h) */ #define V_PP_LEN 400
math/geometry/topology information
/* entity pick path (sync with VsPickPath) */ typedef struct svxEntPath { int Count; /* number of id's in the path */ int Id[V_PP_LEN];/* list of id's that define the path to an entity */ /* Id[0] = -1; path begins with currently active root object (root path) */ /* Id[0] = -2; path begins with top-level parent file/object (target path) */ /* Id[1] = id of first parent entity in path */ /* Id[N] = id of child entity to act upon */ /* See cvxEntPathToRoot() to convert target path to root path */ } svxEntPath; /* limits */ typedef struct svxLimit { double min; double max; } svxLimit; /* 3D bounding box */ typedef struct svxBndBox { svxLimit X; svxLimit Y; svxLimit Z; } svxBndBox; /* 2D point */ typedef struct svxPoint2 { double x; double y; } svxPoint2; /* 2D point(single precision floating point) */ typedef struct svxPoint2f { float x; float y; } svxPoint2f; /* 3D point */ typedef struct svxPoint { double x; double y; double z; } svxPoint; /* 3D point (single precision floating point) */ typedef struct svxPointf { float x; float y; float z; } svxPointf; /* 2D vector */ typedef struct svxVector2 { double x; double y; } svxVector2; /* 3D vector */ typedef struct svxVector { double x; double y; double z; } svxVector; /* 3D axis */ typedef struct svxAxis { svxPoint Pnt; /* point */ svxVector Dir; /* direction */ } svxAxis; /* 3D transformation matrix or coordinate frame (local to world) */ typedef struct svxMatrix { char identity; /* 1 if identity matrix, else 0 */ double xx, yx, zx, xt; /* cosines of X axis and origin X (xt) */ double xy, yy, zy, yt; /* cosines of Y axis and origin Y (yt) */ double xz, yz, zz, zt; /* cosines of Z axis and origin Z (zt) */ } svxMatrix; /* Euler angles and translate vector */ typedef struct svxMatEuler { double ang1st; /* 1st rotate angle (Rad) */ double ang2nd; /* 2nd rotate angle (Rad) */ double ang3rd; /* 3rd rotate angle (Rad) */ double x; /* x location */ double y; /* y location */ double z; /* z location */ } svxMatEuler; /* Two categories of rotation sequences for Euler angles: Proper Type and Tait-Byran Type */ typedef enum evxEulerAngSeq { ** Proper Euler Angle - when the first and third rotation are around the same axes. VX_XYX = 121, /* X-axis, Y-axis, X-axis */ VX_XZX = 131, /* X-axis, Z-axis, X-axis */ VX_YXY = 212, /* Y-axis, X-axis, Y-axis */ VX_YZY = 232, /* Y-axis, Z-axis, Y-axis */ VX_ZXZ = 313, /* Z-axis, X-axis, Z-axis */ VX_ZYZ = 323, /* Z-axis, Y-axis, Z-axis */ ** Tait-Bryan or Roll-Pitch-Yaw Angles - when three rotations are around different axes. VX_RPY = 123, /* X-axis (Roll), Y-axis (Pitch), Z-axis (Yaw) */ VX_RYP = 132, /* X-axis (Roll), Z-axis (Yaw), Y-axis (Pitch) */ VX_PRY = 213, /* Y-axis (Pitch), X-axis (Roll), Z-axis (Yaw) */ VX_PYR = 231, /* Y-axis (Pitch), Z-axis (Yaw), X-axis (Roll) */ VX_YRP = 312, /* Z-axis (Yaw), X-axis (Roll), Y-axis (Pitch) */ VX_YPR = 321 /* Z-axis (Yaw), Y-axis (Pitch), X-axis (Roll) */ } evxEulerAngSeq; /* 3D triangle */ typedef struct svxTriangle { svxPoint Pnt[3]; /* triangle vertices */ svxVector Normal; /* outward-facing normal */ } svxTriangle; /* curve/surface extension options */ typedef enum evxExtendOpt { VX_EXTEND_UNDEFINED = 0,/* linear extend is the default when extension is undefined */ VX_EXTEND_LINEAR = 1, VX_EXTEND_CIRCULAR = 2, VX_EXTEND_REFLECT = 3 } evxExtendOpt; /* curve types */ typedef enum evxCurveType { VX_CRV_UNDEFINED = 0, VX_CRV_LINE = 1, VX_CRV_ARC = 2, VX_CRV_CIRCLE = 3, VX_CRV_NURB = 4 } evxCurveType; typedef struct svxParameters { int closed; /* 1=closed curve, 0=open curve */ int degree; /* degree (order = deg + 1) */ int num_knots; /* number of knots */ svxLimit bnd; /* boundaries of parameter space */ double *knots; /* array of knot values */ int free_mem; /* 1 if memory referenced by "knots" should ** be free'd by cvxCurveFree() } svxParameters; typedef struct svxControlPoints { int rat; /* 1=RATIONAL, 0=NONRATIONAL control points */ int dim; /* number of coordinates per control point (1-4) */ int plane; /* cp hyper plane type: 1:pnt, 2:line, 3:plane */ int num_cp; /* number of control points in list */ svxBndBox box; /* bounding box of control points */ double *coord; /* control point coordinates (possibly weighted) */ /* if RATIONAL, points are of form (wx,wy,wz,w) */ int free_mem; /* 1 if memory referenced by "coord" should ** be free'd by cvxCurveFree() } svxControlPoints; /* 2D or 3D curvilinear geometry */ typedef struct svxCurve { evxCurveType Type; /* curve type */ svxMatrix Frame; /* local frame (origin is center of 3D circle/arc) */ svxPoint P1, P2; /* line start/end points or center of 2D circle/arc */ double A1, A2; /* arc start/end angles (degrees) */ double R; /* circle/arc radius */ svxParameters T; /* NURB parameter space data */ svxControlPoints P; /* NURB control point data (mm) */ } svxCurve; typedef struct svxEvalCurv { int level; /* level of evaluation */ svxPoint pnt; /* level 0 - x,y,z (or u,v) */ svxPoint deriv_1; /* level 1 - x',y' (or u',v') */ svxPoint deriv_2; /* level 2 - x'',y'' (or u'',v'') */ svxPoint deriv_3; /* level 3 - x''',y''',z''' (or u''',v''') */ } svxEvalCurv; /* surface types */ typedef enum evxSurfaceType { VX_SRF_PLANE, VX_SRF_SPHERE, VX_SRF_CONE, VX_SRF_GRID, VX_SRF_CYLINDER, VX_SRF_EXTRUDE, VX_SRF_REVOLVE, VX_SRF_SWEEP_NOT_USED, VX_SRF_GEN, VX_SRF_OFFSET, VX_SRF_MESH, VX_SRF_RULED, VX_SRF_HEMIS, VX_SRF_FRUSTRUM, VX_SRF_DRAFT, VX_SRF_DRAFT_NPLN, VX_SRF_DRAFT_NUV, VX_SRF_ELLIPSOID, VX_SRF_3PT_PLANE, VX_SRF_BILIN_CNVX, VX_SRF_EXTRUDE_DRFT, VX_SRF_REVOLVE_PLN, VX_SRF_TORUS, VX_SRF_SMD_THCK_FC, VX_SRF_BEND_GEN, VX_SRF_PLANE_STAT_FC, VX_SRF_GEN_STAT_FC, VX_SRF_CIR_OFF, VX_SRF_VAR_OFF, VX_SRF_THRD_THDFC, VX_SRF_THRD_NTHDFC, VX_SRF_THRD_CONFC } evxSurfaceType; /* 3D NURB surface (untrimmed) */ typedef struct svxSurface { evxSurfaceType Type; /* surface type */ int OutNormal; /* 1 if the surface's natural normal points towards ** the outside of the shape it is associated with; ** 0 if the surface's natural normal points inward. svxParameters U; /* NURB parameter space data in U direction */ svxParameters V; /* NURB parameter space data in V direction */ svxControlPoints P; /* NURB control point data (mm) */ } svxSurface; /* 3D NURB surface type */ typedef enum evxSrfPrimType { VX_SF_PRIM_PLN, /* plane */ VX_SF_PRIM_SPH, /* sphere */ VX_SF_PRIM_CON, /* cone */ VX_SF_PRIM_CYL, /* cylinder */ VX_SF_PRIM_NURB, /* nurbs surface */ VX_SF_PRIM_ELLSO, /* ellipsoid */ VX_SF_PRIM_TORUS /* torus */ } evxSrfPrimType; /* data of plane */ typedef struct svxPlane { double xlen; /* extents of the XY plane */ double ylen; /* extents in the XY plane */ svxMatrix form; /* plane centered about xform */ } svxPlane; /* spherical surface data */ typedef struct svxSphere { double radius; /* radius */ svxMatrix form; /* sphere centered about xform */ int poleis01; /* = 1 : poles (if they exist) are at extreme V parameters = 0 : poles (if they exist) are at extreme U parameters */ } svxSphere; /* conical surface data */ typedef struct svxCone { double radius1; /* bottom (lo u or v) radius */ double radius2; /* top (hi u or v) radius. */ double length; /* cone len between Max(radius1,radius2) and apex (length of the axis)*/ svxMatrix form; /* cone centered about xform origin is at large radius z-axis points from large radius to apex. x-axis point to seam */ int lindir; /* = 1 : u defines the linear direction. = 2 : v defines the linear direction. */ } svxCone; /* cylindrical surface data */ typedef struct svxCylinder { double radius; /* radius */ double length; /* length */ svxMatrix form; /* cylinder centered about xform origin is at low parameter value z-axis points from low parameter to high parameter. x-axis point to seam */ int lindir; /* = 1 : u defines the linear direction. = 2 : v defines the linear direction. */ } svxCylinder; /* circular surface data */ typedef struct svxTorus { double dPathRadius; /* revolve path or spine radius */ double dProfRadius; /* xsect or profile radius */ svxMatrix form; /* torus centered about xform z-axis points out of plane x-axis point to seam */ int fSpineDir; /* = 1 : u defines the spine direction. = 0 : v defines the spine direction. */ int fApplemon; /* = 1 : Apple = 2 : Lemon */ } svxTorus; typedef struct svxEllipsoid { double xlen; /* length along x-axis */ double ylen; /* length along y-axis */ double zlen; /* length along z-axis */ svxMatrix form; /* ellipsoid centered about xform */ int poleis01; /* = 1 : poles (if they exist) are at extreme V parameters = 0 : poles (if they exist) are at extreme U parameters */ } svxEllipsoid; typedef struct svxSrfPrim { evxSrfPrimType srfType; /* surface type */ union { svxPlane pln; /* data of plane */ svxSphere sph; /* spherical surface data */ svxCone con; /* conical surface data */ svxCylinder cyl; /* cylindrical surface data */ svxSurface srf; /* nurbs surface data */ svxEllipsoid ellso; /* ellipsoid surface data */ svxTorus torus; /* circular surface data */ } srfData; } svxSrfPrim; /* variable types */ typedef enum evxVarType { VX_VAR_NUM = 0, /* number */ VX_VAR_STR = 1, /* string */ VX_VAR_PNT = 2, /* point */ VX_VAR_VEC = 3 /* vector */ } evxVarType; /* sub types of numeric variable */ typedef enum evxVarNumType { VX_VAR_CONS = 0, /* constant number (without unit) */ VX_VAR_DST = 1, /* distance (evxUnitType) */ VX_VAR_ANG = 2, /* angle (evxAngUnitType) */ VX_VAR_MASS = 3, /* mass (evxMassUnitType) */ VX_VAR_DENSITY = 4, /* density (evxDensityUnitType) */ VX_VAR_AREA = 5, /* area (evxUnitType) */ VX_VAR_VOLUME = 6, /* volume (evxUnitType) */ VX_VAR_MASS_MOMENT = 7 /* mass moment (evxMassMomentUnitType) */ } evxVarNumType; /* numeric variable */ typedef struct svxVariable { vxName Name; /* variable name */ double Value; /* value is not required if Expression is defined */ svxPoint pnt_val; /* the value of point is not required if Expression is defined */ vxVarExp Expression; /* optional expression (Expression[0]=0 if undefined) */ char type; /* variable type (value of evxVarType) */ char sub_type; /* sub type of numeric variable (value of evxVarNumType) */ char unit_type; /* unit type (see evxVarNumType), evxUnitType for point type */ } svxVariable; /* system of linear units */ typedef enum evxUnitType { VX_UNIT_MICRON = 0, /* micron */ VX_UNIT_MILLIMETER = 1, /* millimeter */ VX_UNIT_CENTIMETER = 2, /* centimeter */ VX_UNIT_METER = 3, /* meter */ VX_UNIT_INCH = 4, /* inch */ VX_UNIT_FOOT = 5, /* foot */ VX_UNIT_YD = 6, /* yard */ VX_UNIT_DM = 7, /* decimeter */ VX_UNIT_MIL = 10 /* mil */ } evxUnitType; /* system of angle units */ typedef enum evxAngUnitType { VX_UNIT_DEG = 8, /* degree */ VX_UNIT_RAD = 9 /* radian */ } evxAngUnitType; /* system of mass units */ typedef enum evxMassUnitType { VX_UNIT_GM = 11, /* gram */ VX_UNIT_KG = 12, /* kilogram */ VX_UNIT_OZ = 13, /* ounce */ VX_UNIT_LB = 14 /* pound */ } evxMassUnitType; /* system of density units */ typedef enum evxDensityUnitType { VX_UNIT_DEN_KG_M3 = 0, /* kg/m3 */ VX_UNIT_DEN_KG_MM3 = 1, /* kg/mm3 */ VX_UNIT_DEN_G_MM3 = 2, /* g/mm3 */ VX_UNIT_DEN_G_CM3 = 3, /* g/cm3 */ VX_UNIT_DEN_LB_IN3 = 4, /* lb/in3 */ VX_UNIT_DEN_LB_FT3 = 5, /* lb/ft3 */ VX_UNIT_DEN_LB_YD3 = 6, /* lb/yd3 */ VX_UNIT_DEN_OZ_IN3 = 7, /* oz/in3 */ VX_UNIT_DEN_OZ_FT3 = 8, /* oz/ft3 */ VX_UNIT_DEN_OZ_YD3 = 9, /* oz/yd3 */ VX_UNIT_DEN_KG_DM3 = 10, /* kg/dm3 */ VX_UNIT_DEN_G_DM3 = 11, /* g/dm3 */ } evxDensityUnitType; /* system of mass moment units */ typedef enum evxMassMomentUnitType { VX_UNIT_MASSMOMENT_KGMM2 = 0, /* kg.mm2 */ VX_UNIT_MASSMOMENT_KGM2 = 1, /* kg.m2 */ VX_UNIT_MASSMOMENT_GMM2 = 2, /* g.mm2 */ VX_UNIT_MASSMOMENT_GCM2 = 3, /* g.cm2 */ VX_UNIT_MASSMOMENT_LBIN2 = 4, /* lb.in2 */ VX_UNIT_MASSMOMENT_LBFT2 = 5, /* lb.ft2 */ VX_UNIT_MASSMOMENT_LBYD2 = 6, /* lb.yd2 */ VX_UNIT_MASSMOMENT_OZIN2 = 7, /* oz.in2 */ VX_UNIT_MASSMOMENT_OZFT2 = 8, /* oz.ft2 */ VX_UNIT_MASSMOMENT_OZYD2 = 9, /* oz.yd2 */ VX_UNIT_MASSMOMENT_KGDM2 = 10, /* kg.dm2 */ VX_UNIT_MASSMOMENT_GDM2 = 11, /* g.dm2 */ } evxMassMomentUnitType; /* face trim-curve option */ typedef enum evxFaceTrim { VX_TRIM_NONE = 0, /* ignore all trim boundaries */ VX_TRIM_ALL = 1, /* use all face trim boundaries */ VX_TRIM_OUTER = 2 /* use only the outer trim boundaries */ } evxFaceTrim; /* point location */ typedef enum evxPntLocation { VX_PNT_OUT = -1, /* point lies outside the boundary */ VX_PNT_ON = 0, /* point lies on the boundary */ VX_PNT_IN = 1, /* point lies inside the boundary */ VX_PNT_NULL = -2 /* unable to classify point location */ } evxPntLocation; /* pre-edge information */ typedef struct svxPreEdge { svxLimit Limits; /* limits of pre-edge within its parameter space */ int idLoop; /* id of parent loop */ int idEdge; /* id of parent edge */ int idNext; /* id of next pre-edge in loop direction */ int idGeom; /* id of uv curve geometry */ int EdgeDir; /* direction relative to edge (1=same, -1=opposite) */ int LoopDir; /* direction relative to loop (1=same, -1=opposite) */ } svxPreEdge;
gui/display data
/* standard colors + index colors (see cvxColorRGB for RGB color components) */ typedef enum evxColor { VX_COLOR_RGB = -1, VX_COLOR_NULL = 0, VX_COLOR_GREEN = 1, /* R=0, G=255, B=0 */ VX_COLOR_RED = 2, /* R=255, G=0, B=0 */ VX_COLOR_BROWN = 3, /* R=160, G=96, B=0 */ VX_COLOR_GOLDENROD = 4, /* R=255, G=188, B=0 */ VX_COLOR_MED_BLUE = 5, /* R=0, G=255, B=255 */ VX_COLOR_DARK_MAGENTA = 6, /* R=255, G=0, B=255 */ VX_COLOR_DARK_GREY = 7, /* R=96, G=96, B=96 */ VX_COLOR_DARK_BLUE = 8, /* R=0, G=0, B=255 */ VX_COLOR_VIOLET = 9, /* R=140, G=140, B=235 */ VX_COLOR_LIGHT_GREEN = 10, /* R=160, G=255, B=160 */ VX_COLOR_LIGHT_BLUE = 11, /* R=160, G=255, B=255 */ VX_COLOR_ROSE = 12, /* R=255, G=160, B=160 */ VX_COLOR_LIGHT_MAGENTA = 13, /* R=255, G=160, B=255 */ VX_COLOR_LIGHT_GREY = 14, /* R=160, G=160, B=160 */ VX_COLOR_WHITE = 15, /* R=255, G=255, B=255 */ VX_COLOR_BLACK = 16, /* R=0, G=0, B=0 */ VX_COLOR_YELLOW = 17, /* R=255, G=255, B=0 */ VX_COLOR_MED_GREY = 18, /* R=135, G=160, B=130 */ VX_COLOR_PURPLE = 19, /* R=102, G=0, B=153 */ VX_COLOR_STANDARD_LAST = VX_COLOR_PURPLE, VX_COLOR_INDEX_BEGIN, VX_COLOR_INDEX20 = VX_COLOR_INDEX_BEGIN, /* R=255, G=63, B=0 */ VX_COLOR_INDEX21, /* R=255, G=127, B=127 */ VX_COLOR_INDEX22, /* R=204, G=51, B=0 */ VX_COLOR_INDEX23, /* R=204, G=127, B=102 */ VX_COLOR_INDEX24, /* R=153, G=38, B=0 */ VX_COLOR_INDEX25, /* R=153, G=95, B=76 */ VX_COLOR_INDEX26, /* R=127, G=31, B=0 */ VX_COLOR_INDEX27, /* R=127, G=79, B=63 */ VX_COLOR_INDEX28, /* R=76, G=19, B=0 */ VX_COLOR_INDEX29, /* R=76, G=47, B=38 */ VX_COLOR_INDEX30, /* R=255, G=127, B=0 */ VX_COLOR_INDEX31, /* R=255, G=191, B=127 */ VX_COLOR_INDEX32, /* R=204, G=102, B=0 */ VX_COLOR_INDEX33, /* R=204, G=153, B=102 */ VX_COLOR_INDEX34, /* R=153, G=76, B=0 */ VX_COLOR_INDEX35, /* R=153, G=114, B=76 */ VX_COLOR_INDEX36, /* R=127, G=63, B=0 */ VX_COLOR_INDEX37, /* R=127, G=95, B=63 */ VX_COLOR_INDEX38, /* R=76, G=38, B=0 */ VX_COLOR_INDEX39, /* R=76, G=57, B=38 */ VX_COLOR_INDEX40, /* R=204, G=0, B=0 */ VX_COLOR_INDEX41, /* R=255, G=223, B=127 */ VX_COLOR_INDEX42, /* R=204, G=153, B=0 */ VX_COLOR_INDEX43, /* R=204, G=178, B=102 */ VX_COLOR_INDEX44, /* R=204, G=102, B=102 */ VX_COLOR_INDEX45, /* R=153, G=133, B=76 */ VX_COLOR_INDEX46, /* R=127, G=95, B=0 */ VX_COLOR_INDEX47, /* R=127, G=111, B=63 */ VX_COLOR_INDEX48, /* R=76, G=57, B=0 */ VX_COLOR_INDEX49, /* R=76, G=66, B=38 */ VX_COLOR_INDEX50, /* R=153, G=0, B=0 */ VX_COLOR_INDEX51, /* R=255, G=255, B=127 */ VX_COLOR_INDEX52, /* R=204, G=204, B=0 */ VX_COLOR_INDEX53, /* R=204, G=204, B=102 */ VX_COLOR_INDEX54, /* R=153, G=153, B=0 */ VX_COLOR_INDEX55, /* R=153, G=153, B=76 */ VX_COLOR_INDEX56, /* R=127, G=127, B=0 */ VX_COLOR_INDEX57, /* R=127, G=127, B=63 */ VX_COLOR_INDEX58, /* R=76, G=76, B=0 */ VX_COLOR_INDEX59, /* R=76, G=76, B=38 */ VX_COLOR_INDEX60, /* R=191, G=255, B=0 */ VX_COLOR_INDEX61, /* R=223, G=255, B=127 */ VX_COLOR_INDEX62, /* R=153, G=204, B=0 */ VX_COLOR_INDEX63, /* R=178, G=204, B=102 */ VX_COLOR_INDEX64, /* R=114, G=153, B=0 */ VX_COLOR_INDEX65, /* R=133, G=153, B=76 */ VX_COLOR_INDEX66, /* R=95, G=127, B=0 */ VX_COLOR_INDEX67, /* R=111, G=127, B=63 */ VX_COLOR_INDEX68, /* R=57, G=76, B=0 */ VX_COLOR_INDEX69, /* R=66, G=76, B=38 */ VX_COLOR_INDEX70, /* R=127, G=255, B=0 */ VX_COLOR_INDEX71, /* R=191, G=255, B=127 */ VX_COLOR_INDEX72, /* R=102, G=204, B=0 */ VX_COLOR_INDEX73, /* R=153, G=204, B=102 */ VX_COLOR_INDEX74, /* R=76, G=153, B=0 */ VX_COLOR_INDEX75, /* R=114, G=153, B=76 */ VX_COLOR_INDEX76, /* R=63, G=127, B=0 */ VX_COLOR_INDEX77, /* R=95, G=127, B=63 */ VX_COLOR_INDEX78, /* R=38, G=76, B=0 */ VX_COLOR_INDEX79, /* R=57, G=76, B=38 */ VX_COLOR_INDEX80, /* R=63, G=255, B=0 */ VX_COLOR_INDEX81, /* R=153, G=76, B=76 */ VX_COLOR_INDEX82, /* R=51, G=204, B=0 */ VX_COLOR_INDEX83, /* R=127, G=204, B=102 */ VX_COLOR_INDEX84, /* R=38, G=153, B=0 */ VX_COLOR_INDEX85, /* R=95, G=153, B=76 */ VX_COLOR_INDEX86, /* R=31, G=127, B=0 */ VX_COLOR_INDEX87, /* R=79, G=127, B=63 */ VX_COLOR_INDEX88, /* R=19, G=76, B=0 */ VX_COLOR_INDEX89, /* R=47, G=76, B=28 */ VX_COLOR_INDEX90, /* R=127, G=0, B=0 */ VX_COLOR_INDEX91, /* R=127, G=255, B=127 */ VX_COLOR_INDEX92, /* R=0, G=204, B=0 */ VX_COLOR_INDEX93, /* R=102, G=204, B=102 */ VX_COLOR_INDEX94, /* R=0, G=153, B=0 */ VX_COLOR_INDEX95, /* R=76, G=153, B=76 */ VX_COLOR_INDEX96, /* R=0, G=127, B=0 */ VX_COLOR_INDEX97, /* R=63, G=127, B=63 */ VX_COLOR_INDEX98, /* R=0, G=76, B=0 */ VX_COLOR_INDEX99, /* R=38, G=76, B=38 */ VX_COLOR_INDEX100, /* R=0, G=255, B=63 */ VX_COLOR_INDEX101, /* R=127, G=255, B=159 */ VX_COLOR_INDEX102, /* R=0, G=204, B=51 */ VX_COLOR_INDEX103, /* R=102, G=204, B=127 */ VX_COLOR_INDEX104, /* R=0, G=153, B=38 */ VX_COLOR_INDEX105, /* R=76, G=153, B=95 */ VX_COLOR_INDEX106, /* R=0, G=127, B=31 */ VX_COLOR_INDEX107, /* R=63, G=127, B=79 */ VX_COLOR_INDEX108, /* R=0, G=76, B=19 */ VX_COLOR_INDEX109, /* R=38, G=76, B=47 */ VX_COLOR_INDEX110, /* R=0, G=255, B=127 */ VX_COLOR_INDEX111, /* R=127, G=255, B=191 */ VX_COLOR_INDEX112, /* R=0, G=204, B=102 */ VX_COLOR_INDEX113, /* R=102, G=204, B=153 */ VX_COLOR_INDEX114, /* R=0, G=153, B=76 */ VX_COLOR_INDEX115, /* R=76, G=153, B=114 */ VX_COLOR_INDEX116, /* R=0, G=127, B=63 */ VX_COLOR_INDEX117, /* R=63, G=127, B=95 */ VX_COLOR_INDEX118, /* R=0, G=76, B=38 */ VX_COLOR_INDEX119, /* R=38, G=76, B=57 */ VX_COLOR_INDEX120, /* R=0, G=255, B=191 */ VX_COLOR_INDEX121, /* R=127, G=255, B=223 */ VX_COLOR_INDEX122, /* R=0, G=204, B=153 */ VX_COLOR_INDEX123, /* R=102, G=204, B=178 */ VX_COLOR_INDEX124, /* R=0, G=153, B=114 */ VX_COLOR_INDEX125, /* R=76, G=153, B=133 */ VX_COLOR_INDEX126, /* R=0, G=127, B=95 */ VX_COLOR_INDEX127, /* R=63, G=127, B=111 */ VX_COLOR_INDEX128, /* R=0, G=76, B=57 */ VX_COLOR_INDEX129, /* R=38, G=76, B=66 */ VX_COLOR_INDEX130, /* R=127, G=63, B=63 */ VX_COLOR_INDEX131, /* R=76, G=38, B=38 */ VX_COLOR_INDEX132, /* R=0, G=204, B=204 */ VX_COLOR_INDEX133, /* R=102, G=204, B=204 */ VX_COLOR_INDEX134, /* R=0, G=153, B=153 */ VX_COLOR_INDEX135, /* R=76, G=153, B=153 */ VX_COLOR_INDEX136, /* R=0, G=127, B=127 */ VX_COLOR_INDEX137, /* R=63, G=127, B=127 */ VX_COLOR_INDEX138, /* R=0, G=76, B=76 */ VX_COLOR_INDEX139, /* R=38, G=76, B=76 */ VX_COLOR_INDEX140, /* R=0, G=191, B=255 */ VX_COLOR_INDEX141, /* R=127, G=223, B=255 */ VX_COLOR_INDEX142, /* R=0, G=153, B=204 */ VX_COLOR_INDEX143, /* R=102, G=178, B=204 */ VX_COLOR_INDEX144, /* R=0, G=114, B=153 */ VX_COLOR_INDEX145, /* R=76, G=133, B=153 */ VX_COLOR_INDEX146, /* R=0, G=95, B=127 */ VX_COLOR_INDEX147, /* R=63, G=111, B=127 */ VX_COLOR_INDEX148, /* R=0, G=57, B=76 */ VX_COLOR_INDEX149, /* R=38, G=66, B=76 */ VX_COLOR_INDEX150, /* R=0, G=127, B=255 */ VX_COLOR_INDEX151, /* R=127, G=191, B=255 */ VX_COLOR_INDEX152, /* R=0, G=102, B=204 */ VX_COLOR_INDEX153, /* R=102, G=153, B=204 */ VX_COLOR_INDEX154, /* R=0, G=76, B=153 */ VX_COLOR_INDEX155, /* R=76, G=114, B=153 */ VX_COLOR_INDEX156, /* R=0, G=63, B=127 */ VX_COLOR_INDEX157, /* R=63, G=95, B=127 */ VX_COLOR_INDEX158, /* R=0, G=38, B=76 */ VX_COLOR_INDEX159, /* R=38, G=57, B=76 */ VX_COLOR_INDEX160, /* R=0, G=63, B=255 */ VX_COLOR_INDEX161, /* R=127, G=159, B=255 */ VX_COLOR_INDEX162, /* R=0, G=51, B=204 */ VX_COLOR_INDEX163, /* R=102, G=127, B=204 */ VX_COLOR_INDEX164, /* R=0, G=38, B=153 */ VX_COLOR_INDEX165, /* R=76, G=95, B=153 */ VX_COLOR_INDEX166, /* R=0, G=31, B=127 */ VX_COLOR_INDEX167, /* R=63, G=79, B=127 */ VX_COLOR_INDEX168, /* R=0, G=19, B=76 */ VX_COLOR_INDEX169, /* R=38, G=47, B=76 */ VX_COLOR_INDEX170, /* R=255, G=127, B=159 */ VX_COLOR_INDEX171, /* R=204, G=0, B=51 */ VX_COLOR_INDEX172, /* R=0, G=0, B=204 */ VX_COLOR_INDEX173, /* R=102, G=102, B=204 */ VX_COLOR_INDEX174, /* R=0, G=0, B=153 */ VX_COLOR_INDEX175, /* R=76, G=76, B=153 */ VX_COLOR_INDEX176, /* R=0, G=0, B=127 */ VX_COLOR_INDEX177, /* R=63, G=63, B=127 */ VX_COLOR_INDEX178, /* R=0, G=0, B=76 */ VX_COLOR_INDEX179, /* R=38, G=38, B=76 */ VX_COLOR_INDEX180, /* R=63, G=0, B=255 */ VX_COLOR_INDEX181, /* R=159, G=127, B=255 */ VX_COLOR_INDEX182, /* R=51, G=0, B=204 */ VX_COLOR_INDEX183, /* R=127, G=102, B=204 */ VX_COLOR_INDEX184, /* R=38, G=0, B=153 */ VX_COLOR_INDEX185, /* R=95, G=76, B=153 */ VX_COLOR_INDEX186, /* R=31, G=0, B=127 */ VX_COLOR_INDEX187, /* R=79, G=63, B=127 */ VX_COLOR_INDEX188, /* R=19, G=0, B=76 */ VX_COLOR_INDEX189, /* R=47, G=38, B=76 */ VX_COLOR_INDEX190, /* R=127, G=0, B=255 */ VX_COLOR_INDEX191, /* R=191, G=127, B=255 */ VX_COLOR_INDEX192, /* R=102, G=0, B=204 */ VX_COLOR_INDEX193, /* R=153, G=102, B=204 */ VX_COLOR_INDEX194, /* R=76, G=0, B=153 */ VX_COLOR_INDEX195, /* R=114, G=76, B=153 */ VX_COLOR_INDEX196, /* R=63, G=0, B=127 */ VX_COLOR_INDEX197, /* R=95, G=63, B=127 */ VX_COLOR_INDEX198, /* R=38, G=0, B=76 */ VX_COLOR_INDEX199, /* R=57, G=38, B=76 */ VX_COLOR_INDEX200, /* R=191, G=0, B=255 */ VX_COLOR_INDEX201, /* R=223, G=127, B=255 */ VX_COLOR_INDEX202, /* R=153, G=0, B=204 */ VX_COLOR_INDEX203, /* R=178, G=102, B=204 */ VX_COLOR_INDEX204, /* R=114, G=0, B=153 */ VX_COLOR_INDEX205, /* R=133, G=76, B=153 */ VX_COLOR_INDEX206, /* R=95, G=0, B=127 */ VX_COLOR_INDEX207, /* R=204, G=102, B=127 */ VX_COLOR_INDEX208, /* R=57, G=0, B=76 */ VX_COLOR_INDEX209, /* R=66, G=38, B=76 */ VX_COLOR_INDEX210, /* R=153, G=0, B=38 */ VX_COLOR_INDEX211, /* R=153, G=76, B=95 */ VX_COLOR_INDEX212, /* R=204, G=0, B=204 */ VX_COLOR_INDEX213, /* R=204, G=102, B=204 */ VX_COLOR_INDEX214, /* R=153, G=0, B=153 */ VX_COLOR_INDEX215, /* R=153, G=76, B=153 */ VX_COLOR_INDEX216, /* R=127, G=0, B=127 */ VX_COLOR_INDEX217, /* R=127, G=63, B=127 */ VX_COLOR_INDEX218, /* R=76, G=0, B=76 */ VX_COLOR_INDEX219, /* R=76, G=38, B=76 */ VX_COLOR_INDEX220, /* R=255, G=0, B=191 */ VX_COLOR_INDEX221, /* R=255, G=127, B=223 */ VX_COLOR_INDEX222, /* R=204, G=0, B=153 */ VX_COLOR_INDEX223, /* R=204, G=102, B=178 */ VX_COLOR_INDEX224, /* R=153, G=0, B=114 */ VX_COLOR_INDEX225, /* R=153, G=76, B=133 */ VX_COLOR_INDEX226, /* R=127, G=0, B=95 */ VX_COLOR_INDEX227, /* R=127, G=63, B=111 */ VX_COLOR_INDEX228, /* R=76, G=0, B=57 */ VX_COLOR_INDEX229, /* R=76, G=38, B=66 */ VX_COLOR_INDEX230, /* R=255, G=0, B=127 */ VX_COLOR_INDEX231, /* R=255, G=127, B=191 */ VX_COLOR_INDEX232, /* R=204, G=0, B=102 */ VX_COLOR_INDEX233, /* R=204, G=102, B=153 */ VX_COLOR_INDEX234, /* R=153, G=0, B=76 */ VX_COLOR_INDEX235, /* R=153, G=76, B=114 */ VX_COLOR_INDEX236, /* R=127, G=0, B=63 */ VX_COLOR_INDEX237, /* R=127, G=63, B=95 */ VX_COLOR_INDEX238, /* R=76, G=0, B=38 */ VX_COLOR_INDEX239, /* R=76, G=38, B=57 */ VX_COLOR_INDEX240, /* R=255, G=0, B=63 */ VX_COLOR_INDEX241, /* R=127, G=0, B=31 */ VX_COLOR_INDEX242, /* R=127, G=63, B=79 */ VX_COLOR_INDEX243, /* R=76, G=0, B=19 */ VX_COLOR_INDEX244, /* R=76, G=38, B=47 */ VX_COLOR_INDEX_LAST = VX_COLOR_INDEX244, VX_COLOR_LAST } evxColor; /* command action type */ typedef enum evxCmdAction { VX_CMD_START = 0, /* called before command start */ VX_CMD_FINISHED, /* called after command finished */ }evxCmdAction; typedef struct svcCmdActionParam { int(*pfn)(void* param, const char*); //callback function, the 2nd parameter is the command name void* param; //parameter }svxCmdActionParam; /* RGB color (each component defined over 0 to 255) */ typedef struct svxColor { unsigned char r; /* red color component (0-255) */ unsigned char g; /* green color component (0-255) */ unsigned char b; /* blue color component (0-255) */ } svxColor; /* RGB color (floating point components defined over 0.0 to 1.0) */ typedef struct svxColorf { float r; /* red color component (0.0-1.0) */ float g; /* green color component (0.0-1.0) */ float b; /* blue color component (0.0-1.0) */ } svxColorf; typedef struct { unsigned char color; /* color (0 if bundle undefined, else 1 through (V_COLOR_LAST-1), ColorEnv[]) */ unsigned char type; /* line/marker type ( >= 0) */ unsigned char size; /* line/marker size ( >= 1) */ char mode; /* display mode */ /* -3, permanently blanked */ /* -2, used for assembly alignment */ /* -1, blanked */ /* 0, normal */ /* 1, highlight */ /* 2, lowlight */ /* 3, highlight and change line style */ /* 4, lowlight and change line style */ } svxWireAt; /* Line attributes */ typedef struct svxLineAt { evxColor color; /* line/marker color (VX_COLOR_NULL-VX_COLOR_LAST) */ unsigned char type; /* line/marker type (0-15) */ unsigned char size; /* line/marker size (1-6) */ }svxLineAt; /* display mode */ typedef enum evxDispMode { VX_DISP_WIRE = 1, VX_DISP_SHADE = 2, VX_DISP_HIDD_APPROX = 3, VX_DISP_HIDD_EXACT = 4, VX_DISP_EDGE = 5 } evxDispMode; /* Render mode */ typedef enum evxRenderMode { VX_RENDER_NONE = 0, VX_RENDER_WIRE = 1, VX_RENDER_SHADE = 2, VX_RENDER_HIDD_APPROX = 3, VX_RENDER_ANALYZE = 4, VX_RENDER_TRANSPARENT = 9 } evxRenderMode; /* display (i.e. GUI) item */ typedef enum evxDispItem { VX_DISP_SCREEN = 0, VX_DISP_PREVIEW = 1, VX_DISP_FORMS = 2, VX_DISP_ALL = 3 } evxDispItem; /* display attribute types */ typedef enum evxDispAttrib { VX_DISP_POINT = 0, VX_DISP_LINE = 1, VX_DISP_FACE = 2 } evxDispAttrib; /* visual display item */ typedef enum evxVisualDispItem { VX_VISUAL_DISP_FRAME_TRIAD = 0, /* frame triad display in visual manager */ VX_VISUAL_DISP_COMPASS_TRIAD = 1, /* compass triad display in visual manager */ VX_VISUAL_DISP_TRIAD_TRANS = 2 /* show hidden in visual manager */ } evxVisualDispItem; /* standard 3D view orientations */ typedef enum evxViewStd { VX_VIEW_FRONT = 0, VX_VIEW_BACK = 1, VX_VIEW_TOP = 2, VX_VIEW_BOTTOM = 3, VX_VIEW_RIGHT = 4, VX_VIEW_LEFT = 5, VX_VIEW_ISO = 6, VX_VIEW_AUX = 7, VX_VIEW_PLANE = 8 } evxViewStd; /* cursor display type */ typedef enum evxCursorType { VX_CURSOR_STD = 0, /* standard arrow cursor */ VX_CURSOR_MOUSE = 1, /* mouse shaped cursor */ VX_CURSOR_BUSY = 2, /* cursor used to indicate system is busy */ VX_CURSOR_WRENCH = 3, /* wrench shaped cursor */ VX_CURSOR_PLIERS = 4, /* cursor shaped like pliers */ VX_CURSOR_SCREW_DRIVER = 5, /* screw driver shaped cursor */ VX_CURSOR_HAMMER = 6, /* cursor shaped like a hammer */ VX_CURSOR_TOGGLE = 7, /* cursor with two semi-circular arrows */ VX_CURSOR_HAND = 8, /* cursor shaped like a hand */ VX_CURSOR_WRENCH_PLUS = 9 /* wrench shaped cursor with plus */ } evxCursorType; /* root object preview mode */ typedef enum evxPreviewMode { VX_PREVIEW_OFF = 0, VX_PREVIEW_GEOM = 1, VX_PREVIEW_ATTRIB = 2 } evxPreviewMode; /* point input options */ typedef enum evxPntInpOpt { VX_INP_PNT_GENERAL = 0, VX_INP_PNT_ON_ENTITY = 1, VX_INP_PNT_ON_CURVE = 2, VX_INP_PNT_ON_EDGE = 3, VX_INP_PNT_ON_CURVE_OR_EDGE = 4, VX_INP_PNT_ON_ANY_FACE = 5, VX_INP_PNT_ON_FIELD_1_FACE = 6, VX_INP_PNT_END = 7, VX_INP_PNT_ASSEMBLY = 8, VX_INP_PNT_DIRECTION = 9, VX_INP_PNT_ON_CRV_OR_PROF = 10, VX_INP_PNT_ASSEM_FACE = 11, VX_INP_PNT_ASSEM_EDGE = 12, VX_INP_PNT_ASSEM_CURVE = 13 } evxPntInpOpt; /* entity input options */ typedef enum evxEntInpOpt { VX_INP_UNDEFINED = 0, VX_INP_GENERAL_3D = 1, VX_INP_GENERAL_2D = 2, VX_INP_SHAPE = 3, VX_INP_FACE = 4, VX_INP_SHAPE_OR_FACE = 5, VX_INP_EDGE = 6, VX_INP_CURVE = 7, VX_INP_EDGE_OR_CURVE = 8, VX_INP_CURVE_LIST = 9, VX_INP_PARTING_CURVE = 10, VX_INP_POINT = 11, VX_INP_FEATURE = 12, VX_INP_SKETCH = 13, VX_INP_DATUM_PLANE = 14, VX_INP_REF_PLANE = 15, VX_INP_3D_BLOCK = 16, VX_INP_LIGHT = 17, VX_INP_LAYER = 18, VX_INP_REF_GEOM = 19, VX_INP_WIREFRAME = 20, VX_INP_MOVE = 21, VX_INP_BLANK = 22, VX_INP_ERASE = 23, VX_INP_INQUIRE = 24, VX_INP_3D_GEOM = 25, VX_INP_TEXT = 26, VX_INP_PROF = 27, VX_INP_COMP = 28, /* select the top-level component */ VX_INP_ASM_SHAPE = 29, VX_INP_FACE_ON_SHAPE = 30, VX_INP_SUB_COMP = 31, /* pick sub-component in pick-path, instead of the top-level component */ VX_INP_CSYS = 32 /* pick CSYS */ } evxEntInpOpt; /* response to user prompt */ typedef enum evxResponse { VX_CANCEL = -1, VX_NO = 0, VX_YES = 1, VX_YES_ALL = 2 } evxResponse; /* dialog form type of user prompt */ typedef enum evxDialogType { VX_DIALOG_SAVE_AS = 1 } evxDialogType; /* light source type */ typedef enum evxLightType { V_LIGHT_NULL = 0, /* undefined */ V_LIGHT_AMB = 1, /* ambient light source */ V_LIGHT_DIR = 2, /* directional light source */ V_LIGHT_POS = 3, /* positional light source */ V_LIGHT_SPOT = 4, /* spot light source */ V_LIGHT_EYE = 5 /* light source located at view position */ } evxLightType; /* light source */ typedef struct svxLight { vxName name; /* light source name */ evxLightType type; /* light source type */ svxPoint pos; /* light position in definition space */ svxPoint dir; /* light direction in definition space */ svxPoint target_pnt; /* target point for spot light */ float intensity; /* light intensity (0.0-1.0) */ float angle_1; /* spotlight cutoff angle (0-180 deg) */ float angle_2; /* spotlight constant intensity angle (0-180 deg) */ float exp; /* spotlight exponent (0-128)*/ float c1,c2,c3; /* attenuation coefficients */ svxColor color; /* light color (rgb) */ char off; /* 1-light is OFF, else ON */ char shadow; /* 1-cast shadows, else 0 */ } svxLight; /* face display attributes */ typedef struct svxFaceAt { unsigned char reflectance; /* reflectance */ unsigned char refraction; /* refraction */ unsigned char exp; /* specular reflection exponent (0-128) */ unsigned char trans; /* transparency setting (0-100) */ unsigned char ambient; /* ambient reflection coeff. (0-100) */ unsigned char diffuse; /* diffuse reflection coeff. (0-100) */ unsigned char specular; /* specular reflection coeff. (0-100) */ unsigned char emission; /* emission coeff. (0-100) */ svxColor front_color; /* color of frontside */ svxColor back_color; /* color of backside */ svxColor spec_color; /* specular color */ } svxFaceAt; /* table attributes */ typedef struct svxTableAt { int Row, Col; /* specification of row/column that attributes are applied to; ** Row > -1 and Col > -1 identifies a specific cell in the table; ** Row > -1 and Col = -1 identifies an entire row; ** Row = -1 and Col > -1 identifies an entire column; ** Row = -1 and Col = -1 identifies the entire table. int RowHeight; /* row height; 0 to ignore; -1 for default height */ int ColWidth; /* column width; 0 to ignore; -1 for default height */ int SetBgColor; /* 1 to set background color of table cells specified by ** "Row" and "Col"; 0 to ignore. svxColor BgColor; /* background color if "SetBgColor = 1" */ int SetFgColor; /* 1 to set foreground color of table cells specified by ** "Row" and "Col"; 0 to ignore. svxColor FgColor; /* foreground color if "SetFgColor = 1" */ int SortRows; /* 1 to sort rows on column header; -1 to not sort; 0 to ignore */ int AutoSize; /* 1 to auto-size all rows to the size of the largest item; ** 2 to auto-size all columns to the size of the largest item; ** 3 to auto-size all rows and columns; -1 to disable auto-size; ** 0 to ignore. int AllowResize; /* 1 to allow rows to be resized; 2 to allow columns to be resized; ** 3 to allow both to be resized; -1 to disable resize; 0 to ignore. int Editable; /* 1 to make cells specified by "Row" and "Col" editable; ** -1 to make specified cells not editable; 0 to ignore. } svxTableAt; /* table cell types */ typedef enum evxTableCellType { VX_TABLECELL_TYPE_TEXT = 0, VX_TABLECELL_TYPE_COMBOBOX = 1, VX_TABLECELL_TYPE_CHECKBOX = 2, VX_TABLECELL_TYPE_INDEX_COMBOBOX = 3, VX_TABLECELL_TYPE_INPUT_COMBOBOX = 4, VX_TABLECELL_TYPE_TEXT_BUTTON = 5, VX_TABLECELL_TYPE_DATE = 6, VX_TABLECELL_TYPE_COLOR = 7, VX_TABLECELL_TYPE_NUMBER = 8, } evxTableCellType; /* table widget event types */ typedef enum evxTableEvent { VX_LEFT_CLICK = 2, /* left button click (mouse) */ VX_RIGHT_CLICK = 4, /* right button click (mouse) */ VX_LEFT_DOUBLE_CLICK, /* left button double click (mouse) */ VX_KEY_UP_DOWN, /* key up and down (keyboard) */ VX_HOT_KEY = 9, /* hotkey */ VX_SORT = 15, /* sort event */ VX_DATA_CHANGED, /* data changed event */ VX_CELL_BUTTON_CLICKED, /* button in table cell clicked event */ VX_MOUSE_MOVE = 21, } evxTableEvent; typedef enum evxDateType { VX_DATE_WITH_TIME, VX_DATE_ONLY, } evxDateType; typedef struct svxTableCellData { union svxCellData { struct svxTextData { const char* pImage; //In char* buf; //In/Out int nBufSize; //In const char* btnToolTip; //In int btnWidth; //In int btnHeight; //In unsigned char isCIF; //In: 0-ANSI string, 1-buf is multi-byte string in CIF format } textData; struct svxComboData { const char* pImageList; //In const char* pTextList; //In char* pSelTextBuf; //In/Out int nBufSize; //In int iSel; //In/Out } comboData; struct svxCheckData { const char* psLabel; //In int iCheck; //In/Out } checkBoxData; struct svxDateData { int secsFromEpoch; //In/Out evxDateType dateType; //In } dateData; struct svxColorData { unsigned char type; //In: 0-true color, 1-index color, 2-include FROM PART int clrIndex; //In/Out int r, g, b; //In/Out } colorData; struct svxNumData { int iMin; //In int iMax; //In char* buf; //In/Out int nBufSize; //In }numData; } cellData; int iAttrData; struct svxCompareData { int iType; //In 1-integer, 2-string int iInteger; //In const char* pString; //In int iKeyCol; //In } compareData; int idx; int txtMaxLen; const char * placeHolderText; void* validator; } svxTableCellData; /* keyboard event */ typedef struct svxKeyEvent { unsigned int modifier; /* Synchronous key:CTRL, SHIFT, ALT, or WIN key etc. */ unsigned int keyCode; /* A~Z, F1~F12, 0~9 etc, mapping to Microsoft virtual key directly */ } svxKeyEvent; /* UI event type */ typedef enum evxUiEvt { VX_UIEVT_INVALID = -6, /* invalid */ VX_UIEVT_HELP = -5, /* help */ VX_UIEVT_CANCEL = -3, /* cancel */ VX_UIEVT_RESET = -2, /* reset */ VX_UIEVT_APPLY = -1, /* apply */ VX_UIEVT_OKAY = 0, /* accept */ VX_UIEVT_DEF = 1, /* default */ VX_UIEVT_LBTNCLK, /* left button click (mouse) */ VX_UIEVT_LBTNUP = VX_UIEVT_LBTNCLK, /* left button click up (mouse) */ VX_UIEVT_MBTNCLK, /* middle button click (mouse) */ VX_UIEVT_RBTNCLK, /* right button click (mouse) */ VX_UIEVT_LBTNDCLK, /* left button double click (mouse) */ VX_UIEVT_CHAR, /* key up and down (keyboard) */ VX_UIEVT_FOCUSKILL, /* keyboard kill focus */ VX_UIEVT_SCROLL, /* slider (scroll) */ VX_UIEVT_HOTKEY, /* hotkey */ VX_UIEVT_CMDONOFF, /* command with on/off suffix */ VX_UIEVT_FOCUSSET, /* keyboard set focus */ VX_UIEVT_STRING, /* string */ VX_UIEVT_HOVER, /* Hover for tooltip */ VX_UIEVT_LBTNDOWN, /* left button down event */ VX_UIEVT_SORT, /* update sequence */ VX_UIEVT_DATACHANGE, /* data change */ VX_UIEVT_PREVIEW, /* preview */ VX_UIEVT_SELCHANGED = 19, /* system event log change */ VX_UIEVT_STATECHANGED, /* change state */ VX_UIEVT_MOUSEMOVE, /* mouse move event */ VX_UIEVT_DROP = 22, /* drop event */ VX_UIEVT_IGNORE, /* ignore event */ } evxUiEvt; /* File dialog type */ typedef enum evxFileDialogType { VX_DIALOG_TYPE_OPEN, VX_DIALOG_TYPE_SAVE, VX_DIALOG_TYPE_IMPORT, VX_DIALOG_TYPE_EXPORT } evxFileDialogType; /* File dialog option */ typedef enum evxFileDialogOpt { VX_DIALOG_OPT_NULL = 0, VX_DIALOG_OPT_MULTI_SELECT = 4, VX_DIALOG_OPT_PROMPT_COVER = 32, VX_DIALOG_OPT_SET_LAST_ACTIVE_FILE = 64 } evxFileDialogOpt; /* ListWidget event date */ typedef struct svxListCallBackParam { evxUiEvt evt; /* event type */ int iRow; /* row number */ int key; /* the vale of keyboard */ } svxListCallBackParam; /* table widget callback function parameters */ typedef struct svxTableCallBackParam { evxTableEvent evt; svxKeyEvent key; int iRow; int iCol; svxTableCellData cellData; int* pResult; int iSortSequenceSize; //size of aSortSequence int* aSortSequence; } svxTableCallBackParam; /* texture map option */ typedef enum evxTextureOpt { V_TEXTURE_NULL = 0, V_TEXTURE_BLEND = 1, V_TEXTURE_DECAL = 2, V_TEXTURE_MODULATE = 3, V_TEXTURE_REPLACE = 4 } evxTextureOpt; /* texture map origin point with respect to texture map rectangle */ typedef enum evxTextureLoc { V_TEXTURE_LOWER_LEFT = 0, V_TEXTURE_UPPER_LEFT = 1, V_TEXTURE_UPPER_RIGHT = 2, V_TEXTURE_LOWER_RIGHT = 3, V_TEXTURE_CENTER = 4 } evxTextureLoc; /* texture attribute */ typedef struct svxTextureAt { evxTextureOpt opt; /* texture option (zero if undefined) */ vxPath file; /* texture path/file name (blank if undefined) */ unsigned char dimen; /* texture dimension (1-3) */ unsigned char repeat; /* 1 to repeat texture, else 0 */ float trans; /* texture transparency (0 to 1.0) */ double height; /* texture height (mm) */ double width; /* texture width (mm) */ double angle; /* texture angle (deg) */ svxPoint origin; /* texture origin */ int use_embed; /* as an input, 1 means a pre-existing embedded ** image takes precedence over file, 0 means file ** replaces any pre-existing embedded image; as ** an output, 1 means an embedded image exists ** for file, 0 means there is no embedded image. */ evxTextureLoc location; /* texture location relative to origin */ } svxTextureAt; /* trim to faces */ typedef struct svxTrimToFacesData { int numFace; /*Number of faces to Trim.*/ int *pFace; /*Id list of faces to Trim.*/ int numTrimming; /*Number of trimming entities.*/ int *pTrimming; /*Id list of trimming entities.*/ int FlipSide; /*flag to use "Flip side to keep", 0 default*/ int TrimWith; /*flag to use "Trim with all simultaneously", 0 default*/ int ExtendTrimming; /*flag to use "Extend trimming faces", 0 default*/ int KeepTrimming; /*flag to use "Keep trimming faces", 1 default*/ }svxTrimToFacesData; /* shader attribute */ typedef struct svxShaderAt { vxName name; /* shader name (blank if undefined) */ vxPath file; /* shader path/file name (blank if undefined) */ svxColor color[4]; /* shader colors */ double param[10]; /* shader parameters */ } svxShaderAt; /* layer information */ typedef enum { VX_LAYER_INFOR_NAME = 0x00000001, VX_LAYER_INFOR_DESC = 0x00000002, VX_LAYER_INFOR_ID = 0x00000004, VX_LAYER_INFOR_VISIBLE = 0x00000008, VX_LAYER_INFOR_FREEZE = 0x000000010, VX_LAYER_INFOR_DISABLE = 0x00000020, VX_LAYER_INFOR_COLOR = 0x00000040, VX_LAYER_INFOR_LINETYPE = 0x00000080, VX_LAYER_INFOR_LINEWIDTH = 0x0000100, VX_LAYER_INFOR_NUMOBJ = 0x0000200, VX_LAYER_INFOR_FLTR = 0x0000400, VX_LAYER_INFOR_ALL = 0xFFFFFFFF, }evxInfoLayerFlag; typedef struct svxLayerInfo { int mask; char sName[32]; char sDesc[512]; unsigned char uLayerId; unsigned char uVisible; unsigned char uFrozen; unsigned char uDisable; unsigned char uColor; unsigned char uLineType; unsigned char ulineWidth; char category[512]; /* category, like this CURVES;SHEETS */ int iNumObj; }svxLayerInfo; /* display state settings */ typedef int vxDispState[10]; /* 3D facets defined by triangle strips */ typedef struct svxFacets { int numTriStrip; /* number of triangle strips in TriStrip list */ int *TriStrip; /* list of integer indices that define triangle strips ** This list has the format "num_vertices_in_strip_1, ** index_of_vertex_1,index_of_vertex_2,...,index_of_vertex_N, ** num_vertices_in_strip_2,..." where an index is an offset ** into the list of Vertex/Normal/ST/UV/RGB coordinates, numbered ** from 0. A triangle strip defined by N vertices defines ** N-2 triangles. For example, if a triangle strip is ** defined by 5 vertices whose indices are {0,1,2,3,4}, ** then it contains 3 triangles defined by vertices {0,1,2}, ** {2,1,3} and {2,3,4} (when using data from a triangle strip, ** note that vertex order is implicitly reversed for alternating ** triangles when calculating the implied normal direction ** of each triangle's plane). */ int numVertex; /* number of vertices in Vertex list */ svxPointf *Vertex; /* list of vertex coordinates (x,y,z) */ svxPointf *Normal; /* list of vertex normals (i,j,k unit direction vector); ** Normal is optional and may be NULL */ svxPoint2f *ST; /* list of vertex texture coordinates (s,t from 0.0 to 1.0); ** ST is optional and may be NULL */ svxFaceAt At; /* optional display attributes */ svxTextureAt Tx; /* optional texture attributes */ svxShaderAt Sh; /* optional shader attributes */ svxPoint2f *UV; /* list of UV coordinates corresponding to vertex coordinates; ** UV is optional and may be NULL */ svxColorf *RGB; /* list of vertex colors (r,g,b components from 0.0 to 1.0; ** see cvxColorfToColor() for conversion to svxColor); ** RGB is optional and may be NULL ** (NOTE: The RGB field is a placeholder for a future enhancement ** and is not yet supported. Colors assigned to this field will ** be ignored when a facet block is displayed.) */ } svxFacets; typedef struct { vxName Name; /* view name */ svxMatrix Matrix; /* view matrix (i.e. transform) */ float Extent; /* view extent */ float FrontDist; /* distance from view origin to front clip plane */ float BackDist; /* distance from view origin to back clip plane */ float PRP_Dist; /* distance from view origin to projection reference point (PRP) */ char Display; /* 1-display this view, 0-don't display this view */ char Clip; /* 1-clip to front/back plane, 0-don't clip */ char Project; /* projection method, 0-parallel, 1-perspective */ } svxView; /* Plane Methods */ typedef enum evxPlaneMethods { VX_PLANE_GEOMETRY = 0, /* geometry */ VX_PLANE_THREE_POINTS = 1, /* three points */ VX_PLANE_XY = 2, /* XY Plane */ VX_PLANE_XZ = 3, /* XZ Plane */ VX_PLANE_YZ = 4, /* YZ Plane */ VX_PLANE_VIEW_PLANE = 5, /* view plane */ VX_PLANE_TWO_ENTITIES = 6, /* two entities */ VX_PLANE_DYNAMIC = 7, /* dynamic */ } evxPlaneMethods; /* Plane Orientation Align type */ typedef enum evxPlaneAlign { VX_PLANE_ALIGN_TO_XY = 1, VX_PLANE_ALIGN_TO_XZ = 2, VX_PLANE_ALIGN_TO_YZ = 3, } evxPlaneAlign; /* template command Plane input data */ typedef struct svxPlaneData { evxPlaneMethods method; /* methods */ union evxPlnInpUnion { struct PlnGeomPnt /* geometry */ { svxPoint Pnt; /* picked Point */ svxEntPath Path; /* entity/object pick path */ }geomPnt; struct PlnThreePnts /* three point */ { int idOrgPnt; /* id of the origin parent entity */ svxPoint OrgPnt; /* origin */ int idXPnt; /* id of the XPoint parent entity */ svxPoint XPnt; /* XPoint */ int idYPnt; /* id of the YPoint parent entity */ svxPoint YPnt; /* YPoint */ } threePnts; struct PlaneXYZ /* use XY Plane/ XZ Plane/ YZ Plan */ { double Offset; /* offset */ }xyz; struct viewPlane /* view plane */ { svxPoint OrgPnt; /* origin */ } viewPln; struct PlnTwoEnts /* Two Entities */ { int idEnt1; /* id of the Entity1 parent entity */ svxPoint Ent1Pnt; /* entity 1 point */ int idEnt2; /* id of the Entity2 parent entity */ svxPoint Ent2Pnt; /* entity 2 point */ } twoEnts; struct PlnDynamic /* Dynamic */ { int idPosPnt; /* id of the position parent entity */ svxPoint PosPnt; /* position */ svxVector XAxis; /* X Axis */ svxVector YAxis; /* Y Axis */ svxVector ZAxis; /* Z Axis */ } dynamic; } inpUnion; evxPlaneAlign AlignType; /* plane orientation align type*/ /* the follows can be set according to the requirements(Orientation) */ double dOffset; /* offset value */ int idOrgPnt; /* id of the origin parent entity */ svxPoint OrgPnt; /* origin */ int idXPnt; /* id of the XPoint parent entity */ svxPoint XPnt; /* XPoint */ double XAng; /* angle value X direction */ double YAng; /* angle value Y direction */ double ZAng; /* angle value Z direction */ } svxPlaneData; /* New Plane Methods */ typedef enum evxNewPlaneMethods { VX_NEW_PLANE_THREE_POINTS = 1, /* three points */ VX_NEW_PLANE_VIEW_PLANE = 5, /* view plane */ VX_NEW_PLANE_DYNAMIC = 7, /* dynamic */ VX_NEW_PLANE_GEOMETRY = 11, /* geometry */ VX_NEW_PLANE_OFFSET_PLANE = 12, /* offset plane */ VX_NEW_PLANE_ANGLE_FACE = 13, /* angle to face */ VX_NEW_PLANE_ON_CURVE = 14, /* on curve */ }evxNewPlaneMethods; /* Plane direction type */ typedef enum evxOnCrvDirType { VX_ONCRV_TANGENT, /* tangent */ VX_ONCRV_PERPENDICULAR, /* perpendicular */ VX_ONCRV_PERPENDICULAR_TO_CURVE, /* perpendicular to curve */ VX_ONCRV_TANGENT_TO_CURVE, /* tangent to curve */ } evxOnCrvDirType; /* New template command Plane input data */ typedef struct svxNewPlaneData { evxNewPlaneMethods method; /* methods */ union evxNewPlaneMethodsUnion { struct NewPlaneGeometry /* geometry :VX_NEW_PLANE_GEOMETRY */ { svxPoint pnt; /* Picked Point */ svxEntPath path; /* entity/object pick path */ } geom; struct NewPlaneThreePnt /* three point :VX_NEW_PLANE_THREE_POINTS */ { svxPoint orgPnt; /* origin */ svxPoint xPnt; /* XPoint */ svxPoint yPnt; /* YPoint */ } threePnts; struct NewviewPlane /* view plane :VX_NEW_PLANE_VIEW_PLANE */ { svxPoint orgPnt; /* origin */ } view; struct NewPlaneDynamic /* dynamic :VX_NEW_PLANE_DYNAMIC */ { svxPoint posPnt; /* position */ svxVector xAxis; /* X Axis */ svxVector yAxis; /* Y Axis */ svxVector zAxis; /* Z Axis */ int autoOrient; /* 1 if auto orientation, else 0 */ } dynamic; struct NewPlaneOffset /* offset plane :VX_NEW_PLANE_OFFSET_PLANE */ { svxPoint orgPnt; /* origin on "path" */ svxEntPath path; /* face path */ double offset; /* offset */ } pOffset; struct NewPlaneAngToFc /* angle to face :VX_NEW_PLANE_ANGLE_FACE */ { svxPoint orgPnt; /* origin on "path" */ svxEntPath path; /* face path */ svxPoint axis; /* point on line(or edge) */ svxEntPath linePath; /* line or edge path */ double angle; /* angle */ } angToFc; struct NewPlaneOnCurve /* on curve :VX_NEW_PLANE_ON_CURVE */ { svxPoint orgPnt; /* origin on "path" */ svxEntPath path; /* curve path */ int isPercent; /* 1 if use percent, 2 if use distance */ double num; /* if isPercent = 1, num is Percent; if isPercent = 2, num is distance. */ evxOnCrvDirType dirType; /* direction type */ } onCrv; } inpUnion; // if "methods" = VX_NEW_PLANE_DYNAMIC, the following variables will not be applied. int isFlipDir; /* 1 if flip direction, else 0 */ /* the follows can be set according to the requirements(Orientation) */ double dOffset; /* offset */ svxPoint* orgPnt; /* origin (NULL to ignore) */ svxPoint* xPoint; /* X point (NULL to ignore) */ double xAng; /* angle value X direction */ double yAng; /* angle value Y direction */ double zAng; /* angle value Z direction */ } svxNewPlaneData; /* Axis Methods */ typedef enum evxAxisMethods { VX_AXIS_GEOMETRY = 0, /* geometry */ VX_AXIS_FACE_CENTER = 1, /* face center axis */ VX_AXIS_XX = 2, /* X Axis */ VX_AXIS_YY = 3, /* Y Axis */ VX_AXIS_ZZ = 4, /* Z Axis */ VX_AXIS_TWO_PNT = 5, /* Two Point */ VX_AXIS_PNT_DIR = 6, /* point and Direction */ VX_AXIS_INTERSECT_FACES = 7, /* intersect faces */ } evxAxisMethods; /* template command Axis input data */ typedef struct svxAxisData { double length; /* axis length */ evxAxisMethods method; /* axis methods */ union evxAxisInpUnion { struct AxisPntAndDir /*point and direction */ { int idOrgPnt; /* id of the origin parent entity */ svxPoint OrgPnt; /* origin point */ svxVector Dir; /* direction */ } pntDir; struct AxisGeomPnt /* geometry */ { svxPoint Pnt; /* picked Point */ svxEntPath Path; /* entity/object pick path */ } geomPnt; struct AxisFaceCenter /* face center Axis */ { svxEntPath Face; /* face */ } facCenter; struct AxisIntersectFaces /* intersect faces */ { svxEntPath Face1; /* 1st face */ svxEntPath Face2; /* 2nd face */ } interFaces; struct AxisTwoPnts { int idPnt1; /* id of the point1 parent entity */ svxPoint Pnt1; /* 1st point */ int idPnt2; /* id of the point2 parent entity */ svxPoint Pnt2; /* 2nd point */ } twoPnts; } inpUnion; int FlipDir; /* flip direction */ } svxAxisData; /* CSYS Methods */ typedef enum evxCSYSMethods { VX_CSYS_THREE_POINTS = 1, /* three points */ VX_CSYS_ONLY_MATRIX = 6, /* only input CSYS matrix */ VX_CSYS_DYNAMIC = 7, /* dynamic */ VX_CSYS_THREE_FACES = 8, /* three faces */ VX_CSYS_PNT_AND_TWO_DIR = 9, /* point and two directions */ VX_CSYS_PLANE_PNT_AND_DIR = 10, /* plane point and direction */ VX_CSYS_GEOMETRY = 11, /* geometry */ } evxCSYSMethods; /* template command CSYS input data */ typedef struct svxCSYSData { svxMatrix Frame; /* transformation matrix */ evxCSYSMethods method; /* CSYS methods */ union evxCSYSInpUnion { struct CSYSByGeom /* geometry */ { svxPoint OrgPnt; /* Origin point */ svxEntPath Path; /* entity/object pick path */ } byGeom; struct CSYSThreePnts /* three points */ { int idOrgPnt; /* id of the origin parent entity */ svxPoint OrgPnt; /* origin point */ int idPnt1; /* id of the point1 parent entity */ svxPoint Pnt1; /* point1 */ int idPnt2; /* id of the point2 parent entity */ svxPoint Pnt2; /* Point2 */ } threePnts; struct CSYSThreeFaces /* three faces */ { svxEntPath Face1; /* face1 */ svxEntPath Face2; /* face2 */ svxEntPath Face3; /* face3 */ } threeFaces; struct CSYSPntAnd2Dir /* point and two directions */ { int idOrgPnt; /* id of the origin parent entity */ svxPoint OrgPnt; /* origin point */ svxVector Dir1; /* direction1 */ svxVector Dir2; /* direction2 */ } pntAnd2Dir; struct CSYSPlanAndDir { svxEntPath Face; /* face */ int idPnt; /* id of the point parent entity */ svxPoint Pnt; /* point */ svxVector Dir; /* direction */ } PlanAndDir; struct CSYSDynamic /* dynamic */ { int idPosPnt; /* id of the position parent entity */ svxPoint PosPnt; /* position point*/ svxVector Xaxis; /* A axis */ svxVector Yaxis; /* Y axis */ svxVector Zaxis; /* Z axis */ } dynamic; } inpUnion; /* the follows can be set according to the requirements(Orientation) */ double dOffset; /* offset value */ int idOrgPnt; /* id of the origin parent entity */ svxPoint OrgPnt; /* origin */ int idXPnt; /* id of the XPoint parent entity */ svxPoint XPnt; /* XPoint */ double XAng; /* angle value X direction */ double YAng; /* angle value Y direction */ double ZAng; /* angle value Z direction */ } svxCSYSData; /* type of sketch geometry critical point */ typedef enum evxGeomCritPnt { VX_NO_POINT, /* set the entity not the critical point of entity */ VX_START_POINT, /* start point of curve or line (if the input is face, get point of (u.min, v.min)) */ VX_END_POINT, /* end point of curve or line (if the input is face, get point of (u.max, v.max))*/ VX_CENTER_POINT, /* center point, used only for arc or circle (if the input is face, get point of ((u.min+u.max)/2, (v.min+v.max)/2))*/ VX_SPLINE_DEFINING_POINT /* control point, used only for splines */ } evxGeomCritPnt; /* point on entity definition, also can use to set a dynamic point */ typedef struct svxPntOnEnt { int idEnt; /* entity id that the point on (-1/0 to ignore) */ int idParent; /* entity parent id (-1/0 to ignore, profile/view id if idEnt is 2d entity) */ int useCritPnt; /* 1- use critTyp, else 0 (idEnt must be valid if useCritPnt is 1)*/ evxGeomCritPnt critTyp; /* type of critical point */ int idControlPnt; /* id of the control point of the spline (starting from 0), only used when critPnt is VX_SPLINE_DEFINING_POINT */ svxPoint pnt; /* input point(useCritPnt = 1 to ignore)*/ svxVector dir; /* direction of the input point */ int useDir; /* 1-use as a direction, else 0 */ }svxPntOnEnt; /* template command Trimmed Plane data */ typedef struct svxTrimPlnData { int cntCrv; /* count of input curve(required)*/ int *pCrvList; /* input curve id list(required)*/ int idProf; /* id of profile if pCrvList are 2d curves, else -1/0 as the initialized value */ char sew; /* flag of sew or not(1-sew, else 0)*/ int cntBool; /* count of boolean shapes(0 to ignore)*/ int *pBooolList; /* list boolean shapes(null to ignore)*/ int idPlane; /* id of reference plane(-1/0 to ignore)*/ }svxTrimPlnData; typedef struct svxSewData { double tol; /* tolerance value, default(0.001) */ char multEdg; /* enable multiple edge matching or not*/ char forceClose; /* force object to sew into solid */ }svxSewData; /* Move and Copy Methods */ typedef enum evxMoveType { VX_PNT_TO_PNT = 1, /* copy/move entities form point to point */ VX_ALONG_DIR = 2, /* copy/move entities along a direction */ VX_ASLIGN_FRAMES = 3, /* copy/move entities by aligning frames */ VX_SWEEP_ALONG_PATH = 4, /* copy/move entities along path */ VX_AROUND_DIR = 5, /* rotate entities around a direction */ VX_DYNAMIC_MOVE = 6, /* dynamic copy/move entities */ } evxMoveType; /* sweep Xaxis option */ typedef enum evxSweepXOpt { VX_SWP_X_MIN_TWIST = 0, /* minimum twist*/ VX_SWP_X_FIXED_DIR = 1, /* fixed direction */ VX_SWP_X_XAXIS_CRV = 2, /* X-axis curve */ VX_SWP_X_FACE_NORMAL = 3, /* face normal */ } evxSweepXOpt; /* sweep Zaxis option */ typedef enum evxSweepZOpt { VX_SWP_Z_TANG_TO_PATH = 0, /* tangent to path */ VX_SWP_Z_TANG_TO_CRV = 1, /* tangent to curve */ VX_SWP_Z_FIXED_DIR = 2, /* fixed direction */ } evxSweepZOpt; typedef struct svxDymMove /* dynamic copy/move entities */ { int MoveHand; /* move handle only(default 0)*/ svxPoint Pos; /* Position */ svxVector XAxis; /* X Axis */ svxVector YAxis; /* Y Axis */ svxVector ZAxis; /* Z Axis */ }svxDymMove; typedef struct svxMovePntToPnt /* copy/move entities form point to point */ { svxPntOnEnt FromPnt; /* from point */ svxPntOnEnt ToPnt; /* to point */ svxPntOnEnt FromVector; /* from vector */ svxPntOnEnt ToVector; /* to vector */ } svxMovePntToPnt; typedef struct svxAlongDir /* copy/move entities along a direction */ { svxPntOnEnt Dir; /* direction */ double Dist; /* distance value */ int UnuseAng; /* angle enable (default 0) */ double Ang; /* angle value */ } svxAlongDir; typedef struct svxAroundDir /* rotate entities around a direction */ { svxPntOnEnt Dir; /* direction */ double Ang; /* angle value */ } svxAroundDir; typedef struct svxAlignFrame /* copy/move entities by aligning frames */ { int idFrom; /* from frame*/ int idTo; /* to frames*/ } svxAlignFrame; typedef struct svxAlongPath /* copy/move entities along path */ { svxPntOnEnt Path; /* path */ int cntPnts; /* count of points */ svxPntOnEnt *ToPnts; /* to points */ int FrameOpt; /* frame option(0-default frame, 1-at path, 2-select) */ int IdFrame; /* frame is selected( if FrameOpt = 2) */ evxSweepZOpt ZAxisOpt; /* Z Axis option*/ svxPntOnEnt ZAxisCurve; /* entity data of z-axis (ignore when zOpt = VX_SWP_Z_TANG_TO_PATH) VX_SWP_Z_TANG_TO_CRV- curve(set parent if the curve from the sketch) VX_SWP_Z_FIXED_DIR - use direction (just direction or direction from an curve/edge) */ evxSweepXOpt XAxisOpt; /* X Axis option */ svxPntOnEnt XAxisCurve; /* entity data of x-axis (ignore when XAxisOpt = VX_SWP_X_MIN_TWIST) VX_SWP_X_FIXED_DIR- use direction (just direction or direction from an curve/edge) */ } svxAlongPath; typedef struct svxCopyData { evxMoveType method; /* copy methods */ int cntEnt; /* entity count */ int *pEnts; /* entities ID */ union evxMethodUnion { svxDymMove DymCopy; /* dynamic copy */ svxMovePntToPnt PntToPnt; /* point to point */ svxAlongDir AlongDir; /* along direction data*/ svxAroundDir AroundDir; /* around direction data*/ svxAlignFrame AlignFrame; /* copy entities by aligning frames */ svxAlongPath Sweep; /* sweep along path */ } MethodUnion; int CpyNum; /* copy number (just method = VX_ALONG_DIR or VX_AROUND_DIR, and must initialize to 1)*/ int isNonAssoCopy; /* 0-associative copy, 1-non associative copy(default 0)*/ vxName layName; /* layer to copy if isNonAssoCopy is 1 */ } svxCopyData; /* template command Move data */ typedef struct svxMoveData { evxMoveType method; /* move methods */ int cntEnt; /* entity count */ int *pEnts; /* entities ID */ union evxMethodsUnion { svxDymMove DymMove; /* dynamic move */ svxMovePntToPnt PntToPnt; /* point to point */ svxAlongDir AlongDir; /* along direction data*/ svxAroundDir AroundDir; /* around direction data*/ svxAlignFrame AlignFrame; /* copy entities by aligning frames */ svxAlongPath Sweep; /* sweep along path */ } MethodUnion; } svxMoveData; /* template command Shell input data */ typedef struct svxShellData { int idShape; /* shape S id */ double dThick; /* thick T */ /* Select which faces if any should be deleted from offset consideration.These faces will reside in the new feature but will not be offset. */ int cntOpenFace; /* open faces' count */ int *pIdOpenFace; /* open faces' id */ /* set the offset value to specified face */ int cntList; /* the count of the sub_data will be filled in List */ int *pIdFace; /* face F ids */ double *pOffSet; /* offset T array ,it must be correspond to pIdFaces one by one */ /* Settings */ int sideFaces; /* create side faces 0 to no 1 to yes (Generally 1) */ int KeepPrimFace; /* Keep primitive faces 0 to no (Generally 0) 1 to yes */ int Intersect; /* intersections 1 to do not remove. Ignore self intersecting faces. 2 to remove fast. Limited to removing self intersections on or near faces that become completely inverted, such as a fillet that is offset more than its radius.(Generally 2) 3 to remove all. Remove self intersections and inverted regions (including inverted inner loop cases) as well as can be done. Faces that intersect other faces in the shape will be split.*/ } svxShellData; typedef enum evxDraftMethods { VX_EDGE_DRAFT = 1, /* Edge Draft */ VX_FACE_DRAFT = 2, /* Face Draft */ VX_PRATING_EDGE_DRAFT = 3 /* Parting Edge Draft */ } evxDraftMethods; typedef enum evxDraftType { /* Edge Draft */ VX_SYM_EDGE_DRAFT = 1, /* Symmetric draft */ VX_ASYM_EDGE_DRAFT = 2, /* Asymmetric draft */ /* Face Draft */ VX_STATION_SYM_FACE_DRAFT = 3, /* Stationary symmetric */ VX_STATION_ASYM_FACE_DRAFT = 4, /* Stationary Asymmetric */ VX_STATION_PARTING_FACE_DRAFT = 5, /* Stationary and parting */ } evxDraftType; typedef struct svxDraftData { evxDraftMethods Methods; /* Draft Methods */ evxDraftType Type; /* Draft Type in options can be picked */ int iCntDataList; /* Picked Entity count will be filled in list */ int *idEnt; /* List of picked Entity id */ double AngleA1; /* Angle A1, if only one angle it is also Angle A */ double AngleA2; /* Angle A2 */ union svxDraftStationaryEnt /* Stationary Entity such as Faces and Edges */ { /* Stationary faces in STATION_SYM_FACE_DRAFT(evxDraftType) and STATION_ASYM_FACE_DRAFT(evxDraftType) */ struct StationaryFaces { int cnt; /* Stationary Faces count */ int *idEnt; /* List of stationary Faces id */ } stationaryFaces; /* Stationary faces and Parting faces in STATION_PARTING_FACE_DRAFT(evxDraftType) */ struct StationAndPrtingFace { int *StationaryFaces2; /* List of stationary faces in STATION_PARTING_FACE_DRAFT(evxDraftType) */ int cntStaFaces2; /* Stationary faces cnt */ int *PartingFaces; /* List of parting faces in STATION_PARTING_FACE_DRAFT(evxDraftType) */ int cntPrtFaces; /* Parting faces cnt */ } staAndPrtFace; /* Stationary plane in PRATING_EDGE_DRAFT(evxDraftMethods) */ struct StationaryPlane { int cnt; /* Stationary Plane count */ int *idEnt; /* List of stationary Plane id */ } stationaryPlane; } StationEnt; svxVector DirP; /* Direction P */ int DraftSideS; /* Draft Side S (0 = split, 1 = top, 2 = bottom, 3 = neutral, 0 for default) */ int Extention; /* Extention type (0 = linear, 1 = circular, 2 = Reflect, 3 = curvature diminishing, 0 for default) */ int iIsrecomputeflt; /* Whether to recompute fillets (0 = no, 1 = yes, 0 for default) */ int iIntersections; /* Whether to remove intersections (0 = do not remove, 1 = remove all, 0 for default) */ int iIsRemivtrgns; /* Whether to remove inverted regions (0 = no, 1 = yes, 1 for default) */ } svxDraftData; typedef struct svxExtendData { int idFace; /* id face (if idFace is 0/-1, it will get from the first edge ) */ int cntEdge; /* count of the extend edges(0-extend all the edges of the face and the idFace must be valid */ int*pEdgList; /* the edges that belonging to the face(NUll to use idFace get all the edges) */ double*pDistList; /* the extend distance list, every edge can be extended with a different value (NULL to use fDist) */ double fDist; /* the extend distance if fDistList is NULL */ int iMerge; /* merge extended face(1-merge, 0-no, initialize 1 as the default) */ int iKeepFace; /* keep the original face(1-keep, 0-no, initialize 0 as the default) */ int iExtension; /* extend method(0-liner, 1-reflect, 2-circular, 4-curvature diminishing, 0-default value) */ }svxExtendData;
ui tree widget management
/* ui alignment types */ typedef enum { VX_ALIGN_CENTER = 0, VX_ALIGN_LEFT = 1, VX_ALIGN_RIGHT = 2, } evxAlignFlag; /* tree widget item types */ typedef enum { VX_ITEM = 0, VX_FINISHMARK = 1 } evxTreeItemType; typedef enum evxTreeItemFlag { VX_TREE_NO_ITEM_FLAGS = 0x0000, /* The item does not have any properties set */ VX_TREE_IS_SELECTABLE = 0x0001, /* The item can be selected */ VX_TREE_IS_EDITABLE = 0x0002, /* The item can be edited */ VX_TREE_IS_DRAG_ENABLE = 0x0004, /* The item be dragged */ VX_TREE_IS_DROP_ENABLE = 0x0008, /* The item be used as a drop target */ VX_TREE_IS_CHECKABLE = 0x0010, /* The item can be checked or unchecked by the user */ VX_TREE_IS_ENABLE = 0x0020, /* The user can interact with the item */ VX_TREE_IS_TRISTATE = 0x0040, /* The item's state depends on the state of its children */ VX_TREE_ITEM_NEVER_HAS_CHILDREN = 0x0080, /* The item never has child items */ VX_TREE_ITEM_IS_USER_TRISTATE = 0x0100, /* The user can cycle through three separate states */ VX_TREE_ITEM_IS_GRAY = 0x00010000, /* The item shown in gray */ } evxTreeItemFlag; typedef enum evxTreeCheckState { VX_TREE_ITEM_UNCHECKED, /* The item not checked */ VX_TREE_ITEM_BLACK_CHECKED = 4 /* The item checked */ } evxTreeCheckState; /* tree widget item options */ #define VX_INVALID_ITEM ((vxTreeItemId)-1) #define VX_INVISIBLE_ROOT_ITEM ((vxTreeItemId)0) #define VX_INSERT_LAST ((vxTreeItemId)-1) //Insert at last position #define VX_INSERT_FIRST ((vxTreeItemId)0) //Insert node at first position /* tree widget event types */ typedef enum { VX_EMPTY = 0, VX_LEFT_DOWN, /* left mouse click down */ VX_LEFT_UP, /* left mouse click up */ VX_MIDDLE_DOWN, /* middle mouse click up */ VX_MIDDLE_UP, /* middle mouse click up */ VX_RIGHT_DOWN, /* right mouse click down */ VX_RIGHT_UP, /* right mouse click up */ VX_BOX_SELECTION_DONE, /* box selection over */ VX_LABEL_CHANGED, /* label name check */ VX_EDITOR_CLOSED, /* item editor closed*/ VX_DBL_LEFT, /* left mouse double click */ VX_DROP, /* drop after dragging */ VX_KEY_PRESS, /* key */ VX_HOVER, /* normal hover */ VX_HOVER_TIMEOUT, /* item hovered timeout */ VX_ENTER, VX_LEAVE } evxTreeEvent; /* tree widget element codes */ typedef enum { VXTHP_BUTTON = 0x0001, /* hit on expand button associated with a node */ VXTHP_ICON = 0x0002, /* Hit on node's icon */ VXTHP_LABEL = 0x0004, /* Hit on node's label name */ VXTHP_ITEM = 0x0006, /* V_ZDM_ICON|V_ZDM_LABEL */ VXTHP_SPACE = 0x0008, /* Hit on design tree space */ VXTHP_CHECKBOX = 0x0010, /* Hit on the checkbox */ VXTHP_APD_ICON1 = 0x0020, /* Hit on node's second icon */ VXTHP_APD_ICON2 = 0x0040, /* Hit on node's third icon */ VXTHP_HEADER = 0x0080, /* Hit on the header of the tree */ } evxTreeHitPos; /* tree widget callback function parameters */ typedef struct { evxTreeEvent mode; const char* shell; int field; vxTreeItemId item; //current hover id int column; // the column where the current item is located union uvxU { struct svxDRAG /* drag multiple nodes */ { vxTreeItemId pressedItem; vxTreeItemId *selection; int num; vxTreeItemId droppedItem; int dropPos; // 0:item,1:above,2:below,3:viewport, } svxdrag; struct svxHIT { evxTreeHitPos pos; /* Clicking position (ZeTreeHitPos)*/ } svxhit; struct svxSELECTION /* multiple nodes selection */ { vxTreeItemId *idList; int num; } svxselection; struct svxLABELEDIT { char* text; //pointer to node's label string } svxlabel; } uvxu; svxKeyEvent key; /* key*/ int state; /* 1:state is on, 0:state is off or V_ZDM_EXPAND/V_ZDM_COLLAPSE int itemIsDisabled; /* 1:node is disabled, 0:node is enabled */ /* if success/ok/enable next procedure, assign it to 0, else to 1 */ } svxTreeCbParam;
database entity data
/* entity unique identifier */ typedef struct svxUid { int Time; /* base time */ int Rand; /* random number */ int Count; /* entity count */ } svxUid; /* entity types */ typedef enum evxEntType { VX_ENT_BREP = -4, /* any brep entity (i.e. shape,face,loop,edge,vertex) */ VX_ENT_OP = -3, /* any history operation */ VX_ENT_POINT = -2, /* any point entity (2D or 3D) */ VX_ENT_WIRE = -1, /* any wireframe entity (line, arc, curve) */ VX_ENT_ALL = 0, /* any entity type */ VX_ENT_SHAPE = 42, /* b-rep shape (i.e. faceset) */ VX_ENT_FACE = 43, /* b-rep face */ VX_ENT_EDGE = 46, /* b-rep edge */ VX_ENT_FTR = 48, /* feature operation */ VX_ENT_NRB_CRV = 54, /* NURBS curve */ VX_ENT_LINE3 = 56, /* 3D line */ VX_ENT_LINE2 = 58, /* 2D line */ VX_ENT_CIRCLE3 = 60, /* 3D circle */ VX_ENT_CIRCLE2 = 61, /* 2D circle */ VX_ENT_ARC3 = 62, /* 3D arc */ VX_ENT_ARC2 = 63, /* 2D arc */ VX_ENT_POINT3 = 64, /* 3D point */ VX_ENT_POINT2 = 65, /* 2D point */ VX_ENT_LAYER = 67, /* layer */ VX_ENT_SKETCH = 70, /* sketch */ VX_ENT_REF_GEOM = 72, /* reference geometry */ VX_ENT_TEXT = 76, /* text */ VX_ENT_DIMEN = 77, /* dimension */ VX_ENT_ANNO = 83, /* annotation text */ VX_ENT_BLOCK = 86, /* block */ VX_ENT_DWG_VIEW = 87, /* drawing view */ VX_ENT_COMP = 88, /* assembly component */ VX_ENT_PART = 89, /* part */ VX_ENT_SHEET = 90, /* drawing sheet */ VX_ENT_PACKET = 91, /* drawing packet */ VX_ENT_DATUM = 95, /* datum plane */ VX_ENT_CRV_LIST = 102, /* curve list */ VX_ENT_PART_LINE = 106, /* parting line */ VX_ENT_HATCH = 111, /* cross-hatch */ VX_ENT_LIGHT = 118, /* light source */ VX_ENT_INT_CRV = 119, /* interpolated curve */ VX_ENT_VAR = 120, /* variable */ VX_ENT_EQN_SET = 121, /* equation set */ VX_ENT_SYMBOL = 123, /* 2D symbol */ VX_ENT_TRACE = 133, /* sketch trace */ VX_ENT_TABLE = 144, /* table object */ VX_ENT_VBREAKLINE = 182,/* Break line */ VX_ENT_RDTXT = 185, /* Ready sketch text */ VX_ENT_DRAWING=169, /* Drawing under the sheet*/ VX_ENT_PMIENT = 190, /* PMI entity */ VX_ENT_BLOCK2D = 197, /* 2D sketch block */ VX_ENT_BLKREF = 198, /* block reference (the instance of 2d sketch block) */ VX_ENT_AXIS = 311, /* Datum axis */ VX_ENT_CSYS = 312, /* Datum frame */ VX_ENT_AXIS_2D = 313, /* 2D datum axis*/ } evxEntType; /* entity search types */ typedef enum evxEntFind { VX_FIND_POINT = 1, /* point */ VX_FIND_CURVE = 2, /* curve */ VX_FIND_EDGE = 3, /* edge */ VX_FIND_WIRE = 4, /* point, edge or curve */ VX_FIND_FACE = 5, /* face */ VX_FIND_SKETCH = 6, /* sketch */ VX_FIND_CRV_LIST = 7, /* 3D curve list */ VX_FIND_SKETCH_OR_CRV_LIST = 8, /* sketch or curve list */ VX_FIND_PROFILE = 9, /* curve, edge, sketch or curvelist */ VX_FIND_EDGE_OR_CRV = 10, /* edge or curve */ VX_FIND_3D_BLOCK = 14, /* 3D point or STL block */ VX_FIND_DIM = 15 /* dimension */ } evxEntFind; /* entity search data */ typedef struct svxEntFind { /* input - basic parameters */ evxEntFind Option; /* type of entity to search for */ svxPoint RefPnt; /* find entity closest to this reference point */ /* input - filter parameters */ evxColor Color; /* entity color (0 to ignore, V_COLOR_RGB to use RGB parameters) */ svxColor Rgb; /* RGB color if "Color = V_COLOR_RGB" */ int CheckLayer; /* 1 to check layer number (0 to ignore) */ int Layer; /* entity layer number (0 to 255) */ int idFeature; /* parent feature id (0 to ignore) */ int isPlane; /* 1 if face entity must be "planer" (0 to ignore) */ int isHole; /* 1 if face/edge must belong to a hole (0 to ignore) */ int isLine; /* 1 if curve or edge must be linear (0 to ignore) */ /* output */ int idEntity; /* id of entity found by search (0 if not found) */ svxPoint Pnt; /* projection of reference point onto entity */ double Dist; /* distance from reference point to entity */ } svxEntFind; /* face search types */ typedef enum evxFaceFindType { VX_FIND_BOSS, /* find the faces that have the geometric characteristics of a boss */ VX_FIND_POCKET, /* find the faces that have the geometric characteristics of a pocket */ VX_FIND_HOLE, /* find the faces that have the geometric characteristics of a hole */ VX_FIND_FILLET, /* find the faces that have the geometric characteristics of a network of fillet chains */ VX_FIND_CUSTOM, /* find the faces based on the stop conditions set (evxFindRule) */ VX_FIND_FINDER, /* base on seed face, find the faces that conforms to the set rules (evxFindRule) */ } evxFaceFindType; /* face search rules */ typedef enum evxFindRule { /* stop condition, only for VX_FIND_CUSTOM (evxFaceFindType) type */ VX_STOP_FACE_FILLET = 0x00000001, /* stop at fillet faces (fillets are added) */ VX_STOP_EDGE_INNER_LOOP = 0x00000002, /* stop at edges on inner loops on either face */ VX_STOP_CONVEX_FLLT = 0x00000004, /* stop at convex fillet faces (fillets are added) */ VX_STOP_CONCAVE_FLLT = 0x00000008, /* stop at concave fillet faces (fillets are added) */ VX_STOP_CONVEX_EDGE = 0x00000010, /* stop at convex edges */ VX_STOP_CONCAVE_EDGE = 0x00000020, /* stop at concave edges */ VX_STOP_ADJACENCY_LEVEL = 0x00000040, /* stop when face region grows through a set number of cycles, a face region grows in cycles, where the faces immediately adjacent to the seed are added in the first cycle, the faces immediately adjacent to those faces are added in the second cycle, and so on */ VX_STOP_BOUNDARY_FACE = 0x00000080, /* stop at boundary faces */ /* find rules, only for VX_FIND_FINDER (evxFaceFindType) type */ VX_FIND_COAXIAL = 0x00000001, /* find coaxial faces, seed face support cylinder,conical,sphere,torus */ VX_FIND_TANGENT = 0x00000002, /* find faces which is tangent to the seed */ VX_FIND_COPLANAR = 0x00000004, /* find faces which are in the same plane with the seed */ VX_FIND_COPL_AXES = 0x00000008, /* find faces whose axes are in the same plane with the seed, seed face support cylinder,conical */ VX_FIND_EQU_RAD = 0x00000010, /* find faces whose radius is equal to the seed, seed face support cylinder and sphere */ VX_FIND_SYMMETRIC = 0x00000020, /* find symmetric faces, seed face support cylinder,conical */ VX_FIND_OFFSET = 0x00000040, /* find face which has overlap regions with the seed and face normal is opposite, for a seed, only one offset face exists in a shape */ } evxFindRule; /* face search data */ typedef struct svxFaceFind { int numSeeds; /* number of seed faces */ int *idSeeds; /* list of seed faces */ evxFaceFindType Option; /* type of face to search for */ int Rule; /* face search rules(evxFindRule),like this:VX_STOP_FACE_FILLET | VX_STOP_FACE_FILLET, used only for VX_FIND_CUSTOM & VX_FIND_FINDER(evxFaceFindType) type */ int numEdges; /* number of stop edges, used only for VX_FIND_CUSTOM(evxFaceFindType) type */ int *idEdges; /* list of stop edges, used only for VX_FIND_CUSTOM(evxFaceFindType) type */ int AdjCnt; /* adjacency count(>0), used only when Rule contain VX_STOP_ADJACENCY_LEVEL */ int numFaces; /* number of stop faces, used only when Rule contain VX_STOP_BOUNDARY_FACE */ int *idFaces; /* list of stop faces, used only when Rule contain VX_STOP_BOUNDARY_FACE */ } svxFaceFind; /* type of loop in which the edge is located */ typedef enum evxEdgeLoopType { VX_EDGE_LOOP_INNER = 0, /* inner loop edges */ VX_EDGE_LOOP_OUTER = 1, /* outer loop edges */ VX_EDGE_LOOP_ALL = 2, /* all edges */ VX_EDGE_LOOP_SHARED = 3, /* shared edges */ VX_EDGE_LOOP_BOUNDARY = 4 /* boundary edges */ } evxEdgeLoopType; /* root object type */ typedef enum evxRootType { VX_ROOT_NULL = 0, VX_ROOT_PART = 89, VX_ROOT_PART_NEW = -VX_ROOT_PART, VX_ROOT_SHEET = 90, VX_ROOT_DRAWING = 91, VX_ROOT_SKETCH = 70, VX_ROOT_EQUATION_SET = 121, VX_ROOT_CAM_PLAN = 200 } evxRootType; /* file type */ typedef enum evxFileType { VX_FILE_PART = 1, /* Z3PRT file */ VX_FILE_ASSEMBLY, /* Z3ASM file */ VX_FILE_SHEET, /* Z3DRW file */ VX_FILE_SKETCH, /* Z3SKH file */ VX_FILE_CAMPLAN, /* Z3CAM file */ } evxFileType; /* file sub-type */ typedef enum evxFileSubtype { VX_SUBTYPE_NONE = 0, /* no subtype */ VX_NORMAL_PART, /* subtype normal part for Z3PRT file */ VX_ECAD_BOARD_PART, /* subtype ECAD part for Z3PRT file */ VX_NORMAL_ASSEMBLY, /* subtype normal assembly for Z3ASM file */ VX_ECAD_ASSEMBLY, /* subtype ECAD assembly for Z3ASM file */ VX_ROUTING_ASSEMBLY, /* subtype routing assembly for Z3ASM file */ VX_SMD_PART, /* subtype sheet metal part for Z3PRT file */ } evxFileSubtype; /* dimension type */ typedef enum evxDimType { VX_DIM_LINEAR = 1, /* Linear dimension */ VX_DIM_BASELINE = 2, /* Baseline dimension */ VX_DIM_CONTINUOUS = 3, /* Continuous dimension */ VX_DIM_ORDINATE = 4, /* Ordinate dimension */ VX_DIM_LINEAR_OFFSET = 5, /* Linear Offset dimension */ VX_DIM_LINEAR_CHAMFER = 6, /* Linear Chamfer dimension */ VX_DIM_ANGULAR = 7, /* Angular dimension */ VX_DIM_RADIAL_DIAMETRIC = 8, /* Radial/Diametric dimension */ VX_DIM_ARC_LENGTH = 9, /* Arc Length dimension */ VX_DIM_SYMMETRY, /* Symmetry dimension*/ VX_DIM_HLCALL, /* hole call out */ VX_DIM_LABEL, /* leader label */ VX_DIM_BALLOON, /* balloon */ VX_DIM_DATUMF, /* datum feature */ VX_DIM_DATUMT, /* datum target */ VX_DIM_FCS, /* feature control symbol */ VX_DIM_CLCM, /* centerline/center mark */ VX_DIM_INTERSYM, /* intersection symbol */ VX_DIM_LAST } evxDimType; /* dimension state */ typedef enum evxDimState { VX_DM_REVISION = -4, /* revision dimension*/ VX_DM_NOSCALE = -3, /* not scale dimension */ VX_DM_MODIFIED = -2, /* modified dimension */ VX_DM_DANGLING = -1, /* dangling dimension */ VX_DM_NORMAL = 0, /* default, normal state */ VX_DM_IN_OBJ = 1, /* the dimension is in other object, only need text display data */ } evxDimState; /* symbol object type */ typedef enum evxSymbolType { VX_SYM_ALL = -1, /* any symbol */ VX_SYM_USER = 0, /* user defined symbol */ VX_SYM_SURF = 1, /* surface finish */ VX_SYM_WELD = 2, /* weld */ VX_SYM_IMAGE = 3, /* image */ VX_SYM_ORIGIN = 4, /* origin symbol */ VX_SYM_BEAD = 5, /* caterpillar */ VX_SYM_ENDTRT = 6, /* end treatment */ VX_SYM_OPEN_LINK = 7, /* OLE object */ VX_SYM_HOLE_MARK = 8, /* hole mark */ } evxSymbolType; typedef enum evxViewType { VX_VIEW_ALL = 0, /* any view type */ VX_VIEW_BASE = 1, /* base view */ VX_VIEW_PROJ = 2, /* project view */ VX_VIEW_SECT = 3, /* section view */ VX_VIEW_DET = 4, /* detail view */ VX_VIEW_DEFN = 5 /* definition view */ } evxViewType; /* drawing view projection angle */ typedef enum evxViewProjAngle { VX_VIEW_PROJ_ANG_ALL = 0, /* any view type */ VX_VIEW_3RD_UP = 1, /* view projected 3rd angle from above */ VX_VIEW_3RD_DN = 2, /* view projected 3rd angle from below */ VX_VIEW_3RD_RT = 3, /* view projected 3rd angle from right */ VX_VIEW_3RD_LT = 4, /* view projected 3rd angle from left */ VX_VIEW_1ST_UP = 5, /* view projected 1st angle from above */ VX_VIEW_1ST_DN = 6, /* view projected 1st angle from below */ VX_VIEW_1ST_RT = 7, /* view projected 1st angle from right */ VX_VIEW_1ST_LT = 8, /* view projected 1st angle from left */ VX_VIEW_3RD_PRJ_ANG = 9, /* view projected at angle, 3rd angle projection */ VX_VIEW_1ST_PRJ_ANG = 10, /* view projected at angle, 1st angle projection */ } evxViewProjAngle; typedef enum evxTableType { VX_TABLE_ALL = 0, /* any table type */ VX_TABLE_USER = 1, /* User table */ VX_TABLE_BOM = 2, /* BOM table */ VX_TABLE_HOLE = 3, /* Hole table */ VX_TABLE_TRODE = 4, /* Electrode table */ VX_TABLE_WDSEG = 5, /* Structural BOM table */ VX_TABLE_WELD = 6, /* Weld table */ VX_TABLE_PNT = 7, /* Point table*/ VX_TABLE_DIM = 8, /* Dimension table*/ VX_TABLE_REV = 9 /* Revision table */ } evxTableType; /* entity pick (includes optional parent entity) */ typedef struct svxEntPick { int idEntity; /* entity id */ int idParent; /* id of entity's parent object (i.e. sketch) or "0" if the entity is a direct child of the target object (i.e. part) */ } svxEntPick;
command or gui form template data
/* command types */ typedef enum evxCmdType { VX_STANDARD_COMMAND = -1, /* non-history command */ VX_HIST_GENERAL = 0, /* general-purpose history operation */ VX_HIST_SOLID_CREATE = 11, /* "solid create" history operation */ VX_HIST_SOLID_EDIT = 12, /* "solid edit" history operation */ VX_HIST_SURF_CREATE = 13, /* "surface create" history operation */ VX_HIST_SURF_EDIT = 14, /* "surface edit" history operation */ VX_HIST_CRV_CREATE = 15, /* "curve create" history operation */ VX_HIST_CRV_EDIT = 16, /* "curve edit" history operation */ VX_HIST_COMP = 17, /* "component" history operation */ VX_HIST_SKETCH = 18, /* "sketch" history operation */ VX_HIST_DATUM = 19, /* "datum" history operation */ VX_HIST_FILLET = 20, /* "fillet/chamfer" history operation */ VX_HIST_SHELL = 21, /* "shell" history operation */ VX_HIST_SHT_METAL = 22, /* "sheet metal" history operation */ VX_HIST_HOLE = 23, /* "hole" history operation */ VX_HIST_CRV_LIST = 24, /* "curve list" history operation */ VX_HIST_IMPORT = 25, /* "import" history operation */ VX_HIST_REF_GEOM = 26, /* "reference geometry" history operation */ VX_HIST_EQN = 27, /* "equation" history operation */ VX_HIST_HEAL = 28, /* "heal" history operation */ VX_HIST_ERASE = 29, /* "erase" history operation */ VX_HIST_BLANK = 30, /* "blank/unblank" history operation */ VX_HIST_ATTRIBUTE = 33, /* "attributes" history operation */ VX_HIST_RENDER = 34, /* "rendering" history operation */ VX_HIST_ANALYZE = 35, /* "analyze" history operation */ VX_HIST_MOVE = 37, /* "copy/move/pattern" history operation */ VX_HIST_TEXT = 38, /* "text" history operation */ VX_HIST_POINT = 39, /* "point" history operation */ VX_HIST_DRAFT = 40, /* "draft" history operation */ VX_HIST_ASSEMBLY = 41, /* "assembly" history operation */ VX_HIST_TAG = 42, /* "tag" history operation */ VX_HIST_MOLD = 43 /* "mold design" history operation */ } evxCmdType; /* command state type */ typedef enum evxCmdState { VX_CMD_ENABLE = 0, VX_CMD_DISABLE = 1, } evxCmdState; /* numeric input field type */ typedef enum evxFldNumType { VX_INP_DOUBLE = 0, VX_INP_INTEGER = 1, VX_INP_DISTANCE = 2, VX_INP_ANGLE = 3 } evxFldNumType; /* gui form template field (i.e. widget) classes */ typedef enum evxFormFldClass { VX_FORM_FLD_NULL = -1, /* null */ VX_FORM_FLD_NUM = 0, /* numeric input */ VX_FORM_FLD_SLIDER = 1, /* bounded numeric input (slider bar) */ VX_FORM_FLD_TXT_IN = 2, /* text input */ VX_FORM_FLD_TXT_OUT = 3, /* text output */ VX_FORM_FLD_TXT_BTN = 4, /* text input with an extra button */ VX_FORM_FLD_TXT_LBL = 5, /* toggle+label+text */ VX_FORM_FLD_DATA = 6, /* data input for handling a template */ VX_FORM_FLD_LIST = 7, /* scrolling list */ VX_FORM_FLD_OPT = 8, /* exclusive/non-exclusive group of options */ VX_FORM_FLD_BTNS = 9, /* menu button group */ VX_FORM_FLD_GROUP = 10, /* widget grouping entity */ VX_FORM_FLD_LABEL = 11, /* label only */ VX_FORM_FLD_SEPARATOR = 12, /* separator */ VX_FORM_FLD_COLOR = 13, /* color widget */ VX_FORM_FLD_TREE = 14, /* tree widget */ VX_FORM_FLD_COMBO = 15, /* combo widget */ VX_FORM_FLD_TAB = 16, /* tab widget */ VX_FORM_FLD_PROGRESS = 17, /* progress control widget */ VX_FORM_FLD_TABLE = 18 /* table widget */ } evxFormFldClass; /* command template field classes */ typedef enum evxCmdFldClass { VX_CMD_FLD_NULL = 0, /* null */ VX_CMD_FLD_TEXT = 1, /* text string */ VX_CMD_FLD_NUM = 2, /* number */ VX_CMD_FLD_DIST = 3, /* distance */ VX_CMD_FLD_ANGLE = 4, /* angle */ VX_CMD_FLD_POINT = 5, /* point */ VX_CMD_FLD_ENTITY = 6, /* entity */ VX_CMD_FLD_OPTION = 7, /* option */ VX_CMD_FLD_CONT = 8, /* continue */ VX_CMD_FLD_FORM = 9, /* gui form */ VX_CMD_FLD_WIN = 10 /* pick window */ } evxCmdFldClass; /* template field data */ typedef struct svxTplFld { char Name[65]; /* field name (i.e. label) */ int Id; /* command field or gui widget id */ int Class; /* see evxFormFldClass or evxCmdFldClass */ void *Callback; /* pointer to field's callback function */ } svxTplFld; /* gui form action (see cvxFormFunc()) */ typedef enum evxFormAction { VX_FORM_INIT = -4, /* initialize form */ VX_FORM_CANCEL = -3, /* take down the form */ VX_FORM_RESET = -2, /* reset form values */ VX_FORM_APPLY = -1, /* apply form values and leave form up */ VX_FORM_OKAY = 0, /* accept form values and take form down */ VX_FORM_DEFAULT = 1 /* default form values */ } evxFormAction;
command input data
/* command license codes */ #define VX_CODE_GENERAL 0.0 #define VX_CODE_ADV_RENDERING 1.0 #define VX_CODE_ASSEMBLY 2.0 #define VX_CODE_ADV_ASSEMBLY 17179869184.0 #define VX_CODE_DRAFTING 4.0 #define VX_CODE_WIREFRAME 8589934592.0 #define VX_CODE_MODELING 512.0 #define VX_CODE_ADV_MODELING 34359738368.0 #define VX_CODE_ADV_SURF 256.0 #define VX_CODE_MOLD_DESIGN 1024.0 #define VX_CODE_HEALING 4294967296.0 #define VX_CODE_POST 2199023255552.0 #define VX_CODE_KEYSHOT 576460752303423488.0 #define VX_CODE_ELECTRODE 1152921504606846976.0 #define VX_CODE_PARTSOLUTIONS 32768.0 #define VX_CODE_MISUMI VX_CODE_GENERAL /* numeric input data types */ typedef enum evxNumType { /* output type VeNumType*/ VX_NUM_UNDEFINED = -1, /* undefined */ VX_NUM_NULL = 0, /* undefined */ VX_NUM_TO_FACE = 1, /* distance/angle to face */ VX_NUM_FACE_BND = 2, /* boundary face */ VX_NUM_TO_PNT = 3, /* distance/angle to point */ VX_NUM_THRU_PLUS = 4, /* "through all" in positive direction */ VX_NUM_THRU_MINUS = 5, /* "through all" in negative direction */ VX_NUM_CURVE_BND = 6, /* boundary curve */ VX_NUM_DATA = 7, /* number defined by a VDATA object */ /* input type VeNumClass*/ VX_UNDEF = 0, /* undefined */ VX_NUM = 1, /* dimensionless number (e.g. curve degree) */ VX_DST = 2, /* distance (mm) */ VX_ANG = 3, /* angle (deg) */ VX_MASS = 4, /* mass (kg) */ VX_DENSITY = 5, /* density (kg/m3) */ VX_AREA = 6, /* area (m2) */ VX_VOLUME = 7, /* volume (m3) */ VX_MASS_MOMENT = 8 /* mass moments (kg.mm2) */ } evxNumType; /* point input data types */ typedef enum evxPntType { VX_PNT3_ABS = 0, /* defined by absolute coord. in object space */ VX_PNT3_ENT = 1, /* entity "critical" point (start, end, mid, center) */ VX_PNT3_ON = 2, /* point on entity defined in entity parameter space */ VX_PNT3_TO = 3, /* point on entity for "tangent to" or "extend to" */ VX_PNT3_MID = 4, /* curve midpoint */ VX_PNT3_NUM = 5, /* point object stores dimensionless numeric input */ VX_PNT3_DST = 6, /* point object stores linear numeric input */ VX_PNT3_ANG = 7, /* point object stores angular numeric input */ VX_PNT3_TAN = 8, /* point on entity for "tangent to" */ VX_PNT3_FRAC = 9, /* point on curve defined as fraction of curve length */ VX_PNT3_REL = 10, /* point defined relative to previous point */ VX_PNT3_DATA = 11, /* point defined by a VDATA object */ VX_PNT3_ABS_COMP = 12 /* defined by abs coord in space of active component */ } evxPntType; /* command input data item */ typedef struct svxData { /* flags indicating the types of data defined by this structure */ char isPoint; /* 1 if "Pnt" is defined, else 0 */ char isEntity; /* 1 if "idEntity" is defined, else 0 */ char isNumber; /* 1 if "Num" is defined, else 0 */ char isDirection; /* 1 if "Dir" is defined, else 0 */ char isText; /* 1 if "Text" is defined, else 0 */ char isPntOnCrv; /* 1 if point on curve, else 0. ** idEntity="curve id"; Pnt="point coordinates"; ** Param[0]="curve t param"; idParent is optional. ** For cvxPartAlign, Param[0]="point id" in the control ** point list. For example, Param[0]=2.0 means using the ** the third control point. char isEndPnt; /* if "isPntOnCrv=1", set this flag to 1 if ** Param[0] is to be used to identify the closest ** endpoint on the specified curve (idEntity). char isPntOnFace; /* 1 if point on face, else 0. ** idEntity="face id"; Pnt="point coordinates"; ** Param[0]="u parameter"; Param[1]="v parameter". /* various parameters that may be defined (see the flags above) */ int idEntity; /* entity/object id (0 if undefined) */ int idParent; /* id of parent entity (0 if undefined) */ evxNumType NumType; /* numeric input type (input and output) */ double Num; /* numeric value */ evxPntType PntType; /* point input type (output only) */ svxPoint Pnt; /* point coordinates */ svxVector Dir; /* unit direction vector */ double Param[3]; /* pick parameters (i.e. t value or point id) */ char Text[256]; /* text string (expression if "isNumber=1") */ } svxData; /* point input data types */ typedef enum evxFldType { VX_FLD_NULL= 0, /* NULL if error */ VX_FLD_NUM = 1, /* dimensionless number */ VX_FLD_DST = 2, /* distance (mm) */ VX_FLD_ANG = 3, /* angle (radians) */ VX_FLD_PNT = 4, /* 3D point */ VX_FLD_ENT = 5, /* entity pick */ VX_FLD_TXT = 6, /* text */ VX_FLD_DATA = 7, /* data container (i.e. VDATA) */ }evxFldType; typedef struct svxUDFParam { int fld_id; /* id of field */ int is_list; /* 1- is list, else 0 */ evxFldType fld_type; /* type of field */ vxLongName description;/* description of parameter, use to set the different data */ }svxUDFParam; typedef struct svxFldData { int fld_id; /* id of field */ vxLongName fld_name; /* name of field (i.e. label, maybe is empty string) */ evxFldType fld_type; /* type of field */ int count; /* number of field data */ svxData *fld_data; /* list of field data */ }svxFldData;
assembly data
/* component data */ typedef struct svxCompData { vxPath Dir; /* pathname of directory that contains "File" */ /* set "Dir[0]=0" to search default pathnames */ vxLongName File; /* name of file that contains "Part" */ vxLongName Part; /* name of part to instance as a component */ vxLongName Comp; /* name to assign to new component in parent part */ /* set "Comp[0]=0" for default name */ svxMatrix Frame; /* insertion frame for new component */ int Anchor; /* 1 to anchor component, or 0 */ int AutoRegen; /* 1 to regen component when parent is regen'd, or 0 */ int AutoDelete; /* 1 to delete component when parent is deleted, or 0 */ int Copy; /* 1 to copy "Part" before instancing, or 0 */ vxLongName CopyName; /* name to assign to copied part when "Copy=1" */ /* if no name is given, the default name is output */ int Overwrite; /* 0 to automatically avoid overwriting existing part ** 1 to prompt whether to overwrite existing part ** -1 to automatically overwrite existing part vxLongName DestFile; /* name of destination file if copying part ** If no name is given (DestFile[0]=0), the part ** is copied to the file of the parent assembly. int Align; /* 1 to align component with point or frame, or 0*/ svxData AlignData; /* align data for point and frame align. ** use cvxDataGet to get the data. int CopyPart; /* 1 to copy "Part" before instancing, or 0 */ vxName CfgName; /* config name, set "CfgName[0]=0" to use active config */ } svxCompData; /* brief component info */ typedef struct svxCompName { vxLongName File; /* name of file that contains "Part" */ vxLongName Part; /* name of part to instance as a component */ } svxCompName; /* geometry export */ typedef struct svxGeomExport { int numEnts; /* number of geometry entities to export */ int *idEnts; /* id's of geometry entities to export */ vxLongName File; /* destination file (set File[0]=0 to use active file) */ vxLongName Part; /* name of destination part (new or existing) */ svxMatrix Frame; /* local coordinate frame */ int Option; /* 0 - add import operation to destination part. ** 1 - add import operation and then "encapsulate" history. ** 2 - add import operation and then "backup" history. ** (Option 1 is recommended) int AddComponent; /* 1 to instance part as component; else 0 . For Z3PRt, it not valid*/ int NoExportOp; /* 1 to disable logging of "Export" operation; else 0 */ int Unblank; /* 1 to unblank exported entities in destination part */ } svxGeomExport; /* copy external part data */ typedef struct svxPartInstData { vxPath Dir; /* pathname of directory that contains "File" */ /* set "Dir[0]=0" to search default pathnames */ vxLongName File; /* name of ZW3D file that contains "Part" */ vxLongName Part; /* name of part that to be copied*/ svxMatrix Frame; /* insertion frame for sub-part,the insert point is the original point of frame */ int CopyWire; /* 1 to copy wireframe, or 0 */ int CopyDim; /* 1 to copy dimension, or 0 */ int Option; /* 0 - sub-part with associative copy. ** 1 - sub-part with history. ** 2 - history copied into this part. ** 3 - associative copy in this part. }svxPartInstData;
hole feature data
/* hole types */ typedef enum evxHoleType { VX_HOLE_SHAPE_ALL = -1, /* all,used in "flag holes" */ VX_HOLE_SIMPLE = 0, /* simple */ VX_HOLE_TAPERED = 1, /* tapered */ VX_HOLE_COUNTER_BORE = 2, /* counter_bore */ VX_HOLE_COUNTER_SUNK = 3, /* counter_sunk */ VX_HOLE_SPOT_FACE = 4 /* spot_face */ } evxHoleType; /* hole end conditions */ typedef enum evxEndCondition { VX_BLIND = 0, VX_UNTIL_FACE = 1, VX_THROUGH_ALL = 2 } evxEndCondition; /* hole thread types */ typedef enum evxThreadType { VX_THREAD_NONE = 1, VX_THREAD_CUSTOM = 2, VX_THREAD_M = 3, VX_THREAD_UNC = 4, VX_THREAD_UNF = 5, VX_THREAD_ISO7 = 6, VX_THREAD_ISO228 = 7, VX_THREAD_NPT = 8, VX_THREAD_NPSM = 9, VX_THREAD_MC = 10, VX_THREAD_MF = 11, VX_THREAD_UN = 12, VX_THREAD_UNEF = 13, VX_THREAD_UNJ = 14, VX_THREAD_UNJC = 15, VX_THREAD_UNJF = 16, VX_THREAD_UNJEF = 17, VX_THREAD_ACME = 18, VX_THREAD_BSP = 19, VX_THREAD_BSTP = 20 } evxThreadType; /* thread class for flag holes */ typedef enum evxThreadHoleClass { VX_THREAD_HOLE_UNDEFINED, /* undefined */ VX_THREAD_HOLE_1B, /* 1B */ VX_THREAD_HOLE_2B, /* 2B */ VX_THREAD_HOLE_3B, /* 3B */ } evxThreadHoleClass; /* flagged as thread hole depth type */ typedef enum evxFlagThreadDepthType { VX_FLAG_THREAD_UNDEFINED, /* undefined */ VX_FLAG_THREAD_DEPTH_DEFAULT, /* default */ VX_FLAG_THREAD_DEPTH_1XDIAMETER, /* 1.0 x diameter */ VX_FLAG_THREAD_DEPTH_15XDIAMETER, /* 1.5 x diameter */ VX_FLAG_THREAD_DEPTH_2XDIAMETER, /* 2.0 x diameter */ VX_FLAG_THREAD_DEPTH_25XDIAMETER, /* 2.5 x diameter */ VX_FLAG_THREAD_DEPTH_3XDIAMETER, /* 3.0 x diameter */ VX_FLAG_THREAD_DEPTH_FULL, /* full */ VX_FLAG_THREAD_DEPTH_CUSTOM, /* custom */ } evxFlagThreadDepthType; /* flag hole data */ typedef struct svxFlagHoleData { int FaceId; /* face id */ int count; /* count of "HolesId" */ int* HolesId; /* list of hole id */ int isUseFilter; /* 1 if use hole filter,else 0 */ struct svxFilterCondition { evxHoleType HoleShape; /* hole shape */ int isOnlyCylindrical; /* 1 if only whole cylindrical,else 0 */ int isDiameter; /* 1 if edit diameter,else 0 */ double DiameterStart; /* diameter start */ double DiameterEnd; /* diameter end */ int isDepth; /* 1 if edit depth ,else 0 */ double DepthStart; /* depth start */ double DepthEnd; /* depth end */ } FilterData; int isUseFlaggedThread; /* 1 if use flagged as thread hole,else 0 */ vxLongName type; /* flag thread hole type The size of the data is very large ,so user can find it in file Thread.xml(zw3d/supp/Thread.xml) Copy the value of "StandardValue" to "type" */ vxLongName size; /* flag thread hole size The size of the data is very large ,so user can find it in file Thread.xml(zw3d/supp/Thread.xml) Copy the value of "SizeValue" to "size" */ struct svxCustomData /* if type[0]==0, apply it. */ { double diamter; /* diameter */ int isPitch; /* 1 if pitch ,else thread/unit */ double value; /* isPitch is 1,value is pitch value,else Thread/Unit value */ } custom; evxFlagThreadDepthType DepthType; /* depth type */ double depth; /* depth */ svxPntOnEnt *DepthPnt; /* set the depth by "To point" */ vxLongName CalloutLabel; /* callout label */ int isAddD1; /* 1 if add D1 tolerance ,else 0 */ double UpperLimit; /* upper limit */ double LowerLimit; /* lower limit */ evxThreadHoleClass ThreadClass; /* thread class */ int isMachine; /* 1 if do not machine,else 0 */ int isCounter; /* 1 if counter-sink as simple hole with chamfer */ } svxFlagHoleData; /* flag ext thread data */ typedef struct svxFlagExtThreadData { int count; /* count of "Faces" */ svxPoint* Faces; /* faces */ int* IdFaces; /* id(IdFaces[0]) of face(Faces[0]) */ vxLongName type; /* flag thread hole type The size of the data is very large ,so user can find it in file Thread.xml(zw3d/supp/Thread.xml) Copy the value of "StandardValue" to "type" */ vxLongName size; /* flag thread hole size The size of the data is very large ,so user can find it in file Thread.xml(zw3d/supp/Thread.xml) Copy the value of "SizeValue" to "size" */ struct svxCustomInfo /* if type[0]==0, apply it. */ { double diamter; /* diameter */ int isThread; /* 1 if thread/unit ,else pitch */ double value; /* isPitch is 1,value is pitch value,else Thread/Unit value */ int useDiam; /* 1-use diameter, 0 use the diameter of the first input face (default: 0) */ } custom; evxFlagThreadDepthType LengthType; /* length type */ double length; /* length */ int isChamfer; /* 1 if end chamfer ,else 0 */ double SetBack; /* SetBack */ double angle; /* angle */ } svxFlagExtThreadData; /* hole option*/ typedef enum evxHoleOpt { VX_GENERAL_HOLE = 0, /* general hole */ VX_CLEARANCE_HOLE = 1, /* clearance hole */ VX_THREAD_HOLE = 2, /* thread hole */ VX_PROFILE_HOLE = 3, /* profile hole */ }evxHoleOpt; /* hole type of clearance hole */ typedef enum evxClearHoleType { VX_CLEAR_HOLE_SIMPLE = 0, /* simple */ VX_CLEAR_HOLE_COUNT_BORE = 1, /* counter-Bore */ VX_CLEAR_HOLE_COUNT_SINK = 2, /* counter-sink*/ VX_CLEAR_HOLE_SLOT = 3, /* slot */ VX_CLEAR_HOLE_COUNT_SINK_SLOT = 4, /* countersink slot */ VX_CLEAR_HOLE_COUNT_BORE_SLOT = 5, /* counterbore slot */ }evxClearHoleType; typedef struct svxThreadData { evxThreadType Type; /* thread type */ double Diameter; /* thread diameter (mm) */ double Length; /* thread length (mm) */ double PerUnit; /* threads per unit (0 if not used) */ double Pitch; /* thread pitch (mm) (0 if not used) */ int EndChamfer; /* 1=Yes; 0=No */ } svxThreadData; // Hole chamfer, added in 1900 typedef struct svxHoleChams { int fCham; /* Flag if chamfer */ int fChamSym; /* Flag if it is symmetric chamfer */ double chamDst; /* Chamfer distance */ double chamAngle; /* Chamfer angle */ }svxHoleChams; /* hole data */ typedef struct svxHoleData { /* Geometry */ evxHoleType Type; /* hole type (general hole or thread hole)*/ int idInsFace; /* id of insertion face. 0 to ignore */ int Count; /* number of holes */ svxPoint *Points; /* list of "Count" hole insertion points */ /* (calling procedure must allocate/deallocate) */ double Diameter1; /* 1st diameter (mm) */ double Depth1; /* 1st depth (mm) */ double Diameter2; /* 2nd diameter (mm, countersunk holes) */ double Depth2; /* 2nd depth (mm, countersunk holes) */ double TaperAngle; /* taper angle (degrees) */ double TipAngle; /* tip angle (degrees) (0 is mapped to 180, 118 is default) */ evxEndCondition End; /* hole end condition */ int idUntilFace; /* id of "until" face (0 if not required) */ int UseDirection; /* 1 to use "Direction" input; 0 for default */ svxVector Direction; /* optional direction for hole centerline */ int OpNoRemove; /* bool operation type (0 means remove for default, 1 is none) */ int cntShps; /* count of shapes. if OpNoRemove = 0,apply it. if OpNoRemove=0 and cngShps=0, remove default. */ int* idShapes; /* list of shape id. if OpNoRemove = 0 and cntShps > 0,apply it. */ int NoProjPntLoc; /* 1 not to project location point, 0 to project */ double slotLength; /* slot length (mm)*/ double slotAngle; /* slot angle(deg)*/ /* Thread */ evxThreadType ThreadType; /* thread type */ vxLongName ThreadSize; /* thread size. The size of the data is very large ,so user can find it in file Thread.xml(zw3d/supp/Thread.xml) Copy the value of "SizeValue" to "ThreadSize" Custom if ThreadSize[0] == 0 .*/ double ThreadDiameter; /* thread diameter (mm) */ double ThreadLength; /* thread length (mm) */ double ThreadsPerUnit; /* threads per unit (0 if not used) */ double ThreadPitch; /* thread pitch (mm) (0 if not used) */ int fThrdClass; /* T/F flag for thread class, added in 1900 version */ int thrdClass; /* thread class 1B/2B/3B, added in 1900 version */ svxHoleChams sCham; /* Start chamfer */ svxHoleChams mCham; /* Middle chamfer for counter bore or spot face bore */ svxHoleChams eCham; /* End chamfer */ int fExtTap; /* Flag if extend with taper direction for tapered or counter-sink hole */ int fExtStart; /* Flag if extend the start of hole */ /* Tolerance */ int UseTol; /* 1 to use tolerances; or 0 */ double TolIn; /* inner tolerance on Diameter 1 */ double TolOut; /* outer tolerance on Diameter 1 */ int UseD2Tol; /* T/F flag for ID2 Tol input choice, add in 1900 version */ double D2InTol; /* D2 tolerance lower limit, added in 1900 version */ double D2OutTol; /* D2 tolerance upper limit, added in 1900 version */ /* Other */ char Callout[128]; /* callout text string */ int DoNotMachine; /* 1 to ignore hole in CAM, or 0 */ /* clearance hole/ profile hole(2700)*/ evxHoleOpt HoleOpt; /* different hole to create */ evxClearHoleType ClearHoleType; /* hole type (when HoleOpt = VX_CLEARANCE_HOLE) */ vxLongName Standard; /* user can find it in file Simple.xml(zw3d/supp/Simple.xml) */ vxLongName Screw; /* user can find it in file Simple.xml(zw3d/supp/Simple.xml) */ vxLongName Size; /* user can find it in file Simple.xml(zw3d/supp/Simple.xml) */ vxLongName Fit; /* "Close","Normal","Loose","Custom" */ int idSketch; /* use sketch to create the hole (HoleOpt = VX_PROFILE_HOLE, 0 to ignore) */ } svxHoleData; /* chamfer or fillet types */ typedef enum evxChamFlltType { VX_CHAMFLLT_SYMMETRIC, /* symmetric chamfer or fillet: single offset chamfer at edge */ VX_CHAMFLLT_ASYMMETRIC, /* asymmetric chamfer or fillet: double offset chamfer at edge */ VX_CHAMFLLT_SETBACK_ANGLE, /* asymmetric chamfer or fillet: offset and angle chamfer at edge */ VX_CHAMFLLT_VERTEX /* vertex chamfer or fillet: single offset chamfer at vertex */ } evxChamFlltType; /* set-list data for chamfer or fillet command */ typedef struct svxChamFlltSetData { int nEdges; /* number of edges or vertexes to chamfer or fillet */ int *idEdge; /* list of index of edges to chamfer or fillet */ int *vertex; /* list of endpoints for edges (0-starting vertex, 1-end vertex), like idEdge, the number of data in this list should also be nEdges, only for VX_CHAMFILT_VERTEX type, other types can be set to NULL */ double setback1; /* the first setback distance or radius */ double setback2; /* the second setback distance for VX_CHAMFILT_ASYMMETRIC type */ double angle; /* the angle of the setback for VX_CHAMFILT_SEEDBACK_ANGLE type */ int flip; /* 1-flip the edge direction, else 0 (type = VX_CHAMFLLT_ASYMMETRIC/VX_CHAMFLLT_SETBACK_ANGLE) */ svxPntOnEnt *setback1Pnt; /* setback1 value (NULL to ignore) */ svxPntOnEnt *setback2Pnt; /* setback2 value (NULL to ignore) */ }svxChamFlltSetData; /* chamfer or fillet data */ typedef struct svxChamFlltData { evxChamFlltType type; /* chamfer or fillet type */ int nEdges; /* number of edges or vertexes to chamfer or fillet */ int *idEdge; /* list of index of edges to chamfer or fillet */ int *vertex; /* list of endpoints for edges (0-starting vertex, 1-end vertex), like idEdge, the number of data in this list should also be nEdges, only for VX_CHAMFILT_VERTEX type, other types can be set to NULL */ double setback1; /* the first setback distance or radius */ double setback2; /* the second setback distance for VX_CHAMFILT_ASYMMETRIC type */ double angle; /* the angle of the setback for VX_CHAMFILT_SEEDBACK_ANGLE type */ /* The following parameters are used to set shape of fillet, only used for fillet feature */ double relief; /* specify the amount of smoothing at a corner patch (0.0-default) */ int arcType; /* specify the fillet arc type (0-circular arc, 1-conic arc, 2-G2 blend) */ double conicRatio; /* conic ratio for conic arc type (0~0.999999, 0.5-default) */ double weight[2]; /* endpoint weights for G2 blend arc type (0.1~5.0, 1.0-default) */ /* The following parameters are used to set rollover control */ int filletToEdge; /* if set to 1, fillet held to nearby edges (0-default) */ int usePatch; /* whether to use patches in tight corners (0-default) */ int undercuts; /* if set to 1, the chamfer/fillet engine will look for cases where the new chamfer/fillet are completely undercutting a pre-existing feature. If found, the engine will attempt to extend and/or trim the old feature against the new chamfer/fillet (0-default) */ int localCorner; /* if set to 1, keep chamfering/filleting only to the edge, else the chamfer/fillet will extend to the side where the edge is (0-default) */ int mitred; /* if set to 1, the chamfer/fillet engine will provide a mitred solution at corners of uniform convexity (0-default) */ int traceCorners; /* if set to 1, the rails of the chamfer/fillet and corner patch faces are traced onto the support faces rather than being projected (0-default) */ int blendCorners; /* if set to 1, create a single smooth trimmed planar face for each corner via the FEM-based surface fitting method (0-default) */ int continuity; /* continuous way (0-tangent, 1-curvature) */ int desity; /* the average number of sampling points along the edges of the blended corners (2~200) */ int baseFaces; /* base face processing method (0-sew, 1-trim, 2-divide, 3-no action) */ int filletFace; /* the tangency of the new chamfer/fillet faces (0-tangent match, 1-minimal, 2-maximal) */ int flip; /* 1-flip the edge direction, else 0 (type = VX_CHAMFLLT_ASYMMETRIC/VX_CHAMFLLT_SETBACK_ANGLE) */ int offsetType; /* method of offset, 0- offset distance, 1- offset surface(default:0, only used for Charmer feature) */ /* use To-point* to set the value */ svxPntOnEnt *setback1Pnt; /* setback1 value (NULL to ignore) */ svxPntOnEnt *setback2Pnt; /* setback2 value (NULL to ignore) */ /* use set-list to set the data (edges/setback/angle) to each list */ int cntList; /* count of set list, 0-to ignore */ svxChamFlltSetData *pChamFlltDataList; /* data of each list, NULL to ignore */ } svxChamFlltData;
shape feature data
/* boolean combination method */ typedef enum evxBoolType { VX_BOOL_NONE = 0, VX_BOOL_ADD = 1, VX_BOOL_REMOVE = 2, VX_BOOL_INTERSECT = 3 } evxBoolType; /* box */ typedef struct svxBoxData { evxBoolType Combine; /* combination method */ int idPlane; /* optional datum plane, or 0 */ int useAxis; /* flag to use axis, 0 default */ svxAxis axis; /* optional axis */ svxPoint Center; /* center of box volume */ double X; /* length along X */ double Y; /* length along Y */ double Z; /* length along Z */ vxName ftrName; /* feature name for "FtAllBox", 0 default */ } svxBoxData; /* N-SIDED */ typedef enum evxRefitOpt { VX_REFIT_NO = 0, /* none */ VX_REFIT_TANGENT = 1, /* tangent */ VX_REFIT_CURVATURE = 2, /* curvature */ VX_REFIT_DIRECT = 3, /* direct */ } evxRefitOpt; typedef struct svxNSidedData { int numCrv; /* count of the paths */ int *pCrv; /* id of curves */ int *pCrvParent; /* parent index of curves (-1/NULL to ignore) */ int sewShape; /* flag to sew shapes or not. 1 = to sew , (default) */ int numShape; /* count of the shapes, invalid if sewShape set to 1, can be ignored */ int *pShape; /* index of the shapes, invalid if sewShape set to 1, can be ignored */ int tangent; /* tangent at boundary , 0 = no (default), 1 = tangent */ evxRefitOpt refit; /* enum for Refit options, 0 = no, 1 = tangent , 2 = curvature, 3 = direct (default) */ double dTol; /* Tolerance, 0.01 (default) */ } svxNSidedData; /* data of explode command */ typedef struct svxExplodeData { int numFace; /*Number of selected faces.*/ int *pFace; /*Id list of faces to explode.*/ int ConnectFc; /*flag to use Group connected faces, 0 default*/ int RebudEdge; /*flag to use Rebuild edges along boundary, 1 default*/ } svxExplodeData; /* cylinder */ typedef struct svxCylData { evxBoolType Combine; /* combination method */ int idPlane; /* optional datum plane (0 to use XY plane) */ int useAxis; /* flag to use axis, 0 default */ svxAxis axis; /* optional axis */ svxPoint Center; /* center of bottom face */ double Radius; /* radius (mm) in XY plane */ double Length; /* length (mm) along Z */ vxName ftrName; /* feature name for "FtAllCyl", 0 default */ } svxCylData; /* cone */ typedef struct svxConeData { evxBoolType Combine; /* combination method */ svxPoint Center; /* center of bottom face */ double Radius1; /* the first radius (mm) in bottom face */ double Length; /* length (mm) along Z */ double Radius2; /* the second radius (mm), 0 default */ int useAxis; /* flag to use axis (0 to use plane, 1 to use axis) */ int idPlane; /* optional datum plane (0 to use XY plane) */ svxAxis axis; /* optional axis */ vxName ftrName; /* feature name for "FtAllCone", 0 default */ } svxConeData; /* sphere */ typedef struct svxSphereData { evxBoolType Combine; /* combination method */ svxPoint Center; /* sphere center point */ double Radius; /* sphere radius (mm) */ vxName ftrName; /* feature name for "FtAllSph", 0 default */ } svxSphereData; /* ellipsoid */ typedef struct svxEllsoData { evxBoolType Combine; /* combination method */ svxPoint Center; /* sphere center point */ double xLen; /* length of the ellipsoid along the x (mm) */ double yLen; /* length of the ellipsoid along the y (mm) */ double zLen; /* length of the ellipsoid along the z (mm) */ int useAxis; /* flag to use axis (0 to use plane, 1 to use axis) */ int idPlane; /* optional datum plane (0 to use XY plane) */ svxAxis axis; /* optional axis */ vxName ftrName; /* feature name for "FtAllEllso", 0 default */ } svxEllsoData; /* the distance method of the distance field, it can set the value by the specified sub-command */ typedef enum evxDistanceMethod { VX_INPU_VALUE = 0, /* the start/end field by the input number*/ VX_BY_THROUGH_ALL = 1, /* the start/end field by the through all method */ VX_TO_POINT = 2, /* the start/end field by the to point method */ VX_TO_FACES = 3, /* the start/end field by the to faces method */ VX_TO_EXTEND_FACE = 4, /* the start/end field by the to extend face method(extrude) */ VX_TO_FACE = 5, /* the start/end field by the to extend face method (normal cut) */ } evxDistanceMethod; typedef enum evxOffsetType { VX_OFFSET_NONE = 0, /* none */ VX_OFFSET_SHRINK = 1, /* Shrink / Expand */ VX_OFFSET_THICKEN = 2, /* Thicken */ VX_OFFSET_THICKEN_SAME = 3,/* Thicken same */ } evxOffsetType; /* End caps */ typedef enum evxCapType { VX_END_CAP_BOTH = 0, /* both */ VX_END_CAP_START = 1, /* start */ VX_END_CAP_END = 2, /* end */ VX_END_CAP_NONE = 3, /* none */ }evxCapType; /* extruded shape */ typedef struct svxExtrudeData { evxBoolType Combine; /* combination method */ int idProfile; /* profile (sketch or curvelist) */ double Start; /* start distance (mm) */ double End; /* end distance (mm) */ double Draft; /* draft angle (deg) */ int Blend; /* corner blend option */ /* (0-variable, 1-constant, 2-round) */ int UseDirection; /* 1 to use optional extrusion direction, else 0 */ svxVector Direction; /* optional extrusion direction */ double Twist; /* twist angle (deg) */ svxPoint Pivot; /* pivot point if twist is non-zero */ double Offset; /* profile offset (mm) (0 if undefined) */ double Thickness; /* wall thickness (mm) (0 if undefined) */ int iKeep; /* keep profile (1-keep, 0-not keep, not use since 2400) */ int numBooleanEnts; /* count of shapes in BooleanEnts array, use 0 if BooleanEnts is NULL*/ int *BooleanEnts; /* id list of shapes to combine with extrusion, use NULL if Combine is VX_BOOL_NONE or to combine extrusion with all visible shapes */ vxName ftrName; /* feature name for "FtAllExt", 0 default */ int FlipFaceDir; /* 1-flip face direction, else 0 (0:default value, valid when the idProfile is open or CapType == VX_END_CAP_NONE) */ evxDistanceMethod StartType;/* start type (0 = input value, 1 = through all, 2= to point, 3 = to faces, 4=to Extend Face) */ evxDistanceMethod EndType; /* end type (0 = input value, 1 = through all, 2= to point, 3 = to faces, 4=to Extend Face) */ int idStartEnt; /* the entity id of start field if StartType > 1 */ int idEndEnt; /* the entity id of end field if EndType > 1 */ double StartOffset; /* start offset value if StartType >= 3 */ double EndOffset; /* end offset value if EndType >= 3 */ svxPoint *StartToPnt; /* if StartType = 2, NULL to ignore */ svxPoint *EndToPnt; /* if EndType = 2, NULL to ignore */ evxOffsetType OffsetTyp; /* option of offset(set the value of Offset and Thickness)*/ evxCapType CapType; /* end cap type (VX_END_CAP_BOTH as default, invalid if the idProfile is open) */ int cntCap; /* count cap face (0 to ignore; valid if Combine is VX_BOOL_ADD or VX_BOOL_Remove and the idProfile is open; valid if Combine is VX_BOOL_ADD and the idProfile is close) */ int *CapFace; /* cap face id list (NULL to ignore) */ } svxExtrudeData; /* rib data */ typedef struct svxRibData { int idParent; /* id of profile curve's parent sketch or curvelist */ int idProfile; /* index of profile curve */ int direction; /* extrude direction (0 = Parallel to sketch, 1 = Vertical to sketch) */ int widthType; /* thickness type (0 = Fist side, 1 = Two sides, 2 = Second side) */ double width; /* rib thickness */ double angle; /* draft angle */ int idPlane; /* draft plane, set when angle > 0.0 */ int numBndFaces; /* number of rib boundary faces */ int *idBndFaces; /* list of rib boundary faces */ int flipDir; /* flip the material direction (1 = yes, 0 = no) */ vxName ftrName; /* feature name for "FtRib", 0 default */ } svxRibData; /* lip data */ typedef struct svxLipData { /* specified lip edge, the edge and the face specifying the first side should be set in pairs */ int numEdges; /* number of edges to apply lip */ int *idEdge; /* list of edges to apply lip */ int *idFace; /* list of faces on first side, the face must be associated with lip edge */ double offset1; /* the first offset distance */ double offset2; /* the second offset distance */ vxName ftrName; /* feature name for "FtLip", 0 default */ } svxLipData; /* stock type */ typedef enum evxStockOpt { VX_STOCK_BLOCK = 1, /* block type */ VX_STOCK_CYLINDER = 2, /* cylinder type */ } evxStockOpt; /* stock data */ typedef struct svxStockData { evxStockOpt option; /* stock type */ int numEnts; /* number of entities to enclose */ int *idEnts; /* list of entities to enclose (shape, face, block) */ int adjustType; /* Type of adjust value (0 = By side, 1 = By total) */ int decimal; /* number of decimal place */ vxName ftrName; /* feature name for "FtExtStock2", 0 default */ /* the relevant setting for stock type VX_STOCK_BLOCK */ int idPlane; /* id of reference plane to orient the stock, 0 to use default plane paralled to XY datum (datum, planar face, sketch) */ double length[2]; /* when adjustType = 0, increment of length in the positive and negative directions when adjustType = 1, stock total length, just set the first value */ double width[2]; /* when adjustType = 0, increment of width in the positive and negative directions when adjustType = 1, stock total width, just set the first value */ double height[2]; /* when adjustType = 0, increment of height in the positive and negative directions when adjustType = 1, stock total height, just set the first value */ /* the relevant setting for stock type VX_STOCK_CYLINDER */ svxAxis axis; /* spiral axis to specify the rotational center of the cylinder */ int axisPos; /* specify the center axis position of the cylinder (0 = on the setting axis, 1 = on the center of the shape */ double radius; /* when adjustType = 0, increment of radius when adjustType = 1, stock radius */ double cylHgt[2]; /* when adjustType = 0, increment of cylinder height in the positive and negative directions when adjustType = 1, cylinder total height, just set the first value */ } svxStockData; /* stock data */ typedef struct svxThickenData { int type; /* specify the selection of object (0 = sheet, 1 = Faces) */ double thick; /* thicken thickness, the value cannot be zero */ vxName ftrName; /* feature name for "FtThicken", 0 default */ /* the relevant setting for sheet type (type = 0) */ int idShape; /* id of shape to thicken */ int keep; /* whether to keep the original sheet (1 = yes, 0 = no) */ /* the relevant setting for Faces type (type = 1) */ int numFaces; /* number of faces to thicken */ int *idFaces; /* list of faces to thicken */ /* set additional offset, the face and the thick must be set in pairs */ int numOffset; /* number of additional offset */ int *idOffFaces; /* list of additional offset faces */ double *thickT; /* list of additional offset value */ } svxThickenData; /* divide data */ typedef struct svxDivideData { int numBase; /* number of shapes to divide */ int *idBase; /* id list of shape to divide */ int numCutter; /* number of dividing entities */ int *idCutters; /* list of dividing entities (shape, face, datum plane) */ /* the relevant setting for sheet type (type = 0) */ int keepCutter; /* whether to keep dividing entities (0 = delete, 1 = keep, 2 = divide) */ int trimCap; /* whether to cap shape at the trimmed edges (1 = cap, 0 = uncap) */ int extend; /* extend method (1 = no extend, 0 = linear, 2 = circular) */ vxName ftrName; /* feature name for "FtSolidSoloDiv", 0 default */ } svxDivideData; /* Trim data */ typedef struct svxTrimData { int numBase; /* number of shapes to trimming */ int *idBase; /* id list of shape to trimming */ int numTrimm; /* number of trimming entities */ int *idTrimmer; /* list of trimming entities (shape, face, datum plane) */ int flip; /* 1-flip side to keep, else 0 */ int trimType; /* 1-trim with all simultaneously, else 0 */ int trimCap; /* whether to cap shape at the trimming edges (0 = uncap, 1 = cap) */ int keepTrimm; /* whether to keep trimming entities (0 = delete, 1 = keep) */ int extend; /* extend method (1 = no extend, 0 = linear, 2 = circular) */ vxName ftrName; /* feature name for "FtSolidSoloTrm", 0 default */ } svxTrimData; /* inlay data */ typedef struct svxInlayData { int numFaces; /* number of faces to receive the inlay */ int *idFaces; /* list of id's of faces to receive the inlay */ int numCrvs; /* number of curves that defines a inlay boundary */ int *idCrvs; /* list of curves that defines a inlay boundary (sketch, curve, curve list, sketch block) */ double offset; /* offset distance, positive raises the faces while negative sinks the faces */ int projType; /* projection method (0 = in place(none), 1 = face normal, 2 = directed, 3 = bi-directional) */ svxVector projDir; /* projection direction, only used when projType = 2 */ svxVector inlayDir; /* inlay direction of curves */ int draftAbout; /* specify which plane to draft about ( 0 = base, 1 = offset, 2 = middle) */ double draftAngle; /* draft angle for the side faces */ int filletType; /* fillet type ( 0 = circular, 1 = chamfer) */ int filletAbout; /* specify which edges to fillet ( 0 = both, 1 = base, 2 = offset) */ double filletRad; /* fillet radius */ vxName ftrName; /* feature name for "FtInlay", 0 default */ } svxInlayData; /* dimple data */ typedef struct svxDimpleData { int dimpleType; /* dimple type (0 = Plain Dimple, 1 = Flared Hole) */ int idPlane; /* id of planar face to place the dimple */ int idProfile; /* id of sketch defining the dimple perimeter, the sketch must be a closed sketch with one or more tangent continuous loops */ int numShapes; /* number of shapes to sew */ int *idShapes; /* list of id's of shapes to sew */ double height; /* height measured from the selected face to the outside face of the dimple */ double angle; /* the side angle measured from the selected face */ double radius1; /* inner radius around the perimeter height of the dimple */ double radius2; /* outer radius around the perimeter of the dimple and tangent to the selected face */ vxName ftrName; /* feature name for "SmdDimple", 0 default */ } svxDimpleData; /* mirror geomtry data */ typedef struct svxMirrorGeom { int numEnts; /* number of entities to mirror */ int *idEnts; /* list of geometry entity ids */ int idPlane; /* id of mirror plane (datum plane, planar face or sketch) */ evxBoolType combine;/* combination method */ int numShapes; /* number of shapes to boolean */ int *idShapes; /* list of id's of shapes to boolean */ int keep; /* whether to keep the original entities (0 = no keep, 1 = keep) */ int assoCopy; /* whether to keep associated with the original entities (0 = no, 1 = yes) */ vxName ftrName; /* feature name for "FtMirrorGeom", 0 default */ } svxMirrorGeom; /* mirror feature data */ typedef struct svxMirrorFtr { int numFtrs; /* number of features to mirror */ int *idFtrs; /* list of features ids */ int idPlane; /* id of mirror plane (datum plane, planar face or sketch) */ evxBoolType combine;/* combination method */ int numShapes; /* number of shapes to boolean */ int *idShapes; /* list of id's of shapes to boolean */ int keep; /* whether to keep the original features (0 = no keep, 1 = keep) */ vxName ftrName; /* feature name for "FtMirrorFtr", 0 default */ } svxMirrorFtr; /* revolved shape */ typedef struct svxRevolveData { evxBoolType Combine; /* combination method */ int idProfile; /* profile (sketch or curvelist) */ double Start; /* start angle (deg) */ double End; /* end angle (deg) */ svxAxis Axis; /* axis of revolution */ double Offset; /* profile offset (mm) (0 if undefined) */ double Thickness; /* wall thickness (mm) (0 if undefined) */ int idAxis; /* index of idAxis (-1/0 to ignore) */ int idParent; /* parent index if idAxis is a geometry of the profile (-1/0 to ignore) */ evxOffsetType OffsetTyp; /* option of offset(set the value of Offset and Thickness)*/ /* To point/ To face/ To Extended Face for "Start" and "End" */ evxDistanceMethod StartType;/* start type (values: VX_INPU_VALUE, VX_BY_THROUGH_ALL, VX_TO_POINT, VX_TO_EXTEND_FACE, VX_TO_FACE */ evxDistanceMethod EndType; /* end type (values: VX_INPU_VALUE, VX_BY_THROUGH_ALL, VX_TO_POINT, VX_TO_EXTEND_FACE, VX_TO_FACE */ int idStartEnt; /* entity id if StartType != VX_INPU_VALUE (-1 to ignore) */ int idEndEnt; /* entity id if EndType != VX_INPU_VALUE (-1 to ignore) */ svxPoint *StartPnt; /* start point (NULL to ignore, it will get the point (umin,vmin) of the idStartEnt if StartType = VX_EXT_TO_FACE/VX_TO_EXTEND_FACE))*/ svxPoint *EndPnt; /* end point (NULL to ignore, it will get the point (umin,vmin) of the idEndEnt if EndType = VX_EXT_TO_FACE/VX_TO_EXTEND_FACE))*/ evxCapType CapType; /* end cap type (VX_END_CAP_BOTH as default, invalid if the idProfile is open) */ int Flip; /* flip face direction (0 as default, CapType=VX_END_CAP_NONE) */ } svxRevolveData; /* sweep option */ typedef enum evxSweepOpt { VX_SWP_NATURAL = 0, /* Default frame */ VX_SWP_AT_PATH = 1, /* At Path */ VX_SWP_FRAME = 2, /* Selected */ VX_SWP_AT_PROFILE = 3, /* At intersection */ VX_SWP_ALONG_PATH = 4 /* Along Path */ } evxSweepOpt; /* swept shape */ typedef struct svxSweepData { evxBoolType Combine; /* combination method */ int idProfile; /* profile (sketch, curve, edge, curvelist) */ int idPath; /* id of curve that identifies the sweep path */ svxPoint StartPnt; /* point that identifies start of path curve */ /* (defined relative to curve's coordinate frame) */ int idParent; /* id of path curve's parent sketch or curvelist */ int UseParent; /* 1 to use curve's parent as the sweep path, else 0 */ evxSweepOpt Option; /* sweep option(VX_SWP_AT_PROFILE as default) */ int idFrame; /* id of sweep frame if Option=VX_SWP_FRAME, else 0 */ int idXaxis; /* id of X-axis point, curve or plane (0 if undefined or tangent to path) */ int idZaxis; /* id of Z-axis point, curve or plane (0 if undefined or minimum twist) */ double Offset; /* profile offset (mm) (0 if undefined) */ double Thickness; /* wall thickness (mm) (0 if undefined) */ int useStartPnt; /* 1- user "StartPnt", else 0 it will get the start point of the "idPath" */ /* set the type of Xaxis and Zaxis, set the following parameters or just set idXaxis and idZaxis */ evxSweepXOpt xOpt; /* type of X-axis */ evxSweepZOpt zOpt; /* type of Y-axis */ svxPntOnEnt *xEnt; /* entity data of x-axis (NULL to ignore or use idZaxis or xOpt = VX_SWP_X_MIN_TWIST) VX_SWP_X_FIXED_DIR- use direction (just direction or direction from an curve/edge) VX_SWP_X_XAXIS_CRV - point on curve(set parent if the curve from the sketch) VX_SWP_X_FACE_NORMAL - face */ svxPntOnEnt *zEnt; /* entity data of z-axis (NULL to ignore or use idZaxis or zOpt = VX_SWP_Z_TANG_TO_PATH) VX_SWP_Z_TANG_TO_CRV- curve(set parent if the curve from the sketch) VX_SWP_Z_FIXED_DIR - use direction (just direction or direction from an curve/edge) */ /* offset type */ evxOffsetType OffsetTyp; /* option of offset(set the value of Offset and Thickness)*/ evxCapType CapType; /* end cap type (VX_END_CAP_BOTH as default, invalid if the idProfile is open) */ int cntCap; /* count cap face (0 to ignore; valid if Combine is VX_BOOL_ADD or VX_BOOL_Remove and the idProfile is open; valid if Combine is VX_BOOL_ADD and the idProfile is close) */ int *CapFace; /* cap face id list (NULL to ignore) */ int MergeFc; /* merge tangent faces (0 as default) */ } svxSweepData;
curve data
/* 3D interpolated curve */ typedef struct svxCrvIntData { /* required inputs */ int isClosed; /* 1 if curve is closed, 0 if open */ int Degree; /* curve degree (2 - 6) */ int Count; /* number of points to interpolate */ svxPoint *Points; /* pointer to list of points to interpolate */ /* (set Z coordinate to zero for 2D curves) */ /* optional inputs */ int UseStartTan; /* 1 to use start tangent direction, else 0 */ svxVector StartTan; /* normalized start tangent direction vector */ double StartScale; /* start tangent scale factor (0.1 - 10.0, 1.0 as default) */ int UseEndTan; /* 1 to use start tangent direction, else 0 */ svxVector EndTan; /* normalized end tangent direction vector */ double EndScale; /* end tangent scale factor (0.1 - 10.0, 1.0 as default) */ int Fairing; /* fairing type(0-None, 1-Energy, 2-Variation, 3-Jerk, 4-Bend, 5-Tension)*/ } svxCrvIntData; /* Continuity option */ typedef enum evxContinuityTyp { VX_CONTIN_NONE = 0, /* none*/ VX_CONTIN_G1 = 1, /* tangent */ VX_CONTIN_G2 = 2, /* curvature */ VX_CONTIN_G3 = 3, /* flow */ } evxContinuityTyp; /* Spline point */ typedef struct svxSplinePnt { svxPoint Pnt; /* point */ int UseCons; /* 1-use the constraints data ,else 0 (0 as default) */ /* set following parameters when useCons = 1 */ evxContinuityTyp ContinuityTyp; /* continuity type (VX_NONE as default)*/ svxVector TangDir; /* tangent direction at this point (ContinuityTyp != VX_CONTIN_NONE)*/ int UseG1Manitude; /* 1-use G1 magnitude, else 0 (0 as default) */ double dG1Manitude; /* G1 magnitude (use this when UseG1Manitude != 0 ) */ int UseG2Radius; /* 1-use G2 radius, else 0 (0 as default) */ double dG2Radius; /* G2 radius(use this when UseG2Radius != 0)*/ int FlipDir; /* 1-flip the TangDir, else 0 (0 as default) */ }svxSplinePnt; typedef enum evxPlacingType { VX_PLACING_NONE = -1, /* none , 2d spline default value */ VX_PLACING_VIEW = 0, /* view , 3d spline default value */ VX_PLACING_VECTOR = 1, /* vector */ VX_PLACING_WCS = 2, /* WCS */ VX_PLACING_PLANE = 3, /* PLANE */ }evxPlacingType; /* Spline command data */ typedef struct svxSplineData { /* ------------------common---------------- */ int SplineTyp; /* 0- through point, 1- control point (0 as default)) */ int Count; /* count of points */ svxSplinePnt *Pnts; /* point list */ int Degree; /* degree (3 as default) */ /* the following parameters used when SplineTyp = 0 */ int CreateCrvOpen; /* 1-create curve open, 0-create close curve(1 as default) */ int Fairing; /* fairing type(0-None, 1-Energy, 2-Variation, 3-Jerk, 4-Bend, 5-Tension) */ /* the following parameters used when SplineTyp = 1 */ int SingleSeg; /* single segment (0 as default) */ /* -------------placing adjustment ------------------*/ evxPlacingType PlacingTyp; /* placing adjustment type */ svxVector PlacingDir; /* Placing adjustment director (PlacingTyp = VX_PLACING_VECTOR)*/ /* the following parameters used when create 3d curve */ int UseOrient; /* 1-use orientation tool (0 as default, PlacingTyp = VX_PLACING_VIEW)*/ svxEntPath PlacingPln; /* reference fram (part entity path can be initialized as(PlacingPln.Count = 2; PlacingPln.Id={-1, idFace}) ) (PlacingTyp = VX_PLACING_PLANE) */ int PlacingPrj; /* 1-project to plane, else 0 (0 as default, PlacingTyp = VX_PLACING_PLANE) */ /* --------------setting------------------*/ /*the following parameters used when create 3d curve*/ svxEntPath AlignPlane; /* align plane (part entity path can be initialized as(alignEnt.Count = 2; alignEnt.Id={-1, idFace}) ) */ int PrjToPln; /* 1-project to the align plane, else 0 (1 as default) */ int PntOnPln; /* 1-points on align plane, else 0 (0 as default) */ int AlignTyp; /* Align type, 0-auto, 1-select, (1 as default) */ }svxSplineData; /* 3D ellipse & rectangle type */ typedef enum evxRectangleType { VX_RECT_2PT = 0, VX_RECT_WIDTH_HEIGHT = 1, VX_RECT_3PT = 2 } evxRectangleType; /* 3D ellipse & rectangle data */ typedef struct svxRectangleData { /* required inputs */ evxRectangleType type; /* type to make rectangle */ int idPlane; /* not required if "type" is VX_RECT_3PT */ int firstPtType; /* type of 1st input point (0 corner, 1 center) */ svxPoint pts[3]; /* 3 input points depend on "type" */ double width; /* width if "type" is VX_RECT_WIDTH_HEIGHT */ double height; /* height if "type" is VX_RECT_WIDTH_HEIGHT */ /* optional inputs */ double angle; /* rotation angle */ int prjFirstPt; /* 1 to project first point to plane, 0 not */ int parallelogram; /* 0 rectangle, 1 parallelogram */ } svxRectangleData; /* loft method */ typedef enum evxLoftType { VX_LOFT_PROFS, /* loft profiles in the order of profiles selection */ VX_LOFT_START_PNT_PROFS, /* loft based on starting point and profiles */ VX_LOFT_END_PNT_PROFS, /* loft based on ending point and profiles */ VX_LOFT_BOTH_PNTS_PROFS /* loft based on both end points and profiles */ } evxLoftType; /* loft profile data */ typedef struct svxLoftProfile { int idParent; /* id of profile curve's parent sketch or curve list */ int idProfile; /* id of profile curve for loft (curve, edge, parting line) */ int profDir; /* specify the orientation of the profile (0 = from start point to end point, otherwise 1) */ int useStartPnt; /* 1 = use the specified starting point, 0 = use the default starting point */ svxPoint startPnt; /* starting point coordinate, only setting when useStartPnt = 1 */ } svxLoftProfile; /* loft boundary constraints */ typedef struct svxLoftBndCons { int continuity; /* specify the continuity level at end of lost (0 = None, 1 = tangent, 2 = curvature) */ int direction; /* specify direction of loft at start and end profiles (0 = perpendicular, 1 = along edges) */ double weight; /* specify the amount of the loft affected by the enforcement of tangency */ int idFace; /* id of tangency, it's ignored when a single face on the edges or continuity = 0, 0 to use default face */ } svxLoftBndCons; /* loft data */ typedef struct svxLoftData { evxBoolType combine; /* combination method */ evxLoftType type; /* loft method */ int idStartParent; /* id of the parent entity where the starting point is located */ svxPoint startPnt; /* starting point coordinate */ int numProfs; /* number of profiles for loft */ svxLoftProfile *profs;/* list of profiles data */ int idEndParent; /* id of the parent entity where the ending point is located */ svxPoint endPnt; /* ending point coordinate */ svxLoftBndCons bndCons[2]; /* boundary constraints data of start and end profiles */ int endCap; /* end cap option (0-both, 1-start, 2-end, 3-none) */ int close; /* whether to generate a closed loft (1 = yes, 0 = no) */ vxName ftrName; /* feature name for "FtAllLft1", 0 default */ } svxLoftData; /* shape face offset data */ typedef struct svxFaceOffData { int type; /* face offset type (0 = constant, 1 = variable) */ /* the relevant setting for constant type (type = 0) */ int numFaces; /* number of faces for offset */ int *idFaces; /* list of id's of faces for offset */ double offset; /* offset vale */ /* the relevant setting for variable type (type = 1), face and offset value should be set in pairs */ int numOffsetSet; /* number of face offset set */ int *idFaceSet; /* list of id's of faces in offset set */ double *offsetSet; /* list of offset value in offset set */ int sideFaces; /* whether to create side faces (0 = no, 1 = create, 2 = force) */ int extension; /* extension type of offset face (0 = linear, 1 = circular, 2 = reflect, 3 = curvature diminishing) */ int intersect; /* whether to remove self intersecting faces (0 = no, 1 = remove) */ vxName ftrName; /* feature name for "FtOffsetFace1", 0 default */ } svxFaceOffData; /* hatch pattern method */ /* Note: These hatch patterns cannot be described. Please open the ZW3D cosmetic-sketch or cross-hatch command to see. typedef enum evxHatchPtnType { VX_HATCH_PATTERN_ANSI31, /* ANSI31 */ VX_HATCH_PATTERN_ANSI32, /* ANSI32 */ VX_HATCH_PATTERN_ANSI33, /* ANSI33 */ VX_HATCH_PATTERN_ANSI34, /* ANSI34 */ VX_HATCH_PATTERN_ANSI35, /* ANSI35 */ VX_HATCH_PATTERN_ANSI36, /* ANSI36 */ VX_HATCH_PATTERN_ANSI37, /* ANSI37 */ VX_HATCH_PATTERN_ANSI38, /* ANSI38 */ VX_HATCH_PATTERN_SHADOW_PLATE, /* SHADOW_PLATE */ VX_HATCH_PATTERN_BRICK, /* BRICK */ VX_HATCH_PATTERN_CORK, /* CORK */ VX_HATCH_PATTERN_CROSS, /* CROSS */ VX_HATCH_PATTERN_DASH, /* DASH */ VX_HATCH_PATTERN_LIMESTONE, /* LIMESTONE */ VX_HATCH_PATTERN_DOTS, /* DOTS */ VX_HATCH_PATTERN_EARTH, /* EARTH */ VX_HATCH_PATTERN_EXPANSION, /* EXPANSION */ VX_HATCH_PATTERN_GRASS, /* GRASS */ VX_HATCH_PATTERN_GRATE, /* GRATE */ VX_HATCH_PATTERN_HEXAGON, /* HEXAGON */ VX_HATCH_PATTERN_HONEYCOMB, /* HONEYCOMB */ VX_HATCH_PATTERN_SQUARES, /* SQUARES */ VX_HATCH_PATTERN_MOONYANG, /* MOONYANG */ VX_HATCH_PATTERN_BOX, /* BOX */ VX_HATCH_PATTERN_BRASS, /* BRASS */ VX_HATCH_PATTERN_BRSTONE, /* BRSTONE */ VX_HATCH_PATTERN_CLAY, /* CLAY */ VX_HATCH_PATTERN_ESCHER, /* ESCHER */ VX_HATCH_PATTERN_GRAVEL, /* GRAVEL */ VX_HATCH_PATTERN_HOUND, /* HOUND */ VX_HATCH_PATTERN_INSUL, /* INSUL */ VX_HATCH_PATTERN_ACAD_ISO02W100, /* ACAD_ISO02W100 */ VX_HATCH_PATTERN_ACAD_ISO03W100, /* ACAD_ISO03W100 */ VX_HATCH_PATTERN_ACAD_ISO04W100, /* ACAD_ISO04W100 */ VX_HATCH_PATTERN_ACAD_ISO05W100, /* ACAD_ISO05W100 */ VX_HATCH_PATTERN_ACAD_ISO06W100, /* ACAD_ISO06W100 */ VX_HATCH_PATTERN_ACAD_ISO07W100, /* ACAD_ISO07W100 */ VX_HATCH_PATTERN_ACAD_ISO08W100, /* ACAD_ISO08W100 */ VX_HATCH_PATTERN_ACAD_ISO09W100, /* ACAD_ISO09W100 */ VX_HATCH_PATTERN_ACAD_ISO10W100, /* ACAD_ISO10W100 */ VX_HATCH_PATTERN_ACAD_ISO11W100, /* ACAD_ISO11W100 */ VX_HATCH_PATTERN_ACAD_ISO12W100, /* ACAD_ISO12W100 */ VX_HATCH_PATTERN_ACAD_ISO13W100, /* ACAD_ISO13W100 */ VX_HATCH_PATTERN_ACAD_ISO14W100, /* ACAD_ISO14W100 */ VX_HATCH_PATTERN_ACAD_ISO15W100, /* ACAD_ISO15W100 */ VX_HATCH_PATTERN_JIS_LC_20, /* JIS_LC_20 */ VX_HATCH_PATTERN_JIS_LC_20A, /* JIS_LC_20A */ VX_HATCH_PATTERN_JIS_LC_8A, /* JIS_LC_8A */ VX_HATCH_PATTERN_JIS_LC_8, /* JIS_LC_8 */ VX_HATCH_PATTERN_JIS_RC_10, /* JIS_RC_10 */ VX_HATCH_PATTERN_JIS_RC_15, /* JIS_RC_15 */ VX_HATCH_PATTERN_JIS_RC_18, /* JIS_RC_18 */ VX_HATCH_PATTERN_JIS_RC_30, /* JIS_RC_30 */ VX_HATCH_PATTERN_JIS_STN_1E, /* JIS_STN_1E */ VX_HATCH_PATTERN_JIS_STN_2_5, /* JIS_STN_2_5 */ VX_HATCH_PATTERN_JIS_WOOD, /* JIS_WOOD */ VX_HATCH_PATTERN_LINE, /* LINE */ VX_HATCH_PATTERN_MUDST, /* MUDST */ VX_HATCH_PATTERN_NET, /* NET */ VX_HATCH_PATTERN_NET3, /* NET3 */ VX_HATCH_PATTERN_PLAST, /* PLAST */ VX_HATCH_PATTERN_PLASTI, /* PLASTI */ VX_HATCH_PATTERN_SACNCR, /* SACNCR */ VX_HATCH_PATTERN_STARS, /* STARS */ VX_HATCH_PATTERN_STEEL, /* STEEL */ VX_HATCH_PATTERN_SWAMP, /* SWAMP */ VX_HATCH_PATTERN_TRANS, /* TRANS */ VX_HATCH_PATTERN_TRIANG, /* TRIANG */ VX_HATCH_PATTERN_ZIGZAG, /* ZIGZAG */ VX_HATCH_PATTERN_SOLID, /* SOLID */ } evxHatchPtnType; /* hatch type */ typedef enum evxHatchType { VX_HATCH_CUSTOM = -1, /* custom hatch style */ VX_HATCH_STANDARD, /* from standard */ VX_HATCH_ANSI, /* hatch style (ANSI) */ VX_HATCH_ISO, /* hatch style (ISO) */ VX_HATCH_DIN, /* hatch style (DIN) */ VX_HATCH_JIS, /* hatch style (JIS) */ VX_HATCH_GB, /* hatch style (GB) */ } evxHatchType; /* line width */ typedef enum evxLineWidth { VX_WIDTH_UNDEFINED, /* undefined */ VX_WIDTH_018, /* 0.18 mm */ VX_WIDTH_025, /* 0.25 mm */ VX_WIDTH_035, /* 0.35 mm */ VX_WIDTH_050, /* 0.50 mm */ VX_WIDTH_070, /* 0.70 mm */ VX_WIDTH_100, /* 1.00 mm */ } evxLineWidth; /* hatch attributes */ typedef struct svxHatchAttr { evxHatchType type; /* hatch type default: VX_HATCH_STANDARD */ evxHatchPtnType pattern; /* hatch pattern method default: VX_HATCH_PATTERN_ANSI31 */ double angle; /* angle attribute default: 0.0 */ double space; /* spacing attribute default: 3.175 */ svxPoint2 origin; /* origin point default: {0.0,0.0} */ evxColor color; /* color attribute default: VX_COLOR_BLACK */ evxLineWidth width; /* line width default: VX_WIDTH_018 */ } svxHatchAttr; /* pattern method */ typedef enum evxPatternType { VX_PATTERN_LINEAR, /* linear pattern */ VX_PATTERN_CIRCULAR, /* circular pattern */ VX_PATTERN_PNT_TO_PNT, /* irregular pattern of objects from point to point */ VX_PATTERN_AT_PATTERN, /* pattern of objects at locations defined by a previous pattern */ VX_PATTERN_AT_CURVES, /* pattern in space using one or more input curves */ VX_PATTERN_AT_FACE, /* pattern in space using an existing surface */ VX_PATTERN_POLYGON, /* polygon pattern */ VX_PATTERN_FILL_PATTERN, /* fill pattern */ VX_PATTERN_BY_VAR, /* feature pattern by variant parameters(just use pattern feature command) */ } evxPatternType; typedef struct svxPtnVarTbl { vxName dimName; /* the name of the dimension to change the value */ int cntCell; /* count of cells to be set, 0 to just use first direction */ int *pCell; /* the instances position id (exp.(0,1)-(id:1),(0,2)-(id:2),(1,0)-(id:10000),(2,5)-(id:20005). NULL to just use first direction. note: the first direction is column, the second dirction is row */ double *pVal; /* the dimension value to be set. if cntCell is 0 or pCell is NULL, the count of the pVal is (num[0] -1) (set all cells of the dimension), else the count of the pVal is cntCell (set the dimension value of the specified cell) */ }svxPtnVarTbl; /* pattern data */ typedef struct svxPtnData { evxBoolType combine; /* combination method */ evxPatternType type; /* pattern method */ union PtnData { struct svxLinear /* linear pattern */ { int useSecondDir; /* whether to use second direction (0 = no, 1 = yes) */ svxVector dir[2]; /* first and second direction, the second direction is ignored if useSecondDir = 0 */ int num[2]; /* pattern number in both direction, the second direction is ignored if useSecondDir = 0 */ double spacing[2]; /* pattern spacing in both direction, the second direction is ignored if useSecondDir = 0 */ } linear; struct svxCircular /* circular pattern */ { svxAxis axis; /* rotation axis for the pattern */ double diameter; /* rotation diameter for the pattern */ int useSecondDir; /* whether to use second direction (0 = no, 1 = yes) */ int num[2]; /* pattern number in both direction, the second direction is ignored if useSecondDir = 0 */ double angle; /* spacing between the instances measured in degrees */ double spacing; /* pattern spacing in second direction, the value is ignored if useSecondDir = 0 */ } circular; struct svxPolygon /* polygon pattern */ { svxAxis axis; /* central axis for the pattern */ int numSides; /* number of sides, it has to be greater than 2 */ int spacingType; /* pattern ways (0 = number per side, 1 = pitch between instances) */ int number; /* number of per side, used only when spacingType = 0 */ double pitch; /* pitch between instances, used only when spacingType = 1 */ int useSecondDir; /* whether to use second direction (0 = no, 1 = yes) */ int numConcentric; /* number of concentric polygons, the value is ignored if useSecondDir = 0 */ double spacing; /* spacing of between rings radiating outward, the value is ignored if useSecondDir = 0 */ } polygon; struct svxPntToPnt /* point to point pattern */ { int numPnts; /* number of point, parent and point value should be set in pairs */ int *idParPnt; /* list of id's of the parent of point, set id to 0 when no parent object exists */ svxPoint *pnt; /* list of point coordinates */ } PntToPnt; struct svxPattern /* pattern based on pattern */ { int idPtnFtr; /* id of pattern feature */ } pattern; struct svxPtnCrv /* curve pattern */ { int curveType; /* curve method (0 = 1 curve, 1 = 2 curves together, 2 = 2 curves across, 3 = 3~4 curves) */ int numCrvs; /* number of curves, can't go beyond 4 curves */ int *idCrvs; /* list of id's of curves */ int useSecondDir; /* whether to use second direction (0 = no, 1 = yes) */ int num[2]; /* pattern number in both direction, the second direction is ignored if useSecondDir = 0 */ double spacing[2]; /* pattern spacing in second direction, the second direction is ignored if useSecondDir = 0 */ } ptnCrv; struct svxPtnFace /* face pattern */ { int idFace; /* id of face */ int useSecondDir; /* whether to use second direction (0 = no, 1 = yes) */ int num[2]; /* pattern number in both direction, the second direction is ignored if useSecondDir = 0 */ double spacing[2]; /* pattern spacing in second direction, the second direction is ignored if useSecondDir = 0 */ } ptnFace; struct svxPntFill /* fill pattern */ { int type; /* type (0 = square, 1 = diamond, 2 = hexagon, 3 = concentric, 4 = spiral, 5 = along sketch curves) */ int idSketch; /* id of sketch */ double spacing; /* pattern spacing */ double angle; /* rotation angle, the value is ignored when type = 5 */ double border; /* border, the value is ignored when type = 5 */ double radius; /* rotation radius, used only when type is 3 or 4 */ } ptnFill; struct svxPntVar /* feature pattern by variant parameters when inpData.type = VX_PATTERN_BY_VAR */ { int useSecondDir; /* whether to use second direction (0 = no, 1 = yes) */ int num[2]; /* pattern number in both direction, the second direction is ignored if useSecondDir = 0 */ } ptnVar; } ptnData; int useBasePnt; /* whether to use base point (0 = no, 1 = yes) */ int idParent; /* id of the parent entity of point, set id to 0 when no parent object exists */ svxPoint basePnt; /* base point, the value is ignored if useBasePnt = 0 */ int relocateBase; /* whether to relocate base object (0 = no, 1 = yes) */ int deriveType; /* derive method (0 = by spacing and number, 1 = by number, 2 = by spacing) */ double minPer; /* percentage of the minimum spacing, instances less than this will be deleted */ vxName ftrName; /* feature name, 0 default */ int cntSkip; /* number of the instances to be skipped */ int *skipList; /* the instances position id (exp.(0,1)-(id:1),(0,2)-(id:2),(1,0)-(id:10000),(2,5)-(id:20005) note: the first direction is column, the second direction is row. since 2700 the first direction is row, the second direction is column. If you don't know how to set the skip id, you can set the following two parameters and initialize skipList = NULL */ int *firstTogglePos; /* the position id of the patterned entities in the first direction (start form 0, the nTH position in the first direction) */ int *secondTogglePos; /* the position id of the patterned entities in the second direction (start form 0, the nTH position in the second direction) can be null if just pattern the first direction. such as: linear.num = {3,2}, linear.dir[0] = {1,0,0}, linear.dir[1] = {0, 1, 0} ----------- y ^ O O * if the '*' should be skipped, firstTogglePos[0] = 2, secondTogglePos[0] = 1 | O & O if the '&' should be skipped, firstTogglePos[0] = 1, secondTogglePos[0] = 0 |-------> x } svxPtnData; /* pattern geometry data */ typedef struct svxPtnGeom { svxPtnData *inpData;/* base input data of pattern geometry command */ int nonAssoCopy; /* non-associative copy (0 = no, 1 = yes), used only for geometry pattern */ }svxPtnGeom; /* pattern feature data */ typedef struct svxPtnFtr { svxPtnData *inpData; /* base input data of pattern feature command */ int inc; /* 0-the value to be set, 1- the value to be increased */ int cntDim; /* count dimension to change the value */ svxPtnVarTbl *pTableVal; /* the table dimension information */ }svxPtnFtr;
general part data
/* part dimension attribute */ typedef struct svxPartDimAttr { evxColor color; /* color of dimension */ int decimal; /* number of decimal places of dimension (0 ~ 5) */ } svxPartDimAttr; /* global settings */ typedef enum evxGlobal { VX_TOLERANCE = 1, /* proximity tolerance (double) */ VX_AUTO_MERGE = 2, /* 1=auto-merge shells before boolean (int) */ VX_EXACT_MATCH = 3, /* 1=exact label matching enabled; 0=disabled (int) */ VX_LOCALCOORDIDX = 4, /* Local coordinate */ VX_CONS_DELAY_SOLVE = 5, /* 1-delay solve the constraint (int) */ VX_DIM_ATTR = 6, /* part dimension attribute (svxPartDimAttr) */ } evxGlobal; /* attribute data type */ typedef enum evxAttributeType { VX_ATTR_STRING = 0, /* string */ VX_ATTR_BOOL = 1, /* bool */ VX_ATTR_INT = 2, /* integer */ VX_ATTR_REAL = 3, /* real number */ VX_ATTR_DATE = 4, /* date/time */ } evxAttributeType; /* standard attribute data */ typedef struct svxAttribute { char label[64]; /* attribute label */ char data[256]; /* attribute data */ double dValue; /* value for bool, integer, real number, date type */ char type; /* attribute type (evxAttributeType) */ char sub_type; /* sub type for real number type (use input type of evxNumType) */ char unit; /* unit type for non-constant real number (evxUnitType, evxAngUnitType...) */ } svxAttribute; /* part attribute structure */ typedef struct svxPartAttribute { int Version; int UserAttributeCount; svxAttribute UserAttribute[64]; svxAttribute Name; svxAttribute Number; svxAttribute Partclass; svxAttribute Designer; svxAttribute Cost; svxAttribute Supplier; svxAttribute Description; svxAttribute Keyword; svxAttribute Manager; svxAttribute Material; svxAttribute Startdate; svxAttribute Enddate; svxAttribute Derived; svxAttribute No_section; /* set "data" to "yes" or "no" */ svxAttribute No_hatch; /* set "data" to "yes" or "no" */ svxAttribute Dimen[20]; svxAttribute No_bom; /* set "data" to "yes" or "no" */ svxAttribute File_path; svxAttribute No_rootshow; /* set "data" to "yes" or "no" */ } svxPartAttribute; /* 3D Block Type */ typedef enum evxBlockType { VX_BLOCK_UNDEFINED=0, /* undefined 3D block type */ VX_BLOCK_FACETS=1, /* block of 3D triangular facets */ VX_BLOCK_POINTS=2 /* block of 3D points (i.e. point cloud) */ } evxBlockType; /* part component/shape alignment */ typedef enum evxAlignType { VX_ALIGN_COINCIDENT = 0, VX_ALIGN_TANGENT = 1, VX_ALIGN_CONCENTRIC = 2, VX_ALIGN_PARALLEL = 3, VX_ALIGN_PERPENDICULAR = 4, VX_ALIGN_ANGLE = 5 } evxAlignType; typedef enum evxAlignInterference { VX_INTERFERENCE_NONE = 0, VX_INTERFERENCE_HIGHLIGHT = 1, VX_INTERFERENCE_STOP_AT = 2, VX_INTERFERENCE_ADD_ALIGN = 3 } evxAlignInterference; typedef struct svxAlign { svxData Entity1; /* "isPntOnCrv" or "isPntOnFace" required */ svxData Entity2; /* "isPntOnCrv" or "isPntOnFace" required ** point must be defined in active part space ** (see cvxPntOnFace()) evxAlignType Type; /* alignment type */ double Offset; /* distance between alignment entities */ double Angle; /* angle between alignment entities */ int isOpposite; /* 1 to make entities opposite facing, else 0 */ int ShowExistingAlign; evxAlignInterference Interference; } svxAlign; typedef struct svxMassProp { double Density; /* Density (kg/mm^3) */ double Area; /* Area (mm^2) */ double Volume; /* Volume (mm^3) */ double Mass; /* Mass (kg) */ svxPoint Center; /* Centroid (i.e. Center of Gravity) */ svxVector Axis[3]; /* Principal axes relative to global xyz frame */ double Im[6]; /* Moments of inertia relative to xyz axes */ double Ip[3]; /* Moments of inertia relative to principal axes */ double Rad[3]; /* Radii of gyration relative to principal axes */ } svxMassProp; typedef struct svxPrfAreaProp { svxPoint2 org; /* Origin for caculating the properties */ svxPoint2 centroid;/* Centroid */ double area; /* Area */ double Ix; /* Inertia about x axis at org*/ double Iy; /* Inertia about y axis at org*/ double Ir; /* Inertia about z axis at org */ double Ixy; /* Product of Inertia at org */ double Kx; /* Radius of Gyration about x axis at org */ double Ky; /* Radius of Gyration about y axis at org */ double Kr; /* Radius of Gyration about z axis at org */ double Pmin; /* Principal axis of which inertia is minimum */ double Pmax; /* Principal axis of which inertia is maximum */ double Imin; /* Inertia about Pmin */ double Imax; /* Inertia about Pmax */ } svxPrfAreaProp;
file export data
typedef enum evxImgColorMode { VX_EXPORT_IMG_COLOR_MODE_24BITS = 0, VX_EXPORT_IMG_COLOR_MODE_8BITS = 1, VX_EXPORT_IMG_COLOR_MODE_COlORIZED = 0, VX_EXPORT_IMG_COLOR_MODE_MONOCHROME = 2, VX_EXPORT_IMG_COLOR_MODE_GRAYSCALE = 3 } evxImgColorMode; typedef enum evxImgBkgndMode { VX_EXPORT_IMG_BKGND_MODE_CURRENT = 0, VX_EXPORT_IMG_BKGND_MODE_CUSTOM } evxImgBkgndMode; typedef enum evxImgRangeMode { VX_EXPORT_IMG_RANGE_MODE_NORMAL = 0, VX_EXPORT_IMG_RANGE_MODE_EXTENTS, VX_EXPORT_IMG_RANGE_MODE_CUSTOM } evxImgRangeMode; typedef enum evxImgType { VX_EXPORT_IMG_TYPE_BMP = 1, VX_EXPORT_IMG_TYPE_GIF, VX_EXPORT_IMG_TYPE_PNG, VX_EXPORT_IMG_TYPE_TIFF, VX_EXPORT_IMG_TYPE_JPEG } evxImgType; typedef enum evxPdfType { VX_EXPORT_PDF_TYPE_RASTER = 1, /* load the raster image into pdf */ VX_EXPORT_PDF_TYPE_VECTOR, /* create the vector graphic data into pdf (set this value to Sheet file)*/ VX_EXPORT_PDF_TYPE_OBJECT /* export type is 3D */ } evxPdfType; typedef enum evxPdfRangeMode { VX_EXPORT_PDF_RANGE_MODE_NORMAL = 0, /* export are-display */ VX_EXPORT_PDF_RANGE_MODE_EXTENTS, VX_EXPORT_PDF_RANGE_MODE_CUSTOM /* export are-windows */ } evxPdfRangeMode; typedef enum evxExportType { VX_EXPORT_TYPE_IMG = 1, /* the data is defined by struct svxImgData */ VX_EXPORT_TYPE_PDF, /* the data is defined by struct svxPdfData */ VX_EXPORT_TYPE_GRP, /* the data is defined by struct svxGRPData */ VX_EXPORT_TYPE_DWG, /* the data is defined by struct svxDWGData */ VX_EXPORT_TYPE_IGES, /* the data is defined by struct svxIGESData */ VX_EXPORT_TYPE_STEP, /* the data is defined by struct svxSTEPData */ VX_EXPORT_TYPE_JT, /* the data is defined by struct svxJTData */ VX_EXPORT_TYPE_PARA_TEXT, /* the data is defined by struct svxPARAData */ VX_EXPORT_TYPE_PARA_BINARY, /* the data is defined by struct svxPARAData */ VX_EXPORT_TYPE_CAT5_PART, /* the data is defined by struct svxCAT5Data */ VX_EXPORT_TYPE_CAT5_ASM, /* the data is defined by struct svxCAT5Data */ VX_EXPORT_TYPE_HTML, /* the data is defined by struct svxHTMLData */ } evxExportType; typedef enum evxExportExcludeGeom { VX_EXCLUDE_CURVE = 0x1, VX_EXCLUDE_SURFACE = 0x2, VX_EXCLUDE_SOLID = 0x4, VX_EXCLUDE_PLANE = 0x8, VX_EXCLUDE_HATCH = 0x10, VX_EXCLUDE_DIMEN = 0x20, VX_EXCLUDE_TEXT = 0x40, VX_EXCLUDE_BLANKED = 0x80, } evxExportExcludeGeom; typedef struct svxImgData { evxImgType Type; evxImgColorMode ColorMode; unsigned int Width; unsigned int Height; unsigned int Quality; evxImgBkgndMode BkgndMode; svxColor Background; evxImgRangeMode RangeMode; svxBndBox Rect; } svxImgData; typedef struct svxPdfData { evxPdfType Type; /*export pdf type*/ int Color; /*all black color or not, 1- MONOCHROME, 2-GRAYSCALE, 3-COLORIZED*/ int Font; /*embed font or not, can be ignored */ int Dpi; /*DPI of pdf*/ int TextOutStyle; /* text output 1:text, 0:polygon lines */ float LineWidthScale; /* line width scale factor(0.01~10) */ float PaperWidth; /*width of page*/ float PaperHeight; /*height of the page*/ evxPdfRangeMode RangeMode; /*export mode, VX_EXPORT_PDF_RANGE_MODE_NORMAL-Rect can be ignored*/ svxBndBox Rect; /*export extent*/ char Author[128]; /*author of pdf*/ char Title[128]; /*title of pdf*/ char Subject[128]; /*subject of pdf*/ char Password[128]; /*password of pdf*/ char Description[8192]; /*description of pdf*/ int ExportMultiSheet; /* export multiple sheets to one pdf file, 1- active sheet, 2-one pdf for each, 3-one pdf for all (default: 1)*/ } svxPdfData; typedef struct svxSTL { char *name; /* name */ int nFacet; /* number of facet */ svxTriangle *facets; /* Array of STLfacet */ double dTol; /* Tolerance to use when extracting facets */ } svxSTL; /* version of DWG */ typedef enum evxDWGVer { VX_DWG_VERSION_2018 = 1, VX_DWG_VERSION_2013 = 2, VX_DWG_VERSION_2010 = 3, VX_DWG_VERSION_2007, VX_DWG_VERSION_2004, VX_DWG_VERSION_2000, VX_DWG_VERSION_R14, VX_DWG_VERSION_R13, VX_DWG_VERSION_R11_R12, }evxDWGVer; typedef struct svxGRPData { char ExportType; /* 0-All objects, 1-Specified entities */ int EntCnt; /* the count of export entities if ExportType = 1 */ int *EntList; /* the specified entities id list if ExportType = 1 */ int ExcludeGeom; /* filter geometry type(evxExportExcludeGeom), like this: VX_EXCLUDE_CURVE | VX_EXCLUDE_SURFACE */ }svxGRPData; /* exclude attribute(no color) of *.dwg/*.dxf */ typedef enum evxExportExcludeWidthStyle { VX_EXCLUDE_WIDTH_STYLE_1=0x1, /* width-Light | style-Solid */ VX_EXCLUDE_WIDTH_STYLE_2=0x2, /* width-Thin | style-Dot */ VX_EXCLUDE_WIDTH_STYLE_3=0x4, /* width-Medium | style-Dash-Dot */ VX_EXCLUDE_WIDTH_STYLE_4=0x8, /* width-Thick | style-Long-Dash */ VX_EXCLUDE_WIDTH_STYLE_5=0x10, /* width-Heavy | style-Dash */ } evxExportExcludeWidthStyle; /* exclude attribute(color) of *.dwg/*.dxf */ typedef enum evxExportExcludeColor { VX_EXCLUDE_COLOR_GREEN = 0x1, /* The color of the 1st row,1st column (R=0, G=255, B=0) */ VX_EXCLUDE_COLOR_RED = 0x2, /* The color of the 1st row,2nd column (R=255, G=0, B=0) */ VX_EXCLUDE_COLOR_BROWN = 0x4, /* The color of the 1st row,3rd column (R=160, G=96, B=0) */ VX_EXCLUDE_COLOR_GOLDENROD = 0x8, /* The color of the 2nd row,1st column (R=255, G=188, B=0) */ VX_EXCLUDE_COLOR_MED_BLUE = 0x10, /* The color of the 2nd row,2nd column (R=0, G=255, B=255) */ VX_EXCLUDE_COLOR_DARK_MAGENTA = 0x20, /* The color of the 2nd row,3rd column (R=255, G=0, B=255) */ VX_EXCLUDE_COLOR_DARK_GREY = 0x40, /* The color of the 3rd row,1st column (R=96, G=96, B=96) */ VX_EXCLUDE_COLOR_DARK_BLUE = 0x80, /* The color of the 3rd row,2nd column (R=0, G=0, B=255) */ VX_EXCLUDE_COLOR_VIOLET = 0x100, /* The color of the 3rd row,3rd column (R=140, G=140, B=235) */ VX_EXCLUDE_COLOR_LIGHT_GREEN = 0x200, /* The color of the 4th row,1st column (R=160, G=255, B=160) */ VX_EXCLUDE_COLOR_LIGHT_BLUE = 0x400, /* The color of the 4th row,2nd column (R=160, G=255, B=255) */ VX_EXCLUDE_COLOR_ROSE = 0x800, /* The color of the 4th row,3rd column (R=255, G=160, B=160) */ VX_EXCLUDE_COLOR_LIGHT_MAGENTA = 0x1000, /* The color of the 5th row,1st column (R=255, G=160, B=255) */ VX_EXCLUDE_COLOR_LIGHT_GREY = 0x2000, /* The color of the 5th row,2nd column (R=160, G=160, B=160) */ VX_EXCLUDE_COLOR_WHITE = 0x4000, /* The color of the 5th row,3rd column (R=255, G=255, B=255) */ } evxExportExcludeColor; typedef struct svxDWGData { evxDWGVer Version; /* version of DWG */ char FileType; /* export type of file. 0-DWG, 1- DFX(ASCLL), 2-DFX(Binary) make sure the file extension type is same with FileType */ char ExportType; /* 0-All objects, 1-Specified entities */ int EntCnt; /* the count of export entities if ExportType = 1 */ int *EntList; /* the specified entities id list if ExportType = 1 */ char ExportLayer; /* 0-All layers, 1- Specified layers */ int LayerCnt; /* the count of export layers if ExportLayer = 1 */ int* LayerList; /* the specified layers id list if ExportLayer = 1 */ int ExcludeGeom; /* filter geometry type(evxExportExcludeGeom), like this: VX_EXCLUDE_CURVE | VX_EXCLUDE_SURFACE */ int ExcludeWidth; /* filter width type(evxExportExcludeWidthStyle), like this: VX_EXCLUDE_WIDTH_STYLE_1 | VX_EXCLUDE_WIDTH_STYLE_2 */ int ExcludeStyle; /* filter style type(evxExportExcludeWidthStyle), like this: VX_EXCLUDE_WIDTH_STYLE_1 | VX_EXCLUDE_WIDTH_STYLE_2 */ int ExcludeColor; /* filter color type(evxExportExcludeColor), like this: VX_EXCLUDE_COLOR_GREEN | VX_EXCLUDE_COLOR_RED */ }svxDWGData; typedef struct svxIGESData { char Coordinate; /* 0-World, 1- Local (0-default)*/ char ExportType; /* 0-All objects, 1-Specified entities */ int EntCnt; /* the count of export entities if ExportType = 1 */ int *EntList; /* the specified entities id list if ExportType = 1 */ int ExcludeGeom; /* filter geometry type(evxExportExcludeGeom), like this: VX_EXCLUDE_CURVE | VX_EXCLUDE_SURFACE */ } svxIGESData; typedef struct svxSTEPData { char AppProtocol; /* 0-AP203, 1-AP214 (1-default), 2-AP242 */ char OutPut; /* 0-PART, 1-Assembly (1-default) */ char ExportType; /* 0-All objects, 1-Specified entities */ int EntCnt; /* the count of export entities if ExportType = 1 */ int *EntList; /* the specified entities id list if ExportType = 1 */ int ExcludeGeom; /* filter geometry type(evxExportExcludeGeom), like this: VX_EXCLUDE_CURVE | VX_EXCLUDE_SURFACE */ } svxSTEPData; /* version of JT */ typedef enum evxJTVer { VX_JT_VER_6_4, /* version: 6.4 */ VX_JT_VER_7_0, /* version: 7.0 */ VX_JT_VER_8_0, /* version: 8.0 */ VX_JT_VER_8_1, /* version: 8.1 */ VX_JT_VER_8_2, /* version: 8.2 */ VX_JT_VER_8_3, /* version: 8.3 */ VX_JT_VER_9_0, /* version: 9.0 */ VX_JT_VER_9_1, /* version: 9.1 */ VX_JT_VER_9_2, /* version: 9.2 */ VX_JT_VER_9_3, /* version: 9.3 */ VX_JT_VER_9_4, /* version: 9.4 */ VX_JT_VER_9_5, /* version: 9.5 */ VX_JT_VER_10_0, /* version: 10.0 */ VX_JT_VER_10_1, /* version: 10.1 */ VX_JT_VER_10_2, /* version: 10.2 */ VX_JT_VER_10_3, /* version: 10.3 */ VX_JT_VER_10_4, /* version: 10.4 */ }evxJTVer; typedef struct svxJTData { evxJTVer Version; /* JT version (VX_JT_VER_10_0-default) */ char Structure; /* 0-Monolithic, 1-Per part, 2-Full shatter (0-default) */ char Writetype; /* 0-All, 1-Parts only, 2-Assembly only (0-default) */ char ExportType; /* 0-All objects, 1-Specified entities */ int EntCnt; /* the count of export entities if ExportType = 1 */ int *EntList; /* the specified entities id list if ExportType = 1 */ int ExcludeGeom; /* filter geometry type(evxExportExcludeGeom), like this: VX_EXCLUDE_CURVE | VX_EXCLUDE_SURFACE */ } svxJTData; typedef struct svxPARAData { char Coordinate; /* 0-World, 1-Local (0-default)*/ char OutPut; /* 0-Assembly, 1-Part (1-default) */ int FileVer; /* file version (7 ~ 30, 19-default) */ int WriteFreeCrv; /* whether to write free curve (1 = yes, 0 = no) */ int WriteFreePnt; /* whether to write free point (1 = yes, 0 = no) */ int HealErr; /* whether to auto heal topology error (1 = yes, 0 = no) */ char ExportType; /* 0-All objects, 1-Specified entities */ int EntCnt; /* the count of export entities if ExportType = 1 */ int *EntList; /* the specified entities id list if ExportType = 1 */ int ExcludeGeom; /* filter geometry type(evxExportExcludeGeom), like this: VX_EXCLUDE_CURVE | VX_EXCLUDE_SURFACE */ } svxPARAData; typedef struct svxCAT5Data { int FileVer; /* file version (15 ~ 28, 24-default) */ char ExportType; /* 0-All objects, 1-Specified entities */ int EntCnt; /* the count of export entities if ExportType = 1 */ int *EntList; /* the specified entities id list if ExportType = 1 */ int ExcludeGeom; /* filter geometry type(evxExportExcludeGeom), like this: VX_EXCLUDE_CURVE | VX_EXCLUDE_SURFACE */ } svxCAT5Data; typedef struct svxHTMLData { int AutoZip; /* auto zip (1 = yes, 0 = no) */ char Password[128]; /* password of html file */ } svxHTMLData; typedef enum evxImportType { VX_IMPORT_TYPE_PARASOLID = 1, /* import .x_t file */ VX_IMPORT_TYPE_DWG_DXF = 2, /* import .dwg/.dxf file */ VX_IMPORT_TYPE_STEP, /* import .stp/.step file */ VX_IMPORT_TYPE_SAT, /* import .sat/.sab file */ VX_IMPORT_TYPE_IGES, /* import .igs/.iges file */ VX_IMPORT_TYPE_CATIA4, /* import .model/.exp... file */ VX_IMPORT_TYPE_CATIA5, /* import .CATPart/.CATProduct file */ VX_IMPORT_TYPE_INVENTOR, /* import .ipt/.iam file */ VX_IMPORT_TYPE_JT, /* import .jt file */ VX_IMPORT_TYPE_PROE_CERO, /* import .prt/.asm file */ VX_IMPORT_TYPE_SOLIDEDGE, /* import .par/.psm... file */ VX_IMPORT_TYPE_SOLIDWORKS, /* import .sldprt/.sldasm file */ VX_IMPORT_TYPE_UG, /* import .prt file */ VX_IMPORT_TYPE_STL, /* import .stl file */ VX_IMPORT_TYPE_GPH, /* import .3rd graphic format file */ }evxImportType; /* setting general properties if import stp/step file */ typedef struct svxImportSTEPData { int isAll; /* 1 is select all options, else 0 */ int isAutoSew; /* 1 is auto sew geometry, else 0 */ int isActivatePart; /* 1 is auto activate part, else 0. */ int isSubPart; /* 1 is auto create sub-part, else 0. */ int isTrimEdges; /* 1 is break trim edges, else 0. */ int isForceClose; /* 1 is Force close, else 0. */ int isSewParts; /* 1 is sew unique parts, else 0. */ int isHiddenEnts; /* 1 is read hidden entities, else 0. */ int isKeepDire; /* 1 is keep origin face direction, else 0. */ } svxImportSTEPData; /* setting properties if import prt file */ typedef struct svxImportUGData { int isAll; /* 1 is select all options, else 0 */ int isActivatePart; /* 1 is auto activate part, else 0. */ int isSubPart; /* 1 is auto create sub-part, else 0. */ int isAssoImport; /* 1 is associative import, else 0. */ int importMode; /* 1 is normal, else 2 is quick import. */ int isFreeCrv; /* 1 is free curve, else 0. */ int isFreePnt; /* 1 is free point, else 0. */ int isSheetBody; /* 1 is sheet body, else 0. */ int isHiddenEnt; /* 1 is hidden entity, else 0. */ int isSuppComp; /* 1 is suppressed component, else 0. */ int PMI; /* 1 is none, 2 is visual, 3 is semantic. */ } svxImportUGData; typedef struct svxImportData { evxImportType type; /* import type */ vxPath filePath; /* import file path */ int importTo; /* 0-current object, 1-new object, 2-new file */ int importTarget; /* 0-default, 1-part,2-sheet,3-sketch, if it doesn't need this param, use the default value.*/ void *reserved; /* reserved for future (should be NULL for API developers currently) */ void* general; /* setting general properties.NULL to use default. if the Type is VX_IMPORT_TYPE_UG, the data is svxImportUGData, if the Type is VX_IMPORT_TYPE_STEP, the data is svxImportSTEPData. */ }svxImportData;
CAM data
#define ZW_CAM_GOUGE 1 #define ZW_CAM_NOTGOUGE 0 typedef enum evxCmOpType { /*Drill:0-19*/ ZW_CAM_OPERATION_CENTER =0, ZW_CAM_OPERATION_DRILL, ZW_CAM_OPERATION_PECK, ZW_CAM_OPERATION_CHIP, ZW_CAM_OPERATION_REAM, ZW_CAM_OPERATION_BORE, ZW_CAM_OPERATION_FINEBORE, ZW_CAM_OPERATION_COUNTERBORE, ZW_CAM_OPERATION_COUNTERSINK, ZW_CAM_OPERATION_TAP, /*2X:20-34*/ ZW_CAM_OPERATION_PROFILECUT =20, ZW_CAM_OPERATION_SPIRAL, ZW_CAM_OPERATION_ZIGZAG, ZW_CAM_OPERATION_BOX, ZW_CAM_OPERATION_CONTOUR, ZW_CAM_OPERATION_CHAMFER, ZW_CAM_OPERATION_COURNER_ROUND, ZW_CAM_OPERATION_HELICAL, ZW_CAM_OPERATION_RAMP, ZW_CAM_OPERATION_TOPFACE_CUT, ZW_CAM_OPERATION_NESTING, ZW_CAM_OPERATION_INTER_PATH_MOVE, /*Turning:35-49*/ ZW_CAM_OPERATION_DRILL_TURNING=35, ZW_CAM_OPERATION_FACING, ZW_CAM_OPERATION_ROUGH, ZW_CAM_OPERATION_FINISH, ZW_CAM_OPERATION_GROOVE, ZW_CAM_OPERATION_THREADING, ZW_CAM_OPERATION_PARTOFF, /*3X:50-79*/ ZW_CAM_OPERATION_SPIRAL_ROUGH =50, ZW_CAM_OPERATION_ZIGZAG_ROUGH, ZW_CAM_OPERATION_BOX_ROUGH, ZW_CAM_OPERATION_CONTOUR_ROUGH, ZW_CAM_OPERATION_SPIRAL_CAST =55, ZW_CAM_OPERATION_ZIGZAG_CAST, ZW_CAM_OPERATION_BOX_CAST, ZW_CAM_OPERATION_CONTOUR_CAST, ZW_CAM_OPERATION_SPIRAL_FINISH=60, ZW_CAM_OPERATION_ZIGZAG_FINISH, ZW_CAM_OPERATION_BOX_FINISH, ZW_CAM_OPERATION_CONTOUR_FINISH, ZW_CAM_OPERATION_PROFILE_FINISH, ZW_CAM_OPERATION_SIDE, ZW_CAM_OPERATION_PEELING, ZW_CAM_OPERATION_ISO, ZW_CAM_OPERATION_3XISO, ZW_CAM_OPERATION_MAP, ZW_CAM_OPERATION_REST, ZW_CAM_OPERATION_PENCIL_TRACE, ZW_CAM_OPERATION_SCALLOP_REMOVAL, ZW_CAM_OPERATION_SURFACE_ENGRAVING, /*QM:80-109*/ ZW_CAM_OPERATION_SMOOTHFLOW =80, ZW_CAM_OPERATION_OFFSET2D, ZW_CAM_OPERATION_LACE_ROUGH, ZW_CAM_OPERATION_PLUNGE, ZW_CAM_OPERATION_PRE_DRILL, ZW_CAM_OPERATION_OFFSET3D, ZW_CAM_OPERATION_LACE_FINISH, ZW_CAM_OPERATION_ANGLE_LIMITING_FINISHING, ZW_CAM_OPERATION_DRIVE_CURVE, ZW_CAM_OPERATION_ZLEVEL, ZW_CAM_OPERATION_PENCIL, ZW_CAM_OPERATION_FLOW_3D, ZW_CAM_OPERATION_BULGE, ZW_CAM_OPERATION_ENGRAVE_2D, ZW_CAM_OPERATION_SMOOTHFLOW_HSM =95, ZW_CAM_OPERATION_OFFSET2D_HSM, ZW_CAM_OPERATION_LACE_HSM, ZW_CAM_OPERATION_FLOW_HSM, /*5X:110-129*/ ZW_CAM_OPERATION_PLANE =110, ZW_CAM_OPERATION_SWARF, ZW_CAM_OPERATION_DRIVECURVE_5X, ZW_CAM_OPERATION_INTERACTIVE, ZW_CAM_OPERATION_FLOW_5X, ZW_CAM_OPERATION_SIDE_5X, ZW_CAM_OPERATION_GUIDE_SURFACE_ISO }evxCmOpType; /*300-399*/ typedef enum evxCm2XOpAttr { ZW_CAM_2X_OPERATION_ATTR_NAME =300, ZW_CAM_2X_OPERATION_ATTR_FRAME, ZW_CAM_2X_OPERATION_ATTR_PATH_TOL, }evxCm2XOpAttr; /*400-499*/ typedef enum evxCmQmOpAttr { ZW_CAM_QM_OPERATION_ATTR_NAME =400, ZW_CAM_QM_OPERATION_ATTR_FRAME , ZW_CAM_QM_OPERATION_ATTR_PATH_TOL, ZW_CAM_QM_OPERATION_ATTR_SURF_THICK, ZW_CAM_QM_OPERATION_ATTR_Z_SURF_THICK, ZW_CAM_QM_OPERATION_ATTR_TOOL, ZW_CAM_QM_OPERATION_ATTR_MINTOOLHEIGHT, ZW_CAM_QM_OPERATION_ATTR_CLASS, ZW_CAM_QM_OPERATION_ATTR_LIMIT_TOPZ, ZW_CAM_QM_OPERATION_ATTR_LIMIT_BOTTOMZ, ZW_CAM_QM_OPERATION_ATTR_LIMIT_BOTTOM_CURVE, ZW_CAM_QM_OPERATION_ATTR_LIMIT_BOTTOM_CURVE_ZDISPLACEMENT, ZW_CAM_QM_OPERATION_ATTR_LIMIT_BOTTOM_CURVE_OFFSET }evxCmQmOpAttr; typedef enum evxCmCompAtrr { ZW_CAM_COMP_ATTR_FACES, ZW_CAM_COMP_ATTR_CLASS, ZW_CAM_COMP_ATTR_CDCOMP }evxCmCompAtrr; typedef enum evxCmCompClass { ZW_CAM_COMP_CLASS_PART, ZW_CAM_COMP_CLASS_CLAMP, ZW_CAM_COMP_CLASS_STOCK, ZW_CAM_COMP_CLASS_TABLE, ZW_CAM_COMP_CLASS_TOOLHOLDER, ZW_CAM_COMP_CLASS_ATTACHMENT }evxCmCompClass; typedef enum evxCmAttrValueType { ZW_CAM_ATTR_VALUE_TYPE_INVALID = -1, ZW_CAM_ATTR_VALUE_TYPE_INTEGER = 0, ZW_CAM_ATTR_VALUE_TYPE_DOUBLE, ZW_CAM_ATTR_VALUE_TYPE_STRING }evxCmAttrValueType; typedef struct svxCmAttrValue { evxCmAttrValueType type; int cnt; void * data; /* user is response to free this memory */ }svxCmAttrValue; typedef enum evxCmFtrType { ZW_CAM_FEATURE_SOLID = 1, /* solid feature */ ZW_CAM_FEATURE_POCKET = 2, /* pocket feature */ ZW_CAM_FEATURE_HOLE = 3, /* hole feature */ ZW_CAM_FEATURE_SLOT = 4, /* slot feature */ ZW_CAM_FEATURE_PROFILE = 5, /* profile feature */ ZW_CAM_FEATURE_STEP = 6, /* step feature */ ZW_CAM_FEATURE_SURFACE = 7, /* surface feature */ ZW_CAM_FEATURE_CHAMFER = 8, /* chamfer feature */ ZW_CAM_FEATURE_CRND = 9, /* cround feature */ ZW_CAM_FEATURE_FACE = 10, /* face feature */ ZW_CAM_FEATURE_BOSS = 11, /* boss feature */ ZW_CAM_FEATURE_FLAT = 12 /* flat region feature */ }evxCmFtrType; typedef enum evxCmToolType { CM_TOOL_TYPE_MILL, /* mill */ CM_TOOL_TYPE_FLAME, /* flame */ CM_TOOL_TYPE_DRILL, /* drill */ CM_TOOL_TYPE_TAP, /* tap */ CM_TOOL_TYPE_CENTER, /* center */ CM_TOOL_TYPE_CHAMFER, /* chamfer */ CM_TOOL_TYPE_REAM, /* ream */ CM_TOOL_TYPE_BORE /* bore */ }evxCmToolType; typedef enum evxCmToolSubType { CM_TOOL_SUBTYPE_NULL = -1, /* NULL */ CM_TOOL_SUBTYPE_BALLNOSE, /* taperball */ CM_TOOL_SUBTYPE_BULLNOSE, /* taperbull */ CM_TOOL_SUBTYPE_ENDNOSE /* end */ }evxCmToolSubType; typedef enum evxCmToolAttr { CM_TOOL_NAME = 400, CM_TOOL_TYPE, CM_TOOL_SUBTYPE, CM_TOOL_ID, CM_TOOL_LEN, CM_TOOL_CUTTERDIAMETER, CM_TOOL_HOLDER, /* tool register data in active machine */ CM_TOOLCHANGER_LOCATION, CM_TOOLCHANGER_DIAMETER, CM_TOOLCHANGER_HEIGHT }evxCmToolAttr; typedef enum evxCmFolderAttr { CM_FOLDER_NAME, CM_FOLDER_SUB }evxCmFolderAttr; typedef enum evxCmFtrAttr { CM_FEATURE_TYPE }evxCmFtrAttr; typedef enum evxCmFtrProfileType { PART, CONTAIN }evxCmFtrProfileType; typedef enum evxCmMachClass { TWO_AXIS_MC, THREE_AXIS_MC }evxCmMachClass; typedef enum evxCmMachType { CM_MACH_TYPE_VERTICAL, CM_MACH_TYPE_HORIZNTAL }evxCmMachType; typedef enum evxCmMachSubType { CM_MACH_SUBTYPE_ROTATING_HEAD, CM_MACH_SUBTYPE_ROTATING_TABLE }evxCmMachSubType; typedef enum evxCmMachCutCompenation { CM_MACH_CUT_COMPENSATION_NONE, CM_MACH_CUT_COMPENSATION_LENGTH, CM_MACH_CUT_COMPENSATION_CENTER }evxCmMachCutCompenation; typedef enum evxCmMachAttr { /* Definition Form */ CM_MACH_NAME, CM_MACH_CLASS, CM_MACH_TYPE, CM_MACH_SUBTYPE, CM_MACH_POST_CONFIGURATION, CM_MACH_CUT_COMPENSATION, /* Others */ }evxCmMachAttr; typedef enum evxCmFrameAttr { /* Definition Form */ CM_FRAME_NAME, CM_FRAME_CLEAR_Z, CM_FRAME_APPROACH_Z, CM_FRAME_RETRACT_Z }evxCmFrameAttr; typedef enum evxCmObjType { CM_OPERATION, CM_OPFOLDER, CM_TOOL, CM_MACHINE, CM_CMCOMP, CM_FTR, CM_FRAME, CM_OUT }evxCmObjType; typedef struct svxNcSetting { vxName machine; char filename[512]; vxName part_id; vxName programmer; vxName space; vxName tool_changes; vxName spd_fd; vxName tool_num; vxName coolant; char prog_comment[256]; } svxNcSetting; typedef enum evxCmOutFldType { CM_OUTFLD_FLD, CM_OUTFLD_NC }evxCmOutFldType; typedef enum evxCmOutType { CM_OUT_CL, CM_OUT_NC, CM_OUT_TOOL, CM_OUT_OP, CM_OUT_XML, CM_OUT_HTML }evxCmOutType; /* cam plan display mode */ typedef enum evxCmPlanDispMode { CM_ACTIVE_LOCK = 0, /* lock */ CM_ACTIVE_PART = 1, /* part */ CM_ACTIVE_PROCESS = 2, /* process */ CM_ACTIVE_SETUP = 3, /* setup */ CM_ACTIVE_TOOLPATH = 4, /* toolpath */ CM_ACTIVE_MACHINE = 5, /* machine */ CM_ACTIVE_TOOL = 6, /* tool */ CM_ACTIVE_TACTIC = 7, /* tactic */ CM_ACTIVE_SPDFD = 8, /* spdfd */ CM_ACTIVE_CMCOMP = 9, /* cmcomp */ CM_ACTIVE_FTRGRP = 10, /* ftrgrp */ CM_ACTIVE_FTRSET = 11, /* ftrset */ CM_ACTIVE_NEST = 12, /* nest */ CM_ACTIVE_WIZARD = 13, /* wizard */ CM_ACTIVE_PUNCH = 14, /* punch */ CM_ACTIVE_HOLDER = 15 /* holder */ }evxCmPlanDispMode; /* Sheet Format Attributes structure */ typedef struct svxDrawingAt { vxLongName templateName;/*template name*/ vxLongName configName; /* configuration name for drawing format */ char paper[16]; /* paper size name */ char useTemplate; /* 1-use template,0-use custom */ char useConfig; /* 1-use config,else 0 */ double width; /* drawing width */ double height; /* drawing height */ char useBorder; /* 1: use border created by the parameters,else 0 */ double margin[4]; /* margin[0] the margin of the top; margin[1] the margin of the right; margin[2] the margin of the bottom; margin[3] the margin of the left;*/ char bound; /* 0: no bound line;1: have bound line*/ char centerMark; /* 0: have no centering marks;1: have centering marks*/ char partition; /* 0: do not divide the border, 1: divide the border */ int partNum[2]; /* partNum[0]: the number of the partitions in the direction of horizontal; partNum[1]: the number of the partitions in the direction of vertical;*/ char trimmingMark;/* 0: no trimming mark; 1:have trimming mark;*/ vxLongName blockTemplateName[3];/* template name of drawing block, blockTemplateName[0]: template name of title block, blockTemplateName[1]: template name of additional list block, blockTemplateName[2]: template name of code list block*/ } svxDrawingAt; /* Drawing move direction type */ typedef enum evxDrawingMoveDirType { VX_DRAWING_TWOPOINTS, /* two points */ VX_DRAWING_HORIZONTAL, /* horizontal */ VX_DRAWING_VERTICAL, /* vertical */ } evxDrawingMoveDirType; /* Dimension attributes structure */ typedef struct svxDimAttr { char prefix[32]; /* dimension prefix */ char suffix[32]; /* dimension suffix */ char tolPlus[8]; /* tolerance plus */ char tolMinus[8]; /* tolerance minus */ char fontName[36]; /* font name */ int extLnClr; /* extension lines color (evxColor) */ int dimLnClr; /* dimension lines color (evxColor) */ int dimTxtClr; /* dimension text color (evxColor) */ int valFmt; /* dimension value text format (1-no tol, 2-limit, 3-unequal tol, 4-equal tol, 5-tol zone, 6-fit tol) */ int zeroSupp; /* zero suppression (1-none, 2-lead, 3-trail, 4-both) */ int decPlc; /* dimension text decimal places */ double chHgt; /* text height */ int dimTxtOrient; /* dimension text orientation(>=1) */ int LeaderAlign; /* dimension line (or leader) justification(0-center, 1-top, 2-half, 3-bottom) */ int trmTyp1; /* arrowhead1 type(0-12) */ int trmTyp2; /* arrowhead2 type(0-12) */ int dimLineSize; /* dimension line size(1-6) */ int extLineSize; /* extension line size(1-6) */ int dimLineType; /* dimension line type(0-5) */ int extLineType; /* extension line type(0-5) */ int dimTxtBold; /* dim. text bold flag (0-normal, 1-bold) */ int dimPrefixFlag; /* radial, diameter, and chamfer prefix on/off(0-on, 1-off) */ int altUnitFlag; /* 1 if use alternate unites, else 0 */ int showUnit; /* show unit,(0-both not, 1-show main dim unit, 2-show unit for alt., 3-both ) */ int tolDecPlc; /* tolerance precision */ int altDecPlc; /* unit precision, if altUnitFlag = 1, apply it */ int altTolDecPlc; /* tolerance precision, if altUnitFlag = 1, apply it */ evxUnitType altUnitTyp; /* alternate unit type */ evxAngUnitType angAltUnitTyp; /* angular alternate unit type */ } svxDimAttr; typedef enum { /* The standard id of the part attribute item. */ VX_AT_USER = 0, /* user defined attributes */ VX_AT_NAME = 1, /* part name */ VX_AT_NUMBER = 2, /* part number */ VX_AT_CLASS, /* CAM class */ VX_AT_DESIGNER, /* designer */ VX_AT_COST, /* cost */ VX_AT_SUPPLIER, /* supplier */ VX_AT_DESCRIPT, /* description */ VX_AT_KEYWORD, /* keyword */ VX_AT_MANAGER, /* manager */ VX_AT_MATERIAL, /* material */ VX_AT_START, /* create time */ VX_AT_END, /* last modified time */ VX_AT_DERIVED, /* derived from */ VX_AT_NO_SECTION, /* do not section */ VX_AT_NO_HATCH, /* do not hatch */ VX_AT_NO_BOM, /* do not list in BOM */ VX_AT_NO_ROOTSHOW, /* do not list in root manager */ VX_AT_DENSITY = 18, /* density */ VX_AT_FILEPATH = 20, /* file path */ VX_AT_SHEETPATH = 21, /* corresponded drawing sheet: FILE NAME,SHEET ROOT NAME */ VX_AT_CAMPATH = 22, /* corresponded CAM object: FILE NAME,CAM ROOT NAME */ VX_AT_SHEETCODE = 23, /* sheet code */ VX_AT_AREA = 25, /* area */ VX_AT_VOLUME = 26, /* volume */ VX_AT_MASS = 27, /* mass property */ VX_AT_LENGTH = 28, /* length */ VX_AT_WIDTH = 29, /* width */ VX_AT_HEIGHT = 30, /* height */ VX_AT_STOCK_SIZE = 43, /* stock size */ /* The standard id of the sheet attribute item. */ VX_AT_SHEET_SCALE = 200, /* scale */ VX_AT_SHEET_SEQUENCE = 201,/* sequence */ VX_AT_SHEET_AMOUNT, /* amount */ VX_AT_SHEET_SIZE, /* size */ VX_AT_SHEET_PROJECTION, /* projection */ VX_AT_SHEET_FILEPATH, /* filepath */ } evxAtItemId; /* terminator types */ typedef enum evxTermType { VX_TERM_OFF = 0, /* arrowhead style: suppressed */ VX_TERM_ARROW_15 = 1, /* arrowhead style: arrow with 15-degree angle */ VX_TERM_ARROW_30, /* arrowhead style: arrow with 30-degree angle */ VX_TERM_ARROW_60, /* arrowhead style: arrow with 60-degree angle */ VX_TERM_ARROW_H15, /* arrowhead style: unfilled triangle with 15-degree angle */ VX_TERM_ARROW_H30, /* arrowhead style: unfilled triangle with 30-degree angle */ VX_TERM_ARROW_H60, /* arrowhead style: unfilled triangle with 60-degree angle */ VX_TERM_ARROW_HF15, /* arrowhead style: filled triangle with 15-degree angle */ VX_TERM_ARROW_HF30, /* arrowhead style: filled triangle with 30-degree angle */ VX_TERM_ARROW_HF60, /* arrowhead style: filled triangle with 60-degree angle */ VX_TERM_TICK, /* arrowhead style: tick */ VX_TERM_DOT, /* arrowhead style: unfilled point */ VX_TERM_DOTF /* arrowhead style: filled point */ } evxTermType; /* symbol attributes structure */ typedef struct svxSymAttr { int allCir; /* all round circle (0-suppressed) */ int extLine; /* extender line (0-suppressed) */ double extLineSize; /* extender line size */ evxTermType termType; /* terminator type */ double termSize; /* terminator size */ char fontName[37]; /* font name */ char fontName2[37]; /* secondary font name */ int textTyp; /* text orientation (0-horizontal, 1-align) */ int bold; /* text bold flag: 0-normal, 1-bold */ int underLine; /* text underline flag: 0-normal, 1-underline */ int autoTxtFlg; /* auto change text direction flag */ double charHgt; /* text height */ double charAsp; /* text character aspect = width / height */ double charSpacing; /* text character spacing */ evxColor textClr; /* text color */ double scaleFac; /* scale factor */ svxLineAt symAttr; /* general symbol attribute*/ svxLineAt leaderAttr; /* leader line attributes*/ } svxSymAttr; /* image data */ typedef struct svxSymImg { /* required inputs */ vxPath path; /* image path or user define string */ int firstPtType; /* type of 1st input point (0 corner, 1 center) */ svxPoint2 pts[2]; /* 2 input points depend on "type" */ double width; /* width */ double height; /* height */ double angle; /* rotation angle(degree) */ double opaque; /* opaque factor */ int flip; /* flip flag (0-none, 1-with, 2-with y ) */ int locked; /* 1-lock aspect ratio,0 not */ } svxSymImg; /*symbol type of surface roughness */ typedef enum { VX_SYMSURF_BAS = 0, /* basic */ VX_SYMSURF_MRR, /* material removal required */ VX_SYMSURF_MRP, /* material removal prohibited */ VX_SYMSURF_JIS1, /* JIS surface texture 1 */ VX_SYMSURF_JIS2, /* JIS surface texture 2 */ VX_SYMSURF_JIS3, /* JIS surface texture 3 */ VX_SYMSURF_JIS4, /* JIS surface texture 4 */ VX_SYMSURF_JISNM /* JIS no machining */ } evxSymSurf; /* surface finish data*/ typedef struct svxSymSurf { int symTyp; /* symbol type(evxSymSurf) */ int lay; /* lay symbol */ int grinding; /* grinding */ char maxR[65]; /* max roughness average (or =NULL) */ char minR[65]; /* min roughness average (or =NULL) */ char procMeth[65]; /* processing method/treatment (or =NULL) */ char sampR[65]; /* sampling length/roughness cutout (or =NULL) */ char machAllow[65]; /* machining allowance (or =NULL) */ char R[65]; /* Rz, roughness value (or =NULL) */ char otherR[65]; /* other roughness value/spacing (or =NULL) */ char optStr[65]; /* third row optional string (or =NULL) */ int prepFlag; /* perpendicular flag (0-no, 1-perpendicular, 2-reverse) */ double rotation; /* rotation angle(degree), only used when prepFlag = 0 */ int useLeadPnt; /* whether to use leader point */ svxPoint2 leadPoint; /* coordinate of the leader point, only used when useleadPnt = 1 */ }svxSymSurf; /* Weld data*/ typedef struct svxSymWeld { int finishSymUp; /* finish symbol (other side) */ int contourSymUp; /* contour symbol (other side) */ int lineFlg; /* line flag 0:plain, 1:below, 2:above */ int stagger; /* stagger (0=suppressed) */ int filletSecUp; /* 2nd fillet (other side) (0=suppressed) */ int weldSymUp; /* weld symbol (other side) */ int fieldFlg; /* field flag (0=suppressed) */ int aroundCir; /* all round circle (0=suppressed) */ int tail; /* tail (0=suppressed) */ int weldSymDwn; /* weld symbol (arrow side) */ int filletSecDwn; /* 2nd fillet (arrow side) (0=suppressed) */ int contourSymDwn; /* contour symbol (arrow side) */ int finishSymDwn; /* finish symbol (arrow side) */ int inWeldTbl; /* include in weld table flag*/ char GrooveAngUp[33]; /* groove angle (arrow side) */ char filleSecSzUp[33]; /* 2nd fillet size (other side) */ char filletSecLenUp[33]; /* 2nd fillet length (other side) */ char depthPrepUp[33]; /* depth of preparation, size or strength, effective throat, or groove weld size */ char weldLenPitchUp[33]; /* length and pitch of weld */ char tailRef[65]; /* tail reference */ char depthPrepDwn[33]; /* depth of preparation, size or strength, effective throat, or groove weld size */ char weldLenPitchDwn[33]; /* length and pitch of weld */ char filletSecSzDwn[33]; /* 2nd fillet size (arrow side) */ char filletSecLenDwn[33]; /* 2nd fillet length (arrow side) */ char weldRoot[33]; /* root opening/depth of filling/number of weld */ char grooveAngDwn[33]; /* groove angle (other side) */ char weldOtherRoot[33]; /* root opening/depth of filling/number of weld (other side) */ double gapSpacing; /* ratio for symbol gap */ int useLocPoint; /* whether to use location point setting, 0 to use default point */ svxPoint2 locPoint; /* the coordinate of location point */ int numJogs; /* number of jog points */ svxPoint2 *jogPoints; /* list of coordinate of jog points */ int numLeaders; /* number of leader points */ svxPoint2 *leaderPoints; /* list of coordinate of leader points */ }svxSymWeld; typedef struct svxTextAt { unsigned char bold; /* bold flag 0-normal, 1-bold */ unsigned char underline; /* underline flag 0x01-ul, overline flag 0x02-ol, delete line flag 0x04-dl */ unsigned char italic; /* italic flag 0-normal, 1-italic */ unsigned char word_wrap; /* fit method 0-none, 1-word wrap, 2-auto size text */ char fontName[36]; /* font name */ float char_height; /* text height */ float char_aspect; /* width of text, char_aspect = width / height */ float multi_line_space; /* Vertical spacing between text */ float char_spacing; /* Horizontal spacing between text */ evxColor color; unsigned char size; /* the width of line */ unsigned char precision; /* text precision */ unsigned char font_type; /* font type (ex: proportional) */ unsigned char hor_align_type; /* horizontal text alignment type */ unsigned char hor_align; /* horizontal text alignment */ unsigned char vert_align_type; /* vertical text alignment type */ unsigned char vert_align; /* vertical text alignment */ float path; /* path of text as angle 0.0-360.0 degrees */ float text_angle; /* slope of text */ float char_slant; /* slant of text */ float text_expansion; /* Multiplier for text expansion */ float first_line_ind; /* first line indent */ float hanging_ind; /* hanging indent */ float right_ind; /* right indent */ }svxTextAt; typedef struct svxTextLoc { unsigned char mirror; /* mirror flag 0-normal , 1-mirror */ float text_radius; /* radius of arc that the text follows */ float scale; /* text scale factor */ svxPoint2f origin_point; /* text origin point */ svxPoint2f align_point; /* text alignment point */ svxPoint2f mirror_axis[2]; /* two points defining mirror axis */ svxPoint2f bbox[2]; /* two points defining text bounding box */ }svxTextLoc; typedef struct svxWeldAttr { svxAttribute spec; svxAttribute description; svxAttribute material; svxAttribute mass; svxAttribute length; }svxWeldAttr; /* Move and Copy Methods(2D) */ typedef enum evxMoveType2D { VX_PNT_TO_PNT_2D, /* copy/move entities along a direction (2D) */ VX_ALONG_DIR_2D, /* copy/move entities form point to point (2D) */ } evxMoveType2D; typedef struct svxAlongDir2D /* copy/move entities along a direction (2D) */ { svxVector2 dir; /* move direction */ double distance; /* distance */ svxPoint2 BasePoint; /* base point */ double angle; /* angle */ double scale; /* scale */ } svxAlongDir2D; typedef struct svxMovePntToPnt2D /* copy/move entities form point to point (2D) */ { svxPoint2 FromPoint; /* from point */ svxPoint2 ToPoint; /* to point */ evxDrawingMoveDirType type; /* direction type */ double angle; /* angle */ double scale; /* scale */ } svxMovePntToPnt2D; /* template command Move data(2D) */ typedef struct svxMoveData2D { evxMoveType2D methods; /* Move Methods */ int cntEnt; /* Entity count */ int *pEnts; /* Entities ID */ union evxMethodsUnion2D { svxAlongDir2D AlongDir2D; /* along direction data(2D) */ svxMovePntToPnt2D PntToPnt2D; /* point to point(2D) */ } MethodUnion2D; } svxMoveData2D; /* sketch definition data */ typedef struct svxSketchData { svxEntPath Plane; /* pick path of insertion to locate the sketch (datum plane,planar face,sketch) */ /* The following parameters are used to define the Y-axis direction of the sketch */ int RedefUpDir; /* whether to redefine Y-axis of sketch (0: use the default direction of the insertion plane 1: use input data to redefine the Y-axis of sketch) */ int idUpEnt; /* specify the entity used to define the Y-axis, 0 to ignore (edge,curve,axis,datum plane) */ int idUpParam; /* specify direction of Y-axis (0: use the positive direction of the edge or curve, or X-axis of datum plane 1: use the negative direction of the edge or curve, or Y-axis of datum plane) */ svxVector UpDir; /* direction of Y-axis, can be ignored if idUpEnt > 0 */ /* The following parameters are used to define the XY origin of the sketch */ int RedefOrigin; /* whether to redefine origin of sketch (0: use the default origin of the insertion plane 1: use centroid of the insertion plane as the origin of sketch 2: use input data to redefine the origin of sketch) */ int idOrgEnt; /* specify the parent entity where the origin locate, 0 to ignore (edge,curve,face,datum plane,point) */ evxGeomCritPnt critPnt; /* specify the critical point of edge or curve */ int idPnt; /* id of the control point of the spline (starting from 0), only used when critPnt is VX_SPLINE_DEFINING_POINT */ svxPoint Origin; /* origin of sketch, can be ignored if idOrgEnt > 0 and use the critical point of entity */ int xDirRev; /* I: whether to reverse X-axis direction */ }svxSketchData; /* cosmetic sketch hatch pattern definition data */ typedef struct svxHatchPtnData { evxHatchPtnType pattern; /* hatch pattern method default: VX_HATCH_PATTERN_ANSI31 */ double angle; /* angle attribute default: 0.0 */ double space; /* spacing attribute default: 3.175 */ evxColor color; /* color attribute default: VX_COLOR_BLACK */ } svxHatchPtnData; /* type of sketch constraint dimension */ typedef enum { VX_SK_CONSDIM_UNKNOW = -1, VX_SK_CONSDIM_LINEAR, /* type of linear dimension */ VX_SK_CONSDIM_LINEAR_OFFSET, /* type of linear offset dimension */ VX_SK_CONSDIM_ANGULAR, /* type of angular dimension */ VX_SK_CONSDIM_RADIAL, /* type of radial/diametric dimension */ VX_SK_CONSDIM_ARC_LENGTH, /* type of arc length dimension */ }evxConsDimType; /* data of constraint dimension */ typedef struct svxConsDim { svxPoint firstPnt; /* first point */ svxPoint secondPnt; /* second point, NULL if it doesn't need */ svxPoint textPnt; /* text point */ int type; /* sub type of dimension linear dimension: 1 = horizontal method, 2 = vertical method, 3 = aligned method linear offset dimension: 1 = offset method, 2 = projected distance method angular dimension: 1 = 2 curve method, 2 = horizontal method, 3 = vertical method, 4 = arc method radial dimension: 1 = radial method, 2 = diameter method arc length dimension: the value can be ignored */ int firstEnt; /* entity id which the first point on it, NULL if it doesn't need*/ int secondEnt; /* entity id which the second point on it, NULL if it doesn't need*/ }svxConsDim; /* type of sketch geometry constraint */ typedef enum evxGeomConsType { VX_SK_CONS_UNKNOWN, VX_SK_CONS_FIX, /* point fixed constraint */ VX_SK_CONS_ALI_Y, /* points horizontal constraint */ VX_SK_CONS_ALI_X, /* points vertical constraint */ VX_SK_CONS_MID, /* point to midpoint constraint */ VX_SK_CONS_ON_CRV, /* point to line/curve constraint */ VX_SK_CONS_ISECT, /* point to intersection constraint */ VX_SK_CONS_COIN, /* point coincident constraint */ VX_SK_CONS_HOR, /* line horizontal constraint */ VX_SK_CONS_VER, /* line vertical constraint */ VX_SK_CONS_SYM, /* entity symmetrical constraint */ VX_SK_CONS_PERP, /* line perpendicular constraint */ VX_SK_CONS_PARA, /* line parallel constraint */ VX_SK_CONS_COLINLN, /* line collinear constraint */ VX_SK_CONS_TANG, /* line tangent constraint */ VX_SK_CONS_EQL_LEN, /* line equal length constraint */ VX_SK_CONS_EQL_CURVATURE,/* line equal curvature constraint */ VX_SK_CONS_CONC, /* point to center constraint */ VX_SK_CONS_EQL_RAD, /* arc or circle equal radius constraint */ /* the following constraint types are created automatically by command and cannot be created by constraint command */ VX_SK_CONS_SYM_DST, /* distance symmetrical constraint, created by mirror command */ VX_SK_CONS_SYM_ANG, /* angle symmetrical constraint, created by mirror command */ VX_SK_CONS_PTN, /* pattern constraint, created by pattern command */ VX_SK_CONS_OFFSET /* offset constraint, created by offset command */ } evxGeomConsType; /* faces offset data */ typedef struct svxFcsOffsetData { int count; /* count of "faces" */ int* faces; /* list of face id */ double offset; /* offset */ int keepSurface; /* 1 is keep original surface, else 0 */ int keepEdge; /* 1 is keep edge connectivity, else 0 */ // variable offset int cnt; /* count of "list", cnt=0 to ignore */ struct svxVarOffset { svxPntOnEnt pntOnEnt; /* set point on face(or edge) */ double pntOffset; /* offset */ } *list; /* NULL to ignore */ } svxFcsOffsetData; /* template command Smd Unfold data */ typedef struct svxUnfoldData { int idShape; /* shape id */ int idStationary; /* Stationary face id */ int BendFaceCnts; /* Bend face counts */ int *idBendFace; /* Bend faces id*/ int CrvCnts; /* Curve list counts(0 to ignored) */ int *idCrv; /* curve list on the sheet metal(NULL to ignored) */ } svxUnfoldData; /* template command Smd Fold data */ typedef struct svxFoldData { int idShape; /* shape id */ int idStationary; /* Stationary face id (0/-1 to ignored) */ int BendFaceCnts; /* Bend face counts(0 to ignored) */ int *idBendFace; /* Bend faces id (NULL to ignored)*/ int CrvCnts; /* Curve list counts(0 to ignored) */ int *idCrv; /* curve list on the sheet metal(NULL to ignored) */ } svxFoldData; typedef enum evxCornerReliefTyp { VX_CORNER_CLOSED = 0, /* closed */ VX_CORNER_CIRCL_CUTOUT, /* circular cutout */ VX_CORNER_RECT_CUTOUT, /* rectangular cutout*/ VX_CORNER_U_CUTOUT, /* U cutout */ VX_CORNER_V_CUTOUT, /* V cutout */ }evxCornerReliefTyp; typedef enum evxCornerOverlapTyp { VX_CORNER_UNDERLAP = 0, /* underlap */ VX_CORNER_OVERLAP, /* overlap */ VX_CONER_NATURAL, /* natural */ }evxCornerOverlapTyp; /* template command Smd Close Corner data (Note: if you don't care some parameters, set them as default values)*/ typedef struct svxCloseCornerData { int type; /* method, 0-close by edge, 1- close by face(0 as default) */ union CornerData { struct svxByEdge /* linear pattern */ { svxPntOnEnt Edg1Pnt; /* first face edge */ svxPntOnEnt Edg2Pnt; /* second face edge */ } byEdge; struct svxByFace /* circular pattern */ { int idBend1; /* first bend face */ int idBend2; /* second bend face */ int CloseFlange; /* close the whole flange or not(1 as default) */ int Miter; /* miter corner or not (1 as default) */ evxCornerReliefTyp Relief; /* (VX_CORNER_CLOSED as default)*/ int OrgType; /* 0-bend center, 1-corner point(1 as default, and it works when Relief != VX_CORNER_CLOSED) */ double dOffset; /* specify offset distance for origin (0.0 as default, use it when Relief!=VX_CORNER_CLOSED) */ double dDiam; /* diameter(4.0 as default, use it when Relief!=VX_CORNER_CLOSED && Relief!=VX_CORNER_RECT_CUTOUT) */ double dLength; /* specify length for rectangular cut (4.0 as default, use it when Relief=VX_CORNER_RECT_CUTOUT) */ double dWidth; /* specify width for rectangular cut (4.0 as default, use it when Relief=VX_CORNER_RECT_CUTOUT) */ double dAng1; /* specify first angle for V cut (30 as default, use it when Relief=VX_CORNER_V_CUTOUT)*/ double dAng2; /* specify second angle for V cut (30 as default, use it when Relief=VX_CORNER_V_CUTOUT)*/ }byFace; } cornerData; evxCornerOverlapTyp Overlp; /* (VX_CONER_NATURAL as default)*/ double dGap; /* (0.1 as default) */ }svxCloseCornerData; typedef struct svxLouverData { int idPlane; /* id of planar face for louver placement */ int idProf; /* id of profile */ double dHeight; /* louver height (3.0 as default)*/ double dAng; /* louver angle (45 as default) */ double dR1; /* 1st louver radius (1.0 as default) */ double dR2; /* 2nd louver radius (1.0 as default) */ double dWidth; /* louver width (6.0 as default) */ int Flip; /* flip louver 180 degrees (0 as default)*/ int cntSew; /* count of sew shapes */ int *pSewShape; /* id list of sew shapes (NULL to sew with all shapes)*/ }svxLouverData; /*Normal Cut command*/ typedef enum evxExtrudeType { VX_EXTRUDE_TYPE_ONESIDE = 0, /* 1 side */ VX_EXTRUDE_TYPE_TWOSIDE = 1, /* 2 side */ VX_EXTRUDE_TYPE_SYMMETRICAL, /* Symmetrical */ }evxExtrudeType; typedef enum evxNormCutTyp { VX_NORMCUT_BOTHSIDES = 0, /* Normal to Both Sides */ VX_NORMCUT_MIDDLE = 1, /* Normal to Middle */ }evxNormCutTyp; typedef struct svxNormalCutData { evxNormCutTyp cutType; /* normal cut option, default value:VX_EXTRUDE_TYPE_ONESIDE */ int idProfile; /* Profile P */ int cntShape; /* Cut Shapes count */ int* shapeList; /* Cut Shapes List */ evxExtrudeType extType; /* extrude type, default value:VX_EXTRUDE_TYPE_ONESIDE*/ double dStart; /* Start S, default value:10.0 */ double dEnd; /* End E, default value:-10.0 */ svxVector *Dir; /* Direction (NULL can be ignored)*/ int Flip; /* Flip cut to side,default value:0 */ evxDistanceMethod startType; /* start type (0 = input value, 1 = through all, 2= to point, 5 = to face) */ evxDistanceMethod endType; /* end type (0 = input value, 1 = through all, 2= to point, 5 = to face) */ int idStartEnt; /* the entity id of start field if startType > 1 */ int idEndEnt; /* the entity id of end field if endType > 1 */ svxPoint *startToPnt; /* if startType = 2, NULL to ignore */ svxPoint *endToPnt; /* if endType = 2, NULL to ignore */ }svxNormalCutData; /*Punch type*/ typedef enum evxPunchTyp { VX_PUNCH_SHAPE = 0, /* Punch from Shape */ VX_PUNCH_FILE = 1, /* Punch from File */ }evxPunchTyp; /* location type of punch command */ typedef enum evxPunchLocType { VX_LOCATION_POINT = 0, /* Point */ VX_LOCATION_CONSTRAINT = 1, /* Constraint */ }evxPunchLocType; /* assembly constraint type */ typedef enum evxConsType { VX_NONE = 0x00000L, VX_CONCENTRIC = 0x00001L, /* Concentric constraint */ VX_COINCIDENT = 0x00002L, /* Coincident constraint */ VX_TANGENT = 0x00004L, /* Tangent constraint */ VX_PARALLEL = 0x00008L, /* Parallel constraint */ VX_PERPENDICULAR = 0x00010L, /* Perpendicular constraint */ VX_AT_DISTANCE = 0x00040L, /* Distance constraint */ VX_AT_ANGLE_FULL = 0x00080L, /* At angle constraint */ VX_GEAR = 0x00100L, /* Gear constraint */ VX_SYMMETRIC = 0x00200L, /* Symmetry constraint */ VX_ADV_LOCKED = 0x00400L, /* Lock constraint */ VX_ADV_MIDDLE = 0x00800L, /* Middle constraint */ VX_ADV_FRAME = 0x01000L, /* Frame constraint */ VX_ADV_PATH = 0x02000L, /* Path constraint */ VX_MC_LINEAR_COUPLER = 0x04000L,/* Linear couple constraint */ VX_MC_RACK_PINION = 0x08000L, /* Rack and pinion constraint */ VX_MC_SCREW = 0x10000L, /* Screw constraint */ } evxConsType; typedef struct svxPunchCons { evxConsType alignTyp; /* alignment type (default value: VX_CONCENTRIC)*/ /* note: one of entities must form the insert punch file */ svxEntPath pathEnt1; /* first entity path (initialize as(2,-1,idEnt)) */ int ent1FormFile; /* 1 if the first entity from the punch file, else 0 (default value:0) */ svxEntPath pathEnt2; /* second entity path (initialize as(2,-1,idEnt)) */ int ent2FormFile; /* 1 if the second entity from the punch file, else 0 (default value:0) */ /* The following parameter is used when alignTyp = VX_COINCIDENT/VX_TANGENT */ double dOffset; /* offset value (default value: 0) */ /* The following parameter is used when alignTyp = VX_GEAR */ double dAng; /* angle value (default value: 0) */ /* The following parameter is used when alignTyp ! VX_ADV_FRAME/ */ int Flip; /* 1-flip the alignment direction, else 0 (default value:0)*/ }svxPunchCons; /* Punch data */ typedef struct svxPunchData { evxPunchTyp punchTyp; /* Punch option, default value:VX_PUNCH_SHAPE */ int idBase; /* boundary face on base (face id)*/ int cntOpen; /* count of open faces (0 to ignore)*/ int* pOpenList; /* open faces from punch shape (NULL to ignore) */ int addFillet; /* fillet placement edges,default value:0 */ double dRadius; /* radius for dRadius, default value:5 */ int addFillet2; /* fillet non placement edges,default value:0 */ double dRadius2; /* radius for addFillet2, default value:5 */ /* The following parameters are used when punchTyp = VX_PUNCH_SHAPE */ int idPunch; /* a punch shape (shape id)*/ /* The following parameters are used when punchTyp = VX_PUNCH_FILE */ vxPath pathPunch; /* punch file path, used option in VX_PUNCH_FILE*/ evxPunchLocType locTyp; /* location Type, default value:VX_LOCATION_POINT */ svxPoint localPnt; /* punch point, used option in VX_PUNCH_FILE(default:(0,0,0))*/ int relation; /* Related with source, default value:1, used option in VX_PUNCH_FILE */ union LocData { /* point + frame*/ struct ByPnt { int idFrame; /* Frame, used option in VX_PUNCH_FILE (-1/0 to ignored)*/ }byPnt; /* point + constraint */ struct ByCons { int cntCons; /* count of constraint data (0 to ignore)*/ svxPunchCons* punchCons; /* constraint data list(NUll to ignore) */ }byCons; }locData; }svxPunchData; /* sheet metal attribute */ typedef struct svxSmdAt { double dThick; /* thickness (1.0 as default)*/ double dRadius; /* radius (5.0 as default) */ double dKFactor; /* K-Factor (0.41 as default) */ }svxSmdAt; /* data of sketch geometry constraint object */ typedef struct svxConsGeom { int isAxis; /* whether to use axis, 1 to use axis; 0 to use entity or point */ svxPoint2 axis; /* specify axis, only X(1,0) and Y(0,1) axis of sketch are supported */ int idEntity; /* index of entity */ evxGeomCritPnt critPnt; /* critical point, if you want to set an entity such as line rather than a critical point on the entity, set the variable to VX_NO_POINT */ int idPoint; /* used to indicate the control point of the spline (starting from 0) only used when pntType is VX_SPLINE_DEFINING_POINT */ }svxConsGeom; /* center mark circle dim data */ typedef struct svxCenMarkCirDimData { int iCntCens; /* the count of the center marks */ svxPntOnEnt* pCens; /* point to the point for center marks(the length of list must equal to iCntCens) */ int iflg; /* optional open/close flag * 0-Arc(open), 1-Circle(close) (note: 1 as default) */ char flgCenter; /* flag to use "center" (0 as default)*/ svxPntOnEnt center; /* arc center or circle center(if flgCenter = 1, the value is valid) * if iflg = 0, the center is the arc center * if iflg = 1, the center is the circle center */ } svxCenMarkCirDimData; /* datum target dim type */ typedef enum evxDatumTargDimType { VX_DATUMT_CIRCLE = 0, /* datum target - Circle */ VX_DATUMT_RECTANGLE = 1, /* datum target - Rectangle */ VX_DATUMT_LINE = 2, /* datum target - Line */ VX_DATUMT_POINT = 3, /* datum target - Point */ } evxDatumTargDimType; /* datum target dim data */ typedef struct svxDatumTargDimData { evxDatumTargDimType type; /* datum target type */ /* 0-datum target - Circle */ /* 1-datum target - Rectangle */ /* 2-datum target - Line */ /* 3-datum target - Point (Note: VX_DATUMT_POINT as default)*/ svxPntOnEnt pnt; /* point coordinate of point on entity if type = 3, idEnt is Target point if type = 0 or 1, idEnt is Center if type = 2, idEnt is 1st point */ svxPntOnEnt textPnt; /* text point */ svxPntOnEnt secPnt; /* 2nd point (just for type = 2, other type can be ignored) */ double diameter; /* diameter (just for type = 0, other type can be ignored) */ double width; /* width (just for type = 1, other type can be ignored) */ double height; /* height (just for type = 1, other type can be ignored) */ char* text; /* datum text */ char* text2; /* datum text2 (text2 is valid when text is not empty) */ char* text3; /* datum text3 (text3 is valid when text2 is not empty) */ int iAreaSizeText; /* Area size text (0-Area size, 1-User text, 0 as default) */ char* userText; /* user text (userText is valid when iAreaSizeText equals to 1) */ } svxDatumTargDimData; /* datum dim type */ typedef enum evxDatumDimType { VX_DATUM_NORMAL = 1, /* normal datum feature symbol */ VX_DATUM_ANSI = 2, /* based on ANSI(per 1982) */ } evxDatumDimType; /* datum dim data(drawing) */ typedef struct svxDatumDimData { evxDatumDimType type; /* datum type 1-normal datum feature symbol, 2-based on ANSI(per 1982)) (note: VX_DATUM_NORMAL as default) */ char* text; /* datum label name */ svxPntOnEnt leadPnt; /* point coordinate of point on entity if type = 1, leadPnt.useCritPnt = 0 if type = 1, if leadPnt is not on entity, it will be projected to the entity if type = 2, leadPnt.idEnt must be a line */ svxPntOnEnt txtPnt; /* point coordinate of text placement point */ } svxDatumDimData; typedef enum evxSymmetryDimType { VX_SYM_LINEAR = 1, /* linear dimension */ VX_SYM_ANGULAR = 2, /* angular dimension */ } evxSymmetryDimType; typedef enum evxAngDimType { VX_ANG_TWOCURVES = 1, /* 2 curvers angular dimension*/ VX_ANG_HORIZONTAL = 2, /* horizontal angular dimension */ VX_ANG_VERTICAL = 3, /* vertical angular dimension */ VX_ANG_THREEPOINT = 4, /* 3 point angular dimension*/ VX_ANG_ARC = 5, /* arc angular dimension*/ }evxAngDimType; /* radial or diametric dim type */ typedef enum evxRadDimType { VX_RAD_RADIAL = 1, /* radial dimension */ VX_RAD_BROKEN = 2, /* broken radial dimension */ VX_RAD_LARGE = 3, /* large radial dimension */ VX_RAD_LEADER = 4, /* leader radial dimension */ VX_RAD_DIAMETER = 5, /* diametric dimension */ } evxRadDimType; /* Symmetry dimension data */ typedef struct svxDwgSymmetryDimData { evxSymmetryDimType type; /* Symmetry dimension type */ /* 1-linear dimension */ /* 2-angular dimension */ svxPntOnEnt Pnt; /* point coordinate of point on entity */ svxPntOnEnt LinePnt; /* line point coordinates */ svxPntOnEnt CenterLinePnt; /* Center Line point coordinates */ svxPntOnEnt txtPnt; /* text point */ } svxDwgSymmetryDimData; /* Angular dimension dim data */ typedef struct svxDwgAngDimData { evxAngDimType type; /* Angular or diametric type */ /* 1-2 curvers angular dimension */ /* 2-horizontal angular dimension */ /* 3-vertical angular dimension */ /* 4-3 point angular dimension*/ /* 5-arc angular dimension*/ svxPntOnEnt Curve1; /* get one entity and point coordinate */ svxPntOnEnt Curve2; /* get one entity and point coordinate */ svxPntOnEnt StartPnt; /* start point */ svxPntOnEnt BasePnt; /* base point */ svxPntOnEnt EndPnt; /* end point */ svxPntOnEnt ArcPnt; /* arc point */ svxPntOnEnt QuadrantPnt; /* quadrant point*/ svxPntOnEnt txtPnt; /* text point */ }svxDwgAngDimData; /* radial or diametric dim data */ typedef struct svxRadDimData { evxRadDimType type; /* radial or diametric type */ /* 1-radial dimension */ /* 2-broken radial dimension */ /* 3-large radial dimension */ /* 4-leader radial dimension */ /* 5-diametric dimension */ svxPntOnEnt arcPnt; /* point coordinate of point on entity (entPnt will be projected to the entity if entPnt is not on entity) (the curve idEnt can't be a line) */ svxPntOnEnt brkPnt; /* break point(just for type = 2, other type can be ignored)*/ svxPntOnEnt txtPnt; /* text point */ } svxRadDimData; /* Arc dimension dim data */ typedef struct svxDwgArcDimData { svxPntOnEnt ArcEnt; /* get arc one entity */ svxPntOnEnt txtPnt; /* text point */ }svxDwgArcDimData; /* label coordinate dim data */ typedef struct svxLabelCoorDimData { char type; /* label coordinate type */ /* 1-Auto text placement */ /* 2-Pick text placement */ svxPntOnEnt orgPnt; /* origin point of label coordinate dimension*/ int cntPnt; /* count of the point */ svxPntOnEnt* pPnts; /* point to the coordinate point of dimension(length of list must equal to cntPnt)*/ svxPntOnEnt* pTxtPnts; /* point to the text point of dimension if needs customization, the length of list must equal to cntPnt, pTxtPnts[i].idEnt = -1, use default text point. NULL, use default text point to be text point*/ char* text; /* text(NULL or empty to be formatted as, , , you can also custom text) */ } svxLabelCoorDimData; /* pattern of stack balloons */ typedef enum evxDwgStkBlnPtn { VX_STKBLNPAT_HORRIGHT = 1, /* horizontal right */ VX_STKBLNPAT_HORLEFT, /* horizontal left */ VX_STKBLNPAT_VERUP, /* vertical up */ VX_STKBLNPAT_VERDOWN /* vertical down */ } evxDwgStkBlnPtn; /* information of creating stack balloons */ typedef struct svxDwgStkBlnData { int idBlnDim; /* index of main balloon. It must be index of V_DM_BALL(not stack balloon) */ int entCnt; /* count of input entity corresponding to pIndexEntityList */ int* pEntIdList; /* input entity index list. Index must be VV3REF/VNCURV/VICURV/ VLINE2/VCIRCLE2/VARC2/V_DM_BALL(not stack balloon) */ evxDwgStkBlnPtn stkBlnPtn; /* pattern of stack balloons */ char autoSort; /* flag of auto sort (0-no, else yes) (0 as default) */ } svxDwgStkBlnData; /* Type of instances in auto balloon */ typedef enum evxDwgAtBlnInsTyp { VX_ATBLNINS_IGNMULINS = 0, /* ignore multiple instances */ VX_ATBLNINS_MULLEAINS = 1, /* multi-leader for multiple instances */ VX_ATBLNINS_EACHINS = 2 /* one for each instances */ } evxDwgAtBlnInsTyp; /* Pattern type of auto balloon */ typedef enum evxDwgAtBlnPtnType { VX_ATBLNPAT_CONVEXHULL = 1, /* convex hull around the layout view */ VX_ATBLNPAT_SQUARE = 2, /* square around the layout view */ VX_ATBLNPAT_CIRCULAR = 3 /* circular around the layout view */ } evxDwgAtBlnPtnType; /* Leader attachment of auto balloon */ typedef enum evxDwgAtBlnLeadAttach { VX_ATBLNLEAATT_EDAGES = 1, /* attach to edges */ VX_ATBLNLEAATT_FACES = 2 /* attach to face */ } evxDwgAtBlnLeadAttach; /* Skip sides of auto balloon */ typedef enum evxDwgAtBlnSkpSd { VX_ATBLNSKPSD_NONE = 0, /* skip none */ VX_ATBLNSKPSD_LEFT = 1, /* skip Left */ VX_ATBLNSKPSD_TOP = 2, /* skip top */ VX_ATBLNSKPSD_RIGHT = 4, /* skip right */ VX_ATBLNSKPSD_BOTTOM = 8 /* skip bottom */ } evxDwgAtBlnSkpSd; /* Arrangement of auto balloon */ typedef enum evxDwgAtBlnArrg { VX_ATBLNARR_NEAREST = 1, /* simply located nearest to the component being labeled */ VX_ATBLNARR_CW = 2, /* arranged in clockwise order */ VX_ATBLNARR_CCW = 3 /* arranged in counter - clockwise order */ } evxDwgAtBlnArrg; /* Information of creating auto balloon */ typedef struct svxDwgAtBlnData { int viewIdCnt; /* count of view id */ int* viewIdList; /* list of view id */ evxDwgAtBlnInsTyp instOpt; /* instances type (note: VX_ATBLNINS_IGNMULINS as default) */ evxDwgAtBlnPtnType ptnType; /* pattern type (note: VX_ATBLNPAT_CONVEXHULL as default)*/ evxDwgAtBlnLeadAttach leadAttach; /* leader attachment (note: VX_ATBLNLEAATT_EDAGES as default) */ vxUint32 offSet; /* specify the offset */ evxDwgAtBlnSkpSd skipSides; /* prevent placing balloon labels along one side of the view. Be unusable when ptnType is VX_ATBLNPAT_CIRCULAR (note: VX_ATBLNSKPSD_NONE as default). */ evxDwgAtBlnArrg arrangement; /* how the balloon labels will be arranged around the layout view. Used when have bom in sheeting, but must be initialized any time. (note: VX_ATBLNARR_NEAREST as default) */ int KepItem; /* flag of keeping item (0 no else yes), Used when arrangement is not VX_ATBLLNARR_NEAREST. (note: 0 as default) */ int ItemId; /* index of the kept curve,used when KepItem is not 0. */ int OnlyBom; /* flag of creating balloon only for components in bom (0 no else yes), Used when have bom in sheeting. (note: 1 as default) */ int OnlyWithoutBln; /* flag of creating balloon only for without balloon, used when bOnlyBom is not 0. (note: 0 as default) */ } svxDwgAtBlnData; /* View type, more detailed than evxViewType */ typedef enum evxViewTypeEx { VX_VU_NULL = 0, /* undefined */ VX_VU_TOP = 1, /* top view */ VX_VU_FRONT = 2, /* front view */ VX_VU_RIGHT = 3, /* right view */ VX_VU_BACK = 4, /* back view */ VX_VU_BOTTOM = 5, /* bottom view */ VX_VU_LEFT = 6, /* left view */ VX_VU_ISO_FRONT = 7, /* front isometric view */ VX_VU_AUX = 8, /* "auxiliary" view */ VX_VU_NAME = 9, /* named view */ VX_VU_3RD_UP = 10, /* view projected 3rd angle from above */ VX_VU_3RD_DN = 11, /* view projected 3rd angle from below */ VX_VU_3RD_RT = 12, /* view projected 3rd angle from right */ VX_VU_3RD_LT = 13, /* view projected 3rd angle from left */ VX_VU_1ST_UP = 14, /* view projected 1st angle from above */ VX_VU_1ST_DN = 15, /* view projected 1st angle from below */ VX_VU_1ST_RT = 16, /* view projected 1st angle from right */ VX_VU_1ST_LT = 17, /* view projected 1st angle from left */ VX_VU_3RD_PRJ_ANG = 18, /* view projected at angle, 3rd angle projection */ VX_VU_DETAIL = 19, /* detail view */ VX_VU_SECTION = 20, /* section view */ VX_VU_DETAIL_DEF = 21, /* detail definition */ VX_VU_SECTION_DEF = 22, /* section definition */ VX_VU_REV_SECT_DEF = 23, /* revolved section definition */ VX_VU_ROTATE = 24, /* rotated view */ VX_VU_ALIGN_SECT_DEF = 25, /* aligned section definition */ VX_VU_PRJ_ANG_ARROWS = 26, /* aux view arrows */ VX_VU_BEND_SECT_DEF = 27, /* bend section definition */ VX_VU_ISO_LFT = 28, /* left-front-top side isometric view */ VX_VU_ISO_LBT = 29, /* left-back-top side isometric view */ VX_VU_ISO_RBT = 30, /* right-back-top side isometric view */ VX_VU_ISO_RFB = 31, /* right-front-bottom side isometric view */ VX_VU_ISO_LFB = 32, /* left-front-bottom side isometric view */ VX_VU_ISO_LBB = 33, /* left-back-bottom side isometric view */ VX_VU_ISO_RBB = 34, /* right-back-bottom side isometric view */ VX_VU_NAME_SECT_DEF = 35, /* 3D named sect def'n */ VX_VU_1ST_PRJ_ANG = 36, /* view projected at angle, 1st angle projection */ VX_VU_BRKSECT = 37, /* broken section */ VX_VU_ISOSECT = 38, /* 3D isometric section view */ VX_VU_DIMETRIC = 39, /* dimetric view */ VX_VU_SMD = 40 /* selected sheet metal flat item view */ } evxViewTypeEx; /* type of linear chamfer dim in sheeting */ typedef enum evxDwgLnrChmDimType { VX_LEADER_CHAMFERDIM = 1, /* leader linear chamfer dim */ VX_ALIGNED_CHAMFERDIM, /* aligned linear chamfer dim */ VX_HORZORVERT_CHAMFERDIM /* horizontal/vertical linear chamfer dim */ } evxDwgLnrChmDimType; /* text style of leader linear chamfer dim in sheeting */ typedef enum evxDwgLnrChmDimTexType { VX_TEXT_NOR_CHAMFERDIM = 0, /* normal */ VX_TEXT_PERPENDICULAR_CHAMFERDIM, /* always perpendicular */ VX_TEXT_ALGMODLIN_CHAMFERDIM /* along the model line */ } evxDwgLnrChmDimTexType; /* the info of the linear chamfer dim */ typedef struct svxDwgLnrChmDimData { svxPntOnEnt LineEnt; /* ID and point data of line (the idEnt of "LineEnt" must be valid)*/ evxDwgLnrChmDimType dimType; /* type of line linear chamfer Dim */ evxDwgLnrChmDimTexType dimTexType; /* type of Text, only required when "dimtype" is VX_TEXT_LEADER_CHAMFERDIM */ svxPntOnEnt textPnt; /* point coordinate of text placement point. When "dimtype" is VX_HORZORVERT_CHAMFERDIM this presents horizontal point coordinate of text placement point */ svxPntOnEnt verTextPnt; /* point coordinate of vertical text placement point, only required when "dimtype" is VX_HORZORVERT_CHAMFERDIM */ } svxDwgLnrChmDimData; /* option of break line */ typedef enum evxBrkLineType { VX_HOR_BRKLINE = 0, /* Horizontal break line */ VX_VER_BRKLINE, /* Vertical break line */ VX_SLANT_BRKLINE /* Slant break line */ } evxBrkLineType; /* break Line style */ typedef enum evxBrkLineCutSty { VX_ZEROZIGZAG_BRKLINE = 0, /* line */ VX_ONEZIGZAG_BRKLINE, /* single ZigZag of broken line */ VX_TWOZIGZAG_BRKLINE, /* double ZigZag of broken line */ VX_CURVE_BRKLINE /* curve */ } evxBrkLineCutSty; /* information we need when create break line */ typedef struct svxBrkLineData { int viewId; /* id of view */ evxBrkLineType brkLnType; /* option of break line */ svxPntOnEnt pts[3]; /* 3 input points depend on option of break line. only VX_SLANT_BRKLINE needs the third point, others need two points */ double gap; /* gap size */ svxPoint2 dir; /* direction setting, only required when evxBrkLineType is VX_SLANT_BRKLINE */ } svxBrkLineData; /* attribute of break line */ typedef struct svxDwgBrkLineAt { double gap; /* gap size */ evxBrkLineCutSty brkLnCutSty; /* cut style of break line */ svxLineAt lineAtr; /* line attributes */ vxName layerName; /* name of layer */ int styleIndex; /* index of style of break line */ } svxDwgBrkLineAt; /* data of dimension bundle */ typedef struct svxDwgBundleDimData { int dimBundleId; /* dimension bundle id */ int count; /* count of points */ svxPoint2* pnts; /* list of point */ double dimValue; /* dimension value */ } svxDwgBundleDimData; /* data of ellipse */ typedef struct svxEllipse { svxPoint centroid; /* centroid of ellipse */ double width; /* width of ellipse */ double height; /* height of ellipse */ double startAng; /* start angle of ellipse (deg - CCW from X axis) */ double endAng; /* end angle of ellipse (deg - CCW from X axis) */ double rotationAng; /* rotation angle of ellipse (deg - CCW from X axis) */ }svxEllipse; /* Create Sketch Axis Methods */ typedef enum evxSkAxisMethods { VX_SK_AXIS_TWO_PNT = 0, /* Two Point */ VX_SK_AXIS_PARAPT = 1, /* Parallel and a pin point */ VX_SK_AXIS_PERPENDICULAR = 2, /* Perpendicular and a pin point */ VX_SK_AXIS_ANGLE = 3, /* Angle */ VX_SK_AXIS_PARAOFF = 4, /* Parallel and Offset */ VX_SK_AXIS_HORIZ = 5, /* Horizontal */ VX_SK_AXIS_VERT = 6, /* Vertical */ } evxSkAxisMethods; /* data of sketch Axis */ typedef struct svxSkAxisData { evxSkAxisMethods Method; /* Sketch Axis Methods */ int idEnt1; /* id of the First Point parent entity(0 to ignore) */ svxPoint2 Pnt1; /* first Point */ int idRefEnt; /* id of the RefLine parent entity */ svxPoint2 RefPnt; /* Ref Line point */ union evxSkAxisMethodsUnion { struct SkAxis2Pnt /* Two Points */ { int idEnt2; /* id of the Second Parent entity (0 to ignore) */ svxPoint2 Pnt2; /* second point */ } axis2pnt; struct SkAxisParaOff /* Parallel and Offset */ { double Offset; /* Offset */ } axisParaOff; struct SkAxisAngle /* Angle */ { double Angle; /* Angle */ } axisAng; } inpUnion; int ConstGeom; /* 1-Construction Geometry, else 0 (1 as default)*/ } svxSkAxisData; /* Create Sketch ready text Methods */ typedef enum evxReadyTextMethods { VX_ON_CRV = 1, /* on curve text */ VX_BOX = 2, /* box text */ } evxReadyTextMethods; /* data of ready sketch text */ typedef struct svxReadyText { char* text; /* text string */ vxLongName font; /* font name */ double size; /* text height */ int style; /* text style(1:Regular; 2:Italic; 3:Bold; 4.Bold Italic) */ double spacing; /* character space */ svxPoint origin; /* text position */ int flipY; /* Horizontal flip*/ int mirror; /* Mirror */ evxReadyTextMethods methods; /* ready text methods */ double WidthText; /* Text width*/ double VerticalSpacing; /* Vertical Spacing */ union evxSkTextMethodsUnion { struct OnCrvText { int reverseCurve; /* Reverse curve */ int placeTextAtOrg; /* Place text at origin */ int reduceTxtDat; /* Reduce text data */ int KeepTextShape; /* Keep Text Shape */ int idxCurve; /* curve index */ } oncrvtext; struct BoxText { svxPoint AlignPoint; /* Align Point */ double WidthSetting; /* Setting Width */ double HeightSetting; /* Setting Height */ } boxtext; } methodsUnion; }svxReadyText; /* Rectangle data */ typedef struct svxRectangle { long left; long top; long right; long bottom; }svxRectangle; /* Interference check result data */ typedef struct svxIferChkResData { svxEntPath BaseCompPath; /* base component pick path for interference check */ vxLongName BaseCompName; /* base component name for interference check */ svxEntPath ChkCompPath; /* check component pick path for interference check */ vxLongName ChkCompName; /* check component name for interference check */ double IferVolme; /* volume of interference (mm^3) */ }svxIferChkResData; /* part physical attributes data */ typedef struct svxPartCalcAttrData { double Length; /* length of part */ double Width; /* width of part */ double Height; /* hight of part */ double Volume; /* volume of part */ double Area; /* surface area of part */ double Mass; /* mass of part*/ double Density; /* density of part */ svxPoint Centroid; /* center of gravity of part */ }svxPartCalcAttrData; /* display mode of datum plane */ typedef enum evxDatumDispMode { VX_DSP_PLN_XY = 0, /* display XY only */ VX_DSP_PLN_RECT_XY = 1, /* display rectangle and XY axis */ VX_DSP_PLN_RECT_XYZ = 2, /* display rectangle and XYZ axis */ VX_DSP_PLN_RECT = 3, /* display rectangle only */ VX_DSP_PLN_QURT = 4, /* display a quarter of rectangle only */ VX_DSP_PLN_RECT_XY_FIX = 5, /* display rectangle and XY axis with fix size */ VX_DSP_PLN_RECT_XYZ_FIX = 6, /* display rectangle and XYZ axis with fix size */ VX_DSP_PLN_RECT_FIX = 7, /* display (a quarter of) rectangle only with fix size */ VX_DSP_PLN_XYZ = 8 /* display XYZ only */ }evxDatumDispMode; /* Roughness PMI text define */ typedef struct svxRoughTexts { char a1[65]; /* max roughness average (or =NULL) */ char a2[65]; /* min roughness average (or =NULL) */ char b[65]; /* processing method/treatment (or =NULL) */ char c[65]; /* sampling length/roughness cutout (or =NULL) */ char e[65]; /* machining allowance (or =NULL) */ char f1[65]; /* Rz, roughness value (or =NULL) */ char f2[65]; /* other roughness value/spacing (or =NULL) */ char f3[65]; /* third row optional string (or =NULL) */ }svxRoughTexts; /* Locking state of attribute item */ typedef enum evxAtItemLockStatus { VX_AT_ITEM_UNLOCKED = 0, /* attribute item unlocked */ VX_AT_ITEM_LOCKED, /* lock attribute item and value */ VX_AT_ITEM_LIMITED, /* lock attribute item but not value */ } evxAtItemLockStatus; /* file action type */ typedef enum _evxDocAction { VX_DOC_CREATED = 0, /* called after file created */ VX_DOC_SAVING, /* called before file saving */ VX_DOC_SAVED, /* called after file saved */ VX_DOC_PRECHANGE, /* called before file change */ VX_DOC_CHANGED, /* called after file changed */ VX_DOC_PREOPEN, /* called before file open */ VX_DOC_OPENED /* called after file opened */ }evxDocAction; /* file action parameters */ typedef struct svxDocActionParam { int(*pfn)(void *, const char*, const char*); /* callback function. when set a callback for a file action, this parameter should be a valid function pointer, to cancel the callback, this parameter should be NULL. */ void *param; /* parameter passed to pfn, if no need to pass parameters, it should be NULL */ }svxDocActionParam; /* application action type */ typedef enum _evxAppAction { VX_APP_PRECLOSE = 0, /* called before process quit */ VX_APP_STARTED /* called after process start */ }evxAppAction; typedef struct _svxAppActionParam { int (*pfn)(void *param); // callback function void *param; // parameter }svxAppActionParam; /* custom data for assembly common constraint */ typedef struct svxConsData { int useRange; /* whether to apply constraint range (0-default) */ double value; /* exact value: offset distance or constraint angle (0.0-default) */ svxLimit range; /* constraint range: offset distance or constraint angle */ int sameDir; /* same direction (0-default) */ int posOnly; /* only move position without creating constraint (0-default) */ int lockRotation; /* whether to lock rotation (0-default) */ } svxConsData; /* constraint state of component */ typedef enum evxConsState { VX_UNKNOWN, /* unknown */ VX_UN_CONSTRAINED, /* the component is not constrained */ VX_UNDER_CONSTRAINED, /* the component can still move */ VX_WELL_CONSTRAINED, /* the component is completely and correctly constrained */ VX_FIXED, /* the component is fixed and will not move */ VX_OVER_CONSTRAINED, /* the component has conflicting or redundant constraints */ } evxConsState; /* data sub-items of hole dimension */ typedef enum evxHoleDimDataItem { VX_HOLE_DIM_ITEM_ORG, /* original variable string */ VX_HOLE_DIM_ITEM_QTY, /* number of same holes: */ VX_HOLE_DIM_ITEM_DIA, /* hole diameter D1: */ VX_HOLE_DIM_ITEM_DIA2, /* hole diameter D2: */ VX_HOLE_DIM_ITEM_LABEL, /* hole label: */ VX_HOLE_DIM_ITEM_DPTH, /* hole depth H1: */ VX_HOLE_DIM_ITEM_DPTH2, /* hole depth H2: */ VX_HOLE_DIM_ITEM_ANG, /* hole angle: */ VX_HOLE_DIM_ITEM_THRD_DIA, /* hole thread diameter: */ VX_HOLE_DIM_ITEM_THRD_DPTH, /* hole thread depth: */ VX_HOLE_DIM_ITEM_PITCH, /* hole thread pitch: */ VX_HOLE_DIM_THRD_STD, /* hole thread: */ VX_HOLE_DIM_THRD_SIZ, /* hole thread size without pitch: */ } evxHoleDimDataItem; /* line type ids for view attribute line types */ typedef enum evxViewLineAttrIdx { VX_VIS_LINE_ATTR = 0, /* visible line attribute */ VX_HID_LINE_ATTR = 1, /* hidden line attribute */ VX_TAN_LINE_ATTR = 2, /* tangent line attribute */ VX_SECT_LINE_ATTR = 3, /* section line attribute */ VX_DET_LINE_ATTR = 4, /* detail border line attribute */ VX_CENT_LINE_ATTR = 5, /* center line attribute */ VX_THRD_LINE_ATTR = 6, /* thread line attribute */ VX_VIEW_LINE_ATTR = 7, /* view line attribute */ VX_WIRE_LINE_ATTR = 8, /* visible 3D curve attribute */ VX_TAN_HID_LINE_ATTR = 9, /* hidden tangent line attribute */ VX_WIRE_HID_LINE_ATTR = 10, /* hidden 3D curve attribute */ VX_CENT_HID_LINE_ATTR = 11, /* hidden center line attribute */ VX_THRD_HID_LINE_ATTR = 12, /* hidden thread line attribute */ VX_BEND_LINE_ATTR = 13, /* bend line attribute */ VX_BEND_HID_LINE_ATTR = 14, /* hidden bend line attribute */ VX_THRD_END_LINE_ATTR = 15, /* thread end line attribute */ VX_THRD_END_HID_LINE_ATTR = 16, /* hidden thread end line attribute */ VX_CROP_LINE_ATTR = 17, /* crop line attribute */ } evxViewLineAttrIdx; /* Drawing Broken Section Boundary Method */ typedef enum evxDwgBndMethod { VX_RECTANGULAR_BOUNDARY = 1, /* Rectangular boundary */ VX_CIRCULAR_BOUNDARY, /* Circular boundary */ VX_POLYLINE_BOUNDARY, /* Polyline boundary */ } evxDwgBndMethod; /* Drawing Broken Section Depth type */ typedef enum evxDwgDepthType { VX_DEPTH_POINT, /* point */ VX_DEPTH_SECTION_PLANE, /* section plane */ VX_DEPTH_3D_NAMED, /* 3d named */ } evxDwgDepthType; /* Drawing Broken Section input infos */ typedef struct svxDwgBrokenSectionData { evxDwgBndMethod method; /* Boundary Method */ int idView; /* Base view */ svxPoint2* bPoints; /* The boundary is made up of points */ int countBPs; /* count of "bPoints" */ evxDwgDepthType type; /* depth type */ svxPoint2 dPoint; /* depth point */ int idCrv; /* curve id. if type == VX_DEPTH_POINT, point "dPoint" must be on the curve "idCrv" */ double dOffset; /* depth offset */ int dView; /* depth view */ vxName name; /* 3D name */ int isShow; /* show step lines */ int isDynamicHatch; /* dynamic hatch scaling and angle */ svxPoint2* oPoints; /* offset points */ int countOPs; /* count of "oPoints" */ } svxDwgBrokenSectionData; /* Drawing Detail Method */ typedef enum evxDwgDetailMethod { VX_RECTANGULAR_DETAIL = 1, /* rectangular detail view */ VX_CIRCULAR_DETAIL = 2, /* circular detail view */ VX_POLYLINE_DETAIL, /* polyline detail view */ } evxDwgDetailMethod; /* Drawing Detail input infos */ typedef struct svxDwgDetailData { evxDwgDetailMethod method; /* Detail Method */ int idView; /* Base view */ int PntCount; /* all points count */ svxPntOnEnt* pPnts; /* pick points defining the detail boundary */ svxPntOnEnt NotePnt; /* pick point for note */ int iMultiplier; /* local magnification */ svxPntOnEnt Location; /* local detail view position */ } svxDwgDetailData; /* View layout display attributes */ typedef struct svxViewAt { svxWireAt zWireAt; /* Attributes for wireframe */ char fHLROn; /* display mode (0 ~ 3) */ char fBiarc; /* convert curves to arc on(1)/off(0) */ char fDupFlt; /* remove duplicated curves on(1)/off(0) */ char fShwDim; /* show dimensions from part (1) or not(0) */ char fShwLbl; /* show label (1) or not(0) */ char fShwScl; /* show scale (1) or not(0) */ char fShwPmi; /* show PMI entities inherited from part (1/2) or not(0) */ /* 1: inherit parallel PMI; 2: inherit all PMI */ char fExplod; /* Explode mode (1) or not(0) */ char fNoProp; /* hidden line check for intersecting shapes off (1)/on(0) */ char fThread; /* show threads on (1)/off(0) */ char fCentLin; /* show center lines on (1)/off(0) */ char fBendLin; /* show bend lines from sheet metal on (1)/off(0) */ char fWirefrm; /* show 3D curves from part on (1)/off(0) */ char fNoRegen; /* do not Regen View on (1)/off(0) */ char fAnno; /* show texts from part on (1)/off(0) */ char fBeads; /* show weld beads from part (1) or not(0) */ svxWireAt zLnAt[18]; /* view line type (see evxViewLineAttrIdx) display attributes */ char fShw3DOrig; /* show 3D zero point (1) or not (0) */ char fHiddenLin; /* show hidden lines on(1)/off(0) */ vxName label; /* view label */ char fScaleType; /* scale type 0 view scale explicitly assigned to view by user 1 view scale comes from sheet preference 2 view scale comes from parent view */ double dSclRatioX; /* Scale ratio value #X */ double dSclRatioY; /* Scale ratio value #Y */ double dScale; /* decimal display scale */ } svxViewAt; /* drawing view location type */ typedef enum evxViewLocationType { VX_LOCATION_AUTO, /* automatic set-up */ VX_LOCATION_CENTER, /* set center point */ VX_LOCATION_CORNER, /* set corner points */ } evxViewLocationType; /* drawing view location data */ typedef struct svxViewLocationData { evxViewLocationType type; /* drawing view location type */ svxPoint2 FirstPoint; /* the first point (ignore this if type is VX_LOCATION_AUTO ) */ svxPoint2 SecondPoint; /* the second point (ignore this if type is not VX_LOCATION_CORNER ) */ } svxViewLocationData; /* drawing view layout method */ typedef struct svxViewLayoutMethod { int projection; /* 1 if the first perspective, 2 if the third perspective default:2 */ int count; /* The number of valid values for "StdMethod" "count" has a maximum of 7 and a minimum of 1. default:3 */ evxViewStd StdMethod[7]; /* StdMethod[0] is base view orientations, others are projection view orientations StdMethod[0] is in the range of VX_VIEW_FRONT to VX_VIEW_LEFT other StdMethod is in the range of VX_VIEW_FRONT to VX_VIEW_ISO default:[0]= VX_VIEW_FRONT,[1]=VX_VIEW_TOP,[2]=VX_VIEW_RIGHT */ } svxViewLayoutMethod; /* drawing view layout data */ typedef struct svxViewLayoutData { vxPath name; /* file path + file name (including the extension) */ svxViewLocationData location; /* location */ int isIgnoreLoc; /* 1 if ignore location and use default,else 0 */ svxViewLayoutMethod method; /* layout method */ int isIgnoreMethod; /* 1 if ignore method and use default,else 0 */ svxViewAt viewAttr; /* view attribute */ int isIgnoreAttr; /* 1 if ignore viewAttr and use default,else 0 */ int coordinate; /* coordinate,default:0 */ vxName PartConfig; /* part config name ,PartConfig[0]=0 to ignore */ vxName CompConfig; /* component configuration name, CompConfig[0]=0 to ignore */ int ExplodedView; /* exploded view ,default:0 */ int state; /* index for the backup feature, default:-1 */ int DimensionType; /* 0 if projected, 1 if true. default:0. */ int isCalculate; /* 1 if calculate part center ,else 0. default:0 */ } svxViewLayoutData; /* drawing view standard data */ typedef struct svxViewStandardData { vxPath path; /* file path */ vxLongName fileName; /* file name (including the extension) */ vxLongName rootName; /* root name */ int type; /* 1 is use view manager custom view name(this manager in part environment), 2 is use flattening feature name of a sheet metal module(this manager in part environment), 0 is use native type */ union uvxViewTypeData { vxName viewName; /* view Name. if type = 1,apply it. */ vxName flatName; /* flatten Name. if type = 2, apply it. */ evxViewTypeEx viewType; /* View type(1-7,28-34,39). if type = 0,apply it. */ } option; svxPoint2 location; /* location */ int isIgnoreAttr; /* 1 if ignore viewAttr and use default,else 0 */ svxViewAt viewAttr; /* view attribute */ int origin; /* Origin ,default:0 */ int coordinate; /* coordinate,default:0 */ vxName partConfig; /* part config name ,PartConfig[0]=0 to ignore */ vxName compConfig; /* component configuration name, CompConfig[0]=0 to ignore */ int explodedView; /* exploded view ,default:0 */ int isDispTrails; /* 1 if display exploded trails ,else 0.default:0 */ int state; /* index for the backup feature, default:0 */ int dimensionType; /* 0 if projected, 1 if true. default:0. */ int isCalculate; /* 1 if calculate part center ,else 0. default:0 */ int isOrientation; /* 1 if view orientation from parent, else 0. default:0 */ } svxViewStandardData; typedef struct svxRefEntData { vxLongName fileName; /* file name */ vxLongName partName; /* part name */ vxLongName shellName; /* shell name*/ svxEntPath compPath; /* pick-path of the component */ char entClass; /* 0: component; 1: solid shell; 2: surface shell */ int depth; /* depth of the component (top=0,1,2...) */ }svxRefEntData; /* projection types of "trim to curves" */ typedef enum evxTrimCrvsProjtype { VX_TRIMCRV_IN_PLACE, /* in place(none) */ VX_TRIMCRV_FACE_NORMAL, /* face normal */ VX_TRIMCRV_DIRECTED, /* directed */ VX_TRIMCRV_BI_DIRECTIONAL, /* bi-directional */ } evxTrimCrvsProjtype; /* template command Trim to Curves input data */ typedef struct svxTrimToCurvesData { int cntFcs; /* count of idFaces */ int* idFaces; /* list of id face */ int cntCrvs; /* count of idCurves */ int* idCurves; /* list of id curve */ int toKeep; /* 0 is faces to keep, 1 is faces to remove */ int cntPnts; /* count of sides */ svxPntOnEnt* sides; /* point on ent */ // Settings evxTrimCrvsProjtype projection; /* projection */ svxVector* dirction; /* direction, NULL to ignore */ int isCheckerboard; /* 1 is trim to checkerboard, else 0 */ int isExtend; /* 1 is extend curves to boundary, else 0 */ } svxTrimToCurvesData; /* Hole type */ typedef enum evxCfgThreadCmd { VX_NO_CMD = 0, /* null */ VX_FTHOLEMAIN = 1, /* Create holes */ VX_FTTWKHOLE = 2, /* Change the parameters of a hole without a history regen whether or not the hole is a native ZW3D feature. */ VX_FTASSEMHOLE = 3, /* Create hole in assembly */ VX_FTHOLEASGN = 4, /* puts a feature into the active part's history to identify a hole from selected geometry */ VX_CDHOLEPLUG = 5, /* Create new holes centered in existing holes */ VX_CDTHRDADD = 6, /* Add multiple/single thread attribute to cylindrical face */ }evxCfgThreadCmd; /* conversion factor */ typedef struct svxCf { double value; /* value */ vxName name; /* name (null-terminated string) */ evxNumType klass; /* class */ unsigned char id; /* unique id ( see evxUnitType , evxAngUnitType and evxMassUnitType) */ }svxCf; /* config table infos */ typedef struct svxPartCfgInfo { vxName ConfigName; /* configuration name */ int CfgIdx; /* configuration id */ int ConfigId; /* the row number of the table(0,1,...) */ svxColor colorval; /* color of attributes or config table*/ int fCfged; /* 1 if colorval exist,else 0 */ /* regen object infos */ struct svxRegenObjs { int idx; /* index of regenerate object */ int suppressed; /* -1 if undefined */ vxName expr; /* the expression of condition suppressed*/ } *RegenObjs; int CntRO; /* numbers of "RegenObjs" */ /* feature dimension infos */ struct svxFtrDimensions { svxUid uid; /* feature uid of the dimension */ int DataId; /* dimension's data id in the feature */ int DimIdx; /* index of dimension */ int fAssm; /* 1,the dimension should be in assembly tree*/ vxName value; /* value of the dimension */ svxCf unit; /* unit for value */ int ftr; /* auxiliary data */ } *FtrDim; int CntFD; /* numbers of "FtrDim" */ /* profile dimension infos */ struct svxProfDimensions { int DimIdx; /* index of dimension */ vxName value; /* value of dimension */ svxCf unit; /* unit for value */ } *ProfDim; int CntPD; /* numbers of "ProfDim" */ /* equation manager infos */ struct svxVariables { int EqIdx; /* index of Variables */ char type; /* type of Variables */ vxName value; /* value of Variables */ svxCf unit; /* unit for value */ } *var; int CntVar; /* numbers of "var" */ /* attribute properties infos */ struct svxAttributes { int AttrIdx; /* index of Attributes */ evxAtItemId itemId; /* The standard id of the part attribute item. */ char type; /* type of Attributes */ char SubType; /* subtype of Attributes */ double dvalue; /* 0 if undefined */ vxLongName expr; /* the expression of condition suppressed*/ int fCfged; /* 0 if undefined */ int fUserDefined; /* 1 if the value is user defined, else 0, only used for calculated attributes */ svxCf unit; /* unit for value */ } *attr; int CntAttr; /* numbers of "attr" */ /* component infos */ struct svxComponents { int CompIdx; /* index of component */ int suppressed; /* -1 if undefined */ vxName expr; /* the expression of condition suppressed*/ int PartStateId; /* -1 if undefined */ vxName CfgName; /* the CfgName, alway is empty*/ svxColor color; /* color of components */ int fCfged; /* 1 if color exist,else 0 */ } *comp; int CntComp; /* numbers of "comp" */ /* thread infos */ struct svxThreads { svxUid uid; /* feature uid of the dimension */ int FtrIdx; /* index of feature */ evxCfgThreadCmd fCmd; /* 1: FTHOLEMAIN, 2: FTTWKHOLE, 3: FTASSEMHOLE, 4: FTHOLEASGN, 5: CDHOLEPLUG, 6:CDTHRDADD */ vxName threadType; /* thread Type */ vxName threadsize; /* thread size */ vxName threadDia; /* thread Diameter */ vxName pitch; /* pitch */ vxName threadUnit; /* Thread Unit */ } *threads; int CntThreads; /* numbers of "threads" */ /* thread depth infos */ struct svxThreadDeps { svxUid uid; /* feature uid of the dimension */ int FtrIdx; /* index of feature */ evxCfgThreadCmd fCmd; /* 1: FTHOLEMAIN, 2: FTTWKHOLE, 3: FTASSEMHOLE, 4: FTHOLEASGN, 5: CDHOLEPLUG, 6:CDTHRDADD */ int deptype; /* depth type of thread */ vxName depth; /* depth of thread */ } *ThreadDeps; int CntTD; /* numbers of "ThreadDeps" */ /* constraint of component or assembly infos */ struct svxAligns { int AlignIdx; /* index of component */ int suppressed; /* -1 if undefined */ vxName expr; /* expression of align */ } *align; int CntAlign; /* numbers of "align" */ /* constraint value infos */ struct svxAlignValue { int AlignIdx; /* index of component */ svxUid uid; /* feature uid of the dimension */ int DataId; /* the value's data id in the feature */ vxName ValValue; /* value of align */ svxCf unit; /* unit for value */ } *AlignValue; int CntAV; /* numbers of "AlignValue" */ /* feature's vdata infos */ struct svxFtrVdataVal { svxUid uid; /* feature uid of the vdata */ int DataId; /* data id in the feature */ int idx_ftr; /* index of feature */ int fAssm; /* 1,the feature is a assembly feature*/ vxName value; /* value of feature */ int ftr; /* auxiliary data */ svxCf unit; /* unit for value */ } *FtrVdataValue; int CntFVV; /* numbers of "FtrVdataValue" */ /* outside defined infos */ /* variables preceded by "*" are not used to drive the seed part */ struct svxOutDefVal { vxName key; /* key of outside defined value */ vxName value; /* value of outside defined value */ } *OutDefVal; int CntODV; /* numbers of "OutDefVal" */ /* list of regen object failed */ int *RegenObjsFailed; int CntROF; /* numbers of "RegenObjsFailed" */ } svxPartCfgInfo; /* option of chamfer in sheeting or sketch */ typedef enum evxSkChamferOpt { VX_CHMOPT_SETBACK = 0, /* a chamfer of equal setback values between two curves */ VX_CHMOPT_TWOSETBACK, /* a chamfer with different setback values between two curves */ VX_CHMOPT_SETBACKANDDIS /* a chamfer by specifying the setback and an angle */ } evxSkChamferOpt; /* option of trim in chamfer/fillet of sheeting or sketch */ typedef enum evxSkChamferTrimOpt { VX_CHMTRIM_NO = 0, /* No trim/extend is performed */ VX_CHMTRIM_BOTH, /* Trim/Extend both curves */ VX_CHMTRIM_FIRST, /* Trim/Extend only the first selected curve */ VX_CHMTRIM_SECOND /* Trim/extend only the second selected curve */ } evxSkChamferTrimOpt; /* control the path of extended curves in chamfer/fillet of sheeting or sketch */ typedef enum evxSkChamferExtenOpt { VX_CHMEXT_LINEAR = 1, /* The extension follows a linear path */ VX_CHMEXT_CIRCULAR, /* The extension follows an arc path in the direction of curvature */ VX_CHMEXT_REFLECT /* The extension follows a reflective path opposite the direction of curvature */ } evxSkChamferExtenOpt; /* information of chamfer in sheeting or sketch */ typedef struct svxSkChamferData { evxSkChamferOpt chamferOpt; /* option of chamfer */ int idFirCurve; /* first specified curve */ svxPoint2 firPnt; /* a point on the first curve */ int idSecCurve; /* second specified curve */ svxPoint2 secPnt; /* a point on the second curve */ double firSetBack; /* first setback value, when chamferOpt is VX_CHMOPT_SETBACK it represents setback value */ double secSetBack; /* second setback value, only needed when chamferOpt is VX_CHMOPT_TWOSETBACK */ double angValue; /* specifying the angle of the first curve, only needed when chamferOpt is VX_CHMOPT_SETBACKANDDIS */ evxSkChamferTrimOpt chmTrimOpt; /* trim (or extend) curves */ evxSkChamferExtenOpt chmExtOpt; /* control the path of extended curves */ } svxSkChamferData; /* information of fillet in sheeting or sketch */ typedef struct svxSkFilletData { int idFirCurve; /* first specified curve */ svxPoint2 firPnt; /* a point on the first curve */ int idSecCurve; /* second specified curve */ svxPoint2 secPnt; /* a point on the second curve */ double radius; /* radius of fillet */ int designArc; /* flag to use design arc, 0 no else yes */ evxSkChamferTrimOpt fltTrimOpt; /* trim (or extend) curves */ evxSkChamferExtenOpt fltExtOpt; /* control the path of extended curves */ } svxSkFilletData; /* dimension off type */ typedef enum evxDimLineOffset { VX_DIM_OFFSET_LOL = 1, /* line to line */ VX_DIM_OFFSET_LOP = 2, /* point to line */ } evxDimLineOffset; /* dimension Line type */ typedef enum evxDimLineType { VX_DIM_LINE_LH = 1, /* horizontal dimension */ VX_DIM_LINE_LV = 2, /* vertical dimension */ VX_DIM_LINE_LA = 3, /* aligned dimension */ VX_DIM_LINE_LR = 4, /* rotated dimension */ VX_DIM_LINE_LP = 5, /* projected dimension */ VX_DIM_LINE_LO = 6, /* ordinate dimension */ } evxDimLineType; /* dimension Line Mode */ typedef enum evxDimLineMode { VX_DIM_LINE_MODE_B = 2, /* lingrp baseline */ VX_DIM_LINE_MODE_C = 3, /* lingrp continuous */ VX_DIM_LINE_MODE_O = 4, /* lingrp ordinate */ } evxDimLineMode; /* balloon text Condition */ typedef enum evxBalloonCon { VX_BALLOON_CON_USERTEXT = 0, /* user text */ VX_BALLOON_CON_ID = 1, /* id */ VX_BALLOON_CON_NAME = 2, /* name */ VX_BALLOON_CON_NUMBER = 3, /* number */ VX_BALLOON_CON_CLASS, /* class */ VX_BALLOON_CON_DESIGNER, /* designer */ VX_BALLOON_CON_COST, /* cost */ VX_BALLOON_CON_SUPPLIER, /* supplier */ VX_BALLOON_CON_MATERIAL, /* material */ VX_BALLOON_CON_QUANTITY, /* quantity */ VX_BALLOON_CON_MANAGER, /* manager */ VX_BALLOON_CON_REMARKS, /* remarks */ VX_BALLOON_CON_DESCRIPTION, /* description */ VX_BALLOON_CON_KEYWORDS, /* keywords */ VX_BALLOON_CON_DERIVEDFROM, /* derived from */ VX_BALLOON_CON_STARTDATE, /* start date */ VX_BALLOON_CON_ENDDATE, /* end date */ VX_BALLOON_CON_MASS, /* mass */ VX_BALLOON_CON_VOLUME, /* volume */ VX_BALLOON_CON_TOTALMASS, /* total mass */ VX_BALLOON_CON_DENSITY, /* density */ VX_BALLOON_CON_PARTCFG, /* part config */ VX_BALLOON_CON_FILEPATH, /* source file path */ VX_BALLOON_CON_SIZE, /* size */ VX_BALLOON_CON_LENGTH, /* length */ VX_BALLOON_CON_WIDTH, /* width */ VX_BALLOON_CON_HEIGHT, /* height */ VX_BALLOON_CON_AREA, /* area */ VX_BALLOON_CON_LEGEND, /* legend */ VX_BALLOON_CON_STOCKSIZE, /* stock size */ VX_BALLOON_CON_VISIBLE, /* visible */ } evxBalloonCon; /* Callout Elements */ typedef enum evxCalloutEmt { VX_CALLOUTEMT_INVALID = 0x00000000, /* all is not valid */ VX_CALLOUTEMT_QUALITY = 0x00000001, /* Quality */ VX_CALLOUTEMT_DIAMETER = 0x00000002, /* Diameter */ VX_CALLOUTEMT_DIAMETER_D2 = 0x00000004, /* Diameter(D2) */ VX_CALLOUTEMT_DEPTH = 0x00000008, /* Depth */ VX_CALLOUTEMT_DEPTH_H2 = 0x00000010, /* Depth(H2) */ VX_CALLOUTEMT_THREAD_DIA = 0x00000020, /* Thread Diameter */ VX_CALLOUTEMT_THREAD_PITCH = 0x00000040, /* Thread Pitch */ VX_CALLOUTEMT_THREAD_DEPTH = 0x00000080, /* Thread Depth */ VX_CALLOUTEMT_ANGLE = 0x00000100, /* Angle */ VX_CALLOUTEMT_CALLOUT_LABEL = 0x00000200, /* Callout Label */ VX_CALLOUTEMT_MULTIPLE_LINE = 0x00000400, /* Multiple Lines */ VX_CALLOUTEMT_SLOT_LENGTH = 0x00000800, /* Slot Length */ VX_CALLOUTEMT_VALID = 0xFFFFFFFF /* all is valid */ } evxCalloutEmt; /* Hole Callout */ typedef struct svxDwgHoleCallOutDim { int idView; /* id of View */ int cntCrv; /* no. of Holes data items */ int* pCrvs; /* list of Holes data */ int ignoreDup; /* Ignore duplicate hole callout, 1 is ignored,0 not, default value:0*/ unsigned int iCalloutemt; /* Callout Elements by evxCalloutEmt combined, default value:VX_CALLOUTEMT_VALID*/ }svxDwgHoleCallOutDim; /* data of constraint dimension */ typedef struct svxDwgConsDim { evxDimLineType type; /* type of dimension default value:horizontal method*/ svxPntOnEnt firstPnt; /* first point */ svxPntOnEnt secondPnt; /* second point */ svxPntOnEnt textPnt; /* text point */ }svxDwgConsDim; /* Linear Offset */ typedef struct svxDwgLineOffsetDim { evxDimLineOffset type; /* type of dimension default value:VX_DIM_OFFSET_LOL*/ svxPntOnEnt firstPnt; /* first point */ svxPntOnEnt secondPnt; /* second point */ svxPntOnEnt textPnt; /* text point */ }svxDwgLineOffsetDim; /* Linear */ typedef struct svxDwgLineDim { svxDwgConsDim cons; /* constraint dimension */ double angle; /* dimmesion angle default value:0, only when cons.type is VX_DIM_LINE_LR*/ svxPntOnEnt dirPnt; /* use Line data only when cons.type is VX_DIM_LINE_LP */ }svxDwgLineDim; /* Baseline, Continuous */ typedef struct svxDwgLineGrpDim { svxDwgLineDim sub; /* Linear constraint dimension */ int cntCrv; /* no. of Points data items */ svxPntOnEnt* Points; /* list of "cntCrv" Points */ }svxDwgLineGrpDim; /* Ordinate */ typedef struct svxDwgOrdinateDim { svxDwgLineDim sub; /* Linear constraint dimension */ int cntCrv; /* no. of Points data items */ svxPntOnEnt* Points; /* list of "cntCrv" Points */ int reverseAxis1;/* reverse direction, default value:0 */ int reverseAxis2;/* reverse direction, default value:0 */ int idEnt; /* Share origin is set only when subGrp.sub.cons.type is VX_DIM_LINE_LO*/ svxPntOnEnt textPnt[2]; /* Horizontal(textPnt[0]) and Vertical(textPnt[1]) text point in ordinate*/ }svxDwgOrdinateDim; /* Balloon*/ typedef struct svxDwgBalloonDim { evxBalloonCon condition; /* Text condition, default value:VX_BALLOON_CON_ID*/ char* text; /* text string */ int cntCrv; /* no. of Location data items */ svxPntOnEnt* Points; /* list of "cntCrv" points */ int cntlead; /* no. of Lead pnts data items */ svxPntOnEnt* leadPoints; /* list of "cntlead" points */ }svxDwgBalloonDim; /* Datum Control*/ typedef struct svxDwgFtrCtrl { char* text; /* FCS text name */ int cntCrv; /* no. of Location data items */ svxPntOnEnt* Points; /* list of "cntCrv" points */ int cntlead; /* no. of Lead pts data items */ svxPntOnEnt* leadPoints; /* list of "cntlead" points */ int cntauxiLoc; /* no. of Auxiliary location data items */ svxPntOnEnt* auxiPoints; /* list of "cntauxiLoc" points */ }svxDwgFtrCtrl; /* Center Mark Settings */ typedef struct svxCenterDim { double cmSize; /* center line/mark size (short dash), default value:4.254534*/ double breakLen; /* extension lines break length (gap), default value:1.5*/ double overRun; /* extension lines overrun, default value:3.06324*/ double scaleFac; /* overall scale factor, default value:1*/ }svxCenterDim; typedef enum { VX_DM_CENMARK = 1, /* center mark type: only a center cross */ VX_DM_CENLINE, /* center mark type: a center cross and gap and lines */ VX_DM_CENDLINE /* center mark with dotted line */ }evxCentDimType; /*Center Mark */ typedef struct svxCenterMark { int idEntity; /* entity id */ svxPoint zEntPnt; /* critical point of the entity */ char useRotPnt; /* 0: not use; 1: use rotation point */ svxPntOnEnt zRotPnt; /* rotation point */ evxCentDimType cmType; /* center mark type, default value:VX_DM_CENLINE */ svxCenterDim zCenterDim; /* option param: center dimension attribute */ int slotType; /* Slot center mark type, valid when entity is a hole, default value:1 */ /* 1: Slot centers; */ /* 2: Slot ends */ }svxCenterMark; typedef enum evxCenterLineType { VX_CL_BY_TWO_LINES = 1, /* draw by two lines */ VX_CL_BY_TWO_POINTS, /* draw by two points */ }evxCenterLineType; /* Center Line*/ typedef struct svxCenterLine { evxCenterLineType iDimType; /* 1: by two lines; 2: by two points, default value:VX_CL_BY_TWO_LINES*/ svxPntOnEnt zPntStart; /* start point */ svxPntOnEnt zPntEnd; /* end point */ svxCenterDim zCenterDim; /* option param: center dimension attribute */ }svxCenterLine; typedef enum evxRotViewType { VX_ROTVIEW_TOP = 1, /* top */ VX_ROTVIEW_FRONT = 2, /* front */ VX_ROTVIEW_RIGHT, /* right */ VX_ROTVIEW_BACK , /* back */ VX_ROTVIEW_BOTTOM , /* bottom */ VX_ROTVIEW_LEFT , /* left */ VX_ROTVIEW_ISOMETRIC , /* isometric */ VX_ROTVIEW_ISOMETRIC_LFT , /* isometric_left-front-top */ VX_ROTVIEW_ISOMETRIC_LBT , /* isometric_left-back-top */ VX_ROTVIEW_ISOMETRIC_RBT , /* isometric_right-back-top */ VX_ROTVIEW_ISOMETRIC_RFB , /* isometric_right-front-bottom */ VX_ROTVIEW_ISOMETRIC_LFB , /* isometric_left-front-bottom */ VX_ROTVIEW_ISOMETRIC_LBB , /* isometric_left-back-bottom */ VX_ROTVIEW_ISOMETRIC_RBB , /* isometric_right-back-bottom */ } evxRotViewType; typedef enum evxAxisType { VX_AXIS_X = 1, /* x axis */ VX_AXIS_Y = 2, /* y axis */ VX_AXIS_Z = 3, /* z axis */ } evxAxisType; /* Rotate View */ typedef struct svxDwgRotView { int idView; /* id of View */ evxRotViewType view; /* type of View, default value:VX_ROTVIEW_TOP*/ evxAxisType axis; /* type of Axis, default value:VX_AXIS_Z*/ double angle; /* rotate angle default value:0*/ }svxDwgRotView; typedef enum evxOriginType { VX_TOP_LEFT = 0, /* Top-Left */ VX_TOP_CENTER = 1, /* Top-Center */ VX_TOP_RIGHT = 2, /* Top-Right */ VX_MID_LEFT , /* Mid-Left */ VX_MID_CENTER , /* Mid-Center */ VX_MID_RIGHT , /* Mid-Right */ VX_BOTTOM_LEFT , /* Bottom-Left */ VX_BOTTOM_CENTER , /* Bottom-Center */ VX_BOTTOM_RIGHT , /* Bottom-Right */ } evxOriginType; /* Insert Table */ typedef struct svxDwgTblInsert { int idTable; /* insert table id */ svxPoint2 crtpnt; /* Point */ evxOriginType origin; /* Origin, default value:VX_TOP_LEFT*/ }svxDwgTblInsert; typedef enum evxLevelSet { VX_TOP_LEVEL_ONLY = 0, /* Top-level only */ VX_PARTS_ONLY = 1, /* Parts only */ VX_INDENTED = 3, /* Indented */ VX_BALLOON_ONLY = 4, /* by balloon only */ } evxLevelSet; typedef enum evxIndentedType { VX_NO_NUM = 0, /* No numbering */ VX_DETAILED_NUM = 1, /* Detailed numbering */ VX_FLAT_NUM = 2, /* Flat numbering */ } evxIndentedType; typedef enum evxOrderType { VX_ORDER_BYNAME = 0, /* Order by name */ VX_ORDER_REGEN_IDS = 1, /* Regenerate IDs after sort */ VX_ORDER_ASASM = 2, /* Order as assembly */ } evxOrderType; typedef enum evxBomset { VX_BOM_INVALID = 0x0000, /* all is not valid */ VX_SET_DISP_CFG = 0x0001, /* Display configurations of the same as one item */ VX_DERIVED_PARTS = 0x0002, /* Derived parts as instances of source part */ VX_SYNC_BOM = 0x0004, /* Sync BOM table with part attributes */ VX_KEEP_MISSING = 0x0008, /* Keep missing item */ VX_STRIKE_THROUGH = 0x0010, /* Strikethrough */ VX_BOM_VALID = 0xFFFF /* all is valid */ } evxBomset; /* BOM */ typedef struct svxDwgBom { int idView; /* id of View */ char* name; /* name */ evxLevelSet level; /* Level Setting, default value:VX_TOP_LEVEL_ONLY*/ evxIndentedType indent; /* Indented type, default value:VX_DETAILED_NUM*/ int checkMax; /* Max traverse depth, default value:0*/ int Maxdepthval; /* Max traverse depth value, default value:1 */ int bomset; /* Settings by evxBomset, default value:VX_DERIVED_PARTS */ int startID; /* starting ID, default value:1*/ evxOrderType order; /* Order, default value:VX_ORDER_BYNAME*/ }svxDwgBom; /* select geometry entity type */ typedef enum evxAutoEntType { DIM_AUTO_ENT_ALL = 0, /* entity type is all */ DIM_AUTO_ENT_ARC_CIRCLE, /* entity type is all arc/circle */ DIM_AUTO_ENT_PICKED /* entity type is picked by user */ }evxAutoEntType; typedef enum evxAutoDimType { DIM_AUTO_BASELINE = 0, /* baseline */ DIM_AUTO_CONTINUOUS = 1, /* continuous */ DIM_AUTO_ORDINATE = 2, /* ordinate dimension */ DIM_AUTO_LABEL_COORDINATE = 3, /* label ordinate dimension */ }evxAutoDimType; typedef enum evxAutoPlacement { DIM_VIEW_ABOVE_LEFT = 0, /* left or above of view */ DIM_VIEW_BELOW_RIGHT, /* right or below of view */ DIM_VIEW_BOTH, /* both of view */ }evxAutoPlacement; /* auto dimension include */ typedef enum evxAutoInclude { VX_AUTOINC_INVALID = 0x00000000, /* all is not valid */ VX_AUTOINC_ARC = 0x00000001, /* Include arc */ VX_AUTOINC_CIRCLE = 0x00000002, /* Include circle */ VX_AUTOINC_HOLE = 0x00000004, /* Include hole */ VX_AUTOINC_LINE = 0x00000008, /* Include line */ VX_AUTOINC_HOLE_CALLOUT = 0x00000010, /* Include Hole callout */ VX_AUTOINC_CYLIND_DIM = 0x00000020, /* Include cylindrical dimensions */ VX_AUTOINC_MAXIMUM_DIM = 0x00000040, /* Include maximum dimensions */ VX_AUTOINC_VALID = 0xFFFFFFFF /* all is valid */ } evxAutoInclude; typedef struct svxAutoSet { int enable; /* svxAutoSet enabled or not */ evxAutoDimType type; /* select dimension type */ svxPntOnEnt refPnt; /* reference point, used when enable is 1*/ evxAutoPlacement viewType; /* dimensions position / placement, default value:DIM_VIEW_BELOW_RIGHT*/ int asgrp; /* 1:vertical dimensions are as group dimension* 0:not, default value:1*/ }svxAutoSet; /* auto dimension */ typedef struct svxDimAuto { int idView; /* index of View */ evxAutoEntType entType; /* select entity type, default value:DIM_AUTO_ENT_ALL*/ int cntEnt; /* entity ID count if evxAutoEntType is DIM_AUTO_ENT_PICKED */ int* pEntId; /* entity ID list */ unsigned int incAuto; /* evxAutoInclude mask */ int checkOrg; /* origin check flag, default value:1*/ svxPntOnEnt pntOrg; /* origin reference point, member critPnt should be entity critical point */ svxAutoSet horDim; /* horizontal dimensions position/placement */ svxAutoSet verDim; /* vertical dimensions position/placement */ }svxDimAuto; /*Label*/ typedef struct svxDimLabel { int localPntCnt; /* localPnts list count */ svxPntOnEnt* localPnts; /* localPnts info */ int leadPntCnt; /* leadPnts list count */ svxPntOnEnt* leadPnts; /* leadPnts info */ char* text; /* text content to be shown */ }svxDimLabel; /* view projection type */ typedef enum evxViewPrjAngType { VX_VIEW_PRJANG1ST = 1, /* 1st angle */ VX_VIEW_PRJANG3RD = 2, /* 3rd angle */ } evxViewPrjAngType; /* view dimension type*/ typedef enum evxViewDimType { VX_VIEW_DIMTYPEPRJ = 0, /* dimension type : Projected */ VX_VIEW_DIMTYPETRUE = 1, /* dimension type : True */ } evxViewDimType; /* Projection or Auxiliary view's projection settings */ typedef struct svxPrjSetting { evxViewPrjAngType prjType; /* Projection or Auxiliary view's projection angle (VX_VIEW_PRJANG3RD as default)*/ evxViewDimType dimType; /* Projection or Auxiliary view's dimension type (VX_VIEW_DIMTYPEPRJ as default)*/ } svxPrjSetting; /* view projection arrow */ typedef struct svxViewArrow { double offset; /* view line offset distance (20.0 as default)*/ int iFlag; /* iFlag = 0, startPnt and entPnt will use default value (user input is invalid) iFlag > 0, startPnt and entPnt of user input are valid*/ svxPoint2 startPnt; /* arrow start location */ svxPoint2 endPnt; /* arrow end location */ } svxViewArrow; /* Auxiliary view data */ typedef struct svxAuxViewData { int idView; /* the id of base view */ int idLine; /* line to define auxiliary view plane (this must be a line)*/ svxPoint2 locPnt; /* view location */ svxPrjSetting settings; /* projection settings */ svxViewArrow arrowInfo; /* view arrow */ } svxAuxViewData; /* section method type */ typedef enum evxSecMtdType { VX_METHOD_SECCURVE = 1, /* Section Method : Sect Curves */ VX_METHOD_TRIMPART = 2, /* Section Method : Trimmed Part */ VX_METHOD_TRIMSURF = 3, /* Section Method : Trimmed Surface */ } evxSecMtdType; /* section location */ typedef enum evxLocType { VX_LOC_HORIZONTAL = 1, /* Location : Horizontal */ VX_LOC_VERTICAL = 2, /* Location : Vertical */ VX_LOC_ORTHOGONAL = 3, /* Location : Orthogonal */ VX_LOC_NONE = 4, /* Location : None */ } evxLocType; /* section method */ typedef struct svxViewSecMtd { evxSecMtdType mtdType; /* section method (VX_METHOD_TRIMPART as default)*/ int iCloseOpenProf; /* close open profiles or not (1 as default)*/ int iDynScalAng; /* dynamic hatch scaling and angle or not (1 as default)*/ int inheritSecBasView; /* inherit section from base view or not if base view is not section view, this value can be ignored if base view is section view, this value equals to 0 or 1*/ evxLocType locType; /* location type (VX_LOC_ORTHOGONAL as default)*/ evxViewDimType dimType; /* dimension type (VX_VIEW_DIMTYPEPRJ as default)*/ double dSecDepth; /* section depth (if mtdType = VX_METHOD_SECCURVE, this can be ignored.)*/ } svxViewSecMtd; /* section line */ typedef struct svxViewSecLine { char* viewLabel; /* view label (example: "A" becomes "A-A") the label doesn't duplicate the existing label null or "" to use default label*/ int iFlipArrow; /* flip arrow or not (0 as default)*/ int iShowStepLines; /* show step lines or not (0 as default)*/ } svxViewSecLine; /* section option */ typedef struct svxViewSecOp { int iSecState; /* component section state from part */ int iHatchState; /* component hatch state from part */ int iHatchClr; /* hatch color from part */ } svxViewSecOp; /* full section view data */ typedef struct svxFulSecViewData { int idView; /* the id of base view to section */ int iCnt; /* the count of the points */ svxPoint2* pPnts; /* points to define section */ svxPoint2 locPnt; /* the location for section view */ svxViewSecMtd secMtd; /* section method */ svxViewSecLine secLine; /* section line */ svxViewSecOp secOp; /* section option */ } svxFulSecViewData;
Sheet Metal Design struct data
/* Sheet Metal surface type */ typedef enum evxSmdSurfaceType { VX_SMD_SURF_NONE, /* undefined */ VX_SMD_SURF_OTHER, /* other type */ VX_SMD_SURF_SIDE, /* side of sheet metal */ VX_SMD_SURF_FLANGE_STAT, /* flange face on one side of stationary face */ VX_SMD_SURF_FLANGE_STAT_PAIR, /* the flange face of the opposite side of the stationary face */ } evxSmdSurfaceType; /* K-factor Definition type */ typedef enum evxSmdKFactorType { VX_SMD_KTYPE_CUSTOM, /* custom */ VX_SMD_KTYPE_FROM_MATERIAL, /* from material */ VX_SMD_KTYPE_BEND_TABLE, /* bend table */ VX_SMD_KTYPE_BEND_ALLOWANCE_TABLE, /* bend allowance table */ VX_SMD_KTYPE_BEND_ALLOWANCE_FORMULA, /* bend allowance formula */ VX_SMD_KTYPE_BEND_DEDUCTION_TABLE, /* bend deduction table */ VX_SMD_KTYPE_BEND_DEDUCTIOIN, /* bend deduction */ VX_SMD_KTYPE_BEND_ALLOWANCE, /* bend allowance, svxExtrudeFlangeData::kType do not apply it. */ } evxSmdKFactorType; /* Smd Flange Parameters Position */ typedef enum evxSmdPosition { VX_POSITION_MATERIAL_INSIDE, /* Material inside */ VX_POSITION_MATERIAL_OUTSIDE, /* Material outside */ VX_POSITION_NATURAL, /* Natural */ VX_POSITION_OFFSET, /* Offset */ VX_POSITION_VIRTUAL_SHARP, /* Virtual sharp */ }evxSmdPosition; /* Smd Bend Attributes Length type */ typedef enum evxSmdBendLengthType { VX_BEND_STANDARD_LENGTH, /* Standard length */ VX_BEND_OUTER_HEIGHT, /* Outer height */ VX_BEND_INNER_HEIGHT, /* Inner height */ VX_BEND_EXTRAPOLATED_LENGTH, /* Extrapolated length */ }evxSmdBendLengthType; /* Smd Relief type */ typedef enum evxSmdRelief { VX_RELIEF_RECTANGLE, /* Rectangle */ VX_RELIEF_OBROUND, /* Obround */ VX_RELIEF_NONE, /* None */ }evxSmdRelief; /* the enumeration is used to determine whether the values in the "svxSmdReliefData" are custom */ typedef enum evxSmdCalCustom { VX_CUSTOM_RELIEF = 0x00000001, /* "relief" is a custom value */ VX_CUSTOM_ISWIDTHRATIO = 0x00000002, /* "isWidthRatio" is a custom value */ VX_CUSTOM_RELIEFWIDTH = 0x00000004, /* "ReliefWidth" is a custom value */ VX_CUSTOM_ISDEPTHRATIO = 0x00000008, /* "isDepthRatio" is a custom value */ VX_CUSTOM_RELIEFDEPTH = 0x00000010, /* "ReliefDepth" is a custom value */ } evxSmdCalCustom; /* Smd Relief data */ typedef struct svxSmdReliefData { int isCustom; /* the value of "isCustom" indicates whether the following variables use custom values(evxSmdCalCustom) ( 1 ~~ 31 ) if isCustom = VX_CUSTOM_ISWIDTHRATIO | VX_CUSTOM_RELIEFWIDTH, "isWidthRatio" and "ReliefWidth" are custom value, other values use global default */ evxSmdRelief relief; /* relief type.default is VX_RELIEF_OBROUND */ int isWidthRatio; /* 1 if relief width ratio,else 2 is value. default is 1 */ double ReliefWidth; /* ratio or value. default is 1.5 */ int isDepthRatio; /* 1 if relief depth ratio,else 2 is value. default is 1 */ double ReliefDepth; /* ratio or value. default is 0 */ }svxSmdReliefData; /* Smd Relief type of Corner Attributes */ typedef enum evxSmdCornerRelief { VX_CORNER_RELIEF_CLOSED, /* closed */ VX_CORNER_RELIEF_CIRCULAR_CUTOUT, /* circular cutout */ VX_CORNER_RELIEF_RECTANGULAR_CUTOUT, /* rectangular cutout */ VX_CORNER_RELIEF_U_CUTOUT, /* U cutout */ VX_CORNER_RELIEF_V_CUTOUT, /* V cutout */ } evxSmdCornerRelief; /* Smd Bend Type of Hem Flange */ typedef enum evxSmdHemBendType { VX_SMD_HEM_BEND_CLOSED, /* Close */ VX_SMD_HEM_BEND_OPEN, /* Open */ VX_SMD_HEM_BEND_CLOSEDLOOP, /* Closed loop */ VX_SMD_HEM_BEND_OPENLOOP, /* Open loop */ VX_SMD_HEM_BEND_CENTEREDLOOP, /* Centered loop */ VX_SMD_HEM_BEND_SBEND, /* S bend */ VX_SMD_HEM_BEND_CURL, /* Curl */ } evxSmdHemBendType; /* Smd extrude type */ typedef enum evxExtFlangeType { VX_EXTFLANGE_1SIDE, /* 1 side */ VX_EXTFLANGE_2SIDES, /* 2 sides */ VX_EXTFLANGE_SYMMETRICAL, /* symmetrical */ } evxExtFlangeType; NOTE: The global default values of the following Smd interfaces are set and obtained through cvxPartSmdAtGet/cvxPartSmdAtSet. If you do not set this parameter,the interface is used by default. The default value in the other comments is the default value provided by the platform. If you do not enter the default value in the comments, 0 will be used as the parameter input. /* template command Smd Extrude Tab data */ typedef struct svxSmdExtrudeTabData { int idProfile; /* id of profile */ double* Thickness; /* thickness. NULL to use global default */ int isMerge; /* 1 if merge, else 0 as default */ int isOpposite; /* 1 if opposite the direction of the tab,else 0 as default */ int idMergeShape; /* id of the shape to be merged. Note:since 2700, this parameter must be set, if you don't set this parameter before, you.can find the shape where the profile is located as the base shape. } svxSmdExtrudeTabData; /* template command Smd Extrude Flange data */ typedef struct svxExtrudeFlangeData { int idProfile; /* id of profile */ evxExtFlangeType extType; /* extrude type */ double start; /* start distance */ double end; /* end distance */ double* thickness; /* thickness. NULL to use default */ int isOpposite; /* 1 if opposite the direction of the tab,else 0 (default:0) */ double* radius; /* radius NULL to use default */ evxSmdKFactorType* kType; /* k_factor definition type. NULL to use default */ double* kValue; /* k_factor. NULL to use default */ svxPntOnEnt* PntOnCrv; /* rip point, point on curve, (NULL to ignore) */ double RipSize; /* rip size. the minimum value of "RipSize" is twice the tolerance */ } svxExtrudeFlangeData; /* template command Smd Full Flange data */ typedef struct svxSmdFullFlangeData { int count; /* count of "idEdges" */ int* idEdges; /* list of idEdge*/ int isFlip; /* 1 if flip the flanges, else 0 as default */ evxSmdPosition* position; /* flange parameters position. NULL to use global default */ double* offset; /* offset, if position = VX_POSITION_OFFSET,apply it. NULL to use global default */ evxSmdKFactorType* kType; /* k_factor definition type. NULL to use global default */ double* kValue; /* k_factor. NULL to use global default */ double* tol; /* Flat Tolerance. NULL to use global default */ int isResolve; /* 1 if resolve flange interference ,else 0 as default */ double gap; /* Gap. 0.5 is default */ // Bend Attributes int bend; /* bend, 0 if simple, 1 if S bend. default is 0 */ double* radius1; /* radius r1. NULL to use global default */ double angle; /* angle (> 0). 90 as default */ evxSmdBendLengthType* lengthType; /* length type. NULL to use global default */ double* length; /* length. NULL to use global default */ double* radius2; /* radius r2, if bend = 0, ignore this. NULL to use global default */ int sBendSize; /* S bend size (1 is length, 0 is height), if bend = 0, ignore this. */ double Size; /* size (height or length), if bend = 0, ignore this */ // Relief int isDefSepa; /* 1 if define each side separately ,else 0 as default */ svxSmdReliefData* startRelief; /* relief of start */ svxSmdReliefData* endRelief; /* relief of end. if isDefineSeparately = 0, ignore this */ // Corner Attributes /* evxSmdCornerRelief | the following variables is valid VX_CORNER_RELIEF_CLOSED | isMiter,corGap VX_CORNER_RELIEF_CIRCULAR_CUTOUT | isMiter,corGap,corOrigin,corOffset,corDiameter VX_CORNER_RELIEF_RECTANGULAR_CUTOUT | isMiter,corGap,corOrigin,corOffset,corLength,corWidth VX_CORNER_RELIEF_U_CUTOUT | isMiter,corGap,corOrigin,corOffset,corDiameter VX_CORNER_RELIEF_V_CUTOUT | isMiter,corGap,corOrigin,corOffset,corDiameter,corAngle1,corAngle2 int* isCorner; /* 1 if close corner, else 0. NULL to use global default if isCorner = 0, ignore the following variables */ int* isMiter; /* 1 if miter corner, else 0. NULL to use global default */ evxSmdCornerRelief* corRelief; /* corner relief type. NULL to use global default */ double* corGap; /* corner Gap. NULL to use global default */ int* corOrigin; /* 0 is bend center, 1 is corner point. NULL to use global default */ double* corOffset; /* offset. NULL to use global default */ double* corLength; /* length. NULL to use global default */ double* corWidth; /* width. NULL to use global default */ double* corDiameter; /* diameter. NULL to use global default */ double* corAngle1; /* angle 1. NULL to use global default */ double* corAngle2; /* angle 2. NULL to use global default */ }svxSmdFullFlangeData; /* template command Smd Flange with Profile data */ typedef struct svxSmdFlangeProfData { int idEdge; /* id of edge */ int* idProfile; /* id of profile, NULL to ignore */ evxSmdPosition *position; /* position type. NULL to use global default */ double* offset; /* offset. if *position = VX_POSITION_OFFSET, using this. NULL to use global default */ // Bend Attributes double* radius; /* radius. NULL to use global default */ double angle; /* angle (0-180). 90 as default */ evxSmdBendLengthType* lengthType; /* length type. NULL to use global default */ double* length; /* length. NULL to use global default */ // K-factor Definition evxSmdKFactorType* kType; /* k_factor definition type. NULL to use global default */ double* kValue; /* k_factor. NULL to use global default */ // Relief int isRelief; /* 1 if relief for insufficient length , else 0 as default */ int isDefSepa; /* 1 if define each side separately ,else 0 as default */ svxSmdReliefData* startRelief; /* relief of start */ svxSmdReliefData* endRelief; /* relief of end. if isDefineSeparately = 0, ignore this */ double* tol; /* Flat Tolerance. NULL to use global default */ } svxSmdFlangeProfData; /* template command Smd Partial Flange data */ typedef struct svxSmdPartialFlangeData { int idEdge; /* id of edge */ int isRevert; /* 1 if switch start point, else 0 as default */ int isFlip; /* 1 if flip the flange, else 0 as default */ int widthType; /* 0 is Start-Width, 1 is Start-End. default is 0 */ double start; /* start(>=0) */ double end; /* end(!=start). if widthType = 1, using this */ double width; /* width(>=start). if widthType = 0 ,using this */ evxSmdPosition *position; /* position type. NULL to use global default */ double* offset; /* offset. if *position = VX_POSITION_OFFSET, using this. NULL to use global default */ // Bend Attributes int bend; /* bend, 0 if simple, 1 if S bend. default is 0 */ double* radius1; /* radius r1. NULL to use global default */ double angle; /* angle (>0). 90 as default */ evxSmdBendLengthType* lengthType; /* length type. NULL to use global default */ double* length; /* length. NULL to use global default */ double* radius2; /* radius r2, if bend = 0, ignore this. NULL to use global default */ int sBendSize; /* S bend size (1 is length, 0 is height), if bend = 0, ignore this. */ double Size; /* size (height or length), if bend = 0, ignore this */ // K-factor Definition evxSmdKFactorType* kType; /* k_factor definition type. NULL to use global default */ double* kValue; /* k_factor. NULL to use global default */ // Relief int isRelief; /* 1 if relief for insufficient length , else 0 as default */ int isDefSepa; /* 1 if define each side separately ,else 0 as default */ svxSmdReliefData* startRelief; /* relief of start */ svxSmdReliefData* endRelief; /* relief of end. if isDefSepa = 0, ignore this */ double* tol; /* Flat Tolerance. NULL to use global default */ } svxSmdPartialFlangeData; /* template command Smd Hem Flange data */ typedef struct svxSmdHemFlangeData { int hemType; /* 0 is Full hem, 1 is Partial hem. default is 0 */ int isFlip; /* 1 if flip the hems, else 0 as default */ union uvxSmdHemData { struct svxSmdFullHemData /* if hemType = 0, using the following variables */ { int count; /* count of idEdges */ int* idEdges; /* list of idEdge.*/ // Miter int isMiterHem; /* 1 if miter hem, else 0 as default */ double gapSize; /* miter gap size. if isMiterHem = 1, apply it. default is 0.1 */ } full; struct svxSmdPartHemData /* if hemType = 1, using the following variables */ { int idEdge; /* id of edge */ int widthType; /* 0 is Start-Width, 1 is Start-End. default is 0 */ double start; /* start(>=0) */ double end; /* end(>=start). if widthType = 1, using this */ double width; /* width(>=start). if widthType = 0 ,using this */ int isRelief; /* 1 if relief for insufficient length, else 0 as default */ svxPntOnEnt *startPnt; /* use "To Point" to get the value of "start" (NULL to use start) */ svxPntOnEnt *endPnt; /* use "To Point" to get the value of "end" (NULL to use end) */ svxPntOnEnt *widthPnt; /* use "To Point" to get the value of "width" (NULL to use width) */ }partial; } hemData; evxSmdPosition *position; /* position type. NULL to use global default */ double* offset; /* offset. if *position = VX_POSITION_OFFSET, using this. NULL to use global default */ // bend attributes /* bendType | apply variables VX_SMD_HEM_BEND_CLOSED | length1 VX_SMD_HEM_BEND_OPEN | length1,radius1 VX_SMD_HEM_BEND_CLOSEDLOOP | length1,radius1 VX_SMD_HEM_BEND_OPENLOOP | radius1,angle VX_SMD_HEM_BEND_CENTEREDLOOP | isEqualRadii,radius1,radius2,angle VX_SMD_HEM_BEND_SBEND | isEqualRadii,length1,length2,radius1,radius2 VX_SMD_HEM_BEND_CURL | length1,length2,radius1,radius2 evxSmdHemBendType bendType; /* bend type. default is VX_SMD_HEM_BEND_CLOSED */ int isEqual; /* 1 if equal radii ,else 0 as default */ double length1; /* Length L1 */ double length2; /* Length L2 */ double* radius1; /* Radius R1. NULL to use global default */ double* radius2; /* Radius R2. NULL to use global default */ double angle; /* angle( >1). 270 as default */ // K-factor Definition evxSmdKFactorType* kType; /* k_factor definition type. NULL to use global default */ double* kValue; /* k_factor. NULL to use global default */ // Relief int isDefSepa; /* 1 if define each side separately ,else 0 as default */ svxSmdReliefData* startRelief; /* relief of start */ svxSmdReliefData* endRelief; /* relief of end. if isDefSepa = 0, ignore this */ } svxSmdHemFlangeData; /* inter curve*/ typedef struct svxInterCrvData { int iEntCout1; /* The number of faces selected for the first field */ int iEntCout2; /* The number of faces selected for the second field */ int* idEnt1; /* Select all face ids for the first field */ int* idEnt2; /* Select all face ids for the second field */ int trim; /* 1 to trim intersection curves to face boundaries; 0 does not not trim the curves*/ /* 1 default*/ } svxInterCrvData; /* ECAD */ typedef enum evxEcadRgnSetType { VX_ROUTING_RGN = 0, /* routing region */ VX_PLACEMENT_RGN = 1, /* placement region */ VX_VIA_RGN = 2, /* via region */ VX_OTHER_RGN = 3, /* other region */ VX_PLACEMENT_GRP_RGN = 4,/* placement group region */ }evxEcadRgnSetType; typedef enum evxEcadRgnOwner { VX_MCAD_RGN = 0, /* MCAD region */ VX_ECAD_RGN = 1, /* ECAD region */ VX_UNOWNED_RGN = 2, /* unowned region */ }evxEcadRgnOwner; typedef struct svxEcadRgnSetData { evxEcadRgnSetType Type; /* the type of the region setting */ int idCosmeticSk; /* id of the cosmetic sketch */ int Volume; /* 3d volume (0 as default) */ double Height; /* region height(0.0 as default) */ int KeepType; /* 0-keep in, 1- keep out (0 as default, 1 as default if Type = VX_VIA_RGN) */ vxLongName RgnType; /* input the region type (Type = VX_OTHER_RGN) */ evxEcadRgnOwner Owner; /* region owner */ evxColor Color; /* region color (VX_COLOR_LIGHT_MAGENTA as default) */ }svxEcadRgnSetData;
custom command definition and execution
extern void cvxCmdBuffer(const char *String, int Priority); extern void cvxCmdCallback(const vxName Name, void *Function); extern int cvxCmdEval(vxName Name, int idData); extern int cvxCmdExec(int idData); extern int cvxCmdExec2(int idData); extern int cvxCmdExecWithOut(int idData, int *idOut); extern int cvxCmdFunc(const vxName Name, void *Function, double Code); extern int cvxCmdChkLic(const vxName Name); extern int cvxCmdFuncUnload(const vxName Name); extern int cvxCmdInput(const vxName Name, int idDataIn, int *idDataOut); extern int cvxCmdInteract(vxName Name); extern void cvxCmdInqActive(vxName Name); extern int cvxCmdMacro(char *Input, char **Output); extern int cvxCmdMacro2(char *path); extern void cvxCmdMarker(vxName Okay, vxName Cancel); extern void cvxCmdSend(char *CommandString); extern int cvxCmdTemplate(vxPath File); extern int cvxCmdTemplateUnload(vxPath File); extern int cvxCmdRegisterRcc(vxName File); extern int cvxCmdUnRegisterRcc(vxName File); extern void cvxCmdVariable(vxName Name, void *Variable); extern int cvxCmdVariableUnload(const vxName Name); extern int cvxCmdStateGet(vxName CmdName, evxCmdState *isEnable); extern int cvxCmdStateSet(vxName CmdName, evxCmdState State); extern void cvxEchoColorGet(evxColor *Color); extern void cvxEchoColorSet(evxColor Color); extern void cvxEchoColorAtSet(svxWireAt *at); extern void cvxEchoColorAtGet(svxWireAt *at); extern void cvxEchoCustomStart(); extern void cvxEchoCustomEnd(); extern void cvxEchoDraw(); extern void cvxEchoStart(); extern void cvxEchoEnd(); extern void cvxEchoEscDisable(); extern void cvxEchoEscRestore(); extern int cvxCmdAction(evxCmdAction type, svxCmdActionParam* param); extern int cvxMacroInqPath(vxPath path, vxLongName file);
command template definition
extern int cvxTplInqFnCust(vxName Name, int NumBytes, char *FnName); extern int cvxTplInqFnEcho(vxName Name, int NumBytes, char *FnName); extern int cvxTplInqFnInit(vxName Name, int NumBytes, char *FnName); extern int cvxTplInqFnTerm(vxName Name, int NumBytes, char *FnName);
input data management for custom commands
extern int cvxDataClear(int idData, int idField); extern int cvxDataDel(int idData, int idField); extern int cvxDataDelItem(int idData, int idField, int iEnt); extern int cvxDataDelUnHi(int idData, int idField); extern int cvxDataFree(int idData); extern int cvxDataGetAll(int idData, int *numFld, svxFldData **fldData); extern int cvxDataGet(int idData, int idField, svxData *Data); extern int cvxDataGetColor(int idData, int idField, svxColor *Color); extern int cvxDataGetEnt(int idData, int idField, int *idEnt, int *idParent); extern int cvxDataGetEnts(int idData, int idField, int *Count, int **idEnts); extern int cvxDataGetList(int idData, int idField, int *Count, svxData **Data); extern int cvxDataGetNum(int idData, int idField, double *Number); extern int cvxDataGetOpt(int idData, int idField); extern int cvxDataGetPath(int idData, int idField, int *FirstEnt, svxEntPath*); extern int cvxDataGetPnt(int idData, int idField, svxPoint*); extern int cvxDataGetPnts(int idData, int idField, int *Count, svxPoint**); extern int cvxDataGetPromote(int idData, int idField, int *Promote); extern int cvxDataGetText(int idData, int idField, int NumBytes, char*); extern int cvxDataGetMatrix(int idData, int idField, svxMatrix *Matrix); extern int cvxDataGetItemList(int idData, int idField, int *Count, int **idItems); extern int cvxDataGetItemData(int idItem, svxData *Data); extern int cvxDataGrpRem(int idData, int idField, int idItem); extern int cvxDataInqActive(int *idData); extern int cvxDataInit(const vxName Template, int *idData); extern int cvxDataSet(int idData, int idField, svxData *Data); extern int cvxDataSetColor(int idData, int idField, svxColor *Color); extern int cvxDataSetPath(int idData, int idField, svxEntPath*); extern int cvxDataSetPromote(int idData, int idField, int Promote); extern int cvxDataSetPntOnCrv(int idData, int idField, int idCrv, svxPoint*); extern int cvxDataSetPntOnFace(int idData, int idField, int idComp, int idFace); extern int cvxDataSetPntOnFace2(int idData, int idField, int idFace, svxPoint*); extern int cvxDataSetPntByPath(int idData, int idField, svxEntPath *, svxPoint*); extern int cvxDataSetPntOnEnt(int idx_data, int idFld, const svxPntOnEnt* data); extern int cvxDataSetMatrix(int idData, int idField, const svxMatrix* mat); extern int cvxDataToFeature(int idData, int idFeature, int ExcludeRegen); extern void cvxDataZero(svxData *Data); extern char* cvxDataName(int idData);
manage forms
extern void cvxFormActiveField(int *idField); extern void cvxFormCallback(vxName Name, void *Function); extern int cvxFormFieldGetCallback(const char* form, int field, void** callback); extern int cvxFormCreate(char *Form, int Display); extern int cvxFormFieldVisSet(const char *form, int field, int state); extern void cvxFormFunc(vxName Name, void *Function, double Code); extern void cvxFormKill(char *Form); extern void cvxFormLogKill(char *Form); extern int cvxFormDataGet(char *Form, char **Data); extern int cvxFormDataSet(char *Form, char *Data); extern int cvxFormInqFld(vxName Name, int *Count, svxTplFld **Fields); extern void cvxFormRefresh(char *Form); extern void cvxFormShow(char *Form); extern void cvxFormHide(char *Form); extern int cvxFormState(char *Form); extern void cvxFormTitleGet(char *Form, int NumBytes, char *Title); extern void cvxFormTitleSet(char *Form, char *Title); extern void cvxFormUpdate(int idField); extern int cvxFormWait(char *Form); extern void cvxFormWaitExit(int ReturnValue); extern int cvxFormGetSize(const char* Form, int *Width, int *Height); extern int cvxFormResize(char* Form, int Width, int Height); extern int cvxFormAdjustSize(const char* Form);
manage fields within a form
extern void cvxFieldCaretSet(char *Form, int idField, int Position); extern void cvxFieldClear(char *Form, int idField); extern void cvxFieldDisable(char *Form, int idField); extern void cvxFieldEnable(char *Form, int idField); extern int cvxFieldEnableGet(char *Form, int idField); extern void cvxFilterItemApply(const char*, const char*); extern void cvxFieldFocusSet(char *Form, int idField); extern int cvxFieldInitFont(const char *Form, int idField, const char *Name,int hasZwFont); extern void cvxFieldImageSet(char *Form, int idField, char *Image); extern void cvxFieldNumItems(char *Form, int idField, int *NumItems);
manage items within a field of a form
extern void cvxItemAdd(char *Form, int idField, char *Text); extern void cvxItemCbxSet(char *Form, int idField, int idItem, int isOn); extern void cvxItemDel(char *Form, int idField, int idItem); extern void cvxItemFind(char *Form, int idField, char *Text, int *idItem); extern void cvxItemGet(char *Form, int idField, int idItem, char *Text); extern void cvxItemModify(const char *Form, int idField, int idItem, const char *Text); extern void cvxItemSelect(char *Form, int idField, int idItem); extern void cvxItemSelectText(char *Form, int idField, char *Text); extern void cvxItemSelected(char *Form, int idField, int *idItem); extern void cvxItemSet(char *Form, int idField, int idItem, char *Text); extern void cvxItemStateGet(char *Form, int idField, int idItem, int *isOn); extern void cvxItemStateSet(char *Form, int idField, int idItem, int isOn); extern int cvxItemGetCheckState(char *Form, int idField, int idItem, int *checkState);
manage a list widget on a form
extern int cvxListCallbackParamGet(const char* form, int idField, svxListCallBackParam* param); extern int cvxListItemToolTipSet(const char* form, int field, int row, const char* toolTip); extern int cvxListItemToolTipGet(const char* form, int field, int row, char* toolTip, int size);
manage a popup menu
extern int cvxPopupSetVisible(const char* name, int visible); extern int cvxPopupShow(const char* name); extern int cvxPopupDefine(const char* name); extern int cvxPopupSubMenuSetVisible(const char* name, const char* sub, int visible); extern int cvxPopupSubMenuItemInsert(const char* Name, const char* Sub, int index, const char* ActName, const char* Label, const char* Script, const char* Icon); extern int cvxPopupSubMenuSeparatorInsert(const char* Name, const char* Sub); extern int cvxPopupSubMenuItemRemove(const char* name, const char* Sub, int index); extern int cvxPopupMenuCnt(const char* Name, int* cnt); extern int cvxPopupSubMenuCnt(const char* Name, const char* Sub, int* cnt); extern int cvxPopupSubMenuActionsRemove(const char* Name, const char* Sub, int iFirst, int iLast); extern int cvxPopupItemSetVisibleByAction(const char* name, const char* action, int visible); extern int cvxPopupItemSetEnabledByAction(const char* name, const char* action, int enabled); extern int cvxPopupItemSetCheckedByAction(const char* name, const char* action, int checked); extern int cvxPopupItemIsExist(const char* name, const char* action); extern int cvxPopupUpdate(const char* Name); extern int cvxPopupItemActionGet(const char* name, int item, char* Action, int nByte); extern int cvxPopupItemLabelGet(const char* name, int item, char* Label, int nByte); extern int cvxPopupItemVisibleGet(const char* name, int item, int* Visible); extern int cvxPopupItemRemove(const char* name, int index); extern int cvxPopupItemInsert(const char* name, int index, const char* Label, const char* Action); extern int cvxPopupItemSetAction(const char* name, int index, const char* Action); extern int cvxPopupItemCheckedGet(const char* name, int group, int item, int* Check);
manage ribbon
extern void cvxRibbonSetStatus(int enable);
manage a table on a form
extern int cvxTableAtSet(char *Form, int idTable, svxTableAt *At); extern int cvxTableComboSet(char *Form, int idTable, int Row, int Col, char *Options); extern int cvxTableIndexComboSet(char *Form, int idTable, int Row, int Col, char *Options); extern int cvxTableInputComboSet(char *Form, int idTable, int Row, int Col, char *Options); extern int cvxTableSizeSet(char *Form, int idTable, int NumRow, int NumCol); extern void cvxTableVisSet(char *Form, int idTable, int Row, int Col); extern int cvxTableCellTextSet(char *Form, int idTable, int Row, int Col, char*text); extern int cvxTableCellTextGet(char *Form, int idTable, int Row, int Col, char*text, int nBytes); extern int cvxTableComboSet2(const char* Form, int idTable, int Row, int Col, char *Options, char *Images); extern int cvxTableIndexComboSet2(const char* Form, int idTable, int Row, int Col, char *Options, char *Images); extern int cvxTableInputComboSet2(const char* Form, int idTable, int Row, int Col, char *Options, char *Images); extern int cvxTableComboSetOption(const char* Form, int idTable, int Row, int Col, int Index, char *IdxText); extern int cvxTableComboGet(const char* Form, int idTable, int Row, int Col, int* Index, char* Text, int nBytes); extern int cvxTableCellTextSet2(const char* Form, int idTable, int Row, int Col, char* Text, char* Image); extern int cvxTableCheckSet(const char* Form, int idTable, int Row, int Col, int Check); extern int cvxTableIsCheck(const char* Form, int idTable, int Row, int Col); extern int cvxTableDateSet(const char* Form, int idTable, int Row, int Col, int Date, evxDateType DateType); extern int cvxTableDateGet(const char* Form, int idTable, int Row, int Col, int* Date, evxDateType* DateType); extern int cvxTableColorSet(const char* Form, int idTable, int Row, int Col, const svxColor* Color, int ClrIdx, unsigned char Type); extern int cvxTableColorGet(const char* Form, int idTable, int Row, int Col, svxColor* Color, int* ClrIdx, unsigned char* Type); extern int cvxTableNumSet(const char* Form, int idTable, int Row, int Col, const char* Num); extern int cvxTableNumGet(const char* Form, int idTable, int Row, int Col, char* Num, int Bytes); extern int cvxTableTypeGet(const char* Form, int idTable, int Row, int Col, evxTableCellType* Type); extern int cvxTableCallBackParamGet(const char* Form, int idTable, svxTableCallBackParam* Param); extern void cvxTableCallBackParamFree(svxTableCallBackParam *param); extern void cvxTableCellEnableSet(const char* Form, int idTable, int Row, int Col, int State); extern int cvxTableRowInsert(const char* Form, int idTable, int Row); extern int cvxTableRowRemove(const char* Form, int idTable, int Row); extern int cvxTableRowCnt(const char* Form, int idTable); extern int cvxTableColInsert(const char* Form, int idTable, int Col); extern int cvxTableColRemove(const char* Form, int idTable, int Col); extern int cvxTableColCnt(const char* Form, int idTable); extern int cvxTableSetSelRange(const char* Form, int idTable, svxRectangle *SelRange, int bSelect); extern int cvxTableGetSelRange(const char* Form, int idTable, int *RangeCnt, svxRectangle **SelRange); extern int cvxTableUnselectAll(const char* Form, int idTable); extern void cvxTableCellTipSet(const char* Form, int idTable, int Row, int Col, const char* tip); extern int cvxTableCellTipGet(const char* Form, int idTable, int Row, int Col, char* tip, int nBytes);
manage a tree widget on a form
extern int cvxTreeItemsCount(const char*form, int field); extern void cvxTreeSetColumnCount(const char* form, int field, int count); extern int cvxTreeGetColumnCount(const char* form, int field); extern void cvxTreeSetColumnWidth(const char* form, int field, int col, int width); extern int cvxTreeGetColumnWidth(const char* form, int field, int col); extern void cvxTreeSetColumnHidden(const char* form, int field, int col, int hide); extern int cvxTreeIsColumnHidden(const char* form, int field, int col); extern int cvxTreeHeaderGetSize(const char* form, int field, int* wid, int* hi); extern void cvxTreeSetHeaderText(const char* form, int field, int col, const char* text); extern int cvxTreeSetHeaderTextAlignment(const char* form, int field, int col, evxAlignFlag align); extern void cvxTreeSetHeaderIcon(const char* name, int field, int section, const char* icon); extern int cvxTreeSetSelectionMode(const char* form, int field, int mode); extern int cvxTreeSetSelectionBehavior(const char* form, int field, int behavior); extern int cvxTreeAddItem(const char *form,int field,int parentId,int siblingId,const char *label, int imgIdx,int folderIdx,evxTreeItemType itemType,int dbIdx,int itemflag,int *outItemId,const char* cmdName); extern int cvxTreeSetItemFlag(const char*form, int field, int count, int *ids, int flag); extern int cvxTreeGetItemFlag(const char*form, int field, int id, int* flag); extern int cvxTreeSetItemIconNameByColumn(const char *form, int field, int id, int col, const char* iconName); extern int cvxTreeSetItemTextByColumn(const char* form, int field, int id, int col, const char* text); extern void cvxTreeGetItemTextByColumn(const char* form, int field, int id, int col, char* text, int size); extern int cvxTreeSetItemTextColor(const char*form, int field, int id, int col, svxColor* color); extern int cvxTreeSelectItem(const char *form, int field, int id); extern int cvxTreeUnselectAll(const char *form, int field); extern int cvxTreeIsItemSelected(const char*form, int field, int id); extern int cvxTreeGetDBIdByItem(const char *form, int field, int id, int*dbid); extern int cvxTreeGetCbParam(const char*form, int field, int id, svxTreeCbParam* param); extern int cvxTreeDeleteItem(const char*form, int field, int id); extern int cvxTreeDeleteSubItem(const char*form, int field, int id); extern int cvxTreeEditItemByLineEdit(const char *form, int field, int id, int col, const char *defaultLabel); extern int cvxTreeEditItemByComboBox(const char *form, int field, int id, int col, const char *Options, const char *Images, int curIndex); extern int cvxTreeGetPrevSiblingItem(const char*form, int field, int id, int* prevId); extern int cvxTreeGetNextSiblingItem(const char*form, int field, int id, int* nextId); extern int cvxTreeGetChildItem(const char*form, int field, int id, int index, int*child); extern int cvxTreeGetChildrenCount(const char*form, int field, int id,int *count); extern int cvxTreeGetParentItem(const char*form, int field, int id, int *parent); extern int cvxTreeGetDescendants(const char *sName, int field, int isAll, int parent, int *num, int **ids); extern int cvxTreeGetSelectedItems(const char *form, int field, int *count, int **ids); extern int cvxTreeSetItemCheckable(const char *form, int field, int id, int checkable); extern evxTreeCheckState cvxTreeGetItemCheckState(const char *form, int field, int id); extern void cvxTreeSetItemCheckState(const char *form, int field, int id, evxTreeCheckState checkState, int extToChild); extern int cvxTreeMoveItems(const char *form, int field, int numNodes, int *ids, int insParentId, int siblingId); extern int cvxTreeItemIsExpand(const char*form, int field, int id); extern int cvxTreeExpandItem(const char*form, int field, int id, int option); extern void cvxTreeExpandAll(const char*form, int field); extern void cvxTreeCollapseAll(const char*form, int field); extern int cvxTreeAutoResizeColumn(const char *form, int field, int col);
manage combobox
extern int cvxComboCurrentItem(const char* sForm, int fldId, int* curIdx); extern int cvxComboSetCurrentItem(const char* sForm, int field, int item);
display management
extern void cvxDispColorGet(evxDispAttrib Type, evxColor *Color); extern void cvxDispColorSet(evxDispAttrib Type, evxColor Color); extern void cvxDispDataUpdate(void); extern int cvxDispGetLights(int *Count, svxLight **Lights); extern int cvxDispSetLights(int Count, svxLight *Lights); extern void cvxDispModeGet(evxDispMode *Mode); extern void cvxDispModeSet(evxDispMode Mode); extern void cvxDispRedraw(void); extern void cvxDispRgbGet(evxDispAttrib Type, svxColor *Rgb); extern void cvxDispRgbSet(evxDispAttrib Type, const svxColor *Rgb); extern void cvxDispState(int Option, vxDispState State); extern void cvxDispSwitch(evxDispItem Item, int isOn); extern void cvxDispSwitchGet(evxDispItem Item, int *isOn); extern void cvxDispZoomAll(int Redraw); extern void cvxDispZoomAllIncludeDim(int Redraw); extern void cvxDispZoomAt(const svxPoint point, const float factor); extern int cvxDispZoomLimits(void); extern int cvxDispZoomIn(int ZoomIn, const svxPoint2f StartPoint, const svxPoint2f EndPoint); extern int cvxDispWindowRectGet(const int includeFrame, const int isGlobal, int *x, int *y, int *h, int *w); extern void cvxAuxFrameShow(int idData, int entField, int matField); extern void cvxAuxFrameSetDirXYZOrgBuddy(int idData, int idXFld, int idYFld, int idZFld, int idOrgFld); extern void cvxMoveSetAuxFrameElem(int iElem); extern void cvxVisDispStatusGet(evxVisualDispItem Item, int *isOn); extern int cvxDatumDispModeGet(int idDatum, evxDatumDispMode *DispMode); extern void cvxDatumDispModeSet(int idDatum, evxDatumDispMode DispMode); extern void cvxDatumLocalVis(int iVisible);
layer management (active part or sheet)
extern int cvxActiveLayerNumGet(int* Number); extern int cvxActiveLayerNumSet(int Number); extern int cvxLayerId(vxName name, int *id); extern int cvxLayerInfoGet(int Number, svxLayerInfo* pLayerInfo); extern int cvxLayerInfoSet(int Number, const svxLayerInfo* pLayerInfo); extern int cvxLayerActivate(vxName Name); extern int cvxLayerInqEnts(int Number, int *numEnt, svxEntPath **Paths); extern int cvxLayerAssign(char* Name, int numEnt, int *idEnts); extern int cvxLayerAdd(char* Name); extern int cvxLayerAdd2(const svxLayerInfo* psLayerInfo, int *Number); extern int cvxLayerDel(vxName Name); extern int cvxLayerDel2(int Number); extern int cvxLayerExists(vxName Name); extern int cvxLayerExists2(int Number); extern void cvxLayerInqActive(vxName Name); extern int cvxLayerList(int *Count, vxName **Names); extern int cvxLayerName(int Number, vxName Name); extern int cvxLayerNum(vxName Name, int *Number); extern int cvxLayerShowAll(void); extern int cvxLayerStateGet(vxName Name, int *isVisible, int *isFrozen); extern int cvxLayerStateSet(vxName Name, int isVisible, int isFrozen); extern int cvxLayerSync(void); extern int cvxLayerIdModify(int srcNumber,int tarNumber); extern int cvxLayerGetAllCategory(int *numCate, vxLongName** categories); extern int cvxLayerInfoExport(vxPath file); extern int cvxLayerInfoImport(vxPath file, int overWrite);
view management
extern void cvxViewExtent(double Extent); extern void cvxViewGet(svxMatrix *Frame, double *Extent); extern void cvxViewSet(svxMatrix *Frame, double Extent); extern int cvxViewSetBndBox(double Scale, const svxBndBox *BndBox); extern void cvxViewOrigin(svxPoint *Origin); extern void cvxViewStd(evxViewStd Type, double NullExtent); extern int cvxCustomViewAdd(char *Name, int LyrVis, int ObjVis, int *idView); extern int cvxCustomViewActivate(int idView); extern int cvxCustomViewDel(int idView); extern int cvxCustomViewId(vxName Name, int *idView); extern int cvxViewIsSection(int idView); extern int cvxViewIsStandard(int idView); extern int cvxViewActivate(int idView); extern int cvxViewInqStandardType(int idView, evxViewStd* type);
config file management
extern int cvxUiSettingsCreate(char* Name, char* Base); extern int cvxUiSettingsRename(char* Name, char* Dest); extern int cvxUiSettingsRemove(char* Name); extern int cvxUiSettingsImport(char* Path); extern int cvxUiSettingsExport(char* Name, char* Path); extern int cvxUiSettingsExists(char* Name); extern int cvxUiSettingsApply(char* Name); extern int cvxUiSettingsReset(char* Name); extern int cvxUiSettingsCount(void); extern int cvxUiSettingsFetch(int i, char* Name);
cursor management
extern void cvxCursorSet(evxCursorType Type); extern void cvxCursorRestore(void);
error management
extern void cvxErrDisable(void); extern void cvxErrEnable(void);
message management
extern void cvxMsgAreaClose(void); extern void cvxMsgAreaOpen(void); extern void cvxMsgAreaState(int); extern void cvxMsgDisable(void); extern void cvxMsgDisp(char *Text); extern void cvxMsgEnable(void); extern int cvxMsgFileLoad(vxPath File, int *idFile); extern char *cvxMsgPtr(int idFile, int MessageNum); extern void cvxPromptDisable(void); extern void cvxPromptEnable(void); extern void cvxTranStatusDisable(void); extern void cvxTranStatusEnable(void); extern void cvxProgress(int iprogress); extern void cvxUserActionStatusGet(int *disableStatus); extern void cvxUserActionStatusSet(int disable); extern void cvxMsgDisp2(char *Text, int leval); extern int cvxUserActionStatusSet2(evxDialogType type, int value);
user input
extern int cvxGetAngle(char *Prompt, double *Angle); extern int cvxGetDistance(char *Prompt, double *Distance); extern int cvxGetNumber(char *Prompt, double *Number); extern int cvxGetEnt(char *Prompt,evxEntInpOpt,int EmptyOk,int*idEntity); extern int cvxGetEnts(char*Prompt,evxEntInpOpt,int EmptyOk,int*Count,int**idEnts); extern int cvxGetEntPath(char *Prompt, evxEntInpOpt Opt, int EmptyOk, svxEntPath *Path); extern int cvxGetEntPaths(char *Prompt, evxEntInpOpt Opt, int EmptyOk, int *Count, svxEntPath **Paths); extern int cvxGetExternalPick(const char *Prompt,evxPntInpOpt Opt,int EmptyOk,svxPoint *Point,svxEntPath *EntPath,svxMatrix *Matrix); extern void cvxGetFile(int Open,char*Prompt,char*Default,char*Filter,char*Path); extern void cvxGetFileActiveField(int Open,const char*Prompt,const char*Default,const char*Filter); extern void cvxGetFolder(char*Prompt, char*Default, char*Path); extern void cvxGetFolderActiveField(const char*Prompt,const char*Default); extern int cvxGetPoint(const char*Prompt,evxPntInpOpt,int EmptyOk,svxPoint*,int*idEnt); extern int cvxGetPoints(char*Prompt,evxPntInpOpt,int EmptyOk,int*Count,svxPoint**Points); extern int cvxGetResponse(int Option, char *Message); extern int cvxGetString(const char*Prompt,const char*Default,int NumBytes,char*String); extern int cvxMessageBox(int MsgType, int WndMode, const char* Title, const char* Message, const char* Btn1Str, const char* Btn2Str, int* Action);
color utilities
extern void cvxColorfToColor(const svxColorf* rgbf, svxColor* rgb); extern void cvxColorToColorf(const svxColor* rgb, svxColorf* rgbf); extern int cvxColorRGB(evxColor color, svxColor* rgb); extern evxColor cvxColorNear(const svxColor* rgb);
escape checking
extern int cvxEscCheck(void); extern void cvxEscDisable(int *EscapeState); extern void cvxEscRestore(int EscapeState); extern void cvxEscStart(void); extern void cvxEscEnd(void);
GUI framework
extern int cvxGetViewRect(int includeFrame, int isGlobal, int* tlX, int* tlY, int* brX, int* brY);
file management
extern int cvxFileActivate(vxPath Name); extern void cvxFileClose(void); extern void cvxFileClose2(vxPath Name, int Option); extern void cvxFileDirectory(vxPath Directory); extern int cvxFileExport(evxExportType Type, vxPath Path, void* Data); extern void cvxFileInqActive(char* Name, int nBytes); extern void cvxFileInqOpen(char* Name, int nBytes); extern int cvxFileNew(vxPath Name); extern int cvxFileNew2(vxPath Name, char *Description); extern int cvxFileNameCheck(char* fileName,int nBytes); extern int cvxFileOpen(vxPath File); extern int cvxFileSave(int Close); extern int cvxFileSave2(int Close); extern int cvxFileSave3(int Close, int DisPrompt, int Related); extern int cvxFileSaveAll(void); extern int cvxFilePreviewExtract(vxPath SrcFile, vxPath BmpFile); extern int cvxFileSaveAs(vxPath File); extern int cvxCompFileSaveAs(svxEntPath* CompPath, int UpdateFlag, vxPath File); extern int cvxFilesSaveTo(int Count, vxLongName *FileList, vxPath Path); extern void cvxFileDescriptionSet(vxPath Name, char *Description); extern int cvxFileDescriptionGet(vxPath Name, vxLongName Description); extern void cvxFileTypeGet(int *MultiObject); extern void cvxFileTypeSet(int MultiObject); extern int cvxFileCustomDataSet(vxPath file, char* data, int dataLength); extern int cvxFileCustomDataGet(vxPath file, char** data, int* dataLength); extern int cvxFileCustomDataDel(vxPath file); extern int cvxFileImportStl(const char *path, int *idOut); extern int cvxFileVersionGet(vxPath file, int* version); extern void cvxFileOpenList(int *count, vxLongName **fileList); extern int cvxFileLoadList(int state, int *count, vxLongName **fileList); extern int cvxFileIsModified(vxPath Name, int* Modified); extern int cvxFileInqAssociatedList(int *count, vxPath ** fileList); extern int cvxFileImport(svxImportData *importData); extern int cvxFileInqAsm(char* Name, int nBytes); extern char cvxFileInqAssemMode(void); extern int cvxFileAction(evxDocAction type, svxDocActionParam *param); extern int cvxFileSessionClear(vxLongName file); extern int cvxFileKeep(int fKeepOpen); extern int cvxPartSmdFlatSolidExport(int idFlatten, evxExportType type, vxPath filePath, void* data); extern int cvxPartSmdFlatPatternExport(int idFlatten, vxPath filePath, const svxDWGData* data);
session management
extern int cvxSessionClear(void); extern int cvxSessionRestore(void); extern int cvxSessionSave(void);
file management for single object file
extern int cvxFileNewSingle(vxPath fileName, evxFileType fileType, evxFileSubtype fileSubtype, const char * templateName, char* fileDescription); extern int cvxFileInqSubType(vxPath fileName, evxFileSubtype *fileSubtype);
path management
extern int cvxPathAdd(vxPath SearchDirectory); extern int cvxPathAddApiPath(vxName LibName, char *SubFolder); extern int cvxPathApiLib(vxName LibName, vxPath LibDirectory); extern int cvxPathCompose(vxPath Path, const char *Name); extern void cvxPathDel(vxPath Path); extern void cvxPathDelAll(void); extern void cvxPathDelim(vxPath Path); extern void cvxPathDir(vxPath FullPath, vxPath Directory); extern void cvxPathFile(vxPath FullPath, vxLongName FileName); extern void cvxPathFile2(char *FullPath, int MaxNameLen, char *FileName); extern int cvxPathFind(vxName FileName, vxPath FullPath); extern void cvxPathInstall(vxPath InstallDirectory); extern void cvxPathSearchFirst(vxPath Directory); extern void cvxPathTemp(vxPath Directory); extern void cvxPathUserFolder(vxPath Directory); extern int cvxPathIsDebug(const char *FolderName); extern int cvxPathSet(vxPath path); extern int cvxPathCheckActiveOnlyGet(); extern int cvxPathSearchGet(); extern void cvxPathCheckActiveOnlySet(int Value); extern void cvxPathSearchSet(int Value);
root object management
extern int cvxRootActivate(vxLongName Name); extern int cvxRootActivate2(vxLongName File, vxLongName Name); extern int cvxRootActivateLoadAsmCtx(vxLongName File, vxLongName Name, int isLoad); extern int cvxRootAdd(evxRootType Type, vxLongName Name,const char *Template); extern int cvxRootAdd2(evxRootType, vxLongName Name, const char *Template, char *Desc); extern int cvxRootAdd2Bg(evxRootType, vxLongName Name); extern int cvxRootCopy(vxLongName,vxLongName,vxLongName,vxLongName,int Overwrite,int UpdateUid); extern int cvxRootDel(vxLongName Name); extern void cvxRootExit(void); extern int cvxRootId(vxLongName Name, int *idRoot, evxRootType *Type); extern void cvxRootInqActive(char *Name, int nBytes); extern int cvxRootInqAsm(char *Name, int nBytes); extern int cvxRootInqMod(int *Mod); extern int cvxRootInqModByName(vxLongName fileName, vxLongName rootName, int* mod); extern int cvxRootInqModSinceRegen(int *Mod); extern int cvxRootList(vxLongName File, int *Count, vxLongName **Names); extern evxPreviewMode cvxRootPreviewGet(void); extern void cvxRootPreviewSet(evxPreviewMode Mode, vxLongName File, vxLongName Object); extern int cvxRootRename(vxLongName Name,vxLongName NewName,int Update); extern int cvxRootRename2(vxLongName Name, vxLongName NewName, char *Descript, int Update); extern int cvxRootRenameMulti(int Count, vxLongName* BinName, vxLongName* RootName, vxLongName* NewBinName, vxLongName* NewRootName, int fDelOrign); extern void cvxRootTemplateFile(vxLongName File); extern int cvxRootVarGet(vxLongName Name, svxVariable *Variable); extern int cvxRootVarSet(vxLongName Name,int Count,svxVariable*Var,int Working); extern void cvxRootVisibility(vxLongName Name, int Visible); extern int cvxRootCustomDataSet(vxLongName file, vxLongName objectName, char* data, int dataLength); extern int cvxRootCustomDataGet(vxLongName file, vxLongName objectName, char** data, int* dataLength); extern int cvxRootCustomDataDel(vxLongName file, vxLongName objectName); extern int cvxRootInqSymbol(vxLongName file, int *iCount, vxLongName**names); extern int cvxRootIsAsm(vxLongName File, vxLongName Part, int *isAsm); extern int cvxRootAtItemGet(vxLongName file, vxLongName root, evxAtItemId itemId, svxAttribute *at); extern int cvxRootAtItemSet(vxLongName file, vxLongName root, evxAtItemId itemId, svxAttribute *at); extern int cvxRootInqSheetMetal(vxLongName file, vxLongName part, int* shtMetal);
datum plane creation
extern int cvxPartDatum(svxMatrix *Frame, int *idDatum); extern int cvxPartDatum2(svxMatrix *Frame, int iCode, int *idDatum); extern int cvxPartNewDatum(svxMatrix *Frame, int *idDatum); extern int cvxPartPlnCrv(int idCrv,svxPoint*Origin,svxPoint*Xaxis, int *idPln); extern int cvxPartPlnCrv2(int idCrv,svxData*Origin,svxData*Xaxis,int Flip,int *idPln); extern int cvxPartPlnSrf(int idFace, svxPoint*Origin, int *idPln); extern int cvxPartPlnSrf2(int idFace,svxPoint*Origin,svxPoint*XZ,int Flip,int*idPln); extern int cvxPartAxisNew(svxAxisData *Axis, int *idAxis); extern int cvxPartCSYSNew(svxCSYSData *CSYS, int *idCSYS); extern int cvxPartPlaneNew(svxPlaneData *Plane, int *idPlane); extern int cvxPartPlaneAdd(const svxNewPlaneData* plane, int* idPlane); extern int cvxPartActiveAsLCS(int id);
datum plane/axis/csys data
extern int cvxAxisInqDir(int idAxis, svxPoint *pPnt, svxPoint *pDir); extern int cvxPlaneGetData(int idPlane, svxPlaneData* Plane); extern int cvxAxisGetData(int idAxis, svxAxisData* Axis); extern int cvxCSYSGetData(int idCSYS, svxCSYSData* CSYS);
datum plane/axis/csys query
extern int cvxPartInqAxis(int *Count, int **Axis); extern int cvxPartInqCsys(int *Count, int **Csys); extern int cvxPartInqDefaultCSYS(int *CSYS);
point/curve creation
extern int cvxPartArc3pt(svxPoint*Start,svxPoint*End,svxPoint*Mid,int*idEnt); extern int cvxPartArcRad(svxMatrix *Pln,double R,double S,double E,int *idEnt); extern int cvxPartCir3pt(svxPoint *P1, svxPoint *P2, svxPoint *P3 ,int *idEnt); extern int cvxPartCirRad(svxMatrix *Plane, double Radius, int *idEnt); extern int cvxPartCrvInt(svxCrvIntData *Crv, int *idEnt); extern int cvxPartCrvList(int Count, int *Curves, int *idEnt); extern int cvxPartCurve(svxCurve *Crv, int *idEnt); extern int cvxPartLine2pt(svxPoint *Start, svxPoint *End, int *idEnt); extern int cvxPartPnt(svxPoint *Point, int *idEnt); extern int cvxPartPntBlock(vxLongName, int Count, svxPointf *Points, int *idEnt); extern int cvxPartPnts(int Count, svxPoint *Points); extern int cvxPartPntsOnCrv(int idCrv, svxPoint*, int Num, double Dist, evxExtendOpt, int *Count, int **idEnts); extern int cvxPartEllipse(svxRectangleData *ellipseData, int *idEnt); extern int cvxPartRectangle(svxRectangleData *rectData, int *iCnt, int **idEnt); extern int cvxPartProjStl(int idStl, int idPln, double tol, double smth, int *idCurve); extern int cvxPartCurveSilh(int idCurve, svxPoint *dir, int *iCnt, int **idList); extern int cvxPartFittingCrv(int iCnt, svxPoint *pnts, double tol, double smth, int *idEnt); extern int cvxPartSpline(const svxSplineData* PntData, int *idEnt);
curve edit
extern int cvxPartCrvSplitAtPnts(int idCurve, int CountPnts, svxPoint *Points, int *CountCrvs, int **NewCrvs);
sketch creation
extern int cvxPartSkIns(vxLongName File,vxLongName Name,svxMatrix*Plane,int*idSketch); extern int cvxPartSkIns2(vxLongName File,vxLongName Name,int idPlane,int iAsso,int*idSketch); extern int cvxPartSkNew(svxMatrix *Plane, int *idEnt); extern int cvxPartSkPlane(svxSketchData *SkData, int *idSketch); extern int cvxPartCosSkPlane(const svxSketchData* SkData, int isAddHatPtn, const svxHatchPtnData* PatData, int* idSketch);
sketch/datum internal/external
extern int cvxPartMkEntExternal(int idEnt, int external);
shape creation
extern int cvxPartBox(svxBoxData *Box, int *idShape); extern int cvxPartInterXCurve(const svxInterCrvData *pSurf, int *idFtr); extern int cvxPartCyl(svxCylData *Cyl, int *idShape); extern int cvxPartCone(svxConeData *Cone, int *idShape); extern int cvxPartSphere(svxSphereData *Sphere, int *idShape); extern int cvxPartEllipsoid(svxEllsoData *Ellso, int *idShape); extern int cvxPartExtrude(svxExtrudeData *Ext, int *idShape); extern int cvxPartFace(svxSurface*, int NumCurves, svxCurve *TrimCurves, int Code, int Sew, double Tol, int *idFace); extern int cvxPartRefGeom(svxEntPath*, int Associative, int *idGeom); extern int cvxPartRevolve(svxRevolveData *Rev, int *idShape); extern int cvxPartSweep(svxSweepData *Swp, void *Options, int *idShape); extern int cvxPartIns(svxPartInstData *Part, int *Count, int **ShapeList);
shape intersection check
extern int cvxPartIsectShpChk(int idBaseShape, int idOpShape); extern int cvxPartIsectShpChk2(int idBaseShape, int idOpShape, int fClosedChk);
surface create
extern int cvxPartTrimmedPlane(svxTrimPlnData *data, int *newShp); extern int cvxPartExtendFace(svxExtendData *data, int*newFtr); extern int cvxPartNSided(const svxNSidedData * NSidedData, int *idShape); extern int cvxPartExplode(const svxExplodeData *ExplodeData, int *numShape, int **idShapes);
face edit
extern int cvxPartSetFaceAt(int Count, int *idFaces, const svxFaceAt *At); extern int cvxPartSetFaceTx(int idFace, const svxTextureAt *Tx); extern int cvxPartTrimToCrvs(const svxTrimToCurvesData* trimData, int* idTrim); extern int cvxPartTrimToFaces(const svxTrimToFacesData *data, int *idTrim);
facet block creation
extern int cvxPartFacets(vxLongName Name, svxFacets *Facets, int *idBlock);
facet block edit
extern int cvxPartFacetsMod(int idBlock, svxFacets *Facets); extern int cvxPartFacetsSetAt(int idBlock, const svxFaceAt *At); extern int cvxPartFacetsSetTx(int idBlock, const svxTextureAt *Tx);
feature creation
extern int cvxPartChamConst(int Count, int *Edges, double Sb); extern int cvxPartChamAng(int Cnt,int*Edges,int idFace,double Sb,double Angle); extern int cvxPartChamAsym(int Cnt,int*Edges,int idFace,double Sb1,double Sb2); extern int cvxPartChamferAll(const svxChamFlltData *Chamfer, int *idChamfer); extern int cvxPartFillet(int Count, int *Edges, double Radius); extern int cvxPartFilletAll(const svxChamFlltData *Fillet, int *idFillet); extern int cvxPartHole(svxHoleData *Data, int *idOp); extern int cvxPartThreadAt(int idFace, svxPoint *Pnt, svxThreadData *Thread); extern int cvxPartFaceOffset(int idFace, double Dis, int Keep); extern int cvxPartFacesOffset(const svxFcsOffsetData* data, int* idFtr); extern int cvxPartCurveOffset(int idCurve, double Dis, int *idOut); extern int cvxPartFacesetSew(int count, int *shapes, svxSewData* param, int *newFtr); extern int cvxPartShell(const svxShellData *Shell, int *idShell); extern int cvxPartMove(const svxMoveData *Move, int *idMove); extern int cvxPartCopy(const svxCopyData *Copy, int *idCopy); extern int cvxPartDraft(const svxDraftData *Draft, int *idDraft); extern int cvxPartRib(svxRibData *Rib, int *idRib); extern int cvxPartLip(svxLipData *Lip, int *idLip); extern int cvxPartStock(svxStockData *Stock, int *idShape); extern int cvxPartThicken(svxThickenData *Thicken, int *idShape); extern int cvxPartDivide(svxDivideData *Divide, int *numShape, int **idShapes); extern int cvxPartTrim(svxTrimData *Trim, int *numShape, int **idShapes); extern int cvxPartSimplify(int numEnts, int *idEnts, int *idSimplify); extern int cvxPartInlay(svxInlayData *Inlay, int *idInlay); extern int cvxPartLoft(svxLoftData *Loft, int *idShape); extern int cvxPartShapeFaceOffset(svxFaceOffData *Offset, int *idOffset); extern int cvxPartPatternGeom(int Count, int *idEnts, const svxPtnGeom *Pattern, int *idPattern); extern int cvxPartPatternFtr(int Count, int *idFtrs, const svxPtnFtr *Pattern, int *idPattern); extern int cvxPartFlagHoles(const svxFlagHoleData* data, int* idFtr); extern int cvxPartFlagExtThread(const svxFlagExtThreadData* data, int* idFtr);
assembly component
extern int cvxCompExtract(int idShape,svxMatrix*,vxLongName,int NewFile,evxResponse,int*idComp); extern int cvxCompEditPart(int idComp); extern int cvxCompEditPartByPath(const svxEntPath *compPath); extern int cvxCompFind(evxFaceTrim,svxAxis*,double Dist,int SkipBlank,int*Count,int**Comps); extern int cvxCompInqPart(int idComp, char *File, int nFileBytes, char *Part, int nPartBytes); extern int cvxCompInqPartByPath(svxEntPath *CompPath, vxLongName fileName, vxLongName partName); extern int cvxCompIns(svxCompData *Comp, int *idComp); extern int cvxLibPartIns(const svxCompData *Comp, const char *InstanceName, const char *ValStr, int fFileType, int fInsShape, int *idComp); extern int cvxLibPartAdjust(int idComp, const vxLongName File, const vxLongName Part, const char *ValStr, const char *InstanceName); extern int cvxCompIsectShpChk(svxEntPath *BaseShpPath, svxEntPath *OpShpPath, int *fInterfer); extern int cvxCompIsectShpChk2(svxEntPath *BaseShpPath, svxEntPath *OpShpPath, int fClosedChk, int *fInterfer); extern int cvxCompMerge(evxBoolType Combine,int idComp,int *idShape); extern int cvxCompMerge2(evxBoolType Combine,int idComp,int MergeDim, int MergeWire, int *idShape); extern int cvxCompRegenSet(int idComp, int Regen); extern int cvxCompSetPart(int idComp, vxLongName File, vxLongName Part); extern int cvxCompShift(int idComp); extern int cvxCompSuppressGet(int idComp, int *suppress); extern int cvxCompSuppress(int idComp, int suppress); extern int cvxAssemCompVisAll(int *nSize, int ** ppath_mode); extern int cvxAsmUpdateCompRef(const char *, const char *); extern int cvxCompIferCheck(svxEntPath *BaseComp, svxEntPath *ChkComp, int SubAsmAsWhole, int IgnoreHidden, int *IferCnt, svxIferChkResData **IferResults); extern int cvxCompInqPaths(svxEntPath *CompPath, int Depth, int IgnoreHidden, int *PathCnt, svxEntPath **lstPath); extern int cvxCompGetRefPart(int *Count, vxLongName** BinName, vxLongName** RootName); extern int cvxCompVisGet(svxEntPath *CompPath, int *Vis); extern int cvxCompVisSet(svxEntPath *CompPath, int Vis); extern void cvxCompHighlight(svxEntPath*CompPath, svxColor *color); extern void cvxCompUnHighlight(svxEntPath*CompPath); extern int cvxCompInqRenderMode(svxEntPath *CompPath, evxRenderMode *RenderMode); extern int cvxCompSetRenderMode(svxEntPath *CompPath, evxRenderMode RenderMode); extern int cvxCompFaceAtGet(const svxEntPath *CompPath, svxFaceAt *At); extern int cvxCompFaceAtSet(int Count, svxEntPath *CompPath, svxFaceAt *At); extern int cvxCompIsUnplaced(int idx_Comp, int* isUnplaced); extern int cvxCompIsUnplacedByPath(const svxEntPath* path, int* isUnplaced); extern int cvxCompBomExcludedGet(svxEntPath EntPath, int* exclude); extern int cvxCompIsectShpShp(const svxEntPath* basePath, const svxEntPath* opPath, evxFaceTrim trim, int* count, svxCurve** curves); extern int cvxCompInqOpenShapes(svxEntPath *CompPath, int IgnoreHide, int *numShps, svxEntPath **shpPaths); extern int cvxCompShapeInqOpenEdges(svxEntPath *ShpPath, int *numEdg, svxEntPath **edgPaths); extern int cvxCompCfgIdGet(const svxEntPath* path, int* idCfg); extern int cvxCompCfgIdSet(const svxEntPath* path, int idCfg);
assembly constraint
extern int cvxConsInqType(int idCons, evxConsType *consType); extern int cvxConsInqRefEnts(int idCons, int *count, svxEntPath **entPaths); extern int cvxConsInqConsData(int idCons, svxConsData *ConsData); extern int cvxConsRedefine(int idCons); extern int cvxCompInqConsState(int idComp, evxConsState *consState); extern int cvxCompInqConstraints(svxEntPath *CompPath, int *count, int **cons); extern int cvxCompAddCoincidentCons(svxEntPath *Ent1, svxPoint *Pnt1, svxEntPath *Ent2, svxPoint *Pnt2, svxConsData *ConsData, int *idCons); extern int cvxCompAddTangentCons(svxEntPath *Ent1, svxEntPath *Ent2, svxConsData *ConsData, int *idCons); extern int cvxCompAddConcentricCons(svxEntPath *Ent1, svxPoint *Pnt1, svxEntPath *Ent2, svxPoint *Pnt2, svxConsData *ConsData, int *idCons); extern int cvxCompAddParallelCons(svxEntPath *Ent1, svxEntPath *Ent2, svxConsData *ConsData, int *idCons); extern int cvxCompAddPerpendicularCons(svxEntPath *Ent1, svxEntPath *Ent2, svxConsData *ConsData, int *idCons); extern int cvxCompAddAngularCons(svxEntPath *Ent1, svxEntPath *Ent2, svxConsData *ConsData, int *idCons); extern int cvxCompAddLockCons(svxEntPath *Comp1, svxEntPath *Comp2, svxConsData *ConsData, int *idCons); extern int cvxCompAddDistanceCons(svxEntPath *Ent1, svxPoint *Pnt1, svxEntPath *Ent2, svxPoint *Pnt2, svxConsData *ConsData, int *idCons); extern int cvxCompAddMiddleCons(svxEntPath *BaseEnt1, svxEntPath *BaseEnt2, int nCenter, svxEntPath *CenterEnts, svxConsData *ConsData, int *idCons); extern int cvxCompAddSymmetryCons(svxEntPath *Plane, svxEntPath *SymEnt1, svxEntPath *SymEnt2, svxConsData *ConsData, int *idCons); extern int cvxCompAddFrameCons(svxEntPath *Datum1, svxEntPath *Datum2, svxConsData *ConsData, int *idCons);
sub-part
extern int cvxSubPartIns(vxLongName Name, int AutoRegen, int MergeDimen); extern int cvxSubPartFlag(vxLongName File, vxLongName Part, int isSubPart); extern int cvxFtrIsSubPart(int idFtr);
variables
extern int cvxPartEqnSet(int Count, svxVariable *Variables); extern int cvxPartInqEqnAllId(int* cntList, int** idList, int* cntSets, int** idSets); extern int cvxPartInqEqnSetMembers(int idSet, int* count, int** idList); extern int cvxPartInqEqnAssociatedSet(int idEqn, int* idSet); extern int cvxPartEqnDelete(int idEqn); extern int cvxPartVarAdd(svxVariable *Variable); extern int cvxPartVarGet(svxVariable *Variable); extern int cvxPartVarGetById(int idEqn, svxVariable* Variable); extern int cvxPartVarSet(int Count, svxVariable *Variables, int Working); extern int cvxPartVarSubstitute(char *Str, int nBytes, int *Truncated); extern int cvxPartVarSubstituteResize(char **Str); extern int cvxEqGetExpByName(char* name, char *exp, int size); extern int cvxEqGetDescById(int idEqn, char* desc, int size); extern int cvxEqSetDescById(int idEqn, char* desc); extern int cvxEqRegen(int idEqn);
display
extern int cvxPartViewAdd(svxView *View, int *idView); extern void cvxPartShowAll(void); extern void cvxPartShowTarg(void); extern int cvxPartShowPreview(vxLongName fileName, vxLongName rootName);
general edit
extern int cvxPartBool(evxBoolType,int idBase,int Count,int *Shapes,int Keep); extern int cvxPartBool2(evxBoolType, int, int*, int, int*, int*, int**); extern int cvxPartBool3(evxBoolType, int, int*, int, int*, int, int*, int*, int**); extern int cvxPartCopyDirDis(int idEntity,svxVector*Dir,double Dis,int*idCopy); extern int cvxPartCopyPntToPnt(int idEntity,svxAxis*S,svxAxis*E,int*idCopy); extern int cvxPartCopyTransform(int idEntity,const svxMatrix *Mat,int *idCopy); extern int cvxPartCopyTransformList(const int Count, const int* Entities, const svxMatrix *Mat, int* EntCnt, int **idList); extern int cvxPartErase(int Count, int *idEnts); extern int cvxPartMovePntToPnt(int idEntity,svxAxis*S,svxAxis*E); extern int cvxPartMoveTransform(int idEntity,const svxMatrix *Mat); extern int cvxPartMoveTransformList(int Count,const int *Entities,const svxMatrix *Mat); extern int cvxPartMirrorGeom(svxMirrorGeom *Mirror, int *NumNewEnts, int **idNewEnts); extern int cvxPartMirrorFtr(svxMirrorFtr *Mirror, int *idFtr); extern int cvxPartNameLastOp(vxName NewName); extern int cvxPartScale(int Count,int*idEnts,double X,double Y,double Z,int idDatum); extern int cvxPartScale2(int Count,int*idEnts,double X,double Y,double Z,int idDatum,svxPoint *CentPnt); extern int cvxPartSew(double Tol, int *OpenEdges, double *MaxGap); extern int cvxPartSewForce(double Tol);
sheet metal
extern int cvxPartSmdUnfold(const svxUnfoldData *Unfold, int *idSmdUnfold); extern int cvxPartSmdFold(const svxFoldData *Fold, int *idSmdFold); extern int cvxPartSmdDimple(svxDimpleData *Dimple, int *idDimple); extern int cvxPartSmdCloseCorner(const svxCloseCornerData* CornerData, int *idSmdCorner); extern int cvxPartSmdLouver(const svxLouverData *LouverData, int *idSmdLouver); extern int cvxPartSmdNormalCut(const svxNormalCutData* pData, int* numShape, int** idShapes); extern int cvxPartSmdPunch(const svxPunchData* pData, int* idShape); extern int cvxPartSmdExtrudeTab(const svxSmdExtrudeTabData* data, int* idExtTab); extern int cvxPartSmdExtrudeFlange(const svxExtrudeFlangeData* data, int* idExtFlange); extern int cvxPartSmdFullFlange(const svxSmdFullFlangeData* data, int* idFull); extern int cvxPartSmdProfFlange(const svxSmdFlangeProfData* data, int* idFlange); extern int cvxPartSmdPartialFlange(const svxSmdPartialFlangeData* data, int* idPartial); extern int cvxPartSmdHemFlange(const svxSmdHemFlangeData* data, int* idHem); extern int cvxPartSmdStatFaceSet(int idFace, int* idFtr);
sheet metal attribute
extern int cvxPartSmdAtGet(svxSmdAt* at); extern int cvxPartSmdAtSet(const svxSmdAt* at); extern int cvxPartGetFlatSolids(int* cnts, int** solids);
shape query
extern int cvxPartInqFaceAt(int idFace, svxFaceAt *At); extern int cvxPartInqFaceSh(int idFace, svxShaderAt *Sh); extern int cvxPartInqFaceTx(int idFace, svxTextureAt *Tx); extern int cvxPartInqFaceTxFile(int idFace, vxPath Path); extern int cvxPartInqFaceBox(int idFace, svxBndBox *Box); extern int cvxPartInqFaceCrvs(int idFace, int *Count, svxCurve **TrimCurves); extern int cvxPartInqFaceEdges(int idFace, int *Count, int **Edges); extern int cvxPartInqFaceFacets(int idFace, int *Count, svxTriangle **Facets); extern int cvxPartInqFaceFacets2(int idFace, svxFacets *Facets); extern int cvxPartInqFaceLoops(int idFace, int Inner, int *Count, int **Loops); extern int cvxPartInqFaceSrf(int idFace, svxSurface *Srf); extern int cvxPartInqFaceSrfPrim(int idFace, svxSrfPrim *SrfPrim); extern int cvxPartInqFaceShape(int idFace, int *idShape); extern int cvxPartInqFaceFillet(int idFace, int *isFilletFace); extern int cvxPartInqFacets(int idBlock, svxSTL *zStl); extern int cvxPartInqFacets2(int idBlock, svxFacets *Facets); extern int cvxPartInqFacetsTxFile(int idBlock, vxPath Path); #ifdef _WIN64 extern int cvxPartFaceMesh(int idFace, double chord, double sideSize, int *count, svxTriangle **pnts); extern int cvxPartFaceMeshPnts(int idFace, double chord, double sideSize, int *count, svxPoint **pnts); #endif extern int cvxPartInqLoopEdges(int idFace, int *Count, int **Edges); extern int cvxPartInqLoopFace(int idLoop, int *idFace); extern int cvxPartInqLoopPreEdges(int idLoop, int *Count, int **PreEdges); extern int cvxPartInqLoopInner(int idLoop, int *isInner); extern int cvxPartInqPoints(int *count, int **pointIdx); extern int cvxPartInqPreEdgeInfo(int idPreEdge, svxPreEdge *PreEdge); extern int cvxPartInqPreEdgeStartPnt(int idPreEdge, int *idEdge, svxPoint2 *StartPoint); extern int cvxPartInqShapeOpen(int idShape, int *isOpen); extern int cvxPartInqShapeComp(int idShape, int *idComp); extern int cvxPartInqShapeEdges(int idShape, int *Count, int **Edges); extern int cvxPartInqShapeFaces(int idShape, int *Count, int **Faces); extern int cvxPartInqShapeFtrs(int idShape, int Option, int *Count, int **Features); extern int cvxPartInqShapeMass(int idShape, double Density, svxMassProp*); extern int cvxPartInqShapes(vxLongName File, vxLongName Part, int *Count, int **Shapes); extern int cvxPartInqVertexEdges(int idEdge, int EndPnt, int *Count, int **Edges); extern int cvxPartInqEdgeOpen(int idEdge); extern int cvxPartInqEdgeCrv(int idEdge, int idFace, svxCurve *Crv); extern int cvxPartInqEdgeFaces(int idEdge, int *Count, int **Faces); extern int cvxPartInqEdgePreEdges(int idEdge, int *Count, int **PreEdges); extern int cvxPartInqEdgeLoop(int idFace, int idEdge, int *idLoop); extern int cvxPartInqEdgeShape(int idEdge, int *idShape);
curve query
extern int cvxPartInqCrvList(int idCrvList, int *Count, svxEntPick **Curves); extern int cvxPartInqCurve(int idEntity, int Nurb, svxCurve *Crv); extern int cvxPartInqCurves(int *Count, int **Curves); extern int cvxPartInqCrvLists(int *Count, int **CrvLists);
component query
extern int cvxPartInqComps(vxLongName File, vxLongName Part, int *Count, int **Comps); extern int cvxPartInqComps2(vxLongName File, vxLongName Part, int Option, int *Count, int **Comps); extern int cvxPartInqCompsInfo(vxPath Path, vxLongName Name, int* Count, vxPath** Paths, vxLongName** Names); extern int cvxPartInqAsmFolders(vxLongName File, vxLongName Part, int type, int *count, int **Folders); extern int cvxPartInqAsmFldChildEnts(vxLongName File, vxLongName Part, int idFolder, int incSubFld, int *count, int **Ents); extern int cvxPartInqAsmIsFlex(int idComp, int* isFlexible); extern int cvxPartInqAsmIsFlexByPath(svxEntPath AsmPath, int* isFlexible); extern int cvxPartInqFlexAsmMat(svxEntPath AsmPath, svxMatrix* AsmMat);
feature query
extern int cvxPartFtrInqInpEnts(int idFeature, evxEntType type, int *cnt, int **list); extern int cvxPartFtrInqAuxFtrs(int idFtr, int* count, int** idAuxFtrs); extern int cvxPartFtrIsMissRef(int idFeature, char* status); extern int cvxPartInqFtrAssoPart(int idFeature, vxLongName file, vxLongName part); extern int cvxPartInqFtrTol(int idFeature, double *Tolerance); extern int cvxPartInqFtrEnts(int idFeature, evxEntType EntType, int *Count, int **Ents); extern int cvxPartInqFtrRegenStat(int idFeature, char *stat); extern int cvxPartInqFtrData(int idFeature, int iNoEval, int *idData); extern int cvxPartInqFtrList(int *Count, int **Features); extern int cvxPartInqAsmFtrList(vxLongName File, vxLongName Part, int *Count, int **Features); extern int cvxPartInqFtrTemplate(int idFeature, vxName Template); extern int cvxPartInqFtrVersion(int idFeature, int *Version); extern int cvxPartInqFtrGroup(int idFeature, int *idGroup); extern int cvxPartInqFtrParentFtrs(int idFeature, int getAll, int *cnt, int **list); extern int cvxPartInqFtrChildFtrs(int idFeature, int *cnt, int **list); extern int cvxPartInqGroupFtrs(int idGroup, int* count, int** ftrList); extern int cvxPartInqGroupList(int* count, int** groups);
entity query
extern int cvxPartInqEntByLabel(int *lbl, int flag, int *entId); extern int cvxPartInqEntFtr(int idEntity, int *idFeature); extern int cvxPartInqEntLabel(int ent, int **lbl); extern int cvxPartInqEntShape(int idEntity, int *idShape);
other query
extern int cvxPartInqActiveCfg(int *idCfg); extern int cvxPartInqCfgList(int *Count, int **CfgList); extern int cvxPartInqBlocks(int *Count, int **Blocks); extern int cvxPartInqBlockPnts(int idBlock, int *Count, svxPointf **Points); extern int cvxPartInqBlockType(int idBlock, evxBlockType *Type); extern int cvxPartInqConstraints(vxLongName File, vxLongName Part, int *count, int **cons); extern int cvxPartInqAnnoTexts(int *Count, int **Texts); extern int cvxPartInqView(int idView, svxView *View); extern int cvxPartInqViews(int *Count, int **Views); extern int cvxPartInqTagNames(int *Count, vxLongName** Names); extern int cvxPartInqHoles(vxLongName File, vxLongName Part, int *Count, svxHoleData**); extern int cvxPartInqCfgTblInfos(int Id, svxPartCfgInfo** partcfg); extern int cvxPartInqFlattens(int* count, int** idFlattens, vxLongName** flattenNames); extern int cvxPartInqTempData(int idPart, int* count, int** datas);
sheet metal query
extern int cvxPartInqSmdStatFace(int idShape, int* idFace); extern int cvxPartInqSmdStatFcs(int idShape, int* countStat, int** statFcs, int* countPair, int** pairStatFcs); extern int cvxPartInqSmdPairFaces(int idFace, int* count, int** faces); extern int cvxPartInqSmdSrfType(int idFace, evxSmdSurfaceType* type); extern int cvxPartInqShtMetalThick(int idShape, double* thick);
history
extern int cvxHistBackup(void); extern void cvxHistDisable(void); extern void cvxHistEnable(void); extern int cvxHistRedefine(vxName Operation); extern int cvxHistSkipTo(char *Expression, vxName Operation, int *idOp); extern int cvxPartHistClip(int Cut, int Count, int *Operations); extern int cvxPartHistDel(int Count, int *Operations); extern int cvxPartHistDelUtil(int Count, int *Operations, int OpType); extern int cvxPartHistEnd(void); extern int cvxPartHistGroup(int idFirst, int idLast, vxName Name, int Close); extern int cvxPartHistPaste(void); extern int cvxPartHistRename(int idOp, vxName Name, char *Descript); extern int cvxPartHistStart(vxName Name); extern int cvxPartHistList(int Type, int *Cnts, int **HistList); extern int cvxPartDelGrpFtr(int idFtr, int delFtrs); extern int cvxPartFtrPlayTo(int idxFtrPlayTo, int state); extern int cvxPartFtrSuppress(int count, int* idFeatures, char suppress);
part attribute
extern int cvxPartMassProp(void); extern int cvxPartCalcAttrGet(int idPart, svxPartCalcAttrData* attr); extern int cvxPartPhyAttrCalc(vxLongName Name); extern int cvxPartVolumAndMassGet(vxLongName Name, double *dVolume, double *dMass); extern int cvxPartAtGet(vxLongName Name, svxPartAttribute *At); extern int cvxPartAtMod(vxLongName Name, svxPartAttribute *At); extern int cvxPartAtSet(vxLongName Name, svxPartAttribute *At); extern int cvxPartAtItemGet(evxAtItemId itemId, svxAttribute *At); extern int cvxPartAtItemSet(evxAtItemId itemId, svxAttribute *At); extern int cvxPartAtItemGetInFile(vxLongName File, vxLongName Root, evxAtItemId itemId, svxAttribute *At); extern int cvxPartAtItemSetInFile(vxLongName File, vxLongName Root, evxAtItemId itemId, svxAttribute *At); extern int cvxPartAtItemDel(evxAtItemId itemId, vxLongName label); extern int cvxPartAtItemDesGet(evxAtItemId itemId, char* AtLable, char* AtDes, int nBytes); extern int cvxPartAtItemDesSet(evxAtItemId itemId, char* AtLable, char* AtDes); extern int cvxPartAtItemLockGet(char* AtLable, evxAtItemLockStatus* AtLockState); extern int cvxPartAtItemLockSet(char* AtLable, evxAtItemLockStatus AtLockState); extern int cvxPartAtItemLockGetInFile(vxLongName File, vxLongName Root, char* AtLable, evxAtItemLockStatus* AtLockState); extern int cvxPartAtItemLockSetInFile(vxLongName File, vxLongName Root, char* AtLable, evxAtItemLockStatus AtLockState); extern int cvxPartUserAtGet(vxLongName File, vxLongName Root, int *Count, svxAttribute** UserAt); extern int cvxPartUserAtSet(vxLongName File, vxLongName Root, int DelOrgAt, int Count, svxAttribute* UserAt); extern int cvxPartUserAtExport(vxLongName filePath);
shape attribute
extern int cvxShellAtGet(int, svxPartAttribute *At); extern int cvxShellAtItemGet(int, evxAtItemId itemId, svxAttribute *At); extern int cvxShellAtItemSet(int, evxAtItemId itemId, svxAttribute *At);
feature attribute
extern int cvxPartFtrUserAtGet(int idFeature, int *Count, svxAttribute** UserAt); extern int cvxPartFtrUserAtSet(int idFeature, int Count, svxAttribute* UserAt); extern int cvxPartFtrUserAtDel(int idFeature, int Count, svxAttribute* UserAt);
component attribute
extern int cvxCompUserAtGet(svxEntPath *Comp, int *Count, svxAttribute** UserAt); extern int cvxCompUserAtSet(svxEntPath *Comp, int Count, svxAttribute* UserAt); extern int cvxCompUserAtDel(svxEntPath *Comp, int Count, svxAttribute* UserAt);
other
extern int cvxPartAlign(svxAlign *Align); extern int cvxPartAnchor(int idEntity); extern int cvxPartBackup(void); extern int cvxPartEncapsulate(int Option, int KeepDimen); extern void cvxPartExit(void); extern void cvxPartFreeHoles(int Count, svxHoleData **Holes); extern void cvxPartFreeCfgTbl(svxPartCfgInfo **cfginfo); extern int cvxPartGeomExport(svxGeomExport *Data); extern void cvxPartPartialResults(int Disable); extern int cvxPartRedefineIsActive(void); extern int cvxPartRegenFacets(int Count, int *idFaces, int Assembly, int LOD, double Tol); extern int cvxPartRegenIsActive(void); extern int cvxPartCfgActivate(int idCfg); extern int cvxPartShapeStructGet(int idShape, svxWeldAttr *at); extern int cvxPartSetCustomStr(int idComp, const char *CustomString, int *idStr); extern int cvxPartGetCustomStr(int idComp, int *idStr, char **CustomString); extern int cvxPartFaceFind(svxFaceFind *findData, int *Count, int **idFaces); extern int cvxPartCurveChainFind(int nSeeds, int *idSeeds, int type, int *Count, int **idCrvs); extern int cvxPartFaceEdgesFind(int nSeeds, int *idSeeds, evxEdgeLoopType type, int *Count, int **idEdges); extern int cvxCfgTblInfosSet(int Id,svxPartCfgInfo* info);
dimension/variable query
extern int cvxPartInqDims(vxLongName File, vxLongName Part, int *Count, svxVariable**); extern int cvxPartInqPMIDimEnts(int idDim, int *Count, svxEntPath **EntPaths); extern int cvxPartInqVars(vxLongName File, vxLongName Part, int *Count, svxVariable**); extern int cvxPartInqDimIdxs(vxLongName File, vxLongName Part, int *Count, int**IdList);
Insert as shape
extern int cvxInstPartAsShp(const svxCompData *); extern int cvxInstShpGetMatrix(int idShape, svxMatrix *Matrix);
dimension
extern int cvxDimInqType(int idDim, evxDimType *type); extern int cvxDimIsRadius(int idDim, int* isRadius); extern int cvxDimInqState(int idDim, evxDimState *state); extern int cvxDimInqPos(int idDim, svxPoint *pPos); extern int cvxDimInqDimBundles(int idDim, int *Number, int **idBundles); extern int cvxDimInqTextType(int idDim, int *Type); extern int cvxDimModTextType(int idDim, int Type, char* text); extern int cvxDimInqVar(int idDim, svxVariable* Var); extern int cvxDimValMod(int idDim, char* exp); extern int cvxDimValModNoUpdate(int idDim, char* exp); extern int cvxDimInqText(int idDim, int subDim, char **pStr); extern int cvxDimModTxt(int idDim, int subDim, char *pStr); extern int cvxDimInqTxtPnt(int idDim, svxPoint *TextPnt); extern int cvxDimModTxtPnt(int idDim, int center, svxPoint *TextPnt);
add dimension
extern int cvxPartAddLineDim(int idEnt1, int idEnt2, svxPoint *TextPos, int idPlane, int *idDim); extern int cvxPartAddSymmetryDim(svxPntOnEnt iEntId, svxPntOnEnt iCenterLineId, svxPntOnEnt TextPnt, int idPlane, int* idDim); extern int cvxPartAddAngleDim(int idEnt1, int idEnt2, svxPoint *TextPnt, int idPlane, int *idDim); extern int cvxPartAddChamferDim(int idEnt1, int idEnt2, svxPoint *TextPos, int idPlane, int *idDim); extern int cvxPartAddRadDim(int idEnt1, int radRype, const char *, svxPoint *TextPos, int idPlane, int *idDim); extern int cvxPartAddArcDim(int idEnt, const char *text, svxPoint *TextPnt, int idPlane, int *idDim); extern int cvxPartAddCoorDim(svxPoint *LeaderPnt, int idParent, svxPoint *TextPnt, int idDatum, int idPlane, int *idDim); extern int cvxPartAddDatumDim(int idEnt1, svxPoint *leadPnt, svxPoint *TextPos, char *text, int idPlane, int *idDim); extern int cvxPartAddDatumTargetDim(int idEnt1, int radRype, double diameter, double width, double height, svxPoint *leadPnt, svxPoint *txtPos, char *text, int idPlane, int *idDim); extern int cvxPartAddFcsDim(int idEnt1, svxPoint *leadPnt, svxPoint *TextPos, char *text, int idPlane, int *idDim); extern int cvxPartAddSymSrfDim(int idEnt1, svxPoint *leadPnt, svxPoint *TextPos, svxRoughTexts *textGrp, int idPlane, int *idDim); extern int cvxPartAddLabelDim(int idEnt1, svxPoint *leadPnt, svxPoint *TextPos, char *text, int idPlane, int *idDim);
UDF
extern int cvxPartUDFInit(vxPath udfPath); extern int cvxPartUDFInqFlds(int *cnt, svxUDFParam** fldParams); extern void cvxPartUDFTerm( ); extern int cvxPartUDFExplode(int idFtr); extern int cvxPartUDFInqPath(int idFtr, vxPath file); extern int cvxPartUDFInqSubFtrs(int idFtr, int* count, int** ftrList); extern int cvxPartFtrIsUDF(int idFtr, int* isUDF); extern int cvxPartUDFReplace(int idFtr, const vxPath file); extern int cvxPartUDFWizardPathSet(const vxPath path); extern int cvxPartUDFInsPathSet(const vxPath path);
ECAD
extern int cvxPartEcadRgnSet(const svxEcadRgnSetData* pRgnSetData, int *idFtr); extern int cvxPartEcadRgnCut(int idSketch, int *idFtr);
extern int cvxSkActivate(int idSketch, int UpdateGUI); extern void cvxSkRegen(); extern int cvxSkScale(int Count, int*idEnts, double X, double Y, svxPoint2*Pnt); extern int cvxSkMove(const svxMoveData2D* data);
query
extern int cvxSkInqPlane(int idSketch, svxEntPath *plnPath); extern int cvxSkInqAxis(int idSketch, int *xAxis, int* yAxis); extern int cvxSkInqAllAxis(int *Count, int **idEnts); extern int cvxSkInqAxisDir(int idAxis, svxPoint2 *pPnt, svxPoint2 *pDir); extern int cvxSkInqCns(int *Count, int **idEnts); extern int cvxSkInqGeom(int *Count, int **idEnts); extern int cvxSkInqGeomX(int *Count, int **idEnts); extern int cvxSkInqPnt(int *Count, int **idEnts); extern int cvxSkInqRef(int *Count, int **idEnts); extern int cvxSkInqText(int *Count, int **idEnts); extern int cvxSkInqArea(int nCrv, int *idCrvs, svxPoint2 *innerPnt, svxPrfAreaProp *aboutCM, svxPrfAreaProp *aboutRf); extern int cvxSkInqDimRefFlag(int idDim, int* refFlag); extern int cvxSkInqCrvConnect(int iCount, int *idCrvs, int *iUnMatch, int *iOverMatch); extern int cvxSkEntWireType(int entId, int *type); extern int cvxSkSetWireType(int nEnt, int *idEnt, int type); extern int cvxSkIsCosmetic(int IdSketch); extern int cvxSkIsExternal(int IdSketch); extern int cvxSkInqExternalSk(int idSketch, vxLongName fileName, vxLongName rootName, vxLongName skName); extern int cvxSkInqAllAxisById(int idSketch, int* count, int** idEnts); extern int cvxSkInqCnsById(int idSketch, int* count, int** idEnts); extern int cvxSkInqGeomById(int idSketch, int* count, int** idEnts); extern int cvxSkInqGeomXById(int idSketch, int* count, int** idEnts); extern int cvxSkInqPntById(int idSketch, int* count, int** idEnts); extern int cvxSkInqRefById(int idSketch, int* count, int** idEnts); extern int cvxSkInqTextById(int idSketch, int* count, int** idEnts);
creation
extern int cvxSkArc3pt(svxPoint2*Start, svxPoint2*End, svxPoint2*Mid, int*idEnt); extern int cvxSkArcRad(svxPoint2*Center, double R, double S, double E, int*idEnt); extern int cvxSkEllipse(svxEllipse *ellipse, int *idEnt); extern int cvxSkAxis(const svxSkAxisData *Axis, int *idAxis); extern int cvxSkPntsOnCrv(int idCrv, svxPoint*, int Num, double Dist, evxExtendOpt, int *Count, int **idEnts); extern int cvxSkCir3pt(svxPoint2 *P1, svxPoint2 *P2, svxPoint2 *P3, int *idEnt); extern int cvxSkCirRad(svxPoint2 *Center, double Radius, int *idEnt); extern int cvxSkCrvInt(svxCrvIntData *Crv, int *idEnt); extern int cvxSkPnt(svxPoint2 *Point, int *idEnt); extern int cvxSkLine2pt(svxPoint2 *Start, svxPoint2 *End, int *idEnt); extern int cvxSkAddPolyline(int cntPnt, svxPoint2* pnts, int addCns); extern int cvxSkChamfer(const svxSkChamferData* chmData, int* idChamfer); extern int cvxSkFillet(const svxSkFilletData* filletData, int* idFillet); extern int cvxSkSpline(const svxSplineData* PntData, int *idEnt);
dimension
extern int cvxSkAddConsDim(evxConsDimType type, svxConsDim* pData); extern int cvxSkInqDimType(int idDim, evxConsDimType *type); extern int cvxSkInqDim(int *Count, int **idEnts);
geometry constraint
extern int cvxSkAutoCons(svxConsGeom *BasePnt, int Count, int *idEnts); extern int cvxSkAddGeomCons(evxGeomConsType type, int subType, int nGeoms, svxConsGeom *geoms, int *Count, int **idCons); extern int cvxSkInqCnsType(int idCons, evxGeomConsType *type, int *subType); extern int cvxSkInqCnsGeoms(int idCons, int *Count, svxConsGeom **geoms); extern int cvxSkAutoAddCoinCons(int idSketch); extern int cvxSkAutoAddCoinConsSkipRefGeom(int idSketch, int skipFlag, int solveFlag);
ready text
extern int cvxSkInqReadyText(int idSketch, int *Count, int **idEnts); extern int cvxSkReadyTextInqCrvs(int idRdText, int *Count, int **idCrvs); extern int cvxSkReadyTextInqText(int idRdText, svxReadyText *RdText); extern int cvxSkReadyTextModText(int idRdText, svxReadyText *RdText); extern int cvxSkReadyText(const svxReadyText *RdText, int *idRdText);
variables
extern int cvxSkVarAdd(svxVariable *Variable); extern int cvxSkVarGet(svxVariable *Variable); extern int cvxSkVarSet(int Count, svxVariable *Variables); extern int cvxSkInqVars(int *Count, svxVariable **Variables);
sketch blocks
extern int cvxSkInqBlockReferences(int idSketch, int *Count, int **idEnts); extern int cvxSkInqSketchBlocks(int *Count, int **idEnts, vxLongName **Names); extern int cvxSkBlockActivate(int idBlock, int UpdateGUI); extern int cvxSkBlockGetSketch(int idBlock, int *idSketch); extern int cvxSkBlockRefGetDefinition(int idRef, int *idBlock); extern int cvxSkBlockInqGeom(vxLongName blockName, int *Count, int **idEnts); extern int cvxSkBlockInqPnt(vxLongName blockName, int *Count, int **idEnts); extern int cvxSkBlockInqDim(vxLongName blockName, int *Count, int **idEnts); extern int cvxSkBlockInqGeomX(vxLongName blockName, int *Count, int **idEnts); extern int cvxSkBlockInqRefs(int idBlock, int*count, int**idEnts);
extern int cvxEntActivate(svxEntPath*NewPath, int UpdateGUI, int*idEntity, svxEntPath*OldPath); extern int cvxEntBlank(int Show, int Count, int *idEnts); extern int cvxEntByLabel(int *Label, int Exact, int *idEntity); extern int cvxEntByName(const char *Name, int *idEntity); extern int cvxEntByName2(vxLongName File, vxLongName Root, vxName Name, int *idEntity); extern int cvxEntByUid(const svxUid *Uid, int *idEntity); extern void cvxEntClassName(int ClassNumber, char *ClassName); extern int cvxEntClassNum(int idEntity); extern int cvxEntClassNumByPath(svxEntPath *entPath); extern int cvxEntColorGet(int idEntity, evxColor *Color); extern int cvxEntColorSet(evxColor Color, int Count, int *idEnts); extern int cvxEntComp(int idEntity, int *idComp, char *File, int nFileBytes, char *Parent, int nParentBytes); extern int cvxEntEndPnt(int idEntity, svxPoint *Start, svxPoint *End); extern int cvxEntErase(svxEntPath *Ent); extern int cvxEntExists(int idEntity, evxEntType EntType); extern int cvxEntFind(evxEntFind,svxPoint*RefPnt,int*idEntity,svxPoint*Pnt,double *Dist); extern int cvxEntFind2(svxEntFind *Data); extern void cvxEntHighlight(int idEntity); extern void cvxEntUnHighlight(int idEntity); extern int cvxEntIsBlanked(int idEntity); extern int cvxEntIsCurve(int idEntity); extern int cvxEntIsElectrode(int idEntity); extern int cvxEntLabelGet(int idEntity, int **Label); extern int cvxEntLabelSet(int idEntity, int *Label); extern int cvxEntLayer(int idEntity, vxName Layer); extern int cvxEntLayerId(int idEntity, int* LayerId); extern int cvxEntMatrix(int idEntity, svxMatrix *Matrix); extern int cvxEntMatrix2(svxEntPath Entity, svxMatrix *Matrix); extern int cvxEntMatrixSet(int idEntity, svxMatrix *Matrix); extern int cvxEntTextInq(int idText, char **Text); extern int cvxEntTextMod(int idText, char *Text); extern int cvxEntTextNew(char* String, int Type, svxPoint2 Pnt[2], int*idEnt); extern int cvxEntTextAtGet(int idText, svxTextAt*At); extern int cvxEntTextAtSet(int idText, svxTextAt*At); extern int cvxEntTextLocGet(int idText, svxTextLoc *loc); extern int cvxEntPnt(int idEntity, svxPoint *Pnt); extern int cvxEntParent(int idEntity, int *idParent); extern int cvxEntPathToRoot(svxEntPath *EntPath); extern int cvxEntName(int idEntity, char *Name, int nBytes); extern int cvxEntNameSet(int idEntity, const char *Name); extern int cvxEntNew(int StartOp, evxEntType Type); extern void cvxEntNewList(int StartOp,evxEntType Type,int *Count,int **idEnts); extern int cvxEntRefEnt(int idRefEnt, int *idEnt); extern int cvxEntRgbGet(int idEntity, svxColor *Color); extern int cvxEntRgbSet(svxColor Color, int Count, int *idEnts); extern int cvxEntRgbSetNoAt(svxColor Color, int Count, int *idEnts); extern int cvxEntTransSet(int iTrans, int Count, int *idEnts); extern void cvxEntSketch(int idEntity, int *idSketch); extern int cvxEntUidGet(int idEntity, svxUid* Uid); extern int cvxEntUidSet(int idEntity, const svxUid* Uid); extern void cvxEntUnhighlightAll(void); extern int cvxEntInqSelected(int *Count, int **Ents); extern int cvxEntInqPicked(int* Count, int** Ents); extern int cvxEntInqPathSelected(int *Count, svxEntPath **Paths); extern int cvxEntInqPathPicked(int* Count, svxEntPath** Paths); extern int cvxEntNameByPath(const svxEntPath *Path, vxLongName Name); extern int cvxEntGetInhSubIdx(int idx_ent, int klass, int sub_class, int *subIdx); extern int cvxEntSetNameTag(int idx_ent, char *name); extern int cvxEntAddPick(int idx_ent); extern int cvxEntPathAddPick(svxEntPath *entPath); extern int cvxEntLineAtGet(int idLine, svxLineAt* At); extern int cvxEntLineAtSet(svxLineAt* At, int Count, int* idEnts); extern void cvxEntUnPickAll(); extern void cvxEntUnPickLast(); extern int cvxEntGetDistance(int ent1, int ent2, svxPoint *p1, svxPoint *p2, double *dist); extern int cvxEntGetAngle(int ent1, int ent2, double *angle); extern int cvxEntPathCmp(const svxEntPath* EntPath1, const svxEntPath* EntPath2); extern void cvxPickDataClear();
extern int cvxDwgInqList(int idRoot, int *count, int **idDrawings); extern int cvxDwgActivate(vxLongName drawingName); extern int cvxDwgInqActive(char *drawingName, int nBytes); extern int cvxDwgInqName(int idDrawing, char *drawingName, int nBytes); extern int cvxDwgFind(vxLongName rootName, vxLongName drawingName, int *idDrawing); extern int cvxDwgInqBorderTitle(int idDrawing, int *idBorder, int *idBorderSkt, int *idTitle, int *idTitleSkt); extern int cvxDwgInqTables(int idDrawing, evxTableType type, int *count, int **tables ); extern int cvxDwgInqViewMod(int idDrawing, int *modified); extern int cvxDwgInqViews(int idDrawing, evxViewType type, int *count, int **views); extern int cvxDwgInqViewType(int idView, evxViewType *type); extern int cvxDwgViewAtGet(int idView, svxViewAt *viewAttr); extern int cvxDwgViewAtSet(int idView, svxViewAt *viewAttr); extern int cvxDwgViewInqPart(int idView, svxCompName *part); extern int cvxDwgViewInqPartConfig(int idView, vxName partCfg); extern int cvxDwgViewInqChildView(int idView, int* count, int** idViews); extern int cvxDwgViewEntitiesAssociate(int idView, int count, int* idEnts); extern int cvxDwgRegen(int count, int* idViews, int isRegenUnModifiedView, int isRegenTable, int isPrompt, int isRegenSketch); extern int cvxDwgInqPart(char* rootName, int *iCount, svxCompName **partList); extern int cvxDwgSetRefPart(const char *File, const char *Root, int idxView, svxCompName *oldPart, svxCompName *newPart); extern int cvxDwgAtGet(int idDrawing, svxDrawingAt *drawingAt); extern int cvxDwgAtSet(int idDrawing, svxDrawingAt *drawingAt); extern int cvxDwgTableExport(int idTable, vxPath path); extern int cvxDwgTableLinkToExcel(int idTable, vxPath path); extern int cvxDwgInqGeom(int idDrawing, int *count, int **idEnts); extern int cvxDwgInqText(int idDrawing, int *count, int **idEnts); extern int cvxDwgAtItemGet(evxAtItemId itemId, svxAttribute *At); extern int cvxDwgUserTableCreate(vxName name, int iRow, int iCol, svxPoint2 *pnt, int origin, int *idTable); extern int cvxDwgUserTableCreateByTemplate(vxName name, vxPath tplPath, svxPoint2 *pnt, int origin, int *idTable); extern int cvxDwgTableRowHeightSet(int idTable, int Row, double Height); extern int cvxDwgTableColWidthSet(int idTable, int Col, double Width); extern int cvxDwgGetTableSize(int iTblIdx, int *pRowNum, int *pColNum); extern int cvxDwgTableRowInsert(int idTable, int Row); extern int cvxDwgTableRowDelete(int idTable, int Row); extern int cvxDwgTableColInsert(int idTable, int Col); extern int cvxDwgTableColDelete(int idTable, int Col); extern int cvxDwgTableCellAtGet(int idTable, int Row, int Col, svxTextAt *TextAt); extern int cvxDwgTableCellAtSet(int idTable, int Row, int Col, svxTextAt *TextAt); extern int cvxDwgTableCellSet(int idTable, int Row, int Col, char* Value); extern int cvxDwgTableCellGet(int idTable, int Row, int Col, char* Value, int nBytes); extern void cvxDwgTableCellsMerge(int idTable, int minRow, int maxRow, int minCol, int maxCol, int kFirstData); extern void cvxDwgTableCellsUnMerge(int idTable, int minRow, int maxRow, int minCol, int maxCol); extern int cvxDwgTableAdjustSize(int idTable); extern int cvxDwgViewInqOrgPnt(int idView, svxPoint2*pnt, int *idEnt); extern int cvxDwgViewRotate(int idView, double angle); extern int cvxDwgViewGeomInqList(int viewId, int option, int *count, int **indices); extern int cvxDwgViewGeomGetShapeId(int geomId, char *fileName, int fileNameBytes, char *partName, int partNameBytes, svxEntPath *pickPath, int *geom3DId, int *shapeId); extern int cvxDwgViewPnt2DTo3D(int pnt2DId, svxPoint *pnt3D); extern int cvxDwgViewPnt3DTo2D(int viewId, svxPoint pnt3D, svxPoint2 *pnt2D); extern int cvxDwgViewInqRefEnts(int viewId, int *count, int **idRefEnts); extern int cvxDwgRefEntDataGet(int idRefEnt, svxRefEntData *data); extern int cvxDwgViewRefCompVisSet(int idView, vxLongName fileName, vxLongName partName, int show); extern int cvxDwgViewRefEntAtGet(int idRefEnt, int *clrValid, int *typeValid, int *widthValid, svxLineAt *entAt); extern int cvxDwgViewRefEntAtSet(int idRefEnt, int clrValid, int typeValid, int widthValid, const svxLineAt *entAt); extern int cvxDwgGeomGetView(int idGeom, int *idView); extern int cvxDwgInqViewTypeEx(int viewId, evxViewTypeEx* viewType); extern int cvxDwgViewInqProjection(int idView, evxViewProjAngle* projection);
dimension
extern int cvxDwgInqDims(int idDrawing, evxDimType *dimTypeList, int dimTypeCount, int *count, int **dims); extern int cvxDwgInqDimEnts(int idDim, int *count, int **idEnts); extern int cvxDwgInqDimGripPnts(int idDim, int *Num, svxPoint **Pnts); extern int cvxDwgGetDimTextBox(int idDim, double *tbWid, double *tbHgt, double *chSlp, svxPoint2 *txtPt); extern int cvxDwgDimAtGet(int idDim, svxDimAttr *dmAttr); extern int cvxDwgDimAtSet(int idDim, svxDimAttr *dmAttr); extern int cvxDwgBrkLineAtSet(int brkLnViewId, const svxDwgBrkLineAt* brkLineAt); extern int cvxDwgBrkLineAtGet(int brkLnViewId, svxDwgBrkLineAt* brkLineAt); extern int cvxDwgInqBundleDataByDim(int idDim, int* count, svxDwgBundleDimData** data); /* create dimension extern int cvxDwgCenMarkCirDimAdd(const svxCenMarkCirDimData* cmcDimData, int* idDim); extern int cvxDwgDatumTargDimAdd(const svxDatumTargDimData* datumTData, int* idDim); extern int cvxDwgDatumDimAdd(const svxDatumDimData* datumData, int* idDim); extern int cvxDwgSymmetryDimAdd(const svxDwgSymmetryDimData* symmetryDimData, int* idDim); extern int cvxDwgAngDimAdd(const svxDwgAngDimData* angDimData, int* idDim); extern int cvxDwgArcDimAdd(const svxDwgArcDimData* arcDimData, int* idDim); extern int cvxDwgRadDimAdd(const svxRadDimData* radDimData, int* idDim); extern int cvxDwgLabelCoorDimAdd(const svxLabelCoorDimData* coorDimData, int* idDim); extern int cvxDwgLnrChmDimAdd(const svxDwgLnrChmDimData* DimData, int* idDim); extern int cvxDwgAutoBlnAdd(const svxDwgAtBlnData* atBlnData, int* idDimCount, int** idDimList); extern int cvxDwgStkBlnAdd(const svxDwgStkBlnData* stkBlnData, int* idDimCount, int** idDimList);
symbol
extern int cvxShtInqSymbol(evxSymbolType type, int *Count, int **idEnts); extern int cvxDwgInqSymObjList(int idSym, int* count, int** listId); extern int cvxDwgInqSymType(int idSym, evxSymbolType *type); extern int cvxDwgInqSymEnts(int idSym, int *Count, int **idEnts); extern int cvxDwgSymAtGet(int idSym, svxSymAttr *symAttr); extern int cvxDwgSymAtSet(int idSym, svxSymAttr *symAttr); extern int cvxDwgSymSurfNew(int idEnt, svxPoint2* refPoint, const svxSymSurf* data, int *idSymSurf); extern int cvxDwgSymSurfDataGet(int idSymSurf, svxSymSurf*data); extern int cvxDwgSymSurfDataSet(int idSymSurf, svxSymSurf*data); extern int cvxDwgSymWeldNew(int idEnt, svxPoint2* refPoint, const svxSymWeld* data, int *idSymWeld); extern int cvxDwgSymWeldDataGet(const int idSymWeld, svxSymWeld* data); extern int cvxDwgSymWeldDataSet(const int idSymWeld, const svxSymWeld* data); extern int cvxDwgSymImgNew(svxSymImg*data, int embed, int locked, int *idSymImg); extern int cvxDwgSymImgAtGet(int idSymImg, svxSymImg*data); extern int cvxDwgSymImgAtSet(int idSymImg, const svxSymImg*data); extern int cvxDwgSymLinkGet(const int idSymLink, vxPath filePath); extern int cvxDwgSymLinkExport(const int idSymLink, vxPath filePath); extern int cvxDwgUserSymNew(int count, int *idEnt, svxPoint2 *BasePnt, vxLongName Name, int *idBlock); extern int cvxDwgInsertSymbol(vxLongName fileName, vxLongName symName, svxPoint2 *pnt, int*symId); extern int cvxDwgUserSymObjGet(const int idSymUser, int *nObj, int** idObjs); extern int cvxDwgViewDottedBorderGet(int idView, svxPoint2* UpperLeft, svxPoint2* UpperRight, svxPoint2* BottomLeft, svxPoint2* BottomRight); extern int cvxDwgViewLocationGet(int idView, svxPoint2* point); extern int cvxDwgEntMovePntToPnt(int idEnt, svxPoint2* Start, svxPoint2* End, evxDrawingMoveDirType type, double angle, double scale); extern int cvxDwgEntMoveAlongDirection(int idEnt, svxVector2* Direction, double Distance, svxPoint2* BasePoint, double angle, double scale); extern int cvxDwgAlignmentGet(int idView, int* align); extern int cvxDwgCrossHatch(int countEnts, int* idEnts, int countPnts, svxPoint2* insides, int isSplit, svxHatchAttr* hatch, int* idEnt); extern int cvxDwgInqHatchAttr(int idHatch, svxHatchAttr* HatchAttr); extern int cvxDwgHatchAttrSet(int idHatch, svxHatchAttr HatchAttr); extern int cvxDwgHatchAssoCrvsGet(int idHatch, int* count, int** AssocCrvs); extern int cvxDwgInqHatchIdByView(int idView, int* count, int** idHatchs); extern int cvxDwgInqHatchIdByDrawing(int idDrawing, int* count, int** idHatchs); extern int cvxDwgLineOffsetDimAdd(const svxDwgLineOffsetDim* pData, int* idDim); extern int cvxDwgHoleCallOutDimAdd(const svxDwgHoleCallOutDim* pData,int* numDim, int** idDims); extern int cvxDwgLineDimAdd(const svxDwgLineDim* pData, int* idDim); extern int cvxDwgBaseLineDimAdd(const svxDwgLineGrpDim* pData, int* idDim); extern int cvxDwgContinuousDimAdd(const svxDwgLineGrpDim* pData, int* idDim); extern int cvxDwgOrdinateDimAdd(const svxDwgOrdinateDim* pData, int* idDim); extern int cvxDwgBalloonDimAdd(const svxDwgBalloonDim* pData, int* idDim); extern int cvxDwgFtrCtrlDimAdd(const svxDwgFtrCtrl* pData, int* idDim); extern int cvxDwgCenterMarkDimAdd(const svxCenterMark *pzCentMark, int* idDim); extern int cvxDwgCenterLineDimAdd(const svxCenterLine* pzCenterLine, int* idDim); extern int cvxDwgRotateView(const svxDwgRotView* pData); extern int cvxDwgTableBom(const svxDwgBom* pData, int* idTbl); extern int cvxDwgTableInsert(const svxDwgTblInsert* pData); extern int cvxDwgAutoDimAdd(const svxDimAuto* pDimData, int* idDim); extern int cvxDwgLabelDimAdd(const svxDimLabel* pLabel, int* idDim); extern int cvxDwgInqDimByView(int idView, int* count, int** idDims); extern int cvxDwgInqDimByDrawing(int idDrawing, int* count, int** idDims);
create view
extern int cvxDwgViewLayout(svxViewLayoutData* data); extern int cvxDwgViewProjection(int idBaseView, svxPoint2* location, int Projection, int DimType, svxViewAt* ViewAttr, int* idProjView); extern int cvxDwgViewAuxiliary(const svxAuxViewData* auxViewData, int* idView); extern int cvxDwgViewFullSection(const svxFulSecViewData* fulSecViewData, int* idView); extern int cvxDwgViewBrokenSection(svxDwgBrokenSectionData* data, int* idView); extern int cvxDwgViewDetail(const svxDwgDetailData* data, int* idView); extern int cvxDwgViewBrkLine(const svxBrkLineData* brkLineInfo, int* brkLnViewId); extern int cvxDwgViewStandard(const svxViewStandardData* data, int* idView);
extern void cvxAutoRegenGet(int *Status); extern void cvxAutoRegenSet(int Status); extern void cvxConfigGetColor(const char *Name, evxColor *Color); extern int cvxConfigGetInteger(const char *Name, int *Value); extern int cvxConfigGetNumber(const char *Name, double *Value); extern int cvxConfigGetOption(const char *Name, const char *Options); extern int cvxConfigGetRgb(const char *Name, svxColor *Rgb); extern int cvxConfigGetString(const char *Name, char *Str, int nBytes); extern int cvxConfigGetYesNo(const char *Name, int *YesNo); extern int cvxConfigSetColor(const char *Name, evxColor Color); extern int cvxConfigSetInteger(const char *Name, int Value); extern int cvxConfigSetNumber(const char *Name, double Value); extern int cvxConfigSetOption(const char *Name, const char *Option); extern int cvxConfigSetRgb(const char *Name, svxColor *Rgb); extern int cvxConfigSetString(const char *Name, char *Str); extern int cvxConfigSetYesNo(const char *Name, int YesNo); extern int cvxGlobalGet(evxGlobal, void *Data); extern int cvxGlobalSet(evxGlobal, void *Data); extern int cvxLabelMatch(int *Label1, int *Label2); extern void cvxLangGet(vxName Language); extern int cvxOpCount(void); extern int cvxNameIsOkay(char* name, int size, int option); extern void cvxNewCommand(void); extern int cvxNoteGet(char **Note); extern int cvxNoteSet(char *Note); extern void cvxHostId(double *idNetwork, double *idDongle); extern void cvxShowDisp(int SlideNumber); extern void cvxShowOpen(vxPath File); extern void cvxUndoBundleEnd(int RefreshDisplay, int Settings[], int isError); extern void cvxUndoBundleStart(int DisableManager, int Settings[]); extern int cvxUndoRedo(int Undo); extern int cvxUndoRedoTo(int Undo, vxName Name); extern int cvxUndoRedoMarker(vxName Name); extern int cvxXnUndoCount(); extern void cvxXnBundle(int iCount, const char* xn_name); extern void cvxFilterListGet(int *count, vxName *filterList); extern int cvxFilterActiveGet(vxName Filter); extern void cvxUnitGet(evxUnitType *Type, vxName Name); extern void cvxUnitTypeGet(char*,char*,char*); extern void cvxUnitSet(evxUnitType Type); extern void cvxUnitToSys(double *Distance); extern void cvxUnitToUser(double *Distance); extern int cvxVersion(char *vxStatus); extern void cvxVersionNum(vxLongName verNum); extern int cvxLicModulesGet(char szModules[1024]); extern int cvxLicIdentifierGet(char szIdentifier[36]); extern int cvxLicEvaluationGet(char szEvaluation[36]); extern int cvxLicActivate(const char *pzEntitlement); extern int cvxLicTypeCheck(); extern void cvxSetMSMMoldInstalled(int IsInstalled); extern void cvxSetMSMPressInstalled(int IsInstalled); extern int cvxConfigPathGet(vxPath path); extern int cvxPluginRegPathGet(vxPath **pathList, int *pCnt, int is64); extern void cvxColorFilter(int color); extern void cvxNotifyExit(int opt); extern int cvxAppAction(evxAppAction type, svxAppActionParam* param); extern void cvxFontMap(const char* zw3dFont, vxLongName font);
transformation matrix
extern int cvxMatEigen(const double Mat3x3[3][3], double *Values, svxVector *Vectors); extern void cvxMatInit(svxMatrix *Mat); extern void cvxMatInvert(svxMatrix *Mat, svxMatrix *InvMat); extern void cvxMatMult(svxMatrix *Mat1, svxMatrix *Mat2, svxMatrix *Mat3); extern void cvxMatPntVec(svxPoint *Origin, svxVector *zAxis, svxMatrix *Mat); extern int cvxMatPntVecs(svxPoint *Origin, svxVector *xAxis, svxVector *yAxis, svxMatrix *Mat); extern void cvxMatRotate(svxMatrix*,double Angle,svxAxis*Axis); extern void cvxMatScale(svxMatrix*,svxPoint*,double sX, double sY, double sZ); extern void cvxMatSetIdentity(svxMatrix *Mat); extern void cvxMatTransform(svxMatrix *Mat, svxMatrix *Frame); extern void cvxMatTranslate(svxMatrix *Mat, double dX, double dY, double dZ); extern void cvxMatView(svxMatrix *Mat, evxViewStd Type); extern int cvxMatToEuler(evxEulerAngSeq Seq, svxMatrix *pMat, svxMatEuler *pzMatEuler); extern int cvxMatFromEuler(evxEulerAngSeq Seq, const svxMatEuler *pzMatEuler, svxMatrix*pMat);
point
extern double cvxPntDist(const svxPoint *Point1, const svxPoint *Point2); extern int cvxPntIsCritical(svxPoint *pnt, int idCurve); extern int cvxPntIsOn(svxPoint *Point, int idEntity); extern int cvxPntOnCrv(int idCurve, double Fraction, svxPoint *Point); extern int cvxPntOnFace(int idComp, int idFace, double Param[2], svxPoint*); extern int cvxPntProject(svxPoint *Pnt, int idEntity, svxPoint *ProjPnt); extern void cvxPntTransform(svxMatrix *Mat, svxPoint *Point); extern void cvxPntTransformList(svxMatrix *Mat, int Count, svxPoint *Points); extern void cvxPntTranslate(svxPoint*, svxVector*, double Distance); extern int cvxPntEntLoc(svxPoint *Pnt, int idEntity, evxPntLocation *PntLoc);
axis
extern void cvxAxisTransform(svxMatrix *Mat, svxAxis *Axis);
vector
extern void cvxVecAngle(svxVector *V1, svxVector *V2, double *Angle); extern void cvxVecCross(svxVector *V1, svxVector *V2, svxVector *Cross); extern void cvxVecInit(svxPoint *Point1, svxPoint *Point2, svxVector *Vector); extern void cvxVecNormalize(svxVector *Vector); extern void cvxVecPerp(svxVector *Vector, svxVector *Perp); extern void cvxVecReverse(svxVector *Vector); extern void cvxVecTransform(svxMatrix *Mat, svxVector *Vector); extern int cvxVecParallelChk(int Orient, svxVector *V1, svxVector *V2, double CosTol);
bounding box
extern void cvxBndBoxAdd(svxBndBox *Box, svxPoint *Pnt); extern void cvxBndBoxInit(svxBndBox *Box); extern void cvxBndBoxInit2(svxBndBox *Box); extern void cvxBndBoxPnts(svxBndBox *Box, svxPoint *Pnts); extern double cvxBndBoxSize(svxBndBox *Box); extern void cvxBndBoxMerge(const svxBndBox *Box1, svxBndBox *Box2); extern void cvxBndBoxTransform(svxMatrix *Mat, svxBndBox*Box);
inquire bounding box
extern int cvxEntBndBox(int idEntity, svxBndBox *Box); extern int cvxPartInqEntBox(int idEnt, svxMatrix *Mat, svxBndBox *Box); extern int cvxPartInqShapeBox(int idShape, svxMatrix *Mat, svxBndBox *Box);
curve
extern int cvxCrvEval(int idCurve,double T,svxPoint*Point,svxVector*Normal); extern int cvxCrvEval2(const int idCurve, const double t, const int level, svxEvalCurv* eval); extern int cvxCrvLen(int idCurve, double *Len); extern int cvxCrvLen2(int idCurve, double T1, double T2, double *Length); extern int cvxCrvParam(int idCurve, svxLimit *T); extern int cvxCrvPntProj(int idCurve,svxPoint*Pnt,double *T,svxPoint*ProjPnt); extern int cvxCrvExtremum(int idCurve,int *Count,svxPoint **Pnts,svxBndBox *BndBox); extern void cvxCrvTransform(svxMatrix *Mat, svxCurve *Crv); extern int cvxCrvGetInflections(int idCurve, int *Count, double **T, svxPoint **InfPnts); extern int cvxCrvGetCusps(int idCurve, int *Count, double **T, svxPoint **Cusps); extern int cvxCrvEvalCrvtr(const int idCurve, const double t, svxPoint *point, svxPoint *normal, double *curvature); extern int cvxCrvGetPntAtDist(int idCurve, double StartT, double Length, double *T, svxPoint *Point); extern int cvxCrvInqContinuity(int Count, int *Curves, int *Continuity); extern int cvxCrvIsLine(int idCurve); extern int cvxCrvMinMaxRad(int idCurve, double* minRad, double* maxRad, int* isFlat);
surface
extern int cvxSrfEval(svxSurface*,double U,double V,svxPoint*,svxVector*Normal,svxVector*Utan,svxVector*Vtan); extern void cvxSrfTransform(svxMatrix *Mat, svxSurface *Srf); extern int cvxSrfDiameterEval(svxSurface*, double U, double V, double *Diameter); extern int cvxSrfAxis(svxSurface*, svxPoint *startPnt, svxPoint *endPnt); extern int cvxSrfFindPoles(svxSurface *srf, double tol, int poles[4]); extern int cvxSrfGetPole(svxSurface *srf, const svxPoint *dir, svxPoint*pnt);
face
extern int cvxFaceEval(int idFace,double U,double V,svxPoint*,svxVector*Normal); extern int cvxFaceEval2(int idFace,double U,double V,svxPoint*,svxVector*Normal,svxVector*Utan,svxVector*Vtan); extern int cvxFaceParam(int idFace, svxLimit *U, svxLimit *V); extern int cvxFacePntLoc(int idFace, double U, double V, evxPntLocation *); extern int cvxFacePntProj(int idFace, svxPoint*, double *U, double *V); extern int cvxFaceReverse(int numFaces, int *idFaces); extern int cvxFaceReverseDir(int numFaces, int *idFaces); extern int cvxFaceGetArea(const int faceId, const double tolerance, double *area); extern int cvxFaceGetMaxCurvature(const int faceId, const svxPoint2 uvPoint, svxPoint *point, svxPoint *normal, svxPoint *direction, double *minCurvature, double *maxCurvature, double *curvature, svxPoint *curvatureDirection, svxPoint *curvatureCenter); extern int cvxFaceRadius(int idFace, double *Radius); extern int cvxFaceInqBend(int idFace, int *bendFlag, double *bendRad, double *neutralRad, double *angle, double *thick, double *kFactor, double *flatTol); extern int cvxFaceIsConcave(int idFace); extern int cvxFaceIsPlanar(int idFace); extern int cvxFaceRadialIntegrity(int idFace, double *URatio, double *VRatio);
intersection
extern int cvxIsectCrvCrv(int Crv1,int Crv2,int Tan,int*Count,svxPoint**Points); extern int cvxIsectCrvFace(int idCurve, int idFace, int Trim, int TangentOk, int *Count, svxPoint**); extern int cvxIsectFaceFace(int idFace1, int idFace2, evxFaceTrim Trim, int TangentOk, int *Count, svxCurve **Curves); extern int cvxIsectRayComp(int idComp,evxFaceTrim,svxAxis*,svxPoint*); extern int cvxIsectRayComps(int nComps, svxEntPath *CompPaths, evxFaceTrim, svxAxis*, int *Number, svxPoint** Points, svxEntPath** FacePaths); extern int cvxIsectRayCrv(svxAxis*,int Crv,int Tan,int*Count,svxPoint**Points); extern int cvxIsectRayFace(int idFace,evxFaceTrim,svxAxis*,svxPoint*,svxPoint2*); extern int cvxIsectRayPart(evxFaceTrim,svxAxis*,svxPoint*,int*idFace); extern int cvxIsectRayPartVis(evxFaceTrim,svxAxis*,svxPoint*,int*idFace); extern int cvxIsectRayPlane(svxAxis*,svxMatrix*,svxPoint*); extern int cvxIsectRayShape(int idShape,evxFaceTrim,svxAxis*,svxPoint*,int*); extern int cvxIsectRayShapes(int nShapes, int *idShapes, evxFaceTrim, svxAxis*, int *Number, svxPoint** Points, int** idFaces);
plane/polygon
extern int cvxPlnThruPnts(int PntCount, svxPoint *PntList, svxVector *Normal, double *D); extern int cvxPolyToTri(int PntCount, svxPoint *PntList, int* VtxCount, int** VtxList);
other
extern double cvxRoundNumber(double Num, double Step, double Tol, int Dir);
extern void cvxCurveFree(svxCurve *Crv); extern void cvxFacetsFree(svxFacets *Facets); extern int cvxMemAlloc(int NumBytes, void **MemPointer); extern void cvxMemFree(void **MemPointer); extern int cvxMemResize(int NumBytes, void **MemPointer); extern void cvxMemZero(void *MemPointer, int NumBytes); extern void cvxStlFree(svxSTL *Stl); extern void cvxSurfaceFree(svxSurface *Srf); extern void cvxSrfPrimFree(svxSrfPrim *SrfPrim); extern void cvxFldDataFree(int Count, svxFldData **fldData); extern void cvxReadyTextFree(svxReadyText *RdText); extern void cvxSymWeldFree(svxSymWeld *WeldData);
tool
extern int cvxCmToolInsert(evxCmToolType tool_type,evxCmToolSubType sub_type, int *idx_tool); extern int cvxCmToolInsertAsTemplate(vxPath template_path, vxName file_name, vxName libriary_name, vxName tool_name, int *idx_tool); extern int cvxCmToolDelete(int idx_tool); extern int cvxCmToolGetAttr(int idx_tool, evxCmToolAttr attr, svxCmAttrValue *value); extern int cvxCmToolSetAttr(int idx_tool, evxCmToolAttr attr, svxCmAttrValue *value); extern int cvxCmHolderInsertAsTemplate(vxPath template_path, vxName file_name, vxName libriary_name, vxName holder_name, int *idx_holder); extern int cvxCmSpeedInsertAsTemplate(vxPath template_path, vxName file_name, vxName libriary_name, vxName spdfd_name, int *idx_speed);
machine
extern int cvxCmMachineInsert(evxCmMachClass machine_class, evxCmMachType machine_type,evxCmMachSubType sub_type, int *idx_machine); extern int cvxCmMachineActive(int idx_machine); extern int cvxCmMachineDelete(int idx_machine); extern int cvxCmMachineGetAttr(int idx_machine, evxCmMachAttr attr, svxCmAttrValue *value); extern int cvxCmMachineSetAttr(int idx_machine, evxCmMachAttr attr, svxCmAttrValue *value); extern int cvxCmToolChangerInsert(int idx_toolchanger, int Location, int Diameter, int Height); extern int cvxCmToolChangerDelete(int idx_toolchanger);
frame
extern int cvxCmFrameInsert(vxName frame_name, svxPoint origin_point, svxPoint x_point, svxPoint y_point, int *idx_frame); extern int cvxCmFrameDelete(int idx_frame); extern int cvxCmFrameGetAttr(int idx_frame, evxCmFrameAttr attr, svxCmAttrValue *value); extern int cvxCmFrameSetAttr(int idx_frame, evxCmFrameAttr attr, svxCmAttrValue *value); extern int cvxCmFrameInsert2(vxName frame_name, svxMatrix frame_mat, int *idx_frame); extern int cvxCmOpAddFrame(int idxOp,int idxFrame); extern int cvxCmFrameGetMatrix(int idxFrame,svxMatrix *frameMat);
operation
extern int cvxCmOpInsert(evxCmOpType opType,int *idx_Op); extern int cvxCmOpDelete(int idx_Op); extern int cvxCmOpDuplicate(int idx_Op,int *cpyOp); extern int cvxCmOpAddComp(int idx_Op,int idx_CmComp); extern int cvxCmOpRemoveComp(int idx_Op,int idx_CmComp); extern int cvxCmOpAddFtr(int idx_Op,int idx_FtrGrp); extern int cvxCmOpRemoveFtr(int idx_Op,int idx_ftrgrp); extern int cvxCmOpAddTool(int idx_Op,int idx_Tool); extern int cvxCmOpRemoveTool(int idx_Op); extern int cvxCmOpGetAttr(int idx_Op,int cnt,int *attr,svxCmAttrValue *value); extern int cvxCmOpSetAttr(int idx_Op,int cnt,int *attr,svxCmAttrValue *value); extern int cvxCmOpSetAttrAsCfg(int idx_Op,vxPath cfg_location); extern int cvxCmOpCalTPath(int idx_Op); extern int cvxCmOpSetSpeed(int idx_op, vxName spdfdName); extern int cvxCmOpSetAttr2(int idx_op, int field, int item, const char *value); extern int cvxCmOpGetAttr2(int idx_op, int field, int item, int *is_on, char *value); extern int cvxCmOpGetIdxFromName(vxLongName op_name, int *op_index); extern int cvxCmSetOpPoint(int idx_op,svxPoint p0,int field); extern int cvxCmSetOpPoints(int idx_op,int num,svxPoint *pts,int field);
cam component
extern int cvxCmCompInsert(char *fileName, char *shapeName,int *idx_CmComp); extern int cvxCmCompDelete(int idx_CmComp); extern int cvxCmCompGetAttr(int idx_Cmcomp,int cnt,evxCmCompAtrr *attr,svxCmAttrValue **pValue); extern int cvxCmCompSetAttr(int idx_Cmcomp,int cnt,evxCmCompAtrr *attr,svxCmAttrValue *value); extern int cvxCmCompInqInfo(int *compCnt,vxLongName **compNames,vxLongName **compPaths); extern int cvxCmPlanSkNew(svxMatrix *Plane, int *idEnt);
feature
extern int cvxCmFtrInsert(evxCmFtrType ftrType, int idx_CmComp, int cnt, int *geom, int *idx_FtrGrp); extern int cvxCmFtrInsertNew(evxCmFtrType ftrType, int cnt, int *geom, double *depths, int *idx_FtrGrp); extern int cvxCmFtrInsertWithoutHoles(evxCmFtrType ftrType,vxName ftrName,int cnt,int *geom,int *idxFtrGrp); extern int cvxCmFtrInsertSK(evxCmFtrType ftrType,vxName ftrName,int idxSk,int cnt,int *geom,int *idxFtrGrp); extern int cvxCmFtrGetComp(int *comp_cnt,int **idxComp); extern int cvxCmGetCrvId(int *numLine,int **lstLines); extern int cvxCmFtrInsertHole(vxName ftrName,int cnt,int *geom,double *depths,int *idxFtrGrp); extern int cvxCmPlanDispSetMode(evxCmPlanDispMode iMode); extern int cvxCmFtrDelete(int idx_ftrgrp); extern int cvxCmFtrGetAttr(int idx_ftrgrp,int cnt,evxCmFtrAttr *attr,svxCmAttrValue *value); extern int cvxCmFtrSetAttr(int idx_ftrgrp,int cnt,evxCmFtrAttr *attr,svxCmAttrValue *value);
cam inquire
extern int cvxCmInqAl(evxCmObjType type, int* cnt, int** idx_obj); extern int cvxCmSolidVerify(void); extern int cvxCmClashDetect(int partIdx, int stockIdx, int cnt, int *idx_op); extern int cvxCmGougeDetect(int partIdx, int stockIdx, int cnt, int *idx_op); extern int cvxCmConfigFileGetString(const char *form, int field, int casesensitive, char *dbstring, char *guistring, int *ifound); extern int cvxCmInqOpName(int idx_op, vxLongName opName); extern int cvxCmInqIndexFromName(evxCmObjType objClass, vxLongName sName, int *index);
cam application
extern int cvxCmSetClearance(double dClearZ,double dAppZ,double dRtZ,double dAutoClear,int iMiniClr); extern int cvxCmGetClearance (double* dClearZ, double* dAppZ, double* dRtZ, double* dAutoClear, int* iMiniClr); extern int cvxCmSetSAndF(double FeedRough, double FeedFinish,double SpeedRough,double SpeedFinish,char* pName); extern int cvxCmOutputManhours(int* idx_opedef, int cnt, double* manhours); extern int cvxCmOutputInsNC(int idx_fld, int *idx_out, evxCmOutFldType fldType); extern int cvxCmOutputDelNC(int idx_in, evxCmOutFldType fldType); extern int cvxCmGetOutputNCSet(int idx_nc, svxNcSetting *ncSet); extern int cvxCmSetOutputNCSet(int idx_nc, svxNcSetting *ncSet); extern int cvxCmOutputInsOps(int idx_nc, int cnt, int *idx_op); extern int cvxCmOutputDelOps(int idx_nc, int cnt, int *idx_op); extern int cvxCmOutputNC(int idx_nc, evxCmOutType outType); extern int cvxCmFolderGetAttr(int idx_folder, int cnt, int* attr, svxCmAttrValue* value);
cam folder application
extern int cvxCmFolderInqOps(vxLongName folder_name,int *op_cnt,int **op_list);