b44cc2a3153084dc9d78a7b22bf872e8ee15d01e
Stefan Schuermans initial version, DXFs can b...

Stefan Schuermans authored 11 years ago

1) /* drawing (DXF) to G-code (NGC) converter
2)  * Copyright 2013 Stefan Schuermans <stefan@schuermans.info>
3)  * Copyleft: CC-BY-SA http://creativecommons.org/licenses/by-sa/3.0/
4)  */
5) 
6) #include <dime/Input.h>
7) #include <dime/Model.h>
8) #include <iostream>
9) #include <map>
10) #include <string>
11) 
12) #include "drawing.h"
13) #include "layer.h"
14) #include "traverse.h"
15) 
16) /**
17)  * @brief clear all contents of drawing
18)  */
19) void Drawing::clear()
20) {
21)   mLayers.clear();
22) }
23) 
24) /**
25)  * @brief add a DXF file to this drawing
26)  * @param[in] strFileName name of the DXF file to read
27)  * @return if the DXF file could be read
28)  */
29) bool Drawing::addDxf(const std::string &strFileName)
30) {
31)   // read DXF file
32)   dimeInput in;
33)   if (!in.setFile(strFileName.c_str())) {
34)     std::cerr << "error opening file \"" << strFileName
35)               << "\" for reading" << std::endl;
36)     return false;
37)   }
38)   dimeModel model;
39)   if (!model.read(&in)) {
40)     std::cerr << "DXF read error in line " << in.getFilePosition()
41)               << " of file \"" << strFileName << "\""
42)               << std::endl;
43)     return false;
44)   }
45) 
46)   // enumerate all entities and add them to drawing
47)   struct traverse_ctx ctx;
48)   ctx.mpDrawing = this;
49)   model.traverseEntities(traverse_entity, &ctx);
50) 
51)   return true;
52) }
53) 
54) /**
55)  * @brief load a DXF file to this drawing
56)  * @param[in] strFileName name of the DXF file to read
57)  * @return if the DXF file could be read
58)  */
59) bool Drawing::loadDxf(const std::string &strFileName)
60) {
61)   clear();
62)   return addDxf(strFileName);
63) }
64)