00001 /** 00002 * \file rvccad.h <mi32/rvccad.h> 00003 * \brief CAD object descriptions Version 2.0 (RVCCAD format) 00004 * 00005 * \if NODOC 00006 * $Id: rvccad.h_v 1.97 2005/09/07 19:51:44 scowan Exp $ 00007 * 00008 * $Log: rvccad.h_v $ 00009 * Revision 1.97 2005/09/07 19:51:44 scowan 00010 * Removed unused structure. 00011 * 00012 * Revision 1.96 2005/02/11 15:42:52 mju 00013 * Remove legacy object selection functions as no longer used. 00014 * 00015 * Revision 1.95 2005/01/03 15:57:16 mju 00016 * No_Depr for legacy object selection dlgs. 00017 * 00018 * Revision 1.94 2004/09/02 16:15:32 scowan 00019 * Removed prototypes and an include file. 00020 * 00021 * Revision 1.93 2004/09/01 22:54:20 scowan 00022 * Most functions removed or moved to private include file. 00023 * 00024 * Revision 1.92 2004/08/24 22:09:04 scowan 00025 * Added total line length field to header. 00026 * 00027 * Revision 1.91 2004/08/10 21:27:12 scowan 00028 * *** empty log message *** 00029 * 00030 * Revision 1.90 2004/08/10 21:10:10 scowan 00031 * Removed now unused prototypes. 00032 * 00033 * Revision 1.89 2004/06/14 16:20:42 scowan 00034 * Added baseline flags. 00035 * 00036 * Revision 1.88 2004/06/03 22:10:54 scowan 00037 * Removed archived prototype. 00038 * 00039 * Revision 1.87 2004/05/18 21:59:57 scowan 00040 * Adde dmore fields to cad text. 00041 * 00042 * Revision 1.86 2004/05/17 23:30:07 scowan 00043 * Added many items to text structure. 00044 * 00045 * Revision 1.85 2004/04/13 16:01:18 scowan 00046 * Fixed invalid style flag value in cad objects. 00047 * 00048 * Revision 1.84 2004/03/10 22:47:14 mju 00049 * Remove getCADObjectSet, deprecate other getCADObject inlines. 00050 * 00051 * Revision 1.83 2003/10/15 17:39:00 mju 00052 * Deprecate groupkey. 00053 * 00054 * Revision 1.82 2003/10/13 17:05:45 scowan 00055 * Removed unused structre. 00056 * 00057 * Revision 1.81 2003/10/13 17:03:58 scowan 00058 * Removed unused function prototypes and inlines. 00059 * 00060 * Revision 1.80 2003/09/15 13:49:56 fileserver!dwilliss 00061 * Doxygen 00062 * 00063 * Revision 1.79 2003/08/27 21:31:17 scowan 00064 * Removed function to get linked file. 00065 * 00066 * Revision 1.78 2003/02/06 21:30:21 scowan 00067 * Removed some functions. 00068 * 00069 * Revision 1.77 2002/12/26 16:23:40 scowan 00070 * Fixed invalid extents handling. 00071 * 00072 * Revision 1.76 2002/09/09 13:54:00 mju 00073 * Use prevent_memfunc. 00074 * 00075 * Revision 1.75 2002/08/21 20:38:49 scowan 00076 * Deprecated old object name define. 00077 * 00078 * Revision 1.74 2002/08/20 15:08:39 mju 00079 * Remove deprecated dialog defines. 00080 * 00081 * Revision 1.73 2002/03/08 18:48:10 scowan 00082 * Added clear method. 00083 * delrecate mem.. functions using info struct. 00084 * 00085 * Revision 1.72 2002/01/03 22:51:29 scowan 00086 * Added methods to manage extents. 00087 * 00088 * Revision 1.71 2001/09/14 14:58:03 mju 00089 * No Mdlg in win32native. 00090 * 00091 * Revision 1.70 2001/07/18 21:04:09 scowan 00092 * Added TAB file linking. 00093 * 00094 * Revision 1.69 2001/07/11 16:07:34 scowan 00095 * Added encoding for link creation. 00096 * 00097 * Revision 1.68 2001/07/10 17:42:14 scowan 00098 * Mored CAD object linking to private include file. 00099 * 00100 * Revision 1.67 2001/06/18 15:40:47 mju 00101 * Convert RasterToCADBoundary now takes GENINFO reference. 00102 * ConvertVectorToCAD now takes geninfo reference. 00103 * 00104 * Revision 1.66 2001/05/29 21:11:28 scowan 00105 * Added functions to assist in wrapper classes. 00106 * 00107 * Revision 1.65 2000/09/06 16:39:41 scowan 00108 * Added read open header function. 00109 * 00110 * Revision 1.64 2000/07/13 21:30:42 mju 00111 * Deprecated old MfGet...UC #defines. 00112 * 00113 * Revision 1.63 2000/04/21 15:02:19 scowan 00114 * Added assignment operator. 00115 * 00116 * Revision 1.62 2000/03/21 23:14:32 scowan 00117 * More const. 00118 * 00119 * Revision 1.60 2000/01/03 20:09:26 scowan 00120 * More inline methods. 00121 * 00122 * Revision 1.59 1999/12/29 16:53:59 scowan 00123 * Move cad element definition. 00124 * 00125 * Revision 1.58 1999/12/23 16:31:24 scowan 00126 * Definition of new CAD element class. 00127 * 00128 * Revision 1.57 1999/12/17 18:11:21 scowan 00129 * More const. 00130 * 00131 * Revision 1.54 1999/10/05 22:45:08 scowan 00132 * Change headeer to Inheritance. 00133 * 00134 * Revision 1.53 1999/08/06 17:11:35 dwilliss 00135 * Just added a comment to clarify something. 00136 * 00137 * Revision 1.52 1999/07/26 19:37:08 scowan 00138 * Added function to return linked to file. 00139 * 00140 * Revision 1.49 1999/06/11 16:09:19 mju 00141 * In obj sel dlg add defaults for filter+filtdata. 00142 * 00143 * Revision 1.48 1999/06/11 14:45:09 mju 00144 * Obj sel dlg. 00145 * 00146 * Revision 1.47 1999/06/10 22:10:42 mju 00147 * Object selection dialog update. 00148 * 00149 * Revision 1.46 1999/05/07 21:22:06 mju 00150 * Header restruct. 00151 * 00152 * 00153 * By Steve Cowan 9-19-90 00154 * \endif 00155 **/ 00156 00157 #ifndef INC_MI32_RVCCAD_H 00158 #define INC_MI32_RVCCAD_H 00159 00160 #ifndef INC_MI32_RVCDEFNS_H 00161 #include <mi32/rvcdefns.h> 00162 #endif 00163 00164 #ifndef INC_MI32_COLOR_H 00165 #include <mi32/color.h> 00166 #endif 00167 00168 #ifndef INC_MI32_ELEMSTYL_H 00169 #include <mi32/elemstyl.h> 00170 #endif 00171 00172 struct RVCCADINFO : public RVCGENINFO { 00173 DPOINT3D_OLD minval; //!< 24 Min coord values for the entire CADobj 00174 DPOINT3D_OLD maxval; //!< 24 Max coord values for the entire CADobj 00175 UINT16 PointType; //!< 2 RVC CAD point types 00176 UINT16 LinkType; //!< 2 Type of link (DXF, MIF, ...) 00177 UINT16 ElemHdrSize; //!< 2 Size of CADELEMHDR (set by MfMakeCAD routine) 00178 UINT16 CAD_BlockSize; //!< 2 Size of CADBLOCK (set by MfMakeCAD routine) 00179 UINT32 MaxSize; //!< 4 Maximum Size of an CAD object element (set by MfUpdateCAD routine) 00180 UINT32 NumBlocks; //!< 4 Number of CAD object Block Headers 00181 DOUBLE xscale; //!< 8 Scale between CAD object and ground distances 00182 DOUBLE yscale; //!< 8 Scale between CAD object and ground distances 00183 DOUBLE zscale; //!< 8 Scale between CAD object and ground distances 00184 INT32 NextElemID; //!< 4 Next element ID variable 00185 INT32 m_EditBlockNum; //!< 4 In memory field only 00186 DOUBLE m_TotalLineLength; 00187 00188 RVCCADINFO ( 00189 ) {Clear();} 00190 00191 RVCCADINFO ( 00192 const RVCGENINFO& ginfo 00193 ) {Clear();*static_cast<RVCGENINFO*>(this) = ginfo;} 00194 00195 RVCCADINFO& operator= ( 00196 const RVCGENINFO& ginfo 00197 ) {*static_cast<RVCGENINFO*>(this) = ginfo; return (*this);} 00198 00199 void Clear ( 00200 ) {memset(static_cast<void*>(this), 0, sizeof(*this));} 00201 00202 //! Get extents of CAD object. 00203 //! @return extents of CAD object 00204 DRECT3D GetExtents ( 00205 ) const { 00206 DRECT3D rect; 00207 rect.xinit = minval.x; 00208 rect.yinit = minval.y; 00209 rect.zinit = minval.z; 00210 rect.xlast = maxval.x; 00211 rect.ylast = maxval.y; 00212 rect.zlast = maxval.z; 00213 return (rect); 00214 } 00215 00216 //! Set extents of CAD object. 00217 void SetExtents ( 00218 const DRECT3D& rect 00219 ) { 00220 minval.x = rect.xinit; 00221 minval.y = rect.yinit; 00222 minval.z = rect.zinit; 00223 maxval.x = rect.xlast; 00224 maxval.y = rect.ylast; 00225 maxval.z = rect.zlast; 00226 return; 00227 } 00228 00229 }; 00230 00231 00232 /* If structure size changes, geom.dll will need to be changed */ 00233 struct CADBLOCK { 00234 RVC::OBJECTNAME name; //!< 32 Name of Block 00235 RVC::OBJECTDESC desc; //!< 128 Description of a block 00236 DPOINT3D BasePt; //!< 24 Base point for the block 00237 DPOINT3D GridPt; //!< 24 Base point of snap grid 00238 DPOINT3D minval; //!< 24 Minimum coordinate values for the block 00239 DPOINT3D maxval; //!< 24 Maximum coordinate values for the block 00240 DOUBLE xscale; //!< 8 Scale between CAD block and ground distances (x scale) 00241 DOUBLE yscale; //!< 8 Scale between CAD block and ground distances (y scale) 00242 DOUBLE zscale; //!< 8 Scale between CAD block and ground distances (z scale) 00243 DOUBLE xsize; //!< 8 X direction size in CAD units (snap grid) 00244 DOUBLE ysize; //!< 8 Y direction size in CAD units (snap grid) 00245 DOUBLE zsize; //!< 8 Z direction size in CAD units (snap grid) 00246 COLOR GridColor; //!< 8 Grid snap point color - XColor format 00247 UINT32 NumElem; //!< 4 Total number of elements in block 00248 INT32 dbrecord; //!< 4 Pointer to dblist entry (set by editor) 00249 FLOAT rotate; //!< 4 Rotation angle (snap grid) 00250 UINT32 flags; //!< 4 Flags defined below 00251 UINT16 LinkType; //!< 2 Type of link (DXF, MIF, ...) 00252 UINT16 space; //!< 2 Spare bytes 00253 UINT32 LinkOffset; //!< 4 File offset to linked data 00254 00255 CADBLOCK ( 00256 ) {Clear();} 00257 00258 void Clear ( 00259 ) {memset(static_cast<void*>(this), 0, sizeof(*this));} 00260 00261 //! Get extents of CAD block 00262 //! @return extents of CAD block 00263 DRECT3D GetExtents ( 00264 ) const { 00265 DRECT3D rect; 00266 rect.xinit = minval.x; 00267 rect.yinit = minval.y; 00268 rect.zinit = minval.z; 00269 rect.xlast = maxval.x; 00270 rect.ylast = maxval.y; 00271 rect.zlast = maxval.z; 00272 return (rect); 00273 } 00274 00275 void SetExtents ( 00276 const DRECT3D& rect 00277 ) { 00278 minval.x = rect.xinit; 00279 minval.y = rect.yinit; 00280 minval.z = rect.zinit; 00281 maxval.x = rect.xlast; 00282 maxval.y = rect.ylast; 00283 maxval.z = rect.zlast; 00284 return; 00285 } 00286 00287 }; 00288 00289 //! Disallow memset/memcpy. 00290 PREVENT_MEMFUNC(RVCCADINFO) 00291 PREVENT_MEMFUNC(CADBLOCK) 00292 00293 #define RVCCAD_MaxLink 5 00294 #define RVCCAD_Internal 0 00295 #define RVCCAD_MIF 1 //!< Mapinfo .MIF format 00296 #define RVCCAD_AGF 2 //!< Atlas GIS 3.0 internal format 00297 #define RVCCAD_SHP 3 //!< Arc/Info Shapefile format 00298 #define RVCCAD_TAB 4 //!< MapInfo TAB format 00299 00300 #define CADBLOCK_HasGrid (0x00000001) 00301 #define CADBLOCK_DrawGridPts (0x00000002) 00302 #define CADBLOCK_DrawLast (0x00000004) 00303 00304 00305 struct CADELEMHDR { 00306 INT32 ElemSize; //!< Entire size of CAD element stored (set by MfUpdateCADElem()) 00307 UINT16 ElemType; //!< Type of CADobj element stored (see below) 00308 UINT8 NumAttrib; //!< Number of attributes in data (set by MfWriteCADElem()) 00309 UINT8 NumExtra; //!< Number of extra attributes in extra (set by MfUpdateCADElem()) 00310 }; 00311 00312 /*--- Defined CAD elements ---*/ 00313 00314 #define CAD_INSERT 0 00315 #define CAD_POINT 1 //!< Has no structure 00316 #define CAD_CIRCLE 2 00317 #define CAD_ARC 3 00318 #define CAD_ARCCHORD 4 //!< Uses CADARC structure 00319 #define CAD_TEXT 5 00320 #define CAD_BLOCKTEXT 6 //!< Uses CADTEXT structure N.I.Y. 00321 #define CAD_LINE 7 00322 #define CAD_RBOX 8 //!< An easy way to define a rectangle 00323 #define CAD_POLYGON 9 00324 #define CAD_MESH 10 00325 #define CAD_ELLIPSE 11 00326 #define CAD_EARC 12 00327 #define CAD_POLYNOMIAL 13 //!< N.I.Y. 00328 #define CAD_ARCWEDGE 14 //!< Uses CADARC structure 00329 #define CAD_EARCWEDGE 15 //!< Uses CADEARC structure 00330 #define CAD_EARCCHORD 16 //!< Uses CADEARC structure 00331 #define CAD_MULTILINE 17 00332 #define CAD_MULTIPOINT 18 00333 #define CAD_MULTIPOLYGON 19 00334 #define CAD_LAST 20 00335 00336 /*#define CAD_PARABOLA 21 not defined yet*/ 00337 /*#define CAD_HYPERBOLA 22 not defined yet*/ 00338 /*#define CAD_VARITEXT 23 not defined yet*/ 00339 00340 /** 00341 * Any addition to the list "MUST" be noted in _rvcCADInit() (rvccad.c) 00342 * and in StyleQueryEvalCAD (dbqstyle.c) 00343 * and in hdrdesc.ref (see person in charge of RVC). 00344 * If structure size changes, geom.dll will need to be changed 00345 **/ 00346 00347 struct CADELEMOPT { 00348 COLOR color; //!< 8 Color - XColor format 00349 COLOR FillColor; //!< 8 Fill color - XColor format 00350 INT32 dbrecord; //!< 4 Pointer to dblist entry 00351 INT32 LinePatt; //!< 4 Line Pattern index 00352 INT32 FillPatt; //!< 4 Fill Pattern index 00353 INT32 Symbol; //!< 4 Point Symbol index 00354 FLOAT Angle; //!< 4 Angle of point symbol 00355 FLOAT width; //!< 4 Width of element in CAD coordinates!, also X-Width for points 00356 FLOAT ywidth; //!< 4 Y-Width for points 00357 UINT32 StyleFlags; //!< 4 See STDDEFNS.H for flag definitions 00358 DPOINT3D Extrusion; /* 24 X, Y, or Z coordinate used in VPOINT_3D?? coords. 00359 For planar data, this is the normal vector to the plane that the element is placed on. */ 00360 INT32 HyperLink; //!< 4 Index to hyperindex shape definition 00361 UINT16 WidthUnits; //!< 2 Units that width field is in 00362 UINT16 Space; //!< 2 Reserved for future use 00363 DOUBLE MapScale; //!< 8 MapScale to use given scales at 00364 COLOR m_LineDrawColor; 00365 COLOR m_PolyBorderColor; 00366 COLOR m_PolyFillColor; 00367 00368 CADELEMOPT ( 00369 ) { 00370 memset(this, 0, sizeof(CADELEMOPT)); 00371 } 00372 00373 CADELEMOPT& operator= ( 00374 const CADELEMOPT& rhs 00375 ) { 00376 if (this != &rhs) memcpy(this, &rhs, sizeof(CADELEMOPT)); 00377 return (*this); 00378 } 00379 00380 void GetStyle ( 00381 LINESTYLE& line 00382 ) const { 00383 line.StyleFlags = StyleFlags; 00384 line.PatternNum = LinePatt; 00385 line.DrawColor = color; 00386 line.MapScale = MapScale; 00387 line.Scale = width; 00388 return; 00389 } 00390 00391 void GetStyle ( 00392 POINTSTYLE& point 00393 ) const { 00394 point.StyleFlags = StyleFlags; 00395 point.SymbolNum = Symbol; 00396 point.DrawColor = color; 00397 point.Angle = Angle; 00398 point.ScaleX = width; 00399 point.ScaleY = ywidth; 00400 point.MapScale = MapScale; 00401 return; 00402 } 00403 00404 void GetStyle ( 00405 POLYSTYLE& poly 00406 ) const { 00407 poly.StyleFlags = StyleFlags; 00408 poly.FillPatternNum = FillPatt; 00409 poly.BorderPatternNum = LinePatt; 00410 poly.BorderColor = color; 00411 poly.FillColor = FillColor; 00412 poly.MapScale = MapScale; 00413 poly.BorderScale = width; 00414 return; 00415 } 00416 00417 void GetStyle ( 00418 TEXTSTYLE& text 00419 ) const { 00420 text.FGColor = color; 00421 text.BGColor = FillColor; 00422 text.StyleFlags = StyleFlags; 00423 text.StyleFlags &= ~STYLEFLAG_TextUseStyleHeight; 00424 text.MapScale = MapScale; 00425 return; 00426 } 00427 00428 void SetStyle ( 00429 const LINESTYLE& line 00430 ) { 00431 StyleFlags = line.StyleFlags; 00432 LinePatt = line.PatternNum; 00433 color = line.DrawColor; 00434 MapScale = line.MapScale; 00435 width = static_cast<float>(line.Scale); 00436 return; 00437 } 00438 00439 void SetStyle ( 00440 const POINTSTYLE& point 00441 ) { 00442 StyleFlags = point.StyleFlags; 00443 Symbol = point.SymbolNum; 00444 color = point.DrawColor; 00445 Angle = static_cast<float>(point.Angle); 00446 width = static_cast<float>(point.ScaleX); 00447 ywidth = static_cast<float>(point.ScaleY); 00448 MapScale = point.MapScale; 00449 return; 00450 } 00451 00452 void SetStyle ( 00453 const POLYSTYLE& poly 00454 ) { 00455 StyleFlags = poly.StyleFlags; 00456 FillPatt = poly.FillPatternNum; 00457 LinePatt = poly.BorderPatternNum; 00458 color = poly.BorderColor; 00459 FillColor = poly.FillColor; 00460 MapScale = poly.MapScale; 00461 width = static_cast<float>(poly.BorderScale); 00462 return; 00463 } 00464 00465 void SetStyle ( 00466 const TEXTSTYLE& text 00467 ) { 00468 color = text.FGColor; 00469 FillColor = text.BGColor; 00470 StyleFlags = text.StyleFlags; 00471 StyleFlags &= ~STYLEFLAG_TextUseStyleHeight; 00472 MapScale = text.MapScale; 00473 return; 00474 } 00475 00476 }; 00477 00478 /** 00479 * Any addition to CADELEMOPT "MUST" be noted in _rvcCADInit() (rvccad.c) 00480 * and in headers.def (see person in charge of RVC). 00481 **/ 00482 00483 /*--- Structure definitions for CAD elements */ 00484 00485 struct CADCIRCLE { /* Size = 32 */ 00486 DPOINT2D_OLD center; //!< Center point of circle 00487 DOUBLE radius; //!< Radius of circle 00488 DOUBLE m_zvalue; //!< Z value of center point 00489 }; 00490 00491 00492 struct CADARC { /* Size = 48 */ 00493 DPOINT2D_OLD center; //!< Center point of arc 00494 DOUBLE radius; //!< Radius of arc 00495 DOUBLE start; //!< Start angle of arc 00496 DOUBLE end; //!< End angle of arc 00497 DOUBLE m_zvalue; //!< Z value of center point 00498 }; 00499 00500 00501 struct CADTEXT { /* Size = 128 */ 00502 UINT32 NumPoints; //!< Number of points 00503 UINT16 NumChars; //!< Number of charaters in text string 00504 UINT16 CharSize; //!< Number of bytes per character (1 or 2) 00505 FLOAT height; //!< Height of text in CAD coordinates 00506 FLOAT rotate; //!< Rotation angle of string 00507 FLOAT shear; //!< Shear angle 00508 FLOAT textrotate; //!< Rotation angle of each character in the string 00509 FLOAT xscale; //!< X Scale factor relative to height (default 1.0) 00510 INT32 font; //!< Font number 00511 UINT32 FontFlags; //!< Text style bits 00512 UINT8 m_ShadowRelative; //!< true if shadow angle relative to baseline angle 00513 UINT8 m_BaselineFlags; //!< Baseline flags 00514 UINT8 m_bCartoonBalloonLeaders; 00515 UINT8 m_Predefined; //!< Predefined label styles 00516 00517 //!< From TEXTSTYLE 00518 FLOAT m_LineSpace; //!< Line spacing in CAD units 00519 FLOAT m_StrokeWidth; //!< Stroke width in % of glyph height (1.0 = 100%) 00520 FLOAT m_EnhanceWidth; //!< Enhanced width in % of glyph height (1.0 = 100%) 00521 FLOAT m_BoldnessWidth; //!< Boldness width in % of glyph height (1.0 = 100%) Ignored unless FONTSTYLE_Bold is set 00522 FLOAT m_UnderlineWidth; //!< Underline with in % of glyph height (1.0 = 100%) 00523 FLOAT m_UnderlineOffset; //!< Underline Offset from baseline in % (1.0 = 100%) 00524 FLOAT m_ShadowOffset; //!< Drop shadow offset in % (1.0 = 100%) Ignored unless FONTSTYLE_Shadow is set 00525 FLOAT m_ShadowAngle; //!< Drop shadow angle in radians 00526 FLOAT m_ClipWidth; //!< Clip extended area around text in TextAddToClip() 00527 00528 //!< From LABELFRAMEPARMS 00529 FLOAT m_Margin; //!< Units: % of font ascent 00530 FLOAT m_TMargin; //!< Units: % of font ascent 00531 FLOAT m_BMargin; //!< Units: % of font ascent 00532 FLOAT m_LMargin; //!< Units: % of font ascent 00533 FLOAT m_RMargin; //!< Units: % of font ascent 00534 UINT32 m_FrameShape; 00535 UINT32 m_LineStyleFlags; 00536 UINT32 m_PolyStyleFlags; 00537 FLOAT m_LineScale; //!< Width of line (usually in millimeters) or pattern zoom factor 00538 FLOAT m_PolyBorderScale; //!< Width of border (usually in millimeters) or pattern zoom factor 00539 UINT32 m_Arrow; 00540 00541 UINT32 m_NumLeaderLines; 00542 UINT8 spare2[4]; 00543 // FLOAT m_HatchAngle; //!< Use CADELEMOPT::Angle: Rotation angle for hatch patterns (was spare[8]) 00544 // INT32 PatternNum; //!< Use CADELEMOPT::LinePatt 00545 // INT32 FillPatternNum; //!< Use CADELEMOPT::FillPatt 00546 // INT32 BorderPatternNum; //!< Use CADELEMOPT::Symbol 00547 }; /* Followed by the actual points then the number of characters */ 00548 00549 #define CADBASELINEFLAG_Straight 0x00 00550 #define CADBASELINEFLAG_Exact 0x01 00551 #define CADBASELINEFLAG_Spline 0x02 00552 #define CADBASELINEFLAG_ClipUnder 0x04 00553 00554 struct CADINSERT { /* Size = 72 */ 00555 DPOINT3D_OLD InsertPt; //!< Point where to insert the block 00556 INT32 BlockNum; //!< Index of block to insert 00557 FLOAT rotate; //!< Rotation angle 00558 DOUBLE xscale; //!< X Scale factor (default 1.0) 00559 DOUBLE yscale; //!< Y Scale factor (default 1.0) 00560 DOUBLE zscale; //!< Z Scale factor (default 1.0) 00561 UINT16 numlins; //!< Number of lines (default 1) 00562 UINT16 numcols; //!< Number of columns (default 1) 00563 FLOAT linspace; //!< Spacing between lines 00564 FLOAT colspace; //!< Spacing between columns 00565 UINT32 space; 00566 }; 00567 00568 00569 struct CADRBOX { /* Size = 8 */ 00570 FLOAT rotate; //!< Rotation of box 00571 UINT32 space; 00572 }; 00573 00574 00575 struct CADLINE { /* Size = 8 */ 00576 UINT32 NumPoints; //!< Number of points in polyline 00577 UINT32 CurveFit; //!< Type of curve fitting used 00578 }; /* Followed by the point data */ 00579 00580 00581 struct CADPOLY { /* Size = 16 */ 00582 UINT32 NumPoints; //!< Number of points in first polygon. 00583 UINT32 NumIslands; //!< Number of islands in polygon. 0 if none. 00584 UINT32 CurveFit; //!< Type of curve fitting used 00585 UINT32 space; 00586 }; /* 00587 * Followed by the "number of points per island" buffer and the point data for the 00588 * polygon and islands. If NumIslands == 0 then only the polygon is stored. 00589 */ 00590 00591 struct CADMESH { /* Size = 16 */ 00592 UINT32 xverts; //!< Number of X vertices for mesh 00593 UINT32 yverts; //!< Number of Y vertices for mesh 00594 UINT16 CurveFit; //!< Type of curve fitting used 00595 UINT16 flags; //!< 1 = Closed in x verts: 2 = Closed in y verts 00596 UINT32 space; 00597 }; /* Followed by the point data in the form of array[xverts][yverts]. */ 00598 00599 00600 struct CADELLIPSE { /* Size = 48 */ 00601 DPOINT2D_OLD center; //!< Center of ellipse 00602 DOUBLE xsize; //!< Relative X width of ellipse 00603 DOUBLE ysize; //!< Relative Y width of ellipse 00604 FLOAT rotate; //!< Rotation of ellipse X axis with respect to the the world X axis 00605 UINT32 space; 00606 DOUBLE m_zvalue; //!< Z value of center point 00607 }; 00608 00609 00610 struct CADEARC { /* Size = 64 */ 00611 DPOINT2D_OLD center; //!< Center of ellipse 00612 DOUBLE start; //!< Start angle of elliptical arc 00613 DOUBLE end; //!< End angle of elliptical arc 00614 DOUBLE xsize; //!< Relative X width of ellipse 00615 DOUBLE ysize; //!< Relative Y width of ellipse 00616 FLOAT rotate; //!< Rotation of ellipse X axis with respect to the 00617 /* the world X axis*/ 00618 UINT32 space; 00619 DOUBLE m_zvalue; //!< Z value of center point 00620 }; 00621 00622 00623 struct CADMULTIPOINT { 00624 UINT32 NumPoints; //!< Number of points, duh 00625 UINT32 space; 00626 }; /* Followed by the point data */ 00627 00628 00629 struct CADMULTILINE { 00630 UINT32 NumLines; //!< Number of lines, duh 00631 UINT32 CurveFit; //!< Type of curve fitting used 00632 }; /* Followed by the number of points array then followed by the point data */ 00633 00634 00635 struct CADMULTIPOLY {