dxf_writer.cpp
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2009 by Ulrich Friedrich Klank <klank@in.tum.de>
00003  *
00004  * This program is free software; you can redistribute it and/or modify
00005  * it under the terms of the GNU General Public License as published by
00006  * the Free Software Foundation; either version 3 of the License, or
00007  * (at your option) any later version.
00008  *
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
00016  */
00017 
00018 #include "pcl_vtk_tools/dxf_writer.h"
00019 
00020 dxfwriter::dxfwriter(std::string FileName) :
00021         linfile::File(FileName, true, false),
00022         m_handle(67)
00023 {
00024         WriteConstHeader();
00025 }
00026 
00027 dxfwriter::~dxfwriter(void)
00028 {
00029         WriteConstTail();
00030 }
00031 
00035 bool dxfwriter::WriteMesh(Mesh_t mesh,  std::string FileName)
00036 {
00037   dxfwriter write(FileName);
00038   for(unsigned int i = 0; i < mesh.size(); i++)
00039   {
00040     Polygon_t poly = mesh[i].first;
00041     if(poly.size() == 4)
00042     {
00043       write.WriteSolid(poly[0].x, poly[0].y, poly[0].z, poly[1].x, poly[1].y, poly[1].z,
00044                        poly[2].x, poly[2].y, poly[2].z, poly[3].x, poly[3].y, poly[3].z);
00045     }
00046     else if(poly.size() == 3)
00047     {
00048       write.WriteSolid(poly[0].x, poly[0].y, poly[0].z, poly[1].x, poly[1].y, poly[1].z,
00049                        poly[2].x, poly[2].y, poly[2].z);
00050     }
00051   }
00052   return true;
00053 }
00054 
00055 void dxfwriter::Write3dLINE(double startx, double starty, double startz, double endx, double endy, double endz)
00056 {
00057         WriteLine("LINE\n");
00058         WriteSingleInt(5);
00059         WriteLine("\n");
00060         WriteSingleIntAsHex(m_handle);
00061         WriteLine("\n");
00062         m_handle++;
00063         WriteSingleInt(6);
00064         WriteLine("\n");
00065         WriteLine("BYBLOCK\n");
00066         WriteSingleInt(8);
00067         WriteLine("\n");
00068         WriteSingleInt(0);
00069         WriteLine("\n");
00070         WriteSingleInt(10);
00071         WriteLine("\n");
00072         WriteDoubleLimLength(startx);
00073         WriteLine("\n");
00074         WriteSingleInt(20);
00075         WriteLine("\n");
00076         WriteDoubleLimLength(starty);
00077         WriteLine("\n");
00078         WriteSingleInt(30);
00079         WriteLine("\n");
00080         WriteDoubleLimLength(startz);
00081         WriteLine("\n");
00082         WriteSingleInt(11);
00083         WriteLine("\n");
00084         WriteDoubleLimLength(endx);
00085         WriteLine("\n");
00086         WriteSingleInt(21);
00087         WriteLine("\n");
00088         WriteDoubleLimLength(endy);
00089         WriteLine("\n");
00090         WriteSingleInt(31);
00091         WriteLine("\n");
00092         WriteDoubleLimLength(endz);
00093         WriteLine("\n");
00094         WriteLine("0\n");
00095 }
00096 
00097 void dxfwriter::WriteConstHeader()
00098 {
00099         WriteLine("0\n\
00100 SECTION\n\
00101   2\n\
00102 HEADER\n\
00103   9\n\
00104 $ACADVER\n\
00105   1\n\
00106 AC1009\n\
00107   9\n\
00108 $INSBASE\n\
00109  10\n\
00110 0.0\n\
00111  20\n\
00112 0.0\n\
00113  30\n\
00114 0.0\n\
00115   9\n\
00116 $EXTMIN\n\
00117  10\n\
00118 0.0\n\
00119  20\n\
00120 0.0\n\
00121  30\n\
00122 0.0\n\
00123   9\n\
00124 $EXTMAX\n\
00125  10\n\
00126 60.0\n\
00127  20\n\
00128 60.0\n\
00129  30\n\
00130 60.0\n\
00131   9\n\
00132 $LIMMIN\n\
00133  10\n\
00134 0.0\n\
00135  20\n\
00136 0.0\n\
00137   9\n\
00138 $LIMMAX\n\
00139  10\n\
00140 30.0\n\
00141  20\n\
00142 30.0\n\
00143   9\n\
00144 $ORTHOMODE\n\
00145  70\n\
00146      0\n\
00147   9\n\
00148 $REGENMODE\n\
00149  70\n\
00150      1\n\
00151   9\n\
00152 $FILLMODE\n\
00153  70\n\
00154      1\n\
00155   9\n\
00156 $QTEXTMODE\n\
00157  70\n\
00158      0\n\
00159   9\n\
00160 $MIRRTEXT\n\
00161  70\n\
00162      0\n\
00163   9\n\
00164 $DRAGMODE\n\
00165  70\n\
00166      2\n\
00167   9\n\
00168 $LTSCALE\n\
00169  40\n\
00170 1.0\n\
00171   9\n\
00172 $OSMODE\n\
00173  70\n\
00174     37\n\
00175   9\n\
00176 $ATTMODE\n\
00177  70\n\
00178      1\n\
00179   9\n\
00180 $TEXTSIZE\n\
00181  40\n\
00182 2.5\n\
00183   9\n\
00184 $TRACEWID\n\
00185  40\n\
00186 0.05\n\
00187   9\n\
00188 $TEXTSTYLE\n\
00189   7\n\
00190 STANDARD\n\
00191   9\n\
00192 $CLAYER\n\
00193   8\n\
00194 0\n\
00195   9\n\
00196 $CELTYPE\n\
00197   6\n\
00198 CONTINUOUS\n\
00199   9\n\
00200 $CECOLOR\n\
00201  62\n\
00202    256\n\
00203   9\n\
00204 $DIMSCALE\n\
00205  40\n\
00206 1.0\n\
00207   9\n\
00208 $DIMASZ\n\
00209  40\n\
00210 2.5\n\
00211   9\n\
00212 $DIMEXO\n\
00213  40\n\
00214 0.625\n\
00215   9\n\
00216 $DIMDLI\n\
00217  40\n\
00218 0.38\n\
00219   9\n\
00220 $DIMRND\n\
00221  40\n\
00222 0.0\n\
00223   9\n\
00224 $DIMDLE\n\
00225  40\n\
00226 0.0\n\
00227   9\n\
00228 $DIMEXE\n\
00229  40\n\
00230 1.25\n\
00231   9\n\
00232 $DIMTP\n\
00233  40\n\
00234 0.0\n\
00235   9\n\
00236 $DIMTM\n\
00237  40\n\
00238 0.0\n\
00239   9\n\
00240 $DIMTXT\n\
00241  40\n\
00242 2.5\n\
00243   9\n\
00244 $DIMCEN\n\
00245  40\n\
00246 0.09\n\
00247   9\n\
00248 $DIMTSZ\n\
00249  40\n\
00250 0.0\n\
00251   9\n\
00252 $DIMTOL\n\
00253  70\n\
00254      0\n\
00255   9\n\
00256 $DIMLIM\n\
00257  70\n\
00258      0\n\
00259   9\n\
00260 $DIMTIH\n\
00261  70\n\
00262      1\n\
00263   9\n\
00264 $DIMTOH\n\
00265  70\n\
00266      1\n\
00267   9\n\
00268 $DIMSE1\n\
00269  70\n\
00270      0\n\
00271   9\n\
00272 $DIMSE2\n\
00273  70\n\
00274      0\n\
00275   9\n\
00276 $DIMTAD\n\
00277  70\n\
00278      0\n\
00279   9\n\
00280 $DIMZIN\n\
00281  70\n\
00282      0\n\
00283   9\n\
00284 $DIMBLK\n\
00285   1\n\
00286 \n\
00287   9\n\
00288 $DIMASO\n\
00289  70\n\
00290      1\n\
00291   9\n\
00292 $DIMSHO\n\
00293  70\n\
00294      1\n\
00295   9\n\
00296 $DIMPOST\n\
00297   1\n\
00298 \n\
00299   9\n\
00300 $DIMAPOST\n\
00301   1\n\
00302 \n\
00303   9\n\
00304 $DIMALT\n\
00305  70\n\
00306      0\n\
00307   9\n\
00308 $DIMALTD\n\
00309  70\n\
00310      2\n\
00311   9\n\
00312 $DIMALTF\n\
00313  40\n\
00314 25.399999999999999\n\
00315   9\n\
00316 $DIMLFAC\n\
00317  40\n\
00318 1.0\n\
00319   9\n\
00320 $DIMTOFL\n\
00321  70\n\
00322      0\n\
00323   9\n\
00324 $DIMTVP\n\
00325  40\n\
00326 0.0\n\
00327   9\n\
00328 $DIMTIX\n\
00329  70\n\
00330      0\n\
00331   9\n\
00332 $DIMSOXD\n\
00333  70\n\
00334      0\n\
00335   9\n\
00336 $DIMSAH\n\
00337  70\n\
00338      0\n\
00339   9\n\
00340 $DIMBLK1\n\
00341   1\n\
00342 \n\
00343   9\n\
00344 $DIMBLK2\n\
00345   1\n\
00346 \n\
00347   9\n\
00348 $DIMSTYLE\n\
00349   2\n\
00350 STANDARD\n\
00351   9\n\
00352 $DIMCLRD\n\
00353  70\n\
00354      0\n\
00355   9\n\
00356 $DIMCLRE\n\
00357  70\n\
00358      0\n\
00359   9\n\
00360 $DIMCLRT\n\
00361  70\n\
00362      0\n\
00363   9\n\
00364 $DIMTFAC\n\
00365  40\n\
00366 1.0\n\
00367   9\n\
00368 $DIMGAP\n\
00369  40\n\
00370 0.625\n\
00371   9\n\
00372 $LUNITS\n\
00373  70\n\
00374      2\n\
00375   9\n\
00376 $LUPREC\n\
00377  70\n\
00378      4\n\
00379   9\n\
00380 $SKETCHINC\n\
00381  40\n\
00382 0.1\n\
00383   9\n\
00384 $FILLETRAD\n\
00385  40\n\
00386 0.0\n\
00387   9\n\
00388 $AUNITS\n\
00389  70\n\
00390      0\n\
00391   9\n\
00392 $AUPREC\n\
00393  70\n\
00394      2\n\
00395   9\n\
00396 $MENU\n\
00397   1\n\
00398 .\n\
00399   9\n\
00400 $ELEVATION\n\
00401  40\n\
00402 0.0\n\
00403   9\n\
00404 $PELEVATION\n\
00405  40\n\
00406 0.0\n\
00407   9\n\
00408 $THICKNESS\n\
00409  40\n\
00410 0.0\n\
00411   9\n\
00412 $LIMCHECK\n\
00413  70\n\
00414      0\n\
00415   9\n\
00416 $BLIPMODE\n\
00417  70\n\
00418      0\n\
00419   9\n\
00420 $CHAMFERA\n\
00421  40\n\
00422 0.0\n\
00423   9\n\
00424 $CHAMFERB\n\
00425  40\n\
00426 0.0\n\
00427   9\n\
00428 $SKPOLY\n\
00429  70\n\
00430      0\n\
00431   9\n\
00432 $TDCREATE\n\
00433  40\n\
00434 2454169.4542739\n\
00435   9\n\
00436 $TDUPDATE\n\
00437  40\n\
00438 2454169.4545730208\n\
00439   9\n\
00440 $TDINDWG\n\
00441  40\n\
00442 0.0003005671\n\
00443   9\n\
00444 $TDUSRTIMER\n\
00445  40\n\
00446 0.0003005671\n\
00447   9\n\
00448 $USRTIMER\n\
00449  70\n\
00450      1\n\
00451   9\n\
00452 $ANGBASE\n\
00453  50\n\
00454 0.0\n\
00455   9\n\
00456 $ANGDIR\n\
00457  70\n\
00458      0\n\
00459   9\n\
00460 $PDMODE\n\
00461  70\n\
00462      0\n\
00463   9\n\
00464 $PDSIZE\n\
00465  40\n\
00466 0.0\n\
00467   9\n\
00468 $PLINEWID\n\
00469  40\n\
00470 0.0\n\
00471   9\n\
00472 $COORDS\n\
00473  70\n\
00474      1\n\
00475   9\n\
00476 $SPLFRAME\n\
00477  70\n\
00478      0\n\
00479   9\n\
00480 $SPLINETYPE\n\
00481  70\n\
00482      6\n\
00483   9\n\
00484 $SPLINESEGS\n\
00485  70\n\
00486      8\n\
00487   9\n\
00488 $ATTDIA\n\
00489  70\n\
00490      0\n\
00491   9\n\
00492 $ATTREQ\n\
00493  70\n\
00494      1\n\
00495   9\n\
00496 $HANDLING\n\
00497  70\n\
00498      1\n\
00499   9\n\
00500 $HANDSEED\n\
00501   5\n\
00502 10033\n\
00503   9\n\
00504 $SURFTAB1\n\
00505  70\n\
00506      6\n\
00507   9\n\
00508 $SURFTAB2\n\
00509  70\n\
00510      6\n\
00511   9\n\
00512 $SURFTYPE\n\
00513  70\n\
00514      6\n\
00515   9\n\
00516 $SURFU\n\
00517  70\n\
00518      6\n\
00519   9\n\
00520 $SURFV\n\
00521  70\n\
00522      6\n\
00523   9\n\
00524 $UCSNAME\n\
00525   2\n\
00526 \n\
00527   9\n\
00528 $UCSORG\n\
00529  10\n\
00530 0.0\n\
00531  20\n\
00532 0.0\n\
00533  30\n\
00534 0.0\n\
00535   9\n\
00536 $UCSXDIR\n\
00537  10\n\
00538 1.0\n\
00539  20\n\
00540 0.0\n\
00541  30\n\
00542 0.0\n\
00543   9\n\
00544 $UCSYDIR\n\
00545  10\n\
00546 0.0\n\
00547  20\n\
00548 1.0\n\
00549  30\n\
00550 0.0\n\
00551   9\n\
00552 $PUCSNAME\n\
00553   2\n\
00554 \n\
00555   9\n\
00556 $PUCSORG\n\
00557  10\n\
00558 0.0\n\
00559  20\n\
00560 0.0\n\
00561  30\n\
00562 0.0\n\
00563   9\n\
00564 $PUCSXDIR\n\
00565  10\n\
00566 1.0\n\
00567  20\n\
00568 0.0\n\
00569  30\n\
00570 0.0\n\
00571   9\n\
00572 $PUCSYDIR\n\
00573  10\n\
00574 0.0\n\
00575  20\n\
00576 1.0\n\
00577  30\n\
00578 0.0\n\
00579   9\n\
00580 $USERI1\n\
00581  70\n\
00582      0\n\
00583   9\n\
00584 $USERI2\n\
00585  70\n\
00586      0\n\
00587   9\n\
00588 $USERI3\n\
00589  70\n\
00590      0\n\
00591   9\n\
00592 $USERI4\n\
00593  70\n\
00594      0\n\
00595   9\n\
00596 $USERI5\n\
00597  70\n\
00598      0\n\
00599   9\n\
00600 $USERR1\n\
00601  40\n\
00602 0.0\n\
00603   9\n\
00604 $USERR2\n\
00605  40\n\
00606 0.0\n\
00607   9\n\
00608 $USERR3\n\
00609  40\n\
00610 0.0\n\
00611   9\n\
00612 $USERR4\n\
00613  40\n\
00614 0.0\n\
00615   9\n\
00616 $USERR5\n\
00617  40\n\
00618 0.0\n\
00619   9\n\
00620 $WORLDVIEW\n\
00621  70\n\
00622      1\n\
00623   9\n\
00624 $SHADEDGE\n\
00625  70\n\
00626      3\n\
00627   9\n\
00628 $SHADEDIF\n\
00629  70\n\
00630     70\n\
00631   9\n\
00632 $TILEMODE\n\
00633  70\n\
00634      1\n\
00635   9\n\
00636 $MAXACTVP\n\
00637  70\n\
00638     64\n\
00639   9\n\
00640 $PLIMCHECK\n\
00641  70\n\
00642      0\n\
00643   9\n\
00644 $PEXTMIN\n\
00645  10\n\
00646 1.0000000000000000E+020\n\
00647  20\n\
00648 1.0000000000000000E+020\n\
00649  30\n\
00650 1.0000000000000000E+020\n\
00651   9\n\
00652 $PEXTMAX\n\
00653  10\n\
00654 -1.0000000000000000E+020\n\
00655  20\n\
00656 -1.0000000000000000E+020\n\
00657  30\n\
00658 -1.0000000000000000E+020\n\
00659   9\n\
00660 $PLIMMIN\n\
00661  10\n\
00662 0.0\n\
00663  20\n\
00664 0.0\n\
00665   9\n\
00666 $PLIMMAX\n\
00667  10\n\
00668 210.0\n\
00669  20\n\
00670 297.0\n\
00671   9\n\
00672 $UNITMODE\n\
00673  70\n\
00674      0\n\
00675   9\n\
00676 $VISRETAIN\n\
00677  70\n\
00678      1\n\
00679   9\n\
00680 $PLINEGEN\n\
00681  70\n\
00682      0\n\
00683   9\n\
00684 $PSLTSCALE\n\
00685  70\n\
00686      1\n\
00687   0\n\
00688 ENDSEC\n\
00689   0\n\
00690 SECTION\n\
00691   2\n\
00692 TABLES\n\
00693   0\n\
00694 TABLE\n\
00695   2\n\
00696 VPORT\n\
00697  70\n\
00698      1\n\
00699   0\n\
00700 VPORT\n\
00701   2\n\
00702 *ACTIVE\n\
00703  70\n\
00704      0\n\
00705  10\n\
00706 0.0\n\
00707  20\n\
00708 0.0\n\
00709  11\n\
00710 1.0\n\
00711  21\n\
00712 1.0\n\
00713  12\n\
00714 286.30555555555537\n\
00715  22\n\
00716 277.18754423213011\n\
00717  13\n\
00718 0.0\n\
00719  23\n\
00720 0.0\n\
00721  14\n\
00722 10.0\n\
00723  24\n\
00724 10.0\n\
00725  15\n\
00726 10.0\n\
00727  25\n\
00728 10.0\n\
00729  16\n\
00730 0.0\n\
00731  26\n\
00732 0.0\n\
00733  36\n\
00734 1.0\n\
00735  17\n\
00736 0.0\n\
00737  27\n\
00738 0.0\n\
00739  37\n\
00740 0.0\n\
00741  40\n\
00742 554.37508846426022\n\
00743  41\n\
00744 1.0328947368421051\n\
00745  42\n\
00746 50.0\n\
00747  43\n\
00748 0.0\n\
00749  44\n\
00750 0.0\n\
00751  50\n\
00752 0.0\n\
00753  51\n\
00754 0.0\n\
00755  71\n\
00756      0\n\
00757  72\n\
00758    100\n\
00759  73\n\
00760      1\n\
00761  74\n\
00762      3\n\
00763  75\n\
00764      1\n\
00765  76\n\
00766      1\n\
00767  77\n\
00768      0\n\
00769  78\n\
00770      0\n\
00771   0\n\
00772 ENDTAB\n\
00773   0\n\
00774 TABLE\n\
00775   2\n\
00776 LTYPE\n\
00777  70\n\
00778     19\n\
00779   0\n\
00780 LTYPE\n\
00781   2\n\
00782 CONTINUOUS\n\
00783  70\n\
00784      0\n\
00785   3\n\
00786 Solid line\n\
00787  72\n\
00788     65\n\
00789  73\n\
00790      0\n\
00791  40\n\
00792 0.0\n\
00793   0\n\
00794 LTYPE\n\
00795   2\n\
00796 DOT\n\
00797  70\n\
00798      0\n\
00799   3\n\
00800 Dot . . . . . . . . . . . . . . . . . . . . . .\n\
00801  72\n\
00802     65\n\
00803  73\n\
00804      2\n\
00805  40\n\
00806 6.3499999999999988\n\
00807  49\n\
00808 0.0\n\
00809  49\n\
00810 -6.3499999999999988\n\
00811   0\n\
00812 LTYPE\n\
00813   2\n\
00814 DOT2\n\
00815  70\n\
00816      0\n\
00817   3\n\
00818 Dot (.5x) .....................................\n\
00819  72\n\
00820     65\n\
00821  73\n\
00822      2\n\
00823  40\n\
00824 3.1749999999999989\n\
00825  49\n\
00826 0.0\n\
00827  49\n\
00828 -3.1749999999999989\n\
00829   0\n\
00830 LTYPE\n\
00831   2\n\
00832 DOTX2\n\
00833  70\n\
00834      0\n\
00835   3\n\
00836 Dot (2x) .  .  .  .  .  .  .  .  .  .  .  .  .\n\
00837  72\n\
00838     65\n\
00839  73\n\
00840      2\n\
00841  40\n\
00842 12.699999999999999\n\
00843  49\n\
00844 0.0\n\
00845  49\n\
00846 -12.699999999999999\n\
00847   0\n\
00848 LTYPE\n\
00849   2\n\
00850 DASHED\n\
00851  70\n\
00852      0\n\
00853   3\n\
00854 Dashed __ __ __ __ __ __ __ __ __ __ __ __ __ _\n\
00855  72\n\
00856     65\n\
00857  73\n\
00858      2\n\
00859  40\n\
00860 19.050000000000001\n\
00861  49\n\
00862 12.699999999999999\n\
00863  49\n\
00864 -6.3499999999999988\n\
00865   0\n\
00866 LTYPE\n\
00867   2\n\
00868 DASHED2\n\
00869  70\n\
00870      0\n\
00871   3\n\
00872 Dashed (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\n\
00873  72\n\
00874     65\n\
00875  73\n\
00876      2\n\
00877  40\n\
00878 9.5250000000000004\n\
00879  49\n\
00880 6.3499999999999988\n\
00881  49\n\
00882 -3.1749999999999989\n\
00883   0\n\
00884 LTYPE\n\
00885   2\n\
00886 DASHEDX2\n\
00887  70\n\
00888      0\n\
00889   3\n\
00890 Dashed (2x) ____  ____  ____  ____  ____  ___\n\
00891  72\n\
00892     65\n\
00893  73\n\
00894      2\n\
00895  40\n\
00896 38.100000000000001\n\
00897  49\n\
00898 25.399999999999999\n\
00899  49\n\
00900 -12.699999999999999\n\
00901   0\n\
00902 LTYPE\n\
00903   2\n\
00904 DASHDOT\n\
00905  70\n\
00906      0\n\
00907   3\n\
00908 Dash dot __ . __ . __ . __ . __ . __ . __ . __\n\
00909  72\n\
00910     65\n\
00911  73\n\
00912      4\n\
00913  40\n\
00914 25.399999999999999\n\
00915  49\n\
00916 12.699999999999999\n\
00917  49\n\
00918 -6.3499999999999988\n\
00919  49\n\
00920 0.0\n\
00921  49\n\
00922 -6.3499999999999988\n\
00923   0\n\
00924 LTYPE\n\
00925   2\n\
00926 DASHDOT2\n\
00927  70\n\
00928      0\n\
00929   3\n\
00930 Dash dot (.5x) _._._._._._._._._._._._._._._.\n\
00931  72\n\
00932     65\n\
00933  73\n\
00934      4\n\
00935  40\n\
00936 12.699999999999999\n\
00937  49\n\
00938 6.3499999999999988\n\
00939  49\n\
00940 -3.1749999999999989\n\
00941  49\n\
00942 0.0\n\
00943  49\n\
00944 -3.1749999999999989\n\
00945   0\n\
00946 LTYPE\n\
00947   2\n\
00948 DASHDOTX2\n\
00949  70\n\
00950      0\n\
00951   3\n\
00952 Dash dot (2x) ____  .  ____  .  ____  .  ___\n\
00953  72\n\
00954     65\n\
00955  73\n\
00956      4\n\
00957  40\n\
00958 50.799999999999997\n\
00959  49\n\
00960 25.399999999999999\n\
00961  49\n\
00962 -12.699999999999999\n\
00963  49\n\
00964 0.0\n\
00965  49\n\
00966 -12.699999999999999\n\
00967   0\n\
00968 LTYPE\n\
00969   2\n\
00970 DIVIDE\n\
00971  70\n\
00972      0\n\
00973   3\n\
00974 Divide ____ . . ____ . . ____ . . ____ . . ____\n\
00975  72\n\
00976     65\n\
00977  73\n\
00978      6\n\
00979  40\n\
00980 31.75\n\
00981  49\n\
00982 12.699999999999999\n\
00983  49\n\
00984 -6.3499999999999988\n\
00985  49\n\
00986 0.0\n\
00987  49\n\
00988 -6.3499999999999988\n\
00989  49\n\
00990 0.0\n\
00991  49\n\
00992 -6.3499999999999988\n\
00993   0\n\
00994 LTYPE\n\
00995   2\n\
00996 DIVIDE2\n\
00997  70\n\
00998      0\n\
00999   3\n\
01000 Divide (.5x) __..__..__..__..__..__..__..__.._\n\
01001  72\n\
01002     65\n\
01003  73\n\
01004      6\n\
01005  40\n\
01006 15.875\n\
01007  49\n\
01008 6.3499999999999988\n\
01009  49\n\
01010 -3.1749999999999989\n\
01011  49\n\
01012 0.0\n\
01013  49\n\
01014 -3.1749999999999989\n\
01015  49\n\
01016 0.0\n\
01017  49\n\
01018 -3.1749999999999989\n\
01019   0\n\
01020 LTYPE\n\
01021   2\n\
01022 DIVIDEX2\n\
01023  70\n\
01024      0\n\
01025   3\n\
01026 Divide (2x) ________  .  .  ________  .  .  _\n\
01027  72\n\
01028     65\n\
01029  73\n\
01030      6\n\
01031  40\n\
01032 63.5\n\
01033  49\n\
01034 25.399999999999999\n\
01035  49\n\
01036 -12.699999999999999\n\
01037  49\n\
01038 0.0\n\
01039  49\n\
01040 -12.699999999999999\n\
01041  49\n\
01042 0.0\n\
01043  49\n\
01044 -12.699999999999999\n\
01045   0\n\
01046 LTYPE\n\
01047   2\n\
01048 CENTER\n\
01049  70\n\
01050      0\n\
01051   3\n\
01052 Center ____ _ ____ _ ____ _ ____ _ ____ _ ____\n\
01053  72\n\
01054     65\n\
01055  73\n\
01056      4\n\
01057  40\n\
01058 50.799999999999997\n\
01059  49\n\
01060 31.75\n\
01061  49\n\
01062 -6.3499999999999988\n\
01063  49\n\
01064 6.3499999999999988\n\
01065  49\n\
01066 -6.3499999999999988\n\
01067   0\n\
01068 LTYPE\n\
01069   2\n\
01070 CENTER2\n\
01071  70\n\
01072      0\n\
01073   3\n\
01074 Center (.5x) ___ _ ___ _ ___ _ ___ _ ___ _ ___\n\
01075  72\n\
01076     65\n\
01077  73\n\
01078      4\n\
01079  40\n\
01080 28.574999999999999\n\
01081  49\n\
01082 19.050000000000001\n\
01083  49\n\
01084 -3.1749999999999989\n\
01085  49\n\
01086 3.1749999999999989\n\
01087  49\n\
01088 -3.1749999999999989\n\
01089   0\n\
01090 LTYPE\n\
01091   2\n\
01092 CENTERX2\n\
01093  70\n\
01094      0\n\
01095   3\n\
01096 Center (2x) ________  __  ________  __  _____\n\
01097  72\n\
01098     65\n\
01099  73\n\
01100      4\n\
01101  40\n\
01102 101.59999999999999\n\
01103  49\n\
01104 63.5\n\
01105  49\n\
01106 -12.699999999999999\n\
01107  49\n\
01108 12.699999999999999\n\
01109  49\n\
01110 -12.699999999999999\n\
01111   0\n\
01112 LTYPE\n\
01113   2\n\
01114 BORDER\n\
01115  70\n\
01116      0\n\
01117   3\n\
01118 Border __ __ . __ __ . __ __ . __ __ . __ __ .\n\
01119  72\n\
01120     65\n\
01121  73\n\
01122      6\n\
01123  40\n\
01124 44.450000000000003\n\
01125  49\n\
01126 12.699999999999999\n\
01127  49\n\
01128 -6.3499999999999988\n\
01129  49\n\
01130 12.699999999999999\n\
01131  49\n\
01132 -6.3499999999999988\n\
01133  49\n\
01134 0.0\n\
01135  49\n\
01136 -6.3499999999999988\n\
01137   0\n\
01138 LTYPE\n\
01139   2\n\
01140 BORDER2\n\
01141  70\n\
01142      0\n\
01143   3\n\
01144 Border (.5x) __.__.__.__.__.__.__.__.__.__.__.\n\
01145  72\n\
01146     65\n\
01147  73\n\
01148      6\n\
01149  40\n\
01150 22.225000000000001\n\
01151  49\n\
01152 6.3499999999999988\n\
01153  49\n\
01154 -3.1749999999999989\n\
01155  49\n\
01156 6.3499999999999988\n\
01157  49\n\
01158 -3.1749999999999989\n\
01159  49\n\
01160 0.0\n\
01161  49\n\
01162 -3.1749999999999989\n\
01163   0\n\
01164 LTYPE\n\
01165   2\n\
01166 BORDERX2\n\
01167  70\n\
01168      0\n\
01169   3\n\
01170 Border (2x) ____  ____  .  ____  ____  .  ___\n\
01171  72\n\
01172     65\n\
01173  73\n\
01174      6\n\
01175  40\n\
01176 88.900000000000006\n\
01177  49\n\
01178 25.399999999999999\n\
01179  49\n\
01180 -12.699999999999999\n\
01181  49\n\
01182 25.399999999999999\n\
01183  49\n\
01184 -12.699999999999999\n\
01185  49\n\
01186 0.0\n\
01187  49\n\
01188 -12.699999999999999\n\
01189   0\n\
01190 ENDTAB\n\
01191   0\n\
01192 TABLE\n\
01193   2\n\
01194 LAYER\n\
01195  70\n\
01196      1\n\
01197   0\n\
01198 LAYER\n\
01199   2\n\
01200 0\n\
01201  70\n\
01202      0\n\
01203  62\n\
01204      7\n\
01205   6\n\
01206 CONTINUOUS\n\
01207   0\n\
01208 ENDTAB\n\
01209   0\n\
01210 TABLE\n\
01211   2\n\
01212 STYLE\n\
01213  70\n\
01214      1\n\
01215   0\n\
01216 STYLE\n\
01217   2\n\
01218 STANDARD\n\
01219  70\n\
01220      0\n\
01221  40\n\
01222 0.0\n\
01223  41\n\
01224 0.75\n\
01225  50\n\
01226 0.0\n\
01227  71\n\
01228      0\n\
01229  42\n\
01230 2.5\n\
01231   3\n\
01232 txt\n\
01233   4\n\
01234 \n\
01235   0\n\
01236 ENDTAB\n\
01237   0\n\
01238 TABLE\n\
01239   2\n\
01240 VIEW\n\
01241  70\n\
01242      0\n\
01243   0\n\
01244 ENDTAB\n\
01245   0\n\
01246 TABLE\n\
01247   2\n\
01248 UCS\n\
01249  70\n\
01250      0\n\
01251   0\n\
01252 ENDTAB\n\
01253   0\n\
01254 TABLE\n\
01255   2\n\
01256 APPID\n\
01257  70\n\
01258      1\n\
01259   0\n\
01260 APPID\n\
01261   2\n\
01262 ACAD\n\
01263  70\n\
01264      0\n\
01265   0\n\
01266 ENDTAB\n\
01267   0\n\
01268 TABLE\n\
01269   2\n\
01270 DIMSTYLE\n\
01271  70\n\
01272      1\n\
01273   0\n\
01274 DIMSTYLE\n\
01275   2\n\
01276 STANDARD\n\
01277  70\n\
01278      0\n\
01279   3\n\
01280 \n\
01281   4\n\
01282 \n\
01283   5\n\
01284 \n\
01285   6\n\
01286 \n\
01287   7\n\
01288 \n\
01289  40\n\
01290 1.0\n\
01291  41\n\
01292 2.5\n\
01293  42\n\
01294 0.625\n\
01295  43\n\
01296 3.75\n\
01297  44\n\
01298 1.25\n\
01299  45\n\
01300 0.0\n\
01301  46\n\
01302 0.0\n\
01303  47\n\
01304 0.0\n\
01305  48\n\
01306 0.0\n\
01307 140\n\
01308 2.5\n\
01309 141\n\
01310 2.5\n\
01311 142\n\
01312 0.0\n\
01313 143\n\
01314 0.03937007874016\n\
01315 144\n\
01316 1.0\n\
01317 145\n\
01318 0.0\n\
01319 146\n\
01320 1.0\n\
01321 147\n\
01322 0.625\n\
01323  71\n\
01324      0\n\
01325  72\n\
01326      0\n\
01327  73\n\
01328      0\n\
01329  74\n\
01330      0\n\
01331  75\n\
01332      0\n\
01333  76\n\
01334      0\n\
01335  77\n\
01336      1\n\
01337  78\n\
01338      8\n\
01339 170\n\
01340      0\n\
01341 171\n\
01342      3\n\
01343 172\n\
01344      1\n\
01345 173\n\
01346      0\n\
01347 174\n\
01348      0\n\
01349 175\n\
01350      0\n\
01351 176\n\
01352      0\n\
01353 177\n\
01354      0\n\
01355 178\n\
01356      0\n\
01357   0\n\
01358 ENDTAB\n\
01359   0\n\
01360 ENDSEC\n\
01361   0\n\
01362 SECTION\n\
01363   2\n\
01364 BLOCKS\n\
01365   0\n\
01366 BLOCK\n\
01367   8\n\
01368 0\n\
01369   2\n\
01370 $MODEL_SPACE\n\
01371  70\n\
01372      0\n\
01373  10\n\
01374 0.0\n\
01375  20\n\
01376 0.0\n\
01377  30\n\
01378 0.0\n\
01379   3\n\
01380 $MODEL_SPACE\n\
01381   1\n\
01382 \n\
01383   0\n\
01384 ENDBLK\n\
01385   5\n\
01386 21\n\
01387   8\n\
01388 0\n\
01389   0\n\
01390 BLOCK\n\
01391  67\n\
01392      1\n\
01393   8\n\
01394 0\n\
01395   2\n\
01396 $PAPER_SPACE\n\
01397  70\n\
01398      0\n\
01399  10\n\
01400 0.0\n\
01401  20\n\
01402 0.0\n\
01403  30\n\
01404 0.0\n\
01405   3\n\
01406 $PAPER_SPACE\n\
01407   1\n\
01408 \n\
01409   0\n\
01410 ENDBLK\n\
01411   5\n\
01412 1D\n\
01413  67\n\
01414      1\n\
01415   8\n\
01416 0\n\
01417   0\n\
01418 ENDSEC\n\
01419   0\n\
01420 SECTION\n\
01421   2\n\
01422 ENTITIES\n\
01423   0\n");
01424 }
01425 
01426 void dxfwriter::WriteConstTail()
01427 {
01428 WriteLine("ENDSEC\n\
01429   0\n\
01430 EOF\n");
01431 }
01432 
01433 void dxfwriter::WriteGroup(std::string st, int value)
01434 {
01435         WriteLine(st.c_str());
01436         WriteLine("\n");
01437         WriteSingleInt(value);
01438         WriteLine("\n");
01439 }
01440 
01441 void dxfwriter::WriteGroup(std::string st, double value)
01442 {
01443         WriteLine(st.c_str());
01444         WriteLine("\n");
01445         WriteSingleDouble(value);
01446         WriteLine("\n");
01447 }
01448 
01449 void dxfwriter::WriteGroup(int st, int value)
01450 {
01451         WriteSingleInt(st);
01452         WriteLine("\n");
01453         WriteSingleInt(value);
01454         WriteLine("\n");
01455 }
01456 
01457 void dxfwriter::WriteGroup(int st, double value)
01458 {
01459         WriteSingleInt(st);
01460         WriteLine("\n");
01461         WriteSingleDouble(value);
01462         WriteLine("\n");
01463 }
01464 
01465 void dxfwriter::WriteGroupHex(int st, double value)
01466 {
01467         WriteSingleInt(st);
01468         WriteLine("\n");
01469         WriteSingleIntAsHex((int)value);
01470         WriteLine("\n");
01471 }
01472 
01473 void dxfwriter::WriteSolid(double dx0, double dy0, double dz0,
01474                                                    double dx1, double dy1, double dz1,
01475                                                    double dx2, double dy2, double dz2,
01476                                                    double dx3, double dy3, double dz3)
01477 {
01478         WriteLine("3DFACE\n");
01479         WriteGroupHex(5, m_handle);
01480         m_handle++;
01481         WriteGroup(8,0);
01482         WriteGroup(10, dx0);
01483         WriteGroup(20, dy0);
01484         WriteGroup(30, dz0);
01485         WriteGroup(11, dx1);
01486         WriteGroup(21, dy1);
01487         WriteGroup(31, dz1);
01488         WriteGroup(12, dx2);
01489         WriteGroup(22, dy2);
01490         WriteGroup(32, dz2);
01491         WriteGroup(13, dx3);
01492         WriteGroup(23, dy3);
01493         WriteGroup(33, dz3);
01494         WriteLine("0\n");
01495 }
01496 
01497 void dxfwriter::WriteSolid(double dx0, double dy0, double dz0,
01498                                                    double dx1, double dy1, double dz1,
01499                                                    double dx2, double dy2, double dz2)
01500 {
01501         WriteLine("3DFACE\n");
01502         WriteGroupHex(5, m_handle);
01503         m_handle++;
01504         WriteGroup(8,0);
01505         WriteGroup(10, dx0);
01506         WriteGroup(20, dy0);
01507         WriteGroup(30, dz0);
01508         WriteGroup(11, dx1);
01509         WriteGroup(21, dy1);
01510         WriteGroup(31, dz1);
01511         WriteGroup(12, dx2);
01512         WriteGroup(22, dy2);
01513         WriteGroup(32, dz2);
01514         WriteGroup(13, dx2);
01515         WriteGroup(23, dy2);
01516         WriteGroup(33, dz2);
01517         WriteLine("0\n");
01518 }
01519 
01520 void dxfwriter::WriteBox(double offsetx, double offsety, double offsetz, double sizex, double sizey, double sizez)
01521 {
01522         double x0 = offsetx;
01523         double xd = offsetx + sizex;
01524         double y0 = offsety;
01525         double yd = offsety + sizey;
01526         double z0 = offsetz;
01527         double zd = offsetz + sizez;
01528         /*Bottom View*/
01529         WriteSolid(x0,y0,z0,xd,y0,z0,xd,yd,z0,x0,yd,z0);
01530         WriteSolid(x0,y0,z0,x0,yd,z0,x0,yd,zd,x0,y0,zd);
01531         WriteSolid(x0,y0,z0,x0,y0,zd,xd,y0,zd,xd,y0,z0);
01532         /*Top View TODO REmove*/
01533         //WriteSolid(xd,yd,zd,x0,yd,zd,x0,y0,zd,xd,y0,zd);
01534         WriteSolid(xd,yd,zd,x0 - 0.1 + sizex / 2,yd,zd,x0 - 0.1+ sizex / 2,y0,zd,xd,y0,zd);
01535         WriteSolid(xd - sizex / 2,yd,zd,x0,yd,zd,x0,y0,zd,xd - sizex / 2,y0,zd);
01536         WriteSolid(xd,yd,zd + 0.01,xd - 0.4 - sizex / 4,yd,zd + 0.01,xd,yd - sizey / 2,zd + 0.01,xd,yd,zd + 0.01);
01537 
01538         WriteSolid(xd,yd,zd,xd,y0,zd,xd,y0,z0,xd,yd,z0);
01539         WriteSolid(xd,yd,zd,x0,yd,zd,x0,yd,z0,xd,yd,z0);
01540 
01541         Write3dLINE(x0,y0,z0,xd,y0,z0);
01542         Write3dLINE(xd,y0,z0,xd,yd,z0);
01543         Write3dLINE(xd,yd,z0,x0,yd,z0);
01544         Write3dLINE(x0,yd,z0,x0,y0,z0);
01545 
01546         Write3dLINE(x0,y0,z0,x0,yd,z0);
01547         Write3dLINE(x0,yd,z0,x0,yd,zd);
01548         Write3dLINE(x0,yd,zd,x0,y0,zd);
01549         Write3dLINE(x0,y0,zd,x0,y0,z0);
01550 
01551         Write3dLINE(x0,y0,z0,x0,y0,zd);
01552         Write3dLINE(x0,y0,zd,xd,y0,zd);
01553         Write3dLINE(xd,y0,zd,xd,y0,z0);
01554         Write3dLINE(xd,y0,z0,x0,y0,z0);
01555 
01556         Write3dLINE(xd,yd,zd,x0,yd,zd);
01557         Write3dLINE(x0,yd,zd,x0,y0,zd);
01558         Write3dLINE(x0,y0,zd,xd,y0,zd);
01559         Write3dLINE(xd,y0,zd,xd,yd,zd);
01560 
01561         Write3dLINE(xd,yd,zd,xd,y0,zd);
01562         Write3dLINE(xd,y0,zd,xd,y0,z0);
01563         Write3dLINE(xd,y0,z0,xd,yd,z0);
01564         Write3dLINE(xd,yd,z0,xd,yd,zd);
01565 
01566         Write3dLINE(xd,yd,zd,x0,yd,zd);
01567         Write3dLINE(x0,yd,zd,x0,yd,z0);
01568         Write3dLINE(x0,yd,z0,xd,yd,z0);
01569         Write3dLINE(xd,yd,z0,xd,yd,zd);
01570 }
01571 
01572 #define line(a,b) Write3dLINE(dx##a, dy##a, dz##a, dx##b, dy##b, dz##b)
01573 #define SOLID(a,b,c,e) WriteSolid(dx##a, dy##a, dz##a, dx##b, dy##b, dz##b,dx##c, dy##c, dz##c,dx##e, dy##e, dz##e)
01574 
01575 void dxfwriter::WriteBoxFromPoints(double dx0, double dy0, double dz0,
01576                                                    double dx1, double dy1, double dz1,
01577                                                    double dx2, double dy2, double dz2,
01578                                                    double dx3, double dy3, double dz3,
01579                                                    double dx4, double dy4, double dz4,
01580                                                    double dx5, double dy5, double dz5,
01581                                                    double dx6, double dy6, double dz6,
01582                                                    double dx7, double dy7, double dz7)
01583 {
01584 
01585         SOLID(0,1,2,3);
01586         line(0,1);
01587         line(1,2);
01588         line(2,3);
01589         line(3,0);
01590         SOLID(0,1,5,4);
01591         line(0,1);
01592         line(1,5);
01593         line(5,4);
01594         line(4,0);
01595         SOLID(4,5,6,7);
01596         line(4,5);
01597         line(5,6);
01598         line(6,7);
01599         line(7,4);
01600         SOLID(6,7,3,2);
01601         line(6,7);
01602         line(7,3);
01603         line(3,2);
01604         line(2,6);
01605         SOLID(1,2,6,5);
01606         line(1,2);
01607         line(2,6);
01608         line(6,5);
01609         line(5,1);
01610         SOLID(3,0,4,7);
01611         line(3,0);
01612         line(0,4);
01613         line(4,7);
01614         line(7,3);
01615 }
01616 
01617 void dxfwriter::WriteCylinder(double centerx0, double centery0, double centerz0,
01618                                                    double radius, double height, double angleX)
01619 {
01620         int num_faces = 16;
01621         double step = 2*M_PI / num_faces;
01622         double facelength = radius * sin(step / 2) + (radius - radius * cos(step / 2)) / cos(step / 2);
01623         double dx0, dy0, dz0, dx1, dy1, dz1, dx2, dy2, dz2, dx3, dy3, dz3;
01624         for(int i = 0; i < num_faces; i++)
01625         {
01626                 double angle = i * step;
01627                 dx0 = dx1 = dx2 = dx3 = centerx0 + radius * cos(angle);
01628                 dx0 -= facelength * sin(angle);
01629                 dx3 -= facelength * sin(angle);
01630                 dx1 += facelength * sin(angle);
01631                 dx2 += facelength * sin(angle);
01632 
01633                 dy0 = dy1 = dy2 = dy3 = centery0 + radius * sin(angle) * sin(angleX);
01634                 double temp = facelength * cos(angle) * sin(angleX);
01635                 dy0 += temp ;
01636                 dy3 += temp + height * cos(angleX);
01637                 dy1 -= temp ;
01638                 dy2 -= temp - height * cos(angleX);
01639 
01640                 dz0 = dz1 = dz2 = dz3 = centerz0+ radius * sin(angle) * cos(angleX);
01641                 temp = facelength * cos(angle) * cos(angleX);
01642                 dz0 += temp ;
01643                 dz3 += temp - height * sin(angleX);
01644                 dz1 -= temp ;
01645                 dz2 -= temp + height * sin(angleX);
01646 
01647                 SOLID(0,1,2,3);
01648                 line(0,1);
01649                 line(1,2);
01650                 line(2,3);
01651                 line(3,0);
01652         }
01653 }
01654 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Friends Defines


pcl_vtk_tools
Author(s): Nico Blodow, Zoltan-Csaba Marton, Dejan Pangercic
autogenerated on Thu May 23 2013 17:19:40