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)