diff --git a/src/Mod/TechDraw/Gui/Command.cpp b/src/Mod/TechDraw/Gui/Command.cpp index fd2e2a9617..208921e6f9 100644 --- a/src/Mod/TechDraw/Gui/Command.cpp +++ b/src/Mod/TechDraw/Gui/Command.cpp @@ -1033,7 +1033,7 @@ bool CmdTechDrawSpreadsheet::isActive(void) //=========================================================================== -// TechDraw_ExportPage +// TechDraw_ExportPage (Svg) //=========================================================================== DEF_STD_CMD_A(CmdTechDrawExportPage); @@ -1076,6 +1076,57 @@ bool CmdTechDrawExportPage::isActive(void) return DrawGuiUtil::needPage(this); } +//=========================================================================== +// TechDraw_ExportPage (Dxf) +//=========================================================================== + +DEF_STD_CMD_A(CmdTechDrawExportPageDxf); + +CmdTechDrawExportPageDxf::CmdTechDrawExportPageDxf() + : Command("TechDraw_ExportPageDxf") +{ + sGroup = QT_TR_NOOP("File"); + sMenuText = QT_TR_NOOP("Export page as DXF"); + sToolTipText = QT_TR_NOOP("Export a page to a DXF file"); + sWhatsThis = "TechDraw_SaveDXF"; + sStatusTip = sToolTipText; + sPixmap = "actions/techdraw-saveDXF"; +} + +void CmdTechDrawExportPageDxf::activated(int iMsg) +{ + Q_UNUSED(iMsg); + TechDraw::DrawPage* page = DrawGuiUtil::findPage(this); + if (!page) { + return; + } + +//WF? allow more than one TD Page per Dxf file?? 1 TD page = 1 DXF file = 1 drawing? + QString defaultDir; + QString fileName = Gui::FileDialog::getSaveFileName(Gui::getMainWindow(), + QString::fromUtf8(QT_TR_NOOP("Save Dxf File ")), + defaultDir, + QString::fromUtf8(QT_TR_NOOP("Dxf (*.dxf)"))); + + if (fileName.isEmpty()) { + return; + } + + std::string PageName = page->getNameInDocument(); + openCommand("Save page to dxf"); + doCommand(Doc,"import TechDraw"); + doCommand(Doc,"TechDraw.writeDXFPage(App.activeDocument().%s,u\"%s\")",PageName.c_str(),(const char*)fileName.toUtf8()); + updateActive(); + commitCommand(); +} + + +bool CmdTechDrawExportPageDxf::isActive(void) +{ + return DrawGuiUtil::needPage(this); +} + + void CreateTechDrawCommands(void) { @@ -1094,6 +1145,7 @@ void CreateTechDrawCommands(void) rcCmdMgr.addCommand(new CmdTechDrawClipMinus()); rcCmdMgr.addCommand(new CmdTechDrawSymbol()); rcCmdMgr.addCommand(new CmdTechDrawExportPage()); + rcCmdMgr.addCommand(new CmdTechDrawExportPageDxf()); rcCmdMgr.addCommand(new CmdTechDrawDraftView()); rcCmdMgr.addCommand(new CmdTechDrawArchView()); rcCmdMgr.addCommand(new CmdTechDrawSpreadsheet()); diff --git a/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc b/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc index b958de0a72..5cf68d2370 100644 --- a/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc +++ b/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc @@ -49,6 +49,7 @@ icons/actions/techdraw-draft-view.svg icons/actions/techdraw-arch-view.svg icons/actions/techdraw-saveSVG.svg + icons/actions/techdraw-saveDXF.svg icons/actions/techdraw-viewsection.svg icons/actions/techdraw-hatch.svg icons/actions/techdraw-geomhatch.svg diff --git a/src/Mod/TechDraw/Gui/Resources/icons/actions/techdraw-saveDXF.svg b/src/Mod/TechDraw/Gui/Resources/icons/actions/techdraw-saveDXF.svg new file mode 100644 index 0000000000..f187bfc7ec --- /dev/null +++ b/src/Mod/TechDraw/Gui/Resources/icons/actions/techdraw-saveDXF.svg @@ -0,0 +1,349 @@ + + + + + + image/svg+xml + + + + + [WandererFan] + + + techdraw-symbol + 2016-01-14 + http://www.freecadweb.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/TechDraw/Gui/Resources/icons/actions/techdraw-symbol.svg + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DXF + diff --git a/src/Mod/TechDraw/Gui/Workbench.cpp b/src/Mod/TechDraw/Gui/Workbench.cpp index 695cd05553..1e2ec261be 100644 --- a/src/Mod/TechDraw/Gui/Workbench.cpp +++ b/src/Mod/TechDraw/Gui/Workbench.cpp @@ -79,6 +79,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const *draw << "TechDraw_LinkDimension"; *draw << "Separator"; *draw << "TechDraw_ExportPage"; + *draw << "TechDraw_ExportPageDxf"; *draw << "Separator"; *draw << "TechDraw_NewHatch"; *draw << "TechDraw_NewGeomHatch"; @@ -130,6 +131,7 @@ Gui::ToolBarItem* Workbench::setupToolBars() const Gui::ToolBarItem *file = new Gui::ToolBarItem(root); file->setCommand("TechDraw File Access"); *file << "TechDraw_ExportPage"; + *file << "TechDraw_ExportPageDxf"; Gui::ToolBarItem *decor = new Gui::ToolBarItem(root); decor->setCommand("TechDraw Decoration"); @@ -138,7 +140,7 @@ Gui::ToolBarItem* Workbench::setupToolBars() const *decor << "TechDraw_Symbol"; *decor << "TechDraw_Image"; *decor << "TechDraw_ToggleFrame"; - *decor << "TechDraw_RedrawPage"; +// *decor << "TechDraw_RedrawPage"; return root; } @@ -181,6 +183,7 @@ Gui::ToolBarItem* Workbench::setupCommandBars() const Gui::ToolBarItem *file = new Gui::ToolBarItem(root); file->setCommand("TechDraw File Access"); *file << "TechDraw_ExportPage"; + *file << "TechDraw_ExportPageDxf"; Gui::ToolBarItem *decor = new Gui::ToolBarItem(root); decor->setCommand("TechDraw Decoration"); @@ -189,7 +192,7 @@ Gui::ToolBarItem* Workbench::setupCommandBars() const *decor << "TechDraw_Symbol"; *decor << "TechDraw_Image"; *decor << "TechDraw_ToggleFrame"; - *decor << "TechDraw_RedrawPage"; +// *decor << "TechDraw_RedrawPage"; return root; }