From 8a273b3a6fe11eb7a4e4236c36659c22113e9daa Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 22 May 2019 23:02:23 +0300 Subject: [PATCH 01/23] - fixed bug in Gerber editor FCDisk and FCSemiDisc that the resulting geometry was not stored into the '0' aperture where all the solids are stored - fixed minor issue in Gerber Editor where apertures were included in the saved object even if there was no geometric data for that aperture --- README.md | 6 ++++++ flatcamEditors/FlatCAMGrbEditor.py | 30 ++++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 01990737..75b4edd3 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,18 @@ CAD program, and create G-Code for Isolation routing. ================================================= +23.05.2019 + +- fixed bug in Gerber editor FCDisk and FCSemiDisc that the resulting geometry was not stored into the '0' aperture where all the solids are stored +- fixed minor issue in Gerber Editor where apertures were included in the saved object even if there was no geometric data for that aperture + 22.05.2019 - Geo Editor - added a new editor tool, Eraser - some PEP8 cleanup of the Geo Editor - fixed some selection issues in the new tool Eraser in Geometry Editor - updated the translation files +- RELEASE 8.917 21.05.2019 diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 687751c6..ab498ea1 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -1349,7 +1349,14 @@ class FCDisc(FCShapeTool): size_ap = float(self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['size']) self.buf_val = (size_ap / 2) if size_ap > 0 else 0.0000001 - self.storage_obj = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['geometry'] + if '0' in self.draw_app.storage_dict: + self.storage_obj = self.draw_app.storage_dict['0']['geometry'] + else: + self.draw_app.storage_dict['0'] = dict() + self.draw_app.storage_dict['0']['type'] = 'C' + self.draw_app.storage_dict['0']['size'] = 0.0 + self.draw_app.storage_dict['0']['geometry'] = list() + self.storage_obj = self.draw_app.storage_dict['0']['geometry'] self.draw_app.app.inform.emit(_("Click on Center point ...")) @@ -1436,7 +1443,14 @@ class FCSemiDisc(FCShapeTool): size_ap = float(self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['size']) self.buf_val = (size_ap / 2) if size_ap > 0 else 0.0000001 - self.storage_obj = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['geometry'] + if '0' in self.draw_app.storage_dict: + self.storage_obj = self.draw_app.storage_dict['0']['geometry'] + else: + self.draw_app.storage_dict['0'] = dict() + self.draw_app.storage_dict['0']['type'] = 'C' + self.draw_app.storage_dict['0']['size'] = 0.0 + self.draw_app.storage_dict['0']['geometry'] = list() + self.storage_obj = self.draw_app.storage_dict['0']['geometry'] self.steps_per_circ = self.draw_app.app.defaults["gerber_circle_steps"] @@ -2050,7 +2064,9 @@ class FCEraser(FCShapeTool): if 'solid' in geo_el.geo: geometric_data = geo_el.geo['solid'] if eraser_sel_shapes.within(geometric_data) or eraser_sel_shapes.intersects(geometric_data): - geo_el.geo['solid'] = geometric_data.difference(eraser_sel_shapes) + geos = geometric_data.difference(eraser_sel_shapes) + geos = geos.buffer(0) + geo_el.geo['solid'] = deepcopy(geos) except KeyError: pass @@ -3621,7 +3637,13 @@ class FlatCAMGrbEditor(QtCore.QObject): self.gerber_obj.options['name'].upper()) out_name = outname - local_storage_dict = deepcopy(self.storage_dict) + + local_storage_dict = dict() + for aperture in self.storage_dict: + if 'geometry' in self.storage_dict[aperture]: + # add aperture only if it has geometry + if len(self.storage_dict[aperture]['geometry']) > 0: + local_storage_dict[aperture] = deepcopy(self.storage_dict[aperture]) # How the object should be initialized def obj_init(grb_obj, app_obj): From 4c49348aefdb6337401e385056de62cd0ac30a56 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 22 May 2019 23:40:26 +0300 Subject: [PATCH 02/23] - some PEP8 cleanup in FlatCAMApp.py --- FlatCAMApp.py | 283 ++++++++++++++++++++++++++------------------------ README.md | 1 + 2 files changed, 146 insertions(+), 138 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 99e107fa..e178af27 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -1,10 +1,10 @@ -############################################################ -# FlatCAM: 2D Post-processing for Manufacturing # -# http://flatcam.org # -# Author: Juan Pablo Caram (c) # -# Date: 2/5/2014 # -# MIT Licence # -############################################################ +# ########################################################### +# FlatCAM: 2D Post-processing for Manufacturing # +# http://flatcam.org # +# Author: Juan Pablo Caram (c) # +# Date: 2/5/2014 # +# MIT Licence # +# ########################################################### import urllib.request, urllib.parse, urllib.error import getopt @@ -25,9 +25,9 @@ import gc from xml.dom.minidom import parseString as parse_xml_string -######################################## -## Imports part of FlatCAM ## -######################################## +# ####################################### +# # Imports part of FlatCAM ## +# ####################################### from ObjectCollection import * from FlatCAMObj import * from flatcamGUI.PlotCanvas import * @@ -52,15 +52,15 @@ import tclCommands import gettext import FlatCAMTranslation as fcTranslate +import builtins fcTranslate.apply_language('strings') -import builtins if '_' not in builtins.__dict__: _ = gettext.gettext -######################################## -## App ## -######################################## +# ####################################### +# # App ## +# ####################################### class App(QtCore.QObject): @@ -120,9 +120,9 @@ class App(QtCore.QObject): # flag is True if saving action has been triggered save_in_progress = False - ################## - ## Signals ## - ################## + # ################# + # # Signals ## + # ################# # Inform the user # Handled by: @@ -191,9 +191,9 @@ class App(QtCore.QObject): self.main_thread = QtWidgets.QApplication.instance().thread() - ################### - ### OS-specific ### - ################### + # ################## + # ## OS-specific ### + # ################## # Folder for user settings. if sys.platform == 'win32': @@ -209,9 +209,9 @@ class App(QtCore.QObject): self.data_path = os.path.expanduser('~') + '/.FlatCAM' self.os = 'unix' - ############################### - ### Setup folders and files ### - ############################### + # ############################## + # ## Setup folders and files ### + # ############################## if not os.path.exists(self.data_path): os.makedirs(self.data_path) @@ -272,9 +272,9 @@ class App(QtCore.QObject): # variable to store mouse coordinates self.mouse = [0, 0] - #################### - ## Initialize GUI ## - #################### + # ################### + # # Initialize GUI ## + # ################### # FlatCAM colors used in plotting self.FC_light_green = '#BBF268BF' @@ -285,16 +285,15 @@ class App(QtCore.QObject): QtCore.QObject.__init__(self) self.ui = FlatCAMGUI(self.version, self.beta, self) - # self.connect(self.ui, # QtCore.SIGNAL("geomUpdate(int, int, int, int, int)"), # self.save_geometry) PyQt4 self.ui.geom_update[int, int, int, int, int].connect(self.save_geometry) self.ui.final_save.connect(self.final_save) - ############## - #### Data #### - ############## + # ############# + # ### Data #### + # ############# self.recent = [] self.clipboard = QtWidgets.QApplication.clipboard() self.proc_container = FCVisibleProcessContainer(self.ui.activity_view) @@ -567,9 +566,9 @@ class App(QtCore.QObject): } - ############################# - #### LOAD POSTPROCESSORS #### - ############################# + # ############################ + # ### LOAD POSTPROCESSORS #### + # ############################ self.postprocessors = load_postprocessors(self) @@ -586,9 +585,9 @@ class App(QtCore.QObject): self.ui.excellon_defaults_form.excellon_opt_group.pp_excellon_name_cb.addItem(name) - ############################# - #### LOAD LANGUAGES #### - ############################# + # ############################ + # ### LOAD LANGUAGES #### + # ############################ self.languages = fcTranslate.load_languages() for name in sorted(self.languages.values()): @@ -644,7 +643,7 @@ class App(QtCore.QObject): "global_background_timeout": 300000, # Default value is 5 minutes "global_verbose_error_level": 0, # Shell verbosity 0 = default # (python trace only for unknown errors), - # 1 = show trace(show trace allways), + # 1 = show trace(show trace always), # 2 = (For the future). # Persistence @@ -881,16 +880,16 @@ class App(QtCore.QObject): "tools_solderpaste_pp": 'Paste_1' }) - ############################### - ### Load defaults from file ### - ############################### + # ############################## + # ## Load defaults from file ### + # ############################## if user_defaults: self.load_defaults(filename='current_defaults') - ############################ - ##### APPLY APP LANGUAGE ### - ############################ + # ########################### + # #### APPLY APP LANGUAGE ### + # ########################### ret_val = fcTranslate.apply_language('strings') @@ -903,9 +902,9 @@ class App(QtCore.QObject): log.debug("App.__init__() --> Applied %s language." % str(ret_val).capitalize()) - ################################### - ### CREATE UNIQUE SERIAL NUMBER ### - ################################### + # ################################## + # ## CREATE UNIQUE SERIAL NUMBER ### + # ################################## chars = 'abcdefghijklmnopqrstuvwxyz0123456789' if self.defaults['global_serial'] == 0 or len(str(self.defaults['global_serial'])) < 10: @@ -1172,14 +1171,14 @@ class App(QtCore.QObject): self.tools_form = None self.on_options_combo_change(0) # Will show the initial form - ### Define OBJECT COLLECTION ### + # ## Define OBJECT COLLECTION ### self.collection = ObjectCollection(self) self.ui.project_tab_layout.addWidget(self.collection.view) - ### + # ## self.log.debug("Finished creating Object Collection.") - ### Initialize the color box's color in Preferences -> Global -> Color + # ## Initialize the color box's color in Preferences -> Global -> Color # Init Plot Colors self.ui.general_defaults_form.general_gui_group.pf_color_entry.set_value(self.defaults['global_plot_fill']) self.ui.general_defaults_form.general_gui_group.pf_color_button.setStyleSheet( @@ -1242,10 +1241,9 @@ class App(QtCore.QObject): self.defaults['global_proj_item_dis_color']) self.ui.general_defaults_form.general_gui_group.proj_color_dis_button.setStyleSheet( "background-color:%s" % str(self.defaults['global_proj_item_dis_color'])[:7]) + # ### End of Data #### - #### End of Data #### - - #### Plot Area #### + # ### Plot Area #### start_plot_time = time.time() # debug self.plotcanvas = PlotCanvas(self.ui.right_layout, self) @@ -1272,28 +1270,27 @@ class App(QtCore.QObject): end_plot_time = time.time() self.log.debug("Finished Canvas initialization in %s seconds." % (str(end_plot_time - start_plot_time))) - ### EDITOR section + # ## EDITOR section self.geo_editor = FlatCAMGeoEditor(self, disabled=True) self.exc_editor = FlatCAMExcEditor(self) self.grb_editor = FlatCAMGrbEditor(self) - #### Adjust tabs width #### + # ### Adjust tabs width #### # self.collection.view.setMinimumWidth(self.ui.options_scroll_area.widget().sizeHint().width() + # self.ui.options_scroll_area.verticalScrollBar().sizeHint().width()) self.collection.view.setMinimumWidth(290) self.log.debug("Finished adding FlatCAM Editor's.") - #### Worker #### + # ### Worker #### if self.defaults["global_worker_number"]: self.workers = WorkerStack(workers_number=int(self.defaults["global_worker_number"])) else: self.workers = WorkerStack(workers_number=2) self.worker_task.connect(self.workers.add_task) - - ### Signal handling ### - ## Custom signals + # ## Signal handling ### + # ## Custom signals self.inform.connect(self.info) self.app_quit.connect(self.quit_application) self.message.connect(self.message_dialog) @@ -1306,9 +1303,8 @@ class App(QtCore.QObject): self.file_opened.connect(lambda kind, filename: self.register_folder(filename)) self.file_saved.connect(lambda kind, filename: self.register_save_folder(filename)) - - ## Standard signals - # Menu + # ## Standard signals + # ## Menu self.ui.menufilenewproject.triggered.connect(self.on_file_new_click) self.ui.menufilenewgeo.triggered.connect(self.new_geometry_object) self.ui.menufilenewgrb.triggered.connect(self.new_gerber_object) @@ -1448,19 +1444,19 @@ class App(QtCore.QObject): self.ui.pref_export_button.clicked.connect(self.on_export_preferences) self.ui.pref_open_button.clicked.connect(self.on_preferences_open_folder) - ############################### - ### GUI PREFERENCES SIGNALS ### - ############################### + # ############################## + # ## GUI PREFERENCES SIGNALS ### + # ############################## self.ui.general_options_form.general_app_group.units_radio.group_toggle_fn = self.on_toggle_units self.ui.general_defaults_form.general_app_group.language_apply_btn.clicked.connect( lambda: fcTranslate.on_language_apply_click(self, restart=True) ) self.ui.general_defaults_form.general_app_group.units_radio.activated_custom.connect( - lambda :self.on_toggle_units(no_pref=False)) + lambda: self.on_toggle_units(no_pref=False)) - ############################### - ### GUI PREFERENCES SIGNALS ### - ############################### + # ############################## + # ## GUI PREFERENCES SIGNALS ### + # ############################## # Setting plot colors signals self.ui.general_defaults_form.general_gui_group.pf_color_entry.editingFinished.connect( @@ -1562,21 +1558,20 @@ class App(QtCore.QObject): else: self.ui.splitter.setSizes([0, 1]) - - #################### - ### Other setups ### - #################### + # ################### + # ## Other setups ### + # ################### # Sets up FlatCAMObj, FCProcess and FCProcessContainer. self.setup_obj_classes() self.setup_recent_items() self.setup_component_editor() - ############# - ### Shell ### - ############# + # ############ + # ## Shell ### + # ############ - ### + # ## # Auto-complete KEYWORDS self.tcl_commands_list = ['add_circle', 'add_poly', 'add_polygon', 'add_polyline', 'add_rectangle', 'aligndrill', 'clear', @@ -1589,18 +1584,18 @@ class App(QtCore.QObject): 'open_gerber', 'open_project', 'options', 'paint', 'pan', 'panel', 'panelize', 'plot', 'save', 'save_project', 'save_sys', 'scale', 'set_active', 'set_sys', 'setsys', 'skew', 'subtract_poly', 'subtract_rectangle', 'version', 'write_gcode' - ] + ] self.ordinary_keywords = ['name', 'center_x', 'center_y', 'radius', 'x0', 'y0', 'x1', 'y1', 'box', 'axis', - 'holes','grid', 'minoffset', 'gridoffset','axisoffset', 'dia', 'dist', 'gridoffsetx', - 'gridoffsety', 'columns', 'rows', 'z_cut', 'z_move', 'feedrate', 'feedrate_rapid', - 'tooldia', 'multidepth', 'extracut', 'depthperpass', 'ppname_g', 'outname', 'margin', - 'gaps', 'gapsize', 'tools', 'drillz', 'travelz', 'spindlespeed', 'toolchange', - 'toolchangez', 'endz', 'ppname_e', 'opt_type', 'preamble', 'postamble', 'filename', - 'scale_factor', 'type', 'passes', 'overlap', 'combine', 'use_threads', 'x', 'y', - 'follow', 'all', 'spacing_columns', 'spacing_rows', 'factor', 'value', 'angle_x', - 'angle_y', 'gridx', 'gridy', 'True', 'False' - ] + 'holes', 'grid', 'minoffset', 'gridoffset', 'axisoffset', 'dia', 'dist', + 'gridoffsetx', 'gridoffsety', 'columns', 'rows', 'z_cut', 'z_move', 'feedrate', + 'feedrate_rapid', 'tooldia', 'multidepth', 'extracut', 'depthperpass', 'ppname_g', + 'outname', 'margin', 'gaps', 'gapsize', 'tools', 'drillz', 'travelz', 'spindlespeed', + 'toolchange', 'toolchangez', 'endz', 'ppname_e', 'opt_type', 'preamble', 'postamble', + 'filename', 'scale_factor', 'type', 'passes', 'overlap', 'combine', 'use_threads', + 'x', 'y', 'follow', 'all', 'spacing_columns', 'spacing_rows', 'factor', 'value', + 'angle_x', 'angle_y', 'gridx', 'gridy', 'True', 'False' + ] self.tcl_keywords = [ "after", "append", "apply", "array", "auto_execok", "auto_import", "auto_load", "auto_mkindex", @@ -1813,14 +1808,31 @@ class App(QtCore.QObject): else: self.ui.shell_dock.hide() - ######################### - ### Tools and Plugins ### - ######################### + # ######################## + # ## Tools and Plugins ### + # ######################## + + self.dblsidedtool = None + self.measurement_tool = None + self.panelize_tool = None + self.film_tool = None + self.paste_tool = None + self.calculator_tool = None + self.sub_tool = None + self.move_tool = None + self.cutout_tool = None + self.ncclear_tool = None + self.paint_tool = None + self.transform_tool = None + self.properties_tool = None + self.pdf_tool = None + self.image_tool = None + self.pcb_wizard_tool = None # always install tools only after the shell is initialized because the self.inform.emit() depends on shell self.install_tools() - ### System Font Parsing ### + # ## System Font Parsing ### # self.f_parse = ParseFont(self) # self.parse_system_fonts() @@ -1834,9 +1846,9 @@ class App(QtCore.QObject): print("ERROR: ", ext) sys.exit(2) - ########################### - #### Check for updates #### - ########################### + # ########################## + # ### Check for updates #### + # ########################## # Separate thread (Not worker) # Check for updates on startup but only if the user consent and the app is not in Beta version @@ -1849,10 +1861,9 @@ class App(QtCore.QObject): 'params': []}) self.thr2.start(QtCore.QThread.LowPriority) - - #################################### - #### Variables for global usage #### - #################################### + # ################################### + # ### Variables for global usage #### + # ################################### # coordinates for relative position display self.rel_point1 = (0, 0) @@ -1907,8 +1918,9 @@ class App(QtCore.QObject): ] self.exc_list = ['drl', 'txt', 'xln', 'drd', 'tap', 'exc', 'ncd'] self.gcode_list = ['nc', 'ncc', 'tap', 'gcode', 'cnc', 'ecs', 'fnc', 'dnc', 'ncg', 'gc', 'fan', 'fgc', 'din', - 'xpi', 'hnc', 'h', 'i', 'ncp', 'min', 'gcd', 'rol', 'mpr', 'ply', 'out', 'eia', 'plt', 'sbp', - 'mpf'] + 'xpi', 'hnc', 'h', 'i', 'ncp', 'min', 'gcd', 'rol', 'mpr', 'ply', 'out', 'eia', 'plt', 'sbp', + 'mpf' + ] self.svg_list = ['svg'] self.dxf_list = ['dxf'] self.pdf_list = ['pdf'] @@ -1923,8 +1935,8 @@ class App(QtCore.QObject): self.isHovering = False self.notHovering = True - ### Save defaults to factory_defaults.FlatConfig file ### - ### It's done only once after install ############# + # ## Save defaults to factory_defaults.FlatConfig file ### + # ## It's done only once after install ############# factory_file = open(self.data_path + '/factory_defaults.FlatConfig') fac_def_from_file = factory_file.read() factory_defaults = json.loads(fac_def_from_file) @@ -2000,8 +2012,8 @@ class App(QtCore.QObject): for option in self.defaults_form_fields: try: self.defaults[option] = self.defaults_form_fields[option].get_value() - except: - pass + except Exception as e: + log.debug("App.defaults_read_form() --> %s" % str(e)) def defaults_write_form(self, factor=None): for option in self.defaults: @@ -2019,9 +2031,8 @@ class App(QtCore.QObject): self.defaults_form_fields[field].set_value(self.defaults[field]) else: self.defaults_form_fields[field].set_value(self.defaults[field] * factor) - except KeyError: - #self.log.debug("defaults_write_form(): No field for: %s" % option) + # self.log.debug("defaults_write_form(): No field for: %s" % option) # TODO: Rethink this? pass except AttributeError: @@ -2055,7 +2066,6 @@ class App(QtCore.QObject): self.calculator_tool = ToolCalculator(self) self.calculator_tool.install(icon=QtGui.QIcon('share/calculator24.png')) - 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) @@ -2070,11 +2080,11 @@ class App(QtCore.QObject): self.ncclear_tool = NonCopperClear(self) self.ncclear_tool.install(icon=QtGui.QIcon('share/ncc16.png'), pos=self.ui.menutool, - before=self.measurement_tool.menuAction, separator=True) + before=self.measurement_tool.menuAction, separator=True) self.paint_tool = ToolPaint(self) self.paint_tool.install(icon=QtGui.QIcon('share/paint16.png'), pos=self.ui.menutool, - before=self.measurement_tool.menuAction, separator=True) + before=self.measurement_tool.menuAction, separator=True) self.transform_tool = ToolTransform(self) self.transform_tool.install(icon=QtGui.QIcon('share/transform.png'), pos=self.ui.menuoptions, separator=True) @@ -2247,7 +2257,6 @@ class App(QtCore.QObject): # do not update a geometry or excellon object unless it comes out of an editor if self.call_source != 'app': edited_obj = self.collection.get_active() - obj_type = "" if cleanup is None: msgbox = QtWidgets.QMessageBox() @@ -2381,7 +2390,7 @@ class App(QtCore.QObject): self.defaults['global_stats'][resource] = 1 def init_tcl(self): - if hasattr(self,'tcl'): + if hasattr(self, 'tcl'): # self.tcl = None # TODO we need to clean non default variables and procedures here # new object cannot be used here as it will not remember values created for next passes, @@ -2395,7 +2404,7 @@ class App(QtCore.QObject): # TODO: This shouldn't be here. class TclErrorException(Exception): """ - this exception is deffined here, to be able catch it if we sucessfully handle all errors from shell command + this exception is defined here, to be able catch it if we ssuccessfully handle all errors from shell command """ pass @@ -2406,6 +2415,9 @@ class App(QtCore.QObject): :param msg: Message to display. :param show: Opens the shell. :param error: Shows the message as an error. + :param warning: Shows the message as an warning. + :param warning: Shows the message as an success. + :param selected: Indicate that something was selected on canvas :return: None """ if show: @@ -2440,14 +2452,15 @@ class App(QtCore.QObject): def display_tcl_error(self, error, error_info=None): """ - escape bracket [ with \ otherwise there is error + Escape bracket [ with '\' otherwise there is error "ERROR: missing close-bracket" instead of real error + :param error: it may be text or exception + :param error_info: Some informations about the error :return: None """ if isinstance(error, Exception): - exc_type, exc_value, exc_traceback = error_info if not isinstance(error, self.TclErrorException): show_trace = 1 @@ -2459,22 +2472,19 @@ class App(QtCore.QObject): trc_formated = [] for a in reversed(trc): trc_formated.append(a.replace(" ", " > ").replace("\n", "")) - text = "%s\nPython traceback: %s\n%s" % (exc_value, - exc_type, - "\n".join(trc_formated)) - + text = "%s\nPython traceback: %s\n%s" % (exc_value, exc_type, "\n".join(trc_formated)) else: text = "%s" % error else: text = error text = text.replace('[', '\\[').replace('"', '\\"') - self.tcl.eval('return -code error "%s"' % text) def raise_tcl_error(self, text): """ - this method pass exception from python into TCL as error, so we get stacktrace and reason + This method pass exception from python into TCL as error, so we get stacktrace and reason + :param text: text of error :return: raise exception """ @@ -2495,8 +2505,7 @@ class App(QtCore.QObject): result = self.exec_command_test(text, False) - #MS: added this method call so the geometry is updated once the TCL - #command is executed + # MS: added this method call so the geometry is updated once the TCL command is executed self.plot_all() return result @@ -2579,7 +2588,7 @@ class App(QtCore.QObject): :return: None """ - # Type of message in brackets at the begining of the message. + # Type of message in brackets at the beginning of the message. match = re.search("\[([^\]]+)\](.*)", msg) if match: level = match.group(1) @@ -2708,9 +2717,11 @@ class App(QtCore.QObject): filter = "Config File (*.FlatConfig);;All Files (*.*)" try: filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Import FlatCAM Preferences"), - directory=self.data_path, filter=filter) + directory=self.data_path, + filter=filter) except TypeError: - filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Import FlatCAM Preferences"), filter=filter) + filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Import FlatCAM Preferences"), + filter=filter) filename = str(filename) @@ -2741,14 +2752,18 @@ class App(QtCore.QObject): self.report_usage("on_export_preferences") App.log.debug("on_export_preferences()") + defaults_file_content = None + filter = "Config File (*.FlatConfig);;All Files (*.*)" try: filename, _f = QtWidgets.QFileDialog.getSaveFileName( caption=_("Export FlatCAM Preferences"), - directory=self.data_path + '/preferences_' + self.date, filter=filter + directory=self.data_path + '/preferences_' + self.date, + filter=filter ) except TypeError: - filename, _f = QtWidgets.QFileDialog.getSaveFileName(caption=_("Export FlatCAM Preferences"), filter=filter) + filename, _f = QtWidgets.QFileDialog.getSaveFileName(caption=_("Export FlatCAM Preferences"), + filter=filter) filename = str(filename) defaults_from_file = {} @@ -2845,16 +2860,10 @@ class App(QtCore.QObject): self.inform.emit(_('[ERROR_NOTCL] Failed to open recent files file for writing.')) return - #try: json.dump(self.recent, f, default=to_dict, indent=2, sort_keys=True) - # except: - # App.log.error("Failed to write to recent items file.") - # self.inform.emit('ERROR: Failed to write to recent items file.') - # f.close() - f.close() - # Re-buid the recent items menu + # Re-build the recent items menu self.setup_recent_items() def new_object(self, kind, name, initialize, active=True, fit=True, plot=True, autoselected=True): @@ -2868,14 +2877,12 @@ class App(QtCore.QObject): when appending it to the collection. There is no need to handle name conflicts here. - :param kind: The kind of object to create. One of 'gerber', - 'excellon', 'cncjob' and 'geometry'. + :param kind: The kind of object to create. One of 'gerber', 'excellon', 'cncjob' and 'geometry'. :type kind: str :param name: Name for the object. :type name: str - :param initialize: Function to run after creation of the object - but before it is attached to the application. The function is - called with 2 parameters: the new object and the App instance. + :param initialize: Function to run after creation of the object but before it is attached to the application. + The function is called with 2 parameters: the new object and the App instance. :type initialize: function :return: None :rtype: None diff --git a/README.md b/README.md index 75b4edd3..09cfb9e1 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ CAD program, and create G-Code for Isolation routing. - fixed bug in Gerber editor FCDisk and FCSemiDisc that the resulting geometry was not stored into the '0' aperture where all the solids are stored - fixed minor issue in Gerber Editor where apertures were included in the saved object even if there was no geometric data for that aperture +- some PEP8 cleanup in FlatCAMApp.py 22.05.2019 From e28e109e903c9813b19ecc56b79de42726119ee0 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Thu, 23 May 2019 00:08:29 +0300 Subject: [PATCH 03/23] - more PEP8 cleanup in FlatCAMApp.py --- FlatCAMApp.py | 194 +++++++++++++++++++++----------------------------- 1 file changed, 83 insertions(+), 111 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index e178af27..565713cf 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -2714,14 +2714,14 @@ class App(QtCore.QObject): self.report_usage("on_import_preferences") App.log.debug("on_import_preferences()") - filter = "Config File (*.FlatConfig);;All Files (*.*)" + filter_ = "Config File (*.FlatConfig);;All Files (*.*)" try: filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Import FlatCAM Preferences"), directory=self.data_path, - filter=filter) + filter=filter_) except TypeError: filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Import FlatCAM Preferences"), - filter=filter) + filter=filter_) filename = str(filename) @@ -2739,7 +2739,7 @@ class App(QtCore.QObject): try: defaults_from_file = json.loads(options) - except: + except Exception as e: e = sys.exc_info()[0] App.log.error(str(e)) self.inform.emit(_("[ERROR_NOTCL] Failed to parse defaults file.")) @@ -2748,7 +2748,6 @@ class App(QtCore.QObject): self.inform.emit(_("[success] Imported Defaults from %s") %filename) def on_export_preferences(self): - self.report_usage("on_export_preferences") App.log.debug("on_export_preferences()") @@ -3057,15 +3056,15 @@ class App(QtCore.QObject): self.collection.set_active(obj.options["name"]) # here it is done the object plotting - def worker_task(obj): + def worker_task(t_obj): with self.proc_container.new("Plotting"): - if isinstance(obj, FlatCAMCNCjob): - obj.plot(kind=self.defaults["cncjob_plot_kind"]) + if isinstance(t_obj, FlatCAMCNCjob): + t_obj.plot(kind=self.defaults["cncjob_plot_kind"]) else: - obj.plot() + t_obj.plot() t1 = time.time() # DEBUG self.log.debug("%f seconds adding object and plotting." % (t1 - t0)) - self.object_plotted.emit(obj) + self.object_plotted.emit(t_obj) # Send to worker # self.worker.add_task(worker_task, [self]) @@ -3349,8 +3348,8 @@ class App(QtCore.QObject): if self.should_we_save and self.collection.get_list(): msgbox = QtWidgets.QMessageBox() msgbox.setText(_("There are files/objects modified in FlatCAM. " - "\n" - "Do you want to Save the project?")) + "\n" + "Do you want to Save the project?")) msgbox.setWindowTitle(_("Save changes")) msgbox.setWindowIcon(QtGui.QIcon('share/save_as.png')) bt_yes = msgbox.addButton(_('Yes'), QtWidgets.QMessageBox.YesRole) @@ -3554,7 +3553,7 @@ class App(QtCore.QObject): self.set_screen_units(self.defaults['units']) def set_screen_units(self, units): - self.ui.units_label.setText("[" + self.defaults["units"].lower() + "]") + self.ui.units_label.setText("[" + units.lower() + "]") def on_toggle_units(self, no_pref=False): """ @@ -4055,17 +4054,18 @@ class App(QtCore.QObject): spinner_value = self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_spinner.value() self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_slider.setValue(spinner_value) self.defaults['global_alt_sel_fill'] = self.defaults['global_alt_sel_fill'][:7] + \ - (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') + (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') self.defaults['global_alt_sel_line'] = self.defaults['global_alt_sel_line'][:7] + \ - (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') + (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') def on_alt_sf_color_slider(self): slider_value = self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_slider.value() self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_spinner.setValue(slider_value) def on_alt_sl_color_entry(self): - self.defaults['global_alt_sel_line'] = self.ui.general_defaults_form.general_gui_group \ - .alt_sl_color_entry.get_value()[:7] + self.defaults['global_alt_sel_line'][7:9] + self.defaults['global_alt_sel_line'] = \ + self.ui.general_defaults_form.general_gui_group.alt_sl_color_entry.get_value()[:7] + \ + self.defaults['global_alt_sel_line'][7:9] self.ui.general_defaults_form.general_gui_group.alt_sl_color_button.setStyleSheet( "background-color:%s" % str(self.defaults['global_alt_sel_line'])[:7]) @@ -4623,8 +4623,8 @@ class App(QtCore.QObject): :return: None """ - #display the message for the user - #and ask him to click on the desired position + # display the message for the user + # and ask him to click on the desired position self.report_usage("on_set_origin()") self.inform.emit(_('Click to set the origin ...')) @@ -4674,18 +4674,18 @@ class App(QtCore.QObject): obj_init.solid_geometry = obj.solid_geometry try: obj_init.follow_geometry = obj.follow_geometry - except: + except AttributeError: pass try: obj_init.apertures = obj.apertures - except: + except AttributeError: pass try: if obj.tools: obj_init.tools = obj.tools except Exception as e: - log.debug("on_copy_object() --> %s" % str(e)) + log.debug("App.on_copy_object() --> %s" % str(e)) def initialize_excellon(obj_init, app): obj_init.tools = obj.tools @@ -4697,7 +4697,6 @@ class App(QtCore.QObject): obj_init.create_geometry() for obj in self.collection.get_selected(): - obj_name = obj.options["name"] try: @@ -4716,11 +4715,11 @@ class App(QtCore.QObject): obj_init.solid_geometry = obj.solid_geometry try: obj_init.follow_geometry = obj.follow_geometry - except: + except AttributeError: pass try: obj_init.apertures = obj.apertures - except: + except AttributeError: pass try: @@ -4764,8 +4763,8 @@ class App(QtCore.QObject): else: try: obj.options['name'] = text - except: - log.warning("Could not rename the object in the list") + except Exception as e: + log.warning("App.on_rename_object() --> Could not rename the object in the list. --> %s" % str(e)) def convert_any2geo(self): self.report_usage("convert_any2geo()") @@ -4774,11 +4773,11 @@ class App(QtCore.QObject): obj_init.solid_geometry = obj.solid_geometry try: obj_init.follow_geometry = obj.follow_geometry - except: + except AttributeError: pass try: obj_init.apertures = obj.apertures - except: + except AttributeError: pass try: @@ -4802,7 +4801,6 @@ class App(QtCore.QObject): return for obj in self.collection.get_selected(): - obj_name = obj.options["name"] try: @@ -4810,7 +4808,6 @@ class App(QtCore.QObject): self.new_object("geometry", str(obj_name) + "_conv", initialize_excellon) else: self.new_object("geometry", str(obj_name) + "_conv", initialize) - except Exception as e: return "Operation failed: %s" % str(e) @@ -5496,17 +5493,17 @@ class App(QtCore.QObject): else: modifiers = QtWidgets.QApplication.keyboardModifiers() - # If the CTRL key is pressed when the LMB is clicked then if the object is selected it will deselect, - # and if it's not selected then it will be selected + # If the CTRL key is pressed when the LMB is clicked then if the object is selected it will + # deselect, and if it's not selected then it will be selected if modifiers == QtCore.Qt.ControlModifier: - # 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 + # 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 if self.command_active is None: self.select_objects(key='CTRL') self.delete_hover_shape() 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 + # 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 if self.command_active is None: self.select_objects() self.delete_hover_shape() @@ -5545,11 +5542,11 @@ class App(QtCore.QObject): if self.defaults['global_selection_shape'] is True: self.draw_selection_shape(obj) self.collection.set_active(obj.options['name']) - except: + except Exception as e: # the Exception here will happen if we try to select on screen and we have an newly (and empty) # just created Geometry or Excellon object that do not have the xmin, xmax, ymin, ymax options. # In this case poly_obj creation (see above) will fail - pass + log.debug("App.selection_area_handler() --> %s" % str(e)) def select_objects(self, key=None): # list where we store the overlapped objects under our mouse left click position @@ -6281,14 +6278,14 @@ class App(QtCore.QObject): name = self.collection.get_active().options["name"] - filter = "Gerber File (*.GBR);;All Files (*.*)" + _filter_ = "Gerber File (*.GBR);;All Files (*.*)" try: filename, _f = QtWidgets.QFileDialog.getSaveFileName( caption=_("Export Gerber"), directory=self.get_last_save_folder() + '/' + name, - filter=filter) + filter=_filter_) except TypeError: - filename, _f = QtWidgets.QFileDialog.getSaveFileName(caption=_("Export Gerber"), filter=filter) + filename, _f = QtWidgets.QFileDialog.getSaveFileName(caption=_("Export Gerber"), filter=_filter_) filename = str(filename) @@ -6334,14 +6331,15 @@ class App(QtCore.QObject): name = self.collection.get_active().options["name"] - filter = "DXF File (*.DXF);;All Files (*.*)" + _filter_ = "DXF File (*.DXF);;All Files (*.*)" try: filename, _f = QtWidgets.QFileDialog.getSaveFileName( caption=_("Export DXF"), directory=self.get_last_save_folder() + '/' + name, - filter=filter) + filter=_filter_) except TypeError: - filename, _f = QtWidgets.QFileDialog.getSaveFileName(caption=_("Export DXF"), filter=filter) + filename, _f = QtWidgets.QFileDialog.getSaveFileName(caption=_("Export DXF"), + filter=_filter_) filename = str(filename) @@ -6364,12 +6362,13 @@ class App(QtCore.QObject): self.report_usage("on_file_importsvg") App.log.debug("on_file_importsvg()") - filter = "SVG File (*.svg);;All Files (*.*)" + _filter_ = "SVG File (*.svg);;All Files (*.*)" try: filenames, _f = QtWidgets.QFileDialog.getOpenFileNames(caption=_("Import SVG"), - directory=self.get_last_folder(), filter=filter) + directory=self.get_last_folder(), filter=_filter_) except TypeError: - filenames, _f = QtWidgets.QFileDialog.getOpenFileNames(caption=_("Import SVG"), filter=filter) + filenames, _f = QtWidgets.QFileDialog.getOpenFileNames(caption=_("Import SVG"), + filter=_filter_) if type_of_obj is not "geometry" and type_of_obj is not "gerber": type_of_obj = "geometry" @@ -6394,12 +6393,14 @@ class App(QtCore.QObject): self.report_usage("on_file_importdxf") App.log.debug("on_file_importdxf()") - filter = "DXF File (*.DXF);;All Files (*.*)" + _filter_ = "DXF File (*.DXF);;All Files (*.*)" try: filenames, _f = QtWidgets.QFileDialog.getOpenFileNames(caption=_("Import DXF"), - directory=self.get_last_folder(), filter=filter) + directory=self.get_last_folder(), + filter=_filter_) except TypeError: - filenames, _f = QtWidgets.QFileDialog.getOpenFileNames(caption=_("Import DXF"), filter=filter) + filenames, _f = QtWidgets.QFileDialog.getOpenFileNames(caption=_("Import DXF"), + filter=_filter_) if type_of_obj is not "geometry" and type_of_obj is not "gerber": type_of_obj = "geometry" @@ -6414,9 +6415,9 @@ class App(QtCore.QObject): self.worker_task.emit({'fcn': self.import_dxf, 'params': [filename, type_of_obj]}) - ################################################################################################################### - ### The following section has the functions that are displayed are call the Editoe tab CNCJob Tab ################# - ################################################################################################################### + # ################################################################################################################## + # ## The following section has the functions that are displayed and call the Editor tab CNCJob Tab ################# + # ################################################################################################################## def init_code_editor(self, name): # Signals section @@ -6641,9 +6642,8 @@ class App(QtCore.QObject): try: f = open(filename, 'r') f.close() - exists = True except IOError: - exists = False + pass if thread is True: self.worker_task.emit({'fcn': self.save_project, @@ -7366,25 +7366,28 @@ class App(QtCore.QObject): self.inform.emit(_("[success] Opened: %s") % filename) self.progress.emit(100) - def import_image(self, filename, type='gerber', dpi=96, mode='black', mask=[250, 250, 250, 250], outname=None): + def import_image(self, filename, o_type='gerber', dpi=96, mode='black', mask=[250, 250, 250, 250], outname=None): """ Adds a new Geometry Object to the projects and populates it with shapes extracted from the SVG file. :param filename: Path to the SVG file. - :param outname: + :param o_type: type of FlatCAM objeect + :param dpi: dot per inch + :param mode: black or color + :param mask: dictate the level of detail + :param outname: name for the resulting file :return: """ self.report_usage("import_image()") - obj_type = "" - if type is None or type == "geometry": + if o_type is None or o_type == "geometry": obj_type = "geometry" - elif type == "gerber": - obj_type = type + elif o_type == "gerber": + obj_type = o_type else: self.inform.emit(_("[ERROR_NOTCL] Not supported type is picked as parameter. " - "Only Geometry and Gerber are supported")) + "Only Geometry and Gerber are supported")) return def obj_init(geo_obj, app_obj): @@ -7437,7 +7440,8 @@ class App(QtCore.QObject): self.inform.emit(_('[ERROR_NOTCL] Failed to open file: %s') % filename) return "fail" except ParseError as err: - app_obj.inform.emit(_("[ERROR_NOTCL] Failed to parse file: {name}. {error}").format(name=filename, error=str(err))) + app_obj.inform.emit(_("[ERROR_NOTCL] Failed to parse file: {name}. {error}").format(name=filename, + error=str(err))) app_obj.progress.emit(0) self.log.error(str(err)) return "fail" @@ -7467,7 +7471,7 @@ class App(QtCore.QObject): # Object name name = outname or filename.split('/')[-1].split('\\')[-1] - ### Object creation ### + # ## Object creation ### ret = self.new_object("gerber", name, obj_init, autoselected=False) if ret == 'fail': self.inform.emit(_('[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file.')) @@ -7495,8 +7499,6 @@ class App(QtCore.QObject): App.log.debug("open_excellon()") - #self.progress.emit(10) - # How the object should be initialized def obj_init(excellon_obj, app_obj): # self.progress.emit(20) @@ -7523,9 +7525,6 @@ class App(QtCore.QObject): log.debug("Could not create geometry for Excellon object.") return "fail" - # if excellon_obj.is_empty(): - # app_obj.inform.emit("[ERROR_NOTCL] No geometry found in file: " + filename) - # return "fail" for tool in excellon_obj.tools: if excellon_obj.tools[tool]['solid_geometry']: return @@ -7536,26 +7535,23 @@ class App(QtCore.QObject): # Object name name = outname or filename.split('/')[-1].split('\\')[-1] - - ret = self.new_object("excellon", name, obj_init, autoselected=False) - if ret == 'fail': + ret_val = self.new_object("excellon", name, obj_init, autoselected=False) + if ret_val == 'fail': self.inform.emit(_('[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file.')) return - # Register recent file + # Register recent file self.file_opened.emit("excellon", filename) # GUI feedback self.inform.emit(_("[success] Opened: %s") % filename) - # self.progress.emit(100) def open_gcode(self, filename, outname=None): """ Opens a G-gcode file, parses it and creates a new object for it in the program. Thread-safe. - :param outname: Name of the resulting object. None causes the - name to be that of the file. + :param outname: Name of the resulting object. None causes the name to be that of the file. :param filename: G-code file filename :type filename: str :return: None @@ -7565,7 +7561,7 @@ class App(QtCore.QObject): # How the object should be initialized def obj_init(job_obj, app_obj_): """ - + :param job_obj: the resulting object :type app_obj_: App """ assert isinstance(app_obj_, App), \ @@ -7603,8 +7599,8 @@ class App(QtCore.QObject): ret = self.new_object("cncjob", name, obj_init, autoselected=False) if ret == 'fail': self.inform.emit(_("[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")) + "Attempting to create a FlatCAM CNCJob Object from " + "G-Code file failed during processing")) return "fail" # Register recent file @@ -7658,6 +7654,7 @@ class App(QtCore.QObject): :param filename: Name of the file from which to load. :type filename: str + :param run_from_arg: True if run for arguments :return: None """ App.log.debug("Opening project: " + filename) @@ -7689,16 +7686,15 @@ class App(QtCore.QObject): self.file_opened.emit("project", filename) # Clear the current project - ## NOT THREAD SAFE ## + # # NOT THREAD SAFE ## if run_from_arg is True: pass else: self.on_file_new() - #Project options + # Project options self.options.update(d['options']) self.project_filename = filename - # self.ui.units_label.setText("[" + self.options["units"] + "]") self.set_screen_units(self.options["units"]) # Re create objects @@ -7793,32 +7789,6 @@ class App(QtCore.QObject): # Send to worker self.worker_task.emit({'fcn': worker_task, 'params': [obj]}) - - # self.progress.emit(10) - # - # def worker_task(app_obj): - # print "worker task" - # percentage = 0.1 - # try: - # delta = 0.9 / len(self.collection.get_list()) - # except ZeroDivisionError: - # self.progress.emit(0) - # return - # for obj in self.collection.get_list(): - # with self.proc_container.new("Plotting"): - # obj.plot() - # app_obj.object_plotted.emit(obj) - # - # percentage += delta - # self.progress.emit(int(percentage*100)) - # - # self.progress.emit(0) - # self.plots_updated.emit() - # - # # Send to worker - # #self.worker.add_task(worker_task, [self]) - # self.worker_task.emit({'fcn': worker_task, 'params': [self]}) - def register_folder(self, filename): self.defaults["global_last_folder"] = os.path.split(str(filename))[0] @@ -7884,6 +7854,7 @@ class App(QtCore.QObject): Block loop until signal emitted, timeout (ms) elapses or unhandled exception happens in a thread. + :param timeout: time after which the loop is exited :param signal: Signal to wait for. """ loop = QtCore.QEventLoop() @@ -7915,7 +7886,7 @@ class App(QtCore.QObject): if timeout is not None: QtCore.QTimer.singleShot(timeout, report_quit) - #### Block #### + # ### Block #### loop.exec_() # Restore exception management @@ -7980,7 +7951,8 @@ 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 TCL shell. + 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. From bc3da37e8173652e0663d3caca0c17aabb5b2ed1 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 24 May 2019 18:53:33 +0300 Subject: [PATCH 04/23] - added a toggle Grid button to the canvas context menu in the Grids submenu --- FlatCAMApp.py | 9 +++++++++ FlatCAMCommon.py | 1 + README.md | 4 ++++ flatcamEditors/FlatCAMGeoEditor.py | 5 +---- flatcamGUI/FlatCAMGUI.py | 18 +++++++++--------- 5 files changed, 24 insertions(+), 13 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 565713cf..bb1a1c9e 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -5193,6 +5193,14 @@ class App(QtCore.QObject): self.ui.cmenu_gridmenu.clear() sorted_list = sorted(self.defaults["global_grid_context_menu"][str(units)]) + grid_toggle = self.ui.cmenu_gridmenu.addAction(QtGui.QIcon('share/grid32_menu.png'), _("Grid On/Off")) + grid_toggle.setCheckable(True) + if self.grid_status(): + grid_toggle.setChecked(True) + else: + grid_toggle.setChecked(False) + + self.ui.cmenu_gridmenu.addSeparator() for grid in sorted_list: action = self.ui.cmenu_gridmenu.addAction(QtGui.QIcon('share/grid32_menu.png'), "%s" % str(grid)) action.triggered.connect(self.set_grid) @@ -5202,6 +5210,7 @@ class App(QtCore.QObject): grid_delete = self.ui.cmenu_gridmenu.addAction(QtGui.QIcon('share/delete32.png'), _("Delete")) grid_add.triggered.connect(self.on_grid_add) grid_delete.triggered.connect(self.on_grid_delete) + grid_toggle.triggered.connect(lambda: self.ui.grid_snap_btn.trigger()) def set_grid(self): self.ui.grid_gap_x_entry.setText(self.sender().text()) diff --git a/FlatCAMCommon.py b/FlatCAMCommon.py index 2cb9cefb..0e401044 100644 --- a/FlatCAMCommon.py +++ b/FlatCAMCommon.py @@ -6,6 +6,7 @@ # MIT Licence # ############################################################ + class LoudDict(dict): """ A Dictionary with a callback for diff --git a/README.md b/README.md index 09cfb9e1..9f0f4dd7 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing. ================================================= +24.05.2019 + +- added a toggle Grid button to the canvas context menu in the Grids submenu + 23.05.2019 - fixed bug in Gerber editor FCDisk and FCSemiDisc that the resulting geometry was not stored into the '0' aperture where all the solids are stored diff --git a/flatcamEditors/FlatCAMGeoEditor.py b/flatcamEditors/FlatCAMGeoEditor.py index cc5f76e3..16f065b0 100644 --- a/flatcamEditors/FlatCAMGeoEditor.py +++ b/flatcamEditors/FlatCAMGeoEditor.py @@ -3373,10 +3373,7 @@ class FlatCAMGeoEditor(QtCore.QObject): def toolbar_tool_toggle(self, key): self.options[key] = self.sender().isChecked() - if self.options[key] == True: - return 1 - else: - return 0 + return 1 if self.options[key] == True else 0 def clear(self): self.active_tool = None diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index 6e4eea09..b3d87bc9 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -516,9 +516,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.exc_editor_menu.menuAction().setVisible(False) self.exc_editor_menu.setDisabled(True) - ################################ - ### Project Tab Context menu ### - ################################ + # ############################### + # ## Project Tab Context menu ### + # ############################### self.menuproject = QtWidgets.QMenu() self.menuprojectenable = self.menuproject.addAction(QtGui.QIcon('share/replot32.png'), _('Enable Plot')) @@ -535,9 +535,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.menuprojectproperties = self.menuproject.addAction(QtGui.QIcon('share/properties32.png'), _('Properties')) - ################ - ### Splitter ### - ################ + # ############### + # ## Splitter ### + # ############### # IMPORTANT # # The order: SPITTER -> NOTEBOOK -> SNAP TOOLBAR is important and without it the GUI will not be initialized as @@ -1574,9 +1574,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.sh_hlay.addWidget(self.sh_editor) - ############################################################## - ### HERE WE BUILD THE CONTEXT MENU FOR RMB CLICK ON CANVAS ### - ############################################################## + # ############################################################# + # ## HERE WE BUILD THE CONTEXT MENU FOR RMB CLICK ON CANVAS ### + # ############################################################# self.popMenu = FCMenu() self.popmenu_disable = self.popMenu.addAction(QtGui.QIcon('share/clear_plot32.png'), _("Disable")) From ad7222a768486468f82193a9538106ac73869ee8 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 24 May 2019 19:50:59 +0300 Subject: [PATCH 05/23] - added a toggle left panel button to the canvas context menu --- FlatCAMApp.py | 1 + README.md | 1 + flatcamGUI/FlatCAMGUI.py | 6 ++++-- share/disable16.png | Bin 0 -> 377 bytes share/disable32.png | Bin 0 -> 715 bytes share/notebook16.png | Bin 0 -> 199 bytes 6 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 share/disable16.png create mode 100644 share/disable32.png create mode 100644 share/notebook16.png diff --git a/FlatCAMApp.py b/FlatCAMApp.py index bb1a1c9e..0e5c5e02 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -1419,6 +1419,7 @@ class App(QtCore.QObject): # Context Menu self.ui.popmenu_disable.triggered.connect(lambda: self.disable_plots(self.collection.get_selected())) + self.ui.popmenu_panel_toggle.triggered.connect(self.on_toggle_notebook) self.ui.popmenu_new_geo.triggered.connect(self.new_geometry_object) self.ui.popmenu_new_grb.triggered.connect(self.new_gerber_object) diff --git a/README.md b/README.md index 9f0f4dd7..680098d3 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ CAD program, and create G-Code for Isolation routing. 24.05.2019 - added a toggle Grid button to the canvas context menu in the Grids submenu +- added a toggle left panel button to the canvas context menu 23.05.2019 diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index b3d87bc9..065f0536 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -732,7 +732,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.grb_edit_toolbar.addSeparator() self.aperture_move_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/move32.png'), _("Move")) - ### Snap Toolbar ### + # ## Snap Toolbar ### # Snap GRID toolbar is always active to facilitate usage of measurements done on GRID # self.addToolBar(self.snap_toolbar) @@ -1579,7 +1579,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # ############################################################# self.popMenu = FCMenu() - self.popmenu_disable = self.popMenu.addAction(QtGui.QIcon('share/clear_plot32.png'), _("Disable")) + self.popmenu_disable = self.popMenu.addAction(QtGui.QIcon('share/disable32.png'), _("Disable Plot")) + self.popmenu_panel_toggle = self.popMenu.addAction(QtGui.QIcon('share/notebook16.png'), _("Toggle Panel")) + self.popMenu.addSeparator() self.cmenu_newmenu = self.popMenu.addMenu(QtGui.QIcon('share/file32.png'), _("New")) self.popmenu_new_geo = self.cmenu_newmenu.addAction(QtGui.QIcon('share/new_geo32_bis.png'), _("Geometry")) diff --git a/share/disable16.png b/share/disable16.png new file mode 100644 index 0000000000000000000000000000000000000000..ee7f05044f3bd87b891073c21d16894d1758bfe7 GIT binary patch literal 377 zcmV-<0fzpGP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0S-w-K~y+Ttk@yG0RLXP^MI3Z#4%&Sc4!(ibdI37PIi-mpBs8Sp8i-Sb;^aGV?E75r zi4+9A^}q*@2k+zgoooG9(zskL-6e*1#O-e`qlZs1ym-J2 zE&RSHmCP|k6&`HO74+)H(99i-pv%;#D%&}l(Tt;*arP?Nj4Anfjc%eh=U*-V6wCSs XX7DIJ)qMMS00000NkvXXu0mjf$)=fZ literal 0 HcmV?d00001 diff --git a/share/disable32.png b/share/disable32.png new file mode 100644 index 0000000000000000000000000000000000000000..ac2e6bf2eeae22e11aa3fdaa6b1e686e1d557401 GIT binary patch literal 715 zcmV;+0yO=JP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0$@o*K~z{r?bS)h zO<^3z@oOwo8A|5J#+Z~+EGR`ONtwcegz|=kg=C{hQ5KSj1zCw?Bh!v3Q-+0wr7=S? zX3X&YKIeVj`#A1BU9b1;THIfKde8Ip-gExvJpc2YQX~Ic_G49cSf8xMcQl1jo#MqC zMVO)@MqoCUVlif*KiWKL5#z7}5AYMtzrcs)@ef?bCJaNH#fy7#FQQwRi|&XSjP-Z| z|K|%1VmMlzzSxQ0h((-3XH-j1oP(>HMp5w5?-p3CKWjZ3Kc zd*LHL3!lb5JjV(6M2ZrN@CGj9G`_+n_f`C>bihhHg?%7*I5(MU@pVoc^D4&UpW^=R z`x^^+ivyU4F_?lCIFD;cza5o&r`7TC`>NTXx8d@{C-Vt+up1U-;&S-6UE&Tm6!}*) xO}iISOBzMQ#3B}jQJvxkEC0c3q@F32egWv_pu;dU0*(Lx002ovPDHLkV1k-7NWK67 literal 0 HcmV?d00001 diff --git a/share/notebook16.png b/share/notebook16.png new file mode 100644 index 0000000000000000000000000000000000000000..f77ccaf7059a70091eea0fe11f52c8b7adffbf1e GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!5B{$#}EtuWQmdo_7f%44`_3;elb75)M2UM zW1w)7!C#?{^T@6QIhGQK%ry)*874fN@34ohiQ>iEdyciWL6 pnjui6;|9Z9UIjLOsRIWX7<4`u{MX5px(T$0!PC{xWt~$(695KpI* Date: Thu, 30 May 2019 21:05:12 +0300 Subject: [PATCH 06/23] - editing a multi geometry will no longer pop-up a Tcl window - solved issue #292 where a new geometry renamed with many underscores failed to store the name in a saved project - the name for the saved projects are updated to the current time and not to the time of the app startup - some PEP8 changes related to comments starting with only one '#' symbol --- FlatCAMApp.py | 203 ++++++++------- FlatCAMCommon.py | 4 +- FlatCAMObj.py | 31 ++- FlatCAMPostProc.py | 4 +- FlatCAMProcess.py | 4 +- FlatCAMTool.py | 4 +- FlatCAMTranslation.py | 4 +- FlatCAMWorker.py | 4 +- ObjectCollection.py | 29 ++- README.md | 7 + camlib.py | 311 +++++++++++------------ flatcamEditors/FlatCAMExcEditor.py | 42 +-- flatcamEditors/FlatCAMGeoEditor.py | 34 +-- flatcamEditors/FlatCAMGrbEditor.py | 28 +- flatcamGUI/FlatCAMGUI.py | 248 +++++++++--------- flatcamGUI/GUIElements.py | 8 +- flatcamGUI/ObjectUI.py | 68 ++--- flatcamGUI/PlotCanvas.py | 6 +- flatcamGUI/VisPyCanvas.py | 4 +- flatcamGUI/VisPyPatches.py | 4 +- flatcamGUI/VisPyTesselators.py | 4 +- flatcamGUI/VisPyVisuals.py | 4 +- flatcamParsers/ParseDXF.py | 4 +- flatcamParsers/ParseDXF_Spline.py | 4 +- flatcamParsers/ParseFont.py | 12 +- flatcamParsers/ParseSVG.py | 4 +- flatcamTools/ToolCalculators.py | 42 +-- flatcamTools/ToolDblSided.py | 28 +- flatcamTools/ToolFilm.py | 6 +- flatcamTools/ToolImage.py | 8 +- flatcamTools/ToolMeasurement.py | 8 +- flatcamTools/ToolMove.py | 4 +- flatcamTools/ToolNonCopperClear.py | 16 +- flatcamTools/ToolPDF.py | 8 +- flatcamTools/ToolPaint.py | 24 +- flatcamTools/ToolPanelize.py | 6 +- flatcamTools/ToolPcbWizard.py | 8 +- flatcamTools/ToolProperties.py | 6 +- flatcamTools/ToolShell.py | 4 +- flatcamTools/ToolSolderPaste.py | 42 +-- flatcamTools/ToolSub.py | 4 +- flatcamTools/ToolTransform.py | 30 +-- make_win.py | 8 +- postprocessors/Paste_1.py | 4 +- postprocessors/Repetier.py | 4 +- postprocessors/Roland_MDX_20.py | 4 +- postprocessors/Toolchange_Custom.py | 4 +- postprocessors/Toolchange_Probe_MACH3.py | 4 +- postprocessors/Toolchange_manual.py | 4 +- postprocessors/default.py | 4 +- postprocessors/grbl_11.py | 4 +- postprocessors/grbl_laser.py | 4 +- postprocessors/hpgl.py | 4 +- postprocessors/line_xyz.py | 4 +- postprocessors/marlin.py | 4 +- 55 files changed, 695 insertions(+), 684 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 0e5c5e02..f2570f42 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -1,10 +1,10 @@ -# ########################################################### +# ######################################################### ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # Author: Juan Pablo Caram (c) # # Date: 2/5/2014 # # MIT Licence # -# ########################################################### +# ######################################################### ## import urllib.request, urllib.parse, urllib.error import getopt @@ -25,9 +25,9 @@ import gc from xml.dom.minidom import parseString as parse_xml_string -# ####################################### -# # Imports part of FlatCAM ## -# ####################################### +# ##################################### ## +# # Imports part of FlatCAM # ## +# ##################################### ## from ObjectCollection import * from FlatCAMObj import * from flatcamGUI.PlotCanvas import * @@ -58,9 +58,9 @@ fcTranslate.apply_language('strings') if '_' not in builtins.__dict__: _ = gettext.gettext -# ####################################### -# # App ## -# ####################################### +# ##################################### ## +# # App # ## +# ##################################### ## class App(QtCore.QObject): @@ -84,7 +84,7 @@ class App(QtCore.QObject): elif opt == '--shellfile': cmd_line_shellfile = arg - # Logging ## + # Logging # ## log = logging.getLogger('base') log.setLevel(logging.DEBUG) # log.setLevel(logging.WARNING) @@ -94,8 +94,8 @@ class App(QtCore.QObject): log.addHandler(handler) # Version - version = 8.917 - version_date = "2019/05/22" + version = 8.918 + version_date = "2019/06/11" beta = True # current date now @@ -120,9 +120,9 @@ class App(QtCore.QObject): # flag is True if saving action has been triggered save_in_progress = False - # ################# - # # Signals ## - # ################# + # ############### ## + # # Signals # ## + # ############### ## # Inform the user # Handled by: @@ -191,9 +191,9 @@ class App(QtCore.QObject): self.main_thread = QtWidgets.QApplication.instance().thread() - # ################## - # ## OS-specific ### - # ################## + # ################ ## + # # ## OS-specific # ## + # ################ ## # Folder for user settings. if sys.platform == 'win32': @@ -209,9 +209,9 @@ class App(QtCore.QObject): self.data_path = os.path.expanduser('~') + '/.FlatCAM' self.os = 'unix' - # ############################## - # ## Setup folders and files ### - # ############################## + # ############################ ## + # # ## Setup folders and files # ## + # ############################ ## if not os.path.exists(self.data_path): os.makedirs(self.data_path) @@ -272,9 +272,9 @@ class App(QtCore.QObject): # variable to store mouse coordinates self.mouse = [0, 0] - # ################### - # # Initialize GUI ## - # ################### + # ################# ## + # # Initialize GUI # ## + # ################# ## # FlatCAM colors used in plotting self.FC_light_green = '#BBF268BF' @@ -291,9 +291,9 @@ class App(QtCore.QObject): self.ui.geom_update[int, int, int, int, int].connect(self.save_geometry) self.ui.final_save.connect(self.final_save) - # ############# - # ### Data #### - # ############# + # ########### ## + # # ## Data ## ## + # ########### ## self.recent = [] self.clipboard = QtWidgets.QApplication.clipboard() self.proc_container = FCVisibleProcessContainer(self.ui.activity_view) @@ -566,9 +566,9 @@ class App(QtCore.QObject): } - # ############################ - # ### LOAD POSTPROCESSORS #### - # ############################ + # ########################## ## + # # ## LOAD POSTPROCESSORS ## ## + # ########################## ## self.postprocessors = load_postprocessors(self) @@ -585,9 +585,9 @@ class App(QtCore.QObject): self.ui.excellon_defaults_form.excellon_opt_group.pp_excellon_name_cb.addItem(name) - # ############################ - # ### LOAD LANGUAGES #### - # ############################ + # ########################## ## + # # ## LOAD LANGUAGES ## ## + # ########################## ## self.languages = fcTranslate.load_languages() for name in sorted(self.languages.values()): @@ -880,16 +880,16 @@ class App(QtCore.QObject): "tools_solderpaste_pp": 'Paste_1' }) - # ############################## - # ## Load defaults from file ### - # ############################## + # ############################ ## + # # ## Load defaults from file # ## + # ############################ ## if user_defaults: self.load_defaults(filename='current_defaults') - # ########################### - # #### APPLY APP LANGUAGE ### - # ########################### + # ######################### ## + # #### APPLY APP LANGUAGE # ## + # ######################### ## ret_val = fcTranslate.apply_language('strings') @@ -902,9 +902,9 @@ class App(QtCore.QObject): log.debug("App.__init__() --> Applied %s language." % str(ret_val).capitalize()) - # ################################## - # ## CREATE UNIQUE SERIAL NUMBER ### - # ################################## + # ################################ ## + # # ## CREATE UNIQUE SERIAL NUMBER # ## + # ################################ ## chars = 'abcdefghijklmnopqrstuvwxyz0123456789' if self.defaults['global_serial'] == 0 or len(str(self.defaults['global_serial'])) < 10: @@ -1171,14 +1171,14 @@ class App(QtCore.QObject): self.tools_form = None self.on_options_combo_change(0) # Will show the initial form - # ## Define OBJECT COLLECTION ### + # # ## Define OBJECT COLLECTION # ## self.collection = ObjectCollection(self) self.ui.project_tab_layout.addWidget(self.collection.view) - # ## + # # ## self.log.debug("Finished creating Object Collection.") - # ## Initialize the color box's color in Preferences -> Global -> Color + # # ## Initialize the color box's color in Preferences -> Global -> Color # Init Plot Colors self.ui.general_defaults_form.general_gui_group.pf_color_entry.set_value(self.defaults['global_plot_fill']) self.ui.general_defaults_form.general_gui_group.pf_color_button.setStyleSheet( @@ -1241,9 +1241,9 @@ class App(QtCore.QObject): self.defaults['global_proj_item_dis_color']) self.ui.general_defaults_form.general_gui_group.proj_color_dis_button.setStyleSheet( "background-color:%s" % str(self.defaults['global_proj_item_dis_color'])[:7]) - # ### End of Data #### + # # ## End of Data ## ## - # ### Plot Area #### + # # ## Plot Area ## ## start_plot_time = time.time() # debug self.plotcanvas = PlotCanvas(self.ui.right_layout, self) @@ -1270,27 +1270,27 @@ class App(QtCore.QObject): end_plot_time = time.time() self.log.debug("Finished Canvas initialization in %s seconds." % (str(end_plot_time - start_plot_time))) - # ## EDITOR section + # # ## EDITOR section self.geo_editor = FlatCAMGeoEditor(self, disabled=True) self.exc_editor = FlatCAMExcEditor(self) self.grb_editor = FlatCAMGrbEditor(self) - # ### Adjust tabs width #### + # # ## Adjust tabs width ## ## # self.collection.view.setMinimumWidth(self.ui.options_scroll_area.widget().sizeHint().width() + # self.ui.options_scroll_area.verticalScrollBar().sizeHint().width()) self.collection.view.setMinimumWidth(290) self.log.debug("Finished adding FlatCAM Editor's.") - # ### Worker #### + # # ## Worker ## ## if self.defaults["global_worker_number"]: self.workers = WorkerStack(workers_number=int(self.defaults["global_worker_number"])) else: self.workers = WorkerStack(workers_number=2) self.worker_task.connect(self.workers.add_task) - # ## Signal handling ### - # ## Custom signals + # # ## Signal handling # ## + # # ## Custom signals self.inform.connect(self.info) self.app_quit.connect(self.quit_application) self.message.connect(self.message_dialog) @@ -1303,8 +1303,8 @@ class App(QtCore.QObject): self.file_opened.connect(lambda kind, filename: self.register_folder(filename)) self.file_saved.connect(lambda kind, filename: self.register_save_folder(filename)) - # ## Standard signals - # ## Menu + # # ## Standard signals + # # ## Menu self.ui.menufilenewproject.triggered.connect(self.on_file_new_click) self.ui.menufilenewgeo.triggered.connect(self.new_geometry_object) self.ui.menufilenewgrb.triggered.connect(self.new_gerber_object) @@ -1445,9 +1445,9 @@ class App(QtCore.QObject): self.ui.pref_export_button.clicked.connect(self.on_export_preferences) self.ui.pref_open_button.clicked.connect(self.on_preferences_open_folder) - # ############################## - # ## GUI PREFERENCES SIGNALS ### - # ############################## + # ############################ ## + # # ## GUI PREFERENCES SIGNALS # ## + # ############################ ## self.ui.general_options_form.general_app_group.units_radio.group_toggle_fn = self.on_toggle_units self.ui.general_defaults_form.general_app_group.language_apply_btn.clicked.connect( lambda: fcTranslate.on_language_apply_click(self, restart=True) @@ -1455,9 +1455,9 @@ class App(QtCore.QObject): self.ui.general_defaults_form.general_app_group.units_radio.activated_custom.connect( lambda: self.on_toggle_units(no_pref=False)) - # ############################## - # ## GUI PREFERENCES SIGNALS ### - # ############################## + # ############################ ## + # # ## GUI PREFERENCES SIGNALS # ## + # ############################ ## # Setting plot colors signals self.ui.general_defaults_form.general_gui_group.pf_color_entry.editingFinished.connect( @@ -1559,20 +1559,20 @@ class App(QtCore.QObject): else: self.ui.splitter.setSizes([0, 1]) - # ################### - # ## Other setups ### - # ################### + # ################# ## + # # ## Other setups # ## + # ################# ## # Sets up FlatCAMObj, FCProcess and FCProcessContainer. self.setup_obj_classes() self.setup_recent_items() self.setup_component_editor() - # ############ - # ## Shell ### - # ############ + # ########## ## + # # ## Shell # ## + # ########## ## - # ## + # # ## # Auto-complete KEYWORDS self.tcl_commands_list = ['add_circle', 'add_poly', 'add_polygon', 'add_polyline', 'add_rectangle', 'aligndrill', 'clear', @@ -1809,9 +1809,9 @@ class App(QtCore.QObject): else: self.ui.shell_dock.hide() - # ######################## - # ## Tools and Plugins ### - # ######################## + # ###################### ## + # # ## Tools and Plugins # ## + # ###################### ## self.dblsidedtool = None self.measurement_tool = None @@ -1833,7 +1833,7 @@ class App(QtCore.QObject): # always install tools only after the shell is initialized because the self.inform.emit() depends on shell self.install_tools() - # ## System Font Parsing ### + # # ## System Font Parsing # ## # self.f_parse = ParseFont(self) # self.parse_system_fonts() @@ -1847,9 +1847,9 @@ class App(QtCore.QObject): print("ERROR: ", ext) sys.exit(2) - # ########################## - # ### Check for updates #### - # ########################## + # ######################## ## + # # ## Check for updates ## ## + # ######################## ## # Separate thread (Not worker) # Check for updates on startup but only if the user consent and the app is not in Beta version @@ -1862,9 +1862,9 @@ class App(QtCore.QObject): 'params': []}) self.thr2.start(QtCore.QThread.LowPriority) - # ################################### - # ### Variables for global usage #### - # ################################### + # ################################# ## + # # ## Variables for global usage ## ## + # ################################# ## # coordinates for relative position display self.rel_point1 = (0, 0) @@ -1936,8 +1936,8 @@ class App(QtCore.QObject): self.isHovering = False self.notHovering = True - # ## Save defaults to factory_defaults.FlatConfig file ### - # ## It's done only once after install ############# + # # ## Save defaults to factory_defaults.FlatConfig file # ## + # # ## It's done only once after install ########### ## factory_file = open(self.data_path + '/factory_defaults.FlatConfig') fac_def_from_file = factory_file.read() factory_defaults = json.loads(fac_def_from_file) @@ -2754,6 +2754,10 @@ class App(QtCore.QObject): defaults_file_content = None + self.date = str(datetime.today()).rpartition('.')[0] + self.date = ''.join(c for c in self.date if c not in ':-') + self.date = self.date.replace(' ', '_') + filter = "Config File (*.FlatConfig);;All Files (*.*)" try: filename, _f = QtWidgets.QFileDialog.getSaveFileName( @@ -2894,7 +2898,7 @@ class App(QtCore.QObject): t0 = time.time() # Debug - ## Create object + # ## Create object classdict = { "gerber": FlatCAMGerber, "excellon": FlatCAMExcellon, @@ -4229,7 +4233,7 @@ class App(QtCore.QObject): pass if current_layout == 'standard': - ### TOOLBAR INSTALLATION ### + # ## TOOLBAR INSTALLATION # ## self.ui.toolbarfile = QtWidgets.QToolBar('File Toolbar') self.ui.toolbarfile.setObjectName('File_TB') self.ui.addToolBar(self.ui.toolbarfile) @@ -4273,7 +4277,7 @@ class App(QtCore.QObject): self.ui.corner_snap_btn.setVisible(False) self.ui.snap_magnet.setVisible(False) elif current_layout == 'compact': - ### TOOLBAR INSTALLATION ### + # ## TOOLBAR INSTALLATION # ## self.ui.toolbarfile = QtWidgets.QToolBar('File Toolbar') self.ui.toolbarfile.setObjectName('File_TB') self.ui.addToolBar(Qt.LeftToolBarArea, self.ui.toolbarfile) @@ -4379,7 +4383,7 @@ class App(QtCore.QObject): self.ui.code_editor.setPlainText(self.gcode_edited) file.close() - def handleSaveGCode(self,name=None, filt=None): + def handleSaveGCode(self, name=None, filt=None): self.report_usage("handleSaveGCode()") if filt: @@ -4469,7 +4473,7 @@ class App(QtCore.QObject): cursor.endEditBlock() def on_tool_add_keypress(self): - ## Current application units in Upper Case + # ## Current application units in Upper Case self.units = self.ui.general_defaults_form.general_app_group.units_radio.get_value().upper() notebook_widget_name = self.ui.notebook.currentWidget().objectName() @@ -5218,7 +5222,7 @@ class App(QtCore.QObject): self.ui.grid_gap_y_entry.setText(self.sender().text()) def on_grid_add(self): - ## Current application units in lower Case + # ## Current application units in lower Case units = self.ui.general_defaults_form.general_app_group.units_radio.get_value().lower() grid_add_popup = FCInputDialog(title=_("New Grid ..."), @@ -5245,7 +5249,7 @@ class App(QtCore.QObject): _("[WARNING_NOTCL] Adding New Grid cancelled ...")) def on_grid_delete(self): - ## Current application units in lower Case + # ## Current application units in lower Case units = self.ui.general_defaults_form.general_app_group.units_radio.get_value().lower() grid_del_popup = FCInputDialog(title="Delete Grid ...", @@ -5843,7 +5847,7 @@ class App(QtCore.QObject): if self.call_source != 'app': self.editor2object(cleanup=True) - ### EDITOR section + # ## EDITOR section self.geo_editor = FlatCAMGeoEditor(self, disabled=True) self.exc_editor = FlatCAMExcEditor(self) self.grb_editor = FlatCAMGrbEditor(self) @@ -6114,10 +6118,13 @@ class App(QtCore.QObject): self.file_saved.emit("SVG", filename) def on_file_exportpng(self): - self.report_usage("on_file_exportpng") App.log.debug("on_file_exportpng()") + self.date = str(datetime.today()).rpartition('.')[0] + self.date = ''.join(c for c in self.date if c not in ':-') + self.date = self.date.replace(' ', '_') + image = _screenshot() data = np.asarray(image) if not data.ndim == 3 and data.shape[-1] in (3, 4): @@ -6425,9 +6432,9 @@ class App(QtCore.QObject): self.worker_task.emit({'fcn': self.import_dxf, 'params': [filename, type_of_obj]}) - # ################################################################################################################## - # ## The following section has the functions that are displayed and call the Editor tab CNCJob Tab ################# - # ################################################################################################################## + # ################################################################################################################ ## + # # ## The following section has the functions that are displayed and call the Editor tab CNCJob Tab ############### ## + # ################################################################################################################ ## def init_code_editor(self, name): # Signals section @@ -6634,6 +6641,10 @@ class App(QtCore.QObject): self.report_usage("on_file_saveprojectas") + self.date = str(datetime.today()).rpartition('.')[0] + self.date = ''.join(c for c in self.date if c not in ':-') + self.date = self.date.replace(' ', '_') + filter_ = "FlatCAM Project (*.FlatPrj);; All Files (*.*)" try: filename, _f = QtWidgets.QFileDialog.getSaveFileName( @@ -7481,7 +7492,7 @@ class App(QtCore.QObject): # Object name name = outname or filename.split('/')[-1].split('\\')[-1] - # ## Object creation ### + # # ## Object creation # ## ret = self.new_object("gerber", name, obj_init, autoselected=False) if ret == 'fail': self.inform.emit(_('[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file.')) @@ -7696,7 +7707,7 @@ class App(QtCore.QObject): self.file_opened.emit("project", filename) # Clear the current project - # # NOT THREAD SAFE ## + # # NOT THREAD SAFE # ## if run_from_arg is True: pass else: @@ -7896,7 +7907,7 @@ class App(QtCore.QObject): if timeout is not None: QtCore.QTimer.singleShot(timeout, report_quit) - # ### Block #### + # # ## Block ## ## loop.exec_() # Restore exception management @@ -8201,7 +8212,7 @@ The normal flow when working in FlatCAM is the following:

"&" + urllib.parse.urlencode(no_ststs_dict["global_ststs"]) App.log.debug("Checking for updates @ %s" % full_url) - ### Get the data + # ## Get the data try: f = urllib.request.urlopen(full_url) except: @@ -8221,7 +8232,7 @@ The normal flow when working in FlatCAM is the following:

f.close() - ### Latest version? + # ## Latest version? if self.version >= data["version"]: App.log.debug("FlatCAM is up to date!") self.inform.emit(_("[success] FlatCAM is up to date!")) @@ -8375,7 +8386,7 @@ The normal flow when working in FlatCAM is the following:

self.save_in_progress = True with self.proc_container.new(_("Saving FlatCAM Project")) as proc: - ## Capture the latest changes + # Capture the latest changes # Current object try: self.collection.get_active().read_form() diff --git a/FlatCAMCommon.py b/FlatCAMCommon.py index 0e401044..c619acf2 100644 --- a/FlatCAMCommon.py +++ b/FlatCAMCommon.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # Author: Juan Pablo Caram (c) # # Date: 2/5/2014 # # MIT Licence # -############################################################ +# ########################################################## ## class LoudDict(dict): diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 7607a6eb..e5dc3409 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # Author: Juan Pablo Caram (c) # # Date: 2/5/2014 # # MIT Licence # -############################################################ +# ########################################################## ## import copy import inspect # TODO: For debugging only. @@ -35,9 +35,9 @@ class ValidationError(Exception): self.errors = errors -# ####################################### -# # FlatCAMObj ## -# ####################################### +# ##################################### ## +# # FlatCAMObj # ## +# ##################################### ## class FlatCAMObj(QtCore.QObject): @@ -2342,7 +2342,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): "Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj) app_obj.progress.emit(20) - ### Add properties to the object + # ## Add properties to the object # get the tool_table items in a list of row items tool_table_items = self.get_selected_tools_table_items() @@ -2436,7 +2436,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): "Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj) app_obj.progress.emit(20) - ### Add properties to the object + # ## Add properties to the object # get the tool_table items in a list of row items tool_table_items = self.get_selected_tools_table_items() @@ -2561,7 +2561,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): # insert an information only element in the front tool_table_items.insert(0, [_("Tool_nr"), _("Diameter"), _("Drills_Nr"), _("Slots_Nr")]) - ### Add properties to the object + # ## Add properties to the object job_obj.origin_kind = 'excellon' @@ -2932,18 +2932,18 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): """ pts = [] - ## Iterable: descend into each item. + # Iterable: descend into each item. try: for subo in o: pts += FlatCAMGeometry.get_pts(subo) - ## Non-iterable + # Non-iterable except TypeError: if o is not None: if type(o) == MultiPolygon: for poly in o: pts += FlatCAMGeometry.get_pts(poly) - ## Descend into .exerior and .interiors + # ## Descend into .exerior and .interiors elif type(o) == Polygon: pts += FlatCAMGeometry.get_pts(o.exterior) for i in o.interiors: @@ -2951,7 +2951,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): elif type(o) == MultiLineString: for line in o: pts += FlatCAMGeometry.get_pts(line) - ## Has .coords: list them. + # ## Has .coords: list them. else: pts += list(o.coords) else: @@ -3033,6 +3033,9 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): # engine of FlatCAM. Most likely are generated by some of tools and are special cases of geometries. self. special_group = None + self.old_pp_state = '' + self.old_toolchangeg_state = '' + # Attributes to be included in serialization # Always append to it because it carries contents # from predecessors. @@ -3101,7 +3104,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): self.ui.geo_tools_table.setCellWidget(row_no, 3, type_item) self.ui.geo_tools_table.setCellWidget(row_no, 4, tool_type_item) - ### REMEMBER: THIS COLUMN IS HIDDEN IN OBJECTUI.PY ### + # ## REMEMBER: THIS COLUMN IS HIDDEN IN OBJECTUI.PY # ## self.ui.geo_tools_table.setItem(row_no, 5, tool_uid_item) # Tool unique ID self.ui.geo_tools_table.setCellWidget(row_no, 6, plot_item) @@ -5379,7 +5382,7 @@ class FlatCAMCNCjob(FlatCAMObj, CNCjob): self.ui.cnc_tools_table.setItem(row_no, 3, type_item) # Toolpath Type self.ui.cnc_tools_table.setItem(row_no, 4, tool_type_item) # Tool Type - ### REMEMBER: THIS COLUMN IS HIDDEN IN OBJECTUI.PY ### + # ## REMEMBER: THIS COLUMN IS HIDDEN IN OBJECTUI.PY # ## self.ui.cnc_tools_table.setItem(row_no, 5, tool_uid_item) # Tool unique ID) self.ui.cnc_tools_table.setCellWidget(row_no, 6, plot_item) diff --git a/FlatCAMPostProc.py b/FlatCAMPostProc.py index 80c4e9b7..26eb0e8d 100644 --- a/FlatCAMPostProc.py +++ b/FlatCAMPostProc.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Matthieu Berthomé # # Date: 5/26/2017 # # MIT Licence # -############################################################ +# ########################################################## ## from importlib.machinery import SourceFileLoader import os diff --git a/FlatCAMProcess.py b/FlatCAMProcess.py index 1556ab4a..8e902f97 100644 --- a/FlatCAMProcess.py +++ b/FlatCAMProcess.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # Author: Juan Pablo Caram (c) # # Date: 2/5/2014 # # MIT Licence # -############################################################ +# ########################################################## ## from flatcamGUI.FlatCAMGUI import FlatCAMActivityView from PyQt5 import QtCore diff --git a/FlatCAMTool.py b/FlatCAMTool.py index db313cac..f5c77497 100644 --- a/FlatCAMTool.py +++ b/FlatCAMTool.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # Author: Juan Pablo Caram (c) # # Date: 2/5/2014 # # MIT Licence # -############################################################ +# ########################################################## ## from PyQt5 import QtGui, QtCore, QtWidgets, QtWidgets from PyQt5.QtCore import Qt diff --git a/FlatCAMTranslation.py b/FlatCAMTranslation.py index 99ef91e4..48406897 100644 --- a/FlatCAMTranslation.py +++ b/FlatCAMTranslation.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## import os import sys diff --git a/FlatCAMWorker.py b/FlatCAMWorker.py index 2ccb0d9a..b7041379 100644 --- a/FlatCAMWorker.py +++ b/FlatCAMWorker.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # Author: Juan Pablo Caram (c) # # Date: 2/5/2014 # # MIT Licence # -############################################################ +# ########################################################## ## from PyQt5 import QtCore diff --git a/ObjectCollection.py b/ObjectCollection.py index d7706a4b..8454be93 100644 --- a/ObjectCollection.py +++ b/ObjectCollection.py @@ -1,14 +1,14 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # Author: Juan Pablo Caram (c) # # Date: 2/5/2014 # # MIT Licence # -############################################################ +# ########################################################## ## -############################################################ +# ########################################################## ## # File modified by: Dennis Hayrullin # -############################################################ +# ########################################################## ## # from PyQt5.QtCore import QModelIndex from FlatCAMObj import * @@ -210,7 +210,7 @@ class ObjectCollection(QtCore.QAbstractItemModel): QtCore.QAbstractItemModel.__init__(self) - ### Icons for the list view + # ## Icons for the list view self.icons = {} for kind in ObjectCollection.icon_files: self.icons[kind] = QtGui.QPixmap(ObjectCollection.icon_files[kind]) @@ -230,7 +230,7 @@ class ObjectCollection(QtCore.QAbstractItemModel): # print i.data(0) # i.append_child(TreeItem(["empty"])) - ### Data ### + # ## Data # ## self.checked_indexes = [] # Names of objects that are expected to become available. @@ -245,7 +245,7 @@ class ObjectCollection(QtCore.QAbstractItemModel): self.app = app - ### View + # ## View self.view = KeySensitiveListView(app) self.view.setModel(self) @@ -261,7 +261,7 @@ class ObjectCollection(QtCore.QAbstractItemModel): font.setFamily("Seagoe UI") self.view.setFont(font) - ## GUI Events + # ## 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) @@ -399,11 +399,11 @@ class ObjectCollection(QtCore.QAbstractItemModel): if index.isValid(): obj = index.internalPointer().obj if obj: - old_name = str(obj.options['name']) + old_name = obj.options['name'] new_name = str(data) if old_name != new_name and new_name != '': # rename the object - obj.options["name"] = str(data) + obj.options["name"] = deepcopy(data) # update the SHELL auto-completer model data try: @@ -411,11 +411,12 @@ class ObjectCollection(QtCore.QAbstractItemModel): self.app.myKeywords.append(new_name) self.app.shell._edit.set_model_data(self.app.myKeywords) self.app.ui.code_editor.set_model_data(self.app.myKeywords) - except: + except Exception as e: log.debug( - "setData() --> Could not remove the old object name from auto-completer model list") + "setData() --> Could not remove the old object name from auto-completer model list. %s" % + str(e)) - obj.build_ui() + # obj.build_ui() self.app.inform.emit(_("Object renamed from {old} to {new}").format(old=old_name, new=new_name)) @@ -452,7 +453,7 @@ class ObjectCollection(QtCore.QAbstractItemModel): # Prevent same name while name in self.get_names(): - ## Create a new name + # ## Create a new name # Ends with number? FlatCAMApp.App.log.debug("new_object(): Object name (%s) exists, changing." % name) match = re.search(r'(.*[^\d])?(\d+)$', name) diff --git a/README.md b/README.md index 680098d3..80dfca43 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,13 @@ CAD program, and create G-Code for Isolation routing. ================================================= +30.05.2019 + +- editing a multi geometry will no longer pop-up a Tcl window +- solved issue #292 where a new geometry renamed with many underscores failed to store the name in a saved project +- the name for the saved projects are updated to the current time and not to the time of the app startup +- some PEP8 changes related to comments starting with only one '#' symbol + 24.05.2019 - added a toggle Grid button to the canvas context menu in the Grids submenu diff --git a/camlib.py b/camlib.py index a2b1051a..fc2956f0 100644 --- a/camlib.py +++ b/camlib.py @@ -1,12 +1,11 @@ -############################################################ -# FlatCAM: 2D Post-processing for Manufacturing # -# http://flatcam.org # -# Author: Juan Pablo Caram (c) # -# Date: 2/5/2014 # -# MIT Licence # -############################################################ +# ########################################################## ## +# FlatCAM: 2D Post-processing for Manufacturing # +# http://flatcam.org # +# Author: Juan Pablo Caram (c) # +# Date: 2/5/2014 # +# MIT Licence # +# ########################################################## ## -#import traceback from io import StringIO @@ -58,6 +57,12 @@ if platform.architecture()[0] == '64bit': from ortools.constraint_solver import pywrapcp from ortools.constraint_solver import routing_enums_pb2 +import gettext +import FlatCAMTranslation as fcTranslate + +fcTranslate.apply_language('strings') +import builtins + log = logging.getLogger('base2') log.setLevel(logging.DEBUG) @@ -66,11 +71,6 @@ handler = logging.StreamHandler() handler.setFormatter(formatter) log.addHandler(handler) -import gettext -import FlatCAMTranslation as fcTranslate - -fcTranslate.apply_language('strings') -import builtins if '_' not in builtins.__dict__: _ = gettext.gettext @@ -132,21 +132,20 @@ class Geometry(object): :param radius: Radius of the circle. :return: None """ - # TODO: Decide what solid_geometry is supposed to be and how we append to it. if self.solid_geometry is None: self.solid_geometry = [] if type(self.solid_geometry) is list: - self.solid_geometry.append(Point(origin).buffer(radius, int(int(self.geo_steps_per_circle) / 4))) + self.solid_geometry.append(Point(origin).buffer( + radius, int(int(self.geo_steps_per_circle) / 4))) return try: - self.solid_geometry = self.solid_geometry.union(Point(origin).buffer(radius, - int(int(self.geo_steps_per_circle) / 4))) - except: - #print "Failed to run union on polygons." - log.error("Failed to run union on polygons.") + self.solid_geometry = self.solid_geometry.union(Point(origin).buffer( + radius, int(int(self.geo_steps_per_circle) / 4))) + except Exception as e: + log.error("Failed to run union on polygons. %s" % str(e)) return def add_polygon(self, points): @@ -165,9 +164,8 @@ class Geometry(object): try: self.solid_geometry = self.solid_geometry.union(Polygon(points)) - except: - #print "Failed to run union on polygons." - log.error("Failed to run union on polygons.") + except Exception as e: + log.error("Failed to run union on polygons. %s" % str(e)) return def add_polyline(self, points): @@ -186,13 +184,11 @@ class Geometry(object): try: self.solid_geometry = self.solid_geometry.union(LineString(points)) - except: - #print "Failed to run union on polygons." - log.error("Failed to run union on polylines.") + except Exception as e: + log.error("Failed to run union on polylines. %s" % str(e)) return def is_empty(self): - if isinstance(self.solid_geometry, BaseGeometry): return self.solid_geometry.is_empty @@ -213,18 +209,18 @@ class Geometry(object): if self.solid_geometry is None: self.solid_geometry = [] - #pathonly should be allways True, otherwise polygons are not subtracted + # pathonly should be allways True, otherwise polygons are not subtracted flat_geometry = self.flatten(pathonly=True) log.debug("%d paths" % len(flat_geometry)) - polygon=Polygon(points) - toolgeo=cascaded_union(polygon) - diffs=[] + polygon = Polygon(points) + toolgeo = cascaded_union(polygon) + diffs = [] for target in flat_geometry: if type(target) == LineString or type(target) == LinearRing: diffs.append(target.difference(toolgeo)) else: log.warning("Not implemented.") - self.solid_geometry=cascaded_union(diffs) + self.solid_geometry = cascaded_union(diffs) def bounds(self): """ @@ -336,7 +332,8 @@ class Geometry(object): poly, which can can be iterable, contain iterable of, or be itself an implementer of .contains(). - :param poly: See description + :param point: See description + :param geoset: a polygon or list of polygons where to find if the param point is contained :return: Polygon containing point or None. """ @@ -366,12 +363,12 @@ class Geometry(object): if geometry is None: geometry = self.solid_geometry - ## If iterable, expand recursively. + # ## If iterable, expand recursively. try: for geo in geometry: interiors.extend(self.get_interiors(geometry=geo)) - ## Not iterable, get the interiors if polygon. + # ## Not iterable, get the interiors if polygon. except TypeError: if type(geometry) == Polygon: interiors.extend(geometry.interiors) @@ -393,12 +390,12 @@ class Geometry(object): if geometry is None: geometry = self.solid_geometry - ## If iterable, expand recursively. + # ## If iterable, expand recursively. try: for geo in geometry: exteriors.extend(self.get_exteriors(geometry=geo)) - ## Not iterable, get the exterior if polygon. + # ## Not iterable, get the exterior if polygon. except TypeError: if type(geometry) == Polygon: exteriors.append(geometry.exterior) @@ -423,7 +420,7 @@ class Geometry(object): if reset: self.flat_geometry = [] - ## If iterable, expand recursively. + # ## If iterable, expand recursively. try: for geo in geometry: if geo is not None: @@ -431,7 +428,7 @@ class Geometry(object): reset=False, pathonly=pathonly) - ## Not iterable, do the actual indexing and add. + # ## Not iterable, do the actual indexing and add. except TypeError: if pathonly and type(geometry) == Polygon: self.flat_geometry.append(geometry.exterior) @@ -480,18 +477,18 @@ class Geometry(object): # if reset: # self.flat_geometry = [] # - # ## If iterable, expand recursively. + # # ## If iterable, expand recursively. # try: # for geo in geometry: # self.flatten_to_paths(geometry=geo, reset=False) # - # ## Not iterable, do the actual indexing and add. + # # ## Not iterable, do the actual indexing and add. # except TypeError: # if type(geometry) == Polygon: # g = geometry.exterior # self.flat_geometry.append(g) # - # ## Add first and last points of the path to the index. + # # ## Add first and last points of the path to the index. # self.flat_geometry_rtree.insert(len(self.flat_geometry) - 1, g.coords[0]) # self.flat_geometry_rtree.insert(len(self.flat_geometry) - 1, g.coords[-1]) # @@ -694,7 +691,6 @@ class Geometry(object): else: scale_factor = 1 / dpi - geos = [] unscaled_geos = [] @@ -715,7 +711,7 @@ class Geometry(object): pass try: - blue= src.read(3) + blue = src.read(3) except: pass @@ -807,7 +803,7 @@ class Geometry(object): assert type(polygon) == Polygon or type(polygon) == MultiPolygon, \ "Expected a Polygon or MultiPolygon, got %s" % type(polygon) - ## The toolpaths + # ## The toolpaths # Index first and last points in paths def get_pts(o): return [o.coords[0], o.coords[-1]] @@ -893,7 +889,7 @@ class Geometry(object): # Current buffer radius radius = tooldia / 2 * (1 - overlap) - ## The toolpaths + # ## The toolpaths # Index first and last points in paths def get_pts(o): return [o.coords[0], o.coords[-1]] @@ -973,7 +969,7 @@ class Geometry(object): # log.debug("camlib.clear_polygon3()") - ## The toolpaths + # ## The toolpaths # Index first and last points in paths def get_pts(o): return [o.coords[0], o.coords[-1]] @@ -1071,7 +1067,7 @@ class Geometry(object): # Assuming geolist is a flat list of flat elements - ## Index first and last points in paths + # ## Index first and last points in paths def get_pts(o): return [o.coords[0], o.coords[-1]] @@ -1085,7 +1081,7 @@ class Geometry(object): # storage.insert(LineString(shape)) # #storage.insert(shape) - ## Iterate over geometry paths getting the nearest each time. + # ## Iterate over geometry paths getting the nearest each time. #optimized_paths = [] optimized_paths = FlatCAMRTreeStorage() optimized_paths.get_points = get_pts @@ -1129,15 +1125,15 @@ class Geometry(object): else: # Have to lift tool. End path. - #log.debug("Path #%d not within boundary. Next." % path_count) - #optimized_paths.append(geo) + # log.debug("Path #%d not within boundary. Next." % path_count) + # optimized_paths.append(geo) optimized_paths.insert(geo) geo = candidate current_pt = geo.coords[-1] # Next - #pt, geo = storage.nearest(current_pt) + # pt, geo = storage.nearest(current_pt) except StopIteration: # Nothing left in storage. #pass @@ -1159,7 +1155,7 @@ class Geometry(object): log.debug("path_connect()") - ## Index first and last points in paths + # ## Index first and last points in paths def get_pts(o): return [o.coords[0], o.coords[-1]] # @@ -1173,18 +1169,14 @@ class Geometry(object): path_count = 0 pt, geo = storage.nearest(origin) storage.remove(geo) - #optimized_geometry = [geo] + # optimized_geometry = [geo] optimized_geometry = FlatCAMRTreeStorage() optimized_geometry.get_points = get_pts - #optimized_geometry.insert(geo) + # optimized_geometry.insert(geo) try: while True: path_count += 1 - - #print "geo is", geo - _, left = storage.nearest(geo.coords[0]) - #print "left is", left # If left touches geo, remove left from original # storage and append to geo. @@ -1210,7 +1202,6 @@ class Geometry(object): continue _, right = storage.nearest(geo.coords[-1]) - #print "right is", right # If right touches geo, remove left from original # storage and append to geo. @@ -1243,7 +1234,7 @@ class Geometry(object): if type(right) == LinearRing: optimized_geometry.insert(right) else: - # Cannot exteng geo any further. Put it away. + # Cannot extend geo any further. Put it away. optimized_geometry.insert(geo) # Continue with right. @@ -1252,7 +1243,7 @@ class Geometry(object): except StopIteration: # Nothing found in storage. optimized_geometry.insert(geo) - #print path_count + # print path_count log.debug("path_count = %d" % path_count) return optimized_geometry @@ -1288,7 +1279,7 @@ class Geometry(object): def to_dict(self): """ - Returns a respresentation of the object as a dictionary. + Returns a representation of the object as a dictionary. Attributes to include are listed in ``self.ser_attrs``. :return: A dictionary-encoded copy of the object. @@ -1485,7 +1476,7 @@ class ApertureMacro: : 0 """ - ## Regular expressions + # ## Regular expressions am1_re = re.compile(r'^%AM([^\*]+)\*(.+)?(%)?$') am2_re = re.compile(r'(.*)%$') amcomm_re = re.compile(r'^0(.*)') @@ -1496,8 +1487,8 @@ class ApertureMacro: self.name = name self.raw = "" - ## These below are recomputed for every aperture - ## definition, in other words, are temporary variables. + # ## These below are recomputed for every aperture + # ## definition, in other words, are temporary variables. self.primitives = [] self.locvars = {} self.geometry = None @@ -1543,14 +1534,14 @@ class ApertureMacro: # Separate parts parts = self.raw.split('*') - #### Every part in the macro #### + #### Every part in the macro ## ## for part in parts: - ### Comments. Ignored. + # ## Comments. Ignored. match = ApertureMacro.amcomm_re.search(part) if match: continue - ### Variables + # ## Variables # These are variables defined locally inside the macro. They can be # numerical constant or defind in terms of previously define # variables, which can be defined locally or in an aperture @@ -1575,14 +1566,14 @@ class ApertureMacro: self.locvars[var] = eval(val) continue - ### Primitives + # ## Primitives # Each is an array. The first identifies the primitive, while the # rest depend on the primitive. All are strings representing a # number and may contain variable definition. The values of these # variables are defined in an aperture definition. match = ApertureMacro.amprim_re.search(part) if match: - ## Replace all variables + # ## Replace all variables for v in self.locvars: # replaced the following line with the next to fix Mentor custom apertures not parsed OK # part = re.sub(r'\$' + str(v) + r'(?![0-9a-zA-Z])', str(self.locvars[v]), part) @@ -1594,7 +1585,7 @@ class ApertureMacro: # Change x with * part = re.sub(r'[xX]', "*", part) - ## Store + # ## Store elements = part.split(",") self.primitives.append([eval(x) for x in elements]) continue @@ -1754,8 +1745,8 @@ class ApertureMacro: i = 1 # Number of rings created so far - ## If the ring does not have an interior it means that it is - ## a disk. Then stop. + # ## If the ring does not have an interior it means that it is + # ## a disk. Then stop. while len(ring.interiors) > 0 and i < nrings: r -= thickness + gap if r <= 0: @@ -1764,7 +1755,7 @@ class ApertureMacro: result = cascaded_union([result, ring]) i += 1 - ## Crosshair + # ## Crosshair hor = LineString([(x - cross_len, y), (x + cross_len, y)]).buffer(cross_th/2.0, cap_style=2) ver = LineString([(x, y-cross_len), (x, y + cross_len)]).buffer(cross_th/2.0, cap_style=2) result = cascaded_union([result, hor, ver]) @@ -1802,7 +1793,7 @@ class ApertureMacro: :rtype: shapely.geometry.polygon """ - ## Primitive makers + # ## Primitive makers makers = { "1": ApertureMacro.make_circle, "2": ApertureMacro.make_vectorline, @@ -1815,19 +1806,19 @@ class ApertureMacro: "7": ApertureMacro.make_thermal } - ## Store modifiers as local variables + # ## Store modifiers as local variables modifiers = modifiers or [] modifiers = [float(m) for m in modifiers] self.locvars = {} for i in range(0, len(modifiers)): self.locvars[str(i + 1)] = modifiers[i] - ## Parse + # ## Parse self.primitives = [] # Cleanup self.geometry = Polygon() self.parse_content() - ## Make the geometry + # ## Make the geometry for primitive in self.primitives: # Make the primitive prim_geo = makers[str(int(primitive[0]))](primitive[1:]) @@ -1898,9 +1889,7 @@ class Gerber (Geometry): :rtype: Gerber """ - # How to discretize a circle. - # if steps_per_circle is None: - # steps_per_circle = int(Gerber.defaults['steps_per_circle']) + # How to approximate a circle with lines. self.steps_per_circle = int(self.app.defaults["gerber_circle_steps"]) # Initialize parent @@ -1917,7 +1906,7 @@ class Gerber (Geometry): """Zeros in Gerber numbers. If 'L' then remove leading zeros, if 'T' remove trailing zeros. Used during parsing. """ - ## Gerber elements ## + # ## Gerber elements # ## ''' apertures = { 'id':{ @@ -1963,7 +1952,7 @@ class Gerber (Geometry): self.ser_attrs += ['int_digits', 'frac_digits', 'apertures', 'aperture_macros', 'solid_geometry', 'source_file'] - #### Parser patterns #### + # ### Parser patterns ## ## # FS - Format Specification # The format of X and Y must be the same! # L-omit leading zeros, T-omit trailing zeros, D-no zero supression @@ -1985,7 +1974,7 @@ class Gerber (Geometry): # AM - Aperture Macro # Beginning of macro (Ends with *%): - #self.am_re = re.compile(r'^%AM([a-zA-Z0-9]*)\*') + # self.am_re = re.compile(r'^%AM([a-zA-Z0-9]*)\*') # Tool change # May begin with G54 but that is deprecated @@ -2159,7 +2148,7 @@ class Gerber (Geometry): self.parse_lines(line_generator()) - #@profile + # @profile def parse_lines(self, glines): """ Main Gerber parser. Reads Gerber and populates ``self.paths``, ``self.apertures``, @@ -2228,7 +2217,7 @@ class Gerber (Geometry): # If a region is being defined making_region = False - #### Parsing starts here #### + # ### Parsing starts here ## ## line_num = 0 gline = "" try: @@ -2240,15 +2229,15 @@ class Gerber (Geometry): gline = gline.strip(' \r\n') # log.debug("Line=%3s %s" % (line_num, gline)) - # ############################################################### + # ############################################################# ## # Ignored lines # - # Comments ###### - # ############################################################### + # Comments #### ## + # ############################################################# ## match = self.comm_re.search(gline) if match: continue - # Polarity change ######## + # Polarity change ###### ## # Example: %LPD*% or %LPC*% # If polarity changes, creates geometry from current # buffer, then adds or subtracts accordingly. @@ -2303,10 +2292,10 @@ class Gerber (Geometry): current_polarity = new_polarity continue - # ############################################################### - # Number format ################## + # ############################################################# ## + # Number format ############################################### ## # Example: %FSLAX24Y24*% - # ############################################################### + # ############################################################# ## # TODO: This is ignoring most of the format. Implement the rest. match = self.fmt_re.search(gline) if match: @@ -2322,7 +2311,7 @@ class Gerber (Geometry): log.debug("Gerber format found. Coordinates type = %s (Absolute or Relative)" % absolute) continue - ### Mode (IN/MM) + # ## Mode (IN/MM) # Example: %MOIN*% match = self.mode_re.search(gline) if match: @@ -2332,9 +2321,9 @@ class Gerber (Geometry): self.convert_units(match.group(1)) continue - # ############################################################### - # Combined Number format and Mode --- Allegro does this ######### - # ############################################################### + # ############################################################# ## + # Combined Number format and Mode --- Allegro does this ####### ## + # ############################################################# ## match = self.fmt_re_alt.search(gline) if match: absolute = {'A': 'Absolute', 'I': 'Relative'}[match.group(2)] @@ -2353,9 +2342,9 @@ class Gerber (Geometry): self.convert_units(match.group(5)) continue - # ############################################################### + # ############################################################# ## # Search for OrCAD way for having Number format - # ############################################################### + # ############################################################# ## match = self.fmt_re_orcad.search(gline) if match: if match.group(1) is not None: @@ -2379,9 +2368,9 @@ class Gerber (Geometry): self.convert_units(match.group(5)) continue - # ############################################################### + # ############################################################# ## # Units (G70/1) OBSOLETE - # ############################################################### + # ############################################################# ## match = self.units_re.search(gline) if match: obs_gerber_units = {'0': 'IN', '1': 'MM'}[match.group(1)] @@ -2390,21 +2379,21 @@ class Gerber (Geometry): self.convert_units({'0': 'IN', '1': 'MM'}[match.group(1)]) continue - # ############################################################### - # Absolute/relative coordinates G90/1 OBSOLETE ########## - # ####################################################### + # ############################################################# ## + # Absolute/relative coordinates G90/1 OBSOLETE ######## ## + # ##################################################### ## match = self.absrel_re.search(gline) if match: absolute = {'0': "Absolute", '1': "Relative"}[match.group(1)] log.warning("Gerber obsolete coordinates type found = %s (Absolute or Relative) " % absolute) continue - # ############################################################### - # Aperture Macros ####################################### + # ############################################################# ## + # Aperture Macros ##################################### ## # Having this at the beginning will slow things down # but macros can have complicated statements than could # be caught by other patterns. - # ############################################################### + # ############################################################# ## if current_macro is None: # No macro started yet match = self.am1_re.search(gline) # Start macro if match, else not an AM, carry on. @@ -2431,18 +2420,18 @@ class Gerber (Geometry): self.aperture_macros[current_macro].append(gline) continue - ### Aperture definitions %ADD... + # ## Aperture definitions %ADD... match = self.ad_re.search(gline) if match: # log.info("Found aperture definition. Line %d: %s" % (line_num, gline)) self.aperture_parse(match.group(1), match.group(2), match.group(3)) continue - # ############################################################### - # Operation code alone ######################## + # ############################################################# ## + # Operation code alone ###################### ## # Operation code alone, usually just D03 (Flash) # self.opcode_re = re.compile(r'^D0?([123])\*$') - # ############################################################### + # ############################################################# ## match = self.opcode_re.search(gline) if match: current_operation_code = int(match.group(1)) @@ -2479,10 +2468,10 @@ class Gerber (Geometry): continue - # ############################################################### + # ############################################################# ## # Tool/aperture change # Example: D12* - # ############################################################### + # ############################################################# ## match = self.tool_re.search(gline) if match: current_aperture = match.group(1) @@ -2529,9 +2518,9 @@ class Gerber (Geometry): continue - # ############################################################### + # ############################################################# ## # G36* - Begin region - # ############################################################### + # ############################################################# ## if self.regionon_re.search(gline): if len(path) > 1: # Take care of what is left in the path @@ -2563,9 +2552,9 @@ class Gerber (Geometry): making_region = True continue - # ############################################################### + # ############################################################# ## # G37* - End region - # ############################################################### + # ############################################################# ## if self.regionoff_re.search(gline): making_region = False @@ -2632,7 +2621,7 @@ class Gerber (Geometry): path = [[current_x, current_y]] # Start new path continue - ### G01/2/3* - Interpolation mode change + # ## G01/2/3* - Interpolation mode change # Can occur along with coordinates and operation code but # sometimes by itself (handled here). # Example: G01* @@ -2641,7 +2630,7 @@ class Gerber (Geometry): current_interpolation_mode = int(match.group(1)) continue - ### G01 - Linear interpolation plus flashes + # ## G01 - Linear interpolation plus flashes # Operation code (D0x) missing is deprecated... oh well I will support it. # REGEX: r'^(?:G0?(1))?(?:X(-?\d+))?(?:Y(-?\d+))?(?:D0([123]))?\*$' match = self.lin_re.search(gline) @@ -2896,7 +2885,7 @@ class Gerber (Geometry): # log.debug("Line_number=%3s X=%s Y=%s (%s)" % (line_num, linear_x, linear_y, gline)) continue - ### G74/75* - Single or multiple quadrant arcs + # ## G74/75* - Single or multiple quadrant arcs match = self.quad_re.search(gline) if match: if match.group(1) == '4': @@ -2905,7 +2894,7 @@ class Gerber (Geometry): quadrant_mode = 'MULTI' continue - ### G02/3 - Circular interpolation + # ## G02/3 - Circular interpolation # 2-clockwise, 3-counterclockwise # Ex. format: G03 X0 Y50 I-50 J0 where the X, Y coords are the coords of the End Point match = self.circ_re.search(gline) @@ -3084,12 +3073,12 @@ class Gerber (Geometry): else: log.warning("Invalid arc in line %d." % line_num) - ## EOF + # ## EOF match = self.eof_re.search(gline) if match: continue - ### Line did not match any pattern. Warn user. + # ## Line did not match any pattern. Warn user. log.warning("Line ignored (%d): %s" % (line_num, gline)) if len(path) > 1: @@ -3100,7 +3089,7 @@ class Gerber (Geometry): pass else: # EOF, create shapely LineString if something still in path - ## --- Buffered --- + # ## --- Buffered --- geo_dict = dict() # this treats the case when we are storing geometry as paths @@ -3392,7 +3381,7 @@ class Gerber (Geometry): self.app.inform.emit(_("[success] Gerber Scale done.")) - ## solid_geometry ??? + # ## solid_geometry ??? # It's a cascaded union of objects. # self.solid_geometry = affinity.scale(self.solid_geometry, factor, # factor, origin=(0, 0)) @@ -3435,7 +3424,7 @@ class Gerber (Geometry): else: return affinity.translate(obj, xoff=dx, yoff=dy) - ## Solid geometry + # ## Solid geometry self.solid_geometry = offset_geom(self.solid_geometry) self.follow_geometry = offset_geom(self.follow_geometry) @@ -3677,7 +3666,7 @@ class Excellon(Geometry): self.num_tools = [] # List for keeping the tools sorted self.index_per_tool = {} # Dictionary to store the indexed points for each tool - ## IN|MM -> Units are inherited from Geometry + # ## IN|MM -> Units are inherited from Geometry #self.units = units # Trailing "T" or leading "L" (default) @@ -3708,7 +3697,7 @@ class Excellon(Geometry): 'excellon_format_upper_in', 'excellon_format_lower_in', 'excellon_units', 'slots', 'source_file'] - #### Patterns #### + #### Patterns ## ## # Regex basics: # ^ - beginning # $ - end @@ -3855,7 +3844,7 @@ class Excellon(Geometry): line_units = '' - #### Parsing starts here #### + #### Parsing starts here ## ## line_num = 0 # Line number eline = "" try: @@ -3946,7 +3935,7 @@ class Excellon(Geometry): log.warning("Found end of the header: %s" % eline) continue - ## Alternative units format M71/M72 + # ## Alternative units format M71/M72 # Supposed to be just in the body (yes, the body) # but some put it in the header (PADS for example). # Will detect anywhere. Occurrence will change the @@ -3966,10 +3955,10 @@ class Excellon(Geometry): ':' + str(self.excellon_format_lower_in)) continue - #### Body #### + #### Body ## ## if not in_header: - ## Tool change ## + # ## Tool change # ## match = self.toolsel_re.search(eline) if match: current_tool = str(int(match.group(1))) @@ -4009,7 +3998,7 @@ class Excellon(Geometry): continue - ## Allegro Type Tool change ## + # ## Allegro Type Tool change # ## if allegro_warning is True: match = self.absinc_re.search(eline) match1 = self.stop_re.search(eline) @@ -4019,7 +4008,7 @@ class Excellon(Geometry): log.debug(" Tool change for Allegro type of Excellon: %s" % current_tool) continue - ## Slots parsing for drilled slots (contain G85) + # ## Slots parsing for drilled slots (contain G85) # a Excellon drilled slot line may look like this: # X01125Y0022244G85Y0027756 match = self.slots_re.search(eline) @@ -4032,7 +4021,7 @@ class Excellon(Geometry): start_coords_match = match.group(1) stop_coords_match = match.group(2) - # Slot coordinates without period ## + # Slot coordinates without period # ## # get the coordinates for slot start and for slot stop into variables start_coords_noperiod = self.coordsnoperiod_re.search(start_coords_match) stop_coords_noperiod = self.coordsnoperiod_re.search(stop_coords_match) @@ -4101,7 +4090,7 @@ class Excellon(Geometry): ) continue - # Slot coordinates with period: Use literally. ## + # Slot coordinates with period: Use literally. # ## # get the coordinates for slot start and for slot stop into variables start_coords_period = self.coordsperiod_re.search(start_coords_match) stop_coords_period = self.coordsperiod_re.search(stop_coords_match) @@ -4170,7 +4159,7 @@ class Excellon(Geometry): ) continue - ## Coordinates without period ## + # ## Coordinates without period # ## match = self.coordsnoperiod_re.search(eline) if match: matchr = self.repeat_re.search(eline) @@ -4201,7 +4190,7 @@ class Excellon(Geometry): log.error("Missing coordinates") continue - ## Excellon Routing parse + # ## Excellon Routing parse if len(re.findall("G00", eline)) > 0: self.match_routing_start = 'G00' @@ -4251,7 +4240,7 @@ class Excellon(Geometry): # log.debug("{:15} {:8} {:8}".format(eline, x, y)) continue - ## Coordinates with period: Use literally. ## + # ## Coordinates with period: Use literally. # ## match = self.coordsperiod_re.search(eline) if match: matchr = self.repeat_re.search(eline) @@ -4282,7 +4271,7 @@ class Excellon(Geometry): log.error("Missing coordinates") continue - ## Excellon Routing parse + # ## Excellon Routing parse if len(re.findall("G00", eline)) > 0: self.match_routing_start = 'G00' @@ -4333,10 +4322,10 @@ class Excellon(Geometry): # log.debug("{:15} {:8} {:8}".format(eline, x, y)) continue - #### Header #### + #### Header ## ## if in_header: - ## Tool definitions ## + # ## Tool definitions # ## match = self.toolset_re.search(eline) if match: @@ -4354,7 +4343,7 @@ class Excellon(Geometry): log.debug(" Tool definition: %s %s" % (name, spec)) continue - ## Units and number format ## + # ## Units and number format # ## match = self.units_re.match(eline) if match: self.units_found = match.group(1) @@ -4412,7 +4401,7 @@ class Excellon(Geometry): log.warning("Type of zeros found: %s" % self.zeros) continue - ## Units and number format outside header## + # ## Units and number format outside header# ## match = self.units_re.match(eline) if match: self.units_found = match.group(1) @@ -4489,7 +4478,7 @@ class Excellon(Geometry): # You must show all zeros to the right of the number and can omit # all zeros to the left of the number. The CNC-7 will count the number # of digits you typed and automatically fill in the missing zeros. - ## flatCAM expects 6digits + # ## flatCAM expects 6digits # flatCAM expects the number of digits entered into the defaults if self.units.lower() == "in": # Inches is 00.0000 @@ -5284,7 +5273,7 @@ class CNCjob(Geometry): self.postdata['toolC'] = exobj.tools[tool]["C"] self.tooldia = exobj.tools[tool]["C"] - ################################################ + ############################################## ## # Create the data. node_list = [] locations = create_data_array() @@ -5334,7 +5323,7 @@ class CNCjob(Geometry): log.warning('No solution found.') else: log.warning('Specify an instance greater than 0.') - ################################################ + ############################################## ## # Only if tool has points. if tool in points: @@ -5390,7 +5379,7 @@ class CNCjob(Geometry): self.postdata['toolC']=exobj.tools[tool]["C"] self.tooldia = exobj.tools[tool]["C"] - ################################################ + ############################################## ## node_list = [] locations = create_data_array() tsp_size = len(locations) @@ -5432,7 +5421,7 @@ class CNCjob(Geometry): log.warning('No solution found.') else: log.warning('Specify an instance greater than 0.') - ################################################ + ############################################## ## # Only if tool has points. if tool in points: @@ -5588,7 +5577,7 @@ class CNCjob(Geometry): else: temp_solid_geometry = geometry - ## Flatten the geometry. Only linear elements (no polygons) remain. + # ## Flatten the geometry. Only linear elements (no polygons) remain. flat_geometry = self.flatten(temp_solid_geometry, pathonly=True) log.debug("%d paths" % len(flat_geometry)) @@ -5665,7 +5654,7 @@ class CNCjob(Geometry): "This is dangerous, skipping %s file") % self.options['name']) return 'fail' - ## Index first and last points in paths + # ## Index first and last points in paths # What points to index. def get_pts(o): return [o.coords[0], o.coords[-1]] @@ -5719,7 +5708,7 @@ class CNCjob(Geometry): if self.dwell is True: self.gcode += self.doformat(p.dwell_code) # Dwell time - ## Iterate over geometry paths getting the nearest each time. + # ## Iterate over geometry paths getting the nearest each time. log.debug("Starting G-Code...") path_count = 0 current_pt = (0, 0) @@ -5855,7 +5844,7 @@ class CNCjob(Geometry): else: temp_solid_geometry = geometry.solid_geometry - ## Flatten the geometry. Only linear elements (no polygons) remain. + # ## Flatten the geometry. Only linear elements (no polygons) remain. flat_geometry = self.flatten(temp_solid_geometry, pathonly=True) log.debug("%d paths" % len(flat_geometry)) @@ -5928,7 +5917,7 @@ class CNCjob(Geometry): "This is dangerous, skipping %s file") % self.options['name']) return 'fail' - ## Index first and last points in paths + # ## Index first and last points in paths # What points to index. def get_pts(o): return [o.coords[0], o.coords[-1]] @@ -6041,7 +6030,7 @@ class CNCjob(Geometry): log.debug("Generate_from_solderpaste_geometry()") - ## Index first and last points in paths + # ## Index first and last points in paths # What points to index. def get_pts(o): return [o.coords[0], o.coords[-1]] @@ -6077,7 +6066,7 @@ class CNCjob(Geometry): else self.app.defaults['tools_solderpaste_pp'] p = self.app.postprocessors[self.pp_solderpaste_name] - ## Flatten the geometry. Only linear elements (no polygons) remain. + # ## Flatten the geometry. Only linear elements (no polygons) remain. flat_geometry = self.flatten(kwargs['solid_geometry'], pathonly=True) log.debug("%d paths" % len(flat_geometry)) @@ -6096,7 +6085,7 @@ class CNCjob(Geometry): self.gcode += self.doformat(p.spindle_off_code) self.gcode += self.doformat(p.toolchange_code) - ## Iterate over geometry paths getting the nearest each time. + # ## Iterate over geometry paths getting the nearest each time. log.debug("Starting SolderPaste G-Code...") path_count = 0 current_pt = (0, 0) @@ -6355,12 +6344,12 @@ class CNCjob(Geometry): gobj = self.codes_split(line) - ## Units + # ## Units if 'G' in gobj and (gobj['G'] == 20.0 or gobj['G'] == 21.0): self.units = {20.0: "IN", 21.0: "MM"}[gobj['G']] continue - ## Changing height + # ## Changing height if 'Z' in gobj: if 'Roland' in self.pp_excellon_name or 'Roland' in self.pp_geometry_name: pass @@ -7699,7 +7688,7 @@ class FlatCAMRTree(object): # Python RTree Index self.rti = rtindex.Index() - ## Track object-point relationship + # ## Track object-point relationship # Each is list of points in object. self.obj2points = [] diff --git a/flatcamEditors/FlatCAMExcEditor.py b/flatcamEditors/FlatCAMExcEditor.py index 763b80aa..9e466e74 100644 --- a/flatcamEditors/FlatCAMExcEditor.py +++ b/flatcamEditors/FlatCAMExcEditor.py @@ -726,11 +726,11 @@ class FlatCAMExcEditor(QtCore.QObject): self.app = app self.canvas = self.app.plotcanvas - ## Current application units in Upper Case + # ## Current application units in Upper Case self.units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().upper() self.exc_edit_widget = QtWidgets.QWidget() - ## Box for custom widgets + # ## Box for custom widgets # This gets populated in offspring implementations. layout = QtWidgets.QVBoxLayout() self.exc_edit_widget.setLayout(layout) @@ -744,22 +744,22 @@ class FlatCAMExcEditor(QtCore.QObject): self.tools_box.setContentsMargins(0, 0, 0, 0) self.drills_frame.setLayout(self.tools_box) - ## Page Title box (spacing between children) + # ## Page Title box (spacing between children) self.title_box = QtWidgets.QHBoxLayout() self.tools_box.addLayout(self.title_box) - ## Page Title icon + # ## Page Title icon pixmap = QtGui.QPixmap('share/flatcam_icon32.png') self.icon = QtWidgets.QLabel() self.icon.setPixmap(pixmap) self.title_box.addWidget(self.icon, stretch=0) - ## Title label + # ## Title label self.title_label = QtWidgets.QLabel("%s" % _('Excellon Editor')) self.title_label.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) self.title_box.addWidget(self.title_label, stretch=1) - ## Object name + # ## Object name self.name_box = QtWidgets.QHBoxLayout() self.tools_box.addLayout(self.name_box) name_label = QtWidgets.QLabel(_("Name:")) @@ -767,7 +767,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.name_entry = FCEntry() self.name_box.addWidget(self.name_entry) - #### Tools Drills #### + #### Tools Drills ## ## self.tools_table_label = QtWidgets.QLabel("%s" % _('Tools Table')) self.tools_table_label.setToolTip( _( "Tools in this Excellon object\n" @@ -789,7 +789,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.empty_label = QtWidgets.QLabel('') self.tools_box.addWidget(self.empty_label) - #### Add a new Tool #### + #### Add a new Tool ## ## self.addtool_label = QtWidgets.QLabel('%s' % _('Add/Delete Tool')) self.addtool_label.setToolTip( _("Add/Delete a tool to the tool list\n" @@ -839,7 +839,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.resize_box.setContentsMargins(0, 0, 0, 0) self.resize_frame.setLayout(self.resize_box) - #### Resize a drill #### + #### Resize a drill ## ## self.emptyresize_label = QtWidgets.QLabel('') self.resize_box.addWidget(self.emptyresize_label) @@ -882,7 +882,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.array_box.setContentsMargins(0, 0, 0, 0) self.array_frame.setLayout(self.array_box) - #### Add DRILL Array #### + #### Add DRILL Array ## ## self.emptyarray_label = QtWidgets.QLabel('') self.array_box.addWidget(self.emptyarray_label) @@ -1001,7 +1001,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.array_frame.hide() self.tools_box.addStretch() - ## Toolbar events and properties + # ## Toolbar events and properties self.tools_exc = { "drill_select": {"button": self.app.ui.select_drill_btn, "constructor": FCDrillSelect}, @@ -1017,7 +1017,7 @@ class FlatCAMExcEditor(QtCore.QObject): "constructor": FCDrillMove}, } - ### Data + # ## Data self.active_tool = None self.in_action = False @@ -1090,7 +1090,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.shapes.enabled = False self.tool_shape.enabled = False - ## List of selected shapes. + # ## List of selected shapes. self.selected = [] self.move_timer = QtCore.QTimer() @@ -1160,7 +1160,7 @@ class FlatCAMExcEditor(QtCore.QObject): @staticmethod def make_storage(): - ## Shape storage. + # ## Shape storage. storage = FlatCAMRTreeStorage() storage.get_points = DrawToolShape.get_pts @@ -1739,7 +1739,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.drills_frame.hide() def connect_canvas_event_handlers(self): - ## Canvas events + # ## Canvas events # first connect to new, then disconnect the old handlers # don't ask why but if there is nothing connected I've seen issues @@ -2394,7 +2394,7 @@ class FlatCAMExcEditor(QtCore.QObject): if self.active_tool is None: return - ### Snap coordinates + # ## Snap coordinates if self.app.grid_status(): x, y = self.app.geo_editor.snap(x, y) self.app.app_cursor.enabled = True @@ -2419,7 +2419,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.app.ui.rel_position_label.setText("Dx: %.4f   Dy: " "%.4f    " % (dx, dy)) - ### Utility geometry (animated) + # ## Utility geometry (animated) geo = self.active_tool.utility_geometry(data=(x, y)) if isinstance(geo, DrawToolShape) and geo.geo is not None: @@ -2427,7 +2427,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.tool_shape.clear(update=True) self.draw_utility_geometry(geo=geo) - ### Selection area on canvas section ### + # ## Selection area on canvas section # ## if event.is_dragging == 1 and event.button == 1: # I make an exception for FCDrillAdd and FCDrillArray because clicking and dragging while making regions # can create strange issues @@ -2553,13 +2553,13 @@ class FlatCAMExcEditor(QtCore.QObject): for geo in geometry: plot_elements += self.plot_shape(geometry=geo, color=color, linewidth=linewidth) - ## Non-iterable + # ## Non-iterable except TypeError: - ## DrawToolShape + # ## DrawToolShape if isinstance(geometry, DrawToolShape): plot_elements += self.plot_shape(geometry=geometry.geo, color=color, linewidth=linewidth) - ## Polygon: Descend into exterior and each interior. + # ## Polygon: Descend into exterior and each interior. if type(geometry) == Polygon: plot_elements += self.plot_shape(geometry=geometry.exterior, color=color, linewidth=linewidth) plot_elements += self.plot_shape(geometry=geometry.interiors, color=color, linewidth=linewidth) diff --git a/flatcamEditors/FlatCAMGeoEditor.py b/flatcamEditors/FlatCAMGeoEditor.py index 16f065b0..bec802a1 100644 --- a/flatcamEditors/FlatCAMGeoEditor.py +++ b/flatcamEditors/FlatCAMGeoEditor.py @@ -1,15 +1,15 @@ -# ########################################################### +# ######################################################### ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # Author: Juan Pablo Caram (c) # # Date: 2/5/2014 # # MIT Licence # -# ########################################################### +# ######################################################### ## # ########################################################### # # File Modified: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # -# ########################################################### +# ######################################################### ## from PyQt5 import QtGui, QtCore, QtWidgets from PyQt5.QtCore import Qt, QSettings @@ -629,7 +629,7 @@ class TransformEditorTool(FlatCAMTool): self.transform_lay = QtWidgets.QVBoxLayout() self.layout.addLayout(self.transform_lay) - ## Title + # ## Title title_label = QtWidgets.QLabel("%s" % (_('Editor %s') % self.toolName)) title_label.setStyleSheet(""" QLabel @@ -2917,9 +2917,9 @@ class FCTransform(FCShapeTool): self.draw_app.transform_tool.run() -# ####################### -# ## Main Application ### -# ####################### +# ##################### ## +# # ## Main Application # ## +# ##################### ## class FlatCAMGeoEditor(QtCore.QObject): transform_complete = QtCore.pyqtSignal() @@ -2935,7 +2935,7 @@ class FlatCAMGeoEditor(QtCore.QObject): self.app = app self.canvas = app.plotcanvas - ## Toolbar events and properties + # ## Toolbar events and properties self.tools = { "select": {"button": self.app.ui.geo_select_btn, "constructor": FCSelect}, @@ -2965,7 +2965,7 @@ class FlatCAMGeoEditor(QtCore.QObject): "constructor": FCCopy} } - # ## Data + # # ## Data self.active_tool = None self.storage = FlatCAMGeoEditor.make_storage() @@ -3413,7 +3413,7 @@ class FlatCAMGeoEditor(QtCore.QObject): if multigeo_tool: self.multigeo_tool = multigeo_tool geo_to_edit = fcgeometry.flatten(geometry=fcgeometry.tools[self.multigeo_tool]['solid_geometry']) - self.app.inform.emit(_("[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}"). + self.app.inform.emit(_("[WARNING_NOTCL] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}"). format(tool=self.multigeo_tool, dia=fcgeometry.tools[self.multigeo_tool]['tooldia'])) else: geo_to_edit = fcgeometry.flatten() @@ -3569,7 +3569,7 @@ class FlatCAMGeoEditor(QtCore.QObject): if self.active_tool is None: return - # ## Snap coordinates + # # ## Snap coordinates if self.app.grid_status(): x, y = self.snap(x, y) self.app.app_cursor.enabled = True @@ -3597,14 +3597,14 @@ class FlatCAMGeoEditor(QtCore.QObject): if event.button == 1 and event.is_dragging == 1 and isinstance(self.active_tool, FCEraser): pass else: - # ## Utility geometry (animated) + # # ## Utility geometry (animated) geo = self.active_tool.utility_geometry(data=(x, y)) if isinstance(geo, DrawToolShape) and geo.geo is not None: # Remove any previous utility shape self.tool_shape.clear(update=True) self.draw_utility_geometry(geo=geo) - # ## Selection area on canvas section ### + # # ## Selection area on canvas section # ## dx = pos[0] - self.pos[0] if event.is_dragging == 1 and event.button == 1: self.app.delete_selection_shape() @@ -3938,9 +3938,9 @@ class FlatCAMGeoEditor(QtCore.QObject): snap_x, snap_y = (x, y) snap_distance = Inf - # ## Object (corner?) snap - # ## No need for the objects, just the coordinates - # ## in the index. + # # ## Object (corner?) snap + # # ## No need for the objects, just the coordinates + # # ## in the index. if self.options["corner_snap"]: try: nearest_pt, shape = self.storage.nearest((x, y)) @@ -3952,7 +3952,7 @@ class FlatCAMGeoEditor(QtCore.QObject): except (StopIteration, AssertionError): pass - # ## Grid snap + # # ## Grid snap if self.options["grid_snap"]: if self.options["global_gridx"] != 0: snap_x_ = round(x / self.options["global_gridx"]) * self.options['global_gridx'] diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index ab498ea1..53f454e8 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -52,7 +52,7 @@ class DrawToolShape(object): """ pts = [] - ## Iterable: descend into each item. + # ## Iterable: descend into each item. try: for sub_o in o: pts += DrawToolShape.get_pts(sub_o) @@ -64,7 +64,7 @@ class DrawToolShape(object): if isinstance(o, DrawToolShape): pts += DrawToolShape.get_pts(o.geo) - ## Descend into .exerior and .interiors + # ## Descend into .exerior and .interiors elif type(o) == Polygon: pts += DrawToolShape.get_pts(o.exterior) for i in o.interiors: @@ -72,7 +72,7 @@ class DrawToolShape(object): elif type(o) == MultiLineString: for line in o: pts += DrawToolShape.get_pts(line) - ## Has .coords: list them. + # ## Has .coords: list them. else: if DrawToolShape.tolerance is not None: pts += list(o.simplify(DrawToolShape.tolerance).coords) @@ -2274,7 +2274,7 @@ class FlatCAMGrbEditor(QtCore.QObject): layout.addLayout(self.custom_box) - # ### Gerber Apertures #### + # # ## Gerber Apertures ## ## self.apertures_table_label = QtWidgets.QLabel(_('Apertures:')) self.apertures_table_label.setToolTip( _("Apertures Table for the Gerber Object.") @@ -2316,7 +2316,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.apertures_box.setContentsMargins(0, 0, 0, 0) self.apertures_frame.setLayout(self.apertures_box) - # ### Add/Delete an new Aperture #### + # # ## Add/Delete an new Aperture ## ## grid1 = QtWidgets.QGridLayout() self.apertures_box.addLayout(grid1) @@ -2390,7 +2390,7 @@ class FlatCAMGrbEditor(QtCore.QObject): hlay_ad.addWidget(self.addaperture_btn) hlay_ad.addWidget(self.delaperture_btn) - # ## BUFFER TOOL ### + # # ## BUFFER TOOL # ## self.buffer_tool_frame = QtWidgets.QFrame() self.buffer_tool_frame.setContentsMargins(0, 0, 0, 0) @@ -2434,7 +2434,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.buffer_button = QtWidgets.QPushButton(_("Buffer")) hlay_buf.addWidget(self.buffer_button) - # ## SCALE TOOL ### + # # ## SCALE TOOL # ## self.scale_tool_frame = QtWidgets.QFrame() self.scale_tool_frame.setContentsMargins(0, 0, 0, 0) @@ -2481,7 +2481,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.array_box.setContentsMargins(0, 0, 0, 0) self.array_frame.setLayout(self.array_box) - # ### Add Pad Array #### + # # ## Add Pad Array ## ## self.emptyarray_label = QtWidgets.QLabel('') self.array_box.addWidget(self.emptyarray_label) @@ -2633,7 +2633,7 @@ class FlatCAMGrbEditor(QtCore.QObject): "constructor": FCApertureMove}, } - # ## Data + # # ## Data self.active_tool = None self.storage_dict = {} @@ -3479,9 +3479,9 @@ class FlatCAMGrbEditor(QtCore.QObject): self.gerber_obj.apertures = conv_apertures - # ############################################################### + # ############################################################# ## # APPLY CLEAR_GEOMETRY on the SOLID_GEOMETRY - # ############################################################### + # ############################################################# ## # log.warning("Applying clear geometry in the apertures dict.") # list of clear geos that are to be applied to the entire file @@ -4079,7 +4079,7 @@ class FlatCAMGrbEditor(QtCore.QObject): if self.active_tool is None: return - # ## Snap coordinates + # # ## Snap coordinates if self.app.grid_status(): x, y = self.app.geo_editor.snap(x, y) self.app.app_cursor.enabled = True @@ -4104,7 +4104,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.app.ui.rel_position_label.setText("Dx: %.4f   Dy: " "%.4f    " % (dx, dy)) - # ## Utility geometry (animated) + # # ## Utility geometry (animated) geo = self.active_tool.utility_geometry(data=(x, y)) if isinstance(geo, DrawToolShape) and geo.geo is not None: @@ -4112,7 +4112,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.tool_shape.clear(update=True) self.draw_utility_geometry(geo=geo) - # ## Selection area on canvas section ### + # # ## Selection area on canvas section # ## if event.is_dragging == 1 and event.button == 1: # I make an exception for FCRegion and FCTrack because clicking and dragging while making regions can # create strange issues like missing a point in a track/region diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index 065f0536..f072a512 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -1,15 +1,15 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # Author: Juan Pablo Caram (c) # # Date: 2/5/2014 # # MIT Licence # -############################################################ +# ########################################################## ## -############################################################ +# ########################################################## ## # File Modified (major mod): Marius Adrian Stanciu # # Date: 3/10/2019 # -############################################################ +# ########################################################## ## from PyQt5.QtCore import QSettings from flatcamGUI.GUIElements import * @@ -37,16 +37,16 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.app = app # Divine icon pack by Ipapun @ finicons.com - ##################################### - ### BUILDING THE GUI IS DONE HERE ### - ##################################### + ################################### ## + # ## BUILDING THE GUI IS DONE HERE # ## + ################################### ## - ############ - ### Menu ### - ############ + ########## ## + # ## Menu # ## + ########## ## self.menu = self.menuBar() - ### File ### + # ## File # ## self.menufile = self.menu.addMenu(_('&File')) self.menufile.setToolTipsVisible(True) @@ -226,7 +226,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # exitAction.setStatusTip('Exit application') self.menufile.addAction(self.menufile_exit) - ### Edit ### + # ## Edit # ## self.menuedit = self.menu.addMenu(_('&Edit')) # Separator self.menuedit.addSeparator() @@ -305,7 +305,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.menuedit.addSeparator() self.menueditpreferences = self.menuedit.addAction(QtGui.QIcon('share/pref.png'), _('&Preferences\tSHIFT+P')) - ### Options ### + # ## Options # ## self.menuoptions = self.menu.addMenu(_('&Options')) # self.menuoptions_transfer = self.menuoptions.addMenu(QtGui.QIcon('share/transfer.png'), 'Transfer options') # self.menuoptions_transfer_a2p = self.menuoptions_transfer.addAction("Application to Project") @@ -344,7 +344,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # Separator self.menuoptions.addSeparator() - ### View ### + # ## View # ## self.menuview = self.menu.addMenu(_('&View')) self.menuviewenable = self.menuview.addAction(QtGui.QIcon('share/replot16.png'), _('Enable all plots\tALT+1')) self.menuviewdisableall = self.menuview.addAction(QtGui.QIcon('share/clear_plot16.png'), @@ -376,13 +376,13 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.menuview_toggle_workspace = self.menuview.addAction(QtGui.QIcon('share/workspace24.png'), _("Toggle Workspace\tSHIFT+W")) - ### Tool ### + # ## Tool # ## # self.menutool = self.menu.addMenu('&Tool') self.menutool = QtWidgets.QMenu(_('&Tool')) self.menutoolaction = self.menu.addMenu(self.menutool) self.menutoolshell = self.menutool.addAction(QtGui.QIcon('share/shell16.png'), _('&Command Line\tS')) - ### Help ### + # ## Help # ## self.menuhelp = self.menu.addMenu(_('&Help')) self.menuhelp_manual = self.menuhelp.addAction(QtGui.QIcon('share/globe16.png'), _('Help\tF1')) self.menuhelp_home = self.menuhelp.addAction(QtGui.QIcon('share/home16.png'), _('FlatCAM.org')) @@ -394,7 +394,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.menuhelp_about = self.menuhelp.addAction(QtGui.QIcon('share/about32.png'), _('About')) - ### FlatCAM Editor menu ### + # ## FlatCAM Editor menu # ## # self.editor_menu = QtWidgets.QMenu("Editor") # self.menu.addMenu(self.editor_menu) self.geo_editor_menu = QtWidgets.QMenu(">Geo Editor<") @@ -468,7 +468,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.exc_move_drill_menuitem = self.exc_editor_menu.addAction( QtGui.QIcon('share/move32.png'),_( 'Move Drill(s)\tM')) - ### APPLICATION GERBER EDITOR MENU ### + # ## APPLICATION GERBER EDITOR MENU # ## self.grb_editor_menu = QtWidgets.QMenu(_(">Gerber Editor<")) self.menu.addMenu(self.grb_editor_menu) @@ -516,9 +516,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.exc_editor_menu.menuAction().setVisible(False) self.exc_editor_menu.setDisabled(True) - # ############################### - # ## Project Tab Context menu ### - # ############################### + # ############################# ## + # # ## Project Tab Context menu # ## + # ############################# ## self.menuproject = QtWidgets.QMenu() self.menuprojectenable = self.menuproject.addAction(QtGui.QIcon('share/replot32.png'), _('Enable Plot')) @@ -535,9 +535,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.menuprojectproperties = self.menuproject.addAction(QtGui.QIcon('share/properties32.png'), _('Properties')) - # ############### - # ## Splitter ### - # ############### + # ############# ## + # # ## Splitter # ## + # ############# ## # IMPORTANT # # The order: SPITTER -> NOTEBOOK -> SNAP TOOLBAR is important and without it the GUI will not be initialized as @@ -557,11 +557,11 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.splitter_left.addWidget(self.notebook) self.splitter_left.setHandleWidth(0) - ############### - ### Toolbar ### - ############### + ############# ## + # ## Toolbar # ## + ############# ## - ### TOOLBAR INSTALLATION ### + # ## TOOLBAR INSTALLATION # ## self.toolbarfile = QtWidgets.QToolBar(_('File Toolbar')) self.toolbarfile.setObjectName('File_TB') self.addToolBar(self.toolbarfile) @@ -608,7 +608,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.snap_toolbar.setMaximumHeight(30) self.splitter_left.addWidget(self.snap_toolbar) - ### File Toolbar ### + # ## File Toolbar # ## self.file_open_gerber_btn = self.toolbarfile.addAction(QtGui.QIcon('share/flatcam_icon32.png'), _("Open Gerber")) self.file_open_excellon_btn = self.toolbarfile.addAction(QtGui.QIcon('share/drill32.png'), _("Open Excellon")) @@ -616,7 +616,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.file_open_btn = self.toolbarfile.addAction(QtGui.QIcon('share/folder32.png'), _("Open project")) self.file_save_btn = self.toolbarfile.addAction(QtGui.QIcon('share/floppy32.png'), _("Save project")) - ### Edit Toolbar ### + # ## Edit Toolbar # ## self.newgeo_btn = self.toolbargeo.addAction(QtGui.QIcon('share/new_geo32_bis.png'), _("New Blank Geometry")) self.newgrb_btn = self.toolbargeo.addAction(QtGui.QIcon('share/new_geo32.png'), _("New Blank Gerber")) self.newexc_btn = self.toolbargeo.addAction(QtGui.QIcon('share/new_exc32.png'), _("New Blank Excellon")) @@ -629,7 +629,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.toolbargeo.addSeparator() self.delete_btn = self.toolbargeo.addAction(QtGui.QIcon('share/cancel_edit32.png'), _("&Delete")) - ### View Toolbar ### + # ## View Toolbar # ## self.replot_btn = self.toolbarview.addAction(QtGui.QIcon('share/replot32.png'), _("&Replot")) self.clear_plot_btn = self.toolbarview.addAction(QtGui.QIcon('share/clear_plot32.png'), _("&Clear plot")) self.zoom_in_btn = self.toolbarview.addAction(QtGui.QIcon('share/zoom_in32.png'), _("Zoom In")) @@ -638,10 +638,10 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # self.toolbarview.setVisible(False) - ### Shell Toolbar ### + # ## Shell Toolbar # ## self.shell_btn = self.toolbarshell.addAction(QtGui.QIcon('share/shell32.png'), _("&Command Line")) - ### Tools Toolbar ### + # ## Tools Toolbar # ## self.dblsided_btn = self.toolbartools.addAction(QtGui.QIcon('share/doubleside32.png'), _("2Sided Tool")) self.cutout_btn = self.toolbartools.addAction(QtGui.QIcon('share/cut16_bis.png'), _("&Cutout Tool")) self.ncc_btn = self.toolbartools.addAction(QtGui.QIcon('share/ncc16.png'), _("NCC Tool")) @@ -658,7 +658,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.calculators_btn = self.toolbartools.addAction(QtGui.QIcon('share/calculator24.png'), _("Calculators Tool")) self.transform_btn = self.toolbartools.addAction(QtGui.QIcon('share/transform.png'), _("Transform Tool")) - ### Drill Editor Toolbar ### + # ## Drill Editor Toolbar # ## self.select_drill_btn = self.exc_edit_toolbar.addAction(QtGui.QIcon('share/pointer32.png'), _("Select")) self.add_drill_btn = self.exc_edit_toolbar.addAction(QtGui.QIcon('share/plus16.png'), _('Add Drill Hole')) self.add_drill_array_btn = self.exc_edit_toolbar.addAction( @@ -672,7 +672,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.exc_edit_toolbar.addSeparator() self.move_drill_btn = self.exc_edit_toolbar.addAction(QtGui.QIcon('share/move32.png'), _("Move Drill")) - ### Geometry Editor Toolbar ### + # ## Geometry Editor Toolbar # ## self.geo_select_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/pointer32.png'), _("Select")) self.geo_add_circle_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/circle32.png'), _('Add Circle')) self.geo_add_arc_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/arc32.png'), _('Add Arc')) @@ -706,7 +706,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.geo_edit_toolbar.addSeparator() self.geo_move_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/move32.png'), _("Move Objects ")) - ### Gerber Editor Toolbar ### + # ## Gerber Editor Toolbar # ## self.grb_select_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/pointer32.png'), _("Select")) self.grb_add_pad_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/aperture32.png'), _("Add Pad")) self.add_pad_ar_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/padarray32.png'), _('Add Pad Array')) @@ -732,7 +732,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.grb_edit_toolbar.addSeparator() self.aperture_move_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/move32.png'), _("Move")) - # ## Snap Toolbar ### + # # ## Snap Toolbar # ## # Snap GRID toolbar is always active to facilitate usage of measurements done on GRID # self.addToolBar(self.snap_toolbar) @@ -764,11 +764,11 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.snap_magnet = self.snap_toolbar.addWidget(self.snap_max_dist_entry) - ################ - ### Notebook ### - ################ + ############## ## + # ## Notebook # ## + ############## ## - ### Project ### + # ## Project # ## # self.project_tab = QtWidgets.QWidget() # self.project_tab.setObjectName("project_tab") # # project_tab.setMinimumWidth(250) # Hack @@ -791,7 +791,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.notebook.addTab(self.project_tab, _("Project")) self.project_frame.setDisabled(False) - ### Selected ### + # ## Selected # ## self.selected_tab = QtWidgets.QWidget() self.selected_tab.setObjectName("selected_tab") self.selected_tab_layout = QtWidgets.QVBoxLayout(self.selected_tab) @@ -800,7 +800,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.selected_tab_layout.addWidget(self.selected_scroll_area) self.notebook.addTab(self.selected_tab, _("Selected")) - ### Tool ### + # ## Tool # ## self.tool_tab = QtWidgets.QWidget() self.tool_tab.setObjectName("tool_tab") self.tool_tab_layout = QtWidgets.QVBoxLayout(self.tool_tab) @@ -834,9 +834,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # remove the close button from the Plot Area tab (first tab index = 0) as this one will always be ON self.plot_tab_area.protectTab(0) - ######################################## - ### HERE WE BUILD THE PREF. TAB AREA ### - ######################################## + ###################################### ## + # ## HERE WE BUILD THE PREF. TAB AREA # ## + ###################################### ## self.preferences_tab = QtWidgets.QWidget() self.pref_tab_layout = QtWidgets.QVBoxLayout(self.preferences_tab) self.pref_tab_layout.setContentsMargins(2, 2, 2, 2) @@ -960,9 +960,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): "which is the file storing the working default preferences.")) self.pref_tab_bottom_layout_2.addWidget(self.pref_save_button) - ######################################## - ### HERE WE BUILD THE SHORTCUTS LIST. TAB AREA ### - ######################################## + ###################################### ## + # ## HERE WE BUILD THE SHORTCUTS LIST. TAB AREA # ## + ###################################### ## self.shortcuts_tab = QtWidgets.QWidget() self.sh_tab_layout = QtWidgets.QVBoxLayout() self.sh_tab_layout.setContentsMargins(2, 2, 2, 2) @@ -1574,9 +1574,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.sh_hlay.addWidget(self.sh_editor) - # ############################################################# - # ## HERE WE BUILD THE CONTEXT MENU FOR RMB CLICK ON CANVAS ### - # ############################################################# + # ########################################################### ## + # # ## HERE WE BUILD THE CONTEXT MENU FOR RMB CLICK ON CANVAS # ## + # ########################################################### ## self.popMenu = FCMenu() self.popmenu_disable = self.popMenu.addAction(QtGui.QIcon('share/disable32.png'), _("Disable Plot")) @@ -1628,9 +1628,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.popmenu_properties = self.popMenu.addAction(QtGui.QIcon('share/properties32.png'), _("Properties")) - #################################### - ### Here we build the CNCJob Tab ### - #################################### + ################################## ## + # ## Here we build the CNCJob Tab # ## + ################################## ## self.cncjob_tab = QtWidgets.QWidget() self.cncjob_tab_layout = QtWidgets.QGridLayout(self.cncjob_tab) self.cncjob_tab_layout.setContentsMargins(2, 2, 2, 2) @@ -1687,9 +1687,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): cnc_tab_lay_4.addWidget(self.buttonSave) self.cncjob_tab_layout.addLayout(cnc_tab_lay_4, 2, 4, 1, 1) - ################################## - ### Build InfoBar is done here ### - ################################## + ################################ ## + # ## Build InfoBar is done here # ## + ################################ ## self.infobar = self.statusBar() self.fcinfo = FlatCAMInfoBar() self.infobar.addWidget(self.fcinfo, stretch=1) @@ -1744,9 +1744,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # log.debug("FlatCAMGUI.__init__() --> UI state not restored. IOError") # pass - ###################### - ### INITIALIZE GUI ### - ###################### + #################### ## + # ## INITIALIZE GUI # ## + #################### ## self.grid_snap_btn.setCheckable(True) self.corner_snap_btn.setCheckable(True) @@ -1831,7 +1831,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): def populate_toolbars(self): - ### File Toolbar ### + # ## File Toolbar # ## self.file_open_gerber_btn = self.toolbarfile.addAction(QtGui.QIcon('share/flatcam_icon32.png'), _("Open Gerber")) self.file_open_excellon_btn = self.toolbarfile.addAction(QtGui.QIcon('share/drill32.png'), _("Open Excellon")) @@ -1839,7 +1839,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.file_open_btn = self.toolbarfile.addAction(QtGui.QIcon('share/folder32.png'), _("Open project")) self.file_save_btn = self.toolbarfile.addAction(QtGui.QIcon('share/floppy32.png'), _("Save project")) - ### Edit Toolbar ### + # ## Edit Toolbar # ## self.newgeo_btn = self.toolbargeo.addAction(QtGui.QIcon('share/new_geo32_bis.png'), _("New Blank Geometry")) self.newexc_btn = self.toolbargeo.addAction(QtGui.QIcon('share/new_exc32.png'), _("New Blank Excellon")) self.toolbargeo.addSeparator() @@ -1851,7 +1851,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.toolbargeo.addSeparator() self.delete_btn = self.toolbargeo.addAction(QtGui.QIcon('share/cancel_edit32.png'), _("&Delete")) - ### View Toolbar ### + # ## View Toolbar # ## self.replot_btn = self.toolbarview.addAction(QtGui.QIcon('share/replot32.png'), _("&Replot")) self.clear_plot_btn = self.toolbarview.addAction(QtGui.QIcon('share/clear_plot32.png'), _("&Clear plot")) self.zoom_in_btn = self.toolbarview.addAction(QtGui.QIcon('share/zoom_in32.png'), _("Zoom In")) @@ -1860,10 +1860,10 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # self.toolbarview.setVisible(False) - ### Shell Toolbar ### + # ## Shell Toolbar # ## self.shell_btn = self.toolbarshell.addAction(QtGui.QIcon('share/shell32.png'), _("&Command Line")) - ### Tools Toolbar ### + # ## Tools Toolbar # ## self.dblsided_btn = self.toolbartools.addAction(QtGui.QIcon('share/doubleside32.png'), _("2Sided Tool")) self.cutout_btn = self.toolbartools.addAction(QtGui.QIcon('share/cut16_bis.png'), _("&Cutout Tool")) self.ncc_btn = self.toolbartools.addAction(QtGui.QIcon('share/ncc16.png'), _("NCC Tool")) @@ -1882,7 +1882,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): _("Calculators Tool")) self.transform_btn = self.toolbartools.addAction(QtGui.QIcon('share/transform.png'), _("Transform Tool")) - ### Excellon Editor Toolbar ### + # ## Excellon Editor Toolbar # ## self.select_drill_btn = self.exc_edit_toolbar.addAction(QtGui.QIcon('share/pointer32.png'), _("Select")) self.add_drill_btn = self.exc_edit_toolbar.addAction(QtGui.QIcon('share/plus16.png'), _('Add Drill Hole')) self.add_drill_array_btn = self.exc_edit_toolbar.addAction( @@ -1897,7 +1897,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.exc_edit_toolbar.addSeparator() self.move_drill_btn = self.exc_edit_toolbar.addAction(QtGui.QIcon('share/move32.png'), _("Move Drill")) - ### Geometry Editor Toolbar ### + # ## Geometry Editor Toolbar # ## self.geo_select_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/pointer32.png'), _("Select 'Esc'")) self.geo_add_circle_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/circle32.png'), _('Add Circle')) self.geo_add_arc_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/arc32.png'), _('Add Arc')) @@ -1934,7 +1934,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.geo_edit_toolbar.addSeparator() self.geo_move_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/move32.png'), _("Move Objects")) - ### Gerber Editor Toolbar ### + # ## Gerber Editor Toolbar # ## self.grb_select_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/pointer32.png'), _("Select")) self.grb_add_pad_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/aperture32.png'), _("Add Pad")) self.add_pad_ar_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/padarray32.png'), _('Add Pad Array')) @@ -1960,7 +1960,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.grb_edit_toolbar.addSeparator() self.aperture_move_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/move32.png'), _("Move")) - ### Snap Toolbar ### + # ## Snap Toolbar # ## # Snap GRID toolbar is always active to facilitate usage of measurements done on GRID # self.addToolBar(self.snap_toolbar) @@ -2813,7 +2813,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # Add Track if key == QtCore.Qt.Key_T or key == 'T': self.app.grb_editor.launched_from_shortcuts = True - ## Current application units in Upper Case + # ## Current application units in Upper Case self.app.grb_editor.select_tool('track') return @@ -2990,7 +2990,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # Add Tool if key == QtCore.Qt.Key_T or key == 'T': self.app.exc_editor.launched_from_shortcuts = True - ## Current application units in Upper Case + # ## Current application units in Upper Case self.units = self.general_defaults_form.general_app_group.units_radio.get_value().upper() tool_add_popup = FCInputDialog(title=_("New Tool ..."), text=_('Enter a Tool Diameter:'), @@ -3996,7 +3996,7 @@ class GerberGenPrefGroupUI(OptionsGroupUI): self.setTitle(str("Gerber General")) - ## Plot options + # ## Plot options self.plot_options_label = QtWidgets.QLabel(_("Plot Options:")) self.layout.addWidget(self.plot_options_label) @@ -4045,7 +4045,7 @@ class GerberOptPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Gerber Options"))) - ## Isolation Routing + # ## Isolation Routing self.isolation_routing_label = QtWidgets.QLabel(_("Isolation Routing:")) self.isolation_routing_label.setToolTip( _("Create a Geometry object with\n" @@ -4104,7 +4104,7 @@ class GerberOptPrefGroupUI(OptionsGroupUI): ) grid0.addWidget(self.combine_passes_cb, 4, 0) - ## Clear non-copper regions + # ## Clear non-copper regions self.clearcopper_label = QtWidgets.QLabel(_("Clear non-copper:")) self.clearcopper_label.setToolTip( _("Create a Geometry object with\n" @@ -4135,7 +4135,7 @@ class GerberOptPrefGroupUI(OptionsGroupUI): ) grid1.addWidget(self.noncopper_rounded_cb, 1, 0, 1, 2) - ## Bounding box + # ## Bounding box self.boundingbox_label = QtWidgets.QLabel(_('Bounding Box:')) self.layout.addWidget(self.boundingbox_label) @@ -4170,7 +4170,7 @@ class GerberAdvOptPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Gerber Adv. Options"))) - ## Advanced Gerber Parameters + # ## Advanced Gerber Parameters self.adv_param_label = QtWidgets.QLabel(_("Advanced Param.:")) self.adv_param_label.setToolTip( _("A list of Gerber advanced parameters.\n" @@ -4619,7 +4619,7 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Excellon Options"))) - ## Create CNC Job + # ## Create CNC Job self.cncjob_label = QtWidgets.QLabel(_('Create CNC Job')) self.cncjob_label.setToolTip( _("Parameters used to create a CNC Job object\n" @@ -4748,7 +4748,7 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): excellon_gcode_type_label.hide() self.excellon_gcode_type_radio.setVisible(False) - #### Milling Holes #### + #### Milling Holes ## ## self.mill_hole_label = QtWidgets.QLabel(_('Mill Holes')) self.mill_hole_label.setToolTip( _("Create Geometry for milling holes.") @@ -4793,9 +4793,9 @@ class ExcellonAdvOptPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Excellon Adv. Options"))) - ###################### - ## ADVANCED OPTIONS ## - ###################### + #################### ## + # ## ADVANCED OPTIONS # ## + #################### ## self.cncjob_label = QtWidgets.QLabel(_('Advanced Options:')) self.cncjob_label.setToolTip( @@ -5035,7 +5035,7 @@ class GeometryGenPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Geometry General"))) - ## Plot options + # ## Plot options self.plot_options_label = QtWidgets.QLabel(_("Plot Options:")) self.layout.addWidget(self.plot_options_label) @@ -5086,7 +5086,7 @@ class GeometryOptPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Geometry Options"))) # ------------------------------ - ## Create CNC Job + # ## Create CNC Job # ------------------------------ self.cncjob_label = QtWidgets.QLabel(_('Create CNC Job:')) self.cncjob_label.setToolTip( @@ -5245,7 +5245,7 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Geometry Adv. Options"))) # ------------------------------ - ## Advanced Options + # ## Advanced Options # ------------------------------ self.cncjob_label = QtWidgets.QLabel(_('Advanced Options:')) self.cncjob_label.setToolTip( @@ -5407,7 +5407,7 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("CNC Job General"))) - ## Plot options + # ## Plot options self.plot_options_label = QtWidgets.QLabel(_("Plot Options:")) self.layout.addWidget(self.plot_options_label) @@ -5493,7 +5493,7 @@ class CNCJobOptPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("CNC Job Options"))) - ## Export G-Code + # ## Export G-Code self.export_gcode_label = QtWidgets.QLabel(_("Export G-Code:")) self.export_gcode_label.setToolTip( _("Export and save G-Code to\n" @@ -5534,7 +5534,7 @@ class CNCJobAdvOptPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("CNC Job Adv. Options"))) - ## Export G-Code + # ## Export G-Code self.export_gcode_label = QtWidgets.QLabel(_("Export G-Code:")) self.export_gcode_label.setToolTip( _("Export and save G-Code to\n" @@ -5617,7 +5617,7 @@ class ToolsNCCPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("NCC Tool Options"))) - ## Clear non-copper regions + # ## Clear non-copper regions self.clearcopper_label = QtWidgets.QLabel(_("Parameters:")) self.clearcopper_label.setToolTip( _("Create a Geometry object with\n" @@ -5718,7 +5718,7 @@ class ToolsCutoutPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Cutout Tool Options"))) - ## Board cuttout + # ## Board cuttout self.board_cutout_label = QtWidgets.QLabel(_("Parameters:")) self.board_cutout_label.setToolTip( _("Create toolpaths to cut around\n" @@ -5797,7 +5797,7 @@ class Tools2sidedPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("2Sided Tool Options"))) - ## Board cuttout + # ## Board cuttout self.dblsided_label = QtWidgets.QLabel(_("Parameters:")) self.dblsided_label.setToolTip( _("A tool to help in creating a double sided\n" @@ -5808,7 +5808,7 @@ class Tools2sidedPrefGroupUI(OptionsGroupUI): grid0 = QtWidgets.QGridLayout() self.layout.addLayout(grid0) - ## Drill diameter for alignment holes + # ## Drill diameter for alignment holes self.drill_dia_entry = LengthEntry() self.dd_label = QtWidgets.QLabel(_("Drill diam.:")) self.dd_label.setToolTip( @@ -5818,7 +5818,7 @@ class Tools2sidedPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.dd_label, 0, 0) grid0.addWidget(self.drill_dia_entry, 0, 1) - ## Axis + # ## Axis self.mirror_axis_radio = RadioSet([{'label': 'X', 'value': 'X'}, {'label': 'Y', 'value': 'Y'}]) self.mirax_label = QtWidgets.QLabel(_("Mirror Axis:")) @@ -5831,7 +5831,7 @@ class Tools2sidedPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.mirax_label, 2, 0) grid0.addWidget(self.mirror_axis_radio, 2, 1) - ## Axis Location + # ## Axis Location self.axis_location_radio = RadioSet([{'label': 'Point', 'value': 'point'}, {'label': 'Box', 'value': 'box'}]) self.axloc_label = QtWidgets.QLabel(_("Axis Ref:")) @@ -5855,7 +5855,7 @@ class ToolsPaintPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Paint Tool Options"))) # ------------------------------ - ## Paint area + # ## Paint area # ------------------------------ self.paint_label = QtWidgets.QLabel(_('Parameters:')) self.paint_label.setToolTip( @@ -5959,7 +5959,7 @@ class ToolsFilmPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Film Tool Options"))) - ## Board cuttout + # ## Board cuttout self.film_label = QtWidgets.QLabel(_("Parameters:")) self.film_label.setToolTip( _("Create a PCB film from a Gerber or Geometry\n" @@ -6020,7 +6020,7 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Panelize Tool Options"))) - ## Board cuttout + # ## Board cuttout self.panelize_label = QtWidgets.QLabel(_("Parameters:")) self.panelize_label.setToolTip( _("Create an object that contains an array of (x, y) elements,\n" @@ -6032,7 +6032,7 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI): grid0 = QtWidgets.QGridLayout() self.layout.addLayout(grid0) - ## Spacing Columns + # ## Spacing Columns self.pspacing_columns = FCEntry() self.spacing_columns_label = QtWidgets.QLabel(_("Spacing cols:")) self.spacing_columns_label.setToolTip( @@ -6042,7 +6042,7 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI): grid0.addWidget(self.spacing_columns_label, 0, 0) grid0.addWidget(self.pspacing_columns, 0, 1) - ## Spacing Rows + # ## Spacing Rows self.pspacing_rows = FCEntry() self.spacing_rows_label = QtWidgets.QLabel(_("Spacing rows:")) self.spacing_rows_label.setToolTip( @@ -6052,7 +6052,7 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI): grid0.addWidget(self.spacing_rows_label, 1, 0) grid0.addWidget(self.pspacing_rows, 1, 1) - ## Columns + # ## Columns self.pcolumns = FCEntry() self.columns_label = QtWidgets.QLabel(_("Columns:")) self.columns_label.setToolTip( @@ -6061,7 +6061,7 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI): grid0.addWidget(self.columns_label, 2, 0) grid0.addWidget(self.pcolumns, 2, 1) - ## Rows + # ## Rows self.prows = FCEntry() self.rows_label = QtWidgets.QLabel(_("Rows:")) self.rows_label.setToolTip( @@ -6070,7 +6070,7 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI): grid0.addWidget(self.rows_label, 3, 0) grid0.addWidget(self.prows, 3, 1) - ## Type of resulting Panel object + # ## Type of resulting Panel object self.panel_type_radio = RadioSet([{'label': 'Gerber', 'value': 'gerber'}, {'label': 'Geo', 'value': 'geometry'}]) self.panel_type_label = QtWidgets.QLabel(_("Panel Type:")) @@ -6083,7 +6083,7 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI): grid0.addWidget(self.panel_type_label, 4, 0) grid0.addWidget(self.panel_type_radio, 4, 1) - ## Constrains + # ## Constrains self.pconstrain_cb = FCCheckBox(_("Constrain within:")) self.pconstrain_cb.setToolTip( _("Area define by DX and DY within to constrain the panel.\n" @@ -6122,7 +6122,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Calculators Tool Options"))) - ## V-shape Calculator Tool + # ## V-shape Calculator Tool self.vshape_tool_label = QtWidgets.QLabel(_("V-Shape Tool Calculator:")) self.vshape_tool_label.setToolTip( _("Calculate the tool diameter for a given V-shape tool,\n" @@ -6134,7 +6134,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): grid0 = QtWidgets.QGridLayout() self.layout.addLayout(grid0) - ## Tip Diameter + # ## Tip Diameter self.tip_dia_entry = FCEntry() self.tip_dia_label = QtWidgets.QLabel(_("Tip Diameter:")) self.tip_dia_label.setToolTip( @@ -6144,7 +6144,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.tip_dia_label, 0, 0) grid0.addWidget(self.tip_dia_entry, 0, 1) - ## Tip angle + # ## Tip angle self.tip_angle_entry = FCEntry() self.tip_angle_label = QtWidgets.QLabel(_("Tip angle:")) self.tip_angle_label.setToolTip( @@ -6154,7 +6154,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.tip_angle_label, 1, 0) grid0.addWidget(self.tip_angle_entry, 1, 1) - ## Depth-of-cut Cut Z + # ## Depth-of-cut Cut Z self.cut_z_entry = FCEntry() self.cut_z_label = QtWidgets.QLabel(_("Cut Z:")) self.cut_z_label.setToolTip( @@ -6164,7 +6164,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.cut_z_label, 2, 0) grid0.addWidget(self.cut_z_entry, 2, 1) - ## Electroplating Calculator Tool + # ## Electroplating Calculator Tool self.plate_title_label = QtWidgets.QLabel(_("ElectroPlating Calculator:")) self.plate_title_label.setToolTip( _("This calculator is useful for those who plate the via/pad/drill holes,\n" @@ -6175,7 +6175,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): grid1 = QtWidgets.QGridLayout() self.layout.addLayout(grid1) - ## PCB Length + # ## PCB Length self.pcblength_entry = FCEntry() self.pcblengthlabel = QtWidgets.QLabel(_("Board Length:")) @@ -6183,7 +6183,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): grid1.addWidget(self.pcblengthlabel, 0, 0) grid1.addWidget(self.pcblength_entry, 0, 1) - ## PCB Width + # ## PCB Width self.pcbwidth_entry = FCEntry() self.pcbwidthlabel = QtWidgets.QLabel(_("Board Width:")) @@ -6191,7 +6191,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): grid1.addWidget(self.pcbwidthlabel, 1, 0) grid1.addWidget(self.pcbwidth_entry, 1, 1) - ## Current Density + # ## Current Density self.cdensity_label = QtWidgets.QLabel(_("Current Density:")) self.cdensity_entry = FCEntry() @@ -6200,7 +6200,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): grid1.addWidget(self.cdensity_label, 2, 0) grid1.addWidget(self.cdensity_entry, 2, 1) - ## PCB Copper Growth + # ## PCB Copper Growth self.growth_label = QtWidgets.QLabel(_("Copper Growth:")) self.growth_entry = FCEntry() @@ -6219,7 +6219,7 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Transform Tool Options"))) - ## Transformations + # ## Transformations self.transform_label = QtWidgets.QLabel(_("Parameters:")) self.transform_label.setToolTip( _("Various transformations that can be applied\n" @@ -6230,7 +6230,7 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): grid0 = QtWidgets.QGridLayout() self.layout.addLayout(grid0) - ## Rotate Angle + # ## Rotate Angle self.rotate_entry = FCEntry() self.rotate_label = QtWidgets.QLabel(_("Rotate Angle:")) self.rotate_label.setToolTip( @@ -6239,7 +6239,7 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.rotate_label, 0, 0) grid0.addWidget(self.rotate_entry, 0, 1) - ## Skew/Shear Angle on X axis + # ## Skew/Shear Angle on X axis self.skewx_entry = FCEntry() self.skewx_label = QtWidgets.QLabel(_("Skew_X angle:")) self.skewx_label.setToolTip( @@ -6248,7 +6248,7 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.skewx_label, 1, 0) grid0.addWidget(self.skewx_entry, 1, 1) - ## Skew/Shear Angle on Y axis + # ## Skew/Shear Angle on Y axis self.skewy_entry = FCEntry() self.skewy_label = QtWidgets.QLabel(_("Skew_Y angle:")) self.skewy_label.setToolTip( @@ -6257,7 +6257,7 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.skewy_label, 2, 0) grid0.addWidget(self.skewy_entry, 2, 1) - ## Scale factor on X axis + # ## Scale factor on X axis self.scalex_entry = FCEntry() self.scalex_label = QtWidgets.QLabel(_("Scale_X factor:")) self.scalex_label.setToolTip( @@ -6266,7 +6266,7 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.scalex_label, 3, 0) grid0.addWidget(self.scalex_entry, 3, 1) - ## Scale factor on X axis + # ## Scale factor on X axis self.scaley_entry = FCEntry() self.scaley_label = QtWidgets.QLabel(_("Scale_Y factor:")) self.scaley_label.setToolTip( @@ -6275,7 +6275,7 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.scaley_label, 4, 0) grid0.addWidget(self.scaley_entry, 4, 1) - ## Link Scale factors + # ## Link Scale factors self.link_cb = FCCheckBox(_("Link")) self.link_cb.setToolTip( _("Scale the selected object(s)\n" @@ -6283,7 +6283,7 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): ) grid0.addWidget(self.link_cb, 5, 0) - ## Scale Reference + # ## Scale Reference self.reference_cb = FCCheckBox(_("Scale Reference")) self.reference_cb.setToolTip( _("Scale the selected object(s)\n" @@ -6293,7 +6293,7 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): ) grid0.addWidget(self.reference_cb, 5, 1) - ## Offset distance on X axis + # ## Offset distance on X axis self.offx_entry = FCEntry() self.offx_label = QtWidgets.QLabel(_("Offset_X val:")) self.offx_label.setToolTip( @@ -6302,7 +6302,7 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.offx_label, 6, 0) grid0.addWidget(self.offx_entry, 6, 1) - ## Offset distance on Y axis + # ## Offset distance on Y axis self.offy_entry = FCEntry() self.offy_label = QtWidgets.QLabel(_("Offset_Y val:")) self.offy_label.setToolTip( @@ -6311,7 +6311,7 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.offy_label, 7, 0) grid0.addWidget(self.offy_entry, 7, 1) - ## Mirror (Flip) Reference Point + # ## Mirror (Flip) Reference Point self.mirror_reference_cb = FCCheckBox(_("Mirror Reference")) self.mirror_reference_cb.setToolTip( _("Flip the selected object(s)\n" @@ -6346,7 +6346,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.setTitle(str(_("SolderPaste Tool Options"))) - ## Solder Paste Dispensing + # ## Solder Paste Dispensing self.solderpastelabel = QtWidgets.QLabel(_("Parameters:")) self.solderpastelabel.setToolTip( _("A tool to create GCode for dispensing\n" diff --git a/flatcamGUI/GUIElements.py b/flatcamGUI/GUIElements.py index 89c2b2bc..fcd8aa61 100644 --- a/flatcamGUI/GUIElements.py +++ b/flatcamGUI/GUIElements.py @@ -1,15 +1,15 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # Author: Juan Pablo Caram (c) # # Date: 2/5/2014 # # MIT Licence # -############################################################ +# ########################################################## ## -############################################################ +# ########################################################## ## # File Modified (major mod): Marius Adrian Stanciu # # Date: 3/10/2019 # -############################################################ +# ########################################################## ## from PyQt5 import QtGui, QtCore, QtWidgets from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot diff --git a/flatcamGUI/ObjectUI.py b/flatcamGUI/ObjectUI.py index 84fd1986..61fa7868 100644 --- a/flatcamGUI/ObjectUI.py +++ b/flatcamGUI/ObjectUI.py @@ -1,15 +1,15 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # Author: Juan Pablo Caram (c) # # Date: 2/5/2014 # # MIT Licence # -############################################################ +# ########################################################## ## -############################################################ +# ########################################################## ## # File Modified (major mod): Marius Adrian Stanciu # # Date: 3/10/2019 # -############################################################ +# ########################################################## ## from PyQt5 import QtGui, QtCore, QtWidgets from PyQt5.QtCore import Qt @@ -36,22 +36,22 @@ class ObjectUI(QtWidgets.QWidget): layout = QtWidgets.QVBoxLayout() self.setLayout(layout) - ## Page Title box (spacing between children) + # ## Page Title box (spacing between children) self.title_box = QtWidgets.QHBoxLayout() layout.addLayout(self.title_box) - ## Page Title icon + # ## Page Title icon pixmap = QtGui.QPixmap(icon_file) self.icon = QtWidgets.QLabel() self.icon.setPixmap(pixmap) self.title_box.addWidget(self.icon, stretch=0) - ## Title label + # ## Title label self.title_label = QtWidgets.QLabel("%s" % title) self.title_label.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) self.title_box.addWidget(self.title_label, stretch=1) - ## App Level label + # ## App Level label self.level = QtWidgets.QLabel("") self.level.setToolTip( _( @@ -66,16 +66,16 @@ class ObjectUI(QtWidgets.QWidget): self.level.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.title_box.addWidget(self.level) - ## Box box for custom widgets + # ## Box box for custom widgets # This gets populated in offspring implementations. self.custom_box = QtWidgets.QVBoxLayout() layout.addLayout(self.custom_box) - ########################### - ## Common to all objects ## - ########################### + ######################### ## + # ## Common to all objects # ## + ######################### ## - #### Scale #### + #### Scale ## ## self.scale_label = QtWidgets.QLabel(_('Scale:')) self.scale_label.setToolTip( _("Change the size of the object.") @@ -104,7 +104,7 @@ class ObjectUI(QtWidgets.QWidget): self.scale_button.setFixedWidth(70) self.scale_grid.addWidget(self.scale_button, 0, 2) - #### Offset #### + #### Offset ## ## self.offset_label = QtWidgets.QLabel(_('Offset:')) self.offset_label.setToolTip( _("Change the position of this object.") @@ -176,7 +176,7 @@ class GerberObjectUI(ObjectUI): self.plot_cb.setFixedWidth(59) grid0.addWidget(self.plot_cb, 0, 3) - ## Object name + # ## Object name self.name_hlay = QtWidgets.QHBoxLayout() self.custom_box.addLayout(self.name_hlay) name_label = QtWidgets.QLabel(_("Name:")) @@ -188,7 +188,7 @@ class GerberObjectUI(ObjectUI): hlay_plot = QtWidgets.QHBoxLayout() self.custom_box.addLayout(hlay_plot) - #### Gerber Apertures #### + #### Gerber Apertures ## ## self.apertures_table_label = QtWidgets.QLabel(_('Apertures:')) self.apertures_table_label.setToolTip( _("Apertures Table for the Gerber Object.") @@ -380,7 +380,7 @@ class GerberObjectUI(ObjectUI): grid2 = QtWidgets.QGridLayout() self.custom_box.addLayout(grid2) - ## Clear non-copper regions + # ## Clear non-copper regions self.clearcopper_label = QtWidgets.QLabel(_("Clear N-copper:")) self.clearcopper_label.setToolTip( _("Create a Geometry object with\n" @@ -396,7 +396,7 @@ class GerberObjectUI(ObjectUI): ) grid2.addWidget(self.generate_ncc_button, 0, 1) - ## Board cutout + # ## Board cutout self.board_cutout_label = QtWidgets.QLabel(_("Board cutout:")) self.board_cutout_label.setToolTip( _("Create toolpaths to cut around\n" @@ -412,7 +412,7 @@ class GerberObjectUI(ObjectUI): ) grid2.addWidget(self.generate_cutout_button, 1, 1) - ## Non-copper regions + # ## Non-copper regions self.noncopper_label = QtWidgets.QLabel(_("Non-copper regions:")) self.noncopper_label.setToolTip( _("Create polygons covering the\n" @@ -450,7 +450,7 @@ class GerberObjectUI(ObjectUI): self.generate_noncopper_button = QtWidgets.QPushButton(_('Generate Geo')) grid4.addWidget(self.generate_noncopper_button, 1, 1) - ## Bounding box + # ## Bounding box self.boundingbox_label = QtWidgets.QLabel(_('Bounding Box:')) self.boundingbox_label.setToolTip( _("Create a geometry surrounding the Gerber object.\n" @@ -498,7 +498,7 @@ class ExcellonObjectUI(ObjectUI): icon_file='share/drill32.png', parent=parent) - #### Plot options #### + #### Plot options ## ## hlay_plot = QtWidgets.QHBoxLayout() self.custom_box.addLayout(hlay_plot) @@ -511,7 +511,7 @@ class ExcellonObjectUI(ObjectUI): hlay_plot.addStretch() hlay_plot.addWidget(self.solid_cb) - ## Object name + # ## Object name self.name_hlay = QtWidgets.QHBoxLayout() self.custom_box.addLayout(self.name_hlay) name_label = QtWidgets.QLabel(_("Name:")) @@ -532,7 +532,7 @@ class ExcellonObjectUI(ObjectUI): hlay_plot = QtWidgets.QHBoxLayout() self.tools_box.addLayout(hlay_plot) - #### Tools Drills #### + #### Tools Drills ## ## self.tools_table_label = QtWidgets.QLabel(_('Tools Table')) self.tools_table_label.setToolTip( _("Tools in this Excellon object\n" @@ -580,7 +580,7 @@ class ExcellonObjectUI(ObjectUI): self.empty_label = QtWidgets.QLabel('') self.tools_box.addWidget(self.empty_label) - #### Create CNC Job #### + #### Create CNC Job ## ## self.cncjob_label = QtWidgets.QLabel(_('Create CNC Job')) self.cncjob_label.setToolTip( _("Create a CNC Job object\n" @@ -768,7 +768,7 @@ class ExcellonObjectUI(ObjectUI): ) self.tools_box.addWidget(self.generate_cnc_button) - #### Milling Holes Drills#### + #### Milling Holes Drills## ## self.mill_hole_label = QtWidgets.QLabel(_('Mill Holes')) self.mill_hole_label.setToolTip( _("Create Geometry for milling holes.") @@ -833,7 +833,7 @@ class GeometryObjectUI(ObjectUI): self.plot_options_label = QtWidgets.QLabel(_("Plot Options:")) self.custom_box.addWidget(self.plot_options_label) - ## Object name + # ## Object name self.name_hlay = QtWidgets.QHBoxLayout() self.custom_box.addLayout(self.name_hlay) name_label = QtWidgets.QLabel(_("Name:")) @@ -854,7 +854,7 @@ class GeometryObjectUI(ObjectUI): hlay_plot = QtWidgets.QHBoxLayout() self.geo_tools_box.addLayout(hlay_plot) - #### Tools #### + #### Tools ## ## self.tools_table_label = QtWidgets.QLabel(_('Tools Table')) self.tools_table_label.setToolTip( _("Tools in this Geometry object used for cutting.\n" @@ -964,7 +964,7 @@ class GeometryObjectUI(ObjectUI): self.grid1.addWidget(self.tool_offset_entry, 0, 1) self.grid1.addWidget(spacer_lbl, 0, 2) - #### Add a new Tool #### + #### Add a new Tool ## ## hlay = QtWidgets.QHBoxLayout() self.geo_tools_box.addLayout(hlay) @@ -1022,7 +1022,7 @@ class GeometryObjectUI(ObjectUI): #----------------------------------- # Create CNC Job #----------------------------------- - #### Tools Data #### + #### Tools Data ## ## self.tool_data_label = QtWidgets.QLabel(_('Tool Data')) self.tool_data_label.setToolTip( _( @@ -1346,7 +1346,7 @@ class CNCObjectUI(ObjectUI): self.offset_label.hide() self.offset_button.hide() - ## Plot options + # ## Plot options self.plot_options_label = QtWidgets.QLabel(_("Plot Options:")) self.custom_box.addWidget(self.plot_options_label) @@ -1366,7 +1366,7 @@ class CNCObjectUI(ObjectUI): {"label": "Cut", "value": "cut"} ], stretch=False) - ## Object name + # ## Object name self.name_hlay = QtWidgets.QHBoxLayout() self.custom_box.addLayout(self.name_hlay) name_label = QtWidgets.QLabel(_("Name:")) @@ -1462,9 +1462,9 @@ class CNCObjectUI(ObjectUI): ) self.custom_box.addWidget(self.updateplot_button) - ################## - ## Export G-Code - ################## + ################ ## + # ## Export G-Code + ################ ## self.export_gcode_label = QtWidgets.QLabel(_("Export CNC Code:")) self.export_gcode_label.setToolTip( _("Export and save G-Code to\n" diff --git a/flatcamGUI/PlotCanvas.py b/flatcamGUI/PlotCanvas.py index e5ffb775..e1957bc9 100644 --- a/flatcamGUI/PlotCanvas.py +++ b/flatcamGUI/PlotCanvas.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://caram.cl/software/flatcam # # Author: Juan Pablo Caram (c) # # Date: 2/5/2014 # # MIT Licence # -############################################################ +# ########################################################## ## from PyQt5 import QtCore @@ -51,7 +51,7 @@ class PlotCanvas(QtCore.QObject): self.vispy_canvas.native.setParent(self.app.ui) self.container.addWidget(self.vispy_canvas.native) - ### AXIS ### + # ## AXIS # ## self.v_line = InfiniteLine(pos=0, color=(0.70, 0.3, 0.3, 1.0), vertical=True, parent=self.vispy_canvas.view.scene) diff --git a/flatcamGUI/VisPyCanvas.py b/flatcamGUI/VisPyCanvas.py index 92a5ba01..9d945440 100644 --- a/flatcamGUI/VisPyCanvas.py +++ b/flatcamGUI/VisPyCanvas.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Dennis Hayrullin # # Date: 2/5/2016 # # MIT Licence # -############################################################ +# ########################################################## ## import numpy as np from PyQt5.QtGui import QPalette diff --git a/flatcamGUI/VisPyPatches.py b/flatcamGUI/VisPyPatches.py index dc4593a5..7e2c5d0d 100644 --- a/flatcamGUI/VisPyPatches.py +++ b/flatcamGUI/VisPyPatches.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Dennis Hayrullin # # Date: 2/5/2016 # # MIT Licence # -############################################################ +# ########################################################## ## from vispy.visuals import markers, LineVisual, InfiniteLineVisual from vispy.visuals.axis import Ticker, _get_ticks_talbot diff --git a/flatcamGUI/VisPyTesselators.py b/flatcamGUI/VisPyTesselators.py index 4645fc38..d7404898 100644 --- a/flatcamGUI/VisPyTesselators.py +++ b/flatcamGUI/VisPyTesselators.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Dennis Hayrullin # # Date: 2/5/2016 # # MIT Licence # -############################################################ +# ########################################################## ## from OpenGL import GLU diff --git a/flatcamGUI/VisPyVisuals.py b/flatcamGUI/VisPyVisuals.py index 59e926af..c6016233 100644 --- a/flatcamGUI/VisPyVisuals.py +++ b/flatcamGUI/VisPyVisuals.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Dennis Hayrullin # # Date: 2/5/2016 # # MIT Licence # -############################################################ +# ########################################################## ## from vispy.visuals import CompoundVisual, LineVisual, MeshVisual, TextVisual, MarkersVisual from vispy.scene.visuals import VisualNode, generate_docstring, visuals diff --git a/flatcamParsers/ParseDXF.py b/flatcamParsers/ParseDXF.py index 327a4d9b..88326afe 100644 --- a/flatcamParsers/ParseDXF.py +++ b/flatcamParsers/ParseDXF.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from shapely.geometry import LineString import logging diff --git a/flatcamParsers/ParseDXF_Spline.py b/flatcamParsers/ParseDXF_Spline.py index b3cb2110..8e0aac59 100644 --- a/flatcamParsers/ParseDXF_Spline.py +++ b/flatcamParsers/ParseDXF_Spline.py @@ -2,12 +2,12 @@ # Vasilis Vlachoudis # Date: 20-Oct-2015 -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File modified: Marius Adrian Stanciu # # Date: 3/10/2019 # -############################################################ +# ########################################################## ## import math import sys diff --git a/flatcamParsers/ParseFont.py b/flatcamParsers/ParseFont.py index a6f89d4f..f7b0034e 100644 --- a/flatcamParsers/ParseFont.py +++ b/flatcamParsers/ParseFont.py @@ -1,15 +1,15 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## -######################################################################### -### Borrowed code from 'https://github.com/gddc/ttfquery/blob/master/ ### -### and made it work with Python 3 ############# -######################################################################### +# ####################################################################### ## +# ## Borrowed code from 'https://github.com/gddc/ttfquery/blob/master/ # ## +# ## and made it work with Python 3 ########### ## +# ####################################################################### ## import re, os, sys, glob import itertools diff --git a/flatcamParsers/ParseSVG.py b/flatcamParsers/ParseSVG.py index dccabc2c..7aabdd85 100644 --- a/flatcamParsers/ParseSVG.py +++ b/flatcamParsers/ParseSVG.py @@ -1,4 +1,4 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # Author: Juan Pablo Caram (c) # @@ -17,7 +17,7 @@ # * All transformations # # # # Reference: www.w3.org/TR/SVG/Overview.html # -############################################################ +# ########################################################## ## # import xml.etree.ElementTree as ET from svg.path import Line, Arc, CubicBezier, QuadraticBezier, parse_path diff --git a/flatcamTools/ToolCalculators.py b/flatcamTools/ToolCalculators.py index 18c63d38..0b2b87a8 100644 --- a/flatcamTools/ToolCalculators.py +++ b/flatcamTools/ToolCalculators.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMTool import FlatCAMTool from FlatCAMObj import * @@ -31,7 +31,7 @@ class ToolCalculator(FlatCAMTool): self.app = app - ## Title + # ## Title title_label = QtWidgets.QLabel("%s" % self.toolName) title_label.setStyleSheet(""" QLabel @@ -42,14 +42,14 @@ class ToolCalculator(FlatCAMTool): """) self.layout.addWidget(title_label) - ###################### - ## Units Calculator ## - ###################### + #################### ## + # ## Units Calculator # ## + #################### ## self.unists_spacer_label = QtWidgets.QLabel(" ") self.layout.addWidget(self.unists_spacer_label) - ## Title of the Units Calculator + # ## Title of the Units Calculator units_label = QtWidgets.QLabel("%s" % self.unitsName) self.layout.addWidget(units_label) @@ -76,18 +76,18 @@ class ToolCalculator(FlatCAMTool): grid_units_layout.addWidget(self.inch_entry, 1, 1) - ############################ - ## V-shape Tool Calculator ## - ############################ + ########################## ## + # ## V-shape Tool Calculator # ## + ########################## ## self.v_shape_spacer_label = QtWidgets.QLabel(" ") self.layout.addWidget(self.v_shape_spacer_label) - ## Title of the V-shape Tools Calculator + # ## Title of the V-shape Tools Calculator v_shape_title_label = QtWidgets.QLabel("%s" % self.v_shapeName) self.layout.addWidget(v_shape_title_label) - ## Form Layout + # ## Form Layout form_layout = QtWidgets.QFormLayout() self.layout.addLayout(form_layout) @@ -127,7 +127,7 @@ class ToolCalculator(FlatCAMTool): form_layout.addRow(self.cutDepth_label, self.cutDepth_entry) form_layout.addRow(self.effectiveToolDia_label, self.effectiveToolDia_entry) - ## Buttons + # ## Buttons self.calculate_vshape_button = QtWidgets.QPushButton(_("Calculate")) # self.calculate_button.setFixedWidth(70) self.calculate_vshape_button.setToolTip( @@ -139,14 +139,14 @@ class ToolCalculator(FlatCAMTool): form_layout.addRow(self.empty_label, self.calculate_vshape_button) - #################################### - ## ElectroPlating Tool Calculator ## - #################################### + ################################## ## + # ## ElectroPlating Tool Calculator # ## + ################################## ## self.plate_spacer_label = QtWidgets.QLabel(" ") self.layout.addWidget(self.plate_spacer_label) - ## Title of the ElectroPlating Tools Calculator + # ## Title of the ElectroPlating Tools Calculator plate_title_label = QtWidgets.QLabel("%s" % self.eplateName) plate_title_label.setToolTip( _("This calculator is useful for those who plate the via/pad/drill holes,\n" @@ -154,7 +154,7 @@ class ToolCalculator(FlatCAMTool): ) self.layout.addWidget(plate_title_label) - ## Plate Form Layout + # ## Plate Form Layout plate_form_layout = QtWidgets.QFormLayout() self.layout.addLayout(plate_form_layout) @@ -210,7 +210,7 @@ class ToolCalculator(FlatCAMTool): plate_form_layout.addRow(self.cvaluelabel, self.cvalue_entry) plate_form_layout.addRow(self.timelabel, self.time_entry) - ## Buttons + # ## Buttons self.calculate_plate_button = QtWidgets.QPushButton(_("Calculate")) # self.calculate_button.setFixedWidth(70) self.calculate_plate_button.setToolTip( @@ -223,7 +223,7 @@ class ToolCalculator(FlatCAMTool): self.layout.addStretch() - ## Signals + # ## Signals self.cutDepth_entry.textChanged.connect(self.on_calculate_tool_dia) self.cutDepth_entry.editingFinished.connect(self.on_calculate_tool_dia) self.tipDia_entry.editingFinished.connect(self.on_calculate_tool_dia) @@ -264,7 +264,7 @@ class ToolCalculator(FlatCAMTool): def set_tool_ui(self): self.units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().upper() - ## Initialize form + # ## Initialize form self.mm_entry.set_value('0') self.inch_entry.set_value('0') diff --git a/flatcamTools/ToolDblSided.py b/flatcamTools/ToolDblSided.py index 1a7f7786..eb1f698c 100644 --- a/flatcamTools/ToolDblSided.py +++ b/flatcamTools/ToolDblSided.py @@ -20,7 +20,7 @@ class DblSidedTool(FlatCAMTool): def __init__(self, app): FlatCAMTool.__init__(self, app) - ## Title + # ## Title title_label = QtWidgets.QLabel("%s" % self.toolName) title_label.setStyleSheet(""" QLabel @@ -34,11 +34,11 @@ class DblSidedTool(FlatCAMTool): self.empty_lb = QtWidgets.QLabel("") self.layout.addWidget(self.empty_lb) - ## Grid Layout + # ## Grid Layout grid_lay = QtWidgets.QGridLayout() self.layout.addLayout(grid_lay) - ## Gerber Object to mirror + # ## Gerber Object to mirror self.gerber_object_combo = QtWidgets.QComboBox() self.gerber_object_combo.setModel(self.app.collection) self.gerber_object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) @@ -62,7 +62,7 @@ class DblSidedTool(FlatCAMTool): grid_lay.addWidget(self.gerber_object_combo, 1, 0) grid_lay.addWidget(self.mirror_gerber_button, 1, 1) - ## Excellon Object to mirror + # ## Excellon Object to mirror self.exc_object_combo = QtWidgets.QComboBox() self.exc_object_combo.setModel(self.app.collection) self.exc_object_combo.setRootModelIndex(self.app.collection.index(1, 0, QtCore.QModelIndex())) @@ -86,7 +86,7 @@ class DblSidedTool(FlatCAMTool): grid_lay.addWidget(self.exc_object_combo, 3, 0) grid_lay.addWidget(self.mirror_exc_button, 3, 1) - ## Geometry Object to mirror + # ## Geometry Object to mirror self.geo_object_combo = QtWidgets.QComboBox() self.geo_object_combo.setModel(self.app.collection) self.geo_object_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex())) @@ -110,11 +110,11 @@ class DblSidedTool(FlatCAMTool): grid_lay.addWidget(self.geo_object_combo, 5, 0) grid_lay.addWidget(self.mirror_geo_button, 5, 1) - ## Grid Layout + # ## Grid Layout grid_lay1 = QtWidgets.QGridLayout() self.layout.addLayout(grid_lay1) - ## Axis + # ## Axis self.mirror_axis = RadioSet([{'label': 'X', 'value': 'X'}, {'label': 'Y', 'value': 'Y'}]) self.mirax_label = QtWidgets.QLabel(_("Mirror Axis:")) @@ -127,7 +127,7 @@ class DblSidedTool(FlatCAMTool): grid_lay1.addWidget(self.mirax_label, 7, 0) grid_lay1.addWidget(self.mirror_axis, 7, 1) - ## Axis Location + # ## Axis Location self.axis_location = RadioSet([{'label': 'Point', 'value': 'point'}, {'label': 'Box', 'value': 'box'}]) self.axloc_label = QtWidgets.QLabel(_("Axis Ref:")) @@ -143,11 +143,11 @@ class DblSidedTool(FlatCAMTool): self.empty_lb2 = QtWidgets.QLabel("") grid_lay1.addWidget(self.empty_lb2, 9, 0) - ## Grid Layout + # ## Grid Layout grid_lay2 = QtWidgets.QGridLayout() self.layout.addLayout(grid_lay2) - ## Point/Box + # ## Point/Box self.point_box_container = QtWidgets.QVBoxLayout() self.pb_label = QtWidgets.QLabel("%s" % _('Point/Box Reference:')) self.pb_label.setToolTip( @@ -189,7 +189,7 @@ class DblSidedTool(FlatCAMTool): self.box_combo_type.hide() - ## Alignment holes + # ## Alignment holes self.ah_label = QtWidgets.QLabel("%s" % _('Alignment Drill Coordinates:')) self.ah_label.setToolTip( _( "Alignment holes (x1, y1), (x2, y2), ... " @@ -220,7 +220,7 @@ class DblSidedTool(FlatCAMTool): grid_lay3.addWidget(self.alignment_holes, 0, 0) grid_lay3.addWidget(self.add_drill_point_button, 0, 1) - ## Drill diameter for alignment holes + # ## Drill diameter for alignment holes self.dt_label = QtWidgets.QLabel("%s:" % _('Alignment Drill Diameter')) self.dt_label.setToolTip( _("Diameter of the drill for the " @@ -243,7 +243,7 @@ class DblSidedTool(FlatCAMTool): hlay2 = QtWidgets.QHBoxLayout() self.layout.addLayout(hlay2) - ## Buttons + # ## Buttons self.create_alignment_hole_button = QtWidgets.QPushButton(_("Create Excellon Object")) self.create_alignment_hole_button.setToolTip( _("Creates an Excellon Object containing the\n" @@ -261,7 +261,7 @@ class DblSidedTool(FlatCAMTool): self.layout.addStretch() - ## Signals + # ## Signals self.create_alignment_hole_button.clicked.connect(self.on_create_alignment_holes) self.mirror_gerber_button.clicked.connect(self.on_mirror_gerber) self.mirror_exc_button.clicked.connect(self.on_mirror_exc) diff --git a/flatcamTools/ToolFilm.py b/flatcamTools/ToolFilm.py index 46a96da5..400a11dd 100644 --- a/flatcamTools/ToolFilm.py +++ b/flatcamTools/ToolFilm.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMTool import FlatCAMTool @@ -165,7 +165,7 @@ class Film(FlatCAMTool): self.layout.addStretch() - ## Signals + # ## Signals self.film_object_button.clicked.connect(self.on_film_creation) self.tf_type_obj_combo.currentIndexChanged.connect(self.on_type_obj_index_changed) self.tf_type_box_combo.currentIndexChanged.connect(self.on_type_box_index_changed) diff --git a/flatcamTools/ToolImage.py b/flatcamTools/ToolImage.py index c1f38dae..a88b82e3 100644 --- a/flatcamTools/ToolImage.py +++ b/flatcamTools/ToolImage.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMTool import FlatCAMTool @@ -144,7 +144,7 @@ class ToolImage(FlatCAMTool): self.layout.addStretch() - ## Signals + # ## Signals self.import_button.clicked.connect(self.on_file_importimage) def run(self, toggle=True): @@ -173,7 +173,7 @@ class ToolImage(FlatCAMTool): FlatCAMTool.install(self, icon, separator, **kwargs) def set_tool_ui(self): - ## Initialize form + # ## Initialize form self.dpi_entry.set_value(96) self.image_type.set_value('black') self.mask_bw_entry.set_value(250) diff --git a/flatcamTools/ToolMeasurement.py b/flatcamTools/ToolMeasurement.py index e2b759f8..7cd0ceb7 100644 --- a/flatcamTools/ToolMeasurement.py +++ b/flatcamTools/ToolMeasurement.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMTool import FlatCAMTool from FlatCAMObj import * @@ -32,11 +32,11 @@ class Measurement(FlatCAMTool): self.canvas = self.app.plotcanvas self.units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().lower() - ## Title + # ## Title title_label = QtWidgets.QLabel("%s
" % self.toolName) self.layout.addWidget(title_label) - ## Form Layout + # ## Form Layout form_layout = QtWidgets.QFormLayout() self.layout.addLayout(form_layout) diff --git a/flatcamTools/ToolMove.py b/flatcamTools/ToolMove.py index 1d0d430c..6c49afcd 100644 --- a/flatcamTools/ToolMove.py +++ b/flatcamTools/ToolMove.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMTool import FlatCAMTool from FlatCAMObj import * diff --git a/flatcamTools/ToolNonCopperClear.py b/flatcamTools/ToolNonCopperClear.py index a29bc229..fb0f703f 100644 --- a/flatcamTools/ToolNonCopperClear.py +++ b/flatcamTools/ToolNonCopperClear.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Modified by: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMTool import FlatCAMTool from copy import copy,deepcopy @@ -38,7 +38,7 @@ class NonCopperClear(FlatCAMTool, Gerber): self.tools_box.setContentsMargins(0, 0, 0, 0) self.tools_frame.setLayout(self.tools_box) - ## Title + # ## Title title_label = QtWidgets.QLabel("%s" % self.toolName) title_label.setStyleSheet(""" QLabel @@ -49,11 +49,11 @@ class NonCopperClear(FlatCAMTool, Gerber): """) self.tools_box.addWidget(title_label) - ## Form Layout + # ## Form Layout form_layout = QtWidgets.QFormLayout() self.tools_box.addLayout(form_layout) - ## Object + # ## Object self.object_combo = QtWidgets.QComboBox() self.object_combo.setModel(self.app.collection) self.object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) @@ -68,7 +68,7 @@ class NonCopperClear(FlatCAMTool, Gerber): form_layout.addRow(self.object_label, self.object_combo) form_layout.addRow(e_lab_0) - #### Tools #### + #### Tools ## ## self.tools_table_label = QtWidgets.QLabel('%s' % _('Tools Table')) self.tools_table_label.setToolTip( _("Tools pool from which the algorithm\n" @@ -113,7 +113,7 @@ class NonCopperClear(FlatCAMTool, Gerber): self.empty_label = QtWidgets.QLabel('') self.tools_box.addWidget(self.empty_label) - #### Add a new Tool #### + #### Add a new Tool ## ## hlay = QtWidgets.QHBoxLayout() self.tools_box.addLayout(hlay) @@ -420,7 +420,7 @@ class NonCopperClear(FlatCAMTool, Gerber): self.tools_table.setItem(row_no, 1, dia) # Diameter self.tools_table.setCellWidget(row_no, 2, tool_type_item) - ### REMEMBER: THIS COLUMN IS HIDDEN IN OBJECTUI.PY ### + # ## REMEMBER: THIS COLUMN IS HIDDEN IN OBJECTUI.PY # ## self.tools_table.setItem(row_no, 3, tool_uid_item) # Tool unique ID # make the diameter column editable diff --git a/flatcamTools/ToolPDF.py b/flatcamTools/ToolPDF.py index a4cc5b8c..decef799 100644 --- a/flatcamTools/ToolPDF.py +++ b/flatcamTools/ToolPDF.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 4/23/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMTool import FlatCAMTool from shapely.geometry import Point, Polygon, LineString @@ -1242,9 +1242,9 @@ class ToolPDF(FlatCAMTool): new_el['follow'] = pdf_geo.exterior apertures_dict[str(aperture)]['geometry'].append(deepcopy(new_el)) - # ############################################### + # ############################################# ## # store the found geometry for filling the path # - # ############################################### + # ############################################# ## # in case that a color change to white (transparent) occurred if flag_clear_geo is True: diff --git a/flatcamTools/ToolPaint.py b/flatcamTools/ToolPaint.py index 381a03d8..e30ac0d6 100644 --- a/flatcamTools/ToolPaint.py +++ b/flatcamTools/ToolPaint.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Modified: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMTool import FlatCAMTool from copy import copy,deepcopy @@ -29,7 +29,7 @@ class ToolPaint(FlatCAMTool, Gerber): FlatCAMTool.__init__(self, app) Geometry.__init__(self, geo_steps_per_circle=self.app.defaults["geometry_circle_steps"]) - ## Title + # ## Title title_label = QtWidgets.QLabel("%s" % self.toolName) title_label.setStyleSheet(""" QLabel @@ -47,11 +47,11 @@ class ToolPaint(FlatCAMTool, Gerber): self.tools_box.setContentsMargins(0, 0, 0, 0) self.tools_frame.setLayout(self.tools_box) - ## Form Layout + # ## Form Layout form_layout = QtWidgets.QFormLayout() self.tools_box.addLayout(form_layout) - ## Object + # ## Object self.object_combo = QtWidgets.QComboBox() self.object_combo.setModel(self.app.collection) self.object_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex())) @@ -65,7 +65,7 @@ class ToolPaint(FlatCAMTool, Gerber): form_layout.addRow(self.object_label, self.object_combo) form_layout.addRow(e_lab_0) - #### Tools #### + #### Tools ## ## self.tools_table_label = QtWidgets.QLabel('%s' % _('Tools Table')) self.tools_table_label.setToolTip( _("Tools pool from which the algorithm\n" @@ -110,7 +110,7 @@ class ToolPaint(FlatCAMTool, Gerber): self.empty_label = QtWidgets.QLabel('') self.tools_box.addWidget(self.empty_label) - #### Add a new Tool #### + #### Add a new Tool ## ## hlay = QtWidgets.QHBoxLayout() self.tools_box.addLayout(hlay) @@ -305,7 +305,7 @@ class ToolPaint(FlatCAMTool, Gerber): self.tool_type_item_options = ["C1", "C2", "C3", "C4", "B", "V"] - ## Signals + # ## Signals self.addtool_btn.clicked.connect(self.on_tool_add) self.addtool_entry.returnPressed.connect(self.on_tool_add) # self.copytool_btn.clicked.connect(lambda: self.on_tool_copy()) @@ -365,7 +365,7 @@ class ToolPaint(FlatCAMTool, Gerber): self.tools_frame.show() self.reset_fields() - ## Init the GUI interface + # ## Init the GUI interface self.paintmargin_entry.set_value(self.default_data["paintmargin"]) self.paintmethod_combo.set_value(self.default_data["paintmethod"]) self.selectmethod_combo.set_value(self.default_data["selectmethod"]) @@ -484,7 +484,7 @@ class ToolPaint(FlatCAMTool, Gerber): self.tools_table.setItem(row_no, 1, dia) # Diameter self.tools_table.setCellWidget(row_no, 2, tool_type_item) - ### REMEMBER: THIS COLUMN IS HIDDEN IN OBJECTUI.PY ### + # ## REMEMBER: THIS COLUMN IS HIDDEN IN OBJECTUI.PY # ## self.tools_table.setItem(row_no, 3, tool_uid_item) # Tool unique ID # make the diameter column editable @@ -1035,13 +1035,13 @@ class ToolPaint(FlatCAMTool, Gerber): if reset: self.flat_geometry = [] - ## If iterable, expand recursively. + # ## If iterable, expand recursively. try: for geo in geometry: if geo is not None: recurse(geometry=geo, reset=False) - ## Not iterable, do the actual indexing and add. + # ## Not iterable, do the actual indexing and add. except TypeError: self.flat_geometry.append(geometry) diff --git a/flatcamTools/ToolPanelize.py b/flatcamTools/ToolPanelize.py index ed3c0e8f..b3af88a0 100644 --- a/flatcamTools/ToolPanelize.py +++ b/flatcamTools/ToolPanelize.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMTool import FlatCAMTool from copy import copy, deepcopy @@ -28,7 +28,7 @@ class Panelize(FlatCAMTool): super(Panelize, self).__init__(self) self.app = app - ## Title + # ## Title title_label = QtWidgets.QLabel("%s" % self.toolName) title_label.setStyleSheet(""" QLabel diff --git a/flatcamTools/ToolPcbWizard.py b/flatcamTools/ToolPcbWizard.py index e4338b4d..e1eccdb7 100644 --- a/flatcamTools/ToolPcbWizard.py +++ b/flatcamTools/ToolPcbWizard.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 4/15/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMTool import FlatCAMTool @@ -152,7 +152,7 @@ class PcbWizard(FlatCAMTool): self.modified_excellon_file = '' - ## Signals + # ## Signals self.excellon_brn.clicked.connect(self.on_load_excellon_click) self.inf_btn.clicked.connect(self.on_load_inf_click) self.import_button.clicked.connect(lambda: self.on_import_excellon( @@ -207,7 +207,7 @@ class PcbWizard(FlatCAMTool): self.exc_file_content = None self.tools_from_inf = {} - ## Initialize form + # ## Initialize form self.int_entry.set_value(self.integral) self.frac_entry.set_value(self.fractional) self.zeros_radio.set_value(self.zeros) diff --git a/flatcamTools/ToolProperties.py b/flatcamTools/ToolProperties.py index 6b2ac1a8..175d9097 100644 --- a/flatcamTools/ToolProperties.py +++ b/flatcamTools/ToolProperties.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from PyQt5 import QtGui, QtCore, QtWidgets from PyQt5.QtCore import Qt @@ -37,7 +37,7 @@ class Properties(FlatCAMTool): self.properties_box.setContentsMargins(0, 0, 0, 0) self.properties_frame.setLayout(self.properties_box) - ## Title + # ## Title title_label = QtWidgets.QLabel("%s" % self.toolName) title_label.setStyleSheet(""" QLabel diff --git a/flatcamTools/ToolShell.py b/flatcamTools/ToolShell.py index 7032ab81..ac5ed996 100644 --- a/flatcamTools/ToolShell.py +++ b/flatcamTools/ToolShell.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # Author: Juan Pablo Caram (c) # # Date: 2/5/2014 # # MIT Licence # -############################################################ +# ########################################################## ## # from PyQt5.QtCore import pyqtSignal from PyQt5.QtCore import Qt diff --git a/flatcamTools/ToolSolderPaste.py b/flatcamTools/ToolSolderPaste.py index 61600239..11c6556d 100644 --- a/flatcamTools/ToolSolderPaste.py +++ b/flatcamTools/ToolSolderPaste.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMTool import FlatCAMTool from FlatCAMCommon import LoudDict @@ -39,7 +39,7 @@ class SolderPaste(FlatCAMTool): def __init__(self, app): FlatCAMTool.__init__(self, app) - ## Title + # ## Title title_label = QtWidgets.QLabel("%s" % self.toolName) title_label.setStyleSheet(""" QLabel @@ -50,11 +50,11 @@ class SolderPaste(FlatCAMTool): """) self.layout.addWidget(title_label) - ## Form Layout + # ## Form Layout obj_form_layout = QtWidgets.QFormLayout() self.layout.addLayout(obj_form_layout) - ## Gerber Object to be used for solderpaste dispensing + # ## Gerber Object to be used for solderpaste dispensing self.obj_combo = FCComboBox(callback=self.on_rmb_combo) self.obj_combo.setModel(self.app.collection) self.obj_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) @@ -66,7 +66,7 @@ class SolderPaste(FlatCAMTool): ) obj_form_layout.addRow(self.object_label, self.obj_combo) - #### Tools #### + #### Tools ## ## self.tools_table_label = QtWidgets.QLabel('%s' % _('Tools Table')) self.tools_table_label.setToolTip( _("Tools pool from which the algorithm\n" @@ -94,7 +94,7 @@ class SolderPaste(FlatCAMTool): _( "Nozzle tool Diameter. It's value (in current FlatCAM units)\n" "is the width of the solder paste dispensed.")) - #### Add a new Tool #### + #### Add a new Tool ## ## hlay_tools = QtWidgets.QHBoxLayout() self.layout.addLayout(hlay_tools) @@ -135,7 +135,7 @@ class SolderPaste(FlatCAMTool): self.layout.addSpacing(10) - ## Buttons + # ## Buttons grid0_1 = QtWidgets.QGridLayout() self.layout.addLayout(grid0_1) @@ -157,7 +157,7 @@ class SolderPaste(FlatCAMTool): self.gcode_box.setContentsMargins(0, 0, 0, 0) self.gcode_frame.setLayout(self.gcode_box) - ## Form Layout + # ## Form Layout self.gcode_form_layout = QtWidgets.QFormLayout() self.gcode_box.addLayout(self.gcode_form_layout) @@ -283,7 +283,7 @@ class SolderPaste(FlatCAMTool): self.pp_combo.setStyleSheet('background-color: rgb(255,255,255)') self.gcode_form_layout.addRow(pp_label, self.pp_combo) - ## Buttons + # ## Buttons grid1 = QtWidgets.QGridLayout() self.gcode_box.addLayout(grid1) @@ -301,7 +301,7 @@ class SolderPaste(FlatCAMTool): self.generation_frame.setLayout(self.generation_box) - ## Buttons + # ## Buttons grid2 = QtWidgets.QGridLayout() self.generation_box.addLayout(grid2) @@ -313,11 +313,11 @@ class SolderPaste(FlatCAMTool): grid2.addWidget(step2_lbl, 0, 0) grid2.addWidget(self.soldergeo_btn, 0, 2) - ## Form Layout + # ## Form Layout geo_form_layout = QtWidgets.QFormLayout() self.generation_box.addLayout(geo_form_layout) - ## Geometry Object to be used for solderpaste dispensing + # ## Geometry Object to be used for solderpaste dispensing self.geo_obj_combo = FCComboBox(callback=self.on_rmb_combo) self.geo_obj_combo.setModel(self.app.collection) self.geo_obj_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex())) @@ -346,11 +346,11 @@ class SolderPaste(FlatCAMTool): grid3.addWidget(step3_lbl, 0, 0) grid3.addWidget(self.solder_gcode_btn, 0, 2) - ## Form Layout + # ## Form Layout cnc_form_layout = QtWidgets.QFormLayout() self.generation_box.addLayout(cnc_form_layout) - ## Gerber Object to be used for solderpaste dispensing + # ## Gerber Object to be used for solderpaste dispensing self.cnc_obj_combo = FCComboBox(callback=self.on_rmb_combo) self.cnc_obj_combo.setModel(self.app.collection) self.cnc_obj_combo.setRootModelIndex(self.app.collection.index(3, 0, QtCore.QModelIndex())) @@ -412,7 +412,7 @@ class SolderPaste(FlatCAMTool): # action to be added in the combobox context menu self.combo_context_del_action = QtWidgets.QAction(QtGui.QIcon('share/trash16.png'), _("Delete Object")) - ## Signals + # ## Signals self.combo_context_del_action.triggered.connect(self.on_delete_object) self.addtool_btn.clicked.connect(self.on_tool_add) self.addtool_entry.returnPressed.connect(self.on_tool_add) @@ -995,7 +995,7 @@ class SolderPaste(FlatCAMTool): if reset: self.flat_geometry = [] - ## If iterable, expand recursively. + # ## If iterable, expand recursively. try: for geo in geometry: if geo is not None: @@ -1003,7 +1003,7 @@ class SolderPaste(FlatCAMTool): reset=False, pathonly=pathonly) - ## Not iterable, do the actual indexing and add. + # ## Not iterable, do the actual indexing and add. except TypeError: if pathonly and type(geometry) == Polygon: self.flat_geometry.append(geometry.exterior) @@ -1226,7 +1226,7 @@ class SolderPaste(FlatCAMTool): job_obj.options["tooldia"] = tool_dia job_obj.options['tool_dia'] = tool_dia - ### CREATE GCODE ### + # ## CREATE GCODE # ## res = job_obj.generate_gcode_from_solderpaste_geo(**tooluid_value) if res == 'fail': @@ -1235,7 +1235,7 @@ class SolderPaste(FlatCAMTool): else: tool_cnc_dict['gcode'] = res - ### PARSE GCODE ### + # ## PARSE GCODE # ## tool_cnc_dict['gcode_parsed'] = job_obj.gcode_parse() # TODO this serve for bounding box creation only; should be optimized @@ -1380,7 +1380,7 @@ class SolderPaste(FlatCAMTool): gcode += obj.cnc_tools[tool]['gcode'] lines = StringIO(gcode) - ## Write + # ## Write if filename is not None: try: with open(filename, 'w') as f: diff --git a/flatcamTools/ToolSub.py b/flatcamTools/ToolSub.py index 5d8a40a2..aa5159b2 100644 --- a/flatcamTools/ToolSub.py +++ b/flatcamTools/ToolSub.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 4/24/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMTool import FlatCAMTool diff --git a/flatcamTools/ToolTransform.py b/flatcamTools/ToolTransform.py index 392d6387..0e9a9b8b 100644 --- a/flatcamTools/ToolTransform.py +++ b/flatcamTools/ToolTransform.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMTool import FlatCAMTool from FlatCAMObj import * @@ -32,7 +32,7 @@ class ToolTransform(FlatCAMTool): self.transform_lay = QtWidgets.QVBoxLayout() self.layout.addLayout(self.transform_lay) - ## Title + # ## Title title_label = QtWidgets.QLabel("%s" % self.toolName) title_label.setStyleSheet(""" QLabel @@ -56,11 +56,11 @@ class ToolTransform(FlatCAMTool): self.empty_label4.setFixedWidth(70) self.transform_lay.addWidget(self.empty_label) - ## Rotate Title + # ## Rotate Title rotate_title_label = QtWidgets.QLabel("%s" % self.rotateName) self.transform_lay.addWidget(rotate_title_label) - ## Layout + # ## Layout form_layout = QtWidgets.QFormLayout() self.transform_lay.addLayout(form_layout) form_child = QtWidgets.QHBoxLayout() @@ -94,11 +94,11 @@ class ToolTransform(FlatCAMTool): self.transform_lay.addWidget(self.empty_label1) - ## Skew Title + # ## Skew Title skew_title_label = QtWidgets.QLabel("%s" % self.skewName) self.transform_lay.addWidget(skew_title_label) - ## Form Layout + # ## Form Layout form1_layout = QtWidgets.QFormLayout() self.transform_lay.addLayout(form1_layout) form1_child_1 = QtWidgets.QHBoxLayout() @@ -151,11 +151,11 @@ class ToolTransform(FlatCAMTool): self.transform_lay.addWidget(self.empty_label2) - ## Scale Title + # ## Scale Title scale_title_label = QtWidgets.QLabel("%s" % self.scaleName) self.transform_lay.addWidget(scale_title_label) - ## Form Layout + # ## Form Layout form2_layout = QtWidgets.QFormLayout() self.transform_lay.addLayout(form2_layout) form2_child_1 = QtWidgets.QHBoxLayout() @@ -225,11 +225,11 @@ class ToolTransform(FlatCAMTool): self.transform_lay.addWidget(self.empty_label3) - ## Offset Title + # ## Offset Title offset_title_label = QtWidgets.QLabel("%s" % self.offsetName) self.transform_lay.addWidget(offset_title_label) - ## Form Layout + # ## Form Layout form3_layout = QtWidgets.QFormLayout() self.transform_lay.addLayout(form3_layout) form3_child_1 = QtWidgets.QHBoxLayout() @@ -280,11 +280,11 @@ class ToolTransform(FlatCAMTool): self.transform_lay.addWidget(self.empty_label4) - ## Flip Title + # ## Flip Title flip_title_label = QtWidgets.QLabel("%s" % self.flipName) self.transform_lay.addWidget(flip_title_label) - ## Form Layout + # ## Form Layout form4_layout = QtWidgets.QFormLayout() form4_child_hlay = QtWidgets.QHBoxLayout() self.transform_lay.addLayout(form4_child_hlay) @@ -355,7 +355,7 @@ class ToolTransform(FlatCAMTool): self.transform_lay.addStretch() - ## Signals + # ## Signals self.rotate_button.clicked.connect(self.on_rotate) self.skewx_button.clicked.connect(self.on_skewx) self.skewy_button.clicked.connect(self.on_skewy) @@ -401,7 +401,7 @@ class ToolTransform(FlatCAMTool): FlatCAMTool.install(self, icon, separator, shortcut='ALT+R', **kwargs) def set_tool_ui(self): - ## Initialize form + # ## Initialize form if self.app.defaults["tools_transform_rotate"]: self.rotate_entry.set_value(self.app.defaults["tools_transform_rotate"]) else: diff --git a/make_win.py b/make_win.py index e029d2f6..6b9029d3 100644 --- a/make_win.py +++ b/make_win.py @@ -1,4 +1,4 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # Author: Juan Pablo Caram (c) # @@ -11,12 +11,12 @@ # This is not an aid to install FlatCAM from source on # # Windows platforms. It is only useful when FlatCAM is up # # and running and ready to be packaged. # -############################################################ +# ########################################################## ## -############################################################ +# ########################################################## ## # File Modified (major mod): Marius Adrian Stanciu # # Date: 3/10/2019 # -############################################################ +# ########################################################## ## # Files not needed: Qt, tk.dll, tcl.dll, tk/, tcl/, vtk/, diff --git a/postprocessors/Paste_1.py b/postprocessors/Paste_1.py index 79587265..c397bddd 100644 --- a/postprocessors/Paste_1.py +++ b/postprocessors/Paste_1.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMPostProc import * diff --git a/postprocessors/Repetier.py b/postprocessors/Repetier.py index 74add556..3308598e 100644 --- a/postprocessors/Repetier.py +++ b/postprocessors/Repetier.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMPostProc import * diff --git a/postprocessors/Roland_MDX_20.py b/postprocessors/Roland_MDX_20.py index 3a451042..de1e872f 100644 --- a/postprocessors/Roland_MDX_20.py +++ b/postprocessors/Roland_MDX_20.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMPostProc import * diff --git a/postprocessors/Toolchange_Custom.py b/postprocessors/Toolchange_Custom.py index abdbf899..c98ef5fe 100644 --- a/postprocessors/Toolchange_Custom.py +++ b/postprocessors/Toolchange_Custom.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMPostProc import * diff --git a/postprocessors/Toolchange_Probe_MACH3.py b/postprocessors/Toolchange_Probe_MACH3.py index 60f42926..0df3cc66 100644 --- a/postprocessors/Toolchange_Probe_MACH3.py +++ b/postprocessors/Toolchange_Probe_MACH3.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMPostProc import * diff --git a/postprocessors/Toolchange_manual.py b/postprocessors/Toolchange_manual.py index 148fc2c7..d4fe3c08 100644 --- a/postprocessors/Toolchange_manual.py +++ b/postprocessors/Toolchange_manual.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMPostProc import * diff --git a/postprocessors/default.py b/postprocessors/default.py index d9e6a241..0b1e8db2 100644 --- a/postprocessors/default.py +++ b/postprocessors/default.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Matthieu Berthomé # # Date: 5/26/2017 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMPostProc import * diff --git a/postprocessors/grbl_11.py b/postprocessors/grbl_11.py index cae2f39a..efa44c90 100644 --- a/postprocessors/grbl_11.py +++ b/postprocessors/grbl_11.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Matthieu Berthomé # # Date: 5/26/2017 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMPostProc import * diff --git a/postprocessors/grbl_laser.py b/postprocessors/grbl_laser.py index 66285191..5065942f 100644 --- a/postprocessors/grbl_laser.py +++ b/postprocessors/grbl_laser.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Matthieu Berthomé # # Date: 5/26/2017 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMPostProc import * diff --git a/postprocessors/hpgl.py b/postprocessors/hpgl.py index 9b4ca374..fde770ac 100644 --- a/postprocessors/hpgl.py +++ b/postprocessors/hpgl.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMPostProc import * diff --git a/postprocessors/line_xyz.py b/postprocessors/line_xyz.py index b9c7aebd..52f49179 100644 --- a/postprocessors/line_xyz.py +++ b/postprocessors/line_xyz.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMPostProc import * diff --git a/postprocessors/marlin.py b/postprocessors/marlin.py index d0859faf..129cedd1 100644 --- a/postprocessors/marlin.py +++ b/postprocessors/marlin.py @@ -1,10 +1,10 @@ -############################################################ +# ########################################################## ## # FlatCAM: 2D Post-processing for Manufacturing # # http://flatcam.org # # File Author: Marius Adrian Stanciu (c) # # Date: 3/10/2019 # # MIT Licence # -############################################################ +# ########################################################## ## from FlatCAMPostProc import * From b7023d8ef6da1d18018277ceff44d4964725f428 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Thu, 30 May 2019 21:15:09 +0300 Subject: [PATCH 07/23] - more PEP8 cleanup --- FlatCAMObj.py | 18 ++++++------------ ObjectCollection.py | 23 +++++++++++------------ README.md | 1 + 3 files changed, 18 insertions(+), 24 deletions(-) diff --git a/FlatCAMObj.py b/FlatCAMObj.py index e5dc3409..65f2c62c 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -3036,6 +3036,9 @@ 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. @@ -3394,11 +3397,11 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): try: # works for CheckBoxes self.ui.grid3.itemAt(i).widget().stateChanged.connect(self.gui_form_to_storage) - except: + except Exception as e: # works for ComboBoxes try: self.ui.grid3.itemAt(i).widget().currentIndexChanged.connect(self.gui_form_to_storage) - except: + except Exception as e2: # works for Entry try: self.ui.grid3.itemAt(i).widget().editingFinished.connect(self.gui_form_to_storage) @@ -3495,13 +3498,6 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): def on_tool_add(self, dia=None): self.ui_disconnect() - last_offset = None - last_offset_value = None - last_type = None - last_tool_type = None - last_data = None - last_solid_geometry = [] - # if a Tool diameter entered is a char instead a number the final message of Tool adding is changed # because the Default value for Tool is used. change_message = False @@ -3550,7 +3546,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): self.tools.update({ self.tooluid: { 'tooldia': tooldia, - 'offset': ('Path'), + 'offset': 'Path', 'offset_value': 0.0, 'type': _('Rough'), 'tool_type': 'C1', @@ -3559,7 +3555,6 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): } }) else: - # print("LAST", self.tools[maxuid]) last_data = self.tools[max_uid]['data'] last_offset = self.tools[max_uid]['offset'] last_offset_value = self.tools[max_uid]['offset_value'] @@ -3583,7 +3578,6 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): 'solid_geometry': deepcopy(last_solid_geometry) } }) - # print("CURRENT", self.tools[-1]) self.ui.tool_offset_entry.hide() self.ui.tool_offset_lbl.hide() diff --git a/ObjectCollection.py b/ObjectCollection.py index 8454be93..862a4375 100644 --- a/ObjectCollection.py +++ b/ObjectCollection.py @@ -20,9 +20,9 @@ from PyQt5.QtCore import Qt import gettext import FlatCAMTranslation as fcTranslate +import builtins fcTranslate.apply_language('strings') -import builtins if '_' not in builtins.__dict__: _ = gettext.gettext @@ -526,8 +526,8 @@ class ObjectCollection(QtCore.QAbstractItemModel): ymin = min([ymin, gymin]) xmax = max([xmax, gxmax]) ymax = max([ymax, gymax]) - except: - FlatCAMApp.App.log.warning("DEV WARNING: Tried to get bounds of empty geometry.") + except Exception as e: + FlatCAMApp.App.log.warning("DEV WARNING: Tried to get bounds of empty geometry. %s" % str(e)) return [xmin, ymin, xmax, ymax] @@ -537,12 +537,12 @@ class ObjectCollection(QtCore.QAbstractItemModel): :param name: The name of the object. :type name: str + :param isCaseSensitive: whether searching of the object is done by name where the name is case sensitive :return: The requested object or None if no such object. :rtype: FlatCAMObj or None """ FlatCAMApp.App.log.debug(str(inspect.stack()[1][3]) + "--> OC.get_by_name()") - if isCaseSensitive is None or isCaseSensitive is True: for obj in self.get_list(): if obj.options['name'] == name: @@ -570,10 +570,9 @@ class ObjectCollection(QtCore.QAbstractItemModel): self.app.myKeywords.remove(name) self.app.shell._edit.set_model_data(self.app.myKeywords) self.app.ui.code_editor.set_model_data(self.app.myKeywords) - except: + except Exception as e: log.debug( - "delete_active() --> Could not remove the old object name from auto-completer model list") - + "delete_active() --> Could not remove the old object name from auto-completer model list. %s" % str(e)) self.beginRemoveRows(self.index(group.row(), 0, QtCore.QModelIndex()), active.row(), active.row()) @@ -650,12 +649,12 @@ class ObjectCollection(QtCore.QAbstractItemModel): :return: List of objects """ - l = self.get_list() + obj_list = self.get_list() for sel in self.get_selected(): - l.remove(sel) + obj_list.remove(sel) - return l + return obj_list def set_active(self, name): """ @@ -732,8 +731,8 @@ class ObjectCollection(QtCore.QAbstractItemModel): self.app.inform.emit('') try: self.app.ui.selected_scroll_area.takeWidget() - except: - FlatCAMApp.App.log.debug("Nothing to remove") + except Exception as e: + FlatCAMApp.App.log.debug("Nothing to remove. %s" % str(e)) self.app.setup_component_editor() return diff --git a/README.md b/README.md index 80dfca43..3fe39cc2 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ CAD program, and create G-Code for Isolation routing. - solved issue #292 where a new geometry renamed with many underscores failed to store the name in a saved project - the name for the saved projects are updated to the current time and not to the time of the app startup - some PEP8 changes related to comments starting with only one '#' symbol +- more PEP8 cleanup 24.05.2019 From b35ac779bd8bffd9fbac569237549699b8d97984 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Thu, 30 May 2019 21:21:44 +0300 Subject: [PATCH 08/23] - solved issue where after the opening of an object the file path is not saved for further open operations --- FlatCAMApp.py | 8 ++++---- README.md | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index f2570f42..a2c97520 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -7690,8 +7690,9 @@ class App(QtCore.QObject): try: d = json.load(f, object_hook=dict2obj) - except: - App.log.error("Failed to parse project file, trying to see if it loads as an LZMA archive: %s" % filename) + except Exception as e: + App.log.error("Failed to parse project file, trying to see if it loads as an LZMA archive: %s because %s" % + (filename, str(e))) f.close() # Open and parse a compressed Project file @@ -7704,8 +7705,6 @@ class App(QtCore.QObject): self.inform.emit(_("[ERROR_NOTCL] Failed to open project file: %s") % filename) return - self.file_opened.emit("project", filename) - # Clear the current project # # NOT THREAD SAFE # ## if run_from_arg is True: @@ -7729,6 +7728,7 @@ class App(QtCore.QObject): self.inform.emit(_("[success] Project loaded from: %s") % filename) self.should_we_save = False + self.file_opened.emit("project", filename) App.log.debug("Project loaded") diff --git a/README.md b/README.md index 3fe39cc2..5017ba3e 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ CAD program, and create G-Code for Isolation routing. - the name for the saved projects are updated to the current time and not to the time of the app startup - some PEP8 changes related to comments starting with only one '#' symbol - more PEP8 cleanup +- solved issue where after the opening of an object the file path is not saved for further open operations 24.05.2019 From 9abb9c5df24aa22a068444d03d50d49842a3a4cc Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 31 May 2019 12:43:30 +0300 Subject: [PATCH 09/23] - added the possibility to display text annotation for the CNC travel lines. The setting is both in Preferences and in the CNC object properties --- FlatCAMApp.py | 2 ++ FlatCAMObj.py | 23 +++++++++++++++++++++++ README.md | 4 ++++ camlib.py | 9 +++++++-- flatcamGUI/FlatCAMGUI.py | 31 +++++++++++++++++++++++-------- flatcamGUI/ObjectUI.py | 19 ++++++++++++++++--- flatcamGUI/PlotCanvas.py | 2 +- 7 files changed, 76 insertions(+), 14 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index a2c97520..fbb8e8e4 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -466,6 +466,7 @@ class App(QtCore.QObject): # CNCJob General "cncjob_plot": self.ui.cncjob_defaults_form.cncjob_gen_group.plot_cb, "cncjob_plot_kind": self.ui.cncjob_defaults_form.cncjob_gen_group.cncplot_method_radio, + "cncjob_annotation": self.ui.cncjob_defaults_form.cncjob_gen_group.annotation_cb, "cncjob_tooldia": self.ui.cncjob_defaults_form.cncjob_gen_group.tooldia_entry, "cncjob_coords_decimals": self.ui.cncjob_defaults_form.cncjob_gen_group.coords_dec_entry, "cncjob_fr_decimals": self.ui.cncjob_defaults_form.cncjob_gen_group.fr_dec_entry, @@ -790,6 +791,7 @@ class App(QtCore.QObject): # CNC Job General "cncjob_plot": True, "cncjob_plot_kind": 'all', + "cncjob_annotation": True, "cncjob_tooldia": 0.0393701, "cncjob_coords_decimals": 4, "cncjob_fr_decimals": 2, diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 65f2c62c..7d705cd1 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -90,6 +90,8 @@ class FlatCAMObj(QtCore.QObject): self.isHovering = False self.notHovering = True + self.units = 'IN' + # assert isinstance(self.ui, ObjectUI) # self.ui.name_entry.returnPressed.connect(self.on_name_activate) # self.ui.offset_button.clicked.connect(self.on_offset_button_click) @@ -4274,6 +4276,8 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): # Object initialization function for app.new_object() # RUNNING ON SEPARATE THREAD! def job_init_single_geometry(job_obj, app_obj): + log.debug("Creating a CNCJob out of a single-geometry") + assert isinstance(job_obj, FlatCAMCNCjob), \ "Initializer expected a FlatCAMCNCjob, got %s" % type(job_obj) @@ -4485,6 +4489,8 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): # Object initialization function for app.new_object() # RUNNING ON SEPARATE THREAD! def job_init_multi_geometry(job_obj, app_obj): + log.debug("Creating a CNCJob out of a multi-geometry") + assert isinstance(job_obj, FlatCAMCNCjob), \ "Initializer expected a FlatCAMCNCjob, got %s" % type(job_obj) @@ -5461,6 +5467,15 @@ class FlatCAMCNCjob(FlatCAMObj, CNCjob): # set the kind of geometries are plotted by default with plot2() from camlib.CNCJob self.ui.cncplot_method_combo.set_value(self.app.defaults["cncjob_plot_kind"]) + try: + self.ui.annotation_cb.stateChanged.disconnect(self.on_annotation_change) + except: + pass + self.ui.annotation_cb.stateChanged.connect(self.on_annotation_change) + + # set if to display text annotations + self.ui.annotation_cb.set_value(self.app.defaults["cncjob_annotation"]) + # Show/Hide Advanced Options if self.app.defaults["global_app_level"] == 'b': self.ui.level.setText(_( @@ -5910,6 +5925,14 @@ class FlatCAMCNCjob(FlatCAMObj, CNCjob): self.shapes.clear(update=True) self.annotation.clear(update=True) + 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) + def convert_units(self, units): factor = CNCjob.convert_units(self, units) FlatCAMApp.App.log.debug("FlatCAMCNCjob.convert_units()") diff --git a/README.md b/README.md index 5017ba3e..f51aef39 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing. ================================================= +31.05.2019 + +- added the possibility to display text annotation for the CNC travel lines. The setting is both in Preferences and in the CNC object properties + 30.05.2019 - editing a multi geometry will no longer pop-up a Tcl window diff --git a/camlib.py b/camlib.py index fc2956f0..67ec9250 100644 --- a/camlib.py +++ b/camlib.py @@ -6487,6 +6487,7 @@ class CNCjob(Geometry): :param tool_tolerance: Tolerance when drawing the toolshape. :return: None """ + # units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().upper() gcode_parsed = gcode_parsed if gcode_parsed else self.gcode_parsed path_num = 0 @@ -6504,7 +6505,6 @@ class CNCjob(Geometry): elif kind == 'cut': if geo['kind'][0] == 'C': obj.add_shape(shape=geo['geom'], color=color['C'][1], visible=visible) - else: text = [] pos = [] @@ -6512,7 +6512,12 @@ class CNCjob(Geometry): path_num += 1 text.append(str(path_num)) - pos.append(geo['geom'].coords[0]) + current_position = geo['geom'].coords[0] + if current_position in pos: + corrected_position = (current_position[0], current_position[1] + tooldia) + pos.append(corrected_position) + else: + pos.append(current_position) # plot the geometry of Excellon objects if self.origin_kind == 'excellon': diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index f072a512..52029cae 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -5443,15 +5443,30 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.cncplot_method_radio, 1, 1) grid0.addWidget(QtWidgets.QLabel(''), 1, 2) + # Display Annotation + self.annotation_label = QtWidgets.QLabel(_("Display Annotation:")) + self.annotation_label.setToolTip( + _( + "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." + ) + ) + self.annotation_cb = FCCheckBox() + + grid0.addWidget(self.annotation_label, 2, 0) + grid0.addWidget(self.annotation_cb, 2, 1) + grid0.addWidget(QtWidgets.QLabel(''), 2, 2) + # Number of circle steps for circular aperture linear approximation self.steps_per_circle_label = QtWidgets.QLabel(_("Circle Steps:")) self.steps_per_circle_label.setToolTip( _("The number of circle steps for GCode \n" "circle and arc shapes linear approximation.") ) - grid0.addWidget(self.steps_per_circle_label, 2, 0) + grid0.addWidget(self.steps_per_circle_label, 3, 0) self.steps_per_circle_entry = IntEntry() - grid0.addWidget(self.steps_per_circle_entry, 2, 1) + grid0.addWidget(self.steps_per_circle_entry, 3, 1) # Tool dia for plot tdlabel = QtWidgets.QLabel(_('Tool dia:')) @@ -5459,9 +5474,9 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI): _("Diameter of the tool to be\n" "rendered in the plot.") ) - grid0.addWidget(tdlabel, 3, 0) + grid0.addWidget(tdlabel, 4, 0) self.tooldia_entry = LengthEntry() - grid0.addWidget(self.tooldia_entry, 3, 1) + grid0.addWidget(self.tooldia_entry,4, 1) # Number of decimals to use in GCODE coordinates cdeclabel = QtWidgets.QLabel(_('Coords dec.:')) @@ -5469,9 +5484,9 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI): _("The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)") ) - grid0.addWidget(cdeclabel, 4, 0) + grid0.addWidget(cdeclabel, 5, 0) self.coords_dec_entry = IntEntry() - grid0.addWidget(self.coords_dec_entry, 4, 1) + grid0.addWidget(self.coords_dec_entry, 5, 1) # Number of decimals to use in GCODE feedrate frdeclabel = QtWidgets.QLabel(_('Feedrate dec.:')) @@ -5479,9 +5494,9 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI): _("The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)") ) - grid0.addWidget(frdeclabel, 5, 0) + grid0.addWidget(frdeclabel, 6, 0) self.fr_dec_entry = IntEntry() - grid0.addWidget(self.fr_dec_entry, 5, 1) + grid0.addWidget(self.fr_dec_entry, 6, 1) self.layout.addStretch() diff --git a/flatcamGUI/ObjectUI.py b/flatcamGUI/ObjectUI.py index 61fa7868..013a0951 100644 --- a/flatcamGUI/ObjectUI.py +++ b/flatcamGUI/ObjectUI.py @@ -1366,6 +1366,16 @@ class CNCObjectUI(ObjectUI): {"label": "Cut", "value": "cut"} ], stretch=False) + self.annotation_label = QtWidgets.QLabel(_("Display Annotation:")) + self.annotation_label.setToolTip( + _( + "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." + ) + ) + self.annotation_cb = FCCheckBox() + # ## Object name self.name_hlay = QtWidgets.QHBoxLayout() self.custom_box.addLayout(self.name_hlay) @@ -1399,9 +1409,12 @@ class CNCObjectUI(ObjectUI): f_lay.addWidget(self.cncplot_method_label, 0, 0) f_lay.addWidget(self.cncplot_method_combo, 0, 1) f_lay.addWidget(QtWidgets.QLabel(''), 0, 2) - f_lay.addWidget(self.t_distance_label, 1, 0) - f_lay.addWidget(self.t_distance_entry, 1, 1) - f_lay.addWidget(self.units_label, 1, 2) + f_lay.addWidget(self.annotation_label, 1, 0) + f_lay.addWidget(self.annotation_cb, 1, 1) + f_lay.addWidget(QtWidgets.QLabel(''), 1, 2) + f_lay.addWidget(self.t_distance_label, 2, 0) + f_lay.addWidget(self.t_distance_entry, 2, 1) + f_lay.addWidget(self.units_label, 2, 2) self.t_distance_label.hide() self.t_distance_entry.setVisible(False) diff --git a/flatcamGUI/PlotCanvas.py b/flatcamGUI/PlotCanvas.py index e1957bc9..915f9ba4 100644 --- a/flatcamGUI/PlotCanvas.py +++ b/flatcamGUI/PlotCanvas.py @@ -74,7 +74,7 @@ class PlotCanvas(QtCore.QObject): self.text_collection = self.new_text_collection() # TODO: Should be setting to show/hide CNC job annotations (global or per object) - self.text_collection.enabled = False + self.text_collection.enabled = True # draw a rectangle made out of 4 lines on the canvas to serve as a hint for the work area # all CNC have a limited workspace From dca57edf249684714f30b4adbabd60215706aac4 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 1 Jun 2019 03:17:28 +0300 Subject: [PATCH 10/23] - fixed text annotation for CNC job so there are no overlapping numbers when 2 lines meet on the same point - fixed issue in CNC job plotting where some of the isolation polygons are painted incorrectly - fixed issue in CNCJob where the set circle steps is not used --- FlatCAMApp.py | 2 +- README.md | 6 ++++++ camlib.py | 37 ++++++++++++++++++------------------- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index fbb8e8e4..a5898ee7 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -795,7 +795,7 @@ class App(QtCore.QObject): "cncjob_tooldia": 0.0393701, "cncjob_coords_decimals": 4, "cncjob_fr_decimals": 2, - "cncjob_steps_per_circle": 64, + "cncjob_steps_per_circle": 128, # CNC Job Options "cncjob_prepend": "", diff --git a/README.md b/README.md index f51aef39..bbbadd2e 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,12 @@ CAD program, and create G-Code for Isolation routing. ================================================= +1.06.2019 + +- fixed text annotation for CNC job so there are no overlapping numbers when 2 lines meet on the same point +- fixed issue in CNC job plotting where some of the isolation polygons are painted incorrectly +- fixed issue in CNCJob where the set circle steps is not used + 31.05.2019 - added the possibility to display text annotation for the CNC travel lines. The setting is both in Preferences and in the CNC object properties diff --git a/camlib.py b/camlib.py index 67ec9250..71eae17a 100644 --- a/camlib.py +++ b/camlib.py @@ -4909,7 +4909,6 @@ class CNCjob(Geometry): "pp_geometry_name":'default', "pp_excellon_name":'default', "excellon_optimization_type": "B", - "steps_per_circle": 64 } def __init__(self, @@ -4926,11 +4925,9 @@ class CNCjob(Geometry): steps_per_circle=None): # Used when parsing G-code arcs - if steps_per_circle is None: - steps_per_circle = int(CNCjob.defaults["steps_per_circle"]) - self.steps_per_circle = int(steps_per_circle) + self.steps_per_circle = int(self.app.defaults['cncjob_steps_per_circle']) - Geometry.__init__(self, geo_steps_per_circle=int(steps_per_circle)) + Geometry.__init__(self, geo_steps_per_circle=self.steps_per_circle) self.kind = kind self.origin_kind = None @@ -6420,9 +6417,7 @@ class CNCjob(Geometry): radius = sqrt(gobj['I']**2 + gobj['J']**2) start = arctan2(-gobj['J'], -gobj['I']) stop = arctan2(-center[1] + y, -center[0] + x) - path += arc(center, radius, start, stop, - arcdir[current['G']], - int(self.steps_per_circle / 4)) + path += arc(center, radius, start, stop, arcdir[current['G']], int(self.steps_per_circle / 4)) # Update current instruction for code in gobj: @@ -6509,15 +6504,17 @@ class CNCjob(Geometry): text = [] pos = [] for geo in gcode_parsed: - path_num += 1 - - text.append(str(path_num)) - current_position = geo['geom'].coords[0] - if current_position in pos: - corrected_position = (current_position[0], current_position[1] + tooldia) - pos.append(corrected_position) - else: - pos.append(current_position) + if geo['kind'][0] == 'T': + current_position = geo['geom'].coords[0] + if current_position not in pos: + pos.append(current_position) + path_num += 1 + text.append(str(path_num)) + current_position = geo['geom'].coords[-1] + if current_position not in pos: + pos.append(current_position) + path_num += 1 + text.append(str(path_num)) # plot the geometry of Excellon objects if self.origin_kind == 'excellon': @@ -6525,10 +6522,12 @@ class CNCjob(Geometry): poly = Polygon(geo['geom']) except ValueError: # if the geos are travel lines it will enter into Exception - poly = geo['geom'].buffer(tooldia / 2.0).simplify(tool_tolerance) + poly = geo['geom'].buffer(distance=(tooldia / 1.99999999), resolution=self.steps_per_circle) + poly = poly.simplify(tool_tolerance) else: # plot the geometry of any objects other than Excellon - poly = geo['geom'].buffer(tooldia / 2.0).simplify(tool_tolerance) + poly = geo['geom'].buffer(distance=(tooldia / 1.99999999), resolution=self.steps_per_circle) + poly = poly.simplify(tool_tolerance) if kind == 'all': obj.add_shape(shape=poly, color=color[geo['kind'][0]][1], face_color=color[geo['kind'][0]][0], From c409df0a8e728455601b1e040dcaf14ad7387f5d Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sun, 2 Jun 2019 14:04:14 +0300 Subject: [PATCH 11/23] - fixed issue with geometry name not being updated immediately after change while doing geocutout TclCommand - some changes to enable/disable project context menu entry handlers --- FlatCAMApp.py | 104 ++++++++++------------------- FlatCAMObj.py | 1 - README.md | 5 ++ tclCommands/TclCommandCutout.py | 2 +- tclCommands/TclCommandGeoCutout.py | 3 +- 5 files changed, 43 insertions(+), 72 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index a5898ee7..c94f0052 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -1404,8 +1404,8 @@ class App(QtCore.QObject): self.ui.menuhelp_videohelp.triggered.connect(lambda: webbrowser.open(self.video_url)) self.ui.menuhelp_shortcut_list.triggered.connect(self.on_shortcut_list) - self.ui.menuprojectenable.triggered.connect(lambda: self.enable_plots(self.collection.get_selected())) - self.ui.menuprojectdisable.triggered.connect(lambda: self.disable_plots(self.collection.get_selected())) + self.ui.menuprojectenable.triggered.connect(self.on_enable_sel_plots) + self.ui.menuprojectdisable.triggered.connect(self.on_disable_sel_plots) self.ui.menuprojectgeneratecnc.triggered.connect(lambda: self.generate_cnc_job(self.collection.get_selected())) self.ui.menuprojectviewsource.triggered.connect(self.on_view_source) @@ -5159,7 +5159,6 @@ class App(QtCore.QObject): :return: None """ - # self.plotcanvas.auto_adjust_axes() self.plotcanvas.vispy_canvas.update() # TODO: Need update canvas? self.on_zoom_fit(None) self.collection.update_view() @@ -8278,85 +8277,52 @@ The normal flow when working in FlatCAM is the following:

self.enable_plots(self.collection.get_list()) self.inform.emit(_("[success] All plots enabled.")) - # TODO: FIX THIS - ''' - By default this is not threaded - If threaded the app give warnings like this: - - QObject::connect: Cannot queue arguments of type 'QVector' - (Make sure 'QVector' is registered using qRegisterMetaType(). - ''' - def enable_plots(self, objects, threaded=True): - if threaded is True: - def worker_task(app_obj): - # percentage = 0.1 - # try: - # delta = 0.9 / len(objects) - # except ZeroDivisionError: - # self.progress.emit(0) - # return - for obj in objects: - obj.options['plot'] = True - # percentage += delta - # self.progress.emit(int(percentage*100)) + def on_enable_sel_plots(self): + object_list = self.collection.get_selected() + self.enable_plots(objects=object_list) + self.inform.emit(_("[success] Selected plots enabled...")) - # self.progress.emit(0) - self.plots_updated.emit() - # self.collection.update_view() + def on_disable_sel_plots(self): + # self.inform.emit(_("Disabling plots ...")) + object_list = self.collection.get_selected() + self.disable_plots(objects=object_list) + self.inform.emit(_("[success] Selected plots disabled...")) - # Send to worker - # self.worker.add_task(worker_task, [self]) - self.worker_task.emit({'fcn': worker_task, 'params': [self]}) - else: - for obj in objects: - obj.options['plot'] = True - # self.progress.emit(0) - self.plots_updated.emit() - # self.collection.update_view() - - # TODO: FIX THIS - ''' - By default this is not threaded - If threaded the app give warnings like this: - - QObject::connect: Cannot queue arguments of type 'QVector' - (Make sure 'QVector' is registered using qRegisterMetaType(). - ''' - def disable_plots(self, objects, threaded=True): - # TODO: This method is very similar to replot_all. Try to merge. + def enable_plots(self, objects): """ Disables plots - :param objects: list - Objects to be disabled + :param objects: list of Objects to be enabled :return: """ - if threaded is True: - # self.progress.emit(10) - def worker_task(app_obj): - # percentage = 0.1 - # try: - # delta = 0.9 / len(objects) - # except ZeroDivisionError: - # self.progress.emit(0) - # return + log.debug("Enabling plots ...") - for obj in objects: - obj.options['plot'] = False - # percentage += delta - # self.progress.emit(int(percentage*100)) + def worker_task(app_obj): + # app_obj.inform.emit(_("Enabling plots ...")) + for obj in objects: + obj.options['plot'] = True + self.plots_updated.emit() - # self.progress.emit(0) - self.plots_updated.emit() - # self.collection.update_view() + # Send to worker + self.worker_task.emit({'fcn': worker_task, 'params': [self]}) - # Send to worker - self.worker_task.emit({'fcn': worker_task, 'params': [self]}) - else: + def disable_plots(self, objects): + """ + Disables plots + :param objects: list of Objects to be disabled + :return: + """ + + log.debug("Disabling plots ...") + + def worker_task(app_obj): + self.inform.emit(_("Disabling plots ...")) for obj in objects: obj.options['plot'] = False self.plots_updated.emit() - # self.collection.update_view() + + # Send to worker + self.worker_task.emit({'fcn': worker_task, 'params': [self]}) def clear_plots(self): diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 7d705cd1..21c9705d 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -137,7 +137,6 @@ class FlatCAMObj(QtCore.QObject): if key == 'plot': self.visible = self.options['plot'] - # self.emit(QtCore.SIGNAL("optionChanged"), key) self.optionChanged.emit(key) def set_ui(self, ui): diff --git a/README.md b/README.md index bbbadd2e..ceaf70b8 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,11 @@ CAD program, and create G-Code for Isolation routing. ================================================= +2.06.2019 + +- fixed issue with geometry name not being updated immediately after change while doing geocutout TclCommand +- some changes to enable/disable project context menu entry handlers + 1.06.2019 - fixed text annotation for CNC job so there are no overlapping numbers when 2 lines meet on the same point diff --git a/tclCommands/TclCommandCutout.py b/tclCommands/TclCommandCutout.py index ce1c26d7..49bb5440 100644 --- a/tclCommands/TclCommandCutout.py +++ b/tclCommands/TclCommandCutout.py @@ -120,7 +120,7 @@ class TclCommandCutout(TclCommand): geo_obj.solid_geometry = cascaded_union([LineString(segment) for segment in cuts]) try: - obj.app.new_object("geometry", name + "_cutout", geo_init_me) + self.app.new_object("geometry", name + "_cutout", geo_init_me) self.app.inform.emit("[success] Rectangular-form Cutout operation finished.") except Exception as e: return "Operation failed: %s" % str(e) diff --git a/tclCommands/TclCommandGeoCutout.py b/tclCommands/TclCommandGeoCutout.py index bf370086..076d037e 100644 --- a/tclCommands/TclCommandGeoCutout.py +++ b/tclCommands/TclCommandGeoCutout.py @@ -221,6 +221,7 @@ class TclCommandGeoCutout(TclCommandSignaled): cutout_obj.plot() self.app.inform.emit("[success] Any-form Cutout operation finished.") + self.app.plots_updated.emit() elif isinstance(cutout_obj, FlatCAMGerber): def geo_init(geo_obj, app_obj): @@ -267,7 +268,7 @@ class TclCommandGeoCutout(TclCommandSignaled): ymin - gapsize, px + gapsize, ymax + gapsize) - geo_obj.solid_geometry = geo + geo_obj.solid_geometry = deepcopy(geo) outname = cutout_obj.options["name"] + "_cutout" self.app.new_object('geometry', outname, geo_init) From 2a30101bb01b10fd7327676a9312103ddfd4e52a Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Mon, 3 Jun 2019 04:47:29 +0300 Subject: [PATCH 12/23] - TclCommand Geocutout is now creating a new geometry object when working on a geometry, preserving also the origin object --- FlatCAMApp.py | 25 +++--- FlatCAMObj.py | 18 ++--- README.md | 4 + camlib.py | 6 +- flatcamTools/ToolCutOut.py | 4 +- tclCommands/TclCommandGeoCutout.py | 125 ++++++++++++++++++++--------- 6 files changed, 110 insertions(+), 72 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index c94f0052..819a6faa 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -8278,11 +8278,14 @@ The normal flow when working in FlatCAM is the following:

self.inform.emit(_("[success] All plots enabled.")) def on_enable_sel_plots(self): + log.debug("App.on_enable_sel_plot()") object_list = self.collection.get_selected() self.enable_plots(objects=object_list) self.inform.emit(_("[success] Selected plots enabled...")) def on_disable_sel_plots(self): + log.debug("App.on_disable_sel_plot()") + # self.inform.emit(_("Disabling plots ...")) object_list = self.collection.get_selected() self.disable_plots(objects=object_list) @@ -8297,14 +8300,9 @@ The normal flow when working in FlatCAM is the following:

log.debug("Enabling plots ...") - def worker_task(app_obj): - # app_obj.inform.emit(_("Enabling plots ...")) - for obj in objects: - obj.options['plot'] = True - self.plots_updated.emit() - - # Send to worker - self.worker_task.emit({'fcn': worker_task, 'params': [self]}) + for obj in objects: + obj.options['plot'] = True + self.plots_updated.emit() def disable_plots(self, objects): """ @@ -8315,14 +8313,9 @@ The normal flow when working in FlatCAM is the following:

log.debug("Disabling plots ...") - def worker_task(app_obj): - self.inform.emit(_("Disabling plots ...")) - for obj in objects: - obj.options['plot'] = False - self.plots_updated.emit() - - # Send to worker - self.worker_task.emit({'fcn': worker_task, 'params': [self]}) + for obj in objects: + obj.options['plot'] = False + self.plots_updated.emit() def clear_plots(self): diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 21c9705d..a2cb16f9 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -137,7 +137,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 @@ -297,8 +297,6 @@ class FlatCAMObj(QtCore.QObject): return False self.clear() - - return True def serialize(self): @@ -346,7 +344,7 @@ class FlatCAMObj(QtCore.QObject): # Not all object types has annotations try: self.annotation.visible = value - except AttributeError: + except Exception as e: pass @property @@ -366,12 +364,6 @@ class FlatCAMObj(QtCore.QObject): except AttributeError: pass - # Not all object types have mark_shapes - # try: - # self.mark_shapes.clear(update) - # except AttributeError: - # pass - def delete(self): # Free resources del self.ui @@ -1054,7 +1046,6 @@ class FlatCAMGerber(FlatCAMObj, Gerber): :param kwargs: color and face_color :return: """ - FlatCAMApp.App.log.debug(str(inspect.stack()[1][3]) + " --> FlatCAMGerber.plot()") # Does all the required setup and returns False @@ -1066,6 +1057,7 @@ class FlatCAMGerber(FlatCAMObj, Gerber): color = kwargs['color'] else: color = self.app.defaults['global_plot_line'] + if 'face_color' in kwargs: face_color = kwargs['face_color'] else: @@ -1079,7 +1071,7 @@ class FlatCAMGerber(FlatCAMObj, Gerber): # Make sure geometry is iterable. try: - _ = iter(geometry) + __ = iter(geometry) except TypeError: geometry = [geometry] @@ -2796,7 +2788,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): # this stays for compatibility reasons, in case we try to open old projects try: - _ = iter(self.solid_geometry) + __ = iter(self.solid_geometry) except TypeError: self.solid_geometry = [self.solid_geometry] diff --git a/README.md b/README.md index ceaf70b8..d17b2cc9 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing. ================================================= +3.06.2019 + +- TclCommand Geocutout is now creating a new geometry object when working on a geometry, preserving also the origin object + 2.06.2019 - fixed issue with geometry name not being updated immediately after change while doing geocutout TclCommand diff --git a/camlib.py b/camlib.py index 71eae17a..62a65b79 100644 --- a/camlib.py +++ b/camlib.py @@ -7294,7 +7294,7 @@ def dict2obj(d): # def plotg(geo, solid_poly=False, color="black"): # try: -# _ = iter(geo) +# __ = iter(geo) # except: # geo = [geo] # @@ -7327,7 +7327,7 @@ def dict2obj(d): # continue # # try: -# _ = iter(g) +# __ = iter(g) # plotg(g, color=color) # except: # log.error("Cannot plot: " + str(type(g))) @@ -7633,7 +7633,7 @@ def parse_gerber_number(strnumber, int_digits, frac_digits, zeros): def autolist(obj): try: - _ = iter(obj) + __ = iter(obj) return obj except TypeError: return [obj] diff --git a/flatcamTools/ToolCutOut.py b/flatcamTools/ToolCutOut.py index 19f5df24..20167ebd 100644 --- a/flatcamTools/ToolCutOut.py +++ b/flatcamTools/ToolCutOut.py @@ -415,7 +415,7 @@ class CutOut(FlatCAMTool): object_geo = cutout_obj.solid_geometry try: - _ = iter(object_geo) + __ = iter(object_geo) except TypeError: object_geo = [object_geo] @@ -565,7 +565,7 @@ class CutOut(FlatCAMTool): object_geo = cutout_obj.solid_geometry try: - _ = iter(object_geo) + __ = iter(object_geo) except TypeError: object_geo = [object_geo] diff --git a/tclCommands/TclCommandGeoCutout.py b/tclCommands/TclCommandGeoCutout.py index 076d037e..211af47e 100644 --- a/tclCommands/TclCommandGeoCutout.py +++ b/tclCommands/TclCommandGeoCutout.py @@ -179,49 +179,97 @@ class TclCommandGeoCutout(TclCommandSignaled): if isinstance(cutout_obj, FlatCAMGeometry): # rename the obj name so it can be identified as cutout - cutout_obj.options["name"] += "_cutout" + # cutout_obj.options["name"] += "_cutout" - if gaps_u == 8 or gaps_u == '2lr': - subtract_rectangle(cutout_obj, - xmin - gapsize, # botleft_x - py - gapsize + lenghty / 4, # botleft_y - xmax + gapsize, # topright_x - py + gapsize + lenghty / 4) # topright_y - subtract_rectangle(cutout_obj, - xmin - gapsize, - py - gapsize - lenghty / 4, - xmax + gapsize, - py + gapsize - lenghty / 4) + # if gaps_u == 8 or gaps_u == '2lr': + # subtract_rectangle(cutout_obj, + # xmin - gapsize, # botleft_x + # py - gapsize + lenghty / 4, # botleft_y + # xmax + gapsize, # topright_x + # py + gapsize + lenghty / 4) # topright_y + # subtract_rectangle(cutout_obj, + # xmin - gapsize, + # py - gapsize - lenghty / 4, + # xmax + gapsize, + # py + gapsize - lenghty / 4) + # + # if gaps_u == 8 or gaps_u == '2tb': + # subtract_rectangle(cutout_obj, + # px - gapsize + lenghtx / 4, + # ymin - gapsize, + # px + gapsize + lenghtx / 4, + # ymax + gapsize) + # subtract_rectangle(cutout_obj, + # px - gapsize - lenghtx / 4, + # ymin - gapsize, + # px + gapsize - lenghtx / 4, + # ymax + gapsize) + # + # if gaps_u == 4 or gaps_u == 'lr': + # subtract_rectangle(cutout_obj, + # xmin - gapsize, + # py - gapsize, + # xmax + gapsize, + # py + gapsize) + # + # if gaps_u == 4 or gaps_u == 'tb': + # subtract_rectangle(cutout_obj, + # px - gapsize, + # ymin - gapsize, + # px + gapsize, + # ymax + gapsize) - if gaps_u == 8 or gaps_u == '2tb': - subtract_rectangle(cutout_obj, - px - gapsize + lenghtx / 4, - ymin - gapsize, - px + gapsize + lenghtx / 4, - ymax + gapsize) - subtract_rectangle(cutout_obj, - px - gapsize - lenghtx / 4, - ymin - gapsize, - px + gapsize - lenghtx / 4, - ymax + gapsize) + def geo_init(geo_obj, app_obj): + geo = deepcopy(cutout_obj.solid_geometry) - if gaps_u == 4 or gaps_u == 'lr': - subtract_rectangle(cutout_obj, - xmin - gapsize, - py - gapsize, - xmax + gapsize, - py + gapsize) + if gaps_u == 8 or gaps_u == '2lr': + geo = substract_rectangle_geo(geo, + xmin - gapsize, # botleft_x + py - gapsize + lenghty / 4, # botleft_y + xmax + gapsize, # topright_x + py + gapsize + lenghty / 4) # topright_y + geo = substract_rectangle_geo(geo, + xmin - gapsize, + py - gapsize - lenghty / 4, + xmax + gapsize, + py + gapsize - lenghty / 4) - if gaps_u == 4 or gaps_u == 'tb': - subtract_rectangle(cutout_obj, - px - gapsize, - ymin - gapsize, - px + gapsize, - ymax + gapsize) + if gaps_u == 8 or gaps_u == '2tb': + geo = substract_rectangle_geo(geo, + px - gapsize + lenghtx / 4, + ymin - gapsize, + px + gapsize + lenghtx / 4, + ymax + gapsize) + geo = substract_rectangle_geo(geo, + px - gapsize - lenghtx / 4, + ymin - gapsize, + px + gapsize - lenghtx / 4, + ymax + gapsize) - cutout_obj.plot() - self.app.inform.emit("[success] Any-form Cutout operation finished.") - self.app.plots_updated.emit() + if gaps_u == 4 or gaps_u == 'lr': + geo = substract_rectangle_geo(geo, + xmin - gapsize, + py - gapsize, + xmax + gapsize, + py + gapsize) + + if gaps_u == 4 or gaps_u == 'tb': + geo = substract_rectangle_geo(geo, + px - gapsize, + ymin - gapsize, + px + gapsize, + ymax + gapsize) + geo_obj.solid_geometry = deepcopy(geo) + app_obj.disable_plots(objects=[cutout_obj]) + + app_obj.inform.emit("[success] Any-form Cutout operation finished.") + + outname = cutout_obj.options["name"] + "_cutout" + self.app.new_object('geometry', outname, geo_init) + + # cutout_obj.plot() + # self.app.inform.emit("[success] Any-form Cutout operation finished.") + # self.app.plots_updated.emit() elif isinstance(cutout_obj, FlatCAMGerber): def geo_init(geo_obj, app_obj): @@ -269,6 +317,7 @@ class TclCommandGeoCutout(TclCommandSignaled): px + gapsize, ymax + gapsize) geo_obj.solid_geometry = deepcopy(geo) + app_obj.inform.emit("[success] Any-form Cutout operation finished.") outname = cutout_obj.options["name"] + "_cutout" self.app.new_object('geometry', outname, geo_init) From f06fec12ea4dc99c3f0f8acaa64657c638e8c426 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Mon, 3 Jun 2019 22:59:45 +0300 Subject: [PATCH 13/23] - added a new parameter in Edit -> Preferences -> CNCJob named Annotation Color; it controls the color of the font used for annotations - added a new parameter in Edit -> Preferences -> CNCJob named Annotation Size; it controls the size of the font used for annotations - made visibility change threaded in FlatCAMObj() --- FlatCAMApp.py | 49 ++++++++++++++++++++++++++++---- FlatCAMObj.py | 17 +++++++---- README.md | 3 ++ camlib.py | 4 ++- flatcamGUI/FlatCAMGUI.py | 58 +++++++++++++++++++++++++++++--------- flatcamGUI/VisPyVisuals.py | 18 ++++++++++-- 6 files changed, 120 insertions(+), 29 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 819a6faa..3dfd5a30 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -467,6 +467,9 @@ class App(QtCore.QObject): "cncjob_plot": self.ui.cncjob_defaults_form.cncjob_gen_group.plot_cb, "cncjob_plot_kind": self.ui.cncjob_defaults_form.cncjob_gen_group.cncplot_method_radio, "cncjob_annotation": self.ui.cncjob_defaults_form.cncjob_gen_group.annotation_cb, + "cncjob_annotation_fontsize": self.ui.cncjob_defaults_form.cncjob_gen_group.annotation_fontsize_sp, + "cncjob_annotation_fontcolor": self.ui.cncjob_defaults_form.cncjob_gen_group.annotation_fontcolor_entry, + "cncjob_tooldia": self.ui.cncjob_defaults_form.cncjob_gen_group.tooldia_entry, "cncjob_coords_decimals": self.ui.cncjob_defaults_form.cncjob_gen_group.coords_dec_entry, "cncjob_fr_decimals": self.ui.cncjob_defaults_form.cncjob_gen_group.fr_dec_entry, @@ -792,6 +795,8 @@ class App(QtCore.QObject): "cncjob_plot": True, "cncjob_plot_kind": 'all', "cncjob_annotation": True, + "cncjob_annotation_fontsize": 9, + "cncjob_annotation_fontcolor": '#990000', "cncjob_tooldia": 0.0393701, "cncjob_coords_decimals": 4, "cncjob_fr_decimals": 2, @@ -1176,11 +1181,11 @@ class App(QtCore.QObject): # # ## Define OBJECT COLLECTION # ## self.collection = ObjectCollection(self) self.ui.project_tab_layout.addWidget(self.collection.view) - # # ## + # ### self.log.debug("Finished creating Object Collection.") - # # ## Initialize the color box's color in Preferences -> Global -> Color + # ### Initialize the color box's color in Preferences -> Global -> Color # Init Plot Colors self.ui.general_defaults_form.general_gui_group.pf_color_entry.set_value(self.defaults['global_plot_fill']) self.ui.general_defaults_form.general_gui_group.pf_color_button.setStyleSheet( @@ -1243,9 +1248,15 @@ class App(QtCore.QObject): self.defaults['global_proj_item_dis_color']) self.ui.general_defaults_form.general_gui_group.proj_color_dis_button.setStyleSheet( "background-color:%s" % str(self.defaults['global_proj_item_dis_color'])[:7]) - # # ## End of Data ## ## - # # ## Plot Area ## ## + # Init the Annotation CNC Job color + self.ui.cncjob_defaults_form.cncjob_gen_group.annotation_fontcolor_entry.set_value( + self.defaults['cncjob_annotation_fontcolor']) + self.ui.cncjob_defaults_form.cncjob_gen_group.annotation_fontcolor_button.setStyleSheet( + "background-color:%s" % str(self.defaults['cncjob_annotation_fontcolor'])[:7]) + # ### End of Data ## ## + + # ### Plot Area ## ## start_plot_time = time.time() # debug self.plotcanvas = PlotCanvas(self.ui.right_layout, self) @@ -1528,6 +1539,10 @@ class App(QtCore.QObject): self.ui.cncjob_defaults_form.cncjob_adv_opt_group.tc_variable_combo.currentIndexChanged[str].connect( self.on_cnc_custom_parameters) + self.ui.cncjob_defaults_form.cncjob_gen_group.annotation_fontcolor_entry.editingFinished.connect( + self.on_annotation_fontcolor_entry) + self.ui.cncjob_defaults_form.cncjob_gen_group.annotation_fontcolor_button.clicked.connect( + self.on_annotation_fontcolor_button) # Modify G-CODE Plot Area TAB self.ui.code_editor.textChanged.connect(self.handleTextChanged) @@ -4181,6 +4196,28 @@ class App(QtCore.QObject): self.ui.general_defaults_form.general_gui_group.proj_color_dis_entry.set_value(new_val_sel) self.defaults['global_proj_item_dis_color'] = new_val_sel + def on_annotation_fontcolor_entry(self): + self.defaults['cncjob_annotation_fontcolor'] = \ + self.ui.cncjob_defaults_form.cncjob_gen_group.annotation_fontcolor_entry.get_value() + self.ui.cncjob_defaults_form.cncjob_gen_group.annotation_fontcolor_button.setStyleSheet( + "background-color:%s" % str(self.defaults['cncjob_annotation_fontcolor'])) + + def on_annotation_fontcolor_button(self): + current_color = QtGui.QColor(self.defaults['cncjob_annotation_fontcolor']) + + c_dialog = QtWidgets.QColorDialog() + annotation_color = c_dialog.getColor(initial=current_color) + + if annotation_color.isValid() is False: + return + + self.ui.cncjob_defaults_form.cncjob_gen_group.annotation_fontcolor_button.setStyleSheet( + "background-color:%s" % str(annotation_color.name())) + + new_val_sel = str(annotation_color.name()) + self.ui.cncjob_defaults_form.cncjob_gen_group.annotation_fontcolor_entry.set_value(new_val_sel) + self.defaults['global_proj_item_dis_color'] = new_val_sel + def on_deselect_all(self): self.collection.set_all_inactive() self.delete_selection_shape() @@ -8299,7 +8336,7 @@ The normal flow when working in FlatCAM is the following:

""" log.debug("Enabling plots ...") - + self.inform.emit(_("Working ...")) for obj in objects: obj.options['plot'] = True self.plots_updated.emit() @@ -8312,7 +8349,7 @@ The normal flow when working in FlatCAM is the following:

""" log.debug("Disabling plots ...") - + self.inform.emit(_("Working ...")) for obj in objects: obj.options['plot'] = False self.plots_updated.emit() diff --git a/FlatCAMObj.py b/FlatCAMObj.py index a2cb16f9..0c4e0815 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -339,13 +339,18 @@ class FlatCAMObj(QtCore.QObject): @visible.setter def visible(self, value): - self.shapes.visible = value + log.debug("FlatCAMObj.visible()") - # Not all object types has annotations - try: - self.annotation.visible = value - except Exception as e: - pass + def worker_task(app_obj): + app_obj.shapes.visible = value + + # Not all object types has annotations + try: + app_obj.annotation.visible = value + except Exception as e: + pass + + self.app.worker_task.emit({'fcn': worker_task, 'params': [self]}) @property def drawing_tolerance(self): diff --git a/README.md b/README.md index d17b2cc9..d34d2608 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,9 @@ CAD program, and create G-Code for Isolation routing. 3.06.2019 - TclCommand Geocutout is now creating a new geometry object when working on a geometry, preserving also the origin object +- added a new parameter in Edit -> Preferences -> CNCJob named Annotation Color; it controls the color of the font used for annotations +- added a new parameter in Edit -> Preferences -> CNCJob named Annotation Size; it controls the size of the font used for annotations +- made visibility change threaded in FlatCAMObj() 2.06.2019 diff --git a/camlib.py b/camlib.py index 62a65b79..47c3cb17 100644 --- a/camlib.py +++ b/camlib.py @@ -6541,7 +6541,9 @@ class CNCjob(Geometry): obj.add_shape(shape=poly, color=color['C'][1], face_color=color['C'][0], visible=visible, layer=1) - obj.annotation.set(text=text, pos=pos, visible=obj.options['plot']) + obj.annotation.set(text=text, pos=pos, visible=obj.options['plot'], + font_size=self.app.defaults["cncjob_annotation_fontsize"], + color=self.app.defaults["cncjob_annotation_fontcolor"]) def create_geometry(self): # TODO: This takes forever. Too much data? diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index 52029cae..34e6d8af 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -5458,45 +5458,77 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.annotation_cb, 2, 1) grid0.addWidget(QtWidgets.QLabel(''), 2, 2) - # Number of circle steps for circular aperture linear approximation + # Annotation Font Size + self.annotation_fontsize_label = QtWidgets.QLabel(_("Annotation Size:")) + self.annotation_fontsize_label.setToolTip( + _("The font size of the annotation text. In pixels.") + ) + grid0.addWidget(self.annotation_fontsize_label, 3, 0) + self.annotation_fontsize_sp = FCSpinner() + grid0.addWidget(self.annotation_fontsize_sp, 3, 1) + grid0.addWidget(QtWidgets.QLabel(''), 3, 2) + + # Annotation Font Color + self.annotation_color_label = QtWidgets.QLabel(_('Annotation Color:')) + self.annotation_color_label.setToolTip( + _("Set the font color for the annotation texts.\n") + ) + self.annotation_fontcolor_entry = FCEntry() + self.annotation_fontcolor_button = QtWidgets.QPushButton() + self.annotation_fontcolor_button.setFixedSize(15, 15) + + self.form_box_child = QtWidgets.QHBoxLayout() + self.form_box_child.addWidget(self.annotation_fontcolor_entry) + self.form_box_child.addWidget(self.annotation_fontcolor_button) + self.form_box_child.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) + + color_widget = QtWidgets.QWidget() + color_widget.setLayout(self.form_box_child) + grid0.addWidget(self.annotation_color_label, 4, 0) + grid0.addWidget(color_widget, 4, 1) + grid0.addWidget(QtWidgets.QLabel(''), 4, 2) + + # ################################################################### + # Number of circle steps for circular aperture linear approximation # + # ################################################################### self.steps_per_circle_label = QtWidgets.QLabel(_("Circle Steps:")) self.steps_per_circle_label.setToolTip( _("The number of circle steps for GCode \n" - "circle and arc shapes linear approximation.") + "circle and arc shapes linear approximation.") ) - grid0.addWidget(self.steps_per_circle_label, 3, 0) + grid0.addWidget(self.steps_per_circle_label, 5, 0) self.steps_per_circle_entry = IntEntry() - grid0.addWidget(self.steps_per_circle_entry, 3, 1) + grid0.addWidget(self.steps_per_circle_entry, 5, 1) # Tool dia for plot tdlabel = QtWidgets.QLabel(_('Tool dia:')) tdlabel.setToolTip( _("Diameter of the tool to be\n" - "rendered in the plot.") + "rendered in the plot.") ) - grid0.addWidget(tdlabel, 4, 0) + grid0.addWidget(tdlabel, 6, 0) self.tooldia_entry = LengthEntry() - grid0.addWidget(self.tooldia_entry,4, 1) + grid0.addWidget(self.tooldia_entry,6, 1) # Number of decimals to use in GCODE coordinates cdeclabel = QtWidgets.QLabel(_('Coords dec.:')) cdeclabel.setToolTip( _("The number of decimals to be used for \n" - "the X, Y, Z coordinates in CNC code (GCODE, etc.)") + "the X, Y, Z coordinates in CNC code (GCODE, etc.)") ) - grid0.addWidget(cdeclabel, 5, 0) + grid0.addWidget(cdeclabel, 7, 0) self.coords_dec_entry = IntEntry() - grid0.addWidget(self.coords_dec_entry, 5, 1) + grid0.addWidget(self.coords_dec_entry, 7, 1) # Number of decimals to use in GCODE feedrate frdeclabel = QtWidgets.QLabel(_('Feedrate dec.:')) frdeclabel.setToolTip( _("The number of decimals to be used for \n" - "the Feedrate parameter in CNC code (GCODE, etc.)") + "the Feedrate parameter in CNC code (GCODE, etc.)") ) - grid0.addWidget(frdeclabel, 6, 0) + grid0.addWidget(frdeclabel, 8, 0) self.fr_dec_entry = IntEntry() - grid0.addWidget(self.fr_dec_entry, 6, 1) + grid0.addWidget(self.fr_dec_entry, 8, 1) self.layout.addStretch() diff --git a/flatcamGUI/VisPyVisuals.py b/flatcamGUI/VisPyVisuals.py index c6016233..254698fd 100644 --- a/flatcamGUI/VisPyVisuals.py +++ b/flatcamGUI/VisPyVisuals.py @@ -456,20 +456,26 @@ class TextCollectionVisual(TextVisual): self.data = {} self.last_key = -1 self.lock = threading.Lock() - + self.method = 'gpu' super(TextCollectionVisual, self).__init__(**kwargs) self.freeze() - def add(self, text, pos, visible=True, update=True): + def add(self, text, pos, visible=True, update=True, font_size=9, color='black'): """ Adds array of text to collection :param text: list Array of strings ['str1', 'str2', ... ] :param pos: list Array of string positions [(0, 0), (10, 10), ... ] + :param visible: bool + | Set True to make it visible :param update: bool Set True to redraw collection + :param font_size: int + Set font size to redraw collection + :param color: string + Set font color to redraw collection :return: int Index of array """ @@ -480,7 +486,7 @@ class TextCollectionVisual(TextVisual): self.lock.release() # Prepare data for translation - self.data[key] = {'text': text, 'pos': pos, 'visible': visible} + self.data[key] = {'text': text, 'pos': pos, 'visible': visible,'font_size': font_size, 'color': color} if update: self.redraw() @@ -516,6 +522,8 @@ class TextCollectionVisual(TextVisual): """ labels = [] pos = [] + font_s = 9 + color = 'black' # Merge buffers for data in list(self.data.values()): @@ -523,6 +531,8 @@ class TextCollectionVisual(TextVisual): try: labels += data['text'] pos += data['pos'] + font_s = data['font_size'] + color = data['color'] except Exception as e: print("Data error", e) @@ -530,6 +540,8 @@ class TextCollectionVisual(TextVisual): if len(labels) > 0: self.text = labels self.pos = pos + self.font_size = font_s + self.color = color else: self.text = None self.pos = (0, 0) From dc51f6d83309ad7a064a1a9c0ac00004b5d4350b Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Tue, 4 Jun 2019 14:58:33 +0300 Subject: [PATCH 14/23] - PEP8 updates in FlatCAMExcEditor.py - added the Excellon Editor parameters to the Edit -> Preferences -> Excellon - fixed a small bug in Excellon Editor --- README.md | 6 + flatcamEditors/FlatCAMExcEditor.py | 269 +++++++++++++++-------------- flatcamGUI/FlatCAMGUI.py | 98 ++++++++++- 3 files changed, 237 insertions(+), 136 deletions(-) diff --git a/README.md b/README.md index d34d2608..ad3406a5 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,12 @@ CAD program, and create G-Code for Isolation routing. ================================================= +4.06.2019 + +- PEP8 updates in FlatCAMExcEditor.py +- added the Excellon Editor parameters to the Edit -> Preferences -> Excellon +- fixed a small bug in Excellon Editor + 3.06.2019 - TclCommand Geocutout is now creating a new geometry object when working on a geometry, preserving also the origin object diff --git a/flatcamEditors/FlatCAMExcEditor.py b/flatcamEditors/FlatCAMExcEditor.py index 9e466e74..db60dd49 100644 --- a/flatcamEditors/FlatCAMExcEditor.py +++ b/flatcamEditors/FlatCAMExcEditor.py @@ -16,9 +16,9 @@ from copy import copy, deepcopy import gettext import FlatCAMTranslation as fcTranslate +import builtins fcTranslate.apply_language('strings') -import builtins if '_' not in builtins.__dict__: _ = gettext.gettext @@ -34,9 +34,9 @@ class FCDrillAdd(FCShapeTool): self.selected_dia = None try: - self.draw_app.app.inform.emit(self.start_msg) - # self.selected_dia = self.draw_app.tool2tooldia[self.draw_app.tools_table_exc.currentRow() + 1] + self.draw_app.app.inform.emit(_("Click to place ...")) self.selected_dia = self.draw_app.tool2tooldia[self.draw_app.last_tool_selected] + # as a visual marker, select again in tooltable the actual tool that we are using # remember that it was deselected when clicking on canvas item = self.draw_app.tools_table_exc.item((self.draw_app.last_tool_selected - 1), 1) @@ -140,7 +140,7 @@ class FCDrillArray(FCShapeTool): self.pt = [] try: - self.draw_app.app.inform.emit(self.start_msg) + self.draw_app.app.inform.emit(_("Click to place ...")) self.selected_dia = self.draw_app.tool2tooldia[self.draw_app.last_tool_selected] # as a visual marker, select again in tooltable the actual tool that we are using # remember that it was deselected when clicking on canvas @@ -204,7 +204,7 @@ class FCDrillArray(FCShapeTool): _("[ERROR_NOTCL] The value is not Float. Check for comma instead of dot separator.")) return except Exception as e: - self.draw_app.app.inform.emit(_("[ERROR_NOTCL] The value is mistyped. Check the value.")) + self.draw_app.app.inform.emit(_("[ERROR_NOTCL] The value is mistyped. Check the value. %s") % str(e)) return if self.drill_array == 'Linear': @@ -350,7 +350,9 @@ class FCDrillResize(FCShapeTool): try: new_dia = self.draw_app.resdrill_entry.get_value() except: - self.draw_app.app.inform.emit(_("[ERROR_NOTCL] Resize drill(s) failed. Please enter a diameter for resize.")) + self.draw_app.app.inform.emit( + _("[ERROR_NOTCL] Resize drill(s) failed. Please enter a diameter for resize.") + ) return if new_dia not in self.draw_app.olddia_newdia: @@ -406,7 +408,7 @@ class FCDrillResize(FCShapeTool): if new_dia not in self.draw_app.points_edit: self.draw_app.points_edit[new_dia] = [(0, 0)] else: - self.draw_app.points_edit[new_dia].append((0,0)) + self.draw_app.points_edit[new_dia].append((0, 0)) self.geometry = [] # if following the resize of the drills there will be no more drills for the selected tool then @@ -416,7 +418,6 @@ class FCDrillResize(FCShapeTool): for shp in sel_shapes_to_be_deleted: self.draw_app.selected.remove(shp) - sel_shapes_to_be_deleted = [] self.draw_app.build_ui() self.draw_app.replot() @@ -595,8 +596,8 @@ class FCDrillSelect(DrawTool): try: for storage in self.exc_editor_app.storage_dict: - for shape in self.exc_editor_app.storage_dict[storage].get_objects(): - self.sel_storage.insert(shape) + for sh in self.exc_editor_app.storage_dict[storage].get_objects(): + self.sel_storage.insert(sh) _, closest_shape = self.sel_storage.nearest(pos) @@ -718,8 +719,7 @@ class FlatCAMExcEditor(QtCore.QObject): draw_shape_idx = -1 def __init__(self, app): - assert isinstance(app, FlatCAMApp.App), \ - "Expected the app to be a FlatCAMApp.App, got %s" % type(app) + assert isinstance(app, FlatCAMApp.App), "Expected the app to be a FlatCAMApp.App, got %s" % type(app) super(FlatCAMExcEditor, self).__init__() @@ -767,11 +767,11 @@ class FlatCAMExcEditor(QtCore.QObject): self.name_entry = FCEntry() self.name_box.addWidget(self.name_entry) - #### Tools Drills ## ## + # ### Tools Drills ## ## self.tools_table_label = QtWidgets.QLabel("%s" % _('Tools Table')) self.tools_table_label.setToolTip( - _( "Tools in this Excellon object\n" - "when are used for drilling.") + _("Tools in this Excellon object\n" + "when are used for drilling.") ) self.tools_box.addWidget(self.tools_table_label) @@ -789,11 +789,11 @@ class FlatCAMExcEditor(QtCore.QObject): self.empty_label = QtWidgets.QLabel('') self.tools_box.addWidget(self.empty_label) - #### Add a new Tool ## ## + # ### Add a new Tool ## ## self.addtool_label = QtWidgets.QLabel('%s' % _('Add/Delete Tool')) self.addtool_label.setToolTip( _("Add/Delete a tool to the tool list\n" - "for this Excellon object.") + "for this Excellon object.") ) self.tools_box.addWidget(self.addtool_label) @@ -802,9 +802,8 @@ class FlatCAMExcEditor(QtCore.QObject): addtool_entry_lbl = QtWidgets.QLabel(_('Tool Dia:')) addtool_entry_lbl.setToolTip( - _("Diameter for the new tool") + _("Diameter for the new tool") ) - grid1.addWidget(addtool_entry_lbl, 0, 0) hlay = QtWidgets.QHBoxLayout() self.addtool_entry = FCEntry() @@ -813,11 +812,13 @@ class FlatCAMExcEditor(QtCore.QObject): self.addtool_btn = QtWidgets.QPushButton(_('Add Tool')) self.addtool_btn.setToolTip( - _( "Add a new tool to the tool list\n" - "with the diameter specified above.") + _("Add a new tool to the tool list\n" + "with the diameter specified above.") ) self.addtool_btn.setFixedWidth(80) hlay.addWidget(self.addtool_btn) + + grid1.addWidget(addtool_entry_lbl, 0, 0) grid1.addLayout(hlay, 0, 1) grid2 = QtWidgets.QGridLayout() @@ -825,8 +826,8 @@ class FlatCAMExcEditor(QtCore.QObject): self.deltool_btn = QtWidgets.QPushButton(_('Delete Tool')) self.deltool_btn.setToolTip( - _( "Delete a tool in the tool list\n" - "by selecting a row in the tool table.") + _("Delete a tool in the tool list\n" + "by selecting a row in the tool table.") ) grid2.addWidget(self.deltool_btn, 0, 1) @@ -839,7 +840,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.resize_box.setContentsMargins(0, 0, 0, 0) self.resize_frame.setLayout(self.resize_box) - #### Resize a drill ## ## + # ### Resize a drill ## ## self.emptyresize_label = QtWidgets.QLabel('') self.resize_box.addWidget(self.emptyresize_label) @@ -882,7 +883,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.array_box.setContentsMargins(0, 0, 0, 0) self.array_frame.setLayout(self.array_box) - #### Add DRILL Array ## ## + # ### Add DRILL Array ## ## self.emptyarray_label = QtWidgets.QLabel('') self.array_box.addWidget(self.emptyarray_label) @@ -895,7 +896,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.array_type_combo = FCComboBox() self.array_type_combo.setToolTip( _( "Select the type of drills array to create.\n" - "It can be Linear X(Y) or Circular") + "It can be Linear X(Y) or Circular") ) self.array_type_combo.addItem(_("Linear")) self.array_type_combo.addItem(_("Circular")) @@ -905,6 +906,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.array_form = QtWidgets.QFormLayout() self.array_box.addLayout(self.array_form) + # Set the number of drill holes in the drill array self.drill_array_size_label = QtWidgets.QLabel(_('Nr of drills:')) self.drill_array_size_label.setToolTip( _("Specify how many drills to be in the array.") @@ -924,21 +926,22 @@ class FlatCAMExcEditor(QtCore.QObject): self.linear_form = QtWidgets.QFormLayout() self.linear_box.addLayout(self.linear_form) + # Linear Drill Array direction self.drill_axis_label = QtWidgets.QLabel(_('Direction:')) self.drill_axis_label.setToolTip( _("Direction on which the linear array is oriented:\n" - "- 'X' - horizontal axis \n" - "- 'Y' - vertical axis or \n" - "- 'Angle' - a custom angle for the array inclination") + "- 'X' - horizontal axis \n" + "- 'Y' - vertical axis or \n" + "- 'Angle' - a custom angle for the array inclination") ) self.drill_axis_label.setFixedWidth(100) self.drill_axis_radio = RadioSet([{'label': 'X', 'value': 'X'}, {'label': 'Y', 'value': 'Y'}, {'label': 'Angle', 'value': 'A'}]) - self.drill_axis_radio.set_value('X') self.linear_form.addRow(self.drill_axis_label, self.drill_axis_radio) + # Linear Drill Array pitch distance self.drill_pitch_label = QtWidgets.QLabel(_('Pitch:')) self.drill_pitch_label.setToolTip( _("Pitch = Distance between elements of the array.") @@ -948,12 +951,13 @@ class FlatCAMExcEditor(QtCore.QObject): self.drill_pitch_entry = LengthEntry() self.linear_form.addRow(self.drill_pitch_label, self.drill_pitch_entry) + # Linear Drill Array angle self.linear_angle_label = QtWidgets.QLabel(_('Angle:')) self.linear_angle_label.setToolTip( _( "Angle at which the linear array is placed.\n" - "The precision is of max 2 decimals.\n" - "Min value is: -359.99 degrees.\n" - "Max value is: 360.00 degrees.") + "The precision is of max 2 decimals.\n" + "Min value is: -359.99 degrees.\n" + "Max value is: 360.00 degrees.") ) self.linear_angle_label.setFixedWidth(100) @@ -972,7 +976,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.drill_direction_label = QtWidgets.QLabel(_('Direction:')) self.drill_direction_label.setToolTip( _( "Direction for circular array." - "Can be CW = clockwise or CCW = counter clockwise.") + "Can be CW = clockwise or CCW = counter clockwise.") ) self.drill_direction_label.setFixedWidth(100) @@ -1004,17 +1008,17 @@ class FlatCAMExcEditor(QtCore.QObject): # ## Toolbar events and properties self.tools_exc = { "drill_select": {"button": self.app.ui.select_drill_btn, - "constructor": FCDrillSelect}, + "constructor": FCDrillSelect}, "drill_add": {"button": self.app.ui.add_drill_btn, - "constructor": FCDrillAdd}, + "constructor": FCDrillAdd}, "drill_array": {"button": self.app.ui.add_drill_array_btn, - "constructor": FCDrillArray}, + "constructor": FCDrillArray}, "drill_resize": {"button": self.app.ui.resize_drill_btn, - "constructor": FCDrillResize}, + "constructor": FCDrillResize}, "drill_copy": {"button": self.app.ui.copy_drill_btn, - "constructor": FCDrillCopy}, + "constructor": FCDrillCopy}, "drill_move": {"button": self.app.ui.move_drill_btn, - "constructor": FCDrillMove}, + "constructor": FCDrillMove}, } # ## Data @@ -1079,6 +1083,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.drill_angle_entry.set_value(12) self.drill_direction_radio.set_value('CW') self.drill_axis_radio.set_value('X') + self.exc_obj = None # VisPy Visuals @@ -1105,6 +1110,8 @@ class FlatCAMExcEditor(QtCore.QObject): self.snap_y = None self.pos = None + self.complete = False + def make_callback(thetool): def f(): self.on_tool_select(thetool) @@ -1278,9 +1285,9 @@ class FlatCAMExcEditor(QtCore.QObject): # slot editing not implemented pass - id = QtWidgets.QTableWidgetItem('%d' % int(tool_id)) - id.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) - self.tools_table_exc.setItem(self.tool_row, 0, id) # Tool name/id + idd = QtWidgets.QTableWidgetItem('%d' % int(tool_id)) + idd.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) + self.tools_table_exc.setItem(self.tool_row, 0, idd) # Tool name/id # Make sure that the drill diameter when in MM is with no more than 2 decimals # There are no drill bits in MM with more than 3 decimals diameter @@ -1375,7 +1382,6 @@ class FlatCAMExcEditor(QtCore.QObject): self.tools_table_exc.item(self.tool_row, kl).setFont(font) self.tools_table_exc.item(self.tool_row, kl).setForeground(QtGui.QColor(0, 70, 255)) - # all the tools are selected by default self.tools_table_exc.selectColumn(0) # @@ -1458,7 +1464,8 @@ class FlatCAMExcEditor(QtCore.QObject): # we add a new entry in the tool2tooldia dict self.tool2tooldia[len(self.olddia_newdia)] = tool_dia - self.app.inform.emit(_("[success] Added new tool with dia: {dia} {units}").format(dia=str(tool_dia), units=str(self.units))) + self.app.inform.emit(_("[success] Added new tool with dia: {dia} {units}").format(dia=str(tool_dia), + units=str(self.units))) self.build_ui() @@ -1475,7 +1482,6 @@ class FlatCAMExcEditor(QtCore.QObject): def on_tool_delete(self, dia=None): self.is_modified = True deleted_tool_dia_list = [] - deleted_tool_offset_list = [] try: if dia is None or dia is False: @@ -1516,14 +1522,15 @@ class FlatCAMExcEditor(QtCore.QObject): # delete the tool self.tool2tooldia.pop(tool_to_be_deleted, None) - # delete also the drills from points_edit dict just in case we add the tool again, we don't want to show the - # number of drills from before was deleter + # delete also the drills from points_edit dict just in case we add the tool again, + # we don't want to show the number of drills from before was deleter self.points_edit[deleted_tool_dia] = [] - flag_del = [] self.olddia_newdia.pop(deleted_tool_dia, None) - self.app.inform.emit(_("[success] Deleted tool with dia: {del_dia} {units}").format(del_dia=str(deleted_tool_dia), units=str(self.units))) + self.app.inform.emit(_("[success] Deleted tool with dia: {del_dia} {units}").format( + del_dia=str(deleted_tool_dia), + units=str(self.units))) self.replot() # self.app.inform.emit("Could not delete selected tool") @@ -1539,7 +1546,6 @@ class FlatCAMExcEditor(QtCore.QObject): # self.tools_table_exc.selectionModel().currentChanged.disconnect() self.is_modified = True - geometry = [] current_table_dia_edited = None if self.tools_table_exc.currentItem() is not None: @@ -1565,7 +1571,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.tool2tooldia[key_in_tool2tooldia] = current_table_dia_edited # update the tool offset - modified_offset = self.exc_obj.tool_offset.pop(dia_changed ,None) + modified_offset = self.exc_obj.tool_offset.pop(dia_changed, None) if modified_offset is not None: self.exc_obj.tool_offset[current_table_dia_edited] = modified_offset @@ -1575,10 +1581,11 @@ class FlatCAMExcEditor(QtCore.QObject): factor = current_table_dia_edited / dia_changed geometry = [] - for shape in self.storage_dict[dia_changed].get_objects(): - geometry.append(DrawToolShape( - MultiLineString([affinity.scale(subgeo, xfact=factor, yfact=factor, origin='center') - for subgeo in shape.geo]))) + for shape_exc in self.storage_dict[dia_changed].get_objects(): + scaled_geo = MultiLineString( + [affinity.scale(subgeo, xfact=factor, yfact=factor, origin='center') for subgeo in shape_exc.geo] + ) + geometry.append(DrawToolShape(scaled_geo)) # add bogus drill points (for total count of drills) for k, v in self.olddia_newdia.items(): @@ -1586,8 +1593,8 @@ class FlatCAMExcEditor(QtCore.QObject): self.points_edit[k].append((0, 0)) break - # search for the oldia that correspond to the newdia and add the drills in it's storage - # everything will be sort out later, when the edited excellon is updated + # search for the old dia that correspond to the new dia and add the drills in it's storage + # everything will be sort out later, when the edited Excellon is updated for k, v in self.olddia_newdia.items(): if v == current_table_dia_edited: self.add_exc_shape(geometry, self.storage_dict[k]) @@ -1833,7 +1840,7 @@ class FlatCAMExcEditor(QtCore.QObject): Imports the geometry from the given FlatCAM Excellon object into the editor. - :param fcgeometry: FlatCAMExcellon + :param exc_obj: FlatCAMExcellon object :return: None """ @@ -1870,9 +1877,9 @@ class FlatCAMExcEditor(QtCore.QObject): stop_hor_line = ((point.x + (tool_dia / 2)), point.y) start_vert_line = (point.x, (point.y - (tool_dia / 2))) stop_vert_line = (point.x, (point.y + (tool_dia / 2))) - shape = MultiLineString([(start_hor_line, stop_hor_line),(start_vert_line, stop_vert_line)]) - if shape is not None: - self.add_exc_shape(DrawToolShape(shape), storage_elem) + shape_geo = MultiLineString([(start_hor_line, stop_hor_line), (start_vert_line, stop_vert_line)]) + if shape_geo is not None: + self.add_exc_shape(DrawToolShape(shape_geo), storage_elem) self.storage_dict[tool_dia] = storage_elem self.replot() @@ -1907,7 +1914,7 @@ class FlatCAMExcEditor(QtCore.QObject): # create a tuple with the coordinates (x, y) and add it to the list that is the value of the # edited_points dictionary point = (x_coord, y_coord) - if not storage_tooldia in edited_points: + if storage_tooldia not in edited_points: edited_points[storage_tooldia] = [point] else: edited_points[storage_tooldia].append(point) @@ -1964,8 +1971,8 @@ class FlatCAMExcEditor(QtCore.QObject): if self.is_modified is True: if "_edit" in self.edited_obj_name: try: - id = int(self.edited_obj_name[-1]) + 1 - self.edited_obj_name = self.edited_obj_name[:-1] + str(id) + idd = int(self.edited_obj_name[-1]) + 1 + self.edited_obj_name = self.edited_obj_name[:-1] + str(idd) except ValueError: self.edited_obj_name += "_1" else: @@ -2035,7 +2042,7 @@ class FlatCAMExcEditor(QtCore.QObject): excellon_obj.create_geometry() except KeyError: self.app.inform.emit( - _( "[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon creation.") + _("[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon creation.") ) except: msg = _("[ERROR] An internal error has ocurred. See shell.\n") @@ -2116,7 +2123,7 @@ class FlatCAMExcEditor(QtCore.QObject): def toolbar_tool_toggle(self, key): self.options[key] = self.sender().isChecked() - if self.options[key] == True: + if self.options[key] is True: return 1 else: return 0 @@ -2151,7 +2158,7 @@ class FlatCAMExcEditor(QtCore.QObject): if self.active_tool is not None and event.button is 1: # Dispatch event to active_tool # msg = self.active_tool.click(self.app.geo_editor.snap(event.xdata, event.ydata)) - msg = self.active_tool.click(self.app.geo_editor.snap(self.pos[0], self.pos[1])) + self.active_tool.click(self.app.geo_editor.snap(self.pos[0], self.pos[1])) # If it is a shape generating tool if isinstance(self.active_tool, FCShapeTool) and self.active_tool.complete: @@ -2207,6 +2214,7 @@ class FlatCAMExcEditor(QtCore.QObject): :param shape: Shape to be added. :type shape: DrawToolShape + :param storage: object where to store the shapes :return: None """ # List of DrawToolShape? @@ -2221,8 +2229,7 @@ class FlatCAMExcEditor(QtCore.QObject): assert shape.geo is not None, \ "Shape object has empty geometry (None)" - assert (isinstance(shape.geo, list) and len(shape.geo) > 0) or \ - not isinstance(shape.geo, list), \ + assert (isinstance(shape.geo, list) and len(shape.geo) > 0) or not isinstance(shape.geo, list), \ "Shape objects has empty geometry ([])" if isinstance(shape, DrawToolUtilityShape): @@ -2251,8 +2258,7 @@ class FlatCAMExcEditor(QtCore.QObject): assert shape.geo is not None, \ "Shape object has empty geometry (None)" - assert (isinstance(shape.geo, list) and len(shape.geo) > 0) or \ - not isinstance(shape.geo, list), \ + assert (isinstance(shape.geo, list) and len(shape.geo) > 0) or not isinstance(shape.geo, list), \ "Shape objects has empty geometry ([])" if isinstance(shape, DrawToolUtilityShape): @@ -2323,7 +2329,6 @@ class FlatCAMExcEditor(QtCore.QObject): :param start_pos: mouse position when the selection LMB click was done :param end_pos: mouse position when the left mouse button is released :param sel_type: if True it's a left to right selection (enclosure), if False it's a 'touch' selection - :type Bool :return: """ poly_selection = Polygon([start_pos, (end_pos[0], start_pos[1]), end_pos, (start_pos[0], end_pos[1])]) @@ -2408,7 +2413,7 @@ class FlatCAMExcEditor(QtCore.QObject): # update the position label in the infobar since the APP mouse event handlers are disconnected self.app.ui.position_label.setText("    X: %.4f   " - "Y: %.4f" % (x, y)) + "Y: %.4f" % (x, y)) if self.pos is None: self.pos = (0, 0) @@ -2417,7 +2422,7 @@ class FlatCAMExcEditor(QtCore.QObject): # update the reference position label in the infobar since the APP mouse event handlers are disconnected self.app.ui.rel_position_label.setText("Dx: %.4f   Dy: " - "%.4f    " % (dx, dy)) + "%.4f    " % (dx, dy)) # ## Utility geometry (animated) geo = self.active_tool.utility_geometry(data=(x, y)) @@ -2437,12 +2442,12 @@ class FlatCAMExcEditor(QtCore.QObject): dx = pos[0] - self.pos[0] self.app.delete_selection_shape() if dx < 0: - self.app.draw_moving_selection_shape((self.pos[0], self.pos[1]), (x,y), - color=self.app.defaults["global_alt_sel_line"], - face_color=self.app.defaults['global_alt_sel_fill']) + self.app.draw_moving_selection_shape((self.pos[0], self.pos[1]), (x, y), + color=self.app.defaults["global_alt_sel_line"], + face_color=self.app.defaults['global_alt_sel_fill']) self.app.selection_type = False else: - self.app.draw_moving_selection_shape((self.pos[0], self.pos[1]), (x,y)) + self.app.draw_moving_selection_shape((self.pos[0], self.pos[1]), (x, y)) self.app.selection_type = True else: self.app.selection_type = None @@ -2454,43 +2459,41 @@ class FlatCAMExcEditor(QtCore.QObject): self.key = None def draw_utility_geometry(self, geo): - # Add the new utility shape - try: - # this case is for the Font Parse - for el in list(geo.geo): - if type(el) == MultiPolygon: - for poly in el: - self.tool_shape.add( - shape=poly, - color=(self.app.defaults["global_draw_color"] + '80'), - update=False, - layer=0, - tolerance=None - ) - elif type(el) == MultiLineString: - for linestring in el: - self.tool_shape.add( - shape=linestring, - color=(self.app.defaults["global_draw_color"] + '80'), - update=False, - layer=0, - tolerance=None - ) - else: + # Add the new utility shape + try: + # this case is for the Font Parse + for el in list(geo.geo): + if type(el) == MultiPolygon: + for poly in el: self.tool_shape.add( - shape=el, + shape=poly, color=(self.app.defaults["global_draw_color"] + '80'), update=False, layer=0, tolerance=None ) - except TypeError: - self.tool_shape.add( - shape=geo.geo, color=(self.app.defaults["global_draw_color"] + '80'), - update=False, layer=0, tolerance=None) - - self.tool_shape.redraw() - + elif type(el) == MultiLineString: + for linestring in el: + self.tool_shape.add( + shape=linestring, + color=(self.app.defaults["global_draw_color"] + '80'), + update=False, + layer=0, + tolerance=None + ) + else: + self.tool_shape.add( + shape=el, + color=(self.app.defaults["global_draw_color"] + '80'), + update=False, + layer=0, + tolerance=None + ) + except TypeError: + self.tool_shape.add( + shape=geo.geo, color=(self.app.defaults["global_draw_color"] + '80'), + update=False, layer=0, tolerance=None) + self.tool_shape.redraw() def replot(self): self.plot_all() @@ -2526,10 +2529,8 @@ class FlatCAMExcEditor(QtCore.QObject): # # self.plot_shape(geometry=shape.geo, color=self.app.defaults['global_draw_color']) - - - for shape in self.utility: - self.plot_shape(geometry=shape.geo, linewidth=1) + for shape_form in self.utility: + self.plot_shape(geometry=shape_form.geo, linewidth=1) continue self.shapes.redraw() @@ -2604,11 +2605,11 @@ class FlatCAMExcEditor(QtCore.QObject): self.build_ui() self.app.inform.emit(_("[success] Done. Drill(s) deleted.")) - def delete_shape(self, shape): + def delete_shape(self, del_shape): self.is_modified = True - if shape in self.utility: - self.utility.remove(shape) + if del_shape in self.utility: + self.utility.remove(del_shape) return for storage in self.storage_dict: @@ -2616,8 +2617,8 @@ class FlatCAMExcEditor(QtCore.QObject): # self.storage_dict[storage].remove(shape) # except: # pass - if shape in self.storage_dict[storage].get_objects(): - self.storage_dict[storage].remove(shape) + if del_shape in self.storage_dict[storage].get_objects(): + self.storage_dict[storage].remove(del_shape) # a hack to make the tool_table display less drills per diameter # self.points_edit it's only useful first time when we load the data into the storage # but is still used as referecen when building tool_table in self.build_ui() @@ -2625,15 +2626,13 @@ class FlatCAMExcEditor(QtCore.QObject): # deleting self.points_edit elements (doesn't matter who but just the number) solved the display issue. del self.points_edit[storage][0] - if shape in self.selected: - self.selected.remove(shape) # TODO: Check performance + if del_shape in self.selected: + self.selected.remove(del_shape) # TODO: Check performance def delete_utility_geometry(self): - # for_deletion = [shape for shape in self.shape_buffer if shape.utility] - # for_deletion = [shape for shape in self.storage.get_objects() if shape.utility] - for_deletion = [shape for shape in self.utility] - for shape in for_deletion: - self.delete_shape(shape) + for_deletion = [util_shape for util_shape in self.utility] + for util_shape in for_deletion: + self.delete_shape(util_shape) self.tool_shape.clear(update=True) self.tool_shape.redraw() @@ -2652,17 +2651,17 @@ class FlatCAMExcEditor(QtCore.QObject): self.tools_exc[toolname]["button"].setChecked(True) self.on_tool_select(toolname) - def set_selected(self, shape): + def set_selected(self, sel_shape): # Remove and add to the end. - if shape in self.selected: - self.selected.remove(shape) + if sel_shape in self.selected: + self.selected.remove(sel_shape) - self.selected.append(shape) + self.selected.append(sel_shape) - def set_unselected(self, shape): - if shape in self.selected: - self.selected.remove(shape) + def set_unselected(self, unsel_shape): + if unsel_shape in self.selected: + self.selected.remove(unsel_shape) def on_array_type_combo(self): if self.array_type_combo.currentIndex() == 0: @@ -2701,4 +2700,6 @@ class FlatCAMExcEditor(QtCore.QObject): def exc_move_drills(self): self.select_tool('drill_move') - return \ No newline at end of file + return + +# EOF diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index 34e6d8af..2b629f91 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -3189,6 +3189,8 @@ class ExcellonPreferencesUI(QtWidgets.QWidget): self.excellon_exp_group.setFixedWidth(250) self.excellon_adv_opt_group = ExcellonAdvOptPrefGroupUI() self.excellon_adv_opt_group.setFixedWidth(250) + self.excellon_editor_group = ExcellonEditorPrefGroupUI() + self.excellon_editor_group.setFixedWidth(220) self.vlay = QtWidgets.QVBoxLayout() self.vlay.addWidget(self.excellon_opt_group) @@ -3197,6 +3199,7 @@ class ExcellonPreferencesUI(QtWidgets.QWidget): self.layout.addWidget(self.excellon_gen_group) self.layout.addLayout(self.vlay) self.layout.addWidget(self.excellon_adv_opt_group) + self.layout.addWidget(self.excellon_editor_group) self.layout.addStretch() @@ -5028,6 +5031,96 @@ class ExcellonExpPrefGroupUI(OptionsGroupUI): self.zeros_radio.setDisabled(False) +class ExcellonEditorPrefGroupUI(OptionsGroupUI): + def __init__(self, parent=None): + super(ExcellonEditorPrefGroupUI, self).__init__(self) + + self.setTitle(str(_("Excellon Editor"))) + + # Excellon Editor Parameters + self.param_label = QtWidgets.QLabel(_("Parameters:")) + self.param_label.setToolTip( + _("A list of Excellon Editor parameters.") + ) + self.layout.addWidget(self.param_label) + + grid0 = QtWidgets.QGridLayout() + self.layout.addLayout(grid0) + + # Selection Limit + self.sel_limit_label = QtWidgets.QLabel(_("Selection limit:")) + self.sel_limit_label.setToolTip( + _("Set the number of selected Excellon geometry\n" + "items above which the utility geometry\n" + "becomes just a selection rectangle.\n" + "Increases the performance when moving a\n" + "large number of geometric elements.") + ) + self.sel_limit_entry = IntEntry() + + grid0.addWidget(self.sel_limit_label, 0, 0) + grid0.addWidget(self.sel_limit_entry, 0, 1) + + # New tool diameter + self.addtool_entry_lbl = QtWidgets.QLabel(_('New Tool Dia:')) + self.addtool_entry_lbl.setToolTip( + _("Diameter for the new tool") + ) + + self.addtool_entry = FCEntry() + self.addtool_entry.setValidator(QtGui.QDoubleValidator(0.0001, 99.9999, 4)) + + grid0.addWidget(self.addtool_entry_lbl, 1, 0) + grid0.addWidget(self.addtool_entry, 1, 1) + + # Number of drill holes in a drill array + self.drill_array_size_label = QtWidgets.QLabel(_('Nr of drills:')) + self.drill_array_size_label.setToolTip( + _("Specify how many drills to be in the array.") + ) + # self.drill_array_size_label.setFixedWidth(100) + + self.drill_array_size_entry = LengthEntry() + + grid0.addWidget(self.drill_array_size_label, 2, 0) + grid0.addWidget(self.drill_array_size_entry, 2, 1) + + self.drill_array_linear_label = QtWidgets.QLabel(_('Linear Drill Array:')) + grid0.addWidget(self.drill_array_linear_label, 3, 0, 1, 2) + + # Linear Drill Array direction + self.drill_axis_label = QtWidgets.QLabel(_('Direction:')) + self.drill_axis_label.setToolTip( + _("Direction on which the linear array is oriented:\n" + "- 'X' - horizontal axis \n" + "- 'Y' - vertical axis or \n" + "- 'Angle' - a custom angle for the array inclination") + ) + # self.drill_axis_label.setFixedWidth(100) + self.drill_axis_radio = RadioSet([{'label': 'X', 'value': 'X'}, + {'label': 'Y', 'value': 'Y'}, + {'label': 'Angle', 'value': 'A'}]) + + grid0.addWidget(self.drill_axis_label, 4, 0) + grid0.addWidget(self.drill_axis_radio, 4, 1) + + # Linear Drill Array pitch distance + self.drill_pitch_label = QtWidgets.QLabel(_('Pitch:')) + self.drill_pitch_label.setToolTip( + _("Pitch = Distance between elements of the array.") + ) + # self.drill_pitch_label.setFixedWidth(100) + self.drill_pitch_entry = LengthEntry() + + grid0.addWidget(self.drill_pitch_label, 5, 0) + grid0.addWidget(self.drill_pitch_entry, 5, 1) + + self.drill_array_circ_label = QtWidgets.QLabel(_('Circular Drill Array:')) + grid0.addWidget(self.drill_array_circ_label, 7, 0, 1, 2) + + self.layout.addStretch() + + class GeometryGenPrefGroupUI(OptionsGroupUI): def __init__(self, parent=None): # OptionsGroupUI.__init__(self, "Geometry General Preferences", parent=parent) @@ -5471,15 +5564,16 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI): # Annotation Font Color self.annotation_color_label = QtWidgets.QLabel(_('Annotation Color:')) self.annotation_color_label.setToolTip( - _("Set the font color for the annotation texts.\n") + _("Set the font color for the annotation texts.") ) self.annotation_fontcolor_entry = FCEntry() self.annotation_fontcolor_button = QtWidgets.QPushButton() self.annotation_fontcolor_button.setFixedSize(15, 15) self.form_box_child = QtWidgets.QHBoxLayout() + self.form_box_child.setContentsMargins(0, 0, 0, 0) self.form_box_child.addWidget(self.annotation_fontcolor_entry) - self.form_box_child.addWidget(self.annotation_fontcolor_button) + self.form_box_child.addWidget(self.annotation_fontcolor_button, alignment=Qt.AlignRight) self.form_box_child.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) color_widget = QtWidgets.QWidget() From 150bb9e99904e2a0e3e2cb84442d117beedfcd4a Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Tue, 4 Jun 2019 22:19:45 +0300 Subject: [PATCH 15/23] - PEP8 cleanup in FlatCAMGui - finished adding the Excellon Editor parameters into the app logic and added a selection limit within Excellon Editor just like in the other editors --- FlatCAMApp.py | 27 +- README.md | 4 +- flatcamEditors/FlatCAMExcEditor.py | 90 ++- flatcamGUI/FlatCAMGUI.py | 851 +++++++++++++++-------------- 4 files changed, 533 insertions(+), 439 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 3dfd5a30..4bf8d237 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -58,9 +58,9 @@ fcTranslate.apply_language('strings') if '_' not in builtins.__dict__: _ = gettext.gettext -# ##################################### ## -# # App # ## -# ##################################### ## +# ######################################## +# # App ### +# ######################################## class App(QtCore.QObject): @@ -428,6 +428,17 @@ class App(QtCore.QObject): "excellon_exp_decimals": self.ui.excellon_defaults_form.excellon_exp_group.format_dec_entry, "excellon_exp_zeros": self.ui.excellon_defaults_form.excellon_exp_group.zeros_radio, + # Excellon Editor + "excellon_editor_sel_limit": self.ui.excellon_defaults_form.excellon_editor_group.sel_limit_entry, + "excellon_editor_newdia": self.ui.excellon_defaults_form.excellon_editor_group.addtool_entry, + "excellon_editor_array_size": self.ui.excellon_defaults_form.excellon_editor_group.drill_array_size_entry, + "excellon_editor_lin_dir": self.ui.excellon_defaults_form.excellon_editor_group.drill_axis_radio, + "excellon_editor_lin_pitch": self.ui.excellon_defaults_form.excellon_editor_group.drill_pitch_entry, + "excellon_editor_lin_angle": self.ui.excellon_defaults_form.excellon_editor_group.drill_angle_entry, + "excellon_editor_circ_dir": self.ui.excellon_defaults_form.excellon_editor_group.drill_circular_dir_radio, + "excellon_editor_circ_angle": + self.ui.excellon_defaults_form.excellon_editor_group.drill_circular_angle_entry, + # Geometry General "geometry_plot": self.ui.geometry_defaults_form.geometry_gen_group.plot_cb, "geometry_circle_steps": self.ui.geometry_defaults_form.geometry_gen_group.circle_steps_entry, @@ -756,6 +767,16 @@ class App(QtCore.QObject): "excellon_exp_decimals": 4, "excellon_exp_zeros": 'LZ', + # Excellon Editor + "excellon_editor_sel_limit": 30, + "excellon_editor_newdia": 0.039, + "excellon_editor_array_size": 5, + "excellon_editor_lin_dir": 'X', + "excellon_editor_lin_pitch": 0.1, + "excellon_editor_lin_angle": 0.0, + "excellon_editor_circ_dir": 'CW', + "excellon_editor_circ_angle": 12, + # Geometry General "geometry_plot": True, "geometry_circle_steps": 128, diff --git a/README.md b/README.md index ad3406a5..e0d6e31d 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,10 @@ CAD program, and create G-Code for Isolation routing. 4.06.2019 - PEP8 updates in FlatCAMExcEditor.py -- added the Excellon Editor parameters to the Edit -> Preferences -> Excellon +- added the Excellon Editor parameters to the Edit -> Preferences -> Excellon GUI - fixed a small bug in Excellon Editor +- PEP8 cleanup in FlatCAMGui +- finished adding the Excellon Editor parameters into the app logic and added a selection limit within Excellon Editor just like in the other editors 3.06.2019 diff --git a/flatcamEditors/FlatCAMExcEditor.py b/flatcamEditors/FlatCAMExcEditor.py index db60dd49..d7e56db0 100644 --- a/flatcamEditors/FlatCAMExcEditor.py +++ b/flatcamEditors/FlatCAMExcEditor.py @@ -441,6 +441,8 @@ class FCDrillMove(FCShapeTool): # self.shape_buffer = self.draw_app.shape_buffer self.origin = None self.destination = None + self.sel_limit = self.draw_app.app.defaults["excellon_editor_sel_limit"] + self.selection_shape = self.selection_bbox() self.selected_dia_list = [] if self.draw_app.launched_from_shortcuts is True: @@ -504,6 +506,25 @@ class FCDrillMove(FCShapeTool): self.draw_app.build_ui() self.draw_app.app.inform.emit(_("[success] Done. Drill(s) Move completed.")) + def selection_bbox(self): + geo_list = [] + for select_shape in self.draw_app.get_selected(): + geometric_data = select_shape.geo + try: + for g in geometric_data: + geo_list.append(g) + except TypeError: + geo_list.append(geometric_data) + + xmin, ymin, xmax, ymax = get_shapely_list_bounds(geo_list) + + pt1 = (xmin, ymin) + pt2 = (xmax, ymin) + pt3 = (xmax, ymax) + pt4 = (xmin, ymax) + + return Polygon([pt1, pt2, pt3, pt4]) + def utility_geometry(self, data=None): """ Temporary geometry on screen while using this tool. @@ -521,9 +542,22 @@ class FCDrillMove(FCShapeTool): dx = data[0] - self.origin[0] dy = data[1] - self.origin[1] - for geom in self.draw_app.get_selected(): - geo_list.append(affinity.translate(geom.geo, xoff=dx, yoff=dy)) - return DrawToolUtilityShape(geo_list) + + if len(self.draw_app.get_selected()) <= self.sel_limit: + try: + for geom in self.draw_app.get_selected(): + geo_list.append(affinity.translate(geom.geo, xoff=dx, yoff=dy)) + except AttributeError: + self.draw_app.select_tool('drill_select') + self.draw_app.selected = [] + return + return DrawToolUtilityShape(geo_list) + else: + try: + ss_el = affinity.translate(self.selection_shape, xoff=dx, yoff=dy) + except ValueError: + ss_el = None + return DrawToolUtilityShape(ss_el) class FCDrillCopy(FCDrillMove): @@ -985,7 +1019,6 @@ class FlatCAMExcEditor(QtCore.QObject): self.drill_direction_radio = RadioSet([{'label': 'CW', 'value': 'CW'}, {'label': 'CCW.', 'value': 'CCW'}]) - self.drill_direction_radio.set_value('CW') self.circular_form.addRow(self.drill_direction_label, self.drill_direction_radio) self.drill_angle_label = QtWidgets.QLabel(_('Angle:')) @@ -1077,13 +1110,6 @@ class FlatCAMExcEditor(QtCore.QObject): self.app.ui.exc_move_drill_menuitem.triggered.connect(self.exc_move_drills) - # Init GUI - self.drill_array_size_entry.set_value(5) - self.drill_pitch_entry.set_value(2.54) - self.drill_angle_entry.set_value(12) - self.drill_direction_radio.set_value('CW') - self.drill_axis_radio.set_value('X') - self.exc_obj = None # VisPy Visuals @@ -1166,7 +1192,6 @@ class FlatCAMExcEditor(QtCore.QObject): @staticmethod def make_storage(): - # ## Shape storage. storage = FlatCAMRTreeStorage() storage.get_points = DrawToolShape.get_pts @@ -1174,7 +1199,6 @@ class FlatCAMExcEditor(QtCore.QObject): return storage def set_ui(self): - # updated units self.units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().upper() @@ -1193,6 +1217,7 @@ class FlatCAMExcEditor(QtCore.QObject): self.points_edit[tool_dia].append(drill['point']) except KeyError: self.points_edit[tool_dia] = [drill['point']] + # update the olddia_newdia dict to make sure we have an updated state of the tool_table for key in self.points_edit: self.olddia_newdia[key] = key @@ -1218,6 +1243,15 @@ class FlatCAMExcEditor(QtCore.QObject): tool_dia = float('%.2f' % v['C']) self.tool2tooldia[int(k)] = tool_dia + # Init GUI + self.addtool_entry.set_value(float(self.app.defaults['excellon_editor_newdia'])) + self.drill_array_size_entry.set_value(int(self.app.defaults['excellon_editor_array_size'])) + self.drill_axis_radio.set_value(self.app.defaults['excellon_editor_lin_dir']) + self.drill_pitch_entry.set_value(float(self.app.defaults['excellon_editor_lin_pitch'])) + self.linear_angle_spinner.set_value(float(self.app.defaults['excellon_editor_lin_angle'])) + self.drill_direction_radio.set_value(self.app.defaults['excellon_editor_circ_dir']) + self.drill_angle_entry.set_value(float(self.app.defaults['excellon_editor_circ_angle'])) + def build_ui(self, first_run=None): try: @@ -1238,11 +1272,6 @@ class FlatCAMExcEditor(QtCore.QObject): self.edited_obj_name = self.exc_obj.options['name'] self.name_entry.set_value(self.edited_obj_name) - if self.units == "IN": - self.addtool_entry.set_value(0.039) - else: - self.addtool_entry.set_value(1.00) - sort_temp = [] for diam in self.olddia_newdia: @@ -1886,7 +1915,7 @@ class FlatCAMExcEditor(QtCore.QObject): # add a first tool in the Tool Table but only if the Excellon Object is empty if not self.tool2tooldia: - self.on_tool_add(tooldia=1.00) + self.on_tool_add(tooldia=float(self.app.defaults['excellon_editor_newdia'])) def update_fcexcellon(self, exc_obj): """ @@ -2324,13 +2353,15 @@ class FlatCAMExcEditor(QtCore.QObject): log.warning("Error: %s" % str(e)) raise - def draw_selection_area_handler(self, start_pos, end_pos, sel_type): + def draw_selection_area_handler(self, start, end, sel_type): """ :param start_pos: mouse position when the selection LMB click was done :param end_pos: mouse position when the left mouse button is released :param sel_type: if True it's a left to right selection (enclosure), if False it's a 'touch' selection :return: """ + start_pos = (start[0], start[1]) + end_pos = (end[0], end[1]) poly_selection = Polygon([start_pos, (end_pos[0], start_pos[1]), end_pos, (start_pos[0], end_pos[1])]) self.app.delete_selection_shape() @@ -2702,4 +2733,23 @@ class FlatCAMExcEditor(QtCore.QObject): self.select_tool('drill_move') return + +def get_shapely_list_bounds(geometry_list): + xmin = Inf + ymin = Inf + xmax = -Inf + ymax = -Inf + + for gs in geometry_list: + try: + gxmin, gymin, gxmax, gymax = gs.bounds + xmin = min([xmin, gxmin]) + ymin = min([ymin, gymin]) + xmax = max([xmax, gxmax]) + ymax = max([ymax, gymax]) + except Exception as e: + log.warning("DEVELOPMENT: Tried to get bounds of empty geometry. --> %s" % str(e)) + + return [xmin, ymin, xmax, ymax] + # EOF diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index 2b629f91..ac8c5266 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -37,13 +37,13 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.app = app # Divine icon pack by Ipapun @ finicons.com - ################################### ## + # ################################## ## # ## BUILDING THE GUI IS DONE HERE # ## - ################################### ## + # ################################## ## - ########## ## + # ######### ## # ## Menu # ## - ########## ## + # ######### ## self.menu = self.menuBar() # ## File # ## @@ -137,18 +137,18 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # Import ... self.menufileimport = self.menufile.addMenu(QtGui.QIcon('share/import.png'), _('Import')) self.menufileimportsvg = QtWidgets.QAction(QtGui.QIcon('share/svg16.png'), - _('&SVG as Geometry Object ...'), self) + _('&SVG as Geometry Object ...'), self) self.menufileimport.addAction(self.menufileimportsvg) self.menufileimportsvg_as_gerber = QtWidgets.QAction(QtGui.QIcon('share/svg16.png'), - _('&SVG as Gerber Object ...'), self) + _('&SVG as Gerber Object ...'), self) self.menufileimport.addAction(self.menufileimportsvg_as_gerber) self.menufileimport.addSeparator() self.menufileimportdxf = QtWidgets.QAction(QtGui.QIcon('share/dxf16.png'), - _('&DXF as Geometry Object ...'), self) + _('&DXF as Geometry Object ...'), self) self.menufileimport.addAction(self.menufileimportdxf) self.menufileimportdxf_as_gerber = QtWidgets.QAction(QtGui.QIcon('share/dxf16.png'), - _('&DXF as Gerber Object ...'), self) + _('&DXF as Gerber Object ...'), self) self.menufileimport.addAction(self.menufileimportdxf_as_gerber) self.menufileimport.addSeparator() @@ -167,8 +167,8 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.menufileexportpng = QtWidgets.QAction(QtGui.QIcon('share/export_png32.png'), _('Export &PNG ...'), self) self.menufileexportpng.setToolTip( _("Will export an image in PNG format,\n" - "the saved image will contain the visual \n" - "information currently in FlatCAM Plot Area.") + "the saved image will contain the visual \n" + "information currently in FlatCAM Plot Area.") ) self.menufileexport.addAction(self.menufileexportpng) @@ -177,9 +177,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.menufileexportexcellon = QtWidgets.QAction(QtGui.QIcon('share/drill32.png'), _('Export &Excellon ...'), self) self.menufileexportexcellon.setToolTip( - _( "Will export an Excellon Object as Excellon file,\n" - "the coordinates format, the file units and zeros\n" - "are set in Preferences -> Excellon Export.") + _("Will export an Excellon Object as Excellon file,\n" + "the coordinates format, the file units and zeros\n" + "are set in Preferences -> Excellon Export.") ) self.menufileexport.addAction(self.menufileexportexcellon) @@ -203,6 +203,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.menufile.addSeparator() self.menufile_save = self.menufile.addMenu(QtGui.QIcon('share/save_as.png'), _('Save')) + # Save Project self.menufilesaveproject = QtWidgets.QAction(QtGui.QIcon('share/floppy16.png'), _('&Save Project ...'), self) self.menufile_save.addAction(self.menufilesaveproject) @@ -243,11 +244,11 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.menuedit_convertjoin = self.menuedit_convert.addAction( QtGui.QIcon('share/join16.png'), _('&Join Geo/Gerber/Exc -> Geo')) self.menuedit_convertjoin.setToolTip( - _( "Merge a selection of objects, which can be of type:\n" - "- Gerber\n" - "- Excellon\n" - "- Geometry\n" - "into a new combo Geometry object.") + _("Merge a selection of objects, which can be of type:\n" + "- Gerber\n" + "- Excellon\n" + "- Geometry\n" + "into a new combo Geometry object.") ) self.menuedit_convertjoinexc = self.menuedit_convert.addAction( QtGui.QIcon('share/join16.png'), _('Join Excellon(s) -> Excellon')) @@ -264,19 +265,19 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.menuedit_convert_sg2mg = self.menuedit_convert.addAction( QtGui.QIcon('share/convert24.png'), _('Convert Single to MultiGeo')) self.menuedit_convert_sg2mg.setToolTip( - _( "Will convert a Geometry object from single_geometry type\n" - "to a multi_geometry type.") + _("Will convert a Geometry object from single_geometry type\n" + "to a multi_geometry type.") ) self.menuedit_convert_mg2sg = self.menuedit_convert.addAction( QtGui.QIcon('share/convert24.png'), _('Convert Multi to SingleGeo')) self.menuedit_convert_mg2sg.setToolTip( - _( "Will convert a Geometry object from multi_geometry type\n" - "to a single_geometry type.") + _("Will convert a Geometry object from multi_geometry type\n" + "to a single_geometry type.") ) # Separator self.menuedit_convert.addSeparator() self.menueditconvert_any2geo = self.menuedit_convert.addAction(QtGui.QIcon('share/copy_geo.png'), - _('Convert Any to Geo')) + _('Convert Any to Geo')) self.menueditconvert_any2gerber = self.menuedit_convert.addAction(QtGui.QIcon('share/copy_geo.png'), _('Convert Any to Gerber')) self.menuedit_convert.setToolTipsVisible(True) @@ -321,26 +322,26 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # self.menuoptions_transform = self.menuoptions.addMenu(QtGui.QIcon('share/transform.png'), # '&Transform Object') self.menuoptions_transform_rotate = self.menuoptions.addAction(QtGui.QIcon('share/rotate.png'), - _("&Rotate Selection\tSHIFT+(R)")) + _("&Rotate Selection\tSHIFT+(R)")) # Separator self.menuoptions.addSeparator() self.menuoptions_transform_skewx = self.menuoptions.addAction(QtGui.QIcon('share/skewX.png'), - _("&Skew on X axis\tSHIFT+X")) + _("&Skew on X axis\tSHIFT+X")) self.menuoptions_transform_skewy = self.menuoptions.addAction(QtGui.QIcon('share/skewY.png'), - _( "S&kew on Y axis\tSHIFT+Y")) + _( "S&kew on Y axis\tSHIFT+Y")) # Separator self.menuoptions.addSeparator() self.menuoptions_transform_flipx = self.menuoptions.addAction(QtGui.QIcon('share/flipx.png'), - _("Flip on &X axis\tX")) + _("Flip on &X axis\tX")) self.menuoptions_transform_flipy = self.menuoptions.addAction(QtGui.QIcon('share/flipy.png'), - _("Flip on &Y axis\tY")) + _("Flip on &Y axis\tY")) # Separator self.menuoptions.addSeparator() self.menuoptions_view_source = self.menuoptions.addAction(QtGui.QIcon('share/source32.png'), - _("View source\tALT+S")) + _("View source\tALT+S")) # Separator self.menuoptions.addSeparator() @@ -376,13 +377,12 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.menuview_toggle_workspace = self.menuview.addAction(QtGui.QIcon('share/workspace24.png'), _("Toggle Workspace\tSHIFT+W")) - # ## Tool # ## - # self.menutool = self.menu.addMenu('&Tool') + # ## Tool ### self.menutool = QtWidgets.QMenu(_('&Tool')) self.menutoolaction = self.menu.addMenu(self.menutool) self.menutoolshell = self.menutool.addAction(QtGui.QIcon('share/shell16.png'), _('&Command Line\tS')) - # ## Help # ## + # ## Help ### self.menuhelp = self.menu.addMenu(_('&Help')) self.menuhelp_manual = self.menuhelp.addAction(QtGui.QIcon('share/globe16.png'), _('Help\tF1')) self.menuhelp_home = self.menuhelp.addAction(QtGui.QIcon('share/home16.png'), _('FlatCAM.org')) @@ -393,14 +393,10 @@ class FlatCAMGUI(QtWidgets.QMainWindow): ) self.menuhelp_about = self.menuhelp.addAction(QtGui.QIcon('share/about32.png'), _('About')) - - # ## FlatCAM Editor menu # ## - # self.editor_menu = QtWidgets.QMenu("Editor") - # self.menu.addMenu(self.editor_menu) + # ## FlatCAM Editor menu ### self.geo_editor_menu = QtWidgets.QMenu(">Geo Editor<") self.menu.addMenu(self.geo_editor_menu) - # self.select_menuitem = self.menu.addAction(QtGui.QIcon('share/pointer16.png'), "Select 'Esc'") self.geo_add_circle_menuitem = self.geo_editor_menu.addAction( QtGui.QIcon('share/circle32.png'), _('Add Circle\tO') ) @@ -419,7 +415,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.geo_union_menuitem = self.geo_editor_menu.addAction(QtGui.QIcon('share/union16.png'), _('Polygon Union\tU')) self.geo_intersection_menuitem = self.geo_editor_menu.addAction(QtGui.QIcon('share/intersection16.png'), - _('Polygon Intersection\tE')) + _('Polygon Intersection\tE')) self.geo_subtract_menuitem = self.geo_editor_menu.addAction( QtGui.QIcon('share/subtract16.png'), _('Polygon Subtraction\tS') ) @@ -468,8 +464,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.exc_move_drill_menuitem = self.exc_editor_menu.addAction( QtGui.QIcon('share/move32.png'),_( 'Move Drill(s)\tM')) - # ## APPLICATION GERBER EDITOR MENU # ## - + # ## APPLICATION GERBER EDITOR MENU ### self.grb_editor_menu = QtWidgets.QMenu(_(">Gerber Editor<")) self.menu.addMenu(self.grb_editor_menu) @@ -480,19 +475,19 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.grb_add_track_menuitem = self.grb_editor_menu.addAction( QtGui.QIcon('share/track32.png'), _('Add Track\tT')) self.grb_add_region_menuitem = self.grb_editor_menu.addAction(QtGui.QIcon('share/rectangle32.png'), - _('Add Region\tN')) + _('Add Region\tN')) self.grb_editor_menu.addSeparator() self.grb_convert_poly_menuitem = self.grb_editor_menu.addAction(QtGui.QIcon('share/poligonize32.png'), - _("Poligonize\tALT+N")) + _("Poligonize\tALT+N")) self.grb_add_semidisc_menuitem = self.grb_editor_menu.addAction(QtGui.QIcon('share/semidisc32.png'), _("Add SemiDisc\tE")) self.grb_add_disc_menuitem = self.grb_editor_menu.addAction(QtGui.QIcon('share/disc32.png'), _("Add Disc\tD")) self.grb_add_buffer_menuitem = self.grb_editor_menu.addAction(QtGui.QIcon('share/buffer16-2.png'), - _('Buffer\tB')) + _('Buffer\tB')) self.grb_add_scale_menuitem = self.grb_editor_menu.addAction(QtGui.QIcon('share/scale32.png'), - _('Scale\tS')) + _('Scale\tS')) self.grb_transform_menuitem = self.grb_editor_menu.addAction( QtGui.QIcon('share/transform.png'),_( "Transform\tALT+R") ) @@ -516,9 +511,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.exc_editor_menu.menuAction().setVisible(False) self.exc_editor_menu.setDisabled(True) - # ############################# ## - # # ## Project Tab Context menu # ## - # ############################# ## + # ################################ + # ### Project Tab Context menu ### + # ################################ self.menuproject = QtWidgets.QMenu() self.menuprojectenable = self.menuproject.addAction(QtGui.QIcon('share/replot32.png'), _('Enable Plot')) @@ -535,9 +530,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.menuprojectproperties = self.menuproject.addAction(QtGui.QIcon('share/properties32.png'), _('Properties')) - # ############# ## - # # ## Splitter # ## - # ############# ## + # ################ + # ### Splitter ### + # ################ # IMPORTANT # # The order: SPITTER -> NOTEBOOK -> SNAP TOOLBAR is important and without it the GUI will not be initialized as @@ -557,11 +552,11 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.splitter_left.addWidget(self.notebook) self.splitter_left.setHandleWidth(0) - ############# ## - # ## Toolbar # ## - ############# ## + # ############## + # ## Toolbar ### + # ############## - # ## TOOLBAR INSTALLATION # ## + # ## TOOLBAR INSTALLATION ### self.toolbarfile = QtWidgets.QToolBar(_('File Toolbar')) self.toolbarfile.setObjectName('File_TB') self.addToolBar(self.toolbarfile) @@ -608,7 +603,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.snap_toolbar.setMaximumHeight(30) self.splitter_left.addWidget(self.snap_toolbar) - # ## File Toolbar # ## + # ## File Toolbar ### self.file_open_gerber_btn = self.toolbarfile.addAction(QtGui.QIcon('share/flatcam_icon32.png'), _("Open Gerber")) self.file_open_excellon_btn = self.toolbarfile.addAction(QtGui.QIcon('share/drill32.png'), _("Open Excellon")) @@ -616,7 +611,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.file_open_btn = self.toolbarfile.addAction(QtGui.QIcon('share/folder32.png'), _("Open project")) self.file_save_btn = self.toolbarfile.addAction(QtGui.QIcon('share/floppy32.png'), _("Save project")) - # ## Edit Toolbar # ## + # ## Edit Toolbar ### self.newgeo_btn = self.toolbargeo.addAction(QtGui.QIcon('share/new_geo32_bis.png'), _("New Blank Geometry")) self.newgrb_btn = self.toolbargeo.addAction(QtGui.QIcon('share/new_geo32.png'), _("New Blank Gerber")) self.newexc_btn = self.toolbargeo.addAction(QtGui.QIcon('share/new_exc32.png'), _("New Blank Excellon")) @@ -638,10 +633,10 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # self.toolbarview.setVisible(False) - # ## Shell Toolbar # ## + # ## Shell Toolbar ## self.shell_btn = self.toolbarshell.addAction(QtGui.QIcon('share/shell32.png'), _("&Command Line")) - # ## Tools Toolbar # ## + # ## Tools Toolbar ## self.dblsided_btn = self.toolbartools.addAction(QtGui.QIcon('share/doubleside32.png'), _("2Sided Tool")) self.cutout_btn = self.toolbartools.addAction(QtGui.QIcon('share/cut16_bis.png'), _("&Cutout Tool")) self.ncc_btn = self.toolbartools.addAction(QtGui.QIcon('share/ncc16.png'), _("NCC Tool")) @@ -658,7 +653,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.calculators_btn = self.toolbartools.addAction(QtGui.QIcon('share/calculator24.png'), _("Calculators Tool")) self.transform_btn = self.toolbartools.addAction(QtGui.QIcon('share/transform.png'), _("Transform Tool")) - # ## Drill Editor Toolbar # ## + # ## Drill Editor Toolbar ### self.select_drill_btn = self.exc_edit_toolbar.addAction(QtGui.QIcon('share/pointer32.png'), _("Select")) self.add_drill_btn = self.exc_edit_toolbar.addAction(QtGui.QIcon('share/plus16.png'), _('Add Drill Hole')) self.add_drill_array_btn = self.exc_edit_toolbar.addAction( @@ -672,7 +667,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.exc_edit_toolbar.addSeparator() self.move_drill_btn = self.exc_edit_toolbar.addAction(QtGui.QIcon('share/move32.png'), _("Move Drill")) - # ## Geometry Editor Toolbar # ## + # ## Geometry Editor Toolbar ### self.geo_select_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/pointer32.png'), _("Select")) self.geo_add_circle_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/circle32.png'), _('Add Circle')) self.geo_add_arc_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/arc32.png'), _('Add Arc')) @@ -928,9 +923,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.pref_import_button.setMinimumWidth(130) self.pref_import_button.setToolTip( _("Import a full set of FlatCAM settings from a file\n" - "previously saved on HDD.\n\n" - "FlatCAM automatically save a 'factory_defaults' file\n" - "on the first start. Do not delete that file.")) + "previously saved on HDD.\n\n" + "FlatCAM automatically save a 'factory_defaults' file\n" + "on the first start. Do not delete that file.")) self.pref_tab_bottom_layout_1.addWidget(self.pref_import_button) self.pref_export_button = QtWidgets.QPushButton() @@ -938,7 +933,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.pref_export_button.setMinimumWidth(130) self.pref_export_button.setToolTip( _( "Export a full set of FlatCAM settings in a file\n" - "that is saved on HDD.")) + "that is saved on HDD.")) self.pref_tab_bottom_layout_1.addWidget(self.pref_export_button) self.pref_open_button = QtWidgets.QPushButton() @@ -957,12 +952,12 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.pref_save_button.setMinimumWidth(130) self.pref_save_button.setToolTip( _("Save the current settings in the 'current_defaults' file\n" - "which is the file storing the working default preferences.")) + "which is the file storing the working default preferences.")) self.pref_tab_bottom_layout_2.addWidget(self.pref_save_button) - ###################################### ## - # ## HERE WE BUILD THE SHORTCUTS LIST. TAB AREA # ## - ###################################### ## + # ################################################# + # ## HERE WE BUILD THE SHORTCUTS LIST. TAB AREA ### + # ################################################# self.shortcuts_tab = QtWidgets.QWidget() self.sh_tab_layout = QtWidgets.QVBoxLayout() self.sh_tab_layout.setContentsMargins(2, 2, 2, 2) @@ -1659,7 +1654,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.sel_all_cb = QtWidgets.QCheckBox(_('All')) self.sel_all_cb.setToolTip( _("When checked it will replace all instances in the 'Find' box\n" - "with the text in the 'Replace' box..") + "with the text in the 'Replace' box..") ) self.buttonOpen = QtWidgets.QPushButton(_('Open Code')) self.buttonSave = QtWidgets.QPushButton(_('Save Code')) @@ -1733,6 +1728,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.show() self.filename = "" + self.units = "" self.setAcceptDrops(True) # # restore the Toolbar State from file @@ -1744,9 +1740,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # log.debug("FlatCAMGUI.__init__() --> UI state not restored. IOError") # pass - #################### ## + # ################### ## # ## INITIALIZE GUI # ## - #################### ## + # ################### ## self.grid_snap_btn.setCheckable(True) self.corner_snap_btn.setCheckable(True) @@ -2038,9 +2034,6 @@ class FlatCAMGUI(QtWidgets.QMainWindow): else: key = event.key - # Propagate to tool - response = None - if self.app.call_source == 'app': if modifiers == QtCore.Qt.ControlModifier: if key == QtCore.Qt.Key_A: @@ -3001,7 +2994,8 @@ class FlatCAMGUI(QtWidgets.QMainWindow): if ok: self.app.exc_editor.on_tool_add(tooldia=val) self.app.inform.emit( - _("[success] Added new tool with dia: {dia} {units}").format(dia='%.4f' % float(val), units=str(self.units))) + _("[success] Added new tool with dia: {dia} {units}").format(dia='%.4f' % float(val), + units=str(self.units))) else: self.app.inform.emit( _("[WARNING_NOTCL] Adding Tool cancelled ...")) @@ -3161,7 +3155,6 @@ class GerberPreferencesUI(QtWidgets.QWidget): self.gerber_editor_group = GerberEditorPrefGroupUI() self.gerber_editor_group.setFixedWidth(200) - self.vlay = QtWidgets.QVBoxLayout() self.vlay.addWidget(self.gerber_opt_group) self.vlay.addWidget(self.gerber_exp_group) @@ -3335,7 +3328,7 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): # Grid X Entry self.gridx_label = QtWidgets.QLabel(_('Grid X value:')) self.gridx_label.setToolTip( - _( "This is the Grid snap value on X axis.") + _("This is the Grid snap value on X axis.") ) self.gridx_entry = LengthEntry() @@ -3354,13 +3347,13 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): # Workspace self.workspace_lbl = QtWidgets.QLabel(_('Workspace:')) self.workspace_lbl.setToolTip( - _( "Draw a delimiting rectangle on canvas.\n" - "The purpose is to illustrate the limits for our work.") + _("Draw a delimiting rectangle on canvas.\n" + "The purpose is to illustrate the limits for our work.") ) self.workspace_type_lbl = QtWidgets.QLabel(_('Wk. format:')) self.workspace_type_lbl.setToolTip( - _( "Select the type of rectangle to be used on canvas,\n" - "as valid workspace.") + _("Select the type of rectangle to be used on canvas,\n" + "as valid workspace.") ) self.workspace_cb = FCCheckBox() self.wk_cb = FCComboBox() @@ -3374,9 +3367,9 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): # Plot Fill Color self.pf_color_label = QtWidgets.QLabel(_('Plot Fill:')) self.pf_color_label.setToolTip( - _( "Set the fill color for plotted objects.\n" - "First 6 digits are the color and the last 2\n" - "digits are for alpha (transparency) level.") + _("Set the fill color for plotted objects.\n" + "First 6 digits are the color and the last 2\n" + "digits are for alpha (transparency) level.") ) self.pf_color_entry = FCEntry() self.pf_color_button = QtWidgets.QPushButton() @@ -3390,7 +3383,7 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): # Plot Fill Transparency Level self.pf_alpha_label = QtWidgets.QLabel(_('Alpha Level:')) self.pf_alpha_label.setToolTip( - _( "Set the fill transparency for plotted objects.") + _("Set the fill transparency for plotted objects.") ) self.pf_color_alpha_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) self.pf_color_alpha_slider.setMinimum(0) @@ -3409,7 +3402,7 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): # Plot Line Color self.pl_color_label = QtWidgets.QLabel(_('Plot Line:')) self.pl_color_label.setToolTip( - _( "Set the line color for plotted objects.") + _("Set the line color for plotted objects.") ) self.pl_color_entry = FCEntry() self.pl_color_button = QtWidgets.QPushButton() @@ -3424,9 +3417,9 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): self.sf_color_label = QtWidgets.QLabel(_('Sel. Fill:')) self.sf_color_label.setToolTip( _("Set the fill color for the selection box\n" - "in case that the selection is done from left to right.\n" - "First 6 digits are the color and the last 2\n" - "digits are for alpha (transparency) level.") + "in case that the selection is done from left to right.\n" + "First 6 digits are the color and the last 2\n" + "digits are for alpha (transparency) level.") ) self.sf_color_entry = FCEntry() self.sf_color_button = QtWidgets.QPushButton() @@ -3474,9 +3467,9 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): self.alt_sf_color_label = QtWidgets.QLabel(_('Sel2. Fill:')) self.alt_sf_color_label.setToolTip( _("Set the fill color for the selection box\n" - "in case that the selection is done from right to left.\n" - "First 6 digits are the color and the last 2\n" - "digits are for alpha (transparency) level.") + "in case that the selection is done from right to left.\n" + "First 6 digits are the color and the last 2\n" + "digits are for alpha (transparency) level.") ) self.alt_sf_color_entry = FCEntry() self.alt_sf_color_button = QtWidgets.QPushButton() @@ -3620,12 +3613,11 @@ class GeneralGUISetGroupUI(OptionsGroupUI): # Create a form layout for the Application general settings self.form_box = QtWidgets.QFormLayout() - # Layout selection self.layout_label = QtWidgets.QLabel(_('Layout:')) self.layout_label.setToolTip( _("Select an layout for FlatCAM.\n" - "It is applied immediately.") + "It is applied immediately.") ) self.layout_combo = FCComboBox() # don't translate the QCombo items as they are used in QSettings and identified by name @@ -3643,7 +3635,7 @@ class GeneralGUISetGroupUI(OptionsGroupUI): self.style_label = QtWidgets.QLabel(_('Style:')) self.style_label.setToolTip( _("Select an style for FlatCAM.\n" - "It will be applied at the next app start.") + "It will be applied at the next app start.") ) self.style_combo = FCComboBox() self.style_combo.addItems(QtWidgets.QStyleFactory.keys()) @@ -3656,7 +3648,7 @@ class GeneralGUISetGroupUI(OptionsGroupUI): self.hdpi_label = QtWidgets.QLabel(_('HDPI Support:')) self.hdpi_label.setToolTip( _("Enable High DPI support for FlatCAM.\n" - "It will be applied at the next app start.") + "It will be applied at the next app start.") ) self.hdpi_cb = FCCheckBox() @@ -3671,7 +3663,7 @@ class GeneralGUISetGroupUI(OptionsGroupUI): self.clear_label = QtWidgets.QLabel(_('Clear GUI Settings:')) self.clear_label.setToolTip( _("Clear the GUI settings for FlatCAM,\n" - "such as: layout, gui state, style, hdpi support etc.") + "such as: layout, gui state, style, hdpi support etc.") ) self.clear_btn = FCButton(_("Clear")) self.clear_btn.clicked.connect(self.handle_clear) @@ -3680,8 +3672,8 @@ class GeneralGUISetGroupUI(OptionsGroupUI): self.hover_label = QtWidgets.QLabel(_('Hover Shape:')) self.hover_label.setToolTip( _("Enable display of a hover shape for FlatCAM objects.\n" - "It is displayed whenever the mouse cursor is hovering\n" - "over any kind of not-selected object.") + "It is displayed whenever the mouse cursor is hovering\n" + "over any kind of not-selected object.") ) self.hover_cb = FCCheckBox() @@ -3731,7 +3723,7 @@ class GeneralGUISetGroupUI(OptionsGroupUI): def handle_clear(self): msgbox = QtWidgets.QMessageBox() msgbox.setText(_("Are you sure you want to delete the GUI Settings? " - "\n") + "\n") ) msgbox.setWindowTitle(_("Clear GUI Settings")) msgbox.setWindowIcon(QtGui.QIcon('share/trash32.png')) @@ -3819,9 +3811,9 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): self.send_stats_label = QtWidgets.QLabel(_('Send Stats:')) self.send_stats_label.setToolTip( _("Check this box if you agree to send anonymous\n" - "stats automatically at startup, to help improve FlatCAM.") + "stats automatically at startup, to help improve FlatCAM.") ) - self.send_stats_cb= FCCheckBox(label='') + self.send_stats_cb = FCCheckBox(label='') self.send_stats_cb.setToolTip( _("Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM.") @@ -3835,7 +3827,7 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): "- MMB --> Middle Mouse Button\n" "- RMB --> Right Mouse Button")) self.pan_button_radio = RadioSet([{'label': 'MMB', 'value': '3'}, - {'label': 'RMB', 'value': '2'}]) + {'label': 'RMB', 'value': '2'}]) # Multiple Selection Modifier Key self.mselectlabel = QtWidgets.QLabel(_('Multiple Sel:')) @@ -3858,9 +3850,9 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): # Project autohide CB self.project_autohide_label = QtWidgets.QLabel(_('Project AutoHide:')) self.project_autohide_label.setToolTip( - _( "Check this box if you want the project/selected/tool tab area to\n" - "hide automatically when there are no objects loaded and\n" - "to show whenever a new object is created.") + _("Check this box if you want the project/selected/tool tab area to\n" + "hide automatically when there are no objects loaded and\n" + "to show whenever a new object is created.") ) self.project_autohide_cb = FCCheckBox(label='') self.project_autohide_cb.setToolTip( @@ -3872,13 +3864,13 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): # Enable/Disable ToolTips globally self.toggle_tooltips_label = QtWidgets.QLabel(_('Enable ToolTips:')) self.toggle_tooltips_label.setToolTip( - _( "Check this box if you want to have toolTips displayed\n" - "when hovering with mouse over items throughout the App.") + _("Check this box if you want to have toolTips displayed\n" + "when hovering with mouse over items throughout the App.") ) self.toggle_tooltips_cb = FCCheckBox(label='') self.toggle_tooltips_cb.setToolTip( - _( "Check this box if you want to have toolTips displayed\n" - "when hovering with mouse over items throughout the App.") + _("Check this box if you want to have toolTips displayed\n" + "when hovering with mouse over items throughout the App.") ) self.worker_number_label = QtWidgets.QLabel(_('Workers number:')) self.worker_number_label.setToolTip( @@ -4047,12 +4039,11 @@ class GerberOptPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Gerber Options"))) - # ## Isolation Routing self.isolation_routing_label = QtWidgets.QLabel(_("Isolation Routing:")) self.isolation_routing_label.setToolTip( _("Create a Geometry object with\n" - "toolpaths to cut outside polygons.") + "toolpaths to cut outside polygons.") ) self.layout.addWidget(self.isolation_routing_label) @@ -4072,7 +4063,7 @@ class GerberOptPrefGroupUI(OptionsGroupUI): passlabel = QtWidgets.QLabel(_('Width (# passes):')) passlabel.setToolTip( _("Width of the isolation gap in\n" - "number (integer) of tool widths.") + "number (integer) of tool widths.") ) grid0.addWidget(passlabel, 1, 0) self.iso_width_entry = IntEntry() @@ -4082,8 +4073,8 @@ class GerberOptPrefGroupUI(OptionsGroupUI): overlabel = QtWidgets.QLabel(_('Pass overlap:')) overlabel.setToolTip( _("How much (fraction) of the tool width to overlap each tool pass.\n" - "Example:\n" - "A value here of 0.25 means an overlap of 25%% from the tool diameter found above.") + "Example:\n" + "A value here of 0.25 means an overlap of 25%% from the tool diameter found above.") ) grid0.addWidget(overlabel, 2, 0) self.iso_overlap_entry = FloatEntry() @@ -4092,8 +4083,8 @@ class GerberOptPrefGroupUI(OptionsGroupUI): milling_type_label = QtWidgets.QLabel(_('Milling Type:')) milling_type_label.setToolTip( _("Milling type:\n" - "- climb / best for precision milling and to reduce tool usage\n" - "- conventional / useful when there is no backlash compensation") + "- climb / best for precision milling and to reduce tool usage\n" + "- conventional / useful when there is no backlash compensation") ) grid0.addWidget(milling_type_label, 3, 0) self.milling_type_radio = RadioSet([{'label': 'Climb', 'value': 'cl'}, @@ -4111,7 +4102,7 @@ class GerberOptPrefGroupUI(OptionsGroupUI): self.clearcopper_label = QtWidgets.QLabel(_("Clear non-copper:")) self.clearcopper_label.setToolTip( _("Create a Geometry object with\n" - "toolpaths to cut all non-copper regions.") + "toolpaths to cut all non-copper regions.") ) self.layout.addWidget(self.clearcopper_label) @@ -4122,9 +4113,9 @@ class GerberOptPrefGroupUI(OptionsGroupUI): bmlabel = QtWidgets.QLabel(_('Boundary Margin:')) bmlabel.setToolTip( _("Specify the edge of the PCB\n" - "by drawing a box around all\n" - "objects with this minimum\n" - "distance.") + "by drawing a box around all\n" + "objects with this minimum\n" + "distance.") ) grid1.addWidget(bmlabel, 0, 0) self.noncopper_margin_entry = LengthEntry() @@ -4134,7 +4125,7 @@ class GerberOptPrefGroupUI(OptionsGroupUI): self.noncopper_rounded_cb = FCCheckBox(label=_("Rounded corners")) self.noncopper_rounded_cb.setToolTip( _("Creates a Geometry objects with polygons\n" - "covering the copper-free areas of the PCB.") + "covering the copper-free areas of the PCB.") ) grid1.addWidget(self.noncopper_rounded_cb, 1, 0, 1, 2) @@ -4148,7 +4139,7 @@ class GerberOptPrefGroupUI(OptionsGroupUI): bbmargin = QtWidgets.QLabel(_('Boundary Margin:')) bbmargin.setToolTip( _("Distance of the edges of the box\n" - "to the nearest polygon.") + "to the nearest polygon.") ) grid2.addWidget(bbmargin, 0, 0) self.bbmargin_entry = LengthEntry() @@ -4157,9 +4148,9 @@ class GerberOptPrefGroupUI(OptionsGroupUI): self.bbrounded_cb = FCCheckBox(label=_("Rounded corners")) self.bbrounded_cb.setToolTip( _("If the bounding box is \n" - "to have rounded corners\n" - "their radius is equal to\n" - "the margin.") + "to have rounded corners\n" + "their radius is equal to\n" + "the margin.") ) grid2.addWidget(self.bbrounded_cb, 1, 0, 1, 2) self.layout.addStretch() @@ -4172,13 +4163,12 @@ class GerberAdvOptPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Gerber Adv. Options"))) - # ## Advanced Gerber Parameters self.adv_param_label = QtWidgets.QLabel(_("Advanced Param.:")) self.adv_param_label.setToolTip( _("A list of Gerber advanced parameters.\n" - "Those parameters are available only for\n" - "Advanced App. Level.") + "Those parameters are available only for\n" + "Advanced App. Level.") ) self.layout.addWidget(self.adv_param_label) @@ -4189,9 +4179,8 @@ class GerberAdvOptPrefGroupUI(OptionsGroupUI): self.follow_cb = FCCheckBox(label=_('"Follow"')) self.follow_cb.setToolTip( _("Generate a 'Follow' geometry.\n" - "This means that it will cut through\n" - "the middle of the trace.") - + "This means that it will cut through\n" + "the middle of the trace.") ) grid0.addWidget(self.follow_cb, 0, 0) @@ -4199,8 +4188,8 @@ class GerberAdvOptPrefGroupUI(OptionsGroupUI): self.aperture_table_visibility_cb = FCCheckBox(label=_('Table Show/Hide')) self.aperture_table_visibility_cb.setToolTip( _("Toggle the display of the Gerber Apertures Table.\n" - "Also, on hide, it will delete all mark shapes\n" - "that are drawn on canvas.") + "Also, on hide, it will delete all mark shapes\n" + "that are drawn on canvas.") ) grid0.addWidget(self.aperture_table_visibility_cb, 1, 0) @@ -4243,7 +4232,7 @@ class GerberExpPrefGroupUI(OptionsGroupUI): self.export_options_label = QtWidgets.QLabel(_("Export Options:")) self.export_options_label.setToolTip( _("The parameters set here are used in the file exported\n" - "when using the File -> Export -> Export Gerber menu entry.") + "when using the File -> Export -> Export Gerber menu entry.") ) self.layout.addWidget(self.export_options_label) @@ -4257,7 +4246,7 @@ class GerberExpPrefGroupUI(OptionsGroupUI): ) self.gerber_units_radio = RadioSet([{'label': 'INCH', 'value': 'IN'}, - {'label': 'MM', 'value': 'MM'}]) + {'label': 'MM', 'value': 'MM'}]) self.gerber_units_radio.setToolTip( _("The units used in the Gerber file.") ) @@ -4279,7 +4268,7 @@ class GerberExpPrefGroupUI(OptionsGroupUI): self.format_whole_entry.setFixedWidth(30) self.format_whole_entry.setToolTip( _("This numbers signify the number of digits in\n" - "the whole part of Gerber coordinates.") + "the whole part of Gerber coordinates.") ) hlay1.addWidget(self.format_whole_entry, QtCore.Qt.AlignLeft) @@ -4391,25 +4380,25 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): self.excellon_format_label = QtWidgets.QLabel(_("Excellon Format:")) self.excellon_format_label.setToolTip( _("The NC drill files, usually named Excellon files\n" - "are files that can be found in different formats.\n" - "Here we set the format used when the provided\n" - "coordinates are not using period.\n" - "\n" - "Possible presets:\n" - "\n" - "PROTEUS 3:3 MM LZ\n" - "DipTrace 5:2 MM TZ\n" - "DipTrace 4:3 MM LZ\n" - "\n" - "EAGLE 3:3 MM TZ\n" - "EAGLE 4:3 MM TZ\n" - "EAGLE 2:5 INCH TZ\n" - "EAGLE 3:5 INCH TZ\n" - "\n" - "ALTIUM 2:4 INCH LZ\n" - "Sprint Layout 2:4 INCH LZ" - "\n" - "KiCAD 3:5 INCH TZ") + "are files that can be found in different formats.\n" + "Here we set the format used when the provided\n" + "coordinates are not using period.\n" + "\n" + "Possible presets:\n" + "\n" + "PROTEUS 3:3 MM LZ\n" + "DipTrace 5:2 MM TZ\n" + "DipTrace 4:3 MM LZ\n" + "\n" + "EAGLE 3:3 MM TZ\n" + "EAGLE 4:3 MM TZ\n" + "EAGLE 2:5 INCH TZ\n" + "EAGLE 3:5 INCH TZ\n" + "\n" + "ALTIUM 2:4 INCH LZ\n" + "Sprint Layout 2:4 INCH LZ" + "\n" + "KiCAD 3:5 INCH TZ") ) self.layout.addWidget(self.excellon_format_label) @@ -4426,8 +4415,8 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): self.excellon_format_upper_in_entry.setAlignment(QtCore.Qt.AlignRight) self.excellon_format_upper_in_entry.setFixedWidth(30) self.excellon_format_upper_in_entry.setToolTip( - _( "This numbers signify the number of digits in\n" - "the whole part of Excellon coordinates.") + _("This numbers signify the number of digits in\n" + "the whole part of Excellon coordinates.") ) hlay1.addWidget(self.excellon_format_upper_in_entry, QtCore.Qt.AlignLeft) @@ -4441,7 +4430,7 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): self.excellon_format_lower_in_entry.setFixedWidth(30) self.excellon_format_lower_in_entry.setToolTip( _("This numbers signify the number of digits in\n" - "the decimal part of Excellon coordinates.") + "the decimal part of Excellon coordinates.") ) hlay1.addWidget(self.excellon_format_lower_in_entry, QtCore.Qt.AlignLeft) hlay1.addStretch() @@ -4460,11 +4449,11 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): self.excellon_format_upper_mm_entry.setFixedWidth(30) self.excellon_format_upper_mm_entry.setToolTip( _("This numbers signify the number of digits in\n" - "the whole part of Excellon coordinates.") + "the whole part of Excellon coordinates.") ) hlay2.addWidget(self.excellon_format_upper_mm_entry, QtCore.Qt.AlignLeft) - excellon_separator_mm_label= QtWidgets.QLabel(':') + excellon_separator_mm_label = QtWidgets.QLabel(':') excellon_separator_mm_label.setFixedWidth(5) hlay2.addWidget(excellon_separator_mm_label, QtCore.Qt.AlignLeft) @@ -4474,7 +4463,7 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): self.excellon_format_lower_mm_entry.setFixedWidth(30) self.excellon_format_lower_mm_entry.setToolTip( _("This numbers signify the number of digits in\n" - "the decimal part of Excellon coordinates.") + "the decimal part of Excellon coordinates.") ) hlay2.addWidget(self.excellon_format_lower_mm_entry, QtCore.Qt.AlignLeft) hlay2.addStretch() @@ -4486,23 +4475,23 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): self.excellon_zeros_label.setAlignment(QtCore.Qt.AlignLeft) self.excellon_zeros_label.setToolTip( _("This sets the type of Excellon zeros.\n" - "If LZ then Leading Zeros are kept and\n" - "Trailing Zeros are removed.\n" - "If TZ is checked then Trailing Zeros are kept\n" - "and Leading Zeros are removed.") + "If LZ then Leading Zeros are kept and\n" + "Trailing Zeros are removed.\n" + "If TZ is checked then Trailing Zeros are kept\n" + "and Leading Zeros are removed.") ) hlay3.addWidget(self.excellon_zeros_label) self.excellon_zeros_radio = RadioSet([{'label': 'LZ', 'value': 'L'}, - {'label': 'TZ', 'value': 'T'}]) + {'label': 'TZ', 'value': 'T'}]) self.excellon_zeros_radio.setToolTip( _("This sets the default type of Excellon zeros.\n" - "If it is not detected in the parsed file the value here\n" - "will be used." - "If LZ then Leading Zeros are kept and\n" - "Trailing Zeros are removed.\n" - "If TZ is checked then Trailing Zeros are kept\n" - "and Leading Zeros are removed.") + "If it is not detected in the parsed file the value here\n" + "will be used." + "If LZ then Leading Zeros are kept and\n" + "Trailing Zeros are removed.\n" + "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) @@ -4514,10 +4503,10 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): self.excellon_units_label.setAlignment(QtCore.Qt.AlignLeft) self.excellon_units_label.setToolTip( _("This sets the default units of Excellon files.\n" - "If it is not detected in the parsed file the value here\n" - "will be used." - "Some Excellon files don't have an header\n" - "therefore this parameter will be used.") + "If it is not detected in the parsed file the value here\n" + "will be used." + "Some Excellon files don't have an header\n" + "therefore this parameter will be used.") ) hlay4.addWidget(self.excellon_units_label) @@ -4525,8 +4514,8 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): {'label': 'MM', 'value': 'METRIC'}]) self.excellon_units_radio.setToolTip( _("This sets the units of Excellon files.\n" - "Some Excellon files don't have an header\n" - "therefore this parameter will be used.") + "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) @@ -4551,26 +4540,26 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): 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" - "Guided Local Path is used. Default search time is 3sec.\n" - "Use set_sys excellon_search_time value Tcl Command to set other values.\n" - "If Basic is checked then Google OR-Tools Basic algorithm is used.\n" - "\n" - "If DISABLED, then FlatCAM works in 32bit mode and it uses \n" - "Travelling Salesman algorithm for path optimization.") + "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" + "Guided Local Path is used. Default search time is 3sec.\n" + "Use set_sys excellon_search_time value Tcl Command to set other values.\n" + "If Basic is checked then Google OR-Tools Basic algorithm is used.\n" + "\n" + "If DISABLED, then FlatCAM works in 32bit mode and it uses \n" + "Travelling Salesman algorithm for path optimization.") ) self.excellon_optimization_radio = RadioSet([{'label': 'MH', 'value': 'M'}, {'label': 'Basic', 'value': 'B'}]) self.excellon_optimization_radio.setToolTip( _("This sets the optimization type for the Excellon drill path.\n" - "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" - "Guided Local Path is used. Default search time is 3sec.\n" - "Use set_sys excellon_search_time value Tcl Command to set other values.\n" - "If Basic is checked then Google OR-Tools Basic algorithm is used.\n" - "\n" - "If DISABLED, then FlatCAM works in 32bit mode and it uses \n" - "Travelling Salesman algorithm for path optimization.") + "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" + "Guided Local Path is used. Default search time is 3sec.\n" + "Use set_sys excellon_search_time value Tcl Command to set other values.\n" + "If Basic is checked then Google OR-Tools Basic algorithm is used.\n" + "\n" + "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) @@ -4579,9 +4568,9 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): self.optimization_time_label.setAlignment(QtCore.Qt.AlignLeft) self.optimization_time_label.setToolTip( _("When OR-Tools Metaheuristic (MH) is enabled there is a\n" - "maximum threshold for how much time is spent doing the\n" - "path optimization. This max duration is set here.\n" - "In seconds.") + "maximum threshold for how much time is spent doing the\n" + "path optimization. This max duration is set here.\n" + "In seconds.") ) @@ -4626,7 +4615,7 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): self.cncjob_label = QtWidgets.QLabel(_('Create CNC Job')) self.cncjob_label.setToolTip( _("Parameters used to create a CNC Job object\n" - "for this drill object.") + "for this drill object.") ) self.layout.addWidget(self.cncjob_label) @@ -4636,7 +4625,7 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): cutzlabel = QtWidgets.QLabel(_('Cut Z:')) cutzlabel.setToolTip( _("Drill depth (negative)\n" - "below the copper surface.") + "below the copper surface.") ) grid2.addWidget(cutzlabel, 0, 0) self.cutz_entry = LengthEntry() @@ -4645,7 +4634,7 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): travelzlabel = QtWidgets.QLabel(_('Travel Z:')) travelzlabel.setToolTip( _("Tool height when travelling\n" - "across the XY plane.") + "across the XY plane.") ) grid2.addWidget(travelzlabel, 1, 0) self.travelz_entry = LengthEntry() @@ -4655,7 +4644,7 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): toolchlabel = QtWidgets.QLabel(_("Tool change:")) toolchlabel.setToolTip( _("Include tool-change sequence\n" - "in G-Code (Pause for tool change).") + "in G-Code (Pause for tool change).") ) self.toolchange_cb = FCCheckBox() grid2.addWidget(toolchlabel, 2, 0) @@ -4672,7 +4661,7 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): frlabel = QtWidgets.QLabel(_('Feedrate:')) frlabel.setToolTip( _("Tool speed while drilling\n" - "(in units per minute).") + "(in units per minute).") ) grid2.addWidget(frlabel, 4, 0) self.feedrate_entry = LengthEntry() @@ -4682,7 +4671,7 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): spdlabel = QtWidgets.QLabel(_('Spindle Speed:')) spdlabel.setToolTip( _("Speed of the spindle\n" - "in RPM (optional)") + "in RPM (optional)") ) grid2.addWidget(spdlabel, 5, 0) self.spindlespeed_entry = IntEntry(allow_empty=True) @@ -4706,7 +4695,7 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): dwelllabel = QtWidgets.QLabel(_('Dwell:')) dwelllabel.setToolTip( _("Pause to allow the spindle to reach its\n" - "speed before cutting.") + "speed before cutting.") ) dwelltime = QtWidgets.QLabel(_('Duration:')) dwelltime.setToolTip( @@ -4725,25 +4714,24 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): pp_excellon_label = QtWidgets.QLabel(_("Postprocessor:")) pp_excellon_label.setToolTip( _("The postprocessor file that dictates\n" - "gcode output.") + "gcode output.") ) grid2.addWidget(pp_excellon_label, 9, 0) self.pp_excellon_name_cb = FCComboBox() self.pp_excellon_name_cb.setFocusPolicy(Qt.StrongFocus) grid2.addWidget(self.pp_excellon_name_cb, 9, 1) - - #### Choose what to use for Gcode creation: Drills, Slots or Both + # ### Choose what to use for Gcode creation: Drills, Slots or Both excellon_gcode_type_label = QtWidgets.QLabel(_('Gcode: ')) excellon_gcode_type_label.setToolTip( _("Choose what to use for GCode generation:\n" - "'Drills', 'Slots' or 'Both'.\n" - "When choosing 'Slots' or 'Both', slots will be\n" - "converted to drills.") + "'Drills', 'Slots' or 'Both'.\n" + "When choosing 'Slots' or 'Both', slots will be\n" + "converted to drills.") ) self.excellon_gcode_type_radio = RadioSet([{'label': 'Drills', 'value': 'drills'}, - {'label': 'Slots', 'value': 'slots'}, - {'label': 'Both', 'value': 'both'}]) + {'label': 'Slots', 'value': 'slots'}, + {'label': 'Both', 'value': 'both'}]) grid2.addWidget(excellon_gcode_type_label, 10, 0) grid2.addWidget(self.excellon_gcode_type_radio, 10, 1) @@ -4751,7 +4739,7 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): excellon_gcode_type_label.hide() self.excellon_gcode_type_radio.setVisible(False) - #### Milling Holes ## ## + # ### Milling Holes ## ## self.mill_hole_label = QtWidgets.QLabel(_('Mill Holes')) self.mill_hole_label.setToolTip( _("Create Geometry for milling holes.") @@ -4770,7 +4758,7 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): stdlabel = QtWidgets.QLabel(_('Slot Tool dia:')) stdlabel.setToolTip( _("Diameter of the cutting tool\n" - "when milling slots.") + "when milling slots.") ) grid3.addWidget(stdlabel, 1, 0) self.slot_tooldia_entry = LengthEntry() @@ -4796,14 +4784,14 @@ class ExcellonAdvOptPrefGroupUI(OptionsGroupUI): self.setTitle(str(_("Excellon Adv. Options"))) - #################### ## - # ## ADVANCED OPTIONS # ## - #################### ## + # ####################### + # ## ADVANCED OPTIONS ### + # ####################### self.cncjob_label = QtWidgets.QLabel(_('Advanced Options:')) self.cncjob_label.setToolTip( _("Parameters used to create a CNC Job object\n" - "for this drill object that are shown when App Level is Advanced.") + "for this drill object that are shown when App Level is Advanced.") ) self.layout.addWidget(self.cncjob_label) @@ -4813,8 +4801,8 @@ class ExcellonAdvOptPrefGroupUI(OptionsGroupUI): offsetlabel = QtWidgets.QLabel(_('Offset Z:')) offsetlabel.setToolTip( _("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.")) + "to create the desired exit hole diameter due of the tip shape.\n" + "The value here can compensate the Cut Z parameter.")) grid1.addWidget(offsetlabel, 0, 0) self.offset_entry = LengthEntry() grid1.addWidget(self.offset_entry, 0, 1) @@ -4830,7 +4818,7 @@ class ExcellonAdvOptPrefGroupUI(OptionsGroupUI): startzlabel = QtWidgets.QLabel(_('Start move Z:')) startzlabel.setToolTip( _("Height of the tool just after start.\n" - "Delete the value if you don't need this feature.") + "Delete the value if you don't need this feature.") ) grid1.addWidget(startzlabel, 2, 0) self.estartz_entry = FloatEntry() @@ -4839,7 +4827,7 @@ class ExcellonAdvOptPrefGroupUI(OptionsGroupUI): endzlabel = QtWidgets.QLabel(_('End move Z:')) endzlabel.setToolTip( _("Height of the tool after\n" - "the last move at the end of the job.") + "the last move at the end of the job.") ) grid1.addWidget(endzlabel, 3, 0) self.eendz_entry = LengthEntry() @@ -4861,7 +4849,7 @@ class ExcellonAdvOptPrefGroupUI(OptionsGroupUI): self.pdepth_label = QtWidgets.QLabel(_("Probe Z depth:")) self.pdepth_label.setToolTip( _("The maximum depth that the probe is allowed\n" - "to probe. Negative value, in current units.") + "to probe. Negative value, in current units.") ) grid1.addWidget(self.pdepth_label, 5, 0) self.pdepth_entry = FCEntry() @@ -4879,9 +4867,9 @@ class ExcellonAdvOptPrefGroupUI(OptionsGroupUI): fplungelabel = QtWidgets.QLabel(_('Fast Plunge:')) fplungelabel.setToolTip( _("By checking this, the vertical move from\n" - "Z_Toolchange to Z_move is done with G0,\n" - "meaning the fastest speed available.\n" - "WARNING: the move is done at Toolchange X,Y coords.") + "Z_Toolchange to Z_move is done with G0,\n" + "meaning the fastest speed available.\n" + "WARNING: the move is done at Toolchange X,Y coords.") ) self.fplunge_cb = FCCheckBox() grid1.addWidget(fplungelabel, 7, 0) @@ -4890,11 +4878,11 @@ class ExcellonAdvOptPrefGroupUI(OptionsGroupUI): fretractlabel = QtWidgets.QLabel(_('Fast Retract:')) fretractlabel.setToolTip( _("Exit hole strategy.\n" - " - When uncheked, while exiting the drilled hole the drill bit\n" - "will travel slow, with set feedrate (G1), up to zero depth and then\n" - "travel as fast as possible (G0) to the Z Move (travel height).\n" - " - When checked the travel from Z cut (cut depth) to Z_move\n" - "(travel height) is done as fast as possible (G0) in one move.") + " - When uncheked, while exiting the drilled hole the drill bit\n" + "will travel slow, with set feedrate (G1), up to zero depth and then\n" + "travel as fast as possible (G0) to the Z Move (travel height).\n" + " - When checked the travel from Z cut (cut depth) to Z_move\n" + "(travel height) is done as fast as possible (G0) in one move.") ) self.fretract_cb = FCCheckBox() grid1.addWidget(fretractlabel, 8, 0) @@ -4914,7 +4902,7 @@ class ExcellonExpPrefGroupUI(OptionsGroupUI): self.export_options_label = QtWidgets.QLabel(_("Export Options:")) self.export_options_label.setToolTip( _("The parameters set here are used in the file exported\n" - "when using the File -> Export -> Export Excellon menu entry.") + "when using the File -> Export -> Export Excellon menu entry.") ) self.layout.addWidget(self.export_options_label) @@ -4939,9 +4927,9 @@ class ExcellonExpPrefGroupUI(OptionsGroupUI): self.digits_label = QtWidgets.QLabel(_("Int/Decimals:")) self.digits_label.setToolTip( _("The NC drill files, usually named Excellon files\n" - "are files that can be found in different formats.\n" - "Here we set the format used when the provided\n" - "coordinates are not using period.") + "are files that can be found in different formats.\n" + "Here we set the format used when the provided\n" + "coordinates are not using period.") ) hlay1 = QtWidgets.QHBoxLayout() @@ -4952,7 +4940,7 @@ class ExcellonExpPrefGroupUI(OptionsGroupUI): self.format_whole_entry.setFixedWidth(30) self.format_whole_entry.setToolTip( _("This numbers signify the number of digits in\n" - "the whole part of Excellon coordinates.") + "the whole part of Excellon coordinates.") ) hlay1.addWidget(self.format_whole_entry, QtCore.Qt.AlignLeft) @@ -4966,7 +4954,7 @@ class ExcellonExpPrefGroupUI(OptionsGroupUI): self.format_dec_entry.setFixedWidth(30) self.format_dec_entry.setToolTip( _("This numbers signify the number of digits in\n" - "the decimal part of Excellon coordinates.") + "the decimal part of Excellon coordinates.") ) hlay1.addWidget(self.format_dec_entry, QtCore.Qt.AlignLeft) hlay1.addStretch() @@ -4977,21 +4965,21 @@ class ExcellonExpPrefGroupUI(OptionsGroupUI): self.format_label = QtWidgets.QLabel(_("Format:")) self.format_label.setToolTip( _("Select the kind of coordinates format used.\n" - "Coordinates can be saved with decimal point or without.\n" - "When there is no decimal point, it is required to specify\n" - "the number of digits for integer part and the number of decimals.\n" - "Also it will have to be specified if LZ = leading zeros are kept\n" - "or TZ = trailing zeros are kept.") + "Coordinates can be saved with decimal point or without.\n" + "When there is no decimal point, it is required to specify\n" + "the number of digits for integer part and the number of decimals.\n" + "Also it will have to be specified if LZ = leading zeros are kept\n" + "or TZ = trailing zeros are kept.") ) self.format_radio = RadioSet([{'label': 'Decimal', 'value': 'dec'}, {'label': 'No-Decimal', 'value': 'ndec'}]) self.format_radio.setToolTip( _("Select the kind of coordinates format used.\n" - "Coordinates can be saved with decimal point or without.\n" - "When there is no decimal point, it is required to specify\n" - "the number of digits for integer part and the number of decimals.\n" - "Also it will have to be specified if LZ = leading zeros are kept\n" - "or TZ = trailing zeros are kept.") + "Coordinates can be saved with decimal point or without.\n" + "When there is no decimal point, it is required to specify\n" + "the number of digits for integer part and the number of decimals.\n" + "Also it will have to be specified if LZ = leading zeros are kept\n" + "or TZ = trailing zeros are kept.") ) form.addRow(self.format_label, self.format_radio) @@ -5001,20 +4989,20 @@ class ExcellonExpPrefGroupUI(OptionsGroupUI): self.zeros_label.setAlignment(QtCore.Qt.AlignLeft) self.zeros_label.setToolTip( _("This sets the type of Excellon zeros.\n" - "If LZ then Leading Zeros are kept and\n" - "Trailing Zeros are removed.\n" - "If TZ is checked then Trailing Zeros are kept\n" - "and Leading Zeros are removed.") + "If LZ then Leading Zeros are kept and\n" + "Trailing Zeros are removed.\n" + "If TZ is checked then Trailing Zeros are kept\n" + "and Leading Zeros are removed.") ) self.zeros_radio = RadioSet([{'label': 'LZ', 'value': 'LZ'}, {'label': 'TZ', 'value': 'TZ'}]) self.zeros_radio.setToolTip( _("This sets the default type of Excellon zeros.\n" - "If LZ then Leading Zeros are kept and\n" - "Trailing Zeros are removed.\n" - "If TZ is checked then Trailing Zeros are kept\n" - "and Leading Zeros are removed.") + "If LZ then Leading Zeros are kept and\n" + "Trailing Zeros are removed.\n" + "If TZ is checked then Trailing Zeros are kept\n" + "and Leading Zeros are removed.") ) form.addRow(self.zeros_label, self.zeros_radio) @@ -5089,7 +5077,7 @@ class ExcellonEditorPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.drill_array_linear_label, 3, 0, 1, 2) # Linear Drill Array direction - self.drill_axis_label = QtWidgets.QLabel(_('Direction:')) + self.drill_axis_label = QtWidgets.QLabel(_('Linear Dir.:')) self.drill_axis_label.setToolTip( _("Direction on which the linear array is oriented:\n" "- 'X' - horizontal axis \n" @@ -5115,9 +5103,42 @@ class ExcellonEditorPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.drill_pitch_label, 5, 0) grid0.addWidget(self.drill_pitch_entry, 5, 1) + # Linear Drill Array custom angle + self.drill_angle_label = QtWidgets.QLabel(_('Angle:')) + self.drill_angle_label.setToolTip( + _("Angle at which each element in circular array is placed.") + ) + self.drill_angle_entry = LengthEntry() + + grid0.addWidget(self.drill_angle_label, 6, 0) + grid0.addWidget(self.drill_angle_entry, 6, 1) + self.drill_array_circ_label = QtWidgets.QLabel(_('Circular Drill Array:')) grid0.addWidget(self.drill_array_circ_label, 7, 0, 1, 2) + # Circular Drill Array direction + self.drill_circular_direction_label = QtWidgets.QLabel(_('Circular Dir.:')) + self.drill_circular_direction_label.setToolTip( + _("Direction for circular array." + "Can be CW = clockwise or CCW = counter clockwise.") + ) + + self.drill_circular_dir_radio = RadioSet([{'label': 'CW', 'value': 'CW'}, + {'label': 'CCW.', 'value': 'CCW'}]) + + grid0.addWidget(self.drill_circular_direction_label, 8, 0) + grid0.addWidget(self.drill_circular_dir_radio, 8, 1) + + # Circular Drill Array Angle + self.drill_circular_angle_label = QtWidgets.QLabel(_('Circ. Angle:')) + self.drill_circular_angle_label.setToolTip( + _("Angle at which each element in circular array is placed.") + ) + self.drill_circular_angle_entry = LengthEntry() + + grid0.addWidget(self.drill_circular_angle_label, 9, 0) + grid0.addWidget(self.drill_circular_angle_entry, 9, 1) + self.layout.addStretch() @@ -5145,7 +5166,7 @@ class GeometryGenPrefGroupUI(OptionsGroupUI): self.circle_steps_label = QtWidgets.QLabel(_("Circle Steps:")) self.circle_steps_label.setToolTip( _("The number of circle steps for Geometry \n" - "circle and arc shapes linear approximation.") + "circle and arc shapes linear approximation.") ) grid0.addWidget(self.circle_steps_label, 1, 0) self.circle_steps_entry = IntEntry() @@ -5162,7 +5183,7 @@ class GeometryGenPrefGroupUI(OptionsGroupUI): tdlabel = QtWidgets.QLabel(_('Tool dia: ')) tdlabel.setToolTip( _("The diameter of the cutting\n" - "tool..") + "tool..") ) grid0_b.addWidget(tdlabel, 0, 0) self.cnctooldia_entry = LengthEntry() @@ -5184,8 +5205,8 @@ class GeometryOptPrefGroupUI(OptionsGroupUI): self.cncjob_label = QtWidgets.QLabel(_('Create CNC Job:')) self.cncjob_label.setToolTip( _("Create a CNC Job object\n" - "tracing the contours of this\n" - "Geometry object.") + "tracing the contours of this\n" + "Geometry object.") ) self.layout.addWidget(self.cncjob_label) @@ -5196,7 +5217,7 @@ class GeometryOptPrefGroupUI(OptionsGroupUI): cutzlabel = QtWidgets.QLabel(_('Cut Z:')) cutzlabel.setToolTip( _("Cutting depth (negative)\n" - "below the copper surface.") + "below the copper surface.") ) grid1.addWidget(cutzlabel, 0, 0) self.cutz_entry = LengthEntry() @@ -5213,10 +5234,10 @@ class GeometryOptPrefGroupUI(OptionsGroupUI): dplabel = QtWidgets.QLabel(_('Depth/Pass:')) dplabel.setToolTip( _("The depth to cut on each pass,\n" - "when multidepth is enabled.\n" - "It has positive value although\n" - "it is a fraction from the depth\n" - "which has negative value.") + "when multidepth is enabled.\n" + "It has positive value although\n" + "it is a fraction from the depth\n" + "which has negative value.") ) grid1.addWidget(dplabel, 2, 0) @@ -5229,7 +5250,7 @@ class GeometryOptPrefGroupUI(OptionsGroupUI): travelzlabel = QtWidgets.QLabel(_('Travel Z:')) travelzlabel.setToolTip( _("Height of the tool when\n" - "moving without cutting.") + "moving without cutting.") ) grid1.addWidget(travelzlabel, 3, 0) self.travelz_entry = LengthEntry() @@ -5239,7 +5260,7 @@ class GeometryOptPrefGroupUI(OptionsGroupUI): toolchlabel = QtWidgets.QLabel(_("Tool change:")) toolchlabel.setToolTip( _("Include tool-change sequence\n" - "in G-Code (Pause for tool change).") + "in G-Code (Pause for tool change).") ) self.toolchange_cb = FCCheckBox() grid1.addWidget(toolchlabel, 4, 0) @@ -5258,7 +5279,7 @@ class GeometryOptPrefGroupUI(OptionsGroupUI): frlabel = QtWidgets.QLabel(_('Feed Rate X-Y:')) frlabel.setToolTip( _("Cutting speed in the XY\n" - "plane in units per minute") + "plane in units per minute") ) grid1.addWidget(frlabel, 6, 0) self.cncfeedrate_entry = LengthEntry() @@ -5268,8 +5289,8 @@ class GeometryOptPrefGroupUI(OptionsGroupUI): frz_label = QtWidgets.QLabel(_('Feed Rate Z:')) frz_label.setToolTip( _("Cutting speed in the XY\n" - "plane in units per minute.\n" - "It is called also Plunge.") + "plane in units per minute.\n" + "It is called also Plunge.") ) grid1.addWidget(frz_label, 7, 0) self.cncplunge_entry = LengthEntry() @@ -5279,7 +5300,7 @@ class GeometryOptPrefGroupUI(OptionsGroupUI): spdlabel = QtWidgets.QLabel(_('Spindle speed:')) spdlabel.setToolTip( _("Speed of the spindle\n" - "in RPM (optional)") + "in RPM (optional)") ) grid1.addWidget(spdlabel, 8, 0) self.cncspindlespeed_entry = IntEntry(allow_empty=True) @@ -5303,7 +5324,7 @@ class GeometryOptPrefGroupUI(OptionsGroupUI): self.dwell_cb = FCCheckBox(label=_('Dwell:')) self.dwell_cb.setToolTip( _("Pause to allow the spindle to reach its\n" - "speed before cutting.") + "speed before cutting.") ) dwelltime = QtWidgets.QLabel(_('Duration:')) dwelltime.setToolTip( @@ -5320,7 +5341,7 @@ class GeometryOptPrefGroupUI(OptionsGroupUI): pp_label = QtWidgets.QLabel(_("Postprocessor:")) pp_label.setToolTip( _("The postprocessor file that dictates\n" - "Machine Code output.") + "Machine Code output.") ) grid1.addWidget(pp_label, 12, 0) self.pp_geometry_name_cb = FCComboBox() @@ -5343,7 +5364,7 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI): self.cncjob_label = QtWidgets.QLabel(_('Advanced Options:')) self.cncjob_label.setToolTip( _("Parameters to create a CNC Job object\n" - "tracing the contours of a Geometry object.") + "tracing the contours of a Geometry object.") ) self.layout.addWidget(self.cncjob_label) @@ -5363,7 +5384,7 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI): startzlabel = QtWidgets.QLabel(_('Start move Z:')) startzlabel.setToolTip( _("Height of the tool just after starting the work.\n" - "Delete the value if you don't need this feature.") + "Delete the value if you don't need this feature.") ) grid1.addWidget(startzlabel, 2, 0) self.gstartz_entry = FloatEntry() @@ -5373,7 +5394,7 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI): endzlabel = QtWidgets.QLabel(_('End move Z:')) endzlabel.setToolTip( _("Height of the tool after\n" - "the last move at the end of the job.") + "the last move at the end of the job.") ) grid1.addWidget(endzlabel, 3, 0) self.gendz_entry = LengthEntry() @@ -5397,9 +5418,9 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI): self.extracut_cb = FCCheckBox(label=_('Re-cut 1st pt.')) self.extracut_cb.setToolTip( _("In order to remove possible\n" - "copper leftovers where first cut\n" - "meet with last cut, we generate an\n" - "extended cut over the first cut section.") + "copper leftovers where first cut\n" + "meet with last cut, we generate an\n" + "extended cut over the first cut section.") ) grid1.addWidget(self.extracut_cb, 5, 0) @@ -5407,7 +5428,7 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI): self.pdepth_label = QtWidgets.QLabel(_("Probe Z depth:")) self.pdepth_label.setToolTip( _("The maximum depth that the probe is allowed\n" - "to probe. Negative value, in current units.") + "to probe. Negative value, in current units.") ) grid1.addWidget(self.pdepth_label, 6, 0) self.pdepth_entry = FCEntry() @@ -5426,9 +5447,9 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI): fplungelabel = QtWidgets.QLabel(_('Fast Plunge:')) fplungelabel.setToolTip( _("By checking this, the vertical move from\n" - "Z_Toolchange to Z_move is done with G0,\n" - "meaning the fastest speed available.\n" - "WARNING: the move is done at Toolchange X,Y coords.") + "Z_Toolchange to Z_move is done with G0,\n" + "meaning the fastest speed available.\n" + "WARNING: the move is done at Toolchange X,Y coords.") ) self.fplunge_cb = FCCheckBox() grid1.addWidget(fplungelabel, 8, 0) @@ -5438,8 +5459,8 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI): segx_label = QtWidgets.QLabel(_("Seg. X size:")) segx_label.setToolTip( _("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.") + "Useful for auto-leveling.\n" + "A value of 0 means no segmentation on the X axis.") ) grid1.addWidget(segx_label, 9, 0) self.segx_entry = FCEntry() @@ -5449,8 +5470,8 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI): segy_label = QtWidgets.QLabel(_("Seg. Y size:")) segy_label.setToolTip( _("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.") + "Useful for auto-leveling.\n" + "A value of 0 means no segmentation on the Y axis.") ) grid1.addWidget(segy_label, 10, 0) self.segy_entry = FCEntry() @@ -5521,9 +5542,9 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI): self.cncplot_method_label = QtWidgets.QLabel(_("Plot kind:")) self.cncplot_method_label.setToolTip( _("This selects the kind of geometries on the canvas to plot.\n" - "Those can be either of type 'Travel' which means the moves\n" - "above the work piece or it can be of type 'Cut',\n" - "which means the moves that cut into the material.") + "Those can be either of type 'Travel' which means the moves\n" + "above the work piece or it can be of type 'Cut',\n" + "which means the moves that cut into the material.") ) self.cncplot_method_radio = RadioSet([ @@ -5539,10 +5560,9 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI): # Display Annotation self.annotation_label = QtWidgets.QLabel(_("Display Annotation:")) self.annotation_label.setToolTip( - _( - "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." + _("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." ) ) self.annotation_cb = FCCheckBox() @@ -5638,7 +5658,7 @@ class CNCJobOptPrefGroupUI(OptionsGroupUI): self.export_gcode_label = QtWidgets.QLabel(_("Export G-Code:")) self.export_gcode_label.setToolTip( _("Export and save G-Code to\n" - "make this object to a file.") + "make this object to a file.") ) self.layout.addWidget(self.export_gcode_label) @@ -5646,7 +5666,7 @@ class CNCJobOptPrefGroupUI(OptionsGroupUI): prependlabel = QtWidgets.QLabel(_('Prepend to G-Code:')) prependlabel.setToolTip( _("Type here any G-Code commands you would\n" - "like to add at the beginning of the G-Code file.") + "like to add at the beginning of the G-Code file.") ) self.layout.addWidget(prependlabel) @@ -5657,8 +5677,8 @@ class CNCJobOptPrefGroupUI(OptionsGroupUI): appendlabel = QtWidgets.QLabel(_('Append to G-Code:')) appendlabel.setToolTip( _("Type here any G-Code commands you would\n" - "like to append to the generated file.\n" - "I.e.: M2 (End of program)") + "like to append to the generated file.\n" + "I.e.: M2 (End of program)") ) self.layout.addWidget(appendlabel) @@ -5679,7 +5699,7 @@ class CNCJobAdvOptPrefGroupUI(OptionsGroupUI): self.export_gcode_label = QtWidgets.QLabel(_("Export G-Code:")) self.export_gcode_label.setToolTip( _("Export and save G-Code to\n" - "make this object to a file.") + "make this object to a file.") ) self.layout.addWidget(self.export_gcode_label) @@ -5687,9 +5707,9 @@ class CNCJobAdvOptPrefGroupUI(OptionsGroupUI): toolchangelabel = QtWidgets.QLabel(_('Toolchange G-Code:')) toolchangelabel.setToolTip( _("Type here any G-Code commands you would\n" - "like to be executed when Toolchange event is encountered.\n" - "This will constitute a Custom Toolchange GCode,\n" - "or a Toolchange Macro.") + "like to be executed when Toolchange event is encountered.\n" + "This will constitute a Custom Toolchange GCode,\n" + "or a Toolchange Macro.") ) self.layout.addWidget(toolchangelabel) @@ -5703,7 +5723,7 @@ class CNCJobAdvOptPrefGroupUI(OptionsGroupUI): self.toolchange_cb = FCCheckBox(label=_('Use Toolchange Macro')) self.toolchange_cb.setToolTip( _("Check this box if you want to use\n" - "a Custom Toolchange GCode (macro).") + "a Custom Toolchange GCode (macro).") ) hlay.addWidget(self.toolchange_cb) hlay.addStretch() @@ -5715,8 +5735,8 @@ class CNCJobAdvOptPrefGroupUI(OptionsGroupUI): self.tc_variable_combo = FCComboBox() self.tc_variable_combo.setToolTip( _("A list of the FlatCAM variables that can be used\n" - "in the Toolchange event.\n" - "They have to be surrounded by the '%' symbol") + "in the Toolchange event.\n" + "They have to be surrounded by the '%' symbol") ) hlay1.addWidget(self.tc_variable_combo) @@ -5735,7 +5755,8 @@ class CNCJobAdvOptPrefGroupUI(OptionsGroupUI): self.tc_variable_combo.setItemData(8, _("z_move = Z height for travel"), Qt.ToolTipRole) self.tc_variable_combo.setItemData(9, _("z_depthpercut = the step value for multidepth cut"), Qt.ToolTipRole) self.tc_variable_combo.setItemData(10, _("spindlesspeed = the value for the spindle speed"), Qt.ToolTipRole) - self.tc_variable_combo.setItemData(11, _("dwelltime = time to dwell to allow the spindle to reach it's set RPM"), + self.tc_variable_combo.setItemData(11, + _("dwelltime = time to dwell to allow the spindle to reach it's set RPM"), Qt.ToolTipRole) hlay1.addStretch() @@ -5762,7 +5783,7 @@ class ToolsNCCPrefGroupUI(OptionsGroupUI): self.clearcopper_label = QtWidgets.QLabel(_("Parameters:")) self.clearcopper_label.setToolTip( _("Create a Geometry object with\n" - "toolpaths to cut all non-copper regions.") + "toolpaths to cut all non-copper regions.") ) self.layout.addWidget(self.clearcopper_label) @@ -5780,14 +5801,14 @@ class ToolsNCCPrefGroupUI(OptionsGroupUI): nccoverlabel = QtWidgets.QLabel(_('Overlap Rate:')) nccoverlabel.setToolTip( _( "How much (fraction) of the tool width to overlap each tool pass.\n" - "Example:\n" - "A value here of 0.25 means 25% from the tool diameter found above.\n\n" - "Adjust the value starting with lower values\n" - "and increasing it if areas that should be cleared are still \n" - "not cleared.\n" - "Lower values = faster processing, faster execution on PCB.\n" - "Higher values = slow processing and slow execution on CNC\n" - "due of too many paths.") + "Example:\n" + "A value here of 0.25 means 25% from the tool diameter found above.\n\n" + "Adjust the value starting with lower values\n" + "and increasing it if areas that should be cleared are still \n" + "not cleared.\n" + "Lower values = faster processing, faster execution on PCB.\n" + "Higher values = slow processing and slow execution on CNC\n" + "due of too many paths.") ) grid0.addWidget(nccoverlabel, 1, 0) self.ncc_overlap_entry = FloatEntry() @@ -5805,9 +5826,9 @@ class ToolsNCCPrefGroupUI(OptionsGroupUI): methodlabel = QtWidgets.QLabel(_('Method:')) methodlabel.setToolTip( _("Algorithm for non-copper clearing:
" - "Standard: Fixed step inwards.
" - "Seed-based: Outwards from seed.
" - "Line-based: Parallel lines.") + "Standard: Fixed step inwards.
" + "Seed-based: Outwards from seed.
" + "Line-based: Parallel lines.") ) grid0.addWidget(methodlabel, 3, 0) self.ncc_method_radio = RadioSet([ @@ -5821,7 +5842,7 @@ class ToolsNCCPrefGroupUI(OptionsGroupUI): pathconnectlabel = QtWidgets.QLabel(_("Connect:")) pathconnectlabel.setToolTip( _("Draw lines between resulting\n" - "segments to minimize tool lifts.") + "segments to minimize tool lifts.") ) grid0.addWidget(pathconnectlabel, 4, 0) self.ncc_connect_cb = FCCheckBox() @@ -5829,8 +5850,8 @@ class ToolsNCCPrefGroupUI(OptionsGroupUI): contourlabel = QtWidgets.QLabel(_("Contour:")) contourlabel.setToolTip( - _( "Cut around the perimeter of the polygon\n" - "to trim rough edges.") + _("Cut around the perimeter of the polygon\n" + "to trim rough edges.") ) grid0.addWidget(contourlabel, 5, 0) self.ncc_contour_cb = FCCheckBox() @@ -5839,11 +5860,11 @@ class ToolsNCCPrefGroupUI(OptionsGroupUI): restlabel = QtWidgets.QLabel(_("Rest M.:")) restlabel.setToolTip( _("If checked, use 'rest machining'.\n" - "Basically it will clear copper outside PCB features,\n" - "using the biggest tool and continue with the next tools,\n" - "from bigger to smaller, to clear areas of copper that\n" - "could not be cleared by previous tool.\n" - "If not checked, use the standard algorithm.") + "Basically it will clear copper outside PCB features,\n" + "using the biggest tool and continue with the next tools,\n" + "from bigger to smaller, to clear areas of copper that\n" + "could not be cleared by previous tool.\n" + "If not checked, use the standard algorithm.") ) grid0.addWidget(restlabel, 6, 0) self.ncc_rest_cb = FCCheckBox() @@ -5863,8 +5884,8 @@ class ToolsCutoutPrefGroupUI(OptionsGroupUI): self.board_cutout_label = QtWidgets.QLabel(_("Parameters:")) self.board_cutout_label.setToolTip( _("Create toolpaths to cut around\n" - "the PCB and separate it from\n" - "the original board.") + "the PCB and separate it from\n" + "the original board.") ) self.layout.addWidget(self.board_cutout_label) @@ -5873,7 +5894,7 @@ class ToolsCutoutPrefGroupUI(OptionsGroupUI): tdclabel = QtWidgets.QLabel(_('Tool dia:')) tdclabel.setToolTip( - _( "Diameter of the cutting tool.") + _("Diameter of the cutting tool.") ) grid0.addWidget(tdclabel, 0, 0) self.cutout_tooldia_entry = LengthEntry() @@ -5882,7 +5903,7 @@ class ToolsCutoutPrefGroupUI(OptionsGroupUI): marginlabel = QtWidgets.QLabel(_('Margin:')) marginlabel.setToolTip( _("Distance from objects at which\n" - "to draw the cutout.") + "to draw the cutout.") ) grid0.addWidget(marginlabel, 1, 0) self.cutout_margin_entry = LengthEntry() @@ -5891,8 +5912,8 @@ class ToolsCutoutPrefGroupUI(OptionsGroupUI): gaplabel = QtWidgets.QLabel(_('Gap size:')) gaplabel.setToolTip( _("Size of the gaps in the toolpath\n" - "that will remain to hold the\n" - "board in place.") + "that will remain to hold the\n" + "board in place.") ) grid0.addWidget(gaplabel, 2, 0) self.cutout_gap_entry = LengthEntry() @@ -5901,14 +5922,14 @@ class ToolsCutoutPrefGroupUI(OptionsGroupUI): gaps_label = QtWidgets.QLabel(_('Gaps:')) gaps_label.setToolTip( _("Number of bridge gaps used for the cutout.\n" - "There can be maximum 8 bridges/gaps.\n" - "The choices are:\n" - "- lr - left + right\n" - "- tb - top + bottom\n" - "- 4 - left + right +top + bottom\n" - "- 2lr - 2*left + 2*right\n" - "- 2tb - 2*top + 2*bottom\n" - "- 8 - 2*left + 2*right +2*top + 2*bottom") + "There can be maximum 8 bridges/gaps.\n" + "The choices are:\n" + "- lr - left + right\n" + "- tb - top + bottom\n" + "- 4 - left + right +top + bottom\n" + "- 2lr - 2*left + 2*right\n" + "- 2tb - 2*top + 2*bottom\n" + "- 8 - 2*left + 2*right +2*top + 2*bottom") ) grid0.addWidget(gaps_label, 3, 0) self.gaps_combo = FCComboBox() @@ -5942,7 +5963,7 @@ class Tools2sidedPrefGroupUI(OptionsGroupUI): self.dblsided_label = QtWidgets.QLabel(_("Parameters:")) self.dblsided_label.setToolTip( _("A tool to help in creating a double sided\n" - "PCB using alignment holes.") + "PCB using alignment holes.") ) self.layout.addWidget(self.dblsided_label) @@ -5954,14 +5975,14 @@ class Tools2sidedPrefGroupUI(OptionsGroupUI): self.dd_label = QtWidgets.QLabel(_("Drill diam.:")) self.dd_label.setToolTip( _("Diameter of the drill for the " - "alignment holes.") + "alignment holes.") ) grid0.addWidget(self.dd_label, 0, 0) grid0.addWidget(self.drill_dia_entry, 0, 1) # ## Axis self.mirror_axis_radio = RadioSet([{'label': 'X', 'value': 'X'}, - {'label': 'Y', 'value': 'Y'}]) + {'label': 'Y', 'value': 'Y'}]) self.mirax_label = QtWidgets.QLabel(_("Mirror Axis:")) self.mirax_label.setToolTip( _("Mirror vertically (X) or horizontally (Y).") @@ -5978,8 +5999,8 @@ class Tools2sidedPrefGroupUI(OptionsGroupUI): self.axloc_label = QtWidgets.QLabel(_("Axis Ref:")) self.axloc_label.setToolTip( _("The axis should pass through a point or cut\n " - "a specified box (in a Geometry object) in \n" - "the middle.") + "a specified box (in a Geometry object) in \n" + "the middle.") ) # grid_lay.addRow("Axis Location:", self.axis_location) grid0.addWidget(self.axloc_label, 3, 0) @@ -6001,9 +6022,9 @@ class ToolsPaintPrefGroupUI(OptionsGroupUI): self.paint_label = QtWidgets.QLabel(_('Parameters:')) self.paint_label.setToolTip( _("Creates tool paths to cover the\n" - "whole area of a polygon (remove\n" - "all copper). You will be asked\n" - "to click on the desired polygon.") + "whole area of a polygon (remove\n" + "all copper). You will be asked\n" + "to click on the desired polygon.") ) self.layout.addWidget(self.paint_label) @@ -6014,7 +6035,7 @@ class ToolsPaintPrefGroupUI(OptionsGroupUI): ptdlabel = QtWidgets.QLabel(_('Tool dia:')) ptdlabel.setToolTip( _("Diameter of the tool to\n" - "be used in the operation.") + "be used in the operation.") ) grid0.addWidget(ptdlabel, 0, 0) @@ -6025,7 +6046,7 @@ class ToolsPaintPrefGroupUI(OptionsGroupUI): ovlabel = QtWidgets.QLabel(_('Overlap Rate:')) ovlabel.setToolTip( _("How much (fraction) of the tool\n" - "width to overlap each tool pass.") + "width to overlap each tool pass.") ) grid0.addWidget(ovlabel, 1, 0) self.paintoverlap_entry = LengthEntry() @@ -6035,8 +6056,8 @@ class ToolsPaintPrefGroupUI(OptionsGroupUI): marginlabel = QtWidgets.QLabel(_('Margin:')) marginlabel.setToolTip( _("Distance by which to avoid\n" - "the edges of the polygon to\n" - "be painted.") + "the edges of the polygon to\n" + "be painted.") ) grid0.addWidget(marginlabel, 2, 0) self.paintmargin_entry = LengthEntry() @@ -6046,8 +6067,8 @@ class ToolsPaintPrefGroupUI(OptionsGroupUI): methodlabel = QtWidgets.QLabel(_('Method:')) methodlabel.setToolTip( _("Algorithm to paint the polygon:
" - "Standard: Fixed step inwards.
" - "Seed-based: Outwards from seed.") + "Standard: Fixed step inwards.
" + "Seed-based: Outwards from seed.") ) grid0.addWidget(methodlabel, 3, 0) self.paintmethod_combo = RadioSet([ @@ -6061,7 +6082,7 @@ class ToolsPaintPrefGroupUI(OptionsGroupUI): pathconnectlabel = QtWidgets.QLabel(_("Connect:")) pathconnectlabel.setToolTip( _("Draw lines between resulting\n" - "segments to minimize tool lifts.") + "segments to minimize tool lifts.") ) grid0.addWidget(pathconnectlabel, 4, 0) self.pathconnect_cb = FCCheckBox() @@ -6071,7 +6092,7 @@ class ToolsPaintPrefGroupUI(OptionsGroupUI): contourlabel = QtWidgets.QLabel(_("Contour:")) contourlabel.setToolTip( _("Cut around the perimeter of the polygon\n" - "to trim rough edges.") + "to trim rough edges.") ) grid0.addWidget(contourlabel, 5, 0) self.contour_cb = FCCheckBox() @@ -6104,8 +6125,8 @@ class ToolsFilmPrefGroupUI(OptionsGroupUI): self.film_label = QtWidgets.QLabel(_("Parameters:")) self.film_label.setToolTip( _("Create a PCB film from a Gerber or Geometry\n" - "FlatCAM object.\n" - "The file is saved in SVG format.") + "FlatCAM object.\n" + "The file is saved in SVG format.") ) self.layout.addWidget(self.film_label) @@ -6117,11 +6138,11 @@ class ToolsFilmPrefGroupUI(OptionsGroupUI): ftypelbl = QtWidgets.QLabel(_('Film Type:')) ftypelbl.setToolTip( _("Generate a Positive black film or a Negative film.\n" - "Positive means that it will print the features\n" - "with black on a white canvas.\n" - "Negative means that it will print the features\n" - "with white on a black canvas.\n" - "The Film format is SVG.") + "Positive means that it will print the features\n" + "with black on a white canvas.\n" + "Negative means that it will print the features\n" + "with white on a black canvas.\n" + "The Film format is SVG.") ) grid0.addWidget(ftypelbl, 0, 0) grid0.addWidget(self.film_type_radio, 0, 1) @@ -6130,13 +6151,13 @@ class ToolsFilmPrefGroupUI(OptionsGroupUI): self.film_boundary_label = QtWidgets.QLabel(_("Border:")) self.film_boundary_label.setToolTip( _("Specify a border around the object.\n" - "Only for negative film.\n" - "It helps if we use as a Box Object the same \n" - "object as in Film Object. It will create a thick\n" - "black bar around the actual print allowing for a\n" - "better delimitation of the outline features which are of\n" - "white color like the rest and which may confound with the\n" - "surroundings if not for this border.") + "Only for negative film.\n" + "It helps if we use as a Box Object the same \n" + "object as in Film Object. It will create a thick\n" + "black bar around the actual print allowing for a\n" + "better delimitation of the outline features which are of\n" + "white color like the rest and which may confound with the\n" + "surroundings if not for this border.") ) grid0.addWidget(self.film_boundary_label, 1, 0) grid0.addWidget(self.film_boundary_entry, 1, 1) @@ -6145,8 +6166,8 @@ class ToolsFilmPrefGroupUI(OptionsGroupUI): self.film_scale_label = QtWidgets.QLabel(_("Scale Stroke:")) self.film_scale_label.setToolTip( _("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 thinner,\n" - "therefore the fine features may be more affected by this parameter.") + "It means that the line that envelope each SVG feature will be thicker or thinner,\n" + "therefore the fine features may be more affected by this parameter.") ) grid0.addWidget(self.film_scale_label, 2, 0) grid0.addWidget(self.film_scale_entry, 2, 1) @@ -6165,8 +6186,8 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI): self.panelize_label = QtWidgets.QLabel(_("Parameters:")) self.panelize_label.setToolTip( _("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.") + "each element is a copy of the source object spaced\n" + "at a X distance, Y distance of each other.") ) self.layout.addWidget(self.panelize_label) @@ -6178,7 +6199,7 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI): self.spacing_columns_label = QtWidgets.QLabel(_("Spacing cols:")) self.spacing_columns_label.setToolTip( _("Spacing between columns of the desired panel.\n" - "In current units.") + "In current units.") ) grid0.addWidget(self.spacing_columns_label, 0, 0) grid0.addWidget(self.pspacing_columns, 0, 1) @@ -6188,7 +6209,7 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI): self.spacing_rows_label = QtWidgets.QLabel(_("Spacing rows:")) self.spacing_rows_label.setToolTip( _("Spacing between rows of the desired panel.\n" - "In current units.") + "In current units.") ) grid0.addWidget(self.spacing_rows_label, 1, 0) grid0.addWidget(self.pspacing_rows, 1, 1) @@ -6217,8 +6238,8 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI): self.panel_type_label = QtWidgets.QLabel(_("Panel Type:")) self.panel_type_label.setToolTip( _( "Choose the type of object for the panel object:\n" - "- Gerber\n" - "- Geometry") + "- Gerber\n" + "- Geometry") ) grid0.addWidget(self.panel_type_label, 4, 0) @@ -6228,10 +6249,10 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI): self.pconstrain_cb = FCCheckBox(_("Constrain within:")) self.pconstrain_cb.setToolTip( _("Area define by DX and DY within to constrain the panel.\n" - "DX and DY values are in current units.\n" - "Regardless of how many columns and rows are desired,\n" - "the final panel will have as many columns and rows as\n" - "they fit completely within selected area.") + "DX and DY values are in current units.\n" + "Regardless of how many columns and rows are desired,\n" + "the final panel will have as many columns and rows as\n" + "they fit completely within selected area.") ) grid0.addWidget(self.pconstrain_cb, 5, 0) @@ -6239,7 +6260,7 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI): self.x_width_lbl = QtWidgets.QLabel(_("Width (DX):")) self.x_width_lbl.setToolTip( _("The width (DX) within which the panel must fit.\n" - "In current units.") + "In current units.") ) grid0.addWidget(self.x_width_lbl, 6, 0) grid0.addWidget(self.px_width_entry, 6, 1) @@ -6248,7 +6269,7 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI): self.y_height_lbl = QtWidgets.QLabel(_("Height (DY):")) self.y_height_lbl.setToolTip( _("The height (DY)within which the panel must fit.\n" - "In current units.") + "In current units.") ) grid0.addWidget(self.y_height_lbl, 7, 0) grid0.addWidget(self.py_height_entry, 7, 1) @@ -6267,8 +6288,8 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): self.vshape_tool_label = QtWidgets.QLabel(_("V-Shape Tool Calculator:")) self.vshape_tool_label.setToolTip( _("Calculate the tool diameter for a given V-shape tool,\n" - "having the tip diameter, tip angle and\n" - "depth-of-cut as parameters.") + "having the tip diameter, tip angle and\n" + "depth-of-cut as parameters.") ) self.layout.addWidget(self.vshape_tool_label) @@ -6280,7 +6301,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): self.tip_dia_label = QtWidgets.QLabel(_("Tip Diameter:")) self.tip_dia_label.setToolTip( _("This is the tool tip diameter.\n" - "It is specified by manufacturer.") + "It is specified by manufacturer.") ) grid0.addWidget(self.tip_dia_label, 0, 0) grid0.addWidget(self.tip_dia_entry, 0, 1) @@ -6290,7 +6311,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): self.tip_angle_label = QtWidgets.QLabel(_("Tip angle:")) self.tip_angle_label.setToolTip( _("This is the angle on the tip of the tool.\n" - "It is specified by manufacturer.") + "It is specified by manufacturer.") ) grid0.addWidget(self.tip_angle_label, 1, 0) grid0.addWidget(self.tip_angle_entry, 1, 1) @@ -6300,7 +6321,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): self.cut_z_label = QtWidgets.QLabel(_("Cut Z:")) self.cut_z_label.setToolTip( _("This is depth to cut into material.\n" - "In the CNCJob object it is the CutZ parameter.") + "In the CNCJob object it is the CutZ parameter.") ) grid0.addWidget(self.cut_z_label, 2, 0) grid0.addWidget(self.cut_z_entry, 2, 1) @@ -6309,7 +6330,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): self.plate_title_label = QtWidgets.QLabel(_("ElectroPlating Calculator:")) self.plate_title_label.setToolTip( _("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.") + "using a method like grahite ink or calcium hypophosphite ink or palladium chloride.") ) self.layout.addWidget(self.plate_title_label) @@ -6337,7 +6358,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): self.cdensity_entry = FCEntry() self.cdensity_label.setToolTip(_("Current density to pass through the board. \n" - "In Amps per Square Feet ASF.")) + "In Amps per Square Feet ASF.")) grid1.addWidget(self.cdensity_label, 2, 0) grid1.addWidget(self.cdensity_entry, 2, 1) @@ -6346,7 +6367,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): self.growth_entry = FCEntry() self.growth_label.setToolTip(_("How thick the copper growth is intended to be.\n" - "In microns.")) + "In microns.")) grid1.addWidget(self.growth_label, 3, 0) grid1.addWidget(self.growth_entry, 3, 1) @@ -6364,7 +6385,7 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): self.transform_label = QtWidgets.QLabel(_("Parameters:")) self.transform_label.setToolTip( _("Various transformations that can be applied\n" - "on a FlatCAM object.") + "on a FlatCAM object.") ) self.layout.addWidget(self.transform_label) @@ -6420,7 +6441,7 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): self.link_cb = FCCheckBox(_("Link")) self.link_cb.setToolTip( _("Scale the selected object(s)\n" - "using the Scale_X factor for both axis.") + "using the Scale_X factor for both axis.") ) grid0.addWidget(self.link_cb, 5, 0) @@ -6428,9 +6449,9 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): self.reference_cb = FCCheckBox(_("Scale Reference")) self.reference_cb.setToolTip( _("Scale the selected object(s)\n" - "using the origin reference when checked,\n" - "and the center of the biggest bounding box\n" - "of the selected objects when unchecked.") + "using the origin reference when checked,\n" + "and the center of the biggest bounding box\n" + "of the selected objects when unchecked.") ) grid0.addWidget(self.reference_cb, 5, 1) @@ -6438,7 +6459,7 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): self.offx_entry = FCEntry() self.offx_label = QtWidgets.QLabel(_("Offset_X val:")) self.offx_label.setToolTip( - _( "Distance to offset on X axis. In current units.") + _("Distance to offset on X axis. In current units.") ) grid0.addWidget(self.offx_label, 6, 0) grid0.addWidget(self.offx_entry, 6, 1) @@ -6456,21 +6477,21 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): self.mirror_reference_cb = FCCheckBox(_("Mirror Reference")) self.mirror_reference_cb.setToolTip( _("Flip the selected object(s)\n" - "around the point in Point Entry Field.\n" - "\n" - "The point coordinates can be captured by\n" - "left click on canvas together with pressing\n" - "SHIFT key. \n" - "Then click Add button to insert coordinates.\n" - "Or enter the coords in format (x, y) in the\n" - "Point Entry field and click Flip on X(Y)")) + "around the point in Point Entry Field.\n" + "\n" + "The point coordinates can be captured by\n" + "left click on canvas together with pressing\n" + "SHIFT key. \n" + "Then click Add button to insert coordinates.\n" + "Or enter the coords in format (x, y) in the\n" + "Point Entry field and click Flip on X(Y)")) grid0.addWidget(self.mirror_reference_cb, 8, 1) self.flip_ref_label = QtWidgets.QLabel(_(" Mirror Ref. Point:")) self.flip_ref_label.setToolTip( _("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") + "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") ) self.flip_ref_entry = EvalEntry2("(0, 0)") @@ -6491,7 +6512,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.solderpastelabel = QtWidgets.QLabel(_("Parameters:")) self.solderpastelabel.setToolTip( _("A tool to create GCode for dispensing\n" - "solder paste onto a PCB.") + "solder paste onto a PCB.") ) self.layout.addWidget(self.solderpastelabel) @@ -6548,7 +6569,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.z_travel_label = QtWidgets.QLabel(_("Z Travel:")) self.z_travel_label.setToolTip( _("The height (Z) for travel between pads\n" - "(without dispensing solder paste).") + "(without dispensing solder paste).") ) grid0.addWidget(self.z_travel_label, 5, 0) grid0.addWidget(self.z_travel_entry, 5, 1) @@ -6567,7 +6588,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.xy_toolchange_label = QtWidgets.QLabel(_("XY Toolchange:")) self.xy_toolchange_label.setToolTip( _("The X,Y location for tool (nozzle) change.\n" - "The format is (x, y) where x and y are real numbers.") + "The format is (x, y) where x and y are real numbers.") ) grid0.addWidget(self.xy_toolchange_label, 7, 0) grid0.addWidget(self.xy_toolchange_entry, 7, 1) @@ -6586,7 +6607,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.frz_label = QtWidgets.QLabel(_("Feedrate Z:")) self.frz_label.setToolTip( _("Feedrate (speed) while moving vertically\n" - "(on Z plane).") + "(on Z plane).") ) grid0.addWidget(self.frz_label, 9, 0) grid0.addWidget(self.frz_entry, 9, 1) @@ -6596,7 +6617,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.frz_dispense_label = QtWidgets.QLabel(_("Feedrate Z Dispense:")) self.frz_dispense_label.setToolTip( _("Feedrate (speed) while moving up vertically\n" - " to Dispense position (on Z plane).") + "to Dispense position (on Z plane).") ) grid0.addWidget(self.frz_dispense_label, 10, 0) grid0.addWidget(self.frz_dispense_entry, 10, 1) @@ -6606,7 +6627,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.speedfwd_label = QtWidgets.QLabel(_("Spindle Speed FWD:")) self.speedfwd_label.setToolTip( _("The dispenser speed while pushing solder paste\n" - "through the dispenser nozzle.") + "through the dispenser nozzle.") ) grid0.addWidget(self.speedfwd_label, 11, 0) grid0.addWidget(self.speedfwd_entry, 11, 1) @@ -6625,7 +6646,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.speedrev_label = QtWidgets.QLabel(_("Spindle Speed REV:")) self.speedrev_label.setToolTip( _("The dispenser speed while retracting solder paste\n" - "through the dispenser nozzle.") + "through the dispenser nozzle.") ) grid0.addWidget(self.speedrev_label, 13, 0) grid0.addWidget(self.speedrev_entry, 13, 1) @@ -6635,7 +6656,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.dwellrev_label = QtWidgets.QLabel(_("Dwell REV:")) self.dwellrev_label.setToolTip( _("Pause after solder paste dispenser retracted,\n" - "to allow pressure equilibrium.") + "to allow pressure equilibrium.") ) grid0.addWidget(self.dwellrev_label, 14, 0) grid0.addWidget(self.dwellrev_entry, 14, 1) From 9f17cc974734c0ec95ef9832c7623fa44836a36d Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 5 Jun 2019 00:25:45 +0300 Subject: [PATCH 16/23] - small changes --- flatcamGUI/FlatCAMGUI.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index ac8c5266..ca8e16ae 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -2697,7 +2697,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # we do this so we can reuse the following keys while inside a Tool # the above keys are general enough so were left outside - if self.app.grb_editor.active_tool is not None and self.grb_select_btn.isChecked() == False: + if self.app.grb_editor.active_tool is not None and self.grb_select_btn.isChecked() is False: response = self.app.grb_editor.active_tool.on_key(key=key) if response is not None: self.app.inform.emit(response) @@ -5119,7 +5119,7 @@ class ExcellonEditorPrefGroupUI(OptionsGroupUI): # Circular Drill Array direction self.drill_circular_direction_label = QtWidgets.QLabel(_('Circular Dir.:')) self.drill_circular_direction_label.setToolTip( - _("Direction for circular array." + _("Direction for circular array.\n" "Can be CW = clockwise or CCW = counter clockwise.") ) From 29272ee4c2a5b40ce6b12d5a10b1f16718160498 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 5 Jun 2019 13:03:46 +0300 Subject: [PATCH 17/23] - updated translations --- README.md | 4 + locale/de/LC_MESSAGES/strings.mo | Bin 302108 -> 304789 bytes locale/de/LC_MESSAGES/strings.po | 2819 +++++++++++++++-------------- locale/en/LC_MESSAGES/strings.mo | Bin 281713 -> 284173 bytes locale/en/LC_MESSAGES/strings.po | 2846 +++++++++++++++-------------- locale/ro/LC_MESSAGES/strings.mo | Bin 300482 -> 303082 bytes locale/ro/LC_MESSAGES/strings.po | 2873 ++++++++++++++++-------------- locale_template/strings.pot | 2789 +++++++++++++++-------------- 8 files changed, 5919 insertions(+), 5412 deletions(-) diff --git a/README.md b/README.md index e0d6e31d..2387152c 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing. ================================================= +5.06.2019 + +- updated translations + 4.06.2019 - PEP8 updates in FlatCAMExcEditor.py diff --git a/locale/de/LC_MESSAGES/strings.mo b/locale/de/LC_MESSAGES/strings.mo index 38fec665f89cbff3d14c529eeacd151dbdc39bb4..e46311f1be8da3c4b1725197e8e7f3a5428fdcb5 100644 GIT binary patch delta 40631 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" "" -#: FlatCAMApp.py:3133 +#: FlatCAMApp.py:3182 #, python-brace-format msgid "" "FlatCAM
Version {version} {beta} ({date}) - " @@ -188,32 +188,32 @@ msgstr "" "org/jpcgt/flatcam/src/Beta/\">hier.

DOWNLOAD-Bereich hier.
" -#: FlatCAMApp.py:3286 +#: FlatCAMApp.py:3335 msgid "[success] Defaults saved." msgstr "[success] Standardeinstellungen gespeichert." -#: FlatCAMApp.py:3307 +#: FlatCAMApp.py:3356 msgid "[ERROR_NOTCL] Could not load factory defaults file." msgstr "[ERROR_NOTCL] Factory-Standarddatei konnte nicht geladen werden." -#: FlatCAMApp.py:3316 +#: FlatCAMApp.py:3365 msgid "[ERROR_NOTCL] Failed to parse factory defaults file." msgstr "[ERROR_NOTCL] Fehler beim Parsen der Werksvorgaben-Datei." -#: FlatCAMApp.py:3330 +#: FlatCAMApp.py:3379 msgid "[ERROR_NOTCL] Failed to write factory defaults to file." msgstr "" "[ERROR_NOTCL] Fehler beim Schreiben der Werkseinstellungen in die Datei." -#: FlatCAMApp.py:3334 +#: FlatCAMApp.py:3383 msgid "Factory defaults saved." msgstr "Werkseinstellungen gespeichert." -#: FlatCAMApp.py:3339 flatcamGUI/FlatCAMGUI.py:3110 +#: FlatCAMApp.py:3388 flatcamGUI/FlatCAMGUI.py:3106 msgid "[WARNING_NOTCL] Application is saving the project. Please wait ..." msgstr "[WARNING_NOTCL] Anwendung speichert das Projekt. Warten Sie mal ..." -#: FlatCAMApp.py:3344 +#: FlatCAMApp.py:3393 msgid "" "There are files/objects modified in FlatCAM. \n" "Do you want to Save the project?" @@ -221,11 +221,11 @@ msgstr "" "In FlatCAM wurden Dateien / Objekte geändert.\n" "Möchten Sie das Projekt speichern?" -#: FlatCAMApp.py:3347 FlatCAMApp.py:5797 +#: FlatCAMApp.py:3396 FlatCAMApp.py:5874 msgid "Save changes" msgstr "Änderungen speichern" -#: FlatCAMApp.py:3414 +#: FlatCAMApp.py:3463 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 " @@ -243,73 +243,73 @@ msgstr "" "und das Ergebnis entspricht möglicherweise nicht dem, was erwartet wurde.\n" "Überprüfen Sie den generierten GCODE." -#: FlatCAMApp.py:3455 +#: FlatCAMApp.py:3504 msgid "[ERROR_NOTCL] Failed. Excellon joining works only on Excellon objects." msgstr "" "[ERROR_NOTCL] Gescheitert. Die Verbindung von Excellon funktioniert nur bei " "Excellon-Objekten." -#: FlatCAMApp.py:3477 +#: FlatCAMApp.py:3526 msgid "[ERROR_NOTCL] Failed. Gerber joining works only on Gerber objects." msgstr "" "[ERROR_NOTCL] Gescheitert. Das Gerber-Verbinden funktioniert nur bei Gerber-" "Objekten." -#: FlatCAMApp.py:3492 FlatCAMApp.py:3517 +#: FlatCAMApp.py:3541 FlatCAMApp.py:3566 msgid "[ERROR_NOTCL] Failed. Select a Geometry Object and try again." msgstr "" "[ERROR_NOTCL] Gescheitert. Wählen Sie ein Geometrieobjekt aus und versuchen " "Sie es erneut." -#: FlatCAMApp.py:3496 FlatCAMApp.py:3521 +#: FlatCAMApp.py:3545 FlatCAMApp.py:3570 #, python-format msgid "[ERROR_NOTCL] Expected a FlatCAMGeometry, got %s" msgstr "[ERROR_NOTCL] Erwartete eine FlatCAMGeometry, bekam % s" -#: FlatCAMApp.py:3509 +#: FlatCAMApp.py:3558 msgid "[success] A Geometry object was converted to MultiGeo type." msgstr "[success] Ein Geometrieobjekt wurde in den MultiGeo-Typ konvertiert." -#: FlatCAMApp.py:3535 +#: FlatCAMApp.py:3584 msgid "[success] A Geometry object was converted to SingleGeo type." msgstr "[success] Ein Geometrieobjekt wurde in den SingleGeo-Typ konvertiert." -#: FlatCAMApp.py:3682 FlatCAMApp.py:4495 FlatCAMApp.py:6064 FlatCAMApp.py:6075 -#: FlatCAMApp.py:6312 FlatCAMApp.py:6322 +#: FlatCAMApp.py:3731 FlatCAMApp.py:4567 FlatCAMApp.py:6141 FlatCAMApp.py:6152 +#: FlatCAMApp.py:6392 FlatCAMApp.py:6402 msgid "Ok" msgstr "Ok" -#: FlatCAMApp.py:3724 +#: FlatCAMApp.py:3773 #, python-format msgid "[success] Converted units to %s" msgstr "[success] Einheiten in umgerechnet %s" -#: FlatCAMApp.py:3735 +#: FlatCAMApp.py:3784 msgid "[WARNING_NOTCL] Units conversion cancelled." msgstr "[WARNING_NOTCL] Einheitenumrechnung abgebrochen." -#: FlatCAMApp.py:4364 +#: FlatCAMApp.py:4436 msgid "Open file" msgstr "Datei öffnen" -#: FlatCAMApp.py:4395 FlatCAMApp.py:4400 +#: FlatCAMApp.py:4467 FlatCAMApp.py:4472 msgid "Export G-Code ..." msgstr "G-Code exportieren ..." -#: FlatCAMApp.py:4403 +#: FlatCAMApp.py:4475 msgid "[WARNING_NOTCL] Export Code cancelled." msgstr "[WARNING_NOTCL] Exportcode wurde abgebrochen." -#: FlatCAMApp.py:4413 +#: FlatCAMApp.py:4485 msgid "[WARNING] No such file or directory" msgstr "[WARNING] Keine solche Datei oder Ordner" -#: FlatCAMApp.py:4420 +#: FlatCAMApp.py:4492 #, python-format msgid "Saved to: %s" msgstr "Gespeichert in: %s" -#: FlatCAMApp.py:4483 FlatCAMApp.py:4516 FlatCAMApp.py:4527 FlatCAMApp.py:4538 +#: FlatCAMApp.py:4555 FlatCAMApp.py:4588 FlatCAMApp.py:4599 FlatCAMApp.py:4610 #: flatcamTools/ToolNonCopperClear.py:489 flatcamTools/ToolSolderPaste.py:765 msgid "" "[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float " @@ -318,12 +318,12 @@ msgstr "" "[WARNING_NOTCL] Bitte geben Sie einen Werkzeugdurchmesser mit einem Wert " "ungleich Null im Float-Format ein." -#: FlatCAMApp.py:4488 FlatCAMApp.py:4521 FlatCAMApp.py:4532 FlatCAMApp.py:4543 -#: flatcamGUI/FlatCAMGUI.py:3005 +#: FlatCAMApp.py:4560 FlatCAMApp.py:4593 FlatCAMApp.py:4604 FlatCAMApp.py:4615 +#: flatcamGUI/FlatCAMGUI.py:3001 msgid "[WARNING_NOTCL] Adding Tool cancelled ..." msgstr "[WARNING_NOTCL] Addierwerkzeug abgebrochen ..." -#: FlatCAMApp.py:4491 +#: FlatCAMApp.py:4563 msgid "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." @@ -332,131 +332,135 @@ msgstr "" "ist.\n" "Gehen Sie zu Einstellungen -> Allgemein - Erweiterte Optionen anzeigen." -#: FlatCAMApp.py:4604 +#: FlatCAMApp.py:4676 msgid "Object(s) deleted ..." msgstr "Objekt (e) gelöscht ..." -#: FlatCAMApp.py:4608 +#: FlatCAMApp.py:4680 msgid "Failed. No object(s) selected..." msgstr "Gescheitert. Kein Objekt ausgewählt ..." -#: FlatCAMApp.py:4610 +#: FlatCAMApp.py:4682 msgid "Save the work in Editor and try again ..." msgstr "Speichern Sie die Arbeit im Editor und versuchen Sie es erneut ..." -#: FlatCAMApp.py:4623 +#: FlatCAMApp.py:4695 msgid "Click to set the origin ..." msgstr "Klicken Sie hier, um den Ursprung festzulegen ..." -#: FlatCAMApp.py:4635 +#: FlatCAMApp.py:4707 msgid "Jump to ..." msgstr "Springen zu ..." -#: FlatCAMApp.py:4636 +#: FlatCAMApp.py:4708 msgid "Enter the coordinates in format X,Y:" msgstr "Geben Sie die Koordinaten im Format X, Y ein:" -#: FlatCAMApp.py:4643 +#: FlatCAMApp.py:4715 msgid "Wrong coordinates. Enter coordinates in format: X,Y" msgstr "Falsche Koordinaten. Koordinaten im Format eingeben: X, Y" -#: FlatCAMApp.py:4661 flatcamEditors/FlatCAMExcEditor.py:2285 -#: flatcamEditors/FlatCAMExcEditor.py:2292 -#: flatcamEditors/FlatCAMGeoEditor.py:3648 -#: flatcamEditors/FlatCAMGeoEditor.py:3662 +#: FlatCAMApp.py:4733 flatcamEditors/FlatCAMExcEditor.py:2320 +#: flatcamEditors/FlatCAMExcEditor.py:2327 +#: flatcamEditors/FlatCAMGeoEditor.py:3645 +#: flatcamEditors/FlatCAMGeoEditor.py:3659 #: flatcamEditors/FlatCAMGrbEditor.py:1040 #: flatcamEditors/FlatCAMGrbEditor.py:1141 -#: flatcamEditors/FlatCAMGrbEditor.py:1402 -#: flatcamEditors/FlatCAMGrbEditor.py:1652 -#: flatcamEditors/FlatCAMGrbEditor.py:3928 -#: flatcamEditors/FlatCAMGrbEditor.py:3942 flatcamGUI/FlatCAMGUI.py:2419 -#: flatcamGUI/FlatCAMGUI.py:2431 +#: flatcamEditors/FlatCAMGrbEditor.py:1409 +#: flatcamEditors/FlatCAMGrbEditor.py:1666 +#: flatcamEditors/FlatCAMGrbEditor.py:3950 +#: flatcamEditors/FlatCAMGrbEditor.py:3964 flatcamGUI/FlatCAMGUI.py:2414 +#: flatcamGUI/FlatCAMGUI.py:2426 msgid "[success] Done." msgstr "[success] Erledigt." -#: FlatCAMApp.py:4794 FlatCAMApp.py:4863 +#: FlatCAMApp.py:4865 FlatCAMApp.py:4932 msgid "[WARNING_NOTCL] No object is selected. Select an object and try again." msgstr "" "[WARNING_NOTCL] Es ist kein Objekt ausgewählt. Wählen Sie ein Objekt und " "versuchen Sie es erneut." -#: FlatCAMApp.py:4904 +#: FlatCAMApp.py:4973 msgid "[success] Origin set ..." msgstr "[success] Ursprung gesetzt ..." -#: FlatCAMApp.py:4924 +#: FlatCAMApp.py:4993 msgid "Preferences" msgstr "Einstellungen" -#: FlatCAMApp.py:4944 +#: FlatCAMApp.py:5013 msgid "[WARNING_NOTCL] No object selected to Flip on Y axis." msgstr "[WARNING_NOTCL] Kein Objekt ausgewählt, um auf der Y-Achse zu kippen." -#: FlatCAMApp.py:4969 +#: FlatCAMApp.py:5038 msgid "[success] Flip on Y axis done." msgstr "[success] Y-Achse umdrehen fertig." -#: FlatCAMApp.py:4971 FlatCAMApp.py:5011 +#: FlatCAMApp.py:5040 FlatCAMApp.py:5080 #: flatcamEditors/FlatCAMGeoEditor.py:1355 -#: flatcamEditors/FlatCAMGrbEditor.py:5309 flatcamTools/ToolTransform.py:748 +#: flatcamEditors/FlatCAMGrbEditor.py:5331 flatcamTools/ToolTransform.py:748 #, python-format msgid "[ERROR_NOTCL] Due of %s, Flip action was not executed." msgstr "[ERROR_NOTCL] Aufgrund von %s wurde die Flip-Aktion nicht ausgeführt." -#: FlatCAMApp.py:4984 +#: FlatCAMApp.py:5053 msgid "[WARNING_NOTCL] No object selected to Flip on X axis." msgstr "[WARNING_NOTCL] Kein Objekt ausgewählt, um auf der X-Achse zu kippen." -#: FlatCAMApp.py:5009 +#: FlatCAMApp.py:5078 msgid "[success] Flip on X axis done." msgstr "[success] Dreh auf der X-Achse fertig." -#: FlatCAMApp.py:5024 +#: FlatCAMApp.py:5093 msgid "[WARNING_NOTCL] No object selected to Rotate." msgstr "[WARNING_NOTCL] Kein Objekt zum Drehen ausgewählt." -#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 +#: FlatCAMApp.py:5096 FlatCAMApp.py:5141 FlatCAMApp.py:5172 msgid "Transform" msgstr "Verwandeln" -#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 +#: FlatCAMApp.py:5096 FlatCAMApp.py:5141 FlatCAMApp.py:5172 msgid "Enter the Angle value:" msgstr "Geben Sie den Winkelwert ein:" -#: FlatCAMApp.py:5057 +#: FlatCAMApp.py:5126 msgid "[success] Rotation done." msgstr "[success] Rotation erfolgt." -#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:1298 -#: flatcamEditors/FlatCAMGrbEditor.py:5240 flatcamTools/ToolTransform.py:677 +#: FlatCAMApp.py:5128 flatcamEditors/FlatCAMGeoEditor.py:1298 +#: flatcamEditors/FlatCAMGrbEditor.py:5262 flatcamTools/ToolTransform.py:677 #, python-format msgid "[ERROR_NOTCL] Due of %s, rotation movement was not executed." msgstr "" "[ERROR_NOTCL] Aufgrund von %s wurde keine Rotationsbewegung ausgeführt." -#: FlatCAMApp.py:5070 +#: FlatCAMApp.py:5139 msgid "[WARNING_NOTCL] No object selected to Skew/Shear on X axis." msgstr "" "[WARNING_NOTCL] Kein Objekt für Neigung / Scherung auf der X-Achse " "ausgewählt." -#: FlatCAMApp.py:5091 +#: FlatCAMApp.py:5160 msgid "[success] Skew on X axis done." msgstr "[success] Neigung auf der X-Achse fertig." -#: FlatCAMApp.py:5101 +#: FlatCAMApp.py:5170 msgid "[WARNING_NOTCL] No object selected to Skew/Shear on Y axis." msgstr "" "[WARNING_NOTCL] Kein Objekt für Neigung / Scherung auf der Y-Achse " "ausgewählt." -#: FlatCAMApp.py:5122 +#: FlatCAMApp.py:5191 msgid "[success] Skew on Y axis done." msgstr "[success] Neigung auf der Y-Achse fertig." -#: FlatCAMApp.py:5197 flatcamEditors/FlatCAMGeoEditor.py:937 -#: flatcamEditors/FlatCAMGrbEditor.py:2365 -#: flatcamEditors/FlatCAMGrbEditor.py:4831 flatcamGUI/ObjectUI.py:991 +#: FlatCAMApp.py:5260 +msgid "Grid On/Off" +msgstr "Raster ein/aus" + +#: FlatCAMApp.py:5273 flatcamEditors/FlatCAMGeoEditor.py:937 +#: flatcamEditors/FlatCAMGrbEditor.py:2381 +#: flatcamEditors/FlatCAMGrbEditor.py:4853 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 @@ -464,24 +468,24 @@ msgstr "[success] Neigung auf der Y-Achse fertig." msgid "Add" msgstr "Hinzufügen" -#: FlatCAMApp.py:5198 FlatCAMObj.py:3302 -#: flatcamEditors/FlatCAMGrbEditor.py:2370 flatcamGUI/FlatCAMGUI.py:532 -#: flatcamGUI/FlatCAMGUI.py:729 flatcamGUI/FlatCAMGUI.py:1619 -#: flatcamGUI/FlatCAMGUI.py:1955 flatcamGUI/ObjectUI.py:1007 +#: FlatCAMApp.py:5274 FlatCAMObj.py:3306 +#: flatcamEditors/FlatCAMGrbEditor.py:2386 flatcamGUI/FlatCAMGUI.py:527 +#: flatcamGUI/FlatCAMGUI.py:724 flatcamGUI/FlatCAMGUI.py:1616 +#: flatcamGUI/FlatCAMGUI.py:1953 flatcamGUI/ObjectUI.py:1007 #: flatcamTools/ToolNonCopperClear.py:146 flatcamTools/ToolPaint.py:143 #: flatcamTools/ToolSolderPaste.py:121 flatcamTools/ToolSolderPaste.py:481 msgid "Delete" msgstr "Löschen" -#: FlatCAMApp.py:5210 +#: FlatCAMApp.py:5287 msgid "New Grid ..." msgstr "Neues Raster ..." -#: FlatCAMApp.py:5211 +#: FlatCAMApp.py:5288 msgid "Enter a Grid Value:" msgstr "Geben Sie einen Rasterwert ein:" -#: FlatCAMApp.py:5219 FlatCAMApp.py:5246 +#: FlatCAMApp.py:5296 FlatCAMApp.py:5323 msgid "" "[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float " "format." @@ -489,48 +493,48 @@ msgstr "" "[WARNING_NOTCL] Bitte geben Sie im Float-Format einen Rasterwert mit einem " "Wert ungleich Null ein." -#: FlatCAMApp.py:5225 +#: FlatCAMApp.py:5302 msgid "[success] New Grid added ..." msgstr "[success] Neues Netz hinzugefügt ..." -#: FlatCAMApp.py:5228 +#: FlatCAMApp.py:5305 msgid "[WARNING_NOTCL] Grid already exists ..." msgstr "[WARNING_NOTCL] Netz existiert bereits ..." -#: FlatCAMApp.py:5231 +#: FlatCAMApp.py:5308 msgid "[WARNING_NOTCL] Adding New Grid cancelled ..." msgstr "[WARNING_NOTCL] Neues Netz wurde abgebrochen ..." -#: FlatCAMApp.py:5253 +#: FlatCAMApp.py:5330 msgid "[ERROR_NOTCL] Grid Value does not exist ..." msgstr "[ERROR_NOTCL] Rasterwert existiert nicht ..." -#: FlatCAMApp.py:5256 +#: FlatCAMApp.py:5333 msgid "[success] Grid Value deleted ..." msgstr "[success] Rasterwert gelöscht ..." -#: FlatCAMApp.py:5259 +#: FlatCAMApp.py:5336 msgid "[WARNING_NOTCL] Delete Grid value cancelled ..." msgstr "[WARNING_NOTCL] Rasterwert löschen abgebrochen ..." -#: FlatCAMApp.py:5298 +#: FlatCAMApp.py:5375 msgid "[WARNING_NOTCL] No object selected to copy it's name" msgstr "[WARNING_NOTCL] Kein Objekt zum Kopieren des Namens ausgewählt" -#: FlatCAMApp.py:5302 +#: FlatCAMApp.py:5379 msgid "Name copied on clipboard ..." msgstr "Name in Zwischenablage kopiert ..." -#: FlatCAMApp.py:5595 FlatCAMApp.py:5598 FlatCAMApp.py:5601 FlatCAMApp.py:5604 -#: FlatCAMApp.py:5619 FlatCAMApp.py:5622 FlatCAMApp.py:5625 FlatCAMApp.py:5628 -#: FlatCAMApp.py:5668 FlatCAMApp.py:5671 FlatCAMApp.py:5674 FlatCAMApp.py:5677 +#: FlatCAMApp.py:5672 FlatCAMApp.py:5675 FlatCAMApp.py:5678 FlatCAMApp.py:5681 +#: FlatCAMApp.py:5696 FlatCAMApp.py:5699 FlatCAMApp.py:5702 FlatCAMApp.py:5705 +#: FlatCAMApp.py:5745 FlatCAMApp.py:5748 FlatCAMApp.py:5751 FlatCAMApp.py:5754 #: ObjectCollection.py:717 ObjectCollection.py:720 ObjectCollection.py:723 #: ObjectCollection.py:726 #, python-brace-format msgid "[selected]{name} selected" msgstr "[selected]{name} ausgewählt" -#: FlatCAMApp.py:5794 +#: FlatCAMApp.py:5871 msgid "" "There are files/objects opened in FlatCAM.\n" "Creating a New project will delete them.\n" @@ -540,112 +544,112 @@ msgstr "" "Wenn Sie ein neues Projekt erstellen, werden diese gelöscht.\n" "Möchten Sie das Projekt speichern?" -#: FlatCAMApp.py:5815 +#: FlatCAMApp.py:5892 msgid "[success] New Project created..." msgstr "[success] Neues Projekt erstellt ..." -#: FlatCAMApp.py:5923 FlatCAMApp.py:5926 flatcamGUI/FlatCAMGUI.py:613 -#: flatcamGUI/FlatCAMGUI.py:1834 +#: FlatCAMApp.py:6000 FlatCAMApp.py:6003 flatcamGUI/FlatCAMGUI.py:608 +#: flatcamGUI/FlatCAMGUI.py:1832 msgid "Open Gerber" msgstr "Gerber öffnen" -#: FlatCAMApp.py:5931 +#: FlatCAMApp.py:6008 msgid "[WARNING_NOTCL] Open Gerber cancelled." msgstr "[WARNING_NOTCL] Offener Gerber abgebrochen." -#: FlatCAMApp.py:5952 FlatCAMApp.py:5955 flatcamGUI/FlatCAMGUI.py:614 -#: flatcamGUI/FlatCAMGUI.py:1835 +#: FlatCAMApp.py:6029 FlatCAMApp.py:6032 flatcamGUI/FlatCAMGUI.py:609 +#: flatcamGUI/FlatCAMGUI.py:1833 msgid "Open Excellon" msgstr "Excellon öffnen" -#: FlatCAMApp.py:5960 +#: FlatCAMApp.py:6037 msgid "[WARNING_NOTCL] Open Excellon cancelled." msgstr "[WARNING_NOTCL] Offener Excellon abgebrochen." -#: FlatCAMApp.py:5982 FlatCAMApp.py:5985 +#: FlatCAMApp.py:6059 FlatCAMApp.py:6062 msgid "Open G-Code" msgstr "G-Code öffnen" -#: FlatCAMApp.py:5990 +#: FlatCAMApp.py:6067 msgid "[WARNING_NOTCL] Open G-Code cancelled." msgstr "[WARNING_NOTCL] Geöffneter G-Code wurde abgebrochen." -#: FlatCAMApp.py:6008 FlatCAMApp.py:6011 +#: FlatCAMApp.py:6085 FlatCAMApp.py:6088 msgid "Open Project" msgstr "Offenes Projekt" -#: FlatCAMApp.py:6019 +#: FlatCAMApp.py:6096 msgid "[WARNING_NOTCL] Open Project cancelled." msgstr "[WARNING_NOTCL] Projekt abbrechen abgebrochen." -#: FlatCAMApp.py:6038 FlatCAMApp.py:6041 +#: FlatCAMApp.py:6115 FlatCAMApp.py:6118 msgid "Open Configuration File" msgstr "Offene Einstellungsdatei" -#: FlatCAMApp.py:6045 +#: FlatCAMApp.py:6122 msgid "[WARNING_NOTCL Open Config cancelled." msgstr "[WARNING_NOTCL] Open Config abgesagt." -#: FlatCAMApp.py:6060 FlatCAMApp.py:6308 FlatCAMApp.py:8519 FlatCAMApp.py:8539 -#: FlatCAMApp.py:8560 FlatCAMApp.py:8582 +#: FlatCAMApp.py:6137 FlatCAMApp.py:6388 FlatCAMApp.py:8538 FlatCAMApp.py:8558 +#: FlatCAMApp.py:8579 FlatCAMApp.py:8601 msgid "[WARNING_NOTCL] No object selected." msgstr "[WARNING_NOTCL] Kein Objekt ausgewählt" -#: FlatCAMApp.py:6061 FlatCAMApp.py:6309 +#: FlatCAMApp.py:6138 FlatCAMApp.py:6389 msgid "Please Select a Geometry object to export" msgstr "Bitte wählen Sie ein Geometrieobjekt zum Exportieren aus" -#: FlatCAMApp.py:6072 +#: FlatCAMApp.py:6149 msgid "[ERROR_NOTCL] Only Geometry, Gerber and CNCJob objects can be used." msgstr "" "[ERROR_NOTCL] Es können nur Geometrie-, Gerber- und CNCJob-Objekte verwendet " "werden." -#: FlatCAMApp.py:6085 FlatCAMApp.py:6089 +#: FlatCAMApp.py:6162 FlatCAMApp.py:6166 msgid "Export SVG" msgstr "SVG exportieren" -#: FlatCAMApp.py:6094 +#: FlatCAMApp.py:6171 msgid "[WARNING_NOTCL] Export SVG cancelled." msgstr "[WARNING_NOTCL] Export SVG abgebrochen." -#: FlatCAMApp.py:6110 +#: FlatCAMApp.py:6190 msgid "[[WARNING_NOTCL]] Data must be a 3D array with last dimension 3 or 4" msgstr "" "[WARNING_NOTCL] Daten müssen ein 3D-Array mit der letzten Dimension 3 oder 4 " "sein" -#: FlatCAMApp.py:6116 FlatCAMApp.py:6120 +#: FlatCAMApp.py:6196 FlatCAMApp.py:6200 msgid "Export PNG Image" msgstr "PNG-Bild exportieren" -#: FlatCAMApp.py:6125 +#: FlatCAMApp.py:6205 msgid "Export PNG cancelled." msgstr "Export PNG abgebrochen." -#: FlatCAMApp.py:6144 +#: FlatCAMApp.py:6224 msgid "" "[WARNING_NOTCL] No object selected. Please select an Gerber object to export." msgstr "" "[WARNING_NOTCL] Kein Objekt ausgewählt. Bitte wählen Sie ein Gerber-Objekt " "aus, das Sie exportieren möchten." -#: FlatCAMApp.py:6149 FlatCAMApp.py:6272 +#: FlatCAMApp.py:6229 FlatCAMApp.py:6352 msgid "" "[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files..." msgstr "" "[ERROR_NOTCL] Fehlgeschlagen. Nur Gerber-Objekte können als Gerber-Dateien " "gespeichert werden ..." -#: FlatCAMApp.py:6161 +#: FlatCAMApp.py:6241 msgid "Save Gerber source file" msgstr "Gerber-Quelldatei speichern" -#: FlatCAMApp.py:6166 +#: FlatCAMApp.py:6246 msgid "[WARNING_NOTCL] Save Gerber source file cancelled." msgstr "[WARNING_NOTCL] Gerber Quelldatei speichern abgebrochen." -#: FlatCAMApp.py:6185 +#: FlatCAMApp.py:6265 msgid "" "[WARNING_NOTCL] No object selected. Please select an Excellon object to " "export." @@ -653,22 +657,22 @@ msgstr "" "[WARNING_NOTCL] Kein Objekt ausgewählt Bitte wählen Sie ein Excellon-Objekt " "zum Exportieren aus." -#: FlatCAMApp.py:6190 FlatCAMApp.py:6231 +#: FlatCAMApp.py:6270 FlatCAMApp.py:6311 msgid "" "[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files..." msgstr "" "[ERROR_NOTCL] Fehlgeschlagen. Nur Excellon-Objekte können als Excellon-" "Dateien gespeichert werden ..." -#: FlatCAMApp.py:6198 FlatCAMApp.py:6202 +#: FlatCAMApp.py:6278 FlatCAMApp.py:6282 msgid "Save Excellon source file" msgstr "Speichern Sie die Excellon-Quelldatei" -#: FlatCAMApp.py:6207 +#: FlatCAMApp.py:6287 msgid "[WARNING_NOTCL] Saving Excellon source file cancelled." msgstr "[WARNING_NOTCL] Speichern der Excellon-Quelldatei abgebrochen." -#: FlatCAMApp.py:6226 +#: FlatCAMApp.py:6306 msgid "" "[WARNING_NOTCL] No object selected. Please Select an Excellon object to " "export." @@ -676,70 +680,70 @@ msgstr "" "[WARNING_NOTCL] Kein Objekt ausgewählt. Bitte wählen Sie ein Excellon-Objekt " "aus, das Sie exportieren möchten." -#: FlatCAMApp.py:6239 FlatCAMApp.py:6243 +#: FlatCAMApp.py:6319 FlatCAMApp.py:6323 msgid "Export Excellon" msgstr "Excellon exportieren" -#: FlatCAMApp.py:6248 +#: FlatCAMApp.py:6328 msgid "[WARNING_NOTCL] Export Excellon cancelled." msgstr "[WARNING_NOTCL] Export Excellon wurde abgebrochen." -#: FlatCAMApp.py:6267 +#: FlatCAMApp.py:6347 msgid "" "[WARNING_NOTCL] No object selected. Please Select an Gerber object to export." msgstr "" "[WARNING_NOTCL] Kein Objekt ausgewählt. Bitte wählen Sie ein Gerber-Objekt " "aus, das Sie exportieren möchten." -#: FlatCAMApp.py:6280 FlatCAMApp.py:6284 +#: FlatCAMApp.py:6360 FlatCAMApp.py:6364 msgid "Export Gerber" msgstr "Gerber exportieren" -#: FlatCAMApp.py:6289 +#: FlatCAMApp.py:6369 msgid "[WARNING_NOTCL] Export Gerber cancelled." msgstr "[WARNING_NOTCL] Export Gerber abgebrochen." -#: FlatCAMApp.py:6319 +#: FlatCAMApp.py:6399 msgid "[ERROR_NOTCL] Only Geometry objects can be used." msgstr "[ERROR_NOTCL] Es können nur Geometrieobjekte verwendet werden." -#: FlatCAMApp.py:6333 FlatCAMApp.py:6337 +#: FlatCAMApp.py:6413 FlatCAMApp.py:6417 msgid "Export DXF" msgstr "DXF exportieren" -#: FlatCAMApp.py:6342 +#: FlatCAMApp.py:6423 msgid "[WARNING_NOTCL] Export DXF cancelled." msgstr "[WARNING_NOTCL] Export DXF wurde abgebrochen." -#: FlatCAMApp.py:6362 FlatCAMApp.py:6365 +#: FlatCAMApp.py:6443 FlatCAMApp.py:6446 msgid "Import SVG" msgstr "SVG importieren" -#: FlatCAMApp.py:6373 +#: FlatCAMApp.py:6455 msgid "[WARNING_NOTCL] Open SVG cancelled." msgstr "[WARNING_NOTCL] Open SVG abgebrochen." -#: FlatCAMApp.py:6392 FlatCAMApp.py:6395 +#: FlatCAMApp.py:6474 FlatCAMApp.py:6478 msgid "Import DXF" msgstr "Importieren Sie DXF" -#: FlatCAMApp.py:6403 +#: FlatCAMApp.py:6487 msgid "[WARNING_NOTCL] Open DXF cancelled." msgstr "[WARNING_NOTCL] Open DXF cancelled." -#: FlatCAMApp.py:6421 +#: FlatCAMApp.py:6505 #, python-format msgid "%s" msgstr "%s" -#: FlatCAMApp.py:6441 +#: FlatCAMApp.py:6525 msgid "" "[WARNING_NOTCL] Select an Gerber or Excellon file to view it's source file." msgstr "" "[WARNING_NOTCL] Wählen Sie eine Gerber- oder Excellon-Datei aus, um die " "Quelldatei anzuzeigen." -#: FlatCAMApp.py:6448 +#: FlatCAMApp.py:6532 msgid "" "[WARNING_NOTCL] There is no selected object for which to see it's source " "file code." @@ -747,24 +751,24 @@ msgstr "" "[WARNING_NOTCL] Es gibt kein ausgewähltes Objekt, für das man seinen " "Quelldateien sehen kann." -#: FlatCAMApp.py:6456 +#: FlatCAMApp.py:6540 msgid "Source Editor" msgstr "Quelleditor" -#: FlatCAMApp.py:6466 +#: FlatCAMApp.py:6550 #, python-format msgid "[ERROR]App.on_view_source() -->%s" msgstr "[ERROR]App.on_view_source() -->%s" -#: FlatCAMApp.py:6478 FlatCAMApp.py:7621 FlatCAMObj.py:5573 +#: FlatCAMApp.py:6562 FlatCAMApp.py:7704 FlatCAMObj.py:5581 msgid "Code Editor" msgstr "Code-Editor" -#: FlatCAMApp.py:6490 +#: FlatCAMApp.py:6574 msgid "Script Editor" msgstr "Script Editor" -#: FlatCAMApp.py:6493 +#: FlatCAMApp.py:6577 msgid "" "#\n" "# CREATE A NEW FLATCAM TCL SCRIPT\n" @@ -808,98 +812,98 @@ msgstr "" "#\n" "\n" -#: FlatCAMApp.py:6516 FlatCAMApp.py:6519 +#: FlatCAMApp.py:6600 FlatCAMApp.py:6603 msgid "Open TCL script" msgstr "Öffnen Sie das TCL-Skript" -#: FlatCAMApp.py:6527 +#: FlatCAMApp.py:6611 msgid "[WARNING_NOTCL] Open TCL script cancelled." msgstr "[WARNING_NOTCL] Open TCL-Skript wurde abgebrochen." -#: FlatCAMApp.py:6539 +#: FlatCAMApp.py:6623 #, python-format msgid "[ERROR]App.on_fileopenscript() -->%s" msgstr "[ERROR]App.on_fileopenscript() -->%s" -#: FlatCAMApp.py:6565 FlatCAMApp.py:6568 +#: FlatCAMApp.py:6649 FlatCAMApp.py:6652 msgid "Run TCL script" msgstr "Führen Sie das TCL-Skript aus" -#: FlatCAMApp.py:6576 +#: FlatCAMApp.py:6660 msgid "[WARNING_NOTCL] Run TCL script cancelled." msgstr "[WARNING_NOTCL] Das TCL-Skript wird abgebrochen." -#: FlatCAMApp.py:6622 FlatCAMApp.py:6626 +#: FlatCAMApp.py:6710 FlatCAMApp.py:6714 msgid "Save Project As ..." msgstr "Projekt speichern als ..." -#: FlatCAMApp.py:6623 +#: FlatCAMApp.py:6711 #, python-brace-format msgid "{l_save}/Project_{date}" msgstr "{l_save}/Projekt_{date}" -#: FlatCAMApp.py:6631 +#: FlatCAMApp.py:6719 msgid "[WARNING_NOTCL] Save Project cancelled." msgstr "[WARNING_NOTCL] Projekt speichern abgebrochen" -#: FlatCAMApp.py:6676 +#: FlatCAMApp.py:6763 msgid "Exporting SVG" msgstr "SVG exportieren" -#: FlatCAMApp.py:6710 FlatCAMApp.py:6816 FlatCAMApp.py:6931 +#: FlatCAMApp.py:6797 FlatCAMApp.py:6903 FlatCAMApp.py:7018 #, python-format msgid "[success] SVG file exported to %s" msgstr "[success] SVG-Datei in exportiert %s" -#: FlatCAMApp.py:6741 FlatCAMApp.py:6862 +#: FlatCAMApp.py:6828 FlatCAMApp.py:6949 #, python-format msgid "[WARNING_NOTCL] No object Box. Using instead %s" msgstr "[WARNING_NOTCL] Kein Objektfeld. Stattdessen verwenden %s" -#: FlatCAMApp.py:6819 FlatCAMApp.py:6934 +#: FlatCAMApp.py:6906 FlatCAMApp.py:7021 msgid "Generating Film ... Please wait." msgstr "Film wird erstellt ... Bitte warten Sie." -#: FlatCAMApp.py:7082 +#: FlatCAMApp.py:7169 #, python-format msgid "[success] Excellon file exported to %s" msgstr "[success] Excellon-Datei nach exportiert %s" -#: FlatCAMApp.py:7089 +#: FlatCAMApp.py:7176 msgid "Exporting Excellon" msgstr "Excellon exportieren" -#: FlatCAMApp.py:7094 FlatCAMApp.py:7101 +#: FlatCAMApp.py:7181 FlatCAMApp.py:7188 msgid "[ERROR_NOTCL] Could not export Excellon file." msgstr "[ERROR_NOTCL] Excellon-Datei konnte nicht exportiert werden." -#: FlatCAMApp.py:7199 +#: FlatCAMApp.py:7286 #, python-format msgid "[success] Gerber file exported to %s" msgstr "[success] Gerber-Datei in exportiert %s" -#: FlatCAMApp.py:7206 +#: FlatCAMApp.py:7293 msgid "Exporting Gerber" msgstr "Gerber exportieren" -#: FlatCAMApp.py:7211 FlatCAMApp.py:7218 +#: FlatCAMApp.py:7298 FlatCAMApp.py:7305 msgid "[ERROR_NOTCL] Could not export Gerber file." msgstr "[ERROR_NOTCL] Gerber-Datei konnte nicht exportiert werden." -#: FlatCAMApp.py:7258 +#: FlatCAMApp.py:7345 #, python-format msgid "[success] DXF file exported to %s" msgstr "[success] DXF-Datei in exportiert %s" -#: FlatCAMApp.py:7264 +#: FlatCAMApp.py:7351 msgid "Exporting DXF" msgstr "DXF exportieren" -#: FlatCAMApp.py:7269 FlatCAMApp.py:7276 +#: FlatCAMApp.py:7356 FlatCAMApp.py:7363 msgid "[[WARNING_NOTCL]] Could not export DXF file." msgstr "[WARNING_NOTCL] DXF-Datei konnte nicht exportiert werden." -#: FlatCAMApp.py:7296 FlatCAMApp.py:7338 FlatCAMApp.py:7379 +#: FlatCAMApp.py:7383 FlatCAMApp.py:7425 FlatCAMApp.py:7469 msgid "" "[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and " "Gerber are supported" @@ -907,99 +911,99 @@ msgstr "" "[ERROR_NOTCL] Nicht unterstützte Art wird als Parameter ausgewählt. Nur " "Geometrie und Gerber werden unterstützt" -#: FlatCAMApp.py:7306 +#: FlatCAMApp.py:7393 msgid "Importing SVG" msgstr "SVG importieren" -#: FlatCAMApp.py:7317 FlatCAMApp.py:7359 FlatCAMApp.py:7399 FlatCAMApp.py:7475 -#: FlatCAMApp.py:7542 FlatCAMApp.py:7607 flatcamTools/ToolPDF.py:212 +#: FlatCAMApp.py:7404 FlatCAMApp.py:7446 FlatCAMApp.py:7489 FlatCAMApp.py:7566 +#: FlatCAMApp.py:7627 FlatCAMApp.py:7690 flatcamTools/ToolPDF.py:212 #, python-format msgid "[success] Opened: %s" msgstr "[success] Geöffnet: %s" -#: FlatCAMApp.py:7348 +#: FlatCAMApp.py:7435 msgid "Importing DXF" msgstr "DXF importieren" -#: FlatCAMApp.py:7387 +#: FlatCAMApp.py:7477 msgid "Importing Image" msgstr "Bild importieren" -#: FlatCAMApp.py:7428 FlatCAMApp.py:7430 +#: FlatCAMApp.py:7518 FlatCAMApp.py:7520 #, python-format msgid "[ERROR_NOTCL] Failed to open file: %s" msgstr "[ERROR_NOTCL] Datei konnte nicht geöffnet werden: %s" -#: FlatCAMApp.py:7433 +#: FlatCAMApp.py:7523 #, python-brace-format msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}" msgstr "[ERROR_NOTCL] Fehler beim Parsen der Datei: {name}. {error}" -#: FlatCAMApp.py:7439 FlatCAMObj.py:4271 -#: flatcamEditors/FlatCAMExcEditor.py:2041 +#: FlatCAMApp.py:7530 FlatCAMObj.py:4266 +#: flatcamEditors/FlatCAMExcEditor.py:2077 msgid "[ERROR] An internal error has ocurred. See shell.\n" msgstr "[ERROR] Ein interner Fehler ist aufgetreten. Siehe Shell.\n" -#: FlatCAMApp.py:7448 +#: FlatCAMApp.py:7539 msgid "" "[ERROR_NOTCL] Object is not Gerber file or empty. Aborting object creation." msgstr "" "[ERROR_NOTCL] Objekt ist keine Gerber-Datei oder leer. Abbruch der " "Objekterstellung" -#: FlatCAMApp.py:7456 +#: FlatCAMApp.py:7547 msgid "Opening Gerber" msgstr "Gerber öffnen" -#: FlatCAMApp.py:7466 +#: FlatCAMApp.py:7557 msgid "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file." msgstr "" "[ERROR_NOTCL] Gerber öffnen ist fehlgeschlagen. Wahrscheinlich keine Gerber-" "Datei." -#: FlatCAMApp.py:7501 flatcamTools/ToolPcbWizard.py:421 +#: FlatCAMApp.py:7590 flatcamTools/ToolPcbWizard.py:421 msgid "[ERROR_NOTCL] This is not Excellon file." msgstr "[ERROR_NOTCL] Dies ist keine Excellon-Datei." -#: FlatCAMApp.py:7504 +#: FlatCAMApp.py:7593 #, python-format msgid "[ERROR_NOTCL] Cannot open file: %s" msgstr "[ERROR_NOTCL] Kann Datei nicht öffnen: %s" -#: FlatCAMApp.py:7509 flatcamTools/ToolPcbWizard.py:429 +#: FlatCAMApp.py:7598 flatcamTools/ToolPcbWizard.py:429 msgid "[ERROR_NOTCL] An internal error has occurred. See shell.\n" msgstr "[ERROR_NOTCL] Ein interner Fehler ist aufgetreten. Siehe Shell.\n" -#: FlatCAMApp.py:7525 flatcamTools/ToolPDF.py:262 +#: FlatCAMApp.py:7611 flatcamTools/ToolPDF.py:262 #: flatcamTools/ToolPcbWizard.py:442 #, python-format msgid "[ERROR_NOTCL] No geometry found in file: %s" msgstr "[ERROR_NOTCL] Keine Geometrie in der Datei gefunden: %s" -#: FlatCAMApp.py:7528 +#: FlatCAMApp.py:7614 msgid "Opening Excellon." msgstr "Eröffnung Excellon." -#: FlatCAMApp.py:7535 +#: FlatCAMApp.py:7620 msgid "[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file." msgstr "" "[ERROR_NOTCL] Die Excellon-Datei konnte nicht geöffnet werden. " "Wahrscheinlich keine Excellon-Datei." -#: FlatCAMApp.py:7574 +#: FlatCAMApp.py:7657 #, python-format msgid "[ERROR_NOTCL] Failed to open %s" msgstr "[ERROR_NOTCL] Gescheitert zu öffnen %s" -#: FlatCAMApp.py:7584 +#: FlatCAMApp.py:7667 msgid "[ERROR_NOTCL] This is not GCODE" msgstr "[ERROR_NOTCL] Dies ist kein GCODE" -#: FlatCAMApp.py:7590 +#: FlatCAMApp.py:7673 msgid "Opening G-Code." msgstr "G-Code öffnen." -#: FlatCAMApp.py:7598 +#: FlatCAMApp.py:7681 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 " @@ -1010,26 +1014,26 @@ msgstr "" "Der Versuch, ein FlatCAM-CNCJob-Objekt aus einer G-Code-Datei zu erstellen, " "ist während der Verarbeitung fehlgeschlagen" -#: FlatCAMApp.py:7638 +#: FlatCAMApp.py:7721 #, python-format msgid "[ERROR_NOTCL] Failed to open config file: %s" msgstr "[ERROR_NOTCL] Fehler beim Öffnen der Konfigurationsdatei: %s" -#: FlatCAMApp.py:7663 FlatCAMApp.py:7679 +#: FlatCAMApp.py:7747 FlatCAMApp.py:7764 #, python-format msgid "[ERROR_NOTCL] Failed to open project file: %s" msgstr "[ERROR_NOTCL] Projektdatei konnte nicht geöffnet werden: %s" -#: FlatCAMApp.py:7705 +#: FlatCAMApp.py:7787 #, python-format msgid "[success] Project loaded from: %s" msgstr "[success] Projekt geladen von: %s" -#: FlatCAMApp.py:7835 +#: FlatCAMApp.py:7892 msgid "Available commands:\n" msgstr "Verfügbare Befehle:\n" -#: FlatCAMApp.py:7837 +#: FlatCAMApp.py:7894 msgid "" "\n" "\n" @@ -1041,24 +1045,24 @@ msgstr "" "Geben Sie help für die Verwendung ein.\n" "Beispiel: help open_gerber" -#: FlatCAMApp.py:7985 +#: FlatCAMApp.py:8044 msgid "Shows list of commands." msgstr "Zeigt eine Liste von Befehlen an." -#: FlatCAMApp.py:8042 +#: FlatCAMApp.py:8101 msgid "[ERROR_NOTCL] Failed to load recent item list." msgstr "[ERROR_NOTCL] Fehler beim Laden der letzten Elementliste." -#: FlatCAMApp.py:8049 +#: FlatCAMApp.py:8108 msgid "[ERROR_NOTCL] Failed to parse recent item list." msgstr "" "[ERROR_NOTCL] Liste der letzten Artikel konnte nicht analysiert werden." -#: FlatCAMApp.py:8110 flatcamGUI/FlatCAMGUI.py:973 +#: FlatCAMApp.py:8169 flatcamGUI/FlatCAMGUI.py:968 msgid "Shortcut Key List" msgstr " Liste der Tastenkombinationen " -#: FlatCAMApp.py:8117 +#: FlatCAMApp.py:8176 msgid "" "\n" "

Selected Tab - Choose an Item from " @@ -1158,27 +1162,27 @@ msgstr "" "strong> oder über eine eigene Tastenkombination: F3. " "

" -#: FlatCAMApp.py:8221 +#: FlatCAMApp.py:8280 msgid "[WARNING_NOTCL] Failed checking for latest version. Could not connect." msgstr "" "[WARNING_NOTCL] Fehler bei der Suche nach der neuesten Version. Konnte keine " "Verbindung herstellen." -#: FlatCAMApp.py:8228 +#: FlatCAMApp.py:8287 msgid "[ERROR_NOTCL] Could not parse information about latest version." msgstr "" "[ERROR_NOTCL] Informationen zur neuesten Version konnten nicht analysiert " "werden." -#: FlatCAMApp.py:8238 +#: FlatCAMApp.py:8297 msgid "[success] FlatCAM is up to date!" msgstr "[success] FlatCAM ist auf dem neuesten Version!" -#: FlatCAMApp.py:8243 +#: FlatCAMApp.py:8302 msgid "Newer Version Available" msgstr "Neuere Version verfügbar" -#: FlatCAMApp.py:8244 +#: FlatCAMApp.py:8303 msgid "" "There is a newer version of FlatCAM available for download:\n" "\n" @@ -1186,85 +1190,97 @@ msgstr "" "Es gibt eine neuere Version von FlatCAM zum Download:\n" "\n" -#: FlatCAMApp.py:8246 +#: FlatCAMApp.py:8305 msgid "info" msgstr "Info" -#: FlatCAMApp.py:8265 +#: FlatCAMApp.py:8324 msgid "[success] All plots disabled." msgstr "[success] Alle Diagramme sind deaktiviert." -#: FlatCAMApp.py:8271 +#: FlatCAMApp.py:8330 msgid "[success] All non selected plots disabled." msgstr "[success] Alle nicht ausgewählten Diagramme sind deaktiviert." -#: FlatCAMApp.py:8277 +#: FlatCAMApp.py:8336 msgid "[success] All plots enabled." msgstr "[success] Alle Diagramme aktiviert." -#: FlatCAMApp.py:8388 +#: FlatCAMApp.py:8342 +msgid "[success] Selected plots enabled..." +msgstr "[success] Ausgewählte Grundstücke aktiviert ..." + +#: FlatCAMApp.py:8350 +msgid "[success] Selected plots disabled..." +msgstr "[success] Ausgewählte Grundstücke deaktiviert ..." + +#: FlatCAMApp.py:8360 FlatCAMApp.py:8373 +msgid "Working ..." +msgstr "Arbeiten ..." + +#: FlatCAMApp.py:8407 msgid "Saving FlatCAM Project" msgstr "FlatCAM-Projekt speichern" -#: FlatCAMApp.py:8409 FlatCAMApp.py:8440 +#: FlatCAMApp.py:8428 FlatCAMApp.py:8459 #, python-format msgid "[success] Project saved to: %s" msgstr "[success] Projekt gespeichert in: %s" -#: FlatCAMApp.py:8427 +#: FlatCAMApp.py:8446 #, python-format msgid "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it." msgstr "" "[ERROR_NOTCL] Fehler beim Überprüfen der Projektdatei:%s. Versuchen Sie es " "erneut zu speichern." -#: FlatCAMApp.py:8434 +#: FlatCAMApp.py:8453 #, python-format msgid "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it." msgstr "" "[ERROR_NOTCL] Die gespeicherte Projektdatei konnte nicht analysiert werden:" "%s. Versuchen Sie es erneut zu speichern." -#: FlatCAMApp.py:8442 +#: FlatCAMApp.py:8461 #, python-format msgid "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it." msgstr "" "[ERROR_NOTCL] Projektdatei konnte nicht gespeichert werden:%s. Versuchen Sie " "es erneut zu speichern." -#: FlatCAMObj.py:201 +#: FlatCAMObj.py:202 #, python-brace-format msgid "[success] Name changed from {old} to {new}" msgstr "[success] Name geändert von {old} zu {new}" -#: FlatCAMObj.py:548 FlatCAMObj.py:2033 FlatCAMObj.py:3307 FlatCAMObj.py:5470 +#: FlatCAMObj.py:546 FlatCAMObj.py:2031 FlatCAMObj.py:3311 FlatCAMObj.py:5478 msgid "Basic" msgstr "Basic" -#: FlatCAMObj.py:560 FlatCAMObj.py:2049 FlatCAMObj.py:3329 FlatCAMObj.py:5476 +#: FlatCAMObj.py:558 FlatCAMObj.py:2047 FlatCAMObj.py:3333 FlatCAMObj.py:5484 msgid "Advanced" msgstr "Erweitert" -#: FlatCAMObj.py:923 FlatCAMObj.py:978 +#: FlatCAMObj.py:921 FlatCAMObj.py:976 #, python-format msgid "[success] Isolation geometry created: %s" msgstr "[success] Isolationsgeometrie erstellt: %s" -#: FlatCAMObj.py:1157 +#: FlatCAMObj.py:1155 msgid "Plotting Apertures" msgstr "Plotten Apertures" -#: FlatCAMObj.py:1872 flatcamEditors/FlatCAMExcEditor.py:1332 +#: FlatCAMObj.py:1870 flatcamEditors/FlatCAMExcEditor.py:1368 msgid "Total Drills" msgstr "Bohrungen insgesamt" -#: FlatCAMObj.py:1898 flatcamEditors/FlatCAMExcEditor.py:1364 +#: FlatCAMObj.py:1896 flatcamEditors/FlatCAMExcEditor.py:1400 msgid "Total Slots" msgstr "Schlitz insgesamt" -#: FlatCAMObj.py:2105 FlatCAMObj.py:3380 FlatCAMObj.py:3687 FlatCAMObj.py:3874 -#: FlatCAMObj.py:3887 FlatCAMObj.py:4004 FlatCAMObj.py:4419 FlatCAMObj.py:4654 -#: FlatCAMObj.py:5062 flatcamEditors/FlatCAMExcEditor.py:1439 +#: FlatCAMObj.py:2103 FlatCAMObj.py:3384 FlatCAMObj.py:3682 FlatCAMObj.py:3869 +#: FlatCAMObj.py:3882 FlatCAMObj.py:3999 FlatCAMObj.py:4416 FlatCAMObj.py:4653 +#: FlatCAMObj.py:5061 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 @@ -1283,48 +1299,48 @@ msgstr "Schlitz insgesamt" msgid "[ERROR_NOTCL] Wrong value format entered, use a number." msgstr "[ERROR_NOTCL] Wrong value format entered, use a number." -#: FlatCAMObj.py:2329 FlatCAMObj.py:2420 FlatCAMObj.py:2542 +#: FlatCAMObj.py:2327 FlatCAMObj.py:2418 FlatCAMObj.py:2540 msgid "" "[ERROR_NOTCL] Please select one or more tools from the list and try again." msgstr "" "[ERROR_NOTCL] Bitte wählen Sie ein oder mehrere Werkzeuge aus der Liste aus " "und versuchen Sie es erneut." -#: FlatCAMObj.py:2336 +#: FlatCAMObj.py:2334 msgid "" "[ERROR_NOTCL] Milling tool for DRILLS is larger than hole size. Cancelled." msgstr "" "[ERROR_NOTCL] Das Fräswerkzeug für BOHRER ist größer als die Lochgröße. " "Abgebrochen." -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 msgid "Tool_nr" msgstr "Werkzeugnummer" -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 -#: flatcamEditors/FlatCAMExcEditor.py:785 -#: flatcamEditors/FlatCAMExcEditor.py:1984 flatcamGUI/ObjectUI.py:556 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 +#: flatcamEditors/FlatCAMExcEditor.py:819 +#: flatcamEditors/FlatCAMExcEditor.py:2020 flatcamGUI/ObjectUI.py:556 #: flatcamTools/ToolNonCopperClear.py:83 flatcamTools/ToolPaint.py:80 #: flatcamTools/ToolPcbWizard.py:78 flatcamTools/ToolSolderPaste.py:81 msgid "Diameter" msgstr "Durchmesser" -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 msgid "Drills_Nr" msgstr "Bohrnummer" -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 msgid "Slots_Nr" msgstr "Schlitznummer" -#: FlatCAMObj.py:2430 +#: FlatCAMObj.py:2428 msgid "" "[ERROR_NOTCL] Milling tool for SLOTS is larger than hole size. Cancelled." msgstr "" "[ERROR_NOTCL] Das Fräswerkzeug für SCHLITZ ist größer als die Lochgröße. " "Abgebrochen." -#: FlatCAMObj.py:2604 FlatCAMObj.py:4307 FlatCAMObj.py:4520 FlatCAMObj.py:4837 +#: FlatCAMObj.py:2602 FlatCAMObj.py:4304 FlatCAMObj.py:4519 FlatCAMObj.py:4836 msgid "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"z_pdepth\"] or self." "options[\"z_pdepth\"]" @@ -1332,7 +1348,7 @@ msgstr "" "[ERROR_NOTCL] Falsches Wertformat für self.defaults [\"z_pdepth\"] oder self." "options [\"z_pdepth\"]" -#: FlatCAMObj.py:2616 FlatCAMObj.py:4319 FlatCAMObj.py:4532 FlatCAMObj.py:4849 +#: FlatCAMObj.py:2614 FlatCAMObj.py:4316 FlatCAMObj.py:4531 FlatCAMObj.py:4848 msgid "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"feedrate_probe\"] or " "self.options[\"feedrate_probe\"]" @@ -1340,12 +1356,12 @@ msgstr "" "[ERROR_NOTCL] Falsches Wertformat für self.defaults [\"feedrate_probe\"] " "oder self.options [\"feedrate_probe\"]" -#: FlatCAMObj.py:2648 FlatCAMObj.py:4724 FlatCAMObj.py:4729 FlatCAMObj.py:4875 +#: FlatCAMObj.py:2646 FlatCAMObj.py:4723 FlatCAMObj.py:4728 FlatCAMObj.py:4874 msgid "Generating CNC Code" msgstr "CNC-Code generieren" -#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5166 camlib.py:5625 -#: camlib.py:5888 +#: FlatCAMObj.py:2672 FlatCAMObj.py:5020 camlib.py:5152 camlib.py:5611 +#: camlib.py:5874 msgid "" "[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " "format (x, y) \n" @@ -1355,62 +1371,62 @@ msgstr "" "muss das Format (x, y) haben.\n" "Aber jetzt gibt es nur einen Wert, nicht zwei." -#: FlatCAMObj.py:3022 FlatCAMObj.py:3930 FlatCAMObj.py:3931 FlatCAMObj.py:3940 +#: FlatCAMObj.py:3020 FlatCAMObj.py:3925 FlatCAMObj.py:3926 FlatCAMObj.py:3935 msgid "Iso" msgstr "Iso" -#: FlatCAMObj.py:3022 FlatCAMObj.py:3265 FlatCAMObj.py:3552 +#: FlatCAMObj.py:3020 FlatCAMObj.py:3269 FlatCAMObj.py:3549 msgid "Rough" msgstr "Rau" -#: FlatCAMObj.py:3022 +#: FlatCAMObj.py:3020 msgid "Finish" msgstr "Oberfläche" -#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:727 -#: flatcamGUI/FlatCAMGUI.py:1618 flatcamGUI/FlatCAMGUI.py:1953 +#: FlatCAMObj.py:3304 flatcamGUI/FlatCAMGUI.py:526 flatcamGUI/FlatCAMGUI.py:722 +#: flatcamGUI/FlatCAMGUI.py:1615 flatcamGUI/FlatCAMGUI.py:1951 #: flatcamGUI/ObjectUI.py:999 msgid "Copy" msgstr "Kopieren" -#: FlatCAMObj.py:3522 +#: FlatCAMObj.py:3519 msgid "[ERROR_NOTCL] Please enter the desired tool diameter in Float format." msgstr "" "[ERROR_NOTCL] Bitte geben Sie den gewünschten Werkzeugdurchmesser im Real-" "Format ein." -#: FlatCAMObj.py:3597 +#: FlatCAMObj.py:3592 msgid "[success] Tool added in Tool Table." msgstr "[success] Werkzeug in der Werkzeugtabelle hinzugefügt." -#: FlatCAMObj.py:3602 +#: FlatCAMObj.py:3597 msgid "[ERROR_NOTCL] Default Tool added. Wrong value format entered." msgstr "" "[ERROR_NOTCL] Standardwerkzeug hinzugefügt Falsches Wertformat eingegeben." -#: FlatCAMObj.py:3632 FlatCAMObj.py:3642 +#: FlatCAMObj.py:3627 FlatCAMObj.py:3637 msgid "[WARNING_NOTCL] Failed. Select a tool to copy." msgstr "" "[WARNING_NOTCL] Fehlgeschlagen. Wählen Sie ein Werkzeug zum Kopieren aus." -#: FlatCAMObj.py:3671 +#: FlatCAMObj.py:3666 msgid "[success] Tool was copied in Tool Table." msgstr "[success] Das Werkzeug wurde in die Werkzeugtabelle kopiert." -#: FlatCAMObj.py:3704 +#: FlatCAMObj.py:3699 msgid "[success] Tool was edited in Tool Table." msgstr "[success] Das Werkzeug wurde in der Werkzeugtabelle bearbeitet." -#: FlatCAMObj.py:3735 FlatCAMObj.py:3745 +#: FlatCAMObj.py:3730 FlatCAMObj.py:3740 msgid "[WARNING_NOTCL] Failed. Select a tool to delete." msgstr "" "[WARNING_NOTCL] Fehlgeschlagen. Wählen Sie ein Werkzeug zum Löschen aus." -#: FlatCAMObj.py:3769 +#: FlatCAMObj.py:3764 msgid "[success] Tool was deleted in Tool Table." msgstr "[success] Werkzeug wurde in der Werkzeugtabelle gelöscht." -#: FlatCAMObj.py:4190 +#: FlatCAMObj.py:4185 #, python-format msgid "" "[WARNING_NOTCL] This Geometry can't be processed because it is %s geometry." @@ -1418,24 +1434,24 @@ msgstr "" "[WARNING_NOTCL] Diese Geometrie kann nicht verarbeitet werden, da es sich um " "%s Geometrie handelt." -#: FlatCAMObj.py:4207 +#: FlatCAMObj.py:4202 msgid "[ERROR_NOTCL] Wrong Tool Dia value format entered, use a number." msgstr "" "[ERROR_NOTCL] Falsches Werkzeug Dia-Wertformat eingegeben, verwenden Sie " "eine Zahl." -#: FlatCAMObj.py:4234 +#: FlatCAMObj.py:4229 msgid "[ERROR_NOTCL] Failed. No tool selected in the tool table ..." msgstr "" "[ERROR_NOTCL] Gescheitert. Kein Werkzeug in der Werkzeugtabelle " "ausgewählt ..." -#: FlatCAMObj.py:4272 +#: FlatCAMObj.py:4267 #, python-format msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" msgstr "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" -#: FlatCAMObj.py:4428 FlatCAMObj.py:4663 +#: FlatCAMObj.py:4425 FlatCAMObj.py:4662 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 +1460,22 @@ msgstr "" "jedoch kein Wert angegeben.\n" "Fügen Sie einen Werkzeugversatz hinzu oder ändern Sie den Versatztyp." -#: FlatCAMObj.py:4544 flatcamTools/ToolSolderPaste.py:1107 +#: FlatCAMObj.py:4543 flatcamTools/ToolSolderPaste.py:1107 #: flatcamTools/ToolSolderPaste.py:1162 msgid "[ERROR_NOTCL] Cancelled. Empty file, it has no geometry..." msgstr "[ERROR_NOTCL] Cancelled. Empty file, it has no geometry..." -#: FlatCAMObj.py:4908 FlatCAMObj.py:4918 camlib.py:3346 camlib.py:3355 +#: FlatCAMObj.py:4907 FlatCAMObj.py:4917 camlib.py:3335 camlib.py:3344 msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float." msgstr "" "[ERROR_NOTCL] Der Skalierungsfaktor muss eine Zahl sein: Ganzzahl oder " "Fließkommazahl." -#: FlatCAMObj.py:4956 +#: FlatCAMObj.py:4955 msgid "[success] Geometry Scale done." msgstr "[success] Geometrie Skalierung fertig." -#: FlatCAMObj.py:4973 camlib.py:3425 +#: FlatCAMObj.py:4972 camlib.py:3414 msgid "" "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " "one value in the Offset field." @@ -1467,29 +1483,29 @@ msgstr "" "[ERROR_NOTCL] Ein (x, y) Wertepaar wird benötigt. Wahrscheinlich haben Sie " "im Feld Offset nur einen Wert eingegeben." -#: FlatCAMObj.py:4993 +#: FlatCAMObj.py:4992 msgid "[success] Geometry Offset done." msgstr "[success] Geometrie Offset fertig." -#: FlatCAMObj.py:5538 FlatCAMObj.py:5543 flatcamTools/ToolSolderPaste.py:1361 +#: FlatCAMObj.py:5546 FlatCAMObj.py:5551 flatcamTools/ToolSolderPaste.py:1361 msgid "Export Machine Code ..." msgstr "Maschinencode exportieren ..." -#: FlatCAMObj.py:5549 flatcamTools/ToolSolderPaste.py:1364 +#: FlatCAMObj.py:5557 flatcamTools/ToolSolderPaste.py:1364 msgid "[WARNING_NOTCL] Export Machine Code cancelled ..." msgstr "[WARNING_NOTCL] Export Machine Code cancelled ..." -#: FlatCAMObj.py:5562 +#: FlatCAMObj.py:5570 #, python-format msgid "[success] Machine Code file saved to: %s" msgstr "[success] Maschinencode-Datei gespeichert in: %s" -#: FlatCAMObj.py:5584 +#: FlatCAMObj.py:5592 #, python-format msgid "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" msgstr "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" -#: FlatCAMObj.py:5701 +#: FlatCAMObj.py:5709 #, python-format msgid "" "[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " @@ -1498,11 +1514,11 @@ msgstr "" "[WARNING_NOTCL] Dieses CNC-Auftrag Objekt kann nicht verarbeitet werden, da " "es sich um ein %s CNC-Auftrag Objekt handelt." -#: FlatCAMObj.py:5754 +#: FlatCAMObj.py:5762 msgid "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21" msgstr "[ERROR_NOTCL] G-Code hat keinen Einheitencode: entweder G20 oder G21" -#: FlatCAMObj.py:5767 +#: FlatCAMObj.py:5775 msgid "" "[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " "empty." @@ -1510,17 +1526,17 @@ msgstr "" "[ERROR_NOTCL] Abgebrochen. Der benutzerdefinierte Code zum Ändern des " "Werkzeugs ist aktiviert, aber er ist leer." -#: FlatCAMObj.py:5774 +#: FlatCAMObj.py:5782 msgid "[success] Toolchange G-code was replaced by a custom code." msgstr "" "[success] Der Werkzeugwechsel-G-Code wurde durch einen benutzerdefinierten " "Code ersetzt." -#: FlatCAMObj.py:5789 flatcamTools/ToolSolderPaste.py:1390 +#: FlatCAMObj.py:5797 flatcamTools/ToolSolderPaste.py:1390 msgid "[WARNING_NOTCL] No such file or directory" msgstr "[WARNING_NOTCL] Keine solche Datei oder Ordner" -#: FlatCAMObj.py:5809 FlatCAMObj.py:5821 +#: FlatCAMObj.py:5817 FlatCAMObj.py:5829 msgid "" "[WARNING_NOTCL] The used postprocessor file has to have in it's name: " "'toolchange_custom'" @@ -1528,11 +1544,11 @@ msgstr "" "[WARNING_NOTCL] Die verwendete Postprozessor-Datei muss im Namen enthalten " "sein: 'toolchange_custom'" -#: FlatCAMObj.py:5827 +#: FlatCAMObj.py:5835 msgid "[ERROR] There is no postprocessor file." msgstr "[ERROR] Es gibt keine Postprozessor-Datei." -#: ObjectCollection.py:419 +#: ObjectCollection.py:420 #, python-brace-format msgid "Object renamed from {old} to {new}" msgstr "Objekt umbenannt von {old} zu {new}" @@ -1542,47 +1558,47 @@ msgstr "Objekt umbenannt von {old} zu {new}" msgid "[ERROR] Cause of error: %s" msgstr "[ERROR] Fehlerursache: %s" -#: camlib.py:202 +#: camlib.py:198 msgid "[ERROR_NOTCL] self.solid_geometry is neither BaseGeometry or list." msgstr "" "[ERROR_NOTCL] self.solid_geometry ist weder BaseGeometry noch eine Liste." -#: camlib.py:1390 +#: camlib.py:1381 msgid "[success] Object was mirrored ..." msgstr "[success] Objekt wurde gespiegelt ..." -#: camlib.py:1392 +#: camlib.py:1383 msgid "[ERROR_NOTCL] Failed to mirror. No object selected" msgstr "[ERROR_NOTCL] Spiegelung fehlgeschlagen Kein Objekt ausgewählt" -#: camlib.py:1428 +#: camlib.py:1419 msgid "[success] Object was rotated ..." msgstr "[success] Objekt wurde gedreht ..." -#: camlib.py:1430 +#: camlib.py:1421 msgid "[ERROR_NOTCL] Failed to rotate. No object selected" msgstr "[ERROR_NOTCL] Fehler beim Drehen. Kein Objekt ausgewählt" -#: camlib.py:1464 +#: camlib.py:1455 msgid "[success] Object was skewed ..." msgstr "[success] Objekt war schief ..." -#: camlib.py:1466 +#: camlib.py:1457 msgid "[ERROR_NOTCL] Failed to skew. No object selected" msgstr "[ERROR_NOTCL] Fehler beim Neigen Kein Objekt ausgewählt" -#: camlib.py:2728 camlib.py:2813 +#: camlib.py:2717 camlib.py:2802 #, python-format msgid "[WARNING] Coordinates missing, line ignored: %s" msgstr "[WARNING] Koordinaten fehlen, Zeile wird ignoriert: %s" -#: camlib.py:2729 camlib.py:2814 +#: camlib.py:2718 camlib.py:2803 msgid "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!" msgstr "" "[WARNING_NOTCL] Die GERBER-Datei könnte CORRUPT sein. Überprüfen Sie die " "Datei !!!" -#: camlib.py:2778 +#: camlib.py:2767 #, python-format msgid "" "[ERROR] Region does not have enough points. File will be processed but there " @@ -1591,7 +1607,7 @@ msgstr "" "[ERROR] Region hat nicht genug Punkte. Die Datei wird verarbeitet, es treten " "jedoch Parserfehler auf. Linien Nummer: %s" -#: camlib.py:3170 +#: camlib.py:3159 #, python-format msgid "" "[ERROR]Gerber Parser ERROR.\n" @@ -1600,32 +1616,32 @@ msgstr "" "[ERROR] Gerber Parser ERROR.\n" "%s:" -#: camlib.py:3392 +#: camlib.py:3381 msgid "[success] Gerber Scale done." msgstr "[success] Gerber-Skalierung abgeschlossen." -#: camlib.py:3458 +#: camlib.py:3447 msgid "[success] Gerber Offset done." msgstr "[success] Gerber Offset fertig." -#: camlib.py:3512 +#: camlib.py:3501 msgid "[success] Gerber Mirror done." msgstr "[success] Gerber Mirror fertig." -#: camlib.py:3558 +#: camlib.py:3547 msgid "[success] Gerber Skew done." msgstr "[success] Gerber-Versatz fertig." -#: camlib.py:3596 +#: camlib.py:3585 msgid "[success] Gerber Rotate done." msgstr "[success] Gerber drehen fertig." -#: camlib.py:3875 +#: camlib.py:3864 #, python-format msgid "[ERROR_NOTCL] This is GCODE mark: %s" msgstr "[ERROR_NOTCL] Dies ist die GCODE-Marke: %s" -#: camlib.py:3990 +#: camlib.py:3979 #, python-format msgid "" "[WARNING] No tool diameter info's. See shell.\n" @@ -1642,7 +1658,7 @@ msgstr "" "Der Benutzer muss das resultierende Excellon-Objekt bearbeiten und die " "Durchmesser ändern, um die tatsächlichen Durchmesser widerzuspiegeln." -#: camlib.py:4455 +#: camlib.py:4444 #, python-brace-format msgid "" "[ERROR] Excellon Parser error.\n" @@ -1651,7 +1667,7 @@ msgstr "" "[ERROR] Fehler beim Excellon-Parser.\n" "Parsing fehlgeschlagen. Zeile {l_nr}: {line}\n" -#: camlib.py:4532 +#: camlib.py:4521 msgid "" "[WARNING] Excellon.create_geometry() -> a drill location was skipped due of " "not having a tool associated.\n" @@ -1661,12 +1677,12 @@ msgstr "" "da kein Werkzeug zugeordnet wurde.\n" "Überprüfen Sie den resultierenden GCode." -#: camlib.py:5075 +#: camlib.py:5061 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "[ERROR] Es gibt keinen solchen Parameter: %s" -#: camlib.py:5145 +#: camlib.py:5131 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1681,7 +1697,7 @@ msgstr "" "einen negativen Wert. \n" "Überprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:5152 camlib.py:5648 camlib.py:5911 +#: camlib.py:5138 camlib.py:5634 camlib.py:5897 #, python-format msgid "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" @@ -1689,15 +1705,15 @@ msgstr "" "[WARNING] Der Parameter Cut Z ist Null. Es wird kein Schnitt ausgeführt, da " "die %s Datei übersprungen wird" -#: camlib.py:5381 camlib.py:5478 camlib.py:5536 +#: camlib.py:5367 camlib.py:5464 camlib.py:5522 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "[ERROR_NOTCL] Die geladene Excellon-Datei hat keine Bohrer ..." -#: camlib.py:5483 +#: camlib.py:5469 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "[ERROR_NOTCL] Falscher Optimierungstyp ausgewählt." -#: camlib.py:5636 camlib.py:5899 +#: camlib.py:5622 camlib.py:5885 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." @@ -1705,7 +1721,7 @@ msgstr "" "[ERROR_NOTCL] Der Parameter Cut_Z ist None oder Null. Höchstwahrscheinlich " "eine schlechte Kombination anderer Parameter." -#: camlib.py:5641 camlib.py:5904 +#: camlib.py:5627 camlib.py:5890 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1720,11 +1736,11 @@ msgstr "" "einen negativen Wert. \n" "Überprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:5653 camlib.py:5916 +#: camlib.py:5639 camlib.py:5902 msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." msgstr "[ERROR_NOTCL] Der Parameter für den Travel Z ist Kein oder Null." -#: camlib.py:5657 camlib.py:5920 +#: camlib.py:5643 camlib.py:5906 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1738,7 +1754,7 @@ msgstr "" "einen Tippfehler handelt, konvertiert die App den Wert in einen positiven " "Wert. Überprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:5664 camlib.py:5927 +#: camlib.py:5650 camlib.py:5913 #, python-format msgid "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" @@ -1746,12 +1762,12 @@ msgstr "" "[WARNING] Der Parameter Z-Weg ist Null. Dies ist gefährlich, da die %s Datei " "übersprungen wird" -#: camlib.py:5794 +#: camlib.py:5780 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "[ERROR] Eine Geometrie erwartet,%s erhalten" -#: camlib.py:5800 +#: camlib.py:5786 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." @@ -1759,7 +1775,7 @@ msgstr "" "[ERROR_NOTCL] Der Versuch, einen CNC-Auftrag aus einem Geometrieobjekt ohne " "solid_geometry zu generieren." -#: camlib.py:5839 +#: camlib.py:5825 msgid "" "[ERROR_NOTCL] The Tool Offset value is too negative to use for the " "current_geometry.\n" @@ -1769,12 +1785,18 @@ msgstr "" "current_geometry zu verwenden.\n" "Erhöhen Sie den Wert (im Modul) und versuchen Sie es erneut." -#: camlib.py:6053 +#: camlib.py:6039 msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." msgstr "" "[ERROR_NOTCL] In der SolderPaste-Geometrie sind keine Werkzeugdaten " "vorhanden." +#: flatcamEditors/FlatCAMExcEditor.py:37 flatcamEditors/FlatCAMExcEditor.py:143 +#: flatcamEditors/FlatCAMGrbEditor.py:229 +#: flatcamEditors/FlatCAMGrbEditor.py:234 +msgid "Click to place ..." +msgstr "Zum Platzieren klicken ..." + #: flatcamEditors/FlatCAMExcEditor.py:46 msgid "[WARNING_NOTCL] To add a drill first select a tool" msgstr "" @@ -1782,11 +1804,11 @@ msgstr "" "aus" #: flatcamEditors/FlatCAMExcEditor.py:62 flatcamEditors/FlatCAMExcEditor.py:165 -#: flatcamEditors/FlatCAMExcEditor.py:447 -#: flatcamEditors/FlatCAMExcEditor.py:472 +#: flatcamEditors/FlatCAMExcEditor.py:450 +#: flatcamEditors/FlatCAMExcEditor.py:475 #: flatcamEditors/FlatCAMGrbEditor.py:451 -#: flatcamEditors/FlatCAMGrbEditor.py:1762 -#: flatcamEditors/FlatCAMGrbEditor.py:1790 +#: flatcamEditors/FlatCAMGrbEditor.py:1776 +#: flatcamEditors/FlatCAMGrbEditor.py:1804 msgid "Click on target location ..." msgstr "Klicken Sie auf den Zielort ..." @@ -1814,10 +1836,10 @@ msgstr "" "Trennzeichens." #: flatcamEditors/FlatCAMExcEditor.py:207 -#: flatcamEditors/FlatCAMGrbEditor.py:497 -msgid "[ERROR_NOTCL] The value is mistyped. Check the value." +#, python-format +msgid "[ERROR_NOTCL] The value is mistyped. Check the value. %s" msgstr "" -"[ERROR_NOTCL] Der Wert ist falsch geschrieben. Überprüfen Sie den Wert." +"[ERROR_NOTCL] Der Wert ist falsch eingegeben. Überprüfen Sie den Wert. %s" #: flatcamEditors/FlatCAMExcEditor.py:305 msgid "[WARNING_NOTCL] Too many drills for the selected spacing angle." @@ -1831,50 +1853,50 @@ msgstr "[success] Erledigt. Bohrfeld hinzugefügt." msgid "Click on the Drill(s) to resize ..." msgstr "Klicken Sie auf die Bohrer, um die Größe zu ändern ..." -#: flatcamEditors/FlatCAMExcEditor.py:353 +#: flatcamEditors/FlatCAMExcEditor.py:354 msgid "" "[ERROR_NOTCL] Resize drill(s) failed. Please enter a diameter for resize." msgstr "" "[ERROR_NOTCL] Die Größe der Bohrer ist fehlgeschlagen. Bitte geben Sie einen " "Durchmesser für die Größenänderung ein." -#: flatcamEditors/FlatCAMExcEditor.py:423 +#: flatcamEditors/FlatCAMExcEditor.py:424 msgid "[success] Done. Drill Resize completed." msgstr "[success] Erledigt. Bohren Sie die Größe neu." -#: flatcamEditors/FlatCAMExcEditor.py:426 +#: flatcamEditors/FlatCAMExcEditor.py:427 msgid "[WARNING_NOTCL] Cancelled. No drills selected for resize ..." msgstr "" "[WARNING_NOTCL] Abgebrochen. Keine Bohrer zur Größenänderung ausgewählt ..." -#: flatcamEditors/FlatCAMExcEditor.py:449 -#: flatcamEditors/FlatCAMGrbEditor.py:1764 +#: flatcamEditors/FlatCAMExcEditor.py:452 +#: flatcamEditors/FlatCAMGrbEditor.py:1778 msgid "Click on reference location ..." msgstr "Klicken Sie auf die Referenzposition ..." -#: flatcamEditors/FlatCAMExcEditor.py:504 +#: flatcamEditors/FlatCAMExcEditor.py:507 msgid "[success] Done. Drill(s) Move completed." msgstr "[success] Erledigt. Bohrer Bewegen abgeschlossen." -#: flatcamEditors/FlatCAMExcEditor.py:557 +#: flatcamEditors/FlatCAMExcEditor.py:592 msgid "[success] Done. Drill(s) copied." msgstr "[success] Erledigt. Bohrer kopiert." -#: flatcamEditors/FlatCAMExcEditor.py:758 +#: flatcamEditors/FlatCAMExcEditor.py:792 flatcamGUI/FlatCAMGUI.py:5026 msgid "Excellon Editor" msgstr "Excellon Editor" -#: flatcamEditors/FlatCAMExcEditor.py:765 -#: flatcamEditors/FlatCAMGrbEditor.py:2250 +#: flatcamEditors/FlatCAMExcEditor.py:799 +#: flatcamEditors/FlatCAMGrbEditor.py:2266 msgid "Name:" msgstr "Name:" -#: flatcamEditors/FlatCAMExcEditor.py:771 flatcamTools/ToolNonCopperClear.py:72 +#: flatcamEditors/FlatCAMExcEditor.py:805 flatcamTools/ToolNonCopperClear.py:72 #: flatcamTools/ToolPaint.py:69 flatcamTools/ToolSolderPaste.py:70 msgid "Tools Table" msgstr "Werkzeugtabelle" -#: flatcamEditors/FlatCAMExcEditor.py:773 flatcamGUI/ObjectUI.py:538 +#: flatcamEditors/FlatCAMExcEditor.py:807 flatcamGUI/ObjectUI.py:538 msgid "" "Tools in this Excellon object\n" "when are used for drilling." @@ -1882,11 +1904,11 @@ msgstr "" "Werkzeuge in diesem Excellon-Objekt\n" "Wann werden zum Bohren verwendet." -#: flatcamEditors/FlatCAMExcEditor.py:793 +#: flatcamEditors/FlatCAMExcEditor.py:827 msgid "Add/Delete Tool" msgstr "Werkzeug hinzufügen / löschen" -#: flatcamEditors/FlatCAMExcEditor.py:795 +#: flatcamEditors/FlatCAMExcEditor.py:829 msgid "" "Add/Delete a tool to the tool list\n" "for this Excellon object." @@ -1894,19 +1916,20 @@ msgstr "" "Werkzeug zur Werkzeugliste hinzufügen / löschen\n" "für dieses Excellon-Objekt." -#: flatcamEditors/FlatCAMExcEditor.py:803 flatcamTools/ToolCutOut.py:77 +#: flatcamEditors/FlatCAMExcEditor.py:837 flatcamTools/ToolCutOut.py:77 msgid "Tool Dia:" msgstr "Werkzeugdurchmesser:" -#: flatcamEditors/FlatCAMExcEditor.py:805 flatcamGUI/ObjectUI.py:978 +#: flatcamEditors/FlatCAMExcEditor.py:839 flatcamGUI/FlatCAMGUI.py:5055 +#: flatcamGUI/ObjectUI.py:978 msgid "Diameter for the new tool" msgstr "Durchmesser für das neue Werkzeug" -#: flatcamEditors/FlatCAMExcEditor.py:814 +#: flatcamEditors/FlatCAMExcEditor.py:847 msgid "Add Tool" msgstr "Werkzeug hinzufügen" -#: flatcamEditors/FlatCAMExcEditor.py:816 +#: flatcamEditors/FlatCAMExcEditor.py:849 msgid "" "Add a new tool to the tool list\n" "with the diameter specified above." @@ -1914,11 +1937,11 @@ msgstr "" "Fügen Sie der Werkzeugliste ein neues Werkzeug hinzu\n" "mit dem oben angegebenen Durchmesser." -#: flatcamEditors/FlatCAMExcEditor.py:826 +#: flatcamEditors/FlatCAMExcEditor.py:861 msgid "Delete Tool" msgstr "Werkzeug löschen" -#: flatcamEditors/FlatCAMExcEditor.py:828 +#: flatcamEditors/FlatCAMExcEditor.py:863 msgid "" "Delete a tool in the tool list\n" "by selecting a row in the tool table." @@ -1926,40 +1949,40 @@ msgstr "" "Löschen Sie ein Werkzeug in der Werkzeugliste\n" "indem Sie eine Zeile in der Werkzeugtabelle auswählen." -#: flatcamEditors/FlatCAMExcEditor.py:846 +#: flatcamEditors/FlatCAMExcEditor.py:881 msgid "Resize Drill(s)" msgstr "Größe der Bohrer ändern" -#: flatcamEditors/FlatCAMExcEditor.py:848 +#: flatcamEditors/FlatCAMExcEditor.py:883 msgid "Resize a drill or a selection of drills." msgstr "Ändern Sie die Größe eines Bohrers oder einer Auswahl von Bohrern." -#: flatcamEditors/FlatCAMExcEditor.py:855 +#: flatcamEditors/FlatCAMExcEditor.py:890 msgid "Resize Dia:" msgstr "Durchmesser ändern:" -#: flatcamEditors/FlatCAMExcEditor.py:857 +#: flatcamEditors/FlatCAMExcEditor.py:892 msgid "Diameter to resize to." msgstr "Durchmesser zur Größenänderung." -#: flatcamEditors/FlatCAMExcEditor.py:865 +#: flatcamEditors/FlatCAMExcEditor.py:900 msgid "Resize" msgstr "Größe ändern" -#: flatcamEditors/FlatCAMExcEditor.py:867 +#: flatcamEditors/FlatCAMExcEditor.py:902 msgid "Resize drill(s)" msgstr "Bohrer verkleinern" -#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1615 +#: flatcamEditors/FlatCAMExcEditor.py:924 flatcamGUI/FlatCAMGUI.py:1612 msgid "Add Drill Array" msgstr "Bohrer-Array hinzufügen" -#: flatcamEditors/FlatCAMExcEditor.py:891 +#: flatcamEditors/FlatCAMExcEditor.py:926 msgid "Add an array of drills (linear or circular array)" msgstr "" "Hinzufügen eines Arrays von Bohrern (lineares oder kreisförmiges Array)" -#: flatcamEditors/FlatCAMExcEditor.py:897 +#: flatcamEditors/FlatCAMExcEditor.py:932 msgid "" "Select the type of drills array to create.\n" "It can be Linear X(Y) or Circular" @@ -1967,33 +1990,33 @@ msgstr "" "Wählen Sie den Typ des zu erstellenden Bohrfelds aus.\n" "Es kann lineares X (Y) oder rund sein" -#: flatcamEditors/FlatCAMExcEditor.py:900 -#: flatcamEditors/FlatCAMGrbEditor.py:2483 +#: flatcamEditors/FlatCAMExcEditor.py:935 +#: flatcamEditors/FlatCAMGrbEditor.py:2499 msgid "Linear" msgstr "Linear" -#: flatcamEditors/FlatCAMExcEditor.py:901 -#: flatcamEditors/FlatCAMGrbEditor.py:2484 +#: flatcamEditors/FlatCAMExcEditor.py:936 +#: flatcamEditors/FlatCAMGrbEditor.py:2500 msgid "Circular" msgstr "Kreisförmig" -#: flatcamEditors/FlatCAMExcEditor.py:908 +#: flatcamEditors/FlatCAMExcEditor.py:944 flatcamGUI/FlatCAMGUI.py:5065 msgid "Nr of drills:" msgstr "Anzahl der Bohrer:" -#: flatcamEditors/FlatCAMExcEditor.py:910 +#: flatcamEditors/FlatCAMExcEditor.py:946 flatcamGUI/FlatCAMGUI.py:5067 msgid "Specify how many drills to be in the array." msgstr "Geben Sie an, wie viele Drills im Array enthalten sein sollen." -#: flatcamEditors/FlatCAMExcEditor.py:927 -#: flatcamEditors/FlatCAMExcEditor.py:972 -#: flatcamEditors/FlatCAMGrbEditor.py:2510 -#: flatcamEditors/FlatCAMGrbEditor.py:2555 +#: flatcamEditors/FlatCAMExcEditor.py:964 +#: flatcamEditors/FlatCAMExcEditor.py:1010 +#: flatcamEditors/FlatCAMGrbEditor.py:2526 +#: flatcamEditors/FlatCAMGrbEditor.py:2571 msgid "Direction:" msgstr "Richtung:" -#: flatcamEditors/FlatCAMExcEditor.py:929 -#: flatcamEditors/FlatCAMGrbEditor.py:2512 +#: flatcamEditors/FlatCAMExcEditor.py:966 +#: flatcamEditors/FlatCAMGrbEditor.py:2528 flatcamGUI/FlatCAMGUI.py:5082 msgid "" "Direction on which the linear array is oriented:\n" "- 'X' - horizontal axis \n" @@ -2005,27 +2028,28 @@ msgstr "" "- 'Y' - vertikale Achse oder\n" "- 'Winkel' - ein benutzerdefinierter Winkel für die Neigung des Arrays" -#: flatcamEditors/FlatCAMExcEditor.py:942 -#: flatcamEditors/FlatCAMGrbEditor.py:2525 +#: flatcamEditors/FlatCAMExcEditor.py:979 +#: flatcamEditors/FlatCAMGrbEditor.py:2541 flatcamGUI/FlatCAMGUI.py:5096 msgid "Pitch:" msgstr "Abstand:" -#: flatcamEditors/FlatCAMExcEditor.py:944 -#: flatcamEditors/FlatCAMGrbEditor.py:2527 +#: flatcamEditors/FlatCAMExcEditor.py:981 +#: flatcamEditors/FlatCAMGrbEditor.py:2543 flatcamGUI/FlatCAMGUI.py:5098 msgid "Pitch = Distance between elements of the array." msgstr "Abstand = Abstand zwischen Elementen des Arrays." -#: flatcamEditors/FlatCAMExcEditor.py:951 -#: flatcamEditors/FlatCAMExcEditor.py:987 +#: flatcamEditors/FlatCAMExcEditor.py:989 +#: flatcamEditors/FlatCAMExcEditor.py:1024 #: flatcamEditors/FlatCAMGeoEditor.py:665 -#: flatcamEditors/FlatCAMGrbEditor.py:2534 -#: flatcamEditors/FlatCAMGrbEditor.py:2570 -#: flatcamEditors/FlatCAMGrbEditor.py:4558 flatcamTools/ToolTransform.py:68 +#: flatcamEditors/FlatCAMGrbEditor.py:2550 +#: flatcamEditors/FlatCAMGrbEditor.py:2586 +#: flatcamEditors/FlatCAMGrbEditor.py:4580 flatcamGUI/FlatCAMGUI.py:5107 +#: flatcamTools/ToolTransform.py:68 msgid "Angle:" msgstr "Winkel:" -#: flatcamEditors/FlatCAMExcEditor.py:953 -#: flatcamEditors/FlatCAMGrbEditor.py:2536 +#: flatcamEditors/FlatCAMExcEditor.py:991 +#: flatcamEditors/FlatCAMGrbEditor.py:2552 msgid "" "Angle at which the linear array is placed.\n" "The precision is of max 2 decimals.\n" @@ -2037,8 +2061,8 @@ msgstr "" "Der Mindestwert beträgt -359,99 Grad.\n" "Maximalwert ist: 360.00 Grad." -#: flatcamEditors/FlatCAMExcEditor.py:974 -#: flatcamEditors/FlatCAMGrbEditor.py:2557 +#: flatcamEditors/FlatCAMExcEditor.py:1012 +#: flatcamEditors/FlatCAMGrbEditor.py:2573 msgid "" "Direction for circular array.Can be CW = clockwise or CCW = counter " "clockwise." @@ -2046,13 +2070,14 @@ msgstr "" "Richtung für kreisförmige Anordnung. Kann CW = Uhrzeigersinn oder CCW = " "Gegenuhrzeigersinn sein." -#: flatcamEditors/FlatCAMExcEditor.py:989 -#: flatcamEditors/FlatCAMGrbEditor.py:2572 +#: flatcamEditors/FlatCAMExcEditor.py:1026 +#: flatcamEditors/FlatCAMGrbEditor.py:2588 flatcamGUI/FlatCAMGUI.py:5109 +#: flatcamGUI/FlatCAMGUI.py:5135 msgid "Angle at which each element in circular array is placed." msgstr "" "Winkel, um den jedes Element in einer kreisförmigen Anordnung platziert wird." -#: flatcamEditors/FlatCAMExcEditor.py:1452 +#: flatcamEditors/FlatCAMExcEditor.py:1487 msgid "" "[WARNING_NOTCL] Tool already in the original or actual tool list.\n" "Save and reedit Excellon if you need to add this tool. " @@ -2062,21 +2087,21 @@ msgstr "" "Speichern und korrigieren Sie Excellon, wenn Sie dieses Tool hinzufügen " "möchten." -#: flatcamEditors/FlatCAMExcEditor.py:1461 flatcamGUI/FlatCAMGUI.py:3002 +#: flatcamEditors/FlatCAMExcEditor.py:1496 flatcamGUI/FlatCAMGUI.py:2997 #, python-brace-format msgid "[success] Added new tool with dia: {dia} {units}" msgstr "[success] Neues Werkzeug mit Durchmesser hinzugefügt: {dia} {units}" -#: flatcamEditors/FlatCAMExcEditor.py:1493 +#: flatcamEditors/FlatCAMExcEditor.py:1528 msgid "[WARNING_NOTCL] Select a tool in Tool Table" msgstr "[WARNING_NOTCL] Wählen Sie ein Werkzeug in der Werkzeugtabelle aus" -#: flatcamEditors/FlatCAMExcEditor.py:1526 +#: flatcamEditors/FlatCAMExcEditor.py:1560 #, python-brace-format msgid "[success] Deleted tool with dia: {del_dia} {units}" msgstr "[success] Gelöschtes Werkzeug mit Durchmesser: {del_dia} {units}" -#: flatcamEditors/FlatCAMExcEditor.py:2038 +#: flatcamEditors/FlatCAMExcEditor.py:2074 msgid "" "[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon " "creation." @@ -2084,34 +2109,34 @@ msgstr "" "[ERROR_NOTCL] Die Datei enthält keine Werkzeugdefinitionen. Abbruch der " "Excellon-Erstellung." -#: flatcamEditors/FlatCAMExcEditor.py:2047 +#: flatcamEditors/FlatCAMExcEditor.py:2083 msgid "Creating Excellon." msgstr "Excellon erstellen." -#: flatcamEditors/FlatCAMExcEditor.py:2056 +#: flatcamEditors/FlatCAMExcEditor.py:2092 msgid "[success] Excellon editing finished." msgstr "[success] Excellon-Bearbeitung abgeschlossen." -#: flatcamEditors/FlatCAMExcEditor.py:2073 +#: flatcamEditors/FlatCAMExcEditor.py:2109 msgid "[WARNING_NOTCL] Cancelled. There is no Tool/Drill selected" msgstr "[WARNING_NOTCL] Abgebrochen. Es ist kein Werkzeug / Bohrer ausgewählt" -#: flatcamEditors/FlatCAMExcEditor.py:2605 +#: flatcamEditors/FlatCAMExcEditor.py:2637 msgid "[success] Done. Drill(s) deleted." msgstr "[success] Erledigt. Bohrer gelöscht." -#: flatcamEditors/FlatCAMExcEditor.py:2675 -#: flatcamEditors/FlatCAMGrbEditor.py:4318 +#: flatcamEditors/FlatCAMExcEditor.py:2705 +#: flatcamEditors/FlatCAMGrbEditor.py:4340 msgid "Click on the circular array Center position" msgstr "Klicken Sie auf die kreisförmige Anordnung in der Mitte" #: flatcamEditors/FlatCAMGeoEditor.py:80 -#: flatcamEditors/FlatCAMGrbEditor.py:2400 +#: flatcamEditors/FlatCAMGrbEditor.py:2416 msgid "Buffer distance:" msgstr "Pufferabstand:" #: flatcamEditors/FlatCAMGeoEditor.py:81 -#: flatcamEditors/FlatCAMGrbEditor.py:2401 +#: flatcamEditors/FlatCAMGrbEditor.py:2417 msgid "Buffer corner:" msgstr "Pufferecke:" @@ -2131,17 +2156,17 @@ msgstr "" "der Ecke treffen, direkt verbindet" #: flatcamEditors/FlatCAMGeoEditor.py:89 -#: flatcamEditors/FlatCAMGrbEditor.py:2409 +#: flatcamEditors/FlatCAMGrbEditor.py:2425 msgid "Round" msgstr "Runden" #: flatcamEditors/FlatCAMGeoEditor.py:90 -#: flatcamEditors/FlatCAMGrbEditor.py:2410 +#: flatcamEditors/FlatCAMGrbEditor.py:2426 msgid "Square" msgstr "Quadrat" #: flatcamEditors/FlatCAMGeoEditor.py:91 -#: flatcamEditors/FlatCAMGrbEditor.py:2411 +#: flatcamEditors/FlatCAMGrbEditor.py:2427 msgid "Beveled" msgstr "Abgeschrägt" @@ -2168,7 +2193,7 @@ msgstr "Pufferwerkzeug" #: flatcamEditors/FlatCAMGeoEditor.py:2700 #: flatcamEditors/FlatCAMGeoEditor.py:2726 #: flatcamEditors/FlatCAMGeoEditor.py:2752 -#: flatcamEditors/FlatCAMGrbEditor.py:4370 +#: flatcamEditors/FlatCAMGrbEditor.py:4392 msgid "" "[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and " "retry." @@ -2180,17 +2205,17 @@ msgstr "" msgid "Text Tool" msgstr "Textwerkzeug" -#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:808 +#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:803 msgid "Tool" msgstr "Werkzeug" -#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4058 -#: flatcamGUI/FlatCAMGUI.py:5455 flatcamGUI/FlatCAMGUI.py:5731 -#: flatcamGUI/FlatCAMGUI.py:5871 flatcamGUI/ObjectUI.py:260 +#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4054 +#: flatcamGUI/FlatCAMGUI.py:5618 flatcamGUI/FlatCAMGUI.py:5895 +#: flatcamGUI/FlatCAMGUI.py:6035 flatcamGUI/ObjectUI.py:260 msgid "Tool dia:" msgstr "Werkzeugdurchmesser:" -#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5873 +#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:6037 msgid "" "Diameter of the tool to\n" "be used in the operation." @@ -2198,8 +2223,8 @@ msgstr "" "Durchmesser des Werkzeugs bis\n" "in der Operation verwendet werden." -#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5637 -#: flatcamGUI/FlatCAMGUI.py:5882 flatcamTools/ToolNonCopperClear.py:165 +#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5801 +#: flatcamGUI/FlatCAMGUI.py:6046 flatcamTools/ToolNonCopperClear.py:165 #: flatcamTools/ToolPaint.py:160 msgid "Overlap Rate:" msgstr "Überlappungsrate:" @@ -2233,14 +2258,14 @@ msgstr "" "Höhere Werte = langsame Bearbeitung und langsame Ausführung auf CNC\n" "wegen zu vieler Wege." -#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5653 -#: flatcamGUI/FlatCAMGUI.py:5739 flatcamGUI/FlatCAMGUI.py:5892 +#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5817 +#: flatcamGUI/FlatCAMGUI.py:5903 flatcamGUI/FlatCAMGUI.py:6056 #: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:181 #: flatcamTools/ToolPaint.py:177 msgid "Margin:" msgstr "Marge:" -#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5894 +#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:6058 #: flatcamTools/ToolPaint.py:179 msgid "" "Distance by which to avoid\n" @@ -2251,13 +2276,13 @@ msgstr "" "die Kanten des Polygons bis\n" "gemalt werden." -#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5662 -#: flatcamGUI/FlatCAMGUI.py:5903 flatcamTools/ToolNonCopperClear.py:190 +#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5826 +#: flatcamGUI/FlatCAMGUI.py:6067 flatcamTools/ToolNonCopperClear.py:190 #: flatcamTools/ToolPaint.py:188 msgid "Method:" msgstr "Methode:" -#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5905 +#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:6069 msgid "" "Algorithm to paint the polygon:
Standard: Fixed step inwards." "
Seed-based: Outwards from seed." @@ -2265,14 +2290,14 @@ msgstr "" "Algorithmus zum Malen des Polygons:
Standard: Feststehender " "Schritt nach innen.
Samenbasiert: Aus dem Samen heraus." -#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5678 -#: flatcamGUI/FlatCAMGUI.py:5918 flatcamTools/ToolNonCopperClear.py:206 +#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5842 +#: flatcamGUI/FlatCAMGUI.py:6082 flatcamTools/ToolNonCopperClear.py:206 #: flatcamTools/ToolPaint.py:204 msgid "Connect:" msgstr "Verbinden:" -#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5680 -#: flatcamGUI/FlatCAMGUI.py:5920 flatcamTools/ToolNonCopperClear.py:208 +#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5844 +#: flatcamGUI/FlatCAMGUI.py:6084 flatcamTools/ToolNonCopperClear.py:208 #: flatcamTools/ToolPaint.py:206 msgid "" "Draw lines between resulting\n" @@ -2281,14 +2306,14 @@ msgstr "" "Zeichnen Sie Linien zwischen den Ergebnissen\n" "Segmente, um Werkzeuglifte zu minimieren." -#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5687 -#: flatcamGUI/FlatCAMGUI.py:5928 flatcamTools/ToolNonCopperClear.py:215 +#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5851 +#: flatcamGUI/FlatCAMGUI.py:6092 flatcamTools/ToolNonCopperClear.py:215 #: flatcamTools/ToolPaint.py:213 msgid "Contour:" msgstr "Kontur:" -#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5689 -#: flatcamGUI/FlatCAMGUI.py:5930 flatcamTools/ToolNonCopperClear.py:217 +#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5853 +#: flatcamGUI/FlatCAMGUI.py:6094 flatcamTools/ToolNonCopperClear.py:217 #: flatcamTools/ToolPaint.py:215 msgid "" "Cut around the perimeter of the polygon\n" @@ -2301,8 +2326,8 @@ msgstr "" msgid "Paint" msgstr "Malen" -#: flatcamEditors/FlatCAMGeoEditor.py:527 flatcamGUI/FlatCAMGUI.py:648 -#: flatcamGUI/FlatCAMGUI.py:1868 flatcamGUI/ObjectUI.py:1314 +#: flatcamEditors/FlatCAMGeoEditor.py:527 flatcamGUI/FlatCAMGUI.py:643 +#: flatcamGUI/FlatCAMGUI.py:1866 flatcamGUI/ObjectUI.py:1314 #: flatcamTools/ToolPaint.py:341 msgid "Paint Tool" msgstr "Werkzeug Malen" @@ -2346,53 +2371,53 @@ msgstr "Werkzeuge" #: flatcamEditors/FlatCAMGeoEditor.py:617 #: flatcamEditors/FlatCAMGeoEditor.py:990 -#: flatcamEditors/FlatCAMGrbEditor.py:4509 -#: flatcamEditors/FlatCAMGrbEditor.py:4894 flatcamGUI/FlatCAMGUI.py:659 -#: flatcamGUI/FlatCAMGUI.py:1881 flatcamTools/ToolTransform.py:398 +#: flatcamEditors/FlatCAMGrbEditor.py:4531 +#: flatcamEditors/FlatCAMGrbEditor.py:4916 flatcamGUI/FlatCAMGUI.py:654 +#: flatcamGUI/FlatCAMGUI.py:1879 flatcamTools/ToolTransform.py:398 msgid "Transform Tool" msgstr "Werkzeug Umwandeln" #: flatcamEditors/FlatCAMGeoEditor.py:618 #: flatcamEditors/FlatCAMGeoEditor.py:679 -#: flatcamEditors/FlatCAMGrbEditor.py:4510 -#: flatcamEditors/FlatCAMGrbEditor.py:4572 flatcamTools/ToolTransform.py:24 +#: flatcamEditors/FlatCAMGrbEditor.py:4532 +#: flatcamEditors/FlatCAMGrbEditor.py:4594 flatcamTools/ToolTransform.py:24 #: flatcamTools/ToolTransform.py:82 msgid "Rotate" msgstr "Drehen" #: flatcamEditors/FlatCAMGeoEditor.py:619 -#: flatcamEditors/FlatCAMGrbEditor.py:4511 flatcamTools/ToolTransform.py:25 +#: flatcamEditors/FlatCAMGrbEditor.py:4533 flatcamTools/ToolTransform.py:25 msgid "Skew/Shear" msgstr "Neigung/Schere" #: flatcamEditors/FlatCAMGeoEditor.py:620 -#: flatcamEditors/FlatCAMGrbEditor.py:2455 -#: flatcamEditors/FlatCAMGrbEditor.py:4512 flatcamGUI/FlatCAMGUI.py:723 -#: flatcamGUI/FlatCAMGUI.py:1949 flatcamGUI/ObjectUI.py:100 +#: flatcamEditors/FlatCAMGrbEditor.py:2471 +#: flatcamEditors/FlatCAMGrbEditor.py:4534 flatcamGUI/FlatCAMGUI.py:718 +#: flatcamGUI/FlatCAMGUI.py:1947 flatcamGUI/ObjectUI.py:100 #: flatcamTools/ToolTransform.py:26 msgid "Scale" msgstr "Skalieren" #: flatcamEditors/FlatCAMGeoEditor.py:621 -#: flatcamEditors/FlatCAMGrbEditor.py:4513 flatcamTools/ToolTransform.py:27 +#: flatcamEditors/FlatCAMGrbEditor.py:4535 flatcamTools/ToolTransform.py:27 msgid "Mirror (Flip)" msgstr "Spiegeln (Flip)" #: flatcamEditors/FlatCAMGeoEditor.py:622 -#: flatcamEditors/FlatCAMGrbEditor.py:4514 flatcamGUI/ObjectUI.py:127 -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamEditors/FlatCAMGrbEditor.py:4536 flatcamGUI/ObjectUI.py:127 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465 #: flatcamTools/ToolTransform.py:28 msgid "Offset" msgstr "Versatz" #: flatcamEditors/FlatCAMGeoEditor.py:633 -#: flatcamEditors/FlatCAMGrbEditor.py:4526 +#: flatcamEditors/FlatCAMGrbEditor.py:4548 #, python-format msgid "Editor %s" msgstr "Editor %s" #: flatcamEditors/FlatCAMGeoEditor.py:667 -#: flatcamEditors/FlatCAMGrbEditor.py:4560 flatcamTools/ToolTransform.py:70 +#: flatcamEditors/FlatCAMGrbEditor.py:4582 flatcamTools/ToolTransform.py:70 msgid "" "Angle for Rotation action, in degrees.\n" "Float number between -360 and 359.\n" @@ -2405,7 +2430,7 @@ msgstr "" "Negative Zahlen für CCW-Bewegung." #: flatcamEditors/FlatCAMGeoEditor.py:681 -#: flatcamEditors/FlatCAMGrbEditor.py:4574 +#: flatcamEditors/FlatCAMGrbEditor.py:4596 msgid "" "Rotate the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2416,14 +2441,14 @@ msgstr "" "der Begrenzungsrahmen für alle ausgewählten Formen." #: flatcamEditors/FlatCAMGeoEditor.py:704 -#: flatcamEditors/FlatCAMGrbEditor.py:4597 flatcamTools/ToolTransform.py:107 +#: flatcamEditors/FlatCAMGrbEditor.py:4619 flatcamTools/ToolTransform.py:107 msgid "Angle X:" msgstr "Winkel X:" #: flatcamEditors/FlatCAMGeoEditor.py:706 #: flatcamEditors/FlatCAMGeoEditor.py:724 -#: flatcamEditors/FlatCAMGrbEditor.py:4599 -#: flatcamEditors/FlatCAMGrbEditor.py:4617 flatcamTools/ToolTransform.py:109 +#: flatcamEditors/FlatCAMGrbEditor.py:4621 +#: flatcamEditors/FlatCAMGrbEditor.py:4639 flatcamTools/ToolTransform.py:109 #: flatcamTools/ToolTransform.py:127 msgid "" "Angle for Skew action, in degrees.\n" @@ -2433,14 +2458,14 @@ msgstr "" "Float-Nummer zwischen -360 und 359." #: flatcamEditors/FlatCAMGeoEditor.py:715 -#: flatcamEditors/FlatCAMGrbEditor.py:4608 flatcamTools/ToolTransform.py:118 +#: flatcamEditors/FlatCAMGrbEditor.py:4630 flatcamTools/ToolTransform.py:118 msgid "Skew X" msgstr "Neigung X" #: flatcamEditors/FlatCAMGeoEditor.py:717 #: flatcamEditors/FlatCAMGeoEditor.py:735 -#: flatcamEditors/FlatCAMGrbEditor.py:4610 -#: flatcamEditors/FlatCAMGrbEditor.py:4628 +#: flatcamEditors/FlatCAMGrbEditor.py:4632 +#: flatcamEditors/FlatCAMGrbEditor.py:4650 msgid "" "Skew/shear the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2451,34 +2476,34 @@ msgstr "" "der Begrenzungsrahmen für alle ausgewählten Formen." #: flatcamEditors/FlatCAMGeoEditor.py:722 -#: flatcamEditors/FlatCAMGrbEditor.py:4615 flatcamTools/ToolTransform.py:125 +#: flatcamEditors/FlatCAMGrbEditor.py:4637 flatcamTools/ToolTransform.py:125 msgid "Angle Y:" msgstr "Winkel Y:" #: flatcamEditors/FlatCAMGeoEditor.py:733 -#: flatcamEditors/FlatCAMGrbEditor.py:4626 flatcamTools/ToolTransform.py:136 +#: flatcamEditors/FlatCAMGrbEditor.py:4648 flatcamTools/ToolTransform.py:136 msgid "Skew Y" msgstr "Neigung Y" #: flatcamEditors/FlatCAMGeoEditor.py:761 -#: flatcamEditors/FlatCAMGrbEditor.py:4654 flatcamTools/ToolTransform.py:164 +#: flatcamEditors/FlatCAMGrbEditor.py:4676 flatcamTools/ToolTransform.py:164 msgid "Factor X:" msgstr "Faktor X:" #: flatcamEditors/FlatCAMGeoEditor.py:763 -#: flatcamEditors/FlatCAMGrbEditor.py:4656 flatcamTools/ToolTransform.py:166 +#: flatcamEditors/FlatCAMGrbEditor.py:4678 flatcamTools/ToolTransform.py:166 msgid "Factor for Scale action over X axis." msgstr "Faktor für die Skalierungsaktion über der X-Achse." #: flatcamEditors/FlatCAMGeoEditor.py:771 -#: flatcamEditors/FlatCAMGrbEditor.py:4664 flatcamTools/ToolTransform.py:174 +#: flatcamEditors/FlatCAMGrbEditor.py:4686 flatcamTools/ToolTransform.py:174 msgid "Scale X" msgstr "Maßstab X" #: flatcamEditors/FlatCAMGeoEditor.py:773 #: flatcamEditors/FlatCAMGeoEditor.py:790 -#: flatcamEditors/FlatCAMGrbEditor.py:4666 -#: flatcamEditors/FlatCAMGrbEditor.py:4683 +#: flatcamEditors/FlatCAMGrbEditor.py:4688 +#: flatcamEditors/FlatCAMGrbEditor.py:4705 msgid "" "Scale the selected shape(s).\n" "The point of reference depends on \n" @@ -2489,28 +2514,28 @@ msgstr "" "das Kontrollkästchen Skalenreferenz." #: flatcamEditors/FlatCAMGeoEditor.py:778 -#: flatcamEditors/FlatCAMGrbEditor.py:4671 flatcamTools/ToolTransform.py:181 +#: flatcamEditors/FlatCAMGrbEditor.py:4693 flatcamTools/ToolTransform.py:181 msgid "Factor Y:" msgstr "Faktor Y:" #: flatcamEditors/FlatCAMGeoEditor.py:780 -#: flatcamEditors/FlatCAMGrbEditor.py:4673 flatcamTools/ToolTransform.py:183 +#: flatcamEditors/FlatCAMGrbEditor.py:4695 flatcamTools/ToolTransform.py:183 msgid "Factor for Scale action over Y axis." msgstr "Faktor für die Skalierungsaktion über der Y-Achse." #: flatcamEditors/FlatCAMGeoEditor.py:788 -#: flatcamEditors/FlatCAMGrbEditor.py:4681 flatcamTools/ToolTransform.py:191 +#: flatcamEditors/FlatCAMGrbEditor.py:4703 flatcamTools/ToolTransform.py:191 msgid "Scale Y" msgstr "Maßstab Y" #: flatcamEditors/FlatCAMGeoEditor.py:797 -#: flatcamEditors/FlatCAMGrbEditor.py:4690 flatcamGUI/FlatCAMGUI.py:6277 +#: flatcamEditors/FlatCAMGrbEditor.py:4712 flatcamGUI/FlatCAMGUI.py:6441 #: flatcamTools/ToolTransform.py:200 msgid "Link" msgstr "Verknüpfung" #: flatcamEditors/FlatCAMGeoEditor.py:799 -#: flatcamEditors/FlatCAMGrbEditor.py:4692 +#: flatcamEditors/FlatCAMGrbEditor.py:4714 msgid "" "Scale the selected shape(s)\n" "using the Scale Factor X for both axis." @@ -2519,13 +2544,13 @@ msgstr "" "Verwenden des Skalierungsfaktors X für beide Achsen." #: flatcamEditors/FlatCAMGeoEditor.py:805 -#: flatcamEditors/FlatCAMGrbEditor.py:4698 flatcamGUI/FlatCAMGUI.py:6285 +#: flatcamEditors/FlatCAMGrbEditor.py:4720 flatcamGUI/FlatCAMGUI.py:6449 #: flatcamTools/ToolTransform.py:208 msgid "Scale Reference" msgstr "Skalenreferenz" #: flatcamEditors/FlatCAMGeoEditor.py:807 -#: flatcamEditors/FlatCAMGrbEditor.py:4700 +#: flatcamEditors/FlatCAMGrbEditor.py:4722 msgid "" "Scale the selected shape(s)\n" "using the origin reference when checked,\n" @@ -2538,24 +2563,24 @@ msgstr "" "der ausgewählten Formen, wenn nicht markiert." #: flatcamEditors/FlatCAMGeoEditor.py:835 -#: flatcamEditors/FlatCAMGrbEditor.py:4729 flatcamTools/ToolTransform.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:4751 flatcamTools/ToolTransform.py:238 msgid "Value X:" msgstr "Wert X:" #: flatcamEditors/FlatCAMGeoEditor.py:837 -#: flatcamEditors/FlatCAMGrbEditor.py:4731 flatcamTools/ToolTransform.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:4753 flatcamTools/ToolTransform.py:240 msgid "Value for Offset action on X axis." msgstr "Wert für die Offset-Aktion auf der X-Achse." #: flatcamEditors/FlatCAMGeoEditor.py:845 -#: flatcamEditors/FlatCAMGrbEditor.py:4739 flatcamTools/ToolTransform.py:248 +#: flatcamEditors/FlatCAMGrbEditor.py:4761 flatcamTools/ToolTransform.py:248 msgid "Offset X" msgstr "Versatz X" #: flatcamEditors/FlatCAMGeoEditor.py:847 #: flatcamEditors/FlatCAMGeoEditor.py:865 -#: flatcamEditors/FlatCAMGrbEditor.py:4741 -#: flatcamEditors/FlatCAMGrbEditor.py:4759 +#: flatcamEditors/FlatCAMGrbEditor.py:4763 +#: flatcamEditors/FlatCAMGrbEditor.py:4781 msgid "" "Offset the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2566,29 +2591,29 @@ msgstr "" "der Begrenzungsrahmen für alle ausgewählten Formen.\n" #: flatcamEditors/FlatCAMGeoEditor.py:853 -#: flatcamEditors/FlatCAMGrbEditor.py:4747 flatcamTools/ToolTransform.py:255 +#: flatcamEditors/FlatCAMGrbEditor.py:4769 flatcamTools/ToolTransform.py:255 msgid "Value Y:" msgstr "Wert Y:" #: flatcamEditors/FlatCAMGeoEditor.py:855 -#: flatcamEditors/FlatCAMGrbEditor.py:4749 flatcamTools/ToolTransform.py:257 +#: flatcamEditors/FlatCAMGrbEditor.py:4771 flatcamTools/ToolTransform.py:257 msgid "Value for Offset action on Y axis." msgstr "Wert für die Offset-Aktion auf der Y-Achse." #: flatcamEditors/FlatCAMGeoEditor.py:863 -#: flatcamEditors/FlatCAMGrbEditor.py:4757 flatcamTools/ToolTransform.py:265 +#: flatcamEditors/FlatCAMGrbEditor.py:4779 flatcamTools/ToolTransform.py:265 msgid "Offset Y" msgstr "Versatz Y" #: flatcamEditors/FlatCAMGeoEditor.py:894 -#: flatcamEditors/FlatCAMGrbEditor.py:4788 flatcamTools/ToolTransform.py:295 +#: flatcamEditors/FlatCAMGrbEditor.py:4810 flatcamTools/ToolTransform.py:295 msgid "Flip on X" msgstr "Flip auf X" #: flatcamEditors/FlatCAMGeoEditor.py:896 #: flatcamEditors/FlatCAMGeoEditor.py:904 -#: flatcamEditors/FlatCAMGrbEditor.py:4790 -#: flatcamEditors/FlatCAMGrbEditor.py:4798 +#: flatcamEditors/FlatCAMGrbEditor.py:4812 +#: flatcamEditors/FlatCAMGrbEditor.py:4820 msgid "" "Flip the selected shape(s) over the X axis.\n" "Does not create a new shape." @@ -2597,17 +2622,17 @@ msgstr "" "Erzeugt keine neue Form." #: flatcamEditors/FlatCAMGeoEditor.py:902 -#: flatcamEditors/FlatCAMGrbEditor.py:4796 flatcamTools/ToolTransform.py:303 +#: flatcamEditors/FlatCAMGrbEditor.py:4818 flatcamTools/ToolTransform.py:303 msgid "Flip on Y" msgstr "Flip auf Y" #: flatcamEditors/FlatCAMGeoEditor.py:911 -#: flatcamEditors/FlatCAMGrbEditor.py:4805 flatcamTools/ToolTransform.py:312 +#: flatcamEditors/FlatCAMGrbEditor.py:4827 flatcamTools/ToolTransform.py:312 msgid "Ref Pt" msgstr "Ref. Pt" #: flatcamEditors/FlatCAMGeoEditor.py:913 -#: flatcamEditors/FlatCAMGrbEditor.py:4807 +#: flatcamEditors/FlatCAMGrbEditor.py:4829 msgid "" "Flip the selected shape(s)\n" "around the point in Point Entry Field.\n" @@ -2631,12 +2656,12 @@ msgstr "" "Punkt-Eingabefeld und klicken Sie auf X (Y) drehen" #: flatcamEditors/FlatCAMGeoEditor.py:925 -#: flatcamEditors/FlatCAMGrbEditor.py:4819 flatcamTools/ToolTransform.py:325 +#: flatcamEditors/FlatCAMGrbEditor.py:4841 flatcamTools/ToolTransform.py:325 msgid "Point:" msgstr "Punkt:" #: flatcamEditors/FlatCAMGeoEditor.py:927 -#: flatcamEditors/FlatCAMGrbEditor.py:4821 +#: flatcamEditors/FlatCAMGrbEditor.py:4843 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" @@ -2648,7 +2673,7 @@ msgstr "" "Das 'y' in (x, y) wird verwendet, wenn Flip auf Y verwendet wird." #: flatcamEditors/FlatCAMGeoEditor.py:939 -#: flatcamEditors/FlatCAMGrbEditor.py:4833 flatcamTools/ToolTransform.py:339 +#: flatcamEditors/FlatCAMGrbEditor.py:4855 flatcamTools/ToolTransform.py:339 msgid "" "The point coordinates can be captured by\n" "left click on canvas together with pressing\n" @@ -2660,273 +2685,273 @@ msgstr "" "einzufügen." #: flatcamEditors/FlatCAMGeoEditor.py:1054 -#: flatcamEditors/FlatCAMGrbEditor.py:4958 +#: flatcamEditors/FlatCAMGrbEditor.py:4980 msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected." msgstr "[WARNING_NOTCL] Transformation abgebrochen Keine Form ausgewählt" #: flatcamEditors/FlatCAMGeoEditor.py:1075 -#: flatcamEditors/FlatCAMGrbEditor.py:4978 flatcamTools/ToolTransform.py:468 +#: flatcamEditors/FlatCAMGrbEditor.py:5000 flatcamTools/ToolTransform.py:468 msgid "[ERROR_NOTCL] Wrong value format entered for Rotate, use a number." msgstr "" "[ERROR_NOTCL] Falsches Werteformat für Drehen eingegeben, verwenden Sie eine " "Zahl." #: flatcamEditors/FlatCAMGeoEditor.py:1112 -#: flatcamEditors/FlatCAMGrbEditor.py:5021 flatcamTools/ToolTransform.py:502 +#: flatcamEditors/FlatCAMGrbEditor.py:5043 flatcamTools/ToolTransform.py:502 msgid "[ERROR_NOTCL] Wrong value format entered for Skew X, use a number." msgstr "" "[ERROR_NOTCL] Falsches Werteformat für Skew X eingegeben, verwenden Sie eine " "Zahl." #: flatcamEditors/FlatCAMGeoEditor.py:1133 -#: flatcamEditors/FlatCAMGrbEditor.py:5048 flatcamTools/ToolTransform.py:520 +#: flatcamEditors/FlatCAMGrbEditor.py:5070 flatcamTools/ToolTransform.py:520 msgid "[ERROR_NOTCL] Wrong value format entered for Skew Y, use a number." msgstr "" "[ERROR_NOTCL] Falsches Werteformat für Skew Y eingegeben, verwenden Sie eine " "Zahl." #: flatcamEditors/FlatCAMGeoEditor.py:1154 -#: flatcamEditors/FlatCAMGrbEditor.py:5075 flatcamTools/ToolTransform.py:538 +#: flatcamEditors/FlatCAMGrbEditor.py:5097 flatcamTools/ToolTransform.py:538 msgid "[ERROR_NOTCL] Wrong value format entered for Scale X, use a number." msgstr "" "[ERROR_NOTCL] Falsches Wertformat für Waage X eingegeben, verwenden Sie eine " "Zahl." #: flatcamEditors/FlatCAMGeoEditor.py:1191 -#: flatcamEditors/FlatCAMGrbEditor.py:5116 flatcamTools/ToolTransform.py:572 +#: flatcamEditors/FlatCAMGrbEditor.py:5138 flatcamTools/ToolTransform.py:572 msgid "[ERROR_NOTCL] Wrong value format entered for Scale Y, use a number." msgstr "" "[ERROR_NOTCL] Falsches Werteformat für Skala Y eingegeben, verwenden Sie " "eine Zahl." #: flatcamEditors/FlatCAMGeoEditor.py:1223 -#: flatcamEditors/FlatCAMGrbEditor.py:5154 flatcamTools/ToolTransform.py:601 +#: flatcamEditors/FlatCAMGrbEditor.py:5176 flatcamTools/ToolTransform.py:601 msgid "[ERROR_NOTCL] Wrong value format entered for Offset X, use a number." msgstr "" "[ERROR_NOTCL] Falsches Wertformat für Offset X eingegeben, verwenden Sie " "eine Zahl." #: flatcamEditors/FlatCAMGeoEditor.py:1244 -#: flatcamEditors/FlatCAMGrbEditor.py:5180 flatcamTools/ToolTransform.py:619 +#: flatcamEditors/FlatCAMGrbEditor.py:5202 flatcamTools/ToolTransform.py:619 msgid "[ERROR_NOTCL] Wrong value format entered for Offset Y, use a number." msgstr "" "[ERROR_NOTCL] Falsches Wertformat für Offset Y eingegeben, verwenden Sie " "eine Zahl." #: flatcamEditors/FlatCAMGeoEditor.py:1262 -#: flatcamEditors/FlatCAMGrbEditor.py:5203 +#: flatcamEditors/FlatCAMGrbEditor.py:5225 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!" msgstr "" "[WARNING_NOTCL] Keine Form ausgewählt Bitte wählen Sie eine Form zum Drehen " "aus!" #: flatcamEditors/FlatCAMGeoEditor.py:1265 -#: flatcamEditors/FlatCAMGrbEditor.py:5206 flatcamTools/ToolTransform.py:640 +#: flatcamEditors/FlatCAMGrbEditor.py:5228 flatcamTools/ToolTransform.py:640 msgid "Appying Rotate" msgstr "Anwenden Drehen" #: flatcamEditors/FlatCAMGeoEditor.py:1293 -#: flatcamEditors/FlatCAMGrbEditor.py:5237 +#: flatcamEditors/FlatCAMGrbEditor.py:5259 msgid "[success] Done. Rotate completed." msgstr "[success] Erledigt. Drehen abgeschlossen." #: flatcamEditors/FlatCAMGeoEditor.py:1309 -#: flatcamEditors/FlatCAMGrbEditor.py:5256 +#: flatcamEditors/FlatCAMGrbEditor.py:5278 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to flip!" msgstr "" "[WARNING_NOTCL] Keine Form ausgewählt Bitte wähle eine Form zum Umdrehen!" #: flatcamEditors/FlatCAMGeoEditor.py:1312 -#: flatcamEditors/FlatCAMGrbEditor.py:5259 flatcamTools/ToolTransform.py:691 +#: flatcamEditors/FlatCAMGrbEditor.py:5281 flatcamTools/ToolTransform.py:691 msgid "Applying Flip" msgstr "Flip anwenden" #: flatcamEditors/FlatCAMGeoEditor.py:1342 -#: flatcamEditors/FlatCAMGrbEditor.py:5296 flatcamTools/ToolTransform.py:733 +#: flatcamEditors/FlatCAMGrbEditor.py:5318 flatcamTools/ToolTransform.py:733 msgid "[success] Flip on the Y axis done ..." msgstr "[success] Flip auf der Y-Achse erledigt ..." #: flatcamEditors/FlatCAMGeoEditor.py:1345 -#: flatcamEditors/FlatCAMGrbEditor.py:5304 flatcamTools/ToolTransform.py:742 +#: flatcamEditors/FlatCAMGrbEditor.py:5326 flatcamTools/ToolTransform.py:742 msgid "[success] Flip on the X axis done ..." msgstr "[success] Flip auf der X-Achse erledigt ..." #: flatcamEditors/FlatCAMGeoEditor.py:1364 -#: flatcamEditors/FlatCAMGrbEditor.py:5324 +#: flatcamEditors/FlatCAMGrbEditor.py:5346 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!" msgstr "" "[WARNING_NOTCL] Keine Form ausgewählt. Bitte wählen Sie eine Form zum " "Scheren / Schrägstellen!" #: flatcamEditors/FlatCAMGeoEditor.py:1367 -#: flatcamEditors/FlatCAMGrbEditor.py:5327 flatcamTools/ToolTransform.py:760 +#: flatcamEditors/FlatCAMGrbEditor.py:5349 flatcamTools/ToolTransform.py:760 msgid "Applying Skew" msgstr "Anwenden von Skew" #: flatcamEditors/FlatCAMGeoEditor.py:1392 -#: flatcamEditors/FlatCAMGrbEditor.py:5360 flatcamTools/ToolTransform.py:791 +#: flatcamEditors/FlatCAMGrbEditor.py:5382 flatcamTools/ToolTransform.py:791 #, python-format msgid "[success] Skew on the %s axis done ..." msgstr "[success] Neigung auf der %s Achse abgeschlossen ..." #: flatcamEditors/FlatCAMGeoEditor.py:1396 -#: flatcamEditors/FlatCAMGrbEditor.py:5364 flatcamTools/ToolTransform.py:795 +#: flatcamEditors/FlatCAMGrbEditor.py:5386 flatcamTools/ToolTransform.py:795 #, python-format msgid "[ERROR_NOTCL] Due of %s, Skew action was not executed." msgstr "" "[ERROR_NOTCL] Aufgrund von %s wurde die Neigung-Aktion nicht ausgeführt." #: flatcamEditors/FlatCAMGeoEditor.py:1407 -#: flatcamEditors/FlatCAMGrbEditor.py:5383 +#: flatcamEditors/FlatCAMGrbEditor.py:5405 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to scale!" msgstr "" "[WARNING_NOTCL] Keine Form ausgewählt. Bitte wählen Sie eine zu skalierende " "Form!" #: flatcamEditors/FlatCAMGeoEditor.py:1410 -#: flatcamEditors/FlatCAMGrbEditor.py:5386 flatcamTools/ToolTransform.py:809 +#: flatcamEditors/FlatCAMGrbEditor.py:5408 flatcamTools/ToolTransform.py:809 msgid "Applying Scale" msgstr "Maßstab anwenden" #: flatcamEditors/FlatCAMGeoEditor.py:1443 -#: flatcamEditors/FlatCAMGrbEditor.py:5422 flatcamTools/ToolTransform.py:848 +#: flatcamEditors/FlatCAMGrbEditor.py:5444 flatcamTools/ToolTransform.py:848 #, python-format msgid "[success] Scale on the %s axis done ..." msgstr "[success] Skalieren auf der %s Achse fertig ..." #: flatcamEditors/FlatCAMGeoEditor.py:1446 -#: flatcamEditors/FlatCAMGrbEditor.py:5425 flatcamTools/ToolTransform.py:851 +#: flatcamEditors/FlatCAMGrbEditor.py:5447 flatcamTools/ToolTransform.py:851 #, python-format msgid "[ERROR_NOTCL] Due of %s, Scale action was not executed." msgstr "" "[ERROR_NOTCL] Aufgrund von %s wurde die Skalieren Aktion nicht ausgeführt." #: flatcamEditors/FlatCAMGeoEditor.py:1455 -#: flatcamEditors/FlatCAMGrbEditor.py:5438 +#: flatcamEditors/FlatCAMGrbEditor.py:5460 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to offset!" msgstr "" "[WARNING_NOTCL] Keine Form ausgewählt. Bitte wählen Sie eine Form zum " "Versetzen!" #: flatcamEditors/FlatCAMGeoEditor.py:1458 -#: flatcamEditors/FlatCAMGrbEditor.py:5441 flatcamTools/ToolTransform.py:861 +#: flatcamEditors/FlatCAMGrbEditor.py:5463 flatcamTools/ToolTransform.py:861 msgid "Applying Offset" msgstr "Offsetdruck anwenden" #: flatcamEditors/FlatCAMGeoEditor.py:1469 -#: flatcamEditors/FlatCAMGrbEditor.py:5462 flatcamTools/ToolTransform.py:880 +#: flatcamEditors/FlatCAMGrbEditor.py:5484 flatcamTools/ToolTransform.py:880 #, python-format msgid "[success] Offset on the %s axis done ..." msgstr "[success] Offsetdruck auf der %s Achse fertiggestellt ..." #: flatcamEditors/FlatCAMGeoEditor.py:1473 -#: flatcamEditors/FlatCAMGrbEditor.py:5466 flatcamTools/ToolTransform.py:884 +#: flatcamEditors/FlatCAMGrbEditor.py:5488 flatcamTools/ToolTransform.py:884 #, python-format msgid "[ERROR_NOTCL] Due of %s, Offset action was not executed." msgstr "" "[ERROR_NOTCL] Aufgrund von %s wurde die Offsetdruck Aktion nicht ausgeführt." #: flatcamEditors/FlatCAMGeoEditor.py:1477 -#: flatcamEditors/FlatCAMGrbEditor.py:5470 +#: flatcamEditors/FlatCAMGrbEditor.py:5492 msgid "Rotate ..." msgstr "Drehen ..." #: flatcamEditors/FlatCAMGeoEditor.py:1478 #: flatcamEditors/FlatCAMGeoEditor.py:1535 #: flatcamEditors/FlatCAMGeoEditor.py:1552 -#: flatcamEditors/FlatCAMGrbEditor.py:5471 -#: flatcamEditors/FlatCAMGrbEditor.py:5528 -#: flatcamEditors/FlatCAMGrbEditor.py:5545 +#: flatcamEditors/FlatCAMGrbEditor.py:5493 +#: flatcamEditors/FlatCAMGrbEditor.py:5550 +#: flatcamEditors/FlatCAMGrbEditor.py:5567 msgid "Enter an Angle Value (degrees):" msgstr "Geben Sie einen Winkelwert (Grad) ein:" #: flatcamEditors/FlatCAMGeoEditor.py:1487 -#: flatcamEditors/FlatCAMGrbEditor.py:5480 +#: flatcamEditors/FlatCAMGrbEditor.py:5502 msgid "[success] Geometry shape rotate done..." msgstr "[success] Geometrieform drehen fertig ..." #: flatcamEditors/FlatCAMGeoEditor.py:1492 -#: flatcamEditors/FlatCAMGrbEditor.py:5485 +#: flatcamEditors/FlatCAMGrbEditor.py:5507 msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..." msgstr "[WARNING_NOTCL] Geometrieform drehen abgebrochen ..." #: flatcamEditors/FlatCAMGeoEditor.py:1498 -#: flatcamEditors/FlatCAMGrbEditor.py:5491 +#: flatcamEditors/FlatCAMGrbEditor.py:5513 msgid "Offset on X axis ..." msgstr "Versatz auf der X-Achse ..." #: flatcamEditors/FlatCAMGeoEditor.py:1499 #: flatcamEditors/FlatCAMGeoEditor.py:1518 -#: flatcamEditors/FlatCAMGrbEditor.py:5492 -#: flatcamEditors/FlatCAMGrbEditor.py:5511 +#: flatcamEditors/FlatCAMGrbEditor.py:5514 +#: flatcamEditors/FlatCAMGrbEditor.py:5533 #, python-format msgid "Enter a distance Value (%s):" msgstr "Geben Sie einen Abstand ein (%s):" #: flatcamEditors/FlatCAMGeoEditor.py:1508 -#: flatcamEditors/FlatCAMGrbEditor.py:5501 +#: flatcamEditors/FlatCAMGrbEditor.py:5523 msgid "[success] Geometry shape offset on X axis done..." msgstr "[success] Geometrieformversatz auf der X-Achse erfolgt ..." #: flatcamEditors/FlatCAMGeoEditor.py:1512 -#: flatcamEditors/FlatCAMGrbEditor.py:5505 +#: flatcamEditors/FlatCAMGrbEditor.py:5527 msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..." msgstr "[WARNING_NOTCL] Geometrieformversatz X abgebrochen ..." #: flatcamEditors/FlatCAMGeoEditor.py:1517 -#: flatcamEditors/FlatCAMGrbEditor.py:5510 +#: flatcamEditors/FlatCAMGrbEditor.py:5532 msgid "Offset on Y axis ..." msgstr "Versatz auf der Y-Achse ..." #: flatcamEditors/FlatCAMGeoEditor.py:1527 -#: flatcamEditors/FlatCAMGrbEditor.py:5520 +#: flatcamEditors/FlatCAMGrbEditor.py:5542 msgid "[success] Geometry shape offset on Y axis done..." msgstr "[success] Geometrieformversatz auf Y-Achse erfolgt ..." #: flatcamEditors/FlatCAMGeoEditor.py:1531 -#: flatcamEditors/FlatCAMGrbEditor.py:5524 +#: flatcamEditors/FlatCAMGrbEditor.py:5546 msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..." msgstr "[WARNING_NOTCL] Geometrieformversatz Y abgebrochen ..." #: flatcamEditors/FlatCAMGeoEditor.py:1534 -#: flatcamEditors/FlatCAMGrbEditor.py:5527 +#: flatcamEditors/FlatCAMGrbEditor.py:5549 msgid "Skew on X axis ..." msgstr "Neigung auf der X-Achse ..." #: flatcamEditors/FlatCAMGeoEditor.py:1544 -#: flatcamEditors/FlatCAMGrbEditor.py:5537 +#: flatcamEditors/FlatCAMGrbEditor.py:5559 msgid "[success] Geometry shape skew on X axis done..." msgstr "[success] Geometrieformversatz auf X-Achse ..." #: flatcamEditors/FlatCAMGeoEditor.py:1548 -#: flatcamEditors/FlatCAMGrbEditor.py:5541 +#: flatcamEditors/FlatCAMGrbEditor.py:5563 msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..." msgstr "[WARNING_NOTCL] Geometrieformversatz X abgebrochen ..." #: flatcamEditors/FlatCAMGeoEditor.py:1551 -#: flatcamEditors/FlatCAMGrbEditor.py:5544 +#: flatcamEditors/FlatCAMGrbEditor.py:5566 msgid "Skew on Y axis ..." msgstr "Neigung auf der Y-Achse ..." #: flatcamEditors/FlatCAMGeoEditor.py:1561 -#: flatcamEditors/FlatCAMGrbEditor.py:5554 +#: flatcamEditors/FlatCAMGrbEditor.py:5576 msgid "[success] Geometry shape skew on Y axis done..." msgstr "[success] Geometrieformversatz auf Y-Achse erfolgt ..." #: flatcamEditors/FlatCAMGeoEditor.py:1565 -#: flatcamEditors/FlatCAMGrbEditor.py:5558 +#: flatcamEditors/FlatCAMGrbEditor.py:5580 msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..." msgstr "[WARNING_NOTCL] Geometrieformversatz Y abgebrochen ..." #: flatcamEditors/FlatCAMGeoEditor.py:1929 #: flatcamEditors/FlatCAMGeoEditor.py:1980 -#: flatcamEditors/FlatCAMGrbEditor.py:1354 -#: flatcamEditors/FlatCAMGrbEditor.py:1423 +#: flatcamEditors/FlatCAMGrbEditor.py:1361 +#: flatcamEditors/FlatCAMGrbEditor.py:1430 msgid "Click on Center point ..." msgstr "Klicken Sie auf Mittelpunkt." #: flatcamEditors/FlatCAMGeoEditor.py:1936 -#: flatcamEditors/FlatCAMGrbEditor.py:1362 +#: flatcamEditors/FlatCAMGrbEditor.py:1369 msgid "Click on Perimeter point to complete ..." msgstr "Klicken Sie auf Umfangspunkt, um den Vorgang abzuschließen." @@ -2935,53 +2960,53 @@ msgid "[success] Done. Adding Circle completed." msgstr "[success] Erledigt. Hinzufügen des Kreises abgeschlossen." #: flatcamEditors/FlatCAMGeoEditor.py:2000 -#: flatcamEditors/FlatCAMGrbEditor.py:1448 +#: flatcamEditors/FlatCAMGrbEditor.py:1462 msgid "Click on Start point ..." msgstr "Klicken Sie auf Startpunkt ..." #: flatcamEditors/FlatCAMGeoEditor.py:2002 -#: flatcamEditors/FlatCAMGrbEditor.py:1450 +#: flatcamEditors/FlatCAMGrbEditor.py:1464 msgid "Click on Point3 ..." msgstr "Klicken Sie auf Punkt3 ..." #: flatcamEditors/FlatCAMGeoEditor.py:2004 -#: flatcamEditors/FlatCAMGrbEditor.py:1452 +#: flatcamEditors/FlatCAMGrbEditor.py:1466 msgid "Click on Stop point ..." msgstr "Klicken Sie auf Haltepunkt ..." #: flatcamEditors/FlatCAMGeoEditor.py:2009 -#: flatcamEditors/FlatCAMGrbEditor.py:1457 +#: flatcamEditors/FlatCAMGrbEditor.py:1471 msgid "Click on Stop point to complete ..." msgstr "Klicken Sie auf Stopp, um den Vorgang abzuschließen." #: flatcamEditors/FlatCAMGeoEditor.py:2011 -#: flatcamEditors/FlatCAMGrbEditor.py:1459 +#: flatcamEditors/FlatCAMGrbEditor.py:1473 msgid "Click on Point2 to complete ..." msgstr "Klicken Sie auf Punkt2, um den Vorgang abzuschließen." #: flatcamEditors/FlatCAMGeoEditor.py:2013 -#: flatcamEditors/FlatCAMGrbEditor.py:1461 +#: flatcamEditors/FlatCAMGrbEditor.py:1475 msgid "Click on Center point to complete ..." msgstr "Klicken Sie auf Mittelpunkt, um den Vorgang abzuschließen." #: flatcamEditors/FlatCAMGeoEditor.py:2025 -#: flatcamEditors/FlatCAMGrbEditor.py:1473 +#: flatcamEditors/FlatCAMGrbEditor.py:1487 #, python-format msgid "Direction: %s" msgstr "Richtung: %s" #: flatcamEditors/FlatCAMGeoEditor.py:2035 -#: flatcamEditors/FlatCAMGrbEditor.py:1483 +#: flatcamEditors/FlatCAMGrbEditor.py:1497 msgid "Mode: Start -> Stop -> Center. Click on Start point ..." msgstr "Modus: Start -> Stopp -> Zentrieren. Klicken Sie auf Startpunkt ..." #: flatcamEditors/FlatCAMGeoEditor.py:2038 -#: flatcamEditors/FlatCAMGrbEditor.py:1486 +#: flatcamEditors/FlatCAMGrbEditor.py:1500 msgid "Mode: Point1 -> Point3 -> Point2. Click on Point1 ..." msgstr "Modus: Punkt 1 -> Punkt 3 -> Punkt 2. Klicken Sie auf Punkt1 ..." #: flatcamEditors/FlatCAMGeoEditor.py:2041 -#: flatcamEditors/FlatCAMGrbEditor.py:1489 +#: flatcamEditors/FlatCAMGrbEditor.py:1503 msgid "Mode: Center -> Start -> Stop. Click on Center point ..." msgstr "Modus: Mitte -> Start -> Stopp. Klicken Sie auf Mittelpunkt." @@ -3072,7 +3097,7 @@ msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected." msgstr "[WARNING_NOTCL] Puffer abgebrochen. Keine Form ausgewählt." #: flatcamEditors/FlatCAMGeoEditor.py:2711 -#: flatcamEditors/FlatCAMGrbEditor.py:4420 +#: flatcamEditors/FlatCAMGrbEditor.py:4442 msgid "[success] Done. Buffer Tool completed." msgstr "[success] Erledigt. Pufferwerkzeug abgeschlossen." @@ -3085,24 +3110,24 @@ msgid "[success] Done. Buffer Ext Tool completed." msgstr "[success] Erledigt. Außenpufferwerkzeug abgeschlossen." #: flatcamEditors/FlatCAMGeoEditor.py:2798 -#: flatcamEditors/FlatCAMGrbEditor.py:1969 +#: flatcamEditors/FlatCAMGrbEditor.py:1983 msgid "Select a shape to act as deletion area ..." msgstr "Wählen Sie eine Form als Löschbereich aus ..." #: flatcamEditors/FlatCAMGeoEditor.py:2800 #: flatcamEditors/FlatCAMGeoEditor.py:2819 #: flatcamEditors/FlatCAMGeoEditor.py:2825 -#: flatcamEditors/FlatCAMGrbEditor.py:1971 +#: flatcamEditors/FlatCAMGrbEditor.py:1985 msgid "Click to pick-up the erase shape..." msgstr "Klicken Sie, um die Löschform aufzunehmen ..." #: flatcamEditors/FlatCAMGeoEditor.py:2829 -#: flatcamEditors/FlatCAMGrbEditor.py:2028 +#: flatcamEditors/FlatCAMGrbEditor.py:2042 msgid "Click to erase ..." msgstr "Klicken zum Löschen ..." #: flatcamEditors/FlatCAMGeoEditor.py:2858 -#: flatcamEditors/FlatCAMGrbEditor.py:2059 +#: flatcamEditors/FlatCAMGrbEditor.py:2075 msgid "[success] Done. Eraser tool action completed." msgstr "[success] Erledigt. Radiergummi-Aktion abgeschlossen." @@ -3111,30 +3136,31 @@ msgid "Create Paint geometry ..." msgstr "Malen geometrie erstellen ..." #: flatcamEditors/FlatCAMGeoEditor.py:2915 -#: flatcamEditors/FlatCAMGrbEditor.py:2201 +#: flatcamEditors/FlatCAMGrbEditor.py:2217 msgid "Shape transformations ..." msgstr "Formtransformationen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:3419 +#: flatcamEditors/FlatCAMGeoEditor.py:3416 #, python-brace-format -msgid "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" +msgid "" +"[WARNING_NOTCL] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" msgstr "" -"[WARNING] Bearbeiten von MultiGeo-Geometrie, Werkzeug: {tool} mit " +"[WARNING_NOTCL] Bearbeiten von MultiGeo-Geometrie, Werkzeug: {tool} mit " "Durchmesser: {dia}" -#: flatcamEditors/FlatCAMGeoEditor.py:3796 +#: flatcamEditors/FlatCAMGeoEditor.py:3793 msgid "[WARNING_NOTCL] Copy cancelled. No shape selected." msgstr "[WARNING_NOTCL] Kopieren abgebrochen Keine Form ausgewählt" -#: flatcamEditors/FlatCAMGeoEditor.py:3803 flatcamGUI/FlatCAMGUI.py:2732 -#: flatcamGUI/FlatCAMGUI.py:2778 flatcamGUI/FlatCAMGUI.py:2796 -#: flatcamGUI/FlatCAMGUI.py:2927 flatcamGUI/FlatCAMGUI.py:2939 -#: flatcamGUI/FlatCAMGUI.py:2973 +#: flatcamEditors/FlatCAMGeoEditor.py:3800 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 "Klicken Sie auf den Zielpunkt." -#: flatcamEditors/FlatCAMGeoEditor.py:4047 -#: flatcamEditors/FlatCAMGeoEditor.py:4082 +#: flatcamEditors/FlatCAMGeoEditor.py:4044 +#: flatcamEditors/FlatCAMGeoEditor.py:4079 msgid "" "[WARNING_NOTCL] A selection of at least 2 geo items is required to do " "Intersection." @@ -3142,9 +3168,9 @@ msgstr "" "[WARNING_NOTCL] Eine Auswahl von mindestens 2 Geo-Elementen ist " "erforderlich, um die Kreuzung durchzuführen." -#: flatcamEditors/FlatCAMGeoEditor.py:4166 -#: flatcamEditors/FlatCAMGeoEditor.py:4204 -#: flatcamEditors/FlatCAMGeoEditor.py:4280 +#: flatcamEditors/FlatCAMGeoEditor.py:4163 +#: flatcamEditors/FlatCAMGeoEditor.py:4201 +#: flatcamEditors/FlatCAMGeoEditor.py:4277 msgid "" "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to " "generate an 'inside' shape" @@ -3152,54 +3178,54 @@ msgstr "" "[ERROR_NOTCL] Negativer Pufferwert wird nicht akzeptiert. Verwenden Sie den " "Pufferinnenraum, um eine Innenform zu erzeugen" -#: flatcamEditors/FlatCAMGeoEditor.py:4175 -#: flatcamEditors/FlatCAMGeoEditor.py:4213 -#: flatcamEditors/FlatCAMGeoEditor.py:4288 +#: flatcamEditors/FlatCAMGeoEditor.py:4172 +#: flatcamEditors/FlatCAMGeoEditor.py:4210 +#: flatcamEditors/FlatCAMGeoEditor.py:4285 msgid "[WARNING_NOTCL] Nothing selected for buffering." msgstr "[WARNING_NOTCL] Nichts ist für die Pufferung ausgewählt." -#: flatcamEditors/FlatCAMGeoEditor.py:4179 -#: flatcamEditors/FlatCAMGeoEditor.py:4217 -#: flatcamEditors/FlatCAMGeoEditor.py:4292 +#: flatcamEditors/FlatCAMGeoEditor.py:4176 +#: flatcamEditors/FlatCAMGeoEditor.py:4214 +#: flatcamEditors/FlatCAMGeoEditor.py:4289 msgid "[WARNING_NOTCL] Invalid distance for buffering." msgstr "[WARNING_NOTCL] Ungültige Entfernung für die Pufferung" -#: flatcamEditors/FlatCAMGeoEditor.py:4189 -#: flatcamEditors/FlatCAMGeoEditor.py:4301 +#: flatcamEditors/FlatCAMGeoEditor.py:4186 +#: flatcamEditors/FlatCAMGeoEditor.py:4298 msgid "" "[ERROR_NOTCL] Failed, the result is empty. Choose a different buffer value." msgstr "" "[ERROR_NOTCL] Fehlgeschlagen, das Ergebnis ist leer. Wählen Sie einen " "anderen Pufferwert." -#: flatcamEditors/FlatCAMGeoEditor.py:4197 +#: flatcamEditors/FlatCAMGeoEditor.py:4194 msgid "[success] Full buffer geometry created." msgstr "[success] Volle Puffergeometrie erstellt." -#: flatcamEditors/FlatCAMGeoEditor.py:4227 +#: flatcamEditors/FlatCAMGeoEditor.py:4224 msgid "" "[ERROR_NOTCL] Failed, the result is empty. Choose a smaller buffer value." msgstr "" "[ERROR_NOTCL] Fehlgeschlagen, das Ergebnis ist leer. Wählen Sie einen " "kleineren Pufferwert." -#: flatcamEditors/FlatCAMGeoEditor.py:4242 +#: flatcamEditors/FlatCAMGeoEditor.py:4239 msgid "[success] Interior buffer geometry created." msgstr "[success] Innere Puffergeometrie erstellt." -#: flatcamEditors/FlatCAMGeoEditor.py:4313 +#: flatcamEditors/FlatCAMGeoEditor.py:4310 msgid "[success] Exterior buffer geometry created." msgstr "[success] Außenpuffergeometrie erstellt." -#: flatcamEditors/FlatCAMGeoEditor.py:4377 +#: flatcamEditors/FlatCAMGeoEditor.py:4374 msgid "[WARNING_NOTCL] Nothing selected for painting." msgstr "[WARNING_NOTCL] Nichts zum Malen ausgewählt." -#: flatcamEditors/FlatCAMGeoEditor.py:4383 +#: flatcamEditors/FlatCAMGeoEditor.py:4380 msgid "[WARNING] Invalid value for {}" msgstr "[WARNING] Ungültiger Wert für {}" -#: flatcamEditors/FlatCAMGeoEditor.py:4389 +#: flatcamEditors/FlatCAMGeoEditor.py:4386 msgid "" "[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 " "(100%)." @@ -3207,7 +3233,7 @@ msgstr "" "[ERROR_NOTCL] Kann nicht Malen machen. Der Überlappungswert muss unter 1,00 " "(100%) liegen." -#: flatcamEditors/FlatCAMGeoEditor.py:4448 +#: flatcamEditors/FlatCAMGeoEditor.py:4445 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -3218,7 +3244,7 @@ msgstr "" "Kombination von Parametern. Oder eine andere Methode von Malen\n" "%s" -#: flatcamEditors/FlatCAMGeoEditor.py:4459 +#: flatcamEditors/FlatCAMGeoEditor.py:4456 msgid "[success] Paint done." msgstr "[success] Malen Sie fertig." @@ -3235,11 +3261,6 @@ msgid "" msgstr "" "[WARNING_NOTCL] Die Größe der Blende ist Null. Es muss größer als Null sein." -#: flatcamEditors/FlatCAMGrbEditor.py:229 -#: flatcamEditors/FlatCAMGrbEditor.py:234 -msgid "Click to place ..." -msgstr "Zum Platzieren klicken ..." - #: flatcamEditors/FlatCAMGrbEditor.py:357 #: flatcamEditors/FlatCAMGrbEditor.py:662 msgid "" @@ -3263,6 +3284,11 @@ msgstr "" msgid "Click on the Pad Circular Array Start position" msgstr "Klicken Sie auf die Startposition des Pad-Kreis-Arrays" +#: flatcamEditors/FlatCAMGrbEditor.py:497 +msgid "[ERROR_NOTCL] The value is mistyped. Check the value." +msgstr "" +"[ERROR_NOTCL] Der Wert ist falsch geschrieben. Überprüfen Sie den Wert." + #: flatcamEditors/FlatCAMGrbEditor.py:687 msgid "[WARNING_NOTCL] Too many Pads for the selected spacing angle." msgstr "[WARNING_NOTCL] Zu viele Pad für den ausgewählten Abstandswinkel." @@ -3354,78 +3380,78 @@ msgstr "Spurmodus 4: Um 90 Grad umkehren ..." msgid "Track Mode 5: Free angle ..." msgstr "Spurmodus 5: Freiwinkel ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1669 +#: flatcamEditors/FlatCAMGrbEditor.py:1683 msgid "Scale the selected Gerber apertures ..." msgstr "Skalieren Sie die ausgewählten Gerber-Öffnungen ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1711 +#: flatcamEditors/FlatCAMGrbEditor.py:1725 msgid "Buffer the selected apertures ..." msgstr "Die ausgewählten Öffnungen puffern ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1755 +#: flatcamEditors/FlatCAMGrbEditor.py:1769 msgid "[WARNING_NOTCL] Nothing selected to move ..." msgstr "[WARNING_NOTCL] Nichts zum Bewegen ausgewählt ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1878 +#: flatcamEditors/FlatCAMGrbEditor.py:1892 msgid "[success] Done. Apertures Move completed." msgstr "[success] Erledigt. Öffnungsbewegung abgeschlossen." -#: flatcamEditors/FlatCAMGrbEditor.py:1954 +#: flatcamEditors/FlatCAMGrbEditor.py:1968 msgid "[success] Done. Apertures copied." msgstr "[success] Erledigt. Blende kopiert." -#: flatcamEditors/FlatCAMGrbEditor.py:2243 flatcamGUI/FlatCAMGUI.py:1607 -#: flatcamGUI/FlatCAMGUI.py:4329 +#: flatcamEditors/FlatCAMGrbEditor.py:2259 flatcamGUI/FlatCAMGUI.py:1604 +#: flatcamGUI/FlatCAMGUI.py:4323 msgid "Gerber Editor" msgstr "Gerber-Editor" -#: flatcamEditors/FlatCAMGrbEditor.py:2262 flatcamGUI/ObjectUI.py:192 +#: flatcamEditors/FlatCAMGrbEditor.py:2278 flatcamGUI/ObjectUI.py:192 msgid "Apertures:" msgstr " Blenden: " -#: flatcamEditors/FlatCAMGrbEditor.py:2264 flatcamGUI/ObjectUI.py:194 +#: flatcamEditors/FlatCAMGrbEditor.py:2280 flatcamGUI/ObjectUI.py:194 msgid "Apertures Table for the Gerber Object." msgstr "Blendentabelle für das Gerberobjekt." -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 msgid "Code" msgstr "Code" -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465 msgid "Type" msgstr "Typ" -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 msgid "Size" msgstr "Größe" -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 msgid "Dim" msgstr "Maße" -#: flatcamEditors/FlatCAMGrbEditor.py:2279 flatcamGUI/ObjectUI.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:2295 flatcamGUI/ObjectUI.py:232 msgid "Index" msgstr "Index" -#: flatcamEditors/FlatCAMGrbEditor.py:2281 flatcamGUI/ObjectUI.py:234 +#: flatcamEditors/FlatCAMGrbEditor.py:2297 flatcamGUI/ObjectUI.py:234 msgid "Aperture Code" msgstr "Öffnungscode" -#: flatcamEditors/FlatCAMGrbEditor.py:2283 flatcamGUI/ObjectUI.py:236 +#: flatcamEditors/FlatCAMGrbEditor.py:2299 flatcamGUI/ObjectUI.py:236 msgid "Type of aperture: circular, rectangle, macros etc" msgstr "Öffnungsart: kreisförmig, rechteckig, Makros usw" -#: flatcamEditors/FlatCAMGrbEditor.py:2285 -#: flatcamEditors/FlatCAMGrbEditor.py:2318 flatcamGUI/ObjectUI.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:2301 +#: flatcamEditors/FlatCAMGrbEditor.py:2334 flatcamGUI/ObjectUI.py:238 msgid "Aperture Size:" msgstr "Öffnungsgröße:" -#: flatcamEditors/FlatCAMGrbEditor.py:2287 flatcamGUI/ObjectUI.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:2303 flatcamGUI/ObjectUI.py:240 msgid "" "Aperture Dimensions:\n" " - (width, height) for R, O type.\n" @@ -3435,15 +3461,15 @@ msgstr "" "  - (Breite, Höhe) für R, O-Typ.\n" "  - (dia, nVertices) für P-Typ" -#: flatcamEditors/FlatCAMGrbEditor.py:2308 +#: flatcamEditors/FlatCAMGrbEditor.py:2324 msgid "Aperture Code:" msgstr "Öffnungscode:" -#: flatcamEditors/FlatCAMGrbEditor.py:2310 +#: flatcamEditors/FlatCAMGrbEditor.py:2326 msgid "Code for the new aperture" msgstr "Code für die neue Blende" -#: flatcamEditors/FlatCAMGrbEditor.py:2320 +#: flatcamEditors/FlatCAMGrbEditor.py:2336 msgid "" "Size for the new aperture.\n" "If aperture type is 'R' or 'O' then\n" @@ -3457,11 +3483,11 @@ msgstr "" "berechnet als:\n" "Quadrat (Breite ** 2 + Höhe ** 2)" -#: flatcamEditors/FlatCAMGrbEditor.py:2332 +#: flatcamEditors/FlatCAMGrbEditor.py:2348 msgid "Aperture Type:" msgstr "Blendentyp:" -#: flatcamEditors/FlatCAMGrbEditor.py:2334 +#: flatcamEditors/FlatCAMGrbEditor.py:2350 msgid "" "Select the type of new aperture. Can be:\n" "C = circular\n" @@ -3473,11 +3499,11 @@ msgstr "" "R = rechteckig\n" "O = länglich" -#: flatcamEditors/FlatCAMGrbEditor.py:2345 +#: flatcamEditors/FlatCAMGrbEditor.py:2361 msgid "Aperture Dim:" msgstr "Öffnungsmaße:" -#: flatcamEditors/FlatCAMGrbEditor.py:2347 +#: flatcamEditors/FlatCAMGrbEditor.py:2363 msgid "" "Dimensions for the new aperture.\n" "Active only for rectangular apertures (type R).\n" @@ -3487,31 +3513,31 @@ msgstr "" "Aktiv nur für rechteckige Öffnungen (Typ R).\n" "Das Format ist (Breite, Höhe)" -#: flatcamEditors/FlatCAMGrbEditor.py:2356 +#: flatcamEditors/FlatCAMGrbEditor.py:2372 msgid "Add/Delete Aperture:" msgstr "Blende hinzufügen / löschen:" -#: flatcamEditors/FlatCAMGrbEditor.py:2358 +#: flatcamEditors/FlatCAMGrbEditor.py:2374 msgid "Add/Delete an aperture in the aperture table" msgstr "Eine Blende in der Blendentabelle hinzufügen / löschen" -#: flatcamEditors/FlatCAMGrbEditor.py:2367 +#: flatcamEditors/FlatCAMGrbEditor.py:2383 msgid "Add a new aperture to the aperture list." msgstr "Fügen Sie der Blendenliste eine neue Blende hinzu." -#: flatcamEditors/FlatCAMGrbEditor.py:2372 +#: flatcamEditors/FlatCAMGrbEditor.py:2388 msgid "Delete a aperture in the aperture list" msgstr "Löschen Sie eine Blende in der Blendenliste" -#: flatcamEditors/FlatCAMGrbEditor.py:2388 +#: flatcamEditors/FlatCAMGrbEditor.py:2404 msgid "Buffer Aperture:" msgstr "Pufferblende:" -#: flatcamEditors/FlatCAMGrbEditor.py:2390 +#: flatcamEditors/FlatCAMGrbEditor.py:2406 msgid "Buffer a aperture in the aperture list" msgstr "Puffern Sie eine Blende in der Blendenliste" -#: flatcamEditors/FlatCAMGrbEditor.py:2403 +#: flatcamEditors/FlatCAMGrbEditor.py:2419 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded.\n" @@ -3525,24 +3551,24 @@ msgstr "" "  - 'Abgeschrägt:' Die Ecke ist eine Linie, die die Features, die sich in " "der Ecke treffen, direkt verbindet" -#: flatcamEditors/FlatCAMGrbEditor.py:2418 flatcamGUI/FlatCAMGUI.py:722 -#: flatcamGUI/FlatCAMGUI.py:1948 +#: flatcamEditors/FlatCAMGrbEditor.py:2434 flatcamGUI/FlatCAMGUI.py:717 +#: flatcamGUI/FlatCAMGUI.py:1946 msgid "Buffer" msgstr "Puffer" -#: flatcamEditors/FlatCAMGrbEditor.py:2432 +#: flatcamEditors/FlatCAMGrbEditor.py:2448 msgid "Scale Aperture:" msgstr "Skalenöffnung:" -#: flatcamEditors/FlatCAMGrbEditor.py:2434 +#: flatcamEditors/FlatCAMGrbEditor.py:2450 msgid "Scale a aperture in the aperture list" msgstr "Skalieren Sie eine Blende in der Blendenliste" -#: flatcamEditors/FlatCAMGrbEditor.py:2442 +#: flatcamEditors/FlatCAMGrbEditor.py:2458 msgid "Scale factor:" msgstr "Skalierungsfaktor:" -#: flatcamEditors/FlatCAMGrbEditor.py:2444 +#: flatcamEditors/FlatCAMGrbEditor.py:2460 msgid "" "The factor by which to scale the selected aperture.\n" "Values can be between 0.0000 and 999.9999" @@ -3550,16 +3576,16 @@ msgstr "" "Der Faktor, um den die ausgewählte Blende skaliert werden soll.\n" "Die Werte können zwischen 0,0000 und 999,9999 liegen" -#: flatcamEditors/FlatCAMGrbEditor.py:2472 flatcamGUI/FlatCAMGUI.py:712 -#: flatcamGUI/FlatCAMGUI.py:1938 +#: flatcamEditors/FlatCAMGrbEditor.py:2488 flatcamGUI/FlatCAMGUI.py:707 +#: flatcamGUI/FlatCAMGUI.py:1936 msgid "Add Pad Array" msgstr "Pad-Array hinzufügen" -#: flatcamEditors/FlatCAMGrbEditor.py:2474 +#: flatcamEditors/FlatCAMGrbEditor.py:2490 msgid "Add an array of pads (linear or circular array)" msgstr "Hinzufügen eines Arrays von Pads (lineares oder kreisförmiges Array)" -#: flatcamEditors/FlatCAMGrbEditor.py:2480 +#: flatcamEditors/FlatCAMGrbEditor.py:2496 msgid "" "Select the type of pads array to create.\n" "It can be Linear X(Y) or Circular" @@ -3567,16 +3593,16 @@ msgstr "" "Wählen Sie den zu erstellenden Pad-Array-Typ aus.\n" "Es kann lineares X (Y) oder rund sein" -#: flatcamEditors/FlatCAMGrbEditor.py:2491 +#: flatcamEditors/FlatCAMGrbEditor.py:2507 msgid "Nr of pads:" msgstr "Anzahl der Pads:" -#: flatcamEditors/FlatCAMGrbEditor.py:2493 +#: flatcamEditors/FlatCAMGrbEditor.py:2509 msgid "Specify how many pads to be in the array." msgstr "Geben Sie an, wie viele Pads sich im Array befinden sollen." -#: flatcamEditors/FlatCAMGrbEditor.py:2970 -#: flatcamEditors/FlatCAMGrbEditor.py:2974 +#: flatcamEditors/FlatCAMGrbEditor.py:2986 +#: flatcamEditors/FlatCAMGrbEditor.py:2990 msgid "" "[WARNING_NOTCL] Aperture code value is missing or wrong format. Add it and " "retry." @@ -3584,7 +3610,7 @@ msgstr "" "[WARNING_NOTCL] Blendencodewert fehlt oder falsches Format. Fügen Sie es " "hinzu und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGrbEditor.py:3010 +#: flatcamEditors/FlatCAMGrbEditor.py:3026 msgid "" "[WARNING_NOTCL] Aperture dimensions value is missing or wrong format. Add it " "in format (width, height) and retry." @@ -3592,7 +3618,7 @@ msgstr "" "[WARNING_NOTCL] Wert für Blendenmaße fehlt oder falsches Format. Fügen Sie " "es im Format (Breite, Höhe) hinzu und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGrbEditor.py:3022 +#: flatcamEditors/FlatCAMGrbEditor.py:3038 msgid "" "[WARNING_NOTCL] Aperture size value is missing or wrong format. Add it and " "retry." @@ -3600,35 +3626,35 @@ msgstr "" "[WARNING_NOTCL] Blendengrößenwert fehlt oder falsches Format. Fügen Sie es " "hinzu und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGrbEditor.py:3033 +#: flatcamEditors/FlatCAMGrbEditor.py:3049 msgid "[WARNING_NOTCL] Aperture already in the aperture table." msgstr "[WARNING_NOTCL] Blende bereits in der Blendentabelle." -#: flatcamEditors/FlatCAMGrbEditor.py:3040 +#: flatcamEditors/FlatCAMGrbEditor.py:3056 #, python-brace-format msgid "[success] Added new aperture with code: {apid}" msgstr "[success] Neue Blende mit Code hinzugefügt: {apid}" -#: flatcamEditors/FlatCAMGrbEditor.py:3068 +#: flatcamEditors/FlatCAMGrbEditor.py:3084 msgid "[WARNING_NOTCL] Select an aperture in Aperture Table" msgstr "[WARNING_NOTCL] Wählen Sie in Blende Table eine Blende aus" -#: flatcamEditors/FlatCAMGrbEditor.py:3074 +#: flatcamEditors/FlatCAMGrbEditor.py:3090 #, python-format msgid "[WARNING_NOTCL] Select an aperture in Aperture Table --> %s" msgstr "[WARNING_NOTCL] Wählen Sie in Blende Table eine Blende aus --> %s" -#: flatcamEditors/FlatCAMGrbEditor.py:3097 +#: flatcamEditors/FlatCAMGrbEditor.py:3113 #, python-brace-format msgid "[success] Deleted aperture with code: {del_dia}" msgstr "[success] Blende mit Code gelöscht: {del_dia}" -#: flatcamEditors/FlatCAMGrbEditor.py:3517 +#: flatcamEditors/FlatCAMGrbEditor.py:3533 #, python-format msgid "Adding aperture: %s geo ..." msgstr "Blende hinzufügen:%s geo ..." -#: flatcamEditors/FlatCAMGrbEditor.py:3696 +#: flatcamEditors/FlatCAMGrbEditor.py:3718 msgid "" "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber " "creation." @@ -3636,32 +3662,32 @@ msgstr "" "[ERROR_NOTCL] Die Datei enthält keine Aperture-Definitionen. Abbruch der " "Gerber-Erstellung." -#: flatcamEditors/FlatCAMGrbEditor.py:3699 +#: flatcamEditors/FlatCAMGrbEditor.py:3721 msgid "[ERROR] An internal error has occurred. See shell.\n" msgstr "[ERROR] Ein interner Fehler ist aufgetreten. Siehe Shell.\n" -#: flatcamEditors/FlatCAMGrbEditor.py:3704 +#: flatcamEditors/FlatCAMGrbEditor.py:3726 msgid "Creating Gerber." msgstr "Gerber erstellen." -#: flatcamEditors/FlatCAMGrbEditor.py:3712 +#: flatcamEditors/FlatCAMGrbEditor.py:3734 msgid "[success] Gerber editing finished." msgstr "[success] Gerber-Bearbeitung ist beendet." -#: flatcamEditors/FlatCAMGrbEditor.py:3728 +#: flatcamEditors/FlatCAMGrbEditor.py:3750 msgid "[WARNING_NOTCL] Cancelled. No aperture is selected" msgstr "[WARNING_NOTCL] Abgebrochen. Es ist keine Blende ausgewählt" -#: flatcamEditors/FlatCAMGrbEditor.py:4248 +#: flatcamEditors/FlatCAMGrbEditor.py:4270 msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected." msgstr "" "[ERROR_NOTCL] ist fehlgeschlagen. Es ist keine Blendengeometrie ausgewählt." -#: flatcamEditors/FlatCAMGrbEditor.py:4256 +#: flatcamEditors/FlatCAMGrbEditor.py:4278 msgid "[success] Done. Apertures geometry deleted." msgstr "[success] Fertig. Blendengeometrie gelöscht." -#: flatcamEditors/FlatCAMGrbEditor.py:4405 +#: flatcamEditors/FlatCAMGrbEditor.py:4427 msgid "" "[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try " "again." @@ -3669,7 +3695,7 @@ msgstr "" "[WARNING_NOTCL] Keine Blende zum Puffern Wählen Sie mindestens eine Blende " "und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGrbEditor.py:4434 +#: flatcamEditors/FlatCAMGrbEditor.py:4456 msgid "" "[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and " "retry." @@ -3677,7 +3703,7 @@ msgstr "" "[WARNING_NOTCL] Der Skalierungsfaktor ist nicht vorhanden oder das Format " "ist falsch. Fügen Sie es hinzu und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGrbEditor.py:4464 +#: flatcamEditors/FlatCAMGrbEditor.py:4486 msgid "" "[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try " "again." @@ -3685,7 +3711,7 @@ msgstr "" "[WARNING_NOTCL] Keine zu skalierende Blende Wählen Sie mindestens eine " "Blende und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGrbEditor.py:4480 +#: flatcamEditors/FlatCAMGrbEditor.py:4502 msgid "[success] Done. Scale Tool completed." msgstr "[success] Erledigt. Skalierungswerkzeug abgeschlossen." @@ -3862,47 +3888,47 @@ msgstr "" msgid "Save &Defaults" msgstr "Standardeinstellungen speichern" -#: flatcamGUI/FlatCAMGUI.py:205 flatcamGUI/FlatCAMGUI.py:533 +#: flatcamGUI/FlatCAMGUI.py:205 flatcamGUI/FlatCAMGUI.py:528 msgid "Save" msgstr "Speichern" -#: flatcamGUI/FlatCAMGUI.py:207 +#: flatcamGUI/FlatCAMGUI.py:208 msgid "&Save Project ..." msgstr "Projekt speichern ..." -#: flatcamGUI/FlatCAMGUI.py:212 +#: flatcamGUI/FlatCAMGUI.py:213 msgid "Save Project &As ...\tCTRL+S" msgstr "Projekt speichern als ...\tCTRL+S" -#: flatcamGUI/FlatCAMGUI.py:216 +#: flatcamGUI/FlatCAMGUI.py:217 msgid "Save Project C&opy ..." msgstr "Projektkopie speichern ..." -#: flatcamGUI/FlatCAMGUI.py:224 +#: flatcamGUI/FlatCAMGUI.py:225 msgid "E&xit" msgstr "Ausgang" -#: flatcamGUI/FlatCAMGUI.py:230 +#: flatcamGUI/FlatCAMGUI.py:231 msgid "&Edit" msgstr "Bearbeiten" -#: flatcamGUI/FlatCAMGUI.py:233 +#: flatcamGUI/FlatCAMGUI.py:234 msgid "Edit Object\tE" msgstr "Objekt bearbeiten\tE" -#: flatcamGUI/FlatCAMGUI.py:234 +#: flatcamGUI/FlatCAMGUI.py:235 msgid "Close Editor\tCTRL+S" msgstr "Schließen Sie Editor\tSTRG+S" -#: flatcamGUI/FlatCAMGUI.py:242 +#: flatcamGUI/FlatCAMGUI.py:243 msgid "Conversion" msgstr "Umwandlung" -#: flatcamGUI/FlatCAMGUI.py:244 +#: flatcamGUI/FlatCAMGUI.py:245 msgid "&Join Geo/Gerber/Exc -> Geo" msgstr "Beitreten Geo/Gerber/Exc -> Geo" -#: flatcamGUI/FlatCAMGUI.py:246 +#: flatcamGUI/FlatCAMGUI.py:247 msgid "" "Merge a selection of objects, which can be of type:\n" "- Gerber\n" @@ -3916,31 +3942,31 @@ msgstr "" "- Geometrie\n" "in ein neues Geometrieobjekt kombinieren." -#: flatcamGUI/FlatCAMGUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:254 msgid "Join Excellon(s) -> Excellon" msgstr "Beitreten Excellon(s) -> Excellon" -#: flatcamGUI/FlatCAMGUI.py:255 +#: flatcamGUI/FlatCAMGUI.py:256 msgid "Merge a selection of Excellon objects into a new combo Excellon object." msgstr "" "Fassen Sie eine Auswahl von Excellon-Objekten in einem neuen Excellon-Objekt " "zusammen." -#: flatcamGUI/FlatCAMGUI.py:258 +#: flatcamGUI/FlatCAMGUI.py:259 msgid "Join Gerber(s) -> Gerber" msgstr "Beitreten Gerber(s) -> Gerber" -#: flatcamGUI/FlatCAMGUI.py:260 +#: flatcamGUI/FlatCAMGUI.py:261 msgid "Merge a selection of Gerber objects into a new combo Gerber object." msgstr "" "Mischen Sie eine Auswahl von Gerber-Objekten in ein neues Gerber-" "Kombinationsobjekt." -#: flatcamGUI/FlatCAMGUI.py:265 +#: flatcamGUI/FlatCAMGUI.py:266 msgid "Convert Single to MultiGeo" msgstr "Konvertieren Sie Single in MultiGeo" -#: flatcamGUI/FlatCAMGUI.py:267 +#: flatcamGUI/FlatCAMGUI.py:268 msgid "" "Will convert a Geometry object from single_geometry type\n" "to a multi_geometry type." @@ -3948,11 +3974,11 @@ msgstr "" "Konvertiert ein Geometrieobjekt vom Typ single_geometry\n" "zu einem multi_geometry-Typ." -#: flatcamGUI/FlatCAMGUI.py:271 +#: flatcamGUI/FlatCAMGUI.py:272 msgid "Convert Multi to SingleGeo" msgstr "Konvertieren Sie Multi in SingleGeo" -#: flatcamGUI/FlatCAMGUI.py:273 +#: flatcamGUI/FlatCAMGUI.py:274 msgid "" "Will convert a Geometry object from multi_geometry type\n" "to a single_geometry type." @@ -3960,123 +3986,123 @@ msgstr "" "Konvertiert ein Geometrieobjekt vom Typ multi_geometry\n" "zu einem single_geometry-Typ." -#: flatcamGUI/FlatCAMGUI.py:279 +#: flatcamGUI/FlatCAMGUI.py:280 msgid "Convert Any to Geo" msgstr "Konvertieren Sie Any zu Geo" -#: flatcamGUI/FlatCAMGUI.py:281 +#: flatcamGUI/FlatCAMGUI.py:282 msgid "Convert Any to Gerber" msgstr "Konvertieren Sie Any zu Gerber" -#: flatcamGUI/FlatCAMGUI.py:286 +#: flatcamGUI/FlatCAMGUI.py:287 msgid "&Copy\tCTRL+C" msgstr "Kopieren\tSTRG+C" -#: flatcamGUI/FlatCAMGUI.py:290 +#: flatcamGUI/FlatCAMGUI.py:291 msgid "&Delete\tDEL" msgstr "Löschen\tDEL" -#: flatcamGUI/FlatCAMGUI.py:294 +#: flatcamGUI/FlatCAMGUI.py:295 msgid "Se&t Origin\tO" msgstr "Ursprung festlegen\tO" -#: flatcamGUI/FlatCAMGUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:296 msgid "Jump to Location\tJ" msgstr "Zum Ort springen\tJ" -#: flatcamGUI/FlatCAMGUI.py:300 +#: flatcamGUI/FlatCAMGUI.py:301 msgid "Toggle Units\tQ" msgstr "Einheiten umschalten\tQ" -#: flatcamGUI/FlatCAMGUI.py:302 +#: flatcamGUI/FlatCAMGUI.py:303 msgid "&Select All\tCTRL+A" msgstr "Wählen Sie Alle\tSTRG+A" -#: flatcamGUI/FlatCAMGUI.py:306 +#: flatcamGUI/FlatCAMGUI.py:307 msgid "&Preferences\tSHIFT+P" msgstr "Einstellungen\tSHIFT+P" -#: flatcamGUI/FlatCAMGUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:310 msgid "&Options" msgstr "&Optionen" -#: flatcamGUI/FlatCAMGUI.py:324 +#: flatcamGUI/FlatCAMGUI.py:325 msgid "&Rotate Selection\tSHIFT+(R)" msgstr "Auswahl drehen\tSHIFT+(R)" -#: flatcamGUI/FlatCAMGUI.py:329 +#: flatcamGUI/FlatCAMGUI.py:330 msgid "&Skew on X axis\tSHIFT+X" msgstr "Neigung auf der X-Achse\tSHIFT+X" -#: flatcamGUI/FlatCAMGUI.py:331 +#: flatcamGUI/FlatCAMGUI.py:332 msgid "S&kew on Y axis\tSHIFT+Y" msgstr "Neigung auf der Y-Achse\tSHIFT+Y" -#: flatcamGUI/FlatCAMGUI.py:336 +#: flatcamGUI/FlatCAMGUI.py:337 msgid "Flip on &X axis\tX" msgstr "X-Achse kippen\tX" -#: flatcamGUI/FlatCAMGUI.py:338 +#: flatcamGUI/FlatCAMGUI.py:339 msgid "Flip on &Y axis\tY" msgstr "Y-Achse kippen\tY" -#: flatcamGUI/FlatCAMGUI.py:343 +#: flatcamGUI/FlatCAMGUI.py:344 msgid "View source\tALT+S" msgstr "Quelltext anzeigen\tALT+S" -#: flatcamGUI/FlatCAMGUI.py:348 +#: flatcamGUI/FlatCAMGUI.py:349 msgid "&View" msgstr "&Blick" -#: flatcamGUI/FlatCAMGUI.py:349 +#: flatcamGUI/FlatCAMGUI.py:350 msgid "Enable all plots\tALT+1" msgstr "Aktivieren Sie alle Diagramme\tALT+1" -#: flatcamGUI/FlatCAMGUI.py:351 +#: flatcamGUI/FlatCAMGUI.py:352 msgid "Disable all plots\tALT+2" msgstr "Deaktivieren Sie alle Diagramme\tALT+2" -#: flatcamGUI/FlatCAMGUI.py:353 +#: flatcamGUI/FlatCAMGUI.py:354 msgid "Disable non-selected\tALT+3" msgstr "Deaktivieren Sie nicht ausgewählt\tALT+3" -#: flatcamGUI/FlatCAMGUI.py:356 +#: flatcamGUI/FlatCAMGUI.py:357 msgid "&Zoom Fit\tV" msgstr "Zoomen passen\tV" -#: flatcamGUI/FlatCAMGUI.py:357 +#: flatcamGUI/FlatCAMGUI.py:358 msgid "&Zoom In\t-" msgstr "Hineinzoomen\t-" -#: flatcamGUI/FlatCAMGUI.py:358 +#: flatcamGUI/FlatCAMGUI.py:359 msgid "&Zoom Out\t=" msgstr "Rauszoomen\t=" -#: flatcamGUI/FlatCAMGUI.py:362 +#: flatcamGUI/FlatCAMGUI.py:363 msgid "Toggle Code Editor\tCTRL+E" msgstr "Code-Editor umschalten\tSTRG+E" -#: flatcamGUI/FlatCAMGUI.py:365 +#: flatcamGUI/FlatCAMGUI.py:366 msgid "&Toggle FullScreen\tALT+F10" msgstr "FullScreen umschalten\tALT+F10" -#: flatcamGUI/FlatCAMGUI.py:367 +#: flatcamGUI/FlatCAMGUI.py:368 msgid "&Toggle Plot Area\tCTRL+F10" msgstr "Plotbereich umschalten\tSTRG+F10" -#: flatcamGUI/FlatCAMGUI.py:369 +#: flatcamGUI/FlatCAMGUI.py:370 msgid "&Toggle Project/Sel/Tool\t`" msgstr "Projekt/Auswahl/Werkzeug umschalten\t`" -#: flatcamGUI/FlatCAMGUI.py:372 +#: flatcamGUI/FlatCAMGUI.py:373 msgid "&Toggle Grid Snap\tG" msgstr "Schaltet den Rasterfang ein\tG" -#: flatcamGUI/FlatCAMGUI.py:374 +#: flatcamGUI/FlatCAMGUI.py:375 msgid "&Toggle Axis\tSHIFT+G" msgstr "Achse umschalten\tSHIFT+G" -#: flatcamGUI/FlatCAMGUI.py:377 +#: flatcamGUI/FlatCAMGUI.py:378 msgid "Toggle Workspace\tSHIFT+W" msgstr "Arbeitsbereich umschalten\tSHIFT+W" @@ -4112,442 +4138,442 @@ msgstr "Youtube Kanal\tF4" msgid "About" msgstr "Über" -#: flatcamGUI/FlatCAMGUI.py:405 +#: flatcamGUI/FlatCAMGUI.py:401 msgid "Add Circle\tO" msgstr "Kreis hinzufügen\tO" -#: flatcamGUI/FlatCAMGUI.py:407 +#: flatcamGUI/FlatCAMGUI.py:403 msgid "Add Arc\tA" msgstr "Bogen hinzufügen\tA" -#: flatcamGUI/FlatCAMGUI.py:410 +#: flatcamGUI/FlatCAMGUI.py:406 msgid "Add Rectangle\tR" msgstr "Rechteck hinzufügen\tR" -#: flatcamGUI/FlatCAMGUI.py:413 +#: flatcamGUI/FlatCAMGUI.py:409 msgid "Add Polygon\tN" msgstr "Polygon hinzufügen\tN" -#: flatcamGUI/FlatCAMGUI.py:415 +#: flatcamGUI/FlatCAMGUI.py:411 msgid "Add Path\tP" msgstr "Pfad hinzufügen\tP" -#: flatcamGUI/FlatCAMGUI.py:417 +#: flatcamGUI/FlatCAMGUI.py:413 msgid "Add Text\tT" msgstr "Text hinzufügen\tT" -#: flatcamGUI/FlatCAMGUI.py:420 +#: flatcamGUI/FlatCAMGUI.py:416 msgid "Polygon Union\tU" msgstr "Polygon-Vereinigung\tU" -#: flatcamGUI/FlatCAMGUI.py:422 +#: flatcamGUI/FlatCAMGUI.py:418 msgid "Polygon Intersection\tE" msgstr "Polygonschnitt\tE" -#: flatcamGUI/FlatCAMGUI.py:424 +#: flatcamGUI/FlatCAMGUI.py:420 msgid "Polygon Subtraction\tS" msgstr "Polygon-Subtraktion\tS" -#: flatcamGUI/FlatCAMGUI.py:428 +#: flatcamGUI/FlatCAMGUI.py:424 msgid "Cut Path\tX" msgstr "Pfad ausschneiden\tX" -#: flatcamGUI/FlatCAMGUI.py:430 +#: flatcamGUI/FlatCAMGUI.py:426 msgid "Copy Geom\tC" msgstr "Geometrie kopieren\tC" -#: flatcamGUI/FlatCAMGUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:428 msgid "Delete Shape\tDEL" msgstr "Form löschen\tDEL" -#: flatcamGUI/FlatCAMGUI.py:435 flatcamGUI/FlatCAMGUI.py:508 +#: flatcamGUI/FlatCAMGUI.py:431 flatcamGUI/FlatCAMGUI.py:503 msgid "Move\tM" msgstr "Bewegung\tM" -#: flatcamGUI/FlatCAMGUI.py:437 +#: flatcamGUI/FlatCAMGUI.py:433 msgid "Buffer Tool\tB" msgstr "Pufferwerkzeug\tB" -#: flatcamGUI/FlatCAMGUI.py:440 +#: flatcamGUI/FlatCAMGUI.py:436 msgid "Paint Tool\tI" msgstr "Malenwerkzeug\tI" -#: flatcamGUI/FlatCAMGUI.py:443 +#: flatcamGUI/FlatCAMGUI.py:439 msgid "Transform Tool\tALT+R" msgstr "Transformationswerkzeug\tALT+R" -#: flatcamGUI/FlatCAMGUI.py:447 +#: flatcamGUI/FlatCAMGUI.py:443 msgid "Toggle Corner Snap\tK" msgstr "Eckfang umschalten\tK" -#: flatcamGUI/FlatCAMGUI.py:450 +#: flatcamGUI/FlatCAMGUI.py:446 msgid ">Excellon Editor<" msgstr ">Excellon Editor<" -#: flatcamGUI/FlatCAMGUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:450 msgid "Add Drill Array\tA" msgstr "Bohrfeld hinzufügen\tA" -#: flatcamGUI/FlatCAMGUI.py:456 +#: flatcamGUI/FlatCAMGUI.py:452 msgid "Add Drill\tD" msgstr "Bohrer hinzufügen\tD" -#: flatcamGUI/FlatCAMGUI.py:460 +#: flatcamGUI/FlatCAMGUI.py:456 msgid "Resize Drill(S)\tR" msgstr "Bohrer verkleinern\tR" -#: flatcamGUI/FlatCAMGUI.py:462 flatcamGUI/FlatCAMGUI.py:501 +#: flatcamGUI/FlatCAMGUI.py:458 flatcamGUI/FlatCAMGUI.py:496 msgid "Copy\tC" msgstr "Kopieren\tC" -#: flatcamGUI/FlatCAMGUI.py:464 flatcamGUI/FlatCAMGUI.py:503 +#: flatcamGUI/FlatCAMGUI.py:460 flatcamGUI/FlatCAMGUI.py:498 msgid "Delete\tDEL" msgstr "Löschen\tDEL" -#: flatcamGUI/FlatCAMGUI.py:469 +#: flatcamGUI/FlatCAMGUI.py:465 msgid "Move Drill(s)\tM" msgstr "Bohrer verschieben\tM" -#: flatcamGUI/FlatCAMGUI.py:473 +#: flatcamGUI/FlatCAMGUI.py:468 msgid ">Gerber Editor<" msgstr ">Gerber-Editor<" -#: flatcamGUI/FlatCAMGUI.py:477 +#: flatcamGUI/FlatCAMGUI.py:472 msgid "Add Pad\tP" msgstr "Pad hinzufügen\tP" -#: flatcamGUI/FlatCAMGUI.py:479 +#: flatcamGUI/FlatCAMGUI.py:474 msgid "Add Pad Array\tA" msgstr "Pad-Array hinzufügen\tA" -#: flatcamGUI/FlatCAMGUI.py:481 +#: flatcamGUI/FlatCAMGUI.py:476 msgid "Add Track\tT" msgstr "Track hinzufügen\tA" -#: flatcamGUI/FlatCAMGUI.py:483 +#: flatcamGUI/FlatCAMGUI.py:478 msgid "Add Region\tN" msgstr "Region hinzufügen\tN" -#: flatcamGUI/FlatCAMGUI.py:487 +#: flatcamGUI/FlatCAMGUI.py:482 msgid "Poligonize\tALT+N" msgstr "Polygonisieren\tALT+N" -#: flatcamGUI/FlatCAMGUI.py:489 +#: flatcamGUI/FlatCAMGUI.py:484 msgid "Add SemiDisc\tE" msgstr "Halbschibe hinzufügen\tE" -#: flatcamGUI/FlatCAMGUI.py:491 +#: flatcamGUI/FlatCAMGUI.py:486 msgid "Add Disc\tD" msgstr "Schibe hinzufügen\tD" -#: flatcamGUI/FlatCAMGUI.py:493 +#: flatcamGUI/FlatCAMGUI.py:488 msgid "Buffer\tB" msgstr "Puffer\tB" -#: flatcamGUI/FlatCAMGUI.py:495 +#: flatcamGUI/FlatCAMGUI.py:490 msgid "Scale\tS" msgstr "Skalieren\tS" -#: flatcamGUI/FlatCAMGUI.py:497 +#: flatcamGUI/FlatCAMGUI.py:492 msgid "Transform\tALT+R" msgstr "Transformationswerkzeug\tSTRG+R" -#: flatcamGUI/FlatCAMGUI.py:524 +#: flatcamGUI/FlatCAMGUI.py:519 msgid "Enable Plot" msgstr "Diagramm aktivieren" -#: flatcamGUI/FlatCAMGUI.py:525 +#: flatcamGUI/FlatCAMGUI.py:520 flatcamGUI/FlatCAMGUI.py:1577 msgid "Disable Plot" msgstr "Diagramm deaktivieren" -#: flatcamGUI/FlatCAMGUI.py:527 +#: flatcamGUI/FlatCAMGUI.py:522 msgid "Generate CNC" msgstr "CNC generieren" -#: flatcamGUI/FlatCAMGUI.py:528 +#: flatcamGUI/FlatCAMGUI.py:523 msgid "View Source" msgstr "Quelltext anzeigen" -#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1620 +#: flatcamGUI/FlatCAMGUI.py:525 flatcamGUI/FlatCAMGUI.py:1617 msgid "Edit" msgstr "Bearbeiten" -#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1626 +#: flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:1623 #: flatcamTools/ToolProperties.py:25 msgid "Properties" msgstr "Eigenschaften" -#: flatcamGUI/FlatCAMGUI.py:565 +#: flatcamGUI/FlatCAMGUI.py:560 msgid "File Toolbar" msgstr "Dateisymbolleiste" -#: flatcamGUI/FlatCAMGUI.py:569 +#: flatcamGUI/FlatCAMGUI.py:564 msgid "Edit Toolbar" msgstr "Symbolleiste bearbeiten" -#: flatcamGUI/FlatCAMGUI.py:573 +#: flatcamGUI/FlatCAMGUI.py:568 msgid "View Toolbar" msgstr "Symbolleiste anzeigen" -#: flatcamGUI/FlatCAMGUI.py:577 +#: flatcamGUI/FlatCAMGUI.py:572 msgid "Shell Toolbar" msgstr "Shell-Symbolleiste" -#: flatcamGUI/FlatCAMGUI.py:581 +#: flatcamGUI/FlatCAMGUI.py:576 msgid "Tools Toolbar" msgstr "Werkzeugleiste" -#: flatcamGUI/FlatCAMGUI.py:585 +#: flatcamGUI/FlatCAMGUI.py:580 msgid "Excellon Editor Toolbar" msgstr "Excellon Editor-Symbolleiste" -#: flatcamGUI/FlatCAMGUI.py:589 +#: flatcamGUI/FlatCAMGUI.py:584 msgid "Geometry Editor Toolbar" msgstr "Geometrie Editor-Symbolleiste" -#: flatcamGUI/FlatCAMGUI.py:593 +#: flatcamGUI/FlatCAMGUI.py:588 msgid "Gerber Editor Toolbar" msgstr "Gerber Editor-Symbolleiste" -#: flatcamGUI/FlatCAMGUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:592 msgid "Grid Toolbar" msgstr "Raster-Symbolleiste" -#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1837 +#: flatcamGUI/FlatCAMGUI.py:611 flatcamGUI/FlatCAMGUI.py:1835 msgid "Open project" msgstr "Offenes Projekt" -#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1838 +#: flatcamGUI/FlatCAMGUI.py:612 flatcamGUI/FlatCAMGUI.py:1836 msgid "Save project" msgstr "Projekt speichern" -#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1841 +#: flatcamGUI/FlatCAMGUI.py:615 flatcamGUI/FlatCAMGUI.py:1839 msgid "New Blank Geometry" msgstr "Neue leere Geometrie" -#: flatcamGUI/FlatCAMGUI.py:621 +#: flatcamGUI/FlatCAMGUI.py:616 msgid "New Blank Gerber" msgstr "Neue leere Gerber" -#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1842 +#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1840 msgid "New Blank Excellon" msgstr "Neuer unbelegter Excellon" -#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1844 +#: flatcamGUI/FlatCAMGUI.py:619 flatcamGUI/FlatCAMGUI.py:1842 msgid "Editor" msgstr "Editor" -#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1846 +#: flatcamGUI/FlatCAMGUI.py:621 flatcamGUI/FlatCAMGUI.py:1844 msgid "Save Object and close the Editor" msgstr "Speichern Sie das Objekt und schließen Sie den Editor" -#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1850 +#: flatcamGUI/FlatCAMGUI.py:625 flatcamGUI/FlatCAMGUI.py:1848 msgid "&Delete" msgstr "&Löschen" -#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1853 +#: flatcamGUI/FlatCAMGUI.py:628 flatcamGUI/FlatCAMGUI.py:1851 msgid "&Replot" msgstr "&Replotieren" -#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1854 +#: flatcamGUI/FlatCAMGUI.py:629 flatcamGUI/FlatCAMGUI.py:1852 msgid "&Clear plot" msgstr "&Plot klar löschen" -#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1855 +#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1853 msgid "Zoom In" msgstr "Hineinzoomen" -#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1856 +#: flatcamGUI/FlatCAMGUI.py:631 flatcamGUI/FlatCAMGUI.py:1854 msgid "Zoom Out" msgstr "Rauszoomen" -#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1595 -#: flatcamGUI/FlatCAMGUI.py:1857 +#: flatcamGUI/FlatCAMGUI.py:632 flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1855 msgid "Zoom Fit" msgstr "Passenzoomen" -#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1862 +#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1860 msgid "&Command Line" msgstr "Befehlszeile" -#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1865 +#: flatcamGUI/FlatCAMGUI.py:640 flatcamGUI/FlatCAMGUI.py:1863 msgid "2Sided Tool" msgstr "2Seitiges Werkzeug" -#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1866 +#: flatcamGUI/FlatCAMGUI.py:641 flatcamGUI/FlatCAMGUI.py:1864 msgid "&Cutout Tool" msgstr "Ausschnittwerkzeug" -#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1867 +#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1865 #: flatcamGUI/ObjectUI.py:392 flatcamTools/ToolNonCopperClear.py:285 msgid "NCC Tool" msgstr "NCC Werkzeug" -#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1871 +#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1869 msgid "Panel Tool" msgstr "Platte Werkzeug" -#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1872 +#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1870 #: flatcamTools/ToolFilm.py:204 msgid "Film Tool" msgstr "Filmwerkzeug" -#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1874 +#: flatcamGUI/FlatCAMGUI.py:648 flatcamGUI/FlatCAMGUI.py:1872 msgid "SolderPaste Tool" msgstr "Lötpaste-Werkzeug" -#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1875 +#: flatcamGUI/FlatCAMGUI.py:649 flatcamGUI/FlatCAMGUI.py:1873 #: flatcamTools/ToolSub.py:26 msgid "Substract Tool" msgstr "Abziehen Werkzeug " -#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1880 +#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1878 msgid "Calculators Tool" msgstr "Rechnerwerkzeug" -#: flatcamGUI/FlatCAMGUI.py:662 flatcamGUI/FlatCAMGUI.py:676 -#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1884 -#: flatcamGUI/FlatCAMGUI.py:1936 +#: flatcamGUI/FlatCAMGUI.py:657 flatcamGUI/FlatCAMGUI.py:671 +#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:1882 +#: flatcamGUI/FlatCAMGUI.py:1934 msgid "Select" msgstr "Wählen" -#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1885 +#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1883 msgid "Add Drill Hole" msgstr "Bohrloch hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1887 +#: flatcamGUI/FlatCAMGUI.py:660 flatcamGUI/FlatCAMGUI.py:1885 msgid "Add Drill Hole Array" msgstr "Bohrlochfeld hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1888 +#: flatcamGUI/FlatCAMGUI.py:661 flatcamGUI/FlatCAMGUI.py:1886 msgid "Resize Drill" msgstr "Bohrergröße ändern" -#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1891 +#: flatcamGUI/FlatCAMGUI.py:664 flatcamGUI/FlatCAMGUI.py:1889 msgid "Copy Drill" msgstr "Bohrer kopieren" -#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1893 +#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1891 msgid "Delete Drill" msgstr "Bohrer löschen" -#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1896 +#: flatcamGUI/FlatCAMGUI.py:668 flatcamGUI/FlatCAMGUI.py:1894 msgid "Move Drill" msgstr "Bohrer bewegen" -#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1900 +#: flatcamGUI/FlatCAMGUI.py:672 flatcamGUI/FlatCAMGUI.py:1898 msgid "Add Circle" msgstr "Kreis hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1901 +#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1899 msgid "Add Arc" msgstr "Bogen hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1903 +#: flatcamGUI/FlatCAMGUI.py:675 flatcamGUI/FlatCAMGUI.py:1901 msgid "Add Rectangle" msgstr "Rechteck hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1906 +#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1904 msgid "Add Path" msgstr "Pfad hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1908 +#: flatcamGUI/FlatCAMGUI.py:679 flatcamGUI/FlatCAMGUI.py:1906 msgid "Add Polygon" msgstr "Polygon hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1910 +#: flatcamGUI/FlatCAMGUI.py:681 flatcamGUI/FlatCAMGUI.py:1908 msgid "Add Text" msgstr "Text hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1912 +#: flatcamGUI/FlatCAMGUI.py:682 flatcamGUI/FlatCAMGUI.py:1910 msgid "Add Buffer" msgstr "Puffer hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1913 +#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1911 msgid "Paint Shape" msgstr "Malen Form" -#: flatcamGUI/FlatCAMGUI.py:689 flatcamGUI/FlatCAMGUI.py:724 -#: flatcamGUI/FlatCAMGUI.py:1914 flatcamGUI/FlatCAMGUI.py:1950 +#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:719 +#: flatcamGUI/FlatCAMGUI.py:1912 flatcamGUI/FlatCAMGUI.py:1948 msgid "Eraser" msgstr "Radiergummi" -#: flatcamGUI/FlatCAMGUI.py:692 flatcamGUI/FlatCAMGUI.py:1918 +#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1916 msgid "Polygon Union" msgstr "Polygon-Vereinigung" -#: flatcamGUI/FlatCAMGUI.py:694 flatcamGUI/FlatCAMGUI.py:1920 +#: flatcamGUI/FlatCAMGUI.py:689 flatcamGUI/FlatCAMGUI.py:1918 msgid "Polygon Intersection" msgstr "Polygonschnitt" -#: flatcamGUI/FlatCAMGUI.py:696 flatcamGUI/FlatCAMGUI.py:1922 +#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:1920 msgid "Polygon Subtraction" msgstr "Polygon-Subtraktion" -#: flatcamGUI/FlatCAMGUI.py:699 flatcamGUI/FlatCAMGUI.py:1925 +#: flatcamGUI/FlatCAMGUI.py:694 flatcamGUI/FlatCAMGUI.py:1923 msgid "Cut Path" msgstr "Pfad ausschneiden" -#: flatcamGUI/FlatCAMGUI.py:700 +#: flatcamGUI/FlatCAMGUI.py:695 msgid "Copy Shape(s)" msgstr "Form kopieren" -#: flatcamGUI/FlatCAMGUI.py:703 +#: flatcamGUI/FlatCAMGUI.py:698 msgid "Delete Shape '-'" msgstr "Form löschen" -#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:731 -#: flatcamGUI/FlatCAMGUI.py:1930 flatcamGUI/FlatCAMGUI.py:1957 +#: flatcamGUI/FlatCAMGUI.py:700 flatcamGUI/FlatCAMGUI.py:726 +#: flatcamGUI/FlatCAMGUI.py:1928 flatcamGUI/FlatCAMGUI.py:1955 msgid "Transformations" msgstr "Transformationen" -#: flatcamGUI/FlatCAMGUI.py:707 +#: flatcamGUI/FlatCAMGUI.py:702 msgid "Move Objects " msgstr "Objekte verschieben " -#: flatcamGUI/FlatCAMGUI.py:711 flatcamGUI/FlatCAMGUI.py:1937 +#: flatcamGUI/FlatCAMGUI.py:706 flatcamGUI/FlatCAMGUI.py:1935 msgid "Add Pad" msgstr "Pad hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1939 +#: flatcamGUI/FlatCAMGUI.py:708 flatcamGUI/FlatCAMGUI.py:1937 msgid "Add Track" msgstr "Track hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:714 flatcamGUI/FlatCAMGUI.py:1940 +#: flatcamGUI/FlatCAMGUI.py:709 flatcamGUI/FlatCAMGUI.py:1938 msgid "Add Region" msgstr "Region hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:716 flatcamGUI/FlatCAMGUI.py:1942 +#: flatcamGUI/FlatCAMGUI.py:711 flatcamGUI/FlatCAMGUI.py:1940 msgid "Poligonize" msgstr "Polygonisieren" -#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1944 +#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1942 msgid "SemiDisc" msgstr "Halbscheibe" -#: flatcamGUI/FlatCAMGUI.py:719 flatcamGUI/FlatCAMGUI.py:1945 +#: flatcamGUI/FlatCAMGUI.py:714 flatcamGUI/FlatCAMGUI.py:1943 msgid "Disc" msgstr "Scheibe" -#: flatcamGUI/FlatCAMGUI.py:733 flatcamGUI/FlatCAMGUI.py:1605 -#: flatcamGUI/FlatCAMGUI.py:1625 flatcamGUI/FlatCAMGUI.py:1959 +#: flatcamGUI/FlatCAMGUI.py:728 flatcamGUI/FlatCAMGUI.py:1602 +#: flatcamGUI/FlatCAMGUI.py:1622 flatcamGUI/FlatCAMGUI.py:1957 #: flatcamTools/ToolMove.py:26 msgid "Move" msgstr "Bewegung" -#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1965 +#: flatcamGUI/FlatCAMGUI.py:734 flatcamGUI/FlatCAMGUI.py:1963 msgid "Snap to grid" msgstr "Am Raster ausrichten" -#: flatcamGUI/FlatCAMGUI.py:742 flatcamGUI/FlatCAMGUI.py:1968 +#: flatcamGUI/FlatCAMGUI.py:737 flatcamGUI/FlatCAMGUI.py:1966 msgid "Grid X snapping distance" msgstr "Raster X Fangdistanz" -#: flatcamGUI/FlatCAMGUI.py:747 flatcamGUI/FlatCAMGUI.py:1973 +#: flatcamGUI/FlatCAMGUI.py:742 flatcamGUI/FlatCAMGUI.py:1971 msgid "Grid Y snapping distance" msgstr "Raster Y Fangdistanz" -#: flatcamGUI/FlatCAMGUI.py:753 flatcamGUI/FlatCAMGUI.py:1979 +#: flatcamGUI/FlatCAMGUI.py:748 flatcamGUI/FlatCAMGUI.py:1977 msgid "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." @@ -4555,64 +4581,64 @@ msgstr "" "Wenn aktiv, Wert auf Grid_X\n" "wird in den Wert von Grid_Y kopiert." -#: flatcamGUI/FlatCAMGUI.py:759 flatcamGUI/FlatCAMGUI.py:1985 +#: flatcamGUI/FlatCAMGUI.py:754 flatcamGUI/FlatCAMGUI.py:1983 msgid "Snap to corner" msgstr "In der Ecke ausrichten" -#: flatcamGUI/FlatCAMGUI.py:763 flatcamGUI/FlatCAMGUI.py:1989 -#: flatcamGUI/FlatCAMGUI.py:3346 +#: flatcamGUI/FlatCAMGUI.py:758 flatcamGUI/FlatCAMGUI.py:1987 +#: flatcamGUI/FlatCAMGUI.py:3344 msgid "Max. magnet distance" msgstr "Max. Magnetabstand" -#: flatcamGUI/FlatCAMGUI.py:791 flatcamGUI/FlatCAMGUI.py:1589 +#: flatcamGUI/FlatCAMGUI.py:786 flatcamGUI/FlatCAMGUI.py:1586 msgid "Project" msgstr "Projekt" -#: flatcamGUI/FlatCAMGUI.py:801 +#: flatcamGUI/FlatCAMGUI.py:796 msgid "Selected" msgstr "Ausgewählt" -#: flatcamGUI/FlatCAMGUI.py:820 flatcamGUI/FlatCAMGUI.py:828 +#: flatcamGUI/FlatCAMGUI.py:815 flatcamGUI/FlatCAMGUI.py:823 msgid "Plot Area" msgstr "Grundstücksfläche" -#: flatcamGUI/FlatCAMGUI.py:852 +#: flatcamGUI/FlatCAMGUI.py:847 msgid "General" msgstr "Allgemeines" -#: flatcamGUI/FlatCAMGUI.py:861 +#: flatcamGUI/FlatCAMGUI.py:856 msgid "APP. DEFAULTS" msgstr "Anwendungsvorgaben" -#: flatcamGUI/FlatCAMGUI.py:862 +#: flatcamGUI/FlatCAMGUI.py:857 msgid "PROJ. OPTIONS " msgstr "Projektoptionen" -#: flatcamGUI/FlatCAMGUI.py:873 +#: flatcamGUI/FlatCAMGUI.py:868 msgid "GERBER" msgstr "GERBER" -#: flatcamGUI/FlatCAMGUI.py:882 +#: flatcamGUI/FlatCAMGUI.py:877 msgid "EXCELLON" msgstr "EXCELLON" -#: flatcamGUI/FlatCAMGUI.py:891 +#: flatcamGUI/FlatCAMGUI.py:886 msgid "GEOMETRY" msgstr "GEOMETRY" -#: flatcamGUI/FlatCAMGUI.py:901 +#: flatcamGUI/FlatCAMGUI.py:896 msgid "CNC-JOB" msgstr "CNC-Auftrag" -#: flatcamGUI/FlatCAMGUI.py:910 +#: flatcamGUI/FlatCAMGUI.py:905 msgid "TOOLS" msgstr "WERKZEUGE" -#: flatcamGUI/FlatCAMGUI.py:927 +#: flatcamGUI/FlatCAMGUI.py:922 msgid "Import Preferences" msgstr "Importeinstellungen" -#: flatcamGUI/FlatCAMGUI.py:930 +#: flatcamGUI/FlatCAMGUI.py:925 msgid "" "Import a full set of FlatCAM settings from a file\n" "previously saved on HDD.\n" @@ -4627,11 +4653,11 @@ msgstr "" "FlatCAM speichert automatisch eine 'factory_defaults'-Datei\n" "beim ersten Start. Löschen Sie diese Datei nicht." -#: flatcamGUI/FlatCAMGUI.py:937 +#: flatcamGUI/FlatCAMGUI.py:932 msgid "Export Preferences" msgstr "Voreinstell. export." -#: flatcamGUI/FlatCAMGUI.py:940 +#: flatcamGUI/FlatCAMGUI.py:935 msgid "" "Export a full set of FlatCAM settings in a file\n" "that is saved on HDD." @@ -4640,20 +4666,20 @@ msgstr "" "Datei\n" "das ist auf der Festplatte gespeichert." -#: flatcamGUI/FlatCAMGUI.py:945 +#: flatcamGUI/FlatCAMGUI.py:940 msgid "Open Pref Folder" msgstr "Öffnen Sie \"Einstell.\"" -#: flatcamGUI/FlatCAMGUI.py:948 +#: flatcamGUI/FlatCAMGUI.py:943 msgid "Open the folder where FlatCAM save the preferences files." msgstr "" "Öffnen Sie den Ordner, in dem FlatCAM die Voreinstellungsdateien speichert." -#: flatcamGUI/FlatCAMGUI.py:956 +#: flatcamGUI/FlatCAMGUI.py:951 msgid "Save Preferences" msgstr "Voreinstell. speech." -#: flatcamGUI/FlatCAMGUI.py:959 +#: flatcamGUI/FlatCAMGUI.py:954 msgid "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." @@ -4661,7 +4687,7 @@ msgstr "" "Speichern Sie die aktuellen Einstellungen in der Datei 'current_defaults'\n" "Dies ist die Datei, in der die Arbeitseinstellungen gespeichert sind." -#: flatcamGUI/FlatCAMGUI.py:985 +#: flatcamGUI/FlatCAMGUI.py:980 msgid "" "General Shortcut list
\n" " Editor Shortcut list
\n" "
\n" @@ -5860,99 +5886,99 @@ msgstr "" "
\n" " " -#: flatcamGUI/FlatCAMGUI.py:1582 -msgid "Disable" -msgstr "Deaktivieren" +#: flatcamGUI/FlatCAMGUI.py:1578 +msgid "Toggle Panel" +msgstr "Panel umschalten" -#: flatcamGUI/FlatCAMGUI.py:1584 +#: flatcamGUI/FlatCAMGUI.py:1581 msgid "New" msgstr "Neu" -#: flatcamGUI/FlatCAMGUI.py:1585 +#: flatcamGUI/FlatCAMGUI.py:1582 msgid "Geometry" msgstr "Geometrie" -#: flatcamGUI/FlatCAMGUI.py:1587 +#: flatcamGUI/FlatCAMGUI.py:1584 msgid "Excellon" msgstr "Excellon" -#: flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1589 msgid "Grids" msgstr "Raster" -#: flatcamGUI/FlatCAMGUI.py:1594 +#: flatcamGUI/FlatCAMGUI.py:1591 msgid "View" msgstr "Aussicht" -#: flatcamGUI/FlatCAMGUI.py:1596 +#: flatcamGUI/FlatCAMGUI.py:1593 msgid "Clear Plot" msgstr "Plot klar löschen" -#: flatcamGUI/FlatCAMGUI.py:1597 +#: flatcamGUI/FlatCAMGUI.py:1594 msgid "Replot" msgstr "Replotieren" -#: flatcamGUI/FlatCAMGUI.py:1600 +#: flatcamGUI/FlatCAMGUI.py:1597 msgid "Geo Editor" msgstr "Geo-Editor" -#: flatcamGUI/FlatCAMGUI.py:1601 +#: flatcamGUI/FlatCAMGUI.py:1598 msgid "Line" msgstr "Linie" -#: flatcamGUI/FlatCAMGUI.py:1602 +#: flatcamGUI/FlatCAMGUI.py:1599 msgid "Rectangle" msgstr "Rechteck" -#: flatcamGUI/FlatCAMGUI.py:1603 +#: flatcamGUI/FlatCAMGUI.py:1600 msgid "Cut" msgstr "Schnitt" -#: flatcamGUI/FlatCAMGUI.py:1608 +#: flatcamGUI/FlatCAMGUI.py:1605 msgid "Pad" msgstr "Pad" -#: flatcamGUI/FlatCAMGUI.py:1609 +#: flatcamGUI/FlatCAMGUI.py:1606 msgid "Pad Array" msgstr "Pad-Array" -#: flatcamGUI/FlatCAMGUI.py:1610 +#: flatcamGUI/FlatCAMGUI.py:1607 msgid "Track" msgstr "Track" -#: flatcamGUI/FlatCAMGUI.py:1611 +#: flatcamGUI/FlatCAMGUI.py:1608 msgid "Region" msgstr "Region" -#: flatcamGUI/FlatCAMGUI.py:1613 +#: flatcamGUI/FlatCAMGUI.py:1610 msgid "Exc Editor" msgstr "Exc-Editor" -#: flatcamGUI/FlatCAMGUI.py:1614 +#: flatcamGUI/FlatCAMGUI.py:1611 msgid "Add Drill" msgstr "Bohrer hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:1646 +#: flatcamGUI/FlatCAMGUI.py:1643 msgid "Print Preview" msgstr "Druckvorschau" -#: flatcamGUI/FlatCAMGUI.py:1647 +#: flatcamGUI/FlatCAMGUI.py:1644 msgid "Print Code" msgstr "Code drucken" -#: flatcamGUI/FlatCAMGUI.py:1648 +#: flatcamGUI/FlatCAMGUI.py:1645 msgid "Find in Code" msgstr "Im Code suchen" -#: flatcamGUI/FlatCAMGUI.py:1653 +#: flatcamGUI/FlatCAMGUI.py:1650 msgid "Replace With" msgstr "Ersetzen mit" -#: flatcamGUI/FlatCAMGUI.py:1657 +#: flatcamGUI/FlatCAMGUI.py:1654 msgid "All" msgstr "Alles" -#: flatcamGUI/FlatCAMGUI.py:1659 +#: flatcamGUI/FlatCAMGUI.py:1656 msgid "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." @@ -5961,15 +5987,15 @@ msgstr "" "ersetzt\n" "mit dem Text im Feld \"Ersetzen\" .." -#: flatcamGUI/FlatCAMGUI.py:1662 +#: flatcamGUI/FlatCAMGUI.py:1659 msgid "Open Code" msgstr "Code öffnen" -#: flatcamGUI/FlatCAMGUI.py:1663 +#: flatcamGUI/FlatCAMGUI.py:1660 msgid "Save Code" msgstr "Code speichern" -#: flatcamGUI/FlatCAMGUI.py:1698 +#: flatcamGUI/FlatCAMGUI.py:1695 msgid "" "Relative neasurement.\n" "Reference is last click position" @@ -5977,7 +6003,7 @@ msgstr "" "Relative Messung\n" "Referenz ist Position des letzten Klicks" -#: flatcamGUI/FlatCAMGUI.py:1704 +#: flatcamGUI/FlatCAMGUI.py:1701 msgid "" "Absolute neasurement.\n" "Reference is (X=0, Y= 0) position" @@ -5985,23 +6011,23 @@ msgstr "" "Absolute Messung.\n" "Referenz ist (X = 0, Y = 0)" -#: flatcamGUI/FlatCAMGUI.py:1899 +#: flatcamGUI/FlatCAMGUI.py:1897 msgid "Select 'Esc'" msgstr "Wählen" -#: flatcamGUI/FlatCAMGUI.py:1926 +#: flatcamGUI/FlatCAMGUI.py:1924 msgid "Copy Objects" msgstr "Objekte kopieren" -#: flatcamGUI/FlatCAMGUI.py:1928 +#: flatcamGUI/FlatCAMGUI.py:1926 msgid "Delete Shape" msgstr "Form löschen" -#: flatcamGUI/FlatCAMGUI.py:1933 +#: flatcamGUI/FlatCAMGUI.py:1931 msgid "Move Objects" msgstr "Objekte verschieben" -#: flatcamGUI/FlatCAMGUI.py:2365 +#: flatcamGUI/FlatCAMGUI.py:2360 msgid "" "Please first select a geometry item to be cutted\n" "then select the geometry item that will be cutted\n" @@ -6013,17 +6039,17 @@ msgstr "" "aus dem ersten Artikel. Zum Schluss drücken Sie die Taste ~ X ~ oder\n" "die Symbolleisten-Schaltfläche." -#: flatcamGUI/FlatCAMGUI.py:2372 flatcamGUI/FlatCAMGUI.py:2509 -#: flatcamGUI/FlatCAMGUI.py:2568 flatcamGUI/FlatCAMGUI.py:2588 +#: flatcamGUI/FlatCAMGUI.py:2367 flatcamGUI/FlatCAMGUI.py:2504 +#: flatcamGUI/FlatCAMGUI.py:2563 flatcamGUI/FlatCAMGUI.py:2583 msgid "Warning" msgstr "Warnung" -#: flatcamGUI/FlatCAMGUI.py:2439 flatcamGUI/FlatCAMGUI.py:2638 -#: flatcamGUI/FlatCAMGUI.py:2849 +#: flatcamGUI/FlatCAMGUI.py:2434 flatcamGUI/FlatCAMGUI.py:2633 +#: flatcamGUI/FlatCAMGUI.py:2844 msgid "[WARNING_NOTCL] Cancelled." msgstr "[WARNING_NOTCL] Abgebrochen." -#: flatcamGUI/FlatCAMGUI.py:2504 +#: flatcamGUI/FlatCAMGUI.py:2499 msgid "" "Please select geometry items \n" "on which to perform Intersection Tool." @@ -6031,7 +6057,7 @@ msgstr "" "Bitte wählen Sie Geometrieelemente aus\n" "auf dem das Verschneidungswerkzeug ausgeführt werden soll." -#: flatcamGUI/FlatCAMGUI.py:2563 +#: flatcamGUI/FlatCAMGUI.py:2558 msgid "" "Please select geometry items \n" "on which to perform Substraction Tool." @@ -6039,7 +6065,7 @@ msgstr "" "Bitte wählen Sie Geometrieelemente aus\n" "auf dem das Subtraktionswerkzeug ausgeführt werden soll." -#: flatcamGUI/FlatCAMGUI.py:2583 +#: flatcamGUI/FlatCAMGUI.py:2578 msgid "" "Please select geometry items \n" "on which to perform union." @@ -6047,55 +6073,55 @@ msgstr "" "Bitte wählen Sie Geometrieelemente aus\n" "auf dem die Polygonverbindung ausgeführt werden soll." -#: flatcamGUI/FlatCAMGUI.py:2654 flatcamGUI/FlatCAMGUI.py:2866 +#: flatcamGUI/FlatCAMGUI.py:2649 flatcamGUI/FlatCAMGUI.py:2861 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to delete." msgstr "[WARNING_NOTCL] Abgebrochen. Nichts zum Löschen ausgewählt." -#: flatcamGUI/FlatCAMGUI.py:2738 flatcamGUI/FlatCAMGUI.py:2933 +#: flatcamGUI/FlatCAMGUI.py:2733 flatcamGUI/FlatCAMGUI.py:2928 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to copy." msgstr "[WARNING_NOTCL] Abgebrochen. Nichts zum Kopieren ausgewählt." -#: flatcamGUI/FlatCAMGUI.py:2784 flatcamGUI/FlatCAMGUI.py:2979 +#: flatcamGUI/FlatCAMGUI.py:2779 flatcamGUI/FlatCAMGUI.py:2974 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to move." msgstr "[WARNING_NOTCL] Abgebrochen. Nichts ausgewählt, um sich zu bewegen." -#: flatcamGUI/FlatCAMGUI.py:2993 +#: flatcamGUI/FlatCAMGUI.py:2988 msgid "New Tool ..." msgstr "Neues Werkzeug ..." -#: flatcamGUI/FlatCAMGUI.py:2994 +#: flatcamGUI/FlatCAMGUI.py:2989 msgid "Enter a Tool Diameter:" msgstr "Geben Sie einen Werkzeugdurchmesser ein:" -#: flatcamGUI/FlatCAMGUI.py:3036 +#: flatcamGUI/FlatCAMGUI.py:3032 msgid "Measurement Tool exit..." msgstr "Messwerkzeug beenden ..." -#: flatcamGUI/FlatCAMGUI.py:3331 +#: flatcamGUI/FlatCAMGUI.py:3329 msgid "Grid X value:" msgstr "Raster X-Wert:" -#: flatcamGUI/FlatCAMGUI.py:3333 +#: flatcamGUI/FlatCAMGUI.py:3331 msgid "This is the Grid snap value on X axis." msgstr "Dies ist der Rasterfangwert auf der X-Achse." -#: flatcamGUI/FlatCAMGUI.py:3338 +#: flatcamGUI/FlatCAMGUI.py:3336 msgid "Grid Y value:" msgstr "Raster Y-Wert:" -#: flatcamGUI/FlatCAMGUI.py:3340 +#: flatcamGUI/FlatCAMGUI.py:3338 msgid "This is the Grid snap value on Y axis." msgstr "Dies ist der Rasterfangwert auf der Y-Achse." -#: flatcamGUI/FlatCAMGUI.py:3345 +#: flatcamGUI/FlatCAMGUI.py:3343 msgid "Snap Max:" msgstr "Maximalwert:" -#: flatcamGUI/FlatCAMGUI.py:3350 +#: flatcamGUI/FlatCAMGUI.py:3348 msgid "Workspace:" msgstr "Arbeitsplatz:" -#: flatcamGUI/FlatCAMGUI.py:3352 +#: flatcamGUI/FlatCAMGUI.py:3350 msgid "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." @@ -6103,11 +6129,11 @@ msgstr "" "Zeichnen Sie ein begrenzendes Rechteck auf die Leinwand.\n" "Ziel ist es, die Grenzen unserer Arbeit aufzuzeigen." -#: flatcamGUI/FlatCAMGUI.py:3355 +#: flatcamGUI/FlatCAMGUI.py:3353 msgid "Wk. format:" msgstr "Arbeitsbereichformat:" -#: flatcamGUI/FlatCAMGUI.py:3357 +#: flatcamGUI/FlatCAMGUI.py:3355 msgid "" "Select the type of rectangle to be used on canvas,\n" "as valid workspace." @@ -6115,11 +6141,11 @@ msgstr "" "Wählen Sie den Typ des Rechtecks für die Leinwand aus.\n" "als gültiger Arbeitsbereich." -#: flatcamGUI/FlatCAMGUI.py:3370 +#: flatcamGUI/FlatCAMGUI.py:3368 msgid "Plot Fill:" msgstr "Plot füllen:" -#: flatcamGUI/FlatCAMGUI.py:3372 +#: flatcamGUI/FlatCAMGUI.py:3370 msgid "" "Set the fill color for plotted objects.\n" "First 6 digits are the color and the last 2\n" @@ -6129,28 +6155,28 @@ msgstr "" "Die ersten 6 Ziffern sind die Farbe und die letzten 2\n" "Ziffern sind für Alpha (Transparenz)." -#: flatcamGUI/FlatCAMGUI.py:3386 flatcamGUI/FlatCAMGUI.py:3436 -#: flatcamGUI/FlatCAMGUI.py:3486 +#: flatcamGUI/FlatCAMGUI.py:3384 flatcamGUI/FlatCAMGUI.py:3434 +#: flatcamGUI/FlatCAMGUI.py:3484 msgid "Alpha Level:" msgstr "Alpha-Ebene:" -#: flatcamGUI/FlatCAMGUI.py:3388 +#: flatcamGUI/FlatCAMGUI.py:3386 msgid "Set the fill transparency for plotted objects." msgstr "Legen Sie die Füllungstransparenz für geplottete Objekte fest." -#: flatcamGUI/FlatCAMGUI.py:3405 +#: flatcamGUI/FlatCAMGUI.py:3403 msgid "Plot Line:" msgstr "Handlungsstrang:" -#: flatcamGUI/FlatCAMGUI.py:3407 +#: flatcamGUI/FlatCAMGUI.py:3405 msgid "Set the line color for plotted objects." msgstr "Legen Sie die Linienfarbe für geplottete Objekte fest." -#: flatcamGUI/FlatCAMGUI.py:3419 +#: flatcamGUI/FlatCAMGUI.py:3417 msgid "Sel. Fill:" msgstr "Ausgewählte Füllung:" -#: flatcamGUI/FlatCAMGUI.py:3421 +#: flatcamGUI/FlatCAMGUI.py:3419 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from left to right.\n" @@ -6162,26 +6188,26 @@ msgstr "" "Die ersten 6 Ziffern sind die Farbe und die letzten 2\n" "Ziffern sind für Alpha (Transparenz)." -#: flatcamGUI/FlatCAMGUI.py:3438 +#: flatcamGUI/FlatCAMGUI.py:3436 msgid "Set the fill transparency for the 'left to right' selection box." msgstr "" "Legen Sie die Füllungstransparenz für das Auswahlfeld \"von links nach rechts" "\" fest." -#: flatcamGUI/FlatCAMGUI.py:3455 +#: flatcamGUI/FlatCAMGUI.py:3453 msgid "Sel. Line:" msgstr "Auswahlzeile:" -#: flatcamGUI/FlatCAMGUI.py:3457 +#: flatcamGUI/FlatCAMGUI.py:3455 msgid "Set the line color for the 'left to right' selection box." msgstr "" "Legen Sie die Linienfarbe für das Auswahlfeld \"von links nach rechts\" fest." -#: flatcamGUI/FlatCAMGUI.py:3469 +#: flatcamGUI/FlatCAMGUI.py:3467 msgid "Sel2. Fill:" msgstr "Auswahl2 Füllung:" -#: flatcamGUI/FlatCAMGUI.py:3471 +#: flatcamGUI/FlatCAMGUI.py:3469 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from right to left.\n" @@ -6193,49 +6219,49 @@ msgstr "" "Die ersten 6 Ziffern sind die Farbe und die letzten 2\n" "Ziffern sind für Alpha (Transparenz)." -#: flatcamGUI/FlatCAMGUI.py:3488 +#: flatcamGUI/FlatCAMGUI.py:3486 msgid "Set the fill transparency for selection 'right to left' box." msgstr "" "Legen Sie die Füllungstransparenz für die Auswahl von rechts nach links fest." -#: flatcamGUI/FlatCAMGUI.py:3505 +#: flatcamGUI/FlatCAMGUI.py:3503 msgid "Sel2. Line:" msgstr "Auswahl 2 Zeile:" -#: flatcamGUI/FlatCAMGUI.py:3507 +#: flatcamGUI/FlatCAMGUI.py:3505 msgid "Set the line color for the 'right to left' selection box." msgstr "" "Legen Sie die Linienfarbe für das Auswahlfeld 'von rechts nach links' fest." -#: flatcamGUI/FlatCAMGUI.py:3519 +#: flatcamGUI/FlatCAMGUI.py:3517 msgid "Editor Draw:" msgstr "Editor zeichnen:" -#: flatcamGUI/FlatCAMGUI.py:3521 +#: flatcamGUI/FlatCAMGUI.py:3519 msgid "Set the color for the shape." msgstr "Legen Sie die Farbe für die Form fest." -#: flatcamGUI/FlatCAMGUI.py:3533 +#: flatcamGUI/FlatCAMGUI.py:3531 msgid "Editor Draw Sel.:" msgstr "Editor Draw Sel.:" -#: flatcamGUI/FlatCAMGUI.py:3535 +#: flatcamGUI/FlatCAMGUI.py:3533 msgid "Set the color of the shape when selected." msgstr "Legt die Farbe der Form fest, wenn sie ausgewählt wird." -#: flatcamGUI/FlatCAMGUI.py:3547 +#: flatcamGUI/FlatCAMGUI.py:3545 msgid "Project Items:" msgstr "Projektelemente:" -#: flatcamGUI/FlatCAMGUI.py:3549 +#: flatcamGUI/FlatCAMGUI.py:3547 msgid "Set the color of the items in Project Tab Tree." msgstr "Legen Sie die Farbe der Elemente im Projektregisterbaum fest." -#: flatcamGUI/FlatCAMGUI.py:3560 +#: flatcamGUI/FlatCAMGUI.py:3558 msgid "Proj. Dis. Items:" msgstr "Proj. Deakt. Elemente" -#: flatcamGUI/FlatCAMGUI.py:3562 +#: flatcamGUI/FlatCAMGUI.py:3560 msgid "" "Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled." @@ -6243,15 +6269,15 @@ msgstr "" "Legen Sie die Farbe der Elemente in der Projektregisterkarte fest.\n" "für den Fall, wenn die Elemente deaktiviert sind." -#: flatcamGUI/FlatCAMGUI.py:3613 +#: flatcamGUI/FlatCAMGUI.py:3611 msgid "GUI Settings" msgstr "GUI-Einstellungen" -#: flatcamGUI/FlatCAMGUI.py:3620 +#: flatcamGUI/FlatCAMGUI.py:3617 msgid "Layout:" msgstr "Layout:" -#: flatcamGUI/FlatCAMGUI.py:3622 +#: flatcamGUI/FlatCAMGUI.py:3619 msgid "" "Select an layout for FlatCAM.\n" "It is applied immediately." @@ -6259,11 +6285,11 @@ msgstr "" "Wählen Sie ein Layout für FlatCAM.\n" "Es wird sofort angewendet." -#: flatcamGUI/FlatCAMGUI.py:3638 +#: flatcamGUI/FlatCAMGUI.py:3635 msgid "Style:" msgstr "Stil:" -#: flatcamGUI/FlatCAMGUI.py:3640 +#: flatcamGUI/FlatCAMGUI.py:3637 msgid "" "Select an style for FlatCAM.\n" "It will be applied at the next app start." @@ -6271,11 +6297,11 @@ msgstr "" "Wählen Sie einen Stil für FlatCAM.\n" "Es wird beim nächsten Start der App angewendet." -#: flatcamGUI/FlatCAMGUI.py:3651 +#: flatcamGUI/FlatCAMGUI.py:3648 msgid "HDPI Support:" msgstr "HDPI-Unterstützung:" -#: flatcamGUI/FlatCAMGUI.py:3653 +#: flatcamGUI/FlatCAMGUI.py:3650 msgid "" "Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start." @@ -6283,11 +6309,11 @@ msgstr "" "Aktivieren Sie die High DPI-Unterstützung für FlatCAM.\n" "Es wird beim nächsten Start der App angewendet." -#: flatcamGUI/FlatCAMGUI.py:3666 +#: flatcamGUI/FlatCAMGUI.py:3663 msgid "Clear GUI Settings:" msgstr "GUI-Einstellungen löschen:" -#: flatcamGUI/FlatCAMGUI.py:3668 +#: flatcamGUI/FlatCAMGUI.py:3665 msgid "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." @@ -6295,15 +6321,15 @@ msgstr "" "Löschen Sie die GUI-Einstellungen für FlatCAM.\n" "wie zum Beispiel: Layout, GUI-Status, Stil, HDPI-Unterstützung usw." -#: flatcamGUI/FlatCAMGUI.py:3671 +#: flatcamGUI/FlatCAMGUI.py:3668 msgid "Clear" msgstr "Klären" -#: flatcamGUI/FlatCAMGUI.py:3675 +#: flatcamGUI/FlatCAMGUI.py:3672 msgid "Hover Shape:" msgstr "Schwebeflug-Form:" -#: flatcamGUI/FlatCAMGUI.py:3677 +#: flatcamGUI/FlatCAMGUI.py:3674 msgid "" "Enable display of a hover shape for FlatCAM objects.\n" "It is displayed whenever the mouse cursor is hovering\n" @@ -6313,11 +6339,11 @@ msgstr "" "Es wird angezeigt, wenn sich der Mauszeiger in der Maus befindet\n" "über jede Art von nicht ausgewähltem Objekt." -#: flatcamGUI/FlatCAMGUI.py:3684 +#: flatcamGUI/FlatCAMGUI.py:3681 msgid "Sel. Shape:" msgstr "Auswahlform:" -#: flatcamGUI/FlatCAMGUI.py:3686 +#: flatcamGUI/FlatCAMGUI.py:3683 msgid "" "Enable the display of a selection shape for FlatCAM objects.\n" "It is displayed whenever the mouse selects an object\n" @@ -6329,23 +6355,23 @@ msgstr "" "entweder durch Klicken oder Ziehen der Maus von links nach rechts oder\n" "rechts nach links." -#: flatcamGUI/FlatCAMGUI.py:3728 +#: flatcamGUI/FlatCAMGUI.py:3725 msgid "Are you sure you want to delete the GUI Settings? \n" msgstr "Möchten Sie die GUI-Einstellungen wirklich löschen?\n" -#: flatcamGUI/FlatCAMGUI.py:3731 +#: flatcamGUI/FlatCAMGUI.py:3728 msgid "Clear GUI Settings" msgstr "Löschen Sie die GUI-Einstellungen" -#: flatcamGUI/FlatCAMGUI.py:3752 +#: flatcamGUI/FlatCAMGUI.py:3749 msgid "App Preferences" msgstr "App-Einstellungen" -#: flatcamGUI/FlatCAMGUI.py:3758 +#: flatcamGUI/FlatCAMGUI.py:3755 msgid "Units:" msgstr "Einheiten:" -#: flatcamGUI/FlatCAMGUI.py:3759 +#: flatcamGUI/FlatCAMGUI.py:3756 msgid "" "The default value for FlatCAM units.\n" "Whatever is selected here is set every time\n" @@ -6355,11 +6381,11 @@ msgstr "" "Was hier ausgewählt wird, wird jedes Mal eingestellt\n" "FLatCAM wird gestartet." -#: flatcamGUI/FlatCAMGUI.py:3766 +#: flatcamGUI/FlatCAMGUI.py:3763 msgid "APP. LEVEL:" msgstr "Bewerbungsebene:" -#: flatcamGUI/FlatCAMGUI.py:3767 +#: flatcamGUI/FlatCAMGUI.py:3764 msgid "" "Choose the default level of usage for FlatCAM.\n" "BASIC level -> reduced functionality, best for beginner's.\n" @@ -6375,19 +6401,19 @@ msgstr "" "Die Auswahl hier beeinflusst die Parameter in\n" "Die Registerkarte Ausgewählt für alle Arten von FlatCAM-Objekten." -#: flatcamGUI/FlatCAMGUI.py:3776 +#: flatcamGUI/FlatCAMGUI.py:3773 msgid "Languages:" msgstr "Sprachen:" -#: flatcamGUI/FlatCAMGUI.py:3777 +#: flatcamGUI/FlatCAMGUI.py:3774 msgid "Set the language used throughout FlatCAM." msgstr "Stellen Sie die Sprache ein, die in FlatCAM verwendet wird." -#: flatcamGUI/FlatCAMGUI.py:3780 +#: flatcamGUI/FlatCAMGUI.py:3777 msgid "Apply Language" msgstr "Sprache anwend." -#: flatcamGUI/FlatCAMGUI.py:3781 +#: flatcamGUI/FlatCAMGUI.py:3778 msgid "" "Set the language used throughout FlatCAM.\n" "The app will restart after click.Windows: When FlatCAM is installed in " @@ -6406,11 +6432,11 @@ msgstr "" "Sicherheitsfunktionen. In diesem Fall wird die Sprache sein\n" "Beim nächsten Start der App angewendet." -#: flatcamGUI/FlatCAMGUI.py:3790 +#: flatcamGUI/FlatCAMGUI.py:3787 msgid "Shell at StartUp:" msgstr "Shell beim Start:" -#: flatcamGUI/FlatCAMGUI.py:3792 flatcamGUI/FlatCAMGUI.py:3797 +#: flatcamGUI/FlatCAMGUI.py:3789 flatcamGUI/FlatCAMGUI.py:3794 msgid "" "Check this box if you want the shell to\n" "start automatically at startup." @@ -6418,11 +6444,11 @@ msgstr "" "Aktivieren Sie dieses Kontrollkästchen, wenn die Shell gewünscht wird\n" "automatisch beim Start starten" -#: flatcamGUI/FlatCAMGUI.py:3802 +#: flatcamGUI/FlatCAMGUI.py:3799 msgid "Version Check:" msgstr "Versionsprüfung:" -#: flatcamGUI/FlatCAMGUI.py:3804 flatcamGUI/FlatCAMGUI.py:3809 +#: flatcamGUI/FlatCAMGUI.py:3801 flatcamGUI/FlatCAMGUI.py:3806 msgid "" "Check this box if you want to check\n" "for a new version automatically at startup." @@ -6431,11 +6457,11 @@ msgstr "" "wenn Sie das Kontrollkästchen aktivieren möchten\n" "für eine neue Version automatisch beim Start." -#: flatcamGUI/FlatCAMGUI.py:3814 +#: flatcamGUI/FlatCAMGUI.py:3811 msgid "Send Stats:" msgstr "Statistiken senden:" -#: flatcamGUI/FlatCAMGUI.py:3816 flatcamGUI/FlatCAMGUI.py:3821 +#: flatcamGUI/FlatCAMGUI.py:3813 flatcamGUI/FlatCAMGUI.py:3818 msgid "" "Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM." @@ -6444,11 +6470,11 @@ msgstr "" "zustimmen\n" "wird beim Start automatisch aktualisiert, um FlatCAM zu verbessern." -#: flatcamGUI/FlatCAMGUI.py:3828 +#: flatcamGUI/FlatCAMGUI.py:3825 msgid "Pan Button:" msgstr "Pan-Taste:" -#: flatcamGUI/FlatCAMGUI.py:3829 +#: flatcamGUI/FlatCAMGUI.py:3826 msgid "" "Select the mouse button to use for panning:\n" "- MMB --> Middle Mouse Button\n" @@ -6458,19 +6484,19 @@ msgstr "" "- MMB -> Mittlere Maustaste\n" "- RMB -> Rechte Maustaste" -#: flatcamGUI/FlatCAMGUI.py:3836 +#: flatcamGUI/FlatCAMGUI.py:3833 msgid "Multiple Sel:" msgstr "Mehrfachauswahl:" -#: flatcamGUI/FlatCAMGUI.py:3837 +#: flatcamGUI/FlatCAMGUI.py:3834 msgid "Select the key used for multiple selection." msgstr "Wählen Sie den Schlüssel für die Mehrfachauswahl aus." -#: flatcamGUI/FlatCAMGUI.py:3842 +#: flatcamGUI/FlatCAMGUI.py:3839 msgid "Project at StartUp:" msgstr "Projekt beim Start:" -#: flatcamGUI/FlatCAMGUI.py:3844 flatcamGUI/FlatCAMGUI.py:3849 +#: flatcamGUI/FlatCAMGUI.py:3841 flatcamGUI/FlatCAMGUI.py:3846 msgid "" "Check this box if you want the project/selected/tool tab area to\n" "to be shown automatically at startup." @@ -6480,11 +6506,11 @@ msgstr "" "angezeigt werden soll\n" "beim Start automatisch angezeigt werden." -#: flatcamGUI/FlatCAMGUI.py:3854 +#: flatcamGUI/FlatCAMGUI.py:3851 msgid "Project AutoHide:" msgstr "Projekt autoausblenden:" -#: flatcamGUI/FlatCAMGUI.py:3856 flatcamGUI/FlatCAMGUI.py:3862 +#: flatcamGUI/FlatCAMGUI.py:3853 flatcamGUI/FlatCAMGUI.py:3859 msgid "" "Check this box if you want the project/selected/tool tab area to\n" "hide automatically when there are no objects loaded and\n" @@ -6496,11 +6522,11 @@ msgstr "" "keine Objekte geladen sind und anzeigen, wenn ein \n" "neues Objekt erstellt wird." -#: flatcamGUI/FlatCAMGUI.py:3868 +#: flatcamGUI/FlatCAMGUI.py:3865 msgid "Enable ToolTips:" msgstr " QuickInfos aktivieren: " -#: flatcamGUI/FlatCAMGUI.py:3870 flatcamGUI/FlatCAMGUI.py:3875 +#: flatcamGUI/FlatCAMGUI.py:3867 flatcamGUI/FlatCAMGUI.py:3872 msgid "" "Check this box if you want to have toolTips displayed\n" "when hovering with mouse over items throughout the App." @@ -6509,11 +6535,11 @@ msgstr "" "sollen\n" "wenn Sie mit der Maus über Elemente in der App fahren." -#: flatcamGUI/FlatCAMGUI.py:3878 +#: flatcamGUI/FlatCAMGUI.py:3875 msgid "Workers number:" msgstr "Arbeiter Nummer:" -#: flatcamGUI/FlatCAMGUI.py:3880 flatcamGUI/FlatCAMGUI.py:3889 +#: flatcamGUI/FlatCAMGUI.py:3877 flatcamGUI/FlatCAMGUI.py:3886 msgid "" "The number of Qthreads made available to the App.\n" "A bigger number may finish the jobs more quickly but\n" @@ -6529,7 +6555,7 @@ msgstr "" "Der Standardwert ist 2.\n" "Nach dem Ändern wird es beim nächsten Start der App angewendet." -#: flatcamGUI/FlatCAMGUI.py:3901 flatcamGUI/FlatCAMGUI.py:3910 +#: flatcamGUI/FlatCAMGUI.py:3898 flatcamGUI/FlatCAMGUI.py:3907 msgid "" "This value can counter the effect of the Circle Steps\n" "parameter. Default value is 0.01.\n" @@ -6545,11 +6571,11 @@ msgstr "" "Performance. Ein höherer Wert bietet mehr\n" "Leistung auf Kosten des Detaillierungsgrades." -#: flatcamGUI/FlatCAMGUI.py:3946 +#: flatcamGUI/FlatCAMGUI.py:3943 msgid "\"Open\" behavior" msgstr "\"Offen\" -Verhalten" -#: flatcamGUI/FlatCAMGUI.py:3948 +#: flatcamGUI/FlatCAMGUI.py:3945 msgid "" "When checked the path for the last saved file is used when saving files,\n" "and the path for the last opened file is used when opening files.\n" @@ -6566,11 +6592,11 @@ msgstr "" "Dateien zuletzt verwendet: entweder der Pfad\n" "Pfad zum Speichern von Dateien oder Pfad zum Öffnen von Dateien." -#: flatcamGUI/FlatCAMGUI.py:3957 +#: flatcamGUI/FlatCAMGUI.py:3954 msgid "Save Compressed Project" msgstr "Speichern Sie das komprimierte Projekt" -#: flatcamGUI/FlatCAMGUI.py:3959 +#: flatcamGUI/FlatCAMGUI.py:3956 msgid "" "Whether to save a compressed or uncompressed project.\n" "When checked it will save a compressed FlatCAM project." @@ -6580,11 +6606,11 @@ msgstr "" "Wenn diese Option aktiviert ist, wird ein komprimiertes FlatCAM-Projekt " "gespeichert." -#: flatcamGUI/FlatCAMGUI.py:3970 +#: flatcamGUI/FlatCAMGUI.py:3967 msgid "Compression Level:" msgstr "Kompressionsstufe:" -#: flatcamGUI/FlatCAMGUI.py:3972 +#: flatcamGUI/FlatCAMGUI.py:3969 msgid "" "The level of compression used when saving\n" "a FlatCAM project. Higher value means better compression\n" @@ -6594,47 +6620,47 @@ msgstr "" "ein FlatCAM-Projekt. Ein höherer Wert bedeutet eine bessere Komprimierung\n" "erfordern jedoch mehr RAM-Auslastung und mehr Verarbeitungszeit." -#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4367 -#: flatcamGUI/FlatCAMGUI.py:5037 flatcamGUI/FlatCAMGUI.py:5409 +#: flatcamGUI/FlatCAMGUI.py:3995 flatcamGUI/FlatCAMGUI.py:4361 +#: flatcamGUI/FlatCAMGUI.py:5153 flatcamGUI/FlatCAMGUI.py:5525 #: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:505 #: flatcamGUI/ObjectUI.py:833 flatcamGUI/ObjectUI.py:1350 msgid "Plot Options:" msgstr " Diagrammoptionen: " -#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/FlatCAMGUI.py:4379 +#: flatcamGUI/FlatCAMGUI.py:4002 flatcamGUI/FlatCAMGUI.py:4373 #: flatcamGUI/ObjectUI.py:156 flatcamGUI/ObjectUI.py:506 msgid "Solid" msgstr "Solide" -#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:158 +#: flatcamGUI/FlatCAMGUI.py:4004 flatcamGUI/ObjectUI.py:158 msgid "Solid color polygons." msgstr "Einfarbige Polygone." -#: flatcamGUI/FlatCAMGUI.py:4012 flatcamGUI/ObjectUI.py:164 +#: flatcamGUI/FlatCAMGUI.py:4009 flatcamGUI/ObjectUI.py:164 msgid "M-Color" msgstr "M-farbig" -#: flatcamGUI/FlatCAMGUI.py:4014 flatcamGUI/ObjectUI.py:166 +#: flatcamGUI/FlatCAMGUI.py:4011 flatcamGUI/ObjectUI.py:166 msgid "Draw polygons in different colors." msgstr "Zeichnen Sie Polygone in verschiedenen Farben." -#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:4373 -#: flatcamGUI/FlatCAMGUI.py:5041 flatcamGUI/ObjectUI.py:172 +#: flatcamGUI/FlatCAMGUI.py:4016 flatcamGUI/FlatCAMGUI.py:4367 +#: flatcamGUI/FlatCAMGUI.py:5157 flatcamGUI/ObjectUI.py:172 msgid "Plot" msgstr "Zeichn" -#: flatcamGUI/FlatCAMGUI.py:4021 flatcamGUI/FlatCAMGUI.py:5043 +#: flatcamGUI/FlatCAMGUI.py:4018 flatcamGUI/FlatCAMGUI.py:5159 #: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:546 -#: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1437 +#: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1450 msgid "Plot (show) this object." msgstr "Plotten (zeigen) dieses Objekt." -#: flatcamGUI/FlatCAMGUI.py:4026 flatcamGUI/FlatCAMGUI.py:5050 -#: flatcamGUI/FlatCAMGUI.py:5445 +#: flatcamGUI/FlatCAMGUI.py:4023 flatcamGUI/FlatCAMGUI.py:5166 +#: flatcamGUI/FlatCAMGUI.py:5608 msgid "Circle Steps:" msgstr "Kreisschritte:" -#: flatcamGUI/FlatCAMGUI.py:4028 +#: flatcamGUI/FlatCAMGUI.py:4025 msgid "" "The number of circle steps for Gerber \n" "circular aperture linear approximation." @@ -6642,15 +6668,15 @@ msgstr "" "Die Anzahl der Kreisschritte für Gerber\n" "lineare Approximation mit kreisförmiger Apertur." -#: flatcamGUI/FlatCAMGUI.py:4043 +#: flatcamGUI/FlatCAMGUI.py:4040 msgid "Gerber Options" msgstr "Gerber-Optionen" -#: flatcamGUI/FlatCAMGUI.py:4047 flatcamGUI/ObjectUI.py:251 +#: flatcamGUI/FlatCAMGUI.py:4043 flatcamGUI/ObjectUI.py:251 msgid "Isolation Routing:" msgstr " Isolierungsrouting: " -#: flatcamGUI/FlatCAMGUI.py:4049 flatcamGUI/ObjectUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:4045 flatcamGUI/ObjectUI.py:253 msgid "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." @@ -6659,17 +6685,17 @@ msgstr "" "Werkzeugwege zum Schneiden von \n" "äußeren Polygonen." -#: flatcamGUI/FlatCAMGUI.py:4060 flatcamGUI/FlatCAMGUI.py:4760 -#: flatcamGUI/FlatCAMGUI.py:5733 flatcamGUI/ObjectUI.py:788 +#: flatcamGUI/FlatCAMGUI.py:4056 flatcamGUI/FlatCAMGUI.py:4753 +#: flatcamGUI/FlatCAMGUI.py:5897 flatcamGUI/ObjectUI.py:788 #: flatcamGUI/ObjectUI.py:804 msgid "Diameter of the cutting tool." msgstr "Durchmesser des Schneidewerkzeugs." -#: flatcamGUI/FlatCAMGUI.py:4067 +#: flatcamGUI/FlatCAMGUI.py:4063 msgid "Width (# passes):" msgstr "Breite (# passt):" -#: flatcamGUI/FlatCAMGUI.py:4069 flatcamGUI/ObjectUI.py:275 +#: flatcamGUI/FlatCAMGUI.py:4065 flatcamGUI/ObjectUI.py:275 msgid "" "Width of the isolation gap in\n" "number (integer) of tool widths." @@ -6677,11 +6703,11 @@ msgstr "" "Breite der Isolationslücke in\n" "Anzahl (Ganzzahl) der Werkzeugbreiten." -#: flatcamGUI/FlatCAMGUI.py:4077 flatcamGUI/ObjectUI.py:283 +#: flatcamGUI/FlatCAMGUI.py:4073 flatcamGUI/ObjectUI.py:283 msgid "Pass overlap:" msgstr "Passüberlappung:" -#: flatcamGUI/FlatCAMGUI.py:4079 flatcamGUI/ObjectUI.py:285 +#: flatcamGUI/FlatCAMGUI.py:4075 flatcamGUI/ObjectUI.py:285 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -6695,11 +6721,11 @@ msgstr "" "Ein Wert von 0,25 bedeutet hier eine Überlappung von 25% \n" "vom oben angegebenen Werkzeugdurchmesser." -#: flatcamGUI/FlatCAMGUI.py:4087 flatcamGUI/ObjectUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:4083 flatcamGUI/ObjectUI.py:295 msgid "Milling Type:" msgstr "Fräsart:" -#: flatcamGUI/FlatCAMGUI.py:4089 flatcamGUI/ObjectUI.py:297 +#: flatcamGUI/FlatCAMGUI.py:4085 flatcamGUI/ObjectUI.py:297 msgid "" "Milling type:\n" "- climb / best for precision milling and to reduce tool usage\n" @@ -6710,19 +6736,19 @@ msgstr "" "Werkzeugverbrauchs\n" "- konventionell / nützlich, wenn kein Spielausgleich vorliegt" -#: flatcamGUI/FlatCAMGUI.py:4099 +#: flatcamGUI/FlatCAMGUI.py:4095 msgid "Combine Passes" msgstr "Kombinieren Sie Pässe" -#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/ObjectUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:4097 flatcamGUI/ObjectUI.py:309 msgid "Combine all passes into one object" msgstr "Kombinieren Sie alle Durchgänge in einem Objekt" -#: flatcamGUI/FlatCAMGUI.py:4106 +#: flatcamGUI/FlatCAMGUI.py:4102 msgid "Clear non-copper:" msgstr " Nicht-Kupfer löschen: " -#: flatcamGUI/FlatCAMGUI.py:4108 flatcamGUI/FlatCAMGUI.py:5621 +#: flatcamGUI/FlatCAMGUI.py:4104 flatcamGUI/FlatCAMGUI.py:5785 #: flatcamGUI/ObjectUI.py:386 msgid "" "Create a Geometry object with\n" @@ -6731,12 +6757,12 @@ msgstr "" "Erstellen Sie ein Geometrieobjekt mit\n" "Werkzeugwege, um alle Nicht-Kupfer-Bereiche zu schneiden." -#: flatcamGUI/FlatCAMGUI.py:4117 flatcamGUI/FlatCAMGUI.py:4143 +#: flatcamGUI/FlatCAMGUI.py:4113 flatcamGUI/FlatCAMGUI.py:4139 #: flatcamGUI/ObjectUI.py:430 flatcamGUI/ObjectUI.py:464 msgid "Boundary Margin:" msgstr "Grenzmarge:" -#: flatcamGUI/FlatCAMGUI.py:4119 flatcamGUI/ObjectUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:4115 flatcamGUI/ObjectUI.py:432 msgid "" "Specify the edge of the PCB\n" "by drawing a box around all\n" @@ -6748,11 +6774,11 @@ msgstr "" "Objekte mit diesem Minimum\n" "Entfernung." -#: flatcamGUI/FlatCAMGUI.py:4129 flatcamGUI/FlatCAMGUI.py:4152 +#: flatcamGUI/FlatCAMGUI.py:4125 flatcamGUI/FlatCAMGUI.py:4148 msgid "Rounded corners" msgstr "Abgerundete Ecken" -#: flatcamGUI/FlatCAMGUI.py:4131 +#: flatcamGUI/FlatCAMGUI.py:4127 msgid "" "Creates a Geometry objects with polygons\n" "covering the copper-free areas of the PCB." @@ -6760,11 +6786,11 @@ msgstr "" "Erzeugt ein Geometrieobjekt mit Polygonen\n" "bedeckt die kupferfreien Bereiche der Leiterplatte." -#: flatcamGUI/FlatCAMGUI.py:4137 flatcamGUI/ObjectUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:4133 flatcamGUI/ObjectUI.py:454 msgid "Bounding Box:" msgstr " Begrenzungsbox: " -#: flatcamGUI/FlatCAMGUI.py:4145 flatcamGUI/ObjectUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:4141 flatcamGUI/ObjectUI.py:466 msgid "" "Distance of the edges of the box\n" "to the nearest polygon." @@ -6772,7 +6798,7 @@ msgstr "" "Abstand der Kanten der Box\n" "zum nächsten Polygon." -#: flatcamGUI/FlatCAMGUI.py:4154 flatcamGUI/ObjectUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:4150 flatcamGUI/ObjectUI.py:476 msgid "" "If the bounding box is \n" "to have rounded corners\n" @@ -6784,15 +6810,15 @@ msgstr "" "ihr Radius ist gleich\n" "der Abstand." -#: flatcamGUI/FlatCAMGUI.py:4168 +#: flatcamGUI/FlatCAMGUI.py:4164 msgid "Gerber Adv. Options" msgstr "Erweiterte Optionen von Gerber" -#: flatcamGUI/FlatCAMGUI.py:4172 +#: flatcamGUI/FlatCAMGUI.py:4167 msgid "Advanced Param.:" msgstr "Erweiterte Parameter:" -#: flatcamGUI/FlatCAMGUI.py:4174 +#: flatcamGUI/FlatCAMGUI.py:4169 msgid "" "A list of Gerber advanced parameters.\n" "Those parameters are available only for\n" @@ -6802,11 +6828,11 @@ msgstr "" "Diese Parameter sind nur für verfügbar\n" "Fortgeschrittene Anwendungsebene." -#: flatcamGUI/FlatCAMGUI.py:4184 flatcamGUI/ObjectUI.py:314 +#: flatcamGUI/FlatCAMGUI.py:4179 flatcamGUI/ObjectUI.py:314 msgid "\"Follow\"" msgstr "\"Folgen\"" -#: flatcamGUI/FlatCAMGUI.py:4186 flatcamGUI/ObjectUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:4181 flatcamGUI/ObjectUI.py:316 msgid "" "Generate a 'Follow' geometry.\n" "This means that it will cut through\n" @@ -6816,11 +6842,11 @@ msgstr "" "Dies bedeutet, dass es durchschneiden wird\n" "die Mitte der Spur" -#: flatcamGUI/FlatCAMGUI.py:4194 +#: flatcamGUI/FlatCAMGUI.py:4188 msgid "Table Show/Hide" msgstr "Tabelle anzeigen / ausblenden" -#: flatcamGUI/FlatCAMGUI.py:4196 +#: flatcamGUI/FlatCAMGUI.py:4190 msgid "" "Toggle the display of the Gerber Apertures Table.\n" "Also, on hide, it will delete all mark shapes\n" @@ -6830,15 +6856,15 @@ msgstr "" "Beim Ausblenden werden auch alle Markierungsformen gelöscht\n" "das sind auf leinwand gezeichnet." -#: flatcamGUI/FlatCAMGUI.py:4235 +#: flatcamGUI/FlatCAMGUI.py:4229 msgid "Gerber Export" msgstr "Gerber Export" -#: flatcamGUI/FlatCAMGUI.py:4238 flatcamGUI/FlatCAMGUI.py:4909 +#: flatcamGUI/FlatCAMGUI.py:4232 flatcamGUI/FlatCAMGUI.py:4902 msgid "Export Options:" msgstr "Exportoptionen:" -#: flatcamGUI/FlatCAMGUI.py:4240 +#: flatcamGUI/FlatCAMGUI.py:4234 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Gerber menu entry." @@ -6846,19 +6872,19 @@ msgstr "" "Die hier eingestellten Parameter werden in der exportierten Datei verwendet\n" "bei Verwendung des Menüeintrags Datei -> Exportieren -> Gerber exportieren." -#: flatcamGUI/FlatCAMGUI.py:4249 flatcamGUI/FlatCAMGUI.py:4920 +#: flatcamGUI/FlatCAMGUI.py:4243 flatcamGUI/FlatCAMGUI.py:4913 msgid "Units:" msgstr "Einheiten:" -#: flatcamGUI/FlatCAMGUI.py:4251 flatcamGUI/FlatCAMGUI.py:4257 +#: flatcamGUI/FlatCAMGUI.py:4245 flatcamGUI/FlatCAMGUI.py:4251 msgid "The units used in the Gerber file." msgstr "Die in der Gerber-Datei verwendeten Einheiten." -#: flatcamGUI/FlatCAMGUI.py:4263 flatcamGUI/FlatCAMGUI.py:4934 +#: flatcamGUI/FlatCAMGUI.py:4257 flatcamGUI/FlatCAMGUI.py:4927 msgid "Int/Decimals:" msgstr "Ganzzahl / Dezimalzahl:" -#: flatcamGUI/FlatCAMGUI.py:4265 +#: flatcamGUI/FlatCAMGUI.py:4259 msgid "" "The number of digits in the whole part of the number\n" "and in the fractional part of the number." @@ -6866,7 +6892,7 @@ msgstr "" "Die Anzahl der Ziffern im gesamten Teil der Nummer\n" "und im Bruchteil der Zahl." -#: flatcamGUI/FlatCAMGUI.py:4276 +#: flatcamGUI/FlatCAMGUI.py:4270 msgid "" "This numbers signify the number of digits in\n" "the whole part of Gerber coordinates." @@ -6874,7 +6900,7 @@ msgstr "" "Diese Zahlen geben die Anzahl der Ziffern in an\n" "der ganze Teil von Gerber koordiniert." -#: flatcamGUI/FlatCAMGUI.py:4290 +#: flatcamGUI/FlatCAMGUI.py:4284 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Gerber coordinates." @@ -6882,11 +6908,11 @@ msgstr "" "Diese Zahlen geben die Anzahl der Ziffern in an\n" "Der Dezimalteil der Gerber-Koordinaten." -#: flatcamGUI/FlatCAMGUI.py:4299 flatcamGUI/FlatCAMGUI.py:4995 +#: flatcamGUI/FlatCAMGUI.py:4293 flatcamGUI/FlatCAMGUI.py:4988 msgid "Zeros:" msgstr "Nullen:" -#: flatcamGUI/FlatCAMGUI.py:4302 flatcamGUI/FlatCAMGUI.py:4312 +#: flatcamGUI/FlatCAMGUI.py:4296 flatcamGUI/FlatCAMGUI.py:4306 msgid "" "This sets the type of Gerber zeros.\n" "If LZ then Leading Zeros are removed and\n" @@ -6900,23 +6926,25 @@ msgstr "" "Wenn TZ aktiviert ist, werden nachfolgende Nullen entfernt\n" "und führende Nullen werden beibehalten." -#: flatcamGUI/FlatCAMGUI.py:4332 flatcamGUI/FlatCAMGUI.py:5375 -#: flatcamGUI/FlatCAMGUI.py:5619 flatcamGUI/FlatCAMGUI.py:5720 -#: flatcamGUI/FlatCAMGUI.py:5799 flatcamGUI/FlatCAMGUI.py:5858 -#: flatcamGUI/FlatCAMGUI.py:5961 flatcamGUI/FlatCAMGUI.py:6022 -#: flatcamGUI/FlatCAMGUI.py:6221 flatcamGUI/FlatCAMGUI.py:6348 +#: 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 msgid "Parameters:" msgstr "Parameter:" -#: flatcamGUI/FlatCAMGUI.py:4334 +#: flatcamGUI/FlatCAMGUI.py:4328 msgid "A list of Gerber Editor parameters." msgstr "Eine Liste der Gerber-Editor-Parameter." -#: flatcamGUI/FlatCAMGUI.py:4342 flatcamGUI/FlatCAMGUI.py:5385 +#: flatcamGUI/FlatCAMGUI.py:4336 flatcamGUI/FlatCAMGUI.py:5039 +#: flatcamGUI/FlatCAMGUI.py:5501 msgid "Selection limit:" msgstr "Auswahllimit:" -#: flatcamGUI/FlatCAMGUI.py:4344 +#: flatcamGUI/FlatCAMGUI.py:4338 msgid "" "Set the number of selected Gerber geometry\n" "items above which the utility geometry\n" @@ -6930,15 +6958,15 @@ msgstr "" "Erhöht die Leistung beim Bewegen von a\n" "große Anzahl von geometrischen Elementen." -#: flatcamGUI/FlatCAMGUI.py:4364 +#: flatcamGUI/FlatCAMGUI.py:4358 msgid "Excellon General" msgstr "Excellon Allgemeines" -#: flatcamGUI/FlatCAMGUI.py:4386 +#: flatcamGUI/FlatCAMGUI.py:4380 msgid "Excellon Format:" msgstr "Excellon-Format:" -#: flatcamGUI/FlatCAMGUI.py:4388 +#: flatcamGUI/FlatCAMGUI.py:4382 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -6980,16 +7008,16 @@ msgstr "" "Sprint-Layout 2: 4 ZOLL LZ\n" "KiCAD 3: 5 ZOLL TZ" -#: flatcamGUI/FlatCAMGUI.py:4413 +#: flatcamGUI/FlatCAMGUI.py:4407 msgid "INCH:" msgstr "ZOLL:" -#: flatcamGUI/FlatCAMGUI.py:4416 +#: flatcamGUI/FlatCAMGUI.py:4410 msgid "Default values for INCH are 2:4" msgstr "Die Standardwerte für ZOLL sind 2: 4" -#: flatcamGUI/FlatCAMGUI.py:4424 flatcamGUI/FlatCAMGUI.py:4457 -#: flatcamGUI/FlatCAMGUI.py:4949 +#: flatcamGUI/FlatCAMGUI.py:4418 flatcamGUI/FlatCAMGUI.py:4451 +#: flatcamGUI/FlatCAMGUI.py:4942 msgid "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." @@ -6997,8 +7025,8 @@ msgstr "" "Diese Zahlen geben die Anzahl der Ziffern in an\n" "der gesamte Teil der Excellon-Koordinaten." -#: flatcamGUI/FlatCAMGUI.py:4438 flatcamGUI/FlatCAMGUI.py:4471 -#: flatcamGUI/FlatCAMGUI.py:4963 +#: flatcamGUI/FlatCAMGUI.py:4432 flatcamGUI/FlatCAMGUI.py:4465 +#: flatcamGUI/FlatCAMGUI.py:4956 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." @@ -7006,19 +7034,19 @@ msgstr "" "Diese Zahlen geben die Anzahl der Ziffern in an\n" "der Dezimalteil der Excellon-Koordinaten." -#: flatcamGUI/FlatCAMGUI.py:4446 +#: flatcamGUI/FlatCAMGUI.py:4440 msgid "METRIC:" msgstr "METRISCH:" -#: flatcamGUI/FlatCAMGUI.py:4449 +#: flatcamGUI/FlatCAMGUI.py:4443 msgid "Default values for METRIC are 3:3" msgstr "Die Standardwerte für METRISCH sind 3: 3" -#: flatcamGUI/FlatCAMGUI.py:4480 +#: flatcamGUI/FlatCAMGUI.py:4474 msgid "Default Zeros:" msgstr "Standard Nullen:" -#: flatcamGUI/FlatCAMGUI.py:4483 flatcamGUI/FlatCAMGUI.py:4998 +#: flatcamGUI/FlatCAMGUI.py:4477 flatcamGUI/FlatCAMGUI.py:4991 msgid "" "This sets the type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -7032,7 +7060,7 @@ msgstr "" "Wenn TZ aktiviert ist, werden nachfolgende Nullen beibehalten\n" "und führende Nullen werden entfernt." -#: flatcamGUI/FlatCAMGUI.py:4494 +#: flatcamGUI/FlatCAMGUI.py:4488 msgid "" "This sets the default type of Excellon zeros.\n" "If it is not detected in the parsed file the value here\n" @@ -7048,11 +7076,11 @@ msgstr "" "Wenn TZ aktiviert ist, werden nachfolgende Nullen beibehalten\n" "und führende Nullen werden entfernt." -#: flatcamGUI/FlatCAMGUI.py:4508 +#: flatcamGUI/FlatCAMGUI.py:4502 msgid "Default Units:" msgstr "Standard einheiten:" -#: flatcamGUI/FlatCAMGUI.py:4511 +#: flatcamGUI/FlatCAMGUI.py:4505 msgid "" "This sets the default units of Excellon files.\n" "If it is not detected in the parsed file the value here\n" @@ -7064,7 +7092,7 @@ msgstr "" "wird verwendet. Einige Excellon-Dateien haben keinen Header\n" "Daher wird dieser Parameter verwendet." -#: flatcamGUI/FlatCAMGUI.py:4522 +#: flatcamGUI/FlatCAMGUI.py:4516 msgid "" "This sets the units of Excellon files.\n" "Some Excellon files don't have an header\n" @@ -7074,15 +7102,15 @@ msgstr "" "Einige Excellon-Dateien haben keinen Header\n" "Daher wird dieser Parameter verwendet." -#: flatcamGUI/FlatCAMGUI.py:4538 +#: flatcamGUI/FlatCAMGUI.py:4532 msgid "Excellon Optimization:" msgstr "Optimierung der Excellons:" -#: flatcamGUI/FlatCAMGUI.py:4545 +#: flatcamGUI/FlatCAMGUI.py:4539 msgid "Algorithm: " msgstr "Algorithmus:" -#: flatcamGUI/FlatCAMGUI.py:4548 flatcamGUI/FlatCAMGUI.py:4561 +#: flatcamGUI/FlatCAMGUI.py:4542 flatcamGUI/FlatCAMGUI.py:4555 msgid "" "This sets the optimization type for the Excellon drill path.\n" "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" @@ -7106,11 +7134,11 @@ msgstr "" "Wenn DEAKTIVIERT, arbeitet FlatCAM im 32-Bit-Modus und verwendet es\n" "Traveling Salesman-Algorithmus zur Pfadoptimierung." -#: flatcamGUI/FlatCAMGUI.py:4573 +#: flatcamGUI/FlatCAMGUI.py:4567 msgid "Optimization Time: " msgstr "Optimierungszeit:" -#: flatcamGUI/FlatCAMGUI.py:4576 +#: flatcamGUI/FlatCAMGUI.py:4570 msgid "" "When OR-Tools Metaheuristic (MH) is enabled there is a\n" "maximum threshold for how much time is spent doing the\n" @@ -7122,15 +7150,15 @@ msgstr "" "Pfadoptimierung. Diese maximale Dauer wird hier eingestellt.\n" "In Sekunden." -#: flatcamGUI/FlatCAMGUI.py:4618 +#: flatcamGUI/FlatCAMGUI.py:4612 msgid "Excellon Options" msgstr "Excellon-Optionen" -#: flatcamGUI/FlatCAMGUI.py:4621 flatcamGUI/ObjectUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:4615 flatcamGUI/ObjectUI.py:584 msgid "Create CNC Job" msgstr "CNC-Job erstellen" -#: flatcamGUI/FlatCAMGUI.py:4623 +#: flatcamGUI/FlatCAMGUI.py:4617 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object." @@ -7138,13 +7166,13 @@ msgstr "" "Parameter, die zum Erstellen eines CNC-Auftragsobjekts verwendet werden\n" "für dieses Bohrobjekt." -#: flatcamGUI/FlatCAMGUI.py:4631 flatcamGUI/FlatCAMGUI.py:5101 -#: flatcamGUI/FlatCAMGUI.py:6157 flatcamGUI/ObjectUI.py:595 +#: flatcamGUI/FlatCAMGUI.py:4625 flatcamGUI/FlatCAMGUI.py:5217 +#: flatcamGUI/FlatCAMGUI.py:6321 flatcamGUI/ObjectUI.py:595 #: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolCalculators.py:108 msgid "Cut Z:" msgstr "Schnitt Z:" -#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/ObjectUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:4627 flatcamGUI/ObjectUI.py:597 msgid "" "Drill depth (negative)\n" "below the copper surface." @@ -7152,12 +7180,12 @@ msgstr "" "Bohrtiefe (negativ)\n" "unter der Kupferoberfläche." -#: flatcamGUI/FlatCAMGUI.py:4640 flatcamGUI/FlatCAMGUI.py:5134 +#: flatcamGUI/FlatCAMGUI.py:4634 flatcamGUI/FlatCAMGUI.py:5250 #: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1098 msgid "Travel Z:" msgstr "Reise Z:" -#: flatcamGUI/FlatCAMGUI.py:4642 flatcamGUI/ObjectUI.py:607 +#: flatcamGUI/FlatCAMGUI.py:4636 flatcamGUI/ObjectUI.py:607 msgid "" "Tool height when travelling\n" "across the XY plane." @@ -7165,11 +7193,11 @@ msgstr "" "Werkzeughöhe auf Reisen\n" "über die XY-Ebene." -#: flatcamGUI/FlatCAMGUI.py:4650 flatcamGUI/FlatCAMGUI.py:5144 +#: flatcamGUI/FlatCAMGUI.py:4644 flatcamGUI/FlatCAMGUI.py:5260 msgid "Tool change:" msgstr "Werkzeugwechsel:" -#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5146 +#: flatcamGUI/FlatCAMGUI.py:4646 flatcamGUI/FlatCAMGUI.py:5262 #: flatcamGUI/ObjectUI.py:617 msgid "" "Include tool-change sequence\n" @@ -7178,19 +7206,19 @@ msgstr "" "Werkzeugwechselfolge einbeziehen\n" "im G-Code (Pause für Werkzeugwechsel)." -#: flatcamGUI/FlatCAMGUI.py:4659 flatcamGUI/FlatCAMGUI.py:5154 +#: flatcamGUI/FlatCAMGUI.py:4653 flatcamGUI/FlatCAMGUI.py:5270 msgid "Toolchange Z:" msgstr "Werkzeugwechsel Z:" -#: flatcamGUI/FlatCAMGUI.py:4661 flatcamGUI/FlatCAMGUI.py:5156 +#: flatcamGUI/FlatCAMGUI.py:4655 flatcamGUI/FlatCAMGUI.py:5272 msgid "Toolchange Z position." msgstr "Toolchange Z position." -#: flatcamGUI/FlatCAMGUI.py:4667 +#: flatcamGUI/FlatCAMGUI.py:4661 msgid "Feedrate:" msgstr "Vorschubgeschwindigkeit:" -#: flatcamGUI/FlatCAMGUI.py:4669 +#: flatcamGUI/FlatCAMGUI.py:4663 msgid "" "Tool speed while drilling\n" "(in units per minute)." @@ -7198,11 +7226,11 @@ msgstr "" "Werkzeuggeschwindigkeit beim Bohren\n" "(in Einheiten pro Minute)." -#: flatcamGUI/FlatCAMGUI.py:4677 +#: flatcamGUI/FlatCAMGUI.py:4671 msgid "Spindle Speed:" msgstr "Spulengeschwindigkeit:" -#: flatcamGUI/FlatCAMGUI.py:4679 flatcamGUI/FlatCAMGUI.py:5186 +#: flatcamGUI/FlatCAMGUI.py:4673 flatcamGUI/FlatCAMGUI.py:5302 #: flatcamGUI/ObjectUI.py:684 msgid "" "Speed of the spindle\n" @@ -7211,11 +7239,11 @@ msgstr "" "Geschwindigkeit der Spindel\n" "in RPM (optional)" -#: flatcamGUI/FlatCAMGUI.py:4687 flatcamGUI/FlatCAMGUI.py:5194 +#: flatcamGUI/FlatCAMGUI.py:4681 flatcamGUI/FlatCAMGUI.py:5310 msgid "Spindle dir.:" msgstr "Spindelrichtung:" -#: flatcamGUI/FlatCAMGUI.py:4689 flatcamGUI/FlatCAMGUI.py:5196 +#: flatcamGUI/FlatCAMGUI.py:4683 flatcamGUI/FlatCAMGUI.py:5312 msgid "" "This sets the direction that the spindle is rotating.\n" "It can be either:\n" @@ -7227,12 +7255,12 @@ msgstr "" "- CW = im Uhrzeigersinn oder\n" "- CCW = gegen den Uhrzeigersinn" -#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 +#: flatcamGUI/FlatCAMGUI.py:4695 flatcamGUI/FlatCAMGUI.py:5324 #: flatcamGUI/ObjectUI.py:692 flatcamGUI/ObjectUI.py:1224 msgid "Dwell:" msgstr "Wohnen:" -#: flatcamGUI/FlatCAMGUI.py:4703 flatcamGUI/FlatCAMGUI.py:5210 +#: flatcamGUI/FlatCAMGUI.py:4697 flatcamGUI/FlatCAMGUI.py:5326 #: flatcamGUI/ObjectUI.py:694 flatcamGUI/ObjectUI.py:1227 msgid "" "Pause to allow the spindle to reach its\n" @@ -7241,21 +7269,21 @@ msgstr "" "Pause, damit die Spindel ihre erreichen kann\n" "Geschwindigkeit vor dem Schneiden." -#: flatcamGUI/FlatCAMGUI.py:4706 flatcamGUI/FlatCAMGUI.py:5213 +#: flatcamGUI/FlatCAMGUI.py:4700 flatcamGUI/FlatCAMGUI.py:5329 msgid "Duration:" msgstr "Dauer:" -#: flatcamGUI/FlatCAMGUI.py:4708 flatcamGUI/FlatCAMGUI.py:5215 +#: flatcamGUI/FlatCAMGUI.py:4702 flatcamGUI/FlatCAMGUI.py:5331 #: flatcamGUI/ObjectUI.py:699 flatcamGUI/ObjectUI.py:1234 msgid "Number of milliseconds for spindle to dwell." msgstr "Anzahl der Millisekunden, die die Spindel halten soll." -#: flatcamGUI/FlatCAMGUI.py:4720 flatcamGUI/FlatCAMGUI.py:5225 +#: flatcamGUI/FlatCAMGUI.py:4714 flatcamGUI/FlatCAMGUI.py:5341 #: flatcamGUI/ObjectUI.py:707 msgid "Postprocessor:" msgstr "Postprozessor:" -#: flatcamGUI/FlatCAMGUI.py:4722 +#: flatcamGUI/FlatCAMGUI.py:4716 msgid "" "The postprocessor file that dictates\n" "gcode output." @@ -7263,11 +7291,11 @@ msgstr "" "Die Postprozessor-Datei, die diktiert\n" "gcode ausgabe." -#: flatcamGUI/FlatCAMGUI.py:4732 +#: flatcamGUI/FlatCAMGUI.py:4725 msgid "Gcode: " msgstr "Gcode:" -#: flatcamGUI/FlatCAMGUI.py:4734 +#: flatcamGUI/FlatCAMGUI.py:4727 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -7280,23 +7308,23 @@ msgstr "" "angezeigt\n" "in Bohrer umgewandelt." -#: flatcamGUI/FlatCAMGUI.py:4750 flatcamGUI/ObjectUI.py:772 +#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:772 msgid "Mill Holes" msgstr " Löcher bohren " -#: flatcamGUI/FlatCAMGUI.py:4752 flatcamGUI/ObjectUI.py:774 +#: flatcamGUI/FlatCAMGUI.py:4745 flatcamGUI/ObjectUI.py:774 msgid "Create Geometry for milling holes." msgstr "Erstellen Sie Geometrie zum Fräsen von Löchern." -#: flatcamGUI/FlatCAMGUI.py:4758 +#: flatcamGUI/FlatCAMGUI.py:4751 msgid "Drill Tool dia:" msgstr "Bohrwerkzeug Durchmesser:" -#: flatcamGUI/FlatCAMGUI.py:4765 +#: flatcamGUI/FlatCAMGUI.py:4758 msgid "Slot Tool dia:" msgstr "Schlitzwerkzeug Durchmesser:" -#: flatcamGUI/FlatCAMGUI.py:4767 +#: flatcamGUI/FlatCAMGUI.py:4760 msgid "" "Diameter of the cutting tool\n" "when milling slots." @@ -7304,19 +7332,19 @@ msgstr "" "Durchmesser des Schneidewerkzeugs\n" "beim Fräsen von Schlitzen." -#: flatcamGUI/FlatCAMGUI.py:4779 +#: flatcamGUI/FlatCAMGUI.py:4772 msgid "Defaults" msgstr "Standardwerte" -#: flatcamGUI/FlatCAMGUI.py:4792 +#: flatcamGUI/FlatCAMGUI.py:4785 msgid "Excellon Adv. Options" msgstr "Excellon erweiterte Optionen" -#: flatcamGUI/FlatCAMGUI.py:4798 flatcamGUI/FlatCAMGUI.py:5248 +#: flatcamGUI/FlatCAMGUI.py:4791 flatcamGUI/FlatCAMGUI.py:5364 msgid "Advanced Options:" msgstr "Erweiterte Optionen:" -#: flatcamGUI/FlatCAMGUI.py:4800 +#: flatcamGUI/FlatCAMGUI.py:4793 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object that are shown when App Level is Advanced." @@ -7325,11 +7353,11 @@ msgstr "" "für dieses Drill-Objekt, das angezeigt wird, wenn die App-Ebene Erweitert " "ist." -#: flatcamGUI/FlatCAMGUI.py:4808 +#: flatcamGUI/FlatCAMGUI.py:4801 msgid "Offset Z:" msgstr "Versatz Z:" -#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/ObjectUI.py:574 +#: flatcamGUI/FlatCAMGUI.py:4803 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" @@ -7340,20 +7368,20 @@ msgstr "" "erzeugen.\n" "Der Wert hier kann den Parameter Cut Z ausgleichen." -#: flatcamGUI/FlatCAMGUI.py:4817 flatcamGUI/FlatCAMGUI.py:5259 +#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/FlatCAMGUI.py:5375 msgid "Toolchange X,Y:" msgstr "Werkzeugwechsel X, Y:" -#: flatcamGUI/FlatCAMGUI.py:4819 flatcamGUI/FlatCAMGUI.py:5261 +#: flatcamGUI/FlatCAMGUI.py:4812 flatcamGUI/FlatCAMGUI.py:5377 msgid "Toolchange X,Y position." msgstr "Werkzeugwechsel X, Y Position." -#: flatcamGUI/FlatCAMGUI.py:4825 flatcamGUI/FlatCAMGUI.py:5268 +#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5384 #: flatcamGUI/ObjectUI.py:634 msgid "Start move Z:" msgstr "Startbewegung Z:" -#: flatcamGUI/FlatCAMGUI.py:4827 +#: flatcamGUI/FlatCAMGUI.py:4820 msgid "" "Height of the tool just after start.\n" "Delete the value if you don't need this feature." @@ -7361,12 +7389,12 @@ msgstr "" "Höhe des Werkzeugs gleich nach dem Start.\n" "Löschen Sie den Wert, wenn Sie diese Funktion nicht benötigen." -#: flatcamGUI/FlatCAMGUI.py:4834 flatcamGUI/FlatCAMGUI.py:5278 +#: flatcamGUI/FlatCAMGUI.py:4827 flatcamGUI/FlatCAMGUI.py:5394 #: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1144 msgid "End move Z:" msgstr "Bewegung beenden Z:" -#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5280 +#: flatcamGUI/FlatCAMGUI.py:4829 flatcamGUI/FlatCAMGUI.py:5396 msgid "" "Height of the tool after\n" "the last move at the end of the job." @@ -7374,12 +7402,12 @@ msgstr "" "Höhe des Werkzeugs nach\n" "die letzte Bewegung am Ende des Jobs." -#: flatcamGUI/FlatCAMGUI.py:4843 flatcamGUI/FlatCAMGUI.py:5288 +#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5404 #: flatcamGUI/ObjectUI.py:665 msgid "Feedrate Rapids:" msgstr "Vorschubgeschwindigkeit:" -#: flatcamGUI/FlatCAMGUI.py:4845 flatcamGUI/ObjectUI.py:667 +#: flatcamGUI/FlatCAMGUI.py:4838 flatcamGUI/ObjectUI.py:667 msgid "" "Tool speed while drilling\n" "(in units per minute).\n" @@ -7393,12 +7421,12 @@ msgstr "" "Es ist nur für Marlin nützlich,\n" "für andere Fälle ignorieren." -#: flatcamGUI/FlatCAMGUI.py:4856 flatcamGUI/FlatCAMGUI.py:5312 +#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5428 #: flatcamGUI/ObjectUI.py:718 flatcamGUI/ObjectUI.py:1256 msgid "Probe Z depth:" msgstr "Sonde Z Tiefe:" -#: flatcamGUI/FlatCAMGUI.py:4858 flatcamGUI/FlatCAMGUI.py:5314 +#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5430 #: flatcamGUI/ObjectUI.py:720 flatcamGUI/ObjectUI.py:1259 msgid "" "The maximum depth that the probe is allowed\n" @@ -7407,21 +7435,21 @@ msgstr "" "Die maximale Tiefe, in der die Sonde zulässig ist\n" "zu untersuchen. Negativer Wert in aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:4866 flatcamGUI/FlatCAMGUI.py:5322 +#: flatcamGUI/FlatCAMGUI.py:4859 flatcamGUI/FlatCAMGUI.py:5438 #: flatcamGUI/ObjectUI.py:730 flatcamGUI/ObjectUI.py:1270 msgid "Feedrate Probe:" msgstr "Vorschubsonde:" -#: flatcamGUI/FlatCAMGUI.py:4868 flatcamGUI/FlatCAMGUI.py:5324 +#: flatcamGUI/FlatCAMGUI.py:4861 flatcamGUI/FlatCAMGUI.py:5440 #: flatcamGUI/ObjectUI.py:732 flatcamGUI/ObjectUI.py:1273 msgid "The feedrate used while the probe is probing." msgstr "Der Vorschub während der Sondenmessung." -#: flatcamGUI/FlatCAMGUI.py:4874 flatcamGUI/FlatCAMGUI.py:5331 +#: flatcamGUI/FlatCAMGUI.py:4867 flatcamGUI/FlatCAMGUI.py:5447 msgid "Fast Plunge:" msgstr "Schneller Sprung:" -#: flatcamGUI/FlatCAMGUI.py:4876 flatcamGUI/FlatCAMGUI.py:5333 +#: flatcamGUI/FlatCAMGUI.py:4869 flatcamGUI/FlatCAMGUI.py:5449 msgid "" "By checking this, the vertical move from\n" "Z_Toolchange to Z_move is done with G0,\n" @@ -7433,11 +7461,11 @@ msgstr "" "Das bedeutet die schnellste verfügbare Geschwindigkeit.\n" "WARNUNG: Die Verschiebung erfolgt bei Toolchange X, Y-Koordinaten." -#: flatcamGUI/FlatCAMGUI.py:4885 +#: flatcamGUI/FlatCAMGUI.py:4878 msgid "Fast Retract:" msgstr "Schneller Rückzug:" -#: flatcamGUI/FlatCAMGUI.py:4887 +#: flatcamGUI/FlatCAMGUI.py:4880 msgid "" "Exit hole strategy.\n" " - When uncheked, while exiting the drilled hole the drill bit\n" @@ -7453,11 +7481,11 @@ msgstr "" "  - Wenn Sie den Weg von Z-Schnitt (Schnitttiefe) nach Z_Move prüfen\n" "(Fahrhöhe) erfolgt so schnell wie möglich (G0) in einem Zug." -#: flatcamGUI/FlatCAMGUI.py:4906 +#: flatcamGUI/FlatCAMGUI.py:4899 msgid "Excellon Export" msgstr "Excellon Export" -#: flatcamGUI/FlatCAMGUI.py:4911 +#: flatcamGUI/FlatCAMGUI.py:4904 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Excellon menu entry." @@ -7466,11 +7494,11 @@ msgstr "" "bei Verwendung des Menüeintrags Datei -> Exportieren -> Exportieren von " "Excellon." -#: flatcamGUI/FlatCAMGUI.py:4922 flatcamGUI/FlatCAMGUI.py:4928 +#: flatcamGUI/FlatCAMGUI.py:4915 flatcamGUI/FlatCAMGUI.py:4921 msgid "The units used in the Excellon file." msgstr "Die in der Excellon-Datei verwendeten Einheiten." -#: flatcamGUI/FlatCAMGUI.py:4936 +#: flatcamGUI/FlatCAMGUI.py:4929 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -7482,11 +7510,11 @@ msgstr "" "Hier legen wir das verwendete Format fest\n" "Koordinaten verwenden keine Periode." -#: flatcamGUI/FlatCAMGUI.py:4972 +#: flatcamGUI/FlatCAMGUI.py:4965 msgid "Format:" msgstr "Format:" -#: flatcamGUI/FlatCAMGUI.py:4974 flatcamGUI/FlatCAMGUI.py:4984 +#: flatcamGUI/FlatCAMGUI.py:4967 flatcamGUI/FlatCAMGUI.py:4977 msgid "" "Select the kind of coordinates format used.\n" "Coordinates can be saved with decimal point or without.\n" @@ -7503,7 +7531,7 @@ msgstr "" "Es muss auch angegeben werden, wenn LZ = führende Nullen beibehalten werden\n" "oder TZ = nachfolgende Nullen bleiben erhalten." -#: flatcamGUI/FlatCAMGUI.py:5008 +#: flatcamGUI/FlatCAMGUI.py:5001 msgid "" "This sets the default type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -7517,11 +7545,61 @@ msgstr "" "Wenn TZ aktiviert ist, werden nachfolgende Nullen beibehalten\n" "und führende Nullen werden entfernt." -#: flatcamGUI/FlatCAMGUI.py:5034 +#: flatcamGUI/FlatCAMGUI.py:5031 +msgid "A list of Excellon Editor parameters." +msgstr "Eine Liste der Excellon Editor-Parameter." + +#: flatcamGUI/FlatCAMGUI.py:5041 +msgid "" +"Set the number of selected Excellon geometry\n" +"items above which the utility geometry\n" +"becomes just a selection rectangle.\n" +"Increases the performance when moving a\n" +"large number of geometric elements." +msgstr "" +"Stellen Sie die Anzahl der ausgewählten Excellon-Geometrien ein\n" +"Elemente, über denen die Nutzgeometrie\n" +"wird nur ein Auswahlrechteck.\n" +"Erhöht die Leistung beim Bewegen von a\n" +"große Anzahl von geometrischen Elementen." + +#: flatcamGUI/FlatCAMGUI.py:5053 +msgid "New Tool Dia:" +msgstr "Neuer Werkzeugdurchm.:" + +#: flatcamGUI/FlatCAMGUI.py:5076 +msgid "Linear Drill Array:" +msgstr " Linearbohrer-Array: " + +#: flatcamGUI/FlatCAMGUI.py:5080 +msgid "Linear Dir.:" +msgstr "Lineare Richt.:" + +#: flatcamGUI/FlatCAMGUI.py:5116 +msgid "Circular Drill Array:" +msgstr " Rundbohrer-Array: " + +#: flatcamGUI/FlatCAMGUI.py:5120 +msgid "Circular Dir.:" +msgstr "Kreisricht.:" + +#: flatcamGUI/FlatCAMGUI.py:5122 +msgid "" +"Direction for circular array.\n" +"Can be CW = clockwise or CCW = counter clockwise." +msgstr "" +"Richtung für kreisförmige Anordnung. \n" +"Kann CW = Uhrzeigersinn oder CCW = Gegenuhrzeigersinn sein." + +#: flatcamGUI/FlatCAMGUI.py:5133 +msgid "Circ. Angle:" +msgstr "Kreiswinkel:" + +#: flatcamGUI/FlatCAMGUI.py:5150 msgid "Geometry General" msgstr "Geometrie Allgemein" -#: flatcamGUI/FlatCAMGUI.py:5052 +#: flatcamGUI/FlatCAMGUI.py:5168 msgid "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." @@ -7529,15 +7607,15 @@ msgstr "" "Die Anzahl der Kreisschritte für die Geometrie\n" "Kreis- und Bogenformen lineare Annäherung." -#: flatcamGUI/FlatCAMGUI.py:5060 +#: flatcamGUI/FlatCAMGUI.py:5176 msgid "Tools" msgstr "Werkzeuge" -#: flatcamGUI/FlatCAMGUI.py:5067 +#: flatcamGUI/FlatCAMGUI.py:5183 msgid "Tool dia: " msgstr "Werkzeugdurchmesser:" -#: flatcamGUI/FlatCAMGUI.py:5069 +#: flatcamGUI/FlatCAMGUI.py:5185 msgid "" "The diameter of the cutting\n" "tool.." @@ -7545,15 +7623,15 @@ msgstr "" "Der Durchmesser des Schnitts\n" "Werkzeug.." -#: flatcamGUI/FlatCAMGUI.py:5084 +#: flatcamGUI/FlatCAMGUI.py:5200 msgid "Geometry Options" msgstr "Geometrieoptionen" -#: flatcamGUI/FlatCAMGUI.py:5089 +#: flatcamGUI/FlatCAMGUI.py:5205 msgid "Create CNC Job:" msgstr "CNC-Auftrag erstellen:" -#: flatcamGUI/FlatCAMGUI.py:5091 +#: flatcamGUI/FlatCAMGUI.py:5207 msgid "" "Create a CNC Job object\n" "tracing the contours of this\n" @@ -7563,7 +7641,7 @@ msgstr "" "die Konturen davon nachzeichnen\n" "Geometrieobjekt." -#: flatcamGUI/FlatCAMGUI.py:5103 flatcamGUI/ObjectUI.py:1065 +#: flatcamGUI/FlatCAMGUI.py:5219 flatcamGUI/ObjectUI.py:1065 msgid "" "Cutting depth (negative)\n" "below the copper surface." @@ -7571,19 +7649,19 @@ msgstr "" "Schnitttiefe (negativ)\n" "unter der Kupferoberfläche." -#: flatcamGUI/FlatCAMGUI.py:5111 +#: flatcamGUI/FlatCAMGUI.py:5227 msgid "Multidepth" msgstr "Mehrere tiefe" -#: flatcamGUI/FlatCAMGUI.py:5113 +#: flatcamGUI/FlatCAMGUI.py:5229 msgid "Multidepth usage: True or False." msgstr "Mehrere Tiefe-Nutzung: Richtig oder Falsch." -#: flatcamGUI/FlatCAMGUI.py:5118 +#: flatcamGUI/FlatCAMGUI.py:5234 msgid "Depth/Pass:" msgstr "Tiefe / Pass:" -#: flatcamGUI/FlatCAMGUI.py:5120 +#: flatcamGUI/FlatCAMGUI.py:5236 msgid "" "The depth to cut on each pass,\n" "when multidepth is enabled.\n" @@ -7597,7 +7675,7 @@ msgstr "" "es ist ein Bruch aus der Tiefe\n" "was einen negativen Wert hat." -#: flatcamGUI/FlatCAMGUI.py:5136 flatcamGUI/ObjectUI.py:1101 +#: flatcamGUI/FlatCAMGUI.py:5252 flatcamGUI/ObjectUI.py:1101 msgid "" "Height of the tool when\n" "moving without cutting." @@ -7605,11 +7683,11 @@ msgstr "" "Höhe des Werkzeugs, wenn\n" "bewegen ohne zu schneiden" -#: flatcamGUI/FlatCAMGUI.py:5163 flatcamGUI/ObjectUI.py:1156 +#: flatcamGUI/FlatCAMGUI.py:5279 flatcamGUI/ObjectUI.py:1156 msgid "Feed Rate X-Y:" msgstr "Vorschubrate X-Y:" -#: flatcamGUI/FlatCAMGUI.py:5165 flatcamGUI/ObjectUI.py:1159 +#: flatcamGUI/FlatCAMGUI.py:5281 flatcamGUI/ObjectUI.py:1159 msgid "" "Cutting speed in the XY\n" "plane in units per minute" @@ -7617,11 +7695,11 @@ msgstr "" "Schnittgeschwindigkeit im XY\n" "Flugzeug in Einheiten pro Minute" -#: flatcamGUI/FlatCAMGUI.py:5173 +#: flatcamGUI/FlatCAMGUI.py:5289 msgid "Feed Rate Z:" msgstr "Vorschubrate Z:" -#: flatcamGUI/FlatCAMGUI.py:5175 +#: flatcamGUI/FlatCAMGUI.py:5291 msgid "" "Cutting speed in the XY\n" "plane in units per minute.\n" @@ -7631,12 +7709,12 @@ msgstr "" "Flugzeug in Einheiten pro Minute.\n" "Es heißt auch Sturz." -#: flatcamGUI/FlatCAMGUI.py:5184 flatcamGUI/ObjectUI.py:682 +#: flatcamGUI/FlatCAMGUI.py:5300 flatcamGUI/ObjectUI.py:682 #: flatcamGUI/ObjectUI.py:1211 msgid "Spindle speed:" msgstr "Spulengeschwindigkeit:" -#: flatcamGUI/FlatCAMGUI.py:5227 +#: flatcamGUI/FlatCAMGUI.py:5343 msgid "" "The postprocessor file that dictates\n" "Machine Code output." @@ -7644,11 +7722,11 @@ msgstr "" "Die Postprozessor-Datei, die diktiert\n" "Maschinencode-Ausgabe." -#: flatcamGUI/FlatCAMGUI.py:5243 +#: flatcamGUI/FlatCAMGUI.py:5359 msgid "Geometry Adv. Options" msgstr "Geometrie Erw. Optionen" -#: flatcamGUI/FlatCAMGUI.py:5250 +#: flatcamGUI/FlatCAMGUI.py:5366 msgid "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." @@ -7656,7 +7734,7 @@ msgstr "" "Parameter zum Erstellen eines CNC-Auftragsobjekts\n" "Verfolgung der Konturen eines Geometrieobjekts." -#: flatcamGUI/FlatCAMGUI.py:5270 +#: flatcamGUI/FlatCAMGUI.py:5386 msgid "" "Height of the tool just after starting the work.\n" "Delete the value if you don't need this feature." @@ -7664,7 +7742,7 @@ msgstr "" "Höhe des Werkzeugs unmittelbar nach Beginn der Arbeit.\n" "Löschen Sie den Wert, wenn Sie diese Funktion nicht benötigen." -#: flatcamGUI/FlatCAMGUI.py:5290 +#: flatcamGUI/FlatCAMGUI.py:5406 msgid "" "Cutting speed in the XY plane\n" "(in units per minute).\n" @@ -7678,11 +7756,11 @@ msgstr "" "Es ist nur für Marlin nützlich,\n" "für andere Fälle ignorieren." -#: flatcamGUI/FlatCAMGUI.py:5302 +#: flatcamGUI/FlatCAMGUI.py:5418 msgid "Re-cut 1st pt." msgstr "1. Punkt erneut schneiden" -#: flatcamGUI/FlatCAMGUI.py:5304 flatcamGUI/ObjectUI.py:1202 +#: flatcamGUI/FlatCAMGUI.py:5420 flatcamGUI/ObjectUI.py:1202 msgid "" "In order to remove possible\n" "copper leftovers where first cut\n" @@ -7694,11 +7772,11 @@ msgstr "" "Beim letzten Schnitt treffen wir einen\n" "verlängerter Schnitt über dem ersten Schnittabschnitt." -#: flatcamGUI/FlatCAMGUI.py:5343 +#: flatcamGUI/FlatCAMGUI.py:5459 msgid "Seg. X size:" msgstr "Seg. X Größe:" -#: flatcamGUI/FlatCAMGUI.py:5345 +#: flatcamGUI/FlatCAMGUI.py:5461 msgid "" "The size of the trace segment on the X axis.\n" "Useful for auto-leveling.\n" @@ -7708,11 +7786,11 @@ msgstr "" "Nützlich für die automatische Nivellierung.\n" "Ein Wert von 0 bedeutet keine Segmentierung auf der X-Achse." -#: flatcamGUI/FlatCAMGUI.py:5354 +#: flatcamGUI/FlatCAMGUI.py:5470 msgid "Seg. Y size:" msgstr "Seg. Y Größe:" -#: flatcamGUI/FlatCAMGUI.py:5356 +#: flatcamGUI/FlatCAMGUI.py:5472 msgid "" "The size of the trace segment on the Y axis.\n" "Useful for auto-leveling.\n" @@ -7722,15 +7800,15 @@ msgstr "" "Nützlich für die automatische Nivellierung.\n" "Ein Wert von 0 bedeutet keine Segmentierung auf der Y-Achse." -#: flatcamGUI/FlatCAMGUI.py:5372 +#: flatcamGUI/FlatCAMGUI.py:5488 msgid "Geometry Editor" msgstr "Geo-Editor" -#: flatcamGUI/FlatCAMGUI.py:5377 +#: flatcamGUI/FlatCAMGUI.py:5493 msgid "A list of Geometry Editor parameters." msgstr "Eine Liste der Geometry Editor-Parameter." -#: flatcamGUI/FlatCAMGUI.py:5387 +#: flatcamGUI/FlatCAMGUI.py:5503 msgid "" "Set the number of selected geometry\n" "items above which the utility geometry\n" @@ -7744,20 +7822,20 @@ msgstr "" "Erhöht die Leistung beim Bewegen von a\n" "große Anzahl von geometrischen Elementen." -#: flatcamGUI/FlatCAMGUI.py:5406 +#: flatcamGUI/FlatCAMGUI.py:5522 msgid "CNC Job General" msgstr "CNC-Job Allgemein" -#: flatcamGUI/FlatCAMGUI.py:5419 flatcamGUI/ObjectUI.py:544 -#: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1434 +#: flatcamGUI/FlatCAMGUI.py:5535 flatcamGUI/ObjectUI.py:544 +#: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1447 msgid "Plot Object" msgstr "Plotobjekt" -#: flatcamGUI/FlatCAMGUI.py:5426 +#: flatcamGUI/FlatCAMGUI.py:5542 msgid "Plot kind:" msgstr "Darstellungsart:" -#: flatcamGUI/FlatCAMGUI.py:5428 flatcamGUI/ObjectUI.py:1356 +#: flatcamGUI/FlatCAMGUI.py:5544 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" @@ -7770,7 +7848,39 @@ msgstr "" "über dem Werkstück oder es kann vom Typ 'Ausschneiden' sein,\n" "was bedeutet, dass die Bewegungen, die in das Material geschnitten werden." -#: flatcamGUI/FlatCAMGUI.py:5447 +#: flatcamGUI/FlatCAMGUI.py:5561 +msgid "Display Annotation:" +msgstr "Anmerkung anzeigen:" + +#: flatcamGUI/FlatCAMGUI.py:5563 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 "" +"Hiermit wird ausgewählt, ob Textanmerkungen auf dem Plot angezeigt werden " +"sollen.\n" +"Wenn diese Option aktiviert ist, werden die Nummern für jedes Ende in der " +"richtigen Reihenfolge angezeigt\n" +"einer Reiseleitung." + +#: flatcamGUI/FlatCAMGUI.py:5575 +msgid "Annotation Size:" +msgstr "Anmerkungsgröße:" + +#: flatcamGUI/FlatCAMGUI.py:5577 +msgid "The font size of the annotation text. In pixels." +msgstr "Die Schriftgröße des Anmerkungstextes. In Pixeln." + +#: flatcamGUI/FlatCAMGUI.py:5585 +msgid "Annotation Color:" +msgstr "Anmerkungsfarbe:" + +#: flatcamGUI/FlatCAMGUI.py:5587 +msgid "Set the font color for the annotation texts." +msgstr "Legen Sie die Schriftfarbe für die Anmerkungstexte fest." + +#: flatcamGUI/FlatCAMGUI.py:5610 msgid "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." @@ -7778,7 +7888,7 @@ msgstr "" "Die Anzahl der Kreisschritte für GCode\n" "Kreis- und Bogenformen lineare Annäherung." -#: flatcamGUI/FlatCAMGUI.py:5457 +#: flatcamGUI/FlatCAMGUI.py:5620 msgid "" "Diameter of the tool to be\n" "rendered in the plot." @@ -7786,11 +7896,11 @@ msgstr "" "Durchmesser des Werkzeugs sein\n" "in der Handlung gerendert." -#: flatcamGUI/FlatCAMGUI.py:5465 +#: flatcamGUI/FlatCAMGUI.py:5628 msgid "Coords dec.:" msgstr "Koordinate Dezimalzahlen:" -#: flatcamGUI/FlatCAMGUI.py:5467 +#: flatcamGUI/FlatCAMGUI.py:5630 msgid "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" @@ -7798,11 +7908,11 @@ msgstr "" "Die Anzahl der Dezimalstellen, für die verwendet werden soll\n" "die X-, Y-, Z-Koordinaten im CNC-Code (GCODE usw.)" -#: flatcamGUI/FlatCAMGUI.py:5475 +#: flatcamGUI/FlatCAMGUI.py:5638 msgid "Feedrate dec.:" msgstr "Vorschub-Nachkommastellen:" -#: flatcamGUI/FlatCAMGUI.py:5477 +#: flatcamGUI/FlatCAMGUI.py:5640 msgid "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" @@ -7810,16 +7920,16 @@ msgstr "" "Die Anzahl der Dezimalstellen, für die verwendet werden soll\n" "der Vorschubparameter im CNC-Code (GCODE usw.)" -#: flatcamGUI/FlatCAMGUI.py:5492 +#: flatcamGUI/FlatCAMGUI.py:5655 msgid "CNC Job Options" msgstr "CNC-Auftragsoptionen" -#: flatcamGUI/FlatCAMGUI.py:5495 flatcamGUI/FlatCAMGUI.py:5536 +#: flatcamGUI/FlatCAMGUI.py:5658 flatcamGUI/FlatCAMGUI.py:5699 msgid "Export G-Code:" msgstr "G-Code exportieren:" -#: flatcamGUI/FlatCAMGUI.py:5497 flatcamGUI/FlatCAMGUI.py:5538 -#: flatcamGUI/ObjectUI.py:1470 +#: flatcamGUI/FlatCAMGUI.py:5660 flatcamGUI/FlatCAMGUI.py:5701 +#: flatcamGUI/ObjectUI.py:1483 msgid "" "Export and save G-Code to\n" "make this object to a file." @@ -7827,11 +7937,11 @@ msgstr "" "Exportieren und speichern Sie den G-Code nach\n" "Machen Sie dieses Objekt in eine Datei." -#: flatcamGUI/FlatCAMGUI.py:5503 +#: flatcamGUI/FlatCAMGUI.py:5666 msgid "Prepend to G-Code:" msgstr "Voranstellen an G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5505 +#: flatcamGUI/FlatCAMGUI.py:5668 msgid "" "Type here any G-Code commands you would\n" "like to add at the beginning of the G-Code file." @@ -7839,11 +7949,11 @@ msgstr "" "Geben Sie hier alle G-Code-Befehle ein\n" "gerne am Anfang der G-Code-Datei hinzufügen." -#: flatcamGUI/FlatCAMGUI.py:5514 +#: flatcamGUI/FlatCAMGUI.py:5677 msgid "Append to G-Code:" msgstr "An G-Code anhängen:" -#: flatcamGUI/FlatCAMGUI.py:5516 flatcamGUI/ObjectUI.py:1492 +#: flatcamGUI/FlatCAMGUI.py:5679 flatcamGUI/ObjectUI.py:1505 msgid "" "Type here any G-Code commands you would\n" "like to append to the generated file.\n" @@ -7853,15 +7963,15 @@ msgstr "" "gerne an die generierte Datei anhängen.\n" "I.e .: M2 (Programmende)" -#: flatcamGUI/FlatCAMGUI.py:5533 +#: flatcamGUI/FlatCAMGUI.py:5696 msgid "CNC Job Adv. Options" msgstr "Erw. CNC-Joboptionen" -#: flatcamGUI/FlatCAMGUI.py:5544 flatcamGUI/ObjectUI.py:1510 +#: flatcamGUI/FlatCAMGUI.py:5707 flatcamGUI/ObjectUI.py:1523 msgid "Toolchange G-Code:" msgstr "Werkzeugwechsel G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5546 +#: flatcamGUI/FlatCAMGUI.py:5709 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -7873,11 +7983,11 @@ msgstr "" "Dies stellt einen benutzerdefinierten Werkzeugwechsel-GCode dar.\n" "oder ein Werkzeugwechsel-Makro." -#: flatcamGUI/FlatCAMGUI.py:5560 flatcamGUI/ObjectUI.py:1532 +#: flatcamGUI/FlatCAMGUI.py:5723 flatcamGUI/ObjectUI.py:1545 msgid "Use Toolchange Macro" msgstr "Benutze das Werkzeugwechselmakro" -#: flatcamGUI/FlatCAMGUI.py:5562 flatcamGUI/ObjectUI.py:1535 +#: flatcamGUI/FlatCAMGUI.py:5725 flatcamGUI/ObjectUI.py:1548 msgid "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." @@ -7885,7 +7995,7 @@ msgstr "" "Aktivieren Sie dieses Kontrollkästchen, wenn Sie verwenden möchten\n" "ein benutzerdefiniertes Werkzeug ändert GCode (Makro)." -#: flatcamGUI/FlatCAMGUI.py:5574 flatcamGUI/ObjectUI.py:1544 +#: flatcamGUI/FlatCAMGUI.py:5737 flatcamGUI/ObjectUI.py:1557 msgid "" "A list of the FlatCAM variables that can be used\n" "in the Toolchange event.\n" @@ -7895,73 +8005,73 @@ msgstr "" "im Werkzeugwechselereignis.\n" "Sie müssen mit dem \"%\" -Symbol umgeben sein" -#: flatcamGUI/FlatCAMGUI.py:5581 flatcamGUI/ObjectUI.py:1551 +#: flatcamGUI/FlatCAMGUI.py:5744 flatcamGUI/ObjectUI.py:1564 msgid "Parameters" msgstr "Parameters" -#: flatcamGUI/FlatCAMGUI.py:5584 flatcamGUI/ObjectUI.py:1554 +#: flatcamGUI/FlatCAMGUI.py:5747 flatcamGUI/ObjectUI.py:1567 msgid "FlatCAM CNC parameters" msgstr "FlatCAM CNC-Parameter" -#: flatcamGUI/FlatCAMGUI.py:5585 flatcamGUI/ObjectUI.py:1555 +#: flatcamGUI/FlatCAMGUI.py:5748 flatcamGUI/ObjectUI.py:1568 msgid "tool = tool number" msgstr "tool = Werkzeugnummer" -#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1556 +#: flatcamGUI/FlatCAMGUI.py:5749 flatcamGUI/ObjectUI.py:1569 msgid "tooldia = tool diameter" msgstr "tooldia = Werkzeugdurchmesser" -#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1557 +#: flatcamGUI/FlatCAMGUI.py:5750 flatcamGUI/ObjectUI.py:1570 msgid "t_drills = for Excellon, total number of drills" msgstr "t_drills = für Excellon die Gesamtzahl der Bohrer" -#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1558 +#: flatcamGUI/FlatCAMGUI.py:5751 flatcamGUI/ObjectUI.py:1571 msgid "x_toolchange = X coord for Toolchange" msgstr "x_toolchange = X-Koord für Werkzeugwechsel" -#: flatcamGUI/FlatCAMGUI.py:5589 flatcamGUI/ObjectUI.py:1559 +#: flatcamGUI/FlatCAMGUI.py:5752 flatcamGUI/ObjectUI.py:1572 msgid "y_toolchange = Y coord for Toolchange" msgstr "y_toolchange = Y-Koord für Werkzeugwechsel" -#: flatcamGUI/FlatCAMGUI.py:5590 flatcamGUI/ObjectUI.py:1560 +#: flatcamGUI/FlatCAMGUI.py:5753 flatcamGUI/ObjectUI.py:1573 msgid "z_toolchange = Z coord for Toolchange" msgstr "z_toolchange = Z-Koord für Werkzeugwechsel" -#: flatcamGUI/FlatCAMGUI.py:5591 +#: flatcamGUI/FlatCAMGUI.py:5754 msgid "z_cut = Z depth for the cut" msgstr "z_cut = Z Tiefe für den Schnitt" -#: flatcamGUI/FlatCAMGUI.py:5592 +#: flatcamGUI/FlatCAMGUI.py:5755 msgid "z_move = Z height for travel" msgstr "z_move = Z Höhe für die Reise" -#: flatcamGUI/FlatCAMGUI.py:5593 flatcamGUI/ObjectUI.py:1563 +#: flatcamGUI/FlatCAMGUI.py:5756 flatcamGUI/ObjectUI.py:1576 msgid "z_depthpercut = the step value for multidepth cut" msgstr "z_depthpercut =der Schrittwert für den mehrstufigen Schnitt" -#: flatcamGUI/FlatCAMGUI.py:5594 flatcamGUI/ObjectUI.py:1564 +#: flatcamGUI/FlatCAMGUI.py:5757 flatcamGUI/ObjectUI.py:1577 msgid "spindlesspeed = the value for the spindle speed" msgstr "spindlesspeed =der Wert für die Spindeldrehzahl" -#: flatcamGUI/FlatCAMGUI.py:5595 flatcamGUI/ObjectUI.py:1565 +#: flatcamGUI/FlatCAMGUI.py:5759 flatcamGUI/ObjectUI.py:1578 msgid "dwelltime = time to dwell to allow the spindle to reach it's set RPM" msgstr "" "dwelltime = Zeit zum Verweilen, damit die Spindel ihre eingestellte Drehzahl " "erreicht" -#: flatcamGUI/FlatCAMGUI.py:5616 +#: flatcamGUI/FlatCAMGUI.py:5780 msgid "NCC Tool Options" msgstr "NCC-Tooloptionen" -#: flatcamGUI/FlatCAMGUI.py:5629 flatcamGUI/FlatCAMGUI.py:6359 +#: flatcamGUI/FlatCAMGUI.py:5793 flatcamGUI/FlatCAMGUI.py:6523 msgid "Tools dia:" msgstr "Werkzeug durchmesser:" -#: flatcamGUI/FlatCAMGUI.py:5631 +#: flatcamGUI/FlatCAMGUI.py:5795 msgid "Diameters of the cutting tools, separated by ','" msgstr "Durchmesser der Schneidwerkzeuge, getrennt durch ','" -#: flatcamGUI/FlatCAMGUI.py:5639 flatcamTools/ToolNonCopperClear.py:167 +#: flatcamGUI/FlatCAMGUI.py:5803 flatcamTools/ToolNonCopperClear.py:167 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -7990,11 +8100,11 @@ msgstr "" "Höhere Werte = langsame Bearbeitung und langsame Ausführung auf der CNC\n" "wegen zu vieler Wege." -#: flatcamGUI/FlatCAMGUI.py:5655 flatcamTools/ToolNonCopperClear.py:183 +#: flatcamGUI/FlatCAMGUI.py:5819 flatcamTools/ToolNonCopperClear.py:183 msgid "Bounding box margin." msgstr "Begrenzungsrahmenrand." -#: flatcamGUI/FlatCAMGUI.py:5664 flatcamTools/ToolNonCopperClear.py:192 +#: flatcamGUI/FlatCAMGUI.py:5828 flatcamTools/ToolNonCopperClear.py:192 #: flatcamTools/ToolPaint.py:190 msgid "" "Algorithm for non-copper clearing:
Standard: Fixed step inwards." @@ -8005,12 +8115,12 @@ msgstr "" "Schritt nach innen. Seed-based : Ausgehend vom Saatgut.
" "Line-based: Parallele Linien." -#: flatcamGUI/FlatCAMGUI.py:5696 flatcamTools/ToolNonCopperClear.py:224 +#: flatcamGUI/FlatCAMGUI.py:5860 flatcamTools/ToolNonCopperClear.py:224 #: flatcamTools/ToolPaint.py:222 msgid "Rest M.:" msgstr "Rest M.:" -#: flatcamGUI/FlatCAMGUI.py:5698 +#: flatcamGUI/FlatCAMGUI.py:5862 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -8026,11 +8136,11 @@ msgstr "" "konnte nicht mit dem vorherigen Tool gelöscht werden.\n" "Wenn nicht aktiviert, verwenden Sie den Standardalgorithmus." -#: flatcamGUI/FlatCAMGUI.py:5717 +#: flatcamGUI/FlatCAMGUI.py:5881 msgid "Cutout Tool Options" msgstr "Ausschnittwerkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:5722 flatcamGUI/ObjectUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:5886 flatcamGUI/ObjectUI.py:402 msgid "" "Create toolpaths to cut around\n" "the PCB and separate it from\n" @@ -8040,7 +8150,7 @@ msgstr "" "die PCB und trennen Sie es von\n" "das ursprüngliche Brett." -#: flatcamGUI/FlatCAMGUI.py:5741 +#: flatcamGUI/FlatCAMGUI.py:5905 msgid "" "Distance from objects at which\n" "to draw the cutout." @@ -8048,11 +8158,11 @@ msgstr "" "Entfernung von Objekten bei denen\n" "den Ausschnitt zeichnen." -#: flatcamGUI/FlatCAMGUI.py:5748 flatcamTools/ToolCutOut.py:96 +#: flatcamGUI/FlatCAMGUI.py:5912 flatcamTools/ToolCutOut.py:96 msgid "Gap size:" msgstr "Spaltgröße:" -#: flatcamGUI/FlatCAMGUI.py:5750 +#: flatcamGUI/FlatCAMGUI.py:5914 msgid "" "Size of the gaps in the toolpath\n" "that will remain to hold the\n" @@ -8062,11 +8172,11 @@ msgstr "" "das wird bleiben, um das zu halten\n" "Board an Ort und Stelle." -#: flatcamGUI/FlatCAMGUI.py:5758 flatcamTools/ToolCutOut.py:134 +#: flatcamGUI/FlatCAMGUI.py:5922 flatcamTools/ToolCutOut.py:134 msgid "Gaps:" msgstr "Spalt:" -#: flatcamGUI/FlatCAMGUI.py:5760 +#: flatcamGUI/FlatCAMGUI.py:5924 msgid "" "Number of bridge gaps used for the cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -8088,19 +8198,19 @@ msgstr "" "- 2 tb \t- 2 * oben + 2 * unten\n" "- 8 \t- 2 * links + 2 * rechts + 2 * oben + 2 * unten" -#: flatcamGUI/FlatCAMGUI.py:5781 flatcamTools/ToolCutOut.py:115 +#: flatcamGUI/FlatCAMGUI.py:5945 flatcamTools/ToolCutOut.py:115 msgid "Convex Sh.:" msgstr "Konvexe Form .:" -#: flatcamGUI/FlatCAMGUI.py:5783 +#: flatcamGUI/FlatCAMGUI.py:5947 msgid "Create a convex shape surrounding the entire PCB." msgstr "Erstellen Sie eine konvexe Form, die die gesamte Leiterplatte umgibt." -#: flatcamGUI/FlatCAMGUI.py:5796 +#: flatcamGUI/FlatCAMGUI.py:5960 msgid "2Sided Tool Options" msgstr "2Seitige Werkzeugoptionen" -#: flatcamGUI/FlatCAMGUI.py:5801 +#: flatcamGUI/FlatCAMGUI.py:5965 msgid "" "A tool to help in creating a double sided\n" "PCB using alignment holes." @@ -8108,28 +8218,28 @@ msgstr "" "Ein Werkzeug, das beim Erstellen eines doppelseitigen Dokuments hilft\n" "PCB mit Ausrichtungslöchern." -#: flatcamGUI/FlatCAMGUI.py:5811 flatcamTools/ToolDblSided.py:235 +#: flatcamGUI/FlatCAMGUI.py:5975 flatcamTools/ToolDblSided.py:235 msgid "Drill diam.:" msgstr "Bohrdurchmesser:" -#: flatcamGUI/FlatCAMGUI.py:5813 flatcamTools/ToolDblSided.py:226 +#: flatcamGUI/FlatCAMGUI.py:5977 flatcamTools/ToolDblSided.py:226 #: flatcamTools/ToolDblSided.py:237 msgid "Diameter of the drill for the alignment holes." msgstr "Durchmesser des Bohrers für die Ausrichtungslöcher." -#: flatcamGUI/FlatCAMGUI.py:5822 flatcamTools/ToolDblSided.py:120 +#: flatcamGUI/FlatCAMGUI.py:5986 flatcamTools/ToolDblSided.py:120 msgid "Mirror Axis:" msgstr "Spiegelachse:" -#: flatcamGUI/FlatCAMGUI.py:5824 flatcamTools/ToolDblSided.py:122 +#: flatcamGUI/FlatCAMGUI.py:5988 flatcamTools/ToolDblSided.py:122 msgid "Mirror vertically (X) or horizontally (Y)." msgstr "Vertikal spiegeln (X) oder horizontal (Y)." -#: flatcamGUI/FlatCAMGUI.py:5835 flatcamTools/ToolDblSided.py:133 +#: flatcamGUI/FlatCAMGUI.py:5999 flatcamTools/ToolDblSided.py:133 msgid "Axis Ref:" msgstr "Achsenreferenz:" -#: flatcamGUI/FlatCAMGUI.py:5837 +#: flatcamGUI/FlatCAMGUI.py:6001 msgid "" "The axis should pass through a point or cut\n" " a specified box (in a Geometry object) in \n" @@ -8139,11 +8249,11 @@ msgstr "" "ein angegebenes Feld (in einem Geometrieobjekt) in\n" "die Mitte." -#: flatcamGUI/FlatCAMGUI.py:5853 +#: flatcamGUI/FlatCAMGUI.py:6017 msgid "Paint Tool Options" msgstr "Paint werkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:5860 flatcamGUI/ObjectUI.py:1305 +#: flatcamGUI/FlatCAMGUI.py:6024 flatcamGUI/ObjectUI.py:1305 msgid "" "Creates tool paths to cover the\n" "whole area of a polygon (remove\n" @@ -8155,7 +8265,7 @@ msgstr "" "alles Kupfer). Du wirst gefragt\n" "Klicken Sie auf das gewünschte Polygon." -#: flatcamGUI/FlatCAMGUI.py:5884 +#: flatcamGUI/FlatCAMGUI.py:6048 msgid "" "How much (fraction) of the tool\n" "width to overlap each tool pass." @@ -8163,19 +8273,19 @@ msgstr "" "Wie viel (Bruchteil) des Werkzeugs\n" "Breite, um jeden Werkzeugdurchgang zu überlappen." -#: flatcamGUI/FlatCAMGUI.py:5938 flatcamTools/ToolPaint.py:237 +#: flatcamGUI/FlatCAMGUI.py:6102 flatcamTools/ToolPaint.py:237 msgid "Selection:" msgstr "Auswahl:" -#: flatcamGUI/FlatCAMGUI.py:5940 +#: flatcamGUI/FlatCAMGUI.py:6104 msgid "How to select the polygons to paint." msgstr "So wählen Sie die Polygone zum Malen aus." -#: flatcamGUI/FlatCAMGUI.py:5958 +#: flatcamGUI/FlatCAMGUI.py:6122 msgid "Film Tool Options" msgstr "Filmwerkzeugoptionen" -#: flatcamGUI/FlatCAMGUI.py:5963 +#: flatcamGUI/FlatCAMGUI.py:6127 msgid "" "Create a PCB film from a Gerber or Geometry\n" "FlatCAM object.\n" @@ -8185,11 +8295,11 @@ msgstr "" "FlatCAM-Objekt\n" "Die Datei wird im SVG-Format gespeichert." -#: flatcamGUI/FlatCAMGUI.py:5974 flatcamTools/ToolFilm.py:116 +#: flatcamGUI/FlatCAMGUI.py:6138 flatcamTools/ToolFilm.py:116 msgid "Film Type:" msgstr "Filmtyp:" -#: flatcamGUI/FlatCAMGUI.py:5976 flatcamTools/ToolFilm.py:118 +#: flatcamGUI/FlatCAMGUI.py:6140 flatcamTools/ToolFilm.py:118 msgid "" "Generate a Positive black film or a Negative film.\n" "Positive means that it will print the features\n" @@ -8205,11 +8315,11 @@ msgstr "" "mit weiß auf einer schwarzen leinwand.\n" "Das Filmformat ist SVG." -#: flatcamGUI/FlatCAMGUI.py:5987 flatcamTools/ToolFilm.py:130 +#: flatcamGUI/FlatCAMGUI.py:6151 flatcamTools/ToolFilm.py:130 msgid "Border:" msgstr "Rand:" -#: flatcamGUI/FlatCAMGUI.py:5989 flatcamTools/ToolFilm.py:132 +#: flatcamGUI/FlatCAMGUI.py:6153 flatcamTools/ToolFilm.py:132 msgid "" "Specify a border around the object.\n" "Only for negative film.\n" @@ -8229,11 +8339,11 @@ msgstr "" "weiße Farbe wie der Rest und die mit der verwechseln kann\n" "Umgebung, wenn nicht für diese Grenze." -#: flatcamGUI/FlatCAMGUI.py:6002 flatcamTools/ToolFilm.py:144 +#: flatcamGUI/FlatCAMGUI.py:6166 flatcamTools/ToolFilm.py:144 msgid "Scale Stroke:" msgstr "Skalierungshub:" -#: flatcamGUI/FlatCAMGUI.py:6004 flatcamTools/ToolFilm.py:146 +#: flatcamGUI/FlatCAMGUI.py:6168 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 " @@ -8245,11 +8355,11 @@ msgstr "" "dünner ist.\n" "Daher können die Feinheiten von diesem Parameter stärker beeinflusst werden." -#: flatcamGUI/FlatCAMGUI.py:6019 +#: flatcamGUI/FlatCAMGUI.py:6183 msgid "Panelize Tool Options" msgstr "Panelize Werkzeugoptionen" -#: flatcamGUI/FlatCAMGUI.py:6024 +#: flatcamGUI/FlatCAMGUI.py:6188 msgid "" "Create an object that contains an array of (x, y) elements,\n" "each element is a copy of the source object spaced\n" @@ -8259,11 +8369,11 @@ msgstr "" "Jedes Element ist eine Kopie des Quellobjekts\n" "in einem X-Abstand, Y-Abstand voneinander." -#: flatcamGUI/FlatCAMGUI.py:6035 flatcamTools/ToolPanelize.py:147 +#: flatcamGUI/FlatCAMGUI.py:6199 flatcamTools/ToolPanelize.py:147 msgid "Spacing cols:" msgstr "Abstandspalten:" -#: flatcamGUI/FlatCAMGUI.py:6037 flatcamTools/ToolPanelize.py:149 +#: flatcamGUI/FlatCAMGUI.py:6201 flatcamTools/ToolPanelize.py:149 msgid "" "Spacing between columns of the desired panel.\n" "In current units." @@ -8271,11 +8381,11 @@ msgstr "" "Abstand zwischen den Spalten des gewünschten Bereichs.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:6045 flatcamTools/ToolPanelize.py:156 +#: flatcamGUI/FlatCAMGUI.py:6209 flatcamTools/ToolPanelize.py:156 msgid "Spacing rows:" msgstr "Abstand Reihen:" -#: flatcamGUI/FlatCAMGUI.py:6047 flatcamTools/ToolPanelize.py:158 +#: flatcamGUI/FlatCAMGUI.py:6211 flatcamTools/ToolPanelize.py:158 msgid "" "Spacing between rows of the desired panel.\n" "In current units." @@ -8283,27 +8393,27 @@ msgstr "" "Abstand zwischen den Reihen des gewünschten Feldes.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:6055 flatcamTools/ToolPanelize.py:165 +#: flatcamGUI/FlatCAMGUI.py:6219 flatcamTools/ToolPanelize.py:165 msgid "Columns:" msgstr "Säulen:" -#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:167 +#: flatcamGUI/FlatCAMGUI.py:6221 flatcamTools/ToolPanelize.py:167 msgid "Number of columns of the desired panel" msgstr "Anzahl der Spalten des gewünschten Bereichs" -#: flatcamGUI/FlatCAMGUI.py:6064 flatcamTools/ToolPanelize.py:173 +#: flatcamGUI/FlatCAMGUI.py:6228 flatcamTools/ToolPanelize.py:173 msgid "Rows:" msgstr "Reihen:" -#: flatcamGUI/FlatCAMGUI.py:6066 flatcamTools/ToolPanelize.py:175 +#: flatcamGUI/FlatCAMGUI.py:6230 flatcamTools/ToolPanelize.py:175 msgid "Number of rows of the desired panel" msgstr "Anzahl der Zeilen des gewünschten Panels" -#: flatcamGUI/FlatCAMGUI.py:6074 +#: flatcamGUI/FlatCAMGUI.py:6238 msgid "Panel Type:" msgstr "Panel-Typ:" -#: flatcamGUI/FlatCAMGUI.py:6076 +#: flatcamGUI/FlatCAMGUI.py:6240 msgid "" "Choose the type of object for the panel object:\n" "- Gerber\n" @@ -8313,11 +8423,11 @@ msgstr "" "- Gerber\n" "- Geometrie" -#: flatcamGUI/FlatCAMGUI.py:6085 +#: flatcamGUI/FlatCAMGUI.py:6249 msgid "Constrain within:" msgstr "Beschränkung innerhalb:" -#: flatcamGUI/FlatCAMGUI.py:6087 flatcamTools/ToolPanelize.py:195 +#: flatcamGUI/FlatCAMGUI.py:6251 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" @@ -8331,11 +8441,11 @@ msgstr "" "Das letzte Panel enthält so viele Spalten und Zeilen wie\n" "Sie passen vollständig in den ausgewählten Bereich." -#: flatcamGUI/FlatCAMGUI.py:6096 flatcamTools/ToolPanelize.py:204 +#: flatcamGUI/FlatCAMGUI.py:6260 flatcamTools/ToolPanelize.py:204 msgid "Width (DX):" msgstr "Breite (DX):" -#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:206 +#: flatcamGUI/FlatCAMGUI.py:6262 flatcamTools/ToolPanelize.py:206 msgid "" "The width (DX) within which the panel must fit.\n" "In current units." @@ -8343,11 +8453,11 @@ msgstr "" "Die Breite (DX), in die das Panel passen muss.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:6105 flatcamTools/ToolPanelize.py:212 +#: flatcamGUI/FlatCAMGUI.py:6269 flatcamTools/ToolPanelize.py:212 msgid "Height (DY):" msgstr "Höhe (DY):" -#: flatcamGUI/FlatCAMGUI.py:6107 flatcamTools/ToolPanelize.py:214 +#: flatcamGUI/FlatCAMGUI.py:6271 flatcamTools/ToolPanelize.py:214 msgid "" "The height (DY)within which the panel must fit.\n" "In current units." @@ -8355,15 +8465,15 @@ msgstr "" "Die Höhe (DY), in die die Platte passen muss.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:6121 +#: flatcamGUI/FlatCAMGUI.py:6285 msgid "Calculators Tool Options" msgstr "Rechner-Tool-Optionen" -#: flatcamGUI/FlatCAMGUI.py:6124 +#: flatcamGUI/FlatCAMGUI.py:6288 msgid "V-Shape Tool Calculator:" msgstr " V-Shape-Werkzeug Rechner: " -#: flatcamGUI/FlatCAMGUI.py:6126 +#: flatcamGUI/FlatCAMGUI.py:6290 msgid "" "Calculate the tool diameter for a given V-shape tool,\n" "having the tip diameter, tip angle and\n" @@ -8374,11 +8484,11 @@ msgstr "" "mit dem Spitzendurchmesser, Spitzenwinkel und\n" "Schnitttiefe als Parameter." -#: flatcamGUI/FlatCAMGUI.py:6137 flatcamTools/ToolCalculators.py:94 +#: flatcamGUI/FlatCAMGUI.py:6301 flatcamTools/ToolCalculators.py:94 msgid "Tip Diameter:" msgstr "Spitzendurchmesser" -#: flatcamGUI/FlatCAMGUI.py:6139 +#: flatcamGUI/FlatCAMGUI.py:6303 msgid "" "This is the tool tip diameter.\n" "It is specified by manufacturer." @@ -8386,11 +8496,11 @@ msgstr "" "Dies ist der Werkzeugspitzendurchmesser.\n" "Es wird vom Hersteller angegeben." -#: flatcamGUI/FlatCAMGUI.py:6147 +#: flatcamGUI/FlatCAMGUI.py:6311 msgid "Tip angle:" msgstr "Spitzenwinkel:" -#: flatcamGUI/FlatCAMGUI.py:6149 +#: flatcamGUI/FlatCAMGUI.py:6313 msgid "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." @@ -8398,7 +8508,7 @@ msgstr "" "Dies ist der Winkel an der Spitze des Werkzeugs.\n" "Es wird vom Hersteller angegeben." -#: flatcamGUI/FlatCAMGUI.py:6159 +#: flatcamGUI/FlatCAMGUI.py:6323 msgid "" "This is depth to cut into material.\n" "In the CNCJob object it is the CutZ parameter." @@ -8406,11 +8516,11 @@ msgstr "" "Dies ist die Tiefe zum Schneiden in Material.\n" "Im CNCJob-Objekt ist dies der Parameter CutZ." -#: flatcamGUI/FlatCAMGUI.py:6166 +#: flatcamGUI/FlatCAMGUI.py:6330 msgid "ElectroPlating Calculator:" msgstr " Galvano-Rechner: " -#: flatcamGUI/FlatCAMGUI.py:6168 flatcamTools/ToolCalculators.py:152 +#: flatcamGUI/FlatCAMGUI.py:6332 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 " @@ -8421,27 +8531,27 @@ msgstr "" "unter Verwendung einer Methode wie Grahit-Tinte oder Calcium-Hypophosphit-" "Tinte oder Palladiumchlorid." -#: flatcamGUI/FlatCAMGUI.py:6178 flatcamTools/ToolCalculators.py:161 +#: flatcamGUI/FlatCAMGUI.py:6342 flatcamTools/ToolCalculators.py:161 msgid "Board Length:" msgstr "PCB Länge:" -#: flatcamGUI/FlatCAMGUI.py:6180 flatcamTools/ToolCalculators.py:165 +#: flatcamGUI/FlatCAMGUI.py:6344 flatcamTools/ToolCalculators.py:165 msgid "This is the board length. In centimeters." msgstr "Dies ist die Boardlänge. In Zentimeter" -#: flatcamGUI/FlatCAMGUI.py:6186 flatcamTools/ToolCalculators.py:167 +#: flatcamGUI/FlatCAMGUI.py:6350 flatcamTools/ToolCalculators.py:167 msgid "Board Width:" msgstr "PCB Breite:" -#: flatcamGUI/FlatCAMGUI.py:6188 flatcamTools/ToolCalculators.py:171 +#: flatcamGUI/FlatCAMGUI.py:6352 flatcamTools/ToolCalculators.py:171 msgid "This is the board width.In centimeters." msgstr "Dies ist die Breite der Platte in Zentimetern." -#: flatcamGUI/FlatCAMGUI.py:6193 flatcamTools/ToolCalculators.py:173 +#: flatcamGUI/FlatCAMGUI.py:6357 flatcamTools/ToolCalculators.py:173 msgid "Current Density:" msgstr "Stromdichte:" -#: flatcamGUI/FlatCAMGUI.py:6196 flatcamTools/ToolCalculators.py:177 +#: flatcamGUI/FlatCAMGUI.py:6360 flatcamTools/ToolCalculators.py:177 msgid "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." @@ -8449,11 +8559,11 @@ msgstr "" "Stromdichte durch die Platine.\n" "In Ampere pro Quadratfuß ASF." -#: flatcamGUI/FlatCAMGUI.py:6202 flatcamTools/ToolCalculators.py:181 +#: flatcamGUI/FlatCAMGUI.py:6366 flatcamTools/ToolCalculators.py:181 msgid "Copper Growth:" msgstr "Kupferwachstum:" -#: flatcamGUI/FlatCAMGUI.py:6205 flatcamTools/ToolCalculators.py:185 +#: flatcamGUI/FlatCAMGUI.py:6369 flatcamTools/ToolCalculators.py:185 msgid "" "How thick the copper growth is intended to be.\n" "In microns." @@ -8461,11 +8571,11 @@ msgstr "" "Wie dick soll das Kupferwachstum sein.\n" "In Mikrometern" -#: flatcamGUI/FlatCAMGUI.py:6218 +#: flatcamGUI/FlatCAMGUI.py:6382 msgid "Transform Tool Options" msgstr "Umwandlungswerkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:6223 +#: flatcamGUI/FlatCAMGUI.py:6387 msgid "" "Various transformations that can be applied\n" "on a FlatCAM object." @@ -8473,47 +8583,47 @@ msgstr "" "Verschiedene Transformationen, die angewendet werden können\n" "auf einem FlatCAM-Objekt." -#: flatcamGUI/FlatCAMGUI.py:6233 +#: flatcamGUI/FlatCAMGUI.py:6397 msgid "Rotate Angle:" msgstr "Winkel drehen:" -#: flatcamGUI/FlatCAMGUI.py:6235 +#: flatcamGUI/FlatCAMGUI.py:6399 msgid "Angle for rotation. In degrees." msgstr "Drehwinkel. In grad." -#: flatcamGUI/FlatCAMGUI.py:6242 +#: flatcamGUI/FlatCAMGUI.py:6406 msgid "Skew_X angle:" msgstr "Neigungswinkel X:" -#: flatcamGUI/FlatCAMGUI.py:6244 +#: flatcamGUI/FlatCAMGUI.py:6408 msgid "Angle for Skew/Shear on X axis. In degrees." msgstr "Winkel für Neigung / Scherung auf der X-Achse. In grad." -#: flatcamGUI/FlatCAMGUI.py:6251 +#: flatcamGUI/FlatCAMGUI.py:6415 msgid "Skew_Y angle:" msgstr "Neigungswinkel Y:" -#: flatcamGUI/FlatCAMGUI.py:6253 +#: flatcamGUI/FlatCAMGUI.py:6417 msgid "Angle for Skew/Shear on Y axis. In degrees." msgstr "Winkel für Neigung / Scherung auf der Y-Achse. In grad." -#: flatcamGUI/FlatCAMGUI.py:6260 +#: flatcamGUI/FlatCAMGUI.py:6424 msgid "Scale_X factor:" msgstr "Skalierung des X-Faktors:" -#: flatcamGUI/FlatCAMGUI.py:6262 +#: flatcamGUI/FlatCAMGUI.py:6426 msgid "Factor for scaling on X axis." msgstr "Faktor für die Skalierung auf der X-Achse." -#: flatcamGUI/FlatCAMGUI.py:6269 +#: flatcamGUI/FlatCAMGUI.py:6433 msgid "Scale_Y factor:" msgstr "Skalierung des Y-Faktors:" -#: flatcamGUI/FlatCAMGUI.py:6271 +#: flatcamGUI/FlatCAMGUI.py:6435 msgid "Factor for scaling on Y axis." msgstr "Faktor für die Skalierung auf der Y-Achse." -#: flatcamGUI/FlatCAMGUI.py:6279 +#: flatcamGUI/FlatCAMGUI.py:6443 msgid "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." @@ -8521,7 +8631,7 @@ msgstr "" "Skalieren Sie die ausgewählten Objekte\n" "Verwenden des Skalierungsfaktors X für beide Achsen." -#: flatcamGUI/FlatCAMGUI.py:6287 flatcamTools/ToolTransform.py:210 +#: flatcamGUI/FlatCAMGUI.py:6451 flatcamTools/ToolTransform.py:210 msgid "" "Scale the selected object(s)\n" "using the origin reference when checked,\n" @@ -8533,27 +8643,27 @@ msgstr "" "und die Mitte der größten Begrenzungsbox\n" "der ausgewählten Objekte, wenn sie nicht markiert sind." -#: flatcamGUI/FlatCAMGUI.py:6296 +#: flatcamGUI/FlatCAMGUI.py:6460 msgid "Offset_X val:" msgstr "Offset X Wert:" -#: flatcamGUI/FlatCAMGUI.py:6298 +#: flatcamGUI/FlatCAMGUI.py:6462 msgid "Distance to offset on X axis. In current units." msgstr "Abstand zum Offset auf der X-Achse. In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:6305 +#: flatcamGUI/FlatCAMGUI.py:6469 msgid "Offset_Y val:" msgstr "Offset Y-Wert:" -#: flatcamGUI/FlatCAMGUI.py:6307 +#: flatcamGUI/FlatCAMGUI.py:6471 msgid "Distance to offset on Y axis. In current units." msgstr "Abstand zum Offset auf der Y-Achse. In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:6313 +#: flatcamGUI/FlatCAMGUI.py:6477 msgid "Mirror Reference" msgstr "Spiegelreferenz" -#: flatcamGUI/FlatCAMGUI.py:6315 flatcamTools/ToolTransform.py:314 +#: flatcamGUI/FlatCAMGUI.py:6479 flatcamTools/ToolTransform.py:314 msgid "" "Flip the selected object(s)\n" "around the point in Point Entry Field.\n" @@ -8576,11 +8686,11 @@ msgstr "" "Oder geben Sie die Koordinaten im Format (x, y) in ein\n" "Punkt-Eingabefeld und klicken Sie auf X (Y) drehen" -#: flatcamGUI/FlatCAMGUI.py:6326 +#: flatcamGUI/FlatCAMGUI.py:6490 msgid " Mirror Ref. Point:" msgstr "Spiegelref. Punkt:" -#: flatcamGUI/FlatCAMGUI.py:6328 flatcamTools/ToolTransform.py:327 +#: flatcamGUI/FlatCAMGUI.py:6492 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" @@ -8591,11 +8701,11 @@ msgstr "" "Das 'x' in (x, y) wird verwendet, wenn Sie bei X und\n" "Das 'y' in (x, y) wird verwendet, wenn Flip auf Y und verwendet wird" -#: flatcamGUI/FlatCAMGUI.py:6345 +#: flatcamGUI/FlatCAMGUI.py:6509 msgid "SolderPaste Tool Options" msgstr "Lötpaste-Werkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:6350 +#: flatcamGUI/FlatCAMGUI.py:6514 msgid "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." @@ -8603,49 +8713,49 @@ msgstr "" "Ein Werkzeug zum Erstellen von GCode für die Ausgabe\n" "Lotpaste auf eine Leiterplatte." -#: flatcamGUI/FlatCAMGUI.py:6361 +#: flatcamGUI/FlatCAMGUI.py:6525 msgid "Diameters of nozzle tools, separated by ','" msgstr "Durchmesser der Düsenwerkzeuge, getrennt durch ','" -#: flatcamGUI/FlatCAMGUI.py:6368 +#: flatcamGUI/FlatCAMGUI.py:6532 msgid "New Nozzle Dia:" msgstr " Neuer Düsendurchmesser: " -#: flatcamGUI/FlatCAMGUI.py:6370 flatcamTools/ToolSolderPaste.py:103 +#: flatcamGUI/FlatCAMGUI.py:6534 flatcamTools/ToolSolderPaste.py:103 msgid "Diameter for the new Nozzle tool to add in the Tool Table" msgstr "" "Durchmesser für das neue Düsenwerkzeug, das in die Werkzeugtabelle eingefügt " "werden soll" -#: flatcamGUI/FlatCAMGUI.py:6378 flatcamTools/ToolSolderPaste.py:166 +#: flatcamGUI/FlatCAMGUI.py:6542 flatcamTools/ToolSolderPaste.py:166 msgid "Z Dispense Start:" msgstr "Z Dosierbeginn:" -#: flatcamGUI/FlatCAMGUI.py:6380 flatcamTools/ToolSolderPaste.py:168 +#: flatcamGUI/FlatCAMGUI.py:6544 flatcamTools/ToolSolderPaste.py:168 msgid "The height (Z) when solder paste dispensing starts." msgstr "Die Höhe (Z) bei der Lotpastendosierung." -#: flatcamGUI/FlatCAMGUI.py:6387 flatcamTools/ToolSolderPaste.py:174 +#: flatcamGUI/FlatCAMGUI.py:6551 flatcamTools/ToolSolderPaste.py:174 msgid "Z Dispense:" msgstr "Z-Abgabe:" -#: flatcamGUI/FlatCAMGUI.py:6389 flatcamTools/ToolSolderPaste.py:176 +#: flatcamGUI/FlatCAMGUI.py:6553 flatcamTools/ToolSolderPaste.py:176 msgid "The height (Z) when doing solder paste dispensing." msgstr "Die Höhe (Z) bei der Lotpastendosierung." -#: flatcamGUI/FlatCAMGUI.py:6396 flatcamTools/ToolSolderPaste.py:183 +#: flatcamGUI/FlatCAMGUI.py:6560 flatcamTools/ToolSolderPaste.py:183 msgid "Z Dispense Stop:" msgstr "Z Abgabestopp:" -#: flatcamGUI/FlatCAMGUI.py:6398 flatcamTools/ToolSolderPaste.py:185 +#: flatcamGUI/FlatCAMGUI.py:6562 flatcamTools/ToolSolderPaste.py:185 msgid "The height (Z) when solder paste dispensing stops." msgstr "Die Höhe (Z) bei der Lotpastendosierung stoppt." -#: flatcamGUI/FlatCAMGUI.py:6405 flatcamTools/ToolSolderPaste.py:191 +#: flatcamGUI/FlatCAMGUI.py:6569 flatcamTools/ToolSolderPaste.py:191 msgid "Z Travel:" msgstr "Z Reise:" -#: flatcamGUI/FlatCAMGUI.py:6407 flatcamTools/ToolSolderPaste.py:193 +#: flatcamGUI/FlatCAMGUI.py:6571 flatcamTools/ToolSolderPaste.py:193 msgid "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." @@ -8653,19 +8763,19 @@ msgstr "" "Die Höhe (Z) für den Weg zwischen Pads\n" "(ohne Lotpaste zu dosieren)." -#: flatcamGUI/FlatCAMGUI.py:6415 flatcamTools/ToolSolderPaste.py:200 +#: flatcamGUI/FlatCAMGUI.py:6579 flatcamTools/ToolSolderPaste.py:200 msgid "Z Toolchange:" msgstr "Z Werkzeugwechsel:" -#: flatcamGUI/FlatCAMGUI.py:6417 flatcamTools/ToolSolderPaste.py:202 +#: flatcamGUI/FlatCAMGUI.py:6581 flatcamTools/ToolSolderPaste.py:202 msgid "The height (Z) for tool (nozzle) change." msgstr "Die Höhe (Z) für Werkzeug (Düse) ändert sich." -#: flatcamGUI/FlatCAMGUI.py:6424 flatcamTools/ToolSolderPaste.py:208 +#: flatcamGUI/FlatCAMGUI.py:6588 flatcamTools/ToolSolderPaste.py:208 msgid "XY Toolchange:" msgstr "XY-Werkzeugwechsel:" -#: flatcamGUI/FlatCAMGUI.py:6426 flatcamTools/ToolSolderPaste.py:210 +#: flatcamGUI/FlatCAMGUI.py:6590 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." @@ -8673,19 +8783,19 @@ msgstr "" "Die X, Y-Position für Werkzeug (Düse) ändert sich.\n" "Das Format ist (x, y), wobei x und y reelle Zahlen sind." -#: flatcamGUI/FlatCAMGUI.py:6434 flatcamTools/ToolSolderPaste.py:217 +#: flatcamGUI/FlatCAMGUI.py:6598 flatcamTools/ToolSolderPaste.py:217 msgid "Feedrate X-Y:" msgstr "Vorschub X-Y:" -#: flatcamGUI/FlatCAMGUI.py:6436 flatcamTools/ToolSolderPaste.py:219 +#: flatcamGUI/FlatCAMGUI.py:6600 flatcamTools/ToolSolderPaste.py:219 msgid "Feedrate (speed) while moving on the X-Y plane." msgstr "Vorschub (Geschwindigkeit) während der Bewegung auf der X-Y-Ebene." -#: flatcamGUI/FlatCAMGUI.py:6443 flatcamTools/ToolSolderPaste.py:225 +#: flatcamGUI/FlatCAMGUI.py:6607 flatcamTools/ToolSolderPaste.py:225 msgid "Feedrate Z:" msgstr "Vorschub Z:" -#: flatcamGUI/FlatCAMGUI.py:6445 flatcamTools/ToolSolderPaste.py:227 +#: flatcamGUI/FlatCAMGUI.py:6609 flatcamTools/ToolSolderPaste.py:227 msgid "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." @@ -8693,23 +8803,23 @@ msgstr "" "Vorschub (Geschwindigkeit) bei vertikaler Bewegung\n" "(auf der Z-Ebene)." -#: flatcamGUI/FlatCAMGUI.py:6453 flatcamTools/ToolSolderPaste.py:234 +#: flatcamGUI/FlatCAMGUI.py:6617 flatcamTools/ToolSolderPaste.py:234 msgid "Feedrate Z Dispense:" msgstr "Vorschub Z Dosierung:" -#: flatcamGUI/FlatCAMGUI.py:6455 flatcamTools/ToolSolderPaste.py:236 +#: flatcamGUI/FlatCAMGUI.py:6619 msgid "" "Feedrate (speed) while moving up vertically\n" -" to Dispense position (on Z plane)." +"to Dispense position (on Z plane)." msgstr "" -"Vorschub (Geschwindigkeit) bei vertikaler Bewegung\n" -"  zur Ausgabeposition (auf der Z-Ebene)." +"Vorschub (Geschwindigkeit) bei vertikaler Aufwärtsbewegung\n" +"in Ausgabeposition (in der Z-Ebene)." -#: flatcamGUI/FlatCAMGUI.py:6463 flatcamTools/ToolSolderPaste.py:243 +#: flatcamGUI/FlatCAMGUI.py:6627 flatcamTools/ToolSolderPaste.py:243 msgid "Spindle Speed FWD:" msgstr "Spindeldrehzahl FWD:" -#: flatcamGUI/FlatCAMGUI.py:6465 flatcamTools/ToolSolderPaste.py:245 +#: flatcamGUI/FlatCAMGUI.py:6629 flatcamTools/ToolSolderPaste.py:245 msgid "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." @@ -8717,19 +8827,19 @@ msgstr "" "Die Spendergeschwindigkeit beim Schieben der Lötpaste\n" "durch die Spenderdüse." -#: flatcamGUI/FlatCAMGUI.py:6473 flatcamTools/ToolSolderPaste.py:252 +#: flatcamGUI/FlatCAMGUI.py:6637 flatcamTools/ToolSolderPaste.py:252 msgid "Dwell FWD:" msgstr "Verweilzeit FWD:" -#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:254 +#: flatcamGUI/FlatCAMGUI.py:6639 flatcamTools/ToolSolderPaste.py:254 msgid "Pause after solder dispensing." msgstr "Pause nach dem Löten." -#: flatcamGUI/FlatCAMGUI.py:6482 flatcamTools/ToolSolderPaste.py:260 +#: flatcamGUI/FlatCAMGUI.py:6646 flatcamTools/ToolSolderPaste.py:260 msgid "Spindle Speed REV:" msgstr "Spindeldrehzahl REV:" -#: flatcamGUI/FlatCAMGUI.py:6484 flatcamTools/ToolSolderPaste.py:262 +#: flatcamGUI/FlatCAMGUI.py:6648 flatcamTools/ToolSolderPaste.py:262 msgid "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." @@ -8737,11 +8847,11 @@ msgstr "" "Die Spendergeschwindigkeit beim Einfahren der Lötpaste\n" "durch die Spenderdüse." -#: flatcamGUI/FlatCAMGUI.py:6492 flatcamTools/ToolSolderPaste.py:269 +#: flatcamGUI/FlatCAMGUI.py:6656 flatcamTools/ToolSolderPaste.py:269 msgid "Dwell REV:" msgstr "Verweilen REV:" -#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:271 +#: flatcamGUI/FlatCAMGUI.py:6658 flatcamTools/ToolSolderPaste.py:271 msgid "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." @@ -8749,23 +8859,23 @@ msgstr "" "Pause nachdem Lotpastendispenser eingefahren wurde,\n" "das Druckgleichgewicht zu ermöglichen." -#: flatcamGUI/FlatCAMGUI.py:6501 flatcamTools/ToolSolderPaste.py:277 +#: flatcamGUI/FlatCAMGUI.py:6665 flatcamTools/ToolSolderPaste.py:277 msgid "PostProcessors:" msgstr "Postprozessoren:" -#: flatcamGUI/FlatCAMGUI.py:6503 flatcamTools/ToolSolderPaste.py:279 +#: flatcamGUI/FlatCAMGUI.py:6667 flatcamTools/ToolSolderPaste.py:279 msgid "Files that control the GCode generation." msgstr "Dateien, die die GCode-Generierung steuern." -#: flatcamGUI/FlatCAMGUI.py:6533 flatcamGUI/FlatCAMGUI.py:6539 +#: flatcamGUI/FlatCAMGUI.py:6697 flatcamGUI/FlatCAMGUI.py:6703 msgid "Idle." msgstr "Untätig" -#: flatcamGUI/FlatCAMGUI.py:6563 +#: flatcamGUI/FlatCAMGUI.py:6727 msgid "Application started ..." msgstr "Bewerbung gestartet ..." -#: flatcamGUI/FlatCAMGUI.py:6564 +#: flatcamGUI/FlatCAMGUI.py:6728 msgid "Hello!" msgstr "Hello!" @@ -8844,7 +8954,7 @@ msgid "Gerber Object" msgstr "Gerber-Objekt" #: flatcamGUI/ObjectUI.py:182 flatcamGUI/ObjectUI.py:517 -#: flatcamGUI/ObjectUI.py:839 flatcamGUI/ObjectUI.py:1372 +#: flatcamGUI/ObjectUI.py:839 flatcamGUI/ObjectUI.py:1382 msgid "Name:" msgstr "Name:" @@ -9272,11 +9382,11 @@ msgstr "" "ausgegraut und Cut Z wird automatisch aus dem neuen berechnet\n" "Zeigt UI-Formulareinträge mit den Namen V-Tip Dia und V-Tip Angle an." -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465 msgid "Dia" msgstr "Durchm" -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465 msgid "TT" msgstr "TT" @@ -9590,11 +9700,15 @@ msgstr "CNC-Auftragsobjekt" msgid "Plot kind:" msgstr " Plotart: " -#: flatcamGUI/ObjectUI.py:1378 +#: flatcamGUI/ObjectUI.py:1369 +msgid "Display Annotation:" +msgstr " Anmerkung anzeigen: " + +#: flatcamGUI/ObjectUI.py:1388 msgid "Travelled dist.:" msgstr " Zurückgelegte Distanz: " -#: flatcamGUI/ObjectUI.py:1381 flatcamGUI/ObjectUI.py:1388 +#: flatcamGUI/ObjectUI.py:1391 flatcamGUI/ObjectUI.py:1398 msgid "" "This is the total travelled distance on X-Y plane.\n" "In current units." @@ -9602,11 +9716,11 @@ msgstr "" "Dies ist die Gesamtstrecke auf der X-Y-Ebene.\n" "In aktuellen Einheiten." -#: flatcamGUI/ObjectUI.py:1416 +#: flatcamGUI/ObjectUI.py:1429 msgid "CNC Tools Table" msgstr " CNC-Werkzeugtabelle " -#: flatcamGUI/ObjectUI.py:1419 +#: flatcamGUI/ObjectUI.py:1432 msgid "" "Tools in this CNCJob object used for cutting.\n" "The tool diameter is used for plotting on canvas.\n" @@ -9628,27 +9742,27 @@ msgstr "" "Der 'Werkzeugtyp' (TT) kann kreisförmig mit 1 bis 4 Zähnen (C1..C4) sein.\n" "Kugel (B) oder V-Form (V)." -#: flatcamGUI/ObjectUI.py:1453 +#: flatcamGUI/ObjectUI.py:1466 msgid "P" msgstr "P" -#: flatcamGUI/ObjectUI.py:1459 +#: flatcamGUI/ObjectUI.py:1472 msgid "Update Plot" msgstr "Plot aktualisieren" -#: flatcamGUI/ObjectUI.py:1461 +#: flatcamGUI/ObjectUI.py:1474 msgid "Update the plot." msgstr "Aktualisieren Sie die Darstellung." -#: flatcamGUI/ObjectUI.py:1468 +#: flatcamGUI/ObjectUI.py:1481 msgid "Export CNC Code:" msgstr " CNC-Code exportieren: " -#: flatcamGUI/ObjectUI.py:1476 +#: flatcamGUI/ObjectUI.py:1489 msgid "Prepend to CNC Code:" msgstr "CNC-Code voranstellen:" -#: flatcamGUI/ObjectUI.py:1479 +#: flatcamGUI/ObjectUI.py:1492 msgid "" "Type here any G-Code commands you would\n" "like to add to the beginning of the generated file." @@ -9656,11 +9770,11 @@ msgstr "" "Geben Sie hier alle G-Code-Befehle ein\n" "gerne an den Anfang der generierten Datei hinzufügen." -#: flatcamGUI/ObjectUI.py:1489 +#: flatcamGUI/ObjectUI.py:1502 msgid "Append to CNC Code" msgstr "An CNC Code anhängen" -#: flatcamGUI/ObjectUI.py:1513 +#: flatcamGUI/ObjectUI.py:1526 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -9682,19 +9796,19 @@ msgstr "" "das hat \"toolchange_custom\" im Namen und das ist gebaut\n" "mit der \"Toolchange Custom\" -Prozessordatei als Vorlage." -#: flatcamGUI/ObjectUI.py:1561 +#: flatcamGUI/ObjectUI.py:1574 msgid "z_cut = depth where to cut" msgstr "z_cut = Tiefe, wo geschnitten werden soll" -#: flatcamGUI/ObjectUI.py:1562 +#: flatcamGUI/ObjectUI.py:1575 msgid "z_move = height where to travel" msgstr "z_move = Höhe wo zu reisen" -#: flatcamGUI/ObjectUI.py:1580 +#: flatcamGUI/ObjectUI.py:1593 msgid "View CNC Code" msgstr "CNC-Code anzeigen" -#: flatcamGUI/ObjectUI.py:1583 +#: flatcamGUI/ObjectUI.py:1596 msgid "" "Opens TAB to view/modify/print G-Code\n" "file." @@ -9702,11 +9816,11 @@ msgstr "" "Öffnet die Registerkarte zum Anzeigen / Ändern / Drucken von G-Code\n" "Datei." -#: flatcamGUI/ObjectUI.py:1589 +#: flatcamGUI/ObjectUI.py:1602 msgid "Save CNC Code" msgstr "CNC-Code speichern" -#: flatcamGUI/ObjectUI.py:1592 +#: flatcamGUI/ObjectUI.py:1605 msgid "" "Opens dialog to save G-Code\n" "file." @@ -11582,6 +11696,14 @@ msgstr "" "Werkzeuge auswählen.\n" "Parameter ändern" +#: flatcamTools/ToolSolderPaste.py:236 +msgid "" +"Feedrate (speed) while moving up vertically\n" +" to Dispense position (on Z plane)." +msgstr "" +"Vorschub (Geschwindigkeit) bei vertikaler Bewegung\n" +"  zur Ausgabeposition (auf der Z-Ebene)." + #: flatcamTools/ToolSolderPaste.py:290 msgid "Generate GCode" msgstr "GCode generieren" @@ -12031,6 +12153,9 @@ msgstr "" msgid "CNCJob objects can't be offseted." msgstr "CNCJob-Objekte können nicht versetzt werden." +#~ msgid "Disable" +#~ msgstr "Deaktivieren" + #~ msgid "[WARNING_NOTCL] Move cancelled. No shape selected." #~ msgstr "[WARNING_NOTCL] Umzug abgebrochen. Keine Form ausgewählt." diff --git a/locale/en/LC_MESSAGES/strings.mo b/locale/en/LC_MESSAGES/strings.mo index c3a054ecfdbc5c58b925641fac4a7239c8a5c128..2ac915050fc0545d999bdb4ba3fd1c25b5bd6247 100644 GIT binary patch delta 40490 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 delta 38971 zcmd7b1(y{^;HL4u_YUsvFf+Kj+u-i*?ykWb4-lN-?(Q
`-g0fIw-Kp;SH-RJEp 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" -#: FlatCAMApp.py:3133 +#: FlatCAMApp.py:3182 #, python-brace-format msgid "" "FlatCAM
Version {version} {beta} ({date}) - " @@ -188,31 +188,31 @@ msgstr "" "a>
DOWNLOAD area
here.
" -#: FlatCAMApp.py:3286 +#: FlatCAMApp.py:3335 msgid "[success] Defaults saved." msgstr "[success] Defaults saved." -#: FlatCAMApp.py:3307 +#: FlatCAMApp.py:3356 msgid "[ERROR_NOTCL] Could not load factory defaults file." msgstr "[ERROR_NOTCL] Could not load factory defaults file." -#: FlatCAMApp.py:3316 +#: FlatCAMApp.py:3365 msgid "[ERROR_NOTCL] Failed to parse factory defaults file." msgstr "[ERROR_NOTCL] Failed to parse factory defaults file." -#: FlatCAMApp.py:3330 +#: FlatCAMApp.py:3379 msgid "[ERROR_NOTCL] Failed to write factory defaults to file." msgstr "[ERROR_NOTCL] Failed to write factory defaults to file." -#: FlatCAMApp.py:3334 +#: FlatCAMApp.py:3383 msgid "Factory defaults saved." msgstr "Factory defaults saved." -#: FlatCAMApp.py:3339 flatcamGUI/FlatCAMGUI.py:3110 +#: FlatCAMApp.py:3388 flatcamGUI/FlatCAMGUI.py:3106 msgid "[WARNING_NOTCL] Application is saving the project. Please wait ..." msgstr "[WARNING_NOTCL] Application is saving the project. Please wait ..." -#: FlatCAMApp.py:3344 +#: FlatCAMApp.py:3393 msgid "" "There are files/objects modified in FlatCAM. \n" "Do you want to Save the project?" @@ -220,11 +220,11 @@ msgstr "" "There are files/objects modified in FlatCAM. \n" "Do you want to Save the project?" -#: FlatCAMApp.py:3347 FlatCAMApp.py:5797 +#: FlatCAMApp.py:3396 FlatCAMApp.py:5874 msgid "Save changes" msgstr "Save changes" -#: FlatCAMApp.py:3414 +#: FlatCAMApp.py:3463 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 " @@ -240,67 +240,67 @@ msgstr "" "be lost and the result may not be what was expected. \n" "Check the generated GCODE." -#: FlatCAMApp.py:3455 +#: FlatCAMApp.py:3504 msgid "[ERROR_NOTCL] Failed. Excellon joining works only on Excellon objects." msgstr "[ERROR_NOTCL] Failed. Excellon joining works only on Excellon objects." -#: FlatCAMApp.py:3477 +#: FlatCAMApp.py:3526 msgid "[ERROR_NOTCL] Failed. Gerber joining works only on Gerber objects." msgstr "[ERROR_NOTCL] Failed. Gerber joining works only on Gerber objects." -#: FlatCAMApp.py:3492 FlatCAMApp.py:3517 +#: FlatCAMApp.py:3541 FlatCAMApp.py:3566 msgid "[ERROR_NOTCL] Failed. Select a Geometry Object and try again." msgstr "[ERROR_NOTCL] Failed. Select a Geometry Object and try again." -#: FlatCAMApp.py:3496 FlatCAMApp.py:3521 +#: FlatCAMApp.py:3545 FlatCAMApp.py:3570 #, python-format msgid "[ERROR_NOTCL] Expected a FlatCAMGeometry, got %s" msgstr "[ERROR_NOTCL] Expected a FlatCAMGeometry, got %s" -#: FlatCAMApp.py:3509 +#: FlatCAMApp.py:3558 msgid "[success] A Geometry object was converted to MultiGeo type." msgstr "[success] A Geometry object was converted to MultiGeo type." -#: FlatCAMApp.py:3535 +#: FlatCAMApp.py:3584 msgid "[success] A Geometry object was converted to SingleGeo type." msgstr "[success] A Geometry object was converted to SingleGeo type." -#: FlatCAMApp.py:3682 FlatCAMApp.py:4495 FlatCAMApp.py:6064 FlatCAMApp.py:6075 -#: FlatCAMApp.py:6312 FlatCAMApp.py:6322 +#: FlatCAMApp.py:3731 FlatCAMApp.py:4567 FlatCAMApp.py:6141 FlatCAMApp.py:6152 +#: FlatCAMApp.py:6392 FlatCAMApp.py:6402 msgid "Ok" msgstr "Ok" -#: FlatCAMApp.py:3724 +#: FlatCAMApp.py:3773 #, python-format msgid "[success] Converted units to %s" msgstr "[success] Converted units to %s" -#: FlatCAMApp.py:3735 +#: FlatCAMApp.py:3784 msgid "[WARNING_NOTCL] Units conversion cancelled." msgstr "[WARNING_NOTCL] Units conversion cancelled." -#: FlatCAMApp.py:4364 +#: FlatCAMApp.py:4436 msgid "Open file" msgstr "Open file" -#: FlatCAMApp.py:4395 FlatCAMApp.py:4400 +#: FlatCAMApp.py:4467 FlatCAMApp.py:4472 msgid "Export G-Code ..." msgstr "Export G-Code ..." -#: FlatCAMApp.py:4403 +#: FlatCAMApp.py:4475 msgid "[WARNING_NOTCL] Export Code cancelled." msgstr "[WARNING_NOTCL] Export Code cancelled." -#: FlatCAMApp.py:4413 +#: FlatCAMApp.py:4485 msgid "[WARNING] No such file or directory" msgstr "[WARNING] No such file or directory" -#: FlatCAMApp.py:4420 +#: FlatCAMApp.py:4492 #, python-format msgid "Saved to: %s" msgstr "Saved to: %s" -#: FlatCAMApp.py:4483 FlatCAMApp.py:4516 FlatCAMApp.py:4527 FlatCAMApp.py:4538 +#: FlatCAMApp.py:4555 FlatCAMApp.py:4588 FlatCAMApp.py:4599 FlatCAMApp.py:4610 #: flatcamTools/ToolNonCopperClear.py:489 flatcamTools/ToolSolderPaste.py:765 msgid "" "[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float " @@ -309,12 +309,12 @@ msgstr "" "[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float " "format." -#: FlatCAMApp.py:4488 FlatCAMApp.py:4521 FlatCAMApp.py:4532 FlatCAMApp.py:4543 -#: flatcamGUI/FlatCAMGUI.py:3005 +#: FlatCAMApp.py:4560 FlatCAMApp.py:4593 FlatCAMApp.py:4604 FlatCAMApp.py:4615 +#: flatcamGUI/FlatCAMGUI.py:3001 msgid "[WARNING_NOTCL] Adding Tool cancelled ..." msgstr "[WARNING_NOTCL] Adding Tool cancelled ..." -#: FlatCAMApp.py:4491 +#: FlatCAMApp.py:4563 msgid "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." @@ -322,124 +322,128 @@ msgstr "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." -#: FlatCAMApp.py:4604 +#: FlatCAMApp.py:4676 msgid "Object(s) deleted ..." msgstr "Object(s) deleted ..." -#: FlatCAMApp.py:4608 +#: FlatCAMApp.py:4680 msgid "Failed. No object(s) selected..." msgstr "Failed. No object(s) selected..." -#: FlatCAMApp.py:4610 +#: FlatCAMApp.py:4682 msgid "Save the work in Editor and try again ..." msgstr "Save the work in Editor and try again ..." -#: FlatCAMApp.py:4623 +#: FlatCAMApp.py:4695 msgid "Click to set the origin ..." msgstr "Click to set the origin ..." -#: FlatCAMApp.py:4635 +#: FlatCAMApp.py:4707 msgid "Jump to ..." msgstr "Jump to ..." -#: FlatCAMApp.py:4636 +#: FlatCAMApp.py:4708 msgid "Enter the coordinates in format X,Y:" msgstr "Enter the coordinates in format X,Y:" -#: FlatCAMApp.py:4643 +#: FlatCAMApp.py:4715 msgid "Wrong coordinates. Enter coordinates in format: X,Y" msgstr "Wrong coordinates. Enter coordinates in format: X,Y" -#: FlatCAMApp.py:4661 flatcamEditors/FlatCAMExcEditor.py:2285 -#: flatcamEditors/FlatCAMExcEditor.py:2292 -#: flatcamEditors/FlatCAMGeoEditor.py:3648 -#: flatcamEditors/FlatCAMGeoEditor.py:3662 +#: FlatCAMApp.py:4733 flatcamEditors/FlatCAMExcEditor.py:2320 +#: flatcamEditors/FlatCAMExcEditor.py:2327 +#: flatcamEditors/FlatCAMGeoEditor.py:3645 +#: flatcamEditors/FlatCAMGeoEditor.py:3659 #: flatcamEditors/FlatCAMGrbEditor.py:1040 #: flatcamEditors/FlatCAMGrbEditor.py:1141 -#: flatcamEditors/FlatCAMGrbEditor.py:1402 -#: flatcamEditors/FlatCAMGrbEditor.py:1652 -#: flatcamEditors/FlatCAMGrbEditor.py:3928 -#: flatcamEditors/FlatCAMGrbEditor.py:3942 flatcamGUI/FlatCAMGUI.py:2419 -#: flatcamGUI/FlatCAMGUI.py:2431 +#: flatcamEditors/FlatCAMGrbEditor.py:1409 +#: flatcamEditors/FlatCAMGrbEditor.py:1666 +#: flatcamEditors/FlatCAMGrbEditor.py:3950 +#: flatcamEditors/FlatCAMGrbEditor.py:3964 flatcamGUI/FlatCAMGUI.py:2414 +#: flatcamGUI/FlatCAMGUI.py:2426 msgid "[success] Done." msgstr "[success] Done." -#: FlatCAMApp.py:4794 FlatCAMApp.py:4863 +#: FlatCAMApp.py:4865 FlatCAMApp.py:4932 msgid "[WARNING_NOTCL] No object is selected. Select an object and try again." msgstr "[WARNING_NOTCL] No object is selected. Select an object and try again." -#: FlatCAMApp.py:4904 +#: FlatCAMApp.py:4973 msgid "[success] Origin set ..." msgstr "[success] Origin set ..." -#: FlatCAMApp.py:4924 +#: FlatCAMApp.py:4993 msgid "Preferences" msgstr "Preferences" -#: FlatCAMApp.py:4944 +#: FlatCAMApp.py:5013 msgid "[WARNING_NOTCL] No object selected to Flip on Y axis." msgstr "[WARNING_NOTCL] No object selected to Flip on Y axis." -#: FlatCAMApp.py:4969 +#: FlatCAMApp.py:5038 msgid "[success] Flip on Y axis done." msgstr "[success] Flip on Y axis done." -#: FlatCAMApp.py:4971 FlatCAMApp.py:5011 +#: FlatCAMApp.py:5040 FlatCAMApp.py:5080 #: flatcamEditors/FlatCAMGeoEditor.py:1355 -#: flatcamEditors/FlatCAMGrbEditor.py:5309 flatcamTools/ToolTransform.py:748 +#: flatcamEditors/FlatCAMGrbEditor.py:5331 flatcamTools/ToolTransform.py:748 #, python-format msgid "[ERROR_NOTCL] Due of %s, Flip action was not executed." msgstr "[ERROR_NOTCL] Due of %s, Flip action was not executed." -#: FlatCAMApp.py:4984 +#: FlatCAMApp.py:5053 msgid "[WARNING_NOTCL] No object selected to Flip on X axis." msgstr "[WARNING_NOTCL] No object selected to Flip on X axis." -#: FlatCAMApp.py:5009 +#: FlatCAMApp.py:5078 msgid "[success] Flip on X axis done." msgstr "[success] Flip on X axis done." -#: FlatCAMApp.py:5024 +#: FlatCAMApp.py:5093 msgid "[WARNING_NOTCL] No object selected to Rotate." msgstr "[WARNING_NOTCL] No object selected to Rotate." -#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 +#: FlatCAMApp.py:5096 FlatCAMApp.py:5141 FlatCAMApp.py:5172 msgid "Transform" msgstr "Transform" -#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 +#: FlatCAMApp.py:5096 FlatCAMApp.py:5141 FlatCAMApp.py:5172 msgid "Enter the Angle value:" msgstr "Enter the Angle value:" -#: FlatCAMApp.py:5057 +#: FlatCAMApp.py:5126 msgid "[success] Rotation done." msgstr "[success] Rotation done." -#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:1298 -#: flatcamEditors/FlatCAMGrbEditor.py:5240 flatcamTools/ToolTransform.py:677 +#: FlatCAMApp.py:5128 flatcamEditors/FlatCAMGeoEditor.py:1298 +#: flatcamEditors/FlatCAMGrbEditor.py:5262 flatcamTools/ToolTransform.py:677 #, python-format msgid "[ERROR_NOTCL] Due of %s, rotation movement was not executed." msgstr "[ERROR_NOTCL] Due of %s, rotation movement was not executed." -#: FlatCAMApp.py:5070 +#: FlatCAMApp.py:5139 msgid "[WARNING_NOTCL] No object selected to Skew/Shear on X axis." msgstr "[WARNING_NOTCL] No object selected to Skew/Shear on X axis." -#: FlatCAMApp.py:5091 +#: FlatCAMApp.py:5160 msgid "[success] Skew on X axis done." msgstr "[success] Skew on X axis done." -#: FlatCAMApp.py:5101 +#: FlatCAMApp.py:5170 msgid "[WARNING_NOTCL] No object selected to Skew/Shear on Y axis." msgstr "[WARNING_NOTCL] No object selected to Skew/Shear on Y axis." -#: FlatCAMApp.py:5122 +#: FlatCAMApp.py:5191 msgid "[success] Skew on Y axis done." msgstr "[success] Skew on Y axis done." -#: FlatCAMApp.py:5197 flatcamEditors/FlatCAMGeoEditor.py:937 -#: flatcamEditors/FlatCAMGrbEditor.py:2365 -#: flatcamEditors/FlatCAMGrbEditor.py:4831 flatcamGUI/ObjectUI.py:991 +#: FlatCAMApp.py:5260 +msgid "Grid On/Off" +msgstr "Grid On/Off" + +#: FlatCAMApp.py:5273 flatcamEditors/FlatCAMGeoEditor.py:937 +#: flatcamEditors/FlatCAMGrbEditor.py:2381 +#: flatcamEditors/FlatCAMGrbEditor.py:4853 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 @@ -447,24 +451,24 @@ msgstr "[success] Skew on Y axis done." msgid "Add" msgstr "Add" -#: FlatCAMApp.py:5198 FlatCAMObj.py:3302 -#: flatcamEditors/FlatCAMGrbEditor.py:2370 flatcamGUI/FlatCAMGUI.py:532 -#: flatcamGUI/FlatCAMGUI.py:729 flatcamGUI/FlatCAMGUI.py:1619 -#: flatcamGUI/FlatCAMGUI.py:1955 flatcamGUI/ObjectUI.py:1007 +#: FlatCAMApp.py:5274 FlatCAMObj.py:3306 +#: flatcamEditors/FlatCAMGrbEditor.py:2386 flatcamGUI/FlatCAMGUI.py:527 +#: flatcamGUI/FlatCAMGUI.py:724 flatcamGUI/FlatCAMGUI.py:1616 +#: flatcamGUI/FlatCAMGUI.py:1953 flatcamGUI/ObjectUI.py:1007 #: flatcamTools/ToolNonCopperClear.py:146 flatcamTools/ToolPaint.py:143 #: flatcamTools/ToolSolderPaste.py:121 flatcamTools/ToolSolderPaste.py:481 msgid "Delete" msgstr "Delete" -#: FlatCAMApp.py:5210 +#: FlatCAMApp.py:5287 msgid "New Grid ..." msgstr "New Grid ..." -#: FlatCAMApp.py:5211 +#: FlatCAMApp.py:5288 msgid "Enter a Grid Value:" msgstr "Enter a Grid Value:" -#: FlatCAMApp.py:5219 FlatCAMApp.py:5246 +#: FlatCAMApp.py:5296 FlatCAMApp.py:5323 msgid "" "[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float " "format." @@ -472,48 +476,48 @@ msgstr "" "[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float " "format." -#: FlatCAMApp.py:5225 +#: FlatCAMApp.py:5302 msgid "[success] New Grid added ..." msgstr "[success] New Grid added ..." -#: FlatCAMApp.py:5228 +#: FlatCAMApp.py:5305 msgid "[WARNING_NOTCL] Grid already exists ..." msgstr "[WARNING_NOTCL] Grid already exists ..." -#: FlatCAMApp.py:5231 +#: FlatCAMApp.py:5308 msgid "[WARNING_NOTCL] Adding New Grid cancelled ..." msgstr "[WARNING_NOTCL] Adding New Grid cancelled ..." -#: FlatCAMApp.py:5253 +#: FlatCAMApp.py:5330 msgid "[ERROR_NOTCL] Grid Value does not exist ..." msgstr "[ERROR_NOTCL] Grid Value does not exist ..." -#: FlatCAMApp.py:5256 +#: FlatCAMApp.py:5333 msgid "[success] Grid Value deleted ..." msgstr "[success] Grid Value deleted ..." -#: FlatCAMApp.py:5259 +#: FlatCAMApp.py:5336 msgid "[WARNING_NOTCL] Delete Grid value cancelled ..." msgstr "[WARNING_NOTCL] Delete Grid value cancelled ..." -#: FlatCAMApp.py:5298 +#: FlatCAMApp.py:5375 msgid "[WARNING_NOTCL] No object selected to copy it's name" msgstr "[WARNING_NOTCL] No object selected to copy it's name" -#: FlatCAMApp.py:5302 +#: FlatCAMApp.py:5379 msgid "Name copied on clipboard ..." msgstr "Name copied on clipboard ..." -#: FlatCAMApp.py:5595 FlatCAMApp.py:5598 FlatCAMApp.py:5601 FlatCAMApp.py:5604 -#: FlatCAMApp.py:5619 FlatCAMApp.py:5622 FlatCAMApp.py:5625 FlatCAMApp.py:5628 -#: FlatCAMApp.py:5668 FlatCAMApp.py:5671 FlatCAMApp.py:5674 FlatCAMApp.py:5677 +#: FlatCAMApp.py:5672 FlatCAMApp.py:5675 FlatCAMApp.py:5678 FlatCAMApp.py:5681 +#: FlatCAMApp.py:5696 FlatCAMApp.py:5699 FlatCAMApp.py:5702 FlatCAMApp.py:5705 +#: FlatCAMApp.py:5745 FlatCAMApp.py:5748 FlatCAMApp.py:5751 FlatCAMApp.py:5754 #: ObjectCollection.py:717 ObjectCollection.py:720 ObjectCollection.py:723 #: ObjectCollection.py:726 #, python-brace-format msgid "[selected]{name} selected" msgstr "[selected]{name} selected" -#: FlatCAMApp.py:5794 +#: FlatCAMApp.py:5871 msgid "" "There are files/objects opened in FlatCAM.\n" "Creating a New project will delete them.\n" @@ -523,106 +527,106 @@ msgstr "" "Creating a New project will delete them.\n" "Do you want to Save the project?" -#: FlatCAMApp.py:5815 +#: FlatCAMApp.py:5892 msgid "[success] New Project created..." msgstr "[success] New Project created..." -#: FlatCAMApp.py:5923 FlatCAMApp.py:5926 flatcamGUI/FlatCAMGUI.py:613 -#: flatcamGUI/FlatCAMGUI.py:1834 +#: FlatCAMApp.py:6000 FlatCAMApp.py:6003 flatcamGUI/FlatCAMGUI.py:608 +#: flatcamGUI/FlatCAMGUI.py:1832 msgid "Open Gerber" msgstr "Open Gerber" -#: FlatCAMApp.py:5931 +#: FlatCAMApp.py:6008 msgid "[WARNING_NOTCL] Open Gerber cancelled." msgstr "[WARNING_NOTCL] Open Gerber cancelled." -#: FlatCAMApp.py:5952 FlatCAMApp.py:5955 flatcamGUI/FlatCAMGUI.py:614 -#: flatcamGUI/FlatCAMGUI.py:1835 +#: FlatCAMApp.py:6029 FlatCAMApp.py:6032 flatcamGUI/FlatCAMGUI.py:609 +#: flatcamGUI/FlatCAMGUI.py:1833 msgid "Open Excellon" msgstr "Open Excellon" -#: FlatCAMApp.py:5960 +#: FlatCAMApp.py:6037 msgid "[WARNING_NOTCL] Open Excellon cancelled." msgstr "[WARNING_NOTCL] Open Excellon cancelled." -#: FlatCAMApp.py:5982 FlatCAMApp.py:5985 +#: FlatCAMApp.py:6059 FlatCAMApp.py:6062 msgid "Open G-Code" msgstr "Open G-Code" -#: FlatCAMApp.py:5990 +#: FlatCAMApp.py:6067 msgid "[WARNING_NOTCL] Open G-Code cancelled." msgstr "[WARNING_NOTCL] Open G-Code cancelled." -#: FlatCAMApp.py:6008 FlatCAMApp.py:6011 +#: FlatCAMApp.py:6085 FlatCAMApp.py:6088 msgid "Open Project" msgstr "Open Project" -#: FlatCAMApp.py:6019 +#: FlatCAMApp.py:6096 msgid "[WARNING_NOTCL] Open Project cancelled." msgstr "[WARNING_NOTCL] Open Project cancelled." -#: FlatCAMApp.py:6038 FlatCAMApp.py:6041 +#: FlatCAMApp.py:6115 FlatCAMApp.py:6118 msgid "Open Configuration File" msgstr "Open Configuration File" -#: FlatCAMApp.py:6045 +#: FlatCAMApp.py:6122 msgid "[WARNING_NOTCL Open Config cancelled." msgstr "[WARNING_NOTCL Open Config cancelled." -#: FlatCAMApp.py:6060 FlatCAMApp.py:6308 FlatCAMApp.py:8519 FlatCAMApp.py:8539 -#: FlatCAMApp.py:8560 FlatCAMApp.py:8582 +#: FlatCAMApp.py:6137 FlatCAMApp.py:6388 FlatCAMApp.py:8538 FlatCAMApp.py:8558 +#: FlatCAMApp.py:8579 FlatCAMApp.py:8601 msgid "[WARNING_NOTCL] No object selected." msgstr "[WARNING_NOTCL] No object selected." -#: FlatCAMApp.py:6061 FlatCAMApp.py:6309 +#: FlatCAMApp.py:6138 FlatCAMApp.py:6389 msgid "Please Select a Geometry object to export" msgstr "Please Select a Geometry object to export" -#: FlatCAMApp.py:6072 +#: FlatCAMApp.py:6149 msgid "[ERROR_NOTCL] Only Geometry, Gerber and CNCJob objects can be used." msgstr "[ERROR_NOTCL] Only Geometry, Gerber and CNCJob objects can be used." -#: FlatCAMApp.py:6085 FlatCAMApp.py:6089 +#: FlatCAMApp.py:6162 FlatCAMApp.py:6166 msgid "Export SVG" msgstr "Export SVG" -#: FlatCAMApp.py:6094 +#: FlatCAMApp.py:6171 msgid "[WARNING_NOTCL] Export SVG cancelled." msgstr "[WARNING_NOTCL] Export SVG cancelled." -#: FlatCAMApp.py:6110 +#: FlatCAMApp.py:6190 msgid "[[WARNING_NOTCL]] Data must be a 3D array with last dimension 3 or 4" msgstr "[[WARNING_NOTCL]] Data must be a 3D array with last dimension 3 or 4" -#: FlatCAMApp.py:6116 FlatCAMApp.py:6120 +#: FlatCAMApp.py:6196 FlatCAMApp.py:6200 msgid "Export PNG Image" msgstr "Export PNG Image" -#: FlatCAMApp.py:6125 +#: FlatCAMApp.py:6205 msgid "Export PNG cancelled." msgstr "Export PNG cancelled." -#: FlatCAMApp.py:6144 +#: FlatCAMApp.py:6224 msgid "" "[WARNING_NOTCL] No object selected. Please select an Gerber object to export." msgstr "" "[WARNING_NOTCL] No object selected. Please select an Gerber object to export." -#: FlatCAMApp.py:6149 FlatCAMApp.py:6272 +#: FlatCAMApp.py:6229 FlatCAMApp.py:6352 msgid "" "[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files..." msgstr "" "[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files..." -#: FlatCAMApp.py:6161 +#: FlatCAMApp.py:6241 msgid "Save Gerber source file" msgstr "Save Gerber source file" -#: FlatCAMApp.py:6166 +#: FlatCAMApp.py:6246 msgid "[WARNING_NOTCL] Save Gerber source file cancelled." msgstr "[WARNING_NOTCL] Save Gerber source file cancelled." -#: FlatCAMApp.py:6185 +#: FlatCAMApp.py:6265 msgid "" "[WARNING_NOTCL] No object selected. Please select an Excellon object to " "export." @@ -630,21 +634,21 @@ msgstr "" "[WARNING_NOTCL] No object selected. Please select an Excellon object to " "export." -#: FlatCAMApp.py:6190 FlatCAMApp.py:6231 +#: FlatCAMApp.py:6270 FlatCAMApp.py:6311 msgid "" "[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files..." msgstr "" "[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files..." -#: FlatCAMApp.py:6198 FlatCAMApp.py:6202 +#: FlatCAMApp.py:6278 FlatCAMApp.py:6282 msgid "Save Excellon source file" msgstr "Save Excellon source file" -#: FlatCAMApp.py:6207 +#: FlatCAMApp.py:6287 msgid "[WARNING_NOTCL] Saving Excellon source file cancelled." msgstr "[WARNING_NOTCL] Saving Excellon source file cancelled." -#: FlatCAMApp.py:6226 +#: FlatCAMApp.py:6306 msgid "" "[WARNING_NOTCL] No object selected. Please Select an Excellon object to " "export." @@ -652,68 +656,68 @@ msgstr "" "[WARNING_NOTCL] No object selected. Please Select an Excellon object to " "export." -#: FlatCAMApp.py:6239 FlatCAMApp.py:6243 +#: FlatCAMApp.py:6319 FlatCAMApp.py:6323 msgid "Export Excellon" msgstr "Export Excellon" -#: FlatCAMApp.py:6248 +#: FlatCAMApp.py:6328 msgid "[WARNING_NOTCL] Export Excellon cancelled." msgstr "[WARNING_NOTCL] Export Excellon cancelled." -#: FlatCAMApp.py:6267 +#: FlatCAMApp.py:6347 msgid "" "[WARNING_NOTCL] No object selected. Please Select an Gerber object to export." msgstr "" "[WARNING_NOTCL] No object selected. Please Select an Gerber object to export." -#: FlatCAMApp.py:6280 FlatCAMApp.py:6284 +#: FlatCAMApp.py:6360 FlatCAMApp.py:6364 msgid "Export Gerber" msgstr "Export Gerber" -#: FlatCAMApp.py:6289 +#: FlatCAMApp.py:6369 msgid "[WARNING_NOTCL] Export Gerber cancelled." msgstr "[WARNING_NOTCL] Export Gerber cancelled." -#: FlatCAMApp.py:6319 +#: FlatCAMApp.py:6399 msgid "[ERROR_NOTCL] Only Geometry objects can be used." msgstr "[ERROR_NOTCL] Only Geometry objects can be used." -#: FlatCAMApp.py:6333 FlatCAMApp.py:6337 +#: FlatCAMApp.py:6413 FlatCAMApp.py:6417 msgid "Export DXF" msgstr "Export DXF" -#: FlatCAMApp.py:6342 +#: FlatCAMApp.py:6423 msgid "[WARNING_NOTCL] Export DXF cancelled." msgstr "[WARNING_NOTCL] Export DXF cancelled." -#: FlatCAMApp.py:6362 FlatCAMApp.py:6365 +#: FlatCAMApp.py:6443 FlatCAMApp.py:6446 msgid "Import SVG" msgstr "Import SVG" -#: FlatCAMApp.py:6373 +#: FlatCAMApp.py:6455 msgid "[WARNING_NOTCL] Open SVG cancelled." msgstr "[WARNING_NOTCL] Open SVG cancelled." -#: FlatCAMApp.py:6392 FlatCAMApp.py:6395 +#: FlatCAMApp.py:6474 FlatCAMApp.py:6478 msgid "Import DXF" msgstr "Import DXF" -#: FlatCAMApp.py:6403 +#: FlatCAMApp.py:6487 msgid "[WARNING_NOTCL] Open DXF cancelled." msgstr "[WARNING_NOTCL] Open DXF cancelled." -#: FlatCAMApp.py:6421 +#: FlatCAMApp.py:6505 #, python-format msgid "%s" msgstr "%s" -#: FlatCAMApp.py:6441 +#: FlatCAMApp.py:6525 msgid "" "[WARNING_NOTCL] Select an Gerber or Excellon file to view it's source file." msgstr "" "[WARNING_NOTCL] Select an Gerber or Excellon file to view it's source file." -#: FlatCAMApp.py:6448 +#: FlatCAMApp.py:6532 msgid "" "[WARNING_NOTCL] There is no selected object for which to see it's source " "file code." @@ -721,24 +725,24 @@ msgstr "" "[WARNING_NOTCL] There is no selected object for which to see it's source " "file code." -#: FlatCAMApp.py:6456 +#: FlatCAMApp.py:6540 msgid "Source Editor" msgstr "Source Editor" -#: FlatCAMApp.py:6466 +#: FlatCAMApp.py:6550 #, python-format msgid "[ERROR]App.on_view_source() -->%s" msgstr "[ERROR]App.on_view_source() -->%s" -#: FlatCAMApp.py:6478 FlatCAMApp.py:7621 FlatCAMObj.py:5573 +#: FlatCAMApp.py:6562 FlatCAMApp.py:7704 FlatCAMObj.py:5581 msgid "Code Editor" msgstr "Code Editor" -#: FlatCAMApp.py:6490 +#: FlatCAMApp.py:6574 msgid "Script Editor" msgstr "Script Editor" -#: FlatCAMApp.py:6493 +#: FlatCAMApp.py:6577 msgid "" "#\n" "# CREATE A NEW FLATCAM TCL SCRIPT\n" @@ -782,98 +786,98 @@ msgstr "" "#\n" "\n" -#: FlatCAMApp.py:6516 FlatCAMApp.py:6519 +#: FlatCAMApp.py:6600 FlatCAMApp.py:6603 msgid "Open TCL script" msgstr "Open TCL script" -#: FlatCAMApp.py:6527 +#: FlatCAMApp.py:6611 msgid "[WARNING_NOTCL] Open TCL script cancelled." msgstr "[WARNING_NOTCL] Open TCL script cancelled." -#: FlatCAMApp.py:6539 +#: FlatCAMApp.py:6623 #, python-format msgid "[ERROR]App.on_fileopenscript() -->%s" msgstr "[ERROR]App.on_fileopenscript() -->%s" -#: FlatCAMApp.py:6565 FlatCAMApp.py:6568 +#: FlatCAMApp.py:6649 FlatCAMApp.py:6652 msgid "Run TCL script" msgstr "Run TCL script" -#: FlatCAMApp.py:6576 +#: FlatCAMApp.py:6660 msgid "[WARNING_NOTCL] Run TCL script cancelled." msgstr "[WARNING_NOTCL] Run TCL script cancelled." -#: FlatCAMApp.py:6622 FlatCAMApp.py:6626 +#: FlatCAMApp.py:6710 FlatCAMApp.py:6714 msgid "Save Project As ..." msgstr "Save Project As ..." -#: FlatCAMApp.py:6623 +#: FlatCAMApp.py:6711 #, python-brace-format msgid "{l_save}/Project_{date}" msgstr "{l_save}/Project_{date}" -#: FlatCAMApp.py:6631 +#: FlatCAMApp.py:6719 msgid "[WARNING_NOTCL] Save Project cancelled." msgstr "[WARNING_NOTCL] Save Project cancelled." -#: FlatCAMApp.py:6676 +#: FlatCAMApp.py:6763 msgid "Exporting SVG" msgstr "Exporting SVG" -#: FlatCAMApp.py:6710 FlatCAMApp.py:6816 FlatCAMApp.py:6931 +#: FlatCAMApp.py:6797 FlatCAMApp.py:6903 FlatCAMApp.py:7018 #, python-format msgid "[success] SVG file exported to %s" msgstr "[success] SVG file exported to %s" -#: FlatCAMApp.py:6741 FlatCAMApp.py:6862 +#: FlatCAMApp.py:6828 FlatCAMApp.py:6949 #, python-format msgid "[WARNING_NOTCL] No object Box. Using instead %s" msgstr "[WARNING_NOTCL] No object Box. Using instead %s" -#: FlatCAMApp.py:6819 FlatCAMApp.py:6934 +#: FlatCAMApp.py:6906 FlatCAMApp.py:7021 msgid "Generating Film ... Please wait." msgstr "Generating Film ... Please wait." -#: FlatCAMApp.py:7082 +#: FlatCAMApp.py:7169 #, python-format msgid "[success] Excellon file exported to %s" msgstr "[success] Excellon file exported to %s" -#: FlatCAMApp.py:7089 +#: FlatCAMApp.py:7176 msgid "Exporting Excellon" msgstr "Exporting Excellon" -#: FlatCAMApp.py:7094 FlatCAMApp.py:7101 +#: FlatCAMApp.py:7181 FlatCAMApp.py:7188 msgid "[ERROR_NOTCL] Could not export Excellon file." msgstr "[ERROR_NOTCL] Could not export Excellon file." -#: FlatCAMApp.py:7199 +#: FlatCAMApp.py:7286 #, python-format msgid "[success] Gerber file exported to %s" msgstr "[success] Gerber file exported to %s" -#: FlatCAMApp.py:7206 +#: FlatCAMApp.py:7293 msgid "Exporting Gerber" msgstr "Exporting Gerber" -#: FlatCAMApp.py:7211 FlatCAMApp.py:7218 +#: FlatCAMApp.py:7298 FlatCAMApp.py:7305 msgid "[ERROR_NOTCL] Could not export Gerber file." msgstr "[ERROR_NOTCL] Could not export Gerber file." -#: FlatCAMApp.py:7258 +#: FlatCAMApp.py:7345 #, python-format msgid "[success] DXF file exported to %s" msgstr "[success] DXF file exported to %s" -#: FlatCAMApp.py:7264 +#: FlatCAMApp.py:7351 msgid "Exporting DXF" msgstr "Exporting DXF" -#: FlatCAMApp.py:7269 FlatCAMApp.py:7276 +#: FlatCAMApp.py:7356 FlatCAMApp.py:7363 msgid "[[WARNING_NOTCL]] Could not export DXF file." msgstr "[[WARNING_NOTCL]] Could not export DXF file." -#: FlatCAMApp.py:7296 FlatCAMApp.py:7338 FlatCAMApp.py:7379 +#: FlatCAMApp.py:7383 FlatCAMApp.py:7425 FlatCAMApp.py:7469 msgid "" "[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and " "Gerber are supported" @@ -881,95 +885,95 @@ msgstr "" "[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and " "Gerber are supported" -#: FlatCAMApp.py:7306 +#: FlatCAMApp.py:7393 msgid "Importing SVG" msgstr "Importing SVG" -#: FlatCAMApp.py:7317 FlatCAMApp.py:7359 FlatCAMApp.py:7399 FlatCAMApp.py:7475 -#: FlatCAMApp.py:7542 FlatCAMApp.py:7607 flatcamTools/ToolPDF.py:212 +#: FlatCAMApp.py:7404 FlatCAMApp.py:7446 FlatCAMApp.py:7489 FlatCAMApp.py:7566 +#: FlatCAMApp.py:7627 FlatCAMApp.py:7690 flatcamTools/ToolPDF.py:212 #, python-format msgid "[success] Opened: %s" msgstr "[success] Opened: %s" -#: FlatCAMApp.py:7348 +#: FlatCAMApp.py:7435 msgid "Importing DXF" msgstr "Importing DXF" -#: FlatCAMApp.py:7387 +#: FlatCAMApp.py:7477 msgid "Importing Image" msgstr "Importing Image" -#: FlatCAMApp.py:7428 FlatCAMApp.py:7430 +#: FlatCAMApp.py:7518 FlatCAMApp.py:7520 #, python-format msgid "[ERROR_NOTCL] Failed to open file: %s" msgstr "[ERROR_NOTCL] Failed to open file: %s" -#: FlatCAMApp.py:7433 +#: FlatCAMApp.py:7523 #, python-brace-format msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}" msgstr "[ERROR_NOTCL] Failed to parse file: {name}. {error}" -#: FlatCAMApp.py:7439 FlatCAMObj.py:4271 -#: flatcamEditors/FlatCAMExcEditor.py:2041 +#: FlatCAMApp.py:7530 FlatCAMObj.py:4266 +#: flatcamEditors/FlatCAMExcEditor.py:2077 msgid "[ERROR] An internal error has ocurred. See shell.\n" msgstr "[ERROR] An internal error has ocurred. See shell.\n" -#: FlatCAMApp.py:7448 +#: FlatCAMApp.py:7539 msgid "" "[ERROR_NOTCL] Object is not Gerber file or empty. Aborting object creation." msgstr "" "[ERROR_NOTCL] Object is not Gerber file or empty. Aborting object creation." -#: FlatCAMApp.py:7456 +#: FlatCAMApp.py:7547 msgid "Opening Gerber" msgstr "Opening Gerber" -#: FlatCAMApp.py:7466 +#: FlatCAMApp.py:7557 msgid "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file." msgstr "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file." -#: FlatCAMApp.py:7501 flatcamTools/ToolPcbWizard.py:421 +#: FlatCAMApp.py:7590 flatcamTools/ToolPcbWizard.py:421 msgid "[ERROR_NOTCL] This is not Excellon file." msgstr "[ERROR_NOTCL] This is not Excellon file." -#: FlatCAMApp.py:7504 +#: FlatCAMApp.py:7593 #, python-format msgid "[ERROR_NOTCL] Cannot open file: %s" msgstr "[ERROR_NOTCL] Cannot open file: %s" -#: FlatCAMApp.py:7509 flatcamTools/ToolPcbWizard.py:429 +#: FlatCAMApp.py:7598 flatcamTools/ToolPcbWizard.py:429 msgid "[ERROR_NOTCL] An internal error has occurred. See shell.\n" msgstr "[ERROR_NOTCL] An internal error has occurred. See shell.\n" -#: FlatCAMApp.py:7525 flatcamTools/ToolPDF.py:262 +#: FlatCAMApp.py:7611 flatcamTools/ToolPDF.py:262 #: flatcamTools/ToolPcbWizard.py:442 #, python-format msgid "[ERROR_NOTCL] No geometry found in file: %s" msgstr "[ERROR_NOTCL] No geometry found in file: %s" -#: FlatCAMApp.py:7528 +#: FlatCAMApp.py:7614 msgid "Opening Excellon." msgstr "Opening Excellon." -#: FlatCAMApp.py:7535 +#: FlatCAMApp.py:7620 msgid "[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file." msgstr "" "[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file." -#: FlatCAMApp.py:7574 +#: FlatCAMApp.py:7657 #, python-format msgid "[ERROR_NOTCL] Failed to open %s" msgstr "[ERROR_NOTCL] Failed to open %s" -#: FlatCAMApp.py:7584 +#: FlatCAMApp.py:7667 msgid "[ERROR_NOTCL] This is not GCODE" msgstr "[ERROR_NOTCL] This is not GCODE" -#: FlatCAMApp.py:7590 +#: FlatCAMApp.py:7673 msgid "Opening G-Code." msgstr "Opening G-Code." -#: FlatCAMApp.py:7598 +#: FlatCAMApp.py:7681 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 " @@ -979,26 +983,26 @@ msgstr "" " Attempting to create a FlatCAM CNCJob Object from G-Code file failed during " "processing" -#: FlatCAMApp.py:7638 +#: FlatCAMApp.py:7721 #, python-format msgid "[ERROR_NOTCL] Failed to open config file: %s" msgstr "[ERROR_NOTCL] Failed to open config file: %s" -#: FlatCAMApp.py:7663 FlatCAMApp.py:7679 +#: FlatCAMApp.py:7747 FlatCAMApp.py:7764 #, python-format msgid "[ERROR_NOTCL] Failed to open project file: %s" msgstr "[ERROR_NOTCL] Failed to open project file: %s" -#: FlatCAMApp.py:7705 +#: FlatCAMApp.py:7787 #, python-format msgid "[success] Project loaded from: %s" msgstr "[success] Project loaded from: %s" -#: FlatCAMApp.py:7835 +#: FlatCAMApp.py:7892 msgid "Available commands:\n" msgstr "Available commands:\n" -#: FlatCAMApp.py:7837 +#: FlatCAMApp.py:7894 msgid "" "\n" "\n" @@ -1010,23 +1014,23 @@ msgstr "" "Type help for usage.\n" " Example: help open_gerber" -#: FlatCAMApp.py:7985 +#: FlatCAMApp.py:8044 msgid "Shows list of commands." msgstr "Shows list of commands." -#: FlatCAMApp.py:8042 +#: FlatCAMApp.py:8101 msgid "[ERROR_NOTCL] Failed to load recent item list." msgstr "[ERROR_NOTCL] Failed to load recent item list." -#: FlatCAMApp.py:8049 +#: FlatCAMApp.py:8108 msgid "[ERROR_NOTCL] Failed to parse recent item list." msgstr "[ERROR_NOTCL] Failed to parse recent item list." -#: FlatCAMApp.py:8110 flatcamGUI/FlatCAMGUI.py:973 +#: FlatCAMApp.py:8169 flatcamGUI/FlatCAMGUI.py:968 msgid "Shortcut Key List" msgstr "Shortcut Key List" -#: FlatCAMApp.py:8117 +#: FlatCAMApp.py:8176 msgid "" "\n" "

Selected Tab - Choose an Item from " @@ -1122,23 +1126,23 @@ msgstr "" "\n" " " -#: FlatCAMApp.py:8221 +#: FlatCAMApp.py:8280 msgid "[WARNING_NOTCL] Failed checking for latest version. Could not connect." msgstr "[WARNING_NOTCL] Failed checking for latest version. Could not connect." -#: FlatCAMApp.py:8228 +#: FlatCAMApp.py:8287 msgid "[ERROR_NOTCL] Could not parse information about latest version." msgstr "[ERROR_NOTCL] Could not parse information about latest version." -#: FlatCAMApp.py:8238 +#: FlatCAMApp.py:8297 msgid "[success] FlatCAM is up to date!" msgstr "[success] FlatCAM is up to date!" -#: FlatCAMApp.py:8243 +#: FlatCAMApp.py:8302 msgid "Newer Version Available" msgstr "Newer Version Available" -#: FlatCAMApp.py:8244 +#: FlatCAMApp.py:8303 msgid "" "There is a newer version of FlatCAM available for download:\n" "\n" @@ -1146,80 +1150,95 @@ msgstr "" "There is a newer version of FlatCAM available for download:\n" "\n" -#: FlatCAMApp.py:8246 +#: FlatCAMApp.py:8305 msgid "info" msgstr "info" -#: FlatCAMApp.py:8265 +#: FlatCAMApp.py:8324 msgid "[success] All plots disabled." msgstr "[success] All plots disabled." -#: FlatCAMApp.py:8271 +#: FlatCAMApp.py:8330 msgid "[success] All non selected plots disabled." msgstr "[success] All non selected plots disabled." -#: FlatCAMApp.py:8277 +#: FlatCAMApp.py:8336 msgid "[success] All plots enabled." msgstr "[success] All plots enabled." -#: FlatCAMApp.py:8388 +#: FlatCAMApp.py:8342 +#| msgid "[success] All plots enabled." +msgid "[success] Selected plots enabled..." +msgstr "[success] Selected plots enabled..." + +#: FlatCAMApp.py:8350 +#| msgid "[success] All non selected plots disabled." +msgid "[success] Selected plots disabled..." +msgstr "[success] Selected plots disabled..." + +#: FlatCAMApp.py:8360 FlatCAMApp.py:8373 +#| msgid "Moving ..." +msgid "Working ..." +msgstr "Working ..." + +#: FlatCAMApp.py:8407 msgid "Saving FlatCAM Project" msgstr "Saving FlatCAM Project" -#: FlatCAMApp.py:8409 FlatCAMApp.py:8440 +#: FlatCAMApp.py:8428 FlatCAMApp.py:8459 #, python-format msgid "[success] Project saved to: %s" msgstr "[success] Project saved to: %s" -#: FlatCAMApp.py:8427 +#: FlatCAMApp.py:8446 #, python-format msgid "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it." msgstr "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it." -#: FlatCAMApp.py:8434 +#: FlatCAMApp.py:8453 #, python-format msgid "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it." msgstr "" "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it." -#: FlatCAMApp.py:8442 +#: FlatCAMApp.py:8461 #, python-format msgid "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it." msgstr "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it." -#: FlatCAMObj.py:201 +#: FlatCAMObj.py:202 #, python-brace-format msgid "[success] Name changed from {old} to {new}" msgstr "[success] Name changed from {old} to {new}" -#: FlatCAMObj.py:548 FlatCAMObj.py:2033 FlatCAMObj.py:3307 FlatCAMObj.py:5470 +#: FlatCAMObj.py:546 FlatCAMObj.py:2031 FlatCAMObj.py:3311 FlatCAMObj.py:5478 msgid "Basic" msgstr "Basic" -#: FlatCAMObj.py:560 FlatCAMObj.py:2049 FlatCAMObj.py:3329 FlatCAMObj.py:5476 +#: FlatCAMObj.py:558 FlatCAMObj.py:2047 FlatCAMObj.py:3333 FlatCAMObj.py:5484 msgid "Advanced" msgstr "Advanced" -#: FlatCAMObj.py:923 FlatCAMObj.py:978 +#: FlatCAMObj.py:921 FlatCAMObj.py:976 #, python-format msgid "[success] Isolation geometry created: %s" msgstr "[success] Isolation geometry created: %s" -#: FlatCAMObj.py:1157 +#: FlatCAMObj.py:1155 msgid "Plotting Apertures" msgstr "Plotting Apertures" -#: FlatCAMObj.py:1872 flatcamEditors/FlatCAMExcEditor.py:1332 +#: FlatCAMObj.py:1870 flatcamEditors/FlatCAMExcEditor.py:1368 msgid "Total Drills" msgstr "Total Drills" -#: FlatCAMObj.py:1898 flatcamEditors/FlatCAMExcEditor.py:1364 +#: FlatCAMObj.py:1896 flatcamEditors/FlatCAMExcEditor.py:1400 msgid "Total Slots" msgstr "Total Slots" -#: FlatCAMObj.py:2105 FlatCAMObj.py:3380 FlatCAMObj.py:3687 FlatCAMObj.py:3874 -#: FlatCAMObj.py:3887 FlatCAMObj.py:4004 FlatCAMObj.py:4419 FlatCAMObj.py:4654 -#: FlatCAMObj.py:5062 flatcamEditors/FlatCAMExcEditor.py:1439 +#: FlatCAMObj.py:2103 FlatCAMObj.py:3384 FlatCAMObj.py:3682 FlatCAMObj.py:3869 +#: FlatCAMObj.py:3882 FlatCAMObj.py:3999 FlatCAMObj.py:4416 FlatCAMObj.py:4653 +#: FlatCAMObj.py:5061 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 @@ -1238,45 +1257,45 @@ msgstr "Total Slots" msgid "[ERROR_NOTCL] Wrong value format entered, use a number." msgstr "[ERROR_NOTCL] Wrong value format entered, use a number." -#: FlatCAMObj.py:2329 FlatCAMObj.py:2420 FlatCAMObj.py:2542 +#: FlatCAMObj.py:2327 FlatCAMObj.py:2418 FlatCAMObj.py:2540 msgid "" "[ERROR_NOTCL] Please select one or more tools from the list and try again." msgstr "" "[ERROR_NOTCL] Please select one or more tools from the list and try again." -#: FlatCAMObj.py:2336 +#: FlatCAMObj.py:2334 msgid "" "[ERROR_NOTCL] Milling tool for DRILLS is larger than hole size. Cancelled." msgstr "" "[ERROR_NOTCL] Milling tool for DRILLS is larger than hole size. Cancelled." -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 msgid "Tool_nr" msgstr "Tool_nr" -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 -#: flatcamEditors/FlatCAMExcEditor.py:785 -#: flatcamEditors/FlatCAMExcEditor.py:1984 flatcamGUI/ObjectUI.py:556 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 +#: flatcamEditors/FlatCAMExcEditor.py:819 +#: flatcamEditors/FlatCAMExcEditor.py:2020 flatcamGUI/ObjectUI.py:556 #: flatcamTools/ToolNonCopperClear.py:83 flatcamTools/ToolPaint.py:80 #: flatcamTools/ToolPcbWizard.py:78 flatcamTools/ToolSolderPaste.py:81 msgid "Diameter" msgstr "Diameter" -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 msgid "Drills_Nr" msgstr "Drills_Nr" -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 msgid "Slots_Nr" msgstr "Slots_Nr" -#: FlatCAMObj.py:2430 +#: FlatCAMObj.py:2428 msgid "" "[ERROR_NOTCL] Milling tool for SLOTS is larger than hole size. Cancelled." msgstr "" "[ERROR_NOTCL] Milling tool for SLOTS is larger than hole size. Cancelled." -#: FlatCAMObj.py:2604 FlatCAMObj.py:4307 FlatCAMObj.py:4520 FlatCAMObj.py:4837 +#: FlatCAMObj.py:2602 FlatCAMObj.py:4304 FlatCAMObj.py:4519 FlatCAMObj.py:4836 msgid "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"z_pdepth\"] or self." "options[\"z_pdepth\"]" @@ -1284,7 +1303,7 @@ msgstr "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"z_pdepth\"] or self." "options[\"z_pdepth\"]" -#: FlatCAMObj.py:2616 FlatCAMObj.py:4319 FlatCAMObj.py:4532 FlatCAMObj.py:4849 +#: FlatCAMObj.py:2614 FlatCAMObj.py:4316 FlatCAMObj.py:4531 FlatCAMObj.py:4848 msgid "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"feedrate_probe\"] or " "self.options[\"feedrate_probe\"]" @@ -1292,12 +1311,12 @@ msgstr "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"feedrate_probe\"] or " "self.options[\"feedrate_probe\"]" -#: FlatCAMObj.py:2648 FlatCAMObj.py:4724 FlatCAMObj.py:4729 FlatCAMObj.py:4875 +#: FlatCAMObj.py:2646 FlatCAMObj.py:4723 FlatCAMObj.py:4728 FlatCAMObj.py:4874 msgid "Generating CNC Code" msgstr "Generating CNC Code" -#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5166 camlib.py:5625 -#: camlib.py:5888 +#: FlatCAMObj.py:2672 FlatCAMObj.py:5020 camlib.py:5152 camlib.py:5611 +#: camlib.py:5874 msgid "" "[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " "format (x, y) \n" @@ -1307,77 +1326,77 @@ msgstr "" "format (x, y) \n" "but now there is only one value, not two. " -#: FlatCAMObj.py:3022 FlatCAMObj.py:3930 FlatCAMObj.py:3931 FlatCAMObj.py:3940 +#: FlatCAMObj.py:3020 FlatCAMObj.py:3925 FlatCAMObj.py:3926 FlatCAMObj.py:3935 msgid "Iso" msgstr "Iso" -#: FlatCAMObj.py:3022 FlatCAMObj.py:3265 FlatCAMObj.py:3552 +#: FlatCAMObj.py:3020 FlatCAMObj.py:3269 FlatCAMObj.py:3549 msgid "Rough" msgstr "Rough" -#: FlatCAMObj.py:3022 +#: FlatCAMObj.py:3020 msgid "Finish" msgstr "Finish" -#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:727 -#: flatcamGUI/FlatCAMGUI.py:1618 flatcamGUI/FlatCAMGUI.py:1953 +#: FlatCAMObj.py:3304 flatcamGUI/FlatCAMGUI.py:526 flatcamGUI/FlatCAMGUI.py:722 +#: flatcamGUI/FlatCAMGUI.py:1615 flatcamGUI/FlatCAMGUI.py:1951 #: flatcamGUI/ObjectUI.py:999 msgid "Copy" msgstr "Copy" -#: FlatCAMObj.py:3522 +#: FlatCAMObj.py:3519 msgid "[ERROR_NOTCL] Please enter the desired tool diameter in Float format." msgstr "[ERROR_NOTCL] Please enter the desired tool diameter in Float format." -#: FlatCAMObj.py:3597 +#: FlatCAMObj.py:3592 msgid "[success] Tool added in Tool Table." msgstr "[success] Tool added in Tool Table." -#: FlatCAMObj.py:3602 +#: FlatCAMObj.py:3597 msgid "[ERROR_NOTCL] Default Tool added. Wrong value format entered." msgstr "[ERROR_NOTCL] Default Tool added. Wrong value format entered." -#: FlatCAMObj.py:3632 FlatCAMObj.py:3642 +#: FlatCAMObj.py:3627 FlatCAMObj.py:3637 msgid "[WARNING_NOTCL] Failed. Select a tool to copy." msgstr "[WARNING_NOTCL] Failed. Select a tool to copy." -#: FlatCAMObj.py:3671 +#: FlatCAMObj.py:3666 msgid "[success] Tool was copied in Tool Table." msgstr "[success] Tool was copied in Tool Table." -#: FlatCAMObj.py:3704 +#: FlatCAMObj.py:3699 msgid "[success] Tool was edited in Tool Table." msgstr "[success] Tool was edited in Tool Table." -#: FlatCAMObj.py:3735 FlatCAMObj.py:3745 +#: FlatCAMObj.py:3730 FlatCAMObj.py:3740 msgid "[WARNING_NOTCL] Failed. Select a tool to delete." msgstr "[WARNING_NOTCL] Failed. Select a tool to delete." -#: FlatCAMObj.py:3769 +#: FlatCAMObj.py:3764 msgid "[success] Tool was deleted in Tool Table." msgstr "[success] Tool was deleted in Tool Table." -#: FlatCAMObj.py:4190 +#: FlatCAMObj.py:4185 #, python-format msgid "" "[WARNING_NOTCL] This Geometry can't be processed because it is %s geometry." msgstr "" "[WARNING_NOTCL] This Geometry can't be processed because it is %s geometry." -#: FlatCAMObj.py:4207 +#: FlatCAMObj.py:4202 msgid "[ERROR_NOTCL] Wrong Tool Dia value format entered, use a number." msgstr "[ERROR_NOTCL] Wrong Tool Dia value format entered, use a number." -#: FlatCAMObj.py:4234 +#: FlatCAMObj.py:4229 msgid "[ERROR_NOTCL] Failed. No tool selected in the tool table ..." msgstr "[ERROR_NOTCL] Failed. No tool selected in the tool table ..." -#: FlatCAMObj.py:4272 +#: FlatCAMObj.py:4267 #, python-format msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" msgstr "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" -#: FlatCAMObj.py:4428 FlatCAMObj.py:4663 +#: FlatCAMObj.py:4425 FlatCAMObj.py:4662 msgid "" "[WARNING] Tool Offset is selected in Tool Table but no value is provided.\n" "Add a Tool Offset or change the Offset Type." @@ -1385,20 +1404,20 @@ msgstr "" "[WARNING] Tool Offset is selected in Tool Table but no value is provided.\n" "Add a Tool Offset or change the Offset Type." -#: FlatCAMObj.py:4544 flatcamTools/ToolSolderPaste.py:1107 +#: FlatCAMObj.py:4543 flatcamTools/ToolSolderPaste.py:1107 #: flatcamTools/ToolSolderPaste.py:1162 msgid "[ERROR_NOTCL] Cancelled. Empty file, it has no geometry..." msgstr "[ERROR_NOTCL] Cancelled. Empty file, it has no geometry..." -#: FlatCAMObj.py:4908 FlatCAMObj.py:4918 camlib.py:3346 camlib.py:3355 +#: FlatCAMObj.py:4907 FlatCAMObj.py:4917 camlib.py:3335 camlib.py:3344 msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float." msgstr "[ERROR_NOTCL] Scale factor has to be a number: integer or float." -#: FlatCAMObj.py:4956 +#: FlatCAMObj.py:4955 msgid "[success] Geometry Scale done." msgstr "[success] Geometry Scale done." -#: FlatCAMObj.py:4973 camlib.py:3425 +#: FlatCAMObj.py:4972 camlib.py:3414 msgid "" "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " "one value in the Offset field." @@ -1406,29 +1425,29 @@ msgstr "" "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " "one value in the Offset field." -#: FlatCAMObj.py:4993 +#: FlatCAMObj.py:4992 msgid "[success] Geometry Offset done." msgstr "[success] Geometry Offset done." -#: FlatCAMObj.py:5538 FlatCAMObj.py:5543 flatcamTools/ToolSolderPaste.py:1361 +#: FlatCAMObj.py:5546 FlatCAMObj.py:5551 flatcamTools/ToolSolderPaste.py:1361 msgid "Export Machine Code ..." msgstr "Export Machine Code ..." -#: FlatCAMObj.py:5549 flatcamTools/ToolSolderPaste.py:1364 +#: FlatCAMObj.py:5557 flatcamTools/ToolSolderPaste.py:1364 msgid "[WARNING_NOTCL] Export Machine Code cancelled ..." msgstr "[WARNING_NOTCL] Export Machine Code cancelled ..." -#: FlatCAMObj.py:5562 +#: FlatCAMObj.py:5570 #, python-format msgid "[success] Machine Code file saved to: %s" msgstr "[success] Machine Code file saved to: %s" -#: FlatCAMObj.py:5584 +#: FlatCAMObj.py:5592 #, python-format msgid "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" msgstr "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" -#: FlatCAMObj.py:5701 +#: FlatCAMObj.py:5709 #, python-format msgid "" "[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " @@ -1437,11 +1456,11 @@ msgstr "" "[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " "CNCJob object." -#: FlatCAMObj.py:5754 +#: FlatCAMObj.py:5762 msgid "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21" msgstr "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21" -#: FlatCAMObj.py:5767 +#: FlatCAMObj.py:5775 msgid "" "[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " "empty." @@ -1449,15 +1468,15 @@ msgstr "" "[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " "empty." -#: FlatCAMObj.py:5774 +#: FlatCAMObj.py:5782 msgid "[success] Toolchange G-code was replaced by a custom code." msgstr "[success] Toolchange G-code was replaced by a custom code." -#: FlatCAMObj.py:5789 flatcamTools/ToolSolderPaste.py:1390 +#: FlatCAMObj.py:5797 flatcamTools/ToolSolderPaste.py:1390 msgid "[WARNING_NOTCL] No such file or directory" msgstr "[WARNING_NOTCL] No such file or directory" -#: FlatCAMObj.py:5809 FlatCAMObj.py:5821 +#: FlatCAMObj.py:5817 FlatCAMObj.py:5829 msgid "" "[WARNING_NOTCL] The used postprocessor file has to have in it's name: " "'toolchange_custom'" @@ -1465,11 +1484,11 @@ msgstr "" "[WARNING_NOTCL] The used postprocessor file has to have in it's name: " "'toolchange_custom'" -#: FlatCAMObj.py:5827 +#: FlatCAMObj.py:5835 msgid "[ERROR] There is no postprocessor file." msgstr "[ERROR] There is no postprocessor file." -#: ObjectCollection.py:419 +#: ObjectCollection.py:420 #, python-brace-format msgid "Object renamed from {old} to {new}" msgstr "Object renamed from {old} to {new}" @@ -1479,44 +1498,44 @@ msgstr "Object renamed from {old} to {new}" msgid "[ERROR] Cause of error: %s" msgstr "[ERROR] Cause of error: %s" -#: camlib.py:202 +#: camlib.py:198 msgid "[ERROR_NOTCL] self.solid_geometry is neither BaseGeometry or list." msgstr "[ERROR_NOTCL] self.solid_geometry is neither BaseGeometry or list." -#: camlib.py:1390 +#: camlib.py:1381 msgid "[success] Object was mirrored ..." msgstr "[success] Object was mirrored ..." -#: camlib.py:1392 +#: camlib.py:1383 msgid "[ERROR_NOTCL] Failed to mirror. No object selected" msgstr "[ERROR_NOTCL] Failed to mirror. No object selected" -#: camlib.py:1428 +#: camlib.py:1419 msgid "[success] Object was rotated ..." msgstr "[success] Object was rotated ..." -#: camlib.py:1430 +#: camlib.py:1421 msgid "[ERROR_NOTCL] Failed to rotate. No object selected" msgstr "[ERROR_NOTCL] Failed to rotate. No object selected" -#: camlib.py:1464 +#: camlib.py:1455 msgid "[success] Object was skewed ..." msgstr "[success] Object was skewed ..." -#: camlib.py:1466 +#: camlib.py:1457 msgid "[ERROR_NOTCL] Failed to skew. No object selected" msgstr "[ERROR_NOTCL] Failed to skew. No object selected" -#: camlib.py:2728 camlib.py:2813 +#: camlib.py:2717 camlib.py:2802 #, python-format msgid "[WARNING] Coordinates missing, line ignored: %s" msgstr "[WARNING] Coordinates missing, line ignored: %s" -#: camlib.py:2729 camlib.py:2814 +#: camlib.py:2718 camlib.py:2803 msgid "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!" msgstr "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!" -#: camlib.py:2778 +#: camlib.py:2767 #, python-format msgid "" "[ERROR] Region does not have enough points. File will be processed but there " @@ -1525,7 +1544,7 @@ msgstr "" "[ERROR] Region does not have enough points. File will be processed but there " "are parser errors. Line number: %s" -#: camlib.py:3170 +#: camlib.py:3159 #, python-format msgid "" "[ERROR]Gerber Parser ERROR.\n" @@ -1534,32 +1553,32 @@ msgstr "" "[ERROR]Gerber Parser ERROR.\n" "%s:" -#: camlib.py:3392 +#: camlib.py:3381 msgid "[success] Gerber Scale done." msgstr "[success] Gerber Scale done." -#: camlib.py:3458 +#: camlib.py:3447 msgid "[success] Gerber Offset done." msgstr "[success] Gerber Offset done." -#: camlib.py:3512 +#: camlib.py:3501 msgid "[success] Gerber Mirror done." msgstr "[success] Gerber Mirror done." -#: camlib.py:3558 +#: camlib.py:3547 msgid "[success] Gerber Skew done." msgstr "[success] Gerber Skew done." -#: camlib.py:3596 +#: camlib.py:3585 msgid "[success] Gerber Rotate done." msgstr "[success] Gerber Rotate done." -#: camlib.py:3875 +#: camlib.py:3864 #, python-format msgid "[ERROR_NOTCL] This is GCODE mark: %s" msgstr "[ERROR_NOTCL] This is GCODE mark: %s" -#: camlib.py:3990 +#: camlib.py:3979 #, python-format msgid "" "[WARNING] No tool diameter info's. See shell.\n" @@ -1576,7 +1595,7 @@ msgstr "" "The user needs to edit the resulting Excellon object and change the " "diameters to reflect the real diameters." -#: camlib.py:4455 +#: camlib.py:4444 #, python-brace-format msgid "" "[ERROR] Excellon Parser error.\n" @@ -1585,7 +1604,7 @@ msgstr "" "[ERROR] Excellon Parser error.\n" "Parsing Failed. Line {l_nr}: {line}\n" -#: camlib.py:4532 +#: camlib.py:4521 msgid "" "[WARNING] Excellon.create_geometry() -> a drill location was skipped due of " "not having a tool associated.\n" @@ -1595,12 +1614,12 @@ msgstr "" "not having a tool associated.\n" "Check the resulting GCode." -#: camlib.py:5075 +#: camlib.py:5061 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "[ERROR] There is no such parameter: %s" -#: camlib.py:5145 +#: camlib.py:5131 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1614,22 +1633,22 @@ msgstr "" "therefore the app will convert the value to negative. Check the resulting " "CNC code (Gcode etc)." -#: camlib.py:5152 camlib.py:5648 camlib.py:5911 +#: camlib.py:5138 camlib.py:5634 camlib.py:5897 #, python-format msgid "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" msgstr "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" -#: camlib.py:5381 camlib.py:5478 camlib.py:5536 +#: camlib.py:5367 camlib.py:5464 camlib.py:5522 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "[ERROR_NOTCL] The loaded Excellon file has no drills ..." -#: camlib.py:5483 +#: camlib.py:5469 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "[ERROR_NOTCL] Wrong optimization type selected." -#: camlib.py:5636 camlib.py:5899 +#: camlib.py:5622 camlib.py:5885 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." @@ -1637,7 +1656,7 @@ msgstr "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." -#: camlib.py:5641 camlib.py:5904 +#: camlib.py:5627 camlib.py:5890 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1651,11 +1670,11 @@ msgstr "" "therefore the app will convert the value to negative.Check the resulting CNC " "code (Gcode etc)." -#: camlib.py:5653 camlib.py:5916 +#: camlib.py:5639 camlib.py:5902 msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." msgstr "[ERROR_NOTCL] Travel Z parameter is None or zero." -#: camlib.py:5657 camlib.py:5920 +#: camlib.py:5643 camlib.py:5906 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1669,19 +1688,19 @@ msgstr "" "therefore the app will convert the value to positive.Check the resulting CNC " "code (Gcode etc)." -#: camlib.py:5664 camlib.py:5927 +#: camlib.py:5650 camlib.py:5913 #, python-format msgid "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" msgstr "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" -#: camlib.py:5794 +#: camlib.py:5780 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "[ERROR]Expected a Geometry, got %s" -#: camlib.py:5800 +#: camlib.py:5786 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." @@ -1689,7 +1708,7 @@ msgstr "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." -#: camlib.py:5839 +#: camlib.py:5825 msgid "" "[ERROR_NOTCL] The Tool Offset value is too negative to use for the " "current_geometry.\n" @@ -1699,20 +1718,26 @@ msgstr "" "current_geometry.\n" "Raise the value (in module) and try again." -#: camlib.py:6053 +#: camlib.py:6039 msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." msgstr "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." +#: flatcamEditors/FlatCAMExcEditor.py:37 flatcamEditors/FlatCAMExcEditor.py:143 +#: flatcamEditors/FlatCAMGrbEditor.py:229 +#: flatcamEditors/FlatCAMGrbEditor.py:234 +msgid "Click to place ..." +msgstr "Click to place ..." + #: flatcamEditors/FlatCAMExcEditor.py:46 msgid "[WARNING_NOTCL] To add a drill first select a tool" msgstr "[WARNING_NOTCL] To add a drill first select a tool" #: flatcamEditors/FlatCAMExcEditor.py:62 flatcamEditors/FlatCAMExcEditor.py:165 -#: flatcamEditors/FlatCAMExcEditor.py:447 -#: flatcamEditors/FlatCAMExcEditor.py:472 +#: flatcamEditors/FlatCAMExcEditor.py:450 +#: flatcamEditors/FlatCAMExcEditor.py:475 #: flatcamEditors/FlatCAMGrbEditor.py:451 -#: flatcamEditors/FlatCAMGrbEditor.py:1762 -#: flatcamEditors/FlatCAMGrbEditor.py:1790 +#: flatcamEditors/FlatCAMGrbEditor.py:1776 +#: flatcamEditors/FlatCAMGrbEditor.py:1804 msgid "Click on target location ..." msgstr "Click on target location ..." @@ -1739,9 +1764,10 @@ msgstr "" "separator." #: flatcamEditors/FlatCAMExcEditor.py:207 -#: flatcamEditors/FlatCAMGrbEditor.py:497 -msgid "[ERROR_NOTCL] The value is mistyped. Check the value." -msgstr "[ERROR_NOTCL] The value is mistyped. Check the value." +#, python-format +#| msgid "[ERROR_NOTCL] The value is mistyped. Check the value." +msgid "[ERROR_NOTCL] The value is mistyped. Check the value. %s" +msgstr "[ERROR_NOTCL] The value is mistyped. Check the value. %s" #: flatcamEditors/FlatCAMExcEditor.py:305 msgid "[WARNING_NOTCL] Too many drills for the selected spacing angle." @@ -1755,48 +1781,48 @@ msgstr "[success] Done. Drill Array added." msgid "Click on the Drill(s) to resize ..." msgstr "Click on the Drill(s) to resize ..." -#: flatcamEditors/FlatCAMExcEditor.py:353 +#: flatcamEditors/FlatCAMExcEditor.py:354 msgid "" "[ERROR_NOTCL] Resize drill(s) failed. Please enter a diameter for resize." msgstr "" "[ERROR_NOTCL] Resize drill(s) failed. Please enter a diameter for resize." -#: flatcamEditors/FlatCAMExcEditor.py:423 +#: flatcamEditors/FlatCAMExcEditor.py:424 msgid "[success] Done. Drill Resize completed." msgstr "[success] Done. Drill Resize completed." -#: flatcamEditors/FlatCAMExcEditor.py:426 +#: flatcamEditors/FlatCAMExcEditor.py:427 msgid "[WARNING_NOTCL] Cancelled. No drills selected for resize ..." msgstr "[WARNING_NOTCL] Cancelled. No drills selected for resize ..." -#: flatcamEditors/FlatCAMExcEditor.py:449 -#: flatcamEditors/FlatCAMGrbEditor.py:1764 +#: flatcamEditors/FlatCAMExcEditor.py:452 +#: flatcamEditors/FlatCAMGrbEditor.py:1778 msgid "Click on reference location ..." msgstr "Click on reference location ..." -#: flatcamEditors/FlatCAMExcEditor.py:504 +#: flatcamEditors/FlatCAMExcEditor.py:507 msgid "[success] Done. Drill(s) Move completed." msgstr "[success] Done. Drill(s) Move completed." -#: flatcamEditors/FlatCAMExcEditor.py:557 +#: flatcamEditors/FlatCAMExcEditor.py:592 msgid "[success] Done. Drill(s) copied." msgstr "[success] Done. Drill(s) copied." -#: flatcamEditors/FlatCAMExcEditor.py:758 +#: flatcamEditors/FlatCAMExcEditor.py:792 flatcamGUI/FlatCAMGUI.py:5026 msgid "Excellon Editor" msgstr "Excellon Editor" -#: flatcamEditors/FlatCAMExcEditor.py:765 -#: flatcamEditors/FlatCAMGrbEditor.py:2250 +#: flatcamEditors/FlatCAMExcEditor.py:799 +#: flatcamEditors/FlatCAMGrbEditor.py:2266 msgid "Name:" msgstr "Name:" -#: flatcamEditors/FlatCAMExcEditor.py:771 flatcamTools/ToolNonCopperClear.py:72 +#: flatcamEditors/FlatCAMExcEditor.py:805 flatcamTools/ToolNonCopperClear.py:72 #: flatcamTools/ToolPaint.py:69 flatcamTools/ToolSolderPaste.py:70 msgid "Tools Table" msgstr "Tools Table" -#: flatcamEditors/FlatCAMExcEditor.py:773 flatcamGUI/ObjectUI.py:538 +#: flatcamEditors/FlatCAMExcEditor.py:807 flatcamGUI/ObjectUI.py:538 msgid "" "Tools in this Excellon object\n" "when are used for drilling." @@ -1804,11 +1830,11 @@ msgstr "" "Tools in this Excellon object\n" "when are used for drilling." -#: flatcamEditors/FlatCAMExcEditor.py:793 +#: flatcamEditors/FlatCAMExcEditor.py:827 msgid "Add/Delete Tool" msgstr "Add/Delete Tool" -#: flatcamEditors/FlatCAMExcEditor.py:795 +#: flatcamEditors/FlatCAMExcEditor.py:829 msgid "" "Add/Delete a tool to the tool list\n" "for this Excellon object." @@ -1816,19 +1842,20 @@ msgstr "" "Add/Delete a tool to the tool list\n" "for this Excellon object." -#: flatcamEditors/FlatCAMExcEditor.py:803 flatcamTools/ToolCutOut.py:77 +#: flatcamEditors/FlatCAMExcEditor.py:837 flatcamTools/ToolCutOut.py:77 msgid "Tool Dia:" msgstr "Tool Dia:" -#: flatcamEditors/FlatCAMExcEditor.py:805 flatcamGUI/ObjectUI.py:978 +#: flatcamEditors/FlatCAMExcEditor.py:839 flatcamGUI/FlatCAMGUI.py:5055 +#: flatcamGUI/ObjectUI.py:978 msgid "Diameter for the new tool" msgstr "Diameter for the new tool" -#: flatcamEditors/FlatCAMExcEditor.py:814 +#: flatcamEditors/FlatCAMExcEditor.py:847 msgid "Add Tool" msgstr "Add Tool" -#: flatcamEditors/FlatCAMExcEditor.py:816 +#: flatcamEditors/FlatCAMExcEditor.py:849 msgid "" "Add a new tool to the tool list\n" "with the diameter specified above." @@ -1836,11 +1863,11 @@ msgstr "" "Add a new tool to the tool list\n" "with the diameter specified above." -#: flatcamEditors/FlatCAMExcEditor.py:826 +#: flatcamEditors/FlatCAMExcEditor.py:861 msgid "Delete Tool" msgstr "Delete Tool" -#: flatcamEditors/FlatCAMExcEditor.py:828 +#: flatcamEditors/FlatCAMExcEditor.py:863 msgid "" "Delete a tool in the tool list\n" "by selecting a row in the tool table." @@ -1848,39 +1875,39 @@ msgstr "" "Delete a tool in the tool list\n" "by selecting a row in the tool table." -#: flatcamEditors/FlatCAMExcEditor.py:846 +#: flatcamEditors/FlatCAMExcEditor.py:881 msgid "Resize Drill(s)" msgstr "Resize Drill(s)" -#: flatcamEditors/FlatCAMExcEditor.py:848 +#: flatcamEditors/FlatCAMExcEditor.py:883 msgid "Resize a drill or a selection of drills." msgstr "Resize a drill or a selection of drills." -#: flatcamEditors/FlatCAMExcEditor.py:855 +#: flatcamEditors/FlatCAMExcEditor.py:890 msgid "Resize Dia:" msgstr "Resize Dia:" -#: flatcamEditors/FlatCAMExcEditor.py:857 +#: flatcamEditors/FlatCAMExcEditor.py:892 msgid "Diameter to resize to." msgstr "Diameter to resize to." -#: flatcamEditors/FlatCAMExcEditor.py:865 +#: flatcamEditors/FlatCAMExcEditor.py:900 msgid "Resize" msgstr "Resize" -#: flatcamEditors/FlatCAMExcEditor.py:867 +#: flatcamEditors/FlatCAMExcEditor.py:902 msgid "Resize drill(s)" msgstr "Resize drill(s)" -#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1615 +#: flatcamEditors/FlatCAMExcEditor.py:924 flatcamGUI/FlatCAMGUI.py:1612 msgid "Add Drill Array" msgstr "Add Drill Array" -#: flatcamEditors/FlatCAMExcEditor.py:891 +#: flatcamEditors/FlatCAMExcEditor.py:926 msgid "Add an array of drills (linear or circular array)" msgstr "Add an array of drills (linear or circular array)" -#: flatcamEditors/FlatCAMExcEditor.py:897 +#: flatcamEditors/FlatCAMExcEditor.py:932 msgid "" "Select the type of drills array to create.\n" "It can be Linear X(Y) or Circular" @@ -1888,33 +1915,33 @@ msgstr "" "Select the type of drills array to create.\n" "It can be Linear X(Y) or Circular" -#: flatcamEditors/FlatCAMExcEditor.py:900 -#: flatcamEditors/FlatCAMGrbEditor.py:2483 +#: flatcamEditors/FlatCAMExcEditor.py:935 +#: flatcamEditors/FlatCAMGrbEditor.py:2499 msgid "Linear" msgstr "Linear" -#: flatcamEditors/FlatCAMExcEditor.py:901 -#: flatcamEditors/FlatCAMGrbEditor.py:2484 +#: flatcamEditors/FlatCAMExcEditor.py:936 +#: flatcamEditors/FlatCAMGrbEditor.py:2500 msgid "Circular" msgstr "Circular" -#: flatcamEditors/FlatCAMExcEditor.py:908 +#: flatcamEditors/FlatCAMExcEditor.py:944 flatcamGUI/FlatCAMGUI.py:5065 msgid "Nr of drills:" msgstr "Nr of drills:" -#: flatcamEditors/FlatCAMExcEditor.py:910 +#: flatcamEditors/FlatCAMExcEditor.py:946 flatcamGUI/FlatCAMGUI.py:5067 msgid "Specify how many drills to be in the array." msgstr "Specify how many drills to be in the array." -#: flatcamEditors/FlatCAMExcEditor.py:927 -#: flatcamEditors/FlatCAMExcEditor.py:972 -#: flatcamEditors/FlatCAMGrbEditor.py:2510 -#: flatcamEditors/FlatCAMGrbEditor.py:2555 +#: flatcamEditors/FlatCAMExcEditor.py:964 +#: flatcamEditors/FlatCAMExcEditor.py:1010 +#: flatcamEditors/FlatCAMGrbEditor.py:2526 +#: flatcamEditors/FlatCAMGrbEditor.py:2571 msgid "Direction:" msgstr "Direction:" -#: flatcamEditors/FlatCAMExcEditor.py:929 -#: flatcamEditors/FlatCAMGrbEditor.py:2512 +#: flatcamEditors/FlatCAMExcEditor.py:966 +#: flatcamEditors/FlatCAMGrbEditor.py:2528 flatcamGUI/FlatCAMGUI.py:5082 msgid "" "Direction on which the linear array is oriented:\n" "- 'X' - horizontal axis \n" @@ -1926,27 +1953,28 @@ msgstr "" "- 'Y' - vertical axis or \n" "- 'Angle' - a custom angle for the array inclination" -#: flatcamEditors/FlatCAMExcEditor.py:942 -#: flatcamEditors/FlatCAMGrbEditor.py:2525 +#: flatcamEditors/FlatCAMExcEditor.py:979 +#: flatcamEditors/FlatCAMGrbEditor.py:2541 flatcamGUI/FlatCAMGUI.py:5096 msgid "Pitch:" msgstr "Pitch:" -#: flatcamEditors/FlatCAMExcEditor.py:944 -#: flatcamEditors/FlatCAMGrbEditor.py:2527 +#: flatcamEditors/FlatCAMExcEditor.py:981 +#: flatcamEditors/FlatCAMGrbEditor.py:2543 flatcamGUI/FlatCAMGUI.py:5098 msgid "Pitch = Distance between elements of the array." msgstr "Pitch = Distance between elements of the array." -#: flatcamEditors/FlatCAMExcEditor.py:951 -#: flatcamEditors/FlatCAMExcEditor.py:987 +#: flatcamEditors/FlatCAMExcEditor.py:989 +#: flatcamEditors/FlatCAMExcEditor.py:1024 #: flatcamEditors/FlatCAMGeoEditor.py:665 -#: flatcamEditors/FlatCAMGrbEditor.py:2534 -#: flatcamEditors/FlatCAMGrbEditor.py:2570 -#: flatcamEditors/FlatCAMGrbEditor.py:4558 flatcamTools/ToolTransform.py:68 +#: flatcamEditors/FlatCAMGrbEditor.py:2550 +#: flatcamEditors/FlatCAMGrbEditor.py:2586 +#: flatcamEditors/FlatCAMGrbEditor.py:4580 flatcamGUI/FlatCAMGUI.py:5107 +#: flatcamTools/ToolTransform.py:68 msgid "Angle:" msgstr "Angle:" -#: flatcamEditors/FlatCAMExcEditor.py:953 -#: flatcamEditors/FlatCAMGrbEditor.py:2536 +#: flatcamEditors/FlatCAMExcEditor.py:991 +#: flatcamEditors/FlatCAMGrbEditor.py:2552 msgid "" "Angle at which the linear array is placed.\n" "The precision is of max 2 decimals.\n" @@ -1958,8 +1986,8 @@ msgstr "" "Min value is: -359.99 degrees.\n" "Max value is: 360.00 degrees." -#: flatcamEditors/FlatCAMExcEditor.py:974 -#: flatcamEditors/FlatCAMGrbEditor.py:2557 +#: flatcamEditors/FlatCAMExcEditor.py:1012 +#: flatcamEditors/FlatCAMGrbEditor.py:2573 msgid "" "Direction for circular array.Can be CW = clockwise or CCW = counter " "clockwise." @@ -1967,12 +1995,13 @@ msgstr "" "Direction for circular array.Can be CW = clockwise or CCW = counter " "clockwise." -#: flatcamEditors/FlatCAMExcEditor.py:989 -#: flatcamEditors/FlatCAMGrbEditor.py:2572 +#: flatcamEditors/FlatCAMExcEditor.py:1026 +#: flatcamEditors/FlatCAMGrbEditor.py:2588 flatcamGUI/FlatCAMGUI.py:5109 +#: flatcamGUI/FlatCAMGUI.py:5135 msgid "Angle at which each element in circular array is placed." msgstr "Angle at which each element in circular array is placed." -#: flatcamEditors/FlatCAMExcEditor.py:1452 +#: flatcamEditors/FlatCAMExcEditor.py:1487 msgid "" "[WARNING_NOTCL] Tool already in the original or actual tool list.\n" "Save and reedit Excellon if you need to add this tool. " @@ -1980,21 +2009,21 @@ msgstr "" "[WARNING_NOTCL] Tool already in the original or actual tool list.\n" "Save and reedit Excellon if you need to add this tool. " -#: flatcamEditors/FlatCAMExcEditor.py:1461 flatcamGUI/FlatCAMGUI.py:3002 +#: flatcamEditors/FlatCAMExcEditor.py:1496 flatcamGUI/FlatCAMGUI.py:2997 #, python-brace-format msgid "[success] Added new tool with dia: {dia} {units}" msgstr "[success] Added new tool with dia: {dia} {units}" -#: flatcamEditors/FlatCAMExcEditor.py:1493 +#: flatcamEditors/FlatCAMExcEditor.py:1528 msgid "[WARNING_NOTCL] Select a tool in Tool Table" msgstr "[WARNING_NOTCL] Select a tool in Tool Table" -#: flatcamEditors/FlatCAMExcEditor.py:1526 +#: flatcamEditors/FlatCAMExcEditor.py:1560 #, python-brace-format msgid "[success] Deleted tool with dia: {del_dia} {units}" msgstr "[success] Deleted tool with dia: {del_dia} {units}" -#: flatcamEditors/FlatCAMExcEditor.py:2038 +#: flatcamEditors/FlatCAMExcEditor.py:2074 msgid "" "[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon " "creation." @@ -2002,34 +2031,34 @@ msgstr "" "[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon " "creation." -#: flatcamEditors/FlatCAMExcEditor.py:2047 +#: flatcamEditors/FlatCAMExcEditor.py:2083 msgid "Creating Excellon." msgstr "Creating Excellon." -#: flatcamEditors/FlatCAMExcEditor.py:2056 +#: flatcamEditors/FlatCAMExcEditor.py:2092 msgid "[success] Excellon editing finished." msgstr "[success] Excellon editing finished." -#: flatcamEditors/FlatCAMExcEditor.py:2073 +#: flatcamEditors/FlatCAMExcEditor.py:2109 msgid "[WARNING_NOTCL] Cancelled. There is no Tool/Drill selected" msgstr "[WARNING_NOTCL] Cancelled. There is no Tool/Drill selected" -#: flatcamEditors/FlatCAMExcEditor.py:2605 +#: flatcamEditors/FlatCAMExcEditor.py:2637 msgid "[success] Done. Drill(s) deleted." msgstr "[success] Done. Drill(s) deleted." -#: flatcamEditors/FlatCAMExcEditor.py:2675 -#: flatcamEditors/FlatCAMGrbEditor.py:4318 +#: flatcamEditors/FlatCAMExcEditor.py:2705 +#: flatcamEditors/FlatCAMGrbEditor.py:4340 msgid "Click on the circular array Center position" msgstr "Click on the circular array Center position" #: flatcamEditors/FlatCAMGeoEditor.py:80 -#: flatcamEditors/FlatCAMGrbEditor.py:2400 +#: flatcamEditors/FlatCAMGrbEditor.py:2416 msgid "Buffer distance:" msgstr "Buffer distance:" #: flatcamEditors/FlatCAMGeoEditor.py:81 -#: flatcamEditors/FlatCAMGrbEditor.py:2401 +#: flatcamEditors/FlatCAMGrbEditor.py:2417 msgid "Buffer corner:" msgstr "Buffer corner:" @@ -2048,17 +2077,17 @@ msgstr "" "meeting in the corner" #: flatcamEditors/FlatCAMGeoEditor.py:89 -#: flatcamEditors/FlatCAMGrbEditor.py:2409 +#: flatcamEditors/FlatCAMGrbEditor.py:2425 msgid "Round" msgstr "Round" #: flatcamEditors/FlatCAMGeoEditor.py:90 -#: flatcamEditors/FlatCAMGrbEditor.py:2410 +#: flatcamEditors/FlatCAMGrbEditor.py:2426 msgid "Square" msgstr "Square" #: flatcamEditors/FlatCAMGeoEditor.py:91 -#: flatcamEditors/FlatCAMGrbEditor.py:2411 +#: flatcamEditors/FlatCAMGrbEditor.py:2427 msgid "Beveled" msgstr "Beveled" @@ -2085,7 +2114,7 @@ msgstr "Buffer Tool" #: flatcamEditors/FlatCAMGeoEditor.py:2700 #: flatcamEditors/FlatCAMGeoEditor.py:2726 #: flatcamEditors/FlatCAMGeoEditor.py:2752 -#: flatcamEditors/FlatCAMGrbEditor.py:4370 +#: flatcamEditors/FlatCAMGrbEditor.py:4392 msgid "" "[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and " "retry." @@ -2097,17 +2126,17 @@ msgstr "" msgid "Text Tool" msgstr "Text Tool" -#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:808 +#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:803 msgid "Tool" msgstr "Tool" -#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4058 -#: flatcamGUI/FlatCAMGUI.py:5455 flatcamGUI/FlatCAMGUI.py:5731 -#: flatcamGUI/FlatCAMGUI.py:5871 flatcamGUI/ObjectUI.py:260 +#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4054 +#: flatcamGUI/FlatCAMGUI.py:5618 flatcamGUI/FlatCAMGUI.py:5895 +#: flatcamGUI/FlatCAMGUI.py:6035 flatcamGUI/ObjectUI.py:260 msgid "Tool dia:" msgstr "Tool dia:" -#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5873 +#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:6037 msgid "" "Diameter of the tool to\n" "be used in the operation." @@ -2115,8 +2144,8 @@ msgstr "" "Diameter of the tool to\n" "be used in the operation." -#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5637 -#: flatcamGUI/FlatCAMGUI.py:5882 flatcamTools/ToolNonCopperClear.py:165 +#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5801 +#: flatcamGUI/FlatCAMGUI.py:6046 flatcamTools/ToolNonCopperClear.py:165 #: flatcamTools/ToolPaint.py:160 msgid "Overlap Rate:" msgstr "Overlap Rate:" @@ -2146,14 +2175,14 @@ msgstr "" "Higher values = slow processing and slow execution on CNC\n" "due of too many paths." -#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5653 -#: flatcamGUI/FlatCAMGUI.py:5739 flatcamGUI/FlatCAMGUI.py:5892 +#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5817 +#: flatcamGUI/FlatCAMGUI.py:5903 flatcamGUI/FlatCAMGUI.py:6056 #: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:181 #: flatcamTools/ToolPaint.py:177 msgid "Margin:" msgstr "Margin:" -#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5894 +#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:6058 #: flatcamTools/ToolPaint.py:179 msgid "" "Distance by which to avoid\n" @@ -2164,13 +2193,13 @@ msgstr "" "the edges of the polygon to\n" "be painted." -#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5662 -#: flatcamGUI/FlatCAMGUI.py:5903 flatcamTools/ToolNonCopperClear.py:190 +#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5826 +#: flatcamGUI/FlatCAMGUI.py:6067 flatcamTools/ToolNonCopperClear.py:190 #: flatcamTools/ToolPaint.py:188 msgid "Method:" msgstr "Method:" -#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5905 +#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:6069 msgid "" "Algorithm to paint the polygon:
Standard: Fixed step inwards." "
Seed-based: Outwards from seed." @@ -2178,14 +2207,14 @@ msgstr "" "Algorithm to paint the polygon:
Standard: Fixed step inwards." "
Seed-based: Outwards from seed." -#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5678 -#: flatcamGUI/FlatCAMGUI.py:5918 flatcamTools/ToolNonCopperClear.py:206 +#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5842 +#: flatcamGUI/FlatCAMGUI.py:6082 flatcamTools/ToolNonCopperClear.py:206 #: flatcamTools/ToolPaint.py:204 msgid "Connect:" msgstr "Connect:" -#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5680 -#: flatcamGUI/FlatCAMGUI.py:5920 flatcamTools/ToolNonCopperClear.py:208 +#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5844 +#: flatcamGUI/FlatCAMGUI.py:6084 flatcamTools/ToolNonCopperClear.py:208 #: flatcamTools/ToolPaint.py:206 msgid "" "Draw lines between resulting\n" @@ -2194,14 +2223,14 @@ msgstr "" "Draw lines between resulting\n" "segments to minimize tool lifts." -#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5687 -#: flatcamGUI/FlatCAMGUI.py:5928 flatcamTools/ToolNonCopperClear.py:215 +#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5851 +#: flatcamGUI/FlatCAMGUI.py:6092 flatcamTools/ToolNonCopperClear.py:215 #: flatcamTools/ToolPaint.py:213 msgid "Contour:" msgstr "Contour:" -#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5689 -#: flatcamGUI/FlatCAMGUI.py:5930 flatcamTools/ToolNonCopperClear.py:217 +#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5853 +#: flatcamGUI/FlatCAMGUI.py:6094 flatcamTools/ToolNonCopperClear.py:217 #: flatcamTools/ToolPaint.py:215 msgid "" "Cut around the perimeter of the polygon\n" @@ -2214,8 +2243,8 @@ msgstr "" msgid "Paint" msgstr "Paint" -#: flatcamEditors/FlatCAMGeoEditor.py:527 flatcamGUI/FlatCAMGUI.py:648 -#: flatcamGUI/FlatCAMGUI.py:1868 flatcamGUI/ObjectUI.py:1314 +#: flatcamEditors/FlatCAMGeoEditor.py:527 flatcamGUI/FlatCAMGUI.py:643 +#: flatcamGUI/FlatCAMGUI.py:1866 flatcamGUI/ObjectUI.py:1314 #: flatcamTools/ToolPaint.py:341 msgid "Paint Tool" msgstr "Paint Tool" @@ -2258,53 +2287,53 @@ msgstr "Tools" #: flatcamEditors/FlatCAMGeoEditor.py:617 #: flatcamEditors/FlatCAMGeoEditor.py:990 -#: flatcamEditors/FlatCAMGrbEditor.py:4509 -#: flatcamEditors/FlatCAMGrbEditor.py:4894 flatcamGUI/FlatCAMGUI.py:659 -#: flatcamGUI/FlatCAMGUI.py:1881 flatcamTools/ToolTransform.py:398 +#: flatcamEditors/FlatCAMGrbEditor.py:4531 +#: flatcamEditors/FlatCAMGrbEditor.py:4916 flatcamGUI/FlatCAMGUI.py:654 +#: flatcamGUI/FlatCAMGUI.py:1879 flatcamTools/ToolTransform.py:398 msgid "Transform Tool" msgstr "Transform Tool" #: flatcamEditors/FlatCAMGeoEditor.py:618 #: flatcamEditors/FlatCAMGeoEditor.py:679 -#: flatcamEditors/FlatCAMGrbEditor.py:4510 -#: flatcamEditors/FlatCAMGrbEditor.py:4572 flatcamTools/ToolTransform.py:24 +#: flatcamEditors/FlatCAMGrbEditor.py:4532 +#: flatcamEditors/FlatCAMGrbEditor.py:4594 flatcamTools/ToolTransform.py:24 #: flatcamTools/ToolTransform.py:82 msgid "Rotate" msgstr "Rotate" #: flatcamEditors/FlatCAMGeoEditor.py:619 -#: flatcamEditors/FlatCAMGrbEditor.py:4511 flatcamTools/ToolTransform.py:25 +#: flatcamEditors/FlatCAMGrbEditor.py:4533 flatcamTools/ToolTransform.py:25 msgid "Skew/Shear" msgstr "Skew/Shear" #: flatcamEditors/FlatCAMGeoEditor.py:620 -#: flatcamEditors/FlatCAMGrbEditor.py:2455 -#: flatcamEditors/FlatCAMGrbEditor.py:4512 flatcamGUI/FlatCAMGUI.py:723 -#: flatcamGUI/FlatCAMGUI.py:1949 flatcamGUI/ObjectUI.py:100 +#: flatcamEditors/FlatCAMGrbEditor.py:2471 +#: flatcamEditors/FlatCAMGrbEditor.py:4534 flatcamGUI/FlatCAMGUI.py:718 +#: flatcamGUI/FlatCAMGUI.py:1947 flatcamGUI/ObjectUI.py:100 #: flatcamTools/ToolTransform.py:26 msgid "Scale" msgstr "Scale" #: flatcamEditors/FlatCAMGeoEditor.py:621 -#: flatcamEditors/FlatCAMGrbEditor.py:4513 flatcamTools/ToolTransform.py:27 +#: flatcamEditors/FlatCAMGrbEditor.py:4535 flatcamTools/ToolTransform.py:27 msgid "Mirror (Flip)" msgstr "Mirror (Flip)" #: flatcamEditors/FlatCAMGeoEditor.py:622 -#: flatcamEditors/FlatCAMGrbEditor.py:4514 flatcamGUI/ObjectUI.py:127 -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamEditors/FlatCAMGrbEditor.py:4536 flatcamGUI/ObjectUI.py:127 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465 #: flatcamTools/ToolTransform.py:28 msgid "Offset" msgstr "Offset" #: flatcamEditors/FlatCAMGeoEditor.py:633 -#: flatcamEditors/FlatCAMGrbEditor.py:4526 +#: flatcamEditors/FlatCAMGrbEditor.py:4548 #, python-format msgid "Editor %s" msgstr "Editor %s" #: flatcamEditors/FlatCAMGeoEditor.py:667 -#: flatcamEditors/FlatCAMGrbEditor.py:4560 flatcamTools/ToolTransform.py:70 +#: flatcamEditors/FlatCAMGrbEditor.py:4582 flatcamTools/ToolTransform.py:70 msgid "" "Angle for Rotation action, in degrees.\n" "Float number between -360 and 359.\n" @@ -2317,7 +2346,7 @@ msgstr "" "Negative numbers for CCW motion." #: flatcamEditors/FlatCAMGeoEditor.py:681 -#: flatcamEditors/FlatCAMGrbEditor.py:4574 +#: flatcamEditors/FlatCAMGrbEditor.py:4596 msgid "" "Rotate the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2328,14 +2357,14 @@ msgstr "" "the bounding box for all selected shapes." #: flatcamEditors/FlatCAMGeoEditor.py:704 -#: flatcamEditors/FlatCAMGrbEditor.py:4597 flatcamTools/ToolTransform.py:107 +#: flatcamEditors/FlatCAMGrbEditor.py:4619 flatcamTools/ToolTransform.py:107 msgid "Angle X:" msgstr "Angle X:" #: flatcamEditors/FlatCAMGeoEditor.py:706 #: flatcamEditors/FlatCAMGeoEditor.py:724 -#: flatcamEditors/FlatCAMGrbEditor.py:4599 -#: flatcamEditors/FlatCAMGrbEditor.py:4617 flatcamTools/ToolTransform.py:109 +#: flatcamEditors/FlatCAMGrbEditor.py:4621 +#: flatcamEditors/FlatCAMGrbEditor.py:4639 flatcamTools/ToolTransform.py:109 #: flatcamTools/ToolTransform.py:127 msgid "" "Angle for Skew action, in degrees.\n" @@ -2345,14 +2374,14 @@ msgstr "" "Float number between -360 and 359." #: flatcamEditors/FlatCAMGeoEditor.py:715 -#: flatcamEditors/FlatCAMGrbEditor.py:4608 flatcamTools/ToolTransform.py:118 +#: flatcamEditors/FlatCAMGrbEditor.py:4630 flatcamTools/ToolTransform.py:118 msgid "Skew X" msgstr "Skew X" #: flatcamEditors/FlatCAMGeoEditor.py:717 #: flatcamEditors/FlatCAMGeoEditor.py:735 -#: flatcamEditors/FlatCAMGrbEditor.py:4610 -#: flatcamEditors/FlatCAMGrbEditor.py:4628 +#: flatcamEditors/FlatCAMGrbEditor.py:4632 +#: flatcamEditors/FlatCAMGrbEditor.py:4650 msgid "" "Skew/shear the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2363,34 +2392,34 @@ msgstr "" "the bounding box for all selected shapes." #: flatcamEditors/FlatCAMGeoEditor.py:722 -#: flatcamEditors/FlatCAMGrbEditor.py:4615 flatcamTools/ToolTransform.py:125 +#: flatcamEditors/FlatCAMGrbEditor.py:4637 flatcamTools/ToolTransform.py:125 msgid "Angle Y:" msgstr "Angle Y:" #: flatcamEditors/FlatCAMGeoEditor.py:733 -#: flatcamEditors/FlatCAMGrbEditor.py:4626 flatcamTools/ToolTransform.py:136 +#: flatcamEditors/FlatCAMGrbEditor.py:4648 flatcamTools/ToolTransform.py:136 msgid "Skew Y" msgstr "Skew Y" #: flatcamEditors/FlatCAMGeoEditor.py:761 -#: flatcamEditors/FlatCAMGrbEditor.py:4654 flatcamTools/ToolTransform.py:164 +#: flatcamEditors/FlatCAMGrbEditor.py:4676 flatcamTools/ToolTransform.py:164 msgid "Factor X:" msgstr "Factor X:" #: flatcamEditors/FlatCAMGeoEditor.py:763 -#: flatcamEditors/FlatCAMGrbEditor.py:4656 flatcamTools/ToolTransform.py:166 +#: flatcamEditors/FlatCAMGrbEditor.py:4678 flatcamTools/ToolTransform.py:166 msgid "Factor for Scale action over X axis." msgstr "Factor for Scale action over X axis." #: flatcamEditors/FlatCAMGeoEditor.py:771 -#: flatcamEditors/FlatCAMGrbEditor.py:4664 flatcamTools/ToolTransform.py:174 +#: flatcamEditors/FlatCAMGrbEditor.py:4686 flatcamTools/ToolTransform.py:174 msgid "Scale X" msgstr "Scale X" #: flatcamEditors/FlatCAMGeoEditor.py:773 #: flatcamEditors/FlatCAMGeoEditor.py:790 -#: flatcamEditors/FlatCAMGrbEditor.py:4666 -#: flatcamEditors/FlatCAMGrbEditor.py:4683 +#: flatcamEditors/FlatCAMGrbEditor.py:4688 +#: flatcamEditors/FlatCAMGrbEditor.py:4705 msgid "" "Scale the selected shape(s).\n" "The point of reference depends on \n" @@ -2401,28 +2430,28 @@ msgstr "" "the Scale reference checkbox state." #: flatcamEditors/FlatCAMGeoEditor.py:778 -#: flatcamEditors/FlatCAMGrbEditor.py:4671 flatcamTools/ToolTransform.py:181 +#: flatcamEditors/FlatCAMGrbEditor.py:4693 flatcamTools/ToolTransform.py:181 msgid "Factor Y:" msgstr "Factor Y:" #: flatcamEditors/FlatCAMGeoEditor.py:780 -#: flatcamEditors/FlatCAMGrbEditor.py:4673 flatcamTools/ToolTransform.py:183 +#: flatcamEditors/FlatCAMGrbEditor.py:4695 flatcamTools/ToolTransform.py:183 msgid "Factor for Scale action over Y axis." msgstr "Factor for Scale action over Y axis." #: flatcamEditors/FlatCAMGeoEditor.py:788 -#: flatcamEditors/FlatCAMGrbEditor.py:4681 flatcamTools/ToolTransform.py:191 +#: flatcamEditors/FlatCAMGrbEditor.py:4703 flatcamTools/ToolTransform.py:191 msgid "Scale Y" msgstr "Scale Y" #: flatcamEditors/FlatCAMGeoEditor.py:797 -#: flatcamEditors/FlatCAMGrbEditor.py:4690 flatcamGUI/FlatCAMGUI.py:6277 +#: flatcamEditors/FlatCAMGrbEditor.py:4712 flatcamGUI/FlatCAMGUI.py:6441 #: flatcamTools/ToolTransform.py:200 msgid "Link" msgstr "Link" #: flatcamEditors/FlatCAMGeoEditor.py:799 -#: flatcamEditors/FlatCAMGrbEditor.py:4692 +#: flatcamEditors/FlatCAMGrbEditor.py:4714 msgid "" "Scale the selected shape(s)\n" "using the Scale Factor X for both axis." @@ -2431,13 +2460,13 @@ msgstr "" "using the Scale Factor X for both axis." #: flatcamEditors/FlatCAMGeoEditor.py:805 -#: flatcamEditors/FlatCAMGrbEditor.py:4698 flatcamGUI/FlatCAMGUI.py:6285 +#: flatcamEditors/FlatCAMGrbEditor.py:4720 flatcamGUI/FlatCAMGUI.py:6449 #: flatcamTools/ToolTransform.py:208 msgid "Scale Reference" msgstr "Scale Reference" #: flatcamEditors/FlatCAMGeoEditor.py:807 -#: flatcamEditors/FlatCAMGrbEditor.py:4700 +#: flatcamEditors/FlatCAMGrbEditor.py:4722 msgid "" "Scale the selected shape(s)\n" "using the origin reference when checked,\n" @@ -2450,24 +2479,24 @@ msgstr "" "of the selected shapes when unchecked." #: flatcamEditors/FlatCAMGeoEditor.py:835 -#: flatcamEditors/FlatCAMGrbEditor.py:4729 flatcamTools/ToolTransform.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:4751 flatcamTools/ToolTransform.py:238 msgid "Value X:" msgstr "Value X:" #: flatcamEditors/FlatCAMGeoEditor.py:837 -#: flatcamEditors/FlatCAMGrbEditor.py:4731 flatcamTools/ToolTransform.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:4753 flatcamTools/ToolTransform.py:240 msgid "Value for Offset action on X axis." msgstr "Value for Offset action on X axis." #: flatcamEditors/FlatCAMGeoEditor.py:845 -#: flatcamEditors/FlatCAMGrbEditor.py:4739 flatcamTools/ToolTransform.py:248 +#: flatcamEditors/FlatCAMGrbEditor.py:4761 flatcamTools/ToolTransform.py:248 msgid "Offset X" msgstr "Offset X" #: flatcamEditors/FlatCAMGeoEditor.py:847 #: flatcamEditors/FlatCAMGeoEditor.py:865 -#: flatcamEditors/FlatCAMGrbEditor.py:4741 -#: flatcamEditors/FlatCAMGrbEditor.py:4759 +#: flatcamEditors/FlatCAMGrbEditor.py:4763 +#: flatcamEditors/FlatCAMGrbEditor.py:4781 msgid "" "Offset the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2478,29 +2507,29 @@ msgstr "" "the bounding box for all selected shapes.\n" #: flatcamEditors/FlatCAMGeoEditor.py:853 -#: flatcamEditors/FlatCAMGrbEditor.py:4747 flatcamTools/ToolTransform.py:255 +#: flatcamEditors/FlatCAMGrbEditor.py:4769 flatcamTools/ToolTransform.py:255 msgid "Value Y:" msgstr "Value Y:" #: flatcamEditors/FlatCAMGeoEditor.py:855 -#: flatcamEditors/FlatCAMGrbEditor.py:4749 flatcamTools/ToolTransform.py:257 +#: flatcamEditors/FlatCAMGrbEditor.py:4771 flatcamTools/ToolTransform.py:257 msgid "Value for Offset action on Y axis." msgstr "Value for Offset action on Y axis." #: flatcamEditors/FlatCAMGeoEditor.py:863 -#: flatcamEditors/FlatCAMGrbEditor.py:4757 flatcamTools/ToolTransform.py:265 +#: flatcamEditors/FlatCAMGrbEditor.py:4779 flatcamTools/ToolTransform.py:265 msgid "Offset Y" msgstr "Offset Y" #: flatcamEditors/FlatCAMGeoEditor.py:894 -#: flatcamEditors/FlatCAMGrbEditor.py:4788 flatcamTools/ToolTransform.py:295 +#: flatcamEditors/FlatCAMGrbEditor.py:4810 flatcamTools/ToolTransform.py:295 msgid "Flip on X" msgstr "Flip on X" #: flatcamEditors/FlatCAMGeoEditor.py:896 #: flatcamEditors/FlatCAMGeoEditor.py:904 -#: flatcamEditors/FlatCAMGrbEditor.py:4790 -#: flatcamEditors/FlatCAMGrbEditor.py:4798 +#: flatcamEditors/FlatCAMGrbEditor.py:4812 +#: flatcamEditors/FlatCAMGrbEditor.py:4820 msgid "" "Flip the selected shape(s) over the X axis.\n" "Does not create a new shape." @@ -2509,17 +2538,17 @@ msgstr "" "Does not create a new shape." #: flatcamEditors/FlatCAMGeoEditor.py:902 -#: flatcamEditors/FlatCAMGrbEditor.py:4796 flatcamTools/ToolTransform.py:303 +#: flatcamEditors/FlatCAMGrbEditor.py:4818 flatcamTools/ToolTransform.py:303 msgid "Flip on Y" msgstr "Flip on Y" #: flatcamEditors/FlatCAMGeoEditor.py:911 -#: flatcamEditors/FlatCAMGrbEditor.py:4805 flatcamTools/ToolTransform.py:312 +#: flatcamEditors/FlatCAMGrbEditor.py:4827 flatcamTools/ToolTransform.py:312 msgid "Ref Pt" msgstr "Ref Pt" #: flatcamEditors/FlatCAMGeoEditor.py:913 -#: flatcamEditors/FlatCAMGrbEditor.py:4807 +#: flatcamEditors/FlatCAMGrbEditor.py:4829 msgid "" "Flip the selected shape(s)\n" "around the point in Point Entry Field.\n" @@ -2542,12 +2571,12 @@ msgstr "" "Point Entry field and click Flip on X(Y)" #: flatcamEditors/FlatCAMGeoEditor.py:925 -#: flatcamEditors/FlatCAMGrbEditor.py:4819 flatcamTools/ToolTransform.py:325 +#: flatcamEditors/FlatCAMGrbEditor.py:4841 flatcamTools/ToolTransform.py:325 msgid "Point:" msgstr "Point:" #: flatcamEditors/FlatCAMGeoEditor.py:927 -#: flatcamEditors/FlatCAMGrbEditor.py:4821 +#: flatcamEditors/FlatCAMGrbEditor.py:4843 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" @@ -2558,7 +2587,7 @@ msgstr "" "the 'y' in (x, y) will be used when using Flip on Y." #: flatcamEditors/FlatCAMGeoEditor.py:939 -#: flatcamEditors/FlatCAMGrbEditor.py:4833 flatcamTools/ToolTransform.py:339 +#: flatcamEditors/FlatCAMGrbEditor.py:4855 flatcamTools/ToolTransform.py:339 msgid "" "The point coordinates can be captured by\n" "left click on canvas together with pressing\n" @@ -2569,248 +2598,248 @@ msgstr "" "SHIFT key. Then click Add button to insert." #: flatcamEditors/FlatCAMGeoEditor.py:1054 -#: flatcamEditors/FlatCAMGrbEditor.py:4958 +#: flatcamEditors/FlatCAMGrbEditor.py:4980 msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected." msgstr "[WARNING_NOTCL] Transformation cancelled. No shape selected." #: flatcamEditors/FlatCAMGeoEditor.py:1075 -#: flatcamEditors/FlatCAMGrbEditor.py:4978 flatcamTools/ToolTransform.py:468 +#: flatcamEditors/FlatCAMGrbEditor.py:5000 flatcamTools/ToolTransform.py:468 msgid "[ERROR_NOTCL] Wrong value format entered for Rotate, use a number." msgstr "[ERROR_NOTCL] Wrong value format entered for Rotate, use a number." #: flatcamEditors/FlatCAMGeoEditor.py:1112 -#: flatcamEditors/FlatCAMGrbEditor.py:5021 flatcamTools/ToolTransform.py:502 +#: flatcamEditors/FlatCAMGrbEditor.py:5043 flatcamTools/ToolTransform.py:502 msgid "[ERROR_NOTCL] Wrong value format entered for Skew X, use a number." msgstr "[ERROR_NOTCL] Wrong value format entered for Skew X, use a number." #: flatcamEditors/FlatCAMGeoEditor.py:1133 -#: flatcamEditors/FlatCAMGrbEditor.py:5048 flatcamTools/ToolTransform.py:520 +#: flatcamEditors/FlatCAMGrbEditor.py:5070 flatcamTools/ToolTransform.py:520 msgid "[ERROR_NOTCL] Wrong value format entered for Skew Y, use a number." msgstr "[ERROR_NOTCL] Wrong value format entered for Skew Y, use a number." #: flatcamEditors/FlatCAMGeoEditor.py:1154 -#: flatcamEditors/FlatCAMGrbEditor.py:5075 flatcamTools/ToolTransform.py:538 +#: flatcamEditors/FlatCAMGrbEditor.py:5097 flatcamTools/ToolTransform.py:538 msgid "[ERROR_NOTCL] Wrong value format entered for Scale X, use a number." msgstr "[ERROR_NOTCL] Wrong value format entered for Scale X, use a number." #: flatcamEditors/FlatCAMGeoEditor.py:1191 -#: flatcamEditors/FlatCAMGrbEditor.py:5116 flatcamTools/ToolTransform.py:572 +#: flatcamEditors/FlatCAMGrbEditor.py:5138 flatcamTools/ToolTransform.py:572 msgid "[ERROR_NOTCL] Wrong value format entered for Scale Y, use a number." msgstr "[ERROR_NOTCL] Wrong value format entered for Scale Y, use a number." #: flatcamEditors/FlatCAMGeoEditor.py:1223 -#: flatcamEditors/FlatCAMGrbEditor.py:5154 flatcamTools/ToolTransform.py:601 +#: flatcamEditors/FlatCAMGrbEditor.py:5176 flatcamTools/ToolTransform.py:601 msgid "[ERROR_NOTCL] Wrong value format entered for Offset X, use a number." msgstr "[ERROR_NOTCL] Wrong value format entered for Offset X, use a number." #: flatcamEditors/FlatCAMGeoEditor.py:1244 -#: flatcamEditors/FlatCAMGrbEditor.py:5180 flatcamTools/ToolTransform.py:619 +#: flatcamEditors/FlatCAMGrbEditor.py:5202 flatcamTools/ToolTransform.py:619 msgid "[ERROR_NOTCL] Wrong value format entered for Offset Y, use a number." msgstr "[ERROR_NOTCL] Wrong value format entered for Offset Y, use a number." #: flatcamEditors/FlatCAMGeoEditor.py:1262 -#: flatcamEditors/FlatCAMGrbEditor.py:5203 +#: flatcamEditors/FlatCAMGrbEditor.py:5225 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!" msgstr "[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!" #: flatcamEditors/FlatCAMGeoEditor.py:1265 -#: flatcamEditors/FlatCAMGrbEditor.py:5206 flatcamTools/ToolTransform.py:640 +#: flatcamEditors/FlatCAMGrbEditor.py:5228 flatcamTools/ToolTransform.py:640 msgid "Appying Rotate" msgstr "Appying Rotate" #: flatcamEditors/FlatCAMGeoEditor.py:1293 -#: flatcamEditors/FlatCAMGrbEditor.py:5237 +#: flatcamEditors/FlatCAMGrbEditor.py:5259 msgid "[success] Done. Rotate completed." msgstr "[success] Done. Rotate completed." #: flatcamEditors/FlatCAMGeoEditor.py:1309 -#: flatcamEditors/FlatCAMGrbEditor.py:5256 +#: flatcamEditors/FlatCAMGrbEditor.py:5278 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to flip!" msgstr "[WARNING_NOTCL] No shape selected. Please Select a shape to flip!" #: flatcamEditors/FlatCAMGeoEditor.py:1312 -#: flatcamEditors/FlatCAMGrbEditor.py:5259 flatcamTools/ToolTransform.py:691 +#: flatcamEditors/FlatCAMGrbEditor.py:5281 flatcamTools/ToolTransform.py:691 msgid "Applying Flip" msgstr "Applying Flip" #: flatcamEditors/FlatCAMGeoEditor.py:1342 -#: flatcamEditors/FlatCAMGrbEditor.py:5296 flatcamTools/ToolTransform.py:733 +#: flatcamEditors/FlatCAMGrbEditor.py:5318 flatcamTools/ToolTransform.py:733 msgid "[success] Flip on the Y axis done ..." msgstr "[success] Flip on the Y axis done ..." #: flatcamEditors/FlatCAMGeoEditor.py:1345 -#: flatcamEditors/FlatCAMGrbEditor.py:5304 flatcamTools/ToolTransform.py:742 +#: flatcamEditors/FlatCAMGrbEditor.py:5326 flatcamTools/ToolTransform.py:742 msgid "[success] Flip on the X axis done ..." msgstr "[success] Flip on the X axis done ..." #: flatcamEditors/FlatCAMGeoEditor.py:1364 -#: flatcamEditors/FlatCAMGrbEditor.py:5324 +#: flatcamEditors/FlatCAMGrbEditor.py:5346 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!" msgstr "" "[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!" #: flatcamEditors/FlatCAMGeoEditor.py:1367 -#: flatcamEditors/FlatCAMGrbEditor.py:5327 flatcamTools/ToolTransform.py:760 +#: flatcamEditors/FlatCAMGrbEditor.py:5349 flatcamTools/ToolTransform.py:760 msgid "Applying Skew" msgstr "Applying Skew" #: flatcamEditors/FlatCAMGeoEditor.py:1392 -#: flatcamEditors/FlatCAMGrbEditor.py:5360 flatcamTools/ToolTransform.py:791 +#: flatcamEditors/FlatCAMGrbEditor.py:5382 flatcamTools/ToolTransform.py:791 #, python-format msgid "[success] Skew on the %s axis done ..." msgstr "[success] Skew on the %s axis done ..." #: flatcamEditors/FlatCAMGeoEditor.py:1396 -#: flatcamEditors/FlatCAMGrbEditor.py:5364 flatcamTools/ToolTransform.py:795 +#: flatcamEditors/FlatCAMGrbEditor.py:5386 flatcamTools/ToolTransform.py:795 #, python-format msgid "[ERROR_NOTCL] Due of %s, Skew action was not executed." msgstr "[ERROR_NOTCL] Due of %s, Skew action was not executed." #: flatcamEditors/FlatCAMGeoEditor.py:1407 -#: flatcamEditors/FlatCAMGrbEditor.py:5383 +#: flatcamEditors/FlatCAMGrbEditor.py:5405 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to scale!" msgstr "[WARNING_NOTCL] No shape selected. Please Select a shape to scale!" #: flatcamEditors/FlatCAMGeoEditor.py:1410 -#: flatcamEditors/FlatCAMGrbEditor.py:5386 flatcamTools/ToolTransform.py:809 +#: flatcamEditors/FlatCAMGrbEditor.py:5408 flatcamTools/ToolTransform.py:809 msgid "Applying Scale" msgstr "Applying Scale" #: flatcamEditors/FlatCAMGeoEditor.py:1443 -#: flatcamEditors/FlatCAMGrbEditor.py:5422 flatcamTools/ToolTransform.py:848 +#: flatcamEditors/FlatCAMGrbEditor.py:5444 flatcamTools/ToolTransform.py:848 #, python-format msgid "[success] Scale on the %s axis done ..." msgstr "[success] Scale on the %s axis done ..." #: flatcamEditors/FlatCAMGeoEditor.py:1446 -#: flatcamEditors/FlatCAMGrbEditor.py:5425 flatcamTools/ToolTransform.py:851 +#: flatcamEditors/FlatCAMGrbEditor.py:5447 flatcamTools/ToolTransform.py:851 #, python-format msgid "[ERROR_NOTCL] Due of %s, Scale action was not executed." msgstr "[ERROR_NOTCL] Due of %s, Scale action was not executed." #: flatcamEditors/FlatCAMGeoEditor.py:1455 -#: flatcamEditors/FlatCAMGrbEditor.py:5438 +#: flatcamEditors/FlatCAMGrbEditor.py:5460 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to offset!" msgstr "[WARNING_NOTCL] No shape selected. Please Select a shape to offset!" #: flatcamEditors/FlatCAMGeoEditor.py:1458 -#: flatcamEditors/FlatCAMGrbEditor.py:5441 flatcamTools/ToolTransform.py:861 +#: flatcamEditors/FlatCAMGrbEditor.py:5463 flatcamTools/ToolTransform.py:861 msgid "Applying Offset" msgstr "Applying Offset" #: flatcamEditors/FlatCAMGeoEditor.py:1469 -#: flatcamEditors/FlatCAMGrbEditor.py:5462 flatcamTools/ToolTransform.py:880 +#: flatcamEditors/FlatCAMGrbEditor.py:5484 flatcamTools/ToolTransform.py:880 #, python-format msgid "[success] Offset on the %s axis done ..." msgstr "[success] Offset on the %s axis done ..." #: flatcamEditors/FlatCAMGeoEditor.py:1473 -#: flatcamEditors/FlatCAMGrbEditor.py:5466 flatcamTools/ToolTransform.py:884 +#: flatcamEditors/FlatCAMGrbEditor.py:5488 flatcamTools/ToolTransform.py:884 #, python-format msgid "[ERROR_NOTCL] Due of %s, Offset action was not executed." msgstr "[ERROR_NOTCL] Due of %s, Offset action was not executed." #: flatcamEditors/FlatCAMGeoEditor.py:1477 -#: flatcamEditors/FlatCAMGrbEditor.py:5470 +#: flatcamEditors/FlatCAMGrbEditor.py:5492 msgid "Rotate ..." msgstr "Rotate ..." #: flatcamEditors/FlatCAMGeoEditor.py:1478 #: flatcamEditors/FlatCAMGeoEditor.py:1535 #: flatcamEditors/FlatCAMGeoEditor.py:1552 -#: flatcamEditors/FlatCAMGrbEditor.py:5471 -#: flatcamEditors/FlatCAMGrbEditor.py:5528 -#: flatcamEditors/FlatCAMGrbEditor.py:5545 +#: flatcamEditors/FlatCAMGrbEditor.py:5493 +#: flatcamEditors/FlatCAMGrbEditor.py:5550 +#: flatcamEditors/FlatCAMGrbEditor.py:5567 msgid "Enter an Angle Value (degrees):" msgstr "Enter an Angle Value (degrees):" #: flatcamEditors/FlatCAMGeoEditor.py:1487 -#: flatcamEditors/FlatCAMGrbEditor.py:5480 +#: flatcamEditors/FlatCAMGrbEditor.py:5502 msgid "[success] Geometry shape rotate done..." msgstr "[success] Geometry shape rotate done..." #: flatcamEditors/FlatCAMGeoEditor.py:1492 -#: flatcamEditors/FlatCAMGrbEditor.py:5485 +#: flatcamEditors/FlatCAMGrbEditor.py:5507 msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..." msgstr "[WARNING_NOTCL] Geometry shape rotate cancelled..." #: flatcamEditors/FlatCAMGeoEditor.py:1498 -#: flatcamEditors/FlatCAMGrbEditor.py:5491 +#: flatcamEditors/FlatCAMGrbEditor.py:5513 msgid "Offset on X axis ..." msgstr "Offset on X axis ..." #: flatcamEditors/FlatCAMGeoEditor.py:1499 #: flatcamEditors/FlatCAMGeoEditor.py:1518 -#: flatcamEditors/FlatCAMGrbEditor.py:5492 -#: flatcamEditors/FlatCAMGrbEditor.py:5511 +#: flatcamEditors/FlatCAMGrbEditor.py:5514 +#: flatcamEditors/FlatCAMGrbEditor.py:5533 #, python-format msgid "Enter a distance Value (%s):" msgstr "Enter a distance Value (%s):" #: flatcamEditors/FlatCAMGeoEditor.py:1508 -#: flatcamEditors/FlatCAMGrbEditor.py:5501 +#: flatcamEditors/FlatCAMGrbEditor.py:5523 msgid "[success] Geometry shape offset on X axis done..." msgstr "[success] Geometry shape offset on X axis done..." #: flatcamEditors/FlatCAMGeoEditor.py:1512 -#: flatcamEditors/FlatCAMGrbEditor.py:5505 +#: flatcamEditors/FlatCAMGrbEditor.py:5527 msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..." msgstr "[WARNING_NOTCL] Geometry shape offset X cancelled..." #: flatcamEditors/FlatCAMGeoEditor.py:1517 -#: flatcamEditors/FlatCAMGrbEditor.py:5510 +#: flatcamEditors/FlatCAMGrbEditor.py:5532 msgid "Offset on Y axis ..." msgstr "Offset on Y axis ..." #: flatcamEditors/FlatCAMGeoEditor.py:1527 -#: flatcamEditors/FlatCAMGrbEditor.py:5520 +#: flatcamEditors/FlatCAMGrbEditor.py:5542 msgid "[success] Geometry shape offset on Y axis done..." msgstr "[success] Geometry shape offset on Y axis done..." #: flatcamEditors/FlatCAMGeoEditor.py:1531 -#: flatcamEditors/FlatCAMGrbEditor.py:5524 +#: flatcamEditors/FlatCAMGrbEditor.py:5546 msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..." msgstr "[WARNING_NOTCL] Geometry shape offset Y cancelled..." #: flatcamEditors/FlatCAMGeoEditor.py:1534 -#: flatcamEditors/FlatCAMGrbEditor.py:5527 +#: flatcamEditors/FlatCAMGrbEditor.py:5549 msgid "Skew on X axis ..." msgstr "Skew on X axis ..." #: flatcamEditors/FlatCAMGeoEditor.py:1544 -#: flatcamEditors/FlatCAMGrbEditor.py:5537 +#: flatcamEditors/FlatCAMGrbEditor.py:5559 msgid "[success] Geometry shape skew on X axis done..." msgstr "[success] Geometry shape skew on X axis done..." #: flatcamEditors/FlatCAMGeoEditor.py:1548 -#: flatcamEditors/FlatCAMGrbEditor.py:5541 +#: flatcamEditors/FlatCAMGrbEditor.py:5563 msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..." msgstr "[WARNING_NOTCL] Geometry shape skew X cancelled..." #: flatcamEditors/FlatCAMGeoEditor.py:1551 -#: flatcamEditors/FlatCAMGrbEditor.py:5544 +#: flatcamEditors/FlatCAMGrbEditor.py:5566 msgid "Skew on Y axis ..." msgstr "Skew on Y axis ..." #: flatcamEditors/FlatCAMGeoEditor.py:1561 -#: flatcamEditors/FlatCAMGrbEditor.py:5554 +#: flatcamEditors/FlatCAMGrbEditor.py:5576 msgid "[success] Geometry shape skew on Y axis done..." msgstr "[success] Geometry shape skew on Y axis done..." #: flatcamEditors/FlatCAMGeoEditor.py:1565 -#: flatcamEditors/FlatCAMGrbEditor.py:5558 +#: flatcamEditors/FlatCAMGrbEditor.py:5580 msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..." msgstr "[WARNING_NOTCL] Geometry shape skew Y cancelled..." #: flatcamEditors/FlatCAMGeoEditor.py:1929 #: flatcamEditors/FlatCAMGeoEditor.py:1980 -#: flatcamEditors/FlatCAMGrbEditor.py:1354 -#: flatcamEditors/FlatCAMGrbEditor.py:1423 +#: flatcamEditors/FlatCAMGrbEditor.py:1361 +#: flatcamEditors/FlatCAMGrbEditor.py:1430 msgid "Click on Center point ..." msgstr "Click on Center point ..." #: flatcamEditors/FlatCAMGeoEditor.py:1936 -#: flatcamEditors/FlatCAMGrbEditor.py:1362 +#: flatcamEditors/FlatCAMGrbEditor.py:1369 msgid "Click on Perimeter point to complete ..." msgstr "Click on Perimeter point to complete ..." @@ -2819,53 +2848,53 @@ msgid "[success] Done. Adding Circle completed." msgstr "[success] Done. Adding Circle completed." #: flatcamEditors/FlatCAMGeoEditor.py:2000 -#: flatcamEditors/FlatCAMGrbEditor.py:1448 +#: flatcamEditors/FlatCAMGrbEditor.py:1462 msgid "Click on Start point ..." msgstr "Click on Start point ..." #: flatcamEditors/FlatCAMGeoEditor.py:2002 -#: flatcamEditors/FlatCAMGrbEditor.py:1450 +#: flatcamEditors/FlatCAMGrbEditor.py:1464 msgid "Click on Point3 ..." msgstr "Click on Point3 ..." #: flatcamEditors/FlatCAMGeoEditor.py:2004 -#: flatcamEditors/FlatCAMGrbEditor.py:1452 +#: flatcamEditors/FlatCAMGrbEditor.py:1466 msgid "Click on Stop point ..." msgstr "Click on Stop point ..." #: flatcamEditors/FlatCAMGeoEditor.py:2009 -#: flatcamEditors/FlatCAMGrbEditor.py:1457 +#: flatcamEditors/FlatCAMGrbEditor.py:1471 msgid "Click on Stop point to complete ..." msgstr "Click on Stop point to complete ..." #: flatcamEditors/FlatCAMGeoEditor.py:2011 -#: flatcamEditors/FlatCAMGrbEditor.py:1459 +#: flatcamEditors/FlatCAMGrbEditor.py:1473 msgid "Click on Point2 to complete ..." msgstr "Click on Point2 to complete ..." #: flatcamEditors/FlatCAMGeoEditor.py:2013 -#: flatcamEditors/FlatCAMGrbEditor.py:1461 +#: flatcamEditors/FlatCAMGrbEditor.py:1475 msgid "Click on Center point to complete ..." msgstr "Click on Center point to complete ..." #: flatcamEditors/FlatCAMGeoEditor.py:2025 -#: flatcamEditors/FlatCAMGrbEditor.py:1473 +#: flatcamEditors/FlatCAMGrbEditor.py:1487 #, python-format msgid "Direction: %s" msgstr "Direction: %s" #: flatcamEditors/FlatCAMGeoEditor.py:2035 -#: flatcamEditors/FlatCAMGrbEditor.py:1483 +#: flatcamEditors/FlatCAMGrbEditor.py:1497 msgid "Mode: Start -> Stop -> Center. Click on Start point ..." msgstr "Mode: Start -> Stop -> Center. Click on Start point ..." #: flatcamEditors/FlatCAMGeoEditor.py:2038 -#: flatcamEditors/FlatCAMGrbEditor.py:1486 +#: flatcamEditors/FlatCAMGrbEditor.py:1500 msgid "Mode: Point1 -> Point3 -> Point2. Click on Point1 ..." msgstr "Mode: Point1 -> Point3 -> Point2. Click on Point1 ..." #: flatcamEditors/FlatCAMGeoEditor.py:2041 -#: flatcamEditors/FlatCAMGrbEditor.py:1489 +#: flatcamEditors/FlatCAMGrbEditor.py:1503 msgid "Mode: Center -> Start -> Stop. Click on Center point ..." msgstr "Mode: Center -> Start -> Stop. Click on Center point ..." @@ -2951,7 +2980,7 @@ msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected." msgstr "[WARNING_NOTCL] Buffer cancelled. No shape selected." #: flatcamEditors/FlatCAMGeoEditor.py:2711 -#: flatcamEditors/FlatCAMGrbEditor.py:4420 +#: flatcamEditors/FlatCAMGrbEditor.py:4442 msgid "[success] Done. Buffer Tool completed." msgstr "[success] Done. Buffer Tool completed." @@ -2964,27 +2993,24 @@ msgid "[success] Done. Buffer Ext Tool completed." msgstr "[success] Done. Buffer Ext Tool completed." #: flatcamEditors/FlatCAMGeoEditor.py:2798 -#: flatcamEditors/FlatCAMGrbEditor.py:1969 +#: flatcamEditors/FlatCAMGrbEditor.py:1983 msgid "Select a shape to act as deletion area ..." msgstr "Select a shape to act as deletion area ..." #: flatcamEditors/FlatCAMGeoEditor.py:2800 #: flatcamEditors/FlatCAMGeoEditor.py:2819 #: flatcamEditors/FlatCAMGeoEditor.py:2825 -#: flatcamEditors/FlatCAMGrbEditor.py:1971 -#| msgid "Click to set the origin ..." +#: flatcamEditors/FlatCAMGrbEditor.py:1985 msgid "Click to pick-up the erase shape..." msgstr "Click to pick-up the erase shape..." #: flatcamEditors/FlatCAMGeoEditor.py:2829 -#: flatcamEditors/FlatCAMGrbEditor.py:2028 -#| msgid "Click to place ..." +#: flatcamEditors/FlatCAMGrbEditor.py:2042 msgid "Click to erase ..." msgstr "Click to erase ..." #: flatcamEditors/FlatCAMGeoEditor.py:2858 -#: flatcamEditors/FlatCAMGrbEditor.py:2059 -#| msgid "[success] Done. Scale Tool completed." +#: flatcamEditors/FlatCAMGrbEditor.py:2075 msgid "[success] Done. Eraser tool action completed." msgstr "[success] Done. Eraser tool action completed." @@ -2993,28 +3019,32 @@ msgid "Create Paint geometry ..." msgstr "Create Paint geometry ..." #: flatcamEditors/FlatCAMGeoEditor.py:2915 -#: flatcamEditors/FlatCAMGrbEditor.py:2201 +#: flatcamEditors/FlatCAMGrbEditor.py:2217 msgid "Shape transformations ..." msgstr "Shape transformations ..." -#: flatcamEditors/FlatCAMGeoEditor.py:3419 +#: flatcamEditors/FlatCAMGeoEditor.py:3416 #, python-brace-format -msgid "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" -msgstr "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" +#| msgid "" +#| "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" +msgid "" +"[WARNING_NOTCL] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" +msgstr "" +"[WARNING_NOTCL] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" -#: flatcamEditors/FlatCAMGeoEditor.py:3796 +#: flatcamEditors/FlatCAMGeoEditor.py:3793 msgid "[WARNING_NOTCL] Copy cancelled. No shape selected." msgstr "[WARNING_NOTCL] Copy cancelled. No shape selected." -#: flatcamEditors/FlatCAMGeoEditor.py:3803 flatcamGUI/FlatCAMGUI.py:2732 -#: flatcamGUI/FlatCAMGUI.py:2778 flatcamGUI/FlatCAMGUI.py:2796 -#: flatcamGUI/FlatCAMGUI.py:2927 flatcamGUI/FlatCAMGUI.py:2939 -#: flatcamGUI/FlatCAMGUI.py:2973 +#: flatcamEditors/FlatCAMGeoEditor.py:3800 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 "Click on target point." -#: flatcamEditors/FlatCAMGeoEditor.py:4047 -#: flatcamEditors/FlatCAMGeoEditor.py:4082 +#: flatcamEditors/FlatCAMGeoEditor.py:4044 +#: flatcamEditors/FlatCAMGeoEditor.py:4079 msgid "" "[WARNING_NOTCL] A selection of at least 2 geo items is required to do " "Intersection." @@ -3022,9 +3052,9 @@ msgstr "" "[WARNING_NOTCL] A selection of at least 2 geo items is required to do " "Intersection." -#: flatcamEditors/FlatCAMGeoEditor.py:4166 -#: flatcamEditors/FlatCAMGeoEditor.py:4204 -#: flatcamEditors/FlatCAMGeoEditor.py:4280 +#: flatcamEditors/FlatCAMGeoEditor.py:4163 +#: flatcamEditors/FlatCAMGeoEditor.py:4201 +#: flatcamEditors/FlatCAMGeoEditor.py:4277 msgid "" "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to " "generate an 'inside' shape" @@ -3032,52 +3062,52 @@ msgstr "" "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to " "generate an 'inside' shape" -#: flatcamEditors/FlatCAMGeoEditor.py:4175 -#: flatcamEditors/FlatCAMGeoEditor.py:4213 -#: flatcamEditors/FlatCAMGeoEditor.py:4288 +#: flatcamEditors/FlatCAMGeoEditor.py:4172 +#: flatcamEditors/FlatCAMGeoEditor.py:4210 +#: flatcamEditors/FlatCAMGeoEditor.py:4285 msgid "[WARNING_NOTCL] Nothing selected for buffering." msgstr "[WARNING_NOTCL] Nothing selected for buffering." -#: flatcamEditors/FlatCAMGeoEditor.py:4179 -#: flatcamEditors/FlatCAMGeoEditor.py:4217 -#: flatcamEditors/FlatCAMGeoEditor.py:4292 +#: flatcamEditors/FlatCAMGeoEditor.py:4176 +#: flatcamEditors/FlatCAMGeoEditor.py:4214 +#: flatcamEditors/FlatCAMGeoEditor.py:4289 msgid "[WARNING_NOTCL] Invalid distance for buffering." msgstr "[WARNING_NOTCL] Invalid distance for buffering." -#: flatcamEditors/FlatCAMGeoEditor.py:4189 -#: flatcamEditors/FlatCAMGeoEditor.py:4301 +#: flatcamEditors/FlatCAMGeoEditor.py:4186 +#: flatcamEditors/FlatCAMGeoEditor.py:4298 msgid "" "[ERROR_NOTCL] Failed, the result is empty. Choose a different buffer value." msgstr "" "[ERROR_NOTCL] Failed, the result is empty. Choose a different buffer value." -#: flatcamEditors/FlatCAMGeoEditor.py:4197 +#: flatcamEditors/FlatCAMGeoEditor.py:4194 msgid "[success] Full buffer geometry created." msgstr "[success] Full buffer geometry created." -#: flatcamEditors/FlatCAMGeoEditor.py:4227 +#: flatcamEditors/FlatCAMGeoEditor.py:4224 msgid "" "[ERROR_NOTCL] Failed, the result is empty. Choose a smaller buffer value." msgstr "" "[ERROR_NOTCL] Failed, the result is empty. Choose a smaller buffer value." -#: flatcamEditors/FlatCAMGeoEditor.py:4242 +#: flatcamEditors/FlatCAMGeoEditor.py:4239 msgid "[success] Interior buffer geometry created." msgstr "[success] Interior buffer geometry created." -#: flatcamEditors/FlatCAMGeoEditor.py:4313 +#: flatcamEditors/FlatCAMGeoEditor.py:4310 msgid "[success] Exterior buffer geometry created." msgstr "[success] Exterior buffer geometry created." -#: flatcamEditors/FlatCAMGeoEditor.py:4377 +#: flatcamEditors/FlatCAMGeoEditor.py:4374 msgid "[WARNING_NOTCL] Nothing selected for painting." msgstr "[WARNING_NOTCL] Nothing selected for painting." -#: flatcamEditors/FlatCAMGeoEditor.py:4383 +#: flatcamEditors/FlatCAMGeoEditor.py:4380 msgid "[WARNING] Invalid value for {}" msgstr "[WARNING] Invalid value for {}" -#: flatcamEditors/FlatCAMGeoEditor.py:4389 +#: flatcamEditors/FlatCAMGeoEditor.py:4386 msgid "" "[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 " "(100%)." @@ -3085,7 +3115,7 @@ msgstr "" "[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 " "(100%)." -#: flatcamEditors/FlatCAMGeoEditor.py:4448 +#: flatcamEditors/FlatCAMGeoEditor.py:4445 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -3096,7 +3126,7 @@ msgstr "" "different method of Paint\n" "%s" -#: flatcamEditors/FlatCAMGeoEditor.py:4459 +#: flatcamEditors/FlatCAMGeoEditor.py:4456 msgid "[success] Paint done." msgstr "[success] Paint done." @@ -3112,11 +3142,6 @@ msgid "" msgstr "" "[WARNING_NOTCL] Aperture size is zero. It needs to be greater than zero." -#: flatcamEditors/FlatCAMGrbEditor.py:229 -#: flatcamEditors/FlatCAMGrbEditor.py:234 -msgid "Click to place ..." -msgstr "Click to place ..." - #: flatcamEditors/FlatCAMGrbEditor.py:357 #: flatcamEditors/FlatCAMGrbEditor.py:662 msgid "" @@ -3138,6 +3163,10 @@ msgstr "" msgid "Click on the Pad Circular Array Start position" msgstr "Click on the Pad Circular Array Start position" +#: flatcamEditors/FlatCAMGrbEditor.py:497 +msgid "[ERROR_NOTCL] The value is mistyped. Check the value." +msgstr "[ERROR_NOTCL] The value is mistyped. Check the value." + #: flatcamEditors/FlatCAMGrbEditor.py:687 msgid "[WARNING_NOTCL] Too many Pads for the selected spacing angle." msgstr "[WARNING_NOTCL] Too many Pads for the selected spacing angle." @@ -3227,78 +3256,78 @@ msgstr "Track Mode 4: Reverse 90 degrees ..." msgid "Track Mode 5: Free angle ..." msgstr "Track Mode 5: Free angle ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1669 +#: flatcamEditors/FlatCAMGrbEditor.py:1683 msgid "Scale the selected Gerber apertures ..." msgstr "Scale the selected Gerber apertures ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1711 +#: flatcamEditors/FlatCAMGrbEditor.py:1725 msgid "Buffer the selected apertures ..." msgstr "Buffer the selected apertures ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1755 +#: flatcamEditors/FlatCAMGrbEditor.py:1769 msgid "[WARNING_NOTCL] Nothing selected to move ..." msgstr "[WARNING_NOTCL] Nothing selected to move ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1878 +#: flatcamEditors/FlatCAMGrbEditor.py:1892 msgid "[success] Done. Apertures Move completed." msgstr "[success] Done. Apertures Move completed." -#: flatcamEditors/FlatCAMGrbEditor.py:1954 +#: flatcamEditors/FlatCAMGrbEditor.py:1968 msgid "[success] Done. Apertures copied." msgstr "[success] Done. Apertures copied." -#: flatcamEditors/FlatCAMGrbEditor.py:2243 flatcamGUI/FlatCAMGUI.py:1607 -#: flatcamGUI/FlatCAMGUI.py:4329 +#: flatcamEditors/FlatCAMGrbEditor.py:2259 flatcamGUI/FlatCAMGUI.py:1604 +#: flatcamGUI/FlatCAMGUI.py:4323 msgid "Gerber Editor" msgstr "Gerber Editor" -#: flatcamEditors/FlatCAMGrbEditor.py:2262 flatcamGUI/ObjectUI.py:192 +#: flatcamEditors/FlatCAMGrbEditor.py:2278 flatcamGUI/ObjectUI.py:192 msgid "Apertures:" msgstr "Apertures:" -#: flatcamEditors/FlatCAMGrbEditor.py:2264 flatcamGUI/ObjectUI.py:194 +#: flatcamEditors/FlatCAMGrbEditor.py:2280 flatcamGUI/ObjectUI.py:194 msgid "Apertures Table for the Gerber Object." msgstr "Apertures Table for the Gerber Object." -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 msgid "Code" msgstr "Code" -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465 msgid "Type" msgstr "Type" -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 msgid "Size" msgstr "Size" -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 msgid "Dim" msgstr "Dim" -#: flatcamEditors/FlatCAMGrbEditor.py:2279 flatcamGUI/ObjectUI.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:2295 flatcamGUI/ObjectUI.py:232 msgid "Index" msgstr "Index" -#: flatcamEditors/FlatCAMGrbEditor.py:2281 flatcamGUI/ObjectUI.py:234 +#: flatcamEditors/FlatCAMGrbEditor.py:2297 flatcamGUI/ObjectUI.py:234 msgid "Aperture Code" msgstr "Aperture Code" -#: flatcamEditors/FlatCAMGrbEditor.py:2283 flatcamGUI/ObjectUI.py:236 +#: flatcamEditors/FlatCAMGrbEditor.py:2299 flatcamGUI/ObjectUI.py:236 msgid "Type of aperture: circular, rectangle, macros etc" msgstr "Type of aperture: circular, rectangle, macros etc" -#: flatcamEditors/FlatCAMGrbEditor.py:2285 -#: flatcamEditors/FlatCAMGrbEditor.py:2318 flatcamGUI/ObjectUI.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:2301 +#: flatcamEditors/FlatCAMGrbEditor.py:2334 flatcamGUI/ObjectUI.py:238 msgid "Aperture Size:" msgstr "Aperture Size:" -#: flatcamEditors/FlatCAMGrbEditor.py:2287 flatcamGUI/ObjectUI.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:2303 flatcamGUI/ObjectUI.py:240 msgid "" "Aperture Dimensions:\n" " - (width, height) for R, O type.\n" @@ -3308,15 +3337,15 @@ msgstr "" " - (width, height) for R, O type.\n" " - (dia, nVertices) for P type" -#: flatcamEditors/FlatCAMGrbEditor.py:2308 +#: flatcamEditors/FlatCAMGrbEditor.py:2324 msgid "Aperture Code:" msgstr "Aperture Code:" -#: flatcamEditors/FlatCAMGrbEditor.py:2310 +#: flatcamEditors/FlatCAMGrbEditor.py:2326 msgid "Code for the new aperture" msgstr "Code for the new aperture" -#: flatcamEditors/FlatCAMGrbEditor.py:2320 +#: flatcamEditors/FlatCAMGrbEditor.py:2336 msgid "" "Size for the new aperture.\n" "If aperture type is 'R' or 'O' then\n" @@ -3330,11 +3359,11 @@ msgstr "" "calculated as:\n" "sqrt(width**2 + height**2)" -#: flatcamEditors/FlatCAMGrbEditor.py:2332 +#: flatcamEditors/FlatCAMGrbEditor.py:2348 msgid "Aperture Type:" msgstr "Aperture Type:" -#: flatcamEditors/FlatCAMGrbEditor.py:2334 +#: flatcamEditors/FlatCAMGrbEditor.py:2350 msgid "" "Select the type of new aperture. Can be:\n" "C = circular\n" @@ -3346,11 +3375,11 @@ msgstr "" "R = rectangular\n" "O = oblong" -#: flatcamEditors/FlatCAMGrbEditor.py:2345 +#: flatcamEditors/FlatCAMGrbEditor.py:2361 msgid "Aperture Dim:" msgstr "Aperture Dim:" -#: flatcamEditors/FlatCAMGrbEditor.py:2347 +#: flatcamEditors/FlatCAMGrbEditor.py:2363 msgid "" "Dimensions for the new aperture.\n" "Active only for rectangular apertures (type R).\n" @@ -3360,31 +3389,31 @@ msgstr "" "Active only for rectangular apertures (type R).\n" "The format is (width, height)" -#: flatcamEditors/FlatCAMGrbEditor.py:2356 +#: flatcamEditors/FlatCAMGrbEditor.py:2372 msgid "Add/Delete Aperture:" msgstr "Add/Delete Aperture:" -#: flatcamEditors/FlatCAMGrbEditor.py:2358 +#: flatcamEditors/FlatCAMGrbEditor.py:2374 msgid "Add/Delete an aperture in the aperture table" msgstr "Add/Delete an aperture in the aperture table" -#: flatcamEditors/FlatCAMGrbEditor.py:2367 +#: flatcamEditors/FlatCAMGrbEditor.py:2383 msgid "Add a new aperture to the aperture list." msgstr "Add a new aperture to the aperture list." -#: flatcamEditors/FlatCAMGrbEditor.py:2372 +#: flatcamEditors/FlatCAMGrbEditor.py:2388 msgid "Delete a aperture in the aperture list" msgstr "Delete a aperture in the aperture list" -#: flatcamEditors/FlatCAMGrbEditor.py:2388 +#: flatcamEditors/FlatCAMGrbEditor.py:2404 msgid "Buffer Aperture:" msgstr "Buffer Aperture:" -#: flatcamEditors/FlatCAMGrbEditor.py:2390 +#: flatcamEditors/FlatCAMGrbEditor.py:2406 msgid "Buffer a aperture in the aperture list" msgstr "Buffer a aperture in the aperture list" -#: flatcamEditors/FlatCAMGrbEditor.py:2403 +#: flatcamEditors/FlatCAMGrbEditor.py:2419 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded.\n" @@ -3398,24 +3427,24 @@ msgstr "" " - 'Beveled:' the corner is a line that directly connects the features " "meeting in the corner" -#: flatcamEditors/FlatCAMGrbEditor.py:2418 flatcamGUI/FlatCAMGUI.py:722 -#: flatcamGUI/FlatCAMGUI.py:1948 +#: flatcamEditors/FlatCAMGrbEditor.py:2434 flatcamGUI/FlatCAMGUI.py:717 +#: flatcamGUI/FlatCAMGUI.py:1946 msgid "Buffer" msgstr "Buffer" -#: flatcamEditors/FlatCAMGrbEditor.py:2432 +#: flatcamEditors/FlatCAMGrbEditor.py:2448 msgid "Scale Aperture:" msgstr "Scale Aperture:" -#: flatcamEditors/FlatCAMGrbEditor.py:2434 +#: flatcamEditors/FlatCAMGrbEditor.py:2450 msgid "Scale a aperture in the aperture list" msgstr "Scale a aperture in the aperture list" -#: flatcamEditors/FlatCAMGrbEditor.py:2442 +#: flatcamEditors/FlatCAMGrbEditor.py:2458 msgid "Scale factor:" msgstr "Scale factor:" -#: flatcamEditors/FlatCAMGrbEditor.py:2444 +#: flatcamEditors/FlatCAMGrbEditor.py:2460 msgid "" "The factor by which to scale the selected aperture.\n" "Values can be between 0.0000 and 999.9999" @@ -3423,16 +3452,16 @@ msgstr "" "The factor by which to scale the selected aperture.\n" "Values can be between 0.0000 and 999.9999" -#: flatcamEditors/FlatCAMGrbEditor.py:2472 flatcamGUI/FlatCAMGUI.py:712 -#: flatcamGUI/FlatCAMGUI.py:1938 +#: flatcamEditors/FlatCAMGrbEditor.py:2488 flatcamGUI/FlatCAMGUI.py:707 +#: flatcamGUI/FlatCAMGUI.py:1936 msgid "Add Pad Array" msgstr "Add Pad Array" -#: flatcamEditors/FlatCAMGrbEditor.py:2474 +#: flatcamEditors/FlatCAMGrbEditor.py:2490 msgid "Add an array of pads (linear or circular array)" msgstr "Add an array of pads (linear or circular array)" -#: flatcamEditors/FlatCAMGrbEditor.py:2480 +#: flatcamEditors/FlatCAMGrbEditor.py:2496 msgid "" "Select the type of pads array to create.\n" "It can be Linear X(Y) or Circular" @@ -3440,16 +3469,16 @@ msgstr "" "Select the type of pads array to create.\n" "It can be Linear X(Y) or Circular" -#: flatcamEditors/FlatCAMGrbEditor.py:2491 +#: flatcamEditors/FlatCAMGrbEditor.py:2507 msgid "Nr of pads:" msgstr "Nr of pads:" -#: flatcamEditors/FlatCAMGrbEditor.py:2493 +#: flatcamEditors/FlatCAMGrbEditor.py:2509 msgid "Specify how many pads to be in the array." msgstr "Specify how many pads to be in the array." -#: flatcamEditors/FlatCAMGrbEditor.py:2970 -#: flatcamEditors/FlatCAMGrbEditor.py:2974 +#: flatcamEditors/FlatCAMGrbEditor.py:2986 +#: flatcamEditors/FlatCAMGrbEditor.py:2990 msgid "" "[WARNING_NOTCL] Aperture code value is missing or wrong format. Add it and " "retry." @@ -3457,7 +3486,7 @@ msgstr "" "[WARNING_NOTCL] Aperture code value is missing or wrong format. Add it and " "retry." -#: flatcamEditors/FlatCAMGrbEditor.py:3010 +#: flatcamEditors/FlatCAMGrbEditor.py:3026 msgid "" "[WARNING_NOTCL] Aperture dimensions value is missing or wrong format. Add it " "in format (width, height) and retry." @@ -3465,7 +3494,7 @@ msgstr "" "[WARNING_NOTCL] Aperture dimensions value is missing or wrong format. Add it " "in format (width, height) and retry." -#: flatcamEditors/FlatCAMGrbEditor.py:3022 +#: flatcamEditors/FlatCAMGrbEditor.py:3038 msgid "" "[WARNING_NOTCL] Aperture size value is missing or wrong format. Add it and " "retry." @@ -3473,35 +3502,35 @@ msgstr "" "[WARNING_NOTCL] Aperture size value is missing or wrong format. Add it and " "retry." -#: flatcamEditors/FlatCAMGrbEditor.py:3033 +#: flatcamEditors/FlatCAMGrbEditor.py:3049 msgid "[WARNING_NOTCL] Aperture already in the aperture table." msgstr "[WARNING_NOTCL] Aperture already in the aperture table." -#: flatcamEditors/FlatCAMGrbEditor.py:3040 +#: flatcamEditors/FlatCAMGrbEditor.py:3056 #, python-brace-format msgid "[success] Added new aperture with code: {apid}" msgstr "[success] Added new aperture with code: {apid}" -#: flatcamEditors/FlatCAMGrbEditor.py:3068 +#: flatcamEditors/FlatCAMGrbEditor.py:3084 msgid "[WARNING_NOTCL] Select an aperture in Aperture Table" msgstr "[WARNING_NOTCL] Select an aperture in Aperture Table" -#: flatcamEditors/FlatCAMGrbEditor.py:3074 +#: flatcamEditors/FlatCAMGrbEditor.py:3090 #, python-format msgid "[WARNING_NOTCL] Select an aperture in Aperture Table --> %s" msgstr "[WARNING_NOTCL] Select an aperture in Aperture Table --> %s" -#: flatcamEditors/FlatCAMGrbEditor.py:3097 +#: flatcamEditors/FlatCAMGrbEditor.py:3113 #, python-brace-format msgid "[success] Deleted aperture with code: {del_dia}" msgstr "[success] Deleted aperture with code: {del_dia}" -#: flatcamEditors/FlatCAMGrbEditor.py:3517 +#: flatcamEditors/FlatCAMGrbEditor.py:3533 #, python-format msgid "Adding aperture: %s geo ..." msgstr "Adding aperture: %s geo ..." -#: flatcamEditors/FlatCAMGrbEditor.py:3696 +#: flatcamEditors/FlatCAMGrbEditor.py:3718 msgid "" "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber " "creation." @@ -3509,31 +3538,31 @@ msgstr "" "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber " "creation." -#: flatcamEditors/FlatCAMGrbEditor.py:3699 +#: flatcamEditors/FlatCAMGrbEditor.py:3721 msgid "[ERROR] An internal error has occurred. See shell.\n" msgstr "[ERROR] An internal error has occurred. See shell.\n" -#: flatcamEditors/FlatCAMGrbEditor.py:3704 +#: flatcamEditors/FlatCAMGrbEditor.py:3726 msgid "Creating Gerber." msgstr "Creating Gerber." -#: flatcamEditors/FlatCAMGrbEditor.py:3712 +#: flatcamEditors/FlatCAMGrbEditor.py:3734 msgid "[success] Gerber editing finished." msgstr "[success] Gerber editing finished." -#: flatcamEditors/FlatCAMGrbEditor.py:3728 +#: flatcamEditors/FlatCAMGrbEditor.py:3750 msgid "[WARNING_NOTCL] Cancelled. No aperture is selected" msgstr "[WARNING_NOTCL] Cancelled. No aperture is selected" -#: flatcamEditors/FlatCAMGrbEditor.py:4248 +#: flatcamEditors/FlatCAMGrbEditor.py:4270 msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected." msgstr "[ERROR_NOTCL] Failed. No aperture geometry is selected." -#: flatcamEditors/FlatCAMGrbEditor.py:4256 +#: flatcamEditors/FlatCAMGrbEditor.py:4278 msgid "[success] Done. Apertures geometry deleted." msgstr "[success] Done. Apertures geometry deleted." -#: flatcamEditors/FlatCAMGrbEditor.py:4405 +#: flatcamEditors/FlatCAMGrbEditor.py:4427 msgid "" "[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try " "again." @@ -3541,7 +3570,7 @@ msgstr "" "[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try " "again." -#: flatcamEditors/FlatCAMGrbEditor.py:4434 +#: flatcamEditors/FlatCAMGrbEditor.py:4456 msgid "" "[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and " "retry." @@ -3549,7 +3578,7 @@ msgstr "" "[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and " "retry." -#: flatcamEditors/FlatCAMGrbEditor.py:4464 +#: flatcamEditors/FlatCAMGrbEditor.py:4486 msgid "" "[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try " "again." @@ -3557,7 +3586,7 @@ msgstr "" "[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try " "again." -#: flatcamEditors/FlatCAMGrbEditor.py:4480 +#: flatcamEditors/FlatCAMGrbEditor.py:4502 msgid "[success] Done. Scale Tool completed." msgstr "[success] Done. Scale Tool completed." @@ -3734,47 +3763,47 @@ msgstr "" msgid "Save &Defaults" msgstr "Save &Defaults" -#: flatcamGUI/FlatCAMGUI.py:205 flatcamGUI/FlatCAMGUI.py:533 +#: flatcamGUI/FlatCAMGUI.py:205 flatcamGUI/FlatCAMGUI.py:528 msgid "Save" msgstr "Save" -#: flatcamGUI/FlatCAMGUI.py:207 +#: flatcamGUI/FlatCAMGUI.py:208 msgid "&Save Project ..." msgstr "&Save Project ..." -#: flatcamGUI/FlatCAMGUI.py:212 +#: flatcamGUI/FlatCAMGUI.py:213 msgid "Save Project &As ...\tCTRL+S" msgstr "Save Project &As ...\tCTRL+S" -#: flatcamGUI/FlatCAMGUI.py:216 +#: flatcamGUI/FlatCAMGUI.py:217 msgid "Save Project C&opy ..." msgstr "Save Project C&opy ..." -#: flatcamGUI/FlatCAMGUI.py:224 +#: flatcamGUI/FlatCAMGUI.py:225 msgid "E&xit" msgstr "E&xit" -#: flatcamGUI/FlatCAMGUI.py:230 +#: flatcamGUI/FlatCAMGUI.py:231 msgid "&Edit" msgstr "&Edit" -#: flatcamGUI/FlatCAMGUI.py:233 +#: flatcamGUI/FlatCAMGUI.py:234 msgid "Edit Object\tE" msgstr "Edit Object\tE" -#: flatcamGUI/FlatCAMGUI.py:234 +#: flatcamGUI/FlatCAMGUI.py:235 msgid "Close Editor\tCTRL+S" msgstr "Close Editor\tCTRL+S" -#: flatcamGUI/FlatCAMGUI.py:242 +#: flatcamGUI/FlatCAMGUI.py:243 msgid "Conversion" msgstr "Conversion" -#: flatcamGUI/FlatCAMGUI.py:244 +#: flatcamGUI/FlatCAMGUI.py:245 msgid "&Join Geo/Gerber/Exc -> Geo" msgstr "&Join Geo/Gerber/Exc -> Geo" -#: flatcamGUI/FlatCAMGUI.py:246 +#: flatcamGUI/FlatCAMGUI.py:247 msgid "" "Merge a selection of objects, which can be of type:\n" "- Gerber\n" @@ -3788,28 +3817,28 @@ msgstr "" "- Geometry\n" "into a new combo Geometry object." -#: flatcamGUI/FlatCAMGUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:254 msgid "Join Excellon(s) -> Excellon" msgstr "Join Excellon(s) -> Excellon" -#: flatcamGUI/FlatCAMGUI.py:255 +#: flatcamGUI/FlatCAMGUI.py:256 msgid "Merge a selection of Excellon objects into a new combo Excellon object." msgstr "" "Merge a selection of Excellon objects into a new combo Excellon object." -#: flatcamGUI/FlatCAMGUI.py:258 +#: flatcamGUI/FlatCAMGUI.py:259 msgid "Join Gerber(s) -> Gerber" msgstr "Join Gerber(s) -> Gerber" -#: flatcamGUI/FlatCAMGUI.py:260 +#: flatcamGUI/FlatCAMGUI.py:261 msgid "Merge a selection of Gerber objects into a new combo Gerber object." msgstr "Merge a selection of Gerber objects into a new combo Gerber object." -#: flatcamGUI/FlatCAMGUI.py:265 +#: flatcamGUI/FlatCAMGUI.py:266 msgid "Convert Single to MultiGeo" msgstr "Convert Single to MultiGeo" -#: flatcamGUI/FlatCAMGUI.py:267 +#: flatcamGUI/FlatCAMGUI.py:268 msgid "" "Will convert a Geometry object from single_geometry type\n" "to a multi_geometry type." @@ -3817,11 +3846,11 @@ msgstr "" "Will convert a Geometry object from single_geometry type\n" "to a multi_geometry type." -#: flatcamGUI/FlatCAMGUI.py:271 +#: flatcamGUI/FlatCAMGUI.py:272 msgid "Convert Multi to SingleGeo" msgstr "Convert Multi to SingleGeo" -#: flatcamGUI/FlatCAMGUI.py:273 +#: flatcamGUI/FlatCAMGUI.py:274 msgid "" "Will convert a Geometry object from multi_geometry type\n" "to a single_geometry type." @@ -3829,123 +3858,123 @@ msgstr "" "Will convert a Geometry object from multi_geometry type\n" "to a single_geometry type." -#: flatcamGUI/FlatCAMGUI.py:279 +#: flatcamGUI/FlatCAMGUI.py:280 msgid "Convert Any to Geo" msgstr "Convert Any to Geo" -#: flatcamGUI/FlatCAMGUI.py:281 +#: flatcamGUI/FlatCAMGUI.py:282 msgid "Convert Any to Gerber" msgstr "Convert Any to Gerber" -#: flatcamGUI/FlatCAMGUI.py:286 +#: flatcamGUI/FlatCAMGUI.py:287 msgid "&Copy\tCTRL+C" msgstr "&Copy\tCTRL+C" -#: flatcamGUI/FlatCAMGUI.py:290 +#: flatcamGUI/FlatCAMGUI.py:291 msgid "&Delete\tDEL" msgstr "&Delete\tDEL" -#: flatcamGUI/FlatCAMGUI.py:294 +#: flatcamGUI/FlatCAMGUI.py:295 msgid "Se&t Origin\tO" msgstr "Se&t Origin\tO" -#: flatcamGUI/FlatCAMGUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:296 msgid "Jump to Location\tJ" msgstr "Jump to Location\tJ" -#: flatcamGUI/FlatCAMGUI.py:300 +#: flatcamGUI/FlatCAMGUI.py:301 msgid "Toggle Units\tQ" msgstr "Toggle Units\tQ" -#: flatcamGUI/FlatCAMGUI.py:302 +#: flatcamGUI/FlatCAMGUI.py:303 msgid "&Select All\tCTRL+A" msgstr "&Select All\tCTRL+A" -#: flatcamGUI/FlatCAMGUI.py:306 +#: flatcamGUI/FlatCAMGUI.py:307 msgid "&Preferences\tSHIFT+P" msgstr "&Preferences\tSHIFT+P" -#: flatcamGUI/FlatCAMGUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:310 msgid "&Options" msgstr "&Options" -#: flatcamGUI/FlatCAMGUI.py:324 +#: flatcamGUI/FlatCAMGUI.py:325 msgid "&Rotate Selection\tSHIFT+(R)" msgstr "&Rotate Selection\tSHIFT+(R)" -#: flatcamGUI/FlatCAMGUI.py:329 +#: flatcamGUI/FlatCAMGUI.py:330 msgid "&Skew on X axis\tSHIFT+X" msgstr "&Skew on X axis\tSHIFT+X" -#: flatcamGUI/FlatCAMGUI.py:331 +#: flatcamGUI/FlatCAMGUI.py:332 msgid "S&kew on Y axis\tSHIFT+Y" msgstr "S&kew on Y axis\tSHIFT+Y" -#: flatcamGUI/FlatCAMGUI.py:336 +#: flatcamGUI/FlatCAMGUI.py:337 msgid "Flip on &X axis\tX" msgstr "Flip on &X axis\tX" -#: flatcamGUI/FlatCAMGUI.py:338 +#: flatcamGUI/FlatCAMGUI.py:339 msgid "Flip on &Y axis\tY" msgstr "Flip on &Y axis\tY" -#: flatcamGUI/FlatCAMGUI.py:343 +#: flatcamGUI/FlatCAMGUI.py:344 msgid "View source\tALT+S" msgstr "View source\tALT+S" -#: flatcamGUI/FlatCAMGUI.py:348 +#: flatcamGUI/FlatCAMGUI.py:349 msgid "&View" msgstr "&View" -#: flatcamGUI/FlatCAMGUI.py:349 +#: flatcamGUI/FlatCAMGUI.py:350 msgid "Enable all plots\tALT+1" msgstr "Enable all plots\tALT+1" -#: flatcamGUI/FlatCAMGUI.py:351 +#: flatcamGUI/FlatCAMGUI.py:352 msgid "Disable all plots\tALT+2" msgstr "Disable all plots\tALT+2" -#: flatcamGUI/FlatCAMGUI.py:353 +#: flatcamGUI/FlatCAMGUI.py:354 msgid "Disable non-selected\tALT+3" msgstr "Disable non-selected\tALT+3" -#: flatcamGUI/FlatCAMGUI.py:356 +#: flatcamGUI/FlatCAMGUI.py:357 msgid "&Zoom Fit\tV" msgstr "&Zoom Fit\tV" -#: flatcamGUI/FlatCAMGUI.py:357 +#: flatcamGUI/FlatCAMGUI.py:358 msgid "&Zoom In\t-" msgstr "&Zoom In\t-" -#: flatcamGUI/FlatCAMGUI.py:358 +#: flatcamGUI/FlatCAMGUI.py:359 msgid "&Zoom Out\t=" msgstr "&Zoom Out\t=" -#: flatcamGUI/FlatCAMGUI.py:362 +#: flatcamGUI/FlatCAMGUI.py:363 msgid "Toggle Code Editor\tCTRL+E" msgstr "Toggle Code Editor\tCTRL+E" -#: flatcamGUI/FlatCAMGUI.py:365 +#: flatcamGUI/FlatCAMGUI.py:366 msgid "&Toggle FullScreen\tALT+F10" msgstr "&Toggle FullScreen\tALT+F10" -#: flatcamGUI/FlatCAMGUI.py:367 +#: flatcamGUI/FlatCAMGUI.py:368 msgid "&Toggle Plot Area\tCTRL+F10" msgstr "&Toggle Plot Area\tCTRL+F10" -#: flatcamGUI/FlatCAMGUI.py:369 +#: flatcamGUI/FlatCAMGUI.py:370 msgid "&Toggle Project/Sel/Tool\t`" msgstr "&Toggle Project/Sel/Tool\t`" -#: flatcamGUI/FlatCAMGUI.py:372 +#: flatcamGUI/FlatCAMGUI.py:373 msgid "&Toggle Grid Snap\tG" msgstr "&Toggle Grid Snap\tG" -#: flatcamGUI/FlatCAMGUI.py:374 +#: flatcamGUI/FlatCAMGUI.py:375 msgid "&Toggle Axis\tSHIFT+G" msgstr "&Toggle Axis\tSHIFT+G" -#: flatcamGUI/FlatCAMGUI.py:377 +#: flatcamGUI/FlatCAMGUI.py:378 msgid "Toggle Workspace\tSHIFT+W" msgstr "Toggle Workspace\tSHIFT+W" @@ -3981,442 +4010,442 @@ msgstr "YouTube Channel\tF4" msgid "About" msgstr "About" -#: flatcamGUI/FlatCAMGUI.py:405 +#: flatcamGUI/FlatCAMGUI.py:401 msgid "Add Circle\tO" msgstr "Add Circle\tO" -#: flatcamGUI/FlatCAMGUI.py:407 +#: flatcamGUI/FlatCAMGUI.py:403 msgid "Add Arc\tA" msgstr "Add Arc\tA" -#: flatcamGUI/FlatCAMGUI.py:410 +#: flatcamGUI/FlatCAMGUI.py:406 msgid "Add Rectangle\tR" msgstr "Add Rectangle\tR" -#: flatcamGUI/FlatCAMGUI.py:413 +#: flatcamGUI/FlatCAMGUI.py:409 msgid "Add Polygon\tN" msgstr "Add Polygon\tN" -#: flatcamGUI/FlatCAMGUI.py:415 +#: flatcamGUI/FlatCAMGUI.py:411 msgid "Add Path\tP" msgstr "Add Path\tP" -#: flatcamGUI/FlatCAMGUI.py:417 +#: flatcamGUI/FlatCAMGUI.py:413 msgid "Add Text\tT" msgstr "Add Text\tT" -#: flatcamGUI/FlatCAMGUI.py:420 +#: flatcamGUI/FlatCAMGUI.py:416 msgid "Polygon Union\tU" msgstr "Polygon Union\tU" -#: flatcamGUI/FlatCAMGUI.py:422 +#: flatcamGUI/FlatCAMGUI.py:418 msgid "Polygon Intersection\tE" msgstr "Polygon Intersection\tE" -#: flatcamGUI/FlatCAMGUI.py:424 +#: flatcamGUI/FlatCAMGUI.py:420 msgid "Polygon Subtraction\tS" msgstr "Polygon Subtraction\tS" -#: flatcamGUI/FlatCAMGUI.py:428 +#: flatcamGUI/FlatCAMGUI.py:424 msgid "Cut Path\tX" msgstr "Cut Path\tX" -#: flatcamGUI/FlatCAMGUI.py:430 +#: flatcamGUI/FlatCAMGUI.py:426 msgid "Copy Geom\tC" msgstr "Copy Geom\tC" -#: flatcamGUI/FlatCAMGUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:428 msgid "Delete Shape\tDEL" msgstr "Delete Shape\tDEL" -#: flatcamGUI/FlatCAMGUI.py:435 flatcamGUI/FlatCAMGUI.py:508 +#: flatcamGUI/FlatCAMGUI.py:431 flatcamGUI/FlatCAMGUI.py:503 msgid "Move\tM" msgstr "Move\tM" -#: flatcamGUI/FlatCAMGUI.py:437 +#: flatcamGUI/FlatCAMGUI.py:433 msgid "Buffer Tool\tB" msgstr "Buffer Tool\tB" -#: flatcamGUI/FlatCAMGUI.py:440 +#: flatcamGUI/FlatCAMGUI.py:436 msgid "Paint Tool\tI" msgstr "Paint Tool\tI" -#: flatcamGUI/FlatCAMGUI.py:443 +#: flatcamGUI/FlatCAMGUI.py:439 msgid "Transform Tool\tALT+R" msgstr "Transform Tool\tALT+R" -#: flatcamGUI/FlatCAMGUI.py:447 +#: flatcamGUI/FlatCAMGUI.py:443 msgid "Toggle Corner Snap\tK" msgstr "Toggle Corner Snap\tK" -#: flatcamGUI/FlatCAMGUI.py:450 +#: flatcamGUI/FlatCAMGUI.py:446 msgid ">Excellon Editor<" msgstr ">Excellon Editor<" -#: flatcamGUI/FlatCAMGUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:450 msgid "Add Drill Array\tA" msgstr "Add Drill Array\tA" -#: flatcamGUI/FlatCAMGUI.py:456 +#: flatcamGUI/FlatCAMGUI.py:452 msgid "Add Drill\tD" msgstr "Add Drill\tD" -#: flatcamGUI/FlatCAMGUI.py:460 +#: flatcamGUI/FlatCAMGUI.py:456 msgid "Resize Drill(S)\tR" msgstr "Resize Drill(S)\tR" -#: flatcamGUI/FlatCAMGUI.py:462 flatcamGUI/FlatCAMGUI.py:501 +#: flatcamGUI/FlatCAMGUI.py:458 flatcamGUI/FlatCAMGUI.py:496 msgid "Copy\tC" msgstr "Copy\tC" -#: flatcamGUI/FlatCAMGUI.py:464 flatcamGUI/FlatCAMGUI.py:503 +#: flatcamGUI/FlatCAMGUI.py:460 flatcamGUI/FlatCAMGUI.py:498 msgid "Delete\tDEL" msgstr "Delete\tDEL" -#: flatcamGUI/FlatCAMGUI.py:469 +#: flatcamGUI/FlatCAMGUI.py:465 msgid "Move Drill(s)\tM" msgstr "Move Drill(s)\tM" -#: flatcamGUI/FlatCAMGUI.py:473 +#: flatcamGUI/FlatCAMGUI.py:468 msgid ">Gerber Editor<" msgstr ">Gerber Editor<" -#: flatcamGUI/FlatCAMGUI.py:477 +#: flatcamGUI/FlatCAMGUI.py:472 msgid "Add Pad\tP" msgstr "Add Pad\tP" -#: flatcamGUI/FlatCAMGUI.py:479 +#: flatcamGUI/FlatCAMGUI.py:474 msgid "Add Pad Array\tA" msgstr "Add Pad Array\tA" -#: flatcamGUI/FlatCAMGUI.py:481 +#: flatcamGUI/FlatCAMGUI.py:476 msgid "Add Track\tT" msgstr "Add Track\tT" -#: flatcamGUI/FlatCAMGUI.py:483 +#: flatcamGUI/FlatCAMGUI.py:478 msgid "Add Region\tN" msgstr "Add Region\tN" -#: flatcamGUI/FlatCAMGUI.py:487 +#: flatcamGUI/FlatCAMGUI.py:482 msgid "Poligonize\tALT+N" msgstr "Poligonize\tALT+N" -#: flatcamGUI/FlatCAMGUI.py:489 +#: flatcamGUI/FlatCAMGUI.py:484 msgid "Add SemiDisc\tE" msgstr "Add SemiDisc\tE" -#: flatcamGUI/FlatCAMGUI.py:491 +#: flatcamGUI/FlatCAMGUI.py:486 msgid "Add Disc\tD" msgstr "Add Disc\tD" -#: flatcamGUI/FlatCAMGUI.py:493 +#: flatcamGUI/FlatCAMGUI.py:488 msgid "Buffer\tB" msgstr "Buffer\tB" -#: flatcamGUI/FlatCAMGUI.py:495 +#: flatcamGUI/FlatCAMGUI.py:490 msgid "Scale\tS" msgstr "Scale\tS" -#: flatcamGUI/FlatCAMGUI.py:497 +#: flatcamGUI/FlatCAMGUI.py:492 msgid "Transform\tALT+R" msgstr "Transform\tALT+R" -#: flatcamGUI/FlatCAMGUI.py:524 +#: flatcamGUI/FlatCAMGUI.py:519 msgid "Enable Plot" msgstr "Enable Plot" -#: flatcamGUI/FlatCAMGUI.py:525 +#: flatcamGUI/FlatCAMGUI.py:520 flatcamGUI/FlatCAMGUI.py:1577 msgid "Disable Plot" msgstr "Disable Plot" -#: flatcamGUI/FlatCAMGUI.py:527 +#: flatcamGUI/FlatCAMGUI.py:522 msgid "Generate CNC" msgstr "Generate CNC" -#: flatcamGUI/FlatCAMGUI.py:528 +#: flatcamGUI/FlatCAMGUI.py:523 msgid "View Source" msgstr "View Source" -#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1620 +#: flatcamGUI/FlatCAMGUI.py:525 flatcamGUI/FlatCAMGUI.py:1617 msgid "Edit" msgstr "Edit" -#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1626 +#: flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:1623 #: flatcamTools/ToolProperties.py:25 msgid "Properties" msgstr "Properties" -#: flatcamGUI/FlatCAMGUI.py:565 +#: flatcamGUI/FlatCAMGUI.py:560 msgid "File Toolbar" msgstr "File Toolbar" -#: flatcamGUI/FlatCAMGUI.py:569 +#: flatcamGUI/FlatCAMGUI.py:564 msgid "Edit Toolbar" msgstr "Edit Toolbar" -#: flatcamGUI/FlatCAMGUI.py:573 +#: flatcamGUI/FlatCAMGUI.py:568 msgid "View Toolbar" msgstr "View Toolbar" -#: flatcamGUI/FlatCAMGUI.py:577 +#: flatcamGUI/FlatCAMGUI.py:572 msgid "Shell Toolbar" msgstr "Shell Toolbar" -#: flatcamGUI/FlatCAMGUI.py:581 +#: flatcamGUI/FlatCAMGUI.py:576 msgid "Tools Toolbar" msgstr "Tools Toolbar" -#: flatcamGUI/FlatCAMGUI.py:585 +#: flatcamGUI/FlatCAMGUI.py:580 msgid "Excellon Editor Toolbar" msgstr "Excellon Editor Toolbar" -#: flatcamGUI/FlatCAMGUI.py:589 +#: flatcamGUI/FlatCAMGUI.py:584 msgid "Geometry Editor Toolbar" msgstr "Geometry Editor Toolbar" -#: flatcamGUI/FlatCAMGUI.py:593 +#: flatcamGUI/FlatCAMGUI.py:588 msgid "Gerber Editor Toolbar" msgstr "Gerber Editor Toolbar" -#: flatcamGUI/FlatCAMGUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:592 msgid "Grid Toolbar" msgstr "Grid Toolbar" -#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1837 +#: flatcamGUI/FlatCAMGUI.py:611 flatcamGUI/FlatCAMGUI.py:1835 msgid "Open project" msgstr "Open project" -#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1838 +#: flatcamGUI/FlatCAMGUI.py:612 flatcamGUI/FlatCAMGUI.py:1836 msgid "Save project" msgstr "Save project" -#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1841 +#: flatcamGUI/FlatCAMGUI.py:615 flatcamGUI/FlatCAMGUI.py:1839 msgid "New Blank Geometry" msgstr "New Blank Geometry" -#: flatcamGUI/FlatCAMGUI.py:621 +#: flatcamGUI/FlatCAMGUI.py:616 msgid "New Blank Gerber" msgstr "New Blank Gerber" -#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1842 +#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1840 msgid "New Blank Excellon" msgstr "New Blank Excellon" -#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1844 +#: flatcamGUI/FlatCAMGUI.py:619 flatcamGUI/FlatCAMGUI.py:1842 msgid "Editor" msgstr "Editor" -#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1846 +#: flatcamGUI/FlatCAMGUI.py:621 flatcamGUI/FlatCAMGUI.py:1844 msgid "Save Object and close the Editor" msgstr "Save Object and close the Editor" -#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1850 +#: flatcamGUI/FlatCAMGUI.py:625 flatcamGUI/FlatCAMGUI.py:1848 msgid "&Delete" msgstr "&Delete" -#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1853 +#: flatcamGUI/FlatCAMGUI.py:628 flatcamGUI/FlatCAMGUI.py:1851 msgid "&Replot" msgstr "&Replot" -#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1854 +#: flatcamGUI/FlatCAMGUI.py:629 flatcamGUI/FlatCAMGUI.py:1852 msgid "&Clear plot" msgstr "&Clear plot" -#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1855 +#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1853 msgid "Zoom In" msgstr "Zoom In" -#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1856 +#: flatcamGUI/FlatCAMGUI.py:631 flatcamGUI/FlatCAMGUI.py:1854 msgid "Zoom Out" msgstr "Zoom Out" -#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1595 -#: flatcamGUI/FlatCAMGUI.py:1857 +#: flatcamGUI/FlatCAMGUI.py:632 flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1855 msgid "Zoom Fit" msgstr "Zoom Fit" -#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1862 +#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1860 msgid "&Command Line" msgstr "&Command Line" -#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1865 +#: flatcamGUI/FlatCAMGUI.py:640 flatcamGUI/FlatCAMGUI.py:1863 msgid "2Sided Tool" msgstr "2Sided Tool" -#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1866 +#: flatcamGUI/FlatCAMGUI.py:641 flatcamGUI/FlatCAMGUI.py:1864 msgid "&Cutout Tool" msgstr "&Cutout Tool" -#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1867 +#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1865 #: flatcamGUI/ObjectUI.py:392 flatcamTools/ToolNonCopperClear.py:285 msgid "NCC Tool" msgstr "NCC Tool" -#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1871 +#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1869 msgid "Panel Tool" msgstr "Panel Tool" -#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1872 +#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1870 #: flatcamTools/ToolFilm.py:204 msgid "Film Tool" msgstr "Film Tool" -#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1874 +#: flatcamGUI/FlatCAMGUI.py:648 flatcamGUI/FlatCAMGUI.py:1872 msgid "SolderPaste Tool" msgstr "SolderPaste Tool" -#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1875 +#: flatcamGUI/FlatCAMGUI.py:649 flatcamGUI/FlatCAMGUI.py:1873 #: flatcamTools/ToolSub.py:26 msgid "Substract Tool" msgstr "Substract Tool" -#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1880 +#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1878 msgid "Calculators Tool" msgstr "Calculators Tool" -#: flatcamGUI/FlatCAMGUI.py:662 flatcamGUI/FlatCAMGUI.py:676 -#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1884 -#: flatcamGUI/FlatCAMGUI.py:1936 +#: flatcamGUI/FlatCAMGUI.py:657 flatcamGUI/FlatCAMGUI.py:671 +#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:1882 +#: flatcamGUI/FlatCAMGUI.py:1934 msgid "Select" msgstr "Select" -#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1885 +#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1883 msgid "Add Drill Hole" msgstr "Add Drill Hole" -#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1887 +#: flatcamGUI/FlatCAMGUI.py:660 flatcamGUI/FlatCAMGUI.py:1885 msgid "Add Drill Hole Array" msgstr "Add Drill Hole Array" -#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1888 +#: flatcamGUI/FlatCAMGUI.py:661 flatcamGUI/FlatCAMGUI.py:1886 msgid "Resize Drill" msgstr "Resize Drill" -#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1891 +#: flatcamGUI/FlatCAMGUI.py:664 flatcamGUI/FlatCAMGUI.py:1889 msgid "Copy Drill" msgstr "Copy Drill" -#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1893 +#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1891 msgid "Delete Drill" msgstr "Delete Drill" -#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1896 +#: flatcamGUI/FlatCAMGUI.py:668 flatcamGUI/FlatCAMGUI.py:1894 msgid "Move Drill" msgstr "Move Drill" -#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1900 +#: flatcamGUI/FlatCAMGUI.py:672 flatcamGUI/FlatCAMGUI.py:1898 msgid "Add Circle" msgstr "Add Circle" -#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1901 +#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1899 msgid "Add Arc" msgstr "Add Arc" -#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1903 +#: flatcamGUI/FlatCAMGUI.py:675 flatcamGUI/FlatCAMGUI.py:1901 msgid "Add Rectangle" msgstr "Add Rectangle" -#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1906 +#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1904 msgid "Add Path" msgstr "Add Path" -#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1908 +#: flatcamGUI/FlatCAMGUI.py:679 flatcamGUI/FlatCAMGUI.py:1906 msgid "Add Polygon" msgstr "Add Polygon" -#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1910 +#: flatcamGUI/FlatCAMGUI.py:681 flatcamGUI/FlatCAMGUI.py:1908 msgid "Add Text" msgstr "Add Text" -#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1912 +#: flatcamGUI/FlatCAMGUI.py:682 flatcamGUI/FlatCAMGUI.py:1910 msgid "Add Buffer" msgstr "Add Buffer" -#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1913 +#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1911 msgid "Paint Shape" msgstr "Paint Shape" -#: flatcamGUI/FlatCAMGUI.py:689 flatcamGUI/FlatCAMGUI.py:724 -#: flatcamGUI/FlatCAMGUI.py:1914 flatcamGUI/FlatCAMGUI.py:1950 +#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:719 +#: flatcamGUI/FlatCAMGUI.py:1912 flatcamGUI/FlatCAMGUI.py:1948 msgid "Eraser" msgstr "Eraser" -#: flatcamGUI/FlatCAMGUI.py:692 flatcamGUI/FlatCAMGUI.py:1918 +#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1916 msgid "Polygon Union" msgstr "Polygon Union" -#: flatcamGUI/FlatCAMGUI.py:694 flatcamGUI/FlatCAMGUI.py:1920 +#: flatcamGUI/FlatCAMGUI.py:689 flatcamGUI/FlatCAMGUI.py:1918 msgid "Polygon Intersection" msgstr "Polygon Intersection" -#: flatcamGUI/FlatCAMGUI.py:696 flatcamGUI/FlatCAMGUI.py:1922 +#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:1920 msgid "Polygon Subtraction" msgstr "Polygon Subtraction" -#: flatcamGUI/FlatCAMGUI.py:699 flatcamGUI/FlatCAMGUI.py:1925 +#: flatcamGUI/FlatCAMGUI.py:694 flatcamGUI/FlatCAMGUI.py:1923 msgid "Cut Path" msgstr "Cut Path" -#: flatcamGUI/FlatCAMGUI.py:700 +#: flatcamGUI/FlatCAMGUI.py:695 msgid "Copy Shape(s)" msgstr "Copy Shape(s)" -#: flatcamGUI/FlatCAMGUI.py:703 +#: flatcamGUI/FlatCAMGUI.py:698 msgid "Delete Shape '-'" msgstr "Delete Shape '-'" -#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:731 -#: flatcamGUI/FlatCAMGUI.py:1930 flatcamGUI/FlatCAMGUI.py:1957 +#: flatcamGUI/FlatCAMGUI.py:700 flatcamGUI/FlatCAMGUI.py:726 +#: flatcamGUI/FlatCAMGUI.py:1928 flatcamGUI/FlatCAMGUI.py:1955 msgid "Transformations" msgstr "Transformations" -#: flatcamGUI/FlatCAMGUI.py:707 +#: flatcamGUI/FlatCAMGUI.py:702 msgid "Move Objects " msgstr "Move Objects " -#: flatcamGUI/FlatCAMGUI.py:711 flatcamGUI/FlatCAMGUI.py:1937 +#: flatcamGUI/FlatCAMGUI.py:706 flatcamGUI/FlatCAMGUI.py:1935 msgid "Add Pad" msgstr "Add Pad" -#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1939 +#: flatcamGUI/FlatCAMGUI.py:708 flatcamGUI/FlatCAMGUI.py:1937 msgid "Add Track" msgstr "Add Track" -#: flatcamGUI/FlatCAMGUI.py:714 flatcamGUI/FlatCAMGUI.py:1940 +#: flatcamGUI/FlatCAMGUI.py:709 flatcamGUI/FlatCAMGUI.py:1938 msgid "Add Region" msgstr "Add Region" -#: flatcamGUI/FlatCAMGUI.py:716 flatcamGUI/FlatCAMGUI.py:1942 +#: flatcamGUI/FlatCAMGUI.py:711 flatcamGUI/FlatCAMGUI.py:1940 msgid "Poligonize" msgstr "Poligonize" -#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1944 +#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1942 msgid "SemiDisc" msgstr "SemiDisc" -#: flatcamGUI/FlatCAMGUI.py:719 flatcamGUI/FlatCAMGUI.py:1945 +#: flatcamGUI/FlatCAMGUI.py:714 flatcamGUI/FlatCAMGUI.py:1943 msgid "Disc" msgstr "Disc" -#: flatcamGUI/FlatCAMGUI.py:733 flatcamGUI/FlatCAMGUI.py:1605 -#: flatcamGUI/FlatCAMGUI.py:1625 flatcamGUI/FlatCAMGUI.py:1959 +#: flatcamGUI/FlatCAMGUI.py:728 flatcamGUI/FlatCAMGUI.py:1602 +#: flatcamGUI/FlatCAMGUI.py:1622 flatcamGUI/FlatCAMGUI.py:1957 #: flatcamTools/ToolMove.py:26 msgid "Move" msgstr "Move" -#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1965 +#: flatcamGUI/FlatCAMGUI.py:734 flatcamGUI/FlatCAMGUI.py:1963 msgid "Snap to grid" msgstr "Snap to grid" -#: flatcamGUI/FlatCAMGUI.py:742 flatcamGUI/FlatCAMGUI.py:1968 +#: flatcamGUI/FlatCAMGUI.py:737 flatcamGUI/FlatCAMGUI.py:1966 msgid "Grid X snapping distance" msgstr "Grid X snapping distance" -#: flatcamGUI/FlatCAMGUI.py:747 flatcamGUI/FlatCAMGUI.py:1973 +#: flatcamGUI/FlatCAMGUI.py:742 flatcamGUI/FlatCAMGUI.py:1971 msgid "Grid Y snapping distance" msgstr "Grid Y snapping distance" -#: flatcamGUI/FlatCAMGUI.py:753 flatcamGUI/FlatCAMGUI.py:1979 +#: flatcamGUI/FlatCAMGUI.py:748 flatcamGUI/FlatCAMGUI.py:1977 msgid "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." @@ -4424,64 +4453,64 @@ msgstr "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." -#: flatcamGUI/FlatCAMGUI.py:759 flatcamGUI/FlatCAMGUI.py:1985 +#: flatcamGUI/FlatCAMGUI.py:754 flatcamGUI/FlatCAMGUI.py:1983 msgid "Snap to corner" msgstr "Snap to corner" -#: flatcamGUI/FlatCAMGUI.py:763 flatcamGUI/FlatCAMGUI.py:1989 -#: flatcamGUI/FlatCAMGUI.py:3346 +#: flatcamGUI/FlatCAMGUI.py:758 flatcamGUI/FlatCAMGUI.py:1987 +#: flatcamGUI/FlatCAMGUI.py:3344 msgid "Max. magnet distance" msgstr "Max. magnet distance" -#: flatcamGUI/FlatCAMGUI.py:791 flatcamGUI/FlatCAMGUI.py:1589 +#: flatcamGUI/FlatCAMGUI.py:786 flatcamGUI/FlatCAMGUI.py:1586 msgid "Project" msgstr "Project" -#: flatcamGUI/FlatCAMGUI.py:801 +#: flatcamGUI/FlatCAMGUI.py:796 msgid "Selected" msgstr "Selected" -#: flatcamGUI/FlatCAMGUI.py:820 flatcamGUI/FlatCAMGUI.py:828 +#: flatcamGUI/FlatCAMGUI.py:815 flatcamGUI/FlatCAMGUI.py:823 msgid "Plot Area" msgstr "Plot Area" -#: flatcamGUI/FlatCAMGUI.py:852 +#: flatcamGUI/FlatCAMGUI.py:847 msgid "General" msgstr "General" -#: flatcamGUI/FlatCAMGUI.py:861 +#: flatcamGUI/FlatCAMGUI.py:856 msgid "APP. DEFAULTS" msgstr "APP. DEFAULTS" -#: flatcamGUI/FlatCAMGUI.py:862 +#: flatcamGUI/FlatCAMGUI.py:857 msgid "PROJ. OPTIONS " msgstr "PROJ. OPTIONS " -#: flatcamGUI/FlatCAMGUI.py:873 +#: flatcamGUI/FlatCAMGUI.py:868 msgid "GERBER" msgstr "GERBER" -#: flatcamGUI/FlatCAMGUI.py:882 +#: flatcamGUI/FlatCAMGUI.py:877 msgid "EXCELLON" msgstr "EXCELLON" -#: flatcamGUI/FlatCAMGUI.py:891 +#: flatcamGUI/FlatCAMGUI.py:886 msgid "GEOMETRY" msgstr "GEOMETRY" -#: flatcamGUI/FlatCAMGUI.py:901 +#: flatcamGUI/FlatCAMGUI.py:896 msgid "CNC-JOB" msgstr "CNC-JOB" -#: flatcamGUI/FlatCAMGUI.py:910 +#: flatcamGUI/FlatCAMGUI.py:905 msgid "TOOLS" msgstr "TOOLS" -#: flatcamGUI/FlatCAMGUI.py:927 +#: flatcamGUI/FlatCAMGUI.py:922 msgid "Import Preferences" msgstr "Import Preferences" -#: flatcamGUI/FlatCAMGUI.py:930 +#: flatcamGUI/FlatCAMGUI.py:925 msgid "" "Import a full set of FlatCAM settings from a file\n" "previously saved on HDD.\n" @@ -4495,11 +4524,11 @@ msgstr "" "FlatCAM automatically save a 'factory_defaults' file\n" "on the first start. Do not delete that file." -#: flatcamGUI/FlatCAMGUI.py:937 +#: flatcamGUI/FlatCAMGUI.py:932 msgid "Export Preferences" msgstr "Export Preferences" -#: flatcamGUI/FlatCAMGUI.py:940 +#: flatcamGUI/FlatCAMGUI.py:935 msgid "" "Export a full set of FlatCAM settings in a file\n" "that is saved on HDD." @@ -4507,19 +4536,19 @@ msgstr "" "Export a full set of FlatCAM settings in a file\n" "that is saved on HDD." -#: flatcamGUI/FlatCAMGUI.py:945 +#: flatcamGUI/FlatCAMGUI.py:940 msgid "Open Pref Folder" msgstr "Open Pref Folder" -#: flatcamGUI/FlatCAMGUI.py:948 +#: flatcamGUI/FlatCAMGUI.py:943 msgid "Open the folder where FlatCAM save the preferences files." msgstr "Open the folder where FlatCAM save the preferences files." -#: flatcamGUI/FlatCAMGUI.py:956 +#: flatcamGUI/FlatCAMGUI.py:951 msgid "Save Preferences" msgstr "Save Preferences" -#: flatcamGUI/FlatCAMGUI.py:959 +#: flatcamGUI/FlatCAMGUI.py:954 msgid "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." @@ -4527,7 +4556,7 @@ msgstr "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." -#: flatcamGUI/FlatCAMGUI.py:985 +#: flatcamGUI/FlatCAMGUI.py:980 msgid "" "General Shortcut list
\n" " Editor Shortcut list
\n" "
\n" @@ -5719,99 +5748,100 @@ msgstr "" "
\n" " " -#: flatcamGUI/FlatCAMGUI.py:1582 -msgid "Disable" -msgstr "Disable" +#: flatcamGUI/FlatCAMGUI.py:1578 +#| msgid "Toggle Units\tQ" +msgid "Toggle Panel" +msgstr "Toggle Panel" -#: flatcamGUI/FlatCAMGUI.py:1584 +#: flatcamGUI/FlatCAMGUI.py:1581 msgid "New" msgstr "New" -#: flatcamGUI/FlatCAMGUI.py:1585 +#: flatcamGUI/FlatCAMGUI.py:1582 msgid "Geometry" msgstr "Geometry" -#: flatcamGUI/FlatCAMGUI.py:1587 +#: flatcamGUI/FlatCAMGUI.py:1584 msgid "Excellon" msgstr "Excellon" -#: flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1589 msgid "Grids" msgstr "Grids" -#: flatcamGUI/FlatCAMGUI.py:1594 +#: flatcamGUI/FlatCAMGUI.py:1591 msgid "View" msgstr "View" -#: flatcamGUI/FlatCAMGUI.py:1596 +#: flatcamGUI/FlatCAMGUI.py:1593 msgid "Clear Plot" msgstr "Clear Plot" -#: flatcamGUI/FlatCAMGUI.py:1597 +#: flatcamGUI/FlatCAMGUI.py:1594 msgid "Replot" msgstr "Replot" -#: flatcamGUI/FlatCAMGUI.py:1600 +#: flatcamGUI/FlatCAMGUI.py:1597 msgid "Geo Editor" msgstr "Geo Editor" -#: flatcamGUI/FlatCAMGUI.py:1601 +#: flatcamGUI/FlatCAMGUI.py:1598 msgid "Line" msgstr "Line" -#: flatcamGUI/FlatCAMGUI.py:1602 +#: flatcamGUI/FlatCAMGUI.py:1599 msgid "Rectangle" msgstr "Rectangle" -#: flatcamGUI/FlatCAMGUI.py:1603 +#: flatcamGUI/FlatCAMGUI.py:1600 msgid "Cut" msgstr "Cut" -#: flatcamGUI/FlatCAMGUI.py:1608 +#: flatcamGUI/FlatCAMGUI.py:1605 msgid "Pad" msgstr "Pad" -#: flatcamGUI/FlatCAMGUI.py:1609 +#: flatcamGUI/FlatCAMGUI.py:1606 msgid "Pad Array" msgstr "Pad Array" -#: flatcamGUI/FlatCAMGUI.py:1610 +#: flatcamGUI/FlatCAMGUI.py:1607 msgid "Track" msgstr "Track" -#: flatcamGUI/FlatCAMGUI.py:1611 +#: flatcamGUI/FlatCAMGUI.py:1608 msgid "Region" msgstr "Region" -#: flatcamGUI/FlatCAMGUI.py:1613 +#: flatcamGUI/FlatCAMGUI.py:1610 msgid "Exc Editor" msgstr "Exc Editor" -#: flatcamGUI/FlatCAMGUI.py:1614 +#: flatcamGUI/FlatCAMGUI.py:1611 msgid "Add Drill" msgstr "Add Drill" -#: flatcamGUI/FlatCAMGUI.py:1646 +#: flatcamGUI/FlatCAMGUI.py:1643 msgid "Print Preview" msgstr "Print Preview" -#: flatcamGUI/FlatCAMGUI.py:1647 +#: flatcamGUI/FlatCAMGUI.py:1644 msgid "Print Code" msgstr "Print Code" -#: flatcamGUI/FlatCAMGUI.py:1648 +#: flatcamGUI/FlatCAMGUI.py:1645 msgid "Find in Code" msgstr "Find in Code" -#: flatcamGUI/FlatCAMGUI.py:1653 +#: flatcamGUI/FlatCAMGUI.py:1650 msgid "Replace With" msgstr "Replace With" -#: flatcamGUI/FlatCAMGUI.py:1657 +#: flatcamGUI/FlatCAMGUI.py:1654 msgid "All" msgstr "All" -#: flatcamGUI/FlatCAMGUI.py:1659 +#: flatcamGUI/FlatCAMGUI.py:1656 msgid "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." @@ -5819,15 +5849,15 @@ msgstr "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." -#: flatcamGUI/FlatCAMGUI.py:1662 +#: flatcamGUI/FlatCAMGUI.py:1659 msgid "Open Code" msgstr "Open Code" -#: flatcamGUI/FlatCAMGUI.py:1663 +#: flatcamGUI/FlatCAMGUI.py:1660 msgid "Save Code" msgstr "Save Code" -#: flatcamGUI/FlatCAMGUI.py:1698 +#: flatcamGUI/FlatCAMGUI.py:1695 msgid "" "Relative neasurement.\n" "Reference is last click position" @@ -5835,7 +5865,7 @@ msgstr "" "Relative neasurement.\n" "Reference is last click position" -#: flatcamGUI/FlatCAMGUI.py:1704 +#: flatcamGUI/FlatCAMGUI.py:1701 msgid "" "Absolute neasurement.\n" "Reference is (X=0, Y= 0) position" @@ -5843,23 +5873,23 @@ msgstr "" "Absolute neasurement.\n" "Reference is (X=0, Y= 0) position" -#: flatcamGUI/FlatCAMGUI.py:1899 +#: flatcamGUI/FlatCAMGUI.py:1897 msgid "Select 'Esc'" msgstr "Select 'Esc'" -#: flatcamGUI/FlatCAMGUI.py:1926 +#: flatcamGUI/FlatCAMGUI.py:1924 msgid "Copy Objects" msgstr "Copy Objects" -#: flatcamGUI/FlatCAMGUI.py:1928 +#: flatcamGUI/FlatCAMGUI.py:1926 msgid "Delete Shape" msgstr "Delete Shape" -#: flatcamGUI/FlatCAMGUI.py:1933 +#: flatcamGUI/FlatCAMGUI.py:1931 msgid "Move Objects" msgstr "Move Objects" -#: flatcamGUI/FlatCAMGUI.py:2365 +#: flatcamGUI/FlatCAMGUI.py:2360 msgid "" "Please first select a geometry item to be cutted\n" "then select the geometry item that will be cutted\n" @@ -5871,17 +5901,17 @@ msgstr "" "out of the first item. In the end press ~X~ key or\n" "the toolbar button." -#: flatcamGUI/FlatCAMGUI.py:2372 flatcamGUI/FlatCAMGUI.py:2509 -#: flatcamGUI/FlatCAMGUI.py:2568 flatcamGUI/FlatCAMGUI.py:2588 +#: flatcamGUI/FlatCAMGUI.py:2367 flatcamGUI/FlatCAMGUI.py:2504 +#: flatcamGUI/FlatCAMGUI.py:2563 flatcamGUI/FlatCAMGUI.py:2583 msgid "Warning" msgstr "Warning" -#: flatcamGUI/FlatCAMGUI.py:2439 flatcamGUI/FlatCAMGUI.py:2638 -#: flatcamGUI/FlatCAMGUI.py:2849 +#: flatcamGUI/FlatCAMGUI.py:2434 flatcamGUI/FlatCAMGUI.py:2633 +#: flatcamGUI/FlatCAMGUI.py:2844 msgid "[WARNING_NOTCL] Cancelled." msgstr "[WARNING_NOTCL] Cancelled." -#: flatcamGUI/FlatCAMGUI.py:2504 +#: flatcamGUI/FlatCAMGUI.py:2499 msgid "" "Please select geometry items \n" "on which to perform Intersection Tool." @@ -5889,7 +5919,7 @@ msgstr "" "Please select geometry items \n" "on which to perform Intersection Tool." -#: flatcamGUI/FlatCAMGUI.py:2563 +#: flatcamGUI/FlatCAMGUI.py:2558 msgid "" "Please select geometry items \n" "on which to perform Substraction Tool." @@ -5897,7 +5927,7 @@ msgstr "" "Please select geometry items \n" "on which to perform Substraction Tool." -#: flatcamGUI/FlatCAMGUI.py:2583 +#: flatcamGUI/FlatCAMGUI.py:2578 msgid "" "Please select geometry items \n" "on which to perform union." @@ -5905,55 +5935,55 @@ msgstr "" "Please select geometry items \n" "on which to perform union." -#: flatcamGUI/FlatCAMGUI.py:2654 flatcamGUI/FlatCAMGUI.py:2866 +#: flatcamGUI/FlatCAMGUI.py:2649 flatcamGUI/FlatCAMGUI.py:2861 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to delete." msgstr "[WARNING_NOTCL] Cancelled. Nothing selected to delete." -#: flatcamGUI/FlatCAMGUI.py:2738 flatcamGUI/FlatCAMGUI.py:2933 +#: flatcamGUI/FlatCAMGUI.py:2733 flatcamGUI/FlatCAMGUI.py:2928 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to copy." msgstr "[WARNING_NOTCL] Cancelled. Nothing selected to copy." -#: flatcamGUI/FlatCAMGUI.py:2784 flatcamGUI/FlatCAMGUI.py:2979 +#: flatcamGUI/FlatCAMGUI.py:2779 flatcamGUI/FlatCAMGUI.py:2974 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to move." msgstr "[WARNING_NOTCL] Cancelled. Nothing selected to move." -#: flatcamGUI/FlatCAMGUI.py:2993 +#: flatcamGUI/FlatCAMGUI.py:2988 msgid "New Tool ..." msgstr "New Tool ..." -#: flatcamGUI/FlatCAMGUI.py:2994 +#: flatcamGUI/FlatCAMGUI.py:2989 msgid "Enter a Tool Diameter:" msgstr "Enter a Tool Diameter:" -#: flatcamGUI/FlatCAMGUI.py:3036 +#: flatcamGUI/FlatCAMGUI.py:3032 msgid "Measurement Tool exit..." msgstr "Measurement Tool exit..." -#: flatcamGUI/FlatCAMGUI.py:3331 +#: flatcamGUI/FlatCAMGUI.py:3329 msgid "Grid X value:" msgstr "Grid X value:" -#: flatcamGUI/FlatCAMGUI.py:3333 +#: flatcamGUI/FlatCAMGUI.py:3331 msgid "This is the Grid snap value on X axis." msgstr "This is the Grid snap value on X axis." -#: flatcamGUI/FlatCAMGUI.py:3338 +#: flatcamGUI/FlatCAMGUI.py:3336 msgid "Grid Y value:" msgstr "Grid Y value:" -#: flatcamGUI/FlatCAMGUI.py:3340 +#: flatcamGUI/FlatCAMGUI.py:3338 msgid "This is the Grid snap value on Y axis." msgstr "This is the Grid snap value on Y axis." -#: flatcamGUI/FlatCAMGUI.py:3345 +#: flatcamGUI/FlatCAMGUI.py:3343 msgid "Snap Max:" msgstr "Snap Max:" -#: flatcamGUI/FlatCAMGUI.py:3350 +#: flatcamGUI/FlatCAMGUI.py:3348 msgid "Workspace:" msgstr "Workspace:" -#: flatcamGUI/FlatCAMGUI.py:3352 +#: flatcamGUI/FlatCAMGUI.py:3350 msgid "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." @@ -5961,11 +5991,11 @@ msgstr "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." -#: flatcamGUI/FlatCAMGUI.py:3355 +#: flatcamGUI/FlatCAMGUI.py:3353 msgid "Wk. format:" msgstr "Wk. format:" -#: flatcamGUI/FlatCAMGUI.py:3357 +#: flatcamGUI/FlatCAMGUI.py:3355 msgid "" "Select the type of rectangle to be used on canvas,\n" "as valid workspace." @@ -5973,11 +6003,11 @@ msgstr "" "Select the type of rectangle to be used on canvas,\n" "as valid workspace." -#: flatcamGUI/FlatCAMGUI.py:3370 +#: flatcamGUI/FlatCAMGUI.py:3368 msgid "Plot Fill:" msgstr "Plot Fill:" -#: flatcamGUI/FlatCAMGUI.py:3372 +#: flatcamGUI/FlatCAMGUI.py:3370 msgid "" "Set the fill color for plotted objects.\n" "First 6 digits are the color and the last 2\n" @@ -5987,28 +6017,28 @@ msgstr "" "First 6 digits are the color and the last 2\n" "digits are for alpha (transparency) level." -#: flatcamGUI/FlatCAMGUI.py:3386 flatcamGUI/FlatCAMGUI.py:3436 -#: flatcamGUI/FlatCAMGUI.py:3486 +#: flatcamGUI/FlatCAMGUI.py:3384 flatcamGUI/FlatCAMGUI.py:3434 +#: flatcamGUI/FlatCAMGUI.py:3484 msgid "Alpha Level:" msgstr "Alpha Level:" -#: flatcamGUI/FlatCAMGUI.py:3388 +#: flatcamGUI/FlatCAMGUI.py:3386 msgid "Set the fill transparency for plotted objects." msgstr "Set the fill transparency for plotted objects." -#: flatcamGUI/FlatCAMGUI.py:3405 +#: flatcamGUI/FlatCAMGUI.py:3403 msgid "Plot Line:" msgstr "Plot Line:" -#: flatcamGUI/FlatCAMGUI.py:3407 +#: flatcamGUI/FlatCAMGUI.py:3405 msgid "Set the line color for plotted objects." msgstr "Set the line color for plotted objects." -#: flatcamGUI/FlatCAMGUI.py:3419 +#: flatcamGUI/FlatCAMGUI.py:3417 msgid "Sel. Fill:" msgstr "Sel. Fill:" -#: flatcamGUI/FlatCAMGUI.py:3421 +#: flatcamGUI/FlatCAMGUI.py:3419 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from left to right.\n" @@ -6020,23 +6050,23 @@ msgstr "" "First 6 digits are the color and the last 2\n" "digits are for alpha (transparency) level." -#: flatcamGUI/FlatCAMGUI.py:3438 +#: flatcamGUI/FlatCAMGUI.py:3436 msgid "Set the fill transparency for the 'left to right' selection box." msgstr "Set the fill transparency for the 'left to right' selection box." -#: flatcamGUI/FlatCAMGUI.py:3455 +#: flatcamGUI/FlatCAMGUI.py:3453 msgid "Sel. Line:" msgstr "Sel. Line:" -#: flatcamGUI/FlatCAMGUI.py:3457 +#: flatcamGUI/FlatCAMGUI.py:3455 msgid "Set the line color for the 'left to right' selection box." msgstr "Set the line color for the 'left to right' selection box." -#: flatcamGUI/FlatCAMGUI.py:3469 +#: flatcamGUI/FlatCAMGUI.py:3467 msgid "Sel2. Fill:" msgstr "Sel2. Fill:" -#: flatcamGUI/FlatCAMGUI.py:3471 +#: flatcamGUI/FlatCAMGUI.py:3469 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from right to left.\n" @@ -6048,47 +6078,47 @@ msgstr "" "First 6 digits are the color and the last 2\n" "digits are for alpha (transparency) level." -#: flatcamGUI/FlatCAMGUI.py:3488 +#: flatcamGUI/FlatCAMGUI.py:3486 msgid "Set the fill transparency for selection 'right to left' box." msgstr "Set the fill transparency for selection 'right to left' box." -#: flatcamGUI/FlatCAMGUI.py:3505 +#: flatcamGUI/FlatCAMGUI.py:3503 msgid "Sel2. Line:" msgstr "Sel2. Line:" -#: flatcamGUI/FlatCAMGUI.py:3507 +#: flatcamGUI/FlatCAMGUI.py:3505 msgid "Set the line color for the 'right to left' selection box." msgstr "Set the line color for the 'right to left' selection box." -#: flatcamGUI/FlatCAMGUI.py:3519 +#: flatcamGUI/FlatCAMGUI.py:3517 msgid "Editor Draw:" msgstr "Editor Draw:" -#: flatcamGUI/FlatCAMGUI.py:3521 +#: flatcamGUI/FlatCAMGUI.py:3519 msgid "Set the color for the shape." msgstr "Set the color for the shape." -#: flatcamGUI/FlatCAMGUI.py:3533 +#: flatcamGUI/FlatCAMGUI.py:3531 msgid "Editor Draw Sel.:" msgstr "Editor Draw Sel.:" -#: flatcamGUI/FlatCAMGUI.py:3535 +#: flatcamGUI/FlatCAMGUI.py:3533 msgid "Set the color of the shape when selected." msgstr "Set the color of the shape when selected." -#: flatcamGUI/FlatCAMGUI.py:3547 +#: flatcamGUI/FlatCAMGUI.py:3545 msgid "Project Items:" msgstr "Project Items:" -#: flatcamGUI/FlatCAMGUI.py:3549 +#: flatcamGUI/FlatCAMGUI.py:3547 msgid "Set the color of the items in Project Tab Tree." msgstr "Set the color of the items in Project Tab Tree." -#: flatcamGUI/FlatCAMGUI.py:3560 +#: flatcamGUI/FlatCAMGUI.py:3558 msgid "Proj. Dis. Items:" msgstr "Proj. Dis. Items:" -#: flatcamGUI/FlatCAMGUI.py:3562 +#: flatcamGUI/FlatCAMGUI.py:3560 msgid "" "Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled." @@ -6096,15 +6126,15 @@ msgstr "" "Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled." -#: flatcamGUI/FlatCAMGUI.py:3613 +#: flatcamGUI/FlatCAMGUI.py:3611 msgid "GUI Settings" msgstr "GUI Settings" -#: flatcamGUI/FlatCAMGUI.py:3620 +#: flatcamGUI/FlatCAMGUI.py:3617 msgid "Layout:" msgstr "Layout:" -#: flatcamGUI/FlatCAMGUI.py:3622 +#: flatcamGUI/FlatCAMGUI.py:3619 msgid "" "Select an layout for FlatCAM.\n" "It is applied immediately." @@ -6112,11 +6142,11 @@ msgstr "" "Select an layout for FlatCAM.\n" "It is applied immediately." -#: flatcamGUI/FlatCAMGUI.py:3638 +#: flatcamGUI/FlatCAMGUI.py:3635 msgid "Style:" msgstr "Style:" -#: flatcamGUI/FlatCAMGUI.py:3640 +#: flatcamGUI/FlatCAMGUI.py:3637 msgid "" "Select an style for FlatCAM.\n" "It will be applied at the next app start." @@ -6124,11 +6154,11 @@ msgstr "" "Select an style for FlatCAM.\n" "It will be applied at the next app start." -#: flatcamGUI/FlatCAMGUI.py:3651 +#: flatcamGUI/FlatCAMGUI.py:3648 msgid "HDPI Support:" msgstr "HDPI Support:" -#: flatcamGUI/FlatCAMGUI.py:3653 +#: flatcamGUI/FlatCAMGUI.py:3650 msgid "" "Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start." @@ -6136,11 +6166,11 @@ msgstr "" "Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start." -#: flatcamGUI/FlatCAMGUI.py:3666 +#: flatcamGUI/FlatCAMGUI.py:3663 msgid "Clear GUI Settings:" msgstr "Clear GUI Settings:" -#: flatcamGUI/FlatCAMGUI.py:3668 +#: flatcamGUI/FlatCAMGUI.py:3665 msgid "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." @@ -6148,15 +6178,15 @@ msgstr "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." -#: flatcamGUI/FlatCAMGUI.py:3671 +#: flatcamGUI/FlatCAMGUI.py:3668 msgid "Clear" msgstr "Clear" -#: flatcamGUI/FlatCAMGUI.py:3675 +#: flatcamGUI/FlatCAMGUI.py:3672 msgid "Hover Shape:" msgstr "Hover Shape:" -#: flatcamGUI/FlatCAMGUI.py:3677 +#: flatcamGUI/FlatCAMGUI.py:3674 msgid "" "Enable display of a hover shape for FlatCAM objects.\n" "It is displayed whenever the mouse cursor is hovering\n" @@ -6166,11 +6196,11 @@ msgstr "" "It is displayed whenever the mouse cursor is hovering\n" "over any kind of not-selected object." -#: flatcamGUI/FlatCAMGUI.py:3684 +#: flatcamGUI/FlatCAMGUI.py:3681 msgid "Sel. Shape:" msgstr "Sel. Shape:" -#: flatcamGUI/FlatCAMGUI.py:3686 +#: flatcamGUI/FlatCAMGUI.py:3683 msgid "" "Enable the display of a selection shape for FlatCAM objects.\n" "It is displayed whenever the mouse selects an object\n" @@ -6182,23 +6212,23 @@ msgstr "" "either by clicking or dragging mouse from left to right or\n" "right to left." -#: flatcamGUI/FlatCAMGUI.py:3728 +#: flatcamGUI/FlatCAMGUI.py:3725 msgid "Are you sure you want to delete the GUI Settings? \n" msgstr "Are you sure you want to delete the GUI Settings? \n" -#: flatcamGUI/FlatCAMGUI.py:3731 +#: flatcamGUI/FlatCAMGUI.py:3728 msgid "Clear GUI Settings" msgstr "Clear GUI Settings" -#: flatcamGUI/FlatCAMGUI.py:3752 +#: flatcamGUI/FlatCAMGUI.py:3749 msgid "App Preferences" msgstr "App Preferences" -#: flatcamGUI/FlatCAMGUI.py:3758 +#: flatcamGUI/FlatCAMGUI.py:3755 msgid "Units:" msgstr "Units:" -#: flatcamGUI/FlatCAMGUI.py:3759 +#: flatcamGUI/FlatCAMGUI.py:3756 msgid "" "The default value for FlatCAM units.\n" "Whatever is selected here is set every time\n" @@ -6208,11 +6238,11 @@ msgstr "" "Whatever is selected here is set every time\n" "FLatCAM is started." -#: flatcamGUI/FlatCAMGUI.py:3766 +#: flatcamGUI/FlatCAMGUI.py:3763 msgid "APP. LEVEL:" msgstr "APP. LEVEL:" -#: flatcamGUI/FlatCAMGUI.py:3767 +#: flatcamGUI/FlatCAMGUI.py:3764 msgid "" "Choose the default level of usage for FlatCAM.\n" "BASIC level -> reduced functionality, best for beginner's.\n" @@ -6228,19 +6258,19 @@ msgstr "" "The choice here will influence the parameters in\n" "the Selected Tab for all kinds of FlatCAM objects." -#: flatcamGUI/FlatCAMGUI.py:3776 +#: flatcamGUI/FlatCAMGUI.py:3773 msgid "Languages:" msgstr "Languages:" -#: flatcamGUI/FlatCAMGUI.py:3777 +#: flatcamGUI/FlatCAMGUI.py:3774 msgid "Set the language used throughout FlatCAM." msgstr "Set the language used throughout FlatCAM." -#: flatcamGUI/FlatCAMGUI.py:3780 +#: flatcamGUI/FlatCAMGUI.py:3777 msgid "Apply Language" msgstr "Apply Language" -#: flatcamGUI/FlatCAMGUI.py:3781 +#: flatcamGUI/FlatCAMGUI.py:3778 msgid "" "Set the language used throughout FlatCAM.\n" "The app will restart after click.Windows: When FlatCAM is installed in " @@ -6258,11 +6288,11 @@ msgstr "" "security features. In this case the language will be\n" "applied at the next app start." -#: flatcamGUI/FlatCAMGUI.py:3790 +#: flatcamGUI/FlatCAMGUI.py:3787 msgid "Shell at StartUp:" msgstr "Shell at StartUp:" -#: flatcamGUI/FlatCAMGUI.py:3792 flatcamGUI/FlatCAMGUI.py:3797 +#: flatcamGUI/FlatCAMGUI.py:3789 flatcamGUI/FlatCAMGUI.py:3794 msgid "" "Check this box if you want the shell to\n" "start automatically at startup." @@ -6270,11 +6300,11 @@ msgstr "" "Check this box if you want the shell to\n" "start automatically at startup." -#: flatcamGUI/FlatCAMGUI.py:3802 +#: flatcamGUI/FlatCAMGUI.py:3799 msgid "Version Check:" msgstr "Version Check:" -#: flatcamGUI/FlatCAMGUI.py:3804 flatcamGUI/FlatCAMGUI.py:3809 +#: flatcamGUI/FlatCAMGUI.py:3801 flatcamGUI/FlatCAMGUI.py:3806 msgid "" "Check this box if you want to check\n" "for a new version automatically at startup." @@ -6282,11 +6312,11 @@ msgstr "" "Check this box if you want to check\n" "for a new version automatically at startup." -#: flatcamGUI/FlatCAMGUI.py:3814 +#: flatcamGUI/FlatCAMGUI.py:3811 msgid "Send Stats:" msgstr "Send Stats:" -#: flatcamGUI/FlatCAMGUI.py:3816 flatcamGUI/FlatCAMGUI.py:3821 +#: flatcamGUI/FlatCAMGUI.py:3813 flatcamGUI/FlatCAMGUI.py:3818 msgid "" "Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM." @@ -6294,11 +6324,11 @@ msgstr "" "Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM." -#: flatcamGUI/FlatCAMGUI.py:3828 +#: flatcamGUI/FlatCAMGUI.py:3825 msgid "Pan Button:" msgstr "Pan Button:" -#: flatcamGUI/FlatCAMGUI.py:3829 +#: flatcamGUI/FlatCAMGUI.py:3826 msgid "" "Select the mouse button to use for panning:\n" "- MMB --> Middle Mouse Button\n" @@ -6308,19 +6338,19 @@ msgstr "" "- MMB --> Middle Mouse Button\n" "- RMB --> Right Mouse Button" -#: flatcamGUI/FlatCAMGUI.py:3836 +#: flatcamGUI/FlatCAMGUI.py:3833 msgid "Multiple Sel:" msgstr "Multiple Sel:" -#: flatcamGUI/FlatCAMGUI.py:3837 +#: flatcamGUI/FlatCAMGUI.py:3834 msgid "Select the key used for multiple selection." msgstr "Select the key used for multiple selection." -#: flatcamGUI/FlatCAMGUI.py:3842 +#: flatcamGUI/FlatCAMGUI.py:3839 msgid "Project at StartUp:" msgstr "Project at StartUp:" -#: flatcamGUI/FlatCAMGUI.py:3844 flatcamGUI/FlatCAMGUI.py:3849 +#: flatcamGUI/FlatCAMGUI.py:3841 flatcamGUI/FlatCAMGUI.py:3846 msgid "" "Check this box if you want the project/selected/tool tab area to\n" "to be shown automatically at startup." @@ -6328,11 +6358,11 @@ msgstr "" "Check this box if you want the project/selected/tool tab area to\n" "to be shown automatically at startup." -#: flatcamGUI/FlatCAMGUI.py:3854 +#: flatcamGUI/FlatCAMGUI.py:3851 msgid "Project AutoHide:" msgstr "Project AutoHide:" -#: flatcamGUI/FlatCAMGUI.py:3856 flatcamGUI/FlatCAMGUI.py:3862 +#: flatcamGUI/FlatCAMGUI.py:3853 flatcamGUI/FlatCAMGUI.py:3859 msgid "" "Check this box if you want the project/selected/tool tab area to\n" "hide automatically when there are no objects loaded and\n" @@ -6342,11 +6372,11 @@ msgstr "" "hide automatically when there are no objects loaded and\n" "to show whenever a new object is created." -#: flatcamGUI/FlatCAMGUI.py:3868 +#: flatcamGUI/FlatCAMGUI.py:3865 msgid "Enable ToolTips:" msgstr "Enable ToolTips:" -#: flatcamGUI/FlatCAMGUI.py:3870 flatcamGUI/FlatCAMGUI.py:3875 +#: flatcamGUI/FlatCAMGUI.py:3867 flatcamGUI/FlatCAMGUI.py:3872 msgid "" "Check this box if you want to have toolTips displayed\n" "when hovering with mouse over items throughout the App." @@ -6354,11 +6384,11 @@ msgstr "" "Check this box if you want to have toolTips displayed\n" "when hovering with mouse over items throughout the App." -#: flatcamGUI/FlatCAMGUI.py:3878 +#: flatcamGUI/FlatCAMGUI.py:3875 msgid "Workers number:" msgstr "Workers number:" -#: flatcamGUI/FlatCAMGUI.py:3880 flatcamGUI/FlatCAMGUI.py:3889 +#: flatcamGUI/FlatCAMGUI.py:3877 flatcamGUI/FlatCAMGUI.py:3886 msgid "" "The number of Qthreads made available to the App.\n" "A bigger number may finish the jobs more quickly but\n" @@ -6374,7 +6404,7 @@ msgstr "" "Default value is 2.\n" "After change, it will be applied at next App start." -#: flatcamGUI/FlatCAMGUI.py:3901 flatcamGUI/FlatCAMGUI.py:3910 +#: flatcamGUI/FlatCAMGUI.py:3898 flatcamGUI/FlatCAMGUI.py:3907 msgid "" "This value can counter the effect of the Circle Steps\n" "parameter. Default value is 0.01.\n" @@ -6390,11 +6420,11 @@ msgstr "" "performance. Higher value will provide more\n" "performance at the expense of level of detail." -#: flatcamGUI/FlatCAMGUI.py:3946 +#: flatcamGUI/FlatCAMGUI.py:3943 msgid "\"Open\" behavior" msgstr "\"Open\" behavior" -#: flatcamGUI/FlatCAMGUI.py:3948 +#: flatcamGUI/FlatCAMGUI.py:3945 msgid "" "When checked the path for the last saved file is used when saving files,\n" "and the path for the last opened file is used when opening files.\n" @@ -6408,11 +6438,11 @@ msgstr "" "When unchecked the path for opening files is the one used last: either the\n" "path for saving files or the path for opening files." -#: flatcamGUI/FlatCAMGUI.py:3957 +#: flatcamGUI/FlatCAMGUI.py:3954 msgid "Save Compressed Project" msgstr "Save Compressed Project" -#: flatcamGUI/FlatCAMGUI.py:3959 +#: flatcamGUI/FlatCAMGUI.py:3956 msgid "" "Whether to save a compressed or uncompressed project.\n" "When checked it will save a compressed FlatCAM project." @@ -6420,11 +6450,11 @@ msgstr "" "Whether to save a compressed or uncompressed project.\n" "When checked it will save a compressed FlatCAM project." -#: flatcamGUI/FlatCAMGUI.py:3970 +#: flatcamGUI/FlatCAMGUI.py:3967 msgid "Compression Level:" msgstr "Compression Level:" -#: flatcamGUI/FlatCAMGUI.py:3972 +#: flatcamGUI/FlatCAMGUI.py:3969 msgid "" "The level of compression used when saving\n" "a FlatCAM project. Higher value means better compression\n" @@ -6434,47 +6464,47 @@ msgstr "" "a FlatCAM project. Higher value means better compression\n" "but require more RAM usage and more processing time." -#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4367 -#: flatcamGUI/FlatCAMGUI.py:5037 flatcamGUI/FlatCAMGUI.py:5409 +#: flatcamGUI/FlatCAMGUI.py:3995 flatcamGUI/FlatCAMGUI.py:4361 +#: flatcamGUI/FlatCAMGUI.py:5153 flatcamGUI/FlatCAMGUI.py:5525 #: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:505 #: flatcamGUI/ObjectUI.py:833 flatcamGUI/ObjectUI.py:1350 msgid "Plot Options:" msgstr "Plot Options:" -#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/FlatCAMGUI.py:4379 +#: flatcamGUI/FlatCAMGUI.py:4002 flatcamGUI/FlatCAMGUI.py:4373 #: flatcamGUI/ObjectUI.py:156 flatcamGUI/ObjectUI.py:506 msgid "Solid" msgstr "Solid" -#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:158 +#: flatcamGUI/FlatCAMGUI.py:4004 flatcamGUI/ObjectUI.py:158 msgid "Solid color polygons." msgstr "Solid color polygons." -#: flatcamGUI/FlatCAMGUI.py:4012 flatcamGUI/ObjectUI.py:164 +#: flatcamGUI/FlatCAMGUI.py:4009 flatcamGUI/ObjectUI.py:164 msgid "M-Color" msgstr "M-Color" -#: flatcamGUI/FlatCAMGUI.py:4014 flatcamGUI/ObjectUI.py:166 +#: flatcamGUI/FlatCAMGUI.py:4011 flatcamGUI/ObjectUI.py:166 msgid "Draw polygons in different colors." msgstr "Draw polygons in different colors." -#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:4373 -#: flatcamGUI/FlatCAMGUI.py:5041 flatcamGUI/ObjectUI.py:172 +#: flatcamGUI/FlatCAMGUI.py:4016 flatcamGUI/FlatCAMGUI.py:4367 +#: flatcamGUI/FlatCAMGUI.py:5157 flatcamGUI/ObjectUI.py:172 msgid "Plot" msgstr "Plot" -#: flatcamGUI/FlatCAMGUI.py:4021 flatcamGUI/FlatCAMGUI.py:5043 +#: flatcamGUI/FlatCAMGUI.py:4018 flatcamGUI/FlatCAMGUI.py:5159 #: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:546 -#: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1437 +#: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1450 msgid "Plot (show) this object." msgstr "Plot (show) this object." -#: flatcamGUI/FlatCAMGUI.py:4026 flatcamGUI/FlatCAMGUI.py:5050 -#: flatcamGUI/FlatCAMGUI.py:5445 +#: flatcamGUI/FlatCAMGUI.py:4023 flatcamGUI/FlatCAMGUI.py:5166 +#: flatcamGUI/FlatCAMGUI.py:5608 msgid "Circle Steps:" msgstr "Circle Steps:" -#: flatcamGUI/FlatCAMGUI.py:4028 +#: flatcamGUI/FlatCAMGUI.py:4025 msgid "" "The number of circle steps for Gerber \n" "circular aperture linear approximation." @@ -6482,15 +6512,15 @@ msgstr "" "The number of circle steps for Gerber \n" "circular aperture linear approximation." -#: flatcamGUI/FlatCAMGUI.py:4043 +#: flatcamGUI/FlatCAMGUI.py:4040 msgid "Gerber Options" msgstr "Gerber Options" -#: flatcamGUI/FlatCAMGUI.py:4047 flatcamGUI/ObjectUI.py:251 +#: flatcamGUI/FlatCAMGUI.py:4043 flatcamGUI/ObjectUI.py:251 msgid "Isolation Routing:" msgstr "Isolation Routing:" -#: flatcamGUI/FlatCAMGUI.py:4049 flatcamGUI/ObjectUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:4045 flatcamGUI/ObjectUI.py:253 msgid "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." @@ -6498,17 +6528,17 @@ msgstr "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." -#: flatcamGUI/FlatCAMGUI.py:4060 flatcamGUI/FlatCAMGUI.py:4760 -#: flatcamGUI/FlatCAMGUI.py:5733 flatcamGUI/ObjectUI.py:788 +#: flatcamGUI/FlatCAMGUI.py:4056 flatcamGUI/FlatCAMGUI.py:4753 +#: flatcamGUI/FlatCAMGUI.py:5897 flatcamGUI/ObjectUI.py:788 #: flatcamGUI/ObjectUI.py:804 msgid "Diameter of the cutting tool." msgstr "Diameter of the cutting tool." -#: flatcamGUI/FlatCAMGUI.py:4067 +#: flatcamGUI/FlatCAMGUI.py:4063 msgid "Width (# passes):" msgstr "Width (# passes):" -#: flatcamGUI/FlatCAMGUI.py:4069 flatcamGUI/ObjectUI.py:275 +#: flatcamGUI/FlatCAMGUI.py:4065 flatcamGUI/ObjectUI.py:275 msgid "" "Width of the isolation gap in\n" "number (integer) of tool widths." @@ -6516,11 +6546,11 @@ msgstr "" "Width of the isolation gap in\n" "number (integer) of tool widths." -#: flatcamGUI/FlatCAMGUI.py:4077 flatcamGUI/ObjectUI.py:283 +#: flatcamGUI/FlatCAMGUI.py:4073 flatcamGUI/ObjectUI.py:283 msgid "Pass overlap:" msgstr "Pass overlap:" -#: flatcamGUI/FlatCAMGUI.py:4079 flatcamGUI/ObjectUI.py:285 +#: flatcamGUI/FlatCAMGUI.py:4075 flatcamGUI/ObjectUI.py:285 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -6533,11 +6563,11 @@ msgstr "" "A value here of 0.25 means an overlap of 25%% from the tool diameter found " "above." -#: flatcamGUI/FlatCAMGUI.py:4087 flatcamGUI/ObjectUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:4083 flatcamGUI/ObjectUI.py:295 msgid "Milling Type:" msgstr "Milling Type:" -#: flatcamGUI/FlatCAMGUI.py:4089 flatcamGUI/ObjectUI.py:297 +#: flatcamGUI/FlatCAMGUI.py:4085 flatcamGUI/ObjectUI.py:297 msgid "" "Milling type:\n" "- climb / best for precision milling and to reduce tool usage\n" @@ -6547,19 +6577,19 @@ msgstr "" "- climb / best for precision milling and to reduce tool usage\n" "- conventional / useful when there is no backlash compensation" -#: flatcamGUI/FlatCAMGUI.py:4099 +#: flatcamGUI/FlatCAMGUI.py:4095 msgid "Combine Passes" msgstr "Combine Passes" -#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/ObjectUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:4097 flatcamGUI/ObjectUI.py:309 msgid "Combine all passes into one object" msgstr "Combine all passes into one object" -#: flatcamGUI/FlatCAMGUI.py:4106 +#: flatcamGUI/FlatCAMGUI.py:4102 msgid "Clear non-copper:" msgstr "Clear non-copper:" -#: flatcamGUI/FlatCAMGUI.py:4108 flatcamGUI/FlatCAMGUI.py:5621 +#: flatcamGUI/FlatCAMGUI.py:4104 flatcamGUI/FlatCAMGUI.py:5785 #: flatcamGUI/ObjectUI.py:386 msgid "" "Create a Geometry object with\n" @@ -6568,12 +6598,12 @@ msgstr "" "Create a Geometry object with\n" "toolpaths to cut all non-copper regions." -#: flatcamGUI/FlatCAMGUI.py:4117 flatcamGUI/FlatCAMGUI.py:4143 +#: flatcamGUI/FlatCAMGUI.py:4113 flatcamGUI/FlatCAMGUI.py:4139 #: flatcamGUI/ObjectUI.py:430 flatcamGUI/ObjectUI.py:464 msgid "Boundary Margin:" msgstr "Boundary Margin:" -#: flatcamGUI/FlatCAMGUI.py:4119 flatcamGUI/ObjectUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:4115 flatcamGUI/ObjectUI.py:432 msgid "" "Specify the edge of the PCB\n" "by drawing a box around all\n" @@ -6585,11 +6615,11 @@ msgstr "" "objects with this minimum\n" "distance." -#: flatcamGUI/FlatCAMGUI.py:4129 flatcamGUI/FlatCAMGUI.py:4152 +#: flatcamGUI/FlatCAMGUI.py:4125 flatcamGUI/FlatCAMGUI.py:4148 msgid "Rounded corners" msgstr "Rounded corners" -#: flatcamGUI/FlatCAMGUI.py:4131 +#: flatcamGUI/FlatCAMGUI.py:4127 msgid "" "Creates a Geometry objects with polygons\n" "covering the copper-free areas of the PCB." @@ -6597,11 +6627,11 @@ msgstr "" "Creates a Geometry objects with polygons\n" "covering the copper-free areas of the PCB." -#: flatcamGUI/FlatCAMGUI.py:4137 flatcamGUI/ObjectUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:4133 flatcamGUI/ObjectUI.py:454 msgid "Bounding Box:" msgstr "Bounding Box:" -#: flatcamGUI/FlatCAMGUI.py:4145 flatcamGUI/ObjectUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:4141 flatcamGUI/ObjectUI.py:466 msgid "" "Distance of the edges of the box\n" "to the nearest polygon." @@ -6609,7 +6639,7 @@ msgstr "" "Distance of the edges of the box\n" "to the nearest polygon." -#: flatcamGUI/FlatCAMGUI.py:4154 flatcamGUI/ObjectUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:4150 flatcamGUI/ObjectUI.py:476 msgid "" "If the bounding box is \n" "to have rounded corners\n" @@ -6621,15 +6651,15 @@ msgstr "" "their radius is equal to\n" "the margin." -#: flatcamGUI/FlatCAMGUI.py:4168 +#: flatcamGUI/FlatCAMGUI.py:4164 msgid "Gerber Adv. Options" msgstr "Gerber Adv. Options" -#: flatcamGUI/FlatCAMGUI.py:4172 +#: flatcamGUI/FlatCAMGUI.py:4167 msgid "Advanced Param.:" msgstr "Advanced Param.:" -#: flatcamGUI/FlatCAMGUI.py:4174 +#: flatcamGUI/FlatCAMGUI.py:4169 msgid "" "A list of Gerber advanced parameters.\n" "Those parameters are available only for\n" @@ -6639,11 +6669,11 @@ msgstr "" "Those parameters are available only for\n" "Advanced App. Level." -#: flatcamGUI/FlatCAMGUI.py:4184 flatcamGUI/ObjectUI.py:314 +#: flatcamGUI/FlatCAMGUI.py:4179 flatcamGUI/ObjectUI.py:314 msgid "\"Follow\"" msgstr "\"Follow\"" -#: flatcamGUI/FlatCAMGUI.py:4186 flatcamGUI/ObjectUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:4181 flatcamGUI/ObjectUI.py:316 msgid "" "Generate a 'Follow' geometry.\n" "This means that it will cut through\n" @@ -6653,11 +6683,11 @@ msgstr "" "This means that it will cut through\n" "the middle of the trace." -#: flatcamGUI/FlatCAMGUI.py:4194 +#: flatcamGUI/FlatCAMGUI.py:4188 msgid "Table Show/Hide" msgstr "Table Show/Hide" -#: flatcamGUI/FlatCAMGUI.py:4196 +#: flatcamGUI/FlatCAMGUI.py:4190 msgid "" "Toggle the display of the Gerber Apertures Table.\n" "Also, on hide, it will delete all mark shapes\n" @@ -6667,15 +6697,15 @@ msgstr "" "Also, on hide, it will delete all mark shapes\n" "that are drawn on canvas." -#: flatcamGUI/FlatCAMGUI.py:4235 +#: flatcamGUI/FlatCAMGUI.py:4229 msgid "Gerber Export" msgstr "Gerber Export" -#: flatcamGUI/FlatCAMGUI.py:4238 flatcamGUI/FlatCAMGUI.py:4909 +#: flatcamGUI/FlatCAMGUI.py:4232 flatcamGUI/FlatCAMGUI.py:4902 msgid "Export Options:" msgstr "Export Options:" -#: flatcamGUI/FlatCAMGUI.py:4240 +#: flatcamGUI/FlatCAMGUI.py:4234 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Gerber menu entry." @@ -6683,19 +6713,19 @@ msgstr "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Gerber menu entry." -#: flatcamGUI/FlatCAMGUI.py:4249 flatcamGUI/FlatCAMGUI.py:4920 +#: flatcamGUI/FlatCAMGUI.py:4243 flatcamGUI/FlatCAMGUI.py:4913 msgid "Units:" msgstr "Units:" -#: flatcamGUI/FlatCAMGUI.py:4251 flatcamGUI/FlatCAMGUI.py:4257 +#: flatcamGUI/FlatCAMGUI.py:4245 flatcamGUI/FlatCAMGUI.py:4251 msgid "The units used in the Gerber file." msgstr "The units used in the Gerber file." -#: flatcamGUI/FlatCAMGUI.py:4263 flatcamGUI/FlatCAMGUI.py:4934 +#: flatcamGUI/FlatCAMGUI.py:4257 flatcamGUI/FlatCAMGUI.py:4927 msgid "Int/Decimals:" msgstr "Int/Decimals:" -#: flatcamGUI/FlatCAMGUI.py:4265 +#: flatcamGUI/FlatCAMGUI.py:4259 msgid "" "The number of digits in the whole part of the number\n" "and in the fractional part of the number." @@ -6703,7 +6733,7 @@ msgstr "" "The number of digits in the whole part of the number\n" "and in the fractional part of the number." -#: flatcamGUI/FlatCAMGUI.py:4276 +#: flatcamGUI/FlatCAMGUI.py:4270 msgid "" "This numbers signify the number of digits in\n" "the whole part of Gerber coordinates." @@ -6711,7 +6741,7 @@ msgstr "" "This numbers signify the number of digits in\n" "the whole part of Gerber coordinates." -#: flatcamGUI/FlatCAMGUI.py:4290 +#: flatcamGUI/FlatCAMGUI.py:4284 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Gerber coordinates." @@ -6719,11 +6749,11 @@ msgstr "" "This numbers signify the number of digits in\n" "the decimal part of Gerber coordinates." -#: flatcamGUI/FlatCAMGUI.py:4299 flatcamGUI/FlatCAMGUI.py:4995 +#: flatcamGUI/FlatCAMGUI.py:4293 flatcamGUI/FlatCAMGUI.py:4988 msgid "Zeros:" msgstr "Zeros:" -#: flatcamGUI/FlatCAMGUI.py:4302 flatcamGUI/FlatCAMGUI.py:4312 +#: flatcamGUI/FlatCAMGUI.py:4296 flatcamGUI/FlatCAMGUI.py:4306 msgid "" "This sets the type of Gerber zeros.\n" "If LZ then Leading Zeros are removed and\n" @@ -6737,23 +6767,25 @@ msgstr "" "If TZ is checked then Trailing Zeros are removed\n" "and Leading Zeros are kept." -#: flatcamGUI/FlatCAMGUI.py:4332 flatcamGUI/FlatCAMGUI.py:5375 -#: flatcamGUI/FlatCAMGUI.py:5619 flatcamGUI/FlatCAMGUI.py:5720 -#: flatcamGUI/FlatCAMGUI.py:5799 flatcamGUI/FlatCAMGUI.py:5858 -#: flatcamGUI/FlatCAMGUI.py:5961 flatcamGUI/FlatCAMGUI.py:6022 -#: flatcamGUI/FlatCAMGUI.py:6221 flatcamGUI/FlatCAMGUI.py:6348 +#: 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 msgid "Parameters:" msgstr "Parameters:" -#: flatcamGUI/FlatCAMGUI.py:4334 +#: flatcamGUI/FlatCAMGUI.py:4328 msgid "A list of Gerber Editor parameters." msgstr "A list of Gerber Editor parameters." -#: flatcamGUI/FlatCAMGUI.py:4342 flatcamGUI/FlatCAMGUI.py:5385 +#: flatcamGUI/FlatCAMGUI.py:4336 flatcamGUI/FlatCAMGUI.py:5039 +#: flatcamGUI/FlatCAMGUI.py:5501 msgid "Selection limit:" msgstr "Selection limit:" -#: flatcamGUI/FlatCAMGUI.py:4344 +#: flatcamGUI/FlatCAMGUI.py:4338 msgid "" "Set the number of selected Gerber geometry\n" "items above which the utility geometry\n" @@ -6767,15 +6799,15 @@ msgstr "" "Increases the performance when moving a\n" "large number of geometric elements." -#: flatcamGUI/FlatCAMGUI.py:4364 +#: flatcamGUI/FlatCAMGUI.py:4358 msgid "Excellon General" msgstr "Excellon General" -#: flatcamGUI/FlatCAMGUI.py:4386 +#: flatcamGUI/FlatCAMGUI.py:4380 msgid "Excellon Format:" msgstr "Excellon Format:" -#: flatcamGUI/FlatCAMGUI.py:4388 +#: flatcamGUI/FlatCAMGUI.py:4382 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -6817,16 +6849,16 @@ msgstr "" "Sprint Layout 2:4 INCH LZ\n" "KiCAD 3:5 INCH TZ" -#: flatcamGUI/FlatCAMGUI.py:4413 +#: flatcamGUI/FlatCAMGUI.py:4407 msgid "INCH:" msgstr "INCH:" -#: flatcamGUI/FlatCAMGUI.py:4416 +#: flatcamGUI/FlatCAMGUI.py:4410 msgid "Default values for INCH are 2:4" msgstr "Default values for INCH are 2:4" -#: flatcamGUI/FlatCAMGUI.py:4424 flatcamGUI/FlatCAMGUI.py:4457 -#: flatcamGUI/FlatCAMGUI.py:4949 +#: flatcamGUI/FlatCAMGUI.py:4418 flatcamGUI/FlatCAMGUI.py:4451 +#: flatcamGUI/FlatCAMGUI.py:4942 msgid "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." @@ -6834,8 +6866,8 @@ msgstr "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." -#: flatcamGUI/FlatCAMGUI.py:4438 flatcamGUI/FlatCAMGUI.py:4471 -#: flatcamGUI/FlatCAMGUI.py:4963 +#: flatcamGUI/FlatCAMGUI.py:4432 flatcamGUI/FlatCAMGUI.py:4465 +#: flatcamGUI/FlatCAMGUI.py:4956 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." @@ -6843,19 +6875,19 @@ msgstr "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." -#: flatcamGUI/FlatCAMGUI.py:4446 +#: flatcamGUI/FlatCAMGUI.py:4440 msgid "METRIC:" msgstr "METRIC:" -#: flatcamGUI/FlatCAMGUI.py:4449 +#: flatcamGUI/FlatCAMGUI.py:4443 msgid "Default values for METRIC are 3:3" msgstr "Default values for METRIC are 3:3" -#: flatcamGUI/FlatCAMGUI.py:4480 +#: flatcamGUI/FlatCAMGUI.py:4474 msgid "Default Zeros:" msgstr "Default Zeros:" -#: flatcamGUI/FlatCAMGUI.py:4483 flatcamGUI/FlatCAMGUI.py:4998 +#: flatcamGUI/FlatCAMGUI.py:4477 flatcamGUI/FlatCAMGUI.py:4991 msgid "" "This sets the type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -6869,7 +6901,7 @@ msgstr "" "If TZ is checked then Trailing Zeros are kept\n" "and Leading Zeros are removed." -#: flatcamGUI/FlatCAMGUI.py:4494 +#: flatcamGUI/FlatCAMGUI.py:4488 msgid "" "This sets the default type of Excellon zeros.\n" "If it is not detected in the parsed file the value here\n" @@ -6885,11 +6917,11 @@ msgstr "" "If TZ is checked then Trailing Zeros are kept\n" "and Leading Zeros are removed." -#: flatcamGUI/FlatCAMGUI.py:4508 +#: flatcamGUI/FlatCAMGUI.py:4502 msgid "Default Units:" msgstr "Default Units:" -#: flatcamGUI/FlatCAMGUI.py:4511 +#: flatcamGUI/FlatCAMGUI.py:4505 msgid "" "This sets the default units of Excellon files.\n" "If it is not detected in the parsed file the value here\n" @@ -6901,7 +6933,7 @@ msgstr "" "will be used.Some Excellon files don't have an header\n" "therefore this parameter will be used." -#: flatcamGUI/FlatCAMGUI.py:4522 +#: flatcamGUI/FlatCAMGUI.py:4516 msgid "" "This sets the units of Excellon files.\n" "Some Excellon files don't have an header\n" @@ -6911,15 +6943,15 @@ msgstr "" "Some Excellon files don't have an header\n" "therefore this parameter will be used." -#: flatcamGUI/FlatCAMGUI.py:4538 +#: flatcamGUI/FlatCAMGUI.py:4532 msgid "Excellon Optimization:" msgstr "Excellon Optimization:" -#: flatcamGUI/FlatCAMGUI.py:4545 +#: flatcamGUI/FlatCAMGUI.py:4539 msgid "Algorithm: " msgstr "Algorithm: " -#: flatcamGUI/FlatCAMGUI.py:4548 flatcamGUI/FlatCAMGUI.py:4561 +#: flatcamGUI/FlatCAMGUI.py:4542 flatcamGUI/FlatCAMGUI.py:4555 msgid "" "This sets the optimization type for the Excellon drill path.\n" "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" @@ -6939,11 +6971,11 @@ msgstr "" "If DISABLED, then FlatCAM works in 32bit mode and it uses \n" "Travelling Salesman algorithm for path optimization." -#: flatcamGUI/FlatCAMGUI.py:4573 +#: flatcamGUI/FlatCAMGUI.py:4567 msgid "Optimization Time: " msgstr "Optimization Time: " -#: flatcamGUI/FlatCAMGUI.py:4576 +#: flatcamGUI/FlatCAMGUI.py:4570 msgid "" "When OR-Tools Metaheuristic (MH) is enabled there is a\n" "maximum threshold for how much time is spent doing the\n" @@ -6955,15 +6987,15 @@ msgstr "" "path optimization. This max duration is set here.\n" "In seconds." -#: flatcamGUI/FlatCAMGUI.py:4618 +#: flatcamGUI/FlatCAMGUI.py:4612 msgid "Excellon Options" msgstr "Excellon Options" -#: flatcamGUI/FlatCAMGUI.py:4621 flatcamGUI/ObjectUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:4615 flatcamGUI/ObjectUI.py:584 msgid "Create CNC Job" msgstr "Create CNC Job" -#: flatcamGUI/FlatCAMGUI.py:4623 +#: flatcamGUI/FlatCAMGUI.py:4617 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object." @@ -6971,13 +7003,13 @@ msgstr "" "Parameters used to create a CNC Job object\n" "for this drill object." -#: flatcamGUI/FlatCAMGUI.py:4631 flatcamGUI/FlatCAMGUI.py:5101 -#: flatcamGUI/FlatCAMGUI.py:6157 flatcamGUI/ObjectUI.py:595 +#: flatcamGUI/FlatCAMGUI.py:4625 flatcamGUI/FlatCAMGUI.py:5217 +#: flatcamGUI/FlatCAMGUI.py:6321 flatcamGUI/ObjectUI.py:595 #: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolCalculators.py:108 msgid "Cut Z:" msgstr "Cut Z:" -#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/ObjectUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:4627 flatcamGUI/ObjectUI.py:597 msgid "" "Drill depth (negative)\n" "below the copper surface." @@ -6985,12 +7017,12 @@ msgstr "" "Drill depth (negative)\n" "below the copper surface." -#: flatcamGUI/FlatCAMGUI.py:4640 flatcamGUI/FlatCAMGUI.py:5134 +#: flatcamGUI/FlatCAMGUI.py:4634 flatcamGUI/FlatCAMGUI.py:5250 #: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1098 msgid "Travel Z:" msgstr "Travel Z:" -#: flatcamGUI/FlatCAMGUI.py:4642 flatcamGUI/ObjectUI.py:607 +#: flatcamGUI/FlatCAMGUI.py:4636 flatcamGUI/ObjectUI.py:607 msgid "" "Tool height when travelling\n" "across the XY plane." @@ -6998,11 +7030,11 @@ msgstr "" "Tool height when travelling\n" "across the XY plane." -#: flatcamGUI/FlatCAMGUI.py:4650 flatcamGUI/FlatCAMGUI.py:5144 +#: flatcamGUI/FlatCAMGUI.py:4644 flatcamGUI/FlatCAMGUI.py:5260 msgid "Tool change:" msgstr "Tool change:" -#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5146 +#: flatcamGUI/FlatCAMGUI.py:4646 flatcamGUI/FlatCAMGUI.py:5262 #: flatcamGUI/ObjectUI.py:617 msgid "" "Include tool-change sequence\n" @@ -7011,19 +7043,19 @@ msgstr "" "Include tool-change sequence\n" "in G-Code (Pause for tool change)." -#: flatcamGUI/FlatCAMGUI.py:4659 flatcamGUI/FlatCAMGUI.py:5154 +#: flatcamGUI/FlatCAMGUI.py:4653 flatcamGUI/FlatCAMGUI.py:5270 msgid "Toolchange Z:" msgstr "Toolchange Z:" -#: flatcamGUI/FlatCAMGUI.py:4661 flatcamGUI/FlatCAMGUI.py:5156 +#: flatcamGUI/FlatCAMGUI.py:4655 flatcamGUI/FlatCAMGUI.py:5272 msgid "Toolchange Z position." msgstr "Toolchange Z position." -#: flatcamGUI/FlatCAMGUI.py:4667 +#: flatcamGUI/FlatCAMGUI.py:4661 msgid "Feedrate:" msgstr "Feedrate:" -#: flatcamGUI/FlatCAMGUI.py:4669 +#: flatcamGUI/FlatCAMGUI.py:4663 msgid "" "Tool speed while drilling\n" "(in units per minute)." @@ -7031,11 +7063,11 @@ msgstr "" "Tool speed while drilling\n" "(in units per minute)." -#: flatcamGUI/FlatCAMGUI.py:4677 +#: flatcamGUI/FlatCAMGUI.py:4671 msgid "Spindle Speed:" msgstr "Spindle Speed:" -#: flatcamGUI/FlatCAMGUI.py:4679 flatcamGUI/FlatCAMGUI.py:5186 +#: flatcamGUI/FlatCAMGUI.py:4673 flatcamGUI/FlatCAMGUI.py:5302 #: flatcamGUI/ObjectUI.py:684 msgid "" "Speed of the spindle\n" @@ -7044,11 +7076,11 @@ msgstr "" "Speed of the spindle\n" "in RPM (optional)" -#: flatcamGUI/FlatCAMGUI.py:4687 flatcamGUI/FlatCAMGUI.py:5194 +#: flatcamGUI/FlatCAMGUI.py:4681 flatcamGUI/FlatCAMGUI.py:5310 msgid "Spindle dir.:" msgstr "Spindle dir.:" -#: flatcamGUI/FlatCAMGUI.py:4689 flatcamGUI/FlatCAMGUI.py:5196 +#: flatcamGUI/FlatCAMGUI.py:4683 flatcamGUI/FlatCAMGUI.py:5312 msgid "" "This sets the direction that the spindle is rotating.\n" "It can be either:\n" @@ -7060,12 +7092,12 @@ msgstr "" "- CW = clockwise or\n" "- CCW = counter clockwise" -#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 +#: flatcamGUI/FlatCAMGUI.py:4695 flatcamGUI/FlatCAMGUI.py:5324 #: flatcamGUI/ObjectUI.py:692 flatcamGUI/ObjectUI.py:1224 msgid "Dwell:" msgstr "Dwell:" -#: flatcamGUI/FlatCAMGUI.py:4703 flatcamGUI/FlatCAMGUI.py:5210 +#: flatcamGUI/FlatCAMGUI.py:4697 flatcamGUI/FlatCAMGUI.py:5326 #: flatcamGUI/ObjectUI.py:694 flatcamGUI/ObjectUI.py:1227 msgid "" "Pause to allow the spindle to reach its\n" @@ -7074,21 +7106,21 @@ msgstr "" "Pause to allow the spindle to reach its\n" "speed before cutting." -#: flatcamGUI/FlatCAMGUI.py:4706 flatcamGUI/FlatCAMGUI.py:5213 +#: flatcamGUI/FlatCAMGUI.py:4700 flatcamGUI/FlatCAMGUI.py:5329 msgid "Duration:" msgstr "Duration:" -#: flatcamGUI/FlatCAMGUI.py:4708 flatcamGUI/FlatCAMGUI.py:5215 +#: flatcamGUI/FlatCAMGUI.py:4702 flatcamGUI/FlatCAMGUI.py:5331 #: flatcamGUI/ObjectUI.py:699 flatcamGUI/ObjectUI.py:1234 msgid "Number of milliseconds for spindle to dwell." msgstr "Number of milliseconds for spindle to dwell." -#: flatcamGUI/FlatCAMGUI.py:4720 flatcamGUI/FlatCAMGUI.py:5225 +#: flatcamGUI/FlatCAMGUI.py:4714 flatcamGUI/FlatCAMGUI.py:5341 #: flatcamGUI/ObjectUI.py:707 msgid "Postprocessor:" msgstr "Postprocessor:" -#: flatcamGUI/FlatCAMGUI.py:4722 +#: flatcamGUI/FlatCAMGUI.py:4716 msgid "" "The postprocessor file that dictates\n" "gcode output." @@ -7096,11 +7128,11 @@ msgstr "" "The postprocessor file that dictates\n" "gcode output." -#: flatcamGUI/FlatCAMGUI.py:4732 +#: flatcamGUI/FlatCAMGUI.py:4725 msgid "Gcode: " msgstr "Gcode: " -#: flatcamGUI/FlatCAMGUI.py:4734 +#: flatcamGUI/FlatCAMGUI.py:4727 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -7112,23 +7144,23 @@ msgstr "" "When choosing 'Slots' or 'Both', slots will be\n" "converted to drills." -#: flatcamGUI/FlatCAMGUI.py:4750 flatcamGUI/ObjectUI.py:772 +#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:772 msgid "Mill Holes" msgstr "Mill Holes" -#: flatcamGUI/FlatCAMGUI.py:4752 flatcamGUI/ObjectUI.py:774 +#: flatcamGUI/FlatCAMGUI.py:4745 flatcamGUI/ObjectUI.py:774 msgid "Create Geometry for milling holes." msgstr "Create Geometry for milling holes." -#: flatcamGUI/FlatCAMGUI.py:4758 +#: flatcamGUI/FlatCAMGUI.py:4751 msgid "Drill Tool dia:" msgstr "Drill Tool dia:" -#: flatcamGUI/FlatCAMGUI.py:4765 +#: flatcamGUI/FlatCAMGUI.py:4758 msgid "Slot Tool dia:" msgstr "Slot Tool dia:" -#: flatcamGUI/FlatCAMGUI.py:4767 +#: flatcamGUI/FlatCAMGUI.py:4760 msgid "" "Diameter of the cutting tool\n" "when milling slots." @@ -7136,19 +7168,19 @@ msgstr "" "Diameter of the cutting tool\n" "when milling slots." -#: flatcamGUI/FlatCAMGUI.py:4779 +#: flatcamGUI/FlatCAMGUI.py:4772 msgid "Defaults" msgstr "Defaults" -#: flatcamGUI/FlatCAMGUI.py:4792 +#: flatcamGUI/FlatCAMGUI.py:4785 msgid "Excellon Adv. Options" msgstr "Excellon Adv. Options" -#: flatcamGUI/FlatCAMGUI.py:4798 flatcamGUI/FlatCAMGUI.py:5248 +#: flatcamGUI/FlatCAMGUI.py:4791 flatcamGUI/FlatCAMGUI.py:5364 msgid "Advanced Options:" msgstr "Advanced Options:" -#: flatcamGUI/FlatCAMGUI.py:4800 +#: flatcamGUI/FlatCAMGUI.py:4793 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object that are shown when App Level is Advanced." @@ -7156,11 +7188,11 @@ msgstr "" "Parameters used to create a CNC Job object\n" "for this drill object that are shown when App Level is Advanced." -#: flatcamGUI/FlatCAMGUI.py:4808 +#: flatcamGUI/FlatCAMGUI.py:4801 msgid "Offset Z:" msgstr "Offset Z:" -#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/ObjectUI.py:574 +#: flatcamGUI/FlatCAMGUI.py:4803 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" @@ -7170,20 +7202,20 @@ msgstr "" "to create the desired exit hole diameter due of the tip shape.\n" "The value here can compensate the Cut Z parameter." -#: flatcamGUI/FlatCAMGUI.py:4817 flatcamGUI/FlatCAMGUI.py:5259 +#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/FlatCAMGUI.py:5375 msgid "Toolchange X,Y:" msgstr "Toolchange X,Y:" -#: flatcamGUI/FlatCAMGUI.py:4819 flatcamGUI/FlatCAMGUI.py:5261 +#: flatcamGUI/FlatCAMGUI.py:4812 flatcamGUI/FlatCAMGUI.py:5377 msgid "Toolchange X,Y position." msgstr "Toolchange X,Y position." -#: flatcamGUI/FlatCAMGUI.py:4825 flatcamGUI/FlatCAMGUI.py:5268 +#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5384 #: flatcamGUI/ObjectUI.py:634 msgid "Start move Z:" msgstr "Start move Z:" -#: flatcamGUI/FlatCAMGUI.py:4827 +#: flatcamGUI/FlatCAMGUI.py:4820 msgid "" "Height of the tool just after start.\n" "Delete the value if you don't need this feature." @@ -7191,12 +7223,12 @@ msgstr "" "Height of the tool just after start.\n" "Delete the value if you don't need this feature." -#: flatcamGUI/FlatCAMGUI.py:4834 flatcamGUI/FlatCAMGUI.py:5278 +#: flatcamGUI/FlatCAMGUI.py:4827 flatcamGUI/FlatCAMGUI.py:5394 #: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1144 msgid "End move Z:" msgstr "End move Z:" -#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5280 +#: flatcamGUI/FlatCAMGUI.py:4829 flatcamGUI/FlatCAMGUI.py:5396 msgid "" "Height of the tool after\n" "the last move at the end of the job." @@ -7204,12 +7236,12 @@ msgstr "" "Height of the tool after\n" "the last move at the end of the job." -#: flatcamGUI/FlatCAMGUI.py:4843 flatcamGUI/FlatCAMGUI.py:5288 +#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5404 #: flatcamGUI/ObjectUI.py:665 msgid "Feedrate Rapids:" msgstr "Feedrate Rapids:" -#: flatcamGUI/FlatCAMGUI.py:4845 flatcamGUI/ObjectUI.py:667 +#: flatcamGUI/FlatCAMGUI.py:4838 flatcamGUI/ObjectUI.py:667 msgid "" "Tool speed while drilling\n" "(in units per minute).\n" @@ -7223,12 +7255,12 @@ msgstr "" "It is useful only for Marlin,\n" "ignore for any other cases." -#: flatcamGUI/FlatCAMGUI.py:4856 flatcamGUI/FlatCAMGUI.py:5312 +#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5428 #: flatcamGUI/ObjectUI.py:718 flatcamGUI/ObjectUI.py:1256 msgid "Probe Z depth:" msgstr "Probe Z depth:" -#: flatcamGUI/FlatCAMGUI.py:4858 flatcamGUI/FlatCAMGUI.py:5314 +#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5430 #: flatcamGUI/ObjectUI.py:720 flatcamGUI/ObjectUI.py:1259 msgid "" "The maximum depth that the probe is allowed\n" @@ -7237,21 +7269,21 @@ msgstr "" "The maximum depth that the probe is allowed\n" "to probe. Negative value, in current units." -#: flatcamGUI/FlatCAMGUI.py:4866 flatcamGUI/FlatCAMGUI.py:5322 +#: flatcamGUI/FlatCAMGUI.py:4859 flatcamGUI/FlatCAMGUI.py:5438 #: flatcamGUI/ObjectUI.py:730 flatcamGUI/ObjectUI.py:1270 msgid "Feedrate Probe:" msgstr "Feedrate Probe:" -#: flatcamGUI/FlatCAMGUI.py:4868 flatcamGUI/FlatCAMGUI.py:5324 +#: flatcamGUI/FlatCAMGUI.py:4861 flatcamGUI/FlatCAMGUI.py:5440 #: flatcamGUI/ObjectUI.py:732 flatcamGUI/ObjectUI.py:1273 msgid "The feedrate used while the probe is probing." msgstr "The feedrate used while the probe is probing." -#: flatcamGUI/FlatCAMGUI.py:4874 flatcamGUI/FlatCAMGUI.py:5331 +#: flatcamGUI/FlatCAMGUI.py:4867 flatcamGUI/FlatCAMGUI.py:5447 msgid "Fast Plunge:" msgstr "Fast Plunge:" -#: flatcamGUI/FlatCAMGUI.py:4876 flatcamGUI/FlatCAMGUI.py:5333 +#: flatcamGUI/FlatCAMGUI.py:4869 flatcamGUI/FlatCAMGUI.py:5449 msgid "" "By checking this, the vertical move from\n" "Z_Toolchange to Z_move is done with G0,\n" @@ -7263,11 +7295,11 @@ msgstr "" "meaning the fastest speed available.\n" "WARNING: the move is done at Toolchange X,Y coords." -#: flatcamGUI/FlatCAMGUI.py:4885 +#: flatcamGUI/FlatCAMGUI.py:4878 msgid "Fast Retract:" msgstr "Fast Retract:" -#: flatcamGUI/FlatCAMGUI.py:4887 +#: flatcamGUI/FlatCAMGUI.py:4880 msgid "" "Exit hole strategy.\n" " - When uncheked, while exiting the drilled hole the drill bit\n" @@ -7283,11 +7315,11 @@ msgstr "" " - When checked the travel from Z cut (cut depth) to Z_move\n" "(travel height) is done as fast as possible (G0) in one move." -#: flatcamGUI/FlatCAMGUI.py:4906 +#: flatcamGUI/FlatCAMGUI.py:4899 msgid "Excellon Export" msgstr "Excellon Export" -#: flatcamGUI/FlatCAMGUI.py:4911 +#: flatcamGUI/FlatCAMGUI.py:4904 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Excellon menu entry." @@ -7295,11 +7327,11 @@ msgstr "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Excellon menu entry." -#: flatcamGUI/FlatCAMGUI.py:4922 flatcamGUI/FlatCAMGUI.py:4928 +#: flatcamGUI/FlatCAMGUI.py:4915 flatcamGUI/FlatCAMGUI.py:4921 msgid "The units used in the Excellon file." msgstr "The units used in the Excellon file." -#: flatcamGUI/FlatCAMGUI.py:4936 +#: flatcamGUI/FlatCAMGUI.py:4929 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -7311,11 +7343,11 @@ msgstr "" "Here we set the format used when the provided\n" "coordinates are not using period." -#: flatcamGUI/FlatCAMGUI.py:4972 +#: flatcamGUI/FlatCAMGUI.py:4965 msgid "Format:" msgstr "Format:" -#: flatcamGUI/FlatCAMGUI.py:4974 flatcamGUI/FlatCAMGUI.py:4984 +#: flatcamGUI/FlatCAMGUI.py:4967 flatcamGUI/FlatCAMGUI.py:4977 msgid "" "Select the kind of coordinates format used.\n" "Coordinates can be saved with decimal point or without.\n" @@ -7331,7 +7363,7 @@ msgstr "" "Also it will have to be specified if LZ = leading zeros are kept\n" "or TZ = trailing zeros are kept." -#: flatcamGUI/FlatCAMGUI.py:5008 +#: flatcamGUI/FlatCAMGUI.py:5001 msgid "" "This sets the default type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -7345,11 +7377,77 @@ msgstr "" "If TZ is checked then Trailing Zeros are kept\n" "and Leading Zeros are removed." -#: flatcamGUI/FlatCAMGUI.py:5034 +#: flatcamGUI/FlatCAMGUI.py:5031 +#| msgid "A list of Geometry Editor parameters." +msgid "A list of Excellon Editor parameters." +msgstr "A list of Excellon Editor parameters." + +#: flatcamGUI/FlatCAMGUI.py:5041 +#| msgid "" +#| "Set the number of selected geometry\n" +#| "items above which the utility geometry\n" +#| "becomes just a selection rectangle.\n" +#| "Increases the performance when moving a\n" +#| "large number of geometric elements." +msgid "" +"Set the number of selected Excellon geometry\n" +"items above which the utility geometry\n" +"becomes just a selection rectangle.\n" +"Increases the performance when moving a\n" +"large number of geometric elements." +msgstr "" +"Set the number of selected Excellon geometry\n" +"items above which the utility geometry\n" +"becomes just a selection rectangle.\n" +"Increases the performance when moving a\n" +"large number of geometric elements." + +#: flatcamGUI/FlatCAMGUI.py:5053 +#| msgid "Tool Dia:" +msgid "New Tool Dia:" +msgstr "New Tool Dia:" + +#: flatcamGUI/FlatCAMGUI.py:5076 +#| msgid "Paint Area:" +msgid "Linear Drill Array:" +msgstr "Linear Drill Array:" + +#: flatcamGUI/FlatCAMGUI.py:5080 +#| msgid "Linear" +msgid "Linear Dir.:" +msgstr "Linear Dir.:" + +#: flatcamGUI/FlatCAMGUI.py:5116 +#| msgid "Paint Area:" +msgid "Circular Drill Array:" +msgstr "Circular Drill Array:" + +#: flatcamGUI/FlatCAMGUI.py:5120 +#| msgid "Circular" +msgid "Circular Dir.:" +msgstr "Circular Dir.:" + +#: flatcamGUI/FlatCAMGUI.py:5122 +#| msgid "" +#| "Direction for circular array.Can be CW = clockwise or CCW = counter " +#| "clockwise." +msgid "" +"Direction for circular array.\n" +"Can be CW = clockwise or CCW = counter clockwise." +msgstr "" +"Direction for circular array.\n" +"Can be CW = clockwise or CCW = counter clockwise." + +#: flatcamGUI/FlatCAMGUI.py:5133 +#| msgid "Tip Angle:" +msgid "Circ. Angle:" +msgstr "Circ. Angle:" + +#: flatcamGUI/FlatCAMGUI.py:5150 msgid "Geometry General" msgstr "Geometry General" -#: flatcamGUI/FlatCAMGUI.py:5052 +#: flatcamGUI/FlatCAMGUI.py:5168 msgid "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." @@ -7357,15 +7455,15 @@ msgstr "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." -#: flatcamGUI/FlatCAMGUI.py:5060 +#: flatcamGUI/FlatCAMGUI.py:5176 msgid "Tools" msgstr "Tools" -#: flatcamGUI/FlatCAMGUI.py:5067 +#: flatcamGUI/FlatCAMGUI.py:5183 msgid "Tool dia: " msgstr "Tool dia: " -#: flatcamGUI/FlatCAMGUI.py:5069 +#: flatcamGUI/FlatCAMGUI.py:5185 msgid "" "The diameter of the cutting\n" "tool.." @@ -7373,15 +7471,15 @@ msgstr "" "The diameter of the cutting\n" "tool.." -#: flatcamGUI/FlatCAMGUI.py:5084 +#: flatcamGUI/FlatCAMGUI.py:5200 msgid "Geometry Options" msgstr "Geometry Options" -#: flatcamGUI/FlatCAMGUI.py:5089 +#: flatcamGUI/FlatCAMGUI.py:5205 msgid "Create CNC Job:" msgstr "Create CNC Job:" -#: flatcamGUI/FlatCAMGUI.py:5091 +#: flatcamGUI/FlatCAMGUI.py:5207 msgid "" "Create a CNC Job object\n" "tracing the contours of this\n" @@ -7391,7 +7489,7 @@ msgstr "" "tracing the contours of this\n" "Geometry object." -#: flatcamGUI/FlatCAMGUI.py:5103 flatcamGUI/ObjectUI.py:1065 +#: flatcamGUI/FlatCAMGUI.py:5219 flatcamGUI/ObjectUI.py:1065 msgid "" "Cutting depth (negative)\n" "below the copper surface." @@ -7399,19 +7497,19 @@ msgstr "" "Cutting depth (negative)\n" "below the copper surface." -#: flatcamGUI/FlatCAMGUI.py:5111 +#: flatcamGUI/FlatCAMGUI.py:5227 msgid "Multidepth" msgstr "Multidepth" -#: flatcamGUI/FlatCAMGUI.py:5113 +#: flatcamGUI/FlatCAMGUI.py:5229 msgid "Multidepth usage: True or False." msgstr "Multidepth usage: True or False." -#: flatcamGUI/FlatCAMGUI.py:5118 +#: flatcamGUI/FlatCAMGUI.py:5234 msgid "Depth/Pass:" msgstr "Depth/Pass:" -#: flatcamGUI/FlatCAMGUI.py:5120 +#: flatcamGUI/FlatCAMGUI.py:5236 msgid "" "The depth to cut on each pass,\n" "when multidepth is enabled.\n" @@ -7425,7 +7523,7 @@ msgstr "" "it is a fraction from the depth\n" "which has negative value." -#: flatcamGUI/FlatCAMGUI.py:5136 flatcamGUI/ObjectUI.py:1101 +#: flatcamGUI/FlatCAMGUI.py:5252 flatcamGUI/ObjectUI.py:1101 msgid "" "Height of the tool when\n" "moving without cutting." @@ -7433,11 +7531,11 @@ msgstr "" "Height of the tool when\n" "moving without cutting." -#: flatcamGUI/FlatCAMGUI.py:5163 flatcamGUI/ObjectUI.py:1156 +#: flatcamGUI/FlatCAMGUI.py:5279 flatcamGUI/ObjectUI.py:1156 msgid "Feed Rate X-Y:" msgstr "Feed Rate X-Y:" -#: flatcamGUI/FlatCAMGUI.py:5165 flatcamGUI/ObjectUI.py:1159 +#: flatcamGUI/FlatCAMGUI.py:5281 flatcamGUI/ObjectUI.py:1159 msgid "" "Cutting speed in the XY\n" "plane in units per minute" @@ -7445,11 +7543,11 @@ msgstr "" "Cutting speed in the XY\n" "plane in units per minute" -#: flatcamGUI/FlatCAMGUI.py:5173 +#: flatcamGUI/FlatCAMGUI.py:5289 msgid "Feed Rate Z:" msgstr "Feed Rate Z:" -#: flatcamGUI/FlatCAMGUI.py:5175 +#: flatcamGUI/FlatCAMGUI.py:5291 msgid "" "Cutting speed in the XY\n" "plane in units per minute.\n" @@ -7459,12 +7557,12 @@ msgstr "" "plane in units per minute.\n" "It is called also Plunge." -#: flatcamGUI/FlatCAMGUI.py:5184 flatcamGUI/ObjectUI.py:682 +#: flatcamGUI/FlatCAMGUI.py:5300 flatcamGUI/ObjectUI.py:682 #: flatcamGUI/ObjectUI.py:1211 msgid "Spindle speed:" msgstr "Spindle speed:" -#: flatcamGUI/FlatCAMGUI.py:5227 +#: flatcamGUI/FlatCAMGUI.py:5343 msgid "" "The postprocessor file that dictates\n" "Machine Code output." @@ -7472,11 +7570,11 @@ msgstr "" "The postprocessor file that dictates\n" "Machine Code output." -#: flatcamGUI/FlatCAMGUI.py:5243 +#: flatcamGUI/FlatCAMGUI.py:5359 msgid "Geometry Adv. Options" msgstr "Geometry Adv. Options" -#: flatcamGUI/FlatCAMGUI.py:5250 +#: flatcamGUI/FlatCAMGUI.py:5366 msgid "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." @@ -7484,7 +7582,7 @@ msgstr "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." -#: flatcamGUI/FlatCAMGUI.py:5270 +#: flatcamGUI/FlatCAMGUI.py:5386 msgid "" "Height of the tool just after starting the work.\n" "Delete the value if you don't need this feature." @@ -7492,7 +7590,7 @@ msgstr "" "Height of the tool just after starting the work.\n" "Delete the value if you don't need this feature." -#: flatcamGUI/FlatCAMGUI.py:5290 +#: flatcamGUI/FlatCAMGUI.py:5406 msgid "" "Cutting speed in the XY plane\n" "(in units per minute).\n" @@ -7506,11 +7604,11 @@ msgstr "" "It is useful only for Marlin,\n" "ignore for any other cases." -#: flatcamGUI/FlatCAMGUI.py:5302 +#: flatcamGUI/FlatCAMGUI.py:5418 msgid "Re-cut 1st pt." msgstr "Re-cut 1st pt." -#: flatcamGUI/FlatCAMGUI.py:5304 flatcamGUI/ObjectUI.py:1202 +#: flatcamGUI/FlatCAMGUI.py:5420 flatcamGUI/ObjectUI.py:1202 msgid "" "In order to remove possible\n" "copper leftovers where first cut\n" @@ -7522,11 +7620,11 @@ msgstr "" "meet with last cut, we generate an\n" "extended cut over the first cut section." -#: flatcamGUI/FlatCAMGUI.py:5343 +#: flatcamGUI/FlatCAMGUI.py:5459 msgid "Seg. X size:" msgstr "Seg. X size:" -#: flatcamGUI/FlatCAMGUI.py:5345 +#: flatcamGUI/FlatCAMGUI.py:5461 msgid "" "The size of the trace segment on the X axis.\n" "Useful for auto-leveling.\n" @@ -7536,11 +7634,11 @@ msgstr "" "Useful for auto-leveling.\n" "A value of 0 means no segmentation on the X axis." -#: flatcamGUI/FlatCAMGUI.py:5354 +#: flatcamGUI/FlatCAMGUI.py:5470 msgid "Seg. Y size:" msgstr "Seg. Y size:" -#: flatcamGUI/FlatCAMGUI.py:5356 +#: flatcamGUI/FlatCAMGUI.py:5472 msgid "" "The size of the trace segment on the Y axis.\n" "Useful for auto-leveling.\n" @@ -7550,15 +7648,15 @@ msgstr "" "Useful for auto-leveling.\n" "A value of 0 means no segmentation on the Y axis." -#: flatcamGUI/FlatCAMGUI.py:5372 +#: flatcamGUI/FlatCAMGUI.py:5488 msgid "Geometry Editor" msgstr "Geometry Editor" -#: flatcamGUI/FlatCAMGUI.py:5377 +#: flatcamGUI/FlatCAMGUI.py:5493 msgid "A list of Geometry Editor parameters." msgstr "A list of Geometry Editor parameters." -#: flatcamGUI/FlatCAMGUI.py:5387 +#: flatcamGUI/FlatCAMGUI.py:5503 msgid "" "Set the number of selected geometry\n" "items above which the utility geometry\n" @@ -7572,20 +7670,20 @@ msgstr "" "Increases the performance when moving a\n" "large number of geometric elements." -#: flatcamGUI/FlatCAMGUI.py:5406 +#: flatcamGUI/FlatCAMGUI.py:5522 msgid "CNC Job General" msgstr "CNC Job General" -#: flatcamGUI/FlatCAMGUI.py:5419 flatcamGUI/ObjectUI.py:544 -#: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1434 +#: flatcamGUI/FlatCAMGUI.py:5535 flatcamGUI/ObjectUI.py:544 +#: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1447 msgid "Plot Object" msgstr "Plot Object" -#: flatcamGUI/FlatCAMGUI.py:5426 +#: flatcamGUI/FlatCAMGUI.py:5542 msgid "Plot kind:" msgstr "Plot kind:" -#: flatcamGUI/FlatCAMGUI.py:5428 flatcamGUI/ObjectUI.py:1356 +#: flatcamGUI/FlatCAMGUI.py:5544 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" @@ -7597,7 +7695,38 @@ msgstr "" "above the work piece or it can be of type 'Cut',\n" "which means the moves that cut into the material." -#: flatcamGUI/FlatCAMGUI.py:5447 +#: flatcamGUI/FlatCAMGUI.py:5561 +msgid "Display Annotation:" +msgstr "Display Annotation:" + +#: flatcamGUI/FlatCAMGUI.py:5563 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 "" +"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." + +#: flatcamGUI/FlatCAMGUI.py:5575 +msgid "Annotation Size:" +msgstr "Annotation Size:" + +#: flatcamGUI/FlatCAMGUI.py:5577 +msgid "The font size of the annotation text. In pixels." +msgstr "The font size of the annotation text. In pixels." + +#: flatcamGUI/FlatCAMGUI.py:5585 +msgid "Annotation Color:" +msgstr "Annotation Color:" + +#: flatcamGUI/FlatCAMGUI.py:5587 +#| msgid "Set the color for the shape." +msgid "Set the font color for the annotation texts." +msgstr "Set the font color for the annotation texts." + +#: flatcamGUI/FlatCAMGUI.py:5610 msgid "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." @@ -7605,7 +7734,7 @@ msgstr "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." -#: flatcamGUI/FlatCAMGUI.py:5457 +#: flatcamGUI/FlatCAMGUI.py:5620 msgid "" "Diameter of the tool to be\n" "rendered in the plot." @@ -7613,11 +7742,11 @@ msgstr "" "Diameter of the tool to be\n" "rendered in the plot." -#: flatcamGUI/FlatCAMGUI.py:5465 +#: flatcamGUI/FlatCAMGUI.py:5628 msgid "Coords dec.:" msgstr "Coords dec.:" -#: flatcamGUI/FlatCAMGUI.py:5467 +#: flatcamGUI/FlatCAMGUI.py:5630 msgid "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" @@ -7625,11 +7754,11 @@ msgstr "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" -#: flatcamGUI/FlatCAMGUI.py:5475 +#: flatcamGUI/FlatCAMGUI.py:5638 msgid "Feedrate dec.:" msgstr "Feedrate dec.:" -#: flatcamGUI/FlatCAMGUI.py:5477 +#: flatcamGUI/FlatCAMGUI.py:5640 msgid "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" @@ -7637,16 +7766,16 @@ msgstr "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" -#: flatcamGUI/FlatCAMGUI.py:5492 +#: flatcamGUI/FlatCAMGUI.py:5655 msgid "CNC Job Options" msgstr "CNC Job Options" -#: flatcamGUI/FlatCAMGUI.py:5495 flatcamGUI/FlatCAMGUI.py:5536 +#: flatcamGUI/FlatCAMGUI.py:5658 flatcamGUI/FlatCAMGUI.py:5699 msgid "Export G-Code:" msgstr "Export G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5497 flatcamGUI/FlatCAMGUI.py:5538 -#: flatcamGUI/ObjectUI.py:1470 +#: flatcamGUI/FlatCAMGUI.py:5660 flatcamGUI/FlatCAMGUI.py:5701 +#: flatcamGUI/ObjectUI.py:1483 msgid "" "Export and save G-Code to\n" "make this object to a file." @@ -7654,11 +7783,11 @@ msgstr "" "Export and save G-Code to\n" "make this object to a file." -#: flatcamGUI/FlatCAMGUI.py:5503 +#: flatcamGUI/FlatCAMGUI.py:5666 msgid "Prepend to G-Code:" msgstr "Prepend to G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5505 +#: flatcamGUI/FlatCAMGUI.py:5668 msgid "" "Type here any G-Code commands you would\n" "like to add at the beginning of the G-Code file." @@ -7666,11 +7795,11 @@ msgstr "" "Type here any G-Code commands you would\n" "like to add at the beginning of the G-Code file." -#: flatcamGUI/FlatCAMGUI.py:5514 +#: flatcamGUI/FlatCAMGUI.py:5677 msgid "Append to G-Code:" msgstr "Append to G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5516 flatcamGUI/ObjectUI.py:1492 +#: flatcamGUI/FlatCAMGUI.py:5679 flatcamGUI/ObjectUI.py:1505 msgid "" "Type here any G-Code commands you would\n" "like to append to the generated file.\n" @@ -7680,15 +7809,15 @@ msgstr "" "like to append to the generated file.\n" "I.e.: M2 (End of program)" -#: flatcamGUI/FlatCAMGUI.py:5533 +#: flatcamGUI/FlatCAMGUI.py:5696 msgid "CNC Job Adv. Options" msgstr "CNC Job Adv. Options" -#: flatcamGUI/FlatCAMGUI.py:5544 flatcamGUI/ObjectUI.py:1510 +#: flatcamGUI/FlatCAMGUI.py:5707 flatcamGUI/ObjectUI.py:1523 msgid "Toolchange G-Code:" msgstr "Toolchange G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5546 +#: flatcamGUI/FlatCAMGUI.py:5709 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -7700,11 +7829,11 @@ msgstr "" "This will constitute a Custom Toolchange GCode,\n" "or a Toolchange Macro." -#: flatcamGUI/FlatCAMGUI.py:5560 flatcamGUI/ObjectUI.py:1532 +#: flatcamGUI/FlatCAMGUI.py:5723 flatcamGUI/ObjectUI.py:1545 msgid "Use Toolchange Macro" msgstr "Use Toolchange Macro" -#: flatcamGUI/FlatCAMGUI.py:5562 flatcamGUI/ObjectUI.py:1535 +#: flatcamGUI/FlatCAMGUI.py:5725 flatcamGUI/ObjectUI.py:1548 msgid "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." @@ -7712,7 +7841,7 @@ msgstr "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." -#: flatcamGUI/FlatCAMGUI.py:5574 flatcamGUI/ObjectUI.py:1544 +#: flatcamGUI/FlatCAMGUI.py:5737 flatcamGUI/ObjectUI.py:1557 msgid "" "A list of the FlatCAM variables that can be used\n" "in the Toolchange event.\n" @@ -7722,71 +7851,71 @@ msgstr "" "in the Toolchange event.\n" "They have to be surrounded by the '%' symbol" -#: flatcamGUI/FlatCAMGUI.py:5581 flatcamGUI/ObjectUI.py:1551 +#: flatcamGUI/FlatCAMGUI.py:5744 flatcamGUI/ObjectUI.py:1564 msgid "Parameters" msgstr "Parameters" -#: flatcamGUI/FlatCAMGUI.py:5584 flatcamGUI/ObjectUI.py:1554 +#: flatcamGUI/FlatCAMGUI.py:5747 flatcamGUI/ObjectUI.py:1567 msgid "FlatCAM CNC parameters" msgstr "FlatCAM CNC parameters" -#: flatcamGUI/FlatCAMGUI.py:5585 flatcamGUI/ObjectUI.py:1555 +#: flatcamGUI/FlatCAMGUI.py:5748 flatcamGUI/ObjectUI.py:1568 msgid "tool = tool number" msgstr "tool = tool number" -#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1556 +#: flatcamGUI/FlatCAMGUI.py:5749 flatcamGUI/ObjectUI.py:1569 msgid "tooldia = tool diameter" msgstr "tooldia = tool diameter" -#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1557 +#: flatcamGUI/FlatCAMGUI.py:5750 flatcamGUI/ObjectUI.py:1570 msgid "t_drills = for Excellon, total number of drills" msgstr "t_drills = for Excellon, total number of drills" -#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1558 +#: flatcamGUI/FlatCAMGUI.py:5751 flatcamGUI/ObjectUI.py:1571 msgid "x_toolchange = X coord for Toolchange" msgstr "x_toolchange = X coord for Toolchange" -#: flatcamGUI/FlatCAMGUI.py:5589 flatcamGUI/ObjectUI.py:1559 +#: flatcamGUI/FlatCAMGUI.py:5752 flatcamGUI/ObjectUI.py:1572 msgid "y_toolchange = Y coord for Toolchange" msgstr "y_toolchange = Y coord for Toolchange" -#: flatcamGUI/FlatCAMGUI.py:5590 flatcamGUI/ObjectUI.py:1560 +#: flatcamGUI/FlatCAMGUI.py:5753 flatcamGUI/ObjectUI.py:1573 msgid "z_toolchange = Z coord for Toolchange" msgstr "z_toolchange = Z coord for Toolchange" -#: flatcamGUI/FlatCAMGUI.py:5591 +#: flatcamGUI/FlatCAMGUI.py:5754 msgid "z_cut = Z depth for the cut" msgstr "z_cut = Z depth for the cut" -#: flatcamGUI/FlatCAMGUI.py:5592 +#: flatcamGUI/FlatCAMGUI.py:5755 msgid "z_move = Z height for travel" msgstr "z_move = Z height for travel" -#: flatcamGUI/FlatCAMGUI.py:5593 flatcamGUI/ObjectUI.py:1563 +#: flatcamGUI/FlatCAMGUI.py:5756 flatcamGUI/ObjectUI.py:1576 msgid "z_depthpercut = the step value for multidepth cut" msgstr "z_depthpercut = the step value for multidepth cut" -#: flatcamGUI/FlatCAMGUI.py:5594 flatcamGUI/ObjectUI.py:1564 +#: flatcamGUI/FlatCAMGUI.py:5757 flatcamGUI/ObjectUI.py:1577 msgid "spindlesspeed = the value for the spindle speed" msgstr "spindlesspeed = the value for the spindle speed" -#: flatcamGUI/FlatCAMGUI.py:5595 flatcamGUI/ObjectUI.py:1565 +#: flatcamGUI/FlatCAMGUI.py:5759 flatcamGUI/ObjectUI.py:1578 msgid "dwelltime = time to dwell to allow the spindle to reach it's set RPM" msgstr "dwelltime = time to dwell to allow the spindle to reach it's set RPM" -#: flatcamGUI/FlatCAMGUI.py:5616 +#: flatcamGUI/FlatCAMGUI.py:5780 msgid "NCC Tool Options" msgstr "NCC Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5629 flatcamGUI/FlatCAMGUI.py:6359 +#: flatcamGUI/FlatCAMGUI.py:5793 flatcamGUI/FlatCAMGUI.py:6523 msgid "Tools dia:" msgstr "Tools dia:" -#: flatcamGUI/FlatCAMGUI.py:5631 +#: flatcamGUI/FlatCAMGUI.py:5795 msgid "Diameters of the cutting tools, separated by ','" msgstr "Diameters of the cutting tools, separated by ','" -#: flatcamGUI/FlatCAMGUI.py:5639 flatcamTools/ToolNonCopperClear.py:167 +#: flatcamGUI/FlatCAMGUI.py:5803 flatcamTools/ToolNonCopperClear.py:167 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -7811,11 +7940,11 @@ msgstr "" "Higher values = slow processing and slow execution on CNC\n" "due of too many paths." -#: flatcamGUI/FlatCAMGUI.py:5655 flatcamTools/ToolNonCopperClear.py:183 +#: flatcamGUI/FlatCAMGUI.py:5819 flatcamTools/ToolNonCopperClear.py:183 msgid "Bounding box margin." msgstr "Bounding box margin." -#: flatcamGUI/FlatCAMGUI.py:5664 flatcamTools/ToolNonCopperClear.py:192 +#: flatcamGUI/FlatCAMGUI.py:5828 flatcamTools/ToolNonCopperClear.py:192 #: flatcamTools/ToolPaint.py:190 msgid "" "Algorithm for non-copper clearing:
Standard: Fixed step inwards." @@ -7826,12 +7955,12 @@ msgstr "" "
Seed-based: Outwards from seed.
Line-based: Parallel " "lines." -#: flatcamGUI/FlatCAMGUI.py:5696 flatcamTools/ToolNonCopperClear.py:224 +#: flatcamGUI/FlatCAMGUI.py:5860 flatcamTools/ToolNonCopperClear.py:224 #: flatcamTools/ToolPaint.py:222 msgid "Rest M.:" msgstr "Rest M.:" -#: flatcamGUI/FlatCAMGUI.py:5698 +#: flatcamGUI/FlatCAMGUI.py:5862 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -7847,11 +7976,11 @@ msgstr "" "could not be cleared by previous tool.\n" "If not checked, use the standard algorithm." -#: flatcamGUI/FlatCAMGUI.py:5717 +#: flatcamGUI/FlatCAMGUI.py:5881 msgid "Cutout Tool Options" msgstr "Cutout Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5722 flatcamGUI/ObjectUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:5886 flatcamGUI/ObjectUI.py:402 msgid "" "Create toolpaths to cut around\n" "the PCB and separate it from\n" @@ -7861,7 +7990,7 @@ msgstr "" "the PCB and separate it from\n" "the original board." -#: flatcamGUI/FlatCAMGUI.py:5741 +#: flatcamGUI/FlatCAMGUI.py:5905 msgid "" "Distance from objects at which\n" "to draw the cutout." @@ -7869,11 +7998,11 @@ msgstr "" "Distance from objects at which\n" "to draw the cutout." -#: flatcamGUI/FlatCAMGUI.py:5748 flatcamTools/ToolCutOut.py:96 +#: flatcamGUI/FlatCAMGUI.py:5912 flatcamTools/ToolCutOut.py:96 msgid "Gap size:" msgstr "Gap size:" -#: flatcamGUI/FlatCAMGUI.py:5750 +#: flatcamGUI/FlatCAMGUI.py:5914 msgid "" "Size of the gaps in the toolpath\n" "that will remain to hold the\n" @@ -7883,11 +8012,11 @@ msgstr "" "that will remain to hold the\n" "board in place." -#: flatcamGUI/FlatCAMGUI.py:5758 flatcamTools/ToolCutOut.py:134 +#: flatcamGUI/FlatCAMGUI.py:5922 flatcamTools/ToolCutOut.py:134 msgid "Gaps:" msgstr "Gaps:" -#: flatcamGUI/FlatCAMGUI.py:5760 +#: flatcamGUI/FlatCAMGUI.py:5924 msgid "" "Number of bridge gaps used for the cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -7909,19 +8038,19 @@ msgstr "" "- 2tb - 2*top + 2*bottom\n" "- 8 - 2*left + 2*right +2*top + 2*bottom" -#: flatcamGUI/FlatCAMGUI.py:5781 flatcamTools/ToolCutOut.py:115 +#: flatcamGUI/FlatCAMGUI.py:5945 flatcamTools/ToolCutOut.py:115 msgid "Convex Sh.:" msgstr "Convex Sh.:" -#: flatcamGUI/FlatCAMGUI.py:5783 +#: flatcamGUI/FlatCAMGUI.py:5947 msgid "Create a convex shape surrounding the entire PCB." msgstr "Create a convex shape surrounding the entire PCB." -#: flatcamGUI/FlatCAMGUI.py:5796 +#: flatcamGUI/FlatCAMGUI.py:5960 msgid "2Sided Tool Options" msgstr "2Sided Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5801 +#: flatcamGUI/FlatCAMGUI.py:5965 msgid "" "A tool to help in creating a double sided\n" "PCB using alignment holes." @@ -7929,28 +8058,28 @@ msgstr "" "A tool to help in creating a double sided\n" "PCB using alignment holes." -#: flatcamGUI/FlatCAMGUI.py:5811 flatcamTools/ToolDblSided.py:235 +#: flatcamGUI/FlatCAMGUI.py:5975 flatcamTools/ToolDblSided.py:235 msgid "Drill diam.:" msgstr "Drill diam.:" -#: flatcamGUI/FlatCAMGUI.py:5813 flatcamTools/ToolDblSided.py:226 +#: flatcamGUI/FlatCAMGUI.py:5977 flatcamTools/ToolDblSided.py:226 #: flatcamTools/ToolDblSided.py:237 msgid "Diameter of the drill for the alignment holes." msgstr "Diameter of the drill for the alignment holes." -#: flatcamGUI/FlatCAMGUI.py:5822 flatcamTools/ToolDblSided.py:120 +#: flatcamGUI/FlatCAMGUI.py:5986 flatcamTools/ToolDblSided.py:120 msgid "Mirror Axis:" msgstr "Mirror Axis:" -#: flatcamGUI/FlatCAMGUI.py:5824 flatcamTools/ToolDblSided.py:122 +#: flatcamGUI/FlatCAMGUI.py:5988 flatcamTools/ToolDblSided.py:122 msgid "Mirror vertically (X) or horizontally (Y)." msgstr "Mirror vertically (X) or horizontally (Y)." -#: flatcamGUI/FlatCAMGUI.py:5835 flatcamTools/ToolDblSided.py:133 +#: flatcamGUI/FlatCAMGUI.py:5999 flatcamTools/ToolDblSided.py:133 msgid "Axis Ref:" msgstr "Axis Ref:" -#: flatcamGUI/FlatCAMGUI.py:5837 +#: flatcamGUI/FlatCAMGUI.py:6001 msgid "" "The axis should pass through a point or cut\n" " a specified box (in a Geometry object) in \n" @@ -7960,11 +8089,11 @@ msgstr "" " a specified box (in a Geometry object) in \n" "the middle." -#: flatcamGUI/FlatCAMGUI.py:5853 +#: flatcamGUI/FlatCAMGUI.py:6017 msgid "Paint Tool Options" msgstr "Paint Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5860 flatcamGUI/ObjectUI.py:1305 +#: flatcamGUI/FlatCAMGUI.py:6024 flatcamGUI/ObjectUI.py:1305 msgid "" "Creates tool paths to cover the\n" "whole area of a polygon (remove\n" @@ -7976,7 +8105,7 @@ msgstr "" "all copper). You will be asked\n" "to click on the desired polygon." -#: flatcamGUI/FlatCAMGUI.py:5884 +#: flatcamGUI/FlatCAMGUI.py:6048 msgid "" "How much (fraction) of the tool\n" "width to overlap each tool pass." @@ -7984,19 +8113,19 @@ msgstr "" "How much (fraction) of the tool\n" "width to overlap each tool pass." -#: flatcamGUI/FlatCAMGUI.py:5938 flatcamTools/ToolPaint.py:237 +#: flatcamGUI/FlatCAMGUI.py:6102 flatcamTools/ToolPaint.py:237 msgid "Selection:" msgstr "Selection:" -#: flatcamGUI/FlatCAMGUI.py:5940 +#: flatcamGUI/FlatCAMGUI.py:6104 msgid "How to select the polygons to paint." msgstr "How to select the polygons to paint." -#: flatcamGUI/FlatCAMGUI.py:5958 +#: flatcamGUI/FlatCAMGUI.py:6122 msgid "Film Tool Options" msgstr "Film Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5963 +#: flatcamGUI/FlatCAMGUI.py:6127 msgid "" "Create a PCB film from a Gerber or Geometry\n" "FlatCAM object.\n" @@ -8006,11 +8135,11 @@ msgstr "" "FlatCAM object.\n" "The file is saved in SVG format." -#: flatcamGUI/FlatCAMGUI.py:5974 flatcamTools/ToolFilm.py:116 +#: flatcamGUI/FlatCAMGUI.py:6138 flatcamTools/ToolFilm.py:116 msgid "Film Type:" msgstr "Film Type:" -#: flatcamGUI/FlatCAMGUI.py:5976 flatcamTools/ToolFilm.py:118 +#: flatcamGUI/FlatCAMGUI.py:6140 flatcamTools/ToolFilm.py:118 msgid "" "Generate a Positive black film or a Negative film.\n" "Positive means that it will print the features\n" @@ -8026,11 +8155,11 @@ msgstr "" "with white on a black canvas.\n" "The Film format is SVG." -#: flatcamGUI/FlatCAMGUI.py:5987 flatcamTools/ToolFilm.py:130 +#: flatcamGUI/FlatCAMGUI.py:6151 flatcamTools/ToolFilm.py:130 msgid "Border:" msgstr "Border:" -#: flatcamGUI/FlatCAMGUI.py:5989 flatcamTools/ToolFilm.py:132 +#: flatcamGUI/FlatCAMGUI.py:6153 flatcamTools/ToolFilm.py:132 msgid "" "Specify a border around the object.\n" "Only for negative film.\n" @@ -8050,11 +8179,11 @@ msgstr "" "white color like the rest and which may confound with the\n" "surroundings if not for this border." -#: flatcamGUI/FlatCAMGUI.py:6002 flatcamTools/ToolFilm.py:144 +#: flatcamGUI/FlatCAMGUI.py:6166 flatcamTools/ToolFilm.py:144 msgid "Scale Stroke:" msgstr "Scale Stroke:" -#: flatcamGUI/FlatCAMGUI.py:6004 flatcamTools/ToolFilm.py:146 +#: flatcamGUI/FlatCAMGUI.py:6168 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 " @@ -8066,11 +8195,11 @@ msgstr "" "thinner,\n" "therefore the fine features may be more affected by this parameter." -#: flatcamGUI/FlatCAMGUI.py:6019 +#: flatcamGUI/FlatCAMGUI.py:6183 msgid "Panelize Tool Options" msgstr "Panelize Tool Options" -#: flatcamGUI/FlatCAMGUI.py:6024 +#: flatcamGUI/FlatCAMGUI.py:6188 msgid "" "Create an object that contains an array of (x, y) elements,\n" "each element is a copy of the source object spaced\n" @@ -8080,11 +8209,11 @@ msgstr "" "each element is a copy of the source object spaced\n" "at a X distance, Y distance of each other." -#: flatcamGUI/FlatCAMGUI.py:6035 flatcamTools/ToolPanelize.py:147 +#: flatcamGUI/FlatCAMGUI.py:6199 flatcamTools/ToolPanelize.py:147 msgid "Spacing cols:" msgstr "Spacing cols:" -#: flatcamGUI/FlatCAMGUI.py:6037 flatcamTools/ToolPanelize.py:149 +#: flatcamGUI/FlatCAMGUI.py:6201 flatcamTools/ToolPanelize.py:149 msgid "" "Spacing between columns of the desired panel.\n" "In current units." @@ -8092,11 +8221,11 @@ msgstr "" "Spacing between columns of the desired panel.\n" "In current units." -#: flatcamGUI/FlatCAMGUI.py:6045 flatcamTools/ToolPanelize.py:156 +#: flatcamGUI/FlatCAMGUI.py:6209 flatcamTools/ToolPanelize.py:156 msgid "Spacing rows:" msgstr "Spacing rows:" -#: flatcamGUI/FlatCAMGUI.py:6047 flatcamTools/ToolPanelize.py:158 +#: flatcamGUI/FlatCAMGUI.py:6211 flatcamTools/ToolPanelize.py:158 msgid "" "Spacing between rows of the desired panel.\n" "In current units." @@ -8104,27 +8233,27 @@ msgstr "" "Spacing between rows of the desired panel.\n" "In current units." -#: flatcamGUI/FlatCAMGUI.py:6055 flatcamTools/ToolPanelize.py:165 +#: flatcamGUI/FlatCAMGUI.py:6219 flatcamTools/ToolPanelize.py:165 msgid "Columns:" msgstr "Columns:" -#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:167 +#: flatcamGUI/FlatCAMGUI.py:6221 flatcamTools/ToolPanelize.py:167 msgid "Number of columns of the desired panel" msgstr "Number of columns of the desired panel" -#: flatcamGUI/FlatCAMGUI.py:6064 flatcamTools/ToolPanelize.py:173 +#: flatcamGUI/FlatCAMGUI.py:6228 flatcamTools/ToolPanelize.py:173 msgid "Rows:" msgstr "Rows:" -#: flatcamGUI/FlatCAMGUI.py:6066 flatcamTools/ToolPanelize.py:175 +#: flatcamGUI/FlatCAMGUI.py:6230 flatcamTools/ToolPanelize.py:175 msgid "Number of rows of the desired panel" msgstr "Number of rows of the desired panel" -#: flatcamGUI/FlatCAMGUI.py:6074 +#: flatcamGUI/FlatCAMGUI.py:6238 msgid "Panel Type:" msgstr "Panel Type:" -#: flatcamGUI/FlatCAMGUI.py:6076 +#: flatcamGUI/FlatCAMGUI.py:6240 msgid "" "Choose the type of object for the panel object:\n" "- Gerber\n" @@ -8134,11 +8263,11 @@ msgstr "" "- Gerber\n" "- Geometry" -#: flatcamGUI/FlatCAMGUI.py:6085 +#: flatcamGUI/FlatCAMGUI.py:6249 msgid "Constrain within:" msgstr "Constrain within:" -#: flatcamGUI/FlatCAMGUI.py:6087 flatcamTools/ToolPanelize.py:195 +#: flatcamGUI/FlatCAMGUI.py:6251 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" @@ -8152,11 +8281,11 @@ msgstr "" "the final panel will have as many columns and rows as\n" "they fit completely within selected area." -#: flatcamGUI/FlatCAMGUI.py:6096 flatcamTools/ToolPanelize.py:204 +#: flatcamGUI/FlatCAMGUI.py:6260 flatcamTools/ToolPanelize.py:204 msgid "Width (DX):" msgstr "Width (DX):" -#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:206 +#: flatcamGUI/FlatCAMGUI.py:6262 flatcamTools/ToolPanelize.py:206 msgid "" "The width (DX) within which the panel must fit.\n" "In current units." @@ -8164,11 +8293,11 @@ msgstr "" "The width (DX) within which the panel must fit.\n" "In current units." -#: flatcamGUI/FlatCAMGUI.py:6105 flatcamTools/ToolPanelize.py:212 +#: flatcamGUI/FlatCAMGUI.py:6269 flatcamTools/ToolPanelize.py:212 msgid "Height (DY):" msgstr "Height (DY):" -#: flatcamGUI/FlatCAMGUI.py:6107 flatcamTools/ToolPanelize.py:214 +#: flatcamGUI/FlatCAMGUI.py:6271 flatcamTools/ToolPanelize.py:214 msgid "" "The height (DY)within which the panel must fit.\n" "In current units." @@ -8176,15 +8305,15 @@ msgstr "" "The height (DY)within which the panel must fit.\n" "In current units." -#: flatcamGUI/FlatCAMGUI.py:6121 +#: flatcamGUI/FlatCAMGUI.py:6285 msgid "Calculators Tool Options" msgstr "Calculators Tool Options" -#: flatcamGUI/FlatCAMGUI.py:6124 +#: flatcamGUI/FlatCAMGUI.py:6288 msgid "V-Shape Tool Calculator:" msgstr "V-Shape Tool Calculator:" -#: flatcamGUI/FlatCAMGUI.py:6126 +#: flatcamGUI/FlatCAMGUI.py:6290 msgid "" "Calculate the tool diameter for a given V-shape tool,\n" "having the tip diameter, tip angle and\n" @@ -8194,11 +8323,11 @@ msgstr "" "having the tip diameter, tip angle and\n" "depth-of-cut as parameters." -#: flatcamGUI/FlatCAMGUI.py:6137 flatcamTools/ToolCalculators.py:94 +#: flatcamGUI/FlatCAMGUI.py:6301 flatcamTools/ToolCalculators.py:94 msgid "Tip Diameter:" msgstr "Tip Diameter:" -#: flatcamGUI/FlatCAMGUI.py:6139 +#: flatcamGUI/FlatCAMGUI.py:6303 msgid "" "This is the tool tip diameter.\n" "It is specified by manufacturer." @@ -8206,11 +8335,11 @@ msgstr "" "This is the tool tip diameter.\n" "It is specified by manufacturer." -#: flatcamGUI/FlatCAMGUI.py:6147 +#: flatcamGUI/FlatCAMGUI.py:6311 msgid "Tip angle:" msgstr "Tip angle:" -#: flatcamGUI/FlatCAMGUI.py:6149 +#: flatcamGUI/FlatCAMGUI.py:6313 msgid "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." @@ -8218,7 +8347,7 @@ msgstr "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." -#: flatcamGUI/FlatCAMGUI.py:6159 +#: flatcamGUI/FlatCAMGUI.py:6323 msgid "" "This is depth to cut into material.\n" "In the CNCJob object it is the CutZ parameter." @@ -8226,11 +8355,11 @@ msgstr "" "This is depth to cut into material.\n" "In the CNCJob object it is the CutZ parameter." -#: flatcamGUI/FlatCAMGUI.py:6166 +#: flatcamGUI/FlatCAMGUI.py:6330 msgid "ElectroPlating Calculator:" msgstr "ElectroPlating Calculator:" -#: flatcamGUI/FlatCAMGUI.py:6168 flatcamTools/ToolCalculators.py:152 +#: flatcamGUI/FlatCAMGUI.py:6332 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 " @@ -8240,27 +8369,27 @@ msgstr "" "using a method like grahite ink or calcium hypophosphite ink or palladium " "chloride." -#: flatcamGUI/FlatCAMGUI.py:6178 flatcamTools/ToolCalculators.py:161 +#: flatcamGUI/FlatCAMGUI.py:6342 flatcamTools/ToolCalculators.py:161 msgid "Board Length:" msgstr "Board Length:" -#: flatcamGUI/FlatCAMGUI.py:6180 flatcamTools/ToolCalculators.py:165 +#: flatcamGUI/FlatCAMGUI.py:6344 flatcamTools/ToolCalculators.py:165 msgid "This is the board length. In centimeters." msgstr "This is the board length. In centimeters." -#: flatcamGUI/FlatCAMGUI.py:6186 flatcamTools/ToolCalculators.py:167 +#: flatcamGUI/FlatCAMGUI.py:6350 flatcamTools/ToolCalculators.py:167 msgid "Board Width:" msgstr "Board Width:" -#: flatcamGUI/FlatCAMGUI.py:6188 flatcamTools/ToolCalculators.py:171 +#: flatcamGUI/FlatCAMGUI.py:6352 flatcamTools/ToolCalculators.py:171 msgid "This is the board width.In centimeters." msgstr "This is the board width.In centimeters." -#: flatcamGUI/FlatCAMGUI.py:6193 flatcamTools/ToolCalculators.py:173 +#: flatcamGUI/FlatCAMGUI.py:6357 flatcamTools/ToolCalculators.py:173 msgid "Current Density:" msgstr "Current Density:" -#: flatcamGUI/FlatCAMGUI.py:6196 flatcamTools/ToolCalculators.py:177 +#: flatcamGUI/FlatCAMGUI.py:6360 flatcamTools/ToolCalculators.py:177 msgid "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." @@ -8268,11 +8397,11 @@ msgstr "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." -#: flatcamGUI/FlatCAMGUI.py:6202 flatcamTools/ToolCalculators.py:181 +#: flatcamGUI/FlatCAMGUI.py:6366 flatcamTools/ToolCalculators.py:181 msgid "Copper Growth:" msgstr "Copper Growth:" -#: flatcamGUI/FlatCAMGUI.py:6205 flatcamTools/ToolCalculators.py:185 +#: flatcamGUI/FlatCAMGUI.py:6369 flatcamTools/ToolCalculators.py:185 msgid "" "How thick the copper growth is intended to be.\n" "In microns." @@ -8280,11 +8409,11 @@ msgstr "" "How thick the copper growth is intended to be.\n" "In microns." -#: flatcamGUI/FlatCAMGUI.py:6218 +#: flatcamGUI/FlatCAMGUI.py:6382 msgid "Transform Tool Options" msgstr "Transform Tool Options" -#: flatcamGUI/FlatCAMGUI.py:6223 +#: flatcamGUI/FlatCAMGUI.py:6387 msgid "" "Various transformations that can be applied\n" "on a FlatCAM object." @@ -8292,47 +8421,47 @@ msgstr "" "Various transformations that can be applied\n" "on a FlatCAM object." -#: flatcamGUI/FlatCAMGUI.py:6233 +#: flatcamGUI/FlatCAMGUI.py:6397 msgid "Rotate Angle:" msgstr "Rotate Angle:" -#: flatcamGUI/FlatCAMGUI.py:6235 +#: flatcamGUI/FlatCAMGUI.py:6399 msgid "Angle for rotation. In degrees." msgstr "Angle for rotation. In degrees." -#: flatcamGUI/FlatCAMGUI.py:6242 +#: flatcamGUI/FlatCAMGUI.py:6406 msgid "Skew_X angle:" msgstr "Skew_X angle:" -#: flatcamGUI/FlatCAMGUI.py:6244 +#: flatcamGUI/FlatCAMGUI.py:6408 msgid "Angle for Skew/Shear on X axis. In degrees." msgstr "Angle for Skew/Shear on X axis. In degrees." -#: flatcamGUI/FlatCAMGUI.py:6251 +#: flatcamGUI/FlatCAMGUI.py:6415 msgid "Skew_Y angle:" msgstr "Skew_Y angle:" -#: flatcamGUI/FlatCAMGUI.py:6253 +#: flatcamGUI/FlatCAMGUI.py:6417 msgid "Angle for Skew/Shear on Y axis. In degrees." msgstr "Angle for Skew/Shear on Y axis. In degrees." -#: flatcamGUI/FlatCAMGUI.py:6260 +#: flatcamGUI/FlatCAMGUI.py:6424 msgid "Scale_X factor:" msgstr "Scale_X factor:" -#: flatcamGUI/FlatCAMGUI.py:6262 +#: flatcamGUI/FlatCAMGUI.py:6426 msgid "Factor for scaling on X axis." msgstr "Factor for scaling on X axis." -#: flatcamGUI/FlatCAMGUI.py:6269 +#: flatcamGUI/FlatCAMGUI.py:6433 msgid "Scale_Y factor:" msgstr "Scale_Y factor:" -#: flatcamGUI/FlatCAMGUI.py:6271 +#: flatcamGUI/FlatCAMGUI.py:6435 msgid "Factor for scaling on Y axis." msgstr "Factor for scaling on Y axis." -#: flatcamGUI/FlatCAMGUI.py:6279 +#: flatcamGUI/FlatCAMGUI.py:6443 msgid "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." @@ -8340,7 +8469,7 @@ msgstr "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." -#: flatcamGUI/FlatCAMGUI.py:6287 flatcamTools/ToolTransform.py:210 +#: flatcamGUI/FlatCAMGUI.py:6451 flatcamTools/ToolTransform.py:210 msgid "" "Scale the selected object(s)\n" "using the origin reference when checked,\n" @@ -8352,27 +8481,27 @@ msgstr "" "and the center of the biggest bounding box\n" "of the selected objects when unchecked." -#: flatcamGUI/FlatCAMGUI.py:6296 +#: flatcamGUI/FlatCAMGUI.py:6460 msgid "Offset_X val:" msgstr "Offset_X val:" -#: flatcamGUI/FlatCAMGUI.py:6298 +#: flatcamGUI/FlatCAMGUI.py:6462 msgid "Distance to offset on X axis. In current units." msgstr "Distance to offset on X axis. In current units." -#: flatcamGUI/FlatCAMGUI.py:6305 +#: flatcamGUI/FlatCAMGUI.py:6469 msgid "Offset_Y val:" msgstr "Offset_Y val:" -#: flatcamGUI/FlatCAMGUI.py:6307 +#: flatcamGUI/FlatCAMGUI.py:6471 msgid "Distance to offset on Y axis. In current units." msgstr "Distance to offset on Y axis. In current units." -#: flatcamGUI/FlatCAMGUI.py:6313 +#: flatcamGUI/FlatCAMGUI.py:6477 msgid "Mirror Reference" msgstr "Mirror Reference" -#: flatcamGUI/FlatCAMGUI.py:6315 flatcamTools/ToolTransform.py:314 +#: flatcamGUI/FlatCAMGUI.py:6479 flatcamTools/ToolTransform.py:314 msgid "" "Flip the selected object(s)\n" "around the point in Point Entry Field.\n" @@ -8394,11 +8523,11 @@ msgstr "" "Or enter the coords in format (x, y) in the\n" "Point Entry field and click Flip on X(Y)" -#: flatcamGUI/FlatCAMGUI.py:6326 +#: flatcamGUI/FlatCAMGUI.py:6490 msgid " Mirror Ref. Point:" msgstr " Mirror Ref. Point:" -#: flatcamGUI/FlatCAMGUI.py:6328 flatcamTools/ToolTransform.py:327 +#: flatcamGUI/FlatCAMGUI.py:6492 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" @@ -8408,11 +8537,11 @@ msgstr "" "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" -#: flatcamGUI/FlatCAMGUI.py:6345 +#: flatcamGUI/FlatCAMGUI.py:6509 msgid "SolderPaste Tool Options" msgstr "SolderPaste Tool Options" -#: flatcamGUI/FlatCAMGUI.py:6350 +#: flatcamGUI/FlatCAMGUI.py:6514 msgid "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." @@ -8420,47 +8549,47 @@ msgstr "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." -#: flatcamGUI/FlatCAMGUI.py:6361 +#: flatcamGUI/FlatCAMGUI.py:6525 msgid "Diameters of nozzle tools, separated by ','" msgstr "Diameters of nozzle tools, separated by ','" -#: flatcamGUI/FlatCAMGUI.py:6368 +#: flatcamGUI/FlatCAMGUI.py:6532 msgid "New Nozzle Dia:" msgstr "New Nozzle Dia:" -#: flatcamGUI/FlatCAMGUI.py:6370 flatcamTools/ToolSolderPaste.py:103 +#: flatcamGUI/FlatCAMGUI.py:6534 flatcamTools/ToolSolderPaste.py:103 msgid "Diameter for the new Nozzle tool to add in the Tool Table" msgstr "Diameter for the new Nozzle tool to add in the Tool Table" -#: flatcamGUI/FlatCAMGUI.py:6378 flatcamTools/ToolSolderPaste.py:166 +#: flatcamGUI/FlatCAMGUI.py:6542 flatcamTools/ToolSolderPaste.py:166 msgid "Z Dispense Start:" msgstr "Z Dispense Start:" -#: flatcamGUI/FlatCAMGUI.py:6380 flatcamTools/ToolSolderPaste.py:168 +#: flatcamGUI/FlatCAMGUI.py:6544 flatcamTools/ToolSolderPaste.py:168 msgid "The height (Z) when solder paste dispensing starts." msgstr "The height (Z) when solder paste dispensing starts." -#: flatcamGUI/FlatCAMGUI.py:6387 flatcamTools/ToolSolderPaste.py:174 +#: flatcamGUI/FlatCAMGUI.py:6551 flatcamTools/ToolSolderPaste.py:174 msgid "Z Dispense:" msgstr "Z Dispense:" -#: flatcamGUI/FlatCAMGUI.py:6389 flatcamTools/ToolSolderPaste.py:176 +#: flatcamGUI/FlatCAMGUI.py:6553 flatcamTools/ToolSolderPaste.py:176 msgid "The height (Z) when doing solder paste dispensing." msgstr "The height (Z) when doing solder paste dispensing." -#: flatcamGUI/FlatCAMGUI.py:6396 flatcamTools/ToolSolderPaste.py:183 +#: flatcamGUI/FlatCAMGUI.py:6560 flatcamTools/ToolSolderPaste.py:183 msgid "Z Dispense Stop:" msgstr "Z Dispense Stop:" -#: flatcamGUI/FlatCAMGUI.py:6398 flatcamTools/ToolSolderPaste.py:185 +#: flatcamGUI/FlatCAMGUI.py:6562 flatcamTools/ToolSolderPaste.py:185 msgid "The height (Z) when solder paste dispensing stops." msgstr "The height (Z) when solder paste dispensing stops." -#: flatcamGUI/FlatCAMGUI.py:6405 flatcamTools/ToolSolderPaste.py:191 +#: flatcamGUI/FlatCAMGUI.py:6569 flatcamTools/ToolSolderPaste.py:191 msgid "Z Travel:" msgstr "Z Travel:" -#: flatcamGUI/FlatCAMGUI.py:6407 flatcamTools/ToolSolderPaste.py:193 +#: flatcamGUI/FlatCAMGUI.py:6571 flatcamTools/ToolSolderPaste.py:193 msgid "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." @@ -8468,19 +8597,19 @@ msgstr "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." -#: flatcamGUI/FlatCAMGUI.py:6415 flatcamTools/ToolSolderPaste.py:200 +#: flatcamGUI/FlatCAMGUI.py:6579 flatcamTools/ToolSolderPaste.py:200 msgid "Z Toolchange:" msgstr "Z Toolchange:" -#: flatcamGUI/FlatCAMGUI.py:6417 flatcamTools/ToolSolderPaste.py:202 +#: flatcamGUI/FlatCAMGUI.py:6581 flatcamTools/ToolSolderPaste.py:202 msgid "The height (Z) for tool (nozzle) change." msgstr "The height (Z) for tool (nozzle) change." -#: flatcamGUI/FlatCAMGUI.py:6424 flatcamTools/ToolSolderPaste.py:208 +#: flatcamGUI/FlatCAMGUI.py:6588 flatcamTools/ToolSolderPaste.py:208 msgid "XY Toolchange:" msgstr "XY Toolchange:" -#: flatcamGUI/FlatCAMGUI.py:6426 flatcamTools/ToolSolderPaste.py:210 +#: flatcamGUI/FlatCAMGUI.py:6590 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." @@ -8488,19 +8617,19 @@ msgstr "" "The X,Y location for tool (nozzle) change.\n" "The format is (x, y) where x and y are real numbers." -#: flatcamGUI/FlatCAMGUI.py:6434 flatcamTools/ToolSolderPaste.py:217 +#: flatcamGUI/FlatCAMGUI.py:6598 flatcamTools/ToolSolderPaste.py:217 msgid "Feedrate X-Y:" msgstr "Feedrate X-Y:" -#: flatcamGUI/FlatCAMGUI.py:6436 flatcamTools/ToolSolderPaste.py:219 +#: flatcamGUI/FlatCAMGUI.py:6600 flatcamTools/ToolSolderPaste.py:219 msgid "Feedrate (speed) while moving on the X-Y plane." msgstr "Feedrate (speed) while moving on the X-Y plane." -#: flatcamGUI/FlatCAMGUI.py:6443 flatcamTools/ToolSolderPaste.py:225 +#: flatcamGUI/FlatCAMGUI.py:6607 flatcamTools/ToolSolderPaste.py:225 msgid "Feedrate Z:" msgstr "Feedrate Z:" -#: flatcamGUI/FlatCAMGUI.py:6445 flatcamTools/ToolSolderPaste.py:227 +#: flatcamGUI/FlatCAMGUI.py:6609 flatcamTools/ToolSolderPaste.py:227 msgid "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." @@ -8508,23 +8637,26 @@ msgstr "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." -#: flatcamGUI/FlatCAMGUI.py:6453 flatcamTools/ToolSolderPaste.py:234 +#: flatcamGUI/FlatCAMGUI.py:6617 flatcamTools/ToolSolderPaste.py:234 msgid "Feedrate Z Dispense:" msgstr "Feedrate Z Dispense:" -#: flatcamGUI/FlatCAMGUI.py:6455 flatcamTools/ToolSolderPaste.py:236 +#: flatcamGUI/FlatCAMGUI.py:6619 +#| msgid "" +#| "Feedrate (speed) while moving up vertically\n" +#| " to Dispense position (on Z plane)." msgid "" "Feedrate (speed) while moving up vertically\n" -" to Dispense position (on Z plane)." +"to Dispense position (on Z plane)." msgstr "" "Feedrate (speed) while moving up vertically\n" -" to Dispense position (on Z plane)." +"to Dispense position (on Z plane)." -#: flatcamGUI/FlatCAMGUI.py:6463 flatcamTools/ToolSolderPaste.py:243 +#: flatcamGUI/FlatCAMGUI.py:6627 flatcamTools/ToolSolderPaste.py:243 msgid "Spindle Speed FWD:" msgstr "Spindle Speed FWD:" -#: flatcamGUI/FlatCAMGUI.py:6465 flatcamTools/ToolSolderPaste.py:245 +#: flatcamGUI/FlatCAMGUI.py:6629 flatcamTools/ToolSolderPaste.py:245 msgid "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." @@ -8532,19 +8664,19 @@ msgstr "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." -#: flatcamGUI/FlatCAMGUI.py:6473 flatcamTools/ToolSolderPaste.py:252 +#: flatcamGUI/FlatCAMGUI.py:6637 flatcamTools/ToolSolderPaste.py:252 msgid "Dwell FWD:" msgstr "Dwell FWD:" -#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:254 +#: flatcamGUI/FlatCAMGUI.py:6639 flatcamTools/ToolSolderPaste.py:254 msgid "Pause after solder dispensing." msgstr "Pause after solder dispensing." -#: flatcamGUI/FlatCAMGUI.py:6482 flatcamTools/ToolSolderPaste.py:260 +#: flatcamGUI/FlatCAMGUI.py:6646 flatcamTools/ToolSolderPaste.py:260 msgid "Spindle Speed REV:" msgstr "Spindle Speed REV:" -#: flatcamGUI/FlatCAMGUI.py:6484 flatcamTools/ToolSolderPaste.py:262 +#: flatcamGUI/FlatCAMGUI.py:6648 flatcamTools/ToolSolderPaste.py:262 msgid "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." @@ -8552,11 +8684,11 @@ msgstr "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." -#: flatcamGUI/FlatCAMGUI.py:6492 flatcamTools/ToolSolderPaste.py:269 +#: flatcamGUI/FlatCAMGUI.py:6656 flatcamTools/ToolSolderPaste.py:269 msgid "Dwell REV:" msgstr "Dwell REV:" -#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:271 +#: flatcamGUI/FlatCAMGUI.py:6658 flatcamTools/ToolSolderPaste.py:271 msgid "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." @@ -8564,23 +8696,23 @@ msgstr "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." -#: flatcamGUI/FlatCAMGUI.py:6501 flatcamTools/ToolSolderPaste.py:277 +#: flatcamGUI/FlatCAMGUI.py:6665 flatcamTools/ToolSolderPaste.py:277 msgid "PostProcessors:" msgstr "PostProcessors:" -#: flatcamGUI/FlatCAMGUI.py:6503 flatcamTools/ToolSolderPaste.py:279 +#: flatcamGUI/FlatCAMGUI.py:6667 flatcamTools/ToolSolderPaste.py:279 msgid "Files that control the GCode generation." msgstr "Files that control the GCode generation." -#: flatcamGUI/FlatCAMGUI.py:6533 flatcamGUI/FlatCAMGUI.py:6539 +#: flatcamGUI/FlatCAMGUI.py:6697 flatcamGUI/FlatCAMGUI.py:6703 msgid "Idle." msgstr "Idle." -#: flatcamGUI/FlatCAMGUI.py:6563 +#: flatcamGUI/FlatCAMGUI.py:6727 msgid "Application started ..." msgstr "Application started ..." -#: flatcamGUI/FlatCAMGUI.py:6564 +#: flatcamGUI/FlatCAMGUI.py:6728 msgid "Hello!" msgstr "Hello!" @@ -8659,7 +8791,7 @@ msgid "Gerber Object" msgstr "Gerber Object" #: flatcamGUI/ObjectUI.py:182 flatcamGUI/ObjectUI.py:517 -#: flatcamGUI/ObjectUI.py:839 flatcamGUI/ObjectUI.py:1372 +#: flatcamGUI/ObjectUI.py:839 flatcamGUI/ObjectUI.py:1382 msgid "Name:" msgstr "Name:" @@ -9082,11 +9214,11 @@ msgstr "" "grayed out and Cut Z is automatically calculated from the newly \n" "showed UI form entries named V-Tip Dia and V-Tip Angle." -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465 msgid "Dia" msgstr "Dia" -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465 msgid "TT" msgstr "TT" @@ -9393,11 +9525,16 @@ msgstr "CNC Job Object" msgid "Plot kind:" msgstr "Plot kind:" -#: flatcamGUI/ObjectUI.py:1378 +#: flatcamGUI/ObjectUI.py:1369 +#| msgid "Plot Options:" +msgid "Display Annotation:" +msgstr "Display Annotation:" + +#: flatcamGUI/ObjectUI.py:1388 msgid "Travelled dist.:" msgstr "Travelled dist.:" -#: flatcamGUI/ObjectUI.py:1381 flatcamGUI/ObjectUI.py:1388 +#: flatcamGUI/ObjectUI.py:1391 flatcamGUI/ObjectUI.py:1398 msgid "" "This is the total travelled distance on X-Y plane.\n" "In current units." @@ -9405,11 +9542,11 @@ msgstr "" "This is the total travelled distance on X-Y plane.\n" "In current units." -#: flatcamGUI/ObjectUI.py:1416 +#: flatcamGUI/ObjectUI.py:1429 msgid "CNC Tools Table" msgstr "CNC Tools Table" -#: flatcamGUI/ObjectUI.py:1419 +#: flatcamGUI/ObjectUI.py:1432 msgid "" "Tools in this CNCJob object used for cutting.\n" "The tool diameter is used for plotting on canvas.\n" @@ -9431,27 +9568,27 @@ msgstr "" "The 'Tool type'(TT) can be circular with 1 to 4 teeths(C1..C4),\n" "ball(B), or V-Shaped(V)." -#: flatcamGUI/ObjectUI.py:1453 +#: flatcamGUI/ObjectUI.py:1466 msgid "P" msgstr "P" -#: flatcamGUI/ObjectUI.py:1459 +#: flatcamGUI/ObjectUI.py:1472 msgid "Update Plot" msgstr "Update Plot" -#: flatcamGUI/ObjectUI.py:1461 +#: flatcamGUI/ObjectUI.py:1474 msgid "Update the plot." msgstr "Update the plot." -#: flatcamGUI/ObjectUI.py:1468 +#: flatcamGUI/ObjectUI.py:1481 msgid "Export CNC Code:" msgstr "Export CNC Code:" -#: flatcamGUI/ObjectUI.py:1476 +#: flatcamGUI/ObjectUI.py:1489 msgid "Prepend to CNC Code:" msgstr "Prepend to CNC Code:" -#: flatcamGUI/ObjectUI.py:1479 +#: flatcamGUI/ObjectUI.py:1492 msgid "" "Type here any G-Code commands you would\n" "like to add to the beginning of the generated file." @@ -9459,11 +9596,11 @@ msgstr "" "Type here any G-Code commands you would\n" "like to add to the beginning of the generated file." -#: flatcamGUI/ObjectUI.py:1489 +#: flatcamGUI/ObjectUI.py:1502 msgid "Append to CNC Code" msgstr "Append to CNC Code" -#: flatcamGUI/ObjectUI.py:1513 +#: flatcamGUI/ObjectUI.py:1526 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -9485,19 +9622,19 @@ msgstr "" "that has 'toolchange_custom' in it's name and this is built\n" "having as template the 'Toolchange Custom' posprocessor file." -#: flatcamGUI/ObjectUI.py:1561 +#: flatcamGUI/ObjectUI.py:1574 msgid "z_cut = depth where to cut" msgstr "z_cut = depth where to cut" -#: flatcamGUI/ObjectUI.py:1562 +#: flatcamGUI/ObjectUI.py:1575 msgid "z_move = height where to travel" msgstr "z_move = height where to travel" -#: flatcamGUI/ObjectUI.py:1580 +#: flatcamGUI/ObjectUI.py:1593 msgid "View CNC Code" msgstr "View CNC Code" -#: flatcamGUI/ObjectUI.py:1583 +#: flatcamGUI/ObjectUI.py:1596 msgid "" "Opens TAB to view/modify/print G-Code\n" "file." @@ -9505,11 +9642,11 @@ msgstr "" "Opens TAB to view/modify/print G-Code\n" "file." -#: flatcamGUI/ObjectUI.py:1589 +#: flatcamGUI/ObjectUI.py:1602 msgid "Save CNC Code" msgstr "Save CNC Code" -#: flatcamGUI/ObjectUI.py:1592 +#: flatcamGUI/ObjectUI.py:1605 msgid "" "Opens dialog to save G-Code\n" "file." @@ -11343,6 +11480,14 @@ msgstr "" "Select tools.\n" "Modify parameters." +#: flatcamTools/ToolSolderPaste.py:236 +msgid "" +"Feedrate (speed) while moving up vertically\n" +" to Dispense position (on Z plane)." +msgstr "" +"Feedrate (speed) while moving up vertically\n" +" to Dispense position (on Z plane)." + #: flatcamTools/ToolSolderPaste.py:290 msgid "Generate GCode" msgstr "Generate GCode" @@ -11780,6 +11925,9 @@ msgstr "[WARNING_NOTCL] No object selected. Please Select an object to offset!" msgid "CNCJob objects can't be offseted." msgstr "CNCJob objects can't be offseted." +#~ msgid "Disable" +#~ msgstr "Disable" + #~ msgid "[WARNING_NOTCL] Move cancelled. No shape selected." #~ msgstr "[WARNING_NOTCL] Move cancelled. No shape selected." diff --git a/locale/ro/LC_MESSAGES/strings.mo b/locale/ro/LC_MESSAGES/strings.mo index 41177036e5e693370045c649ff36d2cc3ad53d70..72ea2654369830f704a564f690622e51f175b534 100644 GIT binary patch delta 40878 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 delta 39285 zcmZwQ1$Y%l!0z!qf@^S3a47B$3GVJ5+}-Wq?iQ@LTk#ZkDcWMiiWe=kg%+3le|LuO z_PfvB=h^yOo%U$Y{$FAapGYtT;O$_lnBnQWu)P5jDyFKaslTOf!HKG zu>OT9iGRlAn0&e8&^9L@s)Aw|1uIyqS?i##YlMF6i%D@1s$nxR5iUg4w*^yjf9FRx z;5e62H~b5OFy;!!Nr0(P73D%zPyth5Q`D39xA95V)u;v@ww^>a{2a!_>o)!ngSfx* z7l9<`U1~RDr>Qq&MK3h90Q4o z=O*wazvGn0w8YEZFcr7A1~4`05jMUPb=^7C4IW@z{D5jmjGK4{H^?Qt8r z9d+FqR73B@_5|E6e?x*Uj339C4pksOswXO;Zd4yrU{}-)$D?{A!n)qN-}XJc^^)HRhcKDM^@LET^ssv+}GUB1fZ??=t%^VVA!O#GRR$BgH3 z>UimP%t?BeAdiy^7or~cOn`uv%Ws$wU!b}yVFHiS3JYOBT!1ApD51wGi#1UVo`dR% z%@_suV<9|>KKzK9?O%~q?Lphp&D2Z)#A3O8}>(a zsO$EkmfsoF?7xhv_YP7n;5;`0=RN9zXo*e1q^O3aL)|bJs-luM zzk-d|M%}mxs^Yeo1$$y;T!3ZpcPx!rlX#qS9)<$*X#E#WX2zro_NBlg{09>xH%}NX zg=ttSEKYiM%#Izg9nM8}!@}pplc)4J3ouG5kJA&EqIx7jYLC0ahM zta_y}PuveH5+8+n;2oQz3>JeXYw-lkprz#TTfC{DbOI zZ(5HNP(l!adKiq#=xZH~nTXFq4b2|ZYB-IW3%{XO!=I?@qNOu8NP;S#0hONLrkAnt zT9}XYmg!jkuL;a1L6d2GdNY>aqc(~)_zw4@w&qYR9~e>+mD$ z#;Y>f9z&HsZR6Kb^*%+dntuZXG?t$+D^AR8D%^n~#IK^p@U1mz7V{*9usi8t7>-+U z04B_8ZZH|uz}CTRg`J6?LamnkIXq4mCUe%DX1UGHWxRoN$WN2o<4nLEs2(ku#~p%zQru6n4+ z)dcmn>xSAeMq)#pg4+8Zp(dRtuX!gVN6n4gs2#L2YW?>>_1t_^eY;UTaSnC;BTTRL z|Ajy)64K=}wn9~~996*?)F-3osFzUm{2nJa2BW&NCg#LGsO7f;weeg)Jy41Qrd$qG zycTM|XoIo2zcZYGS~vy$xC}K(R->M58@l@dYSLUmO{(889sYr;I9@?hE*T|3jd2{nsPp&IfVZo;Ry9wQ2w$yBsJ4XTfNfVQZ~ z)(LgPo~U|;pqA@+)Et;onDyU)zzP!d0plZT43ifz@lvRGGaDa;8iHl0ihe}(z;V=m z@dVXlUrsp-&0D6ddOlY>B>-=C#`f z=M!In>ZuZ?JkBy~h?<-qtaU;?P6y%}u`nhMGq2<7n3woi)N0y|budPtw7GFJ)Lhtu z8k?eJ%=)c{-w|(a;}cL_y#OoXI@G)46>5&WL3R08)DXlhYhGGGs12? zUn30;IEgEomZm{nm=QI$xlxm(gpF50?Pv|H9Z^p(2s7bWY=oOoLm91-*{Ir}cDi+_ z@~2Qeb{V6q&#w_ELc%@N!&a1y&|%+C<0jzz0^oOw6_)f4Hen;yu4TKC0JJyQm?zH6e}K-97u zg{5&kYUs|OCgB&%g@tMu+oO6c0t4!*0|ZK7%9>_5H9}36A*dElM%{QnYEqrX`1lLz zwR+$B2dd$3te#q?d~DPfpAa=klcO4(t`_TGW1N`;-Jk&K2BlFIS3>Pzb!>iH)DZPT z_1I+8nBGL~3y*O+e!;yst+vUpQpZg42B>nKQCs@RI;?-q$|W}AAZ8$b71fZBs3-E) zH7$>WiYGzM?zE_$Duf!63O3#X)kEEFd^qYp({1_|)Lc3oAP|?p9b^=om#7<;tZ%m9 za+rX4W7LhhT8E+sebMU(f`cjs(=@Ypv%{ zUGvHszmcgZC#vNIF$All=1h0g4Tqqfcp|Dt7NH(&1FGC%)B~PJt%iG8L+d}NvBxP$ zLO806=b@ftEvn+(sJG!s)MUGby1^6F6TL;9aY z-~W9GXv{}oFC34Wr5{l@O3>8YI4$NUo&!};D{CLr4aQohBOfQ71z45z!_9b$5|7*5 zyfgB*@Hm4=AByhh|91pbLDZJ!M)6TCPlak&M${8!N0lprTF+%rV_XSUz80!nV^qW2 zVGi9q8{K>OV)p50yju_hy}vU+b%^bvp&nA#;_G?P7FY8rE^h}^N95-h7f;- zIWbmivriPow8ZP8y1XB%p(9X3Ik7eCUkP(>8 z^)|eTYFM9crppGQ;-m2kPDCcUGoic3VZk_$dhn!Jx|hePOMa8y9_Ju#LCt|4eaz4f z#@Jf_lL#nd9_mR}pqAfyn|>HI7tW%#)?28ad5hXm{C&;!NpTbLbg2BFaT@-H>hiAr z%+L--)i({}aDQhBf$_KrOJTwOX43St9zs2F%mJp0>{8i-;0VLK~;DXHTxf;*6}A)h4}}XiYj0Z;x#Zc4#iMh zW%D0l7UC~49VQ)QzVa!Gs<-|i*1uZXjf5^Z2-U*Js8#VNX2N$k5Q7JsoohZ0Af9N5 z$2pEuP(xT}sM)HUqvE|$^$kPaXDq6RW?}{0FqHLQhQMnQ`e319=7No=F4}=wX2(!t zcnK%sJyef%;d-U_Mh(db)IKp4zr!Wi15aaNEH>P{J^P?~bbWw;y8J$>!pEqVzeF|Q zJ*wguBg~DGpz<@I(sS8(aSS0|0o8LIPz~vc?k64899n{!GpkTT8CYin`%o8LKvjGf z)qoeM9{6n2V~;drmmIyM=Rs{)`LR7#MD@rPRF@yX#4N|tsG+<&$}G=lquuYK1)PvE z=F8)1s4cN4s_O=$8nhbKph(Ps$1pcO#q5}3tjB4N6;M0nYSftTL-pt}RF9moUbg;* zF|__45zzbnFKd)><~5uGdyqZ_^+aE+vB#SyPk|b`)Tj@o=}@z}IO^?I7xh5xP(9fL zHTj04%FRc2{ck0pCq0PjvY)NDP%VFA^Z!Qmgm;3eFdnMHU>h%t+CeMY_$X8ZW}&Y8 z9*f|5R0AJkKrMSiKw}(rqItb0#)Qf%1=ODKhMV3q9#`)>c)Ff zlkPZb(w;#*;8h#HKausXmc1ZBv+)C}WpO5%NfnH`Fdyo|lBgS2MqSq!)xh?+0*9i? zr=9F^YGQWmtaJ>+r>LRMHpSzFVCWRqrS|l260}T)pq_L-Y7(tMeew7MR>kwEw_(bu z=EjXs*LO#~z9(WXT#K4~*Dx#I!F3peS6^A&ZhaRZppBu#bTgUyp~iGDstaeMo@lXk z9jYgGU~$IckWK$Q!}MVEndS*oq8gAJb$ub!94l?}>!4n8fer*TdjqI-JRjAin@~M* z6xHRwpvL^3jsIoi&MecQc&M&Ti5kk>s2i6-)l(gHeN)sBcSd?R;0(11V{Cy4R6|yy zD%gW+z;T;@1vT~$Q9bmxjekTvarD{7c&Lx{Nl@QztA@I+qs{M!QMCSt5>Qu+vKb3d zUAzo+!6sCT_n;bb7PH_j8;>%_EYrl8gY-10hEzp8Kpj*MG{>IU1-s*IjKck$>T}I9 zsf)UCW7Lh>+4O#>1`a`W;Vje!vK)1zJ*dfg*!q+87t{uI9d+GpR6|~%dhR0zR8f=& zGY3+mG76zu9)`-ViXqqrHHpTcx^ymTsJ5XRcmma9zgeGQZ{lyUDt4Y{R>O~|a`)%4 z{&nG>Bxs|EI^R4=Y*Y^^`#;Vik24o*VQYMXYCzTRjZIMv=z{8@K{h@bRnbh;6TP+i7n>dovZg`} zZDwmeYpDPMjbRm31-0=zY=PPrCSrL!iWM;C67vzOHtHkQEX; zT#E%!4Y-4)@CB+%b8I&0ovZ^;b7L&FqG#8k=1A-f+Uzi&;SOO(@*ksmuGUUt8`P8bM>TY;jn77P`3lqnuDAJHcC!98 zMh9$xqo}SsjjH$(YEnKzRs0s!g;95ziV~tegeFIIeJa#Wm>t#i`H`)_DT&*NUyJlO zqli!X(R?u*Z%=?vt<=zVkH@)*=k|G=78G1}&`i1*hs-yV&!FZ)mcwQbUySvL$3J40 zSv%A|upMV%vZH1QHeyxc7qAAVI_7bjVHeDSrvn7S2)x5ASoFC0+OIX{CB6ys;awX~ zbi#~b1&koQCpN$sC(T9{jtO|eRj3C3c*^{MBJNLS2-{8S}9Jduo=?U)YcMif6q4$xrdz+@RneW;u36?VP<)>wlPyPey&lj6i)x z+=^PxC;njlYv;Q{f@b?m9EfROn6L8}qV|U*FU`J?61A=~pk6{bQ5B6xy#t!dy#F#_0$)kcmYC{K^Tp)=>pHAP`VE|jS^hE`%yvvbd@t$&&Z9P< z$Cw1)qIw|i-==3$p&FPDm7WvTQ^f-W*p!?KsO9wa6+^&AROGdpEI<5fmZ$T^>G zT*QX>E2_tGzcXL=Pe#3@{=um{(D(1ncRI6wG!1Ny+REFY-UWS;2M9PrY{qz01Losu z+>G6^-Y1W90gq!+ob%cAz$R1|?m@jXj$6;8_K#n!A25`7>Mv&Knxh`L9s0HY`x4NY z3_?{n9@Vw8P+h$Q^}gPSVR!)bl5xIzoDC2ii{TC&fPY~)cI4F*i=H@xU5Wqd@w)Yt z^O8=y0hZMIZ%v>!F1P-RA;c^CyzYk5(K-wD328r0#@}%)_VRn(8^6aoibwIfzjAQ` zn-Xst)!cA5YRr$L9`p(Z+?NXhbxERVUia(w^r+dL8TI5vQDavX)$(Sj9_xsj8~rgG zj=-$A3DtAIqK4)ns>fc~_`j(8eu?G{xa&S|bg%nmbX)8~#&GPQ3$PQ`kKuJc{T{}Q z#AC$tx?5{5Y(W?IMs4AjVtL&;^8x1(?-bkXeoNLD$MoD*RJrSz1D&`5ue)4w#`QXB ziPu4mXJtH)ibQW#sqZXJXDw8M7=hnr7>Ms z5|us#zr(dy884wKN)zmLKWcSAHS_@LiCc5?p^{=;8@ONJK({EV}Cf*fQa0+TQ{Dw>xCssDokUFUM{}>F#JE*P? z$!;E`rgaW#Xm6l;Ds>KHI4XTrj(`a~AwiQSTTU}(t+6rj)2M`p|7YpkfX5Kg8QQyz6|wX53v@eD&lp&3DpfN5)a%Z zpp2|V%>{!|v-bej!Pl4qD-<)!v=tU7J_l9qBD$-kxQUlU?RdR04{k;+@4KiWN?3xo z9+p8G7H~!q&U91aHLvakk)RPu3ZS0A9qSe;x*4Smt1C&BN zX?s*pMW80%WmJzQD{J8O^aMbcU zY5k0v3;8OTEjZlzJ?a6jqb6tEie`1?#egQ=NCH~_Kcl)VaV29@)JCxawNE_78koPb znXIExLv#_t@IC5Di&ZfOP?PW|YWYU3Y9?oO)Z1`CRo1_r=p+dmySJ#9My6`!!aArM z%tf_)KWgmn+4PvzO@1C!enZq88e-!sQFG=LY6pFddI^=PVIHJ+jevQ=qa>)SW7IS) zY>FC+v8W1nqh|R%)MQOo%UstH^<+Pww$`_(8>O#py1YB;ZMYJL<6YFw7+%M0V37d= zbx8=SYvw>Z)T};%nuPCAH!fGtIK;XgHKxx{lPb8r*Zq3FH|m4R8B{~EHZb{pQ4jPJ zs==R7Lmw#H&?L-6y)@Lrp01S-JS_J%?N0j%tvjNS5XzdN3GK=&CD1!!qmh^V=7#Zy1_vV#uu0v z<1{xnNRP>hmqX357N{PWhVk$SX3_e;NI)CRN7Q6X+rrF&il~;Qmf-0=hwS>qHD8z62QTgMnn{56i)C0XkZOOr{&3zhU2=TEP&=aj8AWxtw`rR6^{*@53o$0D9n38xo)RTszJ|B$6 z5L}0<=rkt5m#ChL(%y7&9&2ON92$ihf^DcFyI|uVY<|)X0aJ1L4yNVpQJ-+8p=RqT z)DuSSXe^AXs1vH|=U@m%qI%{UYOLR3B23%K>wbTrAZjw!Kuy|?sL2`;AfT?@gh}y| zjXy`-AgHtH>U^jtu8pdwBPPR9sB()?U4H;IG>@!Nx|lhT0gI4c1@(YqP(2wqKtNA) zAJy_WUCrz-h>EvF=cFJ&J)|9;k+mM{S|A ztt)N*4%7pjMb&o?HAz3BdN9#Qlb;baq(w*4|0>X!1lij<8TEv#P|IYW(hIOvqn_k> zq?zS$el*u*N9}awFa*1xuAgG_SE3$hzx6EcyX4D0R zQR})gYK%LgDjsT`iMrt$R6};6hUx_B0WMnaqbA`iRJlOnmtKbzOHlRiLDhc(HP?m5e1`S4 z{!_d$pY?iL4zTAI&bjGhLSSJv$cVtK$=VftplTKbR-~1FI1Ce>9(TYT|g} zqfpB&_9w6NCuYa(nCdg@e+q%031|aq{>4<(!8#oE9n5(ch5VIYO;@hRTEusucE0F* z*H8vweN2Hfu_sb;EFiGSxcHt_la?ptUy37Q;h(T6{v#%eoiLpqGD@vM#K z_W9ff7eja5qsFugYB`TV&4~@DIdK}*_4iS$=QV0*qWJ?pcZ`$zO-5GKSeL+jSX1fr zz-Uxg&x_)7$9Oa9hI>&zq`Hji;-^u4n$=E>XyyTeP;(*})kE2>1yHZ+k^usG!gi=h z(-YOz!%-EDMYVXU&0lWait3?5s3$p(Iq^2?N#jH}50VDeusk@JhSoyujOSvQ`vo2n zP(`m%6?tOXmZOFw7&YlKVOBhD{S(#o$zz!(2}R|1KrOeKI06@=hAt$w&zXUvQ9Y6* z4n3#!pPqnrzQU+3s*h>01%}`Vyp79oo#JtQ?w4xW;`!X)VjqSbNPmw5u~mGZ`$g<6 zY)U+R5Iw?^568JUBZ1GIyjc?Y_=pRgOZ|#A_O%DvY@)K zB&w_HVK}x!jp-@W-1rOi7L1Y9Ovdz>i+E`)iM`PM`hP0{ReTNA6E9Kk{n*KT?v|Vd zYZI?;U5ENe_6hYFE^~69yVF%c&GvR!0*7IB+=p6ru~L{hQWzT&Z;$T3|2srL6<$T{ zaGsQA(j-AWVL?>I6;R8w1!~f^MlG{$sG*yJ>Z!Tb#h8QmYE(U!QDgr*YEr*S$@m;kjAr9kc78Bje^3e#dUYXH?l%TN{W$D?@KIyJQ!!rEy}esk1)I-?reAN2sk z)7bSti3Bab?@=w?h-%?}?1jIe#6vDz_)r_4i)zp=>qXS6dWl8x6KZZ03Na7V z0@dR~0|YciYw-rY#SwThtmT z!P(60E`|k2uZJ3nN!EE-kN7IoocM?uT3>e4({Yd?2so(-=nIL=s4nk#5iicVkD)mX{vl z{>~f%y76<=4GZNn%d9+VwpPaaSO;_BdaR7sQIjr1ev=-G`iiML{(zHhdhr52ryKFk zm=ABD=0x0rtbetvIRTB~1T2IHQS1CI4#khy0|yo|?}BH@*f|pln^`{Fx*XL5TTmO* zNz}4^j{1rxP7yO?39vZvhDBKa+S%ripe^xsZE7`>R8wH?sC5soMQ zB&tC*i<_5L6V&o+g&Ol7s39DL8mf_~p_yGgU@llmg5Gu;P+h(ab>UvrSRY4Sa1~YV zkH8^$bQCTlVrNjxuVQt!kN{0XPwGt}f96ewwKRH~HOSSndNVg?FKux_^L zmoN+IuTd4J3N@25H>%;qQ9V%(wL#THHM}Eg3m<6XGf)o}SY{Kpq2A|5P+jyCbKpl* z!K`6EXEYm8QB)5cEN$KuCr}N!i7NM})hS~d7KCa*YE*s>)RtZn>A8T@lz?v79X0z$ zp!WXhsERkBCecCETk;-iFMn(EePvC#q}YJ;Y^c>V3RV6Bs=nV*J>rxz>B%vg)_*Pn z>bgRxF%Pv?M(qQ2F&LL)2p&N#y9d^PbeU#&$aDNf+DnwWtbrpvs>| z&FVX-Iq(iMW6U}xKQHP*%Ah7?eH@4ZEGOUFK&iUsL*f|J5Ntzr*(=o8f5vPWwVqjS zc~K24kD3d0ZM>6p0BW+1#iBSDRqro09#r2==kI?I(36Zqy)@?8_&ysyXXAgP8scqW zZX63WmdR0bC=0g7F4!3_V-*Z-Xy(XdR8P)A^~CqC0lpzXK+EAzoQR*0-#c^0HS#(9 z!kg2#iO>B9ge{tx8wEEvuhG`Hg7OjQ$6_r^!$MIFt&U+_-v9^T{FXjv8763D;yYUN z35)wXIokT%-^*Ky>av0D?1q7Q!iA_gu^u(sccHe>{Wkq3YV04|^!KQGlD0QPlNoh= z2|S0D(9Q3_`d>ssW&--)a16Dx-NSVF8FizOj^@K@NgPW&c_;Ika4FUz?(J;8XswG{ zc8yU(+6vV(y-`Cu0E2N6szLiYv;H+ZPm!Rpx`~=}nY);-%!^TohoYXmJgRG}VOFe< zT2{lcFs?#P#@ncd{DT_nPnZcab~QU|RaAXby9Ug1nL~m;Ht)y0_yF|*BS|;Y(j2H| zQv}t3?KXWMh7do6WAG{Jz2CjN`56BSFB0$5!#r4po@V*hMh$J300C7v7}X`CQC&10 zYv2}C&p5qI#Z^&Hb^-OIzoNF<7pO@brMJ)hji&^t`VOIH{aMrvucEH|9kXHJBY~y_ zGWRh%(`YP6{4f^7cc`w)-`7|SweCx!CQ(h)jayo~+VnxFp`3_%z&WUo<%>}bdyl;A z0#1~Ert4FnJJ#rMsEm5TW~fQk7j?t2)>)`0TZ$_G1E$3z=*5RN{V@(9{sC1_ z|Nd$S>u)@Pl&s6ys7bYDfQjG00>s}8G;<{TAk*@?n49#Ls1GPJZ2BtHEZ>Tnj8{;T zGwxuY`4vWAzm^ClX9FPmmQg7fPej!)^KiR2R=cUAG){qn)UR9JTRFs14^HYEr*IH6Un` z%Cr7+5>Q3OQC(Wi#_OZjX?xTSx}%_nYx z>WzbyxWAK_fL^yPP_uF*>cSbQ9dQwUhs#k7J%?(*ZPblkp_W^eDQ3>3z`Df4FfGnS zJ=l+^k79>y{1dwCKgv|oWeKnw1=8U#oPp|r_|r_wlcBme7&T-$Y|LFwacWfR3me_eb@_GE{@tp@wQZ z>WPn_hU^MztnXU?Kn>kHRD;vc^0~jDoDbFT6#)X(2%NzRn0&U+Ig8=g1#`|ZJKaKz zB>o6H!TX>#_FAC8XkyCK(jh6sz5%}g{4qKQP-w- zK#gG^)Fc{=wQv{K!|3zP2bJd5^_Y?LH<%w&EuenhO0{qV@n(zMFKz?Q9RjsUDEz(Y zfl1hh_$5>qRa|UlZx2*M2co)ql1-nBYWNZ?h#Rmu-p4!`w#0mcvo}sBz7N&I)s{-u zUy5bslg?voLPq-K#sKCceiPqdycK2=MP2DL|HRTd3HOly3QypsRp!b2tTr3i0#w7d zquve2QIq{9M$`KLm%wEFj3aU48uLVP)*6$ecD{_(;;1pMgT1gB>bjp%ldR4c-ll~f2pR>b!6pM!H$(X322u79593XI? zuFH=*Nl3bjmjcV=9BLIL-OZ{XJ{hOu<-O*c$88Vz+<((`0jpE4%R#ec@5PzKiyrd1 zzo>W)+Y(Q6*z7Z-Q9XDOgE27ui23o^7Hm&K@}uVGbt5nX@!wG!RLo;$EE{4t@#$C= zUtvisbliMrq#u?dz8j$>x1>uqqsyyQ;e7_I+; zKbs2np=N98U(7}_2%8b#ibpZtMYA7V!u-UeUGh19U~yEJX1#2->c^;G>CSt_=iDW| z^i}ii`}Du^BUs{tFbv;d(EtStU-LO@Na%f?$wEBk4f9zp%}w(b8-=>zO6zqDrCi)w zG!$$6X1>ud_O{Rc$1A7q82j8cp94bfnVq#S=Axecm>XYUpfrIr_kHf~Y=mPQ;ybZE zrg&i9>piVgP?K#PYVy28y&aQ1q#`VhmGB5w!Pvi>Z(ugW2E@18c#KCT-s%zSzdRXx zNQlOhcpjUd@y2*!euA+bCz9U!DLWp%d}cl^zkBX;`m-7){=rsDy7y0BvzX;CQ?Ab6 z3?=bqugp7O&TF&mPNJ6W1=RAs_L}vtz4-wN`jGiAYQsqMk4gUy(-AL@>arF%38&+D zO!cp+cok}A+l1Orc4JFCY2#Vmn0=!lYU8P3Z4e-!4-oB9TkarqHzd>su?Vx_I@Bt- zf;}Y&CiJXqF%eNQ8%j1zNwwE18OH6h$(P5rp1LO z9$@L1glm|Zj1QwIiy&K2pnO9)StC52IoE80LwqqsFo|YOK1WCeJAAEStUp)zy)x z4=|@tvphpgzdKoTpqBY=?1rCEbEtDH{{3Sup5!+I^GV1R$MnEYs4l&Q74RwQ!aQ+} zOYuA6@#6X29kVFvJ088T0B%5SX!mdhPKa-=%Ms*vchp6=k@OEi{(!sjtVv+H=p*V$ zqb4*@lmd$r&xT6xfXqE-2&!iSsL47BH5V43o_sB;{8rS19LMZ<5%b_z)UwZ$h`)cP zf@Kofu|kb~bF7UWuomt`jeVTNrl+!Ccj8A-Lzg#+-~EQfJ}g2!T2jCJ>-%9ioF1Nv z>Y;ea{qFY>E8==xA0TjpK-Uz0cWi7fK%giIXR#ed3-P-3THA?oAyWvq&^(it0K4dSa%_5O=`tL9E`>g|Aah|k9!djG#5pbDC2Fi)}p zwPW2xeXvNL(Zm~~#&9kc!=tzgzoO>Is!V>TEZ)bwm^riG3B|^!t$QJAXwIT~AZixX z&-!aYpb80#Q58Q!70i^??|u+ziDiiILCuLTs2kP#&hLKbbS`Rny+$p+g4z7;+jAz? zCH@q3!;;zk?pI0?Sc&)xtf}>1D2M6l@z{v?F4TqbbNbznUTsl5vK=*h|F-e;x%}?0 zZiHht($}LV*;UjHU95bj zE6ZR`;-gVxyd9gNFTa^w;i!FKH>w98Vr5KI!1PE*tWNw8Dm`97)_;BijSKqSpYKmY zJ;|RKhA9h~o@j>p0I?1ASubW`Q_*ysO#BY!!!AY4Tv&=sF6TGY9I9T_EW0TfPCQyM z^N#3PjPlRgnOneL;8DtlQo zDcj&o;)hZDN8NIM_p9lFsMW9xE3h#IE)vkPN>PE=DhU;=Z7cfSkJqCr@kFFQ$DWkS zRK+~OJe)`TPb`PytC}Z1k9~+2ujY5Zfw2{}I?_}(JsXZ%o~MwZ2sj@JXx28XVQw(j z8oj0&fAFU;tnB^P5F!Fbz zZu}P0VZo+m>u!XB#w1K9p!NS8yJ3T7ra>oAW0kYH-|3IxsM&oTn_{9C<}KJ0yAZ#J z)v$U?`<_QN_=B}vxEbo{sGj~Qob|6j>{g~=4a`D(0qP5oqo~!9qP4kUck5ZyPMNih z-~CiP3e}+7sOyTgHP_9=?}$G}t(pYw%rfnVt%zT37cgU6q`fJy5cPy#Q9V+$gPAO= zQOoQtYO;oPG&|)W)L1`2EvxvQ{O(u3VW_bmVLgb-|BSjmXJ<2K+6M?|Po9iJa35;S zigYns>|oSJa|Y{Sa91-I`l4P|KcFVvbJPtJcQebc4r>26g$*&JyLqsIsCssw=2jqP z5A$}bfICQ-gj&C$J7)xPt zzI;Q?6A#2}#P^{l@e@=J1PwDE-Kt?i;@wg8kHTzP|LY0pb$QhqpGm2Ll~GUJ9ChRQ z*0Y$8_*c~2$v50Is5PpdrI;UYSmTW_FR8Lvp7dU*p4g26z32ZXpc`c#Xd7CWdN9Fg(*rfF15piKj(Uq;M7>r0V_5&XFy9!nakN0i zH=)+;b=2(kk2MwM#I(d4SO=miT8L`sX-towQCoG|ab~hsvW`cUJ89z|#?ghE%|*tW z77jp-&05Te7f==ci`wIpPcZoP9nBW4;H~^$#!!CYxv;C>QF1nxJ}MENTw@ z7$D%@099e~NoE<9#|p%UqAEU)q4*LthPfu2&wl+-U49U?Z+u2Azfx07Lr0?OUuWaz zP#;+S!K4^SH`P38QPj@V6075UOpZ@51ijPz?$316qb5%%s=)(LJ+%t;#Ai@LbRW~8 zf4b?p^r)e&hDP!^iXkBytj?7!%*UP zQSbM(vrG^5!eqqvVl2FjYVcijKmSLaZMvcyrX-^oYODrYS7I>n3z!=JM9t$pySRT@%|xV~YT=|2rregpl-9u>(uXT#gDC*_aWdL9zi&@Qmo|DwOY8k5Y= z-1GuB)%Wne9ey-tf_4|y?>mf6zs~4S5xpImHlE{ok|rF|90p{ zEO|J`e@nmw{~Hp9XNU*gERkd+FK^{QWs6 z3x%}PZLk>wu?!V8CY^8lI>U(<#m}5N@>|zim8Kso>d>VHgw#zm$7Z`q6ObuM$bI5z2DD4djngY3;pApbhgDM|WxD$!Arva^Wi=Uh&F zhb_zZq@5p0+r~M9YxMc?+cAfV>nWO#o6WNquH=S#l@=hb-wWqY2)aiW;+Z%fa&30fMss~sTlYP}C+zhq9F2c} z=)Me2m}}ktzM^n(F8s_5DiU6StBLb3ah*0;3sZ2;prS$8nld#B^Dpk5DgUXQzfb3W zaz4QI6Ua-*siO+zw-G)-K8v1@K@@n*$>&Y?m_){1;tR1M1qagVVw^2(CLnV7in?c$-;(Y3Mj*xbVYl;xok(ulM zqRes}V;jhif}C9B7o_YN$`r!QT*KcVaQGL$&NIqK)wi*p5Ex2A8(Wzw{E3r)`0T7C zuNG$^F1$>I=V?@F(siU!qly1QI0tzYb2iSJF+E{my@DK1IQ=$Ukkb6L%BjU&HglDZ zq{ROr9!_{9=S$lH{&b?Vhj0z9$&N)Rrz3>8jtsWW#^jB%b!{|R`ftDq;{tuGole2- zoPSa93h}yB(1X06xTqrWe>uM$!S*Iuc)VtmYeE^mF8E)^G+U-I`5VaDW#ivbt}5Xv zoIBm$X(V%tZJBE5V_W==f(^O29Ot(qf^v_!>Dm9>tgWqB-+9uJ+U6Cs^(ZYb*W}~W zhran#Dn!B|AkZEBPm8gd3!N`v_4AP$3nFM{No<#+9ICVTF zQ%77XYDLaz(-454r(&iEAMXYuaO!k&=7ioE`u`nzaX$-mD{3Ue;u%s?Y1QkK6`;AG>}uRx^b z96`C+YTP9LJ6W>l`t*y8km2M$k+LUvDKs}9c zd(ID>{3!~j3T4_*Q5wRD?R9)tz~QI5PBzZNoZpjv%s%r)!fkArt<3#bHQ@epf*`%z z{-(n8RMvvCIfZ}Y_IuQnse8YbN2p30LGi$9-~PAQJ_L5D4Xb%ejt=-crE^!ulr}D~Xrq z!po$+=L{x3n|M~+6AvjDkMsnbIdP%`= z2fyp!{757Um0uye#OCoQh8@24bvknDI7$2sWsYGxTaVKB5x$IFXh=WKUeuvuKWB34 z8ieIAnV0_WX)}*g=|L`x&js1-4Hr}SH5;C1eL%jB*p#15d42)oe;pS{n@t%H^5-Yq zUk&I;yf3BrQ^ihe!hNV$M?sB$B`Wwr;%f>wCH|N~)i5rGledMuB%Ij^KcUQV{7U{a z!c|EBcATNSj+?f36kbW$tekfg;Rq*hna#gX`9OUV`4*CUl%wFcqdMVMHeL&daHD*9 zk+U4(@|xB1uHgLd zp?a@S*L2Dj;v7Z1lD*k-TTfil{cQI$se1uww}@;0xd-3ua_V#Hc*7Z=@Xwq#DOie| zeZpv5pyQrF9}b<{wjp=OTT1!m-1IwJPQ}u5UZvcA(j#f$?>6rk>Eks1Rmq%4C4ESE zN}++obsVAaLC!1oDU?>*h8K{Yg=>!e=SE|=?lWmG$kS1t_+i3t?KL@Y2Ia5W2H$kc z+2?OX<{T2@Q{WO$ao$!^fbbvWP3NLCgd34Q!#2>|hVRP!rxA<3CE`NTd*U#zzs_~} zIQ4f5_EXP5TP~-TO+7LWlCX$^A!H^bZ4_xbh&rXIs1#`@h#V&#(>7ov=CpBW!q8FDDuKdf5WLGHSsB!j)tcv+=;NhOY5Qhe9oV3T_ibW^&j_O{5MnC zJ1&Z(qAlF?9N`AGK`)5^YQvxHCHKjnNZKwN7a56<<@%$9+t~EjR`HT+GGYtc*rwd` zEp@x=uLlti1$1nrz^~t0N;nB=KT~-U%ILU5UNc*kUoUfy)}-|(?W=8Q8p8ZioqOaZ zuRHZ5Hc=-l^;G4oLVhXAyYoK^kwFwHX)93KXvCwkSv(@#jPMGZ*UP$=v~Nc~Zt~wF zu5D~o+t6=$L6kerbw80_1k3CGGpH~-C3@3{2N;!jKf)aeKce70;yG-E%k51cVJXV= zq{0-G`-ku_(*CCWG|phs%HmS4t;V%o2@fUz8Ra+FIw-=y^Cu-y$4UyGAoE8q`i(P! zw1iZw;{kCUTdcWAr*oXIHopMZCAam|C9N)bzjM=AHec7ar~cZcMWK!u*noISeIfQU z7ay?&Q;}JQw7i_dNjpT`L&Z%AXS6p^WxecE6d=8u4J*Aq6>lajHfL2OaLlEyI@FVq za(hjZGl04#a0d2~xtWWebHR^gx8HIHmrBWT8sJJlco9)Fnu%F4|e_~()vq|efrI{#Ol<;Z7 zQ3*ff)G-Wy#ZS~TnrrTnzYjNX27cj!O`NyLY(hd-Zu}bsUSk&=ghg>O=U&dAsBExp zoGNe0wY_m9*SE0g)kxD(9e*dSA$gT--XiMI(U5xh@Dp(2a?`mKm~S(b`L8XUgbJel zCp|hBb*8M24&?nzd^GueNXt(>HSCSg5-w)zP}xnKH%QY_jcYdQTH>>OjDI1M?*8{z zGBlbs~S9{G3 zTx0KfQty8qKO6q%zon_Y?`O-r zxAwMm4pt=`du{p$uA4=Ck3Rp+XTlDu#QXIupRCoZ6p^j85h)3dSKELik_2 zO8oCLfR?Rk&yBsSdy|CFf;M5gukcEdE0=jc-LNEfjlqq-zeLF zI`WgginOkj*Ad7|vJ$odDxZ$CC3O~4 zgrh%Ya@qWv#J8LK1^8WZ#?EH!rm{X1^kZ_;hySMms$?VSFL0$I90Q1dJ4O;-$2Gn2 zPwIP4#xmQmi==fSEiLgSw$Ay4o9O-j|2yW9Ih}%KY~ePznzTF=UP_n8F|Btm%|p75 z5!jt_Ey<70xtg0cpq!WY$t&W)`C5f(l(O6+@`;=4a-j2Le9OENz4s?$7i<8P2$N3uT@#@l@;Pp_5&wJ!2NfD zA1HLzR#p*ralu6@`F6Y`U&q1!q}`!RWt$$8^tZZ+&0j%$Vw8R?!B%DXc{E5VJoTWI!iRYxi9ow)Kgd;h1%p>pH(bnE{ zJys!I^En0A?;|{wvn6K?&hwvZ@?A4?-< zaem}HOnz(54dnamQztV;oxf~c(I|WbaQN@{1S_{+^_%F)DcM+7BX>lP%8u!&E(#Z|(q zFb}n)qKu9?xSe`xlb*x&!v)eOQD1uUI+OMb`8r|~?#UUc{|{<%ZV;cuRuoETD^sCx z3iPHj9dkHqlh>1T3~3WMpOXK9b1HdTu_=}3wB<|aB94Td(Ya7;XzFtuPh;W-I>F7P^iqsK<@yBpnp4%U zbDwU;(0FmBReGWe2E)5A-$(s{D=qnJc%Ns=J$9~MKq}C zc^*-;mZwr=L@m!hu_A9Y^IVP{xu=t-S5Rb;A)W>?A{USGbj=W1c)cf{Hx~{!vy8WFMAqv5kjP>MyvgE5E-mA| zm?Ls;Pj7#J%mO*`<_*bHxM;pS5yks?)BN9ffyg%fytjfPnvVCjh`c=Bd!S|1-r>DE zc4<57-j@LpeWQ8uMGSfBP2%kx9@*lV_orx)X zw9f1&8bP#j?%IhyiG%~NhTTofişiere recente< pentru a fi salvat " "a eșuat." -#: FlatCAMApp.py:2930 camlib.py:4454 +#: FlatCAMApp.py:2979 camlib.py:4443 msgid "[ERROR_NOTCL] An internal error has ocurred. See shell.\n" msgstr "" "[ERROR_NOTCL] A apărut o eroare internă. Verifică in TCL Shell pt mai multe " "detalii.\n" -#: FlatCAMApp.py:2931 +#: FlatCAMApp.py:2980 #, python-brace-format msgid "" "Object ({kind}) failed because: {error} \n" @@ -161,11 +161,11 @@ msgstr "" "Obiectul ({kind}) a eșuat din cauza: {error} \n" "\n" -#: FlatCAMApp.py:2951 +#: FlatCAMApp.py:3000 msgid "Converting units to " msgstr "Se convertesc unitatile la " -#: FlatCAMApp.py:3030 FlatCAMApp.py:3033 FlatCAMApp.py:3036 FlatCAMApp.py:3039 +#: FlatCAMApp.py:3079 FlatCAMApp.py:3082 FlatCAMApp.py:3085 FlatCAMApp.py:3088 #, python-brace-format msgid "" "[selected] {kind} created/selected: {name}{name}" -#: FlatCAMApp.py:3133 +#: FlatCAMApp.py:3182 #, python-brace-format msgid "" "FlatCAM
Version {version} {beta} ({date}) - " @@ -196,35 +196,35 @@ msgstr "" "flatcam/src/Beta/\">aici.

Sectiunea DOWNLOAD este aici.
" -#: FlatCAMApp.py:3286 +#: FlatCAMApp.py:3335 msgid "[success] Defaults saved." msgstr "[success] Valorile default au fost salvate." -#: FlatCAMApp.py:3307 +#: FlatCAMApp.py:3356 msgid "[ERROR_NOTCL] Could not load factory defaults file." msgstr "" "[ERROR_NOTCL] Fişierul cu valori default de fabrică nu a putut fi deschis." -#: FlatCAMApp.py:3316 +#: FlatCAMApp.py:3365 msgid "[ERROR_NOTCL] Failed to parse factory defaults file." msgstr "" "[ERROR_NOTCL] Parsarea fişierului cu valori default de fabrică a eșuat." -#: FlatCAMApp.py:3330 +#: FlatCAMApp.py:3379 msgid "[ERROR_NOTCL] Failed to write factory defaults to file." msgstr "" "[ERROR_NOTCL]] Salvarea fişierului cu valori default de fabrică intr-un " "fişier a eșuat." -#: FlatCAMApp.py:3334 +#: FlatCAMApp.py:3383 msgid "Factory defaults saved." msgstr "Valori default de fabrică au fost salvate." -#: FlatCAMApp.py:3339 flatcamGUI/FlatCAMGUI.py:3110 +#: FlatCAMApp.py:3388 flatcamGUI/FlatCAMGUI.py:3106 msgid "[WARNING_NOTCL] Application is saving the project. Please wait ..." msgstr "[WARNING_NOTCL] Aplicația salvează proiectul. Vă rugăm aşteptați ..." -#: FlatCAMApp.py:3344 +#: FlatCAMApp.py:3393 msgid "" "There are files/objects modified in FlatCAM. \n" "Do you want to Save the project?" @@ -232,11 +232,11 @@ msgstr "" "FlatCAM are fişiere/obiecte care au fost modificate. \n" "Dorești să Salvezi proiectul?" -#: FlatCAMApp.py:3347 FlatCAMApp.py:5797 +#: FlatCAMApp.py:3396 FlatCAMApp.py:5874 msgid "Save changes" msgstr "Salvează modificarile." -#: FlatCAMApp.py:3414 +#: FlatCAMApp.py:3463 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 " @@ -253,72 +253,72 @@ msgstr "" "informatii și rezultatul ar putea să nu fie cel dorit. \n" "Verifică codul G-Code generat." -#: FlatCAMApp.py:3455 +#: FlatCAMApp.py:3504 msgid "[ERROR_NOTCL] Failed. Excellon joining works only on Excellon objects." msgstr "" "[ERROR_NOTCL] Eșuat. Fuzionarea Excellon functionează doar cu obiecte de tip " "Excellon." -#: FlatCAMApp.py:3477 +#: FlatCAMApp.py:3526 msgid "[ERROR_NOTCL] Failed. Gerber joining works only on Gerber objects." msgstr "" "[ERROR_NOTCL] Eșuat. Fuzionarea Gerber functionează doar cu obiecte de tip " "Gerber ." -#: FlatCAMApp.py:3492 FlatCAMApp.py:3517 +#: FlatCAMApp.py:3541 FlatCAMApp.py:3566 msgid "[ERROR_NOTCL] Failed. Select a Geometry Object and try again." msgstr "" "[ERROR_NOTCL] Eșuat. Selectează un obiect Geometrie și încearcă din nou." -#: FlatCAMApp.py:3496 FlatCAMApp.py:3521 +#: FlatCAMApp.py:3545 FlatCAMApp.py:3570 #, python-format msgid "[ERROR_NOTCL] Expected a FlatCAMGeometry, got %s" msgstr "[ERROR_NOTCL] Se astepta o Geometrie FlatCAM, s-a primit %s" -#: FlatCAMApp.py:3509 +#: FlatCAMApp.py:3558 msgid "[success] A Geometry object was converted to MultiGeo type." msgstr "[success] Un obiect Geometrie a fost convertit la tipul MultiGeo." -#: FlatCAMApp.py:3535 +#: FlatCAMApp.py:3584 msgid "[success] A Geometry object was converted to SingleGeo type." msgstr "[success] Un obiect Geometrie a fost convertit la tipul SingleGeo ." -#: FlatCAMApp.py:3682 FlatCAMApp.py:4495 FlatCAMApp.py:6064 FlatCAMApp.py:6075 -#: FlatCAMApp.py:6312 FlatCAMApp.py:6322 +#: FlatCAMApp.py:3731 FlatCAMApp.py:4567 FlatCAMApp.py:6141 FlatCAMApp.py:6152 +#: FlatCAMApp.py:6392 FlatCAMApp.py:6402 msgid "Ok" msgstr "Ok" -#: FlatCAMApp.py:3724 +#: FlatCAMApp.py:3773 #, python-format msgid "[success] Converted units to %s" msgstr "[success] Conversie unitati la %s" -#: FlatCAMApp.py:3735 +#: FlatCAMApp.py:3784 msgid "[WARNING_NOTCL] Units conversion cancelled." msgstr "[WARNING_NOTCL] Conversia unitatilor este anulata." -#: FlatCAMApp.py:4364 +#: FlatCAMApp.py:4436 msgid "Open file" msgstr "Deschide fişierul ..." -#: FlatCAMApp.py:4395 FlatCAMApp.py:4400 +#: FlatCAMApp.py:4467 FlatCAMApp.py:4472 msgid "Export G-Code ..." msgstr "Exporta G-Code ..." -#: FlatCAMApp.py:4403 +#: FlatCAMApp.py:4475 msgid "[WARNING_NOTCL] Export Code cancelled." msgstr "[WARNING_NOTCL Exportul GCode este anulat." -#: FlatCAMApp.py:4413 +#: FlatCAMApp.py:4485 msgid "[WARNING] No such file or directory" msgstr "[WARNING] Nu exista un aşa fişier sau director" -#: FlatCAMApp.py:4420 +#: FlatCAMApp.py:4492 #, python-format msgid "Saved to: %s" msgstr "Salvat in: %s" -#: FlatCAMApp.py:4483 FlatCAMApp.py:4516 FlatCAMApp.py:4527 FlatCAMApp.py:4538 +#: FlatCAMApp.py:4555 FlatCAMApp.py:4588 FlatCAMApp.py:4599 FlatCAMApp.py:4610 #: flatcamTools/ToolNonCopperClear.py:489 flatcamTools/ToolSolderPaste.py:765 msgid "" "[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float " @@ -327,12 +327,12 @@ msgstr "" "[WARNING_NOTCL] Introdu un diametru al uneltei valid: valoare ne-nula in " "format Real." -#: FlatCAMApp.py:4488 FlatCAMApp.py:4521 FlatCAMApp.py:4532 FlatCAMApp.py:4543 -#: flatcamGUI/FlatCAMGUI.py:3005 +#: FlatCAMApp.py:4560 FlatCAMApp.py:4593 FlatCAMApp.py:4604 FlatCAMApp.py:4615 +#: flatcamGUI/FlatCAMGUI.py:3001 msgid "[WARNING_NOTCL] Adding Tool cancelled ..." msgstr "[WARNING_NOTCL] Adăugarea unei unelte anulata ..." -#: FlatCAMApp.py:4491 +#: FlatCAMApp.py:4563 msgid "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." @@ -340,128 +340,132 @@ msgstr "" "Adăugarea de unelte noi functionează doar in modul Avansat.\n" "Pentru aceasta mergi in Preferințe -> General - Activează Modul Avansat." -#: FlatCAMApp.py:4604 +#: FlatCAMApp.py:4676 msgid "Object(s) deleted ..." msgstr "Obiect(ele) șters(e)." -#: FlatCAMApp.py:4608 +#: FlatCAMApp.py:4680 msgid "Failed. No object(s) selected..." msgstr "Eșuat. Nici-un obiect nu este selectat." -#: FlatCAMApp.py:4610 +#: FlatCAMApp.py:4682 msgid "Save the work in Editor and try again ..." msgstr "Salvează continutul din Editor și încearcă din nou." -#: FlatCAMApp.py:4623 +#: FlatCAMApp.py:4695 msgid "Click to set the origin ..." msgstr "Click pentru a seta originea..." -#: FlatCAMApp.py:4635 +#: FlatCAMApp.py:4707 msgid "Jump to ..." msgstr "Sari la ..." -#: FlatCAMApp.py:4636 +#: FlatCAMApp.py:4708 msgid "Enter the coordinates in format X,Y:" msgstr "Introduceți coordonatele in format X,Y:" -#: FlatCAMApp.py:4643 +#: FlatCAMApp.py:4715 msgid "Wrong coordinates. Enter coordinates in format: X,Y" msgstr "Coordonate gresite. Introduceți coordonatele in format X,Y." -#: FlatCAMApp.py:4661 flatcamEditors/FlatCAMExcEditor.py:2285 -#: flatcamEditors/FlatCAMExcEditor.py:2292 -#: flatcamEditors/FlatCAMGeoEditor.py:3648 -#: flatcamEditors/FlatCAMGeoEditor.py:3662 +#: FlatCAMApp.py:4733 flatcamEditors/FlatCAMExcEditor.py:2320 +#: flatcamEditors/FlatCAMExcEditor.py:2327 +#: flatcamEditors/FlatCAMGeoEditor.py:3645 +#: flatcamEditors/FlatCAMGeoEditor.py:3659 #: flatcamEditors/FlatCAMGrbEditor.py:1040 #: flatcamEditors/FlatCAMGrbEditor.py:1141 -#: flatcamEditors/FlatCAMGrbEditor.py:1402 -#: flatcamEditors/FlatCAMGrbEditor.py:1652 -#: flatcamEditors/FlatCAMGrbEditor.py:3928 -#: flatcamEditors/FlatCAMGrbEditor.py:3942 flatcamGUI/FlatCAMGUI.py:2419 -#: flatcamGUI/FlatCAMGUI.py:2431 +#: flatcamEditors/FlatCAMGrbEditor.py:1409 +#: flatcamEditors/FlatCAMGrbEditor.py:1666 +#: flatcamEditors/FlatCAMGrbEditor.py:3950 +#: flatcamEditors/FlatCAMGrbEditor.py:3964 flatcamGUI/FlatCAMGUI.py:2414 +#: flatcamGUI/FlatCAMGUI.py:2426 msgid "[success] Done." msgstr "[success] Executat." -#: FlatCAMApp.py:4794 FlatCAMApp.py:4863 +#: FlatCAMApp.py:4865 FlatCAMApp.py:4932 msgid "[WARNING_NOTCL] No object is selected. Select an object and try again." msgstr "" "[WARNING_NOTCL] Nici-un obiect nu este selectat. Selectează un obiect și " "incearcă din nou." -#: FlatCAMApp.py:4904 +#: FlatCAMApp.py:4973 msgid "[success] Origin set ..." msgstr "[success] Originea a fost setată ..." -#: FlatCAMApp.py:4924 +#: FlatCAMApp.py:4993 msgid "Preferences" msgstr "Preferințe" -#: FlatCAMApp.py:4944 +#: FlatCAMApp.py:5013 msgid "[WARNING_NOTCL] No object selected to Flip on Y axis." msgstr "" "[WARNING_NOTCL] Nu sete nici-un obiect selectat pentru oglindire pe axa Y." -#: FlatCAMApp.py:4969 +#: FlatCAMApp.py:5038 msgid "[success] Flip on Y axis done." msgstr "[success] Oglindire pe axa Y executată." -#: FlatCAMApp.py:4971 FlatCAMApp.py:5011 +#: FlatCAMApp.py:5040 FlatCAMApp.py:5080 #: flatcamEditors/FlatCAMGeoEditor.py:1355 -#: flatcamEditors/FlatCAMGrbEditor.py:5309 flatcamTools/ToolTransform.py:748 +#: flatcamEditors/FlatCAMGrbEditor.py:5331 flatcamTools/ToolTransform.py:748 #, python-format msgid "[ERROR_NOTCL] Due of %s, Flip action was not executed." msgstr "[ERROR_NOTCL] Datorita %s, oglindirea a eșuat." -#: FlatCAMApp.py:4984 +#: FlatCAMApp.py:5053 msgid "[WARNING_NOTCL] No object selected to Flip on X axis." msgstr "" "[WARNING_NOTCL] Nu sete nici-un obiect selectat pentru oglindire pe axa X." -#: FlatCAMApp.py:5009 +#: FlatCAMApp.py:5078 msgid "[success] Flip on X axis done." msgstr "[success] Oglindirea pe axa X executată." -#: FlatCAMApp.py:5024 +#: FlatCAMApp.py:5093 msgid "[WARNING_NOTCL] No object selected to Rotate." msgstr "[WARNING_NOTCL] Nici-un obiect selectat pentru Rotaţie." -#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 +#: FlatCAMApp.py:5096 FlatCAMApp.py:5141 FlatCAMApp.py:5172 msgid "Transform" msgstr "Transformare" -#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 +#: FlatCAMApp.py:5096 FlatCAMApp.py:5141 FlatCAMApp.py:5172 msgid "Enter the Angle value:" msgstr "Introduceți valoaea Unghiului:" -#: FlatCAMApp.py:5057 +#: FlatCAMApp.py:5126 msgid "[success] Rotation done." msgstr "[success] Rotaţie executată." -#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:1298 -#: flatcamEditors/FlatCAMGrbEditor.py:5240 flatcamTools/ToolTransform.py:677 +#: FlatCAMApp.py:5128 flatcamEditors/FlatCAMGeoEditor.py:1298 +#: flatcamEditors/FlatCAMGrbEditor.py:5262 flatcamTools/ToolTransform.py:677 #, python-format msgid "[ERROR_NOTCL] Due of %s, rotation movement was not executed." msgstr "[ERROR_NOTCL] Datorita %s, Rotatia a eșuat." -#: FlatCAMApp.py:5070 +#: FlatCAMApp.py:5139 msgid "[WARNING_NOTCL] No object selected to Skew/Shear on X axis." msgstr "[WARNING_NOTCL] Nici-un obiect selectat pentru Deformare pe axa X." -#: FlatCAMApp.py:5091 +#: FlatCAMApp.py:5160 msgid "[success] Skew on X axis done." msgstr "[success] Deformare pe axa X executată." -#: FlatCAMApp.py:5101 +#: FlatCAMApp.py:5170 msgid "[WARNING_NOTCL] No object selected to Skew/Shear on Y axis." msgstr "[WARNING_NOTCL] Nici-un obiect selectat pentru Deformare pe axa Y." -#: FlatCAMApp.py:5122 +#: FlatCAMApp.py:5191 msgid "[success] Skew on Y axis done." msgstr "[success] Deformare pe axa Y executată." -#: FlatCAMApp.py:5197 flatcamEditors/FlatCAMGeoEditor.py:937 -#: flatcamEditors/FlatCAMGrbEditor.py:2365 -#: flatcamEditors/FlatCAMGrbEditor.py:4831 flatcamGUI/ObjectUI.py:991 +#: FlatCAMApp.py:5260 +msgid "Grid On/Off" +msgstr "Grid On/Off" + +#: FlatCAMApp.py:5273 flatcamEditors/FlatCAMGeoEditor.py:937 +#: flatcamEditors/FlatCAMGrbEditor.py:2381 +#: flatcamEditors/FlatCAMGrbEditor.py:4853 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 @@ -469,73 +473,73 @@ msgstr "[success] Deformare pe axa Y executată." msgid "Add" msgstr "Adaugă" -#: FlatCAMApp.py:5198 FlatCAMObj.py:3302 -#: flatcamEditors/FlatCAMGrbEditor.py:2370 flatcamGUI/FlatCAMGUI.py:532 -#: flatcamGUI/FlatCAMGUI.py:729 flatcamGUI/FlatCAMGUI.py:1619 -#: flatcamGUI/FlatCAMGUI.py:1955 flatcamGUI/ObjectUI.py:1007 +#: FlatCAMApp.py:5274 FlatCAMObj.py:3306 +#: flatcamEditors/FlatCAMGrbEditor.py:2386 flatcamGUI/FlatCAMGUI.py:527 +#: flatcamGUI/FlatCAMGUI.py:724 flatcamGUI/FlatCAMGUI.py:1616 +#: flatcamGUI/FlatCAMGUI.py:1953 flatcamGUI/ObjectUI.py:1007 #: flatcamTools/ToolNonCopperClear.py:146 flatcamTools/ToolPaint.py:143 #: flatcamTools/ToolSolderPaste.py:121 flatcamTools/ToolSolderPaste.py:481 msgid "Delete" msgstr "Șterge" -#: FlatCAMApp.py:5210 +#: FlatCAMApp.py:5287 msgid "New Grid ..." msgstr "Grid nou ..." -#: FlatCAMApp.py:5211 +#: FlatCAMApp.py:5288 msgid "Enter a Grid Value:" msgstr "Introduceti of valoare pt Grid:" -#: FlatCAMApp.py:5219 FlatCAMApp.py:5246 +#: FlatCAMApp.py:5296 FlatCAMApp.py:5323 msgid "" "[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float " "format." msgstr "" "[WARNING_NOTCL] Introduceți o valoare pentru Grila ne-nula și in format Real." -#: FlatCAMApp.py:5225 +#: FlatCAMApp.py:5302 msgid "[success] New Grid added ..." msgstr "[success] O noua valoare pt Grila a fost adăugată..." -#: FlatCAMApp.py:5228 +#: FlatCAMApp.py:5305 msgid "[WARNING_NOTCL] Grid already exists ..." msgstr "[WARNING_NOTCL] Grila exista deja." -#: FlatCAMApp.py:5231 +#: FlatCAMApp.py:5308 msgid "[WARNING_NOTCL] Adding New Grid cancelled ..." msgstr "[WARNING_NOTCL] Adăugarea unei valori de Grila a fost anulata ..." -#: FlatCAMApp.py:5253 +#: FlatCAMApp.py:5330 msgid "[ERROR_NOTCL] Grid Value does not exist ..." msgstr "[ERROR_NOTCL] Valoarea Grilei nu exista ..." -#: FlatCAMApp.py:5256 +#: FlatCAMApp.py:5333 msgid "[success] Grid Value deleted ..." msgstr "[success] Valoarea Grila a fost stearsa." -#: FlatCAMApp.py:5259 +#: FlatCAMApp.py:5336 msgid "[WARNING_NOTCL] Delete Grid value cancelled ..." msgstr "[WARNING_NOTCL] Ștergerea unei valori de Grila a fost anulata ..." -#: FlatCAMApp.py:5298 +#: FlatCAMApp.py:5375 msgid "[WARNING_NOTCL] No object selected to copy it's name" msgstr "" "[WARNING_NOTCL] Nici-un obiect nu este selectat pentru i se copia valoarea" -#: FlatCAMApp.py:5302 +#: FlatCAMApp.py:5379 msgid "Name copied on clipboard ..." msgstr "Numele a fost copiat pe Clipboard ..." -#: FlatCAMApp.py:5595 FlatCAMApp.py:5598 FlatCAMApp.py:5601 FlatCAMApp.py:5604 -#: FlatCAMApp.py:5619 FlatCAMApp.py:5622 FlatCAMApp.py:5625 FlatCAMApp.py:5628 -#: FlatCAMApp.py:5668 FlatCAMApp.py:5671 FlatCAMApp.py:5674 FlatCAMApp.py:5677 +#: FlatCAMApp.py:5672 FlatCAMApp.py:5675 FlatCAMApp.py:5678 FlatCAMApp.py:5681 +#: FlatCAMApp.py:5696 FlatCAMApp.py:5699 FlatCAMApp.py:5702 FlatCAMApp.py:5705 +#: FlatCAMApp.py:5745 FlatCAMApp.py:5748 FlatCAMApp.py:5751 FlatCAMApp.py:5754 #: ObjectCollection.py:717 ObjectCollection.py:720 ObjectCollection.py:723 #: ObjectCollection.py:726 #, python-brace-format msgid "[selected]{name} selected" msgstr "[selected]{name} selectat" -#: FlatCAMApp.py:5794 +#: FlatCAMApp.py:5871 msgid "" "There are files/objects opened in FlatCAM.\n" "Creating a New project will delete them.\n" @@ -545,111 +549,111 @@ msgstr "" "Crearea unui nou Proiect le va șterge..\n" "Doriti să Salvati proiectul curentt?" -#: FlatCAMApp.py:5815 +#: FlatCAMApp.py:5892 msgid "[success] New Project created..." msgstr "[success] Un nou Proiect a fost creat..." -#: FlatCAMApp.py:5923 FlatCAMApp.py:5926 flatcamGUI/FlatCAMGUI.py:613 -#: flatcamGUI/FlatCAMGUI.py:1834 +#: FlatCAMApp.py:6000 FlatCAMApp.py:6003 flatcamGUI/FlatCAMGUI.py:608 +#: flatcamGUI/FlatCAMGUI.py:1832 msgid "Open Gerber" msgstr "Încarcă Gerber" -#: FlatCAMApp.py:5931 +#: FlatCAMApp.py:6008 msgid "[WARNING_NOTCL] Open Gerber cancelled." msgstr "[WARNING_NOTCL] Incărcarea unui fişier Gerber este anulata." -#: FlatCAMApp.py:5952 FlatCAMApp.py:5955 flatcamGUI/FlatCAMGUI.py:614 -#: flatcamGUI/FlatCAMGUI.py:1835 +#: FlatCAMApp.py:6029 FlatCAMApp.py:6032 flatcamGUI/FlatCAMGUI.py:609 +#: flatcamGUI/FlatCAMGUI.py:1833 msgid "Open Excellon" msgstr "Încarcă Excellon" -#: FlatCAMApp.py:5960 +#: FlatCAMApp.py:6037 msgid "[WARNING_NOTCL] Open Excellon cancelled." msgstr "[WARNING_NOTCL] Incărcarea unui fişier Excellon este anulata." -#: FlatCAMApp.py:5982 FlatCAMApp.py:5985 +#: FlatCAMApp.py:6059 FlatCAMApp.py:6062 msgid "Open G-Code" msgstr "Încarcă G-Code" -#: FlatCAMApp.py:5990 +#: FlatCAMApp.py:6067 msgid "[WARNING_NOTCL] Open G-Code cancelled." msgstr "[WARNING_NOTCL] Incărcarea unui fişier G-Code este anulata." -#: FlatCAMApp.py:6008 FlatCAMApp.py:6011 +#: FlatCAMApp.py:6085 FlatCAMApp.py:6088 msgid "Open Project" msgstr "Încarcă Project" -#: FlatCAMApp.py:6019 +#: FlatCAMApp.py:6096 msgid "[WARNING_NOTCL] Open Project cancelled." msgstr "[WARNING_NOTCL] Incărcarea unui Proiect a fost anulata." -#: FlatCAMApp.py:6038 FlatCAMApp.py:6041 +#: FlatCAMApp.py:6115 FlatCAMApp.py:6118 msgid "Open Configuration File" msgstr "Încarcă un fişier de Configurare" -#: FlatCAMApp.py:6045 +#: FlatCAMApp.py:6122 msgid "[WARNING_NOTCL Open Config cancelled." msgstr "[WARNING_NOTCL] Incărcarea unui fişier de Configurare este anulata." -#: FlatCAMApp.py:6060 FlatCAMApp.py:6308 FlatCAMApp.py:8519 FlatCAMApp.py:8539 -#: FlatCAMApp.py:8560 FlatCAMApp.py:8582 +#: FlatCAMApp.py:6137 FlatCAMApp.py:6388 FlatCAMApp.py:8538 FlatCAMApp.py:8558 +#: FlatCAMApp.py:8579 FlatCAMApp.py:8601 msgid "[WARNING_NOTCL] No object selected." msgstr "[WARNING_NOTCL] Nici-un obiect selectat." -#: FlatCAMApp.py:6061 FlatCAMApp.py:6309 +#: FlatCAMApp.py:6138 FlatCAMApp.py:6389 msgid "Please Select a Geometry object to export" msgstr "Selectează un obiect Geometrie pentru export" -#: FlatCAMApp.py:6072 +#: FlatCAMApp.py:6149 msgid "[ERROR_NOTCL] Only Geometry, Gerber and CNCJob objects can be used." msgstr "" "[ERROR_NOTCL] Doar obiectele Geometrie, Gerber și CNCJob pot fi folosite." -#: FlatCAMApp.py:6085 FlatCAMApp.py:6089 +#: FlatCAMApp.py:6162 FlatCAMApp.py:6166 msgid "Export SVG" msgstr "Exporta SVG" -#: FlatCAMApp.py:6094 +#: FlatCAMApp.py:6171 msgid "[WARNING_NOTCL] Export SVG cancelled." msgstr "[WARNING_NOTCL] Exportul SVG este anulat." -#: FlatCAMApp.py:6110 +#: FlatCAMApp.py:6190 msgid "[[WARNING_NOTCL]] Data must be a 3D array with last dimension 3 or 4" msgstr "" "[[WARNING_NOTCL]] Datele trebuie să fie organizate intr-o arie 3D cu ultima " "dimensiune cu valoarea 3 sau 4." -#: FlatCAMApp.py:6116 FlatCAMApp.py:6120 +#: FlatCAMApp.py:6196 FlatCAMApp.py:6200 msgid "Export PNG Image" msgstr "Exporta imagine PNG" -#: FlatCAMApp.py:6125 +#: FlatCAMApp.py:6205 msgid "Export PNG cancelled." msgstr "Exportul imagine PNG este anulat." -#: FlatCAMApp.py:6144 +#: FlatCAMApp.py:6224 msgid "" "[WARNING_NOTCL] No object selected. Please select an Gerber object to export." msgstr "" "[WARNING_NOTCL] Nici-un obiect selectat. Selectează un obiect Gerber pentru " "export." -#: FlatCAMApp.py:6149 FlatCAMApp.py:6272 +#: FlatCAMApp.py:6229 FlatCAMApp.py:6352 msgid "" "[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files..." msgstr "" "[ERROR_NOTCL] Eșuat. Doar obiectele tip Gerber pot fi salvate ca fişiere " "Gerber..." -#: FlatCAMApp.py:6161 +#: FlatCAMApp.py:6241 msgid "Save Gerber source file" msgstr "Salvează codul sursa Gerber ca fişier" -#: FlatCAMApp.py:6166 +#: FlatCAMApp.py:6246 msgid "[WARNING_NOTCL] Save Gerber source file cancelled." msgstr "[WARNING_NOTCL] Salvarea codului sursa Gerber este anulata." -#: FlatCAMApp.py:6185 +#: FlatCAMApp.py:6265 msgid "" "[WARNING_NOTCL] No object selected. Please select an Excellon object to " "export." @@ -657,22 +661,22 @@ msgstr "" "[WARNING_NOTCL] Nici-un obiect selectat. Selectează un obiect Excellon " "pentru export." -#: FlatCAMApp.py:6190 FlatCAMApp.py:6231 +#: FlatCAMApp.py:6270 FlatCAMApp.py:6311 msgid "" "[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files..." msgstr "" "[ERROR_NOTCL] Eșuat. Doar obiectele tip Excellon pot fi salvate ca fişiere " "Excellon ..." -#: FlatCAMApp.py:6198 FlatCAMApp.py:6202 +#: FlatCAMApp.py:6278 FlatCAMApp.py:6282 msgid "Save Excellon source file" msgstr "Salvează codul sursa Excellon ca fişier" -#: FlatCAMApp.py:6207 +#: FlatCAMApp.py:6287 msgid "[WARNING_NOTCL] Saving Excellon source file cancelled." msgstr "[WARNING_NOTCL] Salvarea codului sursa Excellon este anulata." -#: FlatCAMApp.py:6226 +#: FlatCAMApp.py:6306 msgid "" "[WARNING_NOTCL] No object selected. Please Select an Excellon object to " "export." @@ -680,93 +684,93 @@ msgstr "" "[WARNING_NOTCL] Nici-un obiect selectat. Selectează un obiect Excellon " "pentru export." -#: FlatCAMApp.py:6239 FlatCAMApp.py:6243 +#: FlatCAMApp.py:6319 FlatCAMApp.py:6323 msgid "Export Excellon" msgstr "Exporta Excellon" -#: FlatCAMApp.py:6248 +#: FlatCAMApp.py:6328 msgid "[WARNING_NOTCL] Export Excellon cancelled." msgstr "[WARNING_NOTCL] Exportul Excellon anulat." -#: FlatCAMApp.py:6267 +#: FlatCAMApp.py:6347 msgid "" "[WARNING_NOTCL] No object selected. Please Select an Gerber object to export." msgstr "" "[WARNING_NOTCL] Nici-un obiect selectat. Selectează un obiect Gerber pentru " "export." -#: FlatCAMApp.py:6280 FlatCAMApp.py:6284 +#: FlatCAMApp.py:6360 FlatCAMApp.py:6364 msgid "Export Gerber" msgstr "Exporta Gerber" -#: FlatCAMApp.py:6289 +#: FlatCAMApp.py:6369 msgid "[WARNING_NOTCL] Export Gerber cancelled." msgstr "[WARNING_NOTCL] Exportul Gerber este anulat." -#: FlatCAMApp.py:6319 +#: FlatCAMApp.py:6399 msgid "[ERROR_NOTCL] Only Geometry objects can be used." msgstr "[ERROR_NOTCL] Doar obiecte tip Geometrie pot fi folosite." -#: FlatCAMApp.py:6333 FlatCAMApp.py:6337 +#: FlatCAMApp.py:6413 FlatCAMApp.py:6417 msgid "Export DXF" msgstr "Exporta DXF" -#: FlatCAMApp.py:6342 +#: FlatCAMApp.py:6423 msgid "[WARNING_NOTCL] Export DXF cancelled." msgstr "[WARNING_NOTCL] Exportul DXF anulat." -#: FlatCAMApp.py:6362 FlatCAMApp.py:6365 +#: FlatCAMApp.py:6443 FlatCAMApp.py:6446 msgid "Import SVG" msgstr "Importa SVG" -#: FlatCAMApp.py:6373 +#: FlatCAMApp.py:6455 msgid "[WARNING_NOTCL] Open SVG cancelled." msgstr "[WARNING_NOTCL] Importul SVG anulat." -#: FlatCAMApp.py:6392 FlatCAMApp.py:6395 +#: FlatCAMApp.py:6474 FlatCAMApp.py:6478 msgid "Import DXF" msgstr "Importa DXF" -#: FlatCAMApp.py:6403 +#: FlatCAMApp.py:6487 msgid "[WARNING_NOTCL] Open DXF cancelled." msgstr "[WARNING_NOTCL] Incărcarea fişier DXF anulata." -#: FlatCAMApp.py:6421 +#: FlatCAMApp.py:6505 #, python-format msgid "%s" msgstr "%s" -#: FlatCAMApp.py:6441 +#: FlatCAMApp.py:6525 msgid "" "[WARNING_NOTCL] Select an Gerber or Excellon file to view it's source file." msgstr "" "[WARNING_NOTCL] Selectati un obiect Gerber sau Excellon pentru a-i vedea " "codul sursa." -#: FlatCAMApp.py:6448 +#: FlatCAMApp.py:6532 msgid "" "[WARNING_NOTCL] There is no selected object for which to see it's source " "file code." msgstr "[WARNING_NOTCL] Nici-un obiect selectat pentru a-i vedea codul sursa." -#: FlatCAMApp.py:6456 +#: FlatCAMApp.py:6540 msgid "Source Editor" msgstr "Editor Cod" -#: FlatCAMApp.py:6466 +#: FlatCAMApp.py:6550 #, python-format msgid "[ERROR]App.on_view_source() -->%s" msgstr "[ERROR]App.on_view_source() -->%s" -#: FlatCAMApp.py:6478 FlatCAMApp.py:7621 FlatCAMObj.py:5573 +#: FlatCAMApp.py:6562 FlatCAMApp.py:7704 FlatCAMObj.py:5581 msgid "Code Editor" msgstr "Editor Cod" -#: FlatCAMApp.py:6490 +#: FlatCAMApp.py:6574 msgid "Script Editor" msgstr "Editor Script." -#: FlatCAMApp.py:6493 +#: FlatCAMApp.py:6577 msgid "" "#\n" "# CREATE A NEW FLATCAM TCL SCRIPT\n" @@ -810,99 +814,99 @@ msgstr "" "#\n" "\n" -#: FlatCAMApp.py:6516 FlatCAMApp.py:6519 +#: FlatCAMApp.py:6600 FlatCAMApp.py:6603 msgid "Open TCL script" msgstr "Încarcă TCL script" -#: FlatCAMApp.py:6527 +#: FlatCAMApp.py:6611 msgid "[WARNING_NOTCL] Open TCL script cancelled." msgstr "[WARNING_NOTCL] Incărcarea TCL script anulata." -#: FlatCAMApp.py:6539 +#: FlatCAMApp.py:6623 #, python-format msgid "[ERROR]App.on_fileopenscript() -->%s" msgstr "[ERROR]App.on_fileopenscript() -->%s" -#: FlatCAMApp.py:6565 FlatCAMApp.py:6568 +#: FlatCAMApp.py:6649 FlatCAMApp.py:6652 msgid "Run TCL script" msgstr "Ruleaza TCL script" -#: FlatCAMApp.py:6576 +#: FlatCAMApp.py:6660 msgid "[WARNING_NOTCL] Run TCL script cancelled." msgstr "[WARNING_NOTCL] Rularea fisierului Script a fost anulata." -#: FlatCAMApp.py:6622 FlatCAMApp.py:6626 +#: FlatCAMApp.py:6710 FlatCAMApp.py:6714 msgid "Save Project As ..." msgstr "Salvează Proiectul ca ..." -#: FlatCAMApp.py:6623 +#: FlatCAMApp.py:6711 #, python-brace-format msgid "{l_save}/Project_{date}" msgstr "{l_save}/Proiect_{date}" -#: FlatCAMApp.py:6631 +#: FlatCAMApp.py:6719 msgid "[WARNING_NOTCL] Save Project cancelled." msgstr "[WARNING_NOTCL] Salvarea Proiect anulata." -#: FlatCAMApp.py:6676 +#: FlatCAMApp.py:6763 msgid "Exporting SVG" msgstr "SVG in curs de export" -#: FlatCAMApp.py:6710 FlatCAMApp.py:6816 FlatCAMApp.py:6931 +#: FlatCAMApp.py:6797 FlatCAMApp.py:6903 FlatCAMApp.py:7018 #, python-format msgid "[success] SVG file exported to %s" msgstr "[success] Fişier SVG exportat in %s" -#: FlatCAMApp.py:6741 FlatCAMApp.py:6862 +#: FlatCAMApp.py:6828 FlatCAMApp.py:6949 #, python-format msgid "[WARNING_NOTCL] No object Box. Using instead %s" msgstr "" "[WARNING_NOTCL] Nu este nici-un container Box pentru obiect. Se foloseşte %s" -#: FlatCAMApp.py:6819 FlatCAMApp.py:6934 +#: FlatCAMApp.py:6906 FlatCAMApp.py:7021 msgid "Generating Film ... Please wait." msgstr "Filmul se generează ... Aşteaptă!" -#: FlatCAMApp.py:7082 +#: FlatCAMApp.py:7169 #, python-format msgid "[success] Excellon file exported to %s" msgstr "[success] Fişierul Excellon exportat in %s" -#: FlatCAMApp.py:7089 +#: FlatCAMApp.py:7176 msgid "Exporting Excellon" msgstr "Excellon in curs de export" -#: FlatCAMApp.py:7094 FlatCAMApp.py:7101 +#: FlatCAMApp.py:7181 FlatCAMApp.py:7188 msgid "[ERROR_NOTCL] Could not export Excellon file." msgstr "[ERROR_NOTCL] Fişierul Excellon nu a putut fi exportat." -#: FlatCAMApp.py:7199 +#: FlatCAMApp.py:7286 #, python-format msgid "[success] Gerber file exported to %s" msgstr "[success] Fişier Gerber exportat in %s" -#: FlatCAMApp.py:7206 +#: FlatCAMApp.py:7293 msgid "Exporting Gerber" msgstr "Gerber in curs de export" -#: FlatCAMApp.py:7211 FlatCAMApp.py:7218 +#: FlatCAMApp.py:7298 FlatCAMApp.py:7305 msgid "[ERROR_NOTCL] Could not export Gerber file." msgstr "[ERROR_NOTCL] Fişierul Gerber nu a putut fi exportat." -#: FlatCAMApp.py:7258 +#: FlatCAMApp.py:7345 #, python-format msgid "[success] DXF file exported to %s" msgstr "[success] Fişierul DXF exportat in %s" -#: FlatCAMApp.py:7264 +#: FlatCAMApp.py:7351 msgid "Exporting DXF" msgstr "DXF in curs de export" -#: FlatCAMApp.py:7269 FlatCAMApp.py:7276 +#: FlatCAMApp.py:7356 FlatCAMApp.py:7363 msgid "[[WARNING_NOTCL]] Could not export DXF file." msgstr "[[WARNING_NOTCL]] Fişierul DXF nu a putut fi exportat." -#: FlatCAMApp.py:7296 FlatCAMApp.py:7338 FlatCAMApp.py:7379 +#: FlatCAMApp.py:7383 FlatCAMApp.py:7425 FlatCAMApp.py:7469 msgid "" "[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and " "Gerber are supported" @@ -910,132 +914,132 @@ msgstr "" "[ERROR_NOTCL] Typul parametrului nu este compatibil. Doar Geometrie is " "Gerber sunt acceptate." -#: FlatCAMApp.py:7306 +#: FlatCAMApp.py:7393 msgid "Importing SVG" msgstr "SVG in curs de ia fi importat" -#: FlatCAMApp.py:7317 FlatCAMApp.py:7359 FlatCAMApp.py:7399 FlatCAMApp.py:7475 -#: FlatCAMApp.py:7542 FlatCAMApp.py:7607 flatcamTools/ToolPDF.py:212 +#: FlatCAMApp.py:7404 FlatCAMApp.py:7446 FlatCAMApp.py:7489 FlatCAMApp.py:7566 +#: FlatCAMApp.py:7627 FlatCAMApp.py:7690 flatcamTools/ToolPDF.py:212 #, python-format msgid "[success] Opened: %s" msgstr "[success] Incărcat: %s" -#: FlatCAMApp.py:7348 +#: FlatCAMApp.py:7435 msgid "Importing DXF" msgstr "DXF in curs de a fi importat" -#: FlatCAMApp.py:7387 +#: FlatCAMApp.py:7477 msgid "Importing Image" msgstr "Imaginea in curs de a fi importata" -#: FlatCAMApp.py:7428 FlatCAMApp.py:7430 +#: FlatCAMApp.py:7518 FlatCAMApp.py:7520 #, python-format msgid "[ERROR_NOTCL] Failed to open file: %s" -msgstr "[ERROR_NOTCL] Esec in incărcarea fişierului %s" +msgstr "[ERROR_NOTCL] Eşec in incărcarea fişierului %s" -#: FlatCAMApp.py:7433 +#: FlatCAMApp.py:7523 #, python-brace-format msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}" -msgstr "[ERROR_NOTCL] Esec in parsarea fişierului: {name}. {error}" +msgstr "[ERROR_NOTCL] Eşec in parsarea fişierului: {name}. {error}" -#: FlatCAMApp.py:7439 FlatCAMObj.py:4271 -#: flatcamEditors/FlatCAMExcEditor.py:2041 +#: FlatCAMApp.py:7530 FlatCAMObj.py:4266 +#: flatcamEditors/FlatCAMExcEditor.py:2077 msgid "[ERROR] An internal error has ocurred. See shell.\n" msgstr "" -"[ERROR] A aparut o eroare interna. Verifică in TCL Shell pt mai multe " +"[ERROR] A apărut o eroare interna. Verifică in TCL Shell pt mai multe " "detalii.\n" -#: FlatCAMApp.py:7448 +#: FlatCAMApp.py:7539 msgid "" "[ERROR_NOTCL] Object is not Gerber file or empty. Aborting object creation." msgstr "" "[ERROR_NOTCL] Obiectul nu estetip Gerber sau este gol. Se anulează crearea " "obiectului." -#: FlatCAMApp.py:7456 +#: FlatCAMApp.py:7547 msgid "Opening Gerber" msgstr "Gerber in curs de incărcare" -#: FlatCAMApp.py:7466 +#: FlatCAMApp.py:7557 msgid "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file." msgstr "" "[ERROR_NOTCL] Incărcarea Gerber a eșuat. Probabil nu este de tip Gerber." -#: FlatCAMApp.py:7501 flatcamTools/ToolPcbWizard.py:421 +#: FlatCAMApp.py:7590 flatcamTools/ToolPcbWizard.py:421 msgid "[ERROR_NOTCL] This is not Excellon file." msgstr "[ERROR_NOTCL] Acesta nu este un fişier Excellon." -#: FlatCAMApp.py:7504 +#: FlatCAMApp.py:7593 #, python-format msgid "[ERROR_NOTCL] Cannot open file: %s" msgstr "[ERROR_NOTCL] Fişierul %s nu se poate incărca." -#: FlatCAMApp.py:7509 flatcamTools/ToolPcbWizard.py:429 +#: FlatCAMApp.py:7598 flatcamTools/ToolPcbWizard.py:429 msgid "[ERROR_NOTCL] An internal error has occurred. See shell.\n" msgstr "" -"[ERROR_NOTCL] A aparut o eroare interna. Verifică in TCL Shell pt mai multe " +"[ERROR_NOTCL] A apărut o eroare interna. Verifică in TCL Shell pt mai multe " "detalii.\n" -#: FlatCAMApp.py:7525 flatcamTools/ToolPDF.py:262 +#: FlatCAMApp.py:7611 flatcamTools/ToolPDF.py:262 #: flatcamTools/ToolPcbWizard.py:442 #, python-format msgid "[ERROR_NOTCL] No geometry found in file: %s" msgstr "" "[ERROR_NOTCL] Nici-o informaţie de tip geometrie nu s-a gasit in fişierul: %s" -#: FlatCAMApp.py:7528 +#: FlatCAMApp.py:7614 msgid "Opening Excellon." msgstr "Excellon in curs de incărcare" -#: FlatCAMApp.py:7535 +#: FlatCAMApp.py:7620 msgid "[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file." msgstr "" "[ERROR_NOTCL] Incărcarea Excellon a eșuat. Probabil nu este de tip Excellon." -#: FlatCAMApp.py:7574 +#: FlatCAMApp.py:7657 #, python-format msgid "[ERROR_NOTCL] Failed to open %s" msgstr "[ERROR_NOTCL] Incărcarea fişierului %s a eșuat." -#: FlatCAMApp.py:7584 +#: FlatCAMApp.py:7667 msgid "[ERROR_NOTCL] This is not GCODE" msgstr "[ERROR_NOTCL] Acest obiect nu este de tip GCode" -#: FlatCAMApp.py:7590 +#: FlatCAMApp.py:7673 msgid "Opening G-Code." msgstr "G-Code in curs de incărcare" -#: FlatCAMApp.py:7598 +#: FlatCAMApp.py:7681 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 "" -"[ERROR_NOTCL] Esec in crearea unui obiect CNCJob. Probabil nu este un fişier " +"[ERROR_NOTCL] Eşec in crearea unui obiect CNCJob. Probabil nu este un fişier " "GCode.\n" "Incercarea de a crea un obiect CNCJob din G-Code a eșuat in timpul " "procesarii." -#: FlatCAMApp.py:7638 +#: FlatCAMApp.py:7721 #, python-format msgid "[ERROR_NOTCL] Failed to open config file: %s" -msgstr "[ERROR_NOTCL] Esec in incărcarea fişierului de configurare: %s" +msgstr "[ERROR_NOTCL] Eşec in incărcarea fişierului de configurare: %s" -#: FlatCAMApp.py:7663 FlatCAMApp.py:7679 +#: FlatCAMApp.py:7747 FlatCAMApp.py:7764 #, python-format msgid "[ERROR_NOTCL] Failed to open project file: %s" -msgstr "[ERROR_NOTCL] Esec in incărcarea fişierului proiect: %s" +msgstr "[ERROR_NOTCL] Eşec in incărcarea fişierului proiect: %s" -#: FlatCAMApp.py:7705 +#: FlatCAMApp.py:7787 #, python-format msgid "[success] Project loaded from: %s" msgstr "[success] Proeictul a fost incărcat din: %s" -#: FlatCAMApp.py:7835 +#: FlatCAMApp.py:7892 msgid "Available commands:\n" msgstr "Comenzi disponibile:\n" -#: FlatCAMApp.py:7837 +#: FlatCAMApp.py:7894 msgid "" "\n" "\n" @@ -1047,23 +1051,23 @@ msgstr "" "Introduceți help pentru utilizare.\n" "Exemplu: help open_gerber" -#: FlatCAMApp.py:7985 +#: FlatCAMApp.py:8044 msgid "Shows list of commands." msgstr "Arata o lista de comenzi." -#: FlatCAMApp.py:8042 +#: FlatCAMApp.py:8101 msgid "[ERROR_NOTCL] Failed to load recent item list." -msgstr "[ERROR_NOTCL] Esec in incărcarea listei cu obiecte recente." +msgstr "[ERROR_NOTCL] Eşec in incărcarea listei cu obiecte recente." -#: FlatCAMApp.py:8049 +#: FlatCAMApp.py:8108 msgid "[ERROR_NOTCL] Failed to parse recent item list." -msgstr "[ERROR_NOTCL] Esec in parsarea listei cu obiecte recente." +msgstr "[ERROR_NOTCL] Eşec in parsarea listei cu obiecte recente." -#: FlatCAMApp.py:8110 flatcamGUI/FlatCAMGUI.py:973 +#: FlatCAMApp.py:8169 flatcamGUI/FlatCAMGUI.py:968 msgid "Shortcut Key List" msgstr "Lista cu taste Shortcut" -#: FlatCAMApp.py:8117 +#: FlatCAMApp.py:8176 msgid "" "\n" "

Selected Tab - Choose an Item from " @@ -1160,27 +1164,27 @@ msgstr "" "\n" " " -#: FlatCAMApp.py:8221 +#: FlatCAMApp.py:8280 msgid "[WARNING_NOTCL] Failed checking for latest version. Could not connect." msgstr "" "[WARNING_NOTCL] Verificarea pentru ultima versiune a eșuat. Nu a fost " "posibilă conectarea la server." -#: FlatCAMApp.py:8228 +#: FlatCAMApp.py:8287 msgid "[ERROR_NOTCL] Could not parse information about latest version." msgstr "" "[ERROR_NOTCL] Informatia cu privire la ultima versiune nu s-a putut " "interpreta." -#: FlatCAMApp.py:8238 +#: FlatCAMApp.py:8297 msgid "[success] FlatCAM is up to date!" msgstr "[success] FlatCAM este la ultima versiune!" -#: FlatCAMApp.py:8243 +#: FlatCAMApp.py:8302 msgid "Newer Version Available" msgstr "O nouă versiune este disponibila" -#: FlatCAMApp.py:8244 +#: FlatCAMApp.py:8303 msgid "" "There is a newer version of FlatCAM available for download:\n" "\n" @@ -1188,85 +1192,97 @@ msgstr "" "O nouă versiune de FlatCAM este disponibilă pentru download::\n" "\n" -#: FlatCAMApp.py:8246 +#: FlatCAMApp.py:8305 msgid "info" msgstr "Informaţie" -#: FlatCAMApp.py:8265 +#: FlatCAMApp.py:8324 msgid "[success] All plots disabled." -msgstr "[success] Toate afisarile sunt dezactivate." +msgstr "[success] Toate afişările sunt dezactivate." -#: FlatCAMApp.py:8271 +#: FlatCAMApp.py:8330 msgid "[success] All non selected plots disabled." -msgstr "[success] Toate afisarile care nu sunt selectate sunt dezactivate." +msgstr "[success] Toate afişările care nu sunt selectate sunt dezactivate." -#: FlatCAMApp.py:8277 +#: FlatCAMApp.py:8336 msgid "[success] All plots enabled." -msgstr "[success] Toate afisarile sunt activate." +msgstr "[success] Toate afişările sunt activate." -#: FlatCAMApp.py:8388 +#: FlatCAMApp.py:8342 +msgid "[success] Selected plots enabled..." +msgstr "[success] Toate afişările sunt activate..." + +#: FlatCAMApp.py:8350 +msgid "[success] Selected plots disabled..." +msgstr "[success] Toate afişările sunt dezactivate..." + +#: FlatCAMApp.py:8360 FlatCAMApp.py:8373 +msgid "Working ..." +msgstr "Se lucrează..." + +#: FlatCAMApp.py:8407 msgid "Saving FlatCAM Project" msgstr "Proiectul FlatCAM este in curs de salvare" -#: FlatCAMApp.py:8409 FlatCAMApp.py:8440 +#: FlatCAMApp.py:8428 FlatCAMApp.py:8459 #, python-format msgid "[success] Project saved to: %s" msgstr "[success] Proiectul s-a salvat in: %s" -#: FlatCAMApp.py:8427 +#: FlatCAMApp.py:8446 #, python-format msgid "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it." msgstr "" "[ERROR_NOTCL] Verificarea proiectului salvat a eșuat: %s. Incearcă să il " "salvezi din nou." -#: FlatCAMApp.py:8434 +#: FlatCAMApp.py:8453 #, python-format msgid "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it." msgstr "" "[ERROR_NOTCL] Parsarea proiectului salvat a eșuat: %s. Incearcă să il " "salvezi din nou." -#: FlatCAMApp.py:8442 +#: FlatCAMApp.py:8461 #, python-format msgid "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it." msgstr "" "[ERROR_NOTCL] Salvarea proiectului a eșuat: %s. Incearcă să il salvezi din " "nou." -#: FlatCAMObj.py:201 +#: FlatCAMObj.py:202 #, python-brace-format msgid "[success] Name changed from {old} to {new}" msgstr "[success] Numele schimbat din {old} in {new}" -#: FlatCAMObj.py:548 FlatCAMObj.py:2033 FlatCAMObj.py:3307 FlatCAMObj.py:5470 +#: FlatCAMObj.py:546 FlatCAMObj.py:2031 FlatCAMObj.py:3311 FlatCAMObj.py:5478 msgid "Basic" msgstr "Baza" -#: FlatCAMObj.py:560 FlatCAMObj.py:2049 FlatCAMObj.py:3329 FlatCAMObj.py:5476 +#: FlatCAMObj.py:558 FlatCAMObj.py:2047 FlatCAMObj.py:3333 FlatCAMObj.py:5484 msgid "Advanced" msgstr "Avansat" -#: FlatCAMObj.py:923 FlatCAMObj.py:978 +#: FlatCAMObj.py:921 FlatCAMObj.py:976 #, python-format msgid "[success] Isolation geometry created: %s" msgstr "[success] Geometria de izolare creată: %s" -#: FlatCAMObj.py:1157 +#: FlatCAMObj.py:1155 msgid "Plotting Apertures" msgstr "Aperturile sunt in curs de afișare" -#: FlatCAMObj.py:1872 flatcamEditors/FlatCAMExcEditor.py:1332 +#: FlatCAMObj.py:1870 flatcamEditors/FlatCAMExcEditor.py:1368 msgid "Total Drills" msgstr "Nr. Tot. Op. Găurire" -#: FlatCAMObj.py:1898 flatcamEditors/FlatCAMExcEditor.py:1364 +#: FlatCAMObj.py:1896 flatcamEditors/FlatCAMExcEditor.py:1400 msgid "Total Slots" msgstr "Nr. Tot. Sloturi" -#: FlatCAMObj.py:2105 FlatCAMObj.py:3380 FlatCAMObj.py:3687 FlatCAMObj.py:3874 -#: FlatCAMObj.py:3887 FlatCAMObj.py:4004 FlatCAMObj.py:4419 FlatCAMObj.py:4654 -#: FlatCAMObj.py:5062 flatcamEditors/FlatCAMExcEditor.py:1439 +#: FlatCAMObj.py:2103 FlatCAMObj.py:3384 FlatCAMObj.py:3682 FlatCAMObj.py:3869 +#: FlatCAMObj.py:3882 FlatCAMObj.py:3999 FlatCAMObj.py:4416 FlatCAMObj.py:4653 +#: FlatCAMObj.py:5061 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 @@ -1285,47 +1301,47 @@ msgstr "Nr. Tot. Sloturi" msgid "[ERROR_NOTCL] Wrong value format entered, use a number." msgstr "[ERROR_NOTCL] O valoare gresita a fost introdusa. Foloseşte un număr." -#: FlatCAMObj.py:2329 FlatCAMObj.py:2420 FlatCAMObj.py:2542 +#: FlatCAMObj.py:2327 FlatCAMObj.py:2418 FlatCAMObj.py:2540 msgid "" "[ERROR_NOTCL] Please select one or more tools from the list and try again." msgstr "" "[ERROR_NOTCL] Selectează una sau mai multe unelte din lista și încearcă din " "nou." -#: FlatCAMObj.py:2336 +#: FlatCAMObj.py:2334 msgid "" "[ERROR_NOTCL] Milling tool for DRILLS is larger than hole size. Cancelled." msgstr "" "[ERROR_NOTCL] Anulat. Freza pt frezarea găurilor este mai mare decat " "diametrul găurii." -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 msgid "Tool_nr" -msgstr "Nr. Unealta" +msgstr "Nr. Unealtă" -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 -#: flatcamEditors/FlatCAMExcEditor.py:785 -#: flatcamEditors/FlatCAMExcEditor.py:1984 flatcamGUI/ObjectUI.py:556 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 +#: flatcamEditors/FlatCAMExcEditor.py:819 +#: flatcamEditors/FlatCAMExcEditor.py:2020 flatcamGUI/ObjectUI.py:556 #: flatcamTools/ToolNonCopperClear.py:83 flatcamTools/ToolPaint.py:80 #: flatcamTools/ToolPcbWizard.py:78 flatcamTools/ToolSolderPaste.py:81 msgid "Diameter" msgstr "Diametru" -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 msgid "Drills_Nr" msgstr "Nr. gaura" -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 msgid "Slots_Nr" msgstr "Nr. slot" -#: FlatCAMObj.py:2430 +#: FlatCAMObj.py:2428 msgid "" "[ERROR_NOTCL] Milling tool for SLOTS is larger than hole size. Cancelled." msgstr "" "[ERROR_NOTCL] Anulat. Freza este mai mare decat diametrul slotului de frezat." -#: FlatCAMObj.py:2604 FlatCAMObj.py:4307 FlatCAMObj.py:4520 FlatCAMObj.py:4837 +#: FlatCAMObj.py:2602 FlatCAMObj.py:4304 FlatCAMObj.py:4519 FlatCAMObj.py:4836 msgid "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"z_pdepth\"] or self." "options[\"z_pdepth\"]" @@ -1333,7 +1349,7 @@ msgstr "" "[ERROR_NOTCL] Valoare gresita pt self.defaults[\"z_pdepth\"] sau self." "options[\"z_pdepth\"]" -#: FlatCAMObj.py:2616 FlatCAMObj.py:4319 FlatCAMObj.py:4532 FlatCAMObj.py:4849 +#: FlatCAMObj.py:2614 FlatCAMObj.py:4316 FlatCAMObj.py:4531 FlatCAMObj.py:4848 msgid "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"feedrate_probe\"] or " "self.options[\"feedrate_probe\"]" @@ -1341,73 +1357,73 @@ msgstr "" "[ERROR_NOTCL] Valoare gresita pt self.defaults[\"feedrate_probe\"] sau self." "options[\"feedrate_probe\"]" -#: FlatCAMObj.py:2648 FlatCAMObj.py:4724 FlatCAMObj.py:4729 FlatCAMObj.py:4875 +#: FlatCAMObj.py:2646 FlatCAMObj.py:4723 FlatCAMObj.py:4728 FlatCAMObj.py:4874 msgid "Generating CNC Code" msgstr "CNC Code in curs de generare" -#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5166 camlib.py:5625 -#: camlib.py:5888 +#: FlatCAMObj.py:2672 FlatCAMObj.py:5020 camlib.py:5152 camlib.py:5611 +#: camlib.py:5874 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 "" -"[ERROR] Parametrul >Schimbare Unealta X, Y< in Editare -> Peferințe trebuie " +"[ERROR] Parametrul >Schimbare Unealtă X, Y< in Editare -> Peferințe trebuie " "să fie in formatul (x, y) \n" "dar are o singură valoare in loc de doua. " -#: FlatCAMObj.py:3022 FlatCAMObj.py:3930 FlatCAMObj.py:3931 FlatCAMObj.py:3940 +#: FlatCAMObj.py:3020 FlatCAMObj.py:3925 FlatCAMObj.py:3926 FlatCAMObj.py:3935 msgid "Iso" msgstr "Izo." -#: FlatCAMObj.py:3022 FlatCAMObj.py:3265 FlatCAMObj.py:3552 +#: FlatCAMObj.py:3020 FlatCAMObj.py:3269 FlatCAMObj.py:3549 msgid "Rough" msgstr "Grosier" -#: FlatCAMObj.py:3022 +#: FlatCAMObj.py:3020 msgid "Finish" msgstr "Finisare" -#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:727 -#: flatcamGUI/FlatCAMGUI.py:1618 flatcamGUI/FlatCAMGUI.py:1953 +#: FlatCAMObj.py:3304 flatcamGUI/FlatCAMGUI.py:526 flatcamGUI/FlatCAMGUI.py:722 +#: flatcamGUI/FlatCAMGUI.py:1615 flatcamGUI/FlatCAMGUI.py:1951 #: flatcamGUI/ObjectUI.py:999 msgid "Copy" msgstr "Copiază" -#: FlatCAMObj.py:3522 +#: FlatCAMObj.py:3519 msgid "[ERROR_NOTCL] Please enter the desired tool diameter in Float format." msgstr "[ERROR_NOTCL] Introdu diametrul dorit pt unealtă in format Real." -#: FlatCAMObj.py:3597 +#: FlatCAMObj.py:3592 msgid "[success] Tool added in Tool Table." -msgstr "[success] Unealta adăugată in Tabela de Unelte." +msgstr "[success] Unealtă adăugată in Tabela de Unelte." -#: FlatCAMObj.py:3602 +#: FlatCAMObj.py:3597 msgid "[ERROR_NOTCL] Default Tool added. Wrong value format entered." msgstr "" -"[ERROR_NOTCL] Unealta implicita adăugatădar valoarea are un format gresit." +"[ERROR_NOTCL] Unealta implicita adăugată dar valoarea are un format gresit." -#: FlatCAMObj.py:3632 FlatCAMObj.py:3642 +#: FlatCAMObj.py:3627 FlatCAMObj.py:3637 msgid "[WARNING_NOTCL] Failed. Select a tool to copy." msgstr "[WARNING_NOTCL] Eșuat. Selectează o unealtă pt copiere." -#: FlatCAMObj.py:3671 +#: FlatCAMObj.py:3666 msgid "[success] Tool was copied in Tool Table." msgstr "[success] Unealta a fost copiata in Tabela de Unelte." -#: FlatCAMObj.py:3704 +#: FlatCAMObj.py:3699 msgid "[success] Tool was edited in Tool Table." msgstr "[success] Unealta a fost editata in Tabela de Unelte." -#: FlatCAMObj.py:3735 FlatCAMObj.py:3745 +#: FlatCAMObj.py:3730 FlatCAMObj.py:3740 msgid "[WARNING_NOTCL] Failed. Select a tool to delete." msgstr "[WARNING_NOTCL] Eșuat. Selectează o unealtă pentru ștergere." -#: FlatCAMObj.py:3769 +#: FlatCAMObj.py:3764 msgid "[success] Tool was deleted in Tool Table." msgstr "[success] Unealta a fost stearsa din Tabela de Unelte." -#: FlatCAMObj.py:4190 +#: FlatCAMObj.py:4185 #, python-format msgid "" "[WARNING_NOTCL] This Geometry can't be processed because it is %s geometry." @@ -1415,23 +1431,23 @@ msgstr "" "[WARNING_NOTCL] Acest obiect Geometrie nu poate fi procesar decoarece este " "Geometrie %s." -#: FlatCAMObj.py:4207 +#: FlatCAMObj.py:4202 msgid "[ERROR_NOTCL] Wrong Tool Dia value format entered, use a number." msgstr "" "[ERROR_NOTCL] Diametrul uneltei este in format gresit, foloseşte un număr " "Real." -#: FlatCAMObj.py:4234 +#: FlatCAMObj.py:4229 msgid "[ERROR_NOTCL] Failed. No tool selected in the tool table ..." msgstr "" "[ERROR_NOTCL] Eșuat. Nici-o unealtă nu este selectată in Tabela de Unelte ..." -#: FlatCAMObj.py:4272 +#: FlatCAMObj.py:4267 #, python-format msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" msgstr "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" -#: FlatCAMObj.py:4428 FlatCAMObj.py:4663 +#: FlatCAMObj.py:4425 FlatCAMObj.py:4662 msgid "" "[WARNING] Tool Offset is selected in Tool Table but no value is provided.\n" "Add a Tool Offset or change the Offset Type." @@ -1440,21 +1456,21 @@ msgstr "" "val. nu este oferita.\n" "Adaugă un ofset pt unealtă sau schimbă Tipul Ofset." -#: FlatCAMObj.py:4544 flatcamTools/ToolSolderPaste.py:1107 +#: FlatCAMObj.py:4543 flatcamTools/ToolSolderPaste.py:1107 #: flatcamTools/ToolSolderPaste.py:1162 msgid "[ERROR_NOTCL] Cancelled. Empty file, it has no geometry..." msgstr "[ERROR_NOTCL] Anulat. Fişier gol, nu are date geometrice." -#: FlatCAMObj.py:4908 FlatCAMObj.py:4918 camlib.py:3346 camlib.py:3355 +#: FlatCAMObj.py:4907 FlatCAMObj.py:4917 camlib.py:3335 camlib.py:3344 msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float." msgstr "" "[ERROR_NOTCL] Factorul de scalare trebuie să fie un număr: natural sau real." -#: FlatCAMObj.py:4956 +#: FlatCAMObj.py:4955 msgid "[success] Geometry Scale done." msgstr "[success] Scalare Geometrie executată." -#: FlatCAMObj.py:4973 camlib.py:3425 +#: FlatCAMObj.py:4972 camlib.py:3414 msgid "" "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " "one value in the Offset field." @@ -1462,29 +1478,29 @@ msgstr "" "[ERROR_NOTCL] O pereche de valori (x,y) este necesară. Probabil că ai " "introdus numai o singură valoare in câmpul Offset." -#: FlatCAMObj.py:4993 +#: FlatCAMObj.py:4992 msgid "[success] Geometry Offset done." msgstr "[success] Ofset Geometrie executat." -#: FlatCAMObj.py:5538 FlatCAMObj.py:5543 flatcamTools/ToolSolderPaste.py:1361 +#: FlatCAMObj.py:5546 FlatCAMObj.py:5551 flatcamTools/ToolSolderPaste.py:1361 msgid "Export Machine Code ..." msgstr "Exporta CNC Cod Masina ..." -#: FlatCAMObj.py:5549 flatcamTools/ToolSolderPaste.py:1364 +#: FlatCAMObj.py:5557 flatcamTools/ToolSolderPaste.py:1364 msgid "[WARNING_NOTCL] Export Machine Code cancelled ..." msgstr "[WARNING_NOTCL] Exportul codului masina CNC a fost anulat ..." -#: FlatCAMObj.py:5562 +#: FlatCAMObj.py:5570 #, python-format msgid "[success] Machine Code file saved to: %s" msgstr "[success] Fişierul cu cod CNC este salvat in: %s" -#: FlatCAMObj.py:5584 +#: FlatCAMObj.py:5592 #, python-format msgid "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" msgstr "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" -#: FlatCAMObj.py:5701 +#: FlatCAMObj.py:5709 #, python-format msgid "" "[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " @@ -1493,11 +1509,11 @@ msgstr "" "[WARNING_NOTCL] Acest obiect CNCJob nu poate fi procesar deoarece este un " "obiect CNCJob tip %s." -#: FlatCAMObj.py:5754 +#: FlatCAMObj.py:5762 msgid "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21" msgstr "[ERROR_NOTCL] G-code nu contine codul pt unitati: G20 sau G21" -#: FlatCAMObj.py:5767 +#: FlatCAMObj.py:5775 msgid "" "[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " "empty." @@ -1505,17 +1521,17 @@ msgstr "" "[ERROR_NOTCL] Anulat. Codul G-Code din Macro-ul Schimbare unealtă este " "activat dar nuc contine nimic." -#: FlatCAMObj.py:5774 +#: FlatCAMObj.py:5782 msgid "[success] Toolchange G-code was replaced by a custom code." msgstr "" "[success] G-Code-ul pt schimbare unealtă a fost inlocuit cu un cod " "pesonalizat." -#: FlatCAMObj.py:5789 flatcamTools/ToolSolderPaste.py:1390 +#: FlatCAMObj.py:5797 flatcamTools/ToolSolderPaste.py:1390 msgid "[WARNING_NOTCL] No such file or directory" msgstr "[WARNING_NOTCL] Nu exista un asemenea fişier sau director" -#: FlatCAMObj.py:5809 FlatCAMObj.py:5821 +#: FlatCAMObj.py:5817 FlatCAMObj.py:5829 msgid "" "[WARNING_NOTCL] The used postprocessor file has to have in it's name: " "'toolchange_custom'" @@ -1523,11 +1539,11 @@ msgstr "" "[WARNING_NOTCL] Postprocesorul folosit trebuie să aibă in numele sau: " "'toolchange_custom'" -#: FlatCAMObj.py:5827 +#: FlatCAMObj.py:5835 msgid "[ERROR] There is no postprocessor file." msgstr "[ERROR] Nu exista nici-un fişier postprocesor." -#: ObjectCollection.py:419 +#: ObjectCollection.py:420 #, python-brace-format msgid "Object renamed from {old} to {new}" msgstr "Obiectul este redenumit din {old} in {new}" @@ -1537,46 +1553,46 @@ msgstr "Obiectul este redenumit din {old} in {new}" msgid "[ERROR] Cause of error: %s" msgstr "[ERROR] Motivul erorii: %s" -#: camlib.py:202 +#: camlib.py:198 msgid "[ERROR_NOTCL] self.solid_geometry is neither BaseGeometry or list." msgstr "" "[ERROR_NOTCL] self.solid_geometry nu este tip BaseGeometry sau tip lista." -#: camlib.py:1390 +#: camlib.py:1381 msgid "[success] Object was mirrored ..." msgstr "[success] Obiectul a fost oglindit ..." -#: camlib.py:1392 +#: camlib.py:1383 msgid "[ERROR_NOTCL] Failed to mirror. No object selected" msgstr "[ERROR_NOTCL] Oglindire eșuata. Nici-un obiect nu este selectat ..." -#: camlib.py:1428 +#: camlib.py:1419 msgid "[success] Object was rotated ..." msgstr "[success] Obiectul a fost rotit ..." -#: camlib.py:1430 +#: camlib.py:1421 msgid "[ERROR_NOTCL] Failed to rotate. No object selected" msgstr "[ERROR_NOTCL] Rotaţie eșuata. Nici-un obiect nu este selectat ..." -#: camlib.py:1464 +#: camlib.py:1455 msgid "[success] Object was skewed ..." msgstr "[success] Obiectul a fost deformat ..." -#: camlib.py:1466 +#: camlib.py:1457 msgid "[ERROR_NOTCL] Failed to skew. No object selected" msgstr "[ERROR_NOTCL] Deformare eșuata. Nici-un obiect nu este selectat ..." -#: camlib.py:2728 camlib.py:2813 +#: camlib.py:2717 camlib.py:2802 #, python-format msgid "[WARNING] Coordinates missing, line ignored: %s" msgstr "[WARNING] Coordonatele lipsesc, linia este ignorata: %s" -#: camlib.py:2729 camlib.py:2814 +#: camlib.py:2718 camlib.py:2803 msgid "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!" msgstr "" "[WARNING_NOTCL] Fişierul Gerber poate fi corrupt. Verificati fişierul!!!" -#: camlib.py:2778 +#: camlib.py:2767 #, python-format msgid "" "[ERROR] Region does not have enough points. File will be processed but there " @@ -1585,7 +1601,7 @@ msgstr "" "[ERROR] Regiunea Gerber nu are suficiente puncte. Fişierul va fi procesat " "dar sunt erori de parsare. Numărul liniei: %s" -#: camlib.py:3170 +#: camlib.py:3159 #, python-format msgid "" "[ERROR]Gerber Parser ERROR.\n" @@ -1594,32 +1610,32 @@ msgstr "" "[ERROR] Eroare in parserul Gerber.\n" "%s:" -#: camlib.py:3392 +#: camlib.py:3381 msgid "[success] Gerber Scale done." msgstr "[success] Scalarea Gerber efectuata." -#: camlib.py:3458 +#: camlib.py:3447 msgid "[success] Gerber Offset done." msgstr "[success] Offsetare Gerber efectuata." -#: camlib.py:3512 +#: camlib.py:3501 msgid "[success] Gerber Mirror done." msgstr "[success] Oglindirea Gerber efectuata." -#: camlib.py:3558 +#: camlib.py:3547 msgid "[success] Gerber Skew done." msgstr "[success] Deformarea Gerber efectuata." -#: camlib.py:3596 +#: camlib.py:3585 msgid "[success] Gerber Rotate done." msgstr "[success] Rotatia Gerber efectuata." -#: camlib.py:3875 +#: camlib.py:3864 #, python-format msgid "[ERROR_NOTCL] This is GCODE mark: %s" msgstr "[ERROR_NOTCL] Acesta este un marcaj Gerber: %s" -#: camlib.py:3990 +#: camlib.py:3979 #, python-format msgid "" "[WARNING] No tool diameter info's. See shell.\n" @@ -1635,7 +1651,7 @@ msgstr "" "Userul trebuie să editeze obictul Excellon rezultat si sa ajusteze " "diametrele a.i sa reflecte diametrele reale." -#: camlib.py:4455 +#: camlib.py:4444 #, python-brace-format msgid "" "[ERROR] Excellon Parser error.\n" @@ -1645,7 +1661,7 @@ msgstr "" "Parsare eșuata. Linia {l_nr}: {line}\n" "\n" -#: camlib.py:4532 +#: camlib.py:4521 msgid "" "[WARNING] Excellon.create_geometry() -> a drill location was skipped due of " "not having a tool associated.\n" @@ -1655,12 +1671,12 @@ msgstr "" "deoarece nu are o unealtă asociata.\n" "Verifică codul G-Code rezultat." -#: camlib.py:5075 +#: camlib.py:5061 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "[ERROR] Nu exista un asemenea parametru: %s" -#: camlib.py:5145 +#: camlib.py:5131 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1673,7 +1689,7 @@ msgstr "" "Se presupune că este o eroare de tastare astfel ca aplicaţia va converti " "intr-o valoare negativă. Verifică codul masina (G-Code etc) rezultat." -#: camlib.py:5152 camlib.py:5648 camlib.py:5911 +#: camlib.py:5138 camlib.py:5634 camlib.py:5897 #, python-format msgid "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" @@ -1681,15 +1697,15 @@ msgstr "" "[WARNING] Parametrul >Z tăiere< este nul. Nu va fi nici-o tăiere prin urmare " "nu procesam fişierul %s" -#: camlib.py:5381 camlib.py:5478 camlib.py:5536 +#: camlib.py:5367 camlib.py:5464 camlib.py:5522 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "[ERROR_NOTCL] Fişierul Excellon incărcat nu are găuri ..." -#: camlib.py:5483 +#: camlib.py:5469 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "[ERROR_NOTCL] Un tip de optimizare incorrect a fost selectat." -#: camlib.py:5636 camlib.py:5899 +#: camlib.py:5622 camlib.py:5885 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." @@ -1697,7 +1713,7 @@ msgstr "" "[ERROR_NOTCL] Parametrul >Z tăiere< este None sau zero. Cel mai probabil o " "combinaţie nefericita de parametri." -#: camlib.py:5641 camlib.py:5904 +#: camlib.py:5627 camlib.py:5890 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1710,11 +1726,11 @@ msgstr "" "Se presupune că este o eroare de tastare astfel ca aplicaţia va converti " "intr-o valoare negativă. Verifică codul masina (G-Code etc) rezultat." -#: camlib.py:5653 camlib.py:5916 +#: camlib.py:5639 camlib.py:5902 msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." msgstr "[ERROR_NOTCL] Parametrul >Z deplasare< este None sau zero." -#: camlib.py:5657 camlib.py:5920 +#: camlib.py:5643 camlib.py:5906 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1728,7 +1744,7 @@ msgstr "" "Se presupune că este o eroare de tastare astfel ca aplicaţia va converti " "intr-o valoare pozitivă. Verifică codul masina (G-Code etc) rezultat." -#: camlib.py:5664 camlib.py:5927 +#: camlib.py:5650 camlib.py:5913 #, python-format msgid "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" @@ -1736,12 +1752,12 @@ msgstr "" "[WARNING] Parametrul >Z deplasare< este zero. Aceasta este periculos, prin " "urmare fişierul %s nu se procesează." -#: camlib.py:5794 +#: camlib.py:5780 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "[ERROR] Se astepta o Geometrie, am primit in schimb %s" -#: camlib.py:5800 +#: camlib.py:5786 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." @@ -1749,7 +1765,7 @@ msgstr "" "[ERROR_NOTCL] Se încearcă generarea unui CNC Job dintr-un obiect Geometrie " "fără atributul solid_geometry." -#: camlib.py:5839 +#: camlib.py:5825 msgid "" "[ERROR_NOTCL] The Tool Offset value is too negative to use for the " "current_geometry.\n" @@ -1759,11 +1775,17 @@ msgstr "" "fi folosita. \n" "Mareste valoarea absoluta și încearcă din nou." -#: camlib.py:6053 +#: camlib.py:6039 msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." msgstr "" "[ERROR_NOTCL] Nu exista date cu privier la unealtă in geometria SolderPaste." +#: flatcamEditors/FlatCAMExcEditor.py:37 flatcamEditors/FlatCAMExcEditor.py:143 +#: flatcamEditors/FlatCAMGrbEditor.py:229 +#: flatcamEditors/FlatCAMGrbEditor.py:234 +msgid "Click to place ..." +msgstr "Click pt a plasa ..." + #: flatcamEditors/FlatCAMExcEditor.py:46 msgid "[WARNING_NOTCL] To add a drill first select a tool" msgstr "" @@ -1771,11 +1793,11 @@ msgstr "" "un burghiu (unealtă)" #: flatcamEditors/FlatCAMExcEditor.py:62 flatcamEditors/FlatCAMExcEditor.py:165 -#: flatcamEditors/FlatCAMExcEditor.py:447 -#: flatcamEditors/FlatCAMExcEditor.py:472 +#: flatcamEditors/FlatCAMExcEditor.py:450 +#: flatcamEditors/FlatCAMExcEditor.py:475 #: flatcamEditors/FlatCAMGrbEditor.py:451 -#: flatcamEditors/FlatCAMGrbEditor.py:1762 -#: flatcamEditors/FlatCAMGrbEditor.py:1790 +#: flatcamEditors/FlatCAMGrbEditor.py:1776 +#: flatcamEditors/FlatCAMGrbEditor.py:1804 msgid "Click on target location ..." msgstr "Click pe locatia tinta ..." @@ -1803,9 +1825,9 @@ msgstr "" "in loc de punct ca și separator decimal." #: flatcamEditors/FlatCAMExcEditor.py:207 -#: flatcamEditors/FlatCAMGrbEditor.py:497 -msgid "[ERROR_NOTCL] The value is mistyped. Check the value." -msgstr "[ERROR_NOTCL] Valoarea este gresita. Verifică ce ai introdus." +#, python-format +msgid "[ERROR_NOTCL] The value is mistyped. Check the value. %s" +msgstr "[ERROR_NOTCL] Valoarea este gresita. Verifică valoarea. %s" #: flatcamEditors/FlatCAMExcEditor.py:305 msgid "[WARNING_NOTCL] Too many drills for the selected spacing angle." @@ -1821,50 +1843,50 @@ msgid "Click on the Drill(s) to resize ..." msgstr "" "Click pe operațiunile de găurire care se dorește să fie redimensionate ..." -#: flatcamEditors/FlatCAMExcEditor.py:353 +#: flatcamEditors/FlatCAMExcEditor.py:354 msgid "" "[ERROR_NOTCL] Resize drill(s) failed. Please enter a diameter for resize." msgstr "" "[ERROR_NOTCL] Redimensionarea operațiunilor de găurire a eșuat. Adaugă o " "valoare pentru dimetrul la care se face redimensionarea." -#: flatcamEditors/FlatCAMExcEditor.py:423 +#: flatcamEditors/FlatCAMExcEditor.py:424 msgid "[success] Done. Drill Resize completed." msgstr "[success] Executat. Redimensionare găurire terminată." -#: flatcamEditors/FlatCAMExcEditor.py:426 +#: flatcamEditors/FlatCAMExcEditor.py:427 msgid "[WARNING_NOTCL] Cancelled. No drills selected for resize ..." msgstr "" "[WARNING_NOTCL] Anulat. Nimic nu este selectat pentruredimensionare ..." -#: flatcamEditors/FlatCAMExcEditor.py:449 -#: flatcamEditors/FlatCAMGrbEditor.py:1764 +#: flatcamEditors/FlatCAMExcEditor.py:452 +#: flatcamEditors/FlatCAMGrbEditor.py:1778 msgid "Click on reference location ..." msgstr "Click pe locatia de referinţă ..." -#: flatcamEditors/FlatCAMExcEditor.py:504 +#: flatcamEditors/FlatCAMExcEditor.py:507 msgid "[success] Done. Drill(s) Move completed." msgstr "[success] Executat. Operatiile de găurire au fost mutate." -#: flatcamEditors/FlatCAMExcEditor.py:557 +#: flatcamEditors/FlatCAMExcEditor.py:592 msgid "[success] Done. Drill(s) copied." msgstr "[success] Executat. Operatiile de găurire au fost copiate." -#: flatcamEditors/FlatCAMExcEditor.py:758 +#: flatcamEditors/FlatCAMExcEditor.py:792 flatcamGUI/FlatCAMGUI.py:5026 msgid "Excellon Editor" msgstr "Editor Excellon" -#: flatcamEditors/FlatCAMExcEditor.py:765 -#: flatcamEditors/FlatCAMGrbEditor.py:2250 +#: flatcamEditors/FlatCAMExcEditor.py:799 +#: flatcamEditors/FlatCAMGrbEditor.py:2266 msgid "Name:" msgstr "Nume:" -#: flatcamEditors/FlatCAMExcEditor.py:771 flatcamTools/ToolNonCopperClear.py:72 +#: flatcamEditors/FlatCAMExcEditor.py:805 flatcamTools/ToolNonCopperClear.py:72 #: flatcamTools/ToolPaint.py:69 flatcamTools/ToolSolderPaste.py:70 msgid "Tools Table" msgstr "Tabela Unelte" -#: flatcamEditors/FlatCAMExcEditor.py:773 flatcamGUI/ObjectUI.py:538 +#: flatcamEditors/FlatCAMExcEditor.py:807 flatcamGUI/ObjectUI.py:538 msgid "" "Tools in this Excellon object\n" "when are used for drilling." @@ -1872,11 +1894,11 @@ msgstr "" "Burghie (unelte) in acest obiect Excellon\n" "când se face găurire." -#: flatcamEditors/FlatCAMExcEditor.py:793 +#: flatcamEditors/FlatCAMExcEditor.py:827 msgid "Add/Delete Tool" msgstr "Adaugă/Șterge Unealta" -#: flatcamEditors/FlatCAMExcEditor.py:795 +#: flatcamEditors/FlatCAMExcEditor.py:829 msgid "" "Add/Delete a tool to the tool list\n" "for this Excellon object." @@ -1884,19 +1906,20 @@ msgstr "" "Adaugă/Șterge o unealtă la lista de unelte\n" "pentru acest obiect Excellon." -#: flatcamEditors/FlatCAMExcEditor.py:803 flatcamTools/ToolCutOut.py:77 +#: flatcamEditors/FlatCAMExcEditor.py:837 flatcamTools/ToolCutOut.py:77 msgid "Tool Dia:" -msgstr "Dia. Unealta:" +msgstr "Dia. Unealtă:" -#: flatcamEditors/FlatCAMExcEditor.py:805 flatcamGUI/ObjectUI.py:978 +#: flatcamEditors/FlatCAMExcEditor.py:839 flatcamGUI/FlatCAMGUI.py:5055 +#: flatcamGUI/ObjectUI.py:978 msgid "Diameter for the new tool" msgstr "Diametru pentru noua unealtă (burghiu, freza)" -#: flatcamEditors/FlatCAMExcEditor.py:814 +#: flatcamEditors/FlatCAMExcEditor.py:847 msgid "Add Tool" msgstr "Adaugă Unealta" -#: flatcamEditors/FlatCAMExcEditor.py:816 +#: flatcamEditors/FlatCAMExcEditor.py:849 msgid "" "Add a new tool to the tool list\n" "with the diameter specified above." @@ -1904,11 +1927,11 @@ msgstr "" "Adaugă o unealtă noua la lista de unelte\n" "cu diametrul specificat deasupra." -#: flatcamEditors/FlatCAMExcEditor.py:826 +#: flatcamEditors/FlatCAMExcEditor.py:861 msgid "Delete Tool" msgstr "Șterge Unealta" -#: flatcamEditors/FlatCAMExcEditor.py:828 +#: flatcamEditors/FlatCAMExcEditor.py:863 msgid "" "Delete a tool in the tool list\n" "by selecting a row in the tool table." @@ -1916,41 +1939,41 @@ msgstr "" "Șterge o unealtă in lista de unelte\n" "prin selectarea unei linii in tabela de unelte." -#: flatcamEditors/FlatCAMExcEditor.py:846 +#: flatcamEditors/FlatCAMExcEditor.py:881 msgid "Resize Drill(s)" msgstr "Redimensionare operațiuni de găurire" -#: flatcamEditors/FlatCAMExcEditor.py:848 +#: flatcamEditors/FlatCAMExcEditor.py:883 msgid "Resize a drill or a selection of drills." msgstr "" "Redimensionează o operaţie de găurire sau o selecţie de operațiuni de " "găurire." -#: flatcamEditors/FlatCAMExcEditor.py:855 +#: flatcamEditors/FlatCAMExcEditor.py:890 msgid "Resize Dia:" msgstr "Redimensionare Dia:" -#: flatcamEditors/FlatCAMExcEditor.py:857 +#: flatcamEditors/FlatCAMExcEditor.py:892 msgid "Diameter to resize to." msgstr "Diametrul la care se face redimensionarea." -#: flatcamEditors/FlatCAMExcEditor.py:865 +#: flatcamEditors/FlatCAMExcEditor.py:900 msgid "Resize" msgstr "Redimensionează" -#: flatcamEditors/FlatCAMExcEditor.py:867 +#: flatcamEditors/FlatCAMExcEditor.py:902 msgid "Resize drill(s)" msgstr "Redimensionează op. de găurire." -#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1615 +#: flatcamEditors/FlatCAMExcEditor.py:924 flatcamGUI/FlatCAMGUI.py:1612 msgid "Add Drill Array" msgstr "Adaugă o arie de op. găurire" -#: flatcamEditors/FlatCAMExcEditor.py:891 +#: flatcamEditors/FlatCAMExcEditor.py:926 msgid "Add an array of drills (linear or circular array)" msgstr "Adaugă o arie de operațiuni de găurire (arie lineara sau circulara)." -#: flatcamEditors/FlatCAMExcEditor.py:897 +#: flatcamEditors/FlatCAMExcEditor.py:932 msgid "" "Select the type of drills array to create.\n" "It can be Linear X(Y) or Circular" @@ -1958,33 +1981,33 @@ msgstr "" "Selectează tipul de arii de operațiuni de găurire.\n" "Poate fi Liniar X(Y) sau Circular." -#: flatcamEditors/FlatCAMExcEditor.py:900 -#: flatcamEditors/FlatCAMGrbEditor.py:2483 +#: flatcamEditors/FlatCAMExcEditor.py:935 +#: flatcamEditors/FlatCAMGrbEditor.py:2499 msgid "Linear" msgstr "Liniar" -#: flatcamEditors/FlatCAMExcEditor.py:901 -#: flatcamEditors/FlatCAMGrbEditor.py:2484 +#: flatcamEditors/FlatCAMExcEditor.py:936 +#: flatcamEditors/FlatCAMGrbEditor.py:2500 msgid "Circular" msgstr "Circular" -#: flatcamEditors/FlatCAMExcEditor.py:908 +#: flatcamEditors/FlatCAMExcEditor.py:944 flatcamGUI/FlatCAMGUI.py:5065 msgid "Nr of drills:" msgstr "Nr. op. găurire" -#: flatcamEditors/FlatCAMExcEditor.py:910 +#: flatcamEditors/FlatCAMExcEditor.py:946 flatcamGUI/FlatCAMGUI.py:5067 msgid "Specify how many drills to be in the array." msgstr "Specifica cate operațiuni de găurire să fie incluse in arie." -#: flatcamEditors/FlatCAMExcEditor.py:927 -#: flatcamEditors/FlatCAMExcEditor.py:972 -#: flatcamEditors/FlatCAMGrbEditor.py:2510 -#: flatcamEditors/FlatCAMGrbEditor.py:2555 +#: flatcamEditors/FlatCAMExcEditor.py:964 +#: flatcamEditors/FlatCAMExcEditor.py:1010 +#: flatcamEditors/FlatCAMGrbEditor.py:2526 +#: flatcamEditors/FlatCAMGrbEditor.py:2571 msgid "Direction:" msgstr "Direcţie:" -#: flatcamEditors/FlatCAMExcEditor.py:929 -#: flatcamEditors/FlatCAMGrbEditor.py:2512 +#: flatcamEditors/FlatCAMExcEditor.py:966 +#: flatcamEditors/FlatCAMGrbEditor.py:2528 flatcamGUI/FlatCAMGUI.py:5082 msgid "" "Direction on which the linear array is oriented:\n" "- 'X' - horizontal axis \n" @@ -1996,27 +2019,28 @@ msgstr "" "- 'Y' - pe axa verticala sau \n" "- 'Unghi' - un unghi particular pentru inclinatia ariei" -#: flatcamEditors/FlatCAMExcEditor.py:942 -#: flatcamEditors/FlatCAMGrbEditor.py:2525 +#: flatcamEditors/FlatCAMExcEditor.py:979 +#: flatcamEditors/FlatCAMGrbEditor.py:2541 flatcamGUI/FlatCAMGUI.py:5096 msgid "Pitch:" msgstr "Pas:" -#: flatcamEditors/FlatCAMExcEditor.py:944 -#: flatcamEditors/FlatCAMGrbEditor.py:2527 +#: flatcamEditors/FlatCAMExcEditor.py:981 +#: flatcamEditors/FlatCAMGrbEditor.py:2543 flatcamGUI/FlatCAMGUI.py:5098 msgid "Pitch = Distance between elements of the array." msgstr "Pas = Distanta între elementele ariei." -#: flatcamEditors/FlatCAMExcEditor.py:951 -#: flatcamEditors/FlatCAMExcEditor.py:987 +#: flatcamEditors/FlatCAMExcEditor.py:989 +#: flatcamEditors/FlatCAMExcEditor.py:1024 #: flatcamEditors/FlatCAMGeoEditor.py:665 -#: flatcamEditors/FlatCAMGrbEditor.py:2534 -#: flatcamEditors/FlatCAMGrbEditor.py:2570 -#: flatcamEditors/FlatCAMGrbEditor.py:4558 flatcamTools/ToolTransform.py:68 +#: flatcamEditors/FlatCAMGrbEditor.py:2550 +#: flatcamEditors/FlatCAMGrbEditor.py:2586 +#: flatcamEditors/FlatCAMGrbEditor.py:4580 flatcamGUI/FlatCAMGUI.py:5107 +#: flatcamTools/ToolTransform.py:68 msgid "Angle:" msgstr "Unghi:" -#: flatcamEditors/FlatCAMExcEditor.py:953 -#: flatcamEditors/FlatCAMGrbEditor.py:2536 +#: flatcamEditors/FlatCAMExcEditor.py:991 +#: flatcamEditors/FlatCAMGrbEditor.py:2552 msgid "" "Angle at which the linear array is placed.\n" "The precision is of max 2 decimals.\n" @@ -2028,8 +2052,8 @@ msgstr "" "Val minima este: -359.99 grade.\n" "Val maxima este: 360.00 grade." -#: flatcamEditors/FlatCAMExcEditor.py:974 -#: flatcamEditors/FlatCAMGrbEditor.py:2557 +#: flatcamEditors/FlatCAMExcEditor.py:1012 +#: flatcamEditors/FlatCAMGrbEditor.py:2573 msgid "" "Direction for circular array.Can be CW = clockwise or CCW = counter " "clockwise." @@ -2037,14 +2061,15 @@ msgstr "" "Directia pentru aria circulara. Poate fi CW = in sensul acelor de ceasornic " "sau CCW = invers acelor de ceasornic" -#: flatcamEditors/FlatCAMExcEditor.py:989 -#: flatcamEditors/FlatCAMGrbEditor.py:2572 +#: flatcamEditors/FlatCAMExcEditor.py:1026 +#: flatcamEditors/FlatCAMGrbEditor.py:2588 flatcamGUI/FlatCAMGUI.py:5109 +#: flatcamGUI/FlatCAMGUI.py:5135 msgid "Angle at which each element in circular array is placed." msgstr "" "Unghiul la care fiecare element al ariei circulare este plasat fata de " "originea ariei." -#: flatcamEditors/FlatCAMExcEditor.py:1452 +#: flatcamEditors/FlatCAMExcEditor.py:1487 msgid "" "[WARNING_NOTCL] Tool already in the original or actual tool list.\n" "Save and reedit Excellon if you need to add this tool. " @@ -2053,21 +2078,21 @@ msgstr "" "Salvează și reeditează obiectul Excellon daca ai nevoie să adaugi aceasta " "unealtă." -#: flatcamEditors/FlatCAMExcEditor.py:1461 flatcamGUI/FlatCAMGUI.py:3002 +#: flatcamEditors/FlatCAMExcEditor.py:1496 flatcamGUI/FlatCAMGUI.py:2997 #, python-brace-format msgid "[success] Added new tool with dia: {dia} {units}" msgstr "[success] O noua unealtă este adăugată cu diametrul: {dia} {units}" -#: flatcamEditors/FlatCAMExcEditor.py:1493 +#: flatcamEditors/FlatCAMExcEditor.py:1528 msgid "[WARNING_NOTCL] Select a tool in Tool Table" msgstr "[WARNING_NOTCL] Selectează o unealtă in Tabela de Unelte" -#: flatcamEditors/FlatCAMExcEditor.py:1526 +#: flatcamEditors/FlatCAMExcEditor.py:1560 #, python-brace-format msgid "[success] Deleted tool with dia: {del_dia} {units}" msgstr "[success] Unealta stearsa cu diametrul: {del_dia} {units}" -#: flatcamEditors/FlatCAMExcEditor.py:2038 +#: flatcamEditors/FlatCAMExcEditor.py:2074 msgid "" "[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon " "creation." @@ -2075,35 +2100,35 @@ msgstr "" "[ERROR_NOTCL] Nu exista definitii de unelte in fişier. Se anulează crearea " "de obiect Excellon." -#: flatcamEditors/FlatCAMExcEditor.py:2047 +#: flatcamEditors/FlatCAMExcEditor.py:2083 msgid "Creating Excellon." msgstr "In curs de creere Excellon." -#: flatcamEditors/FlatCAMExcEditor.py:2056 +#: flatcamEditors/FlatCAMExcEditor.py:2092 msgid "[success] Excellon editing finished." msgstr "[success] Editarea Excellon a fost terminată." -#: flatcamEditors/FlatCAMExcEditor.py:2073 +#: flatcamEditors/FlatCAMExcEditor.py:2109 msgid "[WARNING_NOTCL] Cancelled. There is no Tool/Drill selected" msgstr "" "[WARNING_NOTCL] Anulata. Nu este selectată nici-o unealtă sau op. de găurire." -#: flatcamEditors/FlatCAMExcEditor.py:2605 +#: flatcamEditors/FlatCAMExcEditor.py:2637 msgid "[success] Done. Drill(s) deleted." msgstr "[success] Executat. Operatiile de găurire șterse." -#: flatcamEditors/FlatCAMExcEditor.py:2675 -#: flatcamEditors/FlatCAMGrbEditor.py:4318 +#: flatcamEditors/FlatCAMExcEditor.py:2705 +#: flatcamEditors/FlatCAMGrbEditor.py:4340 msgid "Click on the circular array Center position" msgstr "Click pe punctul de Centru al ariei circulare." #: flatcamEditors/FlatCAMGeoEditor.py:80 -#: flatcamEditors/FlatCAMGrbEditor.py:2400 +#: flatcamEditors/FlatCAMGrbEditor.py:2416 msgid "Buffer distance:" msgstr "Distanta pt bufer:" #: flatcamEditors/FlatCAMGeoEditor.py:81 -#: flatcamEditors/FlatCAMGrbEditor.py:2401 +#: flatcamEditors/FlatCAMGrbEditor.py:2417 msgid "Buffer corner:" msgstr "Coltul pt bufer:" @@ -2122,17 +2147,17 @@ msgstr "" "care formează coltul" #: flatcamEditors/FlatCAMGeoEditor.py:89 -#: flatcamEditors/FlatCAMGrbEditor.py:2409 +#: flatcamEditors/FlatCAMGrbEditor.py:2425 msgid "Round" msgstr "Rotund" #: flatcamEditors/FlatCAMGeoEditor.py:90 -#: flatcamEditors/FlatCAMGrbEditor.py:2410 +#: flatcamEditors/FlatCAMGrbEditor.py:2426 msgid "Square" msgstr "Patrat" #: flatcamEditors/FlatCAMGeoEditor.py:91 -#: flatcamEditors/FlatCAMGrbEditor.py:2411 +#: flatcamEditors/FlatCAMGrbEditor.py:2427 msgid "Beveled" msgstr "Beveled" @@ -2159,7 +2184,7 @@ msgstr "Unealta Bufer" #: flatcamEditors/FlatCAMGeoEditor.py:2700 #: flatcamEditors/FlatCAMGeoEditor.py:2726 #: flatcamEditors/FlatCAMGeoEditor.py:2752 -#: flatcamEditors/FlatCAMGrbEditor.py:4370 +#: flatcamEditors/FlatCAMGrbEditor.py:4392 msgid "" "[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and " "retry." @@ -2171,17 +2196,17 @@ msgstr "" msgid "Text Tool" msgstr "Unealta Text" -#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:808 +#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:803 msgid "Tool" msgstr "Unealta" -#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4058 -#: flatcamGUI/FlatCAMGUI.py:5455 flatcamGUI/FlatCAMGUI.py:5731 -#: flatcamGUI/FlatCAMGUI.py:5871 flatcamGUI/ObjectUI.py:260 +#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4054 +#: flatcamGUI/FlatCAMGUI.py:5618 flatcamGUI/FlatCAMGUI.py:5895 +#: flatcamGUI/FlatCAMGUI.py:6035 flatcamGUI/ObjectUI.py:260 msgid "Tool dia:" msgstr "Dia unealtă:" -#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5873 +#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:6037 msgid "" "Diameter of the tool to\n" "be used in the operation." @@ -2189,8 +2214,8 @@ msgstr "" "Diametrul uneltei care este utilizata in operaţie. \n" "Este și lăţimea de tăiere pentru uneltele cilindrice." -#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5637 -#: flatcamGUI/FlatCAMGUI.py:5882 flatcamTools/ToolNonCopperClear.py:165 +#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5801 +#: flatcamGUI/FlatCAMGUI.py:6046 flatcamTools/ToolNonCopperClear.py:165 #: flatcamTools/ToolPaint.py:160 msgid "Overlap Rate:" msgstr "Rata suprapunere:" @@ -2221,14 +2246,14 @@ msgstr "" "Valori mari= procesare lenta cat și o execuţie la fel de lenta a PCB-ului,\n" "datorita numărului mai mare de treceri-tăiere." -#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5653 -#: flatcamGUI/FlatCAMGUI.py:5739 flatcamGUI/FlatCAMGUI.py:5892 +#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5817 +#: flatcamGUI/FlatCAMGUI.py:5903 flatcamGUI/FlatCAMGUI.py:6056 #: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:181 #: flatcamTools/ToolPaint.py:177 msgid "Margin:" msgstr "Margine:" -#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5894 +#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:6058 #: flatcamTools/ToolPaint.py:179 msgid "" "Distance by which to avoid\n" @@ -2239,13 +2264,13 @@ msgstr "" "poligonului care trebuie\n" "să fie >pictat<." -#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5662 -#: flatcamGUI/FlatCAMGUI.py:5903 flatcamTools/ToolNonCopperClear.py:190 +#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5826 +#: flatcamGUI/FlatCAMGUI.py:6067 flatcamTools/ToolNonCopperClear.py:190 #: flatcamTools/ToolPaint.py:188 msgid "Method:" msgstr "Metoda:" -#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5905 +#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:6069 msgid "" "Algorithm to paint the polygon:
Standard: Fixed step inwards." "
Seed-based: Outwards from seed." @@ -2253,14 +2278,14 @@ msgstr "" "Algoritm pentru a picta poligonul
Standard: Pas fix spre interior." "
Samanta: Spre exterior pornind de la un punct-samanta." -#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5678 -#: flatcamGUI/FlatCAMGUI.py:5918 flatcamTools/ToolNonCopperClear.py:206 +#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5842 +#: flatcamGUI/FlatCAMGUI.py:6082 flatcamTools/ToolNonCopperClear.py:206 #: flatcamTools/ToolPaint.py:204 msgid "Connect:" msgstr "Conectează:" -#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5680 -#: flatcamGUI/FlatCAMGUI.py:5920 flatcamTools/ToolNonCopperClear.py:208 +#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5844 +#: flatcamGUI/FlatCAMGUI.py:6084 flatcamTools/ToolNonCopperClear.py:208 #: flatcamTools/ToolPaint.py:206 msgid "" "Draw lines between resulting\n" @@ -2270,14 +2295,14 @@ msgstr "" "rezultate pentru a minimiza miscarile\n" "de ridicare a uneltei." -#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5687 -#: flatcamGUI/FlatCAMGUI.py:5928 flatcamTools/ToolNonCopperClear.py:215 +#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5851 +#: flatcamGUI/FlatCAMGUI.py:6092 flatcamTools/ToolNonCopperClear.py:215 #: flatcamTools/ToolPaint.py:213 msgid "Contour:" msgstr "Contur:" -#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5689 -#: flatcamGUI/FlatCAMGUI.py:5930 flatcamTools/ToolNonCopperClear.py:217 +#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5853 +#: flatcamGUI/FlatCAMGUI.py:6094 flatcamTools/ToolNonCopperClear.py:217 #: flatcamTools/ToolPaint.py:215 msgid "" "Cut around the perimeter of the polygon\n" @@ -2290,8 +2315,8 @@ msgstr "" msgid "Paint" msgstr "Pictează" -#: flatcamEditors/FlatCAMGeoEditor.py:527 flatcamGUI/FlatCAMGUI.py:648 -#: flatcamGUI/FlatCAMGUI.py:1868 flatcamGUI/ObjectUI.py:1314 +#: flatcamEditors/FlatCAMGeoEditor.py:527 flatcamGUI/FlatCAMGUI.py:643 +#: flatcamGUI/FlatCAMGUI.py:1866 flatcamGUI/ObjectUI.py:1314 #: flatcamTools/ToolPaint.py:341 msgid "Paint Tool" msgstr "Unealta Paint" @@ -2335,53 +2360,53 @@ msgstr "Unelte" #: flatcamEditors/FlatCAMGeoEditor.py:617 #: flatcamEditors/FlatCAMGeoEditor.py:990 -#: flatcamEditors/FlatCAMGrbEditor.py:4509 -#: flatcamEditors/FlatCAMGrbEditor.py:4894 flatcamGUI/FlatCAMGUI.py:659 -#: flatcamGUI/FlatCAMGUI.py:1881 flatcamTools/ToolTransform.py:398 +#: flatcamEditors/FlatCAMGrbEditor.py:4531 +#: flatcamEditors/FlatCAMGrbEditor.py:4916 flatcamGUI/FlatCAMGUI.py:654 +#: flatcamGUI/FlatCAMGUI.py:1879 flatcamTools/ToolTransform.py:398 msgid "Transform Tool" msgstr "Unealta Transformare" #: flatcamEditors/FlatCAMGeoEditor.py:618 #: flatcamEditors/FlatCAMGeoEditor.py:679 -#: flatcamEditors/FlatCAMGrbEditor.py:4510 -#: flatcamEditors/FlatCAMGrbEditor.py:4572 flatcamTools/ToolTransform.py:24 +#: flatcamEditors/FlatCAMGrbEditor.py:4532 +#: flatcamEditors/FlatCAMGrbEditor.py:4594 flatcamTools/ToolTransform.py:24 #: flatcamTools/ToolTransform.py:82 msgid "Rotate" msgstr "Rotaţie" #: flatcamEditors/FlatCAMGeoEditor.py:619 -#: flatcamEditors/FlatCAMGrbEditor.py:4511 flatcamTools/ToolTransform.py:25 +#: flatcamEditors/FlatCAMGrbEditor.py:4533 flatcamTools/ToolTransform.py:25 msgid "Skew/Shear" msgstr "Deformare" #: flatcamEditors/FlatCAMGeoEditor.py:620 -#: flatcamEditors/FlatCAMGrbEditor.py:2455 -#: flatcamEditors/FlatCAMGrbEditor.py:4512 flatcamGUI/FlatCAMGUI.py:723 -#: flatcamGUI/FlatCAMGUI.py:1949 flatcamGUI/ObjectUI.py:100 +#: flatcamEditors/FlatCAMGrbEditor.py:2471 +#: flatcamEditors/FlatCAMGrbEditor.py:4534 flatcamGUI/FlatCAMGUI.py:718 +#: flatcamGUI/FlatCAMGUI.py:1947 flatcamGUI/ObjectUI.py:100 #: flatcamTools/ToolTransform.py:26 msgid "Scale" msgstr "Scalare" #: flatcamEditors/FlatCAMGeoEditor.py:621 -#: flatcamEditors/FlatCAMGrbEditor.py:4513 flatcamTools/ToolTransform.py:27 +#: flatcamEditors/FlatCAMGrbEditor.py:4535 flatcamTools/ToolTransform.py:27 msgid "Mirror (Flip)" msgstr "Oglindire" #: flatcamEditors/FlatCAMGeoEditor.py:622 -#: flatcamEditors/FlatCAMGrbEditor.py:4514 flatcamGUI/ObjectUI.py:127 -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamEditors/FlatCAMGrbEditor.py:4536 flatcamGUI/ObjectUI.py:127 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465 #: flatcamTools/ToolTransform.py:28 msgid "Offset" msgstr "Ofset" #: flatcamEditors/FlatCAMGeoEditor.py:633 -#: flatcamEditors/FlatCAMGrbEditor.py:4526 +#: flatcamEditors/FlatCAMGrbEditor.py:4548 #, python-format msgid "Editor %s" msgstr "Editor %s" #: flatcamEditors/FlatCAMGeoEditor.py:667 -#: flatcamEditors/FlatCAMGrbEditor.py:4560 flatcamTools/ToolTransform.py:70 +#: flatcamEditors/FlatCAMGrbEditor.py:4582 flatcamTools/ToolTransform.py:70 msgid "" "Angle for Rotation action, in degrees.\n" "Float number between -360 and 359.\n" @@ -2393,7 +2418,7 @@ msgstr "" "Numerele negative inseamna o mișcare in sens invers ace ceasornic." #: flatcamEditors/FlatCAMGeoEditor.py:681 -#: flatcamEditors/FlatCAMGrbEditor.py:4574 +#: flatcamEditors/FlatCAMGrbEditor.py:4596 msgid "" "Rotate the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2405,14 +2430,14 @@ msgstr "" "toate formele selectate." #: flatcamEditors/FlatCAMGeoEditor.py:704 -#: flatcamEditors/FlatCAMGrbEditor.py:4597 flatcamTools/ToolTransform.py:107 +#: flatcamEditors/FlatCAMGrbEditor.py:4619 flatcamTools/ToolTransform.py:107 msgid "Angle X:" msgstr "Unghi X:" #: flatcamEditors/FlatCAMGeoEditor.py:706 #: flatcamEditors/FlatCAMGeoEditor.py:724 -#: flatcamEditors/FlatCAMGrbEditor.py:4599 -#: flatcamEditors/FlatCAMGrbEditor.py:4617 flatcamTools/ToolTransform.py:109 +#: flatcamEditors/FlatCAMGrbEditor.py:4621 +#: flatcamEditors/FlatCAMGrbEditor.py:4639 flatcamTools/ToolTransform.py:109 #: flatcamTools/ToolTransform.py:127 msgid "" "Angle for Skew action, in degrees.\n" @@ -2422,14 +2447,14 @@ msgstr "" "Ia valori Reale între -360 and 359 grade." #: flatcamEditors/FlatCAMGeoEditor.py:715 -#: flatcamEditors/FlatCAMGrbEditor.py:4608 flatcamTools/ToolTransform.py:118 +#: flatcamEditors/FlatCAMGrbEditor.py:4630 flatcamTools/ToolTransform.py:118 msgid "Skew X" msgstr "Deformare X" #: flatcamEditors/FlatCAMGeoEditor.py:717 #: flatcamEditors/FlatCAMGeoEditor.py:735 -#: flatcamEditors/FlatCAMGrbEditor.py:4610 -#: flatcamEditors/FlatCAMGrbEditor.py:4628 +#: flatcamEditors/FlatCAMGrbEditor.py:4632 +#: flatcamEditors/FlatCAMGrbEditor.py:4650 msgid "" "Skew/shear the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2441,34 +2466,34 @@ msgstr "" "toate formele selectate." #: flatcamEditors/FlatCAMGeoEditor.py:722 -#: flatcamEditors/FlatCAMGrbEditor.py:4615 flatcamTools/ToolTransform.py:125 +#: flatcamEditors/FlatCAMGrbEditor.py:4637 flatcamTools/ToolTransform.py:125 msgid "Angle Y:" msgstr "Unghi Y:" #: flatcamEditors/FlatCAMGeoEditor.py:733 -#: flatcamEditors/FlatCAMGrbEditor.py:4626 flatcamTools/ToolTransform.py:136 +#: flatcamEditors/FlatCAMGrbEditor.py:4648 flatcamTools/ToolTransform.py:136 msgid "Skew Y" msgstr "Deformare Y" #: flatcamEditors/FlatCAMGeoEditor.py:761 -#: flatcamEditors/FlatCAMGrbEditor.py:4654 flatcamTools/ToolTransform.py:164 +#: flatcamEditors/FlatCAMGrbEditor.py:4676 flatcamTools/ToolTransform.py:164 msgid "Factor X:" msgstr "Factor X:" #: flatcamEditors/FlatCAMGeoEditor.py:763 -#: flatcamEditors/FlatCAMGrbEditor.py:4656 flatcamTools/ToolTransform.py:166 +#: flatcamEditors/FlatCAMGrbEditor.py:4678 flatcamTools/ToolTransform.py:166 msgid "Factor for Scale action over X axis." msgstr "Factor pentru scalarea pe axa X" #: flatcamEditors/FlatCAMGeoEditor.py:771 -#: flatcamEditors/FlatCAMGrbEditor.py:4664 flatcamTools/ToolTransform.py:174 +#: flatcamEditors/FlatCAMGrbEditor.py:4686 flatcamTools/ToolTransform.py:174 msgid "Scale X" msgstr "Scalează X" #: flatcamEditors/FlatCAMGeoEditor.py:773 #: flatcamEditors/FlatCAMGeoEditor.py:790 -#: flatcamEditors/FlatCAMGrbEditor.py:4666 -#: flatcamEditors/FlatCAMGrbEditor.py:4683 +#: flatcamEditors/FlatCAMGrbEditor.py:4688 +#: flatcamEditors/FlatCAMGrbEditor.py:4705 msgid "" "Scale the selected shape(s).\n" "The point of reference depends on \n" @@ -2479,28 +2504,28 @@ msgstr "" "starea checkbox-ului >Referința scalare<." #: flatcamEditors/FlatCAMGeoEditor.py:778 -#: flatcamEditors/FlatCAMGrbEditor.py:4671 flatcamTools/ToolTransform.py:181 +#: flatcamEditors/FlatCAMGrbEditor.py:4693 flatcamTools/ToolTransform.py:181 msgid "Factor Y:" msgstr "Factor Y:" #: flatcamEditors/FlatCAMGeoEditor.py:780 -#: flatcamEditors/FlatCAMGrbEditor.py:4673 flatcamTools/ToolTransform.py:183 +#: flatcamEditors/FlatCAMGrbEditor.py:4695 flatcamTools/ToolTransform.py:183 msgid "Factor for Scale action over Y axis." msgstr "Factor pentru scalarea pe axa Y." #: flatcamEditors/FlatCAMGeoEditor.py:788 -#: flatcamEditors/FlatCAMGrbEditor.py:4681 flatcamTools/ToolTransform.py:191 +#: flatcamEditors/FlatCAMGrbEditor.py:4703 flatcamTools/ToolTransform.py:191 msgid "Scale Y" msgstr "Scalează Y" #: flatcamEditors/FlatCAMGeoEditor.py:797 -#: flatcamEditors/FlatCAMGrbEditor.py:4690 flatcamGUI/FlatCAMGUI.py:6277 +#: flatcamEditors/FlatCAMGrbEditor.py:4712 flatcamGUI/FlatCAMGUI.py:6441 #: flatcamTools/ToolTransform.py:200 msgid "Link" msgstr "Legatura" #: flatcamEditors/FlatCAMGeoEditor.py:799 -#: flatcamEditors/FlatCAMGrbEditor.py:4692 +#: flatcamEditors/FlatCAMGrbEditor.py:4714 msgid "" "Scale the selected shape(s)\n" "using the Scale Factor X for both axis." @@ -2509,13 +2534,13 @@ msgstr "" "folsoind factorul: Factor X pentru ambele axe." #: flatcamEditors/FlatCAMGeoEditor.py:805 -#: flatcamEditors/FlatCAMGrbEditor.py:4698 flatcamGUI/FlatCAMGUI.py:6285 +#: flatcamEditors/FlatCAMGrbEditor.py:4720 flatcamGUI/FlatCAMGUI.py:6449 #: flatcamTools/ToolTransform.py:208 msgid "Scale Reference" msgstr "Referința scalare" #: flatcamEditors/FlatCAMGeoEditor.py:807 -#: flatcamEditors/FlatCAMGrbEditor.py:4700 +#: flatcamEditors/FlatCAMGrbEditor.py:4722 msgid "" "Scale the selected shape(s)\n" "using the origin reference when checked,\n" @@ -2529,24 +2554,24 @@ msgstr "" "bifat și este originea când este bifat." #: flatcamEditors/FlatCAMGeoEditor.py:835 -#: flatcamEditors/FlatCAMGrbEditor.py:4729 flatcamTools/ToolTransform.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:4751 flatcamTools/ToolTransform.py:238 msgid "Value X:" msgstr "Valoare X:" #: flatcamEditors/FlatCAMGeoEditor.py:837 -#: flatcamEditors/FlatCAMGrbEditor.py:4731 flatcamTools/ToolTransform.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:4753 flatcamTools/ToolTransform.py:240 msgid "Value for Offset action on X axis." msgstr "Valoare pentru deplasarea pe axa X." #: flatcamEditors/FlatCAMGeoEditor.py:845 -#: flatcamEditors/FlatCAMGrbEditor.py:4739 flatcamTools/ToolTransform.py:248 +#: flatcamEditors/FlatCAMGrbEditor.py:4761 flatcamTools/ToolTransform.py:248 msgid "Offset X" msgstr "Ofset pe X" #: flatcamEditors/FlatCAMGeoEditor.py:847 #: flatcamEditors/FlatCAMGeoEditor.py:865 -#: flatcamEditors/FlatCAMGrbEditor.py:4741 -#: flatcamEditors/FlatCAMGrbEditor.py:4759 +#: flatcamEditors/FlatCAMGrbEditor.py:4763 +#: flatcamEditors/FlatCAMGrbEditor.py:4781 msgid "" "Offset the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2558,29 +2583,29 @@ msgstr "" "toate formele selectate.\n" #: flatcamEditors/FlatCAMGeoEditor.py:853 -#: flatcamEditors/FlatCAMGrbEditor.py:4747 flatcamTools/ToolTransform.py:255 +#: flatcamEditors/FlatCAMGrbEditor.py:4769 flatcamTools/ToolTransform.py:255 msgid "Value Y:" msgstr "Valoare Y:" #: flatcamEditors/FlatCAMGeoEditor.py:855 -#: flatcamEditors/FlatCAMGrbEditor.py:4749 flatcamTools/ToolTransform.py:257 +#: flatcamEditors/FlatCAMGrbEditor.py:4771 flatcamTools/ToolTransform.py:257 msgid "Value for Offset action on Y axis." msgstr "Valoare pentru deplasarea pe axa Y." #: flatcamEditors/FlatCAMGeoEditor.py:863 -#: flatcamEditors/FlatCAMGrbEditor.py:4757 flatcamTools/ToolTransform.py:265 +#: flatcamEditors/FlatCAMGrbEditor.py:4779 flatcamTools/ToolTransform.py:265 msgid "Offset Y" msgstr "Ofset pe Y" #: flatcamEditors/FlatCAMGeoEditor.py:894 -#: flatcamEditors/FlatCAMGrbEditor.py:4788 flatcamTools/ToolTransform.py:295 +#: flatcamEditors/FlatCAMGrbEditor.py:4810 flatcamTools/ToolTransform.py:295 msgid "Flip on X" msgstr "Oglindește pe X" #: flatcamEditors/FlatCAMGeoEditor.py:896 #: flatcamEditors/FlatCAMGeoEditor.py:904 -#: flatcamEditors/FlatCAMGrbEditor.py:4790 -#: flatcamEditors/FlatCAMGrbEditor.py:4798 +#: flatcamEditors/FlatCAMGrbEditor.py:4812 +#: flatcamEditors/FlatCAMGrbEditor.py:4820 msgid "" "Flip the selected shape(s) over the X axis.\n" "Does not create a new shape." @@ -2589,17 +2614,17 @@ msgstr "" "Nu crează noi forme." #: flatcamEditors/FlatCAMGeoEditor.py:902 -#: flatcamEditors/FlatCAMGrbEditor.py:4796 flatcamTools/ToolTransform.py:303 +#: flatcamEditors/FlatCAMGrbEditor.py:4818 flatcamTools/ToolTransform.py:303 msgid "Flip on Y" msgstr "Oglindește pe Y" #: flatcamEditors/FlatCAMGeoEditor.py:911 -#: flatcamEditors/FlatCAMGrbEditor.py:4805 flatcamTools/ToolTransform.py:312 +#: flatcamEditors/FlatCAMGrbEditor.py:4827 flatcamTools/ToolTransform.py:312 msgid "Ref Pt" msgstr "Pt ref" #: flatcamEditors/FlatCAMGeoEditor.py:913 -#: flatcamEditors/FlatCAMGrbEditor.py:4807 +#: flatcamEditors/FlatCAMGrbEditor.py:4829 msgid "" "Flip the selected shape(s)\n" "around the point in Point Entry Field.\n" @@ -2623,12 +2648,12 @@ msgstr "" "La final click pe >Oglindește pe X(Y)<." #: flatcamEditors/FlatCAMGeoEditor.py:925 -#: flatcamEditors/FlatCAMGrbEditor.py:4819 flatcamTools/ToolTransform.py:325 +#: flatcamEditors/FlatCAMGrbEditor.py:4841 flatcamTools/ToolTransform.py:325 msgid "Point:" msgstr "Punct:" #: flatcamEditors/FlatCAMGeoEditor.py:927 -#: flatcamEditors/FlatCAMGrbEditor.py:4821 +#: flatcamEditors/FlatCAMGrbEditor.py:4843 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" @@ -2639,7 +2664,7 @@ msgstr "" "și valoarea 'y' in (x, y) va fi folosita când se face oglindire pe Y." #: flatcamEditors/FlatCAMGeoEditor.py:939 -#: flatcamEditors/FlatCAMGrbEditor.py:4833 flatcamTools/ToolTransform.py:339 +#: flatcamEditors/FlatCAMGrbEditor.py:4855 flatcamTools/ToolTransform.py:339 msgid "" "The point coordinates can be captured by\n" "left click on canvas together with pressing\n" @@ -2651,271 +2676,271 @@ msgstr "" "La final, apasa butonul >Adaugă< pt a le insera." #: flatcamEditors/FlatCAMGeoEditor.py:1054 -#: flatcamEditors/FlatCAMGrbEditor.py:4958 +#: flatcamEditors/FlatCAMGrbEditor.py:4980 msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected." msgstr "[WARNING_NOTCL] Transformare anulata. Nici-o forma nu este selectată." #: flatcamEditors/FlatCAMGeoEditor.py:1075 -#: flatcamEditors/FlatCAMGrbEditor.py:4978 flatcamTools/ToolTransform.py:468 +#: flatcamEditors/FlatCAMGrbEditor.py:5000 flatcamTools/ToolTransform.py:468 msgid "[ERROR_NOTCL] Wrong value format entered for Rotate, use a number." msgstr "" "[ERROR_NOTCL] Valoare incorecta intodusa pentru Rotaţie, foloseşte un număr " "Real." #: flatcamEditors/FlatCAMGeoEditor.py:1112 -#: flatcamEditors/FlatCAMGrbEditor.py:5021 flatcamTools/ToolTransform.py:502 +#: flatcamEditors/FlatCAMGrbEditor.py:5043 flatcamTools/ToolTransform.py:502 msgid "[ERROR_NOTCL] Wrong value format entered for Skew X, use a number." msgstr "" "[ERROR_NOTCL] Valoare incorecta intodusa pentru Deformare X, foloseşte un " "număr Real." #: flatcamEditors/FlatCAMGeoEditor.py:1133 -#: flatcamEditors/FlatCAMGrbEditor.py:5048 flatcamTools/ToolTransform.py:520 +#: flatcamEditors/FlatCAMGrbEditor.py:5070 flatcamTools/ToolTransform.py:520 msgid "[ERROR_NOTCL] Wrong value format entered for Skew Y, use a number." msgstr "" "[ERROR_NOTCL] Valoare incorecta intodusa pentru Deformare Y, foloseşte un " "număr Real." #: flatcamEditors/FlatCAMGeoEditor.py:1154 -#: flatcamEditors/FlatCAMGrbEditor.py:5075 flatcamTools/ToolTransform.py:538 +#: flatcamEditors/FlatCAMGrbEditor.py:5097 flatcamTools/ToolTransform.py:538 msgid "[ERROR_NOTCL] Wrong value format entered for Scale X, use a number." msgstr "" "[ERROR_NOTCL] Valoare incorecta intodusa pentru Scalare X, foloseşte un " "număr Real." #: flatcamEditors/FlatCAMGeoEditor.py:1191 -#: flatcamEditors/FlatCAMGrbEditor.py:5116 flatcamTools/ToolTransform.py:572 +#: flatcamEditors/FlatCAMGrbEditor.py:5138 flatcamTools/ToolTransform.py:572 msgid "[ERROR_NOTCL] Wrong value format entered for Scale Y, use a number." msgstr "" "[ERROR_NOTCL] Valoare incorecta intodusa pentru Scalare Y, foloseşte un " "număr Real." #: flatcamEditors/FlatCAMGeoEditor.py:1223 -#: flatcamEditors/FlatCAMGrbEditor.py:5154 flatcamTools/ToolTransform.py:601 +#: flatcamEditors/FlatCAMGrbEditor.py:5176 flatcamTools/ToolTransform.py:601 msgid "[ERROR_NOTCL] Wrong value format entered for Offset X, use a number." msgstr "" "[ERROR_NOTCL] Valoare incorecta intodusa pentru Ofset pe X, foloseşte un " "număr Real." #: flatcamEditors/FlatCAMGeoEditor.py:1244 -#: flatcamEditors/FlatCAMGrbEditor.py:5180 flatcamTools/ToolTransform.py:619 +#: flatcamEditors/FlatCAMGrbEditor.py:5202 flatcamTools/ToolTransform.py:619 msgid "[ERROR_NOTCL] Wrong value format entered for Offset Y, use a number." msgstr "" "[ERROR_NOTCL] Valoare incorecta intodusa pentru Ofset pe Y, foloseşte un " "număr Real." #: flatcamEditors/FlatCAMGeoEditor.py:1262 -#: flatcamEditors/FlatCAMGrbEditor.py:5203 +#: flatcamEditors/FlatCAMGrbEditor.py:5225 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!" msgstr "" "[WARNING_NOTCL] Nici-o forma nu este selectată. Selectează o forma pentru a " "putea face Rotaţie!" #: flatcamEditors/FlatCAMGeoEditor.py:1265 -#: flatcamEditors/FlatCAMGrbEditor.py:5206 flatcamTools/ToolTransform.py:640 +#: flatcamEditors/FlatCAMGrbEditor.py:5228 flatcamTools/ToolTransform.py:640 msgid "Appying Rotate" msgstr "Execuţie Rotaţie" #: flatcamEditors/FlatCAMGeoEditor.py:1293 -#: flatcamEditors/FlatCAMGrbEditor.py:5237 +#: flatcamEditors/FlatCAMGrbEditor.py:5259 msgid "[success] Done. Rotate completed." msgstr "[success] Executat. Rotaţie finalizata." #: flatcamEditors/FlatCAMGeoEditor.py:1309 -#: flatcamEditors/FlatCAMGrbEditor.py:5256 +#: flatcamEditors/FlatCAMGrbEditor.py:5278 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to flip!" msgstr "" "[WARNING_NOTCL] Nici-o forma nu este selectată. Selectează o forma pentru a " "putea face Oglindire!" #: flatcamEditors/FlatCAMGeoEditor.py:1312 -#: flatcamEditors/FlatCAMGrbEditor.py:5259 flatcamTools/ToolTransform.py:691 +#: flatcamEditors/FlatCAMGrbEditor.py:5281 flatcamTools/ToolTransform.py:691 msgid "Applying Flip" msgstr "Execuţie Oglindire" #: flatcamEditors/FlatCAMGeoEditor.py:1342 -#: flatcamEditors/FlatCAMGrbEditor.py:5296 flatcamTools/ToolTransform.py:733 +#: flatcamEditors/FlatCAMGrbEditor.py:5318 flatcamTools/ToolTransform.py:733 msgid "[success] Flip on the Y axis done ..." msgstr "Oglindirea pe axa X efectuata ..." #: flatcamEditors/FlatCAMGeoEditor.py:1345 -#: flatcamEditors/FlatCAMGrbEditor.py:5304 flatcamTools/ToolTransform.py:742 +#: flatcamEditors/FlatCAMGrbEditor.py:5326 flatcamTools/ToolTransform.py:742 msgid "[success] Flip on the X axis done ..." msgstr "Oglindirea pe axa Y efectuata ..." #: flatcamEditors/FlatCAMGeoEditor.py:1364 -#: flatcamEditors/FlatCAMGrbEditor.py:5324 +#: flatcamEditors/FlatCAMGrbEditor.py:5346 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!" msgstr "" "[WARNING_NOTCL] Nici-o forma nu este selectată. Selectează o forma pentru a " "putea face Deformare!" #: flatcamEditors/FlatCAMGeoEditor.py:1367 -#: flatcamEditors/FlatCAMGrbEditor.py:5327 flatcamTools/ToolTransform.py:760 +#: flatcamEditors/FlatCAMGrbEditor.py:5349 flatcamTools/ToolTransform.py:760 msgid "Applying Skew" msgstr "Execuţie Deformare" #: flatcamEditors/FlatCAMGeoEditor.py:1392 -#: flatcamEditors/FlatCAMGrbEditor.py:5360 flatcamTools/ToolTransform.py:791 +#: flatcamEditors/FlatCAMGrbEditor.py:5382 flatcamTools/ToolTransform.py:791 #, python-format msgid "[success] Skew on the %s axis done ..." msgstr "[success] Deformarea pe axa %s executată ..." #: flatcamEditors/FlatCAMGeoEditor.py:1396 -#: flatcamEditors/FlatCAMGrbEditor.py:5364 flatcamTools/ToolTransform.py:795 +#: flatcamEditors/FlatCAMGrbEditor.py:5386 flatcamTools/ToolTransform.py:795 #, python-format msgid "[ERROR_NOTCL] Due of %s, Skew action was not executed." msgstr "[ERROR_NOTCL] Datorita erorii: %s, Deformarea a fost anulata." #: flatcamEditors/FlatCAMGeoEditor.py:1407 -#: flatcamEditors/FlatCAMGrbEditor.py:5383 +#: flatcamEditors/FlatCAMGrbEditor.py:5405 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to scale!" msgstr "" "[WARNING_NOTCL] Nici-o forma nu este selectată. Selectează o forma pentru a " "putea face Scalare!" #: flatcamEditors/FlatCAMGeoEditor.py:1410 -#: flatcamEditors/FlatCAMGrbEditor.py:5386 flatcamTools/ToolTransform.py:809 +#: flatcamEditors/FlatCAMGrbEditor.py:5408 flatcamTools/ToolTransform.py:809 msgid "Applying Scale" msgstr "Execuţie Scalare" #: flatcamEditors/FlatCAMGeoEditor.py:1443 -#: flatcamEditors/FlatCAMGrbEditor.py:5422 flatcamTools/ToolTransform.py:848 +#: flatcamEditors/FlatCAMGrbEditor.py:5444 flatcamTools/ToolTransform.py:848 #, python-format msgid "[success] Scale on the %s axis done ..." msgstr "[success] Scalarea pe axa %s executată ..." #: flatcamEditors/FlatCAMGeoEditor.py:1446 -#: flatcamEditors/FlatCAMGrbEditor.py:5425 flatcamTools/ToolTransform.py:851 +#: flatcamEditors/FlatCAMGrbEditor.py:5447 flatcamTools/ToolTransform.py:851 #, python-format msgid "[ERROR_NOTCL] Due of %s, Scale action was not executed." msgstr "[ERROR_NOTCL] Datorita erorii: %s, Scalarea a fost anulata ..." #: flatcamEditors/FlatCAMGeoEditor.py:1455 -#: flatcamEditors/FlatCAMGrbEditor.py:5438 +#: flatcamEditors/FlatCAMGrbEditor.py:5460 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to offset!" msgstr "" "[WARNING_NOTCL] Nici-o forma nu este selectată. Selectează o forma pentru a " "putea face Ofset!" #: flatcamEditors/FlatCAMGeoEditor.py:1458 -#: flatcamEditors/FlatCAMGrbEditor.py:5441 flatcamTools/ToolTransform.py:861 +#: flatcamEditors/FlatCAMGrbEditor.py:5463 flatcamTools/ToolTransform.py:861 msgid "Applying Offset" msgstr "Execuţie Ofset" #: flatcamEditors/FlatCAMGeoEditor.py:1469 -#: flatcamEditors/FlatCAMGrbEditor.py:5462 flatcamTools/ToolTransform.py:880 +#: flatcamEditors/FlatCAMGrbEditor.py:5484 flatcamTools/ToolTransform.py:880 #, python-format msgid "[success] Offset on the %s axis done ..." msgstr "[success] Deplasarea pe axa %s executată ..." #: flatcamEditors/FlatCAMGeoEditor.py:1473 -#: flatcamEditors/FlatCAMGrbEditor.py:5466 flatcamTools/ToolTransform.py:884 +#: flatcamEditors/FlatCAMGrbEditor.py:5488 flatcamTools/ToolTransform.py:884 #, python-format msgid "[ERROR_NOTCL] Due of %s, Offset action was not executed." msgstr "[ERROR_NOTCL] Datorita erorii: %s, Deplasarea a fost anulata." #: flatcamEditors/FlatCAMGeoEditor.py:1477 -#: flatcamEditors/FlatCAMGrbEditor.py:5470 +#: flatcamEditors/FlatCAMGrbEditor.py:5492 msgid "Rotate ..." msgstr "Rotaţie ..." #: flatcamEditors/FlatCAMGeoEditor.py:1478 #: flatcamEditors/FlatCAMGeoEditor.py:1535 #: flatcamEditors/FlatCAMGeoEditor.py:1552 -#: flatcamEditors/FlatCAMGrbEditor.py:5471 -#: flatcamEditors/FlatCAMGrbEditor.py:5528 -#: flatcamEditors/FlatCAMGrbEditor.py:5545 +#: flatcamEditors/FlatCAMGrbEditor.py:5493 +#: flatcamEditors/FlatCAMGrbEditor.py:5550 +#: flatcamEditors/FlatCAMGrbEditor.py:5567 msgid "Enter an Angle Value (degrees):" msgstr "Introdu o valoare in grade pt Unghi:" #: flatcamEditors/FlatCAMGeoEditor.py:1487 -#: flatcamEditors/FlatCAMGrbEditor.py:5480 +#: flatcamEditors/FlatCAMGrbEditor.py:5502 msgid "[success] Geometry shape rotate done..." msgstr "[success] Rotatia formei geometrice executată ..." #: flatcamEditors/FlatCAMGeoEditor.py:1492 -#: flatcamEditors/FlatCAMGrbEditor.py:5485 +#: flatcamEditors/FlatCAMGrbEditor.py:5507 msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..." msgstr "[WARNING_NOTCL] Rotatia formei geometrice anulata ..." #: flatcamEditors/FlatCAMGeoEditor.py:1498 -#: flatcamEditors/FlatCAMGrbEditor.py:5491 +#: flatcamEditors/FlatCAMGrbEditor.py:5513 msgid "Offset on X axis ..." msgstr "Ofset pe axa X ..." #: flatcamEditors/FlatCAMGeoEditor.py:1499 #: flatcamEditors/FlatCAMGeoEditor.py:1518 -#: flatcamEditors/FlatCAMGrbEditor.py:5492 -#: flatcamEditors/FlatCAMGrbEditor.py:5511 +#: flatcamEditors/FlatCAMGrbEditor.py:5514 +#: flatcamEditors/FlatCAMGrbEditor.py:5533 #, python-format msgid "Enter a distance Value (%s):" msgstr "Introdu of valoare pt Distanta (%s):" #: flatcamEditors/FlatCAMGeoEditor.py:1508 -#: flatcamEditors/FlatCAMGrbEditor.py:5501 +#: flatcamEditors/FlatCAMGrbEditor.py:5523 msgid "[success] Geometry shape offset on X axis done..." msgstr "[success] Deplasarea formei geometrice pe axa X executată ..." #: flatcamEditors/FlatCAMGeoEditor.py:1512 -#: flatcamEditors/FlatCAMGrbEditor.py:5505 +#: flatcamEditors/FlatCAMGrbEditor.py:5527 msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..." msgstr "[WARNING_NOTCL] Deplasarea formei geometrice pe axa X anulata ..." #: flatcamEditors/FlatCAMGeoEditor.py:1517 -#: flatcamEditors/FlatCAMGrbEditor.py:5510 +#: flatcamEditors/FlatCAMGrbEditor.py:5532 msgid "Offset on Y axis ..." msgstr "Ofset pe axa Y ..." #: flatcamEditors/FlatCAMGeoEditor.py:1527 -#: flatcamEditors/FlatCAMGrbEditor.py:5520 +#: flatcamEditors/FlatCAMGrbEditor.py:5542 msgid "[success] Geometry shape offset on Y axis done..." msgstr "[success] Deplasarea formei geometrice pe axa Y executată ..." #: flatcamEditors/FlatCAMGeoEditor.py:1531 -#: flatcamEditors/FlatCAMGrbEditor.py:5524 +#: flatcamEditors/FlatCAMGrbEditor.py:5546 msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..." msgstr "[WARNING_NOTCL] Deplasarea formei geometrice pe axa Y anulata ..." #: flatcamEditors/FlatCAMGeoEditor.py:1534 -#: flatcamEditors/FlatCAMGrbEditor.py:5527 +#: flatcamEditors/FlatCAMGrbEditor.py:5549 msgid "Skew on X axis ..." msgstr "Deformare pe axa X ..." #: flatcamEditors/FlatCAMGeoEditor.py:1544 -#: flatcamEditors/FlatCAMGrbEditor.py:5537 +#: flatcamEditors/FlatCAMGrbEditor.py:5559 msgid "[success] Geometry shape skew on X axis done..." msgstr "[success] Deformarea formei geometrice pe axa X executată ..." #: flatcamEditors/FlatCAMGeoEditor.py:1548 -#: flatcamEditors/FlatCAMGrbEditor.py:5541 +#: flatcamEditors/FlatCAMGrbEditor.py:5563 msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..." msgstr "[WARNING_NOTCL] Deformarea formei geometrice pe axa X anulata ..." #: flatcamEditors/FlatCAMGeoEditor.py:1551 -#: flatcamEditors/FlatCAMGrbEditor.py:5544 +#: flatcamEditors/FlatCAMGrbEditor.py:5566 msgid "Skew on Y axis ..." msgstr "Deformare pe axa Y ..." #: flatcamEditors/FlatCAMGeoEditor.py:1561 -#: flatcamEditors/FlatCAMGrbEditor.py:5554 +#: flatcamEditors/FlatCAMGrbEditor.py:5576 msgid "[success] Geometry shape skew on Y axis done..." msgstr "[success] Deformarea formei geometrice pe axa Y executată ..." #: flatcamEditors/FlatCAMGeoEditor.py:1565 -#: flatcamEditors/FlatCAMGrbEditor.py:5558 +#: flatcamEditors/FlatCAMGrbEditor.py:5580 msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..." msgstr "[success] Deformarea formei geometrice pe axa Y executată ..." #: flatcamEditors/FlatCAMGeoEditor.py:1929 #: flatcamEditors/FlatCAMGeoEditor.py:1980 -#: flatcamEditors/FlatCAMGrbEditor.py:1354 -#: flatcamEditors/FlatCAMGrbEditor.py:1423 +#: flatcamEditors/FlatCAMGrbEditor.py:1361 +#: flatcamEditors/FlatCAMGrbEditor.py:1430 msgid "Click on Center point ..." msgstr "Click pe punctul de Centru ..." #: flatcamEditors/FlatCAMGeoEditor.py:1936 -#: flatcamEditors/FlatCAMGrbEditor.py:1362 +#: flatcamEditors/FlatCAMGrbEditor.py:1369 msgid "Click on Perimeter point to complete ..." msgstr "Click pe un punct aflat pe Circumferintă pentru terminare ..." @@ -2924,53 +2949,53 @@ msgid "[success] Done. Adding Circle completed." msgstr "[success] Executat. Adăugarea unei forme Cerc terminată." #: flatcamEditors/FlatCAMGeoEditor.py:2000 -#: flatcamEditors/FlatCAMGrbEditor.py:1448 +#: flatcamEditors/FlatCAMGrbEditor.py:1462 msgid "Click on Start point ..." msgstr "Click pe punctul de Start ..." #: flatcamEditors/FlatCAMGeoEditor.py:2002 -#: flatcamEditors/FlatCAMGrbEditor.py:1450 +#: flatcamEditors/FlatCAMGrbEditor.py:1464 msgid "Click on Point3 ..." msgstr "Click pe Punctul3 ..." #: flatcamEditors/FlatCAMGeoEditor.py:2004 -#: flatcamEditors/FlatCAMGrbEditor.py:1452 +#: flatcamEditors/FlatCAMGrbEditor.py:1466 msgid "Click on Stop point ..." msgstr "Click pe punctulde Stop ..." #: flatcamEditors/FlatCAMGeoEditor.py:2009 -#: flatcamEditors/FlatCAMGrbEditor.py:1457 +#: flatcamEditors/FlatCAMGrbEditor.py:1471 msgid "Click on Stop point to complete ..." msgstr "Click pe punctul de Stop pentru terminare ..." #: flatcamEditors/FlatCAMGeoEditor.py:2011 -#: flatcamEditors/FlatCAMGrbEditor.py:1459 +#: flatcamEditors/FlatCAMGrbEditor.py:1473 msgid "Click on Point2 to complete ..." msgstr "Click pe Punctul2 pentru terminare ..." #: flatcamEditors/FlatCAMGeoEditor.py:2013 -#: flatcamEditors/FlatCAMGrbEditor.py:1461 +#: flatcamEditors/FlatCAMGrbEditor.py:1475 msgid "Click on Center point to complete ..." msgstr "Click pe punctul de Centru pentru terminare ..." #: flatcamEditors/FlatCAMGeoEditor.py:2025 -#: flatcamEditors/FlatCAMGrbEditor.py:1473 +#: flatcamEditors/FlatCAMGrbEditor.py:1487 #, python-format msgid "Direction: %s" msgstr "Direcţie: %s" #: flatcamEditors/FlatCAMGeoEditor.py:2035 -#: flatcamEditors/FlatCAMGrbEditor.py:1483 +#: flatcamEditors/FlatCAMGrbEditor.py:1497 msgid "Mode: Start -> Stop -> Center. Click on Start point ..." msgstr "Mod: Start -> Stop -> Centru. Click pe punctul de Start ..." #: flatcamEditors/FlatCAMGeoEditor.py:2038 -#: flatcamEditors/FlatCAMGrbEditor.py:1486 +#: flatcamEditors/FlatCAMGrbEditor.py:1500 msgid "Mode: Point1 -> Point3 -> Point2. Click on Point1 ..." msgstr "Mod: Point1 -> Point3 -> Point2. Click pe Punctul1 ..." #: flatcamEditors/FlatCAMGeoEditor.py:2041 -#: flatcamEditors/FlatCAMGrbEditor.py:1489 +#: flatcamEditors/FlatCAMGrbEditor.py:1503 msgid "Mode: Center -> Start -> Stop. Click on Center point ..." msgstr "Mod: Center -> Start -> Stop. Click pe punctul de Centru ..." @@ -3062,7 +3087,7 @@ msgstr "" "nu este selectată." #: flatcamEditors/FlatCAMGeoEditor.py:2711 -#: flatcamEditors/FlatCAMGrbEditor.py:4420 +#: flatcamEditors/FlatCAMGrbEditor.py:4442 msgid "[success] Done. Buffer Tool completed." msgstr "[success] Executat. Unealta Bufer terminată." @@ -3075,24 +3100,24 @@ msgid "[success] Done. Buffer Ext Tool completed." msgstr "[success] Executat. Unealta Bufer Extern terminată." #: flatcamEditors/FlatCAMGeoEditor.py:2798 -#: flatcamEditors/FlatCAMGrbEditor.py:1969 +#: flatcamEditors/FlatCAMGrbEditor.py:1983 msgid "Select a shape to act as deletion area ..." msgstr "Selectează o formă geometrică ca formă de stergere ..." #: flatcamEditors/FlatCAMGeoEditor.py:2800 #: flatcamEditors/FlatCAMGeoEditor.py:2819 #: flatcamEditors/FlatCAMGeoEditor.py:2825 -#: flatcamEditors/FlatCAMGrbEditor.py:1971 +#: flatcamEditors/FlatCAMGrbEditor.py:1985 msgid "Click to pick-up the erase shape..." msgstr "Click pentru a activa forma de stergere..." #: flatcamEditors/FlatCAMGeoEditor.py:2829 -#: flatcamEditors/FlatCAMGrbEditor.py:2028 +#: flatcamEditors/FlatCAMGrbEditor.py:2042 msgid "Click to erase ..." msgstr "Click pt a sterge ..." #: flatcamEditors/FlatCAMGeoEditor.py:2858 -#: flatcamEditors/FlatCAMGrbEditor.py:2059 +#: flatcamEditors/FlatCAMGrbEditor.py:2075 msgid "[success] Done. Eraser tool action completed." msgstr "[success] Executat. Unealta Stergere s-a terminat." @@ -3101,31 +3126,32 @@ msgid "Create Paint geometry ..." msgstr "Crează o geometrie Paint ..." #: flatcamEditors/FlatCAMGeoEditor.py:2915 -#: flatcamEditors/FlatCAMGrbEditor.py:2201 +#: flatcamEditors/FlatCAMGrbEditor.py:2217 msgid "Shape transformations ..." msgstr "Transformări de forme geometrice ..." -#: flatcamEditors/FlatCAMGeoEditor.py:3419 +#: flatcamEditors/FlatCAMGeoEditor.py:3416 #, python-brace-format -msgid "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" +msgid "" +"[WARNING_NOTCL] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" msgstr "" -"[WARNING] Se editeaza un obiect tip Geometrie MultiGeo , unealta: {tool} cu " -"diametrul: {dia}" +"[WARNING_NOTCL] Se editeaza un obiect tip Geometrie MultiGeo , unealta: " +"{tool} cu diametrul: {dia}" -#: flatcamEditors/FlatCAMGeoEditor.py:3796 +#: flatcamEditors/FlatCAMGeoEditor.py:3793 msgid "[WARNING_NOTCL] Copy cancelled. No shape selected." msgstr "" "[WARNING_NOTCL] Copiere anulata. Nici-o forma geometrică nu este selectată." -#: flatcamEditors/FlatCAMGeoEditor.py:3803 flatcamGUI/FlatCAMGUI.py:2732 -#: flatcamGUI/FlatCAMGUI.py:2778 flatcamGUI/FlatCAMGUI.py:2796 -#: flatcamGUI/FlatCAMGUI.py:2927 flatcamGUI/FlatCAMGUI.py:2939 -#: flatcamGUI/FlatCAMGUI.py:2973 +#: flatcamEditors/FlatCAMGeoEditor.py:3800 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 "Click pe punctul tinta." -#: flatcamEditors/FlatCAMGeoEditor.py:4047 -#: flatcamEditors/FlatCAMGeoEditor.py:4082 +#: flatcamEditors/FlatCAMGeoEditor.py:4044 +#: flatcamEditors/FlatCAMGeoEditor.py:4079 msgid "" "[WARNING_NOTCL] A selection of at least 2 geo items is required to do " "Intersection." @@ -3133,9 +3159,9 @@ msgstr "" "[WARNING_NOTCL] Cel puțin o selecţie de doua forme geometrice este necesară " "pentru a face o Intersecţie." -#: flatcamEditors/FlatCAMGeoEditor.py:4166 -#: flatcamEditors/FlatCAMGeoEditor.py:4204 -#: flatcamEditors/FlatCAMGeoEditor.py:4280 +#: flatcamEditors/FlatCAMGeoEditor.py:4163 +#: flatcamEditors/FlatCAMGeoEditor.py:4201 +#: flatcamEditors/FlatCAMGeoEditor.py:4277 msgid "" "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to " "generate an 'inside' shape" @@ -3143,57 +3169,57 @@ msgstr "" "[ERROR_NOTCL] O valoare de bufer negativă nu se acceptă. Folosete Bufer " "Interior pentru a genera o forma geo. interioara." -#: flatcamEditors/FlatCAMGeoEditor.py:4175 -#: flatcamEditors/FlatCAMGeoEditor.py:4213 -#: flatcamEditors/FlatCAMGeoEditor.py:4288 +#: flatcamEditors/FlatCAMGeoEditor.py:4172 +#: flatcamEditors/FlatCAMGeoEditor.py:4210 +#: flatcamEditors/FlatCAMGeoEditor.py:4285 msgid "[WARNING_NOTCL] Nothing selected for buffering." msgstr "" "[WARNING_NOTCL] Nici-o forma geometrică nu este selectată pentru a face " "Bufer." -#: flatcamEditors/FlatCAMGeoEditor.py:4179 -#: flatcamEditors/FlatCAMGeoEditor.py:4217 -#: flatcamEditors/FlatCAMGeoEditor.py:4292 +#: flatcamEditors/FlatCAMGeoEditor.py:4176 +#: flatcamEditors/FlatCAMGeoEditor.py:4214 +#: flatcamEditors/FlatCAMGeoEditor.py:4289 msgid "[WARNING_NOTCL] Invalid distance for buffering." msgstr "[WARNING_NOTCL] Distanta invalida pentru a face Bufer." -#: flatcamEditors/FlatCAMGeoEditor.py:4189 -#: flatcamEditors/FlatCAMGeoEditor.py:4301 +#: flatcamEditors/FlatCAMGeoEditor.py:4186 +#: flatcamEditors/FlatCAMGeoEditor.py:4298 msgid "" "[ERROR_NOTCL] Failed, the result is empty. Choose a different buffer value." msgstr "" "[ERROR_NOTCL] Eșuat, rezultatul este gol. Foloseşte o valoare diferita " "pentru Bufer." -#: flatcamEditors/FlatCAMGeoEditor.py:4197 +#: flatcamEditors/FlatCAMGeoEditor.py:4194 msgid "[success] Full buffer geometry created." msgstr "[success] Geometrie tip Bufer Complet creată." -#: flatcamEditors/FlatCAMGeoEditor.py:4227 +#: flatcamEditors/FlatCAMGeoEditor.py:4224 msgid "" "[ERROR_NOTCL] Failed, the result is empty. Choose a smaller buffer value." msgstr "" "[ERROR_NOTCL] Eșuat, rezultatul este gol. Foloseşte of valoare mai mica pt. " "Bufer." -#: flatcamEditors/FlatCAMGeoEditor.py:4242 +#: flatcamEditors/FlatCAMGeoEditor.py:4239 msgid "[success] Interior buffer geometry created." msgstr "[success] Geometrie Bufer interior creată." -#: flatcamEditors/FlatCAMGeoEditor.py:4313 +#: flatcamEditors/FlatCAMGeoEditor.py:4310 msgid "[success] Exterior buffer geometry created." msgstr "[success] Geometrie Bufer Exterior creată." -#: flatcamEditors/FlatCAMGeoEditor.py:4377 +#: flatcamEditors/FlatCAMGeoEditor.py:4374 msgid "[WARNING_NOTCL] Nothing selected for painting." msgstr "" "[WARNING_NOTCL] Nici-o forma geometrică nu este selectată pentru Paint." -#: flatcamEditors/FlatCAMGeoEditor.py:4383 +#: flatcamEditors/FlatCAMGeoEditor.py:4380 msgid "[WARNING] Invalid value for {}" msgstr "[WARNING] Valoare invalida pentru {}" -#: flatcamEditors/FlatCAMGeoEditor.py:4389 +#: flatcamEditors/FlatCAMGeoEditor.py:4386 msgid "" "[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 " "(100%)." @@ -3201,7 +3227,7 @@ msgstr "" "[ERROR_NOTCL] Nu se poate face Paint. Valoarea de suprapunere trebuie să fie " "mai puțin de 1.00 (100%)." -#: flatcamEditors/FlatCAMGeoEditor.py:4448 +#: flatcamEditors/FlatCAMGeoEditor.py:4445 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -3212,7 +3238,7 @@ msgstr "" "Or o metoda diferita de Paint\n" "%s" -#: flatcamEditors/FlatCAMGeoEditor.py:4459 +#: flatcamEditors/FlatCAMGeoEditor.py:4456 msgid "[success] Paint done." msgstr "[success] Paint executat." @@ -3229,11 +3255,6 @@ msgid "" msgstr "" "[WARNING_NOTCL] Dimens. aperturii este zero. Trebuie sa fie mai mare ca zero." -#: flatcamEditors/FlatCAMGrbEditor.py:229 -#: flatcamEditors/FlatCAMGrbEditor.py:234 -msgid "Click to place ..." -msgstr "Click pt a plasa ..." - #: flatcamEditors/FlatCAMGrbEditor.py:357 #: flatcamEditors/FlatCAMGrbEditor.py:662 msgid "" @@ -3257,6 +3278,10 @@ msgstr "" msgid "Click on the Pad Circular Array Start position" msgstr "Click pe punctul de Start al ariei de paduri" +#: flatcamEditors/FlatCAMGrbEditor.py:497 +msgid "[ERROR_NOTCL] The value is mistyped. Check the value." +msgstr "[ERROR_NOTCL] Valoarea este gresita. Verifică ce ai introdus." + #: flatcamEditors/FlatCAMGrbEditor.py:687 msgid "[WARNING_NOTCL] Too many Pads for the selected spacing angle." msgstr "[WARNING_NOTCL] Prea multe paduri pentru unghiul selectat." @@ -3348,69 +3373,69 @@ msgstr "Mod Traseu 4: Invers 90 grade ..." msgid "Track Mode 5: Free angle ..." msgstr "Mod Traseu 5: Unghi liber ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1669 +#: flatcamEditors/FlatCAMGrbEditor.py:1683 msgid "Scale the selected Gerber apertures ..." msgstr "Șterge aperturile Gerber selectate ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1711 +#: flatcamEditors/FlatCAMGrbEditor.py:1725 msgid "Buffer the selected apertures ..." msgstr "Bufereaza aperturile selectate." -#: flatcamEditors/FlatCAMGrbEditor.py:1755 +#: flatcamEditors/FlatCAMGrbEditor.py:1769 msgid "[WARNING_NOTCL] Nothing selected to move ..." msgstr "[WARNING_NOTCL] Nimic nu este selectat pentru mutare ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1878 +#: flatcamEditors/FlatCAMGrbEditor.py:1892 msgid "[success] Done. Apertures Move completed." msgstr "[success] Executat. Mutarea Aperturilor terminată." -#: flatcamEditors/FlatCAMGrbEditor.py:1954 +#: flatcamEditors/FlatCAMGrbEditor.py:1968 msgid "[success] Done. Apertures copied." msgstr "[success] Executat. Aperturile au fost copiate." -#: flatcamEditors/FlatCAMGrbEditor.py:2243 flatcamGUI/FlatCAMGUI.py:1607 -#: flatcamGUI/FlatCAMGUI.py:4329 +#: flatcamEditors/FlatCAMGrbEditor.py:2259 flatcamGUI/FlatCAMGUI.py:1604 +#: flatcamGUI/FlatCAMGUI.py:4323 msgid "Gerber Editor" msgstr "Editor Gerber" -#: flatcamEditors/FlatCAMGrbEditor.py:2262 flatcamGUI/ObjectUI.py:192 +#: flatcamEditors/FlatCAMGrbEditor.py:2278 flatcamGUI/ObjectUI.py:192 msgid "Apertures:" msgstr "Aperturi:" -#: flatcamEditors/FlatCAMGrbEditor.py:2264 flatcamGUI/ObjectUI.py:194 +#: flatcamEditors/FlatCAMGrbEditor.py:2280 flatcamGUI/ObjectUI.py:194 msgid "Apertures Table for the Gerber Object." msgstr "Tabela de aperturi pt obiectul Gerber." -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 msgid "Code" msgstr "Cod" -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465 msgid "Type" msgstr "Tip" -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 msgid "Size" msgstr "Dimens." -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 msgid "Dim" msgstr "Dim" -#: flatcamEditors/FlatCAMGrbEditor.py:2279 flatcamGUI/ObjectUI.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:2295 flatcamGUI/ObjectUI.py:232 msgid "Index" msgstr "Index" -#: flatcamEditors/FlatCAMGrbEditor.py:2281 flatcamGUI/ObjectUI.py:234 +#: flatcamEditors/FlatCAMGrbEditor.py:2297 flatcamGUI/ObjectUI.py:234 msgid "Aperture Code" msgstr "Cod" -#: flatcamEditors/FlatCAMGrbEditor.py:2283 flatcamGUI/ObjectUI.py:236 +#: flatcamEditors/FlatCAMGrbEditor.py:2299 flatcamGUI/ObjectUI.py:236 msgid "Type of aperture: circular, rectangle, macros etc" msgstr "" "Tipul aperturilor:\n" @@ -3419,12 +3444,12 @@ msgstr "" "- macro-uri\n" "etc" -#: flatcamEditors/FlatCAMGrbEditor.py:2285 -#: flatcamEditors/FlatCAMGrbEditor.py:2318 flatcamGUI/ObjectUI.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:2301 +#: flatcamEditors/FlatCAMGrbEditor.py:2334 flatcamGUI/ObjectUI.py:238 msgid "Aperture Size:" msgstr "Dim. aper." -#: flatcamEditors/FlatCAMGrbEditor.py:2287 flatcamGUI/ObjectUI.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:2303 flatcamGUI/ObjectUI.py:240 msgid "" "Aperture Dimensions:\n" " - (width, height) for R, O type.\n" @@ -3434,15 +3459,15 @@ msgstr "" "- (latime, inaltime) pt tipurile R, O.\n" "- (diametru, nVertices) pt tipul P" -#: flatcamEditors/FlatCAMGrbEditor.py:2308 +#: flatcamEditors/FlatCAMGrbEditor.py:2324 msgid "Aperture Code:" msgstr "Cod apertură" -#: flatcamEditors/FlatCAMGrbEditor.py:2310 +#: flatcamEditors/FlatCAMGrbEditor.py:2326 msgid "Code for the new aperture" msgstr "Diametru pentru noua apertură" -#: flatcamEditors/FlatCAMGrbEditor.py:2320 +#: flatcamEditors/FlatCAMGrbEditor.py:2336 msgid "" "Size for the new aperture.\n" "If aperture type is 'R' or 'O' then\n" @@ -3455,11 +3480,11 @@ msgstr "" "valoarea este calculată automat prin:\n" "sqrt(lătime**2 + inăltime**2)" -#: flatcamEditors/FlatCAMGrbEditor.py:2332 +#: flatcamEditors/FlatCAMGrbEditor.py:2348 msgid "Aperture Type:" msgstr "Tip aper." -#: flatcamEditors/FlatCAMGrbEditor.py:2334 +#: flatcamEditors/FlatCAMGrbEditor.py:2350 msgid "" "Select the type of new aperture. Can be:\n" "C = circular\n" @@ -3471,11 +3496,11 @@ msgstr "" "R = rectangular\n" "O = oval" -#: flatcamEditors/FlatCAMGrbEditor.py:2345 +#: flatcamEditors/FlatCAMGrbEditor.py:2361 msgid "Aperture Dim:" msgstr "Dim. aper." -#: flatcamEditors/FlatCAMGrbEditor.py:2347 +#: flatcamEditors/FlatCAMGrbEditor.py:2363 msgid "" "Dimensions for the new aperture.\n" "Active only for rectangular apertures (type R).\n" @@ -3485,31 +3510,31 @@ msgstr "" "Activă doar pentru aperturile rectangulare (tip 'R').\n" "Formatul este (lătime, inăltime)" -#: flatcamEditors/FlatCAMGrbEditor.py:2356 +#: flatcamEditors/FlatCAMGrbEditor.py:2372 msgid "Add/Delete Aperture:" msgstr "Adaugă/Șterge aper." -#: flatcamEditors/FlatCAMGrbEditor.py:2358 +#: flatcamEditors/FlatCAMGrbEditor.py:2374 msgid "Add/Delete an aperture in the aperture table" msgstr "Adaugă/Șterge o apertură din lista de aperturi." -#: flatcamEditors/FlatCAMGrbEditor.py:2367 +#: flatcamEditors/FlatCAMGrbEditor.py:2383 msgid "Add a new aperture to the aperture list." msgstr "Adaugă o nouă apertură in lista de aperturi." -#: flatcamEditors/FlatCAMGrbEditor.py:2372 +#: flatcamEditors/FlatCAMGrbEditor.py:2388 msgid "Delete a aperture in the aperture list" msgstr "Șterge o apertură din lista de aperturi." -#: flatcamEditors/FlatCAMGrbEditor.py:2388 +#: flatcamEditors/FlatCAMGrbEditor.py:2404 msgid "Buffer Aperture:" msgstr "Bufer pt apertură:" -#: flatcamEditors/FlatCAMGrbEditor.py:2390 +#: flatcamEditors/FlatCAMGrbEditor.py:2406 msgid "Buffer a aperture in the aperture list" msgstr "Fă bufer pt o apertură din lista de aperturi" -#: flatcamEditors/FlatCAMGrbEditor.py:2403 +#: flatcamEditors/FlatCAMGrbEditor.py:2419 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded.\n" @@ -3523,24 +3548,24 @@ msgstr "" " - 'Beveled:' coltul este inlocuit cu o linie care uneste capetele liniilor " "care formează coltul" -#: flatcamEditors/FlatCAMGrbEditor.py:2418 flatcamGUI/FlatCAMGUI.py:722 -#: flatcamGUI/FlatCAMGUI.py:1948 +#: flatcamEditors/FlatCAMGrbEditor.py:2434 flatcamGUI/FlatCAMGUI.py:717 +#: flatcamGUI/FlatCAMGUI.py:1946 msgid "Buffer" msgstr "Bufer" -#: flatcamEditors/FlatCAMGrbEditor.py:2432 +#: flatcamEditors/FlatCAMGrbEditor.py:2448 msgid "Scale Aperture:" msgstr "Scalează ap.:" -#: flatcamEditors/FlatCAMGrbEditor.py:2434 +#: flatcamEditors/FlatCAMGrbEditor.py:2450 msgid "Scale a aperture in the aperture list" msgstr "Scalează o apertură in lista de aperturi" -#: flatcamEditors/FlatCAMGrbEditor.py:2442 +#: flatcamEditors/FlatCAMGrbEditor.py:2458 msgid "Scale factor:" msgstr "Factor Scalare:" -#: flatcamEditors/FlatCAMGrbEditor.py:2444 +#: flatcamEditors/FlatCAMGrbEditor.py:2460 msgid "" "The factor by which to scale the selected aperture.\n" "Values can be between 0.0000 and 999.9999" @@ -3548,16 +3573,16 @@ msgstr "" "Factorul cu care se va face scalarea aperturii selectate.\n" "Poate lua valori intre: 0.000 si 999.9999" -#: flatcamEditors/FlatCAMGrbEditor.py:2472 flatcamGUI/FlatCAMGUI.py:712 -#: flatcamGUI/FlatCAMGUI.py:1938 +#: flatcamEditors/FlatCAMGrbEditor.py:2488 flatcamGUI/FlatCAMGUI.py:707 +#: flatcamGUI/FlatCAMGUI.py:1936 msgid "Add Pad Array" msgstr "Adaugă o arie de paduri" -#: flatcamEditors/FlatCAMGrbEditor.py:2474 +#: flatcamEditors/FlatCAMGrbEditor.py:2490 msgid "Add an array of pads (linear or circular array)" msgstr "Adaugă o arie de paduri (arie lineara sau circulara)." -#: flatcamEditors/FlatCAMGrbEditor.py:2480 +#: flatcamEditors/FlatCAMGrbEditor.py:2496 msgid "" "Select the type of pads array to create.\n" "It can be Linear X(Y) or Circular" @@ -3565,16 +3590,16 @@ msgstr "" "Selectează tipul de arii de paduri.\n" "Poate fi Liniar X(Y) sau Circular." -#: flatcamEditors/FlatCAMGrbEditor.py:2491 +#: flatcamEditors/FlatCAMGrbEditor.py:2507 msgid "Nr of pads:" msgstr "Nr. paduri:" -#: flatcamEditors/FlatCAMGrbEditor.py:2493 +#: flatcamEditors/FlatCAMGrbEditor.py:2509 msgid "Specify how many pads to be in the array." msgstr "Specifica cate paduri să fie incluse in arie." -#: flatcamEditors/FlatCAMGrbEditor.py:2970 -#: flatcamEditors/FlatCAMGrbEditor.py:2974 +#: flatcamEditors/FlatCAMGrbEditor.py:2986 +#: flatcamEditors/FlatCAMGrbEditor.py:2990 msgid "" "[WARNING_NOTCL] Aperture code value is missing or wrong format. Add it and " "retry." @@ -3582,7 +3607,7 @@ msgstr "" "[WARNING_NOTCL] Valoarea codului aperturii lipseste sau este in format " "greșit. Adaugă din nou și reîncearcă." -#: flatcamEditors/FlatCAMGrbEditor.py:3010 +#: flatcamEditors/FlatCAMGrbEditor.py:3026 msgid "" "[WARNING_NOTCL] Aperture dimensions value is missing or wrong format. Add it " "in format (width, height) and retry." @@ -3590,7 +3615,7 @@ msgstr "" "[WARNING_NOTCL] Dimensiunile aperturii lipsesc sau sunt intr-un format " "greșit. Adaugă din nou și reîncearcă." -#: flatcamEditors/FlatCAMGrbEditor.py:3022 +#: flatcamEditors/FlatCAMGrbEditor.py:3038 msgid "" "[WARNING_NOTCL] Aperture size value is missing or wrong format. Add it and " "retry." @@ -3598,35 +3623,35 @@ msgstr "" "[WARNING_NOTCL] Valoarea mărimii aperturii lipseste sau este in format " "greșit. Adaugă din nou și reîncearcă." -#: flatcamEditors/FlatCAMGrbEditor.py:3033 +#: flatcamEditors/FlatCAMGrbEditor.py:3049 msgid "[WARNING_NOTCL] Aperture already in the aperture table." msgstr "[WARNING_NOTCL] Apertura este deja in lista de aperturi." -#: flatcamEditors/FlatCAMGrbEditor.py:3040 +#: flatcamEditors/FlatCAMGrbEditor.py:3056 #, python-brace-format msgid "[success] Added new aperture with code: {apid}" msgstr "[success] O nouă apertură este adăugată cu codul: {apid}" -#: flatcamEditors/FlatCAMGrbEditor.py:3068 +#: flatcamEditors/FlatCAMGrbEditor.py:3084 msgid "[WARNING_NOTCL] Select an aperture in Aperture Table" msgstr "[WARNING_NOTCL] Selectează o unealtă in Tabela de Aperturi" -#: flatcamEditors/FlatCAMGrbEditor.py:3074 +#: flatcamEditors/FlatCAMGrbEditor.py:3090 #, python-format msgid "[WARNING_NOTCL] Select an aperture in Aperture Table --> %s" msgstr "[WARNING_NOTCL] Selectează o unealtă in Tabela de Aperturi --> %s" -#: flatcamEditors/FlatCAMGrbEditor.py:3097 +#: flatcamEditors/FlatCAMGrbEditor.py:3113 #, python-brace-format msgid "[success] Deleted aperture with code: {del_dia}" msgstr "[success] Unealta cu diametrul: {del_dia} a fost stearsă" -#: flatcamEditors/FlatCAMGrbEditor.py:3517 +#: flatcamEditors/FlatCAMGrbEditor.py:3533 #, python-format msgid "Adding aperture: %s geo ..." msgstr "Se adaugă apertura: %s geo ..." -#: flatcamEditors/FlatCAMGrbEditor.py:3696 +#: flatcamEditors/FlatCAMGrbEditor.py:3718 msgid "" "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber " "creation." @@ -3634,34 +3659,34 @@ msgstr "" "[ERROR_NOTCL] Nu există definitii de aperturi in fişier. Se anulează crearea " "de obiect Gerber." -#: flatcamEditors/FlatCAMGrbEditor.py:3699 +#: flatcamEditors/FlatCAMGrbEditor.py:3721 msgid "[ERROR] An internal error has occurred. See shell.\n" msgstr "" "[ERROR] A apărut o eroare internă. Verifică in TCL Shell pt mai multe " "detalii.\n" -#: flatcamEditors/FlatCAMGrbEditor.py:3704 +#: flatcamEditors/FlatCAMGrbEditor.py:3726 msgid "Creating Gerber." msgstr "Gerber in curs de creare." -#: flatcamEditors/FlatCAMGrbEditor.py:3712 +#: flatcamEditors/FlatCAMGrbEditor.py:3734 msgid "[success] Gerber editing finished." msgstr "[success] Editarea Gerber a fost terminată." -#: flatcamEditors/FlatCAMGrbEditor.py:3728 +#: flatcamEditors/FlatCAMGrbEditor.py:3750 msgid "[WARNING_NOTCL] Cancelled. No aperture is selected" msgstr "[WARNING_NOTCL] Anulat. Nici-o apertură nu este selectată." -#: flatcamEditors/FlatCAMGrbEditor.py:4248 +#: flatcamEditors/FlatCAMGrbEditor.py:4270 msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected." msgstr "" "[WARNING_NOTCL] Anulat. Nici-o geometrie de apertură nu este selectată." -#: flatcamEditors/FlatCAMGrbEditor.py:4256 +#: flatcamEditors/FlatCAMGrbEditor.py:4278 msgid "[success] Done. Apertures geometry deleted." msgstr "[success] Executat. Geometriile aperturilor au fost șterse." -#: flatcamEditors/FlatCAMGrbEditor.py:4405 +#: flatcamEditors/FlatCAMGrbEditor.py:4427 msgid "" "[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try " "again." @@ -3669,7 +3694,7 @@ msgstr "" "[WARNING_NOTCL] Nici-o apertura sel. pt a face bufer. Selectează cel puțin o " "apertura și încearcă din nou." -#: flatcamEditors/FlatCAMGrbEditor.py:4434 +#: flatcamEditors/FlatCAMGrbEditor.py:4456 msgid "" "[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and " "retry." @@ -3677,7 +3702,7 @@ msgstr "" "[WARNING_NOTCL] Valoarea factorului de scalare lipseste sau este in format " "gresit. Adaugă din nou și reîncearcă." -#: flatcamEditors/FlatCAMGrbEditor.py:4464 +#: flatcamEditors/FlatCAMGrbEditor.py:4486 msgid "" "[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try " "again." @@ -3685,7 +3710,7 @@ msgstr "" "[WARNING_NOTCL] Nici-o apertură sel. pt scalare. Selectează cel puțin o " "apertură și încearcă din nou." -#: flatcamEditors/FlatCAMGrbEditor.py:4480 +#: flatcamEditors/FlatCAMGrbEditor.py:4502 msgid "[success] Done. Scale Tool completed." msgstr "[success] Executat. Unealta Scalare a terminat." @@ -3862,47 +3887,47 @@ msgstr "" msgid "Save &Defaults" msgstr "Salvează valori &Default" -#: flatcamGUI/FlatCAMGUI.py:205 flatcamGUI/FlatCAMGUI.py:533 +#: flatcamGUI/FlatCAMGUI.py:205 flatcamGUI/FlatCAMGUI.py:528 msgid "Save" msgstr "Salvează" -#: flatcamGUI/FlatCAMGUI.py:207 +#: flatcamGUI/FlatCAMGUI.py:208 msgid "&Save Project ..." msgstr "&Salvează Proiect ..." -#: flatcamGUI/FlatCAMGUI.py:212 +#: flatcamGUI/FlatCAMGUI.py:213 msgid "Save Project &As ...\tCTRL+S" msgstr "Salvează Proiect &ca ...\tCTRL+S" -#: flatcamGUI/FlatCAMGUI.py:216 +#: flatcamGUI/FlatCAMGUI.py:217 msgid "Save Project C&opy ..." msgstr "Salvează o C&opie Proiect..." -#: flatcamGUI/FlatCAMGUI.py:224 +#: flatcamGUI/FlatCAMGUI.py:225 msgid "E&xit" msgstr "Iesire" -#: flatcamGUI/FlatCAMGUI.py:230 +#: flatcamGUI/FlatCAMGUI.py:231 msgid "&Edit" msgstr "&Editare" -#: flatcamGUI/FlatCAMGUI.py:233 +#: flatcamGUI/FlatCAMGUI.py:234 msgid "Edit Object\tE" msgstr "Editare Obiect\tE" -#: flatcamGUI/FlatCAMGUI.py:234 +#: flatcamGUI/FlatCAMGUI.py:235 msgid "Close Editor\tCTRL+S" msgstr "Salvează Editor\tCTRL+S" -#: flatcamGUI/FlatCAMGUI.py:242 +#: flatcamGUI/FlatCAMGUI.py:243 msgid "Conversion" msgstr "Conversii" -#: flatcamGUI/FlatCAMGUI.py:244 +#: flatcamGUI/FlatCAMGUI.py:245 msgid "&Join Geo/Gerber/Exc -> Geo" msgstr "&Fuzionează Geo/Gerber/Exc -> Geo" -#: flatcamGUI/FlatCAMGUI.py:246 +#: flatcamGUI/FlatCAMGUI.py:247 msgid "" "Merge a selection of objects, which can be of type:\n" "- Gerber\n" @@ -3916,29 +3941,29 @@ msgstr "" "- Geometrie\n" "intr-un nou obiect tip Geometrie >combo<." -#: flatcamGUI/FlatCAMGUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:254 msgid "Join Excellon(s) -> Excellon" msgstr "Fuzionează Excellon(s) -> Excellon" -#: flatcamGUI/FlatCAMGUI.py:255 +#: flatcamGUI/FlatCAMGUI.py:256 msgid "Merge a selection of Excellon objects into a new combo Excellon object." msgstr "" "Fuzionează o selecţie de obiecte Excellon intr-un nou obiect Excellon >combo<" -#: flatcamGUI/FlatCAMGUI.py:258 +#: flatcamGUI/FlatCAMGUI.py:259 msgid "Join Gerber(s) -> Gerber" msgstr "Fuzionează Gerber(s) -> Gerber" -#: flatcamGUI/FlatCAMGUI.py:260 +#: flatcamGUI/FlatCAMGUI.py:261 msgid "Merge a selection of Gerber objects into a new combo Gerber object." msgstr "" "Fuzionează o selecţie de obiecte Gerber intr-un nou obiect Gerber >combo<" -#: flatcamGUI/FlatCAMGUI.py:265 +#: flatcamGUI/FlatCAMGUI.py:266 msgid "Convert Single to MultiGeo" msgstr "Converteste SingleGeo in MultiGeo" -#: flatcamGUI/FlatCAMGUI.py:267 +#: flatcamGUI/FlatCAMGUI.py:268 msgid "" "Will convert a Geometry object from single_geometry type\n" "to a multi_geometry type." @@ -3946,11 +3971,11 @@ msgstr "" "Va converti un obiect Geometrie din tipul simpla geometrie (SingleGeo)\n" "la tipul geometrie complexa (MultiGeo)." -#: flatcamGUI/FlatCAMGUI.py:271 +#: flatcamGUI/FlatCAMGUI.py:272 msgid "Convert Multi to SingleGeo" msgstr "Converteste MultiGeo in SingleGeo" -#: flatcamGUI/FlatCAMGUI.py:273 +#: flatcamGUI/FlatCAMGUI.py:274 msgid "" "Will convert a Geometry object from multi_geometry type\n" "to a single_geometry type." @@ -3958,123 +3983,123 @@ msgstr "" "Va converti un obiect Geometrie din tipul geometrie complexa (MultiGeo)\n" "la tipul geometrie simpla (SingleGeo)." -#: flatcamGUI/FlatCAMGUI.py:279 +#: flatcamGUI/FlatCAMGUI.py:280 msgid "Convert Any to Geo" msgstr "Converteste Oricare to Geo" -#: flatcamGUI/FlatCAMGUI.py:281 +#: flatcamGUI/FlatCAMGUI.py:282 msgid "Convert Any to Gerber" msgstr "Converteste Oricare in Gerber" -#: flatcamGUI/FlatCAMGUI.py:286 +#: flatcamGUI/FlatCAMGUI.py:287 msgid "&Copy\tCTRL+C" msgstr "&Copiază\tCTRL+C" -#: flatcamGUI/FlatCAMGUI.py:290 +#: flatcamGUI/FlatCAMGUI.py:291 msgid "&Delete\tDEL" msgstr "&Șterge\tDEL" -#: flatcamGUI/FlatCAMGUI.py:294 +#: flatcamGUI/FlatCAMGUI.py:295 msgid "Se&t Origin\tO" msgstr "Se&tează Originea\tO" -#: flatcamGUI/FlatCAMGUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:296 msgid "Jump to Location\tJ" msgstr "Sari la Locaţie\tJ" -#: flatcamGUI/FlatCAMGUI.py:300 +#: flatcamGUI/FlatCAMGUI.py:301 msgid "Toggle Units\tQ" msgstr "Comută Unitati\tQ" -#: flatcamGUI/FlatCAMGUI.py:302 +#: flatcamGUI/FlatCAMGUI.py:303 msgid "&Select All\tCTRL+A" msgstr "&Selectează Tot\tCTRL+A" -#: flatcamGUI/FlatCAMGUI.py:306 +#: flatcamGUI/FlatCAMGUI.py:307 msgid "&Preferences\tSHIFT+P" msgstr "&Preferințe\tSHIFT+P" -#: flatcamGUI/FlatCAMGUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:310 msgid "&Options" msgstr "&Opțiuni" -#: flatcamGUI/FlatCAMGUI.py:324 +#: flatcamGUI/FlatCAMGUI.py:325 msgid "&Rotate Selection\tSHIFT+(R)" msgstr "&Roteste Selectia\tSHIFT+(R)" -#: flatcamGUI/FlatCAMGUI.py:329 +#: flatcamGUI/FlatCAMGUI.py:330 msgid "&Skew on X axis\tSHIFT+X" msgstr "&Deformează pe axa X\tSHIFT+X" -#: flatcamGUI/FlatCAMGUI.py:331 +#: flatcamGUI/FlatCAMGUI.py:332 msgid "S&kew on Y axis\tSHIFT+Y" msgstr "Deformează pe axa Y\tSHIFT+Y" -#: flatcamGUI/FlatCAMGUI.py:336 +#: flatcamGUI/FlatCAMGUI.py:337 msgid "Flip on &X axis\tX" msgstr "Oglindește pe axa &X\tX" -#: flatcamGUI/FlatCAMGUI.py:338 +#: flatcamGUI/FlatCAMGUI.py:339 msgid "Flip on &Y axis\tY" msgstr "Oglindește pe axa &Y\tY" -#: flatcamGUI/FlatCAMGUI.py:343 +#: flatcamGUI/FlatCAMGUI.py:344 msgid "View source\tALT+S" msgstr "Vezi sursa\tALT+S" -#: flatcamGUI/FlatCAMGUI.py:348 +#: flatcamGUI/FlatCAMGUI.py:349 msgid "&View" msgstr "&Vizualizare" -#: flatcamGUI/FlatCAMGUI.py:349 +#: flatcamGUI/FlatCAMGUI.py:350 msgid "Enable all plots\tALT+1" -msgstr "Activează toate afisarile\tALT+1" +msgstr "Activează toate afişările\tALT+1" -#: flatcamGUI/FlatCAMGUI.py:351 +#: flatcamGUI/FlatCAMGUI.py:352 msgid "Disable all plots\tALT+2" -msgstr "Dezactivează toate afisarile\tALT+2" +msgstr "Dezactivează toate afişările\tALT+2" -#: flatcamGUI/FlatCAMGUI.py:353 +#: flatcamGUI/FlatCAMGUI.py:354 msgid "Disable non-selected\tALT+3" msgstr "Dezactivează non-selectate\tALT+3" -#: flatcamGUI/FlatCAMGUI.py:356 +#: flatcamGUI/FlatCAMGUI.py:357 msgid "&Zoom Fit\tV" msgstr "&Mareste și potriveste\tV" -#: flatcamGUI/FlatCAMGUI.py:357 +#: flatcamGUI/FlatCAMGUI.py:358 msgid "&Zoom In\t-" msgstr "&Mareste\t-" -#: flatcamGUI/FlatCAMGUI.py:358 +#: flatcamGUI/FlatCAMGUI.py:359 msgid "&Zoom Out\t=" msgstr "&Micsorează\t=" -#: flatcamGUI/FlatCAMGUI.py:362 +#: flatcamGUI/FlatCAMGUI.py:363 msgid "Toggle Code Editor\tCTRL+E" msgstr "Comută Editorul de cod\tCTRL+E" -#: flatcamGUI/FlatCAMGUI.py:365 +#: flatcamGUI/FlatCAMGUI.py:366 msgid "&Toggle FullScreen\tALT+F10" msgstr "Comută FullScreen\tALT+F10" -#: flatcamGUI/FlatCAMGUI.py:367 +#: flatcamGUI/FlatCAMGUI.py:368 msgid "&Toggle Plot Area\tCTRL+F10" msgstr "Comută Aria de Afișare\tCTRL+F10" -#: flatcamGUI/FlatCAMGUI.py:369 +#: flatcamGUI/FlatCAMGUI.py:370 msgid "&Toggle Project/Sel/Tool\t`" msgstr "Comută Proiect/Sel/Unealta\t`" -#: flatcamGUI/FlatCAMGUI.py:372 +#: flatcamGUI/FlatCAMGUI.py:373 msgid "&Toggle Grid Snap\tG" msgstr "Comută Grid\tG" -#: flatcamGUI/FlatCAMGUI.py:374 +#: flatcamGUI/FlatCAMGUI.py:375 msgid "&Toggle Axis\tSHIFT+G" msgstr "Comută Axe\tSHIFT+G" -#: flatcamGUI/FlatCAMGUI.py:377 +#: flatcamGUI/FlatCAMGUI.py:378 msgid "Toggle Workspace\tSHIFT+W" msgstr "Comută Suprafata de lucru\tSHIFT+W" @@ -4110,442 +4135,442 @@ msgstr "YouTube \tF4" msgid "About" msgstr "Despre" -#: flatcamGUI/FlatCAMGUI.py:405 +#: flatcamGUI/FlatCAMGUI.py:401 msgid "Add Circle\tO" msgstr "Adaugă Cerc\tO" -#: flatcamGUI/FlatCAMGUI.py:407 +#: flatcamGUI/FlatCAMGUI.py:403 msgid "Add Arc\tA" msgstr "Adaugă Arc\tA" -#: flatcamGUI/FlatCAMGUI.py:410 +#: flatcamGUI/FlatCAMGUI.py:406 msgid "Add Rectangle\tR" msgstr "Adaugă Patrulater\tR" -#: flatcamGUI/FlatCAMGUI.py:413 +#: flatcamGUI/FlatCAMGUI.py:409 msgid "Add Polygon\tN" msgstr "Adaugă Poligon\tN" -#: flatcamGUI/FlatCAMGUI.py:415 +#: flatcamGUI/FlatCAMGUI.py:411 msgid "Add Path\tP" msgstr "Adaugă Cale\tP" -#: flatcamGUI/FlatCAMGUI.py:417 +#: flatcamGUI/FlatCAMGUI.py:413 msgid "Add Text\tT" msgstr "Adaugă Text\tT" -#: flatcamGUI/FlatCAMGUI.py:420 +#: flatcamGUI/FlatCAMGUI.py:416 msgid "Polygon Union\tU" msgstr "Uniune Poligoane\tU" -#: flatcamGUI/FlatCAMGUI.py:422 +#: flatcamGUI/FlatCAMGUI.py:418 msgid "Polygon Intersection\tE" msgstr "Intersecţie Poligoane\tE" -#: flatcamGUI/FlatCAMGUI.py:424 +#: flatcamGUI/FlatCAMGUI.py:420 msgid "Polygon Subtraction\tS" msgstr "Substracţie Poligoane\tS" -#: flatcamGUI/FlatCAMGUI.py:428 +#: flatcamGUI/FlatCAMGUI.py:424 msgid "Cut Path\tX" msgstr "Tăiere Cale\tX" -#: flatcamGUI/FlatCAMGUI.py:430 +#: flatcamGUI/FlatCAMGUI.py:426 msgid "Copy Geom\tC" msgstr "Copiază Geo\tC" -#: flatcamGUI/FlatCAMGUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:428 msgid "Delete Shape\tDEL" msgstr "Șterge forma Geo.\tDEL" -#: flatcamGUI/FlatCAMGUI.py:435 flatcamGUI/FlatCAMGUI.py:508 +#: flatcamGUI/FlatCAMGUI.py:431 flatcamGUI/FlatCAMGUI.py:503 msgid "Move\tM" msgstr "Muta\tM" -#: flatcamGUI/FlatCAMGUI.py:437 +#: flatcamGUI/FlatCAMGUI.py:433 msgid "Buffer Tool\tB" msgstr "Unealta Bufer\tB" -#: flatcamGUI/FlatCAMGUI.py:440 +#: flatcamGUI/FlatCAMGUI.py:436 msgid "Paint Tool\tI" msgstr "Unealta Paint\t" -#: flatcamGUI/FlatCAMGUI.py:443 +#: flatcamGUI/FlatCAMGUI.py:439 msgid "Transform Tool\tALT+R" msgstr "Unealta Transformare\tALT+R" -#: flatcamGUI/FlatCAMGUI.py:447 +#: flatcamGUI/FlatCAMGUI.py:443 msgid "Toggle Corner Snap\tK" msgstr "Comută lipire colt\tK" -#: flatcamGUI/FlatCAMGUI.py:450 +#: flatcamGUI/FlatCAMGUI.py:446 msgid ">Excellon Editor<" msgstr ">Editor Excellon<" -#: flatcamGUI/FlatCAMGUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:450 msgid "Add Drill Array\tA" msgstr "Adaugă Arie Găuriri\tA" -#: flatcamGUI/FlatCAMGUI.py:456 +#: flatcamGUI/FlatCAMGUI.py:452 msgid "Add Drill\tD" msgstr "Adaugă Găurire\tD" -#: flatcamGUI/FlatCAMGUI.py:460 +#: flatcamGUI/FlatCAMGUI.py:456 msgid "Resize Drill(S)\tR" msgstr "Redimens. Găuriri\tR" -#: flatcamGUI/FlatCAMGUI.py:462 flatcamGUI/FlatCAMGUI.py:501 +#: flatcamGUI/FlatCAMGUI.py:458 flatcamGUI/FlatCAMGUI.py:496 msgid "Copy\tC" msgstr "Copiază\tC" -#: flatcamGUI/FlatCAMGUI.py:464 flatcamGUI/FlatCAMGUI.py:503 +#: flatcamGUI/FlatCAMGUI.py:460 flatcamGUI/FlatCAMGUI.py:498 msgid "Delete\tDEL" msgstr "Șterge\tDEL" -#: flatcamGUI/FlatCAMGUI.py:469 +#: flatcamGUI/FlatCAMGUI.py:465 msgid "Move Drill(s)\tM" msgstr "Muta Găuriri\tM" -#: flatcamGUI/FlatCAMGUI.py:473 +#: flatcamGUI/FlatCAMGUI.py:468 msgid ">Gerber Editor<" msgstr ">Editor Gerber<" -#: flatcamGUI/FlatCAMGUI.py:477 +#: flatcamGUI/FlatCAMGUI.py:472 msgid "Add Pad\tP" msgstr "Adaugă Pad\tP" -#: flatcamGUI/FlatCAMGUI.py:479 +#: flatcamGUI/FlatCAMGUI.py:474 msgid "Add Pad Array\tA" msgstr "Adaugă Arie paduri\tA" -#: flatcamGUI/FlatCAMGUI.py:481 +#: flatcamGUI/FlatCAMGUI.py:476 msgid "Add Track\tT" msgstr "Adaugă Traseu\tA" -#: flatcamGUI/FlatCAMGUI.py:483 +#: flatcamGUI/FlatCAMGUI.py:478 msgid "Add Region\tN" msgstr "Adaugă Regiune\tN" -#: flatcamGUI/FlatCAMGUI.py:487 +#: flatcamGUI/FlatCAMGUI.py:482 msgid "Poligonize\tALT+N" msgstr "Poligonizare\tALT+N" -#: flatcamGUI/FlatCAMGUI.py:489 +#: flatcamGUI/FlatCAMGUI.py:484 msgid "Add SemiDisc\tE" msgstr "Adaugă SemiDisc\tE" -#: flatcamGUI/FlatCAMGUI.py:491 +#: flatcamGUI/FlatCAMGUI.py:486 msgid "Add Disc\tD" msgstr "Adaugă Disc\tD" -#: flatcamGUI/FlatCAMGUI.py:493 +#: flatcamGUI/FlatCAMGUI.py:488 msgid "Buffer\tB" msgstr "Bufer\tB" -#: flatcamGUI/FlatCAMGUI.py:495 +#: flatcamGUI/FlatCAMGUI.py:490 msgid "Scale\tS" msgstr "Scalare\tS" -#: flatcamGUI/FlatCAMGUI.py:497 +#: flatcamGUI/FlatCAMGUI.py:492 msgid "Transform\tALT+R" msgstr "Unealta Transformare\tALT+R" -#: flatcamGUI/FlatCAMGUI.py:524 +#: flatcamGUI/FlatCAMGUI.py:519 msgid "Enable Plot" msgstr "Activează Afișare" -#: flatcamGUI/FlatCAMGUI.py:525 +#: flatcamGUI/FlatCAMGUI.py:520 flatcamGUI/FlatCAMGUI.py:1577 msgid "Disable Plot" msgstr "Dezactivează Afișare" -#: flatcamGUI/FlatCAMGUI.py:527 +#: flatcamGUI/FlatCAMGUI.py:522 msgid "Generate CNC" msgstr "Generează CNC" -#: flatcamGUI/FlatCAMGUI.py:528 +#: flatcamGUI/FlatCAMGUI.py:523 msgid "View Source" msgstr "Vizualiz. Sursa" -#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1620 +#: flatcamGUI/FlatCAMGUI.py:525 flatcamGUI/FlatCAMGUI.py:1617 msgid "Edit" msgstr "Editează" -#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1626 +#: flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:1623 #: flatcamTools/ToolProperties.py:25 msgid "Properties" msgstr "Proprietati" -#: flatcamGUI/FlatCAMGUI.py:565 +#: flatcamGUI/FlatCAMGUI.py:560 msgid "File Toolbar" msgstr "Toolbar Fişiere" -#: flatcamGUI/FlatCAMGUI.py:569 +#: flatcamGUI/FlatCAMGUI.py:564 msgid "Edit Toolbar" msgstr "Toolbar Editare" -#: flatcamGUI/FlatCAMGUI.py:573 +#: flatcamGUI/FlatCAMGUI.py:568 msgid "View Toolbar" msgstr "Toolbar Vizualizare" -#: flatcamGUI/FlatCAMGUI.py:577 +#: flatcamGUI/FlatCAMGUI.py:572 msgid "Shell Toolbar" msgstr "Toolbar Linie de comanda" -#: flatcamGUI/FlatCAMGUI.py:581 +#: flatcamGUI/FlatCAMGUI.py:576 msgid "Tools Toolbar" msgstr "Toolbar Unelte" -#: flatcamGUI/FlatCAMGUI.py:585 +#: flatcamGUI/FlatCAMGUI.py:580 msgid "Excellon Editor Toolbar" msgstr "Toolbar Editor Excellon" -#: flatcamGUI/FlatCAMGUI.py:589 +#: flatcamGUI/FlatCAMGUI.py:584 msgid "Geometry Editor Toolbar" msgstr "Toolbar Editor Geometrii" -#: flatcamGUI/FlatCAMGUI.py:593 +#: flatcamGUI/FlatCAMGUI.py:588 msgid "Gerber Editor Toolbar" msgstr "Toolbar Editor Gerber" -#: flatcamGUI/FlatCAMGUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:592 msgid "Grid Toolbar" msgstr "Toolbar Grid-uri" -#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1837 +#: flatcamGUI/FlatCAMGUI.py:611 flatcamGUI/FlatCAMGUI.py:1835 msgid "Open project" msgstr "Încarcă Proiect" -#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1838 +#: flatcamGUI/FlatCAMGUI.py:612 flatcamGUI/FlatCAMGUI.py:1836 msgid "Save project" msgstr "Salvează Proiect" -#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1841 +#: flatcamGUI/FlatCAMGUI.py:615 flatcamGUI/FlatCAMGUI.py:1839 msgid "New Blank Geometry" msgstr "Geometrie Noua (goală)" -#: flatcamGUI/FlatCAMGUI.py:621 +#: flatcamGUI/FlatCAMGUI.py:616 msgid "New Blank Gerber" msgstr "Gerber Nou (gol)" -#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1842 +#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1840 msgid "New Blank Excellon" msgstr "Excellon nou (gol)" -#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1844 +#: flatcamGUI/FlatCAMGUI.py:619 flatcamGUI/FlatCAMGUI.py:1842 msgid "Editor" msgstr "Editor" -#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1846 +#: flatcamGUI/FlatCAMGUI.py:621 flatcamGUI/FlatCAMGUI.py:1844 msgid "Save Object and close the Editor" msgstr "Salvează Obiectul și inchide Editorul" -#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1850 +#: flatcamGUI/FlatCAMGUI.py:625 flatcamGUI/FlatCAMGUI.py:1848 msgid "&Delete" msgstr "&Șterge" -#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1853 +#: flatcamGUI/FlatCAMGUI.py:628 flatcamGUI/FlatCAMGUI.py:1851 msgid "&Replot" msgstr "&Reafișare" -#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1854 +#: flatcamGUI/FlatCAMGUI.py:629 flatcamGUI/FlatCAMGUI.py:1852 msgid "&Clear plot" msgstr "&Șterge Afișare" -#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1855 +#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1853 msgid "Zoom In" msgstr "Marire" -#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1856 +#: flatcamGUI/FlatCAMGUI.py:631 flatcamGUI/FlatCAMGUI.py:1854 msgid "Zoom Out" msgstr "Micsorare" -#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1595 -#: flatcamGUI/FlatCAMGUI.py:1857 +#: flatcamGUI/FlatCAMGUI.py:632 flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1855 msgid "Zoom Fit" msgstr "Marire și ajustare" -#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1862 +#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1860 msgid "&Command Line" msgstr "&Linie de comanda" -#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1865 +#: flatcamGUI/FlatCAMGUI.py:640 flatcamGUI/FlatCAMGUI.py:1863 msgid "2Sided Tool" msgstr "Unealta 2-fețe" -#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1866 +#: flatcamGUI/FlatCAMGUI.py:641 flatcamGUI/FlatCAMGUI.py:1864 msgid "&Cutout Tool" msgstr "Unealta Decupare" -#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1867 +#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1865 #: flatcamGUI/ObjectUI.py:392 flatcamTools/ToolNonCopperClear.py:285 msgid "NCC Tool" msgstr "Unealta NCC" -#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1871 +#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1869 msgid "Panel Tool" msgstr "Unealta Panel" -#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1872 +#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1870 #: flatcamTools/ToolFilm.py:204 msgid "Film Tool" msgstr "Unealta Film" -#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1874 +#: flatcamGUI/FlatCAMGUI.py:648 flatcamGUI/FlatCAMGUI.py:1872 msgid "SolderPaste Tool" msgstr "Unealta Dispenser SP" -#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1875 +#: flatcamGUI/FlatCAMGUI.py:649 flatcamGUI/FlatCAMGUI.py:1873 #: flatcamTools/ToolSub.py:26 msgid "Substract Tool" msgstr "Unealta Scădere" -#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1880 +#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1878 msgid "Calculators Tool" msgstr "Unealta Calculatoare" -#: flatcamGUI/FlatCAMGUI.py:662 flatcamGUI/FlatCAMGUI.py:676 -#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1884 -#: flatcamGUI/FlatCAMGUI.py:1936 +#: flatcamGUI/FlatCAMGUI.py:657 flatcamGUI/FlatCAMGUI.py:671 +#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:1882 +#: flatcamGUI/FlatCAMGUI.py:1934 msgid "Select" msgstr "Selectează" -#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1885 +#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1883 msgid "Add Drill Hole" msgstr "Adaugă o Găurire" -#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1887 +#: flatcamGUI/FlatCAMGUI.py:660 flatcamGUI/FlatCAMGUI.py:1885 msgid "Add Drill Hole Array" msgstr "Adaugă o arie de Găuriri" -#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1888 +#: flatcamGUI/FlatCAMGUI.py:661 flatcamGUI/FlatCAMGUI.py:1886 msgid "Resize Drill" msgstr "Redimens. Găurire" -#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1891 +#: flatcamGUI/FlatCAMGUI.py:664 flatcamGUI/FlatCAMGUI.py:1889 msgid "Copy Drill" msgstr "Copiază Găurire" -#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1893 +#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1891 msgid "Delete Drill" msgstr "Șterge Găurire" -#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1896 +#: flatcamGUI/FlatCAMGUI.py:668 flatcamGUI/FlatCAMGUI.py:1894 msgid "Move Drill" msgstr "Muta Găurire" -#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1900 +#: flatcamGUI/FlatCAMGUI.py:672 flatcamGUI/FlatCAMGUI.py:1898 msgid "Add Circle" msgstr "Adaugă Cerc" -#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1901 +#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1899 msgid "Add Arc" msgstr "Adaugă Arc" -#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1903 +#: flatcamGUI/FlatCAMGUI.py:675 flatcamGUI/FlatCAMGUI.py:1901 msgid "Add Rectangle" msgstr "Adaugă Patrulater" -#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1906 +#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1904 msgid "Add Path" msgstr "Adaugă Cale" -#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1908 +#: flatcamGUI/FlatCAMGUI.py:679 flatcamGUI/FlatCAMGUI.py:1906 msgid "Add Polygon" msgstr "Adaugă Poligon" -#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1910 +#: flatcamGUI/FlatCAMGUI.py:681 flatcamGUI/FlatCAMGUI.py:1908 msgid "Add Text" msgstr "Adaugă Text" -#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1912 +#: flatcamGUI/FlatCAMGUI.py:682 flatcamGUI/FlatCAMGUI.py:1910 msgid "Add Buffer" msgstr "Adaugă Bufer" -#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1913 +#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1911 msgid "Paint Shape" msgstr "Paint o forma" -#: flatcamGUI/FlatCAMGUI.py:689 flatcamGUI/FlatCAMGUI.py:724 -#: flatcamGUI/FlatCAMGUI.py:1914 flatcamGUI/FlatCAMGUI.py:1950 +#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:719 +#: flatcamGUI/FlatCAMGUI.py:1912 flatcamGUI/FlatCAMGUI.py:1948 msgid "Eraser" msgstr "Stergere Selectivă" -#: flatcamGUI/FlatCAMGUI.py:692 flatcamGUI/FlatCAMGUI.py:1918 +#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1916 msgid "Polygon Union" msgstr "Uniune Poligoane" -#: flatcamGUI/FlatCAMGUI.py:694 flatcamGUI/FlatCAMGUI.py:1920 +#: flatcamGUI/FlatCAMGUI.py:689 flatcamGUI/FlatCAMGUI.py:1918 msgid "Polygon Intersection" msgstr "Intersecţie Poligoane" -#: flatcamGUI/FlatCAMGUI.py:696 flatcamGUI/FlatCAMGUI.py:1922 +#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:1920 msgid "Polygon Subtraction" msgstr "Substracţie Poligoane" -#: flatcamGUI/FlatCAMGUI.py:699 flatcamGUI/FlatCAMGUI.py:1925 +#: flatcamGUI/FlatCAMGUI.py:694 flatcamGUI/FlatCAMGUI.py:1923 msgid "Cut Path" msgstr "Taie Cale" -#: flatcamGUI/FlatCAMGUI.py:700 +#: flatcamGUI/FlatCAMGUI.py:695 msgid "Copy Shape(s)" msgstr "Copiază forme geo." -#: flatcamGUI/FlatCAMGUI.py:703 +#: flatcamGUI/FlatCAMGUI.py:698 msgid "Delete Shape '-'" msgstr "Șterge forme geo." -#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:731 -#: flatcamGUI/FlatCAMGUI.py:1930 flatcamGUI/FlatCAMGUI.py:1957 +#: flatcamGUI/FlatCAMGUI.py:700 flatcamGUI/FlatCAMGUI.py:726 +#: flatcamGUI/FlatCAMGUI.py:1928 flatcamGUI/FlatCAMGUI.py:1955 msgid "Transformations" msgstr "Transformări" -#: flatcamGUI/FlatCAMGUI.py:707 +#: flatcamGUI/FlatCAMGUI.py:702 msgid "Move Objects " msgstr "Muta obiecte" -#: flatcamGUI/FlatCAMGUI.py:711 flatcamGUI/FlatCAMGUI.py:1937 +#: flatcamGUI/FlatCAMGUI.py:706 flatcamGUI/FlatCAMGUI.py:1935 msgid "Add Pad" msgstr "Adaugă Pad" -#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1939 +#: flatcamGUI/FlatCAMGUI.py:708 flatcamGUI/FlatCAMGUI.py:1937 msgid "Add Track" msgstr "Adaugă Traseu" -#: flatcamGUI/FlatCAMGUI.py:714 flatcamGUI/FlatCAMGUI.py:1940 +#: flatcamGUI/FlatCAMGUI.py:709 flatcamGUI/FlatCAMGUI.py:1938 msgid "Add Region" msgstr "Adaugă Regiune" -#: flatcamGUI/FlatCAMGUI.py:716 flatcamGUI/FlatCAMGUI.py:1942 +#: flatcamGUI/FlatCAMGUI.py:711 flatcamGUI/FlatCAMGUI.py:1940 msgid "Poligonize" msgstr "Poligonizare" -#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1944 +#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1942 msgid "SemiDisc" msgstr "SemiDisc" -#: flatcamGUI/FlatCAMGUI.py:719 flatcamGUI/FlatCAMGUI.py:1945 +#: flatcamGUI/FlatCAMGUI.py:714 flatcamGUI/FlatCAMGUI.py:1943 msgid "Disc" msgstr "Disc" -#: flatcamGUI/FlatCAMGUI.py:733 flatcamGUI/FlatCAMGUI.py:1605 -#: flatcamGUI/FlatCAMGUI.py:1625 flatcamGUI/FlatCAMGUI.py:1959 +#: flatcamGUI/FlatCAMGUI.py:728 flatcamGUI/FlatCAMGUI.py:1602 +#: flatcamGUI/FlatCAMGUI.py:1622 flatcamGUI/FlatCAMGUI.py:1957 #: flatcamTools/ToolMove.py:26 msgid "Move" msgstr "Mutare" -#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1965 +#: flatcamGUI/FlatCAMGUI.py:734 flatcamGUI/FlatCAMGUI.py:1963 msgid "Snap to grid" msgstr "Lipire la grid" -#: flatcamGUI/FlatCAMGUI.py:742 flatcamGUI/FlatCAMGUI.py:1968 +#: flatcamGUI/FlatCAMGUI.py:737 flatcamGUI/FlatCAMGUI.py:1966 msgid "Grid X snapping distance" msgstr "Distanta de lipire la grid pe axa X" -#: flatcamGUI/FlatCAMGUI.py:747 flatcamGUI/FlatCAMGUI.py:1973 +#: flatcamGUI/FlatCAMGUI.py:742 flatcamGUI/FlatCAMGUI.py:1971 msgid "Grid Y snapping distance" msgstr "Distanta de lipire la grid pe axa Y" -#: flatcamGUI/FlatCAMGUI.py:753 flatcamGUI/FlatCAMGUI.py:1979 +#: flatcamGUI/FlatCAMGUI.py:748 flatcamGUI/FlatCAMGUI.py:1977 msgid "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." @@ -4553,64 +4578,64 @@ msgstr "" "când este activ, valoarea de pe Grid_X\n" "este copiata și in Grid_Y" -#: flatcamGUI/FlatCAMGUI.py:759 flatcamGUI/FlatCAMGUI.py:1985 +#: flatcamGUI/FlatCAMGUI.py:754 flatcamGUI/FlatCAMGUI.py:1983 msgid "Snap to corner" msgstr "Lipire la colt" -#: flatcamGUI/FlatCAMGUI.py:763 flatcamGUI/FlatCAMGUI.py:1989 -#: flatcamGUI/FlatCAMGUI.py:3346 +#: flatcamGUI/FlatCAMGUI.py:758 flatcamGUI/FlatCAMGUI.py:1987 +#: flatcamGUI/FlatCAMGUI.py:3344 msgid "Max. magnet distance" msgstr "Distanta magnetica maxima" -#: flatcamGUI/FlatCAMGUI.py:791 flatcamGUI/FlatCAMGUI.py:1589 +#: flatcamGUI/FlatCAMGUI.py:786 flatcamGUI/FlatCAMGUI.py:1586 msgid "Project" msgstr "Proiect" -#: flatcamGUI/FlatCAMGUI.py:801 +#: flatcamGUI/FlatCAMGUI.py:796 msgid "Selected" msgstr "Selectat" -#: flatcamGUI/FlatCAMGUI.py:820 flatcamGUI/FlatCAMGUI.py:828 +#: flatcamGUI/FlatCAMGUI.py:815 flatcamGUI/FlatCAMGUI.py:823 msgid "Plot Area" msgstr "Arie Afișare" -#: flatcamGUI/FlatCAMGUI.py:852 +#: flatcamGUI/FlatCAMGUI.py:847 msgid "General" msgstr "General" -#: flatcamGUI/FlatCAMGUI.py:861 +#: flatcamGUI/FlatCAMGUI.py:856 msgid "APP. DEFAULTS" msgstr "Default for App" -#: flatcamGUI/FlatCAMGUI.py:862 +#: flatcamGUI/FlatCAMGUI.py:857 msgid "PROJ. OPTIONS " msgstr "Opțiuni Proiect" -#: flatcamGUI/FlatCAMGUI.py:873 +#: flatcamGUI/FlatCAMGUI.py:868 msgid "GERBER" msgstr "GERBER" -#: flatcamGUI/FlatCAMGUI.py:882 +#: flatcamGUI/FlatCAMGUI.py:877 msgid "EXCELLON" msgstr "EXCELLON" -#: flatcamGUI/FlatCAMGUI.py:891 +#: flatcamGUI/FlatCAMGUI.py:886 msgid "GEOMETRY" msgstr "GEOMETRIE" -#: flatcamGUI/FlatCAMGUI.py:901 +#: flatcamGUI/FlatCAMGUI.py:896 msgid "CNC-JOB" msgstr "CNCJob" -#: flatcamGUI/FlatCAMGUI.py:910 +#: flatcamGUI/FlatCAMGUI.py:905 msgid "TOOLS" msgstr "Unelte" -#: flatcamGUI/FlatCAMGUI.py:927 +#: flatcamGUI/FlatCAMGUI.py:922 msgid "Import Preferences" msgstr "Importa Preferințele" -#: flatcamGUI/FlatCAMGUI.py:930 +#: flatcamGUI/FlatCAMGUI.py:925 msgid "" "Import a full set of FlatCAM settings from a file\n" "previously saved on HDD.\n" @@ -4624,11 +4649,11 @@ msgstr "" "FlatCAM salvează automat un fişier numit 'factory_defaults'\n" "la prima pornire. Nu șterge acel fişier." -#: flatcamGUI/FlatCAMGUI.py:937 +#: flatcamGUI/FlatCAMGUI.py:932 msgid "Export Preferences" msgstr "Exporta Preferințele" -#: flatcamGUI/FlatCAMGUI.py:940 +#: flatcamGUI/FlatCAMGUI.py:935 msgid "" "Export a full set of FlatCAM settings in a file\n" "that is saved on HDD." @@ -4636,19 +4661,19 @@ msgstr "" "Exporta un set complet de setări ale FlatCAM\n" "intr-un fişier care se salvează pe HDD." -#: flatcamGUI/FlatCAMGUI.py:945 +#: flatcamGUI/FlatCAMGUI.py:940 msgid "Open Pref Folder" msgstr "Deschide Pref Dir" -#: flatcamGUI/FlatCAMGUI.py:948 +#: flatcamGUI/FlatCAMGUI.py:943 msgid "Open the folder where FlatCAM save the preferences files." msgstr "Deschide directorul unde FlatCAM salvează fişierele cu setări." -#: flatcamGUI/FlatCAMGUI.py:956 +#: flatcamGUI/FlatCAMGUI.py:951 msgid "Save Preferences" msgstr "Salvează Pref" -#: flatcamGUI/FlatCAMGUI.py:959 +#: flatcamGUI/FlatCAMGUI.py:954 msgid "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." @@ -4656,7 +4681,7 @@ msgstr "" "Salvează setările curente in fişierul numit: 'current_defaults'\n" "fişier care este cel unde se salvează preferințele cu care se va lucra." -#: flatcamGUI/FlatCAMGUI.py:985 +#: flatcamGUI/FlatCAMGUI.py:980 msgid "" "General Shortcut list
\n" " \n" " \n" " \n" -" \n" " \n" " \n" -" \n" " \n" @@ -5222,7 +5247,7 @@ msgstr "" " \n" " " -#: flatcamGUI/FlatCAMGUI.py:1270 +#: flatcamGUI/FlatCAMGUI.py:1265 msgid "" "Editor Shortcut list
\n" "
\n" @@ -5851,99 +5876,99 @@ msgstr "" "
ALT+2 Dezactivează toate afisarile/td>\n" +"  Dezactivează toate afişările/td>\n" "
ALT+3 Dezactivează toate afisarile neselectate Dezactivează toate afişările neselectate\n" "
\n" " " -#: flatcamGUI/FlatCAMGUI.py:1582 -msgid "Disable" -msgstr "Dezactivează" +#: flatcamGUI/FlatCAMGUI.py:1578 +msgid "Toggle Panel" +msgstr "Comută Panel" -#: flatcamGUI/FlatCAMGUI.py:1584 +#: flatcamGUI/FlatCAMGUI.py:1581 msgid "New" msgstr "Nou" -#: flatcamGUI/FlatCAMGUI.py:1585 +#: flatcamGUI/FlatCAMGUI.py:1582 msgid "Geometry" msgstr "Geometrie" -#: flatcamGUI/FlatCAMGUI.py:1587 +#: flatcamGUI/FlatCAMGUI.py:1584 msgid "Excellon" msgstr "Excellon" -#: flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1589 msgid "Grids" msgstr "Grid-uri" -#: flatcamGUI/FlatCAMGUI.py:1594 +#: flatcamGUI/FlatCAMGUI.py:1591 msgid "View" msgstr "Vizualizare" -#: flatcamGUI/FlatCAMGUI.py:1596 +#: flatcamGUI/FlatCAMGUI.py:1593 msgid "Clear Plot" msgstr "Șterge Afișare" -#: flatcamGUI/FlatCAMGUI.py:1597 +#: flatcamGUI/FlatCAMGUI.py:1594 msgid "Replot" msgstr "Reafișare" -#: flatcamGUI/FlatCAMGUI.py:1600 +#: flatcamGUI/FlatCAMGUI.py:1597 msgid "Geo Editor" msgstr "Editor Geometrii" -#: flatcamGUI/FlatCAMGUI.py:1601 +#: flatcamGUI/FlatCAMGUI.py:1598 msgid "Line" msgstr "Linie" -#: flatcamGUI/FlatCAMGUI.py:1602 +#: flatcamGUI/FlatCAMGUI.py:1599 msgid "Rectangle" msgstr "Patrulater" -#: flatcamGUI/FlatCAMGUI.py:1603 +#: flatcamGUI/FlatCAMGUI.py:1600 msgid "Cut" msgstr "Tăiere" -#: flatcamGUI/FlatCAMGUI.py:1608 +#: flatcamGUI/FlatCAMGUI.py:1605 msgid "Pad" msgstr "Pad" -#: flatcamGUI/FlatCAMGUI.py:1609 +#: flatcamGUI/FlatCAMGUI.py:1606 msgid "Pad Array" msgstr "Arie de paduri" -#: flatcamGUI/FlatCAMGUI.py:1610 +#: flatcamGUI/FlatCAMGUI.py:1607 msgid "Track" msgstr "Traseu" -#: flatcamGUI/FlatCAMGUI.py:1611 +#: flatcamGUI/FlatCAMGUI.py:1608 msgid "Region" msgstr "Regiune" -#: flatcamGUI/FlatCAMGUI.py:1613 +#: flatcamGUI/FlatCAMGUI.py:1610 msgid "Exc Editor" msgstr "Editor EXC." -#: flatcamGUI/FlatCAMGUI.py:1614 +#: flatcamGUI/FlatCAMGUI.py:1611 msgid "Add Drill" msgstr "Adaugă găurire" -#: flatcamGUI/FlatCAMGUI.py:1646 +#: flatcamGUI/FlatCAMGUI.py:1643 msgid "Print Preview" msgstr "Preview tiparire" -#: flatcamGUI/FlatCAMGUI.py:1647 +#: flatcamGUI/FlatCAMGUI.py:1644 msgid "Print Code" msgstr "Tipareste Cod" -#: flatcamGUI/FlatCAMGUI.py:1648 +#: flatcamGUI/FlatCAMGUI.py:1645 msgid "Find in Code" msgstr "Cauta in Cod" -#: flatcamGUI/FlatCAMGUI.py:1653 +#: flatcamGUI/FlatCAMGUI.py:1650 msgid "Replace With" msgstr "Inlocuieste cu" -#: flatcamGUI/FlatCAMGUI.py:1657 +#: flatcamGUI/FlatCAMGUI.py:1654 msgid "All" msgstr "Toate" -#: flatcamGUI/FlatCAMGUI.py:1659 +#: flatcamGUI/FlatCAMGUI.py:1656 msgid "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." @@ -5952,15 +5977,15 @@ msgstr "" "'Cauta'\n" "cu textul din casuta 'Inlocuieste'" -#: flatcamGUI/FlatCAMGUI.py:1662 +#: flatcamGUI/FlatCAMGUI.py:1659 msgid "Open Code" msgstr "Deschide Cod" -#: flatcamGUI/FlatCAMGUI.py:1663 +#: flatcamGUI/FlatCAMGUI.py:1660 msgid "Save Code" msgstr "Salvează Cod" -#: flatcamGUI/FlatCAMGUI.py:1698 +#: flatcamGUI/FlatCAMGUI.py:1695 msgid "" "Relative neasurement.\n" "Reference is last click position" @@ -5968,7 +5993,7 @@ msgstr "" "Masuratoare relativa.\n" "Referința este poziţia ultimului click pe canvas." -#: flatcamGUI/FlatCAMGUI.py:1704 +#: flatcamGUI/FlatCAMGUI.py:1701 msgid "" "Absolute neasurement.\n" "Reference is (X=0, Y= 0) position" @@ -5976,23 +6001,23 @@ msgstr "" "Masuratoare absoluta.\n" "Referința este originea (0, 0)." -#: flatcamGUI/FlatCAMGUI.py:1899 +#: flatcamGUI/FlatCAMGUI.py:1897 msgid "Select 'Esc'" msgstr "Select" -#: flatcamGUI/FlatCAMGUI.py:1926 +#: flatcamGUI/FlatCAMGUI.py:1924 msgid "Copy Objects" msgstr "Copiază Obiecte" -#: flatcamGUI/FlatCAMGUI.py:1928 +#: flatcamGUI/FlatCAMGUI.py:1926 msgid "Delete Shape" msgstr "Șterge forme geo" -#: flatcamGUI/FlatCAMGUI.py:1933 +#: flatcamGUI/FlatCAMGUI.py:1931 msgid "Move Objects" msgstr "Muta Obiecte" -#: flatcamGUI/FlatCAMGUI.py:2365 +#: flatcamGUI/FlatCAMGUI.py:2360 msgid "" "Please first select a geometry item to be cutted\n" "then select the geometry item that will be cutted\n" @@ -6003,17 +6028,17 @@ msgstr "" "apoi selectează forma geo. taietoare. La final apasa tasta ~X~ sau\n" "butonul corespunzator din Toolbar." -#: flatcamGUI/FlatCAMGUI.py:2372 flatcamGUI/FlatCAMGUI.py:2509 -#: flatcamGUI/FlatCAMGUI.py:2568 flatcamGUI/FlatCAMGUI.py:2588 +#: flatcamGUI/FlatCAMGUI.py:2367 flatcamGUI/FlatCAMGUI.py:2504 +#: flatcamGUI/FlatCAMGUI.py:2563 flatcamGUI/FlatCAMGUI.py:2583 msgid "Warning" msgstr "Atenţie" -#: flatcamGUI/FlatCAMGUI.py:2439 flatcamGUI/FlatCAMGUI.py:2638 -#: flatcamGUI/FlatCAMGUI.py:2849 +#: flatcamGUI/FlatCAMGUI.py:2434 flatcamGUI/FlatCAMGUI.py:2633 +#: flatcamGUI/FlatCAMGUI.py:2844 msgid "[WARNING_NOTCL] Cancelled." msgstr "[WARNING_NOTCL] Anulat." -#: flatcamGUI/FlatCAMGUI.py:2504 +#: flatcamGUI/FlatCAMGUI.py:2499 msgid "" "Please select geometry items \n" "on which to perform Intersection Tool." @@ -6021,7 +6046,7 @@ msgstr "" "Selectează forma geometrică asupra careia să se\n" "aplice Unealta Intersecţie." -#: flatcamGUI/FlatCAMGUI.py:2563 +#: flatcamGUI/FlatCAMGUI.py:2558 msgid "" "Please select geometry items \n" "on which to perform Substraction Tool." @@ -6029,7 +6054,7 @@ msgstr "" "Selectează forma geometrică asupra careia să se\n" "aplice Unealta Substracţie." -#: flatcamGUI/FlatCAMGUI.py:2583 +#: flatcamGUI/FlatCAMGUI.py:2578 msgid "" "Please select geometry items \n" "on which to perform union." @@ -6037,55 +6062,55 @@ msgstr "" "Selectează forma geometrică asupra careia să se\n" "aplice Unealta Uniune." -#: flatcamGUI/FlatCAMGUI.py:2654 flatcamGUI/FlatCAMGUI.py:2866 +#: flatcamGUI/FlatCAMGUI.py:2649 flatcamGUI/FlatCAMGUI.py:2861 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to delete." msgstr "[WARNING_NOTCL] Anulat. Nimic nu este selectat pentru ștergere." -#: flatcamGUI/FlatCAMGUI.py:2738 flatcamGUI/FlatCAMGUI.py:2933 +#: flatcamGUI/FlatCAMGUI.py:2733 flatcamGUI/FlatCAMGUI.py:2928 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to copy." msgstr "[WARNING_NOTCL] Anulat. Nimic nu este selectat pentru copiere." -#: flatcamGUI/FlatCAMGUI.py:2784 flatcamGUI/FlatCAMGUI.py:2979 +#: flatcamGUI/FlatCAMGUI.py:2779 flatcamGUI/FlatCAMGUI.py:2974 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to move." msgstr "[WARNING_NOTCL] Anulat. Nimic nu este selectat pentru mutare." -#: flatcamGUI/FlatCAMGUI.py:2993 +#: flatcamGUI/FlatCAMGUI.py:2988 msgid "New Tool ..." -msgstr "O noua Unealta ..." +msgstr "O noua Unealtă ..." -#: flatcamGUI/FlatCAMGUI.py:2994 +#: flatcamGUI/FlatCAMGUI.py:2989 msgid "Enter a Tool Diameter:" -msgstr "Introdu un Diametru de Unealta:" +msgstr "Introdu un Diametru de Unealtă:" -#: flatcamGUI/FlatCAMGUI.py:3036 +#: flatcamGUI/FlatCAMGUI.py:3032 msgid "Measurement Tool exit..." msgstr "Măsurătoarea s-a terminat ..." -#: flatcamGUI/FlatCAMGUI.py:3331 +#: flatcamGUI/FlatCAMGUI.py:3329 msgid "Grid X value:" msgstr "Valoarea Grid_X:" -#: flatcamGUI/FlatCAMGUI.py:3333 +#: flatcamGUI/FlatCAMGUI.py:3331 msgid "This is the Grid snap value on X axis." msgstr "Aceasta este valoare pentru lipire pe Grid pe axa X." -#: flatcamGUI/FlatCAMGUI.py:3338 +#: flatcamGUI/FlatCAMGUI.py:3336 msgid "Grid Y value:" msgstr "Valoarea Grid_Y:" -#: flatcamGUI/FlatCAMGUI.py:3340 +#: flatcamGUI/FlatCAMGUI.py:3338 msgid "This is the Grid snap value on Y axis." msgstr "Aceasta este valoare pentru lipire pe Grid pe axa Y." -#: flatcamGUI/FlatCAMGUI.py:3345 +#: flatcamGUI/FlatCAMGUI.py:3343 msgid "Snap Max:" msgstr "Lipire Max:" -#: flatcamGUI/FlatCAMGUI.py:3350 +#: flatcamGUI/FlatCAMGUI.py:3348 msgid "Workspace:" msgstr "Spatiu de lucru:" -#: flatcamGUI/FlatCAMGUI.py:3352 +#: flatcamGUI/FlatCAMGUI.py:3350 msgid "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." @@ -6093,11 +6118,11 @@ msgstr "" "Desenează un patrulater care delimitează o asuprafata de lucru.\n" "Scopul este de a ilustra limitele suprafetei noastre de lucru." -#: flatcamGUI/FlatCAMGUI.py:3355 +#: flatcamGUI/FlatCAMGUI.py:3353 msgid "Wk. format:" msgstr "Format SL:" -#: flatcamGUI/FlatCAMGUI.py:3357 +#: flatcamGUI/FlatCAMGUI.py:3355 msgid "" "Select the type of rectangle to be used on canvas,\n" "as valid workspace." @@ -6105,11 +6130,11 @@ msgstr "" "Selectează tipul de patrulater care va fi desenat pe canvas,\n" "pentru a delimita suprafata de lucru disponibila (SL)." -#: flatcamGUI/FlatCAMGUI.py:3370 +#: flatcamGUI/FlatCAMGUI.py:3368 msgid "Plot Fill:" msgstr "Culoare Afișare:" -#: flatcamGUI/FlatCAMGUI.py:3372 +#: flatcamGUI/FlatCAMGUI.py:3370 msgid "" "Set the fill color for plotted objects.\n" "First 6 digits are the color and the last 2\n" @@ -6119,28 +6144,28 @@ msgstr "" "Primii 6 digiti sunt culoarea efectiva și ultimii\n" "doi sunt pentru nivelul de transparenţă (alfa)." -#: flatcamGUI/FlatCAMGUI.py:3386 flatcamGUI/FlatCAMGUI.py:3436 -#: flatcamGUI/FlatCAMGUI.py:3486 +#: flatcamGUI/FlatCAMGUI.py:3384 flatcamGUI/FlatCAMGUI.py:3434 +#: flatcamGUI/FlatCAMGUI.py:3484 msgid "Alpha Level:" msgstr "Nivel Alfa:" -#: flatcamGUI/FlatCAMGUI.py:3388 +#: flatcamGUI/FlatCAMGUI.py:3386 msgid "Set the fill transparency for plotted objects." msgstr "Setează nivelul de transparenţa pentru obiectele afisate." -#: flatcamGUI/FlatCAMGUI.py:3405 +#: flatcamGUI/FlatCAMGUI.py:3403 msgid "Plot Line:" msgstr "Culoare contur:" -#: flatcamGUI/FlatCAMGUI.py:3407 +#: flatcamGUI/FlatCAMGUI.py:3405 msgid "Set the line color for plotted objects." msgstr "Setează culoarea conturului." -#: flatcamGUI/FlatCAMGUI.py:3419 +#: flatcamGUI/FlatCAMGUI.py:3417 msgid "Sel. Fill:" msgstr "Culoare Selecţie:" -#: flatcamGUI/FlatCAMGUI.py:3421 +#: flatcamGUI/FlatCAMGUI.py:3419 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from left to right.\n" @@ -6152,27 +6177,27 @@ msgstr "" "Primii 6 digiti sunt culoarea efectiva și ultimii\n" "doi sunt pentru nivelul de transparenţă (alfa)." -#: flatcamGUI/FlatCAMGUI.py:3438 +#: flatcamGUI/FlatCAMGUI.py:3436 msgid "Set the fill transparency for the 'left to right' selection box." msgstr "" "Setează transparenţa formei de selecţie când selectia\n" "se face de la stânga la dreapta." -#: flatcamGUI/FlatCAMGUI.py:3455 +#: flatcamGUI/FlatCAMGUI.py:3453 msgid "Sel. Line:" msgstr "Contur Selecţie:" -#: flatcamGUI/FlatCAMGUI.py:3457 +#: flatcamGUI/FlatCAMGUI.py:3455 msgid "Set the line color for the 'left to right' selection box." msgstr "" "Setează transparenţa conturului formei de selecţie\n" "când selectia se face de la stânga la dreapta." -#: flatcamGUI/FlatCAMGUI.py:3469 +#: flatcamGUI/FlatCAMGUI.py:3467 msgid "Sel2. Fill:" msgstr "Culoare Selecţie 2:" -#: flatcamGUI/FlatCAMGUI.py:3471 +#: flatcamGUI/FlatCAMGUI.py:3469 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from right to left.\n" @@ -6184,53 +6209,53 @@ msgstr "" "Primii 6 digiti sunt culoarea efectiva și ultimii\n" "doi sunt pentru nivelul de transparenţă (alfa)." -#: flatcamGUI/FlatCAMGUI.py:3488 +#: flatcamGUI/FlatCAMGUI.py:3486 msgid "Set the fill transparency for selection 'right to left' box." msgstr "" "Setează transparenţa formei de selecţie când selectia\n" "se face de la dreapta la stânga." -#: flatcamGUI/FlatCAMGUI.py:3505 +#: flatcamGUI/FlatCAMGUI.py:3503 msgid "Sel2. Line:" msgstr "Contur Selecţie 2:" -#: flatcamGUI/FlatCAMGUI.py:3507 +#: flatcamGUI/FlatCAMGUI.py:3505 msgid "Set the line color for the 'right to left' selection box." msgstr "" "Setează transparenţa conturului formei de selecţie\n" "când selectia se face de la dreapta la stânga." -#: flatcamGUI/FlatCAMGUI.py:3519 +#: flatcamGUI/FlatCAMGUI.py:3517 msgid "Editor Draw:" msgstr "Desen Editor:" -#: flatcamGUI/FlatCAMGUI.py:3521 +#: flatcamGUI/FlatCAMGUI.py:3519 msgid "Set the color for the shape." msgstr "Setează culoarea pentru forma geometrică din Editor." -#: flatcamGUI/FlatCAMGUI.py:3533 +#: flatcamGUI/FlatCAMGUI.py:3531 msgid "Editor Draw Sel.:" msgstr "Sel. Desen Editor:" -#: flatcamGUI/FlatCAMGUI.py:3535 +#: flatcamGUI/FlatCAMGUI.py:3533 msgid "Set the color of the shape when selected." msgstr "" "Setează culoarea formei geometrice in Editor\n" "când se face o selecţie." -#: flatcamGUI/FlatCAMGUI.py:3547 +#: flatcamGUI/FlatCAMGUI.py:3545 msgid "Project Items:" msgstr "Elemente Proiect:" -#: flatcamGUI/FlatCAMGUI.py:3549 +#: flatcamGUI/FlatCAMGUI.py:3547 msgid "Set the color of the items in Project Tab Tree." msgstr "Setează culoarea elementelor din tab-ul Proiect." -#: flatcamGUI/FlatCAMGUI.py:3560 +#: flatcamGUI/FlatCAMGUI.py:3558 msgid "Proj. Dis. Items:" msgstr "Elem. proj. dez." -#: flatcamGUI/FlatCAMGUI.py:3562 +#: flatcamGUI/FlatCAMGUI.py:3560 msgid "" "Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled." @@ -6238,15 +6263,15 @@ msgstr "" "Setează culoarea elementelor din tab-ul Proiect\n" "in cazul in care elementele sunt dezactivate." -#: flatcamGUI/FlatCAMGUI.py:3613 +#: flatcamGUI/FlatCAMGUI.py:3611 msgid "GUI Settings" msgstr "Setări GUI" -#: flatcamGUI/FlatCAMGUI.py:3620 +#: flatcamGUI/FlatCAMGUI.py:3617 msgid "Layout:" msgstr "Amplasare:" -#: flatcamGUI/FlatCAMGUI.py:3622 +#: flatcamGUI/FlatCAMGUI.py:3619 msgid "" "Select an layout for FlatCAM.\n" "It is applied immediately." @@ -6254,11 +6279,11 @@ msgstr "" "Selectează un stil de amplasare a elementelor GUI in FlatCAM.\n" "Se aplica imediat." -#: flatcamGUI/FlatCAMGUI.py:3638 +#: flatcamGUI/FlatCAMGUI.py:3635 msgid "Style:" msgstr "Stil:" -#: flatcamGUI/FlatCAMGUI.py:3640 +#: flatcamGUI/FlatCAMGUI.py:3637 msgid "" "Select an style for FlatCAM.\n" "It will be applied at the next app start." @@ -6266,11 +6291,11 @@ msgstr "" "Selectează un stil pentru FlatCAM.\n" "Se va aplica la urmatoarea pornire a aplicaţiei." -#: flatcamGUI/FlatCAMGUI.py:3651 +#: flatcamGUI/FlatCAMGUI.py:3648 msgid "HDPI Support:" msgstr "Suport H-DPI:" -#: flatcamGUI/FlatCAMGUI.py:3653 +#: flatcamGUI/FlatCAMGUI.py:3650 msgid "" "Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start." @@ -6279,11 +6304,11 @@ msgstr "" "Util pentru monitoarele 4k.\n" "Va fi aplicată la următoarea pornire a aplicaţiei." -#: flatcamGUI/FlatCAMGUI.py:3666 +#: flatcamGUI/FlatCAMGUI.py:3663 msgid "Clear GUI Settings:" msgstr "Șterge setările GUI:" -#: flatcamGUI/FlatCAMGUI.py:3668 +#: flatcamGUI/FlatCAMGUI.py:3665 msgid "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." @@ -6291,15 +6316,15 @@ msgstr "" "Șterge setările GUI pentru FlatCAM,\n" "cum ar fi: amplasare, stare UI, suport HDPI sau traducerea." -#: flatcamGUI/FlatCAMGUI.py:3671 +#: flatcamGUI/FlatCAMGUI.py:3668 msgid "Clear" msgstr "Șterge" -#: flatcamGUI/FlatCAMGUI.py:3675 +#: flatcamGUI/FlatCAMGUI.py:3672 msgid "Hover Shape:" msgstr "Forma Hover:" -#: flatcamGUI/FlatCAMGUI.py:3677 +#: flatcamGUI/FlatCAMGUI.py:3674 msgid "" "Enable display of a hover shape for FlatCAM objects.\n" "It is displayed whenever the mouse cursor is hovering\n" @@ -6309,11 +6334,11 @@ msgstr "" "in canvas-ul FlatCAM. Forma este afișată doar daca obiectul \n" "nu este selectat." -#: flatcamGUI/FlatCAMGUI.py:3684 +#: flatcamGUI/FlatCAMGUI.py:3681 msgid "Sel. Shape:" msgstr "Forma Sel.:" -#: flatcamGUI/FlatCAMGUI.py:3686 +#: flatcamGUI/FlatCAMGUI.py:3683 msgid "" "Enable the display of a selection shape for FlatCAM objects.\n" "It is displayed whenever the mouse selects an object\n" @@ -6325,23 +6350,23 @@ msgstr "" "pe canvas-ul FlatCAM fie facând click pe obiect fie prin\n" "crearea unei ferestre de selectie." -#: flatcamGUI/FlatCAMGUI.py:3728 +#: flatcamGUI/FlatCAMGUI.py:3725 msgid "Are you sure you want to delete the GUI Settings? \n" msgstr "Esti sigur că dorești să ștergi setările GUI?\n" -#: flatcamGUI/FlatCAMGUI.py:3731 +#: flatcamGUI/FlatCAMGUI.py:3728 msgid "Clear GUI Settings" msgstr "Șterge Setările GUI" -#: flatcamGUI/FlatCAMGUI.py:3752 +#: flatcamGUI/FlatCAMGUI.py:3749 msgid "App Preferences" msgstr "Preferințele Aplicaţie" -#: flatcamGUI/FlatCAMGUI.py:3758 +#: flatcamGUI/FlatCAMGUI.py:3755 msgid "Units:" msgstr "Unitati:" -#: flatcamGUI/FlatCAMGUI.py:3759 +#: flatcamGUI/FlatCAMGUI.py:3756 msgid "" "The default value for FlatCAM units.\n" "Whatever is selected here is set every time\n" @@ -6350,11 +6375,11 @@ msgstr "" "Unitatea de masura pt FlatCAM.\n" "Este setată la fiecare pornire a programului." -#: flatcamGUI/FlatCAMGUI.py:3766 +#: flatcamGUI/FlatCAMGUI.py:3763 msgid "APP. LEVEL:" msgstr "Nivel aplic.:" -#: flatcamGUI/FlatCAMGUI.py:3767 +#: flatcamGUI/FlatCAMGUI.py:3764 msgid "" "Choose the default level of usage for FlatCAM.\n" "BASIC level -> reduced functionality, best for beginner's.\n" @@ -6370,19 +6395,19 @@ msgstr "" "Alegerea efectuata aici va influenta ce aparamtri sunt disponibili\n" "in Tab-ul SELECTAT dar și in alte parti ale FlatCAM." -#: flatcamGUI/FlatCAMGUI.py:3776 +#: flatcamGUI/FlatCAMGUI.py:3773 msgid "Languages:" msgstr "Traduceri:" -#: flatcamGUI/FlatCAMGUI.py:3777 +#: flatcamGUI/FlatCAMGUI.py:3774 msgid "Set the language used throughout FlatCAM." msgstr "Setează limba folosita pentru textele din FlatCAM." -#: flatcamGUI/FlatCAMGUI.py:3780 +#: flatcamGUI/FlatCAMGUI.py:3777 msgid "Apply Language" msgstr "Aplica Traducere" -#: flatcamGUI/FlatCAMGUI.py:3781 +#: flatcamGUI/FlatCAMGUI.py:3778 msgid "" "Set the language used throughout FlatCAM.\n" "The app will restart after click.Windows: When FlatCAM is installed in " @@ -6398,11 +6423,11 @@ msgstr "" "Program Files este posibil ca aplicatia să nu se restarteze\n" "după click datorită unor setări de securitate ale Windows. " -#: flatcamGUI/FlatCAMGUI.py:3790 +#: flatcamGUI/FlatCAMGUI.py:3787 msgid "Shell at StartUp:" msgstr "Shell la pornire:" -#: flatcamGUI/FlatCAMGUI.py:3792 flatcamGUI/FlatCAMGUI.py:3797 +#: flatcamGUI/FlatCAMGUI.py:3789 flatcamGUI/FlatCAMGUI.py:3794 msgid "" "Check this box if you want the shell to\n" "start automatically at startup." @@ -6411,11 +6436,11 @@ msgstr "" "automata a ferestrei Shell (linia de comanda)\n" "la initializarea aplicaţiei." -#: flatcamGUI/FlatCAMGUI.py:3802 +#: flatcamGUI/FlatCAMGUI.py:3799 msgid "Version Check:" msgstr "Verificare versiune:" -#: flatcamGUI/FlatCAMGUI.py:3804 flatcamGUI/FlatCAMGUI.py:3809 +#: flatcamGUI/FlatCAMGUI.py:3801 flatcamGUI/FlatCAMGUI.py:3806 msgid "" "Check this box if you want to check\n" "for a new version automatically at startup." @@ -6424,11 +6449,11 @@ msgstr "" "daca exista o versiune mai noua,\n" "la pornirea aplicaţiei." -#: flatcamGUI/FlatCAMGUI.py:3814 +#: flatcamGUI/FlatCAMGUI.py:3811 msgid "Send Stats:" msgstr "Statistici:" -#: flatcamGUI/FlatCAMGUI.py:3816 flatcamGUI/FlatCAMGUI.py:3821 +#: flatcamGUI/FlatCAMGUI.py:3813 flatcamGUI/FlatCAMGUI.py:3818 msgid "" "Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM." @@ -6438,11 +6463,11 @@ msgstr "" "aplicaţia. In acest fel dezvoltatorii vor sti unde să se focalizeze\n" "in crearea de inbunatatiri." -#: flatcamGUI/FlatCAMGUI.py:3828 +#: flatcamGUI/FlatCAMGUI.py:3825 msgid "Pan Button:" msgstr "Buton Pan (mișcare):" -#: flatcamGUI/FlatCAMGUI.py:3829 +#: flatcamGUI/FlatCAMGUI.py:3826 msgid "" "Select the mouse button to use for panning:\n" "- MMB --> Middle Mouse Button\n" @@ -6452,19 +6477,19 @@ msgstr "" "- MMB - butonul din mijloc al mouse-ului\n" "- RMB - butonul in dreapta al mouse-ului." -#: flatcamGUI/FlatCAMGUI.py:3836 +#: flatcamGUI/FlatCAMGUI.py:3833 msgid "Multiple Sel:" msgstr "Sel. multipla:" -#: flatcamGUI/FlatCAMGUI.py:3837 +#: flatcamGUI/FlatCAMGUI.py:3834 msgid "Select the key used for multiple selection." msgstr "Selectează tasta folosita pentru selectia multipla." -#: flatcamGUI/FlatCAMGUI.py:3842 +#: flatcamGUI/FlatCAMGUI.py:3839 msgid "Project at StartUp:" msgstr "Proiect la pornire:" -#: flatcamGUI/FlatCAMGUI.py:3844 flatcamGUI/FlatCAMGUI.py:3849 +#: flatcamGUI/FlatCAMGUI.py:3841 flatcamGUI/FlatCAMGUI.py:3846 msgid "" "Check this box if you want the project/selected/tool tab area to\n" "to be shown automatically at startup." @@ -6472,11 +6497,11 @@ msgstr "" "Bifează aici daca dorești ca zona Notebook să fie\n" "afișată automat la pornire." -#: flatcamGUI/FlatCAMGUI.py:3854 +#: flatcamGUI/FlatCAMGUI.py:3851 msgid "Project AutoHide:" msgstr "Ascundere Proiect:" -#: flatcamGUI/FlatCAMGUI.py:3856 flatcamGUI/FlatCAMGUI.py:3862 +#: flatcamGUI/FlatCAMGUI.py:3853 flatcamGUI/FlatCAMGUI.py:3859 msgid "" "Check this box if you want the project/selected/tool tab area to\n" "hide automatically when there are no objects loaded and\n" @@ -6486,11 +6511,11 @@ msgstr "" "când nu sunt obiecte incărcate și să fie afișată automat\n" "când un obiect nou este creat/incărcat." -#: flatcamGUI/FlatCAMGUI.py:3868 +#: flatcamGUI/FlatCAMGUI.py:3865 msgid "Enable ToolTips:" msgstr "Activează ToolTip-uri:" -#: flatcamGUI/FlatCAMGUI.py:3870 flatcamGUI/FlatCAMGUI.py:3875 +#: flatcamGUI/FlatCAMGUI.py:3867 flatcamGUI/FlatCAMGUI.py:3872 msgid "" "Check this box if you want to have toolTips displayed\n" "when hovering with mouse over items throughout the App." @@ -6498,11 +6523,11 @@ msgstr "" "Bifează daca dorești ca să fie afisate texte explicative când se\n" "tine mouse-ul deasupra diverselor texte din FlatCAM." -#: flatcamGUI/FlatCAMGUI.py:3878 +#: flatcamGUI/FlatCAMGUI.py:3875 msgid "Workers number:" msgstr "Număr de worker's:" -#: flatcamGUI/FlatCAMGUI.py:3880 flatcamGUI/FlatCAMGUI.py:3889 +#: flatcamGUI/FlatCAMGUI.py:3877 flatcamGUI/FlatCAMGUI.py:3886 msgid "" "The number of Qthreads made available to the App.\n" "A bigger number may finish the jobs more quickly but\n" @@ -6518,7 +6543,7 @@ msgstr "" "Valoarea standard este 2.\n" "Dupa schimbarea valoarii, se va aplica la următoarea pornire a aplicatiei." -#: flatcamGUI/FlatCAMGUI.py:3901 flatcamGUI/FlatCAMGUI.py:3910 +#: flatcamGUI/FlatCAMGUI.py:3898 flatcamGUI/FlatCAMGUI.py:3907 msgid "" "This value can counter the effect of the Circle Steps\n" "parameter. Default value is 0.01.\n" @@ -6534,11 +6559,11 @@ msgstr "" "O valoare mai mare va oferi mai multă performantă dar in\n" "defavoarea nievelului de detalii." -#: flatcamGUI/FlatCAMGUI.py:3946 +#: flatcamGUI/FlatCAMGUI.py:3943 msgid "\"Open\" behavior" msgstr "Stil \"Încarcare\"" -#: flatcamGUI/FlatCAMGUI.py:3948 +#: flatcamGUI/FlatCAMGUI.py:3945 msgid "" "When checked the path for the last saved file is used when saving files,\n" "and the path for the last opened file is used when opening files.\n" @@ -6556,11 +6581,11 @@ msgstr "" "ambele \n" "cazuri: fie că se deschide un fisier, fie că se salvează un fisier." -#: flatcamGUI/FlatCAMGUI.py:3957 +#: flatcamGUI/FlatCAMGUI.py:3954 msgid "Save Compressed Project" msgstr "Salvează Proiectul comprimat" -#: flatcamGUI/FlatCAMGUI.py:3959 +#: flatcamGUI/FlatCAMGUI.py:3956 msgid "" "Whether to save a compressed or uncompressed project.\n" "When checked it will save a compressed FlatCAM project." @@ -6569,11 +6594,11 @@ msgstr "" "Când este bifat aici, se va salva o arhiva a proiectului\n" "lucru care poate reduce dimensiunea semnificativ." -#: flatcamGUI/FlatCAMGUI.py:3970 +#: flatcamGUI/FlatCAMGUI.py:3967 msgid "Compression Level:" msgstr "Nivel compresie:" -#: flatcamGUI/FlatCAMGUI.py:3972 +#: flatcamGUI/FlatCAMGUI.py:3969 msgid "" "The level of compression used when saving\n" "a FlatCAM project. Higher value means better compression\n" @@ -6584,49 +6609,49 @@ msgstr "" "dar cu consum redus de resurse in timp ce valoarea 9 cere multa memorie RAM\n" "și in plus, durează semnificativ mai mult." -#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4367 -#: flatcamGUI/FlatCAMGUI.py:5037 flatcamGUI/FlatCAMGUI.py:5409 +#: flatcamGUI/FlatCAMGUI.py:3995 flatcamGUI/FlatCAMGUI.py:4361 +#: flatcamGUI/FlatCAMGUI.py:5153 flatcamGUI/FlatCAMGUI.py:5525 #: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:505 #: flatcamGUI/ObjectUI.py:833 flatcamGUI/ObjectUI.py:1350 msgid "Plot Options:" msgstr "Opțiuni afișare:" -#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/FlatCAMGUI.py:4379 +#: flatcamGUI/FlatCAMGUI.py:4002 flatcamGUI/FlatCAMGUI.py:4373 #: flatcamGUI/ObjectUI.py:156 flatcamGUI/ObjectUI.py:506 msgid "Solid" msgstr "Solid" -#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:158 +#: flatcamGUI/FlatCAMGUI.py:4004 flatcamGUI/ObjectUI.py:158 msgid "Solid color polygons." msgstr "Poligoane color solide." -#: flatcamGUI/FlatCAMGUI.py:4012 flatcamGUI/ObjectUI.py:164 +#: flatcamGUI/FlatCAMGUI.py:4009 flatcamGUI/ObjectUI.py:164 msgid "M-Color" msgstr "M-Color" -#: flatcamGUI/FlatCAMGUI.py:4014 flatcamGUI/ObjectUI.py:166 +#: flatcamGUI/FlatCAMGUI.py:4011 flatcamGUI/ObjectUI.py:166 msgid "Draw polygons in different colors." msgstr "" "Desenează poligoanele Gerber din multiple culori\n" "alese in mod aleator." -#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:4373 -#: flatcamGUI/FlatCAMGUI.py:5041 flatcamGUI/ObjectUI.py:172 +#: flatcamGUI/FlatCAMGUI.py:4016 flatcamGUI/FlatCAMGUI.py:4367 +#: flatcamGUI/FlatCAMGUI.py:5157 flatcamGUI/ObjectUI.py:172 msgid "Plot" msgstr "Afisează" -#: flatcamGUI/FlatCAMGUI.py:4021 flatcamGUI/FlatCAMGUI.py:5043 +#: flatcamGUI/FlatCAMGUI.py:4018 flatcamGUI/FlatCAMGUI.py:5159 #: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:546 -#: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1437 +#: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1450 msgid "Plot (show) this object." msgstr "Afisează (arata) acest obiect." -#: flatcamGUI/FlatCAMGUI.py:4026 flatcamGUI/FlatCAMGUI.py:5050 -#: flatcamGUI/FlatCAMGUI.py:5445 +#: flatcamGUI/FlatCAMGUI.py:4023 flatcamGUI/FlatCAMGUI.py:5166 +#: flatcamGUI/FlatCAMGUI.py:5608 msgid "Circle Steps:" msgstr "Aprox. Cerc" -#: flatcamGUI/FlatCAMGUI.py:4028 +#: flatcamGUI/FlatCAMGUI.py:4025 msgid "" "The number of circle steps for Gerber \n" "circular aperture linear approximation." @@ -6634,15 +6659,15 @@ msgstr "" "Numărul de segmente utilizate pentru\n" "aproximarea lineara a aperturilor Gerber circulare." -#: flatcamGUI/FlatCAMGUI.py:4043 +#: flatcamGUI/FlatCAMGUI.py:4040 msgid "Gerber Options" msgstr "Opțiuni Gerber" -#: flatcamGUI/FlatCAMGUI.py:4047 flatcamGUI/ObjectUI.py:251 +#: flatcamGUI/FlatCAMGUI.py:4043 flatcamGUI/ObjectUI.py:251 msgid "Isolation Routing:" msgstr "Izolare:" -#: flatcamGUI/FlatCAMGUI.py:4049 flatcamGUI/ObjectUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:4045 flatcamGUI/ObjectUI.py:253 msgid "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." @@ -6651,17 +6676,17 @@ msgstr "" "care să fie taiate in afara poligoanelor,\n" "urmărindu-le conturul." -#: flatcamGUI/FlatCAMGUI.py:4060 flatcamGUI/FlatCAMGUI.py:4760 -#: flatcamGUI/FlatCAMGUI.py:5733 flatcamGUI/ObjectUI.py:788 +#: flatcamGUI/FlatCAMGUI.py:4056 flatcamGUI/FlatCAMGUI.py:4753 +#: flatcamGUI/FlatCAMGUI.py:5897 flatcamGUI/ObjectUI.py:788 #: flatcamGUI/ObjectUI.py:804 msgid "Diameter of the cutting tool." msgstr "Diametrul uneltei taietoare." -#: flatcamGUI/FlatCAMGUI.py:4067 +#: flatcamGUI/FlatCAMGUI.py:4063 msgid "Width (# passes):" msgstr "Latime(# treceri):" -#: flatcamGUI/FlatCAMGUI.py:4069 flatcamGUI/ObjectUI.py:275 +#: flatcamGUI/FlatCAMGUI.py:4065 flatcamGUI/ObjectUI.py:275 msgid "" "Width of the isolation gap in\n" "number (integer) of tool widths." @@ -6669,11 +6694,11 @@ msgstr "" "Lăţimea spatiului de izolare\n" "in număr intreg de grosimi ale uneltei." -#: flatcamGUI/FlatCAMGUI.py:4077 flatcamGUI/ObjectUI.py:283 +#: flatcamGUI/FlatCAMGUI.py:4073 flatcamGUI/ObjectUI.py:283 msgid "Pass overlap:" msgstr "Suprapunere:" -#: flatcamGUI/FlatCAMGUI.py:4079 flatcamGUI/ObjectUI.py:285 +#: flatcamGUI/FlatCAMGUI.py:4075 flatcamGUI/ObjectUI.py:285 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -6687,11 +6712,11 @@ msgstr "" "Exemplu:\n" "O valoare de 0.25 reprezinta o suprapunere de 25%% din diametrul uneltei." -#: flatcamGUI/FlatCAMGUI.py:4087 flatcamGUI/ObjectUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:4083 flatcamGUI/ObjectUI.py:295 msgid "Milling Type:" msgstr "Tip Frezare:" -#: flatcamGUI/FlatCAMGUI.py:4089 flatcamGUI/ObjectUI.py:297 +#: flatcamGUI/FlatCAMGUI.py:4085 flatcamGUI/ObjectUI.py:297 msgid "" "Milling type:\n" "- climb / best for precision milling and to reduce tool usage\n" @@ -6702,19 +6727,19 @@ msgstr "" "uneltei\n" "- conventional -> pentru cazul când nu exista o compensare a 'backlash-ului'" -#: flatcamGUI/FlatCAMGUI.py:4099 +#: flatcamGUI/FlatCAMGUI.py:4095 msgid "Combine Passes" msgstr "Combina" -#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/ObjectUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:4097 flatcamGUI/ObjectUI.py:309 msgid "Combine all passes into one object" msgstr "Combina toate trecerile intr-un singur obiect" -#: flatcamGUI/FlatCAMGUI.py:4106 +#: flatcamGUI/FlatCAMGUI.py:4102 msgid "Clear non-copper:" msgstr "Curăță non-Cu:" -#: flatcamGUI/FlatCAMGUI.py:4108 flatcamGUI/FlatCAMGUI.py:5621 +#: flatcamGUI/FlatCAMGUI.py:4104 flatcamGUI/FlatCAMGUI.py:5785 #: flatcamGUI/ObjectUI.py:386 msgid "" "Create a Geometry object with\n" @@ -6724,12 +6749,12 @@ msgstr "" "care să curete de cupru toate zonele unde se dorește să nu \n" "fie cupru." -#: flatcamGUI/FlatCAMGUI.py:4117 flatcamGUI/FlatCAMGUI.py:4143 +#: flatcamGUI/FlatCAMGUI.py:4113 flatcamGUI/FlatCAMGUI.py:4139 #: flatcamGUI/ObjectUI.py:430 flatcamGUI/ObjectUI.py:464 msgid "Boundary Margin:" msgstr "Margine:" -#: flatcamGUI/FlatCAMGUI.py:4119 flatcamGUI/ObjectUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:4115 flatcamGUI/ObjectUI.py:432 msgid "" "Specify the edge of the PCB\n" "by drawing a box around all\n" @@ -6740,11 +6765,11 @@ msgstr "" "unei forme patratice de jur imprejurul la toate obiectele\n" "la o distanţa minima cu valoarea din acest câmp." -#: flatcamGUI/FlatCAMGUI.py:4129 flatcamGUI/FlatCAMGUI.py:4152 +#: flatcamGUI/FlatCAMGUI.py:4125 flatcamGUI/FlatCAMGUI.py:4148 msgid "Rounded corners" msgstr "C. rotunjite" -#: flatcamGUI/FlatCAMGUI.py:4131 +#: flatcamGUI/FlatCAMGUI.py:4127 msgid "" "Creates a Geometry objects with polygons\n" "covering the copper-free areas of the PCB." @@ -6752,11 +6777,11 @@ msgstr "" "Crează un obiect tip Geometrie conținând poligoane\n" "care acopera toate suprafetele libere de cupru ale PCB-ului." -#: flatcamGUI/FlatCAMGUI.py:4137 flatcamGUI/ObjectUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:4133 flatcamGUI/ObjectUI.py:454 msgid "Bounding Box:" msgstr "Forma înconjurătoare::" -#: flatcamGUI/FlatCAMGUI.py:4145 flatcamGUI/ObjectUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:4141 flatcamGUI/ObjectUI.py:466 msgid "" "Distance of the edges of the box\n" "to the nearest polygon." @@ -6764,7 +6789,7 @@ msgstr "" "Distanta de la marginile formei înconjurătoare\n" "pana la cel mai apropiat poligon." -#: flatcamGUI/FlatCAMGUI.py:4154 flatcamGUI/ObjectUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:4150 flatcamGUI/ObjectUI.py:476 msgid "" "If the bounding box is \n" "to have rounded corners\n" @@ -6774,15 +6799,15 @@ msgstr "" "Daca forma înconjurătoare să aibă colțuri rotunjite.\n" "Raza acesor colțuri va fi egală cu parametrul Margine." -#: flatcamGUI/FlatCAMGUI.py:4168 +#: flatcamGUI/FlatCAMGUI.py:4164 msgid "Gerber Adv. Options" msgstr "Opțiuni Av. Gerber" -#: flatcamGUI/FlatCAMGUI.py:4172 +#: flatcamGUI/FlatCAMGUI.py:4167 msgid "Advanced Param.:" msgstr "Param. avansati.:" -#: flatcamGUI/FlatCAMGUI.py:4174 +#: flatcamGUI/FlatCAMGUI.py:4169 msgid "" "A list of Gerber advanced parameters.\n" "Those parameters are available only for\n" @@ -6793,11 +6818,11 @@ msgstr "" "când este selectat Nivelul Avansat pentru\n" "aplicaţie in Preferințe - > General" -#: flatcamGUI/FlatCAMGUI.py:4184 flatcamGUI/ObjectUI.py:314 +#: flatcamGUI/FlatCAMGUI.py:4179 flatcamGUI/ObjectUI.py:314 msgid "\"Follow\"" msgstr "\"Urmareste\"" -#: flatcamGUI/FlatCAMGUI.py:4186 flatcamGUI/ObjectUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:4181 flatcamGUI/ObjectUI.py:316 msgid "" "Generate a 'Follow' geometry.\n" "This means that it will cut through\n" @@ -6807,11 +6832,11 @@ msgstr "" "Mai exact, in loc să se genereze un poligon se va genera o 'linie'.\n" "In acest fel se taie prin mijlocul unui traseu și nu in jurul lui." -#: flatcamGUI/FlatCAMGUI.py:4194 +#: flatcamGUI/FlatCAMGUI.py:4188 msgid "Table Show/Hide" msgstr "Arata/Ascunde Tabela" -#: flatcamGUI/FlatCAMGUI.py:4196 +#: flatcamGUI/FlatCAMGUI.py:4190 msgid "" "Toggle the display of the Gerber Apertures Table.\n" "Also, on hide, it will delete all mark shapes\n" @@ -6821,15 +6846,15 @@ msgstr "" "când se ascunde aceasta, se vor șterge și toate\n" "posibil afisatele marcaje ale aperturilor." -#: flatcamGUI/FlatCAMGUI.py:4235 +#: flatcamGUI/FlatCAMGUI.py:4229 msgid "Gerber Export" msgstr "Export Gerber" -#: flatcamGUI/FlatCAMGUI.py:4238 flatcamGUI/FlatCAMGUI.py:4909 +#: flatcamGUI/FlatCAMGUI.py:4232 flatcamGUI/FlatCAMGUI.py:4902 msgid "Export Options:" msgstr "Opțiuni Export::" -#: flatcamGUI/FlatCAMGUI.py:4240 +#: flatcamGUI/FlatCAMGUI.py:4234 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Gerber menu entry." @@ -6838,19 +6863,19 @@ msgstr "" "se exporta un fişier Gerber folosind:\n" "File -> Exportă -> Exportă Gerber" -#: flatcamGUI/FlatCAMGUI.py:4249 flatcamGUI/FlatCAMGUI.py:4920 +#: flatcamGUI/FlatCAMGUI.py:4243 flatcamGUI/FlatCAMGUI.py:4913 msgid "Units:" msgstr "Unitati:" -#: flatcamGUI/FlatCAMGUI.py:4251 flatcamGUI/FlatCAMGUI.py:4257 +#: flatcamGUI/FlatCAMGUI.py:4245 flatcamGUI/FlatCAMGUI.py:4251 msgid "The units used in the Gerber file." msgstr "Unitătile de măsură folosite in fişierul Gerber." -#: flatcamGUI/FlatCAMGUI.py:4263 flatcamGUI/FlatCAMGUI.py:4934 +#: flatcamGUI/FlatCAMGUI.py:4257 flatcamGUI/FlatCAMGUI.py:4927 msgid "Int/Decimals:" msgstr "Int/Zecimale:" -#: flatcamGUI/FlatCAMGUI.py:4265 +#: flatcamGUI/FlatCAMGUI.py:4259 msgid "" "The number of digits in the whole part of the number\n" "and in the fractional part of the number." @@ -6858,7 +6883,7 @@ msgstr "" "Acest număr reprezinta numărul de digiti din partea\n" "intreagă si in partea fractională a numărului." -#: flatcamGUI/FlatCAMGUI.py:4276 +#: flatcamGUI/FlatCAMGUI.py:4270 msgid "" "This numbers signify the number of digits in\n" "the whole part of Gerber coordinates." @@ -6866,7 +6891,7 @@ msgstr "" "Acest număr reprezinta numărul de digiti din partea\n" "intreagă a coordonatelor Gerber." -#: flatcamGUI/FlatCAMGUI.py:4290 +#: flatcamGUI/FlatCAMGUI.py:4284 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Gerber coordinates." @@ -6874,11 +6899,11 @@ msgstr "" "Acest număr reprezinta numărul de digiti din partea\n" "zecimală a coordonatelor Gerber." -#: flatcamGUI/FlatCAMGUI.py:4299 flatcamGUI/FlatCAMGUI.py:4995 +#: flatcamGUI/FlatCAMGUI.py:4293 flatcamGUI/FlatCAMGUI.py:4988 msgid "Zeros:" msgstr "Zero-uri:" -#: flatcamGUI/FlatCAMGUI.py:4302 flatcamGUI/FlatCAMGUI.py:4312 +#: flatcamGUI/FlatCAMGUI.py:4296 flatcamGUI/FlatCAMGUI.py:4306 msgid "" "This sets the type of Gerber zeros.\n" "If LZ then Leading Zeros are removed and\n" @@ -6894,23 +6919,25 @@ msgstr "" "cele de la final sunt păstrate.\n" "(Invers fată de fişierele Excellon)." -#: flatcamGUI/FlatCAMGUI.py:4332 flatcamGUI/FlatCAMGUI.py:5375 -#: flatcamGUI/FlatCAMGUI.py:5619 flatcamGUI/FlatCAMGUI.py:5720 -#: flatcamGUI/FlatCAMGUI.py:5799 flatcamGUI/FlatCAMGUI.py:5858 -#: flatcamGUI/FlatCAMGUI.py:5961 flatcamGUI/FlatCAMGUI.py:6022 -#: flatcamGUI/FlatCAMGUI.py:6221 flatcamGUI/FlatCAMGUI.py:6348 +#: 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 msgid "Parameters:" msgstr "Parametri:" -#: flatcamGUI/FlatCAMGUI.py:4334 +#: flatcamGUI/FlatCAMGUI.py:4328 msgid "A list of Gerber Editor parameters." msgstr "O listă de parametri ai Editorului Gerber." -#: flatcamGUI/FlatCAMGUI.py:4342 flatcamGUI/FlatCAMGUI.py:5385 +#: flatcamGUI/FlatCAMGUI.py:4336 flatcamGUI/FlatCAMGUI.py:5039 +#: flatcamGUI/FlatCAMGUI.py:5501 msgid "Selection limit:" msgstr "Limita selecţie:" -#: flatcamGUI/FlatCAMGUI.py:4344 +#: flatcamGUI/FlatCAMGUI.py:4338 msgid "" "Set the number of selected Gerber geometry\n" "items above which the utility geometry\n" @@ -6923,15 +6950,15 @@ msgstr "" "Creste performanta cand se mută un număr mai mare\n" "de elemente geometrice." -#: flatcamGUI/FlatCAMGUI.py:4364 +#: flatcamGUI/FlatCAMGUI.py:4358 msgid "Excellon General" msgstr "Excellon General" -#: flatcamGUI/FlatCAMGUI.py:4386 +#: flatcamGUI/FlatCAMGUI.py:4380 msgid "Excellon Format:" msgstr "Formatul Excellon" -#: flatcamGUI/FlatCAMGUI.py:4388 +#: flatcamGUI/FlatCAMGUI.py:4382 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -6977,18 +7004,18 @@ msgstr "" "Sprint Layout 2:4 INCH LZ\n" "KiCAD 3:5 INCH TZ" -#: flatcamGUI/FlatCAMGUI.py:4413 +#: flatcamGUI/FlatCAMGUI.py:4407 msgid "INCH:" msgstr "Inch" -#: flatcamGUI/FlatCAMGUI.py:4416 +#: flatcamGUI/FlatCAMGUI.py:4410 msgid "Default values for INCH are 2:4" msgstr "" "Valorile default pentru Inch sunt 2:4\n" "adica 2 parti intregi și 4 zecimale." -#: flatcamGUI/FlatCAMGUI.py:4424 flatcamGUI/FlatCAMGUI.py:4457 -#: flatcamGUI/FlatCAMGUI.py:4949 +#: flatcamGUI/FlatCAMGUI.py:4418 flatcamGUI/FlatCAMGUI.py:4451 +#: flatcamGUI/FlatCAMGUI.py:4942 msgid "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." @@ -6996,8 +7023,8 @@ msgstr "" "Acest număr reprezinta numărul de digiti din partea\n" "intreaga a coordonatelor Excellon." -#: flatcamGUI/FlatCAMGUI.py:4438 flatcamGUI/FlatCAMGUI.py:4471 -#: flatcamGUI/FlatCAMGUI.py:4963 +#: flatcamGUI/FlatCAMGUI.py:4432 flatcamGUI/FlatCAMGUI.py:4465 +#: flatcamGUI/FlatCAMGUI.py:4956 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." @@ -7005,21 +7032,21 @@ msgstr "" "Acest număr reprezinta numărul de digiti din partea\n" "zecimala a coordonatelor Excellon." -#: flatcamGUI/FlatCAMGUI.py:4446 +#: flatcamGUI/FlatCAMGUI.py:4440 msgid "METRIC:" msgstr "Metric" -#: flatcamGUI/FlatCAMGUI.py:4449 +#: flatcamGUI/FlatCAMGUI.py:4443 msgid "Default values for METRIC are 3:3" msgstr "" "Valorile default pentru Metric sunt 3:3\n" "adica 3 parti intregi și 3 zecimale." -#: flatcamGUI/FlatCAMGUI.py:4480 +#: flatcamGUI/FlatCAMGUI.py:4474 msgid "Default Zeros:" msgstr "Suprimare Zero:" -#: flatcamGUI/FlatCAMGUI.py:4483 flatcamGUI/FlatCAMGUI.py:4998 +#: flatcamGUI/FlatCAMGUI.py:4477 flatcamGUI/FlatCAMGUI.py:4991 msgid "" "This sets the type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -7035,7 +7062,7 @@ msgstr "" "cele de la final sunt pastrate.\n" "(Invers fata de fişierele Gerber)." -#: flatcamGUI/FlatCAMGUI.py:4494 +#: flatcamGUI/FlatCAMGUI.py:4488 msgid "" "This sets the default type of Excellon zeros.\n" "If it is not detected in the parsed file the value here\n" @@ -7054,11 +7081,11 @@ msgstr "" "cele de la final sunt pastrate.\n" "(Invers fata de fişierele Gerber)." -#: flatcamGUI/FlatCAMGUI.py:4508 +#: flatcamGUI/FlatCAMGUI.py:4502 msgid "Default Units:" msgstr "Unitati Excellon:" -#: flatcamGUI/FlatCAMGUI.py:4511 +#: flatcamGUI/FlatCAMGUI.py:4505 msgid "" "This sets the default units of Excellon files.\n" "If it is not detected in the parsed file the value here\n" @@ -7072,7 +7099,7 @@ msgstr "" "(unde se gasesc unitatile) și atunci se va folosi\n" "aceasta valoare." -#: flatcamGUI/FlatCAMGUI.py:4522 +#: flatcamGUI/FlatCAMGUI.py:4516 msgid "" "This sets the units of Excellon files.\n" "Some Excellon files don't have an header\n" @@ -7085,15 +7112,15 @@ msgstr "" "(unde se gasesc unitatile) și atunci se va folosi\n" "aceasta valoare." -#: flatcamGUI/FlatCAMGUI.py:4538 +#: flatcamGUI/FlatCAMGUI.py:4532 msgid "Excellon Optimization:" msgstr "Optimizarea traseului Excellon:" -#: flatcamGUI/FlatCAMGUI.py:4545 +#: flatcamGUI/FlatCAMGUI.py:4539 msgid "Algorithm: " msgstr "Algoritm:" -#: flatcamGUI/FlatCAMGUI.py:4548 flatcamGUI/FlatCAMGUI.py:4561 +#: flatcamGUI/FlatCAMGUI.py:4542 flatcamGUI/FlatCAMGUI.py:4555 msgid "" "This sets the optimization type for the Excellon drill path.\n" "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" @@ -7117,11 +7144,11 @@ msgstr "" "care nu este compatibila cu pachetul OR Tools și in acest caz se foloseşte\n" "algoritmul default: Travelling Salesman (vanzatorul ambulant)." -#: flatcamGUI/FlatCAMGUI.py:4573 +#: flatcamGUI/FlatCAMGUI.py:4567 msgid "Optimization Time: " msgstr "Durata optimiz.:" -#: flatcamGUI/FlatCAMGUI.py:4576 +#: flatcamGUI/FlatCAMGUI.py:4570 msgid "" "When OR-Tools Metaheuristic (MH) is enabled there is a\n" "maximum threshold for how much time is spent doing the\n" @@ -7132,15 +7159,15 @@ msgstr "" "reprezinta cat timp se sta pentru fiecare element in\n" "incercarea de a afla calea optima." -#: flatcamGUI/FlatCAMGUI.py:4618 +#: flatcamGUI/FlatCAMGUI.py:4612 msgid "Excellon Options" msgstr "Opțiuni Excellon" -#: flatcamGUI/FlatCAMGUI.py:4621 flatcamGUI/ObjectUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:4615 flatcamGUI/ObjectUI.py:584 msgid "Create CNC Job" msgstr "Crează CNCJob" -#: flatcamGUI/FlatCAMGUI.py:4623 +#: flatcamGUI/FlatCAMGUI.py:4617 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object." @@ -7148,13 +7175,13 @@ msgstr "" "Parametrii folositi pentru a crea un obiect FlatCAM tip CNCJob\n" "din acest obiect Excellon." -#: flatcamGUI/FlatCAMGUI.py:4631 flatcamGUI/FlatCAMGUI.py:5101 -#: flatcamGUI/FlatCAMGUI.py:6157 flatcamGUI/ObjectUI.py:595 +#: flatcamGUI/FlatCAMGUI.py:4625 flatcamGUI/FlatCAMGUI.py:5217 +#: flatcamGUI/FlatCAMGUI.py:6321 flatcamGUI/ObjectUI.py:595 #: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolCalculators.py:108 msgid "Cut Z:" msgstr "Z tăiere:" -#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/ObjectUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:4627 flatcamGUI/ObjectUI.py:597 msgid "" "Drill depth (negative)\n" "below the copper surface." @@ -7163,12 +7190,12 @@ msgstr "" "Daca se foloseşte o val. pozitivă, aplicaţia\n" "va incerca in mod automat să schimbe semnul." -#: flatcamGUI/FlatCAMGUI.py:4640 flatcamGUI/FlatCAMGUI.py:5134 +#: flatcamGUI/FlatCAMGUI.py:4634 flatcamGUI/FlatCAMGUI.py:5250 #: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1098 msgid "Travel Z:" msgstr "Z Deplasare:" -#: flatcamGUI/FlatCAMGUI.py:4642 flatcamGUI/ObjectUI.py:607 +#: flatcamGUI/FlatCAMGUI.py:4636 flatcamGUI/ObjectUI.py:607 msgid "" "Tool height when travelling\n" "across the XY plane." @@ -7177,11 +7204,11 @@ msgstr "" "in planul X-Y, fără a efectua taieri, adica\n" "in afara materialului." -#: flatcamGUI/FlatCAMGUI.py:4650 flatcamGUI/FlatCAMGUI.py:5144 +#: flatcamGUI/FlatCAMGUI.py:4644 flatcamGUI/FlatCAMGUI.py:5260 msgid "Tool change:" msgstr "Schimbare unealtă:" -#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5146 +#: flatcamGUI/FlatCAMGUI.py:4646 flatcamGUI/FlatCAMGUI.py:5262 #: flatcamGUI/ObjectUI.py:617 msgid "" "Include tool-change sequence\n" @@ -7191,11 +7218,11 @@ msgstr "" "in codul G-Code (pauza pentru schimbare unealtă).\n" "De obicei este folosita comanda G-Code M6." -#: flatcamGUI/FlatCAMGUI.py:4659 flatcamGUI/FlatCAMGUI.py:5154 +#: flatcamGUI/FlatCAMGUI.py:4653 flatcamGUI/FlatCAMGUI.py:5270 msgid "Toolchange Z:" msgstr "Z schimb. unealtă:" -#: flatcamGUI/FlatCAMGUI.py:4661 flatcamGUI/FlatCAMGUI.py:5156 +#: flatcamGUI/FlatCAMGUI.py:4655 flatcamGUI/FlatCAMGUI.py:5272 msgid "Toolchange Z position." msgstr "" "Înălţimea la care se efectuează schimbarea uneltei.\n" @@ -7203,11 +7230,11 @@ msgstr "" "'toolchanger' automat sau acolo unde utilizatorul\n" "schimba unealtă manual." -#: flatcamGUI/FlatCAMGUI.py:4667 +#: flatcamGUI/FlatCAMGUI.py:4661 msgid "Feedrate:" msgstr "Feedrate:" -#: flatcamGUI/FlatCAMGUI.py:4669 +#: flatcamGUI/FlatCAMGUI.py:4663 msgid "" "Tool speed while drilling\n" "(in units per minute)." @@ -7215,11 +7242,11 @@ msgstr "" "Viteza cu care se misca unealtă (burghiul) când se fac\n" "operațiuni de găurire. In unitati pe minut." -#: flatcamGUI/FlatCAMGUI.py:4677 +#: flatcamGUI/FlatCAMGUI.py:4671 msgid "Spindle Speed:" msgstr "Viteza Motor:" -#: flatcamGUI/FlatCAMGUI.py:4679 flatcamGUI/FlatCAMGUI.py:5186 +#: flatcamGUI/FlatCAMGUI.py:4673 flatcamGUI/FlatCAMGUI.py:5302 #: flatcamGUI/ObjectUI.py:684 msgid "" "Speed of the spindle\n" @@ -7230,11 +7257,11 @@ msgstr "" "Acest parametru este optional și se poate lasa gol\n" "daca nu se foloseşte." -#: flatcamGUI/FlatCAMGUI.py:4687 flatcamGUI/FlatCAMGUI.py:5194 +#: flatcamGUI/FlatCAMGUI.py:4681 flatcamGUI/FlatCAMGUI.py:5310 msgid "Spindle dir.:" msgstr "Directie Motor:" -#: flatcamGUI/FlatCAMGUI.py:4689 flatcamGUI/FlatCAMGUI.py:5196 +#: flatcamGUI/FlatCAMGUI.py:4683 flatcamGUI/FlatCAMGUI.py:5312 msgid "" "This sets the direction that the spindle is rotating.\n" "It can be either:\n" @@ -7246,12 +7273,12 @@ msgstr "" "- CW = in sensul acelor de ceasornic\n" "- CCW = in sensul invers acelor de ceasornic" -#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 +#: flatcamGUI/FlatCAMGUI.py:4695 flatcamGUI/FlatCAMGUI.py:5324 #: flatcamGUI/ObjectUI.py:692 flatcamGUI/ObjectUI.py:1224 msgid "Dwell:" msgstr "Pauza:" -#: flatcamGUI/FlatCAMGUI.py:4703 flatcamGUI/FlatCAMGUI.py:5210 +#: flatcamGUI/FlatCAMGUI.py:4697 flatcamGUI/FlatCAMGUI.py:5326 #: flatcamGUI/ObjectUI.py:694 flatcamGUI/ObjectUI.py:1227 msgid "" "Pause to allow the spindle to reach its\n" @@ -7260,21 +7287,21 @@ msgstr "" "O pauza care permite motorului să ajunga la turatia specificata,\n" "inainte de a incepe mișcarea spre poziţia de tăiere (găurire)." -#: flatcamGUI/FlatCAMGUI.py:4706 flatcamGUI/FlatCAMGUI.py:5213 +#: flatcamGUI/FlatCAMGUI.py:4700 flatcamGUI/FlatCAMGUI.py:5329 msgid "Duration:" msgstr "Durata:" -#: flatcamGUI/FlatCAMGUI.py:4708 flatcamGUI/FlatCAMGUI.py:5215 +#: flatcamGUI/FlatCAMGUI.py:4702 flatcamGUI/FlatCAMGUI.py:5331 #: flatcamGUI/ObjectUI.py:699 flatcamGUI/ObjectUI.py:1234 msgid "Number of milliseconds for spindle to dwell." msgstr "Timpul (ori secunde ori milisec) cat se sta in pauza." -#: flatcamGUI/FlatCAMGUI.py:4720 flatcamGUI/FlatCAMGUI.py:5225 +#: flatcamGUI/FlatCAMGUI.py:4714 flatcamGUI/FlatCAMGUI.py:5341 #: flatcamGUI/ObjectUI.py:707 msgid "Postprocessor:" msgstr "Postprocesor:" -#: flatcamGUI/FlatCAMGUI.py:4722 +#: flatcamGUI/FlatCAMGUI.py:4716 msgid "" "The postprocessor file that dictates\n" "gcode output." @@ -7283,11 +7310,11 @@ msgstr "" "respecte un anumit format care să fie ințeles de diverse\n" "utilaje. Este responsabil de 'personalizarea' G-Code." -#: flatcamGUI/FlatCAMGUI.py:4732 +#: flatcamGUI/FlatCAMGUI.py:4725 msgid "Gcode: " msgstr "G-Code:" -#: flatcamGUI/FlatCAMGUI.py:4734 +#: flatcamGUI/FlatCAMGUI.py:4727 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -7301,41 +7328,41 @@ msgstr "" "Când se alege Sloturi sau Ambele, sloturile vor fi convertite in serii de " "găuri." -#: flatcamGUI/FlatCAMGUI.py:4750 flatcamGUI/ObjectUI.py:772 +#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:772 msgid "Mill Holes" msgstr "Frezare găuri" -#: flatcamGUI/FlatCAMGUI.py:4752 flatcamGUI/ObjectUI.py:774 +#: flatcamGUI/FlatCAMGUI.py:4745 flatcamGUI/ObjectUI.py:774 msgid "Create Geometry for milling holes." msgstr "Crează un obiect tip Geometrie pentru frezarea găurilor." -#: flatcamGUI/FlatCAMGUI.py:4758 +#: flatcamGUI/FlatCAMGUI.py:4751 msgid "Drill Tool dia:" msgstr "Dia. Burghiu Găurire:" -#: flatcamGUI/FlatCAMGUI.py:4765 +#: flatcamGUI/FlatCAMGUI.py:4758 msgid "Slot Tool dia:" msgstr "Dia. Freza Slot:" -#: flatcamGUI/FlatCAMGUI.py:4767 +#: flatcamGUI/FlatCAMGUI.py:4760 msgid "" "Diameter of the cutting tool\n" "when milling slots." msgstr "Diametrul frezei când se frezează sloturile." -#: flatcamGUI/FlatCAMGUI.py:4779 +#: flatcamGUI/FlatCAMGUI.py:4772 msgid "Defaults" msgstr "Val. Implicite" -#: flatcamGUI/FlatCAMGUI.py:4792 +#: flatcamGUI/FlatCAMGUI.py:4785 msgid "Excellon Adv. Options" msgstr "Opțiuni Avans. Excellon" -#: flatcamGUI/FlatCAMGUI.py:4798 flatcamGUI/FlatCAMGUI.py:5248 +#: flatcamGUI/FlatCAMGUI.py:4791 flatcamGUI/FlatCAMGUI.py:5364 msgid "Advanced Options:" msgstr "Opțiuni avansate:" -#: flatcamGUI/FlatCAMGUI.py:4800 +#: flatcamGUI/FlatCAMGUI.py:4793 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object that are shown when App Level is Advanced." @@ -7344,11 +7371,11 @@ msgstr "" "pt acest obiect Excellon, parametri care sunt disponibili\n" "doar in modul Avansat al aplicaţiei." -#: flatcamGUI/FlatCAMGUI.py:4808 +#: flatcamGUI/FlatCAMGUI.py:4801 msgid "Offset Z:" msgstr "Z ofset:" -#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/ObjectUI.py:574 +#: flatcamGUI/FlatCAMGUI.py:4803 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" @@ -7361,20 +7388,20 @@ msgstr "" "Valoarea de aici efectuează o compensare asupra\n" "parametrului >Z tăiere<." -#: flatcamGUI/FlatCAMGUI.py:4817 flatcamGUI/FlatCAMGUI.py:5259 +#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/FlatCAMGUI.py:5375 msgid "Toolchange X,Y:" msgstr "X,Y schimb. unealtă:" -#: flatcamGUI/FlatCAMGUI.py:4819 flatcamGUI/FlatCAMGUI.py:5261 +#: flatcamGUI/FlatCAMGUI.py:4812 flatcamGUI/FlatCAMGUI.py:5377 msgid "Toolchange X,Y position." msgstr "Poziţia X,Y in format (x,y) unde se face schimbarea uneltei." -#: flatcamGUI/FlatCAMGUI.py:4825 flatcamGUI/FlatCAMGUI.py:5268 +#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5384 #: flatcamGUI/ObjectUI.py:634 msgid "Start move Z:" msgstr "Z pornire:" -#: flatcamGUI/FlatCAMGUI.py:4827 +#: flatcamGUI/FlatCAMGUI.py:4820 msgid "" "Height of the tool just after start.\n" "Delete the value if you don't need this feature." @@ -7382,23 +7409,23 @@ msgstr "" "Înălţimea uneltei imediat dupa ce se porneste operatia CNC.\n" "Lasa casuta goala daca nu se foloseşte." -#: flatcamGUI/FlatCAMGUI.py:4834 flatcamGUI/FlatCAMGUI.py:5278 +#: flatcamGUI/FlatCAMGUI.py:4827 flatcamGUI/FlatCAMGUI.py:5394 #: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1144 msgid "End move Z:" msgstr "Z oprire:" -#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5280 +#: flatcamGUI/FlatCAMGUI.py:4829 flatcamGUI/FlatCAMGUI.py:5396 msgid "" "Height of the tool after\n" "the last move at the end of the job." msgstr "Înălţimea la care se parchează freza dupa ce se termina lucrul." -#: flatcamGUI/FlatCAMGUI.py:4843 flatcamGUI/FlatCAMGUI.py:5288 +#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5404 #: flatcamGUI/ObjectUI.py:665 msgid "Feedrate Rapids:" msgstr "Feedrate rapizi:" -#: flatcamGUI/FlatCAMGUI.py:4845 flatcamGUI/ObjectUI.py:667 +#: flatcamGUI/FlatCAMGUI.py:4838 flatcamGUI/ObjectUI.py:667 msgid "" "Tool speed while drilling\n" "(in units per minute).\n" @@ -7411,12 +7438,12 @@ msgstr "" "printerul 3D Marlin, implicit când se foloseşte fişierul\n" "postprocesor: Marlin. Ignora aceasta parametru in rest." -#: flatcamGUI/FlatCAMGUI.py:4856 flatcamGUI/FlatCAMGUI.py:5312 +#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5428 #: flatcamGUI/ObjectUI.py:718 flatcamGUI/ObjectUI.py:1256 msgid "Probe Z depth:" msgstr "Z sonda:" -#: flatcamGUI/FlatCAMGUI.py:4858 flatcamGUI/FlatCAMGUI.py:5314 +#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5430 #: flatcamGUI/ObjectUI.py:720 flatcamGUI/ObjectUI.py:1259 msgid "" "The maximum depth that the probe is allowed\n" @@ -7425,21 +7452,21 @@ msgstr "" "Adâncimea maxima la care este permis sondei să coboare.\n" "Are o valoare negativă, in unitatile curente." -#: flatcamGUI/FlatCAMGUI.py:4866 flatcamGUI/FlatCAMGUI.py:5322 +#: flatcamGUI/FlatCAMGUI.py:4859 flatcamGUI/FlatCAMGUI.py:5438 #: flatcamGUI/ObjectUI.py:730 flatcamGUI/ObjectUI.py:1270 msgid "Feedrate Probe:" msgstr "Feedrate sonda:" -#: flatcamGUI/FlatCAMGUI.py:4868 flatcamGUI/FlatCAMGUI.py:5324 +#: flatcamGUI/FlatCAMGUI.py:4861 flatcamGUI/FlatCAMGUI.py:5440 #: flatcamGUI/ObjectUI.py:732 flatcamGUI/ObjectUI.py:1273 msgid "The feedrate used while the probe is probing." msgstr "Viteza sondei când aceasta coboara." -#: flatcamGUI/FlatCAMGUI.py:4874 flatcamGUI/FlatCAMGUI.py:5331 +#: flatcamGUI/FlatCAMGUI.py:4867 flatcamGUI/FlatCAMGUI.py:5447 msgid "Fast Plunge:" msgstr "Plonjare rapida:" -#: flatcamGUI/FlatCAMGUI.py:4876 flatcamGUI/FlatCAMGUI.py:5333 +#: flatcamGUI/FlatCAMGUI.py:4869 flatcamGUI/FlatCAMGUI.py:5449 msgid "" "By checking this, the vertical move from\n" "Z_Toolchange to Z_move is done with G0,\n" @@ -7456,11 +7483,11 @@ msgstr "" "schimba\n" "unealta. Daca aveti ceva plasat sub unealtă ceva se va strica." -#: flatcamGUI/FlatCAMGUI.py:4885 +#: flatcamGUI/FlatCAMGUI.py:4878 msgid "Fast Retract:" msgstr "Retragere rapida:" -#: flatcamGUI/FlatCAMGUI.py:4887 +#: flatcamGUI/FlatCAMGUI.py:4880 msgid "" "Exit hole strategy.\n" " - When uncheked, while exiting the drilled hole the drill bit\n" @@ -7479,11 +7506,11 @@ msgstr "" "adâncimea\n" "de deplasare cu viteza maxima G0, intr-o singură mișcare." -#: flatcamGUI/FlatCAMGUI.py:4906 +#: flatcamGUI/FlatCAMGUI.py:4899 msgid "Excellon Export" msgstr "Export Excellon" -#: flatcamGUI/FlatCAMGUI.py:4911 +#: flatcamGUI/FlatCAMGUI.py:4904 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Excellon menu entry." @@ -7492,11 +7519,11 @@ msgstr "" "se exporta un fişier Excellon folosind:\n" "File -> Exporta -> Exporta Excellon" -#: flatcamGUI/FlatCAMGUI.py:4922 flatcamGUI/FlatCAMGUI.py:4928 +#: flatcamGUI/FlatCAMGUI.py:4915 flatcamGUI/FlatCAMGUI.py:4921 msgid "The units used in the Excellon file." msgstr "Unitatile de masura folosite in fişierul Excellon." -#: flatcamGUI/FlatCAMGUI.py:4936 +#: flatcamGUI/FlatCAMGUI.py:4929 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -7508,11 +7535,11 @@ msgstr "" "Aici se setează formatul Excellon când nu se utilizează\n" "coordonate cu zecimale." -#: flatcamGUI/FlatCAMGUI.py:4972 +#: flatcamGUI/FlatCAMGUI.py:4965 msgid "Format:" msgstr "Format:" -#: flatcamGUI/FlatCAMGUI.py:4974 flatcamGUI/FlatCAMGUI.py:4984 +#: flatcamGUI/FlatCAMGUI.py:4967 flatcamGUI/FlatCAMGUI.py:4977 msgid "" "Select the kind of coordinates format used.\n" "Coordinates can be saved with decimal point or without.\n" @@ -7531,7 +7558,7 @@ msgstr "" "- LZ = zerourile prefix sunt pastrate și cele sufix eliminate\n" "- TZ = zerourile prefix sunt eliminate și cele sufix pastrate." -#: flatcamGUI/FlatCAMGUI.py:5008 +#: flatcamGUI/FlatCAMGUI.py:5001 msgid "" "This sets the default type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -7543,11 +7570,62 @@ msgstr "" "- LZ = zerourile prefix sunt pastrate și cele sufix eliminate\n" "- TZ = zerourile prefix sunt eliminate și cele sufix pastrate." -#: flatcamGUI/FlatCAMGUI.py:5034 +#: flatcamGUI/FlatCAMGUI.py:5031 +msgid "A list of Excellon Editor parameters." +msgstr "O lista de parametri ai Editorului Excellon." + +#: flatcamGUI/FlatCAMGUI.py:5041 +msgid "" +"Set the number of selected Excellon geometry\n" +"items above which the utility geometry\n" +"becomes just a selection rectangle.\n" +"Increases the performance when moving a\n" +"large number of geometric elements." +msgstr "" +"Setează numărul de geometrii Excellon selectate peste care\n" +"geometria utilitară devine o simplă formă pătratica de \n" +"selectie.\n" +"Creste performanta cand se muta un număr mai mare de \n" +"elemente geometrice." + +#: flatcamGUI/FlatCAMGUI.py:5053 +msgid "New Tool Dia:" +msgstr "Dia. nou unealtă:" + +#: flatcamGUI/FlatCAMGUI.py:5076 +msgid "Linear Drill Array:" +msgstr "Arie de gauri lineara:" + +#: flatcamGUI/FlatCAMGUI.py:5080 +msgid "Linear Dir.:" +msgstr "Dir. Lineara:" + +#: flatcamGUI/FlatCAMGUI.py:5116 +msgid "Circular Drill Array:" +msgstr "Arie de gauri circ.:" + +#: flatcamGUI/FlatCAMGUI.py:5120 +msgid "Circular Dir.:" +msgstr "Directie circ.:" + +#: flatcamGUI/FlatCAMGUI.py:5122 +msgid "" +"Direction for circular array.\n" +"Can be CW = clockwise or CCW = counter clockwise." +msgstr "" +"Directia pentru aria circulara.\n" +"Poate fi CW = in sensul acelor de ceasornic sau CCW = invers acelor de " +"ceasornic" + +#: flatcamGUI/FlatCAMGUI.py:5133 +msgid "Circ. Angle:" +msgstr "Unghi circ.:" + +#: flatcamGUI/FlatCAMGUI.py:5150 msgid "Geometry General" msgstr "Geometrie General" -#: flatcamGUI/FlatCAMGUI.py:5052 +#: flatcamGUI/FlatCAMGUI.py:5168 msgid "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." @@ -7555,29 +7633,29 @@ msgstr "" "Numărul de segmente utilizate pentru\n" "aproximarea lineara a Geometriilor circulare." -#: flatcamGUI/FlatCAMGUI.py:5060 +#: flatcamGUI/FlatCAMGUI.py:5176 msgid "Tools" msgstr "Unelte" -#: flatcamGUI/FlatCAMGUI.py:5067 +#: flatcamGUI/FlatCAMGUI.py:5183 msgid "Tool dia: " -msgstr "Dia Unealta:" +msgstr "Dia Unealtă:" -#: flatcamGUI/FlatCAMGUI.py:5069 +#: flatcamGUI/FlatCAMGUI.py:5185 msgid "" "The diameter of the cutting\n" "tool.." msgstr "Diametrul uneltei taietoare ..." -#: flatcamGUI/FlatCAMGUI.py:5084 +#: flatcamGUI/FlatCAMGUI.py:5200 msgid "Geometry Options" msgstr "Opțiuni Geometrie" -#: flatcamGUI/FlatCAMGUI.py:5089 +#: flatcamGUI/FlatCAMGUI.py:5205 msgid "Create CNC Job:" msgstr "Crează CNCJob:" -#: flatcamGUI/FlatCAMGUI.py:5091 +#: flatcamGUI/FlatCAMGUI.py:5207 msgid "" "Create a CNC Job object\n" "tracing the contours of this\n" @@ -7586,7 +7664,7 @@ msgstr "" "Crează un obiect CNCJob care urmareste conturul\n" "acestui obiect tip Geometrie." -#: flatcamGUI/FlatCAMGUI.py:5103 flatcamGUI/ObjectUI.py:1065 +#: flatcamGUI/FlatCAMGUI.py:5219 flatcamGUI/ObjectUI.py:1065 msgid "" "Cutting depth (negative)\n" "below the copper surface." @@ -7594,21 +7672,21 @@ msgstr "" "Adâncimea la care se taie sub suprafata de cupru.\n" "Valoare negativă." -#: flatcamGUI/FlatCAMGUI.py:5111 +#: flatcamGUI/FlatCAMGUI.py:5227 msgid "Multidepth" msgstr "MultiPas" -#: flatcamGUI/FlatCAMGUI.py:5113 +#: flatcamGUI/FlatCAMGUI.py:5229 msgid "Multidepth usage: True or False." msgstr "" "Daca se folosesc sau nu pasi multipli de tăiere\n" "pentru a ajunge la adâncimea de tăiere." -#: flatcamGUI/FlatCAMGUI.py:5118 +#: flatcamGUI/FlatCAMGUI.py:5234 msgid "Depth/Pass:" msgstr "Adanc./Trecere" -#: flatcamGUI/FlatCAMGUI.py:5120 +#: flatcamGUI/FlatCAMGUI.py:5236 msgid "" "The depth to cut on each pass,\n" "when multidepth is enabled.\n" @@ -7621,7 +7699,7 @@ msgstr "" "Valoarea este pozitivă desi reprezinta o fracţie\n" "a adancimii de tăiere care este o valoare negativă." -#: flatcamGUI/FlatCAMGUI.py:5136 flatcamGUI/ObjectUI.py:1101 +#: flatcamGUI/FlatCAMGUI.py:5252 flatcamGUI/ObjectUI.py:1101 msgid "" "Height of the tool when\n" "moving without cutting." @@ -7629,11 +7707,11 @@ msgstr "" "Înălţimea la care se misca unealta când nu taie,\n" "deasupra materialului." -#: flatcamGUI/FlatCAMGUI.py:5163 flatcamGUI/ObjectUI.py:1156 +#: flatcamGUI/FlatCAMGUI.py:5279 flatcamGUI/ObjectUI.py:1156 msgid "Feed Rate X-Y:" msgstr "Feedrate X-Y:" -#: flatcamGUI/FlatCAMGUI.py:5165 flatcamGUI/ObjectUI.py:1159 +#: flatcamGUI/FlatCAMGUI.py:5281 flatcamGUI/ObjectUI.py:1159 msgid "" "Cutting speed in the XY\n" "plane in units per minute" @@ -7641,11 +7719,11 @@ msgstr "" "Viteza de tăiere in planul X-Y\n" "in unitati pe minut." -#: flatcamGUI/FlatCAMGUI.py:5173 +#: flatcamGUI/FlatCAMGUI.py:5289 msgid "Feed Rate Z:" msgstr "Feedrate Z:" -#: flatcamGUI/FlatCAMGUI.py:5175 +#: flatcamGUI/FlatCAMGUI.py:5291 msgid "" "Cutting speed in the XY\n" "plane in units per minute.\n" @@ -7655,12 +7733,12 @@ msgstr "" "in unitati pe minut.\n" "Mai este numita și viteza de plonjare." -#: flatcamGUI/FlatCAMGUI.py:5184 flatcamGUI/ObjectUI.py:682 +#: flatcamGUI/FlatCAMGUI.py:5300 flatcamGUI/ObjectUI.py:682 #: flatcamGUI/ObjectUI.py:1211 msgid "Spindle speed:" msgstr "Viteza motor:" -#: flatcamGUI/FlatCAMGUI.py:5227 +#: flatcamGUI/FlatCAMGUI.py:5343 msgid "" "The postprocessor file that dictates\n" "Machine Code output." @@ -7669,11 +7747,11 @@ msgstr "" "respecte un anumit format care să fie ințeles de diverse\n" "utilaje. Este responsabil de 'personalizarea' G-Code." -#: flatcamGUI/FlatCAMGUI.py:5243 +#: flatcamGUI/FlatCAMGUI.py:5359 msgid "Geometry Adv. Options" msgstr "Opțiuni Avans. Geometrie" -#: flatcamGUI/FlatCAMGUI.py:5250 +#: flatcamGUI/FlatCAMGUI.py:5366 msgid "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." @@ -7681,7 +7759,7 @@ msgstr "" "Parametrii folositi pentru a crea un obiect CNCJob,\n" "urmărind contururile unui obiect tip Geometrie." -#: flatcamGUI/FlatCAMGUI.py:5270 +#: flatcamGUI/FlatCAMGUI.py:5386 msgid "" "Height of the tool just after starting the work.\n" "Delete the value if you don't need this feature." @@ -7689,7 +7767,7 @@ msgstr "" "Înălţimea uneltei la care se gaseste la inceputul lucrului.\n" "Lasa câmpul gol daca nu folosești aceasta." -#: flatcamGUI/FlatCAMGUI.py:5290 +#: flatcamGUI/FlatCAMGUI.py:5406 msgid "" "Cutting speed in the XY plane\n" "(in units per minute).\n" @@ -7702,11 +7780,11 @@ msgstr "" "Este utila doar când se foloseşte cu un printer 3D Marlin,\n" "pentru toate celelalte cazuri ignora acest parametru." -#: flatcamGUI/FlatCAMGUI.py:5302 +#: flatcamGUI/FlatCAMGUI.py:5418 msgid "Re-cut 1st pt." msgstr "Re-tăiere 1-ul pt." -#: flatcamGUI/FlatCAMGUI.py:5304 flatcamGUI/ObjectUI.py:1202 +#: flatcamGUI/FlatCAMGUI.py:5420 flatcamGUI/ObjectUI.py:1202 msgid "" "In order to remove possible\n" "copper leftovers where first cut\n" @@ -7718,11 +7796,11 @@ msgstr "" "cu sfârşitul acesteia (este vorba de un contur), sunt eliminate\n" "prin taierea peste acest punct." -#: flatcamGUI/FlatCAMGUI.py:5343 +#: flatcamGUI/FlatCAMGUI.py:5459 msgid "Seg. X size:" msgstr "Dim. seg X." -#: flatcamGUI/FlatCAMGUI.py:5345 +#: flatcamGUI/FlatCAMGUI.py:5461 msgid "" "The size of the trace segment on the X axis.\n" "Useful for auto-leveling.\n" @@ -7733,11 +7811,11 @@ msgstr "" "O valoare de 0 inseamnaca nu se face segmentare\n" "pe axa X." -#: flatcamGUI/FlatCAMGUI.py:5354 +#: flatcamGUI/FlatCAMGUI.py:5470 msgid "Seg. Y size:" msgstr "Dim. seg Y." -#: flatcamGUI/FlatCAMGUI.py:5356 +#: flatcamGUI/FlatCAMGUI.py:5472 msgid "" "The size of the trace segment on the Y axis.\n" "Useful for auto-leveling.\n" @@ -7748,15 +7826,15 @@ msgstr "" "O valoare de 0 inseamnaca nu se face segmentare\n" "pe axa Y." -#: flatcamGUI/FlatCAMGUI.py:5372 +#: flatcamGUI/FlatCAMGUI.py:5488 msgid "Geometry Editor" msgstr "Editor Geometrii" -#: flatcamGUI/FlatCAMGUI.py:5377 +#: flatcamGUI/FlatCAMGUI.py:5493 msgid "A list of Geometry Editor parameters." msgstr "O lista de parametri ai Editorului de Geometrii." -#: flatcamGUI/FlatCAMGUI.py:5387 +#: flatcamGUI/FlatCAMGUI.py:5503 msgid "" "Set the number of selected geometry\n" "items above which the utility geometry\n" @@ -7770,20 +7848,20 @@ msgstr "" "Creste performanta cand se muta un număr mai mare de \n" "elemente geometrice." -#: flatcamGUI/FlatCAMGUI.py:5406 +#: flatcamGUI/FlatCAMGUI.py:5522 msgid "CNC Job General" msgstr "CNCJob General" -#: flatcamGUI/FlatCAMGUI.py:5419 flatcamGUI/ObjectUI.py:544 -#: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1434 +#: flatcamGUI/FlatCAMGUI.py:5535 flatcamGUI/ObjectUI.py:544 +#: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1447 msgid "Plot Object" msgstr "Afisează" -#: flatcamGUI/FlatCAMGUI.py:5426 +#: flatcamGUI/FlatCAMGUI.py:5542 msgid "Plot kind:" msgstr "Tip afișare:" -#: flatcamGUI/FlatCAMGUI.py:5428 flatcamGUI/ObjectUI.py:1356 +#: flatcamGUI/FlatCAMGUI.py:5544 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" @@ -7796,7 +7874,37 @@ msgstr "" "- Tăiere -> miscarile in material, tăiere\n" "- Amandoua" -#: flatcamGUI/FlatCAMGUI.py:5447 +#: flatcamGUI/FlatCAMGUI.py:5561 +msgid "Display Annotation:" +msgstr "Afiseaza notatii:" + +#: flatcamGUI/FlatCAMGUI.py:5563 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 "" +"Aici se poate seta daca sa se afiseze notatiile text.\n" +"Cand este selectat va afisa numerele in ordine pt fiecare\n" +"capat al liniilor de traversare." + +#: flatcamGUI/FlatCAMGUI.py:5575 +msgid "Annotation Size:" +msgstr "Dim. anotate:" + +#: flatcamGUI/FlatCAMGUI.py:5577 +msgid "The font size of the annotation text. In pixels." +msgstr "Dimensiunea fontului pt. textul cu notatii. In pixeli." + +#: flatcamGUI/FlatCAMGUI.py:5585 +msgid "Annotation Color:" +msgstr "Culoarea anotatii:" + +#: flatcamGUI/FlatCAMGUI.py:5587 +msgid "Set the font color for the annotation texts." +msgstr "Setează culoarea pentru textul cu anotatii." + +#: flatcamGUI/FlatCAMGUI.py:5610 msgid "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." @@ -7804,17 +7912,17 @@ msgstr "" "Numărul de segmente utilizate pentru\n" "aproximarea lineara a reprezentarilor GCodului circular." -#: flatcamGUI/FlatCAMGUI.py:5457 +#: flatcamGUI/FlatCAMGUI.py:5620 msgid "" "Diameter of the tool to be\n" "rendered in the plot." msgstr "Diametrul uneltei care să fie redat prin afișare." -#: flatcamGUI/FlatCAMGUI.py:5465 +#: flatcamGUI/FlatCAMGUI.py:5628 msgid "Coords dec.:" msgstr "Coord. zec.:" -#: flatcamGUI/FlatCAMGUI.py:5467 +#: flatcamGUI/FlatCAMGUI.py:5630 msgid "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" @@ -7822,11 +7930,11 @@ msgstr "" "Numărul de zecimale care să fie folosit in \n" "coordonatele X,Y,Z in codul CNC (GCode etc)." -#: flatcamGUI/FlatCAMGUI.py:5475 +#: flatcamGUI/FlatCAMGUI.py:5638 msgid "Feedrate dec.:" msgstr "Feedrate zec.:" -#: flatcamGUI/FlatCAMGUI.py:5477 +#: flatcamGUI/FlatCAMGUI.py:5640 msgid "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" @@ -7834,16 +7942,16 @@ msgstr "" "Numărul de zecimale care să fie folosit in \n" "parametrul >Feedrate< in codul CNC (GCode etc)." -#: flatcamGUI/FlatCAMGUI.py:5492 +#: flatcamGUI/FlatCAMGUI.py:5655 msgid "CNC Job Options" msgstr "Opțiuni CNCJob" -#: flatcamGUI/FlatCAMGUI.py:5495 flatcamGUI/FlatCAMGUI.py:5536 +#: flatcamGUI/FlatCAMGUI.py:5658 flatcamGUI/FlatCAMGUI.py:5699 msgid "Export G-Code:" msgstr "Exporta G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5497 flatcamGUI/FlatCAMGUI.py:5538 -#: flatcamGUI/ObjectUI.py:1470 +#: flatcamGUI/FlatCAMGUI.py:5660 flatcamGUI/FlatCAMGUI.py:5701 +#: flatcamGUI/ObjectUI.py:1483 msgid "" "Export and save G-Code to\n" "make this object to a file." @@ -7851,11 +7959,11 @@ msgstr "" "Exporta și salvează codul G-Code intr-un fişier\n" "care este salvat pe HDD." -#: flatcamGUI/FlatCAMGUI.py:5503 +#: flatcamGUI/FlatCAMGUI.py:5666 msgid "Prepend to G-Code:" msgstr "Adaugă la inceputul G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5505 +#: flatcamGUI/FlatCAMGUI.py:5668 msgid "" "Type here any G-Code commands you would\n" "like to add at the beginning of the G-Code file." @@ -7863,11 +7971,11 @@ msgstr "" "Adaugă aici orice comenzi G-Code care se dorește să fie\n" "inserate la inceputul codului G-Code." -#: flatcamGUI/FlatCAMGUI.py:5514 +#: flatcamGUI/FlatCAMGUI.py:5677 msgid "Append to G-Code:" msgstr "Adaugă la sfârşitul G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5516 flatcamGUI/ObjectUI.py:1492 +#: flatcamGUI/FlatCAMGUI.py:5679 flatcamGUI/ObjectUI.py:1505 msgid "" "Type here any G-Code commands you would\n" "like to append to the generated file.\n" @@ -7876,15 +7984,15 @@ msgstr "" "Adaugă aici orice comenzi G-Code care se dorește să fie\n" "inserate la sfârşitul codului G-Code." -#: flatcamGUI/FlatCAMGUI.py:5533 +#: flatcamGUI/FlatCAMGUI.py:5696 msgid "CNC Job Adv. Options" msgstr "Opțiuni Avans. CNCJob" -#: flatcamGUI/FlatCAMGUI.py:5544 flatcamGUI/ObjectUI.py:1510 +#: flatcamGUI/FlatCAMGUI.py:5707 flatcamGUI/ObjectUI.py:1523 msgid "Toolchange G-Code:" msgstr "G-Code pt schimb unealtă:" -#: flatcamGUI/FlatCAMGUI.py:5546 +#: flatcamGUI/FlatCAMGUI.py:5709 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -7896,11 +8004,11 @@ msgstr "" "Comanda M6 este inlocuita.\n" "Aceata va constitui un macro pentru schimbul uneltelor." -#: flatcamGUI/FlatCAMGUI.py:5560 flatcamGUI/ObjectUI.py:1532 +#: flatcamGUI/FlatCAMGUI.py:5723 flatcamGUI/ObjectUI.py:1545 msgid "Use Toolchange Macro" msgstr "Fol. Macro schimb unealtă" -#: flatcamGUI/FlatCAMGUI.py:5562 flatcamGUI/ObjectUI.py:1535 +#: flatcamGUI/FlatCAMGUI.py:5725 flatcamGUI/ObjectUI.py:1548 msgid "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." @@ -7908,7 +8016,7 @@ msgstr "" "Bifează aici daca dorești să folosești Macro pentru\n" "schimb unelte." -#: flatcamGUI/FlatCAMGUI.py:5574 flatcamGUI/ObjectUI.py:1544 +#: flatcamGUI/FlatCAMGUI.py:5737 flatcamGUI/ObjectUI.py:1557 msgid "" "A list of the FlatCAM variables that can be used\n" "in the Toolchange event.\n" @@ -7918,71 +8026,71 @@ msgstr "" "de schimb al uneltei (când se intalneste comanda M6).\n" "Este necesar să fie inconjurate de simbolul '%'." -#: flatcamGUI/FlatCAMGUI.py:5581 flatcamGUI/ObjectUI.py:1551 +#: flatcamGUI/FlatCAMGUI.py:5744 flatcamGUI/ObjectUI.py:1564 msgid "Parameters" msgstr "Parametri" -#: flatcamGUI/FlatCAMGUI.py:5584 flatcamGUI/ObjectUI.py:1554 +#: flatcamGUI/FlatCAMGUI.py:5747 flatcamGUI/ObjectUI.py:1567 msgid "FlatCAM CNC parameters" msgstr "Parametri FlatCAM CNC" -#: flatcamGUI/FlatCAMGUI.py:5585 flatcamGUI/ObjectUI.py:1555 +#: flatcamGUI/FlatCAMGUI.py:5748 flatcamGUI/ObjectUI.py:1568 msgid "tool = tool number" msgstr "tool = numărul uneltei" -#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1556 +#: flatcamGUI/FlatCAMGUI.py:5749 flatcamGUI/ObjectUI.py:1569 msgid "tooldia = tool diameter" msgstr "tooldia = dimaetrul uneltei" -#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1557 +#: flatcamGUI/FlatCAMGUI.py:5750 flatcamGUI/ObjectUI.py:1570 msgid "t_drills = for Excellon, total number of drills" msgstr "t_drills = pt Excellom, numărul total de operațiuni găurire" -#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1558 +#: flatcamGUI/FlatCAMGUI.py:5751 flatcamGUI/ObjectUI.py:1571 msgid "x_toolchange = X coord for Toolchange" msgstr "x_toolchange = coord. X pt schimb unealtă" -#: flatcamGUI/FlatCAMGUI.py:5589 flatcamGUI/ObjectUI.py:1559 +#: flatcamGUI/FlatCAMGUI.py:5752 flatcamGUI/ObjectUI.py:1572 msgid "y_toolchange = Y coord for Toolchange" msgstr "y_toolchange = coord. Y pt schimb unealtă" -#: flatcamGUI/FlatCAMGUI.py:5590 flatcamGUI/ObjectUI.py:1560 +#: flatcamGUI/FlatCAMGUI.py:5753 flatcamGUI/ObjectUI.py:1573 msgid "z_toolchange = Z coord for Toolchange" msgstr "z_toolchange = coord. Z pt schimb unealtă" -#: flatcamGUI/FlatCAMGUI.py:5591 +#: flatcamGUI/FlatCAMGUI.py:5754 msgid "z_cut = Z depth for the cut" msgstr "z_cut = Z adâncimea de tăiere" -#: flatcamGUI/FlatCAMGUI.py:5592 +#: flatcamGUI/FlatCAMGUI.py:5755 msgid "z_move = Z height for travel" msgstr "z_move = Z Înălţimea deplasare" -#: flatcamGUI/FlatCAMGUI.py:5593 flatcamGUI/ObjectUI.py:1563 +#: flatcamGUI/FlatCAMGUI.py:5756 flatcamGUI/ObjectUI.py:1576 msgid "z_depthpercut = the step value for multidepth cut" msgstr "z_depthpercut = pasul pentru taierea progresiva" -#: flatcamGUI/FlatCAMGUI.py:5594 flatcamGUI/ObjectUI.py:1564 +#: flatcamGUI/FlatCAMGUI.py:5757 flatcamGUI/ObjectUI.py:1577 msgid "spindlesspeed = the value for the spindle speed" msgstr "spindlesspeed = valoarea viteza motor" -#: flatcamGUI/FlatCAMGUI.py:5595 flatcamGUI/ObjectUI.py:1565 +#: flatcamGUI/FlatCAMGUI.py:5759 flatcamGUI/ObjectUI.py:1578 msgid "dwelltime = time to dwell to allow the spindle to reach it's set RPM" msgstr "dwelltime = durata de asteptare ca motorul să ajunga la turatia setată" -#: flatcamGUI/FlatCAMGUI.py:5616 +#: flatcamGUI/FlatCAMGUI.py:5780 msgid "NCC Tool Options" msgstr "Opțiuni Unealta NCC" -#: flatcamGUI/FlatCAMGUI.py:5629 flatcamGUI/FlatCAMGUI.py:6359 +#: flatcamGUI/FlatCAMGUI.py:5793 flatcamGUI/FlatCAMGUI.py:6523 msgid "Tools dia:" msgstr "Dia unealtă:" -#: flatcamGUI/FlatCAMGUI.py:5631 +#: flatcamGUI/FlatCAMGUI.py:5795 msgid "Diameters of the cutting tools, separated by ','" msgstr "Diametrele pentru unelte taietoare, separate cu virgula" -#: flatcamGUI/FlatCAMGUI.py:5639 flatcamTools/ToolNonCopperClear.py:167 +#: flatcamGUI/FlatCAMGUI.py:5803 flatcamTools/ToolNonCopperClear.py:167 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -8008,11 +8116,11 @@ msgstr "" "Valori mari= procesare lenta cat și o execuţie la fel de lenta a PCB-ului,\n" "datorita numărului mai mare de treceri-tăiere." -#: flatcamGUI/FlatCAMGUI.py:5655 flatcamTools/ToolNonCopperClear.py:183 +#: flatcamGUI/FlatCAMGUI.py:5819 flatcamTools/ToolNonCopperClear.py:183 msgid "Bounding box margin." msgstr "Marginea pentru forma înconjurătoare." -#: flatcamGUI/FlatCAMGUI.py:5664 flatcamTools/ToolNonCopperClear.py:192 +#: flatcamGUI/FlatCAMGUI.py:5828 flatcamTools/ToolNonCopperClear.py:192 #: flatcamTools/ToolPaint.py:190 msgid "" "Algorithm for non-copper clearing:
Standard: Fixed step inwards." @@ -8023,12 +8131,12 @@ msgstr "" "
Punct-samanta: De la punctul samanta, spre expterior.
Linii " "drepte: Linii paralele." -#: flatcamGUI/FlatCAMGUI.py:5696 flatcamTools/ToolNonCopperClear.py:224 +#: flatcamGUI/FlatCAMGUI.py:5860 flatcamTools/ToolNonCopperClear.py:224 #: flatcamTools/ToolPaint.py:222 msgid "Rest M.:" msgstr "Rest M.:" -#: flatcamGUI/FlatCAMGUI.py:5698 +#: flatcamGUI/FlatCAMGUI.py:5862 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -8046,11 +8154,11 @@ msgstr "" "precedenta.\n" "Daca nu este bifat, foloseşte algoritmul standard." -#: flatcamGUI/FlatCAMGUI.py:5717 +#: flatcamGUI/FlatCAMGUI.py:5881 msgid "Cutout Tool Options" msgstr "Opțiuni Unealta Decupare" -#: flatcamGUI/FlatCAMGUI.py:5722 flatcamGUI/ObjectUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:5886 flatcamGUI/ObjectUI.py:402 msgid "" "Create toolpaths to cut around\n" "the PCB and separate it from\n" @@ -8060,17 +8168,17 @@ msgstr "" "lasand punţi pentru a separa PCB-ul de \n" "placa din care a fost taiat." -#: flatcamGUI/FlatCAMGUI.py:5741 +#: flatcamGUI/FlatCAMGUI.py:5905 msgid "" "Distance from objects at which\n" "to draw the cutout." msgstr "Distanta de obiecte la care să se deseneze forma taietoare." -#: flatcamGUI/FlatCAMGUI.py:5748 flatcamTools/ToolCutOut.py:96 +#: flatcamGUI/FlatCAMGUI.py:5912 flatcamTools/ToolCutOut.py:96 msgid "Gap size:" msgstr "Dim. punte:" -#: flatcamGUI/FlatCAMGUI.py:5750 +#: flatcamGUI/FlatCAMGUI.py:5914 msgid "" "Size of the gaps in the toolpath\n" "that will remain to hold the\n" @@ -8080,11 +8188,11 @@ msgstr "" "care vor mentine PCB-ul in poziţie, fără să cada\n" "din placa 'mama' dupa decupare." -#: flatcamGUI/FlatCAMGUI.py:5758 flatcamTools/ToolCutOut.py:134 +#: flatcamGUI/FlatCAMGUI.py:5922 flatcamTools/ToolCutOut.py:134 msgid "Gaps:" msgstr "Punţi:" -#: flatcamGUI/FlatCAMGUI.py:5760 +#: flatcamGUI/FlatCAMGUI.py:5924 msgid "" "Number of bridge gaps used for the cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -8106,21 +8214,21 @@ msgstr "" "- 2tb = 2* sus - 2* jos\n" "- 8 = 2* stânga - 2* dreapta - 2* sus - 2* jos" -#: flatcamGUI/FlatCAMGUI.py:5781 flatcamTools/ToolCutOut.py:115 +#: flatcamGUI/FlatCAMGUI.py:5945 flatcamTools/ToolCutOut.py:115 msgid "Convex Sh.:" msgstr "Formă Conv." -#: flatcamGUI/FlatCAMGUI.py:5783 +#: flatcamGUI/FlatCAMGUI.py:5947 msgid "Create a convex shape surrounding the entire PCB." msgstr "" "Generează un obiect tip Geometrie care va inconjura\n" "tot PCB-ul. Forma sa este convexa." -#: flatcamGUI/FlatCAMGUI.py:5796 +#: flatcamGUI/FlatCAMGUI.py:5960 msgid "2Sided Tool Options" msgstr "Opțiuni Unealta 2Fețe" -#: flatcamGUI/FlatCAMGUI.py:5801 +#: flatcamGUI/FlatCAMGUI.py:5965 msgid "" "A tool to help in creating a double sided\n" "PCB using alignment holes." @@ -8128,28 +8236,28 @@ msgstr "" "O unealtă care ajuta in crearea de PCB-uri cu 2 fețe\n" "folosind găuri de aliniere." -#: flatcamGUI/FlatCAMGUI.py:5811 flatcamTools/ToolDblSided.py:235 +#: flatcamGUI/FlatCAMGUI.py:5975 flatcamTools/ToolDblSided.py:235 msgid "Drill diam.:" msgstr "Dia gaura:" -#: flatcamGUI/FlatCAMGUI.py:5813 flatcamTools/ToolDblSided.py:226 +#: flatcamGUI/FlatCAMGUI.py:5977 flatcamTools/ToolDblSided.py:226 #: flatcamTools/ToolDblSided.py:237 msgid "Diameter of the drill for the alignment holes." msgstr "Diametrul găurii pentru găurile de aliniere." -#: flatcamGUI/FlatCAMGUI.py:5822 flatcamTools/ToolDblSided.py:120 +#: flatcamGUI/FlatCAMGUI.py:5986 flatcamTools/ToolDblSided.py:120 msgid "Mirror Axis:" msgstr "Axe oglindire:" -#: flatcamGUI/FlatCAMGUI.py:5824 flatcamTools/ToolDblSided.py:122 +#: flatcamGUI/FlatCAMGUI.py:5988 flatcamTools/ToolDblSided.py:122 msgid "Mirror vertically (X) or horizontally (Y)." msgstr "Oglindește vertical (X) sau orizontal (Y)." -#: flatcamGUI/FlatCAMGUI.py:5835 flatcamTools/ToolDblSided.py:133 +#: flatcamGUI/FlatCAMGUI.py:5999 flatcamTools/ToolDblSided.py:133 msgid "Axis Ref:" msgstr "Axa de ref.:" -#: flatcamGUI/FlatCAMGUI.py:5837 +#: flatcamGUI/FlatCAMGUI.py:6001 msgid "" "The axis should pass through a point or cut\n" " a specified box (in a Geometry object) in \n" @@ -8158,11 +8266,11 @@ msgstr "" "Axa de referinţă ar trebui să treaca printr-un punct ori să strabata\n" " o forma (specificata un obiect tip Geometrie) prin mijloc." -#: flatcamGUI/FlatCAMGUI.py:5853 +#: flatcamGUI/FlatCAMGUI.py:6017 msgid "Paint Tool Options" msgstr "Opțiuni Unealta Paint" -#: flatcamGUI/FlatCAMGUI.py:5860 flatcamGUI/ObjectUI.py:1305 +#: flatcamGUI/FlatCAMGUI.py:6024 flatcamGUI/ObjectUI.py:1305 msgid "" "Creates tool paths to cover the\n" "whole area of a polygon (remove\n" @@ -8175,7 +8283,7 @@ msgstr "" "singur poligon se va cere să faceti click pe poligonul\n" "dorit." -#: flatcamGUI/FlatCAMGUI.py:5884 +#: flatcamGUI/FlatCAMGUI.py:6048 msgid "" "How much (fraction) of the tool\n" "width to overlap each tool pass." @@ -8183,19 +8291,19 @@ msgstr "" "Cat de mult (o fracţie din diametrul uneltei) din diametrul uneltei,\n" "(lăţimea de tăiere) să se suprapună peste trecerea anterioară." -#: flatcamGUI/FlatCAMGUI.py:5938 flatcamTools/ToolPaint.py:237 +#: flatcamGUI/FlatCAMGUI.py:6102 flatcamTools/ToolPaint.py:237 msgid "Selection:" msgstr "Selecţie:" -#: flatcamGUI/FlatCAMGUI.py:5940 +#: flatcamGUI/FlatCAMGUI.py:6104 msgid "How to select the polygons to paint." msgstr "Cum să se selecteze poligoanele de pictat (paint)." -#: flatcamGUI/FlatCAMGUI.py:5958 +#: flatcamGUI/FlatCAMGUI.py:6122 msgid "Film Tool Options" msgstr "Opțiuni Unealta Film" -#: flatcamGUI/FlatCAMGUI.py:5963 +#: flatcamGUI/FlatCAMGUI.py:6127 msgid "" "Create a PCB film from a Gerber or Geometry\n" "FlatCAM object.\n" @@ -8204,11 +8312,11 @@ msgstr "" "Crează un film PCB dintr-un obiect Gerber sau tip Geometrie.\n" "Fişierul este salvat in format SVG." -#: flatcamGUI/FlatCAMGUI.py:5974 flatcamTools/ToolFilm.py:116 +#: flatcamGUI/FlatCAMGUI.py:6138 flatcamTools/ToolFilm.py:116 msgid "Film Type:" msgstr "Tip film:" -#: flatcamGUI/FlatCAMGUI.py:5976 flatcamTools/ToolFilm.py:118 +#: flatcamGUI/FlatCAMGUI.py:6140 flatcamTools/ToolFilm.py:118 msgid "" "Generate a Positive black film or a Negative film.\n" "Positive means that it will print the features\n" @@ -8222,11 +8330,11 @@ msgstr "" "Negativ = traseele vor fi albe pe un fundal negru.\n" "Formatul fişierului pt filmul salvat este SVG." -#: flatcamGUI/FlatCAMGUI.py:5987 flatcamTools/ToolFilm.py:130 +#: flatcamGUI/FlatCAMGUI.py:6151 flatcamTools/ToolFilm.py:130 msgid "Border:" msgstr "Bordura:" -#: flatcamGUI/FlatCAMGUI.py:5989 flatcamTools/ToolFilm.py:132 +#: flatcamGUI/FlatCAMGUI.py:6153 flatcamTools/ToolFilm.py:132 msgid "" "Specify a border around the object.\n" "Only for negative film.\n" @@ -8243,11 +8351,11 @@ msgstr "" "Va crea o bara solida neagra in jurul printului efectiv permitand o\n" "delimitare exacta" -#: flatcamGUI/FlatCAMGUI.py:6002 flatcamTools/ToolFilm.py:144 +#: flatcamGUI/FlatCAMGUI.py:6166 flatcamTools/ToolFilm.py:144 msgid "Scale Stroke:" msgstr "Scalează:" -#: flatcamGUI/FlatCAMGUI.py:6004 flatcamTools/ToolFilm.py:146 +#: flatcamGUI/FlatCAMGUI.py:6168 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 " @@ -8257,11 +8365,11 @@ msgstr "" "Scalează grosimea conturului fiecarui element din fişierul SVG.\n" "Elementele mai mici vor fi afectate mai mult." -#: flatcamGUI/FlatCAMGUI.py:6019 +#: flatcamGUI/FlatCAMGUI.py:6183 msgid "Panelize Tool Options" msgstr "Opțiuni Unealta Panelizare" -#: flatcamGUI/FlatCAMGUI.py:6024 +#: flatcamGUI/FlatCAMGUI.py:6188 msgid "" "Create an object that contains an array of (x, y) elements,\n" "each element is a copy of the source object spaced\n" @@ -8271,11 +8379,11 @@ msgstr "" "unde fiecare element este o copie a obiectului sursa, separat la o\n" "distanţă X, Y unul de celalalt." -#: flatcamGUI/FlatCAMGUI.py:6035 flatcamTools/ToolPanelize.py:147 +#: flatcamGUI/FlatCAMGUI.py:6199 flatcamTools/ToolPanelize.py:147 msgid "Spacing cols:" msgstr "Sep. coloane:" -#: flatcamGUI/FlatCAMGUI.py:6037 flatcamTools/ToolPanelize.py:149 +#: flatcamGUI/FlatCAMGUI.py:6201 flatcamTools/ToolPanelize.py:149 msgid "" "Spacing between columns of the desired panel.\n" "In current units." @@ -8283,11 +8391,11 @@ msgstr "" "Spatiul de separare între coloane.\n" "In unitatile curente." -#: flatcamGUI/FlatCAMGUI.py:6045 flatcamTools/ToolPanelize.py:156 +#: flatcamGUI/FlatCAMGUI.py:6209 flatcamTools/ToolPanelize.py:156 msgid "Spacing rows:" msgstr "Sep. linii:" -#: flatcamGUI/FlatCAMGUI.py:6047 flatcamTools/ToolPanelize.py:158 +#: flatcamGUI/FlatCAMGUI.py:6211 flatcamTools/ToolPanelize.py:158 msgid "" "Spacing between rows of the desired panel.\n" "In current units." @@ -8295,27 +8403,27 @@ msgstr "" "Spatiul de separare între linii.\n" "In unitatile curente." -#: flatcamGUI/FlatCAMGUI.py:6055 flatcamTools/ToolPanelize.py:165 +#: flatcamGUI/FlatCAMGUI.py:6219 flatcamTools/ToolPanelize.py:165 msgid "Columns:" msgstr "Coloane:" -#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:167 +#: flatcamGUI/FlatCAMGUI.py:6221 flatcamTools/ToolPanelize.py:167 msgid "Number of columns of the desired panel" msgstr "Numărul de coloane ale panel-ului dorit." -#: flatcamGUI/FlatCAMGUI.py:6064 flatcamTools/ToolPanelize.py:173 +#: flatcamGUI/FlatCAMGUI.py:6228 flatcamTools/ToolPanelize.py:173 msgid "Rows:" msgstr "Linii:" -#: flatcamGUI/FlatCAMGUI.py:6066 flatcamTools/ToolPanelize.py:175 +#: flatcamGUI/FlatCAMGUI.py:6230 flatcamTools/ToolPanelize.py:175 msgid "Number of rows of the desired panel" msgstr "Numărul de linii ale panel-ului dorit." -#: flatcamGUI/FlatCAMGUI.py:6074 +#: flatcamGUI/FlatCAMGUI.py:6238 msgid "Panel Type:" msgstr "Tip panel:" -#: flatcamGUI/FlatCAMGUI.py:6076 +#: flatcamGUI/FlatCAMGUI.py:6240 msgid "" "Choose the type of object for the panel object:\n" "- Gerber\n" @@ -8325,11 +8433,11 @@ msgstr "" "- Gerber\n" "- Geometrie" -#: flatcamGUI/FlatCAMGUI.py:6085 +#: flatcamGUI/FlatCAMGUI.py:6249 msgid "Constrain within:" msgstr "Constrange:" -#: flatcamGUI/FlatCAMGUI.py:6087 flatcamTools/ToolPanelize.py:195 +#: flatcamGUI/FlatCAMGUI.py:6251 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" @@ -8343,11 +8451,11 @@ msgstr "" "panelul final va contine numai acel număr de linii/coloane care se inscrie\n" "complet in aria desemnata." -#: flatcamGUI/FlatCAMGUI.py:6096 flatcamTools/ToolPanelize.py:204 +#: flatcamGUI/FlatCAMGUI.py:6260 flatcamTools/ToolPanelize.py:204 msgid "Width (DX):" msgstr "Latime (Dx):" -#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:206 +#: flatcamGUI/FlatCAMGUI.py:6262 flatcamTools/ToolPanelize.py:206 msgid "" "The width (DX) within which the panel must fit.\n" "In current units." @@ -8355,11 +8463,11 @@ msgstr "" "Lăţimea (Dx) in care panelul trebuie să se inscrie.\n" "In unitati curente." -#: flatcamGUI/FlatCAMGUI.py:6105 flatcamTools/ToolPanelize.py:212 +#: flatcamGUI/FlatCAMGUI.py:6269 flatcamTools/ToolPanelize.py:212 msgid "Height (DY):" msgstr "Inaltime (Dy):" -#: flatcamGUI/FlatCAMGUI.py:6107 flatcamTools/ToolPanelize.py:214 +#: flatcamGUI/FlatCAMGUI.py:6271 flatcamTools/ToolPanelize.py:214 msgid "" "The height (DY)within which the panel must fit.\n" "In current units." @@ -8367,15 +8475,15 @@ msgstr "" "Înălţimea (Dy) in care panelul trebuie să se inscrie.\n" "In unitati curente." -#: flatcamGUI/FlatCAMGUI.py:6121 +#: flatcamGUI/FlatCAMGUI.py:6285 msgid "Calculators Tool Options" msgstr "Opțiuni Unealta Calculatoare" -#: flatcamGUI/FlatCAMGUI.py:6124 +#: flatcamGUI/FlatCAMGUI.py:6288 msgid "V-Shape Tool Calculator:" msgstr "Calculator: Unealta V-shape" -#: flatcamGUI/FlatCAMGUI.py:6126 +#: flatcamGUI/FlatCAMGUI.py:6290 msgid "" "Calculate the tool diameter for a given V-shape tool,\n" "having the tip diameter, tip angle and\n" @@ -8385,11 +8493,11 @@ msgstr "" "avand diametrul vârfului și unghiul la vârf cat și\n" "adâncimea de tăiere, ca parametri." -#: flatcamGUI/FlatCAMGUI.py:6137 flatcamTools/ToolCalculators.py:94 +#: flatcamGUI/FlatCAMGUI.py:6301 flatcamTools/ToolCalculators.py:94 msgid "Tip Diameter:" msgstr "Dia vârf:" -#: flatcamGUI/FlatCAMGUI.py:6139 +#: flatcamGUI/FlatCAMGUI.py:6303 msgid "" "This is the tool tip diameter.\n" "It is specified by manufacturer." @@ -8397,11 +8505,11 @@ msgstr "" "Acesta este diametrul la vârf al uneltei.\n" "Este specificat de producator." -#: flatcamGUI/FlatCAMGUI.py:6147 +#: flatcamGUI/FlatCAMGUI.py:6311 msgid "Tip angle:" msgstr "Unghiul la vârf:" -#: flatcamGUI/FlatCAMGUI.py:6149 +#: flatcamGUI/FlatCAMGUI.py:6313 msgid "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." @@ -8409,7 +8517,7 @@ msgstr "" "Acesta este unghiul la vârf al uneltei.\n" "Este specificat de producator." -#: flatcamGUI/FlatCAMGUI.py:6159 +#: flatcamGUI/FlatCAMGUI.py:6323 msgid "" "This is depth to cut into material.\n" "In the CNCJob object it is the CutZ parameter." @@ -8417,11 +8525,11 @@ msgstr "" "Aceasta este adâncimea la care se taie in material.\n" "In obiectul CNCJob este parametrul >Z tăiere<." -#: flatcamGUI/FlatCAMGUI.py:6166 +#: flatcamGUI/FlatCAMGUI.py:6330 msgid "ElectroPlating Calculator:" msgstr "Calculator Electroplacare:" -#: flatcamGUI/FlatCAMGUI.py:6168 flatcamTools/ToolCalculators.py:152 +#: flatcamGUI/FlatCAMGUI.py:6332 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 " @@ -8433,31 +8541,31 @@ msgstr "" "- clorura paladiu\n" "- hipofosfit de calciu" -#: flatcamGUI/FlatCAMGUI.py:6178 flatcamTools/ToolCalculators.py:161 +#: flatcamGUI/FlatCAMGUI.py:6342 flatcamTools/ToolCalculators.py:161 msgid "Board Length:" msgstr "Lung. placii:" -#: flatcamGUI/FlatCAMGUI.py:6180 flatcamTools/ToolCalculators.py:165 +#: flatcamGUI/FlatCAMGUI.py:6344 flatcamTools/ToolCalculators.py:165 msgid "This is the board length. In centimeters." msgstr "" "Aceasta este lungimea PCB-ului.\n" "In centimetri. " -#: flatcamGUI/FlatCAMGUI.py:6186 flatcamTools/ToolCalculators.py:167 +#: flatcamGUI/FlatCAMGUI.py:6350 flatcamTools/ToolCalculators.py:167 msgid "Board Width:" msgstr "Lat. placii:" -#: flatcamGUI/FlatCAMGUI.py:6188 flatcamTools/ToolCalculators.py:171 +#: flatcamGUI/FlatCAMGUI.py:6352 flatcamTools/ToolCalculators.py:171 msgid "This is the board width.In centimeters." msgstr "" "Aceasta este lăţimea PCB-ului.\n" "In centimetri. " -#: flatcamGUI/FlatCAMGUI.py:6193 flatcamTools/ToolCalculators.py:173 +#: flatcamGUI/FlatCAMGUI.py:6357 flatcamTools/ToolCalculators.py:173 msgid "Current Density:" msgstr "Densitate I:" -#: flatcamGUI/FlatCAMGUI.py:6196 flatcamTools/ToolCalculators.py:177 +#: flatcamGUI/FlatCAMGUI.py:6360 flatcamTools/ToolCalculators.py:177 msgid "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." @@ -8465,11 +8573,11 @@ msgstr "" "Densitatea de curent care să treaca prin placa.\n" "In ASF (amperi pe picior la patrat)." -#: flatcamGUI/FlatCAMGUI.py:6202 flatcamTools/ToolCalculators.py:181 +#: flatcamGUI/FlatCAMGUI.py:6366 flatcamTools/ToolCalculators.py:181 msgid "Copper Growth:" msgstr "Grosime Cu:" -#: flatcamGUI/FlatCAMGUI.py:6205 flatcamTools/ToolCalculators.py:185 +#: flatcamGUI/FlatCAMGUI.py:6369 flatcamTools/ToolCalculators.py:185 msgid "" "How thick the copper growth is intended to be.\n" "In microns." @@ -8477,11 +8585,11 @@ msgstr "" "Cat de gros se dorește să fie stratul de cupru depus.\n" "In microni." -#: flatcamGUI/FlatCAMGUI.py:6218 +#: flatcamGUI/FlatCAMGUI.py:6382 msgid "Transform Tool Options" msgstr "Opțiuni Unealta Transformare" -#: flatcamGUI/FlatCAMGUI.py:6223 +#: flatcamGUI/FlatCAMGUI.py:6387 msgid "" "Various transformations that can be applied\n" "on a FlatCAM object." @@ -8494,47 +8602,47 @@ msgstr "" "- deformare\n" "- oglindire" -#: flatcamGUI/FlatCAMGUI.py:6233 +#: flatcamGUI/FlatCAMGUI.py:6397 msgid "Rotate Angle:" msgstr "Unghi Rotaţie:" -#: flatcamGUI/FlatCAMGUI.py:6235 +#: flatcamGUI/FlatCAMGUI.py:6399 msgid "Angle for rotation. In degrees." msgstr "Unnghiul pentru rotaţie. In grade." -#: flatcamGUI/FlatCAMGUI.py:6242 +#: flatcamGUI/FlatCAMGUI.py:6406 msgid "Skew_X angle:" msgstr "Unghi Deform_X:" -#: flatcamGUI/FlatCAMGUI.py:6244 +#: flatcamGUI/FlatCAMGUI.py:6408 msgid "Angle for Skew/Shear on X axis. In degrees." msgstr "Unghiul pentru deformare pe axa X. In grade." -#: flatcamGUI/FlatCAMGUI.py:6251 +#: flatcamGUI/FlatCAMGUI.py:6415 msgid "Skew_Y angle:" msgstr "Unghi Deform_Y:" -#: flatcamGUI/FlatCAMGUI.py:6253 +#: flatcamGUI/FlatCAMGUI.py:6417 msgid "Angle for Skew/Shear on Y axis. In degrees." msgstr "Unghiul pentru deformare pe axa Y. In grade." -#: flatcamGUI/FlatCAMGUI.py:6260 +#: flatcamGUI/FlatCAMGUI.py:6424 msgid "Scale_X factor:" msgstr "Factor Scal_X:" -#: flatcamGUI/FlatCAMGUI.py:6262 +#: flatcamGUI/FlatCAMGUI.py:6426 msgid "Factor for scaling on X axis." msgstr "Factor de scalare pe axa X." -#: flatcamGUI/FlatCAMGUI.py:6269 +#: flatcamGUI/FlatCAMGUI.py:6433 msgid "Scale_Y factor:" msgstr "Factor Scal_Y:" -#: flatcamGUI/FlatCAMGUI.py:6271 +#: flatcamGUI/FlatCAMGUI.py:6435 msgid "Factor for scaling on Y axis." msgstr "Factor de scalare pe axa Y." -#: flatcamGUI/FlatCAMGUI.py:6279 +#: flatcamGUI/FlatCAMGUI.py:6443 msgid "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." @@ -8542,7 +8650,7 @@ msgstr "" "Scalează obiectele selectate folosind\n" "Factor Scal_X pentru ambele axe." -#: flatcamGUI/FlatCAMGUI.py:6287 flatcamTools/ToolTransform.py:210 +#: flatcamGUI/FlatCAMGUI.py:6451 flatcamTools/ToolTransform.py:210 msgid "" "Scale the selected object(s)\n" "using the origin reference when checked,\n" @@ -8555,27 +8663,27 @@ msgstr "" "centrul formei inconjuatoare care cuprinde\n" "toate obiectele selectate." -#: flatcamGUI/FlatCAMGUI.py:6296 +#: flatcamGUI/FlatCAMGUI.py:6460 msgid "Offset_X val:" msgstr "Ofset_X:" -#: flatcamGUI/FlatCAMGUI.py:6298 +#: flatcamGUI/FlatCAMGUI.py:6462 msgid "Distance to offset on X axis. In current units." msgstr "Distanta la care se face ofset pe axa X. In unitatile curente." -#: flatcamGUI/FlatCAMGUI.py:6305 +#: flatcamGUI/FlatCAMGUI.py:6469 msgid "Offset_Y val:" msgstr "Ofset_Y:" -#: flatcamGUI/FlatCAMGUI.py:6307 +#: flatcamGUI/FlatCAMGUI.py:6471 msgid "Distance to offset on Y axis. In current units." msgstr "Distanta la care se face ofset pe axa Y. In unitatile curente." -#: flatcamGUI/FlatCAMGUI.py:6313 +#: flatcamGUI/FlatCAMGUI.py:6477 msgid "Mirror Reference" msgstr "Referinţă Oglindire" -#: flatcamGUI/FlatCAMGUI.py:6315 flatcamTools/ToolTransform.py:314 +#: flatcamGUI/FlatCAMGUI.py:6479 flatcamTools/ToolTransform.py:314 msgid "" "Flip the selected object(s)\n" "around the point in Point Entry Field.\n" @@ -8598,11 +8706,11 @@ msgstr "" "in forma (x, y).\n" "La final apasa butonul de oglindire pe axa dorita. " -#: flatcamGUI/FlatCAMGUI.py:6326 +#: flatcamGUI/FlatCAMGUI.py:6490 msgid " Mirror Ref. Point:" msgstr "Pt. Ref. Oglindire:" -#: flatcamGUI/FlatCAMGUI.py:6328 flatcamTools/ToolTransform.py:327 +#: flatcamGUI/FlatCAMGUI.py:6492 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" @@ -8613,11 +8721,11 @@ msgstr "" "X din (x,y) se va folosi când se face oglindirea pe axa X\n" "Y din (x,y) se va folosi când se face oglindirea pe axa Y." -#: flatcamGUI/FlatCAMGUI.py:6345 +#: flatcamGUI/FlatCAMGUI.py:6509 msgid "SolderPaste Tool Options" msgstr "Opțiuni Unealta Pasta Fludor" -#: flatcamGUI/FlatCAMGUI.py:6350 +#: flatcamGUI/FlatCAMGUI.py:6514 msgid "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." @@ -8625,49 +8733,49 @@ msgstr "" "O unealtă care crează cod G-Code pentru dispensarea de pastă de fludor\n" "pe padurile unui PCB." -#: flatcamGUI/FlatCAMGUI.py:6361 +#: flatcamGUI/FlatCAMGUI.py:6525 msgid "Diameters of nozzle tools, separated by ','" msgstr "Diametrele uneltelor (nozzle), separate prin virgula." -#: flatcamGUI/FlatCAMGUI.py:6368 +#: flatcamGUI/FlatCAMGUI.py:6532 msgid "New Nozzle Dia:" msgstr "Nou Dia::" -#: flatcamGUI/FlatCAMGUI.py:6370 flatcamTools/ToolSolderPaste.py:103 +#: flatcamGUI/FlatCAMGUI.py:6534 flatcamTools/ToolSolderPaste.py:103 msgid "Diameter for the new Nozzle tool to add in the Tool Table" msgstr "" "Valoarea pentru diametrul unei noi unelte (nozzle) pentru adaugare in Tabela " "de Unelte" -#: flatcamGUI/FlatCAMGUI.py:6378 flatcamTools/ToolSolderPaste.py:166 +#: flatcamGUI/FlatCAMGUI.py:6542 flatcamTools/ToolSolderPaste.py:166 msgid "Z Dispense Start:" msgstr "Z start disp.:" -#: flatcamGUI/FlatCAMGUI.py:6380 flatcamTools/ToolSolderPaste.py:168 +#: flatcamGUI/FlatCAMGUI.py:6544 flatcamTools/ToolSolderPaste.py:168 msgid "The height (Z) when solder paste dispensing starts." msgstr "Înălţimea (Z) când incepe dispensarea de pastă de fludor." -#: flatcamGUI/FlatCAMGUI.py:6387 flatcamTools/ToolSolderPaste.py:174 +#: flatcamGUI/FlatCAMGUI.py:6551 flatcamTools/ToolSolderPaste.py:174 msgid "Z Dispense:" msgstr "Z disp.:" -#: flatcamGUI/FlatCAMGUI.py:6389 flatcamTools/ToolSolderPaste.py:176 +#: flatcamGUI/FlatCAMGUI.py:6553 flatcamTools/ToolSolderPaste.py:176 msgid "The height (Z) when doing solder paste dispensing." msgstr "Înălţimea (Z) in timp ce se face dispensarea de pastă de fludor." -#: flatcamGUI/FlatCAMGUI.py:6396 flatcamTools/ToolSolderPaste.py:183 +#: flatcamGUI/FlatCAMGUI.py:6560 flatcamTools/ToolSolderPaste.py:183 msgid "Z Dispense Stop:" msgstr "Z stop disp.:" -#: flatcamGUI/FlatCAMGUI.py:6398 flatcamTools/ToolSolderPaste.py:185 +#: flatcamGUI/FlatCAMGUI.py:6562 flatcamTools/ToolSolderPaste.py:185 msgid "The height (Z) when solder paste dispensing stops." msgstr "Înălţimea (Z) când se opreste dispensarea de pastă de fludor." -#: flatcamGUI/FlatCAMGUI.py:6405 flatcamTools/ToolSolderPaste.py:191 +#: flatcamGUI/FlatCAMGUI.py:6569 flatcamTools/ToolSolderPaste.py:191 msgid "Z Travel:" msgstr "Z deplasare:" -#: flatcamGUI/FlatCAMGUI.py:6407 flatcamTools/ToolSolderPaste.py:193 +#: flatcamGUI/FlatCAMGUI.py:6571 flatcamTools/ToolSolderPaste.py:193 msgid "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." @@ -8675,19 +8783,19 @@ msgstr "" "Înălţimea (Z) când se face deplasare între pad-uri.\n" "(fără dispensare de pastă de fludor)." -#: flatcamGUI/FlatCAMGUI.py:6415 flatcamTools/ToolSolderPaste.py:200 +#: flatcamGUI/FlatCAMGUI.py:6579 flatcamTools/ToolSolderPaste.py:200 msgid "Z Toolchange:" msgstr "Z schimb. unealtă:" -#: flatcamGUI/FlatCAMGUI.py:6417 flatcamTools/ToolSolderPaste.py:202 +#: flatcamGUI/FlatCAMGUI.py:6581 flatcamTools/ToolSolderPaste.py:202 msgid "The height (Z) for tool (nozzle) change." msgstr "Înălţimea (Z) când se schimbă unealta (nozzle-ul)." -#: flatcamGUI/FlatCAMGUI.py:6424 flatcamTools/ToolSolderPaste.py:208 +#: flatcamGUI/FlatCAMGUI.py:6588 flatcamTools/ToolSolderPaste.py:208 msgid "XY Toolchange:" msgstr "XY schimb unealtă:" -#: flatcamGUI/FlatCAMGUI.py:6426 flatcamTools/ToolSolderPaste.py:210 +#: flatcamGUI/FlatCAMGUI.py:6590 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." @@ -8695,42 +8803,42 @@ msgstr "" "Coordonatele X, Y pentru schimbarea uneltei (nozzle).\n" "Formatul este (x,y) unde x și y sunt numere Reale." -#: flatcamGUI/FlatCAMGUI.py:6434 flatcamTools/ToolSolderPaste.py:217 +#: flatcamGUI/FlatCAMGUI.py:6598 flatcamTools/ToolSolderPaste.py:217 msgid "Feedrate X-Y:" msgstr "Feedrate X-Y:" -#: flatcamGUI/FlatCAMGUI.py:6436 flatcamTools/ToolSolderPaste.py:219 +#: flatcamGUI/FlatCAMGUI.py:6600 flatcamTools/ToolSolderPaste.py:219 msgid "Feedrate (speed) while moving on the X-Y plane." msgstr "Viteza de deplasare a uneltei când se deplasează in planul X-Y." -#: flatcamGUI/FlatCAMGUI.py:6443 flatcamTools/ToolSolderPaste.py:225 +#: flatcamGUI/FlatCAMGUI.py:6607 flatcamTools/ToolSolderPaste.py:225 msgid "Feedrate Z:" msgstr "Feedrate Z:" -#: flatcamGUI/FlatCAMGUI.py:6445 flatcamTools/ToolSolderPaste.py:227 +#: flatcamGUI/FlatCAMGUI.py:6609 flatcamTools/ToolSolderPaste.py:227 msgid "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." msgstr "" "Viteza de deplasare a uneltei când se misca in plan vertical (planul Z)." -#: flatcamGUI/FlatCAMGUI.py:6453 flatcamTools/ToolSolderPaste.py:234 +#: flatcamGUI/FlatCAMGUI.py:6617 flatcamTools/ToolSolderPaste.py:234 msgid "Feedrate Z Dispense:" msgstr "Feedrate Z disp.:" -#: flatcamGUI/FlatCAMGUI.py:6455 flatcamTools/ToolSolderPaste.py:236 +#: flatcamGUI/FlatCAMGUI.py:6619 msgid "" "Feedrate (speed) while moving up vertically\n" -" to Dispense position (on Z plane)." +"to Dispense position (on Z plane)." msgstr "" "Viteza de deplasare la mișcarea pe verticala spre\n" "poziţia de dispensare (in planul Z)." -#: flatcamGUI/FlatCAMGUI.py:6463 flatcamTools/ToolSolderPaste.py:243 +#: flatcamGUI/FlatCAMGUI.py:6627 flatcamTools/ToolSolderPaste.py:243 msgid "Spindle Speed FWD:" msgstr "Viteza motor inainte:" -#: flatcamGUI/FlatCAMGUI.py:6465 flatcamTools/ToolSolderPaste.py:245 +#: flatcamGUI/FlatCAMGUI.py:6629 flatcamTools/ToolSolderPaste.py:245 msgid "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." @@ -8738,19 +8846,19 @@ msgstr "" "Viteza motorului de dispensare in timp ce impinge pastă de fludor\n" "prin orificiul uneltei de dispensare." -#: flatcamGUI/FlatCAMGUI.py:6473 flatcamTools/ToolSolderPaste.py:252 +#: flatcamGUI/FlatCAMGUI.py:6637 flatcamTools/ToolSolderPaste.py:252 msgid "Dwell FWD:" msgstr "Pauza dupa disp.:" -#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:254 +#: flatcamGUI/FlatCAMGUI.py:6639 flatcamTools/ToolSolderPaste.py:254 msgid "Pause after solder dispensing." msgstr "Pauza dupa dispensarea de pastă de fludor." -#: flatcamGUI/FlatCAMGUI.py:6482 flatcamTools/ToolSolderPaste.py:260 +#: flatcamGUI/FlatCAMGUI.py:6646 flatcamTools/ToolSolderPaste.py:260 msgid "Spindle Speed REV:" msgstr "Viteza motor inapoi:" -#: flatcamGUI/FlatCAMGUI.py:6484 flatcamTools/ToolSolderPaste.py:262 +#: flatcamGUI/FlatCAMGUI.py:6648 flatcamTools/ToolSolderPaste.py:262 msgid "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." @@ -8758,11 +8866,11 @@ msgstr "" "Viteza motorului de dispensare in timp ce retrage pasta de fludor\n" "prin orificiul uneltei de dispensare." -#: flatcamGUI/FlatCAMGUI.py:6492 flatcamTools/ToolSolderPaste.py:269 +#: flatcamGUI/FlatCAMGUI.py:6656 flatcamTools/ToolSolderPaste.py:269 msgid "Dwell REV:" msgstr "Pauza dupa rev:" -#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:271 +#: flatcamGUI/FlatCAMGUI.py:6658 flatcamTools/ToolSolderPaste.py:271 msgid "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." @@ -8770,23 +8878,23 @@ msgstr "" "Pauza dupa ce pasta de fludor a fost retrasă,\n" "necesară pt a ajunge la un echilibru al presiunilor." -#: flatcamGUI/FlatCAMGUI.py:6501 flatcamTools/ToolSolderPaste.py:277 +#: flatcamGUI/FlatCAMGUI.py:6665 flatcamTools/ToolSolderPaste.py:277 msgid "PostProcessors:" msgstr "Postprocesoare:" -#: flatcamGUI/FlatCAMGUI.py:6503 flatcamTools/ToolSolderPaste.py:279 +#: flatcamGUI/FlatCAMGUI.py:6667 flatcamTools/ToolSolderPaste.py:279 msgid "Files that control the GCode generation." msgstr "Fişiere care controlează generarea codului G-Code." -#: flatcamGUI/FlatCAMGUI.py:6533 flatcamGUI/FlatCAMGUI.py:6539 +#: flatcamGUI/FlatCAMGUI.py:6697 flatcamGUI/FlatCAMGUI.py:6703 msgid "Idle." msgstr "Inactiv." -#: flatcamGUI/FlatCAMGUI.py:6563 +#: flatcamGUI/FlatCAMGUI.py:6727 msgid "Application started ..." msgstr "Aplicaţia a pornit ..." -#: flatcamGUI/FlatCAMGUI.py:6564 +#: flatcamGUI/FlatCAMGUI.py:6728 msgid "Hello!" msgstr "Bună!" @@ -8866,7 +8974,7 @@ msgid "Gerber Object" msgstr "Obiect Gerber" #: flatcamGUI/ObjectUI.py:182 flatcamGUI/ObjectUI.py:517 -#: flatcamGUI/ObjectUI.py:839 flatcamGUI/ObjectUI.py:1372 +#: flatcamGUI/ObjectUI.py:839 flatcamGUI/ObjectUI.py:1382 msgid "Name:" msgstr "Nume:" @@ -9287,11 +9395,11 @@ msgstr "" "- V-Dia \n" "- V-unghi" -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465 msgid "Dia" msgstr "Dia" -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465 msgid "TT" msgstr "TU" @@ -9441,7 +9549,7 @@ msgstr "" #: flatcamGUI/ObjectUI.py:1026 msgid "Tool Data" -msgstr "Date Unealta" +msgstr "Date Unealtă" #: flatcamGUI/ObjectUI.py:1029 msgid "" @@ -9609,11 +9717,15 @@ msgstr "Obiect CNCJob" msgid "Plot kind:" msgstr "Afișare:" -#: flatcamGUI/ObjectUI.py:1378 +#: flatcamGUI/ObjectUI.py:1369 +msgid "Display Annotation:" +msgstr "Afișare notatii:" + +#: flatcamGUI/ObjectUI.py:1388 msgid "Travelled dist.:" msgstr "Distanta:" -#: flatcamGUI/ObjectUI.py:1381 flatcamGUI/ObjectUI.py:1388 +#: flatcamGUI/ObjectUI.py:1391 flatcamGUI/ObjectUI.py:1398 msgid "" "This is the total travelled distance on X-Y plane.\n" "In current units." @@ -9621,11 +9733,11 @@ msgstr "" "Aceasta este distanţa totala parcursa in planul X-Y.\n" "In unitatile curente." -#: flatcamGUI/ObjectUI.py:1416 +#: flatcamGUI/ObjectUI.py:1429 msgid "CNC Tools Table" msgstr "Tabela Unelte CNC" -#: flatcamGUI/ObjectUI.py:1419 +#: flatcamGUI/ObjectUI.py:1432 msgid "" "Tools in this CNCJob object used for cutting.\n" "The tool diameter is used for plotting on canvas.\n" @@ -9646,27 +9758,27 @@ msgstr "" "Shape\n" "(cu forma in V)." -#: flatcamGUI/ObjectUI.py:1453 +#: flatcamGUI/ObjectUI.py:1466 msgid "P" msgstr "P" -#: flatcamGUI/ObjectUI.py:1459 +#: flatcamGUI/ObjectUI.py:1472 msgid "Update Plot" msgstr "Actualiz. afișare" -#: flatcamGUI/ObjectUI.py:1461 +#: flatcamGUI/ObjectUI.py:1474 msgid "Update the plot." msgstr "Actualizează afișarea obiectelor." -#: flatcamGUI/ObjectUI.py:1468 +#: flatcamGUI/ObjectUI.py:1481 msgid "Export CNC Code:" msgstr "Exporta codul masina CNC:" -#: flatcamGUI/ObjectUI.py:1476 +#: flatcamGUI/ObjectUI.py:1489 msgid "Prepend to CNC Code:" msgstr "Adaugă la inceput in codul G-Code:" -#: flatcamGUI/ObjectUI.py:1479 +#: flatcamGUI/ObjectUI.py:1492 msgid "" "Type here any G-Code commands you would\n" "like to add to the beginning of the generated file." @@ -9674,11 +9786,11 @@ msgstr "" "Plasează aici acele comenzi GCode care se dorește să fie\n" "adaugate la inceputul codului masina CNC." -#: flatcamGUI/ObjectUI.py:1489 +#: flatcamGUI/ObjectUI.py:1502 msgid "Append to CNC Code" msgstr "Adaugă la sfârşit in codul G-Code:" -#: flatcamGUI/ObjectUI.py:1513 +#: flatcamGUI/ObjectUI.py:1526 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -9691,7 +9803,7 @@ msgid "" "having as template the 'Toolchange Custom' posprocessor file." msgstr "" "Plasează aici acele comenzi G-Code care se dorește să fie executate\n" -"atunci când evenimentul de tip Schimb Unealta este intalnit.\n" +"atunci când evenimentul de tip Schimb Unealtă este intalnit.\n" "Aceasta va constitui un Macro pentru schimbare unealtă.\n" "Variabilele FlatCAM folosite aici sunt inconjurate de simbolul %.\n" "\n" @@ -9700,19 +9812,19 @@ msgstr "" "'toolchange_custom'\n" "in numele sau." -#: flatcamGUI/ObjectUI.py:1561 +#: flatcamGUI/ObjectUI.py:1574 msgid "z_cut = depth where to cut" msgstr "z_cut = adâncimea de tăiere" -#: flatcamGUI/ObjectUI.py:1562 +#: flatcamGUI/ObjectUI.py:1575 msgid "z_move = height where to travel" msgstr "z_move = Înălţimea deplasare" -#: flatcamGUI/ObjectUI.py:1580 +#: flatcamGUI/ObjectUI.py:1593 msgid "View CNC Code" msgstr "Vizualiz. codul CNC" -#: flatcamGUI/ObjectUI.py:1583 +#: flatcamGUI/ObjectUI.py:1596 msgid "" "Opens TAB to view/modify/print G-Code\n" "file." @@ -9720,11 +9832,11 @@ msgstr "" "Deschide un nou tab pentru a vizualiza, modifica\n" "sau tipari codul G-Code." -#: flatcamGUI/ObjectUI.py:1589 +#: flatcamGUI/ObjectUI.py:1602 msgid "Save CNC Code" msgstr "Salvează codul CNC" -#: flatcamGUI/ObjectUI.py:1592 +#: flatcamGUI/ObjectUI.py:1605 msgid "" "Opens dialog to save G-Code\n" "file." @@ -10838,7 +10950,7 @@ msgstr "" #: flatcamTools/ToolNonCopperClear.py:120 flatcamTools/ToolPaint.py:117 msgid "Tool Dia" -msgstr "Dia Unealta" +msgstr "Dia Unealtă" #: flatcamTools/ToolNonCopperClear.py:122 msgid "Diameter for the new tool to add in the Tool Table" @@ -10932,7 +11044,7 @@ msgstr "Se curăță PCB-ul de cuprul in exces." #: flatcamTools/ToolNonCopperClear.py:729 #, python-format msgid "[success] Non-Copper Clearing with ToolDia = %s started." -msgstr "[success] Curățarea de Cupru in exces cu Dia Unealta = %s a inceput." +msgstr "[success] Curățarea de Cupru in exces cu Dia Unealtă = %s a inceput." #: flatcamTools/ToolNonCopperClear.py:798 #, python-format @@ -11564,7 +11676,7 @@ msgstr "" #: flatcamTools/ToolSolderPaste.py:101 msgid "New Nozzle Tool" -msgstr "Unealta noua" +msgstr "Unealtă noua" #: flatcamTools/ToolSolderPaste.py:117 msgid "" @@ -11599,6 +11711,14 @@ msgstr "" "Selectează unelte.\n" "Modifica parametri." +#: flatcamTools/ToolSolderPaste.py:236 +msgid "" +"Feedrate (speed) while moving up vertically\n" +" to Dispense position (on Z plane)." +msgstr "" +"Viteza de deplasare la mișcarea pe verticala spre\n" +"poziţia de dispensare (in planul Z)." + #: flatcamTools/ToolSolderPaste.py:290 msgid "Generate GCode" msgstr "Genereaa GCode" @@ -12056,6 +12176,9 @@ msgstr "" msgid "CNCJob objects can't be offseted." msgstr "Obiectele tip CNCJob nu pot fi deplasate." +#~ msgid "Disable" +#~ msgstr "Dezactivează" + #~ msgid "[WARNING_NOTCL] Move cancelled. No shape selected." #~ msgstr "[WARNING_NOTCL] Mutare anulata. Nici-o forma nu este selectată." diff --git a/locale_template/strings.pot b/locale_template/strings.pot index d006ce2d..2bc21930 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-05-22 18:30+0300\n" +"POT-Creation-Date: 2019-06-05 12:38+0300\n" "PO-Revision-Date: 2019-03-25 15:08+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -23,141 +23,141 @@ msgstr "" "X-Poedit-SearchPathExcluded-1: doc\n" "X-Poedit-SearchPathExcluded-2: tests\n" -#: FlatCAMApp.py:898 +#: FlatCAMApp.py:925 msgid "[ERROR] Could not find the Language files. The App strings are missing." msgstr "" -#: FlatCAMApp.py:1962 ObjectCollection.py:80 flatcamTools/ToolImage.py:213 +#: FlatCAMApp.py:2013 ObjectCollection.py:80 flatcamTools/ToolImage.py:213 #: flatcamTools/ToolPcbWizard.py:299 flatcamTools/ToolPcbWizard.py:322 msgid "Open cancelled." msgstr "" -#: FlatCAMApp.py:1976 +#: FlatCAMApp.py:2027 msgid "Open Config file failed." msgstr "" -#: FlatCAMApp.py:1990 +#: FlatCAMApp.py:2041 msgid "Open Script file failed." msgstr "" -#: FlatCAMApp.py:2181 +#: FlatCAMApp.py:2230 msgid "[WARNING_NOTCL] Select a Geometry, Gerber or Excellon Object to edit." msgstr "" -#: FlatCAMApp.py:2191 +#: FlatCAMApp.py:2240 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:2235 +#: FlatCAMApp.py:2284 msgid "[WARNING_NOTCL] Editor is activated ..." msgstr "" -#: FlatCAMApp.py:2254 +#: FlatCAMApp.py:2302 msgid "Do you want to save the edited object?" msgstr "" -#: FlatCAMApp.py:2255 flatcamGUI/FlatCAMGUI.py:1621 +#: FlatCAMApp.py:2303 flatcamGUI/FlatCAMGUI.py:1618 msgid "Close Editor" msgstr "" -#: FlatCAMApp.py:2258 FlatCAMApp.py:3349 FlatCAMApp.py:5799 -#: FlatCAMTranslation.py:89 flatcamGUI/FlatCAMGUI.py:3733 +#: FlatCAMApp.py:2306 FlatCAMApp.py:3398 FlatCAMApp.py:5876 +#: FlatCAMTranslation.py:89 flatcamGUI/FlatCAMGUI.py:3730 msgid "Yes" msgstr "" -#: FlatCAMApp.py:2259 FlatCAMApp.py:3350 FlatCAMApp.py:5800 -#: FlatCAMTranslation.py:90 flatcamGUI/FlatCAMGUI.py:3734 +#: FlatCAMApp.py:2307 FlatCAMApp.py:3399 FlatCAMApp.py:5877 +#: FlatCAMTranslation.py:90 flatcamGUI/FlatCAMGUI.py:3731 msgid "No" msgstr "" -#: FlatCAMApp.py:2260 FlatCAMApp.py:3351 FlatCAMApp.py:3683 FlatCAMApp.py:5801 +#: FlatCAMApp.py:2308 FlatCAMApp.py:3400 FlatCAMApp.py:3732 FlatCAMApp.py:5878 msgid "Cancel" msgstr "" -#: FlatCAMApp.py:2287 +#: FlatCAMApp.py:2335 msgid "[WARNING] Object empty after edit." msgstr "" -#: FlatCAMApp.py:2309 FlatCAMApp.py:2328 FlatCAMApp.py:2340 +#: FlatCAMApp.py:2357 FlatCAMApp.py:2376 FlatCAMApp.py:2388 msgid "[WARNING_NOTCL] Select a Gerber, Geometry or Excellon Object to update." msgstr "" -#: FlatCAMApp.py:2312 +#: FlatCAMApp.py:2360 #, python-format msgid "[selected] %s is updated, returning to App..." msgstr "" -#: FlatCAMApp.py:2677 +#: FlatCAMApp.py:2725 msgid "[ERROR] Could not load defaults file." msgstr "" -#: FlatCAMApp.py:2689 +#: FlatCAMApp.py:2737 msgid "[ERROR] Failed to parse defaults file." msgstr "" -#: FlatCAMApp.py:2710 FlatCAMApp.py:2713 +#: FlatCAMApp.py:2758 FlatCAMApp.py:2762 msgid "Import FlatCAM Preferences" msgstr "" -#: FlatCAMApp.py:2718 +#: FlatCAMApp.py:2768 msgid "[WARNING_NOTCL] FlatCAM preferences import cancelled." msgstr "" -#: FlatCAMApp.py:2726 FlatCAMApp.py:2773 FlatCAMApp.py:3228 +#: FlatCAMApp.py:2776 FlatCAMApp.py:2830 FlatCAMApp.py:3277 msgid "[ERROR_NOTCL] Could not load defaults file." msgstr "" -#: FlatCAMApp.py:2734 FlatCAMApp.py:3237 +#: FlatCAMApp.py:2784 FlatCAMApp.py:3286 msgid "[ERROR_NOTCL] Failed to parse defaults file." msgstr "" -#: FlatCAMApp.py:2737 +#: FlatCAMApp.py:2787 #, python-format msgid "[success] Imported Defaults from %s" msgstr "" -#: FlatCAMApp.py:2747 FlatCAMApp.py:2751 +#: FlatCAMApp.py:2802 FlatCAMApp.py:2807 msgid "Export FlatCAM Preferences" msgstr "" -#: FlatCAMApp.py:2757 +#: FlatCAMApp.py:2814 msgid "[WARNING_NOTCL] FlatCAM preferences export cancelled." msgstr "" -#: FlatCAMApp.py:2792 FlatCAMApp.py:3282 +#: FlatCAMApp.py:2849 FlatCAMApp.py:3331 msgid "[ERROR_NOTCL] Failed to write defaults to file." msgstr "" -#: FlatCAMApp.py:2845 +#: FlatCAMApp.py:2902 msgid "[ERROR_NOTCL] Failed to open recent files file for writing." msgstr "" -#: FlatCAMApp.py:2930 camlib.py:4454 +#: FlatCAMApp.py:2979 camlib.py:4443 msgid "[ERROR_NOTCL] An internal error has ocurred. See shell.\n" msgstr "" -#: FlatCAMApp.py:2931 +#: FlatCAMApp.py:2980 #, python-brace-format msgid "" "Object ({kind}) failed because: {error} \n" "\n" msgstr "" -#: FlatCAMApp.py:2951 +#: FlatCAMApp.py:3000 msgid "Converting units to " msgstr "" -#: FlatCAMApp.py:3030 FlatCAMApp.py:3033 FlatCAMApp.py:3036 FlatCAMApp.py:3039 +#: FlatCAMApp.py:3079 FlatCAMApp.py:3082 FlatCAMApp.py:3085 FlatCAMApp.py:3088 #, python-brace-format msgid "" "[selected] {kind} created/selected: {name}" msgstr "" -#: FlatCAMApp.py:3133 +#: FlatCAMApp.py:3182 #, python-brace-format msgid "" "FlatCAM
Version {version} {beta} ({date}) - " @@ -171,41 +171,41 @@ msgid "" "downloads/\">here.
" msgstr "" -#: FlatCAMApp.py:3286 +#: FlatCAMApp.py:3335 msgid "[success] Defaults saved." msgstr "" -#: FlatCAMApp.py:3307 +#: FlatCAMApp.py:3356 msgid "[ERROR_NOTCL] Could not load factory defaults file." msgstr "" -#: FlatCAMApp.py:3316 +#: FlatCAMApp.py:3365 msgid "[ERROR_NOTCL] Failed to parse factory defaults file." msgstr "" -#: FlatCAMApp.py:3330 +#: FlatCAMApp.py:3379 msgid "[ERROR_NOTCL] Failed to write factory defaults to file." msgstr "" -#: FlatCAMApp.py:3334 +#: FlatCAMApp.py:3383 msgid "Factory defaults saved." msgstr "" -#: FlatCAMApp.py:3339 flatcamGUI/FlatCAMGUI.py:3110 +#: FlatCAMApp.py:3388 flatcamGUI/FlatCAMGUI.py:3106 msgid "[WARNING_NOTCL] Application is saving the project. Please wait ..." msgstr "" -#: FlatCAMApp.py:3344 +#: FlatCAMApp.py:3393 msgid "" "There are files/objects modified in FlatCAM. \n" "Do you want to Save the project?" msgstr "" -#: FlatCAMApp.py:3347 FlatCAMApp.py:5797 +#: FlatCAMApp.py:3396 FlatCAMApp.py:5874 msgid "Save changes" msgstr "" -#: FlatCAMApp.py:3414 +#: FlatCAMApp.py:3463 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 " @@ -215,202 +215,206 @@ msgid "" "Check the generated GCODE." msgstr "" -#: FlatCAMApp.py:3455 +#: FlatCAMApp.py:3504 msgid "[ERROR_NOTCL] Failed. Excellon joining works only on Excellon objects." msgstr "" -#: FlatCAMApp.py:3477 +#: FlatCAMApp.py:3526 msgid "[ERROR_NOTCL] Failed. Gerber joining works only on Gerber objects." msgstr "" -#: FlatCAMApp.py:3492 FlatCAMApp.py:3517 +#: FlatCAMApp.py:3541 FlatCAMApp.py:3566 msgid "[ERROR_NOTCL] Failed. Select a Geometry Object and try again." msgstr "" -#: FlatCAMApp.py:3496 FlatCAMApp.py:3521 +#: FlatCAMApp.py:3545 FlatCAMApp.py:3570 #, python-format msgid "[ERROR_NOTCL] Expected a FlatCAMGeometry, got %s" msgstr "" -#: FlatCAMApp.py:3509 +#: FlatCAMApp.py:3558 msgid "[success] A Geometry object was converted to MultiGeo type." msgstr "" -#: FlatCAMApp.py:3535 +#: FlatCAMApp.py:3584 msgid "[success] A Geometry object was converted to SingleGeo type." msgstr "" -#: FlatCAMApp.py:3682 FlatCAMApp.py:4495 FlatCAMApp.py:6064 FlatCAMApp.py:6075 -#: FlatCAMApp.py:6312 FlatCAMApp.py:6322 +#: FlatCAMApp.py:3731 FlatCAMApp.py:4567 FlatCAMApp.py:6141 FlatCAMApp.py:6152 +#: FlatCAMApp.py:6392 FlatCAMApp.py:6402 msgid "Ok" msgstr "" -#: FlatCAMApp.py:3724 +#: FlatCAMApp.py:3773 #, python-format msgid "[success] Converted units to %s" msgstr "" -#: FlatCAMApp.py:3735 +#: FlatCAMApp.py:3784 msgid "[WARNING_NOTCL] Units conversion cancelled." msgstr "" -#: FlatCAMApp.py:4364 +#: FlatCAMApp.py:4436 msgid "Open file" msgstr "" -#: FlatCAMApp.py:4395 FlatCAMApp.py:4400 +#: FlatCAMApp.py:4467 FlatCAMApp.py:4472 msgid "Export G-Code ..." msgstr "" -#: FlatCAMApp.py:4403 +#: FlatCAMApp.py:4475 msgid "[WARNING_NOTCL] Export Code cancelled." msgstr "" -#: FlatCAMApp.py:4413 +#: FlatCAMApp.py:4485 msgid "[WARNING] No such file or directory" msgstr "" -#: FlatCAMApp.py:4420 +#: FlatCAMApp.py:4492 #, python-format msgid "Saved to: %s" msgstr "" -#: FlatCAMApp.py:4483 FlatCAMApp.py:4516 FlatCAMApp.py:4527 FlatCAMApp.py:4538 +#: FlatCAMApp.py:4555 FlatCAMApp.py:4588 FlatCAMApp.py:4599 FlatCAMApp.py:4610 #: 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:4488 FlatCAMApp.py:4521 FlatCAMApp.py:4532 FlatCAMApp.py:4543 -#: flatcamGUI/FlatCAMGUI.py:3005 +#: FlatCAMApp.py:4560 FlatCAMApp.py:4593 FlatCAMApp.py:4604 FlatCAMApp.py:4615 +#: flatcamGUI/FlatCAMGUI.py:3001 msgid "[WARNING_NOTCL] Adding Tool cancelled ..." msgstr "" -#: FlatCAMApp.py:4491 +#: FlatCAMApp.py:4563 msgid "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." msgstr "" -#: FlatCAMApp.py:4604 +#: FlatCAMApp.py:4676 msgid "Object(s) deleted ..." msgstr "" -#: FlatCAMApp.py:4608 +#: FlatCAMApp.py:4680 msgid "Failed. No object(s) selected..." msgstr "" -#: FlatCAMApp.py:4610 +#: FlatCAMApp.py:4682 msgid "Save the work in Editor and try again ..." msgstr "" -#: FlatCAMApp.py:4623 +#: FlatCAMApp.py:4695 msgid "Click to set the origin ..." msgstr "" -#: FlatCAMApp.py:4635 +#: FlatCAMApp.py:4707 msgid "Jump to ..." msgstr "" -#: FlatCAMApp.py:4636 +#: FlatCAMApp.py:4708 msgid "Enter the coordinates in format X,Y:" msgstr "" -#: FlatCAMApp.py:4643 +#: FlatCAMApp.py:4715 msgid "Wrong coordinates. Enter coordinates in format: X,Y" msgstr "" -#: FlatCAMApp.py:4661 flatcamEditors/FlatCAMExcEditor.py:2285 -#: flatcamEditors/FlatCAMExcEditor.py:2292 -#: flatcamEditors/FlatCAMGeoEditor.py:3648 -#: flatcamEditors/FlatCAMGeoEditor.py:3662 +#: FlatCAMApp.py:4733 flatcamEditors/FlatCAMExcEditor.py:2320 +#: flatcamEditors/FlatCAMExcEditor.py:2327 +#: flatcamEditors/FlatCAMGeoEditor.py:3645 +#: flatcamEditors/FlatCAMGeoEditor.py:3659 #: flatcamEditors/FlatCAMGrbEditor.py:1040 #: flatcamEditors/FlatCAMGrbEditor.py:1141 -#: flatcamEditors/FlatCAMGrbEditor.py:1402 -#: flatcamEditors/FlatCAMGrbEditor.py:1652 -#: flatcamEditors/FlatCAMGrbEditor.py:3928 -#: flatcamEditors/FlatCAMGrbEditor.py:3942 flatcamGUI/FlatCAMGUI.py:2419 -#: flatcamGUI/FlatCAMGUI.py:2431 +#: flatcamEditors/FlatCAMGrbEditor.py:1409 +#: flatcamEditors/FlatCAMGrbEditor.py:1666 +#: flatcamEditors/FlatCAMGrbEditor.py:3950 +#: flatcamEditors/FlatCAMGrbEditor.py:3964 flatcamGUI/FlatCAMGUI.py:2414 +#: flatcamGUI/FlatCAMGUI.py:2426 msgid "[success] Done." msgstr "" -#: FlatCAMApp.py:4794 FlatCAMApp.py:4863 +#: FlatCAMApp.py:4865 FlatCAMApp.py:4932 msgid "[WARNING_NOTCL] No object is selected. Select an object and try again." msgstr "" -#: FlatCAMApp.py:4904 +#: FlatCAMApp.py:4973 msgid "[success] Origin set ..." msgstr "" -#: FlatCAMApp.py:4924 +#: FlatCAMApp.py:4993 msgid "Preferences" msgstr "" -#: FlatCAMApp.py:4944 +#: FlatCAMApp.py:5013 msgid "[WARNING_NOTCL] No object selected to Flip on Y axis." msgstr "" -#: FlatCAMApp.py:4969 +#: FlatCAMApp.py:5038 msgid "[success] Flip on Y axis done." msgstr "" -#: FlatCAMApp.py:4971 FlatCAMApp.py:5011 +#: FlatCAMApp.py:5040 FlatCAMApp.py:5080 #: flatcamEditors/FlatCAMGeoEditor.py:1355 -#: flatcamEditors/FlatCAMGrbEditor.py:5309 flatcamTools/ToolTransform.py:748 +#: flatcamEditors/FlatCAMGrbEditor.py:5331 flatcamTools/ToolTransform.py:748 #, python-format msgid "[ERROR_NOTCL] Due of %s, Flip action was not executed." msgstr "" -#: FlatCAMApp.py:4984 +#: FlatCAMApp.py:5053 msgid "[WARNING_NOTCL] No object selected to Flip on X axis." msgstr "" -#: FlatCAMApp.py:5009 +#: FlatCAMApp.py:5078 msgid "[success] Flip on X axis done." msgstr "" -#: FlatCAMApp.py:5024 +#: FlatCAMApp.py:5093 msgid "[WARNING_NOTCL] No object selected to Rotate." msgstr "" -#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 +#: FlatCAMApp.py:5096 FlatCAMApp.py:5141 FlatCAMApp.py:5172 msgid "Transform" msgstr "" -#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 +#: FlatCAMApp.py:5096 FlatCAMApp.py:5141 FlatCAMApp.py:5172 msgid "Enter the Angle value:" msgstr "" -#: FlatCAMApp.py:5057 +#: FlatCAMApp.py:5126 msgid "[success] Rotation done." msgstr "" -#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:1298 -#: flatcamEditors/FlatCAMGrbEditor.py:5240 flatcamTools/ToolTransform.py:677 +#: FlatCAMApp.py:5128 flatcamEditors/FlatCAMGeoEditor.py:1298 +#: flatcamEditors/FlatCAMGrbEditor.py:5262 flatcamTools/ToolTransform.py:677 #, python-format msgid "[ERROR_NOTCL] Due of %s, rotation movement was not executed." msgstr "" -#: FlatCAMApp.py:5070 +#: FlatCAMApp.py:5139 msgid "[WARNING_NOTCL] No object selected to Skew/Shear on X axis." msgstr "" -#: FlatCAMApp.py:5091 +#: FlatCAMApp.py:5160 msgid "[success] Skew on X axis done." msgstr "" -#: FlatCAMApp.py:5101 +#: FlatCAMApp.py:5170 msgid "[WARNING_NOTCL] No object selected to Skew/Shear on Y axis." msgstr "" -#: FlatCAMApp.py:5122 +#: FlatCAMApp.py:5191 msgid "[success] Skew on Y axis done." msgstr "" -#: FlatCAMApp.py:5197 flatcamEditors/FlatCAMGeoEditor.py:937 -#: flatcamEditors/FlatCAMGrbEditor.py:2365 -#: flatcamEditors/FlatCAMGrbEditor.py:4831 flatcamGUI/ObjectUI.py:991 +#: FlatCAMApp.py:5260 +msgid "Grid On/Off" +msgstr "" + +#: FlatCAMApp.py:5273 flatcamEditors/FlatCAMGeoEditor.py:937 +#: flatcamEditors/FlatCAMGrbEditor.py:2381 +#: flatcamEditors/FlatCAMGrbEditor.py:4853 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 @@ -418,282 +422,282 @@ msgstr "" msgid "Add" msgstr "" -#: FlatCAMApp.py:5198 FlatCAMObj.py:3302 -#: flatcamEditors/FlatCAMGrbEditor.py:2370 flatcamGUI/FlatCAMGUI.py:532 -#: flatcamGUI/FlatCAMGUI.py:729 flatcamGUI/FlatCAMGUI.py:1619 -#: flatcamGUI/FlatCAMGUI.py:1955 flatcamGUI/ObjectUI.py:1007 +#: FlatCAMApp.py:5274 FlatCAMObj.py:3306 +#: flatcamEditors/FlatCAMGrbEditor.py:2386 flatcamGUI/FlatCAMGUI.py:527 +#: flatcamGUI/FlatCAMGUI.py:724 flatcamGUI/FlatCAMGUI.py:1616 +#: flatcamGUI/FlatCAMGUI.py:1953 flatcamGUI/ObjectUI.py:1007 #: flatcamTools/ToolNonCopperClear.py:146 flatcamTools/ToolPaint.py:143 #: flatcamTools/ToolSolderPaste.py:121 flatcamTools/ToolSolderPaste.py:481 msgid "Delete" msgstr "" -#: FlatCAMApp.py:5210 +#: FlatCAMApp.py:5287 msgid "New Grid ..." msgstr "" -#: FlatCAMApp.py:5211 +#: FlatCAMApp.py:5288 msgid "Enter a Grid Value:" msgstr "" -#: FlatCAMApp.py:5219 FlatCAMApp.py:5246 +#: FlatCAMApp.py:5296 FlatCAMApp.py:5323 msgid "" "[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float " "format." msgstr "" -#: FlatCAMApp.py:5225 +#: FlatCAMApp.py:5302 msgid "[success] New Grid added ..." msgstr "" -#: FlatCAMApp.py:5228 +#: FlatCAMApp.py:5305 msgid "[WARNING_NOTCL] Grid already exists ..." msgstr "" -#: FlatCAMApp.py:5231 +#: FlatCAMApp.py:5308 msgid "[WARNING_NOTCL] Adding New Grid cancelled ..." msgstr "" -#: FlatCAMApp.py:5253 +#: FlatCAMApp.py:5330 msgid "[ERROR_NOTCL] Grid Value does not exist ..." msgstr "" -#: FlatCAMApp.py:5256 +#: FlatCAMApp.py:5333 msgid "[success] Grid Value deleted ..." msgstr "" -#: FlatCAMApp.py:5259 +#: FlatCAMApp.py:5336 msgid "[WARNING_NOTCL] Delete Grid value cancelled ..." msgstr "" -#: FlatCAMApp.py:5298 +#: FlatCAMApp.py:5375 msgid "[WARNING_NOTCL] No object selected to copy it's name" msgstr "" -#: FlatCAMApp.py:5302 +#: FlatCAMApp.py:5379 msgid "Name copied on clipboard ..." msgstr "" -#: FlatCAMApp.py:5595 FlatCAMApp.py:5598 FlatCAMApp.py:5601 FlatCAMApp.py:5604 -#: FlatCAMApp.py:5619 FlatCAMApp.py:5622 FlatCAMApp.py:5625 FlatCAMApp.py:5628 -#: FlatCAMApp.py:5668 FlatCAMApp.py:5671 FlatCAMApp.py:5674 FlatCAMApp.py:5677 +#: FlatCAMApp.py:5672 FlatCAMApp.py:5675 FlatCAMApp.py:5678 FlatCAMApp.py:5681 +#: FlatCAMApp.py:5696 FlatCAMApp.py:5699 FlatCAMApp.py:5702 FlatCAMApp.py:5705 +#: FlatCAMApp.py:5745 FlatCAMApp.py:5748 FlatCAMApp.py:5751 FlatCAMApp.py:5754 #: ObjectCollection.py:717 ObjectCollection.py:720 ObjectCollection.py:723 #: ObjectCollection.py:726 #, python-brace-format msgid "[selected]{name} selected" msgstr "" -#: FlatCAMApp.py:5794 +#: FlatCAMApp.py:5871 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:5815 +#: FlatCAMApp.py:5892 msgid "[success] New Project created..." msgstr "" -#: FlatCAMApp.py:5923 FlatCAMApp.py:5926 flatcamGUI/FlatCAMGUI.py:613 -#: flatcamGUI/FlatCAMGUI.py:1834 +#: FlatCAMApp.py:6000 FlatCAMApp.py:6003 flatcamGUI/FlatCAMGUI.py:608 +#: flatcamGUI/FlatCAMGUI.py:1832 msgid "Open Gerber" msgstr "" -#: FlatCAMApp.py:5931 +#: FlatCAMApp.py:6008 msgid "[WARNING_NOTCL] Open Gerber cancelled." msgstr "" -#: FlatCAMApp.py:5952 FlatCAMApp.py:5955 flatcamGUI/FlatCAMGUI.py:614 -#: flatcamGUI/FlatCAMGUI.py:1835 +#: FlatCAMApp.py:6029 FlatCAMApp.py:6032 flatcamGUI/FlatCAMGUI.py:609 +#: flatcamGUI/FlatCAMGUI.py:1833 msgid "Open Excellon" msgstr "" -#: FlatCAMApp.py:5960 +#: FlatCAMApp.py:6037 msgid "[WARNING_NOTCL] Open Excellon cancelled." msgstr "" -#: FlatCAMApp.py:5982 FlatCAMApp.py:5985 +#: FlatCAMApp.py:6059 FlatCAMApp.py:6062 msgid "Open G-Code" msgstr "" -#: FlatCAMApp.py:5990 +#: FlatCAMApp.py:6067 msgid "[WARNING_NOTCL] Open G-Code cancelled." msgstr "" -#: FlatCAMApp.py:6008 FlatCAMApp.py:6011 +#: FlatCAMApp.py:6085 FlatCAMApp.py:6088 msgid "Open Project" msgstr "" -#: FlatCAMApp.py:6019 +#: FlatCAMApp.py:6096 msgid "[WARNING_NOTCL] Open Project cancelled." msgstr "" -#: FlatCAMApp.py:6038 FlatCAMApp.py:6041 +#: FlatCAMApp.py:6115 FlatCAMApp.py:6118 msgid "Open Configuration File" msgstr "" -#: FlatCAMApp.py:6045 +#: FlatCAMApp.py:6122 msgid "[WARNING_NOTCL Open Config cancelled." msgstr "" -#: FlatCAMApp.py:6060 FlatCAMApp.py:6308 FlatCAMApp.py:8519 FlatCAMApp.py:8539 -#: FlatCAMApp.py:8560 FlatCAMApp.py:8582 +#: FlatCAMApp.py:6137 FlatCAMApp.py:6388 FlatCAMApp.py:8538 FlatCAMApp.py:8558 +#: FlatCAMApp.py:8579 FlatCAMApp.py:8601 msgid "[WARNING_NOTCL] No object selected." msgstr "" -#: FlatCAMApp.py:6061 FlatCAMApp.py:6309 +#: FlatCAMApp.py:6138 FlatCAMApp.py:6389 msgid "Please Select a Geometry object to export" msgstr "" -#: FlatCAMApp.py:6072 +#: FlatCAMApp.py:6149 msgid "[ERROR_NOTCL] Only Geometry, Gerber and CNCJob objects can be used." msgstr "" -#: FlatCAMApp.py:6085 FlatCAMApp.py:6089 +#: FlatCAMApp.py:6162 FlatCAMApp.py:6166 msgid "Export SVG" msgstr "" -#: FlatCAMApp.py:6094 +#: FlatCAMApp.py:6171 msgid "[WARNING_NOTCL] Export SVG cancelled." msgstr "" -#: FlatCAMApp.py:6110 +#: FlatCAMApp.py:6190 msgid "[[WARNING_NOTCL]] Data must be a 3D array with last dimension 3 or 4" msgstr "" -#: FlatCAMApp.py:6116 FlatCAMApp.py:6120 +#: FlatCAMApp.py:6196 FlatCAMApp.py:6200 msgid "Export PNG Image" msgstr "" -#: FlatCAMApp.py:6125 +#: FlatCAMApp.py:6205 msgid "Export PNG cancelled." msgstr "" -#: FlatCAMApp.py:6144 +#: FlatCAMApp.py:6224 msgid "" "[WARNING_NOTCL] No object selected. Please select an Gerber object to export." msgstr "" -#: FlatCAMApp.py:6149 FlatCAMApp.py:6272 +#: FlatCAMApp.py:6229 FlatCAMApp.py:6352 msgid "" "[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files..." msgstr "" -#: FlatCAMApp.py:6161 +#: FlatCAMApp.py:6241 msgid "Save Gerber source file" msgstr "" -#: FlatCAMApp.py:6166 +#: FlatCAMApp.py:6246 msgid "[WARNING_NOTCL] Save Gerber source file cancelled." msgstr "" -#: FlatCAMApp.py:6185 +#: FlatCAMApp.py:6265 msgid "" "[WARNING_NOTCL] No object selected. Please select an Excellon object to " "export." msgstr "" -#: FlatCAMApp.py:6190 FlatCAMApp.py:6231 +#: FlatCAMApp.py:6270 FlatCAMApp.py:6311 msgid "" "[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files..." msgstr "" -#: FlatCAMApp.py:6198 FlatCAMApp.py:6202 +#: FlatCAMApp.py:6278 FlatCAMApp.py:6282 msgid "Save Excellon source file" msgstr "" -#: FlatCAMApp.py:6207 +#: FlatCAMApp.py:6287 msgid "[WARNING_NOTCL] Saving Excellon source file cancelled." msgstr "" -#: FlatCAMApp.py:6226 +#: FlatCAMApp.py:6306 msgid "" "[WARNING_NOTCL] No object selected. Please Select an Excellon object to " "export." msgstr "" -#: FlatCAMApp.py:6239 FlatCAMApp.py:6243 +#: FlatCAMApp.py:6319 FlatCAMApp.py:6323 msgid "Export Excellon" msgstr "" -#: FlatCAMApp.py:6248 +#: FlatCAMApp.py:6328 msgid "[WARNING_NOTCL] Export Excellon cancelled." msgstr "" -#: FlatCAMApp.py:6267 +#: FlatCAMApp.py:6347 msgid "" "[WARNING_NOTCL] No object selected. Please Select an Gerber object to export." msgstr "" -#: FlatCAMApp.py:6280 FlatCAMApp.py:6284 +#: FlatCAMApp.py:6360 FlatCAMApp.py:6364 msgid "Export Gerber" msgstr "" -#: FlatCAMApp.py:6289 +#: FlatCAMApp.py:6369 msgid "[WARNING_NOTCL] Export Gerber cancelled." msgstr "" -#: FlatCAMApp.py:6319 +#: FlatCAMApp.py:6399 msgid "[ERROR_NOTCL] Only Geometry objects can be used." msgstr "" -#: FlatCAMApp.py:6333 FlatCAMApp.py:6337 +#: FlatCAMApp.py:6413 FlatCAMApp.py:6417 msgid "Export DXF" msgstr "" -#: FlatCAMApp.py:6342 +#: FlatCAMApp.py:6423 msgid "[WARNING_NOTCL] Export DXF cancelled." msgstr "" -#: FlatCAMApp.py:6362 FlatCAMApp.py:6365 +#: FlatCAMApp.py:6443 FlatCAMApp.py:6446 msgid "Import SVG" msgstr "" -#: FlatCAMApp.py:6373 +#: FlatCAMApp.py:6455 msgid "[WARNING_NOTCL] Open SVG cancelled." msgstr "" -#: FlatCAMApp.py:6392 FlatCAMApp.py:6395 +#: FlatCAMApp.py:6474 FlatCAMApp.py:6478 msgid "Import DXF" msgstr "" -#: FlatCAMApp.py:6403 +#: FlatCAMApp.py:6487 msgid "[WARNING_NOTCL] Open DXF cancelled." msgstr "" -#: FlatCAMApp.py:6421 +#: FlatCAMApp.py:6505 #, python-format msgid "%s" msgstr "" -#: FlatCAMApp.py:6441 +#: FlatCAMApp.py:6525 msgid "" "[WARNING_NOTCL] Select an Gerber or Excellon file to view it's source file." msgstr "" -#: FlatCAMApp.py:6448 +#: FlatCAMApp.py:6532 msgid "" "[WARNING_NOTCL] There is no selected object for which to see it's source " "file code." msgstr "" -#: FlatCAMApp.py:6456 +#: FlatCAMApp.py:6540 msgid "Source Editor" msgstr "" -#: FlatCAMApp.py:6466 +#: FlatCAMApp.py:6550 #, python-format msgid "[ERROR]App.on_view_source() -->%s" msgstr "" -#: FlatCAMApp.py:6478 FlatCAMApp.py:7621 FlatCAMObj.py:5573 +#: FlatCAMApp.py:6562 FlatCAMApp.py:7704 FlatCAMObj.py:5581 msgid "Code Editor" msgstr "" -#: FlatCAMApp.py:6490 +#: FlatCAMApp.py:6574 msgid "Script Editor" msgstr "" -#: FlatCAMApp.py:6493 +#: FlatCAMApp.py:6577 msgid "" "#\n" "# CREATE A NEW FLATCAM TCL SCRIPT\n" @@ -717,216 +721,216 @@ msgid "" "\n" msgstr "" -#: FlatCAMApp.py:6516 FlatCAMApp.py:6519 +#: FlatCAMApp.py:6600 FlatCAMApp.py:6603 msgid "Open TCL script" msgstr "" -#: FlatCAMApp.py:6527 +#: FlatCAMApp.py:6611 msgid "[WARNING_NOTCL] Open TCL script cancelled." msgstr "" -#: FlatCAMApp.py:6539 +#: FlatCAMApp.py:6623 #, python-format msgid "[ERROR]App.on_fileopenscript() -->%s" msgstr "" -#: FlatCAMApp.py:6565 FlatCAMApp.py:6568 +#: FlatCAMApp.py:6649 FlatCAMApp.py:6652 msgid "Run TCL script" msgstr "" -#: FlatCAMApp.py:6576 +#: FlatCAMApp.py:6660 msgid "[WARNING_NOTCL] Run TCL script cancelled." msgstr "" -#: FlatCAMApp.py:6622 FlatCAMApp.py:6626 +#: FlatCAMApp.py:6710 FlatCAMApp.py:6714 msgid "Save Project As ..." msgstr "" -#: FlatCAMApp.py:6623 +#: FlatCAMApp.py:6711 #, python-brace-format msgid "{l_save}/Project_{date}" msgstr "" -#: FlatCAMApp.py:6631 +#: FlatCAMApp.py:6719 msgid "[WARNING_NOTCL] Save Project cancelled." msgstr "" -#: FlatCAMApp.py:6676 +#: FlatCAMApp.py:6763 msgid "Exporting SVG" msgstr "" -#: FlatCAMApp.py:6710 FlatCAMApp.py:6816 FlatCAMApp.py:6931 +#: FlatCAMApp.py:6797 FlatCAMApp.py:6903 FlatCAMApp.py:7018 #, python-format msgid "[success] SVG file exported to %s" msgstr "" -#: FlatCAMApp.py:6741 FlatCAMApp.py:6862 +#: FlatCAMApp.py:6828 FlatCAMApp.py:6949 #, python-format msgid "[WARNING_NOTCL] No object Box. Using instead %s" msgstr "" -#: FlatCAMApp.py:6819 FlatCAMApp.py:6934 +#: FlatCAMApp.py:6906 FlatCAMApp.py:7021 msgid "Generating Film ... Please wait." msgstr "" -#: FlatCAMApp.py:7082 +#: FlatCAMApp.py:7169 #, python-format msgid "[success] Excellon file exported to %s" msgstr "" -#: FlatCAMApp.py:7089 +#: FlatCAMApp.py:7176 msgid "Exporting Excellon" msgstr "" -#: FlatCAMApp.py:7094 FlatCAMApp.py:7101 +#: FlatCAMApp.py:7181 FlatCAMApp.py:7188 msgid "[ERROR_NOTCL] Could not export Excellon file." msgstr "" -#: FlatCAMApp.py:7199 +#: FlatCAMApp.py:7286 #, python-format msgid "[success] Gerber file exported to %s" msgstr "" -#: FlatCAMApp.py:7206 +#: FlatCAMApp.py:7293 msgid "Exporting Gerber" msgstr "" -#: FlatCAMApp.py:7211 FlatCAMApp.py:7218 +#: FlatCAMApp.py:7298 FlatCAMApp.py:7305 msgid "[ERROR_NOTCL] Could not export Gerber file." msgstr "" -#: FlatCAMApp.py:7258 +#: FlatCAMApp.py:7345 #, python-format msgid "[success] DXF file exported to %s" msgstr "" -#: FlatCAMApp.py:7264 +#: FlatCAMApp.py:7351 msgid "Exporting DXF" msgstr "" -#: FlatCAMApp.py:7269 FlatCAMApp.py:7276 +#: FlatCAMApp.py:7356 FlatCAMApp.py:7363 msgid "[[WARNING_NOTCL]] Could not export DXF file." msgstr "" -#: FlatCAMApp.py:7296 FlatCAMApp.py:7338 FlatCAMApp.py:7379 +#: FlatCAMApp.py:7383 FlatCAMApp.py:7425 FlatCAMApp.py:7469 msgid "" "[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and " "Gerber are supported" msgstr "" -#: FlatCAMApp.py:7306 +#: FlatCAMApp.py:7393 msgid "Importing SVG" msgstr "" -#: FlatCAMApp.py:7317 FlatCAMApp.py:7359 FlatCAMApp.py:7399 FlatCAMApp.py:7475 -#: FlatCAMApp.py:7542 FlatCAMApp.py:7607 flatcamTools/ToolPDF.py:212 +#: FlatCAMApp.py:7404 FlatCAMApp.py:7446 FlatCAMApp.py:7489 FlatCAMApp.py:7566 +#: FlatCAMApp.py:7627 FlatCAMApp.py:7690 flatcamTools/ToolPDF.py:212 #, python-format msgid "[success] Opened: %s" msgstr "" -#: FlatCAMApp.py:7348 +#: FlatCAMApp.py:7435 msgid "Importing DXF" msgstr "" -#: FlatCAMApp.py:7387 +#: FlatCAMApp.py:7477 msgid "Importing Image" msgstr "" -#: FlatCAMApp.py:7428 FlatCAMApp.py:7430 +#: FlatCAMApp.py:7518 FlatCAMApp.py:7520 #, python-format msgid "[ERROR_NOTCL] Failed to open file: %s" msgstr "" -#: FlatCAMApp.py:7433 +#: FlatCAMApp.py:7523 #, python-brace-format msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}" msgstr "" -#: FlatCAMApp.py:7439 FlatCAMObj.py:4271 -#: flatcamEditors/FlatCAMExcEditor.py:2041 +#: FlatCAMApp.py:7530 FlatCAMObj.py:4266 +#: flatcamEditors/FlatCAMExcEditor.py:2077 msgid "[ERROR] An internal error has ocurred. See shell.\n" msgstr "" -#: FlatCAMApp.py:7448 +#: FlatCAMApp.py:7539 msgid "" "[ERROR_NOTCL] Object is not Gerber file or empty. Aborting object creation." msgstr "" -#: FlatCAMApp.py:7456 +#: FlatCAMApp.py:7547 msgid "Opening Gerber" msgstr "" -#: FlatCAMApp.py:7466 +#: FlatCAMApp.py:7557 msgid "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file." msgstr "" -#: FlatCAMApp.py:7501 flatcamTools/ToolPcbWizard.py:421 +#: FlatCAMApp.py:7590 flatcamTools/ToolPcbWizard.py:421 msgid "[ERROR_NOTCL] This is not Excellon file." msgstr "" -#: FlatCAMApp.py:7504 +#: FlatCAMApp.py:7593 #, python-format msgid "[ERROR_NOTCL] Cannot open file: %s" msgstr "" -#: FlatCAMApp.py:7509 flatcamTools/ToolPcbWizard.py:429 +#: FlatCAMApp.py:7598 flatcamTools/ToolPcbWizard.py:429 msgid "[ERROR_NOTCL] An internal error has occurred. See shell.\n" msgstr "" -#: FlatCAMApp.py:7525 flatcamTools/ToolPDF.py:262 +#: FlatCAMApp.py:7611 flatcamTools/ToolPDF.py:262 #: flatcamTools/ToolPcbWizard.py:442 #, python-format msgid "[ERROR_NOTCL] No geometry found in file: %s" msgstr "" -#: FlatCAMApp.py:7528 +#: FlatCAMApp.py:7614 msgid "Opening Excellon." msgstr "" -#: FlatCAMApp.py:7535 +#: FlatCAMApp.py:7620 msgid "[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file." msgstr "" -#: FlatCAMApp.py:7574 +#: FlatCAMApp.py:7657 #, python-format msgid "[ERROR_NOTCL] Failed to open %s" msgstr "" -#: FlatCAMApp.py:7584 +#: FlatCAMApp.py:7667 msgid "[ERROR_NOTCL] This is not GCODE" msgstr "" -#: FlatCAMApp.py:7590 +#: FlatCAMApp.py:7673 msgid "Opening G-Code." msgstr "" -#: FlatCAMApp.py:7598 +#: FlatCAMApp.py:7681 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:7638 +#: FlatCAMApp.py:7721 #, python-format msgid "[ERROR_NOTCL] Failed to open config file: %s" msgstr "" -#: FlatCAMApp.py:7663 FlatCAMApp.py:7679 +#: FlatCAMApp.py:7747 FlatCAMApp.py:7764 #, python-format msgid "[ERROR_NOTCL] Failed to open project file: %s" msgstr "" -#: FlatCAMApp.py:7705 +#: FlatCAMApp.py:7787 #, python-format msgid "[success] Project loaded from: %s" msgstr "" -#: FlatCAMApp.py:7835 +#: FlatCAMApp.py:7892 msgid "Available commands:\n" msgstr "" -#: FlatCAMApp.py:7837 +#: FlatCAMApp.py:7894 msgid "" "\n" "\n" @@ -934,23 +938,23 @@ msgid "" " Example: help open_gerber" msgstr "" -#: FlatCAMApp.py:7985 +#: FlatCAMApp.py:8044 msgid "Shows list of commands." msgstr "" -#: FlatCAMApp.py:8042 +#: FlatCAMApp.py:8101 msgid "[ERROR_NOTCL] Failed to load recent item list." msgstr "" -#: FlatCAMApp.py:8049 +#: FlatCAMApp.py:8108 msgid "[ERROR_NOTCL] Failed to parse recent item list." msgstr "" -#: FlatCAMApp.py:8110 flatcamGUI/FlatCAMGUI.py:973 +#: FlatCAMApp.py:8169 flatcamGUI/FlatCAMGUI.py:968 msgid "Shortcut Key List" msgstr "" -#: FlatCAMApp.py:8117 +#: FlatCAMApp.py:8176 msgid "" "\n" "

Selected Tab - Choose an Item from " @@ -1000,101 +1004,113 @@ msgid "" " " msgstr "" -#: FlatCAMApp.py:8221 +#: FlatCAMApp.py:8280 msgid "[WARNING_NOTCL] Failed checking for latest version. Could not connect." msgstr "" -#: FlatCAMApp.py:8228 +#: FlatCAMApp.py:8287 msgid "[ERROR_NOTCL] Could not parse information about latest version." msgstr "" -#: FlatCAMApp.py:8238 +#: FlatCAMApp.py:8297 msgid "[success] FlatCAM is up to date!" msgstr "" -#: FlatCAMApp.py:8243 +#: FlatCAMApp.py:8302 msgid "Newer Version Available" msgstr "" -#: FlatCAMApp.py:8244 +#: FlatCAMApp.py:8303 msgid "" "There is a newer version of FlatCAM available for download:\n" "\n" msgstr "" -#: FlatCAMApp.py:8246 +#: FlatCAMApp.py:8305 msgid "info" msgstr "" -#: FlatCAMApp.py:8265 +#: FlatCAMApp.py:8324 msgid "[success] All plots disabled." msgstr "" -#: FlatCAMApp.py:8271 +#: FlatCAMApp.py:8330 msgid "[success] All non selected plots disabled." msgstr "" -#: FlatCAMApp.py:8277 +#: FlatCAMApp.py:8336 msgid "[success] All plots enabled." msgstr "" -#: FlatCAMApp.py:8388 +#: FlatCAMApp.py:8342 +msgid "[success] Selected plots enabled..." +msgstr "" + +#: FlatCAMApp.py:8350 +msgid "[success] Selected plots disabled..." +msgstr "" + +#: FlatCAMApp.py:8360 FlatCAMApp.py:8373 +msgid "Working ..." +msgstr "" + +#: FlatCAMApp.py:8407 msgid "Saving FlatCAM Project" msgstr "" -#: FlatCAMApp.py:8409 FlatCAMApp.py:8440 +#: FlatCAMApp.py:8428 FlatCAMApp.py:8459 #, python-format msgid "[success] Project saved to: %s" msgstr "" -#: FlatCAMApp.py:8427 +#: FlatCAMApp.py:8446 #, python-format msgid "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it." msgstr "" -#: FlatCAMApp.py:8434 +#: FlatCAMApp.py:8453 #, python-format msgid "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it." msgstr "" -#: FlatCAMApp.py:8442 +#: FlatCAMApp.py:8461 #, python-format msgid "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it." msgstr "" -#: FlatCAMObj.py:201 +#: FlatCAMObj.py:202 #, python-brace-format msgid "[success] Name changed from {old} to {new}" msgstr "" -#: FlatCAMObj.py:548 FlatCAMObj.py:2033 FlatCAMObj.py:3307 FlatCAMObj.py:5470 +#: FlatCAMObj.py:546 FlatCAMObj.py:2031 FlatCAMObj.py:3311 FlatCAMObj.py:5478 msgid "Basic" msgstr "" -#: FlatCAMObj.py:560 FlatCAMObj.py:2049 FlatCAMObj.py:3329 FlatCAMObj.py:5476 +#: FlatCAMObj.py:558 FlatCAMObj.py:2047 FlatCAMObj.py:3333 FlatCAMObj.py:5484 msgid "Advanced" msgstr "" -#: FlatCAMObj.py:923 FlatCAMObj.py:978 +#: FlatCAMObj.py:921 FlatCAMObj.py:976 #, python-format msgid "[success] Isolation geometry created: %s" msgstr "" -#: FlatCAMObj.py:1157 +#: FlatCAMObj.py:1155 msgid "Plotting Apertures" msgstr "" -#: FlatCAMObj.py:1872 flatcamEditors/FlatCAMExcEditor.py:1332 +#: FlatCAMObj.py:1870 flatcamEditors/FlatCAMExcEditor.py:1368 msgid "Total Drills" msgstr "" -#: FlatCAMObj.py:1898 flatcamEditors/FlatCAMExcEditor.py:1364 +#: FlatCAMObj.py:1896 flatcamEditors/FlatCAMExcEditor.py:1400 msgid "Total Slots" msgstr "" -#: FlatCAMObj.py:2105 FlatCAMObj.py:3380 FlatCAMObj.py:3687 FlatCAMObj.py:3874 -#: FlatCAMObj.py:3887 FlatCAMObj.py:4004 FlatCAMObj.py:4419 FlatCAMObj.py:4654 -#: FlatCAMObj.py:5062 flatcamEditors/FlatCAMExcEditor.py:1439 +#: FlatCAMObj.py:2103 FlatCAMObj.py:3384 FlatCAMObj.py:3682 FlatCAMObj.py:3869 +#: FlatCAMObj.py:3882 FlatCAMObj.py:3999 FlatCAMObj.py:4416 FlatCAMObj.py:4653 +#: FlatCAMObj.py:5061 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 @@ -1113,217 +1129,217 @@ msgstr "" msgid "[ERROR_NOTCL] Wrong value format entered, use a number." msgstr "" -#: FlatCAMObj.py:2329 FlatCAMObj.py:2420 FlatCAMObj.py:2542 +#: FlatCAMObj.py:2327 FlatCAMObj.py:2418 FlatCAMObj.py:2540 msgid "" "[ERROR_NOTCL] Please select one or more tools from the list and try again." msgstr "" -#: FlatCAMObj.py:2336 +#: FlatCAMObj.py:2334 msgid "" "[ERROR_NOTCL] Milling tool for DRILLS is larger than hole size. Cancelled." msgstr "" -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 msgid "Tool_nr" msgstr "" -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 -#: flatcamEditors/FlatCAMExcEditor.py:785 -#: flatcamEditors/FlatCAMExcEditor.py:1984 flatcamGUI/ObjectUI.py:556 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 +#: flatcamEditors/FlatCAMExcEditor.py:819 +#: flatcamEditors/FlatCAMExcEditor.py:2020 flatcamGUI/ObjectUI.py:556 #: flatcamTools/ToolNonCopperClear.py:83 flatcamTools/ToolPaint.py:80 #: flatcamTools/ToolPcbWizard.py:78 flatcamTools/ToolSolderPaste.py:81 msgid "Diameter" msgstr "" -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 msgid "Drills_Nr" msgstr "" -#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: FlatCAMObj.py:2348 FlatCAMObj.py:2442 FlatCAMObj.py:2560 msgid "Slots_Nr" msgstr "" -#: FlatCAMObj.py:2430 +#: FlatCAMObj.py:2428 msgid "" "[ERROR_NOTCL] Milling tool for SLOTS is larger than hole size. Cancelled." msgstr "" -#: FlatCAMObj.py:2604 FlatCAMObj.py:4307 FlatCAMObj.py:4520 FlatCAMObj.py:4837 +#: FlatCAMObj.py:2602 FlatCAMObj.py:4304 FlatCAMObj.py:4519 FlatCAMObj.py:4836 msgid "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"z_pdepth\"] or self." "options[\"z_pdepth\"]" msgstr "" -#: FlatCAMObj.py:2616 FlatCAMObj.py:4319 FlatCAMObj.py:4532 FlatCAMObj.py:4849 +#: FlatCAMObj.py:2614 FlatCAMObj.py:4316 FlatCAMObj.py:4531 FlatCAMObj.py:4848 msgid "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"feedrate_probe\"] or " "self.options[\"feedrate_probe\"]" msgstr "" -#: FlatCAMObj.py:2648 FlatCAMObj.py:4724 FlatCAMObj.py:4729 FlatCAMObj.py:4875 +#: FlatCAMObj.py:2646 FlatCAMObj.py:4723 FlatCAMObj.py:4728 FlatCAMObj.py:4874 msgid "Generating CNC Code" msgstr "" -#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5166 camlib.py:5625 -#: camlib.py:5888 +#: FlatCAMObj.py:2672 FlatCAMObj.py:5020 camlib.py:5152 camlib.py:5611 +#: camlib.py:5874 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:3022 FlatCAMObj.py:3930 FlatCAMObj.py:3931 FlatCAMObj.py:3940 +#: FlatCAMObj.py:3020 FlatCAMObj.py:3925 FlatCAMObj.py:3926 FlatCAMObj.py:3935 msgid "Iso" msgstr "" -#: FlatCAMObj.py:3022 FlatCAMObj.py:3265 FlatCAMObj.py:3552 +#: FlatCAMObj.py:3020 FlatCAMObj.py:3269 FlatCAMObj.py:3549 msgid "Rough" msgstr "" -#: FlatCAMObj.py:3022 +#: FlatCAMObj.py:3020 msgid "Finish" msgstr "" -#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:727 -#: flatcamGUI/FlatCAMGUI.py:1618 flatcamGUI/FlatCAMGUI.py:1953 +#: FlatCAMObj.py:3304 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:3522 +#: FlatCAMObj.py:3519 msgid "[ERROR_NOTCL] Please enter the desired tool diameter in Float format." msgstr "" -#: FlatCAMObj.py:3597 +#: FlatCAMObj.py:3592 msgid "[success] Tool added in Tool Table." msgstr "" -#: FlatCAMObj.py:3602 +#: FlatCAMObj.py:3597 msgid "[ERROR_NOTCL] Default Tool added. Wrong value format entered." msgstr "" -#: FlatCAMObj.py:3632 FlatCAMObj.py:3642 +#: FlatCAMObj.py:3627 FlatCAMObj.py:3637 msgid "[WARNING_NOTCL] Failed. Select a tool to copy." msgstr "" -#: FlatCAMObj.py:3671 +#: FlatCAMObj.py:3666 msgid "[success] Tool was copied in Tool Table." msgstr "" -#: FlatCAMObj.py:3704 +#: FlatCAMObj.py:3699 msgid "[success] Tool was edited in Tool Table." msgstr "" -#: FlatCAMObj.py:3735 FlatCAMObj.py:3745 +#: FlatCAMObj.py:3730 FlatCAMObj.py:3740 msgid "[WARNING_NOTCL] Failed. Select a tool to delete." msgstr "" -#: FlatCAMObj.py:3769 +#: FlatCAMObj.py:3764 msgid "[success] Tool was deleted in Tool Table." msgstr "" -#: FlatCAMObj.py:4190 +#: FlatCAMObj.py:4185 #, python-format msgid "" "[WARNING_NOTCL] This Geometry can't be processed because it is %s geometry." msgstr "" -#: FlatCAMObj.py:4207 +#: FlatCAMObj.py:4202 msgid "[ERROR_NOTCL] Wrong Tool Dia value format entered, use a number." msgstr "" -#: FlatCAMObj.py:4234 +#: FlatCAMObj.py:4229 msgid "[ERROR_NOTCL] Failed. No tool selected in the tool table ..." msgstr "" -#: FlatCAMObj.py:4272 +#: FlatCAMObj.py:4267 #, python-format msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" msgstr "" -#: FlatCAMObj.py:4428 FlatCAMObj.py:4663 +#: FlatCAMObj.py:4425 FlatCAMObj.py:4662 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:4544 flatcamTools/ToolSolderPaste.py:1107 +#: FlatCAMObj.py:4543 flatcamTools/ToolSolderPaste.py:1107 #: flatcamTools/ToolSolderPaste.py:1162 msgid "[ERROR_NOTCL] Cancelled. Empty file, it has no geometry..." msgstr "" -#: FlatCAMObj.py:4908 FlatCAMObj.py:4918 camlib.py:3346 camlib.py:3355 +#: FlatCAMObj.py:4907 FlatCAMObj.py:4917 camlib.py:3335 camlib.py:3344 msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float." msgstr "" -#: FlatCAMObj.py:4956 +#: FlatCAMObj.py:4955 msgid "[success] Geometry Scale done." msgstr "" -#: FlatCAMObj.py:4973 camlib.py:3425 +#: FlatCAMObj.py:4972 camlib.py:3414 msgid "" "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " "one value in the Offset field." msgstr "" -#: FlatCAMObj.py:4993 +#: FlatCAMObj.py:4992 msgid "[success] Geometry Offset done." msgstr "" -#: FlatCAMObj.py:5538 FlatCAMObj.py:5543 flatcamTools/ToolSolderPaste.py:1361 +#: FlatCAMObj.py:5546 FlatCAMObj.py:5551 flatcamTools/ToolSolderPaste.py:1361 msgid "Export Machine Code ..." msgstr "" -#: FlatCAMObj.py:5549 flatcamTools/ToolSolderPaste.py:1364 +#: FlatCAMObj.py:5557 flatcamTools/ToolSolderPaste.py:1364 msgid "[WARNING_NOTCL] Export Machine Code cancelled ..." msgstr "" -#: FlatCAMObj.py:5562 +#: FlatCAMObj.py:5570 #, python-format msgid "[success] Machine Code file saved to: %s" msgstr "" -#: FlatCAMObj.py:5584 +#: FlatCAMObj.py:5592 #, python-format msgid "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" msgstr "" -#: FlatCAMObj.py:5701 +#: FlatCAMObj.py:5709 #, python-format msgid "" "[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " "CNCJob object." msgstr "" -#: FlatCAMObj.py:5754 +#: FlatCAMObj.py:5762 msgid "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21" msgstr "" -#: FlatCAMObj.py:5767 +#: FlatCAMObj.py:5775 msgid "" "[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " "empty." msgstr "" -#: FlatCAMObj.py:5774 +#: FlatCAMObj.py:5782 msgid "[success] Toolchange G-code was replaced by a custom code." msgstr "" -#: FlatCAMObj.py:5789 flatcamTools/ToolSolderPaste.py:1390 +#: FlatCAMObj.py:5797 flatcamTools/ToolSolderPaste.py:1390 msgid "[WARNING_NOTCL] No such file or directory" msgstr "" -#: FlatCAMObj.py:5809 FlatCAMObj.py:5821 +#: FlatCAMObj.py:5817 FlatCAMObj.py:5829 msgid "" "[WARNING_NOTCL] The used postprocessor file has to have in it's name: " "'toolchange_custom'" msgstr "" -#: FlatCAMObj.py:5827 +#: FlatCAMObj.py:5835 msgid "[ERROR] There is no postprocessor file." msgstr "" -#: ObjectCollection.py:419 +#: ObjectCollection.py:420 #, python-brace-format msgid "Object renamed from {old} to {new}" msgstr "" @@ -1333,83 +1349,83 @@ msgstr "" msgid "[ERROR] Cause of error: %s" msgstr "" -#: camlib.py:202 +#: camlib.py:198 msgid "[ERROR_NOTCL] self.solid_geometry is neither BaseGeometry or list." msgstr "" -#: camlib.py:1390 +#: camlib.py:1381 msgid "[success] Object was mirrored ..." msgstr "" -#: camlib.py:1392 +#: camlib.py:1383 msgid "[ERROR_NOTCL] Failed to mirror. No object selected" msgstr "" -#: camlib.py:1428 +#: camlib.py:1419 msgid "[success] Object was rotated ..." msgstr "" -#: camlib.py:1430 +#: camlib.py:1421 msgid "[ERROR_NOTCL] Failed to rotate. No object selected" msgstr "" -#: camlib.py:1464 +#: camlib.py:1455 msgid "[success] Object was skewed ..." msgstr "" -#: camlib.py:1466 +#: camlib.py:1457 msgid "[ERROR_NOTCL] Failed to skew. No object selected" msgstr "" -#: camlib.py:2728 camlib.py:2813 +#: camlib.py:2717 camlib.py:2802 #, python-format msgid "[WARNING] Coordinates missing, line ignored: %s" msgstr "" -#: camlib.py:2729 camlib.py:2814 +#: camlib.py:2718 camlib.py:2803 msgid "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!" msgstr "" -#: camlib.py:2778 +#: camlib.py:2767 #, 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:3170 +#: camlib.py:3159 #, python-format msgid "" "[ERROR]Gerber Parser ERROR.\n" "%s:" msgstr "" -#: camlib.py:3392 +#: camlib.py:3381 msgid "[success] Gerber Scale done." msgstr "" -#: camlib.py:3458 +#: camlib.py:3447 msgid "[success] Gerber Offset done." msgstr "" -#: camlib.py:3512 +#: camlib.py:3501 msgid "[success] Gerber Mirror done." msgstr "" -#: camlib.py:3558 +#: camlib.py:3547 msgid "[success] Gerber Skew done." msgstr "" -#: camlib.py:3596 +#: camlib.py:3585 msgid "[success] Gerber Rotate done." msgstr "" -#: camlib.py:3875 +#: camlib.py:3864 #, python-format msgid "[ERROR_NOTCL] This is GCODE mark: %s" msgstr "" -#: camlib.py:3990 +#: camlib.py:3979 #, python-format msgid "" "[WARNING] No tool diameter info's. See shell.\n" @@ -1420,26 +1436,26 @@ msgid "" "diameters to reflect the real diameters." msgstr "" -#: camlib.py:4455 +#: camlib.py:4444 #, python-brace-format msgid "" "[ERROR] Excellon Parser error.\n" "Parsing Failed. Line {l_nr}: {line}\n" msgstr "" -#: camlib.py:4532 +#: camlib.py:4521 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:5075 +#: camlib.py:5061 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "" -#: camlib.py:5145 +#: camlib.py:5131 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1448,27 +1464,27 @@ msgid "" "CNC code (Gcode etc)." msgstr "" -#: camlib.py:5152 camlib.py:5648 camlib.py:5911 +#: camlib.py:5138 camlib.py:5634 camlib.py:5897 #, python-format msgid "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" msgstr "" -#: camlib.py:5381 camlib.py:5478 camlib.py:5536 +#: camlib.py:5367 camlib.py:5464 camlib.py:5522 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "" -#: camlib.py:5483 +#: camlib.py:5469 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "" -#: camlib.py:5636 camlib.py:5899 +#: camlib.py:5622 camlib.py:5885 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." msgstr "" -#: camlib.py:5641 camlib.py:5904 +#: camlib.py:5627 camlib.py:5890 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1477,11 +1493,11 @@ msgid "" "code (Gcode etc)." msgstr "" -#: camlib.py:5653 camlib.py:5916 +#: camlib.py:5639 camlib.py:5902 msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." msgstr "" -#: camlib.py:5657 camlib.py:5920 +#: camlib.py:5643 camlib.py:5906 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1490,44 +1506,50 @@ msgid "" "code (Gcode etc)." msgstr "" -#: camlib.py:5664 camlib.py:5927 +#: camlib.py:5650 camlib.py:5913 #, python-format msgid "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" msgstr "" -#: camlib.py:5794 +#: camlib.py:5780 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "" -#: camlib.py:5800 +#: camlib.py:5786 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." msgstr "" -#: camlib.py:5839 +#: camlib.py:5825 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:6053 +#: camlib.py:6039 msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." msgstr "" +#: flatcamEditors/FlatCAMExcEditor.py:37 flatcamEditors/FlatCAMExcEditor.py:143 +#: flatcamEditors/FlatCAMGrbEditor.py:229 +#: flatcamEditors/FlatCAMGrbEditor.py:234 +msgid "Click to place ..." +msgstr "" + #: flatcamEditors/FlatCAMExcEditor.py:46 msgid "[WARNING_NOTCL] To add a drill first select a tool" msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:62 flatcamEditors/FlatCAMExcEditor.py:165 -#: flatcamEditors/FlatCAMExcEditor.py:447 -#: flatcamEditors/FlatCAMExcEditor.py:472 +#: flatcamEditors/FlatCAMExcEditor.py:450 +#: flatcamEditors/FlatCAMExcEditor.py:475 #: flatcamEditors/FlatCAMGrbEditor.py:451 -#: flatcamEditors/FlatCAMGrbEditor.py:1762 -#: flatcamEditors/FlatCAMGrbEditor.py:1790 +#: flatcamEditors/FlatCAMGrbEditor.py:1776 +#: flatcamEditors/FlatCAMGrbEditor.py:1804 msgid "Click on target location ..." msgstr "" @@ -1551,8 +1573,8 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:207 -#: flatcamEditors/FlatCAMGrbEditor.py:497 -msgid "[ERROR_NOTCL] The value is mistyped. Check the value." +#, python-format +msgid "[ERROR_NOTCL] The value is mistyped. Check the value. %s" msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:305 @@ -1567,155 +1589,156 @@ msgstr "" msgid "Click on the Drill(s) to resize ..." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:353 +#: flatcamEditors/FlatCAMExcEditor.py:354 msgid "" "[ERROR_NOTCL] Resize drill(s) failed. Please enter a diameter for resize." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:423 +#: flatcamEditors/FlatCAMExcEditor.py:424 msgid "[success] Done. Drill Resize completed." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:426 +#: flatcamEditors/FlatCAMExcEditor.py:427 msgid "[WARNING_NOTCL] Cancelled. No drills selected for resize ..." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:449 -#: flatcamEditors/FlatCAMGrbEditor.py:1764 +#: flatcamEditors/FlatCAMExcEditor.py:452 +#: flatcamEditors/FlatCAMGrbEditor.py:1778 msgid "Click on reference location ..." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:504 +#: flatcamEditors/FlatCAMExcEditor.py:507 msgid "[success] Done. Drill(s) Move completed." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:557 +#: flatcamEditors/FlatCAMExcEditor.py:592 msgid "[success] Done. Drill(s) copied." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:758 +#: flatcamEditors/FlatCAMExcEditor.py:792 flatcamGUI/FlatCAMGUI.py:5026 msgid "Excellon Editor" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:765 -#: flatcamEditors/FlatCAMGrbEditor.py:2250 +#: flatcamEditors/FlatCAMExcEditor.py:799 +#: flatcamEditors/FlatCAMGrbEditor.py:2266 msgid "Name:" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:771 flatcamTools/ToolNonCopperClear.py:72 +#: flatcamEditors/FlatCAMExcEditor.py:805 flatcamTools/ToolNonCopperClear.py:72 #: flatcamTools/ToolPaint.py:69 flatcamTools/ToolSolderPaste.py:70 msgid "Tools Table" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:773 flatcamGUI/ObjectUI.py:538 +#: flatcamEditors/FlatCAMExcEditor.py:807 flatcamGUI/ObjectUI.py:538 msgid "" "Tools in this Excellon object\n" "when are used for drilling." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:793 +#: flatcamEditors/FlatCAMExcEditor.py:827 msgid "Add/Delete Tool" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:795 +#: flatcamEditors/FlatCAMExcEditor.py:829 msgid "" "Add/Delete a tool to the tool list\n" "for this Excellon object." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:803 flatcamTools/ToolCutOut.py:77 +#: flatcamEditors/FlatCAMExcEditor.py:837 flatcamTools/ToolCutOut.py:77 msgid "Tool Dia:" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:805 flatcamGUI/ObjectUI.py:978 +#: flatcamEditors/FlatCAMExcEditor.py:839 flatcamGUI/FlatCAMGUI.py:5055 +#: flatcamGUI/ObjectUI.py:978 msgid "Diameter for the new tool" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:814 +#: flatcamEditors/FlatCAMExcEditor.py:847 msgid "Add Tool" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:816 +#: flatcamEditors/FlatCAMExcEditor.py:849 msgid "" "Add a new tool to the tool list\n" "with the diameter specified above." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:826 +#: flatcamEditors/FlatCAMExcEditor.py:861 msgid "Delete Tool" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:828 +#: flatcamEditors/FlatCAMExcEditor.py:863 msgid "" "Delete a tool in the tool list\n" "by selecting a row in the tool table." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:846 +#: flatcamEditors/FlatCAMExcEditor.py:881 msgid "Resize Drill(s)" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:848 +#: flatcamEditors/FlatCAMExcEditor.py:883 msgid "Resize a drill or a selection of drills." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:855 +#: flatcamEditors/FlatCAMExcEditor.py:890 msgid "Resize Dia:" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:857 +#: flatcamEditors/FlatCAMExcEditor.py:892 msgid "Diameter to resize to." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:865 +#: flatcamEditors/FlatCAMExcEditor.py:900 msgid "Resize" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:867 +#: flatcamEditors/FlatCAMExcEditor.py:902 msgid "Resize drill(s)" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1615 +#: flatcamEditors/FlatCAMExcEditor.py:924 flatcamGUI/FlatCAMGUI.py:1612 msgid "Add Drill Array" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:891 +#: flatcamEditors/FlatCAMExcEditor.py:926 msgid "Add an array of drills (linear or circular array)" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:897 +#: flatcamEditors/FlatCAMExcEditor.py:932 msgid "" "Select the type of drills array to create.\n" "It can be Linear X(Y) or Circular" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:900 -#: flatcamEditors/FlatCAMGrbEditor.py:2483 +#: flatcamEditors/FlatCAMExcEditor.py:935 +#: flatcamEditors/FlatCAMGrbEditor.py:2499 msgid "Linear" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:901 -#: flatcamEditors/FlatCAMGrbEditor.py:2484 +#: flatcamEditors/FlatCAMExcEditor.py:936 +#: flatcamEditors/FlatCAMGrbEditor.py:2500 msgid "Circular" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:908 +#: flatcamEditors/FlatCAMExcEditor.py:944 flatcamGUI/FlatCAMGUI.py:5065 msgid "Nr of drills:" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:910 +#: flatcamEditors/FlatCAMExcEditor.py:946 flatcamGUI/FlatCAMGUI.py:5067 msgid "Specify how many drills to be in the array." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:927 -#: flatcamEditors/FlatCAMExcEditor.py:972 -#: flatcamEditors/FlatCAMGrbEditor.py:2510 -#: flatcamEditors/FlatCAMGrbEditor.py:2555 +#: flatcamEditors/FlatCAMExcEditor.py:964 +#: flatcamEditors/FlatCAMExcEditor.py:1010 +#: flatcamEditors/FlatCAMGrbEditor.py:2526 +#: flatcamEditors/FlatCAMGrbEditor.py:2571 msgid "Direction:" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:929 -#: flatcamEditors/FlatCAMGrbEditor.py:2512 +#: flatcamEditors/FlatCAMExcEditor.py:966 +#: flatcamEditors/FlatCAMGrbEditor.py:2528 flatcamGUI/FlatCAMGUI.py:5082 msgid "" "Direction on which the linear array is oriented:\n" "- 'X' - horizontal axis \n" @@ -1723,27 +1746,28 @@ msgid "" "- 'Angle' - a custom angle for the array inclination" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:942 -#: flatcamEditors/FlatCAMGrbEditor.py:2525 +#: flatcamEditors/FlatCAMExcEditor.py:979 +#: flatcamEditors/FlatCAMGrbEditor.py:2541 flatcamGUI/FlatCAMGUI.py:5096 msgid "Pitch:" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:944 -#: flatcamEditors/FlatCAMGrbEditor.py:2527 +#: flatcamEditors/FlatCAMExcEditor.py:981 +#: flatcamEditors/FlatCAMGrbEditor.py:2543 flatcamGUI/FlatCAMGUI.py:5098 msgid "Pitch = Distance between elements of the array." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:951 -#: flatcamEditors/FlatCAMExcEditor.py:987 +#: flatcamEditors/FlatCAMExcEditor.py:989 +#: flatcamEditors/FlatCAMExcEditor.py:1024 #: flatcamEditors/FlatCAMGeoEditor.py:665 -#: flatcamEditors/FlatCAMGrbEditor.py:2534 -#: flatcamEditors/FlatCAMGrbEditor.py:2570 -#: flatcamEditors/FlatCAMGrbEditor.py:4558 flatcamTools/ToolTransform.py:68 +#: flatcamEditors/FlatCAMGrbEditor.py:2550 +#: flatcamEditors/FlatCAMGrbEditor.py:2586 +#: flatcamEditors/FlatCAMGrbEditor.py:4580 flatcamGUI/FlatCAMGUI.py:5107 +#: flatcamTools/ToolTransform.py:68 msgid "Angle:" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:953 -#: flatcamEditors/FlatCAMGrbEditor.py:2536 +#: flatcamEditors/FlatCAMExcEditor.py:991 +#: flatcamEditors/FlatCAMGrbEditor.py:2552 msgid "" "Angle at which the linear array is placed.\n" "The precision is of max 2 decimals.\n" @@ -1751,72 +1775,73 @@ msgid "" "Max value is: 360.00 degrees." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:974 -#: flatcamEditors/FlatCAMGrbEditor.py:2557 +#: flatcamEditors/FlatCAMExcEditor.py:1012 +#: flatcamEditors/FlatCAMGrbEditor.py:2573 msgid "" "Direction for circular array.Can be CW = clockwise or CCW = counter " "clockwise." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:989 -#: flatcamEditors/FlatCAMGrbEditor.py:2572 +#: flatcamEditors/FlatCAMExcEditor.py:1026 +#: flatcamEditors/FlatCAMGrbEditor.py:2588 flatcamGUI/FlatCAMGUI.py:5109 +#: flatcamGUI/FlatCAMGUI.py:5135 msgid "Angle at which each element in circular array is placed." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:1452 +#: flatcamEditors/FlatCAMExcEditor.py:1487 msgid "" "[WARNING_NOTCL] Tool already in the original or actual tool list.\n" "Save and reedit Excellon if you need to add this tool. " msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:1461 flatcamGUI/FlatCAMGUI.py:3002 +#: flatcamEditors/FlatCAMExcEditor.py:1496 flatcamGUI/FlatCAMGUI.py:2997 #, python-brace-format msgid "[success] Added new tool with dia: {dia} {units}" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:1493 +#: flatcamEditors/FlatCAMExcEditor.py:1528 msgid "[WARNING_NOTCL] Select a tool in Tool Table" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:1526 +#: flatcamEditors/FlatCAMExcEditor.py:1560 #, python-brace-format msgid "[success] Deleted tool with dia: {del_dia} {units}" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:2038 +#: flatcamEditors/FlatCAMExcEditor.py:2074 msgid "" "[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon " "creation." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:2047 +#: flatcamEditors/FlatCAMExcEditor.py:2083 msgid "Creating Excellon." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:2056 +#: flatcamEditors/FlatCAMExcEditor.py:2092 msgid "[success] Excellon editing finished." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:2073 +#: flatcamEditors/FlatCAMExcEditor.py:2109 msgid "[WARNING_NOTCL] Cancelled. There is no Tool/Drill selected" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:2605 +#: flatcamEditors/FlatCAMExcEditor.py:2637 msgid "[success] Done. Drill(s) deleted." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:2675 -#: flatcamEditors/FlatCAMGrbEditor.py:4318 +#: flatcamEditors/FlatCAMExcEditor.py:2705 +#: flatcamEditors/FlatCAMGrbEditor.py:4340 msgid "Click on the circular array Center position" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:80 -#: flatcamEditors/FlatCAMGrbEditor.py:2400 +#: flatcamEditors/FlatCAMGrbEditor.py:2416 msgid "Buffer distance:" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:81 -#: flatcamEditors/FlatCAMGrbEditor.py:2401 +#: flatcamEditors/FlatCAMGrbEditor.py:2417 msgid "Buffer corner:" msgstr "" @@ -1830,17 +1855,17 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:89 -#: flatcamEditors/FlatCAMGrbEditor.py:2409 +#: flatcamEditors/FlatCAMGrbEditor.py:2425 msgid "Round" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:90 -#: flatcamEditors/FlatCAMGrbEditor.py:2410 +#: flatcamEditors/FlatCAMGrbEditor.py:2426 msgid "Square" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:91 -#: flatcamEditors/FlatCAMGrbEditor.py:2411 +#: flatcamEditors/FlatCAMGrbEditor.py:2427 msgid "Beveled" msgstr "" @@ -1867,7 +1892,7 @@ msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2700 #: flatcamEditors/FlatCAMGeoEditor.py:2726 #: flatcamEditors/FlatCAMGeoEditor.py:2752 -#: flatcamEditors/FlatCAMGrbEditor.py:4370 +#: flatcamEditors/FlatCAMGrbEditor.py:4392 msgid "" "[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and " "retry." @@ -1877,24 +1902,24 @@ msgstr "" msgid "Text Tool" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:808 +#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:803 msgid "Tool" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4058 -#: flatcamGUI/FlatCAMGUI.py:5455 flatcamGUI/FlatCAMGUI.py:5731 -#: flatcamGUI/FlatCAMGUI.py:5871 flatcamGUI/ObjectUI.py:260 +#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4054 +#: flatcamGUI/FlatCAMGUI.py:5618 flatcamGUI/FlatCAMGUI.py:5895 +#: flatcamGUI/FlatCAMGUI.py:6035 flatcamGUI/ObjectUI.py:260 msgid "Tool dia:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5873 +#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:6037 msgid "" "Diameter of the tool to\n" "be used in the operation." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5637 -#: flatcamGUI/FlatCAMGUI.py:5882 flatcamTools/ToolNonCopperClear.py:165 +#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5801 +#: flatcamGUI/FlatCAMGUI.py:6046 flatcamTools/ToolNonCopperClear.py:165 #: flatcamTools/ToolPaint.py:160 msgid "Overlap Rate:" msgstr "" @@ -1914,14 +1939,14 @@ msgid "" "due of too many paths." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5653 -#: flatcamGUI/FlatCAMGUI.py:5739 flatcamGUI/FlatCAMGUI.py:5892 +#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5817 +#: flatcamGUI/FlatCAMGUI.py:5903 flatcamGUI/FlatCAMGUI.py:6056 #: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:181 #: flatcamTools/ToolPaint.py:177 msgid "Margin:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5894 +#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:6058 #: flatcamTools/ToolPaint.py:179 msgid "" "Distance by which to avoid\n" @@ -1929,40 +1954,40 @@ msgid "" "be painted." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5662 -#: flatcamGUI/FlatCAMGUI.py:5903 flatcamTools/ToolNonCopperClear.py:190 +#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5826 +#: flatcamGUI/FlatCAMGUI.py:6067 flatcamTools/ToolNonCopperClear.py:190 #: flatcamTools/ToolPaint.py:188 msgid "Method:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5905 +#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:6069 msgid "" "Algorithm to paint the polygon:
Standard: Fixed step inwards." "
Seed-based: Outwards from seed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5678 -#: flatcamGUI/FlatCAMGUI.py:5918 flatcamTools/ToolNonCopperClear.py:206 +#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5842 +#: flatcamGUI/FlatCAMGUI.py:6082 flatcamTools/ToolNonCopperClear.py:206 #: flatcamTools/ToolPaint.py:204 msgid "Connect:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5680 -#: flatcamGUI/FlatCAMGUI.py:5920 flatcamTools/ToolNonCopperClear.py:208 +#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5844 +#: flatcamGUI/FlatCAMGUI.py:6084 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:5687 -#: flatcamGUI/FlatCAMGUI.py:5928 flatcamTools/ToolNonCopperClear.py:215 +#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5851 +#: flatcamGUI/FlatCAMGUI.py:6092 flatcamTools/ToolNonCopperClear.py:215 #: flatcamTools/ToolPaint.py:213 msgid "Contour:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5689 -#: flatcamGUI/FlatCAMGUI.py:5930 flatcamTools/ToolNonCopperClear.py:217 +#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5853 +#: flatcamGUI/FlatCAMGUI.py:6094 flatcamTools/ToolNonCopperClear.py:217 #: flatcamTools/ToolPaint.py:215 msgid "" "Cut around the perimeter of the polygon\n" @@ -1973,8 +1998,8 @@ msgstr "" msgid "Paint" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:527 flatcamGUI/FlatCAMGUI.py:648 -#: flatcamGUI/FlatCAMGUI.py:1868 flatcamGUI/ObjectUI.py:1314 +#: flatcamEditors/FlatCAMGeoEditor.py:527 flatcamGUI/FlatCAMGUI.py:643 +#: flatcamGUI/FlatCAMGUI.py:1866 flatcamGUI/ObjectUI.py:1314 #: flatcamTools/ToolPaint.py:341 msgid "Paint Tool" msgstr "" @@ -2012,53 +2037,53 @@ msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:617 #: flatcamEditors/FlatCAMGeoEditor.py:990 -#: flatcamEditors/FlatCAMGrbEditor.py:4509 -#: flatcamEditors/FlatCAMGrbEditor.py:4894 flatcamGUI/FlatCAMGUI.py:659 -#: flatcamGUI/FlatCAMGUI.py:1881 flatcamTools/ToolTransform.py:398 +#: flatcamEditors/FlatCAMGrbEditor.py:4531 +#: flatcamEditors/FlatCAMGrbEditor.py:4916 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:4510 -#: flatcamEditors/FlatCAMGrbEditor.py:4572 flatcamTools/ToolTransform.py:24 +#: flatcamEditors/FlatCAMGrbEditor.py:4532 +#: flatcamEditors/FlatCAMGrbEditor.py:4594 flatcamTools/ToolTransform.py:24 #: flatcamTools/ToolTransform.py:82 msgid "Rotate" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:619 -#: flatcamEditors/FlatCAMGrbEditor.py:4511 flatcamTools/ToolTransform.py:25 +#: flatcamEditors/FlatCAMGrbEditor.py:4533 flatcamTools/ToolTransform.py:25 msgid "Skew/Shear" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:620 -#: flatcamEditors/FlatCAMGrbEditor.py:2455 -#: flatcamEditors/FlatCAMGrbEditor.py:4512 flatcamGUI/FlatCAMGUI.py:723 -#: flatcamGUI/FlatCAMGUI.py:1949 flatcamGUI/ObjectUI.py:100 +#: flatcamEditors/FlatCAMGrbEditor.py:2471 +#: flatcamEditors/FlatCAMGrbEditor.py:4534 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:4513 flatcamTools/ToolTransform.py:27 +#: flatcamEditors/FlatCAMGrbEditor.py:4535 flatcamTools/ToolTransform.py:27 msgid "Mirror (Flip)" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:622 -#: flatcamEditors/FlatCAMGrbEditor.py:4514 flatcamGUI/ObjectUI.py:127 -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamEditors/FlatCAMGrbEditor.py:4536 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:4526 +#: flatcamEditors/FlatCAMGrbEditor.py:4548 #, python-format msgid "Editor %s" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:667 -#: flatcamEditors/FlatCAMGrbEditor.py:4560 flatcamTools/ToolTransform.py:70 +#: flatcamEditors/FlatCAMGrbEditor.py:4582 flatcamTools/ToolTransform.py:70 msgid "" "Angle for Rotation action, in degrees.\n" "Float number between -360 and 359.\n" @@ -2067,7 +2092,7 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:681 -#: flatcamEditors/FlatCAMGrbEditor.py:4574 +#: flatcamEditors/FlatCAMGrbEditor.py:4596 msgid "" "Rotate the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2075,14 +2100,14 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:704 -#: flatcamEditors/FlatCAMGrbEditor.py:4597 flatcamTools/ToolTransform.py:107 +#: flatcamEditors/FlatCAMGrbEditor.py:4619 flatcamTools/ToolTransform.py:107 msgid "Angle X:" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:706 #: flatcamEditors/FlatCAMGeoEditor.py:724 -#: flatcamEditors/FlatCAMGrbEditor.py:4599 -#: flatcamEditors/FlatCAMGrbEditor.py:4617 flatcamTools/ToolTransform.py:109 +#: flatcamEditors/FlatCAMGrbEditor.py:4621 +#: flatcamEditors/FlatCAMGrbEditor.py:4639 flatcamTools/ToolTransform.py:109 #: flatcamTools/ToolTransform.py:127 msgid "" "Angle for Skew action, in degrees.\n" @@ -2090,14 +2115,14 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:715 -#: flatcamEditors/FlatCAMGrbEditor.py:4608 flatcamTools/ToolTransform.py:118 +#: flatcamEditors/FlatCAMGrbEditor.py:4630 flatcamTools/ToolTransform.py:118 msgid "Skew X" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:717 #: flatcamEditors/FlatCAMGeoEditor.py:735 -#: flatcamEditors/FlatCAMGrbEditor.py:4610 -#: flatcamEditors/FlatCAMGrbEditor.py:4628 +#: flatcamEditors/FlatCAMGrbEditor.py:4632 +#: flatcamEditors/FlatCAMGrbEditor.py:4650 msgid "" "Skew/shear the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2105,34 +2130,34 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:722 -#: flatcamEditors/FlatCAMGrbEditor.py:4615 flatcamTools/ToolTransform.py:125 +#: flatcamEditors/FlatCAMGrbEditor.py:4637 flatcamTools/ToolTransform.py:125 msgid "Angle Y:" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:733 -#: flatcamEditors/FlatCAMGrbEditor.py:4626 flatcamTools/ToolTransform.py:136 +#: flatcamEditors/FlatCAMGrbEditor.py:4648 flatcamTools/ToolTransform.py:136 msgid "Skew Y" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:761 -#: flatcamEditors/FlatCAMGrbEditor.py:4654 flatcamTools/ToolTransform.py:164 +#: flatcamEditors/FlatCAMGrbEditor.py:4676 flatcamTools/ToolTransform.py:164 msgid "Factor X:" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:763 -#: flatcamEditors/FlatCAMGrbEditor.py:4656 flatcamTools/ToolTransform.py:166 +#: flatcamEditors/FlatCAMGrbEditor.py:4678 flatcamTools/ToolTransform.py:166 msgid "Factor for Scale action over X axis." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:771 -#: flatcamEditors/FlatCAMGrbEditor.py:4664 flatcamTools/ToolTransform.py:174 +#: flatcamEditors/FlatCAMGrbEditor.py:4686 flatcamTools/ToolTransform.py:174 msgid "Scale X" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:773 #: flatcamEditors/FlatCAMGeoEditor.py:790 -#: flatcamEditors/FlatCAMGrbEditor.py:4666 -#: flatcamEditors/FlatCAMGrbEditor.py:4683 +#: flatcamEditors/FlatCAMGrbEditor.py:4688 +#: flatcamEditors/FlatCAMGrbEditor.py:4705 msgid "" "Scale the selected shape(s).\n" "The point of reference depends on \n" @@ -2140,41 +2165,41 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:778 -#: flatcamEditors/FlatCAMGrbEditor.py:4671 flatcamTools/ToolTransform.py:181 +#: flatcamEditors/FlatCAMGrbEditor.py:4693 flatcamTools/ToolTransform.py:181 msgid "Factor Y:" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:780 -#: flatcamEditors/FlatCAMGrbEditor.py:4673 flatcamTools/ToolTransform.py:183 +#: flatcamEditors/FlatCAMGrbEditor.py:4695 flatcamTools/ToolTransform.py:183 msgid "Factor for Scale action over Y axis." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:788 -#: flatcamEditors/FlatCAMGrbEditor.py:4681 flatcamTools/ToolTransform.py:191 +#: flatcamEditors/FlatCAMGrbEditor.py:4703 flatcamTools/ToolTransform.py:191 msgid "Scale Y" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:797 -#: flatcamEditors/FlatCAMGrbEditor.py:4690 flatcamGUI/FlatCAMGUI.py:6277 +#: flatcamEditors/FlatCAMGrbEditor.py:4712 flatcamGUI/FlatCAMGUI.py:6441 #: flatcamTools/ToolTransform.py:200 msgid "Link" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:799 -#: flatcamEditors/FlatCAMGrbEditor.py:4692 +#: flatcamEditors/FlatCAMGrbEditor.py:4714 msgid "" "Scale the selected shape(s)\n" "using the Scale Factor X for both axis." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:805 -#: flatcamEditors/FlatCAMGrbEditor.py:4698 flatcamGUI/FlatCAMGUI.py:6285 +#: flatcamEditors/FlatCAMGrbEditor.py:4720 flatcamGUI/FlatCAMGUI.py:6449 #: flatcamTools/ToolTransform.py:208 msgid "Scale Reference" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:807 -#: flatcamEditors/FlatCAMGrbEditor.py:4700 +#: flatcamEditors/FlatCAMGrbEditor.py:4722 msgid "" "Scale the selected shape(s)\n" "using the origin reference when checked,\n" @@ -2183,24 +2208,24 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:835 -#: flatcamEditors/FlatCAMGrbEditor.py:4729 flatcamTools/ToolTransform.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:4751 flatcamTools/ToolTransform.py:238 msgid "Value X:" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:837 -#: flatcamEditors/FlatCAMGrbEditor.py:4731 flatcamTools/ToolTransform.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:4753 flatcamTools/ToolTransform.py:240 msgid "Value for Offset action on X axis." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:845 -#: flatcamEditors/FlatCAMGrbEditor.py:4739 flatcamTools/ToolTransform.py:248 +#: flatcamEditors/FlatCAMGrbEditor.py:4761 flatcamTools/ToolTransform.py:248 msgid "Offset X" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:847 #: flatcamEditors/FlatCAMGeoEditor.py:865 -#: flatcamEditors/FlatCAMGrbEditor.py:4741 -#: flatcamEditors/FlatCAMGrbEditor.py:4759 +#: flatcamEditors/FlatCAMGrbEditor.py:4763 +#: flatcamEditors/FlatCAMGrbEditor.py:4781 msgid "" "Offset the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2208,46 +2233,46 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:853 -#: flatcamEditors/FlatCAMGrbEditor.py:4747 flatcamTools/ToolTransform.py:255 +#: flatcamEditors/FlatCAMGrbEditor.py:4769 flatcamTools/ToolTransform.py:255 msgid "Value Y:" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:855 -#: flatcamEditors/FlatCAMGrbEditor.py:4749 flatcamTools/ToolTransform.py:257 +#: flatcamEditors/FlatCAMGrbEditor.py:4771 flatcamTools/ToolTransform.py:257 msgid "Value for Offset action on Y axis." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:863 -#: flatcamEditors/FlatCAMGrbEditor.py:4757 flatcamTools/ToolTransform.py:265 +#: flatcamEditors/FlatCAMGrbEditor.py:4779 flatcamTools/ToolTransform.py:265 msgid "Offset Y" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:894 -#: flatcamEditors/FlatCAMGrbEditor.py:4788 flatcamTools/ToolTransform.py:295 +#: flatcamEditors/FlatCAMGrbEditor.py:4810 flatcamTools/ToolTransform.py:295 msgid "Flip on X" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:896 #: flatcamEditors/FlatCAMGeoEditor.py:904 -#: flatcamEditors/FlatCAMGrbEditor.py:4790 -#: flatcamEditors/FlatCAMGrbEditor.py:4798 +#: flatcamEditors/FlatCAMGrbEditor.py:4812 +#: flatcamEditors/FlatCAMGrbEditor.py:4820 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:4796 flatcamTools/ToolTransform.py:303 +#: flatcamEditors/FlatCAMGrbEditor.py:4818 flatcamTools/ToolTransform.py:303 msgid "Flip on Y" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:911 -#: flatcamEditors/FlatCAMGrbEditor.py:4805 flatcamTools/ToolTransform.py:312 +#: flatcamEditors/FlatCAMGrbEditor.py:4827 flatcamTools/ToolTransform.py:312 msgid "Ref Pt" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:913 -#: flatcamEditors/FlatCAMGrbEditor.py:4807 +#: flatcamEditors/FlatCAMGrbEditor.py:4829 msgid "" "Flip the selected shape(s)\n" "around the point in Point Entry Field.\n" @@ -2261,12 +2286,12 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:925 -#: flatcamEditors/FlatCAMGrbEditor.py:4819 flatcamTools/ToolTransform.py:325 +#: flatcamEditors/FlatCAMGrbEditor.py:4841 flatcamTools/ToolTransform.py:325 msgid "Point:" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:927 -#: flatcamEditors/FlatCAMGrbEditor.py:4821 +#: flatcamEditors/FlatCAMGrbEditor.py:4843 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" @@ -2274,7 +2299,7 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:939 -#: flatcamEditors/FlatCAMGrbEditor.py:4833 flatcamTools/ToolTransform.py:339 +#: flatcamEditors/FlatCAMGrbEditor.py:4855 flatcamTools/ToolTransform.py:339 msgid "" "The point coordinates can be captured by\n" "left click on canvas together with pressing\n" @@ -2282,247 +2307,247 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1054 -#: flatcamEditors/FlatCAMGrbEditor.py:4958 +#: flatcamEditors/FlatCAMGrbEditor.py:4980 msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1075 -#: flatcamEditors/FlatCAMGrbEditor.py:4978 flatcamTools/ToolTransform.py:468 +#: flatcamEditors/FlatCAMGrbEditor.py:5000 flatcamTools/ToolTransform.py:468 msgid "[ERROR_NOTCL] Wrong value format entered for Rotate, use a number." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1112 -#: flatcamEditors/FlatCAMGrbEditor.py:5021 flatcamTools/ToolTransform.py:502 +#: flatcamEditors/FlatCAMGrbEditor.py:5043 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:5048 flatcamTools/ToolTransform.py:520 +#: flatcamEditors/FlatCAMGrbEditor.py:5070 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:5075 flatcamTools/ToolTransform.py:538 +#: flatcamEditors/FlatCAMGrbEditor.py:5097 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:5116 flatcamTools/ToolTransform.py:572 +#: flatcamEditors/FlatCAMGrbEditor.py:5138 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:5154 flatcamTools/ToolTransform.py:601 +#: flatcamEditors/FlatCAMGrbEditor.py:5176 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:5180 flatcamTools/ToolTransform.py:619 +#: flatcamEditors/FlatCAMGrbEditor.py:5202 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:5203 +#: flatcamEditors/FlatCAMGrbEditor.py:5225 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1265 -#: flatcamEditors/FlatCAMGrbEditor.py:5206 flatcamTools/ToolTransform.py:640 +#: flatcamEditors/FlatCAMGrbEditor.py:5228 flatcamTools/ToolTransform.py:640 msgid "Appying Rotate" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1293 -#: flatcamEditors/FlatCAMGrbEditor.py:5237 +#: flatcamEditors/FlatCAMGrbEditor.py:5259 msgid "[success] Done. Rotate completed." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1309 -#: flatcamEditors/FlatCAMGrbEditor.py:5256 +#: flatcamEditors/FlatCAMGrbEditor.py:5278 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to flip!" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1312 -#: flatcamEditors/FlatCAMGrbEditor.py:5259 flatcamTools/ToolTransform.py:691 +#: flatcamEditors/FlatCAMGrbEditor.py:5281 flatcamTools/ToolTransform.py:691 msgid "Applying Flip" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1342 -#: flatcamEditors/FlatCAMGrbEditor.py:5296 flatcamTools/ToolTransform.py:733 +#: flatcamEditors/FlatCAMGrbEditor.py:5318 flatcamTools/ToolTransform.py:733 msgid "[success] Flip on the Y axis done ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1345 -#: flatcamEditors/FlatCAMGrbEditor.py:5304 flatcamTools/ToolTransform.py:742 +#: flatcamEditors/FlatCAMGrbEditor.py:5326 flatcamTools/ToolTransform.py:742 msgid "[success] Flip on the X axis done ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1364 -#: flatcamEditors/FlatCAMGrbEditor.py:5324 +#: flatcamEditors/FlatCAMGrbEditor.py:5346 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1367 -#: flatcamEditors/FlatCAMGrbEditor.py:5327 flatcamTools/ToolTransform.py:760 +#: flatcamEditors/FlatCAMGrbEditor.py:5349 flatcamTools/ToolTransform.py:760 msgid "Applying Skew" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1392 -#: flatcamEditors/FlatCAMGrbEditor.py:5360 flatcamTools/ToolTransform.py:791 +#: flatcamEditors/FlatCAMGrbEditor.py:5382 flatcamTools/ToolTransform.py:791 #, python-format msgid "[success] Skew on the %s axis done ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1396 -#: flatcamEditors/FlatCAMGrbEditor.py:5364 flatcamTools/ToolTransform.py:795 +#: flatcamEditors/FlatCAMGrbEditor.py:5386 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:5383 +#: flatcamEditors/FlatCAMGrbEditor.py:5405 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to scale!" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1410 -#: flatcamEditors/FlatCAMGrbEditor.py:5386 flatcamTools/ToolTransform.py:809 +#: flatcamEditors/FlatCAMGrbEditor.py:5408 flatcamTools/ToolTransform.py:809 msgid "Applying Scale" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1443 -#: flatcamEditors/FlatCAMGrbEditor.py:5422 flatcamTools/ToolTransform.py:848 +#: flatcamEditors/FlatCAMGrbEditor.py:5444 flatcamTools/ToolTransform.py:848 #, python-format msgid "[success] Scale on the %s axis done ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1446 -#: flatcamEditors/FlatCAMGrbEditor.py:5425 flatcamTools/ToolTransform.py:851 +#: flatcamEditors/FlatCAMGrbEditor.py:5447 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:5438 +#: flatcamEditors/FlatCAMGrbEditor.py:5460 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to offset!" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1458 -#: flatcamEditors/FlatCAMGrbEditor.py:5441 flatcamTools/ToolTransform.py:861 +#: flatcamEditors/FlatCAMGrbEditor.py:5463 flatcamTools/ToolTransform.py:861 msgid "Applying Offset" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1469 -#: flatcamEditors/FlatCAMGrbEditor.py:5462 flatcamTools/ToolTransform.py:880 +#: flatcamEditors/FlatCAMGrbEditor.py:5484 flatcamTools/ToolTransform.py:880 #, python-format msgid "[success] Offset on the %s axis done ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1473 -#: flatcamEditors/FlatCAMGrbEditor.py:5466 flatcamTools/ToolTransform.py:884 +#: flatcamEditors/FlatCAMGrbEditor.py:5488 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:5470 +#: flatcamEditors/FlatCAMGrbEditor.py:5492 msgid "Rotate ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1478 #: flatcamEditors/FlatCAMGeoEditor.py:1535 #: flatcamEditors/FlatCAMGeoEditor.py:1552 -#: flatcamEditors/FlatCAMGrbEditor.py:5471 -#: flatcamEditors/FlatCAMGrbEditor.py:5528 -#: flatcamEditors/FlatCAMGrbEditor.py:5545 +#: flatcamEditors/FlatCAMGrbEditor.py:5493 +#: flatcamEditors/FlatCAMGrbEditor.py:5550 +#: flatcamEditors/FlatCAMGrbEditor.py:5567 msgid "Enter an Angle Value (degrees):" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1487 -#: flatcamEditors/FlatCAMGrbEditor.py:5480 +#: flatcamEditors/FlatCAMGrbEditor.py:5502 msgid "[success] Geometry shape rotate done..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1492 -#: flatcamEditors/FlatCAMGrbEditor.py:5485 +#: flatcamEditors/FlatCAMGrbEditor.py:5507 msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1498 -#: flatcamEditors/FlatCAMGrbEditor.py:5491 +#: flatcamEditors/FlatCAMGrbEditor.py:5513 msgid "Offset on X axis ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1499 #: flatcamEditors/FlatCAMGeoEditor.py:1518 -#: flatcamEditors/FlatCAMGrbEditor.py:5492 -#: flatcamEditors/FlatCAMGrbEditor.py:5511 +#: flatcamEditors/FlatCAMGrbEditor.py:5514 +#: flatcamEditors/FlatCAMGrbEditor.py:5533 #, python-format msgid "Enter a distance Value (%s):" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1508 -#: flatcamEditors/FlatCAMGrbEditor.py:5501 +#: flatcamEditors/FlatCAMGrbEditor.py:5523 msgid "[success] Geometry shape offset on X axis done..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1512 -#: flatcamEditors/FlatCAMGrbEditor.py:5505 +#: flatcamEditors/FlatCAMGrbEditor.py:5527 msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1517 -#: flatcamEditors/FlatCAMGrbEditor.py:5510 +#: flatcamEditors/FlatCAMGrbEditor.py:5532 msgid "Offset on Y axis ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1527 -#: flatcamEditors/FlatCAMGrbEditor.py:5520 +#: flatcamEditors/FlatCAMGrbEditor.py:5542 msgid "[success] Geometry shape offset on Y axis done..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1531 -#: flatcamEditors/FlatCAMGrbEditor.py:5524 +#: flatcamEditors/FlatCAMGrbEditor.py:5546 msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1534 -#: flatcamEditors/FlatCAMGrbEditor.py:5527 +#: flatcamEditors/FlatCAMGrbEditor.py:5549 msgid "Skew on X axis ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1544 -#: flatcamEditors/FlatCAMGrbEditor.py:5537 +#: flatcamEditors/FlatCAMGrbEditor.py:5559 msgid "[success] Geometry shape skew on X axis done..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1548 -#: flatcamEditors/FlatCAMGrbEditor.py:5541 +#: flatcamEditors/FlatCAMGrbEditor.py:5563 msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1551 -#: flatcamEditors/FlatCAMGrbEditor.py:5544 +#: flatcamEditors/FlatCAMGrbEditor.py:5566 msgid "Skew on Y axis ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1561 -#: flatcamEditors/FlatCAMGrbEditor.py:5554 +#: flatcamEditors/FlatCAMGrbEditor.py:5576 msgid "[success] Geometry shape skew on Y axis done..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1565 -#: flatcamEditors/FlatCAMGrbEditor.py:5558 +#: flatcamEditors/FlatCAMGrbEditor.py:5580 msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1929 #: flatcamEditors/FlatCAMGeoEditor.py:1980 -#: flatcamEditors/FlatCAMGrbEditor.py:1354 -#: flatcamEditors/FlatCAMGrbEditor.py:1423 +#: flatcamEditors/FlatCAMGrbEditor.py:1361 +#: flatcamEditors/FlatCAMGrbEditor.py:1430 msgid "Click on Center point ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1936 -#: flatcamEditors/FlatCAMGrbEditor.py:1362 +#: flatcamEditors/FlatCAMGrbEditor.py:1369 msgid "Click on Perimeter point to complete ..." msgstr "" @@ -2531,53 +2556,53 @@ msgid "[success] Done. Adding Circle completed." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2000 -#: flatcamEditors/FlatCAMGrbEditor.py:1448 +#: flatcamEditors/FlatCAMGrbEditor.py:1462 msgid "Click on Start point ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2002 -#: flatcamEditors/FlatCAMGrbEditor.py:1450 +#: flatcamEditors/FlatCAMGrbEditor.py:1464 msgid "Click on Point3 ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2004 -#: flatcamEditors/FlatCAMGrbEditor.py:1452 +#: flatcamEditors/FlatCAMGrbEditor.py:1466 msgid "Click on Stop point ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2009 -#: flatcamEditors/FlatCAMGrbEditor.py:1457 +#: flatcamEditors/FlatCAMGrbEditor.py:1471 msgid "Click on Stop point to complete ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2011 -#: flatcamEditors/FlatCAMGrbEditor.py:1459 +#: flatcamEditors/FlatCAMGrbEditor.py:1473 msgid "Click on Point2 to complete ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2013 -#: flatcamEditors/FlatCAMGrbEditor.py:1461 +#: flatcamEditors/FlatCAMGrbEditor.py:1475 msgid "Click on Center point to complete ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2025 -#: flatcamEditors/FlatCAMGrbEditor.py:1473 +#: flatcamEditors/FlatCAMGrbEditor.py:1487 #, python-format msgid "Direction: %s" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2035 -#: flatcamEditors/FlatCAMGrbEditor.py:1483 +#: flatcamEditors/FlatCAMGrbEditor.py:1497 msgid "Mode: Start -> Stop -> Center. Click on Start point ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2038 -#: flatcamEditors/FlatCAMGrbEditor.py:1486 +#: flatcamEditors/FlatCAMGrbEditor.py:1500 msgid "Mode: Point1 -> Point3 -> Point2. Click on Point1 ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2041 -#: flatcamEditors/FlatCAMGrbEditor.py:1489 +#: flatcamEditors/FlatCAMGrbEditor.py:1503 msgid "Mode: Center -> Start -> Stop. Click on Center point ..." msgstr "" @@ -2661,7 +2686,7 @@ msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2711 -#: flatcamEditors/FlatCAMGrbEditor.py:4420 +#: flatcamEditors/FlatCAMGrbEditor.py:4442 msgid "[success] Done. Buffer Tool completed." msgstr "" @@ -2674,24 +2699,24 @@ msgid "[success] Done. Buffer Ext Tool completed." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2798 -#: flatcamEditors/FlatCAMGrbEditor.py:1969 +#: flatcamEditors/FlatCAMGrbEditor.py:1983 msgid "Select a shape to act as deletion area ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2800 #: flatcamEditors/FlatCAMGeoEditor.py:2819 #: flatcamEditors/FlatCAMGeoEditor.py:2825 -#: flatcamEditors/FlatCAMGrbEditor.py:1971 +#: flatcamEditors/FlatCAMGrbEditor.py:1985 msgid "Click to pick-up the erase shape..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2829 -#: flatcamEditors/FlatCAMGrbEditor.py:2028 +#: flatcamEditors/FlatCAMGrbEditor.py:2042 msgid "Click to erase ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2858 -#: flatcamEditors/FlatCAMGrbEditor.py:2059 +#: flatcamEditors/FlatCAMGrbEditor.py:2075 msgid "[success] Done. Eraser tool action completed." msgstr "" @@ -2700,91 +2725,92 @@ msgid "Create Paint geometry ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2915 -#: flatcamEditors/FlatCAMGrbEditor.py:2201 +#: flatcamEditors/FlatCAMGrbEditor.py:2217 msgid "Shape transformations ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:3419 +#: flatcamEditors/FlatCAMGeoEditor.py:3416 #, python-brace-format -msgid "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" +msgid "" +"[WARNING_NOTCL] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:3796 +#: flatcamEditors/FlatCAMGeoEditor.py:3793 msgid "[WARNING_NOTCL] Copy cancelled. No shape selected." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:3803 flatcamGUI/FlatCAMGUI.py:2732 -#: flatcamGUI/FlatCAMGUI.py:2778 flatcamGUI/FlatCAMGUI.py:2796 -#: flatcamGUI/FlatCAMGUI.py:2927 flatcamGUI/FlatCAMGUI.py:2939 -#: flatcamGUI/FlatCAMGUI.py:2973 +#: flatcamEditors/FlatCAMGeoEditor.py:3800 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:4047 -#: flatcamEditors/FlatCAMGeoEditor.py:4082 +#: flatcamEditors/FlatCAMGeoEditor.py:4044 +#: flatcamEditors/FlatCAMGeoEditor.py:4079 msgid "" "[WARNING_NOTCL] A selection of at least 2 geo items is required to do " "Intersection." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4166 -#: flatcamEditors/FlatCAMGeoEditor.py:4204 -#: flatcamEditors/FlatCAMGeoEditor.py:4280 +#: flatcamEditors/FlatCAMGeoEditor.py:4163 +#: flatcamEditors/FlatCAMGeoEditor.py:4201 +#: flatcamEditors/FlatCAMGeoEditor.py:4277 msgid "" "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to " "generate an 'inside' shape" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4175 -#: flatcamEditors/FlatCAMGeoEditor.py:4213 -#: flatcamEditors/FlatCAMGeoEditor.py:4288 +#: flatcamEditors/FlatCAMGeoEditor.py:4172 +#: flatcamEditors/FlatCAMGeoEditor.py:4210 +#: flatcamEditors/FlatCAMGeoEditor.py:4285 msgid "[WARNING_NOTCL] Nothing selected for buffering." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4179 -#: flatcamEditors/FlatCAMGeoEditor.py:4217 -#: flatcamEditors/FlatCAMGeoEditor.py:4292 +#: flatcamEditors/FlatCAMGeoEditor.py:4176 +#: flatcamEditors/FlatCAMGeoEditor.py:4214 +#: flatcamEditors/FlatCAMGeoEditor.py:4289 msgid "[WARNING_NOTCL] Invalid distance for buffering." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4189 -#: flatcamEditors/FlatCAMGeoEditor.py:4301 +#: flatcamEditors/FlatCAMGeoEditor.py:4186 +#: flatcamEditors/FlatCAMGeoEditor.py:4298 msgid "" "[ERROR_NOTCL] Failed, the result is empty. Choose a different buffer value." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4197 +#: flatcamEditors/FlatCAMGeoEditor.py:4194 msgid "[success] Full buffer geometry created." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4227 +#: flatcamEditors/FlatCAMGeoEditor.py:4224 msgid "" "[ERROR_NOTCL] Failed, the result is empty. Choose a smaller buffer value." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4242 +#: flatcamEditors/FlatCAMGeoEditor.py:4239 msgid "[success] Interior buffer geometry created." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4313 +#: flatcamEditors/FlatCAMGeoEditor.py:4310 msgid "[success] Exterior buffer geometry created." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4377 +#: flatcamEditors/FlatCAMGeoEditor.py:4374 msgid "[WARNING_NOTCL] Nothing selected for painting." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4383 +#: flatcamEditors/FlatCAMGeoEditor.py:4380 msgid "[WARNING] Invalid value for {}" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4389 +#: flatcamEditors/FlatCAMGeoEditor.py:4386 msgid "" "[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 " "(100%)." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4448 +#: flatcamEditors/FlatCAMGeoEditor.py:4445 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -2792,7 +2818,7 @@ msgid "" "%s" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4459 +#: flatcamEditors/FlatCAMGeoEditor.py:4456 msgid "[success] Paint done." msgstr "" @@ -2806,11 +2832,6 @@ msgid "" "[WARNING_NOTCL] Aperture size is zero. It needs to be greater than zero." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:229 -#: flatcamEditors/FlatCAMGrbEditor.py:234 -msgid "Click to place ..." -msgstr "" - #: flatcamEditors/FlatCAMGrbEditor.py:357 #: flatcamEditors/FlatCAMGrbEditor.py:662 msgid "" @@ -2830,6 +2851,10 @@ msgstr "" msgid "Click on the Pad Circular Array Start position" msgstr "" +#: flatcamEditors/FlatCAMGrbEditor.py:497 +msgid "[ERROR_NOTCL] The value is mistyped. Check the value." +msgstr "" + #: flatcamEditors/FlatCAMGrbEditor.py:687 msgid "[WARNING_NOTCL] Too many Pads for the selected spacing angle." msgstr "" @@ -2917,93 +2942,93 @@ msgstr "" msgid "Track Mode 5: Free angle ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1669 +#: flatcamEditors/FlatCAMGrbEditor.py:1683 msgid "Scale the selected Gerber apertures ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1711 +#: flatcamEditors/FlatCAMGrbEditor.py:1725 msgid "Buffer the selected apertures ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1755 +#: flatcamEditors/FlatCAMGrbEditor.py:1769 msgid "[WARNING_NOTCL] Nothing selected to move ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1878 +#: flatcamEditors/FlatCAMGrbEditor.py:1892 msgid "[success] Done. Apertures Move completed." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1954 +#: flatcamEditors/FlatCAMGrbEditor.py:1968 msgid "[success] Done. Apertures copied." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2243 flatcamGUI/FlatCAMGUI.py:1607 -#: flatcamGUI/FlatCAMGUI.py:4329 +#: flatcamEditors/FlatCAMGrbEditor.py:2259 flatcamGUI/FlatCAMGUI.py:1604 +#: flatcamGUI/FlatCAMGUI.py:4323 msgid "Gerber Editor" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2262 flatcamGUI/ObjectUI.py:192 +#: flatcamEditors/FlatCAMGrbEditor.py:2278 flatcamGUI/ObjectUI.py:192 msgid "Apertures:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2264 flatcamGUI/ObjectUI.py:194 +#: flatcamEditors/FlatCAMGrbEditor.py:2280 flatcamGUI/ObjectUI.py:194 msgid "Apertures Table for the Gerber Object." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 msgid "Code" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465 msgid "Type" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 msgid "Size" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2275 -#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2291 +#: flatcamEditors/FlatCAMGrbEditor.py:3602 flatcamGUI/ObjectUI.py:228 msgid "Dim" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2279 flatcamGUI/ObjectUI.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:2295 flatcamGUI/ObjectUI.py:232 msgid "Index" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2281 flatcamGUI/ObjectUI.py:234 +#: flatcamEditors/FlatCAMGrbEditor.py:2297 flatcamGUI/ObjectUI.py:234 msgid "Aperture Code" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2283 flatcamGUI/ObjectUI.py:236 +#: flatcamEditors/FlatCAMGrbEditor.py:2299 flatcamGUI/ObjectUI.py:236 msgid "Type of aperture: circular, rectangle, macros etc" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2285 -#: flatcamEditors/FlatCAMGrbEditor.py:2318 flatcamGUI/ObjectUI.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:2301 +#: flatcamEditors/FlatCAMGrbEditor.py:2334 flatcamGUI/ObjectUI.py:238 msgid "Aperture Size:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2287 flatcamGUI/ObjectUI.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:2303 flatcamGUI/ObjectUI.py:240 msgid "" "Aperture Dimensions:\n" " - (width, height) for R, O type.\n" " - (dia, nVertices) for P type" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2308 +#: flatcamEditors/FlatCAMGrbEditor.py:2324 msgid "Aperture Code:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2310 +#: flatcamEditors/FlatCAMGrbEditor.py:2326 msgid "Code for the new aperture" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2320 +#: flatcamEditors/FlatCAMGrbEditor.py:2336 msgid "" "Size for the new aperture.\n" "If aperture type is 'R' or 'O' then\n" @@ -3012,11 +3037,11 @@ msgid "" "sqrt(width**2 + height**2)" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2332 +#: flatcamEditors/FlatCAMGrbEditor.py:2348 msgid "Aperture Type:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2334 +#: flatcamEditors/FlatCAMGrbEditor.py:2350 msgid "" "Select the type of new aperture. Can be:\n" "C = circular\n" @@ -3024,42 +3049,42 @@ msgid "" "O = oblong" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2345 +#: flatcamEditors/FlatCAMGrbEditor.py:2361 msgid "Aperture Dim:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2347 +#: flatcamEditors/FlatCAMGrbEditor.py:2363 msgid "" "Dimensions for the new aperture.\n" "Active only for rectangular apertures (type R).\n" "The format is (width, height)" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2356 +#: flatcamEditors/FlatCAMGrbEditor.py:2372 msgid "Add/Delete Aperture:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2358 +#: flatcamEditors/FlatCAMGrbEditor.py:2374 msgid "Add/Delete an aperture in the aperture table" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2367 +#: flatcamEditors/FlatCAMGrbEditor.py:2383 msgid "Add a new aperture to the aperture list." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2372 +#: flatcamEditors/FlatCAMGrbEditor.py:2388 msgid "Delete a aperture in the aperture list" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2388 +#: flatcamEditors/FlatCAMGrbEditor.py:2404 msgid "Buffer Aperture:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2390 +#: flatcamEditors/FlatCAMGrbEditor.py:2406 msgid "Buffer a aperture in the aperture list" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2403 +#: flatcamEditors/FlatCAMGrbEditor.py:2419 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded.\n" @@ -3068,148 +3093,148 @@ msgid "" "meeting in the corner" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2418 flatcamGUI/FlatCAMGUI.py:722 -#: flatcamGUI/FlatCAMGUI.py:1948 +#: flatcamEditors/FlatCAMGrbEditor.py:2434 flatcamGUI/FlatCAMGUI.py:717 +#: flatcamGUI/FlatCAMGUI.py:1946 msgid "Buffer" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2432 +#: flatcamEditors/FlatCAMGrbEditor.py:2448 msgid "Scale Aperture:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2434 +#: flatcamEditors/FlatCAMGrbEditor.py:2450 msgid "Scale a aperture in the aperture list" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2442 +#: flatcamEditors/FlatCAMGrbEditor.py:2458 msgid "Scale factor:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2444 +#: flatcamEditors/FlatCAMGrbEditor.py:2460 msgid "" "The factor by which to scale the selected aperture.\n" "Values can be between 0.0000 and 999.9999" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2472 flatcamGUI/FlatCAMGUI.py:712 -#: flatcamGUI/FlatCAMGUI.py:1938 +#: flatcamEditors/FlatCAMGrbEditor.py:2488 flatcamGUI/FlatCAMGUI.py:707 +#: flatcamGUI/FlatCAMGUI.py:1936 msgid "Add Pad Array" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2474 +#: flatcamEditors/FlatCAMGrbEditor.py:2490 msgid "Add an array of pads (linear or circular array)" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2480 +#: flatcamEditors/FlatCAMGrbEditor.py:2496 msgid "" "Select the type of pads array to create.\n" "It can be Linear X(Y) or Circular" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2491 +#: flatcamEditors/FlatCAMGrbEditor.py:2507 msgid "Nr of pads:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2493 +#: flatcamEditors/FlatCAMGrbEditor.py:2509 msgid "Specify how many pads to be in the array." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2970 -#: flatcamEditors/FlatCAMGrbEditor.py:2974 +#: flatcamEditors/FlatCAMGrbEditor.py:2986 +#: flatcamEditors/FlatCAMGrbEditor.py:2990 msgid "" "[WARNING_NOTCL] Aperture code value is missing or wrong format. Add it and " "retry." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3010 +#: flatcamEditors/FlatCAMGrbEditor.py:3026 msgid "" "[WARNING_NOTCL] Aperture dimensions value is missing or wrong format. Add it " "in format (width, height) and retry." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3022 +#: flatcamEditors/FlatCAMGrbEditor.py:3038 msgid "" "[WARNING_NOTCL] Aperture size value is missing or wrong format. Add it and " "retry." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3033 +#: flatcamEditors/FlatCAMGrbEditor.py:3049 msgid "[WARNING_NOTCL] Aperture already in the aperture table." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3040 +#: flatcamEditors/FlatCAMGrbEditor.py:3056 #, python-brace-format msgid "[success] Added new aperture with code: {apid}" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3068 +#: flatcamEditors/FlatCAMGrbEditor.py:3084 msgid "[WARNING_NOTCL] Select an aperture in Aperture Table" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3074 +#: flatcamEditors/FlatCAMGrbEditor.py:3090 #, python-format msgid "[WARNING_NOTCL] Select an aperture in Aperture Table --> %s" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3097 +#: flatcamEditors/FlatCAMGrbEditor.py:3113 #, python-brace-format msgid "[success] Deleted aperture with code: {del_dia}" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3517 +#: flatcamEditors/FlatCAMGrbEditor.py:3533 #, python-format msgid "Adding aperture: %s geo ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3696 +#: flatcamEditors/FlatCAMGrbEditor.py:3718 msgid "" "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber " "creation." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3699 +#: flatcamEditors/FlatCAMGrbEditor.py:3721 msgid "[ERROR] An internal error has occurred. See shell.\n" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3704 +#: flatcamEditors/FlatCAMGrbEditor.py:3726 msgid "Creating Gerber." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3712 +#: flatcamEditors/FlatCAMGrbEditor.py:3734 msgid "[success] Gerber editing finished." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3728 +#: flatcamEditors/FlatCAMGrbEditor.py:3750 msgid "[WARNING_NOTCL] Cancelled. No aperture is selected" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:4248 +#: flatcamEditors/FlatCAMGrbEditor.py:4270 msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:4256 +#: flatcamEditors/FlatCAMGrbEditor.py:4278 msgid "[success] Done. Apertures geometry deleted." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:4405 +#: flatcamEditors/FlatCAMGrbEditor.py:4427 msgid "" "[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try " "again." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:4434 +#: flatcamEditors/FlatCAMGrbEditor.py:4456 msgid "" "[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and " "retry." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:4464 +#: flatcamEditors/FlatCAMGrbEditor.py:4486 msgid "" "[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try " "again." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:4480 +#: flatcamEditors/FlatCAMGrbEditor.py:4502 msgid "[success] Done. Scale Tool completed." msgstr "" @@ -3374,47 +3399,47 @@ msgstr "" msgid "Save &Defaults" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:205 flatcamGUI/FlatCAMGUI.py:533 +#: flatcamGUI/FlatCAMGUI.py:205 flatcamGUI/FlatCAMGUI.py:528 msgid "Save" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:207 +#: flatcamGUI/FlatCAMGUI.py:208 msgid "&Save Project ..." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:212 +#: flatcamGUI/FlatCAMGUI.py:213 msgid "Save Project &As ...\tCTRL+S" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:216 +#: flatcamGUI/FlatCAMGUI.py:217 msgid "Save Project C&opy ..." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:224 +#: flatcamGUI/FlatCAMGUI.py:225 msgid "E&xit" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:230 +#: flatcamGUI/FlatCAMGUI.py:231 msgid "&Edit" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:233 +#: flatcamGUI/FlatCAMGUI.py:234 msgid "Edit Object\tE" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:234 +#: flatcamGUI/FlatCAMGUI.py:235 msgid "Close Editor\tCTRL+S" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:242 +#: flatcamGUI/FlatCAMGUI.py:243 msgid "Conversion" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:244 +#: flatcamGUI/FlatCAMGUI.py:245 msgid "&Join Geo/Gerber/Exc -> Geo" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:246 +#: flatcamGUI/FlatCAMGUI.py:247 msgid "" "Merge a selection of objects, which can be of type:\n" "- Gerber\n" @@ -3423,159 +3448,159 @@ msgid "" "into a new combo Geometry object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:254 msgid "Join Excellon(s) -> Excellon" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:255 +#: flatcamGUI/FlatCAMGUI.py:256 msgid "Merge a selection of Excellon objects into a new combo Excellon object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:258 +#: flatcamGUI/FlatCAMGUI.py:259 msgid "Join Gerber(s) -> Gerber" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:260 +#: flatcamGUI/FlatCAMGUI.py:261 msgid "Merge a selection of Gerber objects into a new combo Gerber object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:265 +#: flatcamGUI/FlatCAMGUI.py:266 msgid "Convert Single to MultiGeo" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:267 +#: flatcamGUI/FlatCAMGUI.py:268 msgid "" "Will convert a Geometry object from single_geometry type\n" "to a multi_geometry type." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:271 +#: flatcamGUI/FlatCAMGUI.py:272 msgid "Convert Multi to SingleGeo" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:273 +#: flatcamGUI/FlatCAMGUI.py:274 msgid "" "Will convert a Geometry object from multi_geometry type\n" "to a single_geometry type." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:279 +#: flatcamGUI/FlatCAMGUI.py:280 msgid "Convert Any to Geo" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:281 +#: flatcamGUI/FlatCAMGUI.py:282 msgid "Convert Any to Gerber" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:286 +#: flatcamGUI/FlatCAMGUI.py:287 msgid "&Copy\tCTRL+C" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:290 +#: flatcamGUI/FlatCAMGUI.py:291 msgid "&Delete\tDEL" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:294 +#: flatcamGUI/FlatCAMGUI.py:295 msgid "Se&t Origin\tO" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:296 msgid "Jump to Location\tJ" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:300 +#: flatcamGUI/FlatCAMGUI.py:301 msgid "Toggle Units\tQ" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:302 +#: flatcamGUI/FlatCAMGUI.py:303 msgid "&Select All\tCTRL+A" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:306 +#: flatcamGUI/FlatCAMGUI.py:307 msgid "&Preferences\tSHIFT+P" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:310 msgid "&Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:324 +#: flatcamGUI/FlatCAMGUI.py:325 msgid "&Rotate Selection\tSHIFT+(R)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:329 +#: flatcamGUI/FlatCAMGUI.py:330 msgid "&Skew on X axis\tSHIFT+X" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:331 +#: flatcamGUI/FlatCAMGUI.py:332 msgid "S&kew on Y axis\tSHIFT+Y" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:336 +#: flatcamGUI/FlatCAMGUI.py:337 msgid "Flip on &X axis\tX" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:338 +#: flatcamGUI/FlatCAMGUI.py:339 msgid "Flip on &Y axis\tY" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:343 +#: flatcamGUI/FlatCAMGUI.py:344 msgid "View source\tALT+S" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:348 +#: flatcamGUI/FlatCAMGUI.py:349 msgid "&View" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:349 +#: flatcamGUI/FlatCAMGUI.py:350 msgid "Enable all plots\tALT+1" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:351 +#: flatcamGUI/FlatCAMGUI.py:352 msgid "Disable all plots\tALT+2" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:353 +#: flatcamGUI/FlatCAMGUI.py:354 msgid "Disable non-selected\tALT+3" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:356 +#: flatcamGUI/FlatCAMGUI.py:357 msgid "&Zoom Fit\tV" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:357 +#: flatcamGUI/FlatCAMGUI.py:358 msgid "&Zoom In\t-" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:358 +#: flatcamGUI/FlatCAMGUI.py:359 msgid "&Zoom Out\t=" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:362 +#: flatcamGUI/FlatCAMGUI.py:363 msgid "Toggle Code Editor\tCTRL+E" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:365 +#: flatcamGUI/FlatCAMGUI.py:366 msgid "&Toggle FullScreen\tALT+F10" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:367 +#: flatcamGUI/FlatCAMGUI.py:368 msgid "&Toggle Plot Area\tCTRL+F10" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:369 +#: flatcamGUI/FlatCAMGUI.py:370 msgid "&Toggle Project/Sel/Tool\t`" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:372 +#: flatcamGUI/FlatCAMGUI.py:373 msgid "&Toggle Grid Snap\tG" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:374 +#: flatcamGUI/FlatCAMGUI.py:375 msgid "&Toggle Axis\tSHIFT+G" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:377 +#: flatcamGUI/FlatCAMGUI.py:378 msgid "Toggle Workspace\tSHIFT+W" msgstr "" @@ -3611,505 +3636,505 @@ msgstr "" msgid "About" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:405 +#: flatcamGUI/FlatCAMGUI.py:401 msgid "Add Circle\tO" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:407 +#: flatcamGUI/FlatCAMGUI.py:403 msgid "Add Arc\tA" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:410 +#: flatcamGUI/FlatCAMGUI.py:406 msgid "Add Rectangle\tR" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:413 +#: flatcamGUI/FlatCAMGUI.py:409 msgid "Add Polygon\tN" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:415 +#: flatcamGUI/FlatCAMGUI.py:411 msgid "Add Path\tP" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:417 +#: flatcamGUI/FlatCAMGUI.py:413 msgid "Add Text\tT" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:420 +#: flatcamGUI/FlatCAMGUI.py:416 msgid "Polygon Union\tU" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:422 +#: flatcamGUI/FlatCAMGUI.py:418 msgid "Polygon Intersection\tE" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:424 +#: flatcamGUI/FlatCAMGUI.py:420 msgid "Polygon Subtraction\tS" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:428 +#: flatcamGUI/FlatCAMGUI.py:424 msgid "Cut Path\tX" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:430 +#: flatcamGUI/FlatCAMGUI.py:426 msgid "Copy Geom\tC" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:428 msgid "Delete Shape\tDEL" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:435 flatcamGUI/FlatCAMGUI.py:508 +#: flatcamGUI/FlatCAMGUI.py:431 flatcamGUI/FlatCAMGUI.py:503 msgid "Move\tM" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:437 +#: flatcamGUI/FlatCAMGUI.py:433 msgid "Buffer Tool\tB" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:440 +#: flatcamGUI/FlatCAMGUI.py:436 msgid "Paint Tool\tI" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:443 +#: flatcamGUI/FlatCAMGUI.py:439 msgid "Transform Tool\tALT+R" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:447 +#: flatcamGUI/FlatCAMGUI.py:443 msgid "Toggle Corner Snap\tK" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:450 +#: flatcamGUI/FlatCAMGUI.py:446 msgid ">Excellon Editor<" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:450 msgid "Add Drill Array\tA" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:456 +#: flatcamGUI/FlatCAMGUI.py:452 msgid "Add Drill\tD" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:460 +#: flatcamGUI/FlatCAMGUI.py:456 msgid "Resize Drill(S)\tR" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:462 flatcamGUI/FlatCAMGUI.py:501 +#: flatcamGUI/FlatCAMGUI.py:458 flatcamGUI/FlatCAMGUI.py:496 msgid "Copy\tC" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:464 flatcamGUI/FlatCAMGUI.py:503 +#: flatcamGUI/FlatCAMGUI.py:460 flatcamGUI/FlatCAMGUI.py:498 msgid "Delete\tDEL" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:469 +#: flatcamGUI/FlatCAMGUI.py:465 msgid "Move Drill(s)\tM" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:473 +#: flatcamGUI/FlatCAMGUI.py:468 msgid ">Gerber Editor<" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:477 +#: flatcamGUI/FlatCAMGUI.py:472 msgid "Add Pad\tP" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:479 +#: flatcamGUI/FlatCAMGUI.py:474 msgid "Add Pad Array\tA" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:481 +#: flatcamGUI/FlatCAMGUI.py:476 msgid "Add Track\tT" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:483 +#: flatcamGUI/FlatCAMGUI.py:478 msgid "Add Region\tN" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:487 +#: flatcamGUI/FlatCAMGUI.py:482 msgid "Poligonize\tALT+N" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:489 +#: flatcamGUI/FlatCAMGUI.py:484 msgid "Add SemiDisc\tE" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:491 +#: flatcamGUI/FlatCAMGUI.py:486 msgid "Add Disc\tD" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:493 +#: flatcamGUI/FlatCAMGUI.py:488 msgid "Buffer\tB" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:495 +#: flatcamGUI/FlatCAMGUI.py:490 msgid "Scale\tS" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:497 +#: flatcamGUI/FlatCAMGUI.py:492 msgid "Transform\tALT+R" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:524 +#: flatcamGUI/FlatCAMGUI.py:519 msgid "Enable Plot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:525 +#: flatcamGUI/FlatCAMGUI.py:520 flatcamGUI/FlatCAMGUI.py:1577 msgid "Disable Plot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:527 +#: flatcamGUI/FlatCAMGUI.py:522 msgid "Generate CNC" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:528 +#: flatcamGUI/FlatCAMGUI.py:523 msgid "View Source" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1620 +#: flatcamGUI/FlatCAMGUI.py:525 flatcamGUI/FlatCAMGUI.py:1617 msgid "Edit" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1626 +#: flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:1623 #: flatcamTools/ToolProperties.py:25 msgid "Properties" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:565 +#: flatcamGUI/FlatCAMGUI.py:560 msgid "File Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:569 +#: flatcamGUI/FlatCAMGUI.py:564 msgid "Edit Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:573 +#: flatcamGUI/FlatCAMGUI.py:568 msgid "View Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:577 +#: flatcamGUI/FlatCAMGUI.py:572 msgid "Shell Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:581 +#: flatcamGUI/FlatCAMGUI.py:576 msgid "Tools Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:585 +#: flatcamGUI/FlatCAMGUI.py:580 msgid "Excellon Editor Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:589 +#: flatcamGUI/FlatCAMGUI.py:584 msgid "Geometry Editor Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:593 +#: flatcamGUI/FlatCAMGUI.py:588 msgid "Gerber Editor Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:592 msgid "Grid Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1837 +#: flatcamGUI/FlatCAMGUI.py:611 flatcamGUI/FlatCAMGUI.py:1835 msgid "Open project" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1838 +#: flatcamGUI/FlatCAMGUI.py:612 flatcamGUI/FlatCAMGUI.py:1836 msgid "Save project" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1841 +#: flatcamGUI/FlatCAMGUI.py:615 flatcamGUI/FlatCAMGUI.py:1839 msgid "New Blank Geometry" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:621 +#: flatcamGUI/FlatCAMGUI.py:616 msgid "New Blank Gerber" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1842 +#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1840 msgid "New Blank Excellon" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1844 +#: flatcamGUI/FlatCAMGUI.py:619 flatcamGUI/FlatCAMGUI.py:1842 msgid "Editor" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1846 +#: flatcamGUI/FlatCAMGUI.py:621 flatcamGUI/FlatCAMGUI.py:1844 msgid "Save Object and close the Editor" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1850 +#: flatcamGUI/FlatCAMGUI.py:625 flatcamGUI/FlatCAMGUI.py:1848 msgid "&Delete" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1853 +#: flatcamGUI/FlatCAMGUI.py:628 flatcamGUI/FlatCAMGUI.py:1851 msgid "&Replot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1854 +#: flatcamGUI/FlatCAMGUI.py:629 flatcamGUI/FlatCAMGUI.py:1852 msgid "&Clear plot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1855 +#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1853 msgid "Zoom In" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1856 +#: flatcamGUI/FlatCAMGUI.py:631 flatcamGUI/FlatCAMGUI.py:1854 msgid "Zoom Out" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1595 -#: flatcamGUI/FlatCAMGUI.py:1857 +#: flatcamGUI/FlatCAMGUI.py:632 flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1855 msgid "Zoom Fit" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1862 +#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1860 msgid "&Command Line" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1865 +#: flatcamGUI/FlatCAMGUI.py:640 flatcamGUI/FlatCAMGUI.py:1863 msgid "2Sided Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1866 +#: flatcamGUI/FlatCAMGUI.py:641 flatcamGUI/FlatCAMGUI.py:1864 msgid "&Cutout Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1867 +#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1865 #: flatcamGUI/ObjectUI.py:392 flatcamTools/ToolNonCopperClear.py:285 msgid "NCC Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1871 +#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1869 msgid "Panel Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1872 +#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1870 #: flatcamTools/ToolFilm.py:204 msgid "Film Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1874 +#: flatcamGUI/FlatCAMGUI.py:648 flatcamGUI/FlatCAMGUI.py:1872 msgid "SolderPaste Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1875 +#: flatcamGUI/FlatCAMGUI.py:649 flatcamGUI/FlatCAMGUI.py:1873 #: flatcamTools/ToolSub.py:26 msgid "Substract Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1880 +#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1878 msgid "Calculators Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:662 flatcamGUI/FlatCAMGUI.py:676 -#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1884 -#: flatcamGUI/FlatCAMGUI.py:1936 +#: flatcamGUI/FlatCAMGUI.py:657 flatcamGUI/FlatCAMGUI.py:671 +#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:1882 +#: flatcamGUI/FlatCAMGUI.py:1934 msgid "Select" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1885 +#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1883 msgid "Add Drill Hole" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1887 +#: flatcamGUI/FlatCAMGUI.py:660 flatcamGUI/FlatCAMGUI.py:1885 msgid "Add Drill Hole Array" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1888 +#: flatcamGUI/FlatCAMGUI.py:661 flatcamGUI/FlatCAMGUI.py:1886 msgid "Resize Drill" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1891 +#: flatcamGUI/FlatCAMGUI.py:664 flatcamGUI/FlatCAMGUI.py:1889 msgid "Copy Drill" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1893 +#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1891 msgid "Delete Drill" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1896 +#: flatcamGUI/FlatCAMGUI.py:668 flatcamGUI/FlatCAMGUI.py:1894 msgid "Move Drill" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1900 +#: flatcamGUI/FlatCAMGUI.py:672 flatcamGUI/FlatCAMGUI.py:1898 msgid "Add Circle" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1901 +#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1899 msgid "Add Arc" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1903 +#: flatcamGUI/FlatCAMGUI.py:675 flatcamGUI/FlatCAMGUI.py:1901 msgid "Add Rectangle" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1906 +#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1904 msgid "Add Path" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1908 +#: flatcamGUI/FlatCAMGUI.py:679 flatcamGUI/FlatCAMGUI.py:1906 msgid "Add Polygon" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1910 +#: flatcamGUI/FlatCAMGUI.py:681 flatcamGUI/FlatCAMGUI.py:1908 msgid "Add Text" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1912 +#: flatcamGUI/FlatCAMGUI.py:682 flatcamGUI/FlatCAMGUI.py:1910 msgid "Add Buffer" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1913 +#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1911 msgid "Paint Shape" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:689 flatcamGUI/FlatCAMGUI.py:724 -#: flatcamGUI/FlatCAMGUI.py:1914 flatcamGUI/FlatCAMGUI.py:1950 +#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:719 +#: flatcamGUI/FlatCAMGUI.py:1912 flatcamGUI/FlatCAMGUI.py:1948 msgid "Eraser" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:692 flatcamGUI/FlatCAMGUI.py:1918 +#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1916 msgid "Polygon Union" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:694 flatcamGUI/FlatCAMGUI.py:1920 +#: flatcamGUI/FlatCAMGUI.py:689 flatcamGUI/FlatCAMGUI.py:1918 msgid "Polygon Intersection" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:696 flatcamGUI/FlatCAMGUI.py:1922 +#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:1920 msgid "Polygon Subtraction" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:699 flatcamGUI/FlatCAMGUI.py:1925 +#: flatcamGUI/FlatCAMGUI.py:694 flatcamGUI/FlatCAMGUI.py:1923 msgid "Cut Path" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:700 +#: flatcamGUI/FlatCAMGUI.py:695 msgid "Copy Shape(s)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:703 +#: flatcamGUI/FlatCAMGUI.py:698 msgid "Delete Shape '-'" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:731 -#: flatcamGUI/FlatCAMGUI.py:1930 flatcamGUI/FlatCAMGUI.py:1957 +#: flatcamGUI/FlatCAMGUI.py:700 flatcamGUI/FlatCAMGUI.py:726 +#: flatcamGUI/FlatCAMGUI.py:1928 flatcamGUI/FlatCAMGUI.py:1955 msgid "Transformations" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:707 +#: flatcamGUI/FlatCAMGUI.py:702 msgid "Move Objects " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:711 flatcamGUI/FlatCAMGUI.py:1937 +#: flatcamGUI/FlatCAMGUI.py:706 flatcamGUI/FlatCAMGUI.py:1935 msgid "Add Pad" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1939 +#: flatcamGUI/FlatCAMGUI.py:708 flatcamGUI/FlatCAMGUI.py:1937 msgid "Add Track" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:714 flatcamGUI/FlatCAMGUI.py:1940 +#: flatcamGUI/FlatCAMGUI.py:709 flatcamGUI/FlatCAMGUI.py:1938 msgid "Add Region" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:716 flatcamGUI/FlatCAMGUI.py:1942 +#: flatcamGUI/FlatCAMGUI.py:711 flatcamGUI/FlatCAMGUI.py:1940 msgid "Poligonize" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1944 +#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1942 msgid "SemiDisc" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:719 flatcamGUI/FlatCAMGUI.py:1945 +#: flatcamGUI/FlatCAMGUI.py:714 flatcamGUI/FlatCAMGUI.py:1943 msgid "Disc" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:733 flatcamGUI/FlatCAMGUI.py:1605 -#: flatcamGUI/FlatCAMGUI.py:1625 flatcamGUI/FlatCAMGUI.py:1959 +#: flatcamGUI/FlatCAMGUI.py:728 flatcamGUI/FlatCAMGUI.py:1602 +#: flatcamGUI/FlatCAMGUI.py:1622 flatcamGUI/FlatCAMGUI.py:1957 #: flatcamTools/ToolMove.py:26 msgid "Move" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1965 +#: flatcamGUI/FlatCAMGUI.py:734 flatcamGUI/FlatCAMGUI.py:1963 msgid "Snap to grid" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:742 flatcamGUI/FlatCAMGUI.py:1968 +#: flatcamGUI/FlatCAMGUI.py:737 flatcamGUI/FlatCAMGUI.py:1966 msgid "Grid X snapping distance" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:747 flatcamGUI/FlatCAMGUI.py:1973 +#: flatcamGUI/FlatCAMGUI.py:742 flatcamGUI/FlatCAMGUI.py:1971 msgid "Grid Y snapping distance" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:753 flatcamGUI/FlatCAMGUI.py:1979 +#: flatcamGUI/FlatCAMGUI.py:748 flatcamGUI/FlatCAMGUI.py:1977 msgid "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:759 flatcamGUI/FlatCAMGUI.py:1985 +#: flatcamGUI/FlatCAMGUI.py:754 flatcamGUI/FlatCAMGUI.py:1983 msgid "Snap to corner" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:763 flatcamGUI/FlatCAMGUI.py:1989 -#: flatcamGUI/FlatCAMGUI.py:3346 +#: flatcamGUI/FlatCAMGUI.py:758 flatcamGUI/FlatCAMGUI.py:1987 +#: flatcamGUI/FlatCAMGUI.py:3344 msgid "Max. magnet distance" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:791 flatcamGUI/FlatCAMGUI.py:1589 +#: flatcamGUI/FlatCAMGUI.py:786 flatcamGUI/FlatCAMGUI.py:1586 msgid "Project" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:801 +#: flatcamGUI/FlatCAMGUI.py:796 msgid "Selected" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:820 flatcamGUI/FlatCAMGUI.py:828 +#: flatcamGUI/FlatCAMGUI.py:815 flatcamGUI/FlatCAMGUI.py:823 msgid "Plot Area" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:852 +#: flatcamGUI/FlatCAMGUI.py:847 msgid "General" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:861 +#: flatcamGUI/FlatCAMGUI.py:856 msgid "APP. DEFAULTS" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:862 +#: flatcamGUI/FlatCAMGUI.py:857 msgid "PROJ. OPTIONS " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:873 +#: flatcamGUI/FlatCAMGUI.py:868 msgid "GERBER" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:882 +#: flatcamGUI/FlatCAMGUI.py:877 msgid "EXCELLON" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:891 +#: flatcamGUI/FlatCAMGUI.py:886 msgid "GEOMETRY" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:901 +#: flatcamGUI/FlatCAMGUI.py:896 msgid "CNC-JOB" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:910 +#: flatcamGUI/FlatCAMGUI.py:905 msgid "TOOLS" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:927 +#: flatcamGUI/FlatCAMGUI.py:922 msgid "Import Preferences" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:930 +#: flatcamGUI/FlatCAMGUI.py:925 msgid "" "Import a full set of FlatCAM settings from a file\n" "previously saved on HDD.\n" @@ -4118,35 +4143,35 @@ msgid "" "on the first start. Do not delete that file." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:937 +#: flatcamGUI/FlatCAMGUI.py:932 msgid "Export Preferences" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:940 +#: flatcamGUI/FlatCAMGUI.py:935 msgid "" "Export a full set of FlatCAM settings in a file\n" "that is saved on HDD." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:945 +#: flatcamGUI/FlatCAMGUI.py:940 msgid "Open Pref Folder" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:948 +#: flatcamGUI/FlatCAMGUI.py:943 msgid "Open the folder where FlatCAM save the preferences files." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:956 +#: flatcamGUI/FlatCAMGUI.py:951 msgid "Save Preferences" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:959 +#: flatcamGUI/FlatCAMGUI.py:954 msgid "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:985 +#: flatcamGUI/FlatCAMGUI.py:980 msgid "" "General Shortcut list
\n" " Editor Shortcut list
\n" "
\n" @@ -4746,141 +4771,141 @@ msgid "" " " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1582 -msgid "Disable" +#: flatcamGUI/FlatCAMGUI.py:1578 +msgid "Toggle Panel" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1584 +#: flatcamGUI/FlatCAMGUI.py:1581 msgid "New" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1585 +#: flatcamGUI/FlatCAMGUI.py:1582 msgid "Geometry" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1587 +#: flatcamGUI/FlatCAMGUI.py:1584 msgid "Excellon" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1589 msgid "Grids" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1594 +#: flatcamGUI/FlatCAMGUI.py:1591 msgid "View" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1596 +#: flatcamGUI/FlatCAMGUI.py:1593 msgid "Clear Plot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1597 +#: flatcamGUI/FlatCAMGUI.py:1594 msgid "Replot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1600 +#: flatcamGUI/FlatCAMGUI.py:1597 msgid "Geo Editor" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1601 +#: flatcamGUI/FlatCAMGUI.py:1598 msgid "Line" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1602 +#: flatcamGUI/FlatCAMGUI.py:1599 msgid "Rectangle" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1603 +#: flatcamGUI/FlatCAMGUI.py:1600 msgid "Cut" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1608 +#: flatcamGUI/FlatCAMGUI.py:1605 msgid "Pad" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1609 +#: flatcamGUI/FlatCAMGUI.py:1606 msgid "Pad Array" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1610 +#: flatcamGUI/FlatCAMGUI.py:1607 msgid "Track" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1611 +#: flatcamGUI/FlatCAMGUI.py:1608 msgid "Region" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1613 +#: flatcamGUI/FlatCAMGUI.py:1610 msgid "Exc Editor" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1614 +#: flatcamGUI/FlatCAMGUI.py:1611 msgid "Add Drill" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1646 +#: flatcamGUI/FlatCAMGUI.py:1643 msgid "Print Preview" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1647 +#: flatcamGUI/FlatCAMGUI.py:1644 msgid "Print Code" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1648 +#: flatcamGUI/FlatCAMGUI.py:1645 msgid "Find in Code" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1653 +#: flatcamGUI/FlatCAMGUI.py:1650 msgid "Replace With" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1657 +#: flatcamGUI/FlatCAMGUI.py:1654 msgid "All" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1659 +#: flatcamGUI/FlatCAMGUI.py:1656 msgid "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1662 +#: flatcamGUI/FlatCAMGUI.py:1659 msgid "Open Code" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1663 +#: flatcamGUI/FlatCAMGUI.py:1660 msgid "Save Code" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1698 +#: flatcamGUI/FlatCAMGUI.py:1695 msgid "" "Relative neasurement.\n" "Reference is last click position" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1704 +#: flatcamGUI/FlatCAMGUI.py:1701 msgid "" "Absolute neasurement.\n" "Reference is (X=0, Y= 0) position" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1899 +#: flatcamGUI/FlatCAMGUI.py:1897 msgid "Select 'Esc'" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1926 +#: flatcamGUI/FlatCAMGUI.py:1924 msgid "Copy Objects" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1928 +#: flatcamGUI/FlatCAMGUI.py:1926 msgid "Delete Shape" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1933 +#: flatcamGUI/FlatCAMGUI.py:1931 msgid "Move Objects" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2365 +#: flatcamGUI/FlatCAMGUI.py:2360 msgid "" "Please first select a geometry item to be cutted\n" "then select the geometry item that will be cutted\n" @@ -4888,131 +4913,131 @@ msgid "" "the toolbar button." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2372 flatcamGUI/FlatCAMGUI.py:2509 -#: flatcamGUI/FlatCAMGUI.py:2568 flatcamGUI/FlatCAMGUI.py:2588 +#: flatcamGUI/FlatCAMGUI.py:2367 flatcamGUI/FlatCAMGUI.py:2504 +#: flatcamGUI/FlatCAMGUI.py:2563 flatcamGUI/FlatCAMGUI.py:2583 msgid "Warning" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2439 flatcamGUI/FlatCAMGUI.py:2638 -#: flatcamGUI/FlatCAMGUI.py:2849 +#: flatcamGUI/FlatCAMGUI.py:2434 flatcamGUI/FlatCAMGUI.py:2633 +#: flatcamGUI/FlatCAMGUI.py:2844 msgid "[WARNING_NOTCL] Cancelled." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2504 +#: flatcamGUI/FlatCAMGUI.py:2499 msgid "" "Please select geometry items \n" "on which to perform Intersection Tool." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2563 +#: flatcamGUI/FlatCAMGUI.py:2558 msgid "" "Please select geometry items \n" "on which to perform Substraction Tool." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2583 +#: flatcamGUI/FlatCAMGUI.py:2578 msgid "" "Please select geometry items \n" "on which to perform union." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2654 flatcamGUI/FlatCAMGUI.py:2866 +#: flatcamGUI/FlatCAMGUI.py:2649 flatcamGUI/FlatCAMGUI.py:2861 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to delete." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2738 flatcamGUI/FlatCAMGUI.py:2933 +#: flatcamGUI/FlatCAMGUI.py:2733 flatcamGUI/FlatCAMGUI.py:2928 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to copy." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2784 flatcamGUI/FlatCAMGUI.py:2979 +#: flatcamGUI/FlatCAMGUI.py:2779 flatcamGUI/FlatCAMGUI.py:2974 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to move." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2993 +#: flatcamGUI/FlatCAMGUI.py:2988 msgid "New Tool ..." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2994 +#: flatcamGUI/FlatCAMGUI.py:2989 msgid "Enter a Tool Diameter:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3036 +#: flatcamGUI/FlatCAMGUI.py:3032 msgid "Measurement Tool exit..." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3331 +#: flatcamGUI/FlatCAMGUI.py:3329 msgid "Grid X value:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3333 +#: flatcamGUI/FlatCAMGUI.py:3331 msgid "This is the Grid snap value on X axis." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3338 +#: flatcamGUI/FlatCAMGUI.py:3336 msgid "Grid Y value:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3340 +#: flatcamGUI/FlatCAMGUI.py:3338 msgid "This is the Grid snap value on Y axis." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3345 +#: flatcamGUI/FlatCAMGUI.py:3343 msgid "Snap Max:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3350 +#: flatcamGUI/FlatCAMGUI.py:3348 msgid "Workspace:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3352 +#: flatcamGUI/FlatCAMGUI.py:3350 msgid "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3355 +#: flatcamGUI/FlatCAMGUI.py:3353 msgid "Wk. format:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3357 +#: flatcamGUI/FlatCAMGUI.py:3355 msgid "" "Select the type of rectangle to be used on canvas,\n" "as valid workspace." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3370 +#: flatcamGUI/FlatCAMGUI.py:3368 msgid "Plot Fill:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3372 +#: flatcamGUI/FlatCAMGUI.py:3370 msgid "" "Set the fill color for plotted objects.\n" "First 6 digits are the color and the last 2\n" "digits are for alpha (transparency) level." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3386 flatcamGUI/FlatCAMGUI.py:3436 -#: flatcamGUI/FlatCAMGUI.py:3486 +#: flatcamGUI/FlatCAMGUI.py:3384 flatcamGUI/FlatCAMGUI.py:3434 +#: flatcamGUI/FlatCAMGUI.py:3484 msgid "Alpha Level:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3388 +#: flatcamGUI/FlatCAMGUI.py:3386 msgid "Set the fill transparency for plotted objects." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3405 +#: flatcamGUI/FlatCAMGUI.py:3403 msgid "Plot Line:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3407 +#: flatcamGUI/FlatCAMGUI.py:3405 msgid "Set the line color for plotted objects." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3419 +#: flatcamGUI/FlatCAMGUI.py:3417 msgid "Sel. Fill:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3421 +#: flatcamGUI/FlatCAMGUI.py:3419 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from left to right.\n" @@ -5020,23 +5045,23 @@ msgid "" "digits are for alpha (transparency) level." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3438 +#: flatcamGUI/FlatCAMGUI.py:3436 msgid "Set the fill transparency for the 'left to right' selection box." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3455 +#: flatcamGUI/FlatCAMGUI.py:3453 msgid "Sel. Line:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3457 +#: flatcamGUI/FlatCAMGUI.py:3455 msgid "Set the line color for the 'left to right' selection box." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3469 +#: flatcamGUI/FlatCAMGUI.py:3467 msgid "Sel2. Fill:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3471 +#: flatcamGUI/FlatCAMGUI.py:3469 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from right to left.\n" @@ -5044,116 +5069,116 @@ msgid "" "digits are for alpha (transparency) level." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3488 +#: flatcamGUI/FlatCAMGUI.py:3486 msgid "Set the fill transparency for selection 'right to left' box." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3505 +#: flatcamGUI/FlatCAMGUI.py:3503 msgid "Sel2. Line:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3507 +#: flatcamGUI/FlatCAMGUI.py:3505 msgid "Set the line color for the 'right to left' selection box." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3519 +#: flatcamGUI/FlatCAMGUI.py:3517 msgid "Editor Draw:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3521 +#: flatcamGUI/FlatCAMGUI.py:3519 msgid "Set the color for the shape." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3533 +#: flatcamGUI/FlatCAMGUI.py:3531 msgid "Editor Draw Sel.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3535 +#: flatcamGUI/FlatCAMGUI.py:3533 msgid "Set the color of the shape when selected." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3547 +#: flatcamGUI/FlatCAMGUI.py:3545 msgid "Project Items:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3549 +#: flatcamGUI/FlatCAMGUI.py:3547 msgid "Set the color of the items in Project Tab Tree." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3560 +#: flatcamGUI/FlatCAMGUI.py:3558 msgid "Proj. Dis. Items:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3562 +#: flatcamGUI/FlatCAMGUI.py:3560 msgid "" "Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3613 +#: flatcamGUI/FlatCAMGUI.py:3611 msgid "GUI Settings" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3620 +#: flatcamGUI/FlatCAMGUI.py:3617 msgid "Layout:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3622 +#: flatcamGUI/FlatCAMGUI.py:3619 msgid "" "Select an layout for FlatCAM.\n" "It is applied immediately." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3638 +#: flatcamGUI/FlatCAMGUI.py:3635 msgid "Style:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3640 +#: flatcamGUI/FlatCAMGUI.py:3637 msgid "" "Select an style for FlatCAM.\n" "It will be applied at the next app start." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3651 +#: flatcamGUI/FlatCAMGUI.py:3648 msgid "HDPI Support:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3653 +#: flatcamGUI/FlatCAMGUI.py:3650 msgid "" "Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3666 +#: flatcamGUI/FlatCAMGUI.py:3663 msgid "Clear GUI Settings:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3668 +#: flatcamGUI/FlatCAMGUI.py:3665 msgid "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3671 +#: flatcamGUI/FlatCAMGUI.py:3668 msgid "Clear" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3675 +#: flatcamGUI/FlatCAMGUI.py:3672 msgid "Hover Shape:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3677 +#: flatcamGUI/FlatCAMGUI.py:3674 msgid "" "Enable display of a hover shape for FlatCAM objects.\n" "It is displayed whenever the mouse cursor is hovering\n" "over any kind of not-selected object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3684 +#: flatcamGUI/FlatCAMGUI.py:3681 msgid "Sel. Shape:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3686 +#: flatcamGUI/FlatCAMGUI.py:3683 msgid "" "Enable the display of a selection shape for FlatCAM objects.\n" "It is displayed whenever the mouse selects an object\n" @@ -5161,34 +5186,34 @@ msgid "" "right to left." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3728 +#: flatcamGUI/FlatCAMGUI.py:3725 msgid "Are you sure you want to delete the GUI Settings? \n" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3731 +#: flatcamGUI/FlatCAMGUI.py:3728 msgid "Clear GUI Settings" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3752 +#: flatcamGUI/FlatCAMGUI.py:3749 msgid "App Preferences" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3758 +#: flatcamGUI/FlatCAMGUI.py:3755 msgid "Units:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3759 +#: flatcamGUI/FlatCAMGUI.py:3756 msgid "" "The default value for FlatCAM units.\n" "Whatever is selected here is set every time\n" "FLatCAM is started." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3766 +#: flatcamGUI/FlatCAMGUI.py:3763 msgid "APP. LEVEL:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3767 +#: flatcamGUI/FlatCAMGUI.py:3764 msgid "" "Choose the default level of usage for FlatCAM.\n" "BASIC level -> reduced functionality, best for beginner's.\n" @@ -5198,19 +5223,19 @@ msgid "" "the Selected Tab for all kinds of FlatCAM objects." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3776 +#: flatcamGUI/FlatCAMGUI.py:3773 msgid "Languages:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3777 +#: flatcamGUI/FlatCAMGUI.py:3774 msgid "Set the language used throughout FlatCAM." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3780 +#: flatcamGUI/FlatCAMGUI.py:3777 msgid "Apply Language" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3781 +#: flatcamGUI/FlatCAMGUI.py:3778 msgid "" "Set the language used throughout FlatCAM.\n" "The app will restart after click.Windows: When FlatCAM is installed in " @@ -5221,91 +5246,91 @@ msgid "" "applied at the next app start." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3790 +#: flatcamGUI/FlatCAMGUI.py:3787 msgid "Shell at StartUp:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3792 flatcamGUI/FlatCAMGUI.py:3797 +#: flatcamGUI/FlatCAMGUI.py:3789 flatcamGUI/FlatCAMGUI.py:3794 msgid "" "Check this box if you want the shell to\n" "start automatically at startup." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3802 +#: flatcamGUI/FlatCAMGUI.py:3799 msgid "Version Check:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3804 flatcamGUI/FlatCAMGUI.py:3809 +#: flatcamGUI/FlatCAMGUI.py:3801 flatcamGUI/FlatCAMGUI.py:3806 msgid "" "Check this box if you want to check\n" "for a new version automatically at startup." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3814 +#: flatcamGUI/FlatCAMGUI.py:3811 msgid "Send Stats:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3816 flatcamGUI/FlatCAMGUI.py:3821 +#: flatcamGUI/FlatCAMGUI.py:3813 flatcamGUI/FlatCAMGUI.py:3818 msgid "" "Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3828 +#: flatcamGUI/FlatCAMGUI.py:3825 msgid "Pan Button:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3829 +#: flatcamGUI/FlatCAMGUI.py:3826 msgid "" "Select the mouse button to use for panning:\n" "- MMB --> Middle Mouse Button\n" "- RMB --> Right Mouse Button" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3836 +#: flatcamGUI/FlatCAMGUI.py:3833 msgid "Multiple Sel:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3837 +#: flatcamGUI/FlatCAMGUI.py:3834 msgid "Select the key used for multiple selection." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3842 +#: flatcamGUI/FlatCAMGUI.py:3839 msgid "Project at StartUp:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3844 flatcamGUI/FlatCAMGUI.py:3849 +#: flatcamGUI/FlatCAMGUI.py:3841 flatcamGUI/FlatCAMGUI.py:3846 msgid "" "Check this box if you want the project/selected/tool tab area to\n" "to be shown automatically at startup." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3854 +#: flatcamGUI/FlatCAMGUI.py:3851 msgid "Project AutoHide:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3856 flatcamGUI/FlatCAMGUI.py:3862 +#: flatcamGUI/FlatCAMGUI.py:3853 flatcamGUI/FlatCAMGUI.py:3859 msgid "" "Check this box if you want the project/selected/tool tab area to\n" "hide automatically when there are no objects loaded and\n" "to show whenever a new object is created." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3868 +#: flatcamGUI/FlatCAMGUI.py:3865 msgid "Enable ToolTips:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3870 flatcamGUI/FlatCAMGUI.py:3875 +#: flatcamGUI/FlatCAMGUI.py:3867 flatcamGUI/FlatCAMGUI.py:3872 msgid "" "Check this box if you want to have toolTips displayed\n" "when hovering with mouse over items throughout the App." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3878 +#: flatcamGUI/FlatCAMGUI.py:3875 msgid "Workers number:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3880 flatcamGUI/FlatCAMGUI.py:3889 +#: flatcamGUI/FlatCAMGUI.py:3877 flatcamGUI/FlatCAMGUI.py:3886 msgid "" "The number of Qthreads made available to the App.\n" "A bigger number may finish the jobs more quickly but\n" @@ -5315,7 +5340,7 @@ msgid "" "After change, it will be applied at next App start." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3901 flatcamGUI/FlatCAMGUI.py:3910 +#: flatcamGUI/FlatCAMGUI.py:3898 flatcamGUI/FlatCAMGUI.py:3907 msgid "" "This value can counter the effect of the Circle Steps\n" "parameter. Default value is 0.01.\n" @@ -5325,11 +5350,11 @@ msgid "" "performance at the expense of level of detail." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3946 +#: flatcamGUI/FlatCAMGUI.py:3943 msgid "\"Open\" behavior" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3948 +#: flatcamGUI/FlatCAMGUI.py:3945 msgid "" "When checked the path for the last saved file is used when saving files,\n" "and the path for the last opened file is used when opening files.\n" @@ -5338,108 +5363,108 @@ msgid "" "path for saving files or the path for opening files." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3957 +#: flatcamGUI/FlatCAMGUI.py:3954 msgid "Save Compressed Project" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3959 +#: flatcamGUI/FlatCAMGUI.py:3956 msgid "" "Whether to save a compressed or uncompressed project.\n" "When checked it will save a compressed FlatCAM project." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3970 +#: flatcamGUI/FlatCAMGUI.py:3967 msgid "Compression Level:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3972 +#: flatcamGUI/FlatCAMGUI.py:3969 msgid "" "The level of compression used when saving\n" "a FlatCAM project. Higher value means better compression\n" "but require more RAM usage and more processing time." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4367 -#: flatcamGUI/FlatCAMGUI.py:5037 flatcamGUI/FlatCAMGUI.py:5409 +#: flatcamGUI/FlatCAMGUI.py:3995 flatcamGUI/FlatCAMGUI.py:4361 +#: flatcamGUI/FlatCAMGUI.py:5153 flatcamGUI/FlatCAMGUI.py:5525 #: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:505 #: flatcamGUI/ObjectUI.py:833 flatcamGUI/ObjectUI.py:1350 msgid "Plot Options:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/FlatCAMGUI.py:4379 +#: flatcamGUI/FlatCAMGUI.py:4002 flatcamGUI/FlatCAMGUI.py:4373 #: flatcamGUI/ObjectUI.py:156 flatcamGUI/ObjectUI.py:506 msgid "Solid" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:158 +#: flatcamGUI/FlatCAMGUI.py:4004 flatcamGUI/ObjectUI.py:158 msgid "Solid color polygons." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4012 flatcamGUI/ObjectUI.py:164 +#: flatcamGUI/FlatCAMGUI.py:4009 flatcamGUI/ObjectUI.py:164 msgid "M-Color" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4014 flatcamGUI/ObjectUI.py:166 +#: flatcamGUI/FlatCAMGUI.py:4011 flatcamGUI/ObjectUI.py:166 msgid "Draw polygons in different colors." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:4373 -#: flatcamGUI/FlatCAMGUI.py:5041 flatcamGUI/ObjectUI.py:172 +#: flatcamGUI/FlatCAMGUI.py:4016 flatcamGUI/FlatCAMGUI.py:4367 +#: flatcamGUI/FlatCAMGUI.py:5157 flatcamGUI/ObjectUI.py:172 msgid "Plot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4021 flatcamGUI/FlatCAMGUI.py:5043 +#: flatcamGUI/FlatCAMGUI.py:4018 flatcamGUI/FlatCAMGUI.py:5159 #: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:546 -#: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1437 +#: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1450 msgid "Plot (show) this object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4026 flatcamGUI/FlatCAMGUI.py:5050 -#: flatcamGUI/FlatCAMGUI.py:5445 +#: flatcamGUI/FlatCAMGUI.py:4023 flatcamGUI/FlatCAMGUI.py:5166 +#: flatcamGUI/FlatCAMGUI.py:5608 msgid "Circle Steps:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4028 +#: flatcamGUI/FlatCAMGUI.py:4025 msgid "" "The number of circle steps for Gerber \n" "circular aperture linear approximation." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4043 +#: flatcamGUI/FlatCAMGUI.py:4040 msgid "Gerber Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4047 flatcamGUI/ObjectUI.py:251 +#: flatcamGUI/FlatCAMGUI.py:4043 flatcamGUI/ObjectUI.py:251 msgid "Isolation Routing:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4049 flatcamGUI/ObjectUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:4045 flatcamGUI/ObjectUI.py:253 msgid "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4060 flatcamGUI/FlatCAMGUI.py:4760 -#: flatcamGUI/FlatCAMGUI.py:5733 flatcamGUI/ObjectUI.py:788 +#: flatcamGUI/FlatCAMGUI.py:4056 flatcamGUI/FlatCAMGUI.py:4753 +#: flatcamGUI/FlatCAMGUI.py:5897 flatcamGUI/ObjectUI.py:788 #: flatcamGUI/ObjectUI.py:804 msgid "Diameter of the cutting tool." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4067 +#: flatcamGUI/FlatCAMGUI.py:4063 msgid "Width (# passes):" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4069 flatcamGUI/ObjectUI.py:275 +#: flatcamGUI/FlatCAMGUI.py:4065 flatcamGUI/ObjectUI.py:275 msgid "" "Width of the isolation gap in\n" "number (integer) of tool widths." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4077 flatcamGUI/ObjectUI.py:283 +#: flatcamGUI/FlatCAMGUI.py:4073 flatcamGUI/ObjectUI.py:283 msgid "Pass overlap:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4079 flatcamGUI/ObjectUI.py:285 +#: flatcamGUI/FlatCAMGUI.py:4075 flatcamGUI/ObjectUI.py:285 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -5448,42 +5473,42 @@ msgid "" "above." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4087 flatcamGUI/ObjectUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:4083 flatcamGUI/ObjectUI.py:295 msgid "Milling Type:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4089 flatcamGUI/ObjectUI.py:297 +#: flatcamGUI/FlatCAMGUI.py:4085 flatcamGUI/ObjectUI.py:297 msgid "" "Milling type:\n" "- climb / best for precision milling and to reduce tool usage\n" "- conventional / useful when there is no backlash compensation" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4099 +#: flatcamGUI/FlatCAMGUI.py:4095 msgid "Combine Passes" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/ObjectUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:4097 flatcamGUI/ObjectUI.py:309 msgid "Combine all passes into one object" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4106 +#: flatcamGUI/FlatCAMGUI.py:4102 msgid "Clear non-copper:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4108 flatcamGUI/FlatCAMGUI.py:5621 +#: flatcamGUI/FlatCAMGUI.py:4104 flatcamGUI/FlatCAMGUI.py:5785 #: flatcamGUI/ObjectUI.py:386 msgid "" "Create a Geometry object with\n" "toolpaths to cut all non-copper regions." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4117 flatcamGUI/FlatCAMGUI.py:4143 +#: flatcamGUI/FlatCAMGUI.py:4113 flatcamGUI/FlatCAMGUI.py:4139 #: flatcamGUI/ObjectUI.py:430 flatcamGUI/ObjectUI.py:464 msgid "Boundary Margin:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4119 flatcamGUI/ObjectUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:4115 flatcamGUI/ObjectUI.py:432 msgid "" "Specify the edge of the PCB\n" "by drawing a box around all\n" @@ -5491,27 +5516,27 @@ msgid "" "distance." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4129 flatcamGUI/FlatCAMGUI.py:4152 +#: flatcamGUI/FlatCAMGUI.py:4125 flatcamGUI/FlatCAMGUI.py:4148 msgid "Rounded corners" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4131 +#: flatcamGUI/FlatCAMGUI.py:4127 msgid "" "Creates a Geometry objects with polygons\n" "covering the copper-free areas of the PCB." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4137 flatcamGUI/ObjectUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:4133 flatcamGUI/ObjectUI.py:454 msgid "Bounding Box:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4145 flatcamGUI/ObjectUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:4141 flatcamGUI/ObjectUI.py:466 msgid "" "Distance of the edges of the box\n" "to the nearest polygon." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4154 flatcamGUI/ObjectUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:4150 flatcamGUI/ObjectUI.py:476 msgid "" "If the bounding box is \n" "to have rounded corners\n" @@ -5519,92 +5544,92 @@ msgid "" "the margin." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4168 +#: flatcamGUI/FlatCAMGUI.py:4164 msgid "Gerber Adv. Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4172 +#: flatcamGUI/FlatCAMGUI.py:4167 msgid "Advanced Param.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4174 +#: flatcamGUI/FlatCAMGUI.py:4169 msgid "" "A list of Gerber advanced parameters.\n" "Those parameters are available only for\n" "Advanced App. Level." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4184 flatcamGUI/ObjectUI.py:314 +#: flatcamGUI/FlatCAMGUI.py:4179 flatcamGUI/ObjectUI.py:314 msgid "\"Follow\"" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4186 flatcamGUI/ObjectUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:4181 flatcamGUI/ObjectUI.py:316 msgid "" "Generate a 'Follow' geometry.\n" "This means that it will cut through\n" "the middle of the trace." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4194 +#: flatcamGUI/FlatCAMGUI.py:4188 msgid "Table Show/Hide" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4196 +#: flatcamGUI/FlatCAMGUI.py:4190 msgid "" "Toggle the display of the Gerber Apertures Table.\n" "Also, on hide, it will delete all mark shapes\n" "that are drawn on canvas." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4235 +#: flatcamGUI/FlatCAMGUI.py:4229 msgid "Gerber Export" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4238 flatcamGUI/FlatCAMGUI.py:4909 +#: flatcamGUI/FlatCAMGUI.py:4232 flatcamGUI/FlatCAMGUI.py:4902 msgid "Export Options:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4240 +#: flatcamGUI/FlatCAMGUI.py:4234 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Gerber menu entry." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4249 flatcamGUI/FlatCAMGUI.py:4920 +#: flatcamGUI/FlatCAMGUI.py:4243 flatcamGUI/FlatCAMGUI.py:4913 msgid "Units:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4251 flatcamGUI/FlatCAMGUI.py:4257 +#: flatcamGUI/FlatCAMGUI.py:4245 flatcamGUI/FlatCAMGUI.py:4251 msgid "The units used in the Gerber file." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4263 flatcamGUI/FlatCAMGUI.py:4934 +#: flatcamGUI/FlatCAMGUI.py:4257 flatcamGUI/FlatCAMGUI.py:4927 msgid "Int/Decimals:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4265 +#: flatcamGUI/FlatCAMGUI.py:4259 msgid "" "The number of digits in the whole part of the number\n" "and in the fractional part of the number." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4276 +#: flatcamGUI/FlatCAMGUI.py:4270 msgid "" "This numbers signify the number of digits in\n" "the whole part of Gerber coordinates." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4290 +#: flatcamGUI/FlatCAMGUI.py:4284 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Gerber coordinates." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4299 flatcamGUI/FlatCAMGUI.py:4995 +#: flatcamGUI/FlatCAMGUI.py:4293 flatcamGUI/FlatCAMGUI.py:4988 msgid "Zeros:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4302 flatcamGUI/FlatCAMGUI.py:4312 +#: flatcamGUI/FlatCAMGUI.py:4296 flatcamGUI/FlatCAMGUI.py:4306 msgid "" "This sets the type of Gerber zeros.\n" "If LZ then Leading Zeros are removed and\n" @@ -5613,23 +5638,25 @@ msgid "" "and Leading Zeros are kept." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4332 flatcamGUI/FlatCAMGUI.py:5375 -#: flatcamGUI/FlatCAMGUI.py:5619 flatcamGUI/FlatCAMGUI.py:5720 -#: flatcamGUI/FlatCAMGUI.py:5799 flatcamGUI/FlatCAMGUI.py:5858 -#: flatcamGUI/FlatCAMGUI.py:5961 flatcamGUI/FlatCAMGUI.py:6022 -#: flatcamGUI/FlatCAMGUI.py:6221 flatcamGUI/FlatCAMGUI.py:6348 +#: 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 msgid "Parameters:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4334 +#: flatcamGUI/FlatCAMGUI.py:4328 msgid "A list of Gerber Editor parameters." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4342 flatcamGUI/FlatCAMGUI.py:5385 +#: flatcamGUI/FlatCAMGUI.py:4336 flatcamGUI/FlatCAMGUI.py:5039 +#: flatcamGUI/FlatCAMGUI.py:5501 msgid "Selection limit:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4344 +#: flatcamGUI/FlatCAMGUI.py:4338 msgid "" "Set the number of selected Gerber geometry\n" "items above which the utility geometry\n" @@ -5638,15 +5665,15 @@ msgid "" "large number of geometric elements." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4364 +#: flatcamGUI/FlatCAMGUI.py:4358 msgid "Excellon General" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4386 +#: flatcamGUI/FlatCAMGUI.py:4380 msgid "Excellon Format:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4388 +#: flatcamGUI/FlatCAMGUI.py:4382 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -5669,41 +5696,41 @@ msgid "" "KiCAD 3:5 INCH TZ" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4413 +#: flatcamGUI/FlatCAMGUI.py:4407 msgid "INCH:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4416 +#: flatcamGUI/FlatCAMGUI.py:4410 msgid "Default values for INCH are 2:4" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4424 flatcamGUI/FlatCAMGUI.py:4457 -#: flatcamGUI/FlatCAMGUI.py:4949 +#: flatcamGUI/FlatCAMGUI.py:4418 flatcamGUI/FlatCAMGUI.py:4451 +#: flatcamGUI/FlatCAMGUI.py:4942 msgid "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4438 flatcamGUI/FlatCAMGUI.py:4471 -#: flatcamGUI/FlatCAMGUI.py:4963 +#: flatcamGUI/FlatCAMGUI.py:4432 flatcamGUI/FlatCAMGUI.py:4465 +#: flatcamGUI/FlatCAMGUI.py:4956 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4446 +#: flatcamGUI/FlatCAMGUI.py:4440 msgid "METRIC:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4449 +#: flatcamGUI/FlatCAMGUI.py:4443 msgid "Default values for METRIC are 3:3" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4480 +#: flatcamGUI/FlatCAMGUI.py:4474 msgid "Default Zeros:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4483 flatcamGUI/FlatCAMGUI.py:4998 +#: flatcamGUI/FlatCAMGUI.py:4477 flatcamGUI/FlatCAMGUI.py:4991 msgid "" "This sets the type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -5712,7 +5739,7 @@ msgid "" "and Leading Zeros are removed." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4494 +#: flatcamGUI/FlatCAMGUI.py:4488 msgid "" "This sets the default type of Excellon zeros.\n" "If it is not detected in the parsed file the value here\n" @@ -5722,11 +5749,11 @@ msgid "" "and Leading Zeros are removed." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4508 +#: flatcamGUI/FlatCAMGUI.py:4502 msgid "Default Units:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4511 +#: flatcamGUI/FlatCAMGUI.py:4505 msgid "" "This sets the default units of Excellon files.\n" "If it is not detected in the parsed file the value here\n" @@ -5734,22 +5761,22 @@ msgid "" "therefore this parameter will be used." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4522 +#: flatcamGUI/FlatCAMGUI.py:4516 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:4538 +#: flatcamGUI/FlatCAMGUI.py:4532 msgid "Excellon Optimization:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4545 +#: flatcamGUI/FlatCAMGUI.py:4539 msgid "Algorithm: " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4548 flatcamGUI/FlatCAMGUI.py:4561 +#: flatcamGUI/FlatCAMGUI.py:4542 flatcamGUI/FlatCAMGUI.py:4555 msgid "" "This sets the optimization type for the Excellon drill path.\n" "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" @@ -5761,11 +5788,11 @@ msgid "" "Travelling Salesman algorithm for path optimization." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4573 +#: flatcamGUI/FlatCAMGUI.py:4567 msgid "Optimization Time: " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4576 +#: flatcamGUI/FlatCAMGUI.py:4570 msgid "" "When OR-Tools Metaheuristic (MH) is enabled there is a\n" "maximum threshold for how much time is spent doing the\n" @@ -5773,88 +5800,88 @@ msgid "" "In seconds." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4618 +#: flatcamGUI/FlatCAMGUI.py:4612 msgid "Excellon Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4621 flatcamGUI/ObjectUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:4615 flatcamGUI/ObjectUI.py:584 msgid "Create CNC Job" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4623 +#: flatcamGUI/FlatCAMGUI.py:4617 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4631 flatcamGUI/FlatCAMGUI.py:5101 -#: flatcamGUI/FlatCAMGUI.py:6157 flatcamGUI/ObjectUI.py:595 +#: flatcamGUI/FlatCAMGUI.py:4625 flatcamGUI/FlatCAMGUI.py:5217 +#: flatcamGUI/FlatCAMGUI.py:6321 flatcamGUI/ObjectUI.py:595 #: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolCalculators.py:108 msgid "Cut Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/ObjectUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:4627 flatcamGUI/ObjectUI.py:597 msgid "" "Drill depth (negative)\n" "below the copper surface." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4640 flatcamGUI/FlatCAMGUI.py:5134 +#: flatcamGUI/FlatCAMGUI.py:4634 flatcamGUI/FlatCAMGUI.py:5250 #: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1098 msgid "Travel Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4642 flatcamGUI/ObjectUI.py:607 +#: flatcamGUI/FlatCAMGUI.py:4636 flatcamGUI/ObjectUI.py:607 msgid "" "Tool height when travelling\n" "across the XY plane." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4650 flatcamGUI/FlatCAMGUI.py:5144 +#: flatcamGUI/FlatCAMGUI.py:4644 flatcamGUI/FlatCAMGUI.py:5260 msgid "Tool change:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5146 +#: flatcamGUI/FlatCAMGUI.py:4646 flatcamGUI/FlatCAMGUI.py:5262 #: flatcamGUI/ObjectUI.py:617 msgid "" "Include tool-change sequence\n" "in G-Code (Pause for tool change)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4659 flatcamGUI/FlatCAMGUI.py:5154 +#: flatcamGUI/FlatCAMGUI.py:4653 flatcamGUI/FlatCAMGUI.py:5270 msgid "Toolchange Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4661 flatcamGUI/FlatCAMGUI.py:5156 +#: flatcamGUI/FlatCAMGUI.py:4655 flatcamGUI/FlatCAMGUI.py:5272 msgid "Toolchange Z position." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4667 +#: flatcamGUI/FlatCAMGUI.py:4661 msgid "Feedrate:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4669 +#: flatcamGUI/FlatCAMGUI.py:4663 msgid "" "Tool speed while drilling\n" "(in units per minute)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4677 +#: flatcamGUI/FlatCAMGUI.py:4671 msgid "Spindle Speed:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4679 flatcamGUI/FlatCAMGUI.py:5186 +#: flatcamGUI/FlatCAMGUI.py:4673 flatcamGUI/FlatCAMGUI.py:5302 #: flatcamGUI/ObjectUI.py:684 msgid "" "Speed of the spindle\n" "in RPM (optional)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4687 flatcamGUI/FlatCAMGUI.py:5194 +#: flatcamGUI/FlatCAMGUI.py:4681 flatcamGUI/FlatCAMGUI.py:5310 msgid "Spindle dir.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4689 flatcamGUI/FlatCAMGUI.py:5196 +#: flatcamGUI/FlatCAMGUI.py:4683 flatcamGUI/FlatCAMGUI.py:5312 msgid "" "This sets the direction that the spindle is rotating.\n" "It can be either:\n" @@ -5862,43 +5889,43 @@ msgid "" "- CCW = counter clockwise" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 +#: flatcamGUI/FlatCAMGUI.py:4695 flatcamGUI/FlatCAMGUI.py:5324 #: flatcamGUI/ObjectUI.py:692 flatcamGUI/ObjectUI.py:1224 msgid "Dwell:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4703 flatcamGUI/FlatCAMGUI.py:5210 +#: flatcamGUI/FlatCAMGUI.py:4697 flatcamGUI/FlatCAMGUI.py:5326 #: 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:4706 flatcamGUI/FlatCAMGUI.py:5213 +#: flatcamGUI/FlatCAMGUI.py:4700 flatcamGUI/FlatCAMGUI.py:5329 msgid "Duration:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4708 flatcamGUI/FlatCAMGUI.py:5215 +#: flatcamGUI/FlatCAMGUI.py:4702 flatcamGUI/FlatCAMGUI.py:5331 #: flatcamGUI/ObjectUI.py:699 flatcamGUI/ObjectUI.py:1234 msgid "Number of milliseconds for spindle to dwell." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4720 flatcamGUI/FlatCAMGUI.py:5225 +#: flatcamGUI/FlatCAMGUI.py:4714 flatcamGUI/FlatCAMGUI.py:5341 #: flatcamGUI/ObjectUI.py:707 msgid "Postprocessor:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4722 +#: flatcamGUI/FlatCAMGUI.py:4716 msgid "" "The postprocessor file that dictates\n" "gcode output." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4732 +#: flatcamGUI/FlatCAMGUI.py:4725 msgid "Gcode: " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4734 +#: flatcamGUI/FlatCAMGUI.py:4727 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -5906,93 +5933,93 @@ msgid "" "converted to drills." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4750 flatcamGUI/ObjectUI.py:772 +#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:772 msgid "Mill Holes" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4752 flatcamGUI/ObjectUI.py:774 +#: flatcamGUI/FlatCAMGUI.py:4745 flatcamGUI/ObjectUI.py:774 msgid "Create Geometry for milling holes." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4758 +#: flatcamGUI/FlatCAMGUI.py:4751 msgid "Drill Tool dia:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4765 +#: flatcamGUI/FlatCAMGUI.py:4758 msgid "Slot Tool dia:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4767 +#: flatcamGUI/FlatCAMGUI.py:4760 msgid "" "Diameter of the cutting tool\n" "when milling slots." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4779 +#: flatcamGUI/FlatCAMGUI.py:4772 msgid "Defaults" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4792 +#: flatcamGUI/FlatCAMGUI.py:4785 msgid "Excellon Adv. Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4798 flatcamGUI/FlatCAMGUI.py:5248 +#: flatcamGUI/FlatCAMGUI.py:4791 flatcamGUI/FlatCAMGUI.py:5364 msgid "Advanced Options:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4800 +#: flatcamGUI/FlatCAMGUI.py:4793 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:4808 +#: flatcamGUI/FlatCAMGUI.py:4801 msgid "Offset Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/ObjectUI.py:574 +#: flatcamGUI/FlatCAMGUI.py:4803 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:4817 flatcamGUI/FlatCAMGUI.py:5259 +#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/FlatCAMGUI.py:5375 msgid "Toolchange X,Y:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4819 flatcamGUI/FlatCAMGUI.py:5261 +#: flatcamGUI/FlatCAMGUI.py:4812 flatcamGUI/FlatCAMGUI.py:5377 msgid "Toolchange X,Y position." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4825 flatcamGUI/FlatCAMGUI.py:5268 +#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5384 #: flatcamGUI/ObjectUI.py:634 msgid "Start move Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4827 +#: flatcamGUI/FlatCAMGUI.py:4820 msgid "" "Height of the tool just after start.\n" "Delete the value if you don't need this feature." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4834 flatcamGUI/FlatCAMGUI.py:5278 +#: flatcamGUI/FlatCAMGUI.py:4827 flatcamGUI/FlatCAMGUI.py:5394 #: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1144 msgid "End move Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5280 +#: flatcamGUI/FlatCAMGUI.py:4829 flatcamGUI/FlatCAMGUI.py:5396 msgid "" "Height of the tool after\n" "the last move at the end of the job." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4843 flatcamGUI/FlatCAMGUI.py:5288 +#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5404 #: flatcamGUI/ObjectUI.py:665 msgid "Feedrate Rapids:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4845 flatcamGUI/ObjectUI.py:667 +#: flatcamGUI/FlatCAMGUI.py:4838 flatcamGUI/ObjectUI.py:667 msgid "" "Tool speed while drilling\n" "(in units per minute).\n" @@ -6001,33 +6028,33 @@ msgid "" "ignore for any other cases." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4856 flatcamGUI/FlatCAMGUI.py:5312 +#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5428 #: flatcamGUI/ObjectUI.py:718 flatcamGUI/ObjectUI.py:1256 msgid "Probe Z depth:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4858 flatcamGUI/FlatCAMGUI.py:5314 +#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5430 #: 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:4866 flatcamGUI/FlatCAMGUI.py:5322 +#: flatcamGUI/FlatCAMGUI.py:4859 flatcamGUI/FlatCAMGUI.py:5438 #: flatcamGUI/ObjectUI.py:730 flatcamGUI/ObjectUI.py:1270 msgid "Feedrate Probe:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4868 flatcamGUI/FlatCAMGUI.py:5324 +#: flatcamGUI/FlatCAMGUI.py:4861 flatcamGUI/FlatCAMGUI.py:5440 #: flatcamGUI/ObjectUI.py:732 flatcamGUI/ObjectUI.py:1273 msgid "The feedrate used while the probe is probing." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4874 flatcamGUI/FlatCAMGUI.py:5331 +#: flatcamGUI/FlatCAMGUI.py:4867 flatcamGUI/FlatCAMGUI.py:5447 msgid "Fast Plunge:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4876 flatcamGUI/FlatCAMGUI.py:5333 +#: flatcamGUI/FlatCAMGUI.py:4869 flatcamGUI/FlatCAMGUI.py:5449 msgid "" "By checking this, the vertical move from\n" "Z_Toolchange to Z_move is done with G0,\n" @@ -6035,11 +6062,11 @@ msgid "" "WARNING: the move is done at Toolchange X,Y coords." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4885 +#: flatcamGUI/FlatCAMGUI.py:4878 msgid "Fast Retract:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4887 +#: flatcamGUI/FlatCAMGUI.py:4880 msgid "" "Exit hole strategy.\n" " - When uncheked, while exiting the drilled hole the drill bit\n" @@ -6049,21 +6076,21 @@ msgid "" "(travel height) is done as fast as possible (G0) in one move." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4906 +#: flatcamGUI/FlatCAMGUI.py:4899 msgid "Excellon Export" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4911 +#: flatcamGUI/FlatCAMGUI.py:4904 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:4922 flatcamGUI/FlatCAMGUI.py:4928 +#: flatcamGUI/FlatCAMGUI.py:4915 flatcamGUI/FlatCAMGUI.py:4921 msgid "The units used in the Excellon file." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4936 +#: flatcamGUI/FlatCAMGUI.py:4929 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -6071,11 +6098,11 @@ msgid "" "coordinates are not using period." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4972 +#: flatcamGUI/FlatCAMGUI.py:4965 msgid "Format:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4974 flatcamGUI/FlatCAMGUI.py:4984 +#: flatcamGUI/FlatCAMGUI.py:4967 flatcamGUI/FlatCAMGUI.py:4977 msgid "" "Select the kind of coordinates format used.\n" "Coordinates can be saved with decimal point or without.\n" @@ -6085,7 +6112,7 @@ msgid "" "or TZ = trailing zeros are kept." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5008 +#: flatcamGUI/FlatCAMGUI.py:5001 msgid "" "This sets the default type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -6094,64 +6121,107 @@ msgid "" "and Leading Zeros are removed." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5034 +#: flatcamGUI/FlatCAMGUI.py:5031 +msgid "A list of Excellon Editor parameters." +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5041 +msgid "" +"Set the number of selected Excellon geometry\n" +"items above which the utility geometry\n" +"becomes just a selection rectangle.\n" +"Increases the performance when moving a\n" +"large number of geometric elements." +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5053 +msgid "New Tool Dia:" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5076 +msgid "Linear Drill Array:" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5080 +msgid "Linear Dir.:" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5116 +msgid "Circular Drill Array:" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5120 +msgid "Circular Dir.:" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5122 +msgid "" +"Direction for circular array.\n" +"Can be CW = clockwise or CCW = counter clockwise." +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5133 +msgid "Circ. Angle:" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5150 msgid "Geometry General" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5052 +#: flatcamGUI/FlatCAMGUI.py:5168 msgid "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5060 +#: flatcamGUI/FlatCAMGUI.py:5176 msgid "Tools" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5067 +#: flatcamGUI/FlatCAMGUI.py:5183 msgid "Tool dia: " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5069 +#: flatcamGUI/FlatCAMGUI.py:5185 msgid "" "The diameter of the cutting\n" "tool.." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5084 +#: flatcamGUI/FlatCAMGUI.py:5200 msgid "Geometry Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5089 +#: flatcamGUI/FlatCAMGUI.py:5205 msgid "Create CNC Job:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5091 +#: flatcamGUI/FlatCAMGUI.py:5207 msgid "" "Create a CNC Job object\n" "tracing the contours of this\n" "Geometry object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5103 flatcamGUI/ObjectUI.py:1065 +#: flatcamGUI/FlatCAMGUI.py:5219 flatcamGUI/ObjectUI.py:1065 msgid "" "Cutting depth (negative)\n" "below the copper surface." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5111 +#: flatcamGUI/FlatCAMGUI.py:5227 msgid "Multidepth" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5113 +#: flatcamGUI/FlatCAMGUI.py:5229 msgid "Multidepth usage: True or False." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5118 +#: flatcamGUI/FlatCAMGUI.py:5234 msgid "Depth/Pass:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5120 +#: flatcamGUI/FlatCAMGUI.py:5236 msgid "" "The depth to cut on each pass,\n" "when multidepth is enabled.\n" @@ -6160,61 +6230,61 @@ msgid "" "which has negative value." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5136 flatcamGUI/ObjectUI.py:1101 +#: flatcamGUI/FlatCAMGUI.py:5252 flatcamGUI/ObjectUI.py:1101 msgid "" "Height of the tool when\n" "moving without cutting." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5163 flatcamGUI/ObjectUI.py:1156 +#: flatcamGUI/FlatCAMGUI.py:5279 flatcamGUI/ObjectUI.py:1156 msgid "Feed Rate X-Y:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5165 flatcamGUI/ObjectUI.py:1159 +#: flatcamGUI/FlatCAMGUI.py:5281 flatcamGUI/ObjectUI.py:1159 msgid "" "Cutting speed in the XY\n" "plane in units per minute" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5173 +#: flatcamGUI/FlatCAMGUI.py:5289 msgid "Feed Rate Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5175 +#: flatcamGUI/FlatCAMGUI.py:5291 msgid "" "Cutting speed in the XY\n" "plane in units per minute.\n" "It is called also Plunge." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5184 flatcamGUI/ObjectUI.py:682 +#: flatcamGUI/FlatCAMGUI.py:5300 flatcamGUI/ObjectUI.py:682 #: flatcamGUI/ObjectUI.py:1211 msgid "Spindle speed:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5227 +#: flatcamGUI/FlatCAMGUI.py:5343 msgid "" "The postprocessor file that dictates\n" "Machine Code output." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5243 +#: flatcamGUI/FlatCAMGUI.py:5359 msgid "Geometry Adv. Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5250 +#: flatcamGUI/FlatCAMGUI.py:5366 msgid "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5270 +#: flatcamGUI/FlatCAMGUI.py:5386 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:5290 +#: flatcamGUI/FlatCAMGUI.py:5406 msgid "" "Cutting speed in the XY plane\n" "(in units per minute).\n" @@ -6223,11 +6293,11 @@ msgid "" "ignore for any other cases." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5302 +#: flatcamGUI/FlatCAMGUI.py:5418 msgid "Re-cut 1st pt." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5304 flatcamGUI/ObjectUI.py:1202 +#: flatcamGUI/FlatCAMGUI.py:5420 flatcamGUI/ObjectUI.py:1202 msgid "" "In order to remove possible\n" "copper leftovers where first cut\n" @@ -6235,37 +6305,37 @@ msgid "" "extended cut over the first cut section." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5343 +#: flatcamGUI/FlatCAMGUI.py:5459 msgid "Seg. X size:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5345 +#: flatcamGUI/FlatCAMGUI.py:5461 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:5354 +#: flatcamGUI/FlatCAMGUI.py:5470 msgid "Seg. Y size:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5356 +#: flatcamGUI/FlatCAMGUI.py:5472 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:5372 +#: flatcamGUI/FlatCAMGUI.py:5488 msgid "Geometry Editor" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5377 +#: flatcamGUI/FlatCAMGUI.py:5493 msgid "A list of Geometry Editor parameters." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5387 +#: flatcamGUI/FlatCAMGUI.py:5503 msgid "" "Set the number of selected geometry\n" "items above which the utility geometry\n" @@ -6274,20 +6344,20 @@ msgid "" "large number of geometric elements." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5406 +#: flatcamGUI/FlatCAMGUI.py:5522 msgid "CNC Job General" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5419 flatcamGUI/ObjectUI.py:544 -#: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1434 +#: flatcamGUI/FlatCAMGUI.py:5535 flatcamGUI/ObjectUI.py:544 +#: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1447 msgid "Plot Object" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5426 +#: flatcamGUI/FlatCAMGUI.py:5542 msgid "Plot kind:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5428 flatcamGUI/ObjectUI.py:1356 +#: flatcamGUI/FlatCAMGUI.py:5544 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" @@ -6295,83 +6365,110 @@ msgid "" "which means the moves that cut into the material." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5447 +#: flatcamGUI/FlatCAMGUI.py:5561 +msgid "Display Annotation:" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5563 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 +msgid "Annotation Size:" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5577 +msgid "The font size of the annotation text. In pixels." +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5585 +msgid "Annotation Color:" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5587 +msgid "Set the font color for the annotation texts." +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5610 msgid "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5457 +#: flatcamGUI/FlatCAMGUI.py:5620 msgid "" "Diameter of the tool to be\n" "rendered in the plot." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5465 +#: flatcamGUI/FlatCAMGUI.py:5628 msgid "Coords dec.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5467 +#: flatcamGUI/FlatCAMGUI.py:5630 msgid "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5475 +#: flatcamGUI/FlatCAMGUI.py:5638 msgid "Feedrate dec.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5477 +#: flatcamGUI/FlatCAMGUI.py:5640 msgid "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5492 +#: flatcamGUI/FlatCAMGUI.py:5655 msgid "CNC Job Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5495 flatcamGUI/FlatCAMGUI.py:5536 +#: flatcamGUI/FlatCAMGUI.py:5658 flatcamGUI/FlatCAMGUI.py:5699 msgid "Export G-Code:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5497 flatcamGUI/FlatCAMGUI.py:5538 -#: flatcamGUI/ObjectUI.py:1470 +#: flatcamGUI/FlatCAMGUI.py:5660 flatcamGUI/FlatCAMGUI.py:5701 +#: flatcamGUI/ObjectUI.py:1483 msgid "" "Export and save G-Code to\n" "make this object to a file." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5503 +#: flatcamGUI/FlatCAMGUI.py:5666 msgid "Prepend to G-Code:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5505 +#: flatcamGUI/FlatCAMGUI.py:5668 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:5514 +#: flatcamGUI/FlatCAMGUI.py:5677 msgid "Append to G-Code:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5516 flatcamGUI/ObjectUI.py:1492 +#: flatcamGUI/FlatCAMGUI.py:5679 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:5533 +#: flatcamGUI/FlatCAMGUI.py:5696 msgid "CNC Job Adv. Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5544 flatcamGUI/ObjectUI.py:1510 +#: flatcamGUI/FlatCAMGUI.py:5707 flatcamGUI/ObjectUI.py:1523 msgid "Toolchange G-Code:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5546 +#: flatcamGUI/FlatCAMGUI.py:5709 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -6379,88 +6476,88 @@ msgid "" "or a Toolchange Macro." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5560 flatcamGUI/ObjectUI.py:1532 +#: flatcamGUI/FlatCAMGUI.py:5723 flatcamGUI/ObjectUI.py:1545 msgid "Use Toolchange Macro" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5562 flatcamGUI/ObjectUI.py:1535 +#: flatcamGUI/FlatCAMGUI.py:5725 flatcamGUI/ObjectUI.py:1548 msgid "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5574 flatcamGUI/ObjectUI.py:1544 +#: flatcamGUI/FlatCAMGUI.py:5737 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:5581 flatcamGUI/ObjectUI.py:1551 +#: flatcamGUI/FlatCAMGUI.py:5744 flatcamGUI/ObjectUI.py:1564 msgid "Parameters" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5584 flatcamGUI/ObjectUI.py:1554 +#: flatcamGUI/FlatCAMGUI.py:5747 flatcamGUI/ObjectUI.py:1567 msgid "FlatCAM CNC parameters" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5585 flatcamGUI/ObjectUI.py:1555 +#: flatcamGUI/FlatCAMGUI.py:5748 flatcamGUI/ObjectUI.py:1568 msgid "tool = tool number" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1556 +#: flatcamGUI/FlatCAMGUI.py:5749 flatcamGUI/ObjectUI.py:1569 msgid "tooldia = tool diameter" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1557 +#: flatcamGUI/FlatCAMGUI.py:5750 flatcamGUI/ObjectUI.py:1570 msgid "t_drills = for Excellon, total number of drills" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1558 +#: flatcamGUI/FlatCAMGUI.py:5751 flatcamGUI/ObjectUI.py:1571 msgid "x_toolchange = X coord for Toolchange" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5589 flatcamGUI/ObjectUI.py:1559 +#: flatcamGUI/FlatCAMGUI.py:5752 flatcamGUI/ObjectUI.py:1572 msgid "y_toolchange = Y coord for Toolchange" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5590 flatcamGUI/ObjectUI.py:1560 +#: flatcamGUI/FlatCAMGUI.py:5753 flatcamGUI/ObjectUI.py:1573 msgid "z_toolchange = Z coord for Toolchange" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5591 +#: flatcamGUI/FlatCAMGUI.py:5754 msgid "z_cut = Z depth for the cut" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5592 +#: flatcamGUI/FlatCAMGUI.py:5755 msgid "z_move = Z height for travel" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5593 flatcamGUI/ObjectUI.py:1563 +#: flatcamGUI/FlatCAMGUI.py:5756 flatcamGUI/ObjectUI.py:1576 msgid "z_depthpercut = the step value for multidepth cut" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5594 flatcamGUI/ObjectUI.py:1564 +#: flatcamGUI/FlatCAMGUI.py:5757 flatcamGUI/ObjectUI.py:1577 msgid "spindlesspeed = the value for the spindle speed" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5595 flatcamGUI/ObjectUI.py:1565 +#: flatcamGUI/FlatCAMGUI.py:5759 flatcamGUI/ObjectUI.py:1578 msgid "dwelltime = time to dwell to allow the spindle to reach it's set RPM" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5616 +#: flatcamGUI/FlatCAMGUI.py:5780 msgid "NCC Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5629 flatcamGUI/FlatCAMGUI.py:6359 +#: flatcamGUI/FlatCAMGUI.py:5793 flatcamGUI/FlatCAMGUI.py:6523 msgid "Tools dia:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5631 +#: flatcamGUI/FlatCAMGUI.py:5795 msgid "Diameters of the cutting tools, separated by ','" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5639 flatcamTools/ToolNonCopperClear.py:167 +#: flatcamGUI/FlatCAMGUI.py:5803 flatcamTools/ToolNonCopperClear.py:167 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -6475,11 +6572,11 @@ msgid "" "due of too many paths." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5655 flatcamTools/ToolNonCopperClear.py:183 +#: flatcamGUI/FlatCAMGUI.py:5819 flatcamTools/ToolNonCopperClear.py:183 msgid "Bounding box margin." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5664 flatcamTools/ToolNonCopperClear.py:192 +#: flatcamGUI/FlatCAMGUI.py:5828 flatcamTools/ToolNonCopperClear.py:192 #: flatcamTools/ToolPaint.py:190 msgid "" "Algorithm for non-copper clearing:
Standard: Fixed step inwards." @@ -6487,12 +6584,12 @@ msgid "" "lines." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5696 flatcamTools/ToolNonCopperClear.py:224 +#: flatcamGUI/FlatCAMGUI.py:5860 flatcamTools/ToolNonCopperClear.py:224 #: flatcamTools/ToolPaint.py:222 msgid "Rest M.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5698 +#: flatcamGUI/FlatCAMGUI.py:5862 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -6502,39 +6599,39 @@ msgid "" "If not checked, use the standard algorithm." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5717 +#: flatcamGUI/FlatCAMGUI.py:5881 msgid "Cutout Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5722 flatcamGUI/ObjectUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:5886 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:5741 +#: flatcamGUI/FlatCAMGUI.py:5905 msgid "" "Distance from objects at which\n" "to draw the cutout." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5748 flatcamTools/ToolCutOut.py:96 +#: flatcamGUI/FlatCAMGUI.py:5912 flatcamTools/ToolCutOut.py:96 msgid "Gap size:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5750 +#: flatcamGUI/FlatCAMGUI.py:5914 msgid "" "Size of the gaps in the toolpath\n" "that will remain to hold the\n" "board in place." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5758 flatcamTools/ToolCutOut.py:134 +#: flatcamGUI/FlatCAMGUI.py:5922 flatcamTools/ToolCutOut.py:134 msgid "Gaps:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5760 +#: flatcamGUI/FlatCAMGUI.py:5924 msgid "" "Number of bridge gaps used for the cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -6547,57 +6644,57 @@ msgid "" "- 8 - 2*left + 2*right +2*top + 2*bottom" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5781 flatcamTools/ToolCutOut.py:115 +#: flatcamGUI/FlatCAMGUI.py:5945 flatcamTools/ToolCutOut.py:115 msgid "Convex Sh.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5783 +#: flatcamGUI/FlatCAMGUI.py:5947 msgid "Create a convex shape surrounding the entire PCB." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5796 +#: flatcamGUI/FlatCAMGUI.py:5960 msgid "2Sided Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5801 +#: flatcamGUI/FlatCAMGUI.py:5965 msgid "" "A tool to help in creating a double sided\n" "PCB using alignment holes." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5811 flatcamTools/ToolDblSided.py:235 +#: flatcamGUI/FlatCAMGUI.py:5975 flatcamTools/ToolDblSided.py:235 msgid "Drill diam.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5813 flatcamTools/ToolDblSided.py:226 +#: flatcamGUI/FlatCAMGUI.py:5977 flatcamTools/ToolDblSided.py:226 #: flatcamTools/ToolDblSided.py:237 msgid "Diameter of the drill for the alignment holes." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5822 flatcamTools/ToolDblSided.py:120 +#: flatcamGUI/FlatCAMGUI.py:5986 flatcamTools/ToolDblSided.py:120 msgid "Mirror Axis:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5824 flatcamTools/ToolDblSided.py:122 +#: flatcamGUI/FlatCAMGUI.py:5988 flatcamTools/ToolDblSided.py:122 msgid "Mirror vertically (X) or horizontally (Y)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5835 flatcamTools/ToolDblSided.py:133 +#: flatcamGUI/FlatCAMGUI.py:5999 flatcamTools/ToolDblSided.py:133 msgid "Axis Ref:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5837 +#: flatcamGUI/FlatCAMGUI.py:6001 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:5853 +#: flatcamGUI/FlatCAMGUI.py:6017 msgid "Paint Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5860 flatcamGUI/ObjectUI.py:1305 +#: flatcamGUI/FlatCAMGUI.py:6024 flatcamGUI/ObjectUI.py:1305 msgid "" "Creates tool paths to cover the\n" "whole area of a polygon (remove\n" @@ -6605,36 +6702,36 @@ msgid "" "to click on the desired polygon." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5884 +#: flatcamGUI/FlatCAMGUI.py:6048 msgid "" "How much (fraction) of the tool\n" "width to overlap each tool pass." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5938 flatcamTools/ToolPaint.py:237 +#: flatcamGUI/FlatCAMGUI.py:6102 flatcamTools/ToolPaint.py:237 msgid "Selection:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5940 +#: flatcamGUI/FlatCAMGUI.py:6104 msgid "How to select the polygons to paint." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5958 +#: flatcamGUI/FlatCAMGUI.py:6122 msgid "Film Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5963 +#: flatcamGUI/FlatCAMGUI.py:6127 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:5974 flatcamTools/ToolFilm.py:116 +#: flatcamGUI/FlatCAMGUI.py:6138 flatcamTools/ToolFilm.py:116 msgid "Film Type:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5976 flatcamTools/ToolFilm.py:118 +#: flatcamGUI/FlatCAMGUI.py:6140 flatcamTools/ToolFilm.py:118 msgid "" "Generate a Positive black film or a Negative film.\n" "Positive means that it will print the features\n" @@ -6644,11 +6741,11 @@ msgid "" "The Film format is SVG." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5987 flatcamTools/ToolFilm.py:130 +#: flatcamGUI/FlatCAMGUI.py:6151 flatcamTools/ToolFilm.py:130 msgid "Border:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5989 flatcamTools/ToolFilm.py:132 +#: flatcamGUI/FlatCAMGUI.py:6153 flatcamTools/ToolFilm.py:132 msgid "" "Specify a border around the object.\n" "Only for negative film.\n" @@ -6660,11 +6757,11 @@ msgid "" "surroundings if not for this border." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6002 flatcamTools/ToolFilm.py:144 +#: flatcamGUI/FlatCAMGUI.py:6166 flatcamTools/ToolFilm.py:144 msgid "Scale Stroke:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6004 flatcamTools/ToolFilm.py:146 +#: flatcamGUI/FlatCAMGUI.py:6168 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 " @@ -6672,69 +6769,69 @@ msgid "" "therefore the fine features may be more affected by this parameter." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6019 +#: flatcamGUI/FlatCAMGUI.py:6183 msgid "Panelize Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6024 +#: flatcamGUI/FlatCAMGUI.py:6188 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:6035 flatcamTools/ToolPanelize.py:147 +#: flatcamGUI/FlatCAMGUI.py:6199 flatcamTools/ToolPanelize.py:147 msgid "Spacing cols:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6037 flatcamTools/ToolPanelize.py:149 +#: flatcamGUI/FlatCAMGUI.py:6201 flatcamTools/ToolPanelize.py:149 msgid "" "Spacing between columns of the desired panel.\n" "In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6045 flatcamTools/ToolPanelize.py:156 +#: flatcamGUI/FlatCAMGUI.py:6209 flatcamTools/ToolPanelize.py:156 msgid "Spacing rows:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6047 flatcamTools/ToolPanelize.py:158 +#: flatcamGUI/FlatCAMGUI.py:6211 flatcamTools/ToolPanelize.py:158 msgid "" "Spacing between rows of the desired panel.\n" "In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6055 flatcamTools/ToolPanelize.py:165 +#: flatcamGUI/FlatCAMGUI.py:6219 flatcamTools/ToolPanelize.py:165 msgid "Columns:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:167 +#: flatcamGUI/FlatCAMGUI.py:6221 flatcamTools/ToolPanelize.py:167 msgid "Number of columns of the desired panel" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6064 flatcamTools/ToolPanelize.py:173 +#: flatcamGUI/FlatCAMGUI.py:6228 flatcamTools/ToolPanelize.py:173 msgid "Rows:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6066 flatcamTools/ToolPanelize.py:175 +#: flatcamGUI/FlatCAMGUI.py:6230 flatcamTools/ToolPanelize.py:175 msgid "Number of rows of the desired panel" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6074 +#: flatcamGUI/FlatCAMGUI.py:6238 msgid "Panel Type:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6076 +#: flatcamGUI/FlatCAMGUI.py:6240 msgid "" "Choose the type of object for the panel object:\n" "- Gerber\n" "- Geometry" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6085 +#: flatcamGUI/FlatCAMGUI.py:6249 msgid "Constrain within:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6087 flatcamTools/ToolPanelize.py:195 +#: flatcamGUI/FlatCAMGUI.py:6251 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" @@ -6743,171 +6840,171 @@ msgid "" "they fit completely within selected area." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6096 flatcamTools/ToolPanelize.py:204 +#: flatcamGUI/FlatCAMGUI.py:6260 flatcamTools/ToolPanelize.py:204 msgid "Width (DX):" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:206 +#: flatcamGUI/FlatCAMGUI.py:6262 flatcamTools/ToolPanelize.py:206 msgid "" "The width (DX) within which the panel must fit.\n" "In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6105 flatcamTools/ToolPanelize.py:212 +#: flatcamGUI/FlatCAMGUI.py:6269 flatcamTools/ToolPanelize.py:212 msgid "Height (DY):" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6107 flatcamTools/ToolPanelize.py:214 +#: flatcamGUI/FlatCAMGUI.py:6271 flatcamTools/ToolPanelize.py:214 msgid "" "The height (DY)within which the panel must fit.\n" "In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6121 +#: flatcamGUI/FlatCAMGUI.py:6285 msgid "Calculators Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6124 +#: flatcamGUI/FlatCAMGUI.py:6288 msgid "V-Shape Tool Calculator:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6126 +#: flatcamGUI/FlatCAMGUI.py:6290 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:6137 flatcamTools/ToolCalculators.py:94 +#: flatcamGUI/FlatCAMGUI.py:6301 flatcamTools/ToolCalculators.py:94 msgid "Tip Diameter:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6139 +#: flatcamGUI/FlatCAMGUI.py:6303 msgid "" "This is the tool tip diameter.\n" "It is specified by manufacturer." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6147 +#: flatcamGUI/FlatCAMGUI.py:6311 msgid "Tip angle:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6149 +#: flatcamGUI/FlatCAMGUI.py:6313 msgid "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6159 +#: flatcamGUI/FlatCAMGUI.py:6323 msgid "" "This is depth to cut into material.\n" "In the CNCJob object it is the CutZ parameter." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6166 +#: flatcamGUI/FlatCAMGUI.py:6330 msgid "ElectroPlating Calculator:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6168 flatcamTools/ToolCalculators.py:152 +#: flatcamGUI/FlatCAMGUI.py:6332 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:6178 flatcamTools/ToolCalculators.py:161 +#: flatcamGUI/FlatCAMGUI.py:6342 flatcamTools/ToolCalculators.py:161 msgid "Board Length:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6180 flatcamTools/ToolCalculators.py:165 +#: flatcamGUI/FlatCAMGUI.py:6344 flatcamTools/ToolCalculators.py:165 msgid "This is the board length. In centimeters." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6186 flatcamTools/ToolCalculators.py:167 +#: flatcamGUI/FlatCAMGUI.py:6350 flatcamTools/ToolCalculators.py:167 msgid "Board Width:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6188 flatcamTools/ToolCalculators.py:171 +#: flatcamGUI/FlatCAMGUI.py:6352 flatcamTools/ToolCalculators.py:171 msgid "This is the board width.In centimeters." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6193 flatcamTools/ToolCalculators.py:173 +#: flatcamGUI/FlatCAMGUI.py:6357 flatcamTools/ToolCalculators.py:173 msgid "Current Density:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6196 flatcamTools/ToolCalculators.py:177 +#: flatcamGUI/FlatCAMGUI.py:6360 flatcamTools/ToolCalculators.py:177 msgid "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6202 flatcamTools/ToolCalculators.py:181 +#: flatcamGUI/FlatCAMGUI.py:6366 flatcamTools/ToolCalculators.py:181 msgid "Copper Growth:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6205 flatcamTools/ToolCalculators.py:185 +#: flatcamGUI/FlatCAMGUI.py:6369 flatcamTools/ToolCalculators.py:185 msgid "" "How thick the copper growth is intended to be.\n" "In microns." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6218 +#: flatcamGUI/FlatCAMGUI.py:6382 msgid "Transform Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6223 +#: flatcamGUI/FlatCAMGUI.py:6387 msgid "" "Various transformations that can be applied\n" "on a FlatCAM object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6233 +#: flatcamGUI/FlatCAMGUI.py:6397 msgid "Rotate Angle:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6235 +#: flatcamGUI/FlatCAMGUI.py:6399 msgid "Angle for rotation. In degrees." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6242 +#: flatcamGUI/FlatCAMGUI.py:6406 msgid "Skew_X angle:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6244 +#: flatcamGUI/FlatCAMGUI.py:6408 msgid "Angle for Skew/Shear on X axis. In degrees." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6251 +#: flatcamGUI/FlatCAMGUI.py:6415 msgid "Skew_Y angle:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6253 +#: flatcamGUI/FlatCAMGUI.py:6417 msgid "Angle for Skew/Shear on Y axis. In degrees." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6260 +#: flatcamGUI/FlatCAMGUI.py:6424 msgid "Scale_X factor:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6262 +#: flatcamGUI/FlatCAMGUI.py:6426 msgid "Factor for scaling on X axis." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6269 +#: flatcamGUI/FlatCAMGUI.py:6433 msgid "Scale_Y factor:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6271 +#: flatcamGUI/FlatCAMGUI.py:6435 msgid "Factor for scaling on Y axis." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6279 +#: flatcamGUI/FlatCAMGUI.py:6443 msgid "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6287 flatcamTools/ToolTransform.py:210 +#: flatcamGUI/FlatCAMGUI.py:6451 flatcamTools/ToolTransform.py:210 msgid "" "Scale the selected object(s)\n" "using the origin reference when checked,\n" @@ -6915,27 +7012,27 @@ msgid "" "of the selected objects when unchecked." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6296 +#: flatcamGUI/FlatCAMGUI.py:6460 msgid "Offset_X val:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6298 +#: flatcamGUI/FlatCAMGUI.py:6462 msgid "Distance to offset on X axis. In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6305 +#: flatcamGUI/FlatCAMGUI.py:6469 msgid "Offset_Y val:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6307 +#: flatcamGUI/FlatCAMGUI.py:6471 msgid "Distance to offset on Y axis. In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6313 +#: flatcamGUI/FlatCAMGUI.py:6477 msgid "Mirror Reference" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6315 flatcamTools/ToolTransform.py:314 +#: flatcamGUI/FlatCAMGUI.py:6479 flatcamTools/ToolTransform.py:314 msgid "" "Flip the selected object(s)\n" "around the point in Point Entry Field.\n" @@ -6948,174 +7045,174 @@ msgid "" "Point Entry field and click Flip on X(Y)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6326 +#: flatcamGUI/FlatCAMGUI.py:6490 msgid " Mirror Ref. Point:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6328 flatcamTools/ToolTransform.py:327 +#: flatcamGUI/FlatCAMGUI.py:6492 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:6345 +#: flatcamGUI/FlatCAMGUI.py:6509 msgid "SolderPaste Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6350 +#: flatcamGUI/FlatCAMGUI.py:6514 msgid "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6361 +#: flatcamGUI/FlatCAMGUI.py:6525 msgid "Diameters of nozzle tools, separated by ','" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6368 +#: flatcamGUI/FlatCAMGUI.py:6532 msgid "New Nozzle Dia:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6370 flatcamTools/ToolSolderPaste.py:103 +#: flatcamGUI/FlatCAMGUI.py:6534 flatcamTools/ToolSolderPaste.py:103 msgid "Diameter for the new Nozzle tool to add in the Tool Table" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6378 flatcamTools/ToolSolderPaste.py:166 +#: flatcamGUI/FlatCAMGUI.py:6542 flatcamTools/ToolSolderPaste.py:166 msgid "Z Dispense Start:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6380 flatcamTools/ToolSolderPaste.py:168 +#: flatcamGUI/FlatCAMGUI.py:6544 flatcamTools/ToolSolderPaste.py:168 msgid "The height (Z) when solder paste dispensing starts." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6387 flatcamTools/ToolSolderPaste.py:174 +#: flatcamGUI/FlatCAMGUI.py:6551 flatcamTools/ToolSolderPaste.py:174 msgid "Z Dispense:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6389 flatcamTools/ToolSolderPaste.py:176 +#: flatcamGUI/FlatCAMGUI.py:6553 flatcamTools/ToolSolderPaste.py:176 msgid "The height (Z) when doing solder paste dispensing." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6396 flatcamTools/ToolSolderPaste.py:183 +#: flatcamGUI/FlatCAMGUI.py:6560 flatcamTools/ToolSolderPaste.py:183 msgid "Z Dispense Stop:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6398 flatcamTools/ToolSolderPaste.py:185 +#: flatcamGUI/FlatCAMGUI.py:6562 flatcamTools/ToolSolderPaste.py:185 msgid "The height (Z) when solder paste dispensing stops." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6405 flatcamTools/ToolSolderPaste.py:191 +#: flatcamGUI/FlatCAMGUI.py:6569 flatcamTools/ToolSolderPaste.py:191 msgid "Z Travel:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6407 flatcamTools/ToolSolderPaste.py:193 +#: flatcamGUI/FlatCAMGUI.py:6571 flatcamTools/ToolSolderPaste.py:193 msgid "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6415 flatcamTools/ToolSolderPaste.py:200 +#: flatcamGUI/FlatCAMGUI.py:6579 flatcamTools/ToolSolderPaste.py:200 msgid "Z Toolchange:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6417 flatcamTools/ToolSolderPaste.py:202 +#: flatcamGUI/FlatCAMGUI.py:6581 flatcamTools/ToolSolderPaste.py:202 msgid "The height (Z) for tool (nozzle) change." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6424 flatcamTools/ToolSolderPaste.py:208 +#: flatcamGUI/FlatCAMGUI.py:6588 flatcamTools/ToolSolderPaste.py:208 msgid "XY Toolchange:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6426 flatcamTools/ToolSolderPaste.py:210 +#: flatcamGUI/FlatCAMGUI.py:6590 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:6434 flatcamTools/ToolSolderPaste.py:217 +#: flatcamGUI/FlatCAMGUI.py:6598 flatcamTools/ToolSolderPaste.py:217 msgid "Feedrate X-Y:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6436 flatcamTools/ToolSolderPaste.py:219 +#: flatcamGUI/FlatCAMGUI.py:6600 flatcamTools/ToolSolderPaste.py:219 msgid "Feedrate (speed) while moving on the X-Y plane." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6443 flatcamTools/ToolSolderPaste.py:225 +#: flatcamGUI/FlatCAMGUI.py:6607 flatcamTools/ToolSolderPaste.py:225 msgid "Feedrate Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6445 flatcamTools/ToolSolderPaste.py:227 +#: flatcamGUI/FlatCAMGUI.py:6609 flatcamTools/ToolSolderPaste.py:227 msgid "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6453 flatcamTools/ToolSolderPaste.py:234 +#: flatcamGUI/FlatCAMGUI.py:6617 flatcamTools/ToolSolderPaste.py:234 msgid "Feedrate Z Dispense:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6455 flatcamTools/ToolSolderPaste.py:236 +#: flatcamGUI/FlatCAMGUI.py:6619 msgid "" "Feedrate (speed) while moving up vertically\n" -" to Dispense position (on Z plane)." +"to Dispense position (on Z plane)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6463 flatcamTools/ToolSolderPaste.py:243 +#: flatcamGUI/FlatCAMGUI.py:6627 flatcamTools/ToolSolderPaste.py:243 msgid "Spindle Speed FWD:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6465 flatcamTools/ToolSolderPaste.py:245 +#: flatcamGUI/FlatCAMGUI.py:6629 flatcamTools/ToolSolderPaste.py:245 msgid "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6473 flatcamTools/ToolSolderPaste.py:252 +#: flatcamGUI/FlatCAMGUI.py:6637 flatcamTools/ToolSolderPaste.py:252 msgid "Dwell FWD:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:254 +#: flatcamGUI/FlatCAMGUI.py:6639 flatcamTools/ToolSolderPaste.py:254 msgid "Pause after solder dispensing." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6482 flatcamTools/ToolSolderPaste.py:260 +#: flatcamGUI/FlatCAMGUI.py:6646 flatcamTools/ToolSolderPaste.py:260 msgid "Spindle Speed REV:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6484 flatcamTools/ToolSolderPaste.py:262 +#: flatcamGUI/FlatCAMGUI.py:6648 flatcamTools/ToolSolderPaste.py:262 msgid "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6492 flatcamTools/ToolSolderPaste.py:269 +#: flatcamGUI/FlatCAMGUI.py:6656 flatcamTools/ToolSolderPaste.py:269 msgid "Dwell REV:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:271 +#: flatcamGUI/FlatCAMGUI.py:6658 flatcamTools/ToolSolderPaste.py:271 msgid "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6501 flatcamTools/ToolSolderPaste.py:277 +#: flatcamGUI/FlatCAMGUI.py:6665 flatcamTools/ToolSolderPaste.py:277 msgid "PostProcessors:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6503 flatcamTools/ToolSolderPaste.py:279 +#: flatcamGUI/FlatCAMGUI.py:6667 flatcamTools/ToolSolderPaste.py:279 msgid "Files that control the GCode generation." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6533 flatcamGUI/FlatCAMGUI.py:6539 +#: flatcamGUI/FlatCAMGUI.py:6697 flatcamGUI/FlatCAMGUI.py:6703 msgid "Idle." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6563 +#: flatcamGUI/FlatCAMGUI.py:6727 msgid "Application started ..." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6564 +#: flatcamGUI/FlatCAMGUI.py:6728 msgid "Hello!" msgstr "" @@ -7183,7 +7280,7 @@ msgid "Gerber Object" msgstr "" #: flatcamGUI/ObjectUI.py:182 flatcamGUI/ObjectUI.py:517 -#: flatcamGUI/ObjectUI.py:839 flatcamGUI/ObjectUI.py:1372 +#: flatcamGUI/ObjectUI.py:839 flatcamGUI/ObjectUI.py:1382 msgid "Name:" msgstr "" @@ -7520,11 +7617,11 @@ msgid "" "showed UI form entries named V-Tip Dia and V-Tip Angle." msgstr "" -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465 msgid "Dia" msgstr "" -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1465 msgid "TT" msgstr "" @@ -7754,21 +7851,25 @@ msgstr "" msgid "Plot kind:" msgstr "" -#: flatcamGUI/ObjectUI.py:1378 +#: flatcamGUI/ObjectUI.py:1369 +msgid "Display Annotation:" +msgstr "" + +#: flatcamGUI/ObjectUI.py:1388 msgid "Travelled dist.:" msgstr "" -#: flatcamGUI/ObjectUI.py:1381 flatcamGUI/ObjectUI.py:1388 +#: flatcamGUI/ObjectUI.py:1391 flatcamGUI/ObjectUI.py:1398 msgid "" "This is the total travelled distance on X-Y plane.\n" "In current units." msgstr "" -#: flatcamGUI/ObjectUI.py:1416 +#: flatcamGUI/ObjectUI.py:1429 msgid "CNC Tools Table" msgstr "" -#: flatcamGUI/ObjectUI.py:1419 +#: flatcamGUI/ObjectUI.py:1432 msgid "" "Tools in this CNCJob object used for cutting.\n" "The tool diameter is used for plotting on canvas.\n" @@ -7781,37 +7882,37 @@ msgid "" "ball(B), or V-Shaped(V)." msgstr "" -#: flatcamGUI/ObjectUI.py:1453 +#: flatcamGUI/ObjectUI.py:1466 msgid "P" msgstr "" -#: flatcamGUI/ObjectUI.py:1459 +#: flatcamGUI/ObjectUI.py:1472 msgid "Update Plot" msgstr "" -#: flatcamGUI/ObjectUI.py:1461 +#: flatcamGUI/ObjectUI.py:1474 msgid "Update the plot." msgstr "" -#: flatcamGUI/ObjectUI.py:1468 +#: flatcamGUI/ObjectUI.py:1481 msgid "Export CNC Code:" msgstr "" -#: flatcamGUI/ObjectUI.py:1476 +#: flatcamGUI/ObjectUI.py:1489 msgid "Prepend to CNC Code:" msgstr "" -#: flatcamGUI/ObjectUI.py:1479 +#: flatcamGUI/ObjectUI.py:1492 msgid "" "Type here any G-Code commands you would\n" "like to add to the beginning of the generated file." msgstr "" -#: flatcamGUI/ObjectUI.py:1489 +#: flatcamGUI/ObjectUI.py:1502 msgid "Append to CNC Code" msgstr "" -#: flatcamGUI/ObjectUI.py:1513 +#: flatcamGUI/ObjectUI.py:1526 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -7824,29 +7925,29 @@ msgid "" "having as template the 'Toolchange Custom' posprocessor file." msgstr "" -#: flatcamGUI/ObjectUI.py:1561 +#: flatcamGUI/ObjectUI.py:1574 msgid "z_cut = depth where to cut" msgstr "" -#: flatcamGUI/ObjectUI.py:1562 +#: flatcamGUI/ObjectUI.py:1575 msgid "z_move = height where to travel" msgstr "" -#: flatcamGUI/ObjectUI.py:1580 +#: flatcamGUI/ObjectUI.py:1593 msgid "View CNC Code" msgstr "" -#: flatcamGUI/ObjectUI.py:1583 +#: flatcamGUI/ObjectUI.py:1596 msgid "" "Opens TAB to view/modify/print G-Code\n" "file." msgstr "" -#: flatcamGUI/ObjectUI.py:1589 +#: flatcamGUI/ObjectUI.py:1602 msgid "Save CNC Code" msgstr "" -#: flatcamGUI/ObjectUI.py:1592 +#: flatcamGUI/ObjectUI.py:1605 msgid "" "Opens dialog to save G-Code\n" "file." @@ -9364,6 +9465,12 @@ msgid "" "Modify parameters." msgstr "" +#: flatcamTools/ToolSolderPaste.py:236 +msgid "" +"Feedrate (speed) while moving up vertically\n" +" to Dispense position (on Z plane)." +msgstr "" + #: flatcamTools/ToolSolderPaste.py:290 msgid "Generate GCode" msgstr "" From 0ee51140129e5f484161ca9ebd66e1d3128ad48a Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 5 Jun 2019 13:22:12 +0300 Subject: [PATCH 18/23] - some layout changes in Edit -> Preferences such that the German translation (longer words than English) to fit correctly --- README.md | 1 + flatcamGUI/FlatCAMGUI.py | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 2387152c..a8f753b3 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ CAD program, and create G-Code for Isolation routing. 5.06.2019 - updated translations +- some layout changes in Edit -> Preferences such that the German translation (longer words than English) to fit correctly 4.06.2019 diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index ca8e16ae..8efa022d 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -3122,7 +3122,7 @@ class GeneralPreferencesUI(QtWidgets.QWidget): self.setLayout(self.layout) self.general_app_group = GeneralAppPrefGroupUI() - self.general_app_group.setFixedWidth(250) + self.general_app_group.setFixedWidth(280) self.general_gui_group = GeneralGUIPrefGroupUI() self.general_gui_group.setFixedWidth(250) @@ -3177,13 +3177,13 @@ class ExcellonPreferencesUI(QtWidgets.QWidget): self.excellon_gen_group = ExcellonGenPrefGroupUI() self.excellon_gen_group.setFixedWidth(220) self.excellon_opt_group = ExcellonOptPrefGroupUI() - self.excellon_opt_group.setFixedWidth(250) + self.excellon_opt_group.setFixedWidth(290) self.excellon_exp_group = ExcellonExpPrefGroupUI() self.excellon_exp_group.setFixedWidth(250) self.excellon_adv_opt_group = ExcellonAdvOptPrefGroupUI() self.excellon_adv_opt_group.setFixedWidth(250) self.excellon_editor_group = ExcellonEditorPrefGroupUI() - self.excellon_editor_group.setFixedWidth(220) + self.excellon_editor_group.setFixedWidth(260) self.vlay = QtWidgets.QVBoxLayout() self.vlay.addWidget(self.excellon_opt_group) @@ -3207,9 +3207,9 @@ class GeometryPreferencesUI(QtWidgets.QWidget): self.geometry_gen_group = GeometryGenPrefGroupUI() self.geometry_gen_group.setFixedWidth(220) self.geometry_opt_group = GeometryOptPrefGroupUI() - self.geometry_opt_group.setFixedWidth(250) + self.geometry_opt_group.setFixedWidth(300) self.geometry_adv_opt_group = GeometryAdvOptPrefGroupUI() - self.geometry_adv_opt_group.setFixedWidth(250) + self.geometry_adv_opt_group.setFixedWidth(270) self.geometry_editor_group = GeometryEditorPrefGroupUI() self.geometry_editor_group.setFixedWidth(250) @@ -3287,7 +3287,7 @@ class CNCJobPreferencesUI(QtWidgets.QWidget): self.setLayout(self.layout) self.cncjob_gen_group = CNCJobGenPrefGroupUI() - self.cncjob_gen_group.setFixedWidth(270) + self.cncjob_gen_group.setFixedWidth(320) self.cncjob_opt_group = CNCJobOptPrefGroupUI() self.cncjob_opt_group.setFixedWidth(260) self.cncjob_adv_opt_group = CNCJobAdvOptPrefGroupUI() From 2974389404da9da14a1f1d8b3e8d467aebececb1 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 5 Jun 2019 15:07:45 +0300 Subject: [PATCH 19/23] - after editing an parameter the focus is lost so the user knows that something happened --- README.md | 1 + flatcamGUI/GUIElements.py | 40 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/README.md b/README.md index a8f753b3..f86dac20 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ CAD program, and create G-Code for Isolation routing. - updated translations - some layout changes in Edit -> Preferences such that the German translation (longer words than English) to fit correctly +- after editing an parameter the focus is lost so the user knows that something happened 4.06.2019 diff --git a/flatcamGUI/GUIElements.py b/flatcamGUI/GUIElements.py index fcd8aa61..89a24ace 100644 --- a/flatcamGUI/GUIElements.py +++ b/flatcamGUI/GUIElements.py @@ -159,6 +159,10 @@ class LengthEntry(QtWidgets.QLineEdit): 'MM': 1.0} } self.readyToEdit = True + self.editingFinished.connect(self.on_edit_finished) + + def on_edit_finished(self): + self.clearFocus() def mousePressEvent(self, e, Parent=None): super(LengthEntry, self).mousePressEvent(e) # required to deselect on 2e click @@ -209,6 +213,10 @@ class FloatEntry(QtWidgets.QLineEdit): def __init__(self, parent=None): super(FloatEntry, self).__init__(parent) self.readyToEdit = True + self.editingFinished.connect(self.on_edit_finished) + + def on_edit_finished(self): + self.clearFocus() def mousePressEvent(self, e, Parent=None): super(FloatEntry, self).mousePressEvent(e) # required to deselect on 2e click @@ -256,6 +264,10 @@ class FloatEntry2(QtWidgets.QLineEdit): def __init__(self, parent=None): super(FloatEntry2, self).__init__(parent) self.readyToEdit = True + self.editingFinished.connect(self.on_edit_finished) + + def on_edit_finished(self): + self.clearFocus() def mousePressEvent(self, e, Parent=None): super(FloatEntry2, self).mousePressEvent(e) # required to deselect on 2e click @@ -295,6 +307,10 @@ class IntEntry(QtWidgets.QLineEdit): self.allow_empty = allow_empty self.empty_val = empty_val self.readyToEdit = True + self.editingFinished.connect(self.on_edit_finished) + + def on_edit_finished(self): + self.clearFocus() def mousePressEvent(self, e, Parent=None): super(IntEntry, self).mousePressEvent(e) # required to deselect on 2e click @@ -335,6 +351,10 @@ class FCEntry(QtWidgets.QLineEdit): def __init__(self, parent=None): super(FCEntry, self).__init__(parent) self.readyToEdit = True + self.editingFinished.connect(self.on_edit_finished) + + def on_edit_finished(self): + self.clearFocus() def mousePressEvent(self, e, Parent=None): super(FCEntry, self).mousePressEvent(e) # required to deselect on 2e click @@ -365,6 +385,10 @@ class FCEntry2(FCEntry): def __init__(self, parent=None): super(FCEntry2, 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): try: @@ -378,6 +402,10 @@ class EvalEntry(QtWidgets.QLineEdit): def __init__(self, parent=None): super(EvalEntry, self).__init__(parent) self.readyToEdit = True + self.editingFinished.connect(self.on_edit_finished) + + def on_edit_finished(self): + self.clearFocus() def mousePressEvent(self, e, Parent=None): super(EvalEntry, self).mousePressEvent(e) # required to deselect on 2e click @@ -420,6 +448,10 @@ class EvalEntry2(QtWidgets.QLineEdit): def __init__(self, parent=None): super(EvalEntry2, self).__init__(parent) self.readyToEdit = True + self.editingFinished.connect(self.on_edit_finished) + + def on_edit_finished(self): + self.clearFocus() def mousePressEvent(self, e, Parent=None): super(EvalEntry2, self).mousePressEvent(e) # required to deselect on 2e click @@ -1462,6 +1494,10 @@ class FCSpinner(QtWidgets.QSpinBox): def __init__(self, parent=None): super(FCSpinner, self).__init__(parent) self.readyToEdit = True + self.editingFinished.connect(self.on_edit_finished) + + def on_edit_finished(self): + self.clearFocus() def mousePressEvent(self, e, parent=None): super(FCSpinner, self).mousePressEvent(e) # required to deselect on 2e click @@ -1497,6 +1533,10 @@ class FCDoubleSpinner(QtWidgets.QDoubleSpinBox): def __init__(self, parent=None): super(FCDoubleSpinner, self).__init__(parent) self.readyToEdit = True + self.editingFinished.connect(self.on_edit_finished) + + def on_edit_finished(self): + self.clearFocus() def mousePressEvent(self, e, parent=None): super(FCDoubleSpinner, self).mousePressEvent(e) # required to deselect on 2e click From a5ffe475dd35f722d288f29194895e4b26c12a4e Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 7 Jun 2019 23:14:00 +0300 Subject: [PATCH 20/23] - fixed bug in ToolCutout where creating a cutout object geometry from another external isolation geometry failed - fixed bug in cncjob TclCommand where the gcode could not be correctly generated due of missing bounds params in obj.options dict - fixed a hardcoded tolerance in FlatCAMGeometry.generatecncjob() and in FlatCAMGeometry.mtool_gen_cncjob() to use the parameter from Preferences --- FlatCAMObj.py | 16 +++++++++++----- README.md | 6 ++++++ camlib.py | 5 +---- flatcamTools/ToolCutOut.py | 8 +++++++- tclCommands/TclCommandGeoCutout.py | 14 ++++++++++++++ 5 files changed, 39 insertions(+), 10 deletions(-) diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 0c4e0815..40b419f3 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -4448,8 +4448,9 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): app_obj.progress.emit(40) + tol = float(self.app.defaults['global_tolerance']) res = job_obj.generate_from_geometry_2( - self, tooldia=tooldia_val, offset=tool_offset, tolerance=0.0005, + self, tooldia=tooldia_val, offset=tool_offset, tolerance=tol, z_cut=z_cut, z_move=z_move, feedrate=feedrate, feedrate_z=feedrate_z, feedrate_rapid=feedrate_rapid, spindlespeed=spindlespeed, spindledir=spindledir, dwell=dwell, dwelltime=dwelltime, @@ -4681,9 +4682,10 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): spindledir = self.app.defaults['geometry_spindledir'] tool_solid_geometry = self.tools[current_uid]['solid_geometry'] + tol = float(self.app.defaults['global_tolerance']) res = job_obj.generate_from_multitool_geometry( tool_solid_geometry, tooldia=tooldia_val, offset=tool_offset, - tolerance=0.0005, z_cut=z_cut, z_move=z_move, + tolerance=tol, z_cut=z_cut, z_move=z_move, feedrate=feedrate, feedrate_z=feedrate_z, feedrate_rapid=feedrate_rapid, spindlespeed=spindlespeed, spindledir=spindledir, dwell=dwell, dwelltime=dwelltime, multidepth=multidepth, depthpercut=depthpercut, @@ -4740,7 +4742,6 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): else: self.app.new_object("cncjob", outname, job_init_multi_geometry) - def generatecncjob(self, outname=None, tooldia=None, offset=None, z_cut=None, z_move=None, @@ -4849,8 +4850,13 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): 'or self.options["feedrate_probe"]' )) - # TODO: The tolerance should not be hard coded. Just for testing. - job_obj.generate_from_geometry_2(self, tooldia=tooldia, offset=offset, tolerance=0.0005, + job_obj.options['xmin'] = self.options['xmin'] + job_obj.options['ymin'] = self.options['ymin'] + job_obj.options['xmax'] = self.options['xmax'] + job_obj.options['ymax'] = self.options['ymax'] + + tol = float(self.app.defaults['global_tolerance']) + job_obj.generate_from_geometry_2(self, tooldia=tooldia, offset=offset, tolerance=tol, z_cut=z_cut, z_move=z_move, feedrate=feedrate, feedrate_z=feedrate_z, feedrate_rapid=feedrate_rapid, spindlespeed=spindlespeed, dwell=dwell, dwelltime=dwelltime, diff --git a/README.md b/README.md index f86dac20..744696bb 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,12 @@ CAD program, and create G-Code for Isolation routing. ================================================= +7.06.2019 + +- fixed bug in ToolCutout where creating a cutout object geometry from another external isolation geometry failed +- fixed bug in cncjob TclCommand where the gcode could not be correctly generated due of missing bounds params in obj.options dict +- fixed a hardcoded tolerance in FlatCAMGeometry.generatecncjob() and in FlatCAMGeometry.mtool_gen_cncjob() to use the parameter from Preferences + 5.06.2019 - updated translations diff --git a/camlib.py b/camlib.py index 47c3cb17..051f758f 100644 --- a/camlib.py +++ b/camlib.py @@ -4969,7 +4969,6 @@ class CNCjob(Geometry): self.pp_solderpaste_name = None - # Controls if the move from Z_Toolchange to Z_Move is done fast with G0 or normally with G1 self.f_plunge = None @@ -5817,7 +5816,7 @@ class CNCjob(Geometry): if offset != 0.0: offset_for_use = offset - if offset <0: + if offset < 0: a, b, c, d = bounds_rec(geometry.solid_geometry) # if the offset is less than half of the total length or less than half of the total width of the # solid geometry it's obvious we can't do the offset @@ -5929,8 +5928,6 @@ class CNCjob(Geometry): if shape is not None: # TODO: This shouldn't have happened. storage.insert(shape) - # self.input_geometry_bounds = geometry.bounds() - if not append: self.gcode = "" diff --git a/flatcamTools/ToolCutOut.py b/flatcamTools/ToolCutOut.py index 20167ebd..05c4d6be 100644 --- a/flatcamTools/ToolCutOut.py +++ b/flatcamTools/ToolCutOut.py @@ -424,7 +424,8 @@ class CutOut(FlatCAMTool): geo = (geo.buffer(margin + abs(dia / 2))).exterior # Get min and max data for each object as we just cut rectangles across X or Y - xmin, ymin, xmax, ymax = geo.bounds + xmin, ymin, xmax, ymax = recursive_bounds(geo) + px = 0.5 * (xmin + xmax) + margin py = 0.5 * (ymin + ymax) + margin lenx = (xmax - xmin) + (margin * 2) @@ -475,6 +476,11 @@ class CutOut(FlatCAMTool): solid_geo.append(geo) geo_obj.solid_geometry = deepcopy(solid_geo) + xmin, ymin, xmax, ymax = recursive_bounds(geo_obj.solid_geometry) + geo_obj.options['xmin'] = xmin + geo_obj.options['ymin'] = ymin + geo_obj.options['xmax'] = xmax + geo_obj.options['ymax'] = ymax outname = cutout_obj.options["name"] + "_cutout" self.app.new_object('geometry', outname, geo_init) diff --git a/tclCommands/TclCommandGeoCutout.py b/tclCommands/TclCommandGeoCutout.py index 211af47e..fb51c048 100644 --- a/tclCommands/TclCommandGeoCutout.py +++ b/tclCommands/TclCommandGeoCutout.py @@ -165,6 +165,11 @@ class TclCommandGeoCutout(TclCommandSignaled): # Get min and max data for each object as we just cut rectangles across X or Y xmin, ymin, xmax, ymax = cutout_obj.bounds() + cutout_obj.options['xmin'] = xmin + cutout_obj.options['ymin'] = ymin + cutout_obj.options['xmax'] = xmax + cutout_obj.options['ymax'] = ymax + px = 0.5 * (xmin + xmax) + margin py = 0.5 * (ymin + ymax) + margin lenghtx = (xmax - xmin) + (margin * 2) @@ -260,6 +265,11 @@ class TclCommandGeoCutout(TclCommandSignaled): px + gapsize, ymax + gapsize) geo_obj.solid_geometry = deepcopy(geo) + geo_obj.options['xmin'] = cutout_obj.options['xmin'] + geo_obj.options['ymin'] = cutout_obj.options['ymin'] + geo_obj.options['xmax'] = cutout_obj.options['xmax'] + geo_obj.options['ymax'] = cutout_obj.options['ymax'] + app_obj.disable_plots(objects=[cutout_obj]) app_obj.inform.emit("[success] Any-form Cutout operation finished.") @@ -317,6 +327,10 @@ class TclCommandGeoCutout(TclCommandSignaled): px + gapsize, ymax + gapsize) geo_obj.solid_geometry = deepcopy(geo) + geo_obj.options['xmin'] = cutout_obj.options['xmin'] + geo_obj.options['ymin'] = cutout_obj.options['ymin'] + geo_obj.options['xmax'] = cutout_obj.options['xmax'] + geo_obj.options['ymax'] = cutout_obj.options['ymax'] app_obj.inform.emit("[success] Any-form Cutout operation finished.") outname = cutout_obj.options["name"] + "_cutout" From 3fa661f8d18820a7d15992fe3f7e7eac0b0d8683 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 8 Jun 2019 00:08:05 +0300 Subject: [PATCH 21/23] - fixed bug in ToolCutout where creating a cutout object geometry from another external isolation geometry failed - fixed bug in cncjob TclCommand where the gcode could not be correctly generated due of missing bounds params in obj.options dict - fixed a hardcoded tolerance in FlatCAMGeometry.generatecncjob() and in FlatCAMGeometry.mtool_gen_cncjob() to use the parameter from Preferences --- README.md | 2 + locale/de/LC_MESSAGES/strings.mo | Bin 304789 -> 304789 bytes locale/de/LC_MESSAGES/strings.po | 130 ++++++++++++------------- locale/en/LC_MESSAGES/strings.mo | Bin 284173 -> 284173 bytes locale/en/LC_MESSAGES/strings.po | 158 +++++++++++++------------------ locale/ro/LC_MESSAGES/strings.mo | Bin 303082 -> 303082 bytes locale/ro/LC_MESSAGES/strings.po | 130 ++++++++++++------------- locale_template/strings.pot | 128 ++++++++++++------------- 8 files changed, 261 insertions(+), 287 deletions(-) diff --git a/README.md b/README.md index 744696bb..539ac0db 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ CAD program, and create G-Code for Isolation routing. - fixed bug in ToolCutout where creating a cutout object geometry from another external isolation geometry failed - fixed bug in cncjob TclCommand where the gcode could not be correctly generated due of missing bounds params in obj.options dict - fixed a hardcoded tolerance in FlatCAMGeometry.generatecncjob() and in FlatCAMGeometry.mtool_gen_cncjob() to use the parameter from Preferences +- updated translations + 5.06.2019 diff --git a/locale/de/LC_MESSAGES/strings.mo b/locale/de/LC_MESSAGES/strings.mo index e46311f1be8da3c4b1725197e8e7f3a5428fdcb5..4fa01419738ad77c859ed822fd7a8195dde07d8d 100644 GIT binary patch delta 47 xcmbPwR%q&3p@tU5Elj3mY~~6^##V;Yt;?8{*dc7w_LMRvAZFg4QpRFv003u14hR4M delta 47 zcmbPwR%q&3p@tU5Elj3mY^Dl^MpmZNt;?8{*nw%s" msgstr "[ERROR]App.on_view_source() -->%s" -#: FlatCAMApp.py:6562 FlatCAMApp.py:7704 FlatCAMObj.py:5581 +#: FlatCAMApp.py:6562 FlatCAMApp.py:7704 FlatCAMObj.py:5587 msgid "Code Editor" msgstr "Code-Editor" @@ -1253,11 +1253,11 @@ msgstr "" msgid "[success] Name changed from {old} to {new}" msgstr "[success] Name geändert von {old} zu {new}" -#: FlatCAMObj.py:546 FlatCAMObj.py:2031 FlatCAMObj.py:3311 FlatCAMObj.py:5478 +#: FlatCAMObj.py:546 FlatCAMObj.py:2031 FlatCAMObj.py:3311 FlatCAMObj.py:5484 msgid "Basic" msgstr "Basic" -#: FlatCAMObj.py:558 FlatCAMObj.py:2047 FlatCAMObj.py:3333 FlatCAMObj.py:5484 +#: FlatCAMObj.py:558 FlatCAMObj.py:2047 FlatCAMObj.py:3333 FlatCAMObj.py:5490 msgid "Advanced" msgstr "Erweitert" @@ -1279,8 +1279,8 @@ msgid "Total Slots" msgstr "Schlitz insgesamt" #: FlatCAMObj.py:2103 FlatCAMObj.py:3384 FlatCAMObj.py:3682 FlatCAMObj.py:3869 -#: FlatCAMObj.py:3882 FlatCAMObj.py:3999 FlatCAMObj.py:4416 FlatCAMObj.py:4653 -#: FlatCAMObj.py:5061 flatcamEditors/FlatCAMExcEditor.py:1474 +#: 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 @@ -1340,7 +1340,7 @@ msgstr "" "[ERROR_NOTCL] Das Fräswerkzeug für SCHLITZ ist größer als die Lochgröße. " "Abgebrochen." -#: FlatCAMObj.py:2602 FlatCAMObj.py:4304 FlatCAMObj.py:4519 FlatCAMObj.py:4836 +#: FlatCAMObj.py:2602 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\"]" @@ -1348,7 +1348,7 @@ msgstr "" "[ERROR_NOTCL] Falsches Wertformat für self.defaults [\"z_pdepth\"] oder self." "options [\"z_pdepth\"]" -#: FlatCAMObj.py:2614 FlatCAMObj.py:4316 FlatCAMObj.py:4531 FlatCAMObj.py:4848 +#: FlatCAMObj.py:2614 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\"]" @@ -1356,12 +1356,12 @@ msgstr "" "[ERROR_NOTCL] Falsches Wertformat für self.defaults [\"feedrate_probe\"] " "oder self.options [\"feedrate_probe\"]" -#: FlatCAMObj.py:2646 FlatCAMObj.py:4723 FlatCAMObj.py:4728 FlatCAMObj.py:4874 +#: FlatCAMObj.py:2646 FlatCAMObj.py:4725 FlatCAMObj.py:4730 FlatCAMObj.py:4880 msgid "Generating CNC Code" msgstr "CNC-Code generieren" -#: FlatCAMObj.py:2672 FlatCAMObj.py:5020 camlib.py:5152 camlib.py:5611 -#: camlib.py:5874 +#: FlatCAMObj.py:2672 FlatCAMObj.py:5026 camlib.py:5151 camlib.py:5610 +#: camlib.py:5873 msgid "" "[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " "format (x, y) \n" @@ -1451,7 +1451,7 @@ msgstr "" msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" msgstr "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" -#: FlatCAMObj.py:4425 FlatCAMObj.py:4662 +#: 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." @@ -1460,22 +1460,22 @@ msgstr "" "jedoch kein Wert angegeben.\n" "Fügen Sie einen Werkzeugversatz hinzu oder ändern Sie den Versatztyp." -#: FlatCAMObj.py:4543 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] Cancelled. Empty file, it has no geometry..." -#: FlatCAMObj.py:4907 FlatCAMObj.py:4917 camlib.py:3335 camlib.py:3344 +#: FlatCAMObj.py:4913 FlatCAMObj.py:4923 camlib.py:3335 camlib.py:3344 msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float." msgstr "" "[ERROR_NOTCL] Der Skalierungsfaktor muss eine Zahl sein: Ganzzahl oder " "Fließkommazahl." -#: FlatCAMObj.py:4955 +#: FlatCAMObj.py:4961 msgid "[success] Geometry Scale done." msgstr "[success] Geometrie Skalierung fertig." -#: FlatCAMObj.py:4972 camlib.py:3414 +#: FlatCAMObj.py:4978 camlib.py:3414 msgid "" "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " "one value in the Offset field." @@ -1483,29 +1483,29 @@ msgstr "" "[ERROR_NOTCL] Ein (x, y) Wertepaar wird benötigt. Wahrscheinlich haben Sie " "im Feld Offset nur einen Wert eingegeben." -#: FlatCAMObj.py:4992 +#: FlatCAMObj.py:4998 msgid "[success] Geometry Offset done." msgstr "[success] Geometrie Offset fertig." -#: FlatCAMObj.py:5546 FlatCAMObj.py:5551 flatcamTools/ToolSolderPaste.py:1361 +#: FlatCAMObj.py:5552 FlatCAMObj.py:5557 flatcamTools/ToolSolderPaste.py:1361 msgid "Export Machine Code ..." msgstr "Maschinencode exportieren ..." -#: FlatCAMObj.py:5557 flatcamTools/ToolSolderPaste.py:1364 +#: FlatCAMObj.py:5563 flatcamTools/ToolSolderPaste.py:1364 msgid "[WARNING_NOTCL] Export Machine Code cancelled ..." msgstr "[WARNING_NOTCL] Export Machine Code cancelled ..." -#: FlatCAMObj.py:5570 +#: FlatCAMObj.py:5576 #, python-format msgid "[success] Machine Code file saved to: %s" msgstr "[success] Maschinencode-Datei gespeichert in: %s" -#: FlatCAMObj.py:5592 +#: FlatCAMObj.py:5598 #, python-format msgid "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" msgstr "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" -#: FlatCAMObj.py:5709 +#: FlatCAMObj.py:5715 #, python-format msgid "" "[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " @@ -1514,11 +1514,11 @@ msgstr "" "[WARNING_NOTCL] Dieses CNC-Auftrag Objekt kann nicht verarbeitet werden, da " "es sich um ein %s CNC-Auftrag Objekt handelt." -#: FlatCAMObj.py:5762 +#: FlatCAMObj.py:5768 msgid "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21" msgstr "[ERROR_NOTCL] G-Code hat keinen Einheitencode: entweder G20 oder G21" -#: FlatCAMObj.py:5775 +#: FlatCAMObj.py:5781 msgid "" "[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " "empty." @@ -1526,17 +1526,17 @@ msgstr "" "[ERROR_NOTCL] Abgebrochen. Der benutzerdefinierte Code zum Ändern des " "Werkzeugs ist aktiviert, aber er ist leer." -#: FlatCAMObj.py:5782 +#: FlatCAMObj.py:5788 msgid "[success] Toolchange G-code was replaced by a custom code." msgstr "" "[success] Der Werkzeugwechsel-G-Code wurde durch einen benutzerdefinierten " "Code ersetzt." -#: FlatCAMObj.py:5797 flatcamTools/ToolSolderPaste.py:1390 +#: FlatCAMObj.py:5803 flatcamTools/ToolSolderPaste.py:1390 msgid "[WARNING_NOTCL] No such file or directory" msgstr "[WARNING_NOTCL] Keine solche Datei oder Ordner" -#: FlatCAMObj.py:5817 FlatCAMObj.py:5829 +#: FlatCAMObj.py:5823 FlatCAMObj.py:5835 msgid "" "[WARNING_NOTCL] The used postprocessor file has to have in it's name: " "'toolchange_custom'" @@ -1544,7 +1544,7 @@ msgstr "" "[WARNING_NOTCL] Die verwendete Postprozessor-Datei muss im Namen enthalten " "sein: 'toolchange_custom'" -#: FlatCAMObj.py:5835 +#: FlatCAMObj.py:5841 msgid "[ERROR] There is no postprocessor file." msgstr "[ERROR] Es gibt keine Postprozessor-Datei." @@ -1677,12 +1677,12 @@ msgstr "" "da kein Werkzeug zugeordnet wurde.\n" "Überprüfen Sie den resultierenden GCode." -#: camlib.py:5061 +#: camlib.py:5060 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "[ERROR] Es gibt keinen solchen Parameter: %s" -#: camlib.py:5131 +#: camlib.py:5130 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1697,7 +1697,7 @@ msgstr "" "einen negativen Wert. \n" "Überprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:5138 camlib.py:5634 camlib.py:5897 +#: camlib.py:5137 camlib.py:5633 camlib.py:5896 #, python-format msgid "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" @@ -1705,15 +1705,15 @@ msgstr "" "[WARNING] Der Parameter Cut Z ist Null. Es wird kein Schnitt ausgeführt, da " "die %s Datei übersprungen wird" -#: camlib.py:5367 camlib.py:5464 camlib.py:5522 +#: camlib.py:5366 camlib.py:5463 camlib.py:5521 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "[ERROR_NOTCL] Die geladene Excellon-Datei hat keine Bohrer ..." -#: camlib.py:5469 +#: camlib.py:5468 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "[ERROR_NOTCL] Falscher Optimierungstyp ausgewählt." -#: camlib.py:5622 camlib.py:5885 +#: camlib.py:5621 camlib.py:5884 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." @@ -1721,7 +1721,7 @@ msgstr "" "[ERROR_NOTCL] Der Parameter Cut_Z ist None oder Null. Höchstwahrscheinlich " "eine schlechte Kombination anderer Parameter." -#: camlib.py:5627 camlib.py:5890 +#: camlib.py:5626 camlib.py:5889 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1736,11 +1736,11 @@ msgstr "" "einen negativen Wert. \n" "Überprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:5639 camlib.py:5902 +#: camlib.py:5638 camlib.py:5901 msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." msgstr "[ERROR_NOTCL] Der Parameter für den Travel Z ist Kein oder Null." -#: camlib.py:5643 camlib.py:5906 +#: camlib.py:5642 camlib.py:5905 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1754,7 +1754,7 @@ msgstr "" "einen Tippfehler handelt, konvertiert die App den Wert in einen positiven " "Wert. Überprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:5650 camlib.py:5913 +#: camlib.py:5649 camlib.py:5912 #, python-format msgid "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" @@ -1762,12 +1762,12 @@ msgstr "" "[WARNING] Der Parameter Z-Weg ist Null. Dies ist gefährlich, da die %s Datei " "übersprungen wird" -#: camlib.py:5780 +#: camlib.py:5779 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "[ERROR] Eine Geometrie erwartet,%s erhalten" -#: camlib.py:5786 +#: camlib.py:5785 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." @@ -1775,7 +1775,7 @@ msgstr "" "[ERROR_NOTCL] Der Versuch, einen CNC-Auftrag aus einem Geometrieobjekt ohne " "solid_geometry zu generieren." -#: camlib.py:5825 +#: camlib.py:5824 msgid "" "[ERROR_NOTCL] The Tool Offset value is too negative to use for the " "current_geometry.\n" @@ -1785,7 +1785,7 @@ msgstr "" "current_geometry zu verwenden.\n" "Erhöhen Sie den Wert (im Modul) und versuchen Sie es erneut." -#: camlib.py:6039 +#: camlib.py:6036 msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." msgstr "" "[ERROR_NOTCL] In der SolderPaste-Geometrie sind keine Werkzeugdaten " @@ -2337,8 +2337,8 @@ msgid "[WARNING_NOTCL] Paint cancelled. No shape selected." msgstr "[WARNING_NOTCL] Farbe abgebrochen. Keine Form ausgewählt" #: flatcamEditors/FlatCAMGeoEditor.py:574 flatcamTools/ToolCutOut.py:355 -#: flatcamTools/ToolCutOut.py:512 flatcamTools/ToolCutOut.py:651 -#: flatcamTools/ToolCutOut.py:756 flatcamTools/ToolDblSided.py:363 +#: flatcamTools/ToolCutOut.py:518 flatcamTools/ToolCutOut.py:657 +#: flatcamTools/ToolCutOut.py:762 flatcamTools/ToolDblSided.py:363 msgid "" "[WARNING_NOTCL] Tool diameter value is missing or wrong format. Add it and " "retry." @@ -10156,7 +10156,7 @@ msgstr "" "Der LMB-Klick muss am Umfang von erfolgen\n" "das Geometrieobjekt, das als Ausschnittsgeometrie verwendet wird." -#: flatcamTools/ToolCutOut.py:341 flatcamTools/ToolCutOut.py:499 +#: flatcamTools/ToolCutOut.py:341 flatcamTools/ToolCutOut.py:505 #: flatcamTools/ToolNonCopperClear.py:666 flatcamTools/ToolPaint.py:764 #: flatcamTools/ToolPanelize.py:352 flatcamTools/ToolPanelize.py:366 #: flatcamTools/ToolSub.py:237 flatcamTools/ToolSub.py:249 @@ -10181,29 +10181,29 @@ msgstr "" "[WARNING_NOTCL] Werkzeugdurchmesser ist Nullwert. Ändern Sie es in eine " "positive reelle Zahl." -#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:527 -#: flatcamTools/ToolCutOut.py:771 +#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:533 +#: flatcamTools/ToolCutOut.py:777 msgid "" "[WARNING_NOTCL] Margin value is missing or wrong format. Add it and retry." msgstr "" "[WARNING_NOTCL] Margin-Wert fehlt oder falsches Format. Fügen Sie es hinzu " "und versuchen Sie es erneut." -#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:538 -#: flatcamTools/ToolCutOut.py:666 +#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:544 +#: flatcamTools/ToolCutOut.py:672 msgid "" "[WARNING_NOTCL] Gap size value is missing or wrong format. Add it and retry." msgstr "" "[WARNING_NOTCL] Lückengrößenwert fehlt oder falsches Format. Fügen Sie es " "hinzu und versuchen Sie es erneut." -#: flatcamTools/ToolCutOut.py:388 flatcamTools/ToolCutOut.py:545 +#: flatcamTools/ToolCutOut.py:388 flatcamTools/ToolCutOut.py:551 msgid "[WARNING_NOTCL] Number of gaps value is missing. Add it and retry." msgstr "" "[WARNING_NOTCL] Anzahl der Lücken fehlt. Fügen Sie es hinzu und versuchen " "Sie es erneut." -#: flatcamTools/ToolCutOut.py:392 flatcamTools/ToolCutOut.py:549 +#: flatcamTools/ToolCutOut.py:392 flatcamTools/ToolCutOut.py:555 msgid "" "[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 " "or 8. Fill in a correct value and retry. " @@ -10212,7 +10212,7 @@ msgstr "" "'lr', 'tb', '2lr', '2tb', 4 oder 8. Geben Sie einen korrekten Wert ein und " "versuchen Sie es erneut." -#: flatcamTools/ToolCutOut.py:397 flatcamTools/ToolCutOut.py:554 +#: flatcamTools/ToolCutOut.py:397 flatcamTools/ToolCutOut.py:560 msgid "" "[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n" "Optionally, this Multi-geo Geometry can be converted to Single-geo " @@ -10225,18 +10225,18 @@ msgstr "" "werden.\n" "und danach Cutout durchführen." -#: flatcamTools/ToolCutOut.py:483 flatcamTools/ToolCutOut.py:636 +#: flatcamTools/ToolCutOut.py:489 flatcamTools/ToolCutOut.py:642 msgid "[success] Any form CutOut operation finished." msgstr "[success] Jede Form CutOut-Operation ist abgeschlossen." -#: flatcamTools/ToolCutOut.py:503 flatcamTools/ToolPaint.py:768 +#: flatcamTools/ToolCutOut.py:509 flatcamTools/ToolPaint.py:768 #: flatcamTools/ToolPanelize.py:358 #, python-format msgid "[ERROR_NOTCL] Object not found: %s" msgstr "[ERROR_NOTCL] Objekt nicht gefunden:%s" -#: flatcamTools/ToolCutOut.py:517 flatcamTools/ToolCutOut.py:656 -#: flatcamTools/ToolCutOut.py:761 +#: flatcamTools/ToolCutOut.py:523 flatcamTools/ToolCutOut.py:662 +#: flatcamTools/ToolCutOut.py:767 msgid "" "[ERROR_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." @@ -10244,38 +10244,38 @@ msgstr "" "[ERROR_NOTCL] Werkzeugdurchmesser ist Nullwert. Ändern Sie es in eine " "positive reelle Zahl." -#: flatcamTools/ToolCutOut.py:641 +#: flatcamTools/ToolCutOut.py:647 msgid "" "Click on the selected geometry object perimeter to create a bridge gap ..." msgstr "" "Klicken Sie auf den ausgewählten Umfang des Geometrieobjekts, um eine " "Brückenlücke zu erstellen ..." -#: flatcamTools/ToolCutOut.py:682 +#: flatcamTools/ToolCutOut.py:688 msgid "Making manual bridge gap..." msgstr "Manuelle Brückenlücke herstellen ..." -#: flatcamTools/ToolCutOut.py:705 +#: flatcamTools/ToolCutOut.py:711 #, python-format msgid "[ERROR_NOTCL] Could not retrieve Geometry object: %s" msgstr "[ERROR_NOTCL] Das Geometrieobjekt konnte nicht abgerufen werden:%s" -#: flatcamTools/ToolCutOut.py:709 +#: flatcamTools/ToolCutOut.py:715 #, python-format msgid "[ERROR_NOTCL] Geometry object for manual cutout not found: %s" msgstr "" "[ERROR_NOTCL] Geometrieobjekt für manuellen Ausschnitt nicht gefunden:%s" -#: flatcamTools/ToolCutOut.py:719 +#: flatcamTools/ToolCutOut.py:725 msgid "[success] Added manual Bridge Gap." msgstr "[success] Manuelle Brückenlücke hinzugefügt." -#: flatcamTools/ToolCutOut.py:736 +#: flatcamTools/ToolCutOut.py:742 #, python-format msgid "[ERROR_NOTCL] Could not retrieve Gerber object: %s" msgstr "[ERROR_NOTCL] Gerber-Objekt konnte nicht abgerufen werden:%s" -#: flatcamTools/ToolCutOut.py:740 +#: flatcamTools/ToolCutOut.py:746 msgid "" "[ERROR_NOTCL] There is no Gerber object selected for Cutout.\n" "Select one and try again." @@ -10283,7 +10283,7 @@ msgstr "" "[ERROR_NOTCL] Es ist kein Gerber-Objekt für den Ausschnitt ausgewählt.\n" "Wählen Sie eine aus und versuchen Sie es erneut." -#: flatcamTools/ToolCutOut.py:745 +#: flatcamTools/ToolCutOut.py:751 msgid "" "[ERROR_NOTCL] The selected object has to be of Gerber type.\n" "Select a Gerber file and try again." diff --git a/locale/en/LC_MESSAGES/strings.mo b/locale/en/LC_MESSAGES/strings.mo index 2ac915050fc0545d999bdb4ba3fd1c25b5bd6247..5c72fd3f183cc1c8207f259ab3da8712343249a2 100644 GIT binary patch delta 44 tcmeBOBiOq}u%U%<3zKOXySajqv6Z38bel3JMHr_&rHpBNN*VLY`v5Os4XOYD delta 44 xcmeBOBiOq}u%U%<3zKOXyQzYqk(IH%D}KarHpBNN*VLY`v5N?4W$48 diff --git a/locale/en/LC_MESSAGES/strings.po b/locale/en/LC_MESSAGES/strings.po index fb010d2e..ec5825c2 100644 --- a/locale/en/LC_MESSAGES/strings.po +++ b/locale/en/LC_MESSAGES/strings.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2019-06-05 12:38+0300\n" -"PO-Revision-Date: 2019-06-05 13:01+0300\n" +"POT-Creation-Date: 2019-06-07 23:14+0300\n" +"PO-Revision-Date: 2019-06-07 23:14+0300\n" "Last-Translator: \n" "Language-Team: \n" "Language: en\n" @@ -734,7 +734,7 @@ msgstr "Source Editor" msgid "[ERROR]App.on_view_source() -->%s" msgstr "[ERROR]App.on_view_source() -->%s" -#: FlatCAMApp.py:6562 FlatCAMApp.py:7704 FlatCAMObj.py:5581 +#: FlatCAMApp.py:6562 FlatCAMApp.py:7704 FlatCAMObj.py:5587 msgid "Code Editor" msgstr "Code Editor" @@ -1167,17 +1167,14 @@ msgid "[success] All plots enabled." msgstr "[success] All plots enabled." #: FlatCAMApp.py:8342 -#| msgid "[success] All plots enabled." msgid "[success] Selected plots enabled..." msgstr "[success] Selected plots enabled..." #: FlatCAMApp.py:8350 -#| msgid "[success] All non selected plots disabled." msgid "[success] Selected plots disabled..." msgstr "[success] Selected plots disabled..." #: FlatCAMApp.py:8360 FlatCAMApp.py:8373 -#| msgid "Moving ..." msgid "Working ..." msgstr "Working ..." @@ -1211,11 +1208,11 @@ msgstr "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it." msgid "[success] Name changed from {old} to {new}" msgstr "[success] Name changed from {old} to {new}" -#: FlatCAMObj.py:546 FlatCAMObj.py:2031 FlatCAMObj.py:3311 FlatCAMObj.py:5478 +#: FlatCAMObj.py:546 FlatCAMObj.py:2031 FlatCAMObj.py:3311 FlatCAMObj.py:5484 msgid "Basic" msgstr "Basic" -#: FlatCAMObj.py:558 FlatCAMObj.py:2047 FlatCAMObj.py:3333 FlatCAMObj.py:5484 +#: FlatCAMObj.py:558 FlatCAMObj.py:2047 FlatCAMObj.py:3333 FlatCAMObj.py:5490 msgid "Advanced" msgstr "Advanced" @@ -1237,8 +1234,8 @@ msgid "Total Slots" msgstr "Total Slots" #: FlatCAMObj.py:2103 FlatCAMObj.py:3384 FlatCAMObj.py:3682 FlatCAMObj.py:3869 -#: FlatCAMObj.py:3882 FlatCAMObj.py:3999 FlatCAMObj.py:4416 FlatCAMObj.py:4653 -#: FlatCAMObj.py:5061 flatcamEditors/FlatCAMExcEditor.py:1474 +#: 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 @@ -1295,7 +1292,7 @@ msgid "" msgstr "" "[ERROR_NOTCL] Milling tool for SLOTS is larger than hole size. Cancelled." -#: FlatCAMObj.py:2602 FlatCAMObj.py:4304 FlatCAMObj.py:4519 FlatCAMObj.py:4836 +#: FlatCAMObj.py:2602 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\"]" @@ -1303,7 +1300,7 @@ msgstr "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"z_pdepth\"] or self." "options[\"z_pdepth\"]" -#: FlatCAMObj.py:2614 FlatCAMObj.py:4316 FlatCAMObj.py:4531 FlatCAMObj.py:4848 +#: FlatCAMObj.py:2614 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\"]" @@ -1311,12 +1308,12 @@ msgstr "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"feedrate_probe\"] or " "self.options[\"feedrate_probe\"]" -#: FlatCAMObj.py:2646 FlatCAMObj.py:4723 FlatCAMObj.py:4728 FlatCAMObj.py:4874 +#: FlatCAMObj.py:2646 FlatCAMObj.py:4725 FlatCAMObj.py:4730 FlatCAMObj.py:4880 msgid "Generating CNC Code" msgstr "Generating CNC Code" -#: FlatCAMObj.py:2672 FlatCAMObj.py:5020 camlib.py:5152 camlib.py:5611 -#: camlib.py:5874 +#: FlatCAMObj.py:2672 FlatCAMObj.py:5026 camlib.py:5151 camlib.py:5610 +#: camlib.py:5873 msgid "" "[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " "format (x, y) \n" @@ -1396,7 +1393,7 @@ msgstr "[ERROR_NOTCL] Failed. No tool selected in the tool table ..." msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" msgstr "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" -#: FlatCAMObj.py:4425 FlatCAMObj.py:4662 +#: 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." @@ -1404,20 +1401,20 @@ msgstr "" "[WARNING] Tool Offset is selected in Tool Table but no value is provided.\n" "Add a Tool Offset or change the Offset Type." -#: FlatCAMObj.py:4543 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] Cancelled. Empty file, it has no geometry..." -#: FlatCAMObj.py:4907 FlatCAMObj.py:4917 camlib.py:3335 camlib.py:3344 +#: FlatCAMObj.py:4913 FlatCAMObj.py:4923 camlib.py:3335 camlib.py:3344 msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float." msgstr "[ERROR_NOTCL] Scale factor has to be a number: integer or float." -#: FlatCAMObj.py:4955 +#: FlatCAMObj.py:4961 msgid "[success] Geometry Scale done." msgstr "[success] Geometry Scale done." -#: FlatCAMObj.py:4972 camlib.py:3414 +#: FlatCAMObj.py:4978 camlib.py:3414 msgid "" "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " "one value in the Offset field." @@ -1425,29 +1422,29 @@ msgstr "" "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " "one value in the Offset field." -#: FlatCAMObj.py:4992 +#: FlatCAMObj.py:4998 msgid "[success] Geometry Offset done." msgstr "[success] Geometry Offset done." -#: FlatCAMObj.py:5546 FlatCAMObj.py:5551 flatcamTools/ToolSolderPaste.py:1361 +#: FlatCAMObj.py:5552 FlatCAMObj.py:5557 flatcamTools/ToolSolderPaste.py:1361 msgid "Export Machine Code ..." msgstr "Export Machine Code ..." -#: FlatCAMObj.py:5557 flatcamTools/ToolSolderPaste.py:1364 +#: FlatCAMObj.py:5563 flatcamTools/ToolSolderPaste.py:1364 msgid "[WARNING_NOTCL] Export Machine Code cancelled ..." msgstr "[WARNING_NOTCL] Export Machine Code cancelled ..." -#: FlatCAMObj.py:5570 +#: FlatCAMObj.py:5576 #, python-format msgid "[success] Machine Code file saved to: %s" msgstr "[success] Machine Code file saved to: %s" -#: FlatCAMObj.py:5592 +#: FlatCAMObj.py:5598 #, python-format msgid "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" msgstr "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" -#: FlatCAMObj.py:5709 +#: FlatCAMObj.py:5715 #, python-format msgid "" "[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " @@ -1456,11 +1453,11 @@ msgstr "" "[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " "CNCJob object." -#: FlatCAMObj.py:5762 +#: FlatCAMObj.py:5768 msgid "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21" msgstr "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21" -#: FlatCAMObj.py:5775 +#: FlatCAMObj.py:5781 msgid "" "[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " "empty." @@ -1468,15 +1465,15 @@ msgstr "" "[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " "empty." -#: FlatCAMObj.py:5782 +#: FlatCAMObj.py:5788 msgid "[success] Toolchange G-code was replaced by a custom code." msgstr "[success] Toolchange G-code was replaced by a custom code." -#: FlatCAMObj.py:5797 flatcamTools/ToolSolderPaste.py:1390 +#: FlatCAMObj.py:5803 flatcamTools/ToolSolderPaste.py:1390 msgid "[WARNING_NOTCL] No such file or directory" msgstr "[WARNING_NOTCL] No such file or directory" -#: FlatCAMObj.py:5817 FlatCAMObj.py:5829 +#: FlatCAMObj.py:5823 FlatCAMObj.py:5835 msgid "" "[WARNING_NOTCL] The used postprocessor file has to have in it's name: " "'toolchange_custom'" @@ -1484,7 +1481,7 @@ msgstr "" "[WARNING_NOTCL] The used postprocessor file has to have in it's name: " "'toolchange_custom'" -#: FlatCAMObj.py:5835 +#: FlatCAMObj.py:5841 msgid "[ERROR] There is no postprocessor file." msgstr "[ERROR] There is no postprocessor file." @@ -1614,12 +1611,12 @@ msgstr "" "not having a tool associated.\n" "Check the resulting GCode." -#: camlib.py:5061 +#: camlib.py:5060 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "[ERROR] There is no such parameter: %s" -#: camlib.py:5131 +#: camlib.py:5130 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1633,22 +1630,22 @@ msgstr "" "therefore the app will convert the value to negative. Check the resulting " "CNC code (Gcode etc)." -#: camlib.py:5138 camlib.py:5634 camlib.py:5897 +#: camlib.py:5137 camlib.py:5633 camlib.py:5896 #, python-format msgid "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" msgstr "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" -#: camlib.py:5367 camlib.py:5464 camlib.py:5522 +#: camlib.py:5366 camlib.py:5463 camlib.py:5521 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "[ERROR_NOTCL] The loaded Excellon file has no drills ..." -#: camlib.py:5469 +#: camlib.py:5468 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "[ERROR_NOTCL] Wrong optimization type selected." -#: camlib.py:5622 camlib.py:5885 +#: camlib.py:5621 camlib.py:5884 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." @@ -1656,7 +1653,7 @@ msgstr "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." -#: camlib.py:5627 camlib.py:5890 +#: camlib.py:5626 camlib.py:5889 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1670,11 +1667,11 @@ msgstr "" "therefore the app will convert the value to negative.Check the resulting CNC " "code (Gcode etc)." -#: camlib.py:5639 camlib.py:5902 +#: camlib.py:5638 camlib.py:5901 msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." msgstr "[ERROR_NOTCL] Travel Z parameter is None or zero." -#: camlib.py:5643 camlib.py:5906 +#: camlib.py:5642 camlib.py:5905 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1688,19 +1685,19 @@ msgstr "" "therefore the app will convert the value to positive.Check the resulting CNC " "code (Gcode etc)." -#: camlib.py:5650 camlib.py:5913 +#: camlib.py:5649 camlib.py:5912 #, python-format msgid "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" msgstr "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" -#: camlib.py:5780 +#: camlib.py:5779 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "[ERROR]Expected a Geometry, got %s" -#: camlib.py:5786 +#: camlib.py:5785 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." @@ -1708,7 +1705,7 @@ msgstr "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." -#: camlib.py:5825 +#: camlib.py:5824 msgid "" "[ERROR_NOTCL] The Tool Offset value is too negative to use for the " "current_geometry.\n" @@ -1718,7 +1715,7 @@ msgstr "" "current_geometry.\n" "Raise the value (in module) and try again." -#: camlib.py:6039 +#: camlib.py:6036 msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." msgstr "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." @@ -1765,7 +1762,6 @@ msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:207 #, python-format -#| msgid "[ERROR_NOTCL] The value is mistyped. Check the value." msgid "[ERROR_NOTCL] The value is mistyped. Check the value. %s" msgstr "[ERROR_NOTCL] The value is mistyped. Check the value. %s" @@ -2254,8 +2250,8 @@ msgid "[WARNING_NOTCL] Paint cancelled. No shape selected." msgstr "[WARNING_NOTCL] Paint cancelled. No shape selected." #: flatcamEditors/FlatCAMGeoEditor.py:574 flatcamTools/ToolCutOut.py:355 -#: flatcamTools/ToolCutOut.py:512 flatcamTools/ToolCutOut.py:651 -#: flatcamTools/ToolCutOut.py:756 flatcamTools/ToolDblSided.py:363 +#: flatcamTools/ToolCutOut.py:518 flatcamTools/ToolCutOut.py:657 +#: flatcamTools/ToolCutOut.py:762 flatcamTools/ToolDblSided.py:363 msgid "" "[WARNING_NOTCL] Tool diameter value is missing or wrong format. Add it and " "retry." @@ -3025,8 +3021,6 @@ msgstr "Shape transformations ..." #: flatcamEditors/FlatCAMGeoEditor.py:3416 #, python-brace-format -#| msgid "" -#| "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" msgid "" "[WARNING_NOTCL] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" msgstr "" @@ -5749,7 +5743,6 @@ msgstr "" " " #: flatcamGUI/FlatCAMGUI.py:1578 -#| msgid "Toggle Units\tQ" msgid "Toggle Panel" msgstr "Toggle Panel" @@ -7378,17 +7371,10 @@ msgstr "" "and Leading Zeros are removed." #: flatcamGUI/FlatCAMGUI.py:5031 -#| msgid "A list of Geometry Editor parameters." msgid "A list of Excellon Editor parameters." msgstr "A list of Excellon Editor parameters." #: flatcamGUI/FlatCAMGUI.py:5041 -#| msgid "" -#| "Set the number of selected geometry\n" -#| "items above which the utility geometry\n" -#| "becomes just a selection rectangle.\n" -#| "Increases the performance when moving a\n" -#| "large number of geometric elements." msgid "" "Set the number of selected Excellon geometry\n" "items above which the utility geometry\n" @@ -7403,34 +7389,26 @@ msgstr "" "large number of geometric elements." #: flatcamGUI/FlatCAMGUI.py:5053 -#| msgid "Tool Dia:" msgid "New Tool Dia:" msgstr "New Tool Dia:" #: flatcamGUI/FlatCAMGUI.py:5076 -#| msgid "Paint Area:" msgid "Linear Drill Array:" msgstr "Linear Drill Array:" #: flatcamGUI/FlatCAMGUI.py:5080 -#| msgid "Linear" msgid "Linear Dir.:" msgstr "Linear Dir.:" #: flatcamGUI/FlatCAMGUI.py:5116 -#| msgid "Paint Area:" msgid "Circular Drill Array:" msgstr "Circular Drill Array:" #: flatcamGUI/FlatCAMGUI.py:5120 -#| msgid "Circular" msgid "Circular Dir.:" msgstr "Circular Dir.:" #: flatcamGUI/FlatCAMGUI.py:5122 -#| msgid "" -#| "Direction for circular array.Can be CW = clockwise or CCW = counter " -#| "clockwise." msgid "" "Direction for circular array.\n" "Can be CW = clockwise or CCW = counter clockwise." @@ -7439,7 +7417,6 @@ msgstr "" "Can be CW = clockwise or CCW = counter clockwise." #: flatcamGUI/FlatCAMGUI.py:5133 -#| msgid "Tip Angle:" msgid "Circ. Angle:" msgstr "Circ. Angle:" @@ -7722,7 +7699,6 @@ msgid "Annotation Color:" msgstr "Annotation Color:" #: flatcamGUI/FlatCAMGUI.py:5587 -#| msgid "Set the color for the shape." msgid "Set the font color for the annotation texts." msgstr "Set the font color for the annotation texts." @@ -8642,9 +8618,6 @@ msgid "Feedrate Z Dispense:" msgstr "Feedrate Z Dispense:" #: flatcamGUI/FlatCAMGUI.py:6619 -#| msgid "" -#| "Feedrate (speed) while moving up vertically\n" -#| " to Dispense position (on Z plane)." msgid "" "Feedrate (speed) while moving up vertically\n" "to Dispense position (on Z plane)." @@ -9526,7 +9499,6 @@ msgid "Plot kind:" msgstr "Plot kind:" #: flatcamGUI/ObjectUI.py:1369 -#| msgid "Plot Options:" msgid "Display Annotation:" msgstr "Display Annotation:" @@ -9978,7 +9950,7 @@ msgstr "" "The LMB click has to be done on the perimeter of\n" "the Geometry object used as a cutout geometry." -#: flatcamTools/ToolCutOut.py:341 flatcamTools/ToolCutOut.py:499 +#: flatcamTools/ToolCutOut.py:341 flatcamTools/ToolCutOut.py:505 #: flatcamTools/ToolNonCopperClear.py:666 flatcamTools/ToolPaint.py:764 #: flatcamTools/ToolPanelize.py:352 flatcamTools/ToolPanelize.py:366 #: flatcamTools/ToolSub.py:237 flatcamTools/ToolSub.py:249 @@ -10003,25 +9975,25 @@ msgstr "" "[WARNING_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." -#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:527 -#: flatcamTools/ToolCutOut.py:771 +#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:533 +#: flatcamTools/ToolCutOut.py:777 msgid "" "[WARNING_NOTCL] Margin value is missing or wrong format. Add it and retry." msgstr "" "[WARNING_NOTCL] Margin value is missing or wrong format. Add it and retry." -#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:538 -#: flatcamTools/ToolCutOut.py:666 +#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:544 +#: flatcamTools/ToolCutOut.py:672 msgid "" "[WARNING_NOTCL] Gap size value is missing or wrong format. Add it and retry." msgstr "" "[WARNING_NOTCL] Gap size value is missing or wrong format. Add it and retry." -#: flatcamTools/ToolCutOut.py:388 flatcamTools/ToolCutOut.py:545 +#: flatcamTools/ToolCutOut.py:388 flatcamTools/ToolCutOut.py:551 msgid "[WARNING_NOTCL] Number of gaps value is missing. Add it and retry." msgstr "[WARNING_NOTCL] Number of gaps value is missing. Add it and retry." -#: flatcamTools/ToolCutOut.py:392 flatcamTools/ToolCutOut.py:549 +#: flatcamTools/ToolCutOut.py:392 flatcamTools/ToolCutOut.py:555 msgid "" "[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 " "or 8. Fill in a correct value and retry. " @@ -10029,7 +10001,7 @@ msgstr "" "[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 " "or 8. Fill in a correct value and retry. " -#: flatcamTools/ToolCutOut.py:397 flatcamTools/ToolCutOut.py:554 +#: flatcamTools/ToolCutOut.py:397 flatcamTools/ToolCutOut.py:560 msgid "" "[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n" "Optionally, this Multi-geo Geometry can be converted to Single-geo " @@ -10041,18 +10013,18 @@ msgstr "" "Geometry,\n" "and after that perform Cutout." -#: flatcamTools/ToolCutOut.py:483 flatcamTools/ToolCutOut.py:636 +#: flatcamTools/ToolCutOut.py:489 flatcamTools/ToolCutOut.py:642 msgid "[success] Any form CutOut operation finished." msgstr "[success] Any form CutOut operation finished." -#: flatcamTools/ToolCutOut.py:503 flatcamTools/ToolPaint.py:768 +#: flatcamTools/ToolCutOut.py:509 flatcamTools/ToolPaint.py:768 #: flatcamTools/ToolPanelize.py:358 #, python-format msgid "[ERROR_NOTCL] Object not found: %s" msgstr "[ERROR_NOTCL] Object not found: %s" -#: flatcamTools/ToolCutOut.py:517 flatcamTools/ToolCutOut.py:656 -#: flatcamTools/ToolCutOut.py:761 +#: flatcamTools/ToolCutOut.py:523 flatcamTools/ToolCutOut.py:662 +#: flatcamTools/ToolCutOut.py:767 msgid "" "[ERROR_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." @@ -10060,36 +10032,36 @@ msgstr "" "[ERROR_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." -#: flatcamTools/ToolCutOut.py:641 +#: flatcamTools/ToolCutOut.py:647 msgid "" "Click on the selected geometry object perimeter to create a bridge gap ..." msgstr "" "Click on the selected geometry object perimeter to create a bridge gap ..." -#: flatcamTools/ToolCutOut.py:682 +#: flatcamTools/ToolCutOut.py:688 msgid "Making manual bridge gap..." msgstr "Making manual bridge gap..." -#: flatcamTools/ToolCutOut.py:705 +#: flatcamTools/ToolCutOut.py:711 #, python-format msgid "[ERROR_NOTCL] Could not retrieve Geometry object: %s" msgstr "[ERROR_NOTCL] Could not retrieve Geometry object: %s" -#: flatcamTools/ToolCutOut.py:709 +#: flatcamTools/ToolCutOut.py:715 #, python-format msgid "[ERROR_NOTCL] Geometry object for manual cutout not found: %s" msgstr "[ERROR_NOTCL] Geometry object for manual cutout not found: %s" -#: flatcamTools/ToolCutOut.py:719 +#: flatcamTools/ToolCutOut.py:725 msgid "[success] Added manual Bridge Gap." msgstr "[success] Added manual Bridge Gap." -#: flatcamTools/ToolCutOut.py:736 +#: flatcamTools/ToolCutOut.py:742 #, python-format msgid "[ERROR_NOTCL] Could not retrieve Gerber object: %s" msgstr "[ERROR_NOTCL] Could not retrieve Gerber object: %s" -#: flatcamTools/ToolCutOut.py:740 +#: flatcamTools/ToolCutOut.py:746 msgid "" "[ERROR_NOTCL] There is no Gerber object selected for Cutout.\n" "Select one and try again." @@ -10097,7 +10069,7 @@ msgstr "" "[ERROR_NOTCL] There is no Gerber object selected for Cutout.\n" "Select one and try again." -#: flatcamTools/ToolCutOut.py:745 +#: flatcamTools/ToolCutOut.py:751 msgid "" "[ERROR_NOTCL] The selected object has to be of Gerber type.\n" "Select a Gerber file and try again." diff --git a/locale/ro/LC_MESSAGES/strings.mo b/locale/ro/LC_MESSAGES/strings.mo index 72ea2654369830f704a564f690622e51f175b534..3824aa7407336746da91f0161d2734fd35a767b4 100644 GIT binary patch delta 48 wcmaF0U+C3-p@tU5Elj3m?B)ta##V-=({0L_6k(k9lrknDX5OAs#?qz<0FFEl8UO$Q delta 48 ycmaF0U+C3-p@tU5Elj3m?4}BaMpnia({0L_6d@c_llGJ{CLm_so>IorrU?L!DGwR| diff --git a/locale/ro/LC_MESSAGES/strings.po b/locale/ro/LC_MESSAGES/strings.po index b2dd9974..585f4a14 100644 --- a/locale/ro/LC_MESSAGES/strings.po +++ b/locale/ro/LC_MESSAGES/strings.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2019-06-05 12:38+0300\n" -"PO-Revision-Date: 2019-06-05 12:54+0300\n" +"POT-Creation-Date: 2019-06-07 23:15+0300\n" +"PO-Revision-Date: 2019-06-07 23:15+0300\n" "Last-Translator: \n" "Language-Team: \n" "Language: ro\n" @@ -762,7 +762,7 @@ msgstr "Editor Cod" msgid "[ERROR]App.on_view_source() -->%s" msgstr "[ERROR]App.on_view_source() -->%s" -#: FlatCAMApp.py:6562 FlatCAMApp.py:7704 FlatCAMObj.py:5581 +#: FlatCAMApp.py:6562 FlatCAMApp.py:7704 FlatCAMObj.py:5587 msgid "Code Editor" msgstr "Editor Cod" @@ -1255,11 +1255,11 @@ msgstr "" msgid "[success] Name changed from {old} to {new}" msgstr "[success] Numele schimbat din {old} in {new}" -#: FlatCAMObj.py:546 FlatCAMObj.py:2031 FlatCAMObj.py:3311 FlatCAMObj.py:5478 +#: FlatCAMObj.py:546 FlatCAMObj.py:2031 FlatCAMObj.py:3311 FlatCAMObj.py:5484 msgid "Basic" msgstr "Baza" -#: FlatCAMObj.py:558 FlatCAMObj.py:2047 FlatCAMObj.py:3333 FlatCAMObj.py:5484 +#: FlatCAMObj.py:558 FlatCAMObj.py:2047 FlatCAMObj.py:3333 FlatCAMObj.py:5490 msgid "Advanced" msgstr "Avansat" @@ -1281,8 +1281,8 @@ msgid "Total Slots" msgstr "Nr. Tot. Sloturi" #: FlatCAMObj.py:2103 FlatCAMObj.py:3384 FlatCAMObj.py:3682 FlatCAMObj.py:3869 -#: FlatCAMObj.py:3882 FlatCAMObj.py:3999 FlatCAMObj.py:4416 FlatCAMObj.py:4653 -#: FlatCAMObj.py:5061 flatcamEditors/FlatCAMExcEditor.py:1474 +#: 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 @@ -1341,7 +1341,7 @@ msgid "" msgstr "" "[ERROR_NOTCL] Anulat. Freza este mai mare decat diametrul slotului de frezat." -#: FlatCAMObj.py:2602 FlatCAMObj.py:4304 FlatCAMObj.py:4519 FlatCAMObj.py:4836 +#: FlatCAMObj.py:2602 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\"]" @@ -1349,7 +1349,7 @@ msgstr "" "[ERROR_NOTCL] Valoare gresita pt self.defaults[\"z_pdepth\"] sau self." "options[\"z_pdepth\"]" -#: FlatCAMObj.py:2614 FlatCAMObj.py:4316 FlatCAMObj.py:4531 FlatCAMObj.py:4848 +#: FlatCAMObj.py:2614 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\"]" @@ -1357,12 +1357,12 @@ msgstr "" "[ERROR_NOTCL] Valoare gresita pt self.defaults[\"feedrate_probe\"] sau self." "options[\"feedrate_probe\"]" -#: FlatCAMObj.py:2646 FlatCAMObj.py:4723 FlatCAMObj.py:4728 FlatCAMObj.py:4874 +#: FlatCAMObj.py:2646 FlatCAMObj.py:4725 FlatCAMObj.py:4730 FlatCAMObj.py:4880 msgid "Generating CNC Code" msgstr "CNC Code in curs de generare" -#: FlatCAMObj.py:2672 FlatCAMObj.py:5020 camlib.py:5152 camlib.py:5611 -#: camlib.py:5874 +#: FlatCAMObj.py:2672 FlatCAMObj.py:5026 camlib.py:5151 camlib.py:5610 +#: camlib.py:5873 msgid "" "[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " "format (x, y) \n" @@ -1447,7 +1447,7 @@ msgstr "" msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" msgstr "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" -#: FlatCAMObj.py:4425 FlatCAMObj.py:4662 +#: 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." @@ -1456,21 +1456,21 @@ msgstr "" "val. nu este oferita.\n" "Adaugă un ofset pt unealtă sau schimbă Tipul Ofset." -#: FlatCAMObj.py:4543 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] Anulat. Fişier gol, nu are date geometrice." -#: FlatCAMObj.py:4907 FlatCAMObj.py:4917 camlib.py:3335 camlib.py:3344 +#: FlatCAMObj.py:4913 FlatCAMObj.py:4923 camlib.py:3335 camlib.py:3344 msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float." msgstr "" "[ERROR_NOTCL] Factorul de scalare trebuie să fie un număr: natural sau real." -#: FlatCAMObj.py:4955 +#: FlatCAMObj.py:4961 msgid "[success] Geometry Scale done." msgstr "[success] Scalare Geometrie executată." -#: FlatCAMObj.py:4972 camlib.py:3414 +#: FlatCAMObj.py:4978 camlib.py:3414 msgid "" "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " "one value in the Offset field." @@ -1478,29 +1478,29 @@ msgstr "" "[ERROR_NOTCL] O pereche de valori (x,y) este necesară. Probabil că ai " "introdus numai o singură valoare in câmpul Offset." -#: FlatCAMObj.py:4992 +#: FlatCAMObj.py:4998 msgid "[success] Geometry Offset done." msgstr "[success] Ofset Geometrie executat." -#: FlatCAMObj.py:5546 FlatCAMObj.py:5551 flatcamTools/ToolSolderPaste.py:1361 +#: FlatCAMObj.py:5552 FlatCAMObj.py:5557 flatcamTools/ToolSolderPaste.py:1361 msgid "Export Machine Code ..." msgstr "Exporta CNC Cod Masina ..." -#: FlatCAMObj.py:5557 flatcamTools/ToolSolderPaste.py:1364 +#: FlatCAMObj.py:5563 flatcamTools/ToolSolderPaste.py:1364 msgid "[WARNING_NOTCL] Export Machine Code cancelled ..." msgstr "[WARNING_NOTCL] Exportul codului masina CNC a fost anulat ..." -#: FlatCAMObj.py:5570 +#: FlatCAMObj.py:5576 #, python-format msgid "[success] Machine Code file saved to: %s" msgstr "[success] Fişierul cu cod CNC este salvat in: %s" -#: FlatCAMObj.py:5592 +#: FlatCAMObj.py:5598 #, python-format msgid "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" msgstr "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" -#: FlatCAMObj.py:5709 +#: FlatCAMObj.py:5715 #, python-format msgid "" "[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " @@ -1509,11 +1509,11 @@ msgstr "" "[WARNING_NOTCL] Acest obiect CNCJob nu poate fi procesar deoarece este un " "obiect CNCJob tip %s." -#: FlatCAMObj.py:5762 +#: FlatCAMObj.py:5768 msgid "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21" msgstr "[ERROR_NOTCL] G-code nu contine codul pt unitati: G20 sau G21" -#: FlatCAMObj.py:5775 +#: FlatCAMObj.py:5781 msgid "" "[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " "empty." @@ -1521,17 +1521,17 @@ msgstr "" "[ERROR_NOTCL] Anulat. Codul G-Code din Macro-ul Schimbare unealtă este " "activat dar nuc contine nimic." -#: FlatCAMObj.py:5782 +#: FlatCAMObj.py:5788 msgid "[success] Toolchange G-code was replaced by a custom code." msgstr "" "[success] G-Code-ul pt schimbare unealtă a fost inlocuit cu un cod " "pesonalizat." -#: FlatCAMObj.py:5797 flatcamTools/ToolSolderPaste.py:1390 +#: FlatCAMObj.py:5803 flatcamTools/ToolSolderPaste.py:1390 msgid "[WARNING_NOTCL] No such file or directory" msgstr "[WARNING_NOTCL] Nu exista un asemenea fişier sau director" -#: FlatCAMObj.py:5817 FlatCAMObj.py:5829 +#: FlatCAMObj.py:5823 FlatCAMObj.py:5835 msgid "" "[WARNING_NOTCL] The used postprocessor file has to have in it's name: " "'toolchange_custom'" @@ -1539,7 +1539,7 @@ msgstr "" "[WARNING_NOTCL] Postprocesorul folosit trebuie să aibă in numele sau: " "'toolchange_custom'" -#: FlatCAMObj.py:5835 +#: FlatCAMObj.py:5841 msgid "[ERROR] There is no postprocessor file." msgstr "[ERROR] Nu exista nici-un fişier postprocesor." @@ -1671,12 +1671,12 @@ msgstr "" "deoarece nu are o unealtă asociata.\n" "Verifică codul G-Code rezultat." -#: camlib.py:5061 +#: camlib.py:5060 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "[ERROR] Nu exista un asemenea parametru: %s" -#: camlib.py:5131 +#: camlib.py:5130 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1689,7 +1689,7 @@ msgstr "" "Se presupune că este o eroare de tastare astfel ca aplicaţia va converti " "intr-o valoare negativă. Verifică codul masina (G-Code etc) rezultat." -#: camlib.py:5138 camlib.py:5634 camlib.py:5897 +#: camlib.py:5137 camlib.py:5633 camlib.py:5896 #, python-format msgid "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" @@ -1697,15 +1697,15 @@ msgstr "" "[WARNING] Parametrul >Z tăiere< este nul. Nu va fi nici-o tăiere prin urmare " "nu procesam fişierul %s" -#: camlib.py:5367 camlib.py:5464 camlib.py:5522 +#: camlib.py:5366 camlib.py:5463 camlib.py:5521 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "[ERROR_NOTCL] Fişierul Excellon incărcat nu are găuri ..." -#: camlib.py:5469 +#: camlib.py:5468 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "[ERROR_NOTCL] Un tip de optimizare incorrect a fost selectat." -#: camlib.py:5622 camlib.py:5885 +#: camlib.py:5621 camlib.py:5884 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." @@ -1713,7 +1713,7 @@ msgstr "" "[ERROR_NOTCL] Parametrul >Z tăiere< este None sau zero. Cel mai probabil o " "combinaţie nefericita de parametri." -#: camlib.py:5627 camlib.py:5890 +#: camlib.py:5626 camlib.py:5889 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1726,11 +1726,11 @@ msgstr "" "Se presupune că este o eroare de tastare astfel ca aplicaţia va converti " "intr-o valoare negativă. Verifică codul masina (G-Code etc) rezultat." -#: camlib.py:5639 camlib.py:5902 +#: camlib.py:5638 camlib.py:5901 msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." msgstr "[ERROR_NOTCL] Parametrul >Z deplasare< este None sau zero." -#: camlib.py:5643 camlib.py:5906 +#: camlib.py:5642 camlib.py:5905 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1744,7 +1744,7 @@ msgstr "" "Se presupune că este o eroare de tastare astfel ca aplicaţia va converti " "intr-o valoare pozitivă. Verifică codul masina (G-Code etc) rezultat." -#: camlib.py:5650 camlib.py:5913 +#: camlib.py:5649 camlib.py:5912 #, python-format msgid "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" @@ -1752,12 +1752,12 @@ msgstr "" "[WARNING] Parametrul >Z deplasare< este zero. Aceasta este periculos, prin " "urmare fişierul %s nu se procesează." -#: camlib.py:5780 +#: camlib.py:5779 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "[ERROR] Se astepta o Geometrie, am primit in schimb %s" -#: camlib.py:5786 +#: camlib.py:5785 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." @@ -1765,7 +1765,7 @@ msgstr "" "[ERROR_NOTCL] Se încearcă generarea unui CNC Job dintr-un obiect Geometrie " "fără atributul solid_geometry." -#: camlib.py:5825 +#: camlib.py:5824 msgid "" "[ERROR_NOTCL] The Tool Offset value is too negative to use for the " "current_geometry.\n" @@ -1775,7 +1775,7 @@ msgstr "" "fi folosita. \n" "Mareste valoarea absoluta și încearcă din nou." -#: camlib.py:6039 +#: camlib.py:6036 msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." msgstr "" "[ERROR_NOTCL] Nu exista date cu privier la unealtă in geometria SolderPaste." @@ -2326,8 +2326,8 @@ msgid "[WARNING_NOTCL] Paint cancelled. No shape selected." msgstr "[WARNING_NOTCL] Operaţie Paint anulata. Nici-o forma selectată." #: flatcamEditors/FlatCAMGeoEditor.py:574 flatcamTools/ToolCutOut.py:355 -#: flatcamTools/ToolCutOut.py:512 flatcamTools/ToolCutOut.py:651 -#: flatcamTools/ToolCutOut.py:756 flatcamTools/ToolDblSided.py:363 +#: flatcamTools/ToolCutOut.py:518 flatcamTools/ToolCutOut.py:657 +#: flatcamTools/ToolCutOut.py:762 flatcamTools/ToolDblSided.py:363 msgid "" "[WARNING_NOTCL] Tool diameter value is missing or wrong format. Add it and " "retry." @@ -10172,7 +10172,7 @@ msgstr "" "apasarea tastei CTRL, operatia se va repeta automat pana când\n" "se va apasa tasta 'Escape'." -#: flatcamTools/ToolCutOut.py:341 flatcamTools/ToolCutOut.py:499 +#: flatcamTools/ToolCutOut.py:341 flatcamTools/ToolCutOut.py:505 #: flatcamTools/ToolNonCopperClear.py:666 flatcamTools/ToolPaint.py:764 #: flatcamTools/ToolPanelize.py:352 flatcamTools/ToolPanelize.py:366 #: flatcamTools/ToolSub.py:237 flatcamTools/ToolSub.py:249 @@ -10197,29 +10197,29 @@ msgstr "" "[WARNING_NOTCL] Diametrul uneltei este zero. Schimbă-l intr-o val. pozitivă " "Reala." -#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:527 -#: flatcamTools/ToolCutOut.py:771 +#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:533 +#: flatcamTools/ToolCutOut.py:777 msgid "" "[WARNING_NOTCL] Margin value is missing or wrong format. Add it and retry." msgstr "" "[WARNING_NOTCL] Valoarea marginii lipseste sau este in format gresit. Adaugă " "din nou și reîncearcă." -#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:538 -#: flatcamTools/ToolCutOut.py:666 +#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:544 +#: flatcamTools/ToolCutOut.py:672 msgid "" "[WARNING_NOTCL] Gap size value is missing or wrong format. Add it and retry." msgstr "" "[WARNING_NOTCL] Valoarea dimensiunii punte lipseste sau este in format " "gresit. Adaugă din nou și reîncearcă." -#: flatcamTools/ToolCutOut.py:388 flatcamTools/ToolCutOut.py:545 +#: flatcamTools/ToolCutOut.py:388 flatcamTools/ToolCutOut.py:551 msgid "[WARNING_NOTCL] Number of gaps value is missing. Add it and retry." msgstr "" "[WARNING_NOTCL] Numărul de punţi lipseste sau este in format gresit. Adaugă " "din nou și reîncearcă." -#: flatcamTools/ToolCutOut.py:392 flatcamTools/ToolCutOut.py:549 +#: flatcamTools/ToolCutOut.py:392 flatcamTools/ToolCutOut.py:555 msgid "" "[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 " "or 8. Fill in a correct value and retry. " @@ -10227,7 +10227,7 @@ msgstr "" "[WARNING_NOTCL] Valoarea punţilor poate fi numai una dintre: 'lr', 'tb', " "'2lr', '2tb', 4 or 8. Adaugă o valoare permisa și reîncearcă." -#: flatcamTools/ToolCutOut.py:397 flatcamTools/ToolCutOut.py:554 +#: flatcamTools/ToolCutOut.py:397 flatcamTools/ToolCutOut.py:560 msgid "" "[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n" "Optionally, this Multi-geo Geometry can be converted to Single-geo " @@ -10239,18 +10239,18 @@ msgstr "" "Se poate insa converti MultiGeo in tip SingleGeo și apoi se poate efectua " "decupajul." -#: flatcamTools/ToolCutOut.py:483 flatcamTools/ToolCutOut.py:636 +#: flatcamTools/ToolCutOut.py:489 flatcamTools/ToolCutOut.py:642 msgid "[success] Any form CutOut operation finished." msgstr "[success] Operatia de decupaj cu forma libera s-a terminat." -#: flatcamTools/ToolCutOut.py:503 flatcamTools/ToolPaint.py:768 +#: flatcamTools/ToolCutOut.py:509 flatcamTools/ToolPaint.py:768 #: flatcamTools/ToolPanelize.py:358 #, python-format msgid "[ERROR_NOTCL] Object not found: %s" msgstr "[ERROR_NOTCL] Obiectul nu a fost gasit: %s" -#: flatcamTools/ToolCutOut.py:517 flatcamTools/ToolCutOut.py:656 -#: flatcamTools/ToolCutOut.py:761 +#: flatcamTools/ToolCutOut.py:523 flatcamTools/ToolCutOut.py:662 +#: flatcamTools/ToolCutOut.py:767 msgid "" "[ERROR_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." @@ -10258,38 +10258,38 @@ msgstr "" "[ERROR_NOTCL] Diametrul uneltei este zero. Schimbă intr-o valoare pozitivă " "Reala." -#: flatcamTools/ToolCutOut.py:641 +#: flatcamTools/ToolCutOut.py:647 msgid "" "Click on the selected geometry object perimeter to create a bridge gap ..." msgstr "" "Click pe perimetrul obiectului tip Geometrie selectat\n" "pentru a crea o punte separatoare." -#: flatcamTools/ToolCutOut.py:682 +#: flatcamTools/ToolCutOut.py:688 msgid "Making manual bridge gap..." msgstr "Se generează o punte separatoare in mod manual..." -#: flatcamTools/ToolCutOut.py:705 +#: flatcamTools/ToolCutOut.py:711 #, python-format msgid "[ERROR_NOTCL] Could not retrieve Geometry object: %s" msgstr "[ERROR_NOTCL] Nu s-a putut incărca obiectul Geometrie: %s" -#: flatcamTools/ToolCutOut.py:709 +#: flatcamTools/ToolCutOut.py:715 #, python-format msgid "[ERROR_NOTCL] Geometry object for manual cutout not found: %s" msgstr "" "[ERROR_NOTCL] Obiectul Geometrie pentru decupaj manual nu este gasit: %s" -#: flatcamTools/ToolCutOut.py:719 +#: flatcamTools/ToolCutOut.py:725 msgid "[success] Added manual Bridge Gap." msgstr "[success] O punte a fost adăugată in mod manual." -#: flatcamTools/ToolCutOut.py:736 +#: flatcamTools/ToolCutOut.py:742 #, python-format msgid "[ERROR_NOTCL] Could not retrieve Gerber object: %s" msgstr "[ERROR_NOTCL] Nu s-a putut incărca obiectul Gerber: %s" -#: flatcamTools/ToolCutOut.py:740 +#: flatcamTools/ToolCutOut.py:746 msgid "" "[ERROR_NOTCL] There is no Gerber object selected for Cutout.\n" "Select one and try again." @@ -10297,7 +10297,7 @@ msgstr "" "[ERROR_NOTCL] Nu exista obiect selectat pt operatia de decupare.\n" "Selecteaza unul si incearcă din nou." -#: flatcamTools/ToolCutOut.py:745 +#: flatcamTools/ToolCutOut.py:751 msgid "" "[ERROR_NOTCL] The selected object has to be of Gerber type.\n" "Select a Gerber file and try again." diff --git a/locale_template/strings.pot b/locale_template/strings.pot index 2bc21930..1058f403 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-05 12:38+0300\n" +"POT-Creation-Date: 2019-06-07 23:14+0300\n" "PO-Revision-Date: 2019-03-25 15:08+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -689,7 +689,7 @@ msgstr "" msgid "[ERROR]App.on_view_source() -->%s" msgstr "" -#: FlatCAMApp.py:6562 FlatCAMApp.py:7704 FlatCAMObj.py:5581 +#: FlatCAMApp.py:6562 FlatCAMApp.py:7704 FlatCAMObj.py:5587 msgid "Code Editor" msgstr "" @@ -1083,11 +1083,11 @@ msgstr "" msgid "[success] Name changed from {old} to {new}" msgstr "" -#: FlatCAMObj.py:546 FlatCAMObj.py:2031 FlatCAMObj.py:3311 FlatCAMObj.py:5478 +#: FlatCAMObj.py:546 FlatCAMObj.py:2031 FlatCAMObj.py:3311 FlatCAMObj.py:5484 msgid "Basic" msgstr "" -#: FlatCAMObj.py:558 FlatCAMObj.py:2047 FlatCAMObj.py:3333 FlatCAMObj.py:5484 +#: FlatCAMObj.py:558 FlatCAMObj.py:2047 FlatCAMObj.py:3333 FlatCAMObj.py:5490 msgid "Advanced" msgstr "" @@ -1109,8 +1109,8 @@ msgid "Total Slots" msgstr "" #: FlatCAMObj.py:2103 FlatCAMObj.py:3384 FlatCAMObj.py:3682 FlatCAMObj.py:3869 -#: FlatCAMObj.py:3882 FlatCAMObj.py:3999 FlatCAMObj.py:4416 FlatCAMObj.py:4653 -#: FlatCAMObj.py:5061 flatcamEditors/FlatCAMExcEditor.py:1474 +#: 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 @@ -1164,24 +1164,24 @@ msgid "" "[ERROR_NOTCL] Milling tool for SLOTS is larger than hole size. Cancelled." msgstr "" -#: FlatCAMObj.py:2602 FlatCAMObj.py:4304 FlatCAMObj.py:4519 FlatCAMObj.py:4836 +#: FlatCAMObj.py:2602 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:4316 FlatCAMObj.py:4531 FlatCAMObj.py:4848 +#: FlatCAMObj.py:2614 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:4723 FlatCAMObj.py:4728 FlatCAMObj.py:4874 +#: FlatCAMObj.py:2646 FlatCAMObj.py:4725 FlatCAMObj.py:4730 FlatCAMObj.py:4880 msgid "Generating CNC Code" msgstr "" -#: FlatCAMObj.py:2672 FlatCAMObj.py:5020 camlib.py:5152 camlib.py:5611 -#: camlib.py:5874 +#: FlatCAMObj.py:2672 FlatCAMObj.py:5026 camlib.py:5151 camlib.py:5610 +#: camlib.py:5873 msgid "" "[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " "format (x, y) \n" @@ -1257,85 +1257,85 @@ msgstr "" msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" msgstr "" -#: FlatCAMObj.py:4425 FlatCAMObj.py:4662 +#: 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:4543 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:4907 FlatCAMObj.py:4917 camlib.py:3335 camlib.py:3344 +#: FlatCAMObj.py:4913 FlatCAMObj.py:4923 camlib.py:3335 camlib.py:3344 msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float." msgstr "" -#: FlatCAMObj.py:4955 +#: FlatCAMObj.py:4961 msgid "[success] Geometry Scale done." msgstr "" -#: FlatCAMObj.py:4972 camlib.py:3414 +#: FlatCAMObj.py:4978 camlib.py:3414 msgid "" "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " "one value in the Offset field." msgstr "" -#: FlatCAMObj.py:4992 +#: FlatCAMObj.py:4998 msgid "[success] Geometry Offset done." msgstr "" -#: FlatCAMObj.py:5546 FlatCAMObj.py:5551 flatcamTools/ToolSolderPaste.py:1361 +#: FlatCAMObj.py:5552 FlatCAMObj.py:5557 flatcamTools/ToolSolderPaste.py:1361 msgid "Export Machine Code ..." msgstr "" -#: FlatCAMObj.py:5557 flatcamTools/ToolSolderPaste.py:1364 +#: FlatCAMObj.py:5563 flatcamTools/ToolSolderPaste.py:1364 msgid "[WARNING_NOTCL] Export Machine Code cancelled ..." msgstr "" -#: FlatCAMObj.py:5570 +#: FlatCAMObj.py:5576 #, python-format msgid "[success] Machine Code file saved to: %s" msgstr "" -#: FlatCAMObj.py:5592 +#: FlatCAMObj.py:5598 #, python-format msgid "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" msgstr "" -#: FlatCAMObj.py:5709 +#: FlatCAMObj.py:5715 #, python-format msgid "" "[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " "CNCJob object." msgstr "" -#: FlatCAMObj.py:5762 +#: FlatCAMObj.py:5768 msgid "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21" msgstr "" -#: FlatCAMObj.py:5775 +#: FlatCAMObj.py:5781 msgid "" "[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " "empty." msgstr "" -#: FlatCAMObj.py:5782 +#: FlatCAMObj.py:5788 msgid "[success] Toolchange G-code was replaced by a custom code." msgstr "" -#: FlatCAMObj.py:5797 flatcamTools/ToolSolderPaste.py:1390 +#: FlatCAMObj.py:5803 flatcamTools/ToolSolderPaste.py:1390 msgid "[WARNING_NOTCL] No such file or directory" msgstr "" -#: FlatCAMObj.py:5817 FlatCAMObj.py:5829 +#: FlatCAMObj.py:5823 FlatCAMObj.py:5835 msgid "" "[WARNING_NOTCL] The used postprocessor file has to have in it's name: " "'toolchange_custom'" msgstr "" -#: FlatCAMObj.py:5835 +#: FlatCAMObj.py:5841 msgid "[ERROR] There is no postprocessor file." msgstr "" @@ -1450,12 +1450,12 @@ msgid "" "Check the resulting GCode." msgstr "" -#: camlib.py:5061 +#: camlib.py:5060 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "" -#: camlib.py:5131 +#: camlib.py:5130 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1464,27 +1464,27 @@ msgid "" "CNC code (Gcode etc)." msgstr "" -#: camlib.py:5138 camlib.py:5634 camlib.py:5897 +#: camlib.py:5137 camlib.py:5633 camlib.py:5896 #, python-format msgid "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" msgstr "" -#: camlib.py:5367 camlib.py:5464 camlib.py:5522 +#: camlib.py:5366 camlib.py:5463 camlib.py:5521 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "" -#: camlib.py:5469 +#: camlib.py:5468 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "" -#: camlib.py:5622 camlib.py:5885 +#: camlib.py:5621 camlib.py:5884 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." msgstr "" -#: camlib.py:5627 camlib.py:5890 +#: camlib.py:5626 camlib.py:5889 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1493,11 +1493,11 @@ msgid "" "code (Gcode etc)." msgstr "" -#: camlib.py:5639 camlib.py:5902 +#: camlib.py:5638 camlib.py:5901 msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." msgstr "" -#: camlib.py:5643 camlib.py:5906 +#: camlib.py:5642 camlib.py:5905 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1506,31 +1506,31 @@ msgid "" "code (Gcode etc)." msgstr "" -#: camlib.py:5650 camlib.py:5913 +#: camlib.py:5649 camlib.py:5912 #, python-format msgid "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" msgstr "" -#: camlib.py:5780 +#: camlib.py:5779 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "" -#: camlib.py:5786 +#: camlib.py:5785 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." msgstr "" -#: camlib.py:5825 +#: camlib.py:5824 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:6039 +#: camlib.py:6036 msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." msgstr "" @@ -2009,8 +2009,8 @@ msgid "[WARNING_NOTCL] Paint cancelled. No shape selected." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:574 flatcamTools/ToolCutOut.py:355 -#: flatcamTools/ToolCutOut.py:512 flatcamTools/ToolCutOut.py:651 -#: flatcamTools/ToolCutOut.py:756 flatcamTools/ToolDblSided.py:363 +#: flatcamTools/ToolCutOut.py:518 flatcamTools/ToolCutOut.py:657 +#: flatcamTools/ToolCutOut.py:762 flatcamTools/ToolDblSided.py:363 msgid "" "[WARNING_NOTCL] Tool diameter value is missing or wrong format. Add it and " "retry." @@ -8209,7 +8209,7 @@ msgid "" "the Geometry object used as a cutout geometry." msgstr "" -#: flatcamTools/ToolCutOut.py:341 flatcamTools/ToolCutOut.py:499 +#: flatcamTools/ToolCutOut.py:341 flatcamTools/ToolCutOut.py:505 #: flatcamTools/ToolNonCopperClear.py:666 flatcamTools/ToolPaint.py:764 #: flatcamTools/ToolPanelize.py:352 flatcamTools/ToolPanelize.py:366 #: flatcamTools/ToolSub.py:237 flatcamTools/ToolSub.py:249 @@ -8230,29 +8230,29 @@ msgid "" "number." msgstr "" -#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:527 -#: flatcamTools/ToolCutOut.py:771 +#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:533 +#: flatcamTools/ToolCutOut.py:777 msgid "" "[WARNING_NOTCL] Margin value is missing or wrong format. Add it and retry." msgstr "" -#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:538 -#: flatcamTools/ToolCutOut.py:666 +#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:544 +#: flatcamTools/ToolCutOut.py:672 msgid "" "[WARNING_NOTCL] Gap size value is missing or wrong format. Add it and retry." msgstr "" -#: flatcamTools/ToolCutOut.py:388 flatcamTools/ToolCutOut.py:545 +#: flatcamTools/ToolCutOut.py:388 flatcamTools/ToolCutOut.py:551 msgid "[WARNING_NOTCL] Number of gaps value is missing. Add it and retry." msgstr "" -#: flatcamTools/ToolCutOut.py:392 flatcamTools/ToolCutOut.py:549 +#: flatcamTools/ToolCutOut.py:392 flatcamTools/ToolCutOut.py:555 msgid "" "[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 " "or 8. Fill in a correct value and retry. " msgstr "" -#: flatcamTools/ToolCutOut.py:397 flatcamTools/ToolCutOut.py:554 +#: flatcamTools/ToolCutOut.py:397 flatcamTools/ToolCutOut.py:560 msgid "" "[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n" "Optionally, this Multi-geo Geometry can be converted to Single-geo " @@ -8260,58 +8260,58 @@ msgid "" "and after that perform Cutout." msgstr "" -#: flatcamTools/ToolCutOut.py:483 flatcamTools/ToolCutOut.py:636 +#: flatcamTools/ToolCutOut.py:489 flatcamTools/ToolCutOut.py:642 msgid "[success] Any form CutOut operation finished." msgstr "" -#: flatcamTools/ToolCutOut.py:503 flatcamTools/ToolPaint.py:768 +#: flatcamTools/ToolCutOut.py:509 flatcamTools/ToolPaint.py:768 #: flatcamTools/ToolPanelize.py:358 #, python-format msgid "[ERROR_NOTCL] Object not found: %s" msgstr "" -#: flatcamTools/ToolCutOut.py:517 flatcamTools/ToolCutOut.py:656 -#: flatcamTools/ToolCutOut.py:761 +#: flatcamTools/ToolCutOut.py:523 flatcamTools/ToolCutOut.py:662 +#: flatcamTools/ToolCutOut.py:767 msgid "" "[ERROR_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." msgstr "" -#: flatcamTools/ToolCutOut.py:641 +#: flatcamTools/ToolCutOut.py:647 msgid "" "Click on the selected geometry object perimeter to create a bridge gap ..." msgstr "" -#: flatcamTools/ToolCutOut.py:682 +#: flatcamTools/ToolCutOut.py:688 msgid "Making manual bridge gap..." msgstr "" -#: flatcamTools/ToolCutOut.py:705 +#: flatcamTools/ToolCutOut.py:711 #, python-format msgid "[ERROR_NOTCL] Could not retrieve Geometry object: %s" msgstr "" -#: flatcamTools/ToolCutOut.py:709 +#: flatcamTools/ToolCutOut.py:715 #, python-format msgid "[ERROR_NOTCL] Geometry object for manual cutout not found: %s" msgstr "" -#: flatcamTools/ToolCutOut.py:719 +#: flatcamTools/ToolCutOut.py:725 msgid "[success] Added manual Bridge Gap." msgstr "" -#: flatcamTools/ToolCutOut.py:736 +#: flatcamTools/ToolCutOut.py:742 #, python-format msgid "[ERROR_NOTCL] Could not retrieve Gerber object: %s" msgstr "" -#: flatcamTools/ToolCutOut.py:740 +#: flatcamTools/ToolCutOut.py:746 msgid "" "[ERROR_NOTCL] There is no Gerber object selected for Cutout.\n" "Select one and try again." msgstr "" -#: flatcamTools/ToolCutOut.py:745 +#: flatcamTools/ToolCutOut.py:751 msgid "" "[ERROR_NOTCL] The selected object has to be of Gerber type.\n" "Select a Gerber file and try again." From 24f9de8c16405c0735b79d4f44e58d636c0888e5 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 8 Jun 2019 00:10:46 +0300 Subject: [PATCH 22/23] - RELEASE 8.918 --- FlatCAMApp.py | 8 ++++---- README.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 4bf8d237..eaa991fa 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -95,7 +95,7 @@ class App(QtCore.QObject): # Version version = 8.918 - version_date = "2019/06/11" + version_date = "2019/06/07" beta = True # current date now @@ -120,9 +120,9 @@ class App(QtCore.QObject): # flag is True if saving action has been triggered save_in_progress = False - # ############### ## - # # Signals # ## - # ############### ## + # ################# + # # Signals ## + # ################# # Inform the user # Handled by: diff --git a/README.md b/README.md index 539ac0db..ad9ca54c 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ CAD program, and create G-Code for Isolation routing. - fixed bug in cncjob TclCommand where the gcode could not be correctly generated due of missing bounds params in obj.options dict - fixed a hardcoded tolerance in FlatCAMGeometry.generatecncjob() and in FlatCAMGeometry.mtool_gen_cncjob() to use the parameter from Preferences - updated translations - +- RELEASE 8.918 5.06.2019 From b824cf6471d32e809c80b1433d784199472bb3a1 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 7 Jun 2019 21:24:59 +0000 Subject: [PATCH 23/23] FlatCAMApp.py edited online with Bitbucket --- FlatCAMApp.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index eaa991fa..ebd5a6aa 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -6119,7 +6119,7 @@ class App(QtCore.QObject): filter = _filter_) if filename == "": - self.inform.emit(_("[WARNING_NOTCL Open Config cancelled.")) + self.inform.emit(_("[WARNING_NOTCL] Open Config cancelled.")) else: self.open_config_file(filename)