- 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:
parent
fee24505ae
commit
4c00f567a4
@ -1320,7 +1320,9 @@ class App(QtCore.QObject):
|
|||||||
self.ui.menueditdelete.triggered.connect(self.on_delete)
|
self.ui.menueditdelete.triggered.connect(self.on_delete)
|
||||||
|
|
||||||
self.ui.menueditcopyobject.triggered.connect(self.on_copy_object)
|
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.menueditorigin.triggered.connect(self.on_set_origin)
|
||||||
self.ui.menueditjump.triggered.connect(self.on_jump_to)
|
self.ui.menueditjump.triggered.connect(self.on_jump_to)
|
||||||
|
|
||||||
@ -4719,8 +4721,8 @@ class App(QtCore.QObject):
|
|||||||
except:
|
except:
|
||||||
log.warning("Could not rename the object in the list")
|
log.warning("Could not rename the object in the list")
|
||||||
|
|
||||||
def on_copy_object_as_geometry(self):
|
def convert_any2geo(self):
|
||||||
self.report_usage("on_copy_object_as_geometry()")
|
self.report_usage("convert_any2geo()")
|
||||||
|
|
||||||
def initialize(obj_init, app):
|
def initialize(obj_init, app):
|
||||||
obj_init.solid_geometry = obj.solid_geometry
|
obj_init.solid_geometry = obj.solid_geometry
|
||||||
@ -4733,8 +4735,11 @@ class App(QtCore.QObject):
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if obj.tools:
|
try:
|
||||||
obj_init.tools = obj.tools
|
if obj.tools:
|
||||||
|
obj_init.tools = obj.tools
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
|
||||||
def initialize_excellon(obj_init, app):
|
def initialize_excellon(obj_init, app):
|
||||||
# objs = self.collection.get_selected()
|
# objs = self.collection.get_selected()
|
||||||
@ -4745,15 +4750,82 @@ class App(QtCore.QObject):
|
|||||||
solid_geo.append(geo)
|
solid_geo.append(geo)
|
||||||
obj_init.solid_geometry = deepcopy(solid_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():
|
for obj in self.collection.get_selected():
|
||||||
|
|
||||||
obj_name = obj.options["name"]
|
obj_name = obj.options["name"]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if isinstance(obj, FlatCAMExcellon):
|
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:
|
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:
|
except Exception as e:
|
||||||
return "Operation failed: %s" % str(e)
|
return "Operation failed: %s" % str(e)
|
||||||
|
@ -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 camlib.parse_lines() in the clear_geometry processing section for self.apertures
|
||||||
- fixed bug in parsing Gerber regions (a point was added unnecessary)
|
- 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
|
01.05.2019
|
||||||
|
|
||||||
|
@ -265,13 +265,18 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
|
|||||||
_( "Will convert a Geometry object from multi_geometry type\n"
|
_( "Will convert a Geometry object from multi_geometry type\n"
|
||||||
"to a single_geometry type.")
|
"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)
|
self.menuedit_convert.setToolTipsVisible(True)
|
||||||
|
|
||||||
# Separator
|
# Separator
|
||||||
self.menuedit.addSeparator()
|
self.menuedit.addSeparator()
|
||||||
self.menueditcopyobject = self.menuedit.addAction(QtGui.QIcon('share/copy.png'), _('&Copy Object\tCTRL+C'))
|
self.menueditcopyobject = self.menuedit.addAction(QtGui.QIcon('share/copy.png'), _('&Copy\tCTRL+C'))
|
||||||
self.menueditcopyobjectasgeom = self.menuedit.addAction(QtGui.QIcon('share/copy_geo.png'),
|
|
||||||
_('Copy as &Geom'))
|
|
||||||
# Separator
|
# Separator
|
||||||
self.menuedit.addSeparator()
|
self.menuedit.addSeparator()
|
||||||
self.menueditdelete = self.menuedit.addAction(QtGui.QIcon('share/trash16.png'), _('&Delete\tDEL'))
|
self.menueditdelete = self.menuedit.addAction(QtGui.QIcon('share/trash16.png'), _('&Delete\tDEL'))
|
||||||
|
Loading…
Reference in New Issue
Block a user