Cleanup. And fixes #148.
This commit is contained in:
@@ -1,7 +1,8 @@
|
|||||||
from PyQt4 import QtGui
|
from PyQt4 import QtGui
|
||||||
from GUIElements import RadioSet, EvalEntry, LengthEntry
|
from GUIElements import RadioSet, EvalEntry, LengthEntry
|
||||||
from FlatCAMTool import FlatCAMTool
|
from FlatCAMTool import FlatCAMTool
|
||||||
from FlatCAMObj import FlatCAMGerber, FlatCAMExcellon
|
#from FlatCAMObj import FlatCAMGerber, FlatCAMExcellon
|
||||||
|
from FlatCAMObj import *
|
||||||
from shapely.geometry import Point
|
from shapely.geometry import Point
|
||||||
from shapely import affinity
|
from shapely import affinity
|
||||||
|
|
||||||
|
|||||||
@@ -1814,6 +1814,13 @@ class App(QtCore.QObject):
|
|||||||
App.log.debug("Project loaded")
|
App.log.debug("Project loaded")
|
||||||
|
|
||||||
def propagate_defaults(self):
|
def propagate_defaults(self):
|
||||||
|
"""
|
||||||
|
This method is used to set default values in classes. It's
|
||||||
|
an alternative to project options but allows the use
|
||||||
|
of values invisible to the user.
|
||||||
|
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
|
||||||
self.log.debug("propagate_defaults()")
|
self.log.debug("propagate_defaults()")
|
||||||
|
|
||||||
@@ -1822,17 +1829,17 @@ class App(QtCore.QObject):
|
|||||||
"zdownrate": CNCjob,
|
"zdownrate": CNCjob,
|
||||||
"excellon_zeros": Excellon,
|
"excellon_zeros": Excellon,
|
||||||
"gerber_use_buffer_for_union": Gerber,
|
"gerber_use_buffer_for_union": Gerber,
|
||||||
"cncjob_coordinate_format": CNCjob,
|
"cncjob_coordinate_format": CNCjob
|
||||||
"spindlespeed": CNCjob
|
# "spindlespeed": CNCjob
|
||||||
}
|
}
|
||||||
|
|
||||||
for param in routes:
|
for param in routes:
|
||||||
if param in routes[param].defaults:
|
if param in routes[param].defaults:
|
||||||
try:
|
try:
|
||||||
routes[param].defaults[param] = self.defaults[param]
|
routes[param].defaults[param] = self.defaults[param]
|
||||||
self.log.debug(" " + param + " OK")
|
self.log.debug(" " + param + " OK")
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
self.log.debug(" ERROR: " + param + " not in defaults.")
|
||||||
else:
|
else:
|
||||||
# Try extracting the name:
|
# Try extracting the name:
|
||||||
# classname_param here is param in the object
|
# classname_param here is param in the object
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
from PyQt4 import QtCore
|
from PyQt4 import QtCore
|
||||||
import FlatCAMApp
|
#import FlatCAMApp
|
||||||
|
|
||||||
|
|
||||||
class Worker(QtCore.QObject):
|
class Worker(QtCore.QObject):
|
||||||
@@ -14,13 +14,15 @@ class Worker(QtCore.QObject):
|
|||||||
self.name = name
|
self.name = name
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
FlatCAMApp.App.log.debug("Worker Started!")
|
# FlatCAMApp.App.log.debug("Worker Started!")
|
||||||
|
self.app.log.debug("Worker Started!")
|
||||||
|
|
||||||
# Tasks are queued in the event listener.
|
# Tasks are queued in the event listener.
|
||||||
self.app.worker_task.connect(self.do_worker_task)
|
self.app.worker_task.connect(self.do_worker_task)
|
||||||
|
|
||||||
def do_worker_task(self, task):
|
def do_worker_task(self, task):
|
||||||
FlatCAMApp.App.log.debug("Running task: %s" % str(task))
|
# FlatCAMApp.App.log.debug("Running task: %s" % str(task))
|
||||||
|
self.app.log.debug("Running task: %s" % str(task))
|
||||||
|
|
||||||
# 'worker_name' property of task allows to target
|
# 'worker_name' property of task allows to target
|
||||||
# specific worker.
|
# specific worker.
|
||||||
@@ -32,4 +34,5 @@ class Worker(QtCore.QObject):
|
|||||||
task['fcn'](*task['params'])
|
task['fcn'](*task['params'])
|
||||||
return
|
return
|
||||||
|
|
||||||
FlatCAMApp.App.log.debug("Task ignored.")
|
# FlatCAMApp.App.log.debug("Task ignored.")
|
||||||
|
self.app.log.debug("Task ignored.")
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
from PyQt4 import QtGui, QtCore
|
from PyQt4 import QtGui, QtCore
|
||||||
from copy import copy
|
from copy import copy
|
||||||
import FlatCAMApp
|
#import FlatCAMApp
|
||||||
import re
|
import re
|
||||||
|
import logging
|
||||||
|
|
||||||
|
log = logging.getLogger('base')
|
||||||
|
|
||||||
|
|
||||||
class RadioSet(QtGui.QWidget):
|
class RadioSet(QtGui.QWidget):
|
||||||
@@ -37,7 +40,7 @@ class RadioSet(QtGui.QWidget):
|
|||||||
self.group_toggle_fn = lambda: None
|
self.group_toggle_fn = lambda: None
|
||||||
|
|
||||||
def on_toggle(self):
|
def on_toggle(self):
|
||||||
FlatCAMApp.App.log.debug("Radio toggled")
|
log.debug("Radio toggled")
|
||||||
radio = self.sender()
|
radio = self.sender()
|
||||||
if radio.isChecked():
|
if radio.isChecked():
|
||||||
self.group_toggle_fn()
|
self.group_toggle_fn()
|
||||||
@@ -47,7 +50,7 @@ class RadioSet(QtGui.QWidget):
|
|||||||
for choice in self.choices:
|
for choice in self.choices:
|
||||||
if choice['radio'].isChecked():
|
if choice['radio'].isChecked():
|
||||||
return choice['value']
|
return choice['value']
|
||||||
FlatCAMApp.App.log.error("No button was toggled in RadioSet.")
|
log.error("No button was toggled in RadioSet.")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def set_value(self, val):
|
def set_value(self, val):
|
||||||
@@ -55,7 +58,7 @@ class RadioSet(QtGui.QWidget):
|
|||||||
if choice['value'] == val:
|
if choice['value'] == val:
|
||||||
choice['radio'].setChecked(True)
|
choice['radio'].setChecked(True)
|
||||||
return
|
return
|
||||||
FlatCAMApp.App.log.error("Value given is not part of this RadioSet: %s" % str(val))
|
log.error("Value given is not part of this RadioSet: %s" % str(val))
|
||||||
|
|
||||||
|
|
||||||
class LengthEntry(QtGui.QLineEdit):
|
class LengthEntry(QtGui.QLineEdit):
|
||||||
@@ -78,7 +81,7 @@ class LengthEntry(QtGui.QLineEdit):
|
|||||||
if val is not None:
|
if val is not None:
|
||||||
self.set_text(QtCore.QString(str(val)))
|
self.set_text(QtCore.QString(str(val)))
|
||||||
else:
|
else:
|
||||||
FlatCAMApp.App.log.warning("Could not interpret entry: %s" % self.get_text())
|
log.warning("Could not interpret entry: %s" % self.get_text())
|
||||||
|
|
||||||
def get_value(self):
|
def get_value(self):
|
||||||
raw = str(self.text()).strip(' ')
|
raw = str(self.text()).strip(' ')
|
||||||
@@ -92,7 +95,7 @@ class LengthEntry(QtGui.QLineEdit):
|
|||||||
else:
|
else:
|
||||||
return float(eval(match.group(1)))
|
return float(eval(match.group(1)))
|
||||||
except:
|
except:
|
||||||
FlatCAMApp.App.log.warning("Could not parse value in entry: %s" % str(raw))
|
log.warning("Could not parse value in entry: %s" % str(raw))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def set_value(self, val):
|
def set_value(self, val):
|
||||||
@@ -108,14 +111,14 @@ class FloatEntry(QtGui.QLineEdit):
|
|||||||
if val is not None:
|
if val is not None:
|
||||||
self.set_text(QtCore.QString(str(val)))
|
self.set_text(QtCore.QString(str(val)))
|
||||||
else:
|
else:
|
||||||
FlatCAMApp.App.log.warning("Could not interpret entry: %s" % self.text())
|
log.warning("Could not interpret entry: %s" % self.text())
|
||||||
|
|
||||||
def get_value(self):
|
def get_value(self):
|
||||||
raw = str(self.text()).strip(' ')
|
raw = str(self.text()).strip(' ')
|
||||||
try:
|
try:
|
||||||
evaled = eval(raw)
|
evaled = eval(raw)
|
||||||
except:
|
except:
|
||||||
FlatCAMApp.App.log.error("Could not evaluate: %s" % str(raw))
|
log.error("Could not evaluate: %s" % str(raw))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return float(evaled)
|
return float(evaled)
|
||||||
@@ -168,14 +171,14 @@ class EvalEntry(QtGui.QLineEdit):
|
|||||||
if val is not None:
|
if val is not None:
|
||||||
self.setText(QtCore.QString(str(val)))
|
self.setText(QtCore.QString(str(val)))
|
||||||
else:
|
else:
|
||||||
FlatCAMApp.App.log.warning("Could not interpret entry: %s" % self.get_text())
|
log.warning("Could not interpret entry: %s" % self.get_text())
|
||||||
|
|
||||||
def get_value(self):
|
def get_value(self):
|
||||||
raw = str(self.text()).strip(' ')
|
raw = str(self.text()).strip(' ')
|
||||||
try:
|
try:
|
||||||
return eval(raw)
|
return eval(raw)
|
||||||
except:
|
except:
|
||||||
FlatCAMApp.App.log.error("Could not evaluate: %s" % str(raw))
|
log.error("Could not evaluate: %s" % str(raw))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def set_value(self, val):
|
def set_value(self, val):
|
||||||
@@ -226,19 +229,19 @@ class VerticalScrollArea(QtGui.QScrollArea):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if event.type() == QtCore.QEvent.Resize and source == self.widget():
|
if event.type() == QtCore.QEvent.Resize and source == self.widget():
|
||||||
# FlatCAMApp.App.log.debug("VerticalScrollArea: Widget resized:")
|
# log.debug("VerticalScrollArea: Widget resized:")
|
||||||
# FlatCAMApp.App.log.debug(" minimumSizeHint().width() = %d" % self.widget().minimumSizeHint().width())
|
# log.debug(" minimumSizeHint().width() = %d" % self.widget().minimumSizeHint().width())
|
||||||
# FlatCAMApp.App.log.debug(" verticalScrollBar().width() = %d" % self.verticalScrollBar().width())
|
# log.debug(" verticalScrollBar().width() = %d" % self.verticalScrollBar().width())
|
||||||
|
|
||||||
self.setMinimumWidth(self.widget().sizeHint().width() +
|
self.setMinimumWidth(self.widget().sizeHint().width() +
|
||||||
self.verticalScrollBar().sizeHint().width())
|
self.verticalScrollBar().sizeHint().width())
|
||||||
|
|
||||||
# if self.verticalScrollBar().isVisible():
|
# if self.verticalScrollBar().isVisible():
|
||||||
# FlatCAMApp.App.log.debug(" Scroll bar visible")
|
# log.debug(" Scroll bar visible")
|
||||||
# self.setMinimumWidth(self.widget().minimumSizeHint().width() +
|
# self.setMinimumWidth(self.widget().minimumSizeHint().width() +
|
||||||
# self.verticalScrollBar().width())
|
# self.verticalScrollBar().width())
|
||||||
# else:
|
# else:
|
||||||
# FlatCAMApp.App.log.debug(" Scroll bar hidden")
|
# log.debug(" Scroll bar hidden")
|
||||||
# self.setMinimumWidth(self.widget().minimumSizeHint().width())
|
# self.setMinimumWidth(self.widget().minimumSizeHint().width())
|
||||||
return QtGui.QWidget.eventFilter(self, source, event)
|
return QtGui.QWidget.eventFilter(self, source, event)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import sys
|
import sys
|
||||||
from PyQt4 import QtGui, QtCore
|
from PyQt4 import QtGui, QtCore
|
||||||
from GUIElements import *
|
#from GUIElements import *
|
||||||
|
from GUIElements import FCEntry, FloatEntry, EvalEntry, FCCheckBox, \
|
||||||
|
LengthEntry, FCTextArea, IntEntry, RadioSet, OptionalInputSection
|
||||||
|
|
||||||
|
|
||||||
class ObjectUI(QtGui.QWidget):
|
class ObjectUI(QtGui.QWidget):
|
||||||
|
|||||||
11
camlib.py
11
camlib.py
@@ -2415,7 +2415,7 @@ class Excellon(Geometry):
|
|||||||
self.solid_geometry = []
|
self.solid_geometry = []
|
||||||
|
|
||||||
for drill in self.drills:
|
for drill in self.drills:
|
||||||
#poly = drill['point'].buffer(self.tools[drill['tool']]["C"]/2.0)
|
# poly = drill['point'].buffer(self.tools[drill['tool']]["C"]/2.0)
|
||||||
tooldia = self.tools[drill['tool']]['C']
|
tooldia = self.tools[drill['tool']]['C']
|
||||||
poly = drill['point'].buffer(tooldia / 2.0)
|
poly = drill['point'].buffer(tooldia / 2.0)
|
||||||
self.solid_geometry.append(poly)
|
self.solid_geometry.append(poly)
|
||||||
@@ -2506,8 +2506,7 @@ class CNCjob(Geometry):
|
|||||||
|
|
||||||
defaults = {
|
defaults = {
|
||||||
"zdownrate": None,
|
"zdownrate": None,
|
||||||
"coordinate_format": "X%.4fY%.4f",
|
"coordinate_format": "X%.4fY%.4f"
|
||||||
"spindlespeed": None
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
@@ -2535,6 +2534,7 @@ class CNCjob(Geometry):
|
|||||||
self.input_geometry_bounds = None
|
self.input_geometry_bounds = None
|
||||||
self.gcode_parsed = None
|
self.gcode_parsed = None
|
||||||
self.steps_per_circ = 20 # Used when parsing G-code arcs
|
self.steps_per_circ = 20 # Used when parsing G-code arcs
|
||||||
|
|
||||||
if zdownrate is not None:
|
if zdownrate is not None:
|
||||||
self.zdownrate = float(zdownrate)
|
self.zdownrate = float(zdownrate)
|
||||||
elif CNCjob.defaults["zdownrate"] is not None:
|
elif CNCjob.defaults["zdownrate"] is not None:
|
||||||
@@ -2544,7 +2544,6 @@ class CNCjob(Geometry):
|
|||||||
|
|
||||||
self.spindlespeed = spindlespeed
|
self.spindlespeed = spindlespeed
|
||||||
|
|
||||||
|
|
||||||
# Attributes to be included in serialization
|
# Attributes to be included in serialization
|
||||||
# Always append to it because it carries contents
|
# Always append to it because it carries contents
|
||||||
# from Geometry.
|
# from Geometry.
|
||||||
@@ -2610,10 +2609,12 @@ class CNCjob(Geometry):
|
|||||||
gcode += self.feedminutecode + "\n"
|
gcode += self.feedminutecode + "\n"
|
||||||
gcode += "F%.2f\n" % self.feedrate
|
gcode += "F%.2f\n" % self.feedrate
|
||||||
gcode += "G00 Z%.4f\n" % self.z_move # Move to travel height
|
gcode += "G00 Z%.4f\n" % self.z_move # Move to travel height
|
||||||
if(self.spindlespeed != None):
|
|
||||||
|
if self.spindlespeed is not None:
|
||||||
gcode += "M03 S%d\n" % int(self.spindlespeed) # Spindle start with configured speed
|
gcode += "M03 S%d\n" % int(self.spindlespeed) # Spindle start with configured speed
|
||||||
else:
|
else:
|
||||||
gcode += "M03\n" # Spindle start
|
gcode += "M03\n" # Spindle start
|
||||||
|
|
||||||
gcode += self.pausecode + "\n"
|
gcode += self.pausecode + "\n"
|
||||||
|
|
||||||
for tool in points:
|
for tool in points:
|
||||||
|
|||||||
Reference in New Issue
Block a user