diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 75e29ae5..57db2e5f 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -87,8 +87,8 @@ class App(QtCore.QObject): log.addHandler(handler) # Version - version = 'Beta1' - version_date = "2019/01/03" + version = '8.6 Beta1' + version_date = "2019/01/06" # URL for update checks and statistics version_url = "http://flatcam.org/version" @@ -1091,13 +1091,13 @@ class App(QtCore.QObject): self.myKeywords = self.tcl_commands_list + self.ordinary_keywords - self.shell = FCShell(self) + self.shell = FCShell(self, version=self.version) self.shell._edit.set_model_data(self.myKeywords) self.shell.setWindowIcon(self.ui.app_icon) self.shell.setWindowTitle("FlatCAM Shell") self.shell.resize(*self.defaults["global_shell_shape"]) - self.shell.append_output("FlatCAM %s\n(c) 2014-2019 Juan Pablo Caram\n\n" % self.version) - self.shell.append_output("Type help to get started.\n\n") + self.shell.append_output("FlatCAM %s (c)2014-2019 Juan Pablo Caram " % self.version) + self.shell.append_output("(Type help to get started)\n\n") self.init_tcl() diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 9783c523..30c8b985 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -3221,8 +3221,6 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): ppname_g = ppname_g if ppname_g else self.options["ppname_g"] - print(self.tools) - # Object initialization function for app.new_object() # RUNNING ON SEPARATE THREAD! def job_init(job_obj, app_obj): @@ -3232,15 +3230,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): job_obj.options["tooldia"] = tooldia app_obj.progress.emit(20) - job_obj.z_cut = z_cut - job_obj.z_move = z_move - job_obj.feedrate = feedrate - job_obj.feedrate_z = feedrate_z - job_obj.feedrate_rapid = feedrate_rapid - job_obj.pp_geometry_name = ppname_g - job_obj.spindlespeed = spindlespeed - job_obj.dwell = dwell - job_obj.dwelltime = dwelltime + job_obj.coords_decimals = self.app.defaults["cncjob_coords_decimals"] job_obj.fr_decimals = self.app.defaults["cncjob_fr_decimals"] app_obj.progress.emit(40) @@ -3248,16 +3238,16 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): job_obj.options['type'] = 'Geometry' job_obj.options['tool_dia'] = tooldia - job_obj.toolchange = self.options["toolchange"] - job_obj.toolchangez = self.options["toolchangez"] - job_obj.toolchangexy = self.options["toolchangexy"] - # TODO: The tolerance should not be hard coded. Just for testing. - job_obj.generate_from_geometry_2(self, tooldia=tooldia, offset=offset, + job_obj.generate_from_geometry_2(self, tooldia=tooldia, offset=offset, tolerance=0.0005, + z_cut=z_cut, z_move=z_move, + feedrate=feedrate, feedrate_z=feedrate_z, feedrate_rapid=feedrate_rapid, + spindlespeed=spindlespeed, dwell=dwell, dwelltime=dwelltime, multidepth=multidepth, depthpercut=depthperpass, - tolerance=0.0005, - extracut=extracut, endz=endz, startz=startz, - toolchange=toolchange, toolchangez=toolchangez, toolchangexy=toolchangexy) + toolchange=toolchange, toolchangez=toolchangez, toolchangexy=toolchangexy, + extracut=extracut, startz=startz, endz=endz, + pp_geometry_name=ppname_g + ) app_obj.progress.emit(50) # tell gcode_parse from which point to start drawing the lines depending on what kind of object is the diff --git a/README.md b/README.md index 9370e718..f93dabd2 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,12 @@ CAD program, and create G-Code for Isolation routing. ================================================= +5.01.2019 + +- fixed cncjob TclCommand - it used the default values for parameters +- fixed the layout in ToolTransform +- fixed the initial text in the ToolShell + 3.01.2019 - initial merge into FlatCAM regular diff --git a/camlib.py b/camlib.py index b60ec793..6b48e634 100644 --- a/camlib.py +++ b/camlib.py @@ -4754,16 +4754,14 @@ class CNCjob(Geometry): self.gcode = gcode def generate_from_multitool_geometry(self, geometry, append=True, - tooldia=None, offset=0.0, tolerance=0, - z_cut=1.0, z_move=2.0, - feedrate=2.0, feedrate_z=2.0, feedrate_rapid=30, - spindlespeed=None, dwell=False, dwelltime=1.0, - multidepth=False, depthpercut=None, - toolchange=False, toolchangez=1.0, toolchangexy="0.0, 0.0", - extracut=False, startz=None, endz=2.0, - pp_geometry_name=None, tool_no=1): + tooldia=None, offset=0.0, tolerance=0, z_cut=1.0, z_move=2.0, + feedrate=2.0, feedrate_z=2.0, feedrate_rapid=30, + spindlespeed=None, dwell=False, dwelltime=1.0, + multidepth=False, depthpercut=None, + toolchange=False, toolchangez=1.0, toolchangexy="0.0, 0.0", extracut=False, + startz=None, endz=2.0, pp_geometry_name=None, tool_no=1): """ - Second algorithm to generate from Geometry. + Algorithm to generate from multitool Geometry. Algorithm description: ---------------------- @@ -4781,7 +4779,7 @@ class CNCjob(Geometry): :return: None """ - log.debug("Generate_from_geometry_2()") + log.debug("Generate_from_multitool_geometry()") temp_solid_geometry = [] if offset != 0.0: @@ -4948,7 +4946,10 @@ class CNCjob(Geometry): overlapping the first point in path to ensure complete copper removal :return: None """ - assert isinstance(geometry, Geometry), "Expected a Geometry, got %s" % type(geometry) + + if not isinstance(geometry, Geometry): + self.app.inform.emit("[error]Expected a Geometry, got %s" % type(geometry)) + return 'fail' log.debug("Generate_from_geometry_2()") # if solid_geometry is empty raise an exception diff --git a/flatcamTools/ToolShell.py b/flatcamTools/ToolShell.py index c8640611..d24b56b8 100644 --- a/flatcamTools/ToolShell.py +++ b/flatcamTools/ToolShell.py @@ -14,9 +14,10 @@ from PyQt5.QtWidgets import QLineEdit, QSizePolicy, QTextEdit, QVBoxLayout, QWid class _BrowserTextEdit(QTextEdit): - def __init__(self): + def __init__(self, version): QTextEdit.__init__(self) self.menu = None + self.version = version def contextMenuEvent(self, event): self.menu = self.createStandardContextMenu(event.pos()) @@ -29,7 +30,7 @@ class _BrowserTextEdit(QTextEdit): def clear(self): QTextEdit.clear(self) - text = "FlatCAM 3000\n(c) 2014-2019 Juan Pablo Caram\n\nType help to get started.\n\n" + text = "FlatCAM %s (c)2014-2019 Juan Pablo Caram (Type help to get started)\n\n" % self.version text = html.escape(text) text = text.replace('\n', '
') self.moveCursor(QTextCursor.End) @@ -174,10 +175,10 @@ class TermWidget(QWidget): User pressed Enter. Client class should decide, if command must be executed or user may continue edit it """ - def __init__(self, *args): + def __init__(self, version, *args): QWidget.__init__(self, *args) - self._browser = _BrowserTextEdit() + self._browser = _BrowserTextEdit(version=version) self._browser.setStyleSheet("font: 9pt \"Courier\";") self._browser.setReadOnly(True) self._browser.document().setDefaultStyleSheet( @@ -338,8 +339,8 @@ class TermWidget(QWidget): self._edit.moveCursor(QTextCursor.End) class FCShell(TermWidget): - def __init__(self, sysShell, *args): - TermWidget.__init__(self, *args) + def __init__(self, sysShell, version, *args): + TermWidget.__init__(self, version, *args) self._sysShell = sysShell def is_command_complete(self, text): diff --git a/flatcamTools/ToolTransform.py b/flatcamTools/ToolTransform.py index 71545609..45b603bc 100644 --- a/flatcamTools/ToolTransform.py +++ b/flatcamTools/ToolTransform.py @@ -43,7 +43,7 @@ class ToolTransform(FlatCAMTool): ## Layout form_layout = QtWidgets.QFormLayout() self.transform_lay.addLayout(form_layout) - form_child = QtWidgets.QFormLayout() + form_child = QtWidgets.QHBoxLayout() self.rotate_label = QtWidgets.QLabel("Angle:") self.rotate_label.setToolTip( @@ -55,7 +55,7 @@ class ToolTransform(FlatCAMTool): self.rotate_label.setFixedWidth(50) self.rotate_entry = FCEntry() - self.rotate_entry.setFixedWidth(60) + # self.rotate_entry.setFixedWidth(60) self.rotate_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.rotate_button = FCButton() @@ -67,7 +67,9 @@ class ToolTransform(FlatCAMTool): ) self.rotate_button.setFixedWidth(60) - form_child.addRow(self.rotate_entry, self.rotate_button) + form_child.addWidget(self.rotate_entry) + form_child.addWidget(self.rotate_button) + form_layout.addRow(self.rotate_label, form_child) self.transform_lay.addWidget(self.empty_label1) @@ -79,8 +81,8 @@ class ToolTransform(FlatCAMTool): ## Form Layout form1_layout = QtWidgets.QFormLayout() self.transform_lay.addLayout(form1_layout) - form1_child_1 = QtWidgets.QFormLayout() - form1_child_2 = QtWidgets.QFormLayout() + form1_child_1 = QtWidgets.QHBoxLayout() + form1_child_2 = QtWidgets.QHBoxLayout() self.skewx_label = QtWidgets.QLabel("Angle X:") self.skewx_label.setToolTip( @@ -90,7 +92,7 @@ class ToolTransform(FlatCAMTool): self.skewx_label.setFixedWidth(50) self.skewx_entry = FCEntry() self.skewx_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) - self.skewx_entry.setFixedWidth(60) + # self.skewx_entry.setFixedWidth(60) self.skewx_button = FCButton() self.skewx_button.set_value("Skew X") @@ -108,7 +110,7 @@ class ToolTransform(FlatCAMTool): self.skewy_label.setFixedWidth(50) self.skewy_entry = FCEntry() self.skewy_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) - self.skewy_entry.setFixedWidth(60) + # self.skewy_entry.setFixedWidth(60) self.skewy_button = FCButton() self.skewy_button.set_value("Skew Y") @@ -118,8 +120,12 @@ class ToolTransform(FlatCAMTool): "the bounding box for all selected objects.") self.skewy_button.setFixedWidth(60) - form1_child_1.addRow(self.skewx_entry, self.skewx_button) - form1_child_2.addRow(self.skewy_entry, self.skewy_button) + form1_child_1.addWidget(self.skewx_entry) + form1_child_1.addWidget(self.skewx_button) + + form1_child_2.addWidget(self.skewy_entry) + form1_child_2.addWidget(self.skewy_button) + form1_layout.addRow(self.skewx_label, form1_child_1) form1_layout.addRow(self.skewy_label, form1_child_2) @@ -132,8 +138,8 @@ class ToolTransform(FlatCAMTool): ## Form Layout form2_layout = QtWidgets.QFormLayout() self.transform_lay.addLayout(form2_layout) - form2_child_1 = QtWidgets.QFormLayout() - form2_child_2 = QtWidgets.QFormLayout() + form2_child_1 = QtWidgets.QHBoxLayout() + form2_child_2 = QtWidgets.QHBoxLayout() self.scalex_label = QtWidgets.QLabel("Factor X:") self.scalex_label.setToolTip( @@ -142,7 +148,7 @@ class ToolTransform(FlatCAMTool): self.scalex_label.setFixedWidth(50) self.scalex_entry = FCEntry() self.scalex_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) - self.scalex_entry.setFixedWidth(60) + # self.scalex_entry.setFixedWidth(60) self.scalex_button = FCButton() self.scalex_button.set_value("Scale X") @@ -159,7 +165,7 @@ class ToolTransform(FlatCAMTool): self.scaley_label.setFixedWidth(50) self.scaley_entry = FCEntry() self.scaley_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) - self.scaley_entry.setFixedWidth(60) + # self.scaley_entry.setFixedWidth(60) self.scaley_button = FCButton() self.scaley_button.set_value("Scale Y") @@ -186,8 +192,12 @@ class ToolTransform(FlatCAMTool): "and the center of the biggest bounding box\n" "of the selected objects when unchecked.") - form2_child_1.addRow(self.scalex_entry, self.scalex_button) - form2_child_2.addRow(self.scaley_entry, self.scaley_button) + form2_child_1.addWidget(self.scalex_entry) + form2_child_1.addWidget(self.scalex_button) + + form2_child_2.addWidget(self.scaley_entry) + form2_child_2.addWidget(self.scaley_button) + form2_layout.addRow(self.scalex_label, form2_child_1) form2_layout.addRow(self.scaley_label, form2_child_2) form2_layout.addRow(self.scale_link_cb, self.scale_zero_ref_cb) @@ -202,8 +212,8 @@ class ToolTransform(FlatCAMTool): ## Form Layout form3_layout = QtWidgets.QFormLayout() self.transform_lay.addLayout(form3_layout) - form3_child_1 = QtWidgets.QFormLayout() - form3_child_2 = QtWidgets.QFormLayout() + form3_child_1 = QtWidgets.QHBoxLayout() + form3_child_2 = QtWidgets.QHBoxLayout() self.offx_label = QtWidgets.QLabel("Value X:") self.offx_label.setToolTip( @@ -212,7 +222,7 @@ class ToolTransform(FlatCAMTool): self.offx_label.setFixedWidth(50) self.offx_entry = FCEntry() self.offx_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) - self.offx_entry.setFixedWidth(60) + # self.offx_entry.setFixedWidth(60) self.offx_button = FCButton() self.offx_button.set_value("Offset X") @@ -229,7 +239,7 @@ class ToolTransform(FlatCAMTool): self.offy_label.setFixedWidth(50) self.offy_entry = FCEntry() self.offy_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) - self.offy_entry.setFixedWidth(60) + # self.offy_entry.setFixedWidth(60) self.offy_button = FCButton() self.offy_button.set_value("Offset Y") @@ -239,8 +249,12 @@ class ToolTransform(FlatCAMTool): "the bounding box for all selected objects.\n") self.offy_button.setFixedWidth(60) - form3_child_1.addRow(self.offx_entry, self.offx_button) - form3_child_2.addRow(self.offy_entry, self.offy_button) + form3_child_1.addWidget(self.offx_entry) + form3_child_1.addWidget(self.offx_button) + + form3_child_2.addWidget(self.offy_entry) + form3_child_2.addWidget(self.offy_button) + form3_layout.addRow(self.offx_label, form3_child_1) form3_layout.addRow(self.offy_label, form3_child_2) @@ -252,9 +266,10 @@ class ToolTransform(FlatCAMTool): ## Form Layout form4_layout = QtWidgets.QFormLayout() + form4_child_hlay = QtWidgets.QHBoxLayout() + self.transform_lay.addLayout(form4_child_hlay) self.transform_lay.addLayout(form4_layout) - form4_child = QtWidgets.QFormLayout() - form4_child_1 = QtWidgets.QFormLayout() + form4_child_1 = QtWidgets.QHBoxLayout() self.flipx_button = FCButton() self.flipx_button.set_value("Flip on X") @@ -296,7 +311,7 @@ class ToolTransform(FlatCAMTool): self.flip_ref_label.setFixedWidth(50) self.flip_ref_entry = EvalEntry2("(0, 0)") self.flip_ref_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) - self.flip_ref_entry.setFixedWidth(60) + # self.flip_ref_entry.setFixedWidth(60) self.flip_ref_button = FCButton() self.flip_ref_button.set_value("Add") @@ -306,10 +321,13 @@ class ToolTransform(FlatCAMTool): "SHIFT key. Then click Add button to insert.") self.flip_ref_button.setFixedWidth(60) - form4_child.addRow(self.flipx_button, self.flipy_button) - form4_child_1.addRow(self.flip_ref_entry, self.flip_ref_button) + form4_child_hlay.addStretch() + form4_child_hlay.addWidget(self.flipx_button) + form4_child_hlay.addWidget(self.flipy_button) + + form4_child_1.addWidget(self.flip_ref_entry) + form4_child_1.addWidget(self.flip_ref_button) - form4_layout.addRow(self.empty_label, form4_child) form4_layout.addRow(self.flip_ref_cb) form4_layout.addRow(self.flip_ref_label, form4_child_1) self.ois_flip = OptionalInputSection(self.flip_ref_cb,