BOOL __stdcall ImportDXFFile(const TCHAR* lpszFileName, Painter* painter, Layers* layers, Blocks* blocks) { layers->clearLayers(); blocks->clear(); Draw_Dxf* creationClass = CreateDraw_Dxf(painter,layers,blocks); DL_Dxf* dxf = CreateDL_Dxf(); #ifdef UNICODE char str[MAX_PATH]; WideCharToMultiByte(CP_ACP,0,(TCHAR*)lpszFileName,-1,str,MAX_PATH,NULL,NULL); std::string strFileName(str); #else std::string strFileName(lpszFileName); #endif if (!dxf->in(strFileName.c_str(), creationClass)) { // if file open failed DestroyDL_Dxf(dxf); DestroyDraw_Dxf(creationClass); return false; } blocks->regen(); layers->regen(); DestroyDL_Dxf(dxf); DestroyDraw_Dxf(creationClass); return true; }
void InputFormatDXF::readFeaturesInto(OutputFormat * outputHandler) { // Pull in actual data now... this->output = outputHandler; DL_Dxf * getData = new DL_Dxf(); if (!getData->in(this->filename, this)) { fprintf(stderr, "Could not retrieve data from input file.\n"); delete getData; exit(1); } // Clean up any hanging polylines: this->finishPendingPolyline(); if (this->filename) { delete this->filename; this->filename = NULL; } if (this->insertionReceiver) { delete this->insertionReceiver; this->insertionReceiver = NULL; } // Don't delete output format - caller can do that this->output = NULL; delete getData; }
TEST_F(TestDrawing, TestFromParsedDrawing) { ParseDXF parser; DL_Dxf dxf; dxf.in("test_shape.dxf", &parser); Drawing const& drawing(parser.GetDrawing()); drawing.Print(std::cout); std::cout << std::endl; double yCenter = (2.51892L-0.518918L)/2+0.518918L; double xCenter = (3.35231L-1.35231L)/2+1.35231L; std::list<double> collissions; Line line1(xCenter, 0, xCenter, 10); drawing.GetCollissions(line1, collissions); collissions.sort(); ASSERT_EQ(2u, collissions.size()); pt center = drawing.GetCenter(); EXPECT_TRUE(center.y<=(yCenter+0.001)) << "Expected=" << yCenter << " Actual =" << center.y; EXPECT_TRUE(center.y>=(yCenter-0.001)) << "Expected=" << yCenter << " Actual =" << center.y; EXPECT_TRUE(center.x<=(xCenter+0.001)) << "Expected=" << xCenter << " Actual =" << center.x; EXPECT_TRUE(center.x>=(xCenter-0.001)) << "Expected=" << xCenter << " Actual =" << center.x; }
void input(std::string filename) { DL_Dxf dxf; if (!dxf.in(filename, this)) { std::cerr << "Unable to open input file '" << filename << "'\n"; exit(1); } }
void testReading(char* file) { // Load DXF file into memory: std::cout << "Reading file " << file << "...\n"; Test_CreationClass* creationClass = new Test_CreationClass(); DL_Dxf* dxf = new DL_Dxf(); if (!dxf->in(file, creationClass)) { // if file open failed std::cerr << file << " could not be opened.\n"; return; } delete dxf; delete creationClass; }
DXFReader::DXFReader(tModel *m, QString fileName) : model(m) { DL_Dxf dxf; activeElement = NULL; subLayer = NULL; if (!dxf.in(fileName.toStdString(), this)) { // std::cerr << "drawing.dxf could not be opened.\n"; } }
InputFormatDXF::InputFormatDXF(const char * inputFilename) { // Get the insertions / blocks - so that we know what offsets to use as we encounter these blocks: DL_Dxf * fetchInsertions = new DL_Dxf(); this->insertionReceiver = new GetInsertions(); if (!fetchInsertions->in(inputFilename, this->insertionReceiver)) { fprintf(stderr, "Could not retrieve insertion blocks from input file.\n"); delete fetchInsertions; exit(1); } delete fetchInsertions; fetchInsertions = NULL; this->filename = new char[strlen(inputFilename)]; strcpy(this->filename, inputFilename); this->currentBlockX = 0; this->currentBlockY = 0; }
/* * @brief Main function for DXFLib test program. * * @param argc Number of delimited items on command line, * including program name. * @param argv Pointer to array of command line items * * @retval 0 if missing input file argument or * file couldn't be opened * @retval 1 if file opened */ int main(int argc, char** argv) { // Check given arguments: if (argc<2) { usage(); return 0; } //DL_Dxf::test(); // Load DXF file into memory: std::cout << "Reading file " << argv[1] << "...\n"; Test_CreationClass creationClass; DL_Dxf dxf; if (!dxf.in(argv[1], &creationClass)) { // if file open failed std::cerr << argv[1] << " could not be opened.\n"; return 0; } return 1; // file could be opened }
dxfbezier2linesClass::dxfbezier2linesClass(string file_name, int st, double textLengte) { n=0; res = 50000; text_lengte = textLengte; //strcpy(file,file_name); aantal_punten = st; char *cstr = new char[file_name.length() + 1]; strcpy(cstr, file_name .c_str()); DL_Dxf* dxf = new DL_Dxf(); if (!dxf->in(cstr, this)) // if file open failed { std::cerr << file_name << " could not be opened.\n"; exit(1); } delete dxf; calcLine(); Scale(); // char* file="twee.dxf" }
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct_) { #ifdef _TEST_CODE CDxfParserEx* creationClass = new CDxfParserEx(); DL_Dxf* dxf = new DL_Dxf(); if (!dxf->in("C:\\1.dxf", creationClass)) { return 0; } #endif if (CFrameWnd::OnCreate(lpCreateStruct_) == -1) return -1; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) { TRACE0("未能创建工具栏\n"); return -1; // 未能创建 } if (!m_wndEditToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_LEFT | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndEditToolBar.LoadToolBar(IDR_EDIT)) { TRACE0("未能创建工具栏\n"); return -1; // 未能创建 } if (!CreateComboBox(ID_COMBOBOX)) { TRACE0("Failed to create combo box\n"); return -1; } if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("未能创建状态栏\n"); return -1; // 未能创建 } // TODO: Delete these three lines if you don't want the toolbar to // be dockable // m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); // EnableDocking(CBRS_ALIGN_ANY); // DockControlBar(&m_wndToolBar); //////////////////////////////////////////// if( !m_wndCoolBar.Create(_T("控制栏"),this, CSize( 250, 400 ), TRUE, 123 ) ) { TRACE0("Failed to create mybar\n"); return -1; } //设置样式 m_wndCoolBar.SetBarStyle( m_wndCoolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC ); //设置停靠 m_wndCoolBar.EnableDocking( CBRS_ALIGN_ANY ); EnableDocking(CBRS_ALIGN_ANY); DockControlBar( &m_wndCoolBar, AFX_IDW_DOCKBAR_RIGHT);///停靠 ////// m_wndTabCtrl.Create( TCS_DOWN | WS_CHILD | WS_VISIBLE, CRect( 0, 0, 200, 200), &m_wndCoolBar, 125); //生成TOC对话框,并加入m_wndTabCtrl中 if( m_formDlg.Create( IDD_FORMVIEW, &m_wndTabCtrl ) ) m_wndTabCtrl.AddPage( &m_formDlg ,_T("控制")); m_formDlg.ShowWindow( SW_SHOW ); m_wndTabCtrl.UpdateWindow(); //////////////////////////////////////////// if( !m_wndBotmCoolBar.Create(_T("CNC控制栏"),this, CSize( 250, 165 ), TRUE, 123 ) ) { TRACE0("Failed to create mybar\n"); return -1; } //设置样式 m_wndBotmCoolBar.SetBarStyle( m_wndBotmCoolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC ); //设置停靠 m_wndBotmCoolBar.EnableDocking( CBRS_ALIGN_ANY ); EnableDocking(CBRS_ALIGN_ANY); DockControlBar( &m_wndBotmCoolBar, AFX_IDW_DOCKBAR_BOTTOM);///停靠 ////// m_tabCtrlBottom.Create( TCS_UP | WS_CHILD | WS_VISIBLE, CRect( 0, 0, 200, 200), &m_wndBotmCoolBar, 125); //生成TOC对话框,并加入m_wndTabCtrl中 if( m_dialogCCD.Create( IDD_FORMVIEW_CCD, &m_tabCtrlBottom ) ) { m_tabCtrlBottom.AddPage(&m_dialogCCD ,_T("CCD")); } m_dialogCCD.ShowWindow( SW_SHOW ); /*if(m_dialogCameraConfig.Create(IDD_CAMERA_CONFIG, &m_tabCtrlBottom)) m_tabCtrlBottom.AddPage( &m_dialogCameraConfig ,_T("相机参数配置")); if(m_dialogImageConfig.Create(IDD_IMAGE_CONFIG, &m_tabCtrlBottom)) m_tabCtrlBottom.AddPage( &m_dialogImageConfig ,_T("图像参数配置")); if(m_dialogMotionConfig.Create(IDD_MOTION_CONFIG, &m_tabCtrlBottom)) m_tabCtrlBottom.AddPage( &m_dialogMotionConfig ,_T("运动参数配置")); m_dialogMotionConfig,ShowWindow(SW_SHOW); m_dialogImageConfig.ShowWindow(SW_SHOW); m_dialogCameraConfig.ShowWindow( SW_SHOW );*/ m_wndTabCtrl.UpdateWindow(); // TODO: 如果不需要工具栏可停靠,则删除这三行 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); m_wndEditToolBar.EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndEditToolBar); #ifdef _MAKELANG OnViewLanguage(IDM_View_Default); #else // 列出语言文件 if (CLanguage::List(GetSubMenu(GetSubMenu(this->GetMenu()->m_hMenu, 2), 3)) != IDM_View_Default) { CLanguage::TranslateMenu(this->GetMenu()->m_hMenu, MAKEINTRESOURCE(IDR_MAINFRAME)); } #endif //初始化运动控制卡 InitMCard(); RegistMsgWnd(m_hWnd); //SetTimer(100,300,NULL); return 0; }
//--------------------------------------------------------- bool CDXF_Import::On_Execute(void) { CSG_String fName = Parameters("FILE")->asString(); Parameters("TABLES")->asTableList() ->Del_Items(); Parameters("SHAPES")->asShapesList()->Del_Items(); m_Filter = Parameters("FILTER") ->asInt(); m_dArc = Parameters("DCIRCLE") ->asDouble() * M_DEG_TO_RAD; //----------------------------------------------------- if( SG_File_Exists(fName) ) { m_pLayers = SG_Create_Table(); m_pLayers ->Set_Name(CSG_String::Format(SG_T("%s [%s]"), SG_File_Get_Name(fName, false).c_str(), _TL("Layers"))); m_pLayers ->Add_Field("LAYER" , SG_DATATYPE_String); m_pLayers ->Add_Field("FLAGS" , SG_DATATYPE_Int); m_pBlocks = SG_Create_Table(); m_pBlocks ->Set_Name(CSG_String::Format(SG_T("%s [%s]"), SG_File_Get_Name(fName, false).c_str(), _TL("Blocks"))); m_pBlocks ->Add_Field("BLOCK" , SG_DATATYPE_String); m_pBlocks ->Add_Field("FLAGS" , SG_DATATYPE_Int); m_pBlocks ->Add_Field("X" , SG_DATATYPE_Double); m_pBlocks ->Add_Field("Y" , SG_DATATYPE_Double); m_pBlocks ->Add_Field("Z" , SG_DATATYPE_Double); m_pPoints = SG_Create_Shapes(SHAPE_TYPE_Point , CSG_String::Format(SG_T("%s [%s]"), SG_File_Get_Name(fName, false).c_str(), _TL("Points"))); m_pPoints ->Add_Field("LAYER" , SG_DATATYPE_String); m_pPoints ->Add_Field("Z" , SG_DATATYPE_Double); m_pLines = SG_Create_Shapes(SHAPE_TYPE_Line , CSG_String::Format(SG_T("%s [%s]"), SG_File_Get_Name(fName, false).c_str(), _TL("Lines"))); m_pLines ->Add_Field("LAYER" , SG_DATATYPE_String); m_pLines ->Add_Field("Z1" , SG_DATATYPE_Double); m_pLines ->Add_Field("Z2" , SG_DATATYPE_Double); m_pPolyLines = SG_Create_Shapes(SHAPE_TYPE_Line , CSG_String::Format(SG_T("%s [%s]"), SG_File_Get_Name(fName, false).c_str(), _TL("Polylines"))); m_pPolyLines ->Add_Field("LAYER" , SG_DATATYPE_String); m_pPolyLines ->Add_Field("FLAGS" , SG_DATATYPE_Int); m_pPolygons = SG_Create_Shapes(SHAPE_TYPE_Polygon , CSG_String::Format(SG_T("%s [%s]"), SG_File_Get_Name(fName, false).c_str(), _TL("Polygons"))); m_pPolygons ->Add_Field("LAYER" , SG_DATATYPE_String); m_pPolygons ->Add_Field("FLAGS" , SG_DATATYPE_Int); m_pCircles = SG_Create_Shapes(SHAPE_TYPE_Line , CSG_String::Format(SG_T("%s [%s]"), SG_File_Get_Name(fName, false).c_str(), _TL("Circles"))); m_pCircles ->Add_Field("LAYER" , SG_DATATYPE_String); m_pCircles ->Add_Field("FLAGS" , SG_DATATYPE_Int); m_pTriangles = SG_Create_Shapes(SHAPE_TYPE_Polygon , CSG_String::Format(SG_T("%s [%s]"), SG_File_Get_Name(fName, false).c_str(), _TL("Triangles"))); m_pTriangles ->Add_Field("LAYER" , SG_DATATYPE_String); m_pTriangles ->Add_Field("THICK" , SG_DATATYPE_Int); m_pTriangles ->Add_Field("Z1" , SG_DATATYPE_Double); m_pTriangles ->Add_Field("Z2" , SG_DATATYPE_Double); m_pTriangles ->Add_Field("Z3" , SG_DATATYPE_Double); m_pText = SG_Create_Shapes(SHAPE_TYPE_Point , CSG_String::Format(SG_T("%s [%s]"), SG_File_Get_Name(fName, false).c_str(), _TL("Text"))); m_pText ->Add_Field("LAYER" , SG_DATATYPE_String); m_pText ->Add_Field("Z" , SG_DATATYPE_Double); m_pText ->Add_Field("TEXT" , SG_DATATYPE_String); m_pText ->Add_Field("HEIGHT", SG_DATATYPE_Int); m_pText ->Add_Field("ANGLE" , SG_DATATYPE_Double); m_pText ->Add_Field("APX" , SG_DATATYPE_Double); m_pText ->Add_Field("APY" , SG_DATATYPE_Double); m_pText ->Add_Field("APZ" , SG_DATATYPE_Double); m_pText ->Add_Field("SCALE" , SG_DATATYPE_Double); m_pText ->Add_Field("HJUST" , SG_DATATYPE_Int); m_pText ->Add_Field("VJUST" , SG_DATATYPE_Int); m_pText ->Add_Field("STYLE" , SG_DATATYPE_String); m_pText ->Add_Field("FLAGS" , SG_DATATYPE_Int); //------------------------------------------------- m_Offset.x = 0.0; m_Offset.y = 0.0; m_Offset.z = 0.0; m_pPolyLine = NULL; DL_Dxf *pDXF = new DL_Dxf(); pDXF->in(fName.b_str(), this); delete(pDXF); //------------------------------------------------- ADD_RESULT("TABLES", m_pLayers); ADD_RESULT("TABLES", m_pBlocks); ADD_RESULT("SHAPES", m_pPoints); ADD_RESULT("SHAPES", m_pLines); ADD_RESULT("SHAPES", m_pPolyLines); ADD_RESULT("SHAPES", m_pPolygons); ADD_RESULT("SHAPES", m_pCircles); ADD_RESULT("SHAPES", m_pTriangles); ADD_RESULT("SHAPES", m_pText); } //----------------------------------------------------- return( Parameters("SHAPES")->asShapesList()->Get_Count() > 0 ); }