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 @@
+
+
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;
}