diff --git a/CHANGELOG.md b/CHANGELOG.md index d515b916..a42e4ca3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ CHANGELOG for FlatCAM beta - some changes to the FCMessageBox so the dark theme works ok on it - fixed the Tcl Command 'set_origin' to work for a specified location - updated the Tcl Command 'set_origin' to give the option to set the origin for a specified object +- fixed the 'cncjob' Tcl Command to work in the new configuration of the data structures 14.01.2022 diff --git a/appPlugins/ToolMilling.py b/appPlugins/ToolMilling.py index f2fb1acd..05f8867f 100644 --- a/appPlugins/ToolMilling.py +++ b/appPlugins/ToolMilling.py @@ -3278,29 +3278,69 @@ class ToolMilling(AppTool, Excellon): # ##################################################################################################### # Toolchange Z - tools_dict[tooluid_key]['data']['tools_mill_toolchangez'] = self.ui.toolchangez_entry.get_value() + try: + tools_dict[tooluid_key]['data']['tools_mill_toolchangez'] = self.ui.toolchangez_entry.get_value() + except AttributeError: + tools_dict[tooluid_key]['data']['tools_mill_toolchangez'] = \ + self.app.defaults['tools_mill_toolchangez'] # Toolchange X-Y - tools_dict[tooluid_key]['data']['tools_mill_toolchangexy'] = self.ui.toolchangexy_entry.get_value() + try: + tools_dict[tooluid_key]['data']['tools_mill_toolchangexy'] = self.ui.toolchangexy_entry.get_value() + except AttributeError: + tools_dict[tooluid_key]['data']['tools_mill_toolchangexy'] = \ + self.app.defaults['tools_mill_toolchangexy'] # End Move Z - tools_dict[tooluid_key]['data']['tools_mill_endz'] = self.ui.endz_entry.get_value() + try: + tools_dict[tooluid_key]['data']['tools_mill_endz'] = self.ui.endz_entry.get_value() + except AttributeError: + tools_dict[tooluid_key]['data']['tools_mill_endz'] = self.app.defaults['tools_mill_endz'] # End Move XY - tools_dict[tooluid_key]['data']['tools_mill_endxy'] = self.ui.endxy_entry.get_value() + try: + tools_dict[tooluid_key]['data']['tools_mill_endxy'] = self.ui.endxy_entry.get_value() + except AttributeError: + tools_dict[tooluid_key]['data']['tools_mill_endxy'] = self.app.defaults['tools_mill_endxy'] # Probe Z - tools_dict[tooluid_key]['data']['tools_mill_z_pdepth'] = self.ui.pdepth_entry.get_value() + try: + tools_dict[tooluid_key]['data']['tools_mill_z_pdepth'] = self.ui.pdepth_entry.get_value() + except AttributeError: + tools_dict[tooluid_key]['data']['tools_mill_z_pdepth'] = self.app.defaults['tools_mill_z_pdepth'] # Probe FR - tools_dict[tooluid_key]['data']['tools_mill_feedrate_probe'] = self.ui.feedrate_probe_entry.get_value() + try: + tools_dict[tooluid_key]['data'][ + 'tools_mill_feedrate_probe'] = self.ui.feedrate_probe_entry.get_value() + except AttributeError: + tools_dict[tooluid_key]['data'][ + 'tools_mill_feedrate_probe'] = self.app.defaults['tools_mill_feedrate_probe'] # Exclusion Areas Enable - tools_dict[tooluid_key]['data']['tools_mill_area_exclusion'] = self.ui.exclusion_cb.get_value() + try: + tools_dict[tooluid_key]['data']['tools_mill_area_exclusion'] = self.ui.exclusion_cb.get_value() + except AttributeError: + tools_dict[tooluid_key]['data']['tools_mill_area_exclusion'] = False # Tcl Command most likely # Exclusion Areas Shape - tools_dict[tooluid_key]['data']['tools_mill_area_shape'] = self.ui.area_shape_radio.get_value() + try: + tools_dict[tooluid_key]['data']['tools_mill_area_shape'] = self.ui.area_shape_radio.get_value() + except AttributeError: + tools_dict[tooluid_key]['data']['tools_mill_area_shape'] = \ + self.app.defaults['tools_mill_area_shape'] # Exclusion Areas Strategy - tools_dict[tooluid_key]['data']['tools_mill_area_strategy'] = self.ui.strategy_radio.get_value() + try: + tools_dict[tooluid_key]['data']['tools_mill_area_strategy'] = self.ui.strategy_radio.get_value() + except AttributeError: + tools_dict[tooluid_key]['data']['tools_mill_area_strategy'] = \ + self.app.defaults['tools_mill_area_strategy'] # Exclusion Areas Overz - tools_dict[tooluid_key]['data']['tools_mill_area_overz'] = self.ui.over_z_entry.get_value() + try: + tools_dict[tooluid_key]['data']['tools_mill_area_overz'] = self.ui.over_z_entry.get_value() + except AttributeError: + tools_dict[tooluid_key]['data']['tools_mill_area_overz'] = \ + self.app.defaults['tools_mill_area_overz'] # Preprocessor - tools_dict[tooluid_key]['data']['tools_mill_ppname_g'] = self.ui.pp_geo_name_cb.get_value() + try: + tools_dict[tooluid_key]['data']['tools_mill_ppname_g'] = self.ui.pp_geo_name_cb.get_value() + except AttributeError: + tools_dict[tooluid_key]['data']['tools_mill_ppname_g'] = self.app.defaults['tools_mill_ppname_g'] # Offset calculation offset_type = dia_cnc_dict['data']['tools_mill_offset_type'] @@ -3309,7 +3349,10 @@ class ToolMilling(AppTool, Excellon): elif offset_type == 2: # 'out' tool_offset = tooldia_val / 2 elif offset_type == 3: # 'custom' - offset_value = self.ui.offset_entry.get_value() + try: + offset_value = self.ui.offset_entry.get_value() + except AttributeError: + offset_value = self.app.defaults['tools_mill_offset_value'] if offset_value: tool_offset = float(offset_value) else: diff --git a/camlib.py b/camlib.py index a254d19e..1da949bb 100644 --- a/camlib.py +++ b/camlib.py @@ -3851,7 +3851,11 @@ class CNCjob(Geometry): self.z_feedrate = float(tool_dict['tools_mill_feedrate_z']) self.feedrate_rapid = float(tool_dict['tools_mill_feedrate_rapid']) - self.spindlespeed = float(tool_dict['tools_mill_spindlespeed']) + try: + self.spindlespeed = float(tool_dict['tools_mill_spindlespeed']) + except TypeError: + self.spindlespeed = 0.0 + try: self.spindledir = tool_dict['tools_mill_spindledir'] except KeyError: diff --git a/tclCommands/TclCommandCncjob.py b/tclCommands/TclCommandCncjob.py index e64bb551..a8f637cf 100644 --- a/tclCommands/TclCommandCncjob.py +++ b/tclCommands/TclCommandCncjob.py @@ -135,11 +135,11 @@ class TclCommandCncjob(TclCommandSignaled): self.app.defaults["geometry_travelz"] args["feedrate"] = args["feedrate"] if "feedrate" in args and args["feedrate"] else \ - self.app.defaults["geometry_feedrate"] + self.app.defaults["tools_mill_feedrate"] args["feedrate_z"] = args["feedrate_z"] if "feedrate_z" in args and args["feedrate_z"] else \ - self.app.defaults["geometry_feedrate_z"] + self.app.defaults["tools_mill_feedrate_z"] args["feedrate_rapid"] = args["feedrate_rapid"] if "feedrate_rapid" in args and args["feedrate_rapid"] else \ - self.app.defaults["geometry_feedrate_rapid"] + self.app.defaults["tools_mill_feedrate_rapid"] if "extracut_length" in args: args["extracut"] = True @@ -148,28 +148,28 @@ class TclCommandCncjob(TclCommandSignaled): else: args["extracut_length"] = float(args["extracut_length"]) else: - args["extracut"] = self.app.defaults["geometry_extracut"] - args["extracut_length"] = self.app.defaults["geometry_extracut_length"] + args["extracut"] = self.app.defaults["tools_mill_extracut"] + args["extracut_length"] = self.app.defaults["tools_mill_extracut_length"] if "dpp" in args: args["multidepth"] = True if args["dpp"] is None: - args["dpp"] = self.app.defaults["geometry_depthperpass"] + args["dpp"] = self.app.defaults["tools_mill_depthperpass"] else: args["dpp"] = float(args["dpp"]) else: - args["multidepth"] = self.app.defaults["geometry_multidepth"] - args["dpp"] = self.app.defaults["geometry_depthperpass"] + args["multidepth"] = self.app.defaults["tools_mill_multidepth"] + args["dpp"] = self.app.defaults["tools_mill_depthperpass"] args["startz"] = args["startz"] if "startz" in args and args["startz"] else \ - self.app.defaults["geometry_startz"] - args["endz"] = args["endz"] if "endz" in args and args["endz"] else self.app.defaults["geometry_endz"] + self.app.defaults["tools_mill_startz"] + args["endz"] = args["endz"] if "endz" in args and args["endz"] else self.app.defaults["tools_mill_endz"] if "endxy" in args and args["endxy"]: args["endxy"] = args["endxy"] else: - if self.app.defaults["geometry_endxy"]: - args["endxy"] = str(self.app.defaults["geometry_endxy"]) + if self.app.defaults["tools_mill_endxy"]: + args["endxy"] = str(self.app.defaults["tools_mill_endxy"]) else: args["endxy"] = '0, 0' if len(eval(args["endxy"])) != 2: @@ -185,26 +185,26 @@ class TclCommandCncjob(TclCommandSignaled): else: args["dwelltime"] = float(args['dwelltime']) else: - args["dwell"] = self.app.defaults["geometry_dwell"] - args["dwelltime"] = self.app.defaults["geometry_dwelltime"] + args["dwell"] = self.app.defaults["tools_mill_dwell"] + args["dwelltime"] = self.app.defaults["tools_mill_dwelltime"] - args["pp"] = args["pp"] if "pp" in args and args["pp"] else self.app.defaults["geometry_ppname_g"] + args["pp"] = args["pp"] if "pp" in args and args["pp"] else self.app.defaults["tools_mill_ppname_g"] if "toolchangez" in args: args["toolchange"] = True if args["toolchangez"] is not None: args["toolchangez"] = args["toolchangez"] else: - args["toolchangez"] = self.app.defaults["geometry_toolchangez"] + args["toolchangez"] = self.app.defaults["tools_mill_toolchangez"] else: - args["toolchange"] = self.app.defaults["geometry_toolchange"] - args["toolchangez"] = self.app.defaults["geometry_toolchangez"] + args["toolchange"] = self.app.defaults["tools_mill_toolchange"] + args["toolchangez"] = self.app.defaults["tools_mill_toolchangez"] if "toolchangexy" in args and args["toolchangexy"]: args["toolchangexy"] = args["toolchangexy"] else: - if self.app.defaults["geometry_toolchangexy"]: - args["toolchangexy"] = str(self.app.defaults["geometry_toolchangexy"]) + if self.app.defaults["tools_mill_toolchangexy"]: + args["toolchangexy"] = str(self.app.defaults["tools_mill_toolchangexy"]) else: args["toolchangexy"] = '0, 0' if len(eval(args["toolchangexy"])) != 2: @@ -238,34 +238,36 @@ class TclCommandCncjob(TclCommandSignaled): for tool_uid in list(local_tools_dict.keys()): if 'data' in local_tools_dict[tool_uid]: - local_tools_dict[tool_uid]['data']['cutz'] = args["z_cut"] - local_tools_dict[tool_uid]['data']['travelz'] = args["z_move"] - local_tools_dict[tool_uid]['data']['feedrate'] = args["feedrate"] - local_tools_dict[tool_uid]['data']['feedrate_z'] = args["feedrate_z"] - local_tools_dict[tool_uid]['data']['feedrate_rapid'] = args["feedrate_rapid"] - local_tools_dict[tool_uid]['data']['multidepth'] = args["multidepth"] - local_tools_dict[tool_uid]['data']['extracut'] = args["extracut"] + local_tools_dict[tool_uid]['data']['tools_mill_cutz'] = args["z_cut"] + local_tools_dict[tool_uid]['data']['tools_mill_travelz'] = args["z_move"] + local_tools_dict[tool_uid]['data']['tools_mill_feedrate'] = args["feedrate"] + local_tools_dict[tool_uid]['data']['tools_mill_feedrate_z'] = args["feedrate_z"] + local_tools_dict[tool_uid]['data']['tools_mill_feedrate_rapid'] = args["feedrate_rapid"] + local_tools_dict[tool_uid]['data']['tools_mill_multidepth'] = args["multidepth"] + local_tools_dict[tool_uid]['data']['tools_mill_extracut'] = args["extracut"] if args["extracut"] is True: - local_tools_dict[tool_uid]['data']['extracut_length'] = args["extracut_length"] + local_tools_dict[tool_uid]['data']['tools_mill_extracut_length'] = args["extracut_length"] else: - local_tools_dict[tool_uid]['data']['extracut_length'] = None + local_tools_dict[tool_uid]['data']['tools_mill_extracut_length'] = None - local_tools_dict[tool_uid]['data']['depthperpass'] = args["dpp"] - local_tools_dict[tool_uid]['data']['toolchange'] = args["toolchange"] - local_tools_dict[tool_uid]['data']['toolchangez'] = args["toolchangez"] - local_tools_dict[tool_uid]['data']['toolchangexy'] = args["toolchangexy"] - local_tools_dict[tool_uid]['data']['startz'] = args["startz"] - local_tools_dict[tool_uid]['data']['endz'] = args["endz"] - local_tools_dict[tool_uid]['data']['endxy'] = args["endxy"] - local_tools_dict[tool_uid]['data']['spindlespeed'] = args["spindlespeed"] - local_tools_dict[tool_uid]['data']['dwell'] = args["dwell"] - local_tools_dict[tool_uid]['data']['dwelltime'] = args["dwelltime"] - local_tools_dict[tool_uid]['data']['ppname_g'] = args["pp"] - obj.mtool_gen_cncjob( + local_tools_dict[tool_uid]['data']['tools_mill_depthperpass'] = args["dpp"] + local_tools_dict[tool_uid]['data']['tools_mill_toolchange'] = args["toolchange"] + local_tools_dict[tool_uid]['data']['tools_mill_toolchangez'] = args["toolchangez"] + local_tools_dict[tool_uid]['data']['tools_mill_toolchangexy'] = args["toolchangexy"] + local_tools_dict[tool_uid]['data']['tools_mill_startz'] = args["startz"] + local_tools_dict[tool_uid]['data']['tools_mill_endz'] = args["endz"] + local_tools_dict[tool_uid]['data']['tools_mill_endxy'] = args["endxy"] + local_tools_dict[tool_uid]['data']['tools_mill_spindlespeed'] = args["spindlespeed"] + local_tools_dict[tool_uid]['data']['tools_mill_dwell'] = args["dwell"] + local_tools_dict[tool_uid]['data']['tools_mill_dwelltime'] = args["dwelltime"] + local_tools_dict[tool_uid]['data']['tools_mill_ppname_g'] = args["pp"] + self.app.milling_tool.mtool_gen_cncjob( + geo_obj=obj, outname=args['outname'], tools_dict=local_tools_dict, tools_in_use=[], + toolchange=args["toolchange"], use_thread=False, plot=False) # self.raise_tcl_error('The object is a multi-geo geometry which is not supported in cncjob Tcl Command')