- added ability to save the Gerber file content that is stored in FlatCAM on Gerber file loading. It's useful to recover from saved FlatCAM projects when the source files are no longer available.

This commit is contained in:
Marius Stanciu 2019-02-17 16:05:06 +02:00 committed by Marius S
parent 0f66e63526
commit 032f68a848
3 changed files with 72 additions and 4 deletions

View File

@ -4741,7 +4741,8 @@ class App(QtCore.QObject):
self.on_file_exportexcellon()
elif type(obj) == FlatCAMCNCjob:
obj.on_exportgcode_button_click()
elif type(obj) == FlatCAMGerber:
self.on_file_exportgerber()
def on_view_source(self):
try:
@ -5023,6 +5024,45 @@ class App(QtCore.QObject):
write_png(filename, data)
self.file_saved.emit("png", filename)
def on_file_exportgerber(self):
"""
Callback for menu item File->Export SVG.
:return: None
"""
self.report_usage("on_file_exportgerber")
App.log.debug("on_file_exportgerber()")
obj = self.collection.get_active()
if obj is None:
self.inform.emit("[WARNING_NOTCL] No object selected. Please Select an Gerber object to export.")
return
# Check for more compatible types and add as required
if not isinstance(obj, FlatCAMGerber):
self.inform.emit("[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files...")
return
name = self.collection.get_active().options["name"]
filter = "Gerber File (*.GBR);;Gerber File (*.GRB);;All Files (*.*)"
try:
filename, _ = QtWidgets.QFileDialog.getSaveFileName(
caption="Export Gerber",
directory=self.get_last_save_folder() + '/' + name,
filter=filter)
except TypeError:
filename, _ = QtWidgets.QFileDialog.getSaveFileName(caption="Export Gerber", filter=filter)
filename = str(filename)
if filename == "":
self.inform.emit("[WARNING_NOTCL]Export Gerber cancelled.")
return
else:
self.export_gerber(name, filename)
self.file_saved.emit("Gerber", filename)
def on_file_exportexcellon(self):
"""
Callback for menu item File->Export SVG.
@ -5575,9 +5615,38 @@ class App(QtCore.QObject):
else:
make_black_film()
def export_gerber(self, obj_name, filename, use_thread=True):
"""
Exports a Gerber Object to an Gerber file.
:param filename: Path to the Gerber file to save to.
:return:
"""
self.report_usage("export_gerber()")
if filename is None:
filename = self.defaults["global_last_save_folder"]
self.log.debug("export_gerber()")
obj = self.collection.get_by_name(obj_name)
file_string = StringIO(obj.source_file)
time_string = "{:%A, %d %B %Y at %H:%M}".format(datetime.now())
with open(filename, 'w') as file:
file.writelines('G04*\n')
file.writelines('G04 GERBER (RE)GENERATED BY FLATCAM v%s - www.flatcam.org - Version Date: %s*\n' %
(str(self.version), str(self.version_date)))
file.writelines('G04 Filename: %s*\n' % str(obj_name))
file.writelines('G04 Created on : %s*\n' % time_string)
for line in file_string:
file.writelines(line)
def export_excellon(self, obj_name, filename, use_thread=True):
"""
Exports a Geometry Object to an Excellon file.
Exports a Excellon Object to an Excellon file.
:param filename: Path to the Excellon file to save to.
:return:

View File

@ -523,8 +523,6 @@ class ObjectCollection(QtCore.QAbstractItemModel):
self.app.ui.menuprojectgeneratecnc.setVisible(False)
if type(obj) != FlatCAMGeometry and type(obj) != FlatCAMExcellon:
self.app.ui.menuprojectedit.setVisible(False)
if type(obj) != FlatCAMGeometry and type(obj) != FlatCAMExcellon and type(obj) != FlatCAMCNCjob:
self.app.ui.menuprojectsave.setVisible(False)
if type(obj) != FlatCAMGerber and type(obj) != FlatCAMExcellon:
self.app.ui.menuprojectviewsource.setVisible(False)
else:

View File

@ -20,6 +20,7 @@ CAD program, and create G-Code for Isolation routing.
- in Geometry Editor, on entry the notebook is automatically hidden and restored on Geometry Editor exit.
- when pressing Escape in Geometry Editor it will automatically deselect any shape not only the currently selected tool.
- when deselecting an object in Project menu the status bar selection message is deleted
- added ability to save the Gerber file content that is stored in FlatCAM on Gerber file loading. It's useful to recover from saved FlatCAM projects when the source files are no longer available.
16.02.2019