- renamed the menu entry Edit -> Copy as Geo to Convert Any to Geo and moved it in the Edit -> Conversion

- created a new function named Convert Any to Gerber and installed it in Edit -> Conversion. It's doing what the name say: it will convert an Geometry or Excellon FlatCAM object to a Gerber object.
This commit is contained in:
Marius Stanciu 2019-05-05 00:56:04 +03:00
parent fee24505ae
commit 4c00f567a4
3 changed files with 89 additions and 10 deletions

View File

@ -1320,7 +1320,9 @@ class App(QtCore.QObject):
self.ui.menueditdelete.triggered.connect(self.on_delete)
self.ui.menueditcopyobject.triggered.connect(self.on_copy_object)
self.ui.menueditcopyobjectasgeom.triggered.connect(self.on_copy_object_as_geometry)
self.ui.menueditconvert_any2geo.triggered.connect(self.convert_any2geo)
self.ui.menueditconvert_any2gerber.triggered.connect(self.convert_any2gerber)
self.ui.menueditorigin.triggered.connect(self.on_set_origin)
self.ui.menueditjump.triggered.connect(self.on_jump_to)
@ -4719,8 +4721,8 @@ class App(QtCore.QObject):
except:
log.warning("Could not rename the object in the list")
def on_copy_object_as_geometry(self):
self.report_usage("on_copy_object_as_geometry()")
def convert_any2geo(self):
self.report_usage("convert_any2geo()")
def initialize(obj_init, app):
obj_init.solid_geometry = obj.solid_geometry
@ -4733,8 +4735,11 @@ class App(QtCore.QObject):
except:
pass
if obj.tools:
obj_init.tools = obj.tools
try:
if obj.tools:
obj_init.tools = obj.tools
except AttributeError:
pass
def initialize_excellon(obj_init, app):
# objs = self.collection.get_selected()
@ -4745,15 +4750,82 @@ class App(QtCore.QObject):
solid_geo.append(geo)
obj_init.solid_geometry = deepcopy(solid_geo)
if not self.collection.get_selected():
log.warning("App.convert_any2geo --> No object selected")
self.inform.emit(_("[WARNING_NOTCL] No object is selected. Select an object and try again."))
return
for obj in self.collection.get_selected():
obj_name = obj.options["name"]
try:
if isinstance(obj, FlatCAMExcellon):
self.new_object("geometry", str(obj_name) + "_gcopy", initialize_excellon)
self.new_object("geometry", str(obj_name) + "_conv", initialize_excellon)
else:
self.new_object("geometry", str(obj_name) + "_gcopy", initialize)
self.new_object("geometry", str(obj_name) + "_conv", initialize)
except Exception as e:
return "Operation failed: %s" % str(e)
def convert_any2gerber(self):
self.report_usage("convert_any2gerber()")
def initialize(obj_init, app):
apertures = {}
apid = 0
apertures[str(apid)] = {}
apertures[str(apid)]['solid_geometry'] = []
apertures[str(apid)]['solid_geometry'] = deepcopy(obj.solid_geometry)
apertures[str(apid)]['size'] = 0.0
apertures[str(apid)]['type'] = 'C'
obj_init.solid_geometry = deepcopy(obj.solid_geometry)
obj_init.apertures = deepcopy(apertures)
def initialize_excellon(obj_init, app):
apertures = {}
apid = 10
for tool in obj.tools:
apertures[str(apid)] = {}
apertures[str(apid)]['solid_geometry'] = []
for geo in obj.tools[tool]['solid_geometry']:
apertures[str(apid)]['solid_geometry'].append(geo)
apertures[str(apid)]['size'] = float(obj.tools[tool]['C'])
apertures[str(apid)]['type'] = 'C'
apid += 1
# create solid_geometry
solid_geometry = []
for apid in apertures:
for geo in apertures[apid]['solid_geometry']:
solid_geometry.append(geo)
solid_geometry = MultiPolygon(solid_geometry)
solid_geometry = solid_geometry.buffer(0.0000001)
obj_init.solid_geometry = deepcopy(solid_geometry)
obj_init.apertures = deepcopy(apertures)
# clear the working objects (perhaps not necessary due of Python GC)
apertures.clear()
if not self.collection.get_selected():
log.warning("App.convert_any2gerber --> No object selected")
self.inform.emit(_("[WARNING_NOTCL] No object is selected. Select an object and try again."))
return
for obj in self.collection.get_selected():
obj_name = obj.options["name"]
try:
if isinstance(obj, FlatCAMExcellon):
self.new_object("gerber", str(obj_name) + "_conv", initialize_excellon)
else:
self.new_object("gerber", str(obj_name) + "_conv", initialize)
except Exception as e:
return "Operation failed: %s" % str(e)

View File

@ -13,6 +13,8 @@ CAD program, and create G-Code for Isolation routing.
- fixed bug in camlib.parse_lines() in the clear_geometry processing section for self.apertures
- fixed bug in parsing Gerber regions (a point was added unnecessary)
- renamed the menu entry Edit -> Copy as Geo to Convert Any to Geo and moved it in the Edit -> Conversion
- created a new function named Convert Any to Gerber and installed it in Edit -> Conversion. It's doing what the name say: it will convert an Geometry or Excellon FlatCAM object to a Gerber object.
01.05.2019

View File

@ -265,13 +265,18 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
_( "Will convert a Geometry object from multi_geometry type\n"
"to a single_geometry type.")
)
# Separator
self.menuedit_convert.addSeparator()
self.menueditconvert_any2geo = self.menuedit_convert.addAction(QtGui.QIcon('share/copy_geo.png'),
_('Convert Any to Geo'))
self.menueditconvert_any2gerber = self.menuedit_convert.addAction(QtGui.QIcon('share/copy_geo.png'),
_('Convert Any to Gerber'))
self.menuedit_convert.setToolTipsVisible(True)
# Separator
self.menuedit.addSeparator()
self.menueditcopyobject = self.menuedit.addAction(QtGui.QIcon('share/copy.png'), _('&Copy Object\tCTRL+C'))
self.menueditcopyobjectasgeom = self.menuedit.addAction(QtGui.QIcon('share/copy_geo.png'),
_('Copy as &Geom'))
self.menueditcopyobject = self.menuedit.addAction(QtGui.QIcon('share/copy.png'), _('&Copy\tCTRL+C'))
# Separator
self.menuedit.addSeparator()
self.menueditdelete = self.menuedit.addAction(QtGui.QIcon('share/trash16.png'), _('&Delete\tDEL'))