diff --git a/FlatCAMApp.py b/FlatCAMApp.py index dd5773fe..fe43e101 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -94,8 +94,8 @@ class App(QtCore.QObject): log.addHandler(handler) # Version - version = 8.918 - version_date = "2019/06/11" + version = 8.919 + version_date = "2019/06/23" beta = True # current date now @@ -780,7 +780,7 @@ class App(QtCore.QObject): # Geometry General "geometry_plot": True, "geometry_circle_steps": 128, - "geometry_cnctooldia": 0.016, + "geometry_cnctooldia": "0.016", # Geometry Options "geometry_cutz": -0.002, @@ -2059,9 +2059,9 @@ class App(QtCore.QObject): except Exception as e: log.debug("App.defaults_read_form() --> %s" % str(e)) - def defaults_write_form(self, factor=None): + def defaults_write_form(self, factor=None, fl_units=None): for option in self.defaults: - self.defaults_write_form_field(option, factor=factor) + self.defaults_write_form_field(option, factor=factor, units=fl_units) # try: # self.defaults_form_fields[option].set_value(self.defaults[option]) # except KeyError: @@ -2069,12 +2069,22 @@ class App(QtCore.QObject): # # TODO: Rethink this? # pass - def defaults_write_form_field(self, field, factor=None): + def defaults_write_form_field(self, field, factor=None, units=None): try: if factor is None: - self.defaults_form_fields[field].set_value(self.defaults[field]) + if units is None: + self.defaults_form_fields[field].set_value(self.defaults[field]) + elif units == 'IN' and (field == 'global_gridx' or field == 'global_gridy'): + self.defaults_form_fields[field].set_value(self.defaults[field], decimals=6) + elif units == 'MM' and (field == 'global_gridx' or field == 'global_gridy'): + self.defaults_form_fields[field].set_value(self.defaults[field], decimals=4) else: - self.defaults_form_fields[field].set_value(self.defaults[field] * factor) + if units is None: + self.defaults_form_fields[field].set_value(self.defaults[field] * factor) + elif units == 'IN' and (field == 'global_gridx' or field == 'global_gridy'): + self.defaults_form_fields[field].set_value((self.defaults[field] * factor), decimals=6) + elif units == 'MM' and (field == 'global_gridx' or field == 'global_gridy'): + self.defaults_form_fields[field].set_value((self.defaults[field] * factor), decimals=4) except KeyError: # self.log.debug("defaults_write_form(): No field for: %s" % option) # TODO: Rethink this? @@ -2108,11 +2118,10 @@ class App(QtCore.QObject): self.paste_tool.install(icon=QtGui.QIcon('share/solderpastebis32.png')) self.calculator_tool = ToolCalculator(self) - self.calculator_tool.install(icon=QtGui.QIcon('share/calculator24.png')) + self.calculator_tool.install(icon=QtGui.QIcon('share/calculator24.png'), separator=True) self.sub_tool = ToolSub(self) - self.sub_tool.install(icon=QtGui.QIcon('share/sub32.png'), pos=self.ui.menuedit_convert, - before=self.ui.menuedit_convert_sg2mg) + self.sub_tool.install(icon=QtGui.QIcon('share/sub32.png'), pos=self.ui.menutool, separator=True) self.move_tool = ToolMove(self) self.move_tool.install(icon=QtGui.QIcon('share/move16.png'), pos=self.ui.menuedit, @@ -2245,7 +2254,18 @@ class App(QtCore.QObject): self.inform.emit(_("[WARNING_NOTCL] Simultanoeus editing of tools geometry in a MultiGeo Geometry " "is not possible.\n" "Edit only one geometry at a time.")) - self.geo_editor.edit_fcgeometry(edited_object, multigeo_tool=edited_tools[0]) + + # determine the tool dia of the selected tool + selected_tooldia = float(edited_object.ui.geo_tools_table.item((edited_tools[0] - 1), 1).text()) + + # now find the key in the edited_object.tools that has this tooldia + multi_tool = 1 + for tool in edited_object.tools: + if edited_object.tools[tool]['tooldia'] == selected_tooldia: + multi_tool = tool + break + + self.geo_editor.edit_fcgeometry(edited_object, multigeo_tool=multi_tool) else: self.geo_editor.edit_fcgeometry(edited_object) @@ -3618,9 +3638,10 @@ class App(QtCore.QObject): if self.toggle_units_ignore: return + new_units = self.ui.general_defaults_form.general_app_group.units_radio.get_value().upper() + # If option is the same, then ignore - if self.ui.general_defaults_form.general_app_group.units_radio.get_value().upper() == \ - self.defaults["units"].upper(): + if new_units == self.defaults["units"].upper(): self.log.debug("on_toggle_units(): Same as defaults, so ignoring.") return @@ -3667,21 +3688,60 @@ class App(QtCore.QObject): coords_xy[0] *= sfactor coords_xy[1] *= sfactor self.options['geometry_toolchangexy'] = "%f, %f" % (coords_xy[0], coords_xy[1]) + elif dim == 'geometry_cnctooldia': + tools_diameters = [] + try: + tools_string = self.defaults["geometry_cnctooldia"].split(",") + tools_diameters = [eval(a) for a in tools_string if a != ''] + except Exception as e: + log.debug("App.on_toggle_units().scale_options() --> %s" % str(e)) + + self.options['geometry_cnctooldia'] = '' + for t in range(len(tools_diameters)): + tools_diameters[t] *= sfactor + self.options['geometry_cnctooldia'] += "%f," % tools_diameters[t] elif dim == 'tools_ncctools': - ncctols = [float(eval(a)) for a in self.defaults["tools_ncctools"].split(",")] - ncctols[0] *= sfactor - ncctols[1] *= sfactor - self.options['tools_ncctools'] = "%f, %f" % (ncctols[0], ncctols[1]) + ncctools = [] + try: + tools_string = self.defaults["tools_ncctools"].split(",") + ncctools = [eval(a) for a in tools_string if a != ''] + except Exception as e: + log.debug("App.on_toggle_units().scale_options() --> %s" % str(e)) + + self.options['tools_ncctools'] = '' + for t in range(len(ncctools)): + ncctools[t] *= sfactor + self.options['tools_ncctools'] += "%f," % ncctools[t] elif dim == 'tools_solderpaste_tools': - sp_tools = [float(eval(a)) for a in self.defaults["tools_solderpaste_tools"].split(",")] - sp_tools[0] *= sfactor - sp_tools[1] *= sfactor - self.options['tools_solderpaste_tools'] = "%f, %f" % (sp_tools[0], sp_tools[1]) + sptools = [] + try: + tools_string = self.defaults["tools_solderpaste_tools"].split(",") + sptools = [eval(a) for a in tools_string if a != ''] + except Exception as e: + log.debug("App.on_toggle_units().scale_options() --> %s" % str(e)) + + self.options['tools_solderpaste_tools'] = "" + for t in range(len(sptools)): + sptools[t] *= sfactor + self.options['tools_solderpaste_tools'] += "%f," % sptools[t] elif dim == 'tools_solderpaste_xy_toolchange': sp_coords = [float(eval(a)) for a in self.defaults["tools_solderpaste_xy_toolchange"].split(",")] sp_coords[0] *= sfactor sp_coords[1] *= sfactor self.options['tools_solderpaste_xy_toolchange'] = "%f, %f" % (sp_coords[0], sp_coords[1]) + elif dim == 'global_gridx' or dim == 'global_gridy': + if new_units == 'IN': + try: + val = float(self.defaults[dim]) * sfactor + self.options[dim] = float('%.6f' % val) + except Exception as e: + log.debug('App.on_toggle_units().scale_defaults() --> %s' % str(e)) + else: + try: + val = float(self.defaults[dim]) * sfactor + self.options[dim] = float('%.4f' % val) + except Exception as e: + log.debug('App.on_toggle_units().scale_defaults() --> %s' % str(e)) else: try: self.options[dim] = float(self.options[dim]) * sfactor @@ -3700,21 +3760,60 @@ class App(QtCore.QObject): coords_xy[0] *= sfactor coords_xy[1] *= sfactor self.defaults['geometry_toolchangexy'] = "%.4f, %.4f" % (coords_xy[0], coords_xy[1]) + elif dim == 'geometry_cnctooldia': + tools_diameters = [] + try: + tools_string = self.defaults["geometry_cnctooldia"].split(",") + tools_diameters = [eval(a) for a in tools_string if a != ''] + except Exception as e: + log.debug("App.on_toggle_units().scale_options() --> %s" % str(e)) + + self.defaults['geometry_cnctooldia'] = '' + for t in range(len(tools_diameters)): + tools_diameters[t] *= sfactor + self.defaults['geometry_cnctooldia'] += "%.4f," % tools_diameters[t] elif dim == 'tools_ncctools': - ncctols = [float(eval(a)) for a in self.defaults["tools_ncctools"].split(",")] - ncctols[0] *= sfactor - ncctols[1] *= sfactor - self.defaults['tools_ncctools'] = "%.4f, %.4f" % (ncctols[0], ncctols[1]) + ncctools = [] + try: + tools_string = self.defaults["tools_ncctools"].split(",") + ncctools = [eval(a) for a in tools_string if a != ''] + except Exception as e: + log.debug("App.on_toggle_units().scale_options() --> %s" % str(e)) + + self.defaults['tools_ncctools'] = '' + for t in range(len(ncctools)): + ncctools[t] *= sfactor + self.defaults['tools_ncctools'] += "%.4f," % ncctools[t] elif dim == 'tools_solderpaste_tools': - sp_tools = [float(eval(a)) for a in self.defaults["tools_solderpaste_tools"].split(",")] - sp_tools[0] *= sfactor - sp_tools[1] *= sfactor - self.defaults['tools_solderpaste_tools'] = "%.4f, %.4f" % (sp_tools[0], sp_tools[1]) + sptools = [] + try: + tools_string = self.defaults["tools_solderpaste_tools"].split(",") + sptools = [eval(a) for a in tools_string if a != ''] + except Exception as e: + log.debug("App.on_toggle_units().scale_options() --> %s" % str(e)) + + self.defaults['tools_solderpaste_tools'] = "" + for t in range(len(sptools)): + sptools[t] *= sfactor + self.defaults['tools_solderpaste_tools'] += "%.4f," % sptools[t] elif dim == 'tools_solderpaste_xy_toolchange': sp_coords = [float(eval(a)) for a in self.defaults["tools_solderpaste_xy_toolchange"].split(",")] sp_coords[0] *= sfactor sp_coords[1] *= sfactor self.defaults['tools_solderpaste_xy_toolchange'] = "%.4f, %.4f" % (sp_coords[0], sp_coords[1]) + elif dim == 'global_gridx' or dim == 'global_gridy': + if new_units == 'IN': + try: + val = float(self.defaults[dim]) * sfactor + self.defaults[dim] = float('%.6f' % val) + except Exception as e: + log.debug('App.on_toggle_units().scale_defaults() --> %s' % str(e)) + else: + try: + val = float(self.defaults[dim]) * sfactor + self.defaults[dim] = float('%.4f' % val) + except Exception as e: + log.debug('App.on_toggle_units().scale_defaults() --> %s' % str(e)) else: try: self.defaults[dim] = float(self.defaults[dim]) * sfactor @@ -3723,7 +3822,7 @@ class App(QtCore.QObject): # The scaling factor depending on choice of units. factor = 1/25.4 - if self.ui.general_defaults_form.general_app_group.units_radio.get_value().upper() == 'MM': + if new_units == 'MM': factor = 25.4 # Changing project units. Warn user. @@ -3748,7 +3847,7 @@ class App(QtCore.QObject): self.defaults_read_form() scale_defaults(factor) - self.defaults_write_form() + self.defaults_write_form(fl_units=new_units) self.should_we_save = True @@ -3757,12 +3856,15 @@ class App(QtCore.QObject): self.plotcanvas.draw_workspace() # adjust the grid values on the main toolbar - self.ui.grid_gap_x_entry.set_value(float(self.ui.grid_gap_x_entry.get_value()) * factor) - self.ui.grid_gap_y_entry.set_value(float(self.ui.grid_gap_y_entry.get_value()) * factor) + dec = 6 if new_units == 'IN'else 4 + val_x = float(self.ui.grid_gap_x_entry.get_value()) * factor + self.ui.grid_gap_x_entry.set_value(val_x, decimals=dec) + if not self.ui.grid_gap_link_cb.isChecked(): + val_y = float(self.ui.grid_gap_y_entry.get_value()) * factor + self.ui.grid_gap_y_entry.set_value(val_y, decimals=dec) - units = self.ui.general_defaults_form.general_app_group.units_radio.get_value().upper() for obj in self.collection.get_list(): - obj.convert_units(units) + obj.convert_units(new_units) # make that the properties stored in the object are also updated self.object_changed.emit(obj) @@ -3775,9 +3877,9 @@ class App(QtCore.QObject): current.to_form() self.plot_all() - self.inform.emit(_("[success] Converted units to %s") % units) + self.inform.emit(_("[success] Converted units to %s") % new_units) # self.ui.units_label.setText("[" + self.options["units"] + "]") - self.set_screen_units(units) + self.set_screen_units(new_units) else: # Undo toggling self.toggle_units_ignore = True @@ -5249,6 +5351,7 @@ class App(QtCore.QObject): if index.isValid(): if index.internalPointer().parent_item != self.collection.root_item: self.ui.notebook.setCurrentWidget(self.ui.selected_tab) + self.collection.on_item_activated(index) def grid_status(self): if self.ui.grid_snap_btn.isChecked(): @@ -5423,6 +5526,7 @@ class App(QtCore.QObject): self.click_noproject = True self.clipboard.setText(self.defaults["global_point_clipboard_format"] % (self.pos[0], self.pos[1])) + self.inform.emit(_("[success] Coordinates copied to clipboard.")) return self.on_mouse_move_over_plot(event, origin_click=True) @@ -5579,6 +5683,10 @@ class App(QtCore.QObject): if self.command_active is None: self.select_objects(key='CTRL') self.delete_hover_shape() + elif modifiers == QtCore.Qt.ShiftModifier: + # if SHIFT was pressed and LMB is clicked then we have a coordinates copy to clipboard + # therefore things should stay as they are + pass else: # If there is no active command (self.command_active is None) then we check if we clicked # on a object by checking the bounding limits against mouse click position @@ -8044,7 +8152,7 @@ class App(QtCore.QObject): This behavior works only within main thread, errors with promissed tasks can be catched and detected only with log. - TODO: this problem have to be addressed somehow, maybe rewrite promissing to be blocking somehow for + TODO: this problem have to be addressed somehow, maybe rewrite promissing to be blocking somehow for TCL shell. Kamil's comment: I will rewrite existing TCL commands from time to time to follow this rules. @@ -8252,7 +8360,10 @@ The normal flow when working in FlatCAM is the following:
""" FlatCAMObj.app = self ObjectCollection.app = self - + Gerber.app = self + Excellon.app = self + Geometry.app = self + CNCjob.app = self FCProcess.app = self FCProcessContainer.app = self diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 4b3a278e..ba8e7600 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -68,6 +68,9 @@ class FlatCAMObj(QtCore.QObject): self.form_fields = {} + # store here the default data for Geometry Data + self.default_data = {} + self.kind = None # Override with proper name # self.shapes = ShapeCollection(parent=self.app.plotcanvas.vispy_canvas.view.scene) @@ -137,7 +140,7 @@ class FlatCAMObj(QtCore.QObject): if key == 'plot': self.visible = self.options['plot'] - # self.optionChanged.emit(key) + self.optionChanged.emit(key) def set_ui(self, ui): self.ui = ui @@ -199,6 +202,8 @@ class FlatCAMObj(QtCore.QObject): log.debug("on_name_activate() --> Could not remove the old object name from auto-completer model list") self.options["name"] = self.ui.name_entry.get_value() + self.default_data["name"] = self.ui.name_entry.get_value() + self.app.collection.update_view() self.app.inform.emit(_("[success] Name changed from {old} to {new}").format(old=old_name, new=new_name)) def on_offset_button_click(self): @@ -338,7 +343,7 @@ class FlatCAMObj(QtCore.QObject): return self.shapes.visible @visible.setter - def visible(self, value): + def visible(self, value, threaded=False): log.debug("FlatCAMObj.visible()") def worker_task(app_obj): @@ -350,7 +355,10 @@ class FlatCAMObj(QtCore.QObject): except Exception as e: pass - self.app.worker_task.emit({'fcn': worker_task, 'params': [self]}) + if threaded is False: + worker_task(self) + else: + self.app.worker_task.emit({'fcn': worker_task, 'params': [self]}) @property def drawing_tolerance(self): @@ -810,7 +818,7 @@ class FlatCAMGerber(FlatCAMObj, Gerber): def follow_init(follow_obj, app): # Propagate options - follow_obj.options["cnctooldia"] = float(self.options["isotooldia"]) + follow_obj.options["cnctooldia"] = str(self.options["isotooldia"]) follow_obj.solid_geometry = self.follow_geometry # TODO: Do something if this is None. Offer changing name? @@ -832,7 +840,6 @@ class FlatCAMGerber(FlatCAMObj, Gerber): :return: None """ - if dia is None: dia = float(self.options["isotooldia"]) if passes is None: @@ -893,7 +900,7 @@ class FlatCAMGerber(FlatCAMObj, Gerber): # TODO: This is ugly. Create way to pass data into init function. def iso_init(geo_obj, app_obj): # Propagate options - geo_obj.options["cnctooldia"] = float(self.options["isotooldia"]) + geo_obj.options["cnctooldia"] = str(self.options["isotooldia"]) geo_obj.solid_geometry = [] for i in range(passes): iso_offset = (((2 * i + 1) / 2.0) * dia) - (i * overlap * dia) @@ -950,7 +957,7 @@ class FlatCAMGerber(FlatCAMObj, Gerber): # TODO: This is ugly. Create way to pass data into init function. def iso_init(geo_obj, app_obj): # Propagate options - geo_obj.options["cnctooldia"] = float(self.options["isotooldia"]) + geo_obj.options["cnctooldia"] = str(self.options["isotooldia"]) # if milling type is climb then the move is counter-clockwise around features if milling_type == 'cl': @@ -1638,7 +1645,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): exc.app.log.warning("Failed to copy option.", option) for drill in exc.drills: - exc_tool_dia = float('%.3f' % exc.tools[drill['tool']]['C']) + exc_tool_dia = float('%.4f' % exc.tools[drill['tool']]['C']) if exc_tool_dia not in custom_dict_drills: custom_dict_drills[exc_tool_dia] = [drill['point']] @@ -1646,7 +1653,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): custom_dict_drills[exc_tool_dia].append(drill['point']) for slot in exc.slots: - exc_tool_dia = float('%.3f' % exc.tools[slot['tool']]['C']) + exc_tool_dia = float('%.4f' % exc.tools[slot['tool']]['C']) if exc_tool_dia not in custom_dict_slots: custom_dict_slots[exc_tool_dia] = [[slot['start'], slot['stop']]] @@ -1739,7 +1746,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): temp_tools[tool_name_temp] = spec_temp for drill in exc_final.drills: - exc_tool_dia = float('%.3f' % exc_final.tools[drill['tool']]['C']) + exc_tool_dia = float('%.4f' % exc_final.tools[drill['tool']]['C']) if exc_tool_dia == ordered_dia: temp_drills.append( { @@ -1749,7 +1756,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): ) for slot in exc_final.slots: - slot_tool_dia = float('%.3f' % exc_final.tools[slot['tool']]['C']) + slot_tool_dia = float('%.4f' % exc_final.tools[slot['tool']]['C']) if slot_tool_dia == ordered_dia: temp_slots.append( { @@ -1825,7 +1832,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): if self.units == 'MM': dia = QtWidgets.QTableWidgetItem('%.2f' % (self.tools[tool_no]['C'])) else: - dia = QtWidgets.QTableWidgetItem('%.3f' % (self.tools[tool_no]['C'])) + dia = QtWidgets.QTableWidgetItem('%.4f' % (self.tools[tool_no]['C'])) dia.setFlags(QtCore.Qt.ItemIsEnabled) @@ -1843,7 +1850,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): if self.units == 'MM': t_offset = self.tool_offset[float('%.2f' % float(self.tools[tool_no]['C']))] else: - t_offset = self.tool_offset[float('%.3f' % float(self.tools[tool_no]['C']))] + t_offset = self.tool_offset[float('%.4f' % float(self.tools[tool_no]['C']))] except KeyError: t_offset = self.app.defaults['excellon_offset'] tool_offset_item = QtWidgets.QTableWidgetItem('%s' % str(t_offset)) @@ -1934,10 +1941,6 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): self.ui.tools_table.setColumnWidth(5, 17) # horizontal_header.setStretchLastSection(True) - - - - # horizontal_header.setColumnWidth(2, QtWidgets.QHeaderView.ResizeToContents) # horizontal_header.setStretchLastSection(True) @@ -2022,7 +2025,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): if self.units == 'MM': dia = float('%.2f' % float(value['C'])) else: - dia = float('%.3f' % float(value['C'])) + dia = float('%.4f' % float(value['C'])) self.tool_offset[dia] = t_default_offset # Show/Hide Advanced Options @@ -2086,7 +2089,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): if self.units == 'MM': dia = float('%.2f' % float(self.ui.tools_table.item(row_of_item_changed, 1).text())) else: - dia = float('%.3f' % float(self.ui.tools_table.item(row_of_item_changed, 1).text())) + dia = float('%.4f' % float(self.ui.tools_table.item(row_of_item_changed, 1).text())) current_table_offset_edited = None if self.ui.tools_table.currentItem() is not None: @@ -2349,6 +2352,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): geo_obj.options['Tools_in_use'] = tool_table_items geo_obj.options['type'] = 'Excellon Geometry' + geo_obj.options["cnctooldia"] = str(tooldia) geo_obj.solid_geometry = [] @@ -2443,6 +2447,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): geo_obj.options['Tools_in_use'] = tool_table_items geo_obj.options['type'] = 'Excellon Geometry' + geo_obj.options["cnctooldia"] = str(tooldia) geo_obj.solid_geometry = [] @@ -2953,6 +2958,14 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): if "cnctooldia" not in self.options: self.options["cnctooldia"] = self.app.defaults["geometry_cnctooldia"] + # try: + # self.options["cnctooldia"] = [ + # float(eval(dia)) for dia in str(self.app.defaults["geometry_cnctooldia"]).split(",") + # ] + # except Exception as e: + # log.error("At least one tool diameter needed. Verify in Edit -> Preferences -> Geometry General -> " + # "Tool dia. %s" % str(e)) + # return self.options["startz"] = self.app.defaults["geometry_startz"] @@ -2998,9 +3011,6 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): self.old_pp_state = '' self.old_toolchangeg_state = '' - # store here the default data for Geometry Data - self.default_data = {} - # Attributes to be included in serialization # Always append to it because it carries contents # from predecessors. @@ -3009,7 +3019,6 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): def build_ui(self): self.ui_disconnect() - FlatCAMObj.build_ui(self) offset = 0 @@ -3147,6 +3156,10 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): self.set_tool_offset_visibility(selected_row) self.ui_connect() + # HACK: for whatever reasons the name in Selected tab is reverted to the original one after a successful rename + # done in the collection view but only for Geometry objects. Perhaps some references remains. Should be fixed. + self.ui.name_entry.set_value(self.options['name']) + def set_ui(self, ui): FlatCAMObj.set_ui(self, ui) @@ -3221,21 +3234,33 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): for def_key in self.default_data: for opt_key, opt_val in self.options.items(): if def_key == opt_key: - self.default_data[def_key] = opt_val + self.default_data[def_key] = deepcopy(opt_val) + + try: + tools_list = [ + float(eval(dia)) for dia in self.options["cnctooldia"].split(",") + ] + except Exception as e: + log.error("At least one tool diameter needed. Verify in Edit -> Preferences -> Geometry General -> " + "Tool dia. %s" % str(e)) + return self.tooluid += 1 + if not self.tools: - self.tools.update({ - self.tooluid: { - 'tooldia': float(self.options["cnctooldia"]), - 'offset': ('Path'), - 'offset_value': 0.0, - 'type': _('Rough'), - 'tool_type': 'C1', - 'data': self.default_data, - 'solid_geometry': self.solid_geometry - } - }) + for toold in tools_list: + self.tools.update({ + self.tooluid: { + 'tooldia': float(toold), + 'offset': ('Path'), + 'offset_value': 0.0, + 'type': _('Rough'), + 'tool_type': 'C1', + 'data': self.default_data, + 'solid_geometry': self.solid_geometry + } + }) + self.tooluid += 1 else: # if self.tools is not empty then it can safely be assumed that it comes from an opened project. # Because of the serialization the self.tools list on project save, the dict keys (members of self.tools @@ -3321,10 +3346,11 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): return def on_offset_value_edited(self): - ''' - This will save the offset_value into self.tools storage whenever the oofset value is edited + """ + This will save the offset_value into self.tools storage whenever the offset value is edited :return: - ''' + """ + for current_row in self.ui.geo_tools_table.selectedItems(): # sometime the header get selected and it has row number -1 # we don't want to do anything with the header :) @@ -3367,7 +3393,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): # works for Entry try: self.ui.grid3.itemAt(i).widget().editingFinished.connect(self.gui_form_to_storage) - except: + except Exception as e3: pass for row in range(self.ui.geo_tools_table.rowCount()): @@ -3405,56 +3431,56 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): isinstance(self.ui.grid3.itemAt(i).widget(), IntEntry) or \ isinstance(self.ui.grid3.itemAt(i).widget(), FCEntry): self.ui.grid3.itemAt(i).widget().editingFinished.disconnect() - except: + except Exception as e: pass try: for row in range(self.ui.geo_tools_table.rowCount()): for col in [2, 3, 4]: self.ui.geo_tools_table.cellWidget(row, col).currentIndexChanged.disconnect() - except: + except Exception as e: pass # I use lambda's because the connected functions have parameters that could be used in certain scenarios try: self.ui.addtool_btn.clicked.disconnect() - except: + except Exception as e: pass try: self.ui.copytool_btn.clicked.disconnect() - except: + except Exception as e: pass try: self.ui.deltool_btn.clicked.disconnect() - except: + except Exception as e: pass try: self.ui.geo_tools_table.currentItemChanged.disconnect() - except: + except Exception as e: pass try: self.ui.geo_tools_table.itemChanged.disconnect() - except: + except Exception as e: pass try: self.ui.tool_offset_entry.editingFinished.disconnect() - except: + except Exception as e: pass for row in range(self.ui.geo_tools_table.rowCount()): try: self.ui.geo_tools_table.cellWidget(row, 6).clicked.disconnect() - except: + except Exception as e: pass try: self.ui.plot_cb.stateChanged.disconnect() - except: + except Exception as e: pass def on_tool_add(self, dia=None): @@ -3475,7 +3501,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): tooldia = float(self.ui.addtool_entry.get_value().replace(',', '.')) except ValueError: change_message = True - tooldia = float(self.app.defaults["geometry_cnctooldia"]) + tooldia = self.options["cnctooldia"][0] if tooldia is None: self.build_ui() @@ -3541,6 +3567,8 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): } }) + self.tools[self.tooluid]['data']['name'] = self.options['name'] + self.ui.tool_offset_entry.hide() self.ui.tool_offset_lbl.hide() @@ -3772,7 +3800,11 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): # populate the form with the data from the tool associated with the row parameter try: - tooluid = int(self.ui.geo_tools_table.item(current_row, 5).text()) + item = self.ui.geo_tools_table.item(current_row, 5) + if item is not None: + tooluid = int(item.text()) + else: + return except Exception as e: log.debug("Tool missing. Add a tool in Geo Tool Table. %s" % str(e)) return @@ -3780,8 +3812,12 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): # update the form with the V-Shape fields if V-Shape selected in the geo_tool_table # also modify the Cut Z form entry to reflect the calculated Cut Z from values got from V-Shape Fields try: - tool_type_txt = self.ui.geo_tools_table.cellWidget(current_row, 4).currentText() - self.ui_update_v_shape(tool_type_txt=tool_type_txt) + item = self.ui.geo_tools_table.cellWidget(current_row, 4) + if item is not None: + tool_type_txt = item.currentText() + self.ui_update_v_shape(tool_type_txt=tool_type_txt) + else: + return except Exception as e: log.debug("Tool missing. Add a tool in Geo Tool Table. %s" % str(e)) return @@ -4137,7 +4173,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): self.ui.cncfeedrate_rapid_entry.hide() def on_generatecnc_button_click(self, *args): - + log.debug("Generating CNCJob from Geometry ...") self.app.report_usage("geometry_on_generatecnc_button") self.read_form() @@ -5291,6 +5327,7 @@ class FlatCAMCNCjob(FlatCAMObj, CNCjob): else: self.ui.cnc_tools_table.hide() + self.units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().upper() offset = 0 tool_idx = 0 @@ -5891,13 +5928,19 @@ class FlatCAMCNCjob(FlatCAMObj, CNCjob): self.shapes.clear(update=True) self.annotation.clear(update=True) + if self.ui.annotation_cb.get_value() and self.ui.plot_cb.get_value(): + self.app.plotcanvas.text_collection.enabled = True + else: + self.app.plotcanvas.text_collection.enabled = False + def on_annotation_change(self): if self.ui.annotation_cb.get_value(): self.app.plotcanvas.text_collection.enabled = True else: self.app.plotcanvas.text_collection.enabled = False - kind = self.ui.cncplot_method_combo.get_value() - self.plot(kind=kind) + # kind = self.ui.cncplot_method_combo.get_value() + # self.plot(kind=kind) + self.annotation.redraw() def convert_units(self, units): factor = CNCjob.convert_units(self, units) diff --git a/ObjectCollection.py b/ObjectCollection.py index 9e23279d..fddc19a4 100644 --- a/ObjectCollection.py +++ b/ObjectCollection.py @@ -263,10 +263,9 @@ class ObjectCollection(QtCore.QAbstractItemModel): # ## GUI Events self.view.selectionModel().selectionChanged.connect(self.on_list_selection_change) - self.view.activated.connect(self.on_item_activated) - # self.view.keyPressed.connect(self.on_key) + # self.view.activated.connect(self.on_item_activated) self.view.keyPressed.connect(self.app.ui.keyPressEvent) - self.view.clicked.connect(self.on_mouse_down) + # self.view.clicked.connect(self.on_mouse_down) self.view.customContextMenuRequested.connect(self.on_menu_request) self.click_modifier = None @@ -398,8 +397,9 @@ class ObjectCollection(QtCore.QAbstractItemModel): def setData(self, index, data, role=None): if index.isValid(): obj = index.internalPointer().obj + if obj: - old_name = obj.options['name'] + old_name = deepcopy(obj.options['name']) new_name = str(data) if old_name != new_name and new_name != '': # rename the object diff --git a/README.md b/README.md index 2d4940f3..f5e299c7 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,54 @@ CAD program, and create G-Code for Isolation routing. ================================================= +23.06.2019 + +- fixes issues with units conversion when the tool diameters are a list of comma separated values (NCC Tool, SolderPaste Tool and Geometry Object) +- fixed a "typo" kind of bug in SolderPaste Tool +- RELEASE 8.919 + +22.06.2019 + +- some GUI layout optimizations in Edit -> Preferences +- added the possibility for multiple tool diameters in the Edit -> Preferences -> Geometry -> Geometry General -> Tool dia separated by comma +- fixed scaling for the multiple tool diameters in Edit -> Preferences -> Geometry -> Geometry General -> Tool dia, for NCC tools more than 2 and for Solderpaste nozzles more than 2 +- fixed bug in CNCJob where the CNC Tools table will show always only 2 decimals for Tool diameters regardless of the current measuring units +- made the tools diameters decimals in case of INCH FlatCAM units to be 4 instead of 3 +- fixed bug in updating Grid values whenever toggling the FlatCAM units and the X, Y Grid values are linked, bugs which caused the Y value to be scaled incorrectly +- set the decimals for Grid values to be set to 6 if the units of FlatCAM is INCH and to set to 4 if FlatCAM units are METRIC +- updated translations +- updated the Russian translation from 51% complete to 69% complete using the Yandex translation engine +- fixed recently introduced bug in milling drills/slots functions +- moved Substract Tool from Menu -> Edit -> Conversions to Menu -> Tool +- fixed bug in Gerber isolation (Geometry expects now a value in string format and not float) +- fixed bug in Paint tool: now it is possible to paint geometry generated by External Isolation (or Internal isolation) +- fixed bug in editing a multigeo Geometry object if previously a tool was deleted +- optimized the toggle of annotations; now there is no need to replot the entire CNCJob object too on toggling of the annotations +- on toggling off the plot visibility the annotations are turned off too +- updated translations; Russian translation at 76% (using Yandex translator engine - needs verification by a native speaker of Russian) + +20.06.2019 + +- fixed Scale and Buffer Tool in Gerber Editor +- fixed Editor Transform Tool in Gerber Editor +- added a message in the status bar when copying coordinates to clipboard with SHIFT + LMB click combo +- languages update + +19.06.2019 + +- milling an Excellon file (holes and/or slots) will now transfer the chosen milling bit diameter to the resulting Geometry object + +17.06.2019 + +- fixed bug where for Geometry objects after a successful object rename done in the Object collection view (Project tab), deselect the object and reselect it and then in the Selected tab the name is not the new one but the old one +- for Geometry objects, adding a new tool to the Tools table after a successful rename will now store the new name in the tool data + +15.06.2019 + +- fixed bug in Gerber parser that made the Gerber files generated by Altium Designer 18 not to be loaded +- fixed bug in Gerber editor - on multiple edits on the same object, the aperture size and dims were continuously multiplied due of the file units not being updated +- restored the FlatCAMObj.visible() to a non-threaded default + 11.06.2019 - fixed the Edit -> Conversion -> Join ... functions (merge() functions) diff --git a/camlib.py b/camlib.py index 33c80b7d..47d787e7 100644 --- a/camlib.py +++ b/camlib.py @@ -112,9 +112,9 @@ class Geometry(object): self.geo_steps_per_circle = geo_steps_per_circle - if geo_steps_per_circle is None: - geo_steps_per_circle = int(Geometry.defaults["geo_steps_per_circle"]) - self.geo_steps_per_circle = geo_steps_per_circle + # if geo_steps_per_circle is None: + # geo_steps_per_circle = int(Geometry.defaults["geo_steps_per_circle"]) + # self.geo_steps_per_circle = geo_steps_per_circle def make_index(self): self.flatten() @@ -1849,6 +1849,8 @@ class ApertureMacro: class Gerber (Geometry): """ + Here it is done all the Gerber parsing. + **ATTRIBUTES** * ``apertures`` (dict): The keys are names/identifiers of each aperture. @@ -2452,7 +2454,6 @@ class Gerber (Geometry): # --- Buffered --- try: log.debug("Bare op-code %d." % current_operation_code) - geo_dict = dict() flash = self.create_flash_geometry( Point(current_x, current_y), self.apertures[current_aperture], @@ -2467,7 +2468,7 @@ class Gerber (Geometry): else: geo_dict['solid'] = flash - if last_path_aperture not in self.apertures: + if current_aperture not in self.apertures: self.apertures[current_aperture] = dict() if 'geometry' not in self.apertures[current_aperture]: self.apertures[current_aperture]['geometry'] = [] @@ -3598,6 +3599,8 @@ class Gerber (Geometry): class Excellon(Geometry): """ + Here it is done all the Excellon parsing. + *ATTRIBUTES* * ``tools`` (dict): The key is the tool name and the value is @@ -5350,7 +5353,7 @@ class CNCjob(Geometry): if self.units == 'MM': current_tooldia = float('%.2f' % float(exobj.tools[tool]["C"])) else: - current_tooldia = float('%.3f' % float(exobj.tools[tool]["C"])) + current_tooldia = float('%.4f' % float(exobj.tools[tool]["C"])) # TODO apply offset only when using the GUI, for TclCommand this will create an error # because the values for Z offset are created in build_ui() @@ -5448,7 +5451,7 @@ class CNCjob(Geometry): if self.units == 'MM': current_tooldia = float('%.2f' % float(exobj.tools[tool]["C"])) else: - current_tooldia = float('%.3f' % float(exobj.tools[tool]["C"])) + current_tooldia = float('%.4f' % float(exobj.tools[tool]["C"])) # TODO apply offset only when using the GUI, for TclCommand this will create an error # because the values for Z offset are created in build_ui() @@ -5504,7 +5507,7 @@ class CNCjob(Geometry): if self.units == 'MM': current_tooldia = float('%.2f' % float(exobj.tools[tool]["C"])) else: - current_tooldia = float('%.3f' % float(exobj.tools[tool]["C"])) + current_tooldia = float('%.4f' % float(exobj.tools[tool]["C"])) # TODO apply offset only when using the GUI, for TclCommand this will create an error # because the values for Z offset are created in build_ui() @@ -6139,7 +6142,7 @@ class CNCjob(Geometry): gcode += self.doformat(p.down_z_start_code) gcode += self.doformat(p.spindle_fwd_code) # Start dispensing gcode += self.doformat(p.dwell_fwd_code) - gcode += self.doformat(p.z_feedrate_dispense_code) + gcode += self.doformat(p.feedrate_z_dispense_code) gcode += self.doformat(p.lift_z_dispense_code) gcode += self.doformat(p.feedrate_xy_code) @@ -6158,7 +6161,7 @@ class CNCjob(Geometry): elif type(geometry) == Point: gcode += self.doformat(p.linear_code, x=path[0][0], y=path[0][1]) # Move to first point - gcode += self.doformat(p.z_feedrate_dispense_code) + gcode += self.doformat(p.feedrate_z_dispense_code) gcode += self.doformat(p.down_z_start_code) gcode += self.doformat(p.spindle_fwd_code) # Start dispensing gcode += self.doformat(p.dwell_fwd_code) diff --git a/flatcamEditors/FlatCAMExcEditor.py b/flatcamEditors/FlatCAMExcEditor.py index d7e56db0..f2cfdab7 100644 --- a/flatcamEditors/FlatCAMExcEditor.py +++ b/flatcamEditors/FlatCAMExcEditor.py @@ -1209,7 +1209,7 @@ class FlatCAMExcEditor(QtCore.QObject): for drill in self.exc_obj.drills: if drill['tool'] in self.exc_obj.tools: if self.units == 'IN': - tool_dia = float('%.3f' % self.exc_obj.tools[drill['tool']]['C']) + tool_dia = float('%.4f' % self.exc_obj.tools[drill['tool']]['C']) else: tool_dia = float('%.2f' % self.exc_obj.tools[drill['tool']]['C']) @@ -1238,7 +1238,7 @@ class FlatCAMExcEditor(QtCore.QObject): # but use the real order found in the exc_obj.tools for k, v in self.exc_obj.tools.items(): if self.units == 'IN': - tool_dia = float('%.3f' % v['C']) + tool_dia = float('%.4f' % v['C']) else: tool_dia = float('%.2f' % v['C']) self.tool2tooldia[int(k)] = tool_dia @@ -1324,7 +1324,7 @@ class FlatCAMExcEditor(QtCore.QObject): if self.units == 'MM': dia = QtWidgets.QTableWidgetItem('%.2f' % self.olddia_newdia[tool_no]) else: - dia = QtWidgets.QTableWidgetItem('%.3f' % self.olddia_newdia[tool_no]) + dia = QtWidgets.QTableWidgetItem('%.4f' % self.olddia_newdia[tool_no]) dia.setFlags(QtCore.Qt.ItemIsEnabled) diff --git a/flatcamEditors/FlatCAMGeoEditor.py b/flatcamEditors/FlatCAMGeoEditor.py index bec802a1..dcbf35c3 100644 --- a/flatcamEditors/FlatCAMGeoEditor.py +++ b/flatcamEditors/FlatCAMGeoEditor.py @@ -3059,8 +3059,11 @@ class FlatCAMGeoEditor(QtCore.QObject): val = float(self.app.ui.grid_gap_x_entry.get_value()) except ValueError: return + + units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().upper() + dec = 6 if units == 'IN' else 4 if self.app.ui.grid_gap_link_cb.isChecked(): - self.app.ui.grid_gap_y_entry.set_value(val) + self.app.ui.grid_gap_y_entry.set_value(val, decimals=dec) self.app.ui.grid_gap_x_entry.setValidator(QtGui.QDoubleValidator()) self.app.ui.grid_gap_x_entry.textChanged.connect( @@ -3999,7 +4002,7 @@ class FlatCAMGeoEditor(QtCore.QObject): def update_options(self, obj): if self.paint_tooldia: - obj.options['cnctooldia'] = self.paint_tooldia + obj.options['cnctooldia'] = deepcopy(str(self.paint_tooldia)) self.paint_tooldia = None return True else: diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 53f454e8..43c84084 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -3445,7 +3445,6 @@ class FlatCAMGrbEditor(QtCore.QObject): file_units = self.gerber_obj.gerber_units if self.gerber_obj.gerber_units else 'IN' app_units = self.app.defaults['units'] - self.conversion_factor = 25.4 if file_units == 'IN' else (1 / 25.4) if file_units != app_units else 1 # Hide original geometry @@ -3478,6 +3477,7 @@ class FlatCAMGrbEditor(QtCore.QObject): conv_apertures[apid][key] = self.gerber_obj.apertures[apid][key] self.gerber_obj.apertures = conv_apertures + self.gerber_obj.gerber_units = app_units # ############################################################# ## # APPLY CLEAR_GEOMETRY on the SOLID_GEOMETRY @@ -3575,7 +3575,6 @@ class FlatCAMGrbEditor(QtCore.QObject): :return: None """ - new_grb_name = self.edited_obj_name # if the 'delayed plot' malfunctioned stop the QTimer @@ -3710,6 +3709,7 @@ class FlatCAMGrbEditor(QtCore.QObject): grb_obj.source_file = [] grb_obj.multigeo = False grb_obj.follow = False + grb_obj.gerber_units = app_obj.defaults['units'] try: grb_obj.create_geometry() @@ -3890,7 +3890,17 @@ class FlatCAMGrbEditor(QtCore.QObject): "%.4f " % (0, 0)) # Selection with left mouse button - if self.active_tool is not None and event.button is 1: + if self.active_tool is not None: + modifiers = QtWidgets.QApplication.keyboardModifiers() + + # If the SHIFT key is pressed when LMB is clicked then the coordinates are copied to clipboard + if modifiers == QtCore.Qt.ShiftModifier: + self.app.clipboard.setText( + self.app.defaults["global_point_clipboard_format"] % (self.pos[0], self.pos[1]) + ) + self.app.inform.emit(_("[success] Coordinates copied to clipboard.")) + return + # Dispatch event to active_tool self.active_tool.click(self.app.geo_editor.snap(self.pos[0], self.pos[1])) @@ -4406,19 +4416,13 @@ class FlatCAMGrbEditor(QtCore.QObject): if geom_el in selection: geometric_data = geom_el.geo buffered_geom_el = dict() - if 'solid' in geom_el: - buffered_geom_el['solid'] = DrawToolShape( - geometric_data['solid'].buffer(buff_value, join_style=join_style) - ) - if 'follow' in geom_el: - buffered_geom_el['follow'] = DrawToolShape( - geometric_data['follow'].buffer(buff_value, join_style=join_style) - ) - if 'clear' in geom_el: - buffered_geom_el['clear'] = DrawToolShape( - geometric_data['clear'].buffer(buff_value, join_style=join_style) - ) - return buffered_geom_el + if 'solid' in geometric_data: + buffered_geom_el['solid'] = geometric_data['solid'].buffer(buff_value, join_style=join_style) + if 'follow' in geometric_data: + buffered_geom_el['follow'] = geometric_data['follow'].buffer(buff_value, join_style=join_style) + if 'clear' in geometric_data: + buffered_geom_el['clear'] = geometric_data['clear'].buffer(buff_value, join_style=join_style) + return DrawToolShape(buffered_geom_el) else: return geom_el @@ -4435,9 +4439,10 @@ class FlatCAMGrbEditor(QtCore.QObject): temp_storage = deepcopy(buffer_recursion(self.storage_dict[apid]['geometry'], self.selected)) self.storage_dict[apid]['geometry'] = [] self.storage_dict[apid]['geometry'] = temp_storage - except Exception as e: - log.debug("FlatCAMGrbEditor.buffer() --> %s" % str(e)) + log.debug("FlatCAMGrbEditor.buffer() --> %s\n%s" % str(e)) + self.app.inform.emit(_("[ERROR_NOTCL] Failed.\n%s") % str(traceback.print_exc())) + return self.plot_all() self.app.inform.emit(_("[success] Done. Buffer Tool completed.")) @@ -4467,17 +4472,20 @@ class FlatCAMGrbEditor(QtCore.QObject): if geom_el in selection: geometric_data = geom_el.geo scaled_geom_el = dict() - if 'solid' in geom_el: - scaled_geom_el['solid'] = DrawToolShape( - affinity.scale(geometric_data['solid'], scale_factor, scale_factor, origin='center')) - if 'follow' in geom_el: - scaled_geom_el['follow'] = DrawToolShape( - affinity.scale(geometric_data['follow'], scale_factor, scale_factor, origin='center')) - if 'clear' in geom_el: - scaled_geom_el['clear'] = DrawToolShape( - affinity.scale(geometric_data['clear'], scale_factor, scale_factor, origin='center')) + if 'solid' in geometric_data: + scaled_geom_el['solid'] = affinity.scale( + geometric_data['solid'], scale_factor, scale_factor, origin='center' + ) + if 'follow' in geometric_data: + scaled_geom_el['follow'] = affinity.scale( + geometric_data['follow'], scale_factor, scale_factor, origin='center' + ) + if 'clear' in geometric_data: + scaled_geom_el['clear'] = affinity.scale( + geometric_data['clear'], scale_factor, scale_factor, origin='center' + ) - return scaled_geom_el + return DrawToolShape(scaled_geom_el) else: return geom_el @@ -5229,9 +5237,10 @@ class TransformEditorTool(FlatCAMTool): try: # first get a bounding box to fit all; we use only the 'solids' as those should provide the biggest # bounding box - for el in elem_list: + for el_shape in elem_list: + el = el_shape.geo if 'solid' in el: - xmin, ymin, xmax, ymax = el['solid'].bounds() + xmin, ymin, xmax, ymax = el['solid'].bounds xminlist.append(xmin) yminlist.append(ymin) xmaxlist.append(xmax) @@ -5247,13 +5256,14 @@ class TransformEditorTool(FlatCAMTool): px = 0.5 * (xminimal + xmaximal) py = 0.5 * (yminimal + ymaximal) - for sel_el in elem_list: + for sel_el_shape in elem_list: + sel_el = sel_el_shape.geo if 'solid' in sel_el: - sel_el['solid'].rotate(-num, point=(px, py)) + sel_el['solid'] = affinity.rotate(sel_el['solid'], angle=-num, origin=(px, py)) if 'follow' in sel_el: - sel_el['follow'].rotate(-num, point=(px, py)) + sel_el['follow'] = affinity.rotate(sel_el['follow'], angle=-num, origin=(px, py)) if 'clear' in sel_el: - sel_el['clear'].rotate(-num, point=(px, py)) + sel_el['clear'] = affinity.rotate(sel_el['clear'], angle=-num, origin=(px, py)) self.draw_app.plot_all() self.app.inform.emit(_("[success] Done. Rotate completed.")) @@ -5287,9 +5297,10 @@ class TransformEditorTool(FlatCAMTool): else: # first get a bounding box to fit all; we use only the 'solids' as those should provide the biggest # bounding box - for el in elem_list: + for el_shape in elem_list: + el = el_shape.geo if 'solid' in el: - xmin, ymin, xmax, ymax = el['solid'].bounds() + xmin, ymin, xmax, ymax = el['solid'].bounds xminlist.append(xmin) yminlist.append(ymin) xmaxlist.append(xmax) @@ -5307,22 +5318,23 @@ class TransformEditorTool(FlatCAMTool): self.app.progress.emit(20) # execute mirroring - for sel_el in elem_list: + for sel_el_shape in elem_list: + sel_el = sel_el_shape.geo if axis is 'X': if 'solid' in sel_el: - sel_el['solid'].mirror('X', (px, py)) + sel_el['solid'] = affinity.scale(sel_el['solid'], xfact=1, yfact=-1, origin=(px, py)) if 'follow' in sel_el: - sel_el['follow'].mirror('X', (px, py)) + sel_el['follow'] = affinity.scale(sel_el['follow'], xfact=1, yfact=-1, origin=(px, py)) if 'clear' in sel_el: - sel_el['clear'].mirror('X', (px, py)) + sel_el['clear'] = affinity.scale(sel_el['clear'], xfact=1, yfact=-1, origin=(px, py)) self.app.inform.emit(_('[success] Flip on the Y axis done ...')) elif axis is 'Y': if 'solid' in sel_el: - sel_el['solid'].mirror('Y', (px, py)) + sel_el['solid'] = affinity.scale(sel_el['solid'], xfact=-1, yfact=1, origin=(px, py)) if 'follow' in sel_el: - sel_el['follow'].mirror('Y', (px, py)) + sel_el['follow'] = affinity.scale(sel_el['follow'], xfact=-1, yfact=1, origin=(px, py)) if 'clear' in sel_el: - sel_el['clear'].mirror('Y', (px, py)) + sel_el['clear'] = affinity.scale(sel_el['clear'], xfact=-1, yfact=1, origin=(px, py)) self.app.inform.emit(_('[success] Flip on the X axis done ...')) self.draw_app.plot_all() self.app.progress.emit(100) @@ -5350,9 +5362,10 @@ class TransformEditorTool(FlatCAMTool): try: # first get a bounding box to fit all; we use only the 'solids' as those should provide the biggest # bounding box - for el in elem_list: + for el_shape in elem_list: + el = el_shape.geo if 'solid' in el: - xmin, ymin, xmax, ymax = el['solid'].bounds() + xmin, ymin, xmax, ymax = el['solid'].bounds xminlist.append(xmin) yminlist.append(ymin) @@ -5362,21 +5375,22 @@ class TransformEditorTool(FlatCAMTool): self.app.progress.emit(20) - for sel_el in elem_list: + for sel_el_shape in elem_list: + sel_el = sel_el_shape.geo if axis is 'X': if 'solid' in sel_el: - sel_el['solid'].skew(num, 0, point=(xminimal, yminimal)) + sel_el['solid'] = affinity.skew(sel_el['solid'], num, 0, origin=(xminimal, yminimal)) if 'follow' in sel_el: - sel_el['follow'].skew(num, 0, point=(xminimal, yminimal)) + sel_el['follow'] = affinity.skew(sel_el['follow'], num, 0, origin=(xminimal, yminimal)) if 'clear' in sel_el: - sel_el['clear'].skew(num, 0, point=(xminimal, yminimal)) + sel_el['clear'] = affinity.skew(sel_el['clear'], num, 0, origin=(xminimal, yminimal)) elif axis is 'Y': if 'solid' in sel_el: - sel_el['solid'].skew(0, num, point=(xminimal, yminimal)) + sel_el['solid'] = affinity.skew(sel_el['solid'], 0, num, origin=(xminimal, yminimal)) if 'follow' in sel_el: - sel_el['follow'].skew(0, num, point=(xminimal, yminimal)) + sel_el['follow'] = affinity.skew(sel_el['follow'], 0, num, origin=(xminimal, yminimal)) if 'clear' in sel_el: - sel_el['clear'].skew(0, num, point=(xminimal, yminimal)) + sel_el['clear'] = affinity.skew(sel_el['clear'], 0, num, origin=(xminimal, yminimal)) self.draw_app.plot_all() self.app.inform.emit(_('[success] Skew on the %s axis done ...') % str(axis)) @@ -5409,9 +5423,10 @@ class TransformEditorTool(FlatCAMTool): try: # first get a bounding box to fit all; we use only the 'solids' as those should provide the biggest # bounding box - for el in elem_list: + for el_shape in elem_list: + el = el_shape.geo if 'solid' in el: - xmin, ymin, xmax, ymax = el['solid'].bounds() + xmin, ymin, xmax, ymax = el['solid'].bounds xminlist.append(xmin) yminlist.append(ymin) xmaxlist.append(xmax) @@ -5432,13 +5447,14 @@ class TransformEditorTool(FlatCAMTool): px = 0 py = 0 - for sel_el in elem_list: + for sel_el_shape in elem_list: + sel_el = sel_el_shape.geo if 'solid' in sel_el: - sel_el['solid'].scale(xfactor, yfactor, point=(px, py)) + sel_el['solid'] = affinity.scale(sel_el['solid'], xfactor, yfactor, origin=(px, py)) if 'follow' in sel_el: - sel_el['follow'].scale(xfactor, yfactor, point=(px, py)) + sel_el['follow'] = affinity.scale(sel_el['follow'], xfactor, yfactor, origin=(px, py)) if 'clear' in sel_el: - sel_el['clear'].scale(xfactor, yfactor, point=(px, py)) + sel_el['clear'] = affinity.scale(sel_el['clear'], xfactor, yfactor, origin=(px, py)) self.draw_app.plot_all() self.app.inform.emit(_('[success] Scale on the %s axis done ...') % str(axis)) @@ -5464,21 +5480,22 @@ class TransformEditorTool(FlatCAMTool): try: self.app.progress.emit(20) - for sel_el in elem_list: + for sel_el_shape in elem_list: + sel_el = sel_el_shape.geo if axis is 'X': if 'solid' in sel_el: - sel_el['solid'].offset((num, 0)) + sel_el['solid'] = affinity.translate(sel_el['solid'], num, 0) if 'follow' in sel_el: - sel_el['follow'].offset((num, 0)) + sel_el['follow'] = affinity.translate(sel_el['follow'], num, 0) if 'clear' in sel_el: - sel_el['clear'].offset((num, 0)) + sel_el['clear'] = affinity.translate(sel_el['clear'], num, 0) elif axis is 'Y': if 'solid' in sel_el: - sel_el['solid'].offset((0, num)) + sel_el['solid'] = affinity.translate(sel_el['solid'], 0, num) if 'follow' in sel_el: - sel_el['follow'].offset((0, num)) + sel_el['follow'] = affinity.translate(sel_el['follow'], 0, num) if 'clear' in sel_el: - sel_el['clear'].offset((0, num)) + sel_el['clear'] = affinity.translate(sel_el['clear'], 0, num) self.draw_app.plot_all() self.app.inform.emit(_('[success] Offset on the %s axis done ...') % str(axis)) diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index 580b2d72..51feb37f 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -3330,14 +3330,14 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): self.gridx_label.setToolTip( _("This is the Grid snap value on X axis.") ) - self.gridx_entry = LengthEntry() + self.gridx_entry = FCEntry3() # Grid Y Entry self.gridy_label = QtWidgets.QLabel(_('Grid Y value:')) self.gridy_label.setToolTip( _("This is the Grid snap value on Y axis.") ) - self.gridy_entry = LengthEntry() + self.gridy_entry = FCEntry3() # Snap Max Entry self.snap_max_label = QtWidgets.QLabel(_('Snap Max:')) @@ -4096,7 +4096,7 @@ class GerberOptPrefGroupUI(OptionsGroupUI): self.combine_passes_cb.setToolTip( _("Combine all passes into one object") ) - grid0.addWidget(self.combine_passes_cb, 4, 0) + grid0.addWidget(self.combine_passes_cb, 4, 0, 1, 2) # ## Clear non-copper regions self.clearcopper_label = QtWidgets.QLabel(_("Clear non-copper:")) @@ -4468,8 +4468,8 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): hlay2.addWidget(self.excellon_format_lower_mm_entry, QtCore.Qt.AlignLeft) hlay2.addStretch() - hlay3 = QtWidgets.QHBoxLayout() - self.layout.addLayout(hlay3) + grid2 = QtWidgets.QGridLayout() + self.layout.addLayout(grid2) self.excellon_zeros_label = QtWidgets.QLabel(_('Default Zeros:')) self.excellon_zeros_label.setAlignment(QtCore.Qt.AlignLeft) @@ -4480,7 +4480,7 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): "If TZ is checked then Trailing Zeros are kept\n" "and Leading Zeros are removed.") ) - hlay3.addWidget(self.excellon_zeros_label) + grid2.addWidget(self.excellon_zeros_label, 0, 0) self.excellon_zeros_radio = RadioSet([{'label': 'LZ', 'value': 'L'}, {'label': 'TZ', 'value': 'T'}]) @@ -4493,11 +4493,7 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): "If TZ is checked then Trailing Zeros are kept\n" "and Leading Zeros are removed.") ) - hlay3.addStretch() - hlay3.addWidget(self.excellon_zeros_radio, QtCore.Qt.AlignRight) - - hlay4 = QtWidgets.QHBoxLayout() - self.layout.addLayout(hlay4) + grid2.addWidget(self.excellon_zeros_radio, 0, 1) self.excellon_units_label = QtWidgets.QLabel(_('Default Units:')) self.excellon_units_label.setAlignment(QtCore.Qt.AlignLeft) @@ -4508,7 +4504,7 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): "Some Excellon files don't have an header\n" "therefore this parameter will be used.") ) - hlay4.addWidget(self.excellon_units_label) + grid2.addWidget(self.excellon_units_label, 1, 0) self.excellon_units_radio = RadioSet([{'label': 'INCH', 'value': 'INCH'}, {'label': 'MM', 'value': 'METRIC'}]) @@ -4517,27 +4513,14 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): "Some Excellon files don't have an header\n" "therefore this parameter will be used.") ) - hlay4.addStretch() - hlay4.addWidget(self.excellon_units_radio, QtCore.Qt.AlignRight) + grid2.addWidget(self.excellon_units_radio, 1, 1) - hlay5 = QtWidgets.QVBoxLayout() - self.layout.addLayout(hlay5) - - self.empty_label = QtWidgets.QLabel("") - hlay5.addWidget(self.empty_label) - - hlay6 = QtWidgets.QVBoxLayout() - self.layout.addLayout(hlay6) + grid2.addWidget(QtWidgets.QLabel(""), 2, 0) self.excellon_general_label = QtWidgets.QLabel(_("Excellon Optimization:")) - hlay6.addWidget(self.excellon_general_label) - - # Create a form layout for the Excellon general settings - form_box_excellon = QtWidgets.QFormLayout() - hlay6.addLayout(form_box_excellon) + grid2.addWidget(self.excellon_general_label, 3, 0, 1, 2) self.excellon_optimization_label = QtWidgets.QLabel(_('Algorithm: ')) - self.excellon_optimization_label.setAlignment(QtCore.Qt.AlignLeft) self.excellon_optimization_label.setToolTip( _("This sets the optimization type for the Excellon drill path.\n" "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" @@ -4548,6 +4531,7 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): "If DISABLED, then FlatCAM works in 32bit mode and it uses \n" "Travelling Salesman algorithm for path optimization.") ) + grid2.addWidget(self.excellon_optimization_label, 4, 0) self.excellon_optimization_radio = RadioSet([{'label': 'MH', 'value': 'M'}, {'label': 'Basic', 'value': 'B'}]) @@ -4561,8 +4545,7 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): "If DISABLED, then FlatCAM works in 32bit mode and it uses \n" "Travelling Salesman algorithm for path optimization.") ) - - form_box_excellon.addRow(self.excellon_optimization_label, self.excellon_optimization_radio) + grid2.addWidget(self.excellon_optimization_radio, 4, 1) self.optimization_time_label = QtWidgets.QLabel(_('Optimization Time: ')) self.optimization_time_label.setAlignment(QtCore.Qt.AlignLeft) @@ -4573,10 +4556,11 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): "In seconds.") ) + grid2.addWidget(self.optimization_time_label, 5, 0) self.optimization_time_entry = IntEntry() self.optimization_time_entry.setValidator(QtGui.QIntValidator(0, 999)) - form_box_excellon.addRow(self.optimization_time_label, self.optimization_time_entry) + grid2.addWidget(self.optimization_time_entry, 5, 1) current_platform = platform.architecture()[0] if current_platform == '64bit': @@ -4744,25 +4728,23 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): self.mill_hole_label.setToolTip( _("Create Geometry for milling holes.") ) - self.layout.addWidget(self.mill_hole_label) + grid2.addWidget(excellon_gcode_type_label, 11, 0, 1, 2) - grid3 = QtWidgets.QGridLayout() - self.layout.addLayout(grid3) tdlabel = QtWidgets.QLabel(_('Drill Tool dia:')) tdlabel.setToolTip( _("Diameter of the cutting tool.") ) - grid3.addWidget(tdlabel, 0, 0) + grid2.addWidget(tdlabel, 12, 0) self.tooldia_entry = LengthEntry() - grid3.addWidget(self.tooldia_entry, 0, 1) + grid2.addWidget(self.tooldia_entry, 12, 1) stdlabel = QtWidgets.QLabel(_('Slot Tool dia:')) stdlabel.setToolTip( _("Diameter of the cutting tool\n" "when milling slots.") ) - grid3.addWidget(stdlabel, 1, 0) + grid2.addWidget(stdlabel, 13, 0) self.slot_tooldia_entry = LengthEntry() - grid3.addWidget(self.slot_tooldia_entry, 1, 1) + grid2.addWidget(self.slot_tooldia_entry, 13, 1) grid4 = QtWidgets.QGridLayout() self.layout.addLayout(grid4) @@ -5162,6 +5144,7 @@ class GeometryGenPrefGroupUI(OptionsGroupUI): grid0 = QtWidgets.QGridLayout() self.layout.addLayout(grid0) + # Number of circle steps for circular aperture linear approximation self.circle_steps_label = QtWidgets.QLabel(_("Circle Steps:")) self.circle_steps_label.setToolTip( @@ -5173,21 +5156,17 @@ class GeometryGenPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.circle_steps_entry, 1, 1) # Tools - self.tools_label = QtWidgets.QLabel(_("Tools")) - self.layout.addWidget(self.tools_label) - - grid0_b = QtWidgets.QGridLayout() - self.layout.addLayout(grid0_b) + self.tools_label = QtWidgets.QLabel(_("Tools:")) + grid0.addWidget(self.tools_label, 2, 0, 1, 2) # Tooldia - tdlabel = QtWidgets.QLabel(_('Tool dia: ')) + tdlabel = QtWidgets.QLabel(_('Tool dia:')) tdlabel.setToolTip( - _("The diameter of the cutting\n" - "tool..") + _("Diameters of the cutting tools, separated by ','") ) - grid0_b.addWidget(tdlabel, 0, 0) - self.cnctooldia_entry = LengthEntry() - grid0_b.addWidget(self.cnctooldia_entry, 0, 1) + grid0.addWidget(tdlabel, 3, 0) + self.cnctooldia_entry = FCEntry() + grid0.addWidget(self.cnctooldia_entry, 3, 1) self.layout.addStretch() diff --git a/flatcamGUI/GUIElements.py b/flatcamGUI/GUIElements.py index be90969a..ea306902 100644 --- a/flatcamGUI/GUIElements.py +++ b/flatcamGUI/GUIElements.py @@ -190,7 +190,7 @@ class LengthEntry(QtWidgets.QLineEdit): units = raw[-2:] units = self.scales[self.output_units][units.upper()] value = raw[:-2] - return float(eval(value))*units + return float(eval(value))* units except IndexError: value = raw return float(eval(value)) @@ -390,12 +390,40 @@ class FCEntry2(FCEntry): def on_edit_finished(self): self.clearFocus() - def set_value(self, val): + def set_value(self, val, decimals=4): try: fval = float(val) except ValueError: return - self.setText('%.4f' % fval) + + self.setText('%.*f' % (decimals, fval)) + + +class FCEntry3(FCEntry): + def __init__(self, parent=None): + super(FCEntry3, self).__init__(parent) + self.readyToEdit = True + self.editingFinished.connect(self.on_edit_finished) + + def on_edit_finished(self): + self.clearFocus() + + def set_value(self, val, decimals=4): + try: + fval = float(val) + except ValueError: + return + + self.setText('%.*f' % (decimals, fval)) + + def get_value(self): + value = str(self.text()).strip(' ') + + try: + return float(eval(value)) + except Exception as e: + log.warning("Could not parse value in entry: %s" % str(e)) + return None class EvalEntry(QtWidgets.QLineEdit): @@ -680,7 +708,7 @@ class FCTextAreaExtended(QtWidgets.QTextEdit): if character == "#": # delete # self.textCursor().deletePreviousChar() - # delete white space + # delete white space self.moveCursor(QtGui.QTextCursor.NextWord,QtGui.QTextCursor.KeepAnchor) self.textCursor().removeSelectedText() else: @@ -1059,7 +1087,6 @@ class FCDetachableTab(QtWidgets.QTabWidget): # Re-attach the tab at the given index self.attachTab(contentWidget, name, icon, index) - # If the drop did not occur on an existing tab, determine if the drop # occurred in the tab bar area (the area to the side of the QTabBar) else: @@ -1227,14 +1254,17 @@ class FCDetachableTab(QtWidgets.QTabWidget): :return: """ # Determine if the current movement is detected as a drag - if not self.dragStartPos.isNull() and ((event.pos() - self.dragStartPos).manhattanLength() < QtWidgets.QApplication.startDragDistance()): + if not self.dragStartPos.isNull() and \ + ((event.pos() - self.dragStartPos).manhattanLength() < QtWidgets.QApplication.startDragDistance()): self.dragInitiated = True # If the current movement is a drag initiated by the left button if (((event.buttons() & QtCore.Qt.LeftButton)) and self.dragInitiated): # Stop the move event - finishMoveEvent = QtGui.QMouseEvent(QtCore.QEvent.MouseMove, event.pos(), QtCore.Qt.NoButton, QtCore.Qt.NoButton, QtCore.Qt.NoModifier) + finishMoveEvent = QtGui.QMouseEvent( + QtCore.QEvent.MouseMove, event.pos(), QtCore.Qt.NoButton, QtCore.Qt.NoButton, QtCore.Qt.NoModifier + ) QtWidgets.QTabBar.mouseMoveEvent(self, finishMoveEvent) # Convert the move event into a drag @@ -1261,13 +1291,11 @@ class FCDetachableTab(QtWidgets.QTabWidget): # Initiate the drag dropAction = drag.exec_(QtCore.Qt.MoveAction | QtCore.Qt.CopyAction) - # For Linux: Here, drag.exec_() will not return MoveAction on Linux. So it # must be set manually if self.dragDropedPos.x() != 0 and self.dragDropedPos.y() != 0: dropAction = QtCore.Qt.MoveAction - # If the drag completed outside of the tab bar, detach the tab and move # the content to the current cursor position if dropAction == QtCore.Qt.IgnoreAction: diff --git a/flatcamParsers/ParseDXF.py b/flatcamParsers/ParseDXF.py index 88326afe..b6be8b98 100644 --- a/flatcamParsers/ParseDXF.py +++ b/flatcamParsers/ParseDXF.py @@ -91,7 +91,7 @@ def dxfarc2shapely(arc, n_points=100): # angle += step_angle # # - # log.debug("X = %.3f, Y = %.3f, Radius = %.3f, start_angle = %.1f, stop_angle = %.1f, step_angle = %.3f, dir=%s" % + # log.debug("X = %.4f, Y = %.4f, Radius = %.4f, start_angle = %.1f, stop_angle = %.1f, step_angle = %.4f, dir=%s" % # (center_x, center_y, radius, start_angle, end_angle, step_angle, dir)) # # geo = LineString(point_list) @@ -142,7 +142,7 @@ def dxfarc2shapely(arc, n_points=100): y = center_y + radius * math.sin(math.radians(- end_angle)) point_list.append((x, y)) - # log.debug("X = %.3f, Y = %.3f, Radius = %.3f, start_angle = %.1f, stop_angle = %.1f, step_angle = %.3f" % + # log.debug("X = %.4f, Y = %.4f, Radius = %.4f, start_angle = %.1f, stop_angle = %.1f, step_angle = %.4f" % # (center_x, center_y, radius, start_angle, end_angle, step_angle)) geo = LineString(point_list) @@ -450,4 +450,4 @@ def getdxftext(exf_object, object_type, units=None): # geo = rotate(geo, phi, origin=tr) # # geo_block_transformed.append(geo) -# return geo_block_transformed \ No newline at end of file +# return geo_block_transformed diff --git a/flatcamTools/ToolNonCopperClear.py b/flatcamTools/ToolNonCopperClear.py index 52c847ab..24734e4a 100644 --- a/flatcamTools/ToolNonCopperClear.py +++ b/flatcamTools/ToolNonCopperClear.py @@ -343,7 +343,7 @@ class NonCopperClear(FlatCAMTool, Gerber): }) try: - dias = [float(eval(dia)) for dia in self.app.defaults["tools_ncctools"].split(",")] + dias = [float(eval(dia)) for dia in self.app.defaults["tools_ncctools"].split(",") if dia != ''] except: log.error("At least one tool diameter needed. Verify in Edit -> Preferences -> TOOLS -> NCC Tools.") return @@ -404,7 +404,7 @@ class NonCopperClear(FlatCAMTool, Gerber): if self.units == 'MM': dia = QtWidgets.QTableWidgetItem('%.2f' % tooluid_value['tooldia']) else: - dia = QtWidgets.QTableWidgetItem('%.3f' % tooluid_value['tooldia']) + dia = QtWidgets.QTableWidgetItem('%.4f' % tooluid_value['tooldia']) dia.setFlags(QtCore.Qt.ItemIsEnabled) @@ -787,7 +787,7 @@ class NonCopperClear(FlatCAMTool, Gerber): else: log.debug("There are no geometries in the cleared polygon.") - geo_obj.options["cnctooldia"] = tool + geo_obj.options["cnctooldia"] = str(tool) geo_obj.multigeo = True def job_thread(app_obj): @@ -929,7 +929,7 @@ class NonCopperClear(FlatCAMTool, Gerber): log.debug("There are no geometries in the cleared polygon.") geo_obj.multigeo = True - geo_obj.options["cnctooldia"] = tool + geo_obj.options["cnctooldia"] = str(tool) # check to see if geo_obj.tools is empty # it will be updated only if there is a solid_geometry for tools diff --git a/flatcamTools/ToolPaint.py b/flatcamTools/ToolPaint.py index 00ec1dd5..f2009c88 100644 --- a/flatcamTools/ToolPaint.py +++ b/flatcamTools/ToolPaint.py @@ -468,7 +468,7 @@ class ToolPaint(FlatCAMTool, Gerber): if self.units == 'MM': dia = QtWidgets.QTableWidgetItem('%.2f' % tooluid_value['tooldia']) else: - dia = QtWidgets.QTableWidgetItem('%.3f' % tooluid_value['tooldia']) + dia = QtWidgets.QTableWidgetItem('%.4f' % tooluid_value['tooldia']) dia.setFlags(QtCore.Qt.ItemIsEnabled) @@ -920,7 +920,7 @@ class ToolPaint(FlatCAMTool, Gerber): log.debug("Could not Paint the polygons. %s" % str(e)) self.app.inform.emit( _("[ERROR] Could not do Paint. Try a different combination of parameters. " - "Or a different strategy of paint\n%s") % str(e)) + "Or a different strategy of paint\n%s") % str(e)) return if cp is not None: @@ -930,7 +930,7 @@ class ToolPaint(FlatCAMTool, Gerber): else: geo_obj.solid_geometry = list(cp.get_objects()) - geo_obj.options["cnctooldia"] = tooldia + geo_obj.options["cnctooldia"] = str(tooldia) # this turn on the FlatCAMCNCJob plot for multiple tools geo_obj.multigeo = False geo_obj.multitool = True @@ -1043,7 +1043,11 @@ class ToolPaint(FlatCAMTool, Gerber): # ## Not iterable, do the actual indexing and add. except TypeError: - self.flat_geometry.append(geometry) + if isinstance(geometry, LinearRing): + g = Polygon(geometry) + self.flat_geometry.append(g) + else: + self.flat_geometry.append(geometry) return self.flat_geometry @@ -1127,7 +1131,7 @@ class ToolPaint(FlatCAMTool, Gerber): self.paint_tools[current_uid]['data']['name'] = name total_geometry[:] = [] - geo_obj.options["cnctooldia"] = tool_dia + geo_obj.options["cnctooldia"] = str(tool_dia) # this turn on the FlatCAMCNCJob plot for multiple tools geo_obj.multigeo = True geo_obj.multitool = True @@ -1141,8 +1145,8 @@ class ToolPaint(FlatCAMTool, Gerber): has_solid_geo += 1 if has_solid_geo == 0: self.app.inform.emit(_("[ERROR] There is no Painting Geometry in the file.\n" - "Usually it means that the tool diameter is too big for the painted geometry.\n" - "Change the painting parameters and try again.")) + "Usually it means that the tool diameter is too big for the painted geometry.\n" + "Change the painting parameters and try again.")) return # Experimental... @@ -1222,7 +1226,7 @@ class ToolPaint(FlatCAMTool, Gerber): self.paint_tools[current_uid]['data']['name'] = name cleared_geo[:] = [] - geo_obj.options["cnctooldia"] = tool_dia + geo_obj.options["cnctooldia"] = str(tool_dia) # this turn on the FlatCAMCNCJob plot for multiple tools geo_obj.multigeo = True geo_obj.multitool = True diff --git a/flatcamTools/ToolSolderPaste.py b/flatcamTools/ToolSolderPaste.py index 47b728f6..7f4b5e3e 100644 --- a/flatcamTools/ToolSolderPaste.py +++ b/flatcamTools/ToolSolderPaste.py @@ -482,7 +482,7 @@ class SolderPaste(FlatCAMTool): self.on_tool_delete(rows_to_delete=None, all=None), icon=QtGui.QIcon("share/delete32.png")) try: - dias = [float(eval(dia)) for dia in self.app.defaults["tools_solderpaste_tools"].split(",")] + dias = [float(eval(dia)) for dia in self.app.defaults["tools_solderpaste_tools"].split(",") if dia != ''] except: log.error("At least one Nozzle tool diameter needed. " "Verify in Edit -> Preferences -> TOOLS -> Solder Paste Tools.") @@ -548,7 +548,7 @@ class SolderPaste(FlatCAMTool): if self.units == 'MM': dia = QtWidgets.QTableWidgetItem('%.2f' % tooluid_value['tooldia']) else: - dia = QtWidgets.QTableWidgetItem('%.3f' % tooluid_value['tooldia']) + dia = QtWidgets.QTableWidgetItem('%.4f' % tooluid_value['tooldia']) dia.setFlags(QtCore.Qt.ItemIsEnabled) diff --git a/locale/ru/LC_MESSAGES/strings.po b/locale/ru/LC_MESSAGES/strings.po index 97c05b2f..f96bf852 100644 --- a/locale/ru/LC_MESSAGES/strings.po +++ b/locale/ru/LC_MESSAGES/strings.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2019-06-11 23:00+0300\n" -"PO-Revision-Date: 2019-06-15 19:59+0400\n" +"POT-Creation-Date: 2019-06-22 23:56+0300\n" +"PO-Revision-Date: 2019-06-23 21:04+0400\n" "Last-Translator: Andrey KultyapovSelected Tab - Choose an Item from "
@@ -1154,25 +1158,25 @@ msgstr ""
"\n"
" "
-#: FlatCAMApp.py:8293
+#: FlatCAMApp.py:8404
msgid "[WARNING_NOTCL] Failed checking for latest version. Could not connect."
msgstr ""
"[WARNING_NOTCL] Не удалось проверить обновление программы. Отсутствует "
"интернет подключение ."
-#: FlatCAMApp.py:8300
+#: FlatCAMApp.py:8411
msgid "[ERROR_NOTCL] Could not parse information about latest version."
msgstr "[ERROR_NOTCL] Не удается обработать информацию о последней версии."
-#: FlatCAMApp.py:8310
+#: FlatCAMApp.py:8421
msgid "[success] FlatCAM is up to date!"
msgstr "[success] FlatCAM в актуальном состоянии!"
-#: FlatCAMApp.py:8315
+#: FlatCAMApp.py:8426
msgid "Newer Version Available"
msgstr "Доступна новая версия"
-#: FlatCAMApp.py:8316
+#: FlatCAMApp.py:8427
msgid ""
"There is a newer version of FlatCAM available for download:\n"
"\n"
@@ -1180,97 +1184,97 @@ msgstr ""
"Новая версия FlatCAM доступна для загрузки:\n"
"\n"
-#: FlatCAMApp.py:8318
+#: FlatCAMApp.py:8429
msgid "info"
msgstr "инфо"
-#: FlatCAMApp.py:8337
+#: FlatCAMApp.py:8448
msgid "[success] All plots disabled."
msgstr "[success] Все участки отключены."
-#: FlatCAMApp.py:8343
+#: FlatCAMApp.py:8454
msgid "[success] All non selected plots disabled."
msgstr "[success] Все невыбранные участки отключены.."
-#: FlatCAMApp.py:8349
+#: FlatCAMApp.py:8460
msgid "[success] All plots enabled."
msgstr "[success] Все участки включены."
-#: FlatCAMApp.py:8355
+#: FlatCAMApp.py:8466
msgid "[success] Selected plots enabled..."
msgstr "[success] Выбранные участки включены..."
-#: FlatCAMApp.py:8363
+#: FlatCAMApp.py:8474
msgid "[success] Selected plots disabled..."
msgstr "[success] Выбранные участки отключены..."
-#: FlatCAMApp.py:8373 FlatCAMApp.py:8386
+#: FlatCAMApp.py:8484 FlatCAMApp.py:8497
msgid "Working ..."
msgstr "Обработка…"
-#: FlatCAMApp.py:8420
+#: FlatCAMApp.py:8531
msgid "Saving FlatCAM Project"
msgstr "Сохранение проекта FlatCAM"
-#: FlatCAMApp.py:8441 FlatCAMApp.py:8472
+#: FlatCAMApp.py:8552 FlatCAMApp.py:8583
#, python-format
msgid "[success] Project saved to: %s"
msgstr "[success] Проект сохранён в: %s"
-#: FlatCAMApp.py:8459
+#: FlatCAMApp.py:8570
#, python-format
msgid "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it."
msgstr ""
"[ERROR_NOTCL] Не удалось проверить файл проекта: %s. Повторите попытку "
"сохранения."
-#: FlatCAMApp.py:8466
+#: FlatCAMApp.py:8577
#, python-format
msgid "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it."
msgstr ""
"[ERROR_NOTCL] Не удалось проанализировать сохраняемый файл проекта: %s. "
"Повторите попытку сохранения."
-#: FlatCAMApp.py:8474
+#: FlatCAMApp.py:8585
#, python-format
msgid "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it."
msgstr ""
"[ERROR_NOTCL] Не удалось сохранить файл проекта: %s. Повторите попытку "
"сохранения."
-#: FlatCAMObj.py:202
+#: FlatCAMObj.py:207
#, python-brace-format
msgid "[success] Name changed from {old} to {new}"
msgstr "[success] Имя изменено с {old} на {new}"
-#: FlatCAMObj.py:545 FlatCAMObj.py:2031 FlatCAMObj.py:3275 FlatCAMObj.py:5448
+#: FlatCAMObj.py:553 FlatCAMObj.py:2034 FlatCAMObj.py:3300 FlatCAMObj.py:5485
msgid "Basic"
msgstr "Базовый"
-#: FlatCAMObj.py:557 FlatCAMObj.py:2047 FlatCAMObj.py:3297 FlatCAMObj.py:5454
+#: FlatCAMObj.py:565 FlatCAMObj.py:2050 FlatCAMObj.py:3322 FlatCAMObj.py:5491
msgid "Advanced"
msgstr "Расширенный"
-#: FlatCAMObj.py:920 FlatCAMObj.py:975
+#: FlatCAMObj.py:927 FlatCAMObj.py:982
#, python-format
msgid "[success] Isolation geometry created: %s"
msgstr "[success] Создана геометрия изоляции: %s"
-#: FlatCAMObj.py:1154
+#: FlatCAMObj.py:1161
msgid "Plotting Apertures"
msgstr "Создание отверстия"
-#: FlatCAMObj.py:1870 flatcamEditors/FlatCAMExcEditor.py:1368
+#: FlatCAMObj.py:1877 flatcamEditors/FlatCAMExcEditor.py:1368
msgid "Total Drills"
msgstr "Всего отверстий"
-#: FlatCAMObj.py:1896 flatcamEditors/FlatCAMExcEditor.py:1400
+#: FlatCAMObj.py:1903 flatcamEditors/FlatCAMExcEditor.py:1400
msgid "Total Slots"
msgstr "Всего пазов"
-#: FlatCAMObj.py:2103 FlatCAMObj.py:3348 FlatCAMObj.py:3646 FlatCAMObj.py:3833
-#: FlatCAMObj.py:3846 FlatCAMObj.py:3963 FlatCAMObj.py:4380 FlatCAMObj.py:4618
-#: FlatCAMObj.py:5031 flatcamEditors/FlatCAMExcEditor.py:1474
+#: FlatCAMObj.py:2106 FlatCAMObj.py:3374 FlatCAMObj.py:3674 FlatCAMObj.py:3869
+#: FlatCAMObj.py:3882 FlatCAMObj.py:3999 FlatCAMObj.py:4416 FlatCAMObj.py:4654
+#: FlatCAMObj.py:5067 flatcamEditors/FlatCAMExcEditor.py:1474
#: flatcamTools/ToolCalculators.py:307 flatcamTools/ToolCalculators.py:318
#: flatcamTools/ToolCalculators.py:330 flatcamTools/ToolCalculators.py:345
#: flatcamTools/ToolCalculators.py:358 flatcamTools/ToolCalculators.py:372
@@ -1289,23 +1293,23 @@ msgstr "Всего пазов"
msgid "[ERROR_NOTCL] Wrong value format entered, use a number."
msgstr "[ERROR_NOTCL] Неправильно введен формат значения, используйте числа."
-#: FlatCAMObj.py:2327 FlatCAMObj.py:2418 FlatCAMObj.py:2540
+#: FlatCAMObj.py:2330 FlatCAMObj.py:2422 FlatCAMObj.py:2545
msgid ""
"[ERROR_NOTCL] Please select one or more tools from the list and try again."
msgstr ""
"[ERROR_NOTCL] Пожалуйста, выберите один или несколько инструментов из списка "
"и попробуйте еще раз."
-#: FlatCAMObj.py:2334
+#: FlatCAMObj.py:2337
msgid ""
"[ERROR_NOTCL] Milling tool for DRILLS is larger than hole size. Cancelled."
msgstr "[ERROR_NOTCL] Сверло больше, чем размер отверстия. Отмена."
-#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560
+#: FlatCAMObj.py:2351 FlatCAMObj.py:2446 FlatCAMObj.py:2565
msgid "Tool_nr"
msgstr "№ инструмента"
-#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560
+#: FlatCAMObj.py:2351 FlatCAMObj.py:2446 FlatCAMObj.py:2565
#: flatcamEditors/FlatCAMExcEditor.py:819
#: flatcamEditors/FlatCAMExcEditor.py:2020 flatcamGUI/ObjectUI.py:556
#: flatcamTools/ToolNonCopperClear.py:83 flatcamTools/ToolPaint.py:80
@@ -1313,22 +1317,22 @@ msgstr "№ инструмента"
msgid "Diameter"
msgstr "Диаметр"
-#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560
+#: FlatCAMObj.py:2351 FlatCAMObj.py:2446 FlatCAMObj.py:2565
msgid "Drills_Nr"
msgstr "№ отверстия"
-#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560
+#: FlatCAMObj.py:2351 FlatCAMObj.py:2446 FlatCAMObj.py:2565
msgid "Slots_Nr"
msgstr "№ паза"
-#: FlatCAMObj.py:2428
+#: FlatCAMObj.py:2432
msgid ""
"[ERROR_NOTCL] Milling tool for SLOTS is larger than hole size. Cancelled."
msgstr ""
"[ERROR_NOTCL] Инструмент для прорезания пазов больше, чем размер отверстия. "
"Отмена."
-#: FlatCAMObj.py:2602 FlatCAMObj.py:4268 FlatCAMObj.py:4484 FlatCAMObj.py:4801
+#: FlatCAMObj.py:2607 FlatCAMObj.py:4304 FlatCAMObj.py:4520 FlatCAMObj.py:4837
msgid ""
"[ERROR_NOTCL] Wrong value format for self.defaults[\"z_pdepth\"] or self."
"options[\"z_pdepth\"]"
@@ -1336,7 +1340,7 @@ msgstr ""
"[ERROR_NOTCL] Неправильный формат значения для self.defaults[\"z_pdepth\"] "
"или self.options[\"z_pdepth\"]"
-#: FlatCAMObj.py:2614 FlatCAMObj.py:4280 FlatCAMObj.py:4496 FlatCAMObj.py:4813
+#: FlatCAMObj.py:2619 FlatCAMObj.py:4316 FlatCAMObj.py:4532 FlatCAMObj.py:4849
msgid ""
"[ERROR_NOTCL] Wrong value format for self.defaults[\"feedrate_probe\"] or "
"self.options[\"feedrate_probe\"]"
@@ -1344,12 +1348,12 @@ msgstr ""
"[ERROR_NOTCL] Неправильный формат значения для self.defaults[\"feedrate_probe"
"\"] или self.options[\"feedrate_probe\"]"
-#: FlatCAMObj.py:2646 FlatCAMObj.py:4689 FlatCAMObj.py:4694 FlatCAMObj.py:4844
+#: FlatCAMObj.py:2651 FlatCAMObj.py:4725 FlatCAMObj.py:4730 FlatCAMObj.py:4880
msgid "Generating CNC Code"
msgstr "Генерация кода ЧПУ"
-#: FlatCAMObj.py:2672 FlatCAMObj.py:4990 camlib.py:5164 camlib.py:5623
-#: camlib.py:5886
+#: FlatCAMObj.py:2677 FlatCAMObj.py:5026 camlib.py:5167 camlib.py:5626
+#: camlib.py:5889
msgid ""
"[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the "
"format (x, y) \n"
@@ -1359,61 +1363,61 @@ msgstr ""
"формате (x, y)\n"
"но теперь есть только одно значение, а не два. "
-#: FlatCAMObj.py:2984 FlatCAMObj.py:3889 FlatCAMObj.py:3890 FlatCAMObj.py:3899
+#: FlatCAMObj.py:2997 FlatCAMObj.py:3925 FlatCAMObj.py:3926 FlatCAMObj.py:3935
msgid "Iso"
msgstr "Iso"
-#: FlatCAMObj.py:2984 FlatCAMObj.py:3233 FlatCAMObj.py:3513
+#: FlatCAMObj.py:2997 FlatCAMObj.py:3257 FlatCAMObj.py:3539
msgid "Rough"
msgstr "Грубый"
-#: FlatCAMObj.py:2984
+#: FlatCAMObj.py:2997
msgid "Finish"
msgstr "Конец"
-#: FlatCAMObj.py:3268 flatcamGUI/FlatCAMGUI.py:526 flatcamGUI/FlatCAMGUI.py:722
+#: FlatCAMObj.py:3293 flatcamGUI/FlatCAMGUI.py:526 flatcamGUI/FlatCAMGUI.py:722
#: flatcamGUI/FlatCAMGUI.py:1615 flatcamGUI/FlatCAMGUI.py:1951
#: flatcamGUI/ObjectUI.py:999
msgid "Copy"
msgstr "Копировать"
-#: FlatCAMObj.py:3483
+#: FlatCAMObj.py:3509
msgid "[ERROR_NOTCL] Please enter the desired tool diameter in Float format."
msgstr ""
"[ERROR_NOTCL] Пожалуйста, введите нужный диаметр инструмента в формате числа "
"с плавающей точкой."
-#: FlatCAMObj.py:3556
+#: FlatCAMObj.py:3584
msgid "[success] Tool added in Tool Table."
msgstr "[success] Инструмент добавлен в таблицу инструментов."
-#: FlatCAMObj.py:3561
+#: FlatCAMObj.py:3589
msgid "[ERROR_NOTCL] Default Tool added. Wrong value format entered."
msgstr ""
"[ERROR_NOTCL] Добавлен инструмент по умолчанию. Введен неправильный формат "
"значения."
-#: FlatCAMObj.py:3591 FlatCAMObj.py:3601
+#: FlatCAMObj.py:3619 FlatCAMObj.py:3629
msgid "[WARNING_NOTCL] Failed. Select a tool to copy."
msgstr "[WARNING_NOTCL] Ошибка. Выберите инструмент для копирования."
-#: FlatCAMObj.py:3630
+#: FlatCAMObj.py:3658
msgid "[success] Tool was copied in Tool Table."
msgstr "[success] Инструмент скопирован в таблицу инструментов."
-#: FlatCAMObj.py:3663
+#: FlatCAMObj.py:3691
msgid "[success] Tool was edited in Tool Table."
msgstr "[success] Инструмент был изменён в таблице инструментов."
-#: FlatCAMObj.py:3694 FlatCAMObj.py:3704
+#: FlatCAMObj.py:3722 FlatCAMObj.py:3732
msgid "[WARNING_NOTCL] Failed. Select a tool to delete."
msgstr "[WARNING_NOTCL] Ошибка. Выберите инструмент для удаления."
-#: FlatCAMObj.py:3728
+#: FlatCAMObj.py:3756
msgid "[success] Tool was deleted in Tool Table."
msgstr "[success] Инструмент был удален из таблицы инструментов."
-#: FlatCAMObj.py:4149
+#: FlatCAMObj.py:4185
#, python-format
msgid ""
"[WARNING_NOTCL] This Geometry can't be processed because it is %s geometry."
@@ -1421,21 +1425,21 @@ msgstr ""
"[WARNING_NOTCL] Эта Geometry не может быть обработана, так как это %s "
"геометрия."
-#: FlatCAMObj.py:4166
+#: FlatCAMObj.py:4202
msgid "[ERROR_NOTCL] Wrong Tool Dia value format entered, use a number."
msgstr ""
"[ERROR_NOTCL] Неверный формат ввода диаметра инструмента, используйте цифры."
-#: FlatCAMObj.py:4193
+#: FlatCAMObj.py:4229
msgid "[ERROR_NOTCL] Failed. No tool selected in the tool table ..."
msgstr "[ERROR_NOTCL] Ошибка. Инструмент не выбран в таблице инструментов ..."
-#: FlatCAMObj.py:4231
+#: FlatCAMObj.py:4267
#, python-format
msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s"
msgstr "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s"
-#: FlatCAMObj.py:4389 FlatCAMObj.py:4627
+#: FlatCAMObj.py:4425 FlatCAMObj.py:4663
msgid ""
"[WARNING] Tool Offset is selected in Tool Table but no value is provided.\n"
"Add a Tool Offset or change the Offset Type."
@@ -1444,22 +1448,22 @@ msgstr ""
"указано.\n"
"Добавьте смещение инструмента или измените тип смещения."
-#: FlatCAMObj.py:4508 flatcamTools/ToolSolderPaste.py:1107
+#: FlatCAMObj.py:4544 flatcamTools/ToolSolderPaste.py:1107
#: flatcamTools/ToolSolderPaste.py:1162
msgid "[ERROR_NOTCL] Cancelled. Empty file, it has no geometry..."
msgstr "[ERROR_NOTCL] Отмена. Пустой файл, он не имеет геометрии..."
-#: FlatCAMObj.py:4877 FlatCAMObj.py:4887 camlib.py:3347 camlib.py:3356
+#: FlatCAMObj.py:4913 FlatCAMObj.py:4923 camlib.py:3348 camlib.py:3357
msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float."
msgstr ""
"[ERROR_NOTCL] Коэффициент масштабирования должен быть числом: целочисленным "
"или с плавающей запятой."
-#: FlatCAMObj.py:4925
+#: FlatCAMObj.py:4961
msgid "[success] Geometry Scale done."
msgstr "[success] Масштабирование Geometry выполнено."
-#: FlatCAMObj.py:4942 camlib.py:3425
+#: FlatCAMObj.py:4978 camlib.py:3426
msgid ""
"[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only "
"one value in the Offset field."
@@ -1467,29 +1471,29 @@ msgstr ""
"[ERROR_NOTCL] Необходима пара значений (x,y). Возможно, вы ввели только одно "
"значение в поле \"Смещение\"."
-#: FlatCAMObj.py:4962
+#: FlatCAMObj.py:4998
msgid "[success] Geometry Offset done."
msgstr "[success] Смещение Geometry выполнено."
-#: FlatCAMObj.py:5516 FlatCAMObj.py:5521 flatcamTools/ToolSolderPaste.py:1361
+#: FlatCAMObj.py:5553 FlatCAMObj.py:5558 flatcamTools/ToolSolderPaste.py:1361
msgid "Export Machine Code ..."
msgstr "Экспорт GCode ..."
-#: FlatCAMObj.py:5527 flatcamTools/ToolSolderPaste.py:1364
+#: FlatCAMObj.py:5564 flatcamTools/ToolSolderPaste.py:1364
msgid "[WARNING_NOTCL] Export Machine Code cancelled ..."
msgstr "[WARNING_NOTCL] Экспорт GCode отменен ..."
-#: FlatCAMObj.py:5540
+#: FlatCAMObj.py:5577
#, python-format
msgid "[success] Machine Code file saved to: %s"
msgstr "[success] Файл GCode сохранён в: %s"
-#: FlatCAMObj.py:5562
+#: FlatCAMObj.py:5599
#, python-format
msgid "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s"
msgstr "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s"
-#: FlatCAMObj.py:5679
+#: FlatCAMObj.py:5716
#, python-format
msgid ""
"[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s "
@@ -1498,11 +1502,11 @@ msgstr ""
"[WARNING_NOTCL] CNCJob объект %s не может быть обработан, так как он "
"является объектом CNCJob."
-#: FlatCAMObj.py:5732
+#: FlatCAMObj.py:5769
msgid "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21"
msgstr "[ERROR_NOTCL] G-code не имеет кода единиц измерения: G20 или G21"
-#: FlatCAMObj.py:5745
+#: FlatCAMObj.py:5782
msgid ""
"[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's "
"empty."
@@ -1510,16 +1514,16 @@ msgstr ""
"[ERROR_NOTCL] Отмена. Пользовательский код смены инструмента включен, но он "
"пуст."
-#: FlatCAMObj.py:5752
+#: FlatCAMObj.py:5789
msgid "[success] Toolchange G-code was replaced by a custom code."
msgstr ""
"[success] G-code смены инструмента был заменен на пользовательский код."
-#: FlatCAMObj.py:5767 flatcamTools/ToolSolderPaste.py:1390
+#: FlatCAMObj.py:5804 flatcamTools/ToolSolderPaste.py:1390
msgid "[WARNING_NOTCL] No such file or directory"
msgstr "[WARNING_NOTCL] Нет такого файла или каталога"
-#: FlatCAMObj.py:5787 FlatCAMObj.py:5799
+#: FlatCAMObj.py:5824 FlatCAMObj.py:5836
msgid ""
"[WARNING_NOTCL] The used postprocessor file has to have in it's name: "
"'toolchange_custom'"
@@ -1527,7 +1531,7 @@ msgstr ""
"[WARNING_NOTCL] Используемый файл постпроцессора должен иметь имя: "
"'toolchange_custom'"
-#: FlatCAMObj.py:5805
+#: FlatCAMObj.py:5842
msgid "[ERROR] There is no postprocessor file."
msgstr "[ERROR] Это не файл постпроцессора."
@@ -1570,16 +1574,16 @@ msgstr "[success] Объект был наклонён ..."
msgid "[ERROR_NOTCL] Failed to skew. No object selected"
msgstr "[ERROR_NOTCL] Не удалось наклонить. Объект не выбран"
-#: camlib.py:2727 camlib.py:2812
+#: camlib.py:2728 camlib.py:2813
#, python-format
msgid "[WARNING] Coordinates missing, line ignored: %s"
msgstr "[WARNING] Координаты отсутствуют, строка игнорируется: %s"
-#: camlib.py:2728 camlib.py:2813
+#: camlib.py:2729 camlib.py:2814
msgid "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!"
msgstr "[WARNING_NOTCL] Файл GERBER может быть поврежден. Проверьте файл !!!"
-#: camlib.py:2777
+#: camlib.py:2778
#, python-format
msgid ""
"[ERROR] Region does not have enough points. File will be processed but there "
@@ -1588,7 +1592,7 @@ msgstr ""
"[ERROR] Региону не хватает точек. Файл будет обработан, но есть ошибки "
"разбора. Номер строки: %s"
-#: camlib.py:3169
+#: camlib.py:3170
#, python-format
msgid ""
"[ERROR]Gerber Parser ERROR.\n"
@@ -1597,32 +1601,32 @@ msgstr ""
"[ERROR]Ошибка разбора Gerber.\n"
"%s:"
-#: camlib.py:3393
+#: camlib.py:3394
msgid "[success] Gerber Scale done."
msgstr "[success] Масштабирование Gerber выполнено."
-#: camlib.py:3458
+#: camlib.py:3459
msgid "[success] Gerber Offset done."
msgstr "[success] Смещение Gerber выполнено."
-#: camlib.py:3512
+#: camlib.py:3513
msgid "[success] Gerber Mirror done."
msgstr "[success] Зеркалирование Gerber выполнено."
-#: camlib.py:3558
+#: camlib.py:3559
msgid "[success] Gerber Skew done."
msgstr "[success] Наклон Gerber выполнен."
-#: camlib.py:3596
+#: camlib.py:3597
msgid "[success] Gerber Rotate done."
msgstr "[success] Вращение Gerber выполнено."
-#: camlib.py:3875
+#: camlib.py:3878
#, python-format
msgid "[ERROR_NOTCL] This is GCODE mark: %s"
msgstr "[ERROR_NOTCL] Это метка GCODE: %s"
-#: camlib.py:3990
+#: camlib.py:3993
#, python-format
msgid ""
"[WARNING] No tool diameter info's. See shell.\n"
@@ -1639,7 +1643,7 @@ msgstr ""
"Пользователю необходимо отредактировать полученный объект Excellon и "
"изменить диаметры, чтобы отразить реальные диаметры."
-#: camlib.py:4455
+#: camlib.py:4458
#, python-brace-format
msgid ""
"[ERROR] Excellon Parser error.\n"
@@ -1648,7 +1652,7 @@ msgstr ""
"[ERROR] Ошибка разбора Excellon.\n"
"Ошибка разбора. Строка {l_nr}: {line}\n"
-#: camlib.py:4534
+#: camlib.py:4537
msgid ""
"[WARNING] Excellon.create_geometry() -> a drill location was skipped due of "
"not having a tool associated.\n"
@@ -1658,12 +1662,12 @@ msgstr ""
"из-за отсутствия связанного инструмента.\n"
"Проверьте полученный GCode."
-#: camlib.py:5073
+#: camlib.py:5076
#, python-format
msgid "[ERROR] There is no such parameter: %s"
msgstr "[ERROR] Такого параметра нет: %s"
-#: camlib.py:5143
+#: camlib.py:5146
msgid ""
"[WARNING] The Cut Z parameter has positive value. It is the depth value to "
"drill into material.\n"
@@ -1677,23 +1681,23 @@ msgstr ""
"предполагая, что это опечатка, приложение преобразует значение в "
"отрицательное. Проверьте полученный CNC code (Gcode и т. д.)."
-#: camlib.py:5150 camlib.py:5646 camlib.py:5909
-#, python-format
+#: camlib.py:5153 camlib.py:5649 camlib.py:5912
+#, fuzzy, python-format
msgid ""
"[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file"
msgstr ""
"[WARNING] Параметр \"Глубина резания\" равен нулю. Обрезки не будет , "
-"пропускается файл %s "
+"пропускается файл %s"
-#: camlib.py:5379 camlib.py:5476 camlib.py:5534
+#: camlib.py:5382 camlib.py:5479 camlib.py:5537
msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..."
msgstr "[ERROR_NOTCL] загруженный файл Excellon не имеет отверстий ..."
-#: camlib.py:5481
+#: camlib.py:5484
msgid "[ERROR_NOTCL] Wrong optimization type selected."
msgstr "[ERROR_NOTCL] Выбран неправильный тип оптимизации."
-#: camlib.py:5634 camlib.py:5897
+#: camlib.py:5637 camlib.py:5900
msgid ""
"[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad "
"combinations of other parameters."
@@ -1701,7 +1705,7 @@ msgstr ""
"[ERROR_NOTCL] Параметр \"Глубина резания\" равен None или пуст. Скорее всего "
"неудачное сочетание других параметров."
-#: camlib.py:5639 camlib.py:5902
+#: camlib.py:5642 camlib.py:5905
msgid ""
"[WARNING] The Cut Z parameter has positive value. It is the depth value to "
"cut into material.\n"
@@ -1715,11 +1719,11 @@ msgstr ""
"предполагая, что это опечатка, приложение преобразует значение в "
"отрицательное. Проверьте полученный CNC code (Gcode и т. д.)."
-#: camlib.py:5651 camlib.py:5914
+#: camlib.py:5654 camlib.py:5917
msgid "[ERROR_NOTCL] Travel Z parameter is None or zero."
msgstr "[ERROR_NOTCL] Параметр \"Отвод по Z\" равен None или пуст."
-#: camlib.py:5655 camlib.py:5918
+#: camlib.py:5658 camlib.py:5921
msgid ""
"[WARNING] The Travel Z parameter has negative value. It is the height value "
"to travel between cuts.\n"
@@ -1733,7 +1737,7 @@ msgstr ""
"что это опечатка, приложение преобразует значение в положительное. Проверьте "
"полученный CNC code (Gcode и т. д.)."
-#: camlib.py:5662 camlib.py:5925
+#: camlib.py:5665 camlib.py:5928
#, python-format
msgid ""
"[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file"
@@ -1741,19 +1745,19 @@ msgstr ""
"[WARNING] Параметр \"Отвод по Z\" равен нулю. Это опасно, пропускается файл "
"%s"
-#: camlib.py:5792
+#: camlib.py:5795
#, python-format
msgid "[ERROR]Expected a Geometry, got %s"
msgstr "[ERROR]Ожидалась Geometry, получили %s"
-#: camlib.py:5798
+#: camlib.py:5801
msgid ""
"[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without "
"solid_geometry."
msgstr ""
"[ERROR_NOTCL] Попытка создать CNC Job из объекта Geometry без solid_geometry."
-#: camlib.py:5837
+#: camlib.py:5840
msgid ""
"[ERROR_NOTCL] The Tool Offset value is too negative to use for the "
"current_geometry.\n"
@@ -1763,7 +1767,7 @@ msgstr ""
"current_geometry.\n"
"Увеличте значение (в модуле) и повторите попытку."
-#: camlib.py:6049
+#: camlib.py:6052
msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry."
msgstr "[ERROR_NOTCL] В геометрии SolderPaste нет данных инструмента."
@@ -1855,7 +1859,7 @@ msgstr "[success] Готово. Перемещение отверстий зав
msgid "[success] Done. Drill(s) copied."
msgstr "[success] Готово. Отверстия скопированы."
-#: flatcamEditors/FlatCAMExcEditor.py:792 flatcamGUI/FlatCAMGUI.py:5026
+#: flatcamEditors/FlatCAMExcEditor.py:792 flatcamGUI/FlatCAMGUI.py:5008
msgid "Excellon Editor"
msgstr "Редактор Excellon"
@@ -1893,7 +1897,7 @@ msgstr ""
msgid "Tool Dia:"
msgstr "Диаметр инструмента:"
-#: flatcamEditors/FlatCAMExcEditor.py:839 flatcamGUI/FlatCAMGUI.py:5055
+#: flatcamEditors/FlatCAMExcEditor.py:839 flatcamGUI/FlatCAMGUI.py:5037
#: flatcamGUI/ObjectUI.py:978
msgid "Diameter for the new tool"
msgstr "Диаметр нового инструмента"
@@ -1972,11 +1976,11 @@ msgstr "Линейный"
msgid "Circular"
msgstr "Круговой"
-#: flatcamEditors/FlatCAMExcEditor.py:944 flatcamGUI/FlatCAMGUI.py:5065
+#: flatcamEditors/FlatCAMExcEditor.py:944 flatcamGUI/FlatCAMGUI.py:5047
msgid "Nr of drills:"
msgstr "Кол-во отверстий:"
-#: flatcamEditors/FlatCAMExcEditor.py:946 flatcamGUI/FlatCAMGUI.py:5067
+#: flatcamEditors/FlatCAMExcEditor.py:946 flatcamGUI/FlatCAMGUI.py:5049
msgid "Specify how many drills to be in the array."
msgstr "Укажите, сколько свёрел должно быть в массиве."
@@ -1988,7 +1992,7 @@ msgid "Direction:"
msgstr "Направление:"
#: flatcamEditors/FlatCAMExcEditor.py:966
-#: flatcamEditors/FlatCAMGrbEditor.py:2528 flatcamGUI/FlatCAMGUI.py:5082
+#: flatcamEditors/FlatCAMGrbEditor.py:2528 flatcamGUI/FlatCAMGUI.py:5064
msgid ""
"Direction on which the linear array is oriented:\n"
"- 'X' - horizontal axis \n"
@@ -2001,12 +2005,12 @@ msgstr ""
"- 'Угол' - произвольный угол наклона массива"
#: flatcamEditors/FlatCAMExcEditor.py:979
-#: flatcamEditors/FlatCAMGrbEditor.py:2541 flatcamGUI/FlatCAMGUI.py:5096
+#: flatcamEditors/FlatCAMGrbEditor.py:2541 flatcamGUI/FlatCAMGUI.py:5078
msgid "Pitch:"
msgstr "Шаг:"
#: flatcamEditors/FlatCAMExcEditor.py:981
-#: flatcamEditors/FlatCAMGrbEditor.py:2543 flatcamGUI/FlatCAMGUI.py:5098
+#: flatcamEditors/FlatCAMGrbEditor.py:2543 flatcamGUI/FlatCAMGUI.py:5080
msgid "Pitch = Distance between elements of the array."
msgstr "Подача = Расстояние между элементами массива."
@@ -2015,7 +2019,7 @@ msgstr "Подача = Расстояние между элементами ма
#: flatcamEditors/FlatCAMGeoEditor.py:665
#: flatcamEditors/FlatCAMGrbEditor.py:2550
#: flatcamEditors/FlatCAMGrbEditor.py:2586
-#: flatcamEditors/FlatCAMGrbEditor.py:4580 flatcamGUI/FlatCAMGUI.py:5107
+#: flatcamEditors/FlatCAMGrbEditor.py:4588 flatcamGUI/FlatCAMGUI.py:5089
#: flatcamTools/ToolTransform.py:68
msgid "Angle:"
msgstr "Угол:"
@@ -2043,8 +2047,8 @@ msgstr ""
"CCW = против часовой стрелки."
#: flatcamEditors/FlatCAMExcEditor.py:1026
-#: flatcamEditors/FlatCAMGrbEditor.py:2588 flatcamGUI/FlatCAMGUI.py:5109
-#: flatcamGUI/FlatCAMGUI.py:5135
+#: flatcamEditors/FlatCAMGrbEditor.py:2588 flatcamGUI/FlatCAMGUI.py:5091
+#: flatcamGUI/FlatCAMGUI.py:5117
msgid "Angle at which each element in circular array is placed."
msgstr "Угол, под которым расположен каждый элемент в круговом массиве."
@@ -2056,7 +2060,7 @@ msgstr ""
"[WARNING_NOTCL] Инструмент уже есть в исходном или фактическом списке "
"инструментов.\n"
"Сохраните и повторно отредактируйте Excellon, если вам нужно добавить этот "
-"инструмент."
+"инструмент. "
#: flatcamEditors/FlatCAMExcEditor.py:1496 flatcamGUI/FlatCAMGUI.py:2997
#, python-brace-format
@@ -2095,7 +2099,7 @@ msgid "[success] Done. Drill(s) deleted."
msgstr "[success] Готово. Отверстия удалены."
#: flatcamEditors/FlatCAMExcEditor.py:2705
-#: flatcamEditors/FlatCAMGrbEditor.py:4340
+#: flatcamEditors/FlatCAMGrbEditor.py:4350
msgid "Click on the circular array Center position"
msgstr "Нажмите на центральную позицию кругового массива"
@@ -2160,7 +2164,7 @@ msgstr "Буфер"
#: flatcamEditors/FlatCAMGeoEditor.py:2700
#: flatcamEditors/FlatCAMGeoEditor.py:2726
#: flatcamEditors/FlatCAMGeoEditor.py:2752
-#: flatcamEditors/FlatCAMGrbEditor.py:4392
+#: flatcamEditors/FlatCAMGrbEditor.py:4402
msgid ""
"[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and "
"retry."
@@ -2177,12 +2181,13 @@ msgid "Tool"
msgstr "Инструменты"
#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4054
-#: flatcamGUI/FlatCAMGUI.py:5618 flatcamGUI/FlatCAMGUI.py:5895
-#: flatcamGUI/FlatCAMGUI.py:6035 flatcamGUI/ObjectUI.py:260
+#: flatcamGUI/FlatCAMGUI.py:5163 flatcamGUI/FlatCAMGUI.py:5597
+#: flatcamGUI/FlatCAMGUI.py:5874 flatcamGUI/FlatCAMGUI.py:6014
+#: flatcamGUI/ObjectUI.py:260
msgid "Tool dia:"
msgstr "Диам. инструм.:"
-#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:6037
+#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:6016
msgid ""
"Diameter of the tool to\n"
"be used in the operation."
@@ -2190,14 +2195,14 @@ msgstr ""
"Диаметр инструмента\n"
"используемого в этой операции."
-#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5801
-#: flatcamGUI/FlatCAMGUI.py:6046 flatcamTools/ToolNonCopperClear.py:165
+#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5780
+#: flatcamGUI/FlatCAMGUI.py:6025 flatcamTools/ToolNonCopperClear.py:165
#: flatcamTools/ToolPaint.py:160
msgid "Overlap Rate:"
msgstr "Частота перекрытия:"
#: flatcamEditors/FlatCAMGeoEditor.py:445 flatcamTools/ToolPaint.py:162
-#, python-format
+#, fuzzy, python-format
msgid ""
"How much (fraction) of the tool width to overlap each tool pass.\n"
"Example:\n"
@@ -2223,14 +2228,14 @@ msgstr ""
"Более высокие значения = медленная обработка и медленное выполнение на ЧПУ\n"
"из-за большого количества путей."
-#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5817
-#: flatcamGUI/FlatCAMGUI.py:5903 flatcamGUI/FlatCAMGUI.py:6056
+#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5796
+#: flatcamGUI/FlatCAMGUI.py:5882 flatcamGUI/FlatCAMGUI.py:6035
#: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:181
#: flatcamTools/ToolPaint.py:177
msgid "Margin:"
msgstr "Отступ:"
-#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:6058
+#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:6037
#: flatcamTools/ToolPaint.py:179
msgid ""
"Distance by which to avoid\n"
@@ -2238,13 +2243,13 @@ msgid ""
"be painted."
msgstr "Расстояние, которое не закрашивать до края полигона."
-#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5826
-#: flatcamGUI/FlatCAMGUI.py:6067 flatcamTools/ToolNonCopperClear.py:190
+#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5805
+#: flatcamGUI/FlatCAMGUI.py:6046 flatcamTools/ToolNonCopperClear.py:190
#: flatcamTools/ToolPaint.py:188
msgid "Method:"
msgstr "Метод:"
-#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:6069
+#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:6048
msgid ""
"Algorithm to paint the polygon: Selected Tab - Choose an Item from "
@@ -1013,113 +1017,113 @@ msgid ""
" "
msgstr ""
-#: FlatCAMApp.py:8293
+#: FlatCAMApp.py:8404
msgid "[WARNING_NOTCL] Failed checking for latest version. Could not connect."
msgstr ""
-#: FlatCAMApp.py:8300
+#: FlatCAMApp.py:8411
msgid "[ERROR_NOTCL] Could not parse information about latest version."
msgstr ""
-#: FlatCAMApp.py:8310
+#: FlatCAMApp.py:8421
msgid "[success] FlatCAM is up to date!"
msgstr ""
-#: FlatCAMApp.py:8315
+#: FlatCAMApp.py:8426
msgid "Newer Version Available"
msgstr ""
-#: FlatCAMApp.py:8316
+#: FlatCAMApp.py:8427
msgid ""
"There is a newer version of FlatCAM available for download:\n"
"\n"
msgstr ""
-#: FlatCAMApp.py:8318
+#: FlatCAMApp.py:8429
msgid "info"
msgstr ""
-#: FlatCAMApp.py:8337
+#: FlatCAMApp.py:8448
msgid "[success] All plots disabled."
msgstr ""
-#: FlatCAMApp.py:8343
+#: FlatCAMApp.py:8454
msgid "[success] All non selected plots disabled."
msgstr ""
-#: FlatCAMApp.py:8349
+#: FlatCAMApp.py:8460
msgid "[success] All plots enabled."
msgstr ""
-#: FlatCAMApp.py:8355
+#: FlatCAMApp.py:8466
msgid "[success] Selected plots enabled..."
msgstr ""
-#: FlatCAMApp.py:8363
+#: FlatCAMApp.py:8474
msgid "[success] Selected plots disabled..."
msgstr ""
-#: FlatCAMApp.py:8373 FlatCAMApp.py:8386
+#: FlatCAMApp.py:8484 FlatCAMApp.py:8497
msgid "Working ..."
msgstr ""
-#: FlatCAMApp.py:8420
+#: FlatCAMApp.py:8531
msgid "Saving FlatCAM Project"
msgstr ""
-#: FlatCAMApp.py:8441 FlatCAMApp.py:8472
+#: FlatCAMApp.py:8552 FlatCAMApp.py:8583
#, python-format
msgid "[success] Project saved to: %s"
msgstr ""
-#: FlatCAMApp.py:8459
+#: FlatCAMApp.py:8570
#, python-format
msgid "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it."
msgstr ""
-#: FlatCAMApp.py:8466
+#: FlatCAMApp.py:8577
#, python-format
msgid "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it."
msgstr ""
-#: FlatCAMApp.py:8474
+#: FlatCAMApp.py:8585
#, python-format
msgid "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it."
msgstr ""
-#: FlatCAMObj.py:202
+#: FlatCAMObj.py:207
#, python-brace-format
msgid "[success] Name changed from {old} to {new}"
msgstr ""
-#: FlatCAMObj.py:545 FlatCAMObj.py:2031 FlatCAMObj.py:3275 FlatCAMObj.py:5448
+#: FlatCAMObj.py:553 FlatCAMObj.py:2034 FlatCAMObj.py:3300 FlatCAMObj.py:5485
msgid "Basic"
msgstr ""
-#: FlatCAMObj.py:557 FlatCAMObj.py:2047 FlatCAMObj.py:3297 FlatCAMObj.py:5454
+#: FlatCAMObj.py:565 FlatCAMObj.py:2050 FlatCAMObj.py:3322 FlatCAMObj.py:5491
msgid "Advanced"
msgstr ""
-#: FlatCAMObj.py:920 FlatCAMObj.py:975
+#: FlatCAMObj.py:927 FlatCAMObj.py:982
#, python-format
msgid "[success] Isolation geometry created: %s"
msgstr ""
-#: FlatCAMObj.py:1154
+#: FlatCAMObj.py:1161
msgid "Plotting Apertures"
msgstr ""
-#: FlatCAMObj.py:1870 flatcamEditors/FlatCAMExcEditor.py:1368
+#: FlatCAMObj.py:1877 flatcamEditors/FlatCAMExcEditor.py:1368
msgid "Total Drills"
msgstr ""
-#: FlatCAMObj.py:1896 flatcamEditors/FlatCAMExcEditor.py:1400
+#: FlatCAMObj.py:1903 flatcamEditors/FlatCAMExcEditor.py:1400
msgid "Total Slots"
msgstr ""
-#: FlatCAMObj.py:2103 FlatCAMObj.py:3348 FlatCAMObj.py:3646 FlatCAMObj.py:3833
-#: FlatCAMObj.py:3846 FlatCAMObj.py:3963 FlatCAMObj.py:4380 FlatCAMObj.py:4618
-#: FlatCAMObj.py:5031 flatcamEditors/FlatCAMExcEditor.py:1474
+#: FlatCAMObj.py:2106 FlatCAMObj.py:3374 FlatCAMObj.py:3674 FlatCAMObj.py:3869
+#: FlatCAMObj.py:3882 FlatCAMObj.py:3999 FlatCAMObj.py:4416 FlatCAMObj.py:4654
+#: FlatCAMObj.py:5067 flatcamEditors/FlatCAMExcEditor.py:1474
#: flatcamTools/ToolCalculators.py:307 flatcamTools/ToolCalculators.py:318
#: flatcamTools/ToolCalculators.py:330 flatcamTools/ToolCalculators.py:345
#: flatcamTools/ToolCalculators.py:358 flatcamTools/ToolCalculators.py:372
@@ -1138,21 +1142,21 @@ msgstr ""
msgid "[ERROR_NOTCL] Wrong value format entered, use a number."
msgstr ""
-#: FlatCAMObj.py:2327 FlatCAMObj.py:2418 FlatCAMObj.py:2540
+#: FlatCAMObj.py:2330 FlatCAMObj.py:2422 FlatCAMObj.py:2545
msgid ""
"[ERROR_NOTCL] Please select one or more tools from the list and try again."
msgstr ""
-#: FlatCAMObj.py:2334
+#: FlatCAMObj.py:2337
msgid ""
"[ERROR_NOTCL] Milling tool for DRILLS is larger than hole size. Cancelled."
msgstr ""
-#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560
+#: FlatCAMObj.py:2351 FlatCAMObj.py:2446 FlatCAMObj.py:2565
msgid "Tool_nr"
msgstr ""
-#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560
+#: FlatCAMObj.py:2351 FlatCAMObj.py:2446 FlatCAMObj.py:2565
#: flatcamEditors/FlatCAMExcEditor.py:819
#: flatcamEditors/FlatCAMExcEditor.py:2020 flatcamGUI/ObjectUI.py:556
#: flatcamTools/ToolNonCopperClear.py:83 flatcamTools/ToolPaint.py:80
@@ -1160,191 +1164,191 @@ msgstr ""
msgid "Diameter"
msgstr ""
-#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560
+#: FlatCAMObj.py:2351 FlatCAMObj.py:2446 FlatCAMObj.py:2565
msgid "Drills_Nr"
msgstr ""
-#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560
+#: FlatCAMObj.py:2351 FlatCAMObj.py:2446 FlatCAMObj.py:2565
msgid "Slots_Nr"
msgstr ""
-#: FlatCAMObj.py:2428
+#: FlatCAMObj.py:2432
msgid ""
"[ERROR_NOTCL] Milling tool for SLOTS is larger than hole size. Cancelled."
msgstr ""
-#: FlatCAMObj.py:2602 FlatCAMObj.py:4268 FlatCAMObj.py:4484 FlatCAMObj.py:4801
+#: FlatCAMObj.py:2607 FlatCAMObj.py:4304 FlatCAMObj.py:4520 FlatCAMObj.py:4837
msgid ""
"[ERROR_NOTCL] Wrong value format for self.defaults[\"z_pdepth\"] or self."
"options[\"z_pdepth\"]"
msgstr ""
-#: FlatCAMObj.py:2614 FlatCAMObj.py:4280 FlatCAMObj.py:4496 FlatCAMObj.py:4813
+#: FlatCAMObj.py:2619 FlatCAMObj.py:4316 FlatCAMObj.py:4532 FlatCAMObj.py:4849
msgid ""
"[ERROR_NOTCL] Wrong value format for self.defaults[\"feedrate_probe\"] or "
"self.options[\"feedrate_probe\"]"
msgstr ""
-#: FlatCAMObj.py:2646 FlatCAMObj.py:4689 FlatCAMObj.py:4694 FlatCAMObj.py:4844
+#: FlatCAMObj.py:2651 FlatCAMObj.py:4725 FlatCAMObj.py:4730 FlatCAMObj.py:4880
msgid "Generating CNC Code"
msgstr ""
-#: FlatCAMObj.py:2672 FlatCAMObj.py:4990 camlib.py:5164 camlib.py:5623
-#: camlib.py:5886
+#: FlatCAMObj.py:2677 FlatCAMObj.py:5026 camlib.py:5167 camlib.py:5626
+#: camlib.py:5889
msgid ""
"[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the "
"format (x, y) \n"
"but now there is only one value, not two. "
msgstr ""
-#: FlatCAMObj.py:2984 FlatCAMObj.py:3889 FlatCAMObj.py:3890 FlatCAMObj.py:3899
+#: FlatCAMObj.py:2997 FlatCAMObj.py:3925 FlatCAMObj.py:3926 FlatCAMObj.py:3935
msgid "Iso"
msgstr ""
-#: FlatCAMObj.py:2984 FlatCAMObj.py:3233 FlatCAMObj.py:3513
+#: FlatCAMObj.py:2997 FlatCAMObj.py:3257 FlatCAMObj.py:3539
msgid "Rough"
msgstr ""
-#: FlatCAMObj.py:2984
+#: FlatCAMObj.py:2997
msgid "Finish"
msgstr ""
-#: FlatCAMObj.py:3268 flatcamGUI/FlatCAMGUI.py:526 flatcamGUI/FlatCAMGUI.py:722
+#: FlatCAMObj.py:3293 flatcamGUI/FlatCAMGUI.py:526 flatcamGUI/FlatCAMGUI.py:722
#: flatcamGUI/FlatCAMGUI.py:1615 flatcamGUI/FlatCAMGUI.py:1951
#: flatcamGUI/ObjectUI.py:999
msgid "Copy"
msgstr ""
-#: FlatCAMObj.py:3483
+#: FlatCAMObj.py:3509
msgid "[ERROR_NOTCL] Please enter the desired tool diameter in Float format."
msgstr ""
-#: FlatCAMObj.py:3556
+#: FlatCAMObj.py:3584
msgid "[success] Tool added in Tool Table."
msgstr ""
-#: FlatCAMObj.py:3561
+#: FlatCAMObj.py:3589
msgid "[ERROR_NOTCL] Default Tool added. Wrong value format entered."
msgstr ""
-#: FlatCAMObj.py:3591 FlatCAMObj.py:3601
+#: FlatCAMObj.py:3619 FlatCAMObj.py:3629
msgid "[WARNING_NOTCL] Failed. Select a tool to copy."
msgstr ""
-#: FlatCAMObj.py:3630
+#: FlatCAMObj.py:3658
msgid "[success] Tool was copied in Tool Table."
msgstr ""
-#: FlatCAMObj.py:3663
+#: FlatCAMObj.py:3691
msgid "[success] Tool was edited in Tool Table."
msgstr ""
-#: FlatCAMObj.py:3694 FlatCAMObj.py:3704
+#: FlatCAMObj.py:3722 FlatCAMObj.py:3732
msgid "[WARNING_NOTCL] Failed. Select a tool to delete."
msgstr ""
-#: FlatCAMObj.py:3728
+#: FlatCAMObj.py:3756
msgid "[success] Tool was deleted in Tool Table."
msgstr ""
-#: FlatCAMObj.py:4149
+#: FlatCAMObj.py:4185
#, python-format
msgid ""
"[WARNING_NOTCL] This Geometry can't be processed because it is %s geometry."
msgstr ""
-#: FlatCAMObj.py:4166
+#: FlatCAMObj.py:4202
msgid "[ERROR_NOTCL] Wrong Tool Dia value format entered, use a number."
msgstr ""
-#: FlatCAMObj.py:4193
+#: FlatCAMObj.py:4229
msgid "[ERROR_NOTCL] Failed. No tool selected in the tool table ..."
msgstr ""
-#: FlatCAMObj.py:4231
+#: FlatCAMObj.py:4267
#, python-format
msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s"
msgstr ""
-#: FlatCAMObj.py:4389 FlatCAMObj.py:4627
+#: FlatCAMObj.py:4425 FlatCAMObj.py:4663
msgid ""
"[WARNING] Tool Offset is selected in Tool Table but no value is provided.\n"
"Add a Tool Offset or change the Offset Type."
msgstr ""
-#: FlatCAMObj.py:4508 flatcamTools/ToolSolderPaste.py:1107
+#: FlatCAMObj.py:4544 flatcamTools/ToolSolderPaste.py:1107
#: flatcamTools/ToolSolderPaste.py:1162
msgid "[ERROR_NOTCL] Cancelled. Empty file, it has no geometry..."
msgstr ""
-#: FlatCAMObj.py:4877 FlatCAMObj.py:4887 camlib.py:3347 camlib.py:3356
+#: FlatCAMObj.py:4913 FlatCAMObj.py:4923 camlib.py:3348 camlib.py:3357
msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float."
msgstr ""
-#: FlatCAMObj.py:4925
+#: FlatCAMObj.py:4961
msgid "[success] Geometry Scale done."
msgstr ""
-#: FlatCAMObj.py:4942 camlib.py:3425
+#: FlatCAMObj.py:4978 camlib.py:3426
msgid ""
"[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only "
"one value in the Offset field."
msgstr ""
-#: FlatCAMObj.py:4962
+#: FlatCAMObj.py:4998
msgid "[success] Geometry Offset done."
msgstr ""
-#: FlatCAMObj.py:5516 FlatCAMObj.py:5521 flatcamTools/ToolSolderPaste.py:1361
+#: FlatCAMObj.py:5553 FlatCAMObj.py:5558 flatcamTools/ToolSolderPaste.py:1361
msgid "Export Machine Code ..."
msgstr ""
-#: FlatCAMObj.py:5527 flatcamTools/ToolSolderPaste.py:1364
+#: FlatCAMObj.py:5564 flatcamTools/ToolSolderPaste.py:1364
msgid "[WARNING_NOTCL] Export Machine Code cancelled ..."
msgstr ""
-#: FlatCAMObj.py:5540
+#: FlatCAMObj.py:5577
#, python-format
msgid "[success] Machine Code file saved to: %s"
msgstr ""
-#: FlatCAMObj.py:5562
+#: FlatCAMObj.py:5599
#, python-format
msgid "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s"
msgstr ""
-#: FlatCAMObj.py:5679
+#: FlatCAMObj.py:5716
#, python-format
msgid ""
"[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s "
"CNCJob object."
msgstr ""
-#: FlatCAMObj.py:5732
+#: FlatCAMObj.py:5769
msgid "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21"
msgstr ""
-#: FlatCAMObj.py:5745
+#: FlatCAMObj.py:5782
msgid ""
"[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's "
"empty."
msgstr ""
-#: FlatCAMObj.py:5752
+#: FlatCAMObj.py:5789
msgid "[success] Toolchange G-code was replaced by a custom code."
msgstr ""
-#: FlatCAMObj.py:5767 flatcamTools/ToolSolderPaste.py:1390
+#: FlatCAMObj.py:5804 flatcamTools/ToolSolderPaste.py:1390
msgid "[WARNING_NOTCL] No such file or directory"
msgstr ""
-#: FlatCAMObj.py:5787 FlatCAMObj.py:5799
+#: FlatCAMObj.py:5824 FlatCAMObj.py:5836
msgid ""
"[WARNING_NOTCL] The used postprocessor file has to have in it's name: "
"'toolchange_custom'"
msgstr ""
-#: FlatCAMObj.py:5805
+#: FlatCAMObj.py:5842
msgid "[ERROR] There is no postprocessor file."
msgstr ""
@@ -1386,55 +1390,55 @@ msgstr ""
msgid "[ERROR_NOTCL] Failed to skew. No object selected"
msgstr ""
-#: camlib.py:2727 camlib.py:2812
+#: camlib.py:2728 camlib.py:2813
#, python-format
msgid "[WARNING] Coordinates missing, line ignored: %s"
msgstr ""
-#: camlib.py:2728 camlib.py:2813
+#: camlib.py:2729 camlib.py:2814
msgid "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!"
msgstr ""
-#: camlib.py:2777
+#: camlib.py:2778
#, python-format
msgid ""
"[ERROR] Region does not have enough points. File will be processed but there "
"are parser errors. Line number: %s"
msgstr ""
-#: camlib.py:3169
+#: camlib.py:3170
#, python-format
msgid ""
"[ERROR]Gerber Parser ERROR.\n"
"%s:"
msgstr ""
-#: camlib.py:3393
+#: camlib.py:3394
msgid "[success] Gerber Scale done."
msgstr ""
-#: camlib.py:3458
+#: camlib.py:3459
msgid "[success] Gerber Offset done."
msgstr ""
-#: camlib.py:3512
+#: camlib.py:3513
msgid "[success] Gerber Mirror done."
msgstr ""
-#: camlib.py:3558
+#: camlib.py:3559
msgid "[success] Gerber Skew done."
msgstr ""
-#: camlib.py:3596
+#: camlib.py:3597
msgid "[success] Gerber Rotate done."
msgstr ""
-#: camlib.py:3875
+#: camlib.py:3878
#, python-format
msgid "[ERROR_NOTCL] This is GCODE mark: %s"
msgstr ""
-#: camlib.py:3990
+#: camlib.py:3993
#, python-format
msgid ""
"[WARNING] No tool diameter info's. See shell.\n"
@@ -1445,26 +1449,26 @@ msgid ""
"diameters to reflect the real diameters."
msgstr ""
-#: camlib.py:4455
+#: camlib.py:4458
#, python-brace-format
msgid ""
"[ERROR] Excellon Parser error.\n"
"Parsing Failed. Line {l_nr}: {line}\n"
msgstr ""
-#: camlib.py:4534
+#: camlib.py:4537
msgid ""
"[WARNING] Excellon.create_geometry() -> a drill location was skipped due of "
"not having a tool associated.\n"
"Check the resulting GCode."
msgstr ""
-#: camlib.py:5073
+#: camlib.py:5076
#, python-format
msgid "[ERROR] There is no such parameter: %s"
msgstr ""
-#: camlib.py:5143
+#: camlib.py:5146
msgid ""
"[WARNING] The Cut Z parameter has positive value. It is the depth value to "
"drill into material.\n"
@@ -1473,27 +1477,27 @@ msgid ""
"CNC code (Gcode etc)."
msgstr ""
-#: camlib.py:5150 camlib.py:5646 camlib.py:5909
+#: camlib.py:5153 camlib.py:5649 camlib.py:5912
#, python-format
msgid ""
"[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file"
msgstr ""
-#: camlib.py:5379 camlib.py:5476 camlib.py:5534
+#: camlib.py:5382 camlib.py:5479 camlib.py:5537
msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..."
msgstr ""
-#: camlib.py:5481
+#: camlib.py:5484
msgid "[ERROR_NOTCL] Wrong optimization type selected."
msgstr ""
-#: camlib.py:5634 camlib.py:5897
+#: camlib.py:5637 camlib.py:5900
msgid ""
"[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad "
"combinations of other parameters."
msgstr ""
-#: camlib.py:5639 camlib.py:5902
+#: camlib.py:5642 camlib.py:5905
msgid ""
"[WARNING] The Cut Z parameter has positive value. It is the depth value to "
"cut into material.\n"
@@ -1502,11 +1506,11 @@ msgid ""
"code (Gcode etc)."
msgstr ""
-#: camlib.py:5651 camlib.py:5914
+#: camlib.py:5654 camlib.py:5917
msgid "[ERROR_NOTCL] Travel Z parameter is None or zero."
msgstr ""
-#: camlib.py:5655 camlib.py:5918
+#: camlib.py:5658 camlib.py:5921
msgid ""
"[WARNING] The Travel Z parameter has negative value. It is the height value "
"to travel between cuts.\n"
@@ -1515,31 +1519,31 @@ msgid ""
"code (Gcode etc)."
msgstr ""
-#: camlib.py:5662 camlib.py:5925
+#: camlib.py:5665 camlib.py:5928
#, python-format
msgid ""
"[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file"
msgstr ""
-#: camlib.py:5792
+#: camlib.py:5795
#, python-format
msgid "[ERROR]Expected a Geometry, got %s"
msgstr ""
-#: camlib.py:5798
+#: camlib.py:5801
msgid ""
"[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without "
"solid_geometry."
msgstr ""
-#: camlib.py:5837
+#: camlib.py:5840
msgid ""
"[ERROR_NOTCL] The Tool Offset value is too negative to use for the "
"current_geometry.\n"
"Raise the value (in module) and try again."
msgstr ""
-#: camlib.py:6049
+#: camlib.py:6052
msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry."
msgstr ""
@@ -1624,7 +1628,7 @@ msgstr ""
msgid "[success] Done. Drill(s) copied."
msgstr ""
-#: flatcamEditors/FlatCAMExcEditor.py:792 flatcamGUI/FlatCAMGUI.py:5026
+#: flatcamEditors/FlatCAMExcEditor.py:792 flatcamGUI/FlatCAMGUI.py:5008
msgid "Excellon Editor"
msgstr ""
@@ -1658,7 +1662,7 @@ msgstr ""
msgid "Tool Dia:"
msgstr ""
-#: flatcamEditors/FlatCAMExcEditor.py:839 flatcamGUI/FlatCAMGUI.py:5055
+#: flatcamEditors/FlatCAMExcEditor.py:839 flatcamGUI/FlatCAMGUI.py:5037
#: flatcamGUI/ObjectUI.py:978
msgid "Diameter for the new tool"
msgstr ""
@@ -1731,11 +1735,11 @@ msgstr ""
msgid "Circular"
msgstr ""
-#: flatcamEditors/FlatCAMExcEditor.py:944 flatcamGUI/FlatCAMGUI.py:5065
+#: flatcamEditors/FlatCAMExcEditor.py:944 flatcamGUI/FlatCAMGUI.py:5047
msgid "Nr of drills:"
msgstr ""
-#: flatcamEditors/FlatCAMExcEditor.py:946 flatcamGUI/FlatCAMGUI.py:5067
+#: flatcamEditors/FlatCAMExcEditor.py:946 flatcamGUI/FlatCAMGUI.py:5049
msgid "Specify how many drills to be in the array."
msgstr ""
@@ -1747,7 +1751,7 @@ msgid "Direction:"
msgstr ""
#: flatcamEditors/FlatCAMExcEditor.py:966
-#: flatcamEditors/FlatCAMGrbEditor.py:2528 flatcamGUI/FlatCAMGUI.py:5082
+#: flatcamEditors/FlatCAMGrbEditor.py:2528 flatcamGUI/FlatCAMGUI.py:5064
msgid ""
"Direction on which the linear array is oriented:\n"
"- 'X' - horizontal axis \n"
@@ -1756,12 +1760,12 @@ msgid ""
msgstr ""
#: flatcamEditors/FlatCAMExcEditor.py:979
-#: flatcamEditors/FlatCAMGrbEditor.py:2541 flatcamGUI/FlatCAMGUI.py:5096
+#: flatcamEditors/FlatCAMGrbEditor.py:2541 flatcamGUI/FlatCAMGUI.py:5078
msgid "Pitch:"
msgstr ""
#: flatcamEditors/FlatCAMExcEditor.py:981
-#: flatcamEditors/FlatCAMGrbEditor.py:2543 flatcamGUI/FlatCAMGUI.py:5098
+#: flatcamEditors/FlatCAMGrbEditor.py:2543 flatcamGUI/FlatCAMGUI.py:5080
msgid "Pitch = Distance between elements of the array."
msgstr ""
@@ -1770,7 +1774,7 @@ msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:665
#: flatcamEditors/FlatCAMGrbEditor.py:2550
#: flatcamEditors/FlatCAMGrbEditor.py:2586
-#: flatcamEditors/FlatCAMGrbEditor.py:4580 flatcamGUI/FlatCAMGUI.py:5107
+#: flatcamEditors/FlatCAMGrbEditor.py:4588 flatcamGUI/FlatCAMGUI.py:5089
#: flatcamTools/ToolTransform.py:68
msgid "Angle:"
msgstr ""
@@ -1792,8 +1796,8 @@ msgid ""
msgstr ""
#: flatcamEditors/FlatCAMExcEditor.py:1026
-#: flatcamEditors/FlatCAMGrbEditor.py:2588 flatcamGUI/FlatCAMGUI.py:5109
-#: flatcamGUI/FlatCAMGUI.py:5135
+#: flatcamEditors/FlatCAMGrbEditor.py:2588 flatcamGUI/FlatCAMGUI.py:5091
+#: flatcamGUI/FlatCAMGUI.py:5117
msgid "Angle at which each element in circular array is placed."
msgstr ""
@@ -1840,7 +1844,7 @@ msgid "[success] Done. Drill(s) deleted."
msgstr ""
#: flatcamEditors/FlatCAMExcEditor.py:2705
-#: flatcamEditors/FlatCAMGrbEditor.py:4340
+#: flatcamEditors/FlatCAMGrbEditor.py:4350
msgid "Click on the circular array Center position"
msgstr ""
@@ -1901,7 +1905,7 @@ msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:2700
#: flatcamEditors/FlatCAMGeoEditor.py:2726
#: flatcamEditors/FlatCAMGeoEditor.py:2752
-#: flatcamEditors/FlatCAMGrbEditor.py:4392
+#: flatcamEditors/FlatCAMGrbEditor.py:4402
msgid ""
"[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and "
"retry."
@@ -1916,19 +1920,20 @@ msgid "Tool"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4054
-#: flatcamGUI/FlatCAMGUI.py:5618 flatcamGUI/FlatCAMGUI.py:5895
-#: flatcamGUI/FlatCAMGUI.py:6035 flatcamGUI/ObjectUI.py:260
+#: flatcamGUI/FlatCAMGUI.py:5163 flatcamGUI/FlatCAMGUI.py:5597
+#: flatcamGUI/FlatCAMGUI.py:5874 flatcamGUI/FlatCAMGUI.py:6014
+#: flatcamGUI/ObjectUI.py:260
msgid "Tool dia:"
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:6037
+#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:6016
msgid ""
"Diameter of the tool to\n"
"be used in the operation."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5801
-#: flatcamGUI/FlatCAMGUI.py:6046 flatcamTools/ToolNonCopperClear.py:165
+#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5780
+#: flatcamGUI/FlatCAMGUI.py:6025 flatcamTools/ToolNonCopperClear.py:165
#: flatcamTools/ToolPaint.py:160
msgid "Overlap Rate:"
msgstr ""
@@ -1948,14 +1953,14 @@ msgid ""
"due of too many paths."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5817
-#: flatcamGUI/FlatCAMGUI.py:5903 flatcamGUI/FlatCAMGUI.py:6056
+#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5796
+#: flatcamGUI/FlatCAMGUI.py:5882 flatcamGUI/FlatCAMGUI.py:6035
#: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:181
#: flatcamTools/ToolPaint.py:177
msgid "Margin:"
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:6058
+#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:6037
#: flatcamTools/ToolPaint.py:179
msgid ""
"Distance by which to avoid\n"
@@ -1963,40 +1968,40 @@ msgid ""
"be painted."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5826
-#: flatcamGUI/FlatCAMGUI.py:6067 flatcamTools/ToolNonCopperClear.py:190
+#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5805
+#: flatcamGUI/FlatCAMGUI.py:6046 flatcamTools/ToolNonCopperClear.py:190
#: flatcamTools/ToolPaint.py:188
msgid "Method:"
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:6069
+#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:6048
msgid ""
"Algorithm to paint the polygon:
Standard: Fixed step inwards."
"
Seed-based: Outwards from seed."
@@ -2252,14 +2257,14 @@ msgstr ""
"Алгоритм отрисовки полигона:
Стандартный: Фиксированный шаг внутрь."
"
По кругу: От центра наружу."
-#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5842
-#: flatcamGUI/FlatCAMGUI.py:6082 flatcamTools/ToolNonCopperClear.py:206
+#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5821
+#: flatcamGUI/FlatCAMGUI.py:6061 flatcamTools/ToolNonCopperClear.py:206
#: flatcamTools/ToolPaint.py:204
msgid "Connect:"
msgstr "Подключение:"
-#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5844
-#: flatcamGUI/FlatCAMGUI.py:6084 flatcamTools/ToolNonCopperClear.py:208
+#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5823
+#: flatcamGUI/FlatCAMGUI.py:6063 flatcamTools/ToolNonCopperClear.py:208
#: flatcamTools/ToolPaint.py:206
msgid ""
"Draw lines between resulting\n"
@@ -2268,14 +2273,14 @@ msgstr ""
"Рисовать линии между результирующей сегментами\n"
" для минимизации подъёма инструмента."
-#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5851
-#: flatcamGUI/FlatCAMGUI.py:6092 flatcamTools/ToolNonCopperClear.py:215
+#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5830
+#: flatcamGUI/FlatCAMGUI.py:6071 flatcamTools/ToolNonCopperClear.py:215
#: flatcamTools/ToolPaint.py:213
msgid "Contour:"
msgstr "Контур:"
-#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5853
-#: flatcamGUI/FlatCAMGUI.py:6094 flatcamTools/ToolNonCopperClear.py:217
+#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5832
+#: flatcamGUI/FlatCAMGUI.py:6073 flatcamTools/ToolNonCopperClear.py:217
#: flatcamTools/ToolPaint.py:215
msgid ""
"Cut around the perimeter of the polygon\n"
@@ -2333,53 +2338,53 @@ msgstr "Инструменты"
#: flatcamEditors/FlatCAMGeoEditor.py:617
#: flatcamEditors/FlatCAMGeoEditor.py:990
-#: flatcamEditors/FlatCAMGrbEditor.py:4531
-#: flatcamEditors/FlatCAMGrbEditor.py:4916 flatcamGUI/FlatCAMGUI.py:654
+#: flatcamEditors/FlatCAMGrbEditor.py:4539
+#: flatcamEditors/FlatCAMGrbEditor.py:4924 flatcamGUI/FlatCAMGUI.py:654
#: flatcamGUI/FlatCAMGUI.py:1879 flatcamTools/ToolTransform.py:398
msgid "Transform Tool"
msgstr "Трансформация"
#: flatcamEditors/FlatCAMGeoEditor.py:618
#: flatcamEditors/FlatCAMGeoEditor.py:679
-#: flatcamEditors/FlatCAMGrbEditor.py:4532
-#: flatcamEditors/FlatCAMGrbEditor.py:4594 flatcamTools/ToolTransform.py:24
+#: flatcamEditors/FlatCAMGrbEditor.py:4540
+#: flatcamEditors/FlatCAMGrbEditor.py:4602 flatcamTools/ToolTransform.py:24
#: flatcamTools/ToolTransform.py:82
msgid "Rotate"
msgstr "Вращение"
#: flatcamEditors/FlatCAMGeoEditor.py:619
-#: flatcamEditors/FlatCAMGrbEditor.py:4533 flatcamTools/ToolTransform.py:25
+#: flatcamEditors/FlatCAMGrbEditor.py:4541 flatcamTools/ToolTransform.py:25
msgid "Skew/Shear"
msgstr "Наклон/Сдвиг"
#: flatcamEditors/FlatCAMGeoEditor.py:620
#: flatcamEditors/FlatCAMGrbEditor.py:2471
-#: flatcamEditors/FlatCAMGrbEditor.py:4534 flatcamGUI/FlatCAMGUI.py:718
+#: flatcamEditors/FlatCAMGrbEditor.py:4542 flatcamGUI/FlatCAMGUI.py:718
#: flatcamGUI/FlatCAMGUI.py:1947 flatcamGUI/ObjectUI.py:100
#: flatcamTools/ToolTransform.py:26
msgid "Scale"
msgstr "Масштаб"
#: flatcamEditors/FlatCAMGeoEditor.py:621
-#: flatcamEditors/FlatCAMGrbEditor.py:4535 flatcamTools/ToolTransform.py:27
+#: flatcamEditors/FlatCAMGrbEditor.py:4543 flatcamTools/ToolTransform.py:27
msgid "Mirror (Flip)"
msgstr "Зеркалирование (отражение)"
#: flatcamEditors/FlatCAMGeoEditor.py:622
-#: flatcamEditors/FlatCAMGrbEditor.py:4536 flatcamGUI/ObjectUI.py:127
+#: flatcamEditors/FlatCAMGrbEditor.py:4544 flatcamGUI/ObjectUI.py:127
#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465
#: flatcamTools/ToolTransform.py:28
msgid "Offset"
msgstr "Смещение"
#: flatcamEditors/FlatCAMGeoEditor.py:633
-#: flatcamEditors/FlatCAMGrbEditor.py:4548
+#: flatcamEditors/FlatCAMGrbEditor.py:4556
#, python-format
msgid "Editor %s"
msgstr "Редактор %s"
#: flatcamEditors/FlatCAMGeoEditor.py:667
-#: flatcamEditors/FlatCAMGrbEditor.py:4582 flatcamTools/ToolTransform.py:70
+#: flatcamEditors/FlatCAMGrbEditor.py:4590 flatcamTools/ToolTransform.py:70
msgid ""
"Angle for Rotation action, in degrees.\n"
"Float number between -360 and 359.\n"
@@ -2392,7 +2397,7 @@ msgstr ""
"Отрицательные числа для движения против часовой стрелки."
#: flatcamEditors/FlatCAMGeoEditor.py:681
-#: flatcamEditors/FlatCAMGrbEditor.py:4596
+#: flatcamEditors/FlatCAMGrbEditor.py:4604
msgid ""
"Rotate the selected shape(s).\n"
"The point of reference is the middle of\n"
@@ -2403,14 +2408,14 @@ msgstr ""
"ограничительной рамки для всех выбранных фигур."
#: flatcamEditors/FlatCAMGeoEditor.py:704
-#: flatcamEditors/FlatCAMGrbEditor.py:4619 flatcamTools/ToolTransform.py:107
+#: flatcamEditors/FlatCAMGrbEditor.py:4627 flatcamTools/ToolTransform.py:107
msgid "Angle X:"
msgstr "Угол X:"
#: flatcamEditors/FlatCAMGeoEditor.py:706
#: flatcamEditors/FlatCAMGeoEditor.py:724
-#: flatcamEditors/FlatCAMGrbEditor.py:4621
-#: flatcamEditors/FlatCAMGrbEditor.py:4639 flatcamTools/ToolTransform.py:109
+#: flatcamEditors/FlatCAMGrbEditor.py:4629
+#: flatcamEditors/FlatCAMGrbEditor.py:4647 flatcamTools/ToolTransform.py:109
#: flatcamTools/ToolTransform.py:127
msgid ""
"Angle for Skew action, in degrees.\n"
@@ -2420,14 +2425,14 @@ msgstr ""
"Число с плавающей запятой между -360 и 359."
#: flatcamEditors/FlatCAMGeoEditor.py:715
-#: flatcamEditors/FlatCAMGrbEditor.py:4630 flatcamTools/ToolTransform.py:118
+#: flatcamEditors/FlatCAMGrbEditor.py:4638 flatcamTools/ToolTransform.py:118
msgid "Skew X"
msgstr "Наклон X"
#: flatcamEditors/FlatCAMGeoEditor.py:717
#: flatcamEditors/FlatCAMGeoEditor.py:735
-#: flatcamEditors/FlatCAMGrbEditor.py:4632
-#: flatcamEditors/FlatCAMGrbEditor.py:4650
+#: flatcamEditors/FlatCAMGrbEditor.py:4640
+#: flatcamEditors/FlatCAMGrbEditor.py:4658
msgid ""
"Skew/shear the selected shape(s).\n"
"The point of reference is the middle of\n"
@@ -2438,34 +2443,34 @@ msgstr ""
"ограничительной рамки для всех выбранных фигур."
#: flatcamEditors/FlatCAMGeoEditor.py:722
-#: flatcamEditors/FlatCAMGrbEditor.py:4637 flatcamTools/ToolTransform.py:125
+#: flatcamEditors/FlatCAMGrbEditor.py:4645 flatcamTools/ToolTransform.py:125
msgid "Angle Y:"
msgstr "Угол Y:"
#: flatcamEditors/FlatCAMGeoEditor.py:733
-#: flatcamEditors/FlatCAMGrbEditor.py:4648 flatcamTools/ToolTransform.py:136
+#: flatcamEditors/FlatCAMGrbEditor.py:4656 flatcamTools/ToolTransform.py:136
msgid "Skew Y"
msgstr "Наклон Y"
#: flatcamEditors/FlatCAMGeoEditor.py:761
-#: flatcamEditors/FlatCAMGrbEditor.py:4676 flatcamTools/ToolTransform.py:164
+#: flatcamEditors/FlatCAMGrbEditor.py:4684 flatcamTools/ToolTransform.py:164
msgid "Factor X:"
msgstr "Коэф. X:"
#: flatcamEditors/FlatCAMGeoEditor.py:763
-#: flatcamEditors/FlatCAMGrbEditor.py:4678 flatcamTools/ToolTransform.py:166
+#: flatcamEditors/FlatCAMGrbEditor.py:4686 flatcamTools/ToolTransform.py:166
msgid "Factor for Scale action over X axis."
msgstr "Коэффициент масштабирования по оси X."
#: flatcamEditors/FlatCAMGeoEditor.py:771
-#: flatcamEditors/FlatCAMGrbEditor.py:4686 flatcamTools/ToolTransform.py:174
+#: flatcamEditors/FlatCAMGrbEditor.py:4694 flatcamTools/ToolTransform.py:174
msgid "Scale X"
msgstr "Масштаб Х"
#: flatcamEditors/FlatCAMGeoEditor.py:773
#: flatcamEditors/FlatCAMGeoEditor.py:790
-#: flatcamEditors/FlatCAMGrbEditor.py:4688
-#: flatcamEditors/FlatCAMGrbEditor.py:4705
+#: flatcamEditors/FlatCAMGrbEditor.py:4696
+#: flatcamEditors/FlatCAMGrbEditor.py:4713
msgid ""
"Scale the selected shape(s).\n"
"The point of reference depends on \n"
@@ -2476,28 +2481,28 @@ msgstr ""
"состояние флажка Scale Reference."
#: flatcamEditors/FlatCAMGeoEditor.py:778
-#: flatcamEditors/FlatCAMGrbEditor.py:4693 flatcamTools/ToolTransform.py:181
+#: flatcamEditors/FlatCAMGrbEditor.py:4701 flatcamTools/ToolTransform.py:181
msgid "Factor Y:"
msgstr "Коэф Y:"
#: flatcamEditors/FlatCAMGeoEditor.py:780
-#: flatcamEditors/FlatCAMGrbEditor.py:4695 flatcamTools/ToolTransform.py:183
+#: flatcamEditors/FlatCAMGrbEditor.py:4703 flatcamTools/ToolTransform.py:183
msgid "Factor for Scale action over Y axis."
msgstr "Коэффициент масштабирования по оси Y."
#: flatcamEditors/FlatCAMGeoEditor.py:788
-#: flatcamEditors/FlatCAMGrbEditor.py:4703 flatcamTools/ToolTransform.py:191
+#: flatcamEditors/FlatCAMGrbEditor.py:4711 flatcamTools/ToolTransform.py:191
msgid "Scale Y"
msgstr "Масштаб Y"
#: flatcamEditors/FlatCAMGeoEditor.py:797
-#: flatcamEditors/FlatCAMGrbEditor.py:4712 flatcamGUI/FlatCAMGUI.py:6441
+#: flatcamEditors/FlatCAMGrbEditor.py:4720 flatcamGUI/FlatCAMGUI.py:6420
#: flatcamTools/ToolTransform.py:200
msgid "Link"
msgstr "Ссылка"
#: flatcamEditors/FlatCAMGeoEditor.py:799
-#: flatcamEditors/FlatCAMGrbEditor.py:4714
+#: flatcamEditors/FlatCAMGrbEditor.py:4722
msgid ""
"Scale the selected shape(s)\n"
"using the Scale Factor X for both axis."
@@ -2506,13 +2511,13 @@ msgstr ""
"используя коэффициент X для обеих осей."
#: flatcamEditors/FlatCAMGeoEditor.py:805
-#: flatcamEditors/FlatCAMGrbEditor.py:4720 flatcamGUI/FlatCAMGUI.py:6449
+#: flatcamEditors/FlatCAMGrbEditor.py:4728 flatcamGUI/FlatCAMGUI.py:6428
#: flatcamTools/ToolTransform.py:208
msgid "Scale Reference"
msgstr "Scale Reference"
#: flatcamEditors/FlatCAMGeoEditor.py:807
-#: flatcamEditors/FlatCAMGrbEditor.py:4722
+#: flatcamEditors/FlatCAMGrbEditor.py:4730
msgid ""
"Scale the selected shape(s)\n"
"using the origin reference when checked,\n"
@@ -2525,24 +2530,24 @@ msgstr ""
"выбранных фигур, если флажок снят."
#: flatcamEditors/FlatCAMGeoEditor.py:835
-#: flatcamEditors/FlatCAMGrbEditor.py:4751 flatcamTools/ToolTransform.py:238
+#: flatcamEditors/FlatCAMGrbEditor.py:4759 flatcamTools/ToolTransform.py:238
msgid "Value X:"
msgstr "Значение X:"
#: flatcamEditors/FlatCAMGeoEditor.py:837
-#: flatcamEditors/FlatCAMGrbEditor.py:4753 flatcamTools/ToolTransform.py:240
+#: flatcamEditors/FlatCAMGrbEditor.py:4761 flatcamTools/ToolTransform.py:240
msgid "Value for Offset action on X axis."
msgstr "Значение для смещения по оси X."
#: flatcamEditors/FlatCAMGeoEditor.py:845
-#: flatcamEditors/FlatCAMGrbEditor.py:4761 flatcamTools/ToolTransform.py:248
+#: flatcamEditors/FlatCAMGrbEditor.py:4769 flatcamTools/ToolTransform.py:248
msgid "Offset X"
msgstr "Смещение Х"
#: flatcamEditors/FlatCAMGeoEditor.py:847
#: flatcamEditors/FlatCAMGeoEditor.py:865
-#: flatcamEditors/FlatCAMGrbEditor.py:4763
-#: flatcamEditors/FlatCAMGrbEditor.py:4781
+#: flatcamEditors/FlatCAMGrbEditor.py:4771
+#: flatcamEditors/FlatCAMGrbEditor.py:4789
msgid ""
"Offset the selected shape(s).\n"
"The point of reference is the middle of\n"
@@ -2553,29 +2558,29 @@ msgstr ""
"ограничительной рамки для всех выбранных фигур.\n"
#: flatcamEditors/FlatCAMGeoEditor.py:853
-#: flatcamEditors/FlatCAMGrbEditor.py:4769 flatcamTools/ToolTransform.py:255
+#: flatcamEditors/FlatCAMGrbEditor.py:4777 flatcamTools/ToolTransform.py:255
msgid "Value Y:"
msgstr "Значение Y:"
#: flatcamEditors/FlatCAMGeoEditor.py:855
-#: flatcamEditors/FlatCAMGrbEditor.py:4771 flatcamTools/ToolTransform.py:257
+#: flatcamEditors/FlatCAMGrbEditor.py:4779 flatcamTools/ToolTransform.py:257
msgid "Value for Offset action on Y axis."
msgstr "Значение для смещения по оси Y."
#: flatcamEditors/FlatCAMGeoEditor.py:863
-#: flatcamEditors/FlatCAMGrbEditor.py:4779 flatcamTools/ToolTransform.py:265
+#: flatcamEditors/FlatCAMGrbEditor.py:4787 flatcamTools/ToolTransform.py:265
msgid "Offset Y"
msgstr "Смещение Y"
#: flatcamEditors/FlatCAMGeoEditor.py:894
-#: flatcamEditors/FlatCAMGrbEditor.py:4810 flatcamTools/ToolTransform.py:295
+#: flatcamEditors/FlatCAMGrbEditor.py:4818 flatcamTools/ToolTransform.py:295
msgid "Flip on X"
msgstr "Отразить по X"
#: flatcamEditors/FlatCAMGeoEditor.py:896
#: flatcamEditors/FlatCAMGeoEditor.py:904
-#: flatcamEditors/FlatCAMGrbEditor.py:4812
#: flatcamEditors/FlatCAMGrbEditor.py:4820
+#: flatcamEditors/FlatCAMGrbEditor.py:4828
msgid ""
"Flip the selected shape(s) over the X axis.\n"
"Does not create a new shape."
@@ -2584,17 +2589,17 @@ msgstr ""
"Не создает новую фугуру."
#: flatcamEditors/FlatCAMGeoEditor.py:902
-#: flatcamEditors/FlatCAMGrbEditor.py:4818 flatcamTools/ToolTransform.py:303
+#: flatcamEditors/FlatCAMGrbEditor.py:4826 flatcamTools/ToolTransform.py:303
msgid "Flip on Y"
msgstr "Отразить по Y"
#: flatcamEditors/FlatCAMGeoEditor.py:911
-#: flatcamEditors/FlatCAMGrbEditor.py:4827 flatcamTools/ToolTransform.py:312
+#: flatcamEditors/FlatCAMGrbEditor.py:4835 flatcamTools/ToolTransform.py:312
msgid "Ref Pt"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:913
-#: flatcamEditors/FlatCAMGrbEditor.py:4829
+#: flatcamEditors/FlatCAMGrbEditor.py:4837
msgid ""
"Flip the selected shape(s)\n"
"around the point in Point Entry Field.\n"
@@ -2617,12 +2622,12 @@ msgstr ""
"поле ввода и нажмите «Отразить по X (Y)»"
#: flatcamEditors/FlatCAMGeoEditor.py:925
-#: flatcamEditors/FlatCAMGrbEditor.py:4841 flatcamTools/ToolTransform.py:325
+#: flatcamEditors/FlatCAMGrbEditor.py:4849 flatcamTools/ToolTransform.py:325
msgid "Point:"
msgstr "Точка:"
#: flatcamEditors/FlatCAMGeoEditor.py:927
-#: flatcamEditors/FlatCAMGrbEditor.py:4843
+#: flatcamEditors/FlatCAMGrbEditor.py:4851
msgid ""
"Coordinates in format (x, y) used as reference for mirroring.\n"
"The 'x' in (x, y) will be used when using Flip on X and\n"
@@ -2634,7 +2639,7 @@ msgstr ""
"'y' в (x, y) будет использоваться при отражении по Y."
#: flatcamEditors/FlatCAMGeoEditor.py:939
-#: flatcamEditors/FlatCAMGrbEditor.py:4855 flatcamTools/ToolTransform.py:339
+#: flatcamEditors/FlatCAMGrbEditor.py:4863 flatcamTools/ToolTransform.py:339
msgid ""
"The point coordinates can be captured by\n"
"left click on canvas together with pressing\n"
@@ -2645,257 +2650,257 @@ msgstr ""
"клавиши SHIFT. Затем нажмите кнопку 'Добавить', чтобы вставить координаты."
#: flatcamEditors/FlatCAMGeoEditor.py:1054
-#: flatcamEditors/FlatCAMGrbEditor.py:4980
+#: flatcamEditors/FlatCAMGrbEditor.py:4988
msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected."
msgstr "[WARNING_NOTCL] Трансформация отменена. Фигура не выбрана."
#: flatcamEditors/FlatCAMGeoEditor.py:1075
-#: flatcamEditors/FlatCAMGrbEditor.py:5000 flatcamTools/ToolTransform.py:468
+#: flatcamEditors/FlatCAMGrbEditor.py:5008 flatcamTools/ToolTransform.py:468
msgid "[ERROR_NOTCL] Wrong value format entered for Rotate, use a number."
msgstr ""
"[ERROR_NOTCL] Неверный формат значения, введенный для поворота, используйте "
"числа."
#: flatcamEditors/FlatCAMGeoEditor.py:1112
-#: flatcamEditors/FlatCAMGrbEditor.py:5043 flatcamTools/ToolTransform.py:502
+#: flatcamEditors/FlatCAMGrbEditor.py:5051 flatcamTools/ToolTransform.py:502
msgid "[ERROR_NOTCL] Wrong value format entered for Skew X, use a number."
msgstr ""
"[ERROR_NOTCL] Неверный формат значения, введенный для наклона по X, "
"используйте числа."
#: flatcamEditors/FlatCAMGeoEditor.py:1133
-#: flatcamEditors/FlatCAMGrbEditor.py:5070 flatcamTools/ToolTransform.py:520
+#: flatcamEditors/FlatCAMGrbEditor.py:5078 flatcamTools/ToolTransform.py:520
msgid "[ERROR_NOTCL] Wrong value format entered for Skew Y, use a number."
msgstr ""
"[ERROR_NOTCL] Неверный формат значения, введенный для наклона поY, "
"используйте числа."
#: flatcamEditors/FlatCAMGeoEditor.py:1154
-#: flatcamEditors/FlatCAMGrbEditor.py:5097 flatcamTools/ToolTransform.py:538
+#: flatcamEditors/FlatCAMGrbEditor.py:5105 flatcamTools/ToolTransform.py:538
msgid "[ERROR_NOTCL] Wrong value format entered for Scale X, use a number."
msgstr ""
"[ERROR_NOTCL] Неверный формат значения, введенный для масштабирования по X, "
"используйте числа."
#: flatcamEditors/FlatCAMGeoEditor.py:1191
-#: flatcamEditors/FlatCAMGrbEditor.py:5138 flatcamTools/ToolTransform.py:572
+#: flatcamEditors/FlatCAMGrbEditor.py:5146 flatcamTools/ToolTransform.py:572
msgid "[ERROR_NOTCL] Wrong value format entered for Scale Y, use a number."
msgstr ""
"[ERROR_NOTCL] Неверный формат значения, введенный для масштабирования по Y, "
"используйте числа."
#: flatcamEditors/FlatCAMGeoEditor.py:1223
-#: flatcamEditors/FlatCAMGrbEditor.py:5176 flatcamTools/ToolTransform.py:601
+#: flatcamEditors/FlatCAMGrbEditor.py:5184 flatcamTools/ToolTransform.py:601
msgid "[ERROR_NOTCL] Wrong value format entered for Offset X, use a number."
msgstr ""
"[ERROR_NOTCL] Неверный формат значения, введенный для смещения по X, "
"используйте числа."
#: flatcamEditors/FlatCAMGeoEditor.py:1244
-#: flatcamEditors/FlatCAMGrbEditor.py:5202 flatcamTools/ToolTransform.py:619
+#: flatcamEditors/FlatCAMGrbEditor.py:5210 flatcamTools/ToolTransform.py:619
msgid "[ERROR_NOTCL] Wrong value format entered for Offset Y, use a number."
msgstr ""
"[ERROR_NOTCL] Неверный формат значения, введенный для смещения по Y, "
"используйте числа."
#: flatcamEditors/FlatCAMGeoEditor.py:1262
-#: flatcamEditors/FlatCAMGrbEditor.py:5225
+#: flatcamEditors/FlatCAMGrbEditor.py:5233
msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!"
msgstr ""
"[WARNING_NOTCL] Фигура не выбрана. Пожалуйста, выберите фигуру для поворота!"
#: flatcamEditors/FlatCAMGeoEditor.py:1265
-#: flatcamEditors/FlatCAMGrbEditor.py:5228 flatcamTools/ToolTransform.py:640
+#: flatcamEditors/FlatCAMGrbEditor.py:5236 flatcamTools/ToolTransform.py:640
msgid "Appying Rotate"
msgstr "Применение поворота"
#: flatcamEditors/FlatCAMGeoEditor.py:1293
-#: flatcamEditors/FlatCAMGrbEditor.py:5259
+#: flatcamEditors/FlatCAMGrbEditor.py:5269
msgid "[success] Done. Rotate completed."
msgstr "[success] Готово. Поворот выполнен."
#: flatcamEditors/FlatCAMGeoEditor.py:1309
-#: flatcamEditors/FlatCAMGrbEditor.py:5278
+#: flatcamEditors/FlatCAMGrbEditor.py:5288
msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to flip!"
msgstr ""
"[WARNING_NOTCL] Фигура не выбрана. Пожалуйста, выберите фигуру для "
"переворота!"
#: flatcamEditors/FlatCAMGeoEditor.py:1312
-#: flatcamEditors/FlatCAMGrbEditor.py:5281 flatcamTools/ToolTransform.py:691
+#: flatcamEditors/FlatCAMGrbEditor.py:5291 flatcamTools/ToolTransform.py:691
msgid "Applying Flip"
msgstr "Применение отражения"
#: flatcamEditors/FlatCAMGeoEditor.py:1342
-#: flatcamEditors/FlatCAMGrbEditor.py:5318 flatcamTools/ToolTransform.py:733
+#: flatcamEditors/FlatCAMGrbEditor.py:5330 flatcamTools/ToolTransform.py:733
msgid "[success] Flip on the Y axis done ..."
msgstr "[success] Отражение по оси Y завершено ..."
#: flatcamEditors/FlatCAMGeoEditor.py:1345
-#: flatcamEditors/FlatCAMGrbEditor.py:5326 flatcamTools/ToolTransform.py:742
+#: flatcamEditors/FlatCAMGrbEditor.py:5338 flatcamTools/ToolTransform.py:742
msgid "[success] Flip on the X axis done ..."
msgstr "[success] Отражение по оси Х завершёно ..."
#: flatcamEditors/FlatCAMGeoEditor.py:1364
-#: flatcamEditors/FlatCAMGrbEditor.py:5346
+#: flatcamEditors/FlatCAMGrbEditor.py:5358
msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!"
msgstr ""
"[WARNING_NOTCL] Фигура не выбрана. Пожалуйста, выберите фигуру для сдвига/"
"наклона!"
#: flatcamEditors/FlatCAMGeoEditor.py:1367
-#: flatcamEditors/FlatCAMGrbEditor.py:5349 flatcamTools/ToolTransform.py:760
+#: flatcamEditors/FlatCAMGrbEditor.py:5361 flatcamTools/ToolTransform.py:760
msgid "Applying Skew"
msgstr "Применение наклона"
#: flatcamEditors/FlatCAMGeoEditor.py:1392
-#: flatcamEditors/FlatCAMGrbEditor.py:5382 flatcamTools/ToolTransform.py:791
+#: flatcamEditors/FlatCAMGrbEditor.py:5396 flatcamTools/ToolTransform.py:791
#, python-format
msgid "[success] Skew on the %s axis done ..."
msgstr "[success] Наклон по оси %s выполнен ..."
#: flatcamEditors/FlatCAMGeoEditor.py:1396
-#: flatcamEditors/FlatCAMGrbEditor.py:5386 flatcamTools/ToolTransform.py:795
+#: flatcamEditors/FlatCAMGrbEditor.py:5400 flatcamTools/ToolTransform.py:795
#, python-format
msgid "[ERROR_NOTCL] Due of %s, Skew action was not executed."
msgstr "[ERROR_NOTCL] Из-за %s наклон не был выполнен."
#: flatcamEditors/FlatCAMGeoEditor.py:1407
-#: flatcamEditors/FlatCAMGrbEditor.py:5405
+#: flatcamEditors/FlatCAMGrbEditor.py:5419
msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to scale!"
msgstr ""
"[WARNING_NOTCL] Фигура не выбрана. Пожалуйста, выберите фигуру для "
"масштабирования!"
#: flatcamEditors/FlatCAMGeoEditor.py:1410
-#: flatcamEditors/FlatCAMGrbEditor.py:5408 flatcamTools/ToolTransform.py:809
+#: flatcamEditors/FlatCAMGrbEditor.py:5422 flatcamTools/ToolTransform.py:809
msgid "Applying Scale"
msgstr "Применение масштабирования"
#: flatcamEditors/FlatCAMGeoEditor.py:1443
-#: flatcamEditors/FlatCAMGrbEditor.py:5444 flatcamTools/ToolTransform.py:848
+#: flatcamEditors/FlatCAMGrbEditor.py:5460 flatcamTools/ToolTransform.py:848
#, python-format
msgid "[success] Scale on the %s axis done ..."
msgstr "[success] Масштабирование по оси %s выполнено ..."
#: flatcamEditors/FlatCAMGeoEditor.py:1446
-#: flatcamEditors/FlatCAMGrbEditor.py:5447 flatcamTools/ToolTransform.py:851
+#: flatcamEditors/FlatCAMGrbEditor.py:5463 flatcamTools/ToolTransform.py:851
#, python-format
msgid "[ERROR_NOTCL] Due of %s, Scale action was not executed."
msgstr "[ERROR_NOTCL] Из-за %s, операция масштабирования не была выполнена."
#: flatcamEditors/FlatCAMGeoEditor.py:1455
-#: flatcamEditors/FlatCAMGrbEditor.py:5460
+#: flatcamEditors/FlatCAMGrbEditor.py:5476
msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to offset!"
msgstr ""
"[WARNING_NOTCL] Фигура не выбрана. Пожалуйста, выберите фигуру для смещения!"
#: flatcamEditors/FlatCAMGeoEditor.py:1458
-#: flatcamEditors/FlatCAMGrbEditor.py:5463 flatcamTools/ToolTransform.py:861
+#: flatcamEditors/FlatCAMGrbEditor.py:5479 flatcamTools/ToolTransform.py:861
msgid "Applying Offset"
msgstr "Применение смещения"
#: flatcamEditors/FlatCAMGeoEditor.py:1469
-#: flatcamEditors/FlatCAMGrbEditor.py:5484 flatcamTools/ToolTransform.py:880
+#: flatcamEditors/FlatCAMGrbEditor.py:5501 flatcamTools/ToolTransform.py:880
#, python-format
msgid "[success] Offset on the %s axis done ..."
msgstr "[success] Смещение по оси %s выполнено ..."
#: flatcamEditors/FlatCAMGeoEditor.py:1473
-#: flatcamEditors/FlatCAMGrbEditor.py:5488 flatcamTools/ToolTransform.py:884
+#: flatcamEditors/FlatCAMGrbEditor.py:5505 flatcamTools/ToolTransform.py:884
#, python-format
msgid "[ERROR_NOTCL] Due of %s, Offset action was not executed."
msgstr "[ERROR_NOTCL] Из-за %s операция смещения не была выполнена."
#: flatcamEditors/FlatCAMGeoEditor.py:1477
-#: flatcamEditors/FlatCAMGrbEditor.py:5492
+#: flatcamEditors/FlatCAMGrbEditor.py:5509
msgid "Rotate ..."
msgstr "Поворот ..."
#: flatcamEditors/FlatCAMGeoEditor.py:1478
#: flatcamEditors/FlatCAMGeoEditor.py:1535
#: flatcamEditors/FlatCAMGeoEditor.py:1552
-#: flatcamEditors/FlatCAMGrbEditor.py:5493
-#: flatcamEditors/FlatCAMGrbEditor.py:5550
+#: flatcamEditors/FlatCAMGrbEditor.py:5510
#: flatcamEditors/FlatCAMGrbEditor.py:5567
+#: flatcamEditors/FlatCAMGrbEditor.py:5584
msgid "Enter an Angle Value (degrees):"
msgstr "Введите значение угла (градусы):"
#: flatcamEditors/FlatCAMGeoEditor.py:1487
-#: flatcamEditors/FlatCAMGrbEditor.py:5502
+#: flatcamEditors/FlatCAMGrbEditor.py:5519
msgid "[success] Geometry shape rotate done..."
msgstr "[success] Вращение фигуры выполнено..."
#: flatcamEditors/FlatCAMGeoEditor.py:1492
-#: flatcamEditors/FlatCAMGrbEditor.py:5507
+#: flatcamEditors/FlatCAMGrbEditor.py:5524
msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..."
msgstr "[WARNING_NOTCL] Вращение фигуры отменено..."
#: flatcamEditors/FlatCAMGeoEditor.py:1498
-#: flatcamEditors/FlatCAMGrbEditor.py:5513
+#: flatcamEditors/FlatCAMGrbEditor.py:5530
msgid "Offset on X axis ..."
msgstr "Смещение по оси X ..."
#: flatcamEditors/FlatCAMGeoEditor.py:1499
#: flatcamEditors/FlatCAMGeoEditor.py:1518
-#: flatcamEditors/FlatCAMGrbEditor.py:5514
-#: flatcamEditors/FlatCAMGrbEditor.py:5533
+#: flatcamEditors/FlatCAMGrbEditor.py:5531
+#: flatcamEditors/FlatCAMGrbEditor.py:5550
#, python-format
msgid "Enter a distance Value (%s):"
msgstr "Введите значение расстояния (%s):"
#: flatcamEditors/FlatCAMGeoEditor.py:1508
-#: flatcamEditors/FlatCAMGrbEditor.py:5523
+#: flatcamEditors/FlatCAMGrbEditor.py:5540
msgid "[success] Geometry shape offset on X axis done..."
msgstr "[success] Смещение формы по оси X выполнено..."
#: flatcamEditors/FlatCAMGeoEditor.py:1512
-#: flatcamEditors/FlatCAMGrbEditor.py:5527
+#: flatcamEditors/FlatCAMGrbEditor.py:5544
msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..."
msgstr "[WARNING_NOTCL] Смещение формы по оси X отменено..."
#: flatcamEditors/FlatCAMGeoEditor.py:1517
-#: flatcamEditors/FlatCAMGrbEditor.py:5532
+#: flatcamEditors/FlatCAMGrbEditor.py:5549
msgid "Offset on Y axis ..."
msgstr "Смещение по оси Y ..."
#: flatcamEditors/FlatCAMGeoEditor.py:1527
-#: flatcamEditors/FlatCAMGrbEditor.py:5542
+#: flatcamEditors/FlatCAMGrbEditor.py:5559
msgid "[success] Geometry shape offset on Y axis done..."
msgstr "[success] Смещение формы по оси Y выполнено..."
#: flatcamEditors/FlatCAMGeoEditor.py:1531
-#: flatcamEditors/FlatCAMGrbEditor.py:5546
+#: flatcamEditors/FlatCAMGrbEditor.py:5563
msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..."
msgstr "[WARNING_NOTCL] Смещение формы по оси Y отменено..."
#: flatcamEditors/FlatCAMGeoEditor.py:1534
-#: flatcamEditors/FlatCAMGrbEditor.py:5549
+#: flatcamEditors/FlatCAMGrbEditor.py:5566
msgid "Skew on X axis ..."
msgstr "Наклон по оси X ..."
#: flatcamEditors/FlatCAMGeoEditor.py:1544
-#: flatcamEditors/FlatCAMGrbEditor.py:5559
+#: flatcamEditors/FlatCAMGrbEditor.py:5576
msgid "[success] Geometry shape skew on X axis done..."
msgstr "[success] Наклон формы по оси X выполнен..."
#: flatcamEditors/FlatCAMGeoEditor.py:1548
-#: flatcamEditors/FlatCAMGrbEditor.py:5563
+#: flatcamEditors/FlatCAMGrbEditor.py:5580
msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..."
msgstr "[WARNING_NOTCL] Наклон формы по оси X отменён..."
#: flatcamEditors/FlatCAMGeoEditor.py:1551
-#: flatcamEditors/FlatCAMGrbEditor.py:5566
+#: flatcamEditors/FlatCAMGrbEditor.py:5583
msgid "Skew on Y axis ..."
msgstr "Наклон по оси Y ..."
#: flatcamEditors/FlatCAMGeoEditor.py:1561
-#: flatcamEditors/FlatCAMGrbEditor.py:5576
+#: flatcamEditors/FlatCAMGrbEditor.py:5593
msgid "[success] Geometry shape skew on Y axis done..."
msgstr "[success] Наклон формы по оси Y выполнен..."
#: flatcamEditors/FlatCAMGeoEditor.py:1565
-#: flatcamEditors/FlatCAMGrbEditor.py:5580
+#: flatcamEditors/FlatCAMGrbEditor.py:5597
msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..."
msgstr "[WARNING_NOTCL] Наклон формы по оси Y отменён..."
@@ -3052,7 +3057,7 @@ msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected."
msgstr "[WARNING_NOTCL] Создание буфера отменено. Фигура не выбрана."
#: flatcamEditors/FlatCAMGeoEditor.py:2711
-#: flatcamEditors/FlatCAMGrbEditor.py:4442
+#: flatcamEditors/FlatCAMGrbEditor.py:4447
msgid "[success] Done. Buffer Tool completed."
msgstr "[success] Готово. Создание буфера завершено."
@@ -3095,7 +3100,7 @@ msgstr "Создать геометрию окрашивания ..."
msgid "Shape transformations ..."
msgstr "Преобразования фигуры ..."
-#: flatcamEditors/FlatCAMGeoEditor.py:3416
+#: flatcamEditors/FlatCAMGeoEditor.py:3419
#, python-brace-format
msgid ""
"[WARNING_NOTCL] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}"
@@ -3103,19 +3108,19 @@ msgstr ""
"[WARNING_NOTCL] Редактирование MultiGeo Geometry, инструментом: {tool} с "
"диаметром: {dia}"
-#: flatcamEditors/FlatCAMGeoEditor.py:3793
+#: flatcamEditors/FlatCAMGeoEditor.py:3796
msgid "[WARNING_NOTCL] Copy cancelled. No shape selected."
msgstr "[WARNING_NOTCL] Копирование отменено. Форма не выбрана."
-#: flatcamEditors/FlatCAMGeoEditor.py:3800 flatcamGUI/FlatCAMGUI.py:2727
+#: flatcamEditors/FlatCAMGeoEditor.py:3803 flatcamGUI/FlatCAMGUI.py:2727
#: flatcamGUI/FlatCAMGUI.py:2773 flatcamGUI/FlatCAMGUI.py:2791
#: flatcamGUI/FlatCAMGUI.py:2922 flatcamGUI/FlatCAMGUI.py:2934
#: flatcamGUI/FlatCAMGUI.py:2968
msgid "Click on target point."
msgstr "Нажмите на целевой точке."
-#: flatcamEditors/FlatCAMGeoEditor.py:4044
-#: flatcamEditors/FlatCAMGeoEditor.py:4079
+#: flatcamEditors/FlatCAMGeoEditor.py:4047
+#: flatcamEditors/FlatCAMGeoEditor.py:4082
msgid ""
"[WARNING_NOTCL] A selection of at least 2 geo items is required to do "
"Intersection."
@@ -3123,9 +3128,9 @@ msgstr ""
"[WARNING_NOTCL] Выберите по крайней мере 2 geo элемента, что-бы сделать "
"пересечение."
-#: flatcamEditors/FlatCAMGeoEditor.py:4163
-#: flatcamEditors/FlatCAMGeoEditor.py:4201
-#: flatcamEditors/FlatCAMGeoEditor.py:4277
+#: flatcamEditors/FlatCAMGeoEditor.py:4166
+#: flatcamEditors/FlatCAMGeoEditor.py:4204
+#: flatcamEditors/FlatCAMGeoEditor.py:4280
msgid ""
"[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to "
"generate an 'inside' shape"
@@ -3133,52 +3138,52 @@ msgstr ""
"[ERROR_NOTCL] Отрицательное значение буфера не принимается. Используйте "
"внутренний буфер для создания \"внутри\" формы"
-#: flatcamEditors/FlatCAMGeoEditor.py:4172
-#: flatcamEditors/FlatCAMGeoEditor.py:4210
-#: flatcamEditors/FlatCAMGeoEditor.py:4285
+#: flatcamEditors/FlatCAMGeoEditor.py:4175
+#: flatcamEditors/FlatCAMGeoEditor.py:4213
+#: flatcamEditors/FlatCAMGeoEditor.py:4288
msgid "[WARNING_NOTCL] Nothing selected for buffering."
msgstr "[WARNING_NOTCL] Ничего не выбрано для создания буфера."
-#: flatcamEditors/FlatCAMGeoEditor.py:4176
-#: flatcamEditors/FlatCAMGeoEditor.py:4214
-#: flatcamEditors/FlatCAMGeoEditor.py:4289
+#: flatcamEditors/FlatCAMGeoEditor.py:4179
+#: flatcamEditors/FlatCAMGeoEditor.py:4217
+#: flatcamEditors/FlatCAMGeoEditor.py:4292
msgid "[WARNING_NOTCL] Invalid distance for buffering."
msgstr "[WARNING_NOTCL] Недопустимое расстояние для создания буфера."
-#: flatcamEditors/FlatCAMGeoEditor.py:4186
-#: flatcamEditors/FlatCAMGeoEditor.py:4298
+#: flatcamEditors/FlatCAMGeoEditor.py:4189
+#: flatcamEditors/FlatCAMGeoEditor.py:4301
msgid ""
"[ERROR_NOTCL] Failed, the result is empty. Choose a different buffer value."
msgstr ""
"[ERROR_NOTCL] Ошибка, результат нулевой. Выберите другое значение буфера."
-#: flatcamEditors/FlatCAMGeoEditor.py:4194
+#: flatcamEditors/FlatCAMGeoEditor.py:4197
msgid "[success] Full buffer geometry created."
-msgstr "[success] Создана геометрия полного буфера"
+msgstr "[success] Создана геометрия полного буфера."
-#: flatcamEditors/FlatCAMGeoEditor.py:4224
+#: flatcamEditors/FlatCAMGeoEditor.py:4227
msgid ""
"[ERROR_NOTCL] Failed, the result is empty. Choose a smaller buffer value."
msgstr ""
"[ERROR_NOTCL] Ошибка, результат нулевой. Выберите меньшее значение буфера."
-#: flatcamEditors/FlatCAMGeoEditor.py:4239
+#: flatcamEditors/FlatCAMGeoEditor.py:4242
msgid "[success] Interior buffer geometry created."
msgstr "[success] Создана геометрия внутреннего буфера."
-#: flatcamEditors/FlatCAMGeoEditor.py:4310
+#: flatcamEditors/FlatCAMGeoEditor.py:4313
msgid "[success] Exterior buffer geometry created."
msgstr "[success] Создана геометрия внешнего буфера."
-#: flatcamEditors/FlatCAMGeoEditor.py:4374
+#: flatcamEditors/FlatCAMGeoEditor.py:4377
msgid "[WARNING_NOTCL] Nothing selected for painting."
msgstr "[WARNING_NOTCL] Ничего не выбрано для рисования."
-#: flatcamEditors/FlatCAMGeoEditor.py:4380
+#: flatcamEditors/FlatCAMGeoEditor.py:4383
msgid "[WARNING] Invalid value for {}"
msgstr "[WARNING] Неверное значение для {}"
-#: flatcamEditors/FlatCAMGeoEditor.py:4386
+#: flatcamEditors/FlatCAMGeoEditor.py:4389
msgid ""
"[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 "
"(100%)."
@@ -3186,7 +3191,7 @@ msgstr ""
"[ERROR_NOTCL] Окраска не выполнена. Значение перекрытия должно быть меньше "
"1,00 (100%)."
-#: flatcamEditors/FlatCAMGeoEditor.py:4445
+#: flatcamEditors/FlatCAMGeoEditor.py:4448
#, python-format
msgid ""
"[ERROR] Could not do Paint. Try a different combination of parameters. Or a "
@@ -3197,7 +3202,7 @@ msgstr ""
"другой способ рисования\n"
"%s"
-#: flatcamEditors/FlatCAMGeoEditor.py:4456
+#: flatcamEditors/FlatCAMGeoEditor.py:4459
msgid "[success] Paint done."
msgstr "[success] Окраска выполнена."
@@ -3365,23 +3370,23 @@ msgid "Apertures Table for the Gerber Object."
msgstr "Таблица отверстий для объекта Gerber."
#: flatcamEditors/FlatCAMGrbEditor.py:2291
-#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228
+#: flatcamEditors/FlatCAMGrbEditor.py:3601 flatcamGUI/ObjectUI.py:228
msgid "Code"
msgstr "Код"
#: flatcamEditors/FlatCAMGrbEditor.py:2291
-#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228
+#: flatcamEditors/FlatCAMGrbEditor.py:3601 flatcamGUI/ObjectUI.py:228
#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465
msgid "Type"
msgstr "Тип"
#: flatcamEditors/FlatCAMGrbEditor.py:2291
-#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228
+#: flatcamEditors/FlatCAMGrbEditor.py:3601 flatcamGUI/ObjectUI.py:228
msgid "Size"
msgstr "Размер"
#: flatcamEditors/FlatCAMGrbEditor.py:2291
-#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228
+#: flatcamEditors/FlatCAMGrbEditor.py:3601 flatcamGUI/ObjectUI.py:228
msgid "Dim"
msgstr "Размер"
@@ -3395,7 +3400,7 @@ msgstr "Код отверстия"
#: flatcamEditors/FlatCAMGrbEditor.py:2299 flatcamGUI/ObjectUI.py:236
msgid "Type of aperture: circular, rectangle, macros etc"
-msgstr "Тип отверстия: круг, прямоугольник, макросы и т.д."
+msgstr "Тип отверстия: круг, прямоугольник, макросы и так далее"
#: flatcamEditors/FlatCAMGrbEditor.py:2301
#: flatcamEditors/FlatCAMGrbEditor.py:2334 flatcamGUI/ObjectUI.py:238
@@ -3628,15 +3633,15 @@ msgstr "[success] Редактирование Gerber завершено."
msgid "[WARNING_NOTCL] Cancelled. No aperture is selected"
msgstr "[WARNING_NOTCL] Отмена. Нет выбранных отверстий"
-#: flatcamEditors/FlatCAMGrbEditor.py:4270
+#: flatcamEditors/FlatCAMGrbEditor.py:4280
msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected."
msgstr "[ERROR_NOTCL] Ошибка. Не выбрана геометрия отверстий."
-#: flatcamEditors/FlatCAMGrbEditor.py:4278
+#: flatcamEditors/FlatCAMGrbEditor.py:4288
msgid "[success] Done. Apertures geometry deleted."
msgstr "[success] Готово. Геометрия отверстий удалена."
-#: flatcamEditors/FlatCAMGrbEditor.py:4427
+#: flatcamEditors/FlatCAMGrbEditor.py:4431
msgid ""
"[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try "
"again."
@@ -3644,7 +3649,15 @@ msgstr ""
"[WARNING_NOTCL] Нет отверстий для создания буфера. Выберите хотя бы одно "
"отверстие и повторите попытку."
-#: flatcamEditors/FlatCAMGrbEditor.py:4456
+#: flatcamEditors/FlatCAMGrbEditor.py:4444
+#, fuzzy, python-format
+#| msgid "[ERROR_NOTCL] Failed to open %s"
+msgid ""
+"[ERROR_NOTCL] Failed.\n"
+"%s"
+msgstr "[ERROR_NOTCL] Не удалось открыть %s"
+
+#: flatcamEditors/FlatCAMGrbEditor.py:4461
msgid ""
"[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and "
"retry."
@@ -3652,7 +3665,7 @@ msgstr ""
"[WARNING_NOTCL] Отсутствует значение коэффициента масштабирования или оно "
"имеет неправильный формат. Добавьте его и повторите попытку."
-#: flatcamEditors/FlatCAMGrbEditor.py:4486
+#: flatcamEditors/FlatCAMGrbEditor.py:4494
msgid ""
"[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try "
"again."
@@ -3660,7 +3673,7 @@ msgstr ""
"[WARNING_NOTCL] Нет отверстий для масштабирования. Выберите хотя бы одно "
"отверстие и повторите попытку."
-#: flatcamEditors/FlatCAMGrbEditor.py:4502
+#: flatcamEditors/FlatCAMGrbEditor.py:4510
msgid "[success] Done. Scale Tool completed."
msgstr "[success] Готово. Масштабирование выполнено."
@@ -5856,7 +5869,7 @@ msgid "Gerber General"
msgstr "Gerber основные"
#: flatcamGUI/FlatCAMGUI.py:3995 flatcamGUI/FlatCAMGUI.py:4361
-#: flatcamGUI/FlatCAMGUI.py:5153 flatcamGUI/FlatCAMGUI.py:5525
+#: flatcamGUI/FlatCAMGUI.py:5135 flatcamGUI/FlatCAMGUI.py:5504
#: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:505
#: flatcamGUI/ObjectUI.py:833 flatcamGUI/ObjectUI.py:1350
msgid "Plot Options:"
@@ -5880,18 +5893,18 @@ msgid "Draw polygons in different colors."
msgstr "Окрашивать полигоны разными цветами."
#: flatcamGUI/FlatCAMGUI.py:4016 flatcamGUI/FlatCAMGUI.py:4367
-#: flatcamGUI/FlatCAMGUI.py:5157 flatcamGUI/ObjectUI.py:172
+#: flatcamGUI/FlatCAMGUI.py:5139 flatcamGUI/ObjectUI.py:172
msgid "Plot"
msgstr "Участок"
-#: flatcamGUI/FlatCAMGUI.py:4018 flatcamGUI/FlatCAMGUI.py:5159
+#: flatcamGUI/FlatCAMGUI.py:4018 flatcamGUI/FlatCAMGUI.py:5141
#: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:546
#: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1450
msgid "Plot (show) this object."
msgstr "Начертить (отобразить) этот объект."
-#: flatcamGUI/FlatCAMGUI.py:4023 flatcamGUI/FlatCAMGUI.py:5166
-#: flatcamGUI/FlatCAMGUI.py:5608
+#: flatcamGUI/FlatCAMGUI.py:4023 flatcamGUI/FlatCAMGUI.py:5149
+#: flatcamGUI/FlatCAMGUI.py:5587
msgid "Circle Steps:"
msgstr "Круговые шаги:"
@@ -5918,8 +5931,8 @@ msgstr ""
"с траекториям обрезки за\n"
"пределами полигонов."
-#: flatcamGUI/FlatCAMGUI.py:4056 flatcamGUI/FlatCAMGUI.py:4753
-#: flatcamGUI/FlatCAMGUI.py:5897 flatcamGUI/ObjectUI.py:788
+#: flatcamGUI/FlatCAMGUI.py:4056 flatcamGUI/FlatCAMGUI.py:4735
+#: flatcamGUI/FlatCAMGUI.py:5876 flatcamGUI/ObjectUI.py:788
#: flatcamGUI/ObjectUI.py:804
msgid "Diameter of the cutting tool."
msgstr "Диаметр режущего инструмента."
@@ -5976,7 +5989,7 @@ msgstr "Объединить все проходы в один объект"
msgid "Clear non-copper:"
msgstr "Очистка меди:"
-#: flatcamGUI/FlatCAMGUI.py:4104 flatcamGUI/FlatCAMGUI.py:5785
+#: flatcamGUI/FlatCAMGUI.py:4104 flatcamGUI/FlatCAMGUI.py:5764
#: flatcamGUI/ObjectUI.py:386
msgid ""
"Create a Geometry object with\n"
@@ -6083,7 +6096,7 @@ msgstr ""
msgid "Gerber Export"
msgstr "Экспорт Gerber"
-#: flatcamGUI/FlatCAMGUI.py:4232 flatcamGUI/FlatCAMGUI.py:4902
+#: flatcamGUI/FlatCAMGUI.py:4232 flatcamGUI/FlatCAMGUI.py:4884
msgid "Export Options:"
msgstr "Параметры экспорта:"
@@ -6093,7 +6106,7 @@ msgid ""
"when using the File -> Export -> Export Gerber menu entry."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4243 flatcamGUI/FlatCAMGUI.py:4913
+#: flatcamGUI/FlatCAMGUI.py:4243 flatcamGUI/FlatCAMGUI.py:4895
msgid "Units:"
msgstr "Единицы:"
@@ -6101,7 +6114,7 @@ msgstr "Единицы:"
msgid "The units used in the Gerber file."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4257 flatcamGUI/FlatCAMGUI.py:4927
+#: flatcamGUI/FlatCAMGUI.py:4257 flatcamGUI/FlatCAMGUI.py:4909
msgid "Int/Decimals:"
msgstr "Int/Decimals:"
@@ -6123,7 +6136,7 @@ msgid ""
"the decimal part of Gerber coordinates."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4293 flatcamGUI/FlatCAMGUI.py:4988
+#: flatcamGUI/FlatCAMGUI.py:4293 flatcamGUI/FlatCAMGUI.py:4970
msgid "Zeros:"
msgstr "Нули:"
@@ -6136,12 +6149,12 @@ msgid ""
"and Leading Zeros are kept."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4326 flatcamGUI/FlatCAMGUI.py:5029
-#: flatcamGUI/FlatCAMGUI.py:5491 flatcamGUI/FlatCAMGUI.py:5783
-#: flatcamGUI/FlatCAMGUI.py:5884 flatcamGUI/FlatCAMGUI.py:5963
-#: flatcamGUI/FlatCAMGUI.py:6022 flatcamGUI/FlatCAMGUI.py:6125
-#: flatcamGUI/FlatCAMGUI.py:6186 flatcamGUI/FlatCAMGUI.py:6385
-#: flatcamGUI/FlatCAMGUI.py:6512
+#: flatcamGUI/FlatCAMGUI.py:4326 flatcamGUI/FlatCAMGUI.py:5011
+#: flatcamGUI/FlatCAMGUI.py:5470 flatcamGUI/FlatCAMGUI.py:5762
+#: flatcamGUI/FlatCAMGUI.py:5863 flatcamGUI/FlatCAMGUI.py:5942
+#: flatcamGUI/FlatCAMGUI.py:6001 flatcamGUI/FlatCAMGUI.py:6104
+#: flatcamGUI/FlatCAMGUI.py:6165 flatcamGUI/FlatCAMGUI.py:6364
+#: flatcamGUI/FlatCAMGUI.py:6491
msgid "Parameters:"
msgstr "Параметры:"
@@ -6149,8 +6162,8 @@ msgstr "Параметры:"
msgid "A list of Gerber Editor parameters."
msgstr "Список параметров редактора Gerber."
-#: flatcamGUI/FlatCAMGUI.py:4336 flatcamGUI/FlatCAMGUI.py:5039
-#: flatcamGUI/FlatCAMGUI.py:5501
+#: flatcamGUI/FlatCAMGUI.py:4336 flatcamGUI/FlatCAMGUI.py:5021
+#: flatcamGUI/FlatCAMGUI.py:5480
msgid "Selection limit:"
msgstr ""
@@ -6203,14 +6216,14 @@ msgid "Default values for INCH are 2:4"
msgstr "Значения по умолчанию для ДЮЙМОВОЙ 2:4"
#: flatcamGUI/FlatCAMGUI.py:4418 flatcamGUI/FlatCAMGUI.py:4451
-#: flatcamGUI/FlatCAMGUI.py:4942
+#: flatcamGUI/FlatCAMGUI.py:4924
msgid ""
"This numbers signify the number of digits in\n"
"the whole part of Excellon coordinates."
msgstr ""
#: flatcamGUI/FlatCAMGUI.py:4432 flatcamGUI/FlatCAMGUI.py:4465
-#: flatcamGUI/FlatCAMGUI.py:4956
+#: flatcamGUI/FlatCAMGUI.py:4938
msgid ""
"This numbers signify the number of digits in\n"
"the decimal part of Excellon coordinates."
@@ -6228,7 +6241,7 @@ msgstr "Значения по умолчанию для МЕТРИЧЕСКОЙ 3
msgid "Default Zeros:"
msgstr "Умолчания Нули:"
-#: flatcamGUI/FlatCAMGUI.py:4477 flatcamGUI/FlatCAMGUI.py:4991
+#: flatcamGUI/FlatCAMGUI.py:4477 flatcamGUI/FlatCAMGUI.py:4973
msgid ""
"This sets the type of Excellon zeros.\n"
"If LZ then Leading Zeros are kept and\n"
@@ -6247,11 +6260,11 @@ msgid ""
"and Leading Zeros are removed."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4502
+#: flatcamGUI/FlatCAMGUI.py:4498
msgid "Default Units:"
msgstr "Умолчания Единицы:"
-#: flatcamGUI/FlatCAMGUI.py:4505
+#: flatcamGUI/FlatCAMGUI.py:4501
msgid ""
"This sets the default units of Excellon files.\n"
"If it is not detected in the parsed file the value here\n"
@@ -6259,22 +6272,22 @@ msgid ""
"therefore this parameter will be used."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4516
+#: flatcamGUI/FlatCAMGUI.py:4512
msgid ""
"This sets the units of Excellon files.\n"
"Some Excellon files don't have an header\n"
"therefore this parameter will be used."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4532
+#: flatcamGUI/FlatCAMGUI.py:4520
msgid "Excellon Optimization:"
msgstr "Оптимизация Excellon:"
-#: flatcamGUI/FlatCAMGUI.py:4539
+#: flatcamGUI/FlatCAMGUI.py:4523
msgid "Algorithm: "
msgstr "Алгоритм: "
-#: flatcamGUI/FlatCAMGUI.py:4542 flatcamGUI/FlatCAMGUI.py:4555
+#: flatcamGUI/FlatCAMGUI.py:4525 flatcamGUI/FlatCAMGUI.py:4539
msgid ""
"This sets the optimization type for the Excellon drill path.\n"
"If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n"
@@ -6286,11 +6299,11 @@ msgid ""
"Travelling Salesman algorithm for path optimization."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4567
+#: flatcamGUI/FlatCAMGUI.py:4550
msgid "Optimization Time: "
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4570
+#: flatcamGUI/FlatCAMGUI.py:4553
msgid ""
"When OR-Tools Metaheuristic (MH) is enabled there is a\n"
"maximum threshold for how much time is spent doing the\n"
@@ -6298,27 +6311,27 @@ msgid ""
"In seconds."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4612
+#: flatcamGUI/FlatCAMGUI.py:4596
msgid "Excellon Options"
msgstr "Параметры Excellon"
-#: flatcamGUI/FlatCAMGUI.py:4615 flatcamGUI/ObjectUI.py:584
+#: flatcamGUI/FlatCAMGUI.py:4599 flatcamGUI/ObjectUI.py:584
msgid "Create CNC Job"
msgstr "Создание программы для ЧПУ"
-#: flatcamGUI/FlatCAMGUI.py:4617
+#: flatcamGUI/FlatCAMGUI.py:4601
msgid ""
"Parameters used to create a CNC Job object\n"
"for this drill object."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4625 flatcamGUI/FlatCAMGUI.py:5217
-#: flatcamGUI/FlatCAMGUI.py:6321 flatcamGUI/ObjectUI.py:595
+#: flatcamGUI/FlatCAMGUI.py:4609 flatcamGUI/FlatCAMGUI.py:5196
+#: flatcamGUI/FlatCAMGUI.py:6300 flatcamGUI/ObjectUI.py:595
#: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolCalculators.py:108
msgid "Cut Z:"
msgstr "Глубина резания:"
-#: flatcamGUI/FlatCAMGUI.py:4627 flatcamGUI/ObjectUI.py:597
+#: flatcamGUI/FlatCAMGUI.py:4611 flatcamGUI/ObjectUI.py:597
msgid ""
"Drill depth (negative)\n"
"below the copper surface."
@@ -6326,12 +6339,12 @@ msgstr ""
"Глубина сверления (отрицательная) \n"
"ниже слоя меди."
-#: flatcamGUI/FlatCAMGUI.py:4634 flatcamGUI/FlatCAMGUI.py:5250
+#: flatcamGUI/FlatCAMGUI.py:4618 flatcamGUI/FlatCAMGUI.py:5229
#: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1098
msgid "Travel Z:"
msgstr "Отвод по Z:"
-#: flatcamGUI/FlatCAMGUI.py:4636 flatcamGUI/ObjectUI.py:607
+#: flatcamGUI/FlatCAMGUI.py:4620 flatcamGUI/ObjectUI.py:607
msgid ""
"Tool height when travelling\n"
"across the XY plane."
@@ -6339,11 +6352,11 @@ msgstr ""
"Отвод инструмента при холостом ходе\n"
"по плоскости XY."
-#: flatcamGUI/FlatCAMGUI.py:4644 flatcamGUI/FlatCAMGUI.py:5260
+#: flatcamGUI/FlatCAMGUI.py:4628 flatcamGUI/FlatCAMGUI.py:5239
msgid "Tool change:"
msgstr "Смена инструмента:"
-#: flatcamGUI/FlatCAMGUI.py:4646 flatcamGUI/FlatCAMGUI.py:5262
+#: flatcamGUI/FlatCAMGUI.py:4630 flatcamGUI/FlatCAMGUI.py:5241
#: flatcamGUI/ObjectUI.py:617
msgid ""
"Include tool-change sequence\n"
@@ -6352,19 +6365,19 @@ msgstr ""
"Включает последовательность смены инструмента\n"
"в G-Code (Пауза для смены инструмента)."
-#: flatcamGUI/FlatCAMGUI.py:4653 flatcamGUI/FlatCAMGUI.py:5270
+#: flatcamGUI/FlatCAMGUI.py:4637 flatcamGUI/FlatCAMGUI.py:5249
msgid "Toolchange Z:"
msgstr "Смена инструмента Z :"
-#: flatcamGUI/FlatCAMGUI.py:4655 flatcamGUI/FlatCAMGUI.py:5272
+#: flatcamGUI/FlatCAMGUI.py:4639 flatcamGUI/FlatCAMGUI.py:5251
msgid "Toolchange Z position."
msgstr "Позиция Z смены инструмента."
-#: flatcamGUI/FlatCAMGUI.py:4661
+#: flatcamGUI/FlatCAMGUI.py:4645
msgid "Feedrate:"
msgstr "Скорость подачи:"
-#: flatcamGUI/FlatCAMGUI.py:4663
+#: flatcamGUI/FlatCAMGUI.py:4647
msgid ""
"Tool speed while drilling\n"
"(in units per minute)."
@@ -6372,11 +6385,11 @@ msgstr ""
"Настройка скорости подачи при сверлении \n"
"(в единицах в минуту)."
-#: flatcamGUI/FlatCAMGUI.py:4671
+#: flatcamGUI/FlatCAMGUI.py:4655
msgid "Spindle Speed:"
msgstr "Скорость вр. шпинделя:"
-#: flatcamGUI/FlatCAMGUI.py:4673 flatcamGUI/FlatCAMGUI.py:5302
+#: flatcamGUI/FlatCAMGUI.py:4657 flatcamGUI/FlatCAMGUI.py:5281
#: flatcamGUI/ObjectUI.py:684
msgid ""
"Speed of the spindle\n"
@@ -6385,11 +6398,11 @@ msgstr ""
"Скорость шпинделя\n"
"в оборотах в минуту(опционально) ."
-#: flatcamGUI/FlatCAMGUI.py:4681 flatcamGUI/FlatCAMGUI.py:5310
+#: flatcamGUI/FlatCAMGUI.py:4665 flatcamGUI/FlatCAMGUI.py:5289
msgid "Spindle dir.:"
msgstr "Напр. вращения:"
-#: flatcamGUI/FlatCAMGUI.py:4683 flatcamGUI/FlatCAMGUI.py:5312
+#: flatcamGUI/FlatCAMGUI.py:4667 flatcamGUI/FlatCAMGUI.py:5291
msgid ""
"This sets the direction that the spindle is rotating.\n"
"It can be either:\n"
@@ -6401,12 +6414,12 @@ msgstr ""
"- CW = по часовой стрелке или\n"
"- CCW = против часовой стрелки"
-#: flatcamGUI/FlatCAMGUI.py:4695 flatcamGUI/FlatCAMGUI.py:5324
+#: flatcamGUI/FlatCAMGUI.py:4679 flatcamGUI/FlatCAMGUI.py:5303
#: flatcamGUI/ObjectUI.py:692 flatcamGUI/ObjectUI.py:1224
msgid "Dwell:"
msgstr "Задержка:"
-#: flatcamGUI/FlatCAMGUI.py:4697 flatcamGUI/FlatCAMGUI.py:5326
+#: flatcamGUI/FlatCAMGUI.py:4681 flatcamGUI/FlatCAMGUI.py:5305
#: flatcamGUI/ObjectUI.py:694 flatcamGUI/ObjectUI.py:1227
msgid ""
"Pause to allow the spindle to reach its\n"
@@ -6415,31 +6428,31 @@ msgstr ""
"Задержка для набора оборотов шпинделя\n"
"перед началом обработки."
-#: flatcamGUI/FlatCAMGUI.py:4700 flatcamGUI/FlatCAMGUI.py:5329
+#: flatcamGUI/FlatCAMGUI.py:4684 flatcamGUI/FlatCAMGUI.py:5308
msgid "Duration:"
msgstr "Продолжительность:"
-#: flatcamGUI/FlatCAMGUI.py:4702 flatcamGUI/FlatCAMGUI.py:5331
+#: flatcamGUI/FlatCAMGUI.py:4686 flatcamGUI/FlatCAMGUI.py:5310
#: flatcamGUI/ObjectUI.py:699 flatcamGUI/ObjectUI.py:1234
msgid "Number of milliseconds for spindle to dwell."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4714 flatcamGUI/FlatCAMGUI.py:5341
+#: flatcamGUI/FlatCAMGUI.py:4698 flatcamGUI/FlatCAMGUI.py:5320
#: flatcamGUI/ObjectUI.py:707
msgid "Postprocessor:"
msgstr "Постпроцессор:"
-#: flatcamGUI/FlatCAMGUI.py:4716
+#: flatcamGUI/FlatCAMGUI.py:4700
msgid ""
"The postprocessor file that dictates\n"
"gcode output."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4725
+#: flatcamGUI/FlatCAMGUI.py:4709
msgid "Gcode: "
msgstr "Gcode: "
-#: flatcamGUI/FlatCAMGUI.py:4727
+#: flatcamGUI/FlatCAMGUI.py:4711
msgid ""
"Choose what to use for GCode generation:\n"
"'Drills', 'Slots' or 'Both'.\n"
@@ -6447,82 +6460,82 @@ msgid ""
"converted to drills."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:772
+#: flatcamGUI/FlatCAMGUI.py:4727 flatcamGUI/ObjectUI.py:772
msgid "Mill Holes"
msgstr "Фрезеровка отверстий"
-#: flatcamGUI/FlatCAMGUI.py:4745 flatcamGUI/ObjectUI.py:774
+#: flatcamGUI/FlatCAMGUI.py:4729 flatcamGUI/ObjectUI.py:774
msgid "Create Geometry for milling holes."
msgstr "Создание объекта геометрии для фрезерования отверстий."
-#: flatcamGUI/FlatCAMGUI.py:4751
+#: flatcamGUI/FlatCAMGUI.py:4733
msgid "Drill Tool dia:"
msgstr "Диам. сверла:"
-#: flatcamGUI/FlatCAMGUI.py:4758
+#: flatcamGUI/FlatCAMGUI.py:4740
msgid "Slot Tool dia:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4760
+#: flatcamGUI/FlatCAMGUI.py:4742
msgid ""
"Diameter of the cutting tool\n"
"when milling slots."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4772
+#: flatcamGUI/FlatCAMGUI.py:4754
msgid "Defaults"
msgstr "Значения по умолчанию"
-#: flatcamGUI/FlatCAMGUI.py:4785
+#: flatcamGUI/FlatCAMGUI.py:4767
msgid "Excellon Adv. Options"
msgstr "Excellon дополн."
-#: flatcamGUI/FlatCAMGUI.py:4791 flatcamGUI/FlatCAMGUI.py:5364
+#: flatcamGUI/FlatCAMGUI.py:4773 flatcamGUI/FlatCAMGUI.py:5343
msgid "Advanced Options:"
msgstr "Дополнительные настройки:"
-#: flatcamGUI/FlatCAMGUI.py:4793
+#: flatcamGUI/FlatCAMGUI.py:4775
msgid ""
"Parameters used to create a CNC Job object\n"
"for this drill object that are shown when App Level is Advanced."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4801
+#: flatcamGUI/FlatCAMGUI.py:4783
msgid "Offset Z:"
msgstr "Смещение Z:"
-#: flatcamGUI/FlatCAMGUI.py:4803 flatcamGUI/ObjectUI.py:574
+#: flatcamGUI/FlatCAMGUI.py:4785 flatcamGUI/ObjectUI.py:574
msgid ""
"Some drill bits (the larger ones) need to drill deeper\n"
"to create the desired exit hole diameter due of the tip shape.\n"
"The value here can compensate the Cut Z parameter."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/FlatCAMGUI.py:5375
+#: flatcamGUI/FlatCAMGUI.py:4792 flatcamGUI/FlatCAMGUI.py:5354
msgid "Toolchange X,Y:"
msgstr "Смена инструмента X,Y:"
-#: flatcamGUI/FlatCAMGUI.py:4812 flatcamGUI/FlatCAMGUI.py:5377
+#: flatcamGUI/FlatCAMGUI.py:4794 flatcamGUI/FlatCAMGUI.py:5356
msgid "Toolchange X,Y position."
msgstr "Позиция X,Y смены инструмента."
-#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5384
+#: flatcamGUI/FlatCAMGUI.py:4800 flatcamGUI/FlatCAMGUI.py:5363
#: flatcamGUI/ObjectUI.py:634
msgid "Start move Z:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4820
+#: flatcamGUI/FlatCAMGUI.py:4802
msgid ""
"Height of the tool just after start.\n"
"Delete the value if you don't need this feature."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4827 flatcamGUI/FlatCAMGUI.py:5394
+#: flatcamGUI/FlatCAMGUI.py:4809 flatcamGUI/FlatCAMGUI.py:5373
#: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1144
msgid "End move Z:"
msgstr "Высота отвода Z:"
-#: flatcamGUI/FlatCAMGUI.py:4829 flatcamGUI/FlatCAMGUI.py:5396
+#: flatcamGUI/FlatCAMGUI.py:4811 flatcamGUI/FlatCAMGUI.py:5375
msgid ""
"Height of the tool after\n"
"the last move at the end of the job."
@@ -6530,12 +6543,12 @@ msgstr ""
"Высота инструмента после\n"
"последнего прохода в конце задания."
-#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5404
+#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5383
#: flatcamGUI/ObjectUI.py:665
msgid "Feedrate Rapids:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4838 flatcamGUI/ObjectUI.py:667
+#: flatcamGUI/FlatCAMGUI.py:4820 flatcamGUI/ObjectUI.py:667
msgid ""
"Tool speed while drilling\n"
"(in units per minute).\n"
@@ -6544,33 +6557,33 @@ msgid ""
"ignore for any other cases."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5428
+#: flatcamGUI/FlatCAMGUI.py:4831 flatcamGUI/FlatCAMGUI.py:5407
#: flatcamGUI/ObjectUI.py:718 flatcamGUI/ObjectUI.py:1256
msgid "Probe Z depth:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5430
+#: flatcamGUI/FlatCAMGUI.py:4833 flatcamGUI/FlatCAMGUI.py:5409
#: flatcamGUI/ObjectUI.py:720 flatcamGUI/ObjectUI.py:1259
msgid ""
"The maximum depth that the probe is allowed\n"
"to probe. Negative value, in current units."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4859 flatcamGUI/FlatCAMGUI.py:5438
+#: flatcamGUI/FlatCAMGUI.py:4841 flatcamGUI/FlatCAMGUI.py:5417
#: flatcamGUI/ObjectUI.py:730 flatcamGUI/ObjectUI.py:1270
msgid "Feedrate Probe:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4861 flatcamGUI/FlatCAMGUI.py:5440
+#: flatcamGUI/FlatCAMGUI.py:4843 flatcamGUI/FlatCAMGUI.py:5419
#: flatcamGUI/ObjectUI.py:732 flatcamGUI/ObjectUI.py:1273
msgid "The feedrate used while the probe is probing."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4867 flatcamGUI/FlatCAMGUI.py:5447
+#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5426
msgid "Fast Plunge:"
msgstr "Быстрый подвод:"
-#: flatcamGUI/FlatCAMGUI.py:4869 flatcamGUI/FlatCAMGUI.py:5449
+#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5428
msgid ""
"By checking this, the vertical move from\n"
"Z_Toolchange to Z_move is done with G0,\n"
@@ -6578,11 +6591,11 @@ msgid ""
"WARNING: the move is done at Toolchange X,Y coords."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4878
+#: flatcamGUI/FlatCAMGUI.py:4860
msgid "Fast Retract:"
msgstr "Быстрый отвод:"
-#: flatcamGUI/FlatCAMGUI.py:4880
+#: flatcamGUI/FlatCAMGUI.py:4862
msgid ""
"Exit hole strategy.\n"
" - When uncheked, while exiting the drilled hole the drill bit\n"
@@ -6592,21 +6605,21 @@ msgid ""
"(travel height) is done as fast as possible (G0) in one move."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4899
+#: flatcamGUI/FlatCAMGUI.py:4881
msgid "Excellon Export"
msgstr "Экспорт Excellon"
-#: flatcamGUI/FlatCAMGUI.py:4904
+#: flatcamGUI/FlatCAMGUI.py:4886
msgid ""
"The parameters set here are used in the file exported\n"
"when using the File -> Export -> Export Excellon menu entry."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4915 flatcamGUI/FlatCAMGUI.py:4921
+#: flatcamGUI/FlatCAMGUI.py:4897 flatcamGUI/FlatCAMGUI.py:4903
msgid "The units used in the Excellon file."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4929
+#: flatcamGUI/FlatCAMGUI.py:4911
msgid ""
"The NC drill files, usually named Excellon files\n"
"are files that can be found in different formats.\n"
@@ -6614,11 +6627,11 @@ msgid ""
"coordinates are not using period."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4965
+#: flatcamGUI/FlatCAMGUI.py:4947
msgid "Format:"
msgstr "Формат:"
-#: flatcamGUI/FlatCAMGUI.py:4967 flatcamGUI/FlatCAMGUI.py:4977
+#: flatcamGUI/FlatCAMGUI.py:4949 flatcamGUI/FlatCAMGUI.py:4959
msgid ""
"Select the kind of coordinates format used.\n"
"Coordinates can be saved with decimal point or without.\n"
@@ -6628,7 +6641,7 @@ msgid ""
"or TZ = trailing zeros are kept."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5001
+#: flatcamGUI/FlatCAMGUI.py:4983
msgid ""
"This sets the default type of Excellon zeros.\n"
"If LZ then Leading Zeros are kept and\n"
@@ -6637,11 +6650,11 @@ msgid ""
"and Leading Zeros are removed."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5031
+#: flatcamGUI/FlatCAMGUI.py:5013
msgid "A list of Excellon Editor parameters."
msgstr "Список параметров редактора Excellon."
-#: flatcamGUI/FlatCAMGUI.py:5041
+#: flatcamGUI/FlatCAMGUI.py:5023
msgid ""
"Set the number of selected Excellon geometry\n"
"items above which the utility geometry\n"
@@ -6650,27 +6663,27 @@ msgid ""
"large number of geometric elements."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5053
+#: flatcamGUI/FlatCAMGUI.py:5035
msgid "New Tool Dia:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5076
+#: flatcamGUI/FlatCAMGUI.py:5058
msgid "Linear Drill Array:"
msgstr "Линейный массив:"
-#: flatcamGUI/FlatCAMGUI.py:5080
+#: flatcamGUI/FlatCAMGUI.py:5062
msgid "Linear Dir.:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5116
+#: flatcamGUI/FlatCAMGUI.py:5098
msgid "Circular Drill Array:"
msgstr "Круговой массив:"
-#: flatcamGUI/FlatCAMGUI.py:5120
+#: flatcamGUI/FlatCAMGUI.py:5102
msgid "Circular Dir.:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5122
+#: flatcamGUI/FlatCAMGUI.py:5104
msgid ""
"Direction for circular array.\n"
"Can be CW = clockwise or CCW = counter clockwise."
@@ -6678,45 +6691,39 @@ msgstr ""
"Направление для кругового массива.\n"
"Может быть CW = по часовой стрелке или CCW = против часовой стрелки."
-#: flatcamGUI/FlatCAMGUI.py:5133
+#: flatcamGUI/FlatCAMGUI.py:5115
msgid "Circ. Angle:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5150
+#: flatcamGUI/FlatCAMGUI.py:5132
msgid "Geometry General"
msgstr "Geometry основные"
-#: flatcamGUI/FlatCAMGUI.py:5168
+#: flatcamGUI/FlatCAMGUI.py:5151
msgid ""
"The number of circle steps for Geometry \n"
"circle and arc shapes linear approximation."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5176
-msgid "Tools"
+#: flatcamGUI/FlatCAMGUI.py:5159
+#, fuzzy
+#| msgid "Tools"
+msgid "Tools:"
msgstr "Инструменты"
-#: flatcamGUI/FlatCAMGUI.py:5183
-msgid "Tool dia: "
-msgstr "Диам. инстр.: "
-
-#: flatcamGUI/FlatCAMGUI.py:5185
-msgid ""
-"The diameter of the cutting\n"
-"tool.."
+#: flatcamGUI/FlatCAMGUI.py:5165 flatcamGUI/FlatCAMGUI.py:5774
+msgid "Diameters of the cutting tools, separated by ','"
msgstr ""
-"Диаметр режущего\n"
-"инструмента.."
-#: flatcamGUI/FlatCAMGUI.py:5200
+#: flatcamGUI/FlatCAMGUI.py:5179
msgid "Geometry Options"
msgstr "Параметры Geometry"
-#: flatcamGUI/FlatCAMGUI.py:5205
+#: flatcamGUI/FlatCAMGUI.py:5184
msgid "Create CNC Job:"
msgstr "Создание программы для ЧПУ:"
-#: flatcamGUI/FlatCAMGUI.py:5207
+#: flatcamGUI/FlatCAMGUI.py:5186
msgid ""
"Create a CNC Job object\n"
"tracing the contours of this\n"
@@ -6726,7 +6733,7 @@ msgstr ""
"контуров данного объекта геометрии\n"
"для программы ЧПУ."
-#: flatcamGUI/FlatCAMGUI.py:5219 flatcamGUI/ObjectUI.py:1065
+#: flatcamGUI/FlatCAMGUI.py:5198 flatcamGUI/ObjectUI.py:1065
msgid ""
"Cutting depth (negative)\n"
"below the copper surface."
@@ -6734,19 +6741,19 @@ msgstr ""
"Глубина резания (отрицательная)\n"
"ниже слоя меди."
-#: flatcamGUI/FlatCAMGUI.py:5227
+#: flatcamGUI/FlatCAMGUI.py:5206
msgid "Multidepth"
msgstr "Мультипроход"
-#: flatcamGUI/FlatCAMGUI.py:5229
+#: flatcamGUI/FlatCAMGUI.py:5208
msgid "Multidepth usage: True or False."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5234
+#: flatcamGUI/FlatCAMGUI.py:5213
msgid "Depth/Pass:"
msgstr "Шаг за проход:"
-#: flatcamGUI/FlatCAMGUI.py:5236
+#: flatcamGUI/FlatCAMGUI.py:5215
msgid ""
"The depth to cut on each pass,\n"
"when multidepth is enabled.\n"
@@ -6755,17 +6762,17 @@ msgid ""
"which has negative value."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5252 flatcamGUI/ObjectUI.py:1101
+#: flatcamGUI/FlatCAMGUI.py:5231 flatcamGUI/ObjectUI.py:1101
msgid ""
"Height of the tool when\n"
"moving without cutting."
msgstr "Высота отвода инструмента при холостом ходе."
-#: flatcamGUI/FlatCAMGUI.py:5279 flatcamGUI/ObjectUI.py:1156
+#: flatcamGUI/FlatCAMGUI.py:5258 flatcamGUI/ObjectUI.py:1156
msgid "Feed Rate X-Y:"
msgstr "Скорость подачи X-Y:"
-#: flatcamGUI/FlatCAMGUI.py:5281 flatcamGUI/ObjectUI.py:1159
+#: flatcamGUI/FlatCAMGUI.py:5260 flatcamGUI/ObjectUI.py:1159
msgid ""
"Cutting speed in the XY\n"
"plane in units per minute"
@@ -6773,45 +6780,45 @@ msgstr ""
"Скорость резания в плоскости XY\n"
"в единицах в минуту"
-#: flatcamGUI/FlatCAMGUI.py:5289
+#: flatcamGUI/FlatCAMGUI.py:5268
msgid "Feed Rate Z:"
msgstr "Скорость подачи Z:"
-#: flatcamGUI/FlatCAMGUI.py:5291
+#: flatcamGUI/FlatCAMGUI.py:5270
msgid ""
"Cutting speed in the XY\n"
"plane in units per minute.\n"
"It is called also Plunge."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5300 flatcamGUI/ObjectUI.py:682
+#: flatcamGUI/FlatCAMGUI.py:5279 flatcamGUI/ObjectUI.py:682
#: flatcamGUI/ObjectUI.py:1211
msgid "Spindle speed:"
msgstr "Скорость вр. шпинделя:"
-#: flatcamGUI/FlatCAMGUI.py:5343
+#: flatcamGUI/FlatCAMGUI.py:5322
msgid ""
"The postprocessor file that dictates\n"
"Machine Code output."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5359
+#: flatcamGUI/FlatCAMGUI.py:5338
msgid "Geometry Adv. Options"
msgstr "Geometry дополн."
-#: flatcamGUI/FlatCAMGUI.py:5366
+#: flatcamGUI/FlatCAMGUI.py:5345
msgid ""
"Parameters to create a CNC Job object\n"
"tracing the contours of a Geometry object."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5386
+#: flatcamGUI/FlatCAMGUI.py:5365
msgid ""
"Height of the tool just after starting the work.\n"
"Delete the value if you don't need this feature."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5406
+#: flatcamGUI/FlatCAMGUI.py:5385
msgid ""
"Cutting speed in the XY plane\n"
"(in units per minute).\n"
@@ -6820,11 +6827,11 @@ msgid ""
"ignore for any other cases."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5418
+#: flatcamGUI/FlatCAMGUI.py:5397
msgid "Re-cut 1st pt."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5420 flatcamGUI/ObjectUI.py:1202
+#: flatcamGUI/FlatCAMGUI.py:5399 flatcamGUI/ObjectUI.py:1202
msgid ""
"In order to remove possible\n"
"copper leftovers where first cut\n"
@@ -6832,37 +6839,37 @@ msgid ""
"extended cut over the first cut section."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5459
+#: flatcamGUI/FlatCAMGUI.py:5438
msgid "Seg. X size:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5461
+#: flatcamGUI/FlatCAMGUI.py:5440
msgid ""
"The size of the trace segment on the X axis.\n"
"Useful for auto-leveling.\n"
"A value of 0 means no segmentation on the X axis."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5470
+#: flatcamGUI/FlatCAMGUI.py:5449
msgid "Seg. Y size:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5472
+#: flatcamGUI/FlatCAMGUI.py:5451
msgid ""
"The size of the trace segment on the Y axis.\n"
"Useful for auto-leveling.\n"
"A value of 0 means no segmentation on the Y axis."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5488
+#: flatcamGUI/FlatCAMGUI.py:5467
msgid "Geometry Editor"
msgstr "Редактор Geometry"
-#: flatcamGUI/FlatCAMGUI.py:5493
+#: flatcamGUI/FlatCAMGUI.py:5472
msgid "A list of Geometry Editor parameters."
msgstr "Список параметров редактора Geometry."
-#: flatcamGUI/FlatCAMGUI.py:5503
+#: flatcamGUI/FlatCAMGUI.py:5482
msgid ""
"Set the number of selected geometry\n"
"items above which the utility geometry\n"
@@ -6871,20 +6878,20 @@ msgid ""
"large number of geometric elements."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5522
+#: flatcamGUI/FlatCAMGUI.py:5501
msgid "CNC Job General"
msgstr "CNC Job основные"
-#: flatcamGUI/FlatCAMGUI.py:5535 flatcamGUI/ObjectUI.py:544
+#: flatcamGUI/FlatCAMGUI.py:5514 flatcamGUI/ObjectUI.py:544
#: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1447
msgid "Plot Object"
msgstr "Рисовать объекты"
-#: flatcamGUI/FlatCAMGUI.py:5542
+#: flatcamGUI/FlatCAMGUI.py:5521
msgid "Plot kind:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5544 flatcamGUI/ObjectUI.py:1356
+#: flatcamGUI/FlatCAMGUI.py:5523 flatcamGUI/ObjectUI.py:1356
msgid ""
"This selects the kind of geometries on the canvas to plot.\n"
"Those can be either of type 'Travel' which means the moves\n"
@@ -6892,40 +6899,40 @@ msgid ""
"which means the moves that cut into the material."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5561
+#: flatcamGUI/FlatCAMGUI.py:5540
msgid "Display Annotation:"
msgstr "Показывать подписи:"
-#: flatcamGUI/FlatCAMGUI.py:5563 flatcamGUI/ObjectUI.py:1372
+#: flatcamGUI/FlatCAMGUI.py:5542 flatcamGUI/ObjectUI.py:1372
msgid ""
"This selects if to display text annotation on the plot.\n"
"When checked it will display numbers in order for each end\n"
"of a travel line."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5575
+#: flatcamGUI/FlatCAMGUI.py:5554
msgid "Annotation Size:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5577
+#: flatcamGUI/FlatCAMGUI.py:5556
msgid "The font size of the annotation text. In pixels."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5585
+#: flatcamGUI/FlatCAMGUI.py:5564
msgid "Annotation Color:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5587
+#: flatcamGUI/FlatCAMGUI.py:5566
msgid "Set the font color for the annotation texts."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5610
+#: flatcamGUI/FlatCAMGUI.py:5589
msgid ""
"The number of circle steps for GCode \n"
"circle and arc shapes linear approximation."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5620
+#: flatcamGUI/FlatCAMGUI.py:5599
msgid ""
"Diameter of the tool to be\n"
"rendered in the plot."
@@ -6933,35 +6940,35 @@ msgstr ""
"Диаметр инструмента\n"
" для черчения контуров."
-#: flatcamGUI/FlatCAMGUI.py:5628
+#: flatcamGUI/FlatCAMGUI.py:5607
msgid "Coords dec.:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5630
+#: flatcamGUI/FlatCAMGUI.py:5609
msgid ""
"The number of decimals to be used for \n"
"the X, Y, Z coordinates in CNC code (GCODE, etc.)"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5638
+#: flatcamGUI/FlatCAMGUI.py:5617
msgid "Feedrate dec.:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5640
+#: flatcamGUI/FlatCAMGUI.py:5619
msgid ""
"The number of decimals to be used for \n"
"the Feedrate parameter in CNC code (GCODE, etc.)"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5655
+#: flatcamGUI/FlatCAMGUI.py:5634
msgid "CNC Job Options"
msgstr "Параметры CNC Job"
-#: flatcamGUI/FlatCAMGUI.py:5658 flatcamGUI/FlatCAMGUI.py:5699
+#: flatcamGUI/FlatCAMGUI.py:5637 flatcamGUI/FlatCAMGUI.py:5678
msgid "Export G-Code:"
msgstr "Экспорт G-Code:"
-#: flatcamGUI/FlatCAMGUI.py:5660 flatcamGUI/FlatCAMGUI.py:5701
+#: flatcamGUI/FlatCAMGUI.py:5639 flatcamGUI/FlatCAMGUI.py:5680
#: flatcamGUI/ObjectUI.py:1483
msgid ""
"Export and save G-Code to\n"
@@ -6971,11 +6978,11 @@ msgstr ""
"для сохранения\n"
"этого объекта в файл."
-#: flatcamGUI/FlatCAMGUI.py:5666
+#: flatcamGUI/FlatCAMGUI.py:5645
msgid "Prepend to G-Code:"
msgstr "Коды предобработки для G-Code:"
-#: flatcamGUI/FlatCAMGUI.py:5668
+#: flatcamGUI/FlatCAMGUI.py:5647
msgid ""
"Type here any G-Code commands you would\n"
"like to add at the beginning of the G-Code file."
@@ -6983,11 +6990,11 @@ msgstr ""
"Введите здесь любые команды G-Code, которые вам\n"
"хотелось бы добавить в начале файла G-Code."
-#: flatcamGUI/FlatCAMGUI.py:5677
+#: flatcamGUI/FlatCAMGUI.py:5656
msgid "Append to G-Code:"
msgstr "Коды постобработки для G-Code:"
-#: flatcamGUI/FlatCAMGUI.py:5679 flatcamGUI/ObjectUI.py:1505
+#: flatcamGUI/FlatCAMGUI.py:5658 flatcamGUI/ObjectUI.py:1505
msgid ""
"Type here any G-Code commands you would\n"
"like to append to the generated file.\n"
@@ -6997,15 +7004,15 @@ msgstr ""
"хотелось бы добавить к созданному файлу.\n"
"например: M2 (конец программы)"
-#: flatcamGUI/FlatCAMGUI.py:5696
+#: flatcamGUI/FlatCAMGUI.py:5675
msgid "CNC Job Adv. Options"
msgstr "CNC Job дополн."
-#: flatcamGUI/FlatCAMGUI.py:5707 flatcamGUI/ObjectUI.py:1523
+#: flatcamGUI/FlatCAMGUI.py:5686 flatcamGUI/ObjectUI.py:1523
msgid "Toolchange G-Code:"
msgstr "G-Code смены инструмента:"
-#: flatcamGUI/FlatCAMGUI.py:5709
+#: flatcamGUI/FlatCAMGUI.py:5688
msgid ""
"Type here any G-Code commands you would\n"
"like to be executed when Toolchange event is encountered.\n"
@@ -7013,17 +7020,17 @@ msgid ""
"or a Toolchange Macro."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5723 flatcamGUI/ObjectUI.py:1545
+#: flatcamGUI/FlatCAMGUI.py:5702 flatcamGUI/ObjectUI.py:1545
msgid "Use Toolchange Macro"
msgstr "Использовать макросы смены инструмента"
-#: flatcamGUI/FlatCAMGUI.py:5725 flatcamGUI/ObjectUI.py:1548
+#: flatcamGUI/FlatCAMGUI.py:5704 flatcamGUI/ObjectUI.py:1548
msgid ""
"Check this box if you want to use\n"
"a Custom Toolchange GCode (macro)."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5737 flatcamGUI/ObjectUI.py:1557
+#: flatcamGUI/FlatCAMGUI.py:5716 flatcamGUI/ObjectUI.py:1557
msgid ""
"A list of the FlatCAM variables that can be used\n"
"in the Toolchange event.\n"
@@ -7033,71 +7040,67 @@ msgstr ""
"при смене инструмента.\n"
"Они должны быть окружены '%' символом"
-#: flatcamGUI/FlatCAMGUI.py:5744 flatcamGUI/ObjectUI.py:1564
+#: flatcamGUI/FlatCAMGUI.py:5723 flatcamGUI/ObjectUI.py:1564
msgid "Parameters"
msgstr "Параметры"
-#: flatcamGUI/FlatCAMGUI.py:5747 flatcamGUI/ObjectUI.py:1567
+#: flatcamGUI/FlatCAMGUI.py:5726 flatcamGUI/ObjectUI.py:1567
msgid "FlatCAM CNC parameters"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5748 flatcamGUI/ObjectUI.py:1568
+#: flatcamGUI/FlatCAMGUI.py:5727 flatcamGUI/ObjectUI.py:1568
msgid "tool = tool number"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5749 flatcamGUI/ObjectUI.py:1569
+#: flatcamGUI/FlatCAMGUI.py:5728 flatcamGUI/ObjectUI.py:1569
msgid "tooldia = tool diameter"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5750 flatcamGUI/ObjectUI.py:1570
+#: flatcamGUI/FlatCAMGUI.py:5729 flatcamGUI/ObjectUI.py:1570
msgid "t_drills = for Excellon, total number of drills"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5751 flatcamGUI/ObjectUI.py:1571
+#: flatcamGUI/FlatCAMGUI.py:5730 flatcamGUI/ObjectUI.py:1571
msgid "x_toolchange = X coord for Toolchange"
msgstr "x_toolchange = координата X для смены инструмента"
-#: flatcamGUI/FlatCAMGUI.py:5752 flatcamGUI/ObjectUI.py:1572
+#: flatcamGUI/FlatCAMGUI.py:5731 flatcamGUI/ObjectUI.py:1572
msgid "y_toolchange = Y coord for Toolchange"
msgstr "y_toolchange = координата Y для смены инструмента"
-#: flatcamGUI/FlatCAMGUI.py:5753 flatcamGUI/ObjectUI.py:1573
+#: flatcamGUI/FlatCAMGUI.py:5732 flatcamGUI/ObjectUI.py:1573
msgid "z_toolchange = Z coord for Toolchange"
msgstr "z_toolchange = координата Z для смены инструмента"
-#: flatcamGUI/FlatCAMGUI.py:5754
+#: flatcamGUI/FlatCAMGUI.py:5733
msgid "z_cut = Z depth for the cut"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5755
+#: flatcamGUI/FlatCAMGUI.py:5734
msgid "z_move = Z height for travel"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5756 flatcamGUI/ObjectUI.py:1576
+#: flatcamGUI/FlatCAMGUI.py:5735 flatcamGUI/ObjectUI.py:1576
msgid "z_depthpercut = the step value for multidepth cut"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5757 flatcamGUI/ObjectUI.py:1577
+#: flatcamGUI/FlatCAMGUI.py:5736 flatcamGUI/ObjectUI.py:1577
msgid "spindlesspeed = the value for the spindle speed"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5759 flatcamGUI/ObjectUI.py:1578
+#: flatcamGUI/FlatCAMGUI.py:5738 flatcamGUI/ObjectUI.py:1578
msgid "dwelltime = time to dwell to allow the spindle to reach it's set RPM"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5780
+#: flatcamGUI/FlatCAMGUI.py:5759
msgid "NCC Tool Options"
msgstr "Очистка меди"
-#: flatcamGUI/FlatCAMGUI.py:5793 flatcamGUI/FlatCAMGUI.py:6523
+#: flatcamGUI/FlatCAMGUI.py:5772 flatcamGUI/FlatCAMGUI.py:6502
msgid "Tools dia:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5795
-msgid "Diameters of the cutting tools, separated by ','"
-msgstr ""
-
-#: flatcamGUI/FlatCAMGUI.py:5803 flatcamTools/ToolNonCopperClear.py:167
+#: flatcamGUI/FlatCAMGUI.py:5782 flatcamTools/ToolNonCopperClear.py:167
#, python-format
msgid ""
"How much (fraction) of the tool width to overlap each tool pass.\n"
@@ -7112,11 +7115,11 @@ msgid ""
"due of too many paths."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5819 flatcamTools/ToolNonCopperClear.py:183
+#: flatcamGUI/FlatCAMGUI.py:5798 flatcamTools/ToolNonCopperClear.py:183
msgid "Bounding box margin."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5828 flatcamTools/ToolNonCopperClear.py:192
+#: flatcamGUI/FlatCAMGUI.py:5807 flatcamTools/ToolNonCopperClear.py:192
#: flatcamTools/ToolPaint.py:190
msgid ""
"Algorithm for non-copper clearing:
Standard: Fixed step inwards."
@@ -7127,12 +7130,12 @@ msgstr ""
"контурами, повторяющими контур полигона.
По кругу: Обработка "
"правильными окружностями.
Линейный: Паралельными линиями."
-#: flatcamGUI/FlatCAMGUI.py:5860 flatcamTools/ToolNonCopperClear.py:224
+#: flatcamGUI/FlatCAMGUI.py:5839 flatcamTools/ToolNonCopperClear.py:224
#: flatcamTools/ToolPaint.py:222
msgid "Rest M.:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5862
+#: flatcamGUI/FlatCAMGUI.py:5841
msgid ""
"If checked, use 'rest machining'.\n"
"Basically it will clear copper outside PCB features,\n"
@@ -7142,11 +7145,11 @@ msgid ""
"If not checked, use the standard algorithm."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5881
+#: flatcamGUI/FlatCAMGUI.py:5860
msgid "Cutout Tool Options"
msgstr "Обрезка платы"
-#: flatcamGUI/FlatCAMGUI.py:5886 flatcamGUI/ObjectUI.py:402
+#: flatcamGUI/FlatCAMGUI.py:5865 flatcamGUI/ObjectUI.py:402
msgid ""
"Create toolpaths to cut around\n"
"the PCB and separate it from\n"
@@ -7155,7 +7158,7 @@ msgstr ""
"Создание траектории обрезки печатной платы и отделения её от\n"
"заготовки."
-#: flatcamGUI/FlatCAMGUI.py:5905
+#: flatcamGUI/FlatCAMGUI.py:5884
msgid ""
"Distance from objects at which\n"
"to draw the cutout."
@@ -7163,11 +7166,11 @@ msgstr ""
"Расстояние от объектов вокруг которых\n"
"будет нарисовано очертание."
-#: flatcamGUI/FlatCAMGUI.py:5912 flatcamTools/ToolCutOut.py:96
+#: flatcamGUI/FlatCAMGUI.py:5891 flatcamTools/ToolCutOut.py:96
msgid "Gap size:"
msgstr "Размер перемычки:"
-#: flatcamGUI/FlatCAMGUI.py:5914
+#: flatcamGUI/FlatCAMGUI.py:5893
msgid ""
"Size of the gaps in the toolpath\n"
"that will remain to hold the\n"
@@ -7176,11 +7179,11 @@ msgstr ""
"Размер перемычек для удержания\n"
"печатной платы в заготовке."
-#: flatcamGUI/FlatCAMGUI.py:5922 flatcamTools/ToolCutOut.py:134
+#: flatcamGUI/FlatCAMGUI.py:5901 flatcamTools/ToolCutOut.py:134
msgid "Gaps:"
msgstr "Вариант:"
-#: flatcamGUI/FlatCAMGUI.py:5924
+#: flatcamGUI/FlatCAMGUI.py:5903
msgid ""
"Number of bridge gaps used for the cutout.\n"
"There can be maximum 8 bridges/gaps.\n"
@@ -7202,19 +7205,19 @@ msgstr ""
"- 2tb - 2*сверху + 2*снизу \n"
"- 8 - 2*слева + 2*справа + 2*сверху + 2*снизу"
-#: flatcamGUI/FlatCAMGUI.py:5945 flatcamTools/ToolCutOut.py:115
+#: flatcamGUI/FlatCAMGUI.py:5924 flatcamTools/ToolCutOut.py:115
msgid "Convex Sh.:"
msgstr "Закруглять углы:"
-#: flatcamGUI/FlatCAMGUI.py:5947
+#: flatcamGUI/FlatCAMGUI.py:5926
msgid "Create a convex shape surrounding the entire PCB."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5960
+#: flatcamGUI/FlatCAMGUI.py:5939
msgid "2Sided Tool Options"
-msgstr " 2-х сторонняя плата"
+msgstr "2-х сторонняя плата"
-#: flatcamGUI/FlatCAMGUI.py:5965
+#: flatcamGUI/FlatCAMGUI.py:5944
msgid ""
"A tool to help in creating a double sided\n"
"PCB using alignment holes."
@@ -7222,28 +7225,28 @@ msgstr ""
"Инструмент, помогающий создать двухстороннюю\n"
"печатную плату с использованием центрирующих отверстий."
-#: flatcamGUI/FlatCAMGUI.py:5975 flatcamTools/ToolDblSided.py:235
+#: flatcamGUI/FlatCAMGUI.py:5954 flatcamTools/ToolDblSided.py:235
msgid "Drill diam.:"
msgstr "Диам. сверла.:"
-#: flatcamGUI/FlatCAMGUI.py:5977 flatcamTools/ToolDblSided.py:226
+#: flatcamGUI/FlatCAMGUI.py:5956 flatcamTools/ToolDblSided.py:226
#: flatcamTools/ToolDblSided.py:237
msgid "Diameter of the drill for the alignment holes."
msgstr "Диаметр сверла для контрольных отверстий."
-#: flatcamGUI/FlatCAMGUI.py:5986 flatcamTools/ToolDblSided.py:120
+#: flatcamGUI/FlatCAMGUI.py:5965 flatcamTools/ToolDblSided.py:120
msgid "Mirror Axis:"
msgstr "Зеркальное отражение:"
-#: flatcamGUI/FlatCAMGUI.py:5988 flatcamTools/ToolDblSided.py:122
+#: flatcamGUI/FlatCAMGUI.py:5967 flatcamTools/ToolDblSided.py:122
msgid "Mirror vertically (X) or horizontally (Y)."
msgstr "Отразить по вертикали (X) или горизонтали (Y)."
-#: flatcamGUI/FlatCAMGUI.py:5999 flatcamTools/ToolDblSided.py:133
+#: flatcamGUI/FlatCAMGUI.py:5978 flatcamTools/ToolDblSided.py:133
msgid "Axis Ref:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6001
+#: flatcamGUI/FlatCAMGUI.py:5980
msgid ""
"The axis should pass through a point or cut\n"
" a specified box (in a Geometry object) in \n"
@@ -7253,11 +7256,11 @@ msgstr ""
" указанное поле (в Geometry объект) в\n"
"середине."
-#: flatcamGUI/FlatCAMGUI.py:6017
+#: flatcamGUI/FlatCAMGUI.py:5996
msgid "Paint Tool Options"
msgstr "Рисование"
-#: flatcamGUI/FlatCAMGUI.py:6024 flatcamGUI/ObjectUI.py:1305
+#: flatcamGUI/FlatCAMGUI.py:6003 flatcamGUI/ObjectUI.py:1305
msgid ""
"Creates tool paths to cover the\n"
"whole area of a polygon (remove\n"
@@ -7268,7 +7271,7 @@ msgstr ""
"всей площади полигона(удаляется вся медь).\n"
"Будет предложено нажать на нужный полигон."
-#: flatcamGUI/FlatCAMGUI.py:6048
+#: flatcamGUI/FlatCAMGUI.py:6027
msgid ""
"How much (fraction) of the tool\n"
"width to overlap each tool pass."
@@ -7276,30 +7279,30 @@ msgstr ""
"Размер части ширины инструмента \n"
"который будет перекрываться за каждый проход."
-#: flatcamGUI/FlatCAMGUI.py:6102 flatcamTools/ToolPaint.py:237
+#: flatcamGUI/FlatCAMGUI.py:6081 flatcamTools/ToolPaint.py:237
msgid "Selection:"
msgstr "Выбор:"
-#: flatcamGUI/FlatCAMGUI.py:6104
+#: flatcamGUI/FlatCAMGUI.py:6083
msgid "How to select the polygons to paint."
msgstr "Как выбирать полигоны для рисования."
-#: flatcamGUI/FlatCAMGUI.py:6122
+#: flatcamGUI/FlatCAMGUI.py:6101
msgid "Film Tool Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6127
+#: flatcamGUI/FlatCAMGUI.py:6106
msgid ""
"Create a PCB film from a Gerber or Geometry\n"
"FlatCAM object.\n"
"The file is saved in SVG format."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6138 flatcamTools/ToolFilm.py:116
+#: flatcamGUI/FlatCAMGUI.py:6117 flatcamTools/ToolFilm.py:116
msgid "Film Type:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6140 flatcamTools/ToolFilm.py:118
+#: flatcamGUI/FlatCAMGUI.py:6119 flatcamTools/ToolFilm.py:118
msgid ""
"Generate a Positive black film or a Negative film.\n"
"Positive means that it will print the features\n"
@@ -7309,11 +7312,11 @@ msgid ""
"The Film format is SVG."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6151 flatcamTools/ToolFilm.py:130
+#: flatcamGUI/FlatCAMGUI.py:6130 flatcamTools/ToolFilm.py:130
msgid "Border:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6153 flatcamTools/ToolFilm.py:132
+#: flatcamGUI/FlatCAMGUI.py:6132 flatcamTools/ToolFilm.py:132
msgid ""
"Specify a border around the object.\n"
"Only for negative film.\n"
@@ -7325,11 +7328,11 @@ msgid ""
"surroundings if not for this border."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6166 flatcamTools/ToolFilm.py:144
+#: flatcamGUI/FlatCAMGUI.py:6145 flatcamTools/ToolFilm.py:144
msgid "Scale Stroke:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6168 flatcamTools/ToolFilm.py:146
+#: flatcamGUI/FlatCAMGUI.py:6147 flatcamTools/ToolFilm.py:146
msgid ""
"Scale the line stroke thickness of each feature in the SVG file.\n"
"It means that the line that envelope each SVG feature will be thicker or "
@@ -7337,69 +7340,69 @@ msgid ""
"therefore the fine features may be more affected by this parameter."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6183
+#: flatcamGUI/FlatCAMGUI.py:6162
msgid "Panelize Tool Options"
msgstr "Панелизация"
-#: flatcamGUI/FlatCAMGUI.py:6188
+#: flatcamGUI/FlatCAMGUI.py:6167
msgid ""
"Create an object that contains an array of (x, y) elements,\n"
"each element is a copy of the source object spaced\n"
"at a X distance, Y distance of each other."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6199 flatcamTools/ToolPanelize.py:147
+#: flatcamGUI/FlatCAMGUI.py:6178 flatcamTools/ToolPanelize.py:147
msgid "Spacing cols:"
msgstr "Интервал столбцов:"
-#: flatcamGUI/FlatCAMGUI.py:6201 flatcamTools/ToolPanelize.py:149
+#: flatcamGUI/FlatCAMGUI.py:6180 flatcamTools/ToolPanelize.py:149
msgid ""
"Spacing between columns of the desired panel.\n"
"In current units."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6209 flatcamTools/ToolPanelize.py:156
+#: flatcamGUI/FlatCAMGUI.py:6188 flatcamTools/ToolPanelize.py:156
msgid "Spacing rows:"
msgstr "Интервал строк:"
-#: flatcamGUI/FlatCAMGUI.py:6211 flatcamTools/ToolPanelize.py:158
+#: flatcamGUI/FlatCAMGUI.py:6190 flatcamTools/ToolPanelize.py:158
msgid ""
"Spacing between rows of the desired panel.\n"
"In current units."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6219 flatcamTools/ToolPanelize.py:165
+#: flatcamGUI/FlatCAMGUI.py:6198 flatcamTools/ToolPanelize.py:165
msgid "Columns:"
msgstr "Столбцы:"
-#: flatcamGUI/FlatCAMGUI.py:6221 flatcamTools/ToolPanelize.py:167
+#: flatcamGUI/FlatCAMGUI.py:6200 flatcamTools/ToolPanelize.py:167
msgid "Number of columns of the desired panel"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6228 flatcamTools/ToolPanelize.py:173
+#: flatcamGUI/FlatCAMGUI.py:6207 flatcamTools/ToolPanelize.py:173
msgid "Rows:"
msgstr "Строки:"
-#: flatcamGUI/FlatCAMGUI.py:6230 flatcamTools/ToolPanelize.py:175
+#: flatcamGUI/FlatCAMGUI.py:6209 flatcamTools/ToolPanelize.py:175
msgid "Number of rows of the desired panel"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6238
+#: flatcamGUI/FlatCAMGUI.py:6217
msgid "Panel Type:"
msgstr "Тип панели:"
-#: flatcamGUI/FlatCAMGUI.py:6240
+#: flatcamGUI/FlatCAMGUI.py:6219
msgid ""
"Choose the type of object for the panel object:\n"
"- Gerber\n"
"- Geometry"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6249
+#: flatcamGUI/FlatCAMGUI.py:6228
msgid "Constrain within:"
msgstr "Ограничить в пределах:"
-#: flatcamGUI/FlatCAMGUI.py:6251 flatcamTools/ToolPanelize.py:195
+#: flatcamGUI/FlatCAMGUI.py:6230 flatcamTools/ToolPanelize.py:195
msgid ""
"Area define by DX and DY within to constrain the panel.\n"
"DX and DY values are in current units.\n"
@@ -7408,171 +7411,171 @@ msgid ""
"they fit completely within selected area."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6260 flatcamTools/ToolPanelize.py:204
+#: flatcamGUI/FlatCAMGUI.py:6239 flatcamTools/ToolPanelize.py:204
msgid "Width (DX):"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6262 flatcamTools/ToolPanelize.py:206
+#: flatcamGUI/FlatCAMGUI.py:6241 flatcamTools/ToolPanelize.py:206
msgid ""
"The width (DX) within which the panel must fit.\n"
"In current units."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6269 flatcamTools/ToolPanelize.py:212
+#: flatcamGUI/FlatCAMGUI.py:6248 flatcamTools/ToolPanelize.py:212
msgid "Height (DY):"
msgstr "Высота (DY):"
-#: flatcamGUI/FlatCAMGUI.py:6271 flatcamTools/ToolPanelize.py:214
+#: flatcamGUI/FlatCAMGUI.py:6250 flatcamTools/ToolPanelize.py:214
msgid ""
"The height (DY)within which the panel must fit.\n"
"In current units."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6285
+#: flatcamGUI/FlatCAMGUI.py:6264
msgid "Calculators Tool Options"
msgstr "Калькулятор"
-#: flatcamGUI/FlatCAMGUI.py:6288
+#: flatcamGUI/FlatCAMGUI.py:6267
msgid "V-Shape Tool Calculator:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6290
+#: flatcamGUI/FlatCAMGUI.py:6269
msgid ""
"Calculate the tool diameter for a given V-shape tool,\n"
"having the tip diameter, tip angle and\n"
"depth-of-cut as parameters."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6301 flatcamTools/ToolCalculators.py:94
+#: flatcamGUI/FlatCAMGUI.py:6280 flatcamTools/ToolCalculators.py:94
msgid "Tip Diameter:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6303
+#: flatcamGUI/FlatCAMGUI.py:6282
msgid ""
"This is the tool tip diameter.\n"
"It is specified by manufacturer."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6311
+#: flatcamGUI/FlatCAMGUI.py:6290
msgid "Tip angle:"
msgstr "Угол наклона:"
-#: flatcamGUI/FlatCAMGUI.py:6313
+#: flatcamGUI/FlatCAMGUI.py:6292
msgid ""
"This is the angle on the tip of the tool.\n"
"It is specified by manufacturer."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6323
+#: flatcamGUI/FlatCAMGUI.py:6302
msgid ""
"This is depth to cut into material.\n"
"In the CNCJob object it is the CutZ parameter."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6330
+#: flatcamGUI/FlatCAMGUI.py:6309
msgid "ElectroPlating Calculator:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6332 flatcamTools/ToolCalculators.py:152
+#: flatcamGUI/FlatCAMGUI.py:6311 flatcamTools/ToolCalculators.py:152
msgid ""
"This calculator is useful for those who plate the via/pad/drill holes,\n"
"using a method like grahite ink or calcium hypophosphite ink or palladium "
"chloride."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6342 flatcamTools/ToolCalculators.py:161
+#: flatcamGUI/FlatCAMGUI.py:6321 flatcamTools/ToolCalculators.py:161
msgid "Board Length:"
msgstr "Длина платы:"
-#: flatcamGUI/FlatCAMGUI.py:6344 flatcamTools/ToolCalculators.py:165
+#: flatcamGUI/FlatCAMGUI.py:6323 flatcamTools/ToolCalculators.py:165
msgid "This is the board length. In centimeters."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6350 flatcamTools/ToolCalculators.py:167
+#: flatcamGUI/FlatCAMGUI.py:6329 flatcamTools/ToolCalculators.py:167
msgid "Board Width:"
msgstr "Ширина платы:"
-#: flatcamGUI/FlatCAMGUI.py:6352 flatcamTools/ToolCalculators.py:171
+#: flatcamGUI/FlatCAMGUI.py:6331 flatcamTools/ToolCalculators.py:171
msgid "This is the board width.In centimeters."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6357 flatcamTools/ToolCalculators.py:173
+#: flatcamGUI/FlatCAMGUI.py:6336 flatcamTools/ToolCalculators.py:173
msgid "Current Density:"
msgstr "Текущая плотность:"
-#: flatcamGUI/FlatCAMGUI.py:6360 flatcamTools/ToolCalculators.py:177
+#: flatcamGUI/FlatCAMGUI.py:6339 flatcamTools/ToolCalculators.py:177
msgid ""
"Current density to pass through the board. \n"
"In Amps per Square Feet ASF."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6366 flatcamTools/ToolCalculators.py:181
+#: flatcamGUI/FlatCAMGUI.py:6345 flatcamTools/ToolCalculators.py:181
msgid "Copper Growth:"
msgstr "Медный слой:"
-#: flatcamGUI/FlatCAMGUI.py:6369 flatcamTools/ToolCalculators.py:185
+#: flatcamGUI/FlatCAMGUI.py:6348 flatcamTools/ToolCalculators.py:185
msgid ""
"How thick the copper growth is intended to be.\n"
"In microns."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6382
+#: flatcamGUI/FlatCAMGUI.py:6361
msgid "Transform Tool Options"
msgstr "Трансформация"
-#: flatcamGUI/FlatCAMGUI.py:6387
+#: flatcamGUI/FlatCAMGUI.py:6366
msgid ""
"Various transformations that can be applied\n"
"on a FlatCAM object."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6397
+#: flatcamGUI/FlatCAMGUI.py:6376
msgid "Rotate Angle:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6399
+#: flatcamGUI/FlatCAMGUI.py:6378
msgid "Angle for rotation. In degrees."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6406
+#: flatcamGUI/FlatCAMGUI.py:6385
msgid "Skew_X angle:"
msgstr "Угол наклона_X:"
-#: flatcamGUI/FlatCAMGUI.py:6408
+#: flatcamGUI/FlatCAMGUI.py:6387
msgid "Angle for Skew/Shear on X axis. In degrees."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6415
+#: flatcamGUI/FlatCAMGUI.py:6394
msgid "Skew_Y angle:"
msgstr "Угол наклона_Y:"
-#: flatcamGUI/FlatCAMGUI.py:6417
+#: flatcamGUI/FlatCAMGUI.py:6396
msgid "Angle for Skew/Shear on Y axis. In degrees."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6424
+#: flatcamGUI/FlatCAMGUI.py:6403
msgid "Scale_X factor:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6426
+#: flatcamGUI/FlatCAMGUI.py:6405
msgid "Factor for scaling on X axis."
msgstr "Коэффициент масштабирования по оси X."
-#: flatcamGUI/FlatCAMGUI.py:6433
+#: flatcamGUI/FlatCAMGUI.py:6412
msgid "Scale_Y factor:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6435
+#: flatcamGUI/FlatCAMGUI.py:6414
msgid "Factor for scaling on Y axis."
msgstr "Коэффициент масштабирования по оси Y."
-#: flatcamGUI/FlatCAMGUI.py:6443
+#: flatcamGUI/FlatCAMGUI.py:6422
msgid ""
"Scale the selected object(s)\n"
"using the Scale_X factor for both axis."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6451 flatcamTools/ToolTransform.py:210
+#: flatcamGUI/FlatCAMGUI.py:6430 flatcamTools/ToolTransform.py:210
msgid ""
"Scale the selected object(s)\n"
"using the origin reference when checked,\n"
@@ -7580,27 +7583,27 @@ msgid ""
"of the selected objects when unchecked."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6460
+#: flatcamGUI/FlatCAMGUI.py:6439
msgid "Offset_X val:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6462
+#: flatcamGUI/FlatCAMGUI.py:6441
msgid "Distance to offset on X axis. In current units."
msgstr "Расстояние смещения по оси X. В текущих единицах."
-#: flatcamGUI/FlatCAMGUI.py:6469
+#: flatcamGUI/FlatCAMGUI.py:6448
msgid "Offset_Y val:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6471
+#: flatcamGUI/FlatCAMGUI.py:6450
msgid "Distance to offset on Y axis. In current units."
msgstr "Расстояние смещения по оси Y. В текущих единицах."
-#: flatcamGUI/FlatCAMGUI.py:6477
+#: flatcamGUI/FlatCAMGUI.py:6456
msgid "Mirror Reference"
msgstr "Точка зеркалтрования"
-#: flatcamGUI/FlatCAMGUI.py:6479 flatcamTools/ToolTransform.py:314
+#: flatcamGUI/FlatCAMGUI.py:6458 flatcamTools/ToolTransform.py:314
msgid ""
"Flip the selected object(s)\n"
"around the point in Point Entry Field.\n"
@@ -7613,11 +7616,11 @@ msgid ""
"Point Entry field and click Flip on X(Y)"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6490
+#: flatcamGUI/FlatCAMGUI.py:6469
msgid " Mirror Ref. Point:"
msgstr " Точка зеркалирования:"
-#: flatcamGUI/FlatCAMGUI.py:6492 flatcamTools/ToolTransform.py:327
+#: flatcamGUI/FlatCAMGUI.py:6471 flatcamTools/ToolTransform.py:327
msgid ""
"Coordinates in format (x, y) used as reference for mirroring.\n"
"The 'x' in (x, y) will be used when using Flip on X and\n"
@@ -7628,11 +7631,11 @@ msgstr ""
"'x' в (x, y) будет использоваться при отражении по X и\n"
"'y' в (x, y) будет использоваться при отражении по Y"
-#: flatcamGUI/FlatCAMGUI.py:6509
+#: flatcamGUI/FlatCAMGUI.py:6488
msgid "SolderPaste Tool Options"
msgstr "Паяльная паста"
-#: flatcamGUI/FlatCAMGUI.py:6514
+#: flatcamGUI/FlatCAMGUI.py:6493
msgid ""
"A tool to create GCode for dispensing\n"
"solder paste onto a PCB."
@@ -7640,153 +7643,153 @@ msgstr ""
"Инструмент для создания GCode для дозирования\n"
"нанесения паяльной пасты на печатную плату."
-#: flatcamGUI/FlatCAMGUI.py:6525
+#: flatcamGUI/FlatCAMGUI.py:6504
msgid "Diameters of nozzle tools, separated by ','"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6532
+#: flatcamGUI/FlatCAMGUI.py:6511
msgid "New Nozzle Dia:"
msgstr "Новый диам. насадки:"
-#: flatcamGUI/FlatCAMGUI.py:6534 flatcamTools/ToolSolderPaste.py:103
+#: flatcamGUI/FlatCAMGUI.py:6513 flatcamTools/ToolSolderPaste.py:103
msgid "Diameter for the new Nozzle tool to add in the Tool Table"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6542 flatcamTools/ToolSolderPaste.py:166
+#: flatcamGUI/FlatCAMGUI.py:6521 flatcamTools/ToolSolderPaste.py:166
msgid "Z Dispense Start:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6544 flatcamTools/ToolSolderPaste.py:168
+#: flatcamGUI/FlatCAMGUI.py:6523 flatcamTools/ToolSolderPaste.py:168
msgid "The height (Z) when solder paste dispensing starts."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6551 flatcamTools/ToolSolderPaste.py:174
+#: flatcamGUI/FlatCAMGUI.py:6530 flatcamTools/ToolSolderPaste.py:174
msgid "Z Dispense:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6553 flatcamTools/ToolSolderPaste.py:176
+#: flatcamGUI/FlatCAMGUI.py:6532 flatcamTools/ToolSolderPaste.py:176
msgid "The height (Z) when doing solder paste dispensing."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6560 flatcamTools/ToolSolderPaste.py:183
+#: flatcamGUI/FlatCAMGUI.py:6539 flatcamTools/ToolSolderPaste.py:183
msgid "Z Dispense Stop:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6562 flatcamTools/ToolSolderPaste.py:185
+#: flatcamGUI/FlatCAMGUI.py:6541 flatcamTools/ToolSolderPaste.py:185
msgid "The height (Z) when solder paste dispensing stops."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6569 flatcamTools/ToolSolderPaste.py:191
+#: flatcamGUI/FlatCAMGUI.py:6548 flatcamTools/ToolSolderPaste.py:191
msgid "Z Travel:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6571 flatcamTools/ToolSolderPaste.py:193
+#: flatcamGUI/FlatCAMGUI.py:6550 flatcamTools/ToolSolderPaste.py:193
msgid ""
"The height (Z) for travel between pads\n"
"(without dispensing solder paste)."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6579 flatcamTools/ToolSolderPaste.py:200
+#: flatcamGUI/FlatCAMGUI.py:6558 flatcamTools/ToolSolderPaste.py:200
msgid "Z Toolchange:"
msgstr "Z смены инструмента:"
-#: flatcamGUI/FlatCAMGUI.py:6581 flatcamTools/ToolSolderPaste.py:202
+#: flatcamGUI/FlatCAMGUI.py:6560 flatcamTools/ToolSolderPaste.py:202
msgid "The height (Z) for tool (nozzle) change."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6588 flatcamTools/ToolSolderPaste.py:208
+#: flatcamGUI/FlatCAMGUI.py:6567 flatcamTools/ToolSolderPaste.py:208
msgid "XY Toolchange:"
msgstr "XY смены инструмента:"
-#: flatcamGUI/FlatCAMGUI.py:6590 flatcamTools/ToolSolderPaste.py:210
+#: flatcamGUI/FlatCAMGUI.py:6569 flatcamTools/ToolSolderPaste.py:210
msgid ""
"The X,Y location for tool (nozzle) change.\n"
"The format is (x, y) where x and y are real numbers."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6598 flatcamTools/ToolSolderPaste.py:217
+#: flatcamGUI/FlatCAMGUI.py:6577 flatcamTools/ToolSolderPaste.py:217
msgid "Feedrate X-Y:"
msgstr "Скорость подачи X-Y:"
-#: flatcamGUI/FlatCAMGUI.py:6600 flatcamTools/ToolSolderPaste.py:219
+#: flatcamGUI/FlatCAMGUI.py:6579 flatcamTools/ToolSolderPaste.py:219
msgid "Feedrate (speed) while moving on the X-Y plane."
msgstr "Скорость подачи при движении по плоскости X-Y."
-#: flatcamGUI/FlatCAMGUI.py:6607 flatcamTools/ToolSolderPaste.py:225
+#: flatcamGUI/FlatCAMGUI.py:6586 flatcamTools/ToolSolderPaste.py:225
msgid "Feedrate Z:"
msgstr "Скорость подачи Z:"
-#: flatcamGUI/FlatCAMGUI.py:6609 flatcamTools/ToolSolderPaste.py:227
+#: flatcamGUI/FlatCAMGUI.py:6588 flatcamTools/ToolSolderPaste.py:227
msgid ""
"Feedrate (speed) while moving vertically\n"
"(on Z plane)."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6617 flatcamTools/ToolSolderPaste.py:234
+#: flatcamGUI/FlatCAMGUI.py:6596 flatcamTools/ToolSolderPaste.py:234
msgid "Feedrate Z Dispense:"
msgstr "Скорость подачи Z Диспенсер:"
-#: flatcamGUI/FlatCAMGUI.py:6619
+#: flatcamGUI/FlatCAMGUI.py:6598
msgid ""
"Feedrate (speed) while moving up vertically\n"
"to Dispense position (on Z plane)."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6627 flatcamTools/ToolSolderPaste.py:243
+#: flatcamGUI/FlatCAMGUI.py:6606 flatcamTools/ToolSolderPaste.py:243
msgid "Spindle Speed FWD:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6629 flatcamTools/ToolSolderPaste.py:245
+#: flatcamGUI/FlatCAMGUI.py:6608 flatcamTools/ToolSolderPaste.py:245
msgid ""
"The dispenser speed while pushing solder paste\n"
"through the dispenser nozzle."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6637 flatcamTools/ToolSolderPaste.py:252
+#: flatcamGUI/FlatCAMGUI.py:6616 flatcamTools/ToolSolderPaste.py:252
msgid "Dwell FWD:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6639 flatcamTools/ToolSolderPaste.py:254
+#: flatcamGUI/FlatCAMGUI.py:6618 flatcamTools/ToolSolderPaste.py:254
msgid "Pause after solder dispensing."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6646 flatcamTools/ToolSolderPaste.py:260
+#: flatcamGUI/FlatCAMGUI.py:6625 flatcamTools/ToolSolderPaste.py:260
msgid "Spindle Speed REV:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6648 flatcamTools/ToolSolderPaste.py:262
+#: flatcamGUI/FlatCAMGUI.py:6627 flatcamTools/ToolSolderPaste.py:262
msgid ""
"The dispenser speed while retracting solder paste\n"
"through the dispenser nozzle."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6656 flatcamTools/ToolSolderPaste.py:269
+#: flatcamGUI/FlatCAMGUI.py:6635 flatcamTools/ToolSolderPaste.py:269
msgid "Dwell REV:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6658 flatcamTools/ToolSolderPaste.py:271
+#: flatcamGUI/FlatCAMGUI.py:6637 flatcamTools/ToolSolderPaste.py:271
msgid ""
"Pause after solder paste dispenser retracted,\n"
"to allow pressure equilibrium."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6665 flatcamTools/ToolSolderPaste.py:277
+#: flatcamGUI/FlatCAMGUI.py:6644 flatcamTools/ToolSolderPaste.py:277
msgid "PostProcessors:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6667 flatcamTools/ToolSolderPaste.py:279
+#: flatcamGUI/FlatCAMGUI.py:6646 flatcamTools/ToolSolderPaste.py:279
msgid "Files that control the GCode generation."
msgstr "Файлы контролирующие генерацию GCode."
-#: flatcamGUI/FlatCAMGUI.py:6697 flatcamGUI/FlatCAMGUI.py:6703
+#: flatcamGUI/FlatCAMGUI.py:6676 flatcamGUI/FlatCAMGUI.py:6682
msgid "Idle."
msgstr "Нет заданий."
-#: flatcamGUI/FlatCAMGUI.py:6727
+#: flatcamGUI/FlatCAMGUI.py:6706
msgid "Application started ..."
msgstr "Приложение запущено ..."
-#: flatcamGUI/FlatCAMGUI.py:6728
+#: flatcamGUI/FlatCAMGUI.py:6707
msgid "Hello!"
msgstr "Привет!"
@@ -8435,8 +8438,9 @@ msgid "CNC Job Object"
msgstr "Объект программы для ЧПУ"
#: flatcamGUI/ObjectUI.py:1353
+#, fuzzy
msgid "Plot kind:"
-msgstr ""
+msgstr "Plot kind:"
#: flatcamGUI/ObjectUI.py:1369
msgid "Display Annotation:"
@@ -8823,9 +8827,12 @@ msgstr ""
#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:533
#: flatcamTools/ToolCutOut.py:777
+#, fuzzy
msgid ""
"[WARNING_NOTCL] Margin value is missing or wrong format. Add it and retry."
msgstr ""
+"[WARNING_NOTCL] Значение отступа отсутствует или оно имеет неправильный "
+"формат. Добавьте его и повторите попытку."
#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:544
#: flatcamTools/ToolCutOut.py:672
@@ -8982,6 +8989,7 @@ msgid "Alignment Drill Coordinates:"
msgstr "Координаты выравнивающего отверстия:"
#: flatcamTools/ToolDblSided.py:195
+#, fuzzy
msgid ""
"Alignment holes (x1, y1), (x2, y2), ... on one side of the mirror axis. For "
"each set of (x, y) coordinates\n"
@@ -8991,6 +8999,13 @@ msgid ""
"- one drill in mirror position over the axis selected above in the 'Mirror "
"Axis'."
msgstr ""
+"Выравнивающие отверстия (x1, y1), (x2, y2), ... на одной стороне оси "
+"зеркала. Для каждого набора (x, y) координат \n"
+"здесь, пара упражнений будет создана:\n"
+"\\ п\n"
+"- одно упражнение по координатам с поля \\ n\n"
+"- одно сверление в положении зеркала над осью, выбранной выше в «Оси "
+"зеркала»."
#: flatcamTools/ToolDblSided.py:210
msgid ""
@@ -9314,7 +9329,7 @@ msgstr "Начальн."
#: flatcamTools/ToolMeasurement.py:49 flatcamTools/ToolMeasurement.py:52
msgid "Coords"
-msgstr "координаты"
+msgstr "Координаты"
#: flatcamTools/ToolMeasurement.py:50 flatcamTools/ToolMeasurement.py:66
msgid "This is measuring Start point coordinates."
@@ -9663,7 +9678,7 @@ msgstr ""
#: flatcamTools/ToolPaint.py:254
msgid "Create Paint Geometry"
-msgstr ""
+msgstr "Создать Paint Geometry"
#: flatcamTools/ToolPaint.py:256
msgid ""
@@ -9714,11 +9729,11 @@ msgstr ""
msgid "[ERROR_NOTCL] PaintTool.paint_poly() --> %s"
msgstr ""
-#: flatcamTools/ToolPaint.py:970 flatcamTools/ToolPaint.py:1263
+#: flatcamTools/ToolPaint.py:970 flatcamTools/ToolPaint.py:1267
msgid "Polygon Paint started ..."
msgstr "Запущена отрисовка полигона ..."
-#: flatcamTools/ToolPaint.py:1119 flatcamTools/ToolPaint.py:1208
+#: flatcamTools/ToolPaint.py:1123 flatcamTools/ToolPaint.py:1212
#, python-format
msgid ""
"[ERROR] Could not do Paint All. Try a different combination of parameters. "
@@ -9726,7 +9741,7 @@ msgid ""
"%s"
msgstr ""
-#: flatcamTools/ToolPaint.py:1143
+#: flatcamTools/ToolPaint.py:1147
msgid ""
"[ERROR] There is no Painting Geometry in the file.\n"
"Usually it means that the tool diameter is too big for the painted "
@@ -9734,11 +9749,11 @@ msgid ""
"Change the painting parameters and try again."
msgstr ""
-#: flatcamTools/ToolPaint.py:1152
+#: flatcamTools/ToolPaint.py:1156
msgid "[success] Paint All Done."
msgstr ""
-#: flatcamTools/ToolPaint.py:1238
+#: flatcamTools/ToolPaint.py:1242
msgid ""
"[ERROR_NOTCL] There is no Painting Geometry in the file.\n"
"Usually it means that the tool diameter is too big for the painted "
@@ -9746,7 +9761,7 @@ msgid ""
"Change the painting parameters and try again."
msgstr ""
-#: flatcamTools/ToolPaint.py:1247
+#: flatcamTools/ToolPaint.py:1251
msgid "[success] Paint All with Rest-Machining done."
msgstr ""
@@ -10556,5 +10571,15 @@ msgstr "Объекты CNCJob не могут быть смещены."
#~ msgid "tool_tab"
#~ msgstr "tool_tab"
+#~ msgid "Tool dia: "
+#~ msgstr "Диам. инстр.: "
+
+#~ msgid ""
+#~ "The diameter of the cutting\n"
+#~ "tool.."
+#~ msgstr ""
+#~ "Диаметр режущего\n"
+#~ "инструмента.."
+
#~ msgid "Disable"
#~ msgstr "Отключить"
diff --git a/locale_template/strings.pot b/locale_template/strings.pot
index a0af088c..c053e7b8 100644
--- a/locale_template/strings.pot
+++ b/locale_template/strings.pot
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"POT-Creation-Date: 2019-06-11 23:00+0300\n"
+"POT-Creation-Date: 2019-06-22 23:56+0300\n"
"PO-Revision-Date: 2019-03-25 15:08+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -44,124 +44,124 @@ msgstr ""
msgid "Open Script file failed."
msgstr ""
-#: FlatCAMApp.py:2235
+#: FlatCAMApp.py:2244
msgid "[WARNING_NOTCL] Select a Geometry, Gerber or Excellon Object to edit."
msgstr ""
-#: FlatCAMApp.py:2245
+#: FlatCAMApp.py:2254
msgid ""
"[WARNING_NOTCL] Simultanoeus editing of tools geometry in a MultiGeo "
"Geometry is not possible.\n"
"Edit only one geometry at a time."
msgstr ""
-#: FlatCAMApp.py:2289
+#: FlatCAMApp.py:2309
msgid "[WARNING_NOTCL] Editor is activated ..."
msgstr ""
-#: FlatCAMApp.py:2307
+#: FlatCAMApp.py:2327
msgid "Do you want to save the edited object?"
msgstr ""
-#: FlatCAMApp.py:2308 flatcamGUI/FlatCAMGUI.py:1618
+#: FlatCAMApp.py:2328 flatcamGUI/FlatCAMGUI.py:1618
msgid "Close Editor"
msgstr ""
-#: FlatCAMApp.py:2311 FlatCAMApp.py:3403 FlatCAMApp.py:5881
+#: FlatCAMApp.py:2331 FlatCAMApp.py:3423 FlatCAMApp.py:5989
#: FlatCAMTranslation.py:89 flatcamGUI/FlatCAMGUI.py:3730
msgid "Yes"
msgstr ""
-#: FlatCAMApp.py:2312 FlatCAMApp.py:3404 FlatCAMApp.py:5882
+#: FlatCAMApp.py:2332 FlatCAMApp.py:3424 FlatCAMApp.py:5990
#: FlatCAMTranslation.py:90 flatcamGUI/FlatCAMGUI.py:3731
msgid "No"
msgstr ""
-#: FlatCAMApp.py:2313 FlatCAMApp.py:3405 FlatCAMApp.py:3737 FlatCAMApp.py:5883
+#: FlatCAMApp.py:2333 FlatCAMApp.py:3425 FlatCAMApp.py:3836 FlatCAMApp.py:5991
msgid "Cancel"
msgstr ""
-#: FlatCAMApp.py:2340
+#: FlatCAMApp.py:2360
msgid "[WARNING] Object empty after edit."
msgstr ""
-#: FlatCAMApp.py:2362 FlatCAMApp.py:2381 FlatCAMApp.py:2393
+#: FlatCAMApp.py:2382 FlatCAMApp.py:2401 FlatCAMApp.py:2413
msgid "[WARNING_NOTCL] Select a Gerber, Geometry or Excellon Object to update."
msgstr ""
-#: FlatCAMApp.py:2365
+#: FlatCAMApp.py:2385
#, python-format
msgid "[selected] %s is updated, returning to App..."
msgstr ""
-#: FlatCAMApp.py:2730
+#: FlatCAMApp.py:2750
msgid "[ERROR] Could not load defaults file."
msgstr ""
-#: FlatCAMApp.py:2742
+#: FlatCAMApp.py:2762
msgid "[ERROR] Failed to parse defaults file."
msgstr ""
-#: FlatCAMApp.py:2763 FlatCAMApp.py:2767
+#: FlatCAMApp.py:2783 FlatCAMApp.py:2787
msgid "Import FlatCAM Preferences"
msgstr ""
-#: FlatCAMApp.py:2773
+#: FlatCAMApp.py:2793
msgid "[WARNING_NOTCL] FlatCAM preferences import cancelled."
msgstr ""
-#: FlatCAMApp.py:2781 FlatCAMApp.py:2835 FlatCAMApp.py:3282
+#: FlatCAMApp.py:2801 FlatCAMApp.py:2855 FlatCAMApp.py:3302
msgid "[ERROR_NOTCL] Could not load defaults file."
msgstr ""
-#: FlatCAMApp.py:2789 FlatCAMApp.py:3291
+#: FlatCAMApp.py:2809 FlatCAMApp.py:3311
msgid "[ERROR_NOTCL] Failed to parse defaults file."
msgstr ""
-#: FlatCAMApp.py:2792
+#: FlatCAMApp.py:2812
#, python-format
msgid "[success] Imported Defaults from %s"
msgstr ""
-#: FlatCAMApp.py:2807 FlatCAMApp.py:2812
+#: FlatCAMApp.py:2827 FlatCAMApp.py:2832
msgid "Export FlatCAM Preferences"
msgstr ""
-#: FlatCAMApp.py:2819
+#: FlatCAMApp.py:2839
msgid "[WARNING_NOTCL] FlatCAM preferences export cancelled."
msgstr ""
-#: FlatCAMApp.py:2854 FlatCAMApp.py:3336
+#: FlatCAMApp.py:2874 FlatCAMApp.py:3356
msgid "[ERROR_NOTCL] Failed to write defaults to file."
msgstr ""
-#: FlatCAMApp.py:2907
+#: FlatCAMApp.py:2927
msgid "[ERROR_NOTCL] Failed to open recent files file for writing."
msgstr ""
-#: FlatCAMApp.py:2984 camlib.py:4454
+#: FlatCAMApp.py:3004 camlib.py:4457
msgid "[ERROR_NOTCL] An internal error has ocurred. See shell.\n"
msgstr ""
-#: FlatCAMApp.py:2985
+#: FlatCAMApp.py:3005
#, python-brace-format
msgid ""
"Object ({kind}) failed because: {error} \n"
"\n"
msgstr ""
-#: FlatCAMApp.py:3005
+#: FlatCAMApp.py:3025
msgid "Converting units to "
msgstr ""
-#: FlatCAMApp.py:3084 FlatCAMApp.py:3087 FlatCAMApp.py:3090 FlatCAMApp.py:3093
+#: FlatCAMApp.py:3104 FlatCAMApp.py:3107 FlatCAMApp.py:3110 FlatCAMApp.py:3113
#, python-brace-format
msgid ""
"[selected] {kind} created/selected: {name}"
"span>"
msgstr ""
-#: FlatCAMApp.py:3187
+#: FlatCAMApp.py:3207
#, python-brace-format
msgid ""
"FlatCAM
Version {version} {beta} ({date}) - "
@@ -175,41 +175,41 @@ msgid ""
"downloads/\">here.
"
msgstr ""
-#: FlatCAMApp.py:3340
+#: FlatCAMApp.py:3360
msgid "[success] Defaults saved."
msgstr ""
-#: FlatCAMApp.py:3361
+#: FlatCAMApp.py:3381
msgid "[ERROR_NOTCL] Could not load factory defaults file."
msgstr ""
-#: FlatCAMApp.py:3370
+#: FlatCAMApp.py:3390
msgid "[ERROR_NOTCL] Failed to parse factory defaults file."
msgstr ""
-#: FlatCAMApp.py:3384
+#: FlatCAMApp.py:3404
msgid "[ERROR_NOTCL] Failed to write factory defaults to file."
msgstr ""
-#: FlatCAMApp.py:3388
+#: FlatCAMApp.py:3408
msgid "Factory defaults saved."
msgstr ""
-#: FlatCAMApp.py:3393 flatcamGUI/FlatCAMGUI.py:3106
+#: FlatCAMApp.py:3413 flatcamGUI/FlatCAMGUI.py:3106
msgid "[WARNING_NOTCL] Application is saving the project. Please wait ..."
msgstr ""
-#: FlatCAMApp.py:3398
+#: FlatCAMApp.py:3418
msgid ""
"There are files/objects modified in FlatCAM. \n"
"Do you want to Save the project?"
msgstr ""
-#: FlatCAMApp.py:3401 FlatCAMApp.py:5879
+#: FlatCAMApp.py:3421 FlatCAMApp.py:5987
msgid "Save changes"
msgstr ""
-#: FlatCAMApp.py:3468
+#: FlatCAMApp.py:3488
msgid ""
"[ERROR] Failed join. The Geometry objects are of different types.\n"
"At least one is MultiGeo type and the other is SingleGeo type. A possibility "
@@ -219,206 +219,206 @@ msgid ""
"Check the generated GCODE."
msgstr ""
-#: FlatCAMApp.py:3509
+#: FlatCAMApp.py:3529
msgid "[ERROR_NOTCL] Failed. Excellon joining works only on Excellon objects."
msgstr ""
-#: FlatCAMApp.py:3531
+#: FlatCAMApp.py:3551
msgid "[ERROR_NOTCL] Failed. Gerber joining works only on Gerber objects."
msgstr ""
-#: FlatCAMApp.py:3546 FlatCAMApp.py:3571
+#: FlatCAMApp.py:3566 FlatCAMApp.py:3591
msgid "[ERROR_NOTCL] Failed. Select a Geometry Object and try again."
msgstr ""
-#: FlatCAMApp.py:3550 FlatCAMApp.py:3575
+#: FlatCAMApp.py:3570 FlatCAMApp.py:3595
#, python-format
msgid "[ERROR_NOTCL] Expected a FlatCAMGeometry, got %s"
msgstr ""
-#: FlatCAMApp.py:3563
+#: FlatCAMApp.py:3583
msgid "[success] A Geometry object was converted to MultiGeo type."
msgstr ""
-#: FlatCAMApp.py:3589
+#: FlatCAMApp.py:3609
msgid "[success] A Geometry object was converted to SingleGeo type."
msgstr ""
-#: FlatCAMApp.py:3736 FlatCAMApp.py:4572 FlatCAMApp.py:6154 FlatCAMApp.py:6165
-#: FlatCAMApp.py:6405 FlatCAMApp.py:6415
+#: FlatCAMApp.py:3835 FlatCAMApp.py:4674 FlatCAMApp.py:6262 FlatCAMApp.py:6273
+#: FlatCAMApp.py:6513 FlatCAMApp.py:6523
msgid "Ok"
msgstr ""
-#: FlatCAMApp.py:3778
+#: FlatCAMApp.py:3880
#, python-format
msgid "[success] Converted units to %s"
msgstr ""
-#: FlatCAMApp.py:3789
+#: FlatCAMApp.py:3891
msgid "[WARNING_NOTCL] Units conversion cancelled."
msgstr ""
-#: FlatCAMApp.py:4441
+#: FlatCAMApp.py:4543
msgid "Open file"
msgstr ""
-#: FlatCAMApp.py:4472 FlatCAMApp.py:4477
+#: FlatCAMApp.py:4574 FlatCAMApp.py:4579
msgid "Export G-Code ..."
msgstr ""
-#: FlatCAMApp.py:4480
+#: FlatCAMApp.py:4582
msgid "[WARNING_NOTCL] Export Code cancelled."
msgstr ""
-#: FlatCAMApp.py:4490
+#: FlatCAMApp.py:4592
msgid "[WARNING] No such file or directory"
msgstr ""
-#: FlatCAMApp.py:4497
+#: FlatCAMApp.py:4599
#, python-format
msgid "Saved to: %s"
msgstr ""
-#: FlatCAMApp.py:4560 FlatCAMApp.py:4593 FlatCAMApp.py:4604 FlatCAMApp.py:4615
+#: FlatCAMApp.py:4662 FlatCAMApp.py:4695 FlatCAMApp.py:4706 FlatCAMApp.py:4717
#: flatcamTools/ToolNonCopperClear.py:489 flatcamTools/ToolSolderPaste.py:765
msgid ""
"[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float "
"format."
msgstr ""
-#: FlatCAMApp.py:4565 FlatCAMApp.py:4598 FlatCAMApp.py:4609 FlatCAMApp.py:4620
+#: FlatCAMApp.py:4667 FlatCAMApp.py:4700 FlatCAMApp.py:4711 FlatCAMApp.py:4722
#: flatcamGUI/FlatCAMGUI.py:3001
msgid "[WARNING_NOTCL] Adding Tool cancelled ..."
msgstr ""
-#: FlatCAMApp.py:4568
+#: FlatCAMApp.py:4670
msgid ""
"Adding Tool works only when Advanced is checked.\n"
"Go to Preferences -> General - Show Advanced Options."
msgstr ""
-#: FlatCAMApp.py:4681
+#: FlatCAMApp.py:4783
msgid "Object(s) deleted ..."
msgstr ""
-#: FlatCAMApp.py:4685
+#: FlatCAMApp.py:4787
msgid "Failed. No object(s) selected..."
msgstr ""
-#: FlatCAMApp.py:4687
+#: FlatCAMApp.py:4789
msgid "Save the work in Editor and try again ..."
msgstr ""
-#: FlatCAMApp.py:4700
+#: FlatCAMApp.py:4802
msgid "Click to set the origin ..."
msgstr ""
-#: FlatCAMApp.py:4712
+#: FlatCAMApp.py:4814
msgid "Jump to ..."
msgstr ""
-#: FlatCAMApp.py:4713
+#: FlatCAMApp.py:4815
msgid "Enter the coordinates in format X,Y:"
msgstr ""
-#: FlatCAMApp.py:4720
+#: FlatCAMApp.py:4822
msgid "Wrong coordinates. Enter coordinates in format: X,Y"
msgstr ""
-#: FlatCAMApp.py:4738 flatcamEditors/FlatCAMExcEditor.py:2320
+#: FlatCAMApp.py:4840 flatcamEditors/FlatCAMExcEditor.py:2320
#: flatcamEditors/FlatCAMExcEditor.py:2327
-#: flatcamEditors/FlatCAMGeoEditor.py:3645
-#: flatcamEditors/FlatCAMGeoEditor.py:3659
+#: flatcamEditors/FlatCAMGeoEditor.py:3648
+#: flatcamEditors/FlatCAMGeoEditor.py:3662
#: flatcamEditors/FlatCAMGrbEditor.py:1040
#: flatcamEditors/FlatCAMGrbEditor.py:1141
#: flatcamEditors/FlatCAMGrbEditor.py:1409
#: flatcamEditors/FlatCAMGrbEditor.py:1666
-#: flatcamEditors/FlatCAMGrbEditor.py:3950
-#: flatcamEditors/FlatCAMGrbEditor.py:3964 flatcamGUI/FlatCAMGUI.py:2414
+#: flatcamEditors/FlatCAMGrbEditor.py:3960
+#: flatcamEditors/FlatCAMGrbEditor.py:3974 flatcamGUI/FlatCAMGUI.py:2414
#: flatcamGUI/FlatCAMGUI.py:2426
msgid "[success] Done."
msgstr ""
-#: FlatCAMApp.py:4870 FlatCAMApp.py:4937
+#: FlatCAMApp.py:4972 FlatCAMApp.py:5039
msgid "[WARNING_NOTCL] No object is selected. Select an object and try again."
msgstr ""
-#: FlatCAMApp.py:4978
+#: FlatCAMApp.py:5080
msgid "[success] Origin set ..."
msgstr ""
-#: FlatCAMApp.py:4998
+#: FlatCAMApp.py:5100
msgid "Preferences"
msgstr ""
-#: FlatCAMApp.py:5018
+#: FlatCAMApp.py:5120
msgid "[WARNING_NOTCL] No object selected to Flip on Y axis."
msgstr ""
-#: FlatCAMApp.py:5043
+#: FlatCAMApp.py:5145
msgid "[success] Flip on Y axis done."
msgstr ""
-#: FlatCAMApp.py:5045 FlatCAMApp.py:5085
+#: FlatCAMApp.py:5147 FlatCAMApp.py:5187
#: flatcamEditors/FlatCAMGeoEditor.py:1355
-#: flatcamEditors/FlatCAMGrbEditor.py:5331 flatcamTools/ToolTransform.py:748
+#: flatcamEditors/FlatCAMGrbEditor.py:5343 flatcamTools/ToolTransform.py:748
#, python-format
msgid "[ERROR_NOTCL] Due of %s, Flip action was not executed."
msgstr ""
-#: FlatCAMApp.py:5058
+#: FlatCAMApp.py:5160
msgid "[WARNING_NOTCL] No object selected to Flip on X axis."
msgstr ""
-#: FlatCAMApp.py:5083
+#: FlatCAMApp.py:5185
msgid "[success] Flip on X axis done."
msgstr ""
-#: FlatCAMApp.py:5098
+#: FlatCAMApp.py:5200
msgid "[WARNING_NOTCL] No object selected to Rotate."
msgstr ""
-#: FlatCAMApp.py:5101 FlatCAMApp.py:5146 FlatCAMApp.py:5177
+#: FlatCAMApp.py:5203 FlatCAMApp.py:5248 FlatCAMApp.py:5279
msgid "Transform"
msgstr ""
-#: FlatCAMApp.py:5101 FlatCAMApp.py:5146 FlatCAMApp.py:5177
+#: FlatCAMApp.py:5203 FlatCAMApp.py:5248 FlatCAMApp.py:5279
msgid "Enter the Angle value:"
msgstr ""
-#: FlatCAMApp.py:5131
+#: FlatCAMApp.py:5233
msgid "[success] Rotation done."
msgstr ""
-#: FlatCAMApp.py:5133 flatcamEditors/FlatCAMGeoEditor.py:1298
-#: flatcamEditors/FlatCAMGrbEditor.py:5262 flatcamTools/ToolTransform.py:677
+#: FlatCAMApp.py:5235 flatcamEditors/FlatCAMGeoEditor.py:1298
+#: flatcamEditors/FlatCAMGrbEditor.py:5272 flatcamTools/ToolTransform.py:677
#, python-format
msgid "[ERROR_NOTCL] Due of %s, rotation movement was not executed."
msgstr ""
-#: FlatCAMApp.py:5144
+#: FlatCAMApp.py:5246
msgid "[WARNING_NOTCL] No object selected to Skew/Shear on X axis."
msgstr ""
-#: FlatCAMApp.py:5165
+#: FlatCAMApp.py:5267
msgid "[success] Skew on X axis done."
msgstr ""
-#: FlatCAMApp.py:5175
+#: FlatCAMApp.py:5277
msgid "[WARNING_NOTCL] No object selected to Skew/Shear on Y axis."
msgstr ""
-#: FlatCAMApp.py:5196
+#: FlatCAMApp.py:5298
msgid "[success] Skew on Y axis done."
msgstr ""
-#: FlatCAMApp.py:5265
+#: FlatCAMApp.py:5368
msgid "Grid On/Off"
msgstr ""
-#: FlatCAMApp.py:5278 flatcamEditors/FlatCAMGeoEditor.py:937
+#: FlatCAMApp.py:5381 flatcamEditors/FlatCAMGeoEditor.py:937
#: flatcamEditors/FlatCAMGrbEditor.py:2381
-#: flatcamEditors/FlatCAMGrbEditor.py:4853 flatcamGUI/ObjectUI.py:991
+#: flatcamEditors/FlatCAMGrbEditor.py:4861 flatcamGUI/ObjectUI.py:991
#: flatcamTools/ToolDblSided.py:160 flatcamTools/ToolDblSided.py:208
#: flatcamTools/ToolNonCopperClear.py:134 flatcamTools/ToolPaint.py:131
#: flatcamTools/ToolSolderPaste.py:115 flatcamTools/ToolSolderPaste.py:479
@@ -426,7 +426,7 @@ msgstr ""
msgid "Add"
msgstr ""
-#: FlatCAMApp.py:5279 FlatCAMObj.py:3270
+#: FlatCAMApp.py:5382 FlatCAMObj.py:3295
#: flatcamEditors/FlatCAMGrbEditor.py:2386 flatcamGUI/FlatCAMGUI.py:527
#: flatcamGUI/FlatCAMGUI.py:724 flatcamGUI/FlatCAMGUI.py:1616
#: flatcamGUI/FlatCAMGUI.py:1953 flatcamGUI/ObjectUI.py:1007
@@ -435,274 +435,278 @@ msgstr ""
msgid "Delete"
msgstr ""
-#: FlatCAMApp.py:5292
+#: FlatCAMApp.py:5395
msgid "New Grid ..."
msgstr ""
-#: FlatCAMApp.py:5293
+#: FlatCAMApp.py:5396
msgid "Enter a Grid Value:"
msgstr ""
-#: FlatCAMApp.py:5301 FlatCAMApp.py:5328
+#: FlatCAMApp.py:5404 FlatCAMApp.py:5431
msgid ""
"[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float "
"format."
msgstr ""
-#: FlatCAMApp.py:5307
+#: FlatCAMApp.py:5410
msgid "[success] New Grid added ..."
msgstr ""
-#: FlatCAMApp.py:5310
+#: FlatCAMApp.py:5413
msgid "[WARNING_NOTCL] Grid already exists ..."
msgstr ""
-#: FlatCAMApp.py:5313
+#: FlatCAMApp.py:5416
msgid "[WARNING_NOTCL] Adding New Grid cancelled ..."
msgstr ""
-#: FlatCAMApp.py:5335
+#: FlatCAMApp.py:5438
msgid "[ERROR_NOTCL] Grid Value does not exist ..."
msgstr ""
-#: FlatCAMApp.py:5338
+#: FlatCAMApp.py:5441
msgid "[success] Grid Value deleted ..."
msgstr ""
-#: FlatCAMApp.py:5341
+#: FlatCAMApp.py:5444
msgid "[WARNING_NOTCL] Delete Grid value cancelled ..."
msgstr ""
-#: FlatCAMApp.py:5380
+#: FlatCAMApp.py:5483
msgid "[WARNING_NOTCL] No object selected to copy it's name"
msgstr ""
-#: FlatCAMApp.py:5384
+#: FlatCAMApp.py:5487
msgid "Name copied on clipboard ..."
msgstr ""
-#: FlatCAMApp.py:5677 FlatCAMApp.py:5680 FlatCAMApp.py:5683 FlatCAMApp.py:5686
-#: FlatCAMApp.py:5701 FlatCAMApp.py:5704 FlatCAMApp.py:5707 FlatCAMApp.py:5710
-#: FlatCAMApp.py:5750 FlatCAMApp.py:5753 FlatCAMApp.py:5756 FlatCAMApp.py:5759
+#: FlatCAMApp.py:5529 flatcamEditors/FlatCAMGrbEditor.py:3901
+msgid "[success] Coordinates copied to clipboard."
+msgstr ""
+
+#: FlatCAMApp.py:5785 FlatCAMApp.py:5788 FlatCAMApp.py:5791 FlatCAMApp.py:5794
+#: FlatCAMApp.py:5809 FlatCAMApp.py:5812 FlatCAMApp.py:5815 FlatCAMApp.py:5818
+#: FlatCAMApp.py:5858 FlatCAMApp.py:5861 FlatCAMApp.py:5864 FlatCAMApp.py:5867
#: ObjectCollection.py:719 ObjectCollection.py:722 ObjectCollection.py:725
#: ObjectCollection.py:728
#, python-brace-format
msgid "[selected]{name} selected"
msgstr ""
-#: FlatCAMApp.py:5876
+#: FlatCAMApp.py:5984
msgid ""
"There are files/objects opened in FlatCAM.\n"
"Creating a New project will delete them.\n"
"Do you want to Save the project?"
msgstr ""
-#: FlatCAMApp.py:5897
+#: FlatCAMApp.py:6005
msgid "[success] New Project created..."
msgstr ""
-#: FlatCAMApp.py:6013 FlatCAMApp.py:6016 flatcamGUI/FlatCAMGUI.py:608
+#: FlatCAMApp.py:6121 FlatCAMApp.py:6124 flatcamGUI/FlatCAMGUI.py:608
#: flatcamGUI/FlatCAMGUI.py:1832
msgid "Open Gerber"
msgstr ""
-#: FlatCAMApp.py:6021
+#: FlatCAMApp.py:6129
msgid "[WARNING_NOTCL] Open Gerber cancelled."
msgstr ""
-#: FlatCAMApp.py:6042 FlatCAMApp.py:6045 flatcamGUI/FlatCAMGUI.py:609
+#: FlatCAMApp.py:6150 FlatCAMApp.py:6153 flatcamGUI/FlatCAMGUI.py:609
#: flatcamGUI/FlatCAMGUI.py:1833
msgid "Open Excellon"
msgstr ""
-#: FlatCAMApp.py:6050
+#: FlatCAMApp.py:6158
msgid "[WARNING_NOTCL] Open Excellon cancelled."
msgstr ""
-#: FlatCAMApp.py:6072 FlatCAMApp.py:6075
+#: FlatCAMApp.py:6180 FlatCAMApp.py:6183
msgid "Open G-Code"
msgstr ""
-#: FlatCAMApp.py:6080
+#: FlatCAMApp.py:6188
msgid "[WARNING_NOTCL] Open G-Code cancelled."
msgstr ""
-#: FlatCAMApp.py:6098 FlatCAMApp.py:6101
+#: FlatCAMApp.py:6206 FlatCAMApp.py:6209
msgid "Open Project"
msgstr ""
-#: FlatCAMApp.py:6109
+#: FlatCAMApp.py:6217
msgid "[WARNING_NOTCL] Open Project cancelled."
msgstr ""
-#: FlatCAMApp.py:6128 FlatCAMApp.py:6131
+#: FlatCAMApp.py:6236 FlatCAMApp.py:6239
msgid "Open Configuration File"
msgstr ""
-#: FlatCAMApp.py:6135
+#: FlatCAMApp.py:6243
msgid "[WARNING_NOTCL] Open Config cancelled."
msgstr ""
-#: FlatCAMApp.py:6150 FlatCAMApp.py:6401 FlatCAMApp.py:8551 FlatCAMApp.py:8571
-#: FlatCAMApp.py:8592 FlatCAMApp.py:8614
+#: FlatCAMApp.py:6258 FlatCAMApp.py:6509 FlatCAMApp.py:8662 FlatCAMApp.py:8682
+#: FlatCAMApp.py:8703 FlatCAMApp.py:8725
msgid "[WARNING_NOTCL] No object selected."
msgstr ""
-#: FlatCAMApp.py:6151 FlatCAMApp.py:6402
+#: FlatCAMApp.py:6259 FlatCAMApp.py:6510
msgid "Please Select a Geometry object to export"
msgstr ""
-#: FlatCAMApp.py:6162
+#: FlatCAMApp.py:6270
msgid "[ERROR_NOTCL] Only Geometry, Gerber and CNCJob objects can be used."
msgstr ""
-#: FlatCAMApp.py:6175 FlatCAMApp.py:6179
+#: FlatCAMApp.py:6283 FlatCAMApp.py:6287
msgid "Export SVG"
msgstr ""
-#: FlatCAMApp.py:6184
+#: FlatCAMApp.py:6292
msgid "[WARNING_NOTCL] Export SVG cancelled."
msgstr ""
-#: FlatCAMApp.py:6203
+#: FlatCAMApp.py:6311
msgid "[[WARNING_NOTCL]] Data must be a 3D array with last dimension 3 or 4"
msgstr ""
-#: FlatCAMApp.py:6209 FlatCAMApp.py:6213
+#: FlatCAMApp.py:6317 FlatCAMApp.py:6321
msgid "Export PNG Image"
msgstr ""
-#: FlatCAMApp.py:6218
+#: FlatCAMApp.py:6326
msgid "Export PNG cancelled."
msgstr ""
-#: FlatCAMApp.py:6237
+#: FlatCAMApp.py:6345
msgid ""
"[WARNING_NOTCL] No object selected. Please select an Gerber object to export."
msgstr ""
-#: FlatCAMApp.py:6242 FlatCAMApp.py:6365
+#: FlatCAMApp.py:6350 FlatCAMApp.py:6473
msgid ""
"[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files..."
msgstr ""
-#: FlatCAMApp.py:6254
+#: FlatCAMApp.py:6362
msgid "Save Gerber source file"
msgstr ""
-#: FlatCAMApp.py:6259
+#: FlatCAMApp.py:6367
msgid "[WARNING_NOTCL] Save Gerber source file cancelled."
msgstr ""
-#: FlatCAMApp.py:6278
+#: FlatCAMApp.py:6386
msgid ""
"[WARNING_NOTCL] No object selected. Please select an Excellon object to "
"export."
msgstr ""
-#: FlatCAMApp.py:6283 FlatCAMApp.py:6324
+#: FlatCAMApp.py:6391 FlatCAMApp.py:6432
msgid ""
"[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files..."
msgstr ""
-#: FlatCAMApp.py:6291 FlatCAMApp.py:6295
+#: FlatCAMApp.py:6399 FlatCAMApp.py:6403
msgid "Save Excellon source file"
msgstr ""
-#: FlatCAMApp.py:6300
+#: FlatCAMApp.py:6408
msgid "[WARNING_NOTCL] Saving Excellon source file cancelled."
msgstr ""
-#: FlatCAMApp.py:6319
+#: FlatCAMApp.py:6427
msgid ""
"[WARNING_NOTCL] No object selected. Please Select an Excellon object to "
"export."
msgstr ""
-#: FlatCAMApp.py:6332 FlatCAMApp.py:6336
+#: FlatCAMApp.py:6440 FlatCAMApp.py:6444
msgid "Export Excellon"
msgstr ""
-#: FlatCAMApp.py:6341
+#: FlatCAMApp.py:6449
msgid "[WARNING_NOTCL] Export Excellon cancelled."
msgstr ""
-#: FlatCAMApp.py:6360
+#: FlatCAMApp.py:6468
msgid ""
"[WARNING_NOTCL] No object selected. Please Select an Gerber object to export."
msgstr ""
-#: FlatCAMApp.py:6373 FlatCAMApp.py:6377
+#: FlatCAMApp.py:6481 FlatCAMApp.py:6485
msgid "Export Gerber"
msgstr ""
-#: FlatCAMApp.py:6382
+#: FlatCAMApp.py:6490
msgid "[WARNING_NOTCL] Export Gerber cancelled."
msgstr ""
-#: FlatCAMApp.py:6412
+#: FlatCAMApp.py:6520
msgid "[ERROR_NOTCL] Only Geometry objects can be used."
msgstr ""
-#: FlatCAMApp.py:6426 FlatCAMApp.py:6430
+#: FlatCAMApp.py:6534 FlatCAMApp.py:6538
msgid "Export DXF"
msgstr ""
-#: FlatCAMApp.py:6436
+#: FlatCAMApp.py:6544
msgid "[WARNING_NOTCL] Export DXF cancelled."
msgstr ""
-#: FlatCAMApp.py:6456 FlatCAMApp.py:6459
+#: FlatCAMApp.py:6564 FlatCAMApp.py:6567
msgid "Import SVG"
msgstr ""
-#: FlatCAMApp.py:6468
+#: FlatCAMApp.py:6576
msgid "[WARNING_NOTCL] Open SVG cancelled."
msgstr ""
-#: FlatCAMApp.py:6487 FlatCAMApp.py:6491
+#: FlatCAMApp.py:6595 FlatCAMApp.py:6599
msgid "Import DXF"
msgstr ""
-#: FlatCAMApp.py:6500
+#: FlatCAMApp.py:6608
msgid "[WARNING_NOTCL] Open DXF cancelled."
msgstr ""
-#: FlatCAMApp.py:6518
+#: FlatCAMApp.py:6626
#, python-format
msgid "%s"
msgstr ""
-#: FlatCAMApp.py:6538
+#: FlatCAMApp.py:6646
msgid ""
"[WARNING_NOTCL] Select an Gerber or Excellon file to view it's source file."
msgstr ""
-#: FlatCAMApp.py:6545
+#: FlatCAMApp.py:6653
msgid ""
"[WARNING_NOTCL] There is no selected object for which to see it's source "
"file code."
msgstr ""
-#: FlatCAMApp.py:6553
+#: FlatCAMApp.py:6661
msgid "Source Editor"
msgstr ""
-#: FlatCAMApp.py:6563
+#: FlatCAMApp.py:6671
#, python-format
msgid "[ERROR]App.on_view_source() -->%s"
msgstr ""
-#: FlatCAMApp.py:6575 FlatCAMApp.py:7717 FlatCAMObj.py:5551
+#: FlatCAMApp.py:6683 FlatCAMApp.py:7825 FlatCAMObj.py:5588
#: flatcamTools/ToolSolderPaste.py:1278
msgid "Code Editor"
msgstr ""
-#: FlatCAMApp.py:6587
+#: FlatCAMApp.py:6695
msgid "Script Editor"
msgstr ""
-#: FlatCAMApp.py:6590
+#: FlatCAMApp.py:6698
msgid ""
"#\n"
"# CREATE A NEW FLATCAM TCL SCRIPT\n"
@@ -726,216 +730,216 @@ msgid ""
"\n"
msgstr ""
-#: FlatCAMApp.py:6613 FlatCAMApp.py:6616
+#: FlatCAMApp.py:6721 FlatCAMApp.py:6724
msgid "Open TCL script"
msgstr ""
-#: FlatCAMApp.py:6624
+#: FlatCAMApp.py:6732
msgid "[WARNING_NOTCL] Open TCL script cancelled."
msgstr ""
-#: FlatCAMApp.py:6636
+#: FlatCAMApp.py:6744
#, python-format
msgid "[ERROR]App.on_fileopenscript() -->%s"
msgstr ""
-#: FlatCAMApp.py:6662 FlatCAMApp.py:6665
+#: FlatCAMApp.py:6770 FlatCAMApp.py:6773
msgid "Run TCL script"
msgstr ""
-#: FlatCAMApp.py:6673
+#: FlatCAMApp.py:6781
msgid "[WARNING_NOTCL] Run TCL script cancelled."
msgstr ""
-#: FlatCAMApp.py:6723 FlatCAMApp.py:6727
+#: FlatCAMApp.py:6831 FlatCAMApp.py:6835
msgid "Save Project As ..."
msgstr ""
-#: FlatCAMApp.py:6724
+#: FlatCAMApp.py:6832
#, python-brace-format
msgid "{l_save}/Project_{date}"
msgstr ""
-#: FlatCAMApp.py:6732
+#: FlatCAMApp.py:6840
msgid "[WARNING_NOTCL] Save Project cancelled."
msgstr ""
-#: FlatCAMApp.py:6776
+#: FlatCAMApp.py:6884
msgid "Exporting SVG"
msgstr ""
-#: FlatCAMApp.py:6810 FlatCAMApp.py:6916 FlatCAMApp.py:7031
+#: FlatCAMApp.py:6918 FlatCAMApp.py:7024 FlatCAMApp.py:7139
#, python-format
msgid "[success] SVG file exported to %s"
msgstr ""
-#: FlatCAMApp.py:6841 FlatCAMApp.py:6962
+#: FlatCAMApp.py:6949 FlatCAMApp.py:7070
#, python-format
msgid "[WARNING_NOTCL] No object Box. Using instead %s"
msgstr ""
-#: FlatCAMApp.py:6919 FlatCAMApp.py:7034
+#: FlatCAMApp.py:7027 FlatCAMApp.py:7142
msgid "Generating Film ... Please wait."
msgstr ""
-#: FlatCAMApp.py:7182
+#: FlatCAMApp.py:7290
#, python-format
msgid "[success] Excellon file exported to %s"
msgstr ""
-#: FlatCAMApp.py:7189
+#: FlatCAMApp.py:7297
msgid "Exporting Excellon"
msgstr ""
-#: FlatCAMApp.py:7194 FlatCAMApp.py:7201
+#: FlatCAMApp.py:7302 FlatCAMApp.py:7309
msgid "[ERROR_NOTCL] Could not export Excellon file."
msgstr ""
-#: FlatCAMApp.py:7299
+#: FlatCAMApp.py:7407
#, python-format
msgid "[success] Gerber file exported to %s"
msgstr ""
-#: FlatCAMApp.py:7306
+#: FlatCAMApp.py:7414
msgid "Exporting Gerber"
msgstr ""
-#: FlatCAMApp.py:7311 FlatCAMApp.py:7318
+#: FlatCAMApp.py:7419 FlatCAMApp.py:7426
msgid "[ERROR_NOTCL] Could not export Gerber file."
msgstr ""
-#: FlatCAMApp.py:7358
+#: FlatCAMApp.py:7466
#, python-format
msgid "[success] DXF file exported to %s"
msgstr ""
-#: FlatCAMApp.py:7364
+#: FlatCAMApp.py:7472
msgid "Exporting DXF"
msgstr ""
-#: FlatCAMApp.py:7369 FlatCAMApp.py:7376
+#: FlatCAMApp.py:7477 FlatCAMApp.py:7484
msgid "[[WARNING_NOTCL]] Could not export DXF file."
msgstr ""
-#: FlatCAMApp.py:7396 FlatCAMApp.py:7438 FlatCAMApp.py:7482
+#: FlatCAMApp.py:7504 FlatCAMApp.py:7546 FlatCAMApp.py:7590
msgid ""
"[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and "
"Gerber are supported"
msgstr ""
-#: FlatCAMApp.py:7406
+#: FlatCAMApp.py:7514
msgid "Importing SVG"
msgstr ""
-#: FlatCAMApp.py:7417 FlatCAMApp.py:7459 FlatCAMApp.py:7502 FlatCAMApp.py:7579
-#: FlatCAMApp.py:7640 FlatCAMApp.py:7703 flatcamTools/ToolPDF.py:212
+#: FlatCAMApp.py:7525 FlatCAMApp.py:7567 FlatCAMApp.py:7610 FlatCAMApp.py:7687
+#: FlatCAMApp.py:7748 FlatCAMApp.py:7811 flatcamTools/ToolPDF.py:212
#, python-format
msgid "[success] Opened: %s"
msgstr ""
-#: FlatCAMApp.py:7448
+#: FlatCAMApp.py:7556
msgid "Importing DXF"
msgstr ""
-#: FlatCAMApp.py:7490
+#: FlatCAMApp.py:7598
msgid "Importing Image"
msgstr ""
-#: FlatCAMApp.py:7531 FlatCAMApp.py:7533
+#: FlatCAMApp.py:7639 FlatCAMApp.py:7641
#, python-format
msgid "[ERROR_NOTCL] Failed to open file: %s"
msgstr ""
-#: FlatCAMApp.py:7536
+#: FlatCAMApp.py:7644
#, python-brace-format
msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}"
msgstr ""
-#: FlatCAMApp.py:7543 FlatCAMObj.py:4230
+#: FlatCAMApp.py:7651 FlatCAMObj.py:4266
#: flatcamEditors/FlatCAMExcEditor.py:2077
msgid "[ERROR] An internal error has ocurred. See shell.\n"
msgstr ""
-#: FlatCAMApp.py:7552
+#: FlatCAMApp.py:7660
msgid ""
"[ERROR_NOTCL] Object is not Gerber file or empty. Aborting object creation."
msgstr ""
-#: FlatCAMApp.py:7560
+#: FlatCAMApp.py:7668
msgid "Opening Gerber"
msgstr ""
-#: FlatCAMApp.py:7570
+#: FlatCAMApp.py:7678
msgid "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file."
msgstr ""
-#: FlatCAMApp.py:7603 flatcamTools/ToolPcbWizard.py:421
+#: FlatCAMApp.py:7711 flatcamTools/ToolPcbWizard.py:421
msgid "[ERROR_NOTCL] This is not Excellon file."
msgstr ""
-#: FlatCAMApp.py:7606
+#: FlatCAMApp.py:7714
#, python-format
msgid "[ERROR_NOTCL] Cannot open file: %s"
msgstr ""
-#: FlatCAMApp.py:7611 flatcamTools/ToolPcbWizard.py:429
+#: FlatCAMApp.py:7719 flatcamTools/ToolPcbWizard.py:429
msgid "[ERROR_NOTCL] An internal error has occurred. See shell.\n"
msgstr ""
-#: FlatCAMApp.py:7624 flatcamTools/ToolPDF.py:262
+#: FlatCAMApp.py:7732 flatcamTools/ToolPDF.py:262
#: flatcamTools/ToolPcbWizard.py:442
#, python-format
msgid "[ERROR_NOTCL] No geometry found in file: %s"
msgstr ""
-#: FlatCAMApp.py:7627
+#: FlatCAMApp.py:7735
msgid "Opening Excellon."
msgstr ""
-#: FlatCAMApp.py:7633
+#: FlatCAMApp.py:7741
msgid "[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file."
msgstr ""
-#: FlatCAMApp.py:7670
+#: FlatCAMApp.py:7778
#, python-format
msgid "[ERROR_NOTCL] Failed to open %s"
msgstr ""
-#: FlatCAMApp.py:7680
+#: FlatCAMApp.py:7788
msgid "[ERROR_NOTCL] This is not GCODE"
msgstr ""
-#: FlatCAMApp.py:7686
+#: FlatCAMApp.py:7794
msgid "Opening G-Code."
msgstr ""
-#: FlatCAMApp.py:7694
+#: FlatCAMApp.py:7802
msgid ""
"[ERROR_NOTCL] Failed to create CNCJob Object. Probable not a GCode file.\n"
" Attempting to create a FlatCAM CNCJob Object from G-Code file failed during "
"processing"
msgstr ""
-#: FlatCAMApp.py:7734
+#: FlatCAMApp.py:7842
#, python-format
msgid "[ERROR_NOTCL] Failed to open config file: %s"
msgstr ""
-#: FlatCAMApp.py:7760 FlatCAMApp.py:7777
+#: FlatCAMApp.py:7868 FlatCAMApp.py:7885
#, python-format
msgid "[ERROR_NOTCL] Failed to open project file: %s"
msgstr ""
-#: FlatCAMApp.py:7800
+#: FlatCAMApp.py:7908
#, python-format
msgid "[success] Project loaded from: %s"
msgstr ""
-#: FlatCAMApp.py:7905
+#: FlatCAMApp.py:8013
msgid "Available commands:\n"
msgstr ""
-#: FlatCAMApp.py:7907
+#: FlatCAMApp.py:8015
msgid ""
"\n"
"\n"
@@ -943,27 +947,27 @@ msgid ""
" Example: help open_gerber"
msgstr ""
-#: FlatCAMApp.py:8057
+#: FlatCAMApp.py:8165
msgid "Shows list of commands."
msgstr ""
-#: FlatCAMApp.py:8114
+#: FlatCAMApp.py:8222
msgid "[ERROR_NOTCL] Failed to load recent item list."
msgstr ""
-#: FlatCAMApp.py:8121
+#: FlatCAMApp.py:8229
msgid "[ERROR_NOTCL] Failed to parse recent item list."
msgstr ""
-#: FlatCAMApp.py:8165
+#: FlatCAMApp.py:8273
msgid "Clear Recent files"
msgstr ""
-#: FlatCAMApp.py:8182 flatcamGUI/FlatCAMGUI.py:968
+#: FlatCAMApp.py:8290 flatcamGUI/FlatCAMGUI.py:968
msgid "Shortcut Key List"
msgstr ""
-#: FlatCAMApp.py:8189
+#: FlatCAMApp.py:8297
msgid ""
"\n"
"
Standard: Fixed step inwards."
"
Seed-based: Outwards from seed."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5842
-#: flatcamGUI/FlatCAMGUI.py:6082 flatcamTools/ToolNonCopperClear.py:206
+#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5821
+#: flatcamGUI/FlatCAMGUI.py:6061 flatcamTools/ToolNonCopperClear.py:206
#: flatcamTools/ToolPaint.py:204
msgid "Connect:"
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5844
-#: flatcamGUI/FlatCAMGUI.py:6084 flatcamTools/ToolNonCopperClear.py:208
+#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5823
+#: flatcamGUI/FlatCAMGUI.py:6063 flatcamTools/ToolNonCopperClear.py:208
#: flatcamTools/ToolPaint.py:206
msgid ""
"Draw lines between resulting\n"
"segments to minimize tool lifts."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5851
-#: flatcamGUI/FlatCAMGUI.py:6092 flatcamTools/ToolNonCopperClear.py:215
+#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5830
+#: flatcamGUI/FlatCAMGUI.py:6071 flatcamTools/ToolNonCopperClear.py:215
#: flatcamTools/ToolPaint.py:213
msgid "Contour:"
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5853
-#: flatcamGUI/FlatCAMGUI.py:6094 flatcamTools/ToolNonCopperClear.py:217
+#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5832
+#: flatcamGUI/FlatCAMGUI.py:6073 flatcamTools/ToolNonCopperClear.py:217
#: flatcamTools/ToolPaint.py:215
msgid ""
"Cut around the perimeter of the polygon\n"
@@ -2046,53 +2051,53 @@ msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:617
#: flatcamEditors/FlatCAMGeoEditor.py:990
-#: flatcamEditors/FlatCAMGrbEditor.py:4531
-#: flatcamEditors/FlatCAMGrbEditor.py:4916 flatcamGUI/FlatCAMGUI.py:654
+#: flatcamEditors/FlatCAMGrbEditor.py:4539
+#: flatcamEditors/FlatCAMGrbEditor.py:4924 flatcamGUI/FlatCAMGUI.py:654
#: flatcamGUI/FlatCAMGUI.py:1879 flatcamTools/ToolTransform.py:398
msgid "Transform Tool"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:618
#: flatcamEditors/FlatCAMGeoEditor.py:679
-#: flatcamEditors/FlatCAMGrbEditor.py:4532
-#: flatcamEditors/FlatCAMGrbEditor.py:4594 flatcamTools/ToolTransform.py:24
+#: flatcamEditors/FlatCAMGrbEditor.py:4540
+#: flatcamEditors/FlatCAMGrbEditor.py:4602 flatcamTools/ToolTransform.py:24
#: flatcamTools/ToolTransform.py:82
msgid "Rotate"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:619
-#: flatcamEditors/FlatCAMGrbEditor.py:4533 flatcamTools/ToolTransform.py:25
+#: flatcamEditors/FlatCAMGrbEditor.py:4541 flatcamTools/ToolTransform.py:25
msgid "Skew/Shear"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:620
#: flatcamEditors/FlatCAMGrbEditor.py:2471
-#: flatcamEditors/FlatCAMGrbEditor.py:4534 flatcamGUI/FlatCAMGUI.py:718
+#: flatcamEditors/FlatCAMGrbEditor.py:4542 flatcamGUI/FlatCAMGUI.py:718
#: flatcamGUI/FlatCAMGUI.py:1947 flatcamGUI/ObjectUI.py:100
#: flatcamTools/ToolTransform.py:26
msgid "Scale"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:621
-#: flatcamEditors/FlatCAMGrbEditor.py:4535 flatcamTools/ToolTransform.py:27
+#: flatcamEditors/FlatCAMGrbEditor.py:4543 flatcamTools/ToolTransform.py:27
msgid "Mirror (Flip)"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:622
-#: flatcamEditors/FlatCAMGrbEditor.py:4536 flatcamGUI/ObjectUI.py:127
+#: flatcamEditors/FlatCAMGrbEditor.py:4544 flatcamGUI/ObjectUI.py:127
#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465
#: flatcamTools/ToolTransform.py:28
msgid "Offset"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:633
-#: flatcamEditors/FlatCAMGrbEditor.py:4548
+#: flatcamEditors/FlatCAMGrbEditor.py:4556
#, python-format
msgid "Editor %s"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:667
-#: flatcamEditors/FlatCAMGrbEditor.py:4582 flatcamTools/ToolTransform.py:70
+#: flatcamEditors/FlatCAMGrbEditor.py:4590 flatcamTools/ToolTransform.py:70
msgid ""
"Angle for Rotation action, in degrees.\n"
"Float number between -360 and 359.\n"
@@ -2101,7 +2106,7 @@ msgid ""
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:681
-#: flatcamEditors/FlatCAMGrbEditor.py:4596
+#: flatcamEditors/FlatCAMGrbEditor.py:4604
msgid ""
"Rotate the selected shape(s).\n"
"The point of reference is the middle of\n"
@@ -2109,14 +2114,14 @@ msgid ""
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:704
-#: flatcamEditors/FlatCAMGrbEditor.py:4619 flatcamTools/ToolTransform.py:107
+#: flatcamEditors/FlatCAMGrbEditor.py:4627 flatcamTools/ToolTransform.py:107
msgid "Angle X:"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:706
#: flatcamEditors/FlatCAMGeoEditor.py:724
-#: flatcamEditors/FlatCAMGrbEditor.py:4621
-#: flatcamEditors/FlatCAMGrbEditor.py:4639 flatcamTools/ToolTransform.py:109
+#: flatcamEditors/FlatCAMGrbEditor.py:4629
+#: flatcamEditors/FlatCAMGrbEditor.py:4647 flatcamTools/ToolTransform.py:109
#: flatcamTools/ToolTransform.py:127
msgid ""
"Angle for Skew action, in degrees.\n"
@@ -2124,14 +2129,14 @@ msgid ""
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:715
-#: flatcamEditors/FlatCAMGrbEditor.py:4630 flatcamTools/ToolTransform.py:118
+#: flatcamEditors/FlatCAMGrbEditor.py:4638 flatcamTools/ToolTransform.py:118
msgid "Skew X"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:717
#: flatcamEditors/FlatCAMGeoEditor.py:735
-#: flatcamEditors/FlatCAMGrbEditor.py:4632
-#: flatcamEditors/FlatCAMGrbEditor.py:4650
+#: flatcamEditors/FlatCAMGrbEditor.py:4640
+#: flatcamEditors/FlatCAMGrbEditor.py:4658
msgid ""
"Skew/shear the selected shape(s).\n"
"The point of reference is the middle of\n"
@@ -2139,34 +2144,34 @@ msgid ""
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:722
-#: flatcamEditors/FlatCAMGrbEditor.py:4637 flatcamTools/ToolTransform.py:125
+#: flatcamEditors/FlatCAMGrbEditor.py:4645 flatcamTools/ToolTransform.py:125
msgid "Angle Y:"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:733
-#: flatcamEditors/FlatCAMGrbEditor.py:4648 flatcamTools/ToolTransform.py:136
+#: flatcamEditors/FlatCAMGrbEditor.py:4656 flatcamTools/ToolTransform.py:136
msgid "Skew Y"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:761
-#: flatcamEditors/FlatCAMGrbEditor.py:4676 flatcamTools/ToolTransform.py:164
+#: flatcamEditors/FlatCAMGrbEditor.py:4684 flatcamTools/ToolTransform.py:164
msgid "Factor X:"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:763
-#: flatcamEditors/FlatCAMGrbEditor.py:4678 flatcamTools/ToolTransform.py:166
+#: flatcamEditors/FlatCAMGrbEditor.py:4686 flatcamTools/ToolTransform.py:166
msgid "Factor for Scale action over X axis."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:771
-#: flatcamEditors/FlatCAMGrbEditor.py:4686 flatcamTools/ToolTransform.py:174
+#: flatcamEditors/FlatCAMGrbEditor.py:4694 flatcamTools/ToolTransform.py:174
msgid "Scale X"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:773
#: flatcamEditors/FlatCAMGeoEditor.py:790
-#: flatcamEditors/FlatCAMGrbEditor.py:4688
-#: flatcamEditors/FlatCAMGrbEditor.py:4705
+#: flatcamEditors/FlatCAMGrbEditor.py:4696
+#: flatcamEditors/FlatCAMGrbEditor.py:4713
msgid ""
"Scale the selected shape(s).\n"
"The point of reference depends on \n"
@@ -2174,41 +2179,41 @@ msgid ""
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:778
-#: flatcamEditors/FlatCAMGrbEditor.py:4693 flatcamTools/ToolTransform.py:181
+#: flatcamEditors/FlatCAMGrbEditor.py:4701 flatcamTools/ToolTransform.py:181
msgid "Factor Y:"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:780
-#: flatcamEditors/FlatCAMGrbEditor.py:4695 flatcamTools/ToolTransform.py:183
+#: flatcamEditors/FlatCAMGrbEditor.py:4703 flatcamTools/ToolTransform.py:183
msgid "Factor for Scale action over Y axis."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:788
-#: flatcamEditors/FlatCAMGrbEditor.py:4703 flatcamTools/ToolTransform.py:191
+#: flatcamEditors/FlatCAMGrbEditor.py:4711 flatcamTools/ToolTransform.py:191
msgid "Scale Y"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:797
-#: flatcamEditors/FlatCAMGrbEditor.py:4712 flatcamGUI/FlatCAMGUI.py:6441
+#: flatcamEditors/FlatCAMGrbEditor.py:4720 flatcamGUI/FlatCAMGUI.py:6420
#: flatcamTools/ToolTransform.py:200
msgid "Link"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:799
-#: flatcamEditors/FlatCAMGrbEditor.py:4714
+#: flatcamEditors/FlatCAMGrbEditor.py:4722
msgid ""
"Scale the selected shape(s)\n"
"using the Scale Factor X for both axis."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:805
-#: flatcamEditors/FlatCAMGrbEditor.py:4720 flatcamGUI/FlatCAMGUI.py:6449
+#: flatcamEditors/FlatCAMGrbEditor.py:4728 flatcamGUI/FlatCAMGUI.py:6428
#: flatcamTools/ToolTransform.py:208
msgid "Scale Reference"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:807
-#: flatcamEditors/FlatCAMGrbEditor.py:4722
+#: flatcamEditors/FlatCAMGrbEditor.py:4730
msgid ""
"Scale the selected shape(s)\n"
"using the origin reference when checked,\n"
@@ -2217,24 +2222,24 @@ msgid ""
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:835
-#: flatcamEditors/FlatCAMGrbEditor.py:4751 flatcamTools/ToolTransform.py:238
+#: flatcamEditors/FlatCAMGrbEditor.py:4759 flatcamTools/ToolTransform.py:238
msgid "Value X:"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:837
-#: flatcamEditors/FlatCAMGrbEditor.py:4753 flatcamTools/ToolTransform.py:240
+#: flatcamEditors/FlatCAMGrbEditor.py:4761 flatcamTools/ToolTransform.py:240
msgid "Value for Offset action on X axis."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:845
-#: flatcamEditors/FlatCAMGrbEditor.py:4761 flatcamTools/ToolTransform.py:248
+#: flatcamEditors/FlatCAMGrbEditor.py:4769 flatcamTools/ToolTransform.py:248
msgid "Offset X"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:847
#: flatcamEditors/FlatCAMGeoEditor.py:865
-#: flatcamEditors/FlatCAMGrbEditor.py:4763
-#: flatcamEditors/FlatCAMGrbEditor.py:4781
+#: flatcamEditors/FlatCAMGrbEditor.py:4771
+#: flatcamEditors/FlatCAMGrbEditor.py:4789
msgid ""
"Offset the selected shape(s).\n"
"The point of reference is the middle of\n"
@@ -2242,46 +2247,46 @@ msgid ""
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:853
-#: flatcamEditors/FlatCAMGrbEditor.py:4769 flatcamTools/ToolTransform.py:255
+#: flatcamEditors/FlatCAMGrbEditor.py:4777 flatcamTools/ToolTransform.py:255
msgid "Value Y:"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:855
-#: flatcamEditors/FlatCAMGrbEditor.py:4771 flatcamTools/ToolTransform.py:257
+#: flatcamEditors/FlatCAMGrbEditor.py:4779 flatcamTools/ToolTransform.py:257
msgid "Value for Offset action on Y axis."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:863
-#: flatcamEditors/FlatCAMGrbEditor.py:4779 flatcamTools/ToolTransform.py:265
+#: flatcamEditors/FlatCAMGrbEditor.py:4787 flatcamTools/ToolTransform.py:265
msgid "Offset Y"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:894
-#: flatcamEditors/FlatCAMGrbEditor.py:4810 flatcamTools/ToolTransform.py:295
+#: flatcamEditors/FlatCAMGrbEditor.py:4818 flatcamTools/ToolTransform.py:295
msgid "Flip on X"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:896
#: flatcamEditors/FlatCAMGeoEditor.py:904
-#: flatcamEditors/FlatCAMGrbEditor.py:4812
#: flatcamEditors/FlatCAMGrbEditor.py:4820
+#: flatcamEditors/FlatCAMGrbEditor.py:4828
msgid ""
"Flip the selected shape(s) over the X axis.\n"
"Does not create a new shape."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:902
-#: flatcamEditors/FlatCAMGrbEditor.py:4818 flatcamTools/ToolTransform.py:303
+#: flatcamEditors/FlatCAMGrbEditor.py:4826 flatcamTools/ToolTransform.py:303
msgid "Flip on Y"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:911
-#: flatcamEditors/FlatCAMGrbEditor.py:4827 flatcamTools/ToolTransform.py:312
+#: flatcamEditors/FlatCAMGrbEditor.py:4835 flatcamTools/ToolTransform.py:312
msgid "Ref Pt"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:913
-#: flatcamEditors/FlatCAMGrbEditor.py:4829
+#: flatcamEditors/FlatCAMGrbEditor.py:4837
msgid ""
"Flip the selected shape(s)\n"
"around the point in Point Entry Field.\n"
@@ -2295,12 +2300,12 @@ msgid ""
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:925
-#: flatcamEditors/FlatCAMGrbEditor.py:4841 flatcamTools/ToolTransform.py:325
+#: flatcamEditors/FlatCAMGrbEditor.py:4849 flatcamTools/ToolTransform.py:325
msgid "Point:"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:927
-#: flatcamEditors/FlatCAMGrbEditor.py:4843
+#: flatcamEditors/FlatCAMGrbEditor.py:4851
msgid ""
"Coordinates in format (x, y) used as reference for mirroring.\n"
"The 'x' in (x, y) will be used when using Flip on X and\n"
@@ -2308,7 +2313,7 @@ msgid ""
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:939
-#: flatcamEditors/FlatCAMGrbEditor.py:4855 flatcamTools/ToolTransform.py:339
+#: flatcamEditors/FlatCAMGrbEditor.py:4863 flatcamTools/ToolTransform.py:339
msgid ""
"The point coordinates can be captured by\n"
"left click on canvas together with pressing\n"
@@ -2316,235 +2321,235 @@ msgid ""
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1054
-#: flatcamEditors/FlatCAMGrbEditor.py:4980
+#: flatcamEditors/FlatCAMGrbEditor.py:4988
msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1075
-#: flatcamEditors/FlatCAMGrbEditor.py:5000 flatcamTools/ToolTransform.py:468
+#: flatcamEditors/FlatCAMGrbEditor.py:5008 flatcamTools/ToolTransform.py:468
msgid "[ERROR_NOTCL] Wrong value format entered for Rotate, use a number."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1112
-#: flatcamEditors/FlatCAMGrbEditor.py:5043 flatcamTools/ToolTransform.py:502
+#: flatcamEditors/FlatCAMGrbEditor.py:5051 flatcamTools/ToolTransform.py:502
msgid "[ERROR_NOTCL] Wrong value format entered for Skew X, use a number."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1133
-#: flatcamEditors/FlatCAMGrbEditor.py:5070 flatcamTools/ToolTransform.py:520
+#: flatcamEditors/FlatCAMGrbEditor.py:5078 flatcamTools/ToolTransform.py:520
msgid "[ERROR_NOTCL] Wrong value format entered for Skew Y, use a number."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1154
-#: flatcamEditors/FlatCAMGrbEditor.py:5097 flatcamTools/ToolTransform.py:538
+#: flatcamEditors/FlatCAMGrbEditor.py:5105 flatcamTools/ToolTransform.py:538
msgid "[ERROR_NOTCL] Wrong value format entered for Scale X, use a number."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1191
-#: flatcamEditors/FlatCAMGrbEditor.py:5138 flatcamTools/ToolTransform.py:572
+#: flatcamEditors/FlatCAMGrbEditor.py:5146 flatcamTools/ToolTransform.py:572
msgid "[ERROR_NOTCL] Wrong value format entered for Scale Y, use a number."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1223
-#: flatcamEditors/FlatCAMGrbEditor.py:5176 flatcamTools/ToolTransform.py:601
+#: flatcamEditors/FlatCAMGrbEditor.py:5184 flatcamTools/ToolTransform.py:601
msgid "[ERROR_NOTCL] Wrong value format entered for Offset X, use a number."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1244
-#: flatcamEditors/FlatCAMGrbEditor.py:5202 flatcamTools/ToolTransform.py:619
+#: flatcamEditors/FlatCAMGrbEditor.py:5210 flatcamTools/ToolTransform.py:619
msgid "[ERROR_NOTCL] Wrong value format entered for Offset Y, use a number."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1262
-#: flatcamEditors/FlatCAMGrbEditor.py:5225
+#: flatcamEditors/FlatCAMGrbEditor.py:5233
msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1265
-#: flatcamEditors/FlatCAMGrbEditor.py:5228 flatcamTools/ToolTransform.py:640
+#: flatcamEditors/FlatCAMGrbEditor.py:5236 flatcamTools/ToolTransform.py:640
msgid "Appying Rotate"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1293
-#: flatcamEditors/FlatCAMGrbEditor.py:5259
+#: flatcamEditors/FlatCAMGrbEditor.py:5269
msgid "[success] Done. Rotate completed."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1309
-#: flatcamEditors/FlatCAMGrbEditor.py:5278
+#: flatcamEditors/FlatCAMGrbEditor.py:5288
msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to flip!"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1312
-#: flatcamEditors/FlatCAMGrbEditor.py:5281 flatcamTools/ToolTransform.py:691
+#: flatcamEditors/FlatCAMGrbEditor.py:5291 flatcamTools/ToolTransform.py:691
msgid "Applying Flip"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1342
-#: flatcamEditors/FlatCAMGrbEditor.py:5318 flatcamTools/ToolTransform.py:733
+#: flatcamEditors/FlatCAMGrbEditor.py:5330 flatcamTools/ToolTransform.py:733
msgid "[success] Flip on the Y axis done ..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1345
-#: flatcamEditors/FlatCAMGrbEditor.py:5326 flatcamTools/ToolTransform.py:742
+#: flatcamEditors/FlatCAMGrbEditor.py:5338 flatcamTools/ToolTransform.py:742
msgid "[success] Flip on the X axis done ..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1364
-#: flatcamEditors/FlatCAMGrbEditor.py:5346
+#: flatcamEditors/FlatCAMGrbEditor.py:5358
msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1367
-#: flatcamEditors/FlatCAMGrbEditor.py:5349 flatcamTools/ToolTransform.py:760
+#: flatcamEditors/FlatCAMGrbEditor.py:5361 flatcamTools/ToolTransform.py:760
msgid "Applying Skew"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1392
-#: flatcamEditors/FlatCAMGrbEditor.py:5382 flatcamTools/ToolTransform.py:791
+#: flatcamEditors/FlatCAMGrbEditor.py:5396 flatcamTools/ToolTransform.py:791
#, python-format
msgid "[success] Skew on the %s axis done ..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1396
-#: flatcamEditors/FlatCAMGrbEditor.py:5386 flatcamTools/ToolTransform.py:795
+#: flatcamEditors/FlatCAMGrbEditor.py:5400 flatcamTools/ToolTransform.py:795
#, python-format
msgid "[ERROR_NOTCL] Due of %s, Skew action was not executed."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1407
-#: flatcamEditors/FlatCAMGrbEditor.py:5405
+#: flatcamEditors/FlatCAMGrbEditor.py:5419
msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to scale!"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1410
-#: flatcamEditors/FlatCAMGrbEditor.py:5408 flatcamTools/ToolTransform.py:809
+#: flatcamEditors/FlatCAMGrbEditor.py:5422 flatcamTools/ToolTransform.py:809
msgid "Applying Scale"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1443
-#: flatcamEditors/FlatCAMGrbEditor.py:5444 flatcamTools/ToolTransform.py:848
+#: flatcamEditors/FlatCAMGrbEditor.py:5460 flatcamTools/ToolTransform.py:848
#, python-format
msgid "[success] Scale on the %s axis done ..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1446
-#: flatcamEditors/FlatCAMGrbEditor.py:5447 flatcamTools/ToolTransform.py:851
+#: flatcamEditors/FlatCAMGrbEditor.py:5463 flatcamTools/ToolTransform.py:851
#, python-format
msgid "[ERROR_NOTCL] Due of %s, Scale action was not executed."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1455
-#: flatcamEditors/FlatCAMGrbEditor.py:5460
+#: flatcamEditors/FlatCAMGrbEditor.py:5476
msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to offset!"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1458
-#: flatcamEditors/FlatCAMGrbEditor.py:5463 flatcamTools/ToolTransform.py:861
+#: flatcamEditors/FlatCAMGrbEditor.py:5479 flatcamTools/ToolTransform.py:861
msgid "Applying Offset"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1469
-#: flatcamEditors/FlatCAMGrbEditor.py:5484 flatcamTools/ToolTransform.py:880
+#: flatcamEditors/FlatCAMGrbEditor.py:5501 flatcamTools/ToolTransform.py:880
#, python-format
msgid "[success] Offset on the %s axis done ..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1473
-#: flatcamEditors/FlatCAMGrbEditor.py:5488 flatcamTools/ToolTransform.py:884
+#: flatcamEditors/FlatCAMGrbEditor.py:5505 flatcamTools/ToolTransform.py:884
#, python-format
msgid "[ERROR_NOTCL] Due of %s, Offset action was not executed."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1477
-#: flatcamEditors/FlatCAMGrbEditor.py:5492
+#: flatcamEditors/FlatCAMGrbEditor.py:5509
msgid "Rotate ..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1478
#: flatcamEditors/FlatCAMGeoEditor.py:1535
#: flatcamEditors/FlatCAMGeoEditor.py:1552
-#: flatcamEditors/FlatCAMGrbEditor.py:5493
-#: flatcamEditors/FlatCAMGrbEditor.py:5550
+#: flatcamEditors/FlatCAMGrbEditor.py:5510
#: flatcamEditors/FlatCAMGrbEditor.py:5567
+#: flatcamEditors/FlatCAMGrbEditor.py:5584
msgid "Enter an Angle Value (degrees):"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1487
-#: flatcamEditors/FlatCAMGrbEditor.py:5502
+#: flatcamEditors/FlatCAMGrbEditor.py:5519
msgid "[success] Geometry shape rotate done..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1492
-#: flatcamEditors/FlatCAMGrbEditor.py:5507
+#: flatcamEditors/FlatCAMGrbEditor.py:5524
msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1498
-#: flatcamEditors/FlatCAMGrbEditor.py:5513
+#: flatcamEditors/FlatCAMGrbEditor.py:5530
msgid "Offset on X axis ..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1499
#: flatcamEditors/FlatCAMGeoEditor.py:1518
-#: flatcamEditors/FlatCAMGrbEditor.py:5514
-#: flatcamEditors/FlatCAMGrbEditor.py:5533
+#: flatcamEditors/FlatCAMGrbEditor.py:5531
+#: flatcamEditors/FlatCAMGrbEditor.py:5550
#, python-format
msgid "Enter a distance Value (%s):"
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1508
-#: flatcamEditors/FlatCAMGrbEditor.py:5523
+#: flatcamEditors/FlatCAMGrbEditor.py:5540
msgid "[success] Geometry shape offset on X axis done..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1512
-#: flatcamEditors/FlatCAMGrbEditor.py:5527
+#: flatcamEditors/FlatCAMGrbEditor.py:5544
msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1517
-#: flatcamEditors/FlatCAMGrbEditor.py:5532
+#: flatcamEditors/FlatCAMGrbEditor.py:5549
msgid "Offset on Y axis ..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1527
-#: flatcamEditors/FlatCAMGrbEditor.py:5542
+#: flatcamEditors/FlatCAMGrbEditor.py:5559
msgid "[success] Geometry shape offset on Y axis done..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1531
-#: flatcamEditors/FlatCAMGrbEditor.py:5546
+#: flatcamEditors/FlatCAMGrbEditor.py:5563
msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1534
-#: flatcamEditors/FlatCAMGrbEditor.py:5549
+#: flatcamEditors/FlatCAMGrbEditor.py:5566
msgid "Skew on X axis ..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1544
-#: flatcamEditors/FlatCAMGrbEditor.py:5559
+#: flatcamEditors/FlatCAMGrbEditor.py:5576
msgid "[success] Geometry shape skew on X axis done..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1548
-#: flatcamEditors/FlatCAMGrbEditor.py:5563
+#: flatcamEditors/FlatCAMGrbEditor.py:5580
msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1551
-#: flatcamEditors/FlatCAMGrbEditor.py:5566
+#: flatcamEditors/FlatCAMGrbEditor.py:5583
msgid "Skew on Y axis ..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1561
-#: flatcamEditors/FlatCAMGrbEditor.py:5576
+#: flatcamEditors/FlatCAMGrbEditor.py:5593
msgid "[success] Geometry shape skew on Y axis done..."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:1565
-#: flatcamEditors/FlatCAMGrbEditor.py:5580
+#: flatcamEditors/FlatCAMGrbEditor.py:5597
msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..."
msgstr ""
@@ -2695,7 +2700,7 @@ msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected."
msgstr ""
#: flatcamEditors/FlatCAMGeoEditor.py:2711
-#: flatcamEditors/FlatCAMGrbEditor.py:4442
+#: flatcamEditors/FlatCAMGrbEditor.py:4447
msgid "[success] Done. Buffer Tool completed."
msgstr ""
@@ -2738,88 +2743,88 @@ msgstr ""
msgid "Shape transformations ..."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:3416
+#: flatcamEditors/FlatCAMGeoEditor.py:3419
#, python-brace-format
msgid ""
"[WARNING_NOTCL] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}"
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:3793
+#: flatcamEditors/FlatCAMGeoEditor.py:3796
msgid "[WARNING_NOTCL] Copy cancelled. No shape selected."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:3800 flatcamGUI/FlatCAMGUI.py:2727
+#: flatcamEditors/FlatCAMGeoEditor.py:3803 flatcamGUI/FlatCAMGUI.py:2727
#: flatcamGUI/FlatCAMGUI.py:2773 flatcamGUI/FlatCAMGUI.py:2791
#: flatcamGUI/FlatCAMGUI.py:2922 flatcamGUI/FlatCAMGUI.py:2934
#: flatcamGUI/FlatCAMGUI.py:2968
msgid "Click on target point."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:4044
-#: flatcamEditors/FlatCAMGeoEditor.py:4079
+#: flatcamEditors/FlatCAMGeoEditor.py:4047
+#: flatcamEditors/FlatCAMGeoEditor.py:4082
msgid ""
"[WARNING_NOTCL] A selection of at least 2 geo items is required to do "
"Intersection."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:4163
-#: flatcamEditors/FlatCAMGeoEditor.py:4201
-#: flatcamEditors/FlatCAMGeoEditor.py:4277
+#: flatcamEditors/FlatCAMGeoEditor.py:4166
+#: flatcamEditors/FlatCAMGeoEditor.py:4204
+#: flatcamEditors/FlatCAMGeoEditor.py:4280
msgid ""
"[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to "
"generate an 'inside' shape"
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:4172
-#: flatcamEditors/FlatCAMGeoEditor.py:4210
-#: flatcamEditors/FlatCAMGeoEditor.py:4285
+#: flatcamEditors/FlatCAMGeoEditor.py:4175
+#: flatcamEditors/FlatCAMGeoEditor.py:4213
+#: flatcamEditors/FlatCAMGeoEditor.py:4288
msgid "[WARNING_NOTCL] Nothing selected for buffering."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:4176
-#: flatcamEditors/FlatCAMGeoEditor.py:4214
-#: flatcamEditors/FlatCAMGeoEditor.py:4289
+#: flatcamEditors/FlatCAMGeoEditor.py:4179
+#: flatcamEditors/FlatCAMGeoEditor.py:4217
+#: flatcamEditors/FlatCAMGeoEditor.py:4292
msgid "[WARNING_NOTCL] Invalid distance for buffering."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:4186
-#: flatcamEditors/FlatCAMGeoEditor.py:4298
+#: flatcamEditors/FlatCAMGeoEditor.py:4189
+#: flatcamEditors/FlatCAMGeoEditor.py:4301
msgid ""
"[ERROR_NOTCL] Failed, the result is empty. Choose a different buffer value."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:4194
+#: flatcamEditors/FlatCAMGeoEditor.py:4197
msgid "[success] Full buffer geometry created."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:4224
+#: flatcamEditors/FlatCAMGeoEditor.py:4227
msgid ""
"[ERROR_NOTCL] Failed, the result is empty. Choose a smaller buffer value."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:4239
+#: flatcamEditors/FlatCAMGeoEditor.py:4242
msgid "[success] Interior buffer geometry created."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:4310
+#: flatcamEditors/FlatCAMGeoEditor.py:4313
msgid "[success] Exterior buffer geometry created."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:4374
+#: flatcamEditors/FlatCAMGeoEditor.py:4377
msgid "[WARNING_NOTCL] Nothing selected for painting."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:4380
+#: flatcamEditors/FlatCAMGeoEditor.py:4383
msgid "[WARNING] Invalid value for {}"
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:4386
+#: flatcamEditors/FlatCAMGeoEditor.py:4389
msgid ""
"[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 "
"(100%)."
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:4445
+#: flatcamEditors/FlatCAMGeoEditor.py:4448
#, python-format
msgid ""
"[ERROR] Could not do Paint. Try a different combination of parameters. Or a "
@@ -2827,7 +2832,7 @@ msgid ""
"%s"
msgstr ""
-#: flatcamEditors/FlatCAMGeoEditor.py:4456
+#: flatcamEditors/FlatCAMGeoEditor.py:4459
msgid "[success] Paint done."
msgstr ""
@@ -2985,23 +2990,23 @@ msgid "Apertures Table for the Gerber Object."
msgstr ""
#: flatcamEditors/FlatCAMGrbEditor.py:2291
-#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228
+#: flatcamEditors/FlatCAMGrbEditor.py:3601 flatcamGUI/ObjectUI.py:228
msgid "Code"
msgstr ""
#: flatcamEditors/FlatCAMGrbEditor.py:2291
-#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228
+#: flatcamEditors/FlatCAMGrbEditor.py:3601 flatcamGUI/ObjectUI.py:228
#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465
msgid "Type"
msgstr ""
#: flatcamEditors/FlatCAMGrbEditor.py:2291
-#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228
+#: flatcamEditors/FlatCAMGrbEditor.py:3601 flatcamGUI/ObjectUI.py:228
msgid "Size"
msgstr ""
#: flatcamEditors/FlatCAMGrbEditor.py:2291
-#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228
+#: flatcamEditors/FlatCAMGrbEditor.py:3601 flatcamGUI/ObjectUI.py:228
msgid "Dim"
msgstr ""
@@ -3217,33 +3222,40 @@ msgstr ""
msgid "[WARNING_NOTCL] Cancelled. No aperture is selected"
msgstr ""
-#: flatcamEditors/FlatCAMGrbEditor.py:4270
+#: flatcamEditors/FlatCAMGrbEditor.py:4280
msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected."
msgstr ""
-#: flatcamEditors/FlatCAMGrbEditor.py:4278
+#: flatcamEditors/FlatCAMGrbEditor.py:4288
msgid "[success] Done. Apertures geometry deleted."
msgstr ""
-#: flatcamEditors/FlatCAMGrbEditor.py:4427
+#: flatcamEditors/FlatCAMGrbEditor.py:4431
msgid ""
"[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try "
"again."
msgstr ""
-#: flatcamEditors/FlatCAMGrbEditor.py:4456
+#: flatcamEditors/FlatCAMGrbEditor.py:4444
+#, python-format
+msgid ""
+"[ERROR_NOTCL] Failed.\n"
+"%s"
+msgstr ""
+
+#: flatcamEditors/FlatCAMGrbEditor.py:4461
msgid ""
"[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and "
"retry."
msgstr ""
-#: flatcamEditors/FlatCAMGrbEditor.py:4486
+#: flatcamEditors/FlatCAMGrbEditor.py:4494
msgid ""
"[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try "
"again."
msgstr ""
-#: flatcamEditors/FlatCAMGrbEditor.py:4502
+#: flatcamEditors/FlatCAMGrbEditor.py:4510
msgid "[success] Done. Scale Tool completed."
msgstr ""
@@ -5411,7 +5423,7 @@ msgid "Gerber General"
msgstr ""
#: flatcamGUI/FlatCAMGUI.py:3995 flatcamGUI/FlatCAMGUI.py:4361
-#: flatcamGUI/FlatCAMGUI.py:5153 flatcamGUI/FlatCAMGUI.py:5525
+#: flatcamGUI/FlatCAMGUI.py:5135 flatcamGUI/FlatCAMGUI.py:5504
#: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:505
#: flatcamGUI/ObjectUI.py:833 flatcamGUI/ObjectUI.py:1350
msgid "Plot Options:"
@@ -5435,18 +5447,18 @@ msgid "Draw polygons in different colors."
msgstr ""
#: flatcamGUI/FlatCAMGUI.py:4016 flatcamGUI/FlatCAMGUI.py:4367
-#: flatcamGUI/FlatCAMGUI.py:5157 flatcamGUI/ObjectUI.py:172
+#: flatcamGUI/FlatCAMGUI.py:5139 flatcamGUI/ObjectUI.py:172
msgid "Plot"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4018 flatcamGUI/FlatCAMGUI.py:5159
+#: flatcamGUI/FlatCAMGUI.py:4018 flatcamGUI/FlatCAMGUI.py:5141
#: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:546
#: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1450
msgid "Plot (show) this object."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4023 flatcamGUI/FlatCAMGUI.py:5166
-#: flatcamGUI/FlatCAMGUI.py:5608
+#: flatcamGUI/FlatCAMGUI.py:4023 flatcamGUI/FlatCAMGUI.py:5149
+#: flatcamGUI/FlatCAMGUI.py:5587
msgid "Circle Steps:"
msgstr ""
@@ -5470,8 +5482,8 @@ msgid ""
"toolpaths to cut outside polygons."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4056 flatcamGUI/FlatCAMGUI.py:4753
-#: flatcamGUI/FlatCAMGUI.py:5897 flatcamGUI/ObjectUI.py:788
+#: flatcamGUI/FlatCAMGUI.py:4056 flatcamGUI/FlatCAMGUI.py:4735
+#: flatcamGUI/FlatCAMGUI.py:5876 flatcamGUI/ObjectUI.py:788
#: flatcamGUI/ObjectUI.py:804
msgid "Diameter of the cutting tool."
msgstr ""
@@ -5522,7 +5534,7 @@ msgstr ""
msgid "Clear non-copper:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4104 flatcamGUI/FlatCAMGUI.py:5785
+#: flatcamGUI/FlatCAMGUI.py:4104 flatcamGUI/FlatCAMGUI.py:5764
#: flatcamGUI/ObjectUI.py:386
msgid ""
"Create a Geometry object with\n"
@@ -5611,7 +5623,7 @@ msgstr ""
msgid "Gerber Export"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4232 flatcamGUI/FlatCAMGUI.py:4902
+#: flatcamGUI/FlatCAMGUI.py:4232 flatcamGUI/FlatCAMGUI.py:4884
msgid "Export Options:"
msgstr ""
@@ -5621,7 +5633,7 @@ msgid ""
"when using the File -> Export -> Export Gerber menu entry."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4243 flatcamGUI/FlatCAMGUI.py:4913
+#: flatcamGUI/FlatCAMGUI.py:4243 flatcamGUI/FlatCAMGUI.py:4895
msgid "Units:"
msgstr ""
@@ -5629,7 +5641,7 @@ msgstr ""
msgid "The units used in the Gerber file."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4257 flatcamGUI/FlatCAMGUI.py:4927
+#: flatcamGUI/FlatCAMGUI.py:4257 flatcamGUI/FlatCAMGUI.py:4909
msgid "Int/Decimals:"
msgstr ""
@@ -5651,7 +5663,7 @@ msgid ""
"the decimal part of Gerber coordinates."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4293 flatcamGUI/FlatCAMGUI.py:4988
+#: flatcamGUI/FlatCAMGUI.py:4293 flatcamGUI/FlatCAMGUI.py:4970
msgid "Zeros:"
msgstr ""
@@ -5664,12 +5676,12 @@ msgid ""
"and Leading Zeros are kept."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4326 flatcamGUI/FlatCAMGUI.py:5029
-#: flatcamGUI/FlatCAMGUI.py:5491 flatcamGUI/FlatCAMGUI.py:5783
-#: flatcamGUI/FlatCAMGUI.py:5884 flatcamGUI/FlatCAMGUI.py:5963
-#: flatcamGUI/FlatCAMGUI.py:6022 flatcamGUI/FlatCAMGUI.py:6125
-#: flatcamGUI/FlatCAMGUI.py:6186 flatcamGUI/FlatCAMGUI.py:6385
-#: flatcamGUI/FlatCAMGUI.py:6512
+#: flatcamGUI/FlatCAMGUI.py:4326 flatcamGUI/FlatCAMGUI.py:5011
+#: flatcamGUI/FlatCAMGUI.py:5470 flatcamGUI/FlatCAMGUI.py:5762
+#: flatcamGUI/FlatCAMGUI.py:5863 flatcamGUI/FlatCAMGUI.py:5942
+#: flatcamGUI/FlatCAMGUI.py:6001 flatcamGUI/FlatCAMGUI.py:6104
+#: flatcamGUI/FlatCAMGUI.py:6165 flatcamGUI/FlatCAMGUI.py:6364
+#: flatcamGUI/FlatCAMGUI.py:6491
msgid "Parameters:"
msgstr ""
@@ -5677,8 +5689,8 @@ msgstr ""
msgid "A list of Gerber Editor parameters."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4336 flatcamGUI/FlatCAMGUI.py:5039
-#: flatcamGUI/FlatCAMGUI.py:5501
+#: flatcamGUI/FlatCAMGUI.py:4336 flatcamGUI/FlatCAMGUI.py:5021
+#: flatcamGUI/FlatCAMGUI.py:5480
msgid "Selection limit:"
msgstr ""
@@ -5731,14 +5743,14 @@ msgid "Default values for INCH are 2:4"
msgstr ""
#: flatcamGUI/FlatCAMGUI.py:4418 flatcamGUI/FlatCAMGUI.py:4451
-#: flatcamGUI/FlatCAMGUI.py:4942
+#: flatcamGUI/FlatCAMGUI.py:4924
msgid ""
"This numbers signify the number of digits in\n"
"the whole part of Excellon coordinates."
msgstr ""
#: flatcamGUI/FlatCAMGUI.py:4432 flatcamGUI/FlatCAMGUI.py:4465
-#: flatcamGUI/FlatCAMGUI.py:4956
+#: flatcamGUI/FlatCAMGUI.py:4938
msgid ""
"This numbers signify the number of digits in\n"
"the decimal part of Excellon coordinates."
@@ -5756,7 +5768,7 @@ msgstr ""
msgid "Default Zeros:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4477 flatcamGUI/FlatCAMGUI.py:4991
+#: flatcamGUI/FlatCAMGUI.py:4477 flatcamGUI/FlatCAMGUI.py:4973
msgid ""
"This sets the type of Excellon zeros.\n"
"If LZ then Leading Zeros are kept and\n"
@@ -5775,11 +5787,11 @@ msgid ""
"and Leading Zeros are removed."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4502
+#: flatcamGUI/FlatCAMGUI.py:4498
msgid "Default Units:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4505
+#: flatcamGUI/FlatCAMGUI.py:4501
msgid ""
"This sets the default units of Excellon files.\n"
"If it is not detected in the parsed file the value here\n"
@@ -5787,22 +5799,22 @@ msgid ""
"therefore this parameter will be used."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4516
+#: flatcamGUI/FlatCAMGUI.py:4512
msgid ""
"This sets the units of Excellon files.\n"
"Some Excellon files don't have an header\n"
"therefore this parameter will be used."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4532
+#: flatcamGUI/FlatCAMGUI.py:4520
msgid "Excellon Optimization:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4539
+#: flatcamGUI/FlatCAMGUI.py:4523
msgid "Algorithm: "
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4542 flatcamGUI/FlatCAMGUI.py:4555
+#: flatcamGUI/FlatCAMGUI.py:4525 flatcamGUI/FlatCAMGUI.py:4539
msgid ""
"This sets the optimization type for the Excellon drill path.\n"
"If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n"
@@ -5814,11 +5826,11 @@ msgid ""
"Travelling Salesman algorithm for path optimization."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4567
+#: flatcamGUI/FlatCAMGUI.py:4550
msgid "Optimization Time: "
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4570
+#: flatcamGUI/FlatCAMGUI.py:4553
msgid ""
"When OR-Tools Metaheuristic (MH) is enabled there is a\n"
"maximum threshold for how much time is spent doing the\n"
@@ -5826,88 +5838,88 @@ msgid ""
"In seconds."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4612
+#: flatcamGUI/FlatCAMGUI.py:4596
msgid "Excellon Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4615 flatcamGUI/ObjectUI.py:584
+#: flatcamGUI/FlatCAMGUI.py:4599 flatcamGUI/ObjectUI.py:584
msgid "Create CNC Job"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4617
+#: flatcamGUI/FlatCAMGUI.py:4601
msgid ""
"Parameters used to create a CNC Job object\n"
"for this drill object."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4625 flatcamGUI/FlatCAMGUI.py:5217
-#: flatcamGUI/FlatCAMGUI.py:6321 flatcamGUI/ObjectUI.py:595
+#: flatcamGUI/FlatCAMGUI.py:4609 flatcamGUI/FlatCAMGUI.py:5196
+#: flatcamGUI/FlatCAMGUI.py:6300 flatcamGUI/ObjectUI.py:595
#: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolCalculators.py:108
msgid "Cut Z:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4627 flatcamGUI/ObjectUI.py:597
+#: flatcamGUI/FlatCAMGUI.py:4611 flatcamGUI/ObjectUI.py:597
msgid ""
"Drill depth (negative)\n"
"below the copper surface."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4634 flatcamGUI/FlatCAMGUI.py:5250
+#: flatcamGUI/FlatCAMGUI.py:4618 flatcamGUI/FlatCAMGUI.py:5229
#: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1098
msgid "Travel Z:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4636 flatcamGUI/ObjectUI.py:607
+#: flatcamGUI/FlatCAMGUI.py:4620 flatcamGUI/ObjectUI.py:607
msgid ""
"Tool height when travelling\n"
"across the XY plane."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4644 flatcamGUI/FlatCAMGUI.py:5260
+#: flatcamGUI/FlatCAMGUI.py:4628 flatcamGUI/FlatCAMGUI.py:5239
msgid "Tool change:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4646 flatcamGUI/FlatCAMGUI.py:5262
+#: flatcamGUI/FlatCAMGUI.py:4630 flatcamGUI/FlatCAMGUI.py:5241
#: flatcamGUI/ObjectUI.py:617
msgid ""
"Include tool-change sequence\n"
"in G-Code (Pause for tool change)."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4653 flatcamGUI/FlatCAMGUI.py:5270
+#: flatcamGUI/FlatCAMGUI.py:4637 flatcamGUI/FlatCAMGUI.py:5249
msgid "Toolchange Z:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4655 flatcamGUI/FlatCAMGUI.py:5272
+#: flatcamGUI/FlatCAMGUI.py:4639 flatcamGUI/FlatCAMGUI.py:5251
msgid "Toolchange Z position."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4661
+#: flatcamGUI/FlatCAMGUI.py:4645
msgid "Feedrate:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4663
+#: flatcamGUI/FlatCAMGUI.py:4647
msgid ""
"Tool speed while drilling\n"
"(in units per minute)."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4671
+#: flatcamGUI/FlatCAMGUI.py:4655
msgid "Spindle Speed:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4673 flatcamGUI/FlatCAMGUI.py:5302
+#: flatcamGUI/FlatCAMGUI.py:4657 flatcamGUI/FlatCAMGUI.py:5281
#: flatcamGUI/ObjectUI.py:684
msgid ""
"Speed of the spindle\n"
"in RPM (optional)"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4681 flatcamGUI/FlatCAMGUI.py:5310
+#: flatcamGUI/FlatCAMGUI.py:4665 flatcamGUI/FlatCAMGUI.py:5289
msgid "Spindle dir.:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4683 flatcamGUI/FlatCAMGUI.py:5312
+#: flatcamGUI/FlatCAMGUI.py:4667 flatcamGUI/FlatCAMGUI.py:5291
msgid ""
"This sets the direction that the spindle is rotating.\n"
"It can be either:\n"
@@ -5915,43 +5927,43 @@ msgid ""
"- CCW = counter clockwise"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4695 flatcamGUI/FlatCAMGUI.py:5324
+#: flatcamGUI/FlatCAMGUI.py:4679 flatcamGUI/FlatCAMGUI.py:5303
#: flatcamGUI/ObjectUI.py:692 flatcamGUI/ObjectUI.py:1224
msgid "Dwell:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4697 flatcamGUI/FlatCAMGUI.py:5326
+#: flatcamGUI/FlatCAMGUI.py:4681 flatcamGUI/FlatCAMGUI.py:5305
#: flatcamGUI/ObjectUI.py:694 flatcamGUI/ObjectUI.py:1227
msgid ""
"Pause to allow the spindle to reach its\n"
"speed before cutting."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4700 flatcamGUI/FlatCAMGUI.py:5329
+#: flatcamGUI/FlatCAMGUI.py:4684 flatcamGUI/FlatCAMGUI.py:5308
msgid "Duration:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4702 flatcamGUI/FlatCAMGUI.py:5331
+#: flatcamGUI/FlatCAMGUI.py:4686 flatcamGUI/FlatCAMGUI.py:5310
#: flatcamGUI/ObjectUI.py:699 flatcamGUI/ObjectUI.py:1234
msgid "Number of milliseconds for spindle to dwell."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4714 flatcamGUI/FlatCAMGUI.py:5341
+#: flatcamGUI/FlatCAMGUI.py:4698 flatcamGUI/FlatCAMGUI.py:5320
#: flatcamGUI/ObjectUI.py:707
msgid "Postprocessor:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4716
+#: flatcamGUI/FlatCAMGUI.py:4700
msgid ""
"The postprocessor file that dictates\n"
"gcode output."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4725
+#: flatcamGUI/FlatCAMGUI.py:4709
msgid "Gcode: "
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4727
+#: flatcamGUI/FlatCAMGUI.py:4711
msgid ""
"Choose what to use for GCode generation:\n"
"'Drills', 'Slots' or 'Both'.\n"
@@ -5959,93 +5971,93 @@ msgid ""
"converted to drills."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:772
+#: flatcamGUI/FlatCAMGUI.py:4727 flatcamGUI/ObjectUI.py:772
msgid "Mill Holes"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4745 flatcamGUI/ObjectUI.py:774
+#: flatcamGUI/FlatCAMGUI.py:4729 flatcamGUI/ObjectUI.py:774
msgid "Create Geometry for milling holes."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4751
+#: flatcamGUI/FlatCAMGUI.py:4733
msgid "Drill Tool dia:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4758
+#: flatcamGUI/FlatCAMGUI.py:4740
msgid "Slot Tool dia:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4760
+#: flatcamGUI/FlatCAMGUI.py:4742
msgid ""
"Diameter of the cutting tool\n"
"when milling slots."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4772
+#: flatcamGUI/FlatCAMGUI.py:4754
msgid "Defaults"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4785
+#: flatcamGUI/FlatCAMGUI.py:4767
msgid "Excellon Adv. Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4791 flatcamGUI/FlatCAMGUI.py:5364
+#: flatcamGUI/FlatCAMGUI.py:4773 flatcamGUI/FlatCAMGUI.py:5343
msgid "Advanced Options:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4793
+#: flatcamGUI/FlatCAMGUI.py:4775
msgid ""
"Parameters used to create a CNC Job object\n"
"for this drill object that are shown when App Level is Advanced."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4801
+#: flatcamGUI/FlatCAMGUI.py:4783
msgid "Offset Z:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4803 flatcamGUI/ObjectUI.py:574
+#: flatcamGUI/FlatCAMGUI.py:4785 flatcamGUI/ObjectUI.py:574
msgid ""
"Some drill bits (the larger ones) need to drill deeper\n"
"to create the desired exit hole diameter due of the tip shape.\n"
"The value here can compensate the Cut Z parameter."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/FlatCAMGUI.py:5375
+#: flatcamGUI/FlatCAMGUI.py:4792 flatcamGUI/FlatCAMGUI.py:5354
msgid "Toolchange X,Y:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4812 flatcamGUI/FlatCAMGUI.py:5377
+#: flatcamGUI/FlatCAMGUI.py:4794 flatcamGUI/FlatCAMGUI.py:5356
msgid "Toolchange X,Y position."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5384
+#: flatcamGUI/FlatCAMGUI.py:4800 flatcamGUI/FlatCAMGUI.py:5363
#: flatcamGUI/ObjectUI.py:634
msgid "Start move Z:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4820
+#: flatcamGUI/FlatCAMGUI.py:4802
msgid ""
"Height of the tool just after start.\n"
"Delete the value if you don't need this feature."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4827 flatcamGUI/FlatCAMGUI.py:5394
+#: flatcamGUI/FlatCAMGUI.py:4809 flatcamGUI/FlatCAMGUI.py:5373
#: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1144
msgid "End move Z:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4829 flatcamGUI/FlatCAMGUI.py:5396
+#: flatcamGUI/FlatCAMGUI.py:4811 flatcamGUI/FlatCAMGUI.py:5375
msgid ""
"Height of the tool after\n"
"the last move at the end of the job."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5404
+#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5383
#: flatcamGUI/ObjectUI.py:665
msgid "Feedrate Rapids:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4838 flatcamGUI/ObjectUI.py:667
+#: flatcamGUI/FlatCAMGUI.py:4820 flatcamGUI/ObjectUI.py:667
msgid ""
"Tool speed while drilling\n"
"(in units per minute).\n"
@@ -6054,33 +6066,33 @@ msgid ""
"ignore for any other cases."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5428
+#: flatcamGUI/FlatCAMGUI.py:4831 flatcamGUI/FlatCAMGUI.py:5407
#: flatcamGUI/ObjectUI.py:718 flatcamGUI/ObjectUI.py:1256
msgid "Probe Z depth:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5430
+#: flatcamGUI/FlatCAMGUI.py:4833 flatcamGUI/FlatCAMGUI.py:5409
#: flatcamGUI/ObjectUI.py:720 flatcamGUI/ObjectUI.py:1259
msgid ""
"The maximum depth that the probe is allowed\n"
"to probe. Negative value, in current units."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4859 flatcamGUI/FlatCAMGUI.py:5438
+#: flatcamGUI/FlatCAMGUI.py:4841 flatcamGUI/FlatCAMGUI.py:5417
#: flatcamGUI/ObjectUI.py:730 flatcamGUI/ObjectUI.py:1270
msgid "Feedrate Probe:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4861 flatcamGUI/FlatCAMGUI.py:5440
+#: flatcamGUI/FlatCAMGUI.py:4843 flatcamGUI/FlatCAMGUI.py:5419
#: flatcamGUI/ObjectUI.py:732 flatcamGUI/ObjectUI.py:1273
msgid "The feedrate used while the probe is probing."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4867 flatcamGUI/FlatCAMGUI.py:5447
+#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5426
msgid "Fast Plunge:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4869 flatcamGUI/FlatCAMGUI.py:5449
+#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5428
msgid ""
"By checking this, the vertical move from\n"
"Z_Toolchange to Z_move is done with G0,\n"
@@ -6088,11 +6100,11 @@ msgid ""
"WARNING: the move is done at Toolchange X,Y coords."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4878
+#: flatcamGUI/FlatCAMGUI.py:4860
msgid "Fast Retract:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4880
+#: flatcamGUI/FlatCAMGUI.py:4862
msgid ""
"Exit hole strategy.\n"
" - When uncheked, while exiting the drilled hole the drill bit\n"
@@ -6102,21 +6114,21 @@ msgid ""
"(travel height) is done as fast as possible (G0) in one move."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4899
+#: flatcamGUI/FlatCAMGUI.py:4881
msgid "Excellon Export"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4904
+#: flatcamGUI/FlatCAMGUI.py:4886
msgid ""
"The parameters set here are used in the file exported\n"
"when using the File -> Export -> Export Excellon menu entry."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4915 flatcamGUI/FlatCAMGUI.py:4921
+#: flatcamGUI/FlatCAMGUI.py:4897 flatcamGUI/FlatCAMGUI.py:4903
msgid "The units used in the Excellon file."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4929
+#: flatcamGUI/FlatCAMGUI.py:4911
msgid ""
"The NC drill files, usually named Excellon files\n"
"are files that can be found in different formats.\n"
@@ -6124,11 +6136,11 @@ msgid ""
"coordinates are not using period."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4965
+#: flatcamGUI/FlatCAMGUI.py:4947
msgid "Format:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:4967 flatcamGUI/FlatCAMGUI.py:4977
+#: flatcamGUI/FlatCAMGUI.py:4949 flatcamGUI/FlatCAMGUI.py:4959
msgid ""
"Select the kind of coordinates format used.\n"
"Coordinates can be saved with decimal point or without.\n"
@@ -6138,7 +6150,7 @@ msgid ""
"or TZ = trailing zeros are kept."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5001
+#: flatcamGUI/FlatCAMGUI.py:4983
msgid ""
"This sets the default type of Excellon zeros.\n"
"If LZ then Leading Zeros are kept and\n"
@@ -6147,11 +6159,11 @@ msgid ""
"and Leading Zeros are removed."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5031
+#: flatcamGUI/FlatCAMGUI.py:5013
msgid "A list of Excellon Editor parameters."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5041
+#: flatcamGUI/FlatCAMGUI.py:5023
msgid ""
"Set the number of selected Excellon geometry\n"
"items above which the utility geometry\n"
@@ -6160,94 +6172,88 @@ msgid ""
"large number of geometric elements."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5053
+#: flatcamGUI/FlatCAMGUI.py:5035
msgid "New Tool Dia:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5076
+#: flatcamGUI/FlatCAMGUI.py:5058
msgid "Linear Drill Array:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5080
+#: flatcamGUI/FlatCAMGUI.py:5062
msgid "Linear Dir.:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5116
+#: flatcamGUI/FlatCAMGUI.py:5098
msgid "Circular Drill Array:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5120
+#: flatcamGUI/FlatCAMGUI.py:5102
msgid "Circular Dir.:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5122
+#: flatcamGUI/FlatCAMGUI.py:5104
msgid ""
"Direction for circular array.\n"
"Can be CW = clockwise or CCW = counter clockwise."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5133
+#: flatcamGUI/FlatCAMGUI.py:5115
msgid "Circ. Angle:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5150
+#: flatcamGUI/FlatCAMGUI.py:5132
msgid "Geometry General"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5168
+#: flatcamGUI/FlatCAMGUI.py:5151
msgid ""
"The number of circle steps for Geometry \n"
"circle and arc shapes linear approximation."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5176
-msgid "Tools"
+#: flatcamGUI/FlatCAMGUI.py:5159
+msgid "Tools:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5183
-msgid "Tool dia: "
+#: flatcamGUI/FlatCAMGUI.py:5165 flatcamGUI/FlatCAMGUI.py:5774
+msgid "Diameters of the cutting tools, separated by ','"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5185
-msgid ""
-"The diameter of the cutting\n"
-"tool.."
-msgstr ""
-
-#: flatcamGUI/FlatCAMGUI.py:5200
+#: flatcamGUI/FlatCAMGUI.py:5179
msgid "Geometry Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5205
+#: flatcamGUI/FlatCAMGUI.py:5184
msgid "Create CNC Job:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5207
+#: flatcamGUI/FlatCAMGUI.py:5186
msgid ""
"Create a CNC Job object\n"
"tracing the contours of this\n"
"Geometry object."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5219 flatcamGUI/ObjectUI.py:1065
+#: flatcamGUI/FlatCAMGUI.py:5198 flatcamGUI/ObjectUI.py:1065
msgid ""
"Cutting depth (negative)\n"
"below the copper surface."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5227
+#: flatcamGUI/FlatCAMGUI.py:5206
msgid "Multidepth"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5229
+#: flatcamGUI/FlatCAMGUI.py:5208
msgid "Multidepth usage: True or False."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5234
+#: flatcamGUI/FlatCAMGUI.py:5213
msgid "Depth/Pass:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5236
+#: flatcamGUI/FlatCAMGUI.py:5215
msgid ""
"The depth to cut on each pass,\n"
"when multidepth is enabled.\n"
@@ -6256,61 +6262,61 @@ msgid ""
"which has negative value."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5252 flatcamGUI/ObjectUI.py:1101
+#: flatcamGUI/FlatCAMGUI.py:5231 flatcamGUI/ObjectUI.py:1101
msgid ""
"Height of the tool when\n"
"moving without cutting."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5279 flatcamGUI/ObjectUI.py:1156
+#: flatcamGUI/FlatCAMGUI.py:5258 flatcamGUI/ObjectUI.py:1156
msgid "Feed Rate X-Y:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5281 flatcamGUI/ObjectUI.py:1159
+#: flatcamGUI/FlatCAMGUI.py:5260 flatcamGUI/ObjectUI.py:1159
msgid ""
"Cutting speed in the XY\n"
"plane in units per minute"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5289
+#: flatcamGUI/FlatCAMGUI.py:5268
msgid "Feed Rate Z:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5291
+#: flatcamGUI/FlatCAMGUI.py:5270
msgid ""
"Cutting speed in the XY\n"
"plane in units per minute.\n"
"It is called also Plunge."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5300 flatcamGUI/ObjectUI.py:682
+#: flatcamGUI/FlatCAMGUI.py:5279 flatcamGUI/ObjectUI.py:682
#: flatcamGUI/ObjectUI.py:1211
msgid "Spindle speed:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5343
+#: flatcamGUI/FlatCAMGUI.py:5322
msgid ""
"The postprocessor file that dictates\n"
"Machine Code output."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5359
+#: flatcamGUI/FlatCAMGUI.py:5338
msgid "Geometry Adv. Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5366
+#: flatcamGUI/FlatCAMGUI.py:5345
msgid ""
"Parameters to create a CNC Job object\n"
"tracing the contours of a Geometry object."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5386
+#: flatcamGUI/FlatCAMGUI.py:5365
msgid ""
"Height of the tool just after starting the work.\n"
"Delete the value if you don't need this feature."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5406
+#: flatcamGUI/FlatCAMGUI.py:5385
msgid ""
"Cutting speed in the XY plane\n"
"(in units per minute).\n"
@@ -6319,11 +6325,11 @@ msgid ""
"ignore for any other cases."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5418
+#: flatcamGUI/FlatCAMGUI.py:5397
msgid "Re-cut 1st pt."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5420 flatcamGUI/ObjectUI.py:1202
+#: flatcamGUI/FlatCAMGUI.py:5399 flatcamGUI/ObjectUI.py:1202
msgid ""
"In order to remove possible\n"
"copper leftovers where first cut\n"
@@ -6331,37 +6337,37 @@ msgid ""
"extended cut over the first cut section."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5459
+#: flatcamGUI/FlatCAMGUI.py:5438
msgid "Seg. X size:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5461
+#: flatcamGUI/FlatCAMGUI.py:5440
msgid ""
"The size of the trace segment on the X axis.\n"
"Useful for auto-leveling.\n"
"A value of 0 means no segmentation on the X axis."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5470
+#: flatcamGUI/FlatCAMGUI.py:5449
msgid "Seg. Y size:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5472
+#: flatcamGUI/FlatCAMGUI.py:5451
msgid ""
"The size of the trace segment on the Y axis.\n"
"Useful for auto-leveling.\n"
"A value of 0 means no segmentation on the Y axis."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5488
+#: flatcamGUI/FlatCAMGUI.py:5467
msgid "Geometry Editor"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5493
+#: flatcamGUI/FlatCAMGUI.py:5472
msgid "A list of Geometry Editor parameters."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5503
+#: flatcamGUI/FlatCAMGUI.py:5482
msgid ""
"Set the number of selected geometry\n"
"items above which the utility geometry\n"
@@ -6370,20 +6376,20 @@ msgid ""
"large number of geometric elements."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5522
+#: flatcamGUI/FlatCAMGUI.py:5501
msgid "CNC Job General"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5535 flatcamGUI/ObjectUI.py:544
+#: flatcamGUI/FlatCAMGUI.py:5514 flatcamGUI/ObjectUI.py:544
#: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1447
msgid "Plot Object"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5542
+#: flatcamGUI/FlatCAMGUI.py:5521
msgid "Plot kind:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5544 flatcamGUI/ObjectUI.py:1356
+#: flatcamGUI/FlatCAMGUI.py:5523 flatcamGUI/ObjectUI.py:1356
msgid ""
"This selects the kind of geometries on the canvas to plot.\n"
"Those can be either of type 'Travel' which means the moves\n"
@@ -6391,110 +6397,110 @@ msgid ""
"which means the moves that cut into the material."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5561
+#: flatcamGUI/FlatCAMGUI.py:5540
msgid "Display Annotation:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5563 flatcamGUI/ObjectUI.py:1372
+#: flatcamGUI/FlatCAMGUI.py:5542 flatcamGUI/ObjectUI.py:1372
msgid ""
"This selects if to display text annotation on the plot.\n"
"When checked it will display numbers in order for each end\n"
"of a travel line."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5575
+#: flatcamGUI/FlatCAMGUI.py:5554
msgid "Annotation Size:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5577
+#: flatcamGUI/FlatCAMGUI.py:5556
msgid "The font size of the annotation text. In pixels."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5585
+#: flatcamGUI/FlatCAMGUI.py:5564
msgid "Annotation Color:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5587
+#: flatcamGUI/FlatCAMGUI.py:5566
msgid "Set the font color for the annotation texts."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5610
+#: flatcamGUI/FlatCAMGUI.py:5589
msgid ""
"The number of circle steps for GCode \n"
"circle and arc shapes linear approximation."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5620
+#: flatcamGUI/FlatCAMGUI.py:5599
msgid ""
"Diameter of the tool to be\n"
"rendered in the plot."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5628
+#: flatcamGUI/FlatCAMGUI.py:5607
msgid "Coords dec.:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5630
+#: flatcamGUI/FlatCAMGUI.py:5609
msgid ""
"The number of decimals to be used for \n"
"the X, Y, Z coordinates in CNC code (GCODE, etc.)"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5638
+#: flatcamGUI/FlatCAMGUI.py:5617
msgid "Feedrate dec.:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5640
+#: flatcamGUI/FlatCAMGUI.py:5619
msgid ""
"The number of decimals to be used for \n"
"the Feedrate parameter in CNC code (GCODE, etc.)"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5655
+#: flatcamGUI/FlatCAMGUI.py:5634
msgid "CNC Job Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5658 flatcamGUI/FlatCAMGUI.py:5699
+#: flatcamGUI/FlatCAMGUI.py:5637 flatcamGUI/FlatCAMGUI.py:5678
msgid "Export G-Code:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5660 flatcamGUI/FlatCAMGUI.py:5701
+#: flatcamGUI/FlatCAMGUI.py:5639 flatcamGUI/FlatCAMGUI.py:5680
#: flatcamGUI/ObjectUI.py:1483
msgid ""
"Export and save G-Code to\n"
"make this object to a file."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5666
+#: flatcamGUI/FlatCAMGUI.py:5645
msgid "Prepend to G-Code:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5668
+#: flatcamGUI/FlatCAMGUI.py:5647
msgid ""
"Type here any G-Code commands you would\n"
"like to add at the beginning of the G-Code file."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5677
+#: flatcamGUI/FlatCAMGUI.py:5656
msgid "Append to G-Code:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5679 flatcamGUI/ObjectUI.py:1505
+#: flatcamGUI/FlatCAMGUI.py:5658 flatcamGUI/ObjectUI.py:1505
msgid ""
"Type here any G-Code commands you would\n"
"like to append to the generated file.\n"
"I.e.: M2 (End of program)"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5696
+#: flatcamGUI/FlatCAMGUI.py:5675
msgid "CNC Job Adv. Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5707 flatcamGUI/ObjectUI.py:1523
+#: flatcamGUI/FlatCAMGUI.py:5686 flatcamGUI/ObjectUI.py:1523
msgid "Toolchange G-Code:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5709
+#: flatcamGUI/FlatCAMGUI.py:5688
msgid ""
"Type here any G-Code commands you would\n"
"like to be executed when Toolchange event is encountered.\n"
@@ -6502,88 +6508,84 @@ msgid ""
"or a Toolchange Macro."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5723 flatcamGUI/ObjectUI.py:1545
+#: flatcamGUI/FlatCAMGUI.py:5702 flatcamGUI/ObjectUI.py:1545
msgid "Use Toolchange Macro"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5725 flatcamGUI/ObjectUI.py:1548
+#: flatcamGUI/FlatCAMGUI.py:5704 flatcamGUI/ObjectUI.py:1548
msgid ""
"Check this box if you want to use\n"
"a Custom Toolchange GCode (macro)."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5737 flatcamGUI/ObjectUI.py:1557
+#: flatcamGUI/FlatCAMGUI.py:5716 flatcamGUI/ObjectUI.py:1557
msgid ""
"A list of the FlatCAM variables that can be used\n"
"in the Toolchange event.\n"
"They have to be surrounded by the '%' symbol"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5744 flatcamGUI/ObjectUI.py:1564
+#: flatcamGUI/FlatCAMGUI.py:5723 flatcamGUI/ObjectUI.py:1564
msgid "Parameters"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5747 flatcamGUI/ObjectUI.py:1567
+#: flatcamGUI/FlatCAMGUI.py:5726 flatcamGUI/ObjectUI.py:1567
msgid "FlatCAM CNC parameters"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5748 flatcamGUI/ObjectUI.py:1568
+#: flatcamGUI/FlatCAMGUI.py:5727 flatcamGUI/ObjectUI.py:1568
msgid "tool = tool number"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5749 flatcamGUI/ObjectUI.py:1569
+#: flatcamGUI/FlatCAMGUI.py:5728 flatcamGUI/ObjectUI.py:1569
msgid "tooldia = tool diameter"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5750 flatcamGUI/ObjectUI.py:1570
+#: flatcamGUI/FlatCAMGUI.py:5729 flatcamGUI/ObjectUI.py:1570
msgid "t_drills = for Excellon, total number of drills"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5751 flatcamGUI/ObjectUI.py:1571
+#: flatcamGUI/FlatCAMGUI.py:5730 flatcamGUI/ObjectUI.py:1571
msgid "x_toolchange = X coord for Toolchange"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5752 flatcamGUI/ObjectUI.py:1572
+#: flatcamGUI/FlatCAMGUI.py:5731 flatcamGUI/ObjectUI.py:1572
msgid "y_toolchange = Y coord for Toolchange"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5753 flatcamGUI/ObjectUI.py:1573
+#: flatcamGUI/FlatCAMGUI.py:5732 flatcamGUI/ObjectUI.py:1573
msgid "z_toolchange = Z coord for Toolchange"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5754
+#: flatcamGUI/FlatCAMGUI.py:5733
msgid "z_cut = Z depth for the cut"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5755
+#: flatcamGUI/FlatCAMGUI.py:5734
msgid "z_move = Z height for travel"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5756 flatcamGUI/ObjectUI.py:1576
+#: flatcamGUI/FlatCAMGUI.py:5735 flatcamGUI/ObjectUI.py:1576
msgid "z_depthpercut = the step value for multidepth cut"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5757 flatcamGUI/ObjectUI.py:1577
+#: flatcamGUI/FlatCAMGUI.py:5736 flatcamGUI/ObjectUI.py:1577
msgid "spindlesspeed = the value for the spindle speed"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5759 flatcamGUI/ObjectUI.py:1578
+#: flatcamGUI/FlatCAMGUI.py:5738 flatcamGUI/ObjectUI.py:1578
msgid "dwelltime = time to dwell to allow the spindle to reach it's set RPM"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5780
+#: flatcamGUI/FlatCAMGUI.py:5759
msgid "NCC Tool Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5793 flatcamGUI/FlatCAMGUI.py:6523
+#: flatcamGUI/FlatCAMGUI.py:5772 flatcamGUI/FlatCAMGUI.py:6502
msgid "Tools dia:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5795
-msgid "Diameters of the cutting tools, separated by ','"
-msgstr ""
-
-#: flatcamGUI/FlatCAMGUI.py:5803 flatcamTools/ToolNonCopperClear.py:167
+#: flatcamGUI/FlatCAMGUI.py:5782 flatcamTools/ToolNonCopperClear.py:167
#, python-format
msgid ""
"How much (fraction) of the tool width to overlap each tool pass.\n"
@@ -6598,11 +6600,11 @@ msgid ""
"due of too many paths."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5819 flatcamTools/ToolNonCopperClear.py:183
+#: flatcamGUI/FlatCAMGUI.py:5798 flatcamTools/ToolNonCopperClear.py:183
msgid "Bounding box margin."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5828 flatcamTools/ToolNonCopperClear.py:192
+#: flatcamGUI/FlatCAMGUI.py:5807 flatcamTools/ToolNonCopperClear.py:192
#: flatcamTools/ToolPaint.py:190
msgid ""
"Algorithm for non-copper clearing:
Standard: Fixed step inwards."
@@ -6610,12 +6612,12 @@ msgid ""
"lines."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5860 flatcamTools/ToolNonCopperClear.py:224
+#: flatcamGUI/FlatCAMGUI.py:5839 flatcamTools/ToolNonCopperClear.py:224
#: flatcamTools/ToolPaint.py:222
msgid "Rest M.:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5862
+#: flatcamGUI/FlatCAMGUI.py:5841
msgid ""
"If checked, use 'rest machining'.\n"
"Basically it will clear copper outside PCB features,\n"
@@ -6625,39 +6627,39 @@ msgid ""
"If not checked, use the standard algorithm."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5881
+#: flatcamGUI/FlatCAMGUI.py:5860
msgid "Cutout Tool Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5886 flatcamGUI/ObjectUI.py:402
+#: flatcamGUI/FlatCAMGUI.py:5865 flatcamGUI/ObjectUI.py:402
msgid ""
"Create toolpaths to cut around\n"
"the PCB and separate it from\n"
"the original board."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5905
+#: flatcamGUI/FlatCAMGUI.py:5884
msgid ""
"Distance from objects at which\n"
"to draw the cutout."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5912 flatcamTools/ToolCutOut.py:96
+#: flatcamGUI/FlatCAMGUI.py:5891 flatcamTools/ToolCutOut.py:96
msgid "Gap size:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5914
+#: flatcamGUI/FlatCAMGUI.py:5893
msgid ""
"Size of the gaps in the toolpath\n"
"that will remain to hold the\n"
"board in place."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5922 flatcamTools/ToolCutOut.py:134
+#: flatcamGUI/FlatCAMGUI.py:5901 flatcamTools/ToolCutOut.py:134
msgid "Gaps:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5924
+#: flatcamGUI/FlatCAMGUI.py:5903
msgid ""
"Number of bridge gaps used for the cutout.\n"
"There can be maximum 8 bridges/gaps.\n"
@@ -6670,57 +6672,57 @@ msgid ""
"- 8 - 2*left + 2*right +2*top + 2*bottom"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5945 flatcamTools/ToolCutOut.py:115
+#: flatcamGUI/FlatCAMGUI.py:5924 flatcamTools/ToolCutOut.py:115
msgid "Convex Sh.:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5947
+#: flatcamGUI/FlatCAMGUI.py:5926
msgid "Create a convex shape surrounding the entire PCB."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5960
+#: flatcamGUI/FlatCAMGUI.py:5939
msgid "2Sided Tool Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5965
+#: flatcamGUI/FlatCAMGUI.py:5944
msgid ""
"A tool to help in creating a double sided\n"
"PCB using alignment holes."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5975 flatcamTools/ToolDblSided.py:235
+#: flatcamGUI/FlatCAMGUI.py:5954 flatcamTools/ToolDblSided.py:235
msgid "Drill diam.:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5977 flatcamTools/ToolDblSided.py:226
+#: flatcamGUI/FlatCAMGUI.py:5956 flatcamTools/ToolDblSided.py:226
#: flatcamTools/ToolDblSided.py:237
msgid "Diameter of the drill for the alignment holes."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5986 flatcamTools/ToolDblSided.py:120
+#: flatcamGUI/FlatCAMGUI.py:5965 flatcamTools/ToolDblSided.py:120
msgid "Mirror Axis:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5988 flatcamTools/ToolDblSided.py:122
+#: flatcamGUI/FlatCAMGUI.py:5967 flatcamTools/ToolDblSided.py:122
msgid "Mirror vertically (X) or horizontally (Y)."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:5999 flatcamTools/ToolDblSided.py:133
+#: flatcamGUI/FlatCAMGUI.py:5978 flatcamTools/ToolDblSided.py:133
msgid "Axis Ref:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6001
+#: flatcamGUI/FlatCAMGUI.py:5980
msgid ""
"The axis should pass through a point or cut\n"
" a specified box (in a Geometry object) in \n"
"the middle."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6017
+#: flatcamGUI/FlatCAMGUI.py:5996
msgid "Paint Tool Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6024 flatcamGUI/ObjectUI.py:1305
+#: flatcamGUI/FlatCAMGUI.py:6003 flatcamGUI/ObjectUI.py:1305
msgid ""
"Creates tool paths to cover the\n"
"whole area of a polygon (remove\n"
@@ -6728,36 +6730,36 @@ msgid ""
"to click on the desired polygon."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6048
+#: flatcamGUI/FlatCAMGUI.py:6027
msgid ""
"How much (fraction) of the tool\n"
"width to overlap each tool pass."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6102 flatcamTools/ToolPaint.py:237
+#: flatcamGUI/FlatCAMGUI.py:6081 flatcamTools/ToolPaint.py:237
msgid "Selection:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6104
+#: flatcamGUI/FlatCAMGUI.py:6083
msgid "How to select the polygons to paint."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6122
+#: flatcamGUI/FlatCAMGUI.py:6101
msgid "Film Tool Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6127
+#: flatcamGUI/FlatCAMGUI.py:6106
msgid ""
"Create a PCB film from a Gerber or Geometry\n"
"FlatCAM object.\n"
"The file is saved in SVG format."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6138 flatcamTools/ToolFilm.py:116
+#: flatcamGUI/FlatCAMGUI.py:6117 flatcamTools/ToolFilm.py:116
msgid "Film Type:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6140 flatcamTools/ToolFilm.py:118
+#: flatcamGUI/FlatCAMGUI.py:6119 flatcamTools/ToolFilm.py:118
msgid ""
"Generate a Positive black film or a Negative film.\n"
"Positive means that it will print the features\n"
@@ -6767,11 +6769,11 @@ msgid ""
"The Film format is SVG."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6151 flatcamTools/ToolFilm.py:130
+#: flatcamGUI/FlatCAMGUI.py:6130 flatcamTools/ToolFilm.py:130
msgid "Border:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6153 flatcamTools/ToolFilm.py:132
+#: flatcamGUI/FlatCAMGUI.py:6132 flatcamTools/ToolFilm.py:132
msgid ""
"Specify a border around the object.\n"
"Only for negative film.\n"
@@ -6783,11 +6785,11 @@ msgid ""
"surroundings if not for this border."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6166 flatcamTools/ToolFilm.py:144
+#: flatcamGUI/FlatCAMGUI.py:6145 flatcamTools/ToolFilm.py:144
msgid "Scale Stroke:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6168 flatcamTools/ToolFilm.py:146
+#: flatcamGUI/FlatCAMGUI.py:6147 flatcamTools/ToolFilm.py:146
msgid ""
"Scale the line stroke thickness of each feature in the SVG file.\n"
"It means that the line that envelope each SVG feature will be thicker or "
@@ -6795,69 +6797,69 @@ msgid ""
"therefore the fine features may be more affected by this parameter."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6183
+#: flatcamGUI/FlatCAMGUI.py:6162
msgid "Panelize Tool Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6188
+#: flatcamGUI/FlatCAMGUI.py:6167
msgid ""
"Create an object that contains an array of (x, y) elements,\n"
"each element is a copy of the source object spaced\n"
"at a X distance, Y distance of each other."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6199 flatcamTools/ToolPanelize.py:147
+#: flatcamGUI/FlatCAMGUI.py:6178 flatcamTools/ToolPanelize.py:147
msgid "Spacing cols:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6201 flatcamTools/ToolPanelize.py:149
+#: flatcamGUI/FlatCAMGUI.py:6180 flatcamTools/ToolPanelize.py:149
msgid ""
"Spacing between columns of the desired panel.\n"
"In current units."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6209 flatcamTools/ToolPanelize.py:156
+#: flatcamGUI/FlatCAMGUI.py:6188 flatcamTools/ToolPanelize.py:156
msgid "Spacing rows:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6211 flatcamTools/ToolPanelize.py:158
+#: flatcamGUI/FlatCAMGUI.py:6190 flatcamTools/ToolPanelize.py:158
msgid ""
"Spacing between rows of the desired panel.\n"
"In current units."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6219 flatcamTools/ToolPanelize.py:165
+#: flatcamGUI/FlatCAMGUI.py:6198 flatcamTools/ToolPanelize.py:165
msgid "Columns:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6221 flatcamTools/ToolPanelize.py:167
+#: flatcamGUI/FlatCAMGUI.py:6200 flatcamTools/ToolPanelize.py:167
msgid "Number of columns of the desired panel"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6228 flatcamTools/ToolPanelize.py:173
+#: flatcamGUI/FlatCAMGUI.py:6207 flatcamTools/ToolPanelize.py:173
msgid "Rows:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6230 flatcamTools/ToolPanelize.py:175
+#: flatcamGUI/FlatCAMGUI.py:6209 flatcamTools/ToolPanelize.py:175
msgid "Number of rows of the desired panel"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6238
+#: flatcamGUI/FlatCAMGUI.py:6217
msgid "Panel Type:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6240
+#: flatcamGUI/FlatCAMGUI.py:6219
msgid ""
"Choose the type of object for the panel object:\n"
"- Gerber\n"
"- Geometry"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6249
+#: flatcamGUI/FlatCAMGUI.py:6228
msgid "Constrain within:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6251 flatcamTools/ToolPanelize.py:195
+#: flatcamGUI/FlatCAMGUI.py:6230 flatcamTools/ToolPanelize.py:195
msgid ""
"Area define by DX and DY within to constrain the panel.\n"
"DX and DY values are in current units.\n"
@@ -6866,171 +6868,171 @@ msgid ""
"they fit completely within selected area."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6260 flatcamTools/ToolPanelize.py:204
+#: flatcamGUI/FlatCAMGUI.py:6239 flatcamTools/ToolPanelize.py:204
msgid "Width (DX):"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6262 flatcamTools/ToolPanelize.py:206
+#: flatcamGUI/FlatCAMGUI.py:6241 flatcamTools/ToolPanelize.py:206
msgid ""
"The width (DX) within which the panel must fit.\n"
"In current units."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6269 flatcamTools/ToolPanelize.py:212
+#: flatcamGUI/FlatCAMGUI.py:6248 flatcamTools/ToolPanelize.py:212
msgid "Height (DY):"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6271 flatcamTools/ToolPanelize.py:214
+#: flatcamGUI/FlatCAMGUI.py:6250 flatcamTools/ToolPanelize.py:214
msgid ""
"The height (DY)within which the panel must fit.\n"
"In current units."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6285
+#: flatcamGUI/FlatCAMGUI.py:6264
msgid "Calculators Tool Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6288
+#: flatcamGUI/FlatCAMGUI.py:6267
msgid "V-Shape Tool Calculator:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6290
+#: flatcamGUI/FlatCAMGUI.py:6269
msgid ""
"Calculate the tool diameter for a given V-shape tool,\n"
"having the tip diameter, tip angle and\n"
"depth-of-cut as parameters."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6301 flatcamTools/ToolCalculators.py:94
+#: flatcamGUI/FlatCAMGUI.py:6280 flatcamTools/ToolCalculators.py:94
msgid "Tip Diameter:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6303
+#: flatcamGUI/FlatCAMGUI.py:6282
msgid ""
"This is the tool tip diameter.\n"
"It is specified by manufacturer."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6311
+#: flatcamGUI/FlatCAMGUI.py:6290
msgid "Tip angle:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6313
+#: flatcamGUI/FlatCAMGUI.py:6292
msgid ""
"This is the angle on the tip of the tool.\n"
"It is specified by manufacturer."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6323
+#: flatcamGUI/FlatCAMGUI.py:6302
msgid ""
"This is depth to cut into material.\n"
"In the CNCJob object it is the CutZ parameter."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6330
+#: flatcamGUI/FlatCAMGUI.py:6309
msgid "ElectroPlating Calculator:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6332 flatcamTools/ToolCalculators.py:152
+#: flatcamGUI/FlatCAMGUI.py:6311 flatcamTools/ToolCalculators.py:152
msgid ""
"This calculator is useful for those who plate the via/pad/drill holes,\n"
"using a method like grahite ink or calcium hypophosphite ink or palladium "
"chloride."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6342 flatcamTools/ToolCalculators.py:161
+#: flatcamGUI/FlatCAMGUI.py:6321 flatcamTools/ToolCalculators.py:161
msgid "Board Length:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6344 flatcamTools/ToolCalculators.py:165
+#: flatcamGUI/FlatCAMGUI.py:6323 flatcamTools/ToolCalculators.py:165
msgid "This is the board length. In centimeters."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6350 flatcamTools/ToolCalculators.py:167
+#: flatcamGUI/FlatCAMGUI.py:6329 flatcamTools/ToolCalculators.py:167
msgid "Board Width:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6352 flatcamTools/ToolCalculators.py:171
+#: flatcamGUI/FlatCAMGUI.py:6331 flatcamTools/ToolCalculators.py:171
msgid "This is the board width.In centimeters."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6357 flatcamTools/ToolCalculators.py:173
+#: flatcamGUI/FlatCAMGUI.py:6336 flatcamTools/ToolCalculators.py:173
msgid "Current Density:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6360 flatcamTools/ToolCalculators.py:177
+#: flatcamGUI/FlatCAMGUI.py:6339 flatcamTools/ToolCalculators.py:177
msgid ""
"Current density to pass through the board. \n"
"In Amps per Square Feet ASF."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6366 flatcamTools/ToolCalculators.py:181
+#: flatcamGUI/FlatCAMGUI.py:6345 flatcamTools/ToolCalculators.py:181
msgid "Copper Growth:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6369 flatcamTools/ToolCalculators.py:185
+#: flatcamGUI/FlatCAMGUI.py:6348 flatcamTools/ToolCalculators.py:185
msgid ""
"How thick the copper growth is intended to be.\n"
"In microns."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6382
+#: flatcamGUI/FlatCAMGUI.py:6361
msgid "Transform Tool Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6387
+#: flatcamGUI/FlatCAMGUI.py:6366
msgid ""
"Various transformations that can be applied\n"
"on a FlatCAM object."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6397
+#: flatcamGUI/FlatCAMGUI.py:6376
msgid "Rotate Angle:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6399
+#: flatcamGUI/FlatCAMGUI.py:6378
msgid "Angle for rotation. In degrees."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6406
+#: flatcamGUI/FlatCAMGUI.py:6385
msgid "Skew_X angle:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6408
+#: flatcamGUI/FlatCAMGUI.py:6387
msgid "Angle for Skew/Shear on X axis. In degrees."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6415
+#: flatcamGUI/FlatCAMGUI.py:6394
msgid "Skew_Y angle:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6417
+#: flatcamGUI/FlatCAMGUI.py:6396
msgid "Angle for Skew/Shear on Y axis. In degrees."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6424
+#: flatcamGUI/FlatCAMGUI.py:6403
msgid "Scale_X factor:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6426
+#: flatcamGUI/FlatCAMGUI.py:6405
msgid "Factor for scaling on X axis."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6433
+#: flatcamGUI/FlatCAMGUI.py:6412
msgid "Scale_Y factor:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6435
+#: flatcamGUI/FlatCAMGUI.py:6414
msgid "Factor for scaling on Y axis."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6443
+#: flatcamGUI/FlatCAMGUI.py:6422
msgid ""
"Scale the selected object(s)\n"
"using the Scale_X factor for both axis."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6451 flatcamTools/ToolTransform.py:210
+#: flatcamGUI/FlatCAMGUI.py:6430 flatcamTools/ToolTransform.py:210
msgid ""
"Scale the selected object(s)\n"
"using the origin reference when checked,\n"
@@ -7038,27 +7040,27 @@ msgid ""
"of the selected objects when unchecked."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6460
+#: flatcamGUI/FlatCAMGUI.py:6439
msgid "Offset_X val:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6462
+#: flatcamGUI/FlatCAMGUI.py:6441
msgid "Distance to offset on X axis. In current units."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6469
+#: flatcamGUI/FlatCAMGUI.py:6448
msgid "Offset_Y val:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6471
+#: flatcamGUI/FlatCAMGUI.py:6450
msgid "Distance to offset on Y axis. In current units."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6477
+#: flatcamGUI/FlatCAMGUI.py:6456
msgid "Mirror Reference"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6479 flatcamTools/ToolTransform.py:314
+#: flatcamGUI/FlatCAMGUI.py:6458 flatcamTools/ToolTransform.py:314
msgid ""
"Flip the selected object(s)\n"
"around the point in Point Entry Field.\n"
@@ -7071,174 +7073,174 @@ msgid ""
"Point Entry field and click Flip on X(Y)"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6490
+#: flatcamGUI/FlatCAMGUI.py:6469
msgid " Mirror Ref. Point:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6492 flatcamTools/ToolTransform.py:327
+#: flatcamGUI/FlatCAMGUI.py:6471 flatcamTools/ToolTransform.py:327
msgid ""
"Coordinates in format (x, y) used as reference for mirroring.\n"
"The 'x' in (x, y) will be used when using Flip on X and\n"
"the 'y' in (x, y) will be used when using Flip on Y and"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6509
+#: flatcamGUI/FlatCAMGUI.py:6488
msgid "SolderPaste Tool Options"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6514
+#: flatcamGUI/FlatCAMGUI.py:6493
msgid ""
"A tool to create GCode for dispensing\n"
"solder paste onto a PCB."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6525
+#: flatcamGUI/FlatCAMGUI.py:6504
msgid "Diameters of nozzle tools, separated by ','"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6532
+#: flatcamGUI/FlatCAMGUI.py:6511
msgid "New Nozzle Dia:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6534 flatcamTools/ToolSolderPaste.py:103
+#: flatcamGUI/FlatCAMGUI.py:6513 flatcamTools/ToolSolderPaste.py:103
msgid "Diameter for the new Nozzle tool to add in the Tool Table"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6542 flatcamTools/ToolSolderPaste.py:166
+#: flatcamGUI/FlatCAMGUI.py:6521 flatcamTools/ToolSolderPaste.py:166
msgid "Z Dispense Start:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6544 flatcamTools/ToolSolderPaste.py:168
+#: flatcamGUI/FlatCAMGUI.py:6523 flatcamTools/ToolSolderPaste.py:168
msgid "The height (Z) when solder paste dispensing starts."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6551 flatcamTools/ToolSolderPaste.py:174
+#: flatcamGUI/FlatCAMGUI.py:6530 flatcamTools/ToolSolderPaste.py:174
msgid "Z Dispense:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6553 flatcamTools/ToolSolderPaste.py:176
+#: flatcamGUI/FlatCAMGUI.py:6532 flatcamTools/ToolSolderPaste.py:176
msgid "The height (Z) when doing solder paste dispensing."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6560 flatcamTools/ToolSolderPaste.py:183
+#: flatcamGUI/FlatCAMGUI.py:6539 flatcamTools/ToolSolderPaste.py:183
msgid "Z Dispense Stop:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6562 flatcamTools/ToolSolderPaste.py:185
+#: flatcamGUI/FlatCAMGUI.py:6541 flatcamTools/ToolSolderPaste.py:185
msgid "The height (Z) when solder paste dispensing stops."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6569 flatcamTools/ToolSolderPaste.py:191
+#: flatcamGUI/FlatCAMGUI.py:6548 flatcamTools/ToolSolderPaste.py:191
msgid "Z Travel:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6571 flatcamTools/ToolSolderPaste.py:193
+#: flatcamGUI/FlatCAMGUI.py:6550 flatcamTools/ToolSolderPaste.py:193
msgid ""
"The height (Z) for travel between pads\n"
"(without dispensing solder paste)."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6579 flatcamTools/ToolSolderPaste.py:200
+#: flatcamGUI/FlatCAMGUI.py:6558 flatcamTools/ToolSolderPaste.py:200
msgid "Z Toolchange:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6581 flatcamTools/ToolSolderPaste.py:202
+#: flatcamGUI/FlatCAMGUI.py:6560 flatcamTools/ToolSolderPaste.py:202
msgid "The height (Z) for tool (nozzle) change."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6588 flatcamTools/ToolSolderPaste.py:208
+#: flatcamGUI/FlatCAMGUI.py:6567 flatcamTools/ToolSolderPaste.py:208
msgid "XY Toolchange:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6590 flatcamTools/ToolSolderPaste.py:210
+#: flatcamGUI/FlatCAMGUI.py:6569 flatcamTools/ToolSolderPaste.py:210
msgid ""
"The X,Y location for tool (nozzle) change.\n"
"The format is (x, y) where x and y are real numbers."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6598 flatcamTools/ToolSolderPaste.py:217
+#: flatcamGUI/FlatCAMGUI.py:6577 flatcamTools/ToolSolderPaste.py:217
msgid "Feedrate X-Y:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6600 flatcamTools/ToolSolderPaste.py:219
+#: flatcamGUI/FlatCAMGUI.py:6579 flatcamTools/ToolSolderPaste.py:219
msgid "Feedrate (speed) while moving on the X-Y plane."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6607 flatcamTools/ToolSolderPaste.py:225
+#: flatcamGUI/FlatCAMGUI.py:6586 flatcamTools/ToolSolderPaste.py:225
msgid "Feedrate Z:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6609 flatcamTools/ToolSolderPaste.py:227
+#: flatcamGUI/FlatCAMGUI.py:6588 flatcamTools/ToolSolderPaste.py:227
msgid ""
"Feedrate (speed) while moving vertically\n"
"(on Z plane)."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6617 flatcamTools/ToolSolderPaste.py:234
+#: flatcamGUI/FlatCAMGUI.py:6596 flatcamTools/ToolSolderPaste.py:234
msgid "Feedrate Z Dispense:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6619
+#: flatcamGUI/FlatCAMGUI.py:6598
msgid ""
"Feedrate (speed) while moving up vertically\n"
"to Dispense position (on Z plane)."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6627 flatcamTools/ToolSolderPaste.py:243
+#: flatcamGUI/FlatCAMGUI.py:6606 flatcamTools/ToolSolderPaste.py:243
msgid "Spindle Speed FWD:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6629 flatcamTools/ToolSolderPaste.py:245
+#: flatcamGUI/FlatCAMGUI.py:6608 flatcamTools/ToolSolderPaste.py:245
msgid ""
"The dispenser speed while pushing solder paste\n"
"through the dispenser nozzle."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6637 flatcamTools/ToolSolderPaste.py:252
+#: flatcamGUI/FlatCAMGUI.py:6616 flatcamTools/ToolSolderPaste.py:252
msgid "Dwell FWD:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6639 flatcamTools/ToolSolderPaste.py:254
+#: flatcamGUI/FlatCAMGUI.py:6618 flatcamTools/ToolSolderPaste.py:254
msgid "Pause after solder dispensing."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6646 flatcamTools/ToolSolderPaste.py:260
+#: flatcamGUI/FlatCAMGUI.py:6625 flatcamTools/ToolSolderPaste.py:260
msgid "Spindle Speed REV:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6648 flatcamTools/ToolSolderPaste.py:262
+#: flatcamGUI/FlatCAMGUI.py:6627 flatcamTools/ToolSolderPaste.py:262
msgid ""
"The dispenser speed while retracting solder paste\n"
"through the dispenser nozzle."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6656 flatcamTools/ToolSolderPaste.py:269
+#: flatcamGUI/FlatCAMGUI.py:6635 flatcamTools/ToolSolderPaste.py:269
msgid "Dwell REV:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6658 flatcamTools/ToolSolderPaste.py:271
+#: flatcamGUI/FlatCAMGUI.py:6637 flatcamTools/ToolSolderPaste.py:271
msgid ""
"Pause after solder paste dispenser retracted,\n"
"to allow pressure equilibrium."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6665 flatcamTools/ToolSolderPaste.py:277
+#: flatcamGUI/FlatCAMGUI.py:6644 flatcamTools/ToolSolderPaste.py:277
msgid "PostProcessors:"
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6667 flatcamTools/ToolSolderPaste.py:279
+#: flatcamGUI/FlatCAMGUI.py:6646 flatcamTools/ToolSolderPaste.py:279
msgid "Files that control the GCode generation."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6697 flatcamGUI/FlatCAMGUI.py:6703
+#: flatcamGUI/FlatCAMGUI.py:6676 flatcamGUI/FlatCAMGUI.py:6682
msgid "Idle."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6727
+#: flatcamGUI/FlatCAMGUI.py:6706
msgid "Application started ..."
msgstr ""
-#: flatcamGUI/FlatCAMGUI.py:6728
+#: flatcamGUI/FlatCAMGUI.py:6707
msgid "Hello!"
msgstr ""
@@ -9139,11 +9141,11 @@ msgstr ""
msgid "[ERROR_NOTCL] PaintTool.paint_poly() --> %s"
msgstr ""
-#: flatcamTools/ToolPaint.py:970 flatcamTools/ToolPaint.py:1263
+#: flatcamTools/ToolPaint.py:970 flatcamTools/ToolPaint.py:1267
msgid "Polygon Paint started ..."
msgstr ""
-#: flatcamTools/ToolPaint.py:1119 flatcamTools/ToolPaint.py:1208
+#: flatcamTools/ToolPaint.py:1123 flatcamTools/ToolPaint.py:1212
#, python-format
msgid ""
"[ERROR] Could not do Paint All. Try a different combination of parameters. "
@@ -9151,7 +9153,7 @@ msgid ""
"%s"
msgstr ""
-#: flatcamTools/ToolPaint.py:1143
+#: flatcamTools/ToolPaint.py:1147
msgid ""
"[ERROR] There is no Painting Geometry in the file.\n"
"Usually it means that the tool diameter is too big for the painted "
@@ -9159,11 +9161,11 @@ msgid ""
"Change the painting parameters and try again."
msgstr ""
-#: flatcamTools/ToolPaint.py:1152
+#: flatcamTools/ToolPaint.py:1156
msgid "[success] Paint All Done."
msgstr ""
-#: flatcamTools/ToolPaint.py:1238
+#: flatcamTools/ToolPaint.py:1242
msgid ""
"[ERROR_NOTCL] There is no Painting Geometry in the file.\n"
"Usually it means that the tool diameter is too big for the painted "
@@ -9171,7 +9173,7 @@ msgid ""
"Change the painting parameters and try again."
msgstr ""
-#: flatcamTools/ToolPaint.py:1247
+#: flatcamTools/ToolPaint.py:1251
msgid "[success] Paint All with Rest-Machining done."
msgstr ""