From 3d113c89b13e6102088c867b7436d10487114576 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Thu, 9 May 2019 03:43:17 +0300 Subject: [PATCH 01/42] - rework the Gerber parser --- README.md | 4 + camlib.py | 705 ++++++++++++++++++++---------------------------------- 2 files changed, 268 insertions(+), 441 deletions(-) diff --git a/README.md b/README.md index e06800b2..4e7c6b0b 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing. ================================================= +9.05.2019 + +- rework the Gerber parser + 8.05.2019 - added zoom fit for Set Origin command diff --git a/camlib.py b/camlib.py index be9a1665..92b4ab92 100644 --- a/camlib.py +++ b/camlib.py @@ -1920,14 +1920,19 @@ class Gerber (Geometry): ''' apertures = { 'id':{ - 'type':chr, + 'type':string, 'size':float, 'width':float, 'height':float, - 'solid_geometry': [], - 'follow_geometry': [], + 'geometry': [], } } + apertures['geometry'] list elements are dicts + dict = { + 'solid': [], + 'follow': [], + 'clear': [] + } ''' # aperture storage @@ -2227,7 +2232,7 @@ class Gerber (Geometry): ### Cleanup gline = gline.strip(' \r\n') - # log.debug("Line=%3s %s" % (line_num, gline)) + log.debug("Line=%3s %s" % (line_num, gline)) #### Ignored lines ## Comments @@ -2244,37 +2249,30 @@ class Gerber (Geometry): new_polarity = match.group(1) # log.info("Polarity CHANGE, LPC = %s, poly_buff = %s" % (self.is_lpc, poly_buffer)) self.is_lpc = True if new_polarity == 'C' else False + if len(path) > 1 and current_polarity != new_polarity: # finish the current path and add it to the storage # --- Buffered ---- width = self.apertures[last_path_aperture]["size"] - geo = LineString(path) - if not geo.is_empty: - follow_buffer.append(geo) - try: - self.apertures[last_path_aperture]['follow_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['follow_geometry'] = [] - self.apertures[last_path_aperture]['follow_geometry'].append(geo) + if path: + geo_f = LineString(path) + geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) + follow_buffer.append(geo_f) + poly_buffer.append(geo_s) - geo = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) - - if not geo.is_empty: - poly_buffer.append(geo) - if self.is_lpc is True: - try: - self.apertures[last_path_aperture]['clear_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['clear_geometry'] = [] - self.apertures[last_path_aperture]['clear_geometry'].append(geo) + geo_dict = dict() + geo_dict['follow'] = geo_f + if self.is_lpc: + geo_dict['clear'] = geo_s else: - try: - self.apertures[last_path_aperture]['solid_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['solid_geometry'] = [] - self.apertures[last_path_aperture]['solid_geometry'].append(geo) + geo_dict['solid'] = geo_s + try: + self.apertures[last_path_aperture]['geometry'].append(geo_dict) + except KeyError: + self.apertures[last_path_aperture]['geometry'] = [] + self.apertures[last_path_aperture]['geometry'].append(geo_dict) path = [path[-1]] @@ -2437,28 +2435,26 @@ class Gerber (Geometry): flash = Gerber.create_flash_geometry( Point(current_x, current_y), self.apertures[current_aperture], int(self.steps_per_circle)) - if not flash.is_empty: - poly_buffer.append(flash) - if self.is_lpc is True: - try: - self.apertures[current_aperture]['clear_geometry'].append(flash) - except KeyError: - self.apertures[current_aperture]['clear_geometry'] = [] - self.apertures[current_aperture]['clear_geometry'].append(flash) - else: - try: - self.apertures[current_aperture]['follow_geometry'].append(Point( - current_x, current_y)) - except KeyError: - self.apertures[current_aperture]['follow_geometry'] = [] - self.apertures[current_aperture]['follow_geometry'].append(Point( - current_x, current_y)) - try: - self.apertures[current_aperture]['solid_geometry'].append(flash) - except KeyError: - self.apertures[current_aperture]['solid_geometry'] = [] - self.apertures[current_aperture]['solid_geometry'].append(flash) + if not flash.is_empty: + geo_f = Point(current_x, current_y) + geo_s = flash + # follow_buffer.append(geo_f) + poly_buffer.append(geo_s) + + geo_dict = dict() + geo_dict['follow'] = geo_f + if self.is_lpc: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s + try: + self.apertures[current_aperture]['geometry'].append(geo_dict) + except KeyError: + self.apertures[current_aperture] = dict() + self.apertures[current_aperture]['geometry'] = [] + self.apertures[current_aperture]['geometry'].append(geo_dict) + except IndexError: log.warning("Line %d: %s -> Nothing there to flash!" % (line_num, gline)) @@ -2482,37 +2478,25 @@ class Gerber (Geometry): # Take care of the current path with the previous tool if len(path) > 1: - if self.apertures[last_path_aperture]["type"] == 'R': - # do nothing because 'R' type moving aperture is none at once - pass - else: + if self.apertures[current_aperture]["type"] != 'R': + width = self.apertures[current_aperture]["size"] - geo = LineString(path) - if not geo.is_empty: - follow_buffer.append(geo) - try: - self.apertures[last_path_aperture]['follow_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['follow_geometry'] = [] - self.apertures[last_path_aperture]['follow_geometry'].append(geo) + geo_f = LineString(path) + geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) + follow_buffer.append(geo_f) + poly_buffer.append(geo_s) - # --- Buffered ---- - width = self.apertures[last_path_aperture]["size"] - geo = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) - if not geo.is_empty: - poly_buffer.append(geo) - if self.is_lpc is True: - try: - self.apertures[last_path_aperture]['clear_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['clear_geometry'] = [] - self.apertures[last_path_aperture]['clear_geometry'].append(geo) - else: - try: - self.apertures[last_path_aperture]['solid_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['solid_geometry'] = [] - self.apertures[last_path_aperture]['solid_geometry'].append(geo) + geo_dict = dict() + geo_dict['follow'] = geo_f + if self.is_lpc: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s + try: + self.apertures[current_aperture]['geometry'].append(geo_dict) + except KeyError: + self.apertures[current_aperture]['geometry'] = [] + self.apertures[current_aperture]['geometry'].append(geo_dict) path = [path[-1]] @@ -2523,33 +2507,24 @@ class Gerber (Geometry): if len(path) > 1: # Take care of what is left in the path - ## --- Buffered --- width = self.apertures[last_path_aperture]["size"] - geo = LineString(path) - if not geo.is_empty: - follow_buffer.append(geo) - try: - self.apertures[current_aperture]['follow_geometry'].append(geo) - except KeyError: - self.apertures[current_aperture]['follow_geometry'] = [] - self.apertures[current_aperture]['follow_geometry'].append(geo) + geo_f = LineString(path) + geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) + follow_buffer.append(geo_f) + poly_buffer.append(geo_s) - geo = LineString(path).buffer(width/1.999, int(self.steps_per_circle / 4)) - if not geo.is_empty: - poly_buffer.append(geo) - if self.is_lpc is True: - try: - self.apertures[last_path_aperture]['clear_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['clear_geometry'] = [] - self.apertures[last_path_aperture]['clear_geometry'].append(geo) - else: - try: - self.apertures[last_path_aperture]['solid_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['solid_geometry'] = [] - self.apertures[last_path_aperture]['solid_geometry'].append(geo) + geo_dict = dict() + geo_dict['follow'] = geo_f + if self.is_lpc: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s + try: + self.apertures[last_path_aperture]['geometry'].append(geo_dict) + except KeyError: + self.apertures[last_path_aperture]['geometry'] = [] + self.apertures[last_path_aperture]['geometry'].append(geo_dict) path = [path[-1]] @@ -2564,94 +2539,62 @@ class Gerber (Geometry): self.apertures['0'] = {} self.apertures['0']['type'] = 'REG' self.apertures['0']['size'] = 0.0 - self.apertures['0']['solid_geometry'] = [] + self.apertures['0']['geometry'] = [] # if D02 happened before G37 we now have a path with 1 element only so we have to add the current # geo to the poly_buffer otherwise we loose it - if current_operation_code == 2: - if geo: - if not geo.is_empty: - follow_buffer.append(geo) - try: - self.apertures['0']['follow_geometry'].append(geo) - except KeyError: - self.apertures['0']['follow_geometry'] = [] - self.apertures['0']['follow_geometry'].append(geo) - - poly_buffer.append(geo) - if self.is_lpc is True: - try: - self.apertures['0']['clear_geometry'].append(geo) - except KeyError: - self.apertures['0']['clear_geometry'] = [] - self.apertures['0']['clear_geometry'].append(geo) - else: - try: - self.apertures['0']['solid_geometry'].append(geo) - except KeyError: - self.apertures['0']['solid_geometry'] = [] - self.apertures['0']['solid_geometry'].append(geo) - continue + # if current_operation_code == 2: + # if geo: + # if not geo.is_empty: + # follow_buffer.append(geo) + # try: + # self.apertures['0']['follow_geometry'].append(geo) + # except KeyError: + # self.apertures['0']['follow_geometry'] = [] + # self.apertures['0']['follow_geometry'].append(geo) + # + # poly_buffer.append(geo) + # if self.is_lpc is True: + # try: + # self.apertures['0']['clear_geometry'].append(geo) + # except KeyError: + # self.apertures['0']['clear_geometry'] = [] + # self.apertures['0']['clear_geometry'].append(geo) + # else: + # try: + # self.apertures['0']['solid_geometry'].append(geo) + # except KeyError: + # self.apertures['0']['solid_geometry'] = [] + # self.apertures['0']['solid_geometry'].append(geo) + # continue # Only one path defines region? # This can happen if D02 happened before G37 and # is not and error. if len(path) < 3: - # print "ERROR: Path contains less than 3 points:" - # print path - # print "Line (%d): " % line_num, gline - # path = [] - #path = [[current_x, current_y]] continue - # For regions we may ignore an aperture that is None - # self.regions.append({"polygon": Polygon(path), - # "aperture": last_path_aperture}) + geo_f = LineString(path) + geo_s = Polygon(path) + if not geo_s.is_valid: + geo_s = geo_s.buffer(0, int(self.steps_per_circle / 4)) + follow_buffer.append(geo_f) + if not geo_s.is_empty: + poly_buffer.append(geo_s) - # --- Buffered --- - - region = Polygon() - if not region.is_empty: - follow_buffer.append(region) - try: - self.apertures['0']['follow_geometry'].append(region) - except KeyError: - self.apertures['0']['follow_geometry'] = [] - self.apertures['0']['follow_geometry'].append(region) - - region = Polygon(path) - if not region.is_valid: - region = region.buffer(0, int(self.steps_per_circle / 4)) - - if not region.is_empty: - poly_buffer.append(region) - - # we do this for the case that a region is done without having defined any aperture - # Allegro does that - # if current_aperture: - # used_aperture = current_aperture - # elif last_path_aperture: - # used_aperture = last_path_aperture - # else: - # if '0' not in self.apertures: - # self.apertures['0'] = {} - # self.apertures['0']['size'] = 0.0 - # self.apertures['0']['type'] = 'REG' - # self.apertures['0']['solid_geometry'] = [] - # used_aperture = '0' - used_aperture = '0' - if self.is_lpc is True: - try: - self.apertures[used_aperture]['clear_geometry'].append(region) - except KeyError: - self.apertures[used_aperture]['clear_geometry'] = [] - self.apertures[used_aperture]['clear_geometry'].append(region) + geo_dict = dict() + geo_dict['follow'] = geo_f + if not geo_s.is_empty: + if self.is_lpc: + geo_dict['clear'] = geo_s else: - try: - self.apertures[used_aperture]['solid_geometry'].append(region) - except KeyError: - self.apertures[used_aperture]['solid_geometry'] = [] - self.apertures[used_aperture]['solid_geometry'].append(region) + geo_dict['solid'] = geo_s + try: + self.apertures['0']['geometry'].append(geo_dict) + except KeyError: + self.apertures['0'] = dict() + self.apertures['0']['geometry'] = [] + self.apertures['0']['geometry'].append(geo_dict) path = [[current_x, current_y]] # Start new path continue @@ -2717,33 +2660,36 @@ class Gerber (Geometry): maxx = max(path[0][0], path[1][0]) + width / 2 miny = min(path[0][1], path[1][1]) - height / 2 maxy = max(path[0][1], path[1][1]) + height / 2 - log.debug("Coords: %s - %s - %s - %s" % (minx, miny, maxx, maxy)) + # log.debug("Coords: %s - %s - %s - %s" % (minx, miny, maxx, maxy)) - geo = shply_box(minx, miny, maxx, maxy) - poly_buffer.append(geo) - if self.is_lpc is True: - try: - self.apertures[current_aperture]['clear_geometry'].append(geo) - except KeyError: - self.apertures[current_aperture]['clear_geometry'] = [] - self.apertures[current_aperture]['clear_geometry'].append(geo) + r_x = maxx - minx + r_y = maxy - miny + geo_f = Point(r_x, r_y) + geo_s = shply_box(minx, miny, maxx, maxy) + follow_buffer.append(geo_f) + poly_buffer.append(geo_s) + + geo_dict = dict() + geo_dict['follow'] = geo_f + if self.is_lpc: + geo_dict['clear'] = geo_s else: - try: - self.apertures[current_aperture]['solid_geometry'].append(geo) - except KeyError: - self.apertures[current_aperture]['solid_geometry'] = [] - self.apertures[current_aperture]['solid_geometry'].append(geo) + geo_dict['solid'] = geo_s + try: + self.apertures[current_aperture]['geometry'].append(geo_dict) + except KeyError: + self.apertures[current_aperture]['geometry'] = [] + self.apertures[current_aperture]['geometry'].append(geo_dict) except: pass last_path_aperture = current_aperture - # we do this for the case that a region is done without having defined any aperture - # Allegro does that + if last_path_aperture is None: if '0' not in self.apertures: self.apertures['0'] = {} self.apertures['0']['type'] = 'REG' self.apertures['0']['size'] = 0.0 - self.apertures['0']['solid_geometry'] = [] + self.apertures['0']['geometry'] = [] last_path_aperture = '0' else: self.app.inform.emit(_("[WARNING] Coordinates missing, line ignored: %s") % str(gline)) @@ -2753,100 +2699,47 @@ class Gerber (Geometry): if len(path) > 1: geo = None - # --- BUFFERED --- - # this treats the case when we are storing geometry as paths only - if making_region: - # we do this for the case that a region is done without having defined any aperture - # Allegro does that - if last_path_aperture is None: - if '0' not in self.apertures: - self.apertures['0'] = {} - self.apertures['0']['type'] = 'REG' - self.apertures['0']['size'] = 0.0 - self.apertures['0']['solid_geometry'] = [] - last_path_aperture = '0' - geo = Polygon() + if last_path_aperture is None: + if '0' not in self.apertures: + self.apertures['0'] = {} + self.apertures['0']['type'] = 'REG' + self.apertures['0']['size'] = 0.0 + self.apertures['0']['geometry'] = [] + last_path_aperture = '0' + width = 0 else: - geo = LineString(path) + width = self.apertures[last_path_aperture]["size"] - try: - if self.apertures[last_path_aperture]["type"] != 'R': - if not geo.is_empty: - follow_buffer.append(geo) - try: - self.apertures[current_aperture]['follow_geometry'].append(geo) - except KeyError: - self.apertures[current_aperture]['follow_geometry'] = [] - self.apertures[current_aperture]['follow_geometry'].append(geo) - except Exception as e: - log.debug("camlib.Gerber.parse_lines() --> %s" % str(e)) - if not geo.is_empty: - follow_buffer.append(geo) + if path and self.apertures[last_path_aperture]["type"] != 'R': + geo_f = LineString(path) + geo_s = None + + if making_region: try: - self.apertures[current_aperture]['follow_geometry'].append(geo) - except KeyError: - self.apertures[current_aperture]['follow_geometry'] = [] - self.apertures[current_aperture]['follow_geometry'].append(geo) - - # this treats the case when we are storing geometry as solids - if making_region: - # we do this for the case that a region is done without having defined any aperture - # Allegro does that - if last_path_aperture is None: - if '0' not in self.apertures: - self.apertures['0'] = {} - self.apertures['0']['type'] = 'REG' - self.apertures['0']['size'] = 0.0 - self.apertures['0']['solid_geometry'] = [] - last_path_aperture = '0' - # elem = [current_x, current_y] - # if elem != path[-1]: - # path.append([current_x, current_y]) - - try: - geo = Polygon(path) - except ValueError: - log.warning("Problem %s %s" % (gline, line_num)) - self.app.inform.emit(_("[ERROR] Region does not have enough points. " - "File will be processed but there are parser errors. " - "Line number: %s") % str(line_num)) - else: - if last_path_aperture is None: - log.warning("No aperture defined for curent path. (%d)" % line_num) - width = self.apertures[last_path_aperture]["size"] # TODO: WARNING this should fail! - geo = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) - - try: - if self.apertures[last_path_aperture]["type"] != 'R': - if not geo.is_empty: - poly_buffer.append(geo) - if self.is_lpc is True: - try: - self.apertures[last_path_aperture]['clear_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['clear_geometry'] = [] - self.apertures[last_path_aperture]['clear_geometry'].append(geo) - else: - try: - self.apertures[last_path_aperture]['solid_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['solid_geometry'] = [] - self.apertures[last_path_aperture]['solid_geometry'].append(geo) - except Exception as e: - log.debug("camlib.Gerber.parse_lines() --> %s" % str(e)) - poly_buffer.append(geo) - if self.is_lpc is True: - try: - self.apertures[last_path_aperture]['clear_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['clear_geometry'] = [] - self.apertures[last_path_aperture]['clear_geometry'].append(geo) + geo_s = Polygon(path) + poly_buffer.append(geo_s) + except ValueError: + log.warning("Problem %s %s" % (gline, line_num)) + self.app.inform.emit(_("[ERROR] Region does not have enough points. " + "File will be processed but there are parser errors. " + "Line number: %s") % str(line_num)) else: - try: - self.apertures[last_path_aperture]['solid_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['solid_geometry'] = [] - self.apertures[last_path_aperture]['solid_geometry'].append(geo) + geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) + poly_buffer.append(geo_s) + follow_buffer.append(geo_f) + + geo_dict = dict() + geo_dict['follow'] = geo_f + if geo_s: + if self.is_lpc: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s + try: + self.apertures[last_path_aperture]['geometry'].append(geo_dict) + except KeyError: + self.apertures[last_path_aperture]['geometry'] = [] + self.apertures[last_path_aperture]['geometry'].append(geo_dict) # if linear_x or linear_y are None, ignore those if linear_x is not None and linear_y is not None: @@ -2859,98 +2752,53 @@ class Gerber (Geometry): # Not allowed in region mode. elif current_operation_code == 3: - # Create path draw so far. - if len(path) > 1: - # --- Buffered ---- + # finished the path draw until now + width = self.apertures[last_path_aperture]["size"] - # this treats the case when we are storing geometry as paths - geo = LineString(path) - if not geo.is_empty: - try: - if self.apertures[last_path_aperture]["type"] != 'R': - follow_buffer.append(geo) - try: - self.apertures[last_path_aperture]['follow_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['follow_geometry'] = [] - self.apertures[last_path_aperture]['follow_geometry'].append(geo) - except Exception as e: - log.debug("camlib.Gerber.parse_lines() --> G01 match D03 --> %s" % str(e)) - follow_buffer.append(geo) - try: - self.apertures[last_path_aperture]['follow_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['follow_geometry'] = [] - self.apertures[last_path_aperture]['follow_geometry'].append(geo) - - # this treats the case when we are storing geometry as solids - width = self.apertures[last_path_aperture]["size"] - geo = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) - if not geo.is_empty: - try: - if self.apertures[last_path_aperture]["type"] != 'R': - poly_buffer.append(geo) - if self.is_lpc is True: - try: - self.apertures[last_path_aperture]['clear_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['clear_geometry'] = [] - self.apertures[last_path_aperture]['clear_geometry'].append(geo) - else: - try: - self.apertures[last_path_aperture]['solid_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['solid_geometry'] = [] - self.apertures[last_path_aperture]['solid_geometry'].append(geo) - except: - poly_buffer.append(geo) - if self.is_lpc is True: - try: - self.apertures[last_path_aperture]['clear_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['clear_geometry'] = [] - self.apertures[last_path_aperture]['clear_geometry'].append(geo) - else: - try: - self.apertures[last_path_aperture]['solid_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['solid_geometry'] = [] - self.apertures[last_path_aperture]['solid_geometry'].append(geo) + if len(path) > 1 and self.apertures[last_path_aperture]["type"] != 'R': + geo_f = LineString(path) + geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) + follow_buffer.append(geo_f) + poly_buffer.append(geo_s) + geo_dict = dict() + geo_dict['follow'] = geo_f + if self.is_lpc: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s + try: + self.apertures[last_path_aperture]['geometry'].append(geo_dict) + except KeyError: + self.apertures[last_path_aperture]['geometry'] = [] + self.apertures[last_path_aperture]['geometry'].append(geo_dict) # Reset path starting point path = [[linear_x, linear_y]] - # --- BUFFERED --- - # Draw the flash - # this treats the case when we are storing geometry as paths - geo_flash = Point([linear_x, linear_y]) - follow_buffer.append(geo_flash) - try: - self.apertures[current_aperture]['follow_geometry'].append(geo_flash) - except KeyError: - self.apertures[current_aperture]['follow_geometry'] = [] - self.apertures[current_aperture]['follow_geometry'].append(geo_flash) - # this treats the case when we are storing geometry as solids - flash = Gerber.create_flash_geometry( - Point( [linear_x, linear_y]), + # Draw the flash + geo_f = Point(linear_x, linear_y) + geo_s = Gerber.create_flash_geometry( + Point([linear_x, linear_y]), self.apertures[current_aperture], int(self.steps_per_circle) ) - if not flash.is_empty: - poly_buffer.append(flash) - if self.is_lpc is True: - try: - self.apertures[current_aperture]['clear_geometry'].append(flash) - except KeyError: - self.apertures[current_aperture]['clear_geometry'] = [] - self.apertures[current_aperture]['clear_geometry'].append(flash) + follow_buffer.append(geo_f) + if not geo_s.is_empty: + poly_buffer.append(geo_s) + + geo_dict = dict() + geo_dict['follow'] = geo_f + if not geo_s.is_empty: + if self.is_lpc: + geo_dict['clear'] = geo_s else: - try: - self.apertures[current_aperture]['solid_geometry'].append(flash) - except KeyError: - self.apertures[current_aperture]['solid_geometry'] = [] - self.apertures[current_aperture]['solid_geometry'].append(flash) + geo_dict['solid'] = geo_s + try: + self.apertures[current_aperture]['geometry'].append(geo_dict) + except KeyError: + self.apertures[current_aperture]['geometry'] = [] + self.apertures[current_aperture]['geometry'].append(geo_dict) # maybe those lines are not exactly needed but it is easier to read the program as those coordinates # are used in case that circular interpolation is encountered within the Gerber file @@ -3024,6 +2872,8 @@ class Gerber (Geometry): # Nothing created! Pen Up. if current_operation_code == 2: log.warning("Arc with D2. (%d)" % line_num) + + # if we have something drawn until this moment, add it if len(path) > 1: if last_path_aperture is None: log.warning("No aperture defined for curent path. (%d)" % line_num) @@ -3031,32 +2881,24 @@ class Gerber (Geometry): # --- BUFFERED --- width = self.apertures[last_path_aperture]["size"] - # this treats the case when we are storing geometry as paths - geo = LineString(path) - if not geo.is_empty: - follow_buffer.append(geo) - try: - self.apertures[current_aperture]['follow_geometry'].append(geo) - except KeyError: - self.apertures[current_aperture]['follow_geometry'] = [] - self.apertures[current_aperture]['follow_geometry'].append(geo) + geo_f = LineString(path) + geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) + if not geo_s.is_empty: + follow_buffer.append(geo_f) + poly_buffer.append(geo_s) - # this treats the case when we are storing geometry as solids - buffered = LineString(path).buffer(width / 1.999, int(self.steps_per_circle)) - if not buffered.is_empty: - poly_buffer.append(buffered) - if self.is_lpc is True: - try: - self.apertures[last_path_aperture]['clear_geometry'].append(buffered) - except KeyError: - self.apertures[last_path_aperture]['clear_geometry'] = [] - self.apertures[last_path_aperture]['clear_geometry'].append(buffered) + geo_dict = dict() + geo_dict['follow'] = geo_f + if not geo_s.is_empty: + if self.is_lpc: + geo_dict['clear'] = geo_s else: - try: - self.apertures[last_path_aperture]['solid_geometry'].append(buffered) - except KeyError: - self.apertures[last_path_aperture]['solid_geometry'] = [] - self.apertures[last_path_aperture]['solid_geometry'].append(buffered) + geo_dict['solid'] = geo_s + try: + self.apertures[last_path_aperture]['geometry'].append(geo_dict) + except KeyError: + self.apertures[last_path_aperture]['geometry'] = [] + self.apertures[last_path_aperture]['geometry'].append(geo_dict) current_x = circular_x current_y = circular_y @@ -3168,39 +3010,28 @@ class Gerber (Geometry): # In case that G01 (moving) aperture is rectangular, there is no need to still create # another geo since we already created a shapely box using the start and end coordinates found in # path variable. We do it only for other apertures than 'R' type - if self.apertures[last_path_aperture]["type"] == 'R': - pass - else: + if self.apertures[last_path_aperture]["type"] != 'R': # EOF, create shapely LineString if something still in path - ## --- Buffered --- - - # this treats the case when we are storing geometry as paths - geo = LineString(path) - if not geo.is_empty: - follow_buffer.append(geo) - try: - self.apertures[current_aperture]['follow_geometry'].append(geo) - except KeyError: - self.apertures[current_aperture]['follow_geometry'] = [] - self.apertures[current_aperture]['follow_geometry'].append(geo) - - # this treats the case when we are storing geometry as solids width = self.apertures[last_path_aperture]["size"] - geo = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) - if not geo.is_empty: - poly_buffer.append(geo) - if self.is_lpc is True: - try: - self.apertures[last_path_aperture]['clear_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['clear_geometry'] = [] - self.apertures[last_path_aperture]['clear_geometry'].append(geo) + + geo_f = LineString(path) + geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) + follow_buffer.append(geo_f) + if not geo_s.is_empty: + poly_buffer.append(geo_s) + + geo_dict = dict() + geo_dict['follow'] = geo_f + if not geo_s.is_empty: + if self.is_lpc: + geo_dict['clear'] = geo_s else: - try: - self.apertures[last_path_aperture]['solid_geometry'].append(geo) - except KeyError: - self.apertures[last_path_aperture]['solid_geometry'] = [] - self.apertures[last_path_aperture]['solid_geometry'].append(geo) + geo_dict['solid'] = geo_s + try: + self.apertures[current_aperture]['geometry'].append(geo_dict) + except KeyError: + self.apertures[current_aperture]['geometry'] = [] + self.apertures[current_aperture]['geometry'].append(geo_dict) # TODO: make sure to keep track of units changes because right now it seems to happen in a weird way # find out the conversion factor used to convert inside the self.apertures keys: size, width, height @@ -3215,31 +3046,23 @@ class Gerber (Geometry): global_clear_geo = [] for apid in self.apertures: - # first check if we have any clear_geometry (LPC) and if yes added it to the global_clear_geo - if 'clear_geometry' in self.apertures[apid]: - for pol in self.apertures[apid]['clear_geometry']: - global_clear_geo.append(pol) - self.apertures[apid].pop('clear_geometry', None) + if 'geometry' in self.apertures[apid]: + for elem in self.apertures[apid]['geometry']: + if 'clear' in elem: + global_clear_geo.append(elem['clear']) log.warning("Found %d clear polygons." % len(global_clear_geo)) - temp_geo = [] for apid in self.apertures: - if 'solid_geometry' in self.apertures[apid]: - for solid_geo in self.apertures[apid]['solid_geometry']: - for clear_geo in global_clear_geo: - # Make sure that the clear_geo is within the solid_geo otherwise we loose - # the solid_geometry. We want for clear_geometry just to cut into solid_geometry not to - # delete it - if clear_geo.within(solid_geo): - solid_geo = solid_geo.difference(clear_geo) - try: - for poly in solid_geo: - temp_geo.append(poly) - except TypeError: - temp_geo.append(solid_geo) + if 'geometry' in self.apertures[apid]: + for elem in self.apertures[apid]['geometry']: + if 'solid' in elem: + for clear_geo in global_clear_geo: + # Make sure that the clear_geo is within the solid_geo otherwise we loose + # the solid_geometry. We want for clear_geometry just to cut into solid_geometry not to + # delete it + if clear_geo.within(elem['solid']): + elem['solid'] = elem['solid'].difference(clear_geo) - self.apertures[apid]['solid_geometry'] = deepcopy(temp_geo) - temp_geo = [] log.warning("Polygon difference done for %d apertures." % len(self.apertures)) for apid in self.apertures: From aaa81f22b2bf204f8fdefd24d0d4908ae5225d72 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Thu, 9 May 2019 05:01:33 +0300 Subject: [PATCH 02/42] - wip --- FlatCAMObj.py | 19 +++++++++---------- camlib.py | 48 +++++++++++++++++++++++++----------------------- 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/FlatCAMObj.py b/FlatCAMObj.py index c817856b..dfd83612 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -1155,17 +1155,16 @@ class FlatCAMGerber(FlatCAMObj, Gerber): self.app.progress.emit(30) try: if aperture_to_plot_mark in self.apertures: - if type(self.apertures[aperture_to_plot_mark]['solid_geometry']) is not list: - self.apertures[aperture_to_plot_mark]['solid_geometry'] = \ - [self.apertures[aperture_to_plot_mark]['solid_geometry']] - for geo in self.apertures[aperture_to_plot_mark]['solid_geometry']: - if type(geo) == Polygon or type(geo) == LineString: - self.add_mark_shape(apid=aperture_to_plot_mark, shape=geo, color=color, - face_color=color, visible=visibility) - else: - for el in geo: - self.add_mark_shape(apid=aperture_to_plot_mark, shape=el, color=color, + for elem in self.apertures[aperture_to_plot_mark]['geometry']: + if 'solid' in elem: + geo = elem['solid'] + if type(geo) == Polygon or type(geo) == LineString: + self.add_mark_shape(apid=aperture_to_plot_mark, shape=geo, color=color, face_color=color, visible=visibility) + else: + for el in geo: + self.add_mark_shape(apid=aperture_to_plot_mark, shape=el, color=color, + face_color=color, visible=visibility) self.mark_shapes[aperture_to_plot_mark].redraw() self.app.progress.emit(100) diff --git a/camlib.py b/camlib.py index 92b4ab92..df5e81d4 100644 --- a/camlib.py +++ b/camlib.py @@ -2186,8 +2186,8 @@ class Gerber (Geometry): # store here the follow geometry follow_buffer = [] - last_path_aperture = None - current_aperture = None + last_path_aperture = '0' + current_aperture = '0' # 1,2 or 3 from "G01", "G02" or "G03" current_interpolation_mode = None @@ -2451,7 +2451,6 @@ class Gerber (Geometry): try: self.apertures[current_aperture]['geometry'].append(geo_dict) except KeyError: - self.apertures[current_aperture] = dict() self.apertures[current_aperture]['geometry'] = [] self.apertures[current_aperture]['geometry'].append(geo_dict) @@ -2478,8 +2477,8 @@ class Gerber (Geometry): # Take care of the current path with the previous tool if len(path) > 1: - if self.apertures[current_aperture]["type"] != 'R': - width = self.apertures[current_aperture]["size"] + if self.apertures[last_path_aperture]["type"] != 'R': + width = self.apertures[last_path_aperture]["size"] geo_f = LineString(path) geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) @@ -2493,10 +2492,10 @@ class Gerber (Geometry): else: geo_dict['solid'] = geo_s try: - self.apertures[current_aperture]['geometry'].append(geo_dict) + self.apertures[last_path_aperture]['geometry'].append(geo_dict) except KeyError: - self.apertures[current_aperture]['geometry'] = [] - self.apertures[current_aperture]['geometry'].append(geo_dict) + self.apertures[last_path_aperture]['geometry'] = [] + self.apertures[last_path_aperture]['geometry'].append(geo_dict) path = [path[-1]] @@ -2506,7 +2505,6 @@ class Gerber (Geometry): if self.regionon_re.search(gline): if len(path) > 1: # Take care of what is left in the path - width = self.apertures[last_path_aperture]["size"] geo_f = LineString(path) @@ -2592,7 +2590,6 @@ class Gerber (Geometry): try: self.apertures['0']['geometry'].append(geo_dict) except KeyError: - self.apertures['0'] = dict() self.apertures['0']['geometry'] = [] self.apertures['0']['geometry'].append(geo_dict) @@ -2623,6 +2620,14 @@ class Gerber (Geometry): # NOTE: Letting it continue allows it to react to the # operation code. + if current_aperture is None: + if '0' not in self.apertures: + self.apertures['0'] = {} + self.apertures['0']['type'] = 'REG' + self.apertures['0']['size'] = 0.0 + self.apertures['0']['geometry'] = [] + current_aperture = '0' + # Parse coordinates if match.group(2) is not None: linear_x = parse_gerber_number(match.group(2), @@ -2648,6 +2653,7 @@ class Gerber (Geometry): # only add the point if it's a new one otherwise skip it (harder to process) if path[-1] != [current_x, current_y]: path.append([current_x, current_y]) + if making_region is False: # if the aperture is rectangle then add a rectangular shape having as parameters the # coordinates of the start and end point and also the width and height @@ -2684,20 +2690,13 @@ class Gerber (Geometry): pass last_path_aperture = current_aperture - if last_path_aperture is None: - if '0' not in self.apertures: - self.apertures['0'] = {} - self.apertures['0']['type'] = 'REG' - self.apertures['0']['size'] = 0.0 - self.apertures['0']['geometry'] = [] - last_path_aperture = '0' else: self.app.inform.emit(_("[WARNING] Coordinates missing, line ignored: %s") % str(gline)) self.app.inform.emit(_("[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!")) elif current_operation_code == 2: + # finish current path if len(path) > 1: - geo = None if last_path_aperture is None: if '0' not in self.apertures: @@ -2752,10 +2751,10 @@ class Gerber (Geometry): # Not allowed in region mode. elif current_operation_code == 3: - # finished the path draw until now width = self.apertures[last_path_aperture]["size"] - + # finish the path draw until now if len(path) > 1 and self.apertures[last_path_aperture]["type"] != 'R': + geo_f = LineString(path) geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) follow_buffer.append(geo_f) @@ -3028,10 +3027,10 @@ class Gerber (Geometry): else: geo_dict['solid'] = geo_s try: - self.apertures[current_aperture]['geometry'].append(geo_dict) + self.apertures[last_path_aperture]['geometry'].append(geo_dict) except KeyError: - self.apertures[current_aperture]['geometry'] = [] - self.apertures[current_aperture]['geometry'].append(geo_dict) + self.apertures[last_path_aperture]['geometry'] = [] + self.apertures[last_path_aperture]['geometry'].append(geo_dict) # TODO: make sure to keep track of units changes because right now it seems to happen in a weird way # find out the conversion factor used to convert inside the self.apertures keys: size, width, height @@ -3072,6 +3071,9 @@ class Gerber (Geometry): self.apertures[apid][k] = v * conversion_factor # ------------------------------------------------------------- + # for t in self.apertures: + # print(t, self.apertures[t]) + # --- Apply buffer --- # this treats the case when we are storing geometry as paths self.follow_geometry = follow_buffer From a614e2b73e9feb6d9088c6fc7362faf868edcba9 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Thu, 9 May 2019 14:53:08 +0300 Subject: [PATCH 03/42] - Gerber Editor - modifying it to work with the new geometric data structure --- flatcamEditors/FlatCAMGrbEditor.py | 162 ++++++++++++++++------------- 1 file changed, 90 insertions(+), 72 deletions(-) diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index e37d043e..de5016e2 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -2180,7 +2180,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.shapes.enabled = False self.tool_shape.enabled = False - ## List of selected shapes. + ## List of selected geometric elements. self.selected = [] self.key = None # Currently pressed key @@ -2493,8 +2493,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.apsize_entry.set_value(size_val) self.storage_dict[ap_id]['size'] = size_val - self.storage_dict[ap_id]['solid_geometry'] = [] - self.storage_dict[ap_id]['follow_geometry'] = [] + self.storage_dict[ap_id]['geometry'] = [] # self.olddia_newdia dict keeps the evidence on current aperture codes as keys and gets updated on values # each time a aperture code is edited or added @@ -2535,8 +2534,7 @@ class FlatCAMGrbEditor(QtCore.QObject): return self.storage_dict[ap_id]['size'] = size_val - self.storage_dict[ap_id]['solid_geometry'] = [] - self.storage_dict[ap_id]['follow_geometry'] = [] + self.storage_dict[ap_id]['geometry'] = [] # self.olddia_newdia dict keeps the evidence on current aperture codes as keys and gets updated on values # each time a aperture code is edited or added @@ -2978,28 +2976,27 @@ class FlatCAMGrbEditor(QtCore.QObject): def job_thread(self, apid): with self.app.proc_container.new(_("Adding aperture: %s geo ...") % str(apid)): - solid_storage_elem = [] - follow_storage_elem = [] - + storage_elem = [] self.storage_dict[apid] = {} # add the Gerber geometry to editor storage for k, v in self.gerber_obj.apertures[apid].items(): try: - if k == 'solid_geometry': - for geo in v: - if geo: - self.add_gerber_shape(DrawToolShape(geo), solid_storage_elem) - self.storage_dict[apid][k] = solid_storage_elem - elif k == 'follow_geometry': - for geo in v: - if geo is not None: - self.add_gerber_shape(DrawToolShape(geo), follow_storage_elem) - self.storage_dict[apid][k] = follow_storage_elem - elif k == 'clear_geometry': - continue + if k == 'geometry': + for el_dict in v: + if el_dict: + new_el_dict = dict() + if 'solid' in el_dict: + new_el_dict['solid'] =DrawToolShape(deepcopy(el_dict['solid'])) + if 'follow' in el_dict: + new_el_dict['follow'] =DrawToolShape(deepcopy(el_dict['follow'])) + if 'clear' in el_dict: + new_el_dict['clear'] =DrawToolShape(deepcopy(el_dict['clear'])) + storage_elem.append(new_el_dict) + self.add_gerber_shape(DrawToolShape(new_el_dict['solid'])) + self.storage_dict[apid][k] = storage_elem else: - self.storage_dict[apid][k] = v + self.storage_dict[apid][k] = self.gerber_obj.apertures[apid][k] except Exception as e: log.debug("FlatCAMGrbEditor.edit_fcgerber().job_thread() --> %s" % str(e)) # Check promises and clear if exists @@ -3257,7 +3254,7 @@ class FlatCAMGrbEditor(QtCore.QObject): # Replot and reset tool. self.plot_all() - def add_gerber_shape(self, shape, storage): + def add_gerber_shape(self, shape): """ Adds a shape to the shape storage. @@ -3269,7 +3266,7 @@ class FlatCAMGrbEditor(QtCore.QObject): if isinstance(shape, list): for subshape in shape: - self.add_gerber_shape(subshape, storage) + self.add_gerber_shape(subshape) return assert isinstance(shape, DrawToolShape), \ @@ -3284,8 +3281,6 @@ class FlatCAMGrbEditor(QtCore.QObject): if isinstance(shape, DrawToolUtilityShape): self.utility.append(shape) - else: - storage.append(shape) # TODO: Check performance def on_canvas_click(self, event): """ @@ -3590,20 +3585,21 @@ class FlatCAMGrbEditor(QtCore.QObject): for storage in self.storage_dict: try: - for shape in self.storage_dict[storage]['solid_geometry']: - if shape.geo is None: + for elem in self.storage_dict[storage]['geometry']: + if elem['solid'].geo is None: continue - if shape in self.selected: - self.plot_shape(geometry=shape.geo, color=self.app.defaults['global_sel_draw_color'], + if elem['solid'] in self.selected: + self.plot_shape(geometry=elem['solid'].geo, + color=self.app.defaults['global_sel_draw_color'], linewidth=2) continue - self.plot_shape(geometry=shape.geo, color=self.app.defaults['global_draw_color']) + self.plot_shape(geometry=elem['solid'].geo, color=self.app.defaults['global_draw_color']) except KeyError: pass - for shape in self.utility: - self.plot_shape(geometry=shape.geo, linewidth=1) + for elem in self.utility: + self.plot_shape(geometry=elem['solid'].geo, linewidth=1) continue self.shapes.redraw() @@ -3708,28 +3704,28 @@ class FlatCAMGrbEditor(QtCore.QObject): self.build_ui() self.app.inform.emit(_("[success] Done. Apertures geometry deleted.")) - def delete_shape(self, shape): + def delete_shape(self, geo_el): self.is_modified = True - if shape in self.utility: - self.utility.remove(shape) + if geo_el in self.utility: + self.utility.remove(geo_el) return for storage in self.storage_dict: try: - if shape in self.storage_dict[storage]['solid_geometry']: - self.storage_dict[storage]['solid_geometry'].remove(shape) + if geo_el in self.storage_dict[storage]['geometry']: + self.storage_dict[storage]['geometry'].remove(geo_el) except KeyError: pass - if shape in self.selected: - self.selected.remove(shape) # TODO: Check performance + if geo_el in self.selected: + self.selected.remove(geo_el) # 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 = [geo_el for geo_el in self.utility] + for geo_el in for_deletion: + self.delete_shape(geo_el) self.tool_shape.clear(update=True) self.tool_shape.redraw() @@ -3748,17 +3744,17 @@ class FlatCAMGrbEditor(QtCore.QObject): self.tools_gerber[toolname]["button"].setChecked(True) self.on_tool_select(toolname) - def set_selected(self, shape): + def set_selected(self, geo_el): # Remove and add to the end. - if shape in self.selected: - self.selected.remove(shape) + if geo_el in self.selected: + self.selected.remove(geo_el) - self.selected.append(shape) + self.selected.append(geo_el) - def set_unselected(self, shape): - if shape in self.selected: - self.selected.remove(shape) + def set_unselected(self, geo_el): + if geo_el in self.selected: + self.selected.remove(geo_el) def on_array_type_combo(self): if self.array_type_combo.currentIndex() == 0: @@ -3827,17 +3823,27 @@ class FlatCAMGrbEditor(QtCore.QObject): # I populated the combobox such that the index coincide with the join styles value (whcih is really an INT) join_style = self.buffer_corner_cb.currentIndex() + 1 - def buffer_recursion(geom, selection): - if type(geom) == list or type(geom) is MultiPolygon: + def buffer_recursion(geom_el, selection): + if type(geom_el) == list: geoms = list() - for local_geom in geom: + for local_geom in geom_el: geoms.append(buffer_recursion(local_geom, selection=selection)) return geoms else: - if geom in selection: - return DrawToolShape(geom.geo.buffer(buff_value, join_style=join_style)) + if geom_el in selection: + buffered_geom_el = dict() + if 'solid' in geom_el: + buffered_geom_el['solid'] = DrawToolShape(geom_el['solid'].geo.buffer(buff_value, + join_style=join_style)) + if 'follow' in geom_el: + buffered_geom_el['follow'] = DrawToolShape(geom_el['follow'].geo.buffer(buff_value, + join_style=join_style)) + if 'clear' in geom_el: + buffered_geom_el['clear'] = DrawToolShape(geom_el['clear'].geo.buffer(buff_value, + join_style=join_style)) + return buffered_geom_el else: - return geom + return geom_el if not self.apertures_table.selectedItems(): self.app.inform.emit(_( @@ -3849,9 +3855,9 @@ class FlatCAMGrbEditor(QtCore.QObject): try: apid = self.apertures_table.item(x.row(), 1).text() - temp_storage = deepcopy(buffer_recursion(self.storage_dict[apid]['solid_geometry'], self.selected)) - self.storage_dict[apid]['solid_geometry'] = [] - self.storage_dict[apid]['solid_geometry'] = temp_storage + temp_storage = deepcopy(buffer_recursion(self.storage_dict[apid]['geometry'], self.selected)) + self.storage_dict[apid]['geometry'] = [] + self.storage_dict[apid]['geometry'] = temp_storage except Exception as e: log.debug("FlatCAMGrbEditor.buffer() --> %s" % str(e)) @@ -3874,17 +3880,28 @@ class FlatCAMGrbEditor(QtCore.QObject): "Add it and retry.")) return - def scale_recursion(geom, selection): - if type(geom) == list or type(geom) is MultiPolygon: + def scale_recursion(geom_el, selection): + if type(geom_el) == list: geoms = list() - for local_geom in geom: + for local_geom in geom_el: geoms.append(scale_recursion(local_geom, selection=selection)) return geoms else: - if geom in selection: - return DrawToolShape(affinity.scale(geom.geo, scale_factor, scale_factor, origin='center')) + if geom_el in selection: + scaled_geom_el = dict() + if 'solid' in geom_el: + scaled_geom_el['solid'] = DrawToolShape( + affinity.scale(geom_el['solid'].geo, scale_factor, scale_factor, origin='center')) + if 'follow' in geom_el: + scaled_geom_el['follow'] = DrawToolShape( + affinity.scale(geom_el['follow'].geo, scale_factor, scale_factor, origin='center')) + if 'clear' in geom_el: + scaled_geom_el['clear'] = DrawToolShape( + affinity.scale(geom_el['clear'].geo, scale_factor, scale_factor, origin='center')) + + return scaled_geom_el else: - return geom + return geom_el if not self.apertures_table.selectedItems(): self.app.inform.emit(_( @@ -3896,9 +3913,9 @@ class FlatCAMGrbEditor(QtCore.QObject): try: apid = self.apertures_table.item(x.row(), 1).text() - temp_storage = deepcopy(scale_recursion(self.storage_dict[apid]['solid_geometry'], self.selected)) - self.storage_dict[apid]['solid_geometry'] = [] - self.storage_dict[apid]['solid_geometry'] = temp_storage + temp_storage = deepcopy(scale_recursion(self.storage_dict[apid]['geometry'], self.selected)) + self.storage_dict[apid]['geometry'] = [] + self.storage_dict[apid]['geometry'] = temp_storage except Exception as e: log.debug("FlatCAMGrbEditor.on_scale() --> %s" % str(e)) @@ -4581,21 +4598,22 @@ class TransformEditorTool(FlatCAMTool): return def on_rotate_action(self, num): - shape_list = self.draw_app.selected + elem_list = self.draw_app.selected xminlist = [] yminlist = [] xmaxlist = [] ymaxlist = [] - if not shape_list: + if not elem_list: self.app.inform.emit(_("[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!")) return else: with self.app.proc_container.new(_("Appying Rotate")): try: - # first get a bounding box to fit all - for sha in shape_list: - xmin, ymin, xmax, ymax = sha.bounds() + # first get a bounding box to fit all; we use only the 'solids' as those should provide the biggest + # bounding box + for geo_el in elem_list: + xmin, ymin, xmax, ymax = geo_el..bounds() xminlist.append(xmin) yminlist.append(ymin) xmaxlist.append(xmax) From ce0ed2208f9d8a42aec75015bf4ada6d2ce36f7b Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 10 May 2019 15:40:09 +0300 Subject: [PATCH 04/42] - Gerber Editor - working in conversion to the new data format --- README.md | 4 + flatcamEditors/FlatCAMGrbEditor.py | 614 +++++++++++++++++------------ 2 files changed, 369 insertions(+), 249 deletions(-) diff --git a/README.md b/README.md index 4e7c6b0b..0b6f14e9 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing. ================================================= +10.05.2019 + +- Gerber Editor - working in conversion to the new data format + 9.05.2019 - rework the Gerber parser diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index de5016e2..459da094 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -14,7 +14,6 @@ from copy import copy, deepcopy from camlib import * from flatcamGUI.GUIElements import FCEntry, FCComboBox, FCTable, FCDoubleSpinner, LengthEntry, RadioSet, \ SpinBoxDelegate, EvalEntry, EvalEntry2, FCInputDialog, FCButton, OptionalInputSection, FCCheckBox -from flatcamEditors.FlatCAMGeoEditor import FCShapeTool, DrawTool, DrawToolShape, DrawToolUtilityShape, FlatCAMGeoEditor from FlatCAMObj import FlatCAMGerber from FlatCAMTool import FlatCAMTool @@ -32,6 +31,148 @@ if '_' not in builtins.__dict__: _ = gettext.gettext +class DrawToolShape(object): + """ + Encapsulates "shapes" under a common class. + """ + + tolerance = None + + @staticmethod + def get_pts(o): + """ + Returns a list of all points in the object, where + the object can be a Polygon, Not a polygon, or a list + of such. Search is done recursively. + + :param: geometric object + :return: List of points + :rtype: list + """ + pts = [] + + ## Iterable: descend into each item. + try: + for subo in o: + pts += DrawToolShape.get_pts(subo) + + ## Non-iterable + except TypeError: + if o is not None: + ## DrawToolShape: descend into .geo. + if isinstance(o, DrawToolShape): + pts += DrawToolShape.get_pts(o.geo) + + ## Descend into .exerior and .interiors + elif type(o) == Polygon: + pts += DrawToolShape.get_pts(o.exterior) + for i in o.interiors: + pts += DrawToolShape.get_pts(i) + elif type(o) == MultiLineString: + for line in o: + pts += DrawToolShape.get_pts(line) + ## Has .coords: list them. + else: + if DrawToolShape.tolerance is not None: + pts += list(o.simplify(DrawToolShape.tolerance).coords) + else: + pts += list(o.coords) + else: + return + return pts + + def __init__(self, geo={}): + + # Shapely type or list of such + self.geo = geo + self.utility = False + +class DrawToolUtilityShape(DrawToolShape): + """ + Utility shapes are temporary geometry in the editor + to assist in the creation of shapes. For example it + will show the outline of a rectangle from the first + point to the current mouse pointer before the second + point is clicked and the final geometry is created. + """ + + def __init__(self, geo={}): + super(DrawToolUtilityShape, self).__init__(geo=geo) + self.utility = True + + +class DrawTool(object): + """ + Abstract Class representing a tool in the drawing + program. Can generate geometry, including temporary + utility geometry that is updated on user clicks + and mouse motion. + """ + + def __init__(self, draw_app): + self.draw_app = draw_app + self.complete = False + self.points = [] + self.geometry = None # DrawToolShape or None + + def click(self, point): + """ + :param point: [x, y] Coordinate pair. + """ + return "" + + def click_release(self, point): + """ + :param point: [x, y] Coordinate pair. + """ + return "" + + def on_key(self, key): + return None + + def utility_geometry(self, data=None): + return None + + def bounds(self, obj): + def bounds_rec(o): + if type(o) is list: + minx = Inf + miny = Inf + maxx = -Inf + maxy = -Inf + + for k in o: + try: + minx_, miny_, maxx_, maxy_ = bounds_rec(k) + except Exception as e: + log.debug("camlib.Gerber.bounds() --> %s" % str(e)) + return + + minx = min(minx, minx_) + miny = min(miny, miny_) + maxx = max(maxx, maxx_) + maxy = max(maxy, maxy_) + return minx, miny, maxx, maxy + else: + # it's a Shapely object, return it's bounds + return o.geo.bounds + + bounds_coords = bounds_rec(obj) + return bounds_coords + + +class FCShapeTool(DrawTool): + """ + Abstract class for tools that create a shape. + """ + + def __init__(self, draw_app): + DrawTool.__init__(self, draw_app) + + def make(self): + pass + + class FCPad(FCShapeTool): """ Resulting type: Polygon @@ -2159,9 +2300,6 @@ class FlatCAMGrbEditor(QtCore.QObject): # this var will store the state of the toolbar before starting the editor self.toolbar_old_state = False - # holds flattened geometry - self.flat_geometry = [] - # Init GUI self.apdim_lbl.hide() self.apdim_entry.hide() @@ -2660,11 +2798,19 @@ class FlatCAMGrbEditor(QtCore.QObject): else: # aperture code is already in use so we move the pads from the prior tool to the new tool factor = current_table_dia_edited / dia_changed - for shape in self.storage_dict[dia_changed].get_objects(): - geometry.append(DrawToolShape( - MultiLineString([affinity.scale(subgeo, xfact=factor, yfact=factor) for subgeo in shape.geo]))) + geometry = [] + for geo_el in self.storage_dict[dia_changed]: + geometric_data = geo_el.geo + new_geo_el = dict() + if 'solid' in geometric_data: + new_geo_el['solid'] = deepcopy(geometric_data['solid']) + if 'follow' in geometric_data: + new_geo_el['follow'] = deepcopy(geometric_data['follow']) + if 'clear' in geometric_data: + new_geo_el['clear'] = deepcopy(geometric_data['clear']) + # geometry.append(DrawToolShape( + # MultiLineString([affinity.scale(subgeo, xfact=factor, yfact=factor) for subgeo in shape.geo]))) - self.points_edit[current_table_dia_edited].append((0, 0)) self.add_gerber_shape(geometry, self.storage_dict[current_table_dia_edited]) self.on_aperture_delete(apid=dia_changed) @@ -2914,37 +3060,6 @@ class FlatCAMGrbEditor(QtCore.QObject): self.shapes.clear(update=True) self.tool_shape.clear(update=True) - def flatten(self, geometry=None, reset=True, pathonly=False): - """ - Creates a list of non-iterable linear geometry objects. - Polygons are expanded into its exterior pathonly param if specified. - - Results are placed in flat_geometry - - :param geometry: Shapely type or list or list of list of such. - :param reset: Clears the contents of self.flat_geometry. - :param pathonly: Expands polygons into linear elements from the exterior attribute. - """ - - if reset: - self.flat_geometry = [] - ## If iterable, expand recursively. - try: - for geo in geometry: - if geo is not None: - self.flatten(geometry=geo, reset=False, pathonly=pathonly) - - ## Not iterable, do the actual indexing and add. - except TypeError: - if pathonly and type(geometry) == Polygon: - self.flat_geometry.append(geometry.exterior) - self.flatten(geometry=geometry.interiors, - reset=False, - pathonly=True) - else: - self.flat_geometry.append(geometry) - return self.flat_geometry - def edit_fcgerber(self, orig_grb_obj): """ Imports the geometry found in self.apertures from the given FlatCAM Gerber object @@ -2983,17 +3098,9 @@ class FlatCAMGrbEditor(QtCore.QObject): for k, v in self.gerber_obj.apertures[apid].items(): try: if k == 'geometry': - for el_dict in v: - if el_dict: - new_el_dict = dict() - if 'solid' in el_dict: - new_el_dict['solid'] =DrawToolShape(deepcopy(el_dict['solid'])) - if 'follow' in el_dict: - new_el_dict['follow'] =DrawToolShape(deepcopy(el_dict['follow'])) - if 'clear' in el_dict: - new_el_dict['clear'] =DrawToolShape(deepcopy(el_dict['clear'])) - storage_elem.append(new_el_dict) - self.add_gerber_shape(DrawToolShape(new_el_dict['solid'])) + for geo_el in v: + if geo_el: + self.add_gerber_shape(DrawToolShape(geo_el), storage_elem) self.storage_dict[apid][k] = storage_elem else: self.storage_dict[apid][k] = self.gerber_obj.apertures[apid][k] @@ -3101,26 +3208,27 @@ class FlatCAMGrbEditor(QtCore.QObject): grb_obj.apertures[storage_apid] = {} for k, v in storage_val.items(): - if k == 'solid_geometry': + if k == 'geometry': grb_obj.apertures[storage_apid][k] = [] - for geo in v: - new_geo = deepcopy(geo.geo) - grb_obj.apertures[storage_apid][k].append(new_geo) - poly_buffer.append(new_geo) + for geo_el in v: + new_geo = dict() + geometric_data = geo_el.geo + for key in geometric_data: + if key == 'solid': + new_geo[key] = geometric_data['solid'] + poly_buffer.append(deepcopy(new_geo['solid'])) + if key == 'follow': + if isinstance(geometric_data[key], Polygon): + buff_val = -(int(storage_apid) / 2) + geo_f = geo_el.geo.buffer(buff_val).exterior + new_geo[key] = geo_f + else: + new_geo[key] = geometric_data[key] + follow_buffer.append(deepcopy(new_geo['follow'])) + if key == 'clear': + new_geo[key] = geometric_data['clear'] - elif k == 'follow_geometry': - grb_obj.apertures[storage_apid][k] = [] - for geo_f in v: - if isinstance(geo_f.geo, Polygon): - buff_val = -(int(storage_apid) / 2) - geo_f = geo_f.geo.buffer(buff_val).exterior - new_geo = deepcopy(geo_f) - else: - new_geo = deepcopy(geo_f.geo) - grb_obj.apertures[storage_apid][k].append(new_geo) - follow_buffer.append(new_geo) - else: - grb_obj.apertures[storage_apid][k] = deepcopy(v) + grb_obj.apertures[storage_apid][k].append(deepcopy(new_geo)) grb_obj.aperture_macros = deepcopy(self.gerber_obj.aperture_macros) @@ -3218,7 +3326,7 @@ class FlatCAMGrbEditor(QtCore.QObject): selected_apid = self.apertures_table.item(row, 1).text() self.last_aperture_selected = copy(selected_apid) - for obj in self.storage_dict[selected_apid]['solid_geometry']: + for obj in self.storage_dict[selected_apid]['geometry']: self.selected.append(obj) except Exception as e: self.app.log.debug(str(e)) @@ -3230,7 +3338,7 @@ class FlatCAMGrbEditor(QtCore.QObject): return self.options[key] def on_grb_shape_complete(self, storage=None, specific_shape=None, noplot=False): - self.app.log.debug("on_shape_complete()") + self.app.log.debug("on_grb_shape_complete()") if specific_shape: geo = specific_shape @@ -3243,7 +3351,7 @@ class FlatCAMGrbEditor(QtCore.QObject): # Add shape self.add_gerber_shape(geo, storage) else: - stora = self.storage_dict[self.last_aperture_selected]['solid_geometry'] + stora = self.storage_dict[self.last_aperture_selected]['geometry'] self.add_gerber_shape(geo, storage=stora) # Remove any utility shapes @@ -3254,33 +3362,36 @@ class FlatCAMGrbEditor(QtCore.QObject): # Replot and reset tool. self.plot_all() - def add_gerber_shape(self, shape): + def add_gerber_shape(self, shape_element, storage): """ Adds a shape to the shape storage. - :param shape: Shape to be added. - :type shape: DrawToolShape + :param shape_element: Shape to be added. + :type shape_element: DrawToolShape or DrawToolUtilityShape Geometry is stored as a dict with keys: solid, + follow, clear, each value being a list of Shapely objects. The dict can have at least one of the mentioned keys :return: None """ # List of DrawToolShape? - if isinstance(shape, list): - for subshape in shape: - self.add_gerber_shape(subshape) + if isinstance(shape_element, list): + for subshape in shape_element: + self.add_gerber_shape(subshape, storage) return - assert isinstance(shape, DrawToolShape), \ - "Expected a DrawToolShape, got %s" % str(type(shape)) + assert isinstance(shape_element, DrawToolShape), \ + "Expected a DrawToolShape, got %s" % str(type(shape_element)) - assert shape.geo is not None, \ + assert shape_element.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_element.geo, list) and len(shape_element.geo) > 0) or \ + not isinstance(shape_element.geo, list), \ "Shape objects has empty geometry ([])" - if isinstance(shape, DrawToolUtilityShape): - self.utility.append(shape) + if isinstance(shape_element, DrawToolUtilityShape): + self.utility.append(shape_element) + else: + storage.append(shape_element) def on_canvas_click(self, event): """ @@ -3435,9 +3546,10 @@ class FlatCAMGrbEditor(QtCore.QObject): self.app.delete_selection_shape() for storage in self.storage_dict: try: - for obj in self.storage_dict[storage]['solid_geometry']: - if (sel_type is True and poly_selection.contains(obj.geo)) or \ - (sel_type is False and poly_selection.intersects(obj.geo)): + for obj in self.storage_dict[storage]['geometry']: + geometric_data = obj.geo['solid'] + if (sel_type is True and poly_selection.contains(geometric_data)) or \ + (sel_type is False and poly_selection.intersects(geometric_data)): if self.key == self.app.defaults["global_mselect_key"]: if obj in self.selected: self.selected.remove(obj) @@ -3557,15 +3669,17 @@ class FlatCAMGrbEditor(QtCore.QObject): def draw_utility_geometry(self, geo): if type(geo.geo) == list: for el in geo.geo: + geometric_data = el['solid'] # Add the new utility shape self.tool_shape.add( - shape=el, color=(self.app.defaults["global_draw_color"] + '80'), + shape=geometric_data, color=(self.app.defaults["global_draw_color"] + '80'), # face_color=self.app.defaults['global_alt_sel_fill'], update=False, layer=0, tolerance=None) else: + geometric_data = geo.geo['solid'] # Add the new utility shape self.tool_shape.add( - shape=geo.geo, + shape=geometric_data, color=(self.app.defaults["global_draw_color"] + '80'), # face_color=self.app.defaults['global_alt_sel_fill'], update=False, layer=0, tolerance=None) @@ -3586,32 +3700,33 @@ class FlatCAMGrbEditor(QtCore.QObject): for storage in self.storage_dict: try: for elem in self.storage_dict[storage]['geometry']: - if elem['solid'].geo is None: + geometric_data = elem.geo['solid'] + if geometric_data is None: continue - if elem['solid'] in self.selected: - self.plot_shape(geometry=elem['solid'].geo, - color=self.app.defaults['global_sel_draw_color'], - linewidth=2) + if elem in self.selected: + self.plot_shape(geometry=geometric_data, + color=self.app.defaults['global_sel_draw_color']) continue - self.plot_shape(geometry=elem['solid'].geo, color=self.app.defaults['global_draw_color']) + self.plot_shape(geometry=geometric_data, + color=self.app.defaults['global_draw_color']) except KeyError: pass for elem in self.utility: - self.plot_shape(geometry=elem['solid'].geo, linewidth=1) + geometric_data = elem.geo['solid'] + self.plot_shape(geometry=geometric_data) continue self.shapes.redraw() - def plot_shape(self, geometry=None, color='black', linewidth=1): + def plot_shape(self, geometry=None, color='black'): """ Plots a geometric object or list of objects without rendering. Plotted objects are returned as a list. This allows for efficient/animated rendering. :param geometry: Geometry to be plotted (Any Shapely.geom kind or list of such) :param color: Shape color - :param linewidth: Width of lines in # of pixels. :return: List of plotted elements. """ # plot_elements = [] @@ -3667,20 +3782,6 @@ class FlatCAMGrbEditor(QtCore.QObject): except Exception: traceback.print_exc() - def on_shape_complete(self): - self.app.log.debug("on_shape_complete()") - - # Add shape - self.add_gerber_shape(self.active_tool.geometry) - - # Remove any utility shapes - self.delete_utility_geometry() - self.tool_shape.clear(update=True) - - # Replot and reset tool. - self.plot_all() - # self.active_tool = type(self.active_tool)(self) - def get_selected(self): """ Returns list of shapes that are selected in the editor. @@ -3831,15 +3932,16 @@ class FlatCAMGrbEditor(QtCore.QObject): return geoms else: if geom_el in selection: + geometric_data = geom_el.geo buffered_geom_el = dict() if 'solid' in geom_el: - buffered_geom_el['solid'] = DrawToolShape(geom_el['solid'].geo.buffer(buff_value, + buffered_geom_el['solid'] = DrawToolShape(geometric_data['solid'].buffer(buff_value, join_style=join_style)) if 'follow' in geom_el: - buffered_geom_el['follow'] = DrawToolShape(geom_el['follow'].geo.buffer(buff_value, + buffered_geom_el['follow'] = DrawToolShape(geometric_data['follow'].buffer(buff_value, join_style=join_style)) if 'clear' in geom_el: - buffered_geom_el['clear'] = DrawToolShape(geom_el['clear'].geo.buffer(buff_value, + buffered_geom_el['clear'] = DrawToolShape(geometric_data['clear'].buffer(buff_value, join_style=join_style)) return buffered_geom_el else: @@ -3888,16 +3990,17 @@ class FlatCAMGrbEditor(QtCore.QObject): return geoms else: if geom_el in selection: + geometric_data = geom_el.geo scaled_geom_el = dict() if 'solid' in geom_el: scaled_geom_el['solid'] = DrawToolShape( - affinity.scale(geom_el['solid'].geo, scale_factor, scale_factor, origin='center')) + affinity.scale(geometric_data['solid'], scale_factor, scale_factor, origin='center')) if 'follow' in geom_el: scaled_geom_el['follow'] = DrawToolShape( - affinity.scale(geom_el['follow'].geo, scale_factor, scale_factor, origin='center')) + affinity.scale(geometric_data['follow'], scale_factor, scale_factor, origin='center')) if 'clear' in geom_el: scaled_geom_el['clear'] = DrawToolShape( - affinity.scale(geom_el['clear'].geo, scale_factor, scale_factor, origin='center')) + affinity.scale(geometric_data['clear'], scale_factor, scale_factor, origin='center')) return scaled_geom_el else: @@ -4607,117 +4710,126 @@ class TransformEditorTool(FlatCAMTool): if not elem_list: self.app.inform.emit(_("[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!")) return - else: - with self.app.proc_container.new(_("Appying Rotate")): - try: - # first get a bounding box to fit all; we use only the 'solids' as those should provide the biggest - # bounding box - for geo_el in elem_list: - xmin, ymin, xmax, ymax = geo_el..bounds() + + with self.app.proc_container.new(_("Appying Rotate")): + try: + # first get a bounding box to fit all; we use only the 'solids' as those should provide the biggest + # bounding box + for el in elem_list: + if 'solid' in el: + xmin, ymin, xmax, ymax = el['solid'].bounds() xminlist.append(xmin) yminlist.append(ymin) xmaxlist.append(xmax) ymaxlist.append(ymax) + # get the minimum x,y and maximum x,y for all objects selected + xminimal = min(xminlist) + yminimal = min(yminlist) + xmaximal = max(xmaxlist) + ymaximal = max(ymaxlist) + + self.app.progress.emit(20) + px = 0.5 * (xminimal + xmaximal) + py = 0.5 * (yminimal + ymaximal) + + for sel_el in elem_list: + if 'solid' in sel_el: + sel_el['solid'].rotate(-num, point=(px, py)) + if 'follow' in sel_el: + sel_el['follow'].rotate(-num, point=(px, py)) + if 'clear' in sel_el: + sel_el['clear'].rotate(-num, point=(px, py)) + self.draw_app.plot_all() + + self.app.inform.emit(_("[success] Done. Rotate completed.")) + self.app.progress.emit(100) + except Exception as e: + self.app.inform.emit(_("[ERROR_NOTCL] Due of %s, rotation movement was not executed.") % str(e)) + return + + def on_flip(self, axis): + elem_list = self.draw_app.selected + xminlist = [] + yminlist = [] + xmaxlist = [] + ymaxlist = [] + + if not elem_list: + self.app.inform.emit(_("[WARNING_NOTCL] No shape selected. Please Select a shape to flip!")) + return + + with self.app.proc_container.new(_("Applying Flip")): + try: + # get mirroring coords from the point entry + if self.flip_ref_cb.isChecked(): + px, py = eval('{}'.format(self.flip_ref_entry.text())) + # get mirroing coords from the center of an all-enclosing bounding box + else: + # first get a bounding box to fit all; we use only the 'solids' as those should provide the biggest + # bounding box + for el in elem_list: + if 'solid' in el: + xmin, ymin, xmax, ymax = el['solid'].bounds() + xminlist.append(xmin) + yminlist.append(ymin) + xmaxlist.append(xmax) + ymaxlist.append(ymax) + # get the minimum x,y and maximum x,y for all objects selected xminimal = min(xminlist) yminimal = min(yminlist) xmaximal = max(xmaxlist) ymaximal = max(ymaxlist) - self.app.progress.emit(20) + px = 0.5 * (xminimal + xmaximal) + py = 0.5 * (yminimal + ymaximal) - for sel_sha in shape_list: - px = 0.5 * (xminimal + xmaximal) - py = 0.5 * (yminimal + ymaximal) + self.app.progress.emit(20) - sel_sha.rotate(-num, point=(px, py)) - self.draw_app.plot_all() - # self.draw_app.add_shape(DrawToolShape(sel_sha.geo)) + # execute mirroring + for sel_el in elem_list: + if axis is 'X': + if 'solid' in sel_el: + sel_el['solid'].mirror('X', (px, py)) + if 'follow' in sel_el: + sel_el['follow'].mirror('X', (px, py)) + if 'clear' in sel_el: + sel_el['clear'].mirror('X', (px, py)) + self.app.inform.emit(_('[success] Flip on the Y axis done ...')) + elif axis is 'Y': + if 'solid' in sel_el: + sel_el['solid'].mirror('Y', (px, py)) + if 'follow' in sel_el: + sel_el['follow'].mirror('Y', (px, py)) + if 'clear' in sel_el: + sel_el['clear'].mirror('Y', (px, py)) + self.app.inform.emit(_('[success] Flip on the X axis done ...')) + self.draw_app.plot_all() + self.app.progress.emit(100) - # self.draw_app.transform_complete.emit() - - self.app.inform.emit(_("[success] Done. Rotate completed.")) - - self.app.progress.emit(100) - - except Exception as e: - self.app.inform.emit(_("[ERROR_NOTCL] Due of %s, rotation movement was not executed.") % str(e)) - return - - def on_flip(self, axis): - shape_list = self.draw_app.selected - xminlist = [] - yminlist = [] - xmaxlist = [] - ymaxlist = [] - - if not shape_list: - self.app.inform.emit(_("[WARNING_NOTCL] No shape selected. Please Select a shape to flip!")) - return - else: - with self.app.proc_container.new(_("Applying Flip")): - try: - # get mirroring coords from the point entry - if self.flip_ref_cb.isChecked(): - px, py = eval('{}'.format(self.flip_ref_entry.text())) - # get mirroing coords from the center of an all-enclosing bounding box - else: - # first get a bounding box to fit all - for sha in shape_list: - xmin, ymin, xmax, ymax = sha.bounds() - xminlist.append(xmin) - yminlist.append(ymin) - xmaxlist.append(xmax) - ymaxlist.append(ymax) - - # get the minimum x,y and maximum x,y for all objects selected - xminimal = min(xminlist) - yminimal = min(yminlist) - xmaximal = max(xmaxlist) - ymaximal = max(ymaxlist) - - px = 0.5 * (xminimal + xmaximal) - py = 0.5 * (yminimal + ymaximal) - - self.app.progress.emit(20) - - # execute mirroring - for sha in shape_list: - if axis is 'X': - sha.mirror('X', (px, py)) - self.app.inform.emit(_('[success] Flip on the Y axis done ...')) - elif axis is 'Y': - sha.mirror('Y', (px, py)) - self.app.inform.emit(_('[success] Flip on the X axis done ...')) - self.draw_app.plot_all() - - # self.draw_app.add_shape(DrawToolShape(sha.geo)) - # - # self.draw_app.transform_complete.emit() - - self.app.progress.emit(100) - - except Exception as e: - self.app.inform.emit(_("[ERROR_NOTCL] Due of %s, Flip action was not executed.") % str(e)) - return + except Exception as e: + self.app.inform.emit(_("[ERROR_NOTCL] Due of %s, Flip action was not executed.") % str(e)) + return def on_skew(self, axis, num): - shape_list = self.draw_app.selected + elem_list = self.draw_app.selected xminlist = [] yminlist = [] - if not shape_list: + if not elem_list: self.app.inform.emit(_("[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!")) return else: with self.app.proc_container.new(_("Applying Skew")): try: - # first get a bounding box to fit all - for sha in shape_list: - xmin, ymin, xmax, ymax = sha.bounds() - xminlist.append(xmin) - yminlist.append(ymin) + # first get a bounding box to fit all; we use only the 'solids' as those should provide the biggest + # bounding box + for el in elem_list: + if 'solid' in el: + xmin, ymin, xmax, ymax = el['solid'].bounds() + xminlist.append(xmin) + yminlist.append(ymin) # get the minimum x,y and maximum x,y for all objects selected xminimal = min(xminlist) @@ -4725,16 +4837,22 @@ class TransformEditorTool(FlatCAMTool): self.app.progress.emit(20) - for sha in shape_list: + for sel_el in elem_list: if axis is 'X': - sha.skew(num, 0, point=(xminimal, yminimal)) + if 'solid' in sel_el: + sel_el['solid'].skew(num, 0, point=(xminimal, yminimal)) + if 'follow' in sel_el: + sel_el['follow'].skew(num, 0, point=(xminimal, yminimal)) + if 'clear' in sel_el: + sel_el['clear'].skew(num, 0, point=(xminimal, yminimal)) elif axis is 'Y': - sha.skew(0, num, point=(xminimal, yminimal)) - self.draw_app.plot_all() - - # self.draw_app.add_shape(DrawToolShape(sha.geo)) - # - # self.draw_app.transform_complete.emit() + if 'solid' in sel_el: + sel_el['solid'].skew(0, num, point=(xminimal, yminimal)) + if 'follow' in sel_el: + sel_el['follow'].skew(0, num, point=(xminimal, yminimal)) + if 'clear' in sel_el: + sel_el['clear'].skew(0, num, point=(xminimal, yminimal)) + self.draw_app.plot_all() self.app.inform.emit(_('[success] Skew on the %s axis done ...') % str(axis)) self.app.progress.emit(100) @@ -4744,25 +4862,27 @@ class TransformEditorTool(FlatCAMTool): return def on_scale(self, axis, xfactor, yfactor, point=None): - shape_list = self.draw_app.selected + elem_list = self.draw_app.selected xminlist = [] yminlist = [] xmaxlist = [] ymaxlist = [] - if not shape_list: + if not elem_list: self.app.inform.emit(_("[WARNING_NOTCL] No shape selected. Please Select a shape to scale!")) return else: with self.app.proc_container.new(_("Applying Scale")): try: - # first get a bounding box to fit all - for sha in shape_list: - xmin, ymin, xmax, ymax = sha.bounds() - xminlist.append(xmin) - yminlist.append(ymin) - xmaxlist.append(xmax) - ymaxlist.append(ymax) + # first get a bounding box to fit all; we use only the 'solids' as those should provide the biggest + # bounding box + for el in elem_list: + if 'solid' in el: + xmin, ymin, xmax, ymax = el['solid'].bounds() + xminlist.append(xmin) + yminlist.append(ymin) + xmaxlist.append(xmax) + ymaxlist.append(ymax) # get the minimum x,y and maximum x,y for all objects selected xminimal = min(xminlist) @@ -4779,13 +4899,14 @@ class TransformEditorTool(FlatCAMTool): px = 0 py = 0 - for sha in shape_list: - sha.scale(xfactor, yfactor, point=(px, py)) - self.draw_app.plot_all() - - # self.draw_app.add_shape(DrawToolShape(sha.geo)) - # - # self.draw_app.transform_complete.emit() + for sel_el in elem_list: + if 'solid' in sel_el: + sel_el['solid'].scale(xfactor, yfactor, point=(px, py)) + if 'follow' in sel_el: + sel_el['follow'].scale(xfactor, yfactor, point=(px, py)) + if 'clear' in sel_el: + sel_el['clear'].scale(xfactor, yfactor, point=(px, py)) + self.draw_app.plot_all() self.app.inform.emit(_('[success] Scale on the %s axis done ...') % str(axis)) self.app.progress.emit(100) @@ -4794,38 +4915,33 @@ class TransformEditorTool(FlatCAMTool): return def on_offset(self, axis, num): - shape_list = self.draw_app.selected - xminlist = [] - yminlist = [] + elem_list = self.draw_app.selected - if not shape_list: + if not elem_list: self.app.inform.emit(_("[WARNING_NOTCL] No shape selected. Please Select a shape to offset!")) return else: with self.app.proc_container.new(_("Applying Offset")): try: - # first get a bounding box to fit all - for sha in shape_list: - xmin, ymin, xmax, ymax = sha.bounds() - xminlist.append(xmin) - yminlist.append(ymin) - - # get the minimum x,y and maximum x,y for all objects selected - xminimal = min(xminlist) - yminimal = min(yminlist) self.app.progress.emit(20) - for sha in shape_list: + for sel_el in elem_list: if axis is 'X': - sha.offset((num, 0)) + if 'solid' in sel_el: + sel_el['solid'].offset((num, 0)) + if 'follow' in sel_el: + sel_el['follow'].offset((num, 0)) + if 'clear' in sel_el: + sel_el['clear'].offset((num, 0)) elif axis is 'Y': - sha.offset((0, num)) + if 'solid' in sel_el: + sel_el['solid'].offset((0, num)) + if 'follow' in sel_el: + sel_el['follow'].offset((0, num)) + if 'clear' in sel_el: + sel_el['clear'].offset((0, num)) self.draw_app.plot_all() - # self.draw_app.add_shape(DrawToolShape(sha.geo)) - # - # self.draw_app.transform_complete.emit() - self.app.inform.emit(_('[success] Offset on the %s axis done ...') % str(axis)) self.app.progress.emit(100) From b566f4e60125adffde6d5ca9a249074492b1fbdc Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 11 May 2019 03:56:36 +0300 Subject: [PATCH 05/42] - changed date --- FlatCAMApp.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 8776fe82..54b27f0f 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -94,8 +94,8 @@ class App(QtCore.QObject): log.addHandler(handler) # Version - version = 8.916 - version_date = "2019/05/10" + version = 8.917 + version_date = "2019/05/16" beta = True # current date now From 883cf3372ac5a14a92f60ba201c6116bb31d4884 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 11 May 2019 04:41:18 +0300 Subject: [PATCH 06/42] - fixed issue in camlib.CNCjob.generate_from_excellon_by_tool() in the drill path optimization algorithm selection when selecting the MH algorithm. The new API's for Google OR-tools required some changes and also the time parameter can be now just an integer therefore I modified the GUI --- README.md | 6 +++++- camlib.py | 6 +++--- flatcamGUI/FlatCAMGUI.py | 3 ++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 73d366a5..40a60b8c 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,14 @@ CAD program, and create G-Code for Isolation routing. ================================================= +11.05.2019 + +- fixed issue in camlib.CNCjob.generate_from_excellon_by_tool() in the drill path optimization algorithm selection when selecting the MH algorithm. The new API's for Google OR-tools required some changes and also the time parameter can be now just an integer therefore I modified the GUI + 10.05.2019 - Gerber Editor - working in conversion to the new data format -- made sure that only units toggle done in Edit -> Preferences will toggle the data in Preferences. THe menu entry Edit -> Toggle Units and the shortcut key 'Q' will change only the display units in the app +- made sure that only units toggle done in Edit -> Preferences will toggle the data in Preferences. The menu entry Edit -> Toggle Units and the shortcut key 'Q' will change only the display units in the app - optimized Transform tool 9.05.2019 diff --git a/camlib.py b/camlib.py index df5e81d4..12c19c32 100644 --- a/camlib.py +++ b/camlib.py @@ -5240,10 +5240,10 @@ class CNCjob(Geometry): # Set search time limit in milliseconds. if float(self.app.defaults["excellon_search_time"]) != 0: - search_parameters.time_limit_ms = int( - float(self.app.defaults["excellon_search_time"]) * 1000) + search_parameters.time_limit.seconds = int( + float(self.app.defaults["excellon_search_time"])) else: - search_parameters.time_limit_ms = 3000 + search_parameters.time_limit.seconds = 3 # Callback to the distance function. The callback takes two # arguments (the from and to node indices) and returns the distance between them. diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index 0cf0d8b9..11987e9c 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -4525,7 +4525,8 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): ) - self.optimization_time_entry = LengthEntry() + self.optimization_time_entry = IntEntry() + self.optimization_time_entry.setValidator(QtGui.QIntValidator(0, 999)) form_box_excellon.addRow(self.optimization_time_label, self.optimization_time_entry) current_platform = platform.architecture()[0] From af091c7b142d614dccfc2b318c12c063277233e0 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 11 May 2019 04:54:05 +0300 Subject: [PATCH 07/42] - made the Feedrate Rapids parameter to depend on the type of postprocessor choosed. It will be showed only for a postprocessor which the name contain 'marlin' and for any postprocessor's that have 'custom' in the name --- FlatCAMObj.py | 14 ++++++++++++++ README.md | 3 ++- flatcamGUI/ObjectUI.py | 6 ++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/FlatCAMObj.py b/FlatCAMObj.py index dfd83612..0316d921 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -2448,6 +2448,13 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): self.ui.feedrate_probe_entry.setVisible(False) self.ui.feedrate_probe_label.hide() + if 'marlin' in current_pp.lower() or 'custom' in current_pp.lower(): + self.ui.feedrate_rapid_label.show() + self.ui.feedrate_rapid_entry.show() + else: + self.ui.feedrate_rapid_label.hide() + self.ui.feedrate_rapid_entry.hide() + def on_create_cncjob_button_click(self, *args): self.app.report_usage("excellon_on_create_cncjob_button") self.read_form() @@ -4092,6 +4099,13 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): self.ui.feedrate_probe_entry.setVisible(False) self.ui.feedrate_probe_label.hide() + if 'marlin' in current_pp.lower() or 'custom' in current_pp.lower(): + self.ui.fr_rapidlabel.show() + self.ui.cncfeedrate_rapid_entry.show() + else: + self.ui.fr_rapidlabel.hide() + self.ui.cncfeedrate_rapid_entry.hide() + def on_generatecnc_button_click(self, *args): self.app.report_usage("geometry_on_generatecnc_button") diff --git a/README.md b/README.md index 40a60b8c..b14ebefb 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ CAD program, and create G-Code for Isolation routing. 11.05.2019 - fixed issue in camlib.CNCjob.generate_from_excellon_by_tool() in the drill path optimization algorithm selection when selecting the MH algorithm. The new API's for Google OR-tools required some changes and also the time parameter can be now just an integer therefore I modified the GUI +- made the Feedrate Rapids parameter to depend on the type of postprocessor choosed. It will be showed only for a postprocessor which the name contain 'marlin' and for any postprocessor's that have 'custom' in the name 10.05.2019 @@ -21,7 +22,7 @@ CAD program, and create G-Code for Isolation routing. 9.05.2019 -- rework the Gerber parser +- reworked the Gerber parser 8.05.2019 diff --git a/flatcamGUI/ObjectUI.py b/flatcamGUI/ObjectUI.py index 4bf18386..84fd1986 100644 --- a/flatcamGUI/ObjectUI.py +++ b/flatcamGUI/ObjectUI.py @@ -674,6 +674,9 @@ class ExcellonObjectUI(ObjectUI): grid1.addWidget(self.feedrate_rapid_label, 7, 0) self.feedrate_rapid_entry = LengthEntry() grid1.addWidget(self.feedrate_rapid_entry, 7, 1) + # default values is to hide + self.feedrate_rapid_label.hide() + self.feedrate_rapid_entry.hide() # Spindlespeed spdlabel = QtWidgets.QLabel(_('Spindle speed:')) @@ -1188,6 +1191,9 @@ class GeometryObjectUI(ObjectUI): self.grid3.addWidget(self.fr_rapidlabel, 12, 0) self.cncfeedrate_rapid_entry = LengthEntry() self.grid3.addWidget(self.cncfeedrate_rapid_entry, 12, 1) + # default values is to hide + self.fr_rapidlabel.hide() + self.cncfeedrate_rapid_entry.hide() # Cut over 1st point in path self.extracut_cb = FCCheckBox(_('Cut over 1st pt')) From 23fb8b2d7c167bd003ee20002f9b0becb8e61fd4 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 11 May 2019 05:19:42 +0300 Subject: [PATCH 08/42] - fixed the camlib.Gerber functions of mirror, scale, offset, skew and rotate to work with the new data structure for apertures geometry - fixed Gerber Editor selection to work with the new Gerber data structure in self.apertures --- README.md | 2 + camlib.py | 104 ++++++++++++++--------------- flatcamEditors/FlatCAMGrbEditor.py | 40 ++++++----- 3 files changed, 74 insertions(+), 72 deletions(-) diff --git a/README.md b/README.md index b14ebefb..aea31d87 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,8 @@ CAD program, and create G-Code for Isolation routing. - fixed issue in camlib.CNCjob.generate_from_excellon_by_tool() in the drill path optimization algorithm selection when selecting the MH algorithm. The new API's for Google OR-tools required some changes and also the time parameter can be now just an integer therefore I modified the GUI - made the Feedrate Rapids parameter to depend on the type of postprocessor choosed. It will be showed only for a postprocessor which the name contain 'marlin' and for any postprocessor's that have 'custom' in the name +- fixed the camlib.Gerber functions of mirror, scale, offset, skew and rotate to work with the new data structure for apertures geometry +- fixed Gerber Editor selection to work with the new Gerber data structure in self.apertures 10.05.2019 diff --git a/camlib.py b/camlib.py index 12c19c32..b0d7321f 100644 --- a/camlib.py +++ b/camlib.py @@ -3313,8 +3313,7 @@ class Gerber (Geometry): new_obj.append(scale_geom(g)) return new_obj else: - return affinity.scale(obj, xfactor, - yfactor, origin=(px, py)) + return affinity.scale(obj, xfactor, yfactor, origin=(px, py)) self.solid_geometry = scale_geom(self.solid_geometry) self.follow_geometry = scale_geom(self.follow_geometry) @@ -3322,27 +3321,21 @@ class Gerber (Geometry): # we need to scale the geometry stored in the Gerber apertures, too try: for apid in self.apertures: - if 'solid_geometry' in self.apertures[apid]: - self.apertures[apid]['solid_geometry'] = scale_geom(self.apertures[apid]['solid_geometry']) - if 'follow_geometry' in self.apertures[apid]: - self.apertures[apid]['follow_geometry'] = scale_geom(self.apertures[apid]['follow_geometry']) - if 'clear_geometry' in self.apertures[apid]: - self.apertures[apid]['clear_geometry'] = scale_geom(self.apertures[apid]['clear_geometry']) + if 'geometry' in self.apertures[apid]: + for geo_el in self.apertures[apid]['geometry']: + if 'solid' in geo_el: + geo_el['solid'] = scale_geom(geo_el['solid']) + if 'follow' in geo_el: + geo_el['follow'] = scale_geom(geo_el['follow']) + if 'clear' in geo_el: + geo_el['clear'] = scale_geom(geo_el['clear']) + except Exception as e: log.debug('camlib.Gerber.scale() Exception --> %s' % str(e)) return 'fail' self.app.inform.emit(_("[success] Gerber Scale done.")) - - ## solid_geometry ??? - # It's a cascaded union of objects. - # self.solid_geometry = affinity.scale(self.solid_geometry, factor, - # factor, origin=(0, 0)) - - # # Now buffered_paths, flash_geometry and solid_geometry - # self.create_geometry() - def offset(self, vect): """ Offsets the objects' geometry on the XY plane by a given vector. @@ -3385,15 +3378,17 @@ class Gerber (Geometry): # we need to offset the geometry stored in the Gerber apertures, too try: for apid in self.apertures: - self.apertures[apid]['solid_geometry'] = offset_geom(self.apertures[apid]['solid_geometry']) + if 'geometry' in self.apertures[apid]: + for geo_el in self.apertures[apid]['geometry']: + if 'solid' in geo_el: + geo_el['solid'] = offset_geom(geo_el['solid']) + if 'follow' in geo_el: + geo_el['follow'] = offset_geom(geo_el['follow']) + if 'clear' in geo_el: + geo_el['clear'] = offset_geom(geo_el['clear']) + except Exception as e: - log.debug('camlib.Gerber.offset() --> %s' % str(e)) - return 'fail' - try: - for apid in self.apertures: - self.apertures[apid]['follow_geometry'] = offset_geom(self.apertures[apid]['follow_geometry']) - except Exception as e: - log.debug('camlib.Gerber.offset() --> %s' % str(e)) + log.debug('camlib.Gerber.offset() Exception --> %s' % str(e)) return 'fail' self.app.inform.emit(_("[success] Gerber Offset done.")) @@ -3438,20 +3433,19 @@ class Gerber (Geometry): # we need to mirror the geometry stored in the Gerber apertures, too try: for apid in self.apertures: - self.apertures[apid]['solid_geometry'] = mirror_geom(self.apertures[apid]['solid_geometry']) + if 'geometry' in self.apertures[apid]: + for geo_el in self.apertures[apid]['geometry']: + if 'solid' in geo_el: + geo_el['solid'] = mirror_geom(geo_el['solid']) + if 'follow' in geo_el: + geo_el['follow'] = mirror_geom(geo_el['follow']) + if 'clear' in geo_el: + geo_el['clear'] = mirror_geom(geo_el['clear']) except Exception as e: - log.debug('camlib.Gerber.mirror() --> %s' % str(e)) - return 'fail' - try: - for apid in self.apertures: - self.apertures[apid]['follow_geometry'] = mirror_geom(self.apertures[apid]['follow_geometry']) - except Exception as e: - log.debug('camlib.Gerber.mirror() --> %s' % str(e)) + log.debug('camlib.Gerber.mirror() Exception --> %s' % str(e)) return 'fail' - # It's a cascaded union of objects. - # self.solid_geometry = affinity.scale(self.solid_geometry, - # xscale, yscale, origin=(px, py)) + self.app.inform.emit(_("[success] Gerber Mirror done.")) def skew(self, angle_x, angle_y, point): """ @@ -3485,18 +3479,19 @@ class Gerber (Geometry): # we need to skew the geometry stored in the Gerber apertures, too try: for apid in self.apertures: - self.apertures[apid]['solid_geometry'] = skew_geom(self.apertures[apid]['solid_geometry']) + if 'geometry' in self.apertures[apid]: + for geo_el in self.apertures[apid]['geometry']: + if 'solid' in geo_el: + geo_el['solid'] = skew_geom(geo_el['solid']) + if 'follow' in geo_el: + geo_el['follow'] = skew_geom(geo_el['follow']) + if 'clear' in geo_el: + geo_el['clear'] = skew_geom(geo_el['clear']) except Exception as e: - log.debug('camlib.Gerber.skew() --> %s' % str(e)) - return 'fail' - try: - for apid in self.apertures: - self.apertures[apid]['follow_geometry'] = skew_geom(self.apertures[apid]['follow_geometry']) - except Exception as e: - log.debug('camlib.Gerber.skew() --> %s' % str(e)) + log.debug('camlib.Gerber.skew() Exception --> %s' % str(e)) return 'fail' - # self.solid_geometry = affinity.skew(self.solid_geometry, angle_x, angle_y, origin=(px, py)) + self.app.inform.emit(_("[success] Gerber Skew done.")) def rotate(self, angle, point): """ @@ -3523,17 +3518,18 @@ class Gerber (Geometry): # we need to rotate the geometry stored in the Gerber apertures, too try: for apid in self.apertures: - self.apertures[apid]['solid_geometry'] = rotate_geom(self.apertures[apid]['solid_geometry']) + if 'geometry' in self.apertures[apid]: + for geo_el in self.apertures[apid]['geometry']: + if 'solid' in geo_el: + geo_el['solid'] = rotate_geom(geo_el['solid']) + if 'follow' in geo_el: + geo_el['follow'] = rotate_geom(geo_el['follow']) + if 'clear' in geo_el: + geo_el['clear'] = rotate_geom(geo_el['clear']) except Exception as e: - log.debug('camlib.Gerber.rotate() --> %s' % str(e)) + log.debug('camlib.Gerber.rotate() Exception --> %s' % str(e)) return 'fail' - try: - for apid in self.apertures: - self.apertures[apid]['follow_geometry'] = rotate_geom(self.apertures[apid]['follow_geometry']) - except Exception as e: - log.debug('camlib.Gerber.rotate() --> %s' % str(e)) - return 'fail' - # self.solid_geometry = affinity.rotate(self.solid_geometry, angle, origin=(px, py)) + self.app.inform.emit(_("[success] Gerber Rotate done.")) class Excellon(Geometry): diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 459da094..428e4912 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -1803,22 +1803,24 @@ class FCApertureSelect(DrawTool): for storage in self.grb_editor_app.storage_dict: try: - for shape in self.grb_editor_app.storage_dict[storage]['solid_geometry']: - if Point(point).within(shape.geo): - if (self.grb_editor_app.app.defaults["global_mselect_key"] == 'Control' and - key_modifier == Qt.ControlModifier) or \ - (self.grb_editor_app.app.defaults["global_mselect_key"] == 'Shift' and - key_modifier == Qt.ShiftModifier): + for geo_el in self.grb_editor_app.storage_dict[storage]['geometry']: + if 'solid' in geo_el.geo: + geometric_data = geo_el.geo['solid'] + if Point(point).within(geometric_data): + if (self.grb_editor_app.app.defaults["global_mselect_key"] == 'Control' and + key_modifier == Qt.ControlModifier) or \ + (self.grb_editor_app.app.defaults["global_mselect_key"] == 'Shift' and + key_modifier == Qt.ShiftModifier): - if shape in self.draw_app.selected: - self.draw_app.selected.remove(shape) + if geo_el in self.draw_app.selected: + self.draw_app.selected.remove(geo_el) + else: + # add the object to the selected shapes + self.draw_app.selected.append(geo_el) + sel_aperture.add(storage) else: - # add the object to the selected shapes - self.draw_app.selected.append(shape) + self.draw_app.selected.append(geo_el) sel_aperture.add(storage) - else: - self.draw_app.selected.append(shape) - sel_aperture.add(storage) except KeyError: pass @@ -2803,13 +2805,15 @@ class FlatCAMGrbEditor(QtCore.QObject): geometric_data = geo_el.geo new_geo_el = dict() if 'solid' in geometric_data: - new_geo_el['solid'] = deepcopy(geometric_data['solid']) + new_geo_el['solid'] = deepcopy(affinity.scale(geometric_data['solid'], + xfact=factor, yfact=factor)) if 'follow' in geometric_data: - new_geo_el['follow'] = deepcopy(geometric_data['follow']) + new_geo_el['follow'] = deepcopy(affinity.scale(geometric_data['follow'], + xfact=factor, yfact=factor)) if 'clear' in geometric_data: - new_geo_el['clear'] = deepcopy(geometric_data['clear']) - # geometry.append(DrawToolShape( - # MultiLineString([affinity.scale(subgeo, xfact=factor, yfact=factor) for subgeo in shape.geo]))) + new_geo_el['clear'] = deepcopy(affinity.scale(geometric_data['clear'], + xfact=factor, yfact=factor)) + geometry.append(new_geo_el) self.add_gerber_shape(geometry, self.storage_dict[current_table_dia_edited]) From e65800737dd740171f9a273d5f4e5eed92680fd5 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 11 May 2019 05:46:32 +0300 Subject: [PATCH 09/42] - fixed Gerber Editor FCPad class to work with the new Gerber data structure in self.apertures --- README.md | 1 + flatcamEditors/FlatCAMGrbEditor.py | 40 ++++++++++++++++++++++-------- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index aea31d87..6fc4ed48 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ CAD program, and create G-Code for Isolation routing. - made the Feedrate Rapids parameter to depend on the type of postprocessor choosed. It will be showed only for a postprocessor which the name contain 'marlin' and for any postprocessor's that have 'custom' in the name - fixed the camlib.Gerber functions of mirror, scale, offset, skew and rotate to work with the new data structure for apertures geometry - fixed Gerber Editor selection to work with the new Gerber data structure in self.apertures +- fixed Gerber Editor FCPad class to work with the new Gerber data structure in self.apertures 10.05.2019 diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 428e4912..cecf8166 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -155,10 +155,10 @@ class DrawTool(object): return minx, miny, maxx, maxy else: # it's a Shapely object, return it's bounds - return o.geo.bounds + if 'solid' in o.geo: + return o.geo['solid'].bounds - bounds_coords = bounds_rec(obj) - return bounds_coords + return bounds_rec(obj) class FCShapeTool(DrawTool): @@ -206,7 +206,7 @@ class FCPad(FCShapeTool): else: self.dont_execute = False - self.storage_obj = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['solid_geometry'] + self.storage_obj = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['geometry'] self.steps_per_circ = self.draw_app.app.defaults["geometry_circle_steps"] # if those cause KeyError exception it means that the aperture type is not 'R'. Only 'R' type has those keys @@ -248,7 +248,7 @@ class FCPad(FCShapeTool): def util_shape(self, point): # updating values here allows us to change the aperture on the fly, after the Tool has been started - self.storage_obj = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['solid_geometry'] + self.storage_obj = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['geometry'] self.radius = float(self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['size']) / 2 self.steps_per_circ = self.draw_app.app.defaults["geometry_circle_steps"] @@ -271,16 +271,27 @@ class FCPad(FCShapeTool): ap_type = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['type'] if ap_type == 'C': + new_geo_el = dict() + center = Point([point_x, point_y]) - return center.buffer(self.radius) + new_geo_el['solid'] = center.buffer(self.radius) + new_geo_el['follow'] = center + return new_geo_el elif ap_type == 'R': + new_geo_el = dict() + p1 = (point_x - self.half_width, point_y - self.half_height) p2 = (point_x + self.half_width, point_y - self.half_height) p3 = (point_x + self.half_width, point_y + self.half_height) p4 = (point_x - self.half_width, point_y + self.half_height) - return Polygon([p1, p2, p3, p4, p1]) + center = Point([point_x, point_y]) + new_geo_el['solid'] = Polygon([p1, p2, p3, p4, p1]) + new_geo_el['follow'] = center + return new_geo_el elif ap_type == 'O': geo = [] + new_geo_el = dict() + if self.half_height > self.half_width: p1 = (point_x - self.half_width, point_y - self.half_height + self.half_width) p2 = (point_x + self.half_width, point_y - self.half_height + self.half_width) @@ -305,7 +316,11 @@ class FCPad(FCShapeTool): for pt in up_arc: geo.append(pt) geo.append(p4) - return Polygon(geo) + new_geo_el['solid'] = Polygon(geo) + center = Point([point_x, point_y]) + new_geo_el['follow'] = center + return new_geo_el + else: p1 = (point_x - self.half_width + self.half_height, point_y - self.half_height) p2 = (point_x + self.half_width - self.half_height, point_y - self.half_height) @@ -330,7 +345,10 @@ class FCPad(FCShapeTool): geo.append(p4) for pt in left_arc: geo.append(pt) - return Polygon(geo) + new_geo_el['solid'] = Polygon(geo) + center = Point([point_x, point_y]) + new_geo_el['follow'] = center + return new_geo_el else: self.draw_app.app.inform.emit(_( "Incompatible aperture type. Select an aperture with type 'C', 'R' or 'O'.")) @@ -3233,13 +3251,15 @@ class FlatCAMGrbEditor(QtCore.QObject): new_geo[key] = geometric_data['clear'] grb_obj.apertures[storage_apid][k].append(deepcopy(new_geo)) + else: + grb_obj.apertures[storage_apid][k] = v grb_obj.aperture_macros = deepcopy(self.gerber_obj.aperture_macros) new_poly = MultiPolygon(poly_buffer) new_poly = new_poly.buffer(0.00000001) new_poly = new_poly.buffer(-0.00000001) - grb_obj.solid_geometry = new_poly + grb_obj.solid_geometry = deepcopy(new_poly) grb_obj.follow_geometry = deepcopy(follow_buffer) From 6e2392e871d49470887c8e2c71d18f27c0d77570 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 11 May 2019 07:46:19 +0300 Subject: [PATCH 10/42] - fixed camlib.Gerber issues related to what happen after parsing rectangular apertures --- README.md | 1 + camlib.py | 123 +++++++++++++++++++++++++----------------------------- 2 files changed, 57 insertions(+), 67 deletions(-) diff --git a/README.md b/README.md index 6fc4ed48..338e09fd 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ CAD program, and create G-Code for Isolation routing. - fixed the camlib.Gerber functions of mirror, scale, offset, skew and rotate to work with the new data structure for apertures geometry - fixed Gerber Editor selection to work with the new Gerber data structure in self.apertures - fixed Gerber Editor FCPad class to work with the new Gerber data structure in self.apertures +- fixed camlib.Gerber issues related to what happen after parsing rectangular apertures 10.05.2019 diff --git a/camlib.py b/camlib.py index b0d7321f..55e49ca6 100644 --- a/camlib.py +++ b/camlib.py @@ -2186,8 +2186,8 @@ class Gerber (Geometry): # store here the follow geometry follow_buffer = [] - last_path_aperture = '0' - current_aperture = '0' + last_path_aperture = None + current_aperture = None # 1,2 or 3 from "G01", "G02" or "G03" current_interpolation_mode = None @@ -2503,6 +2503,14 @@ class Gerber (Geometry): ### G36* - Begin region if self.regionon_re.search(gline): + if '0' not in self.apertures: + self.apertures['0'] = {} + self.apertures['0']['type'] = 'REG' + self.apertures['0']['size'] = 0.0 + self.apertures['0']['geometry'] = [] + last_path_aperture = '0' + self.apertures[last_path_aperture]['type'] = 'REG' + if len(path) > 1: # Take care of what is left in the path width = self.apertures[last_path_aperture]["size"] @@ -2518,11 +2526,8 @@ class Gerber (Geometry): geo_dict['clear'] = geo_s else: geo_dict['solid'] = geo_s - try: - self.apertures[last_path_aperture]['geometry'].append(geo_dict) - except KeyError: - self.apertures[last_path_aperture]['geometry'] = [] - self.apertures[last_path_aperture]['geometry'].append(geo_dict) + + self.apertures[last_path_aperture]['geometry'].append(geo_dict) path = [path[-1]] @@ -2532,53 +2537,26 @@ class Gerber (Geometry): ### G37* - End region if self.regionoff_re.search(gline): making_region = False - - if '0' not in self.apertures: - self.apertures['0'] = {} - self.apertures['0']['type'] = 'REG' - self.apertures['0']['size'] = 0.0 - self.apertures['0']['geometry'] = [] - # if D02 happened before G37 we now have a path with 1 element only so we have to add the current # geo to the poly_buffer otherwise we loose it # if current_operation_code == 2: - # if geo: - # if not geo.is_empty: - # follow_buffer.append(geo) - # try: - # self.apertures['0']['follow_geometry'].append(geo) - # except KeyError: - # self.apertures['0']['follow_geometry'] = [] - # self.apertures['0']['follow_geometry'].append(geo) - # - # poly_buffer.append(geo) - # if self.is_lpc is True: - # try: - # self.apertures['0']['clear_geometry'].append(geo) - # except KeyError: - # self.apertures['0']['clear_geometry'] = [] - # self.apertures['0']['clear_geometry'].append(geo) - # else: - # try: - # self.apertures['0']['solid_geometry'].append(geo) - # except KeyError: - # self.apertures['0']['solid_geometry'] = [] - # self.apertures['0']['solid_geometry'].append(geo) - # continue # Only one path defines region? # This can happen if D02 happened before G37 and - # is not and error. + # is not an error. if len(path) < 3: continue + # usually the D02 will add the path to the geo but if there is no D02 before G37 here comes the + # rescue geo_f = LineString(path) geo_s = Polygon(path) + if not geo_s.is_valid: geo_s = geo_s.buffer(0, int(self.steps_per_circle / 4)) - follow_buffer.append(geo_f) if not geo_s.is_empty: poly_buffer.append(geo_s) + follow_buffer.append(geo_f) geo_dict = dict() geo_dict['follow'] = geo_f @@ -2587,11 +2565,8 @@ class Gerber (Geometry): geo_dict['clear'] = geo_s else: geo_dict['solid'] = geo_s - try: - self.apertures['0']['geometry'].append(geo_dict) - except KeyError: - self.apertures['0']['geometry'] = [] - self.apertures['0']['geometry'].append(geo_dict) + + self.apertures['0']['geometry'].append(geo_dict) path = [[current_x, current_y]] # Start new path continue @@ -2620,13 +2595,17 @@ class Gerber (Geometry): # NOTE: Letting it continue allows it to react to the # operation code. - if current_aperture is None: + if current_aperture is None or last_path_aperture is None: if '0' not in self.apertures: self.apertures['0'] = {} self.apertures['0']['type'] = 'REG' self.apertures['0']['size'] = 0.0 self.apertures['0']['geometry'] = [] - current_aperture = '0' + if current_aperture is None: + current_aperture = '0' + else: + last_path_aperture = '0' + width = 0 # Parse coordinates if match.group(2) is not None: @@ -2688,7 +2667,9 @@ class Gerber (Geometry): self.apertures[current_aperture]['geometry'].append(geo_dict) except: pass - last_path_aperture = current_aperture + last_path_aperture = current_aperture + else: + last_path_aperture = '0' else: self.app.inform.emit(_("[WARNING] Coordinates missing, line ignored: %s") % str(gline)) @@ -2697,7 +2678,6 @@ class Gerber (Geometry): elif current_operation_code == 2: # finish current path if len(path) > 1: - if last_path_aperture is None: if '0' not in self.apertures: self.apertures['0'] = {} @@ -2709,36 +2689,45 @@ class Gerber (Geometry): else: width = self.apertures[last_path_aperture]["size"] - if path and self.apertures[last_path_aperture]["type"] != 'R': + if self.apertures[last_path_aperture]["type"] is not 'R': geo_f = LineString(path) - geo_s = None + follow_buffer.append(geo_f) if making_region: try: geo_s = Polygon(path) poly_buffer.append(geo_s) except ValueError: - log.warning("Problem %s %s" % (gline, line_num)) - self.app.inform.emit(_("[ERROR] Region does not have enough points. " - "File will be processed but there are parser errors. " - "Line number: %s") % str(line_num)) + log.warning( + "Not enough points in path to create a Polygon %s %s" % (gline, line_num)) else: geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) poly_buffer.append(geo_s) - follow_buffer.append(geo_f) - geo_dict = dict() - geo_dict['follow'] = geo_f - if geo_s: - if self.is_lpc: - geo_dict['clear'] = geo_s - else: - geo_dict['solid'] = geo_s - try: - self.apertures[last_path_aperture]['geometry'].append(geo_dict) - except KeyError: - self.apertures[last_path_aperture]['geometry'] = [] - self.apertures[last_path_aperture]['geometry'].append(geo_dict) + if making_region: + geo_dict = dict() + geo_dict['follow'] = geo_f + if geo_s: + if self.is_lpc: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s + + self.apertures['0']['geometry'].append(geo_dict) + + else: + geo_dict = dict() + geo_dict['follow'] = geo_f + if geo_s: + if self.is_lpc: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s + try: + self.apertures[last_path_aperture]['geometry'].append(geo_dict) + except KeyError: + self.apertures[last_path_aperture]['geometry'] = [] + self.apertures[last_path_aperture]['geometry'].append(geo_dict) # if linear_x or linear_y are None, ignore those if linear_x is not None and linear_y is not None: From 49b917448b7446a915e49e0ab5f26b4d30331c87 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 11 May 2019 17:08:40 +0300 Subject: [PATCH 11/42] - wip in camblib.Gerber --- README.md | 1 + camlib.py | 77 +++++++++++++++++++++++++++++-------------------------- 2 files changed, 42 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 338e09fd..601d8c9d 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ CAD program, and create G-Code for Isolation routing. - fixed Gerber Editor selection to work with the new Gerber data structure in self.apertures - fixed Gerber Editor FCPad class to work with the new Gerber data structure in self.apertures - fixed camlib.Gerber issues related to what happen after parsing rectangular apertures +- wip in camblib.Gerber 10.05.2019 diff --git a/camlib.py b/camlib.py index 55e49ca6..9afa6f3f 100644 --- a/camlib.py +++ b/camlib.py @@ -2203,8 +2203,6 @@ class Gerber (Geometry): previous_x = None previous_y = None - current_d = None - # Absolute or Relative/Incremental coordinates # Not implemented absolute = True @@ -2232,7 +2230,7 @@ class Gerber (Geometry): ### Cleanup gline = gline.strip(' \r\n') - log.debug("Line=%3s %s" % (line_num, gline)) + # log.debug("Line=%3s %s" % (line_num, gline)) #### Ignored lines ## Comments @@ -2256,23 +2254,23 @@ class Gerber (Geometry): # --- Buffered ---- width = self.apertures[last_path_aperture]["size"] - if path: - geo_f = LineString(path) - geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) - follow_buffer.append(geo_f) - poly_buffer.append(geo_s) - geo_dict = dict() - geo_dict['follow'] = geo_f - if self.is_lpc: - geo_dict['clear'] = geo_s - else: - geo_dict['solid'] = geo_s - try: - self.apertures[last_path_aperture]['geometry'].append(geo_dict) - except KeyError: - self.apertures[last_path_aperture]['geometry'] = [] - self.apertures[last_path_aperture]['geometry'].append(geo_dict) + geo_f = LineString(path) + geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) + follow_buffer.append(geo_f) + poly_buffer.append(geo_s) + + geo_dict = dict() + geo_dict['follow'] = geo_f + if self.is_lpc: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s + try: + self.apertures[last_path_aperture]['geometry'].append(geo_dict) + except KeyError: + self.apertures[last_path_aperture]['geometry'] = [] + self.apertures[last_path_aperture]['geometry'].append(geo_dict) path = [path[-1]] @@ -2423,7 +2421,6 @@ class Gerber (Geometry): match = self.opcode_re.search(gline) if match: current_operation_code = int(match.group(1)) - current_d = current_operation_code if current_operation_code == 3: @@ -2630,7 +2627,11 @@ class Gerber (Geometry): # if linear_x or linear_y are None, ignore those if current_x is not None and current_y is not None: # only add the point if it's a new one otherwise skip it (harder to process) - if path[-1] != [current_x, current_y]: + # but if it's the first point in the path in may create an exception + try: + if path[-1] != [current_x, current_y]: + path.append([current_x, current_y]) + except IndexError: path.append([current_x, current_y]) if making_region is False: @@ -2851,11 +2852,8 @@ class Gerber (Geometry): current_interpolation_mode = int(mode) # Set operation code if provided - try: + if d is not None: current_operation_code = int(d) - current_d = current_operation_code - except: - current_operation_code = current_d # Nothing created! Pen Up. if current_operation_code == 2: @@ -2863,8 +2861,16 @@ class Gerber (Geometry): # if we have something drawn until this moment, add it if len(path) > 1: + # if last_path_aperture is None: + # log.warning("No aperture defined for curent path. (%d)" % line_num) if last_path_aperture is None: - log.warning("No aperture defined for curent path. (%d)" % line_num) + if '0' not in self.apertures: + self.apertures['0'] = {} + self.apertures['0']['type'] = 'REG' + self.apertures['0']['size'] = 0.0 + self.apertures['0']['geometry'] = [] + last_path_aperture = '0' + width = 0 # --- BUFFERED --- width = self.apertures[last_path_aperture]["size"] @@ -2926,8 +2932,7 @@ class Gerber (Geometry): # Append path += this_arc - - last_path_aperture = current_aperture + # last_path_aperture = current_aperture continue @@ -2977,7 +2982,7 @@ class Gerber (Geometry): current_x, current_y = circular_x, circular_y path += this_arc - last_path_aperture = current_aperture + # last_path_aperture = current_aperture valid = True break @@ -3023,9 +3028,9 @@ class Gerber (Geometry): # TODO: make sure to keep track of units changes because right now it seems to happen in a weird way # find out the conversion factor used to convert inside the self.apertures keys: size, width, height + file_units = gerber_units if gerber_units else 'IN' app_units = self.app.defaults['units'] - conversion_factor = 25.4 if file_units == 'IN' else (1/25.4) if file_units != app_units else 1 # --- the following section is useful for Gerber editor only --- # @@ -3053,15 +3058,15 @@ class Gerber (Geometry): log.warning("Polygon difference done for %d apertures." % len(self.apertures)) - for apid in self.apertures: - # scale de aperture geometries according to the used units - for k, v in self.apertures[apid].items(): - if k == 'size' or k == 'width' or k == 'height': - self.apertures[apid][k] = v * conversion_factor + # for apid in self.apertures: + # # scale de aperture geometries according to the used units + # for k, v in self.apertures[apid].items(): + # if k == 'size' or k == 'width' or k == 'height': + # self.apertures[apid][k] = v * conversion_factor # ------------------------------------------------------------- # for t in self.apertures: - # print(t, self.apertures[t]) + # print(t, self.apertures[t]['size']) # --- Apply buffer --- # this treats the case when we are storing geometry as paths From 71f094bba50b343dba8396fa972b8e61c24f6296 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 11 May 2019 19:24:57 +0300 Subject: [PATCH 12/42] - completely converted the Gerber editor to the new data structure --- README.md | 1 + flatcamEditors/FlatCAMGrbEditor.py | 241 +++++++++++++++++++++-------- 2 files changed, 176 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index 601d8c9d..75e16ee6 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ CAD program, and create G-Code for Isolation routing. - fixed Gerber Editor FCPad class to work with the new Gerber data structure in self.apertures - fixed camlib.Gerber issues related to what happen after parsing rectangular apertures - wip in camblib.Gerber +- completely converted the Gerber editor to the new data structure 10.05.2019 diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index cecf8166..81575ce5 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -405,7 +405,7 @@ class FCPadArray(FCShapeTool): self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_array.png')) QtGui.QGuiApplication.setOverrideCursor(self.cursor) - self.storage_obj = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['solid_geometry'] + self.storage_obj = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['geometry'] self.steps_per_circ = self.draw_app.app.defaults["geometry_circle_steps"] # if those cause KeyError exception it means that the aperture type is not 'R'. Only 'R' type has those keys @@ -440,8 +440,6 @@ class FCPadArray(FCShapeTool): self.pt = [] - self.draw_app.app.inform.emit(self.start_msg) - geo = self.utility_geometry(data=(self.draw_app.snap_x, self.draw_app.snap_y), static=True) if isinstance(geo, DrawToolShape) and geo.geo is not None: @@ -504,31 +502,40 @@ class FCPadArray(FCShapeTool): dx = data[0] dy = data[1] - geo_list = [] + geo_el_list = [] geo = None self.points = [dx, dy] for item in range(self.pad_array_size): if self.pad_axis == 'X': - geo = self.util_shape(((dx + (self.pad_pitch * item)), dy)) + geo_el = self.util_shape(((dx + (self.pad_pitch * item)), dy)) if self.pad_axis == 'Y': - geo = self.util_shape((dx, (dy + (self.pad_pitch * item)))) + geo_el = self.util_shape((dx, (dy + (self.pad_pitch * item)))) if self.pad_axis == 'A': x_adj = self.pad_pitch * math.cos(math.radians(self.pad_linear_angle)) y_adj = self.pad_pitch * math.sin(math.radians(self.pad_linear_angle)) - geo = self.util_shape( + geo_el = self.util_shape( ((dx + (x_adj * item)), (dy + (y_adj * item))) ) if static is None or static is False: - geo_list.append(affinity.translate(geo, xoff=(dx - self.last_dx), yoff=(dy - self.last_dy))) + new_geo_el = dict() + + if 'solid' in geo_el: + new_geo_el['solid'] = affinity.translate(geo_el['solid'], xoff=(dx - self.last_dx), + yoff=(dy - self.last_dy)) + if 'follow' in geo_el: + new_geo_el['follow'] = affinity.translate(geo_el['solid'], xoff=(dx - self.last_dx), + yoff=(dy - self.last_dy)) + geo_el_list.append(new_geo_el) + else: - geo_list.append(geo) + geo_el_list.append(geo_el) # self.origin = data self.last_dx = dx self.last_dy = dy - return DrawToolUtilityShape(geo_list) + return DrawToolUtilityShape(geo_el_list) else: if data[0] is None and data[1] is None: cdx = self.draw_app.x @@ -544,7 +551,7 @@ class FCPadArray(FCShapeTool): def util_shape(self, point): # updating values here allows us to change the aperture on the fly, after the Tool has been started - self.storage_obj = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['solid_geometry'] + self.storage_obj = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['geometry'] self.radius = float(self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['size']) / 2 self.steps_per_circ = self.draw_app.app.defaults["geometry_circle_steps"] @@ -567,16 +574,26 @@ class FCPadArray(FCShapeTool): ap_type = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['type'] if ap_type == 'C': + new_geo_el = dict() + center = Point([point_x, point_y]) - return center.buffer(self.radius) + new_geo_el['solid'] = center.buffer(self.radius) + new_geo_el['follow'] = center + return new_geo_el elif ap_type == 'R': + new_geo_el = dict() + p1 = (point_x - self.half_width, point_y - self.half_height) p2 = (point_x + self.half_width, point_y - self.half_height) p3 = (point_x + self.half_width, point_y + self.half_height) p4 = (point_x - self.half_width, point_y + self.half_height) - return Polygon([p1, p2, p3, p4, p1]) + new_geo_el['solid'] = Polygon([p1, p2, p3, p4, p1]) + new_geo_el['follow'] = Point([point_x, point_y]) + return new_geo_el elif ap_type == 'O': geo = [] + new_geo_el = dict() + if self.half_height > self.half_width: p1 = (point_x - self.half_width, point_y - self.half_height + self.half_width) p2 = (point_x + self.half_width, point_y - self.half_height + self.half_width) @@ -601,7 +618,11 @@ class FCPadArray(FCShapeTool): for pt in up_arc: geo.append(pt) geo.append(p4) - return Polygon(geo) + + new_geo_el['solid'] = Polygon(geo) + center = Point([point_x, point_y]) + new_geo_el['follow'] = center + return new_geo_el else: p1 = (point_x - self.half_width + self.half_height, point_y - self.half_height) p2 = (point_x + self.half_width - self.half_height, point_y - self.half_height) @@ -626,7 +647,11 @@ class FCPadArray(FCShapeTool): geo.append(p4) for pt in left_arc: geo.append(pt) - return Polygon(geo) + + new_geo_el['solid'] = Polygon(geo) + center = Point([point_x, point_y]) + new_geo_el['follow'] = center + return new_geo_el else: self.draw_app.app.inform.emit(_( "Incompatible aperture type. Select an aperture with type 'C', 'R' or 'O'.")) @@ -697,7 +722,7 @@ class FCPoligonize(FCShapeTool): self.name = 'poligonize' self.draw_app = draw_app - self.start_msg = _("Select shape(s) and then click ...") + self.draw_app.app.inform.emit( _("Select shape(s) and then click ...")) self.draw_app.in_action = True self.make() @@ -807,12 +832,14 @@ class FCRegion(FCShapeTool): self.gridy_size = float(self.draw_app.app.ui.grid_gap_y_entry.get_value()) def utility_geometry(self, data=None): + new_geo_el = dict() x = data[0] y = data[1] if len(self.points) == 0: - return DrawToolUtilityShape(Point(data).buffer(self.buf_val)) + new_geo_el['solid'] = Point(data).buffer(self.buf_val) + return DrawToolUtilityShape(new_geo_el) if len(self.points) == 1: self.temp_points = [x for x in self.points] @@ -873,14 +900,17 @@ class FCRegion(FCShapeTool): self.inter_point = data self.temp_points.append(data) + new_geo_el = dict() if len(self.temp_points) > 1: try: - return DrawToolUtilityShape(LineString(self.temp_points).buffer(self.buf_val, join_style=1)) + new_geo_el['solid'] = LineString(self.temp_points).buffer(self.buf_val, join_style=1) + return DrawToolUtilityShape(new_geo_el) except: pass else: - return DrawToolUtilityShape(Point(self.temp_points).buffer(self.buf_val)) + new_geo_el['solid'] = Point(self.temp_points).buffer(self.buf_val) + return DrawToolUtilityShape(new_geo_el) if len(self.points) > 2: self.temp_points = [x for x in self.points] @@ -933,8 +963,13 @@ class FCRegion(FCShapeTool): self.temp_points.append(self.inter_point) self.temp_points.append(data) + new_geo_el = dict() + + new_geo_el['solid'] = LinearRing(self.temp_points).buffer(self.buf_val, join_style=1) + new_geo_el['follow'] = LinearRing(self.temp_points) + + return DrawToolUtilityShape(new_geo_el) - return DrawToolUtilityShape(LinearRing(self.temp_points).buffer(self.buf_val, join_style=1)) return None def make(self): @@ -947,7 +982,12 @@ class FCRegion(FCShapeTool): else: self.draw_app.last_aperture_selected = '0' - self.geometry = DrawToolShape(Polygon(self.points).buffer(self.buf_val, join_style=2)) + new_geo_el = dict() + + new_geo_el['solid'] = Polygon(self.points).buffer(self.buf_val, join_style=2) + new_geo_el['follow'] = Polygon(self.points).exterior + + self.geometry = DrawToolShape(new_geo_el) self.draw_app.in_action = False self.complete = True self.draw_app.app.inform.emit(_("[success] Done.")) @@ -1038,10 +1078,15 @@ class FCTrack(FCRegion): self.draw_app.app.inform.emit(_('Track Mode 1: 45 degrees ...')) def make(self): + new_geo_el = dict() if len(self.temp_points) == 1: - self.geometry = DrawToolShape(Point(self.temp_points).buffer(self.buf_val)) + new_geo_el['solid'] = Point(self.temp_points).buffer(self.buf_val) + new_geo_el['follow'] = Point(self.temp_points) else: - self.geometry = DrawToolShape(LineString(self.temp_points).buffer(self.buf_val)) + new_geo_el['solid'] = LineString(self.temp_points).buffer(self.buf_val) + new_geo_el['follow'] = LineString(self.temp_points) + + self.geometry = DrawToolShape(new_geo_el) self.draw_app.in_action = False self.complete = True @@ -1055,13 +1100,18 @@ class FCTrack(FCRegion): def click(self, point): self.draw_app.in_action = True self.points.append(point) + new_geo_el = dict() if len(self.temp_points) == 1: - g = DrawToolShape(Point(self.temp_points).buffer(self.buf_val)) + new_geo_el['solid'] = Point(self.temp_points).buffer(self.buf_val) + new_geo_el['follow'] = Point(self.temp_points) else: - g = DrawToolShape(LineString(self.temp_points).buffer(self.buf_val)) + new_geo_el['solid'] = LineString(self.temp_points).buffer(self.buf_val) + new_geo_el['follow'] = LineString(self.temp_points) + + self.draw_app.add_gerber_shape(DrawToolShape(new_geo_el), + self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['geometry']) - self.draw_app.add_gerber_shape(g, self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['solid_geometry']) self.draw_app.plot_all() if len(self.points) > 0: self.draw_app.app.inform.emit(_("Click on next Point or click Right mouse button to complete ...")) @@ -1071,9 +1121,12 @@ class FCTrack(FCRegion): def utility_geometry(self, data=None): self.update_grid_info() + new_geo_el = dict() if len(self.points) == 0: - return DrawToolUtilityShape(Point(data).buffer(self.buf_val)) + new_geo_el['solid'] = Point(data).buffer(self.buf_val) + + return DrawToolUtilityShape(new_geo_el) elif len(self.points) > 0: self.temp_points = [self.points[-1]] @@ -1129,9 +1182,11 @@ class FCTrack(FCRegion): self.temp_points.append(data) if len(self.temp_points) == 1: - return DrawToolUtilityShape(Point(self.temp_points).buffer(self.buf_val)) + new_geo_el['solid'] = Point(self.temp_points).buffer(self.buf_val) + return DrawToolUtilityShape(new_geo_el) - return DrawToolUtilityShape(LineString(self.temp_points).buffer(self.buf_val)) + new_geo_el['solid'] = LineString(self.temp_points).buffer(self.buf_val) + return DrawToolUtilityShape(new_geo_el) def on_key(self, key): if key == 'Backspace' or key == QtCore.Qt.Key_Backspace: @@ -1239,9 +1294,8 @@ 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]['solid_geometry'] + self.storage_obj = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['geometry'] - self.start_msg = _("Click on Center point ...") self.draw_app.app.inform.emit(_("Click on Center point ...")) self.steps_per_circ = self.draw_app.app.defaults["gerber_circle_steps"] @@ -1260,15 +1314,19 @@ class FCDisc(FCShapeTool): return "" def utility_geometry(self, data=None): + new_geo_el = dict() if len(self.points) == 1: p1 = self.points[0] p2 = data radius = sqrt((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2) - return DrawToolUtilityShape(Point(p1).buffer((radius + self.buf_val / 2), int(self.steps_per_circ / 4))) + new_geo_el['solid'] = Point(p1).buffer((radius + self.buf_val / 2), int(self.steps_per_circ / 4)) + return DrawToolUtilityShape(new_geo_el) return None def make(self): + new_geo_el = dict() + try: QtGui.QGuiApplication.restoreOverrideCursor() except: @@ -1279,7 +1337,11 @@ class FCDisc(FCShapeTool): p1 = self.points[0] p2 = self.points[1] radius = distance(p1, p2) - self.geometry = DrawToolShape(Point(p1).buffer((radius + self.buf_val / 2), int(self.steps_per_circ / 4))) + + new_geo_el['solid'] = Point(p1).buffer((radius + self.buf_val / 2), int(self.steps_per_circ / 4)) + new_geo_el['follow'] = Point(p1).buffer((radius + self.buf_val / 2), int(self.steps_per_circ / 4)).exterior + self.geometry = DrawToolShape(new_geo_el) + self.draw_app.in_action = False self.complete = True self.draw_app.app.inform.emit(_("[success] Done.")) @@ -1302,7 +1364,6 @@ class FCSemiDisc(FCShapeTool): self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_semidisc.png')) QtGui.QGuiApplication.setOverrideCursor(self.cursor) - self.start_msg = _("Click on Center point ...") self.draw_app.app.inform.emit(_("Click on Center point ...")) # Direction of rotation between point 1 and 2. @@ -1319,7 +1380,7 @@ 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]['solid_geometry'] + self.storage_obj = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['geometry'] self.steps_per_circ = self.draw_app.app.defaults["gerber_circle_steps"] @@ -1372,11 +1433,16 @@ class FCSemiDisc(FCShapeTool): return _('Mode: Center -> Start -> Stop. Click on Center point ...') def utility_geometry(self, data=None): + new_geo_el = dict() + new_geo_el_pt1 = dict() + new_geo_el_pt2 = dict() + new_geo_el_pt3 = dict() + if len(self.points) == 1: # Show the radius center = self.points[0] p1 = data - - return DrawToolUtilityShape(LineString([center, p1])) + new_geo_el['solid'] = LineString([center, p1]) + return DrawToolUtilityShape(new_geo_el) if len(self.points) == 2: # Show the arc @@ -1389,9 +1455,10 @@ class FCSemiDisc(FCShapeTool): startangle = arctan2(p1[1] - center[1], p1[0] - center[0]) stopangle = arctan2(p2[1] - center[1], p2[0] - center[0]) - return DrawToolUtilityShape([LineString(arc(center, radius, startangle, stopangle, - self.direction, self.steps_per_circ)), - Point(center)]) + new_geo_el['solid'] = LineString( + arc(center, radius, startangle, stopangle, self.direction, self.steps_per_circ)) + new_geo_el_pt1['solid'] = Point(center) + return DrawToolUtilityShape([new_geo_el, new_geo_el_pt1]) elif self.mode == '132': p1 = array(self.points[0]) @@ -1409,9 +1476,13 @@ class FCSemiDisc(FCShapeTool): startangle = arctan2(p1[1] - center[1], p1[0] - center[0]) stopangle = arctan2(p3[1] - center[1], p3[0] - center[0]) - return DrawToolUtilityShape([LineString(arc(center, radius, startangle, stopangle, - direction, self.steps_per_circ)), - Point(center), Point(p1), Point(p3)]) + new_geo_el['solid'] = LineString( + arc(center, radius, startangle, stopangle, direction, self.steps_per_circ)) + new_geo_el_pt2['solid'] = Point(center) + new_geo_el_pt1['solid'] = Point(p1) + new_geo_el_pt3['solid'] = Point(p3) + + return DrawToolUtilityShape([new_geo_el, new_geo_el_pt2, new_geo_el_pt1, new_geo_el_pt3]) else: # '12c' p1 = array(self.points[0]) @@ -1441,14 +1512,17 @@ class FCSemiDisc(FCShapeTool): startangle = arctan2(p1[1] - center[1], p1[0] - center[0]) stopangle = arctan2(p2[1] - center[1], p2[0] - center[0]) - return DrawToolUtilityShape([LineString(arc(center, radius, startangle, stopangle, - self.direction, self.steps_per_circ)), - Point(center)]) + new_geo_el['solid'] = LineString( + arc(center, radius, startangle, stopangle, self.direction, self.steps_per_circ)) + new_geo_el_pt2['solid'] = Point(center) + + return DrawToolUtilityShape([new_geo_el, new_geo_el_pt2]) return None def make(self): self.draw_app.current_storage = self.storage_obj + new_geo_el = dict() if self.mode == 'c12': center = self.points[0] @@ -1458,8 +1532,11 @@ class FCSemiDisc(FCShapeTool): radius = distance(center, p1) + (self.buf_val / 2) startangle = arctan2(p1[1] - center[1], p1[0] - center[0]) stopangle = arctan2(p2[1] - center[1], p2[0] - center[0]) - self.geometry = DrawToolShape(Polygon(arc(center, radius, startangle, stopangle, - self.direction, self.steps_per_circ))) + new_geo_el['solid'] = Polygon( + arc(center, radius, startangle, stopangle, self.direction, self.steps_per_circ)) + new_geo_el['follow'] = Polygon( + arc(center, radius, startangle, stopangle, self.direction, self.steps_per_circ)).exterior + self.geometry = DrawToolShape(new_geo_el) elif self.mode == '132': p1 = array(self.points[0]) @@ -1473,8 +1550,10 @@ class FCSemiDisc(FCShapeTool): startangle = arctan2(p1[1] - center[1], p1[0] - center[0]) stopangle = arctan2(p3[1] - center[1], p3[0] - center[0]) - self.geometry = DrawToolShape(Polygon(arc(center, radius, startangle, stopangle, - direction, self.steps_per_circ))) + new_geo_el['solid'] = Polygon(arc(center, radius, startangle, stopangle, direction, self.steps_per_circ)) + new_geo_el['follow'] = Polygon( + arc(center, radius, startangle, stopangle, direction, self.steps_per_circ)).exterior + self.geometry = DrawToolShape(new_geo_el) else: # self.mode == '12c' p1 = array(self.points[0]) @@ -1506,8 +1585,12 @@ class FCSemiDisc(FCShapeTool): startangle = arctan2(p1[1] - center[1], p1[0] - center[0]) stopangle = arctan2(p2[1] - center[1], p2[0] - center[0]) - self.geometry = DrawToolShape(Polygon(arc(center, radius, startangle, stopangle, - self.direction, self.steps_per_circ))) + new_geo_el['solid'] = Polygon( + arc(center, radius, startangle, stopangle, self.direction, self.steps_per_circ)) + new_geo_el['follow'] = Polygon( + arc(center, radius, startangle, stopangle, self.direction, self.steps_per_circ)).exterior + self.geometry = DrawToolShape(new_geo_el) + self.draw_app.in_action = False self.complete = True self.draw_app.app.inform.emit(_("[success] Done.")) @@ -1527,7 +1610,7 @@ class FCScale(FCShapeTool): self.draw_app = draw_app self.app = draw_app.app - self.start_msg = _("Scale the selected Gerber apertures ...") + self.draw_app.app.inform.emit(_("Scale the selected Gerber apertures ...")) self.origin = (0, 0) if self.draw_app.app.ui.splitter.sizes()[0] == 0: @@ -1569,7 +1652,7 @@ class FCBuffer(FCShapeTool): self.draw_app = draw_app self.app = draw_app.app - self.start_msg = _("Buffer the selected apertures ...") + self.draw_app.app.inform.emit(_("Buffer the selected apertures ...")) self.origin = (0, 0) if self.draw_app.app.ui.splitter.sizes()[0] == 0: @@ -1693,11 +1776,19 @@ class FCApertureMove(FCShapeTool): sel_shapes_to_be_deleted = [] for sel_dia in self.selected_apertures: - self.current_storage = self.draw_app.storage_dict[sel_dia]['solid_geometry'] + self.current_storage = self.draw_app.storage_dict[sel_dia]['geometry'] for select_shape in self.draw_app.get_selected(): if select_shape in self.current_storage: + geometric_data = select_shape.geo + new_geo_el = dict() + if 'solid' in geometric_data: + new_geo_el['solid'] = affinity.translate(geometric_data['solid'], xoff=dx, yoff=dy) + if 'follow' in geometric_data: + new_geo_el['follow'] = affinity.translate(geometric_data['follow'], xoff=dx, yoff=dy) + if 'clear' in geometric_data: + new_geo_el['clear'] = affinity.translate(geometric_data['clear'], xoff=dx, yoff=dy) - self.geometry.append(DrawToolShape(affinity.translate(select_shape.geo, xoff=dx, yoff=dy))) + self.geometry.append(DrawToolShape(new_geo_el)) self.current_storage.remove(select_shape) sel_shapes_to_be_deleted.append(select_shape) self.draw_app.on_grb_shape_complete(self.current_storage, noplot=True) @@ -1733,9 +1824,15 @@ class FCApertureMove(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)) - geo_list = [affinity.translate(geom.geo, xoff=dx, yoff=dy) for geom in self.draw_app.get_selected()] + for geom in self.draw_app.get_selected(): + new_geo_el = dict() + if 'solid' in geom.geo: + new_geo_el['solid'] = affinity.translate(geom.geo['solid'], xoff=dx, yoff=dy) + if 'follow' in geom.geo: + new_geo_el['follow'] = affinity.translate(geom.geo['follow'], xoff=dx, yoff=dy) + if 'clear' in geom.geo: + new_geo_el['clear'] = affinity.translate(geom.geo['clear'], xoff=dx, yoff=dy) + geo_list.append(deepcopy(new_geo_el)) return DrawToolUtilityShape(geo_list) @@ -1751,10 +1848,18 @@ class FCApertureCopy(FCApertureMove): sel_shapes_to_be_deleted = [] for sel_dia in self.selected_apertures: - self.current_storage = self.draw_app.storage_dict[sel_dia]['solid_geometry'] + self.current_storage = self.draw_app.storage_dict[sel_dia]['geometry'] for select_shape in self.draw_app.get_selected(): if select_shape in self.current_storage: - self.geometry.append(DrawToolShape(affinity.translate(select_shape.geo, xoff=dx, yoff=dy))) + geometric_data = select_shape.geo + new_geo_el = dict() + if 'solid' in geometric_data: + new_geo_el['solid'] = affinity.translate(geometric_data['solid'], xoff=dx, yoff=dy) + if 'follow' in geometric_data: + new_geo_el['follow'] = affinity.translate(geometric_data['follow'], xoff=dx, yoff=dy) + if 'clear' in geometric_data: + new_geo_el['clear'] = affinity.translate(geometric_data['clear'], xoff=dx, yoff=dy) + self.geometry.append(DrawToolShape(new_geo_el)) sel_shapes_to_be_deleted.append(select_shape) self.draw_app.on_grb_shape_complete(self.current_storage) @@ -3698,7 +3803,8 @@ class FlatCAMGrbEditor(QtCore.QObject): self.tool_shape.add( shape=geometric_data, color=(self.app.defaults["global_draw_color"] + '80'), # face_color=self.app.defaults['global_alt_sel_fill'], - update=False, layer=0, tolerance=None) + update=False, layer=0, tolerance=None + ) else: geometric_data = geo.geo['solid'] # Add the new utility shape @@ -3706,7 +3812,8 @@ class FlatCAMGrbEditor(QtCore.QObject): shape=geometric_data, color=(self.app.defaults["global_draw_color"] + '80'), # face_color=self.app.defaults['global_alt_sel_fill'], - update=False, layer=0, tolerance=None) + update=False, layer=0, tolerance=None + ) self.tool_shape.redraw() @@ -3730,7 +3837,8 @@ class FlatCAMGrbEditor(QtCore.QObject): if elem in self.selected: self.plot_shape(geometry=geometric_data, - color=self.app.defaults['global_sel_draw_color']) + color=self.app.defaults['global_sel_draw_color'], + linewidth=2) continue self.plot_shape(geometry=geometric_data, color=self.app.defaults['global_draw_color']) @@ -3739,18 +3847,19 @@ class FlatCAMGrbEditor(QtCore.QObject): for elem in self.utility: geometric_data = elem.geo['solid'] - self.plot_shape(geometry=geometric_data) + self.plot_shape(geometry=geometric_data, linewidth=1) continue self.shapes.redraw() - def plot_shape(self, geometry=None, color='black'): + def plot_shape(self, geometry=None, color='black', linewidth=1): """ Plots a geometric object or list of objects without rendering. Plotted objects are returned as a list. This allows for efficient/animated rendering. :param geometry: Geometry to be plotted (Any Shapely.geom kind or list of such) :param color: Shape color + :param linewidth: Width of lines in # of pixels. :return: List of plotted elements. """ # plot_elements = [] From 3565a39918b61f62872a3c9a0f327019ce35e7a4 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 11 May 2019 19:31:23 +0300 Subject: [PATCH 13/42] - restored some changes in camlib.Gerber (the last_path_aperture value changed in G02/G03 parsing) --- camlib.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/camlib.py b/camlib.py index 9afa6f3f..7c8fcb72 100644 --- a/camlib.py +++ b/camlib.py @@ -2932,7 +2932,7 @@ class Gerber (Geometry): # Append path += this_arc - # last_path_aperture = current_aperture + last_path_aperture = current_aperture continue @@ -2982,7 +2982,7 @@ class Gerber (Geometry): current_x, current_y = circular_x, circular_y path += this_arc - # last_path_aperture = current_aperture + last_path_aperture = current_aperture valid = True break From c9a09b00c02dc2dcc265b48b7780b578764104a4 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 11 May 2019 21:49:22 +0300 Subject: [PATCH 14/42] - Gerber Editor: added a threshold limit for how many elements a move selection can have. If above the threshold only a bounding box Poly will be painted on canvas as utility geometry. --- README.md | 1 + flatcamEditors/FlatCAMGrbEditor.py | 81 +++++++++++++++++++++--------- 2 files changed, 59 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 75e16ee6..eafb0539 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ CAD program, and create G-Code for Isolation routing. - fixed camlib.Gerber issues related to what happen after parsing rectangular apertures - wip in camblib.Gerber - completely converted the Gerber editor to the new data structure +- Gerber Editor: added a threshold limit for how many elements a move selection can have. If above the threshold only a bounding box Poly will be painted on canvas as utility geometry. 10.05.2019 diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 81575ce5..e3b6d0c0 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -1719,6 +1719,9 @@ class FCApertureMove(FCShapeTool): # Switch notebook to Selected page self.draw_app.app.ui.notebook.setCurrentWidget(self.draw_app.app.ui.selected_tab) + self.sel_limit = 30 + self.selection_shape = self.selection_bbox() + def set_origin(self, origin): self.origin = origin @@ -1769,6 +1772,22 @@ class FCApertureMove(FCShapeTool): # f.write(c.dump()) # f.close() + def selection_bbox(self): + geo_list = [] + + for select_shape in self.draw_app.get_selected(): + geometric_data = select_shape.geo + geo_list.append(geometric_data['solid']) + + 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 make(self): # Create new geometry dx = self.destination[0] - self.origin[0] @@ -1824,16 +1843,22 @@ class FCApertureMove(FCShapeTool): dx = data[0] - self.origin[0] dy = data[1] - self.origin[1] - for geom in self.draw_app.get_selected(): - new_geo_el = dict() - if 'solid' in geom.geo: - new_geo_el['solid'] = affinity.translate(geom.geo['solid'], xoff=dx, yoff=dy) - if 'follow' in geom.geo: - new_geo_el['follow'] = affinity.translate(geom.geo['follow'], xoff=dx, yoff=dy) - if 'clear' in geom.geo: - new_geo_el['clear'] = affinity.translate(geom.geo['clear'], xoff=dx, yoff=dy) - geo_list.append(deepcopy(new_geo_el)) - return DrawToolUtilityShape(geo_list) + + if len(self.draw_app.get_selected()) <= self.sel_limit: + for geom in self.draw_app.get_selected(): + new_geo_el = dict() + if 'solid' in geom.geo: + new_geo_el['solid'] = affinity.translate(geom.geo['solid'], xoff=dx, yoff=dy) + if 'follow' in geom.geo: + new_geo_el['follow'] = affinity.translate(geom.geo['follow'], xoff=dx, yoff=dy) + if 'clear' in geom.geo: + new_geo_el['clear'] = affinity.translate(geom.geo['clear'], xoff=dx, yoff=dy) + geo_list.append(deepcopy(new_geo_el)) + return DrawToolUtilityShape(geo_list) + else: + ss_el = dict() + ss_el['solid'] = affinity.translate(self.selection_shape, xoff=dx, yoff=dy) + return DrawToolUtilityShape(ss_el) class FCApertureCopy(FCApertureMove): @@ -1991,6 +2016,7 @@ class FCTransform(FCShapeTool): class FlatCAMGrbEditor(QtCore.QObject): draw_shape_idx = -1 + plot_finished = QtCore.pyqtSignal() def __init__(self, app): assert isinstance(app, FlatCAMApp.App), \ @@ -2542,6 +2568,8 @@ class FlatCAMGrbEditor(QtCore.QObject): # store the status of the editor so the Delete at object level will not work until the edit is finished self.editor_active = False + self.set_ui() + def pool_recreated(self, pool): self.shapes.pool = pool self.tool_shape.pool = pool @@ -3211,8 +3239,11 @@ class FlatCAMGrbEditor(QtCore.QObject): self.select_tool("select") - # we activate this after the initial build as we don't need to see the tool been populated - self.apertures_table.itemChanged.connect(self.on_tool_edit) + try: + # we activate this after the initial build as we don't need to see the tool been populated + self.apertures_table.itemChanged.connect(self.on_tool_edit) + except Exception as e: + log.debug("FlatCAMGrbEditor.edit_fcgerber() --> %s" % str(e)) # and then add it to the storage elements (each storage elements is a member of a list @@ -3887,6 +3918,7 @@ class FlatCAMGrbEditor(QtCore.QObject): log.debug("FlatCAMGrbEditor --> Delayed Plot started.") self.plot_thread = QtCore.QTimer() self.plot_thread.setInterval(check_period) + self.plot_finished.connect(self.setup_ui_after_delayed_plot) self.plot_thread.timeout.connect(self.check_plot_finished) self.plot_thread.start() @@ -3900,21 +3932,24 @@ class FlatCAMGrbEditor(QtCore.QObject): try: if not self.grb_plot_promises: self.plot_thread.stop() - - self.set_ui() - # now that we have data, create the GUI interface and add it to the Tool Tab - self.build_ui(first_run=True) - self.plot_all() - - # HACK: enabling/disabling the cursor seams to somehow update the shapes making them more 'solid' - # - perhaps is a bug in VisPy implementation - self.app.app_cursor.enabled = False - self.app.app_cursor.enabled = True - + self.plot_finished.emit() log.debug("FlatCAMGrbEditor --> delayed_plot finished") except Exception: traceback.print_exc() + def setup_ui_after_delayed_plot(self): + self.plot_finished.disconnect() + + self.set_ui() + # now that we have data, create the GUI interface and add it to the Tool Tab + self.build_ui(first_run=True) + self.plot_all() + + # HACK: enabling/disabling the cursor seams to somehow update the shapes making them more 'solid' + # - perhaps is a bug in VisPy implementation + self.app.app_cursor.enabled = False + self.app.app_cursor.enabled = True + def get_selected(self): """ Returns list of shapes that are selected in the editor. From 01c0f901ff1126aefe4a590032985b8ff0caa36b Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Mon, 13 May 2019 01:57:37 +0300 Subject: [PATCH 15/42] - some modifications to ToolCutout --- README.md | 4 ++ camlib.py | 3 +- flatcamTools/ToolCutOut.py | 105 ++++++++++++++++++++++++++++++++++--- 3 files changed, 105 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index eafb0539..78ffec12 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing. ================================================= +12.05.2019 + +- some modifications to ToolCutout + 11.05.2019 - fixed issue in camlib.CNCjob.generate_from_excellon_by_tool() in the drill path optimization algorithm selection when selecting the MH algorithm. The new API's for Google OR-tools required some changes and also the time parameter can be now just an integer therefore I modified the GUI diff --git a/camlib.py b/camlib.py index 7c8fcb72..cf277b98 100644 --- a/camlib.py +++ b/camlib.py @@ -204,7 +204,8 @@ class Geometry(object): def subtract_polygon(self, points): """ - Subtract polygon from the given object. This only operates on the paths in the original geometry, i.e. it converts polygons into paths. + Subtract polygon from the given object. This only operates on the paths in the original geometry, + i.e. it converts polygons into paths. :param points: The vertices of the polygon. :return: none diff --git a/flatcamTools/ToolCutOut.py b/flatcamTools/ToolCutOut.py index d3e7b81b..af04233b 100644 --- a/flatcamTools/ToolCutOut.py +++ b/flatcamTools/ToolCutOut.py @@ -274,6 +274,8 @@ class CutOut(FlatCAMTool): # true if we want to repeat the gap without clicking again on the button self.repeat_gap = False + self.flat_geometry = [] + ## Signals self.ff_cutout_object_btn.clicked.connect(self.on_freeform_cutout) self.rect_cutout_object_btn.clicked.connect(self.on_rectangular_cutout) @@ -418,7 +420,15 @@ class CutOut(FlatCAMTool): geo_obj.solid_geometry = geo.buffer(margin + abs(dia / 2)) else: geo = cutout_obj.solid_geometry - geo_obj.solid_geometry = geo.buffer(margin + abs(dia / 2)).exterior + geo = geo.buffer(margin + abs(dia / 2)) + + if isinstance(geo, Polygon): + geo_obj.solid_geometry = deepcopy(geo.exterior) + elif isinstance(geo, MultiPolygon): + solid_geo = [] + for poly in geo: + solid_geo.append(poly.exterior) + geo_obj.solid_geometry = deepcopy(solid_geo) outname = cutout_obj.options["name"] + "_cutout" self.app.new_object('geometry', outname, geo_init) @@ -541,18 +551,30 @@ class CutOut(FlatCAMTool): return # Get min and max data for each object as we just cut rectangles across X or Y - xmin, ymin, xmax, ymax = cutout_obj.bounds() - geo = box(xmin, ymin, xmax, ymax) + if isinstance(cutout_obj.solid_geometry, Polygon): + xmin, ymin, xmax, ymax = cutout_obj.bounds() + geo = box(xmin, ymin, xmax, ymax) + elif isinstance(cutout_obj.solid_geometry, MultiPolygon): + geo = [] + for poly in cutout_obj.solid_geometry: + xmin, ymin, xmax, ymax = poly.bounds + poly_geo = box(xmin, ymin, xmax, ymax) + geo.append(poly_geo) px = 0.5 * (xmin + xmax) + margin py = 0.5 * (ymin + ymax) + margin lenghtx = (xmax - xmin) + (margin * 2) lenghty = (ymax - ymin) + (margin * 2) - gapsize = gapsize / 2 + (dia / 2) def geo_init(geo_obj, app_obj): - geo_obj.solid_geometry = geo.buffer(margin + abs(dia / 2)) + if isinstance(geo, list): + solid_geo = [] + for subgeo in geo: + solid_geo.append(subgeo.buffer(margin + abs(dia / 2))) + geo_obj.solid_geometry = deepcopy(solid_geo) + else: + geo_obj.solid_geometry = geo.buffer(margin + abs(dia / 2)) outname = cutout_obj.options["name"] + "_cutout" self.app.new_object('geometry', outname, geo_init) @@ -745,7 +767,14 @@ class CutOut(FlatCAMTool): geo_obj.solid_geometry = geo.buffer(margin + abs(dia / 2)) else: geo = cutout_obj.solid_geometry - geo_obj.solid_geometry = geo.buffer(margin + abs(dia / 2)).exterior + geo = geo.buffer(margin + abs(dia / 2)) + if isinstance(geo, Polygon): + geo_obj.solid_geometry = geo.exterior + elif isinstance(geo, MultiPolygon): + solid_geo = [] + for poly in geo: + solid_geo.append(poly.exterior) + geo_obj.solid_geometry = deepcopy(solid_geo) outname = cutout_obj.options["name"] + "_cutout" self.app.new_object('geometry', outname, geo_init) @@ -819,5 +848,69 @@ class CutOut(FlatCAMTool): self.app.geo_editor.tool_shape.clear(update=True) self.app.geo_editor.tool_shape.enabled = False + def flatten(self, geometry=None, reset=True, pathonly=False): + """ + Creates a list of non-iterable linear geometry objects. + Polygons are expanded into its exterior and interiors if specified. + + Results are placed in self.flat_geometry + + :param geometry: Shapely type or list or list of list of such. + :param reset: Clears the contents of self.flat_geometry. + :param pathonly: Expands polygons into linear elements. + """ + + if geometry is None: + geometry = self.solid_geometry + + if reset: + self.flat_geometry = [] + + ## If iterable, expand recursively. + try: + for geo in geometry: + if geo is not None: + self.flatten(geometry=geo, + reset=False, + pathonly=pathonly) + + ## Not iterable, do the actual indexing and add. + except TypeError: + if pathonly and type(geometry) == Polygon: + self.flat_geometry.append(geometry.exterior) + self.flatten(geometry=geometry.interiors, + reset=False, + pathonly=True) + else: + self.flat_geometry.append(geometry) + + return self.flat_geometry + + def subtract_poly_from_geo(self, solid_geo, points): + """ + Subtract polygon from the given object. This only operates on the paths in the original geometry, + i.e. it converts polygons into paths. + + :param points: The vertices of the polygon. + :param geo: Geometry from which to substract. If none, use the solid_geomety property of the object + :return: none + """ + + # pathonly should be allways True, otherwise polygons are not subtracted + flat_geometry = self.flatten(geometry=solid_geo, pathonly=True) + + log.debug("%d paths" % len(flat_geometry)) + 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.") + + return cascaded_union(diffs) + def reset_fields(self): self.obj_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) + From 820f75e20c7dbdf727adce48b7b9d85d53cf2cfb Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Mon, 13 May 2019 14:56:05 +0300 Subject: [PATCH 16/42] - Gerber Editor - working in conversion to the new data format --- camlib.py | 44 +----------------------------- flatcamEditors/FlatCAMGrbEditor.py | 42 ++++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 45 deletions(-) diff --git a/camlib.py b/camlib.py index cf277b98..2c57bb9d 100644 --- a/camlib.py +++ b/camlib.py @@ -2691,7 +2691,7 @@ class Gerber (Geometry): else: width = self.apertures[last_path_aperture]["size"] - if self.apertures[last_path_aperture]["type"] is not 'R': + if self.apertures[last_path_aperture]["type"] != 'R': geo_f = LineString(path) follow_buffer.append(geo_f) @@ -3027,48 +3027,6 @@ class Gerber (Geometry): self.apertures[last_path_aperture]['geometry'] = [] self.apertures[last_path_aperture]['geometry'].append(geo_dict) - # TODO: make sure to keep track of units changes because right now it seems to happen in a weird way - # find out the conversion factor used to convert inside the self.apertures keys: size, width, height - - file_units = gerber_units if gerber_units else 'IN' - app_units = self.app.defaults['units'] - conversion_factor = 25.4 if file_units == 'IN' else (1/25.4) if file_units != app_units else 1 - - # --- the following section is useful for Gerber editor only --- # - log.warning("Applying clear geometry in the apertures dict.") - # list of clear geos that are to be applied to the entire file - global_clear_geo = [] - - for apid in self.apertures: - if 'geometry' in self.apertures[apid]: - for elem in self.apertures[apid]['geometry']: - if 'clear' in elem: - global_clear_geo.append(elem['clear']) - log.warning("Found %d clear polygons." % len(global_clear_geo)) - - for apid in self.apertures: - if 'geometry' in self.apertures[apid]: - for elem in self.apertures[apid]['geometry']: - if 'solid' in elem: - for clear_geo in global_clear_geo: - # Make sure that the clear_geo is within the solid_geo otherwise we loose - # the solid_geometry. We want for clear_geometry just to cut into solid_geometry not to - # delete it - if clear_geo.within(elem['solid']): - elem['solid'] = elem['solid'].difference(clear_geo) - - log.warning("Polygon difference done for %d apertures." % len(self.apertures)) - - # for apid in self.apertures: - # # scale de aperture geometries according to the used units - # for k, v in self.apertures[apid].items(): - # if k == 'size' or k == 'width' or k == 'height': - # self.apertures[apid][k] = v * conversion_factor - # ------------------------------------------------------------- - - # for t in self.apertures: - # print(t, self.apertures[t]['size']) - # --- Apply buffer --- # this treats the case when we are storing geometry as paths self.follow_geometry = follow_buffer diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index e3b6d0c0..8435a32e 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -3245,6 +3245,44 @@ class FlatCAMGrbEditor(QtCore.QObject): except Exception as e: log.debug("FlatCAMGrbEditor.edit_fcgerber() --> %s" % str(e)) + + # # --- the following section is useful for Gerber editor only --- # + # log.warning("Applying clear geometry in the apertures dict.") + # # list of clear geos that are to be applied to the entire file + # global_clear_geo = [] + # + # for apid in self.apertures: + # if 'geometry' in self.apertures[apid]: + # for elem in self.apertures[apid]['geometry']: + # if 'clear' in elem: + # global_clear_geo.append(elem['clear']) + # log.warning("Found %d clear polygons." % len(global_clear_geo)) + # + # for apid in self.apertures: + # geo_list = [] + # if 'geometry' in self.apertures[apid]: + # for elem in self.apertures[apid]['geometry']: + # if 'solid' in elem: + # for clear_geo in global_clear_geo: + # new_elem = dict() + # # Make sure that the clear_geo is within the solid_geo otherwise we loose + # # the solid_geometry. We want for clear_geometry just to cut into solid_geometry not to + # # delete it + # if clear_geo.within(elem['solid']): + # new_elem['solid'] = elem['solid'].difference(clear_geo) + # else: + # new_elem['solid'] = elem['solid'] + # if 'follow' in elem: + # new_elem['follow'] = elem['follow'] + # if 'clear' in elem: + # new_elem['clear'] = elem['clear'] + # geo_list.append(deepcopy(new_elem)) + # self.apertures[apid]['geometry'] = deepcopy(geo_list) + # geo_list[:] = [] + # + # log.warning("Polygon difference done for %d apertures." % len(self.apertures)) + + # and then add it to the storage elements (each storage elements is a member of a list def job_thread(self, apid): @@ -3276,11 +3314,12 @@ class FlatCAMGrbEditor(QtCore.QObject): self.grb_plot_promises.append(apid) self.app.worker_task.emit({'fcn': job_thread, 'params': [self, apid]}) + self.set_ui() + # do the delayed plot only if there is something to plot (the gerber is not empty) if bool(self.gerber_obj.apertures): self.start_delayed_plot(check_period=1000) else: - self.set_ui() # now that we have data (empty data actually), create the GUI interface and add it to the Tool Tab self.build_ui(first_run=True) # and add the first aperture to have something to play with @@ -3940,7 +3979,6 @@ class FlatCAMGrbEditor(QtCore.QObject): def setup_ui_after_delayed_plot(self): self.plot_finished.disconnect() - self.set_ui() # now that we have data, create the GUI interface and add it to the Tool Tab self.build_ui(first_run=True) self.plot_all() From 784865518f38dedd62abe27dcc0e3dec0ce950bc Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Mon, 13 May 2019 17:09:09 +0300 Subject: [PATCH 17/42] - Gerber Editor - working in conversion to the new data format --- camlib.py | 68 +++++++++++++++++++++++++------------------------------ 1 file changed, 31 insertions(+), 37 deletions(-) diff --git a/camlib.py b/camlib.py index 2c57bb9d..4f9f36ef 100644 --- a/camlib.py +++ b/camlib.py @@ -2680,6 +2680,9 @@ class Gerber (Geometry): elif current_operation_code == 2: # finish current path if len(path) > 1: + geo_s = None + geo_f = None + if last_path_aperture is None: if '0' not in self.apertures: self.apertures['0'] = {} @@ -2691,45 +2694,37 @@ class Gerber (Geometry): else: width = self.apertures[last_path_aperture]["size"] - if self.apertures[last_path_aperture]["type"] != 'R': + if making_region: + try: + geo_s = Polygon(path) + except ValueError: + log.warning( + "Not enough points in path to create a Polygon %s %s" % (gline, line_num)) + try: + geo_f = LineString(path) + except ValueError: + log.warning( + "Not enough points in path to create a LineString %s %s" % (gline, line_num)) + else: + geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) geo_f = LineString(path) - follow_buffer.append(geo_f) - if making_region: - try: - geo_s = Polygon(path) - poly_buffer.append(geo_s) - except ValueError: - log.warning( - "Not enough points in path to create a Polygon %s %s" % (gline, line_num)) - else: - geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) - poly_buffer.append(geo_s) + if self.apertures[last_path_aperture]["type"] != 'R': + poly_buffer.append(deepcopy(geo_s)) + follow_buffer.append(deepcopy(geo_f)) - if making_region: - geo_dict = dict() - geo_dict['follow'] = geo_f - if geo_s: - if self.is_lpc: - geo_dict['clear'] = geo_s - else: - geo_dict['solid'] = geo_s - - self.apertures['0']['geometry'].append(geo_dict) - - else: - geo_dict = dict() - geo_dict['follow'] = geo_f - if geo_s: - if self.is_lpc: - geo_dict['clear'] = geo_s - else: - geo_dict['solid'] = geo_s - try: - self.apertures[last_path_aperture]['geometry'].append(geo_dict) - except KeyError: - self.apertures[last_path_aperture]['geometry'] = [] - self.apertures[last_path_aperture]['geometry'].append(geo_dict) + geo_dict = dict() + geo_dict['follow'] = geo_f + if geo_s: + if self.is_lpc: + geo_dict['clear'] = deepcopy(geo_s) + else: + geo_dict['solid'] = deepcopy(geo_s) + try: + self.apertures[last_path_aperture]['geometry'].append(geo_dict) + except KeyError: + self.apertures[last_path_aperture]['geometry'] = [] + self.apertures[last_path_aperture]['geometry'].append(geo_dict) # if linear_x or linear_y are None, ignore those if linear_x is not None and linear_y is not None: @@ -2765,7 +2760,6 @@ class Gerber (Geometry): # Reset path starting point path = [[linear_x, linear_y]] - # Draw the flash geo_f = Point(linear_x, linear_y) geo_s = Gerber.create_flash_geometry( From 3e3c8ae7032a7992bda1b8cce1b00e8707e1fa25 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 15 May 2019 00:27:43 +0300 Subject: [PATCH 18/42] - rewrited the Gerber Parser in camlib - success - moved the self.apertures[aperture]['geometry'] processing for clear_geometry (geometry made with Gerber LPC command) in Gerber Editor --- README.md | 5 + camlib.py | 616 +++++++++++++++++------------ flatcamEditors/FlatCAMGrbEditor.py | 121 +++--- 3 files changed, 440 insertions(+), 302 deletions(-) diff --git a/README.md b/README.md index 78ffec12..1138ec88 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,11 @@ CAD program, and create G-Code for Isolation routing. ================================================= +15.05.2019 + +- rewrited the Gerber Parser in camlib - success +- moved the self.apertures[aperture]['geometry'] processing for clear_geometry (geometry made with Gerber LPC command) in Gerber Editor + 12.05.2019 - some modifications to ToolCutout diff --git a/camlib.py b/camlib.py index 4f9f36ef..594d2182 100644 --- a/camlib.py +++ b/camlib.py @@ -2175,8 +2175,11 @@ class Gerber (Geometry): # store the file units here: gerber_units = 'IN' - # this is for temporary storage of geometry until it is added to poly_buffer - geo = None + # this is for temporary storage of solid geometry until it is added to poly_buffer + geo_s = None + + # this is for temporary storage of follow geometry until it is added to follow_buffer + geo_f = None # Polygons are stored here until there is a change in polarity. # Only then they are combined via cascaded_union and added or @@ -2204,6 +2207,8 @@ class Gerber (Geometry): previous_x = None previous_y = None + current_d = None + # Absolute or Relative/Incremental coordinates # Not implemented absolute = True @@ -2226,20 +2231,21 @@ class Gerber (Geometry): try: for gline in glines: line_num += 1 - self.source_file += gline + '\n' - ### Cleanup + # Cleanup # gline = gline.strip(' \r\n') # log.debug("Line=%3s %s" % (line_num, gline)) - #### Ignored lines - ## Comments + # ############################################################### + # Ignored lines # + # 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. @@ -2248,30 +2254,31 @@ class Gerber (Geometry): new_polarity = match.group(1) # log.info("Polarity CHANGE, LPC = %s, poly_buff = %s" % (self.is_lpc, poly_buffer)) self.is_lpc = True if new_polarity == 'C' else False - if len(path) > 1 and current_polarity != new_polarity: # finish the current path and add it to the storage # --- Buffered ---- width = self.apertures[last_path_aperture]["size"] - - geo_f = LineString(path) - geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) - follow_buffer.append(geo_f) - poly_buffer.append(geo_s) - geo_dict = dict() - geo_dict['follow'] = geo_f - if self.is_lpc: - geo_dict['clear'] = geo_s - else: - geo_dict['solid'] = geo_s - try: - self.apertures[last_path_aperture]['geometry'].append(geo_dict) - except KeyError: + geo_f = LineString(path) + if not geo_f.is_empty: + follow_buffer.append(geo_f) + geo_dict['follow'] = geo_f + + geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) + if not geo_s.is_empty: + poly_buffer.append(geo_s) + if self.is_lpc is True: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s + + if last_path_aperture not in self.apertures: + self.apertures[last_path_aperture] = dict() + if 'geometry' not in self.apertures[last_path_aperture]: self.apertures[last_path_aperture]['geometry'] = [] - self.apertures[last_path_aperture]['geometry'].append(geo_dict) + self.apertures[last_path_aperture]['geometry'].append(deepcopy(geo_dict)) path = [path[-1]] @@ -2293,8 +2300,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: @@ -2320,7 +2329,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)] @@ -2339,7 +2350,9 @@ class Gerber (Geometry): self.convert_units(match.group(5)) continue - ### Search for OrCAD way for having Number format + # ############################################################### + # Search for OrCAD way for having Number format + # ############################################################### match = self.fmt_re_orcad.search(gline) if match: if match.group(1) is not None: @@ -2363,7 +2376,9 @@ class Gerber (Geometry): self.convert_units(match.group(5)) continue - ### Units (G70/1) OBSOLETE + # ############################################################### + # Units (G70/1) OBSOLETE + # ############################################################### match = self.units_re.search(gline) if match: obs_gerber_units = {'0': 'IN', '1': 'MM'}[match.group(1)] @@ -2372,17 +2387,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. @@ -2416,49 +2435,51 @@ class Gerber (Geometry): 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)) + current_d = current_operation_code if current_operation_code == 3: - ## --- Buffered --- + # --- Buffered --- try: log.debug("Bare op-code %d." % current_operation_code) - # flash = Gerber.create_flash_geometry(Point(path[-1]), - # self.apertures[current_aperture]) + + geo_dict = dict() flash = Gerber.create_flash_geometry( Point(current_x, current_y), self.apertures[current_aperture], int(self.steps_per_circle)) - if not flash.is_empty: - geo_f = Point(current_x, current_y) - geo_s = flash - # follow_buffer.append(geo_f) - poly_buffer.append(geo_s) + geo_dict['follow'] = Point([current_x, current_y]) - geo_dict = dict() - geo_dict['follow'] = geo_f - if self.is_lpc: - geo_dict['clear'] = geo_s + if not flash.is_empty: + poly_buffer.append(flash) + if self.is_lpc is True: + geo_dict['clear'] = flash else: - geo_dict['solid'] = geo_s - try: - self.apertures[current_aperture]['geometry'].append(geo_dict) - except KeyError: + geo_dict['solid'] = flash + + if last_path_aperture not in self.apertures: + self.apertures[current_aperture] = dict() + if 'geometry' not in self.apertures[current_aperture]: self.apertures[current_aperture]['geometry'] = [] - self.apertures[current_aperture]['geometry'].append(geo_dict) + self.apertures[current_aperture]['geometry'].append(deepcopy(geo_dict)) except IndexError: log.warning("Line %d: %s -> Nothing there to flash!" % (line_num, gline)) continue - ### Tool/aperture change + # ############################################################### + # Tool/aperture change # Example: D12* + # ############################################################### match = self.tool_re.search(gline) if match: current_aperture = match.group(1) @@ -2475,96 +2496,134 @@ class Gerber (Geometry): # Take care of the current path with the previous tool if len(path) > 1: - if self.apertures[last_path_aperture]["type"] != 'R': - width = self.apertures[last_path_aperture]["size"] - - geo_f = LineString(path) - geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) - follow_buffer.append(geo_f) - poly_buffer.append(geo_s) - + if self.apertures[last_path_aperture]["type"] == 'R': + # do nothing because 'R' type moving aperture is none at once + pass + else: geo_dict = dict() - geo_dict['follow'] = geo_f - if self.is_lpc: - geo_dict['clear'] = geo_s - else: - geo_dict['solid'] = geo_s - try: - self.apertures[last_path_aperture]['geometry'].append(geo_dict) - except KeyError: + geo_f = LineString(path) + if not geo_f.is_empty: + follow_buffer.append(geo_f) + geo_dict['follow'] = geo_f + + # --- Buffered ---- + width = self.apertures[last_path_aperture]["size"] + geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) + if not geo_s.is_empty: + poly_buffer.append(geo_s) + if self.is_lpc is True: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s + + if last_path_aperture not in self.apertures: + self.apertures[last_path_aperture] = dict() + if 'geometry' not in self.apertures[last_path_aperture]: self.apertures[last_path_aperture]['geometry'] = [] - self.apertures[last_path_aperture]['geometry'].append(geo_dict) + self.apertures[last_path_aperture]['geometry'].append(deepcopy(geo_dict)) path = [path[-1]] continue - ### G36* - Begin region + # ############################################################### + # G36* - Begin region + # ############################################################### if self.regionon_re.search(gline): - if '0' not in self.apertures: - self.apertures['0'] = {} - self.apertures['0']['type'] = 'REG' - self.apertures['0']['size'] = 0.0 - self.apertures['0']['geometry'] = [] - last_path_aperture = '0' - self.apertures[last_path_aperture]['type'] = 'REG' - if len(path) > 1: # Take care of what is left in the path - width = self.apertures[last_path_aperture]["size"] - - geo_f = LineString(path) - geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) - follow_buffer.append(geo_f) - poly_buffer.append(geo_s) geo_dict = dict() - geo_dict['follow'] = geo_f - if self.is_lpc: - geo_dict['clear'] = geo_s - else: - geo_dict['solid'] = geo_s + geo_f = LineString(path) + if not geo_f.is_empty: + follow_buffer.append(geo_f) + geo_dict['follow'] = geo_f - self.apertures[last_path_aperture]['geometry'].append(geo_dict) + # --- Buffered ---- + width = self.apertures[last_path_aperture]["size"] + geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) + if not geo_s.is_empty: + poly_buffer.append(geo_s) + if self.is_lpc is True: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s + + if last_path_aperture not in self.apertures: + self.apertures[last_path_aperture] = dict() + if 'geometry' not in self.apertures[last_path_aperture]: + self.apertures[last_path_aperture]['geometry'] = [] + self.apertures[last_path_aperture]['geometry'].append(deepcopy(geo_dict)) path = [path[-1]] making_region = True continue - ### G37* - End region + # ############################################################### + # G37* - End region + # ############################################################### if self.regionoff_re.search(gline): making_region = False + + if '0' not in self.apertures: + self.apertures['0'] = {} + self.apertures['0']['type'] = 'REG' + self.apertures['0']['size'] = 0.0 + self.apertures['0']['geometry'] = [] + # if D02 happened before G37 we now have a path with 1 element only so we have to add the current # geo to the poly_buffer otherwise we loose it # if current_operation_code == 2: + # print(path) + # geo_dict = dict() + # if geo_f: + # if not geo_f.is_empty: + # follow_buffer.append(geo_f) + # geo_dict['follow'] = geo_f + # if geo_s: + # if not geo_s.is_empty: + # poly_buffer.append(geo_s) + # if self.is_lpc is True: + # geo_dict['clear'] = geo_s + # else: + # geo_dict['solid'] = geo_s + # + # if geo_s or geo_f: + # self.apertures['0']['geometry'].append(deepcopy(geo_dict)) + # + # continue # Only one path defines region? # This can happen if D02 happened before G37 and - # is not an error. + # is not and error. if len(path) < 3: + # print "ERROR: Path contains less than 3 points:" + #path = [[current_x, current_y]] continue - # usually the D02 will add the path to the geo but if there is no D02 before G37 here comes the - # rescue - geo_f = LineString(path) - geo_s = Polygon(path) - - if not geo_s.is_valid: - geo_s = geo_s.buffer(0, int(self.steps_per_circle / 4)) - if not geo_s.is_empty: - poly_buffer.append(geo_s) - follow_buffer.append(geo_f) + # For regions we may ignore an aperture that is None + # --- Buffered --- geo_dict = dict() - geo_dict['follow'] = geo_f - if not geo_s.is_empty: - if self.is_lpc: - geo_dict['clear'] = geo_s - else: - geo_dict['solid'] = geo_s + region_f = Polygon(path).exterior + if not region_f.is_empty: + follow_buffer.append(region_f) + geo_dict['follow'] = region_f - self.apertures['0']['geometry'].append(geo_dict) + region_s = Polygon(path) + if not region_s.is_valid: + region_s = region_s.buffer(0, int(self.steps_per_circle / 4)) + + if not region_s.is_empty: + poly_buffer.append(region_s) + if self.is_lpc is True: + geo_dict['clear'] = region_s + else: + geo_dict['solid'] = region_s + + if not region_s.is_empty or not region_f.is_empty: + self.apertures['0']['geometry'].append(deepcopy(geo_dict)) path = [[current_x, current_y]] # Start new path continue @@ -2593,18 +2652,6 @@ class Gerber (Geometry): # NOTE: Letting it continue allows it to react to the # operation code. - if current_aperture is None or last_path_aperture is None: - if '0' not in self.apertures: - self.apertures['0'] = {} - self.apertures['0']['type'] = 'REG' - self.apertures['0']['size'] = 0.0 - self.apertures['0']['geometry'] = [] - if current_aperture is None: - current_aperture = '0' - else: - last_path_aperture = '0' - width = 0 - # Parse coordinates if match.group(2) is not None: linear_x = parse_gerber_number(match.group(2), @@ -2628,11 +2675,7 @@ class Gerber (Geometry): # if linear_x or linear_y are None, ignore those if current_x is not None and current_y is not None: # only add the point if it's a new one otherwise skip it (harder to process) - # but if it's the first point in the path in may create an exception - try: - if path[-1] != [current_x, current_y]: - path.append([current_x, current_y]) - except IndexError: + if path[-1] != [current_x, current_y]: path.append([current_x, current_y]) if making_region is False: @@ -2647,42 +2690,29 @@ class Gerber (Geometry): maxx = max(path[0][0], path[1][0]) + width / 2 miny = min(path[0][1], path[1][1]) - height / 2 maxy = max(path[0][1], path[1][1]) + height / 2 - # log.debug("Coords: %s - %s - %s - %s" % (minx, miny, maxx, maxy)) - - r_x = maxx - minx - r_y = maxy - miny - geo_f = Point(r_x, r_y) - geo_s = shply_box(minx, miny, maxx, maxy) - follow_buffer.append(geo_f) - poly_buffer.append(geo_s) + log.debug("Coords: %s - %s - %s - %s" % (minx, miny, maxx, maxy)) geo_dict = dict() + geo_f = Point([current_x, current_y]) + follow_buffer.append(geo_f) geo_dict['follow'] = geo_f - if self.is_lpc: + + geo_s = shply_box(minx, miny, maxx, maxy) + poly_buffer.append(geo_s) + if self.is_lpc is True: geo_dict['clear'] = geo_s else: geo_dict['solid'] = geo_s - try: - self.apertures[current_aperture]['geometry'].append(geo_dict) - except KeyError: + + if current_aperture not in self.apertures: + self.apertures[current_aperture] = dict() + if 'geometry' not in self.apertures[current_aperture]: self.apertures[current_aperture]['geometry'] = [] - self.apertures[current_aperture]['geometry'].append(geo_dict) + self.apertures[current_aperture]['geometry'].append(deepcopy(geo_dict)) except: pass - last_path_aperture = current_aperture - else: - last_path_aperture = '0' - - else: - self.app.inform.emit(_("[WARNING] Coordinates missing, line ignored: %s") % str(gline)) - self.app.inform.emit(_("[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!")) - - elif current_operation_code == 2: - # finish current path - if len(path) > 1: - geo_s = None - geo_f = None - + last_path_aperture = current_aperture + # we do this for the case that a region is done without having defined any aperture if last_path_aperture is None: if '0' not in self.apertures: self.apertures['0'] = {} @@ -2690,41 +2720,87 @@ class Gerber (Geometry): self.apertures['0']['size'] = 0.0 self.apertures['0']['geometry'] = [] last_path_aperture = '0' - width = 0 - else: - width = self.apertures[last_path_aperture]["size"] + else: + self.app.inform.emit(_("[WARNING] Coordinates missing, line ignored: %s") % str(gline)) + self.app.inform.emit(_("[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!")) + elif current_operation_code == 2: + if len(path) > 1: + geo_s = None + geo_f = None + + geo_dict = dict() + # --- BUFFERED --- + # this treats the case when we are storing geometry as paths only if making_region: + # we do this for the case that a region is done without having defined any aperture + if last_path_aperture is None: + if '0' not in self.apertures: + self.apertures['0'] = {} + self.apertures['0']['type'] = 'REG' + self.apertures['0']['size'] = 0.0 + self.apertures['0']['geometry'] = [] + last_path_aperture = '0' + geo_f = Polygon() + else: + geo_f = LineString(path) + + try: + if self.apertures[last_path_aperture]["type"] != 'R': + if not geo_f.is_empty: + follow_buffer.append(geo_f) + geo_dict['follow'] = geo_f + except Exception as e: + log.debug("camlib.Gerber.parse_lines() --> %s" % str(e)) + if not geo_f.is_empty: + follow_buffer.append(geo_f) + geo_dict['follow'] = geo_f + + # this treats the case when we are storing geometry as solids + if making_region: + # we do this for the case that a region is done without having defined any aperture + if last_path_aperture is None: + if '0' not in self.apertures: + self.apertures['0'] = {} + self.apertures['0']['type'] = 'REG' + self.apertures['0']['size'] = 0.0 + self.apertures['0']['geometry'] = [] + last_path_aperture = '0' + try: geo_s = Polygon(path) except ValueError: - log.warning( - "Not enough points in path to create a Polygon %s %s" % (gline, line_num)) - try: - geo_f = LineString(path) - except ValueError: - log.warning( - "Not enough points in path to create a LineString %s %s" % (gline, line_num)) + log.warning("Problem %s %s" % (gline, line_num)) + self.app.inform.emit(_("[ERROR] Region does not have enough points. " + "File will be processed but there are parser errors. " + "Line number: %s") % str(line_num)) else: + if last_path_aperture is None: + log.warning("No aperture defined for curent path. (%d)" % line_num) + width = self.apertures[last_path_aperture]["size"] # TODO: WARNING this should fail! geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) - geo_f = LineString(path) - if self.apertures[last_path_aperture]["type"] != 'R': - poly_buffer.append(deepcopy(geo_s)) - follow_buffer.append(deepcopy(geo_f)) + try: + if self.apertures[last_path_aperture]["type"] != 'R': + if not geo_s.is_empty: + poly_buffer.append(geo_s) + if self.is_lpc is True: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s + except Exception as e: + log.debug("camlib.Gerber.parse_lines() --> %s" % str(e)) + poly_buffer.append(geo_s) + if self.is_lpc is True: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s - geo_dict = dict() - geo_dict['follow'] = geo_f - if geo_s: - if self.is_lpc: - geo_dict['clear'] = deepcopy(geo_s) - else: - geo_dict['solid'] = deepcopy(geo_s) - try: - self.apertures[last_path_aperture]['geometry'].append(geo_dict) - except KeyError: - self.apertures[last_path_aperture]['geometry'] = [] - self.apertures[last_path_aperture]['geometry'].append(geo_dict) + if last_path_aperture not in self.apertures: + self.apertures[last_path_aperture] = dict() + if 'geometry' not in self.apertures[last_path_aperture]: + self.apertures[last_path_aperture]['geometry'] = [] + self.apertures[last_path_aperture]['geometry'].append(deepcopy(geo_dict)) # if linear_x or linear_y are None, ignore those if linear_x is not None and linear_y is not None: @@ -2737,52 +2813,76 @@ class Gerber (Geometry): # Not allowed in region mode. elif current_operation_code == 3: - width = self.apertures[last_path_aperture]["size"] - # finish the path draw until now - if len(path) > 1 and self.apertures[last_path_aperture]["type"] != 'R': - - geo_f = LineString(path) - geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) - follow_buffer.append(geo_f) - poly_buffer.append(geo_s) - + # Create path draw so far. + if len(path) > 1: + # --- Buffered ---- geo_dict = dict() - geo_dict['follow'] = geo_f - if self.is_lpc: - geo_dict['clear'] = geo_s - else: - geo_dict['solid'] = geo_s - try: - self.apertures[last_path_aperture]['geometry'].append(geo_dict) - except KeyError: + + # this treats the case when we are storing geometry as paths + geo_f = LineString(path) + if not geo_f.is_empty: + try: + if self.apertures[last_path_aperture]["type"] != 'R': + follow_buffer.append(geo_f) + geo_dict['follow'] = geo_f + except Exception as e: + log.debug("camlib.Gerber.parse_lines() --> G01 match D03 --> %s" % str(e)) + follow_buffer.append(geo_f) + geo_dict['follow'] = geo_f + + # this treats the case when we are storing geometry as solids + width = self.apertures[last_path_aperture]["size"] + geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) + if not geo_s.is_empty: + try: + if self.apertures[last_path_aperture]["type"] != 'R': + poly_buffer.append(geo_s) + if self.is_lpc is True: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s + except: + poly_buffer.append(geo_s) + if self.is_lpc is True: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s + + if last_path_aperture not in self.apertures: + self.apertures[last_path_aperture] = dict() + if 'geometry' not in self.apertures[last_path_aperture]: self.apertures[last_path_aperture]['geometry'] = [] - self.apertures[last_path_aperture]['geometry'].append(geo_dict) + self.apertures[last_path_aperture]['geometry'].append(deepcopy(geo_dict)) + # Reset path starting point path = [[linear_x, linear_y]] + # --- BUFFERED --- # Draw the flash - geo_f = Point(linear_x, linear_y) - geo_s = Gerber.create_flash_geometry( - Point([linear_x, linear_y]), + # this treats the case when we are storing geometry as paths + geo_dict = dict() + geo_flash = Point([linear_x, linear_y]) + follow_buffer.append(geo_flash) + geo_dict['follow'] = geo_flash + + # this treats the case when we are storing geometry as solids + flash = Gerber.create_flash_geometry( + Point( [linear_x, linear_y]), self.apertures[current_aperture], int(self.steps_per_circle) ) - follow_buffer.append(geo_f) - if not geo_s.is_empty: - poly_buffer.append(geo_s) - - geo_dict = dict() - geo_dict['follow'] = geo_f - if not geo_s.is_empty: - if self.is_lpc: - geo_dict['clear'] = geo_s + if not flash.is_empty: + poly_buffer.append(flash) + if self.is_lpc is True: + geo_dict['clear'] = flash else: - geo_dict['solid'] = geo_s - try: - self.apertures[current_aperture]['geometry'].append(geo_dict) - except KeyError: + geo_dict['solid'] = flash + + if current_aperture not in self.apertures: + self.apertures[current_aperture] = dict() + if 'geometry' not in self.apertures[current_aperture]: self.apertures[current_aperture]['geometry'] = [] - self.apertures[current_aperture]['geometry'].append(geo_dict) + self.apertures[current_aperture]['geometry'].append(deepcopy(geo_dict)) # maybe those lines are not exactly needed but it is easier to read the program as those coordinates # are used in case that circular interpolation is encountered within the Gerber file @@ -2853,41 +2953,35 @@ class Gerber (Geometry): # Nothing created! Pen Up. if current_operation_code == 2: log.warning("Arc with D2. (%d)" % line_num) - - # if we have something drawn until this moment, add it if len(path) > 1: - # if last_path_aperture is None: - # log.warning("No aperture defined for curent path. (%d)" % line_num) + geo_dict = dict() + if last_path_aperture is None: - if '0' not in self.apertures: - self.apertures['0'] = {} - self.apertures['0']['type'] = 'REG' - self.apertures['0']['size'] = 0.0 - self.apertures['0']['geometry'] = [] - last_path_aperture = '0' - width = 0 + log.warning("No aperture defined for curent path. (%d)" % line_num) # --- BUFFERED --- width = self.apertures[last_path_aperture]["size"] + # this treats the case when we are storing geometry as paths geo_f = LineString(path) - geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) - if not geo_s.is_empty: + if not geo_f.is_empty: follow_buffer.append(geo_f) - poly_buffer.append(geo_s) + geo_dict['follow'] = geo_f - geo_dict = dict() - geo_dict['follow'] = geo_f - if not geo_s.is_empty: - if self.is_lpc: - geo_dict['clear'] = geo_s + # this treats the case when we are storing geometry as solids + buffered = LineString(path).buffer(width / 1.999, int(self.steps_per_circle)) + if not buffered.is_empty: + poly_buffer.append(buffered) + if self.is_lpc is True: + geo_dict['clear'] = buffered else: - geo_dict['solid'] = geo_s - try: - self.apertures[last_path_aperture]['geometry'].append(geo_dict) - except KeyError: + geo_dict['solid'] = buffered + + if last_path_aperture not in self.apertures: + self.apertures[last_path_aperture] = dict() + if 'geometry' not in self.apertures[last_path_aperture]: self.apertures[last_path_aperture]['geometry'] = [] - self.apertures[last_path_aperture]['geometry'].append(geo_dict) + self.apertures[last_path_aperture]['geometry'].append(deepcopy(geo_dict)) current_x = circular_x current_y = circular_y @@ -2998,28 +3092,42 @@ class Gerber (Geometry): # In case that G01 (moving) aperture is rectangular, there is no need to still create # another geo since we already created a shapely box using the start and end coordinates found in # path variable. We do it only for other apertures than 'R' type - if self.apertures[last_path_aperture]["type"] != 'R': + if self.apertures[last_path_aperture]["type"] == 'R': + pass + else: # EOF, create shapely LineString if something still in path - width = self.apertures[last_path_aperture]["size"] - - geo_f = LineString(path) - geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) - follow_buffer.append(geo_f) - if not geo_s.is_empty: - poly_buffer.append(geo_s) + ## --- Buffered --- geo_dict = dict() - geo_dict['follow'] = geo_f + # this treats the case when we are storing geometry as paths + geo_f = LineString(path) + if not geo_f.is_empty: + follow_buffer.append(geo_f) + geo_dict['follow'] = geo_f + + # this treats the case when we are storing geometry as solids + width = self.apertures[last_path_aperture]["size"] + geo_s = LineString(path).buffer(width / 1.999, int(self.steps_per_circle / 4)) if not geo_s.is_empty: - if self.is_lpc: + poly_buffer.append(geo_s) + if self.is_lpc is True: geo_dict['clear'] = geo_s else: geo_dict['solid'] = geo_s - try: - self.apertures[last_path_aperture]['geometry'].append(geo_dict) - except KeyError: + + if last_path_aperture not in self.apertures: + self.apertures[last_path_aperture] = dict() + if 'geometry' not in self.apertures[last_path_aperture]: self.apertures[last_path_aperture]['geometry'] = [] - self.apertures[last_path_aperture]['geometry'].append(geo_dict) + self.apertures[last_path_aperture]['geometry'].append(deepcopy(geo_dict)) + + # TODO: make sure to keep track of units changes because right now it seems to happen in a weird way + # find out the conversion factor used to convert inside the self.apertures keys: size, width, height + file_units = gerber_units if gerber_units else 'IN' + app_units = self.app.defaults['units'] + + conversion_factor = 25.4 if file_units == 'IN' else (1/25.4) if file_units != app_units else 1 + # --- Apply buffer --- # this treats the case when we are storing geometry as paths @@ -3028,6 +3136,9 @@ class Gerber (Geometry): # this treats the case when we are storing geometry as solids log.warning("Joining %d polygons." % len(poly_buffer)) + for td in self.apertures: + print(td, self.apertures[td]) + if len(poly_buffer) == 0: log.error("Object is not Gerber file or empty. Aborting Object creation.") return 'fail' @@ -3283,6 +3394,15 @@ class Gerber (Geometry): self.app.inform.emit(_("[success] Gerber Scale done.")) + + ## solid_geometry ??? + # It's a cascaded union of objects. + # self.solid_geometry = affinity.scale(self.solid_geometry, factor, + # factor, origin=(0, 0)) + + # # Now buffered_paths, flash_geometry and solid_geometry + # self.create_geometry() + def offset(self, vect): """ Offsets the objects' geometry on the XY plane by a given vector. diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 8435a32e..912f8964 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -3245,46 +3245,56 @@ class FlatCAMGrbEditor(QtCore.QObject): except Exception as e: log.debug("FlatCAMGrbEditor.edit_fcgerber() --> %s" % str(e)) + # ############################################################### + # APPLY CLEAR_GEOMETRY on the SOLID_GEOMETRY + # ############################################################### - # # --- the following section is useful for Gerber editor only --- # # log.warning("Applying clear geometry in the apertures dict.") - # # list of clear geos that are to be applied to the entire file - # global_clear_geo = [] - # - # for apid in self.apertures: - # if 'geometry' in self.apertures[apid]: - # for elem in self.apertures[apid]['geometry']: - # if 'clear' in elem: - # global_clear_geo.append(elem['clear']) - # log.warning("Found %d clear polygons." % len(global_clear_geo)) - # - # for apid in self.apertures: - # geo_list = [] - # if 'geometry' in self.apertures[apid]: - # for elem in self.apertures[apid]['geometry']: - # if 'solid' in elem: - # for clear_geo in global_clear_geo: - # new_elem = dict() - # # Make sure that the clear_geo is within the solid_geo otherwise we loose - # # the solid_geometry. We want for clear_geometry just to cut into solid_geometry not to - # # delete it - # if clear_geo.within(elem['solid']): - # new_elem['solid'] = elem['solid'].difference(clear_geo) - # else: - # new_elem['solid'] = elem['solid'] - # if 'follow' in elem: - # new_elem['follow'] = elem['follow'] - # if 'clear' in elem: - # new_elem['clear'] = elem['clear'] - # geo_list.append(deepcopy(new_elem)) - # self.apertures[apid]['geometry'] = deepcopy(geo_list) - # geo_list[:] = [] - # - # log.warning("Polygon difference done for %d apertures." % len(self.apertures)) + # list of clear geos that are to be applied to the entire file + global_clear_geo = [] + for apid in self.gerber_obj.apertures: + # first check if we have any clear_geometry (LPC) and if yes added it to the global_clear_geo + if 'geometry' in self.gerber_obj.apertures[apid]: + for elem in self.gerber_obj.apertures[apid]['geometry']: + if 'clear' in elem: + global_clear_geo.append(elem['clear']) + log.warning("Found %d clear polygons." % len(global_clear_geo)) + + for apid in self.gerber_obj.apertures: + temp_elem = [] + if 'geometry' in self.gerber_obj.apertures[apid]: + for elem in self.gerber_obj.apertures[apid]['geometry']: + if 'solid' in elem: + solid_geo = elem['solid'] + for clear_geo in global_clear_geo: + # Make sure that the clear_geo is within the solid_geo otherwise we loose + # the solid_geometry. We want for clear_geometry just to cut into solid_geometry not to + # delete it + if clear_geo.within(solid_geo): + solid_geo = solid_geo.difference(clear_geo) + try: + for poly in solid_geo: + new_elem = dict() + + new_elem['solid'] = poly + if 'clear' in elem: + new_elem['clear'] = poly + if 'follow' in elem: + new_elem['follow'] = poly + temp_elem.append(deepcopy(new_elem)) + except TypeError: + new_elem = dict() + new_elem['solid'] = solid_geo + if 'clear' in elem: + new_elem['clear'] = solid_geo + if 'follow' in elem: + new_elem['follow'] = solid_geo + temp_elem.append(deepcopy(new_elem)) + self.gerber_obj.apertures[apid]['geometry'] = deepcopy(temp_elem) + log.warning("Polygon difference done for %d apertures." % len(self.gerber_obj.apertures)) # and then add it to the storage elements (each storage elements is a member of a list - def job_thread(self, apid): with self.app.proc_container.new(_("Adding aperture: %s geo ...") % str(apid)): storage_elem = [] @@ -3404,30 +3414,33 @@ class FlatCAMGrbEditor(QtCore.QObject): for storage_apid, storage_val in local_storage_dict.items(): grb_obj.apertures[storage_apid] = {} - for k, v in storage_val.items(): + for k, val in storage_val.items(): if k == 'geometry': grb_obj.apertures[storage_apid][k] = [] - for geo_el in v: - new_geo = dict() + for geo_el in val: geometric_data = geo_el.geo - for key in geometric_data: - if key == 'solid': - new_geo[key] = geometric_data['solid'] - poly_buffer.append(deepcopy(new_geo['solid'])) - if key == 'follow': - if isinstance(geometric_data[key], Polygon): - buff_val = -(int(storage_apid) / 2) - geo_f = geo_el.geo.buffer(buff_val).exterior - new_geo[key] = geo_f - else: - new_geo[key] = geometric_data[key] - follow_buffer.append(deepcopy(new_geo['follow'])) - if key == 'clear': - new_geo[key] = geometric_data['clear'] - grb_obj.apertures[storage_apid][k].append(deepcopy(new_geo)) + new_geo_el = dict() + if 'solid' in geometric_data: + new_geo_el['solid'] = geometric_data['solid'] + poly_buffer.append(deepcopy(new_geo_el['solid'])) + + if 'follow' in geometric_data: + if isinstance(geometric_data['follow'], Polygon): + buff_val = -(int(storage_apid) / 2) + geo_f = (geometric_data['follow'].buffer(buff_val)).exterior + new_geo_el['follow'] = geo_f + else: + new_geo_el['follow'] = geometric_data['follow'] + follow_buffer.append(deepcopy(new_geo_el['follow'])) + + if 'clear' in geometric_data: + new_geo_el['clear'] = geometric_data['clear'] + + if new_geo_el: + grb_obj.apertures[storage_apid][k].append(deepcopy(new_geo_el)) else: - grb_obj.apertures[storage_apid][k] = v + grb_obj.apertures[storage_apid][k] = val grb_obj.aperture_macros = deepcopy(self.gerber_obj.aperture_macros) From 8679cbbcda44064beac61b0228c27662674bdc21 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 15 May 2019 01:49:35 +0300 Subject: [PATCH 19/42] - Gerber Editor: fixed the Poligonize Tool to work with new geometric structure and took care of a special case --- README.md | 1 + flatcamEditors/FlatCAMGrbEditor.py | 47 ++++++++++++++++++++++++++---- 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 1138ec88..61cc9373 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ CAD program, and create G-Code for Isolation routing. - rewrited the Gerber Parser in camlib - success - moved the self.apertures[aperture]['geometry'] processing for clear_geometry (geometry made with Gerber LPC command) in Gerber Editor +- Gerber Editor: fixed the Poligonize Tool to work with new geometric structure and took care of a special case 12.05.2019 diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 912f8964..301be9f3 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -737,23 +737,58 @@ class FCPoligonize(FCShapeTool): self.draw_app.select_tool("select") return - exterior_geo = [Polygon(sh.geo.exterior) for sh in self.draw_app.selected] + apid_set = set() + for elem in self.draw_app.selected: + for apid in self.draw_app.storage_dict: + if 'geometry' in self.draw_app.storage_dict[apid]: + if elem in self.draw_app.storage_dict[apid]['geometry']: + apid_set.add(apid) + break + + if len (apid_set) > 1: + self.draw_app.in_action = False + self.complete = True + self.draw_app.app.inform.emit(_("[WARNING_NOTCL] Failed. Poligonize works only on " + "geometries belonging to the same aperture.")) + self.draw_app.select_tool("select") + return + + # exterior_geo = [Polygon(sh.geo.exterior) for sh in self.draw_app.selected] + + exterior_geo = [] + for geo_shape in self.draw_app.selected: + geometric_data = geo_shape.geo + if 'solid' in geometric_data: + exterior_geo.append(Polygon(geometric_data['solid'].exterior)) + fused_geo = MultiPolygon(exterior_geo) fused_geo = fused_geo.buffer(0.0000001) - current_storage = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['solid_geometry'] + current_storage = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['geometry'] if isinstance(fused_geo, MultiPolygon): for geo in fused_geo: - self.draw_app.on_grb_shape_complete(current_storage, specific_shape=DrawToolShape(geo)) + if len(geo.interiors) == 0: + try: + current_storage = self.draw_app.storage_dict['0']['geometry'] + except KeyError: + self.draw_app.on_aperture_add(apid='0') + current_storage = self.draw_app.storage_dict['0']['geometry'] + new_el = dict() + new_el['solid'] = geo + new_el['follow'] = geo.exterior + self.draw_app.on_grb_shape_complete(current_storage, specific_shape=DrawToolShape(deepcopy(new_el))) else: if len(fused_geo.interiors) == 0 and len(exterior_geo) == 1: try: - current_storage = self.draw_app.storage_dict['0']['solid_geometry'] + current_storage = self.draw_app.storage_dict['0']['geometry'] except KeyError: self.draw_app.on_aperture_add(apid='0') - current_storage = self.draw_app.storage_dict['0']['solid_geometry'] + current_storage = self.draw_app.storage_dict['0']['geometry'] - self.draw_app.on_grb_shape_complete(current_storage, specific_shape=DrawToolShape(fused_geo)) + new_el = dict() + new_el['solid'] = fused_geo + new_el['follow'] = fused_geo.exterior + self.draw_app.on_grb_shape_complete(current_storage, specific_shape=DrawToolShape(deepcopy(new_el))) self.draw_app.delete_selected() self.draw_app.plot_all() From c70309e8029eb34d9d45ad2bede5e4e1cf4aa9d6 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 15 May 2019 02:29:33 +0300 Subject: [PATCH 20/42] - Gerber Export is fixed to work with the new Gerber object data structure and it now works also for Gerber objects edited in Gerber Editor --- FlatCAMObj.py | 225 +++++++++++++++++------------ README.md | 1 + flatcamEditors/FlatCAMGrbEditor.py | 5 + 3 files changed, 136 insertions(+), 95 deletions(-) diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 0316d921..d7d377a2 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -1304,58 +1304,87 @@ class FlatCAMGerber(FlatCAMObj, Gerber): try: length = whole + fract if '0' in self.apertures: - if 'solid_geometry' in self.apertures['0']: - for geo in self.apertures['0']['solid_geometry']: - gerber_code += 'G36*\n' - geo_coords = list(geo.exterior.coords) - # first command is a move with pen-up D02 at the beginning of the geo - if g_zeros == 'T': - x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, - yform=y_formatted) - else: - x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, - yform=y_formatted) - for coord in geo_coords[1:]: + if 'geometry' in self.apertures['0']: + for geo_elem in self.apertures['0']['geometry']: + if 'solid' in geo_elem: + geo = geo_elem['solid'] + gerber_code += 'G36*\n' + geo_coords = list(geo.exterior.coords) + # first command is a move with pen-up D02 at the beginning of the geo if g_zeros == 'T': - x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) else: - x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) - gerber_code += 'D02*\n' - gerber_code += 'G37*\n' - - clear_list = list(geo.interiors) - if clear_list: - gerber_code += '%LPC*%\n' - for clear_geo in clear_list: - gerber_code += 'G36*\n' - geo_coords = list(clear_geo.coords) - - # first command is a move with pen-up D02 at the beginning of the geo + for coord in geo_coords[1:]: if g_zeros == 'T': - x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, + x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, yform=y_formatted) else: - x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, + x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, yform=y_formatted) - for coord in geo_coords[1:]: + gerber_code += 'D02*\n' + gerber_code += 'G37*\n' + + clear_list = list(geo.interiors) + if clear_list: + gerber_code += '%LPC*%\n' + for clear_geo in clear_list: + gerber_code += 'G36*\n' + geo_coords = list(clear_geo.coords) + + # first command is a move with pen-up D02 at the beginning of the geo if g_zeros == 'T': - x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) else: - x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) - gerber_code += 'D02*\n' - gerber_code += 'G37*\n' + for coord in geo_coords[1:]: + if g_zeros == 'T': + x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + gerber_code += 'D02*\n' + gerber_code += 'G37*\n' + gerber_code += '%LPD*%\n' + if 'clear' in geo_elem: + geo = geo_elem['clear'] + + gerber_code += '%LPC*%\n' + gerber_code += 'G36*\n' + geo_coords = list(geo.exterior.coords) + # first command is a move with pen-up D02 at the beginning of the geo + if g_zeros == 'T': + x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, + yform=y_formatted) + for coord in geo_coords[1:]: + if g_zeros == 'T': + x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + gerber_code += 'D02*\n' + gerber_code += 'G37*\n' gerber_code += '%LPD*%\n' for apid in self.apertures: @@ -1363,71 +1392,77 @@ class FlatCAMGerber(FlatCAMObj, Gerber): continue else: gerber_code += 'D%s*\n' % str(apid) + if 'geometry' in self.apertures[apid]: + for geo_elem in self.apertures[apid]['geometry']: + if 'follow' in geo_elem: + geo = geo_elem['follow'] + if geo.is_empty: + continue - if 'follow_geometry' in self.apertures[apid]: - for geo in self.apertures[apid]['follow_geometry']: - if isinstance(geo, Point): - if g_zeros == 'T': - x_formatted, y_formatted = tz_format(geo.x, geo.y, factor) - gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, - yform=y_formatted) - else: - x_formatted, y_formatted = lz_format(geo.x, geo.y, factor) - gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, - yform=y_formatted) - else: - geo_coords = list(geo.coords) - # first command is a move with pen-up D02 at the beginning of the geo - if g_zeros == 'T': - x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, - yform=y_formatted) - else: - x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, - yform=y_formatted) - for coord in geo_coords[1:]: + if isinstance(geo, Point): if g_zeros == 'T': - x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = tz_format(geo.x, geo.y, factor) + gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, yform=y_formatted) else: - x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = lz_format(geo.x, geo.y, factor) + gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, yform=y_formatted) - if 'clear_follow_geometry' in self.apertures[apid]: - gerber_code += '%LPC*%\n' - for geo in self.apertures[apid]['clear_follow_geometry']: - if isinstance(geo, Point): - if g_zeros == 'T': - x_formatted, y_formatted = tz_format(geo.x, geo.y, factor) - gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, - yform=y_formatted) else: - x_formatted, y_formatted = lz_format(geo.x, geo.y, factor) - gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, - yform=y_formatted) - else: - geo_coords = list(geo.coords) - # first command is a move with pen-up D02 at the beginning of the geo - if g_zeros == 'T': - x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, - yform=y_formatted) - else: - x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, - yform=y_formatted) - for coord in geo_coords[1:]: + geo_coords = list(geo.coords) + # first command is a move with pen-up D02 at the beginning of the geo if g_zeros == 'T': - x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) else: - x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) - gerber_code += '%LPD*%\n' + for coord in geo_coords[1:]: + if g_zeros == 'T': + x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + + if 'clear' in geo_elem: + gerber_code += '%LPC*%\n' + + geo = geo_elem['clear'] + if isinstance(geo, Point): + if g_zeros == 'T': + x_formatted, y_formatted = tz_format(geo.x, geo.y, factor) + gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format(geo.x, geo.y, factor) + gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, + yform=y_formatted) + else: + geo_coords = list(geo.coords) + # first command is a move with pen-up D02 at the beginning of the geo + if g_zeros == 'T': + x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, + yform=y_formatted) + for coord in geo_coords[1:]: + if g_zeros == 'T': + x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + gerber_code += '%LPD*%\n' except Exception as e: log.debug("FlatCAMObj.FlatCAMGerber.export_gerber() --> %s" % str(e)) diff --git a/README.md b/README.md index 61cc9373..80d5047f 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ CAD program, and create G-Code for Isolation routing. - rewrited the Gerber Parser in camlib - success - moved the self.apertures[aperture]['geometry'] processing for clear_geometry (geometry made with Gerber LPC command) in Gerber Editor - Gerber Editor: fixed the Poligonize Tool to work with new geometric structure and took care of a special case +- Gerber Export is fixed to work with the new Gerber object data structure and it now works also for Gerber objects edited in Gerber Editor 12.05.2019 diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 301be9f3..d45c15c8 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -3468,6 +3468,11 @@ class FlatCAMGrbEditor(QtCore.QObject): else: new_geo_el['follow'] = geometric_data['follow'] follow_buffer.append(deepcopy(new_geo_el['follow'])) + else: + if 'solid' in geometric_data: + geo_f = geometric_data['solid'].exterior + new_geo_el['follow'] = geo_f + follow_buffer.append(deepcopy(new_geo_el['follow'])) if 'clear' in geometric_data: new_geo_el['clear'] = geometric_data['clear'] From 78939fdc84b33b07114522d46d0ae286125b798e Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 15 May 2019 03:56:31 +0300 Subject: [PATCH 21/42] - Gerber Editor: fixed units conversion for obj.apertures keys that require it --- FlatCAMObj.py | 4 +++- README.md | 1 + camlib.py | 22 +++++++++++----------- flatcamEditors/FlatCAMGrbEditor.py | 28 ++++++++++++++++++++++++++-- 4 files changed, 41 insertions(+), 14 deletions(-) diff --git a/FlatCAMObj.py b/FlatCAMObj.py index d7d377a2..691c33a6 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -1428,6 +1428,7 @@ class FlatCAMGerber(FlatCAMObj, Gerber): x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, yform=y_formatted) + # gerber_code += "D02*\n" if 'clear' in geo_elem: gerber_code += '%LPC*%\n' @@ -1461,7 +1462,8 @@ class FlatCAMGerber(FlatCAMObj, Gerber): else: x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, - yform=y_formatted) + yform=y_formatted) + # gerber_code += "D02*\n" gerber_code += '%LPD*%\n' except Exception as e: diff --git a/README.md b/README.md index 80d5047f..1d13e7da 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ CAD program, and create G-Code for Isolation routing. - moved the self.apertures[aperture]['geometry'] processing for clear_geometry (geometry made with Gerber LPC command) in Gerber Editor - Gerber Editor: fixed the Poligonize Tool to work with new geometric structure and took care of a special case - Gerber Export is fixed to work with the new Gerber object data structure and it now works also for Gerber objects edited in Gerber Editor +- Gerber Editor: fixed units conversion for obj.apertures keys that require it 12.05.2019 diff --git a/camlib.py b/camlib.py index 594d2182..709aacfb 100644 --- a/camlib.py +++ b/camlib.py @@ -1936,6 +1936,9 @@ class Gerber (Geometry): } ''' + # store the file units here: + self.gerber_units = 'IN' + # aperture storage self.apertures = {} @@ -2173,7 +2176,7 @@ class Gerber (Geometry): path = [] # store the file units here: - gerber_units = 'IN' + self.gerber_units = 'IN' # this is for temporary storage of solid geometry until it is added to poly_buffer geo_s = None @@ -2323,8 +2326,8 @@ class Gerber (Geometry): # Example: %MOIN*% match = self.mode_re.search(gline) if match: - gerber_units = match.group(1) - log.debug("Gerber units found = %s" % gerber_units) + self.gerber_units = match.group(1) + log.debug("Gerber units found = %s" % self.gerber_units) # Changed for issue #80 self.convert_units(match.group(1)) continue @@ -2344,8 +2347,8 @@ class Gerber (Geometry): "D-no zero suppression)" % self.gerber_zeros) log.debug("Gerber format found. Coordinates type = %s (Absolute or Relative)" % absolute) - gerber_units = match.group(1) - log.debug("Gerber units found = %s" % gerber_units) + self.gerber_units = match.group(1) + log.debug("Gerber units found = %s" % self.gerber_units) # Changed for issue #80 self.convert_units(match.group(5)) continue @@ -2370,8 +2373,8 @@ class Gerber (Geometry): "D-no zerosuppressionn)" % self.gerber_zeros) log.debug("Gerber format found. Coordinates type = %s (Absolute or Relative)" % absolute) - gerber_units = match.group(1) - log.debug("Gerber units found = %s" % gerber_units) + self.gerber_units = match.group(1) + log.debug("Gerber units found = %s" % self.gerber_units) # Changed for issue #80 self.convert_units(match.group(5)) continue @@ -3123,7 +3126,7 @@ class Gerber (Geometry): # TODO: make sure to keep track of units changes because right now it seems to happen in a weird way # find out the conversion factor used to convert inside the self.apertures keys: size, width, height - file_units = gerber_units if gerber_units else 'IN' + file_units = self.gerber_units if self.gerber_units else 'IN' app_units = self.app.defaults['units'] conversion_factor = 25.4 if file_units == 'IN' else (1/25.4) if file_units != app_units else 1 @@ -3136,9 +3139,6 @@ class Gerber (Geometry): # this treats the case when we are storing geometry as solids log.warning("Joining %d polygons." % len(poly_buffer)) - for td in self.apertures: - print(td, self.apertures[td]) - if len(poly_buffer) == 0: log.error("Object is not Gerber file or empty. Aborting Object creation.") return 'fail' diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index d45c15c8..3628b71e 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -2603,6 +2603,8 @@ class FlatCAMGrbEditor(QtCore.QObject): # store the status of the editor so the Delete at object level will not work until the edit is finished self.editor_active = False + self.conversion_factor = 1 + self.set_ui() def pool_recreated(self, pool): @@ -2712,8 +2714,8 @@ class FlatCAMGrbEditor(QtCore.QObject): try: if self.storage_dict[ap_code]['size'] is not None: - ap_size_item = QtWidgets.QTableWidgetItem('%.4f' % - float(self.storage_dict[ap_code]['size'])) + ap_size_item = QtWidgets.QTableWidgetItem('%.4f' % float( + self.storage_dict[ap_code]['size'])) else: ap_size_item = QtWidgets.QTableWidgetItem('') except KeyError: @@ -3266,6 +3268,11 @@ class FlatCAMGrbEditor(QtCore.QObject): self.gerber_obj = orig_grb_obj self.gerber_obj_options = orig_grb_obj.options + file_units = self.gerber_obj.gerber_units if self.gerber_obj.gerber_units else 'IN' + app_units = self.app.defaults['units'] + + self.conversion_factor = 25.4 if file_units == 'IN' else (1 / 25.4) if file_units != app_units else 1 + # Hide original geometry orig_grb_obj.visible = False @@ -3280,6 +3287,23 @@ class FlatCAMGrbEditor(QtCore.QObject): except Exception as e: log.debug("FlatCAMGrbEditor.edit_fcgerber() --> %s" % str(e)) + # apply the conversion factor on the obj.apertures + conv_apertures = deepcopy(self.gerber_obj.apertures) + for apid in self.gerber_obj.apertures: + for key in self.gerber_obj.apertures[apid]: + if key == 'width': + conv_apertures[apid]['width'] = self.gerber_obj.apertures[apid]['width'] * self.conversion_factor + elif key == 'height': + conv_apertures[apid]['height'] = self.gerber_obj.apertures[apid]['height'] * self.conversion_factor + elif key == 'diam': + conv_apertures[apid]['diam'] = self.gerber_obj.apertures[apid]['diam'] * self.conversion_factor + elif key == 'size': + conv_apertures[apid]['size'] = self.gerber_obj.apertures[apid]['size'] * self.conversion_factor + else: + conv_apertures[apid][key] = self.gerber_obj.apertures[apid][key] + + self.gerber_obj.apertures = conv_apertures + # ############################################################### # APPLY CLEAR_GEOMETRY on the SOLID_GEOMETRY # ############################################################### From e6a0997fd682149ae9db4ed8dfb3a5c77a39e98b Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 15 May 2019 14:02:24 +0300 Subject: [PATCH 22/42] - camlib Gerber parser - made sure that we don't loose goemetry in regions - Gerber Editor - made sure that for some tools the added geometry is clean (the coordinates are non repeating) - covered some possible issues in Gerber Export --- FlatCAMObj.py | 240 +++++++++++++++-------------- README.md | 3 + camlib.py | 41 ++--- flatcamEditors/FlatCAMGrbEditor.py | 15 +- 4 files changed, 160 insertions(+), 139 deletions(-) diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 691c33a6..dfbbf718 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -1308,84 +1308,87 @@ class FlatCAMGerber(FlatCAMObj, Gerber): for geo_elem in self.apertures['0']['geometry']: if 'solid' in geo_elem: geo = geo_elem['solid'] - gerber_code += 'G36*\n' - geo_coords = list(geo.exterior.coords) - # first command is a move with pen-up D02 at the beginning of the geo - if g_zeros == 'T': - x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, - yform=y_formatted) - else: - x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, - yform=y_formatted) - for coord in geo_coords[1:]: + if not geo.is_empty: + gerber_code += 'G36*\n' + geo_coords = list(geo.exterior.coords) + # first command is a move with pen-up D02 at the beginning of the geo if g_zeros == 'T': - x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) else: - x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) - gerber_code += 'D02*\n' - gerber_code += 'G37*\n' - - clear_list = list(geo.interiors) - if clear_list: - gerber_code += '%LPC*%\n' - for clear_geo in clear_list: - gerber_code += 'G36*\n' - geo_coords = list(clear_geo.coords) - - # first command is a move with pen-up D02 at the beginning of the geo + for coord in geo_coords[1:]: if g_zeros == 'T': - x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, + x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, yform=y_formatted) else: - x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, + x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, yform=y_formatted) - for coord in geo_coords[1:]: + gerber_code += 'D02*\n' + gerber_code += 'G37*\n' + + clear_list = list(geo.interiors) + if clear_list: + gerber_code += '%LPC*%\n' + for clear_geo in clear_list: + gerber_code += 'G36*\n' + geo_coords = list(clear_geo.coords) + + # first command is a move with pen-up D02 at the beginning of the geo if g_zeros == 'T': - x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = tz_format( + geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) else: - x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = lz_format( + geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) - gerber_code += 'D02*\n' - gerber_code += 'G37*\n' - gerber_code += '%LPD*%\n' + for coord in geo_coords[1:]: + if g_zeros == 'T': + x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + gerber_code += 'D02*\n' + gerber_code += 'G37*\n' + gerber_code += '%LPD*%\n' if 'clear' in geo_elem: geo = geo_elem['clear'] - - gerber_code += '%LPC*%\n' - gerber_code += 'G36*\n' - geo_coords = list(geo.exterior.coords) - # first command is a move with pen-up D02 at the beginning of the geo - if g_zeros == 'T': - x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, - yform=y_formatted) - else: - x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, - yform=y_formatted) - for coord in geo_coords[1:]: + if not geo.is_empty: + gerber_code += '%LPC*%\n' + gerber_code += 'G36*\n' + geo_coords = list(geo.exterior.coords) + # first command is a move with pen-up D02 at the beginning of the geo if g_zeros == 'T': - x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) else: - x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) - gerber_code += 'D02*\n' - gerber_code += 'G37*\n' - gerber_code += '%LPD*%\n' + for coord in geo_coords[1:]: + if g_zeros == 'T': + x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + gerber_code += 'D02*\n' + gerber_code += 'G37*\n' + gerber_code += '%LPD*%\n' for apid in self.apertures: if apid == '0': @@ -1396,75 +1399,78 @@ class FlatCAMGerber(FlatCAMObj, Gerber): for geo_elem in self.apertures[apid]['geometry']: if 'follow' in geo_elem: geo = geo_elem['follow'] - if geo.is_empty: - continue - - if isinstance(geo, Point): - if g_zeros == 'T': - x_formatted, y_formatted = tz_format(geo.x, geo.y, factor) - gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, - yform=y_formatted) - else: - x_formatted, y_formatted = lz_format(geo.x, geo.y, factor) - gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, - yform=y_formatted) - else: - geo_coords = list(geo.coords) - # first command is a move with pen-up D02 at the beginning of the geo - if g_zeros == 'T': - x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, - yform=y_formatted) - else: - x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, - yform=y_formatted) - for coord in geo_coords[1:]: + if not geo.is_empty: + if isinstance(geo, Point): if g_zeros == 'T': - x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = tz_format(geo.x, geo.y, factor) + gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, yform=y_formatted) else: - x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = lz_format(geo.x, geo.y, factor) + gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, yform=y_formatted) - # gerber_code += "D02*\n" + else: + geo_coords = list(geo.coords) + # first command is a move with pen-up D02 at the beginning of the geo + if g_zeros == 'T': + x_formatted, y_formatted = tz_format( + geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format( + geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, + yform=y_formatted) + for coord in geo_coords[1:]: + if g_zeros == 'T': + x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + # gerber_code += "D02*\n" if 'clear' in geo_elem: gerber_code += '%LPC*%\n' geo = geo_elem['clear'] - if isinstance(geo, Point): - if g_zeros == 'T': - x_formatted, y_formatted = tz_format(geo.x, geo.y, factor) - gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, - yform=y_formatted) - else: - x_formatted, y_formatted = lz_format(geo.x, geo.y, factor) - gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, - yform=y_formatted) - else: - geo_coords = list(geo.coords) - # first command is a move with pen-up D02 at the beginning of the geo - if g_zeros == 'T': - x_formatted, y_formatted = tz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, - yform=y_formatted) - else: - x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) - gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, - yform=y_formatted) - for coord in geo_coords[1:]: + if not geo.is_empty: + if isinstance(geo, Point): if g_zeros == 'T': - x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + x_formatted, y_formatted = tz_format(geo.x, geo.y, factor) + gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, yform=y_formatted) else: - x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, - yform=y_formatted) - # gerber_code += "D02*\n" - gerber_code += '%LPD*%\n' + x_formatted, y_formatted = lz_format(geo.x, geo.y, factor) + gerber_code += "X{xform}Y{yform}D03*\n".format(xform=x_formatted, + yform=y_formatted) + else: + geo_coords = list(geo.coords) + # first command is a move with pen-up D02 at the beginning of the geo + if g_zeros == 'T': + x_formatted, y_formatted = tz_format( + geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format( + geo_coords[0][0], geo_coords[0][1], factor) + gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, + yform=y_formatted) + for coord in geo_coords[1:]: + if g_zeros == 'T': + x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + # gerber_code += "D02*\n" + gerber_code += '%LPD*%\n' except Exception as e: log.debug("FlatCAMObj.FlatCAMGerber.export_gerber() --> %s" % str(e)) diff --git a/README.md b/README.md index 1d13e7da..ed2d5f2b 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,9 @@ CAD program, and create G-Code for Isolation routing. - Gerber Editor: fixed the Poligonize Tool to work with new geometric structure and took care of a special case - Gerber Export is fixed to work with the new Gerber object data structure and it now works also for Gerber objects edited in Gerber Editor - Gerber Editor: fixed units conversion for obj.apertures keys that require it +- camlib Gerber parser - made sure that we don't loose goemetry in regions +- Gerber Editor - made sure that for some tools the added geometry is clean (the coordinates are non repeating) +- covered some possible issues in Gerber Export 12.05.2019 diff --git a/camlib.py b/camlib.py index 709aacfb..2084c186 100644 --- a/camlib.py +++ b/camlib.py @@ -2575,27 +2575,28 @@ class Gerber (Geometry): self.apertures['0']['size'] = 0.0 self.apertures['0']['geometry'] = [] - # if D02 happened before G37 we now have a path with 1 element only so we have to add the current + # if D02 happened before G37 we now have a path with 1 element only; we have to add the current # geo to the poly_buffer otherwise we loose it - # if current_operation_code == 2: - # print(path) - # geo_dict = dict() - # if geo_f: - # if not geo_f.is_empty: - # follow_buffer.append(geo_f) - # geo_dict['follow'] = geo_f - # if geo_s: - # if not geo_s.is_empty: - # poly_buffer.append(geo_s) - # if self.is_lpc is True: - # geo_dict['clear'] = geo_s - # else: - # geo_dict['solid'] = geo_s - # - # if geo_s or geo_f: - # self.apertures['0']['geometry'].append(deepcopy(geo_dict)) - # - # continue + if current_operation_code == 2: + if len(path) == 1: + # this means that the geometry was prepared previously and we just need to add it + geo_dict = dict() + if geo_f: + if not geo_f.is_empty: + follow_buffer.append(geo_f) + geo_dict['follow'] = geo_f + if geo_s: + if not geo_s.is_empty: + poly_buffer.append(geo_s) + if self.is_lpc is True: + geo_dict['clear'] = geo_s + else: + geo_dict['solid'] = geo_s + + if geo_s or geo_f: + self.apertures['0']['geometry'].append(deepcopy(geo_dict)) + + path = [[current_x, current_y]] # Start new path # Only one path defines region? # This can happen if D02 happened before G37 and diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 3628b71e..9d83acf8 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -767,6 +767,9 @@ class FCPoligonize(FCShapeTool): current_storage = self.draw_app.storage_dict[self.draw_app.last_aperture_selected]['geometry'] if isinstance(fused_geo, MultiPolygon): for geo in fused_geo: + # clean-up the geo + geo = geo.buffer(0) + if len(geo.interiors) == 0: try: current_storage = self.draw_app.storage_dict['0']['geometry'] @@ -778,6 +781,9 @@ class FCPoligonize(FCShapeTool): new_el['follow'] = geo.exterior self.draw_app.on_grb_shape_complete(current_storage, specific_shape=DrawToolShape(deepcopy(new_el))) else: + # clean-up the geo + fused_geo = fused_geo.buffer(0) + if len(fused_geo.interiors) == 0 and len(exterior_geo) == 1: try: current_storage = self.draw_app.storage_dict['0']['geometry'] @@ -1118,7 +1124,7 @@ class FCTrack(FCRegion): new_geo_el['solid'] = Point(self.temp_points).buffer(self.buf_val) new_geo_el['follow'] = Point(self.temp_points) else: - new_geo_el['solid'] = LineString(self.temp_points).buffer(self.buf_val) + new_geo_el['solid'] = (LineString(self.temp_points).buffer(self.buf_val)).buffer(0) new_geo_el['follow'] = LineString(self.temp_points) self.geometry = DrawToolShape(new_geo_el) @@ -1134,7 +1140,12 @@ class FCTrack(FCRegion): def click(self, point): self.draw_app.in_action = True - self.points.append(point) + try: + if point != self.points[-1]: + self.points.append(point) + except IndexError: + self.points.append(point) + new_geo_el = dict() if len(self.temp_points) == 1: From b2cb0f9ffb474f912b697800e8d8b8a6bb19240f Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 15 May 2019 17:27:07 +0300 Subject: [PATCH 23/42] - minor change in Readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ed2d5f2b..b178e92d 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,7 @@ CAD program, and create G-Code for Isolation routing. - Gerber Editor - working in conversion to the new data format - made sure that only units toggle done in Edit -> Preferences will toggle the data in Preferences. The menu entry Edit -> Toggle Units and the shortcut key 'Q' will change only the display units in the app - optimized Transform tool +- RELEASE 8.916 9.05.2019 From d172a3ca4989ed165ffd966511a52505781f14af Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Thu, 16 May 2019 03:13:22 +0300 Subject: [PATCH 24/42] - Gerber Export: made sure that if some of the coordinates in a Gerber object geometry are repeating then the resulting Gerber code include only one copy - added a new parameter/feature: now the spindle can work in clockwise mode (CW) or counter clockwise mode (CCW) --- FlatCAMApp.py | 8 ++ FlatCAMObj.py | 94 +++++++++++++++--------- README.md | 5 ++ camlib.py | 18 ++--- flatcamGUI/FlatCAMGUI.py | 54 ++++++++++---- postprocessors/Toolchange_Custom.py | 5 +- postprocessors/Toolchange_Probe_MACH3.py | 5 +- postprocessors/Toolchange_manual.py | 7 +- postprocessors/default.py | 5 +- postprocessors/grbl_11.py | 7 +- postprocessors/grbl_laser.py | 6 +- postprocessors/line_xyz.py | 5 +- postprocessors/marlin.py | 7 +- 13 files changed, 149 insertions(+), 77 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 54b27f0f..e5cd1830 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -396,6 +396,7 @@ class App(QtCore.QObject): "excellon_travelz": self.ui.excellon_defaults_form.excellon_opt_group.travelz_entry, "excellon_feedrate": self.ui.excellon_defaults_form.excellon_opt_group.feedrate_entry, "excellon_spindlespeed": self.ui.excellon_defaults_form.excellon_opt_group.spindlespeed_entry, + "excellon_spindledir": self.ui.excellon_defaults_form.excellon_opt_group.spindledir_radio, "excellon_dwell": self.ui.excellon_defaults_form.excellon_opt_group.dwell_cb, "excellon_dwelltime": self.ui.excellon_defaults_form.excellon_opt_group.dwelltime_entry, "excellon_toolchange": self.ui.excellon_defaults_form.excellon_opt_group.toolchange_cb, @@ -434,6 +435,7 @@ class App(QtCore.QObject): "geometry_feedrate": self.ui.geometry_defaults_form.geometry_opt_group.cncfeedrate_entry, "geometry_feedrate_z": self.ui.geometry_defaults_form.geometry_opt_group.cncplunge_entry, "geometry_spindlespeed": self.ui.geometry_defaults_form.geometry_opt_group.cncspindlespeed_entry, + "geometry_spindledir": self.ui.geometry_defaults_form.geometry_opt_group.spindledir_radio, "geometry_dwell": self.ui.geometry_defaults_form.geometry_opt_group.dwell_cb, "geometry_dwelltime": self.ui.geometry_defaults_form.geometry_opt_group.dwelltime_entry, "geometry_ppname_g": self.ui.geometry_defaults_form.geometry_opt_group.pp_geometry_name_cb, @@ -711,6 +713,7 @@ class App(QtCore.QObject): "excellon_travelz": 0.1, "excellon_feedrate": 3.0, "excellon_spindlespeed": None, + "excellon_spindledir": 'CW', "excellon_dwell": False, "excellon_dwelltime": 1, "excellon_toolchange": False, @@ -753,6 +756,7 @@ class App(QtCore.QObject): "geometry_feedrate": 3.0, "geometry_feedrate_z": 3.0, "geometry_spindlespeed": None, + "geometry_spindledir": 'CW', "geometry_dwell": False, "geometry_dwelltime": 1, "geometry_ppname_g": 'default', @@ -942,6 +946,7 @@ class App(QtCore.QObject): "excellon_travelz": self.ui.excellon_options_form.excellon_opt_group.travelz_entry, "excellon_feedrate": self.ui.excellon_options_form.excellon_opt_group.feedrate_entry, "excellon_spindlespeed": self.ui.excellon_options_form.excellon_opt_group.spindlespeed_entry, + "excellon_spindledir": self.ui.excellon_options_form.excellon_opt_group.spindledir_radio, "excellon_dwell": self.ui.excellon_options_form.excellon_opt_group.dwell_cb, "excellon_dwelltime": self.ui.excellon_options_form.excellon_opt_group.dwelltime_entry, "excellon_toolchange": self.ui.excellon_options_form.excellon_opt_group.toolchange_cb, @@ -963,6 +968,7 @@ class App(QtCore.QObject): "geometry_feedrate": self.ui.geometry_options_form.geometry_opt_group.cncfeedrate_entry, "geometry_feedrate_z": self.ui.geometry_options_form.geometry_opt_group.cncplunge_entry, "geometry_spindlespeed": self.ui.geometry_options_form.geometry_opt_group.cncspindlespeed_entry, + "geometry_spindledir": self.ui.geometry_options_form.geometry_opt_group.spindledir_radio, "geometry_dwell": self.ui.geometry_options_form.geometry_opt_group.dwell_cb, "geometry_dwelltime": self.ui.geometry_options_form.geometry_opt_group.dwelltime_entry, "geometry_ppname_g": self.ui.geometry_options_form.geometry_opt_group.pp_geometry_name_cb, @@ -1065,6 +1071,7 @@ class App(QtCore.QObject): "excellon_feedrate": 3.0, "excellon_feedrate_rapid": 3.0, "excellon_spindlespeed": None, + "excellon_spindledir": 'CW', "excellon_dwell": True, "excellon_dwelltime": 1000, "excellon_toolchange": False, @@ -1085,6 +1092,7 @@ class App(QtCore.QObject): "geometry_feedrate_z": 3.0, "geometry_feedrate_rapid": 3.0, "geometry_spindlespeed": None, + "geometry_spindledir": 'CW', "geometry_dwell": True, "geometry_dwelltime": 1000, "geometry_cnctooldia": 0.016, diff --git a/FlatCAMObj.py b/FlatCAMObj.py index dfbbf718..1c4c2441 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -1350,15 +1350,20 @@ class FlatCAMGerber(FlatCAMObj, Gerber): geo_coords[0][0], geo_coords[0][1], factor) gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) + + prev_coord = geo_coords[0] for coord in geo_coords[1:]: - if g_zeros == 'T': - x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, - yform=y_formatted) - else: - x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, - yform=y_formatted) + if coord != prev_coord: + if g_zeros == 'T': + x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + prev_coord = coord + gerber_code += 'D02*\n' gerber_code += 'G37*\n' gerber_code += '%LPD*%\n' @@ -1377,15 +1382,20 @@ class FlatCAMGerber(FlatCAMObj, Gerber): x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor) gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) + + prev_coord = geo_coords[0] for coord in geo_coords[1:]: - if g_zeros == 'T': - x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, - yform=y_formatted) - else: - x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, - yform=y_formatted) + if coord != prev_coord: + if g_zeros == 'T': + x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + prev_coord = coord + gerber_code += 'D02*\n' gerber_code += 'G37*\n' gerber_code += '%LPD*%\n' @@ -1422,15 +1432,20 @@ class FlatCAMGerber(FlatCAMObj, Gerber): geo_coords[0][0], geo_coords[0][1], factor) gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) + + prev_coord = geo_coords[0] for coord in geo_coords[1:]: - if g_zeros == 'T': - x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, - yform=y_formatted) - else: - x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, - yform=y_formatted) + if coord != prev_coord: + if g_zeros == 'T': + x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + prev_coord = coord + # gerber_code += "D02*\n" if 'clear' in geo_elem: @@ -1460,15 +1475,20 @@ class FlatCAMGerber(FlatCAMObj, Gerber): geo_coords[0][0], geo_coords[0][1], factor) gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted, yform=y_formatted) + + prev_coord = geo_coords[0] for coord in geo_coords[1:]: - if g_zeros == 'T': - x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, - yform=y_formatted) - else: - x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) - gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, - yform=y_formatted) + if coord != prev_coord: + if g_zeros == 'T': + x_formatted, y_formatted = tz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + else: + x_formatted, y_formatted = lz_format(coord[0], coord[1], factor) + gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted, + yform=y_formatted) + + prev_coord = coord # gerber_code += "D02*\n" gerber_code += '%LPD*%\n' @@ -2551,8 +2571,10 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): job_obj.feedrate_rapid = float(self.options["feedrate_rapid"]) job_obj.spindlespeed = float(self.options["spindlespeed"]) if self.options["spindlespeed"] else None + job_obj.spindledir = self.app.defaults['excellon_spindledir'] job_obj.dwell = self.options["dwell"] job_obj.dwelltime = float(self.options["dwelltime"]) + job_obj.pp_excellon_name = pp_excellon_name job_obj.toolchange_xy_type = "excellon" @@ -4406,6 +4428,8 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): 'offset_value': tool_offset }) + spindledir = self.app.defaults['geometry_spindledir'] + job_obj.coords_decimals = self.app.defaults["cncjob_coords_decimals"] job_obj.fr_decimals = self.app.defaults["cncjob_fr_decimals"] @@ -4425,7 +4449,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): self, tooldia=tooldia_val, offset=tool_offset, tolerance=0.0005, z_cut=z_cut, z_move=z_move, feedrate=feedrate, feedrate_z=feedrate_z, feedrate_rapid=feedrate_rapid, - spindlespeed=spindlespeed, dwell=dwell, dwelltime=dwelltime, + spindlespeed=spindlespeed, spindledir=spindledir, dwell=dwell, dwelltime=dwelltime, multidepth=multidepth, depthpercut=depthpercut, extracut=extracut, startz=startz, endz=endz, toolchange=toolchange, toolchangez=toolchangez, toolchangexy=toolchangexy, @@ -4649,12 +4673,14 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): app_obj.progress.emit(40) + spindledir = self.app.defaults['geometry_spindledir'] + tool_solid_geometry = self.tools[current_uid]['solid_geometry'] 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, feedrate=feedrate, feedrate_z=feedrate_z, feedrate_rapid=feedrate_rapid, - spindlespeed=spindlespeed, dwell=dwell, dwelltime=dwelltime, + spindlespeed=spindlespeed, spindledir=spindledir, dwell=dwell, dwelltime=dwelltime, multidepth=multidepth, depthpercut=depthpercut, extracut=extracut, startz=startz, endz=endz, toolchange=toolchange, toolchangez=toolchangez, toolchangexy=toolchangexy, diff --git a/README.md b/README.md index b178e92d..9a648f7c 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,11 @@ CAD program, and create G-Code for Isolation routing. ================================================= +16.05.2019 + +- Gerber Export: made sure that if some of the coordinates in a Gerber object geometry are repeating then the resulting Gerber code include only one copy +- added a new parameter/feature: now the spindle can work in clockwise mode (CW) or counter clockwise mode (CCW) + 15.05.2019 - rewrited the Gerber Parser in camlib - success diff --git a/camlib.py b/camlib.py index 2084c186..b76aa630 100644 --- a/camlib.py +++ b/camlib.py @@ -4932,7 +4932,7 @@ class CNCjob(Geometry): feedrate=3.0, feedrate_z=3.0, feedrate_rapid=3.0, feedrate_probe=3.0, pp_geometry_name='default', pp_excellon_name='default', depthpercut=0.1,z_pdepth=-0.02, - spindlespeed=None, dwell=True, dwelltime=1000, + spindlespeed=None, spindledir='CW', dwell=True, dwelltime=1000, toolchangez=0.787402, toolchange_xy=[0.0, 0.0], endz=2.0, segx=None, @@ -5000,6 +5000,7 @@ class CNCjob(Geometry): self.feedrate_probe = feedrate_probe if feedrate_probe else None self.spindlespeed = spindlespeed + self.spindledir = spindledir self.dwell = dwell self.dwelltime = dwelltime @@ -5553,7 +5554,7 @@ class CNCjob(Geometry): def generate_from_multitool_geometry(self, geometry, append=True, tooldia=None, offset=0.0, tolerance=0, z_cut=1.0, z_move=2.0, feedrate=2.0, feedrate_z=2.0, feedrate_rapid=30, - spindlespeed=None, dwell=False, dwelltime=1.0, + spindlespeed=None, spindledir='CW', dwell=False, dwelltime=1.0, multidepth=False, depthpercut=None, toolchange=False, toolchangez=1.0, toolchangexy="0.0, 0.0", extracut=False, startz=None, endz=2.0, pp_geometry_name=None, tool_no=1): @@ -5603,6 +5604,7 @@ class CNCjob(Geometry): self.feedrate_rapid = float(feedrate_rapid) if feedrate_rapid else None self.spindlespeed = int(spindlespeed) if spindlespeed else None + self.spindledir = spindledir self.dwell = dwell self.dwelltime = float(dwelltime) if dwelltime else None @@ -5767,7 +5769,7 @@ class CNCjob(Geometry): tooldia=None, offset=0.0, tolerance=0, z_cut=1.0, z_move=2.0, feedrate=2.0, feedrate_z=2.0, feedrate_rapid=30, - spindlespeed=None, dwell=False, dwelltime=1.0, + spindlespeed=None, spindledir='CW', dwell=False, dwelltime=1.0, multidepth=False, depthpercut=None, toolchange=False, toolchangez=1.0, toolchangexy="0.0, 0.0", extracut=False, startz=None, endz=2.0, @@ -5863,29 +5865,21 @@ class CNCjob(Geometry): self.tooldia = float(tooldia) if tooldia else None self.z_cut = float(z_cut) if z_cut else None - self.z_move = float(z_move) if z_move else None self.feedrate = float(feedrate) if feedrate else None - self.z_feedrate = float(feedrate_z) if feedrate_z else None - self.feedrate_rapid = float(feedrate_rapid) if feedrate_rapid else None self.spindlespeed = int(spindlespeed) if spindlespeed else None - + self.spindledir = spindledir self.dwell = dwell - self.dwelltime = float(dwelltime) if dwelltime else None self.startz = float(startz) if startz else None - self.z_end = float(endz) if endz else None - self.z_depthpercut = float(depthpercut) if depthpercut else None - self.multidepth = multidepth - self.z_toolchange = float(toolchangez) if toolchangez else None try: diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index 11987e9c..62505ab8 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -4628,6 +4628,20 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): self.spindlespeed_entry = IntEntry(allow_empty=True) grid2.addWidget(self.spindlespeed_entry, 5, 1) + # Spindle direction + spindle_dir_label = QtWidgets.QLabel(_('Spindle dir.:')) + spindle_dir_label.setToolTip( + _("This sets the direction that the spindle is rotating.\n" + "It can be either:\n" + "- CW = clockwise or\n" + "- CCW = counter clockwise") + ) + + self.spindledir_radio = RadioSet([{'label': 'CW', 'value': 'CW'}, + {'label': 'CCW', 'value': 'CCW'}]) + grid2.addWidget(spindle_dir_label, 6, 0) + grid2.addWidget(self.spindledir_radio, 6, 1) + # Dwell dwelllabel = QtWidgets.QLabel(_('Dwell:')) dwelllabel.setToolTip( @@ -4640,10 +4654,10 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): ) self.dwell_cb = FCCheckBox() self.dwelltime_entry = FCEntry() - grid2.addWidget(dwelllabel, 6, 0) - grid2.addWidget(self.dwell_cb, 6, 1) - grid2.addWidget(dwelltime, 7, 0) - grid2.addWidget(self.dwelltime_entry, 7, 1) + grid2.addWidget(dwelllabel, 7, 0) + grid2.addWidget(self.dwell_cb, 7, 1) + grid2.addWidget(dwelltime, 8, 0) + grid2.addWidget(self.dwelltime_entry, 8, 1) self.ois_dwell_exc = OptionalInputSection(self.dwell_cb, [self.dwelltime_entry]) @@ -4653,10 +4667,10 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): _("The postprocessor file that dictates\n" "gcode output.") ) - grid2.addWidget(pp_excellon_label, 8, 0) + 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, 8, 1) + grid2.addWidget(self.pp_excellon_name_cb, 9, 1) #### Choose what to use for Gcode creation: Drills, Slots or Both @@ -4670,8 +4684,8 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI): self.excellon_gcode_type_radio = RadioSet([{'label': 'Drills', 'value': 'drills'}, {'label': 'Slots', 'value': 'slots'}, {'label': 'Both', 'value': 'both'}]) - grid2.addWidget(excellon_gcode_type_label, 9, 0) - grid2.addWidget(self.excellon_gcode_type_radio, 9, 1) + grid2.addWidget(excellon_gcode_type_label, 10, 0) + grid2.addWidget(self.excellon_gcode_type_radio, 10, 1) # until I decide to implement this feature those remain disabled excellon_gcode_type_label.hide() @@ -5121,6 +5135,20 @@ class GeometryOptPrefGroupUI(OptionsGroupUI): self.cncspindlespeed_entry = IntEntry(allow_empty=True) grid1.addWidget(self.cncspindlespeed_entry, 8, 1) + # Spindle direction + spindle_dir_label = QtWidgets.QLabel(_('Spindle dir.:')) + spindle_dir_label.setToolTip( + _("This sets the direction that the spindle is rotating.\n" + "It can be either:\n" + "- CW = clockwise or\n" + "- CCW = counter clockwise") + ) + + self.spindledir_radio = RadioSet([{'label': 'CW', 'value': 'CW'}, + {'label': 'CCW', 'value': 'CCW'}]) + grid1.addWidget(spindle_dir_label, 9, 0) + grid1.addWidget(self.spindledir_radio, 9, 1) + # Dwell self.dwell_cb = FCCheckBox(label=_('Dwell:')) self.dwell_cb.setToolTip( @@ -5132,9 +5160,9 @@ class GeometryOptPrefGroupUI(OptionsGroupUI): _("Number of milliseconds for spindle to dwell.") ) self.dwelltime_entry = FCEntry() - grid1.addWidget(self.dwell_cb, 9, 0) - grid1.addWidget(dwelltime, 10, 0) - grid1.addWidget(self.dwelltime_entry, 10, 1) + grid1.addWidget(self.dwell_cb, 10, 0) + grid1.addWidget(dwelltime, 11, 0) + grid1.addWidget(self.dwelltime_entry, 11, 1) self.ois_dwell = OptionalInputSection(self.dwell_cb, [self.dwelltime_entry]) @@ -5144,10 +5172,10 @@ class GeometryOptPrefGroupUI(OptionsGroupUI): _("The postprocessor file that dictates\n" "Machine Code output.") ) - grid1.addWidget(pp_label, 11, 0) + grid1.addWidget(pp_label, 12, 0) self.pp_geometry_name_cb = FCComboBox() self.pp_geometry_name_cb.setFocusPolicy(Qt.StrongFocus) - grid1.addWidget(self.pp_geometry_name_cb, 11, 1) + grid1.addWidget(self.pp_geometry_name_cb, 12, 1) self.layout.addStretch() diff --git a/postprocessors/Toolchange_Custom.py b/postprocessors/Toolchange_Custom.py index d9ba51bf..abdbf899 100644 --- a/postprocessors/Toolchange_Custom.py +++ b/postprocessors/Toolchange_Custom.py @@ -157,10 +157,11 @@ M6 return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate)) def spindle_code(self, p): + sdir = {'CW': 'M03', 'CCW': 'M04'}[p.spindledir] if p.spindlespeed: - return 'M03 S' + str(p.spindlespeed) + return '%s S%s' % (sdir, str(p.spindlespeed)) else: - return 'M03' + return sdir def dwell_code(self, p): if p.dwelltime: diff --git a/postprocessors/Toolchange_Probe_MACH3.py b/postprocessors/Toolchange_Probe_MACH3.py index 7d902fd2..60f42926 100644 --- a/postprocessors/Toolchange_Probe_MACH3.py +++ b/postprocessors/Toolchange_Probe_MACH3.py @@ -260,10 +260,11 @@ M0 return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate)) def spindle_code(self, p): + sdir = {'CW': 'M03', 'CCW': 'M04'}[p.spindledir] if p.spindlespeed: - return 'M03 S' + str(p.spindlespeed) + return '%s S%s' % (sdir, str(p.spindlespeed)) else: - return 'M03' + return sdir def dwell_code(self, p): if p.dwelltime: diff --git a/postprocessors/Toolchange_manual.py b/postprocessors/Toolchange_manual.py index 4d9341fd..148fc2c7 100644 --- a/postprocessors/Toolchange_manual.py +++ b/postprocessors/Toolchange_manual.py @@ -220,11 +220,12 @@ M0 def z_feedrate_code(self, p): return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate)) - def spindle_code(self,p): + def spindle_code(self, p): + sdir = {'CW': 'M03', 'CCW': 'M04'}[p.spindledir] if p.spindlespeed: - return 'M03 S' + str(p.spindlespeed) + return '%s S%s' % (sdir, str(p.spindlespeed)) else: - return 'M03' + return sdir def dwell_code(self, p): if p.dwelltime: diff --git a/postprocessors/default.py b/postprocessors/default.py index 643348cf..d9e6a241 100644 --- a/postprocessors/default.py +++ b/postprocessors/default.py @@ -192,10 +192,11 @@ M0""".format(z_toolchange=self.coordinate_format%(p.coords_decimals, z_toolchang return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate)) def spindle_code(self, p): + sdir = {'CW': 'M03', 'CCW': 'M04'}[p.spindledir] if p.spindlespeed: - return 'M03 S' + str(p.spindlespeed) + return '%s S%s' % (sdir, str(p.spindlespeed)) else: - return 'M03' + return sdir def dwell_code(self, p): if p.dwelltime: diff --git a/postprocessors/grbl_11.py b/postprocessors/grbl_11.py index 988a90d5..cae2f39a 100644 --- a/postprocessors/grbl_11.py +++ b/postprocessors/grbl_11.py @@ -191,11 +191,12 @@ M0""".format(z_toolchange=self.coordinate_format%(p.coords_decimals, z_toolchang def z_feedrate_code(self, p): return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate)) - def spindle_code(self,p): + def spindle_code(self, p): + sdir = {'CW': 'M03', 'CCW': 'M04'}[p.spindledir] if p.spindlespeed: - return 'M03 S%d' % p.spindlespeed + return '%s S%s' % (sdir, str(p.spindlespeed)) else: - return 'M03' + return sdir def dwell_code(self, p): if p.dwelltime: diff --git a/postprocessors/grbl_laser.py b/postprocessors/grbl_laser.py index 4895549f..66285191 100644 --- a/postprocessors/grbl_laser.py +++ b/postprocessors/grbl_laser.py @@ -90,7 +90,11 @@ class grbl_laser(FlatCAMPostProc): return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate)) def spindle_code(self, p): - return '' + sdir = {'CW': 'M03', 'CCW': 'M04'}[p.spindledir] + if p.spindlespeed: + return '%s S%s' % (sdir, str(p.spindlespeed)) + else: + return sdir def dwell_code(self, p): return '' diff --git a/postprocessors/line_xyz.py b/postprocessors/line_xyz.py index adbd849f..b9c7aebd 100644 --- a/postprocessors/line_xyz.py +++ b/postprocessors/line_xyz.py @@ -193,10 +193,11 @@ M0""".format(x_toolchange=self.coordinate_format%(p.coords_decimals, x_toolchang return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate)) def spindle_code(self, p): + sdir = {'CW': 'M03', 'CCW': 'M04'}[p.spindledir] if p.spindlespeed: - return 'M03 S' + str(p.spindlespeed) + return '%s S%s' % (sdir, str(p.spindlespeed)) else: - return 'M03' + return sdir def dwell_code(self, p): if p.dwelltime: diff --git a/postprocessors/marlin.py b/postprocessors/marlin.py index 72fe44c9..d0859faf 100644 --- a/postprocessors/marlin.py +++ b/postprocessors/marlin.py @@ -198,11 +198,12 @@ M0""".format(z_toolchange=self.coordinate_format%(p.coords_decimals, z_toolchang def feedrate_rapid_code(self, p): return 'F' + self.feedrate_rapid_format % (p.fr_decimals, p.feedrate_rapid) - def spindle_code(self,p): + def spindle_code(self, p): + sdir = {'CW': 'M3', 'CCW': 'M4'}[p.spindledir] if p.spindlespeed: - return 'M3 S%d' % p.spindlespeed + return '%s S%s' % (sdir, str(p.spindlespeed)) else: - return 'M3' + return sdir def dwell_code(self, p): if p.dwelltime: From e0001dc9b7d2f157130041c274322d632598f2ae Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 17 May 2019 03:04:28 +0300 Subject: [PATCH 25/42] - some cleanup in ToolCutout --- flatcamTools/ToolCutOut.py | 122 ++++++++++++++++++------------------- 1 file changed, 60 insertions(+), 62 deletions(-) diff --git a/flatcamTools/ToolCutOut.py b/flatcamTools/ToolCutOut.py index af04233b..e2585236 100644 --- a/flatcamTools/ToolCutOut.py +++ b/flatcamTools/ToolCutOut.py @@ -5,9 +5,9 @@ from shapely.geometry import box import gettext import FlatCAMTranslation as fcTranslate +import builtins fcTranslate.apply_language('strings') -import builtins if '_' not in builtins.__dict__: _ = gettext.gettext @@ -23,7 +23,7 @@ class CutOut(FlatCAMTool): self.app = app self.canvas = app.plotcanvas - ## Title + # Title title_label = QtWidgets.QLabel("%s" % self.toolName) title_label.setStyleSheet(""" QLabel @@ -34,11 +34,11 @@ class CutOut(FlatCAMTool): """) self.layout.addWidget(title_label) - ## Form Layout + # Form Layout form_layout = QtWidgets.QFormLayout() self.layout.addLayout(form_layout) - ## Type of object to be cutout + # Type of object to be cutout self.type_obj_combo = QtWidgets.QComboBox() self.type_obj_combo.addItem("Gerber") self.type_obj_combo.addItem("Excellon") @@ -53,14 +53,14 @@ class CutOut(FlatCAMTool): self.type_obj_combo_label = QtWidgets.QLabel(_("Obj Type:")) self.type_obj_combo_label.setToolTip( _("Specify the type of object to be cutout.\n" - "It can be of type: Gerber or Geometry.\n" - "What is selected here will dictate the kind\n" - "of objects that will populate the 'Object' combobox.") + "It can be of type: Gerber or Geometry.\n" + "What is selected here will dictate the kind\n" + "of objects that will populate the 'Object' combobox.") ) self.type_obj_combo_label.setFixedWidth(60) form_layout.addRow(self.type_obj_combo_label, self.type_obj_combo) - ## Object to be cutout + # Object to be cutout self.obj_combo = QtWidgets.QComboBox() self.obj_combo.setModel(self.app.collection) self.obj_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) @@ -76,8 +76,8 @@ class CutOut(FlatCAMTool): self.dia = FCEntry() self.dia_label = QtWidgets.QLabel(_("Tool Dia:")) self.dia_label.setToolTip( - _( "Diameter of the tool used to cutout\n" - "the PCB shape out of the surrounding material.") + _("Diameter of the tool used to cutout\n" + "the PCB shape out of the surrounding material.") ) form_layout.addRow(self.dia_label, self.dia) @@ -85,9 +85,9 @@ class CutOut(FlatCAMTool): self.margin = FCEntry() self.margin_label = QtWidgets.QLabel(_("Margin:")) self.margin_label.setToolTip( - _( "Margin over bounds. A positive value here\n" - "will make the cutout of the PCB further from\n" - "the actual PCB border") + _("Margin over bounds. A positive value here\n" + "will make the cutout of the PCB further from\n" + "the actual PCB border") ) form_layout.addRow(self.margin_label, self.margin) @@ -95,10 +95,10 @@ class CutOut(FlatCAMTool): self.gapsize = FCEntry() self.gapsize_label = QtWidgets.QLabel(_("Gap size:")) self.gapsize_label.setToolTip( - _( "The size of the bridge gaps in the cutout\n" - "used to keep the board connected to\n" - "the surrounding material (the one \n" - "from which the PCB is cutout).") + _("The size of the bridge gaps in the cutout\n" + "used to keep the board connected to\n" + "the surrounding material (the one \n" + "from which the PCB is cutout).") ) form_layout.addRow(self.gapsize_label, self.gapsize) @@ -118,14 +118,14 @@ class CutOut(FlatCAMTool): ) form_layout.addRow(self.convex_box_label, self.convex_box) - ## Title2 + # Title2 title_param_label = QtWidgets.QLabel("%s" % _('A. Automatic Bridge Gaps')) title_param_label.setToolTip( _("This section handle creation of automatic bridge gaps.") ) self.layout.addWidget(title_param_label) - ## Form Layout + # Form Layout form_layout_2 = QtWidgets.QFormLayout() self.layout.addLayout(form_layout_2) @@ -133,14 +133,14 @@ class CutOut(FlatCAMTool): gaps_label = QtWidgets.QLabel(_('Gaps:')) gaps_label.setToolTip( _("Number of gaps used for the Automatic 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") ) gaps_label.setFixedWidth(60) @@ -151,14 +151,14 @@ class CutOut(FlatCAMTool): self.gaps.setStyleSheet('background-color: rgb(255,255,255)') form_layout_2.addRow(gaps_label, self.gaps) - ## Buttons + # Buttons hlay = QtWidgets.QHBoxLayout() self.layout.addLayout(hlay) title_ff_label = QtWidgets.QLabel("%s" % _('FreeForm:')) title_ff_label.setToolTip( _("The cutout shape can be of ny shape.\n" - "Useful when the PCB has a non-rectangular shape.") + "Useful when the PCB has a non-rectangular shape.") ) hlay.addWidget(title_ff_label) @@ -167,8 +167,8 @@ class CutOut(FlatCAMTool): self.ff_cutout_object_btn = QtWidgets.QPushButton(_("Generate Geo")) self.ff_cutout_object_btn.setToolTip( _("Cutout the selected object.\n" - "The cutout shape can be of any shape.\n" - "Useful when the PCB has a non-rectangular shape.") + "The cutout shape can be of any shape.\n" + "Useful when the PCB has a non-rectangular shape.") ) hlay.addWidget(self.ff_cutout_object_btn) @@ -178,8 +178,8 @@ class CutOut(FlatCAMTool): title_rct_label = QtWidgets.QLabel("%s" % _('Rectangular:')) title_rct_label.setToolTip( _("The resulting cutout shape is\n" - "always a rectangle shape and it will be\n" - "the bounding box of the Object.") + "always a rectangle shape and it will be\n" + "the bounding box of the Object.") ) hlay2.addWidget(title_rct_label) @@ -187,26 +187,26 @@ class CutOut(FlatCAMTool): self.rect_cutout_object_btn = QtWidgets.QPushButton(_("Generate Geo")) self.rect_cutout_object_btn.setToolTip( _("Cutout the selected object.\n" - "The resulting cutout shape is\n" - "always a rectangle shape and it will be\n" - "the bounding box of the Object.") + "The resulting cutout shape is\n" + "always a rectangle shape and it will be\n" + "the bounding box of the Object.") ) hlay2.addWidget(self.rect_cutout_object_btn) - ## Title5 + # Title5 title_manual_label = QtWidgets.QLabel("%s" % _('B. Manual Bridge Gaps')) title_manual_label.setToolTip( _("This section handle creation of manual bridge gaps.\n" - "This is done by mouse clicking on the perimeter of the\n" - "Geometry object that is used as a cutout object. ") + "This is done by mouse clicking on the perimeter of the\n" + "Geometry object that is used as a cutout object. ") ) self.layout.addWidget(title_manual_label) - ## Form Layout + # Form Layout form_layout_3 = QtWidgets.QFormLayout() self.layout.addLayout(form_layout_3) - ## Manual Geo Object + # Manual Geo Object self.man_object_combo = QtWidgets.QComboBox() self.man_object_combo.setModel(self.app.collection) self.man_object_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex())) @@ -228,9 +228,9 @@ class CutOut(FlatCAMTool): self.man_geo_label = QtWidgets.QLabel(_("Manual Geo:")) self.man_geo_label.setToolTip( _("If the object to be cutout is a Gerber\n" - "first create a Geometry that surrounds it,\n" - "to be used as the cutout, if one doesn't exist yet.\n" - "Select the source Gerber file in the top object combobox.") + "first create a Geometry that surrounds it,\n" + "to be used as the cutout, if one doesn't exist yet.\n" + "Select the source Gerber file in the top object combobox.") ) hlay3.addWidget(self.man_geo_label) @@ -238,9 +238,9 @@ class CutOut(FlatCAMTool): self.man_geo_creation_btn = QtWidgets.QPushButton(_("Generate Geo")) self.man_geo_creation_btn.setToolTip( _("If the object to be cutout is a Gerber\n" - "first create a Geometry that surrounds it,\n" - "to be used as the cutout, if one doesn't exist yet.\n" - "Select the source Gerber file in the top object combobox.") + "first create a Geometry that surrounds it,\n" + "to be used as the cutout, if one doesn't exist yet.\n" + "Select the source Gerber file in the top object combobox.") ) hlay3.addWidget(self.man_geo_creation_btn) @@ -250,8 +250,8 @@ class CutOut(FlatCAMTool): self.man_bridge_gaps_label = QtWidgets.QLabel(_("Manual Add Bridge Gaps:")) self.man_bridge_gaps_label.setToolTip( _("Use the left mouse button (LMB) click\n" - "to create a bridge gap to separate the PCB from\n" - "the surrounding material.") + "to create a bridge gap to separate the PCB from\n" + "the surrounding material.") ) hlay4.addWidget(self.man_bridge_gaps_label) @@ -259,10 +259,10 @@ class CutOut(FlatCAMTool): self.man_gaps_creation_btn = QtWidgets.QPushButton(_("Generate Gap")) self.man_gaps_creation_btn.setToolTip( _("Use the left mouse button (LMB) click\n" - "to create a bridge gap to separate the PCB from\n" - "the surrounding material.\n" - "The LMB click has to be done on the perimeter of\n" - "the Geometry object used as a cutout geometry.") + "to create a bridge gap to separate the PCB from\n" + "the surrounding material.\n" + "The LMB click has to be done on the perimeter of\n" + "the Geometry object used as a cutout geometry.") ) hlay4.addWidget(self.man_gaps_creation_btn) @@ -276,7 +276,7 @@ class CutOut(FlatCAMTool): self.flat_geometry = [] - ## Signals + # Signals self.ff_cutout_object_btn.clicked.connect(self.on_freeform_cutout) self.rect_cutout_object_btn.clicked.connect(self.on_rectangular_cutout) @@ -355,7 +355,6 @@ class CutOut(FlatCAMTool): "Add it and retry.")) return - if 0 in {dia}: self.app.inform.emit(_("[WARNING_NOTCL] Tool Diameter is zero value. Change it to a positive real number.")) return "Tool Diameter is zero value. Change it to a positive real number." @@ -395,8 +394,8 @@ class CutOut(FlatCAMTool): if cutout_obj.multigeo is True: self.app.inform.emit(_("[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n" - "Optionally, this Multi-geo Geometry can be converted to Single-geo Geometry,\n" - "and after that perform Cutout.")) + "Optionally, this Multi-geo Geometry can be converted to Single-geo Geometry,\n" + "and after that perform Cutout.")) return convex_box = self.convex_box.get_value() @@ -410,7 +409,7 @@ class CutOut(FlatCAMTool): gapsize = gapsize / 2 + (dia / 2) - if isinstance(cutout_obj,FlatCAMGeometry): + if isinstance(cutout_obj, FlatCAMGeometry): # rename the obj name so it can be identified as cutout cutout_obj.options["name"] += "_cutout" else: @@ -866,7 +865,7 @@ class CutOut(FlatCAMTool): if reset: self.flat_geometry = [] - ## If iterable, expand recursively. + # If iterable, expand recursively. try: for geo in geometry: if geo is not None: @@ -874,7 +873,7 @@ class CutOut(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) @@ -892,7 +891,7 @@ class CutOut(FlatCAMTool): i.e. it converts polygons into paths. :param points: The vertices of the polygon. - :param geo: Geometry from which to substract. If none, use the solid_geomety property of the object + :param solid_geo: Geometry from which to substract. If none, use the solid_geomety property of the object :return: none """ @@ -913,4 +912,3 @@ class CutOut(FlatCAMTool): def reset_fields(self): self.obj_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) - From 3713a5d78fad155b504201bf6f46f71f6a66e7d0 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 17 May 2019 17:17:58 +0300 Subject: [PATCH 26/42] - remade the Tool Cutout to work on panels - remade the Tool Cutour such that on multiple applications on the same object it will yield the same result --- README.md | 5 + flatcamTools/ToolCutOut.py | 376 ++++++++++++++++++++----------------- 2 files changed, 210 insertions(+), 171 deletions(-) diff --git a/README.md b/README.md index 9a648f7c..fad0dbe8 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,11 @@ CAD program, and create G-Code for Isolation routing. ================================================= +17.05.2019 + +- remade the Tool Cutout to work on panels +- remade the Tool Cutour such that on multiple applications on the same object it will yield the same result + 16.05.2019 - Gerber Export: made sure that if some of the coordinates in a Gerber object geometry are repeating then the resulting Gerber code include only one copy diff --git a/flatcamTools/ToolCutOut.py b/flatcamTools/ToolCutOut.py index e2585236..571c349d 100644 --- a/flatcamTools/ToolCutOut.py +++ b/flatcamTools/ToolCutOut.py @@ -114,7 +114,8 @@ class CutOut(FlatCAMTool): self.convex_box = FCCheckBox() self.convex_box_label = QtWidgets.QLabel(_("Convex Sh.:")) self.convex_box_label.setToolTip( - _("Create a convex shape surrounding the entire PCB.") + _("Create a convex shape surrounding the entire PCB.\n" + "Used only if the source object type is Gerber.") ) form_layout.addRow(self.convex_box_label, self.convex_box) @@ -327,9 +328,9 @@ class CutOut(FlatCAMTool): def on_freeform_cutout(self): - def subtract_rectangle(obj_, x0, y0, x1, y1): - pts = [(x0, y0), (x1, y0), (x1, y1), (x0, y1)] - obj_.subtract_polygon(pts) + # def subtract_rectangle(obj_, x0, y0, x1, y1): + # pts = [(x0, y0), (x1, y0), (x1, y1), (x0, y1)] + # obj_.subtract_polygon(pts) name = self.obj_combo.currentText() @@ -400,77 +401,83 @@ class CutOut(FlatCAMTool): convex_box = self.convex_box.get_value() - # Get min and max data for each object as we just cut rectangles across X or Y - xmin, ymin, xmax, ymax = cutout_obj.bounds() - px = 0.5 * (xmin + xmax) + margin - py = 0.5 * (ymin + ymax) + margin - lenghtx = (xmax - xmin) + (margin * 2) - lenghty = (ymax - ymin) + (margin * 2) - gapsize = gapsize / 2 + (dia / 2) - if isinstance(cutout_obj, FlatCAMGeometry): - # rename the obj name so it can be identified as cutout - cutout_obj.options["name"] += "_cutout" - else: - def geo_init(geo_obj, app_obj): + def geo_init(geo_obj, app_obj): + solid_geo = [] + + if isinstance(cutout_obj, FlatCAMGerber): if convex_box: - geo = cutout_obj.solid_geometry.convex_hull - geo_obj.solid_geometry = geo.buffer(margin + abs(dia / 2)) + object_geo = cutout_obj.solid_geometry.convex_hull else: - geo = cutout_obj.solid_geometry - geo = geo.buffer(margin + abs(dia / 2)) + object_geo = cutout_obj.solid_geometry + else: + object_geo = cutout_obj.solid_geometry - if isinstance(geo, Polygon): - geo_obj.solid_geometry = deepcopy(geo.exterior) - elif isinstance(geo, MultiPolygon): - solid_geo = [] - for poly in geo: - solid_geo.append(poly.exterior) - geo_obj.solid_geometry = deepcopy(solid_geo) + try: + _ = iter(object_geo) + except TypeError: + object_geo = [object_geo] - outname = cutout_obj.options["name"] + "_cutout" - self.app.new_object('geometry', outname, geo_init) + for geo in object_geo: + if isinstance(cutout_obj, FlatCAMGerber): + geo = (geo.buffer(margin + abs(dia / 2))).exterior - cutout_obj = self.app.collection.get_by_name(outname) + # Get min and max data for each object as we just cut rectangles across X or Y + xmin, ymin, xmax, ymax = geo.bounds + px = 0.5 * (xmin + xmax) + margin + py = 0.5 * (ymin + ymax) + margin + lenx = (xmax - xmin) + (margin * 2) + leny = (ymax - ymin) + (margin * 2) - if gaps == '8' or gaps == '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 == '8' or gaps == '2LR': + geo = self.subtract_poly_from_geo(geo, + xmin - gapsize, # botleft_x + py - gapsize + leny / 4, # botleft_y + xmax + gapsize, # topright_x + py + gapsize + leny / 4) # topright_y + geo = self.subtract_poly_from_geo(geo, + xmin - gapsize, + py - gapsize - leny / 4, + xmax + gapsize, + py + gapsize - leny / 4) - if gaps == '8' or gaps == '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 == '8' or gaps == '2TB': + geo = self.subtract_poly_from_geo(geo, + px - gapsize + lenx / 4, + ymin - gapsize, + px + gapsize + lenx / 4, + ymax + gapsize) + geo = self.subtract_poly_from_geo(geo, + px - gapsize - lenx / 4, + ymin - gapsize, + px + gapsize - lenx / 4, + ymax + gapsize) - if gaps == '4' or gaps == 'LR': - subtract_rectangle(cutout_obj, - xmin - gapsize, - py - gapsize, - xmax + gapsize, - py + gapsize) + if gaps == '4' or gaps == 'LR': + geo = self.subtract_poly_from_geo(geo, + xmin - gapsize, + py - gapsize, + xmax + gapsize, + py + gapsize) - if gaps == '4' or gaps == 'TB': - subtract_rectangle(cutout_obj, - px - gapsize, - ymin - gapsize, - px + gapsize, - ymax + gapsize) + if gaps == '4' or gaps == 'TB': + geo = self.subtract_poly_from_geo(geo, + px - gapsize, + ymin - gapsize, + px + gapsize, + ymax + gapsize) + + try: + for g in geo: + solid_geo.append(g) + except TypeError: + solid_geo.append(geo) + + geo_obj.solid_geometry = deepcopy(solid_geo) + + 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.")) @@ -479,9 +486,9 @@ class CutOut(FlatCAMTool): def on_rectangular_cutout(self): - def subtract_rectangle(obj_, x0, y0, x1, y1): - pts = [(x0, y0), (x1, y0), (x1, y1), (x0, y1)] - obj_.subtract_polygon(pts) + # def subtract_rectangle(obj_, x0, y0, x1, y1): + # pts = [(x0, y0), (x1, y0), (x1, y1), (x0, y1)] + # obj_.subtract_polygon(pts) name = self.obj_combo.currentText() @@ -550,75 +557,75 @@ class CutOut(FlatCAMTool): return # Get min and max data for each object as we just cut rectangles across X or Y - if isinstance(cutout_obj.solid_geometry, Polygon): - xmin, ymin, xmax, ymax = cutout_obj.bounds() - geo = box(xmin, ymin, xmax, ymax) - elif isinstance(cutout_obj.solid_geometry, MultiPolygon): - geo = [] - for poly in cutout_obj.solid_geometry: - xmin, ymin, xmax, ymax = poly.bounds - poly_geo = box(xmin, ymin, xmax, ymax) - geo.append(poly_geo) - px = 0.5 * (xmin + xmax) + margin - py = 0.5 * (ymin + ymax) + margin - lenghtx = (xmax - xmin) + (margin * 2) - lenghty = (ymax - ymin) + (margin * 2) gapsize = gapsize / 2 + (dia / 2) def geo_init(geo_obj, app_obj): - if isinstance(geo, list): - solid_geo = [] - for subgeo in geo: - solid_geo.append(subgeo.buffer(margin + abs(dia / 2))) - geo_obj.solid_geometry = deepcopy(solid_geo) - else: - geo_obj.solid_geometry = geo.buffer(margin + abs(dia / 2)) + solid_geo = [] + + for poly in cutout_obj.solid_geometry: + xmin, ymin, xmax, ymax = poly.bounds + geo = box(xmin, ymin, xmax, ymax) + + # if Gerber create a buffer at a distance + # if Geometry then cut through the geometry + if isinstance(cutout_obj, FlatCAMGerber): + geo = geo.buffer(margin + abs(dia / 2)) + + px = 0.5 * (xmin + xmax) + margin + py = 0.5 * (ymin + ymax) + margin + lenx = (xmax - xmin) + (margin * 2) + leny = (ymax - ymin) + (margin * 2) + + if gaps == '8' or gaps == '2LR': + geo = self.subtract_poly_from_geo(geo, + xmin - gapsize, # botleft_x + py - gapsize + leny / 4, # botleft_y + xmax + gapsize, # topright_x + py + gapsize + leny / 4) # topright_y + geo = self.subtract_poly_from_geo(geo, + xmin - gapsize, + py - gapsize - leny / 4, + xmax + gapsize, + py + gapsize - leny / 4) + + if gaps == '8' or gaps == '2TB': + geo = self.subtract_poly_from_geo(geo, + px - gapsize + lenx / 4, + ymin - gapsize, + px + gapsize + lenx / 4, + ymax + gapsize) + geo = self.subtract_poly_from_geo(geo, + px - gapsize - lenx / 4, + ymin - gapsize, + px + gapsize - lenx / 4, + ymax + gapsize) + + if gaps == '4' or gaps == 'LR': + geo = self.subtract_poly_from_geo(geo, + xmin - gapsize, + py - gapsize, + xmax + gapsize, + py + gapsize) + + if gaps == '4' or gaps == 'TB': + geo = self.subtract_poly_from_geo(geo, + px - gapsize, + ymin - gapsize, + px + gapsize, + ymax + gapsize) + try: + for g in geo: + solid_geo.append(g) + except TypeError: + solid_geo.append(geo) + + geo_obj.solid_geometry = deepcopy(solid_geo) outname = cutout_obj.options["name"] + "_cutout" self.app.new_object('geometry', outname, geo_init) - cutout_obj = self.app.collection.get_by_name(outname) - - if gaps == '8' or gaps == '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 == '8' or gaps == '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 == '4' or gaps == 'LR': - subtract_rectangle(cutout_obj, - xmin - gapsize, - py - gapsize, - xmax + gapsize, - py + gapsize) - - if gaps == '4' or gaps == 'TB': - subtract_rectangle(cutout_obj, - px - gapsize, - ymin - gapsize, - px + gapsize, - ymax + gapsize) - - cutout_obj.plot() + # cutout_obj.plot() self.app.inform.emit(_("[success] Any form CutOut operation finished.")) self.app.ui.notebook.setCurrentWidget(self.app.ui.project_tab) self.app.should_we_save = True @@ -847,58 +854,27 @@ class CutOut(FlatCAMTool): self.app.geo_editor.tool_shape.clear(update=True) self.app.geo_editor.tool_shape.enabled = False - def flatten(self, geometry=None, reset=True, pathonly=False): + def subtract_poly_from_geo(self, solid_geo, x0, y0, x1, y1): """ - Creates a list of non-iterable linear geometry objects. - Polygons are expanded into its exterior and interiors if specified. - - Results are placed in self.flat_geometry - - :param geometry: Shapely type or list or list of list of such. - :param reset: Clears the contents of self.flat_geometry. - :param pathonly: Expands polygons into linear elements. - """ - - if geometry is None: - geometry = self.solid_geometry - - if reset: - self.flat_geometry = [] - - # If iterable, expand recursively. - try: - for geo in geometry: - if geo is not None: - self.flatten(geometry=geo, - reset=False, - pathonly=pathonly) - - # Not iterable, do the actual indexing and add. - except TypeError: - if pathonly and type(geometry) == Polygon: - self.flat_geometry.append(geometry.exterior) - self.flatten(geometry=geometry.interiors, - reset=False, - pathonly=True) - else: - self.flat_geometry.append(geometry) - - return self.flat_geometry - - def subtract_poly_from_geo(self, solid_geo, points): - """ - Subtract polygon from the given object. This only operates on the paths in the original geometry, + Subtract polygon made from points from the given object. + This only operates on the paths in the original geometry, i.e. it converts polygons into paths. - :param points: The vertices of the polygon. + :param x0: x coord for lower left vertice of the polygon. + :param y0: y coord for lower left vertice of the polygon. + :param x1: x coord for upper right vertice of the polygon. + :param y1: y coord for upper right vertice of the polygon. + :param solid_geo: Geometry from which to substract. If none, use the solid_geomety property of the object :return: none """ + points = [(x0, y0), (x1, y0), (x1, y1), (x0, y1)] # pathonly should be allways True, otherwise polygons are not subtracted - flat_geometry = self.flatten(geometry=solid_geo, pathonly=True) + flat_geometry = flatten(geometry=solid_geo) log.debug("%d paths" % len(flat_geometry)) + polygon = Polygon(points) toolgeo = cascaded_union(polygon) diffs = [] @@ -908,7 +884,65 @@ class CutOut(FlatCAMTool): else: log.warning("Not implemented.") - return cascaded_union(diffs) + return unary_union(diffs) def reset_fields(self): self.obj_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) + + +def flatten(geometry): + """ + Creates a list of non-iterable linear geometry objects. + Polygons are expanded into its exterior and interiors. + + Results are placed in self.flat_geometry + + :param geometry: Shapely type or list or list of list of such. + """ + flat_geo = [] + try: + for geo in geometry: + if type(geo) == Polygon: + flat_geo.append(geo.exterior) + for subgeo in geo.interiors: + flat_geo.append(subgeo) + else: + flat_geo.append(geo) + except TypeError: + if type(geometry) == Polygon: + flat_geo.append(geometry.exterior) + for subgeo in geometry.interiors: + flat_geo.append(subgeo) + else: + flat_geo.append(geometry) + + return flat_geo + + +def recursive_bounds(geometry): + """ + Returns coordinates of rectangular bounds + of geometry: (xmin, ymin, xmax, ymax). + """ + + # now it can get bounds for nested lists of objects + + def bounds_rec(obj): + try: + minx = Inf + miny = Inf + maxx = -Inf + maxy = -Inf + + for k in obj: + minx_, miny_, maxx_, maxy_ = bounds_rec(k) + minx = min(minx, minx_) + miny = min(miny, miny_) + maxx = max(maxx, maxx_) + maxy = max(maxy, maxy_) + return minx, miny, maxx, maxy + except TypeError: + # it's a Shapely object, return it's bounds + return obj.bounds + + return bounds_rec(geometry) From 7f0a1695ef8bf234d875e461a8467050c0575c1c Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 17 May 2019 20:11:01 +0300 Subject: [PATCH 27/42] - fixed an issue in the remade Cutout Tool where when applied on a single Gerber object, the Freeform Cutout produced no cutout Geometry object --- README.md | 1 + flatcamTools/ToolCutOut.py | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fad0dbe8..17a63774 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ CAD program, and create G-Code for Isolation routing. - remade the Tool Cutout to work on panels - remade the Tool Cutour such that on multiple applications on the same object it will yield the same result +- fixed an issue in the remade Cutout Tool where when applied on a single Gerber object, the Freeform Cutout produced no cutout Geometry object 16.05.2019 diff --git a/flatcamTools/ToolCutOut.py b/flatcamTools/ToolCutOut.py index 571c349d..19f5df24 100644 --- a/flatcamTools/ToolCutOut.py +++ b/flatcamTools/ToolCutOut.py @@ -562,8 +562,15 @@ class CutOut(FlatCAMTool): def geo_init(geo_obj, app_obj): solid_geo = [] + object_geo = cutout_obj.solid_geometry + + try: + _ = iter(object_geo) + except TypeError: + object_geo = [object_geo] + + for poly in object_geo: - for poly in cutout_obj.solid_geometry: xmin, ymin, xmax, ymax = poly.bounds geo = box(xmin, ymin, xmax, ymax) From 630d9c733dff7199d3cb07621ed4da26fe4bd9de Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 18 May 2019 00:17:37 +0300 Subject: [PATCH 28/42] - remade the Properties Tool such that it works with the new Gerber data structure in the obj.apertures. Also changed the view for the Gerber object in Properties - fixed issue with false warning that the Gerber object has no geometry after an empty Gerber was edited and added geometry elements --- FlatCAMApp.py | 21 +++++--------------- README.md | 4 +++- flatcamEditors/FlatCAMGrbEditor.py | 7 ++++++- flatcamTools/ToolProperties.py | 31 ++++++++++++++++++++---------- 4 files changed, 35 insertions(+), 28 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index e5cd1830..0534d0a0 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -95,7 +95,7 @@ class App(QtCore.QObject): # Version version = 8.917 - version_date = "2019/05/16" + version_date = "2019/05/18" beta = True # current date now @@ -2272,30 +2272,18 @@ class App(QtCore.QObject): self.inform.emit(_("[WARNING] Object empty after edit.")) log.debug("App.editor2object() --> Geometry --> %s" % str(e)) elif isinstance(edited_obj, FlatCAMGerber): - new_obj = self.collection.get_active() obj_type = "Gerber" if cleanup is None: self.grb_editor.update_fcgerber(edited_obj) - self.grb_editor.update_options(new_obj) + self.grb_editor.update_options(edited_obj) self.grb_editor.deactivate_grb_editor() # delete the old object (the source object) if it was an empty one - if not edited_obj.solid_geometry: + if len(edited_obj.solid_geometry) == 0: old_name = edited_obj.options['name'] self.collection.set_active(old_name) self.collection.delete_active() - else: - # update the geo object options so it is including the bounding box values - # but don't do this for objects that are made out of empty source objects, it will fail - try: - xmin, ymin, xmax, ymax = new_obj.bounds() - new_obj.options['xmin'] = xmin - new_obj.options['ymin'] = ymin - new_obj.options['xmax'] = xmax - new_obj.options['ymax'] = ymax - except Exception as e: - self.inform.emit(_("[WARNING] Object empty after edit.")) - log.debug("App.editor2object() --> Gerber --> %s" % str(e)) + elif isinstance(edited_obj, FlatCAMExcellon): obj_type = "Excellon" if cleanup is None: @@ -2992,6 +2980,7 @@ class App(QtCore.QObject): grb_obj.multigeo = False grb_obj.follow = False grb_obj.apertures = {} + grb_obj.solid_geometry = [] try: grb_obj.options['xmin'] = 0 diff --git a/README.md b/README.md index 17a63774..d9d55302 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,10 @@ CAD program, and create G-Code for Isolation routing. 17.05.2019 - remade the Tool Cutout to work on panels -- remade the Tool Cutour such that on multiple applications on the same object it will yield the same result +- remade the Tool Cutout such that on multiple applications on the same object it will yield the same result - fixed an issue in the remade Cutout Tool where when applied on a single Gerber object, the Freeform Cutout produced no cutout Geometry object +- remade the Properties Tool such that it works with the new Gerber data structure in the obj.apertures. Also changed the view for the Gerber object in Properties +- fixed issue with false warning that the Gerber object has no geometry after an empty Gerber was edited and added geometry elements 16.05.2019 diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 9d83acf8..9ee7f98d 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -3522,8 +3522,13 @@ class FlatCAMGrbEditor(QtCore.QObject): new_poly = MultiPolygon(poly_buffer) new_poly = new_poly.buffer(0.00000001) new_poly = new_poly.buffer(-0.00000001) - grb_obj.solid_geometry = deepcopy(new_poly) + try: + _ = iter(new_poly) + except TypeError: + new_poly = [new_poly] + + grb_obj.solid_geometry = deepcopy(new_poly) grb_obj.follow_geometry = deepcopy(follow_buffer) for k, v in self.gerber_obj_options.items(): diff --git a/flatcamTools/ToolProperties.py b/flatcamTools/ToolProperties.py index 63f329ae..8eeb59ed 100644 --- a/flatcamTools/ToolProperties.py +++ b/flatcamTools/ToolProperties.py @@ -175,16 +175,27 @@ class Properties(FlatCAMTool): for ap in obj.apertures: temp_ap.clear() temp_ap = deepcopy(obj.apertures[ap]) - if obj.apertures[ap]['solid_geometry']: - elems = len(obj.apertures[ap]['solid_geometry']) - temp_ap['solid_geometry'] = '%s Polygons' % str(elems) - try: - if obj.apertures[ap]['follow_geometry']: - elems = len(obj.apertures[ap]['follow_geometry']) - temp_ap['follow_geometry'] = '%s Polygons' % str(elems) - except KeyError: - pass - self.addChild(apertures, [str(ap), str(temp_ap)], True) + temp_ap.pop('geometry', None) + if obj.apertures[ap]['geometry']: + solid_nr = 0 + follow_nr = 0 + clear_nr = 0 + + for el in obj.apertures[ap]['geometry']: + if 'solid' in el: + solid_nr += 1 + if 'follow' in el: + follow_nr += 1 + if 'clear' in el: + clear_nr += 1 + temp_ap['Solid_Geo'] = '%s Polygons' % str(solid_nr) + temp_ap['Follow_Geo'] = '%s Polygons' % str(follow_nr) + temp_ap['Clear_Geo'] = '%s Polygons' % str(clear_nr) + + apid = self.addParent(apertures, str(ap), expanded=False, color=QtGui.QColor("#000000"), font=font) + for key in temp_ap: + self.addChild(apid, [str(key), str(temp_ap[key])], True) + elif obj.kind.lower() == 'excellon': for tool, value in obj.tools.items(): self.addChild(tools, [str(tool), str(value['C'])], True) From 8ccd73b91946406ec88179bcd0fedf701739e346 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 18 May 2019 17:17:37 +0300 Subject: [PATCH 29/42] - added a new toggle option in Edit -> Preferences -> General Tab -> App Preferences -> "Open" Behavior. It controls which path is used when opening a new file. If checked the last saved path is used when saving files and the last opened path is used when opening files. If unchecked then the path for the last action (either open or save) is used. --- FlatCAMApp.py | 52 +++++++++++++++++------- FlatCAMObj.py | 16 ++++++-- README.md | 4 ++ camlib.py | 2 +- flatcamGUI/FlatCAMGUI.py | 71 ++++++++++++++++++--------------- flatcamTools/ToolSolderPaste.py | 2 + 6 files changed, 96 insertions(+), 51 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 0534d0a0..85340c8a 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -324,6 +324,8 @@ class App(QtCore.QObject): "global_worker_number": self.ui.general_defaults_form.general_app_group.worker_number_sb, "global_tolerance": self.ui.general_defaults_form.general_app_group.tol_entry, + "global_open_style": self.ui.general_defaults_form.general_app_group.open_style_cb, + "global_compression_level": self.ui.general_defaults_form.general_app_group.compress_combo, "global_save_compressed": self.ui.general_defaults_form.general_app_group.save_type_cb, @@ -604,6 +606,7 @@ class App(QtCore.QObject): "global_toggle_tooltips": True, "global_worker_number": 2, "global_tolerance": 0.01, + "global_open_style": True, "global_compression_level": 3, "global_save_compressed": True, @@ -663,7 +666,7 @@ class App(QtCore.QObject): "global_zdownrate": None, # General GUI Settings - "global_hover": True, + "global_hover": False, "global_selection_shape": True, "global_layout": "compact", # Gerber General @@ -2776,7 +2779,8 @@ class App(QtCore.QObject): except: self.inform.emit(_("[ERROR_NOTCL] Failed to write defaults to file.")) return - + if self.defaults["global_open_style"] is False: + self.file_opened.emit("preferences", filename) self.file_saved.emit("preferences", filename) self.inform.emit("[success] Exported Defaults to %s" % filename) @@ -4398,8 +4402,8 @@ class App(QtCore.QObject): return # Just for adding it to the recent files list. - self.file_opened.emit("cncjob", filename) - + if self.defaults["global_open_style"] is False: + self.file_opened.emit("cncjob", filename) self.file_saved.emit("cncjob", filename) self.inform.emit(_("Saved to: %s") % filename) @@ -6070,6 +6074,8 @@ class App(QtCore.QObject): return else: self.export_svg(name, filename) + if self.defaults["global_open_style"] is False: + self.file_opened.emit("SVG", filename) self.file_saved.emit("SVG", filename) def on_file_exportpng(self): @@ -6099,6 +6105,8 @@ class App(QtCore.QObject): return else: write_png(filename, data) + if self.defaults["global_open_style"] is False: + self.file_opened.emit("png", filename) self.file_saved.emit("png", filename) def on_file_savegerber(self): @@ -6138,6 +6146,8 @@ class App(QtCore.QObject): return else: self.save_source_file(name, filename) + if self.defaults["global_open_style"] is False: + self.file_opened.emit("Gerber", filename) self.file_saved.emit("Gerber", filename) def on_file_saveexcellon(self): @@ -6177,6 +6187,8 @@ class App(QtCore.QObject): return else: self.save_source_file(name, filename) + if self.defaults["global_open_style"] is False: + self.file_opened.emit("Excellon", filename) self.file_saved.emit("Excellon", filename) def on_file_exportexcellon(self): @@ -6216,6 +6228,8 @@ class App(QtCore.QObject): return else: self.export_excellon(name, filename) + if self.defaults["global_open_style"] is False: + self.file_opened.emit("Excellon", filename) self.file_saved.emit("Excellon", filename) def on_file_exportgerber(self): @@ -6255,6 +6269,8 @@ class App(QtCore.QObject): return else: self.export_gerber(name, filename) + if self.defaults["global_open_style"] is False: + self.file_opened.emit("Gerber", filename) self.file_saved.emit("Gerber", filename) def on_file_exportdxf(self): @@ -6306,6 +6322,8 @@ class App(QtCore.QObject): return else: self.export_dxf(name, filename) + if self.defaults["global_open_style"] is False: + self.file_opened.emit("DXF", filename) self.file_saved.emit("DXF", filename) def on_file_importsvg(self, type_of_obj): @@ -6560,8 +6578,8 @@ class App(QtCore.QObject): else: self.worker_task.emit({'fcn': self.save_project, 'params': [self.project_filename]}) - - self.file_opened.emit("project", self.project_filename) + if self.defaults["global_open_style"] is False: + self.file_opened.emit("project", self.project_filename) self.file_saved.emit("project", self.project_filename) self.should_we_save = False @@ -6606,8 +6624,8 @@ class App(QtCore.QObject): self.save_project(filename, quit) # self.save_project(filename) - self.file_opened.emit("project", filename) - + if self.defaults["global_open_style"] is False: + self.file_opened.emit("project", filename) self.file_saved.emit("project", filename) if not make_copy: self.project_filename = filename @@ -6665,7 +6683,8 @@ class App(QtCore.QObject): svgcode = parse_xml_string(svg_elem) with open(filename, 'w') as fp: fp.write(svgcode.toprettyxml()) - + if self.defaults["global_open_style"] is False: + self.file_opened.emit("SVG", filename) self.file_saved.emit("SVG", filename) self.inform.emit(_("[success] SVG file exported to %s") % filename) @@ -6770,7 +6789,8 @@ class App(QtCore.QObject): fp.write(doc.toprettyxml()) self.progress.emit(100) - + if self.defaults["global_open_style"] is False: + self.file_opened.emit("SVG", filename) self.file_saved.emit("SVG", filename) self.inform.emit(_("[success] SVG file exported to %s") % filename) @@ -6884,7 +6904,8 @@ class App(QtCore.QObject): with open(filename, 'w') as fp: fp.write(doc.toprettyxml()) self.progress.emit(100) - + if self.defaults["global_open_style"] is False: + self.file_opened.emit("SVG", filename) self.file_saved.emit("SVG", filename) self.inform.emit(_("[success] SVG file exported to %s") % filename) @@ -7034,7 +7055,8 @@ class App(QtCore.QObject): with open(filename, 'w') as fp: fp.write(exported_excellon) - + if self.defaults["global_open_style"] is False: + self.file_opened.emit("Excellon", filename) self.file_saved.emit("Excellon", filename) self.inform.emit(_("[success] Excellon file exported to %s") % filename) except Exception as e: @@ -7150,7 +7172,8 @@ class App(QtCore.QObject): with open(filename, 'w') as fp: fp.write(exported_gerber) - + if self.defaults["global_open_style"] is False: + self.file_opened.emit("Gerber", filename) self.file_saved.emit("Gerber", filename) self.inform.emit(_("[success] Gerber file exported to %s") % filename) except Exception as e: @@ -7208,7 +7231,8 @@ class App(QtCore.QObject): try: dxf_code = obj.export_dxf() dxf_code.saveas(filename) - + if self.defaults["global_open_style"] is False: + self.file_opened.emit("DXF", filename) self.file_saved.emit("DXF", filename) self.inform.emit(_("[success] DXF file exported to %s") % filename) except: diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 1c4c2441..68aad1d7 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -1096,8 +1096,13 @@ class FlatCAMGerber(FlatCAMObj, Gerber): elif type(g) == Point: pass else: - for el in g: - self.add_shape(shape=el, color=color, + try: + for el in g: + self.add_shape(shape=el, color=color, + face_color=random_color() if self.options['multicolored'] + else face_color, visible=self.options['plot']) + except TypeError: + self.add_shape(shape=g, color=color, face_color=random_color() if self.options['multicolored'] else face_color, visible=self.options['plot']) else: @@ -5550,6 +5555,8 @@ class FlatCAMCNCjob(FlatCAMObj, CNCjob): if gc == 'fail': return + if self.app.defaults["global_open_style"] is False: + self.app.file_opened.emit("gcode", filename) self.app.file_saved.emit("gcode", filename) self.app.inform.emit(_("[success] Machine Code file saved to: %s") % filename) @@ -5769,7 +5776,7 @@ class FlatCAMCNCjob(FlatCAMObj, CNCjob): # lines = StringIO(self.gcode) lines = StringIO(g) - ## Write + # Write if filename is not None: try: with open(filename, 'w') as f: @@ -5783,7 +5790,8 @@ class FlatCAMCNCjob(FlatCAMObj, CNCjob): return elif to_file is False: # Just for adding it to the recent files list. - self.app.file_opened.emit("cncjob", filename) + if self.app.defaults["global_open_style"] is False: + self.app.file_opened.emit("cncjob", filename) self.app.file_saved.emit("cncjob", filename) self.app.inform.emit("[success] Saved to: " + filename) diff --git a/README.md b/README.md index d9d55302..2515e7f9 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing. ================================================= +18.05.2019 + +- added a new toggle option in Edit -> Preferences -> General Tab -> App Preferences -> "Open" Behavior. It controls which path is used when opening a new file. If checked the last saved path is used when saving files and the last opened path is used when opening files. If unchecked then the path for the last action (either open or save) is used. + 17.05.2019 - remade the Tool Cutout to work on panels diff --git a/camlib.py b/camlib.py index b76aa630..aa071909 100644 --- a/camlib.py +++ b/camlib.py @@ -5990,7 +5990,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) diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index 62505ab8..1222c2d0 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -3336,12 +3336,12 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): 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.") + "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.") + "as valid workspace.") ) self.workspace_cb = FCCheckBox() self.wk_cb = FCComboBox() @@ -3356,8 +3356,8 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): 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.") + "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() @@ -3743,18 +3743,18 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): # Units for FlatCAM self.unitslabel = QtWidgets.QLabel(_('Units:')) self.unitslabel.setToolTip(_("The default value for FlatCAM units.\n" - "Whatever is selected here is set every time\n" - "FLatCAM is started.")) + "Whatever is selected here is set every time\n" + "FLatCAM is started.")) self.units_radio = RadioSet([{'label': 'IN', 'value': 'IN'}, {'label': 'MM', 'value': 'MM'}]) # Application Level for FlatCAM self.app_level_label = QtWidgets.QLabel(_('APP. LEVEL:')) self.app_level_label.setToolTip(_("Choose the default level of usage for FlatCAM.\n" - "BASIC level -> reduced functionality, best for beginner's.\n" - "ADVANCED level -> full functionality.\n\n" - "The choice here will influence the parameters in\n" - "the Selected Tab for all kinds of FlatCAM objects.")) + "BASIC level -> reduced functionality, best for beginner's.\n" + "ADVANCED level -> full functionality.\n\n" + "The choice here will influence the parameters in\n" + "the Selected Tab for all kinds of FlatCAM objects.")) self.app_level_radio = RadioSet([{'label': 'Basic', 'value': 'b'}, {'label': 'Advanced', 'value': 'a'}]) @@ -3776,24 +3776,24 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): self.shell_startup_label = QtWidgets.QLabel(_('Shell at StartUp:')) self.shell_startup_label.setToolTip( _("Check this box if you want the shell to\n" - "start automatically at startup.") + "start automatically at startup.") ) self.shell_startup_cb = FCCheckBox(label='') self.shell_startup_cb.setToolTip( _("Check this box if you want the shell to\n" - "start automatically at startup.") + "start automatically at startup.") ) # Version Check CB self.version_check_label = QtWidgets.QLabel(_('Version Check:')) self.version_check_label.setToolTip( _("Check this box if you want to check\n" - "for a new version automatically at startup.") + "for a new version automatically at startup.") ) self.version_check_cb = FCCheckBox(label='') self.version_check_cb.setToolTip( _("Check this box if you want to check\n" - "for a new version automatically at startup.") + "for a new version automatically at startup.") ) # Send Stats CB @@ -3805,7 +3805,7 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): 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.") + "stats automatically at startup, to help improve FlatCAM.") ) self.ois_version_check = OptionalInputSection(self.version_check_cb, [self.send_stats_cb]) @@ -3813,8 +3813,8 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): # Select mouse pan button self.panbuttonlabel = QtWidgets.QLabel(_('Pan Button:')) self.panbuttonlabel.setToolTip(_("Select the mouse button to use for panning:\n" - "- MMB --> Middle Mouse Button\n" - "- RMB --> Right Mouse Button")) + "- MMB --> Middle Mouse Button\n" + "- RMB --> Right Mouse Button")) self.pan_button_radio = RadioSet([{'label': 'MMB', 'value': '3'}, {'label': 'RMB', 'value': '2'}]) @@ -3822,44 +3822,44 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): self.mselectlabel = QtWidgets.QLabel(_('Multiple Sel:')) self.mselectlabel.setToolTip(_("Select the key used for multiple selection.")) self.mselect_radio = RadioSet([{'label': 'CTRL', 'value': 'Control'}, - {'label': 'SHIFT', 'value': 'Shift'}]) + {'label': 'SHIFT', 'value': 'Shift'}]) # Project at StartUp CB self.project_startup_label = QtWidgets.QLabel(_('Project at StartUp:')) self.project_startup_label.setToolTip( _("Check this box if you want the project/selected/tool tab area to\n" - "to be shown automatically at startup.") + "to be shown automatically at startup.") ) self.project_startup_cb = FCCheckBox(label='') self.project_startup_cb.setToolTip( _("Check this box if you want the project/selected/tool tab area to\n" - "to be shown automatically at startup.") + "to be shown automatically at startup.") ) # 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.") + "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( _("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.") + "hide automatically when there are no objects loaded and\n" + "to show whenever a new object is created.") ) # 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.") + "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.") + "when hovering with mouse over items throughout the App.") ) self.worker_number_label = QtWidgets.QLabel(_('Workers number:')) self.worker_number_label.setToolTip( @@ -3928,15 +3928,22 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): # to the main layout of this TAB self.layout.addLayout(self.form_box) - # hlay = QtWidgets.QHBoxLayout() - # self.layout.addLayout(hlay) - # hlay.addStretch() + # Save compressed project CB + self.open_style_cb = FCCheckBox(_('"Open" behavior')) + self.open_style_cb.setToolTip( + _("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\n" + "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.") + ) + # self.advanced_cb.setLayoutDirection(QtCore.Qt.RightToLeft) + self.layout.addWidget(self.open_style_cb) # Save compressed project CB self.save_type_cb = FCCheckBox(_('Save Compressed Project')) self.save_type_cb.setToolTip( _("Whether to save a compressed or uncompressed project.\n" - "When checked it will save a compressed FlatCAM project.") + "When checked it will save a compressed FlatCAM project.") ) # self.advanced_cb.setLayoutDirection(QtCore.Qt.RightToLeft) self.layout.addWidget(self.save_type_cb) @@ -3949,8 +3956,8 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): self.compress_label = QtWidgets.QLabel(_('Compression Level:')) self.compress_label.setToolTip( _("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.") + "a FlatCAM project. Higher value means better compression\n" + "but require more RAM usage and more processing time.") ) # self.advanced_cb.setLayoutDirection(QtCore.Qt.RightToLeft) self.compress_combo.addItems([str(i) for i in range(10)]) diff --git a/flatcamTools/ToolSolderPaste.py b/flatcamTools/ToolSolderPaste.py index 4f7a21e7..61600239 100644 --- a/flatcamTools/ToolSolderPaste.py +++ b/flatcamTools/ToolSolderPaste.py @@ -1390,6 +1390,8 @@ class SolderPaste(FlatCAMTool): self.app.inform.emit(_("[WARNING_NOTCL] No such file or directory")) return + if self.app.defaults["global_open_style"] is False: + self.app.file_opened.emit("gcode", filename) self.app.file_saved.emit("gcode", filename) self.app.inform.emit(_("[success] Solder paste dispenser GCode file saved to: %s") % filename) From f779c74d0e03f90fb01a4eab246d790b29e3414e Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 18 May 2019 18:22:02 +0300 Subject: [PATCH 30/42] - fixed App.convert_any2gerber to work with the new Gerber apertures data structure - fixed Tool Sub to work with the new Gerber apertures data structure --- FlatCAMApp.py | 25 ++++--- FlatCAMObj.py | 27 ++++---- README.md | 2 + flatcamTools/ToolProperties.py | 2 +- flatcamTools/ToolSub.py | 118 +++++++++++++++++++++++++-------- 5 files changed, 125 insertions(+), 49 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 85340c8a..8c764115 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -4798,13 +4798,17 @@ class App(QtCore.QObject): def convert_any2gerber(self): self.report_usage("convert_any2gerber()") - def initialize(obj_init, app): + def initialize_geometry(obj_init, app): apertures = {} apid = 0 apertures[str(apid)] = {} - apertures[str(apid)]['solid_geometry'] = [] - apertures[str(apid)]['solid_geometry'] = deepcopy(obj.solid_geometry) + apertures[str(apid)]['geometry'] = [] + for obj_orig in obj.solid_geometry: + new_elem = dict() + new_elem['solid'] = obj_orig + new_elem['follow'] = obj_orig.exterior + apertures[str(apid)]['geometry'].append(deepcopy(new_elem)) apertures[str(apid)]['size'] = 0.0 apertures[str(apid)]['type'] = 'C' @@ -4817,9 +4821,12 @@ class App(QtCore.QObject): apid = 10 for tool in obj.tools: apertures[str(apid)] = {} - apertures[str(apid)]['solid_geometry'] = [] + apertures[str(apid)]['geometry'] = [] for geo in obj.tools[tool]['solid_geometry']: - apertures[str(apid)]['solid_geometry'].append(geo) + new_el = dict() + new_el['solid'] = geo + new_el['follow'] = geo.exterior + apertures[str(apid)]['geometry'].append(deepcopy(new_el)) apertures[str(apid)]['size'] = float(obj.tools[tool]['C']) apertures[str(apid)]['type'] = 'C' @@ -4828,8 +4835,8 @@ class App(QtCore.QObject): # create solid_geometry solid_geometry = [] for apid in apertures: - for geo in apertures[apid]['solid_geometry']: - solid_geometry.append(geo) + for geo_el in apertures[apid]['geometry']: + solid_geometry.append(geo_el['solid']) solid_geometry = MultiPolygon(solid_geometry) solid_geometry = solid_geometry.buffer(0.0000001) @@ -4851,8 +4858,10 @@ class App(QtCore.QObject): try: if isinstance(obj, FlatCAMExcellon): self.new_object("gerber", str(obj_name) + "_conv", initialize_excellon) + elif isinstance(obj, FlatCAMGeometry): + self.new_object("gerber", str(obj_name) + "_conv", initialize_geometry) else: - self.new_object("gerber", str(obj_name) + "_conv", initialize) + log.warning("App.convert_any2gerber --> This is no vaild object for conversion.") except Exception as e: return "Operation failed: %s" % str(e) diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 68aad1d7..38cf1a52 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -17,9 +17,9 @@ import itertools import gettext import FlatCAMTranslation as fcTranslate +import builtins fcTranslate.apply_language('strings') -import builtins if '_' not in builtins.__dict__: _ = gettext.gettext @@ -35,9 +35,9 @@ class ValidationError(Exception): self.errors = errors -######################################## -## FlatCAMObj ## -######################################## +# ####################################### +# # FlatCAMObj ## +# ####################################### class FlatCAMObj(QtCore.QObject): @@ -122,7 +122,8 @@ class FlatCAMObj(QtCore.QObject): try: setattr(self, attr, d[attr]) except KeyError: - log.debug("FlatCAMObj.from_dict() --> KeyError: %s. Means that we are loading an old project that don't" + log.debug("FlatCAMObj.from_dict() --> KeyError: %s. " + "Means that we are loading an old project that don't" "have all attributes in the latest FlatCAM." % str(attr)) pass @@ -203,8 +204,8 @@ class FlatCAMObj(QtCore.QObject): self.app.report_usage("obj_on_offset_button") self.read_form() - vect = self.ui.offsetvector_entry.get_value() - self.offset(vect) + vector_val = self.ui.offsetvector_entry.get_value() + self.offset(vector_val) self.plot() self.app.object_changed.emit(self) @@ -219,9 +220,9 @@ class FlatCAMObj(QtCore.QObject): def on_skew_button_click(self): self.app.report_usage("obj_on_skew_button") self.read_form() - xangle = self.ui.xangle_entry.get_value() - yangle = self.ui.yangle_entry.get_value() - self.skew(xangle, yangle) + x_angle = self.ui.xangle_entry.get_value() + y_angle = self.ui.yangle_entry.get_value() + self.skew(x_angle, y_angle) self.plot() self.app.object_changed.emit(self) @@ -420,7 +421,7 @@ class FlatCAMGerber(FlatCAMObj, Gerber): if option is not 'name': try: grb_final.options[option] = grb.options[option] - except: + except KeyError: log.warning("Failed to copy option.", option) try: @@ -440,10 +441,10 @@ class FlatCAMGerber(FlatCAMObj, Gerber): # and finally made string because the apertures dict keys are strings max_ap = str(max([int(k) for k in grb_final.apertures.keys()]) + 1) grb_final.apertures[max_ap] = {} - grb_final.apertures[max_ap]['solid_geometry'] = [] + grb_final.apertures[max_ap]['geometry'] = [] for k, v in grb.apertures[ap].items(): - grb_final.apertures[max_ap][k] = v + grb_final.apertures[max_ap][k] = deepcopy(v) grb_final.solid_geometry = MultiPolygon(grb_final.solid_geometry) grb_final.follow_geometry = MultiPolygon(grb_final.follow_geometry) diff --git a/README.md b/README.md index 2515e7f9..3cf467bf 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,8 @@ CAD program, and create G-Code for Isolation routing. 18.05.2019 - added a new toggle option in Edit -> Preferences -> General Tab -> App Preferences -> "Open" Behavior. It controls which path is used when opening a new file. If checked the last saved path is used when saving files and the last opened path is used when opening files. If unchecked then the path for the last action (either open or save) is used. +- fixed App.convert_any2gerber to work with the new Gerber apertures data structure +- fixed Tool Sub to work with the new Gerber apertures data structure 17.05.2019 diff --git a/flatcamTools/ToolProperties.py b/flatcamTools/ToolProperties.py index 8eeb59ed..6b2ac1a8 100644 --- a/flatcamTools/ToolProperties.py +++ b/flatcamTools/ToolProperties.py @@ -189,7 +189,7 @@ class Properties(FlatCAMTool): if 'clear' in el: clear_nr += 1 temp_ap['Solid_Geo'] = '%s Polygons' % str(solid_nr) - temp_ap['Follow_Geo'] = '%s Polygons' % str(follow_nr) + temp_ap['Follow_Geo'] = '%s LineStrings' % str(follow_nr) temp_ap['Clear_Geo'] = '%s Polygons' % str(clear_nr) apid = self.addParent(apertures, str(ap), expanded=False, color=QtGui.QColor("#000000"), font=font) diff --git a/flatcamTools/ToolSub.py b/flatcamTools/ToolSub.py index 7f386722..5d8a40a2 100644 --- a/flatcamTools/ToolSub.py +++ b/flatcamTools/ToolSub.py @@ -151,7 +151,10 @@ class ToolSub(FlatCAMTool): self.new_tools = {} self.new_solid_geometry = [] - self.sub_union = None + self.sub_solid_union = None + self.sub_follow_union = None + self.sub_clear_union = None + self.sub_grb_obj = None self.sub_grb_obj_name = None @@ -251,12 +254,25 @@ class ToolSub(FlatCAMTool): self.new_apertures[apid] = {} self.new_apertures[apid]['type'] = 'C' self.new_apertures[apid]['size'] = self.target_grb_obj.apertures[apid]['size'] - self.new_apertures[apid]['solid_geometry'] = [] + self.new_apertures[apid]['geometry'] = [] + + geo_solid_union_list = [] + geo_follow_union_list = [] + geo_clear_union_list = [] - geo_union_list = [] for apid1 in self.sub_grb_obj.apertures: - geo_union_list += self.sub_grb_obj.apertures[apid1]['solid_geometry'] - self.sub_union = cascaded_union(geo_union_list) + if 'geometry' in self.sub_grb_obj.apertures[apid1]: + for elem in self.sub_grb_obj.apertures[apid1]['geometry']: + if 'solid' in elem: + geo_solid_union_list.append(elem['solid']) + if 'follow' in elem: + geo_follow_union_list.append(elem['follow']) + if 'clear' in elem: + geo_clear_union_list.append(elem['clear']) + + self.sub_solid_union = cascaded_union(geo_solid_union_list) + self.sub_follow_union = cascaded_union(geo_follow_union_list) + self.sub_clear_union = cascaded_union(geo_clear_union_list) # add the promises for apid in self.target_grb_obj.apertures: @@ -266,32 +282,78 @@ class ToolSub(FlatCAMTool): self.periodic_check(500, reset=True) for apid in self.target_grb_obj.apertures: - geo = self.target_grb_obj.apertures[apid]['solid_geometry'] + geo = self.target_grb_obj.apertures[apid]['geometry'] self.app.worker_task.emit({'fcn': self.aperture_intersection, 'params': [apid, geo]}) def aperture_intersection(self, apid, geo): - new_solid_geometry = [] + new_geometry = [] + log.debug("Working on promise: %s" % str(apid)) with self.app.proc_container.new(_("Parsing aperture %s geometry ..." % str(apid))): - for geo_silk in geo: - if geo_silk.intersects(self.sub_union): - new_geo = geo_silk.difference(self.sub_union) - new_geo = new_geo.buffer(0) - if new_geo: - if not new_geo.is_empty: - new_solid_geometry.append(new_geo) - else: - new_solid_geometry.append(geo_silk) - else: - new_solid_geometry.append(geo_silk) - else: - new_solid_geometry.append(geo_silk) + for geo_el in geo: + new_el = dict() - if new_solid_geometry: - while not self.new_apertures[apid]['solid_geometry']: - self.new_apertures[apid]['solid_geometry'] = deepcopy(new_solid_geometry) + if 'solid' in geo_el: + work_geo = geo_el['solid'] + if self.sub_solid_union: + if work_geo.intersects(self.sub_solid_union): + new_geo = work_geo.difference(self.sub_solid_union) + new_geo = new_geo.buffer(0) + if new_geo: + if not new_geo.is_empty: + new_el['solid'] = new_geo + else: + new_el['solid'] = work_geo + else: + new_el['solid'] = work_geo + else: + new_el['solid'] = work_geo + else: + new_el['solid'] = work_geo + + if 'follow' in geo_el: + work_geo = geo_el['follow'] + if self.sub_follow_union: + if work_geo.intersects(self.sub_follow_union): + new_geo = work_geo.difference(self.sub_follow_union) + new_geo = new_geo.buffer(0) + if new_geo: + if not new_geo.is_empty: + new_el['follow'] = new_geo + else: + new_el['follow'] = work_geo + else: + new_el['follow'] = work_geo + else: + new_el['follow'] = work_geo + else: + new_el['follow'] = work_geo + + if 'clear' in geo_el: + work_geo = geo_el['clear'] + if self.sub_clear_union: + if work_geo.intersects(self.sub_clear_union): + new_geo = work_geo.difference(self.sub_clear_union) + new_geo = new_geo.buffer(0) + if new_geo: + if not new_geo.is_empty: + new_el['clear'] = new_geo + else: + new_el['clear'] = work_geo + else: + new_el['clear'] = work_geo + else: + new_el['clear'] = work_geo + else: + new_el['clear'] = work_geo + + new_geometry.append(deepcopy(new_el)) + + if new_geometry: + while not self.new_apertures[apid]['geometry']: + self.new_apertures[apid]['geometry'] = deepcopy(new_geometry) time.sleep(0.5) while True: @@ -312,9 +374,11 @@ class ToolSub(FlatCAMTool): grb_obj.apertures = deepcopy(self.new_apertures) poly_buff = [] + follow_buff = [] for ap in self.new_apertures: - for poly in self.new_apertures[ap]['solid_geometry']: - poly_buff.append(poly) + for elem in self.new_apertures[ap]['geometry']: + poly_buff.append(elem['solid']) + follow_buff.append(elem['follow']) work_poly_buff = cascaded_union(poly_buff) try: @@ -327,14 +391,14 @@ class ToolSub(FlatCAMTool): pass grb_obj.solid_geometry = deepcopy(poly_buff) + grb_obj.follow_geometry = deepcopy(follow_buff) with self.app.proc_container.new(_("Generating new object ...")): ret = self.app.new_object('gerber', outname, obj_init, autoselected=False) if ret == 'fail': self.app.inform.emit(_('[ERROR_NOTCL] Generating new object failed.')) return - # Register recent file - self.app.file_opened.emit('gerber', outname) + # GUI feedback self.app.inform.emit(_("[success] Created: %s") % outname) From f71645c96c963bc3a4cb705ebf184ead5dc1e0e0 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sun, 19 May 2019 00:44:52 +0300 Subject: [PATCH 31/42] - fixed Tool PDF to work with the new Gerber apertures data structure --- README.md | 1 + flatcamTools/ToolPDF.py | 432 +++++++++++++++++++++++++++++++++------- 2 files changed, 356 insertions(+), 77 deletions(-) diff --git a/README.md b/README.md index 3cf467bf..312aef94 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ CAD program, and create G-Code for Isolation routing. - added a new toggle option in Edit -> Preferences -> General Tab -> App Preferences -> "Open" Behavior. It controls which path is used when opening a new file. If checked the last saved path is used when saving files and the last opened path is used when opening files. If unchecked then the path for the last action (either open or save) is used. - fixed App.convert_any2gerber to work with the new Gerber apertures data structure - fixed Tool Sub to work with the new Gerber apertures data structure +- fixed Tool PDF to work with the new Gerber apertures data structure 17.05.2019 diff --git a/flatcamTools/ToolPDF.py b/flatcamTools/ToolPDF.py index 55f4fd59..a4cc5b8c 100644 --- a/flatcamTools/ToolPDF.py +++ b/flatcamTools/ToolPDF.py @@ -97,7 +97,7 @@ class ToolPDF(FlatCAMTool): self.save_gs_re = re.compile(r'^q.*?$') # detect restore graphic state from graphic stack - self.restore_gs_re = re.compile(r'^Q.*$') + self.restore_gs_re = re.compile(r'^.*Q.*$') # graphic stack where we save parameters like transformation, line_width self.gs = dict() @@ -219,8 +219,9 @@ class ToolPDF(FlatCAMTool): points = {} def obj_init(exc_obj, app_obj): + clear_geo = [geo_el['clear'] for geo_el in ap_dict['0']['geometry']] - for geo in ap_dict['0']['solid_geometry']: + for geo in clear_geo: xmin, ymin, xmax, ymax = geo.bounds center = (((xmax - xmin) / 2) + xmin, ((ymax - ymin) / 2) + ymin) @@ -280,12 +281,48 @@ class ToolPDF(FlatCAMTool): grb_obj.apertures = ap_dict poly_buff = [] + follow_buf = [] for ap in grb_obj.apertures: for k in grb_obj.apertures[ap]: - if k == 'solid_geometry': - poly_buff += ap_dict[ap][k] - + if k == 'geometry': + for geo_el in ap_dict[ap][k]: + if 'solid' in geo_el: + poly_buff.append(geo_el['solid']) + if 'follow' in geo_el: + follow_buf.append(geo_el['follow']) poly_buff = unary_union(poly_buff) + + if '0' in grb_obj.apertures: + global_clear_geo = [] + if 'geometry' in grb_obj.apertures['0']: + for geo_el in ap_dict['0']['geometry']: + if 'clear' in geo_el: + global_clear_geo.append(geo_el['clear']) + + if global_clear_geo: + solid= [] + for apid in grb_obj.apertures: + if 'geometry' in grb_obj.apertures[apid]: + for elem in grb_obj.apertures[apid]['geometry']: + if 'solid' in elem: + solid_geo = deepcopy(elem['solid']) + for clear_geo in global_clear_geo: + # Make sure that the clear_geo is within the solid_geo otherwise we loose + # the solid_geometry. We want for clear_geometry just to cut into solid_geometry + # not to delete it + if clear_geo.within(solid_geo): + solid_geo = solid_geo.difference(clear_geo) + if solid_geo.is_empty: + solid_geo = elem['solid'] + try: + for poly in solid_geo: + solid.append(poly) + except TypeError: + solid.append(solid_geo) + poly_buff = deepcopy(MultiPolygon(solid)) + + follow_buf = unary_union(follow_buf) + try: poly_buff = poly_buff.buffer(0.0000001) except ValueError: @@ -296,6 +333,7 @@ class ToolPDF(FlatCAMTool): pass grb_obj.solid_geometry = deepcopy(poly_buff) + grb_obj.follow_geometry = deepcopy(follow_buf) with self.app.proc_container.new(_("Rendering PDF layer #%d ...") % int(layer_nr)): @@ -416,7 +454,7 @@ class ToolPDF(FlatCAMTool): clear_apertures_dict['0'] = dict() clear_apertures_dict['0']['size'] = 0.0 clear_apertures_dict['0']['type'] = 'C' - clear_apertures_dict['0']['solid_geometry'] = [] + clear_apertures_dict['0']['geometry'] = [] # on stroke color change we create a new apertures dictionary and store the old one in a storage from where # it will be transformed into Gerber object @@ -430,7 +468,7 @@ class ToolPDF(FlatCAMTool): for pline in lines: line_nr += 1 - # log.debug("line %d: %s" % (line_nr, pline)) + log.debug("line %d: %s" % (line_nr, pline)) # COLOR DETECTION / OBJECT DETECTION match = self.stroke_color_re.search(pline) @@ -518,8 +556,6 @@ class ToolPDF(FlatCAMTool): # detect restore from graphic stack event match = self.restore_gs_re.search(pline) if match: - log.debug( - "ToolPDF.parse_pdf() --> Restore from GS found on line: %s --> %s" % (line_nr, pline)) try: restored_transform = self.gs['transform'].pop(-1) offset_geo = restored_transform[0] @@ -535,6 +571,11 @@ class ToolPDF(FlatCAMTool): log.debug("ToolPDF.parse_pdf() --> Nothing to restore") # nothing to remove pass + + log.debug( + "ToolPDF.parse_pdf() --> Restore from GS found on line: %s --> " + "restored_offset=[%f, %f] ||| restored_scale=[%f, %f]" % + (line_nr, offset_geo[0], offset_geo[1], scale_geo[0], scale_geo[1])) # log.debug("Restored Offset= [%f, %f]" % (offset_geo[0], offset_geo[1])) # log.debug("Restored Scale= [%f, %f]" % (scale_geo[0], scale_geo[1])) @@ -659,7 +700,7 @@ class ToolPDF(FlatCAMTool): subpath['lines'] = [] subpath['bezier'] = [] subpath['rectangle'] = [] - # it measns that we've already added the subpath to path and we need to delete it + # it means that we've already added the subpath to path and we need to delete it # clipping path is usually either rectangle or lines if close_subpath is True: close_subpath = False @@ -711,20 +752,25 @@ class ToolPDF(FlatCAMTool): if match: # scale the size here; some PDF printers apply transformation after the size is declared applied_size = size * scale_geo[0] * self.point_to_unit_factor - path_geo = list() if current_subpath == 'lines': if path['lines']: for subp in path['lines']: geo = copy(subp) - geo = LineString(geo).buffer((float(applied_size) / 2), resolution=self.step_per_circles) - path_geo.append(geo) + try: + geo = LineString(geo).buffer((float(applied_size) / 2), resolution=self.step_per_circles) + path_geo.append(geo) + except ValueError: + pass # the path was painted therefore initialize it path['lines'] = [] else: geo = copy(subpath['lines']) - geo = LineString(geo).buffer((float(applied_size) / 2), resolution=self.step_per_circles) - path_geo.append(geo) + try: + geo = LineString(geo).buffer((float(applied_size) / 2), resolution=self.step_per_circles) + path_geo.append(geo) + except ValueError: + pass subpath['lines'] = [] if current_subpath == 'bezier': @@ -733,30 +779,44 @@ class ToolPDF(FlatCAMTool): geo = [] for b in subp: geo += self.bezier_to_points(start=b[0], c1=b[1], c2=b[2], stop=b[3]) - geo = LineString(geo).buffer((float(applied_size) / 2), resolution=self.step_per_circles) - path_geo.append(geo) + try: + geo = LineString(geo).buffer((float(applied_size) / 2), + resolution=self.step_per_circles) + path_geo.append(geo) + except ValueError: + pass # the path was painted therefore initialize it path['bezier'] = [] else: geo = [] for b in subpath['bezier']: geo += self.bezier_to_points(start=b[0], c1=b[1], c2=b[2], stop=b[3]) - geo = LineString(geo).buffer((float(applied_size) / 2), resolution=self.step_per_circles) - path_geo.append(geo) + try: + geo = LineString(geo).buffer((float(applied_size) / 2), resolution=self.step_per_circles) + path_geo.append(geo) + except ValueError: + pass subpath['bezier'] = [] if current_subpath == 'rectangle': if path['rectangle']: for subp in path['rectangle']: geo = copy(subp) - geo = LineString(geo).buffer((float(applied_size) / 2), resolution=self.step_per_circles) - path_geo.append(geo) + try: + geo = LineString(geo).buffer((float(applied_size) / 2), + resolution=self.step_per_circles) + path_geo.append(geo) + except ValueError: + pass # the path was painted therefore initialize it path['rectangle'] = [] else: geo = copy(subpath['rectangle']) - geo = LineString(geo).buffer((float(applied_size) / 2), resolution=self.step_per_circles) - path_geo.append(geo) + try: + geo = LineString(geo).buffer((float(applied_size) / 2), resolution=self.step_per_circles) + path_geo.append(geo) + except ValueError: + pass subpath['rectangle'] = [] # store the found geometry @@ -769,7 +829,18 @@ class ToolPDF(FlatCAMTool): break if found_aperture: - apertures_dict[copy(found_aperture)]['solid_geometry'] += path_geo + for pdf_geo in path_geo: + if isinstance(pdf_geo, MultiPolygon): + for poly in pdf_geo: + new_el = dict() + new_el['solid'] = poly + new_el['follow'] = poly.exterior + apertures_dict[copy(found_aperture)]['geometry'].append(deepcopy(new_el)) + else: + new_el = dict() + new_el['solid'] = pdf_geo + new_el['follow'] = pdf_geo.exterior + apertures_dict[copy(found_aperture)]['geometry'].append(deepcopy(new_el)) found_aperture = None else: if str(aperture) in apertures_dict.keys(): @@ -777,14 +848,36 @@ class ToolPDF(FlatCAMTool): apertures_dict[str(aperture)] = {} apertures_dict[str(aperture)]['size'] = round(applied_size, 5) apertures_dict[str(aperture)]['type'] = 'C' - apertures_dict[str(aperture)]['solid_geometry'] = [] - apertures_dict[str(aperture)]['solid_geometry'] += path_geo + apertures_dict[str(aperture)]['geometry'] = [] + for pdf_geo in path_geo: + if isinstance(pdf_geo, MultiPolygon): + for poly in pdf_geo: + new_el = dict() + new_el['solid'] = poly + new_el['follow'] = poly.exterior + apertures_dict[str(aperture)]['geometry'].append(deepcopy(new_el)) + else: + new_el = dict() + new_el['solid'] = pdf_geo + new_el['follow'] = pdf_geo.exterior + apertures_dict[str(aperture)]['geometry'].append(deepcopy(new_el)) else: apertures_dict[str(aperture)] = {} apertures_dict[str(aperture)]['size'] = round(applied_size, 5) apertures_dict[str(aperture)]['type'] = 'C' - apertures_dict[str(aperture)]['solid_geometry'] = [] - apertures_dict[str(aperture)]['solid_geometry'] += path_geo + apertures_dict[str(aperture)]['geometry'] = [] + for pdf_geo in path_geo: + if isinstance(pdf_geo, MultiPolygon): + for poly in pdf_geo: + new_el = dict() + new_el['solid'] = poly + new_el['follow'] = poly.exterior + apertures_dict[str(aperture)]['geometry'].append(deepcopy(new_el)) + else: + new_el = dict() + new_el['solid'] = pdf_geo + new_el['follow'] = pdf_geo.exterior + apertures_dict[str(aperture)]['geometry'].append(deepcopy(new_el)) continue @@ -802,8 +895,11 @@ class ToolPDF(FlatCAMTool): # close the subpath if it was not closed already if close_subpath is False: geo.append(geo[0]) - geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) - path_geo.append(geo_el) + try: + geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) + path_geo.append(geo_el) + except ValueError: + pass # the path was painted therefore initialize it path['lines'] = [] else: @@ -811,8 +907,11 @@ class ToolPDF(FlatCAMTool): # close the subpath if it was not closed already if close_subpath is False: geo.append(start_point) - geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) - path_geo.append(geo_el) + try: + geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) + path_geo.append(geo_el) + except ValueError: + pass subpath['lines'] = [] if current_subpath == 'bezier': @@ -824,8 +923,11 @@ class ToolPDF(FlatCAMTool): # close the subpath if it was not closed already if close_subpath is False: geo.append(geo[0]) - geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) - path_geo.append(geo_el) + try: + geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) + path_geo.append(geo_el) + except ValueError: + pass # the path was painted therefore initialize it path['bezier'] = [] else: @@ -833,8 +935,11 @@ class ToolPDF(FlatCAMTool): geo += self.bezier_to_points(start=b[0], c1=b[1], c2=b[2], stop=b[3]) if close_subpath is False: geo.append(start_point) - geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) - path_geo.append(geo_el) + try: + geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) + path_geo.append(geo_el) + except ValueError: + pass subpath['bezier'] = [] if current_subpath == 'rectangle': @@ -844,8 +949,11 @@ class ToolPDF(FlatCAMTool): # # close the subpath if it was not closed already # if close_subpath is False and start_point is not None: # geo.append(start_point) - geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) - path_geo.append(geo_el) + try: + geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) + path_geo.append(geo_el) + except ValueError: + pass # the path was painted therefore initialize it path['rectangle'] = [] else: @@ -853,32 +961,96 @@ class ToolPDF(FlatCAMTool): # # close the subpath if it was not closed already # if close_subpath is False and start_point is not None: # geo.append(start_point) - geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) - path_geo.append(geo_el) + try: + geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) + path_geo.append(geo_el) + except ValueError: + pass subpath['rectangle'] = [] # we finished painting and also closed the path if it was the case close_subpath = True - # if there was a fill color change we look for circular geometries from which we can make drill holes - # for the Excellon file + # in case that a color change to white (transparent) occurred if flag_clear_geo is True: - # we llok for circular geometries + # if there was a fill color change we look for circular geometries from which we can make + # drill holes for the Excellon file if current_subpath == 'bezier': # if there are geometries in the list if path_geo: - clear_apertures_dict['0']['solid_geometry'] += path_geo - else: - # else, add the geometry as usual + try: + for g in path_geo: + new_el = dict() + new_el['clear'] = g + clear_apertures_dict['0']['geometry'].append(new_el) + except TypeError: + new_el = dict() + new_el['clear'] = path_geo + clear_apertures_dict['0']['geometry'].append(new_el) + + # now that we finished searching for drill holes (this is not very precise because holes in the + # polygon pours may appear as drill too, but .. hey you can't have it all ...) we add + # clear_geometry try: - apertures_dict['0']['solid_geometry'] += path_geo + for pdf_geo in path_geo: + if isinstance(pdf_geo, MultiPolygon): + for poly in pdf_geo: + new_el = dict() + new_el['clear'] = poly + apertures_dict['0']['geometry'].append(deepcopy(new_el)) + else: + new_el = dict() + new_el['clear'] = pdf_geo + apertures_dict['0']['geometry'].append(deepcopy(new_el)) except KeyError: # in case there is no stroke width yet therefore no aperture apertures_dict['0'] = {} apertures_dict['0']['size'] = applied_size apertures_dict['0']['type'] = 'C' - apertures_dict['0']['solid_geometry'] = [] - apertures_dict['0']['solid_geometry'] += path_geo + apertures_dict['0']['geometry'] = [] + for pdf_geo in path_geo: + if isinstance(pdf_geo, MultiPolygon): + for poly in pdf_geo: + new_el = dict() + new_el['clear'] = poly + apertures_dict['0']['geometry'].append(deepcopy(new_el)) + else: + new_el = dict() + new_el['clear'] = pdf_geo + apertures_dict['0']['geometry'].append(deepcopy(new_el)) + else: + # else, add the geometry as usual + try: + for pdf_geo in path_geo: + if isinstance(pdf_geo, MultiPolygon): + for poly in pdf_geo: + new_el = dict() + new_el['solid'] = poly + new_el['follow'] = poly.exterior + apertures_dict['0']['geometry'].append(deepcopy(new_el)) + else: + new_el = dict() + new_el['solid'] = pdf_geo + new_el['follow'] = pdf_geo.exterior + apertures_dict['0']['geometry'].append(deepcopy(new_el)) + except KeyError: + # in case there is no stroke width yet therefore no aperture + apertures_dict['0'] = {} + apertures_dict['0']['size'] = applied_size + apertures_dict['0']['type'] = 'C' + apertures_dict['0']['geometry'] = [] + for pdf_geo in path_geo: + if isinstance(pdf_geo, MultiPolygon): + for poly in pdf_geo: + new_el = dict() + new_el['solid'] = poly + new_el['follow'] = poly.exterior + apertures_dict['0']['geometry'].append(deepcopy(new_el)) + else: + new_el = dict() + new_el['solid'] = pdf_geo + new_el['follow'] = pdf_geo.exterior + apertures_dict['0']['geometry'].append(deepcopy(new_el)) continue # Fill and Stroke the path @@ -897,8 +1069,11 @@ class ToolPDF(FlatCAMTool): # close the subpath if it was not closed already if close_subpath is False: geo.append(geo[0]) - geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) - fill_geo.append(geo_el) + try: + geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) + fill_geo.append(geo_el) + except ValueError: + pass # stroke for subp in path['lines']: geo = copy(subp) @@ -912,8 +1087,11 @@ class ToolPDF(FlatCAMTool): # close the subpath if it was not closed already if close_subpath is False: geo.append(start_point) - geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) - fill_geo.append(geo_el) + try: + geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) + fill_geo.append(geo_el) + except ValueError: + pass # stroke geo = copy(subpath['lines']) geo = LineString(geo).buffer((float(applied_size) / 2), resolution=self.step_per_circles) @@ -931,8 +1109,11 @@ class ToolPDF(FlatCAMTool): # close the subpath if it was not closed already if close_subpath is False: geo.append(geo[0]) - geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) - fill_geo.append(geo_el) + try: + geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) + fill_geo.append(geo_el) + except ValueError: + pass # stroke for subp in path['bezier']: geo = [] @@ -948,8 +1129,11 @@ class ToolPDF(FlatCAMTool): geo += self.bezier_to_points(start=b[0], c1=b[1], c2=b[2], stop=b[3]) if close_subpath is False: geo.append(start_point) - geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) - fill_geo.append(geo_el) + try: + geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) + fill_geo.append(geo_el) + except ValueError: + pass # stroke geo = [] for b in subpath['bezier']: @@ -966,8 +1150,11 @@ class ToolPDF(FlatCAMTool): # # close the subpath if it was not closed already # if close_subpath is False: # geo.append(geo[0]) - geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) - fill_geo.append(geo_el) + try: + geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) + fill_geo.append(geo_el) + except ValueError: + pass # stroke for subp in path['rectangle']: geo = copy(subp) @@ -981,8 +1168,11 @@ class ToolPDF(FlatCAMTool): # # close the subpath if it was not closed already # if close_subpath is False: # geo.append(start_point) - geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) - fill_geo.append(geo_el) + try: + geo_el = Polygon(geo).buffer(0.0000001, resolution=self.step_per_circles) + fill_geo.append(geo_el) + except ValueError: + pass # stroke geo = copy(subpath['rectangle']) geo = LineString(geo).buffer((float(applied_size) / 2), resolution=self.step_per_circles) @@ -1002,7 +1192,18 @@ class ToolPDF(FlatCAMTool): break if found_aperture: - apertures_dict[copy(found_aperture)]['solid_geometry'] += path_geo + for pdf_geo in path_geo: + if isinstance(pdf_geo, MultiPolygon): + for poly in pdf_geo: + new_el = dict() + new_el['solid'] = poly + new_el['follow'] = poly.exterior + apertures_dict[copy(found_aperture)]['geometry'].append(deepcopy(new_el)) + else: + new_el = dict() + new_el['solid'] = pdf_geo + new_el['follow'] = pdf_geo.exterior + apertures_dict[copy(found_aperture)]['geometry'].append(deepcopy(new_el)) found_aperture = None else: if str(aperture) in apertures_dict.keys(): @@ -1010,25 +1211,102 @@ class ToolPDF(FlatCAMTool): apertures_dict[str(aperture)] = {} apertures_dict[str(aperture)]['size'] = round(applied_size, 5) apertures_dict[str(aperture)]['type'] = 'C' - apertures_dict[str(aperture)]['solid_geometry'] = [] - apertures_dict[str(aperture)]['solid_geometry'] += path_geo + apertures_dict[str(aperture)]['geometry'] = [] + for pdf_geo in path_geo: + if isinstance(pdf_geo, MultiPolygon): + for poly in pdf_geo: + new_el = dict() + new_el['solid'] = poly + new_el['follow'] = poly.exterior + apertures_dict[str(aperture)]['geometry'].append(deepcopy(new_el)) + else: + new_el = dict() + new_el['solid'] = pdf_geo + new_el['follow'] = pdf_geo.exterior + apertures_dict[str(aperture)]['geometry'].append(deepcopy(new_el)) else: apertures_dict[str(aperture)] = {} apertures_dict[str(aperture)]['size'] = round(applied_size, 5) apertures_dict[str(aperture)]['type'] = 'C' - apertures_dict[str(aperture)]['solid_geometry'] = [] - apertures_dict[str(aperture)]['solid_geometry'] += path_geo + apertures_dict[str(aperture)]['geometry'] = [] + for pdf_geo in path_geo: + if isinstance(pdf_geo, MultiPolygon): + for poly in pdf_geo: + new_el = dict() + new_el['solid'] = poly + new_el['follow'] = poly.exterior + apertures_dict[str(aperture)]['geometry'].append(deepcopy(new_el)) + else: + new_el = dict() + new_el['solid'] = pdf_geo + new_el['follow'] = pdf_geo.exterior + apertures_dict[str(aperture)]['geometry'].append(deepcopy(new_el)) - # store the found geometry for filling the path - try: - apertures_dict['0']['solid_geometry'] += fill_geo - except KeyError: - # in case there is no stroke width yet therefore no aperture - apertures_dict['0'] = {} - apertures_dict['0']['size'] = round(applied_size, 5) - apertures_dict['0']['type'] = 'C' - apertures_dict['0']['solid_geometry'] = [] - apertures_dict['0']['solid_geometry'] += fill_geo + # ############################################### + # store the found geometry for filling the path # + # ############################################### + + # in case that a color change to white (transparent) occurred + if flag_clear_geo is True: + try: + for pdf_geo in path_geo: + if isinstance(pdf_geo, MultiPolygon): + for poly in fill_geo: + new_el = dict() + new_el['clear'] = poly + apertures_dict['0']['geometry'].append(deepcopy(new_el)) + else: + new_el = dict() + new_el['clear'] = pdf_geo + apertures_dict['0']['geometry'].append(deepcopy(new_el)) + except KeyError: + # in case there is no stroke width yet therefore no aperture + apertures_dict['0'] = {} + apertures_dict['0']['size'] = round(applied_size, 5) + apertures_dict['0']['type'] = 'C' + apertures_dict['0']['geometry'] = [] + for pdf_geo in fill_geo: + if isinstance(pdf_geo, MultiPolygon): + for poly in pdf_geo: + new_el = dict() + new_el['clear'] = poly + apertures_dict['0']['geometry'].append(deepcopy(new_el)) + else: + new_el = dict() + new_el['clear'] = pdf_geo + apertures_dict['0']['geometry'].append(deepcopy(new_el)) + else: + try: + for pdf_geo in path_geo: + if isinstance(pdf_geo, MultiPolygon): + for poly in fill_geo: + new_el = dict() + new_el['solid'] = poly + new_el['follow'] = poly.exterior + apertures_dict['0']['geometry'].append(deepcopy(new_el)) + else: + new_el = dict() + new_el['solid'] = pdf_geo + new_el['follow'] = pdf_geo.exterior + apertures_dict['0']['geometry'].append(deepcopy(new_el)) + except KeyError: + # in case there is no stroke width yet therefore no aperture + apertures_dict['0'] = {} + apertures_dict['0']['size'] = round(applied_size, 5) + apertures_dict['0']['type'] = 'C' + apertures_dict['0']['geometry'] = [] + for pdf_geo in fill_geo: + if isinstance(pdf_geo, MultiPolygon): + for poly in pdf_geo: + new_el = dict() + new_el['solid'] = poly + new_el['follow'] = poly.exterior + apertures_dict['0']['geometry'].append(deepcopy(new_el)) + else: + new_el = dict() + new_el['solid'] = pdf_geo + new_el['follow'] = pdf_geo.exterior + apertures_dict['0']['geometry'].append(deepcopy(new_el)) continue @@ -1036,7 +1314,7 @@ class ToolPDF(FlatCAMTool): if apertures_dict: object_dict[layer_nr] = deepcopy(apertures_dict) - if clear_apertures_dict['0']['solid_geometry']: + if clear_apertures_dict['0']['geometry']: object_dict[0] = deepcopy(clear_apertures_dict) # delete keys (layers) with empty values From a545658d44e29d40bf391359287b535fbf033c36 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sun, 19 May 2019 17:15:24 +0300 Subject: [PATCH 32/42] - fixed the Circle Steps parameter for both Gerber and Geometry objects not being applied and instead the app internal defaults were used. - fixed the Tcl command Geocutout issue that gave an error when using the 4 or 8 value for gaps parameter --- FlatCAMApp.py | 4 +- README.md | 4 ++ camlib.py | 36 +++++++-------- tclCommands/TclCommandGeoCutout.py | 74 ++++++++++++++---------------- 4 files changed, 57 insertions(+), 61 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 8c764115..9bc1b497 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -684,7 +684,7 @@ class App(QtCore.QObject): "gerber_noncopperrounded": False, "gerber_bboxmargin": 0.1, "gerber_bboxrounded": False, - "gerber_circle_steps": 64, + "gerber_circle_steps": 128, "gerber_use_buffer_for_union": True, # Gerber Advanced Options @@ -746,7 +746,7 @@ class App(QtCore.QObject): # Geometry General "geometry_plot": True, - "geometry_circle_steps": 64, + "geometry_circle_steps": 128, "geometry_cnctooldia": 0.016, # Geometry Options diff --git a/README.md b/README.md index 312aef94..97181658 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,10 @@ Among other things, it can take a Gerber file generated by your favorite PCB CAD program, and create G-Code for Isolation routing. ================================================= +19.05.2019 + +- fixed the Circle Steps parameter for both Gerber and Geometry objects not being applied and instead the app internal defaults were used. +- fixed the Tcl command Geocutout issue that gave an error when using the 4 or 8 value for gaps parameter 18.05.2019 diff --git a/camlib.py b/camlib.py index aa071909..a0ee2667 100644 --- a/camlib.py +++ b/camlib.py @@ -86,7 +86,7 @@ class Geometry(object): defaults = { "units": 'in', - "geo_steps_per_circle": 64 + "geo_steps_per_circle": 128 } def __init__(self, geo_steps_per_circle=None): @@ -1884,10 +1884,10 @@ class Gerber (Geometry): """ - defaults = { - "steps_per_circle": 56, - "use_buffer_for_union": True - } + # defaults = { + # "steps_per_circle": 128, + # "use_buffer_for_union": True + # } def __init__(self, steps_per_circle=None): """ @@ -1899,12 +1899,12 @@ class Gerber (Geometry): """ # How to discretize a circle. - if steps_per_circle is None: - steps_per_circle = int(Gerber.defaults['steps_per_circle']) - self.steps_per_circle = int(steps_per_circle) + # if steps_per_circle is None: + # steps_per_circle = int(Gerber.defaults['steps_per_circle']) + self.steps_per_circle = int(self.app.defaults["gerber_circle_steps"]) # Initialize parent - Geometry.__init__(self, geo_steps_per_circle=int(steps_per_circle)) + Geometry.__init__(self, geo_steps_per_circle=int(self.app.defaults["gerber_circle_steps"])) # Number format self.int_digits = 3 @@ -2043,7 +2043,7 @@ class Gerber (Geometry): self.am1_re = re.compile(r'^%AM([^\*]+)\*([^%]+)?(%)?$') self.am2_re = re.compile(r'(.*)%$') - self.use_buffer_for_union = self.defaults["use_buffer_for_union"] + self.use_buffer_for_union = self.app.defaults["gerber_use_buffer_for_union"] def aperture_parse(self, apertureId, apertureType, apParameters): """ @@ -2455,9 +2455,9 @@ class Gerber (Geometry): log.debug("Bare op-code %d." % current_operation_code) geo_dict = dict() - flash = Gerber.create_flash_geometry( + flash = self.create_flash_geometry( Point(current_x, current_y), self.apertures[current_aperture], - int(self.steps_per_circle)) + self.steps_per_circle) geo_dict['follow'] = Point([current_x, current_y]) @@ -2870,10 +2870,10 @@ class Gerber (Geometry): geo_dict['follow'] = geo_flash # this treats the case when we are storing geometry as solids - flash = Gerber.create_flash_geometry( + flash = self.create_flash_geometry( Point( [linear_x, linear_y]), self.apertures[current_aperture], - int(self.steps_per_circle) + self.steps_per_circle ) if not flash.is_empty: poly_buffer.append(flash) @@ -3011,7 +3011,7 @@ class Gerber (Geometry): this_arc = arc(center, radius, start, stop, arcdir[current_interpolation_mode], - int(self.steps_per_circle)) + self.steps_per_circle) # The last point in the computed arc can have # numerical errors. The exact final point is the @@ -3065,7 +3065,7 @@ class Gerber (Geometry): log.debug("########## ACCEPTING ARC ############") this_arc = arc(center, radius, start, stop, arcdir[current_interpolation_mode], - int(self.steps_per_circle)) + self.steps_per_circle) # Replace with exact values this_arc[-1] = (circular_x, circular_y) @@ -3132,7 +3132,6 @@ class Gerber (Geometry): conversion_factor = 25.4 if file_units == 'IN' else (1/25.4) if file_units != app_units else 1 - # --- Apply buffer --- # this treats the case when we are storing geometry as paths self.follow_geometry = follow_buffer @@ -3175,9 +3174,6 @@ class Gerber (Geometry): # log.debug('Flashing @%s, Aperture: %s' % (location, aperture)) - if steps_per_circle is None: - steps_per_circle = 64 - if type(location) == list: location = Point(location) diff --git a/tclCommands/TclCommandGeoCutout.py b/tclCommands/TclCommandGeoCutout.py index 9d70b367..bf370086 100644 --- a/tclCommands/TclCommandGeoCutout.py +++ b/tclCommands/TclCommandGeoCutout.py @@ -2,6 +2,7 @@ from ObjectCollection import * from tclCommands.TclCommand import TclCommandSignaled from copy import deepcopy + class TclCommandGeoCutout(TclCommandSignaled): """ Tcl shell command to create a board cutout geometry. Allow cutout for any shape. Cuts holding gaps from geometry. @@ -65,7 +66,6 @@ class TclCommandGeoCutout(TclCommandSignaled): :return: """ - def subtract_rectangle(obj_, x0, y0, x1, y1): pts = [(x0, y0), (x1, y0), (x1, y1), (x0, y1)] obj_.subtract_polygon(pts) @@ -73,7 +73,6 @@ class TclCommandGeoCutout(TclCommandSignaled): def substract_rectangle_geo(geo, x0, y0, x1, y1): pts = [(x0, y0), (x1, y0), (x1, y1), (x0, y1)] - def flatten(geometry=None, reset=True, pathonly=False): """ Creates a list of non-iterable linear geometry objects. @@ -89,15 +88,15 @@ class TclCommandGeoCutout(TclCommandSignaled): if reset: self.flat_geometry = [] - ## If iterable, expand recursively. + # If iterable, expand recursively. try: - for geo in geometry: - if geo is not None: - flatten(geometry=geo, + for geo_el in geometry: + if geo_el is not None: + flatten(geometry=geo_el, 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) @@ -151,14 +150,15 @@ class TclCommandGeoCutout(TclCommandSignaled): # Get source object. try: cutout_obj = self.app.collection.get_by_name(str(name)) - except: + except Exception as e: + log.debug("TclCommandGeoCutout --> %s" % str(e)) return "Could not retrieve object: %s" % name if 0 in {dia}: self.app.inform.emit("[WARNING]Tool Diameter is zero value. Change it to a positive real number.") return "Tool Diameter is zero value. Change it to a positive real number." - if gaps not in ['lr', 'tb', '2lr', '2tb', 4, 8]: + if gaps not in ['lr', 'tb', '2lr', '2tb', '4', '8']: self.app.inform.emit("[WARNING]Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 or 8. " "Fill in a correct value and retry. ") return @@ -226,47 +226,47 @@ class TclCommandGeoCutout(TclCommandSignaled): def geo_init(geo_obj, app_obj): try: geo = cutout_obj.isolation_geometry((dia / 2), iso_type=0, corner=2, follow=None) - except Exception as e: - log.debug("TclCommandGeoCutout.execute() --> %s" % str(e)) + except Exception as exc: + log.debug("TclCommandGeoCutout.execute() --> %s" % str(exc)) return 'fail' 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 + 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) + xmin - gapsize, + py - gapsize - lenghty / 4, + xmax + gapsize, + py + gapsize - lenghty / 4) 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) + 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) + px - gapsize - lenghtx / 4, + ymin - gapsize, + px + gapsize - lenghtx / 4, + ymax + gapsize) if gaps_u == 4 or gaps_u == 'lr': geo = substract_rectangle_geo(geo, - xmin - gapsize, - py - gapsize, - xmax + gapsize, - py + gapsize) + 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) + px - gapsize, + ymin - gapsize, + px + gapsize, + ymax + gapsize) geo_obj.solid_geometry = geo outname = cutout_obj.options["name"] + "_cutout" @@ -276,7 +276,3 @@ class TclCommandGeoCutout(TclCommandSignaled): else: self.app.inform.emit("[ERROR]Cancelled. Object type is not supported.") return - - - - From 17e1f87a1c24d0eddb8a8ee8ea1da5afae15a224 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sun, 19 May 2019 23:03:08 +0300 Subject: [PATCH 33/42] - made wider the '#' column for Apertures Table for Gerber Object and for Gerber Editor; in this way numbers with 3 digits can be seen --- FlatCAMObj.py | 2 +- README.md | 1 + flatcamEditors/FlatCAMGrbEditor.py | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 38cf1a52..7607a6eb 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -686,7 +686,7 @@ class FlatCAMGerber(FlatCAMObj, Gerber): horizontal_header.setMinimumSectionSize(10) horizontal_header.setDefaultSectionSize(70) horizontal_header.setSectionResizeMode(0, QtWidgets.QHeaderView.Fixed) - horizontal_header.resizeSection(0, 20) + horizontal_header.resizeSection(0, 27) horizontal_header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents) horizontal_header.setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents) horizontal_header.setSectionResizeMode(3, QtWidgets.QHeaderView.ResizeToContents) diff --git a/README.md b/README.md index 97181658..27ab8ab8 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ CAD program, and create G-Code for Isolation routing. - fixed the Circle Steps parameter for both Gerber and Geometry objects not being applied and instead the app internal defaults were used. - fixed the Tcl command Geocutout issue that gave an error when using the 4 or 8 value for gaps parameter +- made wider the '#' column for Apertures Table for Gerber Object and for Gerber Editor; in this way numbers with 3 digits can be seen 18.05.2019 diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 9ee7f98d..af96b411 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -2776,7 +2776,7 @@ class FlatCAMGrbEditor(QtCore.QObject): horizontal_header.setMinimumSectionSize(10) horizontal_header.setDefaultSectionSize(70) horizontal_header.setSectionResizeMode(0, QtWidgets.QHeaderView.Fixed) - horizontal_header.resizeSection(0, 20) + horizontal_header.resizeSection(0, 27) horizontal_header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents) horizontal_header.setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents) horizontal_header.setSectionResizeMode(3, QtWidgets.QHeaderView.ResizeToContents) From 94e7820dde6b1565c300078cd2698839b11aa499 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Mon, 20 May 2019 01:18:08 +0300 Subject: [PATCH 34/42] - PEP8 corrections in FlatCAMGrbEditor.py - added a selection limit parameter for Geometry Editor - added entries in Edit -> Preferences for the new parameter Selection limit for both the Gerber and Geometry Editors. --- FlatCAMApp.py | 18 +- README.md | 4 + flatcamEditors/FlatCAMGeoEditor.py | 90 ++++-- flatcamEditors/FlatCAMGrbEditor.py | 502 +++++++++++++++++------------ flatcamGUI/FlatCAMGUI.py | 115 +++++-- 5 files changed, 468 insertions(+), 261 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 9bc1b497..5e7c1994 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -371,8 +371,8 @@ class App(QtCore.QObject): # Gerber Advanced Options "gerber_aperture_display": self.ui.gerber_defaults_form.gerber_adv_opt_group.aperture_table_visibility_cb, - "gerber_aperture_scale_factor": self.ui.gerber_defaults_form.gerber_adv_opt_group.scale_aperture_entry, - "gerber_aperture_buffer_factor": self.ui.gerber_defaults_form.gerber_adv_opt_group.buffer_aperture_entry, + # "gerber_aperture_scale_factor": self.ui.gerber_defaults_form.gerber_adv_opt_group.scale_aperture_entry, + # "gerber_aperture_buffer_factor": self.ui.gerber_defaults_form.gerber_adv_opt_group.buffer_aperture_entry, "gerber_follow": self.ui.gerber_defaults_form.gerber_adv_opt_group.follow_cb, # Gerber Export @@ -381,6 +381,9 @@ class App(QtCore.QObject): "gerber_exp_decimals": self.ui.gerber_defaults_form.gerber_exp_group.format_dec_entry, "gerber_exp_zeros": self.ui.gerber_defaults_form.gerber_exp_group.zeros_radio, + # Gerber Editor + "gerber_editor_sel_limit": self.ui.gerber_defaults_form.gerber_editor_group.sel_limit_entry, + # Excellon General "excellon_plot": self.ui.excellon_defaults_form.excellon_gen_group.plot_cb, "excellon_solid": self.ui.excellon_defaults_form.excellon_gen_group.solid_cb, @@ -458,6 +461,9 @@ class App(QtCore.QObject): "geometry_segx": self.ui.geometry_defaults_form.geometry_adv_opt_group.segx_entry, "geometry_segy": self.ui.geometry_defaults_form.geometry_adv_opt_group.segy_entry, + # Geometry Editor + "geometry_editor_sel_limit": self.ui.geometry_defaults_form.geometry_editor_group.sel_limit_entry, + # 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, @@ -699,6 +705,9 @@ class App(QtCore.QObject): "gerber_exp_decimals": 4, "gerber_exp_zeros": 'L', + # Gerber Editor + "gerber_editor_sel_limit": 30, + # Excellon General "excellon_plot": True, "excellon_solid": True, @@ -776,6 +785,9 @@ class App(QtCore.QObject): "geometry_segx": 0.0, "geometry_segy": 0.0, + # Geometry Editor + "geometry_editor_sel_limit": 30, + # CNC Job General "cncjob_plot": True, "cncjob_plot_kind": 'all', @@ -2277,7 +2289,7 @@ class App(QtCore.QObject): elif isinstance(edited_obj, FlatCAMGerber): obj_type = "Gerber" if cleanup is None: - self.grb_editor.update_fcgerber(edited_obj) + self.grb_editor.update_fcgerber() self.grb_editor.update_options(edited_obj) self.grb_editor.deactivate_grb_editor() diff --git a/README.md b/README.md index 27ab8ab8..accdf4d5 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,15 @@ Among other things, it can take a Gerber file generated by your favorite PCB CAD program, and create G-Code for Isolation routing. ================================================= + 19.05.2019 - fixed the Circle Steps parameter for both Gerber and Geometry objects not being applied and instead the app internal defaults were used. - fixed the Tcl command Geocutout issue that gave an error when using the 4 or 8 value for gaps parameter - made wider the '#' column for Apertures Table for Gerber Object and for Gerber Editor; in this way numbers with 3 digits can be seen +- PEP8 corrections in FlatCAMGrbEditor.py +- added a selection limit parameter for Geometry Editor +- added entries in Edit -> Preferences for the new parameter Selection limit for both the Gerber and Geometry Editors. 18.05.2019 diff --git a/flatcamEditors/FlatCAMGeoEditor.py b/flatcamEditors/FlatCAMGeoEditor.py index ec4a86d2..aaad1c9c 100644 --- a/flatcamEditors/FlatCAMGeoEditor.py +++ b/flatcamEditors/FlatCAMGeoEditor.py @@ -2454,6 +2454,8 @@ class FCMove(FCShapeTool): self.origin = None self.destination = None + self.sel_limit = self.draw_app.app.defaults["geometry_editor_sel_limit"] + self.selection_shape = self.selection_bbox() if len(self.draw_app.get_selected()) == 0: self.draw_app.app.inform.emit(_("[WARNING_NOTCL] MOVE: No shape selected. Select a shape to move ...")) @@ -2475,29 +2477,46 @@ class FCMove(FCShapeTool): if self.origin is None: self.set_origin(point) + self.selection_shape = self.selection_bbox() return "Click on final location." else: self.destination = point self.make() + # self.draw_app.app.worker_task.emit(({'fcn': self.make, + # 'params': []})) return "Done." def make(self): - # Create new geometry - dx = self.destination[0] - self.origin[0] - dy = self.destination[1] - self.origin[1] - self.geometry = [DrawToolShape(affinity.translate(geom.geo, xoff=dx, yoff=dy)) - for geom in self.draw_app.get_selected()] + with self.draw_app.app.proc_container.new("Moving Geometry ..."): + # Create new geometry + dx = self.destination[0] - self.origin[0] + dy = self.destination[1] - self.origin[1] + self.geometry = [DrawToolShape(affinity.translate(geom.geo, xoff=dx, yoff=dy)) + for geom in self.draw_app.get_selected()] - # Delete old - self.draw_app.delete_selected() + # Delete old + self.draw_app.delete_selected() + self.complete = True + self.draw_app.app.inform.emit(_("[success] Done. Geometry(s) Move completed.")) - # # Select the new - # for g in self.geometry: - # # Note that g is not in the app's buffer yet! - # self.draw_app.set_selected(g) + 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) - self.complete = True - self.draw_app.app.inform.emit(_("[success] Done. Geometry(s) Move completed.")) + 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): """ @@ -2517,17 +2536,21 @@ class FCMove(FCShapeTool): dx = data[0] - self.origin[0] dy = data[1] - self.origin[1] - 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('select') - self.draw_app.selected = [] - return - - return DrawToolUtilityShape(geo_list) - # return DrawToolUtilityShape([affinity.translate(geom.geo, xoff=dx, yoff=dy) - # for geom in self.draw_app.get_selected()]) + 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('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) def select_shapes(self, pos): # list where we store the overlapped shapes under our mouse left click position @@ -4351,3 +4374,22 @@ def mag(vec): def poly2rings(poly): return [poly.exterior] + [interior for interior in poly.interiors] + + +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] diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index af96b411..4d00d320 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -8,7 +8,8 @@ import shapely.affinity as affinity from numpy import arctan2, Inf, array, sqrt, sign, dot from rtree import index as rtindex -import threading, time +import threading +import time from copy import copy, deepcopy from camlib import * @@ -24,9 +25,9 @@ from numpy.linalg import norm as numpy_norm import gettext import FlatCAMTranslation as fcTranslate +import builtins fcTranslate.apply_language('strings') -import builtins if '_' not in builtins.__dict__: _ = gettext.gettext @@ -53,13 +54,13 @@ class DrawToolShape(object): ## Iterable: descend into each item. try: - for subo in o: - pts += DrawToolShape.get_pts(subo) + for sub_o in o: + pts += DrawToolShape.get_pts(sub_o) - ## Non-iterable + # Non-iterable except TypeError: if o is not None: - ## DrawToolShape: descend into .geo. + # DrawToolShape: descend into .geo. if isinstance(o, DrawToolShape): pts += DrawToolShape.get_pts(o.geo) @@ -87,6 +88,7 @@ class DrawToolShape(object): self.geo = geo self.utility = False + class DrawToolUtilityShape(DrawToolShape): """ Utility shapes are temporary geometry in the editor @@ -96,7 +98,7 @@ class DrawToolUtilityShape(DrawToolShape): point is clicked and the final geometry is created. """ - def __init__(self, geo={}): + def __init__(self, geo=None): super(DrawToolUtilityShape, self).__init__(geo=geo) self.utility = True @@ -133,7 +135,8 @@ class DrawTool(object): def utility_geometry(self, data=None): return None - def bounds(self, obj): + @staticmethod + def bounds(obj): def bounds_rec(o): if type(o) is list: minx = Inf @@ -298,12 +301,12 @@ class FCPad(FCShapeTool): p3 = (point_x + self.half_width, point_y + self.half_height - self.half_width) p4 = (point_x - self.half_width, point_y + self.half_height - self.half_width) - down_center = (point_x, point_y - self.half_height + self.half_width) + down_center = [point_x, point_y - self.half_height + self.half_width] d_start_angle = math.pi d_stop_angle = 0.0 down_arc = arc(down_center, self.half_width, d_start_angle, d_stop_angle, 'ccw', self.steps_per_circ) - up_center = (point_x, point_y + self.half_height - self.half_width) + up_center = [point_x, point_y + self.half_height - self.half_width] u_start_angle = 0.0 u_stop_angle = math.pi up_arc = arc(up_center, self.half_width, u_start_angle, u_stop_angle, 'ccw', self.steps_per_circ) @@ -327,12 +330,12 @@ class FCPad(FCShapeTool): p3 = (point_x + self.half_width - self.half_height, point_y + self.half_height) p4 = (point_x - self.half_width + self.half_height, point_y + self.half_height) - left_center = (point_x - self.half_width + self.half_height, point_y) + left_center = [point_x - self.half_width + self.half_height, point_y] d_start_angle = math.pi / 2 d_stop_angle = 1.5 * math.pi left_arc = arc(left_center, self.half_height, d_start_angle, d_stop_angle, 'ccw', self.steps_per_circ) - right_center = (point_x + self.half_width - self.half_height, point_y) + right_center = [point_x + self.half_width - self.half_height, point_y] u_start_angle = 1.5 * math.pi u_stop_angle = math.pi / 2 right_arc = arc(right_center, self.half_height, u_start_angle, u_stop_angle, 'ccw', self.steps_per_circ) @@ -503,7 +506,7 @@ class FCPadArray(FCShapeTool): dy = data[1] geo_el_list = [] - geo = None + geo_el = [] self.points = [dx, dy] for item in range(self.pad_array_size): @@ -600,12 +603,12 @@ class FCPadArray(FCShapeTool): p3 = (point_x + self.half_width, point_y + self.half_height - self.half_width) p4 = (point_x - self.half_width, point_y + self.half_height - self.half_width) - down_center = (point_x, point_y - self.half_height + self.half_width) + down_center = [point_x, point_y - self.half_height + self.half_width] d_start_angle = math.pi d_stop_angle = 0.0 down_arc = arc(down_center, self.half_width, d_start_angle, d_stop_angle, 'ccw', self.steps_per_circ) - up_center = (point_x, point_y + self.half_height - self.half_width) + up_center = [point_x, point_y + self.half_height - self.half_width] u_start_angle = 0.0 u_stop_angle = math.pi up_arc = arc(up_center, self.half_width, u_start_angle, u_stop_angle, 'ccw', self.steps_per_circ) @@ -629,12 +632,12 @@ class FCPadArray(FCShapeTool): p3 = (point_x + self.half_width - self.half_height, point_y + self.half_height) p4 = (point_x - self.half_width + self.half_height, point_y + self.half_height) - left_center = (point_x - self.half_width + self.half_height, point_y) + left_center = [point_x - self.half_width + self.half_height, point_y] d_start_angle = math.pi / 2 d_stop_angle = 1.5 * math.pi left_arc = arc(left_center, self.half_height, d_start_angle, d_stop_angle, 'ccw', self.steps_per_circ) - right_center = (point_x + self.half_width - self.half_height, point_y) + right_center = [point_x + self.half_width - self.half_height, point_y] u_start_angle = 1.5 * math.pi u_stop_angle = math.pi / 2 right_arc = arc(right_center, self.half_height, u_start_angle, u_stop_angle, 'ccw', self.steps_per_circ) @@ -947,8 +950,8 @@ class FCRegion(FCShapeTool): try: new_geo_el['solid'] = LineString(self.temp_points).buffer(self.buf_val, join_style=1) return DrawToolUtilityShape(new_geo_el) - except: - pass + except Exception as e: + log.debug("FlatCAMGrbEditor.FCRegion.utility_geometry() --> %s" % str(e)) else: new_geo_el['solid'] = Point(self.temp_points).buffer(self.buf_val) return DrawToolUtilityShape(new_geo_el) @@ -1054,7 +1057,7 @@ class FCRegion(FCShapeTool): if key == 'T' or key == QtCore.Qt.Key_T: if self.draw_app.bend_mode == 1: self.draw_app.bend_mode = 2 - msg = _('Corner Mode 2: Reverse 45 degrees ...') + msg = _('Corner Mode 2: Reverse 45 degrees ...') elif self.draw_app.bend_mode == 2: self.draw_app.bend_mode = 3 msg = _('Corner Mode 3: 90 degrees ...') @@ -1111,8 +1114,9 @@ class FCTrack(FCRegion): try: QtGui.QGuiApplication.restoreOverrideCursor() - except: - pass + except Exception as e: + log.debug("FlatCAMGrbEditor.FCTrack.__init__() --> %s" % str(e)) + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path%s.png' % self.draw_app.bend_mode)) QtGui.QGuiApplication.setOverrideCursor(self.cursor) @@ -1247,8 +1251,9 @@ class FCTrack(FCRegion): if key == 'T' or key == QtCore.Qt.Key_T: try: QtGui.QGuiApplication.restoreOverrideCursor() - except: - pass + except Exception as e: + log.debug("FlatCAMGrbEditor.FCTrack.on_key() --> %s" % str(e)) + if self.draw_app.bend_mode == 1: self.draw_app.bend_mode = 2 self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path2.png')) @@ -1285,8 +1290,9 @@ class FCTrack(FCRegion): if key == 'R' or key == QtCore.Qt.Key_R: try: QtGui.QGuiApplication.restoreOverrideCursor() - except: - pass + except Exception as e: + log.debug("FlatCAMGrbEditor.FCTrack.on_key() --> %s" % str(e)) + if self.draw_app.bend_mode == 1: self.draw_app.bend_mode = 5 self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_path5.png')) @@ -1375,8 +1381,8 @@ class FCDisc(FCShapeTool): try: QtGui.QGuiApplication.restoreOverrideCursor() - except: - pass + except Exception as e: + log.debug("FlatCAMGrbEditor.FCDisc --> %s" % str(e)) self.draw_app.current_storage = self.storage_obj @@ -1405,8 +1411,9 @@ class FCSemiDisc(FCShapeTool): try: QtGui.QGuiApplication.restoreOverrideCursor() - except: - pass + except Exception as e: + log.debug("FlatCAMGrbEditor.FCSemiDisc --> %s" % str(e)) + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero_semidisc.png')) QtGui.QGuiApplication.setOverrideCursor(self.cursor) @@ -1576,12 +1583,12 @@ class FCSemiDisc(FCShapeTool): p2 = self.points[2] radius = distance(center, p1) + (self.buf_val / 2) - startangle = arctan2(p1[1] - center[1], p1[0] - center[0]) - stopangle = arctan2(p2[1] - center[1], p2[0] - center[0]) + start_angle = arctan2(p1[1] - center[1], p1[0] - center[0]) + stop_angle = arctan2(p2[1] - center[1], p2[0] - center[0]) new_geo_el['solid'] = Polygon( - arc(center, radius, startangle, stopangle, self.direction, self.steps_per_circ)) + arc(center, radius, start_angle, stop_angle, self.direction, self.steps_per_circ)) new_geo_el['follow'] = Polygon( - arc(center, radius, startangle, stopangle, self.direction, self.steps_per_circ)).exterior + arc(center, radius, start_angle, stop_angle, self.direction, self.steps_per_circ)).exterior self.geometry = DrawToolShape(new_geo_el) elif self.mode == '132': @@ -1593,12 +1600,12 @@ class FCSemiDisc(FCShapeTool): direction = 'cw' if sign(t) > 0 else 'ccw' radius += (self.buf_val / 2) - startangle = arctan2(p1[1] - center[1], p1[0] - center[0]) - stopangle = arctan2(p3[1] - center[1], p3[0] - center[0]) + start_angle = arctan2(p1[1] - center[1], p1[0] - center[0]) + stop_angle = arctan2(p3[1] - center[1], p3[0] - center[0]) - new_geo_el['solid'] = Polygon(arc(center, radius, startangle, stopangle, direction, self.steps_per_circ)) + new_geo_el['solid'] = Polygon(arc(center, radius, start_angle, stop_angle, direction, self.steps_per_circ)) new_geo_el['follow'] = Polygon( - arc(center, radius, startangle, stopangle, direction, self.steps_per_circ)).exterior + arc(center, radius, start_angle, stop_angle, direction, self.steps_per_circ)).exterior self.geometry = DrawToolShape(new_geo_el) else: # self.mode == '12c' @@ -1628,13 +1635,13 @@ class FCSemiDisc(FCShapeTool): center = a + b * t radius = numpy_norm(center - p1) + (self.buf_val / 2) - startangle = arctan2(p1[1] - center[1], p1[0] - center[0]) - stopangle = arctan2(p2[1] - center[1], p2[0] - center[0]) + start_angle = arctan2(p1[1] - center[1], p1[0] - center[0]) + stop_angle = arctan2(p2[1] - center[1], p2[0] - center[0]) new_geo_el['solid'] = Polygon( - arc(center, radius, startangle, stopangle, self.direction, self.steps_per_circ)) + arc(center, radius, start_angle, stop_angle, self.direction, self.steps_per_circ)) new_geo_el['follow'] = Polygon( - arc(center, radius, startangle, stopangle, self.direction, self.steps_per_circ)).exterior + arc(center, radius, start_angle, stop_angle, self.direction, self.steps_per_circ)).exterior self.geometry = DrawToolShape(new_geo_el) self.draw_app.in_action = False @@ -1765,7 +1772,7 @@ class FCApertureMove(FCShapeTool): # Switch notebook to Selected page self.draw_app.app.ui.notebook.setCurrentWidget(self.draw_app.app.ui.selected_tab) - self.sel_limit = 30 + self.sel_limit = self.draw_app.app.defaults["gerber_editor_sel_limit"] self.selection_shape = self.selection_bbox() def set_origin(self, origin): @@ -1971,8 +1978,8 @@ class FCApertureSelect(DrawTool): try: QtGui.QGuiApplication.restoreOverrideCursor() - except: - pass + except Exception as e: + log.debug("FlatCAMGrbEditor.FCApertureSelect --> %s" % str(e)) def set_origin(self, origin): self.origin = origin @@ -2021,8 +2028,8 @@ class FCApertureSelect(DrawTool): # select the aperture in the Apertures Table that is associated with the selected shape try: self.draw_app.apertures_table.cellPressed.disconnect() - except: - pass + except Exception as e: + log.debug("FlatCAMGrbEditor.FCApertureSelect.click_release() --> %s" % str(e)) self.grb_editor_app.apertures_table.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) for aper in sel_aperture: @@ -2073,29 +2080,29 @@ class FlatCAMGrbEditor(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.grb_edit_widget = QtWidgets.QWidget() layout = QtWidgets.QVBoxLayout() self.grb_edit_widget.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('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" % _('Gerber 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() layout.addLayout(self.name_box) name_label = QtWidgets.QLabel(_("Name:")) @@ -2103,13 +2110,13 @@ class FlatCAMGrbEditor(QtCore.QObject): self.name_entry = FCEntry() self.name_box.addWidget(self.name_entry) - ## Box for custom widgets + # Box for custom widgets # This gets populated in offspring implementations. self.custom_box = QtWidgets.QVBoxLayout() 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.") @@ -2151,7 +2158,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) @@ -2225,7 +2232,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) @@ -2269,7 +2276,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) @@ -2316,7 +2323,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) @@ -2329,7 +2336,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.array_type_combo = FCComboBox() self.array_type_combo.setToolTip( _( "Select the type of pads 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")) @@ -2361,15 +2368,15 @@ class FlatCAMGrbEditor(QtCore.QObject): self.pad_axis_label = QtWidgets.QLabel(_('Direction:')) self.pad_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.pad_axis_label.setFixedWidth(100) self.pad_axis_radio = RadioSet([{'label': 'X', 'value': 'X'}, - {'label': 'Y', 'value': 'Y'}, - {'label': 'Angle', 'value': 'A'}]) + {'label': 'Y', 'value': 'Y'}, + {'label': 'Angle', 'value': 'A'}]) self.pad_axis_radio.set_value('X') self.linear_form.addRow(self.pad_axis_label, self.pad_axis_radio) @@ -2385,9 +2392,9 @@ class FlatCAMGrbEditor(QtCore.QObject): 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) @@ -2405,8 +2412,8 @@ class FlatCAMGrbEditor(QtCore.QObject): self.pad_direction_label = QtWidgets.QLabel(_('Direction:')) self.pad_direction_label.setToolTip( - _( "Direction for circular array." - "Can be CW = clockwise or CCW = counter clockwise.") + _("Direction for circular array." + "Can be CW = clockwise or CCW = counter clockwise.") ) self.pad_direction_label.setFixedWidth(100) @@ -2414,7 +2421,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.circular_box.addLayout(self.circular_form) self.pad_direction_radio = RadioSet([{'label': 'CW', 'value': 'CW'}, - {'label': 'CCW.', 'value': 'CCW'}]) + {'label': 'CCW.', 'value': 'CCW'}]) self.pad_direction_radio.set_value('CW') self.circular_form.addRow(self.pad_direction_label, self.pad_direction_radio) @@ -2436,28 +2443,28 @@ class FlatCAMGrbEditor(QtCore.QObject): self.custom_box.addStretch() - ## Toolbar events and properties + # Toolbar events and properties self.tools_gerber = { "select": {"button": self.app.ui.grb_select_btn, "constructor": FCApertureSelect}, "pad": {"button": self.app.ui.grb_add_pad_btn, - "constructor": FCPad}, + "constructor": FCPad}, "array": {"button": self.app.ui.add_pad_ar_btn, - "constructor": FCPadArray}, + "constructor": FCPadArray}, "track": {"button": self.app.ui.grb_add_track_btn, - "constructor": FCTrack}, + "constructor": FCTrack}, "region": {"button": self.app.ui.grb_add_region_btn, - "constructor": FCRegion}, + "constructor": FCRegion}, "poligonize": {"button": self.app.ui.grb_convert_poly_btn, - "constructor": FCPoligonize}, + "constructor": FCPoligonize}, "semidisc": {"button": self.app.ui.grb_add_semidisc_btn, - "constructor": FCSemiDisc}, + "constructor": FCSemiDisc}, "disc": {"button": self.app.ui.grb_add_disc_btn, - "constructor": FCDisc}, + "constructor": FCDisc}, "buffer": {"button": self.app.ui.aperture_buffer_btn, - "constructor": FCBuffer}, + "constructor": FCBuffer}, "scale": {"button": self.app.ui.aperture_scale_btn, - "constructor": FCScale}, + "constructor": FCScale}, "copy": {"button": self.app.ui.aperture_copy_btn, "constructor": FCApertureCopy}, "transform": {"button": self.app.ui.grb_transform_btn, @@ -2466,13 +2473,13 @@ class FlatCAMGrbEditor(QtCore.QObject): "constructor": FCApertureMove}, } - ### Data + # ## Data self.active_tool = None self.storage_dict = {} self.current_storage = [] - self.sorted_apid =[] + self.sorted_apid = [] self.new_apertures = {} self.new_aperture_macros = {} @@ -2501,7 +2508,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.apdim_lbl.hide() self.apdim_entry.hide() self.gerber_obj = None - self.gerber_obj_options = {} + self.gerber_obj_options = dict() self.buffer_distance_entry.set_value(0.01) self.scale_factor_entry.set_value(1.0) @@ -2515,7 +2522,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.shapes.enabled = False self.tool_shape.enabled = False - ## List of selected geometric elements. + # List of selected geometric elements. self.selected = [] self.key = None # Currently pressed key @@ -2535,14 +2542,14 @@ class FlatCAMGrbEditor(QtCore.QObject): # this will flag if the Editor "tools" are launched from key shortcuts (True) or from menu toolbar (False) self.launched_from_shortcuts = False - def make_callback(thetool): + def make_callback(the_tool): def f(): - self.on_tool_select(thetool) + self.on_tool_select(the_tool) return f for tool in self.tools_gerber: self.tools_gerber[tool]["button"].triggered.connect(make_callback(tool)) # Events - self.tools_gerber[tool]["button"].setCheckable(True) # Checkable + self.tools_gerber[tool]["button"].setCheckable(True) self.options = { "global_gridx": 0.1, @@ -2569,8 +2576,8 @@ class FlatCAMGrbEditor(QtCore.QObject): # store the status of the editor so the Delete at object level will not work until the edit is finished self.editor_active = False - def entry2option(option, entry): - self.options[option] = float(entry.text()) + # def entry2option(option, entry): + # self.options[option] = float(entry.text()) self.transform_tool = TransformEditorTool(self.app, self) @@ -2676,7 +2683,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.name_entry.set_value(self.edited_obj_name) self.apertures_row = 0 - aper_no = self.apertures_row + 1 + # aper_no = self.apertures_row + 1 sort = [] for k, v in list(self.storage_dict.items()): @@ -2792,7 +2799,7 @@ class FlatCAMGrbEditor(QtCore.QObject): # Remove anything else in the GUI Selected Tab self.app.ui.selected_scroll_area.takeWidget() - # Put ourself in the GUI Selected Tab + # Put ourselves in the GUI Selected Tab self.app.ui.selected_scroll_area.setWidget(self.grb_edit_widget) # Switch notebook to Selected page self.app.ui.notebook.setCurrentWidget(self.app.ui.selected_tab) @@ -2875,8 +2882,8 @@ class FlatCAMGrbEditor(QtCore.QObject): self.storage_dict[ap_id]['geometry'] = [] - # self.olddia_newdia dict keeps the evidence on current aperture codes as keys and gets updated on values - # each time a aperture code is edited or added + # self.olddia_newdia dict keeps the evidence on current aperture codes as keys and gets updated on + # values each time a aperture code is edited or added self.olddia_newdia[ap_id] = ap_id else: self.app.inform.emit(_("[WARNING_NOTCL] Aperture already in the aperture table.")) @@ -2900,18 +2907,17 @@ class FlatCAMGrbEditor(QtCore.QObject): break self.apertures_table.selectRow(row_to_be_selected) - def on_aperture_delete(self, apid=None): + def on_aperture_delete(self, ap_id=None): self.is_modified = True deleted_apcode_list = [] - deleted_tool_offset_list = [] try: - if apid: - if isinstance(apid, list): - for dd in apid: + if ap_id: + if isinstance(ap_id, list): + for dd in ap_id: deleted_apcode_list.append(dd) else: - deleted_apcode_list.append(apid) + deleted_apcode_list.append(ap_id) else: # deleted_tool_dia = float(self.apertures_table.item(self.apertures_table.currentRow(), 1).text()) if len(self.apertures_table.selectionModel().selectedRows()) == 0: @@ -2920,8 +2926,8 @@ class FlatCAMGrbEditor(QtCore.QObject): for index in self.apertures_table.selectionModel().selectedRows(): row = index.row() deleted_apcode_list.append(self.apertures_table.item(row, 1).text()) - except: - self.app.inform.emit(_("[WARNING_NOTCL] Select an aperture in Aperture Table")) + except Exception as exc: + self.app.inform.emit(_("[WARNING_NOTCL] Select an aperture in Aperture Table --> %s" % str(exc))) return if deleted_apcode_list: @@ -2950,8 +2956,8 @@ class FlatCAMGrbEditor(QtCore.QObject): self.plot_all() self.build_ui() - # if last aperture selected was in the apertures deleted than make sure to select a 'new' last aperture selected - # because there are tools who depend on it. + # if last aperture selected was in the apertures deleted than make sure to select a + # 'new' last aperture selected because there are tools who depend on it. # if there is no aperture left, then add a default one :) if self.last_aperture_selected in deleted_apcode_list: if self.apertures_table.rowCount() == 0: @@ -2959,14 +2965,13 @@ class FlatCAMGrbEditor(QtCore.QObject): else: self.last_aperture_selected = self.apertures_table.item(0, 1).text() - def on_tool_edit(self, item_changed): + def on_tool_edit(self): # if connected, disconnect the signal from the slot on item_changed as it creates issues self.apertures_table.itemChanged.disconnect() # self.apertures_table.cellPressed.disconnect() self.is_modified = True - geometry = [] current_table_dia_edited = None if self.apertures_table.currentItem() is not None: @@ -3096,8 +3101,8 @@ class FlatCAMGrbEditor(QtCore.QObject): def deactivate_grb_editor(self): try: QtGui.QGuiApplication.restoreOverrideCursor() - except: - pass + except Exception as e: + log.debug("FlatCAMGrbEditor.deactivate_grb_editor() --> %s" % str(e)) # adjust the status of the menu entries related to the editor self.app.ui.menueditedit.setDisabled(False) @@ -3168,7 +3173,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.gerber_obj.visible = True def connect_canvas_event_handlers(self): - ## Canvas events + # Canvas events # make sure that the shortcuts key and mouse events will no longer be linked to the methods from FlatCAMApp # but those from FlatCAMGeoEditor @@ -3257,7 +3262,6 @@ class FlatCAMGrbEditor(QtCore.QObject): def clear(self): self.active_tool = None - # self.shape_buffer = [] self.selected = [] self.shapes.clear(update=True) @@ -3268,7 +3272,7 @@ class FlatCAMGrbEditor(QtCore.QObject): Imports the geometry found in self.apertures from the given FlatCAM Gerber object into the editor. - :param fcgeometry: FlatCAMExcellon + :param orig_grb_obj: FlatCAMExcellon :return: None """ @@ -3365,34 +3369,34 @@ class FlatCAMGrbEditor(QtCore.QObject): log.warning("Polygon difference done for %d apertures." % len(self.gerber_obj.apertures)) # and then add it to the storage elements (each storage elements is a member of a list - def job_thread(self, apid): - with self.app.proc_container.new(_("Adding aperture: %s geo ...") % str(apid)): + def job_thread(aperture_id): + with self.app.proc_container.new(_("Adding aperture: %s geo ...") % str(aperture_id)): storage_elem = [] - self.storage_dict[apid] = {} + self.storage_dict[aperture_id] = {} # add the Gerber geometry to editor storage - for k, v in self.gerber_obj.apertures[apid].items(): + for k, v in self.gerber_obj.apertures[aperture_id].items(): try: if k == 'geometry': for geo_el in v: if geo_el: self.add_gerber_shape(DrawToolShape(geo_el), storage_elem) - self.storage_dict[apid][k] = storage_elem + self.storage_dict[aperture_id][k] = storage_elem else: - self.storage_dict[apid][k] = self.gerber_obj.apertures[apid][k] + self.storage_dict[aperture_id][k] = self.gerber_obj.apertures[aperture_id][k] except Exception as e: log.debug("FlatCAMGrbEditor.edit_fcgerber().job_thread() --> %s" % str(e)) # Check promises and clear if exists while True: try: - self.grb_plot_promises.remove(apid) + self.grb_plot_promises.remove(aperture_id) time.sleep(0.5) except ValueError: break - for apid in self.gerber_obj.apertures: - self.grb_plot_promises.append(apid) - self.app.worker_task.emit({'fcn': job_thread, 'params': [self, apid]}) + for ap_id in self.gerber_obj.apertures: + self.grb_plot_promises.append(ap_id) + self.app.worker_task.emit({'fcn': job_thread, 'params': [ap_id]}) self.set_ui() @@ -3405,11 +3409,10 @@ class FlatCAMGrbEditor(QtCore.QObject): # and add the first aperture to have something to play with self.on_aperture_add('10') - def update_fcgerber(self, grb_obj): + def update_fcgerber(self): """ Create a new Gerber object that contain the edited content of the source Gerber object - :param grb_obj: FlatCAMGerber :return: None """ @@ -3418,13 +3421,13 @@ class FlatCAMGrbEditor(QtCore.QObject): # if the 'delayed plot' malfunctioned stop the QTimer try: self.plot_thread.stop() - except: - pass + except Exception as e: + log.debug("FlatCAMGrbEditor.update_fcgerber() --> %s" % str(e)) if "_edit" in self.edited_obj_name: try: - id = int(self.edited_obj_name[-1]) + 1 - new_grb_name= self.edited_obj_name[:-1] + str(id) + _id = int(self.edited_obj_name[-1]) + 1 + new_grb_name = self.edited_obj_name[:-1] + str(_id) except ValueError: new_grb_name += "_1" else: @@ -3445,10 +3448,11 @@ class FlatCAMGrbEditor(QtCore.QObject): # Switch notebook to Selected page self.app.ui.notebook.setCurrentWidget(self.app.ui.selected_tab) - def update_options(self, obj): + @staticmethod + def update_options(obj): try: if not obj.options: - obj.options = {} + obj.options = dict() obj.options['xmin'] = 0 obj.options['ymin'] = 0 obj.options['xmax'] = 0 @@ -3457,7 +3461,7 @@ class FlatCAMGrbEditor(QtCore.QObject): else: return False except AttributeError: - obj.options = {} + obj.options = dict() return True def new_edited_gerber(self, outname): @@ -3524,7 +3528,7 @@ class FlatCAMGrbEditor(QtCore.QObject): new_poly = new_poly.buffer(-0.00000001) try: - _ = iter(new_poly) + __ = iter(new_poly) except TypeError: new_poly = [new_poly] @@ -3545,14 +3549,13 @@ class FlatCAMGrbEditor(QtCore.QObject): grb_obj.create_geometry() except KeyError: self.app.inform.emit( - _( "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber creation.") + _("[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber creation.") ) - except: - msg = _("[ERROR] An internal error has ocurred. See shell.\n") + except Exception as e: + msg = _("[ERROR] An internal error has occurred. See shell.\n") msg += traceback.format_exc() app_obj.inform.emit(msg) raise - # raise with self.app.proc_container.new(_("Creating Gerber.")): try: @@ -3563,7 +3566,6 @@ class FlatCAMGrbEditor(QtCore.QObject): return self.app.inform.emit(_("[success] Gerber editing finished.")) - # self.progress.emit(100) def on_tool_select(self, tool): """ @@ -3614,11 +3616,10 @@ class FlatCAMGrbEditor(QtCore.QObject): self.selected = [] try: - # selected_apid = str(self.tool2tooldia[row + 1]) - selected_apid = self.apertures_table.item(row, 1).text() - self.last_aperture_selected = copy(selected_apid) + selected_ap_id = self.apertures_table.item(row, 1).text() + self.last_aperture_selected = copy(selected_ap_id) - for obj in self.storage_dict[selected_apid]['geometry']: + for obj in self.storage_dict[selected_ap_id]['geometry']: self.selected.append(obj) except Exception as e: self.app.log.debug(str(e)) @@ -3626,10 +3627,22 @@ class FlatCAMGrbEditor(QtCore.QObject): self.plot_all() def toolbar_tool_toggle(self, key): + """ + + :param key: key to update in self.options dictionary + :return: + """ self.options[key] = self.sender().isChecked() return self.options[key] - def on_grb_shape_complete(self, storage=None, specific_shape=None, noplot=False): + def on_grb_shape_complete(self, storage=None, specific_shape=None, no_plot=False): + """ + + :param storage: where to store the shape + :param specific_shape: optional, the shape to be stored + :param no_plot: use this if you want the added shape not plotted + :return: + """ self.app.log.debug("on_grb_shape_complete()") if specific_shape: @@ -3650,8 +3663,8 @@ class FlatCAMGrbEditor(QtCore.QObject): self.delete_utility_geometry() self.tool_shape.clear(update=True) - if noplot is False: - # Replot and reset tool. + if no_plot is False: + # Re-plot and reset tool. self.plot_all() def add_gerber_shape(self, shape_element, storage): @@ -3661,6 +3674,7 @@ class FlatCAMGrbEditor(QtCore.QObject): :param shape_element: Shape to be added. :type shape_element: DrawToolShape or DrawToolUtilityShape Geometry is stored as a dict with keys: solid, follow, clear, each value being a list of Shapely objects. The dict can have at least one of the mentioned keys + :param storage: Where to store the shape :return: None """ # List of DrawToolShape? @@ -3676,9 +3690,8 @@ class FlatCAMGrbEditor(QtCore.QObject): assert shape_element.geo is not None, \ "Shape object has empty geometry (None)" - assert (isinstance(shape_element.geo, list) and len(shape_element.geo) > 0) or \ - not isinstance(shape_element.geo, list), \ - "Shape objects has empty geometry ([])" + assert(isinstance(shape_element.geo, list) and len(shape_element.geo) > 0) or not \ + isinstance(shape_element.geo, list), "Shape objects has empty geometry ([])" if isinstance(shape_element, DrawToolUtilityShape): self.utility.append(shape_element) @@ -3697,7 +3710,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.pos = self.canvas.vispy_canvas.translate_coords(event.pos) if self.app.grid_status(): - self.pos = self.app.geo_editor.snap(self.pos[0], self.pos[1]) + self.pos = self.app.geo_editor.snap(self.pos[0], self.pos[1]) self.app.app_cursor.enabled = True # Update cursor self.app.app_cursor.set_data(np.asarray([(self.pos[0], self.pos[1])]), symbol='++', edge_color='black', @@ -3713,7 +3726,7 @@ class FlatCAMGrbEditor(QtCore.QObject): # Selection with left mouse button 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(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: @@ -3740,7 +3753,6 @@ class FlatCAMGrbEditor(QtCore.QObject): return if isinstance(self.active_tool, FCApertureSelect): - # self.app.log.debug("Replotting after click.") self.plot_all() else: self.app.log.debug("No active tool to respond to click!") @@ -3762,8 +3774,8 @@ class FlatCAMGrbEditor(QtCore.QObject): if self.in_action is False: try: QtGui.QGuiApplication.restoreOverrideCursor() - except: - pass + except Exception as e: + log.debug("FlatCAMGrbEditor.on_grb_click_release() --> %s" % str(e)) if self.active_tool.complete is False and not isinstance(self.active_tool, FCApertureSelect): self.active_tool.complete = True @@ -3827,7 +3839,6 @@ class FlatCAMGrbEditor(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: """ @@ -3856,8 +3867,8 @@ class FlatCAMGrbEditor(QtCore.QObject): pass try: self.apertures_table.cellPressed.disconnect() - except: - pass + except Exception as e: + log.debug("FlatCAMGrbEditor.draw_selection_Area_handler() --> %s" % str(e)) # select the aperture code of the selected geometry, in the tool table self.apertures_table.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) for aper in sel_aperture: @@ -3902,7 +3913,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 @@ -3915,8 +3926,8 @@ class FlatCAMGrbEditor(QtCore.QObject): self.snap_y = y # 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)) + self.app.ui.position_label.setText("    X: %.4f   " + "Y: %.4f" % (x, y)) if self.pos is None: self.pos = (0, 0) @@ -3924,10 +3935,10 @@ class FlatCAMGrbEditor(QtCore.QObject): dy = y - self.pos[1] # 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)) + 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: @@ -3935,7 +3946,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 @@ -3945,19 +3956,16 @@ class FlatCAMGrbEditor(QtCore.QObject): dx = pos_canvas[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 - def on_canvas_key_release(self, event): - self.key = None - def draw_utility_geometry(self, geo): if type(geo.geo) == list: for el in geo.geo: @@ -3988,7 +3996,7 @@ class FlatCAMGrbEditor(QtCore.QObject): :rtype: None """ with self.app.proc_container.new("Plotting"): - # self.app.log.debug("plot_all()") + self.shapes.clear(update=True) for storage in self.storage_dict: @@ -4025,7 +4033,6 @@ class FlatCAMGrbEditor(QtCore.QObject): :param linewidth: Width of lines in # of pixels. :return: List of plotted elements. """ - # plot_elements = [] if geometry is None: geometry = self.active_tool.geometry @@ -4066,7 +4073,7 @@ class FlatCAMGrbEditor(QtCore.QObject): self.plot_thread.stop() self.plot_finished.emit() log.debug("FlatCAMGrbEditor --> delayed_plot finished") - except Exception: + except Exception as e: traceback.print_exc() def setup_ui_after_delayed_plot(self): @@ -4217,10 +4224,10 @@ class FlatCAMGrbEditor(QtCore.QObject): self.buffer_distance_entry.set_value(buff_value) except ValueError: self.app.inform.emit(_("[WARNING_NOTCL] Buffer distance value is missing or wrong format. " - "Add it and retry.")) + "Add it and retry.")) return # the cb index start from 0 but the join styles for the buffer start from 1 therefore the adjustment - # I populated the combobox such that the index coincide with the join styles value (whcih is really an INT) + # I populated the combobox such that the index coincide with the join styles value (which is really an INT) join_style = self.buffer_corner_cb.currentIndex() + 1 def buffer_recursion(geom_el, selection): @@ -4234,14 +4241,17 @@ class FlatCAMGrbEditor(QtCore.QObject): geometric_data = geom_el.geo buffered_geom_el = dict() if 'solid' in geom_el: - buffered_geom_el['solid'] = DrawToolShape(geometric_data['solid'].buffer(buff_value, - join_style=join_style)) + buffered_geom_el['solid'] = DrawToolShape( + geometric_data['solid'].buffer(buff_value, join_style=join_style) + ) if 'follow' in geom_el: - buffered_geom_el['follow'] = DrawToolShape(geometric_data['follow'].buffer(buff_value, - join_style=join_style)) + buffered_geom_el['follow'] = DrawToolShape( + geometric_data['follow'].buffer(buff_value, join_style=join_style) + ) if 'clear' in geom_el: - buffered_geom_el['clear'] = DrawToolShape(geometric_data['clear'].buffer(buff_value, - join_style=join_style)) + buffered_geom_el['clear'] = DrawToolShape( + geometric_data['clear'].buffer(buff_value, join_style=join_style) + ) return buffered_geom_el else: return geom_el @@ -4367,7 +4377,8 @@ 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 @@ -4391,11 +4402,11 @@ class TransformEditorTool(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() @@ -4429,11 +4440,11 @@ class TransformEditorTool(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() @@ -4486,11 +4497,11 @@ class TransformEditorTool(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() @@ -4561,11 +4572,11 @@ class TransformEditorTool(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() @@ -4618,11 +4629,11 @@ class TransformEditorTool(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) @@ -4695,7 +4706,7 @@ class TransformEditorTool(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) @@ -4742,7 +4753,7 @@ class TransformEditorTool(FlatCAMTool): FlatCAMTool.install(self, icon, separator, shortcut='ALT+T', **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: @@ -4847,6 +4858,12 @@ class TransformEditorTool(FlatCAMTool): self.flip_ref_entry.set_value(val) def on_skewx(self, sig=None, val=None): + """ + + :param sig: here we can get the value passed by the signal + :param val: the amount to skew on the X axis + :return: + """ if val: value = val else: @@ -4868,6 +4885,12 @@ class TransformEditorTool(FlatCAMTool): return def on_skewy(self, sig=None, val=None): + """ + + :param sig: here we can get the value passed by the signal + :param val: the amount to sckew on the Y axis + :return: + """ if val: value = val else: @@ -4889,75 +4912,91 @@ class TransformEditorTool(FlatCAMTool): return def on_scalex(self, sig=None, val=None): + """ + + :param sig: here we can get the value passed by the signal + :param val: the amount to scale on the X axis + :return: + """ if val: - xvalue = val + x_value = val else: try: - xvalue = float(self.scalex_entry.get_value()) + x_value = float(self.scalex_entry.get_value()) except ValueError: # try to convert comma to decimal point. if it's still not working error message and return try: - xvalue = float(self.scalex_entry.get_value().replace(',', '.')) + x_value = float(self.scalex_entry.get_value().replace(',', '.')) except ValueError: self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered for Scale X, " "use a number.")) return # scaling to zero has no sense so we remove it, because scaling with 1 does nothing - if xvalue == 0: - xvalue = 1 + if x_value == 0: + x_value = 1 if self.scale_link_cb.get_value(): - yvalue = xvalue + y_value = x_value else: - yvalue = 1 + y_value = 1 axis = 'X' point = (0, 0) if self.scale_zero_ref_cb.get_value(): self.app.worker_task.emit({'fcn': self.on_scale, - 'params': [axis, xvalue, yvalue, point]}) + 'params': [axis, x_value, y_value, point]}) # self.on_scale("X", xvalue, yvalue, point=(0,0)) else: # self.on_scale("X", xvalue, yvalue) self.app.worker_task.emit({'fcn': self.on_scale, - 'params': [axis, xvalue, yvalue]}) - - return + 'params': [axis, x_value, y_value]}) def on_scaley(self, sig=None, val=None): - xvalue = 1 + """ + + :param sig: here we can get the value passed by the signal + :param val: the amount to scale on the Y axis + :return: + """ + x_value = 1 if val: - yvalue = val + y_value = val else: try: - yvalue = float(self.scaley_entry.get_value()) + y_value = float(self.scaley_entry.get_value()) except ValueError: # try to convert comma to decimal point. if it's still not working error message and return try: - yvalue = float(self.scaley_entry.get_value().replace(',', '.')) + y_value = float(self.scaley_entry.get_value().replace(',', '.')) except ValueError: self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered for Scale Y, " "use a number.")) return # scaling to zero has no sense so we remove it, because scaling with 1 does nothing - if yvalue == 0: - yvalue = 1 + if y_value == 0: + y_value = 1 axis = 'Y' point = (0, 0) if self.scale_zero_ref_cb.get_value(): self.app.worker_task.emit({'fcn': self.on_scale, - 'params': [axis, xvalue, yvalue, point]}) + 'params': [axis, x_value, y_value, point]}) # self.on_scale("Y", xvalue, yvalue, point=(0,0)) else: # self.on_scale("Y", xvalue, yvalue) self.app.worker_task.emit({'fcn': self.on_scale, - 'params': [axis, xvalue, yvalue]}) + 'params': [axis, x_value, y_value]}) return def on_offx(self, sig=None, val=None): + """ + + :param sig: here we can get the value passed by the signal + :param val: the amount to offset on the X axis + :return: + """ if val: value = val else: @@ -4976,9 +5015,14 @@ class TransformEditorTool(FlatCAMTool): axis = 'X' self.app.worker_task.emit({'fcn': self.on_offset, 'params': [axis, value]}) - return def on_offy(self, sig=None, val=None): + """ + + :param sig: here we can get the value passed by the signal + :param val: the amount to offset on the Y axis + :return: + """ if val: value = val else: @@ -5000,6 +5044,11 @@ class TransformEditorTool(FlatCAMTool): return def on_rotate_action(self, num): + """ + + :param num: the angle by which to rotate + :return: + """ elem_list = self.draw_app.selected xminlist = [] yminlist = [] @@ -5048,6 +5097,11 @@ class TransformEditorTool(FlatCAMTool): return def on_flip(self, axis): + """ + + :param axis: axis to be used as reference for mirroring(flip) + :return: + """ elem_list = self.draw_app.selected xminlist = [] yminlist = [] @@ -5112,6 +5166,12 @@ class TransformEditorTool(FlatCAMTool): return def on_skew(self, axis, num): + """ + + :param axis: axis by which to do the skeweing + :param num: angle value for skew + :return: + """ elem_list = self.draw_app.selected xminlist = [] yminlist = [] @@ -5161,6 +5221,14 @@ class TransformEditorTool(FlatCAMTool): return def on_scale(self, axis, xfactor, yfactor, point=None): + """ + + :param axis: axis by which to scale + :param xfactor: the scale factor on X axis + :param yfactor: the scale factor on Y axis + :param point: point of reference for scaling + :return: + """ elem_list = self.draw_app.selected xminlist = [] yminlist = [] @@ -5214,6 +5282,12 @@ class TransformEditorTool(FlatCAMTool): return def on_offset(self, axis, num): + """ + + :param axis: axis to be used as reference for offset + :param num: the amount by which to do the offset + :return: + """ elem_list = self.draw_app.selected if not elem_list: @@ -5353,7 +5427,7 @@ def get_shapely_list_bounds(geometry_list): ymin = min([ymin, gymin]) xmax = max([xmax, gxmax]) ymax = max([ymax, gymax]) - except: - log.warning("DEVELOPMENT: Tried to get bounds of empty geometry.") + except Exception as e: + log.warning("DEVELOPMENT: Tried to get bounds of empty geometry. --> %s" % str(e)) - return [xmin, ymin, xmax, ymax] \ No newline at end of file + return [xmin, ymin, xmax, ymax] diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index 1222c2d0..690b9e20 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -3149,6 +3149,9 @@ class GerberPreferencesUI(QtWidgets.QWidget): self.gerber_exp_group.setFixedWidth(230) self.gerber_adv_opt_group = GerberAdvOptPrefGroupUI() self.gerber_adv_opt_group.setFixedWidth(200) + self.gerber_editor_group = GerberEditorPrefGroupUI() + self.gerber_editor_group.setFixedWidth(200) + self.vlay = QtWidgets.QVBoxLayout() self.vlay.addWidget(self.gerber_opt_group) @@ -3157,6 +3160,7 @@ class GerberPreferencesUI(QtWidgets.QWidget): self.layout.addWidget(self.gerber_gen_group) self.layout.addLayout(self.vlay) self.layout.addWidget(self.gerber_adv_opt_group) + self.layout.addWidget(self.gerber_editor_group) self.layout.addStretch() @@ -3201,10 +3205,13 @@ class GeometryPreferencesUI(QtWidgets.QWidget): self.geometry_opt_group.setFixedWidth(250) self.geometry_adv_opt_group = GeometryAdvOptPrefGroupUI() self.geometry_adv_opt_group.setFixedWidth(250) + self.geometry_editor_group = GeometryEditorPrefGroupUI() + self.geometry_editor_group.setFixedWidth(250) self.layout.addWidget(self.geometry_gen_group) self.layout.addWidget(self.geometry_opt_group) self.layout.addWidget(self.geometry_adv_opt_group) + self.layout.addWidget(self.geometry_editor_group) self.layout.addStretch() @@ -4187,28 +4194,28 @@ class GerberAdvOptPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.aperture_table_visibility_cb, 1, 0) # Scale Aperture Factor - self.scale_aperture_label = QtWidgets.QLabel(_('Ap. Scale Factor:')) - self.scale_aperture_label.setToolTip( - _("Change the size of the selected apertures.\n" - "Factor by which to multiply\n" - "geometric features of this object.") - ) - grid0.addWidget(self.scale_aperture_label, 2, 0) - - self.scale_aperture_entry = FloatEntry2() - grid0.addWidget(self.scale_aperture_entry, 2, 1) + # self.scale_aperture_label = QtWidgets.QLabel(_('Ap. Scale Factor:')) + # self.scale_aperture_label.setToolTip( + # _("Change the size of the selected apertures.\n" + # "Factor by which to multiply\n" + # "geometric features of this object.") + # ) + # grid0.addWidget(self.scale_aperture_label, 2, 0) + # + # self.scale_aperture_entry = FloatEntry2() + # grid0.addWidget(self.scale_aperture_entry, 2, 1) # Buffer Aperture Factor - self.buffer_aperture_label = QtWidgets.QLabel(_('Ap. Buffer Factor:')) - self.buffer_aperture_label.setToolTip( - _("Change the size of the selected apertures.\n" - "Factor by which to expand/shrink\n" - "geometric features of this object.") - ) - grid0.addWidget(self.buffer_aperture_label, 3, 0) - - self.buffer_aperture_entry = FloatEntry2() - grid0.addWidget(self.buffer_aperture_entry, 3, 1) + # self.buffer_aperture_label = QtWidgets.QLabel(_('Ap. Buffer Factor:')) + # self.buffer_aperture_label.setToolTip( + # _("Change the size of the selected apertures.\n" + # "Factor by which to expand/shrink\n" + # "geometric features of this object.") + # ) + # grid0.addWidget(self.buffer_aperture_label, 3, 0) + # + # self.buffer_aperture_entry = FloatEntry2() + # grid0.addWidget(self.buffer_aperture_entry, 3, 1) self.layout.addStretch() @@ -4307,6 +4314,40 @@ class GerberExpPrefGroupUI(OptionsGroupUI): self.layout.addStretch() +class GerberEditorPrefGroupUI(OptionsGroupUI): + def __init__(self, parent=None): + # OptionsGroupUI.__init__(self, "Gerber Adv. Options Preferences", parent=parent) + super(GerberEditorPrefGroupUI, self).__init__(self) + + self.setTitle(str(_("Gerber Editor"))) + + # Advanced Gerber Parameters + self.param_label = QtWidgets.QLabel(_("Parameters:")) + self.param_label.setToolTip( + _("A list of Gerber 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 Gerber 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) + + self.layout.addStretch() + + class ExcellonGenPrefGroupUI(OptionsGroupUI): def __init__(self, parent=None): @@ -5316,6 +5357,40 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI): self.layout.addStretch() +class GeometryEditorPrefGroupUI(OptionsGroupUI): + def __init__(self, parent=None): + # OptionsGroupUI.__init__(self, "Gerber Adv. Options Preferences", parent=parent) + super(GeometryEditorPrefGroupUI, self).__init__(self) + + self.setTitle(str(_("Geometry Editor"))) + + # Advanced Geometry Parameters + self.param_label = QtWidgets.QLabel(_("Parameters:")) + self.param_label.setToolTip( + _("A list of Geometry 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 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) + + self.layout.addStretch() + + class CNCJobGenPrefGroupUI(OptionsGroupUI): def __init__(self, parent=None): # OptionsGroupUI.__init__(self, "CNC Job General Preferences", parent=None) From e04db8ca12ebd3951bd0910916d4022cf81a0abd Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Mon, 20 May 2019 02:29:08 +0300 Subject: [PATCH 35/42] - set the buttons in the lower part of the Preferences Window to have a preferred minimum width instead of fixed width - updated the translation files --- README.md | 2 + flatcamGUI/FlatCAMGUI.py | 8 +- locale/de/LC_MESSAGES/strings.mo | Bin 293793 -> 301667 bytes locale/de/LC_MESSAGES/strings.po | 3766 +++++++++++++++-------------- locale/en/LC_MESSAGES/strings.mo | Bin 274041 -> 281307 bytes locale/en/LC_MESSAGES/strings.po | 3818 ++++++++++++++++-------------- locale/ro/LC_MESSAGES/strings.mo | Bin 292018 -> 300006 bytes locale/ro/LC_MESSAGES/strings.po | 3805 +++++++++++++++-------------- locale_template/strings.pot | 3645 ++++++++++++++-------------- 9 files changed, 8120 insertions(+), 6924 deletions(-) diff --git a/README.md b/README.md index accdf4d5..7471238f 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ CAD program, and create G-Code for Isolation routing. - PEP8 corrections in FlatCAMGrbEditor.py - added a selection limit parameter for Geometry Editor - added entries in Edit -> Preferences for the new parameter Selection limit for both the Gerber and Geometry Editors. +- set the buttons in the lower part of the Preferences Window to have a preferred minimum width instead of fixed width +- updated the translation files 18.05.2019 diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index 690b9e20..ce88653c 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -922,7 +922,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.pref_import_button = QtWidgets.QPushButton() self.pref_import_button.setText(_("Import Preferences")) - self.pref_import_button.setFixedWidth(130) + 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" @@ -932,7 +932,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.pref_export_button = QtWidgets.QPushButton() self.pref_export_button.setText(_("Export Preferences")) - self.pref_export_button.setFixedWidth(130) + 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.")) @@ -940,7 +940,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.pref_open_button = QtWidgets.QPushButton() self.pref_open_button.setText(_("Open Pref Folder")) - self.pref_open_button.setFixedWidth(130) + self.pref_open_button.setMinimumWidth(130) self.pref_open_button.setToolTip( _("Open the folder where FlatCAM save the preferences files.")) self.pref_tab_bottom_layout_1.addWidget(self.pref_open_button) @@ -951,7 +951,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.pref_save_button = QtWidgets.QPushButton() self.pref_save_button.setText(_("Save Preferences")) - self.pref_save_button.setFixedWidth(130) + 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.")) diff --git a/locale/de/LC_MESSAGES/strings.mo b/locale/de/LC_MESSAGES/strings.mo index 9957d90e0e106cd64d30d8d9e6ccd88708821fc5..7db1e63b6b6c916e634f9c81acc072f3619e59df 100644 GIT binary patch delta 44646 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

todQ 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 Q8^z?uQ_y}}L385&24Hw=egFUf delta 38940 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 BEWQ8$ diff --git a/locale/de/LC_MESSAGES/strings.po b/locale/de/LC_MESSAGES/strings.po index 476adc17..fe9b20ea 100644 --- a/locale/de/LC_MESSAGES/strings.po +++ b/locale/de/LC_MESSAGES/strings.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2019-05-01 16:02+0300\n" -"PO-Revision-Date: 2019-05-01 16:03+0300\n" +"POT-Creation-Date: 2019-05-20 02:17+0300\n" +"PO-Revision-Date: 2019-05-20 02:27+0300\n" "Last-Translator: \n" "Language-Team: \n" "Language: de\n" @@ -17,32 +17,32 @@ msgstr "" "X-Poedit-SearchPathExcluded-1: doc\n" "X-Poedit-SearchPathExcluded-2: tests\n" -#: FlatCAMApp.py:865 +#: FlatCAMApp.py:898 msgid "[ERROR] Could not find the Language files. The App strings are missing." msgstr "" "[ERROR] Die Sprachdateien konnten nicht gefunden werden. Die App-" "Zeichenfolgen fehlen." -#: FlatCAMApp.py:1921 ObjectCollection.py:80 flatcamTools/ToolImage.py:213 +#: FlatCAMApp.py:1962 ObjectCollection.py:80 flatcamTools/ToolImage.py:213 #: flatcamTools/ToolPcbWizard.py:299 flatcamTools/ToolPcbWizard.py:322 msgid "Open cancelled." msgstr "Geöffnet storniert." -#: FlatCAMApp.py:1935 +#: FlatCAMApp.py:1976 msgid "Open Config file failed." msgstr "Open Config-Datei ist fehlgeschlagen." -#: FlatCAMApp.py:1949 +#: FlatCAMApp.py:1990 msgid "Open Script file failed." msgstr "Open Script-Datei ist fehlgeschlagen." -#: FlatCAMApp.py:2140 +#: FlatCAMApp.py:2181 msgid "[WARNING_NOTCL] Select a Geometry, Gerber or Excellon Object to edit." msgstr "" "[WARNING_NOTCL] Wählen Sie ein zu bearbeitendes Geometrie-, Gerber- oder " "Excellon-Objekt aus." -#: FlatCAMApp.py:2150 +#: FlatCAMApp.py:2191 msgid "" "[WARNING_NOTCL] Simultanoeus editing of tools geometry in a MultiGeo " "Geometry is not possible.\n" @@ -52,98 +52,98 @@ msgstr "" "Multi-Geo-Geometrie ist nicht möglich.\n" "Bearbeiten Sie jeweils nur eine Geometrie." -#: FlatCAMApp.py:2188 +#: FlatCAMApp.py:2235 msgid "[WARNING_NOTCL] Editor is activated ..." msgstr "[WARNING_NOTCL] Editor ist aktiviert ..." -#: FlatCAMApp.py:2207 +#: FlatCAMApp.py:2254 msgid "Do you want to save the edited object?" msgstr "Möchten Sie das bearbeitete Objekt speichern?" -#: FlatCAMApp.py:2208 flatcamGUI/FlatCAMGUI.py:1604 +#: FlatCAMApp.py:2255 flatcamGUI/FlatCAMGUI.py:1618 msgid "Close Editor" msgstr "Editor schließen" -#: FlatCAMApp.py:2211 FlatCAMApp.py:3302 FlatCAMApp.py:5661 -#: FlatCAMTranslation.py:89 flatcamGUI/FlatCAMGUI.py:3698 +#: FlatCAMApp.py:2258 FlatCAMApp.py:3349 FlatCAMApp.py:5799 +#: FlatCAMTranslation.py:89 flatcamGUI/FlatCAMGUI.py:3726 msgid "Yes" msgstr "Ja" -#: FlatCAMApp.py:2212 FlatCAMApp.py:3303 FlatCAMApp.py:5662 -#: FlatCAMTranslation.py:90 flatcamGUI/FlatCAMGUI.py:3699 +#: FlatCAMApp.py:2259 FlatCAMApp.py:3350 FlatCAMApp.py:5800 +#: FlatCAMTranslation.py:90 flatcamGUI/FlatCAMGUI.py:3727 msgid "No" msgstr "Nein" -#: FlatCAMApp.py:2213 FlatCAMApp.py:3304 FlatCAMApp.py:3636 FlatCAMApp.py:5663 +#: FlatCAMApp.py:2260 FlatCAMApp.py:3351 FlatCAMApp.py:3683 FlatCAMApp.py:5801 msgid "Cancel" msgstr "Kündigen" -#: FlatCAMApp.py:2235 FlatCAMApp.py:2260 +#: FlatCAMApp.py:2287 msgid "[WARNING] Object empty after edit." msgstr "[WARNING] Das Objekt ist nach der Bearbeitung leer." -#: FlatCAMApp.py:2269 FlatCAMApp.py:2283 FlatCAMApp.py:2295 +#: FlatCAMApp.py:2309 FlatCAMApp.py:2328 FlatCAMApp.py:2340 msgid "[WARNING_NOTCL] Select a Gerber, Geometry or Excellon Object to update." msgstr "" "[WARNING_NOTCL] Wählen Sie ein Gerber-, Geometrie- oder Excellon-Objekt zum " "Aktualisieren aus." -#: FlatCAMApp.py:2272 +#: FlatCAMApp.py:2312 #, python-format msgid "[selected] %s is updated, returning to App..." msgstr "[selected] %s wird aktualisiert und kehrt zur App zurück ..." -#: FlatCAMApp.py:2632 +#: FlatCAMApp.py:2677 msgid "[ERROR] Could not load defaults file." msgstr "[ERROR] Standarddatei konnte nicht geladen werden." -#: FlatCAMApp.py:2644 +#: FlatCAMApp.py:2689 msgid "[ERROR] Failed to parse defaults file." msgstr "[ERROR] Fehler beim Parsen der Standarddatei." -#: FlatCAMApp.py:2665 FlatCAMApp.py:2668 +#: FlatCAMApp.py:2710 FlatCAMApp.py:2713 msgid "Import FlatCAM Preferences" msgstr "FlatCAM-Voreinstellungen importieren" -#: FlatCAMApp.py:2673 +#: FlatCAMApp.py:2718 msgid "[WARNING_NOTCL] FlatCAM preferences import cancelled." msgstr "[WARNING_NOTCL] Import der FlatCAM-Einstellungen wurde abgebrochen." -#: FlatCAMApp.py:2681 FlatCAMApp.py:2728 FlatCAMApp.py:3181 +#: FlatCAMApp.py:2726 FlatCAMApp.py:2773 FlatCAMApp.py:3228 msgid "[ERROR_NOTCL] Could not load defaults file." msgstr "[ERROR_NOTCL] Standarddatei konnte nicht geladen werden." -#: FlatCAMApp.py:2689 FlatCAMApp.py:3190 +#: FlatCAMApp.py:2734 FlatCAMApp.py:3237 msgid "[ERROR_NOTCL] Failed to parse defaults file." msgstr "[ERROR_NOTCL] Fehler beim Parsen der Standarddatei." -#: FlatCAMApp.py:2692 +#: FlatCAMApp.py:2737 #, python-format msgid "[success] Imported Defaults from %s" msgstr "[success] Importierte Standardwerte aus %s" -#: FlatCAMApp.py:2702 FlatCAMApp.py:2706 +#: FlatCAMApp.py:2747 FlatCAMApp.py:2751 msgid "Export FlatCAM Preferences" msgstr "FlatCAM-Voreinstellungen exportieren" -#: FlatCAMApp.py:2712 +#: FlatCAMApp.py:2757 msgid "[WARNING_NOTCL] FlatCAM preferences export cancelled." msgstr "[WARNING_NOTCL] Export der FlatCAM-Einstellungen wurde abgebrochen." -#: FlatCAMApp.py:2747 FlatCAMApp.py:3235 +#: FlatCAMApp.py:2792 FlatCAMApp.py:3282 msgid "[ERROR_NOTCL] Failed to write defaults to file." msgstr "[ERROR_NOTCL] Fehler beim Schreiben der Standardwerte in die Datei." -#: FlatCAMApp.py:2799 +#: FlatCAMApp.py:2845 msgid "[ERROR_NOTCL] Failed to open recent files file for writing." msgstr "" "[ERROR_NOTCL] Fehler beim Öffnen der zuletzt geöffneten Datei zum Schreiben." -#: FlatCAMApp.py:2884 camlib.py:4503 +#: FlatCAMApp.py:2930 camlib.py:4453 msgid "[ERROR_NOTCL] An internal error has ocurred. See shell.\n" msgstr "[ERROR_NOTCL] Ein interner Fehler ist aufgetreten. Siehe Shell.\n" -#: FlatCAMApp.py:2885 +#: FlatCAMApp.py:2931 #, python-brace-format msgid "" "Object ({kind}) failed because: {error} \n" @@ -152,11 +152,11 @@ msgstr "" "Objekt ({kind}) gescheitert weil: {error} \n" "\n" -#: FlatCAMApp.py:2905 +#: FlatCAMApp.py:2951 msgid "Converting units to " msgstr "Einheiten in umrechnen " -#: FlatCAMApp.py:2983 FlatCAMApp.py:2986 FlatCAMApp.py:2989 FlatCAMApp.py:2992 +#: FlatCAMApp.py:3030 FlatCAMApp.py:3033 FlatCAMApp.py:3036 FlatCAMApp.py:3039 #, python-brace-format msgid "" "[selected] {kind} created/selected: {name}{name}" "" -#: FlatCAMApp.py:3086 +#: FlatCAMApp.py:3133 #, 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:3239 +#: FlatCAMApp.py:3286 msgid "[success] Defaults saved." msgstr "[success] Standardeinstellungen gespeichert." -#: FlatCAMApp.py:3260 +#: FlatCAMApp.py:3307 msgid "[ERROR_NOTCL] Could not load factory defaults file." msgstr "[ERROR_NOTCL] Factory-Standarddatei konnte nicht geladen werden." -#: FlatCAMApp.py:3269 +#: FlatCAMApp.py:3316 msgid "[ERROR_NOTCL] Failed to parse factory defaults file." msgstr "[ERROR_NOTCL] Fehler beim Parsen der Werksvorgaben-Datei." -#: FlatCAMApp.py:3283 +#: FlatCAMApp.py:3330 msgid "[ERROR_NOTCL] Failed to write factory defaults to file." msgstr "" "[ERROR_NOTCL] Fehler beim Schreiben der Werkseinstellungen in die Datei." -#: FlatCAMApp.py:3287 +#: FlatCAMApp.py:3334 msgid "Factory defaults saved." msgstr "Werkseinstellungen gespeichert." -#: FlatCAMApp.py:3292 flatcamGUI/FlatCAMGUI.py:3088 +#: FlatCAMApp.py:3339 flatcamGUI/FlatCAMGUI.py:3103 msgid "[WARNING_NOTCL] Application is saving the project. Please wait ..." msgstr "[WARNING_NOTCL] Anwendung speichert das Projekt. Warten Sie mal ..." -#: FlatCAMApp.py:3297 +#: FlatCAMApp.py:3344 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:3300 FlatCAMApp.py:5659 +#: FlatCAMApp.py:3347 FlatCAMApp.py:5797 msgid "Save changes" msgstr "Änderungen speichern" -#: FlatCAMApp.py:3367 +#: FlatCAMApp.py:3414 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:3408 +#: FlatCAMApp.py:3455 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:3430 +#: FlatCAMApp.py:3477 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:3445 FlatCAMApp.py:3470 +#: FlatCAMApp.py:3492 FlatCAMApp.py:3517 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:3449 FlatCAMApp.py:3474 +#: FlatCAMApp.py:3496 FlatCAMApp.py:3521 #, python-format msgid "[ERROR_NOTCL] Expected a FlatCAMGeometry, got %s" msgstr "[ERROR_NOTCL] Erwartete eine FlatCAMGeometry, bekam % s" -#: FlatCAMApp.py:3462 +#: FlatCAMApp.py:3509 msgid "[success] A Geometry object was converted to MultiGeo type." msgstr "[success] Ein Geometrieobjekt wurde in den MultiGeo-Typ konvertiert." -#: FlatCAMApp.py:3488 +#: FlatCAMApp.py:3535 msgid "[success] A Geometry object was converted to SingleGeo type." msgstr "[success] Ein Geometrieobjekt wurde in den SingleGeo-Typ konvertiert." -#: FlatCAMApp.py:3635 FlatCAMApp.py:4444 FlatCAMApp.py:5926 FlatCAMApp.py:5937 -#: FlatCAMApp.py:6123 FlatCAMApp.py:6133 +#: FlatCAMApp.py:3682 FlatCAMApp.py:4495 FlatCAMApp.py:6064 FlatCAMApp.py:6075 +#: FlatCAMApp.py:6312 FlatCAMApp.py:6322 msgid "Ok" msgstr "Ok" -#: FlatCAMApp.py:3676 +#: FlatCAMApp.py:3724 #, python-format msgid "[success] Converted units to %s" msgstr "[success] Einheiten in umgerechnet %s" -#: FlatCAMApp.py:3687 +#: FlatCAMApp.py:3735 msgid "[WARNING_NOTCL] Units conversion cancelled." msgstr "[WARNING_NOTCL] Einheitenumrechnung abgebrochen." -#: FlatCAMApp.py:4313 +#: FlatCAMApp.py:4364 msgid "Open file" msgstr "Datei öffnen" -#: FlatCAMApp.py:4344 FlatCAMApp.py:4349 +#: FlatCAMApp.py:4395 FlatCAMApp.py:4400 msgid "Export G-Code ..." msgstr "G-Code exportieren ..." -#: FlatCAMApp.py:4352 +#: FlatCAMApp.py:4403 msgid "[WARNING_NOTCL] Export Code cancelled." msgstr "[WARNING_NOTCL] Exportcode wurde abgebrochen." -#: FlatCAMApp.py:4362 +#: FlatCAMApp.py:4413 msgid "[WARNING] No such file or directory" msgstr "[WARNING] Keine solche Datei oder Ordner" -#: FlatCAMApp.py:4369 +#: FlatCAMApp.py:4420 #, python-format msgid "Saved to: %s" msgstr "Gespeichert in: %s" -#: FlatCAMApp.py:4432 FlatCAMApp.py:4465 FlatCAMApp.py:4476 FlatCAMApp.py:4487 +#: FlatCAMApp.py:4483 FlatCAMApp.py:4516 FlatCAMApp.py:4527 FlatCAMApp.py:4538 #: 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:4437 FlatCAMApp.py:4470 FlatCAMApp.py:4481 FlatCAMApp.py:4492 -#: flatcamGUI/FlatCAMGUI.py:2983 +#: FlatCAMApp.py:4488 FlatCAMApp.py:4521 FlatCAMApp.py:4532 FlatCAMApp.py:4543 +#: flatcamGUI/FlatCAMGUI.py:2998 msgid "[WARNING_NOTCL] Adding Tool cancelled ..." msgstr "[WARNING_NOTCL] Addierwerkzeug abgebrochen ..." -#: FlatCAMApp.py:4440 +#: FlatCAMApp.py:4491 msgid "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." @@ -332,122 +332,131 @@ msgstr "" "ist.\n" "Gehen Sie zu Einstellungen -> Allgemein - Erweiterte Optionen anzeigen." -#: FlatCAMApp.py:4546 +#: FlatCAMApp.py:4604 msgid "Object(s) deleted ..." msgstr "Objekt (e) gelöscht ..." -#: FlatCAMApp.py:4550 +#: FlatCAMApp.py:4608 msgid "Failed. No object(s) selected..." msgstr "Gescheitert. Kein Objekt ausgewählt ..." -#: FlatCAMApp.py:4552 +#: FlatCAMApp.py:4610 msgid "Save the work in Editor and try again ..." msgstr "Speichern Sie die Arbeit im Editor und versuchen Sie es erneut ..." -#: FlatCAMApp.py:4565 +#: FlatCAMApp.py:4623 msgid "Click to set the origin ..." msgstr "Klicken Sie hier, um den Ursprung festzulegen ..." -#: FlatCAMApp.py:4577 +#: FlatCAMApp.py:4635 msgid "Jump to ..." msgstr "Springen zu ..." -#: FlatCAMApp.py:4578 +#: FlatCAMApp.py:4636 msgid "Enter the coordinates in format X,Y:" msgstr "Geben Sie die Koordinaten im Format X, Y ein:" -#: FlatCAMApp.py:4585 +#: FlatCAMApp.py:4643 msgid "Wrong coordinates. Enter coordinates in format: X,Y" msgstr "Falsche Koordinaten. Koordinaten im Format eingeben: X, Y" -#: FlatCAMApp.py:4603 flatcamEditors/FlatCAMGeoEditor.py:3485 -#: flatcamEditors/FlatCAMGrbEditor.py:790 -#: flatcamEditors/FlatCAMGrbEditor.py:885 -#: flatcamEditors/FlatCAMGrbEditor.py:1122 -#: flatcamEditors/FlatCAMGrbEditor.py:1350 -#: flatcamEditors/FlatCAMGrbEditor.py:3318 -#: flatcamEditors/FlatCAMGrbEditor.py:3332 flatcamGUI/FlatCAMGUI.py:2397 -#: flatcamGUI/FlatCAMGUI.py:2409 +#: FlatCAMApp.py:4661 flatcamEditors/FlatCAMExcEditor.py:2285 +#: flatcamEditors/FlatCAMExcEditor.py:2292 +#: flatcamEditors/FlatCAMGeoEditor.py:3555 +#: flatcamEditors/FlatCAMGeoEditor.py:3569 +#: flatcamEditors/FlatCAMGrbEditor.py:1037 +#: flatcamEditors/FlatCAMGrbEditor.py:1138 +#: flatcamEditors/FlatCAMGrbEditor.py:1399 +#: flatcamEditors/FlatCAMGrbEditor.py:1649 +#: flatcamEditors/FlatCAMGrbEditor.py:3784 +#: flatcamEditors/FlatCAMGrbEditor.py:3798 flatcamGUI/FlatCAMGUI.py:2412 +#: flatcamGUI/FlatCAMGUI.py:2424 msgid "[success] Done." msgstr "[success] Erledigt." -#: FlatCAMApp.py:4767 +#: FlatCAMApp.py:4794 FlatCAMApp.py:4863 +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 msgid "[success] Origin set ..." msgstr "[success] Ursprung gesetzt ..." -#: FlatCAMApp.py:4786 +#: FlatCAMApp.py:4924 msgid "Preferences" msgstr "Einstellungen" -#: FlatCAMApp.py:4806 +#: FlatCAMApp.py:4944 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:4831 +#: FlatCAMApp.py:4969 msgid "[success] Flip on Y axis done." msgstr "[success] Y-Achse umdrehen fertig." -#: FlatCAMApp.py:4833 FlatCAMApp.py:4873 -#: flatcamEditors/FlatCAMGeoEditor.py:1354 -#: flatcamEditors/FlatCAMGrbEditor.py:4631 flatcamTools/ToolTransform.py:750 +#: FlatCAMApp.py:4971 FlatCAMApp.py:5011 +#: flatcamEditors/FlatCAMGeoEditor.py:1356 +#: flatcamEditors/FlatCAMGrbEditor.py:5165 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:4846 +#: FlatCAMApp.py:4984 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:4871 +#: FlatCAMApp.py:5009 msgid "[success] Flip on X axis done." msgstr "[success] Dreh auf der X-Achse fertig." -#: FlatCAMApp.py:4886 +#: FlatCAMApp.py:5024 msgid "[WARNING_NOTCL] No object selected to Rotate." msgstr "[WARNING_NOTCL] Kein Objekt zum Drehen ausgewählt." -#: FlatCAMApp.py:4889 FlatCAMApp.py:4934 FlatCAMApp.py:4965 +#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 msgid "Transform" msgstr "Verwandeln" -#: FlatCAMApp.py:4889 FlatCAMApp.py:4934 FlatCAMApp.py:4965 +#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 msgid "Enter the Angle value:" msgstr "Geben Sie den Winkelwert ein:" -#: FlatCAMApp.py:4919 +#: FlatCAMApp.py:5057 msgid "[success] Rotation done." msgstr "[success] Rotation erfolgt." -#: FlatCAMApp.py:4921 flatcamEditors/FlatCAMGeoEditor.py:1297 -#: flatcamEditors/FlatCAMGrbEditor.py:4574 flatcamTools/ToolTransform.py:678 +#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:1299 +#: flatcamEditors/FlatCAMGrbEditor.py:5096 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:4932 +#: FlatCAMApp.py:5070 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:4953 +#: FlatCAMApp.py:5091 msgid "[success] Skew on X axis done." msgstr "[success] Neigung auf der X-Achse fertig." -#: FlatCAMApp.py:4963 +#: FlatCAMApp.py:5101 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:4984 +#: FlatCAMApp.py:5122 msgid "[success] Skew on Y axis done." msgstr "[success] Neigung auf der Y-Achse fertig." -#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:936 -#: flatcamEditors/FlatCAMGrbEditor.py:1830 -#: flatcamEditors/FlatCAMGrbEditor.py:4204 flatcamGUI/ObjectUI.py:988 +#: FlatCAMApp.py:5197 flatcamEditors/FlatCAMGeoEditor.py:938 +#: flatcamEditors/FlatCAMGrbEditor.py:2223 +#: flatcamEditors/FlatCAMGrbEditor.py:4687 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 @@ -455,24 +464,24 @@ msgstr "[success] Neigung auf der Y-Achse fertig." msgid "Add" msgstr "Hinzufügen" -#: FlatCAMApp.py:5060 FlatCAMObj.py:3008 -#: flatcamEditors/FlatCAMGrbEditor.py:1835 flatcamGUI/FlatCAMGUI.py:519 -#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1602 -#: flatcamGUI/FlatCAMGUI.py:1934 flatcamGUI/ObjectUI.py:1004 +#: FlatCAMApp.py:5198 FlatCAMObj.py:3302 +#: flatcamEditors/FlatCAMGrbEditor.py:2228 flatcamGUI/FlatCAMGUI.py:532 +#: flatcamGUI/FlatCAMGUI.py:726 flatcamGUI/FlatCAMGUI.py:1616 +#: flatcamGUI/FlatCAMGUI.py:1948 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:5072 +#: FlatCAMApp.py:5210 msgid "New Grid ..." msgstr "Neues Raster ..." -#: FlatCAMApp.py:5073 +#: FlatCAMApp.py:5211 msgid "Enter a Grid Value:" msgstr "Geben Sie einen Rasterwert ein:" -#: FlatCAMApp.py:5081 FlatCAMApp.py:5108 +#: FlatCAMApp.py:5219 FlatCAMApp.py:5246 msgid "" "[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float " "format." @@ -480,48 +489,48 @@ msgstr "" "[WARNING_NOTCL] Bitte geben Sie im Float-Format einen Rasterwert mit einem " "Wert ungleich Null ein." -#: FlatCAMApp.py:5087 +#: FlatCAMApp.py:5225 msgid "[success] New Grid added ..." msgstr "[success] Neues Netz hinzugefügt ..." -#: FlatCAMApp.py:5090 +#: FlatCAMApp.py:5228 msgid "[WARNING_NOTCL] Grid already exists ..." msgstr "[WARNING_NOTCL] Netz existiert bereits ..." -#: FlatCAMApp.py:5093 +#: FlatCAMApp.py:5231 msgid "[WARNING_NOTCL] Adding New Grid cancelled ..." msgstr "[WARNING_NOTCL] Neues Netz wurde abgebrochen ..." -#: FlatCAMApp.py:5115 +#: FlatCAMApp.py:5253 msgid "[ERROR_NOTCL] Grid Value does not exist ..." msgstr "[ERROR_NOTCL] Rasterwert existiert nicht ..." -#: FlatCAMApp.py:5118 +#: FlatCAMApp.py:5256 msgid "[success] Grid Value deleted ..." msgstr "[success] Rasterwert gelöscht ..." -#: FlatCAMApp.py:5121 +#: FlatCAMApp.py:5259 msgid "[WARNING_NOTCL] Delete Grid value cancelled ..." msgstr "[WARNING_NOTCL] Rasterwert löschen abgebrochen ..." -#: FlatCAMApp.py:5160 +#: FlatCAMApp.py:5298 msgid "[WARNING_NOTCL] No object selected to copy it's name" msgstr "[WARNING_NOTCL] Kein Objekt zum Kopieren des Namens ausgewählt" -#: FlatCAMApp.py:5164 +#: FlatCAMApp.py:5302 msgid "Name copied on clipboard ..." msgstr "Name in Zwischenablage kopiert ..." -#: FlatCAMApp.py:5457 FlatCAMApp.py:5460 FlatCAMApp.py:5463 FlatCAMApp.py:5466 -#: FlatCAMApp.py:5481 FlatCAMApp.py:5484 FlatCAMApp.py:5487 FlatCAMApp.py:5490 -#: FlatCAMApp.py:5530 FlatCAMApp.py:5533 FlatCAMApp.py:5536 FlatCAMApp.py:5539 +#: 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 #: 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:5656 +#: FlatCAMApp.py:5794 msgid "" "There are files/objects opened in FlatCAM.\n" "Creating a New project will delete them.\n" @@ -531,112 +540,112 @@ msgstr "" "Wenn Sie ein neues Projekt erstellen, werden diese gelöscht.\n" "Möchten Sie das Projekt speichern?" -#: FlatCAMApp.py:5677 +#: FlatCAMApp.py:5815 msgid "[success] New Project created..." msgstr "[success] Neues Projekt erstellt ..." -#: FlatCAMApp.py:5785 FlatCAMApp.py:5788 flatcamGUI/FlatCAMGUI.py:600 -#: flatcamGUI/FlatCAMGUI.py:1817 +#: FlatCAMApp.py:5923 FlatCAMApp.py:5926 flatcamGUI/FlatCAMGUI.py:613 +#: flatcamGUI/FlatCAMGUI.py:1831 msgid "Open Gerber" msgstr "Gerber öffnen" -#: FlatCAMApp.py:5793 +#: FlatCAMApp.py:5931 msgid "[WARNING_NOTCL] Open Gerber cancelled." msgstr "[WARNING_NOTCL] Offener Gerber abgebrochen." -#: FlatCAMApp.py:5814 FlatCAMApp.py:5817 flatcamGUI/FlatCAMGUI.py:601 -#: flatcamGUI/FlatCAMGUI.py:1818 +#: FlatCAMApp.py:5952 FlatCAMApp.py:5955 flatcamGUI/FlatCAMGUI.py:614 +#: flatcamGUI/FlatCAMGUI.py:1832 msgid "Open Excellon" msgstr "Excellon öffnen" -#: FlatCAMApp.py:5822 +#: FlatCAMApp.py:5960 msgid "[WARNING_NOTCL] Open Excellon cancelled." msgstr "[WARNING_NOTCL] Offener Excellon abgebrochen." -#: FlatCAMApp.py:5844 FlatCAMApp.py:5847 +#: FlatCAMApp.py:5982 FlatCAMApp.py:5985 msgid "Open G-Code" msgstr "G-Code öffnen" -#: FlatCAMApp.py:5852 +#: FlatCAMApp.py:5990 msgid "[WARNING_NOTCL] Open G-Code cancelled." msgstr "[WARNING_NOTCL] Geöffneter G-Code wurde abgebrochen." -#: FlatCAMApp.py:5870 FlatCAMApp.py:5873 +#: FlatCAMApp.py:6008 FlatCAMApp.py:6011 msgid "Open Project" msgstr "Offenes Projekt" -#: FlatCAMApp.py:5881 +#: FlatCAMApp.py:6019 msgid "[WARNING_NOTCL] Open Project cancelled." msgstr "[WARNING_NOTCL] Projekt abbrechen abgebrochen." -#: FlatCAMApp.py:5900 FlatCAMApp.py:5903 +#: FlatCAMApp.py:6038 FlatCAMApp.py:6041 msgid "Open Configuration File" msgstr "Offene Einstellungsdatei" -#: FlatCAMApp.py:5907 +#: FlatCAMApp.py:6045 msgid "[WARNING_NOTCL Open Config cancelled." msgstr "[WARNING_NOTCL] Open Config abgesagt." -#: FlatCAMApp.py:5922 FlatCAMApp.py:6119 FlatCAMApp.py:8206 FlatCAMApp.py:8226 -#: FlatCAMApp.py:8247 FlatCAMApp.py:8269 +#: FlatCAMApp.py:6060 FlatCAMApp.py:6308 FlatCAMApp.py:8519 FlatCAMApp.py:8539 +#: FlatCAMApp.py:8560 FlatCAMApp.py:8582 msgid "[WARNING_NOTCL] No object selected." msgstr "[WARNING_NOTCL] Kein Objekt ausgewählt" -#: FlatCAMApp.py:5923 FlatCAMApp.py:6120 +#: FlatCAMApp.py:6061 FlatCAMApp.py:6309 msgid "Please Select a Geometry object to export" msgstr "Bitte wählen Sie ein Geometrieobjekt zum Exportieren aus" -#: FlatCAMApp.py:5934 +#: FlatCAMApp.py:6072 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:5947 FlatCAMApp.py:5951 +#: FlatCAMApp.py:6085 FlatCAMApp.py:6089 msgid "Export SVG" msgstr "SVG exportieren" -#: FlatCAMApp.py:5956 +#: FlatCAMApp.py:6094 msgid "[WARNING_NOTCL] Export SVG cancelled." msgstr "[WARNING_NOTCL] Export SVG abgebrochen." -#: FlatCAMApp.py:5970 +#: FlatCAMApp.py:6110 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:5976 FlatCAMApp.py:5980 +#: FlatCAMApp.py:6116 FlatCAMApp.py:6120 msgid "Export PNG Image" msgstr "PNG-Bild exportieren" -#: FlatCAMApp.py:5985 +#: FlatCAMApp.py:6125 msgid "Export PNG cancelled." msgstr "Export PNG abgebrochen." -#: FlatCAMApp.py:6002 +#: FlatCAMApp.py:6144 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:6007 +#: FlatCAMApp.py:6149 FlatCAMApp.py:6272 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:6019 +#: FlatCAMApp.py:6161 msgid "Save Gerber source file" msgstr "Gerber-Quelldatei speichern" -#: FlatCAMApp.py:6024 +#: FlatCAMApp.py:6166 msgid "[WARNING_NOTCL] Save Gerber source file cancelled." msgstr "[WARNING_NOTCL] Gerber Quelldatei speichern abgebrochen." -#: FlatCAMApp.py:6041 +#: FlatCAMApp.py:6185 msgid "" "[WARNING_NOTCL] No object selected. Please select an Excellon object to " "export." @@ -644,22 +653,22 @@ msgstr "" "[WARNING_NOTCL] Kein Objekt ausgewählt Bitte wählen Sie ein Excellon-Objekt " "zum Exportieren aus." -#: FlatCAMApp.py:6046 FlatCAMApp.py:6085 +#: FlatCAMApp.py:6190 FlatCAMApp.py:6231 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:6054 FlatCAMApp.py:6058 +#: FlatCAMApp.py:6198 FlatCAMApp.py:6202 msgid "Save Excellon source file" msgstr "Speichern Sie die Excellon-Quelldatei" -#: FlatCAMApp.py:6063 +#: FlatCAMApp.py:6207 msgid "[WARNING_NOTCL] Saving Excellon source file cancelled." msgstr "[WARNING_NOTCL] Speichern der Excellon-Quelldatei abgebrochen." -#: FlatCAMApp.py:6080 +#: FlatCAMApp.py:6226 msgid "" "[WARNING_NOTCL] No object selected. Please Select an Excellon object to " "export." @@ -667,55 +676,70 @@ msgstr "" "[WARNING_NOTCL] Kein Objekt ausgewählt. Bitte wählen Sie ein Excellon-Objekt " "aus, das Sie exportieren möchten." -#: FlatCAMApp.py:6093 FlatCAMApp.py:6097 +#: FlatCAMApp.py:6239 FlatCAMApp.py:6243 msgid "Export Excellon" msgstr "Excellon exportieren" -#: FlatCAMApp.py:6102 +#: FlatCAMApp.py:6248 msgid "[WARNING_NOTCL] Export Excellon cancelled." msgstr "[WARNING_NOTCL] Export Excellon wurde abgebrochen." -#: FlatCAMApp.py:6130 +#: FlatCAMApp.py:6267 +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 +msgid "Export Gerber" +msgstr "Gerber exportieren" + +#: FlatCAMApp.py:6289 +msgid "[WARNING_NOTCL] Export Gerber cancelled." +msgstr "[WARNING_NOTCL] Export Gerber abgebrochen." + +#: FlatCAMApp.py:6319 msgid "[ERROR_NOTCL] Only Geometry objects can be used." msgstr "[ERROR_NOTCL] Es können nur Geometrieobjekte verwendet werden." -#: FlatCAMApp.py:6144 FlatCAMApp.py:6148 +#: FlatCAMApp.py:6333 FlatCAMApp.py:6337 msgid "Export DXF" msgstr "DXF exportieren" -#: FlatCAMApp.py:6153 +#: FlatCAMApp.py:6342 msgid "[WARNING_NOTCL] Export DXF cancelled." msgstr "[WARNING_NOTCL] Export DXF wurde abgebrochen." -#: FlatCAMApp.py:6171 FlatCAMApp.py:6174 +#: FlatCAMApp.py:6362 FlatCAMApp.py:6365 msgid "Import SVG" msgstr "SVG importieren" -#: FlatCAMApp.py:6182 +#: FlatCAMApp.py:6373 msgid "[WARNING_NOTCL] Open SVG cancelled." msgstr "[WARNING_NOTCL] Open SVG abgebrochen." -#: FlatCAMApp.py:6201 FlatCAMApp.py:6204 +#: FlatCAMApp.py:6392 FlatCAMApp.py:6395 msgid "Import DXF" msgstr "Importieren Sie DXF" -#: FlatCAMApp.py:6212 +#: FlatCAMApp.py:6403 msgid "[WARNING_NOTCL] Open DXF cancelled." msgstr "[WARNING_NOTCL] Open DXF cancelled." -#: FlatCAMApp.py:6230 +#: FlatCAMApp.py:6421 #, python-format msgid "%s" msgstr "%s" -#: FlatCAMApp.py:6250 +#: FlatCAMApp.py:6441 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:6257 +#: FlatCAMApp.py:6448 msgid "" "[WARNING_NOTCL] There is no selected object for which to see it's source " "file code." @@ -723,24 +747,24 @@ msgstr "" "[WARNING_NOTCL] Es gibt kein ausgewähltes Objekt, für das man seinen " "Quelldateien sehen kann." -#: FlatCAMApp.py:6265 +#: FlatCAMApp.py:6456 msgid "Source Editor" msgstr "Quelleditor" -#: FlatCAMApp.py:6275 +#: FlatCAMApp.py:6466 #, python-format msgid "[ERROR]App.on_view_source() -->%s" msgstr "[ERROR]App.on_view_source() -->%s" -#: FlatCAMApp.py:6287 FlatCAMApp.py:7308 FlatCAMObj.py:5266 +#: FlatCAMApp.py:6478 FlatCAMApp.py:7621 FlatCAMObj.py:5573 msgid "Code Editor" msgstr "Code-Editor" -#: FlatCAMApp.py:6299 +#: FlatCAMApp.py:6490 msgid "Script Editor" msgstr "Script Editor" -#: FlatCAMApp.py:6302 +#: FlatCAMApp.py:6493 msgid "" "#\n" "# CREATE A NEW FLATCAM TCL SCRIPT\n" @@ -784,85 +808,98 @@ msgstr "" "#\n" "\n" -#: FlatCAMApp.py:6325 FlatCAMApp.py:6328 +#: FlatCAMApp.py:6516 FlatCAMApp.py:6519 msgid "Open TCL script" msgstr "Öffnen Sie das TCL-Skript" -#: FlatCAMApp.py:6336 +#: FlatCAMApp.py:6527 msgid "[WARNING_NOTCL] Open TCL script cancelled." msgstr "[WARNING_NOTCL] Open TCL-Skript wurde abgebrochen." -#: FlatCAMApp.py:6348 +#: FlatCAMApp.py:6539 #, python-format msgid "[ERROR]App.on_fileopenscript() -->%s" msgstr "[ERROR]App.on_fileopenscript() -->%s" -#: FlatCAMApp.py:6374 FlatCAMApp.py:6377 +#: FlatCAMApp.py:6565 FlatCAMApp.py:6568 msgid "Run TCL script" msgstr "Führen Sie das TCL-Skript aus" -#: FlatCAMApp.py:6385 +#: FlatCAMApp.py:6576 msgid "[WARNING_NOTCL] Run TCL script cancelled." msgstr "[WARNING_NOTCL] Das TCL-Skript wird abgebrochen." -#: FlatCAMApp.py:6431 FlatCAMApp.py:6435 +#: FlatCAMApp.py:6622 FlatCAMApp.py:6626 msgid "Save Project As ..." msgstr "Projekt speichern als ..." -#: FlatCAMApp.py:6432 +#: FlatCAMApp.py:6623 #, python-brace-format msgid "{l_save}/Project_{date}" msgstr "{l_save}/Projekt_{date}" -#: FlatCAMApp.py:6440 +#: FlatCAMApp.py:6631 msgid "[WARNING_NOTCL] Save Project cancelled." msgstr "[WARNING_NOTCL] Projekt speichern abgebrochen" -#: FlatCAMApp.py:6485 +#: FlatCAMApp.py:6676 msgid "Exporting SVG" msgstr "SVG exportieren" -#: FlatCAMApp.py:6518 FlatCAMApp.py:6623 FlatCAMApp.py:6737 +#: FlatCAMApp.py:6710 FlatCAMApp.py:6816 FlatCAMApp.py:6931 #, python-format msgid "[success] SVG file exported to %s" msgstr "[success] SVG-Datei in exportiert %s" -#: FlatCAMApp.py:6549 FlatCAMApp.py:6669 +#: FlatCAMApp.py:6741 FlatCAMApp.py:6862 #, python-format msgid "[WARNING_NOTCL] No object Box. Using instead %s" msgstr "[WARNING_NOTCL] Kein Objektfeld. Stattdessen verwenden %s" -#: FlatCAMApp.py:6626 FlatCAMApp.py:6740 +#: FlatCAMApp.py:6819 FlatCAMApp.py:6934 msgid "Generating Film ... Please wait." msgstr "Film wird erstellt ... Bitte warten Sie." -#: FlatCAMApp.py:6887 +#: FlatCAMApp.py:7082 #, python-format msgid "[success] Excellon file exported to %s" msgstr "[success] Excellon-Datei nach exportiert %s" -#: FlatCAMApp.py:6894 +#: FlatCAMApp.py:7089 msgid "Exporting Excellon" msgstr "Excellon exportieren" -#: FlatCAMApp.py:6899 FlatCAMApp.py:6906 +#: FlatCAMApp.py:7094 FlatCAMApp.py:7101 msgid "[ERROR_NOTCL] Could not export Excellon file." msgstr "[ERROR_NOTCL] Excellon-Datei konnte nicht exportiert werden." -#: FlatCAMApp.py:6945 +#: FlatCAMApp.py:7199 +#, python-format +msgid "[success] Gerber file exported to %s" +msgstr "[success] Gerber-Datei in exportiert %s" + +#: FlatCAMApp.py:7206 +msgid "Exporting Gerber" +msgstr "Gerber exportieren" + +#: FlatCAMApp.py:7211 FlatCAMApp.py:7218 +msgid "[ERROR_NOTCL] Could not export Gerber file." +msgstr "[ERROR_NOTCL] Gerber-Datei konnte nicht exportiert werden." + +#: FlatCAMApp.py:7258 #, python-format msgid "[success] DXF file exported to %s" msgstr "[success] DXF-Datei in exportiert %s" -#: FlatCAMApp.py:6951 +#: FlatCAMApp.py:7264 msgid "Exporting DXF" msgstr "DXF exportieren" -#: FlatCAMApp.py:6956 FlatCAMApp.py:6963 +#: FlatCAMApp.py:7269 FlatCAMApp.py:7276 msgid "[[WARNING_NOTCL]] Could not export DXF file." msgstr "[WARNING_NOTCL] DXF-Datei konnte nicht exportiert werden." -#: FlatCAMApp.py:6983 FlatCAMApp.py:7025 FlatCAMApp.py:7066 +#: FlatCAMApp.py:7296 FlatCAMApp.py:7338 FlatCAMApp.py:7379 msgid "" "[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and " "Gerber are supported" @@ -870,100 +907,99 @@ msgstr "" "[ERROR_NOTCL] Nicht unterstützte Art wird als Parameter ausgewählt. Nur " "Geometrie und Gerber werden unterstützt" -#: FlatCAMApp.py:6993 +#: FlatCAMApp.py:7306 msgid "Importing SVG" msgstr "SVG importieren" -#: FlatCAMApp.py:7004 FlatCAMApp.py:7046 FlatCAMApp.py:7086 FlatCAMApp.py:7162 -#: FlatCAMApp.py:7229 FlatCAMApp.py:7294 flatcamTools/ToolPDF.py:212 +#: FlatCAMApp.py:7317 FlatCAMApp.py:7359 FlatCAMApp.py:7399 FlatCAMApp.py:7475 +#: FlatCAMApp.py:7542 FlatCAMApp.py:7607 flatcamTools/ToolPDF.py:212 #, python-format msgid "[success] Opened: %s" msgstr "[success] Geöffnet: %s" -#: FlatCAMApp.py:7035 +#: FlatCAMApp.py:7348 msgid "Importing DXF" msgstr "DXF importieren" -#: FlatCAMApp.py:7074 +#: FlatCAMApp.py:7387 msgid "Importing Image" msgstr "Bild importieren" -#: FlatCAMApp.py:7115 FlatCAMApp.py:7117 +#: FlatCAMApp.py:7428 FlatCAMApp.py:7430 #, python-format msgid "[ERROR_NOTCL] Failed to open file: %s" msgstr "[ERROR_NOTCL] Datei konnte nicht geöffnet werden: %s" -#: FlatCAMApp.py:7120 +#: FlatCAMApp.py:7433 #, python-brace-format msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}" msgstr "[ERROR_NOTCL] Fehler beim Parsen der Datei: {name}. {error}" -#: FlatCAMApp.py:7126 FlatCAMObj.py:3970 -#: flatcamEditors/FlatCAMExcEditor.py:2035 -#: flatcamEditors/FlatCAMGrbEditor.py:3098 +#: FlatCAMApp.py:7439 FlatCAMObj.py:4271 +#: flatcamEditors/FlatCAMExcEditor.py:2041 msgid "[ERROR] An internal error has ocurred. See shell.\n" msgstr "[ERROR] Ein interner Fehler ist aufgetreten. Siehe Shell.\n" -#: FlatCAMApp.py:7135 +#: FlatCAMApp.py:7448 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:7143 +#: FlatCAMApp.py:7456 msgid "Opening Gerber" msgstr "Gerber öffnen" -#: FlatCAMApp.py:7153 +#: FlatCAMApp.py:7466 msgid "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file." msgstr "" "[ERROR_NOTCL] Gerber öffnen ist fehlgeschlagen. Wahrscheinlich keine Gerber-" "Datei." -#: FlatCAMApp.py:7188 flatcamTools/ToolPcbWizard.py:421 +#: FlatCAMApp.py:7501 flatcamTools/ToolPcbWizard.py:421 msgid "[ERROR_NOTCL] This is not Excellon file." msgstr "[ERROR_NOTCL] Dies ist keine Excellon-Datei." -#: FlatCAMApp.py:7191 +#: FlatCAMApp.py:7504 #, python-format msgid "[ERROR_NOTCL] Cannot open file: %s" msgstr "[ERROR_NOTCL] Kann Datei nicht öffnen: %s" -#: FlatCAMApp.py:7196 flatcamTools/ToolPcbWizard.py:429 +#: FlatCAMApp.py:7509 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:7212 flatcamTools/ToolPDF.py:261 +#: FlatCAMApp.py:7525 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:7215 +#: FlatCAMApp.py:7528 msgid "Opening Excellon." msgstr "Eröffnung Excellon." -#: FlatCAMApp.py:7222 +#: FlatCAMApp.py:7535 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:7261 +#: FlatCAMApp.py:7574 #, python-format msgid "[ERROR_NOTCL] Failed to open %s" msgstr "[ERROR_NOTCL] Gescheitert zu öffnen %s" -#: FlatCAMApp.py:7271 +#: FlatCAMApp.py:7584 msgid "[ERROR_NOTCL] This is not GCODE" msgstr "[ERROR_NOTCL] Dies ist kein GCODE" -#: FlatCAMApp.py:7277 +#: FlatCAMApp.py:7590 msgid "Opening G-Code." msgstr "G-Code öffnen." -#: FlatCAMApp.py:7285 +#: FlatCAMApp.py:7598 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 " @@ -974,26 +1010,26 @@ msgstr "" "Der Versuch, ein FlatCAM-CNCJob-Objekt aus einer G-Code-Datei zu erstellen, " "ist während der Verarbeitung fehlgeschlagen" -#: FlatCAMApp.py:7325 +#: FlatCAMApp.py:7638 #, python-format msgid "[ERROR_NOTCL] Failed to open config file: %s" msgstr "[ERROR_NOTCL] Fehler beim Öffnen der Konfigurationsdatei: %s" -#: FlatCAMApp.py:7350 FlatCAMApp.py:7366 +#: FlatCAMApp.py:7663 FlatCAMApp.py:7679 #, python-format msgid "[ERROR_NOTCL] Failed to open project file: %s" msgstr "[ERROR_NOTCL] Projektdatei konnte nicht geöffnet werden: %s" -#: FlatCAMApp.py:7392 +#: FlatCAMApp.py:7705 #, python-format msgid "[success] Project loaded from: %s" msgstr "[success] Projekt geladen von: %s" -#: FlatCAMApp.py:7522 +#: FlatCAMApp.py:7835 msgid "Available commands:\n" msgstr "Verfügbare Befehle:\n" -#: FlatCAMApp.py:7524 +#: FlatCAMApp.py:7837 msgid "" "\n" "\n" @@ -1005,24 +1041,24 @@ msgstr "" "Geben Sie help für die Verwendung ein.\n" "Beispiel: help open_gerber" -#: FlatCAMApp.py:7672 +#: FlatCAMApp.py:7985 msgid "Shows list of commands." msgstr "Zeigt eine Liste von Befehlen an." -#: FlatCAMApp.py:7729 +#: FlatCAMApp.py:8042 msgid "[ERROR_NOTCL] Failed to load recent item list." msgstr "[ERROR_NOTCL] Fehler beim Laden der letzten Elementliste." -#: FlatCAMApp.py:7736 +#: FlatCAMApp.py:8049 msgid "[ERROR_NOTCL] Failed to parse recent item list." msgstr "" "[ERROR_NOTCL] Liste der letzten Artikel konnte nicht analysiert werden." -#: FlatCAMApp.py:7797 flatcamGUI/FlatCAMGUI.py:957 +#: FlatCAMApp.py:8110 flatcamGUI/FlatCAMGUI.py:970 msgid "Shortcut Key List" msgstr " Liste der Tastenkombinationen " -#: FlatCAMApp.py:7804 +#: FlatCAMApp.py:8117 msgid "" "\n" "

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

" -#: FlatCAMApp.py:7908 +#: FlatCAMApp.py:8221 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:7915 +#: FlatCAMApp.py:8228 msgid "[ERROR_NOTCL] Could not parse information about latest version." msgstr "" "[ERROR_NOTCL] Informationen zur neuesten Version konnten nicht analysiert " "werden." -#: FlatCAMApp.py:7925 +#: FlatCAMApp.py:8238 msgid "[success] FlatCAM is up to date!" msgstr "[success] FlatCAM ist auf dem neuesten Version!" -#: FlatCAMApp.py:7930 +#: FlatCAMApp.py:8243 msgid "Newer Version Available" msgstr "Neuere Version verfügbar" -#: FlatCAMApp.py:7931 +#: FlatCAMApp.py:8244 msgid "" "There is a newer version of FlatCAM available for download:\n" "\n" @@ -1150,85 +1186,85 @@ msgstr "" "Es gibt eine neuere Version von FlatCAM zum Download:\n" "\n" -#: FlatCAMApp.py:7933 +#: FlatCAMApp.py:8246 msgid "info" msgstr "Info" -#: FlatCAMApp.py:7952 +#: FlatCAMApp.py:8265 msgid "[success] All plots disabled." msgstr "[success] Alle Diagramme sind deaktiviert." -#: FlatCAMApp.py:7958 +#: FlatCAMApp.py:8271 msgid "[success] All non selected plots disabled." msgstr "[success] Alle nicht ausgewählten Diagramme sind deaktiviert." -#: FlatCAMApp.py:7964 +#: FlatCAMApp.py:8277 msgid "[success] All plots enabled." msgstr "[success] Alle Diagramme aktiviert." -#: FlatCAMApp.py:8075 +#: FlatCAMApp.py:8388 msgid "Saving FlatCAM Project" msgstr "FlatCAM-Projekt speichern" -#: FlatCAMApp.py:8096 FlatCAMApp.py:8127 +#: FlatCAMApp.py:8409 FlatCAMApp.py:8440 #, python-format msgid "[success] Project saved to: %s" msgstr "[success] Projekt gespeichert in: %s" -#: FlatCAMApp.py:8114 +#: FlatCAMApp.py:8427 #, 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:8121 +#: FlatCAMApp.py:8434 #, 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:8129 +#: FlatCAMApp.py:8442 #, 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:195 +#: FlatCAMObj.py:201 #, python-brace-format msgid "[success] Name changed from {old} to {new}" msgstr "[success] Name geändert von {old} zu {new}" -#: FlatCAMObj.py:542 FlatCAMObj.py:1748 FlatCAMObj.py:3013 FlatCAMObj.py:5165 +#: FlatCAMObj.py:548 FlatCAMObj.py:2033 FlatCAMObj.py:3307 FlatCAMObj.py:5470 msgid "Basic" msgstr "Basic" -#: FlatCAMObj.py:554 FlatCAMObj.py:1764 FlatCAMObj.py:3035 FlatCAMObj.py:5171 +#: FlatCAMObj.py:560 FlatCAMObj.py:2049 FlatCAMObj.py:3329 FlatCAMObj.py:5476 msgid "Advanced" msgstr "Erweitert" -#: FlatCAMObj.py:909 FlatCAMObj.py:964 +#: FlatCAMObj.py:923 FlatCAMObj.py:978 #, python-format msgid "[success] Isolation geometry created: %s" msgstr "[success] Isolationsgeometrie erstellt: %s" -#: FlatCAMObj.py:1133 +#: FlatCAMObj.py:1157 msgid "Plotting Apertures" msgstr "Plotten Apertures" -#: FlatCAMObj.py:1587 flatcamEditors/FlatCAMExcEditor.py:1327 +#: FlatCAMObj.py:1872 flatcamEditors/FlatCAMExcEditor.py:1332 msgid "Total Drills" msgstr "Bohrungen insgesamt" -#: FlatCAMObj.py:1613 flatcamEditors/FlatCAMExcEditor.py:1359 +#: FlatCAMObj.py:1898 flatcamEditors/FlatCAMExcEditor.py:1364 msgid "Total Slots" msgstr "Schlitz insgesamt" -#: FlatCAMObj.py:1820 FlatCAMObj.py:3086 FlatCAMObj.py:3393 FlatCAMObj.py:3580 -#: FlatCAMObj.py:3593 FlatCAMObj.py:3710 FlatCAMObj.py:4118 FlatCAMObj.py:4351 -#: FlatCAMObj.py:4757 flatcamEditors/FlatCAMExcEditor.py:1434 +#: 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 #: flatcamTools/ToolCalculators.py:307 flatcamTools/ToolCalculators.py:318 #: flatcamTools/ToolCalculators.py:330 flatcamTools/ToolCalculators.py:345 #: flatcamTools/ToolCalculators.py:358 flatcamTools/ToolCalculators.py:372 @@ -1240,55 +1276,55 @@ msgstr "Schlitz insgesamt" #: flatcamTools/ToolNonCopperClear.py:644 flatcamTools/ToolPaint.py:538 #: flatcamTools/ToolPaint.py:608 flatcamTools/ToolPaint.py:743 #: flatcamTools/ToolPaint.py:840 flatcamTools/ToolPaint.py:995 -#: flatcamTools/ToolPanelize.py:323 flatcamTools/ToolPanelize.py:335 -#: flatcamTools/ToolPanelize.py:348 flatcamTools/ToolPanelize.py:361 -#: flatcamTools/ToolPanelize.py:373 flatcamTools/ToolPanelize.py:384 +#: flatcamTools/ToolPanelize.py:385 flatcamTools/ToolPanelize.py:397 +#: flatcamTools/ToolPanelize.py:410 flatcamTools/ToolPanelize.py:423 +#: flatcamTools/ToolPanelize.py:435 flatcamTools/ToolPanelize.py:446 #: flatcamTools/ToolSolderPaste.py:756 flatcamTools/ToolSolderPaste.py:827 msgid "[ERROR_NOTCL] Wrong value format entered, use a number." msgstr "[ERROR_NOTCL] Wrong value format entered, use a number." -#: FlatCAMObj.py:2044 FlatCAMObj.py:2135 FlatCAMObj.py:2250 +#: FlatCAMObj.py:2329 FlatCAMObj.py:2420 FlatCAMObj.py:2542 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:2051 +#: FlatCAMObj.py:2336 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:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 msgid "Tool_nr" msgstr "Werkzeugnummer" -#: FlatCAMObj.py:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 -#: flatcamEditors/FlatCAMExcEditor.py:781 -#: flatcamEditors/FlatCAMExcEditor.py:1978 flatcamGUI/ObjectUI.py:556 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: flatcamEditors/FlatCAMExcEditor.py:785 +#: flatcamEditors/FlatCAMExcEditor.py:1984 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:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 msgid "Drills_Nr" msgstr "Bohrnummer" -#: FlatCAMObj.py:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 msgid "Slots_Nr" msgstr "Schlitznummer" -#: FlatCAMObj.py:2145 +#: FlatCAMObj.py:2430 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:2310 FlatCAMObj.py:4006 FlatCAMObj.py:4217 FlatCAMObj.py:4532 +#: FlatCAMObj.py:2604 FlatCAMObj.py:4307 FlatCAMObj.py:4520 FlatCAMObj.py:4837 msgid "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"z_pdepth\"] or self." "options[\"z_pdepth\"]" @@ -1296,7 +1332,7 @@ msgstr "" "[ERROR_NOTCL] Falsches Wertformat für self.defaults [\"z_pdepth\"] oder self." "options [\"z_pdepth\"]" -#: FlatCAMObj.py:2322 FlatCAMObj.py:4018 FlatCAMObj.py:4229 FlatCAMObj.py:4544 +#: FlatCAMObj.py:2616 FlatCAMObj.py:4319 FlatCAMObj.py:4532 FlatCAMObj.py:4849 msgid "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"feedrate_probe\"] or " "self.options[\"feedrate_probe\"]" @@ -1304,12 +1340,12 @@ msgstr "" "[ERROR_NOTCL] Falsches Wertformat für self.defaults [\"feedrate_probe\"] " "oder self.options [\"feedrate_probe\"]" -#: FlatCAMObj.py:2354 FlatCAMObj.py:4419 FlatCAMObj.py:4424 FlatCAMObj.py:4570 +#: FlatCAMObj.py:2648 FlatCAMObj.py:4724 FlatCAMObj.py:4729 FlatCAMObj.py:4875 msgid "Generating CNC Code" msgstr "CNC-Code generieren" -#: FlatCAMObj.py:2380 FlatCAMObj.py:4716 camlib.py:5214 camlib.py:5672 -#: camlib.py:5943 +#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5165 camlib.py:5624 +#: camlib.py:5887 msgid "" "[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " "format (x, y) \n" @@ -1319,62 +1355,62 @@ msgstr "" "muss das Format (x, y) haben.\n" "Aber jetzt gibt es nur einen Wert, nicht zwei." -#: FlatCAMObj.py:2728 FlatCAMObj.py:3636 FlatCAMObj.py:3637 FlatCAMObj.py:3646 +#: FlatCAMObj.py:3022 FlatCAMObj.py:3930 FlatCAMObj.py:3931 FlatCAMObj.py:3940 msgid "Iso" msgstr "Iso" -#: FlatCAMObj.py:2728 FlatCAMObj.py:2971 FlatCAMObj.py:3258 +#: FlatCAMObj.py:3022 FlatCAMObj.py:3265 FlatCAMObj.py:3552 msgid "Rough" msgstr "Rau" -#: FlatCAMObj.py:2728 +#: FlatCAMObj.py:3022 msgid "Finish" msgstr "Oberfläche" -#: FlatCAMObj.py:3006 flatcamGUI/FlatCAMGUI.py:518 flatcamGUI/FlatCAMGUI.py:711 -#: flatcamGUI/FlatCAMGUI.py:1601 flatcamGUI/FlatCAMGUI.py:1932 -#: flatcamGUI/ObjectUI.py:996 +#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:724 +#: flatcamGUI/FlatCAMGUI.py:1615 flatcamGUI/FlatCAMGUI.py:1946 +#: flatcamGUI/ObjectUI.py:999 msgid "Copy" msgstr "Kopieren" -#: FlatCAMObj.py:3228 +#: FlatCAMObj.py:3522 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:3303 +#: FlatCAMObj.py:3597 msgid "[success] Tool added in Tool Table." msgstr "[success] Werkzeug in der Werkzeugtabelle hinzugefügt." -#: FlatCAMObj.py:3308 +#: FlatCAMObj.py:3602 msgid "[ERROR_NOTCL] Default Tool added. Wrong value format entered." msgstr "" "[ERROR_NOTCL] Standardwerkzeug hinzugefügt Falsches Wertformat eingegeben." -#: FlatCAMObj.py:3338 FlatCAMObj.py:3348 +#: FlatCAMObj.py:3632 FlatCAMObj.py:3642 msgid "[WARNING_NOTCL] Failed. Select a tool to copy." msgstr "" "[WARNING_NOTCL] Fehlgeschlagen. Wählen Sie ein Werkzeug zum Kopieren aus." -#: FlatCAMObj.py:3377 +#: FlatCAMObj.py:3671 msgid "[success] Tool was copied in Tool Table." msgstr "[success] Das Werkzeug wurde in die Werkzeugtabelle kopiert." -#: FlatCAMObj.py:3410 +#: FlatCAMObj.py:3704 msgid "[success] Tool was edited in Tool Table." msgstr "[success] Das Werkzeug wurde in der Werkzeugtabelle bearbeitet." -#: FlatCAMObj.py:3441 FlatCAMObj.py:3451 +#: FlatCAMObj.py:3735 FlatCAMObj.py:3745 msgid "[WARNING_NOTCL] Failed. Select a tool to delete." msgstr "" "[WARNING_NOTCL] Fehlgeschlagen. Wählen Sie ein Werkzeug zum Löschen aus." -#: FlatCAMObj.py:3475 +#: FlatCAMObj.py:3769 msgid "[success] Tool was deleted in Tool Table." msgstr "[success] Werkzeug wurde in der Werkzeugtabelle gelöscht." -#: FlatCAMObj.py:3889 +#: FlatCAMObj.py:4190 #, python-format msgid "" "[WARNING_NOTCL] This Geometry can't be processed because it is %s geometry." @@ -1382,24 +1418,24 @@ msgstr "" "[WARNING_NOTCL] Diese Geometrie kann nicht verarbeitet werden, da es sich um " "%s Geometrie handelt." -#: FlatCAMObj.py:3906 +#: FlatCAMObj.py:4207 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:3933 +#: FlatCAMObj.py:4234 msgid "[ERROR_NOTCL] Failed. No tool selected in the tool table ..." msgstr "" "[ERROR_NOTCL] Gescheitert. Kein Werkzeug in der Werkzeugtabelle " "ausgewählt ..." -#: FlatCAMObj.py:3971 +#: FlatCAMObj.py:4272 #, python-format msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" msgstr "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" -#: FlatCAMObj.py:4127 FlatCAMObj.py:4360 +#: FlatCAMObj.py:4428 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." @@ -1408,22 +1444,22 @@ msgstr "" "jedoch kein Wert angegeben.\n" "Fügen Sie einen Werkzeugversatz hinzu oder ändern Sie den Versatztyp." -#: FlatCAMObj.py:4241 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:4603 FlatCAMObj.py:4613 camlib.py:3436 camlib.py:3445 +#: FlatCAMObj.py:4908 FlatCAMObj.py:4918 camlib.py:3346 camlib.py:3355 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:4651 +#: FlatCAMObj.py:4956 msgid "[success] Geometry Scale done." msgstr "[success] Geometrie Skalierung fertig." -#: FlatCAMObj.py:4668 camlib.py:3507 +#: FlatCAMObj.py:4973 camlib.py:3425 msgid "" "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " "one value in the Offset field." @@ -1431,29 +1467,29 @@ msgstr "" "[ERROR_NOTCL] Ein (x, y) Wertepaar wird benötigt. Wahrscheinlich haben Sie " "im Feld Offset nur einen Wert eingegeben." -#: FlatCAMObj.py:4688 +#: FlatCAMObj.py:4993 msgid "[success] Geometry Offset done." msgstr "[success] Geometrie Offset fertig." -#: FlatCAMObj.py:5233 FlatCAMObj.py:5238 flatcamTools/ToolSolderPaste.py:1361 +#: FlatCAMObj.py:5538 FlatCAMObj.py:5543 flatcamTools/ToolSolderPaste.py:1361 msgid "Export Machine Code ..." msgstr "Maschinencode exportieren ..." -#: FlatCAMObj.py:5244 flatcamTools/ToolSolderPaste.py:1364 +#: FlatCAMObj.py:5549 flatcamTools/ToolSolderPaste.py:1364 msgid "[WARNING_NOTCL] Export Machine Code cancelled ..." msgstr "[WARNING_NOTCL] Export Machine Code cancelled ..." -#: FlatCAMObj.py:5255 +#: FlatCAMObj.py:5562 #, python-format msgid "[success] Machine Code file saved to: %s" msgstr "[success] Maschinencode-Datei gespeichert in: %s" -#: FlatCAMObj.py:5277 +#: FlatCAMObj.py:5584 #, python-format msgid "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" msgstr "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" -#: FlatCAMObj.py:5394 +#: FlatCAMObj.py:5701 #, python-format msgid "" "[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " @@ -1462,11 +1498,11 @@ msgstr "" "[WARNING_NOTCL] Dieses CNC-Auftrag Objekt kann nicht verarbeitet werden, da " "es sich um ein %s CNC-Auftrag Objekt handelt." -#: FlatCAMObj.py:5447 +#: FlatCAMObj.py:5754 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:5460 +#: FlatCAMObj.py:5767 msgid "" "[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " "empty." @@ -1474,17 +1510,17 @@ msgstr "" "[ERROR_NOTCL] Abgebrochen. Der benutzerdefinierte Code zum Ändern des " "Werkzeugs ist aktiviert, aber er ist leer." -#: FlatCAMObj.py:5467 +#: FlatCAMObj.py:5774 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:5482 flatcamTools/ToolSolderPaste.py:1390 +#: FlatCAMObj.py:5789 flatcamTools/ToolSolderPaste.py:1390 msgid "[WARNING_NOTCL] No such file or directory" msgstr "[WARNING_NOTCL] Keine solche Datei oder Ordner" -#: FlatCAMObj.py:5501 FlatCAMObj.py:5513 +#: FlatCAMObj.py:5809 FlatCAMObj.py:5821 msgid "" "[WARNING_NOTCL] The used postprocessor file has to have in it's name: " "'toolchange_custom'" @@ -1492,7 +1528,7 @@ msgstr "" "[WARNING_NOTCL] Die verwendete Postprozessor-Datei muss im Namen enthalten " "sein: 'toolchange_custom'" -#: FlatCAMObj.py:5519 +#: FlatCAMObj.py:5827 msgid "[ERROR] There is no postprocessor file." msgstr "[ERROR] Es gibt keine Postprozessor-Datei." @@ -1511,42 +1547,42 @@ 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:1389 +#: camlib.py:1390 msgid "[success] Object was mirrored ..." msgstr "[success] Objekt wurde gespiegelt ..." -#: camlib.py:1391 +#: camlib.py:1392 msgid "[ERROR_NOTCL] Failed to mirror. No object selected" msgstr "[ERROR_NOTCL] Spiegelung fehlgeschlagen Kein Objekt ausgewählt" -#: camlib.py:1427 +#: camlib.py:1428 msgid "[success] Object was rotated ..." msgstr "[success] Objekt wurde gedreht ..." -#: camlib.py:1429 +#: camlib.py:1430 msgid "[ERROR_NOTCL] Failed to rotate. No object selected" msgstr "[ERROR_NOTCL] Fehler beim Drehen. Kein Objekt ausgewählt" -#: camlib.py:1463 +#: camlib.py:1464 msgid "[success] Object was skewed ..." msgstr "[success] Objekt war schief ..." -#: camlib.py:1465 +#: camlib.py:1466 msgid "[ERROR_NOTCL] Failed to skew. No object selected" msgstr "[ERROR_NOTCL] Fehler beim Neigen Kein Objekt ausgewählt" -#: camlib.py:2741 camlib.py:2847 +#: camlib.py:2728 camlib.py:2813 #, python-format msgid "[WARNING] Coordinates missing, line ignored: %s" msgstr "[WARNING] Koordinaten fehlen, Zeile wird ignoriert: %s" -#: camlib.py:2742 camlib.py:2848 +#: camlib.py:2729 camlib.py:2814 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:2802 +#: camlib.py:2778 #, python-format msgid "" "[ERROR] Region does not have enough points. File will be processed but there " @@ -1555,7 +1591,7 @@ msgstr "" "[ERROR] Region hat nicht genug Punkte. Die Datei wird verarbeitet, es treten " "jedoch Parserfehler auf. Linien Nummer: %s" -#: camlib.py:3257 +#: camlib.py:3170 #, python-format msgid "" "[ERROR]Gerber Parser ERROR.\n" @@ -1564,20 +1600,32 @@ msgstr "" "[ERROR] Gerber Parser ERROR.\n" "%s:" -#: camlib.py:3474 +#: camlib.py:3392 msgid "[success] Gerber Scale done." msgstr "[success] Gerber-Skalierung abgeschlossen." -#: camlib.py:3531 +#: camlib.py:3458 msgid "[success] Gerber Offset done." msgstr "[success] Gerber Offset fertig." -#: camlib.py:3925 +#: camlib.py:3512 +msgid "[success] Gerber Mirror done." +msgstr "[success] Gerber Mirror fertig." + +#: camlib.py:3558 +msgid "[success] Gerber Skew done." +msgstr "[success] Gerber-Versatz fertig." + +#: camlib.py:3596 +msgid "[success] Gerber Rotate done." +msgstr "[success] Gerber drehen fertig." + +#: camlib.py:3875 #, python-format msgid "[ERROR_NOTCL] This is GCODE mark: %s" msgstr "[ERROR_NOTCL] Dies ist die GCODE-Marke: %s" -#: camlib.py:4039 +#: camlib.py:3989 #, python-format msgid "" "[WARNING] No tool diameter info's. See shell.\n" @@ -1594,7 +1642,7 @@ msgstr "" "Der Benutzer muss das resultierende Excellon-Objekt bearbeiten und die " "Durchmesser ändern, um die tatsächlichen Durchmesser widerzuspiegeln." -#: camlib.py:4504 +#: camlib.py:4454 #, python-brace-format msgid "" "[ERROR] Excellon Parser error.\n" @@ -1603,7 +1651,7 @@ msgstr "" "[ERROR] Fehler beim Excellon-Parser.\n" "Parsing fehlgeschlagen. Zeile {l_nr}: {line}\n" -#: camlib.py:4581 +#: camlib.py:4531 msgid "" "[WARNING] Excellon.create_geometry() -> a drill location was skipped due of " "not having a tool associated.\n" @@ -1613,12 +1661,12 @@ msgstr "" "da kein Werkzeug zugeordnet wurde.\n" "Überprüfen Sie den resultierenden GCode." -#: camlib.py:5123 +#: camlib.py:5074 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "[ERROR] Es gibt keinen solchen Parameter: %s" -#: camlib.py:5193 +#: camlib.py:5144 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1633,7 +1681,7 @@ msgstr "" "einen negativen Wert. \n" "Überprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:5200 camlib.py:5695 camlib.py:5966 +#: camlib.py:5151 camlib.py:5647 camlib.py:5910 #, python-format msgid "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" @@ -1641,15 +1689,15 @@ msgstr "" "[WARNING] Der Parameter Cut Z ist Null. Es wird kein Schnitt ausgeführt, da " "die %s Datei übersprungen wird" -#: camlib.py:5429 camlib.py:5526 camlib.py:5584 +#: camlib.py:5380 camlib.py:5477 camlib.py:5535 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "[ERROR_NOTCL] Die geladene Excellon-Datei hat keine Bohrer ..." -#: camlib.py:5531 +#: camlib.py:5482 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "[ERROR_NOTCL] Falscher Optimierungstyp ausgewählt." -#: camlib.py:5683 camlib.py:5954 +#: camlib.py:5635 camlib.py:5898 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." @@ -1657,7 +1705,7 @@ msgstr "" "[ERROR_NOTCL] Der Parameter Cut_Z ist None oder Null. Höchstwahrscheinlich " "eine schlechte Kombination anderer Parameter." -#: camlib.py:5688 camlib.py:5959 +#: camlib.py:5640 camlib.py:5903 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1672,11 +1720,11 @@ msgstr "" "einen negativen Wert. \n" "Überprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:5700 camlib.py:5971 +#: camlib.py:5652 camlib.py:5915 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:5704 camlib.py:5975 +#: camlib.py:5656 camlib.py:5919 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1690,7 +1738,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:5711 camlib.py:5982 +#: camlib.py:5663 camlib.py:5926 #, python-format msgid "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" @@ -1698,12 +1746,12 @@ msgstr "" "[WARNING] Der Parameter Z-Weg ist Null. Dies ist gefährlich, da die %s Datei " "übersprungen wird" -#: camlib.py:5841 +#: camlib.py:5793 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "[ERROR] Eine Geometrie erwartet,%s erhalten" -#: camlib.py:5847 +#: camlib.py:5799 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." @@ -1711,7 +1759,7 @@ msgstr "" "[ERROR_NOTCL] Der Versuch, einen CNC-Auftrag aus einem Geometrieobjekt ohne " "solid_geometry zu generieren." -#: camlib.py:5886 +#: camlib.py:5838 msgid "" "[ERROR_NOTCL] The Tool Offset value is too negative to use for the " "current_geometry.\n" @@ -1721,7 +1769,7 @@ msgstr "" "current_geometry zu verwenden.\n" "Erhöhen Sie den Wert (im Modul) und versuchen Sie es erneut." -#: camlib.py:6108 +#: camlib.py:6052 msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." msgstr "" "[ERROR_NOTCL] In der SolderPaste-Geometrie sind keine Werkzeugdaten " @@ -1733,31 +1781,31 @@ msgstr "" "[WARNING_NOTCL] Um einen Bohrer hinzuzufügen, wählen Sie zuerst ein Werkzeug " "aus" -#: flatcamEditors/FlatCAMExcEditor.py:62 flatcamEditors/FlatCAMExcEditor.py:164 -#: flatcamEditors/FlatCAMExcEditor.py:446 -#: flatcamEditors/FlatCAMExcEditor.py:471 -#: flatcamEditors/FlatCAMGrbEditor.py:287 -#: flatcamEditors/FlatCAMGrbEditor.py:1454 -#: flatcamEditors/FlatCAMGrbEditor.py:1478 +#: flatcamEditors/FlatCAMExcEditor.py:62 flatcamEditors/FlatCAMExcEditor.py:165 +#: flatcamEditors/FlatCAMExcEditor.py:447 +#: flatcamEditors/FlatCAMExcEditor.py:472 +#: flatcamEditors/FlatCAMGrbEditor.py:451 +#: flatcamEditors/FlatCAMGrbEditor.py:1759 +#: flatcamEditors/FlatCAMGrbEditor.py:1787 msgid "Click on target location ..." msgstr "Klicken Sie auf den Zielort ..." -#: flatcamEditors/FlatCAMExcEditor.py:107 +#: flatcamEditors/FlatCAMExcEditor.py:108 msgid "[success] Done. Drill added." msgstr "[success] Erledigt. Bohrer hinzugefügt." -#: flatcamEditors/FlatCAMExcEditor.py:149 +#: flatcamEditors/FlatCAMExcEditor.py:150 msgid "[WARNING_NOTCL] To add an Drill Array first select a tool in Tool Table" msgstr "" "[WARNING_NOTCL] Um ein Bohr-Array hinzuzufügen, wählen Sie zunächst ein " "Werkzeug in der Werkzeugtabelle aus" -#: flatcamEditors/FlatCAMExcEditor.py:181 +#: flatcamEditors/FlatCAMExcEditor.py:182 msgid "Click on the Drill Circular Array Start position" msgstr "Klicken Sie auf die Startposition des Bohrkreis-Arrays" -#: flatcamEditors/FlatCAMExcEditor.py:203 -#: flatcamEditors/FlatCAMGrbEditor.py:330 +#: flatcamEditors/FlatCAMExcEditor.py:204 +#: flatcamEditors/FlatCAMGrbEditor.py:494 msgid "" "[ERROR_NOTCL] The value is not Float. Check for comma instead of dot " "separator." @@ -1765,68 +1813,68 @@ msgstr "" "[ERROR_NOTCL] Der Wert ist nicht Real. Überprüfen Sie das Komma anstelle des " "Trennzeichens." -#: flatcamEditors/FlatCAMExcEditor.py:206 -#: flatcamEditors/FlatCAMGrbEditor.py:333 +#: flatcamEditors/FlatCAMExcEditor.py:207 +#: 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/FlatCAMExcEditor.py:304 +#: flatcamEditors/FlatCAMExcEditor.py:305 msgid "[WARNING_NOTCL] Too many drills for the selected spacing angle." msgstr "[WARNING_NOTCL] Zu viele Bohrer für den ausgewählten Abstandswinkel." -#: flatcamEditors/FlatCAMExcEditor.py:321 +#: flatcamEditors/FlatCAMExcEditor.py:322 msgid "[success] Done. Drill Array added." msgstr "[success] Erledigt. Bohrfeld hinzugefügt." -#: flatcamEditors/FlatCAMExcEditor.py:332 +#: flatcamEditors/FlatCAMExcEditor.py:333 msgid "Click on the Drill(s) to resize ..." msgstr "Klicken Sie auf die Bohrer, um die Größe zu ändern ..." -#: flatcamEditors/FlatCAMExcEditor.py:352 +#: flatcamEditors/FlatCAMExcEditor.py:353 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:422 +#: flatcamEditors/FlatCAMExcEditor.py:423 msgid "[success] Done. Drill Resize completed." msgstr "[success] Erledigt. Bohren Sie die Größe neu." -#: flatcamEditors/FlatCAMExcEditor.py:425 +#: flatcamEditors/FlatCAMExcEditor.py:426 msgid "[WARNING_NOTCL] Cancelled. No drills selected for resize ..." msgstr "" "[WARNING_NOTCL] Abgebrochen. Keine Bohrer zur Größenänderung ausgewählt ..." -#: flatcamEditors/FlatCAMExcEditor.py:448 -#: flatcamEditors/FlatCAMGrbEditor.py:1456 +#: flatcamEditors/FlatCAMExcEditor.py:449 +#: flatcamEditors/FlatCAMGrbEditor.py:1761 msgid "Click on reference location ..." msgstr "Klicken Sie auf die Referenzposition ..." -#: flatcamEditors/FlatCAMExcEditor.py:503 +#: flatcamEditors/FlatCAMExcEditor.py:504 msgid "[success] Done. Drill(s) Move completed." msgstr "[success] Erledigt. Bohrer Bewegen abgeschlossen." -#: flatcamEditors/FlatCAMExcEditor.py:556 +#: flatcamEditors/FlatCAMExcEditor.py:557 msgid "[success] Done. Drill(s) copied." msgstr "[success] Erledigt. Bohrer kopiert." -#: flatcamEditors/FlatCAMExcEditor.py:754 +#: flatcamEditors/FlatCAMExcEditor.py:758 msgid "Excellon Editor" msgstr "Excellon Editor" -#: flatcamEditors/FlatCAMExcEditor.py:761 -#: flatcamEditors/FlatCAMGrbEditor.py:1715 +#: flatcamEditors/FlatCAMExcEditor.py:765 +#: flatcamEditors/FlatCAMGrbEditor.py:2108 msgid "Name:" msgstr "Name:" -#: flatcamEditors/FlatCAMExcEditor.py:767 flatcamTools/ToolNonCopperClear.py:72 +#: flatcamEditors/FlatCAMExcEditor.py:771 flatcamTools/ToolNonCopperClear.py:72 #: flatcamTools/ToolPaint.py:69 flatcamTools/ToolSolderPaste.py:70 msgid "Tools Table" msgstr "Werkzeugtabelle" -#: flatcamEditors/FlatCAMExcEditor.py:769 flatcamGUI/ObjectUI.py:538 +#: flatcamEditors/FlatCAMExcEditor.py:773 flatcamGUI/ObjectUI.py:538 msgid "" "Tools in this Excellon object\n" "when are used for drilling." @@ -1834,11 +1882,11 @@ msgstr "" "Werkzeuge in diesem Excellon-Objekt\n" "Wann werden zum Bohren verwendet." -#: flatcamEditors/FlatCAMExcEditor.py:789 +#: flatcamEditors/FlatCAMExcEditor.py:793 msgid "Add/Delete Tool" msgstr "Werkzeug hinzufügen / löschen" -#: flatcamEditors/FlatCAMExcEditor.py:791 +#: flatcamEditors/FlatCAMExcEditor.py:795 msgid "" "Add/Delete a tool to the tool list\n" "for this Excellon object." @@ -1846,19 +1894,19 @@ msgstr "" "Werkzeug zur Werkzeugliste hinzufügen / löschen\n" "für dieses Excellon-Objekt." -#: flatcamEditors/FlatCAMExcEditor.py:799 flatcamTools/ToolCutOut.py:77 +#: flatcamEditors/FlatCAMExcEditor.py:803 flatcamTools/ToolCutOut.py:77 msgid "Tool Dia:" msgstr "Werkzeugdurchmesser:" -#: flatcamEditors/FlatCAMExcEditor.py:801 flatcamGUI/ObjectUI.py:975 +#: flatcamEditors/FlatCAMExcEditor.py:805 flatcamGUI/ObjectUI.py:978 msgid "Diameter for the new tool" msgstr "Durchmesser für das neue Werkzeug" -#: flatcamEditors/FlatCAMExcEditor.py:810 +#: flatcamEditors/FlatCAMExcEditor.py:814 msgid "Add Tool" msgstr "Werkzeug hinzufügen" -#: flatcamEditors/FlatCAMExcEditor.py:812 +#: flatcamEditors/FlatCAMExcEditor.py:816 msgid "" "Add a new tool to the tool list\n" "with the diameter specified above." @@ -1866,11 +1914,11 @@ msgstr "" "Fügen Sie der Werkzeugliste ein neues Werkzeug hinzu\n" "mit dem oben angegebenen Durchmesser." -#: flatcamEditors/FlatCAMExcEditor.py:822 +#: flatcamEditors/FlatCAMExcEditor.py:826 msgid "Delete Tool" msgstr "Werkzeug löschen" -#: flatcamEditors/FlatCAMExcEditor.py:824 +#: flatcamEditors/FlatCAMExcEditor.py:828 msgid "" "Delete a tool in the tool list\n" "by selecting a row in the tool table." @@ -1878,40 +1926,40 @@ msgstr "" "Löschen Sie ein Werkzeug in der Werkzeugliste\n" "indem Sie eine Zeile in der Werkzeugtabelle auswählen." -#: flatcamEditors/FlatCAMExcEditor.py:842 +#: flatcamEditors/FlatCAMExcEditor.py:846 msgid "Resize Drill(s)" msgstr "Größe der Bohrer ändern" -#: flatcamEditors/FlatCAMExcEditor.py:844 +#: flatcamEditors/FlatCAMExcEditor.py:848 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:851 +#: flatcamEditors/FlatCAMExcEditor.py:855 msgid "Resize Dia:" msgstr "Durchmesser ändern:" -#: flatcamEditors/FlatCAMExcEditor.py:853 +#: flatcamEditors/FlatCAMExcEditor.py:857 msgid "Diameter to resize to." msgstr "Durchmesser zur Größenänderung." -#: flatcamEditors/FlatCAMExcEditor.py:861 +#: flatcamEditors/FlatCAMExcEditor.py:865 msgid "Resize" msgstr "Größe ändern" -#: flatcamEditors/FlatCAMExcEditor.py:863 +#: flatcamEditors/FlatCAMExcEditor.py:867 msgid "Resize drill(s)" msgstr "Bohrer verkleinern" -#: flatcamEditors/FlatCAMExcEditor.py:885 flatcamGUI/FlatCAMGUI.py:1598 +#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1612 msgid "Add Drill Array" msgstr "Bohrer-Array hinzufügen" -#: flatcamEditors/FlatCAMExcEditor.py:887 +#: flatcamEditors/FlatCAMExcEditor.py:891 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:893 +#: flatcamEditors/FlatCAMExcEditor.py:897 msgid "" "Select the type of drills array to create.\n" "It can be Linear X(Y) or Circular" @@ -1919,33 +1967,33 @@ msgstr "" "Wählen Sie den Typ des zu erstellenden Bohrfelds aus.\n" "Es kann lineares X (Y) oder rund sein" -#: flatcamEditors/FlatCAMExcEditor.py:896 -#: flatcamEditors/FlatCAMGrbEditor.py:1948 +#: flatcamEditors/FlatCAMExcEditor.py:900 +#: flatcamEditors/FlatCAMGrbEditor.py:2341 msgid "Linear" msgstr "Linear" -#: flatcamEditors/FlatCAMExcEditor.py:897 -#: flatcamEditors/FlatCAMGrbEditor.py:1949 +#: flatcamEditors/FlatCAMExcEditor.py:901 +#: flatcamEditors/FlatCAMGrbEditor.py:2342 msgid "Circular" msgstr "Kreisförmig" -#: flatcamEditors/FlatCAMExcEditor.py:904 +#: flatcamEditors/FlatCAMExcEditor.py:908 msgid "Nr of drills:" msgstr "Anzahl der Bohrer:" -#: flatcamEditors/FlatCAMExcEditor.py:906 +#: flatcamEditors/FlatCAMExcEditor.py:910 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:923 -#: flatcamEditors/FlatCAMExcEditor.py:968 -#: flatcamEditors/FlatCAMGrbEditor.py:1975 -#: flatcamEditors/FlatCAMGrbEditor.py:2020 +#: flatcamEditors/FlatCAMExcEditor.py:927 +#: flatcamEditors/FlatCAMExcEditor.py:972 +#: flatcamEditors/FlatCAMGrbEditor.py:2368 +#: flatcamEditors/FlatCAMGrbEditor.py:2413 msgid "Direction:" msgstr "Richtung:" -#: flatcamEditors/FlatCAMExcEditor.py:925 -#: flatcamEditors/FlatCAMGrbEditor.py:1977 +#: flatcamEditors/FlatCAMExcEditor.py:929 +#: flatcamEditors/FlatCAMGrbEditor.py:2370 msgid "" "Direction on which the linear array is oriented:\n" "- 'X' - horizontal axis \n" @@ -1957,27 +2005,27 @@ msgstr "" "- 'Y' - vertikale Achse oder\n" "- 'Winkel' - ein benutzerdefinierter Winkel für die Neigung des Arrays" -#: flatcamEditors/FlatCAMExcEditor.py:938 -#: flatcamEditors/FlatCAMGrbEditor.py:1990 +#: flatcamEditors/FlatCAMExcEditor.py:942 +#: flatcamEditors/FlatCAMGrbEditor.py:2383 msgid "Pitch:" msgstr "Abstand:" -#: flatcamEditors/FlatCAMExcEditor.py:940 -#: flatcamEditors/FlatCAMGrbEditor.py:1992 +#: flatcamEditors/FlatCAMExcEditor.py:944 +#: flatcamEditors/FlatCAMGrbEditor.py:2385 msgid "Pitch = Distance between elements of the array." msgstr "Abstand = Abstand zwischen Elementen des Arrays." -#: flatcamEditors/FlatCAMExcEditor.py:947 -#: flatcamEditors/FlatCAMExcEditor.py:983 -#: flatcamEditors/FlatCAMGeoEditor.py:664 -#: flatcamEditors/FlatCAMGrbEditor.py:1999 -#: flatcamEditors/FlatCAMGrbEditor.py:2035 -#: flatcamEditors/FlatCAMGrbEditor.py:3931 flatcamTools/ToolTransform.py:68 +#: flatcamEditors/FlatCAMExcEditor.py:951 +#: flatcamEditors/FlatCAMExcEditor.py:987 +#: flatcamEditors/FlatCAMGeoEditor.py:666 +#: flatcamEditors/FlatCAMGrbEditor.py:2392 +#: flatcamEditors/FlatCAMGrbEditor.py:2428 +#: flatcamEditors/FlatCAMGrbEditor.py:4414 flatcamTools/ToolTransform.py:68 msgid "Angle:" msgstr "Winkel:" -#: flatcamEditors/FlatCAMExcEditor.py:949 -#: flatcamEditors/FlatCAMGrbEditor.py:2001 +#: flatcamEditors/FlatCAMExcEditor.py:953 +#: flatcamEditors/FlatCAMGrbEditor.py:2394 msgid "" "Angle at which the linear array is placed.\n" "The precision is of max 2 decimals.\n" @@ -1989,8 +2037,8 @@ msgstr "" "Der Mindestwert beträgt -359,99 Grad.\n" "Maximalwert ist: 360.00 Grad." -#: flatcamEditors/FlatCAMExcEditor.py:970 -#: flatcamEditors/FlatCAMGrbEditor.py:2022 +#: flatcamEditors/FlatCAMExcEditor.py:974 +#: flatcamEditors/FlatCAMGrbEditor.py:2415 msgid "" "Direction for circular array.Can be CW = clockwise or CCW = counter " "clockwise." @@ -1998,13 +2046,13 @@ msgstr "" "Richtung für kreisförmige Anordnung. Kann CW = Uhrzeigersinn oder CCW = " "Gegenuhrzeigersinn sein." -#: flatcamEditors/FlatCAMExcEditor.py:985 -#: flatcamEditors/FlatCAMGrbEditor.py:2037 +#: flatcamEditors/FlatCAMExcEditor.py:989 +#: flatcamEditors/FlatCAMGrbEditor.py:2430 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:1447 +#: flatcamEditors/FlatCAMExcEditor.py:1452 msgid "" "[WARNING_NOTCL] Tool already in the original or actual tool list.\n" "Save and reedit Excellon if you need to add this tool. " @@ -2014,21 +2062,21 @@ msgstr "" "Speichern und korrigieren Sie Excellon, wenn Sie dieses Tool hinzufügen " "möchten." -#: flatcamEditors/FlatCAMExcEditor.py:1456 flatcamGUI/FlatCAMGUI.py:2980 +#: flatcamEditors/FlatCAMExcEditor.py:1461 flatcamGUI/FlatCAMGUI.py:2995 #, 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:1488 +#: flatcamEditors/FlatCAMExcEditor.py:1493 msgid "[WARNING_NOTCL] Select a tool in Tool Table" msgstr "[WARNING_NOTCL] Wählen Sie ein Werkzeug in der Werkzeugtabelle aus" -#: flatcamEditors/FlatCAMExcEditor.py:1521 +#: flatcamEditors/FlatCAMExcEditor.py:1526 #, 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:2032 +#: flatcamEditors/FlatCAMExcEditor.py:2038 msgid "" "[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon " "creation." @@ -2036,38 +2084,38 @@ msgstr "" "[ERROR_NOTCL] Die Datei enthält keine Werkzeugdefinitionen. Abbruch der " "Excellon-Erstellung." -#: flatcamEditors/FlatCAMExcEditor.py:2041 +#: flatcamEditors/FlatCAMExcEditor.py:2047 msgid "Creating Excellon." msgstr "Excellon erstellen." -#: flatcamEditors/FlatCAMExcEditor.py:2050 +#: flatcamEditors/FlatCAMExcEditor.py:2056 msgid "[success] Excellon editing finished." msgstr "[success] Excellon-Bearbeitung abgeschlossen." -#: flatcamEditors/FlatCAMExcEditor.py:2067 +#: flatcamEditors/FlatCAMExcEditor.py:2073 msgid "[WARNING_NOTCL] Cancelled. There is no Tool/Drill selected" msgstr "[WARNING_NOTCL] Abgebrochen. Es ist kein Werkzeug / Bohrer ausgewählt" -#: flatcamEditors/FlatCAMExcEditor.py:2572 +#: flatcamEditors/FlatCAMExcEditor.py:2605 msgid "[success] Done. Drill(s) deleted." msgstr "[success] Erledigt. Bohrer gelöscht." -#: flatcamEditors/FlatCAMExcEditor.py:2642 -#: flatcamEditors/FlatCAMGrbEditor.py:3719 +#: flatcamEditors/FlatCAMExcEditor.py:2675 +#: flatcamEditors/FlatCAMGrbEditor.py:4174 msgid "Click on the circular array Center position" msgstr "Klicken Sie auf die kreisförmige Anordnung in der Mitte" -#: flatcamEditors/FlatCAMGeoEditor.py:78 -#: flatcamEditors/FlatCAMGrbEditor.py:1865 +#: flatcamEditors/FlatCAMGeoEditor.py:80 +#: flatcamEditors/FlatCAMGrbEditor.py:2258 msgid "Buffer distance:" msgstr "Pufferabstand:" -#: flatcamEditors/FlatCAMGeoEditor.py:79 -#: flatcamEditors/FlatCAMGrbEditor.py:1866 +#: flatcamEditors/FlatCAMGeoEditor.py:81 +#: flatcamEditors/FlatCAMGrbEditor.py:2259 msgid "Buffer corner:" msgstr "Pufferecke:" -#: flatcamEditors/FlatCAMGeoEditor.py:81 +#: flatcamEditors/FlatCAMGeoEditor.py:83 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded for exterior buffer.\n" @@ -2082,45 +2130,45 @@ msgstr "" "  - 'Abgeschrägt:' Die Ecke ist eine Linie, die die Features, die sich in " "der Ecke treffen, direkt verbindet" -#: flatcamEditors/FlatCAMGeoEditor.py:87 -#: flatcamEditors/FlatCAMGrbEditor.py:1874 +#: flatcamEditors/FlatCAMGeoEditor.py:89 +#: flatcamEditors/FlatCAMGrbEditor.py:2267 msgid "Round" msgstr "Runden" -#: flatcamEditors/FlatCAMGeoEditor.py:88 -#: flatcamEditors/FlatCAMGrbEditor.py:1875 +#: flatcamEditors/FlatCAMGeoEditor.py:90 +#: flatcamEditors/FlatCAMGrbEditor.py:2268 msgid "Square" msgstr "Quadrat" -#: flatcamEditors/FlatCAMGeoEditor.py:89 -#: flatcamEditors/FlatCAMGrbEditor.py:1876 +#: flatcamEditors/FlatCAMGeoEditor.py:91 +#: flatcamEditors/FlatCAMGrbEditor.py:2269 msgid "Beveled" msgstr "Abgeschrägt" -#: flatcamEditors/FlatCAMGeoEditor.py:96 +#: flatcamEditors/FlatCAMGeoEditor.py:98 msgid "Buffer Interior" msgstr "Pufferinnenraum" -#: flatcamEditors/FlatCAMGeoEditor.py:98 +#: flatcamEditors/FlatCAMGeoEditor.py:100 msgid "Buffer Exterior" msgstr "Puffer außen" -#: flatcamEditors/FlatCAMGeoEditor.py:104 +#: flatcamEditors/FlatCAMGeoEditor.py:106 msgid "Full Buffer" msgstr "Voller Puffer" -#: flatcamEditors/FlatCAMGeoEditor.py:125 -#: flatcamEditors/FlatCAMGeoEditor.py:2609 +#: flatcamEditors/FlatCAMGeoEditor.py:127 +#: flatcamEditors/FlatCAMGeoEditor.py:2696 msgid "Buffer Tool" msgstr "Pufferwerkzeug" -#: flatcamEditors/FlatCAMGeoEditor.py:136 -#: flatcamEditors/FlatCAMGeoEditor.py:153 -#: flatcamEditors/FlatCAMGeoEditor.py:170 -#: flatcamEditors/FlatCAMGeoEditor.py:2627 -#: flatcamEditors/FlatCAMGeoEditor.py:2653 -#: flatcamEditors/FlatCAMGeoEditor.py:2679 -#: flatcamEditors/FlatCAMGrbEditor.py:3771 +#: flatcamEditors/FlatCAMGeoEditor.py:138 +#: flatcamEditors/FlatCAMGeoEditor.py:155 +#: flatcamEditors/FlatCAMGeoEditor.py:172 +#: flatcamEditors/FlatCAMGeoEditor.py:2714 +#: flatcamEditors/FlatCAMGeoEditor.py:2740 +#: flatcamEditors/FlatCAMGeoEditor.py:2766 +#: flatcamEditors/FlatCAMGrbEditor.py:4226 msgid "" "[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and " "retry." @@ -2128,21 +2176,21 @@ msgstr "" "[WARNING_NOTCL] Pufferabstandswert fehlt oder falsches Format. Fügen Sie es " "hinzu und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGeoEditor.py:341 +#: flatcamEditors/FlatCAMGeoEditor.py:343 msgid "Text Tool" msgstr "Textwerkzeug" -#: flatcamEditors/FlatCAMGeoEditor.py:399 flatcamGUI/FlatCAMGUI.py:792 +#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:805 msgid "Tool" msgstr "Werkzeug" -#: flatcamEditors/FlatCAMGeoEditor.py:430 flatcamGUI/FlatCAMGUI.py:3996 -#: flatcamGUI/FlatCAMGUI.py:5202 flatcamGUI/FlatCAMGUI.py:5478 -#: flatcamGUI/FlatCAMGUI.py:5618 flatcamGUI/ObjectUI.py:260 +#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4051 +#: flatcamGUI/FlatCAMGUI.py:5448 flatcamGUI/FlatCAMGUI.py:5724 +#: flatcamGUI/FlatCAMGUI.py:5864 flatcamGUI/ObjectUI.py:260 msgid "Tool dia:" msgstr "Werkzeugdurchmesser:" -#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:5620 +#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5866 msgid "" "Diameter of the tool to\n" "be used in the operation." @@ -2150,13 +2198,13 @@ msgstr "" "Durchmesser des Werkzeugs bis\n" "in der Operation verwendet werden." -#: flatcamEditors/FlatCAMGeoEditor.py:441 flatcamGUI/FlatCAMGUI.py:5384 -#: flatcamGUI/FlatCAMGUI.py:5629 flatcamTools/ToolNonCopperClear.py:165 +#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5630 +#: flatcamGUI/FlatCAMGUI.py:5875 flatcamTools/ToolNonCopperClear.py:165 #: flatcamTools/ToolPaint.py:160 msgid "Overlap Rate:" msgstr "Überlappungsrate:" -#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamTools/ToolPaint.py:162 +#: flatcamEditors/FlatCAMGeoEditor.py:445 flatcamTools/ToolPaint.py:162 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -2185,14 +2233,14 @@ msgstr "" "Höhere Werte = langsame Bearbeitung und langsame Ausführung auf CNC\n" "wegen zu vieler Wege." -#: flatcamEditors/FlatCAMGeoEditor.py:459 flatcamGUI/FlatCAMGUI.py:5400 -#: flatcamGUI/FlatCAMGUI.py:5486 flatcamGUI/FlatCAMGUI.py:5639 +#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5646 +#: flatcamGUI/FlatCAMGUI.py:5732 flatcamGUI/FlatCAMGUI.py:5885 #: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:181 #: flatcamTools/ToolPaint.py:177 msgid "Margin:" msgstr "Marge:" -#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5641 +#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5887 #: flatcamTools/ToolPaint.py:179 msgid "" "Distance by which to avoid\n" @@ -2203,13 +2251,13 @@ msgstr "" "die Kanten des Polygons bis\n" "gemalt werden." -#: flatcamEditors/FlatCAMGeoEditor.py:470 flatcamGUI/FlatCAMGUI.py:5409 -#: flatcamGUI/FlatCAMGUI.py:5650 flatcamTools/ToolNonCopperClear.py:190 +#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5655 +#: flatcamGUI/FlatCAMGUI.py:5896 flatcamTools/ToolNonCopperClear.py:190 #: flatcamTools/ToolPaint.py:188 msgid "Method:" msgstr "Methode:" -#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5652 +#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5898 msgid "" "Algorithm to paint the polygon:
Standard: Fixed step inwards." "
Seed-based: Outwards from seed." @@ -2217,14 +2265,14 @@ msgstr "" "Algorithmus zum Malen des Polygons:
Standard: Feststehender " "Schritt nach innen.
Samenbasiert: Aus dem Samen heraus." -#: flatcamEditors/FlatCAMGeoEditor.py:485 flatcamGUI/FlatCAMGUI.py:5425 -#: flatcamGUI/FlatCAMGUI.py:5665 flatcamTools/ToolNonCopperClear.py:206 +#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5671 +#: flatcamGUI/FlatCAMGUI.py:5911 flatcamTools/ToolNonCopperClear.py:206 #: flatcamTools/ToolPaint.py:204 msgid "Connect:" msgstr "Verbinden:" -#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5427 -#: flatcamGUI/FlatCAMGUI.py:5667 flatcamTools/ToolNonCopperClear.py:208 +#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5673 +#: flatcamGUI/FlatCAMGUI.py:5913 flatcamTools/ToolNonCopperClear.py:208 #: flatcamTools/ToolPaint.py:206 msgid "" "Draw lines between resulting\n" @@ -2233,14 +2281,14 @@ msgstr "" "Zeichnen Sie Linien zwischen den Ergebnissen\n" "Segmente, um Werkzeuglifte zu minimieren." -#: flatcamEditors/FlatCAMGeoEditor.py:494 flatcamGUI/FlatCAMGUI.py:5434 -#: flatcamGUI/FlatCAMGUI.py:5675 flatcamTools/ToolNonCopperClear.py:215 +#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5680 +#: flatcamGUI/FlatCAMGUI.py:5921 flatcamTools/ToolNonCopperClear.py:215 #: flatcamTools/ToolPaint.py:213 msgid "Contour:" msgstr "Kontur:" -#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5436 -#: flatcamGUI/FlatCAMGUI.py:5677 flatcamTools/ToolNonCopperClear.py:217 +#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5682 +#: flatcamGUI/FlatCAMGUI.py:5923 flatcamTools/ToolNonCopperClear.py:217 #: flatcamTools/ToolPaint.py:215 msgid "" "Cut around the perimeter of the polygon\n" @@ -2249,23 +2297,23 @@ msgstr "" "Schneiden Sie um den Umfang des Polygons herum\n" "Ecken und Kanten schneiden." -#: flatcamEditors/FlatCAMGeoEditor.py:508 +#: flatcamEditors/FlatCAMGeoEditor.py:510 msgid "Paint" msgstr "Malen" -#: flatcamEditors/FlatCAMGeoEditor.py:526 flatcamGUI/FlatCAMGUI.py:635 -#: flatcamGUI/FlatCAMGUI.py:1851 flatcamGUI/ObjectUI.py:1308 +#: flatcamEditors/FlatCAMGeoEditor.py:528 flatcamGUI/FlatCAMGUI.py:648 +#: flatcamGUI/FlatCAMGUI.py:1865 flatcamGUI/ObjectUI.py:1314 #: flatcamTools/ToolPaint.py:341 msgid "Paint Tool" msgstr "Werkzeug Malen" -#: flatcamEditors/FlatCAMGeoEditor.py:562 +#: flatcamEditors/FlatCAMGeoEditor.py:564 msgid "[WARNING_NOTCL] Paint cancelled. No shape selected." msgstr "[WARNING_NOTCL] Farbe abgebrochen. Keine Form ausgewählt" -#: flatcamEditors/FlatCAMGeoEditor.py:573 flatcamTools/ToolCutOut.py:352 -#: flatcamTools/ToolCutOut.py:496 flatcamTools/ToolCutOut.py:616 -#: flatcamTools/ToolCutOut.py:721 flatcamTools/ToolDblSided.py:363 +#: flatcamEditors/FlatCAMGeoEditor.py:575 flatcamTools/ToolCutOut.py:355 +#: flatcamTools/ToolCutOut.py:512 flatcamTools/ToolCutOut.py:651 +#: flatcamTools/ToolCutOut.py:756 flatcamTools/ToolDblSided.py:363 msgid "" "[WARNING_NOTCL] Tool diameter value is missing or wrong format. Add it and " "retry." @@ -2273,14 +2321,14 @@ msgstr "" "[WARNING_NOTCL] Werkzeugdurchmesserwert fehlt oder falsches Format. Fügen " "Sie es hinzu und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGeoEditor.py:584 +#: flatcamEditors/FlatCAMGeoEditor.py:586 msgid "" "[WARNING_NOTCL] Overlap value is missing or wrong format. Add it and retry." msgstr "" "[WARNING_NOTCL] Überlappungswert fehlt oder falsches Format. Fügen Sie es " "hinzu und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGeoEditor.py:596 +#: flatcamEditors/FlatCAMGeoEditor.py:598 msgid "" "[WARNING_NOTCL] Margin distance value is missing or wrong format. Add it and " "retry." @@ -2288,63 +2336,63 @@ msgstr "" "[WARNING_NOTCL] Randabstandswert fehlt oder falsches Format. Fügen Sie es " "hinzu und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGeoEditor.py:605 -#: flatcamEditors/FlatCAMGeoEditor.py:2634 -#: flatcamEditors/FlatCAMGeoEditor.py:2660 -#: flatcamEditors/FlatCAMGeoEditor.py:2686 +#: flatcamEditors/FlatCAMGeoEditor.py:607 +#: flatcamEditors/FlatCAMGeoEditor.py:2721 +#: flatcamEditors/FlatCAMGeoEditor.py:2747 +#: flatcamEditors/FlatCAMGeoEditor.py:2773 #: flatcamTools/ToolNonCopperClear.py:813 flatcamTools/ToolProperties.py:104 msgid "Tools" msgstr "Werkzeuge" -#: flatcamEditors/FlatCAMGeoEditor.py:616 -#: flatcamEditors/FlatCAMGeoEditor.py:989 -#: flatcamEditors/FlatCAMGrbEditor.py:3883 -#: flatcamEditors/FlatCAMGrbEditor.py:4267 flatcamGUI/FlatCAMGUI.py:646 -#: flatcamGUI/FlatCAMGUI.py:1864 flatcamTools/ToolTransform.py:398 +#: flatcamEditors/FlatCAMGeoEditor.py:618 +#: flatcamEditors/FlatCAMGeoEditor.py:991 +#: flatcamEditors/FlatCAMGrbEditor.py:4365 +#: flatcamEditors/FlatCAMGrbEditor.py:4750 flatcamGUI/FlatCAMGUI.py:659 +#: flatcamGUI/FlatCAMGUI.py:1878 flatcamTools/ToolTransform.py:398 msgid "Transform Tool" msgstr "Werkzeug Umwandeln" -#: flatcamEditors/FlatCAMGeoEditor.py:617 -#: flatcamEditors/FlatCAMGeoEditor.py:678 -#: flatcamEditors/FlatCAMGrbEditor.py:3884 -#: flatcamEditors/FlatCAMGrbEditor.py:3945 flatcamTools/ToolTransform.py:24 +#: flatcamEditors/FlatCAMGeoEditor.py:619 +#: flatcamEditors/FlatCAMGeoEditor.py:680 +#: flatcamEditors/FlatCAMGrbEditor.py:4366 +#: flatcamEditors/FlatCAMGrbEditor.py:4428 flatcamTools/ToolTransform.py:24 #: flatcamTools/ToolTransform.py:82 msgid "Rotate" msgstr "Drehen" -#: flatcamEditors/FlatCAMGeoEditor.py:618 -#: flatcamEditors/FlatCAMGrbEditor.py:3885 flatcamTools/ToolTransform.py:25 +#: flatcamEditors/FlatCAMGeoEditor.py:620 +#: flatcamEditors/FlatCAMGrbEditor.py:4367 flatcamTools/ToolTransform.py:25 msgid "Skew/Shear" msgstr "Neigung/Schere" -#: flatcamEditors/FlatCAMGeoEditor.py:619 -#: flatcamEditors/FlatCAMGrbEditor.py:1920 -#: flatcamEditors/FlatCAMGrbEditor.py:3886 flatcamGUI/FlatCAMGUI.py:709 -#: flatcamGUI/FlatCAMGUI.py:1930 flatcamGUI/ObjectUI.py:100 +#: flatcamEditors/FlatCAMGeoEditor.py:621 +#: flatcamEditors/FlatCAMGrbEditor.py:2313 +#: flatcamEditors/FlatCAMGrbEditor.py:4368 flatcamGUI/FlatCAMGUI.py:722 +#: flatcamGUI/FlatCAMGUI.py:1944 flatcamGUI/ObjectUI.py:100 #: flatcamTools/ToolTransform.py:26 msgid "Scale" msgstr "Skalieren" -#: flatcamEditors/FlatCAMGeoEditor.py:620 -#: flatcamEditors/FlatCAMGrbEditor.py:3887 flatcamTools/ToolTransform.py:27 +#: flatcamEditors/FlatCAMGeoEditor.py:622 +#: flatcamEditors/FlatCAMGrbEditor.py:4369 flatcamTools/ToolTransform.py:27 msgid "Mirror (Flip)" msgstr "Spiegeln (Flip)" -#: flatcamEditors/FlatCAMGeoEditor.py:621 -#: flatcamEditors/FlatCAMGrbEditor.py:3888 flatcamGUI/ObjectUI.py:127 -#: flatcamGUI/ObjectUI.py:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamEditors/FlatCAMGeoEditor.py:623 +#: flatcamEditors/FlatCAMGrbEditor.py:4370 flatcamGUI/ObjectUI.py:127 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 #: flatcamTools/ToolTransform.py:28 msgid "Offset" msgstr "Versatz" -#: flatcamEditors/FlatCAMGeoEditor.py:632 -#: flatcamEditors/FlatCAMGrbEditor.py:3899 +#: flatcamEditors/FlatCAMGeoEditor.py:634 +#: flatcamEditors/FlatCAMGrbEditor.py:4382 #, python-format msgid "Editor %s" msgstr "Editor %s" -#: flatcamEditors/FlatCAMGeoEditor.py:666 -#: flatcamEditors/FlatCAMGrbEditor.py:3933 flatcamTools/ToolTransform.py:70 +#: flatcamEditors/FlatCAMGeoEditor.py:668 +#: flatcamEditors/FlatCAMGrbEditor.py:4416 flatcamTools/ToolTransform.py:70 msgid "" "Angle for Rotation action, in degrees.\n" "Float number between -360 and 359.\n" @@ -2356,8 +2404,8 @@ msgstr "" "Positive Zahlen für CW-Bewegung.\n" "Negative Zahlen für CCW-Bewegung." -#: flatcamEditors/FlatCAMGeoEditor.py:680 -#: flatcamEditors/FlatCAMGrbEditor.py:3947 +#: flatcamEditors/FlatCAMGeoEditor.py:682 +#: flatcamEditors/FlatCAMGrbEditor.py:4430 msgid "" "Rotate the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2367,15 +2415,15 @@ msgstr "" "Der Bezugspunkt ist die Mitte von\n" "der Begrenzungsrahmen für alle ausgewählten Formen." -#: flatcamEditors/FlatCAMGeoEditor.py:703 -#: flatcamEditors/FlatCAMGrbEditor.py:3970 flatcamTools/ToolTransform.py:107 +#: flatcamEditors/FlatCAMGeoEditor.py:705 +#: flatcamEditors/FlatCAMGrbEditor.py:4453 flatcamTools/ToolTransform.py:107 msgid "Angle X:" msgstr "Winkel X:" -#: flatcamEditors/FlatCAMGeoEditor.py:705 -#: flatcamEditors/FlatCAMGeoEditor.py:723 -#: flatcamEditors/FlatCAMGrbEditor.py:3972 -#: flatcamEditors/FlatCAMGrbEditor.py:3990 flatcamTools/ToolTransform.py:109 +#: flatcamEditors/FlatCAMGeoEditor.py:707 +#: flatcamEditors/FlatCAMGeoEditor.py:725 +#: flatcamEditors/FlatCAMGrbEditor.py:4455 +#: flatcamEditors/FlatCAMGrbEditor.py:4473 flatcamTools/ToolTransform.py:109 #: flatcamTools/ToolTransform.py:127 msgid "" "Angle for Skew action, in degrees.\n" @@ -2384,15 +2432,15 @@ msgstr "" "Winkel für die Schräglage in Grad.\n" "Float-Nummer zwischen -360 und 359." -#: flatcamEditors/FlatCAMGeoEditor.py:714 -#: flatcamEditors/FlatCAMGrbEditor.py:3981 flatcamTools/ToolTransform.py:118 +#: flatcamEditors/FlatCAMGeoEditor.py:716 +#: flatcamEditors/FlatCAMGrbEditor.py:4464 flatcamTools/ToolTransform.py:118 msgid "Skew X" msgstr "Neigung X" -#: flatcamEditors/FlatCAMGeoEditor.py:716 -#: flatcamEditors/FlatCAMGeoEditor.py:734 -#: flatcamEditors/FlatCAMGrbEditor.py:3983 -#: flatcamEditors/FlatCAMGrbEditor.py:4001 +#: flatcamEditors/FlatCAMGeoEditor.py:718 +#: flatcamEditors/FlatCAMGeoEditor.py:736 +#: flatcamEditors/FlatCAMGrbEditor.py:4466 +#: flatcamEditors/FlatCAMGrbEditor.py:4484 msgid "" "Skew/shear the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2402,35 +2450,35 @@ msgstr "" "Der Bezugspunkt ist die Mitte von\n" "der Begrenzungsrahmen für alle ausgewählten Formen." -#: flatcamEditors/FlatCAMGeoEditor.py:721 -#: flatcamEditors/FlatCAMGrbEditor.py:3988 flatcamTools/ToolTransform.py:125 +#: flatcamEditors/FlatCAMGeoEditor.py:723 +#: flatcamEditors/FlatCAMGrbEditor.py:4471 flatcamTools/ToolTransform.py:125 msgid "Angle Y:" msgstr "Winkel Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:732 -#: flatcamEditors/FlatCAMGrbEditor.py:3999 flatcamTools/ToolTransform.py:136 +#: flatcamEditors/FlatCAMGeoEditor.py:734 +#: flatcamEditors/FlatCAMGrbEditor.py:4482 flatcamTools/ToolTransform.py:136 msgid "Skew Y" msgstr "Neigung Y" -#: flatcamEditors/FlatCAMGeoEditor.py:760 -#: flatcamEditors/FlatCAMGrbEditor.py:4027 flatcamTools/ToolTransform.py:164 +#: flatcamEditors/FlatCAMGeoEditor.py:762 +#: flatcamEditors/FlatCAMGrbEditor.py:4510 flatcamTools/ToolTransform.py:164 msgid "Factor X:" msgstr "Faktor X:" -#: flatcamEditors/FlatCAMGeoEditor.py:762 -#: flatcamEditors/FlatCAMGrbEditor.py:4029 flatcamTools/ToolTransform.py:166 +#: flatcamEditors/FlatCAMGeoEditor.py:764 +#: flatcamEditors/FlatCAMGrbEditor.py:4512 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:770 -#: flatcamEditors/FlatCAMGrbEditor.py:4037 flatcamTools/ToolTransform.py:174 +#: flatcamEditors/FlatCAMGeoEditor.py:772 +#: flatcamEditors/FlatCAMGrbEditor.py:4520 flatcamTools/ToolTransform.py:174 msgid "Scale X" msgstr "Maßstab X" -#: flatcamEditors/FlatCAMGeoEditor.py:772 -#: flatcamEditors/FlatCAMGeoEditor.py:789 -#: flatcamEditors/FlatCAMGrbEditor.py:4039 -#: flatcamEditors/FlatCAMGrbEditor.py:4056 +#: flatcamEditors/FlatCAMGeoEditor.py:774 +#: flatcamEditors/FlatCAMGeoEditor.py:791 +#: flatcamEditors/FlatCAMGrbEditor.py:4522 +#: flatcamEditors/FlatCAMGrbEditor.py:4539 msgid "" "Scale the selected shape(s).\n" "The point of reference depends on \n" @@ -2440,29 +2488,29 @@ msgstr "" "Der Bezugspunkt hängt von ab\n" "das Kontrollkästchen Skalenreferenz." -#: flatcamEditors/FlatCAMGeoEditor.py:777 -#: flatcamEditors/FlatCAMGrbEditor.py:4044 flatcamTools/ToolTransform.py:181 +#: flatcamEditors/FlatCAMGeoEditor.py:779 +#: flatcamEditors/FlatCAMGrbEditor.py:4527 flatcamTools/ToolTransform.py:181 msgid "Factor Y:" msgstr "Faktor Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:779 -#: flatcamEditors/FlatCAMGrbEditor.py:4046 flatcamTools/ToolTransform.py:183 +#: flatcamEditors/FlatCAMGeoEditor.py:781 +#: flatcamEditors/FlatCAMGrbEditor.py:4529 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:787 -#: flatcamEditors/FlatCAMGrbEditor.py:4054 flatcamTools/ToolTransform.py:191 +#: flatcamEditors/FlatCAMGeoEditor.py:789 +#: flatcamEditors/FlatCAMGrbEditor.py:4537 flatcamTools/ToolTransform.py:191 msgid "Scale Y" msgstr "Maßstab Y" -#: flatcamEditors/FlatCAMGeoEditor.py:796 -#: flatcamEditors/FlatCAMGrbEditor.py:4063 flatcamGUI/FlatCAMGUI.py:6024 +#: flatcamEditors/FlatCAMGeoEditor.py:798 +#: flatcamEditors/FlatCAMGrbEditor.py:4546 flatcamGUI/FlatCAMGUI.py:6270 #: flatcamTools/ToolTransform.py:200 msgid "Link" msgstr "Verknüpfung" -#: flatcamEditors/FlatCAMGeoEditor.py:798 -#: flatcamEditors/FlatCAMGrbEditor.py:4065 +#: flatcamEditors/FlatCAMGeoEditor.py:800 +#: flatcamEditors/FlatCAMGrbEditor.py:4548 msgid "" "Scale the selected shape(s)\n" "using the Scale Factor X for both axis." @@ -2470,14 +2518,14 @@ msgstr "" "Skalieren der ausgewählten Form (en)\n" "Verwenden des Skalierungsfaktors X für beide Achsen." -#: flatcamEditors/FlatCAMGeoEditor.py:804 -#: flatcamEditors/FlatCAMGrbEditor.py:4071 flatcamGUI/FlatCAMGUI.py:6032 +#: flatcamEditors/FlatCAMGeoEditor.py:806 +#: flatcamEditors/FlatCAMGrbEditor.py:4554 flatcamGUI/FlatCAMGUI.py:6278 #: flatcamTools/ToolTransform.py:208 msgid "Scale Reference" msgstr "Skalenreferenz" -#: flatcamEditors/FlatCAMGeoEditor.py:806 -#: flatcamEditors/FlatCAMGrbEditor.py:4073 +#: flatcamEditors/FlatCAMGeoEditor.py:808 +#: flatcamEditors/FlatCAMGrbEditor.py:4556 msgid "" "Scale the selected shape(s)\n" "using the origin reference when checked,\n" @@ -2489,25 +2537,25 @@ msgstr "" "und die Mitte der größten Begrenzungsbox\n" "der ausgewählten Formen, wenn nicht markiert." -#: flatcamEditors/FlatCAMGeoEditor.py:834 -#: flatcamEditors/FlatCAMGrbEditor.py:4102 flatcamTools/ToolTransform.py:238 +#: flatcamEditors/FlatCAMGeoEditor.py:836 +#: flatcamEditors/FlatCAMGrbEditor.py:4585 flatcamTools/ToolTransform.py:238 msgid "Value X:" msgstr "Wert X:" -#: flatcamEditors/FlatCAMGeoEditor.py:836 -#: flatcamEditors/FlatCAMGrbEditor.py:4104 flatcamTools/ToolTransform.py:240 +#: flatcamEditors/FlatCAMGeoEditor.py:838 +#: flatcamEditors/FlatCAMGrbEditor.py:4587 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:844 -#: flatcamEditors/FlatCAMGrbEditor.py:4112 flatcamTools/ToolTransform.py:248 +#: flatcamEditors/FlatCAMGeoEditor.py:846 +#: flatcamEditors/FlatCAMGrbEditor.py:4595 flatcamTools/ToolTransform.py:248 msgid "Offset X" msgstr "Versatz X" -#: flatcamEditors/FlatCAMGeoEditor.py:846 -#: flatcamEditors/FlatCAMGeoEditor.py:864 -#: flatcamEditors/FlatCAMGrbEditor.py:4114 -#: flatcamEditors/FlatCAMGrbEditor.py:4132 +#: flatcamEditors/FlatCAMGeoEditor.py:848 +#: flatcamEditors/FlatCAMGeoEditor.py:866 +#: flatcamEditors/FlatCAMGrbEditor.py:4597 +#: flatcamEditors/FlatCAMGrbEditor.py:4615 msgid "" "Offset the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2517,30 +2565,30 @@ msgstr "" "Der Bezugspunkt ist die Mitte von\n" "der Begrenzungsrahmen für alle ausgewählten Formen.\n" -#: flatcamEditors/FlatCAMGeoEditor.py:852 -#: flatcamEditors/FlatCAMGrbEditor.py:4120 flatcamTools/ToolTransform.py:255 +#: flatcamEditors/FlatCAMGeoEditor.py:854 +#: flatcamEditors/FlatCAMGrbEditor.py:4603 flatcamTools/ToolTransform.py:255 msgid "Value Y:" msgstr "Wert Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:854 -#: flatcamEditors/FlatCAMGrbEditor.py:4122 flatcamTools/ToolTransform.py:257 +#: flatcamEditors/FlatCAMGeoEditor.py:856 +#: flatcamEditors/FlatCAMGrbEditor.py:4605 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:862 -#: flatcamEditors/FlatCAMGrbEditor.py:4130 flatcamTools/ToolTransform.py:265 +#: flatcamEditors/FlatCAMGeoEditor.py:864 +#: flatcamEditors/FlatCAMGrbEditor.py:4613 flatcamTools/ToolTransform.py:265 msgid "Offset Y" msgstr "Versatz Y" -#: flatcamEditors/FlatCAMGeoEditor.py:893 -#: flatcamEditors/FlatCAMGrbEditor.py:4161 flatcamTools/ToolTransform.py:295 +#: flatcamEditors/FlatCAMGeoEditor.py:895 +#: flatcamEditors/FlatCAMGrbEditor.py:4644 flatcamTools/ToolTransform.py:295 msgid "Flip on X" msgstr "Flip auf X" -#: flatcamEditors/FlatCAMGeoEditor.py:895 -#: flatcamEditors/FlatCAMGeoEditor.py:903 -#: flatcamEditors/FlatCAMGrbEditor.py:4163 -#: flatcamEditors/FlatCAMGrbEditor.py:4171 +#: flatcamEditors/FlatCAMGeoEditor.py:897 +#: flatcamEditors/FlatCAMGeoEditor.py:905 +#: flatcamEditors/FlatCAMGrbEditor.py:4646 +#: flatcamEditors/FlatCAMGrbEditor.py:4654 msgid "" "Flip the selected shape(s) over the X axis.\n" "Does not create a new shape." @@ -2548,18 +2596,18 @@ msgstr "" "Kippen Sie die ausgewählte Form (en) über die X-Achse.\n" "Erzeugt keine neue Form." -#: flatcamEditors/FlatCAMGeoEditor.py:901 -#: flatcamEditors/FlatCAMGrbEditor.py:4169 flatcamTools/ToolTransform.py:303 +#: flatcamEditors/FlatCAMGeoEditor.py:903 +#: flatcamEditors/FlatCAMGrbEditor.py:4652 flatcamTools/ToolTransform.py:303 msgid "Flip on Y" msgstr "Flip auf Y" -#: flatcamEditors/FlatCAMGeoEditor.py:910 -#: flatcamEditors/FlatCAMGrbEditor.py:4178 flatcamTools/ToolTransform.py:312 +#: flatcamEditors/FlatCAMGeoEditor.py:912 +#: flatcamEditors/FlatCAMGrbEditor.py:4661 flatcamTools/ToolTransform.py:312 msgid "Ref Pt" msgstr "Ref. Pt" -#: flatcamEditors/FlatCAMGeoEditor.py:912 -#: flatcamEditors/FlatCAMGrbEditor.py:4180 +#: flatcamEditors/FlatCAMGeoEditor.py:914 +#: flatcamEditors/FlatCAMGrbEditor.py:4663 msgid "" "Flip the selected shape(s)\n" "around the point in Point Entry Field.\n" @@ -2582,13 +2630,13 @@ msgstr "" "Oder geben Sie die Koordinaten im Format (x, y) in ein\n" "Punkt-Eingabefeld und klicken Sie auf X (Y) drehen" -#: flatcamEditors/FlatCAMGeoEditor.py:924 -#: flatcamEditors/FlatCAMGrbEditor.py:4192 flatcamTools/ToolTransform.py:325 +#: flatcamEditors/FlatCAMGeoEditor.py:926 +#: flatcamEditors/FlatCAMGrbEditor.py:4675 flatcamTools/ToolTransform.py:325 msgid "Point:" msgstr "Punkt:" -#: flatcamEditors/FlatCAMGeoEditor.py:926 -#: flatcamEditors/FlatCAMGrbEditor.py:4194 +#: flatcamEditors/FlatCAMGeoEditor.py:928 +#: flatcamEditors/FlatCAMGrbEditor.py:4677 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" @@ -2599,8 +2647,8 @@ 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 verwendet wird." -#: flatcamEditors/FlatCAMGeoEditor.py:938 -#: flatcamEditors/FlatCAMGrbEditor.py:4206 flatcamTools/ToolTransform.py:339 +#: flatcamEditors/FlatCAMGeoEditor.py:940 +#: flatcamEditors/FlatCAMGrbEditor.py:4689 flatcamTools/ToolTransform.py:339 msgid "" "The point coordinates can be captured by\n" "left click on canvas together with pressing\n" @@ -2611,278 +2659,274 @@ msgstr "" "Shift Taste. Klicken Sie dann auf die Schaltfläche Hinzufügen, um sie " "einzufügen." -#: flatcamEditors/FlatCAMGeoEditor.py:1053 -#: flatcamEditors/FlatCAMGrbEditor.py:4331 +#: flatcamEditors/FlatCAMGeoEditor.py:1055 +#: flatcamEditors/FlatCAMGrbEditor.py:4814 msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected." msgstr "[WARNING_NOTCL] Transformation abgebrochen Keine Form ausgewählt" -#: flatcamEditors/FlatCAMGeoEditor.py:1074 -#: flatcamEditors/FlatCAMGrbEditor.py:4351 flatcamTools/ToolTransform.py:468 +#: flatcamEditors/FlatCAMGeoEditor.py:1076 +#: flatcamEditors/FlatCAMGrbEditor.py:4834 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:1111 -#: flatcamEditors/FlatCAMGrbEditor.py:4388 flatcamTools/ToolTransform.py:502 +#: flatcamEditors/FlatCAMGeoEditor.py:1113 +#: flatcamEditors/FlatCAMGrbEditor.py:4877 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:1132 -#: flatcamEditors/FlatCAMGrbEditor.py:4409 flatcamTools/ToolTransform.py:520 +#: flatcamEditors/FlatCAMGeoEditor.py:1134 +#: flatcamEditors/FlatCAMGrbEditor.py:4904 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:1153 -#: flatcamEditors/FlatCAMGrbEditor.py:4430 flatcamTools/ToolTransform.py:538 +#: flatcamEditors/FlatCAMGeoEditor.py:1155 +#: flatcamEditors/FlatCAMGrbEditor.py:4931 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:1190 -#: flatcamEditors/FlatCAMGrbEditor.py:4467 flatcamTools/ToolTransform.py:572 +#: flatcamEditors/FlatCAMGeoEditor.py:1192 +#: flatcamEditors/FlatCAMGrbEditor.py:4972 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:1222 -#: flatcamEditors/FlatCAMGrbEditor.py:4499 flatcamTools/ToolTransform.py:601 +#: flatcamEditors/FlatCAMGeoEditor.py:1224 +#: flatcamEditors/FlatCAMGrbEditor.py:5010 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:1243 -#: flatcamEditors/FlatCAMGrbEditor.py:4520 flatcamTools/ToolTransform.py:619 +#: flatcamEditors/FlatCAMGeoEditor.py:1245 +#: flatcamEditors/FlatCAMGrbEditor.py:5036 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:1261 -#: flatcamEditors/FlatCAMGrbEditor.py:4538 +#: flatcamEditors/FlatCAMGeoEditor.py:1263 +#: flatcamEditors/FlatCAMGrbEditor.py:5059 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:1264 -#: flatcamEditors/FlatCAMGrbEditor.py:4541 flatcamTools/ToolTransform.py:640 +#: flatcamEditors/FlatCAMGeoEditor.py:1266 +#: flatcamEditors/FlatCAMGrbEditor.py:5062 flatcamTools/ToolTransform.py:640 msgid "Appying Rotate" msgstr "Anwenden Drehen" -#: flatcamEditors/FlatCAMGeoEditor.py:1292 -#: flatcamEditors/FlatCAMGrbEditor.py:4569 +#: flatcamEditors/FlatCAMGeoEditor.py:1294 +#: flatcamEditors/FlatCAMGrbEditor.py:5093 msgid "[success] Done. Rotate completed." msgstr "[success] Erledigt. Drehen abgeschlossen." -#: flatcamEditors/FlatCAMGeoEditor.py:1308 -#: flatcamEditors/FlatCAMGrbEditor.py:4585 +#: flatcamEditors/FlatCAMGeoEditor.py:1310 +#: flatcamEditors/FlatCAMGrbEditor.py:5112 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:1311 -#: flatcamEditors/FlatCAMGrbEditor.py:4588 flatcamTools/ToolTransform.py:692 +#: flatcamEditors/FlatCAMGeoEditor.py:1313 +#: flatcamEditors/FlatCAMGrbEditor.py:5115 flatcamTools/ToolTransform.py:691 msgid "Applying Flip" msgstr "Flip anwenden" -#: flatcamEditors/FlatCAMGeoEditor.py:1341 -#: flatcamEditors/FlatCAMGrbEditor.py:4618 flatcamTools/ToolTransform.py:735 +#: flatcamEditors/FlatCAMGeoEditor.py:1343 +#: flatcamEditors/FlatCAMGrbEditor.py:5152 flatcamTools/ToolTransform.py:733 msgid "[success] Flip on the Y axis done ..." msgstr "[success] Flip auf der Y-Achse erledigt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1344 -#: flatcamEditors/FlatCAMGrbEditor.py:4621 flatcamTools/ToolTransform.py:745 +#: flatcamEditors/FlatCAMGeoEditor.py:1346 +#: flatcamEditors/FlatCAMGrbEditor.py:5160 flatcamTools/ToolTransform.py:742 msgid "[success] Flip on the X axis done ..." msgstr "[success] Flip auf der X-Achse erledigt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1363 -#: flatcamEditors/FlatCAMGrbEditor.py:4640 +#: flatcamEditors/FlatCAMGeoEditor.py:1365 +#: flatcamEditors/FlatCAMGrbEditor.py:5180 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:1366 -#: flatcamEditors/FlatCAMGrbEditor.py:4643 flatcamTools/ToolTransform.py:762 +#: flatcamEditors/FlatCAMGeoEditor.py:1368 +#: flatcamEditors/FlatCAMGrbEditor.py:5183 flatcamTools/ToolTransform.py:760 msgid "Applying Skew" msgstr "Anwenden von Skew" -#: flatcamEditors/FlatCAMGeoEditor.py:1391 -#: flatcamEditors/FlatCAMGrbEditor.py:4668 flatcamTools/ToolTransform.py:793 +#: flatcamEditors/FlatCAMGeoEditor.py:1393 +#: flatcamEditors/FlatCAMGrbEditor.py:5216 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:1395 -#: flatcamEditors/FlatCAMGrbEditor.py:4672 flatcamTools/ToolTransform.py:797 +#: flatcamEditors/FlatCAMGeoEditor.py:1397 +#: flatcamEditors/FlatCAMGrbEditor.py:5220 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:1406 -#: flatcamEditors/FlatCAMGrbEditor.py:4683 +#: flatcamEditors/FlatCAMGeoEditor.py:1408 +#: flatcamEditors/FlatCAMGrbEditor.py:5239 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:1409 -#: flatcamEditors/FlatCAMGrbEditor.py:4686 flatcamTools/ToolTransform.py:811 +#: flatcamEditors/FlatCAMGeoEditor.py:1411 +#: flatcamEditors/FlatCAMGrbEditor.py:5242 flatcamTools/ToolTransform.py:809 msgid "Applying Scale" msgstr "Maßstab anwenden" -#: flatcamEditors/FlatCAMGeoEditor.py:1442 -#: flatcamEditors/FlatCAMGrbEditor.py:4719 flatcamTools/ToolTransform.py:849 +#: flatcamEditors/FlatCAMGeoEditor.py:1444 +#: flatcamEditors/FlatCAMGrbEditor.py:5278 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:1445 -#: flatcamEditors/FlatCAMGrbEditor.py:4722 flatcamTools/ToolTransform.py:852 +#: flatcamEditors/FlatCAMGeoEditor.py:1447 +#: flatcamEditors/FlatCAMGrbEditor.py:5281 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:1454 -#: flatcamEditors/FlatCAMGrbEditor.py:4731 +#: flatcamEditors/FlatCAMGeoEditor.py:1456 +#: flatcamEditors/FlatCAMGrbEditor.py:5294 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:1457 -#: flatcamEditors/FlatCAMGrbEditor.py:4734 flatcamTools/ToolTransform.py:864 +#: flatcamEditors/FlatCAMGeoEditor.py:1459 +#: flatcamEditors/FlatCAMGrbEditor.py:5297 flatcamTools/ToolTransform.py:861 msgid "Applying Offset" msgstr "Offsetdruck anwenden" -#: flatcamEditors/FlatCAMGeoEditor.py:1481 -#: flatcamEditors/FlatCAMGrbEditor.py:4758 flatcamTools/ToolTransform.py:894 +#: flatcamEditors/FlatCAMGeoEditor.py:1483 +#: flatcamEditors/FlatCAMGrbEditor.py:5318 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:1485 -#: flatcamEditors/FlatCAMGrbEditor.py:4762 flatcamTools/ToolTransform.py:898 +#: flatcamEditors/FlatCAMGeoEditor.py:1487 +#: flatcamEditors/FlatCAMGrbEditor.py:5322 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:1489 -#: flatcamEditors/FlatCAMGrbEditor.py:4766 +#: flatcamEditors/FlatCAMGeoEditor.py:1491 +#: flatcamEditors/FlatCAMGrbEditor.py:5326 msgid "Rotate ..." msgstr "Drehen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1490 -#: flatcamEditors/FlatCAMGeoEditor.py:1547 -#: flatcamEditors/FlatCAMGeoEditor.py:1564 -#: flatcamEditors/FlatCAMGrbEditor.py:4767 -#: flatcamEditors/FlatCAMGrbEditor.py:4824 -#: flatcamEditors/FlatCAMGrbEditor.py:4841 +#: flatcamEditors/FlatCAMGeoEditor.py:1492 +#: flatcamEditors/FlatCAMGeoEditor.py:1549 +#: flatcamEditors/FlatCAMGeoEditor.py:1566 +#: flatcamEditors/FlatCAMGrbEditor.py:5327 +#: flatcamEditors/FlatCAMGrbEditor.py:5384 +#: flatcamEditors/FlatCAMGrbEditor.py:5401 msgid "Enter an Angle Value (degrees):" msgstr "Geben Sie einen Winkelwert (Grad) ein:" -#: flatcamEditors/FlatCAMGeoEditor.py:1499 -#: flatcamEditors/FlatCAMGrbEditor.py:4776 +#: flatcamEditors/FlatCAMGeoEditor.py:1501 +#: flatcamEditors/FlatCAMGrbEditor.py:5336 msgid "[success] Geometry shape rotate done..." msgstr "[success] Geometrieform drehen fertig ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1504 -#: flatcamEditors/FlatCAMGrbEditor.py:4781 +#: flatcamEditors/FlatCAMGeoEditor.py:1506 +#: flatcamEditors/FlatCAMGrbEditor.py:5341 msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..." msgstr "[WARNING_NOTCL] Geometrieform drehen abgebrochen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1510 -#: flatcamEditors/FlatCAMGrbEditor.py:4787 +#: flatcamEditors/FlatCAMGeoEditor.py:1512 +#: flatcamEditors/FlatCAMGrbEditor.py:5347 msgid "Offset on X axis ..." msgstr "Versatz auf der X-Achse ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1511 -#: flatcamEditors/FlatCAMGeoEditor.py:1530 -#: flatcamEditors/FlatCAMGrbEditor.py:4788 -#: flatcamEditors/FlatCAMGrbEditor.py:4807 +#: flatcamEditors/FlatCAMGeoEditor.py:1513 +#: flatcamEditors/FlatCAMGeoEditor.py:1532 +#: flatcamEditors/FlatCAMGrbEditor.py:5348 +#: flatcamEditors/FlatCAMGrbEditor.py:5367 #, python-format msgid "Enter a distance Value (%s):" msgstr "Geben Sie einen Abstand ein (%s):" -#: flatcamEditors/FlatCAMGeoEditor.py:1520 -#: flatcamEditors/FlatCAMGrbEditor.py:4797 +#: flatcamEditors/FlatCAMGeoEditor.py:1522 +#: flatcamEditors/FlatCAMGrbEditor.py:5357 msgid "[success] Geometry shape offset on X axis done..." msgstr "[success] Geometrieformversatz auf der X-Achse erfolgt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1524 -#: flatcamEditors/FlatCAMGrbEditor.py:4801 +#: flatcamEditors/FlatCAMGeoEditor.py:1526 +#: flatcamEditors/FlatCAMGrbEditor.py:5361 msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..." msgstr "[WARNING_NOTCL] Geometrieformversatz X abgebrochen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1529 -#: flatcamEditors/FlatCAMGrbEditor.py:4806 +#: flatcamEditors/FlatCAMGeoEditor.py:1531 +#: flatcamEditors/FlatCAMGrbEditor.py:5366 msgid "Offset on Y axis ..." msgstr "Versatz auf der Y-Achse ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1539 -#: flatcamEditors/FlatCAMGrbEditor.py:4816 +#: flatcamEditors/FlatCAMGeoEditor.py:1541 +#: flatcamEditors/FlatCAMGrbEditor.py:5376 msgid "[success] Geometry shape offset on Y axis done..." msgstr "[success] Geometrieformversatz auf Y-Achse erfolgt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1543 -#: flatcamEditors/FlatCAMGrbEditor.py:4820 +#: flatcamEditors/FlatCAMGeoEditor.py:1545 +#: flatcamEditors/FlatCAMGrbEditor.py:5380 msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..." msgstr "[WARNING_NOTCL] Geometrieformversatz Y abgebrochen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1546 -#: flatcamEditors/FlatCAMGrbEditor.py:4823 +#: flatcamEditors/FlatCAMGeoEditor.py:1548 +#: flatcamEditors/FlatCAMGrbEditor.py:5383 msgid "Skew on X axis ..." msgstr "Neigung auf der X-Achse ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1556 -#: flatcamEditors/FlatCAMGrbEditor.py:4833 +#: flatcamEditors/FlatCAMGeoEditor.py:1558 +#: flatcamEditors/FlatCAMGrbEditor.py:5393 msgid "[success] Geometry shape skew on X axis done..." msgstr "[success] Geometrieformversatz auf X-Achse ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1560 -#: flatcamEditors/FlatCAMGrbEditor.py:4837 +#: flatcamEditors/FlatCAMGeoEditor.py:1562 +#: flatcamEditors/FlatCAMGrbEditor.py:5397 msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..." msgstr "[WARNING_NOTCL] Geometrieformversatz X abgebrochen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1563 -#: flatcamEditors/FlatCAMGrbEditor.py:4840 +#: flatcamEditors/FlatCAMGeoEditor.py:1565 +#: flatcamEditors/FlatCAMGrbEditor.py:5400 msgid "Skew on Y axis ..." msgstr "Neigung auf der Y-Achse ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1573 -#: flatcamEditors/FlatCAMGrbEditor.py:4850 +#: flatcamEditors/FlatCAMGeoEditor.py:1575 +#: flatcamEditors/FlatCAMGrbEditor.py:5410 msgid "[success] Geometry shape skew on Y axis done..." msgstr "[success] Geometrieformversatz auf Y-Achse erfolgt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1577 -#: flatcamEditors/FlatCAMGrbEditor.py:4854 +#: flatcamEditors/FlatCAMGeoEditor.py:1579 +#: flatcamEditors/FlatCAMGrbEditor.py:5414 msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..." msgstr "[WARNING_NOTCL] Geometrieformversatz Y abgebrochen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1942 #: flatcamEditors/FlatCAMGeoEditor.py:1943 #: flatcamEditors/FlatCAMGeoEditor.py:1994 -#: flatcamEditors/FlatCAMGeoEditor.py:1995 -#: flatcamEditors/FlatCAMGrbEditor.py:1081 -#: flatcamEditors/FlatCAMGrbEditor.py:1082 -#: flatcamEditors/FlatCAMGrbEditor.py:1142 -#: flatcamEditors/FlatCAMGrbEditor.py:1143 +#: flatcamEditors/FlatCAMGrbEditor.py:1351 +#: flatcamEditors/FlatCAMGrbEditor.py:1420 msgid "Click on Center point ..." msgstr "Klicken Sie auf Mittelpunkt." #: flatcamEditors/FlatCAMGeoEditor.py:1950 -#: flatcamEditors/FlatCAMGrbEditor.py:1090 +#: flatcamEditors/FlatCAMGrbEditor.py:1359 msgid "Click on Perimeter point to complete ..." msgstr "Klicken Sie auf Umfangspunkt, um den Vorgang abzuschließen." @@ -2890,78 +2934,78 @@ msgstr "Klicken Sie auf Umfangspunkt, um den Vorgang abzuschließen." msgid "[success] Done. Adding Circle completed." msgstr "[success] Erledigt. Hinzufügen des Kreises abgeschlossen." -#: flatcamEditors/FlatCAMGeoEditor.py:2015 -#: flatcamEditors/FlatCAMGrbEditor.py:1168 +#: flatcamEditors/FlatCAMGeoEditor.py:2014 +#: flatcamEditors/FlatCAMGrbEditor.py:1445 msgid "Click on Start point ..." msgstr "Klicken Sie auf Startpunkt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2017 -#: flatcamEditors/FlatCAMGrbEditor.py:1170 +#: flatcamEditors/FlatCAMGeoEditor.py:2016 +#: flatcamEditors/FlatCAMGrbEditor.py:1447 msgid "Click on Point3 ..." msgstr "Klicken Sie auf Punkt3 ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2019 -#: flatcamEditors/FlatCAMGrbEditor.py:1172 +#: flatcamEditors/FlatCAMGeoEditor.py:2018 +#: flatcamEditors/FlatCAMGrbEditor.py:1449 msgid "Click on Stop point ..." msgstr "Klicken Sie auf Haltepunkt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2024 -#: flatcamEditors/FlatCAMGrbEditor.py:1177 +#: flatcamEditors/FlatCAMGeoEditor.py:2023 +#: flatcamEditors/FlatCAMGrbEditor.py:1454 msgid "Click on Stop point to complete ..." msgstr "Klicken Sie auf Stopp, um den Vorgang abzuschließen." -#: flatcamEditors/FlatCAMGeoEditor.py:2026 -#: flatcamEditors/FlatCAMGrbEditor.py:1179 +#: flatcamEditors/FlatCAMGeoEditor.py:2025 +#: flatcamEditors/FlatCAMGrbEditor.py:1456 msgid "Click on Point2 to complete ..." msgstr "Klicken Sie auf Punkt2, um den Vorgang abzuschließen." -#: flatcamEditors/FlatCAMGeoEditor.py:2028 -#: flatcamEditors/FlatCAMGrbEditor.py:1181 +#: flatcamEditors/FlatCAMGeoEditor.py:2027 +#: flatcamEditors/FlatCAMGrbEditor.py:1458 msgid "Click on Center point to complete ..." msgstr "Klicken Sie auf Mittelpunkt, um den Vorgang abzuschließen." -#: flatcamEditors/FlatCAMGeoEditor.py:2040 -#: flatcamEditors/FlatCAMGrbEditor.py:1193 +#: flatcamEditors/FlatCAMGeoEditor.py:2039 +#: flatcamEditors/FlatCAMGrbEditor.py:1470 #, python-format msgid "Direction: %s" msgstr "Richtung: %s" -#: flatcamEditors/FlatCAMGeoEditor.py:2050 -#: flatcamEditors/FlatCAMGrbEditor.py:1203 +#: flatcamEditors/FlatCAMGeoEditor.py:2049 +#: flatcamEditors/FlatCAMGrbEditor.py:1480 msgid "Mode: Start -> Stop -> Center. Click on Start point ..." msgstr "Modus: Start -> Stopp -> Zentrieren. Klicken Sie auf Startpunkt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2053 -#: flatcamEditors/FlatCAMGrbEditor.py:1206 +#: flatcamEditors/FlatCAMGeoEditor.py:2052 +#: flatcamEditors/FlatCAMGrbEditor.py:1483 msgid "Mode: Point1 -> Point3 -> Point2. Click on Point1 ..." msgstr "Modus: Punkt 1 -> Punkt 3 -> Punkt 2. Klicken Sie auf Punkt1 ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2056 -#: flatcamEditors/FlatCAMGrbEditor.py:1209 +#: flatcamEditors/FlatCAMGeoEditor.py:2055 +#: flatcamEditors/FlatCAMGrbEditor.py:1486 msgid "Mode: Center -> Start -> Stop. Click on Center point ..." msgstr "Modus: Mitte -> Start -> Stopp. Klicken Sie auf Mittelpunkt." -#: flatcamEditors/FlatCAMGeoEditor.py:2194 +#: flatcamEditors/FlatCAMGeoEditor.py:2193 msgid "[success] Done. Arc completed." msgstr "[success] Erledigt. Bogen abgeschlossen" -#: flatcamEditors/FlatCAMGeoEditor.py:2213 +#: flatcamEditors/FlatCAMGeoEditor.py:2212 +#: flatcamEditors/FlatCAMGeoEditor.py:2265 +#: flatcamEditors/FlatCAMGeoEditor.py:2640 msgid "Click on 1st corner ..." msgstr "Klicken Sie auf die 1. Ecke ..." +#: flatcamEditors/FlatCAMGeoEditor.py:2218 +msgid "Click on opposite corner to complete ..." +msgstr "" +"Klicken Sie auf die gegenüberliegende Ecke, um den Vorgang abzuschließen." + #: flatcamEditors/FlatCAMGeoEditor.py:2246 msgid "[success] Done. Rectangle completed." msgstr "[success] Erledigt. Rechteck fertiggestellt." -#: flatcamEditors/FlatCAMGeoEditor.py:2265 -#: flatcamEditors/FlatCAMGrbEditor.py:627 -msgid "Click on 1st point ..." -msgstr "Klicken Sie auf den 1. Punkt ..." - #: flatcamEditors/FlatCAMGeoEditor.py:2272 -#: flatcamEditors/FlatCAMGrbEditor.py:637 -#: flatcamEditors/FlatCAMGrbEditor.py:904 -msgid "Click on next Point or click Right mouse button to complete ..." +msgid "Click on next Point or click right mouse button to complete ..." msgstr "" "Klicken Sie auf den nächsten Punkt oder klicken Sie mit der rechten " "Maustaste, um den Vorgang abzuschließen." @@ -2972,8 +3016,8 @@ msgstr "[success] Erledigt. Polygon abgeschlossen" #: flatcamEditors/FlatCAMGeoEditor.py:2310 #: flatcamEditors/FlatCAMGeoEditor.py:2356 -#: flatcamEditors/FlatCAMGrbEditor.py:808 -#: flatcamEditors/FlatCAMGrbEditor.py:981 +#: flatcamEditors/FlatCAMGrbEditor.py:1055 +#: flatcamEditors/FlatCAMGrbEditor.py:1249 msgid "Backtracked one point ..." msgstr "Einen Punkt zurückverfolgt ..." @@ -2981,32 +3025,30 @@ msgstr "Einen Punkt zurückverfolgt ..." msgid "[success] Done. Path completed." msgstr "[success] Erledigt. Pfad abgeschlossen" -#: flatcamEditors/FlatCAMGeoEditor.py:2450 -#: flatcamEditors/FlatCAMGeoEditor.py:3611 -msgid "[WARNING_NOTCL] Move cancelled. No shape selected." -msgstr "[WARNING_NOTCL] Umzug abgebrochen. Keine Form ausgewählt." +#: flatcamEditors/FlatCAMGeoEditor.py:2461 +msgid "[WARNING_NOTCL] MOVE: No shape selected. Select a shape to move ..." +msgstr "" +"[WARNING_NOTCL] Bewegen: Keine Form ausgewählt. Wähle eine Form zum Bewegen " +"aus ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2454 -msgid "Click on reference point." -msgstr "Klicken Sie auf den Referenzpunkt." +#: flatcamEditors/FlatCAMGeoEditor.py:2463 +#: flatcamEditors/FlatCAMGeoEditor.py:2475 +msgid " MOVE: Click on reference point ..." +msgstr " Bewegen: Referenzpunkt anklicken ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2457 -msgid "Click on destination point." -msgstr "Klicken Sie auf den Zielpunkt." +#: flatcamEditors/FlatCAMGeoEditor.py:2466 +msgid " Click on destination point ..." +msgstr " Klicken Sie auf den Zielpunkt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2488 +#: flatcamEditors/FlatCAMGeoEditor.py:2500 msgid "[success] Done. Geometry(s) Move completed." msgstr "[success] Erledigt. Geometrie(n) Bewegung abgeschlossen." -#: flatcamEditors/FlatCAMGeoEditor.py:2533 +#: flatcamEditors/FlatCAMGeoEditor.py:2620 msgid "[success] Done. Geometry(s) Copy completed." msgstr "[success] Erledigt. Geometrie(n) Kopieren abgeschlossen." -#: flatcamEditors/FlatCAMGeoEditor.py:2553 -msgid "Click on the Destination point..." -msgstr "Klicken Sie auf den Zielpunkt ..." - -#: flatcamEditors/FlatCAMGeoEditor.py:2567 +#: flatcamEditors/FlatCAMGeoEditor.py:2654 #, python-format msgid "" "[ERROR]Font not supported. Only Regular, Bold, Italic and BoldItalic are " @@ -3015,62 +3057,62 @@ msgstr "" "[ERROR] Schrift wird nicht unterstützt. Es werden nur Regular, Bold, Italic " "und BoldItalic unterstützt. Error: %s" -#: flatcamEditors/FlatCAMGeoEditor.py:2577 +#: flatcamEditors/FlatCAMGeoEditor.py:2664 msgid "[success] Done. Adding Text completed." msgstr "[success] Erledigt. Hinzufügen von Text abgeschlossen" -#: flatcamEditors/FlatCAMGeoEditor.py:2605 +#: flatcamEditors/FlatCAMGeoEditor.py:2692 msgid "Create buffer geometry ..." msgstr "Puffergeometrie erstellen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2616 -#: flatcamEditors/FlatCAMGeoEditor.py:2642 -#: flatcamEditors/FlatCAMGeoEditor.py:2668 +#: flatcamEditors/FlatCAMGeoEditor.py:2703 +#: flatcamEditors/FlatCAMGeoEditor.py:2729 +#: flatcamEditors/FlatCAMGeoEditor.py:2755 msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected." msgstr "[WARNING_NOTCL] Puffer abgebrochen. Keine Form ausgewählt." -#: flatcamEditors/FlatCAMGeoEditor.py:2638 -#: flatcamEditors/FlatCAMGrbEditor.py:3807 +#: flatcamEditors/FlatCAMGeoEditor.py:2725 +#: flatcamEditors/FlatCAMGrbEditor.py:4276 msgid "[success] Done. Buffer Tool completed." msgstr "[success] Erledigt. Pufferwerkzeug abgeschlossen." -#: flatcamEditors/FlatCAMGeoEditor.py:2664 +#: flatcamEditors/FlatCAMGeoEditor.py:2751 msgid "[success] Done. Buffer Int Tool completed." msgstr "[success] Erledigt. Innenpufferwerkzeug abgeschlossen." -#: flatcamEditors/FlatCAMGeoEditor.py:2690 +#: flatcamEditors/FlatCAMGeoEditor.py:2777 msgid "[success] Done. Buffer Ext Tool completed." msgstr "[success] Erledigt. Außenpufferwerkzeug abgeschlossen." -#: flatcamEditors/FlatCAMGeoEditor.py:2723 +#: flatcamEditors/FlatCAMGeoEditor.py:2810 msgid "Create Paint geometry ..." msgstr "Malen geometrie erstellen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2737 -#: flatcamEditors/FlatCAMGrbEditor.py:1667 +#: flatcamEditors/FlatCAMGeoEditor.py:2824 +#: flatcamEditors/FlatCAMGrbEditor.py:2059 msgid "Shape transformations ..." msgstr "Formtransformationen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:3237 +#: flatcamEditors/FlatCAMGeoEditor.py:3327 #, python-brace-format msgid "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" msgstr "" "[WARNING] Bearbeiten von MultiGeo-Geometrie, Werkzeug: {tool} mit " "Durchmesser: {dia}" -#: flatcamEditors/FlatCAMGeoEditor.py:3618 +#: flatcamEditors/FlatCAMGeoEditor.py:3703 msgid "[WARNING_NOTCL] Copy cancelled. No shape selected." msgstr "[WARNING_NOTCL] Kopieren abgebrochen Keine Form ausgewählt" -#: flatcamEditors/FlatCAMGeoEditor.py:3625 flatcamGUI/FlatCAMGUI.py:2710 -#: flatcamGUI/FlatCAMGUI.py:2756 flatcamGUI/FlatCAMGUI.py:2774 -#: flatcamGUI/FlatCAMGUI.py:2905 flatcamGUI/FlatCAMGUI.py:2917 -#: flatcamGUI/FlatCAMGUI.py:2951 +#: flatcamEditors/FlatCAMGeoEditor.py:3710 flatcamGUI/FlatCAMGUI.py:2725 +#: flatcamGUI/FlatCAMGUI.py:2771 flatcamGUI/FlatCAMGUI.py:2789 +#: flatcamGUI/FlatCAMGUI.py:2920 flatcamGUI/FlatCAMGUI.py:2932 +#: flatcamGUI/FlatCAMGUI.py:2966 msgid "Click on target point." msgstr "Klicken Sie auf den Zielpunkt." -#: flatcamEditors/FlatCAMGeoEditor.py:3868 -#: flatcamEditors/FlatCAMGeoEditor.py:3902 +#: flatcamEditors/FlatCAMGeoEditor.py:3953 +#: flatcamEditors/FlatCAMGeoEditor.py:3987 msgid "" "[WARNING_NOTCL] A selection of at least 2 geo items is required to do " "Intersection." @@ -3078,9 +3120,9 @@ msgstr "" "[WARNING_NOTCL] Eine Auswahl von mindestens 2 Geo-Elementen ist " "erforderlich, um die Kreuzung durchzuführen." -#: flatcamEditors/FlatCAMGeoEditor.py:3986 -#: flatcamEditors/FlatCAMGeoEditor.py:4023 -#: flatcamEditors/FlatCAMGeoEditor.py:4099 +#: flatcamEditors/FlatCAMGeoEditor.py:4071 +#: flatcamEditors/FlatCAMGeoEditor.py:4108 +#: flatcamEditors/FlatCAMGeoEditor.py:4184 msgid "" "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to " "generate an 'inside' shape" @@ -3088,54 +3130,54 @@ msgstr "" "[ERROR_NOTCL] Negativer Pufferwert wird nicht akzeptiert. Verwenden Sie den " "Pufferinnenraum, um eine Innenform zu erzeugen" -#: flatcamEditors/FlatCAMGeoEditor.py:3994 -#: flatcamEditors/FlatCAMGeoEditor.py:4032 -#: flatcamEditors/FlatCAMGeoEditor.py:4107 +#: flatcamEditors/FlatCAMGeoEditor.py:4079 +#: flatcamEditors/FlatCAMGeoEditor.py:4117 +#: flatcamEditors/FlatCAMGeoEditor.py:4192 msgid "[WARNING_NOTCL] Nothing selected for buffering." msgstr "[WARNING_NOTCL] Nichts ist für die Pufferung ausgewählt." -#: flatcamEditors/FlatCAMGeoEditor.py:3998 -#: flatcamEditors/FlatCAMGeoEditor.py:4036 -#: flatcamEditors/FlatCAMGeoEditor.py:4111 +#: flatcamEditors/FlatCAMGeoEditor.py:4083 +#: flatcamEditors/FlatCAMGeoEditor.py:4121 +#: flatcamEditors/FlatCAMGeoEditor.py:4196 msgid "[WARNING_NOTCL] Invalid distance for buffering." msgstr "[WARNING_NOTCL] Ungültige Entfernung für die Pufferung" -#: flatcamEditors/FlatCAMGeoEditor.py:4008 -#: flatcamEditors/FlatCAMGeoEditor.py:4120 +#: flatcamEditors/FlatCAMGeoEditor.py:4093 +#: flatcamEditors/FlatCAMGeoEditor.py:4205 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:4016 +#: flatcamEditors/FlatCAMGeoEditor.py:4101 msgid "[success] Full buffer geometry created." msgstr "[success] Volle Puffergeometrie erstellt." -#: flatcamEditors/FlatCAMGeoEditor.py:4046 +#: flatcamEditors/FlatCAMGeoEditor.py:4131 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:4061 +#: flatcamEditors/FlatCAMGeoEditor.py:4146 msgid "[success] Interior buffer geometry created." msgstr "[success] Innere Puffergeometrie erstellt." -#: flatcamEditors/FlatCAMGeoEditor.py:4132 +#: flatcamEditors/FlatCAMGeoEditor.py:4217 msgid "[success] Exterior buffer geometry created." msgstr "[success] Außenpuffergeometrie erstellt." -#: flatcamEditors/FlatCAMGeoEditor.py:4196 +#: flatcamEditors/FlatCAMGeoEditor.py:4281 msgid "[WARNING_NOTCL] Nothing selected for painting." msgstr "[WARNING_NOTCL] Nichts zum Malen ausgewählt." -#: flatcamEditors/FlatCAMGeoEditor.py:4202 +#: flatcamEditors/FlatCAMGeoEditor.py:4287 msgid "[WARNING] Invalid value for {}" msgstr "[WARNING] Ungültiger Wert für {}" -#: flatcamEditors/FlatCAMGeoEditor.py:4208 +#: flatcamEditors/FlatCAMGeoEditor.py:4293 msgid "" "[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 " "(100%)." @@ -3143,7 +3185,7 @@ msgstr "" "[ERROR_NOTCL] Kann nicht Malen machen. Der Überlappungswert muss unter 1,00 " "(100%) liegen." -#: flatcamEditors/FlatCAMGeoEditor.py:4267 +#: flatcamEditors/FlatCAMGeoEditor.py:4352 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -3154,188 +3196,214 @@ msgstr "" "Kombination von Parametern. Oder eine andere Methode von Malen\n" "%s" -#: flatcamEditors/FlatCAMGeoEditor.py:4278 +#: flatcamEditors/FlatCAMGeoEditor.py:4363 msgid "[success] Paint done." msgstr "[success] Malen Sie fertig." -#: flatcamEditors/FlatCAMGrbEditor.py:52 +#: flatcamEditors/FlatCAMGrbEditor.py:200 msgid "[WARNING_NOTCL] To add an Pad first select a aperture in Aperture Table" msgstr "" "[WARNING_NOTCL] Um ein Pad hinzuzufügen, wählen Sie zunächst eine Blende in " "der Aperture Table aus" -#: flatcamEditors/FlatCAMGrbEditor.py:58 flatcamEditors/FlatCAMGrbEditor.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:206 +#: flatcamEditors/FlatCAMGrbEditor.py:398 msgid "" "[WARNING_NOTCL] Aperture size is zero. It needs to be greater than zero." msgstr "" "[WARNING_NOTCL] Die Größe der Blende ist Null. Es muss größer als Null sein." -#: flatcamEditors/FlatCAMGrbEditor.py:81 flatcamEditors/FlatCAMGrbEditor.py:86 +#: flatcamEditors/FlatCAMGrbEditor.py:229 +#: flatcamEditors/FlatCAMGrbEditor.py:234 msgid "Click to place ..." msgstr "Zum Platzieren klicken ..." -#: flatcamEditors/FlatCAMGrbEditor.py:191 -#: flatcamEditors/FlatCAMGrbEditor.py:469 +#: flatcamEditors/FlatCAMGrbEditor.py:357 +#: flatcamEditors/FlatCAMGrbEditor.py:660 msgid "" "Incompatible aperture type. Select an aperture with type 'C', 'R' or 'O'." msgstr "" "Inkompatibler Blendentyp. Wählen Sie eine Blende mit dem Typ 'C', 'R' oder " "'O'." -#: flatcamEditors/FlatCAMGrbEditor.py:203 +#: flatcamEditors/FlatCAMGrbEditor.py:369 msgid "[success] Done. Adding Pad completed." msgstr "[success] Erledigt. Hinzufügen von Pad abgeschlossen." -#: flatcamEditors/FlatCAMGrbEditor.py:225 +#: flatcamEditors/FlatCAMGrbEditor.py:391 msgid "" "[WARNING_NOTCL] To add an Pad Array first select a aperture in Aperture Table" msgstr "" "[WARNING_NOTCL] Um ein Pad-Array hinzuzufügen, wählen Sie zunächst eine " "Blende in der Aperture-Tabelle aus" -#: flatcamEditors/FlatCAMGrbEditor.py:304 +#: flatcamEditors/FlatCAMGrbEditor.py:468 msgid "Click on the Pad Circular Array Start position" msgstr "Klicken Sie auf die Startposition des Pad-Kreis-Arrays" -#: flatcamEditors/FlatCAMGrbEditor.py:494 +#: flatcamEditors/FlatCAMGrbEditor.py:685 msgid "[WARNING_NOTCL] Too many Pads for the selected spacing angle." msgstr "[WARNING_NOTCL] Zu viele Pad für den ausgewählten Abstandswinkel." -#: flatcamEditors/FlatCAMGrbEditor.py:516 +#: flatcamEditors/FlatCAMGrbEditor.py:707 msgid "[success] Done. Pad Array added." msgstr "[success] Erledigt. Pad Array hinzugefügt." -#: flatcamEditors/FlatCAMGrbEditor.py:537 +#: flatcamEditors/FlatCAMGrbEditor.py:728 msgid "Select shape(s) and then click ..." msgstr "Wählen Sie die Form (en) aus und klicken Sie dann auf ..." -#: flatcamEditors/FlatCAMGrbEditor.py:548 +#: flatcamEditors/FlatCAMGrbEditor.py:739 msgid "[ERROR_NOTCL] Failed. Nothing selected." msgstr "[ERROR_NOTCL] ist fehlgeschlagen. Nichts ausgewählt." -#: flatcamEditors/FlatCAMGrbEditor.py:575 +#: flatcamEditors/FlatCAMGrbEditor.py:754 +msgid "" +"[WARNING_NOTCL] Failed. Poligonize works only on geometries belonging to the " +"same aperture." +msgstr "" +"[WARNING_NOTCL] Gescheitert. Poligonize funktioniert nur bei Geometrien, die " +"zur selben Apertur gehören." + +#: flatcamEditors/FlatCAMGrbEditor.py:807 msgid "[success] Done. Poligonize completed." msgstr "[Erfolg] Fertig. Poligonize abgeschlossen." -#: flatcamEditors/FlatCAMGrbEditor.py:625 -#: flatcamEditors/FlatCAMGrbEditor.py:825 -#: flatcamEditors/FlatCAMGrbEditor.py:849 +#: flatcamEditors/FlatCAMGrbEditor.py:857 +#: flatcamEditors/FlatCAMGrbEditor.py:1072 +#: flatcamEditors/FlatCAMGrbEditor.py:1096 msgid "Corner Mode 1: 45 degrees ..." msgstr "Eckmodus 1: 45 Grad ..." -#: flatcamEditors/FlatCAMGrbEditor.py:813 -#: flatcamEditors/FlatCAMGrbEditor.py:846 +#: flatcamEditors/FlatCAMGrbEditor.py:859 +msgid "Click on 1st point ..." +msgstr "Klicken Sie auf den 1. Punkt ..." + +#: flatcamEditors/FlatCAMGrbEditor.py:869 +#: flatcamEditors/FlatCAMGrbEditor.py:1167 +msgid "Click on next Point or click Right mouse button to complete ..." +msgstr "" +"Klicken Sie auf den nächsten Punkt oder klicken Sie mit der rechten " +"Maustaste, um den Vorgang abzuschließen." + +#: flatcamEditors/FlatCAMGrbEditor.py:1060 +#: flatcamEditors/FlatCAMGrbEditor.py:1093 msgid "Corner Mode 2: Reverse 45 degrees ..." msgstr "Eckmodus 2: 45 Grad umkehren ..." -#: flatcamEditors/FlatCAMGrbEditor.py:816 -#: flatcamEditors/FlatCAMGrbEditor.py:843 +#: flatcamEditors/FlatCAMGrbEditor.py:1063 +#: flatcamEditors/FlatCAMGrbEditor.py:1090 msgid "Corner Mode 3: 90 degrees ..." msgstr "Eckmodus 3: 90 Grad ..." -#: flatcamEditors/FlatCAMGrbEditor.py:819 -#: flatcamEditors/FlatCAMGrbEditor.py:840 +#: flatcamEditors/FlatCAMGrbEditor.py:1066 +#: flatcamEditors/FlatCAMGrbEditor.py:1087 msgid "Corner Mode 4: Reverse 90 degrees ..." msgstr "Eckmodus 4: Um 90 Grad umkehren ..." -#: flatcamEditors/FlatCAMGrbEditor.py:822 -#: flatcamEditors/FlatCAMGrbEditor.py:837 +#: flatcamEditors/FlatCAMGrbEditor.py:1069 +#: flatcamEditors/FlatCAMGrbEditor.py:1084 msgid "Corner Mode 5: Free angle ..." msgstr "Eckmodus 5: Freiwinkel ..." -#: flatcamEditors/FlatCAMGrbEditor.py:875 -#: flatcamEditors/FlatCAMGrbEditor.py:1012 -#: flatcamEditors/FlatCAMGrbEditor.py:1050 +#: flatcamEditors/FlatCAMGrbEditor.py:1123 +#: flatcamEditors/FlatCAMGrbEditor.py:1281 +#: flatcamEditors/FlatCAMGrbEditor.py:1320 msgid "Track Mode 1: 45 degrees ..." msgstr "Spurmodus 1: 45 Grad ..." -#: flatcamEditors/FlatCAMGrbEditor.py:992 -#: flatcamEditors/FlatCAMGrbEditor.py:1045 +#: flatcamEditors/FlatCAMGrbEditor.py:1261 +#: flatcamEditors/FlatCAMGrbEditor.py:1315 msgid "Track Mode 2: Reverse 45 degrees ..." msgstr "Spurmodus 2: 45 Grad umkehren ..." -#: flatcamEditors/FlatCAMGrbEditor.py:997 -#: flatcamEditors/FlatCAMGrbEditor.py:1040 +#: flatcamEditors/FlatCAMGrbEditor.py:1266 +#: flatcamEditors/FlatCAMGrbEditor.py:1310 msgid "Track Mode 3: 90 degrees ..." msgstr "Spurmodus 3: 90 Grad ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1002 -#: flatcamEditors/FlatCAMGrbEditor.py:1035 +#: flatcamEditors/FlatCAMGrbEditor.py:1271 +#: flatcamEditors/FlatCAMGrbEditor.py:1305 msgid "Track Mode 4: Reverse 90 degrees ..." msgstr "Spurmodus 4: Um 90 Grad umkehren ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1007 -#: flatcamEditors/FlatCAMGrbEditor.py:1030 +#: flatcamEditors/FlatCAMGrbEditor.py:1276 +#: flatcamEditors/FlatCAMGrbEditor.py:1300 msgid "Track Mode 5: Free angle ..." msgstr "Spurmodus 5: Freiwinkel ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1367 +#: flatcamEditors/FlatCAMGrbEditor.py:1666 msgid "Scale the selected Gerber apertures ..." msgstr "Skalieren Sie die ausgewählten Gerber-Öffnungen ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1409 +#: flatcamEditors/FlatCAMGrbEditor.py:1708 msgid "Buffer the selected apertures ..." msgstr "Die ausgewählten Öffnungen puffern ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1510 +#: flatcamEditors/FlatCAMGrbEditor.py:1752 +msgid "[WARNING_NOTCL] Nothing selected to move ..." +msgstr "[WARNING_NOTCL] Nichts zum Bewegen ausgewählt ..." + +#: flatcamEditors/FlatCAMGrbEditor.py:1875 msgid "[success] Done. Apertures Move completed." msgstr "[success] Erledigt. Öffnungsbewegung abgeschlossen." -#: flatcamEditors/FlatCAMGrbEditor.py:1565 +#: flatcamEditors/FlatCAMGrbEditor.py:1951 msgid "[success] Done. Apertures copied." msgstr "[success] Erledigt. Blende kopiert." -#: flatcamEditors/FlatCAMGrbEditor.py:1708 flatcamGUI/FlatCAMGUI.py:1590 +#: flatcamEditors/FlatCAMGrbEditor.py:2101 flatcamGUI/FlatCAMGUI.py:1604 +#: flatcamGUI/FlatCAMGUI.py:4322 msgid "Gerber Editor" msgstr "Gerber-Editor" -#: flatcamEditors/FlatCAMGrbEditor.py:1727 flatcamGUI/ObjectUI.py:192 +#: flatcamEditors/FlatCAMGrbEditor.py:2120 flatcamGUI/ObjectUI.py:192 msgid "Apertures:" msgstr " Blenden: " -#: flatcamEditors/FlatCAMGrbEditor.py:1729 flatcamGUI/ObjectUI.py:194 +#: flatcamEditors/FlatCAMGrbEditor.py:2122 flatcamGUI/ObjectUI.py:194 msgid "Apertures Table for the Gerber Object." msgstr "Blendentabelle für das Gerberobjekt." -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 msgid "Code" msgstr "Code" -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 -#: flatcamGUI/ObjectUI.py:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "Type" msgstr "Typ" -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 msgid "Size" msgstr "Größe" -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 msgid "Dim" msgstr "Maße" -#: flatcamEditors/FlatCAMGrbEditor.py:1744 flatcamGUI/ObjectUI.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:2137 flatcamGUI/ObjectUI.py:232 msgid "Index" msgstr "Index" -#: flatcamEditors/FlatCAMGrbEditor.py:1746 flatcamGUI/ObjectUI.py:234 +#: flatcamEditors/FlatCAMGrbEditor.py:2139 flatcamGUI/ObjectUI.py:234 msgid "Aperture Code" msgstr "Öffnungscode" -#: flatcamEditors/FlatCAMGrbEditor.py:1748 flatcamGUI/ObjectUI.py:236 +#: flatcamEditors/FlatCAMGrbEditor.py:2141 flatcamGUI/ObjectUI.py:236 msgid "Type of aperture: circular, rectangle, macros etc" msgstr "Öffnungsart: kreisförmig, rechteckig, Makros usw" -#: flatcamEditors/FlatCAMGrbEditor.py:1750 -#: flatcamEditors/FlatCAMGrbEditor.py:1783 flatcamGUI/ObjectUI.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:2143 +#: flatcamEditors/FlatCAMGrbEditor.py:2176 flatcamGUI/ObjectUI.py:238 msgid "Aperture Size:" msgstr "Öffnungsgröße:" -#: flatcamEditors/FlatCAMGrbEditor.py:1752 flatcamGUI/ObjectUI.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:2145 flatcamGUI/ObjectUI.py:240 msgid "" "Aperture Dimensions:\n" " - (width, height) for R, O type.\n" @@ -3345,15 +3413,15 @@ msgstr "" "  - (Breite, Höhe) für R, O-Typ.\n" "  - (dia, nVertices) für P-Typ" -#: flatcamEditors/FlatCAMGrbEditor.py:1773 +#: flatcamEditors/FlatCAMGrbEditor.py:2166 msgid "Aperture Code:" msgstr "Öffnungscode:" -#: flatcamEditors/FlatCAMGrbEditor.py:1775 +#: flatcamEditors/FlatCAMGrbEditor.py:2168 msgid "Code for the new aperture" msgstr "Code für die neue Blende" -#: flatcamEditors/FlatCAMGrbEditor.py:1785 +#: flatcamEditors/FlatCAMGrbEditor.py:2178 msgid "" "Size for the new aperture.\n" "If aperture type is 'R' or 'O' then\n" @@ -3367,11 +3435,11 @@ msgstr "" "berechnet als:\n" "Quadrat (Breite ** 2 + Höhe ** 2)" -#: flatcamEditors/FlatCAMGrbEditor.py:1797 +#: flatcamEditors/FlatCAMGrbEditor.py:2190 msgid "Aperture Type:" msgstr "Blendentyp:" -#: flatcamEditors/FlatCAMGrbEditor.py:1799 +#: flatcamEditors/FlatCAMGrbEditor.py:2192 msgid "" "Select the type of new aperture. Can be:\n" "C = circular\n" @@ -3383,11 +3451,11 @@ msgstr "" "R = rechteckig\n" "O = länglich" -#: flatcamEditors/FlatCAMGrbEditor.py:1810 +#: flatcamEditors/FlatCAMGrbEditor.py:2203 msgid "Aperture Dim:" msgstr "Öffnungsmaße:" -#: flatcamEditors/FlatCAMGrbEditor.py:1812 +#: flatcamEditors/FlatCAMGrbEditor.py:2205 msgid "" "Dimensions for the new aperture.\n" "Active only for rectangular apertures (type R).\n" @@ -3397,31 +3465,31 @@ msgstr "" "Aktiv nur für rechteckige Öffnungen (Typ R).\n" "Das Format ist (Breite, Höhe)" -#: flatcamEditors/FlatCAMGrbEditor.py:1821 +#: flatcamEditors/FlatCAMGrbEditor.py:2214 msgid "Add/Delete Aperture:" msgstr "Blende hinzufügen / löschen:" -#: flatcamEditors/FlatCAMGrbEditor.py:1823 +#: flatcamEditors/FlatCAMGrbEditor.py:2216 msgid "Add/Delete an aperture in the aperture table" msgstr "Eine Blende in der Blendentabelle hinzufügen / löschen" -#: flatcamEditors/FlatCAMGrbEditor.py:1832 +#: flatcamEditors/FlatCAMGrbEditor.py:2225 msgid "Add a new aperture to the aperture list." msgstr "Fügen Sie der Blendenliste eine neue Blende hinzu." -#: flatcamEditors/FlatCAMGrbEditor.py:1837 +#: flatcamEditors/FlatCAMGrbEditor.py:2230 msgid "Delete a aperture in the aperture list" msgstr "Löschen Sie eine Blende in der Blendenliste" -#: flatcamEditors/FlatCAMGrbEditor.py:1853 +#: flatcamEditors/FlatCAMGrbEditor.py:2246 msgid "Buffer Aperture:" msgstr "Pufferblende:" -#: flatcamEditors/FlatCAMGrbEditor.py:1855 +#: flatcamEditors/FlatCAMGrbEditor.py:2248 msgid "Buffer a aperture in the aperture list" msgstr "Puffern Sie eine Blende in der Blendenliste" -#: flatcamEditors/FlatCAMGrbEditor.py:1868 +#: flatcamEditors/FlatCAMGrbEditor.py:2261 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded.\n" @@ -3435,24 +3503,24 @@ msgstr "" "  - 'Abgeschrägt:' Die Ecke ist eine Linie, die die Features, die sich in " "der Ecke treffen, direkt verbindet" -#: flatcamEditors/FlatCAMGrbEditor.py:1883 flatcamGUI/FlatCAMGUI.py:708 -#: flatcamGUI/FlatCAMGUI.py:1929 +#: flatcamEditors/FlatCAMGrbEditor.py:2276 flatcamGUI/FlatCAMGUI.py:721 +#: flatcamGUI/FlatCAMGUI.py:1943 msgid "Buffer" msgstr "Puffer" -#: flatcamEditors/FlatCAMGrbEditor.py:1897 +#: flatcamEditors/FlatCAMGrbEditor.py:2290 msgid "Scale Aperture:" msgstr "Skalenöffnung:" -#: flatcamEditors/FlatCAMGrbEditor.py:1899 +#: flatcamEditors/FlatCAMGrbEditor.py:2292 msgid "Scale a aperture in the aperture list" msgstr "Skalieren Sie eine Blende in der Blendenliste" -#: flatcamEditors/FlatCAMGrbEditor.py:1907 +#: flatcamEditors/FlatCAMGrbEditor.py:2300 msgid "Scale factor:" msgstr "Skalierungsfaktor:" -#: flatcamEditors/FlatCAMGrbEditor.py:1909 +#: flatcamEditors/FlatCAMGrbEditor.py:2302 msgid "" "The factor by which to scale the selected aperture.\n" "Values can be between 0.0000 and 999.9999" @@ -3460,16 +3528,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:1937 flatcamGUI/FlatCAMGUI.py:698 -#: flatcamGUI/FlatCAMGUI.py:1919 +#: flatcamEditors/FlatCAMGrbEditor.py:2330 flatcamGUI/FlatCAMGUI.py:711 +#: flatcamGUI/FlatCAMGUI.py:1933 msgid "Add Pad Array" msgstr "Pad-Array hinzufügen" -#: flatcamEditors/FlatCAMGrbEditor.py:1939 +#: flatcamEditors/FlatCAMGrbEditor.py:2332 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:1945 +#: flatcamEditors/FlatCAMGrbEditor.py:2338 msgid "" "Select the type of pads array to create.\n" "It can be Linear X(Y) or Circular" @@ -3477,16 +3545,16 @@ msgstr "" "Wählen Sie den zu erstellenden Pad-Array-Typ aus.\n" "Es kann lineares X (Y) oder rund sein" -#: flatcamEditors/FlatCAMGrbEditor.py:1956 +#: flatcamEditors/FlatCAMGrbEditor.py:2349 msgid "Nr of pads:" msgstr "Anzahl der Pads:" -#: flatcamEditors/FlatCAMGrbEditor.py:1958 +#: flatcamEditors/FlatCAMGrbEditor.py:2351 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:2431 -#: flatcamEditors/FlatCAMGrbEditor.py:2435 +#: flatcamEditors/FlatCAMGrbEditor.py:2826 +#: flatcamEditors/FlatCAMGrbEditor.py:2830 msgid "" "[WARNING_NOTCL] Aperture code value is missing or wrong format. Add it and " "retry." @@ -3494,7 +3562,7 @@ msgstr "" "[WARNING_NOTCL] Blendencodewert fehlt oder falsches Format. Fügen Sie es " "hinzu und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGrbEditor.py:2472 +#: flatcamEditors/FlatCAMGrbEditor.py:2866 msgid "" "[WARNING_NOTCL] Aperture dimensions value is missing or wrong format. Add it " "in format (width, height) and retry." @@ -3502,7 +3570,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:2484 +#: flatcamEditors/FlatCAMGrbEditor.py:2878 msgid "" "[WARNING_NOTCL] Aperture size value is missing or wrong format. Add it and " "retry." @@ -3510,31 +3578,35 @@ msgstr "" "[WARNING_NOTCL] Blendengrößenwert fehlt oder falsches Format. Fügen Sie es " "hinzu und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGrbEditor.py:2496 +#: flatcamEditors/FlatCAMGrbEditor.py:2889 msgid "[WARNING_NOTCL] Aperture already in the aperture table." msgstr "[WARNING_NOTCL] Blende bereits in der Blendentabelle." -#: flatcamEditors/FlatCAMGrbEditor.py:2503 +#: flatcamEditors/FlatCAMGrbEditor.py:2896 #, python-brace-format msgid "[success] Added new aperture with code: {apid}" msgstr "[success] Neue Blende mit Code hinzugefügt: {apid}" -#: flatcamEditors/FlatCAMGrbEditor.py:2532 -#: flatcamEditors/FlatCAMGrbEditor.py:2538 +#: flatcamEditors/FlatCAMGrbEditor.py:2924 msgid "[WARNING_NOTCL] Select an aperture in Aperture Table" msgstr "[WARNING_NOTCL] Wählen Sie in Blende Table eine Blende aus" -#: flatcamEditors/FlatCAMGrbEditor.py:2561 +#: flatcamEditors/FlatCAMGrbEditor.py:2930 +#, 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:2953 #, python-brace-format msgid "[success] Deleted aperture with code: {del_dia}" msgstr "[success] Blende mit Code gelöscht: {del_dia}" -#: flatcamEditors/FlatCAMGrbEditor.py:2931 +#: flatcamEditors/FlatCAMGrbEditor.py:3373 #, python-format msgid "Adding aperture: %s geo ..." msgstr "Blende hinzufügen:%s geo ..." -#: flatcamEditors/FlatCAMGrbEditor.py:3095 +#: flatcamEditors/FlatCAMGrbEditor.py:3552 msgid "" "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber " "creation." @@ -3542,28 +3614,32 @@ msgstr "" "[ERROR_NOTCL] Die Datei enthält keine Aperture-Definitionen. Abbruch der " "Gerber-Erstellung." -#: flatcamEditors/FlatCAMGrbEditor.py:3104 +#: flatcamEditors/FlatCAMGrbEditor.py:3555 +msgid "[ERROR] An internal error has occurred. See shell.\n" +msgstr "[ERROR] Ein interner Fehler ist aufgetreten. Siehe Shell.\n" + +#: flatcamEditors/FlatCAMGrbEditor.py:3560 msgid "Creating Gerber." msgstr "Gerber erstellen." -#: flatcamEditors/FlatCAMGrbEditor.py:3112 +#: flatcamEditors/FlatCAMGrbEditor.py:3568 msgid "[success] Gerber editing finished." msgstr "[success] Gerber-Bearbeitung ist beendet." -#: flatcamEditors/FlatCAMGrbEditor.py:3129 +#: flatcamEditors/FlatCAMGrbEditor.py:3584 msgid "[WARNING_NOTCL] Cancelled. No aperture is selected" msgstr "[WARNING_NOTCL] Abgebrochen. Es ist keine Blende ausgewählt" -#: flatcamEditors/FlatCAMGrbEditor.py:3649 +#: flatcamEditors/FlatCAMGrbEditor.py:4104 msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected." msgstr "" "[ERROR_NOTCL] ist fehlgeschlagen. Es ist keine Blendengeometrie ausgewählt." -#: flatcamEditors/FlatCAMGrbEditor.py:3657 +#: flatcamEditors/FlatCAMGrbEditor.py:4112 msgid "[success] Done. Apertures geometry deleted." msgstr "[success] Fertig. Blendengeometrie gelöscht." -#: flatcamEditors/FlatCAMGrbEditor.py:3792 +#: flatcamEditors/FlatCAMGrbEditor.py:4261 msgid "" "[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try " "again." @@ -3571,7 +3647,7 @@ msgstr "" "[WARNING_NOTCL] Keine Blende zum Puffern Wählen Sie mindestens eine Blende " "und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGrbEditor.py:3821 +#: flatcamEditors/FlatCAMGrbEditor.py:4290 msgid "" "[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and " "retry." @@ -3579,7 +3655,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:3839 +#: flatcamEditors/FlatCAMGrbEditor.py:4320 msgid "" "[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try " "again." @@ -3587,7 +3663,7 @@ msgstr "" "[WARNING_NOTCL] Keine zu skalierende Blende Wählen Sie mindestens eine " "Blende und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGrbEditor.py:3855 +#: flatcamEditors/FlatCAMGrbEditor.py:4336 msgid "[success] Done. Scale Tool completed." msgstr "[success] Erledigt. Skalierungswerkzeug abgeschlossen." @@ -3746,51 +3822,65 @@ msgstr "" "Das Koordinatenformat, die Dateieinheiten und Nullen\n" "werden in den Einstellungen -> Excellon Export.Excellon eingestellt ..." -#: flatcamGUI/FlatCAMGUI.py:191 +#: flatcamGUI/FlatCAMGUI.py:186 +msgid "Export &Gerber ..." +msgstr "Gerber exportieren ..." + +#: flatcamGUI/FlatCAMGUI.py:189 +msgid "" +"Will export an Gerber Object as Gerber file,\n" +"the coordinates format, the file units and zeros\n" +"are set in Preferences -> Gerber Export." +msgstr "" +"Exportiert ein Gerber-Objekt als Gerber-Datei.\n" +"das Koordinatenformat, die Dateieinheiten und Nullen\n" +"werden in den Einstellungen -> Gerber Export eingestellt." + +#: flatcamGUI/FlatCAMGUI.py:199 msgid "Save &Defaults" msgstr "Standardeinstellungen speichern" -#: flatcamGUI/FlatCAMGUI.py:197 flatcamGUI/FlatCAMGUI.py:520 +#: flatcamGUI/FlatCAMGUI.py:205 flatcamGUI/FlatCAMGUI.py:533 msgid "Save" msgstr "Speichern" -#: flatcamGUI/FlatCAMGUI.py:199 +#: flatcamGUI/FlatCAMGUI.py:207 msgid "&Save Project ..." msgstr "Projekt speichern ..." -#: flatcamGUI/FlatCAMGUI.py:204 +#: flatcamGUI/FlatCAMGUI.py:212 msgid "Save Project &As ...\tCTRL+S" msgstr "Projekt speichern als ...\tCTRL+S" -#: flatcamGUI/FlatCAMGUI.py:208 +#: flatcamGUI/FlatCAMGUI.py:216 msgid "Save Project C&opy ..." msgstr "Projektkopie speichern ..." -#: flatcamGUI/FlatCAMGUI.py:216 +#: flatcamGUI/FlatCAMGUI.py:224 msgid "E&xit" msgstr "Ausgang" -#: flatcamGUI/FlatCAMGUI.py:222 +#: flatcamGUI/FlatCAMGUI.py:230 msgid "&Edit" msgstr "Bearbeiten" -#: flatcamGUI/FlatCAMGUI.py:225 +#: flatcamGUI/FlatCAMGUI.py:233 msgid "Edit Object\tE" msgstr "Objekt bearbeiten\tE" -#: flatcamGUI/FlatCAMGUI.py:226 +#: flatcamGUI/FlatCAMGUI.py:234 msgid "Close Editor\tCTRL+S" msgstr "Schließen Sie Editor\tSTRG+S" -#: flatcamGUI/FlatCAMGUI.py:234 +#: flatcamGUI/FlatCAMGUI.py:242 msgid "Conversion" msgstr "Umwandlung" -#: flatcamGUI/FlatCAMGUI.py:236 +#: flatcamGUI/FlatCAMGUI.py:244 msgid "&Join Geo/Gerber/Exc -> Geo" msgstr "Beitreten Geo/Gerber/Exc -> Geo" -#: flatcamGUI/FlatCAMGUI.py:238 +#: flatcamGUI/FlatCAMGUI.py:246 msgid "" "Merge a selection of objects, which can be of type:\n" "- Gerber\n" @@ -3804,31 +3894,31 @@ msgstr "" "- Geometrie\n" "in ein neues Geometrieobjekt kombinieren." -#: flatcamGUI/FlatCAMGUI.py:245 +#: flatcamGUI/FlatCAMGUI.py:253 msgid "Join Excellon(s) -> Excellon" msgstr "Beitreten Excellon(s) -> Excellon" -#: flatcamGUI/FlatCAMGUI.py:247 +#: flatcamGUI/FlatCAMGUI.py:255 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:250 +#: flatcamGUI/FlatCAMGUI.py:258 msgid "Join Gerber(s) -> Gerber" msgstr "Beitreten Gerber(s) -> Gerber" -#: flatcamGUI/FlatCAMGUI.py:252 +#: flatcamGUI/FlatCAMGUI.py:260 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:257 +#: flatcamGUI/FlatCAMGUI.py:265 msgid "Convert Single to MultiGeo" msgstr "Konvertieren Sie Single in MultiGeo" -#: flatcamGUI/FlatCAMGUI.py:259 +#: flatcamGUI/FlatCAMGUI.py:267 msgid "" "Will convert a Geometry object from single_geometry type\n" "to a multi_geometry type." @@ -3836,11 +3926,11 @@ msgstr "" "Konvertiert ein Geometrieobjekt vom Typ single_geometry\n" "zu einem multi_geometry-Typ." -#: flatcamGUI/FlatCAMGUI.py:263 +#: flatcamGUI/FlatCAMGUI.py:271 msgid "Convert Multi to SingleGeo" msgstr "Konvertieren Sie Multi in SingleGeo" -#: flatcamGUI/FlatCAMGUI.py:265 +#: flatcamGUI/FlatCAMGUI.py:273 msgid "" "Will convert a Geometry object from multi_geometry type\n" "to a single_geometry type." @@ -3848,585 +3938,589 @@ msgstr "" "Konvertiert ein Geometrieobjekt vom Typ multi_geometry\n" "zu einem single_geometry-Typ." -#: flatcamGUI/FlatCAMGUI.py:272 -msgid "&Copy Object\tCTRL+C" -msgstr "Objekt kopieren\tSTRG+C" +#: flatcamGUI/FlatCAMGUI.py:279 +msgid "Convert Any to Geo" +msgstr "Konvertieren Sie Any zu Geo" -#: flatcamGUI/FlatCAMGUI.py:274 -msgid "Copy as &Geom" -msgstr "Als Geom kopieren" +#: flatcamGUI/FlatCAMGUI.py:281 +msgid "Convert Any to Gerber" +msgstr "Konvertieren Sie Any zu Gerber" -#: flatcamGUI/FlatCAMGUI.py:277 +#: flatcamGUI/FlatCAMGUI.py:286 +msgid "&Copy\tCTRL+C" +msgstr "Kopieren\tSTRG+C" + +#: flatcamGUI/FlatCAMGUI.py:290 msgid "&Delete\tDEL" msgstr "Löschen\tDEL" -#: flatcamGUI/FlatCAMGUI.py:281 +#: flatcamGUI/FlatCAMGUI.py:294 msgid "Se&t Origin\tO" msgstr "Ursprung festlegen\tO" -#: flatcamGUI/FlatCAMGUI.py:282 +#: flatcamGUI/FlatCAMGUI.py:295 msgid "Jump to Location\tJ" msgstr "Zum Ort springen\tJ" -#: flatcamGUI/FlatCAMGUI.py:287 +#: flatcamGUI/FlatCAMGUI.py:300 msgid "Toggle Units\tQ" msgstr "Einheiten umschalten\tQ" -#: flatcamGUI/FlatCAMGUI.py:289 +#: flatcamGUI/FlatCAMGUI.py:302 msgid "&Select All\tCTRL+A" msgstr "Wählen Sie Alle\tSTRG+A" -#: flatcamGUI/FlatCAMGUI.py:293 +#: flatcamGUI/FlatCAMGUI.py:306 msgid "&Preferences\tSHIFT+P" msgstr "Einstellungen\tSHIFT+P" -#: flatcamGUI/FlatCAMGUI.py:296 +#: flatcamGUI/FlatCAMGUI.py:309 msgid "&Options" msgstr "&Optionen" -#: flatcamGUI/FlatCAMGUI.py:311 +#: flatcamGUI/FlatCAMGUI.py:324 msgid "&Rotate Selection\tSHIFT+(R)" msgstr "Auswahl drehen\tSHIFT+(R)" -#: flatcamGUI/FlatCAMGUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:329 msgid "&Skew on X axis\tSHIFT+X" msgstr "Neigung auf der X-Achse\tSHIFT+X" -#: flatcamGUI/FlatCAMGUI.py:318 +#: flatcamGUI/FlatCAMGUI.py:331 msgid "S&kew on Y axis\tSHIFT+Y" msgstr "Neigung auf der Y-Achse\tSHIFT+Y" -#: flatcamGUI/FlatCAMGUI.py:323 +#: flatcamGUI/FlatCAMGUI.py:336 msgid "Flip on &X axis\tX" msgstr "X-Achse kippen\tX" -#: flatcamGUI/FlatCAMGUI.py:325 +#: flatcamGUI/FlatCAMGUI.py:338 msgid "Flip on &Y axis\tY" msgstr "Y-Achse kippen\tY" -#: flatcamGUI/FlatCAMGUI.py:330 +#: flatcamGUI/FlatCAMGUI.py:343 msgid "View source\tALT+S" msgstr "Quelltext anzeigen\tALT+S" -#: flatcamGUI/FlatCAMGUI.py:335 +#: flatcamGUI/FlatCAMGUI.py:348 msgid "&View" msgstr "&Blick" -#: flatcamGUI/FlatCAMGUI.py:336 +#: flatcamGUI/FlatCAMGUI.py:349 msgid "Enable all plots\tALT+1" msgstr "Aktivieren Sie alle Diagramme\tALT+1" -#: flatcamGUI/FlatCAMGUI.py:338 +#: flatcamGUI/FlatCAMGUI.py:351 msgid "Disable all plots\tALT+2" msgstr "Deaktivieren Sie alle Diagramme\tALT+2" -#: flatcamGUI/FlatCAMGUI.py:340 +#: flatcamGUI/FlatCAMGUI.py:353 msgid "Disable non-selected\tALT+3" msgstr "Deaktivieren Sie nicht ausgewählt\tALT+3" -#: flatcamGUI/FlatCAMGUI.py:343 +#: flatcamGUI/FlatCAMGUI.py:356 msgid "&Zoom Fit\tV" msgstr "Zoomen passen\tV" -#: flatcamGUI/FlatCAMGUI.py:344 +#: flatcamGUI/FlatCAMGUI.py:357 msgid "&Zoom In\t-" msgstr "Hineinzoomen\t-" -#: flatcamGUI/FlatCAMGUI.py:345 +#: flatcamGUI/FlatCAMGUI.py:358 msgid "&Zoom Out\t=" msgstr "Rauszoomen\t=" -#: flatcamGUI/FlatCAMGUI.py:349 +#: flatcamGUI/FlatCAMGUI.py:362 msgid "Toggle Code Editor\tCTRL+E" msgstr "Code-Editor umschalten\tSTRG+E" -#: flatcamGUI/FlatCAMGUI.py:352 +#: flatcamGUI/FlatCAMGUI.py:365 msgid "&Toggle FullScreen\tALT+F10" msgstr "FullScreen umschalten\tALT+F10" -#: flatcamGUI/FlatCAMGUI.py:354 +#: flatcamGUI/FlatCAMGUI.py:367 msgid "&Toggle Plot Area\tCTRL+F10" msgstr "Plotbereich umschalten\tSTRG+F10" -#: flatcamGUI/FlatCAMGUI.py:356 +#: flatcamGUI/FlatCAMGUI.py:369 msgid "&Toggle Project/Sel/Tool\t`" msgstr "Projekt/Auswahl/Werkzeug umschalten\t`" -#: flatcamGUI/FlatCAMGUI.py:359 +#: flatcamGUI/FlatCAMGUI.py:372 msgid "&Toggle Grid Snap\tG" msgstr "Schaltet den Rasterfang ein\tG" -#: flatcamGUI/FlatCAMGUI.py:361 +#: flatcamGUI/FlatCAMGUI.py:374 msgid "&Toggle Axis\tSHIFT+G" msgstr "Achse umschalten\tSHIFT+G" -#: flatcamGUI/FlatCAMGUI.py:364 +#: flatcamGUI/FlatCAMGUI.py:377 msgid "Toggle Workspace\tSHIFT+W" msgstr "Arbeitsbereich umschalten\tSHIFT+W" -#: flatcamGUI/FlatCAMGUI.py:368 +#: flatcamGUI/FlatCAMGUI.py:381 msgid "&Tool" msgstr "Werkzeug" -#: flatcamGUI/FlatCAMGUI.py:370 +#: flatcamGUI/FlatCAMGUI.py:383 msgid "&Command Line\tS" msgstr "Befehlszeile\tS" -#: flatcamGUI/FlatCAMGUI.py:373 +#: flatcamGUI/FlatCAMGUI.py:386 msgid "&Help" msgstr "&Hilfe" -#: flatcamGUI/FlatCAMGUI.py:374 +#: flatcamGUI/FlatCAMGUI.py:387 msgid "Help\tF1" msgstr "Hilfe\tF1" -#: flatcamGUI/FlatCAMGUI.py:375 +#: flatcamGUI/FlatCAMGUI.py:388 msgid "FlatCAM.org" msgstr "FlatCAM.org" -#: flatcamGUI/FlatCAMGUI.py:378 +#: flatcamGUI/FlatCAMGUI.py:391 msgid "Shortcuts List\tF3" msgstr "Tastenkürzel Liste\tF3" -#: flatcamGUI/FlatCAMGUI.py:379 +#: flatcamGUI/FlatCAMGUI.py:392 msgid "YouTube Channel\tF4" msgstr "Youtube Kanal\tF4" -#: flatcamGUI/FlatCAMGUI.py:381 +#: flatcamGUI/FlatCAMGUI.py:394 msgid "About" msgstr "Über" -#: flatcamGUI/FlatCAMGUI.py:392 +#: flatcamGUI/FlatCAMGUI.py:405 msgid "Add Circle\tO" msgstr "Kreis hinzufügen\tO" -#: flatcamGUI/FlatCAMGUI.py:394 +#: flatcamGUI/FlatCAMGUI.py:407 msgid "Add Arc\tA" msgstr "Bogen hinzufügen\tA" -#: flatcamGUI/FlatCAMGUI.py:397 +#: flatcamGUI/FlatCAMGUI.py:410 msgid "Add Rectangle\tR" msgstr "Rechteck hinzufügen\tR" -#: flatcamGUI/FlatCAMGUI.py:400 +#: flatcamGUI/FlatCAMGUI.py:413 msgid "Add Polygon\tN" msgstr "Polygon hinzufügen\tN" -#: flatcamGUI/FlatCAMGUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:415 msgid "Add Path\tP" msgstr "Pfad hinzufügen\tP" -#: flatcamGUI/FlatCAMGUI.py:404 +#: flatcamGUI/FlatCAMGUI.py:417 msgid "Add Text\tT" msgstr "Text hinzufügen\tT" -#: flatcamGUI/FlatCAMGUI.py:407 +#: flatcamGUI/FlatCAMGUI.py:420 msgid "Polygon Union\tU" msgstr "Polygon-Vereinigung\tU" -#: flatcamGUI/FlatCAMGUI.py:409 +#: flatcamGUI/FlatCAMGUI.py:422 msgid "Polygon Intersection\tE" msgstr "Polygonschnitt\tE" -#: flatcamGUI/FlatCAMGUI.py:411 +#: flatcamGUI/FlatCAMGUI.py:424 msgid "Polygon Subtraction\tS" msgstr "Polygon-Subtraktion\tS" -#: flatcamGUI/FlatCAMGUI.py:415 +#: flatcamGUI/FlatCAMGUI.py:428 msgid "Cut Path\tX" msgstr "Pfad ausschneiden\tX" -#: flatcamGUI/FlatCAMGUI.py:417 +#: flatcamGUI/FlatCAMGUI.py:430 msgid "Copy Geom\tC" msgstr "Geometrie kopieren\tC" -#: flatcamGUI/FlatCAMGUI.py:419 +#: flatcamGUI/FlatCAMGUI.py:432 msgid "Delete Shape\tDEL" msgstr "Form löschen\tDEL" -#: flatcamGUI/FlatCAMGUI.py:422 flatcamGUI/FlatCAMGUI.py:495 +#: flatcamGUI/FlatCAMGUI.py:435 flatcamGUI/FlatCAMGUI.py:508 msgid "Move\tM" msgstr "Bewegung\tM" -#: flatcamGUI/FlatCAMGUI.py:424 +#: flatcamGUI/FlatCAMGUI.py:437 msgid "Buffer Tool\tB" msgstr "Pufferwerkzeug\tB" -#: flatcamGUI/FlatCAMGUI.py:427 +#: flatcamGUI/FlatCAMGUI.py:440 msgid "Paint Tool\tI" msgstr "Malenwerkzeug\tI" -#: flatcamGUI/FlatCAMGUI.py:430 +#: flatcamGUI/FlatCAMGUI.py:443 msgid "Transform Tool\tALT+R" msgstr "Transformationswerkzeug\tALT+R" -#: flatcamGUI/FlatCAMGUI.py:434 +#: flatcamGUI/FlatCAMGUI.py:447 msgid "Toggle Corner Snap\tK" msgstr "Eckfang umschalten\tK" -#: flatcamGUI/FlatCAMGUI.py:437 +#: flatcamGUI/FlatCAMGUI.py:450 msgid ">Excellon Editor<" msgstr ">Excellon Editor<" -#: flatcamGUI/FlatCAMGUI.py:441 +#: flatcamGUI/FlatCAMGUI.py:454 msgid "Add Drill Array\tA" msgstr "Bohrfeld hinzufügen\tA" -#: flatcamGUI/FlatCAMGUI.py:443 +#: flatcamGUI/FlatCAMGUI.py:456 msgid "Add Drill\tD" msgstr "Bohrer hinzufügen\tD" -#: flatcamGUI/FlatCAMGUI.py:447 +#: flatcamGUI/FlatCAMGUI.py:460 msgid "Resize Drill(S)\tR" msgstr "Bohrer verkleinern\tR" -#: flatcamGUI/FlatCAMGUI.py:449 flatcamGUI/FlatCAMGUI.py:488 +#: flatcamGUI/FlatCAMGUI.py:462 flatcamGUI/FlatCAMGUI.py:501 msgid "Copy\tC" msgstr "Kopieren\tC" -#: flatcamGUI/FlatCAMGUI.py:451 flatcamGUI/FlatCAMGUI.py:490 +#: flatcamGUI/FlatCAMGUI.py:464 flatcamGUI/FlatCAMGUI.py:503 msgid "Delete\tDEL" msgstr "Löschen\tDEL" -#: flatcamGUI/FlatCAMGUI.py:456 +#: flatcamGUI/FlatCAMGUI.py:469 msgid "Move Drill(s)\tM" msgstr "Bohrer verschieben\tM" -#: flatcamGUI/FlatCAMGUI.py:460 +#: flatcamGUI/FlatCAMGUI.py:473 msgid ">Gerber Editor<" msgstr ">Gerber-Editor<" -#: flatcamGUI/FlatCAMGUI.py:464 +#: flatcamGUI/FlatCAMGUI.py:477 msgid "Add Pad\tP" msgstr "Pad hinzufügen\tP" -#: flatcamGUI/FlatCAMGUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:479 msgid "Add Pad Array\tA" msgstr "Pad-Array hinzufügen\tA" -#: flatcamGUI/FlatCAMGUI.py:468 +#: flatcamGUI/FlatCAMGUI.py:481 msgid "Add Track\tT" msgstr "Track hinzufügen\tA" -#: flatcamGUI/FlatCAMGUI.py:470 +#: flatcamGUI/FlatCAMGUI.py:483 msgid "Add Region\tN" msgstr "Region hinzufügen\tN" -#: flatcamGUI/FlatCAMGUI.py:474 +#: flatcamGUI/FlatCAMGUI.py:487 msgid "Poligonize\tALT+N" msgstr "Polygonisieren\tALT+N" -#: flatcamGUI/FlatCAMGUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:489 msgid "Add SemiDisc\tE" msgstr "Halbschibe hinzufügen\tE" -#: flatcamGUI/FlatCAMGUI.py:478 +#: flatcamGUI/FlatCAMGUI.py:491 msgid "Add Disc\tD" msgstr "Schibe hinzufügen\tD" -#: flatcamGUI/FlatCAMGUI.py:480 +#: flatcamGUI/FlatCAMGUI.py:493 msgid "Buffer\tB" msgstr "Puffer\tB" -#: flatcamGUI/FlatCAMGUI.py:482 +#: flatcamGUI/FlatCAMGUI.py:495 msgid "Scale\tS" msgstr "Skalieren\tS" -#: flatcamGUI/FlatCAMGUI.py:484 +#: flatcamGUI/FlatCAMGUI.py:497 msgid "Transform\tALT+R" msgstr "Transformationswerkzeug\tSTRG+R" -#: flatcamGUI/FlatCAMGUI.py:511 +#: flatcamGUI/FlatCAMGUI.py:524 msgid "Enable Plot" msgstr "Diagramm aktivieren" -#: flatcamGUI/FlatCAMGUI.py:512 +#: flatcamGUI/FlatCAMGUI.py:525 msgid "Disable Plot" msgstr "Diagramm deaktivieren" -#: flatcamGUI/FlatCAMGUI.py:514 +#: flatcamGUI/FlatCAMGUI.py:527 msgid "Generate CNC" msgstr "CNC generieren" -#: flatcamGUI/FlatCAMGUI.py:515 +#: flatcamGUI/FlatCAMGUI.py:528 msgid "View Source" msgstr "Quelltext anzeigen" -#: flatcamGUI/FlatCAMGUI.py:517 flatcamGUI/FlatCAMGUI.py:1603 +#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1617 msgid "Edit" msgstr "Bearbeiten" -#: flatcamGUI/FlatCAMGUI.py:523 flatcamGUI/FlatCAMGUI.py:1609 +#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1623 #: flatcamTools/ToolProperties.py:25 msgid "Properties" msgstr "Eigenschaften" -#: flatcamGUI/FlatCAMGUI.py:552 +#: flatcamGUI/FlatCAMGUI.py:565 msgid "File Toolbar" msgstr "Dateisymbolleiste" -#: flatcamGUI/FlatCAMGUI.py:556 +#: flatcamGUI/FlatCAMGUI.py:569 msgid "Edit Toolbar" msgstr "Symbolleiste bearbeiten" -#: flatcamGUI/FlatCAMGUI.py:560 +#: flatcamGUI/FlatCAMGUI.py:573 msgid "View Toolbar" msgstr "Symbolleiste anzeigen" -#: flatcamGUI/FlatCAMGUI.py:564 +#: flatcamGUI/FlatCAMGUI.py:577 msgid "Shell Toolbar" msgstr "Shell-Symbolleiste" -#: flatcamGUI/FlatCAMGUI.py:568 +#: flatcamGUI/FlatCAMGUI.py:581 msgid "Tools Toolbar" msgstr "Werkzeugleiste" -#: flatcamGUI/FlatCAMGUI.py:572 +#: flatcamGUI/FlatCAMGUI.py:585 msgid "Excellon Editor Toolbar" msgstr "Excellon Editor-Symbolleiste" -#: flatcamGUI/FlatCAMGUI.py:576 +#: flatcamGUI/FlatCAMGUI.py:589 msgid "Geometry Editor Toolbar" msgstr "Geometrie Editor-Symbolleiste" -#: flatcamGUI/FlatCAMGUI.py:580 +#: flatcamGUI/FlatCAMGUI.py:593 msgid "Gerber Editor Toolbar" msgstr "Gerber Editor-Symbolleiste" -#: flatcamGUI/FlatCAMGUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:597 msgid "Grid Toolbar" msgstr "Raster-Symbolleiste" -#: flatcamGUI/FlatCAMGUI.py:603 flatcamGUI/FlatCAMGUI.py:1820 +#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1834 msgid "Open project" msgstr "Offenes Projekt" -#: flatcamGUI/FlatCAMGUI.py:604 flatcamGUI/FlatCAMGUI.py:1821 +#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1835 msgid "Save project" msgstr "Projekt speichern" -#: flatcamGUI/FlatCAMGUI.py:607 flatcamGUI/FlatCAMGUI.py:1824 +#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1838 msgid "New Blank Geometry" msgstr "Neue leere Geometrie" -#: flatcamGUI/FlatCAMGUI.py:608 +#: flatcamGUI/FlatCAMGUI.py:621 msgid "New Blank Gerber" msgstr "Neue leere Gerber" -#: flatcamGUI/FlatCAMGUI.py:609 flatcamGUI/FlatCAMGUI.py:1825 +#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1839 msgid "New Blank Excellon" msgstr "Neuer unbelegter Excellon" -#: flatcamGUI/FlatCAMGUI.py:611 flatcamGUI/FlatCAMGUI.py:1827 +#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1841 msgid "Editor" msgstr "Editor" -#: flatcamGUI/FlatCAMGUI.py:613 flatcamGUI/FlatCAMGUI.py:1829 +#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1843 msgid "Save Object and close the Editor" msgstr "Speichern Sie das Objekt und schließen Sie den Editor" -#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1833 +#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1847 msgid "&Delete" msgstr "&Löschen" -#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1836 +#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1850 msgid "&Replot" msgstr "&Replotieren" -#: flatcamGUI/FlatCAMGUI.py:621 flatcamGUI/FlatCAMGUI.py:1837 +#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1851 msgid "&Clear plot" msgstr "&Plot klar löschen" -#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1838 +#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1852 msgid "Zoom In" msgstr "Hineinzoomen" -#: flatcamGUI/FlatCAMGUI.py:623 flatcamGUI/FlatCAMGUI.py:1839 +#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1853 msgid "Zoom Out" msgstr "Rauszoomen" -#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1578 -#: flatcamGUI/FlatCAMGUI.py:1840 +#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1854 msgid "Zoom Fit" msgstr "Passenzoomen" -#: flatcamGUI/FlatCAMGUI.py:629 flatcamGUI/FlatCAMGUI.py:1845 +#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1859 msgid "&Command Line" msgstr "Befehlszeile" -#: flatcamGUI/FlatCAMGUI.py:632 flatcamGUI/FlatCAMGUI.py:1848 +#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1862 msgid "2Sided Tool" msgstr "2Seitiges Werkzeug" -#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1849 +#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1863 msgid "&Cutout Tool" msgstr "Ausschnittwerkzeug" -#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1850 +#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1864 #: flatcamGUI/ObjectUI.py:392 flatcamTools/ToolNonCopperClear.py:285 msgid "NCC Tool" msgstr "NCC Werkzeug" -#: flatcamGUI/FlatCAMGUI.py:638 flatcamGUI/FlatCAMGUI.py:1854 +#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1868 msgid "Panel Tool" msgstr "Platte Werkzeug" -#: flatcamGUI/FlatCAMGUI.py:639 flatcamGUI/FlatCAMGUI.py:1855 +#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1869 #: flatcamTools/ToolFilm.py:204 msgid "Film Tool" msgstr "Filmwerkzeug" -#: flatcamGUI/FlatCAMGUI.py:640 flatcamGUI/FlatCAMGUI.py:1857 +#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1871 msgid "SolderPaste Tool" msgstr "Lötpaste-Werkzeug" -#: flatcamGUI/FlatCAMGUI.py:641 flatcamGUI/FlatCAMGUI.py:1858 +#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1872 #: flatcamTools/ToolSub.py:26 msgid "Substract Tool" msgstr "Abziehen Werkzeug " -#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1863 +#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1877 msgid "Calculators Tool" msgstr "Rechnerwerkzeug" -#: flatcamGUI/FlatCAMGUI.py:649 flatcamGUI/FlatCAMGUI.py:663 -#: flatcamGUI/FlatCAMGUI.py:696 flatcamGUI/FlatCAMGUI.py:1867 -#: flatcamGUI/FlatCAMGUI.py:1917 +#: flatcamGUI/FlatCAMGUI.py:662 flatcamGUI/FlatCAMGUI.py:676 +#: flatcamGUI/FlatCAMGUI.py:709 flatcamGUI/FlatCAMGUI.py:1881 +#: flatcamGUI/FlatCAMGUI.py:1931 msgid "Select" msgstr "Wählen" -#: flatcamGUI/FlatCAMGUI.py:650 flatcamGUI/FlatCAMGUI.py:1868 +#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1882 msgid "Add Drill Hole" msgstr "Bohrloch hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1870 +#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1884 msgid "Add Drill Hole Array" msgstr "Bohrlochfeld hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1871 +#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1885 msgid "Resize Drill" msgstr "Bohrergröße ändern" -#: flatcamGUI/FlatCAMGUI.py:656 flatcamGUI/FlatCAMGUI.py:1874 +#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1888 msgid "Copy Drill" msgstr "Bohrer kopieren" -#: flatcamGUI/FlatCAMGUI.py:657 flatcamGUI/FlatCAMGUI.py:1876 +#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1890 msgid "Delete Drill" msgstr "Bohrer löschen" -#: flatcamGUI/FlatCAMGUI.py:660 flatcamGUI/FlatCAMGUI.py:1879 +#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1893 msgid "Move Drill" msgstr "Bohrer bewegen" -#: flatcamGUI/FlatCAMGUI.py:664 flatcamGUI/FlatCAMGUI.py:1883 +#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1897 msgid "Add Circle" msgstr "Kreis hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1884 +#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1898 msgid "Add Arc" msgstr "Bogen hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:667 flatcamGUI/FlatCAMGUI.py:1886 +#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1900 msgid "Add Rectangle" msgstr "Rechteck hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1889 +#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1903 msgid "Add Path" msgstr "Pfad hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:671 flatcamGUI/FlatCAMGUI.py:1891 +#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1905 msgid "Add Polygon" msgstr "Polygon hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1893 +#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1907 msgid "Add Text" msgstr "Text hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:674 flatcamGUI/FlatCAMGUI.py:1895 +#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1909 msgid "Add Buffer" msgstr "Puffer hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:675 flatcamGUI/FlatCAMGUI.py:1896 +#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1910 msgid "Paint Shape" msgstr "Malen Form" -#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1899 +#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:1913 msgid "Polygon Union" msgstr "Polygon-Vereinigung" -#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1901 +#: flatcamGUI/FlatCAMGUI.py:693 flatcamGUI/FlatCAMGUI.py:1915 msgid "Polygon Intersection" msgstr "Polygonschnitt" -#: flatcamGUI/FlatCAMGUI.py:682 flatcamGUI/FlatCAMGUI.py:1903 +#: flatcamGUI/FlatCAMGUI.py:695 flatcamGUI/FlatCAMGUI.py:1917 msgid "Polygon Subtraction" msgstr "Polygon-Subtraktion" -#: flatcamGUI/FlatCAMGUI.py:685 flatcamGUI/FlatCAMGUI.py:1906 +#: flatcamGUI/FlatCAMGUI.py:698 flatcamGUI/FlatCAMGUI.py:1920 msgid "Cut Path" msgstr "Pfad ausschneiden" -#: flatcamGUI/FlatCAMGUI.py:686 +#: flatcamGUI/FlatCAMGUI.py:699 msgid "Copy Shape(s)" msgstr "Form kopieren" -#: flatcamGUI/FlatCAMGUI.py:689 +#: flatcamGUI/FlatCAMGUI.py:702 msgid "Delete Shape '-'" msgstr "Form löschen" -#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:715 -#: flatcamGUI/FlatCAMGUI.py:1911 flatcamGUI/FlatCAMGUI.py:1936 +#: flatcamGUI/FlatCAMGUI.py:704 flatcamGUI/FlatCAMGUI.py:728 +#: flatcamGUI/FlatCAMGUI.py:1925 flatcamGUI/FlatCAMGUI.py:1950 msgid "Transformations" msgstr "Transformationen" -#: flatcamGUI/FlatCAMGUI.py:693 +#: flatcamGUI/FlatCAMGUI.py:706 msgid "Move Objects " msgstr "Objekte verschieben " -#: flatcamGUI/FlatCAMGUI.py:697 flatcamGUI/FlatCAMGUI.py:1918 +#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1932 msgid "Add Pad" msgstr "Pad hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:699 flatcamGUI/FlatCAMGUI.py:1920 +#: flatcamGUI/FlatCAMGUI.py:712 flatcamGUI/FlatCAMGUI.py:1934 msgid "Add Track" msgstr "Track hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:700 flatcamGUI/FlatCAMGUI.py:1921 +#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1935 msgid "Add Region" msgstr "Region hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:702 flatcamGUI/FlatCAMGUI.py:1923 +#: flatcamGUI/FlatCAMGUI.py:715 flatcamGUI/FlatCAMGUI.py:1937 msgid "Poligonize" msgstr "Polygonisieren" -#: flatcamGUI/FlatCAMGUI.py:704 flatcamGUI/FlatCAMGUI.py:1925 +#: flatcamGUI/FlatCAMGUI.py:717 flatcamGUI/FlatCAMGUI.py:1939 msgid "SemiDisc" msgstr "Halbscheibe" -#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:1926 +#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1940 msgid "Disc" msgstr "Scheibe" -#: flatcamGUI/FlatCAMGUI.py:717 flatcamGUI/FlatCAMGUI.py:1588 -#: flatcamGUI/FlatCAMGUI.py:1608 flatcamGUI/FlatCAMGUI.py:1938 +#: flatcamGUI/FlatCAMGUI.py:730 flatcamGUI/FlatCAMGUI.py:1602 +#: flatcamGUI/FlatCAMGUI.py:1622 flatcamGUI/FlatCAMGUI.py:1952 #: flatcamTools/ToolMove.py:26 msgid "Move" msgstr "Bewegung" -#: flatcamGUI/FlatCAMGUI.py:723 flatcamGUI/FlatCAMGUI.py:1944 +#: flatcamGUI/FlatCAMGUI.py:736 flatcamGUI/FlatCAMGUI.py:1958 msgid "Snap to grid" msgstr "Am Raster ausrichten" -#: flatcamGUI/FlatCAMGUI.py:726 flatcamGUI/FlatCAMGUI.py:1947 +#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1961 msgid "Grid X snapping distance" msgstr "Raster X Fangdistanz" -#: flatcamGUI/FlatCAMGUI.py:731 flatcamGUI/FlatCAMGUI.py:1952 +#: flatcamGUI/FlatCAMGUI.py:744 flatcamGUI/FlatCAMGUI.py:1966 msgid "Grid Y snapping distance" msgstr "Raster Y Fangdistanz" -#: flatcamGUI/FlatCAMGUI.py:737 flatcamGUI/FlatCAMGUI.py:1958 +#: flatcamGUI/FlatCAMGUI.py:750 flatcamGUI/FlatCAMGUI.py:1972 msgid "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." @@ -4434,64 +4528,64 @@ msgstr "" "Wenn aktiv, Wert auf Grid_X\n" "wird in den Wert von Grid_Y kopiert." -#: flatcamGUI/FlatCAMGUI.py:743 flatcamGUI/FlatCAMGUI.py:1964 +#: flatcamGUI/FlatCAMGUI.py:756 flatcamGUI/FlatCAMGUI.py:1978 msgid "Snap to corner" msgstr "In der Ecke ausrichten" -#: flatcamGUI/FlatCAMGUI.py:747 flatcamGUI/FlatCAMGUI.py:1968 -#: flatcamGUI/FlatCAMGUI.py:3311 +#: flatcamGUI/FlatCAMGUI.py:760 flatcamGUI/FlatCAMGUI.py:1982 +#: flatcamGUI/FlatCAMGUI.py:3339 msgid "Max. magnet distance" msgstr "Max. Magnetabstand" -#: flatcamGUI/FlatCAMGUI.py:775 flatcamGUI/FlatCAMGUI.py:1572 +#: flatcamGUI/FlatCAMGUI.py:788 flatcamGUI/FlatCAMGUI.py:1586 msgid "Project" msgstr "Projekt" -#: flatcamGUI/FlatCAMGUI.py:785 +#: flatcamGUI/FlatCAMGUI.py:798 msgid "Selected" msgstr "Ausgewählt" -#: flatcamGUI/FlatCAMGUI.py:804 flatcamGUI/FlatCAMGUI.py:812 +#: flatcamGUI/FlatCAMGUI.py:817 flatcamGUI/FlatCAMGUI.py:825 msgid "Plot Area" msgstr "Grundstücksfläche" -#: flatcamGUI/FlatCAMGUI.py:836 +#: flatcamGUI/FlatCAMGUI.py:849 msgid "General" msgstr "Allgemeines" -#: flatcamGUI/FlatCAMGUI.py:845 +#: flatcamGUI/FlatCAMGUI.py:858 msgid "APP. DEFAULTS" msgstr "Anwendungsvorgaben" -#: flatcamGUI/FlatCAMGUI.py:846 +#: flatcamGUI/FlatCAMGUI.py:859 msgid "PROJ. OPTIONS " msgstr "Projektoptionen" -#: flatcamGUI/FlatCAMGUI.py:857 +#: flatcamGUI/FlatCAMGUI.py:870 msgid "GERBER" msgstr "GERBER" -#: flatcamGUI/FlatCAMGUI.py:866 +#: flatcamGUI/FlatCAMGUI.py:879 msgid "EXCELLON" msgstr "EXCELLON" -#: flatcamGUI/FlatCAMGUI.py:875 +#: flatcamGUI/FlatCAMGUI.py:888 msgid "GEOMETRY" msgstr "GEOMETRY" -#: flatcamGUI/FlatCAMGUI.py:885 +#: flatcamGUI/FlatCAMGUI.py:898 msgid "CNC-JOB" msgstr "CNC-Auftrag" -#: flatcamGUI/FlatCAMGUI.py:894 +#: flatcamGUI/FlatCAMGUI.py:907 msgid "TOOLS" msgstr "WERKZEUGE" -#: flatcamGUI/FlatCAMGUI.py:911 +#: flatcamGUI/FlatCAMGUI.py:924 msgid "Import Preferences" msgstr "Importeinstellungen" -#: flatcamGUI/FlatCAMGUI.py:914 +#: flatcamGUI/FlatCAMGUI.py:927 msgid "" "Import a full set of FlatCAM settings from a file\n" "previously saved on HDD.\n" @@ -4506,11 +4600,11 @@ msgstr "" "FlatCAM speichert automatisch eine 'factory_defaults'-Datei\n" "beim ersten Start. Löschen Sie diese Datei nicht." -#: flatcamGUI/FlatCAMGUI.py:921 +#: flatcamGUI/FlatCAMGUI.py:934 msgid "Export Preferences" msgstr "Voreinstell. export." -#: flatcamGUI/FlatCAMGUI.py:924 +#: flatcamGUI/FlatCAMGUI.py:937 msgid "" "Export a full set of FlatCAM settings in a file\n" "that is saved on HDD." @@ -4519,20 +4613,20 @@ msgstr "" "Datei\n" "das ist auf der Festplatte gespeichert." -#: flatcamGUI/FlatCAMGUI.py:929 +#: flatcamGUI/FlatCAMGUI.py:942 msgid "Open Pref Folder" msgstr "Öffnen Sie \"Einstell.\"" -#: flatcamGUI/FlatCAMGUI.py:932 +#: flatcamGUI/FlatCAMGUI.py:945 msgid "Open the folder where FlatCAM save the preferences files." msgstr "" "Öffnen Sie den Ordner, in dem FlatCAM die Voreinstellungsdateien speichert." -#: flatcamGUI/FlatCAMGUI.py:940 +#: flatcamGUI/FlatCAMGUI.py:953 msgid "Save Preferences" msgstr "Voreinstell. speech." -#: flatcamGUI/FlatCAMGUI.py:943 +#: flatcamGUI/FlatCAMGUI.py:956 msgid "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." @@ -4540,7 +4634,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:969 +#: flatcamGUI/FlatCAMGUI.py:982 msgid "" "General Shortcut list
\n" " Editor Shortcut list
\n" "
\n" @@ -5739,99 +5833,99 @@ msgstr "" "
\n" " " -#: flatcamGUI/FlatCAMGUI.py:1566 +#: flatcamGUI/FlatCAMGUI.py:1579 msgid "Disable" msgstr "Deaktivieren" -#: flatcamGUI/FlatCAMGUI.py:1568 +#: flatcamGUI/FlatCAMGUI.py:1581 msgid "New" msgstr "Neu" -#: flatcamGUI/FlatCAMGUI.py:1569 +#: flatcamGUI/FlatCAMGUI.py:1582 msgid "Geometry" msgstr "Geometrie" -#: flatcamGUI/FlatCAMGUI.py:1570 +#: flatcamGUI/FlatCAMGUI.py:1584 msgid "Excellon" msgstr "Excellon" -#: flatcamGUI/FlatCAMGUI.py:1575 +#: flatcamGUI/FlatCAMGUI.py:1589 msgid "Grids" msgstr "Raster" -#: flatcamGUI/FlatCAMGUI.py:1577 +#: flatcamGUI/FlatCAMGUI.py:1591 msgid "View" msgstr "Aussicht" -#: flatcamGUI/FlatCAMGUI.py:1579 +#: flatcamGUI/FlatCAMGUI.py:1593 msgid "Clear Plot" msgstr "Plot klar löschen" -#: flatcamGUI/FlatCAMGUI.py:1580 +#: flatcamGUI/FlatCAMGUI.py:1594 msgid "Replot" msgstr "Replotieren" -#: flatcamGUI/FlatCAMGUI.py:1583 +#: flatcamGUI/FlatCAMGUI.py:1597 msgid "Geo Editor" msgstr "Geo-Editor" -#: flatcamGUI/FlatCAMGUI.py:1584 +#: flatcamGUI/FlatCAMGUI.py:1598 msgid "Line" msgstr "Linie" -#: flatcamGUI/FlatCAMGUI.py:1585 +#: flatcamGUI/FlatCAMGUI.py:1599 msgid "Rectangle" msgstr "Rechteck" -#: flatcamGUI/FlatCAMGUI.py:1586 +#: flatcamGUI/FlatCAMGUI.py:1600 msgid "Cut" msgstr "Schnitt" -#: flatcamGUI/FlatCAMGUI.py:1591 +#: flatcamGUI/FlatCAMGUI.py:1605 msgid "Pad" msgstr "Pad" -#: flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1606 msgid "Pad Array" msgstr "Pad-Array" -#: flatcamGUI/FlatCAMGUI.py:1593 +#: flatcamGUI/FlatCAMGUI.py:1607 msgid "Track" msgstr "Track" -#: flatcamGUI/FlatCAMGUI.py:1594 +#: flatcamGUI/FlatCAMGUI.py:1608 msgid "Region" msgstr "Region" -#: flatcamGUI/FlatCAMGUI.py:1596 +#: flatcamGUI/FlatCAMGUI.py:1610 msgid "Exc Editor" msgstr "Exc-Editor" -#: flatcamGUI/FlatCAMGUI.py:1597 +#: flatcamGUI/FlatCAMGUI.py:1611 msgid "Add Drill" msgstr "Bohrer hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:1629 +#: flatcamGUI/FlatCAMGUI.py:1643 msgid "Print Preview" msgstr "Druckvorschau" -#: flatcamGUI/FlatCAMGUI.py:1630 +#: flatcamGUI/FlatCAMGUI.py:1644 msgid "Print Code" msgstr "Code drucken" -#: flatcamGUI/FlatCAMGUI.py:1631 +#: flatcamGUI/FlatCAMGUI.py:1645 msgid "Find in Code" msgstr "Im Code suchen" -#: flatcamGUI/FlatCAMGUI.py:1636 +#: flatcamGUI/FlatCAMGUI.py:1650 msgid "Replace With" msgstr "Ersetzen mit" -#: flatcamGUI/FlatCAMGUI.py:1640 +#: flatcamGUI/FlatCAMGUI.py:1654 msgid "All" msgstr "Alles" -#: flatcamGUI/FlatCAMGUI.py:1642 +#: flatcamGUI/FlatCAMGUI.py:1656 msgid "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." @@ -5840,15 +5934,15 @@ msgstr "" "ersetzt\n" "mit dem Text im Feld \"Ersetzen\" .." -#: flatcamGUI/FlatCAMGUI.py:1645 +#: flatcamGUI/FlatCAMGUI.py:1659 msgid "Open Code" msgstr "Code öffnen" -#: flatcamGUI/FlatCAMGUI.py:1646 +#: flatcamGUI/FlatCAMGUI.py:1660 msgid "Save Code" msgstr "Code speichern" -#: flatcamGUI/FlatCAMGUI.py:1681 +#: flatcamGUI/FlatCAMGUI.py:1695 msgid "" "Relative neasurement.\n" "Reference is last click position" @@ -5856,7 +5950,7 @@ msgstr "" "Relative Messung\n" "Referenz ist Position des letzten Klicks" -#: flatcamGUI/FlatCAMGUI.py:1687 +#: flatcamGUI/FlatCAMGUI.py:1701 msgid "" "Absolute neasurement.\n" "Reference is (X=0, Y= 0) position" @@ -5864,23 +5958,23 @@ msgstr "" "Absolute Messung.\n" "Referenz ist (X = 0, Y = 0)" -#: flatcamGUI/FlatCAMGUI.py:1882 +#: flatcamGUI/FlatCAMGUI.py:1896 msgid "Select 'Esc'" msgstr "Wählen" -#: flatcamGUI/FlatCAMGUI.py:1907 +#: flatcamGUI/FlatCAMGUI.py:1921 msgid "Copy Objects" msgstr "Objekte kopieren" -#: flatcamGUI/FlatCAMGUI.py:1909 +#: flatcamGUI/FlatCAMGUI.py:1923 msgid "Delete Shape" msgstr "Form löschen" -#: flatcamGUI/FlatCAMGUI.py:1914 +#: flatcamGUI/FlatCAMGUI.py:1928 msgid "Move Objects" msgstr "Objekte verschieben" -#: flatcamGUI/FlatCAMGUI.py:2343 +#: flatcamGUI/FlatCAMGUI.py:2358 msgid "" "Please first select a geometry item to be cutted\n" "then select the geometry item that will be cutted\n" @@ -5892,17 +5986,17 @@ msgstr "" "aus dem ersten Artikel. Zum Schluss drücken Sie die Taste ~ X ~ oder\n" "die Symbolleisten-Schaltfläche." -#: flatcamGUI/FlatCAMGUI.py:2350 flatcamGUI/FlatCAMGUI.py:2487 -#: flatcamGUI/FlatCAMGUI.py:2546 flatcamGUI/FlatCAMGUI.py:2566 +#: flatcamGUI/FlatCAMGUI.py:2365 flatcamGUI/FlatCAMGUI.py:2502 +#: flatcamGUI/FlatCAMGUI.py:2561 flatcamGUI/FlatCAMGUI.py:2581 msgid "Warning" msgstr "Warnung" -#: flatcamGUI/FlatCAMGUI.py:2417 flatcamGUI/FlatCAMGUI.py:2616 -#: flatcamGUI/FlatCAMGUI.py:2827 +#: flatcamGUI/FlatCAMGUI.py:2432 flatcamGUI/FlatCAMGUI.py:2631 +#: flatcamGUI/FlatCAMGUI.py:2842 msgid "[WARNING_NOTCL] Cancelled." msgstr "[WARNING_NOTCL] Abgebrochen." -#: flatcamGUI/FlatCAMGUI.py:2482 +#: flatcamGUI/FlatCAMGUI.py:2497 msgid "" "Please select geometry items \n" "on which to perform Intersection Tool." @@ -5910,7 +6004,7 @@ msgstr "" "Bitte wählen Sie Geometrieelemente aus\n" "auf dem das Verschneidungswerkzeug ausgeführt werden soll." -#: flatcamGUI/FlatCAMGUI.py:2541 +#: flatcamGUI/FlatCAMGUI.py:2556 msgid "" "Please select geometry items \n" "on which to perform Substraction Tool." @@ -5918,7 +6012,7 @@ msgstr "" "Bitte wählen Sie Geometrieelemente aus\n" "auf dem das Subtraktionswerkzeug ausgeführt werden soll." -#: flatcamGUI/FlatCAMGUI.py:2561 +#: flatcamGUI/FlatCAMGUI.py:2576 msgid "" "Please select geometry items \n" "on which to perform union." @@ -5926,55 +6020,55 @@ msgstr "" "Bitte wählen Sie Geometrieelemente aus\n" "auf dem die Polygonverbindung ausgeführt werden soll." -#: flatcamGUI/FlatCAMGUI.py:2632 flatcamGUI/FlatCAMGUI.py:2844 +#: flatcamGUI/FlatCAMGUI.py:2647 flatcamGUI/FlatCAMGUI.py:2859 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to delete." msgstr "[WARNING_NOTCL] Abgebrochen. Nichts zum Löschen ausgewählt." -#: flatcamGUI/FlatCAMGUI.py:2716 flatcamGUI/FlatCAMGUI.py:2911 +#: flatcamGUI/FlatCAMGUI.py:2731 flatcamGUI/FlatCAMGUI.py:2926 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to copy." msgstr "[WARNING_NOTCL] Abgebrochen. Nichts zum Kopieren ausgewählt." -#: flatcamGUI/FlatCAMGUI.py:2762 flatcamGUI/FlatCAMGUI.py:2957 +#: flatcamGUI/FlatCAMGUI.py:2777 flatcamGUI/FlatCAMGUI.py:2972 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to move." msgstr "[WARNING_NOTCL] Abgebrochen. Nichts ausgewählt, um sich zu bewegen." -#: flatcamGUI/FlatCAMGUI.py:2971 +#: flatcamGUI/FlatCAMGUI.py:2986 msgid "New Tool ..." msgstr "Neues Werkzeug ..." -#: flatcamGUI/FlatCAMGUI.py:2972 +#: flatcamGUI/FlatCAMGUI.py:2987 msgid "Enter a Tool Diameter:" msgstr "Geben Sie einen Werkzeugdurchmesser ein:" -#: flatcamGUI/FlatCAMGUI.py:3014 +#: flatcamGUI/FlatCAMGUI.py:3029 msgid "Measurement Tool exit..." msgstr "Messwerkzeug beenden ..." -#: flatcamGUI/FlatCAMGUI.py:3296 +#: flatcamGUI/FlatCAMGUI.py:3324 msgid "Grid X value:" msgstr "Raster X-Wert:" -#: flatcamGUI/FlatCAMGUI.py:3298 +#: flatcamGUI/FlatCAMGUI.py:3326 msgid "This is the Grid snap value on X axis." msgstr "Dies ist der Rasterfangwert auf der X-Achse." -#: flatcamGUI/FlatCAMGUI.py:3303 +#: flatcamGUI/FlatCAMGUI.py:3331 msgid "Grid Y value:" msgstr "Raster Y-Wert:" -#: flatcamGUI/FlatCAMGUI.py:3305 +#: flatcamGUI/FlatCAMGUI.py:3333 msgid "This is the Grid snap value on Y axis." msgstr "Dies ist der Rasterfangwert auf der Y-Achse." -#: flatcamGUI/FlatCAMGUI.py:3310 +#: flatcamGUI/FlatCAMGUI.py:3338 msgid "Snap Max:" msgstr "Maximalwert:" -#: flatcamGUI/FlatCAMGUI.py:3315 +#: flatcamGUI/FlatCAMGUI.py:3343 msgid "Workspace:" msgstr "Arbeitsplatz:" -#: flatcamGUI/FlatCAMGUI.py:3317 +#: flatcamGUI/FlatCAMGUI.py:3345 msgid "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." @@ -5982,11 +6076,11 @@ msgstr "" "Zeichnen Sie ein begrenzendes Rechteck auf die Leinwand.\n" "Ziel ist es, die Grenzen unserer Arbeit aufzuzeigen." -#: flatcamGUI/FlatCAMGUI.py:3320 +#: flatcamGUI/FlatCAMGUI.py:3348 msgid "Wk. format:" msgstr "Arbeitsbereichformat:" -#: flatcamGUI/FlatCAMGUI.py:3322 +#: flatcamGUI/FlatCAMGUI.py:3350 msgid "" "Select the type of rectangle to be used on canvas,\n" "as valid workspace." @@ -5994,11 +6088,11 @@ msgstr "" "Wählen Sie den Typ des Rechtecks für die Leinwand aus.\n" "als gültiger Arbeitsbereich." -#: flatcamGUI/FlatCAMGUI.py:3335 +#: flatcamGUI/FlatCAMGUI.py:3363 msgid "Plot Fill:" msgstr "Plot füllen:" -#: flatcamGUI/FlatCAMGUI.py:3337 +#: flatcamGUI/FlatCAMGUI.py:3365 msgid "" "Set the fill color for plotted objects.\n" "First 6 digits are the color and the last 2\n" @@ -6008,28 +6102,28 @@ msgstr "" "Die ersten 6 Ziffern sind die Farbe und die letzten 2\n" "Ziffern sind für Alpha (Transparenz)." -#: flatcamGUI/FlatCAMGUI.py:3351 flatcamGUI/FlatCAMGUI.py:3401 -#: flatcamGUI/FlatCAMGUI.py:3451 +#: flatcamGUI/FlatCAMGUI.py:3379 flatcamGUI/FlatCAMGUI.py:3429 +#: flatcamGUI/FlatCAMGUI.py:3479 msgid "Alpha Level:" msgstr "Alpha-Ebene:" -#: flatcamGUI/FlatCAMGUI.py:3353 +#: flatcamGUI/FlatCAMGUI.py:3381 msgid "Set the fill transparency for plotted objects." msgstr "Legen Sie die Füllungstransparenz für geplottete Objekte fest." -#: flatcamGUI/FlatCAMGUI.py:3370 +#: flatcamGUI/FlatCAMGUI.py:3398 msgid "Plot Line:" msgstr "Handlungsstrang:" -#: flatcamGUI/FlatCAMGUI.py:3372 +#: flatcamGUI/FlatCAMGUI.py:3400 msgid "Set the line color for plotted objects." msgstr "Legen Sie die Linienfarbe für geplottete Objekte fest." -#: flatcamGUI/FlatCAMGUI.py:3384 +#: flatcamGUI/FlatCAMGUI.py:3412 msgid "Sel. Fill:" msgstr "Ausgewählte Füllung:" -#: flatcamGUI/FlatCAMGUI.py:3386 +#: flatcamGUI/FlatCAMGUI.py:3414 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from left to right.\n" @@ -6041,26 +6135,26 @@ msgstr "" "Die ersten 6 Ziffern sind die Farbe und die letzten 2\n" "Ziffern sind für Alpha (Transparenz)." -#: flatcamGUI/FlatCAMGUI.py:3403 +#: flatcamGUI/FlatCAMGUI.py:3431 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:3420 +#: flatcamGUI/FlatCAMGUI.py:3448 msgid "Sel. Line:" msgstr "Auswahlzeile:" -#: flatcamGUI/FlatCAMGUI.py:3422 +#: flatcamGUI/FlatCAMGUI.py:3450 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:3434 +#: flatcamGUI/FlatCAMGUI.py:3462 msgid "Sel2. Fill:" msgstr "Auswahl2 Füllung:" -#: flatcamGUI/FlatCAMGUI.py:3436 +#: flatcamGUI/FlatCAMGUI.py:3464 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from right to left.\n" @@ -6072,49 +6166,49 @@ msgstr "" "Die ersten 6 Ziffern sind die Farbe und die letzten 2\n" "Ziffern sind für Alpha (Transparenz)." -#: flatcamGUI/FlatCAMGUI.py:3453 +#: flatcamGUI/FlatCAMGUI.py:3481 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:3470 +#: flatcamGUI/FlatCAMGUI.py:3498 msgid "Sel2. Line:" msgstr "Auswahl 2 Zeile:" -#: flatcamGUI/FlatCAMGUI.py:3472 +#: flatcamGUI/FlatCAMGUI.py:3500 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:3484 +#: flatcamGUI/FlatCAMGUI.py:3512 msgid "Editor Draw:" msgstr "Editor zeichnen:" -#: flatcamGUI/FlatCAMGUI.py:3486 +#: flatcamGUI/FlatCAMGUI.py:3514 msgid "Set the color for the shape." msgstr "Legen Sie die Farbe für die Form fest." -#: flatcamGUI/FlatCAMGUI.py:3498 +#: flatcamGUI/FlatCAMGUI.py:3526 msgid "Editor Draw Sel.:" msgstr "Editor Draw Sel.:" -#: flatcamGUI/FlatCAMGUI.py:3500 +#: flatcamGUI/FlatCAMGUI.py:3528 msgid "Set the color of the shape when selected." msgstr "Legt die Farbe der Form fest, wenn sie ausgewählt wird." -#: flatcamGUI/FlatCAMGUI.py:3512 +#: flatcamGUI/FlatCAMGUI.py:3540 msgid "Project Items:" msgstr "Projektelemente:" -#: flatcamGUI/FlatCAMGUI.py:3514 +#: flatcamGUI/FlatCAMGUI.py:3542 msgid "Set the color of the items in Project Tab Tree." msgstr "Legen Sie die Farbe der Elemente im Projektregisterbaum fest." -#: flatcamGUI/FlatCAMGUI.py:3525 +#: flatcamGUI/FlatCAMGUI.py:3553 msgid "Proj. Dis. Items:" msgstr "Proj. Deakt. Elemente" -#: flatcamGUI/FlatCAMGUI.py:3527 +#: flatcamGUI/FlatCAMGUI.py:3555 msgid "" "Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled." @@ -6122,15 +6216,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:3578 +#: flatcamGUI/FlatCAMGUI.py:3606 msgid "GUI Settings" msgstr "GUI-Einstellungen" -#: flatcamGUI/FlatCAMGUI.py:3585 +#: flatcamGUI/FlatCAMGUI.py:3613 msgid "Layout:" msgstr "Layout:" -#: flatcamGUI/FlatCAMGUI.py:3587 +#: flatcamGUI/FlatCAMGUI.py:3615 msgid "" "Select an layout for FlatCAM.\n" "It is applied immediately." @@ -6138,11 +6232,11 @@ msgstr "" "Wählen Sie ein Layout für FlatCAM.\n" "Es wird sofort angewendet." -#: flatcamGUI/FlatCAMGUI.py:3603 +#: flatcamGUI/FlatCAMGUI.py:3631 msgid "Style:" msgstr "Stil:" -#: flatcamGUI/FlatCAMGUI.py:3605 +#: flatcamGUI/FlatCAMGUI.py:3633 msgid "" "Select an style for FlatCAM.\n" "It will be applied at the next app start." @@ -6150,11 +6244,11 @@ msgstr "" "Wählen Sie einen Stil für FlatCAM.\n" "Es wird beim nächsten Start der App angewendet." -#: flatcamGUI/FlatCAMGUI.py:3616 +#: flatcamGUI/FlatCAMGUI.py:3644 msgid "HDPI Support:" msgstr "HDPI-Unterstützung:" -#: flatcamGUI/FlatCAMGUI.py:3618 +#: flatcamGUI/FlatCAMGUI.py:3646 msgid "" "Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start." @@ -6162,11 +6256,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:3631 +#: flatcamGUI/FlatCAMGUI.py:3659 msgid "Clear GUI Settings:" msgstr "GUI-Einstellungen löschen:" -#: flatcamGUI/FlatCAMGUI.py:3633 +#: flatcamGUI/FlatCAMGUI.py:3661 msgid "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." @@ -6174,15 +6268,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:3636 +#: flatcamGUI/FlatCAMGUI.py:3664 msgid "Clear" msgstr "Klären" -#: flatcamGUI/FlatCAMGUI.py:3640 +#: flatcamGUI/FlatCAMGUI.py:3668 msgid "Hover Shape:" msgstr "Schwebeflug-Form:" -#: flatcamGUI/FlatCAMGUI.py:3642 +#: flatcamGUI/FlatCAMGUI.py:3670 msgid "" "Enable display of a hover shape for FlatCAM objects.\n" "It is displayed whenever the mouse cursor is hovering\n" @@ -6192,11 +6286,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:3649 +#: flatcamGUI/FlatCAMGUI.py:3677 msgid "Sel. Shape:" msgstr "Auswahlform:" -#: flatcamGUI/FlatCAMGUI.py:3651 +#: flatcamGUI/FlatCAMGUI.py:3679 msgid "" "Enable the display of a selection shape for FlatCAM objects.\n" "It is displayed whenever the mouse selects an object\n" @@ -6208,23 +6302,23 @@ msgstr "" "entweder durch Klicken oder Ziehen der Maus von links nach rechts oder\n" "rechts nach links." -#: flatcamGUI/FlatCAMGUI.py:3693 +#: flatcamGUI/FlatCAMGUI.py:3721 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:3696 +#: flatcamGUI/FlatCAMGUI.py:3724 msgid "Clear GUI Settings" msgstr "Löschen Sie die GUI-Einstellungen" -#: flatcamGUI/FlatCAMGUI.py:3717 +#: flatcamGUI/FlatCAMGUI.py:3745 msgid "App Preferences" msgstr "App-Einstellungen" -#: flatcamGUI/FlatCAMGUI.py:3723 +#: flatcamGUI/FlatCAMGUI.py:3751 msgid "Units:" msgstr "Einheiten:" -#: flatcamGUI/FlatCAMGUI.py:3724 +#: flatcamGUI/FlatCAMGUI.py:3752 msgid "" "The default value for FlatCAM units.\n" "Whatever is selected here is set every time\n" @@ -6234,11 +6328,11 @@ msgstr "" "Was hier ausgewählt wird, wird jedes Mal eingestellt\n" "FLatCAM wird gestartet." -#: flatcamGUI/FlatCAMGUI.py:3731 +#: flatcamGUI/FlatCAMGUI.py:3759 msgid "APP. LEVEL:" msgstr "Bewerbungsebene:" -#: flatcamGUI/FlatCAMGUI.py:3732 +#: flatcamGUI/FlatCAMGUI.py:3760 msgid "" "Choose the default level of usage for FlatCAM.\n" "BASIC level -> reduced functionality, best for beginner's.\n" @@ -6254,19 +6348,19 @@ msgstr "" "Die Auswahl hier beeinflusst die Parameter in\n" "Die Registerkarte Ausgewählt für alle Arten von FlatCAM-Objekten." -#: flatcamGUI/FlatCAMGUI.py:3741 +#: flatcamGUI/FlatCAMGUI.py:3769 msgid "Languages:" msgstr "Sprachen:" -#: flatcamGUI/FlatCAMGUI.py:3742 +#: flatcamGUI/FlatCAMGUI.py:3770 msgid "Set the language used throughout FlatCAM." msgstr "Stellen Sie die Sprache ein, die in FlatCAM verwendet wird." -#: flatcamGUI/FlatCAMGUI.py:3745 +#: flatcamGUI/FlatCAMGUI.py:3773 msgid "Apply Language" msgstr "Sprache anwend." -#: flatcamGUI/FlatCAMGUI.py:3746 +#: flatcamGUI/FlatCAMGUI.py:3774 msgid "" "Set the language used throughout FlatCAM.\n" "The app will restart after click.Windows: When FlatCAM is installed in " @@ -6285,11 +6379,11 @@ msgstr "" "Sicherheitsfunktionen. In diesem Fall wird die Sprache sein\n" "Beim nächsten Start der App angewendet." -#: flatcamGUI/FlatCAMGUI.py:3755 +#: flatcamGUI/FlatCAMGUI.py:3783 msgid "Shell at StartUp:" msgstr "Shell beim Start:" -#: flatcamGUI/FlatCAMGUI.py:3757 flatcamGUI/FlatCAMGUI.py:3762 +#: flatcamGUI/FlatCAMGUI.py:3785 flatcamGUI/FlatCAMGUI.py:3790 msgid "" "Check this box if you want the shell to\n" "start automatically at startup." @@ -6297,11 +6391,11 @@ msgstr "" "Aktivieren Sie dieses Kontrollkästchen, wenn die Shell gewünscht wird\n" "automatisch beim Start starten" -#: flatcamGUI/FlatCAMGUI.py:3767 +#: flatcamGUI/FlatCAMGUI.py:3795 msgid "Version Check:" msgstr "Versionsprüfung:" -#: flatcamGUI/FlatCAMGUI.py:3769 flatcamGUI/FlatCAMGUI.py:3774 +#: flatcamGUI/FlatCAMGUI.py:3797 flatcamGUI/FlatCAMGUI.py:3802 msgid "" "Check this box if you want to check\n" "for a new version automatically at startup." @@ -6310,11 +6404,11 @@ msgstr "" "wenn Sie das Kontrollkästchen aktivieren möchten\n" "für eine neue Version automatisch beim Start." -#: flatcamGUI/FlatCAMGUI.py:3779 +#: flatcamGUI/FlatCAMGUI.py:3807 msgid "Send Stats:" msgstr "Statistiken senden:" -#: flatcamGUI/FlatCAMGUI.py:3781 flatcamGUI/FlatCAMGUI.py:3786 +#: flatcamGUI/FlatCAMGUI.py:3809 flatcamGUI/FlatCAMGUI.py:3814 msgid "" "Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM." @@ -6323,11 +6417,11 @@ msgstr "" "zustimmen\n" "wird beim Start automatisch aktualisiert, um FlatCAM zu verbessern." -#: flatcamGUI/FlatCAMGUI.py:3793 +#: flatcamGUI/FlatCAMGUI.py:3821 msgid "Pan Button:" msgstr "Pan-Taste:" -#: flatcamGUI/FlatCAMGUI.py:3794 +#: flatcamGUI/FlatCAMGUI.py:3822 msgid "" "Select the mouse button to use for panning:\n" "- MMB --> Middle Mouse Button\n" @@ -6337,19 +6431,19 @@ msgstr "" "- MMB -> Mittlere Maustaste\n" "- RMB -> Rechte Maustaste" -#: flatcamGUI/FlatCAMGUI.py:3801 +#: flatcamGUI/FlatCAMGUI.py:3829 msgid "Multiple Sel:" msgstr "Mehrfachauswahl:" -#: flatcamGUI/FlatCAMGUI.py:3802 +#: flatcamGUI/FlatCAMGUI.py:3830 msgid "Select the key used for multiple selection." msgstr "Wählen Sie den Schlüssel für die Mehrfachauswahl aus." -#: flatcamGUI/FlatCAMGUI.py:3807 +#: flatcamGUI/FlatCAMGUI.py:3835 msgid "Project at StartUp:" msgstr "Projekt beim Start:" -#: flatcamGUI/FlatCAMGUI.py:3809 flatcamGUI/FlatCAMGUI.py:3814 +#: flatcamGUI/FlatCAMGUI.py:3837 flatcamGUI/FlatCAMGUI.py:3842 msgid "" "Check this box if you want the project/selected/tool tab area to\n" "to be shown automatically at startup." @@ -6359,11 +6453,11 @@ msgstr "" "angezeigt werden soll\n" "beim Start automatisch angezeigt werden." -#: flatcamGUI/FlatCAMGUI.py:3819 +#: flatcamGUI/FlatCAMGUI.py:3847 msgid "Project AutoHide:" msgstr "Projekt autoausblenden:" -#: flatcamGUI/FlatCAMGUI.py:3821 flatcamGUI/FlatCAMGUI.py:3827 +#: flatcamGUI/FlatCAMGUI.py:3849 flatcamGUI/FlatCAMGUI.py:3855 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" @@ -6375,11 +6469,11 @@ msgstr "" "keine Objekte geladen sind und anzeigen, wenn ein \n" "neues Objekt erstellt wird." -#: flatcamGUI/FlatCAMGUI.py:3833 +#: flatcamGUI/FlatCAMGUI.py:3861 msgid "Enable ToolTips:" msgstr " QuickInfos aktivieren: " -#: flatcamGUI/FlatCAMGUI.py:3835 flatcamGUI/FlatCAMGUI.py:3840 +#: flatcamGUI/FlatCAMGUI.py:3863 flatcamGUI/FlatCAMGUI.py:3868 msgid "" "Check this box if you want to have toolTips displayed\n" "when hovering with mouse over items throughout the App." @@ -6388,11 +6482,11 @@ msgstr "" "sollen\n" "wenn Sie mit der Maus über Elemente in der App fahren." -#: flatcamGUI/FlatCAMGUI.py:3843 +#: flatcamGUI/FlatCAMGUI.py:3871 msgid "Workers number:" msgstr "Arbeiter Nummer:" -#: flatcamGUI/FlatCAMGUI.py:3845 flatcamGUI/FlatCAMGUI.py:3854 +#: flatcamGUI/FlatCAMGUI.py:3873 flatcamGUI/FlatCAMGUI.py:3882 msgid "" "The number of Qthreads made available to the App.\n" "A bigger number may finish the jobs more quickly but\n" @@ -6408,11 +6502,48 @@ msgstr "" "Der Standardwert ist 2.\n" "Nach dem Ändern wird es beim nächsten Start der App angewendet." -#: flatcamGUI/FlatCAMGUI.py:3895 +#: flatcamGUI/FlatCAMGUI.py:3894 flatcamGUI/FlatCAMGUI.py:3903 +msgid "" +"This value can counter the effect of the Circle Steps\n" +"parameter. Default value is 0.01.\n" +"A lower value will increase the detail both in image\n" +"and in Gcode for the circles, with a higher cost in\n" +"performance. Higher value will provide more\n" +"performance at the expense of level of detail." +msgstr "" +"Dieser Wert kann dem Effekt der Kreisschritte entgegenwirken\n" +"Parameter. Der Standardwert ist 0.01.\n" +"Ein niedrigerer Wert erhöht die Details in beiden Bildern\n" +"und in Gcode für die Kreise, mit höheren Kosten in\n" +"Performance. Ein höherer Wert bietet mehr\n" +"Leistung auf Kosten des Detaillierungsgrades." + +#: flatcamGUI/FlatCAMGUI.py:3939 +msgid "\"Open\" behavior" +msgstr "\"Offen\" -Verhalten" + +#: flatcamGUI/FlatCAMGUI.py:3941 +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" +"\n" +"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." +msgstr "" +"Wenn diese Option aktiviert ist, wird beim Speichern der Dateien der Pfad " +"für die zuletzt gespeicherte Datei verwendet.\n" +"und der Pfad für die zuletzt geöffnete Datei wird beim Öffnen von Dateien " +"verwendet.\n" +"\n" +"Wenn das Kontrollkästchen deaktiviert ist, wird der Pfad zum Öffnen der " +"Dateien zuletzt verwendet: entweder der Pfad\n" +"Pfad zum Speichern von Dateien oder Pfad zum Öffnen von Dateien." + +#: flatcamGUI/FlatCAMGUI.py:3950 msgid "Save Compressed Project" msgstr "Speichern Sie das komprimierte Projekt" -#: flatcamGUI/FlatCAMGUI.py:3897 +#: flatcamGUI/FlatCAMGUI.py:3952 msgid "" "Whether to save a compressed or uncompressed project.\n" "When checked it will save a compressed FlatCAM project." @@ -6422,11 +6553,11 @@ msgstr "" "Wenn diese Option aktiviert ist, wird ein komprimiertes FlatCAM-Projekt " "gespeichert." -#: flatcamGUI/FlatCAMGUI.py:3908 +#: flatcamGUI/FlatCAMGUI.py:3963 msgid "Compression Level:" msgstr "Kompressionsstufe:" -#: flatcamGUI/FlatCAMGUI.py:3910 +#: flatcamGUI/FlatCAMGUI.py:3965 msgid "" "The level of compression used when saving\n" "a FlatCAM project. Higher value means better compression\n" @@ -6436,47 +6567,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:3936 flatcamGUI/FlatCAMGUI.py:4177 -#: flatcamGUI/FlatCAMGUI.py:4832 flatcamGUI/FlatCAMGUI.py:5156 +#: flatcamGUI/FlatCAMGUI.py:3991 flatcamGUI/FlatCAMGUI.py:4360 +#: flatcamGUI/FlatCAMGUI.py:5030 flatcamGUI/FlatCAMGUI.py:5402 #: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:505 -#: flatcamGUI/ObjectUI.py:830 flatcamGUI/ObjectUI.py:1344 +#: flatcamGUI/ObjectUI.py:833 flatcamGUI/ObjectUI.py:1350 msgid "Plot Options:" msgstr " Diagrammoptionen: " -#: flatcamGUI/FlatCAMGUI.py:3943 flatcamGUI/FlatCAMGUI.py:4189 +#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4372 #: flatcamGUI/ObjectUI.py:156 flatcamGUI/ObjectUI.py:506 msgid "Solid" msgstr "Solide" -#: flatcamGUI/FlatCAMGUI.py:3945 flatcamGUI/ObjectUI.py:158 +#: flatcamGUI/FlatCAMGUI.py:4000 flatcamGUI/ObjectUI.py:158 msgid "Solid color polygons." msgstr "Einfarbige Polygone." -#: flatcamGUI/FlatCAMGUI.py:3950 flatcamGUI/ObjectUI.py:164 +#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/ObjectUI.py:164 msgid "M-Color" msgstr "M-farbig" -#: flatcamGUI/FlatCAMGUI.py:3952 flatcamGUI/ObjectUI.py:166 +#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:166 msgid "Draw polygons in different colors." msgstr "Zeichnen Sie Polygone in verschiedenen Farben." -#: flatcamGUI/FlatCAMGUI.py:3957 flatcamGUI/FlatCAMGUI.py:4183 -#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/ObjectUI.py:172 +#: flatcamGUI/FlatCAMGUI.py:4012 flatcamGUI/FlatCAMGUI.py:4366 +#: flatcamGUI/FlatCAMGUI.py:5034 flatcamGUI/ObjectUI.py:172 msgid "Plot" msgstr "Zeichn" -#: flatcamGUI/FlatCAMGUI.py:3959 flatcamGUI/FlatCAMGUI.py:4838 +#: flatcamGUI/FlatCAMGUI.py:4014 flatcamGUI/FlatCAMGUI.py:5036 #: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:546 -#: flatcamGUI/ObjectUI.py:876 flatcamGUI/ObjectUI.py:1431 +#: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1437 msgid "Plot (show) this object." msgstr "Plotten (zeigen) dieses Objekt." -#: flatcamGUI/FlatCAMGUI.py:3964 flatcamGUI/FlatCAMGUI.py:4845 -#: flatcamGUI/FlatCAMGUI.py:5192 +#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:5043 +#: flatcamGUI/FlatCAMGUI.py:5438 msgid "Circle Steps:" msgstr "Kreisschritte:" -#: flatcamGUI/FlatCAMGUI.py:3966 +#: flatcamGUI/FlatCAMGUI.py:4021 msgid "" "The number of circle steps for Gerber \n" "circular aperture linear approximation." @@ -6484,15 +6615,15 @@ msgstr "" "Die Anzahl der Kreisschritte für Gerber\n" "lineare Approximation mit kreisförmiger Apertur." -#: flatcamGUI/FlatCAMGUI.py:3981 +#: flatcamGUI/FlatCAMGUI.py:4036 msgid "Gerber Options" msgstr "Gerber-Optionen" -#: flatcamGUI/FlatCAMGUI.py:3985 flatcamGUI/ObjectUI.py:251 +#: flatcamGUI/FlatCAMGUI.py:4040 flatcamGUI/ObjectUI.py:251 msgid "Isolation Routing:" msgstr " Isolierungsrouting: " -#: flatcamGUI/FlatCAMGUI.py:3987 flatcamGUI/ObjectUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:4042 flatcamGUI/ObjectUI.py:253 msgid "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." @@ -6501,17 +6632,17 @@ msgstr "" "Werkzeugwege zum Schneiden von \n" "äußeren Polygonen." -#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4555 -#: flatcamGUI/FlatCAMGUI.py:5480 flatcamGUI/ObjectUI.py:785 -#: flatcamGUI/ObjectUI.py:801 +#: flatcamGUI/FlatCAMGUI.py:4053 flatcamGUI/FlatCAMGUI.py:4753 +#: flatcamGUI/FlatCAMGUI.py:5726 flatcamGUI/ObjectUI.py:788 +#: flatcamGUI/ObjectUI.py:804 msgid "Diameter of the cutting tool." msgstr "Durchmesser des Schneidewerkzeugs." -#: flatcamGUI/FlatCAMGUI.py:4005 +#: flatcamGUI/FlatCAMGUI.py:4060 msgid "Width (# passes):" msgstr "Breite (# passt):" -#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:275 +#: flatcamGUI/FlatCAMGUI.py:4062 flatcamGUI/ObjectUI.py:275 msgid "" "Width of the isolation gap in\n" "number (integer) of tool widths." @@ -6519,11 +6650,11 @@ msgstr "" "Breite der Isolationslücke in\n" "Anzahl (Ganzzahl) der Werkzeugbreiten." -#: flatcamGUI/FlatCAMGUI.py:4015 flatcamGUI/ObjectUI.py:283 +#: flatcamGUI/FlatCAMGUI.py:4070 flatcamGUI/ObjectUI.py:283 msgid "Pass overlap:" msgstr "Passüberlappung:" -#: flatcamGUI/FlatCAMGUI.py:4017 flatcamGUI/ObjectUI.py:285 +#: flatcamGUI/FlatCAMGUI.py:4072 flatcamGUI/ObjectUI.py:285 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -6537,11 +6668,11 @@ msgstr "" "Ein Wert von 0,25 bedeutet hier eine Überlappung von 25% \n" "vom oben angegebenen Werkzeugdurchmesser." -#: flatcamGUI/FlatCAMGUI.py:4025 flatcamGUI/ObjectUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:4080 flatcamGUI/ObjectUI.py:295 msgid "Milling Type:" msgstr "Fräsart:" -#: flatcamGUI/FlatCAMGUI.py:4027 flatcamGUI/ObjectUI.py:297 +#: flatcamGUI/FlatCAMGUI.py:4082 flatcamGUI/ObjectUI.py:297 msgid "" "Milling type:\n" "- climb / best for precision milling and to reduce tool usage\n" @@ -6552,19 +6683,19 @@ msgstr "" "Werkzeugverbrauchs\n" "- konventionell / nützlich, wenn kein Spielausgleich vorliegt" -#: flatcamGUI/FlatCAMGUI.py:4037 +#: flatcamGUI/FlatCAMGUI.py:4092 msgid "Combine Passes" msgstr "Kombinieren Sie Pässe" -#: flatcamGUI/FlatCAMGUI.py:4039 flatcamGUI/ObjectUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:4094 flatcamGUI/ObjectUI.py:309 msgid "Combine all passes into one object" msgstr "Kombinieren Sie alle Durchgänge in einem Objekt" -#: flatcamGUI/FlatCAMGUI.py:4044 +#: flatcamGUI/FlatCAMGUI.py:4099 msgid "Clear non-copper:" msgstr " Nicht-Kupfer löschen: " -#: flatcamGUI/FlatCAMGUI.py:4046 flatcamGUI/FlatCAMGUI.py:5368 +#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/FlatCAMGUI.py:5614 #: flatcamGUI/ObjectUI.py:386 msgid "" "Create a Geometry object with\n" @@ -6573,12 +6704,12 @@ msgstr "" "Erstellen Sie ein Geometrieobjekt mit\n" "Werkzeugwege, um alle Nicht-Kupfer-Bereiche zu schneiden." -#: flatcamGUI/FlatCAMGUI.py:4055 flatcamGUI/FlatCAMGUI.py:4081 +#: flatcamGUI/FlatCAMGUI.py:4110 flatcamGUI/FlatCAMGUI.py:4136 #: flatcamGUI/ObjectUI.py:430 flatcamGUI/ObjectUI.py:464 msgid "Boundary Margin:" msgstr "Grenzmarge:" -#: flatcamGUI/FlatCAMGUI.py:4057 flatcamGUI/ObjectUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:4112 flatcamGUI/ObjectUI.py:432 msgid "" "Specify the edge of the PCB\n" "by drawing a box around all\n" @@ -6590,11 +6721,11 @@ msgstr "" "Objekte mit diesem Minimum\n" "Entfernung." -#: flatcamGUI/FlatCAMGUI.py:4067 flatcamGUI/FlatCAMGUI.py:4090 +#: flatcamGUI/FlatCAMGUI.py:4122 flatcamGUI/FlatCAMGUI.py:4145 msgid "Rounded corners" msgstr "Abgerundete Ecken" -#: flatcamGUI/FlatCAMGUI.py:4069 +#: flatcamGUI/FlatCAMGUI.py:4124 msgid "" "Creates a Geometry objects with polygons\n" "covering the copper-free areas of the PCB." @@ -6602,11 +6733,11 @@ msgstr "" "Erzeugt ein Geometrieobjekt mit Polygonen\n" "bedeckt die kupferfreien Bereiche der Leiterplatte." -#: flatcamGUI/FlatCAMGUI.py:4075 flatcamGUI/ObjectUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:4130 flatcamGUI/ObjectUI.py:454 msgid "Bounding Box:" msgstr " Begrenzungsbox: " -#: flatcamGUI/FlatCAMGUI.py:4083 flatcamGUI/ObjectUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:4138 flatcamGUI/ObjectUI.py:466 msgid "" "Distance of the edges of the box\n" "to the nearest polygon." @@ -6614,7 +6745,7 @@ msgstr "" "Abstand der Kanten der Box\n" "zum nächsten Polygon." -#: flatcamGUI/FlatCAMGUI.py:4092 flatcamGUI/ObjectUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:4147 flatcamGUI/ObjectUI.py:476 msgid "" "If the bounding box is \n" "to have rounded corners\n" @@ -6626,15 +6757,15 @@ msgstr "" "ihr Radius ist gleich\n" "der Abstand." -#: flatcamGUI/FlatCAMGUI.py:4106 +#: flatcamGUI/FlatCAMGUI.py:4161 msgid "Gerber Adv. Options" msgstr "Erweiterte Optionen von Gerber" -#: flatcamGUI/FlatCAMGUI.py:4110 +#: flatcamGUI/FlatCAMGUI.py:4165 msgid "Advanced Param.:" msgstr "Erweiterte Parameter:" -#: flatcamGUI/FlatCAMGUI.py:4112 +#: flatcamGUI/FlatCAMGUI.py:4167 msgid "" "A list of Gerber advanced parameters.\n" "Those parameters are available only for\n" @@ -6644,11 +6775,11 @@ msgstr "" "Diese Parameter sind nur für verfügbar\n" "Fortgeschrittene Anwendungsebene." -#: flatcamGUI/FlatCAMGUI.py:4122 flatcamGUI/ObjectUI.py:314 +#: flatcamGUI/FlatCAMGUI.py:4177 flatcamGUI/ObjectUI.py:314 msgid "\"Follow\"" msgstr "\"Folgen\"" -#: flatcamGUI/FlatCAMGUI.py:4124 flatcamGUI/ObjectUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:4179 flatcamGUI/ObjectUI.py:316 msgid "" "Generate a 'Follow' geometry.\n" "This means that it will cut through\n" @@ -6658,11 +6789,11 @@ msgstr "" "Dies bedeutet, dass es durchschneiden wird\n" "die Mitte der Spur" -#: flatcamGUI/FlatCAMGUI.py:4132 +#: flatcamGUI/FlatCAMGUI.py:4187 msgid "Table Show/Hide" msgstr "Tabelle anzeigen / ausblenden" -#: flatcamGUI/FlatCAMGUI.py:4134 +#: flatcamGUI/FlatCAMGUI.py:4189 msgid "" "Toggle the display of the Gerber Apertures Table.\n" "Also, on hide, it will delete all mark shapes\n" @@ -6672,43 +6803,115 @@ msgstr "" "Beim Ausblenden werden auch alle Markierungsformen gelöscht\n" "das sind auf leinwand gezeichnet." -#: flatcamGUI/FlatCAMGUI.py:4142 -msgid "Ap. Scale Factor:" -msgstr "Öffnungsmaßstab:" +#: flatcamGUI/FlatCAMGUI.py:4228 +msgid "Gerber Export" +msgstr "Gerber Export" -#: flatcamGUI/FlatCAMGUI.py:4144 +#: flatcamGUI/FlatCAMGUI.py:4231 flatcamGUI/FlatCAMGUI.py:4902 +msgid "Export Options:" +msgstr "Exportoptionen:" + +#: flatcamGUI/FlatCAMGUI.py:4233 msgid "" -"Change the size of the selected apertures.\n" -"Factor by which to multiply\n" -"geometric features of this object." +"The parameters set here are used in the file exported\n" +"when using the File -> Export -> Export Gerber menu entry." msgstr "" -"Ändern Sie die Größe der ausgewählten Blenden.\n" -"Faktor, mit dem sich multiplizieren soll\n" -"geometrische Merkmale dieses Objekts." +"Die hier eingestellten Parameter werden in der exportierten Datei verwendet\n" +"bei Verwendung des Menüeintrags Datei -> Exportieren -> Gerber exportieren." -#: flatcamGUI/FlatCAMGUI.py:4154 -msgid "Ap. Buffer Factor:" -msgstr "Blendenpufferfaktor:" +#: flatcamGUI/FlatCAMGUI.py:4242 flatcamGUI/FlatCAMGUI.py:4913 +msgid "Units:" +msgstr "Einheiten:" -#: flatcamGUI/FlatCAMGUI.py:4156 +#: flatcamGUI/FlatCAMGUI.py:4244 flatcamGUI/FlatCAMGUI.py:4250 +msgid "The units used in the Gerber file." +msgstr "Die in der Gerber-Datei verwendeten Einheiten." + +#: flatcamGUI/FlatCAMGUI.py:4256 flatcamGUI/FlatCAMGUI.py:4927 +msgid "Int/Decimals:" +msgstr "Ganzzahl / Dezimalzahl:" + +#: flatcamGUI/FlatCAMGUI.py:4258 msgid "" -"Change the size of the selected apertures.\n" -"Factor by which to expand/shrink\n" -"geometric features of this object." +"The number of digits in the whole part of the number\n" +"and in the fractional part of the number." msgstr "" -"Ändern Sie die Größe der ausgewählten Blenden.\n" -"Faktor, um den / das erweitert / verkleinert werden soll\n" -"geometrische Merkmale dieses Objekts." +"Die Anzahl der Ziffern im gesamten Teil der Nummer\n" +"und im Bruchteil der Zahl." -#: flatcamGUI/FlatCAMGUI.py:4174 +#: flatcamGUI/FlatCAMGUI.py:4269 +msgid "" +"This numbers signify the number of digits in\n" +"the whole part of Gerber coordinates." +msgstr "" +"Diese Zahlen geben die Anzahl der Ziffern in an\n" +"der ganze Teil von Gerber koordiniert." + +#: flatcamGUI/FlatCAMGUI.py:4283 +msgid "" +"This numbers signify the number of digits in\n" +"the decimal part of Gerber coordinates." +msgstr "" +"Diese Zahlen geben die Anzahl der Ziffern in an\n" +"Der Dezimalteil der Gerber-Koordinaten." + +#: flatcamGUI/FlatCAMGUI.py:4292 flatcamGUI/FlatCAMGUI.py:4988 +msgid "Zeros:" +msgstr "Nullen:" + +#: flatcamGUI/FlatCAMGUI.py:4295 flatcamGUI/FlatCAMGUI.py:4305 +msgid "" +"This sets the type of Gerber zeros.\n" +"If LZ then Leading Zeros are removed and\n" +"Trailing Zeros are kept.\n" +"If TZ is checked then Trailing Zeros are removed\n" +"and Leading Zeros are kept." +msgstr "" +"Dies legt den Typ der Gerber-Nullen fest.\n" +"Wenn LZ, werden Leading Zeros und entfernt\n" +"Nachgestellte Nullen werden beibehalten.\n" +"Wenn TZ aktiviert ist, werden nachfolgende Nullen entfernt\n" +"und führende Nullen werden beibehalten." + +#: flatcamGUI/FlatCAMGUI.py:4325 flatcamGUI/FlatCAMGUI.py:5368 +#: flatcamGUI/FlatCAMGUI.py:5612 flatcamGUI/FlatCAMGUI.py:5713 +#: flatcamGUI/FlatCAMGUI.py:5792 flatcamGUI/FlatCAMGUI.py:5851 +#: flatcamGUI/FlatCAMGUI.py:5954 flatcamGUI/FlatCAMGUI.py:6015 +#: flatcamGUI/FlatCAMGUI.py:6214 flatcamGUI/FlatCAMGUI.py:6341 +msgid "Parameters:" +msgstr "Parameter:" + +#: flatcamGUI/FlatCAMGUI.py:4327 +msgid "A list of Gerber Editor parameters." +msgstr "Eine Liste der Gerber-Editor-Parameter." + +#: flatcamGUI/FlatCAMGUI.py:4335 flatcamGUI/FlatCAMGUI.py:5378 +msgid "Selection limit:" +msgstr "Auswahllimit:" + +#: flatcamGUI/FlatCAMGUI.py:4337 +msgid "" +"Set the number of selected Gerber 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 Gerber-Geometrie 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:4357 msgid "Excellon General" msgstr "Excellon Allgemeines" -#: flatcamGUI/FlatCAMGUI.py:4196 +#: flatcamGUI/FlatCAMGUI.py:4379 msgid "Excellon Format:" msgstr "Excellon-Format:" -#: flatcamGUI/FlatCAMGUI.py:4198 +#: flatcamGUI/FlatCAMGUI.py:4381 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -6750,16 +6953,16 @@ msgstr "" "Sprint-Layout 2: 4 ZOLL LZ\n" "KiCAD 3: 5 ZOLL TZ" -#: flatcamGUI/FlatCAMGUI.py:4223 +#: flatcamGUI/FlatCAMGUI.py:4406 msgid "INCH:" msgstr "ZOLL:" -#: flatcamGUI/FlatCAMGUI.py:4226 +#: flatcamGUI/FlatCAMGUI.py:4409 msgid "Default values for INCH are 2:4" msgstr "Die Standardwerte für ZOLL sind 2: 4" -#: flatcamGUI/FlatCAMGUI.py:4234 flatcamGUI/FlatCAMGUI.py:4267 -#: flatcamGUI/FlatCAMGUI.py:4744 +#: flatcamGUI/FlatCAMGUI.py:4417 flatcamGUI/FlatCAMGUI.py:4450 +#: flatcamGUI/FlatCAMGUI.py:4942 msgid "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." @@ -6767,8 +6970,8 @@ msgstr "" "Diese Zahlen geben die Anzahl der Ziffern in an\n" "der gesamte Teil der Excellon-Koordinaten." -#: flatcamGUI/FlatCAMGUI.py:4248 flatcamGUI/FlatCAMGUI.py:4281 -#: flatcamGUI/FlatCAMGUI.py:4758 +#: flatcamGUI/FlatCAMGUI.py:4431 flatcamGUI/FlatCAMGUI.py:4464 +#: flatcamGUI/FlatCAMGUI.py:4956 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." @@ -6776,19 +6979,19 @@ msgstr "" "Diese Zahlen geben die Anzahl der Ziffern in an\n" "der Dezimalteil der Excellon-Koordinaten." -#: flatcamGUI/FlatCAMGUI.py:4256 +#: flatcamGUI/FlatCAMGUI.py:4439 msgid "METRIC:" msgstr "METRISCH:" -#: flatcamGUI/FlatCAMGUI.py:4259 +#: flatcamGUI/FlatCAMGUI.py:4442 msgid "Default values for METRIC are 3:3" msgstr "Die Standardwerte für METRISCH sind 3: 3" -#: flatcamGUI/FlatCAMGUI.py:4290 +#: flatcamGUI/FlatCAMGUI.py:4473 msgid "Default Zeros:" msgstr "Standard Nullen:" -#: flatcamGUI/FlatCAMGUI.py:4293 flatcamGUI/FlatCAMGUI.py:4793 +#: flatcamGUI/FlatCAMGUI.py:4476 flatcamGUI/FlatCAMGUI.py:4991 msgid "" "This sets the type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -6802,7 +7005,7 @@ msgstr "" "Wenn TZ aktiviert ist, werden nachfolgende Nullen beibehalten\n" "und führende Nullen werden entfernt." -#: flatcamGUI/FlatCAMGUI.py:4304 +#: flatcamGUI/FlatCAMGUI.py:4487 msgid "" "This sets the default type of Excellon zeros.\n" "If it is not detected in the parsed file the value here\n" @@ -6818,11 +7021,11 @@ msgstr "" "Wenn TZ aktiviert ist, werden nachfolgende Nullen beibehalten\n" "und führende Nullen werden entfernt." -#: flatcamGUI/FlatCAMGUI.py:4318 +#: flatcamGUI/FlatCAMGUI.py:4501 msgid "Default Units:" msgstr "Standard einheiten:" -#: flatcamGUI/FlatCAMGUI.py:4321 +#: flatcamGUI/FlatCAMGUI.py:4504 msgid "" "This sets the default units of Excellon files.\n" "If it is not detected in the parsed file the value here\n" @@ -6834,7 +7037,7 @@ msgstr "" "wird verwendet. Einige Excellon-Dateien haben keinen Header\n" "Daher wird dieser Parameter verwendet." -#: flatcamGUI/FlatCAMGUI.py:4332 +#: flatcamGUI/FlatCAMGUI.py:4515 msgid "" "This sets the units of Excellon files.\n" "Some Excellon files don't have an header\n" @@ -6844,15 +7047,15 @@ msgstr "" "Einige Excellon-Dateien haben keinen Header\n" "Daher wird dieser Parameter verwendet." -#: flatcamGUI/FlatCAMGUI.py:4348 +#: flatcamGUI/FlatCAMGUI.py:4531 msgid "Excellon Optimization:" msgstr "Optimierung der Excellons:" -#: flatcamGUI/FlatCAMGUI.py:4355 +#: flatcamGUI/FlatCAMGUI.py:4538 msgid "Algorithm: " msgstr "Algorithmus:" -#: flatcamGUI/FlatCAMGUI.py:4358 flatcamGUI/FlatCAMGUI.py:4371 +#: flatcamGUI/FlatCAMGUI.py:4541 flatcamGUI/FlatCAMGUI.py:4554 msgid "" "This sets the optimization type for the Excellon drill path.\n" "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" @@ -6876,11 +7079,11 @@ msgstr "" "Wenn DEAKTIVIERT, arbeitet FlatCAM im 32-Bit-Modus und verwendet es\n" "Traveling Salesman-Algorithmus zur Pfadoptimierung." -#: flatcamGUI/FlatCAMGUI.py:4383 +#: flatcamGUI/FlatCAMGUI.py:4566 msgid "Optimization Time: " msgstr "Optimierungszeit:" -#: flatcamGUI/FlatCAMGUI.py:4386 +#: flatcamGUI/FlatCAMGUI.py:4569 msgid "" "When OR-Tools Metaheuristic (MH) is enabled there is a\n" "maximum threshold for how much time is spent doing the\n" @@ -6892,15 +7095,15 @@ msgstr "" "Pfadoptimierung. Diese maximale Dauer wird hier eingestellt.\n" "In Sekunden." -#: flatcamGUI/FlatCAMGUI.py:4427 +#: flatcamGUI/FlatCAMGUI.py:4611 msgid "Excellon Options" msgstr "Excellon-Optionen" -#: flatcamGUI/FlatCAMGUI.py:4430 flatcamGUI/ObjectUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:4614 flatcamGUI/ObjectUI.py:584 msgid "Create CNC Job" msgstr "CNC-Job erstellen" -#: flatcamGUI/FlatCAMGUI.py:4432 +#: flatcamGUI/FlatCAMGUI.py:4616 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object." @@ -6908,13 +7111,13 @@ msgstr "" "Parameter, die zum Erstellen eines CNC-Auftragsobjekts verwendet werden\n" "für dieses Bohrobjekt." -#: flatcamGUI/FlatCAMGUI.py:4440 flatcamGUI/FlatCAMGUI.py:4896 -#: flatcamGUI/FlatCAMGUI.py:5904 flatcamGUI/ObjectUI.py:595 -#: flatcamGUI/ObjectUI.py:1059 flatcamTools/ToolCalculators.py:108 +#: flatcamGUI/FlatCAMGUI.py:4624 flatcamGUI/FlatCAMGUI.py:5094 +#: flatcamGUI/FlatCAMGUI.py:6150 flatcamGUI/ObjectUI.py:595 +#: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolCalculators.py:108 msgid "Cut Z:" msgstr "Schnitt Z:" -#: flatcamGUI/FlatCAMGUI.py:4442 flatcamGUI/ObjectUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:4626 flatcamGUI/ObjectUI.py:597 msgid "" "Drill depth (negative)\n" "below the copper surface." @@ -6922,12 +7125,12 @@ msgstr "" "Bohrtiefe (negativ)\n" "unter der Kupferoberfläche." -#: flatcamGUI/FlatCAMGUI.py:4449 flatcamGUI/FlatCAMGUI.py:4929 -#: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1095 +#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/FlatCAMGUI.py:5127 +#: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1098 msgid "Travel Z:" msgstr "Reise Z:" -#: flatcamGUI/FlatCAMGUI.py:4451 flatcamGUI/ObjectUI.py:607 +#: flatcamGUI/FlatCAMGUI.py:4635 flatcamGUI/ObjectUI.py:607 msgid "" "Tool height when travelling\n" "across the XY plane." @@ -6935,11 +7138,11 @@ msgstr "" "Werkzeughöhe auf Reisen\n" "über die XY-Ebene." -#: flatcamGUI/FlatCAMGUI.py:4459 flatcamGUI/FlatCAMGUI.py:4939 +#: flatcamGUI/FlatCAMGUI.py:4643 flatcamGUI/FlatCAMGUI.py:5137 msgid "Tool change:" msgstr "Werkzeugwechsel:" -#: flatcamGUI/FlatCAMGUI.py:4461 flatcamGUI/FlatCAMGUI.py:4941 +#: flatcamGUI/FlatCAMGUI.py:4645 flatcamGUI/FlatCAMGUI.py:5139 #: flatcamGUI/ObjectUI.py:617 msgid "" "Include tool-change sequence\n" @@ -6948,19 +7151,19 @@ msgstr "" "Werkzeugwechselfolge einbeziehen\n" "im G-Code (Pause für Werkzeugwechsel)." -#: flatcamGUI/FlatCAMGUI.py:4468 flatcamGUI/FlatCAMGUI.py:4949 +#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5147 msgid "Toolchange Z:" msgstr "Werkzeugwechsel Z:" -#: flatcamGUI/FlatCAMGUI.py:4470 flatcamGUI/FlatCAMGUI.py:4951 +#: flatcamGUI/FlatCAMGUI.py:4654 flatcamGUI/FlatCAMGUI.py:5149 msgid "Toolchange Z position." msgstr "Toolchange Z position." -#: flatcamGUI/FlatCAMGUI.py:4476 +#: flatcamGUI/FlatCAMGUI.py:4660 msgid "Feedrate:" msgstr "Vorschubgeschwindigkeit:" -#: flatcamGUI/FlatCAMGUI.py:4478 +#: flatcamGUI/FlatCAMGUI.py:4662 msgid "" "Tool speed while drilling\n" "(in units per minute)." @@ -6968,12 +7171,12 @@ msgstr "" "Werkzeuggeschwindigkeit beim Bohren\n" "(in Einheiten pro Minute)." -#: flatcamGUI/FlatCAMGUI.py:4486 +#: flatcamGUI/FlatCAMGUI.py:4670 msgid "Spindle Speed:" msgstr "Spulengeschwindigkeit:" -#: flatcamGUI/FlatCAMGUI.py:4488 flatcamGUI/FlatCAMGUI.py:4981 -#: flatcamGUI/ObjectUI.py:681 +#: flatcamGUI/FlatCAMGUI.py:4672 flatcamGUI/FlatCAMGUI.py:5179 +#: flatcamGUI/ObjectUI.py:684 msgid "" "Speed of the spindle\n" "in RPM (optional)" @@ -6981,13 +7184,29 @@ msgstr "" "Geschwindigkeit der Spindel\n" "in RPM (optional)" -#: flatcamGUI/FlatCAMGUI.py:4496 flatcamGUI/FlatCAMGUI.py:4989 -#: flatcamGUI/ObjectUI.py:689 flatcamGUI/ObjectUI.py:1218 +#: flatcamGUI/FlatCAMGUI.py:4680 flatcamGUI/FlatCAMGUI.py:5187 +msgid "Spindle dir.:" +msgstr "Spindelrichtung:" + +#: flatcamGUI/FlatCAMGUI.py:4682 flatcamGUI/FlatCAMGUI.py:5189 +msgid "" +"This sets the direction that the spindle is rotating.\n" +"It can be either:\n" +"- CW = clockwise or\n" +"- CCW = counter clockwise" +msgstr "" +"Hiermit wird die Drehrichtung der Spindel eingestellt.\n" +"Es kann entweder sein:\n" +"- CW = im Uhrzeigersinn oder\n" +"- CCW = gegen den Uhrzeigersinn" + +#: flatcamGUI/FlatCAMGUI.py:4694 flatcamGUI/FlatCAMGUI.py:5201 +#: flatcamGUI/ObjectUI.py:692 flatcamGUI/ObjectUI.py:1224 msgid "Dwell:" msgstr "Wohnen:" -#: flatcamGUI/FlatCAMGUI.py:4498 flatcamGUI/FlatCAMGUI.py:4991 -#: flatcamGUI/ObjectUI.py:691 flatcamGUI/ObjectUI.py:1221 +#: flatcamGUI/FlatCAMGUI.py:4696 flatcamGUI/FlatCAMGUI.py:5203 +#: flatcamGUI/ObjectUI.py:694 flatcamGUI/ObjectUI.py:1227 msgid "" "Pause to allow the spindle to reach its\n" "speed before cutting." @@ -6995,21 +7214,21 @@ msgstr "" "Pause, damit die Spindel ihre erreichen kann\n" "Geschwindigkeit vor dem Schneiden." -#: flatcamGUI/FlatCAMGUI.py:4501 flatcamGUI/FlatCAMGUI.py:4994 +#: flatcamGUI/FlatCAMGUI.py:4699 flatcamGUI/FlatCAMGUI.py:5206 msgid "Duration:" msgstr "Dauer:" -#: flatcamGUI/FlatCAMGUI.py:4503 flatcamGUI/FlatCAMGUI.py:4996 -#: flatcamGUI/ObjectUI.py:696 flatcamGUI/ObjectUI.py:1228 +#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 +#: 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:4515 flatcamGUI/FlatCAMGUI.py:5006 -#: flatcamGUI/ObjectUI.py:704 +#: flatcamGUI/FlatCAMGUI.py:4713 flatcamGUI/FlatCAMGUI.py:5218 +#: flatcamGUI/ObjectUI.py:707 msgid "Postprocessor:" msgstr "Postprozessor:" -#: flatcamGUI/FlatCAMGUI.py:4517 +#: flatcamGUI/FlatCAMGUI.py:4715 msgid "" "The postprocessor file that dictates\n" "gcode output." @@ -7017,11 +7236,11 @@ msgstr "" "Die Postprozessor-Datei, die diktiert\n" "gcode ausgabe." -#: flatcamGUI/FlatCAMGUI.py:4527 +#: flatcamGUI/FlatCAMGUI.py:4725 msgid "Gcode: " msgstr "Gcode:" -#: flatcamGUI/FlatCAMGUI.py:4529 +#: flatcamGUI/FlatCAMGUI.py:4727 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -7034,23 +7253,23 @@ msgstr "" "angezeigt\n" "in Bohrer umgewandelt." -#: flatcamGUI/FlatCAMGUI.py:4545 flatcamGUI/ObjectUI.py:769 +#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:772 msgid "Mill Holes" msgstr " Löcher bohren " -#: flatcamGUI/FlatCAMGUI.py:4547 flatcamGUI/ObjectUI.py:771 +#: 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:4553 +#: flatcamGUI/FlatCAMGUI.py:4751 msgid "Drill Tool dia:" msgstr "Bohrwerkzeug Durchmesser:" -#: flatcamGUI/FlatCAMGUI.py:4560 +#: flatcamGUI/FlatCAMGUI.py:4758 msgid "Slot Tool dia:" msgstr "Schlitzwerkzeug Durchmesser:" -#: flatcamGUI/FlatCAMGUI.py:4562 +#: flatcamGUI/FlatCAMGUI.py:4760 msgid "" "Diameter of the cutting tool\n" "when milling slots." @@ -7058,19 +7277,19 @@ msgstr "" "Durchmesser des Schneidewerkzeugs\n" "beim Fräsen von Schlitzen." -#: flatcamGUI/FlatCAMGUI.py:4574 +#: flatcamGUI/FlatCAMGUI.py:4772 msgid "Defaults" msgstr "Standardwerte" -#: flatcamGUI/FlatCAMGUI.py:4587 +#: flatcamGUI/FlatCAMGUI.py:4785 msgid "Excellon Adv. Options" msgstr "Excellon erweiterte Optionen" -#: flatcamGUI/FlatCAMGUI.py:4593 flatcamGUI/FlatCAMGUI.py:5029 +#: flatcamGUI/FlatCAMGUI.py:4791 flatcamGUI/FlatCAMGUI.py:5241 msgid "Advanced Options:" msgstr "Erweiterte Optionen:" -#: flatcamGUI/FlatCAMGUI.py:4595 +#: 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." @@ -7079,11 +7298,11 @@ msgstr "" "für dieses Drill-Objekt, das angezeigt wird, wenn die App-Ebene Erweitert " "ist." -#: flatcamGUI/FlatCAMGUI.py:4603 +#: flatcamGUI/FlatCAMGUI.py:4801 msgid "Offset Z:" msgstr "Versatz Z:" -#: flatcamGUI/FlatCAMGUI.py:4605 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" @@ -7094,20 +7313,20 @@ msgstr "" "erzeugen.\n" "Der Wert hier kann den Parameter Cut Z ausgleichen." -#: flatcamGUI/FlatCAMGUI.py:4612 flatcamGUI/FlatCAMGUI.py:5040 +#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/FlatCAMGUI.py:5252 msgid "Toolchange X,Y:" msgstr "Werkzeugwechsel X, Y:" -#: flatcamGUI/FlatCAMGUI.py:4614 flatcamGUI/FlatCAMGUI.py:5042 +#: flatcamGUI/FlatCAMGUI.py:4812 flatcamGUI/FlatCAMGUI.py:5254 msgid "Toolchange X,Y position." msgstr "Werkzeugwechsel X, Y Position." -#: flatcamGUI/FlatCAMGUI.py:4620 flatcamGUI/FlatCAMGUI.py:5049 +#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5261 #: flatcamGUI/ObjectUI.py:634 msgid "Start move Z:" msgstr "Startbewegung Z:" -#: flatcamGUI/FlatCAMGUI.py:4622 +#: flatcamGUI/FlatCAMGUI.py:4820 msgid "" "Height of the tool just after start.\n" "Delete the value if you don't need this feature." @@ -7115,12 +7334,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:4629 flatcamGUI/FlatCAMGUI.py:5059 -#: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1141 +#: flatcamGUI/FlatCAMGUI.py:4827 flatcamGUI/FlatCAMGUI.py:5271 +#: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1144 msgid "End move Z:" msgstr "Bewegung beenden Z:" -#: flatcamGUI/FlatCAMGUI.py:4631 flatcamGUI/FlatCAMGUI.py:5061 +#: flatcamGUI/FlatCAMGUI.py:4829 flatcamGUI/FlatCAMGUI.py:5273 msgid "" "Height of the tool after\n" "the last move at the end of the job." @@ -7128,12 +7347,12 @@ msgstr "" "Höhe des Werkzeugs nach\n" "die letzte Bewegung am Ende des Jobs." -#: flatcamGUI/FlatCAMGUI.py:4638 flatcamGUI/FlatCAMGUI.py:5069 +#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5281 #: flatcamGUI/ObjectUI.py:665 msgid "Feedrate Rapids:" msgstr "Vorschubgeschwindigkeit:" -#: flatcamGUI/FlatCAMGUI.py:4640 flatcamGUI/ObjectUI.py:667 +#: flatcamGUI/FlatCAMGUI.py:4838 flatcamGUI/ObjectUI.py:667 msgid "" "Tool speed while drilling\n" "(in units per minute).\n" @@ -7147,13 +7366,13 @@ msgstr "" "Es ist nur für Marlin nützlich,\n" "für andere Fälle ignorieren." -#: flatcamGUI/FlatCAMGUI.py:4651 flatcamGUI/FlatCAMGUI.py:5093 -#: flatcamGUI/ObjectUI.py:715 flatcamGUI/ObjectUI.py:1250 +#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5305 +#: flatcamGUI/ObjectUI.py:718 flatcamGUI/ObjectUI.py:1256 msgid "Probe Z depth:" msgstr "Sonde Z Tiefe:" -#: flatcamGUI/FlatCAMGUI.py:4653 flatcamGUI/FlatCAMGUI.py:5095 -#: flatcamGUI/ObjectUI.py:717 flatcamGUI/ObjectUI.py:1253 +#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5307 +#: 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." @@ -7161,21 +7380,21 @@ msgstr "" "Die maximale Tiefe, in der die Sonde zulässig ist\n" "zu untersuchen. Negativer Wert in aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:4661 flatcamGUI/FlatCAMGUI.py:5103 -#: flatcamGUI/ObjectUI.py:727 flatcamGUI/ObjectUI.py:1264 +#: flatcamGUI/FlatCAMGUI.py:4859 flatcamGUI/FlatCAMGUI.py:5315 +#: flatcamGUI/ObjectUI.py:730 flatcamGUI/ObjectUI.py:1270 msgid "Feedrate Probe:" msgstr "Vorschubsonde:" -#: flatcamGUI/FlatCAMGUI.py:4663 flatcamGUI/FlatCAMGUI.py:5105 -#: flatcamGUI/ObjectUI.py:729 flatcamGUI/ObjectUI.py:1267 +#: flatcamGUI/FlatCAMGUI.py:4861 flatcamGUI/FlatCAMGUI.py:5317 +#: 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:4669 flatcamGUI/FlatCAMGUI.py:5112 +#: flatcamGUI/FlatCAMGUI.py:4867 flatcamGUI/FlatCAMGUI.py:5324 msgid "Fast Plunge:" msgstr "Schneller Sprung:" -#: flatcamGUI/FlatCAMGUI.py:4671 flatcamGUI/FlatCAMGUI.py:5114 +#: flatcamGUI/FlatCAMGUI.py:4869 flatcamGUI/FlatCAMGUI.py:5326 msgid "" "By checking this, the vertical move from\n" "Z_Toolchange to Z_move is done with G0,\n" @@ -7187,11 +7406,11 @@ msgstr "" "Das bedeutet die schnellste verfügbare Geschwindigkeit.\n" "WARNUNG: Die Verschiebung erfolgt bei Toolchange X, Y-Koordinaten." -#: flatcamGUI/FlatCAMGUI.py:4680 +#: flatcamGUI/FlatCAMGUI.py:4878 msgid "Fast Retract:" msgstr "Schneller Rückzug:" -#: flatcamGUI/FlatCAMGUI.py:4682 +#: flatcamGUI/FlatCAMGUI.py:4880 msgid "" "Exit hole strategy.\n" " - When uncheked, while exiting the drilled hole the drill bit\n" @@ -7207,15 +7426,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:4701 +#: flatcamGUI/FlatCAMGUI.py:4899 msgid "Excellon Export" msgstr "Excellon Export" -#: flatcamGUI/FlatCAMGUI.py:4704 -msgid "Export Options:" -msgstr "Exportoptionen:" - -#: flatcamGUI/FlatCAMGUI.py:4706 +#: 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." @@ -7224,19 +7439,11 @@ msgstr "" "bei Verwendung des Menüeintrags Datei -> Exportieren -> Exportieren von " "Excellon." -#: flatcamGUI/FlatCAMGUI.py:4715 -msgid "Units:" -msgstr "Einheiten:" - -#: flatcamGUI/FlatCAMGUI.py:4717 flatcamGUI/FlatCAMGUI.py:4723 +#: 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:4729 -msgid "Int/Decimals:" -msgstr "Ganzzahl / Dezimalzahl:" - -#: flatcamGUI/FlatCAMGUI.py:4731 +#: flatcamGUI/FlatCAMGUI.py:4929 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -7248,11 +7455,11 @@ msgstr "" "Hier legen wir das verwendete Format fest\n" "Koordinaten verwenden keine Periode." -#: flatcamGUI/FlatCAMGUI.py:4767 +#: flatcamGUI/FlatCAMGUI.py:4965 msgid "Format:" msgstr "Format:" -#: flatcamGUI/FlatCAMGUI.py:4769 flatcamGUI/FlatCAMGUI.py:4779 +#: 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" @@ -7269,11 +7476,7 @@ msgstr "" "Es muss auch angegeben werden, wenn LZ = führende Nullen beibehalten werden\n" "oder TZ = nachfolgende Nullen bleiben erhalten." -#: flatcamGUI/FlatCAMGUI.py:4790 -msgid "Zeros:" -msgstr "Nullen:" - -#: flatcamGUI/FlatCAMGUI.py:4803 +#: flatcamGUI/FlatCAMGUI.py:5001 msgid "" "This sets the default type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -7287,11 +7490,11 @@ msgstr "" "Wenn TZ aktiviert ist, werden nachfolgende Nullen beibehalten\n" "und führende Nullen werden entfernt." -#: flatcamGUI/FlatCAMGUI.py:4829 +#: flatcamGUI/FlatCAMGUI.py:5027 msgid "Geometry General" msgstr "Geometrie Allgemein" -#: flatcamGUI/FlatCAMGUI.py:4847 +#: flatcamGUI/FlatCAMGUI.py:5045 msgid "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." @@ -7299,15 +7502,15 @@ msgstr "" "Die Anzahl der Kreisschritte für die Geometrie\n" "Kreis- und Bogenformen lineare Annäherung." -#: flatcamGUI/FlatCAMGUI.py:4855 +#: flatcamGUI/FlatCAMGUI.py:5053 msgid "Tools" msgstr "Werkzeuge" -#: flatcamGUI/FlatCAMGUI.py:4862 +#: flatcamGUI/FlatCAMGUI.py:5060 msgid "Tool dia: " msgstr "Werkzeugdurchmesser:" -#: flatcamGUI/FlatCAMGUI.py:4864 +#: flatcamGUI/FlatCAMGUI.py:5062 msgid "" "The diameter of the cutting\n" "tool.." @@ -7315,15 +7518,15 @@ msgstr "" "Der Durchmesser des Schnitts\n" "Werkzeug.." -#: flatcamGUI/FlatCAMGUI.py:4879 +#: flatcamGUI/FlatCAMGUI.py:5077 msgid "Geometry Options" msgstr "Geometrieoptionen" -#: flatcamGUI/FlatCAMGUI.py:4884 +#: flatcamGUI/FlatCAMGUI.py:5082 msgid "Create CNC Job:" msgstr "CNC-Auftrag erstellen:" -#: flatcamGUI/FlatCAMGUI.py:4886 +#: flatcamGUI/FlatCAMGUI.py:5084 msgid "" "Create a CNC Job object\n" "tracing the contours of this\n" @@ -7333,7 +7536,7 @@ msgstr "" "die Konturen davon nachzeichnen\n" "Geometrieobjekt." -#: flatcamGUI/FlatCAMGUI.py:4898 flatcamGUI/ObjectUI.py:1062 +#: flatcamGUI/FlatCAMGUI.py:5096 flatcamGUI/ObjectUI.py:1065 msgid "" "Cutting depth (negative)\n" "below the copper surface." @@ -7341,19 +7544,19 @@ msgstr "" "Schnitttiefe (negativ)\n" "unter der Kupferoberfläche." -#: flatcamGUI/FlatCAMGUI.py:4906 +#: flatcamGUI/FlatCAMGUI.py:5104 msgid "Multidepth" msgstr "Mehrere tiefe" -#: flatcamGUI/FlatCAMGUI.py:4908 +#: flatcamGUI/FlatCAMGUI.py:5106 msgid "Multidepth usage: True or False." msgstr "Mehrere Tiefe-Nutzung: Richtig oder Falsch." -#: flatcamGUI/FlatCAMGUI.py:4913 +#: flatcamGUI/FlatCAMGUI.py:5111 msgid "Depth/Pass:" msgstr "Tiefe / Pass:" -#: flatcamGUI/FlatCAMGUI.py:4915 +#: flatcamGUI/FlatCAMGUI.py:5113 msgid "" "The depth to cut on each pass,\n" "when multidepth is enabled.\n" @@ -7367,7 +7570,7 @@ msgstr "" "es ist ein Bruch aus der Tiefe\n" "was einen negativen Wert hat." -#: flatcamGUI/FlatCAMGUI.py:4931 flatcamGUI/ObjectUI.py:1098 +#: flatcamGUI/FlatCAMGUI.py:5129 flatcamGUI/ObjectUI.py:1101 msgid "" "Height of the tool when\n" "moving without cutting." @@ -7375,11 +7578,11 @@ msgstr "" "Höhe des Werkzeugs, wenn\n" "bewegen ohne zu schneiden" -#: flatcamGUI/FlatCAMGUI.py:4958 flatcamGUI/ObjectUI.py:1153 +#: flatcamGUI/FlatCAMGUI.py:5156 flatcamGUI/ObjectUI.py:1156 msgid "Feed Rate X-Y:" msgstr "Vorschubrate X-Y:" -#: flatcamGUI/FlatCAMGUI.py:4960 flatcamGUI/ObjectUI.py:1156 +#: flatcamGUI/FlatCAMGUI.py:5158 flatcamGUI/ObjectUI.py:1159 msgid "" "Cutting speed in the XY\n" "plane in units per minute" @@ -7387,11 +7590,11 @@ msgstr "" "Schnittgeschwindigkeit im XY\n" "Flugzeug in Einheiten pro Minute" -#: flatcamGUI/FlatCAMGUI.py:4968 +#: flatcamGUI/FlatCAMGUI.py:5166 msgid "Feed Rate Z:" msgstr "Vorschubrate Z:" -#: flatcamGUI/FlatCAMGUI.py:4970 +#: flatcamGUI/FlatCAMGUI.py:5168 msgid "" "Cutting speed in the XY\n" "plane in units per minute.\n" @@ -7401,12 +7604,12 @@ msgstr "" "Flugzeug in Einheiten pro Minute.\n" "Es heißt auch Sturz." -#: flatcamGUI/FlatCAMGUI.py:4979 flatcamGUI/ObjectUI.py:679 -#: flatcamGUI/ObjectUI.py:1205 +#: flatcamGUI/FlatCAMGUI.py:5177 flatcamGUI/ObjectUI.py:682 +#: flatcamGUI/ObjectUI.py:1211 msgid "Spindle speed:" msgstr "Spulengeschwindigkeit:" -#: flatcamGUI/FlatCAMGUI.py:5008 +#: flatcamGUI/FlatCAMGUI.py:5220 msgid "" "The postprocessor file that dictates\n" "Machine Code output." @@ -7414,11 +7617,11 @@ msgstr "" "Die Postprozessor-Datei, die diktiert\n" "Maschinencode-Ausgabe." -#: flatcamGUI/FlatCAMGUI.py:5024 +#: flatcamGUI/FlatCAMGUI.py:5236 msgid "Geometry Adv. Options" msgstr "Geometrie Erw. Optionen" -#: flatcamGUI/FlatCAMGUI.py:5031 +#: flatcamGUI/FlatCAMGUI.py:5243 msgid "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." @@ -7426,7 +7629,7 @@ msgstr "" "Parameter zum Erstellen eines CNC-Auftragsobjekts\n" "Verfolgung der Konturen eines Geometrieobjekts." -#: flatcamGUI/FlatCAMGUI.py:5051 +#: flatcamGUI/FlatCAMGUI.py:5263 msgid "" "Height of the tool just after starting the work.\n" "Delete the value if you don't need this feature." @@ -7434,7 +7637,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:5071 +#: flatcamGUI/FlatCAMGUI.py:5283 msgid "" "Cutting speed in the XY plane\n" "(in units per minute).\n" @@ -7448,11 +7651,11 @@ msgstr "" "Es ist nur für Marlin nützlich,\n" "für andere Fälle ignorieren." -#: flatcamGUI/FlatCAMGUI.py:5083 +#: flatcamGUI/FlatCAMGUI.py:5295 msgid "Re-cut 1st pt." msgstr "1. Punkt erneut schneiden" -#: flatcamGUI/FlatCAMGUI.py:5085 flatcamGUI/ObjectUI.py:1196 +#: flatcamGUI/FlatCAMGUI.py:5297 flatcamGUI/ObjectUI.py:1202 msgid "" "In order to remove possible\n" "copper leftovers where first cut\n" @@ -7464,11 +7667,11 @@ msgstr "" "Beim letzten Schnitt treffen wir einen\n" "verlängerter Schnitt über dem ersten Schnittabschnitt." -#: flatcamGUI/FlatCAMGUI.py:5124 +#: flatcamGUI/FlatCAMGUI.py:5336 msgid "Seg. X size:" msgstr "Seg. X Größe:" -#: flatcamGUI/FlatCAMGUI.py:5126 +#: flatcamGUI/FlatCAMGUI.py:5338 msgid "" "The size of the trace segment on the X axis.\n" "Useful for auto-leveling.\n" @@ -7478,11 +7681,11 @@ msgstr "" "Nützlich für die automatische Nivellierung.\n" "Ein Wert von 0 bedeutet keine Segmentierung auf der X-Achse." -#: flatcamGUI/FlatCAMGUI.py:5135 +#: flatcamGUI/FlatCAMGUI.py:5347 msgid "Seg. Y size:" msgstr "Seg. Y Größe:" -#: flatcamGUI/FlatCAMGUI.py:5137 +#: flatcamGUI/FlatCAMGUI.py:5349 msgid "" "The size of the trace segment on the Y axis.\n" "Useful for auto-leveling.\n" @@ -7492,20 +7695,42 @@ msgstr "" "Nützlich für die automatische Nivellierung.\n" "Ein Wert von 0 bedeutet keine Segmentierung auf der Y-Achse." -#: flatcamGUI/FlatCAMGUI.py:5153 +#: flatcamGUI/FlatCAMGUI.py:5365 +msgid "Geometry Editor" +msgstr "Geo-Editor" + +#: flatcamGUI/FlatCAMGUI.py:5370 +msgid "A list of Geometry Editor parameters." +msgstr "Eine Liste der Geometry Editor-Parameter." + +#: flatcamGUI/FlatCAMGUI.py:5380 +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." +msgstr "" +"Legen Sie die Anzahl der ausgewählten Geometrien fest\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:5399 msgid "CNC Job General" msgstr "CNC-Job Allgemein" -#: flatcamGUI/FlatCAMGUI.py:5166 flatcamGUI/ObjectUI.py:544 -#: flatcamGUI/ObjectUI.py:874 flatcamGUI/ObjectUI.py:1428 +#: flatcamGUI/FlatCAMGUI.py:5412 flatcamGUI/ObjectUI.py:544 +#: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1434 msgid "Plot Object" msgstr "Plotobjekt" -#: flatcamGUI/FlatCAMGUI.py:5173 +#: flatcamGUI/FlatCAMGUI.py:5419 msgid "Plot kind:" msgstr "Darstellungsart:" -#: flatcamGUI/FlatCAMGUI.py:5175 flatcamGUI/ObjectUI.py:1350 +#: flatcamGUI/FlatCAMGUI.py:5421 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" @@ -7518,7 +7743,7 @@ 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:5194 +#: flatcamGUI/FlatCAMGUI.py:5440 msgid "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." @@ -7526,7 +7751,7 @@ msgstr "" "Die Anzahl der Kreisschritte für GCode\n" "Kreis- und Bogenformen lineare Annäherung." -#: flatcamGUI/FlatCAMGUI.py:5204 +#: flatcamGUI/FlatCAMGUI.py:5450 msgid "" "Diameter of the tool to be\n" "rendered in the plot." @@ -7534,11 +7759,11 @@ msgstr "" "Durchmesser des Werkzeugs sein\n" "in der Handlung gerendert." -#: flatcamGUI/FlatCAMGUI.py:5212 +#: flatcamGUI/FlatCAMGUI.py:5458 msgid "Coords dec.:" msgstr "Koordinate Dezimalzahlen:" -#: flatcamGUI/FlatCAMGUI.py:5214 +#: flatcamGUI/FlatCAMGUI.py:5460 msgid "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" @@ -7546,11 +7771,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:5222 +#: flatcamGUI/FlatCAMGUI.py:5468 msgid "Feedrate dec.:" msgstr "Vorschub-Nachkommastellen:" -#: flatcamGUI/FlatCAMGUI.py:5224 +#: flatcamGUI/FlatCAMGUI.py:5470 msgid "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" @@ -7558,16 +7783,16 @@ msgstr "" "Die Anzahl der Dezimalstellen, für die verwendet werden soll\n" "der Vorschubparameter im CNC-Code (GCODE usw.)" -#: flatcamGUI/FlatCAMGUI.py:5239 +#: flatcamGUI/FlatCAMGUI.py:5485 msgid "CNC Job Options" msgstr "CNC-Auftragsoptionen" -#: flatcamGUI/FlatCAMGUI.py:5242 flatcamGUI/FlatCAMGUI.py:5283 +#: flatcamGUI/FlatCAMGUI.py:5488 flatcamGUI/FlatCAMGUI.py:5529 msgid "Export G-Code:" msgstr "G-Code exportieren:" -#: flatcamGUI/FlatCAMGUI.py:5244 flatcamGUI/FlatCAMGUI.py:5285 -#: flatcamGUI/ObjectUI.py:1464 +#: flatcamGUI/FlatCAMGUI.py:5490 flatcamGUI/FlatCAMGUI.py:5531 +#: flatcamGUI/ObjectUI.py:1470 msgid "" "Export and save G-Code to\n" "make this object to a file." @@ -7575,11 +7800,11 @@ msgstr "" "Exportieren und speichern Sie den G-Code nach\n" "Machen Sie dieses Objekt in eine Datei." -#: flatcamGUI/FlatCAMGUI.py:5250 +#: flatcamGUI/FlatCAMGUI.py:5496 msgid "Prepend to G-Code:" msgstr "Voranstellen an G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5252 +#: flatcamGUI/FlatCAMGUI.py:5498 msgid "" "Type here any G-Code commands you would\n" "like to add at the beginning of the G-Code file." @@ -7587,11 +7812,11 @@ msgstr "" "Geben Sie hier alle G-Code-Befehle ein\n" "gerne am Anfang der G-Code-Datei hinzufügen." -#: flatcamGUI/FlatCAMGUI.py:5261 +#: flatcamGUI/FlatCAMGUI.py:5507 msgid "Append to G-Code:" msgstr "An G-Code anhängen:" -#: flatcamGUI/FlatCAMGUI.py:5263 flatcamGUI/ObjectUI.py:1486 +#: flatcamGUI/FlatCAMGUI.py:5509 flatcamGUI/ObjectUI.py:1492 msgid "" "Type here any G-Code commands you would\n" "like to append to the generated file.\n" @@ -7601,15 +7826,15 @@ msgstr "" "gerne an die generierte Datei anhängen.\n" "I.e .: M2 (Programmende)" -#: flatcamGUI/FlatCAMGUI.py:5280 +#: flatcamGUI/FlatCAMGUI.py:5526 msgid "CNC Job Adv. Options" msgstr "Erw. CNC-Joboptionen" -#: flatcamGUI/FlatCAMGUI.py:5291 flatcamGUI/ObjectUI.py:1504 +#: flatcamGUI/FlatCAMGUI.py:5537 flatcamGUI/ObjectUI.py:1510 msgid "Toolchange G-Code:" msgstr "Werkzeugwechsel G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5293 +#: flatcamGUI/FlatCAMGUI.py:5539 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -7621,11 +7846,11 @@ msgstr "" "Dies stellt einen benutzerdefinierten Werkzeugwechsel-GCode dar.\n" "oder ein Werkzeugwechsel-Makro." -#: flatcamGUI/FlatCAMGUI.py:5307 flatcamGUI/ObjectUI.py:1526 +#: flatcamGUI/FlatCAMGUI.py:5553 flatcamGUI/ObjectUI.py:1532 msgid "Use Toolchange Macro" msgstr "Benutze das Werkzeugwechselmakro" -#: flatcamGUI/FlatCAMGUI.py:5309 flatcamGUI/ObjectUI.py:1529 +#: flatcamGUI/FlatCAMGUI.py:5555 flatcamGUI/ObjectUI.py:1535 msgid "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." @@ -7633,7 +7858,7 @@ msgstr "" "Aktivieren Sie dieses Kontrollkästchen, wenn Sie verwenden möchten\n" "ein benutzerdefiniertes Werkzeug ändert GCode (Makro)." -#: flatcamGUI/FlatCAMGUI.py:5321 flatcamGUI/ObjectUI.py:1538 +#: flatcamGUI/FlatCAMGUI.py:5567 flatcamGUI/ObjectUI.py:1544 msgid "" "A list of the FlatCAM variables that can be used\n" "in the Toolchange event.\n" @@ -7643,80 +7868,73 @@ msgstr "" "im Werkzeugwechselereignis.\n" "Sie müssen mit dem \"%\" -Symbol umgeben sein" -#: flatcamGUI/FlatCAMGUI.py:5328 flatcamGUI/ObjectUI.py:1545 +#: flatcamGUI/FlatCAMGUI.py:5574 flatcamGUI/ObjectUI.py:1551 msgid "Parameters" msgstr "Parameters" -#: flatcamGUI/FlatCAMGUI.py:5331 flatcamGUI/ObjectUI.py:1548 +#: flatcamGUI/FlatCAMGUI.py:5577 flatcamGUI/ObjectUI.py:1554 msgid "FlatCAM CNC parameters" msgstr "FlatCAM CNC-Parameter" -#: flatcamGUI/FlatCAMGUI.py:5332 flatcamGUI/ObjectUI.py:1549 +#: flatcamGUI/FlatCAMGUI.py:5578 flatcamGUI/ObjectUI.py:1555 msgid "tool = tool number" msgstr "tool = Werkzeugnummer" -#: flatcamGUI/FlatCAMGUI.py:5333 flatcamGUI/ObjectUI.py:1550 +#: flatcamGUI/FlatCAMGUI.py:5579 flatcamGUI/ObjectUI.py:1556 msgid "tooldia = tool diameter" msgstr "tooldia = Werkzeugdurchmesser" -#: flatcamGUI/FlatCAMGUI.py:5334 flatcamGUI/ObjectUI.py:1551 +#: flatcamGUI/FlatCAMGUI.py:5580 flatcamGUI/ObjectUI.py:1557 msgid "t_drills = for Excellon, total number of drills" msgstr "t_drills = für Excellon die Gesamtzahl der Bohrer" -#: flatcamGUI/FlatCAMGUI.py:5335 flatcamGUI/ObjectUI.py:1552 +#: flatcamGUI/FlatCAMGUI.py:5581 flatcamGUI/ObjectUI.py:1558 msgid "x_toolchange = X coord for Toolchange" msgstr "x_toolchange = X-Koord für Werkzeugwechsel" -#: flatcamGUI/FlatCAMGUI.py:5336 flatcamGUI/ObjectUI.py:1553 +#: flatcamGUI/FlatCAMGUI.py:5582 flatcamGUI/ObjectUI.py:1559 msgid "y_toolchange = Y coord for Toolchange" msgstr "y_toolchange = Y-Koord für Werkzeugwechsel" -#: flatcamGUI/FlatCAMGUI.py:5337 flatcamGUI/ObjectUI.py:1554 +#: flatcamGUI/FlatCAMGUI.py:5583 flatcamGUI/ObjectUI.py:1560 msgid "z_toolchange = Z coord for Toolchange" msgstr "z_toolchange = Z-Koord für Werkzeugwechsel" -#: flatcamGUI/FlatCAMGUI.py:5338 +#: flatcamGUI/FlatCAMGUI.py:5584 msgid "z_cut = Z depth for the cut" msgstr "z_cut = Z Tiefe für den Schnitt" -#: flatcamGUI/FlatCAMGUI.py:5339 +#: flatcamGUI/FlatCAMGUI.py:5585 msgid "z_move = Z height for travel" msgstr "z_move = Z Höhe für die Reise" -#: flatcamGUI/FlatCAMGUI.py:5340 flatcamGUI/ObjectUI.py:1557 +#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1563 msgid "z_depthpercut = the step value for multidepth cut" msgstr "z_depthpercut =der Schrittwert für den mehrstufigen Schnitt" -#: flatcamGUI/FlatCAMGUI.py:5341 flatcamGUI/ObjectUI.py:1558 +#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1564 msgid "spindlesspeed = the value for the spindle speed" msgstr "spindlesspeed =der Wert für die Spindeldrehzahl" -#: flatcamGUI/FlatCAMGUI.py:5342 flatcamGUI/ObjectUI.py:1559 +#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1565 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:5363 +#: flatcamGUI/FlatCAMGUI.py:5609 msgid "NCC Tool Options" msgstr "NCC-Tooloptionen" -#: flatcamGUI/FlatCAMGUI.py:5366 flatcamGUI/FlatCAMGUI.py:5467 -#: flatcamGUI/FlatCAMGUI.py:5546 flatcamGUI/FlatCAMGUI.py:5605 -#: flatcamGUI/FlatCAMGUI.py:5708 flatcamGUI/FlatCAMGUI.py:5769 -#: flatcamGUI/FlatCAMGUI.py:5968 flatcamGUI/FlatCAMGUI.py:6095 -msgid "Parameters:" -msgstr "Parameter:" - -#: flatcamGUI/FlatCAMGUI.py:5376 flatcamGUI/FlatCAMGUI.py:6106 +#: flatcamGUI/FlatCAMGUI.py:5622 flatcamGUI/FlatCAMGUI.py:6352 msgid "Tools dia:" msgstr "Werkzeug durchmesser:" -#: flatcamGUI/FlatCAMGUI.py:5378 +#: flatcamGUI/FlatCAMGUI.py:5624 msgid "Diameters of the cutting tools, separated by ','" msgstr "Durchmesser der Schneidwerkzeuge, getrennt durch ','" -#: flatcamGUI/FlatCAMGUI.py:5386 flatcamTools/ToolNonCopperClear.py:167 +#: flatcamGUI/FlatCAMGUI.py:5632 flatcamTools/ToolNonCopperClear.py:167 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -7745,11 +7963,11 @@ msgstr "" "Höhere Werte = langsame Bearbeitung und langsame Ausführung auf der CNC\n" "wegen zu vieler Wege." -#: flatcamGUI/FlatCAMGUI.py:5402 flatcamTools/ToolNonCopperClear.py:183 +#: flatcamGUI/FlatCAMGUI.py:5648 flatcamTools/ToolNonCopperClear.py:183 msgid "Bounding box margin." msgstr "Begrenzungsrahmenrand." -#: flatcamGUI/FlatCAMGUI.py:5411 flatcamTools/ToolNonCopperClear.py:192 +#: flatcamGUI/FlatCAMGUI.py:5657 flatcamTools/ToolNonCopperClear.py:192 #: flatcamTools/ToolPaint.py:190 msgid "" "Algorithm for non-copper clearing:
Standard: Fixed step inwards." @@ -7760,12 +7978,12 @@ msgstr "" "Schritt nach innen. Seed-based : Ausgehend vom Saatgut.
" "Line-based: Parallele Linien." -#: flatcamGUI/FlatCAMGUI.py:5443 flatcamTools/ToolNonCopperClear.py:224 +#: flatcamGUI/FlatCAMGUI.py:5689 flatcamTools/ToolNonCopperClear.py:224 #: flatcamTools/ToolPaint.py:222 msgid "Rest M.:" msgstr "Rest M.:" -#: flatcamGUI/FlatCAMGUI.py:5445 +#: flatcamGUI/FlatCAMGUI.py:5691 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -7781,11 +7999,11 @@ msgstr "" "konnte nicht mit dem vorherigen Tool gelöscht werden.\n" "Wenn nicht aktiviert, verwenden Sie den Standardalgorithmus." -#: flatcamGUI/FlatCAMGUI.py:5464 +#: flatcamGUI/FlatCAMGUI.py:5710 msgid "Cutout Tool Options" msgstr "Ausschnittwerkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:5469 flatcamGUI/ObjectUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:5715 flatcamGUI/ObjectUI.py:402 msgid "" "Create toolpaths to cut around\n" "the PCB and separate it from\n" @@ -7795,7 +8013,7 @@ msgstr "" "die PCB und trennen Sie es von\n" "das ursprüngliche Brett." -#: flatcamGUI/FlatCAMGUI.py:5488 +#: flatcamGUI/FlatCAMGUI.py:5734 msgid "" "Distance from objects at which\n" "to draw the cutout." @@ -7803,11 +8021,11 @@ msgstr "" "Entfernung von Objekten bei denen\n" "den Ausschnitt zeichnen." -#: flatcamGUI/FlatCAMGUI.py:5495 flatcamTools/ToolCutOut.py:96 +#: flatcamGUI/FlatCAMGUI.py:5741 flatcamTools/ToolCutOut.py:96 msgid "Gap size:" msgstr "Spaltgröße:" -#: flatcamGUI/FlatCAMGUI.py:5497 +#: flatcamGUI/FlatCAMGUI.py:5743 msgid "" "Size of the gaps in the toolpath\n" "that will remain to hold the\n" @@ -7817,11 +8035,11 @@ msgstr "" "das wird bleiben, um das zu halten\n" "Board an Ort und Stelle." -#: flatcamGUI/FlatCAMGUI.py:5505 flatcamTools/ToolCutOut.py:133 +#: flatcamGUI/FlatCAMGUI.py:5751 flatcamTools/ToolCutOut.py:134 msgid "Gaps:" msgstr "Spalt:" -#: flatcamGUI/FlatCAMGUI.py:5507 +#: flatcamGUI/FlatCAMGUI.py:5753 msgid "" "Number of bridge gaps used for the cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -7843,19 +8061,19 @@ msgstr "" "- 2 tb \t- 2 * oben + 2 * unten\n" "- 8 \t- 2 * links + 2 * rechts + 2 * oben + 2 * unten" -#: flatcamGUI/FlatCAMGUI.py:5528 flatcamTools/ToolCutOut.py:115 +#: flatcamGUI/FlatCAMGUI.py:5774 flatcamTools/ToolCutOut.py:115 msgid "Convex Sh.:" msgstr "Konvexe Form .:" -#: flatcamGUI/FlatCAMGUI.py:5530 flatcamTools/ToolCutOut.py:117 +#: flatcamGUI/FlatCAMGUI.py:5776 msgid "Create a convex shape surrounding the entire PCB." msgstr "Erstellen Sie eine konvexe Form, die die gesamte Leiterplatte umgibt." -#: flatcamGUI/FlatCAMGUI.py:5543 +#: flatcamGUI/FlatCAMGUI.py:5789 msgid "2Sided Tool Options" msgstr "2Seitige Werkzeugoptionen" -#: flatcamGUI/FlatCAMGUI.py:5548 +#: flatcamGUI/FlatCAMGUI.py:5794 msgid "" "A tool to help in creating a double sided\n" "PCB using alignment holes." @@ -7863,28 +8081,28 @@ msgstr "" "Ein Werkzeug, das beim Erstellen eines doppelseitigen Dokuments hilft\n" "PCB mit Ausrichtungslöchern." -#: flatcamGUI/FlatCAMGUI.py:5558 flatcamTools/ToolDblSided.py:235 +#: flatcamGUI/FlatCAMGUI.py:5804 flatcamTools/ToolDblSided.py:235 msgid "Drill diam.:" msgstr "Bohrdurchmesser:" -#: flatcamGUI/FlatCAMGUI.py:5560 flatcamTools/ToolDblSided.py:226 +#: flatcamGUI/FlatCAMGUI.py:5806 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:5569 flatcamTools/ToolDblSided.py:120 +#: flatcamGUI/FlatCAMGUI.py:5815 flatcamTools/ToolDblSided.py:120 msgid "Mirror Axis:" msgstr "Spiegelachse:" -#: flatcamGUI/FlatCAMGUI.py:5571 flatcamTools/ToolDblSided.py:122 +#: flatcamGUI/FlatCAMGUI.py:5817 flatcamTools/ToolDblSided.py:122 msgid "Mirror vertically (X) or horizontally (Y)." msgstr "Vertikal spiegeln (X) oder horizontal (Y)." -#: flatcamGUI/FlatCAMGUI.py:5582 flatcamTools/ToolDblSided.py:133 +#: flatcamGUI/FlatCAMGUI.py:5828 flatcamTools/ToolDblSided.py:133 msgid "Axis Ref:" msgstr "Achsenreferenz:" -#: flatcamGUI/FlatCAMGUI.py:5584 +#: flatcamGUI/FlatCAMGUI.py:5830 msgid "" "The axis should pass through a point or cut\n" " a specified box (in a Geometry object) in \n" @@ -7894,11 +8112,11 @@ msgstr "" "ein angegebenes Feld (in einem Geometrieobjekt) in\n" "die Mitte." -#: flatcamGUI/FlatCAMGUI.py:5600 +#: flatcamGUI/FlatCAMGUI.py:5846 msgid "Paint Tool Options" msgstr "Paint werkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:5607 flatcamGUI/ObjectUI.py:1299 +#: flatcamGUI/FlatCAMGUI.py:5853 flatcamGUI/ObjectUI.py:1305 msgid "" "Creates tool paths to cover the\n" "whole area of a polygon (remove\n" @@ -7910,7 +8128,7 @@ msgstr "" "alles Kupfer). Du wirst gefragt\n" "Klicken Sie auf das gewünschte Polygon." -#: flatcamGUI/FlatCAMGUI.py:5631 +#: flatcamGUI/FlatCAMGUI.py:5877 msgid "" "How much (fraction) of the tool\n" "width to overlap each tool pass." @@ -7918,19 +8136,19 @@ msgstr "" "Wie viel (Bruchteil) des Werkzeugs\n" "Breite, um jeden Werkzeugdurchgang zu überlappen." -#: flatcamGUI/FlatCAMGUI.py:5685 flatcamTools/ToolPaint.py:237 +#: flatcamGUI/FlatCAMGUI.py:5931 flatcamTools/ToolPaint.py:237 msgid "Selection:" msgstr "Auswahl:" -#: flatcamGUI/FlatCAMGUI.py:5687 +#: flatcamGUI/FlatCAMGUI.py:5933 msgid "How to select the polygons to paint." msgstr "So wählen Sie die Polygone zum Malen aus." -#: flatcamGUI/FlatCAMGUI.py:5705 +#: flatcamGUI/FlatCAMGUI.py:5951 msgid "Film Tool Options" msgstr "Filmwerkzeugoptionen" -#: flatcamGUI/FlatCAMGUI.py:5710 +#: flatcamGUI/FlatCAMGUI.py:5956 msgid "" "Create a PCB film from a Gerber or Geometry\n" "FlatCAM object.\n" @@ -7940,11 +8158,11 @@ msgstr "" "FlatCAM-Objekt\n" "Die Datei wird im SVG-Format gespeichert." -#: flatcamGUI/FlatCAMGUI.py:5721 flatcamTools/ToolFilm.py:116 +#: flatcamGUI/FlatCAMGUI.py:5967 flatcamTools/ToolFilm.py:116 msgid "Film Type:" msgstr "Filmtyp:" -#: flatcamGUI/FlatCAMGUI.py:5723 flatcamTools/ToolFilm.py:118 +#: flatcamGUI/FlatCAMGUI.py:5969 flatcamTools/ToolFilm.py:118 msgid "" "Generate a Positive black film or a Negative film.\n" "Positive means that it will print the features\n" @@ -7960,11 +8178,11 @@ msgstr "" "mit weiß auf einer schwarzen leinwand.\n" "Das Filmformat ist SVG." -#: flatcamGUI/FlatCAMGUI.py:5734 flatcamTools/ToolFilm.py:130 +#: flatcamGUI/FlatCAMGUI.py:5980 flatcamTools/ToolFilm.py:130 msgid "Border:" msgstr "Rand:" -#: flatcamGUI/FlatCAMGUI.py:5736 flatcamTools/ToolFilm.py:132 +#: flatcamGUI/FlatCAMGUI.py:5982 flatcamTools/ToolFilm.py:132 msgid "" "Specify a border around the object.\n" "Only for negative film.\n" @@ -7984,11 +8202,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:5749 flatcamTools/ToolFilm.py:144 +#: flatcamGUI/FlatCAMGUI.py:5995 flatcamTools/ToolFilm.py:144 msgid "Scale Stroke:" msgstr "Skalierungshub:" -#: flatcamGUI/FlatCAMGUI.py:5751 flatcamTools/ToolFilm.py:146 +#: flatcamGUI/FlatCAMGUI.py:5997 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 " @@ -8000,11 +8218,11 @@ msgstr "" "dünner ist.\n" "Daher können die Feinheiten von diesem Parameter stärker beeinflusst werden." -#: flatcamGUI/FlatCAMGUI.py:5766 +#: flatcamGUI/FlatCAMGUI.py:6012 msgid "Panelize Tool Options" msgstr "Panelize Werkzeugoptionen" -#: flatcamGUI/FlatCAMGUI.py:5771 +#: flatcamGUI/FlatCAMGUI.py:6017 msgid "" "Create an object that contains an array of (x, y) elements,\n" "each element is a copy of the source object spaced\n" @@ -8014,11 +8232,11 @@ msgstr "" "Jedes Element ist eine Kopie des Quellobjekts\n" "in einem X-Abstand, Y-Abstand voneinander." -#: flatcamGUI/FlatCAMGUI.py:5782 flatcamTools/ToolPanelize.py:113 +#: flatcamGUI/FlatCAMGUI.py:6028 flatcamTools/ToolPanelize.py:147 msgid "Spacing cols:" msgstr "Abstandspalten:" -#: flatcamGUI/FlatCAMGUI.py:5784 flatcamTools/ToolPanelize.py:115 +#: flatcamGUI/FlatCAMGUI.py:6030 flatcamTools/ToolPanelize.py:149 msgid "" "Spacing between columns of the desired panel.\n" "In current units." @@ -8026,11 +8244,11 @@ msgstr "" "Abstand zwischen den Spalten des gewünschten Bereichs.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:5792 flatcamTools/ToolPanelize.py:122 +#: flatcamGUI/FlatCAMGUI.py:6038 flatcamTools/ToolPanelize.py:156 msgid "Spacing rows:" msgstr "Abstand Reihen:" -#: flatcamGUI/FlatCAMGUI.py:5794 flatcamTools/ToolPanelize.py:124 +#: flatcamGUI/FlatCAMGUI.py:6040 flatcamTools/ToolPanelize.py:158 msgid "" "Spacing between rows of the desired panel.\n" "In current units." @@ -8038,27 +8256,27 @@ msgstr "" "Abstand zwischen den Reihen des gewünschten Feldes.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:5802 flatcamTools/ToolPanelize.py:131 +#: flatcamGUI/FlatCAMGUI.py:6048 flatcamTools/ToolPanelize.py:165 msgid "Columns:" msgstr "Säulen:" -#: flatcamGUI/FlatCAMGUI.py:5804 flatcamTools/ToolPanelize.py:133 +#: flatcamGUI/FlatCAMGUI.py:6050 flatcamTools/ToolPanelize.py:167 msgid "Number of columns of the desired panel" msgstr "Anzahl der Spalten des gewünschten Bereichs" -#: flatcamGUI/FlatCAMGUI.py:5811 flatcamTools/ToolPanelize.py:139 +#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:173 msgid "Rows:" msgstr "Reihen:" -#: flatcamGUI/FlatCAMGUI.py:5813 flatcamTools/ToolPanelize.py:141 +#: flatcamGUI/FlatCAMGUI.py:6059 flatcamTools/ToolPanelize.py:175 msgid "Number of rows of the desired panel" msgstr "Anzahl der Zeilen des gewünschten Panels" -#: flatcamGUI/FlatCAMGUI.py:5821 flatcamTools/ToolPanelize.py:148 +#: flatcamGUI/FlatCAMGUI.py:6067 msgid "Panel Type:" msgstr "Panel-Typ:" -#: flatcamGUI/FlatCAMGUI.py:5823 +#: flatcamGUI/FlatCAMGUI.py:6069 msgid "" "Choose the type of object for the panel object:\n" "- Gerber\n" @@ -8068,11 +8286,11 @@ msgstr "" "- Gerber\n" "- Geometrie" -#: flatcamGUI/FlatCAMGUI.py:5832 +#: flatcamGUI/FlatCAMGUI.py:6078 msgid "Constrain within:" msgstr "Beschränkung innerhalb:" -#: flatcamGUI/FlatCAMGUI.py:5834 flatcamTools/ToolPanelize.py:160 +#: flatcamGUI/FlatCAMGUI.py:6080 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" @@ -8086,11 +8304,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:5843 flatcamTools/ToolPanelize.py:169 +#: flatcamGUI/FlatCAMGUI.py:6089 flatcamTools/ToolPanelize.py:204 msgid "Width (DX):" msgstr "Breite (DX):" -#: flatcamGUI/FlatCAMGUI.py:5845 flatcamTools/ToolPanelize.py:171 +#: flatcamGUI/FlatCAMGUI.py:6091 flatcamTools/ToolPanelize.py:206 msgid "" "The width (DX) within which the panel must fit.\n" "In current units." @@ -8098,11 +8316,11 @@ msgstr "" "Die Breite (DX), in die das Panel passen muss.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:5852 flatcamTools/ToolPanelize.py:177 +#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:212 msgid "Height (DY):" msgstr "Höhe (DY):" -#: flatcamGUI/FlatCAMGUI.py:5854 flatcamTools/ToolPanelize.py:179 +#: flatcamGUI/FlatCAMGUI.py:6100 flatcamTools/ToolPanelize.py:214 msgid "" "The height (DY)within which the panel must fit.\n" "In current units." @@ -8110,15 +8328,15 @@ msgstr "" "Die Höhe (DY), in die die Platte passen muss.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:5868 +#: flatcamGUI/FlatCAMGUI.py:6114 msgid "Calculators Tool Options" msgstr "Rechner-Tool-Optionen" -#: flatcamGUI/FlatCAMGUI.py:5871 +#: flatcamGUI/FlatCAMGUI.py:6117 msgid "V-Shape Tool Calculator:" msgstr " V-Shape-Werkzeug Rechner: " -#: flatcamGUI/FlatCAMGUI.py:5873 +#: flatcamGUI/FlatCAMGUI.py:6119 msgid "" "Calculate the tool diameter for a given V-shape tool,\n" "having the tip diameter, tip angle and\n" @@ -8129,11 +8347,11 @@ msgstr "" "mit dem Spitzendurchmesser, Spitzenwinkel und\n" "Schnitttiefe als Parameter." -#: flatcamGUI/FlatCAMGUI.py:5884 flatcamTools/ToolCalculators.py:94 +#: flatcamGUI/FlatCAMGUI.py:6130 flatcamTools/ToolCalculators.py:94 msgid "Tip Diameter:" msgstr "Spitzendurchmesser" -#: flatcamGUI/FlatCAMGUI.py:5886 +#: flatcamGUI/FlatCAMGUI.py:6132 msgid "" "This is the tool tip diameter.\n" "It is specified by manufacturer." @@ -8141,11 +8359,11 @@ msgstr "" "Dies ist der Werkzeugspitzendurchmesser.\n" "Es wird vom Hersteller angegeben." -#: flatcamGUI/FlatCAMGUI.py:5894 +#: flatcamGUI/FlatCAMGUI.py:6140 msgid "Tip angle:" msgstr "Spitzenwinkel:" -#: flatcamGUI/FlatCAMGUI.py:5896 +#: flatcamGUI/FlatCAMGUI.py:6142 msgid "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." @@ -8153,7 +8371,7 @@ msgstr "" "Dies ist der Winkel an der Spitze des Werkzeugs.\n" "Es wird vom Hersteller angegeben." -#: flatcamGUI/FlatCAMGUI.py:5906 +#: flatcamGUI/FlatCAMGUI.py:6152 msgid "" "This is depth to cut into material.\n" "In the CNCJob object it is the CutZ parameter." @@ -8161,11 +8379,11 @@ msgstr "" "Dies ist die Tiefe zum Schneiden in Material.\n" "Im CNCJob-Objekt ist dies der Parameter CutZ." -#: flatcamGUI/FlatCAMGUI.py:5913 +#: flatcamGUI/FlatCAMGUI.py:6159 msgid "ElectroPlating Calculator:" msgstr " Galvano-Rechner: " -#: flatcamGUI/FlatCAMGUI.py:5915 flatcamTools/ToolCalculators.py:152 +#: flatcamGUI/FlatCAMGUI.py:6161 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 " @@ -8176,27 +8394,27 @@ msgstr "" "unter Verwendung einer Methode wie Grahit-Tinte oder Calcium-Hypophosphit-" "Tinte oder Palladiumchlorid." -#: flatcamGUI/FlatCAMGUI.py:5925 flatcamTools/ToolCalculators.py:161 +#: flatcamGUI/FlatCAMGUI.py:6171 flatcamTools/ToolCalculators.py:161 msgid "Board Length:" msgstr "PCB Länge:" -#: flatcamGUI/FlatCAMGUI.py:5927 flatcamTools/ToolCalculators.py:165 +#: flatcamGUI/FlatCAMGUI.py:6173 flatcamTools/ToolCalculators.py:165 msgid "This is the board length. In centimeters." msgstr "Dies ist die Boardlänge. In Zentimeter" -#: flatcamGUI/FlatCAMGUI.py:5933 flatcamTools/ToolCalculators.py:167 +#: flatcamGUI/FlatCAMGUI.py:6179 flatcamTools/ToolCalculators.py:167 msgid "Board Width:" msgstr "PCB Breite:" -#: flatcamGUI/FlatCAMGUI.py:5935 flatcamTools/ToolCalculators.py:171 +#: flatcamGUI/FlatCAMGUI.py:6181 flatcamTools/ToolCalculators.py:171 msgid "This is the board width.In centimeters." msgstr "Dies ist die Breite der Platte in Zentimetern." -#: flatcamGUI/FlatCAMGUI.py:5940 flatcamTools/ToolCalculators.py:173 +#: flatcamGUI/FlatCAMGUI.py:6186 flatcamTools/ToolCalculators.py:173 msgid "Current Density:" msgstr "Stromdichte:" -#: flatcamGUI/FlatCAMGUI.py:5943 flatcamTools/ToolCalculators.py:177 +#: flatcamGUI/FlatCAMGUI.py:6189 flatcamTools/ToolCalculators.py:177 msgid "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." @@ -8204,11 +8422,11 @@ msgstr "" "Stromdichte durch die Platine.\n" "In Ampere pro Quadratfuß ASF." -#: flatcamGUI/FlatCAMGUI.py:5949 flatcamTools/ToolCalculators.py:181 +#: flatcamGUI/FlatCAMGUI.py:6195 flatcamTools/ToolCalculators.py:181 msgid "Copper Growth:" msgstr "Kupferwachstum:" -#: flatcamGUI/FlatCAMGUI.py:5952 flatcamTools/ToolCalculators.py:185 +#: flatcamGUI/FlatCAMGUI.py:6198 flatcamTools/ToolCalculators.py:185 msgid "" "How thick the copper growth is intended to be.\n" "In microns." @@ -8216,11 +8434,11 @@ msgstr "" "Wie dick soll das Kupferwachstum sein.\n" "In Mikrometern" -#: flatcamGUI/FlatCAMGUI.py:5965 +#: flatcamGUI/FlatCAMGUI.py:6211 msgid "Transform Tool Options" msgstr "Umwandlungswerkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:5970 +#: flatcamGUI/FlatCAMGUI.py:6216 msgid "" "Various transformations that can be applied\n" "on a FlatCAM object." @@ -8228,47 +8446,47 @@ msgstr "" "Verschiedene Transformationen, die angewendet werden können\n" "auf einem FlatCAM-Objekt." -#: flatcamGUI/FlatCAMGUI.py:5980 +#: flatcamGUI/FlatCAMGUI.py:6226 msgid "Rotate Angle:" msgstr "Winkel drehen:" -#: flatcamGUI/FlatCAMGUI.py:5982 +#: flatcamGUI/FlatCAMGUI.py:6228 msgid "Angle for rotation. In degrees." msgstr "Drehwinkel. In grad." -#: flatcamGUI/FlatCAMGUI.py:5989 +#: flatcamGUI/FlatCAMGUI.py:6235 msgid "Skew_X angle:" msgstr "Neigungswinkel X:" -#: flatcamGUI/FlatCAMGUI.py:5991 +#: flatcamGUI/FlatCAMGUI.py:6237 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:5998 +#: flatcamGUI/FlatCAMGUI.py:6244 msgid "Skew_Y angle:" msgstr "Neigungswinkel Y:" -#: flatcamGUI/FlatCAMGUI.py:6000 +#: flatcamGUI/FlatCAMGUI.py:6246 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:6007 +#: flatcamGUI/FlatCAMGUI.py:6253 msgid "Scale_X factor:" msgstr "Skalierung des X-Faktors:" -#: flatcamGUI/FlatCAMGUI.py:6009 +#: flatcamGUI/FlatCAMGUI.py:6255 msgid "Factor for scaling on X axis." msgstr "Faktor für die Skalierung auf der X-Achse." -#: flatcamGUI/FlatCAMGUI.py:6016 +#: flatcamGUI/FlatCAMGUI.py:6262 msgid "Scale_Y factor:" msgstr "Skalierung des Y-Faktors:" -#: flatcamGUI/FlatCAMGUI.py:6018 +#: flatcamGUI/FlatCAMGUI.py:6264 msgid "Factor for scaling on Y axis." msgstr "Faktor für die Skalierung auf der Y-Achse." -#: flatcamGUI/FlatCAMGUI.py:6026 +#: flatcamGUI/FlatCAMGUI.py:6272 msgid "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." @@ -8276,7 +8494,7 @@ msgstr "" "Skalieren Sie die ausgewählten Objekte\n" "Verwenden des Skalierungsfaktors X für beide Achsen." -#: flatcamGUI/FlatCAMGUI.py:6034 flatcamTools/ToolTransform.py:210 +#: flatcamGUI/FlatCAMGUI.py:6280 flatcamTools/ToolTransform.py:210 msgid "" "Scale the selected object(s)\n" "using the origin reference when checked,\n" @@ -8288,27 +8506,27 @@ msgstr "" "und die Mitte der größten Begrenzungsbox\n" "der ausgewählten Objekte, wenn sie nicht markiert sind." -#: flatcamGUI/FlatCAMGUI.py:6043 +#: flatcamGUI/FlatCAMGUI.py:6289 msgid "Offset_X val:" msgstr "Offset X Wert:" -#: flatcamGUI/FlatCAMGUI.py:6045 +#: flatcamGUI/FlatCAMGUI.py:6291 msgid "Distance to offset on X axis. In current units." msgstr "Abstand zum Offset auf der X-Achse. In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:6052 +#: flatcamGUI/FlatCAMGUI.py:6298 msgid "Offset_Y val:" msgstr "Offset Y-Wert:" -#: flatcamGUI/FlatCAMGUI.py:6054 +#: flatcamGUI/FlatCAMGUI.py:6300 msgid "Distance to offset on Y axis. In current units." msgstr "Abstand zum Offset auf der Y-Achse. In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:6060 +#: flatcamGUI/FlatCAMGUI.py:6306 msgid "Mirror Reference" msgstr "Spiegelreferenz" -#: flatcamGUI/FlatCAMGUI.py:6062 flatcamTools/ToolTransform.py:314 +#: flatcamGUI/FlatCAMGUI.py:6308 flatcamTools/ToolTransform.py:314 msgid "" "Flip the selected object(s)\n" "around the point in Point Entry Field.\n" @@ -8331,11 +8549,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:6073 +#: flatcamGUI/FlatCAMGUI.py:6319 msgid " Mirror Ref. Point:" msgstr "Spiegelref. Punkt:" -#: flatcamGUI/FlatCAMGUI.py:6075 flatcamTools/ToolTransform.py:327 +#: flatcamGUI/FlatCAMGUI.py:6321 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" @@ -8346,11 +8564,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:6092 +#: flatcamGUI/FlatCAMGUI.py:6338 msgid "SolderPaste Tool Options" msgstr "Lötpaste-Werkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:6097 +#: flatcamGUI/FlatCAMGUI.py:6343 msgid "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." @@ -8358,49 +8576,49 @@ msgstr "" "Ein Werkzeug zum Erstellen von GCode für die Ausgabe\n" "Lotpaste auf eine Leiterplatte." -#: flatcamGUI/FlatCAMGUI.py:6108 +#: flatcamGUI/FlatCAMGUI.py:6354 msgid "Diameters of nozzle tools, separated by ','" msgstr "Durchmesser der Düsenwerkzeuge, getrennt durch ','" -#: flatcamGUI/FlatCAMGUI.py:6115 +#: flatcamGUI/FlatCAMGUI.py:6361 msgid "New Nozzle Dia:" msgstr " Neuer Düsendurchmesser: " -#: flatcamGUI/FlatCAMGUI.py:6117 flatcamTools/ToolSolderPaste.py:103 +#: flatcamGUI/FlatCAMGUI.py:6363 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:6125 flatcamTools/ToolSolderPaste.py:166 +#: flatcamGUI/FlatCAMGUI.py:6371 flatcamTools/ToolSolderPaste.py:166 msgid "Z Dispense Start:" msgstr "Z Dosierbeginn:" -#: flatcamGUI/FlatCAMGUI.py:6127 flatcamTools/ToolSolderPaste.py:168 +#: flatcamGUI/FlatCAMGUI.py:6373 flatcamTools/ToolSolderPaste.py:168 msgid "The height (Z) when solder paste dispensing starts." msgstr "Die Höhe (Z) bei der Lotpastendosierung." -#: flatcamGUI/FlatCAMGUI.py:6134 flatcamTools/ToolSolderPaste.py:174 +#: flatcamGUI/FlatCAMGUI.py:6380 flatcamTools/ToolSolderPaste.py:174 msgid "Z Dispense:" msgstr "Z-Abgabe:" -#: flatcamGUI/FlatCAMGUI.py:6136 flatcamTools/ToolSolderPaste.py:176 +#: flatcamGUI/FlatCAMGUI.py:6382 flatcamTools/ToolSolderPaste.py:176 msgid "The height (Z) when doing solder paste dispensing." msgstr "Die Höhe (Z) bei der Lotpastendosierung." -#: flatcamGUI/FlatCAMGUI.py:6143 flatcamTools/ToolSolderPaste.py:183 +#: flatcamGUI/FlatCAMGUI.py:6389 flatcamTools/ToolSolderPaste.py:183 msgid "Z Dispense Stop:" msgstr "Z Abgabestopp:" -#: flatcamGUI/FlatCAMGUI.py:6145 flatcamTools/ToolSolderPaste.py:185 +#: flatcamGUI/FlatCAMGUI.py:6391 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:6152 flatcamTools/ToolSolderPaste.py:191 +#: flatcamGUI/FlatCAMGUI.py:6398 flatcamTools/ToolSolderPaste.py:191 msgid "Z Travel:" msgstr "Z Reise:" -#: flatcamGUI/FlatCAMGUI.py:6154 flatcamTools/ToolSolderPaste.py:193 +#: flatcamGUI/FlatCAMGUI.py:6400 flatcamTools/ToolSolderPaste.py:193 msgid "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." @@ -8408,19 +8626,19 @@ msgstr "" "Die Höhe (Z) für den Weg zwischen Pads\n" "(ohne Lotpaste zu dosieren)." -#: flatcamGUI/FlatCAMGUI.py:6162 flatcamTools/ToolSolderPaste.py:200 +#: flatcamGUI/FlatCAMGUI.py:6408 flatcamTools/ToolSolderPaste.py:200 msgid "Z Toolchange:" msgstr "Z Werkzeugwechsel:" -#: flatcamGUI/FlatCAMGUI.py:6164 flatcamTools/ToolSolderPaste.py:202 +#: flatcamGUI/FlatCAMGUI.py:6410 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:6171 flatcamTools/ToolSolderPaste.py:208 +#: flatcamGUI/FlatCAMGUI.py:6417 flatcamTools/ToolSolderPaste.py:208 msgid "XY Toolchange:" msgstr "XY-Werkzeugwechsel:" -#: flatcamGUI/FlatCAMGUI.py:6173 flatcamTools/ToolSolderPaste.py:210 +#: flatcamGUI/FlatCAMGUI.py:6419 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." @@ -8428,19 +8646,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:6181 flatcamTools/ToolSolderPaste.py:217 +#: flatcamGUI/FlatCAMGUI.py:6427 flatcamTools/ToolSolderPaste.py:217 msgid "Feedrate X-Y:" msgstr "Vorschub X-Y:" -#: flatcamGUI/FlatCAMGUI.py:6183 flatcamTools/ToolSolderPaste.py:219 +#: flatcamGUI/FlatCAMGUI.py:6429 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:6190 flatcamTools/ToolSolderPaste.py:225 +#: flatcamGUI/FlatCAMGUI.py:6436 flatcamTools/ToolSolderPaste.py:225 msgid "Feedrate Z:" msgstr "Vorschub Z:" -#: flatcamGUI/FlatCAMGUI.py:6192 flatcamTools/ToolSolderPaste.py:227 +#: flatcamGUI/FlatCAMGUI.py:6438 flatcamTools/ToolSolderPaste.py:227 msgid "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." @@ -8448,11 +8666,11 @@ msgstr "" "Vorschub (Geschwindigkeit) bei vertikaler Bewegung\n" "(auf der Z-Ebene)." -#: flatcamGUI/FlatCAMGUI.py:6200 flatcamTools/ToolSolderPaste.py:234 +#: flatcamGUI/FlatCAMGUI.py:6446 flatcamTools/ToolSolderPaste.py:234 msgid "Feedrate Z Dispense:" msgstr "Vorschub Z Dosierung:" -#: flatcamGUI/FlatCAMGUI.py:6202 flatcamTools/ToolSolderPaste.py:236 +#: flatcamGUI/FlatCAMGUI.py:6448 flatcamTools/ToolSolderPaste.py:236 msgid "" "Feedrate (speed) while moving up vertically\n" " to Dispense position (on Z plane)." @@ -8460,11 +8678,11 @@ msgstr "" "Vorschub (Geschwindigkeit) bei vertikaler Bewegung\n" "  zur Ausgabeposition (auf der Z-Ebene)." -#: flatcamGUI/FlatCAMGUI.py:6210 flatcamTools/ToolSolderPaste.py:243 +#: flatcamGUI/FlatCAMGUI.py:6456 flatcamTools/ToolSolderPaste.py:243 msgid "Spindle Speed FWD:" msgstr "Spindeldrehzahl FWD:" -#: flatcamGUI/FlatCAMGUI.py:6212 flatcamTools/ToolSolderPaste.py:245 +#: flatcamGUI/FlatCAMGUI.py:6458 flatcamTools/ToolSolderPaste.py:245 msgid "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." @@ -8472,19 +8690,19 @@ msgstr "" "Die Spendergeschwindigkeit beim Schieben der Lötpaste\n" "durch die Spenderdüse." -#: flatcamGUI/FlatCAMGUI.py:6220 flatcamTools/ToolSolderPaste.py:252 +#: flatcamGUI/FlatCAMGUI.py:6466 flatcamTools/ToolSolderPaste.py:252 msgid "Dwell FWD:" msgstr "Verweilzeit FWD:" -#: flatcamGUI/FlatCAMGUI.py:6222 flatcamTools/ToolSolderPaste.py:254 +#: flatcamGUI/FlatCAMGUI.py:6468 flatcamTools/ToolSolderPaste.py:254 msgid "Pause after solder dispensing." msgstr "Pause nach dem Löten." -#: flatcamGUI/FlatCAMGUI.py:6229 flatcamTools/ToolSolderPaste.py:260 +#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:260 msgid "Spindle Speed REV:" msgstr "Spindeldrehzahl REV:" -#: flatcamGUI/FlatCAMGUI.py:6231 flatcamTools/ToolSolderPaste.py:262 +#: flatcamGUI/FlatCAMGUI.py:6477 flatcamTools/ToolSolderPaste.py:262 msgid "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." @@ -8492,11 +8710,11 @@ msgstr "" "Die Spendergeschwindigkeit beim Einfahren der Lötpaste\n" "durch die Spenderdüse." -#: flatcamGUI/FlatCAMGUI.py:6239 flatcamTools/ToolSolderPaste.py:269 +#: flatcamGUI/FlatCAMGUI.py:6485 flatcamTools/ToolSolderPaste.py:269 msgid "Dwell REV:" msgstr "Verweilen REV:" -#: flatcamGUI/FlatCAMGUI.py:6241 flatcamTools/ToolSolderPaste.py:271 +#: flatcamGUI/FlatCAMGUI.py:6487 flatcamTools/ToolSolderPaste.py:271 msgid "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." @@ -8504,23 +8722,23 @@ msgstr "" "Pause nachdem Lotpastendispenser eingefahren wurde,\n" "das Druckgleichgewicht zu ermöglichen." -#: flatcamGUI/FlatCAMGUI.py:6248 flatcamTools/ToolSolderPaste.py:277 +#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:277 msgid "PostProcessors:" msgstr "Postprozessoren:" -#: flatcamGUI/FlatCAMGUI.py:6250 flatcamTools/ToolSolderPaste.py:279 +#: flatcamGUI/FlatCAMGUI.py:6496 flatcamTools/ToolSolderPaste.py:279 msgid "Files that control the GCode generation." msgstr "Dateien, die die GCode-Generierung steuern." -#: flatcamGUI/FlatCAMGUI.py:6280 flatcamGUI/FlatCAMGUI.py:6286 +#: flatcamGUI/FlatCAMGUI.py:6526 flatcamGUI/FlatCAMGUI.py:6532 msgid "Idle." msgstr "Untätig" -#: flatcamGUI/FlatCAMGUI.py:6310 +#: flatcamGUI/FlatCAMGUI.py:6556 msgid "Application started ..." msgstr "Bewerbung gestartet ..." -#: flatcamGUI/FlatCAMGUI.py:6311 +#: flatcamGUI/FlatCAMGUI.py:6557 msgid "Hello!" msgstr "Hello!" @@ -8599,7 +8817,7 @@ msgid "Gerber Object" msgstr "Gerber-Objekt" #: flatcamGUI/ObjectUI.py:182 flatcamGUI/ObjectUI.py:517 -#: flatcamGUI/ObjectUI.py:836 flatcamGUI/ObjectUI.py:1366 +#: flatcamGUI/ObjectUI.py:839 flatcamGUI/ObjectUI.py:1372 msgid "Name:" msgstr "Name:" @@ -8778,8 +8996,8 @@ msgid "Resulting geometry will have rounded corners." msgstr "Die resultierende Geometrie hat abgerundete Ecken." #: flatcamGUI/ObjectUI.py:450 flatcamGUI/ObjectUI.py:484 -#: flatcamTools/ToolCutOut.py:167 flatcamTools/ToolCutOut.py:187 -#: flatcamTools/ToolCutOut.py:238 flatcamTools/ToolSolderPaste.py:127 +#: flatcamTools/ToolCutOut.py:168 flatcamTools/ToolCutOut.py:188 +#: flatcamTools/ToolCutOut.py:239 flatcamTools/ToolSolderPaste.py:127 msgid "Generate Geo" msgstr "Geo erzeugen" @@ -8803,7 +9021,7 @@ msgstr "Excellon-Objekt" msgid "Solid circles." msgstr "Feste Kreise" -#: flatcamGUI/ObjectUI.py:536 flatcamGUI/ObjectUI.py:855 +#: flatcamGUI/ObjectUI.py:536 flatcamGUI/ObjectUI.py:858 msgid "Tools Table" msgstr " Werkzeugtabelle " @@ -8830,7 +9048,7 @@ msgstr "" "Werkzeugwechselereignis angegeben\n" "wird als T1, T2 ... Tn im Maschinencode angezeigt." -#: flatcamGUI/ObjectUI.py:565 flatcamGUI/ObjectUI.py:901 +#: flatcamGUI/ObjectUI.py:565 flatcamGUI/ObjectUI.py:904 #: flatcamTools/ToolNonCopperClear.py:97 flatcamTools/ToolPaint.py:94 msgid "" "Tool Diameter. It's value (in current FlatCAM units) \n" @@ -8868,15 +9086,15 @@ msgstr "" "Erstellen Sie ein CNC-Auftragsobjekt\n" "für dieses Bohrobjekt." -#: flatcamGUI/ObjectUI.py:615 flatcamGUI/ObjectUI.py:1115 +#: flatcamGUI/ObjectUI.py:615 flatcamGUI/ObjectUI.py:1118 msgid "Tool change" msgstr "Werkzeugwechsel" -#: flatcamGUI/ObjectUI.py:623 flatcamGUI/ObjectUI.py:1108 +#: flatcamGUI/ObjectUI.py:623 flatcamGUI/ObjectUI.py:1111 msgid "Tool change Z:" msgstr "Werkzeugwechsel Z:" -#: flatcamGUI/ObjectUI.py:625 flatcamGUI/ObjectUI.py:1111 +#: flatcamGUI/ObjectUI.py:625 flatcamGUI/ObjectUI.py:1114 msgid "" "Z-axis position (height) for\n" "tool change." @@ -8914,7 +9132,7 @@ msgstr "" "(in Einheiten pro Minute).\n" "Dies ist für die lineare Bewegung G01." -#: flatcamGUI/ObjectUI.py:706 +#: flatcamGUI/ObjectUI.py:709 msgid "" "The json file that dictates\n" "gcode output." @@ -8922,7 +9140,7 @@ msgstr "" "Die Json-Datei, die diktiert\n" "gcode ausgabe." -#: flatcamGUI/ObjectUI.py:738 +#: flatcamGUI/ObjectUI.py:741 msgid "" "Select from the Tools Table above\n" "the tools you want to include." @@ -8930,11 +9148,11 @@ msgstr "" "Wählen Sie aus der Tools-Tabelle oben\n" "die Werkzeuge, die Sie einschließen möchten." -#: flatcamGUI/ObjectUI.py:745 +#: flatcamGUI/ObjectUI.py:748 msgid "Type: " msgstr " Typ: " -#: flatcamGUI/ObjectUI.py:747 +#: flatcamGUI/ObjectUI.py:750 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -8946,15 +9164,15 @@ msgstr "" "Wenn Sie \"Slots\" oder \"Both\" wählen, werden die Slots angezeigt\n" "in eine Reihe von Bohrern umgewandelt." -#: flatcamGUI/ObjectUI.py:762 +#: flatcamGUI/ObjectUI.py:765 msgid "Create GCode" msgstr "GCode erstellen" -#: flatcamGUI/ObjectUI.py:764 +#: flatcamGUI/ObjectUI.py:767 msgid "Generate the CNC Job." msgstr "Generieren Sie den CNC-Job." -#: flatcamGUI/ObjectUI.py:776 +#: flatcamGUI/ObjectUI.py:779 msgid "" "Select from the Tools Table above\n" " the hole dias that are to be milled." @@ -8962,15 +9180,15 @@ msgstr "" "Wählen Sie aus der Werkzeugtabelle oben\n" " das Loch, das gefräst werden soll." -#: flatcamGUI/ObjectUI.py:783 +#: flatcamGUI/ObjectUI.py:786 msgid "Drills Tool dia:" msgstr "Bohrer Werkzeugdurchmesser:" -#: flatcamGUI/ObjectUI.py:790 +#: flatcamGUI/ObjectUI.py:793 msgid "Mill Drills Geo" msgstr "Mühle bohrt Geo" -#: flatcamGUI/ObjectUI.py:792 +#: flatcamGUI/ObjectUI.py:795 msgid "" "Create the Geometry Object\n" "for milling DRILLS toolpaths." @@ -8978,15 +9196,15 @@ msgstr "" "Erstellen Sie das Geometrieobjekt\n" "zum Fräsen von BOHRER-Werkzeugwegen." -#: flatcamGUI/ObjectUI.py:799 +#: flatcamGUI/ObjectUI.py:802 msgid "Slots Tool dia:" msgstr "Schlitzwerkzeugdurchmesser:" -#: flatcamGUI/ObjectUI.py:806 +#: flatcamGUI/ObjectUI.py:809 msgid "Mill Slots Geo" msgstr "Fräsen der Schlitze" -#: flatcamGUI/ObjectUI.py:808 +#: flatcamGUI/ObjectUI.py:811 msgid "" "Create the Geometry Object\n" "for milling SLOTS toolpaths." @@ -8994,11 +9212,11 @@ msgstr "" "Erstellen Sie das Geometrieobjekt\n" "zum Fräsen von Werkzeugwegen." -#: flatcamGUI/ObjectUI.py:826 +#: flatcamGUI/ObjectUI.py:829 msgid "Geometry Object" msgstr "Geometrieobjekt" -#: flatcamGUI/ObjectUI.py:857 +#: flatcamGUI/ObjectUI.py:860 msgid "" "Tools in this Geometry object used for cutting.\n" "The 'Offset' entry will set an offset for the cut.\n" @@ -9027,15 +9245,15 @@ 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:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "Dia" msgstr "Durchm" -#: flatcamGUI/ObjectUI.py:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "TT" msgstr "TT" -#: flatcamGUI/ObjectUI.py:895 +#: flatcamGUI/ObjectUI.py:898 msgid "" "This is the Tool Number.\n" "When ToolChange is checked, on toolchange event this value\n" @@ -9046,7 +9264,7 @@ msgstr "" "Werkzeugwechselereignis angezeigt\n" "wird als T1, T2 ... Tn angezeigt" -#: flatcamGUI/ObjectUI.py:906 +#: flatcamGUI/ObjectUI.py:909 msgid "" "The value for the Offset can be:\n" "- Path -> There is no offset, the tool cut will be done through the geometry " @@ -9063,7 +9281,7 @@ msgstr "" "- Out (Seite) -> Der Werkzeugschnitt folgt der Geometrielinie an der " "Außenseite." -#: flatcamGUI/ObjectUI.py:913 +#: flatcamGUI/ObjectUI.py:916 msgid "" "The (Operation) Type has only informative value. Usually the UI form " "values \n" @@ -9085,7 +9303,7 @@ msgstr "" "Für die Isolation benötigen wir einen niedrigeren Vorschub, da ein Fräser " "mit feiner Spitze verwendet wird." -#: flatcamGUI/ObjectUI.py:922 +#: flatcamGUI/ObjectUI.py:925 msgid "" "The Tool Type (TT) can be:\n" "- Circular with 1 ... 4 teeth -> it is informative only. Being circular the " @@ -9116,7 +9334,7 @@ msgstr "" "Durch die Auswahl des V-Shape-Werkzeugtyps wird der Operationstyp " "automatisch als Isolation ausgewählt." -#: flatcamGUI/ObjectUI.py:933 +#: flatcamGUI/ObjectUI.py:936 msgid "" "Plot column. It is visible only for MultiGeo geometries, meaning geometries " "that holds the geometry\n" @@ -9134,11 +9352,11 @@ msgstr "" "der Leinwand aktiviert / deaktiviert werden\n" "für das entsprechende Werkzeug." -#: flatcamGUI/ObjectUI.py:946 +#: flatcamGUI/ObjectUI.py:949 msgid "Tool Offset:" msgstr "Werkzeugversatz:" -#: flatcamGUI/ObjectUI.py:949 +#: flatcamGUI/ObjectUI.py:952 msgid "" "The value to offset the cut when \n" "the Offset type selected is 'Offset'.\n" @@ -9150,11 +9368,11 @@ msgstr "" "Der Wert kann für \"außerhalb\" positiv sein\n" "Cut und Negativ für \"Inside\" Cut." -#: flatcamGUI/ObjectUI.py:972 +#: flatcamGUI/ObjectUI.py:975 msgid "Tool Dia:" msgstr " Werkzeugdurchmesser: " -#: flatcamGUI/ObjectUI.py:991 flatcamTools/ToolNonCopperClear.py:136 +#: flatcamGUI/ObjectUI.py:994 flatcamTools/ToolNonCopperClear.py:136 #: flatcamTools/ToolPaint.py:133 msgid "" "Add a new tool to the Tool Table\n" @@ -9163,7 +9381,7 @@ msgstr "" "Fügen Sie der Werkzeugtabelle ein neues Werkzeug hinzu\n" "mit dem oben angegebenen Durchmesser." -#: flatcamGUI/ObjectUI.py:999 +#: flatcamGUI/ObjectUI.py:1002 msgid "" "Copy a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." @@ -9171,7 +9389,7 @@ msgstr "" "Kopieren Sie eine Auswahl von Werkzeugen in die Werkzeugtabelle\n" "indem Sie zuerst eine Zeile in der Werkzeugtabelle auswählen." -#: flatcamGUI/ObjectUI.py:1007 +#: flatcamGUI/ObjectUI.py:1010 msgid "" "Delete a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." @@ -9179,11 +9397,11 @@ msgstr "" "Löschen Sie eine Auswahl von Werkzeugen in der Werkzeugtabelle\n" "indem Sie zuerst eine Zeile in der Werkzeugtabelle auswählen." -#: flatcamGUI/ObjectUI.py:1023 +#: flatcamGUI/ObjectUI.py:1026 msgid "Tool Data" msgstr " Werkzeugdaten " -#: flatcamGUI/ObjectUI.py:1026 +#: flatcamGUI/ObjectUI.py:1029 msgid "" "The data used for creating GCode.\n" "Each tool store it's own set of such data." @@ -9191,19 +9409,19 @@ msgstr "" "Die Daten, die zum Erstellen von GCode verwendet werden.\n" "Jedes Werkzeug speichert seinen eigenen Satz solcher Daten." -#: flatcamGUI/ObjectUI.py:1036 +#: flatcamGUI/ObjectUI.py:1039 msgid "V-Tip Dia:" msgstr "V-Tip-Durchm:" -#: flatcamGUI/ObjectUI.py:1039 +#: flatcamGUI/ObjectUI.py:1042 msgid "The tip diameter for V-Shape Tool" msgstr "Der Spitzendurchmesser für das V-Shape-Werkzeug" -#: flatcamGUI/ObjectUI.py:1047 +#: flatcamGUI/ObjectUI.py:1050 msgid "V-Tip Angle:" msgstr "V-Tip-Winkel:" -#: flatcamGUI/ObjectUI.py:1050 +#: flatcamGUI/ObjectUI.py:1053 msgid "" "The tip angle for V-Shape Tool.\n" "In degree." @@ -9211,11 +9429,11 @@ msgstr "" "Der Spitzenwinkel für das V-Shape-Werkzeug.\n" "In grad." -#: flatcamGUI/ObjectUI.py:1071 +#: flatcamGUI/ObjectUI.py:1074 msgid "Multi-Depth:" msgstr "Mehrfache Tiefe:" -#: flatcamGUI/ObjectUI.py:1074 +#: flatcamGUI/ObjectUI.py:1077 msgid "" "Use multiple passes to limit\n" "the cut depth in each pass. Will\n" @@ -9231,11 +9449,11 @@ msgstr "" "Geben Sie rechts die Tiefe von ein\n" "jeder Durchlauf (positiver Wert)." -#: flatcamGUI/ObjectUI.py:1087 +#: flatcamGUI/ObjectUI.py:1090 msgid "Depth of each pass (positive)." msgstr "Tiefe jedes Durchgangs (positiv)." -#: flatcamGUI/ObjectUI.py:1118 +#: flatcamGUI/ObjectUI.py:1121 msgid "" "Include tool-change sequence\n" "in the Machine Code (Pause for tool change)." @@ -9243,7 +9461,7 @@ msgstr "" "Werkzeugwechselfolge einbeziehen\n" "im Maschinencode (Pause für Werkzeugwechsel)." -#: flatcamGUI/ObjectUI.py:1144 +#: flatcamGUI/ObjectUI.py:1147 msgid "" "This is the height (Z) at which the CNC\n" "will go as the last move." @@ -9251,11 +9469,11 @@ msgstr "" "Dies ist die Höhe (Z), auf der die CNC steht\n" "wird als letzter Zug gehen." -#: flatcamGUI/ObjectUI.py:1165 +#: flatcamGUI/ObjectUI.py:1168 msgid "Feed Rate Z (Plunge):" msgstr "Vorschubrate Z (Eintauchen):" -#: flatcamGUI/ObjectUI.py:1168 +#: flatcamGUI/ObjectUI.py:1171 msgid "" "Cutting speed in the Z\n" "plane in units per minute" @@ -9263,11 +9481,11 @@ msgstr "" "Schnittgeschwindigkeit in der Z\n" "Flugzeug in Einheiten pro Minute" -#: flatcamGUI/ObjectUI.py:1177 +#: flatcamGUI/ObjectUI.py:1180 msgid "Feed Rate Rapids:" msgstr "Vorschubgeschwindigkeit:" -#: flatcamGUI/ObjectUI.py:1180 +#: flatcamGUI/ObjectUI.py:1183 msgid "" "Cutting speed in the XY\n" "plane in units per minute\n" @@ -9283,11 +9501,11 @@ msgstr "" "Es ist nur für Marlin nützlich,\n" "für andere Fälle ignorieren." -#: flatcamGUI/ObjectUI.py:1193 +#: flatcamGUI/ObjectUI.py:1199 msgid "Cut over 1st pt" msgstr "1. Punkt schneiden" -#: flatcamGUI/ObjectUI.py:1208 +#: flatcamGUI/ObjectUI.py:1214 msgid "" "Speed of the spindle in RPM (optional).\n" "If LASER postprocessor is used,\n" @@ -9297,11 +9515,11 @@ msgstr "" "Wenn LASER-Postprozessor verwendet wird,\n" "Dieser Wert ist die Leistung des Lasers." -#: flatcamGUI/ObjectUI.py:1237 +#: flatcamGUI/ObjectUI.py:1243 msgid "PostProcessor:" msgstr "Postprozessor:" -#: flatcamGUI/ObjectUI.py:1240 +#: flatcamGUI/ObjectUI.py:1246 msgid "" "The Postprocessor file that dictates\n" "the Machine Code (like GCode, RML, HPGL) output." @@ -9309,7 +9527,7 @@ msgstr "" "Die Postprozessor-Datei, die diktiert\n" "den Maschinencode (wie GCode, RML, HPGL)." -#: flatcamGUI/ObjectUI.py:1278 +#: flatcamGUI/ObjectUI.py:1284 msgid "" "Add at least one tool in the tool-table.\n" "Click the header to select all, or Ctrl + LMB\n" @@ -9321,35 +9539,35 @@ msgstr "" "oder drücken Sie Strg + LMB\n" "zur benutzerdefinierten Auswahl von Werkzeugen." -#: flatcamGUI/ObjectUI.py:1285 +#: flatcamGUI/ObjectUI.py:1291 msgid "Generate" msgstr "Generieren" -#: flatcamGUI/ObjectUI.py:1288 +#: flatcamGUI/ObjectUI.py:1294 msgid "Generate the CNC Job object." msgstr "Generieren Sie das CNC-Job-Objekt." -#: flatcamGUI/ObjectUI.py:1296 +#: flatcamGUI/ObjectUI.py:1302 msgid "Paint Area:" msgstr " Paint Bereich: " -#: flatcamGUI/ObjectUI.py:1311 +#: flatcamGUI/ObjectUI.py:1317 msgid "Launch Paint Tool in Tools Tab." msgstr "Starten Sie das Paint Werkzeug in der Registerkarte \"Tools\"." -#: flatcamGUI/ObjectUI.py:1328 +#: flatcamGUI/ObjectUI.py:1334 msgid "CNC Job Object" msgstr "CNC-Auftragsobjekt" -#: flatcamGUI/ObjectUI.py:1347 +#: flatcamGUI/ObjectUI.py:1353 msgid "Plot kind:" msgstr " Plotart: " -#: flatcamGUI/ObjectUI.py:1372 +#: flatcamGUI/ObjectUI.py:1378 msgid "Travelled dist.:" msgstr " Zurückgelegte Distanz: " -#: flatcamGUI/ObjectUI.py:1375 flatcamGUI/ObjectUI.py:1382 +#: flatcamGUI/ObjectUI.py:1381 flatcamGUI/ObjectUI.py:1388 msgid "" "This is the total travelled distance on X-Y plane.\n" "In current units." @@ -9357,11 +9575,11 @@ msgstr "" "Dies ist die Gesamtstrecke auf der X-Y-Ebene.\n" "In aktuellen Einheiten." -#: flatcamGUI/ObjectUI.py:1410 +#: flatcamGUI/ObjectUI.py:1416 msgid "CNC Tools Table" msgstr " CNC-Werkzeugtabelle " -#: flatcamGUI/ObjectUI.py:1413 +#: flatcamGUI/ObjectUI.py:1419 msgid "" "Tools in this CNCJob object used for cutting.\n" "The tool diameter is used for plotting on canvas.\n" @@ -9383,27 +9601,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:1447 +#: flatcamGUI/ObjectUI.py:1453 msgid "P" msgstr "P" -#: flatcamGUI/ObjectUI.py:1453 +#: flatcamGUI/ObjectUI.py:1459 msgid "Update Plot" msgstr "Plot aktualisieren" -#: flatcamGUI/ObjectUI.py:1455 +#: flatcamGUI/ObjectUI.py:1461 msgid "Update the plot." msgstr "Aktualisieren Sie die Darstellung." -#: flatcamGUI/ObjectUI.py:1462 +#: flatcamGUI/ObjectUI.py:1468 msgid "Export CNC Code:" msgstr " CNC-Code exportieren: " -#: flatcamGUI/ObjectUI.py:1470 +#: flatcamGUI/ObjectUI.py:1476 msgid "Prepend to CNC Code:" msgstr "CNC-Code voranstellen:" -#: flatcamGUI/ObjectUI.py:1473 +#: flatcamGUI/ObjectUI.py:1479 msgid "" "Type here any G-Code commands you would\n" "like to add to the beginning of the generated file." @@ -9411,11 +9629,11 @@ msgstr "" "Geben Sie hier alle G-Code-Befehle ein\n" "gerne an den Anfang der generierten Datei hinzufügen." -#: flatcamGUI/ObjectUI.py:1483 +#: flatcamGUI/ObjectUI.py:1489 msgid "Append to CNC Code" msgstr "An CNC Code anhängen" -#: flatcamGUI/ObjectUI.py:1507 +#: flatcamGUI/ObjectUI.py:1513 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -9437,19 +9655,19 @@ msgstr "" "das hat \"toolchange_custom\" im Namen und das ist gebaut\n" "mit der \"Toolchange Custom\" -Prozessordatei als Vorlage." -#: flatcamGUI/ObjectUI.py:1555 +#: flatcamGUI/ObjectUI.py:1561 msgid "z_cut = depth where to cut" msgstr "z_cut = Tiefe, wo geschnitten werden soll" -#: flatcamGUI/ObjectUI.py:1556 +#: flatcamGUI/ObjectUI.py:1562 msgid "z_move = height where to travel" msgstr "z_move = Höhe wo zu reisen" -#: flatcamGUI/ObjectUI.py:1574 +#: flatcamGUI/ObjectUI.py:1580 msgid "View CNC Code" msgstr "CNC-Code anzeigen" -#: flatcamGUI/ObjectUI.py:1577 +#: flatcamGUI/ObjectUI.py:1583 msgid "" "Opens TAB to view/modify/print G-Code\n" "file." @@ -9457,11 +9675,11 @@ msgstr "" "Öffnet die Registerkarte zum Anzeigen / Ändern / Drucken von G-Code\n" "Datei." -#: flatcamGUI/ObjectUI.py:1583 +#: flatcamGUI/ObjectUI.py:1589 msgid "Save CNC Code" msgstr "CNC-Code speichern" -#: flatcamGUI/ObjectUI.py:1586 +#: flatcamGUI/ObjectUI.py:1592 msgid "" "Opens dialog to save G-Code\n" "file." @@ -9641,15 +9859,23 @@ msgstr "" "das umgebende Material (das eine\n" "von denen die Leiterplatte ausgeschnitten ist)." -#: flatcamTools/ToolCutOut.py:122 +#: flatcamTools/ToolCutOut.py:117 +msgid "" +"Create a convex shape surrounding the entire PCB.\n" +"Used only if the source object type is Gerber." +msgstr "" +"Erstellen Sie eine konvexe Form, die die gesamte Leiterplatte umgibt.\n" +"Wird nur verwendet, wenn der Quellobjekttyp Gerber ist." + +#: flatcamTools/ToolCutOut.py:123 msgid "A. Automatic Bridge Gaps" msgstr "A. Automatische Brückenlücken" -#: flatcamTools/ToolCutOut.py:124 +#: flatcamTools/ToolCutOut.py:125 msgid "This section handle creation of automatic bridge gaps." msgstr "Dieser Abschnitt behandelt die Erstellung automatischer Brückenlücken." -#: flatcamTools/ToolCutOut.py:135 +#: flatcamTools/ToolCutOut.py:136 msgid "" "Number of gaps used for the Automatic cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -9671,11 +9897,11 @@ msgstr "" "- 2 tb \t- 2 * oben + 2 * unten\n" "- 8 \t- 2 * links + 2 * rechts + 2 * oben + 2 * unten" -#: flatcamTools/ToolCutOut.py:158 +#: flatcamTools/ToolCutOut.py:159 msgid "FreeForm:" msgstr "Freie Form:" -#: flatcamTools/ToolCutOut.py:160 +#: flatcamTools/ToolCutOut.py:161 msgid "" "The cutout shape can be of ny shape.\n" "Useful when the PCB has a non-rectangular shape." @@ -9683,7 +9909,7 @@ msgstr "" "Die Ausschnittsform kann jede Form haben.\n" "Nützlich, wenn die Leiterplatte eine nicht rechteckige Form hat." -#: flatcamTools/ToolCutOut.py:169 +#: flatcamTools/ToolCutOut.py:170 msgid "" "Cutout the selected object.\n" "The cutout shape can be of any shape.\n" @@ -9693,11 +9919,11 @@ msgstr "" "Die Ausschnittform kann eine beliebige Form haben.\n" "Nützlich, wenn die Leiterplatte eine nicht rechteckige Form hat." -#: flatcamTools/ToolCutOut.py:178 +#: flatcamTools/ToolCutOut.py:179 msgid "Rectangular:" msgstr "Rechteckig:" -#: flatcamTools/ToolCutOut.py:180 +#: flatcamTools/ToolCutOut.py:181 msgid "" "The resulting cutout shape is\n" "always a rectangle shape and it will be\n" @@ -9707,7 +9933,7 @@ msgstr "" "immer eine rechteckige Form und es wird sein\n" "der Begrenzungsrahmen des Objekts." -#: flatcamTools/ToolCutOut.py:189 +#: flatcamTools/ToolCutOut.py:190 msgid "" "Cutout the selected object.\n" "The resulting cutout shape is\n" @@ -9719,11 +9945,11 @@ msgstr "" "immer eine rechteckige Form und es wird sein\n" "der Begrenzungsrahmen des Objekts." -#: flatcamTools/ToolCutOut.py:197 +#: flatcamTools/ToolCutOut.py:198 msgid "B. Manual Bridge Gaps" msgstr "B. Manuelle Brückenlücken" -#: flatcamTools/ToolCutOut.py:199 +#: flatcamTools/ToolCutOut.py:200 msgid "" "This section handle creation of manual bridge gaps.\n" "This is done by mouse clicking on the perimeter of the\n" @@ -9733,19 +9959,19 @@ msgstr "" "Dies erfolgt durch einen Mausklick auf den Umfang des\n" "Geometrieobjekt, das als Ausschnittsobjekt verwendet wird." -#: flatcamTools/ToolCutOut.py:215 +#: flatcamTools/ToolCutOut.py:216 msgid "Geo Obj:" msgstr "Geo-Objekt:" -#: flatcamTools/ToolCutOut.py:217 +#: flatcamTools/ToolCutOut.py:218 msgid "Geometry object used to create the manual cutout." msgstr "Geometrieobjekt zum Erstellen des manuellen Ausschnitts." -#: flatcamTools/ToolCutOut.py:228 +#: flatcamTools/ToolCutOut.py:229 msgid "Manual Geo:" msgstr "Manuelle Geo:" -#: flatcamTools/ToolCutOut.py:230 flatcamTools/ToolCutOut.py:240 +#: flatcamTools/ToolCutOut.py:231 flatcamTools/ToolCutOut.py:241 msgid "" "If the object to be cutout is a Gerber\n" "first create a Geometry that surrounds it,\n" @@ -9757,11 +9983,11 @@ msgstr "" "als Ausschnitt verwendet werden, falls noch nicht vorhanden.\n" "Wählen Sie in der oberen Objekt-Combobox die Quell-Gerber-Datei aus." -#: flatcamTools/ToolCutOut.py:250 +#: flatcamTools/ToolCutOut.py:251 msgid "Manual Add Bridge Gaps:" msgstr "Manuelles Hinzufügen von Brückenlücken:" -#: flatcamTools/ToolCutOut.py:252 +#: flatcamTools/ToolCutOut.py:253 msgid "" "Use the left mouse button (LMB) click\n" "to create a bridge gap to separate the PCB from\n" @@ -9771,11 +9997,11 @@ msgstr "" "Erstellen einer Brückenlücke, um die Leiterplatte von zu trennen\n" "das umgebende Material." -#: flatcamTools/ToolCutOut.py:259 +#: flatcamTools/ToolCutOut.py:260 msgid "Generate Gap" msgstr "Lücke erzeugen" -#: flatcamTools/ToolCutOut.py:261 +#: flatcamTools/ToolCutOut.py:262 msgid "" "Use the left mouse button (LMB) click\n" "to create a bridge gap to separate the PCB from\n" @@ -9789,16 +10015,16 @@ msgstr "" "Der LMB-Klick muss am Umfang von erfolgen\n" "das Geometrieobjekt, das als Ausschnittsgeometrie verwendet wird." -#: flatcamTools/ToolCutOut.py:338 flatcamTools/ToolCutOut.py:483 +#: flatcamTools/ToolCutOut.py:341 flatcamTools/ToolCutOut.py:499 #: flatcamTools/ToolNonCopperClear.py:666 flatcamTools/ToolPaint.py:764 -#: flatcamTools/ToolPanelize.py:293 flatcamTools/ToolPanelize.py:307 -#: flatcamTools/ToolSub.py:234 flatcamTools/ToolSub.py:246 -#: flatcamTools/ToolSub.py:364 flatcamTools/ToolSub.py:376 +#: flatcamTools/ToolPanelize.py:352 flatcamTools/ToolPanelize.py:366 +#: flatcamTools/ToolSub.py:237 flatcamTools/ToolSub.py:249 +#: flatcamTools/ToolSub.py:428 flatcamTools/ToolSub.py:440 #, python-format msgid "[ERROR_NOTCL] Could not retrieve object: %s" msgstr "[ERROR_NOTCL] Objekt konnte nicht abgerufen werden:%s" -#: flatcamTools/ToolCutOut.py:342 +#: flatcamTools/ToolCutOut.py:345 msgid "" "[ERROR_NOTCL] There is no object selected for Cutout.\n" "Select one and try again." @@ -9806,7 +10032,7 @@ msgstr "" "[ERROR_NOTCL] Es ist kein Objekt für den Ausschnitt ausgewählt.\n" "Wählen Sie eine aus und versuchen Sie es erneut." -#: flatcamTools/ToolCutOut.py:358 +#: flatcamTools/ToolCutOut.py:360 msgid "" "[WARNING_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." @@ -9814,29 +10040,29 @@ msgstr "" "[WARNING_NOTCL] Werkzeugdurchmesser ist Nullwert. Ändern Sie es in eine " "positive reelle Zahl." -#: flatcamTools/ToolCutOut.py:368 flatcamTools/ToolCutOut.py:511 -#: flatcamTools/ToolCutOut.py:736 +#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:527 +#: flatcamTools/ToolCutOut.py:771 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:379 flatcamTools/ToolCutOut.py:522 -#: flatcamTools/ToolCutOut.py:631 +#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:538 +#: flatcamTools/ToolCutOut.py:666 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:386 flatcamTools/ToolCutOut.py:529 +#: flatcamTools/ToolCutOut.py:388 flatcamTools/ToolCutOut.py:545 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:390 flatcamTools/ToolCutOut.py:533 +#: flatcamTools/ToolCutOut.py:392 flatcamTools/ToolCutOut.py:549 msgid "" "[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 " "or 8. Fill in a correct value and retry. " @@ -9845,7 +10071,7 @@ msgstr "" "'lr', 'tb', '2lr', '2tb', 4 oder 8. Geben Sie einen korrekten Wert ein und " "versuchen Sie es erneut." -#: flatcamTools/ToolCutOut.py:395 flatcamTools/ToolCutOut.py:538 +#: flatcamTools/ToolCutOut.py:397 flatcamTools/ToolCutOut.py:554 msgid "" "[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n" "Optionally, this Multi-geo Geometry can be converted to Single-geo " @@ -9858,18 +10084,18 @@ msgstr "" "werden.\n" "und danach Cutout durchführen." -#: flatcamTools/ToolCutOut.py:467 flatcamTools/ToolCutOut.py:601 +#: flatcamTools/ToolCutOut.py:483 flatcamTools/ToolCutOut.py:636 msgid "[success] Any form CutOut operation finished." msgstr "[success] Jede Form CutOut-Operation ist abgeschlossen." -#: flatcamTools/ToolCutOut.py:487 flatcamTools/ToolPaint.py:768 -#: flatcamTools/ToolPanelize.py:299 +#: flatcamTools/ToolCutOut.py:503 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:501 flatcamTools/ToolCutOut.py:621 -#: flatcamTools/ToolCutOut.py:726 +#: flatcamTools/ToolCutOut.py:517 flatcamTools/ToolCutOut.py:656 +#: flatcamTools/ToolCutOut.py:761 msgid "" "[ERROR_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." @@ -9877,38 +10103,38 @@ msgstr "" "[ERROR_NOTCL] Werkzeugdurchmesser ist Nullwert. Ändern Sie es in eine " "positive reelle Zahl." -#: flatcamTools/ToolCutOut.py:606 +#: flatcamTools/ToolCutOut.py:641 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:647 +#: flatcamTools/ToolCutOut.py:682 msgid "Making manual bridge gap..." msgstr "Manuelle Brückenlücke herstellen ..." -#: flatcamTools/ToolCutOut.py:670 +#: flatcamTools/ToolCutOut.py:705 #, python-format msgid "[ERROR_NOTCL] Could not retrieve Geometry object: %s" msgstr "[ERROR_NOTCL] Das Geometrieobjekt konnte nicht abgerufen werden:%s" -#: flatcamTools/ToolCutOut.py:674 +#: flatcamTools/ToolCutOut.py:709 #, 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:684 +#: flatcamTools/ToolCutOut.py:719 msgid "[success] Added manual Bridge Gap." msgstr "[success] Manuelle Brückenlücke hinzugefügt." -#: flatcamTools/ToolCutOut.py:701 +#: flatcamTools/ToolCutOut.py:736 #, python-format msgid "[ERROR_NOTCL] Could not retrieve Gerber object: %s" msgstr "[ERROR_NOTCL] Gerber-Objekt konnte nicht abgerufen werden:%s" -#: flatcamTools/ToolCutOut.py:705 +#: flatcamTools/ToolCutOut.py:740 msgid "" "[ERROR_NOTCL] There is no Gerber object selected for Cutout.\n" "Select one and try again." @@ -9916,7 +10142,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:710 +#: flatcamTools/ToolCutOut.py:745 msgid "" "[ERROR_NOTCL] The selected object has to be of Gerber type.\n" "Select a Gerber file and try again." @@ -10206,7 +10432,7 @@ msgstr "Filmobjekt:" msgid "Object for which to create the film." msgstr "Objekt, für das der Film erstellt werden soll." -#: flatcamTools/ToolFilm.py:89 flatcamTools/ToolPanelize.py:89 +#: flatcamTools/ToolFilm.py:89 flatcamTools/ToolPanelize.py:111 msgid "Box Type:" msgstr "Box-Typ:" @@ -10222,7 +10448,7 @@ msgstr "" "bestimmt den Objekttyp\n" "im Kombinationsfeld Box-Objekt." -#: flatcamTools/ToolFilm.py:104 flatcamTools/ToolPanelize.py:104 +#: flatcamTools/ToolFilm.py:104 flatcamTools/ToolPanelize.py:126 msgid "Box Object:" msgstr "Box-Objekt:" @@ -10729,16 +10955,16 @@ msgstr "[WARNING_NOTCL] Open PDF abgebrochen." msgid "Parsing PDF file ..." msgstr "PDF-Datei wird analysiert ..." -#: flatcamTools/ToolPDF.py:264 flatcamTools/ToolPDF.py:300 +#: flatcamTools/ToolPDF.py:265 flatcamTools/ToolPDF.py:338 #, python-format msgid "Rendering PDF layer #%d ..." msgstr "PDF-Ebene rendern #%d ..." -#: flatcamTools/ToolPDF.py:268 flatcamTools/ToolPDF.py:304 +#: flatcamTools/ToolPDF.py:269 flatcamTools/ToolPDF.py:342 msgid "[ERROR_NOTCL] Open PDF file failed." msgstr "[ERROR_NOTCL] Fehler beim Öffnen der PDF-Datei." -#: flatcamTools/ToolPDF.py:273 flatcamTools/ToolPDF.py:309 +#: flatcamTools/ToolPDF.py:274 flatcamTools/ToolPDF.py:347 #, python-format msgid "[success] Rendered: %s" msgstr "[success] Gerendert: %s" @@ -10944,7 +11170,31 @@ msgstr "" "Objekt, das in Panels gesetzt werden soll. Dies bedeutet, dass es wird\n" "in einem Array von Zeilen und Spalten dupliziert werden." -#: flatcamTools/ToolPanelize.py:91 +#: flatcamTools/ToolPanelize.py:86 +msgid "Penelization Reference:" +msgstr " Penelisierungshinweis:" + +#: flatcamTools/ToolPanelize.py:88 +msgid "" +"Choose the reference for panelization:\n" +"- Object = the bounding box of a different object\n" +"- Bounding Box = the bounding box of the object to be panelized\n" +"\n" +"The reference is useful when doing panelization for more than one\n" +"object. The spacings (really offsets) will be applied in reference\n" +"to this reference object therefore maintaining the panelized\n" +"objects in sync." +msgstr "" +"Wählen Sie die Referenz für die Panelisierung:\n" +"- Objekt = der Begrenzungsrahmen eines anderen Objekts\n" +"- Begrenzungsrahmen = Der Begrenzungsrahmen des zu verkleidenden Objekts\n" +"\n" +"Diese Referenz ist nützlich, wenn Sie Panels für mehr als einen erstellen\n" +"Objekt. Die Abstände (wirklich Versätze) werden als Referenz angewendet\n" +"Zu diesem Referenzobjekt gehört daher die Beibehaltung der getäfelten\n" +"Objekte synchronisieren." + +#: flatcamTools/ToolPanelize.py:113 msgid "" "Specify the type of object to be used as an container for\n" "panelization. It can be: Gerber or Geometry type.\n" @@ -10956,7 +11206,7 @@ msgstr "" "Die Auswahl hier bestimmt den Objekttyp\n" "im Kombinationsfeld Box-Objekt." -#: flatcamTools/ToolPanelize.py:106 +#: flatcamTools/ToolPanelize.py:128 msgid "" "The actual object that is used a container for the\n" " selected object that is to be panelized." @@ -10964,7 +11214,31 @@ msgstr "" "Das eigentliche Objekt, für das ein Container verwendet wird\n" "ausgewähltes Objekt, das in Panelisiert werden soll." -#: flatcamTools/ToolPanelize.py:150 +#: flatcamTools/ToolPanelize.py:134 +msgid "Panel Data:" +msgstr " Paneldaten:" + +#: flatcamTools/ToolPanelize.py:136 +msgid "" +"This informations will shape the resulting panel.\n" +"The number of rows and columns will set how many\n" +"duplicates of the original geometry will be generated.\n" +"\n" +"The spacings will set the distance between any two\n" +"elements of the panel array." +msgstr "" +"Diese Informationen formen das resultierende Panel.\n" +"Die Anzahl der Zeilen und Spalten legt fest, wie viele\n" +"Duplikate der ursprünglichen Geometrie werden generiert.\n" +"\n" +"Die Abstände bestimmen den Abstand zwischen zwei Elementen\n" +"Elemente des Panel-Arrays." + +#: flatcamTools/ToolPanelize.py:183 +msgid "Panel Type:" +msgstr "Panel-Typ:" + +#: flatcamTools/ToolPanelize.py:185 msgid "" "Choose the type of object for the panel object:\n" "- Geometry\n" @@ -10974,15 +11248,15 @@ msgstr "" "- Geometrie\n" "- Gerber" -#: flatcamTools/ToolPanelize.py:158 +#: flatcamTools/ToolPanelize.py:193 msgid "Constrain panel within:" msgstr "Panel einschränken innerhalb:" -#: flatcamTools/ToolPanelize.py:192 +#: flatcamTools/ToolPanelize.py:227 msgid "Panelize Object" msgstr "Panelize Objekt" -#: flatcamTools/ToolPanelize.py:194 +#: flatcamTools/ToolPanelize.py:229 msgid "" "Panelize the specified object around the specified box.\n" "In other words it creates multiple copies of the source object,\n" @@ -10992,12 +11266,12 @@ msgstr "" "Mit anderen Worten, es erstellt mehrere Kopien des Quellobjekts,\n" "in einem 2D-Array von Zeilen und Spalten angeordnet." -#: flatcamTools/ToolPanelize.py:311 +#: flatcamTools/ToolPanelize.py:370 #, python-format -msgid "[WARNING]No object Box. Using instead %s" -msgstr "[WARNING] Kein Objektfeld. Stattdessen verwenden %s" +msgid "[WARNING_NOTCL]No object Box. Using instead %s" +msgstr "[WARNING_NOTCL] Keine Objektbox. Verwenden Sie stattdessen%s" -#: flatcamTools/ToolPanelize.py:392 +#: flatcamTools/ToolPanelize.py:453 msgid "" "[ERROR_NOTCL] Columns or Rows are zero value. Change them to a positive " "integer." @@ -11005,15 +11279,15 @@ msgstr "" "[ERROR_NOTCL] Spalten oder Zeilen haben den Wert Null. Ändern Sie sie in " "eine positive ganze Zahl." -#: flatcamTools/ToolPanelize.py:417 flatcamTools/ToolPanelize.py:526 +#: flatcamTools/ToolPanelize.py:478 flatcamTools/ToolPanelize.py:635 msgid "Generating panel ... Please wait." msgstr "Panel wird generiert ... Bitte warten Sie." -#: flatcamTools/ToolPanelize.py:520 +#: flatcamTools/ToolPanelize.py:628 msgid "[success] Panel done..." msgstr "[success] Panel fertig ..." -#: flatcamTools/ToolPanelize.py:523 +#: flatcamTools/ToolPanelize.py:631 #, python-brace-format msgid "" "[WARNING] Too big for the constrain area. Final panel has {col} columns and " @@ -11022,7 +11296,7 @@ msgstr "" "[WARNING] Für den Constrain-Bereich zu groß. Das letzte Panel enthält {col} " "Spalten und {row} Zeilen" -#: flatcamTools/ToolPanelize.py:531 +#: flatcamTools/ToolPanelize.py:640 msgid "[success] Panel created successfully." msgstr "[success] Panel erfolgreich erstellt" @@ -11487,7 +11761,7 @@ msgstr "[ERROR] ToolSolderPaste.on_view_gcode() -->%s" msgid "Export GCode ..." msgstr "GCode exportieren ..." -#: flatcamTools/ToolSolderPaste.py:1394 +#: flatcamTools/ToolSolderPaste.py:1396 #, python-format msgid "[success] Solder paste dispenser GCode file saved to: %s" msgstr "[success] GCode-Datei für Lötpastendispenser in gespeichert: %s" @@ -11568,48 +11842,48 @@ msgstr "" "Entfernt den vom Subtraktor belegten Bereich\n" "Geometrie aus der Zielgeometrie." -#: flatcamTools/ToolSub.py:212 +#: flatcamTools/ToolSub.py:215 msgid "Sub Tool" msgstr "Sub. Werkzeug" -#: flatcamTools/ToolSub.py:227 flatcamTools/ToolSub.py:357 +#: flatcamTools/ToolSub.py:230 flatcamTools/ToolSub.py:421 msgid "[ERROR_NOTCL] No Target object loaded." msgstr "[ERROR_NOTCL]Kein Zielobjekt geladen." -#: flatcamTools/ToolSub.py:239 flatcamTools/ToolSub.py:369 +#: flatcamTools/ToolSub.py:242 flatcamTools/ToolSub.py:433 msgid "[ERROR_NOTCL] No Substractor object loaded." msgstr "[ERROR_NOTCL] Kein Substractor-Objekt geladen." -#: flatcamTools/ToolSub.py:277 +#: flatcamTools/ToolSub.py:294 #, python-format msgid "Parsing aperture %s geometry ..." msgstr "Analyse der Geometrie der Blende%s ..." -#: flatcamTools/ToolSub.py:331 flatcamTools/ToolSub.py:475 +#: flatcamTools/ToolSub.py:396 flatcamTools/ToolSub.py:539 msgid "Generating new object ..." msgstr "Neues Objekt erzeugen ..." -#: flatcamTools/ToolSub.py:334 flatcamTools/ToolSub.py:478 +#: flatcamTools/ToolSub.py:399 flatcamTools/ToolSub.py:542 msgid "[ERROR_NOTCL] Generating new object failed." msgstr "[ERROR_NOTCL] Das Generieren eines neuen Objekts ist fehlgeschlagen." -#: flatcamTools/ToolSub.py:339 flatcamTools/ToolSub.py:483 +#: flatcamTools/ToolSub.py:403 flatcamTools/ToolSub.py:547 #, python-format msgid "[success] Created: %s" msgstr "[success] Erstellt: %s" -#: flatcamTools/ToolSub.py:380 +#: flatcamTools/ToolSub.py:444 msgid "" "[ERROR_NOTCL] Currently, the Substractor geometry cannot be of type Multigeo." msgstr "" "[ERROR_NOTCL] Derzeit kann die Substractor-Geometrie nicht vom Typ Multigeo " "sein." -#: flatcamTools/ToolSub.py:425 +#: flatcamTools/ToolSub.py:489 msgid "Parsing solid_geometry ..." msgstr "Analyse von solid_geometry ..." -#: flatcamTools/ToolSub.py:427 +#: flatcamTools/ToolSub.py:491 #, python-format msgid "Parsing tool %s geometry ..." msgstr "Analyse-Tool %s-Geometrie ..." @@ -11685,51 +11959,87 @@ msgstr "" msgid "CNCJob objects can't be rotated." msgstr "CNCJob-Objekte können nicht gedreht werden." -#: flatcamTools/ToolTransform.py:674 +#: flatcamTools/ToolTransform.py:673 msgid "[success] Rotate done ..." msgstr "[success] Drehen fertig ..." -#: flatcamTools/ToolTransform.py:689 +#: flatcamTools/ToolTransform.py:688 msgid "[WARNING_NOTCL] No object selected. Please Select an object to flip!" msgstr "" "[WARNING_NOTCL] Kein Objekt ausgewählt. Bitte wählen Sie ein Objekt zum " "Umdrehen!" -#: flatcamTools/ToolTransform.py:724 +#: flatcamTools/ToolTransform.py:723 msgid "CNCJob objects can't be mirrored/flipped." msgstr "CNCJob-Objekte können nicht gespiegelt / gespiegelt werden." -#: flatcamTools/ToolTransform.py:759 +#: flatcamTools/ToolTransform.py:757 msgid "" "[WARNING_NOTCL] No object selected. Please Select an object to shear/skew!" msgstr "" "[WARNING_NOTCL] Kein Objekt ausgewählt. Bitte wählen Sie ein Objekt zum " "Scheren / Schrägstellen!" -#: flatcamTools/ToolTransform.py:781 +#: flatcamTools/ToolTransform.py:779 msgid "CNCJob objects can't be skewed." msgstr "CNCJob-Objekte können nicht verzerrt werden." -#: flatcamTools/ToolTransform.py:808 +#: flatcamTools/ToolTransform.py:806 msgid "[WARNING_NOTCL] No object selected. Please Select an object to scale!" msgstr "" "[WARNING_NOTCL] Kein Objekt ausgewählt. Bitte wählen Sie ein zu skalierendes " "Objekt!" -#: flatcamTools/ToolTransform.py:841 +#: flatcamTools/ToolTransform.py:839 msgid "CNCJob objects can't be scaled." msgstr "CNCJob-Objekte können nicht skaliert werden." -#: flatcamTools/ToolTransform.py:861 +#: flatcamTools/ToolTransform.py:858 msgid "[WARNING_NOTCL] No object selected. Please Select an object to offset!" msgstr "" "[WARNING_NOTCL] Kein Objekt ausgewählt. Bitte wählen Sie ein Objekt zum " "Offset aus!" -#: flatcamTools/ToolTransform.py:882 +#: flatcamTools/ToolTransform.py:867 msgid "CNCJob objects can't be offseted." msgstr "CNCJob-Objekte können nicht versetzt werden." +#~ msgid "[WARNING_NOTCL] Move cancelled. No shape selected." +#~ msgstr "[WARNING_NOTCL] Umzug abgebrochen. Keine Form ausgewählt." + +#~ msgid "Click on the Destination point..." +#~ msgstr "Klicken Sie auf den Zielpunkt ..." + +#~ msgid "Copy as &Geom" +#~ msgstr "Als Geom kopieren" + +#~ msgid "Ap. Scale Factor:" +#~ msgstr "Öffnungsmaßstab:" + +#~ msgid "" +#~ "Change the size of the selected apertures.\n" +#~ "Factor by which to multiply\n" +#~ "geometric features of this object." +#~ msgstr "" +#~ "Ändern Sie die Größe der ausgewählten Blenden.\n" +#~ "Faktor, mit dem sich multiplizieren soll\n" +#~ "geometrische Merkmale dieses Objekts." + +#~ msgid "Ap. Buffer Factor:" +#~ msgstr "Blendenpufferfaktor:" + +#~ msgid "" +#~ "Change the size of the selected apertures.\n" +#~ "Factor by which to expand/shrink\n" +#~ "geometric features of this object." +#~ msgstr "" +#~ "Ändern Sie die Größe der ausgewählten Blenden.\n" +#~ "Faktor, um den / das erweitert / verkleinert werden soll\n" +#~ "geometrische Merkmale dieses Objekts." + +#~ msgid "[WARNING]No object Box. Using instead %s" +#~ msgstr "[WARNING] Kein Objektfeld. Stattdessen verwenden %s" + #~ msgid "Path" #~ msgstr "Pfad" diff --git a/locale/en/LC_MESSAGES/strings.mo b/locale/en/LC_MESSAGES/strings.mo index e2fbb2eb7a12bf724fc3a3d32f4507d9316e310c..89c040c9063f38f047bcecb947fdc97585f6bc50 100644 GIT binary patch delta 43952 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 delta 38905 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 diff --git a/locale/en/LC_MESSAGES/strings.po b/locale/en/LC_MESSAGES/strings.po index 32ae3e54..d38038aa 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-05-01 16:01+0300\n" -"PO-Revision-Date: 2019-05-01 16:02+0300\n" +"POT-Creation-Date: 2019-05-20 01:44+0300\n" +"PO-Revision-Date: 2019-05-20 01:46+0300\n" "Last-Translator: \n" "Language-Team: \n" "Language: en\n" @@ -22,29 +22,29 @@ msgstr "" "X-Poedit-SearchPathExcluded-1: doc\n" "X-Poedit-SearchPathExcluded-2: tests\n" -#: FlatCAMApp.py:865 +#: FlatCAMApp.py:898 msgid "[ERROR] Could not find the Language files. The App strings are missing." msgstr "" "[ERROR] Could not find the Language files. The App strings are missing." -#: FlatCAMApp.py:1921 ObjectCollection.py:80 flatcamTools/ToolImage.py:213 +#: FlatCAMApp.py:1962 ObjectCollection.py:80 flatcamTools/ToolImage.py:213 #: flatcamTools/ToolPcbWizard.py:299 flatcamTools/ToolPcbWizard.py:322 msgid "Open cancelled." msgstr "Open cancelled." -#: FlatCAMApp.py:1935 +#: FlatCAMApp.py:1976 msgid "Open Config file failed." msgstr "Open Config file failed." -#: FlatCAMApp.py:1949 +#: FlatCAMApp.py:1990 msgid "Open Script file failed." msgstr "Open Script file failed." -#: FlatCAMApp.py:2140 +#: FlatCAMApp.py:2181 msgid "[WARNING_NOTCL] Select a Geometry, Gerber or Excellon Object to edit." msgstr "[WARNING_NOTCL] Select a Geometry, Gerber or Excellon Object to edit." -#: FlatCAMApp.py:2150 +#: FlatCAMApp.py:2191 msgid "" "[WARNING_NOTCL] Simultanoeus editing of tools geometry in a MultiGeo " "Geometry is not possible.\n" @@ -54,96 +54,96 @@ msgstr "" "Geometry is not possible.\n" "Edit only one geometry at a time." -#: FlatCAMApp.py:2188 +#: FlatCAMApp.py:2235 msgid "[WARNING_NOTCL] Editor is activated ..." msgstr "[WARNING_NOTCL] Editor is activated ..." -#: FlatCAMApp.py:2207 +#: FlatCAMApp.py:2254 msgid "Do you want to save the edited object?" msgstr "Do you want to save the edited object?" -#: FlatCAMApp.py:2208 flatcamGUI/FlatCAMGUI.py:1604 +#: FlatCAMApp.py:2255 flatcamGUI/FlatCAMGUI.py:1618 msgid "Close Editor" msgstr "Close Editor" -#: FlatCAMApp.py:2211 FlatCAMApp.py:3302 FlatCAMApp.py:5661 -#: FlatCAMTranslation.py:89 flatcamGUI/FlatCAMGUI.py:3698 +#: FlatCAMApp.py:2258 FlatCAMApp.py:3349 FlatCAMApp.py:5799 +#: FlatCAMTranslation.py:89 flatcamGUI/FlatCAMGUI.py:3726 msgid "Yes" msgstr "Yes" -#: FlatCAMApp.py:2212 FlatCAMApp.py:3303 FlatCAMApp.py:5662 -#: FlatCAMTranslation.py:90 flatcamGUI/FlatCAMGUI.py:3699 +#: FlatCAMApp.py:2259 FlatCAMApp.py:3350 FlatCAMApp.py:5800 +#: FlatCAMTranslation.py:90 flatcamGUI/FlatCAMGUI.py:3727 msgid "No" msgstr "No" -#: FlatCAMApp.py:2213 FlatCAMApp.py:3304 FlatCAMApp.py:3636 FlatCAMApp.py:5663 +#: FlatCAMApp.py:2260 FlatCAMApp.py:3351 FlatCAMApp.py:3683 FlatCAMApp.py:5801 msgid "Cancel" msgstr "Cancel" -#: FlatCAMApp.py:2235 FlatCAMApp.py:2260 +#: FlatCAMApp.py:2287 msgid "[WARNING] Object empty after edit." msgstr "[WARNING] Object empty after edit." -#: FlatCAMApp.py:2269 FlatCAMApp.py:2283 FlatCAMApp.py:2295 +#: FlatCAMApp.py:2309 FlatCAMApp.py:2328 FlatCAMApp.py:2340 msgid "[WARNING_NOTCL] Select a Gerber, Geometry or Excellon Object to update." msgstr "" "[WARNING_NOTCL] Select a Gerber, Geometry or Excellon Object to update." -#: FlatCAMApp.py:2272 +#: FlatCAMApp.py:2312 #, python-format msgid "[selected] %s is updated, returning to App..." msgstr "[selected] %s is updated, returning to App..." -#: FlatCAMApp.py:2632 +#: FlatCAMApp.py:2677 msgid "[ERROR] Could not load defaults file." msgstr "[ERROR] Could not load defaults file." -#: FlatCAMApp.py:2644 +#: FlatCAMApp.py:2689 msgid "[ERROR] Failed to parse defaults file." msgstr "[ERROR] Failed to parse defaults file." -#: FlatCAMApp.py:2665 FlatCAMApp.py:2668 +#: FlatCAMApp.py:2710 FlatCAMApp.py:2713 msgid "Import FlatCAM Preferences" msgstr "Import FlatCAM Preferences" -#: FlatCAMApp.py:2673 +#: FlatCAMApp.py:2718 msgid "[WARNING_NOTCL] FlatCAM preferences import cancelled." msgstr "[WARNING_NOTCL] FlatCAM preferences import cancelled." -#: FlatCAMApp.py:2681 FlatCAMApp.py:2728 FlatCAMApp.py:3181 +#: FlatCAMApp.py:2726 FlatCAMApp.py:2773 FlatCAMApp.py:3228 msgid "[ERROR_NOTCL] Could not load defaults file." msgstr "[ERROR_NOTCL] Could not load defaults file." -#: FlatCAMApp.py:2689 FlatCAMApp.py:3190 +#: FlatCAMApp.py:2734 FlatCAMApp.py:3237 msgid "[ERROR_NOTCL] Failed to parse defaults file." msgstr "[ERROR_NOTCL] Failed to parse defaults file." -#: FlatCAMApp.py:2692 +#: FlatCAMApp.py:2737 #, python-format msgid "[success] Imported Defaults from %s" msgstr "[success] Imported Defaults from %s" -#: FlatCAMApp.py:2702 FlatCAMApp.py:2706 +#: FlatCAMApp.py:2747 FlatCAMApp.py:2751 msgid "Export FlatCAM Preferences" msgstr "Export FlatCAM Preferences" -#: FlatCAMApp.py:2712 +#: FlatCAMApp.py:2757 msgid "[WARNING_NOTCL] FlatCAM preferences export cancelled." msgstr "[WARNING_NOTCL] FlatCAM preferences export cancelled." -#: FlatCAMApp.py:2747 FlatCAMApp.py:3235 +#: FlatCAMApp.py:2792 FlatCAMApp.py:3282 msgid "[ERROR_NOTCL] Failed to write defaults to file." msgstr "[ERROR_NOTCL] Failed to write defaults to file." -#: FlatCAMApp.py:2799 +#: FlatCAMApp.py:2845 msgid "[ERROR_NOTCL] Failed to open recent files file for writing." msgstr "[ERROR_NOTCL] Failed to open recent files file for writing." -#: FlatCAMApp.py:2884 camlib.py:4503 +#: FlatCAMApp.py:2930 camlib.py:4453 msgid "[ERROR_NOTCL] An internal error has ocurred. See shell.\n" msgstr "[ERROR_NOTCL] An internal error has ocurred. See shell.\n" -#: FlatCAMApp.py:2885 +#: FlatCAMApp.py:2931 #, python-brace-format msgid "" "Object ({kind}) failed because: {error} \n" @@ -152,11 +152,11 @@ msgstr "" "Object ({kind}) failed because: {error} \n" "\n" -#: FlatCAMApp.py:2905 +#: FlatCAMApp.py:2951 msgid "Converting units to " msgstr "Converting units to " -#: FlatCAMApp.py:2983 FlatCAMApp.py:2986 FlatCAMApp.py:2989 FlatCAMApp.py:2992 +#: FlatCAMApp.py:3030 FlatCAMApp.py:3033 FlatCAMApp.py:3036 FlatCAMApp.py:3039 #, python-brace-format msgid "" "[selected] {kind} created/selected: {name}{name}" -#: FlatCAMApp.py:3086 +#: FlatCAMApp.py:3133 #, python-brace-format msgid "" "FlatCAM
Version {version} {beta} ({date}) - " @@ -188,31 +188,31 @@ msgstr "" "a>
DOWNLOAD area here.
" -#: FlatCAMApp.py:3239 +#: FlatCAMApp.py:3286 msgid "[success] Defaults saved." msgstr "[success] Defaults saved." -#: FlatCAMApp.py:3260 +#: FlatCAMApp.py:3307 msgid "[ERROR_NOTCL] Could not load factory defaults file." msgstr "[ERROR_NOTCL] Could not load factory defaults file." -#: FlatCAMApp.py:3269 +#: FlatCAMApp.py:3316 msgid "[ERROR_NOTCL] Failed to parse factory defaults file." msgstr "[ERROR_NOTCL] Failed to parse factory defaults file." -#: FlatCAMApp.py:3283 +#: FlatCAMApp.py:3330 msgid "[ERROR_NOTCL] Failed to write factory defaults to file." msgstr "[ERROR_NOTCL] Failed to write factory defaults to file." -#: FlatCAMApp.py:3287 +#: FlatCAMApp.py:3334 msgid "Factory defaults saved." msgstr "Factory defaults saved." -#: FlatCAMApp.py:3292 flatcamGUI/FlatCAMGUI.py:3088 +#: FlatCAMApp.py:3339 flatcamGUI/FlatCAMGUI.py:3103 msgid "[WARNING_NOTCL] Application is saving the project. Please wait ..." msgstr "[WARNING_NOTCL] Application is saving the project. Please wait ..." -#: FlatCAMApp.py:3297 +#: FlatCAMApp.py:3344 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:3300 FlatCAMApp.py:5659 +#: FlatCAMApp.py:3347 FlatCAMApp.py:5797 msgid "Save changes" msgstr "Save changes" -#: FlatCAMApp.py:3367 +#: FlatCAMApp.py:3414 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:3408 +#: FlatCAMApp.py:3455 msgid "[ERROR_NOTCL] Failed. Excellon joining works only on Excellon objects." msgstr "[ERROR_NOTCL] Failed. Excellon joining works only on Excellon objects." -#: FlatCAMApp.py:3430 +#: FlatCAMApp.py:3477 msgid "[ERROR_NOTCL] Failed. Gerber joining works only on Gerber objects." msgstr "[ERROR_NOTCL] Failed. Gerber joining works only on Gerber objects." -#: FlatCAMApp.py:3445 FlatCAMApp.py:3470 +#: FlatCAMApp.py:3492 FlatCAMApp.py:3517 msgid "[ERROR_NOTCL] Failed. Select a Geometry Object and try again." msgstr "[ERROR_NOTCL] Failed. Select a Geometry Object and try again." -#: FlatCAMApp.py:3449 FlatCAMApp.py:3474 +#: FlatCAMApp.py:3496 FlatCAMApp.py:3521 #, python-format msgid "[ERROR_NOTCL] Expected a FlatCAMGeometry, got %s" msgstr "[ERROR_NOTCL] Expected a FlatCAMGeometry, got %s" -#: FlatCAMApp.py:3462 +#: FlatCAMApp.py:3509 msgid "[success] A Geometry object was converted to MultiGeo type." msgstr "[success] A Geometry object was converted to MultiGeo type." -#: FlatCAMApp.py:3488 +#: FlatCAMApp.py:3535 msgid "[success] A Geometry object was converted to SingleGeo type." msgstr "[success] A Geometry object was converted to SingleGeo type." -#: FlatCAMApp.py:3635 FlatCAMApp.py:4444 FlatCAMApp.py:5926 FlatCAMApp.py:5937 -#: FlatCAMApp.py:6123 FlatCAMApp.py:6133 +#: FlatCAMApp.py:3682 FlatCAMApp.py:4495 FlatCAMApp.py:6064 FlatCAMApp.py:6075 +#: FlatCAMApp.py:6312 FlatCAMApp.py:6322 msgid "Ok" msgstr "Ok" -#: FlatCAMApp.py:3676 +#: FlatCAMApp.py:3724 #, python-format msgid "[success] Converted units to %s" msgstr "[success] Converted units to %s" -#: FlatCAMApp.py:3687 +#: FlatCAMApp.py:3735 msgid "[WARNING_NOTCL] Units conversion cancelled." msgstr "[WARNING_NOTCL] Units conversion cancelled." -#: FlatCAMApp.py:4313 +#: FlatCAMApp.py:4364 msgid "Open file" msgstr "Open file" -#: FlatCAMApp.py:4344 FlatCAMApp.py:4349 +#: FlatCAMApp.py:4395 FlatCAMApp.py:4400 msgid "Export G-Code ..." msgstr "Export G-Code ..." -#: FlatCAMApp.py:4352 +#: FlatCAMApp.py:4403 msgid "[WARNING_NOTCL] Export Code cancelled." msgstr "[WARNING_NOTCL] Export Code cancelled." -#: FlatCAMApp.py:4362 +#: FlatCAMApp.py:4413 msgid "[WARNING] No such file or directory" msgstr "[WARNING] No such file or directory" -#: FlatCAMApp.py:4369 +#: FlatCAMApp.py:4420 #, python-format msgid "Saved to: %s" msgstr "Saved to: %s" -#: FlatCAMApp.py:4432 FlatCAMApp.py:4465 FlatCAMApp.py:4476 FlatCAMApp.py:4487 +#: FlatCAMApp.py:4483 FlatCAMApp.py:4516 FlatCAMApp.py:4527 FlatCAMApp.py:4538 #: 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:4437 FlatCAMApp.py:4470 FlatCAMApp.py:4481 FlatCAMApp.py:4492 -#: flatcamGUI/FlatCAMGUI.py:2983 +#: FlatCAMApp.py:4488 FlatCAMApp.py:4521 FlatCAMApp.py:4532 FlatCAMApp.py:4543 +#: flatcamGUI/FlatCAMGUI.py:2998 msgid "[WARNING_NOTCL] Adding Tool cancelled ..." msgstr "[WARNING_NOTCL] Adding Tool cancelled ..." -#: FlatCAMApp.py:4440 +#: FlatCAMApp.py:4491 msgid "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." @@ -322,117 +322,125 @@ msgstr "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." -#: FlatCAMApp.py:4546 +#: FlatCAMApp.py:4604 msgid "Object(s) deleted ..." msgstr "Object(s) deleted ..." -#: FlatCAMApp.py:4550 +#: FlatCAMApp.py:4608 msgid "Failed. No object(s) selected..." msgstr "Failed. No object(s) selected..." -#: FlatCAMApp.py:4552 +#: FlatCAMApp.py:4610 msgid "Save the work in Editor and try again ..." msgstr "Save the work in Editor and try again ..." -#: FlatCAMApp.py:4565 +#: FlatCAMApp.py:4623 msgid "Click to set the origin ..." msgstr "Click to set the origin ..." -#: FlatCAMApp.py:4577 +#: FlatCAMApp.py:4635 msgid "Jump to ..." msgstr "Jump to ..." -#: FlatCAMApp.py:4578 +#: FlatCAMApp.py:4636 msgid "Enter the coordinates in format X,Y:" msgstr "Enter the coordinates in format X,Y:" -#: FlatCAMApp.py:4585 +#: FlatCAMApp.py:4643 msgid "Wrong coordinates. Enter coordinates in format: X,Y" msgstr "Wrong coordinates. Enter coordinates in format: X,Y" -#: FlatCAMApp.py:4603 flatcamEditors/FlatCAMGeoEditor.py:3485 -#: flatcamEditors/FlatCAMGrbEditor.py:790 -#: flatcamEditors/FlatCAMGrbEditor.py:885 -#: flatcamEditors/FlatCAMGrbEditor.py:1122 -#: flatcamEditors/FlatCAMGrbEditor.py:1350 -#: flatcamEditors/FlatCAMGrbEditor.py:3318 -#: flatcamEditors/FlatCAMGrbEditor.py:3332 flatcamGUI/FlatCAMGUI.py:2397 -#: flatcamGUI/FlatCAMGUI.py:2409 +#: FlatCAMApp.py:4661 flatcamEditors/FlatCAMExcEditor.py:2285 +#: flatcamEditors/FlatCAMExcEditor.py:2292 +#: flatcamEditors/FlatCAMGeoEditor.py:3555 +#: flatcamEditors/FlatCAMGeoEditor.py:3569 +#: flatcamEditors/FlatCAMGrbEditor.py:1037 +#: flatcamEditors/FlatCAMGrbEditor.py:1138 +#: flatcamEditors/FlatCAMGrbEditor.py:1399 +#: flatcamEditors/FlatCAMGrbEditor.py:1649 +#: flatcamEditors/FlatCAMGrbEditor.py:3784 +#: flatcamEditors/FlatCAMGrbEditor.py:3798 flatcamGUI/FlatCAMGUI.py:2412 +#: flatcamGUI/FlatCAMGUI.py:2424 msgid "[success] Done." msgstr "[success] Done." -#: FlatCAMApp.py:4767 +#: FlatCAMApp.py:4794 FlatCAMApp.py:4863 +#| msgid "[WARNING_NOTCL] No object selected. Please Select an object to flip!" +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 msgid "[success] Origin set ..." msgstr "[success] Origin set ..." -#: FlatCAMApp.py:4786 +#: FlatCAMApp.py:4924 msgid "Preferences" msgstr "Preferences" -#: FlatCAMApp.py:4806 +#: FlatCAMApp.py:4944 msgid "[WARNING_NOTCL] No object selected to Flip on Y axis." msgstr "[WARNING_NOTCL] No object selected to Flip on Y axis." -#: FlatCAMApp.py:4831 +#: FlatCAMApp.py:4969 msgid "[success] Flip on Y axis done." msgstr "[success] Flip on Y axis done." -#: FlatCAMApp.py:4833 FlatCAMApp.py:4873 -#: flatcamEditors/FlatCAMGeoEditor.py:1354 -#: flatcamEditors/FlatCAMGrbEditor.py:4631 flatcamTools/ToolTransform.py:750 +#: FlatCAMApp.py:4971 FlatCAMApp.py:5011 +#: flatcamEditors/FlatCAMGeoEditor.py:1356 +#: flatcamEditors/FlatCAMGrbEditor.py:5165 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:4846 +#: FlatCAMApp.py:4984 msgid "[WARNING_NOTCL] No object selected to Flip on X axis." msgstr "[WARNING_NOTCL] No object selected to Flip on X axis." -#: FlatCAMApp.py:4871 +#: FlatCAMApp.py:5009 msgid "[success] Flip on X axis done." msgstr "[success] Flip on X axis done." -#: FlatCAMApp.py:4886 +#: FlatCAMApp.py:5024 msgid "[WARNING_NOTCL] No object selected to Rotate." msgstr "[WARNING_NOTCL] No object selected to Rotate." -#: FlatCAMApp.py:4889 FlatCAMApp.py:4934 FlatCAMApp.py:4965 +#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 msgid "Transform" msgstr "Transform" -#: FlatCAMApp.py:4889 FlatCAMApp.py:4934 FlatCAMApp.py:4965 +#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 msgid "Enter the Angle value:" msgstr "Enter the Angle value:" -#: FlatCAMApp.py:4919 +#: FlatCAMApp.py:5057 msgid "[success] Rotation done." msgstr "[success] Rotation done." -#: FlatCAMApp.py:4921 flatcamEditors/FlatCAMGeoEditor.py:1297 -#: flatcamEditors/FlatCAMGrbEditor.py:4574 flatcamTools/ToolTransform.py:678 +#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:1299 +#: flatcamEditors/FlatCAMGrbEditor.py:5096 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:4932 +#: FlatCAMApp.py:5070 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:4953 +#: FlatCAMApp.py:5091 msgid "[success] Skew on X axis done." msgstr "[success] Skew on X axis done." -#: FlatCAMApp.py:4963 +#: FlatCAMApp.py:5101 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:4984 +#: FlatCAMApp.py:5122 msgid "[success] Skew on Y axis done." msgstr "[success] Skew on Y axis done." -#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:936 -#: flatcamEditors/FlatCAMGrbEditor.py:1830 -#: flatcamEditors/FlatCAMGrbEditor.py:4204 flatcamGUI/ObjectUI.py:988 +#: FlatCAMApp.py:5197 flatcamEditors/FlatCAMGeoEditor.py:938 +#: flatcamEditors/FlatCAMGrbEditor.py:2223 +#: flatcamEditors/FlatCAMGrbEditor.py:4687 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 @@ -440,26 +448,24 @@ msgstr "[success] Skew on Y axis done." msgid "Add" msgstr "Add" -#: FlatCAMApp.py:5060 FlatCAMObj.py:3008 -#: flatcamEditors/FlatCAMGrbEditor.py:1835 flatcamGUI/FlatCAMGUI.py:519 -#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1602 -#: flatcamGUI/FlatCAMGUI.py:1934 flatcamGUI/ObjectUI.py:1004 +#: FlatCAMApp.py:5198 FlatCAMObj.py:3302 +#: flatcamEditors/FlatCAMGrbEditor.py:2228 flatcamGUI/FlatCAMGUI.py:532 +#: flatcamGUI/FlatCAMGUI.py:726 flatcamGUI/FlatCAMGUI.py:1616 +#: flatcamGUI/FlatCAMGUI.py:1948 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:5072 -#| msgid "New Script ..." +#: FlatCAMApp.py:5210 msgid "New Grid ..." msgstr "New Grid ..." -#: FlatCAMApp.py:5073 -#| msgid "Enter a distance Value (%s):" +#: FlatCAMApp.py:5211 msgid "Enter a Grid Value:" msgstr "Enter a Grid Value:" -#: FlatCAMApp.py:5081 FlatCAMApp.py:5108 +#: FlatCAMApp.py:5219 FlatCAMApp.py:5246 msgid "" "[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float " "format." @@ -467,48 +473,48 @@ msgstr "" "[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float " "format." -#: FlatCAMApp.py:5087 +#: FlatCAMApp.py:5225 msgid "[success] New Grid added ..." msgstr "[success] New Grid added ..." -#: FlatCAMApp.py:5090 +#: FlatCAMApp.py:5228 msgid "[WARNING_NOTCL] Grid already exists ..." msgstr "[WARNING_NOTCL] Grid already exists ..." -#: FlatCAMApp.py:5093 +#: FlatCAMApp.py:5231 msgid "[WARNING_NOTCL] Adding New Grid cancelled ..." msgstr "[WARNING_NOTCL] Adding New Grid cancelled ..." -#: FlatCAMApp.py:5115 +#: FlatCAMApp.py:5253 msgid "[ERROR_NOTCL] Grid Value does not exist ..." msgstr "[ERROR_NOTCL] Grid Value does not exist ..." -#: FlatCAMApp.py:5118 +#: FlatCAMApp.py:5256 msgid "[success] Grid Value deleted ..." msgstr "[success] Grid Value deleted ..." -#: FlatCAMApp.py:5121 +#: FlatCAMApp.py:5259 msgid "[WARNING_NOTCL] Delete Grid value cancelled ..." msgstr "[WARNING_NOTCL] Delete Grid value cancelled ..." -#: FlatCAMApp.py:5160 +#: FlatCAMApp.py:5298 msgid "[WARNING_NOTCL] No object selected to copy it's name" msgstr "[WARNING_NOTCL] No object selected to copy it's name" -#: FlatCAMApp.py:5164 +#: FlatCAMApp.py:5302 msgid "Name copied on clipboard ..." msgstr "Name copied on clipboard ..." -#: FlatCAMApp.py:5457 FlatCAMApp.py:5460 FlatCAMApp.py:5463 FlatCAMApp.py:5466 -#: FlatCAMApp.py:5481 FlatCAMApp.py:5484 FlatCAMApp.py:5487 FlatCAMApp.py:5490 -#: FlatCAMApp.py:5530 FlatCAMApp.py:5533 FlatCAMApp.py:5536 FlatCAMApp.py:5539 +#: 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 #: 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:5656 +#: FlatCAMApp.py:5794 msgid "" "There are files/objects opened in FlatCAM.\n" "Creating a New project will delete them.\n" @@ -518,106 +524,106 @@ msgstr "" "Creating a New project will delete them.\n" "Do you want to Save the project?" -#: FlatCAMApp.py:5677 +#: FlatCAMApp.py:5815 msgid "[success] New Project created..." msgstr "[success] New Project created..." -#: FlatCAMApp.py:5785 FlatCAMApp.py:5788 flatcamGUI/FlatCAMGUI.py:600 -#: flatcamGUI/FlatCAMGUI.py:1817 +#: FlatCAMApp.py:5923 FlatCAMApp.py:5926 flatcamGUI/FlatCAMGUI.py:613 +#: flatcamGUI/FlatCAMGUI.py:1831 msgid "Open Gerber" msgstr "Open Gerber" -#: FlatCAMApp.py:5793 +#: FlatCAMApp.py:5931 msgid "[WARNING_NOTCL] Open Gerber cancelled." msgstr "[WARNING_NOTCL] Open Gerber cancelled." -#: FlatCAMApp.py:5814 FlatCAMApp.py:5817 flatcamGUI/FlatCAMGUI.py:601 -#: flatcamGUI/FlatCAMGUI.py:1818 +#: FlatCAMApp.py:5952 FlatCAMApp.py:5955 flatcamGUI/FlatCAMGUI.py:614 +#: flatcamGUI/FlatCAMGUI.py:1832 msgid "Open Excellon" msgstr "Open Excellon" -#: FlatCAMApp.py:5822 +#: FlatCAMApp.py:5960 msgid "[WARNING_NOTCL] Open Excellon cancelled." msgstr "[WARNING_NOTCL] Open Excellon cancelled." -#: FlatCAMApp.py:5844 FlatCAMApp.py:5847 +#: FlatCAMApp.py:5982 FlatCAMApp.py:5985 msgid "Open G-Code" msgstr "Open G-Code" -#: FlatCAMApp.py:5852 +#: FlatCAMApp.py:5990 msgid "[WARNING_NOTCL] Open G-Code cancelled." msgstr "[WARNING_NOTCL] Open G-Code cancelled." -#: FlatCAMApp.py:5870 FlatCAMApp.py:5873 +#: FlatCAMApp.py:6008 FlatCAMApp.py:6011 msgid "Open Project" msgstr "Open Project" -#: FlatCAMApp.py:5881 +#: FlatCAMApp.py:6019 msgid "[WARNING_NOTCL] Open Project cancelled." msgstr "[WARNING_NOTCL] Open Project cancelled." -#: FlatCAMApp.py:5900 FlatCAMApp.py:5903 +#: FlatCAMApp.py:6038 FlatCAMApp.py:6041 msgid "Open Configuration File" msgstr "Open Configuration File" -#: FlatCAMApp.py:5907 +#: FlatCAMApp.py:6045 msgid "[WARNING_NOTCL Open Config cancelled." msgstr "[WARNING_NOTCL Open Config cancelled." -#: FlatCAMApp.py:5922 FlatCAMApp.py:6119 FlatCAMApp.py:8206 FlatCAMApp.py:8226 -#: FlatCAMApp.py:8247 FlatCAMApp.py:8269 +#: FlatCAMApp.py:6060 FlatCAMApp.py:6308 FlatCAMApp.py:8519 FlatCAMApp.py:8539 +#: FlatCAMApp.py:8560 FlatCAMApp.py:8582 msgid "[WARNING_NOTCL] No object selected." msgstr "[WARNING_NOTCL] No object selected." -#: FlatCAMApp.py:5923 FlatCAMApp.py:6120 +#: FlatCAMApp.py:6061 FlatCAMApp.py:6309 msgid "Please Select a Geometry object to export" msgstr "Please Select a Geometry object to export" -#: FlatCAMApp.py:5934 +#: FlatCAMApp.py:6072 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:5947 FlatCAMApp.py:5951 +#: FlatCAMApp.py:6085 FlatCAMApp.py:6089 msgid "Export SVG" msgstr "Export SVG" -#: FlatCAMApp.py:5956 +#: FlatCAMApp.py:6094 msgid "[WARNING_NOTCL] Export SVG cancelled." msgstr "[WARNING_NOTCL] Export SVG cancelled." -#: FlatCAMApp.py:5970 +#: FlatCAMApp.py:6110 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:5976 FlatCAMApp.py:5980 +#: FlatCAMApp.py:6116 FlatCAMApp.py:6120 msgid "Export PNG Image" msgstr "Export PNG Image" -#: FlatCAMApp.py:5985 +#: FlatCAMApp.py:6125 msgid "Export PNG cancelled." msgstr "Export PNG cancelled." -#: FlatCAMApp.py:6002 +#: FlatCAMApp.py:6144 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:6007 +#: FlatCAMApp.py:6149 FlatCAMApp.py:6272 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:6019 +#: FlatCAMApp.py:6161 msgid "Save Gerber source file" msgstr "Save Gerber source file" -#: FlatCAMApp.py:6024 +#: FlatCAMApp.py:6166 msgid "[WARNING_NOTCL] Save Gerber source file cancelled." msgstr "[WARNING_NOTCL] Save Gerber source file cancelled." -#: FlatCAMApp.py:6041 +#: FlatCAMApp.py:6185 msgid "" "[WARNING_NOTCL] No object selected. Please select an Excellon object to " "export." @@ -625,21 +631,21 @@ msgstr "" "[WARNING_NOTCL] No object selected. Please select an Excellon object to " "export." -#: FlatCAMApp.py:6046 FlatCAMApp.py:6085 +#: FlatCAMApp.py:6190 FlatCAMApp.py:6231 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:6054 FlatCAMApp.py:6058 +#: FlatCAMApp.py:6198 FlatCAMApp.py:6202 msgid "Save Excellon source file" msgstr "Save Excellon source file" -#: FlatCAMApp.py:6063 +#: FlatCAMApp.py:6207 msgid "[WARNING_NOTCL] Saving Excellon source file cancelled." msgstr "[WARNING_NOTCL] Saving Excellon source file cancelled." -#: FlatCAMApp.py:6080 +#: FlatCAMApp.py:6226 msgid "" "[WARNING_NOTCL] No object selected. Please Select an Excellon object to " "export." @@ -647,54 +653,73 @@ msgstr "" "[WARNING_NOTCL] No object selected. Please Select an Excellon object to " "export." -#: FlatCAMApp.py:6093 FlatCAMApp.py:6097 +#: FlatCAMApp.py:6239 FlatCAMApp.py:6243 msgid "Export Excellon" msgstr "Export Excellon" -#: FlatCAMApp.py:6102 +#: FlatCAMApp.py:6248 msgid "[WARNING_NOTCL] Export Excellon cancelled." msgstr "[WARNING_NOTCL] Export Excellon cancelled." -#: FlatCAMApp.py:6130 +#: FlatCAMApp.py:6267 +#| msgid "" +#| "[WARNING_NOTCL] No object selected. Please select an Gerber object to " +#| "export." +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 +#| msgid "Export SVG" +msgid "Export Gerber" +msgstr "Export Gerber" + +#: FlatCAMApp.py:6289 +#| msgid "[WARNING_NOTCL] Export SVG cancelled." +msgid "[WARNING_NOTCL] Export Gerber cancelled." +msgstr "[WARNING_NOTCL] Export Gerber cancelled." + +#: FlatCAMApp.py:6319 msgid "[ERROR_NOTCL] Only Geometry objects can be used." msgstr "[ERROR_NOTCL] Only Geometry objects can be used." -#: FlatCAMApp.py:6144 FlatCAMApp.py:6148 +#: FlatCAMApp.py:6333 FlatCAMApp.py:6337 msgid "Export DXF" msgstr "Export DXF" -#: FlatCAMApp.py:6153 +#: FlatCAMApp.py:6342 msgid "[WARNING_NOTCL] Export DXF cancelled." msgstr "[WARNING_NOTCL] Export DXF cancelled." -#: FlatCAMApp.py:6171 FlatCAMApp.py:6174 +#: FlatCAMApp.py:6362 FlatCAMApp.py:6365 msgid "Import SVG" msgstr "Import SVG" -#: FlatCAMApp.py:6182 +#: FlatCAMApp.py:6373 msgid "[WARNING_NOTCL] Open SVG cancelled." msgstr "[WARNING_NOTCL] Open SVG cancelled." -#: FlatCAMApp.py:6201 FlatCAMApp.py:6204 +#: FlatCAMApp.py:6392 FlatCAMApp.py:6395 msgid "Import DXF" msgstr "Import DXF" -#: FlatCAMApp.py:6212 +#: FlatCAMApp.py:6403 msgid "[WARNING_NOTCL] Open DXF cancelled." msgstr "[WARNING_NOTCL] Open DXF cancelled." -#: FlatCAMApp.py:6230 +#: FlatCAMApp.py:6421 #, python-format msgid "%s" msgstr "%s" -#: FlatCAMApp.py:6250 +#: FlatCAMApp.py:6441 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:6257 +#: FlatCAMApp.py:6448 msgid "" "[WARNING_NOTCL] There is no selected object for which to see it's source " "file code." @@ -702,24 +727,24 @@ msgstr "" "[WARNING_NOTCL] There is no selected object for which to see it's source " "file code." -#: FlatCAMApp.py:6265 +#: FlatCAMApp.py:6456 msgid "Source Editor" msgstr "Source Editor" -#: FlatCAMApp.py:6275 +#: FlatCAMApp.py:6466 #, python-format msgid "[ERROR]App.on_view_source() -->%s" msgstr "[ERROR]App.on_view_source() -->%s" -#: FlatCAMApp.py:6287 FlatCAMApp.py:7308 FlatCAMObj.py:5266 +#: FlatCAMApp.py:6478 FlatCAMApp.py:7621 FlatCAMObj.py:5573 msgid "Code Editor" msgstr "Code Editor" -#: FlatCAMApp.py:6299 +#: FlatCAMApp.py:6490 msgid "Script Editor" msgstr "Script Editor" -#: FlatCAMApp.py:6302 +#: FlatCAMApp.py:6493 msgid "" "#\n" "# CREATE A NEW FLATCAM TCL SCRIPT\n" @@ -763,85 +788,101 @@ msgstr "" "#\n" "\n" -#: FlatCAMApp.py:6325 FlatCAMApp.py:6328 +#: FlatCAMApp.py:6516 FlatCAMApp.py:6519 msgid "Open TCL script" msgstr "Open TCL script" -#: FlatCAMApp.py:6336 +#: FlatCAMApp.py:6527 msgid "[WARNING_NOTCL] Open TCL script cancelled." msgstr "[WARNING_NOTCL] Open TCL script cancelled." -#: FlatCAMApp.py:6348 +#: FlatCAMApp.py:6539 #, python-format msgid "[ERROR]App.on_fileopenscript() -->%s" msgstr "[ERROR]App.on_fileopenscript() -->%s" -#: FlatCAMApp.py:6374 FlatCAMApp.py:6377 +#: FlatCAMApp.py:6565 FlatCAMApp.py:6568 msgid "Run TCL script" msgstr "Run TCL script" -#: FlatCAMApp.py:6385 +#: FlatCAMApp.py:6576 msgid "[WARNING_NOTCL] Run TCL script cancelled." msgstr "[WARNING_NOTCL] Run TCL script cancelled." -#: FlatCAMApp.py:6431 FlatCAMApp.py:6435 +#: FlatCAMApp.py:6622 FlatCAMApp.py:6626 msgid "Save Project As ..." msgstr "Save Project As ..." -#: FlatCAMApp.py:6432 +#: FlatCAMApp.py:6623 #, python-brace-format msgid "{l_save}/Project_{date}" msgstr "{l_save}/Project_{date}" -#: FlatCAMApp.py:6440 +#: FlatCAMApp.py:6631 msgid "[WARNING_NOTCL] Save Project cancelled." msgstr "[WARNING_NOTCL] Save Project cancelled." -#: FlatCAMApp.py:6485 +#: FlatCAMApp.py:6676 msgid "Exporting SVG" msgstr "Exporting SVG" -#: FlatCAMApp.py:6518 FlatCAMApp.py:6623 FlatCAMApp.py:6737 +#: FlatCAMApp.py:6710 FlatCAMApp.py:6816 FlatCAMApp.py:6931 #, python-format msgid "[success] SVG file exported to %s" msgstr "[success] SVG file exported to %s" -#: FlatCAMApp.py:6549 FlatCAMApp.py:6669 +#: FlatCAMApp.py:6741 FlatCAMApp.py:6862 #, python-format msgid "[WARNING_NOTCL] No object Box. Using instead %s" msgstr "[WARNING_NOTCL] No object Box. Using instead %s" -#: FlatCAMApp.py:6626 FlatCAMApp.py:6740 +#: FlatCAMApp.py:6819 FlatCAMApp.py:6934 msgid "Generating Film ... Please wait." msgstr "Generating Film ... Please wait." -#: FlatCAMApp.py:6887 +#: FlatCAMApp.py:7082 #, python-format msgid "[success] Excellon file exported to %s" msgstr "[success] Excellon file exported to %s" -#: FlatCAMApp.py:6894 +#: FlatCAMApp.py:7089 msgid "Exporting Excellon" msgstr "Exporting Excellon" -#: FlatCAMApp.py:6899 FlatCAMApp.py:6906 +#: FlatCAMApp.py:7094 FlatCAMApp.py:7101 msgid "[ERROR_NOTCL] Could not export Excellon file." msgstr "[ERROR_NOTCL] Could not export Excellon file." -#: FlatCAMApp.py:6945 +#: FlatCAMApp.py:7199 +#, python-format +#| msgid "[success] SVG file exported to %s" +msgid "[success] Gerber file exported to %s" +msgstr "[success] Gerber file exported to %s" + +#: FlatCAMApp.py:7206 +#| msgid "Exporting SVG" +msgid "Exporting Gerber" +msgstr "Exporting Gerber" + +#: FlatCAMApp.py:7211 FlatCAMApp.py:7218 +#| msgid "[ERROR_NOTCL] Could not export Excellon file." +msgid "[ERROR_NOTCL] Could not export Gerber file." +msgstr "[ERROR_NOTCL] Could not export Gerber file." + +#: FlatCAMApp.py:7258 #, python-format msgid "[success] DXF file exported to %s" msgstr "[success] DXF file exported to %s" -#: FlatCAMApp.py:6951 +#: FlatCAMApp.py:7264 msgid "Exporting DXF" msgstr "Exporting DXF" -#: FlatCAMApp.py:6956 FlatCAMApp.py:6963 +#: FlatCAMApp.py:7269 FlatCAMApp.py:7276 msgid "[[WARNING_NOTCL]] Could not export DXF file." msgstr "[[WARNING_NOTCL]] Could not export DXF file." -#: FlatCAMApp.py:6983 FlatCAMApp.py:7025 FlatCAMApp.py:7066 +#: FlatCAMApp.py:7296 FlatCAMApp.py:7338 FlatCAMApp.py:7379 msgid "" "[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and " "Gerber are supported" @@ -849,96 +890,95 @@ msgstr "" "[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and " "Gerber are supported" -#: FlatCAMApp.py:6993 +#: FlatCAMApp.py:7306 msgid "Importing SVG" msgstr "Importing SVG" -#: FlatCAMApp.py:7004 FlatCAMApp.py:7046 FlatCAMApp.py:7086 FlatCAMApp.py:7162 -#: FlatCAMApp.py:7229 FlatCAMApp.py:7294 flatcamTools/ToolPDF.py:212 +#: FlatCAMApp.py:7317 FlatCAMApp.py:7359 FlatCAMApp.py:7399 FlatCAMApp.py:7475 +#: FlatCAMApp.py:7542 FlatCAMApp.py:7607 flatcamTools/ToolPDF.py:212 #, python-format msgid "[success] Opened: %s" msgstr "[success] Opened: %s" -#: FlatCAMApp.py:7035 +#: FlatCAMApp.py:7348 msgid "Importing DXF" msgstr "Importing DXF" -#: FlatCAMApp.py:7074 +#: FlatCAMApp.py:7387 msgid "Importing Image" msgstr "Importing Image" -#: FlatCAMApp.py:7115 FlatCAMApp.py:7117 +#: FlatCAMApp.py:7428 FlatCAMApp.py:7430 #, python-format msgid "[ERROR_NOTCL] Failed to open file: %s" msgstr "[ERROR_NOTCL] Failed to open file: %s" -#: FlatCAMApp.py:7120 +#: FlatCAMApp.py:7433 #, python-brace-format msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}" msgstr "[ERROR_NOTCL] Failed to parse file: {name}. {error}" -#: FlatCAMApp.py:7126 FlatCAMObj.py:3970 -#: flatcamEditors/FlatCAMExcEditor.py:2035 -#: flatcamEditors/FlatCAMGrbEditor.py:3098 +#: FlatCAMApp.py:7439 FlatCAMObj.py:4271 +#: flatcamEditors/FlatCAMExcEditor.py:2041 msgid "[ERROR] An internal error has ocurred. See shell.\n" msgstr "[ERROR] An internal error has ocurred. See shell.\n" -#: FlatCAMApp.py:7135 +#: FlatCAMApp.py:7448 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:7143 +#: FlatCAMApp.py:7456 msgid "Opening Gerber" msgstr "Opening Gerber" -#: FlatCAMApp.py:7153 +#: FlatCAMApp.py:7466 msgid "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file." msgstr "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file." -#: FlatCAMApp.py:7188 flatcamTools/ToolPcbWizard.py:421 +#: FlatCAMApp.py:7501 flatcamTools/ToolPcbWizard.py:421 msgid "[ERROR_NOTCL] This is not Excellon file." msgstr "[ERROR_NOTCL] This is not Excellon file." -#: FlatCAMApp.py:7191 +#: FlatCAMApp.py:7504 #, python-format msgid "[ERROR_NOTCL] Cannot open file: %s" msgstr "[ERROR_NOTCL] Cannot open file: %s" -#: FlatCAMApp.py:7196 flatcamTools/ToolPcbWizard.py:429 +#: FlatCAMApp.py:7509 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:7212 flatcamTools/ToolPDF.py:261 +#: FlatCAMApp.py:7525 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:7215 +#: FlatCAMApp.py:7528 msgid "Opening Excellon." msgstr "Opening Excellon." -#: FlatCAMApp.py:7222 +#: FlatCAMApp.py:7535 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:7261 +#: FlatCAMApp.py:7574 #, python-format msgid "[ERROR_NOTCL] Failed to open %s" msgstr "[ERROR_NOTCL] Failed to open %s" -#: FlatCAMApp.py:7271 +#: FlatCAMApp.py:7584 msgid "[ERROR_NOTCL] This is not GCODE" msgstr "[ERROR_NOTCL] This is not GCODE" -#: FlatCAMApp.py:7277 +#: FlatCAMApp.py:7590 msgid "Opening G-Code." msgstr "Opening G-Code." -#: FlatCAMApp.py:7285 +#: FlatCAMApp.py:7598 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 " @@ -948,26 +988,26 @@ msgstr "" " Attempting to create a FlatCAM CNCJob Object from G-Code file failed during " "processing" -#: FlatCAMApp.py:7325 +#: FlatCAMApp.py:7638 #, python-format msgid "[ERROR_NOTCL] Failed to open config file: %s" msgstr "[ERROR_NOTCL] Failed to open config file: %s" -#: FlatCAMApp.py:7350 FlatCAMApp.py:7366 +#: FlatCAMApp.py:7663 FlatCAMApp.py:7679 #, python-format msgid "[ERROR_NOTCL] Failed to open project file: %s" msgstr "[ERROR_NOTCL] Failed to open project file: %s" -#: FlatCAMApp.py:7392 +#: FlatCAMApp.py:7705 #, python-format msgid "[success] Project loaded from: %s" msgstr "[success] Project loaded from: %s" -#: FlatCAMApp.py:7522 +#: FlatCAMApp.py:7835 msgid "Available commands:\n" msgstr "Available commands:\n" -#: FlatCAMApp.py:7524 +#: FlatCAMApp.py:7837 msgid "" "\n" "\n" @@ -979,23 +1019,23 @@ msgstr "" "Type help for usage.\n" " Example: help open_gerber" -#: FlatCAMApp.py:7672 +#: FlatCAMApp.py:7985 msgid "Shows list of commands." msgstr "Shows list of commands." -#: FlatCAMApp.py:7729 +#: FlatCAMApp.py:8042 msgid "[ERROR_NOTCL] Failed to load recent item list." msgstr "[ERROR_NOTCL] Failed to load recent item list." -#: FlatCAMApp.py:7736 +#: FlatCAMApp.py:8049 msgid "[ERROR_NOTCL] Failed to parse recent item list." msgstr "[ERROR_NOTCL] Failed to parse recent item list." -#: FlatCAMApp.py:7797 flatcamGUI/FlatCAMGUI.py:957 +#: FlatCAMApp.py:8110 flatcamGUI/FlatCAMGUI.py:970 msgid "Shortcut Key List" msgstr "Shortcut Key List" -#: FlatCAMApp.py:7804 +#: FlatCAMApp.py:8117 msgid "" "\n" "

Selected Tab - Choose an Item from " @@ -1091,23 +1131,23 @@ msgstr "" "\n" " " -#: FlatCAMApp.py:7908 +#: FlatCAMApp.py:8221 msgid "[WARNING_NOTCL] Failed checking for latest version. Could not connect." msgstr "[WARNING_NOTCL] Failed checking for latest version. Could not connect." -#: FlatCAMApp.py:7915 +#: FlatCAMApp.py:8228 msgid "[ERROR_NOTCL] Could not parse information about latest version." msgstr "[ERROR_NOTCL] Could not parse information about latest version." -#: FlatCAMApp.py:7925 +#: FlatCAMApp.py:8238 msgid "[success] FlatCAM is up to date!" msgstr "[success] FlatCAM is up to date!" -#: FlatCAMApp.py:7930 +#: FlatCAMApp.py:8243 msgid "Newer Version Available" msgstr "Newer Version Available" -#: FlatCAMApp.py:7931 +#: FlatCAMApp.py:8244 msgid "" "There is a newer version of FlatCAM available for download:\n" "\n" @@ -1115,80 +1155,80 @@ msgstr "" "There is a newer version of FlatCAM available for download:\n" "\n" -#: FlatCAMApp.py:7933 +#: FlatCAMApp.py:8246 msgid "info" msgstr "info" -#: FlatCAMApp.py:7952 +#: FlatCAMApp.py:8265 msgid "[success] All plots disabled." msgstr "[success] All plots disabled." -#: FlatCAMApp.py:7958 +#: FlatCAMApp.py:8271 msgid "[success] All non selected plots disabled." msgstr "[success] All non selected plots disabled." -#: FlatCAMApp.py:7964 +#: FlatCAMApp.py:8277 msgid "[success] All plots enabled." msgstr "[success] All plots enabled." -#: FlatCAMApp.py:8075 +#: FlatCAMApp.py:8388 msgid "Saving FlatCAM Project" msgstr "Saving FlatCAM Project" -#: FlatCAMApp.py:8096 FlatCAMApp.py:8127 +#: FlatCAMApp.py:8409 FlatCAMApp.py:8440 #, python-format msgid "[success] Project saved to: %s" msgstr "[success] Project saved to: %s" -#: FlatCAMApp.py:8114 +#: FlatCAMApp.py:8427 #, 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:8121 +#: FlatCAMApp.py:8434 #, 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:8129 +#: FlatCAMApp.py:8442 #, 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:195 +#: FlatCAMObj.py:201 #, python-brace-format msgid "[success] Name changed from {old} to {new}" msgstr "[success] Name changed from {old} to {new}" -#: FlatCAMObj.py:542 FlatCAMObj.py:1748 FlatCAMObj.py:3013 FlatCAMObj.py:5165 +#: FlatCAMObj.py:548 FlatCAMObj.py:2033 FlatCAMObj.py:3307 FlatCAMObj.py:5470 msgid "Basic" msgstr "Basic" -#: FlatCAMObj.py:554 FlatCAMObj.py:1764 FlatCAMObj.py:3035 FlatCAMObj.py:5171 +#: FlatCAMObj.py:560 FlatCAMObj.py:2049 FlatCAMObj.py:3329 FlatCAMObj.py:5476 msgid "Advanced" msgstr "Advanced" -#: FlatCAMObj.py:909 FlatCAMObj.py:964 +#: FlatCAMObj.py:923 FlatCAMObj.py:978 #, python-format msgid "[success] Isolation geometry created: %s" msgstr "[success] Isolation geometry created: %s" -#: FlatCAMObj.py:1133 +#: FlatCAMObj.py:1157 msgid "Plotting Apertures" msgstr "Plotting Apertures" -#: FlatCAMObj.py:1587 flatcamEditors/FlatCAMExcEditor.py:1327 +#: FlatCAMObj.py:1872 flatcamEditors/FlatCAMExcEditor.py:1332 msgid "Total Drills" msgstr "Total Drills" -#: FlatCAMObj.py:1613 flatcamEditors/FlatCAMExcEditor.py:1359 +#: FlatCAMObj.py:1898 flatcamEditors/FlatCAMExcEditor.py:1364 msgid "Total Slots" msgstr "Total Slots" -#: FlatCAMObj.py:1820 FlatCAMObj.py:3086 FlatCAMObj.py:3393 FlatCAMObj.py:3580 -#: FlatCAMObj.py:3593 FlatCAMObj.py:3710 FlatCAMObj.py:4118 FlatCAMObj.py:4351 -#: FlatCAMObj.py:4757 flatcamEditors/FlatCAMExcEditor.py:1434 +#: 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 #: flatcamTools/ToolCalculators.py:307 flatcamTools/ToolCalculators.py:318 #: flatcamTools/ToolCalculators.py:330 flatcamTools/ToolCalculators.py:345 #: flatcamTools/ToolCalculators.py:358 flatcamTools/ToolCalculators.py:372 @@ -1200,52 +1240,52 @@ msgstr "Total Slots" #: flatcamTools/ToolNonCopperClear.py:644 flatcamTools/ToolPaint.py:538 #: flatcamTools/ToolPaint.py:608 flatcamTools/ToolPaint.py:743 #: flatcamTools/ToolPaint.py:840 flatcamTools/ToolPaint.py:995 -#: flatcamTools/ToolPanelize.py:323 flatcamTools/ToolPanelize.py:335 -#: flatcamTools/ToolPanelize.py:348 flatcamTools/ToolPanelize.py:361 -#: flatcamTools/ToolPanelize.py:373 flatcamTools/ToolPanelize.py:384 +#: flatcamTools/ToolPanelize.py:385 flatcamTools/ToolPanelize.py:397 +#: flatcamTools/ToolPanelize.py:410 flatcamTools/ToolPanelize.py:423 +#: flatcamTools/ToolPanelize.py:435 flatcamTools/ToolPanelize.py:446 #: flatcamTools/ToolSolderPaste.py:756 flatcamTools/ToolSolderPaste.py:827 msgid "[ERROR_NOTCL] Wrong value format entered, use a number." msgstr "[ERROR_NOTCL] Wrong value format entered, use a number." -#: FlatCAMObj.py:2044 FlatCAMObj.py:2135 FlatCAMObj.py:2250 +#: FlatCAMObj.py:2329 FlatCAMObj.py:2420 FlatCAMObj.py:2542 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:2051 +#: FlatCAMObj.py:2336 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:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 msgid "Tool_nr" msgstr "Tool_nr" -#: FlatCAMObj.py:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 -#: flatcamEditors/FlatCAMExcEditor.py:781 -#: flatcamEditors/FlatCAMExcEditor.py:1978 flatcamGUI/ObjectUI.py:556 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: flatcamEditors/FlatCAMExcEditor.py:785 +#: flatcamEditors/FlatCAMExcEditor.py:1984 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:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 msgid "Drills_Nr" msgstr "Drills_Nr" -#: FlatCAMObj.py:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 msgid "Slots_Nr" msgstr "Slots_Nr" -#: FlatCAMObj.py:2145 +#: FlatCAMObj.py:2430 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:2310 FlatCAMObj.py:4006 FlatCAMObj.py:4217 FlatCAMObj.py:4532 +#: FlatCAMObj.py:2604 FlatCAMObj.py:4307 FlatCAMObj.py:4520 FlatCAMObj.py:4837 msgid "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"z_pdepth\"] or self." "options[\"z_pdepth\"]" @@ -1253,7 +1293,7 @@ msgstr "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"z_pdepth\"] or self." "options[\"z_pdepth\"]" -#: FlatCAMObj.py:2322 FlatCAMObj.py:4018 FlatCAMObj.py:4229 FlatCAMObj.py:4544 +#: FlatCAMObj.py:2616 FlatCAMObj.py:4319 FlatCAMObj.py:4532 FlatCAMObj.py:4849 msgid "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"feedrate_probe\"] or " "self.options[\"feedrate_probe\"]" @@ -1261,12 +1301,12 @@ msgstr "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"feedrate_probe\"] or " "self.options[\"feedrate_probe\"]" -#: FlatCAMObj.py:2354 FlatCAMObj.py:4419 FlatCAMObj.py:4424 FlatCAMObj.py:4570 +#: FlatCAMObj.py:2648 FlatCAMObj.py:4724 FlatCAMObj.py:4729 FlatCAMObj.py:4875 msgid "Generating CNC Code" msgstr "Generating CNC Code" -#: FlatCAMObj.py:2380 FlatCAMObj.py:4716 camlib.py:5214 camlib.py:5672 -#: camlib.py:5943 +#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5165 camlib.py:5624 +#: camlib.py:5887 msgid "" "[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " "format (x, y) \n" @@ -1276,77 +1316,77 @@ msgstr "" "format (x, y) \n" "but now there is only one value, not two. " -#: FlatCAMObj.py:2728 FlatCAMObj.py:3636 FlatCAMObj.py:3637 FlatCAMObj.py:3646 +#: FlatCAMObj.py:3022 FlatCAMObj.py:3930 FlatCAMObj.py:3931 FlatCAMObj.py:3940 msgid "Iso" msgstr "Iso" -#: FlatCAMObj.py:2728 FlatCAMObj.py:2971 FlatCAMObj.py:3258 +#: FlatCAMObj.py:3022 FlatCAMObj.py:3265 FlatCAMObj.py:3552 msgid "Rough" msgstr "Rough" -#: FlatCAMObj.py:2728 +#: FlatCAMObj.py:3022 msgid "Finish" msgstr "Finish" -#: FlatCAMObj.py:3006 flatcamGUI/FlatCAMGUI.py:518 flatcamGUI/FlatCAMGUI.py:711 -#: flatcamGUI/FlatCAMGUI.py:1601 flatcamGUI/FlatCAMGUI.py:1932 -#: flatcamGUI/ObjectUI.py:996 +#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:724 +#: flatcamGUI/FlatCAMGUI.py:1615 flatcamGUI/FlatCAMGUI.py:1946 +#: flatcamGUI/ObjectUI.py:999 msgid "Copy" msgstr "Copy" -#: FlatCAMObj.py:3228 +#: FlatCAMObj.py:3522 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:3303 +#: FlatCAMObj.py:3597 msgid "[success] Tool added in Tool Table." msgstr "[success] Tool added in Tool Table." -#: FlatCAMObj.py:3308 +#: FlatCAMObj.py:3602 msgid "[ERROR_NOTCL] Default Tool added. Wrong value format entered." msgstr "[ERROR_NOTCL] Default Tool added. Wrong value format entered." -#: FlatCAMObj.py:3338 FlatCAMObj.py:3348 +#: FlatCAMObj.py:3632 FlatCAMObj.py:3642 msgid "[WARNING_NOTCL] Failed. Select a tool to copy." msgstr "[WARNING_NOTCL] Failed. Select a tool to copy." -#: FlatCAMObj.py:3377 +#: FlatCAMObj.py:3671 msgid "[success] Tool was copied in Tool Table." msgstr "[success] Tool was copied in Tool Table." -#: FlatCAMObj.py:3410 +#: FlatCAMObj.py:3704 msgid "[success] Tool was edited in Tool Table." msgstr "[success] Tool was edited in Tool Table." -#: FlatCAMObj.py:3441 FlatCAMObj.py:3451 +#: FlatCAMObj.py:3735 FlatCAMObj.py:3745 msgid "[WARNING_NOTCL] Failed. Select a tool to delete." msgstr "[WARNING_NOTCL] Failed. Select a tool to delete." -#: FlatCAMObj.py:3475 +#: FlatCAMObj.py:3769 msgid "[success] Tool was deleted in Tool Table." msgstr "[success] Tool was deleted in Tool Table." -#: FlatCAMObj.py:3889 +#: FlatCAMObj.py:4190 #, 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:3906 +#: FlatCAMObj.py:4207 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:3933 +#: FlatCAMObj.py:4234 msgid "[ERROR_NOTCL] Failed. No tool selected in the tool table ..." msgstr "[ERROR_NOTCL] Failed. No tool selected in the tool table ..." -#: FlatCAMObj.py:3971 +#: FlatCAMObj.py:4272 #, python-format msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" msgstr "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" -#: FlatCAMObj.py:4127 FlatCAMObj.py:4360 +#: FlatCAMObj.py:4428 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." @@ -1354,20 +1394,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:4241 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:4603 FlatCAMObj.py:4613 camlib.py:3436 camlib.py:3445 +#: FlatCAMObj.py:4908 FlatCAMObj.py:4918 camlib.py:3346 camlib.py:3355 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:4651 +#: FlatCAMObj.py:4956 msgid "[success] Geometry Scale done." msgstr "[success] Geometry Scale done." -#: FlatCAMObj.py:4668 camlib.py:3507 +#: FlatCAMObj.py:4973 camlib.py:3425 msgid "" "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " "one value in the Offset field." @@ -1375,29 +1415,29 @@ msgstr "" "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " "one value in the Offset field." -#: FlatCAMObj.py:4688 +#: FlatCAMObj.py:4993 msgid "[success] Geometry Offset done." msgstr "[success] Geometry Offset done." -#: FlatCAMObj.py:5233 FlatCAMObj.py:5238 flatcamTools/ToolSolderPaste.py:1361 +#: FlatCAMObj.py:5538 FlatCAMObj.py:5543 flatcamTools/ToolSolderPaste.py:1361 msgid "Export Machine Code ..." msgstr "Export Machine Code ..." -#: FlatCAMObj.py:5244 flatcamTools/ToolSolderPaste.py:1364 +#: FlatCAMObj.py:5549 flatcamTools/ToolSolderPaste.py:1364 msgid "[WARNING_NOTCL] Export Machine Code cancelled ..." msgstr "[WARNING_NOTCL] Export Machine Code cancelled ..." -#: FlatCAMObj.py:5255 +#: FlatCAMObj.py:5562 #, python-format msgid "[success] Machine Code file saved to: %s" msgstr "[success] Machine Code file saved to: %s" -#: FlatCAMObj.py:5277 +#: FlatCAMObj.py:5584 #, python-format msgid "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" msgstr "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" -#: FlatCAMObj.py:5394 +#: FlatCAMObj.py:5701 #, python-format msgid "" "[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " @@ -1406,11 +1446,11 @@ msgstr "" "[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " "CNCJob object." -#: FlatCAMObj.py:5447 +#: FlatCAMObj.py:5754 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:5460 +#: FlatCAMObj.py:5767 msgid "" "[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " "empty." @@ -1418,15 +1458,15 @@ msgstr "" "[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " "empty." -#: FlatCAMObj.py:5467 +#: FlatCAMObj.py:5774 msgid "[success] Toolchange G-code was replaced by a custom code." msgstr "[success] Toolchange G-code was replaced by a custom code." -#: FlatCAMObj.py:5482 flatcamTools/ToolSolderPaste.py:1390 +#: FlatCAMObj.py:5789 flatcamTools/ToolSolderPaste.py:1390 msgid "[WARNING_NOTCL] No such file or directory" msgstr "[WARNING_NOTCL] No such file or directory" -#: FlatCAMObj.py:5501 FlatCAMObj.py:5513 +#: FlatCAMObj.py:5809 FlatCAMObj.py:5821 msgid "" "[WARNING_NOTCL] The used postprocessor file has to have in it's name: " "'toolchange_custom'" @@ -1434,7 +1474,7 @@ msgstr "" "[WARNING_NOTCL] The used postprocessor file has to have in it's name: " "'toolchange_custom'" -#: FlatCAMObj.py:5519 +#: FlatCAMObj.py:5827 msgid "[ERROR] There is no postprocessor file." msgstr "[ERROR] There is no postprocessor file." @@ -1452,40 +1492,40 @@ msgstr "[ERROR] Cause of error: %s" msgid "[ERROR_NOTCL] self.solid_geometry is neither BaseGeometry or list." msgstr "[ERROR_NOTCL] self.solid_geometry is neither BaseGeometry or list." -#: camlib.py:1389 +#: camlib.py:1390 msgid "[success] Object was mirrored ..." msgstr "[success] Object was mirrored ..." -#: camlib.py:1391 +#: camlib.py:1392 msgid "[ERROR_NOTCL] Failed to mirror. No object selected" msgstr "[ERROR_NOTCL] Failed to mirror. No object selected" -#: camlib.py:1427 +#: camlib.py:1428 msgid "[success] Object was rotated ..." msgstr "[success] Object was rotated ..." -#: camlib.py:1429 +#: camlib.py:1430 msgid "[ERROR_NOTCL] Failed to rotate. No object selected" msgstr "[ERROR_NOTCL] Failed to rotate. No object selected" -#: camlib.py:1463 +#: camlib.py:1464 msgid "[success] Object was skewed ..." msgstr "[success] Object was skewed ..." -#: camlib.py:1465 +#: camlib.py:1466 msgid "[ERROR_NOTCL] Failed to skew. No object selected" msgstr "[ERROR_NOTCL] Failed to skew. No object selected" -#: camlib.py:2741 camlib.py:2847 +#: camlib.py:2728 camlib.py:2813 #, python-format msgid "[WARNING] Coordinates missing, line ignored: %s" msgstr "[WARNING] Coordinates missing, line ignored: %s" -#: camlib.py:2742 camlib.py:2848 +#: camlib.py:2729 camlib.py:2814 msgid "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!" msgstr "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!" -#: camlib.py:2802 +#: camlib.py:2778 #, python-format msgid "" "[ERROR] Region does not have enough points. File will be processed but there " @@ -1494,7 +1534,7 @@ msgstr "" "[ERROR] Region does not have enough points. File will be processed but there " "are parser errors. Line number: %s" -#: camlib.py:3257 +#: camlib.py:3170 #, python-format msgid "" "[ERROR]Gerber Parser ERROR.\n" @@ -1503,20 +1543,35 @@ msgstr "" "[ERROR]Gerber Parser ERROR.\n" "%s:" -#: camlib.py:3474 +#: camlib.py:3392 msgid "[success] Gerber Scale done." msgstr "[success] Gerber Scale done." -#: camlib.py:3531 +#: camlib.py:3458 msgid "[success] Gerber Offset done." msgstr "[success] Gerber Offset done." -#: camlib.py:3925 +#: camlib.py:3512 +#| msgid "[success] Gerber Scale done." +msgid "[success] Gerber Mirror done." +msgstr "[success] Gerber Mirror done." + +#: camlib.py:3558 +#| msgid "[success] Gerber Scale done." +msgid "[success] Gerber Skew done." +msgstr "[success] Gerber Skew done." + +#: camlib.py:3596 +#| msgid "[success] Gerber Scale done." +msgid "[success] Gerber Rotate done." +msgstr "[success] Gerber Rotate done." + +#: camlib.py:3875 #, python-format msgid "[ERROR_NOTCL] This is GCODE mark: %s" msgstr "[ERROR_NOTCL] This is GCODE mark: %s" -#: camlib.py:4039 +#: camlib.py:3989 #, python-format msgid "" "[WARNING] No tool diameter info's. See shell.\n" @@ -1533,7 +1588,7 @@ msgstr "" "The user needs to edit the resulting Excellon object and change the " "diameters to reflect the real diameters." -#: camlib.py:4504 +#: camlib.py:4454 #, python-brace-format msgid "" "[ERROR] Excellon Parser error.\n" @@ -1542,7 +1597,7 @@ msgstr "" "[ERROR] Excellon Parser error.\n" "Parsing Failed. Line {l_nr}: {line}\n" -#: camlib.py:4581 +#: camlib.py:4531 msgid "" "[WARNING] Excellon.create_geometry() -> a drill location was skipped due of " "not having a tool associated.\n" @@ -1552,12 +1607,12 @@ msgstr "" "not having a tool associated.\n" "Check the resulting GCode." -#: camlib.py:5123 +#: camlib.py:5074 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "[ERROR] There is no such parameter: %s" -#: camlib.py:5193 +#: camlib.py:5144 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1571,22 +1626,22 @@ msgstr "" "therefore the app will convert the value to negative. Check the resulting " "CNC code (Gcode etc)." -#: camlib.py:5200 camlib.py:5695 camlib.py:5966 +#: camlib.py:5151 camlib.py:5647 camlib.py:5910 #, 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:5429 camlib.py:5526 camlib.py:5584 +#: camlib.py:5380 camlib.py:5477 camlib.py:5535 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "[ERROR_NOTCL] The loaded Excellon file has no drills ..." -#: camlib.py:5531 +#: camlib.py:5482 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "[ERROR_NOTCL] Wrong optimization type selected." -#: camlib.py:5683 camlib.py:5954 +#: camlib.py:5635 camlib.py:5898 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." @@ -1594,7 +1649,7 @@ msgstr "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." -#: camlib.py:5688 camlib.py:5959 +#: camlib.py:5640 camlib.py:5903 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1608,11 +1663,11 @@ msgstr "" "therefore the app will convert the value to negative.Check the resulting CNC " "code (Gcode etc)." -#: camlib.py:5700 camlib.py:5971 +#: camlib.py:5652 camlib.py:5915 msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." msgstr "[ERROR_NOTCL] Travel Z parameter is None or zero." -#: camlib.py:5704 camlib.py:5975 +#: camlib.py:5656 camlib.py:5919 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1626,19 +1681,19 @@ msgstr "" "therefore the app will convert the value to positive.Check the resulting CNC " "code (Gcode etc)." -#: camlib.py:5711 camlib.py:5982 +#: camlib.py:5663 camlib.py:5926 #, 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:5841 +#: camlib.py:5793 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "[ERROR]Expected a Geometry, got %s" -#: camlib.py:5847 +#: camlib.py:5799 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." @@ -1646,7 +1701,7 @@ msgstr "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." -#: camlib.py:5886 +#: camlib.py:5838 msgid "" "[ERROR_NOTCL] The Tool Offset value is too negative to use for the " "current_geometry.\n" @@ -1656,7 +1711,7 @@ msgstr "" "current_geometry.\n" "Raise the value (in module) and try again." -#: camlib.py:6108 +#: camlib.py:6052 msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." msgstr "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." @@ -1664,30 +1719,30 @@ msgstr "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." 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:164 -#: flatcamEditors/FlatCAMExcEditor.py:446 -#: flatcamEditors/FlatCAMExcEditor.py:471 -#: flatcamEditors/FlatCAMGrbEditor.py:287 -#: flatcamEditors/FlatCAMGrbEditor.py:1454 -#: flatcamEditors/FlatCAMGrbEditor.py:1478 +#: flatcamEditors/FlatCAMExcEditor.py:62 flatcamEditors/FlatCAMExcEditor.py:165 +#: flatcamEditors/FlatCAMExcEditor.py:447 +#: flatcamEditors/FlatCAMExcEditor.py:472 +#: flatcamEditors/FlatCAMGrbEditor.py:451 +#: flatcamEditors/FlatCAMGrbEditor.py:1759 +#: flatcamEditors/FlatCAMGrbEditor.py:1787 msgid "Click on target location ..." msgstr "Click on target location ..." -#: flatcamEditors/FlatCAMExcEditor.py:107 +#: flatcamEditors/FlatCAMExcEditor.py:108 msgid "[success] Done. Drill added." msgstr "[success] Done. Drill added." -#: flatcamEditors/FlatCAMExcEditor.py:149 +#: flatcamEditors/FlatCAMExcEditor.py:150 msgid "[WARNING_NOTCL] To add an Drill Array first select a tool in Tool Table" msgstr "" "[WARNING_NOTCL] To add an Drill Array first select a tool in Tool Table" -#: flatcamEditors/FlatCAMExcEditor.py:181 +#: flatcamEditors/FlatCAMExcEditor.py:182 msgid "Click on the Drill Circular Array Start position" msgstr "Click on the Drill Circular Array Start position" -#: flatcamEditors/FlatCAMExcEditor.py:203 -#: flatcamEditors/FlatCAMGrbEditor.py:330 +#: flatcamEditors/FlatCAMExcEditor.py:204 +#: flatcamEditors/FlatCAMGrbEditor.py:494 msgid "" "[ERROR_NOTCL] The value is not Float. Check for comma instead of dot " "separator." @@ -1695,65 +1750,65 @@ msgstr "" "[ERROR_NOTCL] The value is not Float. Check for comma instead of dot " "separator." -#: flatcamEditors/FlatCAMExcEditor.py:206 -#: flatcamEditors/FlatCAMGrbEditor.py:333 +#: 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." -#: flatcamEditors/FlatCAMExcEditor.py:304 +#: flatcamEditors/FlatCAMExcEditor.py:305 msgid "[WARNING_NOTCL] Too many drills for the selected spacing angle." msgstr "[WARNING_NOTCL] Too many drills for the selected spacing angle." -#: flatcamEditors/FlatCAMExcEditor.py:321 +#: flatcamEditors/FlatCAMExcEditor.py:322 msgid "[success] Done. Drill Array added." msgstr "[success] Done. Drill Array added." -#: flatcamEditors/FlatCAMExcEditor.py:332 +#: flatcamEditors/FlatCAMExcEditor.py:333 msgid "Click on the Drill(s) to resize ..." msgstr "Click on the Drill(s) to resize ..." -#: flatcamEditors/FlatCAMExcEditor.py:352 +#: flatcamEditors/FlatCAMExcEditor.py:353 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:422 +#: flatcamEditors/FlatCAMExcEditor.py:423 msgid "[success] Done. Drill Resize completed." msgstr "[success] Done. Drill Resize completed." -#: flatcamEditors/FlatCAMExcEditor.py:425 +#: flatcamEditors/FlatCAMExcEditor.py:426 msgid "[WARNING_NOTCL] Cancelled. No drills selected for resize ..." msgstr "[WARNING_NOTCL] Cancelled. No drills selected for resize ..." -#: flatcamEditors/FlatCAMExcEditor.py:448 -#: flatcamEditors/FlatCAMGrbEditor.py:1456 +#: flatcamEditors/FlatCAMExcEditor.py:449 +#: flatcamEditors/FlatCAMGrbEditor.py:1761 msgid "Click on reference location ..." msgstr "Click on reference location ..." -#: flatcamEditors/FlatCAMExcEditor.py:503 +#: flatcamEditors/FlatCAMExcEditor.py:504 msgid "[success] Done. Drill(s) Move completed." msgstr "[success] Done. Drill(s) Move completed." -#: flatcamEditors/FlatCAMExcEditor.py:556 +#: flatcamEditors/FlatCAMExcEditor.py:557 msgid "[success] Done. Drill(s) copied." msgstr "[success] Done. Drill(s) copied." -#: flatcamEditors/FlatCAMExcEditor.py:754 +#: flatcamEditors/FlatCAMExcEditor.py:758 msgid "Excellon Editor" msgstr "Excellon Editor" -#: flatcamEditors/FlatCAMExcEditor.py:761 -#: flatcamEditors/FlatCAMGrbEditor.py:1715 +#: flatcamEditors/FlatCAMExcEditor.py:765 +#: flatcamEditors/FlatCAMGrbEditor.py:2108 msgid "Name:" msgstr "Name:" -#: flatcamEditors/FlatCAMExcEditor.py:767 flatcamTools/ToolNonCopperClear.py:72 +#: flatcamEditors/FlatCAMExcEditor.py:771 flatcamTools/ToolNonCopperClear.py:72 #: flatcamTools/ToolPaint.py:69 flatcamTools/ToolSolderPaste.py:70 msgid "Tools Table" msgstr "Tools Table" -#: flatcamEditors/FlatCAMExcEditor.py:769 flatcamGUI/ObjectUI.py:538 +#: flatcamEditors/FlatCAMExcEditor.py:773 flatcamGUI/ObjectUI.py:538 msgid "" "Tools in this Excellon object\n" "when are used for drilling." @@ -1761,11 +1816,11 @@ msgstr "" "Tools in this Excellon object\n" "when are used for drilling." -#: flatcamEditors/FlatCAMExcEditor.py:789 +#: flatcamEditors/FlatCAMExcEditor.py:793 msgid "Add/Delete Tool" msgstr "Add/Delete Tool" -#: flatcamEditors/FlatCAMExcEditor.py:791 +#: flatcamEditors/FlatCAMExcEditor.py:795 msgid "" "Add/Delete a tool to the tool list\n" "for this Excellon object." @@ -1773,19 +1828,19 @@ msgstr "" "Add/Delete a tool to the tool list\n" "for this Excellon object." -#: flatcamEditors/FlatCAMExcEditor.py:799 flatcamTools/ToolCutOut.py:77 +#: flatcamEditors/FlatCAMExcEditor.py:803 flatcamTools/ToolCutOut.py:77 msgid "Tool Dia:" msgstr "Tool Dia:" -#: flatcamEditors/FlatCAMExcEditor.py:801 flatcamGUI/ObjectUI.py:975 +#: flatcamEditors/FlatCAMExcEditor.py:805 flatcamGUI/ObjectUI.py:978 msgid "Diameter for the new tool" msgstr "Diameter for the new tool" -#: flatcamEditors/FlatCAMExcEditor.py:810 +#: flatcamEditors/FlatCAMExcEditor.py:814 msgid "Add Tool" msgstr "Add Tool" -#: flatcamEditors/FlatCAMExcEditor.py:812 +#: flatcamEditors/FlatCAMExcEditor.py:816 msgid "" "Add a new tool to the tool list\n" "with the diameter specified above." @@ -1793,11 +1848,11 @@ msgstr "" "Add a new tool to the tool list\n" "with the diameter specified above." -#: flatcamEditors/FlatCAMExcEditor.py:822 +#: flatcamEditors/FlatCAMExcEditor.py:826 msgid "Delete Tool" msgstr "Delete Tool" -#: flatcamEditors/FlatCAMExcEditor.py:824 +#: flatcamEditors/FlatCAMExcEditor.py:828 msgid "" "Delete a tool in the tool list\n" "by selecting a row in the tool table." @@ -1805,39 +1860,39 @@ msgstr "" "Delete a tool in the tool list\n" "by selecting a row in the tool table." -#: flatcamEditors/FlatCAMExcEditor.py:842 +#: flatcamEditors/FlatCAMExcEditor.py:846 msgid "Resize Drill(s)" msgstr "Resize Drill(s)" -#: flatcamEditors/FlatCAMExcEditor.py:844 +#: flatcamEditors/FlatCAMExcEditor.py:848 msgid "Resize a drill or a selection of drills." msgstr "Resize a drill or a selection of drills." -#: flatcamEditors/FlatCAMExcEditor.py:851 +#: flatcamEditors/FlatCAMExcEditor.py:855 msgid "Resize Dia:" msgstr "Resize Dia:" -#: flatcamEditors/FlatCAMExcEditor.py:853 +#: flatcamEditors/FlatCAMExcEditor.py:857 msgid "Diameter to resize to." msgstr "Diameter to resize to." -#: flatcamEditors/FlatCAMExcEditor.py:861 +#: flatcamEditors/FlatCAMExcEditor.py:865 msgid "Resize" msgstr "Resize" -#: flatcamEditors/FlatCAMExcEditor.py:863 +#: flatcamEditors/FlatCAMExcEditor.py:867 msgid "Resize drill(s)" msgstr "Resize drill(s)" -#: flatcamEditors/FlatCAMExcEditor.py:885 flatcamGUI/FlatCAMGUI.py:1598 +#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1612 msgid "Add Drill Array" msgstr "Add Drill Array" -#: flatcamEditors/FlatCAMExcEditor.py:887 +#: flatcamEditors/FlatCAMExcEditor.py:891 msgid "Add an array of drills (linear or circular array)" msgstr "Add an array of drills (linear or circular array)" -#: flatcamEditors/FlatCAMExcEditor.py:893 +#: flatcamEditors/FlatCAMExcEditor.py:897 msgid "" "Select the type of drills array to create.\n" "It can be Linear X(Y) or Circular" @@ -1845,33 +1900,33 @@ msgstr "" "Select the type of drills array to create.\n" "It can be Linear X(Y) or Circular" -#: flatcamEditors/FlatCAMExcEditor.py:896 -#: flatcamEditors/FlatCAMGrbEditor.py:1948 +#: flatcamEditors/FlatCAMExcEditor.py:900 +#: flatcamEditors/FlatCAMGrbEditor.py:2341 msgid "Linear" msgstr "Linear" -#: flatcamEditors/FlatCAMExcEditor.py:897 -#: flatcamEditors/FlatCAMGrbEditor.py:1949 +#: flatcamEditors/FlatCAMExcEditor.py:901 +#: flatcamEditors/FlatCAMGrbEditor.py:2342 msgid "Circular" msgstr "Circular" -#: flatcamEditors/FlatCAMExcEditor.py:904 +#: flatcamEditors/FlatCAMExcEditor.py:908 msgid "Nr of drills:" msgstr "Nr of drills:" -#: flatcamEditors/FlatCAMExcEditor.py:906 +#: flatcamEditors/FlatCAMExcEditor.py:910 msgid "Specify how many drills to be in the array." msgstr "Specify how many drills to be in the array." -#: flatcamEditors/FlatCAMExcEditor.py:923 -#: flatcamEditors/FlatCAMExcEditor.py:968 -#: flatcamEditors/FlatCAMGrbEditor.py:1975 -#: flatcamEditors/FlatCAMGrbEditor.py:2020 +#: flatcamEditors/FlatCAMExcEditor.py:927 +#: flatcamEditors/FlatCAMExcEditor.py:972 +#: flatcamEditors/FlatCAMGrbEditor.py:2368 +#: flatcamEditors/FlatCAMGrbEditor.py:2413 msgid "Direction:" msgstr "Direction:" -#: flatcamEditors/FlatCAMExcEditor.py:925 -#: flatcamEditors/FlatCAMGrbEditor.py:1977 +#: flatcamEditors/FlatCAMExcEditor.py:929 +#: flatcamEditors/FlatCAMGrbEditor.py:2370 msgid "" "Direction on which the linear array is oriented:\n" "- 'X' - horizontal axis \n" @@ -1883,27 +1938,27 @@ msgstr "" "- 'Y' - vertical axis or \n" "- 'Angle' - a custom angle for the array inclination" -#: flatcamEditors/FlatCAMExcEditor.py:938 -#: flatcamEditors/FlatCAMGrbEditor.py:1990 +#: flatcamEditors/FlatCAMExcEditor.py:942 +#: flatcamEditors/FlatCAMGrbEditor.py:2383 msgid "Pitch:" msgstr "Pitch:" -#: flatcamEditors/FlatCAMExcEditor.py:940 -#: flatcamEditors/FlatCAMGrbEditor.py:1992 +#: flatcamEditors/FlatCAMExcEditor.py:944 +#: flatcamEditors/FlatCAMGrbEditor.py:2385 msgid "Pitch = Distance between elements of the array." msgstr "Pitch = Distance between elements of the array." -#: flatcamEditors/FlatCAMExcEditor.py:947 -#: flatcamEditors/FlatCAMExcEditor.py:983 -#: flatcamEditors/FlatCAMGeoEditor.py:664 -#: flatcamEditors/FlatCAMGrbEditor.py:1999 -#: flatcamEditors/FlatCAMGrbEditor.py:2035 -#: flatcamEditors/FlatCAMGrbEditor.py:3931 flatcamTools/ToolTransform.py:68 +#: flatcamEditors/FlatCAMExcEditor.py:951 +#: flatcamEditors/FlatCAMExcEditor.py:987 +#: flatcamEditors/FlatCAMGeoEditor.py:666 +#: flatcamEditors/FlatCAMGrbEditor.py:2392 +#: flatcamEditors/FlatCAMGrbEditor.py:2428 +#: flatcamEditors/FlatCAMGrbEditor.py:4414 flatcamTools/ToolTransform.py:68 msgid "Angle:" msgstr "Angle:" -#: flatcamEditors/FlatCAMExcEditor.py:949 -#: flatcamEditors/FlatCAMGrbEditor.py:2001 +#: flatcamEditors/FlatCAMExcEditor.py:953 +#: flatcamEditors/FlatCAMGrbEditor.py:2394 msgid "" "Angle at which the linear array is placed.\n" "The precision is of max 2 decimals.\n" @@ -1915,8 +1970,8 @@ msgstr "" "Min value is: -359.99 degrees.\n" "Max value is: 360.00 degrees." -#: flatcamEditors/FlatCAMExcEditor.py:970 -#: flatcamEditors/FlatCAMGrbEditor.py:2022 +#: flatcamEditors/FlatCAMExcEditor.py:974 +#: flatcamEditors/FlatCAMGrbEditor.py:2415 msgid "" "Direction for circular array.Can be CW = clockwise or CCW = counter " "clockwise." @@ -1924,12 +1979,12 @@ msgstr "" "Direction for circular array.Can be CW = clockwise or CCW = counter " "clockwise." -#: flatcamEditors/FlatCAMExcEditor.py:985 -#: flatcamEditors/FlatCAMGrbEditor.py:2037 +#: flatcamEditors/FlatCAMExcEditor.py:989 +#: flatcamEditors/FlatCAMGrbEditor.py:2430 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:1447 +#: flatcamEditors/FlatCAMExcEditor.py:1452 msgid "" "[WARNING_NOTCL] Tool already in the original or actual tool list.\n" "Save and reedit Excellon if you need to add this tool. " @@ -1937,21 +1992,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:1456 flatcamGUI/FlatCAMGUI.py:2980 +#: flatcamEditors/FlatCAMExcEditor.py:1461 flatcamGUI/FlatCAMGUI.py:2995 #, python-brace-format msgid "[success] Added new tool with dia: {dia} {units}" msgstr "[success] Added new tool with dia: {dia} {units}" -#: flatcamEditors/FlatCAMExcEditor.py:1488 +#: flatcamEditors/FlatCAMExcEditor.py:1493 msgid "[WARNING_NOTCL] Select a tool in Tool Table" msgstr "[WARNING_NOTCL] Select a tool in Tool Table" -#: flatcamEditors/FlatCAMExcEditor.py:1521 +#: flatcamEditors/FlatCAMExcEditor.py:1526 #, python-brace-format msgid "[success] Deleted tool with dia: {del_dia} {units}" msgstr "[success] Deleted tool with dia: {del_dia} {units}" -#: flatcamEditors/FlatCAMExcEditor.py:2032 +#: flatcamEditors/FlatCAMExcEditor.py:2038 msgid "" "[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon " "creation." @@ -1959,38 +2014,38 @@ msgstr "" "[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon " "creation." -#: flatcamEditors/FlatCAMExcEditor.py:2041 +#: flatcamEditors/FlatCAMExcEditor.py:2047 msgid "Creating Excellon." msgstr "Creating Excellon." -#: flatcamEditors/FlatCAMExcEditor.py:2050 +#: flatcamEditors/FlatCAMExcEditor.py:2056 msgid "[success] Excellon editing finished." msgstr "[success] Excellon editing finished." -#: flatcamEditors/FlatCAMExcEditor.py:2067 +#: flatcamEditors/FlatCAMExcEditor.py:2073 msgid "[WARNING_NOTCL] Cancelled. There is no Tool/Drill selected" msgstr "[WARNING_NOTCL] Cancelled. There is no Tool/Drill selected" -#: flatcamEditors/FlatCAMExcEditor.py:2572 +#: flatcamEditors/FlatCAMExcEditor.py:2605 msgid "[success] Done. Drill(s) deleted." msgstr "[success] Done. Drill(s) deleted." -#: flatcamEditors/FlatCAMExcEditor.py:2642 -#: flatcamEditors/FlatCAMGrbEditor.py:3719 +#: flatcamEditors/FlatCAMExcEditor.py:2675 +#: flatcamEditors/FlatCAMGrbEditor.py:4174 msgid "Click on the circular array Center position" msgstr "Click on the circular array Center position" -#: flatcamEditors/FlatCAMGeoEditor.py:78 -#: flatcamEditors/FlatCAMGrbEditor.py:1865 +#: flatcamEditors/FlatCAMGeoEditor.py:80 +#: flatcamEditors/FlatCAMGrbEditor.py:2258 msgid "Buffer distance:" msgstr "Buffer distance:" -#: flatcamEditors/FlatCAMGeoEditor.py:79 -#: flatcamEditors/FlatCAMGrbEditor.py:1866 +#: flatcamEditors/FlatCAMGeoEditor.py:81 +#: flatcamEditors/FlatCAMGrbEditor.py:2259 msgid "Buffer corner:" msgstr "Buffer corner:" -#: flatcamEditors/FlatCAMGeoEditor.py:81 +#: flatcamEditors/FlatCAMGeoEditor.py:83 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded for exterior buffer.\n" @@ -2004,45 +2059,45 @@ msgstr "" " - 'Beveled:' the corner is a line that directly connects the features " "meeting in the corner" -#: flatcamEditors/FlatCAMGeoEditor.py:87 -#: flatcamEditors/FlatCAMGrbEditor.py:1874 +#: flatcamEditors/FlatCAMGeoEditor.py:89 +#: flatcamEditors/FlatCAMGrbEditor.py:2267 msgid "Round" msgstr "Round" -#: flatcamEditors/FlatCAMGeoEditor.py:88 -#: flatcamEditors/FlatCAMGrbEditor.py:1875 +#: flatcamEditors/FlatCAMGeoEditor.py:90 +#: flatcamEditors/FlatCAMGrbEditor.py:2268 msgid "Square" msgstr "Square" -#: flatcamEditors/FlatCAMGeoEditor.py:89 -#: flatcamEditors/FlatCAMGrbEditor.py:1876 +#: flatcamEditors/FlatCAMGeoEditor.py:91 +#: flatcamEditors/FlatCAMGrbEditor.py:2269 msgid "Beveled" msgstr "Beveled" -#: flatcamEditors/FlatCAMGeoEditor.py:96 +#: flatcamEditors/FlatCAMGeoEditor.py:98 msgid "Buffer Interior" msgstr "Buffer Interior" -#: flatcamEditors/FlatCAMGeoEditor.py:98 +#: flatcamEditors/FlatCAMGeoEditor.py:100 msgid "Buffer Exterior" msgstr "Buffer Exterior" -#: flatcamEditors/FlatCAMGeoEditor.py:104 +#: flatcamEditors/FlatCAMGeoEditor.py:106 msgid "Full Buffer" msgstr "Full Buffer" -#: flatcamEditors/FlatCAMGeoEditor.py:125 -#: flatcamEditors/FlatCAMGeoEditor.py:2609 +#: flatcamEditors/FlatCAMGeoEditor.py:127 +#: flatcamEditors/FlatCAMGeoEditor.py:2696 msgid "Buffer Tool" msgstr "Buffer Tool" -#: flatcamEditors/FlatCAMGeoEditor.py:136 -#: flatcamEditors/FlatCAMGeoEditor.py:153 -#: flatcamEditors/FlatCAMGeoEditor.py:170 -#: flatcamEditors/FlatCAMGeoEditor.py:2627 -#: flatcamEditors/FlatCAMGeoEditor.py:2653 -#: flatcamEditors/FlatCAMGeoEditor.py:2679 -#: flatcamEditors/FlatCAMGrbEditor.py:3771 +#: flatcamEditors/FlatCAMGeoEditor.py:138 +#: flatcamEditors/FlatCAMGeoEditor.py:155 +#: flatcamEditors/FlatCAMGeoEditor.py:172 +#: flatcamEditors/FlatCAMGeoEditor.py:2714 +#: flatcamEditors/FlatCAMGeoEditor.py:2740 +#: flatcamEditors/FlatCAMGeoEditor.py:2766 +#: flatcamEditors/FlatCAMGrbEditor.py:4226 msgid "" "[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and " "retry." @@ -2050,21 +2105,21 @@ msgstr "" "[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and " "retry." -#: flatcamEditors/FlatCAMGeoEditor.py:341 +#: flatcamEditors/FlatCAMGeoEditor.py:343 msgid "Text Tool" msgstr "Text Tool" -#: flatcamEditors/FlatCAMGeoEditor.py:399 flatcamGUI/FlatCAMGUI.py:792 +#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:805 msgid "Tool" msgstr "Tool" -#: flatcamEditors/FlatCAMGeoEditor.py:430 flatcamGUI/FlatCAMGUI.py:3996 -#: flatcamGUI/FlatCAMGUI.py:5202 flatcamGUI/FlatCAMGUI.py:5478 -#: flatcamGUI/FlatCAMGUI.py:5618 flatcamGUI/ObjectUI.py:260 +#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4051 +#: flatcamGUI/FlatCAMGUI.py:5448 flatcamGUI/FlatCAMGUI.py:5724 +#: flatcamGUI/FlatCAMGUI.py:5864 flatcamGUI/ObjectUI.py:260 msgid "Tool dia:" msgstr "Tool dia:" -#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:5620 +#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5866 msgid "" "Diameter of the tool to\n" "be used in the operation." @@ -2072,13 +2127,13 @@ msgstr "" "Diameter of the tool to\n" "be used in the operation." -#: flatcamEditors/FlatCAMGeoEditor.py:441 flatcamGUI/FlatCAMGUI.py:5384 -#: flatcamGUI/FlatCAMGUI.py:5629 flatcamTools/ToolNonCopperClear.py:165 +#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5630 +#: flatcamGUI/FlatCAMGUI.py:5875 flatcamTools/ToolNonCopperClear.py:165 #: flatcamTools/ToolPaint.py:160 msgid "Overlap Rate:" msgstr "Overlap Rate:" -#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamTools/ToolPaint.py:162 +#: flatcamEditors/FlatCAMGeoEditor.py:445 flatcamTools/ToolPaint.py:162 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -2103,14 +2158,14 @@ msgstr "" "Higher values = slow processing and slow execution on CNC\n" "due of too many paths." -#: flatcamEditors/FlatCAMGeoEditor.py:459 flatcamGUI/FlatCAMGUI.py:5400 -#: flatcamGUI/FlatCAMGUI.py:5486 flatcamGUI/FlatCAMGUI.py:5639 +#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5646 +#: flatcamGUI/FlatCAMGUI.py:5732 flatcamGUI/FlatCAMGUI.py:5885 #: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:181 #: flatcamTools/ToolPaint.py:177 msgid "Margin:" msgstr "Margin:" -#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5641 +#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5887 #: flatcamTools/ToolPaint.py:179 msgid "" "Distance by which to avoid\n" @@ -2121,13 +2176,13 @@ msgstr "" "the edges of the polygon to\n" "be painted." -#: flatcamEditors/FlatCAMGeoEditor.py:470 flatcamGUI/FlatCAMGUI.py:5409 -#: flatcamGUI/FlatCAMGUI.py:5650 flatcamTools/ToolNonCopperClear.py:190 +#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5655 +#: flatcamGUI/FlatCAMGUI.py:5896 flatcamTools/ToolNonCopperClear.py:190 #: flatcamTools/ToolPaint.py:188 msgid "Method:" msgstr "Method:" -#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5652 +#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5898 msgid "" "Algorithm to paint the polygon:
Standard: Fixed step inwards." "
Seed-based: Outwards from seed." @@ -2135,14 +2190,14 @@ msgstr "" "Algorithm to paint the polygon:
Standard: Fixed step inwards." "
Seed-based: Outwards from seed." -#: flatcamEditors/FlatCAMGeoEditor.py:485 flatcamGUI/FlatCAMGUI.py:5425 -#: flatcamGUI/FlatCAMGUI.py:5665 flatcamTools/ToolNonCopperClear.py:206 +#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5671 +#: flatcamGUI/FlatCAMGUI.py:5911 flatcamTools/ToolNonCopperClear.py:206 #: flatcamTools/ToolPaint.py:204 msgid "Connect:" msgstr "Connect:" -#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5427 -#: flatcamGUI/FlatCAMGUI.py:5667 flatcamTools/ToolNonCopperClear.py:208 +#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5673 +#: flatcamGUI/FlatCAMGUI.py:5913 flatcamTools/ToolNonCopperClear.py:208 #: flatcamTools/ToolPaint.py:206 msgid "" "Draw lines between resulting\n" @@ -2151,14 +2206,14 @@ msgstr "" "Draw lines between resulting\n" "segments to minimize tool lifts." -#: flatcamEditors/FlatCAMGeoEditor.py:494 flatcamGUI/FlatCAMGUI.py:5434 -#: flatcamGUI/FlatCAMGUI.py:5675 flatcamTools/ToolNonCopperClear.py:215 +#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5680 +#: flatcamGUI/FlatCAMGUI.py:5921 flatcamTools/ToolNonCopperClear.py:215 #: flatcamTools/ToolPaint.py:213 msgid "Contour:" msgstr "Contour:" -#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5436 -#: flatcamGUI/FlatCAMGUI.py:5677 flatcamTools/ToolNonCopperClear.py:217 +#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5682 +#: flatcamGUI/FlatCAMGUI.py:5923 flatcamTools/ToolNonCopperClear.py:217 #: flatcamTools/ToolPaint.py:215 msgid "" "Cut around the perimeter of the polygon\n" @@ -2167,23 +2222,23 @@ msgstr "" "Cut around the perimeter of the polygon\n" "to trim rough edges." -#: flatcamEditors/FlatCAMGeoEditor.py:508 +#: flatcamEditors/FlatCAMGeoEditor.py:510 msgid "Paint" msgstr "Paint" -#: flatcamEditors/FlatCAMGeoEditor.py:526 flatcamGUI/FlatCAMGUI.py:635 -#: flatcamGUI/FlatCAMGUI.py:1851 flatcamGUI/ObjectUI.py:1308 +#: flatcamEditors/FlatCAMGeoEditor.py:528 flatcamGUI/FlatCAMGUI.py:648 +#: flatcamGUI/FlatCAMGUI.py:1865 flatcamGUI/ObjectUI.py:1314 #: flatcamTools/ToolPaint.py:341 msgid "Paint Tool" msgstr "Paint Tool" -#: flatcamEditors/FlatCAMGeoEditor.py:562 +#: flatcamEditors/FlatCAMGeoEditor.py:564 msgid "[WARNING_NOTCL] Paint cancelled. No shape selected." msgstr "[WARNING_NOTCL] Paint cancelled. No shape selected." -#: flatcamEditors/FlatCAMGeoEditor.py:573 flatcamTools/ToolCutOut.py:352 -#: flatcamTools/ToolCutOut.py:496 flatcamTools/ToolCutOut.py:616 -#: flatcamTools/ToolCutOut.py:721 flatcamTools/ToolDblSided.py:363 +#: flatcamEditors/FlatCAMGeoEditor.py:575 flatcamTools/ToolCutOut.py:355 +#: flatcamTools/ToolCutOut.py:512 flatcamTools/ToolCutOut.py:651 +#: flatcamTools/ToolCutOut.py:756 flatcamTools/ToolDblSided.py:363 msgid "" "[WARNING_NOTCL] Tool diameter value is missing or wrong format. Add it and " "retry." @@ -2191,13 +2246,13 @@ msgstr "" "[WARNING_NOTCL] Tool diameter value is missing or wrong format. Add it and " "retry." -#: flatcamEditors/FlatCAMGeoEditor.py:584 +#: flatcamEditors/FlatCAMGeoEditor.py:586 msgid "" "[WARNING_NOTCL] Overlap value is missing or wrong format. Add it and retry." msgstr "" "[WARNING_NOTCL] Overlap value is missing or wrong format. Add it and retry." -#: flatcamEditors/FlatCAMGeoEditor.py:596 +#: flatcamEditors/FlatCAMGeoEditor.py:598 msgid "" "[WARNING_NOTCL] Margin distance value is missing or wrong format. Add it and " "retry." @@ -2205,63 +2260,63 @@ msgstr "" "[WARNING_NOTCL] Margin distance value is missing or wrong format. Add it and " "retry." -#: flatcamEditors/FlatCAMGeoEditor.py:605 -#: flatcamEditors/FlatCAMGeoEditor.py:2634 -#: flatcamEditors/FlatCAMGeoEditor.py:2660 -#: flatcamEditors/FlatCAMGeoEditor.py:2686 +#: flatcamEditors/FlatCAMGeoEditor.py:607 +#: flatcamEditors/FlatCAMGeoEditor.py:2721 +#: flatcamEditors/FlatCAMGeoEditor.py:2747 +#: flatcamEditors/FlatCAMGeoEditor.py:2773 #: flatcamTools/ToolNonCopperClear.py:813 flatcamTools/ToolProperties.py:104 msgid "Tools" msgstr "Tools" -#: flatcamEditors/FlatCAMGeoEditor.py:616 -#: flatcamEditors/FlatCAMGeoEditor.py:989 -#: flatcamEditors/FlatCAMGrbEditor.py:3883 -#: flatcamEditors/FlatCAMGrbEditor.py:4267 flatcamGUI/FlatCAMGUI.py:646 -#: flatcamGUI/FlatCAMGUI.py:1864 flatcamTools/ToolTransform.py:398 +#: flatcamEditors/FlatCAMGeoEditor.py:618 +#: flatcamEditors/FlatCAMGeoEditor.py:991 +#: flatcamEditors/FlatCAMGrbEditor.py:4365 +#: flatcamEditors/FlatCAMGrbEditor.py:4750 flatcamGUI/FlatCAMGUI.py:659 +#: flatcamGUI/FlatCAMGUI.py:1878 flatcamTools/ToolTransform.py:398 msgid "Transform Tool" msgstr "Transform Tool" -#: flatcamEditors/FlatCAMGeoEditor.py:617 -#: flatcamEditors/FlatCAMGeoEditor.py:678 -#: flatcamEditors/FlatCAMGrbEditor.py:3884 -#: flatcamEditors/FlatCAMGrbEditor.py:3945 flatcamTools/ToolTransform.py:24 +#: flatcamEditors/FlatCAMGeoEditor.py:619 +#: flatcamEditors/FlatCAMGeoEditor.py:680 +#: flatcamEditors/FlatCAMGrbEditor.py:4366 +#: flatcamEditors/FlatCAMGrbEditor.py:4428 flatcamTools/ToolTransform.py:24 #: flatcamTools/ToolTransform.py:82 msgid "Rotate" msgstr "Rotate" -#: flatcamEditors/FlatCAMGeoEditor.py:618 -#: flatcamEditors/FlatCAMGrbEditor.py:3885 flatcamTools/ToolTransform.py:25 +#: flatcamEditors/FlatCAMGeoEditor.py:620 +#: flatcamEditors/FlatCAMGrbEditor.py:4367 flatcamTools/ToolTransform.py:25 msgid "Skew/Shear" msgstr "Skew/Shear" -#: flatcamEditors/FlatCAMGeoEditor.py:619 -#: flatcamEditors/FlatCAMGrbEditor.py:1920 -#: flatcamEditors/FlatCAMGrbEditor.py:3886 flatcamGUI/FlatCAMGUI.py:709 -#: flatcamGUI/FlatCAMGUI.py:1930 flatcamGUI/ObjectUI.py:100 +#: flatcamEditors/FlatCAMGeoEditor.py:621 +#: flatcamEditors/FlatCAMGrbEditor.py:2313 +#: flatcamEditors/FlatCAMGrbEditor.py:4368 flatcamGUI/FlatCAMGUI.py:722 +#: flatcamGUI/FlatCAMGUI.py:1944 flatcamGUI/ObjectUI.py:100 #: flatcamTools/ToolTransform.py:26 msgid "Scale" msgstr "Scale" -#: flatcamEditors/FlatCAMGeoEditor.py:620 -#: flatcamEditors/FlatCAMGrbEditor.py:3887 flatcamTools/ToolTransform.py:27 +#: flatcamEditors/FlatCAMGeoEditor.py:622 +#: flatcamEditors/FlatCAMGrbEditor.py:4369 flatcamTools/ToolTransform.py:27 msgid "Mirror (Flip)" msgstr "Mirror (Flip)" -#: flatcamEditors/FlatCAMGeoEditor.py:621 -#: flatcamEditors/FlatCAMGrbEditor.py:3888 flatcamGUI/ObjectUI.py:127 -#: flatcamGUI/ObjectUI.py:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamEditors/FlatCAMGeoEditor.py:623 +#: flatcamEditors/FlatCAMGrbEditor.py:4370 flatcamGUI/ObjectUI.py:127 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 #: flatcamTools/ToolTransform.py:28 msgid "Offset" msgstr "Offset" -#: flatcamEditors/FlatCAMGeoEditor.py:632 -#: flatcamEditors/FlatCAMGrbEditor.py:3899 +#: flatcamEditors/FlatCAMGeoEditor.py:634 +#: flatcamEditors/FlatCAMGrbEditor.py:4382 #, python-format msgid "Editor %s" msgstr "Editor %s" -#: flatcamEditors/FlatCAMGeoEditor.py:666 -#: flatcamEditors/FlatCAMGrbEditor.py:3933 flatcamTools/ToolTransform.py:70 +#: flatcamEditors/FlatCAMGeoEditor.py:668 +#: flatcamEditors/FlatCAMGrbEditor.py:4416 flatcamTools/ToolTransform.py:70 msgid "" "Angle for Rotation action, in degrees.\n" "Float number between -360 and 359.\n" @@ -2273,8 +2328,8 @@ msgstr "" "Positive numbers for CW motion.\n" "Negative numbers for CCW motion." -#: flatcamEditors/FlatCAMGeoEditor.py:680 -#: flatcamEditors/FlatCAMGrbEditor.py:3947 +#: flatcamEditors/FlatCAMGeoEditor.py:682 +#: flatcamEditors/FlatCAMGrbEditor.py:4430 msgid "" "Rotate the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2284,15 +2339,15 @@ msgstr "" "The point of reference is the middle of\n" "the bounding box for all selected shapes." -#: flatcamEditors/FlatCAMGeoEditor.py:703 -#: flatcamEditors/FlatCAMGrbEditor.py:3970 flatcamTools/ToolTransform.py:107 +#: flatcamEditors/FlatCAMGeoEditor.py:705 +#: flatcamEditors/FlatCAMGrbEditor.py:4453 flatcamTools/ToolTransform.py:107 msgid "Angle X:" msgstr "Angle X:" -#: flatcamEditors/FlatCAMGeoEditor.py:705 -#: flatcamEditors/FlatCAMGeoEditor.py:723 -#: flatcamEditors/FlatCAMGrbEditor.py:3972 -#: flatcamEditors/FlatCAMGrbEditor.py:3990 flatcamTools/ToolTransform.py:109 +#: flatcamEditors/FlatCAMGeoEditor.py:707 +#: flatcamEditors/FlatCAMGeoEditor.py:725 +#: flatcamEditors/FlatCAMGrbEditor.py:4455 +#: flatcamEditors/FlatCAMGrbEditor.py:4473 flatcamTools/ToolTransform.py:109 #: flatcamTools/ToolTransform.py:127 msgid "" "Angle for Skew action, in degrees.\n" @@ -2301,15 +2356,15 @@ msgstr "" "Angle for Skew action, in degrees.\n" "Float number between -360 and 359." -#: flatcamEditors/FlatCAMGeoEditor.py:714 -#: flatcamEditors/FlatCAMGrbEditor.py:3981 flatcamTools/ToolTransform.py:118 +#: flatcamEditors/FlatCAMGeoEditor.py:716 +#: flatcamEditors/FlatCAMGrbEditor.py:4464 flatcamTools/ToolTransform.py:118 msgid "Skew X" msgstr "Skew X" -#: flatcamEditors/FlatCAMGeoEditor.py:716 -#: flatcamEditors/FlatCAMGeoEditor.py:734 -#: flatcamEditors/FlatCAMGrbEditor.py:3983 -#: flatcamEditors/FlatCAMGrbEditor.py:4001 +#: flatcamEditors/FlatCAMGeoEditor.py:718 +#: flatcamEditors/FlatCAMGeoEditor.py:736 +#: flatcamEditors/FlatCAMGrbEditor.py:4466 +#: flatcamEditors/FlatCAMGrbEditor.py:4484 msgid "" "Skew/shear the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2319,35 +2374,35 @@ msgstr "" "The point of reference is the middle of\n" "the bounding box for all selected shapes." -#: flatcamEditors/FlatCAMGeoEditor.py:721 -#: flatcamEditors/FlatCAMGrbEditor.py:3988 flatcamTools/ToolTransform.py:125 +#: flatcamEditors/FlatCAMGeoEditor.py:723 +#: flatcamEditors/FlatCAMGrbEditor.py:4471 flatcamTools/ToolTransform.py:125 msgid "Angle Y:" msgstr "Angle Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:732 -#: flatcamEditors/FlatCAMGrbEditor.py:3999 flatcamTools/ToolTransform.py:136 +#: flatcamEditors/FlatCAMGeoEditor.py:734 +#: flatcamEditors/FlatCAMGrbEditor.py:4482 flatcamTools/ToolTransform.py:136 msgid "Skew Y" msgstr "Skew Y" -#: flatcamEditors/FlatCAMGeoEditor.py:760 -#: flatcamEditors/FlatCAMGrbEditor.py:4027 flatcamTools/ToolTransform.py:164 +#: flatcamEditors/FlatCAMGeoEditor.py:762 +#: flatcamEditors/FlatCAMGrbEditor.py:4510 flatcamTools/ToolTransform.py:164 msgid "Factor X:" msgstr "Factor X:" -#: flatcamEditors/FlatCAMGeoEditor.py:762 -#: flatcamEditors/FlatCAMGrbEditor.py:4029 flatcamTools/ToolTransform.py:166 +#: flatcamEditors/FlatCAMGeoEditor.py:764 +#: flatcamEditors/FlatCAMGrbEditor.py:4512 flatcamTools/ToolTransform.py:166 msgid "Factor for Scale action over X axis." msgstr "Factor for Scale action over X axis." -#: flatcamEditors/FlatCAMGeoEditor.py:770 -#: flatcamEditors/FlatCAMGrbEditor.py:4037 flatcamTools/ToolTransform.py:174 +#: flatcamEditors/FlatCAMGeoEditor.py:772 +#: flatcamEditors/FlatCAMGrbEditor.py:4520 flatcamTools/ToolTransform.py:174 msgid "Scale X" msgstr "Scale X" -#: flatcamEditors/FlatCAMGeoEditor.py:772 -#: flatcamEditors/FlatCAMGeoEditor.py:789 -#: flatcamEditors/FlatCAMGrbEditor.py:4039 -#: flatcamEditors/FlatCAMGrbEditor.py:4056 +#: flatcamEditors/FlatCAMGeoEditor.py:774 +#: flatcamEditors/FlatCAMGeoEditor.py:791 +#: flatcamEditors/FlatCAMGrbEditor.py:4522 +#: flatcamEditors/FlatCAMGrbEditor.py:4539 msgid "" "Scale the selected shape(s).\n" "The point of reference depends on \n" @@ -2357,29 +2412,29 @@ msgstr "" "The point of reference depends on \n" "the Scale reference checkbox state." -#: flatcamEditors/FlatCAMGeoEditor.py:777 -#: flatcamEditors/FlatCAMGrbEditor.py:4044 flatcamTools/ToolTransform.py:181 +#: flatcamEditors/FlatCAMGeoEditor.py:779 +#: flatcamEditors/FlatCAMGrbEditor.py:4527 flatcamTools/ToolTransform.py:181 msgid "Factor Y:" msgstr "Factor Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:779 -#: flatcamEditors/FlatCAMGrbEditor.py:4046 flatcamTools/ToolTransform.py:183 +#: flatcamEditors/FlatCAMGeoEditor.py:781 +#: flatcamEditors/FlatCAMGrbEditor.py:4529 flatcamTools/ToolTransform.py:183 msgid "Factor for Scale action over Y axis." msgstr "Factor for Scale action over Y axis." -#: flatcamEditors/FlatCAMGeoEditor.py:787 -#: flatcamEditors/FlatCAMGrbEditor.py:4054 flatcamTools/ToolTransform.py:191 +#: flatcamEditors/FlatCAMGeoEditor.py:789 +#: flatcamEditors/FlatCAMGrbEditor.py:4537 flatcamTools/ToolTransform.py:191 msgid "Scale Y" msgstr "Scale Y" -#: flatcamEditors/FlatCAMGeoEditor.py:796 -#: flatcamEditors/FlatCAMGrbEditor.py:4063 flatcamGUI/FlatCAMGUI.py:6024 +#: flatcamEditors/FlatCAMGeoEditor.py:798 +#: flatcamEditors/FlatCAMGrbEditor.py:4546 flatcamGUI/FlatCAMGUI.py:6270 #: flatcamTools/ToolTransform.py:200 msgid "Link" msgstr "Link" -#: flatcamEditors/FlatCAMGeoEditor.py:798 -#: flatcamEditors/FlatCAMGrbEditor.py:4065 +#: flatcamEditors/FlatCAMGeoEditor.py:800 +#: flatcamEditors/FlatCAMGrbEditor.py:4548 msgid "" "Scale the selected shape(s)\n" "using the Scale Factor X for both axis." @@ -2387,14 +2442,14 @@ msgstr "" "Scale the selected shape(s)\n" "using the Scale Factor X for both axis." -#: flatcamEditors/FlatCAMGeoEditor.py:804 -#: flatcamEditors/FlatCAMGrbEditor.py:4071 flatcamGUI/FlatCAMGUI.py:6032 +#: flatcamEditors/FlatCAMGeoEditor.py:806 +#: flatcamEditors/FlatCAMGrbEditor.py:4554 flatcamGUI/FlatCAMGUI.py:6278 #: flatcamTools/ToolTransform.py:208 msgid "Scale Reference" msgstr "Scale Reference" -#: flatcamEditors/FlatCAMGeoEditor.py:806 -#: flatcamEditors/FlatCAMGrbEditor.py:4073 +#: flatcamEditors/FlatCAMGeoEditor.py:808 +#: flatcamEditors/FlatCAMGrbEditor.py:4556 msgid "" "Scale the selected shape(s)\n" "using the origin reference when checked,\n" @@ -2406,25 +2461,25 @@ msgstr "" "and the center of the biggest bounding box\n" "of the selected shapes when unchecked." -#: flatcamEditors/FlatCAMGeoEditor.py:834 -#: flatcamEditors/FlatCAMGrbEditor.py:4102 flatcamTools/ToolTransform.py:238 +#: flatcamEditors/FlatCAMGeoEditor.py:836 +#: flatcamEditors/FlatCAMGrbEditor.py:4585 flatcamTools/ToolTransform.py:238 msgid "Value X:" msgstr "Value X:" -#: flatcamEditors/FlatCAMGeoEditor.py:836 -#: flatcamEditors/FlatCAMGrbEditor.py:4104 flatcamTools/ToolTransform.py:240 +#: flatcamEditors/FlatCAMGeoEditor.py:838 +#: flatcamEditors/FlatCAMGrbEditor.py:4587 flatcamTools/ToolTransform.py:240 msgid "Value for Offset action on X axis." msgstr "Value for Offset action on X axis." -#: flatcamEditors/FlatCAMGeoEditor.py:844 -#: flatcamEditors/FlatCAMGrbEditor.py:4112 flatcamTools/ToolTransform.py:248 +#: flatcamEditors/FlatCAMGeoEditor.py:846 +#: flatcamEditors/FlatCAMGrbEditor.py:4595 flatcamTools/ToolTransform.py:248 msgid "Offset X" msgstr "Offset X" -#: flatcamEditors/FlatCAMGeoEditor.py:846 -#: flatcamEditors/FlatCAMGeoEditor.py:864 -#: flatcamEditors/FlatCAMGrbEditor.py:4114 -#: flatcamEditors/FlatCAMGrbEditor.py:4132 +#: flatcamEditors/FlatCAMGeoEditor.py:848 +#: flatcamEditors/FlatCAMGeoEditor.py:866 +#: flatcamEditors/FlatCAMGrbEditor.py:4597 +#: flatcamEditors/FlatCAMGrbEditor.py:4615 msgid "" "Offset the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2434,30 +2489,30 @@ msgstr "" "The point of reference is the middle of\n" "the bounding box for all selected shapes.\n" -#: flatcamEditors/FlatCAMGeoEditor.py:852 -#: flatcamEditors/FlatCAMGrbEditor.py:4120 flatcamTools/ToolTransform.py:255 +#: flatcamEditors/FlatCAMGeoEditor.py:854 +#: flatcamEditors/FlatCAMGrbEditor.py:4603 flatcamTools/ToolTransform.py:255 msgid "Value Y:" msgstr "Value Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:854 -#: flatcamEditors/FlatCAMGrbEditor.py:4122 flatcamTools/ToolTransform.py:257 +#: flatcamEditors/FlatCAMGeoEditor.py:856 +#: flatcamEditors/FlatCAMGrbEditor.py:4605 flatcamTools/ToolTransform.py:257 msgid "Value for Offset action on Y axis." msgstr "Value for Offset action on Y axis." -#: flatcamEditors/FlatCAMGeoEditor.py:862 -#: flatcamEditors/FlatCAMGrbEditor.py:4130 flatcamTools/ToolTransform.py:265 +#: flatcamEditors/FlatCAMGeoEditor.py:864 +#: flatcamEditors/FlatCAMGrbEditor.py:4613 flatcamTools/ToolTransform.py:265 msgid "Offset Y" msgstr "Offset Y" -#: flatcamEditors/FlatCAMGeoEditor.py:893 -#: flatcamEditors/FlatCAMGrbEditor.py:4161 flatcamTools/ToolTransform.py:295 +#: flatcamEditors/FlatCAMGeoEditor.py:895 +#: flatcamEditors/FlatCAMGrbEditor.py:4644 flatcamTools/ToolTransform.py:295 msgid "Flip on X" msgstr "Flip on X" -#: flatcamEditors/FlatCAMGeoEditor.py:895 -#: flatcamEditors/FlatCAMGeoEditor.py:903 -#: flatcamEditors/FlatCAMGrbEditor.py:4163 -#: flatcamEditors/FlatCAMGrbEditor.py:4171 +#: flatcamEditors/FlatCAMGeoEditor.py:897 +#: flatcamEditors/FlatCAMGeoEditor.py:905 +#: flatcamEditors/FlatCAMGrbEditor.py:4646 +#: flatcamEditors/FlatCAMGrbEditor.py:4654 msgid "" "Flip the selected shape(s) over the X axis.\n" "Does not create a new shape." @@ -2465,18 +2520,18 @@ msgstr "" "Flip the selected shape(s) over the X axis.\n" "Does not create a new shape." -#: flatcamEditors/FlatCAMGeoEditor.py:901 -#: flatcamEditors/FlatCAMGrbEditor.py:4169 flatcamTools/ToolTransform.py:303 +#: flatcamEditors/FlatCAMGeoEditor.py:903 +#: flatcamEditors/FlatCAMGrbEditor.py:4652 flatcamTools/ToolTransform.py:303 msgid "Flip on Y" msgstr "Flip on Y" -#: flatcamEditors/FlatCAMGeoEditor.py:910 -#: flatcamEditors/FlatCAMGrbEditor.py:4178 flatcamTools/ToolTransform.py:312 +#: flatcamEditors/FlatCAMGeoEditor.py:912 +#: flatcamEditors/FlatCAMGrbEditor.py:4661 flatcamTools/ToolTransform.py:312 msgid "Ref Pt" msgstr "Ref Pt" -#: flatcamEditors/FlatCAMGeoEditor.py:912 -#: flatcamEditors/FlatCAMGrbEditor.py:4180 +#: flatcamEditors/FlatCAMGeoEditor.py:914 +#: flatcamEditors/FlatCAMGrbEditor.py:4663 msgid "" "Flip the selected shape(s)\n" "around the point in Point Entry Field.\n" @@ -2498,13 +2553,13 @@ msgstr "" "Or enter the coords in format (x, y) in the\n" "Point Entry field and click Flip on X(Y)" -#: flatcamEditors/FlatCAMGeoEditor.py:924 -#: flatcamEditors/FlatCAMGrbEditor.py:4192 flatcamTools/ToolTransform.py:325 +#: flatcamEditors/FlatCAMGeoEditor.py:926 +#: flatcamEditors/FlatCAMGrbEditor.py:4675 flatcamTools/ToolTransform.py:325 msgid "Point:" msgstr "Point:" -#: flatcamEditors/FlatCAMGeoEditor.py:926 -#: flatcamEditors/FlatCAMGrbEditor.py:4194 +#: flatcamEditors/FlatCAMGeoEditor.py:928 +#: flatcamEditors/FlatCAMGrbEditor.py:4677 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" @@ -2514,8 +2569,8 @@ 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." -#: flatcamEditors/FlatCAMGeoEditor.py:938 -#: flatcamEditors/FlatCAMGrbEditor.py:4206 flatcamTools/ToolTransform.py:339 +#: flatcamEditors/FlatCAMGeoEditor.py:940 +#: flatcamEditors/FlatCAMGrbEditor.py:4689 flatcamTools/ToolTransform.py:339 msgid "" "The point coordinates can be captured by\n" "left click on canvas together with pressing\n" @@ -2525,253 +2580,249 @@ msgstr "" "left click on canvas together with pressing\n" "SHIFT key. Then click Add button to insert." -#: flatcamEditors/FlatCAMGeoEditor.py:1053 -#: flatcamEditors/FlatCAMGrbEditor.py:4331 +#: flatcamEditors/FlatCAMGeoEditor.py:1055 +#: flatcamEditors/FlatCAMGrbEditor.py:4814 msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected." msgstr "[WARNING_NOTCL] Transformation cancelled. No shape selected." -#: flatcamEditors/FlatCAMGeoEditor.py:1074 -#: flatcamEditors/FlatCAMGrbEditor.py:4351 flatcamTools/ToolTransform.py:468 +#: flatcamEditors/FlatCAMGeoEditor.py:1076 +#: flatcamEditors/FlatCAMGrbEditor.py:4834 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:1111 -#: flatcamEditors/FlatCAMGrbEditor.py:4388 flatcamTools/ToolTransform.py:502 +#: flatcamEditors/FlatCAMGeoEditor.py:1113 +#: flatcamEditors/FlatCAMGrbEditor.py:4877 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:1132 -#: flatcamEditors/FlatCAMGrbEditor.py:4409 flatcamTools/ToolTransform.py:520 +#: flatcamEditors/FlatCAMGeoEditor.py:1134 +#: flatcamEditors/FlatCAMGrbEditor.py:4904 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:1153 -#: flatcamEditors/FlatCAMGrbEditor.py:4430 flatcamTools/ToolTransform.py:538 +#: flatcamEditors/FlatCAMGeoEditor.py:1155 +#: flatcamEditors/FlatCAMGrbEditor.py:4931 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:1190 -#: flatcamEditors/FlatCAMGrbEditor.py:4467 flatcamTools/ToolTransform.py:572 +#: flatcamEditors/FlatCAMGeoEditor.py:1192 +#: flatcamEditors/FlatCAMGrbEditor.py:4972 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:1222 -#: flatcamEditors/FlatCAMGrbEditor.py:4499 flatcamTools/ToolTransform.py:601 +#: flatcamEditors/FlatCAMGeoEditor.py:1224 +#: flatcamEditors/FlatCAMGrbEditor.py:5010 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:1243 -#: flatcamEditors/FlatCAMGrbEditor.py:4520 flatcamTools/ToolTransform.py:619 +#: flatcamEditors/FlatCAMGeoEditor.py:1245 +#: flatcamEditors/FlatCAMGrbEditor.py:5036 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:1261 -#: flatcamEditors/FlatCAMGrbEditor.py:4538 +#: flatcamEditors/FlatCAMGeoEditor.py:1263 +#: flatcamEditors/FlatCAMGrbEditor.py:5059 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:1264 -#: flatcamEditors/FlatCAMGrbEditor.py:4541 flatcamTools/ToolTransform.py:640 +#: flatcamEditors/FlatCAMGeoEditor.py:1266 +#: flatcamEditors/FlatCAMGrbEditor.py:5062 flatcamTools/ToolTransform.py:640 msgid "Appying Rotate" msgstr "Appying Rotate" -#: flatcamEditors/FlatCAMGeoEditor.py:1292 -#: flatcamEditors/FlatCAMGrbEditor.py:4569 +#: flatcamEditors/FlatCAMGeoEditor.py:1294 +#: flatcamEditors/FlatCAMGrbEditor.py:5093 msgid "[success] Done. Rotate completed." msgstr "[success] Done. Rotate completed." -#: flatcamEditors/FlatCAMGeoEditor.py:1308 -#: flatcamEditors/FlatCAMGrbEditor.py:4585 +#: flatcamEditors/FlatCAMGeoEditor.py:1310 +#: flatcamEditors/FlatCAMGrbEditor.py:5112 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:1311 -#: flatcamEditors/FlatCAMGrbEditor.py:4588 flatcamTools/ToolTransform.py:692 +#: flatcamEditors/FlatCAMGeoEditor.py:1313 +#: flatcamEditors/FlatCAMGrbEditor.py:5115 flatcamTools/ToolTransform.py:691 msgid "Applying Flip" msgstr "Applying Flip" -#: flatcamEditors/FlatCAMGeoEditor.py:1341 -#: flatcamEditors/FlatCAMGrbEditor.py:4618 flatcamTools/ToolTransform.py:735 +#: flatcamEditors/FlatCAMGeoEditor.py:1343 +#: flatcamEditors/FlatCAMGrbEditor.py:5152 flatcamTools/ToolTransform.py:733 msgid "[success] Flip on the Y axis done ..." msgstr "[success] Flip on the Y axis done ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1344 -#: flatcamEditors/FlatCAMGrbEditor.py:4621 flatcamTools/ToolTransform.py:745 +#: flatcamEditors/FlatCAMGeoEditor.py:1346 +#: flatcamEditors/FlatCAMGrbEditor.py:5160 flatcamTools/ToolTransform.py:742 msgid "[success] Flip on the X axis done ..." msgstr "[success] Flip on the X axis done ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1363 -#: flatcamEditors/FlatCAMGrbEditor.py:4640 +#: flatcamEditors/FlatCAMGeoEditor.py:1365 +#: flatcamEditors/FlatCAMGrbEditor.py:5180 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:1366 -#: flatcamEditors/FlatCAMGrbEditor.py:4643 flatcamTools/ToolTransform.py:762 +#: flatcamEditors/FlatCAMGeoEditor.py:1368 +#: flatcamEditors/FlatCAMGrbEditor.py:5183 flatcamTools/ToolTransform.py:760 msgid "Applying Skew" msgstr "Applying Skew" -#: flatcamEditors/FlatCAMGeoEditor.py:1391 -#: flatcamEditors/FlatCAMGrbEditor.py:4668 flatcamTools/ToolTransform.py:793 +#: flatcamEditors/FlatCAMGeoEditor.py:1393 +#: flatcamEditors/FlatCAMGrbEditor.py:5216 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:1395 -#: flatcamEditors/FlatCAMGrbEditor.py:4672 flatcamTools/ToolTransform.py:797 +#: flatcamEditors/FlatCAMGeoEditor.py:1397 +#: flatcamEditors/FlatCAMGrbEditor.py:5220 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:1406 -#: flatcamEditors/FlatCAMGrbEditor.py:4683 +#: flatcamEditors/FlatCAMGeoEditor.py:1408 +#: flatcamEditors/FlatCAMGrbEditor.py:5239 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:1409 -#: flatcamEditors/FlatCAMGrbEditor.py:4686 flatcamTools/ToolTransform.py:811 +#: flatcamEditors/FlatCAMGeoEditor.py:1411 +#: flatcamEditors/FlatCAMGrbEditor.py:5242 flatcamTools/ToolTransform.py:809 msgid "Applying Scale" msgstr "Applying Scale" -#: flatcamEditors/FlatCAMGeoEditor.py:1442 -#: flatcamEditors/FlatCAMGrbEditor.py:4719 flatcamTools/ToolTransform.py:849 +#: flatcamEditors/FlatCAMGeoEditor.py:1444 +#: flatcamEditors/FlatCAMGrbEditor.py:5278 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:1445 -#: flatcamEditors/FlatCAMGrbEditor.py:4722 flatcamTools/ToolTransform.py:852 +#: flatcamEditors/FlatCAMGeoEditor.py:1447 +#: flatcamEditors/FlatCAMGrbEditor.py:5281 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:1454 -#: flatcamEditors/FlatCAMGrbEditor.py:4731 +#: flatcamEditors/FlatCAMGeoEditor.py:1456 +#: flatcamEditors/FlatCAMGrbEditor.py:5294 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:1457 -#: flatcamEditors/FlatCAMGrbEditor.py:4734 flatcamTools/ToolTransform.py:864 +#: flatcamEditors/FlatCAMGeoEditor.py:1459 +#: flatcamEditors/FlatCAMGrbEditor.py:5297 flatcamTools/ToolTransform.py:861 msgid "Applying Offset" msgstr "Applying Offset" -#: flatcamEditors/FlatCAMGeoEditor.py:1481 -#: flatcamEditors/FlatCAMGrbEditor.py:4758 flatcamTools/ToolTransform.py:894 +#: flatcamEditors/FlatCAMGeoEditor.py:1483 +#: flatcamEditors/FlatCAMGrbEditor.py:5318 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:1485 -#: flatcamEditors/FlatCAMGrbEditor.py:4762 flatcamTools/ToolTransform.py:898 +#: flatcamEditors/FlatCAMGeoEditor.py:1487 +#: flatcamEditors/FlatCAMGrbEditor.py:5322 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:1489 -#: flatcamEditors/FlatCAMGrbEditor.py:4766 +#: flatcamEditors/FlatCAMGeoEditor.py:1491 +#: flatcamEditors/FlatCAMGrbEditor.py:5326 msgid "Rotate ..." msgstr "Rotate ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1490 -#: flatcamEditors/FlatCAMGeoEditor.py:1547 -#: flatcamEditors/FlatCAMGeoEditor.py:1564 -#: flatcamEditors/FlatCAMGrbEditor.py:4767 -#: flatcamEditors/FlatCAMGrbEditor.py:4824 -#: flatcamEditors/FlatCAMGrbEditor.py:4841 +#: flatcamEditors/FlatCAMGeoEditor.py:1492 +#: flatcamEditors/FlatCAMGeoEditor.py:1549 +#: flatcamEditors/FlatCAMGeoEditor.py:1566 +#: flatcamEditors/FlatCAMGrbEditor.py:5327 +#: flatcamEditors/FlatCAMGrbEditor.py:5384 +#: flatcamEditors/FlatCAMGrbEditor.py:5401 msgid "Enter an Angle Value (degrees):" msgstr "Enter an Angle Value (degrees):" -#: flatcamEditors/FlatCAMGeoEditor.py:1499 -#: flatcamEditors/FlatCAMGrbEditor.py:4776 +#: flatcamEditors/FlatCAMGeoEditor.py:1501 +#: flatcamEditors/FlatCAMGrbEditor.py:5336 msgid "[success] Geometry shape rotate done..." msgstr "[success] Geometry shape rotate done..." -#: flatcamEditors/FlatCAMGeoEditor.py:1504 -#: flatcamEditors/FlatCAMGrbEditor.py:4781 +#: flatcamEditors/FlatCAMGeoEditor.py:1506 +#: flatcamEditors/FlatCAMGrbEditor.py:5341 msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..." msgstr "[WARNING_NOTCL] Geometry shape rotate cancelled..." -#: flatcamEditors/FlatCAMGeoEditor.py:1510 -#: flatcamEditors/FlatCAMGrbEditor.py:4787 +#: flatcamEditors/FlatCAMGeoEditor.py:1512 +#: flatcamEditors/FlatCAMGrbEditor.py:5347 msgid "Offset on X axis ..." msgstr "Offset on X axis ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1511 -#: flatcamEditors/FlatCAMGeoEditor.py:1530 -#: flatcamEditors/FlatCAMGrbEditor.py:4788 -#: flatcamEditors/FlatCAMGrbEditor.py:4807 +#: flatcamEditors/FlatCAMGeoEditor.py:1513 +#: flatcamEditors/FlatCAMGeoEditor.py:1532 +#: flatcamEditors/FlatCAMGrbEditor.py:5348 +#: flatcamEditors/FlatCAMGrbEditor.py:5367 #, python-format msgid "Enter a distance Value (%s):" msgstr "Enter a distance Value (%s):" -#: flatcamEditors/FlatCAMGeoEditor.py:1520 -#: flatcamEditors/FlatCAMGrbEditor.py:4797 +#: flatcamEditors/FlatCAMGeoEditor.py:1522 +#: flatcamEditors/FlatCAMGrbEditor.py:5357 msgid "[success] Geometry shape offset on X axis done..." msgstr "[success] Geometry shape offset on X axis done..." -#: flatcamEditors/FlatCAMGeoEditor.py:1524 -#: flatcamEditors/FlatCAMGrbEditor.py:4801 +#: flatcamEditors/FlatCAMGeoEditor.py:1526 +#: flatcamEditors/FlatCAMGrbEditor.py:5361 msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..." msgstr "[WARNING_NOTCL] Geometry shape offset X cancelled..." -#: flatcamEditors/FlatCAMGeoEditor.py:1529 -#: flatcamEditors/FlatCAMGrbEditor.py:4806 +#: flatcamEditors/FlatCAMGeoEditor.py:1531 +#: flatcamEditors/FlatCAMGrbEditor.py:5366 msgid "Offset on Y axis ..." msgstr "Offset on Y axis ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1539 -#: flatcamEditors/FlatCAMGrbEditor.py:4816 +#: flatcamEditors/FlatCAMGeoEditor.py:1541 +#: flatcamEditors/FlatCAMGrbEditor.py:5376 msgid "[success] Geometry shape offset on Y axis done..." msgstr "[success] Geometry shape offset on Y axis done..." -#: flatcamEditors/FlatCAMGeoEditor.py:1543 -#: flatcamEditors/FlatCAMGrbEditor.py:4820 +#: flatcamEditors/FlatCAMGeoEditor.py:1545 +#: flatcamEditors/FlatCAMGrbEditor.py:5380 msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..." msgstr "[WARNING_NOTCL] Geometry shape offset Y cancelled..." -#: flatcamEditors/FlatCAMGeoEditor.py:1546 -#: flatcamEditors/FlatCAMGrbEditor.py:4823 +#: flatcamEditors/FlatCAMGeoEditor.py:1548 +#: flatcamEditors/FlatCAMGrbEditor.py:5383 msgid "Skew on X axis ..." msgstr "Skew on X axis ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1556 -#: flatcamEditors/FlatCAMGrbEditor.py:4833 +#: flatcamEditors/FlatCAMGeoEditor.py:1558 +#: flatcamEditors/FlatCAMGrbEditor.py:5393 msgid "[success] Geometry shape skew on X axis done..." msgstr "[success] Geometry shape skew on X axis done..." -#: flatcamEditors/FlatCAMGeoEditor.py:1560 -#: flatcamEditors/FlatCAMGrbEditor.py:4837 +#: flatcamEditors/FlatCAMGeoEditor.py:1562 +#: flatcamEditors/FlatCAMGrbEditor.py:5397 msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..." msgstr "[WARNING_NOTCL] Geometry shape skew X cancelled..." -#: flatcamEditors/FlatCAMGeoEditor.py:1563 -#: flatcamEditors/FlatCAMGrbEditor.py:4840 +#: flatcamEditors/FlatCAMGeoEditor.py:1565 +#: flatcamEditors/FlatCAMGrbEditor.py:5400 msgid "Skew on Y axis ..." msgstr "Skew on Y axis ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1573 -#: flatcamEditors/FlatCAMGrbEditor.py:4850 +#: flatcamEditors/FlatCAMGeoEditor.py:1575 +#: flatcamEditors/FlatCAMGrbEditor.py:5410 msgid "[success] Geometry shape skew on Y axis done..." msgstr "[success] Geometry shape skew on Y axis done..." -#: flatcamEditors/FlatCAMGeoEditor.py:1577 -#: flatcamEditors/FlatCAMGrbEditor.py:4854 +#: flatcamEditors/FlatCAMGeoEditor.py:1579 +#: flatcamEditors/FlatCAMGrbEditor.py:5414 msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..." msgstr "[WARNING_NOTCL] Geometry shape skew Y cancelled..." -#: flatcamEditors/FlatCAMGeoEditor.py:1942 #: flatcamEditors/FlatCAMGeoEditor.py:1943 #: flatcamEditors/FlatCAMGeoEditor.py:1994 -#: flatcamEditors/FlatCAMGeoEditor.py:1995 -#: flatcamEditors/FlatCAMGrbEditor.py:1081 -#: flatcamEditors/FlatCAMGrbEditor.py:1082 -#: flatcamEditors/FlatCAMGrbEditor.py:1142 -#: flatcamEditors/FlatCAMGrbEditor.py:1143 +#: flatcamEditors/FlatCAMGrbEditor.py:1351 +#: flatcamEditors/FlatCAMGrbEditor.py:1420 msgid "Click on Center point ..." msgstr "Click on Center point ..." #: flatcamEditors/FlatCAMGeoEditor.py:1950 -#: flatcamEditors/FlatCAMGrbEditor.py:1090 +#: flatcamEditors/FlatCAMGrbEditor.py:1359 msgid "Click on Perimeter point to complete ..." msgstr "Click on Perimeter point to complete ..." @@ -2779,79 +2830,80 @@ msgstr "Click on Perimeter point to complete ..." msgid "[success] Done. Adding Circle completed." msgstr "[success] Done. Adding Circle completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2015 -#: flatcamEditors/FlatCAMGrbEditor.py:1168 +#: flatcamEditors/FlatCAMGeoEditor.py:2014 +#: flatcamEditors/FlatCAMGrbEditor.py:1445 msgid "Click on Start point ..." msgstr "Click on Start point ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2017 -#: flatcamEditors/FlatCAMGrbEditor.py:1170 +#: flatcamEditors/FlatCAMGeoEditor.py:2016 +#: flatcamEditors/FlatCAMGrbEditor.py:1447 msgid "Click on Point3 ..." msgstr "Click on Point3 ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2019 -#: flatcamEditors/FlatCAMGrbEditor.py:1172 +#: flatcamEditors/FlatCAMGeoEditor.py:2018 +#: flatcamEditors/FlatCAMGrbEditor.py:1449 msgid "Click on Stop point ..." msgstr "Click on Stop point ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2024 -#: flatcamEditors/FlatCAMGrbEditor.py:1177 +#: flatcamEditors/FlatCAMGeoEditor.py:2023 +#: flatcamEditors/FlatCAMGrbEditor.py:1454 msgid "Click on Stop point to complete ..." msgstr "Click on Stop point to complete ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2026 -#: flatcamEditors/FlatCAMGrbEditor.py:1179 +#: flatcamEditors/FlatCAMGeoEditor.py:2025 +#: flatcamEditors/FlatCAMGrbEditor.py:1456 msgid "Click on Point2 to complete ..." msgstr "Click on Point2 to complete ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2028 -#: flatcamEditors/FlatCAMGrbEditor.py:1181 +#: flatcamEditors/FlatCAMGeoEditor.py:2027 +#: flatcamEditors/FlatCAMGrbEditor.py:1458 msgid "Click on Center point to complete ..." msgstr "Click on Center point to complete ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2040 -#: flatcamEditors/FlatCAMGrbEditor.py:1193 +#: flatcamEditors/FlatCAMGeoEditor.py:2039 +#: flatcamEditors/FlatCAMGrbEditor.py:1470 #, python-format msgid "Direction: %s" msgstr "Direction: %s" -#: flatcamEditors/FlatCAMGeoEditor.py:2050 -#: flatcamEditors/FlatCAMGrbEditor.py:1203 +#: flatcamEditors/FlatCAMGeoEditor.py:2049 +#: flatcamEditors/FlatCAMGrbEditor.py:1480 msgid "Mode: Start -> Stop -> Center. Click on Start point ..." msgstr "Mode: Start -> Stop -> Center. Click on Start point ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2053 -#: flatcamEditors/FlatCAMGrbEditor.py:1206 +#: flatcamEditors/FlatCAMGeoEditor.py:2052 +#: flatcamEditors/FlatCAMGrbEditor.py:1483 msgid "Mode: Point1 -> Point3 -> Point2. Click on Point1 ..." msgstr "Mode: Point1 -> Point3 -> Point2. Click on Point1 ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2056 -#: flatcamEditors/FlatCAMGrbEditor.py:1209 +#: flatcamEditors/FlatCAMGeoEditor.py:2055 +#: flatcamEditors/FlatCAMGrbEditor.py:1486 msgid "Mode: Center -> Start -> Stop. Click on Center point ..." msgstr "Mode: Center -> Start -> Stop. Click on Center point ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2194 +#: flatcamEditors/FlatCAMGeoEditor.py:2193 msgid "[success] Done. Arc completed." msgstr "[success] Done. Arc completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2213 +#: flatcamEditors/FlatCAMGeoEditor.py:2212 +#: flatcamEditors/FlatCAMGeoEditor.py:2265 +#: flatcamEditors/FlatCAMGeoEditor.py:2640 msgid "Click on 1st corner ..." msgstr "Click on 1st corner ..." +#: flatcamEditors/FlatCAMGeoEditor.py:2218 +#| msgid "Click on Stop point to complete ..." +msgid "Click on opposite corner to complete ..." +msgstr "Click on opposite corner to complete ..." + #: flatcamEditors/FlatCAMGeoEditor.py:2246 msgid "[success] Done. Rectangle completed." msgstr "[success] Done. Rectangle completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2265 -#: flatcamEditors/FlatCAMGrbEditor.py:627 -msgid "Click on 1st point ..." -msgstr "Click on 1st point ..." - #: flatcamEditors/FlatCAMGeoEditor.py:2272 -#: flatcamEditors/FlatCAMGrbEditor.py:637 -#: flatcamEditors/FlatCAMGrbEditor.py:904 -msgid "Click on next Point or click Right mouse button to complete ..." -msgstr "Click on next Point or click Right mouse button to complete ..." +#| msgid "Click on next Point or click Right mouse button to complete ..." +msgid "Click on next Point or click right mouse button to complete ..." +msgstr "Click on next Point or click right mouse button to complete ..." #: flatcamEditors/FlatCAMGeoEditor.py:2300 msgid "[success] Done. Polygon completed." @@ -2859,8 +2911,8 @@ msgstr "[success] Done. Polygon completed." #: flatcamEditors/FlatCAMGeoEditor.py:2310 #: flatcamEditors/FlatCAMGeoEditor.py:2356 -#: flatcamEditors/FlatCAMGrbEditor.py:808 -#: flatcamEditors/FlatCAMGrbEditor.py:981 +#: flatcamEditors/FlatCAMGrbEditor.py:1055 +#: flatcamEditors/FlatCAMGrbEditor.py:1249 msgid "Backtracked one point ..." msgstr "Backtracked one point ..." @@ -2868,32 +2920,31 @@ msgstr "Backtracked one point ..." msgid "[success] Done. Path completed." msgstr "[success] Done. Path completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2450 -#: flatcamEditors/FlatCAMGeoEditor.py:3611 -msgid "[WARNING_NOTCL] Move cancelled. No shape selected." -msgstr "[WARNING_NOTCL] Move cancelled. No shape selected." +#: flatcamEditors/FlatCAMGeoEditor.py:2461 +#| msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!" +msgid "[WARNING_NOTCL] MOVE: No shape selected. Select a shape to move ..." +msgstr "[WARNING_NOTCL] MOVE: No shape selected. Select a shape to move ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2454 -msgid "Click on reference point." -msgstr "Click on reference point." +#: flatcamEditors/FlatCAMGeoEditor.py:2463 +#: flatcamEditors/FlatCAMGeoEditor.py:2475 +#| msgid "Click on reference point." +msgid " MOVE: Click on reference point ..." +msgstr " MOVE: Click on reference point ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2457 -msgid "Click on destination point." -msgstr "Click on destination point." +#: flatcamEditors/FlatCAMGeoEditor.py:2466 +#| msgid "Click on destination point." +msgid " Click on destination point ..." +msgstr " Click on destination point ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2488 +#: flatcamEditors/FlatCAMGeoEditor.py:2500 msgid "[success] Done. Geometry(s) Move completed." msgstr "[success] Done. Geometry(s) Move completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2533 +#: flatcamEditors/FlatCAMGeoEditor.py:2620 msgid "[success] Done. Geometry(s) Copy completed." msgstr "[success] Done. Geometry(s) Copy completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2553 -msgid "Click on the Destination point..." -msgstr "Click on the Destination point..." - -#: flatcamEditors/FlatCAMGeoEditor.py:2567 +#: flatcamEditors/FlatCAMGeoEditor.py:2654 #, python-format msgid "" "[ERROR]Font not supported. Only Regular, Bold, Italic and BoldItalic are " @@ -2902,60 +2953,60 @@ msgstr "" "[ERROR]Font not supported. Only Regular, Bold, Italic and BoldItalic are " "supported. Error: %s" -#: flatcamEditors/FlatCAMGeoEditor.py:2577 +#: flatcamEditors/FlatCAMGeoEditor.py:2664 msgid "[success] Done. Adding Text completed." msgstr "[success] Done. Adding Text completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2605 +#: flatcamEditors/FlatCAMGeoEditor.py:2692 msgid "Create buffer geometry ..." msgstr "Create buffer geometry ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2616 -#: flatcamEditors/FlatCAMGeoEditor.py:2642 -#: flatcamEditors/FlatCAMGeoEditor.py:2668 +#: flatcamEditors/FlatCAMGeoEditor.py:2703 +#: flatcamEditors/FlatCAMGeoEditor.py:2729 +#: flatcamEditors/FlatCAMGeoEditor.py:2755 msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected." msgstr "[WARNING_NOTCL] Buffer cancelled. No shape selected." -#: flatcamEditors/FlatCAMGeoEditor.py:2638 -#: flatcamEditors/FlatCAMGrbEditor.py:3807 +#: flatcamEditors/FlatCAMGeoEditor.py:2725 +#: flatcamEditors/FlatCAMGrbEditor.py:4276 msgid "[success] Done. Buffer Tool completed." msgstr "[success] Done. Buffer Tool completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2664 +#: flatcamEditors/FlatCAMGeoEditor.py:2751 msgid "[success] Done. Buffer Int Tool completed." msgstr "[success] Done. Buffer Int Tool completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2690 +#: flatcamEditors/FlatCAMGeoEditor.py:2777 msgid "[success] Done. Buffer Ext Tool completed." msgstr "[success] Done. Buffer Ext Tool completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2723 +#: flatcamEditors/FlatCAMGeoEditor.py:2810 msgid "Create Paint geometry ..." msgstr "Create Paint geometry ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2737 -#: flatcamEditors/FlatCAMGrbEditor.py:1667 +#: flatcamEditors/FlatCAMGeoEditor.py:2824 +#: flatcamEditors/FlatCAMGrbEditor.py:2059 msgid "Shape transformations ..." msgstr "Shape transformations ..." -#: flatcamEditors/FlatCAMGeoEditor.py:3237 +#: flatcamEditors/FlatCAMGeoEditor.py:3327 #, python-brace-format msgid "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" msgstr "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" -#: flatcamEditors/FlatCAMGeoEditor.py:3618 +#: flatcamEditors/FlatCAMGeoEditor.py:3703 msgid "[WARNING_NOTCL] Copy cancelled. No shape selected." msgstr "[WARNING_NOTCL] Copy cancelled. No shape selected." -#: flatcamEditors/FlatCAMGeoEditor.py:3625 flatcamGUI/FlatCAMGUI.py:2710 -#: flatcamGUI/FlatCAMGUI.py:2756 flatcamGUI/FlatCAMGUI.py:2774 -#: flatcamGUI/FlatCAMGUI.py:2905 flatcamGUI/FlatCAMGUI.py:2917 -#: flatcamGUI/FlatCAMGUI.py:2951 +#: flatcamEditors/FlatCAMGeoEditor.py:3710 flatcamGUI/FlatCAMGUI.py:2725 +#: flatcamGUI/FlatCAMGUI.py:2771 flatcamGUI/FlatCAMGUI.py:2789 +#: flatcamGUI/FlatCAMGUI.py:2920 flatcamGUI/FlatCAMGUI.py:2932 +#: flatcamGUI/FlatCAMGUI.py:2966 msgid "Click on target point." msgstr "Click on target point." -#: flatcamEditors/FlatCAMGeoEditor.py:3868 -#: flatcamEditors/FlatCAMGeoEditor.py:3902 +#: flatcamEditors/FlatCAMGeoEditor.py:3953 +#: flatcamEditors/FlatCAMGeoEditor.py:3987 msgid "" "[WARNING_NOTCL] A selection of at least 2 geo items is required to do " "Intersection." @@ -2963,9 +3014,9 @@ msgstr "" "[WARNING_NOTCL] A selection of at least 2 geo items is required to do " "Intersection." -#: flatcamEditors/FlatCAMGeoEditor.py:3986 -#: flatcamEditors/FlatCAMGeoEditor.py:4023 -#: flatcamEditors/FlatCAMGeoEditor.py:4099 +#: flatcamEditors/FlatCAMGeoEditor.py:4071 +#: flatcamEditors/FlatCAMGeoEditor.py:4108 +#: flatcamEditors/FlatCAMGeoEditor.py:4184 msgid "" "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to " "generate an 'inside' shape" @@ -2973,52 +3024,52 @@ msgstr "" "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to " "generate an 'inside' shape" -#: flatcamEditors/FlatCAMGeoEditor.py:3994 -#: flatcamEditors/FlatCAMGeoEditor.py:4032 -#: flatcamEditors/FlatCAMGeoEditor.py:4107 +#: flatcamEditors/FlatCAMGeoEditor.py:4079 +#: flatcamEditors/FlatCAMGeoEditor.py:4117 +#: flatcamEditors/FlatCAMGeoEditor.py:4192 msgid "[WARNING_NOTCL] Nothing selected for buffering." msgstr "[WARNING_NOTCL] Nothing selected for buffering." -#: flatcamEditors/FlatCAMGeoEditor.py:3998 -#: flatcamEditors/FlatCAMGeoEditor.py:4036 -#: flatcamEditors/FlatCAMGeoEditor.py:4111 +#: flatcamEditors/FlatCAMGeoEditor.py:4083 +#: flatcamEditors/FlatCAMGeoEditor.py:4121 +#: flatcamEditors/FlatCAMGeoEditor.py:4196 msgid "[WARNING_NOTCL] Invalid distance for buffering." msgstr "[WARNING_NOTCL] Invalid distance for buffering." -#: flatcamEditors/FlatCAMGeoEditor.py:4008 -#: flatcamEditors/FlatCAMGeoEditor.py:4120 +#: flatcamEditors/FlatCAMGeoEditor.py:4093 +#: flatcamEditors/FlatCAMGeoEditor.py:4205 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:4016 +#: flatcamEditors/FlatCAMGeoEditor.py:4101 msgid "[success] Full buffer geometry created." msgstr "[success] Full buffer geometry created." -#: flatcamEditors/FlatCAMGeoEditor.py:4046 +#: flatcamEditors/FlatCAMGeoEditor.py:4131 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:4061 +#: flatcamEditors/FlatCAMGeoEditor.py:4146 msgid "[success] Interior buffer geometry created." msgstr "[success] Interior buffer geometry created." -#: flatcamEditors/FlatCAMGeoEditor.py:4132 +#: flatcamEditors/FlatCAMGeoEditor.py:4217 msgid "[success] Exterior buffer geometry created." msgstr "[success] Exterior buffer geometry created." -#: flatcamEditors/FlatCAMGeoEditor.py:4196 +#: flatcamEditors/FlatCAMGeoEditor.py:4281 msgid "[WARNING_NOTCL] Nothing selected for painting." msgstr "[WARNING_NOTCL] Nothing selected for painting." -#: flatcamEditors/FlatCAMGeoEditor.py:4202 +#: flatcamEditors/FlatCAMGeoEditor.py:4287 msgid "[WARNING] Invalid value for {}" msgstr "[WARNING] Invalid value for {}" -#: flatcamEditors/FlatCAMGeoEditor.py:4208 +#: flatcamEditors/FlatCAMGeoEditor.py:4293 msgid "" "[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 " "(100%)." @@ -3026,7 +3077,7 @@ msgstr "" "[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 " "(100%)." -#: flatcamEditors/FlatCAMGeoEditor.py:4267 +#: flatcamEditors/FlatCAMGeoEditor.py:4352 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -3037,185 +3088,210 @@ msgstr "" "different method of Paint\n" "%s" -#: flatcamEditors/FlatCAMGeoEditor.py:4278 +#: flatcamEditors/FlatCAMGeoEditor.py:4363 msgid "[success] Paint done." msgstr "[success] Paint done." -#: flatcamEditors/FlatCAMGrbEditor.py:52 +#: flatcamEditors/FlatCAMGrbEditor.py:200 msgid "[WARNING_NOTCL] To add an Pad first select a aperture in Aperture Table" msgstr "" "[WARNING_NOTCL] To add an Pad first select a aperture in Aperture Table" -#: flatcamEditors/FlatCAMGrbEditor.py:58 flatcamEditors/FlatCAMGrbEditor.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:206 +#: flatcamEditors/FlatCAMGrbEditor.py:398 msgid "" "[WARNING_NOTCL] Aperture size is zero. It needs to be greater than zero." msgstr "" "[WARNING_NOTCL] Aperture size is zero. It needs to be greater than zero." -#: flatcamEditors/FlatCAMGrbEditor.py:81 flatcamEditors/FlatCAMGrbEditor.py:86 +#: flatcamEditors/FlatCAMGrbEditor.py:229 +#: flatcamEditors/FlatCAMGrbEditor.py:234 msgid "Click to place ..." msgstr "Click to place ..." -#: flatcamEditors/FlatCAMGrbEditor.py:191 -#: flatcamEditors/FlatCAMGrbEditor.py:469 +#: flatcamEditors/FlatCAMGrbEditor.py:357 +#: flatcamEditors/FlatCAMGrbEditor.py:660 msgid "" "Incompatible aperture type. Select an aperture with type 'C', 'R' or 'O'." msgstr "" "Incompatible aperture type. Select an aperture with type 'C', 'R' or 'O'." -#: flatcamEditors/FlatCAMGrbEditor.py:203 +#: flatcamEditors/FlatCAMGrbEditor.py:369 msgid "[success] Done. Adding Pad completed." msgstr "[success] Done. Adding Pad completed." -#: flatcamEditors/FlatCAMGrbEditor.py:225 +#: flatcamEditors/FlatCAMGrbEditor.py:391 msgid "" "[WARNING_NOTCL] To add an Pad Array first select a aperture in Aperture Table" msgstr "" "[WARNING_NOTCL] To add an Pad Array first select a aperture in Aperture Table" -#: flatcamEditors/FlatCAMGrbEditor.py:304 +#: flatcamEditors/FlatCAMGrbEditor.py:468 msgid "Click on the Pad Circular Array Start position" msgstr "Click on the Pad Circular Array Start position" -#: flatcamEditors/FlatCAMGrbEditor.py:494 +#: flatcamEditors/FlatCAMGrbEditor.py:685 msgid "[WARNING_NOTCL] Too many Pads for the selected spacing angle." msgstr "[WARNING_NOTCL] Too many Pads for the selected spacing angle." -#: flatcamEditors/FlatCAMGrbEditor.py:516 +#: flatcamEditors/FlatCAMGrbEditor.py:707 msgid "[success] Done. Pad Array added." msgstr "[success] Done. Pad Array added." -#: flatcamEditors/FlatCAMGrbEditor.py:537 +#: flatcamEditors/FlatCAMGrbEditor.py:728 msgid "Select shape(s) and then click ..." msgstr "Select shape(s) and then click ..." -#: flatcamEditors/FlatCAMGrbEditor.py:548 +#: flatcamEditors/FlatCAMGrbEditor.py:739 msgid "[ERROR_NOTCL] Failed. Nothing selected." msgstr "[ERROR_NOTCL] Failed. Nothing selected." -#: flatcamEditors/FlatCAMGrbEditor.py:575 +#: flatcamEditors/FlatCAMGrbEditor.py:754 +msgid "" +"[WARNING_NOTCL] Failed. Poligonize works only on geometries belonging to the " +"same aperture." +msgstr "" +"[WARNING_NOTCL] Failed. Poligonize works only on geometries belonging to the " +"same aperture." + +#: flatcamEditors/FlatCAMGrbEditor.py:807 msgid "[success] Done. Poligonize completed." msgstr "[success] Done. Poligonize completed." -#: flatcamEditors/FlatCAMGrbEditor.py:625 -#: flatcamEditors/FlatCAMGrbEditor.py:825 -#: flatcamEditors/FlatCAMGrbEditor.py:849 +#: flatcamEditors/FlatCAMGrbEditor.py:857 +#: flatcamEditors/FlatCAMGrbEditor.py:1072 +#: flatcamEditors/FlatCAMGrbEditor.py:1096 msgid "Corner Mode 1: 45 degrees ..." msgstr "Corner Mode 1: 45 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:813 -#: flatcamEditors/FlatCAMGrbEditor.py:846 +#: flatcamEditors/FlatCAMGrbEditor.py:859 +msgid "Click on 1st point ..." +msgstr "Click on 1st point ..." + +#: flatcamEditors/FlatCAMGrbEditor.py:869 +#: flatcamEditors/FlatCAMGrbEditor.py:1167 +msgid "Click on next Point or click Right mouse button to complete ..." +msgstr "Click on next Point or click Right mouse button to complete ..." + +#: flatcamEditors/FlatCAMGrbEditor.py:1060 +#: flatcamEditors/FlatCAMGrbEditor.py:1093 msgid "Corner Mode 2: Reverse 45 degrees ..." msgstr "Corner Mode 2: Reverse 45 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:816 -#: flatcamEditors/FlatCAMGrbEditor.py:843 +#: flatcamEditors/FlatCAMGrbEditor.py:1063 +#: flatcamEditors/FlatCAMGrbEditor.py:1090 msgid "Corner Mode 3: 90 degrees ..." msgstr "Corner Mode 3: 90 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:819 -#: flatcamEditors/FlatCAMGrbEditor.py:840 +#: flatcamEditors/FlatCAMGrbEditor.py:1066 +#: flatcamEditors/FlatCAMGrbEditor.py:1087 msgid "Corner Mode 4: Reverse 90 degrees ..." msgstr "Corner Mode 4: Reverse 90 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:822 -#: flatcamEditors/FlatCAMGrbEditor.py:837 +#: flatcamEditors/FlatCAMGrbEditor.py:1069 +#: flatcamEditors/FlatCAMGrbEditor.py:1084 msgid "Corner Mode 5: Free angle ..." msgstr "Corner Mode 5: Free angle ..." -#: flatcamEditors/FlatCAMGrbEditor.py:875 -#: flatcamEditors/FlatCAMGrbEditor.py:1012 -#: flatcamEditors/FlatCAMGrbEditor.py:1050 +#: flatcamEditors/FlatCAMGrbEditor.py:1123 +#: flatcamEditors/FlatCAMGrbEditor.py:1281 +#: flatcamEditors/FlatCAMGrbEditor.py:1320 msgid "Track Mode 1: 45 degrees ..." msgstr "Track Mode 1: 45 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:992 -#: flatcamEditors/FlatCAMGrbEditor.py:1045 +#: flatcamEditors/FlatCAMGrbEditor.py:1261 +#: flatcamEditors/FlatCAMGrbEditor.py:1315 msgid "Track Mode 2: Reverse 45 degrees ..." msgstr "Track Mode 2: Reverse 45 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:997 -#: flatcamEditors/FlatCAMGrbEditor.py:1040 +#: flatcamEditors/FlatCAMGrbEditor.py:1266 +#: flatcamEditors/FlatCAMGrbEditor.py:1310 msgid "Track Mode 3: 90 degrees ..." msgstr "Track Mode 3: 90 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1002 -#: flatcamEditors/FlatCAMGrbEditor.py:1035 +#: flatcamEditors/FlatCAMGrbEditor.py:1271 +#: flatcamEditors/FlatCAMGrbEditor.py:1305 msgid "Track Mode 4: Reverse 90 degrees ..." msgstr "Track Mode 4: Reverse 90 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1007 -#: flatcamEditors/FlatCAMGrbEditor.py:1030 +#: flatcamEditors/FlatCAMGrbEditor.py:1276 +#: flatcamEditors/FlatCAMGrbEditor.py:1300 msgid "Track Mode 5: Free angle ..." msgstr "Track Mode 5: Free angle ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1367 +#: flatcamEditors/FlatCAMGrbEditor.py:1666 msgid "Scale the selected Gerber apertures ..." msgstr "Scale the selected Gerber apertures ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1409 +#: flatcamEditors/FlatCAMGrbEditor.py:1708 msgid "Buffer the selected apertures ..." msgstr "Buffer the selected apertures ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1510 +#: flatcamEditors/FlatCAMGrbEditor.py:1752 +#| msgid "[WARNING_NOTCL] Cancelled. Nothing selected to move." +msgid "[WARNING_NOTCL] Nothing selected to move ..." +msgstr "[WARNING_NOTCL] Nothing selected to move ..." + +#: flatcamEditors/FlatCAMGrbEditor.py:1875 msgid "[success] Done. Apertures Move completed." msgstr "[success] Done. Apertures Move completed." -#: flatcamEditors/FlatCAMGrbEditor.py:1565 +#: flatcamEditors/FlatCAMGrbEditor.py:1951 msgid "[success] Done. Apertures copied." msgstr "[success] Done. Apertures copied." -#: flatcamEditors/FlatCAMGrbEditor.py:1708 flatcamGUI/FlatCAMGUI.py:1590 +#: flatcamEditors/FlatCAMGrbEditor.py:2101 flatcamGUI/FlatCAMGUI.py:1604 +#: flatcamGUI/FlatCAMGUI.py:4322 msgid "Gerber Editor" msgstr "Gerber Editor" -#: flatcamEditors/FlatCAMGrbEditor.py:1727 flatcamGUI/ObjectUI.py:192 +#: flatcamEditors/FlatCAMGrbEditor.py:2120 flatcamGUI/ObjectUI.py:192 msgid "Apertures:" msgstr "Apertures:" -#: flatcamEditors/FlatCAMGrbEditor.py:1729 flatcamGUI/ObjectUI.py:194 +#: flatcamEditors/FlatCAMGrbEditor.py:2122 flatcamGUI/ObjectUI.py:194 msgid "Apertures Table for the Gerber Object." msgstr "Apertures Table for the Gerber Object." -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 msgid "Code" msgstr "Code" -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 -#: flatcamGUI/ObjectUI.py:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "Type" msgstr "Type" -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 msgid "Size" msgstr "Size" -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 msgid "Dim" msgstr "Dim" -#: flatcamEditors/FlatCAMGrbEditor.py:1744 flatcamGUI/ObjectUI.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:2137 flatcamGUI/ObjectUI.py:232 msgid "Index" msgstr "Index" -#: flatcamEditors/FlatCAMGrbEditor.py:1746 flatcamGUI/ObjectUI.py:234 +#: flatcamEditors/FlatCAMGrbEditor.py:2139 flatcamGUI/ObjectUI.py:234 msgid "Aperture Code" msgstr "Aperture Code" -#: flatcamEditors/FlatCAMGrbEditor.py:1748 flatcamGUI/ObjectUI.py:236 +#: flatcamEditors/FlatCAMGrbEditor.py:2141 flatcamGUI/ObjectUI.py:236 msgid "Type of aperture: circular, rectangle, macros etc" msgstr "Type of aperture: circular, rectangle, macros etc" -#: flatcamEditors/FlatCAMGrbEditor.py:1750 -#: flatcamEditors/FlatCAMGrbEditor.py:1783 flatcamGUI/ObjectUI.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:2143 +#: flatcamEditors/FlatCAMGrbEditor.py:2176 flatcamGUI/ObjectUI.py:238 msgid "Aperture Size:" msgstr "Aperture Size:" -#: flatcamEditors/FlatCAMGrbEditor.py:1752 flatcamGUI/ObjectUI.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:2145 flatcamGUI/ObjectUI.py:240 msgid "" "Aperture Dimensions:\n" " - (width, height) for R, O type.\n" @@ -3225,15 +3301,15 @@ msgstr "" " - (width, height) for R, O type.\n" " - (dia, nVertices) for P type" -#: flatcamEditors/FlatCAMGrbEditor.py:1773 +#: flatcamEditors/FlatCAMGrbEditor.py:2166 msgid "Aperture Code:" msgstr "Aperture Code:" -#: flatcamEditors/FlatCAMGrbEditor.py:1775 +#: flatcamEditors/FlatCAMGrbEditor.py:2168 msgid "Code for the new aperture" msgstr "Code for the new aperture" -#: flatcamEditors/FlatCAMGrbEditor.py:1785 +#: flatcamEditors/FlatCAMGrbEditor.py:2178 msgid "" "Size for the new aperture.\n" "If aperture type is 'R' or 'O' then\n" @@ -3247,11 +3323,11 @@ msgstr "" "calculated as:\n" "sqrt(width**2 + height**2)" -#: flatcamEditors/FlatCAMGrbEditor.py:1797 +#: flatcamEditors/FlatCAMGrbEditor.py:2190 msgid "Aperture Type:" msgstr "Aperture Type:" -#: flatcamEditors/FlatCAMGrbEditor.py:1799 +#: flatcamEditors/FlatCAMGrbEditor.py:2192 msgid "" "Select the type of new aperture. Can be:\n" "C = circular\n" @@ -3263,11 +3339,11 @@ msgstr "" "R = rectangular\n" "O = oblong" -#: flatcamEditors/FlatCAMGrbEditor.py:1810 +#: flatcamEditors/FlatCAMGrbEditor.py:2203 msgid "Aperture Dim:" msgstr "Aperture Dim:" -#: flatcamEditors/FlatCAMGrbEditor.py:1812 +#: flatcamEditors/FlatCAMGrbEditor.py:2205 msgid "" "Dimensions for the new aperture.\n" "Active only for rectangular apertures (type R).\n" @@ -3277,31 +3353,31 @@ msgstr "" "Active only for rectangular apertures (type R).\n" "The format is (width, height)" -#: flatcamEditors/FlatCAMGrbEditor.py:1821 +#: flatcamEditors/FlatCAMGrbEditor.py:2214 msgid "Add/Delete Aperture:" msgstr "Add/Delete Aperture:" -#: flatcamEditors/FlatCAMGrbEditor.py:1823 +#: flatcamEditors/FlatCAMGrbEditor.py:2216 msgid "Add/Delete an aperture in the aperture table" msgstr "Add/Delete an aperture in the aperture table" -#: flatcamEditors/FlatCAMGrbEditor.py:1832 +#: flatcamEditors/FlatCAMGrbEditor.py:2225 msgid "Add a new aperture to the aperture list." msgstr "Add a new aperture to the aperture list." -#: flatcamEditors/FlatCAMGrbEditor.py:1837 +#: flatcamEditors/FlatCAMGrbEditor.py:2230 msgid "Delete a aperture in the aperture list" msgstr "Delete a aperture in the aperture list" -#: flatcamEditors/FlatCAMGrbEditor.py:1853 +#: flatcamEditors/FlatCAMGrbEditor.py:2246 msgid "Buffer Aperture:" msgstr "Buffer Aperture:" -#: flatcamEditors/FlatCAMGrbEditor.py:1855 +#: flatcamEditors/FlatCAMGrbEditor.py:2248 msgid "Buffer a aperture in the aperture list" msgstr "Buffer a aperture in the aperture list" -#: flatcamEditors/FlatCAMGrbEditor.py:1868 +#: flatcamEditors/FlatCAMGrbEditor.py:2261 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded.\n" @@ -3315,24 +3391,24 @@ msgstr "" " - 'Beveled:' the corner is a line that directly connects the features " "meeting in the corner" -#: flatcamEditors/FlatCAMGrbEditor.py:1883 flatcamGUI/FlatCAMGUI.py:708 -#: flatcamGUI/FlatCAMGUI.py:1929 +#: flatcamEditors/FlatCAMGrbEditor.py:2276 flatcamGUI/FlatCAMGUI.py:721 +#: flatcamGUI/FlatCAMGUI.py:1943 msgid "Buffer" msgstr "Buffer" -#: flatcamEditors/FlatCAMGrbEditor.py:1897 +#: flatcamEditors/FlatCAMGrbEditor.py:2290 msgid "Scale Aperture:" msgstr "Scale Aperture:" -#: flatcamEditors/FlatCAMGrbEditor.py:1899 +#: flatcamEditors/FlatCAMGrbEditor.py:2292 msgid "Scale a aperture in the aperture list" msgstr "Scale a aperture in the aperture list" -#: flatcamEditors/FlatCAMGrbEditor.py:1907 +#: flatcamEditors/FlatCAMGrbEditor.py:2300 msgid "Scale factor:" msgstr "Scale factor:" -#: flatcamEditors/FlatCAMGrbEditor.py:1909 +#: flatcamEditors/FlatCAMGrbEditor.py:2302 msgid "" "The factor by which to scale the selected aperture.\n" "Values can be between 0.0000 and 999.9999" @@ -3340,16 +3416,16 @@ msgstr "" "The factor by which to scale the selected aperture.\n" "Values can be between 0.0000 and 999.9999" -#: flatcamEditors/FlatCAMGrbEditor.py:1937 flatcamGUI/FlatCAMGUI.py:698 -#: flatcamGUI/FlatCAMGUI.py:1919 +#: flatcamEditors/FlatCAMGrbEditor.py:2330 flatcamGUI/FlatCAMGUI.py:711 +#: flatcamGUI/FlatCAMGUI.py:1933 msgid "Add Pad Array" msgstr "Add Pad Array" -#: flatcamEditors/FlatCAMGrbEditor.py:1939 +#: flatcamEditors/FlatCAMGrbEditor.py:2332 msgid "Add an array of pads (linear or circular array)" msgstr "Add an array of pads (linear or circular array)" -#: flatcamEditors/FlatCAMGrbEditor.py:1945 +#: flatcamEditors/FlatCAMGrbEditor.py:2338 msgid "" "Select the type of pads array to create.\n" "It can be Linear X(Y) or Circular" @@ -3357,16 +3433,16 @@ msgstr "" "Select the type of pads array to create.\n" "It can be Linear X(Y) or Circular" -#: flatcamEditors/FlatCAMGrbEditor.py:1956 +#: flatcamEditors/FlatCAMGrbEditor.py:2349 msgid "Nr of pads:" msgstr "Nr of pads:" -#: flatcamEditors/FlatCAMGrbEditor.py:1958 +#: flatcamEditors/FlatCAMGrbEditor.py:2351 msgid "Specify how many pads to be in the array." msgstr "Specify how many pads to be in the array." -#: flatcamEditors/FlatCAMGrbEditor.py:2431 -#: flatcamEditors/FlatCAMGrbEditor.py:2435 +#: flatcamEditors/FlatCAMGrbEditor.py:2826 +#: flatcamEditors/FlatCAMGrbEditor.py:2830 msgid "" "[WARNING_NOTCL] Aperture code value is missing or wrong format. Add it and " "retry." @@ -3374,7 +3450,7 @@ msgstr "" "[WARNING_NOTCL] Aperture code value is missing or wrong format. Add it and " "retry." -#: flatcamEditors/FlatCAMGrbEditor.py:2472 +#: flatcamEditors/FlatCAMGrbEditor.py:2866 msgid "" "[WARNING_NOTCL] Aperture dimensions value is missing or wrong format. Add it " "in format (width, height) and retry." @@ -3382,7 +3458,7 @@ msgstr "" "[WARNING_NOTCL] Aperture dimensions value is missing or wrong format. Add it " "in format (width, height) and retry." -#: flatcamEditors/FlatCAMGrbEditor.py:2484 +#: flatcamEditors/FlatCAMGrbEditor.py:2878 msgid "" "[WARNING_NOTCL] Aperture size value is missing or wrong format. Add it and " "retry." @@ -3390,31 +3466,36 @@ msgstr "" "[WARNING_NOTCL] Aperture size value is missing or wrong format. Add it and " "retry." -#: flatcamEditors/FlatCAMGrbEditor.py:2496 +#: flatcamEditors/FlatCAMGrbEditor.py:2889 msgid "[WARNING_NOTCL] Aperture already in the aperture table." msgstr "[WARNING_NOTCL] Aperture already in the aperture table." -#: flatcamEditors/FlatCAMGrbEditor.py:2503 +#: flatcamEditors/FlatCAMGrbEditor.py:2896 #, python-brace-format msgid "[success] Added new aperture with code: {apid}" msgstr "[success] Added new aperture with code: {apid}" -#: flatcamEditors/FlatCAMGrbEditor.py:2532 -#: flatcamEditors/FlatCAMGrbEditor.py:2538 +#: flatcamEditors/FlatCAMGrbEditor.py:2924 msgid "[WARNING_NOTCL] Select an aperture in Aperture Table" msgstr "[WARNING_NOTCL] Select an aperture in Aperture Table" -#: flatcamEditors/FlatCAMGrbEditor.py:2561 +#: flatcamEditors/FlatCAMGrbEditor.py:2930 +#, python-format +#| msgid "[WARNING_NOTCL] Select an aperture in Aperture Table" +msgid "[WARNING_NOTCL] Select an aperture in Aperture Table --> %s" +msgstr "[WARNING_NOTCL] Select an aperture in Aperture Table --> %s" + +#: flatcamEditors/FlatCAMGrbEditor.py:2953 #, python-brace-format msgid "[success] Deleted aperture with code: {del_dia}" msgstr "[success] Deleted aperture with code: {del_dia}" -#: flatcamEditors/FlatCAMGrbEditor.py:2931 +#: flatcamEditors/FlatCAMGrbEditor.py:3373 #, python-format msgid "Adding aperture: %s geo ..." msgstr "Adding aperture: %s geo ..." -#: flatcamEditors/FlatCAMGrbEditor.py:3095 +#: flatcamEditors/FlatCAMGrbEditor.py:3552 msgid "" "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber " "creation." @@ -3422,27 +3503,32 @@ msgstr "" "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber " "creation." -#: flatcamEditors/FlatCAMGrbEditor.py:3104 +#: flatcamEditors/FlatCAMGrbEditor.py:3555 +#| msgid "[ERROR] An internal error has ocurred. See shell.\n" +msgid "[ERROR] An internal error has occurred. See shell.\n" +msgstr "[ERROR] An internal error has occurred. See shell.\n" + +#: flatcamEditors/FlatCAMGrbEditor.py:3560 msgid "Creating Gerber." msgstr "Creating Gerber." -#: flatcamEditors/FlatCAMGrbEditor.py:3112 +#: flatcamEditors/FlatCAMGrbEditor.py:3568 msgid "[success] Gerber editing finished." msgstr "[success] Gerber editing finished." -#: flatcamEditors/FlatCAMGrbEditor.py:3129 +#: flatcamEditors/FlatCAMGrbEditor.py:3584 msgid "[WARNING_NOTCL] Cancelled. No aperture is selected" msgstr "[WARNING_NOTCL] Cancelled. No aperture is selected" -#: flatcamEditors/FlatCAMGrbEditor.py:3649 +#: flatcamEditors/FlatCAMGrbEditor.py:4104 msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected." msgstr "[ERROR_NOTCL] Failed. No aperture geometry is selected." -#: flatcamEditors/FlatCAMGrbEditor.py:3657 +#: flatcamEditors/FlatCAMGrbEditor.py:4112 msgid "[success] Done. Apertures geometry deleted." msgstr "[success] Done. Apertures geometry deleted." -#: flatcamEditors/FlatCAMGrbEditor.py:3792 +#: flatcamEditors/FlatCAMGrbEditor.py:4261 msgid "" "[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try " "again." @@ -3450,7 +3536,7 @@ msgstr "" "[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try " "again." -#: flatcamEditors/FlatCAMGrbEditor.py:3821 +#: flatcamEditors/FlatCAMGrbEditor.py:4290 msgid "" "[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and " "retry." @@ -3458,7 +3544,7 @@ msgstr "" "[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and " "retry." -#: flatcamEditors/FlatCAMGrbEditor.py:3839 +#: flatcamEditors/FlatCAMGrbEditor.py:4320 msgid "" "[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try " "again." @@ -3466,7 +3552,7 @@ msgstr "" "[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try " "again." -#: flatcamEditors/FlatCAMGrbEditor.py:3855 +#: flatcamEditors/FlatCAMGrbEditor.py:4336 msgid "[success] Done. Scale Tool completed." msgstr "[success] Done. Scale Tool completed." @@ -3625,51 +3711,70 @@ msgstr "" "the coordinates format, the file units and zeros\n" "are set in Preferences -> Excellon Export." -#: flatcamGUI/FlatCAMGUI.py:191 +#: flatcamGUI/FlatCAMGUI.py:186 +#| msgid "Export &SVG ..." +msgid "Export &Gerber ..." +msgstr "Export &Gerber ..." + +#: flatcamGUI/FlatCAMGUI.py:189 +#| msgid "" +#| "Will export an Excellon Object as Excellon file,\n" +#| "the coordinates format, the file units and zeros\n" +#| "are set in Preferences -> Excellon Export." +msgid "" +"Will export an Gerber Object as Gerber file,\n" +"the coordinates format, the file units and zeros\n" +"are set in Preferences -> Gerber Export." +msgstr "" +"Will export an Gerber Object as Gerber file,\n" +"the coordinates format, the file units and zeros\n" +"are set in Preferences -> Gerber Export." + +#: flatcamGUI/FlatCAMGUI.py:199 msgid "Save &Defaults" msgstr "Save &Defaults" -#: flatcamGUI/FlatCAMGUI.py:197 flatcamGUI/FlatCAMGUI.py:520 +#: flatcamGUI/FlatCAMGUI.py:205 flatcamGUI/FlatCAMGUI.py:533 msgid "Save" msgstr "Save" -#: flatcamGUI/FlatCAMGUI.py:199 +#: flatcamGUI/FlatCAMGUI.py:207 msgid "&Save Project ..." msgstr "&Save Project ..." -#: flatcamGUI/FlatCAMGUI.py:204 +#: flatcamGUI/FlatCAMGUI.py:212 msgid "Save Project &As ...\tCTRL+S" msgstr "Save Project &As ...\tCTRL+S" -#: flatcamGUI/FlatCAMGUI.py:208 +#: flatcamGUI/FlatCAMGUI.py:216 msgid "Save Project C&opy ..." msgstr "Save Project C&opy ..." -#: flatcamGUI/FlatCAMGUI.py:216 +#: flatcamGUI/FlatCAMGUI.py:224 msgid "E&xit" msgstr "E&xit" -#: flatcamGUI/FlatCAMGUI.py:222 +#: flatcamGUI/FlatCAMGUI.py:230 msgid "&Edit" msgstr "&Edit" -#: flatcamGUI/FlatCAMGUI.py:225 +#: flatcamGUI/FlatCAMGUI.py:233 msgid "Edit Object\tE" msgstr "Edit Object\tE" -#: flatcamGUI/FlatCAMGUI.py:226 +#: flatcamGUI/FlatCAMGUI.py:234 msgid "Close Editor\tCTRL+S" msgstr "Close Editor\tCTRL+S" -#: flatcamGUI/FlatCAMGUI.py:234 +#: flatcamGUI/FlatCAMGUI.py:242 msgid "Conversion" msgstr "Conversion" -#: flatcamGUI/FlatCAMGUI.py:236 +#: flatcamGUI/FlatCAMGUI.py:244 msgid "&Join Geo/Gerber/Exc -> Geo" msgstr "&Join Geo/Gerber/Exc -> Geo" -#: flatcamGUI/FlatCAMGUI.py:238 +#: flatcamGUI/FlatCAMGUI.py:246 msgid "" "Merge a selection of objects, which can be of type:\n" "- Gerber\n" @@ -3683,28 +3788,28 @@ msgstr "" "- Geometry\n" "into a new combo Geometry object." -#: flatcamGUI/FlatCAMGUI.py:245 +#: flatcamGUI/FlatCAMGUI.py:253 msgid "Join Excellon(s) -> Excellon" msgstr "Join Excellon(s) -> Excellon" -#: flatcamGUI/FlatCAMGUI.py:247 +#: flatcamGUI/FlatCAMGUI.py:255 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:250 +#: flatcamGUI/FlatCAMGUI.py:258 msgid "Join Gerber(s) -> Gerber" msgstr "Join Gerber(s) -> Gerber" -#: flatcamGUI/FlatCAMGUI.py:252 +#: flatcamGUI/FlatCAMGUI.py:260 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:257 +#: flatcamGUI/FlatCAMGUI.py:265 msgid "Convert Single to MultiGeo" msgstr "Convert Single to MultiGeo" -#: flatcamGUI/FlatCAMGUI.py:259 +#: flatcamGUI/FlatCAMGUI.py:267 msgid "" "Will convert a Geometry object from single_geometry type\n" "to a multi_geometry type." @@ -3712,11 +3817,11 @@ msgstr "" "Will convert a Geometry object from single_geometry type\n" "to a multi_geometry type." -#: flatcamGUI/FlatCAMGUI.py:263 +#: flatcamGUI/FlatCAMGUI.py:271 msgid "Convert Multi to SingleGeo" msgstr "Convert Multi to SingleGeo" -#: flatcamGUI/FlatCAMGUI.py:265 +#: flatcamGUI/FlatCAMGUI.py:273 msgid "" "Will convert a Geometry object from multi_geometry type\n" "to a single_geometry type." @@ -3724,585 +3829,592 @@ msgstr "" "Will convert a Geometry object from multi_geometry type\n" "to a single_geometry type." -#: flatcamGUI/FlatCAMGUI.py:272 -msgid "&Copy Object\tCTRL+C" -msgstr "&Copy Object\tCTRL+C" +#: flatcamGUI/FlatCAMGUI.py:279 +#| msgid "Convert Single to MultiGeo" +msgid "Convert Any to Geo" +msgstr "Convert Any to Geo" -#: flatcamGUI/FlatCAMGUI.py:274 -msgid "Copy as &Geom" -msgstr "Copy as &Geom" +#: flatcamGUI/FlatCAMGUI.py:281 +#| msgid "Convert Single to MultiGeo" +msgid "Convert Any to Gerber" +msgstr "Convert Any to Gerber" -#: flatcamGUI/FlatCAMGUI.py:277 +#: flatcamGUI/FlatCAMGUI.py:286 +#| msgid "&Copy Object\tCTRL+C" +msgid "&Copy\tCTRL+C" +msgstr "&Copy\tCTRL+C" + +#: flatcamGUI/FlatCAMGUI.py:290 msgid "&Delete\tDEL" msgstr "&Delete\tDEL" -#: flatcamGUI/FlatCAMGUI.py:281 +#: flatcamGUI/FlatCAMGUI.py:294 msgid "Se&t Origin\tO" msgstr "Se&t Origin\tO" -#: flatcamGUI/FlatCAMGUI.py:282 +#: flatcamGUI/FlatCAMGUI.py:295 msgid "Jump to Location\tJ" msgstr "Jump to Location\tJ" -#: flatcamGUI/FlatCAMGUI.py:287 +#: flatcamGUI/FlatCAMGUI.py:300 msgid "Toggle Units\tQ" msgstr "Toggle Units\tQ" -#: flatcamGUI/FlatCAMGUI.py:289 +#: flatcamGUI/FlatCAMGUI.py:302 msgid "&Select All\tCTRL+A" msgstr "&Select All\tCTRL+A" -#: flatcamGUI/FlatCAMGUI.py:293 +#: flatcamGUI/FlatCAMGUI.py:306 msgid "&Preferences\tSHIFT+P" msgstr "&Preferences\tSHIFT+P" -#: flatcamGUI/FlatCAMGUI.py:296 +#: flatcamGUI/FlatCAMGUI.py:309 msgid "&Options" msgstr "&Options" -#: flatcamGUI/FlatCAMGUI.py:311 +#: flatcamGUI/FlatCAMGUI.py:324 msgid "&Rotate Selection\tSHIFT+(R)" msgstr "&Rotate Selection\tSHIFT+(R)" -#: flatcamGUI/FlatCAMGUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:329 msgid "&Skew on X axis\tSHIFT+X" msgstr "&Skew on X axis\tSHIFT+X" -#: flatcamGUI/FlatCAMGUI.py:318 +#: flatcamGUI/FlatCAMGUI.py:331 msgid "S&kew on Y axis\tSHIFT+Y" msgstr "S&kew on Y axis\tSHIFT+Y" -#: flatcamGUI/FlatCAMGUI.py:323 +#: flatcamGUI/FlatCAMGUI.py:336 msgid "Flip on &X axis\tX" msgstr "Flip on &X axis\tX" -#: flatcamGUI/FlatCAMGUI.py:325 +#: flatcamGUI/FlatCAMGUI.py:338 msgid "Flip on &Y axis\tY" msgstr "Flip on &Y axis\tY" -#: flatcamGUI/FlatCAMGUI.py:330 +#: flatcamGUI/FlatCAMGUI.py:343 msgid "View source\tALT+S" msgstr "View source\tALT+S" -#: flatcamGUI/FlatCAMGUI.py:335 +#: flatcamGUI/FlatCAMGUI.py:348 msgid "&View" msgstr "&View" -#: flatcamGUI/FlatCAMGUI.py:336 +#: flatcamGUI/FlatCAMGUI.py:349 msgid "Enable all plots\tALT+1" msgstr "Enable all plots\tALT+1" -#: flatcamGUI/FlatCAMGUI.py:338 +#: flatcamGUI/FlatCAMGUI.py:351 msgid "Disable all plots\tALT+2" msgstr "Disable all plots\tALT+2" -#: flatcamGUI/FlatCAMGUI.py:340 +#: flatcamGUI/FlatCAMGUI.py:353 msgid "Disable non-selected\tALT+3" msgstr "Disable non-selected\tALT+3" -#: flatcamGUI/FlatCAMGUI.py:343 +#: flatcamGUI/FlatCAMGUI.py:356 msgid "&Zoom Fit\tV" msgstr "&Zoom Fit\tV" -#: flatcamGUI/FlatCAMGUI.py:344 +#: flatcamGUI/FlatCAMGUI.py:357 msgid "&Zoom In\t-" msgstr "&Zoom In\t-" -#: flatcamGUI/FlatCAMGUI.py:345 +#: flatcamGUI/FlatCAMGUI.py:358 msgid "&Zoom Out\t=" msgstr "&Zoom Out\t=" -#: flatcamGUI/FlatCAMGUI.py:349 +#: flatcamGUI/FlatCAMGUI.py:362 msgid "Toggle Code Editor\tCTRL+E" msgstr "Toggle Code Editor\tCTRL+E" -#: flatcamGUI/FlatCAMGUI.py:352 +#: flatcamGUI/FlatCAMGUI.py:365 msgid "&Toggle FullScreen\tALT+F10" msgstr "&Toggle FullScreen\tALT+F10" -#: flatcamGUI/FlatCAMGUI.py:354 +#: flatcamGUI/FlatCAMGUI.py:367 msgid "&Toggle Plot Area\tCTRL+F10" msgstr "&Toggle Plot Area\tCTRL+F10" -#: flatcamGUI/FlatCAMGUI.py:356 +#: flatcamGUI/FlatCAMGUI.py:369 msgid "&Toggle Project/Sel/Tool\t`" msgstr "&Toggle Project/Sel/Tool\t`" -#: flatcamGUI/FlatCAMGUI.py:359 +#: flatcamGUI/FlatCAMGUI.py:372 msgid "&Toggle Grid Snap\tG" msgstr "&Toggle Grid Snap\tG" -#: flatcamGUI/FlatCAMGUI.py:361 +#: flatcamGUI/FlatCAMGUI.py:374 msgid "&Toggle Axis\tSHIFT+G" msgstr "&Toggle Axis\tSHIFT+G" -#: flatcamGUI/FlatCAMGUI.py:364 +#: flatcamGUI/FlatCAMGUI.py:377 msgid "Toggle Workspace\tSHIFT+W" msgstr "Toggle Workspace\tSHIFT+W" -#: flatcamGUI/FlatCAMGUI.py:368 +#: flatcamGUI/FlatCAMGUI.py:381 msgid "&Tool" msgstr "&Tool" -#: flatcamGUI/FlatCAMGUI.py:370 +#: flatcamGUI/FlatCAMGUI.py:383 msgid "&Command Line\tS" msgstr "&Command Line\tS" -#: flatcamGUI/FlatCAMGUI.py:373 +#: flatcamGUI/FlatCAMGUI.py:386 msgid "&Help" msgstr "&Help" -#: flatcamGUI/FlatCAMGUI.py:374 +#: flatcamGUI/FlatCAMGUI.py:387 msgid "Help\tF1" msgstr "Help\tF1" -#: flatcamGUI/FlatCAMGUI.py:375 +#: flatcamGUI/FlatCAMGUI.py:388 msgid "FlatCAM.org" msgstr "FlatCAM.org" -#: flatcamGUI/FlatCAMGUI.py:378 +#: flatcamGUI/FlatCAMGUI.py:391 msgid "Shortcuts List\tF3" msgstr "Shortcuts List\tF3" -#: flatcamGUI/FlatCAMGUI.py:379 +#: flatcamGUI/FlatCAMGUI.py:392 msgid "YouTube Channel\tF4" msgstr "YouTube Channel\tF4" -#: flatcamGUI/FlatCAMGUI.py:381 +#: flatcamGUI/FlatCAMGUI.py:394 msgid "About" msgstr "About" -#: flatcamGUI/FlatCAMGUI.py:392 +#: flatcamGUI/FlatCAMGUI.py:405 msgid "Add Circle\tO" msgstr "Add Circle\tO" -#: flatcamGUI/FlatCAMGUI.py:394 +#: flatcamGUI/FlatCAMGUI.py:407 msgid "Add Arc\tA" msgstr "Add Arc\tA" -#: flatcamGUI/FlatCAMGUI.py:397 +#: flatcamGUI/FlatCAMGUI.py:410 msgid "Add Rectangle\tR" msgstr "Add Rectangle\tR" -#: flatcamGUI/FlatCAMGUI.py:400 +#: flatcamGUI/FlatCAMGUI.py:413 msgid "Add Polygon\tN" msgstr "Add Polygon\tN" -#: flatcamGUI/FlatCAMGUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:415 msgid "Add Path\tP" msgstr "Add Path\tP" -#: flatcamGUI/FlatCAMGUI.py:404 +#: flatcamGUI/FlatCAMGUI.py:417 msgid "Add Text\tT" msgstr "Add Text\tT" -#: flatcamGUI/FlatCAMGUI.py:407 +#: flatcamGUI/FlatCAMGUI.py:420 msgid "Polygon Union\tU" msgstr "Polygon Union\tU" -#: flatcamGUI/FlatCAMGUI.py:409 +#: flatcamGUI/FlatCAMGUI.py:422 msgid "Polygon Intersection\tE" msgstr "Polygon Intersection\tE" -#: flatcamGUI/FlatCAMGUI.py:411 +#: flatcamGUI/FlatCAMGUI.py:424 msgid "Polygon Subtraction\tS" msgstr "Polygon Subtraction\tS" -#: flatcamGUI/FlatCAMGUI.py:415 +#: flatcamGUI/FlatCAMGUI.py:428 msgid "Cut Path\tX" msgstr "Cut Path\tX" -#: flatcamGUI/FlatCAMGUI.py:417 +#: flatcamGUI/FlatCAMGUI.py:430 msgid "Copy Geom\tC" msgstr "Copy Geom\tC" -#: flatcamGUI/FlatCAMGUI.py:419 +#: flatcamGUI/FlatCAMGUI.py:432 msgid "Delete Shape\tDEL" msgstr "Delete Shape\tDEL" -#: flatcamGUI/FlatCAMGUI.py:422 flatcamGUI/FlatCAMGUI.py:495 +#: flatcamGUI/FlatCAMGUI.py:435 flatcamGUI/FlatCAMGUI.py:508 msgid "Move\tM" msgstr "Move\tM" -#: flatcamGUI/FlatCAMGUI.py:424 +#: flatcamGUI/FlatCAMGUI.py:437 msgid "Buffer Tool\tB" msgstr "Buffer Tool\tB" -#: flatcamGUI/FlatCAMGUI.py:427 +#: flatcamGUI/FlatCAMGUI.py:440 msgid "Paint Tool\tI" msgstr "Paint Tool\tI" -#: flatcamGUI/FlatCAMGUI.py:430 +#: flatcamGUI/FlatCAMGUI.py:443 msgid "Transform Tool\tALT+R" msgstr "Transform Tool\tALT+R" -#: flatcamGUI/FlatCAMGUI.py:434 +#: flatcamGUI/FlatCAMGUI.py:447 msgid "Toggle Corner Snap\tK" msgstr "Toggle Corner Snap\tK" -#: flatcamGUI/FlatCAMGUI.py:437 +#: flatcamGUI/FlatCAMGUI.py:450 msgid ">Excellon Editor<" msgstr ">Excellon Editor<" -#: flatcamGUI/FlatCAMGUI.py:441 +#: flatcamGUI/FlatCAMGUI.py:454 msgid "Add Drill Array\tA" msgstr "Add Drill Array\tA" -#: flatcamGUI/FlatCAMGUI.py:443 +#: flatcamGUI/FlatCAMGUI.py:456 msgid "Add Drill\tD" msgstr "Add Drill\tD" -#: flatcamGUI/FlatCAMGUI.py:447 +#: flatcamGUI/FlatCAMGUI.py:460 msgid "Resize Drill(S)\tR" msgstr "Resize Drill(S)\tR" -#: flatcamGUI/FlatCAMGUI.py:449 flatcamGUI/FlatCAMGUI.py:488 +#: flatcamGUI/FlatCAMGUI.py:462 flatcamGUI/FlatCAMGUI.py:501 msgid "Copy\tC" msgstr "Copy\tC" -#: flatcamGUI/FlatCAMGUI.py:451 flatcamGUI/FlatCAMGUI.py:490 +#: flatcamGUI/FlatCAMGUI.py:464 flatcamGUI/FlatCAMGUI.py:503 msgid "Delete\tDEL" msgstr "Delete\tDEL" -#: flatcamGUI/FlatCAMGUI.py:456 +#: flatcamGUI/FlatCAMGUI.py:469 msgid "Move Drill(s)\tM" msgstr "Move Drill(s)\tM" -#: flatcamGUI/FlatCAMGUI.py:460 +#: flatcamGUI/FlatCAMGUI.py:473 msgid ">Gerber Editor<" msgstr ">Gerber Editor<" -#: flatcamGUI/FlatCAMGUI.py:464 +#: flatcamGUI/FlatCAMGUI.py:477 msgid "Add Pad\tP" msgstr "Add Pad\tP" -#: flatcamGUI/FlatCAMGUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:479 msgid "Add Pad Array\tA" msgstr "Add Pad Array\tA" -#: flatcamGUI/FlatCAMGUI.py:468 +#: flatcamGUI/FlatCAMGUI.py:481 msgid "Add Track\tT" msgstr "Add Track\tT" -#: flatcamGUI/FlatCAMGUI.py:470 +#: flatcamGUI/FlatCAMGUI.py:483 msgid "Add Region\tN" msgstr "Add Region\tN" -#: flatcamGUI/FlatCAMGUI.py:474 +#: flatcamGUI/FlatCAMGUI.py:487 msgid "Poligonize\tALT+N" msgstr "Poligonize\tALT+N" -#: flatcamGUI/FlatCAMGUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:489 msgid "Add SemiDisc\tE" msgstr "Add SemiDisc\tE" -#: flatcamGUI/FlatCAMGUI.py:478 +#: flatcamGUI/FlatCAMGUI.py:491 msgid "Add Disc\tD" msgstr "Add Disc\tD" -#: flatcamGUI/FlatCAMGUI.py:480 +#: flatcamGUI/FlatCAMGUI.py:493 msgid "Buffer\tB" msgstr "Buffer\tB" -#: flatcamGUI/FlatCAMGUI.py:482 +#: flatcamGUI/FlatCAMGUI.py:495 msgid "Scale\tS" msgstr "Scale\tS" -#: flatcamGUI/FlatCAMGUI.py:484 +#: flatcamGUI/FlatCAMGUI.py:497 msgid "Transform\tALT+R" msgstr "Transform\tALT+R" -#: flatcamGUI/FlatCAMGUI.py:511 +#: flatcamGUI/FlatCAMGUI.py:524 msgid "Enable Plot" msgstr "Enable Plot" -#: flatcamGUI/FlatCAMGUI.py:512 +#: flatcamGUI/FlatCAMGUI.py:525 msgid "Disable Plot" msgstr "Disable Plot" -#: flatcamGUI/FlatCAMGUI.py:514 +#: flatcamGUI/FlatCAMGUI.py:527 msgid "Generate CNC" msgstr "Generate CNC" -#: flatcamGUI/FlatCAMGUI.py:515 +#: flatcamGUI/FlatCAMGUI.py:528 msgid "View Source" msgstr "View Source" -#: flatcamGUI/FlatCAMGUI.py:517 flatcamGUI/FlatCAMGUI.py:1603 +#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1617 msgid "Edit" msgstr "Edit" -#: flatcamGUI/FlatCAMGUI.py:523 flatcamGUI/FlatCAMGUI.py:1609 +#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1623 #: flatcamTools/ToolProperties.py:25 msgid "Properties" msgstr "Properties" -#: flatcamGUI/FlatCAMGUI.py:552 +#: flatcamGUI/FlatCAMGUI.py:565 msgid "File Toolbar" msgstr "File Toolbar" -#: flatcamGUI/FlatCAMGUI.py:556 +#: flatcamGUI/FlatCAMGUI.py:569 msgid "Edit Toolbar" msgstr "Edit Toolbar" -#: flatcamGUI/FlatCAMGUI.py:560 +#: flatcamGUI/FlatCAMGUI.py:573 msgid "View Toolbar" msgstr "View Toolbar" -#: flatcamGUI/FlatCAMGUI.py:564 +#: flatcamGUI/FlatCAMGUI.py:577 msgid "Shell Toolbar" msgstr "Shell Toolbar" -#: flatcamGUI/FlatCAMGUI.py:568 +#: flatcamGUI/FlatCAMGUI.py:581 msgid "Tools Toolbar" msgstr "Tools Toolbar" -#: flatcamGUI/FlatCAMGUI.py:572 +#: flatcamGUI/FlatCAMGUI.py:585 msgid "Excellon Editor Toolbar" msgstr "Excellon Editor Toolbar" -#: flatcamGUI/FlatCAMGUI.py:576 +#: flatcamGUI/FlatCAMGUI.py:589 msgid "Geometry Editor Toolbar" msgstr "Geometry Editor Toolbar" -#: flatcamGUI/FlatCAMGUI.py:580 +#: flatcamGUI/FlatCAMGUI.py:593 msgid "Gerber Editor Toolbar" msgstr "Gerber Editor Toolbar" -#: flatcamGUI/FlatCAMGUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:597 msgid "Grid Toolbar" msgstr "Grid Toolbar" -#: flatcamGUI/FlatCAMGUI.py:603 flatcamGUI/FlatCAMGUI.py:1820 +#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1834 msgid "Open project" msgstr "Open project" -#: flatcamGUI/FlatCAMGUI.py:604 flatcamGUI/FlatCAMGUI.py:1821 +#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1835 msgid "Save project" msgstr "Save project" -#: flatcamGUI/FlatCAMGUI.py:607 flatcamGUI/FlatCAMGUI.py:1824 +#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1838 msgid "New Blank Geometry" msgstr "New Blank Geometry" -#: flatcamGUI/FlatCAMGUI.py:608 +#: flatcamGUI/FlatCAMGUI.py:621 msgid "New Blank Gerber" msgstr "New Blank Gerber" -#: flatcamGUI/FlatCAMGUI.py:609 flatcamGUI/FlatCAMGUI.py:1825 +#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1839 msgid "New Blank Excellon" msgstr "New Blank Excellon" -#: flatcamGUI/FlatCAMGUI.py:611 flatcamGUI/FlatCAMGUI.py:1827 +#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1841 msgid "Editor" msgstr "Editor" -#: flatcamGUI/FlatCAMGUI.py:613 flatcamGUI/FlatCAMGUI.py:1829 +#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1843 msgid "Save Object and close the Editor" msgstr "Save Object and close the Editor" -#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1833 +#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1847 msgid "&Delete" msgstr "&Delete" -#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1836 +#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1850 msgid "&Replot" msgstr "&Replot" -#: flatcamGUI/FlatCAMGUI.py:621 flatcamGUI/FlatCAMGUI.py:1837 +#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1851 msgid "&Clear plot" msgstr "&Clear plot" -#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1838 +#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1852 msgid "Zoom In" msgstr "Zoom In" -#: flatcamGUI/FlatCAMGUI.py:623 flatcamGUI/FlatCAMGUI.py:1839 +#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1853 msgid "Zoom Out" msgstr "Zoom Out" -#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1578 -#: flatcamGUI/FlatCAMGUI.py:1840 +#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1854 msgid "Zoom Fit" msgstr "Zoom Fit" -#: flatcamGUI/FlatCAMGUI.py:629 flatcamGUI/FlatCAMGUI.py:1845 +#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1859 msgid "&Command Line" msgstr "&Command Line" -#: flatcamGUI/FlatCAMGUI.py:632 flatcamGUI/FlatCAMGUI.py:1848 +#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1862 msgid "2Sided Tool" msgstr "2Sided Tool" -#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1849 +#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1863 msgid "&Cutout Tool" msgstr "&Cutout Tool" -#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1850 +#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1864 #: flatcamGUI/ObjectUI.py:392 flatcamTools/ToolNonCopperClear.py:285 msgid "NCC Tool" msgstr "NCC Tool" -#: flatcamGUI/FlatCAMGUI.py:638 flatcamGUI/FlatCAMGUI.py:1854 +#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1868 msgid "Panel Tool" msgstr "Panel Tool" -#: flatcamGUI/FlatCAMGUI.py:639 flatcamGUI/FlatCAMGUI.py:1855 +#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1869 #: flatcamTools/ToolFilm.py:204 msgid "Film Tool" msgstr "Film Tool" -#: flatcamGUI/FlatCAMGUI.py:640 flatcamGUI/FlatCAMGUI.py:1857 +#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1871 msgid "SolderPaste Tool" msgstr "SolderPaste Tool" -#: flatcamGUI/FlatCAMGUI.py:641 flatcamGUI/FlatCAMGUI.py:1858 +#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1872 #: flatcamTools/ToolSub.py:26 msgid "Substract Tool" msgstr "Substract Tool" -#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1863 +#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1877 msgid "Calculators Tool" msgstr "Calculators Tool" -#: flatcamGUI/FlatCAMGUI.py:649 flatcamGUI/FlatCAMGUI.py:663 -#: flatcamGUI/FlatCAMGUI.py:696 flatcamGUI/FlatCAMGUI.py:1867 -#: flatcamGUI/FlatCAMGUI.py:1917 +#: flatcamGUI/FlatCAMGUI.py:662 flatcamGUI/FlatCAMGUI.py:676 +#: flatcamGUI/FlatCAMGUI.py:709 flatcamGUI/FlatCAMGUI.py:1881 +#: flatcamGUI/FlatCAMGUI.py:1931 msgid "Select" msgstr "Select" -#: flatcamGUI/FlatCAMGUI.py:650 flatcamGUI/FlatCAMGUI.py:1868 +#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1882 msgid "Add Drill Hole" msgstr "Add Drill Hole" -#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1870 +#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1884 msgid "Add Drill Hole Array" msgstr "Add Drill Hole Array" -#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1871 +#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1885 msgid "Resize Drill" msgstr "Resize Drill" -#: flatcamGUI/FlatCAMGUI.py:656 flatcamGUI/FlatCAMGUI.py:1874 +#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1888 msgid "Copy Drill" msgstr "Copy Drill" -#: flatcamGUI/FlatCAMGUI.py:657 flatcamGUI/FlatCAMGUI.py:1876 +#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1890 msgid "Delete Drill" msgstr "Delete Drill" -#: flatcamGUI/FlatCAMGUI.py:660 flatcamGUI/FlatCAMGUI.py:1879 +#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1893 msgid "Move Drill" msgstr "Move Drill" -#: flatcamGUI/FlatCAMGUI.py:664 flatcamGUI/FlatCAMGUI.py:1883 +#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1897 msgid "Add Circle" msgstr "Add Circle" -#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1884 +#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1898 msgid "Add Arc" msgstr "Add Arc" -#: flatcamGUI/FlatCAMGUI.py:667 flatcamGUI/FlatCAMGUI.py:1886 +#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1900 msgid "Add Rectangle" msgstr "Add Rectangle" -#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1889 +#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1903 msgid "Add Path" msgstr "Add Path" -#: flatcamGUI/FlatCAMGUI.py:671 flatcamGUI/FlatCAMGUI.py:1891 +#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1905 msgid "Add Polygon" msgstr "Add Polygon" -#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1893 +#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1907 msgid "Add Text" msgstr "Add Text" -#: flatcamGUI/FlatCAMGUI.py:674 flatcamGUI/FlatCAMGUI.py:1895 +#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1909 msgid "Add Buffer" msgstr "Add Buffer" -#: flatcamGUI/FlatCAMGUI.py:675 flatcamGUI/FlatCAMGUI.py:1896 +#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1910 msgid "Paint Shape" msgstr "Paint Shape" -#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1899 +#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:1913 msgid "Polygon Union" msgstr "Polygon Union" -#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1901 +#: flatcamGUI/FlatCAMGUI.py:693 flatcamGUI/FlatCAMGUI.py:1915 msgid "Polygon Intersection" msgstr "Polygon Intersection" -#: flatcamGUI/FlatCAMGUI.py:682 flatcamGUI/FlatCAMGUI.py:1903 +#: flatcamGUI/FlatCAMGUI.py:695 flatcamGUI/FlatCAMGUI.py:1917 msgid "Polygon Subtraction" msgstr "Polygon Subtraction" -#: flatcamGUI/FlatCAMGUI.py:685 flatcamGUI/FlatCAMGUI.py:1906 +#: flatcamGUI/FlatCAMGUI.py:698 flatcamGUI/FlatCAMGUI.py:1920 msgid "Cut Path" msgstr "Cut Path" -#: flatcamGUI/FlatCAMGUI.py:686 +#: flatcamGUI/FlatCAMGUI.py:699 msgid "Copy Shape(s)" msgstr "Copy Shape(s)" -#: flatcamGUI/FlatCAMGUI.py:689 +#: flatcamGUI/FlatCAMGUI.py:702 msgid "Delete Shape '-'" msgstr "Delete Shape '-'" -#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:715 -#: flatcamGUI/FlatCAMGUI.py:1911 flatcamGUI/FlatCAMGUI.py:1936 +#: flatcamGUI/FlatCAMGUI.py:704 flatcamGUI/FlatCAMGUI.py:728 +#: flatcamGUI/FlatCAMGUI.py:1925 flatcamGUI/FlatCAMGUI.py:1950 msgid "Transformations" msgstr "Transformations" -#: flatcamGUI/FlatCAMGUI.py:693 +#: flatcamGUI/FlatCAMGUI.py:706 msgid "Move Objects " msgstr "Move Objects " -#: flatcamGUI/FlatCAMGUI.py:697 flatcamGUI/FlatCAMGUI.py:1918 +#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1932 msgid "Add Pad" msgstr "Add Pad" -#: flatcamGUI/FlatCAMGUI.py:699 flatcamGUI/FlatCAMGUI.py:1920 +#: flatcamGUI/FlatCAMGUI.py:712 flatcamGUI/FlatCAMGUI.py:1934 msgid "Add Track" msgstr "Add Track" -#: flatcamGUI/FlatCAMGUI.py:700 flatcamGUI/FlatCAMGUI.py:1921 +#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1935 msgid "Add Region" msgstr "Add Region" -#: flatcamGUI/FlatCAMGUI.py:702 flatcamGUI/FlatCAMGUI.py:1923 +#: flatcamGUI/FlatCAMGUI.py:715 flatcamGUI/FlatCAMGUI.py:1937 msgid "Poligonize" msgstr "Poligonize" -#: flatcamGUI/FlatCAMGUI.py:704 flatcamGUI/FlatCAMGUI.py:1925 +#: flatcamGUI/FlatCAMGUI.py:717 flatcamGUI/FlatCAMGUI.py:1939 msgid "SemiDisc" msgstr "SemiDisc" -#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:1926 +#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1940 msgid "Disc" msgstr "Disc" -#: flatcamGUI/FlatCAMGUI.py:717 flatcamGUI/FlatCAMGUI.py:1588 -#: flatcamGUI/FlatCAMGUI.py:1608 flatcamGUI/FlatCAMGUI.py:1938 +#: flatcamGUI/FlatCAMGUI.py:730 flatcamGUI/FlatCAMGUI.py:1602 +#: flatcamGUI/FlatCAMGUI.py:1622 flatcamGUI/FlatCAMGUI.py:1952 #: flatcamTools/ToolMove.py:26 msgid "Move" msgstr "Move" -#: flatcamGUI/FlatCAMGUI.py:723 flatcamGUI/FlatCAMGUI.py:1944 +#: flatcamGUI/FlatCAMGUI.py:736 flatcamGUI/FlatCAMGUI.py:1958 msgid "Snap to grid" msgstr "Snap to grid" -#: flatcamGUI/FlatCAMGUI.py:726 flatcamGUI/FlatCAMGUI.py:1947 +#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1961 msgid "Grid X snapping distance" msgstr "Grid X snapping distance" -#: flatcamGUI/FlatCAMGUI.py:731 flatcamGUI/FlatCAMGUI.py:1952 +#: flatcamGUI/FlatCAMGUI.py:744 flatcamGUI/FlatCAMGUI.py:1966 msgid "Grid Y snapping distance" msgstr "Grid Y snapping distance" -#: flatcamGUI/FlatCAMGUI.py:737 flatcamGUI/FlatCAMGUI.py:1958 +#: flatcamGUI/FlatCAMGUI.py:750 flatcamGUI/FlatCAMGUI.py:1972 msgid "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." @@ -4310,64 +4422,64 @@ msgstr "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." -#: flatcamGUI/FlatCAMGUI.py:743 flatcamGUI/FlatCAMGUI.py:1964 +#: flatcamGUI/FlatCAMGUI.py:756 flatcamGUI/FlatCAMGUI.py:1978 msgid "Snap to corner" msgstr "Snap to corner" -#: flatcamGUI/FlatCAMGUI.py:747 flatcamGUI/FlatCAMGUI.py:1968 -#: flatcamGUI/FlatCAMGUI.py:3311 +#: flatcamGUI/FlatCAMGUI.py:760 flatcamGUI/FlatCAMGUI.py:1982 +#: flatcamGUI/FlatCAMGUI.py:3339 msgid "Max. magnet distance" msgstr "Max. magnet distance" -#: flatcamGUI/FlatCAMGUI.py:775 flatcamGUI/FlatCAMGUI.py:1572 +#: flatcamGUI/FlatCAMGUI.py:788 flatcamGUI/FlatCAMGUI.py:1586 msgid "Project" msgstr "Project" -#: flatcamGUI/FlatCAMGUI.py:785 +#: flatcamGUI/FlatCAMGUI.py:798 msgid "Selected" msgstr "Selected" -#: flatcamGUI/FlatCAMGUI.py:804 flatcamGUI/FlatCAMGUI.py:812 +#: flatcamGUI/FlatCAMGUI.py:817 flatcamGUI/FlatCAMGUI.py:825 msgid "Plot Area" msgstr "Plot Area" -#: flatcamGUI/FlatCAMGUI.py:836 +#: flatcamGUI/FlatCAMGUI.py:849 msgid "General" msgstr "General" -#: flatcamGUI/FlatCAMGUI.py:845 +#: flatcamGUI/FlatCAMGUI.py:858 msgid "APP. DEFAULTS" msgstr "APP. DEFAULTS" -#: flatcamGUI/FlatCAMGUI.py:846 +#: flatcamGUI/FlatCAMGUI.py:859 msgid "PROJ. OPTIONS " msgstr "PROJ. OPTIONS " -#: flatcamGUI/FlatCAMGUI.py:857 +#: flatcamGUI/FlatCAMGUI.py:870 msgid "GERBER" msgstr "GERBER" -#: flatcamGUI/FlatCAMGUI.py:866 +#: flatcamGUI/FlatCAMGUI.py:879 msgid "EXCELLON" msgstr "EXCELLON" -#: flatcamGUI/FlatCAMGUI.py:875 +#: flatcamGUI/FlatCAMGUI.py:888 msgid "GEOMETRY" msgstr "GEOMETRY" -#: flatcamGUI/FlatCAMGUI.py:885 +#: flatcamGUI/FlatCAMGUI.py:898 msgid "CNC-JOB" msgstr "CNC-JOB" -#: flatcamGUI/FlatCAMGUI.py:894 +#: flatcamGUI/FlatCAMGUI.py:907 msgid "TOOLS" msgstr "TOOLS" -#: flatcamGUI/FlatCAMGUI.py:911 +#: flatcamGUI/FlatCAMGUI.py:924 msgid "Import Preferences" msgstr "Import Preferences" -#: flatcamGUI/FlatCAMGUI.py:914 +#: flatcamGUI/FlatCAMGUI.py:927 msgid "" "Import a full set of FlatCAM settings from a file\n" "previously saved on HDD.\n" @@ -4381,11 +4493,11 @@ msgstr "" "FlatCAM automatically save a 'factory_defaults' file\n" "on the first start. Do not delete that file." -#: flatcamGUI/FlatCAMGUI.py:921 +#: flatcamGUI/FlatCAMGUI.py:934 msgid "Export Preferences" msgstr "Export Preferences" -#: flatcamGUI/FlatCAMGUI.py:924 +#: flatcamGUI/FlatCAMGUI.py:937 msgid "" "Export a full set of FlatCAM settings in a file\n" "that is saved on HDD." @@ -4393,19 +4505,19 @@ msgstr "" "Export a full set of FlatCAM settings in a file\n" "that is saved on HDD." -#: flatcamGUI/FlatCAMGUI.py:929 +#: flatcamGUI/FlatCAMGUI.py:942 msgid "Open Pref Folder" msgstr "Open Pref Folder" -#: flatcamGUI/FlatCAMGUI.py:932 +#: flatcamGUI/FlatCAMGUI.py:945 msgid "Open the folder where FlatCAM save the preferences files." msgstr "Open the folder where FlatCAM save the preferences files." -#: flatcamGUI/FlatCAMGUI.py:940 +#: flatcamGUI/FlatCAMGUI.py:953 msgid "Save Preferences" msgstr "Save Preferences" -#: flatcamGUI/FlatCAMGUI.py:943 +#: flatcamGUI/FlatCAMGUI.py:956 msgid "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." @@ -4413,7 +4525,7 @@ msgstr "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." -#: flatcamGUI/FlatCAMGUI.py:969 +#: flatcamGUI/FlatCAMGUI.py:982 msgid "" "General Shortcut list
\n" " Editor Shortcut list
\n" "
\n" @@ -5605,99 +5717,99 @@ msgstr "" "
\n" " " -#: flatcamGUI/FlatCAMGUI.py:1566 +#: flatcamGUI/FlatCAMGUI.py:1579 msgid "Disable" msgstr "Disable" -#: flatcamGUI/FlatCAMGUI.py:1568 +#: flatcamGUI/FlatCAMGUI.py:1581 msgid "New" msgstr "New" -#: flatcamGUI/FlatCAMGUI.py:1569 +#: flatcamGUI/FlatCAMGUI.py:1582 msgid "Geometry" msgstr "Geometry" -#: flatcamGUI/FlatCAMGUI.py:1570 +#: flatcamGUI/FlatCAMGUI.py:1584 msgid "Excellon" msgstr "Excellon" -#: flatcamGUI/FlatCAMGUI.py:1575 +#: flatcamGUI/FlatCAMGUI.py:1589 msgid "Grids" msgstr "Grids" -#: flatcamGUI/FlatCAMGUI.py:1577 +#: flatcamGUI/FlatCAMGUI.py:1591 msgid "View" msgstr "View" -#: flatcamGUI/FlatCAMGUI.py:1579 +#: flatcamGUI/FlatCAMGUI.py:1593 msgid "Clear Plot" msgstr "Clear Plot" -#: flatcamGUI/FlatCAMGUI.py:1580 +#: flatcamGUI/FlatCAMGUI.py:1594 msgid "Replot" msgstr "Replot" -#: flatcamGUI/FlatCAMGUI.py:1583 +#: flatcamGUI/FlatCAMGUI.py:1597 msgid "Geo Editor" msgstr "Geo Editor" -#: flatcamGUI/FlatCAMGUI.py:1584 +#: flatcamGUI/FlatCAMGUI.py:1598 msgid "Line" msgstr "Line" -#: flatcamGUI/FlatCAMGUI.py:1585 +#: flatcamGUI/FlatCAMGUI.py:1599 msgid "Rectangle" msgstr "Rectangle" -#: flatcamGUI/FlatCAMGUI.py:1586 +#: flatcamGUI/FlatCAMGUI.py:1600 msgid "Cut" msgstr "Cut" -#: flatcamGUI/FlatCAMGUI.py:1591 +#: flatcamGUI/FlatCAMGUI.py:1605 msgid "Pad" msgstr "Pad" -#: flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1606 msgid "Pad Array" msgstr "Pad Array" -#: flatcamGUI/FlatCAMGUI.py:1593 +#: flatcamGUI/FlatCAMGUI.py:1607 msgid "Track" msgstr "Track" -#: flatcamGUI/FlatCAMGUI.py:1594 +#: flatcamGUI/FlatCAMGUI.py:1608 msgid "Region" msgstr "Region" -#: flatcamGUI/FlatCAMGUI.py:1596 +#: flatcamGUI/FlatCAMGUI.py:1610 msgid "Exc Editor" msgstr "Exc Editor" -#: flatcamGUI/FlatCAMGUI.py:1597 +#: flatcamGUI/FlatCAMGUI.py:1611 msgid "Add Drill" msgstr "Add Drill" -#: flatcamGUI/FlatCAMGUI.py:1629 +#: flatcamGUI/FlatCAMGUI.py:1643 msgid "Print Preview" msgstr "Print Preview" -#: flatcamGUI/FlatCAMGUI.py:1630 +#: flatcamGUI/FlatCAMGUI.py:1644 msgid "Print Code" msgstr "Print Code" -#: flatcamGUI/FlatCAMGUI.py:1631 +#: flatcamGUI/FlatCAMGUI.py:1645 msgid "Find in Code" msgstr "Find in Code" -#: flatcamGUI/FlatCAMGUI.py:1636 +#: flatcamGUI/FlatCAMGUI.py:1650 msgid "Replace With" msgstr "Replace With" -#: flatcamGUI/FlatCAMGUI.py:1640 +#: flatcamGUI/FlatCAMGUI.py:1654 msgid "All" msgstr "All" -#: flatcamGUI/FlatCAMGUI.py:1642 +#: flatcamGUI/FlatCAMGUI.py:1656 msgid "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." @@ -5705,15 +5817,15 @@ msgstr "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." -#: flatcamGUI/FlatCAMGUI.py:1645 +#: flatcamGUI/FlatCAMGUI.py:1659 msgid "Open Code" msgstr "Open Code" -#: flatcamGUI/FlatCAMGUI.py:1646 +#: flatcamGUI/FlatCAMGUI.py:1660 msgid "Save Code" msgstr "Save Code" -#: flatcamGUI/FlatCAMGUI.py:1681 +#: flatcamGUI/FlatCAMGUI.py:1695 msgid "" "Relative neasurement.\n" "Reference is last click position" @@ -5721,7 +5833,7 @@ msgstr "" "Relative neasurement.\n" "Reference is last click position" -#: flatcamGUI/FlatCAMGUI.py:1687 +#: flatcamGUI/FlatCAMGUI.py:1701 msgid "" "Absolute neasurement.\n" "Reference is (X=0, Y= 0) position" @@ -5729,23 +5841,23 @@ msgstr "" "Absolute neasurement.\n" "Reference is (X=0, Y= 0) position" -#: flatcamGUI/FlatCAMGUI.py:1882 +#: flatcamGUI/FlatCAMGUI.py:1896 msgid "Select 'Esc'" msgstr "Select 'Esc'" -#: flatcamGUI/FlatCAMGUI.py:1907 +#: flatcamGUI/FlatCAMGUI.py:1921 msgid "Copy Objects" msgstr "Copy Objects" -#: flatcamGUI/FlatCAMGUI.py:1909 +#: flatcamGUI/FlatCAMGUI.py:1923 msgid "Delete Shape" msgstr "Delete Shape" -#: flatcamGUI/FlatCAMGUI.py:1914 +#: flatcamGUI/FlatCAMGUI.py:1928 msgid "Move Objects" msgstr "Move Objects" -#: flatcamGUI/FlatCAMGUI.py:2343 +#: flatcamGUI/FlatCAMGUI.py:2358 msgid "" "Please first select a geometry item to be cutted\n" "then select the geometry item that will be cutted\n" @@ -5757,17 +5869,17 @@ msgstr "" "out of the first item. In the end press ~X~ key or\n" "the toolbar button." -#: flatcamGUI/FlatCAMGUI.py:2350 flatcamGUI/FlatCAMGUI.py:2487 -#: flatcamGUI/FlatCAMGUI.py:2546 flatcamGUI/FlatCAMGUI.py:2566 +#: flatcamGUI/FlatCAMGUI.py:2365 flatcamGUI/FlatCAMGUI.py:2502 +#: flatcamGUI/FlatCAMGUI.py:2561 flatcamGUI/FlatCAMGUI.py:2581 msgid "Warning" msgstr "Warning" -#: flatcamGUI/FlatCAMGUI.py:2417 flatcamGUI/FlatCAMGUI.py:2616 -#: flatcamGUI/FlatCAMGUI.py:2827 +#: flatcamGUI/FlatCAMGUI.py:2432 flatcamGUI/FlatCAMGUI.py:2631 +#: flatcamGUI/FlatCAMGUI.py:2842 msgid "[WARNING_NOTCL] Cancelled." msgstr "[WARNING_NOTCL] Cancelled." -#: flatcamGUI/FlatCAMGUI.py:2482 +#: flatcamGUI/FlatCAMGUI.py:2497 msgid "" "Please select geometry items \n" "on which to perform Intersection Tool." @@ -5775,7 +5887,7 @@ msgstr "" "Please select geometry items \n" "on which to perform Intersection Tool." -#: flatcamGUI/FlatCAMGUI.py:2541 +#: flatcamGUI/FlatCAMGUI.py:2556 msgid "" "Please select geometry items \n" "on which to perform Substraction Tool." @@ -5783,7 +5895,7 @@ msgstr "" "Please select geometry items \n" "on which to perform Substraction Tool." -#: flatcamGUI/FlatCAMGUI.py:2561 +#: flatcamGUI/FlatCAMGUI.py:2576 msgid "" "Please select geometry items \n" "on which to perform union." @@ -5791,55 +5903,55 @@ msgstr "" "Please select geometry items \n" "on which to perform union." -#: flatcamGUI/FlatCAMGUI.py:2632 flatcamGUI/FlatCAMGUI.py:2844 +#: flatcamGUI/FlatCAMGUI.py:2647 flatcamGUI/FlatCAMGUI.py:2859 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to delete." msgstr "[WARNING_NOTCL] Cancelled. Nothing selected to delete." -#: flatcamGUI/FlatCAMGUI.py:2716 flatcamGUI/FlatCAMGUI.py:2911 +#: flatcamGUI/FlatCAMGUI.py:2731 flatcamGUI/FlatCAMGUI.py:2926 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to copy." msgstr "[WARNING_NOTCL] Cancelled. Nothing selected to copy." -#: flatcamGUI/FlatCAMGUI.py:2762 flatcamGUI/FlatCAMGUI.py:2957 +#: flatcamGUI/FlatCAMGUI.py:2777 flatcamGUI/FlatCAMGUI.py:2972 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to move." msgstr "[WARNING_NOTCL] Cancelled. Nothing selected to move." -#: flatcamGUI/FlatCAMGUI.py:2971 +#: flatcamGUI/FlatCAMGUI.py:2986 msgid "New Tool ..." msgstr "New Tool ..." -#: flatcamGUI/FlatCAMGUI.py:2972 +#: flatcamGUI/FlatCAMGUI.py:2987 msgid "Enter a Tool Diameter:" msgstr "Enter a Tool Diameter:" -#: flatcamGUI/FlatCAMGUI.py:3014 +#: flatcamGUI/FlatCAMGUI.py:3029 msgid "Measurement Tool exit..." msgstr "Measurement Tool exit..." -#: flatcamGUI/FlatCAMGUI.py:3296 +#: flatcamGUI/FlatCAMGUI.py:3324 msgid "Grid X value:" msgstr "Grid X value:" -#: flatcamGUI/FlatCAMGUI.py:3298 +#: flatcamGUI/FlatCAMGUI.py:3326 msgid "This is the Grid snap value on X axis." msgstr "This is the Grid snap value on X axis." -#: flatcamGUI/FlatCAMGUI.py:3303 +#: flatcamGUI/FlatCAMGUI.py:3331 msgid "Grid Y value:" msgstr "Grid Y value:" -#: flatcamGUI/FlatCAMGUI.py:3305 +#: flatcamGUI/FlatCAMGUI.py:3333 msgid "This is the Grid snap value on Y axis." msgstr "This is the Grid snap value on Y axis." -#: flatcamGUI/FlatCAMGUI.py:3310 +#: flatcamGUI/FlatCAMGUI.py:3338 msgid "Snap Max:" msgstr "Snap Max:" -#: flatcamGUI/FlatCAMGUI.py:3315 +#: flatcamGUI/FlatCAMGUI.py:3343 msgid "Workspace:" msgstr "Workspace:" -#: flatcamGUI/FlatCAMGUI.py:3317 +#: flatcamGUI/FlatCAMGUI.py:3345 msgid "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." @@ -5847,11 +5959,11 @@ msgstr "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." -#: flatcamGUI/FlatCAMGUI.py:3320 +#: flatcamGUI/FlatCAMGUI.py:3348 msgid "Wk. format:" msgstr "Wk. format:" -#: flatcamGUI/FlatCAMGUI.py:3322 +#: flatcamGUI/FlatCAMGUI.py:3350 msgid "" "Select the type of rectangle to be used on canvas,\n" "as valid workspace." @@ -5859,11 +5971,11 @@ msgstr "" "Select the type of rectangle to be used on canvas,\n" "as valid workspace." -#: flatcamGUI/FlatCAMGUI.py:3335 +#: flatcamGUI/FlatCAMGUI.py:3363 msgid "Plot Fill:" msgstr "Plot Fill:" -#: flatcamGUI/FlatCAMGUI.py:3337 +#: flatcamGUI/FlatCAMGUI.py:3365 msgid "" "Set the fill color for plotted objects.\n" "First 6 digits are the color and the last 2\n" @@ -5873,28 +5985,28 @@ msgstr "" "First 6 digits are the color and the last 2\n" "digits are for alpha (transparency) level." -#: flatcamGUI/FlatCAMGUI.py:3351 flatcamGUI/FlatCAMGUI.py:3401 -#: flatcamGUI/FlatCAMGUI.py:3451 +#: flatcamGUI/FlatCAMGUI.py:3379 flatcamGUI/FlatCAMGUI.py:3429 +#: flatcamGUI/FlatCAMGUI.py:3479 msgid "Alpha Level:" msgstr "Alpha Level:" -#: flatcamGUI/FlatCAMGUI.py:3353 +#: flatcamGUI/FlatCAMGUI.py:3381 msgid "Set the fill transparency for plotted objects." msgstr "Set the fill transparency for plotted objects." -#: flatcamGUI/FlatCAMGUI.py:3370 +#: flatcamGUI/FlatCAMGUI.py:3398 msgid "Plot Line:" msgstr "Plot Line:" -#: flatcamGUI/FlatCAMGUI.py:3372 +#: flatcamGUI/FlatCAMGUI.py:3400 msgid "Set the line color for plotted objects." msgstr "Set the line color for plotted objects." -#: flatcamGUI/FlatCAMGUI.py:3384 +#: flatcamGUI/FlatCAMGUI.py:3412 msgid "Sel. Fill:" msgstr "Sel. Fill:" -#: flatcamGUI/FlatCAMGUI.py:3386 +#: flatcamGUI/FlatCAMGUI.py:3414 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from left to right.\n" @@ -5906,23 +6018,23 @@ msgstr "" "First 6 digits are the color and the last 2\n" "digits are for alpha (transparency) level." -#: flatcamGUI/FlatCAMGUI.py:3403 +#: flatcamGUI/FlatCAMGUI.py:3431 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:3420 +#: flatcamGUI/FlatCAMGUI.py:3448 msgid "Sel. Line:" msgstr "Sel. Line:" -#: flatcamGUI/FlatCAMGUI.py:3422 +#: flatcamGUI/FlatCAMGUI.py:3450 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:3434 +#: flatcamGUI/FlatCAMGUI.py:3462 msgid "Sel2. Fill:" msgstr "Sel2. Fill:" -#: flatcamGUI/FlatCAMGUI.py:3436 +#: flatcamGUI/FlatCAMGUI.py:3464 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from right to left.\n" @@ -5934,47 +6046,47 @@ msgstr "" "First 6 digits are the color and the last 2\n" "digits are for alpha (transparency) level." -#: flatcamGUI/FlatCAMGUI.py:3453 +#: flatcamGUI/FlatCAMGUI.py:3481 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:3470 +#: flatcamGUI/FlatCAMGUI.py:3498 msgid "Sel2. Line:" msgstr "Sel2. Line:" -#: flatcamGUI/FlatCAMGUI.py:3472 +#: flatcamGUI/FlatCAMGUI.py:3500 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:3484 +#: flatcamGUI/FlatCAMGUI.py:3512 msgid "Editor Draw:" msgstr "Editor Draw:" -#: flatcamGUI/FlatCAMGUI.py:3486 +#: flatcamGUI/FlatCAMGUI.py:3514 msgid "Set the color for the shape." msgstr "Set the color for the shape." -#: flatcamGUI/FlatCAMGUI.py:3498 +#: flatcamGUI/FlatCAMGUI.py:3526 msgid "Editor Draw Sel.:" msgstr "Editor Draw Sel.:" -#: flatcamGUI/FlatCAMGUI.py:3500 +#: flatcamGUI/FlatCAMGUI.py:3528 msgid "Set the color of the shape when selected." msgstr "Set the color of the shape when selected." -#: flatcamGUI/FlatCAMGUI.py:3512 +#: flatcamGUI/FlatCAMGUI.py:3540 msgid "Project Items:" msgstr "Project Items:" -#: flatcamGUI/FlatCAMGUI.py:3514 +#: flatcamGUI/FlatCAMGUI.py:3542 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:3525 +#: flatcamGUI/FlatCAMGUI.py:3553 msgid "Proj. Dis. Items:" msgstr "Proj. Dis. Items:" -#: flatcamGUI/FlatCAMGUI.py:3527 +#: flatcamGUI/FlatCAMGUI.py:3555 msgid "" "Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled." @@ -5982,15 +6094,15 @@ msgstr "" "Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled." -#: flatcamGUI/FlatCAMGUI.py:3578 +#: flatcamGUI/FlatCAMGUI.py:3606 msgid "GUI Settings" msgstr "GUI Settings" -#: flatcamGUI/FlatCAMGUI.py:3585 +#: flatcamGUI/FlatCAMGUI.py:3613 msgid "Layout:" msgstr "Layout:" -#: flatcamGUI/FlatCAMGUI.py:3587 +#: flatcamGUI/FlatCAMGUI.py:3615 msgid "" "Select an layout for FlatCAM.\n" "It is applied immediately." @@ -5998,11 +6110,11 @@ msgstr "" "Select an layout for FlatCAM.\n" "It is applied immediately." -#: flatcamGUI/FlatCAMGUI.py:3603 +#: flatcamGUI/FlatCAMGUI.py:3631 msgid "Style:" msgstr "Style:" -#: flatcamGUI/FlatCAMGUI.py:3605 +#: flatcamGUI/FlatCAMGUI.py:3633 msgid "" "Select an style for FlatCAM.\n" "It will be applied at the next app start." @@ -6010,11 +6122,11 @@ msgstr "" "Select an style for FlatCAM.\n" "It will be applied at the next app start." -#: flatcamGUI/FlatCAMGUI.py:3616 +#: flatcamGUI/FlatCAMGUI.py:3644 msgid "HDPI Support:" msgstr "HDPI Support:" -#: flatcamGUI/FlatCAMGUI.py:3618 +#: flatcamGUI/FlatCAMGUI.py:3646 msgid "" "Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start." @@ -6022,11 +6134,11 @@ msgstr "" "Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start." -#: flatcamGUI/FlatCAMGUI.py:3631 +#: flatcamGUI/FlatCAMGUI.py:3659 msgid "Clear GUI Settings:" msgstr "Clear GUI Settings:" -#: flatcamGUI/FlatCAMGUI.py:3633 +#: flatcamGUI/FlatCAMGUI.py:3661 msgid "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." @@ -6034,15 +6146,15 @@ msgstr "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." -#: flatcamGUI/FlatCAMGUI.py:3636 +#: flatcamGUI/FlatCAMGUI.py:3664 msgid "Clear" msgstr "Clear" -#: flatcamGUI/FlatCAMGUI.py:3640 +#: flatcamGUI/FlatCAMGUI.py:3668 msgid "Hover Shape:" msgstr "Hover Shape:" -#: flatcamGUI/FlatCAMGUI.py:3642 +#: flatcamGUI/FlatCAMGUI.py:3670 msgid "" "Enable display of a hover shape for FlatCAM objects.\n" "It is displayed whenever the mouse cursor is hovering\n" @@ -6052,11 +6164,11 @@ msgstr "" "It is displayed whenever the mouse cursor is hovering\n" "over any kind of not-selected object." -#: flatcamGUI/FlatCAMGUI.py:3649 +#: flatcamGUI/FlatCAMGUI.py:3677 msgid "Sel. Shape:" msgstr "Sel. Shape:" -#: flatcamGUI/FlatCAMGUI.py:3651 +#: flatcamGUI/FlatCAMGUI.py:3679 msgid "" "Enable the display of a selection shape for FlatCAM objects.\n" "It is displayed whenever the mouse selects an object\n" @@ -6068,23 +6180,23 @@ msgstr "" "either by clicking or dragging mouse from left to right or\n" "right to left." -#: flatcamGUI/FlatCAMGUI.py:3693 +#: flatcamGUI/FlatCAMGUI.py:3721 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:3696 +#: flatcamGUI/FlatCAMGUI.py:3724 msgid "Clear GUI Settings" msgstr "Clear GUI Settings" -#: flatcamGUI/FlatCAMGUI.py:3717 +#: flatcamGUI/FlatCAMGUI.py:3745 msgid "App Preferences" msgstr "App Preferences" -#: flatcamGUI/FlatCAMGUI.py:3723 +#: flatcamGUI/FlatCAMGUI.py:3751 msgid "Units:" msgstr "Units:" -#: flatcamGUI/FlatCAMGUI.py:3724 +#: flatcamGUI/FlatCAMGUI.py:3752 msgid "" "The default value for FlatCAM units.\n" "Whatever is selected here is set every time\n" @@ -6094,11 +6206,11 @@ msgstr "" "Whatever is selected here is set every time\n" "FLatCAM is started." -#: flatcamGUI/FlatCAMGUI.py:3731 +#: flatcamGUI/FlatCAMGUI.py:3759 msgid "APP. LEVEL:" msgstr "APP. LEVEL:" -#: flatcamGUI/FlatCAMGUI.py:3732 +#: flatcamGUI/FlatCAMGUI.py:3760 msgid "" "Choose the default level of usage for FlatCAM.\n" "BASIC level -> reduced functionality, best for beginner's.\n" @@ -6114,19 +6226,19 @@ msgstr "" "The choice here will influence the parameters in\n" "the Selected Tab for all kinds of FlatCAM objects." -#: flatcamGUI/FlatCAMGUI.py:3741 +#: flatcamGUI/FlatCAMGUI.py:3769 msgid "Languages:" msgstr "Languages:" -#: flatcamGUI/FlatCAMGUI.py:3742 +#: flatcamGUI/FlatCAMGUI.py:3770 msgid "Set the language used throughout FlatCAM." msgstr "Set the language used throughout FlatCAM." -#: flatcamGUI/FlatCAMGUI.py:3745 +#: flatcamGUI/FlatCAMGUI.py:3773 msgid "Apply Language" msgstr "Apply Language" -#: flatcamGUI/FlatCAMGUI.py:3746 +#: flatcamGUI/FlatCAMGUI.py:3774 msgid "" "Set the language used throughout FlatCAM.\n" "The app will restart after click.Windows: When FlatCAM is installed in " @@ -6144,11 +6256,11 @@ msgstr "" "security features. In this case the language will be\n" "applied at the next app start." -#: flatcamGUI/FlatCAMGUI.py:3755 +#: flatcamGUI/FlatCAMGUI.py:3783 msgid "Shell at StartUp:" msgstr "Shell at StartUp:" -#: flatcamGUI/FlatCAMGUI.py:3757 flatcamGUI/FlatCAMGUI.py:3762 +#: flatcamGUI/FlatCAMGUI.py:3785 flatcamGUI/FlatCAMGUI.py:3790 msgid "" "Check this box if you want the shell to\n" "start automatically at startup." @@ -6156,11 +6268,11 @@ msgstr "" "Check this box if you want the shell to\n" "start automatically at startup." -#: flatcamGUI/FlatCAMGUI.py:3767 +#: flatcamGUI/FlatCAMGUI.py:3795 msgid "Version Check:" msgstr "Version Check:" -#: flatcamGUI/FlatCAMGUI.py:3769 flatcamGUI/FlatCAMGUI.py:3774 +#: flatcamGUI/FlatCAMGUI.py:3797 flatcamGUI/FlatCAMGUI.py:3802 msgid "" "Check this box if you want to check\n" "for a new version automatically at startup." @@ -6168,11 +6280,11 @@ msgstr "" "Check this box if you want to check\n" "for a new version automatically at startup." -#: flatcamGUI/FlatCAMGUI.py:3779 +#: flatcamGUI/FlatCAMGUI.py:3807 msgid "Send Stats:" msgstr "Send Stats:" -#: flatcamGUI/FlatCAMGUI.py:3781 flatcamGUI/FlatCAMGUI.py:3786 +#: flatcamGUI/FlatCAMGUI.py:3809 flatcamGUI/FlatCAMGUI.py:3814 msgid "" "Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM." @@ -6180,11 +6292,11 @@ msgstr "" "Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM." -#: flatcamGUI/FlatCAMGUI.py:3793 +#: flatcamGUI/FlatCAMGUI.py:3821 msgid "Pan Button:" msgstr "Pan Button:" -#: flatcamGUI/FlatCAMGUI.py:3794 +#: flatcamGUI/FlatCAMGUI.py:3822 msgid "" "Select the mouse button to use for panning:\n" "- MMB --> Middle Mouse Button\n" @@ -6194,19 +6306,19 @@ msgstr "" "- MMB --> Middle Mouse Button\n" "- RMB --> Right Mouse Button" -#: flatcamGUI/FlatCAMGUI.py:3801 +#: flatcamGUI/FlatCAMGUI.py:3829 msgid "Multiple Sel:" msgstr "Multiple Sel:" -#: flatcamGUI/FlatCAMGUI.py:3802 +#: flatcamGUI/FlatCAMGUI.py:3830 msgid "Select the key used for multiple selection." msgstr "Select the key used for multiple selection." -#: flatcamGUI/FlatCAMGUI.py:3807 +#: flatcamGUI/FlatCAMGUI.py:3835 msgid "Project at StartUp:" msgstr "Project at StartUp:" -#: flatcamGUI/FlatCAMGUI.py:3809 flatcamGUI/FlatCAMGUI.py:3814 +#: flatcamGUI/FlatCAMGUI.py:3837 flatcamGUI/FlatCAMGUI.py:3842 msgid "" "Check this box if you want the project/selected/tool tab area to\n" "to be shown automatically at startup." @@ -6214,11 +6326,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:3819 +#: flatcamGUI/FlatCAMGUI.py:3847 msgid "Project AutoHide:" msgstr "Project AutoHide:" -#: flatcamGUI/FlatCAMGUI.py:3821 flatcamGUI/FlatCAMGUI.py:3827 +#: flatcamGUI/FlatCAMGUI.py:3849 flatcamGUI/FlatCAMGUI.py:3855 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" @@ -6228,11 +6340,11 @@ msgstr "" "hide automatically when there are no objects loaded and\n" "to show whenever a new object is created." -#: flatcamGUI/FlatCAMGUI.py:3833 +#: flatcamGUI/FlatCAMGUI.py:3861 msgid "Enable ToolTips:" msgstr "Enable ToolTips:" -#: flatcamGUI/FlatCAMGUI.py:3835 flatcamGUI/FlatCAMGUI.py:3840 +#: flatcamGUI/FlatCAMGUI.py:3863 flatcamGUI/FlatCAMGUI.py:3868 msgid "" "Check this box if you want to have toolTips displayed\n" "when hovering with mouse over items throughout the App." @@ -6240,11 +6352,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:3843 +#: flatcamGUI/FlatCAMGUI.py:3871 msgid "Workers number:" msgstr "Workers number:" -#: flatcamGUI/FlatCAMGUI.py:3845 flatcamGUI/FlatCAMGUI.py:3854 +#: flatcamGUI/FlatCAMGUI.py:3873 flatcamGUI/FlatCAMGUI.py:3882 msgid "" "The number of Qthreads made available to the App.\n" "A bigger number may finish the jobs more quickly but\n" @@ -6260,11 +6372,46 @@ msgstr "" "Default value is 2.\n" "After change, it will be applied at next App start." -#: flatcamGUI/FlatCAMGUI.py:3895 +#: flatcamGUI/FlatCAMGUI.py:3894 flatcamGUI/FlatCAMGUI.py:3903 +msgid "" +"This value can counter the effect of the Circle Steps\n" +"parameter. Default value is 0.01.\n" +"A lower value will increase the detail both in image\n" +"and in Gcode for the circles, with a higher cost in\n" +"performance. Higher value will provide more\n" +"performance at the expense of level of detail." +msgstr "" +"This value can counter the effect of the Circle Steps\n" +"parameter. Default value is 0.01.\n" +"A lower value will increase the detail both in image\n" +"and in Gcode for the circles, with a higher cost in\n" +"performance. Higher value will provide more\n" +"performance at the expense of level of detail." + +#: flatcamGUI/FlatCAMGUI.py:3939 +#| msgid "Open Gerber" +msgid "\"Open\" behavior" +msgstr "\"Open\" behavior" + +#: flatcamGUI/FlatCAMGUI.py:3941 +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" +"\n" +"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." +msgstr "" +"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" +"\n" +"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:3950 msgid "Save Compressed Project" msgstr "Save Compressed Project" -#: flatcamGUI/FlatCAMGUI.py:3897 +#: flatcamGUI/FlatCAMGUI.py:3952 msgid "" "Whether to save a compressed or uncompressed project.\n" "When checked it will save a compressed FlatCAM project." @@ -6272,11 +6419,11 @@ msgstr "" "Whether to save a compressed or uncompressed project.\n" "When checked it will save a compressed FlatCAM project." -#: flatcamGUI/FlatCAMGUI.py:3908 +#: flatcamGUI/FlatCAMGUI.py:3963 msgid "Compression Level:" msgstr "Compression Level:" -#: flatcamGUI/FlatCAMGUI.py:3910 +#: flatcamGUI/FlatCAMGUI.py:3965 msgid "" "The level of compression used when saving\n" "a FlatCAM project. Higher value means better compression\n" @@ -6286,47 +6433,47 @@ msgstr "" "a FlatCAM project. Higher value means better compression\n" "but require more RAM usage and more processing time." -#: flatcamGUI/FlatCAMGUI.py:3936 flatcamGUI/FlatCAMGUI.py:4177 -#: flatcamGUI/FlatCAMGUI.py:4832 flatcamGUI/FlatCAMGUI.py:5156 +#: flatcamGUI/FlatCAMGUI.py:3991 flatcamGUI/FlatCAMGUI.py:4360 +#: flatcamGUI/FlatCAMGUI.py:5030 flatcamGUI/FlatCAMGUI.py:5402 #: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:505 -#: flatcamGUI/ObjectUI.py:830 flatcamGUI/ObjectUI.py:1344 +#: flatcamGUI/ObjectUI.py:833 flatcamGUI/ObjectUI.py:1350 msgid "Plot Options:" msgstr "Plot Options:" -#: flatcamGUI/FlatCAMGUI.py:3943 flatcamGUI/FlatCAMGUI.py:4189 +#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4372 #: flatcamGUI/ObjectUI.py:156 flatcamGUI/ObjectUI.py:506 msgid "Solid" msgstr "Solid" -#: flatcamGUI/FlatCAMGUI.py:3945 flatcamGUI/ObjectUI.py:158 +#: flatcamGUI/FlatCAMGUI.py:4000 flatcamGUI/ObjectUI.py:158 msgid "Solid color polygons." msgstr "Solid color polygons." -#: flatcamGUI/FlatCAMGUI.py:3950 flatcamGUI/ObjectUI.py:164 +#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/ObjectUI.py:164 msgid "M-Color" msgstr "M-Color" -#: flatcamGUI/FlatCAMGUI.py:3952 flatcamGUI/ObjectUI.py:166 +#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:166 msgid "Draw polygons in different colors." msgstr "Draw polygons in different colors." -#: flatcamGUI/FlatCAMGUI.py:3957 flatcamGUI/FlatCAMGUI.py:4183 -#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/ObjectUI.py:172 +#: flatcamGUI/FlatCAMGUI.py:4012 flatcamGUI/FlatCAMGUI.py:4366 +#: flatcamGUI/FlatCAMGUI.py:5034 flatcamGUI/ObjectUI.py:172 msgid "Plot" msgstr "Plot" -#: flatcamGUI/FlatCAMGUI.py:3959 flatcamGUI/FlatCAMGUI.py:4838 +#: flatcamGUI/FlatCAMGUI.py:4014 flatcamGUI/FlatCAMGUI.py:5036 #: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:546 -#: flatcamGUI/ObjectUI.py:876 flatcamGUI/ObjectUI.py:1431 +#: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1437 msgid "Plot (show) this object." msgstr "Plot (show) this object." -#: flatcamGUI/FlatCAMGUI.py:3964 flatcamGUI/FlatCAMGUI.py:4845 -#: flatcamGUI/FlatCAMGUI.py:5192 +#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:5043 +#: flatcamGUI/FlatCAMGUI.py:5438 msgid "Circle Steps:" msgstr "Circle Steps:" -#: flatcamGUI/FlatCAMGUI.py:3966 +#: flatcamGUI/FlatCAMGUI.py:4021 msgid "" "The number of circle steps for Gerber \n" "circular aperture linear approximation." @@ -6334,15 +6481,15 @@ msgstr "" "The number of circle steps for Gerber \n" "circular aperture linear approximation." -#: flatcamGUI/FlatCAMGUI.py:3981 +#: flatcamGUI/FlatCAMGUI.py:4036 msgid "Gerber Options" msgstr "Gerber Options" -#: flatcamGUI/FlatCAMGUI.py:3985 flatcamGUI/ObjectUI.py:251 +#: flatcamGUI/FlatCAMGUI.py:4040 flatcamGUI/ObjectUI.py:251 msgid "Isolation Routing:" msgstr "Isolation Routing:" -#: flatcamGUI/FlatCAMGUI.py:3987 flatcamGUI/ObjectUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:4042 flatcamGUI/ObjectUI.py:253 msgid "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." @@ -6350,17 +6497,17 @@ msgstr "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." -#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4555 -#: flatcamGUI/FlatCAMGUI.py:5480 flatcamGUI/ObjectUI.py:785 -#: flatcamGUI/ObjectUI.py:801 +#: flatcamGUI/FlatCAMGUI.py:4053 flatcamGUI/FlatCAMGUI.py:4753 +#: flatcamGUI/FlatCAMGUI.py:5726 flatcamGUI/ObjectUI.py:788 +#: flatcamGUI/ObjectUI.py:804 msgid "Diameter of the cutting tool." msgstr "Diameter of the cutting tool." -#: flatcamGUI/FlatCAMGUI.py:4005 +#: flatcamGUI/FlatCAMGUI.py:4060 msgid "Width (# passes):" msgstr "Width (# passes):" -#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:275 +#: flatcamGUI/FlatCAMGUI.py:4062 flatcamGUI/ObjectUI.py:275 msgid "" "Width of the isolation gap in\n" "number (integer) of tool widths." @@ -6368,11 +6515,11 @@ msgstr "" "Width of the isolation gap in\n" "number (integer) of tool widths." -#: flatcamGUI/FlatCAMGUI.py:4015 flatcamGUI/ObjectUI.py:283 +#: flatcamGUI/FlatCAMGUI.py:4070 flatcamGUI/ObjectUI.py:283 msgid "Pass overlap:" msgstr "Pass overlap:" -#: flatcamGUI/FlatCAMGUI.py:4017 flatcamGUI/ObjectUI.py:285 +#: flatcamGUI/FlatCAMGUI.py:4072 flatcamGUI/ObjectUI.py:285 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -6385,11 +6532,11 @@ msgstr "" "A value here of 0.25 means an overlap of 25%% from the tool diameter found " "above." -#: flatcamGUI/FlatCAMGUI.py:4025 flatcamGUI/ObjectUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:4080 flatcamGUI/ObjectUI.py:295 msgid "Milling Type:" msgstr "Milling Type:" -#: flatcamGUI/FlatCAMGUI.py:4027 flatcamGUI/ObjectUI.py:297 +#: flatcamGUI/FlatCAMGUI.py:4082 flatcamGUI/ObjectUI.py:297 msgid "" "Milling type:\n" "- climb / best for precision milling and to reduce tool usage\n" @@ -6399,19 +6546,19 @@ msgstr "" "- climb / best for precision milling and to reduce tool usage\n" "- conventional / useful when there is no backlash compensation" -#: flatcamGUI/FlatCAMGUI.py:4037 +#: flatcamGUI/FlatCAMGUI.py:4092 msgid "Combine Passes" msgstr "Combine Passes" -#: flatcamGUI/FlatCAMGUI.py:4039 flatcamGUI/ObjectUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:4094 flatcamGUI/ObjectUI.py:309 msgid "Combine all passes into one object" msgstr "Combine all passes into one object" -#: flatcamGUI/FlatCAMGUI.py:4044 +#: flatcamGUI/FlatCAMGUI.py:4099 msgid "Clear non-copper:" msgstr "Clear non-copper:" -#: flatcamGUI/FlatCAMGUI.py:4046 flatcamGUI/FlatCAMGUI.py:5368 +#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/FlatCAMGUI.py:5614 #: flatcamGUI/ObjectUI.py:386 msgid "" "Create a Geometry object with\n" @@ -6420,12 +6567,12 @@ msgstr "" "Create a Geometry object with\n" "toolpaths to cut all non-copper regions." -#: flatcamGUI/FlatCAMGUI.py:4055 flatcamGUI/FlatCAMGUI.py:4081 +#: flatcamGUI/FlatCAMGUI.py:4110 flatcamGUI/FlatCAMGUI.py:4136 #: flatcamGUI/ObjectUI.py:430 flatcamGUI/ObjectUI.py:464 msgid "Boundary Margin:" msgstr "Boundary Margin:" -#: flatcamGUI/FlatCAMGUI.py:4057 flatcamGUI/ObjectUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:4112 flatcamGUI/ObjectUI.py:432 msgid "" "Specify the edge of the PCB\n" "by drawing a box around all\n" @@ -6437,11 +6584,11 @@ msgstr "" "objects with this minimum\n" "distance." -#: flatcamGUI/FlatCAMGUI.py:4067 flatcamGUI/FlatCAMGUI.py:4090 +#: flatcamGUI/FlatCAMGUI.py:4122 flatcamGUI/FlatCAMGUI.py:4145 msgid "Rounded corners" msgstr "Rounded corners" -#: flatcamGUI/FlatCAMGUI.py:4069 +#: flatcamGUI/FlatCAMGUI.py:4124 msgid "" "Creates a Geometry objects with polygons\n" "covering the copper-free areas of the PCB." @@ -6449,11 +6596,11 @@ msgstr "" "Creates a Geometry objects with polygons\n" "covering the copper-free areas of the PCB." -#: flatcamGUI/FlatCAMGUI.py:4075 flatcamGUI/ObjectUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:4130 flatcamGUI/ObjectUI.py:454 msgid "Bounding Box:" msgstr "Bounding Box:" -#: flatcamGUI/FlatCAMGUI.py:4083 flatcamGUI/ObjectUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:4138 flatcamGUI/ObjectUI.py:466 msgid "" "Distance of the edges of the box\n" "to the nearest polygon." @@ -6461,7 +6608,7 @@ msgstr "" "Distance of the edges of the box\n" "to the nearest polygon." -#: flatcamGUI/FlatCAMGUI.py:4092 flatcamGUI/ObjectUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:4147 flatcamGUI/ObjectUI.py:476 msgid "" "If the bounding box is \n" "to have rounded corners\n" @@ -6473,15 +6620,15 @@ msgstr "" "their radius is equal to\n" "the margin." -#: flatcamGUI/FlatCAMGUI.py:4106 +#: flatcamGUI/FlatCAMGUI.py:4161 msgid "Gerber Adv. Options" msgstr "Gerber Adv. Options" -#: flatcamGUI/FlatCAMGUI.py:4110 +#: flatcamGUI/FlatCAMGUI.py:4165 msgid "Advanced Param.:" msgstr "Advanced Param.:" -#: flatcamGUI/FlatCAMGUI.py:4112 +#: flatcamGUI/FlatCAMGUI.py:4167 msgid "" "A list of Gerber advanced parameters.\n" "Those parameters are available only for\n" @@ -6491,11 +6638,11 @@ msgstr "" "Those parameters are available only for\n" "Advanced App. Level." -#: flatcamGUI/FlatCAMGUI.py:4122 flatcamGUI/ObjectUI.py:314 +#: flatcamGUI/FlatCAMGUI.py:4177 flatcamGUI/ObjectUI.py:314 msgid "\"Follow\"" msgstr "\"Follow\"" -#: flatcamGUI/FlatCAMGUI.py:4124 flatcamGUI/ObjectUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:4179 flatcamGUI/ObjectUI.py:316 msgid "" "Generate a 'Follow' geometry.\n" "This means that it will cut through\n" @@ -6505,11 +6652,11 @@ msgstr "" "This means that it will cut through\n" "the middle of the trace." -#: flatcamGUI/FlatCAMGUI.py:4132 +#: flatcamGUI/FlatCAMGUI.py:4187 msgid "Table Show/Hide" msgstr "Table Show/Hide" -#: flatcamGUI/FlatCAMGUI.py:4134 +#: flatcamGUI/FlatCAMGUI.py:4189 msgid "" "Toggle the display of the Gerber Apertures Table.\n" "Also, on hide, it will delete all mark shapes\n" @@ -6519,43 +6666,134 @@ msgstr "" "Also, on hide, it will delete all mark shapes\n" "that are drawn on canvas." -#: flatcamGUI/FlatCAMGUI.py:4142 -msgid "Ap. Scale Factor:" -msgstr "Ap. Scale Factor:" +#: flatcamGUI/FlatCAMGUI.py:4228 +#| msgid "Gerber Editor" +msgid "Gerber Export" +msgstr "Gerber Export" -#: flatcamGUI/FlatCAMGUI.py:4144 +#: flatcamGUI/FlatCAMGUI.py:4231 flatcamGUI/FlatCAMGUI.py:4902 +msgid "Export Options:" +msgstr "Export Options:" + +#: flatcamGUI/FlatCAMGUI.py:4233 +#| msgid "" +#| "The parameters set here are used in the file exported\n" +#| "when using the File -> Export -> Export Excellon menu entry." msgid "" -"Change the size of the selected apertures.\n" -"Factor by which to multiply\n" -"geometric features of this object." +"The parameters set here are used in the file exported\n" +"when using the File -> Export -> Export Gerber menu entry." msgstr "" -"Change the size of the selected apertures.\n" -"Factor by which to multiply\n" -"geometric features of this object." +"The parameters set here are used in the file exported\n" +"when using the File -> Export -> Export Gerber menu entry." -#: flatcamGUI/FlatCAMGUI.py:4154 -msgid "Ap. Buffer Factor:" -msgstr "Ap. Buffer Factor:" +#: flatcamGUI/FlatCAMGUI.py:4242 flatcamGUI/FlatCAMGUI.py:4913 +msgid "Units:" +msgstr "Units:" -#: flatcamGUI/FlatCAMGUI.py:4156 +#: flatcamGUI/FlatCAMGUI.py:4244 flatcamGUI/FlatCAMGUI.py:4250 +#| msgid "The units used in the Excellon file." +msgid "The units used in the Gerber file." +msgstr "The units used in the Gerber file." + +#: flatcamGUI/FlatCAMGUI.py:4256 flatcamGUI/FlatCAMGUI.py:4927 +msgid "Int/Decimals:" +msgstr "Int/Decimals:" + +#: flatcamGUI/FlatCAMGUI.py:4258 +#| msgid "The number of digits for the fractional part of the coordinates." msgid "" -"Change the size of the selected apertures.\n" -"Factor by which to expand/shrink\n" -"geometric features of this object." +"The number of digits in the whole part of the number\n" +"and in the fractional part of the number." msgstr "" -"Change the size of the selected apertures.\n" -"Factor by which to expand/shrink\n" -"geometric features of this object." +"The number of digits in the whole part of the number\n" +"and in the fractional part of the number." -#: flatcamGUI/FlatCAMGUI.py:4174 +#: flatcamGUI/FlatCAMGUI.py:4269 +#| msgid "" +#| "This numbers signify the number of digits in\n" +#| "the whole part of Excellon coordinates." +msgid "" +"This numbers signify the number of digits in\n" +"the whole part of Gerber coordinates." +msgstr "" +"This numbers signify the number of digits in\n" +"the whole part of Gerber coordinates." + +#: flatcamGUI/FlatCAMGUI.py:4283 +#| msgid "" +#| "This numbers signify the number of digits in\n" +#| "the decimal part of Excellon coordinates." +msgid "" +"This numbers signify the number of digits in\n" +"the decimal part of Gerber coordinates." +msgstr "" +"This numbers signify the number of digits in\n" +"the decimal part of Gerber coordinates." + +#: flatcamGUI/FlatCAMGUI.py:4292 flatcamGUI/FlatCAMGUI.py:4988 +msgid "Zeros:" +msgstr "Zeros:" + +#: flatcamGUI/FlatCAMGUI.py:4295 flatcamGUI/FlatCAMGUI.py:4305 +#| msgid "" +#| "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." +msgid "" +"This sets the type of Gerber zeros.\n" +"If LZ then Leading Zeros are removed and\n" +"Trailing Zeros are kept.\n" +"If TZ is checked then Trailing Zeros are removed\n" +"and Leading Zeros are kept." +msgstr "" +"This sets the type of Gerber zeros.\n" +"If LZ then Leading Zeros are removed and\n" +"Trailing Zeros are kept.\n" +"If TZ is checked then Trailing Zeros are removed\n" +"and Leading Zeros are kept." + +#: flatcamGUI/FlatCAMGUI.py:4325 flatcamGUI/FlatCAMGUI.py:5368 +#: flatcamGUI/FlatCAMGUI.py:5612 flatcamGUI/FlatCAMGUI.py:5713 +#: flatcamGUI/FlatCAMGUI.py:5792 flatcamGUI/FlatCAMGUI.py:5851 +#: flatcamGUI/FlatCAMGUI.py:5954 flatcamGUI/FlatCAMGUI.py:6015 +#: flatcamGUI/FlatCAMGUI.py:6214 flatcamGUI/FlatCAMGUI.py:6341 +msgid "Parameters:" +msgstr "Parameters:" + +#: flatcamGUI/FlatCAMGUI.py:4327 +msgid "A list of Gerber Editor parameters." +msgstr "A list of Gerber Editor parameters." + +#: flatcamGUI/FlatCAMGUI.py:4335 flatcamGUI/FlatCAMGUI.py:5378 +#| msgid "Selection:" +msgid "Selection limit:" +msgstr "Selection limit:" + +#: flatcamGUI/FlatCAMGUI.py:4337 +msgid "" +"Set the number of selected Gerber 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 Gerber 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:4357 msgid "Excellon General" msgstr "Excellon General" -#: flatcamGUI/FlatCAMGUI.py:4196 +#: flatcamGUI/FlatCAMGUI.py:4379 msgid "Excellon Format:" msgstr "Excellon Format:" -#: flatcamGUI/FlatCAMGUI.py:4198 +#: flatcamGUI/FlatCAMGUI.py:4381 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -6597,16 +6835,16 @@ msgstr "" "Sprint Layout 2:4 INCH LZ\n" "KiCAD 3:5 INCH TZ" -#: flatcamGUI/FlatCAMGUI.py:4223 +#: flatcamGUI/FlatCAMGUI.py:4406 msgid "INCH:" msgstr "INCH:" -#: flatcamGUI/FlatCAMGUI.py:4226 +#: flatcamGUI/FlatCAMGUI.py:4409 msgid "Default values for INCH are 2:4" msgstr "Default values for INCH are 2:4" -#: flatcamGUI/FlatCAMGUI.py:4234 flatcamGUI/FlatCAMGUI.py:4267 -#: flatcamGUI/FlatCAMGUI.py:4744 +#: flatcamGUI/FlatCAMGUI.py:4417 flatcamGUI/FlatCAMGUI.py:4450 +#: flatcamGUI/FlatCAMGUI.py:4942 msgid "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." @@ -6614,8 +6852,8 @@ msgstr "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." -#: flatcamGUI/FlatCAMGUI.py:4248 flatcamGUI/FlatCAMGUI.py:4281 -#: flatcamGUI/FlatCAMGUI.py:4758 +#: flatcamGUI/FlatCAMGUI.py:4431 flatcamGUI/FlatCAMGUI.py:4464 +#: flatcamGUI/FlatCAMGUI.py:4956 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." @@ -6623,19 +6861,19 @@ msgstr "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." -#: flatcamGUI/FlatCAMGUI.py:4256 +#: flatcamGUI/FlatCAMGUI.py:4439 msgid "METRIC:" msgstr "METRIC:" -#: flatcamGUI/FlatCAMGUI.py:4259 +#: flatcamGUI/FlatCAMGUI.py:4442 msgid "Default values for METRIC are 3:3" msgstr "Default values for METRIC are 3:3" -#: flatcamGUI/FlatCAMGUI.py:4290 +#: flatcamGUI/FlatCAMGUI.py:4473 msgid "Default Zeros:" msgstr "Default Zeros:" -#: flatcamGUI/FlatCAMGUI.py:4293 flatcamGUI/FlatCAMGUI.py:4793 +#: flatcamGUI/FlatCAMGUI.py:4476 flatcamGUI/FlatCAMGUI.py:4991 msgid "" "This sets the type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -6649,7 +6887,7 @@ msgstr "" "If TZ is checked then Trailing Zeros are kept\n" "and Leading Zeros are removed." -#: flatcamGUI/FlatCAMGUI.py:4304 +#: flatcamGUI/FlatCAMGUI.py:4487 msgid "" "This sets the default type of Excellon zeros.\n" "If it is not detected in the parsed file the value here\n" @@ -6665,11 +6903,11 @@ msgstr "" "If TZ is checked then Trailing Zeros are kept\n" "and Leading Zeros are removed." -#: flatcamGUI/FlatCAMGUI.py:4318 +#: flatcamGUI/FlatCAMGUI.py:4501 msgid "Default Units:" msgstr "Default Units:" -#: flatcamGUI/FlatCAMGUI.py:4321 +#: flatcamGUI/FlatCAMGUI.py:4504 msgid "" "This sets the default units of Excellon files.\n" "If it is not detected in the parsed file the value here\n" @@ -6681,7 +6919,7 @@ msgstr "" "will be used.Some Excellon files don't have an header\n" "therefore this parameter will be used." -#: flatcamGUI/FlatCAMGUI.py:4332 +#: flatcamGUI/FlatCAMGUI.py:4515 msgid "" "This sets the units of Excellon files.\n" "Some Excellon files don't have an header\n" @@ -6691,15 +6929,15 @@ msgstr "" "Some Excellon files don't have an header\n" "therefore this parameter will be used." -#: flatcamGUI/FlatCAMGUI.py:4348 +#: flatcamGUI/FlatCAMGUI.py:4531 msgid "Excellon Optimization:" msgstr "Excellon Optimization:" -#: flatcamGUI/FlatCAMGUI.py:4355 +#: flatcamGUI/FlatCAMGUI.py:4538 msgid "Algorithm: " msgstr "Algorithm: " -#: flatcamGUI/FlatCAMGUI.py:4358 flatcamGUI/FlatCAMGUI.py:4371 +#: flatcamGUI/FlatCAMGUI.py:4541 flatcamGUI/FlatCAMGUI.py:4554 msgid "" "This sets the optimization type for the Excellon drill path.\n" "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" @@ -6719,11 +6957,11 @@ msgstr "" "If DISABLED, then FlatCAM works in 32bit mode and it uses \n" "Travelling Salesman algorithm for path optimization." -#: flatcamGUI/FlatCAMGUI.py:4383 +#: flatcamGUI/FlatCAMGUI.py:4566 msgid "Optimization Time: " msgstr "Optimization Time: " -#: flatcamGUI/FlatCAMGUI.py:4386 +#: flatcamGUI/FlatCAMGUI.py:4569 msgid "" "When OR-Tools Metaheuristic (MH) is enabled there is a\n" "maximum threshold for how much time is spent doing the\n" @@ -6735,15 +6973,15 @@ msgstr "" "path optimization. This max duration is set here.\n" "In seconds." -#: flatcamGUI/FlatCAMGUI.py:4427 +#: flatcamGUI/FlatCAMGUI.py:4611 msgid "Excellon Options" msgstr "Excellon Options" -#: flatcamGUI/FlatCAMGUI.py:4430 flatcamGUI/ObjectUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:4614 flatcamGUI/ObjectUI.py:584 msgid "Create CNC Job" msgstr "Create CNC Job" -#: flatcamGUI/FlatCAMGUI.py:4432 +#: flatcamGUI/FlatCAMGUI.py:4616 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object." @@ -6751,13 +6989,13 @@ msgstr "" "Parameters used to create a CNC Job object\n" "for this drill object." -#: flatcamGUI/FlatCAMGUI.py:4440 flatcamGUI/FlatCAMGUI.py:4896 -#: flatcamGUI/FlatCAMGUI.py:5904 flatcamGUI/ObjectUI.py:595 -#: flatcamGUI/ObjectUI.py:1059 flatcamTools/ToolCalculators.py:108 +#: flatcamGUI/FlatCAMGUI.py:4624 flatcamGUI/FlatCAMGUI.py:5094 +#: flatcamGUI/FlatCAMGUI.py:6150 flatcamGUI/ObjectUI.py:595 +#: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolCalculators.py:108 msgid "Cut Z:" msgstr "Cut Z:" -#: flatcamGUI/FlatCAMGUI.py:4442 flatcamGUI/ObjectUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:4626 flatcamGUI/ObjectUI.py:597 msgid "" "Drill depth (negative)\n" "below the copper surface." @@ -6765,12 +7003,12 @@ msgstr "" "Drill depth (negative)\n" "below the copper surface." -#: flatcamGUI/FlatCAMGUI.py:4449 flatcamGUI/FlatCAMGUI.py:4929 -#: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1095 +#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/FlatCAMGUI.py:5127 +#: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1098 msgid "Travel Z:" msgstr "Travel Z:" -#: flatcamGUI/FlatCAMGUI.py:4451 flatcamGUI/ObjectUI.py:607 +#: flatcamGUI/FlatCAMGUI.py:4635 flatcamGUI/ObjectUI.py:607 msgid "" "Tool height when travelling\n" "across the XY plane." @@ -6778,11 +7016,11 @@ msgstr "" "Tool height when travelling\n" "across the XY plane." -#: flatcamGUI/FlatCAMGUI.py:4459 flatcamGUI/FlatCAMGUI.py:4939 +#: flatcamGUI/FlatCAMGUI.py:4643 flatcamGUI/FlatCAMGUI.py:5137 msgid "Tool change:" msgstr "Tool change:" -#: flatcamGUI/FlatCAMGUI.py:4461 flatcamGUI/FlatCAMGUI.py:4941 +#: flatcamGUI/FlatCAMGUI.py:4645 flatcamGUI/FlatCAMGUI.py:5139 #: flatcamGUI/ObjectUI.py:617 msgid "" "Include tool-change sequence\n" @@ -6791,19 +7029,19 @@ msgstr "" "Include tool-change sequence\n" "in G-Code (Pause for tool change)." -#: flatcamGUI/FlatCAMGUI.py:4468 flatcamGUI/FlatCAMGUI.py:4949 +#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5147 msgid "Toolchange Z:" msgstr "Toolchange Z:" -#: flatcamGUI/FlatCAMGUI.py:4470 flatcamGUI/FlatCAMGUI.py:4951 +#: flatcamGUI/FlatCAMGUI.py:4654 flatcamGUI/FlatCAMGUI.py:5149 msgid "Toolchange Z position." msgstr "Toolchange Z position." -#: flatcamGUI/FlatCAMGUI.py:4476 +#: flatcamGUI/FlatCAMGUI.py:4660 msgid "Feedrate:" msgstr "Feedrate:" -#: flatcamGUI/FlatCAMGUI.py:4478 +#: flatcamGUI/FlatCAMGUI.py:4662 msgid "" "Tool speed while drilling\n" "(in units per minute)." @@ -6811,12 +7049,12 @@ msgstr "" "Tool speed while drilling\n" "(in units per minute)." -#: flatcamGUI/FlatCAMGUI.py:4486 +#: flatcamGUI/FlatCAMGUI.py:4670 msgid "Spindle Speed:" msgstr "Spindle Speed:" -#: flatcamGUI/FlatCAMGUI.py:4488 flatcamGUI/FlatCAMGUI.py:4981 -#: flatcamGUI/ObjectUI.py:681 +#: flatcamGUI/FlatCAMGUI.py:4672 flatcamGUI/FlatCAMGUI.py:5179 +#: flatcamGUI/ObjectUI.py:684 msgid "" "Speed of the spindle\n" "in RPM (optional)" @@ -6824,13 +7062,33 @@ msgstr "" "Speed of the spindle\n" "in RPM (optional)" -#: flatcamGUI/FlatCAMGUI.py:4496 flatcamGUI/FlatCAMGUI.py:4989 -#: flatcamGUI/ObjectUI.py:689 flatcamGUI/ObjectUI.py:1218 +#: flatcamGUI/FlatCAMGUI.py:4680 flatcamGUI/FlatCAMGUI.py:5187 +#| msgid "Spindle Speed:" +msgid "Spindle dir.:" +msgstr "Spindle dir.:" + +#: flatcamGUI/FlatCAMGUI.py:4682 flatcamGUI/FlatCAMGUI.py:5189 +#| msgid "" +#| "Direction for circular array.Can be CW = clockwise or CCW = counter " +#| "clockwise." +msgid "" +"This sets the direction that the spindle is rotating.\n" +"It can be either:\n" +"- CW = clockwise or\n" +"- CCW = counter clockwise" +msgstr "" +"This sets the direction that the spindle is rotating.\n" +"It can be either:\n" +"- CW = clockwise or\n" +"- CCW = counter clockwise" + +#: flatcamGUI/FlatCAMGUI.py:4694 flatcamGUI/FlatCAMGUI.py:5201 +#: flatcamGUI/ObjectUI.py:692 flatcamGUI/ObjectUI.py:1224 msgid "Dwell:" msgstr "Dwell:" -#: flatcamGUI/FlatCAMGUI.py:4498 flatcamGUI/FlatCAMGUI.py:4991 -#: flatcamGUI/ObjectUI.py:691 flatcamGUI/ObjectUI.py:1221 +#: flatcamGUI/FlatCAMGUI.py:4696 flatcamGUI/FlatCAMGUI.py:5203 +#: flatcamGUI/ObjectUI.py:694 flatcamGUI/ObjectUI.py:1227 msgid "" "Pause to allow the spindle to reach its\n" "speed before cutting." @@ -6838,21 +7096,21 @@ msgstr "" "Pause to allow the spindle to reach its\n" "speed before cutting." -#: flatcamGUI/FlatCAMGUI.py:4501 flatcamGUI/FlatCAMGUI.py:4994 +#: flatcamGUI/FlatCAMGUI.py:4699 flatcamGUI/FlatCAMGUI.py:5206 msgid "Duration:" msgstr "Duration:" -#: flatcamGUI/FlatCAMGUI.py:4503 flatcamGUI/FlatCAMGUI.py:4996 -#: flatcamGUI/ObjectUI.py:696 flatcamGUI/ObjectUI.py:1228 +#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 +#: 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:4515 flatcamGUI/FlatCAMGUI.py:5006 -#: flatcamGUI/ObjectUI.py:704 +#: flatcamGUI/FlatCAMGUI.py:4713 flatcamGUI/FlatCAMGUI.py:5218 +#: flatcamGUI/ObjectUI.py:707 msgid "Postprocessor:" msgstr "Postprocessor:" -#: flatcamGUI/FlatCAMGUI.py:4517 +#: flatcamGUI/FlatCAMGUI.py:4715 msgid "" "The postprocessor file that dictates\n" "gcode output." @@ -6860,11 +7118,11 @@ msgstr "" "The postprocessor file that dictates\n" "gcode output." -#: flatcamGUI/FlatCAMGUI.py:4527 +#: flatcamGUI/FlatCAMGUI.py:4725 msgid "Gcode: " msgstr "Gcode: " -#: flatcamGUI/FlatCAMGUI.py:4529 +#: flatcamGUI/FlatCAMGUI.py:4727 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -6876,23 +7134,23 @@ msgstr "" "When choosing 'Slots' or 'Both', slots will be\n" "converted to drills." -#: flatcamGUI/FlatCAMGUI.py:4545 flatcamGUI/ObjectUI.py:769 +#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:772 msgid "Mill Holes" msgstr "Mill Holes" -#: flatcamGUI/FlatCAMGUI.py:4547 flatcamGUI/ObjectUI.py:771 +#: flatcamGUI/FlatCAMGUI.py:4745 flatcamGUI/ObjectUI.py:774 msgid "Create Geometry for milling holes." msgstr "Create Geometry for milling holes." -#: flatcamGUI/FlatCAMGUI.py:4553 +#: flatcamGUI/FlatCAMGUI.py:4751 msgid "Drill Tool dia:" msgstr "Drill Tool dia:" -#: flatcamGUI/FlatCAMGUI.py:4560 +#: flatcamGUI/FlatCAMGUI.py:4758 msgid "Slot Tool dia:" msgstr "Slot Tool dia:" -#: flatcamGUI/FlatCAMGUI.py:4562 +#: flatcamGUI/FlatCAMGUI.py:4760 msgid "" "Diameter of the cutting tool\n" "when milling slots." @@ -6900,19 +7158,19 @@ msgstr "" "Diameter of the cutting tool\n" "when milling slots." -#: flatcamGUI/FlatCAMGUI.py:4574 +#: flatcamGUI/FlatCAMGUI.py:4772 msgid "Defaults" msgstr "Defaults" -#: flatcamGUI/FlatCAMGUI.py:4587 +#: flatcamGUI/FlatCAMGUI.py:4785 msgid "Excellon Adv. Options" msgstr "Excellon Adv. Options" -#: flatcamGUI/FlatCAMGUI.py:4593 flatcamGUI/FlatCAMGUI.py:5029 +#: flatcamGUI/FlatCAMGUI.py:4791 flatcamGUI/FlatCAMGUI.py:5241 msgid "Advanced Options:" msgstr "Advanced Options:" -#: flatcamGUI/FlatCAMGUI.py:4595 +#: 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." @@ -6920,11 +7178,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:4603 +#: flatcamGUI/FlatCAMGUI.py:4801 msgid "Offset Z:" msgstr "Offset Z:" -#: flatcamGUI/FlatCAMGUI.py:4605 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" @@ -6934,20 +7192,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:4612 flatcamGUI/FlatCAMGUI.py:5040 +#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/FlatCAMGUI.py:5252 msgid "Toolchange X,Y:" msgstr "Toolchange X,Y:" -#: flatcamGUI/FlatCAMGUI.py:4614 flatcamGUI/FlatCAMGUI.py:5042 +#: flatcamGUI/FlatCAMGUI.py:4812 flatcamGUI/FlatCAMGUI.py:5254 msgid "Toolchange X,Y position." msgstr "Toolchange X,Y position." -#: flatcamGUI/FlatCAMGUI.py:4620 flatcamGUI/FlatCAMGUI.py:5049 +#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5261 #: flatcamGUI/ObjectUI.py:634 msgid "Start move Z:" msgstr "Start move Z:" -#: flatcamGUI/FlatCAMGUI.py:4622 +#: flatcamGUI/FlatCAMGUI.py:4820 msgid "" "Height of the tool just after start.\n" "Delete the value if you don't need this feature." @@ -6955,12 +7213,12 @@ msgstr "" "Height of the tool just after start.\n" "Delete the value if you don't need this feature." -#: flatcamGUI/FlatCAMGUI.py:4629 flatcamGUI/FlatCAMGUI.py:5059 -#: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1141 +#: flatcamGUI/FlatCAMGUI.py:4827 flatcamGUI/FlatCAMGUI.py:5271 +#: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1144 msgid "End move Z:" msgstr "End move Z:" -#: flatcamGUI/FlatCAMGUI.py:4631 flatcamGUI/FlatCAMGUI.py:5061 +#: flatcamGUI/FlatCAMGUI.py:4829 flatcamGUI/FlatCAMGUI.py:5273 msgid "" "Height of the tool after\n" "the last move at the end of the job." @@ -6968,12 +7226,12 @@ msgstr "" "Height of the tool after\n" "the last move at the end of the job." -#: flatcamGUI/FlatCAMGUI.py:4638 flatcamGUI/FlatCAMGUI.py:5069 +#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5281 #: flatcamGUI/ObjectUI.py:665 msgid "Feedrate Rapids:" msgstr "Feedrate Rapids:" -#: flatcamGUI/FlatCAMGUI.py:4640 flatcamGUI/ObjectUI.py:667 +#: flatcamGUI/FlatCAMGUI.py:4838 flatcamGUI/ObjectUI.py:667 msgid "" "Tool speed while drilling\n" "(in units per minute).\n" @@ -6987,13 +7245,13 @@ msgstr "" "It is useful only for Marlin,\n" "ignore for any other cases." -#: flatcamGUI/FlatCAMGUI.py:4651 flatcamGUI/FlatCAMGUI.py:5093 -#: flatcamGUI/ObjectUI.py:715 flatcamGUI/ObjectUI.py:1250 +#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5305 +#: flatcamGUI/ObjectUI.py:718 flatcamGUI/ObjectUI.py:1256 msgid "Probe Z depth:" msgstr "Probe Z depth:" -#: flatcamGUI/FlatCAMGUI.py:4653 flatcamGUI/FlatCAMGUI.py:5095 -#: flatcamGUI/ObjectUI.py:717 flatcamGUI/ObjectUI.py:1253 +#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5307 +#: 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." @@ -7001,21 +7259,21 @@ msgstr "" "The maximum depth that the probe is allowed\n" "to probe. Negative value, in current units." -#: flatcamGUI/FlatCAMGUI.py:4661 flatcamGUI/FlatCAMGUI.py:5103 -#: flatcamGUI/ObjectUI.py:727 flatcamGUI/ObjectUI.py:1264 +#: flatcamGUI/FlatCAMGUI.py:4859 flatcamGUI/FlatCAMGUI.py:5315 +#: flatcamGUI/ObjectUI.py:730 flatcamGUI/ObjectUI.py:1270 msgid "Feedrate Probe:" msgstr "Feedrate Probe:" -#: flatcamGUI/FlatCAMGUI.py:4663 flatcamGUI/FlatCAMGUI.py:5105 -#: flatcamGUI/ObjectUI.py:729 flatcamGUI/ObjectUI.py:1267 +#: flatcamGUI/FlatCAMGUI.py:4861 flatcamGUI/FlatCAMGUI.py:5317 +#: 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:4669 flatcamGUI/FlatCAMGUI.py:5112 +#: flatcamGUI/FlatCAMGUI.py:4867 flatcamGUI/FlatCAMGUI.py:5324 msgid "Fast Plunge:" msgstr "Fast Plunge:" -#: flatcamGUI/FlatCAMGUI.py:4671 flatcamGUI/FlatCAMGUI.py:5114 +#: flatcamGUI/FlatCAMGUI.py:4869 flatcamGUI/FlatCAMGUI.py:5326 msgid "" "By checking this, the vertical move from\n" "Z_Toolchange to Z_move is done with G0,\n" @@ -7027,11 +7285,11 @@ msgstr "" "meaning the fastest speed available.\n" "WARNING: the move is done at Toolchange X,Y coords." -#: flatcamGUI/FlatCAMGUI.py:4680 +#: flatcamGUI/FlatCAMGUI.py:4878 msgid "Fast Retract:" msgstr "Fast Retract:" -#: flatcamGUI/FlatCAMGUI.py:4682 +#: flatcamGUI/FlatCAMGUI.py:4880 msgid "" "Exit hole strategy.\n" " - When uncheked, while exiting the drilled hole the drill bit\n" @@ -7047,15 +7305,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:4701 +#: flatcamGUI/FlatCAMGUI.py:4899 msgid "Excellon Export" msgstr "Excellon Export" -#: flatcamGUI/FlatCAMGUI.py:4704 -msgid "Export Options:" -msgstr "Export Options:" - -#: flatcamGUI/FlatCAMGUI.py:4706 +#: 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." @@ -7063,19 +7317,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:4715 -msgid "Units:" -msgstr "Units:" - -#: flatcamGUI/FlatCAMGUI.py:4717 flatcamGUI/FlatCAMGUI.py:4723 +#: 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:4729 -msgid "Int/Decimals:" -msgstr "Int/Decimals:" - -#: flatcamGUI/FlatCAMGUI.py:4731 +#: flatcamGUI/FlatCAMGUI.py:4929 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -7087,11 +7333,11 @@ msgstr "" "Here we set the format used when the provided\n" "coordinates are not using period." -#: flatcamGUI/FlatCAMGUI.py:4767 +#: flatcamGUI/FlatCAMGUI.py:4965 msgid "Format:" msgstr "Format:" -#: flatcamGUI/FlatCAMGUI.py:4769 flatcamGUI/FlatCAMGUI.py:4779 +#: 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" @@ -7107,11 +7353,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:4790 -msgid "Zeros:" -msgstr "Zeros:" - -#: flatcamGUI/FlatCAMGUI.py:4803 +#: flatcamGUI/FlatCAMGUI.py:5001 msgid "" "This sets the default type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -7125,11 +7367,11 @@ msgstr "" "If TZ is checked then Trailing Zeros are kept\n" "and Leading Zeros are removed." -#: flatcamGUI/FlatCAMGUI.py:4829 +#: flatcamGUI/FlatCAMGUI.py:5027 msgid "Geometry General" msgstr "Geometry General" -#: flatcamGUI/FlatCAMGUI.py:4847 +#: flatcamGUI/FlatCAMGUI.py:5045 msgid "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." @@ -7137,15 +7379,15 @@ msgstr "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." -#: flatcamGUI/FlatCAMGUI.py:4855 +#: flatcamGUI/FlatCAMGUI.py:5053 msgid "Tools" msgstr "Tools" -#: flatcamGUI/FlatCAMGUI.py:4862 +#: flatcamGUI/FlatCAMGUI.py:5060 msgid "Tool dia: " msgstr "Tool dia: " -#: flatcamGUI/FlatCAMGUI.py:4864 +#: flatcamGUI/FlatCAMGUI.py:5062 msgid "" "The diameter of the cutting\n" "tool.." @@ -7153,15 +7395,15 @@ msgstr "" "The diameter of the cutting\n" "tool.." -#: flatcamGUI/FlatCAMGUI.py:4879 +#: flatcamGUI/FlatCAMGUI.py:5077 msgid "Geometry Options" msgstr "Geometry Options" -#: flatcamGUI/FlatCAMGUI.py:4884 +#: flatcamGUI/FlatCAMGUI.py:5082 msgid "Create CNC Job:" msgstr "Create CNC Job:" -#: flatcamGUI/FlatCAMGUI.py:4886 +#: flatcamGUI/FlatCAMGUI.py:5084 msgid "" "Create a CNC Job object\n" "tracing the contours of this\n" @@ -7171,7 +7413,7 @@ msgstr "" "tracing the contours of this\n" "Geometry object." -#: flatcamGUI/FlatCAMGUI.py:4898 flatcamGUI/ObjectUI.py:1062 +#: flatcamGUI/FlatCAMGUI.py:5096 flatcamGUI/ObjectUI.py:1065 msgid "" "Cutting depth (negative)\n" "below the copper surface." @@ -7179,19 +7421,19 @@ msgstr "" "Cutting depth (negative)\n" "below the copper surface." -#: flatcamGUI/FlatCAMGUI.py:4906 +#: flatcamGUI/FlatCAMGUI.py:5104 msgid "Multidepth" msgstr "Multidepth" -#: flatcamGUI/FlatCAMGUI.py:4908 +#: flatcamGUI/FlatCAMGUI.py:5106 msgid "Multidepth usage: True or False." msgstr "Multidepth usage: True or False." -#: flatcamGUI/FlatCAMGUI.py:4913 +#: flatcamGUI/FlatCAMGUI.py:5111 msgid "Depth/Pass:" msgstr "Depth/Pass:" -#: flatcamGUI/FlatCAMGUI.py:4915 +#: flatcamGUI/FlatCAMGUI.py:5113 msgid "" "The depth to cut on each pass,\n" "when multidepth is enabled.\n" @@ -7205,7 +7447,7 @@ msgstr "" "it is a fraction from the depth\n" "which has negative value." -#: flatcamGUI/FlatCAMGUI.py:4931 flatcamGUI/ObjectUI.py:1098 +#: flatcamGUI/FlatCAMGUI.py:5129 flatcamGUI/ObjectUI.py:1101 msgid "" "Height of the tool when\n" "moving without cutting." @@ -7213,11 +7455,11 @@ msgstr "" "Height of the tool when\n" "moving without cutting." -#: flatcamGUI/FlatCAMGUI.py:4958 flatcamGUI/ObjectUI.py:1153 +#: flatcamGUI/FlatCAMGUI.py:5156 flatcamGUI/ObjectUI.py:1156 msgid "Feed Rate X-Y:" msgstr "Feed Rate X-Y:" -#: flatcamGUI/FlatCAMGUI.py:4960 flatcamGUI/ObjectUI.py:1156 +#: flatcamGUI/FlatCAMGUI.py:5158 flatcamGUI/ObjectUI.py:1159 msgid "" "Cutting speed in the XY\n" "plane in units per minute" @@ -7225,11 +7467,11 @@ msgstr "" "Cutting speed in the XY\n" "plane in units per minute" -#: flatcamGUI/FlatCAMGUI.py:4968 +#: flatcamGUI/FlatCAMGUI.py:5166 msgid "Feed Rate Z:" msgstr "Feed Rate Z:" -#: flatcamGUI/FlatCAMGUI.py:4970 +#: flatcamGUI/FlatCAMGUI.py:5168 msgid "" "Cutting speed in the XY\n" "plane in units per minute.\n" @@ -7239,12 +7481,12 @@ msgstr "" "plane in units per minute.\n" "It is called also Plunge." -#: flatcamGUI/FlatCAMGUI.py:4979 flatcamGUI/ObjectUI.py:679 -#: flatcamGUI/ObjectUI.py:1205 +#: flatcamGUI/FlatCAMGUI.py:5177 flatcamGUI/ObjectUI.py:682 +#: flatcamGUI/ObjectUI.py:1211 msgid "Spindle speed:" msgstr "Spindle speed:" -#: flatcamGUI/FlatCAMGUI.py:5008 +#: flatcamGUI/FlatCAMGUI.py:5220 msgid "" "The postprocessor file that dictates\n" "Machine Code output." @@ -7252,11 +7494,11 @@ msgstr "" "The postprocessor file that dictates\n" "Machine Code output." -#: flatcamGUI/FlatCAMGUI.py:5024 +#: flatcamGUI/FlatCAMGUI.py:5236 msgid "Geometry Adv. Options" msgstr "Geometry Adv. Options" -#: flatcamGUI/FlatCAMGUI.py:5031 +#: flatcamGUI/FlatCAMGUI.py:5243 msgid "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." @@ -7264,7 +7506,7 @@ msgstr "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." -#: flatcamGUI/FlatCAMGUI.py:5051 +#: flatcamGUI/FlatCAMGUI.py:5263 msgid "" "Height of the tool just after starting the work.\n" "Delete the value if you don't need this feature." @@ -7272,7 +7514,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:5071 +#: flatcamGUI/FlatCAMGUI.py:5283 msgid "" "Cutting speed in the XY plane\n" "(in units per minute).\n" @@ -7286,11 +7528,11 @@ msgstr "" "It is useful only for Marlin,\n" "ignore for any other cases." -#: flatcamGUI/FlatCAMGUI.py:5083 +#: flatcamGUI/FlatCAMGUI.py:5295 msgid "Re-cut 1st pt." msgstr "Re-cut 1st pt." -#: flatcamGUI/FlatCAMGUI.py:5085 flatcamGUI/ObjectUI.py:1196 +#: flatcamGUI/FlatCAMGUI.py:5297 flatcamGUI/ObjectUI.py:1202 msgid "" "In order to remove possible\n" "copper leftovers where first cut\n" @@ -7302,11 +7544,11 @@ msgstr "" "meet with last cut, we generate an\n" "extended cut over the first cut section." -#: flatcamGUI/FlatCAMGUI.py:5124 +#: flatcamGUI/FlatCAMGUI.py:5336 msgid "Seg. X size:" msgstr "Seg. X size:" -#: flatcamGUI/FlatCAMGUI.py:5126 +#: flatcamGUI/FlatCAMGUI.py:5338 msgid "" "The size of the trace segment on the X axis.\n" "Useful for auto-leveling.\n" @@ -7316,11 +7558,11 @@ msgstr "" "Useful for auto-leveling.\n" "A value of 0 means no segmentation on the X axis." -#: flatcamGUI/FlatCAMGUI.py:5135 +#: flatcamGUI/FlatCAMGUI.py:5347 msgid "Seg. Y size:" msgstr "Seg. Y size:" -#: flatcamGUI/FlatCAMGUI.py:5137 +#: flatcamGUI/FlatCAMGUI.py:5349 msgid "" "The size of the trace segment on the Y axis.\n" "Useful for auto-leveling.\n" @@ -7330,20 +7572,44 @@ msgstr "" "Useful for auto-leveling.\n" "A value of 0 means no segmentation on the Y axis." -#: flatcamGUI/FlatCAMGUI.py:5153 +#: flatcamGUI/FlatCAMGUI.py:5365 +#| msgid "Geo Editor" +msgid "Geometry Editor" +msgstr "Geometry Editor" + +#: flatcamGUI/FlatCAMGUI.py:5370 +#| msgid "Geometry Editor Toolbar" +msgid "A list of Geometry Editor parameters." +msgstr "A list of Geometry Editor parameters." + +#: flatcamGUI/FlatCAMGUI.py:5380 +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." +msgstr "" +"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." + +#: flatcamGUI/FlatCAMGUI.py:5399 msgid "CNC Job General" msgstr "CNC Job General" -#: flatcamGUI/FlatCAMGUI.py:5166 flatcamGUI/ObjectUI.py:544 -#: flatcamGUI/ObjectUI.py:874 flatcamGUI/ObjectUI.py:1428 +#: flatcamGUI/FlatCAMGUI.py:5412 flatcamGUI/ObjectUI.py:544 +#: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1434 msgid "Plot Object" msgstr "Plot Object" -#: flatcamGUI/FlatCAMGUI.py:5173 +#: flatcamGUI/FlatCAMGUI.py:5419 msgid "Plot kind:" msgstr "Plot kind:" -#: flatcamGUI/FlatCAMGUI.py:5175 flatcamGUI/ObjectUI.py:1350 +#: flatcamGUI/FlatCAMGUI.py:5421 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" @@ -7355,7 +7621,7 @@ 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:5194 +#: flatcamGUI/FlatCAMGUI.py:5440 msgid "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." @@ -7363,7 +7629,7 @@ msgstr "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." -#: flatcamGUI/FlatCAMGUI.py:5204 +#: flatcamGUI/FlatCAMGUI.py:5450 msgid "" "Diameter of the tool to be\n" "rendered in the plot." @@ -7371,11 +7637,11 @@ msgstr "" "Diameter of the tool to be\n" "rendered in the plot." -#: flatcamGUI/FlatCAMGUI.py:5212 +#: flatcamGUI/FlatCAMGUI.py:5458 msgid "Coords dec.:" msgstr "Coords dec.:" -#: flatcamGUI/FlatCAMGUI.py:5214 +#: flatcamGUI/FlatCAMGUI.py:5460 msgid "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" @@ -7383,11 +7649,11 @@ msgstr "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" -#: flatcamGUI/FlatCAMGUI.py:5222 +#: flatcamGUI/FlatCAMGUI.py:5468 msgid "Feedrate dec.:" msgstr "Feedrate dec.:" -#: flatcamGUI/FlatCAMGUI.py:5224 +#: flatcamGUI/FlatCAMGUI.py:5470 msgid "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" @@ -7395,16 +7661,16 @@ msgstr "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" -#: flatcamGUI/FlatCAMGUI.py:5239 +#: flatcamGUI/FlatCAMGUI.py:5485 msgid "CNC Job Options" msgstr "CNC Job Options" -#: flatcamGUI/FlatCAMGUI.py:5242 flatcamGUI/FlatCAMGUI.py:5283 +#: flatcamGUI/FlatCAMGUI.py:5488 flatcamGUI/FlatCAMGUI.py:5529 msgid "Export G-Code:" msgstr "Export G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5244 flatcamGUI/FlatCAMGUI.py:5285 -#: flatcamGUI/ObjectUI.py:1464 +#: flatcamGUI/FlatCAMGUI.py:5490 flatcamGUI/FlatCAMGUI.py:5531 +#: flatcamGUI/ObjectUI.py:1470 msgid "" "Export and save G-Code to\n" "make this object to a file." @@ -7412,11 +7678,11 @@ msgstr "" "Export and save G-Code to\n" "make this object to a file." -#: flatcamGUI/FlatCAMGUI.py:5250 +#: flatcamGUI/FlatCAMGUI.py:5496 msgid "Prepend to G-Code:" msgstr "Prepend to G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5252 +#: flatcamGUI/FlatCAMGUI.py:5498 msgid "" "Type here any G-Code commands you would\n" "like to add at the beginning of the G-Code file." @@ -7424,11 +7690,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:5261 +#: flatcamGUI/FlatCAMGUI.py:5507 msgid "Append to G-Code:" msgstr "Append to G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5263 flatcamGUI/ObjectUI.py:1486 +#: flatcamGUI/FlatCAMGUI.py:5509 flatcamGUI/ObjectUI.py:1492 msgid "" "Type here any G-Code commands you would\n" "like to append to the generated file.\n" @@ -7438,15 +7704,15 @@ msgstr "" "like to append to the generated file.\n" "I.e.: M2 (End of program)" -#: flatcamGUI/FlatCAMGUI.py:5280 +#: flatcamGUI/FlatCAMGUI.py:5526 msgid "CNC Job Adv. Options" msgstr "CNC Job Adv. Options" -#: flatcamGUI/FlatCAMGUI.py:5291 flatcamGUI/ObjectUI.py:1504 +#: flatcamGUI/FlatCAMGUI.py:5537 flatcamGUI/ObjectUI.py:1510 msgid "Toolchange G-Code:" msgstr "Toolchange G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5293 +#: flatcamGUI/FlatCAMGUI.py:5539 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -7458,11 +7724,11 @@ msgstr "" "This will constitute a Custom Toolchange GCode,\n" "or a Toolchange Macro." -#: flatcamGUI/FlatCAMGUI.py:5307 flatcamGUI/ObjectUI.py:1526 +#: flatcamGUI/FlatCAMGUI.py:5553 flatcamGUI/ObjectUI.py:1532 msgid "Use Toolchange Macro" msgstr "Use Toolchange Macro" -#: flatcamGUI/FlatCAMGUI.py:5309 flatcamGUI/ObjectUI.py:1529 +#: flatcamGUI/FlatCAMGUI.py:5555 flatcamGUI/ObjectUI.py:1535 msgid "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." @@ -7470,7 +7736,7 @@ msgstr "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." -#: flatcamGUI/FlatCAMGUI.py:5321 flatcamGUI/ObjectUI.py:1538 +#: flatcamGUI/FlatCAMGUI.py:5567 flatcamGUI/ObjectUI.py:1544 msgid "" "A list of the FlatCAM variables that can be used\n" "in the Toolchange event.\n" @@ -7480,78 +7746,71 @@ msgstr "" "in the Toolchange event.\n" "They have to be surrounded by the '%' symbol" -#: flatcamGUI/FlatCAMGUI.py:5328 flatcamGUI/ObjectUI.py:1545 +#: flatcamGUI/FlatCAMGUI.py:5574 flatcamGUI/ObjectUI.py:1551 msgid "Parameters" msgstr "Parameters" -#: flatcamGUI/FlatCAMGUI.py:5331 flatcamGUI/ObjectUI.py:1548 +#: flatcamGUI/FlatCAMGUI.py:5577 flatcamGUI/ObjectUI.py:1554 msgid "FlatCAM CNC parameters" msgstr "FlatCAM CNC parameters" -#: flatcamGUI/FlatCAMGUI.py:5332 flatcamGUI/ObjectUI.py:1549 +#: flatcamGUI/FlatCAMGUI.py:5578 flatcamGUI/ObjectUI.py:1555 msgid "tool = tool number" msgstr "tool = tool number" -#: flatcamGUI/FlatCAMGUI.py:5333 flatcamGUI/ObjectUI.py:1550 +#: flatcamGUI/FlatCAMGUI.py:5579 flatcamGUI/ObjectUI.py:1556 msgid "tooldia = tool diameter" msgstr "tooldia = tool diameter" -#: flatcamGUI/FlatCAMGUI.py:5334 flatcamGUI/ObjectUI.py:1551 +#: flatcamGUI/FlatCAMGUI.py:5580 flatcamGUI/ObjectUI.py:1557 msgid "t_drills = for Excellon, total number of drills" msgstr "t_drills = for Excellon, total number of drills" -#: flatcamGUI/FlatCAMGUI.py:5335 flatcamGUI/ObjectUI.py:1552 +#: flatcamGUI/FlatCAMGUI.py:5581 flatcamGUI/ObjectUI.py:1558 msgid "x_toolchange = X coord for Toolchange" msgstr "x_toolchange = X coord for Toolchange" -#: flatcamGUI/FlatCAMGUI.py:5336 flatcamGUI/ObjectUI.py:1553 +#: flatcamGUI/FlatCAMGUI.py:5582 flatcamGUI/ObjectUI.py:1559 msgid "y_toolchange = Y coord for Toolchange" msgstr "y_toolchange = Y coord for Toolchange" -#: flatcamGUI/FlatCAMGUI.py:5337 flatcamGUI/ObjectUI.py:1554 +#: flatcamGUI/FlatCAMGUI.py:5583 flatcamGUI/ObjectUI.py:1560 msgid "z_toolchange = Z coord for Toolchange" msgstr "z_toolchange = Z coord for Toolchange" -#: flatcamGUI/FlatCAMGUI.py:5338 +#: flatcamGUI/FlatCAMGUI.py:5584 msgid "z_cut = Z depth for the cut" msgstr "z_cut = Z depth for the cut" -#: flatcamGUI/FlatCAMGUI.py:5339 +#: flatcamGUI/FlatCAMGUI.py:5585 msgid "z_move = Z height for travel" msgstr "z_move = Z height for travel" -#: flatcamGUI/FlatCAMGUI.py:5340 flatcamGUI/ObjectUI.py:1557 +#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1563 msgid "z_depthpercut = the step value for multidepth cut" msgstr "z_depthpercut = the step value for multidepth cut" -#: flatcamGUI/FlatCAMGUI.py:5341 flatcamGUI/ObjectUI.py:1558 +#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1564 msgid "spindlesspeed = the value for the spindle speed" msgstr "spindlesspeed = the value for the spindle speed" -#: flatcamGUI/FlatCAMGUI.py:5342 flatcamGUI/ObjectUI.py:1559 +#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1565 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:5363 +#: flatcamGUI/FlatCAMGUI.py:5609 msgid "NCC Tool Options" msgstr "NCC Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5366 flatcamGUI/FlatCAMGUI.py:5467 -#: flatcamGUI/FlatCAMGUI.py:5546 flatcamGUI/FlatCAMGUI.py:5605 -#: flatcamGUI/FlatCAMGUI.py:5708 flatcamGUI/FlatCAMGUI.py:5769 -#: flatcamGUI/FlatCAMGUI.py:5968 flatcamGUI/FlatCAMGUI.py:6095 -msgid "Parameters:" -msgstr "Parameters:" - -#: flatcamGUI/FlatCAMGUI.py:5376 flatcamGUI/FlatCAMGUI.py:6106 +#: flatcamGUI/FlatCAMGUI.py:5622 flatcamGUI/FlatCAMGUI.py:6352 msgid "Tools dia:" msgstr "Tools dia:" -#: flatcamGUI/FlatCAMGUI.py:5378 +#: flatcamGUI/FlatCAMGUI.py:5624 msgid "Diameters of the cutting tools, separated by ','" msgstr "Diameters of the cutting tools, separated by ','" -#: flatcamGUI/FlatCAMGUI.py:5386 flatcamTools/ToolNonCopperClear.py:167 +#: flatcamGUI/FlatCAMGUI.py:5632 flatcamTools/ToolNonCopperClear.py:167 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -7576,11 +7835,11 @@ msgstr "" "Higher values = slow processing and slow execution on CNC\n" "due of too many paths." -#: flatcamGUI/FlatCAMGUI.py:5402 flatcamTools/ToolNonCopperClear.py:183 +#: flatcamGUI/FlatCAMGUI.py:5648 flatcamTools/ToolNonCopperClear.py:183 msgid "Bounding box margin." msgstr "Bounding box margin." -#: flatcamGUI/FlatCAMGUI.py:5411 flatcamTools/ToolNonCopperClear.py:192 +#: flatcamGUI/FlatCAMGUI.py:5657 flatcamTools/ToolNonCopperClear.py:192 #: flatcamTools/ToolPaint.py:190 msgid "" "Algorithm for non-copper clearing:
Standard: Fixed step inwards." @@ -7591,12 +7850,12 @@ msgstr "" "
Seed-based: Outwards from seed.
Line-based: Parallel " "lines." -#: flatcamGUI/FlatCAMGUI.py:5443 flatcamTools/ToolNonCopperClear.py:224 +#: flatcamGUI/FlatCAMGUI.py:5689 flatcamTools/ToolNonCopperClear.py:224 #: flatcamTools/ToolPaint.py:222 msgid "Rest M.:" msgstr "Rest M.:" -#: flatcamGUI/FlatCAMGUI.py:5445 +#: flatcamGUI/FlatCAMGUI.py:5691 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -7612,11 +7871,11 @@ msgstr "" "could not be cleared by previous tool.\n" "If not checked, use the standard algorithm." -#: flatcamGUI/FlatCAMGUI.py:5464 +#: flatcamGUI/FlatCAMGUI.py:5710 msgid "Cutout Tool Options" msgstr "Cutout Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5469 flatcamGUI/ObjectUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:5715 flatcamGUI/ObjectUI.py:402 msgid "" "Create toolpaths to cut around\n" "the PCB and separate it from\n" @@ -7626,7 +7885,7 @@ msgstr "" "the PCB and separate it from\n" "the original board." -#: flatcamGUI/FlatCAMGUI.py:5488 +#: flatcamGUI/FlatCAMGUI.py:5734 msgid "" "Distance from objects at which\n" "to draw the cutout." @@ -7634,11 +7893,11 @@ msgstr "" "Distance from objects at which\n" "to draw the cutout." -#: flatcamGUI/FlatCAMGUI.py:5495 flatcamTools/ToolCutOut.py:96 +#: flatcamGUI/FlatCAMGUI.py:5741 flatcamTools/ToolCutOut.py:96 msgid "Gap size:" msgstr "Gap size:" -#: flatcamGUI/FlatCAMGUI.py:5497 +#: flatcamGUI/FlatCAMGUI.py:5743 msgid "" "Size of the gaps in the toolpath\n" "that will remain to hold the\n" @@ -7648,11 +7907,11 @@ msgstr "" "that will remain to hold the\n" "board in place." -#: flatcamGUI/FlatCAMGUI.py:5505 flatcamTools/ToolCutOut.py:133 +#: flatcamGUI/FlatCAMGUI.py:5751 flatcamTools/ToolCutOut.py:134 msgid "Gaps:" msgstr "Gaps:" -#: flatcamGUI/FlatCAMGUI.py:5507 +#: flatcamGUI/FlatCAMGUI.py:5753 msgid "" "Number of bridge gaps used for the cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -7674,19 +7933,19 @@ msgstr "" "- 2tb - 2*top + 2*bottom\n" "- 8 - 2*left + 2*right +2*top + 2*bottom" -#: flatcamGUI/FlatCAMGUI.py:5528 flatcamTools/ToolCutOut.py:115 +#: flatcamGUI/FlatCAMGUI.py:5774 flatcamTools/ToolCutOut.py:115 msgid "Convex Sh.:" msgstr "Convex Sh.:" -#: flatcamGUI/FlatCAMGUI.py:5530 flatcamTools/ToolCutOut.py:117 +#: flatcamGUI/FlatCAMGUI.py:5776 msgid "Create a convex shape surrounding the entire PCB." msgstr "Create a convex shape surrounding the entire PCB." -#: flatcamGUI/FlatCAMGUI.py:5543 +#: flatcamGUI/FlatCAMGUI.py:5789 msgid "2Sided Tool Options" msgstr "2Sided Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5548 +#: flatcamGUI/FlatCAMGUI.py:5794 msgid "" "A tool to help in creating a double sided\n" "PCB using alignment holes." @@ -7694,28 +7953,28 @@ msgstr "" "A tool to help in creating a double sided\n" "PCB using alignment holes." -#: flatcamGUI/FlatCAMGUI.py:5558 flatcamTools/ToolDblSided.py:235 +#: flatcamGUI/FlatCAMGUI.py:5804 flatcamTools/ToolDblSided.py:235 msgid "Drill diam.:" msgstr "Drill diam.:" -#: flatcamGUI/FlatCAMGUI.py:5560 flatcamTools/ToolDblSided.py:226 +#: flatcamGUI/FlatCAMGUI.py:5806 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:5569 flatcamTools/ToolDblSided.py:120 +#: flatcamGUI/FlatCAMGUI.py:5815 flatcamTools/ToolDblSided.py:120 msgid "Mirror Axis:" msgstr "Mirror Axis:" -#: flatcamGUI/FlatCAMGUI.py:5571 flatcamTools/ToolDblSided.py:122 +#: flatcamGUI/FlatCAMGUI.py:5817 flatcamTools/ToolDblSided.py:122 msgid "Mirror vertically (X) or horizontally (Y)." msgstr "Mirror vertically (X) or horizontally (Y)." -#: flatcamGUI/FlatCAMGUI.py:5582 flatcamTools/ToolDblSided.py:133 +#: flatcamGUI/FlatCAMGUI.py:5828 flatcamTools/ToolDblSided.py:133 msgid "Axis Ref:" msgstr "Axis Ref:" -#: flatcamGUI/FlatCAMGUI.py:5584 +#: flatcamGUI/FlatCAMGUI.py:5830 msgid "" "The axis should pass through a point or cut\n" " a specified box (in a Geometry object) in \n" @@ -7725,11 +7984,11 @@ msgstr "" " a specified box (in a Geometry object) in \n" "the middle." -#: flatcamGUI/FlatCAMGUI.py:5600 +#: flatcamGUI/FlatCAMGUI.py:5846 msgid "Paint Tool Options" msgstr "Paint Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5607 flatcamGUI/ObjectUI.py:1299 +#: flatcamGUI/FlatCAMGUI.py:5853 flatcamGUI/ObjectUI.py:1305 msgid "" "Creates tool paths to cover the\n" "whole area of a polygon (remove\n" @@ -7741,7 +8000,7 @@ msgstr "" "all copper). You will be asked\n" "to click on the desired polygon." -#: flatcamGUI/FlatCAMGUI.py:5631 +#: flatcamGUI/FlatCAMGUI.py:5877 msgid "" "How much (fraction) of the tool\n" "width to overlap each tool pass." @@ -7749,19 +8008,19 @@ msgstr "" "How much (fraction) of the tool\n" "width to overlap each tool pass." -#: flatcamGUI/FlatCAMGUI.py:5685 flatcamTools/ToolPaint.py:237 +#: flatcamGUI/FlatCAMGUI.py:5931 flatcamTools/ToolPaint.py:237 msgid "Selection:" msgstr "Selection:" -#: flatcamGUI/FlatCAMGUI.py:5687 +#: flatcamGUI/FlatCAMGUI.py:5933 msgid "How to select the polygons to paint." msgstr "How to select the polygons to paint." -#: flatcamGUI/FlatCAMGUI.py:5705 +#: flatcamGUI/FlatCAMGUI.py:5951 msgid "Film Tool Options" msgstr "Film Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5710 +#: flatcamGUI/FlatCAMGUI.py:5956 msgid "" "Create a PCB film from a Gerber or Geometry\n" "FlatCAM object.\n" @@ -7771,11 +8030,11 @@ msgstr "" "FlatCAM object.\n" "The file is saved in SVG format." -#: flatcamGUI/FlatCAMGUI.py:5721 flatcamTools/ToolFilm.py:116 +#: flatcamGUI/FlatCAMGUI.py:5967 flatcamTools/ToolFilm.py:116 msgid "Film Type:" msgstr "Film Type:" -#: flatcamGUI/FlatCAMGUI.py:5723 flatcamTools/ToolFilm.py:118 +#: flatcamGUI/FlatCAMGUI.py:5969 flatcamTools/ToolFilm.py:118 msgid "" "Generate a Positive black film or a Negative film.\n" "Positive means that it will print the features\n" @@ -7791,11 +8050,11 @@ msgstr "" "with white on a black canvas.\n" "The Film format is SVG." -#: flatcamGUI/FlatCAMGUI.py:5734 flatcamTools/ToolFilm.py:130 +#: flatcamGUI/FlatCAMGUI.py:5980 flatcamTools/ToolFilm.py:130 msgid "Border:" msgstr "Border:" -#: flatcamGUI/FlatCAMGUI.py:5736 flatcamTools/ToolFilm.py:132 +#: flatcamGUI/FlatCAMGUI.py:5982 flatcamTools/ToolFilm.py:132 msgid "" "Specify a border around the object.\n" "Only for negative film.\n" @@ -7815,11 +8074,11 @@ msgstr "" "white color like the rest and which may confound with the\n" "surroundings if not for this border." -#: flatcamGUI/FlatCAMGUI.py:5749 flatcamTools/ToolFilm.py:144 +#: flatcamGUI/FlatCAMGUI.py:5995 flatcamTools/ToolFilm.py:144 msgid "Scale Stroke:" msgstr "Scale Stroke:" -#: flatcamGUI/FlatCAMGUI.py:5751 flatcamTools/ToolFilm.py:146 +#: flatcamGUI/FlatCAMGUI.py:5997 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 " @@ -7831,11 +8090,11 @@ msgstr "" "thinner,\n" "therefore the fine features may be more affected by this parameter." -#: flatcamGUI/FlatCAMGUI.py:5766 +#: flatcamGUI/FlatCAMGUI.py:6012 msgid "Panelize Tool Options" msgstr "Panelize Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5771 +#: flatcamGUI/FlatCAMGUI.py:6017 msgid "" "Create an object that contains an array of (x, y) elements,\n" "each element is a copy of the source object spaced\n" @@ -7845,11 +8104,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:5782 flatcamTools/ToolPanelize.py:113 +#: flatcamGUI/FlatCAMGUI.py:6028 flatcamTools/ToolPanelize.py:147 msgid "Spacing cols:" msgstr "Spacing cols:" -#: flatcamGUI/FlatCAMGUI.py:5784 flatcamTools/ToolPanelize.py:115 +#: flatcamGUI/FlatCAMGUI.py:6030 flatcamTools/ToolPanelize.py:149 msgid "" "Spacing between columns of the desired panel.\n" "In current units." @@ -7857,11 +8116,11 @@ msgstr "" "Spacing between columns of the desired panel.\n" "In current units." -#: flatcamGUI/FlatCAMGUI.py:5792 flatcamTools/ToolPanelize.py:122 +#: flatcamGUI/FlatCAMGUI.py:6038 flatcamTools/ToolPanelize.py:156 msgid "Spacing rows:" msgstr "Spacing rows:" -#: flatcamGUI/FlatCAMGUI.py:5794 flatcamTools/ToolPanelize.py:124 +#: flatcamGUI/FlatCAMGUI.py:6040 flatcamTools/ToolPanelize.py:158 msgid "" "Spacing between rows of the desired panel.\n" "In current units." @@ -7869,27 +8128,27 @@ msgstr "" "Spacing between rows of the desired panel.\n" "In current units." -#: flatcamGUI/FlatCAMGUI.py:5802 flatcamTools/ToolPanelize.py:131 +#: flatcamGUI/FlatCAMGUI.py:6048 flatcamTools/ToolPanelize.py:165 msgid "Columns:" msgstr "Columns:" -#: flatcamGUI/FlatCAMGUI.py:5804 flatcamTools/ToolPanelize.py:133 +#: flatcamGUI/FlatCAMGUI.py:6050 flatcamTools/ToolPanelize.py:167 msgid "Number of columns of the desired panel" msgstr "Number of columns of the desired panel" -#: flatcamGUI/FlatCAMGUI.py:5811 flatcamTools/ToolPanelize.py:139 +#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:173 msgid "Rows:" msgstr "Rows:" -#: flatcamGUI/FlatCAMGUI.py:5813 flatcamTools/ToolPanelize.py:141 +#: flatcamGUI/FlatCAMGUI.py:6059 flatcamTools/ToolPanelize.py:175 msgid "Number of rows of the desired panel" msgstr "Number of rows of the desired panel" -#: flatcamGUI/FlatCAMGUI.py:5821 flatcamTools/ToolPanelize.py:148 +#: flatcamGUI/FlatCAMGUI.py:6067 msgid "Panel Type:" msgstr "Panel Type:" -#: flatcamGUI/FlatCAMGUI.py:5823 +#: flatcamGUI/FlatCAMGUI.py:6069 msgid "" "Choose the type of object for the panel object:\n" "- Gerber\n" @@ -7899,11 +8158,11 @@ msgstr "" "- Gerber\n" "- Geometry" -#: flatcamGUI/FlatCAMGUI.py:5832 +#: flatcamGUI/FlatCAMGUI.py:6078 msgid "Constrain within:" msgstr "Constrain within:" -#: flatcamGUI/FlatCAMGUI.py:5834 flatcamTools/ToolPanelize.py:160 +#: flatcamGUI/FlatCAMGUI.py:6080 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" @@ -7917,11 +8176,11 @@ msgstr "" "the final panel will have as many columns and rows as\n" "they fit completely within selected area." -#: flatcamGUI/FlatCAMGUI.py:5843 flatcamTools/ToolPanelize.py:169 +#: flatcamGUI/FlatCAMGUI.py:6089 flatcamTools/ToolPanelize.py:204 msgid "Width (DX):" msgstr "Width (DX):" -#: flatcamGUI/FlatCAMGUI.py:5845 flatcamTools/ToolPanelize.py:171 +#: flatcamGUI/FlatCAMGUI.py:6091 flatcamTools/ToolPanelize.py:206 msgid "" "The width (DX) within which the panel must fit.\n" "In current units." @@ -7929,11 +8188,11 @@ msgstr "" "The width (DX) within which the panel must fit.\n" "In current units." -#: flatcamGUI/FlatCAMGUI.py:5852 flatcamTools/ToolPanelize.py:177 +#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:212 msgid "Height (DY):" msgstr "Height (DY):" -#: flatcamGUI/FlatCAMGUI.py:5854 flatcamTools/ToolPanelize.py:179 +#: flatcamGUI/FlatCAMGUI.py:6100 flatcamTools/ToolPanelize.py:214 msgid "" "The height (DY)within which the panel must fit.\n" "In current units." @@ -7941,15 +8200,15 @@ msgstr "" "The height (DY)within which the panel must fit.\n" "In current units." -#: flatcamGUI/FlatCAMGUI.py:5868 +#: flatcamGUI/FlatCAMGUI.py:6114 msgid "Calculators Tool Options" msgstr "Calculators Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5871 +#: flatcamGUI/FlatCAMGUI.py:6117 msgid "V-Shape Tool Calculator:" msgstr "V-Shape Tool Calculator:" -#: flatcamGUI/FlatCAMGUI.py:5873 +#: flatcamGUI/FlatCAMGUI.py:6119 msgid "" "Calculate the tool diameter for a given V-shape tool,\n" "having the tip diameter, tip angle and\n" @@ -7959,11 +8218,11 @@ msgstr "" "having the tip diameter, tip angle and\n" "depth-of-cut as parameters." -#: flatcamGUI/FlatCAMGUI.py:5884 flatcamTools/ToolCalculators.py:94 +#: flatcamGUI/FlatCAMGUI.py:6130 flatcamTools/ToolCalculators.py:94 msgid "Tip Diameter:" msgstr "Tip Diameter:" -#: flatcamGUI/FlatCAMGUI.py:5886 +#: flatcamGUI/FlatCAMGUI.py:6132 msgid "" "This is the tool tip diameter.\n" "It is specified by manufacturer." @@ -7971,11 +8230,11 @@ msgstr "" "This is the tool tip diameter.\n" "It is specified by manufacturer." -#: flatcamGUI/FlatCAMGUI.py:5894 +#: flatcamGUI/FlatCAMGUI.py:6140 msgid "Tip angle:" msgstr "Tip angle:" -#: flatcamGUI/FlatCAMGUI.py:5896 +#: flatcamGUI/FlatCAMGUI.py:6142 msgid "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." @@ -7983,7 +8242,7 @@ msgstr "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." -#: flatcamGUI/FlatCAMGUI.py:5906 +#: flatcamGUI/FlatCAMGUI.py:6152 msgid "" "This is depth to cut into material.\n" "In the CNCJob object it is the CutZ parameter." @@ -7991,11 +8250,11 @@ msgstr "" "This is depth to cut into material.\n" "In the CNCJob object it is the CutZ parameter." -#: flatcamGUI/FlatCAMGUI.py:5913 +#: flatcamGUI/FlatCAMGUI.py:6159 msgid "ElectroPlating Calculator:" msgstr "ElectroPlating Calculator:" -#: flatcamGUI/FlatCAMGUI.py:5915 flatcamTools/ToolCalculators.py:152 +#: flatcamGUI/FlatCAMGUI.py:6161 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 " @@ -8005,27 +8264,27 @@ msgstr "" "using a method like grahite ink or calcium hypophosphite ink or palladium " "chloride." -#: flatcamGUI/FlatCAMGUI.py:5925 flatcamTools/ToolCalculators.py:161 +#: flatcamGUI/FlatCAMGUI.py:6171 flatcamTools/ToolCalculators.py:161 msgid "Board Length:" msgstr "Board Length:" -#: flatcamGUI/FlatCAMGUI.py:5927 flatcamTools/ToolCalculators.py:165 +#: flatcamGUI/FlatCAMGUI.py:6173 flatcamTools/ToolCalculators.py:165 msgid "This is the board length. In centimeters." msgstr "This is the board length. In centimeters." -#: flatcamGUI/FlatCAMGUI.py:5933 flatcamTools/ToolCalculators.py:167 +#: flatcamGUI/FlatCAMGUI.py:6179 flatcamTools/ToolCalculators.py:167 msgid "Board Width:" msgstr "Board Width:" -#: flatcamGUI/FlatCAMGUI.py:5935 flatcamTools/ToolCalculators.py:171 +#: flatcamGUI/FlatCAMGUI.py:6181 flatcamTools/ToolCalculators.py:171 msgid "This is the board width.In centimeters." msgstr "This is the board width.In centimeters." -#: flatcamGUI/FlatCAMGUI.py:5940 flatcamTools/ToolCalculators.py:173 +#: flatcamGUI/FlatCAMGUI.py:6186 flatcamTools/ToolCalculators.py:173 msgid "Current Density:" msgstr "Current Density:" -#: flatcamGUI/FlatCAMGUI.py:5943 flatcamTools/ToolCalculators.py:177 +#: flatcamGUI/FlatCAMGUI.py:6189 flatcamTools/ToolCalculators.py:177 msgid "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." @@ -8033,11 +8292,11 @@ msgstr "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." -#: flatcamGUI/FlatCAMGUI.py:5949 flatcamTools/ToolCalculators.py:181 +#: flatcamGUI/FlatCAMGUI.py:6195 flatcamTools/ToolCalculators.py:181 msgid "Copper Growth:" msgstr "Copper Growth:" -#: flatcamGUI/FlatCAMGUI.py:5952 flatcamTools/ToolCalculators.py:185 +#: flatcamGUI/FlatCAMGUI.py:6198 flatcamTools/ToolCalculators.py:185 msgid "" "How thick the copper growth is intended to be.\n" "In microns." @@ -8045,11 +8304,11 @@ msgstr "" "How thick the copper growth is intended to be.\n" "In microns." -#: flatcamGUI/FlatCAMGUI.py:5965 +#: flatcamGUI/FlatCAMGUI.py:6211 msgid "Transform Tool Options" msgstr "Transform Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5970 +#: flatcamGUI/FlatCAMGUI.py:6216 msgid "" "Various transformations that can be applied\n" "on a FlatCAM object." @@ -8057,47 +8316,47 @@ msgstr "" "Various transformations that can be applied\n" "on a FlatCAM object." -#: flatcamGUI/FlatCAMGUI.py:5980 +#: flatcamGUI/FlatCAMGUI.py:6226 msgid "Rotate Angle:" msgstr "Rotate Angle:" -#: flatcamGUI/FlatCAMGUI.py:5982 +#: flatcamGUI/FlatCAMGUI.py:6228 msgid "Angle for rotation. In degrees." msgstr "Angle for rotation. In degrees." -#: flatcamGUI/FlatCAMGUI.py:5989 +#: flatcamGUI/FlatCAMGUI.py:6235 msgid "Skew_X angle:" msgstr "Skew_X angle:" -#: flatcamGUI/FlatCAMGUI.py:5991 +#: flatcamGUI/FlatCAMGUI.py:6237 msgid "Angle for Skew/Shear on X axis. In degrees." msgstr "Angle for Skew/Shear on X axis. In degrees." -#: flatcamGUI/FlatCAMGUI.py:5998 +#: flatcamGUI/FlatCAMGUI.py:6244 msgid "Skew_Y angle:" msgstr "Skew_Y angle:" -#: flatcamGUI/FlatCAMGUI.py:6000 +#: flatcamGUI/FlatCAMGUI.py:6246 msgid "Angle for Skew/Shear on Y axis. In degrees." msgstr "Angle for Skew/Shear on Y axis. In degrees." -#: flatcamGUI/FlatCAMGUI.py:6007 +#: flatcamGUI/FlatCAMGUI.py:6253 msgid "Scale_X factor:" msgstr "Scale_X factor:" -#: flatcamGUI/FlatCAMGUI.py:6009 +#: flatcamGUI/FlatCAMGUI.py:6255 msgid "Factor for scaling on X axis." msgstr "Factor for scaling on X axis." -#: flatcamGUI/FlatCAMGUI.py:6016 +#: flatcamGUI/FlatCAMGUI.py:6262 msgid "Scale_Y factor:" msgstr "Scale_Y factor:" -#: flatcamGUI/FlatCAMGUI.py:6018 +#: flatcamGUI/FlatCAMGUI.py:6264 msgid "Factor for scaling on Y axis." msgstr "Factor for scaling on Y axis." -#: flatcamGUI/FlatCAMGUI.py:6026 +#: flatcamGUI/FlatCAMGUI.py:6272 msgid "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." @@ -8105,7 +8364,7 @@ msgstr "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." -#: flatcamGUI/FlatCAMGUI.py:6034 flatcamTools/ToolTransform.py:210 +#: flatcamGUI/FlatCAMGUI.py:6280 flatcamTools/ToolTransform.py:210 msgid "" "Scale the selected object(s)\n" "using the origin reference when checked,\n" @@ -8117,27 +8376,27 @@ msgstr "" "and the center of the biggest bounding box\n" "of the selected objects when unchecked." -#: flatcamGUI/FlatCAMGUI.py:6043 +#: flatcamGUI/FlatCAMGUI.py:6289 msgid "Offset_X val:" msgstr "Offset_X val:" -#: flatcamGUI/FlatCAMGUI.py:6045 +#: flatcamGUI/FlatCAMGUI.py:6291 msgid "Distance to offset on X axis. In current units." msgstr "Distance to offset on X axis. In current units." -#: flatcamGUI/FlatCAMGUI.py:6052 +#: flatcamGUI/FlatCAMGUI.py:6298 msgid "Offset_Y val:" msgstr "Offset_Y val:" -#: flatcamGUI/FlatCAMGUI.py:6054 +#: flatcamGUI/FlatCAMGUI.py:6300 msgid "Distance to offset on Y axis. In current units." msgstr "Distance to offset on Y axis. In current units." -#: flatcamGUI/FlatCAMGUI.py:6060 +#: flatcamGUI/FlatCAMGUI.py:6306 msgid "Mirror Reference" msgstr "Mirror Reference" -#: flatcamGUI/FlatCAMGUI.py:6062 flatcamTools/ToolTransform.py:314 +#: flatcamGUI/FlatCAMGUI.py:6308 flatcamTools/ToolTransform.py:314 msgid "" "Flip the selected object(s)\n" "around the point in Point Entry Field.\n" @@ -8159,11 +8418,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:6073 +#: flatcamGUI/FlatCAMGUI.py:6319 msgid " Mirror Ref. Point:" msgstr " Mirror Ref. Point:" -#: flatcamGUI/FlatCAMGUI.py:6075 flatcamTools/ToolTransform.py:327 +#: flatcamGUI/FlatCAMGUI.py:6321 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" @@ -8173,11 +8432,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:6092 +#: flatcamGUI/FlatCAMGUI.py:6338 msgid "SolderPaste Tool Options" msgstr "SolderPaste Tool Options" -#: flatcamGUI/FlatCAMGUI.py:6097 +#: flatcamGUI/FlatCAMGUI.py:6343 msgid "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." @@ -8185,47 +8444,47 @@ msgstr "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." -#: flatcamGUI/FlatCAMGUI.py:6108 +#: flatcamGUI/FlatCAMGUI.py:6354 msgid "Diameters of nozzle tools, separated by ','" msgstr "Diameters of nozzle tools, separated by ','" -#: flatcamGUI/FlatCAMGUI.py:6115 +#: flatcamGUI/FlatCAMGUI.py:6361 msgid "New Nozzle Dia:" msgstr "New Nozzle Dia:" -#: flatcamGUI/FlatCAMGUI.py:6117 flatcamTools/ToolSolderPaste.py:103 +#: flatcamGUI/FlatCAMGUI.py:6363 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:6125 flatcamTools/ToolSolderPaste.py:166 +#: flatcamGUI/FlatCAMGUI.py:6371 flatcamTools/ToolSolderPaste.py:166 msgid "Z Dispense Start:" msgstr "Z Dispense Start:" -#: flatcamGUI/FlatCAMGUI.py:6127 flatcamTools/ToolSolderPaste.py:168 +#: flatcamGUI/FlatCAMGUI.py:6373 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:6134 flatcamTools/ToolSolderPaste.py:174 +#: flatcamGUI/FlatCAMGUI.py:6380 flatcamTools/ToolSolderPaste.py:174 msgid "Z Dispense:" msgstr "Z Dispense:" -#: flatcamGUI/FlatCAMGUI.py:6136 flatcamTools/ToolSolderPaste.py:176 +#: flatcamGUI/FlatCAMGUI.py:6382 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:6143 flatcamTools/ToolSolderPaste.py:183 +#: flatcamGUI/FlatCAMGUI.py:6389 flatcamTools/ToolSolderPaste.py:183 msgid "Z Dispense Stop:" msgstr "Z Dispense Stop:" -#: flatcamGUI/FlatCAMGUI.py:6145 flatcamTools/ToolSolderPaste.py:185 +#: flatcamGUI/FlatCAMGUI.py:6391 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:6152 flatcamTools/ToolSolderPaste.py:191 +#: flatcamGUI/FlatCAMGUI.py:6398 flatcamTools/ToolSolderPaste.py:191 msgid "Z Travel:" msgstr "Z Travel:" -#: flatcamGUI/FlatCAMGUI.py:6154 flatcamTools/ToolSolderPaste.py:193 +#: flatcamGUI/FlatCAMGUI.py:6400 flatcamTools/ToolSolderPaste.py:193 msgid "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." @@ -8233,19 +8492,19 @@ msgstr "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." -#: flatcamGUI/FlatCAMGUI.py:6162 flatcamTools/ToolSolderPaste.py:200 +#: flatcamGUI/FlatCAMGUI.py:6408 flatcamTools/ToolSolderPaste.py:200 msgid "Z Toolchange:" msgstr "Z Toolchange:" -#: flatcamGUI/FlatCAMGUI.py:6164 flatcamTools/ToolSolderPaste.py:202 +#: flatcamGUI/FlatCAMGUI.py:6410 flatcamTools/ToolSolderPaste.py:202 msgid "The height (Z) for tool (nozzle) change." msgstr "The height (Z) for tool (nozzle) change." -#: flatcamGUI/FlatCAMGUI.py:6171 flatcamTools/ToolSolderPaste.py:208 +#: flatcamGUI/FlatCAMGUI.py:6417 flatcamTools/ToolSolderPaste.py:208 msgid "XY Toolchange:" msgstr "XY Toolchange:" -#: flatcamGUI/FlatCAMGUI.py:6173 flatcamTools/ToolSolderPaste.py:210 +#: flatcamGUI/FlatCAMGUI.py:6419 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." @@ -8253,19 +8512,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:6181 flatcamTools/ToolSolderPaste.py:217 +#: flatcamGUI/FlatCAMGUI.py:6427 flatcamTools/ToolSolderPaste.py:217 msgid "Feedrate X-Y:" msgstr "Feedrate X-Y:" -#: flatcamGUI/FlatCAMGUI.py:6183 flatcamTools/ToolSolderPaste.py:219 +#: flatcamGUI/FlatCAMGUI.py:6429 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:6190 flatcamTools/ToolSolderPaste.py:225 +#: flatcamGUI/FlatCAMGUI.py:6436 flatcamTools/ToolSolderPaste.py:225 msgid "Feedrate Z:" msgstr "Feedrate Z:" -#: flatcamGUI/FlatCAMGUI.py:6192 flatcamTools/ToolSolderPaste.py:227 +#: flatcamGUI/FlatCAMGUI.py:6438 flatcamTools/ToolSolderPaste.py:227 msgid "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." @@ -8273,11 +8532,11 @@ msgstr "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." -#: flatcamGUI/FlatCAMGUI.py:6200 flatcamTools/ToolSolderPaste.py:234 +#: flatcamGUI/FlatCAMGUI.py:6446 flatcamTools/ToolSolderPaste.py:234 msgid "Feedrate Z Dispense:" msgstr "Feedrate Z Dispense:" -#: flatcamGUI/FlatCAMGUI.py:6202 flatcamTools/ToolSolderPaste.py:236 +#: flatcamGUI/FlatCAMGUI.py:6448 flatcamTools/ToolSolderPaste.py:236 msgid "" "Feedrate (speed) while moving up vertically\n" " to Dispense position (on Z plane)." @@ -8285,11 +8544,11 @@ msgstr "" "Feedrate (speed) while moving up vertically\n" " to Dispense position (on Z plane)." -#: flatcamGUI/FlatCAMGUI.py:6210 flatcamTools/ToolSolderPaste.py:243 +#: flatcamGUI/FlatCAMGUI.py:6456 flatcamTools/ToolSolderPaste.py:243 msgid "Spindle Speed FWD:" msgstr "Spindle Speed FWD:" -#: flatcamGUI/FlatCAMGUI.py:6212 flatcamTools/ToolSolderPaste.py:245 +#: flatcamGUI/FlatCAMGUI.py:6458 flatcamTools/ToolSolderPaste.py:245 msgid "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." @@ -8297,19 +8556,19 @@ msgstr "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." -#: flatcamGUI/FlatCAMGUI.py:6220 flatcamTools/ToolSolderPaste.py:252 +#: flatcamGUI/FlatCAMGUI.py:6466 flatcamTools/ToolSolderPaste.py:252 msgid "Dwell FWD:" msgstr "Dwell FWD:" -#: flatcamGUI/FlatCAMGUI.py:6222 flatcamTools/ToolSolderPaste.py:254 +#: flatcamGUI/FlatCAMGUI.py:6468 flatcamTools/ToolSolderPaste.py:254 msgid "Pause after solder dispensing." msgstr "Pause after solder dispensing." -#: flatcamGUI/FlatCAMGUI.py:6229 flatcamTools/ToolSolderPaste.py:260 +#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:260 msgid "Spindle Speed REV:" msgstr "Spindle Speed REV:" -#: flatcamGUI/FlatCAMGUI.py:6231 flatcamTools/ToolSolderPaste.py:262 +#: flatcamGUI/FlatCAMGUI.py:6477 flatcamTools/ToolSolderPaste.py:262 msgid "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." @@ -8317,11 +8576,11 @@ msgstr "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." -#: flatcamGUI/FlatCAMGUI.py:6239 flatcamTools/ToolSolderPaste.py:269 +#: flatcamGUI/FlatCAMGUI.py:6485 flatcamTools/ToolSolderPaste.py:269 msgid "Dwell REV:" msgstr "Dwell REV:" -#: flatcamGUI/FlatCAMGUI.py:6241 flatcamTools/ToolSolderPaste.py:271 +#: flatcamGUI/FlatCAMGUI.py:6487 flatcamTools/ToolSolderPaste.py:271 msgid "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." @@ -8329,23 +8588,23 @@ msgstr "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." -#: flatcamGUI/FlatCAMGUI.py:6248 flatcamTools/ToolSolderPaste.py:277 +#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:277 msgid "PostProcessors:" msgstr "PostProcessors:" -#: flatcamGUI/FlatCAMGUI.py:6250 flatcamTools/ToolSolderPaste.py:279 +#: flatcamGUI/FlatCAMGUI.py:6496 flatcamTools/ToolSolderPaste.py:279 msgid "Files that control the GCode generation." msgstr "Files that control the GCode generation." -#: flatcamGUI/FlatCAMGUI.py:6280 flatcamGUI/FlatCAMGUI.py:6286 +#: flatcamGUI/FlatCAMGUI.py:6526 flatcamGUI/FlatCAMGUI.py:6532 msgid "Idle." msgstr "Idle." -#: flatcamGUI/FlatCAMGUI.py:6310 +#: flatcamGUI/FlatCAMGUI.py:6556 msgid "Application started ..." msgstr "Application started ..." -#: flatcamGUI/FlatCAMGUI.py:6311 +#: flatcamGUI/FlatCAMGUI.py:6557 msgid "Hello!" msgstr "Hello!" @@ -8424,7 +8683,7 @@ msgid "Gerber Object" msgstr "Gerber Object" #: flatcamGUI/ObjectUI.py:182 flatcamGUI/ObjectUI.py:517 -#: flatcamGUI/ObjectUI.py:836 flatcamGUI/ObjectUI.py:1366 +#: flatcamGUI/ObjectUI.py:839 flatcamGUI/ObjectUI.py:1372 msgid "Name:" msgstr "Name:" @@ -8601,8 +8860,8 @@ msgid "Resulting geometry will have rounded corners." msgstr "Resulting geometry will have rounded corners." #: flatcamGUI/ObjectUI.py:450 flatcamGUI/ObjectUI.py:484 -#: flatcamTools/ToolCutOut.py:167 flatcamTools/ToolCutOut.py:187 -#: flatcamTools/ToolCutOut.py:238 flatcamTools/ToolSolderPaste.py:127 +#: flatcamTools/ToolCutOut.py:168 flatcamTools/ToolCutOut.py:188 +#: flatcamTools/ToolCutOut.py:239 flatcamTools/ToolSolderPaste.py:127 msgid "Generate Geo" msgstr "Generate Geo" @@ -8626,7 +8885,7 @@ msgstr "Excellon Object" msgid "Solid circles." msgstr "Solid circles." -#: flatcamGUI/ObjectUI.py:536 flatcamGUI/ObjectUI.py:855 +#: flatcamGUI/ObjectUI.py:536 flatcamGUI/ObjectUI.py:858 msgid "Tools Table" msgstr "Tools Table" @@ -8652,7 +8911,7 @@ msgstr "" "When ToolChange is checked, on toolchange event this value\n" "will be showed as a T1, T2 ... Tn in the Machine Code." -#: flatcamGUI/ObjectUI.py:565 flatcamGUI/ObjectUI.py:901 +#: flatcamGUI/ObjectUI.py:565 flatcamGUI/ObjectUI.py:904 #: flatcamTools/ToolNonCopperClear.py:97 flatcamTools/ToolPaint.py:94 msgid "" "Tool Diameter. It's value (in current FlatCAM units) \n" @@ -8689,15 +8948,15 @@ msgstr "" "Create a CNC Job object\n" "for this drill object." -#: flatcamGUI/ObjectUI.py:615 flatcamGUI/ObjectUI.py:1115 +#: flatcamGUI/ObjectUI.py:615 flatcamGUI/ObjectUI.py:1118 msgid "Tool change" msgstr "Tool change" -#: flatcamGUI/ObjectUI.py:623 flatcamGUI/ObjectUI.py:1108 +#: flatcamGUI/ObjectUI.py:623 flatcamGUI/ObjectUI.py:1111 msgid "Tool change Z:" msgstr "Tool change Z:" -#: flatcamGUI/ObjectUI.py:625 flatcamGUI/ObjectUI.py:1111 +#: flatcamGUI/ObjectUI.py:625 flatcamGUI/ObjectUI.py:1114 msgid "" "Z-axis position (height) for\n" "tool change." @@ -8735,7 +8994,7 @@ msgstr "" "(in units per minute).\n" "This is for linear move G01." -#: flatcamGUI/ObjectUI.py:706 +#: flatcamGUI/ObjectUI.py:709 msgid "" "The json file that dictates\n" "gcode output." @@ -8743,7 +9002,7 @@ msgstr "" "The json file that dictates\n" "gcode output." -#: flatcamGUI/ObjectUI.py:738 +#: flatcamGUI/ObjectUI.py:741 msgid "" "Select from the Tools Table above\n" "the tools you want to include." @@ -8751,11 +9010,11 @@ msgstr "" "Select from the Tools Table above\n" "the tools you want to include." -#: flatcamGUI/ObjectUI.py:745 +#: flatcamGUI/ObjectUI.py:748 msgid "Type: " msgstr "Type: " -#: flatcamGUI/ObjectUI.py:747 +#: flatcamGUI/ObjectUI.py:750 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -8767,15 +9026,15 @@ msgstr "" "When choosing 'Slots' or 'Both', slots will be\n" "converted to a series of drills." -#: flatcamGUI/ObjectUI.py:762 +#: flatcamGUI/ObjectUI.py:765 msgid "Create GCode" msgstr "Create GCode" -#: flatcamGUI/ObjectUI.py:764 +#: flatcamGUI/ObjectUI.py:767 msgid "Generate the CNC Job." msgstr "Generate the CNC Job." -#: flatcamGUI/ObjectUI.py:776 +#: flatcamGUI/ObjectUI.py:779 msgid "" "Select from the Tools Table above\n" " the hole dias that are to be milled." @@ -8783,15 +9042,15 @@ msgstr "" "Select from the Tools Table above\n" " the hole dias that are to be milled." -#: flatcamGUI/ObjectUI.py:783 +#: flatcamGUI/ObjectUI.py:786 msgid "Drills Tool dia:" msgstr "Drills Tool dia:" -#: flatcamGUI/ObjectUI.py:790 +#: flatcamGUI/ObjectUI.py:793 msgid "Mill Drills Geo" msgstr "Mill Drills Geo" -#: flatcamGUI/ObjectUI.py:792 +#: flatcamGUI/ObjectUI.py:795 msgid "" "Create the Geometry Object\n" "for milling DRILLS toolpaths." @@ -8799,15 +9058,15 @@ msgstr "" "Create the Geometry Object\n" "for milling DRILLS toolpaths." -#: flatcamGUI/ObjectUI.py:799 +#: flatcamGUI/ObjectUI.py:802 msgid "Slots Tool dia:" msgstr "Slots Tool dia:" -#: flatcamGUI/ObjectUI.py:806 +#: flatcamGUI/ObjectUI.py:809 msgid "Mill Slots Geo" msgstr "Mill Slots Geo" -#: flatcamGUI/ObjectUI.py:808 +#: flatcamGUI/ObjectUI.py:811 msgid "" "Create the Geometry Object\n" "for milling SLOTS toolpaths." @@ -8815,11 +9074,11 @@ msgstr "" "Create the Geometry Object\n" "for milling SLOTS toolpaths." -#: flatcamGUI/ObjectUI.py:826 +#: flatcamGUI/ObjectUI.py:829 msgid "Geometry Object" msgstr "Geometry Object" -#: flatcamGUI/ObjectUI.py:857 +#: flatcamGUI/ObjectUI.py:860 msgid "" "Tools in this Geometry object used for cutting.\n" "The 'Offset' entry will set an offset for the cut.\n" @@ -8847,15 +9106,15 @@ 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:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "Dia" msgstr "Dia" -#: flatcamGUI/ObjectUI.py:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "TT" msgstr "TT" -#: flatcamGUI/ObjectUI.py:895 +#: flatcamGUI/ObjectUI.py:898 msgid "" "This is the Tool Number.\n" "When ToolChange is checked, on toolchange event this value\n" @@ -8865,7 +9124,7 @@ msgstr "" "When ToolChange is checked, on toolchange event this value\n" "will be showed as a T1, T2 ... Tn" -#: flatcamGUI/ObjectUI.py:906 +#: flatcamGUI/ObjectUI.py:909 msgid "" "The value for the Offset can be:\n" "- Path -> There is no offset, the tool cut will be done through the geometry " @@ -8881,7 +9140,7 @@ msgstr "" "'pocket'.\n" "- Out(side) -> The tool cut will follow the geometry line on the outside." -#: flatcamGUI/ObjectUI.py:913 +#: flatcamGUI/ObjectUI.py:916 msgid "" "The (Operation) Type has only informative value. Usually the UI form " "values \n" @@ -8901,7 +9160,7 @@ msgstr "" "For Isolation we need a lower Feedrate as it use a milling bit with a fine " "tip." -#: flatcamGUI/ObjectUI.py:922 +#: flatcamGUI/ObjectUI.py:925 msgid "" "The Tool Type (TT) can be:\n" "- Circular with 1 ... 4 teeth -> it is informative only. Being circular the " @@ -8931,7 +9190,7 @@ msgstr "" "Choosing the V-Shape Tool Type automatically will select the Operation Type " "as Isolation." -#: flatcamGUI/ObjectUI.py:933 +#: flatcamGUI/ObjectUI.py:936 msgid "" "Plot column. It is visible only for MultiGeo geometries, meaning geometries " "that holds the geometry\n" @@ -8949,11 +9208,11 @@ msgstr "" "plot on canvas\n" "for the corresponding tool." -#: flatcamGUI/ObjectUI.py:946 +#: flatcamGUI/ObjectUI.py:949 msgid "Tool Offset:" msgstr "Tool Offset:" -#: flatcamGUI/ObjectUI.py:949 +#: flatcamGUI/ObjectUI.py:952 msgid "" "The value to offset the cut when \n" "the Offset type selected is 'Offset'.\n" @@ -8965,11 +9224,11 @@ msgstr "" "The value can be positive for 'outside'\n" "cut and negative for 'inside' cut." -#: flatcamGUI/ObjectUI.py:972 +#: flatcamGUI/ObjectUI.py:975 msgid "Tool Dia:" msgstr "Tool Dia:" -#: flatcamGUI/ObjectUI.py:991 flatcamTools/ToolNonCopperClear.py:136 +#: flatcamGUI/ObjectUI.py:994 flatcamTools/ToolNonCopperClear.py:136 #: flatcamTools/ToolPaint.py:133 msgid "" "Add a new tool to the Tool Table\n" @@ -8978,7 +9237,7 @@ msgstr "" "Add a new tool to the Tool Table\n" "with the diameter specified above." -#: flatcamGUI/ObjectUI.py:999 +#: flatcamGUI/ObjectUI.py:1002 msgid "" "Copy a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." @@ -8986,7 +9245,7 @@ msgstr "" "Copy a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." -#: flatcamGUI/ObjectUI.py:1007 +#: flatcamGUI/ObjectUI.py:1010 msgid "" "Delete a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." @@ -8994,11 +9253,11 @@ msgstr "" "Delete a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." -#: flatcamGUI/ObjectUI.py:1023 +#: flatcamGUI/ObjectUI.py:1026 msgid "Tool Data" msgstr "Tool Data" -#: flatcamGUI/ObjectUI.py:1026 +#: flatcamGUI/ObjectUI.py:1029 msgid "" "The data used for creating GCode.\n" "Each tool store it's own set of such data." @@ -9006,19 +9265,19 @@ msgstr "" "The data used for creating GCode.\n" "Each tool store it's own set of such data." -#: flatcamGUI/ObjectUI.py:1036 +#: flatcamGUI/ObjectUI.py:1039 msgid "V-Tip Dia:" msgstr "V-Tip Dia:" -#: flatcamGUI/ObjectUI.py:1039 +#: flatcamGUI/ObjectUI.py:1042 msgid "The tip diameter for V-Shape Tool" msgstr "The tip diameter for V-Shape Tool" -#: flatcamGUI/ObjectUI.py:1047 +#: flatcamGUI/ObjectUI.py:1050 msgid "V-Tip Angle:" msgstr "V-Tip Angle:" -#: flatcamGUI/ObjectUI.py:1050 +#: flatcamGUI/ObjectUI.py:1053 msgid "" "The tip angle for V-Shape Tool.\n" "In degree." @@ -9026,11 +9285,11 @@ msgstr "" "The tip angle for V-Shape Tool.\n" "In degree." -#: flatcamGUI/ObjectUI.py:1071 +#: flatcamGUI/ObjectUI.py:1074 msgid "Multi-Depth:" msgstr "Multi-Depth:" -#: flatcamGUI/ObjectUI.py:1074 +#: flatcamGUI/ObjectUI.py:1077 msgid "" "Use multiple passes to limit\n" "the cut depth in each pass. Will\n" @@ -9046,11 +9305,11 @@ msgstr "" "To the right, input the depth of \n" "each pass (positive value)." -#: flatcamGUI/ObjectUI.py:1087 +#: flatcamGUI/ObjectUI.py:1090 msgid "Depth of each pass (positive)." msgstr "Depth of each pass (positive)." -#: flatcamGUI/ObjectUI.py:1118 +#: flatcamGUI/ObjectUI.py:1121 msgid "" "Include tool-change sequence\n" "in the Machine Code (Pause for tool change)." @@ -9058,7 +9317,7 @@ msgstr "" "Include tool-change sequence\n" "in the Machine Code (Pause for tool change)." -#: flatcamGUI/ObjectUI.py:1144 +#: flatcamGUI/ObjectUI.py:1147 msgid "" "This is the height (Z) at which the CNC\n" "will go as the last move." @@ -9066,11 +9325,11 @@ msgstr "" "This is the height (Z) at which the CNC\n" "will go as the last move." -#: flatcamGUI/ObjectUI.py:1165 +#: flatcamGUI/ObjectUI.py:1168 msgid "Feed Rate Z (Plunge):" msgstr "Feed Rate Z (Plunge):" -#: flatcamGUI/ObjectUI.py:1168 +#: flatcamGUI/ObjectUI.py:1171 msgid "" "Cutting speed in the Z\n" "plane in units per minute" @@ -9078,11 +9337,11 @@ msgstr "" "Cutting speed in the Z\n" "plane in units per minute" -#: flatcamGUI/ObjectUI.py:1177 +#: flatcamGUI/ObjectUI.py:1180 msgid "Feed Rate Rapids:" msgstr "Feed Rate Rapids:" -#: flatcamGUI/ObjectUI.py:1180 +#: flatcamGUI/ObjectUI.py:1183 msgid "" "Cutting speed in the XY\n" "plane in units per minute\n" @@ -9098,11 +9357,11 @@ msgstr "" "It is useful only for Marlin,\n" "ignore for any other cases." -#: flatcamGUI/ObjectUI.py:1193 +#: flatcamGUI/ObjectUI.py:1199 msgid "Cut over 1st pt" msgstr "Cut over 1st pt" -#: flatcamGUI/ObjectUI.py:1208 +#: flatcamGUI/ObjectUI.py:1214 msgid "" "Speed of the spindle in RPM (optional).\n" "If LASER postprocessor is used,\n" @@ -9112,11 +9371,11 @@ msgstr "" "If LASER postprocessor is used,\n" "this value is the power of laser." -#: flatcamGUI/ObjectUI.py:1237 +#: flatcamGUI/ObjectUI.py:1243 msgid "PostProcessor:" msgstr "PostProcessor:" -#: flatcamGUI/ObjectUI.py:1240 +#: flatcamGUI/ObjectUI.py:1246 msgid "" "The Postprocessor file that dictates\n" "the Machine Code (like GCode, RML, HPGL) output." @@ -9124,7 +9383,7 @@ msgstr "" "The Postprocessor file that dictates\n" "the Machine Code (like GCode, RML, HPGL) output." -#: flatcamGUI/ObjectUI.py:1278 +#: flatcamGUI/ObjectUI.py:1284 msgid "" "Add at least one tool in the tool-table.\n" "Click the header to select all, or Ctrl + LMB\n" @@ -9134,35 +9393,35 @@ msgstr "" "Click the header to select all, or Ctrl + LMB\n" "for custom selection of tools." -#: flatcamGUI/ObjectUI.py:1285 +#: flatcamGUI/ObjectUI.py:1291 msgid "Generate" msgstr "Generate" -#: flatcamGUI/ObjectUI.py:1288 +#: flatcamGUI/ObjectUI.py:1294 msgid "Generate the CNC Job object." msgstr "Generate the CNC Job object." -#: flatcamGUI/ObjectUI.py:1296 +#: flatcamGUI/ObjectUI.py:1302 msgid "Paint Area:" msgstr "Paint Area:" -#: flatcamGUI/ObjectUI.py:1311 +#: flatcamGUI/ObjectUI.py:1317 msgid "Launch Paint Tool in Tools Tab." msgstr "Launch Paint Tool in Tools Tab." -#: flatcamGUI/ObjectUI.py:1328 +#: flatcamGUI/ObjectUI.py:1334 msgid "CNC Job Object" msgstr "CNC Job Object" -#: flatcamGUI/ObjectUI.py:1347 +#: flatcamGUI/ObjectUI.py:1353 msgid "Plot kind:" msgstr "Plot kind:" -#: flatcamGUI/ObjectUI.py:1372 +#: flatcamGUI/ObjectUI.py:1378 msgid "Travelled dist.:" msgstr "Travelled dist.:" -#: flatcamGUI/ObjectUI.py:1375 flatcamGUI/ObjectUI.py:1382 +#: flatcamGUI/ObjectUI.py:1381 flatcamGUI/ObjectUI.py:1388 msgid "" "This is the total travelled distance on X-Y plane.\n" "In current units." @@ -9170,11 +9429,11 @@ msgstr "" "This is the total travelled distance on X-Y plane.\n" "In current units." -#: flatcamGUI/ObjectUI.py:1410 +#: flatcamGUI/ObjectUI.py:1416 msgid "CNC Tools Table" msgstr "CNC Tools Table" -#: flatcamGUI/ObjectUI.py:1413 +#: flatcamGUI/ObjectUI.py:1419 msgid "" "Tools in this CNCJob object used for cutting.\n" "The tool diameter is used for plotting on canvas.\n" @@ -9196,27 +9455,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:1447 +#: flatcamGUI/ObjectUI.py:1453 msgid "P" msgstr "P" -#: flatcamGUI/ObjectUI.py:1453 +#: flatcamGUI/ObjectUI.py:1459 msgid "Update Plot" msgstr "Update Plot" -#: flatcamGUI/ObjectUI.py:1455 +#: flatcamGUI/ObjectUI.py:1461 msgid "Update the plot." msgstr "Update the plot." -#: flatcamGUI/ObjectUI.py:1462 +#: flatcamGUI/ObjectUI.py:1468 msgid "Export CNC Code:" msgstr "Export CNC Code:" -#: flatcamGUI/ObjectUI.py:1470 +#: flatcamGUI/ObjectUI.py:1476 msgid "Prepend to CNC Code:" msgstr "Prepend to CNC Code:" -#: flatcamGUI/ObjectUI.py:1473 +#: flatcamGUI/ObjectUI.py:1479 msgid "" "Type here any G-Code commands you would\n" "like to add to the beginning of the generated file." @@ -9224,11 +9483,11 @@ msgstr "" "Type here any G-Code commands you would\n" "like to add to the beginning of the generated file." -#: flatcamGUI/ObjectUI.py:1483 +#: flatcamGUI/ObjectUI.py:1489 msgid "Append to CNC Code" msgstr "Append to CNC Code" -#: flatcamGUI/ObjectUI.py:1507 +#: flatcamGUI/ObjectUI.py:1513 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -9250,19 +9509,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:1555 +#: flatcamGUI/ObjectUI.py:1561 msgid "z_cut = depth where to cut" msgstr "z_cut = depth where to cut" -#: flatcamGUI/ObjectUI.py:1556 +#: flatcamGUI/ObjectUI.py:1562 msgid "z_move = height where to travel" msgstr "z_move = height where to travel" -#: flatcamGUI/ObjectUI.py:1574 +#: flatcamGUI/ObjectUI.py:1580 msgid "View CNC Code" msgstr "View CNC Code" -#: flatcamGUI/ObjectUI.py:1577 +#: flatcamGUI/ObjectUI.py:1583 msgid "" "Opens TAB to view/modify/print G-Code\n" "file." @@ -9270,11 +9529,11 @@ msgstr "" "Opens TAB to view/modify/print G-Code\n" "file." -#: flatcamGUI/ObjectUI.py:1583 +#: flatcamGUI/ObjectUI.py:1589 msgid "Save CNC Code" msgstr "Save CNC Code" -#: flatcamGUI/ObjectUI.py:1586 +#: flatcamGUI/ObjectUI.py:1592 msgid "" "Opens dialog to save G-Code\n" "file." @@ -9450,15 +9709,24 @@ msgstr "" "the surrounding material (the one \n" "from which the PCB is cutout)." -#: flatcamTools/ToolCutOut.py:122 +#: flatcamTools/ToolCutOut.py:117 +#| msgid "Create a convex shape surrounding the entire PCB." +msgid "" +"Create a convex shape surrounding the entire PCB.\n" +"Used only if the source object type is Gerber." +msgstr "" +"Create a convex shape surrounding the entire PCB.\n" +"Used only if the source object type is Gerber." + +#: flatcamTools/ToolCutOut.py:123 msgid "A. Automatic Bridge Gaps" msgstr "A. Automatic Bridge Gaps" -#: flatcamTools/ToolCutOut.py:124 +#: flatcamTools/ToolCutOut.py:125 msgid "This section handle creation of automatic bridge gaps." msgstr "This section handle creation of automatic bridge gaps." -#: flatcamTools/ToolCutOut.py:135 +#: flatcamTools/ToolCutOut.py:136 msgid "" "Number of gaps used for the Automatic cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -9480,11 +9748,11 @@ msgstr "" "- 2tb - 2*top + 2*bottom\n" "- 8 - 2*left + 2*right +2*top + 2*bottom" -#: flatcamTools/ToolCutOut.py:158 +#: flatcamTools/ToolCutOut.py:159 msgid "FreeForm:" msgstr "FreeForm:" -#: flatcamTools/ToolCutOut.py:160 +#: flatcamTools/ToolCutOut.py:161 msgid "" "The cutout shape can be of ny shape.\n" "Useful when the PCB has a non-rectangular shape." @@ -9492,7 +9760,7 @@ msgstr "" "The cutout shape can be of ny shape.\n" "Useful when the PCB has a non-rectangular shape." -#: flatcamTools/ToolCutOut.py:169 +#: flatcamTools/ToolCutOut.py:170 msgid "" "Cutout the selected object.\n" "The cutout shape can be of any shape.\n" @@ -9502,11 +9770,11 @@ msgstr "" "The cutout shape can be of any shape.\n" "Useful when the PCB has a non-rectangular shape." -#: flatcamTools/ToolCutOut.py:178 +#: flatcamTools/ToolCutOut.py:179 msgid "Rectangular:" msgstr "Rectangular:" -#: flatcamTools/ToolCutOut.py:180 +#: flatcamTools/ToolCutOut.py:181 msgid "" "The resulting cutout shape is\n" "always a rectangle shape and it will be\n" @@ -9516,7 +9784,7 @@ msgstr "" "always a rectangle shape and it will be\n" "the bounding box of the Object." -#: flatcamTools/ToolCutOut.py:189 +#: flatcamTools/ToolCutOut.py:190 msgid "" "Cutout the selected object.\n" "The resulting cutout shape is\n" @@ -9528,11 +9796,11 @@ msgstr "" "always a rectangle shape and it will be\n" "the bounding box of the Object." -#: flatcamTools/ToolCutOut.py:197 +#: flatcamTools/ToolCutOut.py:198 msgid "B. Manual Bridge Gaps" msgstr "B. Manual Bridge Gaps" -#: flatcamTools/ToolCutOut.py:199 +#: flatcamTools/ToolCutOut.py:200 msgid "" "This section handle creation of manual bridge gaps.\n" "This is done by mouse clicking on the perimeter of the\n" @@ -9542,19 +9810,19 @@ msgstr "" "This is done by mouse clicking on the perimeter of the\n" "Geometry object that is used as a cutout object. " -#: flatcamTools/ToolCutOut.py:215 +#: flatcamTools/ToolCutOut.py:216 msgid "Geo Obj:" msgstr "Geo Obj:" -#: flatcamTools/ToolCutOut.py:217 +#: flatcamTools/ToolCutOut.py:218 msgid "Geometry object used to create the manual cutout." msgstr "Geometry object used to create the manual cutout." -#: flatcamTools/ToolCutOut.py:228 +#: flatcamTools/ToolCutOut.py:229 msgid "Manual Geo:" msgstr "Manual Geo:" -#: flatcamTools/ToolCutOut.py:230 flatcamTools/ToolCutOut.py:240 +#: flatcamTools/ToolCutOut.py:231 flatcamTools/ToolCutOut.py:241 msgid "" "If the object to be cutout is a Gerber\n" "first create a Geometry that surrounds it,\n" @@ -9566,11 +9834,11 @@ msgstr "" "to be used as the cutout, if one doesn't exist yet.\n" "Select the source Gerber file in the top object combobox." -#: flatcamTools/ToolCutOut.py:250 +#: flatcamTools/ToolCutOut.py:251 msgid "Manual Add Bridge Gaps:" msgstr "Manual Add Bridge Gaps:" -#: flatcamTools/ToolCutOut.py:252 +#: flatcamTools/ToolCutOut.py:253 msgid "" "Use the left mouse button (LMB) click\n" "to create a bridge gap to separate the PCB from\n" @@ -9580,11 +9848,11 @@ msgstr "" "to create a bridge gap to separate the PCB from\n" "the surrounding material." -#: flatcamTools/ToolCutOut.py:259 +#: flatcamTools/ToolCutOut.py:260 msgid "Generate Gap" msgstr "Generate Gap" -#: flatcamTools/ToolCutOut.py:261 +#: flatcamTools/ToolCutOut.py:262 msgid "" "Use the left mouse button (LMB) click\n" "to create a bridge gap to separate the PCB from\n" @@ -9598,16 +9866,16 @@ msgstr "" "The LMB click has to be done on the perimeter of\n" "the Geometry object used as a cutout geometry." -#: flatcamTools/ToolCutOut.py:338 flatcamTools/ToolCutOut.py:483 +#: flatcamTools/ToolCutOut.py:341 flatcamTools/ToolCutOut.py:499 #: flatcamTools/ToolNonCopperClear.py:666 flatcamTools/ToolPaint.py:764 -#: flatcamTools/ToolPanelize.py:293 flatcamTools/ToolPanelize.py:307 -#: flatcamTools/ToolSub.py:234 flatcamTools/ToolSub.py:246 -#: flatcamTools/ToolSub.py:364 flatcamTools/ToolSub.py:376 +#: flatcamTools/ToolPanelize.py:352 flatcamTools/ToolPanelize.py:366 +#: flatcamTools/ToolSub.py:237 flatcamTools/ToolSub.py:249 +#: flatcamTools/ToolSub.py:428 flatcamTools/ToolSub.py:440 #, python-format msgid "[ERROR_NOTCL] Could not retrieve object: %s" msgstr "[ERROR_NOTCL] Could not retrieve object: %s" -#: flatcamTools/ToolCutOut.py:342 +#: flatcamTools/ToolCutOut.py:345 msgid "" "[ERROR_NOTCL] There is no object selected for Cutout.\n" "Select one and try again." @@ -9615,7 +9883,7 @@ msgstr "" "[ERROR_NOTCL] There is no object selected for Cutout.\n" "Select one and try again." -#: flatcamTools/ToolCutOut.py:358 +#: flatcamTools/ToolCutOut.py:360 msgid "" "[WARNING_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." @@ -9623,25 +9891,25 @@ msgstr "" "[WARNING_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." -#: flatcamTools/ToolCutOut.py:368 flatcamTools/ToolCutOut.py:511 -#: flatcamTools/ToolCutOut.py:736 +#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:527 +#: flatcamTools/ToolCutOut.py:771 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:379 flatcamTools/ToolCutOut.py:522 -#: flatcamTools/ToolCutOut.py:631 +#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:538 +#: flatcamTools/ToolCutOut.py:666 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:386 flatcamTools/ToolCutOut.py:529 +#: flatcamTools/ToolCutOut.py:388 flatcamTools/ToolCutOut.py:545 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:390 flatcamTools/ToolCutOut.py:533 +#: flatcamTools/ToolCutOut.py:392 flatcamTools/ToolCutOut.py:549 msgid "" "[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 " "or 8. Fill in a correct value and retry. " @@ -9649,7 +9917,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:395 flatcamTools/ToolCutOut.py:538 +#: flatcamTools/ToolCutOut.py:397 flatcamTools/ToolCutOut.py:554 msgid "" "[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n" "Optionally, this Multi-geo Geometry can be converted to Single-geo " @@ -9661,18 +9929,18 @@ msgstr "" "Geometry,\n" "and after that perform Cutout." -#: flatcamTools/ToolCutOut.py:467 flatcamTools/ToolCutOut.py:601 +#: flatcamTools/ToolCutOut.py:483 flatcamTools/ToolCutOut.py:636 msgid "[success] Any form CutOut operation finished." msgstr "[success] Any form CutOut operation finished." -#: flatcamTools/ToolCutOut.py:487 flatcamTools/ToolPaint.py:768 -#: flatcamTools/ToolPanelize.py:299 +#: flatcamTools/ToolCutOut.py:503 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:501 flatcamTools/ToolCutOut.py:621 -#: flatcamTools/ToolCutOut.py:726 +#: flatcamTools/ToolCutOut.py:517 flatcamTools/ToolCutOut.py:656 +#: flatcamTools/ToolCutOut.py:761 msgid "" "[ERROR_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." @@ -9680,36 +9948,36 @@ msgstr "" "[ERROR_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." -#: flatcamTools/ToolCutOut.py:606 +#: flatcamTools/ToolCutOut.py:641 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:647 +#: flatcamTools/ToolCutOut.py:682 msgid "Making manual bridge gap..." msgstr "Making manual bridge gap..." -#: flatcamTools/ToolCutOut.py:670 +#: flatcamTools/ToolCutOut.py:705 #, python-format msgid "[ERROR_NOTCL] Could not retrieve Geometry object: %s" msgstr "[ERROR_NOTCL] Could not retrieve Geometry object: %s" -#: flatcamTools/ToolCutOut.py:674 +#: flatcamTools/ToolCutOut.py:709 #, 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:684 +#: flatcamTools/ToolCutOut.py:719 msgid "[success] Added manual Bridge Gap." msgstr "[success] Added manual Bridge Gap." -#: flatcamTools/ToolCutOut.py:701 +#: flatcamTools/ToolCutOut.py:736 #, python-format msgid "[ERROR_NOTCL] Could not retrieve Gerber object: %s" msgstr "[ERROR_NOTCL] Could not retrieve Gerber object: %s" -#: flatcamTools/ToolCutOut.py:705 +#: flatcamTools/ToolCutOut.py:740 msgid "" "[ERROR_NOTCL] There is no Gerber object selected for Cutout.\n" "Select one and try again." @@ -9717,7 +9985,7 @@ msgstr "" "[ERROR_NOTCL] There is no Gerber object selected for Cutout.\n" "Select one and try again." -#: flatcamTools/ToolCutOut.py:710 +#: flatcamTools/ToolCutOut.py:745 msgid "" "[ERROR_NOTCL] The selected object has to be of Gerber type.\n" "Select a Gerber file and try again." @@ -10001,7 +10269,7 @@ msgstr "Film Object:" msgid "Object for which to create the film." msgstr "Object for which to create the film." -#: flatcamTools/ToolFilm.py:89 flatcamTools/ToolPanelize.py:89 +#: flatcamTools/ToolFilm.py:89 flatcamTools/ToolPanelize.py:111 msgid "Box Type:" msgstr "Box Type:" @@ -10017,7 +10285,7 @@ msgstr "" "the type of objects that will be\n" "in the Box Object combobox." -#: flatcamTools/ToolFilm.py:104 flatcamTools/ToolPanelize.py:104 +#: flatcamTools/ToolFilm.py:104 flatcamTools/ToolPanelize.py:126 msgid "Box Object:" msgstr "Box Object:" @@ -10506,16 +10774,16 @@ msgstr "[WARNING_NOTCL] Open PDF cancelled." msgid "Parsing PDF file ..." msgstr "Parsing PDF file ..." -#: flatcamTools/ToolPDF.py:264 flatcamTools/ToolPDF.py:300 +#: flatcamTools/ToolPDF.py:265 flatcamTools/ToolPDF.py:338 #, python-format msgid "Rendering PDF layer #%d ..." msgstr "Rendering PDF layer #%d ..." -#: flatcamTools/ToolPDF.py:268 flatcamTools/ToolPDF.py:304 +#: flatcamTools/ToolPDF.py:269 flatcamTools/ToolPDF.py:342 msgid "[ERROR_NOTCL] Open PDF file failed." msgstr "[ERROR_NOTCL] Open PDF file failed." -#: flatcamTools/ToolPDF.py:273 flatcamTools/ToolPDF.py:309 +#: flatcamTools/ToolPDF.py:274 flatcamTools/ToolPDF.py:347 #, python-format msgid "[success] Rendered: %s" msgstr "[success] Rendered: %s" @@ -10721,7 +10989,32 @@ msgstr "" "Object to be panelized. This means that it will\n" "be duplicated in an array of rows and columns." -#: flatcamTools/ToolPanelize.py:91 +#: flatcamTools/ToolPanelize.py:86 +#| msgid "Generate Isolation Geometry:" +msgid "Penelization Reference:" +msgstr "Penelization Reference:" + +#: flatcamTools/ToolPanelize.py:88 +msgid "" +"Choose the reference for panelization:\n" +"- Object = the bounding box of a different object\n" +"- Bounding Box = the bounding box of the object to be panelized\n" +"\n" +"The reference is useful when doing panelization for more than one\n" +"object. The spacings (really offsets) will be applied in reference\n" +"to this reference object therefore maintaining the panelized\n" +"objects in sync." +msgstr "" +"Choose the reference for panelization:\n" +"- Object = the bounding box of a different object\n" +"- Bounding Box = the bounding box of the object to be panelized\n" +"\n" +"The reference is useful when doing panelization for more than one\n" +"object. The spacings (really offsets) will be applied in reference\n" +"to this reference object therefore maintaining the panelized\n" +"objects in sync." + +#: flatcamTools/ToolPanelize.py:113 msgid "" "Specify the type of object to be used as an container for\n" "panelization. It can be: Gerber or Geometry type.\n" @@ -10733,7 +11026,7 @@ msgstr "" "The selection here decide the type of objects that will be\n" "in the Box Object combobox." -#: flatcamTools/ToolPanelize.py:106 +#: flatcamTools/ToolPanelize.py:128 msgid "" "The actual object that is used a container for the\n" " selected object that is to be panelized." @@ -10741,7 +11034,33 @@ msgstr "" "The actual object that is used a container for the\n" " selected object that is to be panelized." -#: flatcamTools/ToolPanelize.py:150 +#: flatcamTools/ToolPanelize.py:134 +#| msgid "Tool Data" +msgid "Panel Data:" +msgstr "Panel Data:" + +#: flatcamTools/ToolPanelize.py:136 +msgid "" +"This informations will shape the resulting panel.\n" +"The number of rows and columns will set how many\n" +"duplicates of the original geometry will be generated.\n" +"\n" +"The spacings will set the distance between any two\n" +"elements of the panel array." +msgstr "" +"This informations will shape the resulting panel.\n" +"The number of rows and columns will set how many\n" +"duplicates of the original geometry will be generated.\n" +"\n" +"The spacings will set the distance between any two\n" +"elements of the panel array." + +#: flatcamTools/ToolPanelize.py:183 +#| msgid "Panel Type:" +msgid "Panel Type:" +msgstr "Panel Type:" + +#: flatcamTools/ToolPanelize.py:185 msgid "" "Choose the type of object for the panel object:\n" "- Geometry\n" @@ -10751,15 +11070,15 @@ msgstr "" "- Geometry\n" "- Gerber" -#: flatcamTools/ToolPanelize.py:158 +#: flatcamTools/ToolPanelize.py:193 msgid "Constrain panel within:" msgstr "Constrain panel within:" -#: flatcamTools/ToolPanelize.py:192 +#: flatcamTools/ToolPanelize.py:227 msgid "Panelize Object" msgstr "Panelize Object" -#: flatcamTools/ToolPanelize.py:194 +#: flatcamTools/ToolPanelize.py:229 msgid "" "Panelize the specified object around the specified box.\n" "In other words it creates multiple copies of the source object,\n" @@ -10769,12 +11088,13 @@ msgstr "" "In other words it creates multiple copies of the source object,\n" "arranged in a 2D array of rows and columns." -#: flatcamTools/ToolPanelize.py:311 +#: flatcamTools/ToolPanelize.py:370 #, python-format -msgid "[WARNING]No object Box. Using instead %s" -msgstr "[WARNING]No object Box. Using instead %s" +#| msgid "[WARNING_NOTCL] No object Box. Using instead %s" +msgid "[WARNING_NOTCL]No object Box. Using instead %s" +msgstr "[WARNING_NOTCL]No object Box. Using instead %s" -#: flatcamTools/ToolPanelize.py:392 +#: flatcamTools/ToolPanelize.py:453 msgid "" "[ERROR_NOTCL] Columns or Rows are zero value. Change them to a positive " "integer." @@ -10782,15 +11102,15 @@ msgstr "" "[ERROR_NOTCL] Columns or Rows are zero value. Change them to a positive " "integer." -#: flatcamTools/ToolPanelize.py:417 flatcamTools/ToolPanelize.py:526 +#: flatcamTools/ToolPanelize.py:478 flatcamTools/ToolPanelize.py:635 msgid "Generating panel ... Please wait." msgstr "Generating panel ... Please wait." -#: flatcamTools/ToolPanelize.py:520 +#: flatcamTools/ToolPanelize.py:628 msgid "[success] Panel done..." msgstr "[success] Panel done..." -#: flatcamTools/ToolPanelize.py:523 +#: flatcamTools/ToolPanelize.py:631 #, python-brace-format msgid "" "[WARNING] Too big for the constrain area. Final panel has {col} columns and " @@ -10799,7 +11119,7 @@ msgstr "" "[WARNING] Too big for the constrain area. Final panel has {col} columns and " "{row} rows" -#: flatcamTools/ToolPanelize.py:531 +#: flatcamTools/ToolPanelize.py:640 msgid "[success] Panel created successfully." msgstr "[success] Panel created successfully." @@ -11255,7 +11575,7 @@ msgstr "[ERROR] ToolSolderPaste.on_view_gcode() -->%s" msgid "Export GCode ..." msgstr "Export GCode ..." -#: flatcamTools/ToolSolderPaste.py:1394 +#: flatcamTools/ToolSolderPaste.py:1396 #, python-format msgid "[success] Solder paste dispenser GCode file saved to: %s" msgstr "[success] Solder paste dispenser GCode file saved to: %s" @@ -11336,47 +11656,47 @@ msgstr "" "Will remove the area occupied by the substractor\n" "Geometry from the Target Geometry." -#: flatcamTools/ToolSub.py:212 +#: flatcamTools/ToolSub.py:215 msgid "Sub Tool" msgstr "Sub Tool" -#: flatcamTools/ToolSub.py:227 flatcamTools/ToolSub.py:357 +#: flatcamTools/ToolSub.py:230 flatcamTools/ToolSub.py:421 msgid "[ERROR_NOTCL] No Target object loaded." msgstr "[ERROR_NOTCL] No Target object loaded." -#: flatcamTools/ToolSub.py:239 flatcamTools/ToolSub.py:369 +#: flatcamTools/ToolSub.py:242 flatcamTools/ToolSub.py:433 msgid "[ERROR_NOTCL] No Substractor object loaded." msgstr "[ERROR_NOTCL] No Substractor object loaded." -#: flatcamTools/ToolSub.py:277 +#: flatcamTools/ToolSub.py:294 #, python-format msgid "Parsing aperture %s geometry ..." msgstr "Parsing aperture %s geometry ..." -#: flatcamTools/ToolSub.py:331 flatcamTools/ToolSub.py:475 +#: flatcamTools/ToolSub.py:396 flatcamTools/ToolSub.py:539 msgid "Generating new object ..." msgstr "Generating new object ..." -#: flatcamTools/ToolSub.py:334 flatcamTools/ToolSub.py:478 +#: flatcamTools/ToolSub.py:399 flatcamTools/ToolSub.py:542 msgid "[ERROR_NOTCL] Generating new object failed." msgstr "[ERROR_NOTCL] Generating new object failed." -#: flatcamTools/ToolSub.py:339 flatcamTools/ToolSub.py:483 +#: flatcamTools/ToolSub.py:403 flatcamTools/ToolSub.py:547 #, python-format msgid "[success] Created: %s" msgstr "[success] Created: %s" -#: flatcamTools/ToolSub.py:380 +#: flatcamTools/ToolSub.py:444 msgid "" "[ERROR_NOTCL] Currently, the Substractor geometry cannot be of type Multigeo." msgstr "" "[ERROR_NOTCL] Currently, the Substractor geometry cannot be of type Multigeo." -#: flatcamTools/ToolSub.py:425 +#: flatcamTools/ToolSub.py:489 msgid "Parsing solid_geometry ..." msgstr "Parsing solid_geometry ..." -#: flatcamTools/ToolSub.py:427 +#: flatcamTools/ToolSub.py:491 #, python-format msgid "Parsing tool %s geometry ..." msgstr "Parsing tool %s geometry ..." @@ -11451,44 +11771,80 @@ msgstr "[WARNING_NOTCL] No object selected. Please Select an object to rotate!" msgid "CNCJob objects can't be rotated." msgstr "CNCJob objects can't be rotated." -#: flatcamTools/ToolTransform.py:674 +#: flatcamTools/ToolTransform.py:673 msgid "[success] Rotate done ..." msgstr "[success] Rotate done ..." -#: flatcamTools/ToolTransform.py:689 +#: flatcamTools/ToolTransform.py:688 msgid "[WARNING_NOTCL] No object selected. Please Select an object to flip!" msgstr "[WARNING_NOTCL] No object selected. Please Select an object to flip!" -#: flatcamTools/ToolTransform.py:724 +#: flatcamTools/ToolTransform.py:723 msgid "CNCJob objects can't be mirrored/flipped." msgstr "CNCJob objects can't be mirrored/flipped." -#: flatcamTools/ToolTransform.py:759 +#: flatcamTools/ToolTransform.py:757 msgid "" "[WARNING_NOTCL] No object selected. Please Select an object to shear/skew!" msgstr "" "[WARNING_NOTCL] No object selected. Please Select an object to shear/skew!" -#: flatcamTools/ToolTransform.py:781 +#: flatcamTools/ToolTransform.py:779 msgid "CNCJob objects can't be skewed." msgstr "CNCJob objects can't be skewed." -#: flatcamTools/ToolTransform.py:808 +#: flatcamTools/ToolTransform.py:806 msgid "[WARNING_NOTCL] No object selected. Please Select an object to scale!" msgstr "[WARNING_NOTCL] No object selected. Please Select an object to scale!" -#: flatcamTools/ToolTransform.py:841 +#: flatcamTools/ToolTransform.py:839 msgid "CNCJob objects can't be scaled." msgstr "CNCJob objects can't be scaled." -#: flatcamTools/ToolTransform.py:861 +#: flatcamTools/ToolTransform.py:858 msgid "[WARNING_NOTCL] No object selected. Please Select an object to offset!" msgstr "[WARNING_NOTCL] No object selected. Please Select an object to offset!" -#: flatcamTools/ToolTransform.py:882 +#: flatcamTools/ToolTransform.py:867 msgid "CNCJob objects can't be offseted." msgstr "CNCJob objects can't be offseted." +#~ msgid "[WARNING_NOTCL] Move cancelled. No shape selected." +#~ msgstr "[WARNING_NOTCL] Move cancelled. No shape selected." + +#~ msgid "Click on the Destination point..." +#~ msgstr "Click on the Destination point..." + +#~ msgid "Copy as &Geom" +#~ msgstr "Copy as &Geom" + +#~ msgid "Ap. Scale Factor:" +#~ msgstr "Ap. Scale Factor:" + +#~ msgid "" +#~ "Change the size of the selected apertures.\n" +#~ "Factor by which to multiply\n" +#~ "geometric features of this object." +#~ msgstr "" +#~ "Change the size of the selected apertures.\n" +#~ "Factor by which to multiply\n" +#~ "geometric features of this object." + +#~ msgid "Ap. Buffer Factor:" +#~ msgstr "Ap. Buffer Factor:" + +#~ msgid "" +#~ "Change the size of the selected apertures.\n" +#~ "Factor by which to expand/shrink\n" +#~ "geometric features of this object." +#~ msgstr "" +#~ "Change the size of the selected apertures.\n" +#~ "Factor by which to expand/shrink\n" +#~ "geometric features of this object." + +#~ msgid "[WARNING]No object Box. Using instead %s" +#~ msgstr "[WARNING]No object Box. Using instead %s" + #~ msgid "Path" #~ msgstr "Path" diff --git a/locale/ro/LC_MESSAGES/strings.mo b/locale/ro/LC_MESSAGES/strings.mo index 36b76dedae61e46cf7c61ac7bd6a22f6a8e9f6e3..2ce363684b08fe12a26ece99f635c45adb880042 100644 GIT binary patch delta 44783 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 diff --git a/locale/ro/LC_MESSAGES/strings.po b/locale/ro/LC_MESSAGES/strings.po index 76565e9e..b4f75249 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-05-01 16:00+0300\n" -"PO-Revision-Date: 2019-05-01 16:01+0300\n" +"POT-Creation-Date: 2019-05-20 01:49+0300\n" +"PO-Revision-Date: 2019-05-20 02:17+0300\n" "Last-Translator: \n" "Language-Team: \n" "Language: ro\n" @@ -23,31 +23,31 @@ msgstr "" "X-Poedit-SearchPathExcluded-1: tests\n" "X-Poedit-SearchPathExcluded-2: doc\n" -#: FlatCAMApp.py:865 +#: FlatCAMApp.py:898 msgid "[ERROR] Could not find the Language files. The App strings are missing." msgstr "" "[ERROR] Nu am gasit fişierele cu traduceri. Mesajele aplicaţiei lipsesc." -#: FlatCAMApp.py:1921 ObjectCollection.py:80 flatcamTools/ToolImage.py:213 +#: FlatCAMApp.py:1962 ObjectCollection.py:80 flatcamTools/ToolImage.py:213 #: flatcamTools/ToolPcbWizard.py:299 flatcamTools/ToolPcbWizard.py:322 msgid "Open cancelled." msgstr "Deschidere anulata." -#: FlatCAMApp.py:1935 +#: FlatCAMApp.py:1976 msgid "Open Config file failed." msgstr "Deschiderea fişierului de configurare a eşuat." -#: FlatCAMApp.py:1949 +#: FlatCAMApp.py:1990 msgid "Open Script file failed." msgstr "Deschiderea fişierului Script eşuat." -#: FlatCAMApp.py:2140 +#: FlatCAMApp.py:2181 msgid "[WARNING_NOTCL] Select a Geometry, Gerber or Excellon Object to edit." msgstr "" "[WARNING_NOTCL] Selectează un obiect tip Geometrie Gerber sau Excellon " "pentru editare." -#: FlatCAMApp.py:2150 +#: FlatCAMApp.py:2191 msgid "" "[WARNING_NOTCL] Simultanoeus editing of tools geometry in a MultiGeo " "Geometry is not possible.\n" @@ -57,102 +57,102 @@ msgstr "" "obiect tip Geometrie MultiGeo nu este posibilă.\n" "Se poate edita numai o singură geometrie de fiecare dată." -#: FlatCAMApp.py:2188 +#: FlatCAMApp.py:2235 msgid "[WARNING_NOTCL] Editor is activated ..." msgstr "[WARNING_NOTCL] Editorul este activ. .." -#: FlatCAMApp.py:2207 +#: FlatCAMApp.py:2254 msgid "Do you want to save the edited object?" msgstr "Vrei sa salvezi obiectul editat?" -#: FlatCAMApp.py:2208 flatcamGUI/FlatCAMGUI.py:1604 +#: FlatCAMApp.py:2255 flatcamGUI/FlatCAMGUI.py:1618 msgid "Close Editor" msgstr "Inchide Editorul" -#: FlatCAMApp.py:2211 FlatCAMApp.py:3302 FlatCAMApp.py:5661 -#: FlatCAMTranslation.py:89 flatcamGUI/FlatCAMGUI.py:3698 +#: FlatCAMApp.py:2258 FlatCAMApp.py:3349 FlatCAMApp.py:5799 +#: FlatCAMTranslation.py:89 flatcamGUI/FlatCAMGUI.py:3726 msgid "Yes" msgstr "Da" -#: FlatCAMApp.py:2212 FlatCAMApp.py:3303 FlatCAMApp.py:5662 -#: FlatCAMTranslation.py:90 flatcamGUI/FlatCAMGUI.py:3699 +#: FlatCAMApp.py:2259 FlatCAMApp.py:3350 FlatCAMApp.py:5800 +#: FlatCAMTranslation.py:90 flatcamGUI/FlatCAMGUI.py:3727 msgid "No" msgstr "Nu" -#: FlatCAMApp.py:2213 FlatCAMApp.py:3304 FlatCAMApp.py:3636 FlatCAMApp.py:5663 +#: FlatCAMApp.py:2260 FlatCAMApp.py:3351 FlatCAMApp.py:3683 FlatCAMApp.py:5801 msgid "Cancel" msgstr "Anuleaza" -#: FlatCAMApp.py:2235 FlatCAMApp.py:2260 +#: FlatCAMApp.py:2287 msgid "[WARNING] Object empty after edit." msgstr "[WARNING] Obiectul nu are date dupa editare." -#: FlatCAMApp.py:2269 FlatCAMApp.py:2283 FlatCAMApp.py:2295 +#: FlatCAMApp.py:2309 FlatCAMApp.py:2328 FlatCAMApp.py:2340 msgid "[WARNING_NOTCL] Select a Gerber, Geometry or Excellon Object to update." msgstr "" "[WARNING_NOTCL] Selectează un obiect tip Gerber, Geometrie sau Excellon " "pentru salvare." -#: FlatCAMApp.py:2272 +#: FlatCAMApp.py:2312 #, python-format msgid "[selected] %s is updated, returning to App..." msgstr "[selected] %s este actualizat, intoarcere la aplicaţie." -#: FlatCAMApp.py:2632 +#: FlatCAMApp.py:2677 msgid "[ERROR] Could not load defaults file." msgstr "[ERROR] Nu am putut incărca fişierul cu valori default." -#: FlatCAMApp.py:2644 +#: FlatCAMApp.py:2689 msgid "[ERROR] Failed to parse defaults file." msgstr "[ERROR] Parsarea fişierului cu valori default a eșuat." -#: FlatCAMApp.py:2665 FlatCAMApp.py:2668 +#: FlatCAMApp.py:2710 FlatCAMApp.py:2713 msgid "Import FlatCAM Preferences" msgstr "Importa Preferințele FlatCAM" -#: FlatCAMApp.py:2673 +#: FlatCAMApp.py:2718 msgid "[WARNING_NOTCL] FlatCAM preferences import cancelled." msgstr "[WARNING_NOTCL] Importul preferințelor FlatCAM a eșuat." -#: FlatCAMApp.py:2681 FlatCAMApp.py:2728 FlatCAMApp.py:3181 +#: FlatCAMApp.py:2726 FlatCAMApp.py:2773 FlatCAMApp.py:3228 msgid "[ERROR_NOTCL] Could not load defaults file." msgstr "" "[ERROR_NOTCL] Nu a fost posibilă incărcarea fişierului cu valori default." -#: FlatCAMApp.py:2689 FlatCAMApp.py:3190 +#: FlatCAMApp.py:2734 FlatCAMApp.py:3237 msgid "[ERROR_NOTCL] Failed to parse defaults file." msgstr "[ERROR_NOTCL] Parsarea fişierului cu valori default a eșuat." -#: FlatCAMApp.py:2692 +#: FlatCAMApp.py:2737 #, python-format msgid "[success] Imported Defaults from %s" msgstr "[success] Valorile default au fost importate din %s" -#: FlatCAMApp.py:2702 FlatCAMApp.py:2706 +#: FlatCAMApp.py:2747 FlatCAMApp.py:2751 msgid "Export FlatCAM Preferences" msgstr "Exporta Preferințele FlatCAM" -#: FlatCAMApp.py:2712 +#: FlatCAMApp.py:2757 msgid "[WARNING_NOTCL] FlatCAM preferences export cancelled." msgstr "[WARNING_NOTCL] Exportul preferințelor FlatCAM este anulat." -#: FlatCAMApp.py:2747 FlatCAMApp.py:3235 +#: FlatCAMApp.py:2792 FlatCAMApp.py:3282 msgid "[ERROR_NOTCL] Failed to write defaults to file." msgstr "[ERROR_NOTCL] Salvarea valorilor default intr-un fişier a eșuat." -#: FlatCAMApp.py:2799 +#: FlatCAMApp.py:2845 msgid "[ERROR_NOTCL] Failed to open recent files file for writing." msgstr "" "[ERROR_NOTCL] Deschiderea fişierului cu >fişiere recente< pentru a fi salvat " "a eșuat." -#: FlatCAMApp.py:2884 camlib.py:4503 +#: FlatCAMApp.py:2930 camlib.py:4453 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:2885 +#: FlatCAMApp.py:2931 #, 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:2905 +#: FlatCAMApp.py:2951 msgid "Converting units to " msgstr "Se convertesc unitatile la " -#: FlatCAMApp.py:2983 FlatCAMApp.py:2986 FlatCAMApp.py:2989 FlatCAMApp.py:2992 +#: FlatCAMApp.py:3030 FlatCAMApp.py:3033 FlatCAMApp.py:3036 FlatCAMApp.py:3039 #, python-brace-format msgid "" "[selected] {kind} created/selected: {name}{name}" -#: FlatCAMApp.py:3086 +#: FlatCAMApp.py:3133 #, python-brace-format msgid "" "FlatCAM
Version {version} {beta} ({date}) - " @@ -196,35 +196,35 @@ msgstr "" "flatcam/src/Beta/\">aici.
Sectiunea DOWNLOAD este aici.
" -#: FlatCAMApp.py:3239 +#: FlatCAMApp.py:3286 msgid "[success] Defaults saved." msgstr "[success] Valorile default au fost salvate." -#: FlatCAMApp.py:3260 +#: FlatCAMApp.py:3307 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:3269 +#: FlatCAMApp.py:3316 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:3283 +#: FlatCAMApp.py:3330 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:3287 +#: FlatCAMApp.py:3334 msgid "Factory defaults saved." msgstr "Valori default de fabrică au fost salvate." -#: FlatCAMApp.py:3292 flatcamGUI/FlatCAMGUI.py:3088 +#: FlatCAMApp.py:3339 flatcamGUI/FlatCAMGUI.py:3103 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:3297 +#: FlatCAMApp.py:3344 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:3300 FlatCAMApp.py:5659 +#: FlatCAMApp.py:3347 FlatCAMApp.py:5797 msgid "Save changes" msgstr "Salvează modificarile." -#: FlatCAMApp.py:3367 +#: FlatCAMApp.py:3414 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:3408 +#: FlatCAMApp.py:3455 msgid "[ERROR_NOTCL] Failed. Excellon joining works only on Excellon objects." msgstr "" -"[ERROR_NOTCL] Esuat. Fuzionarea Excellon functionează doar cu obiecte de tip " +"[ERROR_NOTCL] Eșuat. Fuzionarea Excellon functionează doar cu obiecte de tip " "Excellon." -#: FlatCAMApp.py:3430 +#: FlatCAMApp.py:3477 msgid "[ERROR_NOTCL] Failed. Gerber joining works only on Gerber objects." msgstr "" -"[ERROR_NOTCL] Esuat. Fuzionarea Gerber functionează doar cu obiecte de tip " +"[ERROR_NOTCL] Eșuat. Fuzionarea Gerber functionează doar cu obiecte de tip " "Gerber ." -#: FlatCAMApp.py:3445 FlatCAMApp.py:3470 +#: FlatCAMApp.py:3492 FlatCAMApp.py:3517 msgid "[ERROR_NOTCL] Failed. Select a Geometry Object and try again." msgstr "" -"[ERROR_NOTCL] Esuat. Selectează un obiect Geometrie și încearcă din nou." +"[ERROR_NOTCL] Eșuat. Selectează un obiect Geometrie și încearcă din nou." -#: FlatCAMApp.py:3449 FlatCAMApp.py:3474 +#: FlatCAMApp.py:3496 FlatCAMApp.py:3521 #, python-format msgid "[ERROR_NOTCL] Expected a FlatCAMGeometry, got %s" msgstr "[ERROR_NOTCL] Se astepta o Geometrie FlatCAM, s-a primit %s" -#: FlatCAMApp.py:3462 +#: FlatCAMApp.py:3509 msgid "[success] A Geometry object was converted to MultiGeo type." msgstr "[success] Un obiect Geometrie a fost convertit la tipul MultiGeo." -#: FlatCAMApp.py:3488 +#: FlatCAMApp.py:3535 msgid "[success] A Geometry object was converted to SingleGeo type." msgstr "[success] Un obiect Geometrie a fost convertit la tipul SingleGeo ." -#: FlatCAMApp.py:3635 FlatCAMApp.py:4444 FlatCAMApp.py:5926 FlatCAMApp.py:5937 -#: FlatCAMApp.py:6123 FlatCAMApp.py:6133 +#: FlatCAMApp.py:3682 FlatCAMApp.py:4495 FlatCAMApp.py:6064 FlatCAMApp.py:6075 +#: FlatCAMApp.py:6312 FlatCAMApp.py:6322 msgid "Ok" msgstr "Ok" -#: FlatCAMApp.py:3676 +#: FlatCAMApp.py:3724 #, python-format msgid "[success] Converted units to %s" msgstr "[success] Conversie unitati la %s" -#: FlatCAMApp.py:3687 +#: FlatCAMApp.py:3735 msgid "[WARNING_NOTCL] Units conversion cancelled." msgstr "[WARNING_NOTCL] Conversia unitatilor este anulata." -#: FlatCAMApp.py:4313 +#: FlatCAMApp.py:4364 msgid "Open file" msgstr "Deschide fişierul ..." -#: FlatCAMApp.py:4344 FlatCAMApp.py:4349 +#: FlatCAMApp.py:4395 FlatCAMApp.py:4400 msgid "Export G-Code ..." msgstr "Exporta G-Code ..." -#: FlatCAMApp.py:4352 +#: FlatCAMApp.py:4403 msgid "[WARNING_NOTCL] Export Code cancelled." msgstr "[WARNING_NOTCL Exportul GCode este anulat." -#: FlatCAMApp.py:4362 +#: FlatCAMApp.py:4413 msgid "[WARNING] No such file or directory" msgstr "[WARNING] Nu exista un aşa fişier sau director" -#: FlatCAMApp.py:4369 +#: FlatCAMApp.py:4420 #, python-format msgid "Saved to: %s" msgstr "Salvat in: %s" -#: FlatCAMApp.py:4432 FlatCAMApp.py:4465 FlatCAMApp.py:4476 FlatCAMApp.py:4487 +#: FlatCAMApp.py:4483 FlatCAMApp.py:4516 FlatCAMApp.py:4527 FlatCAMApp.py:4538 #: 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:4437 FlatCAMApp.py:4470 FlatCAMApp.py:4481 FlatCAMApp.py:4492 -#: flatcamGUI/FlatCAMGUI.py:2983 +#: FlatCAMApp.py:4488 FlatCAMApp.py:4521 FlatCAMApp.py:4532 FlatCAMApp.py:4543 +#: flatcamGUI/FlatCAMGUI.py:2998 msgid "[WARNING_NOTCL] Adding Tool cancelled ..." msgstr "[WARNING_NOTCL] Adaugarea unei unelte anulata ..." -#: FlatCAMApp.py:4440 +#: FlatCAMApp.py:4491 msgid "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." @@ -340,119 +340,128 @@ msgstr "" "Adaugarea de unelte noi functionează doar in modul Avansat.\n" "Pentru aceasta mergi in Preferințe -> General - Activează Modul Avansat." -#: FlatCAMApp.py:4546 +#: FlatCAMApp.py:4604 msgid "Object(s) deleted ..." msgstr "Obiect(ele) șters(e)." -#: FlatCAMApp.py:4550 +#: FlatCAMApp.py:4608 msgid "Failed. No object(s) selected..." -msgstr "Esuat. Nici-un obiect nu este selectat." +msgstr "Eșuat. Nici-un obiect nu este selectat." -#: FlatCAMApp.py:4552 +#: FlatCAMApp.py:4610 msgid "Save the work in Editor and try again ..." msgstr "Salvează continutul din Editor și încearcă din nou." -#: FlatCAMApp.py:4565 +#: FlatCAMApp.py:4623 msgid "Click to set the origin ..." msgstr "Click pentru a seta originea..." -#: FlatCAMApp.py:4577 +#: FlatCAMApp.py:4635 msgid "Jump to ..." msgstr "Sari la ..." -#: FlatCAMApp.py:4578 +#: FlatCAMApp.py:4636 msgid "Enter the coordinates in format X,Y:" msgstr "Introduceți coordonatele in format X,Y:" -#: FlatCAMApp.py:4585 +#: FlatCAMApp.py:4643 msgid "Wrong coordinates. Enter coordinates in format: X,Y" msgstr "Coordonate gresite. Introduceți coordonatele in format X,Y." -#: FlatCAMApp.py:4603 flatcamEditors/FlatCAMGeoEditor.py:3485 -#: flatcamEditors/FlatCAMGrbEditor.py:790 -#: flatcamEditors/FlatCAMGrbEditor.py:885 -#: flatcamEditors/FlatCAMGrbEditor.py:1122 -#: flatcamEditors/FlatCAMGrbEditor.py:1350 -#: flatcamEditors/FlatCAMGrbEditor.py:3318 -#: flatcamEditors/FlatCAMGrbEditor.py:3332 flatcamGUI/FlatCAMGUI.py:2397 -#: flatcamGUI/FlatCAMGUI.py:2409 +#: FlatCAMApp.py:4661 flatcamEditors/FlatCAMExcEditor.py:2285 +#: flatcamEditors/FlatCAMExcEditor.py:2292 +#: flatcamEditors/FlatCAMGeoEditor.py:3555 +#: flatcamEditors/FlatCAMGeoEditor.py:3569 +#: flatcamEditors/FlatCAMGrbEditor.py:1037 +#: flatcamEditors/FlatCAMGrbEditor.py:1138 +#: flatcamEditors/FlatCAMGrbEditor.py:1399 +#: flatcamEditors/FlatCAMGrbEditor.py:1649 +#: flatcamEditors/FlatCAMGrbEditor.py:3784 +#: flatcamEditors/FlatCAMGrbEditor.py:3798 flatcamGUI/FlatCAMGUI.py:2412 +#: flatcamGUI/FlatCAMGUI.py:2424 msgid "[success] Done." msgstr "[success] Executat." -#: FlatCAMApp.py:4767 +#: FlatCAMApp.py:4794 FlatCAMApp.py:4863 +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 msgid "[success] Origin set ..." msgstr "[success] Originea a fost setată ..." -#: FlatCAMApp.py:4786 +#: FlatCAMApp.py:4924 msgid "Preferences" msgstr "Preferințe" -#: FlatCAMApp.py:4806 +#: FlatCAMApp.py:4944 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:4831 +#: FlatCAMApp.py:4969 msgid "[success] Flip on Y axis done." msgstr "[success] Oglindire pe axa Y executată." -#: FlatCAMApp.py:4833 FlatCAMApp.py:4873 -#: flatcamEditors/FlatCAMGeoEditor.py:1354 -#: flatcamEditors/FlatCAMGrbEditor.py:4631 flatcamTools/ToolTransform.py:750 +#: FlatCAMApp.py:4971 FlatCAMApp.py:5011 +#: flatcamEditors/FlatCAMGeoEditor.py:1356 +#: flatcamEditors/FlatCAMGrbEditor.py:5165 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:4846 +#: FlatCAMApp.py:4984 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:4871 +#: FlatCAMApp.py:5009 msgid "[success] Flip on X axis done." msgstr "[success] Oglindirea pe axa X executată." -#: FlatCAMApp.py:4886 +#: FlatCAMApp.py:5024 msgid "[WARNING_NOTCL] No object selected to Rotate." msgstr "[WARNING_NOTCL] Nici-un obiect selectat pentru Rotaţie." -#: FlatCAMApp.py:4889 FlatCAMApp.py:4934 FlatCAMApp.py:4965 +#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 msgid "Transform" msgstr "Transformare" -#: FlatCAMApp.py:4889 FlatCAMApp.py:4934 FlatCAMApp.py:4965 +#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 msgid "Enter the Angle value:" msgstr "Introduceți valoaea Unghiului:" -#: FlatCAMApp.py:4919 +#: FlatCAMApp.py:5057 msgid "[success] Rotation done." msgstr "[success] Rotaţie executată." -#: FlatCAMApp.py:4921 flatcamEditors/FlatCAMGeoEditor.py:1297 -#: flatcamEditors/FlatCAMGrbEditor.py:4574 flatcamTools/ToolTransform.py:678 +#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:1299 +#: flatcamEditors/FlatCAMGrbEditor.py:5096 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:4932 +#: FlatCAMApp.py:5070 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:4953 +#: FlatCAMApp.py:5091 msgid "[success] Skew on X axis done." msgstr "[success] Deformare pe axa X executată." -#: FlatCAMApp.py:4963 +#: FlatCAMApp.py:5101 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:4984 +#: FlatCAMApp.py:5122 msgid "[success] Skew on Y axis done." msgstr "[success] Deformare pe axa Y executată." -#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:936 -#: flatcamEditors/FlatCAMGrbEditor.py:1830 -#: flatcamEditors/FlatCAMGrbEditor.py:4204 flatcamGUI/ObjectUI.py:988 +#: FlatCAMApp.py:5197 flatcamEditors/FlatCAMGeoEditor.py:938 +#: flatcamEditors/FlatCAMGrbEditor.py:2223 +#: flatcamEditors/FlatCAMGrbEditor.py:4687 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 @@ -460,73 +469,73 @@ msgstr "[success] Deformare pe axa Y executată." msgid "Add" msgstr "Adaugă" -#: FlatCAMApp.py:5060 FlatCAMObj.py:3008 -#: flatcamEditors/FlatCAMGrbEditor.py:1835 flatcamGUI/FlatCAMGUI.py:519 -#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1602 -#: flatcamGUI/FlatCAMGUI.py:1934 flatcamGUI/ObjectUI.py:1004 +#: FlatCAMApp.py:5198 FlatCAMObj.py:3302 +#: flatcamEditors/FlatCAMGrbEditor.py:2228 flatcamGUI/FlatCAMGUI.py:532 +#: flatcamGUI/FlatCAMGUI.py:726 flatcamGUI/FlatCAMGUI.py:1616 +#: flatcamGUI/FlatCAMGUI.py:1948 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:5072 +#: FlatCAMApp.py:5210 msgid "New Grid ..." msgstr "Grid nou ..." -#: FlatCAMApp.py:5073 +#: FlatCAMApp.py:5211 msgid "Enter a Grid Value:" msgstr "Introduceti of valoare pt Grid:" -#: FlatCAMApp.py:5081 FlatCAMApp.py:5108 +#: FlatCAMApp.py:5219 FlatCAMApp.py:5246 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:5087 +#: FlatCAMApp.py:5225 msgid "[success] New Grid added ..." msgstr "[success] O noua valoare pt Grila a fost adăugată..." -#: FlatCAMApp.py:5090 +#: FlatCAMApp.py:5228 msgid "[WARNING_NOTCL] Grid already exists ..." msgstr "[WARNING_NOTCL] Grila exista deja." -#: FlatCAMApp.py:5093 +#: FlatCAMApp.py:5231 msgid "[WARNING_NOTCL] Adding New Grid cancelled ..." msgstr "[WARNING_NOTCL] Adaugarea unei valori de Grila a fost anulata ..." -#: FlatCAMApp.py:5115 +#: FlatCAMApp.py:5253 msgid "[ERROR_NOTCL] Grid Value does not exist ..." msgstr "[ERROR_NOTCL] Valoarea Grilei nu exista ..." -#: FlatCAMApp.py:5118 +#: FlatCAMApp.py:5256 msgid "[success] Grid Value deleted ..." msgstr "[success] Valoarea Grila a fost stearsa." -#: FlatCAMApp.py:5121 +#: FlatCAMApp.py:5259 msgid "[WARNING_NOTCL] Delete Grid value cancelled ..." msgstr "[WARNING_NOTCL] Ștergerea unei valori de Grila a fost anulata ..." -#: FlatCAMApp.py:5160 +#: FlatCAMApp.py:5298 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:5164 +#: FlatCAMApp.py:5302 msgid "Name copied on clipboard ..." msgstr "Numele a fost copiat pe Clipboard ..." -#: FlatCAMApp.py:5457 FlatCAMApp.py:5460 FlatCAMApp.py:5463 FlatCAMApp.py:5466 -#: FlatCAMApp.py:5481 FlatCAMApp.py:5484 FlatCAMApp.py:5487 FlatCAMApp.py:5490 -#: FlatCAMApp.py:5530 FlatCAMApp.py:5533 FlatCAMApp.py:5536 FlatCAMApp.py:5539 +#: 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 #: 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:5656 +#: FlatCAMApp.py:5794 msgid "" "There are files/objects opened in FlatCAM.\n" "Creating a New project will delete them.\n" @@ -536,111 +545,111 @@ msgstr "" "Crearea unui nou Proiect le va șterge..\n" "Doriti să Salvati proiectul curentt?" -#: FlatCAMApp.py:5677 +#: FlatCAMApp.py:5815 msgid "[success] New Project created..." msgstr "[success] Un nou Proiect a fost creat..." -#: FlatCAMApp.py:5785 FlatCAMApp.py:5788 flatcamGUI/FlatCAMGUI.py:600 -#: flatcamGUI/FlatCAMGUI.py:1817 +#: FlatCAMApp.py:5923 FlatCAMApp.py:5926 flatcamGUI/FlatCAMGUI.py:613 +#: flatcamGUI/FlatCAMGUI.py:1831 msgid "Open Gerber" msgstr "Încarcă Gerber" -#: FlatCAMApp.py:5793 +#: FlatCAMApp.py:5931 msgid "[WARNING_NOTCL] Open Gerber cancelled." msgstr "[WARNING_NOTCL] Incărcarea unui fişier Gerber este anulata." -#: FlatCAMApp.py:5814 FlatCAMApp.py:5817 flatcamGUI/FlatCAMGUI.py:601 -#: flatcamGUI/FlatCAMGUI.py:1818 +#: FlatCAMApp.py:5952 FlatCAMApp.py:5955 flatcamGUI/FlatCAMGUI.py:614 +#: flatcamGUI/FlatCAMGUI.py:1832 msgid "Open Excellon" msgstr "Încarcă Excellon" -#: FlatCAMApp.py:5822 +#: FlatCAMApp.py:5960 msgid "[WARNING_NOTCL] Open Excellon cancelled." msgstr "[WARNING_NOTCL] Incărcarea unui fişier Excellon este anulata." -#: FlatCAMApp.py:5844 FlatCAMApp.py:5847 +#: FlatCAMApp.py:5982 FlatCAMApp.py:5985 msgid "Open G-Code" msgstr "Încarcă G-Code" -#: FlatCAMApp.py:5852 +#: FlatCAMApp.py:5990 msgid "[WARNING_NOTCL] Open G-Code cancelled." msgstr "[WARNING_NOTCL] Incărcarea unui fişier G-Code este anulata." -#: FlatCAMApp.py:5870 FlatCAMApp.py:5873 +#: FlatCAMApp.py:6008 FlatCAMApp.py:6011 msgid "Open Project" msgstr "Încarcă Project" -#: FlatCAMApp.py:5881 +#: FlatCAMApp.py:6019 msgid "[WARNING_NOTCL] Open Project cancelled." msgstr "[WARNING_NOTCL] Incărcarea unui Proiect a fost anulata." -#: FlatCAMApp.py:5900 FlatCAMApp.py:5903 +#: FlatCAMApp.py:6038 FlatCAMApp.py:6041 msgid "Open Configuration File" msgstr "Încarcă un fişier de Configurare" -#: FlatCAMApp.py:5907 +#: FlatCAMApp.py:6045 msgid "[WARNING_NOTCL Open Config cancelled." msgstr "[WARNING_NOTCL] Incărcarea unui fişier de Configurare este anulata." -#: FlatCAMApp.py:5922 FlatCAMApp.py:6119 FlatCAMApp.py:8206 FlatCAMApp.py:8226 -#: FlatCAMApp.py:8247 FlatCAMApp.py:8269 +#: FlatCAMApp.py:6060 FlatCAMApp.py:6308 FlatCAMApp.py:8519 FlatCAMApp.py:8539 +#: FlatCAMApp.py:8560 FlatCAMApp.py:8582 msgid "[WARNING_NOTCL] No object selected." msgstr "[WARNING_NOTCL] Nici-un obiect selectat." -#: FlatCAMApp.py:5923 FlatCAMApp.py:6120 +#: FlatCAMApp.py:6061 FlatCAMApp.py:6309 msgid "Please Select a Geometry object to export" msgstr "Selectează un obiect Geometrie pentru export" -#: FlatCAMApp.py:5934 +#: FlatCAMApp.py:6072 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:5947 FlatCAMApp.py:5951 +#: FlatCAMApp.py:6085 FlatCAMApp.py:6089 msgid "Export SVG" msgstr "Exporta SVG" -#: FlatCAMApp.py:5956 +#: FlatCAMApp.py:6094 msgid "[WARNING_NOTCL] Export SVG cancelled." msgstr "[WARNING_NOTCL] Exportul SVG este anulat." -#: FlatCAMApp.py:5970 +#: FlatCAMApp.py:6110 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:5976 FlatCAMApp.py:5980 +#: FlatCAMApp.py:6116 FlatCAMApp.py:6120 msgid "Export PNG Image" msgstr "Exporta imagine PNG" -#: FlatCAMApp.py:5985 +#: FlatCAMApp.py:6125 msgid "Export PNG cancelled." msgstr "Exportul imagine PNG este anulat." -#: FlatCAMApp.py:6002 +#: FlatCAMApp.py:6144 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:6007 +#: FlatCAMApp.py:6149 FlatCAMApp.py:6272 msgid "" "[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files..." msgstr "" -"[ERROR_NOTCL] Esuat. Doar obiectele tip Gerber pot fi salvate ca fişiere " +"[ERROR_NOTCL] Eșuat. Doar obiectele tip Gerber pot fi salvate ca fişiere " "Gerber..." -#: FlatCAMApp.py:6019 +#: FlatCAMApp.py:6161 msgid "Save Gerber source file" msgstr "Salvează codul sursa Gerber ca fişier" -#: FlatCAMApp.py:6024 +#: FlatCAMApp.py:6166 msgid "[WARNING_NOTCL] Save Gerber source file cancelled." msgstr "[WARNING_NOTCL] Salvarea codului sursa Gerber este anulata." -#: FlatCAMApp.py:6041 +#: FlatCAMApp.py:6185 msgid "" "[WARNING_NOTCL] No object selected. Please select an Excellon object to " "export." @@ -648,22 +657,22 @@ msgstr "" "[WARNING_NOTCL] Nici-un obiect selectat. Selectează un obiect Excellon " "pentru export." -#: FlatCAMApp.py:6046 FlatCAMApp.py:6085 +#: FlatCAMApp.py:6190 FlatCAMApp.py:6231 msgid "" "[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files..." msgstr "" -"[ERROR_NOTCL] Esuat. Doar obiectele tip Excellon pot fi salvate ca fişiere " +"[ERROR_NOTCL] Eșuat. Doar obiectele tip Excellon pot fi salvate ca fişiere " "Excellon ..." -#: FlatCAMApp.py:6054 FlatCAMApp.py:6058 +#: FlatCAMApp.py:6198 FlatCAMApp.py:6202 msgid "Save Excellon source file" msgstr "Salvează codul sursa Excellon ca fişier" -#: FlatCAMApp.py:6063 +#: FlatCAMApp.py:6207 msgid "[WARNING_NOTCL] Saving Excellon source file cancelled." msgstr "[WARNING_NOTCL] Salvarea codului sursa Excellon este anulata." -#: FlatCAMApp.py:6080 +#: FlatCAMApp.py:6226 msgid "" "[WARNING_NOTCL] No object selected. Please Select an Excellon object to " "export." @@ -671,78 +680,93 @@ msgstr "" "[WARNING_NOTCL] Nici-un obiect selectat. Selectează un obiect Excellon " "pentru export." -#: FlatCAMApp.py:6093 FlatCAMApp.py:6097 +#: FlatCAMApp.py:6239 FlatCAMApp.py:6243 msgid "Export Excellon" msgstr "Exporta Excellon" -#: FlatCAMApp.py:6102 +#: FlatCAMApp.py:6248 msgid "[WARNING_NOTCL] Export Excellon cancelled." msgstr "[WARNING_NOTCL] Exportul Excellon anulat." -#: FlatCAMApp.py:6130 +#: FlatCAMApp.py:6267 +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 +msgid "Export Gerber" +msgstr "Exporta Gerber" + +#: FlatCAMApp.py:6289 +msgid "[WARNING_NOTCL] Export Gerber cancelled." +msgstr "[WARNING_NOTCL] Exportul Gerber este anulat." + +#: FlatCAMApp.py:6319 msgid "[ERROR_NOTCL] Only Geometry objects can be used." msgstr "[ERROR_NOTCL] Doar obiecte tip Geometrie pot fi folosite." -#: FlatCAMApp.py:6144 FlatCAMApp.py:6148 +#: FlatCAMApp.py:6333 FlatCAMApp.py:6337 msgid "Export DXF" msgstr "Exporta DXF" -#: FlatCAMApp.py:6153 +#: FlatCAMApp.py:6342 msgid "[WARNING_NOTCL] Export DXF cancelled." msgstr "[WARNING_NOTCL] Exportul DXF anulat." -#: FlatCAMApp.py:6171 FlatCAMApp.py:6174 +#: FlatCAMApp.py:6362 FlatCAMApp.py:6365 msgid "Import SVG" msgstr "Importa SVG" -#: FlatCAMApp.py:6182 +#: FlatCAMApp.py:6373 msgid "[WARNING_NOTCL] Open SVG cancelled." msgstr "[WARNING_NOTCL] Importul SVG anulat." -#: FlatCAMApp.py:6201 FlatCAMApp.py:6204 +#: FlatCAMApp.py:6392 FlatCAMApp.py:6395 msgid "Import DXF" msgstr "Importa DXF" -#: FlatCAMApp.py:6212 +#: FlatCAMApp.py:6403 msgid "[WARNING_NOTCL] Open DXF cancelled." msgstr "[WARNING_NOTCL] Incărcarea fişier DXF anulata." -#: FlatCAMApp.py:6230 +#: FlatCAMApp.py:6421 #, python-format msgid "%s" msgstr "%s" -#: FlatCAMApp.py:6250 +#: FlatCAMApp.py:6441 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:6257 +#: FlatCAMApp.py:6448 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:6265 +#: FlatCAMApp.py:6456 msgid "Source Editor" msgstr "Editor Cod" -#: FlatCAMApp.py:6275 +#: FlatCAMApp.py:6466 #, python-format msgid "[ERROR]App.on_view_source() -->%s" msgstr "[ERROR]App.on_view_source() -->%s" -#: FlatCAMApp.py:6287 FlatCAMApp.py:7308 FlatCAMObj.py:5266 +#: FlatCAMApp.py:6478 FlatCAMApp.py:7621 FlatCAMObj.py:5573 msgid "Code Editor" msgstr "Editor Cod" -#: FlatCAMApp.py:6299 +#: FlatCAMApp.py:6490 msgid "Script Editor" msgstr "Editor Script." -#: FlatCAMApp.py:6302 +#: FlatCAMApp.py:6493 msgid "" "#\n" "# CREATE A NEW FLATCAM TCL SCRIPT\n" @@ -786,86 +810,99 @@ msgstr "" "#\n" "\n" -#: FlatCAMApp.py:6325 FlatCAMApp.py:6328 +#: FlatCAMApp.py:6516 FlatCAMApp.py:6519 msgid "Open TCL script" msgstr "Încarcă TCL script" -#: FlatCAMApp.py:6336 +#: FlatCAMApp.py:6527 msgid "[WARNING_NOTCL] Open TCL script cancelled." msgstr "[WARNING_NOTCL] Incărcarea TCL script anulata." -#: FlatCAMApp.py:6348 +#: FlatCAMApp.py:6539 #, python-format msgid "[ERROR]App.on_fileopenscript() -->%s" msgstr "[ERROR]App.on_fileopenscript() -->%s" -#: FlatCAMApp.py:6374 FlatCAMApp.py:6377 +#: FlatCAMApp.py:6565 FlatCAMApp.py:6568 msgid "Run TCL script" msgstr "Ruleaza TCL script" -#: FlatCAMApp.py:6385 +#: FlatCAMApp.py:6576 msgid "[WARNING_NOTCL] Run TCL script cancelled." msgstr "[WARNING_NOTCL] Rularea fisierului Script a fost anulata." -#: FlatCAMApp.py:6431 FlatCAMApp.py:6435 +#: FlatCAMApp.py:6622 FlatCAMApp.py:6626 msgid "Save Project As ..." msgstr "Salvează Proiectul ca ..." -#: FlatCAMApp.py:6432 +#: FlatCAMApp.py:6623 #, python-brace-format msgid "{l_save}/Project_{date}" msgstr "{l_save}/Proiect_{date}" -#: FlatCAMApp.py:6440 +#: FlatCAMApp.py:6631 msgid "[WARNING_NOTCL] Save Project cancelled." msgstr "[WARNING_NOTCL] Salvarea Proiect anulata." -#: FlatCAMApp.py:6485 +#: FlatCAMApp.py:6676 msgid "Exporting SVG" msgstr "SVG in curs de export" -#: FlatCAMApp.py:6518 FlatCAMApp.py:6623 FlatCAMApp.py:6737 +#: FlatCAMApp.py:6710 FlatCAMApp.py:6816 FlatCAMApp.py:6931 #, python-format msgid "[success] SVG file exported to %s" msgstr "[success] Fişier SVG exportat in %s" -#: FlatCAMApp.py:6549 FlatCAMApp.py:6669 +#: FlatCAMApp.py:6741 FlatCAMApp.py:6862 #, 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:6626 FlatCAMApp.py:6740 +#: FlatCAMApp.py:6819 FlatCAMApp.py:6934 msgid "Generating Film ... Please wait." msgstr "Filmul se generează ... Aşteaptă!" -#: FlatCAMApp.py:6887 +#: FlatCAMApp.py:7082 #, python-format msgid "[success] Excellon file exported to %s" msgstr "[success] Fişierul Excellon exportat in %s" -#: FlatCAMApp.py:6894 +#: FlatCAMApp.py:7089 msgid "Exporting Excellon" msgstr "Excellon in curs de export" -#: FlatCAMApp.py:6899 FlatCAMApp.py:6906 +#: FlatCAMApp.py:7094 FlatCAMApp.py:7101 msgid "[ERROR_NOTCL] Could not export Excellon file." msgstr "[ERROR_NOTCL] Fişierul Excellon nu a putut fi exportat." -#: FlatCAMApp.py:6945 +#: FlatCAMApp.py:7199 +#, python-format +msgid "[success] Gerber file exported to %s" +msgstr "[success] Fişier Gerber exportat in %s" + +#: FlatCAMApp.py:7206 +msgid "Exporting Gerber" +msgstr "Gerber in curs de export" + +#: FlatCAMApp.py:7211 FlatCAMApp.py:7218 +msgid "[ERROR_NOTCL] Could not export Gerber file." +msgstr "[ERROR_NOTCL] Fişierul Gerber nu a putut fi exportat." + +#: FlatCAMApp.py:7258 #, python-format msgid "[success] DXF file exported to %s" msgstr "[success] Fişierul DXF exportat in %s" -#: FlatCAMApp.py:6951 +#: FlatCAMApp.py:7264 msgid "Exporting DXF" msgstr "DXF in curs de export" -#: FlatCAMApp.py:6956 FlatCAMApp.py:6963 +#: FlatCAMApp.py:7269 FlatCAMApp.py:7276 msgid "[[WARNING_NOTCL]] Could not export DXF file." msgstr "[[WARNING_NOTCL]] Fişierul DXF nu a putut fi exportat." -#: FlatCAMApp.py:6983 FlatCAMApp.py:7025 FlatCAMApp.py:7066 +#: FlatCAMApp.py:7296 FlatCAMApp.py:7338 FlatCAMApp.py:7379 msgid "" "[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and " "Gerber are supported" @@ -873,103 +910,102 @@ msgstr "" "[ERROR_NOTCL] Typul parametrului nu este compatibil. Doar Geometrie is " "Gerber sunt acceptate." -#: FlatCAMApp.py:6993 +#: FlatCAMApp.py:7306 msgid "Importing SVG" msgstr "SVG in curs de ia fi importat" -#: FlatCAMApp.py:7004 FlatCAMApp.py:7046 FlatCAMApp.py:7086 FlatCAMApp.py:7162 -#: FlatCAMApp.py:7229 FlatCAMApp.py:7294 flatcamTools/ToolPDF.py:212 +#: FlatCAMApp.py:7317 FlatCAMApp.py:7359 FlatCAMApp.py:7399 FlatCAMApp.py:7475 +#: FlatCAMApp.py:7542 FlatCAMApp.py:7607 flatcamTools/ToolPDF.py:212 #, python-format msgid "[success] Opened: %s" msgstr "[success] Incărcat: %s" -#: FlatCAMApp.py:7035 +#: FlatCAMApp.py:7348 msgid "Importing DXF" msgstr "DXF in curs de a fi importat" -#: FlatCAMApp.py:7074 +#: FlatCAMApp.py:7387 msgid "Importing Image" msgstr "Imaginea in curs de a fi importata" -#: FlatCAMApp.py:7115 FlatCAMApp.py:7117 +#: FlatCAMApp.py:7428 FlatCAMApp.py:7430 #, python-format msgid "[ERROR_NOTCL] Failed to open file: %s" msgstr "[ERROR_NOTCL] Esec in incărcarea fişierului %s" -#: FlatCAMApp.py:7120 +#: FlatCAMApp.py:7433 #, python-brace-format msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}" msgstr "[ERROR_NOTCL] Esec in parsarea fişierului: {name}. {error}" -#: FlatCAMApp.py:7126 FlatCAMObj.py:3970 -#: flatcamEditors/FlatCAMExcEditor.py:2035 -#: flatcamEditors/FlatCAMGrbEditor.py:3098 +#: FlatCAMApp.py:7439 FlatCAMObj.py:4271 +#: flatcamEditors/FlatCAMExcEditor.py:2041 msgid "[ERROR] An internal error has ocurred. See shell.\n" msgstr "" "[ERROR] A aparut o eroare interna. Verifică in TCL Shell pt mai multe " "detalii.\n" -#: FlatCAMApp.py:7135 +#: FlatCAMApp.py:7448 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:7143 +#: FlatCAMApp.py:7456 msgid "Opening Gerber" msgstr "Gerber in curs de incărcare" -#: FlatCAMApp.py:7153 +#: FlatCAMApp.py:7466 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:7188 flatcamTools/ToolPcbWizard.py:421 +#: FlatCAMApp.py:7501 flatcamTools/ToolPcbWizard.py:421 msgid "[ERROR_NOTCL] This is not Excellon file." msgstr "[ERROR_NOTCL] Acesta nu este un fişier Excellon." -#: FlatCAMApp.py:7191 +#: FlatCAMApp.py:7504 #, python-format msgid "[ERROR_NOTCL] Cannot open file: %s" msgstr "[ERROR_NOTCL] Fişierul %s nu se poate incărca." -#: FlatCAMApp.py:7196 flatcamTools/ToolPcbWizard.py:429 +#: FlatCAMApp.py:7509 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 " "detalii.\n" -#: FlatCAMApp.py:7212 flatcamTools/ToolPDF.py:261 +#: FlatCAMApp.py:7525 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:7215 +#: FlatCAMApp.py:7528 msgid "Opening Excellon." msgstr "Excellon in curs de incărcare" -#: FlatCAMApp.py:7222 +#: FlatCAMApp.py:7535 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:7261 +#: FlatCAMApp.py:7574 #, python-format msgid "[ERROR_NOTCL] Failed to open %s" msgstr "[ERROR_NOTCL] Incărcarea fişierului %s a eșuat." -#: FlatCAMApp.py:7271 +#: FlatCAMApp.py:7584 msgid "[ERROR_NOTCL] This is not GCODE" msgstr "[ERROR_NOTCL] Acest obiect nu este de tip GCode" -#: FlatCAMApp.py:7277 +#: FlatCAMApp.py:7590 msgid "Opening G-Code." msgstr "G-Code in curs de incărcare" -#: FlatCAMApp.py:7285 +#: FlatCAMApp.py:7598 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 " @@ -980,26 +1016,26 @@ msgstr "" "Incercarea de a crea un obiect CNCJob din G-Code a eșuat in timpul " "procesarii." -#: FlatCAMApp.py:7325 +#: FlatCAMApp.py:7638 #, python-format msgid "[ERROR_NOTCL] Failed to open config file: %s" msgstr "[ERROR_NOTCL] Esec in incărcarea fişierului de configurare: %s" -#: FlatCAMApp.py:7350 FlatCAMApp.py:7366 +#: FlatCAMApp.py:7663 FlatCAMApp.py:7679 #, python-format msgid "[ERROR_NOTCL] Failed to open project file: %s" msgstr "[ERROR_NOTCL] Esec in incărcarea fişierului proiect: %s" -#: FlatCAMApp.py:7392 +#: FlatCAMApp.py:7705 #, python-format msgid "[success] Project loaded from: %s" msgstr "[success] Proeictul a fost incărcat din: %s" -#: FlatCAMApp.py:7522 +#: FlatCAMApp.py:7835 msgid "Available commands:\n" msgstr "Comenzi disponibile:\n" -#: FlatCAMApp.py:7524 +#: FlatCAMApp.py:7837 msgid "" "\n" "\n" @@ -1011,23 +1047,23 @@ msgstr "" "Introduceți help pentru utilizare.\n" "Exemplu: help open_gerber" -#: FlatCAMApp.py:7672 +#: FlatCAMApp.py:7985 msgid "Shows list of commands." msgstr "Arata o lista de comenzi." -#: FlatCAMApp.py:7729 +#: FlatCAMApp.py:8042 msgid "[ERROR_NOTCL] Failed to load recent item list." msgstr "[ERROR_NOTCL] Esec in incărcarea listei cu obiecte recente." -#: FlatCAMApp.py:7736 +#: FlatCAMApp.py:8049 msgid "[ERROR_NOTCL] Failed to parse recent item list." msgstr "[ERROR_NOTCL] Esec in parsarea listei cu obiecte recente." -#: FlatCAMApp.py:7797 flatcamGUI/FlatCAMGUI.py:957 +#: FlatCAMApp.py:8110 flatcamGUI/FlatCAMGUI.py:970 msgid "Shortcut Key List" msgstr "Lista cu taste Shortcut" -#: FlatCAMApp.py:7804 +#: FlatCAMApp.py:8117 msgid "" "\n" "

Selected Tab - Choose an Item from " @@ -1124,27 +1160,27 @@ msgstr "" "\n" " " -#: FlatCAMApp.py:7908 +#: FlatCAMApp.py:8221 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:7915 +#: FlatCAMApp.py:8228 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:7925 +#: FlatCAMApp.py:8238 msgid "[success] FlatCAM is up to date!" msgstr "[success] FlatCAM este la ultima versiune!" -#: FlatCAMApp.py:7930 +#: FlatCAMApp.py:8243 msgid "Newer Version Available" msgstr "O nouă versiune este disponibila" -#: FlatCAMApp.py:7931 +#: FlatCAMApp.py:8244 msgid "" "There is a newer version of FlatCAM available for download:\n" "\n" @@ -1152,85 +1188,85 @@ msgstr "" "O nouă versiune de FlatCAM este disponibilă pentru download::\n" "\n" -#: FlatCAMApp.py:7933 +#: FlatCAMApp.py:8246 msgid "info" msgstr "Informaţie" -#: FlatCAMApp.py:7952 +#: FlatCAMApp.py:8265 msgid "[success] All plots disabled." msgstr "[success] Toate afisarile sunt dezactivate." -#: FlatCAMApp.py:7958 +#: FlatCAMApp.py:8271 msgid "[success] All non selected plots disabled." msgstr "[success] Toate afisarile care nu sunt selectate sunt dezactivate." -#: FlatCAMApp.py:7964 +#: FlatCAMApp.py:8277 msgid "[success] All plots enabled." msgstr "[success] Toate afisarile sunt activate." -#: FlatCAMApp.py:8075 +#: FlatCAMApp.py:8388 msgid "Saving FlatCAM Project" msgstr "Proiectul FlatCAM este in curs de salvare" -#: FlatCAMApp.py:8096 FlatCAMApp.py:8127 +#: FlatCAMApp.py:8409 FlatCAMApp.py:8440 #, python-format msgid "[success] Project saved to: %s" msgstr "[success] Proiectul s-a salvat in: %s" -#: FlatCAMApp.py:8114 +#: FlatCAMApp.py:8427 #, 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:8121 +#: FlatCAMApp.py:8434 #, 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:8129 +#: FlatCAMApp.py:8442 #, 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:195 +#: FlatCAMObj.py:201 #, python-brace-format msgid "[success] Name changed from {old} to {new}" msgstr "[success] Numele schimbat din {old} in {new}" -#: FlatCAMObj.py:542 FlatCAMObj.py:1748 FlatCAMObj.py:3013 FlatCAMObj.py:5165 +#: FlatCAMObj.py:548 FlatCAMObj.py:2033 FlatCAMObj.py:3307 FlatCAMObj.py:5470 msgid "Basic" msgstr "Baza" -#: FlatCAMObj.py:554 FlatCAMObj.py:1764 FlatCAMObj.py:3035 FlatCAMObj.py:5171 +#: FlatCAMObj.py:560 FlatCAMObj.py:2049 FlatCAMObj.py:3329 FlatCAMObj.py:5476 msgid "Advanced" msgstr "Avansat" -#: FlatCAMObj.py:909 FlatCAMObj.py:964 +#: FlatCAMObj.py:923 FlatCAMObj.py:978 #, python-format msgid "[success] Isolation geometry created: %s" msgstr "[success] Geometria de izolare creată: %s" -#: FlatCAMObj.py:1133 +#: FlatCAMObj.py:1157 msgid "Plotting Apertures" msgstr "Aperturile sunt in curs de afișare" -#: FlatCAMObj.py:1587 flatcamEditors/FlatCAMExcEditor.py:1327 +#: FlatCAMObj.py:1872 flatcamEditors/FlatCAMExcEditor.py:1332 msgid "Total Drills" msgstr "Nr. Tot. Op. Găurire" -#: FlatCAMObj.py:1613 flatcamEditors/FlatCAMExcEditor.py:1359 +#: FlatCAMObj.py:1898 flatcamEditors/FlatCAMExcEditor.py:1364 msgid "Total Slots" msgstr "Nr. Tot. Sloturi" -#: FlatCAMObj.py:1820 FlatCAMObj.py:3086 FlatCAMObj.py:3393 FlatCAMObj.py:3580 -#: FlatCAMObj.py:3593 FlatCAMObj.py:3710 FlatCAMObj.py:4118 FlatCAMObj.py:4351 -#: FlatCAMObj.py:4757 flatcamEditors/FlatCAMExcEditor.py:1434 +#: 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 #: flatcamTools/ToolCalculators.py:307 flatcamTools/ToolCalculators.py:318 #: flatcamTools/ToolCalculators.py:330 flatcamTools/ToolCalculators.py:345 #: flatcamTools/ToolCalculators.py:358 flatcamTools/ToolCalculators.py:372 @@ -1242,54 +1278,54 @@ msgstr "Nr. Tot. Sloturi" #: flatcamTools/ToolNonCopperClear.py:644 flatcamTools/ToolPaint.py:538 #: flatcamTools/ToolPaint.py:608 flatcamTools/ToolPaint.py:743 #: flatcamTools/ToolPaint.py:840 flatcamTools/ToolPaint.py:995 -#: flatcamTools/ToolPanelize.py:323 flatcamTools/ToolPanelize.py:335 -#: flatcamTools/ToolPanelize.py:348 flatcamTools/ToolPanelize.py:361 -#: flatcamTools/ToolPanelize.py:373 flatcamTools/ToolPanelize.py:384 +#: flatcamTools/ToolPanelize.py:385 flatcamTools/ToolPanelize.py:397 +#: flatcamTools/ToolPanelize.py:410 flatcamTools/ToolPanelize.py:423 +#: flatcamTools/ToolPanelize.py:435 flatcamTools/ToolPanelize.py:446 #: flatcamTools/ToolSolderPaste.py:756 flatcamTools/ToolSolderPaste.py:827 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:2044 FlatCAMObj.py:2135 FlatCAMObj.py:2250 +#: FlatCAMObj.py:2329 FlatCAMObj.py:2420 FlatCAMObj.py:2542 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:2051 +#: FlatCAMObj.py:2336 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:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 msgid "Tool_nr" msgstr "Nr. Unealta" -#: FlatCAMObj.py:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 -#: flatcamEditors/FlatCAMExcEditor.py:781 -#: flatcamEditors/FlatCAMExcEditor.py:1978 flatcamGUI/ObjectUI.py:556 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: flatcamEditors/FlatCAMExcEditor.py:785 +#: flatcamEditors/FlatCAMExcEditor.py:1984 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:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 msgid "Drills_Nr" msgstr "Nr. gaura" -#: FlatCAMObj.py:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 msgid "Slots_Nr" msgstr "Nr. slot" -#: FlatCAMObj.py:2145 +#: FlatCAMObj.py:2430 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:2310 FlatCAMObj.py:4006 FlatCAMObj.py:4217 FlatCAMObj.py:4532 +#: FlatCAMObj.py:2604 FlatCAMObj.py:4307 FlatCAMObj.py:4520 FlatCAMObj.py:4837 msgid "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"z_pdepth\"] or self." "options[\"z_pdepth\"]" @@ -1297,7 +1333,7 @@ msgstr "" "[ERROR_NOTCL] Valoare gresita pt self.defaults[\"z_pdepth\"] sau self." "options[\"z_pdepth\"]" -#: FlatCAMObj.py:2322 FlatCAMObj.py:4018 FlatCAMObj.py:4229 FlatCAMObj.py:4544 +#: FlatCAMObj.py:2616 FlatCAMObj.py:4319 FlatCAMObj.py:4532 FlatCAMObj.py:4849 msgid "" "[ERROR_NOTCL] Wrong value format for self.defaults[\"feedrate_probe\"] or " "self.options[\"feedrate_probe\"]" @@ -1305,12 +1341,12 @@ msgstr "" "[ERROR_NOTCL] Valoare gresita pt self.defaults[\"feedrate_probe\"] sau self." "options[\"feedrate_probe\"]" -#: FlatCAMObj.py:2354 FlatCAMObj.py:4419 FlatCAMObj.py:4424 FlatCAMObj.py:4570 +#: FlatCAMObj.py:2648 FlatCAMObj.py:4724 FlatCAMObj.py:4729 FlatCAMObj.py:4875 msgid "Generating CNC Code" msgstr "CNC Code in curs de generare" -#: FlatCAMObj.py:2380 FlatCAMObj.py:4716 camlib.py:5214 camlib.py:5672 -#: camlib.py:5943 +#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5165 camlib.py:5624 +#: camlib.py:5887 msgid "" "[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " "format (x, y) \n" @@ -1320,58 +1356,58 @@ msgstr "" "să fie in formatul (x, y) \n" "dar are o singură valoare in loc de doua. " -#: FlatCAMObj.py:2728 FlatCAMObj.py:3636 FlatCAMObj.py:3637 FlatCAMObj.py:3646 +#: FlatCAMObj.py:3022 FlatCAMObj.py:3930 FlatCAMObj.py:3931 FlatCAMObj.py:3940 msgid "Iso" msgstr "Izo." -#: FlatCAMObj.py:2728 FlatCAMObj.py:2971 FlatCAMObj.py:3258 +#: FlatCAMObj.py:3022 FlatCAMObj.py:3265 FlatCAMObj.py:3552 msgid "Rough" msgstr "Grosier" -#: FlatCAMObj.py:2728 +#: FlatCAMObj.py:3022 msgid "Finish" msgstr "Finisare" -#: FlatCAMObj.py:3006 flatcamGUI/FlatCAMGUI.py:518 flatcamGUI/FlatCAMGUI.py:711 -#: flatcamGUI/FlatCAMGUI.py:1601 flatcamGUI/FlatCAMGUI.py:1932 -#: flatcamGUI/ObjectUI.py:996 +#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:724 +#: flatcamGUI/FlatCAMGUI.py:1615 flatcamGUI/FlatCAMGUI.py:1946 +#: flatcamGUI/ObjectUI.py:999 msgid "Copy" msgstr "Copiază" -#: FlatCAMObj.py:3228 +#: FlatCAMObj.py:3522 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:3303 +#: FlatCAMObj.py:3597 msgid "[success] Tool added in Tool Table." msgstr "[success] Unealta adăugată in Tabela de Unelte." -#: FlatCAMObj.py:3308 +#: FlatCAMObj.py:3602 msgid "[ERROR_NOTCL] Default Tool added. Wrong value format entered." msgstr "" "[ERROR_NOTCL] Unealta implicita adăugatădar valoarea are un format gresit." -#: FlatCAMObj.py:3338 FlatCAMObj.py:3348 +#: FlatCAMObj.py:3632 FlatCAMObj.py:3642 msgid "[WARNING_NOTCL] Failed. Select a tool to copy." -msgstr "[WARNING_NOTCL] Esuat. Selectează o unealtă pt copiere." +msgstr "[WARNING_NOTCL] Eșuat. Selectează o unealtă pt copiere." -#: FlatCAMObj.py:3377 +#: FlatCAMObj.py:3671 msgid "[success] Tool was copied in Tool Table." msgstr "[success] Unealta a fost copiata in Tabela de Unelte." -#: FlatCAMObj.py:3410 +#: FlatCAMObj.py:3704 msgid "[success] Tool was edited in Tool Table." msgstr "[success] Unealta a fost editata in Tabela de Unelte." -#: FlatCAMObj.py:3441 FlatCAMObj.py:3451 +#: FlatCAMObj.py:3735 FlatCAMObj.py:3745 msgid "[WARNING_NOTCL] Failed. Select a tool to delete." -msgstr "[WARNING_NOTCL] Esuat. Selectează o unealtă pentru ștergere." +msgstr "[WARNING_NOTCL] Eșuat. Selectează o unealtă pentru ștergere." -#: FlatCAMObj.py:3475 +#: FlatCAMObj.py:3769 msgid "[success] Tool was deleted in Tool Table." msgstr "[success] Unealta a fost stearsa din Tabela de Unelte." -#: FlatCAMObj.py:3889 +#: FlatCAMObj.py:4190 #, python-format msgid "" "[WARNING_NOTCL] This Geometry can't be processed because it is %s geometry." @@ -1379,23 +1415,23 @@ msgstr "" "[WARNING_NOTCL] Acest obiect Geometrie nu poate fi procesar decoarece este " "Geometrie %s." -#: FlatCAMObj.py:3906 +#: FlatCAMObj.py:4207 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:3933 +#: FlatCAMObj.py:4234 msgid "[ERROR_NOTCL] Failed. No tool selected in the tool table ..." msgstr "" -"[ERROR_NOTCL] Esuat. Nici-o unealtă nu este selectată in Tabela de Unelte ..." +"[ERROR_NOTCL] Eșuat. Nici-o unealtă nu este selectată in Tabela de Unelte ..." -#: FlatCAMObj.py:3971 +#: FlatCAMObj.py:4272 #, python-format msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" msgstr "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" -#: FlatCAMObj.py:4127 FlatCAMObj.py:4360 +#: FlatCAMObj.py:4428 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,21 +1440,21 @@ msgstr "" "val. nu este oferita.\n" "Adaugă un ofset pt unealtă sau schimbă Tipul Ofset." -#: FlatCAMObj.py:4241 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:4603 FlatCAMObj.py:4613 camlib.py:3436 camlib.py:3445 +#: FlatCAMObj.py:4908 FlatCAMObj.py:4918 camlib.py:3346 camlib.py:3355 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:4651 +#: FlatCAMObj.py:4956 msgid "[success] Geometry Scale done." msgstr "[success] Scalare Geometrie executată." -#: FlatCAMObj.py:4668 camlib.py:3507 +#: FlatCAMObj.py:4973 camlib.py:3425 msgid "" "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " "one value in the Offset field." @@ -1426,29 +1462,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:4688 +#: FlatCAMObj.py:4993 msgid "[success] Geometry Offset done." msgstr "[success] Ofset Geometrie executat." -#: FlatCAMObj.py:5233 FlatCAMObj.py:5238 flatcamTools/ToolSolderPaste.py:1361 +#: FlatCAMObj.py:5538 FlatCAMObj.py:5543 flatcamTools/ToolSolderPaste.py:1361 msgid "Export Machine Code ..." msgstr "Exporta CNC Cod Masina ..." -#: FlatCAMObj.py:5244 flatcamTools/ToolSolderPaste.py:1364 +#: FlatCAMObj.py:5549 flatcamTools/ToolSolderPaste.py:1364 msgid "[WARNING_NOTCL] Export Machine Code cancelled ..." msgstr "[WARNING_NOTCL] Exportul codului masina CNC a fost anulat ..." -#: FlatCAMObj.py:5255 +#: FlatCAMObj.py:5562 #, python-format msgid "[success] Machine Code file saved to: %s" msgstr "[success] Fişierul cu cod CNC este salvat in: %s" -#: FlatCAMObj.py:5277 +#: FlatCAMObj.py:5584 #, python-format msgid "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" msgstr "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" -#: FlatCAMObj.py:5394 +#: FlatCAMObj.py:5701 #, python-format msgid "" "[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " @@ -1457,11 +1493,11 @@ msgstr "" "[WARNING_NOTCL] Acest obiect CNCJob nu poate fi procesar deoarece este un " "obiect CNCJob tip %s." -#: FlatCAMObj.py:5447 +#: FlatCAMObj.py:5754 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:5460 +#: FlatCAMObj.py:5767 msgid "" "[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " "empty." @@ -1469,17 +1505,17 @@ msgstr "" "[ERROR_NOTCL] Anulat. Codul G-Code din Macro-ul Schimbare unealtă este " "activat dar nuc contine nimic." -#: FlatCAMObj.py:5467 +#: FlatCAMObj.py:5774 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:5482 flatcamTools/ToolSolderPaste.py:1390 +#: FlatCAMObj.py:5789 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:5501 FlatCAMObj.py:5513 +#: FlatCAMObj.py:5809 FlatCAMObj.py:5821 msgid "" "[WARNING_NOTCL] The used postprocessor file has to have in it's name: " "'toolchange_custom'" @@ -1487,7 +1523,7 @@ msgstr "" "[WARNING_NOTCL] Postprocesorul folosit trebuie să aibă in numele sau: " "'toolchange_custom'" -#: FlatCAMObj.py:5519 +#: FlatCAMObj.py:5827 msgid "[ERROR] There is no postprocessor file." msgstr "[ERROR] Nu exista nici-un fişier postprocesor." @@ -1506,41 +1542,41 @@ 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:1389 +#: camlib.py:1390 msgid "[success] Object was mirrored ..." msgstr "[success] Obiectul a fost oglindit ..." -#: camlib.py:1391 +#: camlib.py:1392 msgid "[ERROR_NOTCL] Failed to mirror. No object selected" msgstr "[ERROR_NOTCL] Oglindire eșuata. Nici-un obiect nu este selectat ..." -#: camlib.py:1427 +#: camlib.py:1428 msgid "[success] Object was rotated ..." msgstr "[success] Obiectul a fost rotit ..." -#: camlib.py:1429 +#: camlib.py:1430 msgid "[ERROR_NOTCL] Failed to rotate. No object selected" msgstr "[ERROR_NOTCL] Rotaţie eșuata. Nici-un obiect nu este selectat ..." -#: camlib.py:1463 +#: camlib.py:1464 msgid "[success] Object was skewed ..." msgstr "[success] Obiectul a fost deformat ..." -#: camlib.py:1465 +#: camlib.py:1466 msgid "[ERROR_NOTCL] Failed to skew. No object selected" msgstr "[ERROR_NOTCL] Deformare eșuata. Nici-un obiect nu este selectat ..." -#: camlib.py:2741 camlib.py:2847 +#: camlib.py:2728 camlib.py:2813 #, python-format msgid "[WARNING] Coordinates missing, line ignored: %s" msgstr "[WARNING] Coordonatele lipsesc, linia este ignorata: %s" -#: camlib.py:2742 camlib.py:2848 +#: camlib.py:2729 camlib.py:2814 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:2802 +#: camlib.py:2778 #, python-format msgid "" "[ERROR] Region does not have enough points. File will be processed but there " @@ -1549,7 +1585,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:3257 +#: camlib.py:3170 #, python-format msgid "" "[ERROR]Gerber Parser ERROR.\n" @@ -1558,20 +1594,32 @@ msgstr "" "[ERROR] Eroare in parserul Gerber.\n" "%s:" -#: camlib.py:3474 +#: camlib.py:3392 msgid "[success] Gerber Scale done." msgstr "[success] Scalarea Gerber efectuata." -#: camlib.py:3531 +#: camlib.py:3458 msgid "[success] Gerber Offset done." msgstr "[success] Offsetare Gerber efectuata." -#: camlib.py:3925 +#: camlib.py:3512 +msgid "[success] Gerber Mirror done." +msgstr "[success] Oglindirea Gerber efectuata." + +#: camlib.py:3558 +msgid "[success] Gerber Skew done." +msgstr "[success] Deformarea Gerber efectuata." + +#: camlib.py:3596 +msgid "[success] Gerber Rotate done." +msgstr "[success] Rotatia Gerber efectuata." + +#: camlib.py:3875 #, python-format msgid "[ERROR_NOTCL] This is GCODE mark: %s" msgstr "[ERROR_NOTCL] Acesta este un marcaj Gerber: %s" -#: camlib.py:4039 +#: camlib.py:3989 #, python-format msgid "" "[WARNING] No tool diameter info's. See shell.\n" @@ -1587,7 +1635,7 @@ msgstr "" "Userul trebuie să editeze obictul Excellon rezultat si sa ajusteze " "diametrele a.i sa reflecte diametrele reale." -#: camlib.py:4504 +#: camlib.py:4454 #, python-brace-format msgid "" "[ERROR] Excellon Parser error.\n" @@ -1597,7 +1645,7 @@ msgstr "" "Parsare eșuata. Linia {l_nr}: {line}\n" "\n" -#: camlib.py:4581 +#: camlib.py:4531 msgid "" "[WARNING] Excellon.create_geometry() -> a drill location was skipped due of " "not having a tool associated.\n" @@ -1607,12 +1655,12 @@ msgstr "" "deoarece nu are o unealtă asociata.\n" "Verifică codul G-Code rezultat." -#: camlib.py:5123 +#: camlib.py:5074 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "[ERROR] Nu exista un asemenea parametru: %s" -#: camlib.py:5193 +#: camlib.py:5144 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1625,7 +1673,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:5200 camlib.py:5695 camlib.py:5966 +#: camlib.py:5151 camlib.py:5647 camlib.py:5910 #, python-format msgid "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" @@ -1633,15 +1681,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:5429 camlib.py:5526 camlib.py:5584 +#: camlib.py:5380 camlib.py:5477 camlib.py:5535 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "[ERROR_NOTCL] Fişierul Excellon incărcat nu are găuri ..." -#: camlib.py:5531 +#: camlib.py:5482 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "[ERROR_NOTCL] Un tip de optimizare incorrect a fost selectat." -#: camlib.py:5683 camlib.py:5954 +#: camlib.py:5635 camlib.py:5898 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." @@ -1649,7 +1697,7 @@ msgstr "" "[ERROR_NOTCL] Parametrul >Z tăiere< este None sau zero. Cel mai probabil o " "combinaţie nefericita de parametri." -#: camlib.py:5688 camlib.py:5959 +#: camlib.py:5640 camlib.py:5903 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1662,11 +1710,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:5700 camlib.py:5971 +#: camlib.py:5652 camlib.py:5915 msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." msgstr "[ERROR_NOTCL] Parametrul >Z deplasare< este None sau zero." -#: camlib.py:5704 camlib.py:5975 +#: camlib.py:5656 camlib.py:5919 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1680,7 +1728,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:5711 camlib.py:5982 +#: camlib.py:5663 camlib.py:5926 #, python-format msgid "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" @@ -1688,12 +1736,12 @@ msgstr "" "[WARNING] Parametrul >Z deplasare< este zero. Aceasta este periculos, prin " "urmare fişierul %s nu se procesează." -#: camlib.py:5841 +#: camlib.py:5793 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "[ERROR] Se astepta o Geometrie, am primit in schimb %s" -#: camlib.py:5847 +#: camlib.py:5799 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." @@ -1701,7 +1749,7 @@ msgstr "" "[ERROR_NOTCL] Se încearcă generarea unui CNC Job dintr-un obiect Geometrie " "fără atributul solid_geometry." -#: camlib.py:5886 +#: camlib.py:5838 msgid "" "[ERROR_NOTCL] The Tool Offset value is too negative to use for the " "current_geometry.\n" @@ -1711,7 +1759,7 @@ msgstr "" "fi folosita. \n" "Mareste valoarea absoluta și încearcă din nou." -#: camlib.py:6108 +#: camlib.py:6052 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." @@ -1722,31 +1770,31 @@ msgstr "" "[WARNING_NOTCL] Pentru a adăuga o operaţie de găurire mai intai selectează " "un burghiu (unealtă)" -#: flatcamEditors/FlatCAMExcEditor.py:62 flatcamEditors/FlatCAMExcEditor.py:164 -#: flatcamEditors/FlatCAMExcEditor.py:446 -#: flatcamEditors/FlatCAMExcEditor.py:471 -#: flatcamEditors/FlatCAMGrbEditor.py:287 -#: flatcamEditors/FlatCAMGrbEditor.py:1454 -#: flatcamEditors/FlatCAMGrbEditor.py:1478 +#: flatcamEditors/FlatCAMExcEditor.py:62 flatcamEditors/FlatCAMExcEditor.py:165 +#: flatcamEditors/FlatCAMExcEditor.py:447 +#: flatcamEditors/FlatCAMExcEditor.py:472 +#: flatcamEditors/FlatCAMGrbEditor.py:451 +#: flatcamEditors/FlatCAMGrbEditor.py:1759 +#: flatcamEditors/FlatCAMGrbEditor.py:1787 msgid "Click on target location ..." msgstr "Click pe locatia tinta ..." -#: flatcamEditors/FlatCAMExcEditor.py:107 +#: flatcamEditors/FlatCAMExcEditor.py:108 msgid "[success] Done. Drill added." msgstr "[success] Executat. Operaţie de găurire adăugată." -#: flatcamEditors/FlatCAMExcEditor.py:149 +#: flatcamEditors/FlatCAMExcEditor.py:150 msgid "[WARNING_NOTCL] To add an Drill Array first select a tool in Tool Table" msgstr "" "[WARNING_NOTCL] Pentru a adăuga o arie de operațiuni de găurire mai intai " "selectează un burghiu (unealtă)" -#: flatcamEditors/FlatCAMExcEditor.py:181 +#: flatcamEditors/FlatCAMExcEditor.py:182 msgid "Click on the Drill Circular Array Start position" msgstr "Click pe punctul de Start al ariei de operațiuni de găurire" -#: flatcamEditors/FlatCAMExcEditor.py:203 -#: flatcamEditors/FlatCAMGrbEditor.py:330 +#: flatcamEditors/FlatCAMExcEditor.py:204 +#: flatcamEditors/FlatCAMGrbEditor.py:494 msgid "" "[ERROR_NOTCL] The value is not Float. Check for comma instead of dot " "separator." @@ -1754,69 +1802,69 @@ msgstr "" "[ERROR_NOTCL] Valoarea nu este număr Real. Verifică să nu fi folosit virgula " "in loc de punct ca și separator decimal." -#: flatcamEditors/FlatCAMExcEditor.py:206 -#: flatcamEditors/FlatCAMGrbEditor.py:333 +#: 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." -#: flatcamEditors/FlatCAMExcEditor.py:304 +#: flatcamEditors/FlatCAMExcEditor.py:305 msgid "[WARNING_NOTCL] Too many drills for the selected spacing angle." msgstr "" "[WARNING_NOTCL] Prea multe operațiuni de găurire pentru unghiul selectat." -#: flatcamEditors/FlatCAMExcEditor.py:321 +#: flatcamEditors/FlatCAMExcEditor.py:322 msgid "[success] Done. Drill Array added." msgstr "[success] Executat. Aria de operațiuni de găurire a fost adăugată." -#: flatcamEditors/FlatCAMExcEditor.py:332 +#: flatcamEditors/FlatCAMExcEditor.py:333 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:352 +#: flatcamEditors/FlatCAMExcEditor.py:353 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:422 +#: flatcamEditors/FlatCAMExcEditor.py:423 msgid "[success] Done. Drill Resize completed." msgstr "[success] Executat. Redimensionare găurire terminata." -#: flatcamEditors/FlatCAMExcEditor.py:425 +#: flatcamEditors/FlatCAMExcEditor.py:426 msgid "[WARNING_NOTCL] Cancelled. No drills selected for resize ..." msgstr "" "[WARNING_NOTCL] Anulat. Nimic nu este selectat pentruredimensionare ..." -#: flatcamEditors/FlatCAMExcEditor.py:448 -#: flatcamEditors/FlatCAMGrbEditor.py:1456 +#: flatcamEditors/FlatCAMExcEditor.py:449 +#: flatcamEditors/FlatCAMGrbEditor.py:1761 msgid "Click on reference location ..." msgstr "Click pe locatia de referinţă ..." -#: flatcamEditors/FlatCAMExcEditor.py:503 +#: flatcamEditors/FlatCAMExcEditor.py:504 msgid "[success] Done. Drill(s) Move completed." msgstr "[success] Executat. Operatiile de găurire au fost mutate." -#: flatcamEditors/FlatCAMExcEditor.py:556 +#: flatcamEditors/FlatCAMExcEditor.py:557 msgid "[success] Done. Drill(s) copied." msgstr "[success] Executat. Operatiile de găurire au fost copiate." -#: flatcamEditors/FlatCAMExcEditor.py:754 +#: flatcamEditors/FlatCAMExcEditor.py:758 msgid "Excellon Editor" msgstr "Editor Excellon" -#: flatcamEditors/FlatCAMExcEditor.py:761 -#: flatcamEditors/FlatCAMGrbEditor.py:1715 +#: flatcamEditors/FlatCAMExcEditor.py:765 +#: flatcamEditors/FlatCAMGrbEditor.py:2108 msgid "Name:" msgstr "Nume:" -#: flatcamEditors/FlatCAMExcEditor.py:767 flatcamTools/ToolNonCopperClear.py:72 +#: flatcamEditors/FlatCAMExcEditor.py:771 flatcamTools/ToolNonCopperClear.py:72 #: flatcamTools/ToolPaint.py:69 flatcamTools/ToolSolderPaste.py:70 msgid "Tools Table" msgstr "Tabela Unelte" -#: flatcamEditors/FlatCAMExcEditor.py:769 flatcamGUI/ObjectUI.py:538 +#: flatcamEditors/FlatCAMExcEditor.py:773 flatcamGUI/ObjectUI.py:538 msgid "" "Tools in this Excellon object\n" "when are used for drilling." @@ -1824,11 +1872,11 @@ msgstr "" "Burghie (unelte) in acest obiect Excellon\n" "când se face găurire." -#: flatcamEditors/FlatCAMExcEditor.py:789 +#: flatcamEditors/FlatCAMExcEditor.py:793 msgid "Add/Delete Tool" msgstr "Adaugă/Șterge Unealta" -#: flatcamEditors/FlatCAMExcEditor.py:791 +#: flatcamEditors/FlatCAMExcEditor.py:795 msgid "" "Add/Delete a tool to the tool list\n" "for this Excellon object." @@ -1836,19 +1884,19 @@ msgstr "" "Adaugă/Șterge o unealtă la lista de unelte\n" "pentru acest obiect Excellon." -#: flatcamEditors/FlatCAMExcEditor.py:799 flatcamTools/ToolCutOut.py:77 +#: flatcamEditors/FlatCAMExcEditor.py:803 flatcamTools/ToolCutOut.py:77 msgid "Tool Dia:" msgstr "Dia. Unealta:" -#: flatcamEditors/FlatCAMExcEditor.py:801 flatcamGUI/ObjectUI.py:975 +#: flatcamEditors/FlatCAMExcEditor.py:805 flatcamGUI/ObjectUI.py:978 msgid "Diameter for the new tool" msgstr "Diametru pentru noua unealtă (burghiu, freza)" -#: flatcamEditors/FlatCAMExcEditor.py:810 +#: flatcamEditors/FlatCAMExcEditor.py:814 msgid "Add Tool" msgstr "Adaugă Unealta" -#: flatcamEditors/FlatCAMExcEditor.py:812 +#: flatcamEditors/FlatCAMExcEditor.py:816 msgid "" "Add a new tool to the tool list\n" "with the diameter specified above." @@ -1856,11 +1904,11 @@ msgstr "" "Adaugă o unealtă noua la lista de unelte\n" "cu diametrul specificat deasupra." -#: flatcamEditors/FlatCAMExcEditor.py:822 +#: flatcamEditors/FlatCAMExcEditor.py:826 msgid "Delete Tool" msgstr "Șterge Unealta" -#: flatcamEditors/FlatCAMExcEditor.py:824 +#: flatcamEditors/FlatCAMExcEditor.py:828 msgid "" "Delete a tool in the tool list\n" "by selecting a row in the tool table." @@ -1868,41 +1916,41 @@ msgstr "" "Șterge o unealtă in lista de unelte\n" "prin selectarea unei linii in tabela de unelte." -#: flatcamEditors/FlatCAMExcEditor.py:842 +#: flatcamEditors/FlatCAMExcEditor.py:846 msgid "Resize Drill(s)" msgstr "Redimensionare operațiuni de găurire" -#: flatcamEditors/FlatCAMExcEditor.py:844 +#: flatcamEditors/FlatCAMExcEditor.py:848 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:851 +#: flatcamEditors/FlatCAMExcEditor.py:855 msgid "Resize Dia:" msgstr "Redimensionare Dia:" -#: flatcamEditors/FlatCAMExcEditor.py:853 +#: flatcamEditors/FlatCAMExcEditor.py:857 msgid "Diameter to resize to." msgstr "Diametrul la care se face redimensionarea." -#: flatcamEditors/FlatCAMExcEditor.py:861 +#: flatcamEditors/FlatCAMExcEditor.py:865 msgid "Resize" msgstr "Redimensionează" -#: flatcamEditors/FlatCAMExcEditor.py:863 +#: flatcamEditors/FlatCAMExcEditor.py:867 msgid "Resize drill(s)" msgstr "Redimensionează op. de găurire." -#: flatcamEditors/FlatCAMExcEditor.py:885 flatcamGUI/FlatCAMGUI.py:1598 +#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1612 msgid "Add Drill Array" msgstr "Adaugă o arie de op. găurire" -#: flatcamEditors/FlatCAMExcEditor.py:887 +#: flatcamEditors/FlatCAMExcEditor.py:891 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:893 +#: flatcamEditors/FlatCAMExcEditor.py:897 msgid "" "Select the type of drills array to create.\n" "It can be Linear X(Y) or Circular" @@ -1910,33 +1958,33 @@ msgstr "" "Selectează tipul de arii de operațiuni de găurire.\n" "Poate fi Liniar X(Y) sau Circular." -#: flatcamEditors/FlatCAMExcEditor.py:896 -#: flatcamEditors/FlatCAMGrbEditor.py:1948 +#: flatcamEditors/FlatCAMExcEditor.py:900 +#: flatcamEditors/FlatCAMGrbEditor.py:2341 msgid "Linear" msgstr "Liniar" -#: flatcamEditors/FlatCAMExcEditor.py:897 -#: flatcamEditors/FlatCAMGrbEditor.py:1949 +#: flatcamEditors/FlatCAMExcEditor.py:901 +#: flatcamEditors/FlatCAMGrbEditor.py:2342 msgid "Circular" msgstr "Circular" -#: flatcamEditors/FlatCAMExcEditor.py:904 +#: flatcamEditors/FlatCAMExcEditor.py:908 msgid "Nr of drills:" msgstr "Nr. op. găurire" -#: flatcamEditors/FlatCAMExcEditor.py:906 +#: flatcamEditors/FlatCAMExcEditor.py:910 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:923 -#: flatcamEditors/FlatCAMExcEditor.py:968 -#: flatcamEditors/FlatCAMGrbEditor.py:1975 -#: flatcamEditors/FlatCAMGrbEditor.py:2020 +#: flatcamEditors/FlatCAMExcEditor.py:927 +#: flatcamEditors/FlatCAMExcEditor.py:972 +#: flatcamEditors/FlatCAMGrbEditor.py:2368 +#: flatcamEditors/FlatCAMGrbEditor.py:2413 msgid "Direction:" msgstr "Direcţie:" -#: flatcamEditors/FlatCAMExcEditor.py:925 -#: flatcamEditors/FlatCAMGrbEditor.py:1977 +#: flatcamEditors/FlatCAMExcEditor.py:929 +#: flatcamEditors/FlatCAMGrbEditor.py:2370 msgid "" "Direction on which the linear array is oriented:\n" "- 'X' - horizontal axis \n" @@ -1948,27 +1996,27 @@ msgstr "" "- 'Y' - pe axa verticala sau \n" "- 'Unghi' - un unghi particular pentru inclinatia ariei" -#: flatcamEditors/FlatCAMExcEditor.py:938 -#: flatcamEditors/FlatCAMGrbEditor.py:1990 +#: flatcamEditors/FlatCAMExcEditor.py:942 +#: flatcamEditors/FlatCAMGrbEditor.py:2383 msgid "Pitch:" msgstr "Pas:" -#: flatcamEditors/FlatCAMExcEditor.py:940 -#: flatcamEditors/FlatCAMGrbEditor.py:1992 +#: flatcamEditors/FlatCAMExcEditor.py:944 +#: flatcamEditors/FlatCAMGrbEditor.py:2385 msgid "Pitch = Distance between elements of the array." msgstr "Pas = Distanta între elementele ariei." -#: flatcamEditors/FlatCAMExcEditor.py:947 -#: flatcamEditors/FlatCAMExcEditor.py:983 -#: flatcamEditors/FlatCAMGeoEditor.py:664 -#: flatcamEditors/FlatCAMGrbEditor.py:1999 -#: flatcamEditors/FlatCAMGrbEditor.py:2035 -#: flatcamEditors/FlatCAMGrbEditor.py:3931 flatcamTools/ToolTransform.py:68 +#: flatcamEditors/FlatCAMExcEditor.py:951 +#: flatcamEditors/FlatCAMExcEditor.py:987 +#: flatcamEditors/FlatCAMGeoEditor.py:666 +#: flatcamEditors/FlatCAMGrbEditor.py:2392 +#: flatcamEditors/FlatCAMGrbEditor.py:2428 +#: flatcamEditors/FlatCAMGrbEditor.py:4414 flatcamTools/ToolTransform.py:68 msgid "Angle:" msgstr "Unghi:" -#: flatcamEditors/FlatCAMExcEditor.py:949 -#: flatcamEditors/FlatCAMGrbEditor.py:2001 +#: flatcamEditors/FlatCAMExcEditor.py:953 +#: flatcamEditors/FlatCAMGrbEditor.py:2394 msgid "" "Angle at which the linear array is placed.\n" "The precision is of max 2 decimals.\n" @@ -1980,8 +2028,8 @@ msgstr "" "Val minima este: -359.99 grade.\n" "Val maxima este: 360.00 grade." -#: flatcamEditors/FlatCAMExcEditor.py:970 -#: flatcamEditors/FlatCAMGrbEditor.py:2022 +#: flatcamEditors/FlatCAMExcEditor.py:974 +#: flatcamEditors/FlatCAMGrbEditor.py:2415 msgid "" "Direction for circular array.Can be CW = clockwise or CCW = counter " "clockwise." @@ -1989,14 +2037,14 @@ msgstr "" "Directia pentru aria circulara. Poate fi CW = in sensul acelor de ceasornic " "sau CCW = invers acelor de ceasornic" -#: flatcamEditors/FlatCAMExcEditor.py:985 -#: flatcamEditors/FlatCAMGrbEditor.py:2037 +#: flatcamEditors/FlatCAMExcEditor.py:989 +#: flatcamEditors/FlatCAMGrbEditor.py:2430 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:1447 +#: flatcamEditors/FlatCAMExcEditor.py:1452 msgid "" "[WARNING_NOTCL] Tool already in the original or actual tool list.\n" "Save and reedit Excellon if you need to add this tool. " @@ -2005,21 +2053,21 @@ msgstr "" "Salvează și reeditează obiectul Excellon daca ai nevoie să adaugi aceasta " "unealtă." -#: flatcamEditors/FlatCAMExcEditor.py:1456 flatcamGUI/FlatCAMGUI.py:2980 +#: flatcamEditors/FlatCAMExcEditor.py:1461 flatcamGUI/FlatCAMGUI.py:2995 #, 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:1488 +#: flatcamEditors/FlatCAMExcEditor.py:1493 msgid "[WARNING_NOTCL] Select a tool in Tool Table" msgstr "[WARNING_NOTCL] Selectează o unealtă in Tabela de Unelte" -#: flatcamEditors/FlatCAMExcEditor.py:1521 +#: flatcamEditors/FlatCAMExcEditor.py:1526 #, python-brace-format msgid "[success] Deleted tool with dia: {del_dia} {units}" msgstr "[success] Unealta stearsa cu diametrul: {del_dia} {units}" -#: flatcamEditors/FlatCAMExcEditor.py:2032 +#: flatcamEditors/FlatCAMExcEditor.py:2038 msgid "" "[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon " "creation." @@ -2027,39 +2075,39 @@ msgstr "" "[ERROR_NOTCL] Nu exista definitii de unelte in fişier. Se anulează crearea " "de obiect Excellon." -#: flatcamEditors/FlatCAMExcEditor.py:2041 +#: flatcamEditors/FlatCAMExcEditor.py:2047 msgid "Creating Excellon." msgstr "In curs de creere Excellon." -#: flatcamEditors/FlatCAMExcEditor.py:2050 +#: flatcamEditors/FlatCAMExcEditor.py:2056 msgid "[success] Excellon editing finished." msgstr "[success] Editarea Excellon a fost terminata." -#: flatcamEditors/FlatCAMExcEditor.py:2067 +#: flatcamEditors/FlatCAMExcEditor.py:2073 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:2572 +#: flatcamEditors/FlatCAMExcEditor.py:2605 msgid "[success] Done. Drill(s) deleted." msgstr "[success] Executat. Operatiile de găurire șterse." -#: flatcamEditors/FlatCAMExcEditor.py:2642 -#: flatcamEditors/FlatCAMGrbEditor.py:3719 +#: flatcamEditors/FlatCAMExcEditor.py:2675 +#: flatcamEditors/FlatCAMGrbEditor.py:4174 msgid "Click on the circular array Center position" msgstr "Click pe punctul de Centru al ariei circulare." -#: flatcamEditors/FlatCAMGeoEditor.py:78 -#: flatcamEditors/FlatCAMGrbEditor.py:1865 +#: flatcamEditors/FlatCAMGeoEditor.py:80 +#: flatcamEditors/FlatCAMGrbEditor.py:2258 msgid "Buffer distance:" msgstr "Distanta pt bufer:" -#: flatcamEditors/FlatCAMGeoEditor.py:79 -#: flatcamEditors/FlatCAMGrbEditor.py:1866 +#: flatcamEditors/FlatCAMGeoEditor.py:81 +#: flatcamEditors/FlatCAMGrbEditor.py:2259 msgid "Buffer corner:" msgstr "Coltul pt bufer:" -#: flatcamEditors/FlatCAMGeoEditor.py:81 +#: flatcamEditors/FlatCAMGeoEditor.py:83 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded for exterior buffer.\n" @@ -2073,45 +2121,45 @@ msgstr "" " - 'Beveled:' coltul este inlocuit cu o linie care uneste capetele liniilor " "care formează coltul" -#: flatcamEditors/FlatCAMGeoEditor.py:87 -#: flatcamEditors/FlatCAMGrbEditor.py:1874 +#: flatcamEditors/FlatCAMGeoEditor.py:89 +#: flatcamEditors/FlatCAMGrbEditor.py:2267 msgid "Round" msgstr "Rotund" -#: flatcamEditors/FlatCAMGeoEditor.py:88 -#: flatcamEditors/FlatCAMGrbEditor.py:1875 +#: flatcamEditors/FlatCAMGeoEditor.py:90 +#: flatcamEditors/FlatCAMGrbEditor.py:2268 msgid "Square" msgstr "Patrat" -#: flatcamEditors/FlatCAMGeoEditor.py:89 -#: flatcamEditors/FlatCAMGrbEditor.py:1876 +#: flatcamEditors/FlatCAMGeoEditor.py:91 +#: flatcamEditors/FlatCAMGrbEditor.py:2269 msgid "Beveled" msgstr "Beveled" -#: flatcamEditors/FlatCAMGeoEditor.py:96 +#: flatcamEditors/FlatCAMGeoEditor.py:98 msgid "Buffer Interior" msgstr "Bufer interior" -#: flatcamEditors/FlatCAMGeoEditor.py:98 +#: flatcamEditors/FlatCAMGeoEditor.py:100 msgid "Buffer Exterior" msgstr "Bufer Exterior" -#: flatcamEditors/FlatCAMGeoEditor.py:104 +#: flatcamEditors/FlatCAMGeoEditor.py:106 msgid "Full Buffer" msgstr "Bufer complet" -#: flatcamEditors/FlatCAMGeoEditor.py:125 -#: flatcamEditors/FlatCAMGeoEditor.py:2609 +#: flatcamEditors/FlatCAMGeoEditor.py:127 +#: flatcamEditors/FlatCAMGeoEditor.py:2696 msgid "Buffer Tool" msgstr "Unealta Bufer" -#: flatcamEditors/FlatCAMGeoEditor.py:136 -#: flatcamEditors/FlatCAMGeoEditor.py:153 -#: flatcamEditors/FlatCAMGeoEditor.py:170 -#: flatcamEditors/FlatCAMGeoEditor.py:2627 -#: flatcamEditors/FlatCAMGeoEditor.py:2653 -#: flatcamEditors/FlatCAMGeoEditor.py:2679 -#: flatcamEditors/FlatCAMGrbEditor.py:3771 +#: flatcamEditors/FlatCAMGeoEditor.py:138 +#: flatcamEditors/FlatCAMGeoEditor.py:155 +#: flatcamEditors/FlatCAMGeoEditor.py:172 +#: flatcamEditors/FlatCAMGeoEditor.py:2714 +#: flatcamEditors/FlatCAMGeoEditor.py:2740 +#: flatcamEditors/FlatCAMGeoEditor.py:2766 +#: flatcamEditors/FlatCAMGrbEditor.py:4226 msgid "" "[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and " "retry." @@ -2119,21 +2167,21 @@ msgstr "" "[WARNING_NOTCL] Valoarea distantei bufer lipseste sau este intr-un format " "gresit. Adaugă din nou și reîncearcă." -#: flatcamEditors/FlatCAMGeoEditor.py:341 +#: flatcamEditors/FlatCAMGeoEditor.py:343 msgid "Text Tool" msgstr "Unealta Text" -#: flatcamEditors/FlatCAMGeoEditor.py:399 flatcamGUI/FlatCAMGUI.py:792 +#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:805 msgid "Tool" msgstr "Unealta" -#: flatcamEditors/FlatCAMGeoEditor.py:430 flatcamGUI/FlatCAMGUI.py:3996 -#: flatcamGUI/FlatCAMGUI.py:5202 flatcamGUI/FlatCAMGUI.py:5478 -#: flatcamGUI/FlatCAMGUI.py:5618 flatcamGUI/ObjectUI.py:260 +#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4051 +#: flatcamGUI/FlatCAMGUI.py:5448 flatcamGUI/FlatCAMGUI.py:5724 +#: flatcamGUI/FlatCAMGUI.py:5864 flatcamGUI/ObjectUI.py:260 msgid "Tool dia:" msgstr "Dia unealtă:" -#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:5620 +#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5866 msgid "" "Diameter of the tool to\n" "be used in the operation." @@ -2141,13 +2189,13 @@ msgstr "" "Diametrul uneltei care este utilizata in operaţie. \n" "Este și lăţimea de tăiere pentru uneltele cilindrice." -#: flatcamEditors/FlatCAMGeoEditor.py:441 flatcamGUI/FlatCAMGUI.py:5384 -#: flatcamGUI/FlatCAMGUI.py:5629 flatcamTools/ToolNonCopperClear.py:165 +#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5630 +#: flatcamGUI/FlatCAMGUI.py:5875 flatcamTools/ToolNonCopperClear.py:165 #: flatcamTools/ToolPaint.py:160 msgid "Overlap Rate:" msgstr "Rata suprapunere:" -#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamTools/ToolPaint.py:162 +#: flatcamEditors/FlatCAMGeoEditor.py:445 flatcamTools/ToolPaint.py:162 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -2173,14 +2221,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:459 flatcamGUI/FlatCAMGUI.py:5400 -#: flatcamGUI/FlatCAMGUI.py:5486 flatcamGUI/FlatCAMGUI.py:5639 +#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5646 +#: flatcamGUI/FlatCAMGUI.py:5732 flatcamGUI/FlatCAMGUI.py:5885 #: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:181 #: flatcamTools/ToolPaint.py:177 msgid "Margin:" msgstr "Margine:" -#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5641 +#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5887 #: flatcamTools/ToolPaint.py:179 msgid "" "Distance by which to avoid\n" @@ -2191,13 +2239,13 @@ msgstr "" "poligonului care trebuie\n" "să fie >pictat<." -#: flatcamEditors/FlatCAMGeoEditor.py:470 flatcamGUI/FlatCAMGUI.py:5409 -#: flatcamGUI/FlatCAMGUI.py:5650 flatcamTools/ToolNonCopperClear.py:190 +#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5655 +#: flatcamGUI/FlatCAMGUI.py:5896 flatcamTools/ToolNonCopperClear.py:190 #: flatcamTools/ToolPaint.py:188 msgid "Method:" msgstr "Metoda:" -#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5652 +#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5898 msgid "" "Algorithm to paint the polygon:
Standard: Fixed step inwards." "
Seed-based: Outwards from seed." @@ -2205,14 +2253,14 @@ msgstr "" "Algoritm pentru a picta poligonul
Standard: Pas fix spre interior." "
Samanta: Spre exterior pornind de la un punct-samanta." -#: flatcamEditors/FlatCAMGeoEditor.py:485 flatcamGUI/FlatCAMGUI.py:5425 -#: flatcamGUI/FlatCAMGUI.py:5665 flatcamTools/ToolNonCopperClear.py:206 +#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5671 +#: flatcamGUI/FlatCAMGUI.py:5911 flatcamTools/ToolNonCopperClear.py:206 #: flatcamTools/ToolPaint.py:204 msgid "Connect:" msgstr "Conectează:" -#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5427 -#: flatcamGUI/FlatCAMGUI.py:5667 flatcamTools/ToolNonCopperClear.py:208 +#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5673 +#: flatcamGUI/FlatCAMGUI.py:5913 flatcamTools/ToolNonCopperClear.py:208 #: flatcamTools/ToolPaint.py:206 msgid "" "Draw lines between resulting\n" @@ -2222,14 +2270,14 @@ msgstr "" "rezultate pentru a minimiza miscarile\n" "de ridicare a uneltei." -#: flatcamEditors/FlatCAMGeoEditor.py:494 flatcamGUI/FlatCAMGUI.py:5434 -#: flatcamGUI/FlatCAMGUI.py:5675 flatcamTools/ToolNonCopperClear.py:215 +#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5680 +#: flatcamGUI/FlatCAMGUI.py:5921 flatcamTools/ToolNonCopperClear.py:215 #: flatcamTools/ToolPaint.py:213 msgid "Contour:" msgstr "Contur:" -#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5436 -#: flatcamGUI/FlatCAMGUI.py:5677 flatcamTools/ToolNonCopperClear.py:217 +#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5682 +#: flatcamGUI/FlatCAMGUI.py:5923 flatcamTools/ToolNonCopperClear.py:217 #: flatcamTools/ToolPaint.py:215 msgid "" "Cut around the perimeter of the polygon\n" @@ -2238,23 +2286,23 @@ msgstr "" "Taie de-a lungul perimetrului poligonului\n" "pentru a elimina bavurile." -#: flatcamEditors/FlatCAMGeoEditor.py:508 +#: flatcamEditors/FlatCAMGeoEditor.py:510 msgid "Paint" msgstr "Pictează" -#: flatcamEditors/FlatCAMGeoEditor.py:526 flatcamGUI/FlatCAMGUI.py:635 -#: flatcamGUI/FlatCAMGUI.py:1851 flatcamGUI/ObjectUI.py:1308 +#: flatcamEditors/FlatCAMGeoEditor.py:528 flatcamGUI/FlatCAMGUI.py:648 +#: flatcamGUI/FlatCAMGUI.py:1865 flatcamGUI/ObjectUI.py:1314 #: flatcamTools/ToolPaint.py:341 msgid "Paint Tool" msgstr "Unealta Paint" -#: flatcamEditors/FlatCAMGeoEditor.py:562 +#: flatcamEditors/FlatCAMGeoEditor.py:564 msgid "[WARNING_NOTCL] Paint cancelled. No shape selected." msgstr "[WARNING_NOTCL] Operaţie Paint anulata. Nici-o forma selectată." -#: flatcamEditors/FlatCAMGeoEditor.py:573 flatcamTools/ToolCutOut.py:352 -#: flatcamTools/ToolCutOut.py:496 flatcamTools/ToolCutOut.py:616 -#: flatcamTools/ToolCutOut.py:721 flatcamTools/ToolDblSided.py:363 +#: flatcamEditors/FlatCAMGeoEditor.py:575 flatcamTools/ToolCutOut.py:355 +#: flatcamTools/ToolCutOut.py:512 flatcamTools/ToolCutOut.py:651 +#: flatcamTools/ToolCutOut.py:756 flatcamTools/ToolDblSided.py:363 msgid "" "[WARNING_NOTCL] Tool diameter value is missing or wrong format. Add it and " "retry." @@ -2262,14 +2310,14 @@ msgstr "" "[WARNING_NOTCL] Diametrul uneltei lipseste sau este intr-un format " "incompatibil. Adaugă-l și reîncearcă." -#: flatcamEditors/FlatCAMGeoEditor.py:584 +#: flatcamEditors/FlatCAMGeoEditor.py:586 msgid "" "[WARNING_NOTCL] Overlap value is missing or wrong format. Add it and retry." msgstr "" "[WARNING_NOTCL] Valoarea de suprapunere a uneltei lipseste sau este intr-un " "format incompatibil. Adaugă-o și reîncearcă." -#: flatcamEditors/FlatCAMGeoEditor.py:596 +#: flatcamEditors/FlatCAMGeoEditor.py:598 msgid "" "[WARNING_NOTCL] Margin distance value is missing or wrong format. Add it and " "retry." @@ -2277,63 +2325,63 @@ msgstr "" "[WARNING_NOTCL] Valoarea de margine lipseste sau este intr-un format " "incompatibil. Adaugă-o și reîncearcă." -#: flatcamEditors/FlatCAMGeoEditor.py:605 -#: flatcamEditors/FlatCAMGeoEditor.py:2634 -#: flatcamEditors/FlatCAMGeoEditor.py:2660 -#: flatcamEditors/FlatCAMGeoEditor.py:2686 +#: flatcamEditors/FlatCAMGeoEditor.py:607 +#: flatcamEditors/FlatCAMGeoEditor.py:2721 +#: flatcamEditors/FlatCAMGeoEditor.py:2747 +#: flatcamEditors/FlatCAMGeoEditor.py:2773 #: flatcamTools/ToolNonCopperClear.py:813 flatcamTools/ToolProperties.py:104 msgid "Tools" msgstr "Unelte" -#: flatcamEditors/FlatCAMGeoEditor.py:616 -#: flatcamEditors/FlatCAMGeoEditor.py:989 -#: flatcamEditors/FlatCAMGrbEditor.py:3883 -#: flatcamEditors/FlatCAMGrbEditor.py:4267 flatcamGUI/FlatCAMGUI.py:646 -#: flatcamGUI/FlatCAMGUI.py:1864 flatcamTools/ToolTransform.py:398 +#: flatcamEditors/FlatCAMGeoEditor.py:618 +#: flatcamEditors/FlatCAMGeoEditor.py:991 +#: flatcamEditors/FlatCAMGrbEditor.py:4365 +#: flatcamEditors/FlatCAMGrbEditor.py:4750 flatcamGUI/FlatCAMGUI.py:659 +#: flatcamGUI/FlatCAMGUI.py:1878 flatcamTools/ToolTransform.py:398 msgid "Transform Tool" msgstr "Unealta Transformare" -#: flatcamEditors/FlatCAMGeoEditor.py:617 -#: flatcamEditors/FlatCAMGeoEditor.py:678 -#: flatcamEditors/FlatCAMGrbEditor.py:3884 -#: flatcamEditors/FlatCAMGrbEditor.py:3945 flatcamTools/ToolTransform.py:24 +#: flatcamEditors/FlatCAMGeoEditor.py:619 +#: flatcamEditors/FlatCAMGeoEditor.py:680 +#: flatcamEditors/FlatCAMGrbEditor.py:4366 +#: flatcamEditors/FlatCAMGrbEditor.py:4428 flatcamTools/ToolTransform.py:24 #: flatcamTools/ToolTransform.py:82 msgid "Rotate" msgstr "Rotaţie" -#: flatcamEditors/FlatCAMGeoEditor.py:618 -#: flatcamEditors/FlatCAMGrbEditor.py:3885 flatcamTools/ToolTransform.py:25 +#: flatcamEditors/FlatCAMGeoEditor.py:620 +#: flatcamEditors/FlatCAMGrbEditor.py:4367 flatcamTools/ToolTransform.py:25 msgid "Skew/Shear" msgstr "Deformare" -#: flatcamEditors/FlatCAMGeoEditor.py:619 -#: flatcamEditors/FlatCAMGrbEditor.py:1920 -#: flatcamEditors/FlatCAMGrbEditor.py:3886 flatcamGUI/FlatCAMGUI.py:709 -#: flatcamGUI/FlatCAMGUI.py:1930 flatcamGUI/ObjectUI.py:100 +#: flatcamEditors/FlatCAMGeoEditor.py:621 +#: flatcamEditors/FlatCAMGrbEditor.py:2313 +#: flatcamEditors/FlatCAMGrbEditor.py:4368 flatcamGUI/FlatCAMGUI.py:722 +#: flatcamGUI/FlatCAMGUI.py:1944 flatcamGUI/ObjectUI.py:100 #: flatcamTools/ToolTransform.py:26 msgid "Scale" msgstr "Scalare" -#: flatcamEditors/FlatCAMGeoEditor.py:620 -#: flatcamEditors/FlatCAMGrbEditor.py:3887 flatcamTools/ToolTransform.py:27 +#: flatcamEditors/FlatCAMGeoEditor.py:622 +#: flatcamEditors/FlatCAMGrbEditor.py:4369 flatcamTools/ToolTransform.py:27 msgid "Mirror (Flip)" msgstr "Oglindire" -#: flatcamEditors/FlatCAMGeoEditor.py:621 -#: flatcamEditors/FlatCAMGrbEditor.py:3888 flatcamGUI/ObjectUI.py:127 -#: flatcamGUI/ObjectUI.py:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamEditors/FlatCAMGeoEditor.py:623 +#: flatcamEditors/FlatCAMGrbEditor.py:4370 flatcamGUI/ObjectUI.py:127 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 #: flatcamTools/ToolTransform.py:28 msgid "Offset" msgstr "Ofset" -#: flatcamEditors/FlatCAMGeoEditor.py:632 -#: flatcamEditors/FlatCAMGrbEditor.py:3899 +#: flatcamEditors/FlatCAMGeoEditor.py:634 +#: flatcamEditors/FlatCAMGrbEditor.py:4382 #, python-format msgid "Editor %s" msgstr "Editor %s" -#: flatcamEditors/FlatCAMGeoEditor.py:666 -#: flatcamEditors/FlatCAMGrbEditor.py:3933 flatcamTools/ToolTransform.py:70 +#: flatcamEditors/FlatCAMGeoEditor.py:668 +#: flatcamEditors/FlatCAMGrbEditor.py:4416 flatcamTools/ToolTransform.py:70 msgid "" "Angle for Rotation action, in degrees.\n" "Float number between -360 and 359.\n" @@ -2344,8 +2392,8 @@ msgstr "" "Numerele pozitive inseamna o mișcare in sens ace ceasornic.\n" "Numerele negative inseamna o mișcare in sens invers ace ceasornic." -#: flatcamEditors/FlatCAMGeoEditor.py:680 -#: flatcamEditors/FlatCAMGrbEditor.py:3947 +#: flatcamEditors/FlatCAMGeoEditor.py:682 +#: flatcamEditors/FlatCAMGrbEditor.py:4430 msgid "" "Rotate the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2356,15 +2404,15 @@ msgstr "" "formei înconjurătoare care cuprinde\n" "toate formele selectate." -#: flatcamEditors/FlatCAMGeoEditor.py:703 -#: flatcamEditors/FlatCAMGrbEditor.py:3970 flatcamTools/ToolTransform.py:107 +#: flatcamEditors/FlatCAMGeoEditor.py:705 +#: flatcamEditors/FlatCAMGrbEditor.py:4453 flatcamTools/ToolTransform.py:107 msgid "Angle X:" msgstr "Unghi X:" -#: flatcamEditors/FlatCAMGeoEditor.py:705 -#: flatcamEditors/FlatCAMGeoEditor.py:723 -#: flatcamEditors/FlatCAMGrbEditor.py:3972 -#: flatcamEditors/FlatCAMGrbEditor.py:3990 flatcamTools/ToolTransform.py:109 +#: flatcamEditors/FlatCAMGeoEditor.py:707 +#: flatcamEditors/FlatCAMGeoEditor.py:725 +#: flatcamEditors/FlatCAMGrbEditor.py:4455 +#: flatcamEditors/FlatCAMGrbEditor.py:4473 flatcamTools/ToolTransform.py:109 #: flatcamTools/ToolTransform.py:127 msgid "" "Angle for Skew action, in degrees.\n" @@ -2373,15 +2421,15 @@ msgstr "" "Valoarea unghiului de Deformare, in grade.\n" "Ia valori Reale între -360 and 359 grade." -#: flatcamEditors/FlatCAMGeoEditor.py:714 -#: flatcamEditors/FlatCAMGrbEditor.py:3981 flatcamTools/ToolTransform.py:118 +#: flatcamEditors/FlatCAMGeoEditor.py:716 +#: flatcamEditors/FlatCAMGrbEditor.py:4464 flatcamTools/ToolTransform.py:118 msgid "Skew X" msgstr "Deformare X" -#: flatcamEditors/FlatCAMGeoEditor.py:716 -#: flatcamEditors/FlatCAMGeoEditor.py:734 -#: flatcamEditors/FlatCAMGrbEditor.py:3983 -#: flatcamEditors/FlatCAMGrbEditor.py:4001 +#: flatcamEditors/FlatCAMGeoEditor.py:718 +#: flatcamEditors/FlatCAMGeoEditor.py:736 +#: flatcamEditors/FlatCAMGrbEditor.py:4466 +#: flatcamEditors/FlatCAMGrbEditor.py:4484 msgid "" "Skew/shear the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2392,35 +2440,35 @@ msgstr "" "formei înconjurătoare care cuprinde\n" "toate formele selectate." -#: flatcamEditors/FlatCAMGeoEditor.py:721 -#: flatcamEditors/FlatCAMGrbEditor.py:3988 flatcamTools/ToolTransform.py:125 +#: flatcamEditors/FlatCAMGeoEditor.py:723 +#: flatcamEditors/FlatCAMGrbEditor.py:4471 flatcamTools/ToolTransform.py:125 msgid "Angle Y:" msgstr "Unghi Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:732 -#: flatcamEditors/FlatCAMGrbEditor.py:3999 flatcamTools/ToolTransform.py:136 +#: flatcamEditors/FlatCAMGeoEditor.py:734 +#: flatcamEditors/FlatCAMGrbEditor.py:4482 flatcamTools/ToolTransform.py:136 msgid "Skew Y" msgstr "Deformare Y" -#: flatcamEditors/FlatCAMGeoEditor.py:760 -#: flatcamEditors/FlatCAMGrbEditor.py:4027 flatcamTools/ToolTransform.py:164 +#: flatcamEditors/FlatCAMGeoEditor.py:762 +#: flatcamEditors/FlatCAMGrbEditor.py:4510 flatcamTools/ToolTransform.py:164 msgid "Factor X:" msgstr "Factor X:" -#: flatcamEditors/FlatCAMGeoEditor.py:762 -#: flatcamEditors/FlatCAMGrbEditor.py:4029 flatcamTools/ToolTransform.py:166 +#: flatcamEditors/FlatCAMGeoEditor.py:764 +#: flatcamEditors/FlatCAMGrbEditor.py:4512 flatcamTools/ToolTransform.py:166 msgid "Factor for Scale action over X axis." msgstr "Factor pentru scalarea pe axa X" -#: flatcamEditors/FlatCAMGeoEditor.py:770 -#: flatcamEditors/FlatCAMGrbEditor.py:4037 flatcamTools/ToolTransform.py:174 +#: flatcamEditors/FlatCAMGeoEditor.py:772 +#: flatcamEditors/FlatCAMGrbEditor.py:4520 flatcamTools/ToolTransform.py:174 msgid "Scale X" msgstr "Scalează X" -#: flatcamEditors/FlatCAMGeoEditor.py:772 -#: flatcamEditors/FlatCAMGeoEditor.py:789 -#: flatcamEditors/FlatCAMGrbEditor.py:4039 -#: flatcamEditors/FlatCAMGrbEditor.py:4056 +#: flatcamEditors/FlatCAMGeoEditor.py:774 +#: flatcamEditors/FlatCAMGeoEditor.py:791 +#: flatcamEditors/FlatCAMGrbEditor.py:4522 +#: flatcamEditors/FlatCAMGrbEditor.py:4539 msgid "" "Scale the selected shape(s).\n" "The point of reference depends on \n" @@ -2430,29 +2478,29 @@ msgstr "" "Punctul de referinţă depinde de \n" "starea checkbox-ului >Referința scalare<." -#: flatcamEditors/FlatCAMGeoEditor.py:777 -#: flatcamEditors/FlatCAMGrbEditor.py:4044 flatcamTools/ToolTransform.py:181 +#: flatcamEditors/FlatCAMGeoEditor.py:779 +#: flatcamEditors/FlatCAMGrbEditor.py:4527 flatcamTools/ToolTransform.py:181 msgid "Factor Y:" msgstr "Factor Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:779 -#: flatcamEditors/FlatCAMGrbEditor.py:4046 flatcamTools/ToolTransform.py:183 +#: flatcamEditors/FlatCAMGeoEditor.py:781 +#: flatcamEditors/FlatCAMGrbEditor.py:4529 flatcamTools/ToolTransform.py:183 msgid "Factor for Scale action over Y axis." msgstr "Factor pentru scalarea pe axa Y." -#: flatcamEditors/FlatCAMGeoEditor.py:787 -#: flatcamEditors/FlatCAMGrbEditor.py:4054 flatcamTools/ToolTransform.py:191 +#: flatcamEditors/FlatCAMGeoEditor.py:789 +#: flatcamEditors/FlatCAMGrbEditor.py:4537 flatcamTools/ToolTransform.py:191 msgid "Scale Y" msgstr "Scalează Y" -#: flatcamEditors/FlatCAMGeoEditor.py:796 -#: flatcamEditors/FlatCAMGrbEditor.py:4063 flatcamGUI/FlatCAMGUI.py:6024 +#: flatcamEditors/FlatCAMGeoEditor.py:798 +#: flatcamEditors/FlatCAMGrbEditor.py:4546 flatcamGUI/FlatCAMGUI.py:6270 #: flatcamTools/ToolTransform.py:200 msgid "Link" msgstr "Legatura" -#: flatcamEditors/FlatCAMGeoEditor.py:798 -#: flatcamEditors/FlatCAMGrbEditor.py:4065 +#: flatcamEditors/FlatCAMGeoEditor.py:800 +#: flatcamEditors/FlatCAMGrbEditor.py:4548 msgid "" "Scale the selected shape(s)\n" "using the Scale Factor X for both axis." @@ -2460,14 +2508,14 @@ msgstr "" "Scalează formele selectate\n" "folsoind factorul: Factor X pentru ambele axe." -#: flatcamEditors/FlatCAMGeoEditor.py:804 -#: flatcamEditors/FlatCAMGrbEditor.py:4071 flatcamGUI/FlatCAMGUI.py:6032 +#: flatcamEditors/FlatCAMGeoEditor.py:806 +#: flatcamEditors/FlatCAMGrbEditor.py:4554 flatcamGUI/FlatCAMGUI.py:6278 #: flatcamTools/ToolTransform.py:208 msgid "Scale Reference" msgstr "Referința scalare" -#: flatcamEditors/FlatCAMGeoEditor.py:806 -#: flatcamEditors/FlatCAMGrbEditor.py:4073 +#: flatcamEditors/FlatCAMGeoEditor.py:808 +#: flatcamEditors/FlatCAMGrbEditor.py:4556 msgid "" "Scale the selected shape(s)\n" "using the origin reference when checked,\n" @@ -2480,25 +2528,25 @@ msgstr "" "toate formele selectate când nu este\n" "bifat și este originea când este bifat." -#: flatcamEditors/FlatCAMGeoEditor.py:834 -#: flatcamEditors/FlatCAMGrbEditor.py:4102 flatcamTools/ToolTransform.py:238 +#: flatcamEditors/FlatCAMGeoEditor.py:836 +#: flatcamEditors/FlatCAMGrbEditor.py:4585 flatcamTools/ToolTransform.py:238 msgid "Value X:" msgstr "Valoare X:" -#: flatcamEditors/FlatCAMGeoEditor.py:836 -#: flatcamEditors/FlatCAMGrbEditor.py:4104 flatcamTools/ToolTransform.py:240 +#: flatcamEditors/FlatCAMGeoEditor.py:838 +#: flatcamEditors/FlatCAMGrbEditor.py:4587 flatcamTools/ToolTransform.py:240 msgid "Value for Offset action on X axis." msgstr "Valoare pentru deplasarea pe axa X." -#: flatcamEditors/FlatCAMGeoEditor.py:844 -#: flatcamEditors/FlatCAMGrbEditor.py:4112 flatcamTools/ToolTransform.py:248 +#: flatcamEditors/FlatCAMGeoEditor.py:846 +#: flatcamEditors/FlatCAMGrbEditor.py:4595 flatcamTools/ToolTransform.py:248 msgid "Offset X" msgstr "Ofset pe X" -#: flatcamEditors/FlatCAMGeoEditor.py:846 -#: flatcamEditors/FlatCAMGeoEditor.py:864 -#: flatcamEditors/FlatCAMGrbEditor.py:4114 -#: flatcamEditors/FlatCAMGrbEditor.py:4132 +#: flatcamEditors/FlatCAMGeoEditor.py:848 +#: flatcamEditors/FlatCAMGeoEditor.py:866 +#: flatcamEditors/FlatCAMGrbEditor.py:4597 +#: flatcamEditors/FlatCAMGrbEditor.py:4615 msgid "" "Offset the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2509,30 +2557,30 @@ msgstr "" "formei înconjurătoare care cuprinde\n" "toate formele selectate.\n" -#: flatcamEditors/FlatCAMGeoEditor.py:852 -#: flatcamEditors/FlatCAMGrbEditor.py:4120 flatcamTools/ToolTransform.py:255 +#: flatcamEditors/FlatCAMGeoEditor.py:854 +#: flatcamEditors/FlatCAMGrbEditor.py:4603 flatcamTools/ToolTransform.py:255 msgid "Value Y:" msgstr "Valoare Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:854 -#: flatcamEditors/FlatCAMGrbEditor.py:4122 flatcamTools/ToolTransform.py:257 +#: flatcamEditors/FlatCAMGeoEditor.py:856 +#: flatcamEditors/FlatCAMGrbEditor.py:4605 flatcamTools/ToolTransform.py:257 msgid "Value for Offset action on Y axis." msgstr "Valoare pentru deplasarea pe axa Y." -#: flatcamEditors/FlatCAMGeoEditor.py:862 -#: flatcamEditors/FlatCAMGrbEditor.py:4130 flatcamTools/ToolTransform.py:265 +#: flatcamEditors/FlatCAMGeoEditor.py:864 +#: flatcamEditors/FlatCAMGrbEditor.py:4613 flatcamTools/ToolTransform.py:265 msgid "Offset Y" msgstr "Ofset pe Y" -#: flatcamEditors/FlatCAMGeoEditor.py:893 -#: flatcamEditors/FlatCAMGrbEditor.py:4161 flatcamTools/ToolTransform.py:295 +#: flatcamEditors/FlatCAMGeoEditor.py:895 +#: flatcamEditors/FlatCAMGrbEditor.py:4644 flatcamTools/ToolTransform.py:295 msgid "Flip on X" msgstr "Oglindește pe X" -#: flatcamEditors/FlatCAMGeoEditor.py:895 -#: flatcamEditors/FlatCAMGeoEditor.py:903 -#: flatcamEditors/FlatCAMGrbEditor.py:4163 -#: flatcamEditors/FlatCAMGrbEditor.py:4171 +#: flatcamEditors/FlatCAMGeoEditor.py:897 +#: flatcamEditors/FlatCAMGeoEditor.py:905 +#: flatcamEditors/FlatCAMGrbEditor.py:4646 +#: flatcamEditors/FlatCAMGrbEditor.py:4654 msgid "" "Flip the selected shape(s) over the X axis.\n" "Does not create a new shape." @@ -2540,18 +2588,18 @@ msgstr "" "Oglindește formele selectate peste axa X\n" "Nu crează noi forme." -#: flatcamEditors/FlatCAMGeoEditor.py:901 -#: flatcamEditors/FlatCAMGrbEditor.py:4169 flatcamTools/ToolTransform.py:303 +#: flatcamEditors/FlatCAMGeoEditor.py:903 +#: flatcamEditors/FlatCAMGrbEditor.py:4652 flatcamTools/ToolTransform.py:303 msgid "Flip on Y" msgstr "Oglindește pe Y" -#: flatcamEditors/FlatCAMGeoEditor.py:910 -#: flatcamEditors/FlatCAMGrbEditor.py:4178 flatcamTools/ToolTransform.py:312 +#: flatcamEditors/FlatCAMGeoEditor.py:912 +#: flatcamEditors/FlatCAMGrbEditor.py:4661 flatcamTools/ToolTransform.py:312 msgid "Ref Pt" msgstr "Pt ref" -#: flatcamEditors/FlatCAMGeoEditor.py:912 -#: flatcamEditors/FlatCAMGrbEditor.py:4180 +#: flatcamEditors/FlatCAMGeoEditor.py:914 +#: flatcamEditors/FlatCAMGrbEditor.py:4663 msgid "" "Flip the selected shape(s)\n" "around the point in Point Entry Field.\n" @@ -2574,13 +2622,13 @@ msgstr "" "Alternativ se pot introduce manual in formatul (x, y). \n" "La final click pe >Oglindește pe X(Y)<." -#: flatcamEditors/FlatCAMGeoEditor.py:924 -#: flatcamEditors/FlatCAMGrbEditor.py:4192 flatcamTools/ToolTransform.py:325 +#: flatcamEditors/FlatCAMGeoEditor.py:926 +#: flatcamEditors/FlatCAMGrbEditor.py:4675 flatcamTools/ToolTransform.py:325 msgid "Point:" msgstr "Punct:" -#: flatcamEditors/FlatCAMGeoEditor.py:926 -#: flatcamEditors/FlatCAMGrbEditor.py:4194 +#: flatcamEditors/FlatCAMGeoEditor.py:928 +#: flatcamEditors/FlatCAMGrbEditor.py:4677 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" @@ -2590,8 +2638,8 @@ msgstr "" "Valoarea 'x' in (x, y) va fi folosita când se face oglindire pe X\n" "și valoarea 'y' in (x, y) va fi folosita când se face oglindire pe Y." -#: flatcamEditors/FlatCAMGeoEditor.py:938 -#: flatcamEditors/FlatCAMGrbEditor.py:4206 flatcamTools/ToolTransform.py:339 +#: flatcamEditors/FlatCAMGeoEditor.py:940 +#: flatcamEditors/FlatCAMGrbEditor.py:4689 flatcamTools/ToolTransform.py:339 msgid "" "The point coordinates can be captured by\n" "left click on canvas together with pressing\n" @@ -2602,276 +2650,272 @@ msgstr "" "tasta SHIFT.\n" "La final, apasa butonul >Adaugă< pt a le insera." -#: flatcamEditors/FlatCAMGeoEditor.py:1053 -#: flatcamEditors/FlatCAMGrbEditor.py:4331 +#: flatcamEditors/FlatCAMGeoEditor.py:1055 +#: flatcamEditors/FlatCAMGrbEditor.py:4814 msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected." msgstr "[WARNING_NOTCL] Transformare anulata. Nici-o forma nu este selectată." -#: flatcamEditors/FlatCAMGeoEditor.py:1074 -#: flatcamEditors/FlatCAMGrbEditor.py:4351 flatcamTools/ToolTransform.py:468 +#: flatcamEditors/FlatCAMGeoEditor.py:1076 +#: flatcamEditors/FlatCAMGrbEditor.py:4834 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:1111 -#: flatcamEditors/FlatCAMGrbEditor.py:4388 flatcamTools/ToolTransform.py:502 +#: flatcamEditors/FlatCAMGeoEditor.py:1113 +#: flatcamEditors/FlatCAMGrbEditor.py:4877 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:1132 -#: flatcamEditors/FlatCAMGrbEditor.py:4409 flatcamTools/ToolTransform.py:520 +#: flatcamEditors/FlatCAMGeoEditor.py:1134 +#: flatcamEditors/FlatCAMGrbEditor.py:4904 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:1153 -#: flatcamEditors/FlatCAMGrbEditor.py:4430 flatcamTools/ToolTransform.py:538 +#: flatcamEditors/FlatCAMGeoEditor.py:1155 +#: flatcamEditors/FlatCAMGrbEditor.py:4931 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:1190 -#: flatcamEditors/FlatCAMGrbEditor.py:4467 flatcamTools/ToolTransform.py:572 +#: flatcamEditors/FlatCAMGeoEditor.py:1192 +#: flatcamEditors/FlatCAMGrbEditor.py:4972 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:1222 -#: flatcamEditors/FlatCAMGrbEditor.py:4499 flatcamTools/ToolTransform.py:601 +#: flatcamEditors/FlatCAMGeoEditor.py:1224 +#: flatcamEditors/FlatCAMGrbEditor.py:5010 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:1243 -#: flatcamEditors/FlatCAMGrbEditor.py:4520 flatcamTools/ToolTransform.py:619 +#: flatcamEditors/FlatCAMGeoEditor.py:1245 +#: flatcamEditors/FlatCAMGrbEditor.py:5036 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:1261 -#: flatcamEditors/FlatCAMGrbEditor.py:4538 +#: flatcamEditors/FlatCAMGeoEditor.py:1263 +#: flatcamEditors/FlatCAMGrbEditor.py:5059 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:1264 -#: flatcamEditors/FlatCAMGrbEditor.py:4541 flatcamTools/ToolTransform.py:640 +#: flatcamEditors/FlatCAMGeoEditor.py:1266 +#: flatcamEditors/FlatCAMGrbEditor.py:5062 flatcamTools/ToolTransform.py:640 msgid "Appying Rotate" msgstr "Execuţie Rotaţie" -#: flatcamEditors/FlatCAMGeoEditor.py:1292 -#: flatcamEditors/FlatCAMGrbEditor.py:4569 +#: flatcamEditors/FlatCAMGeoEditor.py:1294 +#: flatcamEditors/FlatCAMGrbEditor.py:5093 msgid "[success] Done. Rotate completed." msgstr "[success] Executat. Rotaţie finalizata." -#: flatcamEditors/FlatCAMGeoEditor.py:1308 -#: flatcamEditors/FlatCAMGrbEditor.py:4585 +#: flatcamEditors/FlatCAMGeoEditor.py:1310 +#: flatcamEditors/FlatCAMGrbEditor.py:5112 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:1311 -#: flatcamEditors/FlatCAMGrbEditor.py:4588 flatcamTools/ToolTransform.py:692 +#: flatcamEditors/FlatCAMGeoEditor.py:1313 +#: flatcamEditors/FlatCAMGrbEditor.py:5115 flatcamTools/ToolTransform.py:691 msgid "Applying Flip" msgstr "Execuţie Oglindire" -#: flatcamEditors/FlatCAMGeoEditor.py:1341 -#: flatcamEditors/FlatCAMGrbEditor.py:4618 flatcamTools/ToolTransform.py:735 +#: flatcamEditors/FlatCAMGeoEditor.py:1343 +#: flatcamEditors/FlatCAMGrbEditor.py:5152 flatcamTools/ToolTransform.py:733 msgid "[success] Flip on the Y axis done ..." msgstr "Oglindirea pe axa X efectuata ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1344 -#: flatcamEditors/FlatCAMGrbEditor.py:4621 flatcamTools/ToolTransform.py:745 +#: flatcamEditors/FlatCAMGeoEditor.py:1346 +#: flatcamEditors/FlatCAMGrbEditor.py:5160 flatcamTools/ToolTransform.py:742 msgid "[success] Flip on the X axis done ..." msgstr "Oglindirea pe axa Y efectuata ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1363 -#: flatcamEditors/FlatCAMGrbEditor.py:4640 +#: flatcamEditors/FlatCAMGeoEditor.py:1365 +#: flatcamEditors/FlatCAMGrbEditor.py:5180 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:1366 -#: flatcamEditors/FlatCAMGrbEditor.py:4643 flatcamTools/ToolTransform.py:762 +#: flatcamEditors/FlatCAMGeoEditor.py:1368 +#: flatcamEditors/FlatCAMGrbEditor.py:5183 flatcamTools/ToolTransform.py:760 msgid "Applying Skew" msgstr "Execuţie Deformare" -#: flatcamEditors/FlatCAMGeoEditor.py:1391 -#: flatcamEditors/FlatCAMGrbEditor.py:4668 flatcamTools/ToolTransform.py:793 +#: flatcamEditors/FlatCAMGeoEditor.py:1393 +#: flatcamEditors/FlatCAMGrbEditor.py:5216 flatcamTools/ToolTransform.py:791 #, python-format msgid "[success] Skew on the %s axis done ..." msgstr "[success] Deformarea pe axa %s executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1395 -#: flatcamEditors/FlatCAMGrbEditor.py:4672 flatcamTools/ToolTransform.py:797 +#: flatcamEditors/FlatCAMGeoEditor.py:1397 +#: flatcamEditors/FlatCAMGrbEditor.py:5220 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:1406 -#: flatcamEditors/FlatCAMGrbEditor.py:4683 +#: flatcamEditors/FlatCAMGeoEditor.py:1408 +#: flatcamEditors/FlatCAMGrbEditor.py:5239 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:1409 -#: flatcamEditors/FlatCAMGrbEditor.py:4686 flatcamTools/ToolTransform.py:811 +#: flatcamEditors/FlatCAMGeoEditor.py:1411 +#: flatcamEditors/FlatCAMGrbEditor.py:5242 flatcamTools/ToolTransform.py:809 msgid "Applying Scale" msgstr "Execuţie Scalare" -#: flatcamEditors/FlatCAMGeoEditor.py:1442 -#: flatcamEditors/FlatCAMGrbEditor.py:4719 flatcamTools/ToolTransform.py:849 +#: flatcamEditors/FlatCAMGeoEditor.py:1444 +#: flatcamEditors/FlatCAMGrbEditor.py:5278 flatcamTools/ToolTransform.py:848 #, python-format msgid "[success] Scale on the %s axis done ..." msgstr "[success] Scalarea pe axa %s executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1445 -#: flatcamEditors/FlatCAMGrbEditor.py:4722 flatcamTools/ToolTransform.py:852 +#: flatcamEditors/FlatCAMGeoEditor.py:1447 +#: flatcamEditors/FlatCAMGrbEditor.py:5281 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:1454 -#: flatcamEditors/FlatCAMGrbEditor.py:4731 +#: flatcamEditors/FlatCAMGeoEditor.py:1456 +#: flatcamEditors/FlatCAMGrbEditor.py:5294 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:1457 -#: flatcamEditors/FlatCAMGrbEditor.py:4734 flatcamTools/ToolTransform.py:864 +#: flatcamEditors/FlatCAMGeoEditor.py:1459 +#: flatcamEditors/FlatCAMGrbEditor.py:5297 flatcamTools/ToolTransform.py:861 msgid "Applying Offset" msgstr "Execuţie Ofset" -#: flatcamEditors/FlatCAMGeoEditor.py:1481 -#: flatcamEditors/FlatCAMGrbEditor.py:4758 flatcamTools/ToolTransform.py:894 +#: flatcamEditors/FlatCAMGeoEditor.py:1483 +#: flatcamEditors/FlatCAMGrbEditor.py:5318 flatcamTools/ToolTransform.py:880 #, python-format msgid "[success] Offset on the %s axis done ..." msgstr "[success] Deplasarea pe axa %s executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1485 -#: flatcamEditors/FlatCAMGrbEditor.py:4762 flatcamTools/ToolTransform.py:898 +#: flatcamEditors/FlatCAMGeoEditor.py:1487 +#: flatcamEditors/FlatCAMGrbEditor.py:5322 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:1489 -#: flatcamEditors/FlatCAMGrbEditor.py:4766 +#: flatcamEditors/FlatCAMGeoEditor.py:1491 +#: flatcamEditors/FlatCAMGrbEditor.py:5326 msgid "Rotate ..." msgstr "Rotaţie ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1490 -#: flatcamEditors/FlatCAMGeoEditor.py:1547 -#: flatcamEditors/FlatCAMGeoEditor.py:1564 -#: flatcamEditors/FlatCAMGrbEditor.py:4767 -#: flatcamEditors/FlatCAMGrbEditor.py:4824 -#: flatcamEditors/FlatCAMGrbEditor.py:4841 +#: flatcamEditors/FlatCAMGeoEditor.py:1492 +#: flatcamEditors/FlatCAMGeoEditor.py:1549 +#: flatcamEditors/FlatCAMGeoEditor.py:1566 +#: flatcamEditors/FlatCAMGrbEditor.py:5327 +#: flatcamEditors/FlatCAMGrbEditor.py:5384 +#: flatcamEditors/FlatCAMGrbEditor.py:5401 msgid "Enter an Angle Value (degrees):" msgstr "Introdu o valoare in grade pt Unghi:" -#: flatcamEditors/FlatCAMGeoEditor.py:1499 -#: flatcamEditors/FlatCAMGrbEditor.py:4776 +#: flatcamEditors/FlatCAMGeoEditor.py:1501 +#: flatcamEditors/FlatCAMGrbEditor.py:5336 msgid "[success] Geometry shape rotate done..." msgstr "[success] Rotatia formei geometrice executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1504 -#: flatcamEditors/FlatCAMGrbEditor.py:4781 +#: flatcamEditors/FlatCAMGeoEditor.py:1506 +#: flatcamEditors/FlatCAMGrbEditor.py:5341 msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..." msgstr "[WARNING_NOTCL] Rotatia formei geometrice anulata ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1510 -#: flatcamEditors/FlatCAMGrbEditor.py:4787 +#: flatcamEditors/FlatCAMGeoEditor.py:1512 +#: flatcamEditors/FlatCAMGrbEditor.py:5347 msgid "Offset on X axis ..." msgstr "Ofset pe axa X ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1511 -#: flatcamEditors/FlatCAMGeoEditor.py:1530 -#: flatcamEditors/FlatCAMGrbEditor.py:4788 -#: flatcamEditors/FlatCAMGrbEditor.py:4807 +#: flatcamEditors/FlatCAMGeoEditor.py:1513 +#: flatcamEditors/FlatCAMGeoEditor.py:1532 +#: flatcamEditors/FlatCAMGrbEditor.py:5348 +#: flatcamEditors/FlatCAMGrbEditor.py:5367 #, python-format msgid "Enter a distance Value (%s):" msgstr "Introdu of valoare pt Distanta (%s):" -#: flatcamEditors/FlatCAMGeoEditor.py:1520 -#: flatcamEditors/FlatCAMGrbEditor.py:4797 +#: flatcamEditors/FlatCAMGeoEditor.py:1522 +#: flatcamEditors/FlatCAMGrbEditor.py:5357 msgid "[success] Geometry shape offset on X axis done..." msgstr "[success] Deplasarea formei geometrice pe axa X executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1524 -#: flatcamEditors/FlatCAMGrbEditor.py:4801 +#: flatcamEditors/FlatCAMGeoEditor.py:1526 +#: flatcamEditors/FlatCAMGrbEditor.py:5361 msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..." msgstr "[WARNING_NOTCL] Deplasarea formei geometrice pe axa X anulata ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1529 -#: flatcamEditors/FlatCAMGrbEditor.py:4806 +#: flatcamEditors/FlatCAMGeoEditor.py:1531 +#: flatcamEditors/FlatCAMGrbEditor.py:5366 msgid "Offset on Y axis ..." msgstr "Ofset pe axa Y ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1539 -#: flatcamEditors/FlatCAMGrbEditor.py:4816 +#: flatcamEditors/FlatCAMGeoEditor.py:1541 +#: flatcamEditors/FlatCAMGrbEditor.py:5376 msgid "[success] Geometry shape offset on Y axis done..." msgstr "[success] Deplasarea formei geometrice pe axa Y executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1543 -#: flatcamEditors/FlatCAMGrbEditor.py:4820 +#: flatcamEditors/FlatCAMGeoEditor.py:1545 +#: flatcamEditors/FlatCAMGrbEditor.py:5380 msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..." msgstr "[WARNING_NOTCL] Deplasarea formei geometrice pe axa Y anulata ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1546 -#: flatcamEditors/FlatCAMGrbEditor.py:4823 +#: flatcamEditors/FlatCAMGeoEditor.py:1548 +#: flatcamEditors/FlatCAMGrbEditor.py:5383 msgid "Skew on X axis ..." msgstr "Deformare pe axa X ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1556 -#: flatcamEditors/FlatCAMGrbEditor.py:4833 +#: flatcamEditors/FlatCAMGeoEditor.py:1558 +#: flatcamEditors/FlatCAMGrbEditor.py:5393 msgid "[success] Geometry shape skew on X axis done..." msgstr "[success] Deformarea formei geometrice pe axa X executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1560 -#: flatcamEditors/FlatCAMGrbEditor.py:4837 +#: flatcamEditors/FlatCAMGeoEditor.py:1562 +#: flatcamEditors/FlatCAMGrbEditor.py:5397 msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..." msgstr "[WARNING_NOTCL] Deformarea formei geometrice pe axa X anulata ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1563 -#: flatcamEditors/FlatCAMGrbEditor.py:4840 +#: flatcamEditors/FlatCAMGeoEditor.py:1565 +#: flatcamEditors/FlatCAMGrbEditor.py:5400 msgid "Skew on Y axis ..." msgstr "Deformare pe axa Y ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1573 -#: flatcamEditors/FlatCAMGrbEditor.py:4850 +#: flatcamEditors/FlatCAMGeoEditor.py:1575 +#: flatcamEditors/FlatCAMGrbEditor.py:5410 msgid "[success] Geometry shape skew on Y axis done..." msgstr "[success] Deformarea formei geometrice pe axa Y executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1577 -#: flatcamEditors/FlatCAMGrbEditor.py:4854 +#: flatcamEditors/FlatCAMGeoEditor.py:1579 +#: flatcamEditors/FlatCAMGrbEditor.py:5414 msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..." msgstr "[success] Deformarea formei geometrice pe axa Y executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1942 #: flatcamEditors/FlatCAMGeoEditor.py:1943 #: flatcamEditors/FlatCAMGeoEditor.py:1994 -#: flatcamEditors/FlatCAMGeoEditor.py:1995 -#: flatcamEditors/FlatCAMGrbEditor.py:1081 -#: flatcamEditors/FlatCAMGrbEditor.py:1082 -#: flatcamEditors/FlatCAMGrbEditor.py:1142 -#: flatcamEditors/FlatCAMGrbEditor.py:1143 +#: flatcamEditors/FlatCAMGrbEditor.py:1351 +#: flatcamEditors/FlatCAMGrbEditor.py:1420 msgid "Click on Center point ..." msgstr "Click pe punctul de Centru ..." #: flatcamEditors/FlatCAMGeoEditor.py:1950 -#: flatcamEditors/FlatCAMGrbEditor.py:1090 +#: flatcamEditors/FlatCAMGrbEditor.py:1359 msgid "Click on Perimeter point to complete ..." msgstr "Click pe un punct aflat pe Circumferintă pentru terminare ..." @@ -2879,78 +2923,77 @@ msgstr "Click pe un punct aflat pe Circumferintă pentru terminare ..." msgid "[success] Done. Adding Circle completed." msgstr "[success] Executat. Adaugarea unei forme Cerc terminata." -#: flatcamEditors/FlatCAMGeoEditor.py:2015 -#: flatcamEditors/FlatCAMGrbEditor.py:1168 +#: flatcamEditors/FlatCAMGeoEditor.py:2014 +#: flatcamEditors/FlatCAMGrbEditor.py:1445 msgid "Click on Start point ..." msgstr "Click pe punctul de Start ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2017 -#: flatcamEditors/FlatCAMGrbEditor.py:1170 +#: flatcamEditors/FlatCAMGeoEditor.py:2016 +#: flatcamEditors/FlatCAMGrbEditor.py:1447 msgid "Click on Point3 ..." msgstr "Click pe Punctul3 ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2019 -#: flatcamEditors/FlatCAMGrbEditor.py:1172 +#: flatcamEditors/FlatCAMGeoEditor.py:2018 +#: flatcamEditors/FlatCAMGrbEditor.py:1449 msgid "Click on Stop point ..." msgstr "Click pe punctulde Stop ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2024 -#: flatcamEditors/FlatCAMGrbEditor.py:1177 +#: flatcamEditors/FlatCAMGeoEditor.py:2023 +#: flatcamEditors/FlatCAMGrbEditor.py:1454 msgid "Click on Stop point to complete ..." msgstr "Click pe punctul de Stop pentru terminare ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2026 -#: flatcamEditors/FlatCAMGrbEditor.py:1179 +#: flatcamEditors/FlatCAMGeoEditor.py:2025 +#: flatcamEditors/FlatCAMGrbEditor.py:1456 msgid "Click on Point2 to complete ..." msgstr "Click pe Punctul2 pentru terminare ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2028 -#: flatcamEditors/FlatCAMGrbEditor.py:1181 +#: flatcamEditors/FlatCAMGeoEditor.py:2027 +#: flatcamEditors/FlatCAMGrbEditor.py:1458 msgid "Click on Center point to complete ..." msgstr "Click pe punctul de Centru pentru terminare ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2040 -#: flatcamEditors/FlatCAMGrbEditor.py:1193 +#: flatcamEditors/FlatCAMGeoEditor.py:2039 +#: flatcamEditors/FlatCAMGrbEditor.py:1470 #, python-format msgid "Direction: %s" msgstr "Direcţie: %s" -#: flatcamEditors/FlatCAMGeoEditor.py:2050 -#: flatcamEditors/FlatCAMGrbEditor.py:1203 +#: flatcamEditors/FlatCAMGeoEditor.py:2049 +#: flatcamEditors/FlatCAMGrbEditor.py:1480 msgid "Mode: Start -> Stop -> Center. Click on Start point ..." msgstr "Mod: Start -> Stop -> Centru. Click pe punctul de Start ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2053 -#: flatcamEditors/FlatCAMGrbEditor.py:1206 +#: flatcamEditors/FlatCAMGeoEditor.py:2052 +#: flatcamEditors/FlatCAMGrbEditor.py:1483 msgid "Mode: Point1 -> Point3 -> Point2. Click on Point1 ..." msgstr "Mod: Point1 -> Point3 -> Point2. Click pe Punctul1 ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2056 -#: flatcamEditors/FlatCAMGrbEditor.py:1209 +#: flatcamEditors/FlatCAMGeoEditor.py:2055 +#: flatcamEditors/FlatCAMGrbEditor.py:1486 msgid "Mode: Center -> Start -> Stop. Click on Center point ..." msgstr "Mod: Center -> Start -> Stop. Click pe punctul de Centru ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2194 +#: flatcamEditors/FlatCAMGeoEditor.py:2193 msgid "[success] Done. Arc completed." msgstr "[success] Executat. Adaugarea unei forme Arc terminata." -#: flatcamEditors/FlatCAMGeoEditor.py:2213 +#: flatcamEditors/FlatCAMGeoEditor.py:2212 +#: flatcamEditors/FlatCAMGeoEditor.py:2265 +#: flatcamEditors/FlatCAMGeoEditor.py:2640 msgid "Click on 1st corner ..." msgstr "Click pe primul colt ..." +#: flatcamEditors/FlatCAMGeoEditor.py:2218 +msgid "Click on opposite corner to complete ..." +msgstr "Click pe punctul opus pentru terminare ..." + #: flatcamEditors/FlatCAMGeoEditor.py:2246 msgid "[success] Done. Rectangle completed." msgstr "[success] Executat. Rotaţie finalizata." -#: flatcamEditors/FlatCAMGeoEditor.py:2265 -#: flatcamEditors/FlatCAMGrbEditor.py:627 -msgid "Click on 1st point ..." -msgstr "Click pe primul punct ..." - #: flatcamEditors/FlatCAMGeoEditor.py:2272 -#: flatcamEditors/FlatCAMGrbEditor.py:637 -#: flatcamEditors/FlatCAMGrbEditor.py:904 -msgid "Click on next Point or click Right mouse button to complete ..." +msgid "Click on next Point or click right mouse button to complete ..." msgstr "" "Click pe punctul următor sau click buton dreapta al mousului pentru " "terminare ..." @@ -2961,8 +3004,8 @@ msgstr "[success] Executat. Adaugarea unei forme Poligon terminata." #: flatcamEditors/FlatCAMGeoEditor.py:2310 #: flatcamEditors/FlatCAMGeoEditor.py:2356 -#: flatcamEditors/FlatCAMGrbEditor.py:808 -#: flatcamEditors/FlatCAMGrbEditor.py:981 +#: flatcamEditors/FlatCAMGrbEditor.py:1055 +#: flatcamEditors/FlatCAMGrbEditor.py:1249 msgid "Backtracked one point ..." msgstr "Revenit la penultimul Punct ..." @@ -2970,32 +3013,30 @@ msgstr "Revenit la penultimul Punct ..." msgid "[success] Done. Path completed." msgstr "[success] Executata. Adaugarea unei forme tip Cale terminata." -#: flatcamEditors/FlatCAMGeoEditor.py:2450 -#: flatcamEditors/FlatCAMGeoEditor.py:3611 -msgid "[WARNING_NOTCL] Move cancelled. No shape selected." -msgstr "[WARNING_NOTCL] Mutare anulata. Nici-o forma nu este selectată." +#: flatcamEditors/FlatCAMGeoEditor.py:2461 +msgid "[WARNING_NOTCL] MOVE: No shape selected. Select a shape to move ..." +msgstr "" +"[WARNING_NOTCL] MUTARE: Nici-o forma nu este selectată. Selectează o forma " +"pentru a putea face deplasare!" -#: flatcamEditors/FlatCAMGeoEditor.py:2454 -msgid "Click on reference point." -msgstr "Click pe punctul de referinţă." +#: flatcamEditors/FlatCAMGeoEditor.py:2463 +#: flatcamEditors/FlatCAMGeoEditor.py:2475 +msgid " MOVE: Click on reference point ..." +msgstr "MUTARE: Click pe punctul de referinţă ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2457 -msgid "Click on destination point." -msgstr "Click pe punctul de Destinaţie." +#: flatcamEditors/FlatCAMGeoEditor.py:2466 +msgid " Click on destination point ..." +msgstr " Click pe punctul de Destinaţie ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2488 +#: flatcamEditors/FlatCAMGeoEditor.py:2500 msgid "[success] Done. Geometry(s) Move completed." msgstr "[success] Executat. Mutarea Geometriilor terminata." -#: flatcamEditors/FlatCAMGeoEditor.py:2533 +#: flatcamEditors/FlatCAMGeoEditor.py:2620 msgid "[success] Done. Geometry(s) Copy completed." msgstr "[success] Executat. Copierea Geometriilor terminata." -#: flatcamEditors/FlatCAMGeoEditor.py:2553 -msgid "Click on the Destination point..." -msgstr "Click pe punctul de Destinaţie ..." - -#: flatcamEditors/FlatCAMGeoEditor.py:2567 +#: flatcamEditors/FlatCAMGeoEditor.py:2654 #, python-format msgid "" "[ERROR]Font not supported. Only Regular, Bold, Italic and BoldItalic are " @@ -3004,65 +3045,65 @@ msgstr "" "[ERROR] Fontul nu este compatibil. Doar cele tip: Regular, Bold, Italic și " "BoldItalic sunt acceptate. Eroarea:: %s" -#: flatcamEditors/FlatCAMGeoEditor.py:2577 +#: flatcamEditors/FlatCAMGeoEditor.py:2664 msgid "[success] Done. Adding Text completed." msgstr "[success] Executat. Adaugarea de Text terminata." -#: flatcamEditors/FlatCAMGeoEditor.py:2605 +#: flatcamEditors/FlatCAMGeoEditor.py:2692 msgid "Create buffer geometry ..." msgstr "Crează o geometrie de tipe Bufer ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2616 -#: flatcamEditors/FlatCAMGeoEditor.py:2642 -#: flatcamEditors/FlatCAMGeoEditor.py:2668 +#: flatcamEditors/FlatCAMGeoEditor.py:2703 +#: flatcamEditors/FlatCAMGeoEditor.py:2729 +#: flatcamEditors/FlatCAMGeoEditor.py:2755 msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected." msgstr "" "[WARNING_NOTCL] Crearea de geometrie Bufer anulata. Nici-o forma geometrică " "nu este selectată." -#: flatcamEditors/FlatCAMGeoEditor.py:2638 -#: flatcamEditors/FlatCAMGrbEditor.py:3807 +#: flatcamEditors/FlatCAMGeoEditor.py:2725 +#: flatcamEditors/FlatCAMGrbEditor.py:4276 msgid "[success] Done. Buffer Tool completed." msgstr "[success] Executat. Unealta Bufer terminat." -#: flatcamEditors/FlatCAMGeoEditor.py:2664 +#: flatcamEditors/FlatCAMGeoEditor.py:2751 msgid "[success] Done. Buffer Int Tool completed." msgstr "[success] Executat. Unealta Bufer Intern terminat." -#: flatcamEditors/FlatCAMGeoEditor.py:2690 +#: flatcamEditors/FlatCAMGeoEditor.py:2777 msgid "[success] Done. Buffer Ext Tool completed." msgstr "[success] Executat. Unealta Bufer Extern terminat." -#: flatcamEditors/FlatCAMGeoEditor.py:2723 +#: flatcamEditors/FlatCAMGeoEditor.py:2810 msgid "Create Paint geometry ..." msgstr "Crează o geometrie Paint ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2737 -#: flatcamEditors/FlatCAMGrbEditor.py:1667 +#: flatcamEditors/FlatCAMGeoEditor.py:2824 +#: flatcamEditors/FlatCAMGrbEditor.py:2059 msgid "Shape transformations ..." msgstr "Transformări de forme geometrice ..." -#: flatcamEditors/FlatCAMGeoEditor.py:3237 +#: flatcamEditors/FlatCAMGeoEditor.py:3327 #, python-brace-format msgid "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" msgstr "" "[WARNING] Se editeaza un obiect tip Geometrie MultiGeo , unealta: {tool} cu " "diametrul: {dia}" -#: flatcamEditors/FlatCAMGeoEditor.py:3618 +#: flatcamEditors/FlatCAMGeoEditor.py:3703 msgid "[WARNING_NOTCL] Copy cancelled. No shape selected." msgstr "" "[WARNING_NOTCL] Copiere anulata. Nici-o forma geometrică nu este selectată." -#: flatcamEditors/FlatCAMGeoEditor.py:3625 flatcamGUI/FlatCAMGUI.py:2710 -#: flatcamGUI/FlatCAMGUI.py:2756 flatcamGUI/FlatCAMGUI.py:2774 -#: flatcamGUI/FlatCAMGUI.py:2905 flatcamGUI/FlatCAMGUI.py:2917 -#: flatcamGUI/FlatCAMGUI.py:2951 +#: flatcamEditors/FlatCAMGeoEditor.py:3710 flatcamGUI/FlatCAMGUI.py:2725 +#: flatcamGUI/FlatCAMGUI.py:2771 flatcamGUI/FlatCAMGUI.py:2789 +#: flatcamGUI/FlatCAMGUI.py:2920 flatcamGUI/FlatCAMGUI.py:2932 +#: flatcamGUI/FlatCAMGUI.py:2966 msgid "Click on target point." msgstr "Click pe punctul tinta." -#: flatcamEditors/FlatCAMGeoEditor.py:3868 -#: flatcamEditors/FlatCAMGeoEditor.py:3902 +#: flatcamEditors/FlatCAMGeoEditor.py:3953 +#: flatcamEditors/FlatCAMGeoEditor.py:3987 msgid "" "[WARNING_NOTCL] A selection of at least 2 geo items is required to do " "Intersection." @@ -3070,9 +3111,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:3986 -#: flatcamEditors/FlatCAMGeoEditor.py:4023 -#: flatcamEditors/FlatCAMGeoEditor.py:4099 +#: flatcamEditors/FlatCAMGeoEditor.py:4071 +#: flatcamEditors/FlatCAMGeoEditor.py:4108 +#: flatcamEditors/FlatCAMGeoEditor.py:4184 msgid "" "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to " "generate an 'inside' shape" @@ -3080,57 +3121,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:3994 -#: flatcamEditors/FlatCAMGeoEditor.py:4032 -#: flatcamEditors/FlatCAMGeoEditor.py:4107 +#: flatcamEditors/FlatCAMGeoEditor.py:4079 +#: flatcamEditors/FlatCAMGeoEditor.py:4117 +#: flatcamEditors/FlatCAMGeoEditor.py:4192 msgid "[WARNING_NOTCL] Nothing selected for buffering." msgstr "" "[WARNING_NOTCL] Nici-o forma geometrică nu este selectată pentru a face " "Bufer." -#: flatcamEditors/FlatCAMGeoEditor.py:3998 -#: flatcamEditors/FlatCAMGeoEditor.py:4036 -#: flatcamEditors/FlatCAMGeoEditor.py:4111 +#: flatcamEditors/FlatCAMGeoEditor.py:4083 +#: flatcamEditors/FlatCAMGeoEditor.py:4121 +#: flatcamEditors/FlatCAMGeoEditor.py:4196 msgid "[WARNING_NOTCL] Invalid distance for buffering." msgstr "[WARNING_NOTCL] Distanta invalida pentru a face Bufer." -#: flatcamEditors/FlatCAMGeoEditor.py:4008 -#: flatcamEditors/FlatCAMGeoEditor.py:4120 +#: flatcamEditors/FlatCAMGeoEditor.py:4093 +#: flatcamEditors/FlatCAMGeoEditor.py:4205 msgid "" "[ERROR_NOTCL] Failed, the result is empty. Choose a different buffer value." msgstr "" -"[ERROR_NOTCL] Esuat, rezultatul este gol. Foloseşte o valoare diferita " +"[ERROR_NOTCL] Eșuat, rezultatul este gol. Foloseşte o valoare diferita " "pentru Bufer." -#: flatcamEditors/FlatCAMGeoEditor.py:4016 +#: flatcamEditors/FlatCAMGeoEditor.py:4101 msgid "[success] Full buffer geometry created." msgstr "[success] Geometrie tip Bufer Complet creată." -#: flatcamEditors/FlatCAMGeoEditor.py:4046 +#: flatcamEditors/FlatCAMGeoEditor.py:4131 msgid "" "[ERROR_NOTCL] Failed, the result is empty. Choose a smaller buffer value." msgstr "" -"[ERROR_NOTCL] Esuat, rezultatul este gol. Foloseşte of valoare mai mica pt. " +"[ERROR_NOTCL] Eșuat, rezultatul este gol. Foloseşte of valoare mai mica pt. " "Bufer." -#: flatcamEditors/FlatCAMGeoEditor.py:4061 +#: flatcamEditors/FlatCAMGeoEditor.py:4146 msgid "[success] Interior buffer geometry created." msgstr "[success] Geometrie Bufer interior creată." -#: flatcamEditors/FlatCAMGeoEditor.py:4132 +#: flatcamEditors/FlatCAMGeoEditor.py:4217 msgid "[success] Exterior buffer geometry created." msgstr "[success] Geometrie Bufer Exterior creată." -#: flatcamEditors/FlatCAMGeoEditor.py:4196 +#: flatcamEditors/FlatCAMGeoEditor.py:4281 msgid "[WARNING_NOTCL] Nothing selected for painting." msgstr "" "[WARNING_NOTCL] Nici-o forma geometrică nu este selectată pentru Paint." -#: flatcamEditors/FlatCAMGeoEditor.py:4202 +#: flatcamEditors/FlatCAMGeoEditor.py:4287 msgid "[WARNING] Invalid value for {}" msgstr "[WARNING] Valoare invalida pentru {}" -#: flatcamEditors/FlatCAMGeoEditor.py:4208 +#: flatcamEditors/FlatCAMGeoEditor.py:4293 msgid "" "[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 " "(100%)." @@ -3138,7 +3179,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:4267 +#: flatcamEditors/FlatCAMGeoEditor.py:4352 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -3149,179 +3190,205 @@ msgstr "" "Or o metoda diferita de Paint\n" "%s" -#: flatcamEditors/FlatCAMGeoEditor.py:4278 +#: flatcamEditors/FlatCAMGeoEditor.py:4363 msgid "[success] Paint done." msgstr "[success] Paint executat." -#: flatcamEditors/FlatCAMGrbEditor.py:52 +#: flatcamEditors/FlatCAMGrbEditor.py:200 msgid "[WARNING_NOTCL] To add an Pad first select a aperture in Aperture Table" msgstr "" "[WARNING_NOTCL] Pentru a adăuga un Pad mai intai selectează o apertură " "(unealtă) in Tabela de Aperturi" -#: flatcamEditors/FlatCAMGrbEditor.py:58 flatcamEditors/FlatCAMGrbEditor.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:206 +#: flatcamEditors/FlatCAMGrbEditor.py:398 msgid "" "[WARNING_NOTCL] Aperture size is zero. It needs to be greater than zero." msgstr "" "[WARNING_NOTCL] Dimens. aperturii este zero. Trebuie sa fie mai mare ca zero." -#: flatcamEditors/FlatCAMGrbEditor.py:81 flatcamEditors/FlatCAMGrbEditor.py:86 +#: flatcamEditors/FlatCAMGrbEditor.py:229 +#: flatcamEditors/FlatCAMGrbEditor.py:234 msgid "Click to place ..." msgstr "Click pt a plasa ..." -#: flatcamEditors/FlatCAMGrbEditor.py:191 -#: flatcamEditors/FlatCAMGrbEditor.py:469 +#: flatcamEditors/FlatCAMGrbEditor.py:357 +#: flatcamEditors/FlatCAMGrbEditor.py:660 msgid "" "Incompatible aperture type. Select an aperture with type 'C', 'R' or 'O'." msgstr "" "Tip de apertură incompatibil. Selectează o apertură cu tipul 'C', 'R' sau " "'O'." -#: flatcamEditors/FlatCAMGrbEditor.py:203 +#: flatcamEditors/FlatCAMGrbEditor.py:369 msgid "[success] Done. Adding Pad completed." msgstr "[success] Executat. Adăugarea padului terminată." -#: flatcamEditors/FlatCAMGrbEditor.py:225 +#: flatcamEditors/FlatCAMGrbEditor.py:391 msgid "" "[WARNING_NOTCL] To add an Pad Array first select a aperture in Aperture Table" msgstr "" "[WARNING_NOTCL] Pentru a adăuga o arie de paduri mai intai selectează o " "apertura (unealtă) in Tabela de Aperturi" -#: flatcamEditors/FlatCAMGrbEditor.py:304 +#: flatcamEditors/FlatCAMGrbEditor.py:468 msgid "Click on the Pad Circular Array Start position" msgstr "Click pe punctul de Start al ariei de paduri" -#: flatcamEditors/FlatCAMGrbEditor.py:494 +#: flatcamEditors/FlatCAMGrbEditor.py:685 msgid "[WARNING_NOTCL] Too many Pads for the selected spacing angle." msgstr "[WARNING_NOTCL] Prea multe paduri pentru unghiul selectat." -#: flatcamEditors/FlatCAMGrbEditor.py:516 +#: flatcamEditors/FlatCAMGrbEditor.py:707 msgid "[success] Done. Pad Array added." msgstr "[success] Executat. Aria de paduri a fost adăugată." -#: flatcamEditors/FlatCAMGrbEditor.py:537 +#: flatcamEditors/FlatCAMGrbEditor.py:728 msgid "Select shape(s) and then click ..." msgstr "Selectează formele si apoi click ..." -#: flatcamEditors/FlatCAMGrbEditor.py:548 +#: flatcamEditors/FlatCAMGrbEditor.py:739 msgid "[ERROR_NOTCL] Failed. Nothing selected." -msgstr "[ERROR_NOTCL] Esuat. Nu este nimic selectat." +msgstr "[ERROR_NOTCL] Eșuat. Nu este nimic selectat." -#: flatcamEditors/FlatCAMGrbEditor.py:575 +#: flatcamEditors/FlatCAMGrbEditor.py:754 +msgid "" +"[WARNING_NOTCL] Failed. Poligonize works only on geometries belonging to the " +"same aperture." +msgstr "" +"[WARNING_NOTCL] Esuat. Poligonizarea lucrează doar asupra geometriilor care " +"apartin aceleasi aperturi." + +#: flatcamEditors/FlatCAMGrbEditor.py:807 msgid "[success] Done. Poligonize completed." msgstr "[success] Executat. Poligonizare completă." -#: flatcamEditors/FlatCAMGrbEditor.py:625 -#: flatcamEditors/FlatCAMGrbEditor.py:825 -#: flatcamEditors/FlatCAMGrbEditor.py:849 +#: flatcamEditors/FlatCAMGrbEditor.py:857 +#: flatcamEditors/FlatCAMGrbEditor.py:1072 +#: flatcamEditors/FlatCAMGrbEditor.py:1096 msgid "Corner Mode 1: 45 degrees ..." msgstr "Mod Colt 1: 45 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:813 -#: flatcamEditors/FlatCAMGrbEditor.py:846 +#: flatcamEditors/FlatCAMGrbEditor.py:859 +msgid "Click on 1st point ..." +msgstr "Click pe primul punct ..." + +#: flatcamEditors/FlatCAMGrbEditor.py:869 +#: flatcamEditors/FlatCAMGrbEditor.py:1167 +msgid "Click on next Point or click Right mouse button to complete ..." +msgstr "" +"Click pe punctul următor sau click buton dreapta al mousului pentru " +"terminare ..." + +#: flatcamEditors/FlatCAMGrbEditor.py:1060 +#: flatcamEditors/FlatCAMGrbEditor.py:1093 msgid "Corner Mode 2: Reverse 45 degrees ..." msgstr "Mod Colt 2: Invers 45 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:816 -#: flatcamEditors/FlatCAMGrbEditor.py:843 +#: flatcamEditors/FlatCAMGrbEditor.py:1063 +#: flatcamEditors/FlatCAMGrbEditor.py:1090 msgid "Corner Mode 3: 90 degrees ..." msgstr "Mod Colt 3: 90 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:819 -#: flatcamEditors/FlatCAMGrbEditor.py:840 +#: flatcamEditors/FlatCAMGrbEditor.py:1066 +#: flatcamEditors/FlatCAMGrbEditor.py:1087 msgid "Corner Mode 4: Reverse 90 degrees ..." msgstr "Mod Colt 4: Invers 90 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:822 -#: flatcamEditors/FlatCAMGrbEditor.py:837 +#: flatcamEditors/FlatCAMGrbEditor.py:1069 +#: flatcamEditors/FlatCAMGrbEditor.py:1084 msgid "Corner Mode 5: Free angle ..." msgstr "Mod Colt 5: Unghi liber ..." -#: flatcamEditors/FlatCAMGrbEditor.py:875 -#: flatcamEditors/FlatCAMGrbEditor.py:1012 -#: flatcamEditors/FlatCAMGrbEditor.py:1050 +#: flatcamEditors/FlatCAMGrbEditor.py:1123 +#: flatcamEditors/FlatCAMGrbEditor.py:1281 +#: flatcamEditors/FlatCAMGrbEditor.py:1320 msgid "Track Mode 1: 45 degrees ..." msgstr "Mod Traseu 1: 45 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:992 -#: flatcamEditors/FlatCAMGrbEditor.py:1045 +#: flatcamEditors/FlatCAMGrbEditor.py:1261 +#: flatcamEditors/FlatCAMGrbEditor.py:1315 msgid "Track Mode 2: Reverse 45 degrees ..." msgstr "Mod Traseu 2: Invers 45 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:997 -#: flatcamEditors/FlatCAMGrbEditor.py:1040 +#: flatcamEditors/FlatCAMGrbEditor.py:1266 +#: flatcamEditors/FlatCAMGrbEditor.py:1310 msgid "Track Mode 3: 90 degrees ..." msgstr "Mod Traseu 3: 90 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1002 -#: flatcamEditors/FlatCAMGrbEditor.py:1035 +#: flatcamEditors/FlatCAMGrbEditor.py:1271 +#: flatcamEditors/FlatCAMGrbEditor.py:1305 msgid "Track Mode 4: Reverse 90 degrees ..." msgstr "Mod Traseu 4: Invers 90 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1007 -#: flatcamEditors/FlatCAMGrbEditor.py:1030 +#: flatcamEditors/FlatCAMGrbEditor.py:1276 +#: flatcamEditors/FlatCAMGrbEditor.py:1300 msgid "Track Mode 5: Free angle ..." msgstr "Mod Traseu 5: Unghi liber ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1367 +#: flatcamEditors/FlatCAMGrbEditor.py:1666 msgid "Scale the selected Gerber apertures ..." msgstr "Șterge aperturile Gerber selectate ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1409 +#: flatcamEditors/FlatCAMGrbEditor.py:1708 msgid "Buffer the selected apertures ..." msgstr "Bufereaza aperturile selectate." -#: flatcamEditors/FlatCAMGrbEditor.py:1510 +#: flatcamEditors/FlatCAMGrbEditor.py:1752 +msgid "[WARNING_NOTCL] Nothing selected to move ..." +msgstr "[WARNING_NOTCL] Nimic nu este selectat pentru mutare ..." + +#: flatcamEditors/FlatCAMGrbEditor.py:1875 msgid "[success] Done. Apertures Move completed." msgstr "[success] Executat. Mutarea Aperturilor terminată." -#: flatcamEditors/FlatCAMGrbEditor.py:1565 +#: flatcamEditors/FlatCAMGrbEditor.py:1951 msgid "[success] Done. Apertures copied." msgstr "[success] Executat. Aperturile au fost copiate." -#: flatcamEditors/FlatCAMGrbEditor.py:1708 flatcamGUI/FlatCAMGUI.py:1590 +#: flatcamEditors/FlatCAMGrbEditor.py:2101 flatcamGUI/FlatCAMGUI.py:1604 +#: flatcamGUI/FlatCAMGUI.py:4322 msgid "Gerber Editor" msgstr "Editor Gerber" -#: flatcamEditors/FlatCAMGrbEditor.py:1727 flatcamGUI/ObjectUI.py:192 +#: flatcamEditors/FlatCAMGrbEditor.py:2120 flatcamGUI/ObjectUI.py:192 msgid "Apertures:" msgstr "Aperturi:" -#: flatcamEditors/FlatCAMGrbEditor.py:1729 flatcamGUI/ObjectUI.py:194 +#: flatcamEditors/FlatCAMGrbEditor.py:2122 flatcamGUI/ObjectUI.py:194 msgid "Apertures Table for the Gerber Object." msgstr "Tabela de aperturi pt obiectul Gerber." -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 msgid "Code" msgstr "Cod" -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 -#: flatcamGUI/ObjectUI.py:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "Type" msgstr "Tip" -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 msgid "Size" msgstr "Dimens." -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 msgid "Dim" msgstr "Dim" -#: flatcamEditors/FlatCAMGrbEditor.py:1744 flatcamGUI/ObjectUI.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:2137 flatcamGUI/ObjectUI.py:232 msgid "Index" msgstr "Index" -#: flatcamEditors/FlatCAMGrbEditor.py:1746 flatcamGUI/ObjectUI.py:234 +#: flatcamEditors/FlatCAMGrbEditor.py:2139 flatcamGUI/ObjectUI.py:234 msgid "Aperture Code" msgstr "Cod" -#: flatcamEditors/FlatCAMGrbEditor.py:1748 flatcamGUI/ObjectUI.py:236 +#: flatcamEditors/FlatCAMGrbEditor.py:2141 flatcamGUI/ObjectUI.py:236 msgid "Type of aperture: circular, rectangle, macros etc" msgstr "" "Tipul aperturilor:\n" @@ -3330,12 +3397,12 @@ msgstr "" "- macro-uri\n" "etc" -#: flatcamEditors/FlatCAMGrbEditor.py:1750 -#: flatcamEditors/FlatCAMGrbEditor.py:1783 flatcamGUI/ObjectUI.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:2143 +#: flatcamEditors/FlatCAMGrbEditor.py:2176 flatcamGUI/ObjectUI.py:238 msgid "Aperture Size:" msgstr "Dim. aper." -#: flatcamEditors/FlatCAMGrbEditor.py:1752 flatcamGUI/ObjectUI.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:2145 flatcamGUI/ObjectUI.py:240 msgid "" "Aperture Dimensions:\n" " - (width, height) for R, O type.\n" @@ -3345,15 +3412,15 @@ msgstr "" "- (latime, inaltime) pt tipurile R, O.\n" "- (diametru, nVertices) pt tipul P" -#: flatcamEditors/FlatCAMGrbEditor.py:1773 +#: flatcamEditors/FlatCAMGrbEditor.py:2166 msgid "Aperture Code:" msgstr "Cod apertură" -#: flatcamEditors/FlatCAMGrbEditor.py:1775 +#: flatcamEditors/FlatCAMGrbEditor.py:2168 msgid "Code for the new aperture" msgstr "Diametru pentru noua apertură" -#: flatcamEditors/FlatCAMGrbEditor.py:1785 +#: flatcamEditors/FlatCAMGrbEditor.py:2178 msgid "" "Size for the new aperture.\n" "If aperture type is 'R' or 'O' then\n" @@ -3366,11 +3433,11 @@ msgstr "" "valoarea este calculată automat prin:\n" "sqrt(lătime**2 + inăltime**2)" -#: flatcamEditors/FlatCAMGrbEditor.py:1797 +#: flatcamEditors/FlatCAMGrbEditor.py:2190 msgid "Aperture Type:" msgstr "Tip aper." -#: flatcamEditors/FlatCAMGrbEditor.py:1799 +#: flatcamEditors/FlatCAMGrbEditor.py:2192 msgid "" "Select the type of new aperture. Can be:\n" "C = circular\n" @@ -3382,11 +3449,11 @@ msgstr "" "R = rectangular\n" "O = oval" -#: flatcamEditors/FlatCAMGrbEditor.py:1810 +#: flatcamEditors/FlatCAMGrbEditor.py:2203 msgid "Aperture Dim:" msgstr "Dim. aper." -#: flatcamEditors/FlatCAMGrbEditor.py:1812 +#: flatcamEditors/FlatCAMGrbEditor.py:2205 msgid "" "Dimensions for the new aperture.\n" "Active only for rectangular apertures (type R).\n" @@ -3396,31 +3463,31 @@ msgstr "" "Activă doar pentru aperturile rectangulare (tip 'R').\n" "Formatul este (lătime, inăltime)" -#: flatcamEditors/FlatCAMGrbEditor.py:1821 +#: flatcamEditors/FlatCAMGrbEditor.py:2214 msgid "Add/Delete Aperture:" msgstr "Adaugă/Șterge aper." -#: flatcamEditors/FlatCAMGrbEditor.py:1823 +#: flatcamEditors/FlatCAMGrbEditor.py:2216 msgid "Add/Delete an aperture in the aperture table" msgstr "Adaugă/Șterge o apertură din lista de aperturi." -#: flatcamEditors/FlatCAMGrbEditor.py:1832 +#: flatcamEditors/FlatCAMGrbEditor.py:2225 msgid "Add a new aperture to the aperture list." msgstr "Adaugă o nouă apertură in lista de aperturi." -#: flatcamEditors/FlatCAMGrbEditor.py:1837 +#: flatcamEditors/FlatCAMGrbEditor.py:2230 msgid "Delete a aperture in the aperture list" msgstr "Șterge o apertură din lista de aperturi." -#: flatcamEditors/FlatCAMGrbEditor.py:1853 +#: flatcamEditors/FlatCAMGrbEditor.py:2246 msgid "Buffer Aperture:" msgstr "Bufer pt apertură:" -#: flatcamEditors/FlatCAMGrbEditor.py:1855 +#: flatcamEditors/FlatCAMGrbEditor.py:2248 msgid "Buffer a aperture in the aperture list" msgstr "Fă bufer pt o apertură din lista de aperturi" -#: flatcamEditors/FlatCAMGrbEditor.py:1868 +#: flatcamEditors/FlatCAMGrbEditor.py:2261 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded.\n" @@ -3434,24 +3501,24 @@ msgstr "" " - 'Beveled:' coltul este inlocuit cu o linie care uneste capetele liniilor " "care formează coltul" -#: flatcamEditors/FlatCAMGrbEditor.py:1883 flatcamGUI/FlatCAMGUI.py:708 -#: flatcamGUI/FlatCAMGUI.py:1929 +#: flatcamEditors/FlatCAMGrbEditor.py:2276 flatcamGUI/FlatCAMGUI.py:721 +#: flatcamGUI/FlatCAMGUI.py:1943 msgid "Buffer" msgstr "Bufer" -#: flatcamEditors/FlatCAMGrbEditor.py:1897 +#: flatcamEditors/FlatCAMGrbEditor.py:2290 msgid "Scale Aperture:" msgstr "Scalează ap.:" -#: flatcamEditors/FlatCAMGrbEditor.py:1899 +#: flatcamEditors/FlatCAMGrbEditor.py:2292 msgid "Scale a aperture in the aperture list" msgstr "Scalează o apertură in lista de aperturi" -#: flatcamEditors/FlatCAMGrbEditor.py:1907 +#: flatcamEditors/FlatCAMGrbEditor.py:2300 msgid "Scale factor:" msgstr "Factor Scalare:" -#: flatcamEditors/FlatCAMGrbEditor.py:1909 +#: flatcamEditors/FlatCAMGrbEditor.py:2302 msgid "" "The factor by which to scale the selected aperture.\n" "Values can be between 0.0000 and 999.9999" @@ -3459,16 +3526,16 @@ msgstr "" "Factorul cu care se va face scalarea aperturii selectate.\n" "Poate lua valori intre: 0.000 si 999.9999" -#: flatcamEditors/FlatCAMGrbEditor.py:1937 flatcamGUI/FlatCAMGUI.py:698 -#: flatcamGUI/FlatCAMGUI.py:1919 +#: flatcamEditors/FlatCAMGrbEditor.py:2330 flatcamGUI/FlatCAMGUI.py:711 +#: flatcamGUI/FlatCAMGUI.py:1933 msgid "Add Pad Array" msgstr "Adaugă o arie de paduri" -#: flatcamEditors/FlatCAMGrbEditor.py:1939 +#: flatcamEditors/FlatCAMGrbEditor.py:2332 msgid "Add an array of pads (linear or circular array)" msgstr "Adaugă o arie de paduri (arie lineara sau circulara)." -#: flatcamEditors/FlatCAMGrbEditor.py:1945 +#: flatcamEditors/FlatCAMGrbEditor.py:2338 msgid "" "Select the type of pads array to create.\n" "It can be Linear X(Y) or Circular" @@ -3476,16 +3543,16 @@ msgstr "" "Selectează tipul de arii de paduri.\n" "Poate fi Liniar X(Y) sau Circular." -#: flatcamEditors/FlatCAMGrbEditor.py:1956 +#: flatcamEditors/FlatCAMGrbEditor.py:2349 msgid "Nr of pads:" msgstr "Nr. paduri:" -#: flatcamEditors/FlatCAMGrbEditor.py:1958 +#: flatcamEditors/FlatCAMGrbEditor.py:2351 msgid "Specify how many pads to be in the array." msgstr "Specifica cate paduri să fie incluse in arie." -#: flatcamEditors/FlatCAMGrbEditor.py:2431 -#: flatcamEditors/FlatCAMGrbEditor.py:2435 +#: flatcamEditors/FlatCAMGrbEditor.py:2826 +#: flatcamEditors/FlatCAMGrbEditor.py:2830 msgid "" "[WARNING_NOTCL] Aperture code value is missing or wrong format. Add it and " "retry." @@ -3493,7 +3560,7 @@ msgstr "" "[WARNING_NOTCL] Valoarea codului aperturii lipseste sau este in format " "greșit. Adaugă din nou și reîncearcă." -#: flatcamEditors/FlatCAMGrbEditor.py:2472 +#: flatcamEditors/FlatCAMGrbEditor.py:2866 msgid "" "[WARNING_NOTCL] Aperture dimensions value is missing or wrong format. Add it " "in format (width, height) and retry." @@ -3501,7 +3568,7 @@ msgstr "" "[WARNING_NOTCL] Dimensiunile aperturii lipsesc sau sunt intr-un format " "greșit. Adaugă din nou și reîncearcă." -#: flatcamEditors/FlatCAMGrbEditor.py:2484 +#: flatcamEditors/FlatCAMGrbEditor.py:2878 msgid "" "[WARNING_NOTCL] Aperture size value is missing or wrong format. Add it and " "retry." @@ -3509,31 +3576,35 @@ msgstr "" "[WARNING_NOTCL] Valoarea mărimii aperturii lipseste sau este in format " "greșit. Adaugă din nou și reîncearcă." -#: flatcamEditors/FlatCAMGrbEditor.py:2496 +#: flatcamEditors/FlatCAMGrbEditor.py:2889 msgid "[WARNING_NOTCL] Aperture already in the aperture table." msgstr "[WARNING_NOTCL] Apertura este deja in lista de aperturi." -#: flatcamEditors/FlatCAMGrbEditor.py:2503 +#: flatcamEditors/FlatCAMGrbEditor.py:2896 #, 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:2532 -#: flatcamEditors/FlatCAMGrbEditor.py:2538 +#: flatcamEditors/FlatCAMGrbEditor.py:2924 msgid "[WARNING_NOTCL] Select an aperture in Aperture Table" msgstr "[WARNING_NOTCL] Selectează o unealtă in Tabela de Aperturi" -#: flatcamEditors/FlatCAMGrbEditor.py:2561 +#: flatcamEditors/FlatCAMGrbEditor.py:2930 +#, 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:2953 #, python-brace-format msgid "[success] Deleted aperture with code: {del_dia}" msgstr "[success] Unealta cu diametrul: {del_dia} a fost stearsă" -#: flatcamEditors/FlatCAMGrbEditor.py:2931 +#: flatcamEditors/FlatCAMGrbEditor.py:3373 #, python-format msgid "Adding aperture: %s geo ..." msgstr "Se adaugă apertura: %s geo ..." -#: flatcamEditors/FlatCAMGrbEditor.py:3095 +#: flatcamEditors/FlatCAMGrbEditor.py:3552 msgid "" "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber " "creation." @@ -3541,28 +3612,34 @@ msgstr "" "[ERROR_NOTCL] Nu există definitii de aperturi in fişier. Se anulează crearea " "de obiect Gerber." -#: flatcamEditors/FlatCAMGrbEditor.py:3104 +#: flatcamEditors/FlatCAMGrbEditor.py:3555 +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:3560 msgid "Creating Gerber." msgstr "Gerber in curs de creare." -#: flatcamEditors/FlatCAMGrbEditor.py:3112 +#: flatcamEditors/FlatCAMGrbEditor.py:3568 msgid "[success] Gerber editing finished." msgstr "[success] Editarea Gerber a fost terminată." -#: flatcamEditors/FlatCAMGrbEditor.py:3129 +#: flatcamEditors/FlatCAMGrbEditor.py:3584 msgid "[WARNING_NOTCL] Cancelled. No aperture is selected" msgstr "[WARNING_NOTCL] Anulat. Nici-o apertură nu este selectată." -#: flatcamEditors/FlatCAMGrbEditor.py:3649 +#: flatcamEditors/FlatCAMGrbEditor.py:4104 msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected." msgstr "" "[WARNING_NOTCL] Anulat. Nici-o geometrie de apertură nu este selectată." -#: flatcamEditors/FlatCAMGrbEditor.py:3657 +#: flatcamEditors/FlatCAMGrbEditor.py:4112 msgid "[success] Done. Apertures geometry deleted." msgstr "[success] Executat. Geometriile aperturilor au fost șterse." -#: flatcamEditors/FlatCAMGrbEditor.py:3792 +#: flatcamEditors/FlatCAMGrbEditor.py:4261 msgid "" "[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try " "again." @@ -3570,7 +3647,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:3821 +#: flatcamEditors/FlatCAMGrbEditor.py:4290 msgid "" "[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and " "retry." @@ -3578,7 +3655,7 @@ msgstr "" "[WARNING_NOTCL] Valoarea factorului de scalare lipseste sau este in format " "gresit. Adaugă din nou și reîncearcă." -#: flatcamEditors/FlatCAMGrbEditor.py:3839 +#: flatcamEditors/FlatCAMGrbEditor.py:4320 msgid "" "[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try " "again." @@ -3586,7 +3663,7 @@ msgstr "" "[WARNING_NOTCL] Nici-o apertură sel. pt scalare. Selectează cel puțin o " "apertură și încearcă din nou." -#: flatcamEditors/FlatCAMGrbEditor.py:3855 +#: flatcamEditors/FlatCAMGrbEditor.py:4336 msgid "[success] Done. Scale Tool completed." msgstr "[success] Executat. Unealta Scalare a terminat." @@ -3745,51 +3822,65 @@ msgstr "" "Formatul coordonatelor, unitatile de masura și tipul\n" "de zerouri se vor seta in Preferințe -> Export Excellon." -#: flatcamGUI/FlatCAMGUI.py:191 +#: flatcamGUI/FlatCAMGUI.py:186 +msgid "Export &Gerber ..." +msgstr "Exporta &Gerber ..." + +#: flatcamGUI/FlatCAMGUI.py:189 +msgid "" +"Will export an Gerber Object as Gerber file,\n" +"the coordinates format, the file units and zeros\n" +"are set in Preferences -> Gerber Export." +msgstr "" +"Va exporta un obiect Gerber intr-un fişier Gerber.\n" +"Formatul coordonatelor, unitatile de măsură și tipul\n" +"de zerouri se vor seta in Preferințe -> Export Gerber." + +#: flatcamGUI/FlatCAMGUI.py:199 msgid "Save &Defaults" msgstr "Salvează valori &Default" -#: flatcamGUI/FlatCAMGUI.py:197 flatcamGUI/FlatCAMGUI.py:520 +#: flatcamGUI/FlatCAMGUI.py:205 flatcamGUI/FlatCAMGUI.py:533 msgid "Save" msgstr "Salvează" -#: flatcamGUI/FlatCAMGUI.py:199 +#: flatcamGUI/FlatCAMGUI.py:207 msgid "&Save Project ..." msgstr "&Salvează Proiect ..." -#: flatcamGUI/FlatCAMGUI.py:204 +#: flatcamGUI/FlatCAMGUI.py:212 msgid "Save Project &As ...\tCTRL+S" msgstr "Salvează Proiect &ca ...\tCTRL+S" -#: flatcamGUI/FlatCAMGUI.py:208 +#: flatcamGUI/FlatCAMGUI.py:216 msgid "Save Project C&opy ..." msgstr "Salvează o C&opie Proiect..." -#: flatcamGUI/FlatCAMGUI.py:216 +#: flatcamGUI/FlatCAMGUI.py:224 msgid "E&xit" msgstr "Iesire" -#: flatcamGUI/FlatCAMGUI.py:222 +#: flatcamGUI/FlatCAMGUI.py:230 msgid "&Edit" msgstr "&Editare" -#: flatcamGUI/FlatCAMGUI.py:225 +#: flatcamGUI/FlatCAMGUI.py:233 msgid "Edit Object\tE" msgstr "Editare Obiect\tE" -#: flatcamGUI/FlatCAMGUI.py:226 +#: flatcamGUI/FlatCAMGUI.py:234 msgid "Close Editor\tCTRL+S" msgstr "Salvează Editor\tCTRL+S" -#: flatcamGUI/FlatCAMGUI.py:234 +#: flatcamGUI/FlatCAMGUI.py:242 msgid "Conversion" msgstr "Conversii" -#: flatcamGUI/FlatCAMGUI.py:236 +#: flatcamGUI/FlatCAMGUI.py:244 msgid "&Join Geo/Gerber/Exc -> Geo" msgstr "&Fuzionează Geo/Gerber/Exc -> Geo" -#: flatcamGUI/FlatCAMGUI.py:238 +#: flatcamGUI/FlatCAMGUI.py:246 msgid "" "Merge a selection of objects, which can be of type:\n" "- Gerber\n" @@ -3803,29 +3894,29 @@ msgstr "" "- Geometrie\n" "intr-un nou obiect tip Geometrie >combo<." -#: flatcamGUI/FlatCAMGUI.py:245 +#: flatcamGUI/FlatCAMGUI.py:253 msgid "Join Excellon(s) -> Excellon" msgstr "Fuzionează Excellon(s) -> Excellon" -#: flatcamGUI/FlatCAMGUI.py:247 +#: flatcamGUI/FlatCAMGUI.py:255 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:250 +#: flatcamGUI/FlatCAMGUI.py:258 msgid "Join Gerber(s) -> Gerber" msgstr "Fuzionează Gerber(s) -> Gerber" -#: flatcamGUI/FlatCAMGUI.py:252 +#: flatcamGUI/FlatCAMGUI.py:260 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:257 +#: flatcamGUI/FlatCAMGUI.py:265 msgid "Convert Single to MultiGeo" msgstr "Converteste SingleGeo in MultiGeo" -#: flatcamGUI/FlatCAMGUI.py:259 +#: flatcamGUI/FlatCAMGUI.py:267 msgid "" "Will convert a Geometry object from single_geometry type\n" "to a multi_geometry type." @@ -3833,11 +3924,11 @@ msgstr "" "Va converti un obiect Geometrie din tipul simpla geometrie (SingleGeo)\n" "la tipul geometrie complexa (MultiGeo)." -#: flatcamGUI/FlatCAMGUI.py:263 +#: flatcamGUI/FlatCAMGUI.py:271 msgid "Convert Multi to SingleGeo" msgstr "Converteste MultiGeo in SingleGeo" -#: flatcamGUI/FlatCAMGUI.py:265 +#: flatcamGUI/FlatCAMGUI.py:273 msgid "" "Will convert a Geometry object from multi_geometry type\n" "to a single_geometry type." @@ -3845,585 +3936,589 @@ msgstr "" "Va converti un obiect Geometrie din tipul geometrie complexa (MultiGeo)\n" "la tipul geometrie simpla (SingleGeo)." -#: flatcamGUI/FlatCAMGUI.py:272 -msgid "&Copy Object\tCTRL+C" -msgstr "&Copiază Obiect\tCTRL+C" +#: flatcamGUI/FlatCAMGUI.py:279 +msgid "Convert Any to Geo" +msgstr "Converteste Oricare to Geo" -#: flatcamGUI/FlatCAMGUI.py:274 -msgid "Copy as &Geom" -msgstr "Copiază ca &Geo" +#: flatcamGUI/FlatCAMGUI.py:281 +msgid "Convert Any to Gerber" +msgstr "Converteste Oricare in Gerber" -#: flatcamGUI/FlatCAMGUI.py:277 +#: flatcamGUI/FlatCAMGUI.py:286 +msgid "&Copy\tCTRL+C" +msgstr "&Copiază\tCTRL+C" + +#: flatcamGUI/FlatCAMGUI.py:290 msgid "&Delete\tDEL" msgstr "&Șterge\tDEL" -#: flatcamGUI/FlatCAMGUI.py:281 +#: flatcamGUI/FlatCAMGUI.py:294 msgid "Se&t Origin\tO" msgstr "Se&tează Originea\tO" -#: flatcamGUI/FlatCAMGUI.py:282 +#: flatcamGUI/FlatCAMGUI.py:295 msgid "Jump to Location\tJ" msgstr "Sari la Locaţie\tJ" -#: flatcamGUI/FlatCAMGUI.py:287 +#: flatcamGUI/FlatCAMGUI.py:300 msgid "Toggle Units\tQ" msgstr "Comută Unitati\tQ" -#: flatcamGUI/FlatCAMGUI.py:289 +#: flatcamGUI/FlatCAMGUI.py:302 msgid "&Select All\tCTRL+A" msgstr "&Selectează Tot\tCTRL+A" -#: flatcamGUI/FlatCAMGUI.py:293 +#: flatcamGUI/FlatCAMGUI.py:306 msgid "&Preferences\tSHIFT+P" msgstr "&Preferințe\tSHIFT+P" -#: flatcamGUI/FlatCAMGUI.py:296 +#: flatcamGUI/FlatCAMGUI.py:309 msgid "&Options" msgstr "&Opțiuni" -#: flatcamGUI/FlatCAMGUI.py:311 +#: flatcamGUI/FlatCAMGUI.py:324 msgid "&Rotate Selection\tSHIFT+(R)" msgstr "&Roteste Selectia\tSHIFT+(R)" -#: flatcamGUI/FlatCAMGUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:329 msgid "&Skew on X axis\tSHIFT+X" msgstr "&Deformează pe axa X\tSHIFT+X" -#: flatcamGUI/FlatCAMGUI.py:318 +#: flatcamGUI/FlatCAMGUI.py:331 msgid "S&kew on Y axis\tSHIFT+Y" msgstr "Deformează pe axa Y\tSHIFT+Y" -#: flatcamGUI/FlatCAMGUI.py:323 +#: flatcamGUI/FlatCAMGUI.py:336 msgid "Flip on &X axis\tX" msgstr "Oglindește pe axa &X\tX" -#: flatcamGUI/FlatCAMGUI.py:325 +#: flatcamGUI/FlatCAMGUI.py:338 msgid "Flip on &Y axis\tY" msgstr "Oglindește pe axa &Y\tY" -#: flatcamGUI/FlatCAMGUI.py:330 +#: flatcamGUI/FlatCAMGUI.py:343 msgid "View source\tALT+S" msgstr "Vezi sursa\tALT+S" -#: flatcamGUI/FlatCAMGUI.py:335 +#: flatcamGUI/FlatCAMGUI.py:348 msgid "&View" msgstr "&Vizualizare" -#: flatcamGUI/FlatCAMGUI.py:336 +#: flatcamGUI/FlatCAMGUI.py:349 msgid "Enable all plots\tALT+1" msgstr "Activează toate afisarile\tALT+1" -#: flatcamGUI/FlatCAMGUI.py:338 +#: flatcamGUI/FlatCAMGUI.py:351 msgid "Disable all plots\tALT+2" msgstr "Dezactivează toate afisarile\tALT+2" -#: flatcamGUI/FlatCAMGUI.py:340 +#: flatcamGUI/FlatCAMGUI.py:353 msgid "Disable non-selected\tALT+3" msgstr "Dezactivează non-selectate\tALT+3" -#: flatcamGUI/FlatCAMGUI.py:343 +#: flatcamGUI/FlatCAMGUI.py:356 msgid "&Zoom Fit\tV" msgstr "&Mareste și potriveste\tV" -#: flatcamGUI/FlatCAMGUI.py:344 +#: flatcamGUI/FlatCAMGUI.py:357 msgid "&Zoom In\t-" msgstr "&Mareste\t-" -#: flatcamGUI/FlatCAMGUI.py:345 +#: flatcamGUI/FlatCAMGUI.py:358 msgid "&Zoom Out\t=" msgstr "&Micsorează\t=" -#: flatcamGUI/FlatCAMGUI.py:349 +#: flatcamGUI/FlatCAMGUI.py:362 msgid "Toggle Code Editor\tCTRL+E" msgstr "Comută Editorul de cod\tCTRL+E" -#: flatcamGUI/FlatCAMGUI.py:352 +#: flatcamGUI/FlatCAMGUI.py:365 msgid "&Toggle FullScreen\tALT+F10" msgstr "Comută FullScreen\tALT+F10" -#: flatcamGUI/FlatCAMGUI.py:354 +#: flatcamGUI/FlatCAMGUI.py:367 msgid "&Toggle Plot Area\tCTRL+F10" msgstr "Comută Aria de Afișare\tCTRL+F10" -#: flatcamGUI/FlatCAMGUI.py:356 +#: flatcamGUI/FlatCAMGUI.py:369 msgid "&Toggle Project/Sel/Tool\t`" msgstr "Comută Proiect/Sel/Unealta\t`" -#: flatcamGUI/FlatCAMGUI.py:359 +#: flatcamGUI/FlatCAMGUI.py:372 msgid "&Toggle Grid Snap\tG" msgstr "Comută Grid\tG" -#: flatcamGUI/FlatCAMGUI.py:361 +#: flatcamGUI/FlatCAMGUI.py:374 msgid "&Toggle Axis\tSHIFT+G" msgstr "Comută Axe\tSHIFT+G" -#: flatcamGUI/FlatCAMGUI.py:364 +#: flatcamGUI/FlatCAMGUI.py:377 msgid "Toggle Workspace\tSHIFT+W" msgstr "Comută Suprafata de lucru\tSHIFT+W" -#: flatcamGUI/FlatCAMGUI.py:368 +#: flatcamGUI/FlatCAMGUI.py:381 msgid "&Tool" msgstr "Unelte" -#: flatcamGUI/FlatCAMGUI.py:370 +#: flatcamGUI/FlatCAMGUI.py:383 msgid "&Command Line\tS" msgstr "&Linie de comanda\tS" -#: flatcamGUI/FlatCAMGUI.py:373 +#: flatcamGUI/FlatCAMGUI.py:386 msgid "&Help" msgstr "Ajutor" -#: flatcamGUI/FlatCAMGUI.py:374 +#: flatcamGUI/FlatCAMGUI.py:387 msgid "Help\tF1" msgstr "Ajutor\tF1" -#: flatcamGUI/FlatCAMGUI.py:375 +#: flatcamGUI/FlatCAMGUI.py:388 msgid "FlatCAM.org" msgstr "FlatCAM.org" -#: flatcamGUI/FlatCAMGUI.py:378 +#: flatcamGUI/FlatCAMGUI.py:391 msgid "Shortcuts List\tF3" msgstr "Lista shortcut-uri\tF3" -#: flatcamGUI/FlatCAMGUI.py:379 +#: flatcamGUI/FlatCAMGUI.py:392 msgid "YouTube Channel\tF4" msgstr "YouTube \tF4" -#: flatcamGUI/FlatCAMGUI.py:381 +#: flatcamGUI/FlatCAMGUI.py:394 msgid "About" msgstr "Despre" -#: flatcamGUI/FlatCAMGUI.py:392 +#: flatcamGUI/FlatCAMGUI.py:405 msgid "Add Circle\tO" msgstr "Adaugă Cerc\tO" -#: flatcamGUI/FlatCAMGUI.py:394 +#: flatcamGUI/FlatCAMGUI.py:407 msgid "Add Arc\tA" msgstr "Adaugă Arc\tA" -#: flatcamGUI/FlatCAMGUI.py:397 +#: flatcamGUI/FlatCAMGUI.py:410 msgid "Add Rectangle\tR" msgstr "Adaugă Patrulater\tR" -#: flatcamGUI/FlatCAMGUI.py:400 +#: flatcamGUI/FlatCAMGUI.py:413 msgid "Add Polygon\tN" msgstr "Adaugă Poligon\tN" -#: flatcamGUI/FlatCAMGUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:415 msgid "Add Path\tP" msgstr "Adaugă Cale\tP" -#: flatcamGUI/FlatCAMGUI.py:404 +#: flatcamGUI/FlatCAMGUI.py:417 msgid "Add Text\tT" msgstr "Adaugă Text\tT" -#: flatcamGUI/FlatCAMGUI.py:407 +#: flatcamGUI/FlatCAMGUI.py:420 msgid "Polygon Union\tU" msgstr "Uniune Poligoane\tU" -#: flatcamGUI/FlatCAMGUI.py:409 +#: flatcamGUI/FlatCAMGUI.py:422 msgid "Polygon Intersection\tE" msgstr "Intersecţie Poligoane\tE" -#: flatcamGUI/FlatCAMGUI.py:411 +#: flatcamGUI/FlatCAMGUI.py:424 msgid "Polygon Subtraction\tS" msgstr "Substracţie Poligoane\tS" -#: flatcamGUI/FlatCAMGUI.py:415 +#: flatcamGUI/FlatCAMGUI.py:428 msgid "Cut Path\tX" msgstr "Tăiere Cale\tX" -#: flatcamGUI/FlatCAMGUI.py:417 +#: flatcamGUI/FlatCAMGUI.py:430 msgid "Copy Geom\tC" msgstr "Copiază Geo\tC" -#: flatcamGUI/FlatCAMGUI.py:419 +#: flatcamGUI/FlatCAMGUI.py:432 msgid "Delete Shape\tDEL" msgstr "Șterge forma Geo.\tDEL" -#: flatcamGUI/FlatCAMGUI.py:422 flatcamGUI/FlatCAMGUI.py:495 +#: flatcamGUI/FlatCAMGUI.py:435 flatcamGUI/FlatCAMGUI.py:508 msgid "Move\tM" msgstr "Muta\tM" -#: flatcamGUI/FlatCAMGUI.py:424 +#: flatcamGUI/FlatCAMGUI.py:437 msgid "Buffer Tool\tB" msgstr "Unealta Bufer\tB" -#: flatcamGUI/FlatCAMGUI.py:427 +#: flatcamGUI/FlatCAMGUI.py:440 msgid "Paint Tool\tI" msgstr "Unealta Paint\t" -#: flatcamGUI/FlatCAMGUI.py:430 +#: flatcamGUI/FlatCAMGUI.py:443 msgid "Transform Tool\tALT+R" msgstr "Unealta Transformare\tALT+R" -#: flatcamGUI/FlatCAMGUI.py:434 +#: flatcamGUI/FlatCAMGUI.py:447 msgid "Toggle Corner Snap\tK" msgstr "Comută lipire colt\tK" -#: flatcamGUI/FlatCAMGUI.py:437 +#: flatcamGUI/FlatCAMGUI.py:450 msgid ">Excellon Editor<" msgstr ">Editor Excellon<" -#: flatcamGUI/FlatCAMGUI.py:441 +#: flatcamGUI/FlatCAMGUI.py:454 msgid "Add Drill Array\tA" msgstr "Adaugă Arie Găuriri\tA" -#: flatcamGUI/FlatCAMGUI.py:443 +#: flatcamGUI/FlatCAMGUI.py:456 msgid "Add Drill\tD" msgstr "Adaugă Găurire\tD" -#: flatcamGUI/FlatCAMGUI.py:447 +#: flatcamGUI/FlatCAMGUI.py:460 msgid "Resize Drill(S)\tR" msgstr "Redimens. Găuriri\tR" -#: flatcamGUI/FlatCAMGUI.py:449 flatcamGUI/FlatCAMGUI.py:488 +#: flatcamGUI/FlatCAMGUI.py:462 flatcamGUI/FlatCAMGUI.py:501 msgid "Copy\tC" msgstr "Copiază\tC" -#: flatcamGUI/FlatCAMGUI.py:451 flatcamGUI/FlatCAMGUI.py:490 +#: flatcamGUI/FlatCAMGUI.py:464 flatcamGUI/FlatCAMGUI.py:503 msgid "Delete\tDEL" msgstr "Șterge\tDEL" -#: flatcamGUI/FlatCAMGUI.py:456 +#: flatcamGUI/FlatCAMGUI.py:469 msgid "Move Drill(s)\tM" msgstr "Muta Găuriri\tM" -#: flatcamGUI/FlatCAMGUI.py:460 +#: flatcamGUI/FlatCAMGUI.py:473 msgid ">Gerber Editor<" msgstr ">Editor Gerber<" -#: flatcamGUI/FlatCAMGUI.py:464 +#: flatcamGUI/FlatCAMGUI.py:477 msgid "Add Pad\tP" msgstr "Adaugă Pad\tP" -#: flatcamGUI/FlatCAMGUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:479 msgid "Add Pad Array\tA" msgstr "Adaugă Arie paduri\tA" -#: flatcamGUI/FlatCAMGUI.py:468 +#: flatcamGUI/FlatCAMGUI.py:481 msgid "Add Track\tT" msgstr "Adaugă Traseu\tA" -#: flatcamGUI/FlatCAMGUI.py:470 +#: flatcamGUI/FlatCAMGUI.py:483 msgid "Add Region\tN" msgstr "Adaugă Regiune\tN" -#: flatcamGUI/FlatCAMGUI.py:474 +#: flatcamGUI/FlatCAMGUI.py:487 msgid "Poligonize\tALT+N" msgstr "Poligonizare\tALT+N" -#: flatcamGUI/FlatCAMGUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:489 msgid "Add SemiDisc\tE" msgstr "Adaugă SemiDisc\tE" -#: flatcamGUI/FlatCAMGUI.py:478 +#: flatcamGUI/FlatCAMGUI.py:491 msgid "Add Disc\tD" msgstr "Adaugă Disc\tD" -#: flatcamGUI/FlatCAMGUI.py:480 +#: flatcamGUI/FlatCAMGUI.py:493 msgid "Buffer\tB" msgstr "Bufer\tB" -#: flatcamGUI/FlatCAMGUI.py:482 +#: flatcamGUI/FlatCAMGUI.py:495 msgid "Scale\tS" msgstr "Scalare\tS" -#: flatcamGUI/FlatCAMGUI.py:484 +#: flatcamGUI/FlatCAMGUI.py:497 msgid "Transform\tALT+R" msgstr "Unealta Transformare\tALT+R" -#: flatcamGUI/FlatCAMGUI.py:511 +#: flatcamGUI/FlatCAMGUI.py:524 msgid "Enable Plot" msgstr "Activează Afișare" -#: flatcamGUI/FlatCAMGUI.py:512 +#: flatcamGUI/FlatCAMGUI.py:525 msgid "Disable Plot" msgstr "Dezactivează Afișare" -#: flatcamGUI/FlatCAMGUI.py:514 +#: flatcamGUI/FlatCAMGUI.py:527 msgid "Generate CNC" msgstr "Generează CNC" -#: flatcamGUI/FlatCAMGUI.py:515 +#: flatcamGUI/FlatCAMGUI.py:528 msgid "View Source" msgstr "Vizualiz. Sursa" -#: flatcamGUI/FlatCAMGUI.py:517 flatcamGUI/FlatCAMGUI.py:1603 +#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1617 msgid "Edit" msgstr "Editează" -#: flatcamGUI/FlatCAMGUI.py:523 flatcamGUI/FlatCAMGUI.py:1609 +#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1623 #: flatcamTools/ToolProperties.py:25 msgid "Properties" msgstr "Proprietati" -#: flatcamGUI/FlatCAMGUI.py:552 +#: flatcamGUI/FlatCAMGUI.py:565 msgid "File Toolbar" msgstr "Toolbar Fişiere" -#: flatcamGUI/FlatCAMGUI.py:556 +#: flatcamGUI/FlatCAMGUI.py:569 msgid "Edit Toolbar" msgstr "Toolbar Editare" -#: flatcamGUI/FlatCAMGUI.py:560 +#: flatcamGUI/FlatCAMGUI.py:573 msgid "View Toolbar" msgstr "Toolbar Vizualizare" -#: flatcamGUI/FlatCAMGUI.py:564 +#: flatcamGUI/FlatCAMGUI.py:577 msgid "Shell Toolbar" msgstr "Toolbar Linie de comanda" -#: flatcamGUI/FlatCAMGUI.py:568 +#: flatcamGUI/FlatCAMGUI.py:581 msgid "Tools Toolbar" msgstr "Toolbar Unelte" -#: flatcamGUI/FlatCAMGUI.py:572 +#: flatcamGUI/FlatCAMGUI.py:585 msgid "Excellon Editor Toolbar" msgstr "Toolbar Editor Excellon" -#: flatcamGUI/FlatCAMGUI.py:576 +#: flatcamGUI/FlatCAMGUI.py:589 msgid "Geometry Editor Toolbar" msgstr "Toolbar Editor Geometrii" -#: flatcamGUI/FlatCAMGUI.py:580 +#: flatcamGUI/FlatCAMGUI.py:593 msgid "Gerber Editor Toolbar" msgstr "Toolbar Editor Gerber" -#: flatcamGUI/FlatCAMGUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:597 msgid "Grid Toolbar" msgstr "Toolbar Grid-uri" -#: flatcamGUI/FlatCAMGUI.py:603 flatcamGUI/FlatCAMGUI.py:1820 +#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1834 msgid "Open project" msgstr "Încarcă Proiect" -#: flatcamGUI/FlatCAMGUI.py:604 flatcamGUI/FlatCAMGUI.py:1821 +#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1835 msgid "Save project" msgstr "Salvează Proiect" -#: flatcamGUI/FlatCAMGUI.py:607 flatcamGUI/FlatCAMGUI.py:1824 +#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1838 msgid "New Blank Geometry" msgstr "Geometrie Noua (goală)" -#: flatcamGUI/FlatCAMGUI.py:608 +#: flatcamGUI/FlatCAMGUI.py:621 msgid "New Blank Gerber" msgstr "Gerber Nou (gol)" -#: flatcamGUI/FlatCAMGUI.py:609 flatcamGUI/FlatCAMGUI.py:1825 +#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1839 msgid "New Blank Excellon" msgstr "Excellon nou (gol)" -#: flatcamGUI/FlatCAMGUI.py:611 flatcamGUI/FlatCAMGUI.py:1827 +#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1841 msgid "Editor" msgstr "Editor" -#: flatcamGUI/FlatCAMGUI.py:613 flatcamGUI/FlatCAMGUI.py:1829 +#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1843 msgid "Save Object and close the Editor" msgstr "Salvează Obiectul și inchide Editorul" -#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1833 +#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1847 msgid "&Delete" msgstr "&Șterge" -#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1836 +#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1850 msgid "&Replot" msgstr "&Reafișare" -#: flatcamGUI/FlatCAMGUI.py:621 flatcamGUI/FlatCAMGUI.py:1837 +#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1851 msgid "&Clear plot" msgstr "&Șterge Afișare" -#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1838 +#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1852 msgid "Zoom In" msgstr "Marire" -#: flatcamGUI/FlatCAMGUI.py:623 flatcamGUI/FlatCAMGUI.py:1839 +#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1853 msgid "Zoom Out" msgstr "Micsorare" -#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1578 -#: flatcamGUI/FlatCAMGUI.py:1840 +#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1854 msgid "Zoom Fit" msgstr "Marire și ajustare" -#: flatcamGUI/FlatCAMGUI.py:629 flatcamGUI/FlatCAMGUI.py:1845 +#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1859 msgid "&Command Line" msgstr "&Linie de comanda" -#: flatcamGUI/FlatCAMGUI.py:632 flatcamGUI/FlatCAMGUI.py:1848 +#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1862 msgid "2Sided Tool" msgstr "Unealta 2-fețe" -#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1849 +#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1863 msgid "&Cutout Tool" msgstr "Unealta Decupare" -#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1850 +#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1864 #: flatcamGUI/ObjectUI.py:392 flatcamTools/ToolNonCopperClear.py:285 msgid "NCC Tool" msgstr "Unealta NCC" -#: flatcamGUI/FlatCAMGUI.py:638 flatcamGUI/FlatCAMGUI.py:1854 +#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1868 msgid "Panel Tool" msgstr "Unealta Panel" -#: flatcamGUI/FlatCAMGUI.py:639 flatcamGUI/FlatCAMGUI.py:1855 +#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1869 #: flatcamTools/ToolFilm.py:204 msgid "Film Tool" msgstr "Unealta Film" -#: flatcamGUI/FlatCAMGUI.py:640 flatcamGUI/FlatCAMGUI.py:1857 +#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1871 msgid "SolderPaste Tool" msgstr "Unealta Dispenser SP" -#: flatcamGUI/FlatCAMGUI.py:641 flatcamGUI/FlatCAMGUI.py:1858 +#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1872 #: flatcamTools/ToolSub.py:26 msgid "Substract Tool" msgstr "Unealta Scădere" -#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1863 +#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1877 msgid "Calculators Tool" msgstr "Unealta Calculatoare" -#: flatcamGUI/FlatCAMGUI.py:649 flatcamGUI/FlatCAMGUI.py:663 -#: flatcamGUI/FlatCAMGUI.py:696 flatcamGUI/FlatCAMGUI.py:1867 -#: flatcamGUI/FlatCAMGUI.py:1917 +#: flatcamGUI/FlatCAMGUI.py:662 flatcamGUI/FlatCAMGUI.py:676 +#: flatcamGUI/FlatCAMGUI.py:709 flatcamGUI/FlatCAMGUI.py:1881 +#: flatcamGUI/FlatCAMGUI.py:1931 msgid "Select" msgstr "Selectează" -#: flatcamGUI/FlatCAMGUI.py:650 flatcamGUI/FlatCAMGUI.py:1868 +#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1882 msgid "Add Drill Hole" msgstr "Adaugă o Găurire" -#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1870 +#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1884 msgid "Add Drill Hole Array" msgstr "Adaugă o arie de Găuriri" -#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1871 +#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1885 msgid "Resize Drill" msgstr "Redimens. Găurire" -#: flatcamGUI/FlatCAMGUI.py:656 flatcamGUI/FlatCAMGUI.py:1874 +#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1888 msgid "Copy Drill" msgstr "Copiază Găurire" -#: flatcamGUI/FlatCAMGUI.py:657 flatcamGUI/FlatCAMGUI.py:1876 +#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1890 msgid "Delete Drill" msgstr "Șterge Găurire" -#: flatcamGUI/FlatCAMGUI.py:660 flatcamGUI/FlatCAMGUI.py:1879 +#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1893 msgid "Move Drill" msgstr "Muta Găurire" -#: flatcamGUI/FlatCAMGUI.py:664 flatcamGUI/FlatCAMGUI.py:1883 +#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1897 msgid "Add Circle" msgstr "Adaugă Cerc" -#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1884 +#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1898 msgid "Add Arc" msgstr "Adaugă Arc" -#: flatcamGUI/FlatCAMGUI.py:667 flatcamGUI/FlatCAMGUI.py:1886 +#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1900 msgid "Add Rectangle" msgstr "Adaugă Patrulater" -#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1889 +#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1903 msgid "Add Path" msgstr "Adaugă Cale" -#: flatcamGUI/FlatCAMGUI.py:671 flatcamGUI/FlatCAMGUI.py:1891 +#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1905 msgid "Add Polygon" msgstr "Adaugă Poligon" -#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1893 +#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1907 msgid "Add Text" msgstr "Adaugă Text" -#: flatcamGUI/FlatCAMGUI.py:674 flatcamGUI/FlatCAMGUI.py:1895 +#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1909 msgid "Add Buffer" msgstr "Adaugă Bufer" -#: flatcamGUI/FlatCAMGUI.py:675 flatcamGUI/FlatCAMGUI.py:1896 +#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1910 msgid "Paint Shape" msgstr "Paint o forma" -#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1899 +#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:1913 msgid "Polygon Union" msgstr "Uniune Poligoane" -#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1901 +#: flatcamGUI/FlatCAMGUI.py:693 flatcamGUI/FlatCAMGUI.py:1915 msgid "Polygon Intersection" msgstr "Intersecţie Poligoane" -#: flatcamGUI/FlatCAMGUI.py:682 flatcamGUI/FlatCAMGUI.py:1903 +#: flatcamGUI/FlatCAMGUI.py:695 flatcamGUI/FlatCAMGUI.py:1917 msgid "Polygon Subtraction" msgstr "Substracţie Poligoane" -#: flatcamGUI/FlatCAMGUI.py:685 flatcamGUI/FlatCAMGUI.py:1906 +#: flatcamGUI/FlatCAMGUI.py:698 flatcamGUI/FlatCAMGUI.py:1920 msgid "Cut Path" msgstr "Taie Cale" -#: flatcamGUI/FlatCAMGUI.py:686 +#: flatcamGUI/FlatCAMGUI.py:699 msgid "Copy Shape(s)" msgstr "Copiază forme geo." -#: flatcamGUI/FlatCAMGUI.py:689 +#: flatcamGUI/FlatCAMGUI.py:702 msgid "Delete Shape '-'" msgstr "Șterge forme geo." -#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:715 -#: flatcamGUI/FlatCAMGUI.py:1911 flatcamGUI/FlatCAMGUI.py:1936 +#: flatcamGUI/FlatCAMGUI.py:704 flatcamGUI/FlatCAMGUI.py:728 +#: flatcamGUI/FlatCAMGUI.py:1925 flatcamGUI/FlatCAMGUI.py:1950 msgid "Transformations" msgstr "Transformări" -#: flatcamGUI/FlatCAMGUI.py:693 +#: flatcamGUI/FlatCAMGUI.py:706 msgid "Move Objects " msgstr "Muta obiecte" -#: flatcamGUI/FlatCAMGUI.py:697 flatcamGUI/FlatCAMGUI.py:1918 +#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1932 msgid "Add Pad" msgstr "Adaugă Pad" -#: flatcamGUI/FlatCAMGUI.py:699 flatcamGUI/FlatCAMGUI.py:1920 +#: flatcamGUI/FlatCAMGUI.py:712 flatcamGUI/FlatCAMGUI.py:1934 msgid "Add Track" msgstr "Adaugă Traseu" -#: flatcamGUI/FlatCAMGUI.py:700 flatcamGUI/FlatCAMGUI.py:1921 +#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1935 msgid "Add Region" msgstr "Adaugă Regiune" -#: flatcamGUI/FlatCAMGUI.py:702 flatcamGUI/FlatCAMGUI.py:1923 +#: flatcamGUI/FlatCAMGUI.py:715 flatcamGUI/FlatCAMGUI.py:1937 msgid "Poligonize" msgstr "Poligonizare" -#: flatcamGUI/FlatCAMGUI.py:704 flatcamGUI/FlatCAMGUI.py:1925 +#: flatcamGUI/FlatCAMGUI.py:717 flatcamGUI/FlatCAMGUI.py:1939 msgid "SemiDisc" msgstr "SemiDisc" -#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:1926 +#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1940 msgid "Disc" msgstr "Disc" -#: flatcamGUI/FlatCAMGUI.py:717 flatcamGUI/FlatCAMGUI.py:1588 -#: flatcamGUI/FlatCAMGUI.py:1608 flatcamGUI/FlatCAMGUI.py:1938 +#: flatcamGUI/FlatCAMGUI.py:730 flatcamGUI/FlatCAMGUI.py:1602 +#: flatcamGUI/FlatCAMGUI.py:1622 flatcamGUI/FlatCAMGUI.py:1952 #: flatcamTools/ToolMove.py:26 msgid "Move" msgstr "Mutare" -#: flatcamGUI/FlatCAMGUI.py:723 flatcamGUI/FlatCAMGUI.py:1944 +#: flatcamGUI/FlatCAMGUI.py:736 flatcamGUI/FlatCAMGUI.py:1958 msgid "Snap to grid" msgstr "Lipire la grid" -#: flatcamGUI/FlatCAMGUI.py:726 flatcamGUI/FlatCAMGUI.py:1947 +#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1961 msgid "Grid X snapping distance" msgstr "Distanta de lipire la grid pe axa X" -#: flatcamGUI/FlatCAMGUI.py:731 flatcamGUI/FlatCAMGUI.py:1952 +#: flatcamGUI/FlatCAMGUI.py:744 flatcamGUI/FlatCAMGUI.py:1966 msgid "Grid Y snapping distance" msgstr "Distanta de lipire la grid pe axa Y" -#: flatcamGUI/FlatCAMGUI.py:737 flatcamGUI/FlatCAMGUI.py:1958 +#: flatcamGUI/FlatCAMGUI.py:750 flatcamGUI/FlatCAMGUI.py:1972 msgid "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." @@ -4431,64 +4526,64 @@ msgstr "" "când este activ, valoarea de pe Grid_X\n" "este copiata și in Grid_Y" -#: flatcamGUI/FlatCAMGUI.py:743 flatcamGUI/FlatCAMGUI.py:1964 +#: flatcamGUI/FlatCAMGUI.py:756 flatcamGUI/FlatCAMGUI.py:1978 msgid "Snap to corner" msgstr "Lipire la colt" -#: flatcamGUI/FlatCAMGUI.py:747 flatcamGUI/FlatCAMGUI.py:1968 -#: flatcamGUI/FlatCAMGUI.py:3311 +#: flatcamGUI/FlatCAMGUI.py:760 flatcamGUI/FlatCAMGUI.py:1982 +#: flatcamGUI/FlatCAMGUI.py:3339 msgid "Max. magnet distance" msgstr "Distanta magnetica maxima" -#: flatcamGUI/FlatCAMGUI.py:775 flatcamGUI/FlatCAMGUI.py:1572 +#: flatcamGUI/FlatCAMGUI.py:788 flatcamGUI/FlatCAMGUI.py:1586 msgid "Project" msgstr "Proiect" -#: flatcamGUI/FlatCAMGUI.py:785 +#: flatcamGUI/FlatCAMGUI.py:798 msgid "Selected" msgstr "Selectat" -#: flatcamGUI/FlatCAMGUI.py:804 flatcamGUI/FlatCAMGUI.py:812 +#: flatcamGUI/FlatCAMGUI.py:817 flatcamGUI/FlatCAMGUI.py:825 msgid "Plot Area" msgstr "Arie Afișare" -#: flatcamGUI/FlatCAMGUI.py:836 +#: flatcamGUI/FlatCAMGUI.py:849 msgid "General" msgstr "General" -#: flatcamGUI/FlatCAMGUI.py:845 +#: flatcamGUI/FlatCAMGUI.py:858 msgid "APP. DEFAULTS" msgstr "Default for App" -#: flatcamGUI/FlatCAMGUI.py:846 +#: flatcamGUI/FlatCAMGUI.py:859 msgid "PROJ. OPTIONS " msgstr "Opțiuni Proiect" -#: flatcamGUI/FlatCAMGUI.py:857 +#: flatcamGUI/FlatCAMGUI.py:870 msgid "GERBER" msgstr "GERBER" -#: flatcamGUI/FlatCAMGUI.py:866 +#: flatcamGUI/FlatCAMGUI.py:879 msgid "EXCELLON" msgstr "EXCELLON" -#: flatcamGUI/FlatCAMGUI.py:875 +#: flatcamGUI/FlatCAMGUI.py:888 msgid "GEOMETRY" msgstr "GEOMETRIE" -#: flatcamGUI/FlatCAMGUI.py:885 +#: flatcamGUI/FlatCAMGUI.py:898 msgid "CNC-JOB" msgstr "CNCJob" -#: flatcamGUI/FlatCAMGUI.py:894 +#: flatcamGUI/FlatCAMGUI.py:907 msgid "TOOLS" msgstr "Unelte" -#: flatcamGUI/FlatCAMGUI.py:911 +#: flatcamGUI/FlatCAMGUI.py:924 msgid "Import Preferences" msgstr "Importa Preferințele" -#: flatcamGUI/FlatCAMGUI.py:914 +#: flatcamGUI/FlatCAMGUI.py:927 msgid "" "Import a full set of FlatCAM settings from a file\n" "previously saved on HDD.\n" @@ -4502,11 +4597,11 @@ msgstr "" "FlatCAM salvează automat un fişier numit 'factory_defaults'\n" "la prima pornire. Nu șterge acel fişier." -#: flatcamGUI/FlatCAMGUI.py:921 +#: flatcamGUI/FlatCAMGUI.py:934 msgid "Export Preferences" msgstr "Exporta Preferințele" -#: flatcamGUI/FlatCAMGUI.py:924 +#: flatcamGUI/FlatCAMGUI.py:937 msgid "" "Export a full set of FlatCAM settings in a file\n" "that is saved on HDD." @@ -4514,19 +4609,19 @@ msgstr "" "Exporta un set complet de setări ale FlatCAM\n" "intr-un fişier care se salvează pe HDD." -#: flatcamGUI/FlatCAMGUI.py:929 +#: flatcamGUI/FlatCAMGUI.py:942 msgid "Open Pref Folder" msgstr "Deschide Pref Dir" -#: flatcamGUI/FlatCAMGUI.py:932 +#: flatcamGUI/FlatCAMGUI.py:945 msgid "Open the folder where FlatCAM save the preferences files." msgstr "Deschide directorul unde FlatCAM salvează fişierele cu setări." -#: flatcamGUI/FlatCAMGUI.py:940 +#: flatcamGUI/FlatCAMGUI.py:953 msgid "Save Preferences" msgstr "Salvează Pref" -#: flatcamGUI/FlatCAMGUI.py:943 +#: flatcamGUI/FlatCAMGUI.py:956 msgid "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." @@ -4534,7 +4629,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:969 +#: flatcamGUI/FlatCAMGUI.py:982 msgid "" "General Shortcut list
\n" " Editor Shortcut list
\n" "
\n" @@ -5729,99 +5824,99 @@ msgstr "" "
\n" " " -#: flatcamGUI/FlatCAMGUI.py:1566 +#: flatcamGUI/FlatCAMGUI.py:1579 msgid "Disable" msgstr "Dezactivează" -#: flatcamGUI/FlatCAMGUI.py:1568 +#: flatcamGUI/FlatCAMGUI.py:1581 msgid "New" msgstr "Nou" -#: flatcamGUI/FlatCAMGUI.py:1569 +#: flatcamGUI/FlatCAMGUI.py:1582 msgid "Geometry" msgstr "Geometrie" -#: flatcamGUI/FlatCAMGUI.py:1570 +#: flatcamGUI/FlatCAMGUI.py:1584 msgid "Excellon" msgstr "Excellon" -#: flatcamGUI/FlatCAMGUI.py:1575 +#: flatcamGUI/FlatCAMGUI.py:1589 msgid "Grids" msgstr "Grid-uri" -#: flatcamGUI/FlatCAMGUI.py:1577 +#: flatcamGUI/FlatCAMGUI.py:1591 msgid "View" msgstr "Vizualizare" -#: flatcamGUI/FlatCAMGUI.py:1579 +#: flatcamGUI/FlatCAMGUI.py:1593 msgid "Clear Plot" msgstr "Șterge Afișare" -#: flatcamGUI/FlatCAMGUI.py:1580 +#: flatcamGUI/FlatCAMGUI.py:1594 msgid "Replot" msgstr "Reafișare" -#: flatcamGUI/FlatCAMGUI.py:1583 +#: flatcamGUI/FlatCAMGUI.py:1597 msgid "Geo Editor" msgstr "Editor Geometrii" -#: flatcamGUI/FlatCAMGUI.py:1584 +#: flatcamGUI/FlatCAMGUI.py:1598 msgid "Line" msgstr "Linie" -#: flatcamGUI/FlatCAMGUI.py:1585 +#: flatcamGUI/FlatCAMGUI.py:1599 msgid "Rectangle" msgstr "Patrulater" -#: flatcamGUI/FlatCAMGUI.py:1586 +#: flatcamGUI/FlatCAMGUI.py:1600 msgid "Cut" msgstr "Tăiere" -#: flatcamGUI/FlatCAMGUI.py:1591 +#: flatcamGUI/FlatCAMGUI.py:1605 msgid "Pad" msgstr "Pad" -#: flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1606 msgid "Pad Array" msgstr "Arie de paduri" -#: flatcamGUI/FlatCAMGUI.py:1593 +#: flatcamGUI/FlatCAMGUI.py:1607 msgid "Track" msgstr "Traseu" -#: flatcamGUI/FlatCAMGUI.py:1594 +#: flatcamGUI/FlatCAMGUI.py:1608 msgid "Region" msgstr "Regiune" -#: flatcamGUI/FlatCAMGUI.py:1596 +#: flatcamGUI/FlatCAMGUI.py:1610 msgid "Exc Editor" msgstr "Editor EXC." -#: flatcamGUI/FlatCAMGUI.py:1597 +#: flatcamGUI/FlatCAMGUI.py:1611 msgid "Add Drill" msgstr "Adaugă găurire" -#: flatcamGUI/FlatCAMGUI.py:1629 +#: flatcamGUI/FlatCAMGUI.py:1643 msgid "Print Preview" msgstr "Preview tiparire" -#: flatcamGUI/FlatCAMGUI.py:1630 +#: flatcamGUI/FlatCAMGUI.py:1644 msgid "Print Code" msgstr "Tipareste Cod" -#: flatcamGUI/FlatCAMGUI.py:1631 +#: flatcamGUI/FlatCAMGUI.py:1645 msgid "Find in Code" msgstr "Cauta in Cod" -#: flatcamGUI/FlatCAMGUI.py:1636 +#: flatcamGUI/FlatCAMGUI.py:1650 msgid "Replace With" msgstr "Inlocuieste cu" -#: flatcamGUI/FlatCAMGUI.py:1640 +#: flatcamGUI/FlatCAMGUI.py:1654 msgid "All" msgstr "Toate" -#: flatcamGUI/FlatCAMGUI.py:1642 +#: flatcamGUI/FlatCAMGUI.py:1656 msgid "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." @@ -5830,15 +5925,15 @@ msgstr "" "'Cauta'\n" "cu textul din casuta 'Inlocuieste'" -#: flatcamGUI/FlatCAMGUI.py:1645 +#: flatcamGUI/FlatCAMGUI.py:1659 msgid "Open Code" msgstr "Deschide Cod" -#: flatcamGUI/FlatCAMGUI.py:1646 +#: flatcamGUI/FlatCAMGUI.py:1660 msgid "Save Code" msgstr "Salvează Cod" -#: flatcamGUI/FlatCAMGUI.py:1681 +#: flatcamGUI/FlatCAMGUI.py:1695 msgid "" "Relative neasurement.\n" "Reference is last click position" @@ -5846,7 +5941,7 @@ msgstr "" "Masuratoare relativa.\n" "Referința este poziţia ultimului click pe canvas." -#: flatcamGUI/FlatCAMGUI.py:1687 +#: flatcamGUI/FlatCAMGUI.py:1701 msgid "" "Absolute neasurement.\n" "Reference is (X=0, Y= 0) position" @@ -5854,23 +5949,23 @@ msgstr "" "Masuratoare absoluta.\n" "Referința este originea (0, 0)." -#: flatcamGUI/FlatCAMGUI.py:1882 +#: flatcamGUI/FlatCAMGUI.py:1896 msgid "Select 'Esc'" msgstr "Select" -#: flatcamGUI/FlatCAMGUI.py:1907 +#: flatcamGUI/FlatCAMGUI.py:1921 msgid "Copy Objects" msgstr "Copiază Obiecte" -#: flatcamGUI/FlatCAMGUI.py:1909 +#: flatcamGUI/FlatCAMGUI.py:1923 msgid "Delete Shape" msgstr "Șterge forme geo" -#: flatcamGUI/FlatCAMGUI.py:1914 +#: flatcamGUI/FlatCAMGUI.py:1928 msgid "Move Objects" msgstr "Muta Obiecte" -#: flatcamGUI/FlatCAMGUI.py:2343 +#: flatcamGUI/FlatCAMGUI.py:2358 msgid "" "Please first select a geometry item to be cutted\n" "then select the geometry item that will be cutted\n" @@ -5881,17 +5976,17 @@ msgstr "" "apoi selectează forma geo. taietoare. La final apasa tasta ~X~ sau\n" "butonul corespunzator din Toolbar." -#: flatcamGUI/FlatCAMGUI.py:2350 flatcamGUI/FlatCAMGUI.py:2487 -#: flatcamGUI/FlatCAMGUI.py:2546 flatcamGUI/FlatCAMGUI.py:2566 +#: flatcamGUI/FlatCAMGUI.py:2365 flatcamGUI/FlatCAMGUI.py:2502 +#: flatcamGUI/FlatCAMGUI.py:2561 flatcamGUI/FlatCAMGUI.py:2581 msgid "Warning" msgstr "Atenţie" -#: flatcamGUI/FlatCAMGUI.py:2417 flatcamGUI/FlatCAMGUI.py:2616 -#: flatcamGUI/FlatCAMGUI.py:2827 +#: flatcamGUI/FlatCAMGUI.py:2432 flatcamGUI/FlatCAMGUI.py:2631 +#: flatcamGUI/FlatCAMGUI.py:2842 msgid "[WARNING_NOTCL] Cancelled." msgstr "[WARNING_NOTCL] Anulat." -#: flatcamGUI/FlatCAMGUI.py:2482 +#: flatcamGUI/FlatCAMGUI.py:2497 msgid "" "Please select geometry items \n" "on which to perform Intersection Tool." @@ -5899,7 +5994,7 @@ msgstr "" "Selectează forma geometrică asupra careia să se\n" "aplice Unealta Intersecţie." -#: flatcamGUI/FlatCAMGUI.py:2541 +#: flatcamGUI/FlatCAMGUI.py:2556 msgid "" "Please select geometry items \n" "on which to perform Substraction Tool." @@ -5907,7 +6002,7 @@ msgstr "" "Selectează forma geometrică asupra careia să se\n" "aplice Unealta Substracţie." -#: flatcamGUI/FlatCAMGUI.py:2561 +#: flatcamGUI/FlatCAMGUI.py:2576 msgid "" "Please select geometry items \n" "on which to perform union." @@ -5915,55 +6010,55 @@ msgstr "" "Selectează forma geometrică asupra careia să se\n" "aplice Unealta Uniune." -#: flatcamGUI/FlatCAMGUI.py:2632 flatcamGUI/FlatCAMGUI.py:2844 +#: flatcamGUI/FlatCAMGUI.py:2647 flatcamGUI/FlatCAMGUI.py:2859 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to delete." msgstr "[WARNING_NOTCL] Anulat. Nimic nu este selectat pentru ștergere." -#: flatcamGUI/FlatCAMGUI.py:2716 flatcamGUI/FlatCAMGUI.py:2911 +#: flatcamGUI/FlatCAMGUI.py:2731 flatcamGUI/FlatCAMGUI.py:2926 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to copy." msgstr "[WARNING_NOTCL] Anulat. Nimic nu este selectat pentru copiere." -#: flatcamGUI/FlatCAMGUI.py:2762 flatcamGUI/FlatCAMGUI.py:2957 +#: flatcamGUI/FlatCAMGUI.py:2777 flatcamGUI/FlatCAMGUI.py:2972 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to move." msgstr "[WARNING_NOTCL] Anulat. Nimic nu este selectat pentru mutare." -#: flatcamGUI/FlatCAMGUI.py:2971 +#: flatcamGUI/FlatCAMGUI.py:2986 msgid "New Tool ..." msgstr "O noua Unealta ..." -#: flatcamGUI/FlatCAMGUI.py:2972 +#: flatcamGUI/FlatCAMGUI.py:2987 msgid "Enter a Tool Diameter:" msgstr "Introdu un Diametru de Unealta:" -#: flatcamGUI/FlatCAMGUI.py:3014 +#: flatcamGUI/FlatCAMGUI.py:3029 msgid "Measurement Tool exit..." msgstr "Măsurătoarea s-a terminat ..." -#: flatcamGUI/FlatCAMGUI.py:3296 +#: flatcamGUI/FlatCAMGUI.py:3324 msgid "Grid X value:" msgstr "Valoarea Grid_X:" -#: flatcamGUI/FlatCAMGUI.py:3298 +#: flatcamGUI/FlatCAMGUI.py:3326 msgid "This is the Grid snap value on X axis." msgstr "Aceasta este valoare pentru lipire pe Grid pe axa X." -#: flatcamGUI/FlatCAMGUI.py:3303 +#: flatcamGUI/FlatCAMGUI.py:3331 msgid "Grid Y value:" msgstr "Valoarea Grid_Y:" -#: flatcamGUI/FlatCAMGUI.py:3305 +#: flatcamGUI/FlatCAMGUI.py:3333 msgid "This is the Grid snap value on Y axis." msgstr "Aceasta este valoare pentru lipire pe Grid pe axa Y." -#: flatcamGUI/FlatCAMGUI.py:3310 +#: flatcamGUI/FlatCAMGUI.py:3338 msgid "Snap Max:" msgstr "Lipire Max:" -#: flatcamGUI/FlatCAMGUI.py:3315 +#: flatcamGUI/FlatCAMGUI.py:3343 msgid "Workspace:" msgstr "Spatiu de lucru:" -#: flatcamGUI/FlatCAMGUI.py:3317 +#: flatcamGUI/FlatCAMGUI.py:3345 msgid "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." @@ -5971,11 +6066,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:3320 +#: flatcamGUI/FlatCAMGUI.py:3348 msgid "Wk. format:" msgstr "Format SL:" -#: flatcamGUI/FlatCAMGUI.py:3322 +#: flatcamGUI/FlatCAMGUI.py:3350 msgid "" "Select the type of rectangle to be used on canvas,\n" "as valid workspace." @@ -5983,11 +6078,11 @@ msgstr "" "Selectează tipul de patrulater care va fi desenat pe canvas,\n" "pentru a delimita suprafata de lucru disponibila (SL)." -#: flatcamGUI/FlatCAMGUI.py:3335 +#: flatcamGUI/FlatCAMGUI.py:3363 msgid "Plot Fill:" msgstr "Culoare Afișare:" -#: flatcamGUI/FlatCAMGUI.py:3337 +#: flatcamGUI/FlatCAMGUI.py:3365 msgid "" "Set the fill color for plotted objects.\n" "First 6 digits are the color and the last 2\n" @@ -5997,28 +6092,28 @@ msgstr "" "Primii 6 digiti sunt culoarea efectiva și ultimii\n" "doi sunt pentru nivelul de transparenţă (alfa)." -#: flatcamGUI/FlatCAMGUI.py:3351 flatcamGUI/FlatCAMGUI.py:3401 -#: flatcamGUI/FlatCAMGUI.py:3451 +#: flatcamGUI/FlatCAMGUI.py:3379 flatcamGUI/FlatCAMGUI.py:3429 +#: flatcamGUI/FlatCAMGUI.py:3479 msgid "Alpha Level:" msgstr "Nivel Alfa:" -#: flatcamGUI/FlatCAMGUI.py:3353 +#: flatcamGUI/FlatCAMGUI.py:3381 msgid "Set the fill transparency for plotted objects." msgstr "Setează nivelul de transparenţa pentru obiectele afisate." -#: flatcamGUI/FlatCAMGUI.py:3370 +#: flatcamGUI/FlatCAMGUI.py:3398 msgid "Plot Line:" msgstr "Culoare contur:" -#: flatcamGUI/FlatCAMGUI.py:3372 +#: flatcamGUI/FlatCAMGUI.py:3400 msgid "Set the line color for plotted objects." msgstr "Setează culoarea conturului." -#: flatcamGUI/FlatCAMGUI.py:3384 +#: flatcamGUI/FlatCAMGUI.py:3412 msgid "Sel. Fill:" msgstr "Culoare Selecţie:" -#: flatcamGUI/FlatCAMGUI.py:3386 +#: flatcamGUI/FlatCAMGUI.py:3414 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from left to right.\n" @@ -6030,27 +6125,27 @@ msgstr "" "Primii 6 digiti sunt culoarea efectiva și ultimii\n" "doi sunt pentru nivelul de transparenţă (alfa)." -#: flatcamGUI/FlatCAMGUI.py:3403 +#: flatcamGUI/FlatCAMGUI.py:3431 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:3420 +#: flatcamGUI/FlatCAMGUI.py:3448 msgid "Sel. Line:" msgstr "Contur Selecţie:" -#: flatcamGUI/FlatCAMGUI.py:3422 +#: flatcamGUI/FlatCAMGUI.py:3450 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:3434 +#: flatcamGUI/FlatCAMGUI.py:3462 msgid "Sel2. Fill:" msgstr "Culoare Selecţie 2:" -#: flatcamGUI/FlatCAMGUI.py:3436 +#: flatcamGUI/FlatCAMGUI.py:3464 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from right to left.\n" @@ -6062,53 +6157,53 @@ msgstr "" "Primii 6 digiti sunt culoarea efectiva și ultimii\n" "doi sunt pentru nivelul de transparenţă (alfa)." -#: flatcamGUI/FlatCAMGUI.py:3453 +#: flatcamGUI/FlatCAMGUI.py:3481 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:3470 +#: flatcamGUI/FlatCAMGUI.py:3498 msgid "Sel2. Line:" msgstr "Contur Selecţie 2:" -#: flatcamGUI/FlatCAMGUI.py:3472 +#: flatcamGUI/FlatCAMGUI.py:3500 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:3484 +#: flatcamGUI/FlatCAMGUI.py:3512 msgid "Editor Draw:" msgstr "Desen Editor:" -#: flatcamGUI/FlatCAMGUI.py:3486 +#: flatcamGUI/FlatCAMGUI.py:3514 msgid "Set the color for the shape." msgstr "Setează culoarea pentru forma geometrică din Editor." -#: flatcamGUI/FlatCAMGUI.py:3498 +#: flatcamGUI/FlatCAMGUI.py:3526 msgid "Editor Draw Sel.:" msgstr "Sel. Desen Editor:" -#: flatcamGUI/FlatCAMGUI.py:3500 +#: flatcamGUI/FlatCAMGUI.py:3528 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:3512 +#: flatcamGUI/FlatCAMGUI.py:3540 msgid "Project Items:" msgstr "Elemente Proiect:" -#: flatcamGUI/FlatCAMGUI.py:3514 +#: flatcamGUI/FlatCAMGUI.py:3542 msgid "Set the color of the items in Project Tab Tree." msgstr "Setează culoarea elementelor din tab-ul Proiect." -#: flatcamGUI/FlatCAMGUI.py:3525 +#: flatcamGUI/FlatCAMGUI.py:3553 msgid "Proj. Dis. Items:" msgstr "Elem. proj. dez." -#: flatcamGUI/FlatCAMGUI.py:3527 +#: flatcamGUI/FlatCAMGUI.py:3555 msgid "" "Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled." @@ -6116,15 +6211,15 @@ msgstr "" "Setează culoarea elementelor din tab-ul Proiect\n" "in cazul in care elementele sunt dezactivate." -#: flatcamGUI/FlatCAMGUI.py:3578 +#: flatcamGUI/FlatCAMGUI.py:3606 msgid "GUI Settings" msgstr "Setări GUI" -#: flatcamGUI/FlatCAMGUI.py:3585 +#: flatcamGUI/FlatCAMGUI.py:3613 msgid "Layout:" msgstr "Amplasare:" -#: flatcamGUI/FlatCAMGUI.py:3587 +#: flatcamGUI/FlatCAMGUI.py:3615 msgid "" "Select an layout for FlatCAM.\n" "It is applied immediately." @@ -6132,11 +6227,11 @@ msgstr "" "Selectează un stil de amplasare a elementelor GUI in FlatCAM.\n" "Se aplica imediat." -#: flatcamGUI/FlatCAMGUI.py:3603 +#: flatcamGUI/FlatCAMGUI.py:3631 msgid "Style:" msgstr "Stil:" -#: flatcamGUI/FlatCAMGUI.py:3605 +#: flatcamGUI/FlatCAMGUI.py:3633 msgid "" "Select an style for FlatCAM.\n" "It will be applied at the next app start." @@ -6144,11 +6239,11 @@ msgstr "" "Selectează un stil pentru FlatCAM.\n" "Se va aplica la urmatoarea pornire a aplicaţiei." -#: flatcamGUI/FlatCAMGUI.py:3616 +#: flatcamGUI/FlatCAMGUI.py:3644 msgid "HDPI Support:" msgstr "Suport H-DPI:" -#: flatcamGUI/FlatCAMGUI.py:3618 +#: flatcamGUI/FlatCAMGUI.py:3646 msgid "" "Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start." @@ -6157,11 +6252,11 @@ msgstr "" "Util pentru monitoarele 4k.\n" "Va fi aplicată la următoarea pornire a aplicaţiei." -#: flatcamGUI/FlatCAMGUI.py:3631 +#: flatcamGUI/FlatCAMGUI.py:3659 msgid "Clear GUI Settings:" msgstr "Șterge setările GUI:" -#: flatcamGUI/FlatCAMGUI.py:3633 +#: flatcamGUI/FlatCAMGUI.py:3661 msgid "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." @@ -6169,15 +6264,15 @@ msgstr "" "Șterge setările GUI pentru FlatCAM,\n" "cum ar fi: amplasare, stare UI, suport HDPI sau traducerea." -#: flatcamGUI/FlatCAMGUI.py:3636 +#: flatcamGUI/FlatCAMGUI.py:3664 msgid "Clear" msgstr "Șterge" -#: flatcamGUI/FlatCAMGUI.py:3640 +#: flatcamGUI/FlatCAMGUI.py:3668 msgid "Hover Shape:" msgstr "Forma Hover:" -#: flatcamGUI/FlatCAMGUI.py:3642 +#: flatcamGUI/FlatCAMGUI.py:3670 msgid "" "Enable display of a hover shape for FlatCAM objects.\n" "It is displayed whenever the mouse cursor is hovering\n" @@ -6187,11 +6282,11 @@ msgstr "" "in canvas-ul FlatCAM. Forma este afișată doar daca obiectul \n" "nu este selectat." -#: flatcamGUI/FlatCAMGUI.py:3649 +#: flatcamGUI/FlatCAMGUI.py:3677 msgid "Sel. Shape:" msgstr "Forma Sel.:" -#: flatcamGUI/FlatCAMGUI.py:3651 +#: flatcamGUI/FlatCAMGUI.py:3679 msgid "" "Enable the display of a selection shape for FlatCAM objects.\n" "It is displayed whenever the mouse selects an object\n" @@ -6203,23 +6298,23 @@ msgstr "" "pe canvas-ul FlatCAM fie facând click pe obiect fie prin\n" "crearea unei ferestre de selectie." -#: flatcamGUI/FlatCAMGUI.py:3693 +#: flatcamGUI/FlatCAMGUI.py:3721 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:3696 +#: flatcamGUI/FlatCAMGUI.py:3724 msgid "Clear GUI Settings" msgstr "Șterge Setările GUI" -#: flatcamGUI/FlatCAMGUI.py:3717 +#: flatcamGUI/FlatCAMGUI.py:3745 msgid "App Preferences" msgstr "Preferințele Aplicaţie" -#: flatcamGUI/FlatCAMGUI.py:3723 +#: flatcamGUI/FlatCAMGUI.py:3751 msgid "Units:" msgstr "Unitati:" -#: flatcamGUI/FlatCAMGUI.py:3724 +#: flatcamGUI/FlatCAMGUI.py:3752 msgid "" "The default value for FlatCAM units.\n" "Whatever is selected here is set every time\n" @@ -6228,11 +6323,11 @@ msgstr "" "Unitatea de masura pt FlatCAM.\n" "Este setată la fiecare pornire a programului." -#: flatcamGUI/FlatCAMGUI.py:3731 +#: flatcamGUI/FlatCAMGUI.py:3759 msgid "APP. LEVEL:" msgstr "Nivel aplic.:" -#: flatcamGUI/FlatCAMGUI.py:3732 +#: flatcamGUI/FlatCAMGUI.py:3760 msgid "" "Choose the default level of usage for FlatCAM.\n" "BASIC level -> reduced functionality, best for beginner's.\n" @@ -6248,19 +6343,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:3741 +#: flatcamGUI/FlatCAMGUI.py:3769 msgid "Languages:" msgstr "Traduceri:" -#: flatcamGUI/FlatCAMGUI.py:3742 +#: flatcamGUI/FlatCAMGUI.py:3770 msgid "Set the language used throughout FlatCAM." msgstr "Setează limba folosita pentru textele din FlatCAM." -#: flatcamGUI/FlatCAMGUI.py:3745 +#: flatcamGUI/FlatCAMGUI.py:3773 msgid "Apply Language" msgstr "Aplica Traducere" -#: flatcamGUI/FlatCAMGUI.py:3746 +#: flatcamGUI/FlatCAMGUI.py:3774 msgid "" "Set the language used throughout FlatCAM.\n" "The app will restart after click.Windows: When FlatCAM is installed in " @@ -6276,11 +6371,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:3755 +#: flatcamGUI/FlatCAMGUI.py:3783 msgid "Shell at StartUp:" msgstr "Shell la pornire:" -#: flatcamGUI/FlatCAMGUI.py:3757 flatcamGUI/FlatCAMGUI.py:3762 +#: flatcamGUI/FlatCAMGUI.py:3785 flatcamGUI/FlatCAMGUI.py:3790 msgid "" "Check this box if you want the shell to\n" "start automatically at startup." @@ -6289,11 +6384,11 @@ msgstr "" "automata a ferestrei Shell (linia de comanda)\n" "la initializarea aplicaţiei." -#: flatcamGUI/FlatCAMGUI.py:3767 +#: flatcamGUI/FlatCAMGUI.py:3795 msgid "Version Check:" msgstr "Verificare versiune:" -#: flatcamGUI/FlatCAMGUI.py:3769 flatcamGUI/FlatCAMGUI.py:3774 +#: flatcamGUI/FlatCAMGUI.py:3797 flatcamGUI/FlatCAMGUI.py:3802 msgid "" "Check this box if you want to check\n" "for a new version automatically at startup." @@ -6302,11 +6397,11 @@ msgstr "" "daca exista o versiune mai noua,\n" "la pornirea aplicaţiei." -#: flatcamGUI/FlatCAMGUI.py:3779 +#: flatcamGUI/FlatCAMGUI.py:3807 msgid "Send Stats:" msgstr "Statistici:" -#: flatcamGUI/FlatCAMGUI.py:3781 flatcamGUI/FlatCAMGUI.py:3786 +#: flatcamGUI/FlatCAMGUI.py:3809 flatcamGUI/FlatCAMGUI.py:3814 msgid "" "Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM." @@ -6316,11 +6411,11 @@ msgstr "" "aplicaţia. In acest fel dezvoltatorii vor sti unde să se focalizeze\n" "in crearea de inbunatatiri." -#: flatcamGUI/FlatCAMGUI.py:3793 +#: flatcamGUI/FlatCAMGUI.py:3821 msgid "Pan Button:" msgstr "Buton Pan (mișcare):" -#: flatcamGUI/FlatCAMGUI.py:3794 +#: flatcamGUI/FlatCAMGUI.py:3822 msgid "" "Select the mouse button to use for panning:\n" "- MMB --> Middle Mouse Button\n" @@ -6330,19 +6425,19 @@ msgstr "" "- MMB - butonul din mijloc al mouse-ului\n" "- RMB - butonul in dreapta al mouse-ului." -#: flatcamGUI/FlatCAMGUI.py:3801 +#: flatcamGUI/FlatCAMGUI.py:3829 msgid "Multiple Sel:" msgstr "Sel. multipla:" -#: flatcamGUI/FlatCAMGUI.py:3802 +#: flatcamGUI/FlatCAMGUI.py:3830 msgid "Select the key used for multiple selection." msgstr "Selectează tasta folosita pentru selectia multipla." -#: flatcamGUI/FlatCAMGUI.py:3807 +#: flatcamGUI/FlatCAMGUI.py:3835 msgid "Project at StartUp:" msgstr "Proiect la pornire:" -#: flatcamGUI/FlatCAMGUI.py:3809 flatcamGUI/FlatCAMGUI.py:3814 +#: flatcamGUI/FlatCAMGUI.py:3837 flatcamGUI/FlatCAMGUI.py:3842 msgid "" "Check this box if you want the project/selected/tool tab area to\n" "to be shown automatically at startup." @@ -6350,11 +6445,11 @@ msgstr "" "Bifează aici daca dorești ca zona Notebook să fie\n" "afișată automat la pornire." -#: flatcamGUI/FlatCAMGUI.py:3819 +#: flatcamGUI/FlatCAMGUI.py:3847 msgid "Project AutoHide:" msgstr "Ascundere Proiect:" -#: flatcamGUI/FlatCAMGUI.py:3821 flatcamGUI/FlatCAMGUI.py:3827 +#: flatcamGUI/FlatCAMGUI.py:3849 flatcamGUI/FlatCAMGUI.py:3855 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" @@ -6364,11 +6459,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:3833 +#: flatcamGUI/FlatCAMGUI.py:3861 msgid "Enable ToolTips:" msgstr "Activează ToolTip-uri:" -#: flatcamGUI/FlatCAMGUI.py:3835 flatcamGUI/FlatCAMGUI.py:3840 +#: flatcamGUI/FlatCAMGUI.py:3863 flatcamGUI/FlatCAMGUI.py:3868 msgid "" "Check this box if you want to have toolTips displayed\n" "when hovering with mouse over items throughout the App." @@ -6376,11 +6471,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:3843 +#: flatcamGUI/FlatCAMGUI.py:3871 msgid "Workers number:" msgstr "Număr de worker's:" -#: flatcamGUI/FlatCAMGUI.py:3845 flatcamGUI/FlatCAMGUI.py:3854 +#: flatcamGUI/FlatCAMGUI.py:3873 flatcamGUI/FlatCAMGUI.py:3882 msgid "" "The number of Qthreads made available to the App.\n" "A bigger number may finish the jobs more quickly but\n" @@ -6396,11 +6491,49 @@ msgstr "" "Valoarea standard este 2.\n" "Dupa schimbarea valoarii, se va aplica la următoarea pornire a aplicatiei." -#: flatcamGUI/FlatCAMGUI.py:3895 +#: flatcamGUI/FlatCAMGUI.py:3894 flatcamGUI/FlatCAMGUI.py:3903 +msgid "" +"This value can counter the effect of the Circle Steps\n" +"parameter. Default value is 0.01.\n" +"A lower value will increase the detail both in image\n" +"and in Gcode for the circles, with a higher cost in\n" +"performance. Higher value will provide more\n" +"performance at the expense of level of detail." +msgstr "" +"Această valoare afectează efectul prametrului Pasi Cerc.\n" +"Valoarea default este 0.01.\n" +"O valoare mai mică va creste detaliile atat in imagine cat si\n" +"in GCode pentru cercuri dar cu pretul unei scăderi in performantă.\n" +"O valoare mai mare va oferi mai multă performantă dar in\n" +"defavoarea nievelului de detalii." + +#: flatcamGUI/FlatCAMGUI.py:3939 +msgid "\"Open\" behavior" +msgstr "Stil \"Încarcare\"" + +#: flatcamGUI/FlatCAMGUI.py:3941 +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" +"\n" +"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." +msgstr "" +"Cand este bifat, calea de salvare a ultimului fiser salvat este folosită " +"cand se \n" +"salvează fisiere si calea de deschidere pt ultimul fisier este folosită cand " +"se \n" +"deschide fisiere.\n" +"\n" +"Cand este debifat, calea de deshidere pt ultimul fisier este folosită pt " +"ambele \n" +"cazuri: fie că se deschide un fisier, fie că se salvează un fisier." + +#: flatcamGUI/FlatCAMGUI.py:3950 msgid "Save Compressed Project" msgstr "Salvează Proiectul comprimat" -#: flatcamGUI/FlatCAMGUI.py:3897 +#: flatcamGUI/FlatCAMGUI.py:3952 msgid "" "Whether to save a compressed or uncompressed project.\n" "When checked it will save a compressed FlatCAM project." @@ -6409,11 +6542,11 @@ msgstr "" "Când este bifat aici, se va salva o arhiva a proiectului\n" "lucru care poate reduce dimensiunea semnificativ." -#: flatcamGUI/FlatCAMGUI.py:3908 +#: flatcamGUI/FlatCAMGUI.py:3963 msgid "Compression Level:" msgstr "Nivel compresie:" -#: flatcamGUI/FlatCAMGUI.py:3910 +#: flatcamGUI/FlatCAMGUI.py:3965 msgid "" "The level of compression used when saving\n" "a FlatCAM project. Higher value means better compression\n" @@ -6424,49 +6557,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:3936 flatcamGUI/FlatCAMGUI.py:4177 -#: flatcamGUI/FlatCAMGUI.py:4832 flatcamGUI/FlatCAMGUI.py:5156 +#: flatcamGUI/FlatCAMGUI.py:3991 flatcamGUI/FlatCAMGUI.py:4360 +#: flatcamGUI/FlatCAMGUI.py:5030 flatcamGUI/FlatCAMGUI.py:5402 #: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:505 -#: flatcamGUI/ObjectUI.py:830 flatcamGUI/ObjectUI.py:1344 +#: flatcamGUI/ObjectUI.py:833 flatcamGUI/ObjectUI.py:1350 msgid "Plot Options:" msgstr "Opțiuni afișare:" -#: flatcamGUI/FlatCAMGUI.py:3943 flatcamGUI/FlatCAMGUI.py:4189 +#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4372 #: flatcamGUI/ObjectUI.py:156 flatcamGUI/ObjectUI.py:506 msgid "Solid" msgstr "Solid" -#: flatcamGUI/FlatCAMGUI.py:3945 flatcamGUI/ObjectUI.py:158 +#: flatcamGUI/FlatCAMGUI.py:4000 flatcamGUI/ObjectUI.py:158 msgid "Solid color polygons." msgstr "Poligoane color solide." -#: flatcamGUI/FlatCAMGUI.py:3950 flatcamGUI/ObjectUI.py:164 +#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/ObjectUI.py:164 msgid "M-Color" msgstr "M-Color" -#: flatcamGUI/FlatCAMGUI.py:3952 flatcamGUI/ObjectUI.py:166 +#: flatcamGUI/FlatCAMGUI.py:4007 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:3957 flatcamGUI/FlatCAMGUI.py:4183 -#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/ObjectUI.py:172 +#: flatcamGUI/FlatCAMGUI.py:4012 flatcamGUI/FlatCAMGUI.py:4366 +#: flatcamGUI/FlatCAMGUI.py:5034 flatcamGUI/ObjectUI.py:172 msgid "Plot" msgstr "Afisează" -#: flatcamGUI/FlatCAMGUI.py:3959 flatcamGUI/FlatCAMGUI.py:4838 +#: flatcamGUI/FlatCAMGUI.py:4014 flatcamGUI/FlatCAMGUI.py:5036 #: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:546 -#: flatcamGUI/ObjectUI.py:876 flatcamGUI/ObjectUI.py:1431 +#: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1437 msgid "Plot (show) this object." msgstr "Afisează (arata) acest obiect." -#: flatcamGUI/FlatCAMGUI.py:3964 flatcamGUI/FlatCAMGUI.py:4845 -#: flatcamGUI/FlatCAMGUI.py:5192 +#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:5043 +#: flatcamGUI/FlatCAMGUI.py:5438 msgid "Circle Steps:" msgstr "Aprox. Cerc" -#: flatcamGUI/FlatCAMGUI.py:3966 +#: flatcamGUI/FlatCAMGUI.py:4021 msgid "" "The number of circle steps for Gerber \n" "circular aperture linear approximation." @@ -6474,15 +6607,15 @@ msgstr "" "Numărul de segmente utilizate pentru\n" "aproximarea lineara a aperturilor Gerber circulare." -#: flatcamGUI/FlatCAMGUI.py:3981 +#: flatcamGUI/FlatCAMGUI.py:4036 msgid "Gerber Options" msgstr "Opțiuni Gerber" -#: flatcamGUI/FlatCAMGUI.py:3985 flatcamGUI/ObjectUI.py:251 +#: flatcamGUI/FlatCAMGUI.py:4040 flatcamGUI/ObjectUI.py:251 msgid "Isolation Routing:" msgstr "Izolare:" -#: flatcamGUI/FlatCAMGUI.py:3987 flatcamGUI/ObjectUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:4042 flatcamGUI/ObjectUI.py:253 msgid "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." @@ -6491,17 +6624,17 @@ msgstr "" "care să fie taiate in afara poligoanelor,\n" "urmărindu-le conturul." -#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4555 -#: flatcamGUI/FlatCAMGUI.py:5480 flatcamGUI/ObjectUI.py:785 -#: flatcamGUI/ObjectUI.py:801 +#: flatcamGUI/FlatCAMGUI.py:4053 flatcamGUI/FlatCAMGUI.py:4753 +#: flatcamGUI/FlatCAMGUI.py:5726 flatcamGUI/ObjectUI.py:788 +#: flatcamGUI/ObjectUI.py:804 msgid "Diameter of the cutting tool." msgstr "Diametrul uneltei taietoare." -#: flatcamGUI/FlatCAMGUI.py:4005 +#: flatcamGUI/FlatCAMGUI.py:4060 msgid "Width (# passes):" msgstr "Latime(# treceri):" -#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:275 +#: flatcamGUI/FlatCAMGUI.py:4062 flatcamGUI/ObjectUI.py:275 msgid "" "Width of the isolation gap in\n" "number (integer) of tool widths." @@ -6509,11 +6642,11 @@ msgstr "" "Lăţimea spatiului de izolare\n" "in număr intreg de grosimi ale uneltei." -#: flatcamGUI/FlatCAMGUI.py:4015 flatcamGUI/ObjectUI.py:283 +#: flatcamGUI/FlatCAMGUI.py:4070 flatcamGUI/ObjectUI.py:283 msgid "Pass overlap:" msgstr "Suprapunere:" -#: flatcamGUI/FlatCAMGUI.py:4017 flatcamGUI/ObjectUI.py:285 +#: flatcamGUI/FlatCAMGUI.py:4072 flatcamGUI/ObjectUI.py:285 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -6527,11 +6660,11 @@ msgstr "" "Exemplu:\n" "O valoare de 0.25 reprezinta o suprapunere de 25%% din diametrul uneltei." -#: flatcamGUI/FlatCAMGUI.py:4025 flatcamGUI/ObjectUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:4080 flatcamGUI/ObjectUI.py:295 msgid "Milling Type:" msgstr "Tip Frezare:" -#: flatcamGUI/FlatCAMGUI.py:4027 flatcamGUI/ObjectUI.py:297 +#: flatcamGUI/FlatCAMGUI.py:4082 flatcamGUI/ObjectUI.py:297 msgid "" "Milling type:\n" "- climb / best for precision milling and to reduce tool usage\n" @@ -6542,19 +6675,19 @@ msgstr "" "uneltei\n" "- conventional -> pentru cazul când nu exista o compensare a 'backlash-ului'" -#: flatcamGUI/FlatCAMGUI.py:4037 +#: flatcamGUI/FlatCAMGUI.py:4092 msgid "Combine Passes" msgstr "Combina" -#: flatcamGUI/FlatCAMGUI.py:4039 flatcamGUI/ObjectUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:4094 flatcamGUI/ObjectUI.py:309 msgid "Combine all passes into one object" msgstr "Combina toate trecerile intr-un singur obiect" -#: flatcamGUI/FlatCAMGUI.py:4044 +#: flatcamGUI/FlatCAMGUI.py:4099 msgid "Clear non-copper:" msgstr "Curăță non-Cu:" -#: flatcamGUI/FlatCAMGUI.py:4046 flatcamGUI/FlatCAMGUI.py:5368 +#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/FlatCAMGUI.py:5614 #: flatcamGUI/ObjectUI.py:386 msgid "" "Create a Geometry object with\n" @@ -6564,12 +6697,12 @@ msgstr "" "care să curete de cupru toate zonele unde se dorește să nu \n" "fie cupru." -#: flatcamGUI/FlatCAMGUI.py:4055 flatcamGUI/FlatCAMGUI.py:4081 +#: flatcamGUI/FlatCAMGUI.py:4110 flatcamGUI/FlatCAMGUI.py:4136 #: flatcamGUI/ObjectUI.py:430 flatcamGUI/ObjectUI.py:464 msgid "Boundary Margin:" msgstr "Margine:" -#: flatcamGUI/FlatCAMGUI.py:4057 flatcamGUI/ObjectUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:4112 flatcamGUI/ObjectUI.py:432 msgid "" "Specify the edge of the PCB\n" "by drawing a box around all\n" @@ -6580,11 +6713,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:4067 flatcamGUI/FlatCAMGUI.py:4090 +#: flatcamGUI/FlatCAMGUI.py:4122 flatcamGUI/FlatCAMGUI.py:4145 msgid "Rounded corners" msgstr "C. rotunjite" -#: flatcamGUI/FlatCAMGUI.py:4069 +#: flatcamGUI/FlatCAMGUI.py:4124 msgid "" "Creates a Geometry objects with polygons\n" "covering the copper-free areas of the PCB." @@ -6592,11 +6725,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:4075 flatcamGUI/ObjectUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:4130 flatcamGUI/ObjectUI.py:454 msgid "Bounding Box:" msgstr "Forma înconjurătoare::" -#: flatcamGUI/FlatCAMGUI.py:4083 flatcamGUI/ObjectUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:4138 flatcamGUI/ObjectUI.py:466 msgid "" "Distance of the edges of the box\n" "to the nearest polygon." @@ -6604,7 +6737,7 @@ msgstr "" "Distanta de la marginile formei înconjurătoare\n" "pana la cel mai apropiat poligon." -#: flatcamGUI/FlatCAMGUI.py:4092 flatcamGUI/ObjectUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:4147 flatcamGUI/ObjectUI.py:476 msgid "" "If the bounding box is \n" "to have rounded corners\n" @@ -6614,15 +6747,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:4106 +#: flatcamGUI/FlatCAMGUI.py:4161 msgid "Gerber Adv. Options" msgstr "Opțiuni Av. Gerber" -#: flatcamGUI/FlatCAMGUI.py:4110 +#: flatcamGUI/FlatCAMGUI.py:4165 msgid "Advanced Param.:" msgstr "Param. avansati.:" -#: flatcamGUI/FlatCAMGUI.py:4112 +#: flatcamGUI/FlatCAMGUI.py:4167 msgid "" "A list of Gerber advanced parameters.\n" "Those parameters are available only for\n" @@ -6633,11 +6766,11 @@ msgstr "" "când este selectat Nivelul Avansat pentru\n" "aplicaţie in Preferințe - > General" -#: flatcamGUI/FlatCAMGUI.py:4122 flatcamGUI/ObjectUI.py:314 +#: flatcamGUI/FlatCAMGUI.py:4177 flatcamGUI/ObjectUI.py:314 msgid "\"Follow\"" msgstr "\"Urmareste\"" -#: flatcamGUI/FlatCAMGUI.py:4124 flatcamGUI/ObjectUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:4179 flatcamGUI/ObjectUI.py:316 msgid "" "Generate a 'Follow' geometry.\n" "This means that it will cut through\n" @@ -6647,11 +6780,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:4132 +#: flatcamGUI/FlatCAMGUI.py:4187 msgid "Table Show/Hide" msgstr "Arata/Ascunde Tabela" -#: flatcamGUI/FlatCAMGUI.py:4134 +#: flatcamGUI/FlatCAMGUI.py:4189 msgid "" "Toggle the display of the Gerber Apertures Table.\n" "Also, on hide, it will delete all mark shapes\n" @@ -6661,43 +6794,117 @@ msgstr "" "când se ascunde aceasta, se vor șterge și toate\n" "posibil afisatele marcaje ale aperturilor." -#: flatcamGUI/FlatCAMGUI.py:4142 -msgid "Ap. Scale Factor:" -msgstr "Factor scalare ap.:" +#: flatcamGUI/FlatCAMGUI.py:4228 +msgid "Gerber Export" +msgstr "Export Gerber" -#: flatcamGUI/FlatCAMGUI.py:4144 +#: flatcamGUI/FlatCAMGUI.py:4231 flatcamGUI/FlatCAMGUI.py:4902 +msgid "Export Options:" +msgstr "Opțiuni Export::" + +#: flatcamGUI/FlatCAMGUI.py:4233 msgid "" -"Change the size of the selected apertures.\n" -"Factor by which to multiply\n" -"geometric features of this object." +"The parameters set here are used in the file exported\n" +"when using the File -> Export -> Export Gerber menu entry." msgstr "" -"Schimbă dimensiunea aperturilor selectate.\n" -"Factor cu care se multiplica geometriile\n" -"acestui obiect." +"Acesti parametri listati aici sunt folositi atunci când\n" +"se exporta un fişier Gerber folosind:\n" +"File -> Exportă -> Exportă Gerber" -#: flatcamGUI/FlatCAMGUI.py:4154 -msgid "Ap. Buffer Factor:" -msgstr "Factor bufer ap.:" +#: flatcamGUI/FlatCAMGUI.py:4242 flatcamGUI/FlatCAMGUI.py:4913 +msgid "Units:" +msgstr "Unitati:" -#: flatcamGUI/FlatCAMGUI.py:4156 +#: flatcamGUI/FlatCAMGUI.py:4244 flatcamGUI/FlatCAMGUI.py:4250 +msgid "The units used in the Gerber file." +msgstr "Unitătile de măsură folosite in fişierul Gerber." + +#: flatcamGUI/FlatCAMGUI.py:4256 flatcamGUI/FlatCAMGUI.py:4927 +msgid "Int/Decimals:" +msgstr "Int/Zecimale:" + +#: flatcamGUI/FlatCAMGUI.py:4258 msgid "" -"Change the size of the selected apertures.\n" -"Factor by which to expand/shrink\n" -"geometric features of this object." +"The number of digits in the whole part of the number\n" +"and in the fractional part of the number." msgstr "" -"Schimbă dimensiunea aperturilor selectate.\n" -"Valoare cu care se mareste/micsorează\n" -"geometriile acestui obiect." +"Acest număr reprezinta numărul de digiti din partea\n" +"intreagă si in partea fractională a numărului." -#: flatcamGUI/FlatCAMGUI.py:4174 +#: flatcamGUI/FlatCAMGUI.py:4269 +msgid "" +"This numbers signify the number of digits in\n" +"the whole part of Gerber coordinates." +msgstr "" +"Acest număr reprezinta numărul de digiti din partea\n" +"intreagă a coordonatelor Gerber." + +#: flatcamGUI/FlatCAMGUI.py:4283 +msgid "" +"This numbers signify the number of digits in\n" +"the decimal part of Gerber coordinates." +msgstr "" +"Acest număr reprezinta numărul de digiti din partea\n" +"zecimală a coordonatelor Gerber." + +#: flatcamGUI/FlatCAMGUI.py:4292 flatcamGUI/FlatCAMGUI.py:4988 +msgid "Zeros:" +msgstr "Zero-uri:" + +#: flatcamGUI/FlatCAMGUI.py:4295 flatcamGUI/FlatCAMGUI.py:4305 +msgid "" +"This sets the type of Gerber zeros.\n" +"If LZ then Leading Zeros are removed and\n" +"Trailing Zeros are kept.\n" +"If TZ is checked then Trailing Zeros are removed\n" +"and Leading Zeros are kept." +msgstr "" +"Aici se setează tipul de suprimare a zerourilor,\n" +"in cazul unui fişier Gerber.\n" +"TZ = zerourile din fata numărului sunt păstrate și\n" +"cele de la final sunt indepărtate.\n" +"LZ = zerourile din fata numărului sunt indepărtate și\n" +"cele de la final sunt păstrate.\n" +"(Invers fată de fişierele Excellon)." + +#: flatcamGUI/FlatCAMGUI.py:4325 flatcamGUI/FlatCAMGUI.py:5368 +#: flatcamGUI/FlatCAMGUI.py:5612 flatcamGUI/FlatCAMGUI.py:5713 +#: flatcamGUI/FlatCAMGUI.py:5792 flatcamGUI/FlatCAMGUI.py:5851 +#: flatcamGUI/FlatCAMGUI.py:5954 flatcamGUI/FlatCAMGUI.py:6015 +#: flatcamGUI/FlatCAMGUI.py:6214 flatcamGUI/FlatCAMGUI.py:6341 +msgid "Parameters:" +msgstr "Parametri:" + +#: flatcamGUI/FlatCAMGUI.py:4327 +msgid "A list of Gerber Editor parameters." +msgstr "O listă de parametri ai Editorului Gerber." + +#: flatcamGUI/FlatCAMGUI.py:4335 flatcamGUI/FlatCAMGUI.py:5378 +msgid "Selection limit:" +msgstr "Limita selecţie:" + +#: flatcamGUI/FlatCAMGUI.py:4337 +msgid "" +"Set the number of selected Gerber 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 selectate peste care\n" +"geometria utilitară devine un simplu pătrat de selectie.\n" +"Creste performanta cand se mută un număr mai mare\n" +"de elemente geometrice." + +#: flatcamGUI/FlatCAMGUI.py:4357 msgid "Excellon General" msgstr "Excellon General" -#: flatcamGUI/FlatCAMGUI.py:4196 +#: flatcamGUI/FlatCAMGUI.py:4379 msgid "Excellon Format:" msgstr "Formatul Excellon" -#: flatcamGUI/FlatCAMGUI.py:4198 +#: flatcamGUI/FlatCAMGUI.py:4381 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -6743,18 +6950,18 @@ msgstr "" "Sprint Layout 2:4 INCH LZ\n" "KiCAD 3:5 INCH TZ" -#: flatcamGUI/FlatCAMGUI.py:4223 +#: flatcamGUI/FlatCAMGUI.py:4406 msgid "INCH:" msgstr "Inch" -#: flatcamGUI/FlatCAMGUI.py:4226 +#: flatcamGUI/FlatCAMGUI.py:4409 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:4234 flatcamGUI/FlatCAMGUI.py:4267 -#: flatcamGUI/FlatCAMGUI.py:4744 +#: flatcamGUI/FlatCAMGUI.py:4417 flatcamGUI/FlatCAMGUI.py:4450 +#: flatcamGUI/FlatCAMGUI.py:4942 msgid "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." @@ -6762,8 +6969,8 @@ msgstr "" "Acest număr reprezinta numărul de digiti din partea\n" "intreaga a coordonatelor Excellon." -#: flatcamGUI/FlatCAMGUI.py:4248 flatcamGUI/FlatCAMGUI.py:4281 -#: flatcamGUI/FlatCAMGUI.py:4758 +#: flatcamGUI/FlatCAMGUI.py:4431 flatcamGUI/FlatCAMGUI.py:4464 +#: flatcamGUI/FlatCAMGUI.py:4956 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." @@ -6771,21 +6978,21 @@ msgstr "" "Acest număr reprezinta numărul de digiti din partea\n" "zecimala a coordonatelor Excellon." -#: flatcamGUI/FlatCAMGUI.py:4256 +#: flatcamGUI/FlatCAMGUI.py:4439 msgid "METRIC:" msgstr "Metric" -#: flatcamGUI/FlatCAMGUI.py:4259 +#: flatcamGUI/FlatCAMGUI.py:4442 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:4290 +#: flatcamGUI/FlatCAMGUI.py:4473 msgid "Default Zeros:" msgstr "Suprimare Zero:" -#: flatcamGUI/FlatCAMGUI.py:4293 flatcamGUI/FlatCAMGUI.py:4793 +#: flatcamGUI/FlatCAMGUI.py:4476 flatcamGUI/FlatCAMGUI.py:4991 msgid "" "This sets the type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -6801,7 +7008,7 @@ msgstr "" "cele de la final sunt pastrate.\n" "(Invers fata de fişierele Gerber)." -#: flatcamGUI/FlatCAMGUI.py:4304 +#: flatcamGUI/FlatCAMGUI.py:4487 msgid "" "This sets the default type of Excellon zeros.\n" "If it is not detected in the parsed file the value here\n" @@ -6820,11 +7027,11 @@ msgstr "" "cele de la final sunt pastrate.\n" "(Invers fata de fişierele Gerber)." -#: flatcamGUI/FlatCAMGUI.py:4318 +#: flatcamGUI/FlatCAMGUI.py:4501 msgid "Default Units:" msgstr "Unitati Excellon:" -#: flatcamGUI/FlatCAMGUI.py:4321 +#: flatcamGUI/FlatCAMGUI.py:4504 msgid "" "This sets the default units of Excellon files.\n" "If it is not detected in the parsed file the value here\n" @@ -6838,7 +7045,7 @@ msgstr "" "(unde se gasesc unitatile) și atunci se va folosi\n" "aceasta valoare." -#: flatcamGUI/FlatCAMGUI.py:4332 +#: flatcamGUI/FlatCAMGUI.py:4515 msgid "" "This sets the units of Excellon files.\n" "Some Excellon files don't have an header\n" @@ -6851,15 +7058,15 @@ msgstr "" "(unde se gasesc unitatile) și atunci se va folosi\n" "aceasta valoare." -#: flatcamGUI/FlatCAMGUI.py:4348 +#: flatcamGUI/FlatCAMGUI.py:4531 msgid "Excellon Optimization:" msgstr "Optimizarea traseului Excellon:" -#: flatcamGUI/FlatCAMGUI.py:4355 +#: flatcamGUI/FlatCAMGUI.py:4538 msgid "Algorithm: " msgstr "Algoritm:" -#: flatcamGUI/FlatCAMGUI.py:4358 flatcamGUI/FlatCAMGUI.py:4371 +#: flatcamGUI/FlatCAMGUI.py:4541 flatcamGUI/FlatCAMGUI.py:4554 msgid "" "This sets the optimization type for the Excellon drill path.\n" "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" @@ -6883,11 +7090,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:4383 +#: flatcamGUI/FlatCAMGUI.py:4566 msgid "Optimization Time: " msgstr "Durata optimiz.:" -#: flatcamGUI/FlatCAMGUI.py:4386 +#: flatcamGUI/FlatCAMGUI.py:4569 msgid "" "When OR-Tools Metaheuristic (MH) is enabled there is a\n" "maximum threshold for how much time is spent doing the\n" @@ -6898,15 +7105,15 @@ msgstr "" "reprezinta cat timp se sta pentru fiecare element in\n" "incercarea de a afla calea optima." -#: flatcamGUI/FlatCAMGUI.py:4427 +#: flatcamGUI/FlatCAMGUI.py:4611 msgid "Excellon Options" msgstr "Opțiuni Excellon" -#: flatcamGUI/FlatCAMGUI.py:4430 flatcamGUI/ObjectUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:4614 flatcamGUI/ObjectUI.py:584 msgid "Create CNC Job" msgstr "Crează CNCJob" -#: flatcamGUI/FlatCAMGUI.py:4432 +#: flatcamGUI/FlatCAMGUI.py:4616 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object." @@ -6914,13 +7121,13 @@ msgstr "" "Parametrii folositi pentru a crea un obiect FlatCAM tip CNCJob\n" "din acest obiect Excellon." -#: flatcamGUI/FlatCAMGUI.py:4440 flatcamGUI/FlatCAMGUI.py:4896 -#: flatcamGUI/FlatCAMGUI.py:5904 flatcamGUI/ObjectUI.py:595 -#: flatcamGUI/ObjectUI.py:1059 flatcamTools/ToolCalculators.py:108 +#: flatcamGUI/FlatCAMGUI.py:4624 flatcamGUI/FlatCAMGUI.py:5094 +#: flatcamGUI/FlatCAMGUI.py:6150 flatcamGUI/ObjectUI.py:595 +#: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolCalculators.py:108 msgid "Cut Z:" msgstr "Z tăiere:" -#: flatcamGUI/FlatCAMGUI.py:4442 flatcamGUI/ObjectUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:4626 flatcamGUI/ObjectUI.py:597 msgid "" "Drill depth (negative)\n" "below the copper surface." @@ -6929,12 +7136,12 @@ msgstr "" "Daca se foloseşte o val. pozitivă, aplicaţia\n" "va incerca in mod automat să schimbe semnul." -#: flatcamGUI/FlatCAMGUI.py:4449 flatcamGUI/FlatCAMGUI.py:4929 -#: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1095 +#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/FlatCAMGUI.py:5127 +#: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1098 msgid "Travel Z:" msgstr "Z Deplasare:" -#: flatcamGUI/FlatCAMGUI.py:4451 flatcamGUI/ObjectUI.py:607 +#: flatcamGUI/FlatCAMGUI.py:4635 flatcamGUI/ObjectUI.py:607 msgid "" "Tool height when travelling\n" "across the XY plane." @@ -6943,11 +7150,11 @@ msgstr "" "in planul X-Y, fără a efectua taieri, adica\n" "in afara materialului." -#: flatcamGUI/FlatCAMGUI.py:4459 flatcamGUI/FlatCAMGUI.py:4939 +#: flatcamGUI/FlatCAMGUI.py:4643 flatcamGUI/FlatCAMGUI.py:5137 msgid "Tool change:" msgstr "Schimbare unealtă:" -#: flatcamGUI/FlatCAMGUI.py:4461 flatcamGUI/FlatCAMGUI.py:4941 +#: flatcamGUI/FlatCAMGUI.py:4645 flatcamGUI/FlatCAMGUI.py:5139 #: flatcamGUI/ObjectUI.py:617 msgid "" "Include tool-change sequence\n" @@ -6957,11 +7164,11 @@ msgstr "" "in codul G-Code (pauza pentru schimbare unealtă).\n" "De obicei este folosita comanda G-Code M6." -#: flatcamGUI/FlatCAMGUI.py:4468 flatcamGUI/FlatCAMGUI.py:4949 +#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5147 msgid "Toolchange Z:" msgstr "Z schimb. unealtă:" -#: flatcamGUI/FlatCAMGUI.py:4470 flatcamGUI/FlatCAMGUI.py:4951 +#: flatcamGUI/FlatCAMGUI.py:4654 flatcamGUI/FlatCAMGUI.py:5149 msgid "Toolchange Z position." msgstr "" "Înălţimea la care se efectuează schimbarea uneltei.\n" @@ -6969,11 +7176,11 @@ msgstr "" "'toolchanger' automat sau acolo unde utilizatorul\n" "schimba unealtă manual." -#: flatcamGUI/FlatCAMGUI.py:4476 +#: flatcamGUI/FlatCAMGUI.py:4660 msgid "Feedrate:" msgstr "Feedrate:" -#: flatcamGUI/FlatCAMGUI.py:4478 +#: flatcamGUI/FlatCAMGUI.py:4662 msgid "" "Tool speed while drilling\n" "(in units per minute)." @@ -6981,12 +7188,12 @@ 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:4486 +#: flatcamGUI/FlatCAMGUI.py:4670 msgid "Spindle Speed:" msgstr "Viteza Motor:" -#: flatcamGUI/FlatCAMGUI.py:4488 flatcamGUI/FlatCAMGUI.py:4981 -#: flatcamGUI/ObjectUI.py:681 +#: flatcamGUI/FlatCAMGUI.py:4672 flatcamGUI/FlatCAMGUI.py:5179 +#: flatcamGUI/ObjectUI.py:684 msgid "" "Speed of the spindle\n" "in RPM (optional)" @@ -6996,13 +7203,29 @@ msgstr "" "Acest parametru este optional și se poate lasa gol\n" "daca nu se foloseşte." -#: flatcamGUI/FlatCAMGUI.py:4496 flatcamGUI/FlatCAMGUI.py:4989 -#: flatcamGUI/ObjectUI.py:689 flatcamGUI/ObjectUI.py:1218 +#: flatcamGUI/FlatCAMGUI.py:4680 flatcamGUI/FlatCAMGUI.py:5187 +msgid "Spindle dir.:" +msgstr "Directie Motor:" + +#: flatcamGUI/FlatCAMGUI.py:4682 flatcamGUI/FlatCAMGUI.py:5189 +msgid "" +"This sets the direction that the spindle is rotating.\n" +"It can be either:\n" +"- CW = clockwise or\n" +"- CCW = counter clockwise" +msgstr "" +"Aici se setează directia in care motorul se roteste.\n" +"Poate fi:\n" +"- CW = in sensul acelor de ceasornic\n" +"- CCW = in sensul invers acelor de ceasornic" + +#: flatcamGUI/FlatCAMGUI.py:4694 flatcamGUI/FlatCAMGUI.py:5201 +#: flatcamGUI/ObjectUI.py:692 flatcamGUI/ObjectUI.py:1224 msgid "Dwell:" msgstr "Pauza:" -#: flatcamGUI/FlatCAMGUI.py:4498 flatcamGUI/FlatCAMGUI.py:4991 -#: flatcamGUI/ObjectUI.py:691 flatcamGUI/ObjectUI.py:1221 +#: flatcamGUI/FlatCAMGUI.py:4696 flatcamGUI/FlatCAMGUI.py:5203 +#: flatcamGUI/ObjectUI.py:694 flatcamGUI/ObjectUI.py:1227 msgid "" "Pause to allow the spindle to reach its\n" "speed before cutting." @@ -7010,21 +7233,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:4501 flatcamGUI/FlatCAMGUI.py:4994 +#: flatcamGUI/FlatCAMGUI.py:4699 flatcamGUI/FlatCAMGUI.py:5206 msgid "Duration:" msgstr "Durata:" -#: flatcamGUI/FlatCAMGUI.py:4503 flatcamGUI/FlatCAMGUI.py:4996 -#: flatcamGUI/ObjectUI.py:696 flatcamGUI/ObjectUI.py:1228 +#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 +#: 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:4515 flatcamGUI/FlatCAMGUI.py:5006 -#: flatcamGUI/ObjectUI.py:704 +#: flatcamGUI/FlatCAMGUI.py:4713 flatcamGUI/FlatCAMGUI.py:5218 +#: flatcamGUI/ObjectUI.py:707 msgid "Postprocessor:" msgstr "Postprocesor:" -#: flatcamGUI/FlatCAMGUI.py:4517 +#: flatcamGUI/FlatCAMGUI.py:4715 msgid "" "The postprocessor file that dictates\n" "gcode output." @@ -7033,11 +7256,11 @@ msgstr "" "respecte un anumit format care să fie ințeles de diverse\n" "utilaje. Este responsabil de 'personalizarea' G-Code." -#: flatcamGUI/FlatCAMGUI.py:4527 +#: flatcamGUI/FlatCAMGUI.py:4725 msgid "Gcode: " msgstr "G-Code:" -#: flatcamGUI/FlatCAMGUI.py:4529 +#: flatcamGUI/FlatCAMGUI.py:4727 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -7051,41 +7274,41 @@ msgstr "" "Când se alege Sloturi sau Ambele, sloturile vor fi convertite in serii de " "găuri." -#: flatcamGUI/FlatCAMGUI.py:4545 flatcamGUI/ObjectUI.py:769 +#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:772 msgid "Mill Holes" msgstr "Frezare găuri" -#: flatcamGUI/FlatCAMGUI.py:4547 flatcamGUI/ObjectUI.py:771 +#: 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:4553 +#: flatcamGUI/FlatCAMGUI.py:4751 msgid "Drill Tool dia:" msgstr "Dia. Burghiu Găurire:" -#: flatcamGUI/FlatCAMGUI.py:4560 +#: flatcamGUI/FlatCAMGUI.py:4758 msgid "Slot Tool dia:" msgstr "Dia. Freza Slot:" -#: flatcamGUI/FlatCAMGUI.py:4562 +#: 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:4574 +#: flatcamGUI/FlatCAMGUI.py:4772 msgid "Defaults" msgstr "Val. Implicite" -#: flatcamGUI/FlatCAMGUI.py:4587 +#: flatcamGUI/FlatCAMGUI.py:4785 msgid "Excellon Adv. Options" msgstr "Opțiuni Avans. Excellon" -#: flatcamGUI/FlatCAMGUI.py:4593 flatcamGUI/FlatCAMGUI.py:5029 +#: flatcamGUI/FlatCAMGUI.py:4791 flatcamGUI/FlatCAMGUI.py:5241 msgid "Advanced Options:" msgstr "Opțiuni avansate:" -#: flatcamGUI/FlatCAMGUI.py:4595 +#: 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." @@ -7094,11 +7317,11 @@ msgstr "" "pt acest obiect Excellon, parametri care sunt disponibili\n" "doar in modul Avansat al aplicaţiei." -#: flatcamGUI/FlatCAMGUI.py:4603 +#: flatcamGUI/FlatCAMGUI.py:4801 msgid "Offset Z:" msgstr "Z ofset:" -#: flatcamGUI/FlatCAMGUI.py:4605 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" @@ -7111,20 +7334,20 @@ msgstr "" "Valoarea de aici efectuează o compensare asupra\n" "parametrului >Z tăiere<." -#: flatcamGUI/FlatCAMGUI.py:4612 flatcamGUI/FlatCAMGUI.py:5040 +#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/FlatCAMGUI.py:5252 msgid "Toolchange X,Y:" msgstr "X,Y schimb. unealtă:" -#: flatcamGUI/FlatCAMGUI.py:4614 flatcamGUI/FlatCAMGUI.py:5042 +#: flatcamGUI/FlatCAMGUI.py:4812 flatcamGUI/FlatCAMGUI.py:5254 msgid "Toolchange X,Y position." msgstr "Poziţia X,Y in format (x,y) unde se face schimbarea uneltei." -#: flatcamGUI/FlatCAMGUI.py:4620 flatcamGUI/FlatCAMGUI.py:5049 +#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5261 #: flatcamGUI/ObjectUI.py:634 msgid "Start move Z:" msgstr "Z pornire:" -#: flatcamGUI/FlatCAMGUI.py:4622 +#: flatcamGUI/FlatCAMGUI.py:4820 msgid "" "Height of the tool just after start.\n" "Delete the value if you don't need this feature." @@ -7132,23 +7355,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:4629 flatcamGUI/FlatCAMGUI.py:5059 -#: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1141 +#: flatcamGUI/FlatCAMGUI.py:4827 flatcamGUI/FlatCAMGUI.py:5271 +#: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1144 msgid "End move Z:" msgstr "Z oprire:" -#: flatcamGUI/FlatCAMGUI.py:4631 flatcamGUI/FlatCAMGUI.py:5061 +#: flatcamGUI/FlatCAMGUI.py:4829 flatcamGUI/FlatCAMGUI.py:5273 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:4638 flatcamGUI/FlatCAMGUI.py:5069 +#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5281 #: flatcamGUI/ObjectUI.py:665 msgid "Feedrate Rapids:" msgstr "Feedrate rapizi:" -#: flatcamGUI/FlatCAMGUI.py:4640 flatcamGUI/ObjectUI.py:667 +#: flatcamGUI/FlatCAMGUI.py:4838 flatcamGUI/ObjectUI.py:667 msgid "" "Tool speed while drilling\n" "(in units per minute).\n" @@ -7161,13 +7384,13 @@ msgstr "" "printerul 3D Marlin, implicit când se foloseşte fişierul\n" "postprocesor: Marlin. Ignora aceasta parametru in rest." -#: flatcamGUI/FlatCAMGUI.py:4651 flatcamGUI/FlatCAMGUI.py:5093 -#: flatcamGUI/ObjectUI.py:715 flatcamGUI/ObjectUI.py:1250 +#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5305 +#: flatcamGUI/ObjectUI.py:718 flatcamGUI/ObjectUI.py:1256 msgid "Probe Z depth:" msgstr "Z sonda:" -#: flatcamGUI/FlatCAMGUI.py:4653 flatcamGUI/FlatCAMGUI.py:5095 -#: flatcamGUI/ObjectUI.py:717 flatcamGUI/ObjectUI.py:1253 +#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5307 +#: 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." @@ -7175,21 +7398,21 @@ msgstr "" "Adâncimea maxima la care este permis sondei să coboare.\n" "Are o valoare negativă, in unitatile curente." -#: flatcamGUI/FlatCAMGUI.py:4661 flatcamGUI/FlatCAMGUI.py:5103 -#: flatcamGUI/ObjectUI.py:727 flatcamGUI/ObjectUI.py:1264 +#: flatcamGUI/FlatCAMGUI.py:4859 flatcamGUI/FlatCAMGUI.py:5315 +#: flatcamGUI/ObjectUI.py:730 flatcamGUI/ObjectUI.py:1270 msgid "Feedrate Probe:" msgstr "Feedrate sonda:" -#: flatcamGUI/FlatCAMGUI.py:4663 flatcamGUI/FlatCAMGUI.py:5105 -#: flatcamGUI/ObjectUI.py:729 flatcamGUI/ObjectUI.py:1267 +#: flatcamGUI/FlatCAMGUI.py:4861 flatcamGUI/FlatCAMGUI.py:5317 +#: 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:4669 flatcamGUI/FlatCAMGUI.py:5112 +#: flatcamGUI/FlatCAMGUI.py:4867 flatcamGUI/FlatCAMGUI.py:5324 msgid "Fast Plunge:" msgstr "Plonjare rapida:" -#: flatcamGUI/FlatCAMGUI.py:4671 flatcamGUI/FlatCAMGUI.py:5114 +#: flatcamGUI/FlatCAMGUI.py:4869 flatcamGUI/FlatCAMGUI.py:5326 msgid "" "By checking this, the vertical move from\n" "Z_Toolchange to Z_move is done with G0,\n" @@ -7206,11 +7429,11 @@ msgstr "" "schimba\n" "unealta. Daca aveti ceva plasat sub unealtă ceva se va strica." -#: flatcamGUI/FlatCAMGUI.py:4680 +#: flatcamGUI/FlatCAMGUI.py:4878 msgid "Fast Retract:" msgstr "Retragere rapida:" -#: flatcamGUI/FlatCAMGUI.py:4682 +#: flatcamGUI/FlatCAMGUI.py:4880 msgid "" "Exit hole strategy.\n" " - When uncheked, while exiting the drilled hole the drill bit\n" @@ -7229,15 +7452,11 @@ msgstr "" "adâncimea\n" "de deplasare cu viteza maxima G0, intr-o singură mișcare." -#: flatcamGUI/FlatCAMGUI.py:4701 +#: flatcamGUI/FlatCAMGUI.py:4899 msgid "Excellon Export" msgstr "Export Excellon" -#: flatcamGUI/FlatCAMGUI.py:4704 -msgid "Export Options:" -msgstr "Opțiuni Export::" - -#: flatcamGUI/FlatCAMGUI.py:4706 +#: 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." @@ -7246,19 +7465,11 @@ msgstr "" "se exporta un fişier Excellon folosind:\n" "File -> Exporta -> Exporta Excellon" -#: flatcamGUI/FlatCAMGUI.py:4715 -msgid "Units:" -msgstr "Unitati:" - -#: flatcamGUI/FlatCAMGUI.py:4717 flatcamGUI/FlatCAMGUI.py:4723 +#: 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:4729 -msgid "Int/Decimals:" -msgstr "Int/Zecimale:" - -#: flatcamGUI/FlatCAMGUI.py:4731 +#: flatcamGUI/FlatCAMGUI.py:4929 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -7270,11 +7481,11 @@ msgstr "" "Aici se setează formatul Excellon când nu se utilizează\n" "coordonate cu zecimale." -#: flatcamGUI/FlatCAMGUI.py:4767 +#: flatcamGUI/FlatCAMGUI.py:4965 msgid "Format:" msgstr "Format:" -#: flatcamGUI/FlatCAMGUI.py:4769 flatcamGUI/FlatCAMGUI.py:4779 +#: 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" @@ -7293,11 +7504,7 @@ msgstr "" "- LZ = zerourile prefix sunt pastrate și cele sufix eliminate\n" "- TZ = zerourile prefix sunt eliminate și cele sufix pastrate." -#: flatcamGUI/FlatCAMGUI.py:4790 -msgid "Zeros:" -msgstr "Zero-uri:" - -#: flatcamGUI/FlatCAMGUI.py:4803 +#: flatcamGUI/FlatCAMGUI.py:5001 msgid "" "This sets the default type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -7309,11 +7516,11 @@ msgstr "" "- LZ = zerourile prefix sunt pastrate și cele sufix eliminate\n" "- TZ = zerourile prefix sunt eliminate și cele sufix pastrate." -#: flatcamGUI/FlatCAMGUI.py:4829 +#: flatcamGUI/FlatCAMGUI.py:5027 msgid "Geometry General" msgstr "Geometrie General" -#: flatcamGUI/FlatCAMGUI.py:4847 +#: flatcamGUI/FlatCAMGUI.py:5045 msgid "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." @@ -7321,29 +7528,29 @@ msgstr "" "Numărul de segmente utilizate pentru\n" "aproximarea lineara a Geometriilor circulare." -#: flatcamGUI/FlatCAMGUI.py:4855 +#: flatcamGUI/FlatCAMGUI.py:5053 msgid "Tools" msgstr "Unelte" -#: flatcamGUI/FlatCAMGUI.py:4862 +#: flatcamGUI/FlatCAMGUI.py:5060 msgid "Tool dia: " msgstr "Dia Unealta:" -#: flatcamGUI/FlatCAMGUI.py:4864 +#: flatcamGUI/FlatCAMGUI.py:5062 msgid "" "The diameter of the cutting\n" "tool.." msgstr "Diametrul uneltei taietoare ..." -#: flatcamGUI/FlatCAMGUI.py:4879 +#: flatcamGUI/FlatCAMGUI.py:5077 msgid "Geometry Options" msgstr "Opțiuni Geometrie" -#: flatcamGUI/FlatCAMGUI.py:4884 +#: flatcamGUI/FlatCAMGUI.py:5082 msgid "Create CNC Job:" msgstr "Crează CNCJob:" -#: flatcamGUI/FlatCAMGUI.py:4886 +#: flatcamGUI/FlatCAMGUI.py:5084 msgid "" "Create a CNC Job object\n" "tracing the contours of this\n" @@ -7352,7 +7559,7 @@ msgstr "" "Crează un obiect CNCJob care urmareste conturul\n" "acestui obiect tip Geometrie." -#: flatcamGUI/FlatCAMGUI.py:4898 flatcamGUI/ObjectUI.py:1062 +#: flatcamGUI/FlatCAMGUI.py:5096 flatcamGUI/ObjectUI.py:1065 msgid "" "Cutting depth (negative)\n" "below the copper surface." @@ -7360,21 +7567,21 @@ msgstr "" "Adâncimea la care se taie sub suprafata de cupru.\n" "Valoare negativă." -#: flatcamGUI/FlatCAMGUI.py:4906 +#: flatcamGUI/FlatCAMGUI.py:5104 msgid "Multidepth" msgstr "MultiPas" -#: flatcamGUI/FlatCAMGUI.py:4908 +#: flatcamGUI/FlatCAMGUI.py:5106 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:4913 +#: flatcamGUI/FlatCAMGUI.py:5111 msgid "Depth/Pass:" msgstr "Adanc./Trecere" -#: flatcamGUI/FlatCAMGUI.py:4915 +#: flatcamGUI/FlatCAMGUI.py:5113 msgid "" "The depth to cut on each pass,\n" "when multidepth is enabled.\n" @@ -7387,7 +7594,7 @@ msgstr "" "Valoarea este pozitivă desi reprezinta o fracţie\n" "a adancimii de tăiere care este o valoare negativă." -#: flatcamGUI/FlatCAMGUI.py:4931 flatcamGUI/ObjectUI.py:1098 +#: flatcamGUI/FlatCAMGUI.py:5129 flatcamGUI/ObjectUI.py:1101 msgid "" "Height of the tool when\n" "moving without cutting." @@ -7395,11 +7602,11 @@ msgstr "" "Înălţimea la care se misca unealta când nu taie,\n" "deasupra materialului." -#: flatcamGUI/FlatCAMGUI.py:4958 flatcamGUI/ObjectUI.py:1153 +#: flatcamGUI/FlatCAMGUI.py:5156 flatcamGUI/ObjectUI.py:1156 msgid "Feed Rate X-Y:" msgstr "Feedrate X-Y:" -#: flatcamGUI/FlatCAMGUI.py:4960 flatcamGUI/ObjectUI.py:1156 +#: flatcamGUI/FlatCAMGUI.py:5158 flatcamGUI/ObjectUI.py:1159 msgid "" "Cutting speed in the XY\n" "plane in units per minute" @@ -7407,11 +7614,11 @@ msgstr "" "Viteza de tăiere in planul X-Y\n" "in unitati pe minut." -#: flatcamGUI/FlatCAMGUI.py:4968 +#: flatcamGUI/FlatCAMGUI.py:5166 msgid "Feed Rate Z:" msgstr "Feedrate Z:" -#: flatcamGUI/FlatCAMGUI.py:4970 +#: flatcamGUI/FlatCAMGUI.py:5168 msgid "" "Cutting speed in the XY\n" "plane in units per minute.\n" @@ -7421,12 +7628,12 @@ msgstr "" "in unitati pe minut.\n" "Mai este numita și viteza de plonjare." -#: flatcamGUI/FlatCAMGUI.py:4979 flatcamGUI/ObjectUI.py:679 -#: flatcamGUI/ObjectUI.py:1205 +#: flatcamGUI/FlatCAMGUI.py:5177 flatcamGUI/ObjectUI.py:682 +#: flatcamGUI/ObjectUI.py:1211 msgid "Spindle speed:" msgstr "Viteza motor:" -#: flatcamGUI/FlatCAMGUI.py:5008 +#: flatcamGUI/FlatCAMGUI.py:5220 msgid "" "The postprocessor file that dictates\n" "Machine Code output." @@ -7435,11 +7642,11 @@ msgstr "" "respecte un anumit format care să fie ințeles de diverse\n" "utilaje. Este responsabil de 'personalizarea' G-Code." -#: flatcamGUI/FlatCAMGUI.py:5024 +#: flatcamGUI/FlatCAMGUI.py:5236 msgid "Geometry Adv. Options" msgstr "Opțiuni Avans. Geometrie" -#: flatcamGUI/FlatCAMGUI.py:5031 +#: flatcamGUI/FlatCAMGUI.py:5243 msgid "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." @@ -7447,7 +7654,7 @@ msgstr "" "Parametrii folositi pentru a crea un obiect CNCJob,\n" "urmărind contururile unui obiect tip Geometrie." -#: flatcamGUI/FlatCAMGUI.py:5051 +#: flatcamGUI/FlatCAMGUI.py:5263 msgid "" "Height of the tool just after starting the work.\n" "Delete the value if you don't need this feature." @@ -7455,7 +7662,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:5071 +#: flatcamGUI/FlatCAMGUI.py:5283 msgid "" "Cutting speed in the XY plane\n" "(in units per minute).\n" @@ -7468,11 +7675,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:5083 +#: flatcamGUI/FlatCAMGUI.py:5295 msgid "Re-cut 1st pt." msgstr "Re-tăiere 1-ul pt." -#: flatcamGUI/FlatCAMGUI.py:5085 flatcamGUI/ObjectUI.py:1196 +#: flatcamGUI/FlatCAMGUI.py:5297 flatcamGUI/ObjectUI.py:1202 msgid "" "In order to remove possible\n" "copper leftovers where first cut\n" @@ -7484,11 +7691,11 @@ msgstr "" "cu sfârşitul acesteia (este vorba de un contur), sunt eliminate\n" "prin taierea peste acest punct." -#: flatcamGUI/FlatCAMGUI.py:5124 +#: flatcamGUI/FlatCAMGUI.py:5336 msgid "Seg. X size:" msgstr "Dim. seg X." -#: flatcamGUI/FlatCAMGUI.py:5126 +#: flatcamGUI/FlatCAMGUI.py:5338 msgid "" "The size of the trace segment on the X axis.\n" "Useful for auto-leveling.\n" @@ -7499,11 +7706,11 @@ msgstr "" "O valoare de 0 inseamnaca nu se face segmentare\n" "pe axa X." -#: flatcamGUI/FlatCAMGUI.py:5135 +#: flatcamGUI/FlatCAMGUI.py:5347 msgid "Seg. Y size:" msgstr "Dim. seg Y." -#: flatcamGUI/FlatCAMGUI.py:5137 +#: flatcamGUI/FlatCAMGUI.py:5349 msgid "" "The size of the trace segment on the Y axis.\n" "Useful for auto-leveling.\n" @@ -7514,20 +7721,42 @@ msgstr "" "O valoare de 0 inseamnaca nu se face segmentare\n" "pe axa Y." -#: flatcamGUI/FlatCAMGUI.py:5153 +#: flatcamGUI/FlatCAMGUI.py:5365 +msgid "Geometry Editor" +msgstr "Editor Geometrii" + +#: flatcamGUI/FlatCAMGUI.py:5370 +msgid "A list of Geometry Editor parameters." +msgstr "O lista de parametri ai Editorului de Geometrii." + +#: flatcamGUI/FlatCAMGUI.py:5380 +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." +msgstr "" +"Setează numărul de geometriil 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:5399 msgid "CNC Job General" msgstr "CNCJob General" -#: flatcamGUI/FlatCAMGUI.py:5166 flatcamGUI/ObjectUI.py:544 -#: flatcamGUI/ObjectUI.py:874 flatcamGUI/ObjectUI.py:1428 +#: flatcamGUI/FlatCAMGUI.py:5412 flatcamGUI/ObjectUI.py:544 +#: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1434 msgid "Plot Object" msgstr "Afisează" -#: flatcamGUI/FlatCAMGUI.py:5173 +#: flatcamGUI/FlatCAMGUI.py:5419 msgid "Plot kind:" msgstr "Tip afișare:" -#: flatcamGUI/FlatCAMGUI.py:5175 flatcamGUI/ObjectUI.py:1350 +#: flatcamGUI/FlatCAMGUI.py:5421 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" @@ -7540,7 +7769,7 @@ msgstr "" "- Tăiere -> miscarile in material, tăiere\n" "- Amandoua" -#: flatcamGUI/FlatCAMGUI.py:5194 +#: flatcamGUI/FlatCAMGUI.py:5440 msgid "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." @@ -7548,17 +7777,17 @@ msgstr "" "Numărul de segmente utilizate pentru\n" "aproximarea lineara a reprezentarilor GCodului circular." -#: flatcamGUI/FlatCAMGUI.py:5204 +#: flatcamGUI/FlatCAMGUI.py:5450 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:5212 +#: flatcamGUI/FlatCAMGUI.py:5458 msgid "Coords dec.:" msgstr "Coord. zec.:" -#: flatcamGUI/FlatCAMGUI.py:5214 +#: flatcamGUI/FlatCAMGUI.py:5460 msgid "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" @@ -7566,11 +7795,11 @@ msgstr "" "Numărul de zecimale care să fie folosit in \n" "coordonatele X,Y,Z in codul CNC (GCode etc)." -#: flatcamGUI/FlatCAMGUI.py:5222 +#: flatcamGUI/FlatCAMGUI.py:5468 msgid "Feedrate dec.:" msgstr "Feedrate zec.:" -#: flatcamGUI/FlatCAMGUI.py:5224 +#: flatcamGUI/FlatCAMGUI.py:5470 msgid "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" @@ -7578,16 +7807,16 @@ msgstr "" "Numărul de zecimale care să fie folosit in \n" "parametrul >Feedrate< in codul CNC (GCode etc)." -#: flatcamGUI/FlatCAMGUI.py:5239 +#: flatcamGUI/FlatCAMGUI.py:5485 msgid "CNC Job Options" msgstr "Opțiuni CNCJob" -#: flatcamGUI/FlatCAMGUI.py:5242 flatcamGUI/FlatCAMGUI.py:5283 +#: flatcamGUI/FlatCAMGUI.py:5488 flatcamGUI/FlatCAMGUI.py:5529 msgid "Export G-Code:" msgstr "Exporta G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5244 flatcamGUI/FlatCAMGUI.py:5285 -#: flatcamGUI/ObjectUI.py:1464 +#: flatcamGUI/FlatCAMGUI.py:5490 flatcamGUI/FlatCAMGUI.py:5531 +#: flatcamGUI/ObjectUI.py:1470 msgid "" "Export and save G-Code to\n" "make this object to a file." @@ -7595,11 +7824,11 @@ msgstr "" "Exporta și salvează codul G-Code intr-un fişier\n" "care este salvat pe HDD." -#: flatcamGUI/FlatCAMGUI.py:5250 +#: flatcamGUI/FlatCAMGUI.py:5496 msgid "Prepend to G-Code:" msgstr "Adaugă la inceputul G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5252 +#: flatcamGUI/FlatCAMGUI.py:5498 msgid "" "Type here any G-Code commands you would\n" "like to add at the beginning of the G-Code file." @@ -7607,11 +7836,11 @@ msgstr "" "Adaugă aici orice comenzi G-Code care se dorește să fie\n" "inserate la inceputul codului G-Code." -#: flatcamGUI/FlatCAMGUI.py:5261 +#: flatcamGUI/FlatCAMGUI.py:5507 msgid "Append to G-Code:" msgstr "Adaugă la sfârşitul G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5263 flatcamGUI/ObjectUI.py:1486 +#: flatcamGUI/FlatCAMGUI.py:5509 flatcamGUI/ObjectUI.py:1492 msgid "" "Type here any G-Code commands you would\n" "like to append to the generated file.\n" @@ -7620,15 +7849,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:5280 +#: flatcamGUI/FlatCAMGUI.py:5526 msgid "CNC Job Adv. Options" msgstr "Opțiuni Avans. CNCJob" -#: flatcamGUI/FlatCAMGUI.py:5291 flatcamGUI/ObjectUI.py:1504 +#: flatcamGUI/FlatCAMGUI.py:5537 flatcamGUI/ObjectUI.py:1510 msgid "Toolchange G-Code:" msgstr "G-Code pt schimb unealtă:" -#: flatcamGUI/FlatCAMGUI.py:5293 +#: flatcamGUI/FlatCAMGUI.py:5539 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -7640,11 +7869,11 @@ msgstr "" "Comanda M6 este inlocuita.\n" "Aceata va constitui un macro pentru schimbul uneltelor." -#: flatcamGUI/FlatCAMGUI.py:5307 flatcamGUI/ObjectUI.py:1526 +#: flatcamGUI/FlatCAMGUI.py:5553 flatcamGUI/ObjectUI.py:1532 msgid "Use Toolchange Macro" msgstr "Fol. Macro schimb unealtă" -#: flatcamGUI/FlatCAMGUI.py:5309 flatcamGUI/ObjectUI.py:1529 +#: flatcamGUI/FlatCAMGUI.py:5555 flatcamGUI/ObjectUI.py:1535 msgid "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." @@ -7652,7 +7881,7 @@ msgstr "" "Bifează aici daca dorești să folosești Macro pentru\n" "schimb unelte." -#: flatcamGUI/FlatCAMGUI.py:5321 flatcamGUI/ObjectUI.py:1538 +#: flatcamGUI/FlatCAMGUI.py:5567 flatcamGUI/ObjectUI.py:1544 msgid "" "A list of the FlatCAM variables that can be used\n" "in the Toolchange event.\n" @@ -7662,78 +7891,71 @@ msgstr "" "de schimb al uneltei (când se intalneste comanda M6).\n" "Este necesar să fie inconjurate de simbolul '%'." -#: flatcamGUI/FlatCAMGUI.py:5328 flatcamGUI/ObjectUI.py:1545 +#: flatcamGUI/FlatCAMGUI.py:5574 flatcamGUI/ObjectUI.py:1551 msgid "Parameters" msgstr "Parametri" -#: flatcamGUI/FlatCAMGUI.py:5331 flatcamGUI/ObjectUI.py:1548 +#: flatcamGUI/FlatCAMGUI.py:5577 flatcamGUI/ObjectUI.py:1554 msgid "FlatCAM CNC parameters" msgstr "Parametri FlatCAM CNC" -#: flatcamGUI/FlatCAMGUI.py:5332 flatcamGUI/ObjectUI.py:1549 +#: flatcamGUI/FlatCAMGUI.py:5578 flatcamGUI/ObjectUI.py:1555 msgid "tool = tool number" msgstr "tool = numărul uneltei" -#: flatcamGUI/FlatCAMGUI.py:5333 flatcamGUI/ObjectUI.py:1550 +#: flatcamGUI/FlatCAMGUI.py:5579 flatcamGUI/ObjectUI.py:1556 msgid "tooldia = tool diameter" msgstr "tooldia = dimaetrul uneltei" -#: flatcamGUI/FlatCAMGUI.py:5334 flatcamGUI/ObjectUI.py:1551 +#: flatcamGUI/FlatCAMGUI.py:5580 flatcamGUI/ObjectUI.py:1557 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:5335 flatcamGUI/ObjectUI.py:1552 +#: flatcamGUI/FlatCAMGUI.py:5581 flatcamGUI/ObjectUI.py:1558 msgid "x_toolchange = X coord for Toolchange" msgstr "x_toolchange = coord. X pt schimb unealtă" -#: flatcamGUI/FlatCAMGUI.py:5336 flatcamGUI/ObjectUI.py:1553 +#: flatcamGUI/FlatCAMGUI.py:5582 flatcamGUI/ObjectUI.py:1559 msgid "y_toolchange = Y coord for Toolchange" msgstr "y_toolchange = coord. Y pt schimb unealtă" -#: flatcamGUI/FlatCAMGUI.py:5337 flatcamGUI/ObjectUI.py:1554 +#: flatcamGUI/FlatCAMGUI.py:5583 flatcamGUI/ObjectUI.py:1560 msgid "z_toolchange = Z coord for Toolchange" msgstr "z_toolchange = coord. Z pt schimb unealtă" -#: flatcamGUI/FlatCAMGUI.py:5338 +#: flatcamGUI/FlatCAMGUI.py:5584 msgid "z_cut = Z depth for the cut" msgstr "z_cut = Z adâncimea de tăiere" -#: flatcamGUI/FlatCAMGUI.py:5339 +#: flatcamGUI/FlatCAMGUI.py:5585 msgid "z_move = Z height for travel" msgstr "z_move = Z Înălţimea deplasare" -#: flatcamGUI/FlatCAMGUI.py:5340 flatcamGUI/ObjectUI.py:1557 +#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1563 msgid "z_depthpercut = the step value for multidepth cut" msgstr "z_depthpercut = pasul pentru taierea progresiva" -#: flatcamGUI/FlatCAMGUI.py:5341 flatcamGUI/ObjectUI.py:1558 +#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1564 msgid "spindlesspeed = the value for the spindle speed" msgstr "spindlesspeed = valoarea viteza motor" -#: flatcamGUI/FlatCAMGUI.py:5342 flatcamGUI/ObjectUI.py:1559 +#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1565 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:5363 +#: flatcamGUI/FlatCAMGUI.py:5609 msgid "NCC Tool Options" msgstr "Opțiuni Unealta NCC" -#: flatcamGUI/FlatCAMGUI.py:5366 flatcamGUI/FlatCAMGUI.py:5467 -#: flatcamGUI/FlatCAMGUI.py:5546 flatcamGUI/FlatCAMGUI.py:5605 -#: flatcamGUI/FlatCAMGUI.py:5708 flatcamGUI/FlatCAMGUI.py:5769 -#: flatcamGUI/FlatCAMGUI.py:5968 flatcamGUI/FlatCAMGUI.py:6095 -msgid "Parameters:" -msgstr "Parametri:" - -#: flatcamGUI/FlatCAMGUI.py:5376 flatcamGUI/FlatCAMGUI.py:6106 +#: flatcamGUI/FlatCAMGUI.py:5622 flatcamGUI/FlatCAMGUI.py:6352 msgid "Tools dia:" msgstr "Dia unealtă:" -#: flatcamGUI/FlatCAMGUI.py:5378 +#: flatcamGUI/FlatCAMGUI.py:5624 msgid "Diameters of the cutting tools, separated by ','" msgstr "Diametrele pentru unelte taietoare, separate cu virgula" -#: flatcamGUI/FlatCAMGUI.py:5386 flatcamTools/ToolNonCopperClear.py:167 +#: flatcamGUI/FlatCAMGUI.py:5632 flatcamTools/ToolNonCopperClear.py:167 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -7759,11 +7981,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:5402 flatcamTools/ToolNonCopperClear.py:183 +#: flatcamGUI/FlatCAMGUI.py:5648 flatcamTools/ToolNonCopperClear.py:183 msgid "Bounding box margin." msgstr "Marginea pentru forma înconjurătoare." -#: flatcamGUI/FlatCAMGUI.py:5411 flatcamTools/ToolNonCopperClear.py:192 +#: flatcamGUI/FlatCAMGUI.py:5657 flatcamTools/ToolNonCopperClear.py:192 #: flatcamTools/ToolPaint.py:190 msgid "" "Algorithm for non-copper clearing:
Standard: Fixed step inwards." @@ -7774,12 +7996,12 @@ msgstr "" "
Punct-samanta: De la punctul samanta, spre expterior.
Linii " "drepte: Linii paralele." -#: flatcamGUI/FlatCAMGUI.py:5443 flatcamTools/ToolNonCopperClear.py:224 +#: flatcamGUI/FlatCAMGUI.py:5689 flatcamTools/ToolNonCopperClear.py:224 #: flatcamTools/ToolPaint.py:222 msgid "Rest M.:" msgstr "Rest M.:" -#: flatcamGUI/FlatCAMGUI.py:5445 +#: flatcamGUI/FlatCAMGUI.py:5691 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -7797,11 +8019,11 @@ msgstr "" "precedenta.\n" "Daca nu este bifat, foloseşte algoritmul standard." -#: flatcamGUI/FlatCAMGUI.py:5464 +#: flatcamGUI/FlatCAMGUI.py:5710 msgid "Cutout Tool Options" msgstr "Opțiuni Unealta Decupare" -#: flatcamGUI/FlatCAMGUI.py:5469 flatcamGUI/ObjectUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:5715 flatcamGUI/ObjectUI.py:402 msgid "" "Create toolpaths to cut around\n" "the PCB and separate it from\n" @@ -7811,17 +8033,17 @@ msgstr "" "lasand punţi pentru a separa PCB-ul de \n" "placa din care a fost taiat." -#: flatcamGUI/FlatCAMGUI.py:5488 +#: flatcamGUI/FlatCAMGUI.py:5734 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:5495 flatcamTools/ToolCutOut.py:96 +#: flatcamGUI/FlatCAMGUI.py:5741 flatcamTools/ToolCutOut.py:96 msgid "Gap size:" msgstr "Dim. punte:" -#: flatcamGUI/FlatCAMGUI.py:5497 +#: flatcamGUI/FlatCAMGUI.py:5743 msgid "" "Size of the gaps in the toolpath\n" "that will remain to hold the\n" @@ -7831,11 +8053,11 @@ msgstr "" "care vor mentine PCB-ul in poziţie, fără să cada\n" "din placa 'mama' dupa decupare." -#: flatcamGUI/FlatCAMGUI.py:5505 flatcamTools/ToolCutOut.py:133 +#: flatcamGUI/FlatCAMGUI.py:5751 flatcamTools/ToolCutOut.py:134 msgid "Gaps:" msgstr "Punţi:" -#: flatcamGUI/FlatCAMGUI.py:5507 +#: flatcamGUI/FlatCAMGUI.py:5753 msgid "" "Number of bridge gaps used for the cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -7857,21 +8079,21 @@ msgstr "" "- 2tb = 2* sus - 2* jos\n" "- 8 = 2* stânga - 2* dreapta - 2* sus - 2* jos" -#: flatcamGUI/FlatCAMGUI.py:5528 flatcamTools/ToolCutOut.py:115 +#: flatcamGUI/FlatCAMGUI.py:5774 flatcamTools/ToolCutOut.py:115 msgid "Convex Sh.:" msgstr "Formă Conv." -#: flatcamGUI/FlatCAMGUI.py:5530 flatcamTools/ToolCutOut.py:117 +#: flatcamGUI/FlatCAMGUI.py:5776 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:5543 +#: flatcamGUI/FlatCAMGUI.py:5789 msgid "2Sided Tool Options" msgstr "Opțiuni Unealta 2Fețe" -#: flatcamGUI/FlatCAMGUI.py:5548 +#: flatcamGUI/FlatCAMGUI.py:5794 msgid "" "A tool to help in creating a double sided\n" "PCB using alignment holes." @@ -7879,28 +8101,28 @@ msgstr "" "O unealtă care ajuta in crearea de PCB-uri cu 2 fețe\n" "folosind găuri de aliniere." -#: flatcamGUI/FlatCAMGUI.py:5558 flatcamTools/ToolDblSided.py:235 +#: flatcamGUI/FlatCAMGUI.py:5804 flatcamTools/ToolDblSided.py:235 msgid "Drill diam.:" msgstr "Dia gaura:" -#: flatcamGUI/FlatCAMGUI.py:5560 flatcamTools/ToolDblSided.py:226 +#: flatcamGUI/FlatCAMGUI.py:5806 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:5569 flatcamTools/ToolDblSided.py:120 +#: flatcamGUI/FlatCAMGUI.py:5815 flatcamTools/ToolDblSided.py:120 msgid "Mirror Axis:" msgstr "Axe oglindire:" -#: flatcamGUI/FlatCAMGUI.py:5571 flatcamTools/ToolDblSided.py:122 +#: flatcamGUI/FlatCAMGUI.py:5817 flatcamTools/ToolDblSided.py:122 msgid "Mirror vertically (X) or horizontally (Y)." msgstr "Oglindește vertical (X) sau orizontal (Y)." -#: flatcamGUI/FlatCAMGUI.py:5582 flatcamTools/ToolDblSided.py:133 +#: flatcamGUI/FlatCAMGUI.py:5828 flatcamTools/ToolDblSided.py:133 msgid "Axis Ref:" msgstr "Axa de ref.:" -#: flatcamGUI/FlatCAMGUI.py:5584 +#: flatcamGUI/FlatCAMGUI.py:5830 msgid "" "The axis should pass through a point or cut\n" " a specified box (in a Geometry object) in \n" @@ -7909,11 +8131,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:5600 +#: flatcamGUI/FlatCAMGUI.py:5846 msgid "Paint Tool Options" msgstr "Opțiuni Unealta Paint" -#: flatcamGUI/FlatCAMGUI.py:5607 flatcamGUI/ObjectUI.py:1299 +#: flatcamGUI/FlatCAMGUI.py:5853 flatcamGUI/ObjectUI.py:1305 msgid "" "Creates tool paths to cover the\n" "whole area of a polygon (remove\n" @@ -7926,7 +8148,7 @@ msgstr "" "singur poligon se va cere să faceti click pe poligonul\n" "dorit." -#: flatcamGUI/FlatCAMGUI.py:5631 +#: flatcamGUI/FlatCAMGUI.py:5877 msgid "" "How much (fraction) of the tool\n" "width to overlap each tool pass." @@ -7934,19 +8156,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:5685 flatcamTools/ToolPaint.py:237 +#: flatcamGUI/FlatCAMGUI.py:5931 flatcamTools/ToolPaint.py:237 msgid "Selection:" msgstr "Selecţie:" -#: flatcamGUI/FlatCAMGUI.py:5687 +#: flatcamGUI/FlatCAMGUI.py:5933 msgid "How to select the polygons to paint." msgstr "Cum să se selecteze poligoanele de pictat (paint)." -#: flatcamGUI/FlatCAMGUI.py:5705 +#: flatcamGUI/FlatCAMGUI.py:5951 msgid "Film Tool Options" msgstr "Opțiuni Unealta Film" -#: flatcamGUI/FlatCAMGUI.py:5710 +#: flatcamGUI/FlatCAMGUI.py:5956 msgid "" "Create a PCB film from a Gerber or Geometry\n" "FlatCAM object.\n" @@ -7955,11 +8177,11 @@ msgstr "" "Crează un film PCB dintr-un obiect Gerber sau tip Geometrie.\n" "Fişierul este salvat in format SVG." -#: flatcamGUI/FlatCAMGUI.py:5721 flatcamTools/ToolFilm.py:116 +#: flatcamGUI/FlatCAMGUI.py:5967 flatcamTools/ToolFilm.py:116 msgid "Film Type:" msgstr "Tip film:" -#: flatcamGUI/FlatCAMGUI.py:5723 flatcamTools/ToolFilm.py:118 +#: flatcamGUI/FlatCAMGUI.py:5969 flatcamTools/ToolFilm.py:118 msgid "" "Generate a Positive black film or a Negative film.\n" "Positive means that it will print the features\n" @@ -7973,11 +8195,11 @@ msgstr "" "Negativ = traseele vor fi albe pe un fundal negru.\n" "Formatul fişierului pt filmul salvat este SVG." -#: flatcamGUI/FlatCAMGUI.py:5734 flatcamTools/ToolFilm.py:130 +#: flatcamGUI/FlatCAMGUI.py:5980 flatcamTools/ToolFilm.py:130 msgid "Border:" msgstr "Bordura:" -#: flatcamGUI/FlatCAMGUI.py:5736 flatcamTools/ToolFilm.py:132 +#: flatcamGUI/FlatCAMGUI.py:5982 flatcamTools/ToolFilm.py:132 msgid "" "Specify a border around the object.\n" "Only for negative film.\n" @@ -7994,11 +8216,11 @@ msgstr "" "Va crea o bara solida neagra in jurul printului efectiv permitand o\n" "delimitare exacta" -#: flatcamGUI/FlatCAMGUI.py:5749 flatcamTools/ToolFilm.py:144 +#: flatcamGUI/FlatCAMGUI.py:5995 flatcamTools/ToolFilm.py:144 msgid "Scale Stroke:" msgstr "Scalează:" -#: flatcamGUI/FlatCAMGUI.py:5751 flatcamTools/ToolFilm.py:146 +#: flatcamGUI/FlatCAMGUI.py:5997 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 " @@ -8008,11 +8230,11 @@ msgstr "" "Scalează grosimea conturului fiecarui element din fişierul SVG.\n" "Elementele mai mici vor fi afectate mai mult." -#: flatcamGUI/FlatCAMGUI.py:5766 +#: flatcamGUI/FlatCAMGUI.py:6012 msgid "Panelize Tool Options" msgstr "Opțiuni Unealta Panelizare" -#: flatcamGUI/FlatCAMGUI.py:5771 +#: flatcamGUI/FlatCAMGUI.py:6017 msgid "" "Create an object that contains an array of (x, y) elements,\n" "each element is a copy of the source object spaced\n" @@ -8022,11 +8244,11 @@ msgstr "" "unde fiecare element este o copie a obiectului sursa, separat la o\n" "distanţă X, Y unul de celalalt." -#: flatcamGUI/FlatCAMGUI.py:5782 flatcamTools/ToolPanelize.py:113 +#: flatcamGUI/FlatCAMGUI.py:6028 flatcamTools/ToolPanelize.py:147 msgid "Spacing cols:" msgstr "Sep. coloane:" -#: flatcamGUI/FlatCAMGUI.py:5784 flatcamTools/ToolPanelize.py:115 +#: flatcamGUI/FlatCAMGUI.py:6030 flatcamTools/ToolPanelize.py:149 msgid "" "Spacing between columns of the desired panel.\n" "In current units." @@ -8034,11 +8256,11 @@ msgstr "" "Spatiul de separare între coloane.\n" "In unitatile curente." -#: flatcamGUI/FlatCAMGUI.py:5792 flatcamTools/ToolPanelize.py:122 +#: flatcamGUI/FlatCAMGUI.py:6038 flatcamTools/ToolPanelize.py:156 msgid "Spacing rows:" msgstr "Sep. linii:" -#: flatcamGUI/FlatCAMGUI.py:5794 flatcamTools/ToolPanelize.py:124 +#: flatcamGUI/FlatCAMGUI.py:6040 flatcamTools/ToolPanelize.py:158 msgid "" "Spacing between rows of the desired panel.\n" "In current units." @@ -8046,27 +8268,27 @@ msgstr "" "Spatiul de separare între linii.\n" "In unitatile curente." -#: flatcamGUI/FlatCAMGUI.py:5802 flatcamTools/ToolPanelize.py:131 +#: flatcamGUI/FlatCAMGUI.py:6048 flatcamTools/ToolPanelize.py:165 msgid "Columns:" msgstr "Coloane:" -#: flatcamGUI/FlatCAMGUI.py:5804 flatcamTools/ToolPanelize.py:133 +#: flatcamGUI/FlatCAMGUI.py:6050 flatcamTools/ToolPanelize.py:167 msgid "Number of columns of the desired panel" msgstr "Numărul de coloane ale panel-ului dorit." -#: flatcamGUI/FlatCAMGUI.py:5811 flatcamTools/ToolPanelize.py:139 +#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:173 msgid "Rows:" msgstr "Linii:" -#: flatcamGUI/FlatCAMGUI.py:5813 flatcamTools/ToolPanelize.py:141 +#: flatcamGUI/FlatCAMGUI.py:6059 flatcamTools/ToolPanelize.py:175 msgid "Number of rows of the desired panel" msgstr "Numărul de linii ale panel-ului dorit." -#: flatcamGUI/FlatCAMGUI.py:5821 flatcamTools/ToolPanelize.py:148 +#: flatcamGUI/FlatCAMGUI.py:6067 msgid "Panel Type:" msgstr "Tip panel:" -#: flatcamGUI/FlatCAMGUI.py:5823 +#: flatcamGUI/FlatCAMGUI.py:6069 msgid "" "Choose the type of object for the panel object:\n" "- Gerber\n" @@ -8076,11 +8298,11 @@ msgstr "" "- Gerber\n" "- Geometrie" -#: flatcamGUI/FlatCAMGUI.py:5832 +#: flatcamGUI/FlatCAMGUI.py:6078 msgid "Constrain within:" msgstr "Constrange:" -#: flatcamGUI/FlatCAMGUI.py:5834 flatcamTools/ToolPanelize.py:160 +#: flatcamGUI/FlatCAMGUI.py:6080 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" @@ -8094,11 +8316,11 @@ msgstr "" "panelul final va contine numai acel număr de linii/coloane care se inscrie\n" "complet in aria desemnata." -#: flatcamGUI/FlatCAMGUI.py:5843 flatcamTools/ToolPanelize.py:169 +#: flatcamGUI/FlatCAMGUI.py:6089 flatcamTools/ToolPanelize.py:204 msgid "Width (DX):" msgstr "Latime (Dx):" -#: flatcamGUI/FlatCAMGUI.py:5845 flatcamTools/ToolPanelize.py:171 +#: flatcamGUI/FlatCAMGUI.py:6091 flatcamTools/ToolPanelize.py:206 msgid "" "The width (DX) within which the panel must fit.\n" "In current units." @@ -8106,11 +8328,11 @@ msgstr "" "Lăţimea (Dx) in care panelul trebuie să se inscrie.\n" "In unitati curente." -#: flatcamGUI/FlatCAMGUI.py:5852 flatcamTools/ToolPanelize.py:177 +#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:212 msgid "Height (DY):" msgstr "Inaltime (Dy):" -#: flatcamGUI/FlatCAMGUI.py:5854 flatcamTools/ToolPanelize.py:179 +#: flatcamGUI/FlatCAMGUI.py:6100 flatcamTools/ToolPanelize.py:214 msgid "" "The height (DY)within which the panel must fit.\n" "In current units." @@ -8118,15 +8340,15 @@ msgstr "" "Înălţimea (Dy) in care panelul trebuie să se inscrie.\n" "In unitati curente." -#: flatcamGUI/FlatCAMGUI.py:5868 +#: flatcamGUI/FlatCAMGUI.py:6114 msgid "Calculators Tool Options" msgstr "Opțiuni Unealta Calculatoare" -#: flatcamGUI/FlatCAMGUI.py:5871 +#: flatcamGUI/FlatCAMGUI.py:6117 msgid "V-Shape Tool Calculator:" msgstr "Calculator: Unealta V-shape" -#: flatcamGUI/FlatCAMGUI.py:5873 +#: flatcamGUI/FlatCAMGUI.py:6119 msgid "" "Calculate the tool diameter for a given V-shape tool,\n" "having the tip diameter, tip angle and\n" @@ -8136,11 +8358,11 @@ msgstr "" "avand diametrul vârfului și unghiul la vârf cat și\n" "adâncimea de tăiere, ca parametri." -#: flatcamGUI/FlatCAMGUI.py:5884 flatcamTools/ToolCalculators.py:94 +#: flatcamGUI/FlatCAMGUI.py:6130 flatcamTools/ToolCalculators.py:94 msgid "Tip Diameter:" msgstr "Dia vârf:" -#: flatcamGUI/FlatCAMGUI.py:5886 +#: flatcamGUI/FlatCAMGUI.py:6132 msgid "" "This is the tool tip diameter.\n" "It is specified by manufacturer." @@ -8148,11 +8370,11 @@ msgstr "" "Acesta este diametrul la vârf al uneltei.\n" "Este specificat de producator." -#: flatcamGUI/FlatCAMGUI.py:5894 +#: flatcamGUI/FlatCAMGUI.py:6140 msgid "Tip angle:" msgstr "Unghiul la vârf:" -#: flatcamGUI/FlatCAMGUI.py:5896 +#: flatcamGUI/FlatCAMGUI.py:6142 msgid "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." @@ -8160,7 +8382,7 @@ msgstr "" "Acesta este unghiul la vârf al uneltei.\n" "Este specificat de producator." -#: flatcamGUI/FlatCAMGUI.py:5906 +#: flatcamGUI/FlatCAMGUI.py:6152 msgid "" "This is depth to cut into material.\n" "In the CNCJob object it is the CutZ parameter." @@ -8168,11 +8390,11 @@ msgstr "" "Aceasta este adâncimea la care se taie in material.\n" "In obiectul CNCJob este parametrul >Z tăiere<." -#: flatcamGUI/FlatCAMGUI.py:5913 +#: flatcamGUI/FlatCAMGUI.py:6159 msgid "ElectroPlating Calculator:" msgstr "Calculator Electroplacare:" -#: flatcamGUI/FlatCAMGUI.py:5915 flatcamTools/ToolCalculators.py:152 +#: flatcamGUI/FlatCAMGUI.py:6161 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 " @@ -8184,31 +8406,31 @@ msgstr "" "- clorura paladiu\n" "- hipofosfit de calciu" -#: flatcamGUI/FlatCAMGUI.py:5925 flatcamTools/ToolCalculators.py:161 +#: flatcamGUI/FlatCAMGUI.py:6171 flatcamTools/ToolCalculators.py:161 msgid "Board Length:" msgstr "Lung. placii:" -#: flatcamGUI/FlatCAMGUI.py:5927 flatcamTools/ToolCalculators.py:165 +#: flatcamGUI/FlatCAMGUI.py:6173 flatcamTools/ToolCalculators.py:165 msgid "This is the board length. In centimeters." msgstr "" "Aceasta este lungimea PCB-ului.\n" "In centimetri. " -#: flatcamGUI/FlatCAMGUI.py:5933 flatcamTools/ToolCalculators.py:167 +#: flatcamGUI/FlatCAMGUI.py:6179 flatcamTools/ToolCalculators.py:167 msgid "Board Width:" msgstr "Lat. placii:" -#: flatcamGUI/FlatCAMGUI.py:5935 flatcamTools/ToolCalculators.py:171 +#: flatcamGUI/FlatCAMGUI.py:6181 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:5940 flatcamTools/ToolCalculators.py:173 +#: flatcamGUI/FlatCAMGUI.py:6186 flatcamTools/ToolCalculators.py:173 msgid "Current Density:" msgstr "Densitate I:" -#: flatcamGUI/FlatCAMGUI.py:5943 flatcamTools/ToolCalculators.py:177 +#: flatcamGUI/FlatCAMGUI.py:6189 flatcamTools/ToolCalculators.py:177 msgid "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." @@ -8216,11 +8438,11 @@ msgstr "" "Densitatea de curent care să treaca prin placa.\n" "In ASF (amperi pe picior la patrat)." -#: flatcamGUI/FlatCAMGUI.py:5949 flatcamTools/ToolCalculators.py:181 +#: flatcamGUI/FlatCAMGUI.py:6195 flatcamTools/ToolCalculators.py:181 msgid "Copper Growth:" msgstr "Grosime Cu:" -#: flatcamGUI/FlatCAMGUI.py:5952 flatcamTools/ToolCalculators.py:185 +#: flatcamGUI/FlatCAMGUI.py:6198 flatcamTools/ToolCalculators.py:185 msgid "" "How thick the copper growth is intended to be.\n" "In microns." @@ -8228,11 +8450,11 @@ msgstr "" "Cat de gros se dorește să fie stratul de cupru depus.\n" "In microni." -#: flatcamGUI/FlatCAMGUI.py:5965 +#: flatcamGUI/FlatCAMGUI.py:6211 msgid "Transform Tool Options" msgstr "Opțiuni Unealta Transformare" -#: flatcamGUI/FlatCAMGUI.py:5970 +#: flatcamGUI/FlatCAMGUI.py:6216 msgid "" "Various transformations that can be applied\n" "on a FlatCAM object." @@ -8245,47 +8467,47 @@ msgstr "" "- deformare\n" "- oglindire" -#: flatcamGUI/FlatCAMGUI.py:5980 +#: flatcamGUI/FlatCAMGUI.py:6226 msgid "Rotate Angle:" msgstr "Unghi Rotaţie:" -#: flatcamGUI/FlatCAMGUI.py:5982 +#: flatcamGUI/FlatCAMGUI.py:6228 msgid "Angle for rotation. In degrees." msgstr "Unnghiul pentru rotaţie. In grade." -#: flatcamGUI/FlatCAMGUI.py:5989 +#: flatcamGUI/FlatCAMGUI.py:6235 msgid "Skew_X angle:" msgstr "Unghi Deform_X:" -#: flatcamGUI/FlatCAMGUI.py:5991 +#: flatcamGUI/FlatCAMGUI.py:6237 msgid "Angle for Skew/Shear on X axis. In degrees." msgstr "Unghiul pentru deformare pe axa X. In grade." -#: flatcamGUI/FlatCAMGUI.py:5998 +#: flatcamGUI/FlatCAMGUI.py:6244 msgid "Skew_Y angle:" msgstr "Unghi Deform_Y:" -#: flatcamGUI/FlatCAMGUI.py:6000 +#: flatcamGUI/FlatCAMGUI.py:6246 msgid "Angle for Skew/Shear on Y axis. In degrees." msgstr "Unghiul pentru deformare pe axa Y. In grade." -#: flatcamGUI/FlatCAMGUI.py:6007 +#: flatcamGUI/FlatCAMGUI.py:6253 msgid "Scale_X factor:" msgstr "Factor Scal_X:" -#: flatcamGUI/FlatCAMGUI.py:6009 +#: flatcamGUI/FlatCAMGUI.py:6255 msgid "Factor for scaling on X axis." msgstr "Factor de scalare pe axa X." -#: flatcamGUI/FlatCAMGUI.py:6016 +#: flatcamGUI/FlatCAMGUI.py:6262 msgid "Scale_Y factor:" msgstr "Factor Scal_Y:" -#: flatcamGUI/FlatCAMGUI.py:6018 +#: flatcamGUI/FlatCAMGUI.py:6264 msgid "Factor for scaling on Y axis." msgstr "Factor de scalare pe axa Y." -#: flatcamGUI/FlatCAMGUI.py:6026 +#: flatcamGUI/FlatCAMGUI.py:6272 msgid "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." @@ -8293,7 +8515,7 @@ msgstr "" "Scalează obiectele selectate folosind\n" "Factor Scal_X pentru ambele axe." -#: flatcamGUI/FlatCAMGUI.py:6034 flatcamTools/ToolTransform.py:210 +#: flatcamGUI/FlatCAMGUI.py:6280 flatcamTools/ToolTransform.py:210 msgid "" "Scale the selected object(s)\n" "using the origin reference when checked,\n" @@ -8306,27 +8528,27 @@ msgstr "" "centrul formei inconjuatoare care cuprinde\n" "toate obiectele selectate." -#: flatcamGUI/FlatCAMGUI.py:6043 +#: flatcamGUI/FlatCAMGUI.py:6289 msgid "Offset_X val:" msgstr "Ofset_X:" -#: flatcamGUI/FlatCAMGUI.py:6045 +#: flatcamGUI/FlatCAMGUI.py:6291 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:6052 +#: flatcamGUI/FlatCAMGUI.py:6298 msgid "Offset_Y val:" msgstr "Ofset_Y:" -#: flatcamGUI/FlatCAMGUI.py:6054 +#: flatcamGUI/FlatCAMGUI.py:6300 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:6060 +#: flatcamGUI/FlatCAMGUI.py:6306 msgid "Mirror Reference" msgstr "Referinţă Oglindire" -#: flatcamGUI/FlatCAMGUI.py:6062 flatcamTools/ToolTransform.py:314 +#: flatcamGUI/FlatCAMGUI.py:6308 flatcamTools/ToolTransform.py:314 msgid "" "Flip the selected object(s)\n" "around the point in Point Entry Field.\n" @@ -8349,11 +8571,11 @@ msgstr "" "in forma (x, y).\n" "La final apasa butonul de oglindire pe axa dorita. " -#: flatcamGUI/FlatCAMGUI.py:6073 +#: flatcamGUI/FlatCAMGUI.py:6319 msgid " Mirror Ref. Point:" msgstr "Pt. Ref. Oglindire:" -#: flatcamGUI/FlatCAMGUI.py:6075 flatcamTools/ToolTransform.py:327 +#: flatcamGUI/FlatCAMGUI.py:6321 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" @@ -8364,11 +8586,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:6092 +#: flatcamGUI/FlatCAMGUI.py:6338 msgid "SolderPaste Tool Options" msgstr "Opțiuni Unealta Pasta Fludor" -#: flatcamGUI/FlatCAMGUI.py:6097 +#: flatcamGUI/FlatCAMGUI.py:6343 msgid "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." @@ -8376,49 +8598,49 @@ msgstr "" "O unealtă care crează cod G-Code pentru dispensarea de pastă de fludor\n" "pe padurile unui PCB." -#: flatcamGUI/FlatCAMGUI.py:6108 +#: flatcamGUI/FlatCAMGUI.py:6354 msgid "Diameters of nozzle tools, separated by ','" msgstr "Diametrele uneltelor (nozzle), separate prin virgula." -#: flatcamGUI/FlatCAMGUI.py:6115 +#: flatcamGUI/FlatCAMGUI.py:6361 msgid "New Nozzle Dia:" msgstr "Nou Dia::" -#: flatcamGUI/FlatCAMGUI.py:6117 flatcamTools/ToolSolderPaste.py:103 +#: flatcamGUI/FlatCAMGUI.py:6363 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:6125 flatcamTools/ToolSolderPaste.py:166 +#: flatcamGUI/FlatCAMGUI.py:6371 flatcamTools/ToolSolderPaste.py:166 msgid "Z Dispense Start:" msgstr "Z start disp.:" -#: flatcamGUI/FlatCAMGUI.py:6127 flatcamTools/ToolSolderPaste.py:168 +#: flatcamGUI/FlatCAMGUI.py:6373 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:6134 flatcamTools/ToolSolderPaste.py:174 +#: flatcamGUI/FlatCAMGUI.py:6380 flatcamTools/ToolSolderPaste.py:174 msgid "Z Dispense:" msgstr "Z disp.:" -#: flatcamGUI/FlatCAMGUI.py:6136 flatcamTools/ToolSolderPaste.py:176 +#: flatcamGUI/FlatCAMGUI.py:6382 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:6143 flatcamTools/ToolSolderPaste.py:183 +#: flatcamGUI/FlatCAMGUI.py:6389 flatcamTools/ToolSolderPaste.py:183 msgid "Z Dispense Stop:" msgstr "Z stop disp.:" -#: flatcamGUI/FlatCAMGUI.py:6145 flatcamTools/ToolSolderPaste.py:185 +#: flatcamGUI/FlatCAMGUI.py:6391 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:6152 flatcamTools/ToolSolderPaste.py:191 +#: flatcamGUI/FlatCAMGUI.py:6398 flatcamTools/ToolSolderPaste.py:191 msgid "Z Travel:" msgstr "Z deplasare:" -#: flatcamGUI/FlatCAMGUI.py:6154 flatcamTools/ToolSolderPaste.py:193 +#: flatcamGUI/FlatCAMGUI.py:6400 flatcamTools/ToolSolderPaste.py:193 msgid "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." @@ -8426,19 +8648,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:6162 flatcamTools/ToolSolderPaste.py:200 +#: flatcamGUI/FlatCAMGUI.py:6408 flatcamTools/ToolSolderPaste.py:200 msgid "Z Toolchange:" msgstr "Z schimb. unealtă:" -#: flatcamGUI/FlatCAMGUI.py:6164 flatcamTools/ToolSolderPaste.py:202 +#: flatcamGUI/FlatCAMGUI.py:6410 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:6171 flatcamTools/ToolSolderPaste.py:208 +#: flatcamGUI/FlatCAMGUI.py:6417 flatcamTools/ToolSolderPaste.py:208 msgid "XY Toolchange:" msgstr "XY schimb unealtă:" -#: flatcamGUI/FlatCAMGUI.py:6173 flatcamTools/ToolSolderPaste.py:210 +#: flatcamGUI/FlatCAMGUI.py:6419 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." @@ -8446,30 +8668,30 @@ msgstr "" "Coordonatele X, Y pentru schimbarea uneltei (nozzle).\n" "Formatul este (x,y) unde x și y sunt numere Reale." -#: flatcamGUI/FlatCAMGUI.py:6181 flatcamTools/ToolSolderPaste.py:217 +#: flatcamGUI/FlatCAMGUI.py:6427 flatcamTools/ToolSolderPaste.py:217 msgid "Feedrate X-Y:" msgstr "Feedrate X-Y:" -#: flatcamGUI/FlatCAMGUI.py:6183 flatcamTools/ToolSolderPaste.py:219 +#: flatcamGUI/FlatCAMGUI.py:6429 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:6190 flatcamTools/ToolSolderPaste.py:225 +#: flatcamGUI/FlatCAMGUI.py:6436 flatcamTools/ToolSolderPaste.py:225 msgid "Feedrate Z:" msgstr "Feedrate Z:" -#: flatcamGUI/FlatCAMGUI.py:6192 flatcamTools/ToolSolderPaste.py:227 +#: flatcamGUI/FlatCAMGUI.py:6438 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:6200 flatcamTools/ToolSolderPaste.py:234 +#: flatcamGUI/FlatCAMGUI.py:6446 flatcamTools/ToolSolderPaste.py:234 msgid "Feedrate Z Dispense:" msgstr "Feedrate Z disp.:" -#: flatcamGUI/FlatCAMGUI.py:6202 flatcamTools/ToolSolderPaste.py:236 +#: flatcamGUI/FlatCAMGUI.py:6448 flatcamTools/ToolSolderPaste.py:236 msgid "" "Feedrate (speed) while moving up vertically\n" " to Dispense position (on Z plane)." @@ -8477,11 +8699,11 @@ msgstr "" "Viteza de deplasare la mișcarea pe verticala spre\n" "poziţia de dispensare (in planul Z)." -#: flatcamGUI/FlatCAMGUI.py:6210 flatcamTools/ToolSolderPaste.py:243 +#: flatcamGUI/FlatCAMGUI.py:6456 flatcamTools/ToolSolderPaste.py:243 msgid "Spindle Speed FWD:" msgstr "Viteza motor inainte:" -#: flatcamGUI/FlatCAMGUI.py:6212 flatcamTools/ToolSolderPaste.py:245 +#: flatcamGUI/FlatCAMGUI.py:6458 flatcamTools/ToolSolderPaste.py:245 msgid "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." @@ -8489,19 +8711,19 @@ msgstr "" "Viteza motorului de dispensare in timp ce impinge pastă de fludor\n" "prin orificiul uneltei de dispensare." -#: flatcamGUI/FlatCAMGUI.py:6220 flatcamTools/ToolSolderPaste.py:252 +#: flatcamGUI/FlatCAMGUI.py:6466 flatcamTools/ToolSolderPaste.py:252 msgid "Dwell FWD:" msgstr "Pauza dupa disp.:" -#: flatcamGUI/FlatCAMGUI.py:6222 flatcamTools/ToolSolderPaste.py:254 +#: flatcamGUI/FlatCAMGUI.py:6468 flatcamTools/ToolSolderPaste.py:254 msgid "Pause after solder dispensing." msgstr "Pauza dupa dispensarea de pastă de fludor." -#: flatcamGUI/FlatCAMGUI.py:6229 flatcamTools/ToolSolderPaste.py:260 +#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:260 msgid "Spindle Speed REV:" msgstr "Viteza motor inapoi:" -#: flatcamGUI/FlatCAMGUI.py:6231 flatcamTools/ToolSolderPaste.py:262 +#: flatcamGUI/FlatCAMGUI.py:6477 flatcamTools/ToolSolderPaste.py:262 msgid "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." @@ -8509,11 +8731,11 @@ msgstr "" "Viteza motorului de dispensare in timp ce retrage pasta de fludor\n" "prin orificiul uneltei de dispensare." -#: flatcamGUI/FlatCAMGUI.py:6239 flatcamTools/ToolSolderPaste.py:269 +#: flatcamGUI/FlatCAMGUI.py:6485 flatcamTools/ToolSolderPaste.py:269 msgid "Dwell REV:" msgstr "Pauza dupa rev:" -#: flatcamGUI/FlatCAMGUI.py:6241 flatcamTools/ToolSolderPaste.py:271 +#: flatcamGUI/FlatCAMGUI.py:6487 flatcamTools/ToolSolderPaste.py:271 msgid "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." @@ -8521,23 +8743,23 @@ msgstr "" "Pauza dupa ce pasta de fludor a fost retrasă,\n" "necesară pt a ajunge la un echilibru al presiunilor." -#: flatcamGUI/FlatCAMGUI.py:6248 flatcamTools/ToolSolderPaste.py:277 +#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:277 msgid "PostProcessors:" msgstr "Postprocesoare:" -#: flatcamGUI/FlatCAMGUI.py:6250 flatcamTools/ToolSolderPaste.py:279 +#: flatcamGUI/FlatCAMGUI.py:6496 flatcamTools/ToolSolderPaste.py:279 msgid "Files that control the GCode generation." msgstr "Fişiere care controlează generarea codului G-Code." -#: flatcamGUI/FlatCAMGUI.py:6280 flatcamGUI/FlatCAMGUI.py:6286 +#: flatcamGUI/FlatCAMGUI.py:6526 flatcamGUI/FlatCAMGUI.py:6532 msgid "Idle." msgstr "Inactiv." -#: flatcamGUI/FlatCAMGUI.py:6310 +#: flatcamGUI/FlatCAMGUI.py:6556 msgid "Application started ..." msgstr "Aplicaţia a pornit ..." -#: flatcamGUI/FlatCAMGUI.py:6311 +#: flatcamGUI/FlatCAMGUI.py:6557 msgid "Hello!" msgstr "Bună!" @@ -8617,7 +8839,7 @@ msgid "Gerber Object" msgstr "Obiect Gerber" #: flatcamGUI/ObjectUI.py:182 flatcamGUI/ObjectUI.py:517 -#: flatcamGUI/ObjectUI.py:836 flatcamGUI/ObjectUI.py:1366 +#: flatcamGUI/ObjectUI.py:839 flatcamGUI/ObjectUI.py:1372 msgid "Name:" msgstr "Nume:" @@ -8791,8 +9013,8 @@ msgstr "" "va avea colțurile rotunjite." #: flatcamGUI/ObjectUI.py:450 flatcamGUI/ObjectUI.py:484 -#: flatcamTools/ToolCutOut.py:167 flatcamTools/ToolCutOut.py:187 -#: flatcamTools/ToolCutOut.py:238 flatcamTools/ToolSolderPaste.py:127 +#: flatcamTools/ToolCutOut.py:168 flatcamTools/ToolCutOut.py:188 +#: flatcamTools/ToolCutOut.py:239 flatcamTools/ToolSolderPaste.py:127 msgid "Generate Geo" msgstr "Crează Geo" @@ -8816,7 +9038,7 @@ msgstr "Obiect Excellon" msgid "Solid circles." msgstr "Cercuri solide." -#: flatcamGUI/ObjectUI.py:536 flatcamGUI/ObjectUI.py:855 +#: flatcamGUI/ObjectUI.py:536 flatcamGUI/ObjectUI.py:858 msgid "Tools Table" msgstr "Tabela Unelte" @@ -8843,7 +9065,7 @@ msgstr "" "la evenim. de schimb unealtă, va aparea sub forma T1, T2, etc\n" "in codul masina CNC." -#: flatcamGUI/ObjectUI.py:565 flatcamGUI/ObjectUI.py:901 +#: flatcamGUI/ObjectUI.py:565 flatcamGUI/ObjectUI.py:904 #: flatcamTools/ToolNonCopperClear.py:97 flatcamTools/ToolPaint.py:94 msgid "" "Tool Diameter. It's value (in current FlatCAM units) \n" @@ -8880,15 +9102,15 @@ msgstr "" "Crează un obiect CNCJob din\n" "acest obiect." -#: flatcamGUI/ObjectUI.py:615 flatcamGUI/ObjectUI.py:1115 +#: flatcamGUI/ObjectUI.py:615 flatcamGUI/ObjectUI.py:1118 msgid "Tool change" msgstr "Schimb unealtă" -#: flatcamGUI/ObjectUI.py:623 flatcamGUI/ObjectUI.py:1108 +#: flatcamGUI/ObjectUI.py:623 flatcamGUI/ObjectUI.py:1111 msgid "Tool change Z:" msgstr "Z schimb unealtă:" -#: flatcamGUI/ObjectUI.py:625 flatcamGUI/ObjectUI.py:1111 +#: flatcamGUI/ObjectUI.py:625 flatcamGUI/ObjectUI.py:1114 msgid "" "Z-axis position (height) for\n" "tool change." @@ -8922,7 +9144,7 @@ msgstr "" "(in unitati pe minut).\n" "Aceasta este mișcarea lineara G01." -#: flatcamGUI/ObjectUI.py:706 +#: flatcamGUI/ObjectUI.py:709 msgid "" "The json file that dictates\n" "gcode output." @@ -8930,7 +9152,7 @@ msgstr "" "Fişierul care dictează codul G-Code \n" "generat. In format JSON." -#: flatcamGUI/ObjectUI.py:738 +#: flatcamGUI/ObjectUI.py:741 msgid "" "Select from the Tools Table above\n" "the tools you want to include." @@ -8938,11 +9160,11 @@ msgstr "" "Selectează din Tabela de Unelte de mai sus,\n" "uneltele care trebuie incluse." -#: flatcamGUI/ObjectUI.py:745 +#: flatcamGUI/ObjectUI.py:748 msgid "Type: " msgstr "Tip:" -#: flatcamGUI/ObjectUI.py:747 +#: flatcamGUI/ObjectUI.py:750 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -8956,15 +9178,15 @@ msgstr "" "Când se alege >Sloturi< sau >Ambele<, sloturile\n" "vor fi convertite intr-o serie de găuriri." -#: flatcamGUI/ObjectUI.py:762 +#: flatcamGUI/ObjectUI.py:765 msgid "Create GCode" msgstr "Crează GCode" -#: flatcamGUI/ObjectUI.py:764 +#: flatcamGUI/ObjectUI.py:767 msgid "Generate the CNC Job." msgstr "Generează un obiect CNCJob." -#: flatcamGUI/ObjectUI.py:776 +#: flatcamGUI/ObjectUI.py:779 msgid "" "Select from the Tools Table above\n" " the hole dias that are to be milled." @@ -8972,15 +9194,15 @@ msgstr "" "Selecteaa din Tabela de Unelte de mai sus\n" "acele găuri care vor fi frezate." -#: flatcamGUI/ObjectUI.py:783 +#: flatcamGUI/ObjectUI.py:786 msgid "Drills Tool dia:" msgstr "Dia. Burghiu:" -#: flatcamGUI/ObjectUI.py:790 +#: flatcamGUI/ObjectUI.py:793 msgid "Mill Drills Geo" msgstr "Geo pt frezare găuri" -#: flatcamGUI/ObjectUI.py:792 +#: flatcamGUI/ObjectUI.py:795 msgid "" "Create the Geometry Object\n" "for milling DRILLS toolpaths." @@ -8988,15 +9210,15 @@ msgstr "" "Crează un obiect tip Geometrie pt.\n" "frezarea rutelor create din Găuri." -#: flatcamGUI/ObjectUI.py:799 +#: flatcamGUI/ObjectUI.py:802 msgid "Slots Tool dia:" msgstr "Dia freza:" -#: flatcamGUI/ObjectUI.py:806 +#: flatcamGUI/ObjectUI.py:809 msgid "Mill Slots Geo" msgstr "Geo pt. frezare sloturi" -#: flatcamGUI/ObjectUI.py:808 +#: flatcamGUI/ObjectUI.py:811 msgid "" "Create the Geometry Object\n" "for milling SLOTS toolpaths." @@ -9004,11 +9226,11 @@ msgstr "" "Crează un obiect tip Geometrie pt.\n" "frezarea rutelor create din Sloturi." -#: flatcamGUI/ObjectUI.py:826 +#: flatcamGUI/ObjectUI.py:829 msgid "Geometry Object" msgstr "Obiect Geometrie" -#: flatcamGUI/ObjectUI.py:857 +#: flatcamGUI/ObjectUI.py:860 msgid "" "Tools in this Geometry object used for cutting.\n" "The 'Offset' entry will set an offset for the cut.\n" @@ -9038,15 +9260,15 @@ msgstr "" "- V-Dia \n" "- V-unghi" -#: flatcamGUI/ObjectUI.py:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "Dia" msgstr "Dia" -#: flatcamGUI/ObjectUI.py:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "TT" msgstr "TU" -#: flatcamGUI/ObjectUI.py:895 +#: flatcamGUI/ObjectUI.py:898 msgid "" "This is the Tool Number.\n" "When ToolChange is checked, on toolchange event this value\n" @@ -9057,7 +9279,7 @@ msgstr "" "la evenim. de schimb unealtă, va aparea sub forma T1, T2, etc\n" "in codul masina CNC." -#: flatcamGUI/ObjectUI.py:906 +#: flatcamGUI/ObjectUI.py:909 msgid "" "The value for the Offset can be:\n" "- Path -> There is no offset, the tool cut will be done through the geometry " @@ -9073,7 +9295,7 @@ msgstr "" "'buzunar'\n" "- Afară-> Tăietura va urma geometria pe exterior" -#: flatcamGUI/ObjectUI.py:913 +#: flatcamGUI/ObjectUI.py:916 msgid "" "The (Operation) Type has only informative value. Usually the UI form " "values \n" @@ -9096,7 +9318,7 @@ msgstr "" "un\n" "vârf fin, ascuțit." -#: flatcamGUI/ObjectUI.py:922 +#: flatcamGUI/ObjectUI.py:925 msgid "" "The Tool Type (TT) can be:\n" "- Circular with 1 ... 4 teeth -> it is informative only. Being circular the " @@ -9126,7 +9348,7 @@ msgstr "" "Alegerea tipului V-Shape (forma in V) va selecta automat Tipul de Operaţie " "ca Izolare." -#: flatcamGUI/ObjectUI.py:933 +#: flatcamGUI/ObjectUI.py:936 msgid "" "Plot column. It is visible only for MultiGeo geometries, meaning geometries " "that holds the geometry\n" @@ -9146,11 +9368,11 @@ msgstr "" "se poate activa/dezactiva\n" "afișarea in canvas." -#: flatcamGUI/ObjectUI.py:946 +#: flatcamGUI/ObjectUI.py:949 msgid "Tool Offset:" msgstr "Ofset unealtă:" -#: flatcamGUI/ObjectUI.py:949 +#: flatcamGUI/ObjectUI.py:952 msgid "" "The value to offset the cut when \n" "the Offset type selected is 'Offset'.\n" @@ -9161,11 +9383,11 @@ msgstr "" "este >Ofset<. Aceasta valoare poate fi pozitivă pentru un ofset\n" "in exterior sau poate fi negativă pentru un ofset in interior." -#: flatcamGUI/ObjectUI.py:972 +#: flatcamGUI/ObjectUI.py:975 msgid "Tool Dia:" msgstr "Dia unealtă:" -#: flatcamGUI/ObjectUI.py:991 flatcamTools/ToolNonCopperClear.py:136 +#: flatcamGUI/ObjectUI.py:994 flatcamTools/ToolNonCopperClear.py:136 #: flatcamTools/ToolPaint.py:133 msgid "" "Add a new tool to the Tool Table\n" @@ -9174,7 +9396,7 @@ msgstr "" "Adaugă o noua unelata in Tabela de Unelte,\n" "cu diametrul specificat mai sus." -#: flatcamGUI/ObjectUI.py:999 +#: flatcamGUI/ObjectUI.py:1002 msgid "" "Copy a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." @@ -9182,7 +9404,7 @@ msgstr "" "Copiază o selecţie de unelte in Tabela de Unelte prin\n" "selectarea unei linii (sau mai multe) in Tabela de Unelte." -#: flatcamGUI/ObjectUI.py:1007 +#: flatcamGUI/ObjectUI.py:1010 msgid "" "Delete a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." @@ -9190,11 +9412,11 @@ msgstr "" "Șterge o selecţie de unelte in Tabela de Unelte prin\n" "selectarea unei linii (sau mai multe) in Tabela de Unelte." -#: flatcamGUI/ObjectUI.py:1023 +#: flatcamGUI/ObjectUI.py:1026 msgid "Tool Data" msgstr "Date Unealta" -#: flatcamGUI/ObjectUI.py:1026 +#: flatcamGUI/ObjectUI.py:1029 msgid "" "The data used for creating GCode.\n" "Each tool store it's own set of such data." @@ -9202,21 +9424,21 @@ msgstr "" "Datele folosite pentru crearea codului GCode.\n" "Fiecare unealtă stochează un subset de asemenea date." -#: flatcamGUI/ObjectUI.py:1036 +#: flatcamGUI/ObjectUI.py:1039 msgid "V-Tip Dia:" msgstr "V-dia:" -#: flatcamGUI/ObjectUI.py:1039 +#: flatcamGUI/ObjectUI.py:1042 msgid "The tip diameter for V-Shape Tool" msgstr "" "Diametrul la vârf al uneltei tip V-Shape.\n" "Forma in V." -#: flatcamGUI/ObjectUI.py:1047 +#: flatcamGUI/ObjectUI.py:1050 msgid "V-Tip Angle:" msgstr "V-unghi:" -#: flatcamGUI/ObjectUI.py:1050 +#: flatcamGUI/ObjectUI.py:1053 msgid "" "The tip angle for V-Shape Tool.\n" "In degree." @@ -9224,11 +9446,11 @@ msgstr "" "Unghiul la vârf pentru unealta tip V-Shape. \n" "In grade." -#: flatcamGUI/ObjectUI.py:1071 +#: flatcamGUI/ObjectUI.py:1074 msgid "Multi-Depth:" msgstr "Multi-Pas:" -#: flatcamGUI/ObjectUI.py:1074 +#: flatcamGUI/ObjectUI.py:1077 msgid "" "Use multiple passes to limit\n" "the cut depth in each pass. Will\n" @@ -9244,13 +9466,13 @@ msgstr "" "In dreapta, introdu adâncimea de tăiere\n" "pentru fiecare trecere (valoare pozitivă)." -#: flatcamGUI/ObjectUI.py:1087 +#: flatcamGUI/ObjectUI.py:1090 msgid "Depth of each pass (positive)." msgstr "" "Adâncimea pentru fiecare trecere.\n" "Valoare pozitivă, in unitatile curente." -#: flatcamGUI/ObjectUI.py:1118 +#: flatcamGUI/ObjectUI.py:1121 msgid "" "Include tool-change sequence\n" "in the Machine Code (Pause for tool change)." @@ -9259,7 +9481,7 @@ msgstr "" "codul masina CNC. O pauza pentru schimbul\n" "uneltei (M6)." -#: flatcamGUI/ObjectUI.py:1144 +#: flatcamGUI/ObjectUI.py:1147 msgid "" "This is the height (Z) at which the CNC\n" "will go as the last move." @@ -9267,11 +9489,11 @@ msgstr "" "Aceasta este înălţimea Z, la care CNC-ul \n" "va fi parcat la finalul de lucru." -#: flatcamGUI/ObjectUI.py:1165 +#: flatcamGUI/ObjectUI.py:1168 msgid "Feed Rate Z (Plunge):" msgstr "Feedrate Z (Plonjare):" -#: flatcamGUI/ObjectUI.py:1168 +#: flatcamGUI/ObjectUI.py:1171 msgid "" "Cutting speed in the Z\n" "plane in units per minute" @@ -9279,11 +9501,11 @@ msgstr "" "Viteza de tăiere in planul Z.\n" "In unitati pe minut." -#: flatcamGUI/ObjectUI.py:1177 +#: flatcamGUI/ObjectUI.py:1180 msgid "Feed Rate Rapids:" msgstr "Feedrate rapizi:" -#: flatcamGUI/ObjectUI.py:1180 +#: flatcamGUI/ObjectUI.py:1183 msgid "" "Cutting speed in the XY\n" "plane in units per minute\n" @@ -9297,11 +9519,11 @@ msgstr "" "printerul 3D Marlin, implicit când se foloseşte fişierul\n" "postprocesor: Marlin. Ignora aceasta parametru in rest." -#: flatcamGUI/ObjectUI.py:1193 +#: flatcamGUI/ObjectUI.py:1199 msgid "Cut over 1st pt" msgstr "Re-tăiere 1-ul pt." -#: flatcamGUI/ObjectUI.py:1208 +#: flatcamGUI/ObjectUI.py:1214 msgid "" "Speed of the spindle in RPM (optional).\n" "If LASER postprocessor is used,\n" @@ -9311,11 +9533,11 @@ msgstr "" "Daca postprocesorul Laser este folosit,\n" "valoarea să este puterea laserului." -#: flatcamGUI/ObjectUI.py:1237 +#: flatcamGUI/ObjectUI.py:1243 msgid "PostProcessor:" msgstr "Postprocesor:" -#: flatcamGUI/ObjectUI.py:1240 +#: flatcamGUI/ObjectUI.py:1246 msgid "" "The Postprocessor file that dictates\n" "the Machine Code (like GCode, RML, HPGL) output." @@ -9324,7 +9546,7 @@ msgstr "" "codului masina CNC (GCode, RML, HPGL) care \n" "mai apoi este salvat." -#: flatcamGUI/ObjectUI.py:1278 +#: flatcamGUI/ObjectUI.py:1284 msgid "" "Add at least one tool in the tool-table.\n" "Click the header to select all, or Ctrl + LMB\n" @@ -9334,37 +9556,37 @@ msgstr "" "Click pe header pentru selectarea tuturora asu CTRL + LMB click\n" "pentru o selecţie personalizata de unelte." -#: flatcamGUI/ObjectUI.py:1285 +#: flatcamGUI/ObjectUI.py:1291 msgid "Generate" msgstr "Generează" -#: flatcamGUI/ObjectUI.py:1288 +#: flatcamGUI/ObjectUI.py:1294 msgid "Generate the CNC Job object." msgstr "Generează un obiect CNCJob." -#: flatcamGUI/ObjectUI.py:1296 +#: flatcamGUI/ObjectUI.py:1302 msgid "Paint Area:" msgstr "Unealta Paint" -#: flatcamGUI/ObjectUI.py:1311 +#: flatcamGUI/ObjectUI.py:1317 msgid "Launch Paint Tool in Tools Tab." msgstr "" "Lansează unealta FlatCAM numita Paint și\n" "o instalează in Tab-ul Unealta." -#: flatcamGUI/ObjectUI.py:1328 +#: flatcamGUI/ObjectUI.py:1334 msgid "CNC Job Object" msgstr "Obiect CNCJob" -#: flatcamGUI/ObjectUI.py:1347 +#: flatcamGUI/ObjectUI.py:1353 msgid "Plot kind:" msgstr "Afișare:" -#: flatcamGUI/ObjectUI.py:1372 +#: flatcamGUI/ObjectUI.py:1378 msgid "Travelled dist.:" msgstr "Distanta:" -#: flatcamGUI/ObjectUI.py:1375 flatcamGUI/ObjectUI.py:1382 +#: flatcamGUI/ObjectUI.py:1381 flatcamGUI/ObjectUI.py:1388 msgid "" "This is the total travelled distance on X-Y plane.\n" "In current units." @@ -9372,11 +9594,11 @@ msgstr "" "Aceasta este distanţa totala parcursa in planul X-Y.\n" "In unitatile curente." -#: flatcamGUI/ObjectUI.py:1410 +#: flatcamGUI/ObjectUI.py:1416 msgid "CNC Tools Table" msgstr "Tabela Unelte CNC" -#: flatcamGUI/ObjectUI.py:1413 +#: flatcamGUI/ObjectUI.py:1419 msgid "" "Tools in this CNCJob object used for cutting.\n" "The tool diameter is used for plotting on canvas.\n" @@ -9397,27 +9619,27 @@ msgstr "" "Shape\n" "(cu forma in V)." -#: flatcamGUI/ObjectUI.py:1447 +#: flatcamGUI/ObjectUI.py:1453 msgid "P" msgstr "P" -#: flatcamGUI/ObjectUI.py:1453 +#: flatcamGUI/ObjectUI.py:1459 msgid "Update Plot" msgstr "Actualiz. afișare" -#: flatcamGUI/ObjectUI.py:1455 +#: flatcamGUI/ObjectUI.py:1461 msgid "Update the plot." msgstr "Actualizează afișarea obiectelor." -#: flatcamGUI/ObjectUI.py:1462 +#: flatcamGUI/ObjectUI.py:1468 msgid "Export CNC Code:" msgstr "Exporta codul masina CNC:" -#: flatcamGUI/ObjectUI.py:1470 +#: flatcamGUI/ObjectUI.py:1476 msgid "Prepend to CNC Code:" msgstr "Adaugă la inceput in codul G-Code:" -#: flatcamGUI/ObjectUI.py:1473 +#: flatcamGUI/ObjectUI.py:1479 msgid "" "Type here any G-Code commands you would\n" "like to add to the beginning of the generated file." @@ -9425,11 +9647,11 @@ msgstr "" "Plasează aici acele comenzi GCode care se dorește să fie\n" "adaugate la inceputul codului masina CNC." -#: flatcamGUI/ObjectUI.py:1483 +#: flatcamGUI/ObjectUI.py:1489 msgid "Append to CNC Code" msgstr "Adaugă la sfârşit in codul G-Code:" -#: flatcamGUI/ObjectUI.py:1507 +#: flatcamGUI/ObjectUI.py:1513 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -9451,19 +9673,19 @@ msgstr "" "'toolchange_custom'\n" "in numele sau." -#: flatcamGUI/ObjectUI.py:1555 +#: flatcamGUI/ObjectUI.py:1561 msgid "z_cut = depth where to cut" msgstr "z_cut = adâncimea de tăiere" -#: flatcamGUI/ObjectUI.py:1556 +#: flatcamGUI/ObjectUI.py:1562 msgid "z_move = height where to travel" msgstr "z_move = Înălţimea deplasare" -#: flatcamGUI/ObjectUI.py:1574 +#: flatcamGUI/ObjectUI.py:1580 msgid "View CNC Code" msgstr "Vizualiz. codul CNC" -#: flatcamGUI/ObjectUI.py:1577 +#: flatcamGUI/ObjectUI.py:1583 msgid "" "Opens TAB to view/modify/print G-Code\n" "file." @@ -9471,11 +9693,11 @@ msgstr "" "Deschide un nou tab pentru a vizualiza, modifica\n" "sau tipari codul G-Code." -#: flatcamGUI/ObjectUI.py:1583 +#: flatcamGUI/ObjectUI.py:1589 msgid "Save CNC Code" msgstr "Salvează codul CNC" -#: flatcamGUI/ObjectUI.py:1586 +#: flatcamGUI/ObjectUI.py:1592 msgid "" "Opens dialog to save G-Code\n" "file." @@ -9652,17 +9874,26 @@ msgstr "" "in a mentine ataşat PCB-ul la materialul de unde \n" "este decupat." -#: flatcamTools/ToolCutOut.py:122 +#: flatcamTools/ToolCutOut.py:117 +msgid "" +"Create a convex shape surrounding the entire PCB.\n" +"Used only if the source object type is Gerber." +msgstr "" +"Generează un obiect tip Geometrie care va inconjura\n" +"tot PCB-ul. Forma sa este convexa.\n" +"Se foloseste doar daca obiectul sursă este de tip Gerber." + +#: flatcamTools/ToolCutOut.py:123 msgid "A. Automatic Bridge Gaps" msgstr "A. Punţi realiz. automat" -#: flatcamTools/ToolCutOut.py:124 +#: flatcamTools/ToolCutOut.py:125 msgid "This section handle creation of automatic bridge gaps." msgstr "" "Aceasta sectiune va permite crearea in mod automat\n" "a pana la 8 punţi." -#: flatcamTools/ToolCutOut.py:135 +#: flatcamTools/ToolCutOut.py:136 msgid "" "Number of gaps used for the Automatic cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -9684,11 +9915,11 @@ msgstr "" "- 2tb = 2* sus - 2* jos\n" "- 8 = 2* stânga - 2* dreapta - 2* sus - 2* jos" -#: flatcamTools/ToolCutOut.py:158 +#: flatcamTools/ToolCutOut.py:159 msgid "FreeForm:" msgstr "Forma libera:" -#: flatcamTools/ToolCutOut.py:160 +#: flatcamTools/ToolCutOut.py:161 msgid "" "The cutout shape can be of ny shape.\n" "Useful when the PCB has a non-rectangular shape." @@ -9696,7 +9927,7 @@ msgstr "" "Decupajul poate avea orice forma.\n" "Folositor când PCB-ul are o forma neregulata." -#: flatcamTools/ToolCutOut.py:169 +#: flatcamTools/ToolCutOut.py:170 msgid "" "Cutout the selected object.\n" "The cutout shape can be of any shape.\n" @@ -9706,11 +9937,11 @@ msgstr "" "Forma decupajului poate avea orice forma.\n" "Folositor când PCB-ul are o forma neregulata." -#: flatcamTools/ToolCutOut.py:178 +#: flatcamTools/ToolCutOut.py:179 msgid "Rectangular:" msgstr "Patrulater:" -#: flatcamTools/ToolCutOut.py:180 +#: flatcamTools/ToolCutOut.py:181 msgid "" "The resulting cutout shape is\n" "always a rectangle shape and it will be\n" @@ -9720,7 +9951,7 @@ msgstr "" "patratica și va fi forma înconjurătoare a\n" "obiectului FlatCAM decupat." -#: flatcamTools/ToolCutOut.py:189 +#: flatcamTools/ToolCutOut.py:190 msgid "" "Cutout the selected object.\n" "The resulting cutout shape is\n" @@ -9730,11 +9961,11 @@ msgstr "" "Decupează obiectul selectat.\n" "Forma decupajului este tot timpul dreptunghiulara.." -#: flatcamTools/ToolCutOut.py:197 +#: flatcamTools/ToolCutOut.py:198 msgid "B. Manual Bridge Gaps" msgstr "B. Punţi realiz. manual" -#: flatcamTools/ToolCutOut.py:199 +#: flatcamTools/ToolCutOut.py:200 msgid "" "This section handle creation of manual bridge gaps.\n" "This is done by mouse clicking on the perimeter of the\n" @@ -9746,19 +9977,19 @@ msgstr "" "apasarea tastei CTRL, operatia se va repeta automat pana când\n" "se va apasa tasta 'Escape'." -#: flatcamTools/ToolCutOut.py:215 +#: flatcamTools/ToolCutOut.py:216 msgid "Geo Obj:" msgstr "Obiect Geo:" -#: flatcamTools/ToolCutOut.py:217 +#: flatcamTools/ToolCutOut.py:218 msgid "Geometry object used to create the manual cutout." msgstr "Obiect tip Geometrie folosit pentru crearea decupajului manual." -#: flatcamTools/ToolCutOut.py:228 +#: flatcamTools/ToolCutOut.py:229 msgid "Manual Geo:" msgstr "Geo manual:" -#: flatcamTools/ToolCutOut.py:230 flatcamTools/ToolCutOut.py:240 +#: flatcamTools/ToolCutOut.py:231 flatcamTools/ToolCutOut.py:241 msgid "" "If the object to be cutout is a Gerber\n" "first create a Geometry that surrounds it,\n" @@ -9771,11 +10002,11 @@ msgstr "" "Selectează obiectul sursa Gerber in combobox-ul de mai sus,\n" "numit >Obiect<." -#: flatcamTools/ToolCutOut.py:250 +#: flatcamTools/ToolCutOut.py:251 msgid "Manual Add Bridge Gaps:" msgstr "Adaugă punţi manual:" -#: flatcamTools/ToolCutOut.py:252 +#: flatcamTools/ToolCutOut.py:253 msgid "" "Use the left mouse button (LMB) click\n" "to create a bridge gap to separate the PCB from\n" @@ -9784,11 +10015,11 @@ msgstr "" "Folosind click LMB se crează punţi de sustinere a PCB-ului\n" "de materialul din care este decupat." -#: flatcamTools/ToolCutOut.py:259 +#: flatcamTools/ToolCutOut.py:260 msgid "Generate Gap" msgstr "Generează Punte" -#: flatcamTools/ToolCutOut.py:261 +#: flatcamTools/ToolCutOut.py:262 msgid "" "Use the left mouse button (LMB) click\n" "to create a bridge gap to separate the PCB from\n" @@ -9802,16 +10033,16 @@ msgstr "" "apasarea tastei CTRL, operatia se va repeta automat pana când\n" "se va apasa tasta 'Escape'." -#: flatcamTools/ToolCutOut.py:338 flatcamTools/ToolCutOut.py:483 +#: flatcamTools/ToolCutOut.py:341 flatcamTools/ToolCutOut.py:499 #: flatcamTools/ToolNonCopperClear.py:666 flatcamTools/ToolPaint.py:764 -#: flatcamTools/ToolPanelize.py:293 flatcamTools/ToolPanelize.py:307 -#: flatcamTools/ToolSub.py:234 flatcamTools/ToolSub.py:246 -#: flatcamTools/ToolSub.py:364 flatcamTools/ToolSub.py:376 +#: flatcamTools/ToolPanelize.py:352 flatcamTools/ToolPanelize.py:366 +#: flatcamTools/ToolSub.py:237 flatcamTools/ToolSub.py:249 +#: flatcamTools/ToolSub.py:428 flatcamTools/ToolSub.py:440 #, python-format msgid "[ERROR_NOTCL] Could not retrieve object: %s" msgstr "[ERROR_NOTCL] Nu s-a putut incărca obiectul: %s" -#: flatcamTools/ToolCutOut.py:342 +#: flatcamTools/ToolCutOut.py:345 msgid "" "[ERROR_NOTCL] There is no object selected for Cutout.\n" "Select one and try again." @@ -9819,7 +10050,7 @@ msgstr "" "[ERROR_NOTCL] Nu este nici-un obiect selectat pentru decupaj.\n" "Selectează unul și încearcă din nou." -#: flatcamTools/ToolCutOut.py:358 +#: flatcamTools/ToolCutOut.py:360 msgid "" "[WARNING_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." @@ -9827,29 +10058,29 @@ msgstr "" "[WARNING_NOTCL] Diametrul uneltei este zero. Schimbă-l intr-o val. pozitivă " "Reala." -#: flatcamTools/ToolCutOut.py:368 flatcamTools/ToolCutOut.py:511 -#: flatcamTools/ToolCutOut.py:736 +#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:527 +#: flatcamTools/ToolCutOut.py:771 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:379 flatcamTools/ToolCutOut.py:522 -#: flatcamTools/ToolCutOut.py:631 +#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:538 +#: flatcamTools/ToolCutOut.py:666 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:386 flatcamTools/ToolCutOut.py:529 +#: flatcamTools/ToolCutOut.py:388 flatcamTools/ToolCutOut.py:545 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:390 flatcamTools/ToolCutOut.py:533 +#: flatcamTools/ToolCutOut.py:392 flatcamTools/ToolCutOut.py:549 msgid "" "[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 " "or 8. Fill in a correct value and retry. " @@ -9857,7 +10088,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:395 flatcamTools/ToolCutOut.py:538 +#: flatcamTools/ToolCutOut.py:397 flatcamTools/ToolCutOut.py:554 msgid "" "[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n" "Optionally, this Multi-geo Geometry can be converted to Single-geo " @@ -9869,18 +10100,18 @@ msgstr "" "Se poate insa converti MultiGeo in tip SingleGeo și apoi se poate efectua " "decupajul." -#: flatcamTools/ToolCutOut.py:467 flatcamTools/ToolCutOut.py:601 +#: flatcamTools/ToolCutOut.py:483 flatcamTools/ToolCutOut.py:636 msgid "[success] Any form CutOut operation finished." msgstr "[success] Operatia de decupaj cu forma libera s-a terminat." -#: flatcamTools/ToolCutOut.py:487 flatcamTools/ToolPaint.py:768 -#: flatcamTools/ToolPanelize.py:299 +#: flatcamTools/ToolCutOut.py:503 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:501 flatcamTools/ToolCutOut.py:621 -#: flatcamTools/ToolCutOut.py:726 +#: flatcamTools/ToolCutOut.py:517 flatcamTools/ToolCutOut.py:656 +#: flatcamTools/ToolCutOut.py:761 msgid "" "[ERROR_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." @@ -9888,52 +10119,52 @@ msgstr "" "[ERROR_NOTCL] Diametrul uneltei este zero. Schimbă intr-o valoare pozitivă " "Reala." -#: flatcamTools/ToolCutOut.py:606 +#: flatcamTools/ToolCutOut.py:641 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:647 +#: flatcamTools/ToolCutOut.py:682 msgid "Making manual bridge gap..." msgstr "Se generează o punte separatoare in mod manual..." -#: flatcamTools/ToolCutOut.py:670 +#: flatcamTools/ToolCutOut.py:705 #, 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:674 +#: flatcamTools/ToolCutOut.py:709 #, 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:684 +#: flatcamTools/ToolCutOut.py:719 msgid "[success] Added manual Bridge Gap." msgstr "[success] O punte a fost adăugată in mod manual." -#: flatcamTools/ToolCutOut.py:701 +#: flatcamTools/ToolCutOut.py:736 #, 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:705 +#: flatcamTools/ToolCutOut.py:740 msgid "" "[ERROR_NOTCL] There is no Gerber object selected for Cutout.\n" "Select one and try again." msgstr "" "[ERROR_NOTCL] Nu exista obiect selectat pt operatia de decupare.\n" -"Selecteaza unul si incearca din nou." +"Selecteaza unul si incearcă din nou." -#: flatcamTools/ToolCutOut.py:710 +#: flatcamTools/ToolCutOut.py:745 msgid "" "[ERROR_NOTCL] The selected object has to be of Gerber type.\n" "Select a Gerber file and try again." msgstr "" "[ERROR_NOTCL] Obiectul selectat trebuie să fie de tip Gerber.\n" -"Selecteaza un obiect Gerber si incearca din nou." +"Selecteaza un obiect Gerber si incearcă din nou." #: flatcamTools/ToolDblSided.py:18 msgid "2-Sided PCB" @@ -10212,7 +10443,7 @@ msgstr "Obiect Film:" msgid "Object for which to create the film." msgstr "Obiectul pt care se crează filmul." -#: flatcamTools/ToolFilm.py:89 flatcamTools/ToolPanelize.py:89 +#: flatcamTools/ToolFilm.py:89 flatcamTools/ToolPanelize.py:111 msgid "Box Type:" msgstr "Tip container:" @@ -10228,7 +10459,7 @@ msgstr "" "Selectia facuta aici controlează ce obiecte vor fi \n" "gasite in combobox-ul >Container<." -#: flatcamTools/ToolFilm.py:104 flatcamTools/ToolPanelize.py:104 +#: flatcamTools/ToolFilm.py:104 flatcamTools/ToolPanelize.py:126 msgid "Box Object:" msgstr "Container:" @@ -10727,16 +10958,16 @@ msgstr "[WARNING_NOTCL] Incărcarea fişier PDF anulata." msgid "Parsing PDF file ..." msgstr "Se parsează fisierul PDF ..." -#: flatcamTools/ToolPDF.py:264 flatcamTools/ToolPDF.py:300 +#: flatcamTools/ToolPDF.py:265 flatcamTools/ToolPDF.py:338 #, python-format msgid "Rendering PDF layer #%d ..." msgstr "Se generează layer-ul PDF #%d ..." -#: flatcamTools/ToolPDF.py:268 flatcamTools/ToolPDF.py:304 +#: flatcamTools/ToolPDF.py:269 flatcamTools/ToolPDF.py:342 msgid "[ERROR_NOTCL] Open PDF file failed." msgstr "[ERROR_NOTCL] Deschiderea unui fişier PDF a eșuat." -#: flatcamTools/ToolPDF.py:273 flatcamTools/ToolPDF.py:309 +#: flatcamTools/ToolPDF.py:274 flatcamTools/ToolPDF.py:347 #, python-format msgid "[success] Rendered: %s" msgstr "[success] Analizat: %s" @@ -10947,7 +11178,33 @@ msgstr "" "Acesta va fi multiplicat intr-o arie\n" "de linii și coloane." -#: flatcamTools/ToolPanelize.py:91 +#: flatcamTools/ToolPanelize.py:86 +msgid "Penelization Reference:" +msgstr "Referintă panelizare:" + +#: flatcamTools/ToolPanelize.py:88 +msgid "" +"Choose the reference for panelization:\n" +"- Object = the bounding box of a different object\n" +"- Bounding Box = the bounding box of the object to be panelized\n" +"\n" +"The reference is useful when doing panelization for more than one\n" +"object. The spacings (really offsets) will be applied in reference\n" +"to this reference object therefore maintaining the panelized\n" +"objects in sync." +msgstr "" +"Alege referinta pt panelizare:\n" +"- Obiect = forma inconjurătoare a unui alt obiect\n" +"- Forma inconjurătoare = forma inconjurătoare a obiectului care tb " +"panelizat\n" +"\n" +"Referinta este utila cand se face panelizarea pt mai mult de un obiect. " +"Spatierile\n" +"(mai degraba ofsetări) vor fi aplicate avand ca referintă acest obiect de " +"referintă,\n" +"prin urmare mentinand obiectele paenlizate in sincronizare unul cu altul." + +#: flatcamTools/ToolPanelize.py:113 msgid "" "Specify the type of object to be used as an container for\n" "panelization. It can be: Gerber or Geometry type.\n" @@ -10959,7 +11216,7 @@ msgstr "" "Selectia facuta aici va dicta tipul de obiecte care se vor\n" "regasi in combobox-ul >Container<." -#: flatcamTools/ToolPanelize.py:106 +#: flatcamTools/ToolPanelize.py:128 msgid "" "The actual object that is used a container for the\n" " selected object that is to be panelized." @@ -10967,7 +11224,31 @@ msgstr "" "Obiectul care este folosit ca și container \n" "pt obiectul care va fi panelizat." -#: flatcamTools/ToolPanelize.py:150 +#: flatcamTools/ToolPanelize.py:134 +msgid "Panel Data:" +msgstr "Date panel" + +#: flatcamTools/ToolPanelize.py:136 +msgid "" +"This informations will shape the resulting panel.\n" +"The number of rows and columns will set how many\n" +"duplicates of the original geometry will be generated.\n" +"\n" +"The spacings will set the distance between any two\n" +"elements of the panel array." +msgstr "" +"Aceste informatii vor determina forma panelului rezultant.\n" +"Numărul de linii si de coloane va determina cat de multe \n" +"copii ale geometriei obiectului original vor fi create.\n" +"\n" +"Spatierile sunt de fapt distante intre oricare două elemente ale \n" +"ariei panelului." + +#: flatcamTools/ToolPanelize.py:183 +msgid "Panel Type:" +msgstr "Tip panel:" + +#: flatcamTools/ToolPanelize.py:185 msgid "" "Choose the type of object for the panel object:\n" "- Geometry\n" @@ -10977,15 +11258,15 @@ msgstr "" "- Geometrie\n" "-Gerber" -#: flatcamTools/ToolPanelize.py:158 +#: flatcamTools/ToolPanelize.py:193 msgid "Constrain panel within:" msgstr "Mentine panelul in:" -#: flatcamTools/ToolPanelize.py:192 +#: flatcamTools/ToolPanelize.py:227 msgid "Panelize Object" msgstr "Panelizează obiectul" -#: flatcamTools/ToolPanelize.py:194 +#: flatcamTools/ToolPanelize.py:229 msgid "" "Panelize the specified object around the specified box.\n" "In other words it creates multiple copies of the source object,\n" @@ -10995,12 +11276,14 @@ msgstr "" "Cu alte cuvinte se crează copii multiple ale obiectului sursa,\n" "aranjate intr-o arie 2D de linii și coloane." -#: flatcamTools/ToolPanelize.py:311 +#: flatcamTools/ToolPanelize.py:370 #, python-format -msgid "[WARNING]No object Box. Using instead %s" -msgstr "[WARNING] Nu exista container. Se foloseşte in schimb %s" +msgid "[WARNING_NOTCL]No object Box. Using instead %s" +msgstr "" +"[WARNING_NOTCL] Nu este disponibil nici-un container Box pentru obiect. Se " +"foloseşte %s" -#: flatcamTools/ToolPanelize.py:392 +#: flatcamTools/ToolPanelize.py:453 msgid "" "[ERROR_NOTCL] Columns or Rows are zero value. Change them to a positive " "integer." @@ -11008,15 +11291,15 @@ msgstr "" "[ERROR_NOTCL] Val. coloane sau linii este zero. Schimbă aceasta val. intr-un " "număr pozitiv intreg." -#: flatcamTools/ToolPanelize.py:417 flatcamTools/ToolPanelize.py:526 +#: flatcamTools/ToolPanelize.py:478 flatcamTools/ToolPanelize.py:635 msgid "Generating panel ... Please wait." msgstr "Se generează panelul ... Va rugam asteptati!" -#: flatcamTools/ToolPanelize.py:520 +#: flatcamTools/ToolPanelize.py:628 msgid "[success] Panel done..." msgstr "[success] Panel executat ..." -#: flatcamTools/ToolPanelize.py:523 +#: flatcamTools/ToolPanelize.py:631 #, python-brace-format msgid "" "[WARNING] Too big for the constrain area. Final panel has {col} columns and " @@ -11025,7 +11308,7 @@ msgstr "" "[WARNING] Prea mare pt aria desemnata. Panelul final are {col} coloane și " "{row} linii" -#: flatcamTools/ToolPanelize.py:531 +#: flatcamTools/ToolPanelize.py:640 msgid "[success] Panel created successfully." msgstr "[success] Panel creat cu succes." @@ -11501,7 +11784,7 @@ msgstr "[ERROR] ToolSolderPaste.on_view_gcode() -->%s" msgid "Export GCode ..." msgstr "Exporta GCode ..." -#: flatcamTools/ToolSolderPaste.py:1394 +#: flatcamTools/ToolSolderPaste.py:1396 #, python-format msgid "[success] Solder paste dispenser GCode file saved to: %s" msgstr "" @@ -11583,48 +11866,48 @@ msgstr "" "Va indepărta aria ocupată de obiectul Geometrie \n" "substractor din obiectul Geometrie tintă." -#: flatcamTools/ToolSub.py:212 +#: flatcamTools/ToolSub.py:215 msgid "Sub Tool" msgstr "Unealta Scădere" -#: flatcamTools/ToolSub.py:227 flatcamTools/ToolSub.py:357 +#: flatcamTools/ToolSub.py:230 flatcamTools/ToolSub.py:421 msgid "[ERROR_NOTCL] No Target object loaded." msgstr "[ERROR_NOTCL] Nu este incărcat obiect Tintă." -#: flatcamTools/ToolSub.py:239 flatcamTools/ToolSub.py:369 +#: flatcamTools/ToolSub.py:242 flatcamTools/ToolSub.py:433 msgid "[ERROR_NOTCL] No Substractor object loaded." msgstr "[ERROR_NOTCL] Nu este incărcat obiect Substractor (scăzător)." -#: flatcamTools/ToolSub.py:277 +#: flatcamTools/ToolSub.py:294 #, python-format msgid "Parsing aperture %s geometry ..." msgstr "Se analizează geo pt. apertura: %s..." -#: flatcamTools/ToolSub.py:331 flatcamTools/ToolSub.py:475 +#: flatcamTools/ToolSub.py:396 flatcamTools/ToolSub.py:539 msgid "Generating new object ..." msgstr "Se generează un obiect nou ..." -#: flatcamTools/ToolSub.py:334 flatcamTools/ToolSub.py:478 +#: flatcamTools/ToolSub.py:399 flatcamTools/ToolSub.py:542 msgid "[ERROR_NOTCL] Generating new object failed." -msgstr "[ERROR_NOTCL] Generarea unui nou obiect a esuat." +msgstr "[ERROR_NOTCL] Generarea unui nou obiect a eșuat." -#: flatcamTools/ToolSub.py:339 flatcamTools/ToolSub.py:483 +#: flatcamTools/ToolSub.py:403 flatcamTools/ToolSub.py:547 #, python-format msgid "[success] Created: %s" msgstr "[success] Creat: %s" -#: flatcamTools/ToolSub.py:380 +#: flatcamTools/ToolSub.py:444 msgid "" "[ERROR_NOTCL] Currently, the Substractor geometry cannot be of type Multigeo." msgstr "" "[ERROR_NOTCL] Momentan, obiectul substractor Geometrie nu poate fi de tip " "Multigeo." -#: flatcamTools/ToolSub.py:425 +#: flatcamTools/ToolSub.py:489 msgid "Parsing solid_geometry ..." msgstr "Analizează geometria solidă..." -#: flatcamTools/ToolSub.py:427 +#: flatcamTools/ToolSub.py:491 #, python-format msgid "Parsing tool %s geometry ..." msgstr "Analizează geo a uneltei %s ..." @@ -11701,51 +11984,87 @@ msgstr "" msgid "CNCJob objects can't be rotated." msgstr "Obiectele tip CNCJob nu pot fi Rotite." -#: flatcamTools/ToolTransform.py:674 +#: flatcamTools/ToolTransform.py:673 msgid "[success] Rotate done ..." msgstr "[success] Rotaţie executată ..." -#: flatcamTools/ToolTransform.py:689 +#: flatcamTools/ToolTransform.py:688 msgid "[WARNING_NOTCL] No object selected. Please Select an object to flip!" msgstr "" "[WARNING_NOTCL] Nici-un obiect nu este selectat. Selectează un obiect pentru " "a fi Oglindit!" -#: flatcamTools/ToolTransform.py:724 +#: flatcamTools/ToolTransform.py:723 msgid "CNCJob objects can't be mirrored/flipped." msgstr "Obiectele tip CNCJob nu pot fi Oglindite." -#: flatcamTools/ToolTransform.py:759 +#: flatcamTools/ToolTransform.py:757 msgid "" "[WARNING_NOTCL] No object selected. Please Select an object to shear/skew!" msgstr "" "[WARNING_NOTCL] Nici-un obiect nu este selectat. Selectează un obiect pentru " "a fi Deformat!" -#: flatcamTools/ToolTransform.py:781 +#: flatcamTools/ToolTransform.py:779 msgid "CNCJob objects can't be skewed." msgstr "Obiectele tip CNCJob nu pot fi deformate." -#: flatcamTools/ToolTransform.py:808 +#: flatcamTools/ToolTransform.py:806 msgid "[WARNING_NOTCL] No object selected. Please Select an object to scale!" msgstr "" "[WARNING_NOTCL] Nici-un obiect nu este selectat. Selectează un obiect pentru " "a fi Scalat!" -#: flatcamTools/ToolTransform.py:841 +#: flatcamTools/ToolTransform.py:839 msgid "CNCJob objects can't be scaled." msgstr "Obiectele tip CNCJob nu pot fi scalate." -#: flatcamTools/ToolTransform.py:861 +#: flatcamTools/ToolTransform.py:858 msgid "[WARNING_NOTCL] No object selected. Please Select an object to offset!" msgstr "" "[WARNING_NOTCL] Nici-un obiect nu este selectat. Selectează un obiect pentru " "a fi Deplasat!" -#: flatcamTools/ToolTransform.py:882 +#: flatcamTools/ToolTransform.py:867 msgid "CNCJob objects can't be offseted." msgstr "Obiectele tip CNCJob nu pot fi deplasate." +#~ msgid "[WARNING_NOTCL] Move cancelled. No shape selected." +#~ msgstr "[WARNING_NOTCL] Mutare anulata. Nici-o forma nu este selectată." + +#~ msgid "Click on the Destination point..." +#~ msgstr "Click pe punctul de Destinaţie ..." + +#~ msgid "Copy as &Geom" +#~ msgstr "Copiază ca &Geo" + +#~ msgid "Ap. Scale Factor:" +#~ msgstr "Factor scalare ap.:" + +#~ msgid "" +#~ "Change the size of the selected apertures.\n" +#~ "Factor by which to multiply\n" +#~ "geometric features of this object." +#~ msgstr "" +#~ "Schimbă dimensiunea aperturilor selectate.\n" +#~ "Factor cu care se multiplica geometriile\n" +#~ "acestui obiect." + +#~ msgid "Ap. Buffer Factor:" +#~ msgstr "Factor bufer ap.:" + +#~ msgid "" +#~ "Change the size of the selected apertures.\n" +#~ "Factor by which to expand/shrink\n" +#~ "geometric features of this object." +#~ msgstr "" +#~ "Schimbă dimensiunea aperturilor selectate.\n" +#~ "Valoare cu care se mareste/micsorează\n" +#~ "geometriile acestui obiect." + +#~ msgid "[WARNING]No object Box. Using instead %s" +#~ msgstr "[WARNING] Nu exista container. Se foloseşte in schimb %s" + #~ msgid "Path" #~ msgstr "Pe cale" diff --git a/locale_template/strings.pot b/locale_template/strings.pot index 0feb8f97..23773da5 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-01 16:03+0300\n" +"POT-Creation-Date: 2019-05-20 01:44+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:865 +#: FlatCAMApp.py:898 msgid "[ERROR] Could not find the Language files. The App strings are missing." msgstr "" -#: FlatCAMApp.py:1921 ObjectCollection.py:80 flatcamTools/ToolImage.py:213 +#: FlatCAMApp.py:1962 ObjectCollection.py:80 flatcamTools/ToolImage.py:213 #: flatcamTools/ToolPcbWizard.py:299 flatcamTools/ToolPcbWizard.py:322 msgid "Open cancelled." msgstr "" -#: FlatCAMApp.py:1935 +#: FlatCAMApp.py:1976 msgid "Open Config file failed." msgstr "" -#: FlatCAMApp.py:1949 +#: FlatCAMApp.py:1990 msgid "Open Script file failed." msgstr "" -#: FlatCAMApp.py:2140 +#: FlatCAMApp.py:2181 msgid "[WARNING_NOTCL] Select a Geometry, Gerber or Excellon Object to edit." msgstr "" -#: FlatCAMApp.py:2150 +#: FlatCAMApp.py:2191 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:2188 +#: FlatCAMApp.py:2235 msgid "[WARNING_NOTCL] Editor is activated ..." msgstr "" -#: FlatCAMApp.py:2207 +#: FlatCAMApp.py:2254 msgid "Do you want to save the edited object?" msgstr "" -#: FlatCAMApp.py:2208 flatcamGUI/FlatCAMGUI.py:1604 +#: FlatCAMApp.py:2255 flatcamGUI/FlatCAMGUI.py:1618 msgid "Close Editor" msgstr "" -#: FlatCAMApp.py:2211 FlatCAMApp.py:3302 FlatCAMApp.py:5661 -#: FlatCAMTranslation.py:89 flatcamGUI/FlatCAMGUI.py:3698 +#: FlatCAMApp.py:2258 FlatCAMApp.py:3349 FlatCAMApp.py:5799 +#: FlatCAMTranslation.py:89 flatcamGUI/FlatCAMGUI.py:3726 msgid "Yes" msgstr "" -#: FlatCAMApp.py:2212 FlatCAMApp.py:3303 FlatCAMApp.py:5662 -#: FlatCAMTranslation.py:90 flatcamGUI/FlatCAMGUI.py:3699 +#: FlatCAMApp.py:2259 FlatCAMApp.py:3350 FlatCAMApp.py:5800 +#: FlatCAMTranslation.py:90 flatcamGUI/FlatCAMGUI.py:3727 msgid "No" msgstr "" -#: FlatCAMApp.py:2213 FlatCAMApp.py:3304 FlatCAMApp.py:3636 FlatCAMApp.py:5663 +#: FlatCAMApp.py:2260 FlatCAMApp.py:3351 FlatCAMApp.py:3683 FlatCAMApp.py:5801 msgid "Cancel" msgstr "" -#: FlatCAMApp.py:2235 FlatCAMApp.py:2260 +#: FlatCAMApp.py:2287 msgid "[WARNING] Object empty after edit." msgstr "" -#: FlatCAMApp.py:2269 FlatCAMApp.py:2283 FlatCAMApp.py:2295 +#: FlatCAMApp.py:2309 FlatCAMApp.py:2328 FlatCAMApp.py:2340 msgid "[WARNING_NOTCL] Select a Gerber, Geometry or Excellon Object to update." msgstr "" -#: FlatCAMApp.py:2272 +#: FlatCAMApp.py:2312 #, python-format msgid "[selected] %s is updated, returning to App..." msgstr "" -#: FlatCAMApp.py:2632 +#: FlatCAMApp.py:2677 msgid "[ERROR] Could not load defaults file." msgstr "" -#: FlatCAMApp.py:2644 +#: FlatCAMApp.py:2689 msgid "[ERROR] Failed to parse defaults file." msgstr "" -#: FlatCAMApp.py:2665 FlatCAMApp.py:2668 +#: FlatCAMApp.py:2710 FlatCAMApp.py:2713 msgid "Import FlatCAM Preferences" msgstr "" -#: FlatCAMApp.py:2673 +#: FlatCAMApp.py:2718 msgid "[WARNING_NOTCL] FlatCAM preferences import cancelled." msgstr "" -#: FlatCAMApp.py:2681 FlatCAMApp.py:2728 FlatCAMApp.py:3181 +#: FlatCAMApp.py:2726 FlatCAMApp.py:2773 FlatCAMApp.py:3228 msgid "[ERROR_NOTCL] Could not load defaults file." msgstr "" -#: FlatCAMApp.py:2689 FlatCAMApp.py:3190 +#: FlatCAMApp.py:2734 FlatCAMApp.py:3237 msgid "[ERROR_NOTCL] Failed to parse defaults file." msgstr "" -#: FlatCAMApp.py:2692 +#: FlatCAMApp.py:2737 #, python-format msgid "[success] Imported Defaults from %s" msgstr "" -#: FlatCAMApp.py:2702 FlatCAMApp.py:2706 +#: FlatCAMApp.py:2747 FlatCAMApp.py:2751 msgid "Export FlatCAM Preferences" msgstr "" -#: FlatCAMApp.py:2712 +#: FlatCAMApp.py:2757 msgid "[WARNING_NOTCL] FlatCAM preferences export cancelled." msgstr "" -#: FlatCAMApp.py:2747 FlatCAMApp.py:3235 +#: FlatCAMApp.py:2792 FlatCAMApp.py:3282 msgid "[ERROR_NOTCL] Failed to write defaults to file." msgstr "" -#: FlatCAMApp.py:2799 +#: FlatCAMApp.py:2845 msgid "[ERROR_NOTCL] Failed to open recent files file for writing." msgstr "" -#: FlatCAMApp.py:2884 camlib.py:4503 +#: FlatCAMApp.py:2930 camlib.py:4453 msgid "[ERROR_NOTCL] An internal error has ocurred. See shell.\n" msgstr "" -#: FlatCAMApp.py:2885 +#: FlatCAMApp.py:2931 #, python-brace-format msgid "" "Object ({kind}) failed because: {error} \n" "\n" msgstr "" -#: FlatCAMApp.py:2905 +#: FlatCAMApp.py:2951 msgid "Converting units to " msgstr "" -#: FlatCAMApp.py:2983 FlatCAMApp.py:2986 FlatCAMApp.py:2989 FlatCAMApp.py:2992 +#: FlatCAMApp.py:3030 FlatCAMApp.py:3033 FlatCAMApp.py:3036 FlatCAMApp.py:3039 #, python-brace-format msgid "" "[selected] {kind} created/selected: {name}" msgstr "" -#: FlatCAMApp.py:3086 +#: FlatCAMApp.py:3133 #, python-brace-format msgid "" "FlatCAM
Version {version} {beta} ({date}) - " @@ -171,41 +171,41 @@ msgid "" "downloads/\">here.
" msgstr "" -#: FlatCAMApp.py:3239 +#: FlatCAMApp.py:3286 msgid "[success] Defaults saved." msgstr "" -#: FlatCAMApp.py:3260 +#: FlatCAMApp.py:3307 msgid "[ERROR_NOTCL] Could not load factory defaults file." msgstr "" -#: FlatCAMApp.py:3269 +#: FlatCAMApp.py:3316 msgid "[ERROR_NOTCL] Failed to parse factory defaults file." msgstr "" -#: FlatCAMApp.py:3283 +#: FlatCAMApp.py:3330 msgid "[ERROR_NOTCL] Failed to write factory defaults to file." msgstr "" -#: FlatCAMApp.py:3287 +#: FlatCAMApp.py:3334 msgid "Factory defaults saved." msgstr "" -#: FlatCAMApp.py:3292 flatcamGUI/FlatCAMGUI.py:3088 +#: FlatCAMApp.py:3339 flatcamGUI/FlatCAMGUI.py:3103 msgid "[WARNING_NOTCL] Application is saving the project. Please wait ..." msgstr "" -#: FlatCAMApp.py:3297 +#: FlatCAMApp.py:3344 msgid "" "There are files/objects modified in FlatCAM. \n" "Do you want to Save the project?" msgstr "" -#: FlatCAMApp.py:3300 FlatCAMApp.py:5659 +#: FlatCAMApp.py:3347 FlatCAMApp.py:5797 msgid "Save changes" msgstr "" -#: FlatCAMApp.py:3367 +#: FlatCAMApp.py:3414 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,195 +215,202 @@ msgid "" "Check the generated GCODE." msgstr "" -#: FlatCAMApp.py:3408 +#: FlatCAMApp.py:3455 msgid "[ERROR_NOTCL] Failed. Excellon joining works only on Excellon objects." msgstr "" -#: FlatCAMApp.py:3430 +#: FlatCAMApp.py:3477 msgid "[ERROR_NOTCL] Failed. Gerber joining works only on Gerber objects." msgstr "" -#: FlatCAMApp.py:3445 FlatCAMApp.py:3470 +#: FlatCAMApp.py:3492 FlatCAMApp.py:3517 msgid "[ERROR_NOTCL] Failed. Select a Geometry Object and try again." msgstr "" -#: FlatCAMApp.py:3449 FlatCAMApp.py:3474 +#: FlatCAMApp.py:3496 FlatCAMApp.py:3521 #, python-format msgid "[ERROR_NOTCL] Expected a FlatCAMGeometry, got %s" msgstr "" -#: FlatCAMApp.py:3462 +#: FlatCAMApp.py:3509 msgid "[success] A Geometry object was converted to MultiGeo type." msgstr "" -#: FlatCAMApp.py:3488 +#: FlatCAMApp.py:3535 msgid "[success] A Geometry object was converted to SingleGeo type." msgstr "" -#: FlatCAMApp.py:3635 FlatCAMApp.py:4444 FlatCAMApp.py:5926 FlatCAMApp.py:5937 -#: FlatCAMApp.py:6123 FlatCAMApp.py:6133 +#: FlatCAMApp.py:3682 FlatCAMApp.py:4495 FlatCAMApp.py:6064 FlatCAMApp.py:6075 +#: FlatCAMApp.py:6312 FlatCAMApp.py:6322 msgid "Ok" msgstr "" -#: FlatCAMApp.py:3676 +#: FlatCAMApp.py:3724 #, python-format msgid "[success] Converted units to %s" msgstr "" -#: FlatCAMApp.py:3687 +#: FlatCAMApp.py:3735 msgid "[WARNING_NOTCL] Units conversion cancelled." msgstr "" -#: FlatCAMApp.py:4313 +#: FlatCAMApp.py:4364 msgid "Open file" msgstr "" -#: FlatCAMApp.py:4344 FlatCAMApp.py:4349 +#: FlatCAMApp.py:4395 FlatCAMApp.py:4400 msgid "Export G-Code ..." msgstr "" -#: FlatCAMApp.py:4352 +#: FlatCAMApp.py:4403 msgid "[WARNING_NOTCL] Export Code cancelled." msgstr "" -#: FlatCAMApp.py:4362 +#: FlatCAMApp.py:4413 msgid "[WARNING] No such file or directory" msgstr "" -#: FlatCAMApp.py:4369 +#: FlatCAMApp.py:4420 #, python-format msgid "Saved to: %s" msgstr "" -#: FlatCAMApp.py:4432 FlatCAMApp.py:4465 FlatCAMApp.py:4476 FlatCAMApp.py:4487 +#: FlatCAMApp.py:4483 FlatCAMApp.py:4516 FlatCAMApp.py:4527 FlatCAMApp.py:4538 #: 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:4437 FlatCAMApp.py:4470 FlatCAMApp.py:4481 FlatCAMApp.py:4492 -#: flatcamGUI/FlatCAMGUI.py:2983 +#: FlatCAMApp.py:4488 FlatCAMApp.py:4521 FlatCAMApp.py:4532 FlatCAMApp.py:4543 +#: flatcamGUI/FlatCAMGUI.py:2998 msgid "[WARNING_NOTCL] Adding Tool cancelled ..." msgstr "" -#: FlatCAMApp.py:4440 +#: FlatCAMApp.py:4491 msgid "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." msgstr "" -#: FlatCAMApp.py:4546 +#: FlatCAMApp.py:4604 msgid "Object(s) deleted ..." msgstr "" -#: FlatCAMApp.py:4550 +#: FlatCAMApp.py:4608 msgid "Failed. No object(s) selected..." msgstr "" -#: FlatCAMApp.py:4552 +#: FlatCAMApp.py:4610 msgid "Save the work in Editor and try again ..." msgstr "" -#: FlatCAMApp.py:4565 +#: FlatCAMApp.py:4623 msgid "Click to set the origin ..." msgstr "" -#: FlatCAMApp.py:4577 +#: FlatCAMApp.py:4635 msgid "Jump to ..." msgstr "" -#: FlatCAMApp.py:4578 +#: FlatCAMApp.py:4636 msgid "Enter the coordinates in format X,Y:" msgstr "" -#: FlatCAMApp.py:4585 +#: FlatCAMApp.py:4643 msgid "Wrong coordinates. Enter coordinates in format: X,Y" msgstr "" -#: FlatCAMApp.py:4603 flatcamEditors/FlatCAMGeoEditor.py:3485 -#: flatcamEditors/FlatCAMGrbEditor.py:790 -#: flatcamEditors/FlatCAMGrbEditor.py:885 -#: flatcamEditors/FlatCAMGrbEditor.py:1122 -#: flatcamEditors/FlatCAMGrbEditor.py:1350 -#: flatcamEditors/FlatCAMGrbEditor.py:3318 -#: flatcamEditors/FlatCAMGrbEditor.py:3332 flatcamGUI/FlatCAMGUI.py:2397 -#: flatcamGUI/FlatCAMGUI.py:2409 +#: FlatCAMApp.py:4661 flatcamEditors/FlatCAMExcEditor.py:2285 +#: flatcamEditors/FlatCAMExcEditor.py:2292 +#: flatcamEditors/FlatCAMGeoEditor.py:3555 +#: flatcamEditors/FlatCAMGeoEditor.py:3569 +#: flatcamEditors/FlatCAMGrbEditor.py:1037 +#: flatcamEditors/FlatCAMGrbEditor.py:1138 +#: flatcamEditors/FlatCAMGrbEditor.py:1399 +#: flatcamEditors/FlatCAMGrbEditor.py:1649 +#: flatcamEditors/FlatCAMGrbEditor.py:3784 +#: flatcamEditors/FlatCAMGrbEditor.py:3798 flatcamGUI/FlatCAMGUI.py:2412 +#: flatcamGUI/FlatCAMGUI.py:2424 msgid "[success] Done." msgstr "" -#: FlatCAMApp.py:4767 +#: FlatCAMApp.py:4794 FlatCAMApp.py:4863 +msgid "[WARNING_NOTCL] No object is selected. Select an object and try again." +msgstr "" + +#: FlatCAMApp.py:4904 msgid "[success] Origin set ..." msgstr "" -#: FlatCAMApp.py:4786 +#: FlatCAMApp.py:4924 msgid "Preferences" msgstr "" -#: FlatCAMApp.py:4806 +#: FlatCAMApp.py:4944 msgid "[WARNING_NOTCL] No object selected to Flip on Y axis." msgstr "" -#: FlatCAMApp.py:4831 +#: FlatCAMApp.py:4969 msgid "[success] Flip on Y axis done." msgstr "" -#: FlatCAMApp.py:4833 FlatCAMApp.py:4873 -#: flatcamEditors/FlatCAMGeoEditor.py:1354 -#: flatcamEditors/FlatCAMGrbEditor.py:4631 flatcamTools/ToolTransform.py:750 +#: FlatCAMApp.py:4971 FlatCAMApp.py:5011 +#: flatcamEditors/FlatCAMGeoEditor.py:1356 +#: flatcamEditors/FlatCAMGrbEditor.py:5165 flatcamTools/ToolTransform.py:748 #, python-format msgid "[ERROR_NOTCL] Due of %s, Flip action was not executed." msgstr "" -#: FlatCAMApp.py:4846 +#: FlatCAMApp.py:4984 msgid "[WARNING_NOTCL] No object selected to Flip on X axis." msgstr "" -#: FlatCAMApp.py:4871 +#: FlatCAMApp.py:5009 msgid "[success] Flip on X axis done." msgstr "" -#: FlatCAMApp.py:4886 +#: FlatCAMApp.py:5024 msgid "[WARNING_NOTCL] No object selected to Rotate." msgstr "" -#: FlatCAMApp.py:4889 FlatCAMApp.py:4934 FlatCAMApp.py:4965 +#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 msgid "Transform" msgstr "" -#: FlatCAMApp.py:4889 FlatCAMApp.py:4934 FlatCAMApp.py:4965 +#: FlatCAMApp.py:5027 FlatCAMApp.py:5072 FlatCAMApp.py:5103 msgid "Enter the Angle value:" msgstr "" -#: FlatCAMApp.py:4919 +#: FlatCAMApp.py:5057 msgid "[success] Rotation done." msgstr "" -#: FlatCAMApp.py:4921 flatcamEditors/FlatCAMGeoEditor.py:1297 -#: flatcamEditors/FlatCAMGrbEditor.py:4574 flatcamTools/ToolTransform.py:678 +#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:1299 +#: flatcamEditors/FlatCAMGrbEditor.py:5096 flatcamTools/ToolTransform.py:677 #, python-format msgid "[ERROR_NOTCL] Due of %s, rotation movement was not executed." msgstr "" -#: FlatCAMApp.py:4932 +#: FlatCAMApp.py:5070 msgid "[WARNING_NOTCL] No object selected to Skew/Shear on X axis." msgstr "" -#: FlatCAMApp.py:4953 +#: FlatCAMApp.py:5091 msgid "[success] Skew on X axis done." msgstr "" -#: FlatCAMApp.py:4963 +#: FlatCAMApp.py:5101 msgid "[WARNING_NOTCL] No object selected to Skew/Shear on Y axis." msgstr "" -#: FlatCAMApp.py:4984 +#: FlatCAMApp.py:5122 msgid "[success] Skew on Y axis done." msgstr "" -#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:936 -#: flatcamEditors/FlatCAMGrbEditor.py:1830 -#: flatcamEditors/FlatCAMGrbEditor.py:4204 flatcamGUI/ObjectUI.py:988 +#: FlatCAMApp.py:5197 flatcamEditors/FlatCAMGeoEditor.py:938 +#: flatcamEditors/FlatCAMGrbEditor.py:2223 +#: flatcamEditors/FlatCAMGrbEditor.py:4687 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 @@ -411,269 +418,282 @@ msgstr "" msgid "Add" msgstr "" -#: FlatCAMApp.py:5060 FlatCAMObj.py:3008 -#: flatcamEditors/FlatCAMGrbEditor.py:1835 flatcamGUI/FlatCAMGUI.py:519 -#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1602 -#: flatcamGUI/FlatCAMGUI.py:1934 flatcamGUI/ObjectUI.py:1004 +#: FlatCAMApp.py:5198 FlatCAMObj.py:3302 +#: flatcamEditors/FlatCAMGrbEditor.py:2228 flatcamGUI/FlatCAMGUI.py:532 +#: flatcamGUI/FlatCAMGUI.py:726 flatcamGUI/FlatCAMGUI.py:1616 +#: flatcamGUI/FlatCAMGUI.py:1948 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:5072 +#: FlatCAMApp.py:5210 msgid "New Grid ..." msgstr "" -#: FlatCAMApp.py:5073 +#: FlatCAMApp.py:5211 msgid "Enter a Grid Value:" msgstr "" -#: FlatCAMApp.py:5081 FlatCAMApp.py:5108 +#: FlatCAMApp.py:5219 FlatCAMApp.py:5246 msgid "" "[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float " "format." msgstr "" -#: FlatCAMApp.py:5087 +#: FlatCAMApp.py:5225 msgid "[success] New Grid added ..." msgstr "" -#: FlatCAMApp.py:5090 +#: FlatCAMApp.py:5228 msgid "[WARNING_NOTCL] Grid already exists ..." msgstr "" -#: FlatCAMApp.py:5093 +#: FlatCAMApp.py:5231 msgid "[WARNING_NOTCL] Adding New Grid cancelled ..." msgstr "" -#: FlatCAMApp.py:5115 +#: FlatCAMApp.py:5253 msgid "[ERROR_NOTCL] Grid Value does not exist ..." msgstr "" -#: FlatCAMApp.py:5118 +#: FlatCAMApp.py:5256 msgid "[success] Grid Value deleted ..." msgstr "" -#: FlatCAMApp.py:5121 +#: FlatCAMApp.py:5259 msgid "[WARNING_NOTCL] Delete Grid value cancelled ..." msgstr "" -#: FlatCAMApp.py:5160 +#: FlatCAMApp.py:5298 msgid "[WARNING_NOTCL] No object selected to copy it's name" msgstr "" -#: FlatCAMApp.py:5164 +#: FlatCAMApp.py:5302 msgid "Name copied on clipboard ..." msgstr "" -#: FlatCAMApp.py:5457 FlatCAMApp.py:5460 FlatCAMApp.py:5463 FlatCAMApp.py:5466 -#: FlatCAMApp.py:5481 FlatCAMApp.py:5484 FlatCAMApp.py:5487 FlatCAMApp.py:5490 -#: FlatCAMApp.py:5530 FlatCAMApp.py:5533 FlatCAMApp.py:5536 FlatCAMApp.py:5539 +#: 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 #: ObjectCollection.py:717 ObjectCollection.py:720 ObjectCollection.py:723 #: ObjectCollection.py:726 #, python-brace-format msgid "[selected]{name} selected" msgstr "" -#: FlatCAMApp.py:5656 +#: FlatCAMApp.py:5794 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:5677 +#: FlatCAMApp.py:5815 msgid "[success] New Project created..." msgstr "" -#: FlatCAMApp.py:5785 FlatCAMApp.py:5788 flatcamGUI/FlatCAMGUI.py:600 -#: flatcamGUI/FlatCAMGUI.py:1817 +#: FlatCAMApp.py:5923 FlatCAMApp.py:5926 flatcamGUI/FlatCAMGUI.py:613 +#: flatcamGUI/FlatCAMGUI.py:1831 msgid "Open Gerber" msgstr "" -#: FlatCAMApp.py:5793 +#: FlatCAMApp.py:5931 msgid "[WARNING_NOTCL] Open Gerber cancelled." msgstr "" -#: FlatCAMApp.py:5814 FlatCAMApp.py:5817 flatcamGUI/FlatCAMGUI.py:601 -#: flatcamGUI/FlatCAMGUI.py:1818 +#: FlatCAMApp.py:5952 FlatCAMApp.py:5955 flatcamGUI/FlatCAMGUI.py:614 +#: flatcamGUI/FlatCAMGUI.py:1832 msgid "Open Excellon" msgstr "" -#: FlatCAMApp.py:5822 +#: FlatCAMApp.py:5960 msgid "[WARNING_NOTCL] Open Excellon cancelled." msgstr "" -#: FlatCAMApp.py:5844 FlatCAMApp.py:5847 +#: FlatCAMApp.py:5982 FlatCAMApp.py:5985 msgid "Open G-Code" msgstr "" -#: FlatCAMApp.py:5852 +#: FlatCAMApp.py:5990 msgid "[WARNING_NOTCL] Open G-Code cancelled." msgstr "" -#: FlatCAMApp.py:5870 FlatCAMApp.py:5873 +#: FlatCAMApp.py:6008 FlatCAMApp.py:6011 msgid "Open Project" msgstr "" -#: FlatCAMApp.py:5881 +#: FlatCAMApp.py:6019 msgid "[WARNING_NOTCL] Open Project cancelled." msgstr "" -#: FlatCAMApp.py:5900 FlatCAMApp.py:5903 +#: FlatCAMApp.py:6038 FlatCAMApp.py:6041 msgid "Open Configuration File" msgstr "" -#: FlatCAMApp.py:5907 +#: FlatCAMApp.py:6045 msgid "[WARNING_NOTCL Open Config cancelled." msgstr "" -#: FlatCAMApp.py:5922 FlatCAMApp.py:6119 FlatCAMApp.py:8206 FlatCAMApp.py:8226 -#: FlatCAMApp.py:8247 FlatCAMApp.py:8269 +#: FlatCAMApp.py:6060 FlatCAMApp.py:6308 FlatCAMApp.py:8519 FlatCAMApp.py:8539 +#: FlatCAMApp.py:8560 FlatCAMApp.py:8582 msgid "[WARNING_NOTCL] No object selected." msgstr "" -#: FlatCAMApp.py:5923 FlatCAMApp.py:6120 +#: FlatCAMApp.py:6061 FlatCAMApp.py:6309 msgid "Please Select a Geometry object to export" msgstr "" -#: FlatCAMApp.py:5934 +#: FlatCAMApp.py:6072 msgid "[ERROR_NOTCL] Only Geometry, Gerber and CNCJob objects can be used." msgstr "" -#: FlatCAMApp.py:5947 FlatCAMApp.py:5951 +#: FlatCAMApp.py:6085 FlatCAMApp.py:6089 msgid "Export SVG" msgstr "" -#: FlatCAMApp.py:5956 +#: FlatCAMApp.py:6094 msgid "[WARNING_NOTCL] Export SVG cancelled." msgstr "" -#: FlatCAMApp.py:5970 +#: FlatCAMApp.py:6110 msgid "[[WARNING_NOTCL]] Data must be a 3D array with last dimension 3 or 4" msgstr "" -#: FlatCAMApp.py:5976 FlatCAMApp.py:5980 +#: FlatCAMApp.py:6116 FlatCAMApp.py:6120 msgid "Export PNG Image" msgstr "" -#: FlatCAMApp.py:5985 +#: FlatCAMApp.py:6125 msgid "Export PNG cancelled." msgstr "" -#: FlatCAMApp.py:6002 +#: FlatCAMApp.py:6144 msgid "" "[WARNING_NOTCL] No object selected. Please select an Gerber object to export." msgstr "" -#: FlatCAMApp.py:6007 +#: FlatCAMApp.py:6149 FlatCAMApp.py:6272 msgid "" "[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files..." msgstr "" -#: FlatCAMApp.py:6019 +#: FlatCAMApp.py:6161 msgid "Save Gerber source file" msgstr "" -#: FlatCAMApp.py:6024 +#: FlatCAMApp.py:6166 msgid "[WARNING_NOTCL] Save Gerber source file cancelled." msgstr "" -#: FlatCAMApp.py:6041 +#: FlatCAMApp.py:6185 msgid "" "[WARNING_NOTCL] No object selected. Please select an Excellon object to " "export." msgstr "" -#: FlatCAMApp.py:6046 FlatCAMApp.py:6085 +#: FlatCAMApp.py:6190 FlatCAMApp.py:6231 msgid "" "[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files..." msgstr "" -#: FlatCAMApp.py:6054 FlatCAMApp.py:6058 +#: FlatCAMApp.py:6198 FlatCAMApp.py:6202 msgid "Save Excellon source file" msgstr "" -#: FlatCAMApp.py:6063 +#: FlatCAMApp.py:6207 msgid "[WARNING_NOTCL] Saving Excellon source file cancelled." msgstr "" -#: FlatCAMApp.py:6080 +#: FlatCAMApp.py:6226 msgid "" "[WARNING_NOTCL] No object selected. Please Select an Excellon object to " "export." msgstr "" -#: FlatCAMApp.py:6093 FlatCAMApp.py:6097 +#: FlatCAMApp.py:6239 FlatCAMApp.py:6243 msgid "Export Excellon" msgstr "" -#: FlatCAMApp.py:6102 +#: FlatCAMApp.py:6248 msgid "[WARNING_NOTCL] Export Excellon cancelled." msgstr "" -#: FlatCAMApp.py:6130 +#: FlatCAMApp.py:6267 +msgid "" +"[WARNING_NOTCL] No object selected. Please Select an Gerber object to export." +msgstr "" + +#: FlatCAMApp.py:6280 FlatCAMApp.py:6284 +msgid "Export Gerber" +msgstr "" + +#: FlatCAMApp.py:6289 +msgid "[WARNING_NOTCL] Export Gerber cancelled." +msgstr "" + +#: FlatCAMApp.py:6319 msgid "[ERROR_NOTCL] Only Geometry objects can be used." msgstr "" -#: FlatCAMApp.py:6144 FlatCAMApp.py:6148 +#: FlatCAMApp.py:6333 FlatCAMApp.py:6337 msgid "Export DXF" msgstr "" -#: FlatCAMApp.py:6153 +#: FlatCAMApp.py:6342 msgid "[WARNING_NOTCL] Export DXF cancelled." msgstr "" -#: FlatCAMApp.py:6171 FlatCAMApp.py:6174 +#: FlatCAMApp.py:6362 FlatCAMApp.py:6365 msgid "Import SVG" msgstr "" -#: FlatCAMApp.py:6182 +#: FlatCAMApp.py:6373 msgid "[WARNING_NOTCL] Open SVG cancelled." msgstr "" -#: FlatCAMApp.py:6201 FlatCAMApp.py:6204 +#: FlatCAMApp.py:6392 FlatCAMApp.py:6395 msgid "Import DXF" msgstr "" -#: FlatCAMApp.py:6212 +#: FlatCAMApp.py:6403 msgid "[WARNING_NOTCL] Open DXF cancelled." msgstr "" -#: FlatCAMApp.py:6230 +#: FlatCAMApp.py:6421 #, python-format msgid "%s" msgstr "" -#: FlatCAMApp.py:6250 +#: FlatCAMApp.py:6441 msgid "" "[WARNING_NOTCL] Select an Gerber or Excellon file to view it's source file." msgstr "" -#: FlatCAMApp.py:6257 +#: FlatCAMApp.py:6448 msgid "" "[WARNING_NOTCL] There is no selected object for which to see it's source " "file code." msgstr "" -#: FlatCAMApp.py:6265 +#: FlatCAMApp.py:6456 msgid "Source Editor" msgstr "" -#: FlatCAMApp.py:6275 +#: FlatCAMApp.py:6466 #, python-format msgid "[ERROR]App.on_view_source() -->%s" msgstr "" -#: FlatCAMApp.py:6287 FlatCAMApp.py:7308 FlatCAMObj.py:5266 +#: FlatCAMApp.py:6478 FlatCAMApp.py:7621 FlatCAMObj.py:5573 msgid "Code Editor" msgstr "" -#: FlatCAMApp.py:6299 +#: FlatCAMApp.py:6490 msgid "Script Editor" msgstr "" -#: FlatCAMApp.py:6302 +#: FlatCAMApp.py:6493 msgid "" "#\n" "# CREATE A NEW FLATCAM TCL SCRIPT\n" @@ -697,204 +717,216 @@ msgid "" "\n" msgstr "" -#: FlatCAMApp.py:6325 FlatCAMApp.py:6328 +#: FlatCAMApp.py:6516 FlatCAMApp.py:6519 msgid "Open TCL script" msgstr "" -#: FlatCAMApp.py:6336 +#: FlatCAMApp.py:6527 msgid "[WARNING_NOTCL] Open TCL script cancelled." msgstr "" -#: FlatCAMApp.py:6348 +#: FlatCAMApp.py:6539 #, python-format msgid "[ERROR]App.on_fileopenscript() -->%s" msgstr "" -#: FlatCAMApp.py:6374 FlatCAMApp.py:6377 +#: FlatCAMApp.py:6565 FlatCAMApp.py:6568 msgid "Run TCL script" msgstr "" -#: FlatCAMApp.py:6385 +#: FlatCAMApp.py:6576 msgid "[WARNING_NOTCL] Run TCL script cancelled." msgstr "" -#: FlatCAMApp.py:6431 FlatCAMApp.py:6435 +#: FlatCAMApp.py:6622 FlatCAMApp.py:6626 msgid "Save Project As ..." msgstr "" -#: FlatCAMApp.py:6432 +#: FlatCAMApp.py:6623 #, python-brace-format msgid "{l_save}/Project_{date}" msgstr "" -#: FlatCAMApp.py:6440 +#: FlatCAMApp.py:6631 msgid "[WARNING_NOTCL] Save Project cancelled." msgstr "" -#: FlatCAMApp.py:6485 +#: FlatCAMApp.py:6676 msgid "Exporting SVG" msgstr "" -#: FlatCAMApp.py:6518 FlatCAMApp.py:6623 FlatCAMApp.py:6737 +#: FlatCAMApp.py:6710 FlatCAMApp.py:6816 FlatCAMApp.py:6931 #, python-format msgid "[success] SVG file exported to %s" msgstr "" -#: FlatCAMApp.py:6549 FlatCAMApp.py:6669 +#: FlatCAMApp.py:6741 FlatCAMApp.py:6862 #, python-format msgid "[WARNING_NOTCL] No object Box. Using instead %s" msgstr "" -#: FlatCAMApp.py:6626 FlatCAMApp.py:6740 +#: FlatCAMApp.py:6819 FlatCAMApp.py:6934 msgid "Generating Film ... Please wait." msgstr "" -#: FlatCAMApp.py:6887 +#: FlatCAMApp.py:7082 #, python-format msgid "[success] Excellon file exported to %s" msgstr "" -#: FlatCAMApp.py:6894 +#: FlatCAMApp.py:7089 msgid "Exporting Excellon" msgstr "" -#: FlatCAMApp.py:6899 FlatCAMApp.py:6906 +#: FlatCAMApp.py:7094 FlatCAMApp.py:7101 msgid "[ERROR_NOTCL] Could not export Excellon file." msgstr "" -#: FlatCAMApp.py:6945 +#: FlatCAMApp.py:7199 +#, python-format +msgid "[success] Gerber file exported to %s" +msgstr "" + +#: FlatCAMApp.py:7206 +msgid "Exporting Gerber" +msgstr "" + +#: FlatCAMApp.py:7211 FlatCAMApp.py:7218 +msgid "[ERROR_NOTCL] Could not export Gerber file." +msgstr "" + +#: FlatCAMApp.py:7258 #, python-format msgid "[success] DXF file exported to %s" msgstr "" -#: FlatCAMApp.py:6951 +#: FlatCAMApp.py:7264 msgid "Exporting DXF" msgstr "" -#: FlatCAMApp.py:6956 FlatCAMApp.py:6963 +#: FlatCAMApp.py:7269 FlatCAMApp.py:7276 msgid "[[WARNING_NOTCL]] Could not export DXF file." msgstr "" -#: FlatCAMApp.py:6983 FlatCAMApp.py:7025 FlatCAMApp.py:7066 +#: FlatCAMApp.py:7296 FlatCAMApp.py:7338 FlatCAMApp.py:7379 msgid "" "[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and " "Gerber are supported" msgstr "" -#: FlatCAMApp.py:6993 +#: FlatCAMApp.py:7306 msgid "Importing SVG" msgstr "" -#: FlatCAMApp.py:7004 FlatCAMApp.py:7046 FlatCAMApp.py:7086 FlatCAMApp.py:7162 -#: FlatCAMApp.py:7229 FlatCAMApp.py:7294 flatcamTools/ToolPDF.py:212 +#: FlatCAMApp.py:7317 FlatCAMApp.py:7359 FlatCAMApp.py:7399 FlatCAMApp.py:7475 +#: FlatCAMApp.py:7542 FlatCAMApp.py:7607 flatcamTools/ToolPDF.py:212 #, python-format msgid "[success] Opened: %s" msgstr "" -#: FlatCAMApp.py:7035 +#: FlatCAMApp.py:7348 msgid "Importing DXF" msgstr "" -#: FlatCAMApp.py:7074 +#: FlatCAMApp.py:7387 msgid "Importing Image" msgstr "" -#: FlatCAMApp.py:7115 FlatCAMApp.py:7117 +#: FlatCAMApp.py:7428 FlatCAMApp.py:7430 #, python-format msgid "[ERROR_NOTCL] Failed to open file: %s" msgstr "" -#: FlatCAMApp.py:7120 +#: FlatCAMApp.py:7433 #, python-brace-format msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}" msgstr "" -#: FlatCAMApp.py:7126 FlatCAMObj.py:3970 -#: flatcamEditors/FlatCAMExcEditor.py:2035 -#: flatcamEditors/FlatCAMGrbEditor.py:3098 +#: FlatCAMApp.py:7439 FlatCAMObj.py:4271 +#: flatcamEditors/FlatCAMExcEditor.py:2041 msgid "[ERROR] An internal error has ocurred. See shell.\n" msgstr "" -#: FlatCAMApp.py:7135 +#: FlatCAMApp.py:7448 msgid "" "[ERROR_NOTCL] Object is not Gerber file or empty. Aborting object creation." msgstr "" -#: FlatCAMApp.py:7143 +#: FlatCAMApp.py:7456 msgid "Opening Gerber" msgstr "" -#: FlatCAMApp.py:7153 +#: FlatCAMApp.py:7466 msgid "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file." msgstr "" -#: FlatCAMApp.py:7188 flatcamTools/ToolPcbWizard.py:421 +#: FlatCAMApp.py:7501 flatcamTools/ToolPcbWizard.py:421 msgid "[ERROR_NOTCL] This is not Excellon file." msgstr "" -#: FlatCAMApp.py:7191 +#: FlatCAMApp.py:7504 #, python-format msgid "[ERROR_NOTCL] Cannot open file: %s" msgstr "" -#: FlatCAMApp.py:7196 flatcamTools/ToolPcbWizard.py:429 +#: FlatCAMApp.py:7509 flatcamTools/ToolPcbWizard.py:429 msgid "[ERROR_NOTCL] An internal error has occurred. See shell.\n" msgstr "" -#: FlatCAMApp.py:7212 flatcamTools/ToolPDF.py:261 +#: FlatCAMApp.py:7525 flatcamTools/ToolPDF.py:262 #: flatcamTools/ToolPcbWizard.py:442 #, python-format msgid "[ERROR_NOTCL] No geometry found in file: %s" msgstr "" -#: FlatCAMApp.py:7215 +#: FlatCAMApp.py:7528 msgid "Opening Excellon." msgstr "" -#: FlatCAMApp.py:7222 +#: FlatCAMApp.py:7535 msgid "[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file." msgstr "" -#: FlatCAMApp.py:7261 +#: FlatCAMApp.py:7574 #, python-format msgid "[ERROR_NOTCL] Failed to open %s" msgstr "" -#: FlatCAMApp.py:7271 +#: FlatCAMApp.py:7584 msgid "[ERROR_NOTCL] This is not GCODE" msgstr "" -#: FlatCAMApp.py:7277 +#: FlatCAMApp.py:7590 msgid "Opening G-Code." msgstr "" -#: FlatCAMApp.py:7285 +#: FlatCAMApp.py:7598 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:7325 +#: FlatCAMApp.py:7638 #, python-format msgid "[ERROR_NOTCL] Failed to open config file: %s" msgstr "" -#: FlatCAMApp.py:7350 FlatCAMApp.py:7366 +#: FlatCAMApp.py:7663 FlatCAMApp.py:7679 #, python-format msgid "[ERROR_NOTCL] Failed to open project file: %s" msgstr "" -#: FlatCAMApp.py:7392 +#: FlatCAMApp.py:7705 #, python-format msgid "[success] Project loaded from: %s" msgstr "" -#: FlatCAMApp.py:7522 +#: FlatCAMApp.py:7835 msgid "Available commands:\n" msgstr "" -#: FlatCAMApp.py:7524 +#: FlatCAMApp.py:7837 msgid "" "\n" "\n" @@ -902,23 +934,23 @@ msgid "" " Example: help open_gerber" msgstr "" -#: FlatCAMApp.py:7672 +#: FlatCAMApp.py:7985 msgid "Shows list of commands." msgstr "" -#: FlatCAMApp.py:7729 +#: FlatCAMApp.py:8042 msgid "[ERROR_NOTCL] Failed to load recent item list." msgstr "" -#: FlatCAMApp.py:7736 +#: FlatCAMApp.py:8049 msgid "[ERROR_NOTCL] Failed to parse recent item list." msgstr "" -#: FlatCAMApp.py:7797 flatcamGUI/FlatCAMGUI.py:957 +#: FlatCAMApp.py:8110 flatcamGUI/FlatCAMGUI.py:970 msgid "Shortcut Key List" msgstr "" -#: FlatCAMApp.py:7804 +#: FlatCAMApp.py:8117 msgid "" "\n" "

Selected Tab - Choose an Item from " @@ -968,101 +1000,101 @@ msgid "" " " msgstr "" -#: FlatCAMApp.py:7908 +#: FlatCAMApp.py:8221 msgid "[WARNING_NOTCL] Failed checking for latest version. Could not connect." msgstr "" -#: FlatCAMApp.py:7915 +#: FlatCAMApp.py:8228 msgid "[ERROR_NOTCL] Could not parse information about latest version." msgstr "" -#: FlatCAMApp.py:7925 +#: FlatCAMApp.py:8238 msgid "[success] FlatCAM is up to date!" msgstr "" -#: FlatCAMApp.py:7930 +#: FlatCAMApp.py:8243 msgid "Newer Version Available" msgstr "" -#: FlatCAMApp.py:7931 +#: FlatCAMApp.py:8244 msgid "" "There is a newer version of FlatCAM available for download:\n" "\n" msgstr "" -#: FlatCAMApp.py:7933 +#: FlatCAMApp.py:8246 msgid "info" msgstr "" -#: FlatCAMApp.py:7952 +#: FlatCAMApp.py:8265 msgid "[success] All plots disabled." msgstr "" -#: FlatCAMApp.py:7958 +#: FlatCAMApp.py:8271 msgid "[success] All non selected plots disabled." msgstr "" -#: FlatCAMApp.py:7964 +#: FlatCAMApp.py:8277 msgid "[success] All plots enabled." msgstr "" -#: FlatCAMApp.py:8075 +#: FlatCAMApp.py:8388 msgid "Saving FlatCAM Project" msgstr "" -#: FlatCAMApp.py:8096 FlatCAMApp.py:8127 +#: FlatCAMApp.py:8409 FlatCAMApp.py:8440 #, python-format msgid "[success] Project saved to: %s" msgstr "" -#: FlatCAMApp.py:8114 +#: FlatCAMApp.py:8427 #, python-format msgid "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it." msgstr "" -#: FlatCAMApp.py:8121 +#: FlatCAMApp.py:8434 #, python-format msgid "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it." msgstr "" -#: FlatCAMApp.py:8129 +#: FlatCAMApp.py:8442 #, python-format msgid "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it." msgstr "" -#: FlatCAMObj.py:195 +#: FlatCAMObj.py:201 #, python-brace-format msgid "[success] Name changed from {old} to {new}" msgstr "" -#: FlatCAMObj.py:542 FlatCAMObj.py:1748 FlatCAMObj.py:3013 FlatCAMObj.py:5165 +#: FlatCAMObj.py:548 FlatCAMObj.py:2033 FlatCAMObj.py:3307 FlatCAMObj.py:5470 msgid "Basic" msgstr "" -#: FlatCAMObj.py:554 FlatCAMObj.py:1764 FlatCAMObj.py:3035 FlatCAMObj.py:5171 +#: FlatCAMObj.py:560 FlatCAMObj.py:2049 FlatCAMObj.py:3329 FlatCAMObj.py:5476 msgid "Advanced" msgstr "" -#: FlatCAMObj.py:909 FlatCAMObj.py:964 +#: FlatCAMObj.py:923 FlatCAMObj.py:978 #, python-format msgid "[success] Isolation geometry created: %s" msgstr "" -#: FlatCAMObj.py:1133 +#: FlatCAMObj.py:1157 msgid "Plotting Apertures" msgstr "" -#: FlatCAMObj.py:1587 flatcamEditors/FlatCAMExcEditor.py:1327 +#: FlatCAMObj.py:1872 flatcamEditors/FlatCAMExcEditor.py:1332 msgid "Total Drills" msgstr "" -#: FlatCAMObj.py:1613 flatcamEditors/FlatCAMExcEditor.py:1359 +#: FlatCAMObj.py:1898 flatcamEditors/FlatCAMExcEditor.py:1364 msgid "Total Slots" msgstr "" -#: FlatCAMObj.py:1820 FlatCAMObj.py:3086 FlatCAMObj.py:3393 FlatCAMObj.py:3580 -#: FlatCAMObj.py:3593 FlatCAMObj.py:3710 FlatCAMObj.py:4118 FlatCAMObj.py:4351 -#: FlatCAMObj.py:4757 flatcamEditors/FlatCAMExcEditor.py:1434 +#: 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 #: flatcamTools/ToolCalculators.py:307 flatcamTools/ToolCalculators.py:318 #: flatcamTools/ToolCalculators.py:330 flatcamTools/ToolCalculators.py:345 #: flatcamTools/ToolCalculators.py:358 flatcamTools/ToolCalculators.py:372 @@ -1074,220 +1106,220 @@ msgstr "" #: flatcamTools/ToolNonCopperClear.py:644 flatcamTools/ToolPaint.py:538 #: flatcamTools/ToolPaint.py:608 flatcamTools/ToolPaint.py:743 #: flatcamTools/ToolPaint.py:840 flatcamTools/ToolPaint.py:995 -#: flatcamTools/ToolPanelize.py:323 flatcamTools/ToolPanelize.py:335 -#: flatcamTools/ToolPanelize.py:348 flatcamTools/ToolPanelize.py:361 -#: flatcamTools/ToolPanelize.py:373 flatcamTools/ToolPanelize.py:384 +#: flatcamTools/ToolPanelize.py:385 flatcamTools/ToolPanelize.py:397 +#: flatcamTools/ToolPanelize.py:410 flatcamTools/ToolPanelize.py:423 +#: flatcamTools/ToolPanelize.py:435 flatcamTools/ToolPanelize.py:446 #: flatcamTools/ToolSolderPaste.py:756 flatcamTools/ToolSolderPaste.py:827 msgid "[ERROR_NOTCL] Wrong value format entered, use a number." msgstr "" -#: FlatCAMObj.py:2044 FlatCAMObj.py:2135 FlatCAMObj.py:2250 +#: FlatCAMObj.py:2329 FlatCAMObj.py:2420 FlatCAMObj.py:2542 msgid "" "[ERROR_NOTCL] Please select one or more tools from the list and try again." msgstr "" -#: FlatCAMObj.py:2051 +#: FlatCAMObj.py:2336 msgid "" "[ERROR_NOTCL] Milling tool for DRILLS is larger than hole size. Cancelled." msgstr "" -#: FlatCAMObj.py:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 msgid "Tool_nr" msgstr "" -#: FlatCAMObj.py:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 -#: flatcamEditors/FlatCAMExcEditor.py:781 -#: flatcamEditors/FlatCAMExcEditor.py:1978 flatcamGUI/ObjectUI.py:556 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 +#: flatcamEditors/FlatCAMExcEditor.py:785 +#: flatcamEditors/FlatCAMExcEditor.py:1984 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:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 msgid "Drills_Nr" msgstr "" -#: FlatCAMObj.py:2065 FlatCAMObj.py:2159 FlatCAMObj.py:2270 +#: FlatCAMObj.py:2350 FlatCAMObj.py:2444 FlatCAMObj.py:2562 msgid "Slots_Nr" msgstr "" -#: FlatCAMObj.py:2145 +#: FlatCAMObj.py:2430 msgid "" "[ERROR_NOTCL] Milling tool for SLOTS is larger than hole size. Cancelled." msgstr "" -#: FlatCAMObj.py:2310 FlatCAMObj.py:4006 FlatCAMObj.py:4217 FlatCAMObj.py:4532 +#: FlatCAMObj.py:2604 FlatCAMObj.py:4307 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:2322 FlatCAMObj.py:4018 FlatCAMObj.py:4229 FlatCAMObj.py:4544 +#: FlatCAMObj.py:2616 FlatCAMObj.py:4319 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:2354 FlatCAMObj.py:4419 FlatCAMObj.py:4424 FlatCAMObj.py:4570 +#: FlatCAMObj.py:2648 FlatCAMObj.py:4724 FlatCAMObj.py:4729 FlatCAMObj.py:4875 msgid "Generating CNC Code" msgstr "" -#: FlatCAMObj.py:2380 FlatCAMObj.py:4716 camlib.py:5214 camlib.py:5672 -#: camlib.py:5943 +#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5165 camlib.py:5624 +#: camlib.py:5887 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:2728 FlatCAMObj.py:3636 FlatCAMObj.py:3637 FlatCAMObj.py:3646 +#: FlatCAMObj.py:3022 FlatCAMObj.py:3930 FlatCAMObj.py:3931 FlatCAMObj.py:3940 msgid "Iso" msgstr "" -#: FlatCAMObj.py:2728 FlatCAMObj.py:2971 FlatCAMObj.py:3258 +#: FlatCAMObj.py:3022 FlatCAMObj.py:3265 FlatCAMObj.py:3552 msgid "Rough" msgstr "" -#: FlatCAMObj.py:2728 +#: FlatCAMObj.py:3022 msgid "Finish" msgstr "" -#: FlatCAMObj.py:3006 flatcamGUI/FlatCAMGUI.py:518 flatcamGUI/FlatCAMGUI.py:711 -#: flatcamGUI/FlatCAMGUI.py:1601 flatcamGUI/FlatCAMGUI.py:1932 -#: flatcamGUI/ObjectUI.py:996 +#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:724 +#: flatcamGUI/FlatCAMGUI.py:1615 flatcamGUI/FlatCAMGUI.py:1946 +#: flatcamGUI/ObjectUI.py:999 msgid "Copy" msgstr "" -#: FlatCAMObj.py:3228 +#: FlatCAMObj.py:3522 msgid "[ERROR_NOTCL] Please enter the desired tool diameter in Float format." msgstr "" -#: FlatCAMObj.py:3303 +#: FlatCAMObj.py:3597 msgid "[success] Tool added in Tool Table." msgstr "" -#: FlatCAMObj.py:3308 +#: FlatCAMObj.py:3602 msgid "[ERROR_NOTCL] Default Tool added. Wrong value format entered." msgstr "" -#: FlatCAMObj.py:3338 FlatCAMObj.py:3348 +#: FlatCAMObj.py:3632 FlatCAMObj.py:3642 msgid "[WARNING_NOTCL] Failed. Select a tool to copy." msgstr "" -#: FlatCAMObj.py:3377 +#: FlatCAMObj.py:3671 msgid "[success] Tool was copied in Tool Table." msgstr "" -#: FlatCAMObj.py:3410 +#: FlatCAMObj.py:3704 msgid "[success] Tool was edited in Tool Table." msgstr "" -#: FlatCAMObj.py:3441 FlatCAMObj.py:3451 +#: FlatCAMObj.py:3735 FlatCAMObj.py:3745 msgid "[WARNING_NOTCL] Failed. Select a tool to delete." msgstr "" -#: FlatCAMObj.py:3475 +#: FlatCAMObj.py:3769 msgid "[success] Tool was deleted in Tool Table." msgstr "" -#: FlatCAMObj.py:3889 +#: FlatCAMObj.py:4190 #, python-format msgid "" "[WARNING_NOTCL] This Geometry can't be processed because it is %s geometry." msgstr "" -#: FlatCAMObj.py:3906 +#: FlatCAMObj.py:4207 msgid "[ERROR_NOTCL] Wrong Tool Dia value format entered, use a number." msgstr "" -#: FlatCAMObj.py:3933 +#: FlatCAMObj.py:4234 msgid "[ERROR_NOTCL] Failed. No tool selected in the tool table ..." msgstr "" -#: FlatCAMObj.py:3971 +#: FlatCAMObj.py:4272 #, python-format msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" msgstr "" -#: FlatCAMObj.py:4127 FlatCAMObj.py:4360 +#: FlatCAMObj.py:4428 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:4241 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:4603 FlatCAMObj.py:4613 camlib.py:3436 camlib.py:3445 +#: FlatCAMObj.py:4908 FlatCAMObj.py:4918 camlib.py:3346 camlib.py:3355 msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float." msgstr "" -#: FlatCAMObj.py:4651 +#: FlatCAMObj.py:4956 msgid "[success] Geometry Scale done." msgstr "" -#: FlatCAMObj.py:4668 camlib.py:3507 +#: FlatCAMObj.py:4973 camlib.py:3425 msgid "" "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " "one value in the Offset field." msgstr "" -#: FlatCAMObj.py:4688 +#: FlatCAMObj.py:4993 msgid "[success] Geometry Offset done." msgstr "" -#: FlatCAMObj.py:5233 FlatCAMObj.py:5238 flatcamTools/ToolSolderPaste.py:1361 +#: FlatCAMObj.py:5538 FlatCAMObj.py:5543 flatcamTools/ToolSolderPaste.py:1361 msgid "Export Machine Code ..." msgstr "" -#: FlatCAMObj.py:5244 flatcamTools/ToolSolderPaste.py:1364 +#: FlatCAMObj.py:5549 flatcamTools/ToolSolderPaste.py:1364 msgid "[WARNING_NOTCL] Export Machine Code cancelled ..." msgstr "" -#: FlatCAMObj.py:5255 +#: FlatCAMObj.py:5562 #, python-format msgid "[success] Machine Code file saved to: %s" msgstr "" -#: FlatCAMObj.py:5277 +#: FlatCAMObj.py:5584 #, python-format msgid "[ERROR]FlatCAMCNNJob.on_edit_code_click() -->%s" msgstr "" -#: FlatCAMObj.py:5394 +#: FlatCAMObj.py:5701 #, python-format msgid "" "[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " "CNCJob object." msgstr "" -#: FlatCAMObj.py:5447 +#: FlatCAMObj.py:5754 msgid "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21" msgstr "" -#: FlatCAMObj.py:5460 +#: FlatCAMObj.py:5767 msgid "" "[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " "empty." msgstr "" -#: FlatCAMObj.py:5467 +#: FlatCAMObj.py:5774 msgid "[success] Toolchange G-code was replaced by a custom code." msgstr "" -#: FlatCAMObj.py:5482 flatcamTools/ToolSolderPaste.py:1390 +#: FlatCAMObj.py:5789 flatcamTools/ToolSolderPaste.py:1390 msgid "[WARNING_NOTCL] No such file or directory" msgstr "" -#: FlatCAMObj.py:5501 FlatCAMObj.py:5513 +#: FlatCAMObj.py:5809 FlatCAMObj.py:5821 msgid "" "[WARNING_NOTCL] The used postprocessor file has to have in it's name: " "'toolchange_custom'" msgstr "" -#: FlatCAMObj.py:5519 +#: FlatCAMObj.py:5827 msgid "[ERROR] There is no postprocessor file." msgstr "" @@ -1305,67 +1337,79 @@ msgstr "" msgid "[ERROR_NOTCL] self.solid_geometry is neither BaseGeometry or list." msgstr "" -#: camlib.py:1389 +#: camlib.py:1390 msgid "[success] Object was mirrored ..." msgstr "" -#: camlib.py:1391 +#: camlib.py:1392 msgid "[ERROR_NOTCL] Failed to mirror. No object selected" msgstr "" -#: camlib.py:1427 +#: camlib.py:1428 msgid "[success] Object was rotated ..." msgstr "" -#: camlib.py:1429 +#: camlib.py:1430 msgid "[ERROR_NOTCL] Failed to rotate. No object selected" msgstr "" -#: camlib.py:1463 +#: camlib.py:1464 msgid "[success] Object was skewed ..." msgstr "" -#: camlib.py:1465 +#: camlib.py:1466 msgid "[ERROR_NOTCL] Failed to skew. No object selected" msgstr "" -#: camlib.py:2741 camlib.py:2847 +#: camlib.py:2728 camlib.py:2813 #, python-format msgid "[WARNING] Coordinates missing, line ignored: %s" msgstr "" -#: camlib.py:2742 camlib.py:2848 +#: camlib.py:2729 camlib.py:2814 msgid "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!" msgstr "" -#: camlib.py:2802 +#: camlib.py:2778 #, python-format msgid "" "[ERROR] Region does not have enough points. File will be processed but there " "are parser errors. Line number: %s" msgstr "" -#: camlib.py:3257 +#: camlib.py:3170 #, python-format msgid "" "[ERROR]Gerber Parser ERROR.\n" "%s:" msgstr "" -#: camlib.py:3474 +#: camlib.py:3392 msgid "[success] Gerber Scale done." msgstr "" -#: camlib.py:3531 +#: camlib.py:3458 msgid "[success] Gerber Offset done." msgstr "" -#: camlib.py:3925 +#: camlib.py:3512 +msgid "[success] Gerber Mirror done." +msgstr "" + +#: camlib.py:3558 +msgid "[success] Gerber Skew done." +msgstr "" + +#: camlib.py:3596 +msgid "[success] Gerber Rotate done." +msgstr "" + +#: camlib.py:3875 #, python-format msgid "[ERROR_NOTCL] This is GCODE mark: %s" msgstr "" -#: camlib.py:4039 +#: camlib.py:3989 #, python-format msgid "" "[WARNING] No tool diameter info's. See shell.\n" @@ -1376,26 +1420,26 @@ msgid "" "diameters to reflect the real diameters." msgstr "" -#: camlib.py:4504 +#: camlib.py:4454 #, python-brace-format msgid "" "[ERROR] Excellon Parser error.\n" "Parsing Failed. Line {l_nr}: {line}\n" msgstr "" -#: camlib.py:4581 +#: camlib.py:4531 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:5123 +#: camlib.py:5074 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "" -#: camlib.py:5193 +#: camlib.py:5144 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1404,27 +1448,27 @@ msgid "" "CNC code (Gcode etc)." msgstr "" -#: camlib.py:5200 camlib.py:5695 camlib.py:5966 +#: camlib.py:5151 camlib.py:5647 camlib.py:5910 #, python-format msgid "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" msgstr "" -#: camlib.py:5429 camlib.py:5526 camlib.py:5584 +#: camlib.py:5380 camlib.py:5477 camlib.py:5535 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "" -#: camlib.py:5531 +#: camlib.py:5482 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "" -#: camlib.py:5683 camlib.py:5954 +#: camlib.py:5635 camlib.py:5898 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." msgstr "" -#: camlib.py:5688 camlib.py:5959 +#: camlib.py:5640 camlib.py:5903 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1433,11 +1477,11 @@ msgid "" "code (Gcode etc)." msgstr "" -#: camlib.py:5700 camlib.py:5971 +#: camlib.py:5652 camlib.py:5915 msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." msgstr "" -#: camlib.py:5704 camlib.py:5975 +#: camlib.py:5656 camlib.py:5919 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1446,31 +1490,31 @@ msgid "" "code (Gcode etc)." msgstr "" -#: camlib.py:5711 camlib.py:5982 +#: camlib.py:5663 camlib.py:5926 #, python-format msgid "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" msgstr "" -#: camlib.py:5841 +#: camlib.py:5793 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "" -#: camlib.py:5847 +#: camlib.py:5799 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." msgstr "" -#: camlib.py:5886 +#: camlib.py:5838 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:6108 +#: camlib.py:6052 msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." msgstr "" @@ -1478,200 +1522,200 @@ msgstr "" msgid "[WARNING_NOTCL] To add a drill first select a tool" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:62 flatcamEditors/FlatCAMExcEditor.py:164 -#: flatcamEditors/FlatCAMExcEditor.py:446 -#: flatcamEditors/FlatCAMExcEditor.py:471 -#: flatcamEditors/FlatCAMGrbEditor.py:287 -#: flatcamEditors/FlatCAMGrbEditor.py:1454 -#: flatcamEditors/FlatCAMGrbEditor.py:1478 +#: flatcamEditors/FlatCAMExcEditor.py:62 flatcamEditors/FlatCAMExcEditor.py:165 +#: flatcamEditors/FlatCAMExcEditor.py:447 +#: flatcamEditors/FlatCAMExcEditor.py:472 +#: flatcamEditors/FlatCAMGrbEditor.py:451 +#: flatcamEditors/FlatCAMGrbEditor.py:1759 +#: flatcamEditors/FlatCAMGrbEditor.py:1787 msgid "Click on target location ..." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:107 +#: flatcamEditors/FlatCAMExcEditor.py:108 msgid "[success] Done. Drill added." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:149 +#: flatcamEditors/FlatCAMExcEditor.py:150 msgid "[WARNING_NOTCL] To add an Drill Array first select a tool in Tool Table" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:181 +#: flatcamEditors/FlatCAMExcEditor.py:182 msgid "Click on the Drill Circular Array Start position" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:203 -#: flatcamEditors/FlatCAMGrbEditor.py:330 +#: flatcamEditors/FlatCAMExcEditor.py:204 +#: flatcamEditors/FlatCAMGrbEditor.py:494 msgid "" "[ERROR_NOTCL] The value is not Float. Check for comma instead of dot " "separator." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:206 -#: flatcamEditors/FlatCAMGrbEditor.py:333 +#: flatcamEditors/FlatCAMExcEditor.py:207 +#: flatcamEditors/FlatCAMGrbEditor.py:497 msgid "[ERROR_NOTCL] The value is mistyped. Check the value." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:304 +#: flatcamEditors/FlatCAMExcEditor.py:305 msgid "[WARNING_NOTCL] Too many drills for the selected spacing angle." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:321 +#: flatcamEditors/FlatCAMExcEditor.py:322 msgid "[success] Done. Drill Array added." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:332 +#: flatcamEditors/FlatCAMExcEditor.py:333 msgid "Click on the Drill(s) to resize ..." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:352 +#: flatcamEditors/FlatCAMExcEditor.py:353 msgid "" "[ERROR_NOTCL] Resize drill(s) failed. Please enter a diameter for resize." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:422 +#: flatcamEditors/FlatCAMExcEditor.py:423 msgid "[success] Done. Drill Resize completed." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:425 +#: flatcamEditors/FlatCAMExcEditor.py:426 msgid "[WARNING_NOTCL] Cancelled. No drills selected for resize ..." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:448 -#: flatcamEditors/FlatCAMGrbEditor.py:1456 +#: flatcamEditors/FlatCAMExcEditor.py:449 +#: flatcamEditors/FlatCAMGrbEditor.py:1761 msgid "Click on reference location ..." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:503 +#: flatcamEditors/FlatCAMExcEditor.py:504 msgid "[success] Done. Drill(s) Move completed." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:556 +#: flatcamEditors/FlatCAMExcEditor.py:557 msgid "[success] Done. Drill(s) copied." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:754 +#: flatcamEditors/FlatCAMExcEditor.py:758 msgid "Excellon Editor" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:761 -#: flatcamEditors/FlatCAMGrbEditor.py:1715 +#: flatcamEditors/FlatCAMExcEditor.py:765 +#: flatcamEditors/FlatCAMGrbEditor.py:2108 msgid "Name:" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:767 flatcamTools/ToolNonCopperClear.py:72 +#: flatcamEditors/FlatCAMExcEditor.py:771 flatcamTools/ToolNonCopperClear.py:72 #: flatcamTools/ToolPaint.py:69 flatcamTools/ToolSolderPaste.py:70 msgid "Tools Table" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:769 flatcamGUI/ObjectUI.py:538 +#: flatcamEditors/FlatCAMExcEditor.py:773 flatcamGUI/ObjectUI.py:538 msgid "" "Tools in this Excellon object\n" "when are used for drilling." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:789 +#: flatcamEditors/FlatCAMExcEditor.py:793 msgid "Add/Delete Tool" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:791 +#: flatcamEditors/FlatCAMExcEditor.py:795 msgid "" "Add/Delete a tool to the tool list\n" "for this Excellon object." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:799 flatcamTools/ToolCutOut.py:77 +#: flatcamEditors/FlatCAMExcEditor.py:803 flatcamTools/ToolCutOut.py:77 msgid "Tool Dia:" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:801 flatcamGUI/ObjectUI.py:975 +#: flatcamEditors/FlatCAMExcEditor.py:805 flatcamGUI/ObjectUI.py:978 msgid "Diameter for the new tool" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:810 +#: flatcamEditors/FlatCAMExcEditor.py:814 msgid "Add Tool" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:812 +#: flatcamEditors/FlatCAMExcEditor.py:816 msgid "" "Add a new tool to the tool list\n" "with the diameter specified above." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:822 +#: flatcamEditors/FlatCAMExcEditor.py:826 msgid "Delete Tool" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:824 +#: flatcamEditors/FlatCAMExcEditor.py:828 msgid "" "Delete a tool in the tool list\n" "by selecting a row in the tool table." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:842 +#: flatcamEditors/FlatCAMExcEditor.py:846 msgid "Resize Drill(s)" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:844 +#: flatcamEditors/FlatCAMExcEditor.py:848 msgid "Resize a drill or a selection of drills." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:851 +#: flatcamEditors/FlatCAMExcEditor.py:855 msgid "Resize Dia:" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:853 +#: flatcamEditors/FlatCAMExcEditor.py:857 msgid "Diameter to resize to." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:861 +#: flatcamEditors/FlatCAMExcEditor.py:865 msgid "Resize" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:863 +#: flatcamEditors/FlatCAMExcEditor.py:867 msgid "Resize drill(s)" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:885 flatcamGUI/FlatCAMGUI.py:1598 +#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1612 msgid "Add Drill Array" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:887 +#: flatcamEditors/FlatCAMExcEditor.py:891 msgid "Add an array of drills (linear or circular array)" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:893 +#: flatcamEditors/FlatCAMExcEditor.py:897 msgid "" "Select the type of drills array to create.\n" "It can be Linear X(Y) or Circular" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:896 -#: flatcamEditors/FlatCAMGrbEditor.py:1948 +#: flatcamEditors/FlatCAMExcEditor.py:900 +#: flatcamEditors/FlatCAMGrbEditor.py:2341 msgid "Linear" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:897 -#: flatcamEditors/FlatCAMGrbEditor.py:1949 +#: flatcamEditors/FlatCAMExcEditor.py:901 +#: flatcamEditors/FlatCAMGrbEditor.py:2342 msgid "Circular" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:904 +#: flatcamEditors/FlatCAMExcEditor.py:908 msgid "Nr of drills:" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:906 +#: flatcamEditors/FlatCAMExcEditor.py:910 msgid "Specify how many drills to be in the array." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:923 -#: flatcamEditors/FlatCAMExcEditor.py:968 -#: flatcamEditors/FlatCAMGrbEditor.py:1975 -#: flatcamEditors/FlatCAMGrbEditor.py:2020 +#: flatcamEditors/FlatCAMExcEditor.py:927 +#: flatcamEditors/FlatCAMExcEditor.py:972 +#: flatcamEditors/FlatCAMGrbEditor.py:2368 +#: flatcamEditors/FlatCAMGrbEditor.py:2413 msgid "Direction:" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:925 -#: flatcamEditors/FlatCAMGrbEditor.py:1977 +#: flatcamEditors/FlatCAMExcEditor.py:929 +#: flatcamEditors/FlatCAMGrbEditor.py:2370 msgid "" "Direction on which the linear array is oriented:\n" "- 'X' - horizontal axis \n" @@ -1679,27 +1723,27 @@ msgid "" "- 'Angle' - a custom angle for the array inclination" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:938 -#: flatcamEditors/FlatCAMGrbEditor.py:1990 +#: flatcamEditors/FlatCAMExcEditor.py:942 +#: flatcamEditors/FlatCAMGrbEditor.py:2383 msgid "Pitch:" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:940 -#: flatcamEditors/FlatCAMGrbEditor.py:1992 +#: flatcamEditors/FlatCAMExcEditor.py:944 +#: flatcamEditors/FlatCAMGrbEditor.py:2385 msgid "Pitch = Distance between elements of the array." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:947 -#: flatcamEditors/FlatCAMExcEditor.py:983 -#: flatcamEditors/FlatCAMGeoEditor.py:664 -#: flatcamEditors/FlatCAMGrbEditor.py:1999 -#: flatcamEditors/FlatCAMGrbEditor.py:2035 -#: flatcamEditors/FlatCAMGrbEditor.py:3931 flatcamTools/ToolTransform.py:68 +#: flatcamEditors/FlatCAMExcEditor.py:951 +#: flatcamEditors/FlatCAMExcEditor.py:987 +#: flatcamEditors/FlatCAMGeoEditor.py:666 +#: flatcamEditors/FlatCAMGrbEditor.py:2392 +#: flatcamEditors/FlatCAMGrbEditor.py:2428 +#: flatcamEditors/FlatCAMGrbEditor.py:4414 flatcamTools/ToolTransform.py:68 msgid "Angle:" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:949 -#: flatcamEditors/FlatCAMGrbEditor.py:2001 +#: flatcamEditors/FlatCAMExcEditor.py:953 +#: flatcamEditors/FlatCAMGrbEditor.py:2394 msgid "" "Angle at which the linear array is placed.\n" "The precision is of max 2 decimals.\n" @@ -1707,76 +1751,76 @@ msgid "" "Max value is: 360.00 degrees." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:970 -#: flatcamEditors/FlatCAMGrbEditor.py:2022 +#: flatcamEditors/FlatCAMExcEditor.py:974 +#: flatcamEditors/FlatCAMGrbEditor.py:2415 msgid "" "Direction for circular array.Can be CW = clockwise or CCW = counter " "clockwise." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:985 -#: flatcamEditors/FlatCAMGrbEditor.py:2037 +#: flatcamEditors/FlatCAMExcEditor.py:989 +#: flatcamEditors/FlatCAMGrbEditor.py:2430 msgid "Angle at which each element in circular array is placed." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:1447 +#: flatcamEditors/FlatCAMExcEditor.py:1452 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:1456 flatcamGUI/FlatCAMGUI.py:2980 +#: flatcamEditors/FlatCAMExcEditor.py:1461 flatcamGUI/FlatCAMGUI.py:2995 #, python-brace-format msgid "[success] Added new tool with dia: {dia} {units}" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:1488 +#: flatcamEditors/FlatCAMExcEditor.py:1493 msgid "[WARNING_NOTCL] Select a tool in Tool Table" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:1521 +#: flatcamEditors/FlatCAMExcEditor.py:1526 #, python-brace-format msgid "[success] Deleted tool with dia: {del_dia} {units}" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:2032 +#: flatcamEditors/FlatCAMExcEditor.py:2038 msgid "" "[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon " "creation." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:2041 +#: flatcamEditors/FlatCAMExcEditor.py:2047 msgid "Creating Excellon." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:2050 +#: flatcamEditors/FlatCAMExcEditor.py:2056 msgid "[success] Excellon editing finished." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:2067 +#: flatcamEditors/FlatCAMExcEditor.py:2073 msgid "[WARNING_NOTCL] Cancelled. There is no Tool/Drill selected" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:2572 +#: flatcamEditors/FlatCAMExcEditor.py:2605 msgid "[success] Done. Drill(s) deleted." msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:2642 -#: flatcamEditors/FlatCAMGrbEditor.py:3719 +#: flatcamEditors/FlatCAMExcEditor.py:2675 +#: flatcamEditors/FlatCAMGrbEditor.py:4174 msgid "Click on the circular array Center position" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:78 -#: flatcamEditors/FlatCAMGrbEditor.py:1865 +#: flatcamEditors/FlatCAMGeoEditor.py:80 +#: flatcamEditors/FlatCAMGrbEditor.py:2258 msgid "Buffer distance:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:79 -#: flatcamEditors/FlatCAMGrbEditor.py:1866 +#: flatcamEditors/FlatCAMGeoEditor.py:81 +#: flatcamEditors/FlatCAMGrbEditor.py:2259 msgid "Buffer corner:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:81 +#: flatcamEditors/FlatCAMGeoEditor.py:83 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded for exterior buffer.\n" @@ -1785,77 +1829,77 @@ msgid "" "meeting in the corner" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:87 -#: flatcamEditors/FlatCAMGrbEditor.py:1874 +#: flatcamEditors/FlatCAMGeoEditor.py:89 +#: flatcamEditors/FlatCAMGrbEditor.py:2267 msgid "Round" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:88 -#: flatcamEditors/FlatCAMGrbEditor.py:1875 +#: flatcamEditors/FlatCAMGeoEditor.py:90 +#: flatcamEditors/FlatCAMGrbEditor.py:2268 msgid "Square" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:89 -#: flatcamEditors/FlatCAMGrbEditor.py:1876 +#: flatcamEditors/FlatCAMGeoEditor.py:91 +#: flatcamEditors/FlatCAMGrbEditor.py:2269 msgid "Beveled" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:96 +#: flatcamEditors/FlatCAMGeoEditor.py:98 msgid "Buffer Interior" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:98 +#: flatcamEditors/FlatCAMGeoEditor.py:100 msgid "Buffer Exterior" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:104 +#: flatcamEditors/FlatCAMGeoEditor.py:106 msgid "Full Buffer" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:125 -#: flatcamEditors/FlatCAMGeoEditor.py:2609 +#: flatcamEditors/FlatCAMGeoEditor.py:127 +#: flatcamEditors/FlatCAMGeoEditor.py:2696 msgid "Buffer Tool" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:136 -#: flatcamEditors/FlatCAMGeoEditor.py:153 -#: flatcamEditors/FlatCAMGeoEditor.py:170 -#: flatcamEditors/FlatCAMGeoEditor.py:2627 -#: flatcamEditors/FlatCAMGeoEditor.py:2653 -#: flatcamEditors/FlatCAMGeoEditor.py:2679 -#: flatcamEditors/FlatCAMGrbEditor.py:3771 +#: flatcamEditors/FlatCAMGeoEditor.py:138 +#: flatcamEditors/FlatCAMGeoEditor.py:155 +#: flatcamEditors/FlatCAMGeoEditor.py:172 +#: flatcamEditors/FlatCAMGeoEditor.py:2714 +#: flatcamEditors/FlatCAMGeoEditor.py:2740 +#: flatcamEditors/FlatCAMGeoEditor.py:2766 +#: flatcamEditors/FlatCAMGrbEditor.py:4226 msgid "" "[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and " "retry." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:341 +#: flatcamEditors/FlatCAMGeoEditor.py:343 msgid "Text Tool" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:399 flatcamGUI/FlatCAMGUI.py:792 +#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:805 msgid "Tool" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:430 flatcamGUI/FlatCAMGUI.py:3996 -#: flatcamGUI/FlatCAMGUI.py:5202 flatcamGUI/FlatCAMGUI.py:5478 -#: flatcamGUI/FlatCAMGUI.py:5618 flatcamGUI/ObjectUI.py:260 +#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4051 +#: flatcamGUI/FlatCAMGUI.py:5448 flatcamGUI/FlatCAMGUI.py:5724 +#: flatcamGUI/FlatCAMGUI.py:5864 flatcamGUI/ObjectUI.py:260 msgid "Tool dia:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:5620 +#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5866 msgid "" "Diameter of the tool to\n" "be used in the operation." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:441 flatcamGUI/FlatCAMGUI.py:5384 -#: flatcamGUI/FlatCAMGUI.py:5629 flatcamTools/ToolNonCopperClear.py:165 +#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5630 +#: flatcamGUI/FlatCAMGUI.py:5875 flatcamTools/ToolNonCopperClear.py:165 #: flatcamTools/ToolPaint.py:160 msgid "Overlap Rate:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamTools/ToolPaint.py:162 +#: flatcamEditors/FlatCAMGeoEditor.py:445 flatcamTools/ToolPaint.py:162 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -1870,14 +1914,14 @@ msgid "" "due of too many paths." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:459 flatcamGUI/FlatCAMGUI.py:5400 -#: flatcamGUI/FlatCAMGUI.py:5486 flatcamGUI/FlatCAMGUI.py:5639 +#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5646 +#: flatcamGUI/FlatCAMGUI.py:5732 flatcamGUI/FlatCAMGUI.py:5885 #: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:181 #: flatcamTools/ToolPaint.py:177 msgid "Margin:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5641 +#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5887 #: flatcamTools/ToolPaint.py:179 msgid "" "Distance by which to avoid\n" @@ -1885,136 +1929,136 @@ msgid "" "be painted." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:470 flatcamGUI/FlatCAMGUI.py:5409 -#: flatcamGUI/FlatCAMGUI.py:5650 flatcamTools/ToolNonCopperClear.py:190 +#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5655 +#: flatcamGUI/FlatCAMGUI.py:5896 flatcamTools/ToolNonCopperClear.py:190 #: flatcamTools/ToolPaint.py:188 msgid "Method:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5652 +#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5898 msgid "" "Algorithm to paint the polygon:
Standard: Fixed step inwards." "
Seed-based: Outwards from seed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:485 flatcamGUI/FlatCAMGUI.py:5425 -#: flatcamGUI/FlatCAMGUI.py:5665 flatcamTools/ToolNonCopperClear.py:206 +#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5671 +#: flatcamGUI/FlatCAMGUI.py:5911 flatcamTools/ToolNonCopperClear.py:206 #: flatcamTools/ToolPaint.py:204 msgid "Connect:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5427 -#: flatcamGUI/FlatCAMGUI.py:5667 flatcamTools/ToolNonCopperClear.py:208 +#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5673 +#: flatcamGUI/FlatCAMGUI.py:5913 flatcamTools/ToolNonCopperClear.py:208 #: flatcamTools/ToolPaint.py:206 msgid "" "Draw lines between resulting\n" "segments to minimize tool lifts." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:494 flatcamGUI/FlatCAMGUI.py:5434 -#: flatcamGUI/FlatCAMGUI.py:5675 flatcamTools/ToolNonCopperClear.py:215 +#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5680 +#: flatcamGUI/FlatCAMGUI.py:5921 flatcamTools/ToolNonCopperClear.py:215 #: flatcamTools/ToolPaint.py:213 msgid "Contour:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5436 -#: flatcamGUI/FlatCAMGUI.py:5677 flatcamTools/ToolNonCopperClear.py:217 +#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5682 +#: flatcamGUI/FlatCAMGUI.py:5923 flatcamTools/ToolNonCopperClear.py:217 #: flatcamTools/ToolPaint.py:215 msgid "" "Cut around the perimeter of the polygon\n" "to trim rough edges." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:508 +#: flatcamEditors/FlatCAMGeoEditor.py:510 msgid "Paint" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:526 flatcamGUI/FlatCAMGUI.py:635 -#: flatcamGUI/FlatCAMGUI.py:1851 flatcamGUI/ObjectUI.py:1308 +#: flatcamEditors/FlatCAMGeoEditor.py:528 flatcamGUI/FlatCAMGUI.py:648 +#: flatcamGUI/FlatCAMGUI.py:1865 flatcamGUI/ObjectUI.py:1314 #: flatcamTools/ToolPaint.py:341 msgid "Paint Tool" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:562 +#: flatcamEditors/FlatCAMGeoEditor.py:564 msgid "[WARNING_NOTCL] Paint cancelled. No shape selected." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:573 flatcamTools/ToolCutOut.py:352 -#: flatcamTools/ToolCutOut.py:496 flatcamTools/ToolCutOut.py:616 -#: flatcamTools/ToolCutOut.py:721 flatcamTools/ToolDblSided.py:363 +#: flatcamEditors/FlatCAMGeoEditor.py:575 flatcamTools/ToolCutOut.py:355 +#: flatcamTools/ToolCutOut.py:512 flatcamTools/ToolCutOut.py:651 +#: flatcamTools/ToolCutOut.py:756 flatcamTools/ToolDblSided.py:363 msgid "" "[WARNING_NOTCL] Tool diameter value is missing or wrong format. Add it and " "retry." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:584 +#: flatcamEditors/FlatCAMGeoEditor.py:586 msgid "" "[WARNING_NOTCL] Overlap value is missing or wrong format. Add it and retry." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:596 +#: flatcamEditors/FlatCAMGeoEditor.py:598 msgid "" "[WARNING_NOTCL] Margin distance value is missing or wrong format. Add it and " "retry." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:605 -#: flatcamEditors/FlatCAMGeoEditor.py:2634 -#: flatcamEditors/FlatCAMGeoEditor.py:2660 -#: flatcamEditors/FlatCAMGeoEditor.py:2686 +#: flatcamEditors/FlatCAMGeoEditor.py:607 +#: flatcamEditors/FlatCAMGeoEditor.py:2721 +#: flatcamEditors/FlatCAMGeoEditor.py:2747 +#: flatcamEditors/FlatCAMGeoEditor.py:2773 #: flatcamTools/ToolNonCopperClear.py:813 flatcamTools/ToolProperties.py:104 msgid "Tools" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:616 -#: flatcamEditors/FlatCAMGeoEditor.py:989 -#: flatcamEditors/FlatCAMGrbEditor.py:3883 -#: flatcamEditors/FlatCAMGrbEditor.py:4267 flatcamGUI/FlatCAMGUI.py:646 -#: flatcamGUI/FlatCAMGUI.py:1864 flatcamTools/ToolTransform.py:398 +#: flatcamEditors/FlatCAMGeoEditor.py:618 +#: flatcamEditors/FlatCAMGeoEditor.py:991 +#: flatcamEditors/FlatCAMGrbEditor.py:4365 +#: flatcamEditors/FlatCAMGrbEditor.py:4750 flatcamGUI/FlatCAMGUI.py:659 +#: flatcamGUI/FlatCAMGUI.py:1878 flatcamTools/ToolTransform.py:398 msgid "Transform Tool" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:617 -#: flatcamEditors/FlatCAMGeoEditor.py:678 -#: flatcamEditors/FlatCAMGrbEditor.py:3884 -#: flatcamEditors/FlatCAMGrbEditor.py:3945 flatcamTools/ToolTransform.py:24 +#: flatcamEditors/FlatCAMGeoEditor.py:619 +#: flatcamEditors/FlatCAMGeoEditor.py:680 +#: flatcamEditors/FlatCAMGrbEditor.py:4366 +#: flatcamEditors/FlatCAMGrbEditor.py:4428 flatcamTools/ToolTransform.py:24 #: flatcamTools/ToolTransform.py:82 msgid "Rotate" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:618 -#: flatcamEditors/FlatCAMGrbEditor.py:3885 flatcamTools/ToolTransform.py:25 +#: flatcamEditors/FlatCAMGeoEditor.py:620 +#: flatcamEditors/FlatCAMGrbEditor.py:4367 flatcamTools/ToolTransform.py:25 msgid "Skew/Shear" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:619 -#: flatcamEditors/FlatCAMGrbEditor.py:1920 -#: flatcamEditors/FlatCAMGrbEditor.py:3886 flatcamGUI/FlatCAMGUI.py:709 -#: flatcamGUI/FlatCAMGUI.py:1930 flatcamGUI/ObjectUI.py:100 +#: flatcamEditors/FlatCAMGeoEditor.py:621 +#: flatcamEditors/FlatCAMGrbEditor.py:2313 +#: flatcamEditors/FlatCAMGrbEditor.py:4368 flatcamGUI/FlatCAMGUI.py:722 +#: flatcamGUI/FlatCAMGUI.py:1944 flatcamGUI/ObjectUI.py:100 #: flatcamTools/ToolTransform.py:26 msgid "Scale" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:620 -#: flatcamEditors/FlatCAMGrbEditor.py:3887 flatcamTools/ToolTransform.py:27 +#: flatcamEditors/FlatCAMGeoEditor.py:622 +#: flatcamEditors/FlatCAMGrbEditor.py:4369 flatcamTools/ToolTransform.py:27 msgid "Mirror (Flip)" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:621 -#: flatcamEditors/FlatCAMGrbEditor.py:3888 flatcamGUI/ObjectUI.py:127 -#: flatcamGUI/ObjectUI.py:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamEditors/FlatCAMGeoEditor.py:623 +#: flatcamEditors/FlatCAMGrbEditor.py:4370 flatcamGUI/ObjectUI.py:127 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 #: flatcamTools/ToolTransform.py:28 msgid "Offset" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:632 -#: flatcamEditors/FlatCAMGrbEditor.py:3899 +#: flatcamEditors/FlatCAMGeoEditor.py:634 +#: flatcamEditors/FlatCAMGrbEditor.py:4382 #, python-format msgid "Editor %s" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:666 -#: flatcamEditors/FlatCAMGrbEditor.py:3933 flatcamTools/ToolTransform.py:70 +#: flatcamEditors/FlatCAMGeoEditor.py:668 +#: flatcamEditors/FlatCAMGrbEditor.py:4416 flatcamTools/ToolTransform.py:70 msgid "" "Angle for Rotation action, in degrees.\n" "Float number between -360 and 359.\n" @@ -2022,115 +2066,115 @@ msgid "" "Negative numbers for CCW motion." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:680 -#: flatcamEditors/FlatCAMGrbEditor.py:3947 +#: flatcamEditors/FlatCAMGeoEditor.py:682 +#: flatcamEditors/FlatCAMGrbEditor.py:4430 msgid "" "Rotate the selected shape(s).\n" "The point of reference is the middle of\n" "the bounding box for all selected shapes." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:703 -#: flatcamEditors/FlatCAMGrbEditor.py:3970 flatcamTools/ToolTransform.py:107 +#: flatcamEditors/FlatCAMGeoEditor.py:705 +#: flatcamEditors/FlatCAMGrbEditor.py:4453 flatcamTools/ToolTransform.py:107 msgid "Angle X:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:705 -#: flatcamEditors/FlatCAMGeoEditor.py:723 -#: flatcamEditors/FlatCAMGrbEditor.py:3972 -#: flatcamEditors/FlatCAMGrbEditor.py:3990 flatcamTools/ToolTransform.py:109 +#: flatcamEditors/FlatCAMGeoEditor.py:707 +#: flatcamEditors/FlatCAMGeoEditor.py:725 +#: flatcamEditors/FlatCAMGrbEditor.py:4455 +#: flatcamEditors/FlatCAMGrbEditor.py:4473 flatcamTools/ToolTransform.py:109 #: flatcamTools/ToolTransform.py:127 msgid "" "Angle for Skew action, in degrees.\n" "Float number between -360 and 359." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:714 -#: flatcamEditors/FlatCAMGrbEditor.py:3981 flatcamTools/ToolTransform.py:118 +#: flatcamEditors/FlatCAMGeoEditor.py:716 +#: flatcamEditors/FlatCAMGrbEditor.py:4464 flatcamTools/ToolTransform.py:118 msgid "Skew X" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:716 -#: flatcamEditors/FlatCAMGeoEditor.py:734 -#: flatcamEditors/FlatCAMGrbEditor.py:3983 -#: flatcamEditors/FlatCAMGrbEditor.py:4001 +#: flatcamEditors/FlatCAMGeoEditor.py:718 +#: flatcamEditors/FlatCAMGeoEditor.py:736 +#: flatcamEditors/FlatCAMGrbEditor.py:4466 +#: flatcamEditors/FlatCAMGrbEditor.py:4484 msgid "" "Skew/shear the selected shape(s).\n" "The point of reference is the middle of\n" "the bounding box for all selected shapes." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:721 -#: flatcamEditors/FlatCAMGrbEditor.py:3988 flatcamTools/ToolTransform.py:125 +#: flatcamEditors/FlatCAMGeoEditor.py:723 +#: flatcamEditors/FlatCAMGrbEditor.py:4471 flatcamTools/ToolTransform.py:125 msgid "Angle Y:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:732 -#: flatcamEditors/FlatCAMGrbEditor.py:3999 flatcamTools/ToolTransform.py:136 +#: flatcamEditors/FlatCAMGeoEditor.py:734 +#: flatcamEditors/FlatCAMGrbEditor.py:4482 flatcamTools/ToolTransform.py:136 msgid "Skew Y" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:760 -#: flatcamEditors/FlatCAMGrbEditor.py:4027 flatcamTools/ToolTransform.py:164 +#: flatcamEditors/FlatCAMGeoEditor.py:762 +#: flatcamEditors/FlatCAMGrbEditor.py:4510 flatcamTools/ToolTransform.py:164 msgid "Factor X:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:762 -#: flatcamEditors/FlatCAMGrbEditor.py:4029 flatcamTools/ToolTransform.py:166 +#: flatcamEditors/FlatCAMGeoEditor.py:764 +#: flatcamEditors/FlatCAMGrbEditor.py:4512 flatcamTools/ToolTransform.py:166 msgid "Factor for Scale action over X axis." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:770 -#: flatcamEditors/FlatCAMGrbEditor.py:4037 flatcamTools/ToolTransform.py:174 +#: flatcamEditors/FlatCAMGeoEditor.py:772 +#: flatcamEditors/FlatCAMGrbEditor.py:4520 flatcamTools/ToolTransform.py:174 msgid "Scale X" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:772 -#: flatcamEditors/FlatCAMGeoEditor.py:789 -#: flatcamEditors/FlatCAMGrbEditor.py:4039 -#: flatcamEditors/FlatCAMGrbEditor.py:4056 +#: flatcamEditors/FlatCAMGeoEditor.py:774 +#: flatcamEditors/FlatCAMGeoEditor.py:791 +#: flatcamEditors/FlatCAMGrbEditor.py:4522 +#: flatcamEditors/FlatCAMGrbEditor.py:4539 msgid "" "Scale the selected shape(s).\n" "The point of reference depends on \n" "the Scale reference checkbox state." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:777 -#: flatcamEditors/FlatCAMGrbEditor.py:4044 flatcamTools/ToolTransform.py:181 +#: flatcamEditors/FlatCAMGeoEditor.py:779 +#: flatcamEditors/FlatCAMGrbEditor.py:4527 flatcamTools/ToolTransform.py:181 msgid "Factor Y:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:779 -#: flatcamEditors/FlatCAMGrbEditor.py:4046 flatcamTools/ToolTransform.py:183 +#: flatcamEditors/FlatCAMGeoEditor.py:781 +#: flatcamEditors/FlatCAMGrbEditor.py:4529 flatcamTools/ToolTransform.py:183 msgid "Factor for Scale action over Y axis." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:787 -#: flatcamEditors/FlatCAMGrbEditor.py:4054 flatcamTools/ToolTransform.py:191 +#: flatcamEditors/FlatCAMGeoEditor.py:789 +#: flatcamEditors/FlatCAMGrbEditor.py:4537 flatcamTools/ToolTransform.py:191 msgid "Scale Y" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:796 -#: flatcamEditors/FlatCAMGrbEditor.py:4063 flatcamGUI/FlatCAMGUI.py:6024 +#: flatcamEditors/FlatCAMGeoEditor.py:798 +#: flatcamEditors/FlatCAMGrbEditor.py:4546 flatcamGUI/FlatCAMGUI.py:6270 #: flatcamTools/ToolTransform.py:200 msgid "Link" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:798 -#: flatcamEditors/FlatCAMGrbEditor.py:4065 +#: flatcamEditors/FlatCAMGeoEditor.py:800 +#: flatcamEditors/FlatCAMGrbEditor.py:4548 msgid "" "Scale the selected shape(s)\n" "using the Scale Factor X for both axis." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:804 -#: flatcamEditors/FlatCAMGrbEditor.py:4071 flatcamGUI/FlatCAMGUI.py:6032 +#: flatcamEditors/FlatCAMGeoEditor.py:806 +#: flatcamEditors/FlatCAMGrbEditor.py:4554 flatcamGUI/FlatCAMGUI.py:6278 #: flatcamTools/ToolTransform.py:208 msgid "Scale Reference" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:806 -#: flatcamEditors/FlatCAMGrbEditor.py:4073 +#: flatcamEditors/FlatCAMGeoEditor.py:808 +#: flatcamEditors/FlatCAMGrbEditor.py:4556 msgid "" "Scale the selected shape(s)\n" "using the origin reference when checked,\n" @@ -2138,72 +2182,72 @@ msgid "" "of the selected shapes when unchecked." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:834 -#: flatcamEditors/FlatCAMGrbEditor.py:4102 flatcamTools/ToolTransform.py:238 +#: flatcamEditors/FlatCAMGeoEditor.py:836 +#: flatcamEditors/FlatCAMGrbEditor.py:4585 flatcamTools/ToolTransform.py:238 msgid "Value X:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:836 -#: flatcamEditors/FlatCAMGrbEditor.py:4104 flatcamTools/ToolTransform.py:240 +#: flatcamEditors/FlatCAMGeoEditor.py:838 +#: flatcamEditors/FlatCAMGrbEditor.py:4587 flatcamTools/ToolTransform.py:240 msgid "Value for Offset action on X axis." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:844 -#: flatcamEditors/FlatCAMGrbEditor.py:4112 flatcamTools/ToolTransform.py:248 +#: flatcamEditors/FlatCAMGeoEditor.py:846 +#: flatcamEditors/FlatCAMGrbEditor.py:4595 flatcamTools/ToolTransform.py:248 msgid "Offset X" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:846 -#: flatcamEditors/FlatCAMGeoEditor.py:864 -#: flatcamEditors/FlatCAMGrbEditor.py:4114 -#: flatcamEditors/FlatCAMGrbEditor.py:4132 +#: flatcamEditors/FlatCAMGeoEditor.py:848 +#: flatcamEditors/FlatCAMGeoEditor.py:866 +#: flatcamEditors/FlatCAMGrbEditor.py:4597 +#: flatcamEditors/FlatCAMGrbEditor.py:4615 msgid "" "Offset the selected shape(s).\n" "The point of reference is the middle of\n" "the bounding box for all selected shapes.\n" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:852 -#: flatcamEditors/FlatCAMGrbEditor.py:4120 flatcamTools/ToolTransform.py:255 +#: flatcamEditors/FlatCAMGeoEditor.py:854 +#: flatcamEditors/FlatCAMGrbEditor.py:4603 flatcamTools/ToolTransform.py:255 msgid "Value Y:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:854 -#: flatcamEditors/FlatCAMGrbEditor.py:4122 flatcamTools/ToolTransform.py:257 +#: flatcamEditors/FlatCAMGeoEditor.py:856 +#: flatcamEditors/FlatCAMGrbEditor.py:4605 flatcamTools/ToolTransform.py:257 msgid "Value for Offset action on Y axis." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:862 -#: flatcamEditors/FlatCAMGrbEditor.py:4130 flatcamTools/ToolTransform.py:265 +#: flatcamEditors/FlatCAMGeoEditor.py:864 +#: flatcamEditors/FlatCAMGrbEditor.py:4613 flatcamTools/ToolTransform.py:265 msgid "Offset Y" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:893 -#: flatcamEditors/FlatCAMGrbEditor.py:4161 flatcamTools/ToolTransform.py:295 +#: flatcamEditors/FlatCAMGeoEditor.py:895 +#: flatcamEditors/FlatCAMGrbEditor.py:4644 flatcamTools/ToolTransform.py:295 msgid "Flip on X" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:895 -#: flatcamEditors/FlatCAMGeoEditor.py:903 -#: flatcamEditors/FlatCAMGrbEditor.py:4163 -#: flatcamEditors/FlatCAMGrbEditor.py:4171 +#: flatcamEditors/FlatCAMGeoEditor.py:897 +#: flatcamEditors/FlatCAMGeoEditor.py:905 +#: flatcamEditors/FlatCAMGrbEditor.py:4646 +#: flatcamEditors/FlatCAMGrbEditor.py:4654 msgid "" "Flip the selected shape(s) over the X axis.\n" "Does not create a new shape." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:901 -#: flatcamEditors/FlatCAMGrbEditor.py:4169 flatcamTools/ToolTransform.py:303 +#: flatcamEditors/FlatCAMGeoEditor.py:903 +#: flatcamEditors/FlatCAMGrbEditor.py:4652 flatcamTools/ToolTransform.py:303 msgid "Flip on Y" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:910 -#: flatcamEditors/FlatCAMGrbEditor.py:4178 flatcamTools/ToolTransform.py:312 +#: flatcamEditors/FlatCAMGeoEditor.py:912 +#: flatcamEditors/FlatCAMGrbEditor.py:4661 flatcamTools/ToolTransform.py:312 msgid "Ref Pt" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:912 -#: flatcamEditors/FlatCAMGrbEditor.py:4180 +#: flatcamEditors/FlatCAMGeoEditor.py:914 +#: flatcamEditors/FlatCAMGrbEditor.py:4663 msgid "" "Flip the selected shape(s)\n" "around the point in Point Entry Field.\n" @@ -2216,273 +2260,269 @@ msgid "" "Point Entry field and click Flip on X(Y)" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:924 -#: flatcamEditors/FlatCAMGrbEditor.py:4192 flatcamTools/ToolTransform.py:325 +#: flatcamEditors/FlatCAMGeoEditor.py:926 +#: flatcamEditors/FlatCAMGrbEditor.py:4675 flatcamTools/ToolTransform.py:325 msgid "Point:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:926 -#: flatcamEditors/FlatCAMGrbEditor.py:4194 +#: flatcamEditors/FlatCAMGeoEditor.py:928 +#: flatcamEditors/FlatCAMGrbEditor.py:4677 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." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:938 -#: flatcamEditors/FlatCAMGrbEditor.py:4206 flatcamTools/ToolTransform.py:339 +#: flatcamEditors/FlatCAMGeoEditor.py:940 +#: flatcamEditors/FlatCAMGrbEditor.py:4689 flatcamTools/ToolTransform.py:339 msgid "" "The point coordinates can be captured by\n" "left click on canvas together with pressing\n" "SHIFT key. Then click Add button to insert." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1053 -#: flatcamEditors/FlatCAMGrbEditor.py:4331 +#: flatcamEditors/FlatCAMGeoEditor.py:1055 +#: flatcamEditors/FlatCAMGrbEditor.py:4814 msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1074 -#: flatcamEditors/FlatCAMGrbEditor.py:4351 flatcamTools/ToolTransform.py:468 +#: flatcamEditors/FlatCAMGeoEditor.py:1076 +#: flatcamEditors/FlatCAMGrbEditor.py:4834 flatcamTools/ToolTransform.py:468 msgid "[ERROR_NOTCL] Wrong value format entered for Rotate, use a number." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1111 -#: flatcamEditors/FlatCAMGrbEditor.py:4388 flatcamTools/ToolTransform.py:502 +#: flatcamEditors/FlatCAMGeoEditor.py:1113 +#: flatcamEditors/FlatCAMGrbEditor.py:4877 flatcamTools/ToolTransform.py:502 msgid "[ERROR_NOTCL] Wrong value format entered for Skew X, use a number." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1132 -#: flatcamEditors/FlatCAMGrbEditor.py:4409 flatcamTools/ToolTransform.py:520 +#: flatcamEditors/FlatCAMGeoEditor.py:1134 +#: flatcamEditors/FlatCAMGrbEditor.py:4904 flatcamTools/ToolTransform.py:520 msgid "[ERROR_NOTCL] Wrong value format entered for Skew Y, use a number." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1153 -#: flatcamEditors/FlatCAMGrbEditor.py:4430 flatcamTools/ToolTransform.py:538 +#: flatcamEditors/FlatCAMGeoEditor.py:1155 +#: flatcamEditors/FlatCAMGrbEditor.py:4931 flatcamTools/ToolTransform.py:538 msgid "[ERROR_NOTCL] Wrong value format entered for Scale X, use a number." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1190 -#: flatcamEditors/FlatCAMGrbEditor.py:4467 flatcamTools/ToolTransform.py:572 +#: flatcamEditors/FlatCAMGeoEditor.py:1192 +#: flatcamEditors/FlatCAMGrbEditor.py:4972 flatcamTools/ToolTransform.py:572 msgid "[ERROR_NOTCL] Wrong value format entered for Scale Y, use a number." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1222 -#: flatcamEditors/FlatCAMGrbEditor.py:4499 flatcamTools/ToolTransform.py:601 +#: flatcamEditors/FlatCAMGeoEditor.py:1224 +#: flatcamEditors/FlatCAMGrbEditor.py:5010 flatcamTools/ToolTransform.py:601 msgid "[ERROR_NOTCL] Wrong value format entered for Offset X, use a number." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1243 -#: flatcamEditors/FlatCAMGrbEditor.py:4520 flatcamTools/ToolTransform.py:619 +#: flatcamEditors/FlatCAMGeoEditor.py:1245 +#: flatcamEditors/FlatCAMGrbEditor.py:5036 flatcamTools/ToolTransform.py:619 msgid "[ERROR_NOTCL] Wrong value format entered for Offset Y, use a number." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1261 -#: flatcamEditors/FlatCAMGrbEditor.py:4538 +#: flatcamEditors/FlatCAMGeoEditor.py:1263 +#: flatcamEditors/FlatCAMGrbEditor.py:5059 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1264 -#: flatcamEditors/FlatCAMGrbEditor.py:4541 flatcamTools/ToolTransform.py:640 +#: flatcamEditors/FlatCAMGeoEditor.py:1266 +#: flatcamEditors/FlatCAMGrbEditor.py:5062 flatcamTools/ToolTransform.py:640 msgid "Appying Rotate" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1292 -#: flatcamEditors/FlatCAMGrbEditor.py:4569 +#: flatcamEditors/FlatCAMGeoEditor.py:1294 +#: flatcamEditors/FlatCAMGrbEditor.py:5093 msgid "[success] Done. Rotate completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1308 -#: flatcamEditors/FlatCAMGrbEditor.py:4585 +#: flatcamEditors/FlatCAMGeoEditor.py:1310 +#: flatcamEditors/FlatCAMGrbEditor.py:5112 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to flip!" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1311 -#: flatcamEditors/FlatCAMGrbEditor.py:4588 flatcamTools/ToolTransform.py:692 +#: flatcamEditors/FlatCAMGeoEditor.py:1313 +#: flatcamEditors/FlatCAMGrbEditor.py:5115 flatcamTools/ToolTransform.py:691 msgid "Applying Flip" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1341 -#: flatcamEditors/FlatCAMGrbEditor.py:4618 flatcamTools/ToolTransform.py:735 +#: flatcamEditors/FlatCAMGeoEditor.py:1343 +#: flatcamEditors/FlatCAMGrbEditor.py:5152 flatcamTools/ToolTransform.py:733 msgid "[success] Flip on the Y axis done ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1344 -#: flatcamEditors/FlatCAMGrbEditor.py:4621 flatcamTools/ToolTransform.py:745 +#: flatcamEditors/FlatCAMGeoEditor.py:1346 +#: flatcamEditors/FlatCAMGrbEditor.py:5160 flatcamTools/ToolTransform.py:742 msgid "[success] Flip on the X axis done ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1363 -#: flatcamEditors/FlatCAMGrbEditor.py:4640 +#: flatcamEditors/FlatCAMGeoEditor.py:1365 +#: flatcamEditors/FlatCAMGrbEditor.py:5180 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1366 -#: flatcamEditors/FlatCAMGrbEditor.py:4643 flatcamTools/ToolTransform.py:762 +#: flatcamEditors/FlatCAMGeoEditor.py:1368 +#: flatcamEditors/FlatCAMGrbEditor.py:5183 flatcamTools/ToolTransform.py:760 msgid "Applying Skew" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1391 -#: flatcamEditors/FlatCAMGrbEditor.py:4668 flatcamTools/ToolTransform.py:793 +#: flatcamEditors/FlatCAMGeoEditor.py:1393 +#: flatcamEditors/FlatCAMGrbEditor.py:5216 flatcamTools/ToolTransform.py:791 #, python-format msgid "[success] Skew on the %s axis done ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1395 -#: flatcamEditors/FlatCAMGrbEditor.py:4672 flatcamTools/ToolTransform.py:797 +#: flatcamEditors/FlatCAMGeoEditor.py:1397 +#: flatcamEditors/FlatCAMGrbEditor.py:5220 flatcamTools/ToolTransform.py:795 #, python-format msgid "[ERROR_NOTCL] Due of %s, Skew action was not executed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1406 -#: flatcamEditors/FlatCAMGrbEditor.py:4683 +#: flatcamEditors/FlatCAMGeoEditor.py:1408 +#: flatcamEditors/FlatCAMGrbEditor.py:5239 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to scale!" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1409 -#: flatcamEditors/FlatCAMGrbEditor.py:4686 flatcamTools/ToolTransform.py:811 +#: flatcamEditors/FlatCAMGeoEditor.py:1411 +#: flatcamEditors/FlatCAMGrbEditor.py:5242 flatcamTools/ToolTransform.py:809 msgid "Applying Scale" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1442 -#: flatcamEditors/FlatCAMGrbEditor.py:4719 flatcamTools/ToolTransform.py:849 +#: flatcamEditors/FlatCAMGeoEditor.py:1444 +#: flatcamEditors/FlatCAMGrbEditor.py:5278 flatcamTools/ToolTransform.py:848 #, python-format msgid "[success] Scale on the %s axis done ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1445 -#: flatcamEditors/FlatCAMGrbEditor.py:4722 flatcamTools/ToolTransform.py:852 +#: flatcamEditors/FlatCAMGeoEditor.py:1447 +#: flatcamEditors/FlatCAMGrbEditor.py:5281 flatcamTools/ToolTransform.py:851 #, python-format msgid "[ERROR_NOTCL] Due of %s, Scale action was not executed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1454 -#: flatcamEditors/FlatCAMGrbEditor.py:4731 +#: flatcamEditors/FlatCAMGeoEditor.py:1456 +#: flatcamEditors/FlatCAMGrbEditor.py:5294 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to offset!" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1457 -#: flatcamEditors/FlatCAMGrbEditor.py:4734 flatcamTools/ToolTransform.py:864 +#: flatcamEditors/FlatCAMGeoEditor.py:1459 +#: flatcamEditors/FlatCAMGrbEditor.py:5297 flatcamTools/ToolTransform.py:861 msgid "Applying Offset" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1481 -#: flatcamEditors/FlatCAMGrbEditor.py:4758 flatcamTools/ToolTransform.py:894 +#: flatcamEditors/FlatCAMGeoEditor.py:1483 +#: flatcamEditors/FlatCAMGrbEditor.py:5318 flatcamTools/ToolTransform.py:880 #, python-format msgid "[success] Offset on the %s axis done ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1485 -#: flatcamEditors/FlatCAMGrbEditor.py:4762 flatcamTools/ToolTransform.py:898 +#: flatcamEditors/FlatCAMGeoEditor.py:1487 +#: flatcamEditors/FlatCAMGrbEditor.py:5322 flatcamTools/ToolTransform.py:884 #, python-format msgid "[ERROR_NOTCL] Due of %s, Offset action was not executed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1489 -#: flatcamEditors/FlatCAMGrbEditor.py:4766 +#: flatcamEditors/FlatCAMGeoEditor.py:1491 +#: flatcamEditors/FlatCAMGrbEditor.py:5326 msgid "Rotate ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1490 -#: flatcamEditors/FlatCAMGeoEditor.py:1547 -#: flatcamEditors/FlatCAMGeoEditor.py:1564 -#: flatcamEditors/FlatCAMGrbEditor.py:4767 -#: flatcamEditors/FlatCAMGrbEditor.py:4824 -#: flatcamEditors/FlatCAMGrbEditor.py:4841 +#: flatcamEditors/FlatCAMGeoEditor.py:1492 +#: flatcamEditors/FlatCAMGeoEditor.py:1549 +#: flatcamEditors/FlatCAMGeoEditor.py:1566 +#: flatcamEditors/FlatCAMGrbEditor.py:5327 +#: flatcamEditors/FlatCAMGrbEditor.py:5384 +#: flatcamEditors/FlatCAMGrbEditor.py:5401 msgid "Enter an Angle Value (degrees):" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1499 -#: flatcamEditors/FlatCAMGrbEditor.py:4776 +#: flatcamEditors/FlatCAMGeoEditor.py:1501 +#: flatcamEditors/FlatCAMGrbEditor.py:5336 msgid "[success] Geometry shape rotate done..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1504 -#: flatcamEditors/FlatCAMGrbEditor.py:4781 +#: flatcamEditors/FlatCAMGeoEditor.py:1506 +#: flatcamEditors/FlatCAMGrbEditor.py:5341 msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1510 -#: flatcamEditors/FlatCAMGrbEditor.py:4787 +#: flatcamEditors/FlatCAMGeoEditor.py:1512 +#: flatcamEditors/FlatCAMGrbEditor.py:5347 msgid "Offset on X axis ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1511 -#: flatcamEditors/FlatCAMGeoEditor.py:1530 -#: flatcamEditors/FlatCAMGrbEditor.py:4788 -#: flatcamEditors/FlatCAMGrbEditor.py:4807 +#: flatcamEditors/FlatCAMGeoEditor.py:1513 +#: flatcamEditors/FlatCAMGeoEditor.py:1532 +#: flatcamEditors/FlatCAMGrbEditor.py:5348 +#: flatcamEditors/FlatCAMGrbEditor.py:5367 #, python-format msgid "Enter a distance Value (%s):" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1520 -#: flatcamEditors/FlatCAMGrbEditor.py:4797 +#: flatcamEditors/FlatCAMGeoEditor.py:1522 +#: flatcamEditors/FlatCAMGrbEditor.py:5357 msgid "[success] Geometry shape offset on X axis done..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1524 -#: flatcamEditors/FlatCAMGrbEditor.py:4801 +#: flatcamEditors/FlatCAMGeoEditor.py:1526 +#: flatcamEditors/FlatCAMGrbEditor.py:5361 msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1529 -#: flatcamEditors/FlatCAMGrbEditor.py:4806 +#: flatcamEditors/FlatCAMGeoEditor.py:1531 +#: flatcamEditors/FlatCAMGrbEditor.py:5366 msgid "Offset on Y axis ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1539 -#: flatcamEditors/FlatCAMGrbEditor.py:4816 +#: flatcamEditors/FlatCAMGeoEditor.py:1541 +#: flatcamEditors/FlatCAMGrbEditor.py:5376 msgid "[success] Geometry shape offset on Y axis done..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1543 -#: flatcamEditors/FlatCAMGrbEditor.py:4820 +#: flatcamEditors/FlatCAMGeoEditor.py:1545 +#: flatcamEditors/FlatCAMGrbEditor.py:5380 msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1546 -#: flatcamEditors/FlatCAMGrbEditor.py:4823 +#: flatcamEditors/FlatCAMGeoEditor.py:1548 +#: flatcamEditors/FlatCAMGrbEditor.py:5383 msgid "Skew on X axis ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1556 -#: flatcamEditors/FlatCAMGrbEditor.py:4833 +#: flatcamEditors/FlatCAMGeoEditor.py:1558 +#: flatcamEditors/FlatCAMGrbEditor.py:5393 msgid "[success] Geometry shape skew on X axis done..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1560 -#: flatcamEditors/FlatCAMGrbEditor.py:4837 +#: flatcamEditors/FlatCAMGeoEditor.py:1562 +#: flatcamEditors/FlatCAMGrbEditor.py:5397 msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1563 -#: flatcamEditors/FlatCAMGrbEditor.py:4840 +#: flatcamEditors/FlatCAMGeoEditor.py:1565 +#: flatcamEditors/FlatCAMGrbEditor.py:5400 msgid "Skew on Y axis ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1573 -#: flatcamEditors/FlatCAMGrbEditor.py:4850 +#: flatcamEditors/FlatCAMGeoEditor.py:1575 +#: flatcamEditors/FlatCAMGrbEditor.py:5410 msgid "[success] Geometry shape skew on Y axis done..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1577 -#: flatcamEditors/FlatCAMGrbEditor.py:4854 +#: flatcamEditors/FlatCAMGeoEditor.py:1579 +#: flatcamEditors/FlatCAMGrbEditor.py:5414 msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1942 #: flatcamEditors/FlatCAMGeoEditor.py:1943 #: flatcamEditors/FlatCAMGeoEditor.py:1994 -#: flatcamEditors/FlatCAMGeoEditor.py:1995 -#: flatcamEditors/FlatCAMGrbEditor.py:1081 -#: flatcamEditors/FlatCAMGrbEditor.py:1082 -#: flatcamEditors/FlatCAMGrbEditor.py:1142 -#: flatcamEditors/FlatCAMGrbEditor.py:1143 +#: flatcamEditors/FlatCAMGrbEditor.py:1351 +#: flatcamEditors/FlatCAMGrbEditor.py:1420 msgid "Click on Center point ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:1950 -#: flatcamEditors/FlatCAMGrbEditor.py:1090 +#: flatcamEditors/FlatCAMGrbEditor.py:1359 msgid "Click on Perimeter point to complete ..." msgstr "" @@ -2490,78 +2530,77 @@ msgstr "" msgid "[success] Done. Adding Circle completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2015 -#: flatcamEditors/FlatCAMGrbEditor.py:1168 +#: flatcamEditors/FlatCAMGeoEditor.py:2014 +#: flatcamEditors/FlatCAMGrbEditor.py:1445 msgid "Click on Start point ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2017 -#: flatcamEditors/FlatCAMGrbEditor.py:1170 +#: flatcamEditors/FlatCAMGeoEditor.py:2016 +#: flatcamEditors/FlatCAMGrbEditor.py:1447 msgid "Click on Point3 ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2019 -#: flatcamEditors/FlatCAMGrbEditor.py:1172 +#: flatcamEditors/FlatCAMGeoEditor.py:2018 +#: flatcamEditors/FlatCAMGrbEditor.py:1449 msgid "Click on Stop point ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2024 -#: flatcamEditors/FlatCAMGrbEditor.py:1177 +#: flatcamEditors/FlatCAMGeoEditor.py:2023 +#: flatcamEditors/FlatCAMGrbEditor.py:1454 msgid "Click on Stop point to complete ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2026 -#: flatcamEditors/FlatCAMGrbEditor.py:1179 +#: flatcamEditors/FlatCAMGeoEditor.py:2025 +#: flatcamEditors/FlatCAMGrbEditor.py:1456 msgid "Click on Point2 to complete ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2028 -#: flatcamEditors/FlatCAMGrbEditor.py:1181 +#: flatcamEditors/FlatCAMGeoEditor.py:2027 +#: flatcamEditors/FlatCAMGrbEditor.py:1458 msgid "Click on Center point to complete ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2040 -#: flatcamEditors/FlatCAMGrbEditor.py:1193 +#: flatcamEditors/FlatCAMGeoEditor.py:2039 +#: flatcamEditors/FlatCAMGrbEditor.py:1470 #, python-format msgid "Direction: %s" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2050 -#: flatcamEditors/FlatCAMGrbEditor.py:1203 +#: flatcamEditors/FlatCAMGeoEditor.py:2049 +#: flatcamEditors/FlatCAMGrbEditor.py:1480 msgid "Mode: Start -> Stop -> Center. Click on Start point ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2053 -#: flatcamEditors/FlatCAMGrbEditor.py:1206 +#: flatcamEditors/FlatCAMGeoEditor.py:2052 +#: flatcamEditors/FlatCAMGrbEditor.py:1483 msgid "Mode: Point1 -> Point3 -> Point2. Click on Point1 ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2056 -#: flatcamEditors/FlatCAMGrbEditor.py:1209 +#: flatcamEditors/FlatCAMGeoEditor.py:2055 +#: flatcamEditors/FlatCAMGrbEditor.py:1486 msgid "Mode: Center -> Start -> Stop. Click on Center point ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2194 +#: flatcamEditors/FlatCAMGeoEditor.py:2193 msgid "[success] Done. Arc completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2213 +#: flatcamEditors/FlatCAMGeoEditor.py:2212 +#: flatcamEditors/FlatCAMGeoEditor.py:2265 +#: flatcamEditors/FlatCAMGeoEditor.py:2640 msgid "Click on 1st corner ..." msgstr "" +#: flatcamEditors/FlatCAMGeoEditor.py:2218 +msgid "Click on opposite corner to complete ..." +msgstr "" + #: flatcamEditors/FlatCAMGeoEditor.py:2246 msgid "[success] Done. Rectangle completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2265 -#: flatcamEditors/FlatCAMGrbEditor.py:627 -msgid "Click on 1st point ..." -msgstr "" - #: flatcamEditors/FlatCAMGeoEditor.py:2272 -#: flatcamEditors/FlatCAMGrbEditor.py:637 -#: flatcamEditors/FlatCAMGrbEditor.py:904 -msgid "Click on next Point or click Right mouse button to complete ..." +msgid "Click on next Point or click right mouse button to complete ..." msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2300 @@ -2570,8 +2609,8 @@ msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:2310 #: flatcamEditors/FlatCAMGeoEditor.py:2356 -#: flatcamEditors/FlatCAMGrbEditor.py:808 -#: flatcamEditors/FlatCAMGrbEditor.py:981 +#: flatcamEditors/FlatCAMGrbEditor.py:1055 +#: flatcamEditors/FlatCAMGrbEditor.py:1249 msgid "Backtracked one point ..." msgstr "" @@ -2579,155 +2618,151 @@ msgstr "" msgid "[success] Done. Path completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2450 -#: flatcamEditors/FlatCAMGeoEditor.py:3611 -msgid "[WARNING_NOTCL] Move cancelled. No shape selected." +#: flatcamEditors/FlatCAMGeoEditor.py:2461 +msgid "[WARNING_NOTCL] MOVE: No shape selected. Select a shape to move ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2454 -msgid "Click on reference point." +#: flatcamEditors/FlatCAMGeoEditor.py:2463 +#: flatcamEditors/FlatCAMGeoEditor.py:2475 +msgid " MOVE: Click on reference point ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2457 -msgid "Click on destination point." +#: flatcamEditors/FlatCAMGeoEditor.py:2466 +msgid " Click on destination point ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2488 +#: flatcamEditors/FlatCAMGeoEditor.py:2500 msgid "[success] Done. Geometry(s) Move completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2533 +#: flatcamEditors/FlatCAMGeoEditor.py:2620 msgid "[success] Done. Geometry(s) Copy completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2553 -msgid "Click on the Destination point..." -msgstr "" - -#: flatcamEditors/FlatCAMGeoEditor.py:2567 +#: flatcamEditors/FlatCAMGeoEditor.py:2654 #, python-format msgid "" "[ERROR]Font not supported. Only Regular, Bold, Italic and BoldItalic are " "supported. Error: %s" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2577 +#: flatcamEditors/FlatCAMGeoEditor.py:2664 msgid "[success] Done. Adding Text completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2605 +#: flatcamEditors/FlatCAMGeoEditor.py:2692 msgid "Create buffer geometry ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2616 -#: flatcamEditors/FlatCAMGeoEditor.py:2642 -#: flatcamEditors/FlatCAMGeoEditor.py:2668 +#: flatcamEditors/FlatCAMGeoEditor.py:2703 +#: flatcamEditors/FlatCAMGeoEditor.py:2729 +#: flatcamEditors/FlatCAMGeoEditor.py:2755 msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2638 -#: flatcamEditors/FlatCAMGrbEditor.py:3807 +#: flatcamEditors/FlatCAMGeoEditor.py:2725 +#: flatcamEditors/FlatCAMGrbEditor.py:4276 msgid "[success] Done. Buffer Tool completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2664 +#: flatcamEditors/FlatCAMGeoEditor.py:2751 msgid "[success] Done. Buffer Int Tool completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2690 +#: flatcamEditors/FlatCAMGeoEditor.py:2777 msgid "[success] Done. Buffer Ext Tool completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2723 +#: flatcamEditors/FlatCAMGeoEditor.py:2810 msgid "Create Paint geometry ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2737 -#: flatcamEditors/FlatCAMGrbEditor.py:1667 +#: flatcamEditors/FlatCAMGeoEditor.py:2824 +#: flatcamEditors/FlatCAMGrbEditor.py:2059 msgid "Shape transformations ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:3237 +#: flatcamEditors/FlatCAMGeoEditor.py:3327 #, python-brace-format msgid "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:3618 +#: flatcamEditors/FlatCAMGeoEditor.py:3703 msgid "[WARNING_NOTCL] Copy cancelled. No shape selected." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:3625 flatcamGUI/FlatCAMGUI.py:2710 -#: flatcamGUI/FlatCAMGUI.py:2756 flatcamGUI/FlatCAMGUI.py:2774 -#: flatcamGUI/FlatCAMGUI.py:2905 flatcamGUI/FlatCAMGUI.py:2917 -#: flatcamGUI/FlatCAMGUI.py:2951 +#: flatcamEditors/FlatCAMGeoEditor.py:3710 flatcamGUI/FlatCAMGUI.py:2725 +#: flatcamGUI/FlatCAMGUI.py:2771 flatcamGUI/FlatCAMGUI.py:2789 +#: flatcamGUI/FlatCAMGUI.py:2920 flatcamGUI/FlatCAMGUI.py:2932 +#: flatcamGUI/FlatCAMGUI.py:2966 msgid "Click on target point." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:3868 -#: flatcamEditors/FlatCAMGeoEditor.py:3902 +#: flatcamEditors/FlatCAMGeoEditor.py:3953 +#: flatcamEditors/FlatCAMGeoEditor.py:3987 msgid "" "[WARNING_NOTCL] A selection of at least 2 geo items is required to do " "Intersection." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:3986 -#: flatcamEditors/FlatCAMGeoEditor.py:4023 -#: flatcamEditors/FlatCAMGeoEditor.py:4099 +#: flatcamEditors/FlatCAMGeoEditor.py:4071 +#: flatcamEditors/FlatCAMGeoEditor.py:4108 +#: flatcamEditors/FlatCAMGeoEditor.py:4184 msgid "" "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to " "generate an 'inside' shape" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:3994 -#: flatcamEditors/FlatCAMGeoEditor.py:4032 -#: flatcamEditors/FlatCAMGeoEditor.py:4107 +#: flatcamEditors/FlatCAMGeoEditor.py:4079 +#: flatcamEditors/FlatCAMGeoEditor.py:4117 +#: flatcamEditors/FlatCAMGeoEditor.py:4192 msgid "[WARNING_NOTCL] Nothing selected for buffering." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:3998 -#: flatcamEditors/FlatCAMGeoEditor.py:4036 -#: flatcamEditors/FlatCAMGeoEditor.py:4111 +#: flatcamEditors/FlatCAMGeoEditor.py:4083 +#: flatcamEditors/FlatCAMGeoEditor.py:4121 +#: flatcamEditors/FlatCAMGeoEditor.py:4196 msgid "[WARNING_NOTCL] Invalid distance for buffering." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4008 -#: flatcamEditors/FlatCAMGeoEditor.py:4120 +#: flatcamEditors/FlatCAMGeoEditor.py:4093 +#: flatcamEditors/FlatCAMGeoEditor.py:4205 msgid "" "[ERROR_NOTCL] Failed, the result is empty. Choose a different buffer value." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4016 +#: flatcamEditors/FlatCAMGeoEditor.py:4101 msgid "[success] Full buffer geometry created." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4046 +#: flatcamEditors/FlatCAMGeoEditor.py:4131 msgid "" "[ERROR_NOTCL] Failed, the result is empty. Choose a smaller buffer value." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4061 +#: flatcamEditors/FlatCAMGeoEditor.py:4146 msgid "[success] Interior buffer geometry created." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4132 +#: flatcamEditors/FlatCAMGeoEditor.py:4217 msgid "[success] Exterior buffer geometry created." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4196 +#: flatcamEditors/FlatCAMGeoEditor.py:4281 msgid "[WARNING_NOTCL] Nothing selected for painting." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4202 +#: flatcamEditors/FlatCAMGeoEditor.py:4287 msgid "[WARNING] Invalid value for {}" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4208 +#: flatcamEditors/FlatCAMGeoEditor.py:4293 msgid "" "[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 " "(100%)." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4267 +#: flatcamEditors/FlatCAMGeoEditor.py:4352 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -2735,196 +2770,218 @@ msgid "" "%s" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4278 +#: flatcamEditors/FlatCAMGeoEditor.py:4363 msgid "[success] Paint done." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:52 +#: flatcamEditors/FlatCAMGrbEditor.py:200 msgid "[WARNING_NOTCL] To add an Pad first select a aperture in Aperture Table" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:58 flatcamEditors/FlatCAMGrbEditor.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:206 +#: flatcamEditors/FlatCAMGrbEditor.py:398 msgid "" "[WARNING_NOTCL] Aperture size is zero. It needs to be greater than zero." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:81 flatcamEditors/FlatCAMGrbEditor.py:86 +#: flatcamEditors/FlatCAMGrbEditor.py:229 +#: flatcamEditors/FlatCAMGrbEditor.py:234 msgid "Click to place ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:191 -#: flatcamEditors/FlatCAMGrbEditor.py:469 +#: flatcamEditors/FlatCAMGrbEditor.py:357 +#: flatcamEditors/FlatCAMGrbEditor.py:660 msgid "" "Incompatible aperture type. Select an aperture with type 'C', 'R' or 'O'." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:203 +#: flatcamEditors/FlatCAMGrbEditor.py:369 msgid "[success] Done. Adding Pad completed." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:225 +#: flatcamEditors/FlatCAMGrbEditor.py:391 msgid "" "[WARNING_NOTCL] To add an Pad Array first select a aperture in Aperture Table" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:304 +#: flatcamEditors/FlatCAMGrbEditor.py:468 msgid "Click on the Pad Circular Array Start position" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:494 +#: flatcamEditors/FlatCAMGrbEditor.py:685 msgid "[WARNING_NOTCL] Too many Pads for the selected spacing angle." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:516 +#: flatcamEditors/FlatCAMGrbEditor.py:707 msgid "[success] Done. Pad Array added." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:537 +#: flatcamEditors/FlatCAMGrbEditor.py:728 msgid "Select shape(s) and then click ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:548 +#: flatcamEditors/FlatCAMGrbEditor.py:739 msgid "[ERROR_NOTCL] Failed. Nothing selected." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:575 +#: flatcamEditors/FlatCAMGrbEditor.py:754 +msgid "" +"[WARNING_NOTCL] Failed. Poligonize works only on geometries belonging to the " +"same aperture." +msgstr "" + +#: flatcamEditors/FlatCAMGrbEditor.py:807 msgid "[success] Done. Poligonize completed." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:625 -#: flatcamEditors/FlatCAMGrbEditor.py:825 -#: flatcamEditors/FlatCAMGrbEditor.py:849 +#: flatcamEditors/FlatCAMGrbEditor.py:857 +#: flatcamEditors/FlatCAMGrbEditor.py:1072 +#: flatcamEditors/FlatCAMGrbEditor.py:1096 msgid "Corner Mode 1: 45 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:813 -#: flatcamEditors/FlatCAMGrbEditor.py:846 +#: flatcamEditors/FlatCAMGrbEditor.py:859 +msgid "Click on 1st point ..." +msgstr "" + +#: flatcamEditors/FlatCAMGrbEditor.py:869 +#: flatcamEditors/FlatCAMGrbEditor.py:1167 +msgid "Click on next Point or click Right mouse button to complete ..." +msgstr "" + +#: flatcamEditors/FlatCAMGrbEditor.py:1060 +#: flatcamEditors/FlatCAMGrbEditor.py:1093 msgid "Corner Mode 2: Reverse 45 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:816 -#: flatcamEditors/FlatCAMGrbEditor.py:843 +#: flatcamEditors/FlatCAMGrbEditor.py:1063 +#: flatcamEditors/FlatCAMGrbEditor.py:1090 msgid "Corner Mode 3: 90 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:819 -#: flatcamEditors/FlatCAMGrbEditor.py:840 +#: flatcamEditors/FlatCAMGrbEditor.py:1066 +#: flatcamEditors/FlatCAMGrbEditor.py:1087 msgid "Corner Mode 4: Reverse 90 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:822 -#: flatcamEditors/FlatCAMGrbEditor.py:837 +#: flatcamEditors/FlatCAMGrbEditor.py:1069 +#: flatcamEditors/FlatCAMGrbEditor.py:1084 msgid "Corner Mode 5: Free angle ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:875 -#: flatcamEditors/FlatCAMGrbEditor.py:1012 -#: flatcamEditors/FlatCAMGrbEditor.py:1050 +#: flatcamEditors/FlatCAMGrbEditor.py:1123 +#: flatcamEditors/FlatCAMGrbEditor.py:1281 +#: flatcamEditors/FlatCAMGrbEditor.py:1320 msgid "Track Mode 1: 45 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:992 -#: flatcamEditors/FlatCAMGrbEditor.py:1045 +#: flatcamEditors/FlatCAMGrbEditor.py:1261 +#: flatcamEditors/FlatCAMGrbEditor.py:1315 msgid "Track Mode 2: Reverse 45 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:997 -#: flatcamEditors/FlatCAMGrbEditor.py:1040 +#: flatcamEditors/FlatCAMGrbEditor.py:1266 +#: flatcamEditors/FlatCAMGrbEditor.py:1310 msgid "Track Mode 3: 90 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1002 -#: flatcamEditors/FlatCAMGrbEditor.py:1035 +#: flatcamEditors/FlatCAMGrbEditor.py:1271 +#: flatcamEditors/FlatCAMGrbEditor.py:1305 msgid "Track Mode 4: Reverse 90 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1007 -#: flatcamEditors/FlatCAMGrbEditor.py:1030 +#: flatcamEditors/FlatCAMGrbEditor.py:1276 +#: flatcamEditors/FlatCAMGrbEditor.py:1300 msgid "Track Mode 5: Free angle ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1367 +#: flatcamEditors/FlatCAMGrbEditor.py:1666 msgid "Scale the selected Gerber apertures ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1409 +#: flatcamEditors/FlatCAMGrbEditor.py:1708 msgid "Buffer the selected apertures ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1510 +#: flatcamEditors/FlatCAMGrbEditor.py:1752 +msgid "[WARNING_NOTCL] Nothing selected to move ..." +msgstr "" + +#: flatcamEditors/FlatCAMGrbEditor.py:1875 msgid "[success] Done. Apertures Move completed." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1565 +#: flatcamEditors/FlatCAMGrbEditor.py:1951 msgid "[success] Done. Apertures copied." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1708 flatcamGUI/FlatCAMGUI.py:1590 +#: flatcamEditors/FlatCAMGrbEditor.py:2101 flatcamGUI/FlatCAMGUI.py:1604 +#: flatcamGUI/FlatCAMGUI.py:4322 msgid "Gerber Editor" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1727 flatcamGUI/ObjectUI.py:192 +#: flatcamEditors/FlatCAMGrbEditor.py:2120 flatcamGUI/ObjectUI.py:192 msgid "Apertures:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1729 flatcamGUI/ObjectUI.py:194 +#: flatcamEditors/FlatCAMGrbEditor.py:2122 flatcamGUI/ObjectUI.py:194 msgid "Apertures Table for the Gerber Object." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 msgid "Code" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 -#: flatcamGUI/ObjectUI.py:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "Type" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 msgid "Size" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1740 -#: flatcamEditors/FlatCAMGrbEditor.py:3007 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2133 +#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 msgid "Dim" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1744 flatcamGUI/ObjectUI.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:2137 flatcamGUI/ObjectUI.py:232 msgid "Index" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1746 flatcamGUI/ObjectUI.py:234 +#: flatcamEditors/FlatCAMGrbEditor.py:2139 flatcamGUI/ObjectUI.py:234 msgid "Aperture Code" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1748 flatcamGUI/ObjectUI.py:236 +#: flatcamEditors/FlatCAMGrbEditor.py:2141 flatcamGUI/ObjectUI.py:236 msgid "Type of aperture: circular, rectangle, macros etc" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1750 -#: flatcamEditors/FlatCAMGrbEditor.py:1783 flatcamGUI/ObjectUI.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:2143 +#: flatcamEditors/FlatCAMGrbEditor.py:2176 flatcamGUI/ObjectUI.py:238 msgid "Aperture Size:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1752 flatcamGUI/ObjectUI.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:2145 flatcamGUI/ObjectUI.py:240 msgid "" "Aperture Dimensions:\n" " - (width, height) for R, O type.\n" " - (dia, nVertices) for P type" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1773 +#: flatcamEditors/FlatCAMGrbEditor.py:2166 msgid "Aperture Code:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1775 +#: flatcamEditors/FlatCAMGrbEditor.py:2168 msgid "Code for the new aperture" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1785 +#: flatcamEditors/FlatCAMGrbEditor.py:2178 msgid "" "Size for the new aperture.\n" "If aperture type is 'R' or 'O' then\n" @@ -2933,11 +2990,11 @@ msgid "" "sqrt(width**2 + height**2)" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1797 +#: flatcamEditors/FlatCAMGrbEditor.py:2190 msgid "Aperture Type:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1799 +#: flatcamEditors/FlatCAMGrbEditor.py:2192 msgid "" "Select the type of new aperture. Can be:\n" "C = circular\n" @@ -2945,42 +3002,42 @@ msgid "" "O = oblong" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1810 +#: flatcamEditors/FlatCAMGrbEditor.py:2203 msgid "Aperture Dim:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1812 +#: flatcamEditors/FlatCAMGrbEditor.py:2205 msgid "" "Dimensions for the new aperture.\n" "Active only for rectangular apertures (type R).\n" "The format is (width, height)" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1821 +#: flatcamEditors/FlatCAMGrbEditor.py:2214 msgid "Add/Delete Aperture:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1823 +#: flatcamEditors/FlatCAMGrbEditor.py:2216 msgid "Add/Delete an aperture in the aperture table" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1832 +#: flatcamEditors/FlatCAMGrbEditor.py:2225 msgid "Add a new aperture to the aperture list." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1837 +#: flatcamEditors/FlatCAMGrbEditor.py:2230 msgid "Delete a aperture in the aperture list" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1853 +#: flatcamEditors/FlatCAMGrbEditor.py:2246 msgid "Buffer Aperture:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1855 +#: flatcamEditors/FlatCAMGrbEditor.py:2248 msgid "Buffer a aperture in the aperture list" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1868 +#: flatcamEditors/FlatCAMGrbEditor.py:2261 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded.\n" @@ -2989,140 +3046,148 @@ msgid "" "meeting in the corner" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1883 flatcamGUI/FlatCAMGUI.py:708 -#: flatcamGUI/FlatCAMGUI.py:1929 +#: flatcamEditors/FlatCAMGrbEditor.py:2276 flatcamGUI/FlatCAMGUI.py:721 +#: flatcamGUI/FlatCAMGUI.py:1943 msgid "Buffer" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1897 +#: flatcamEditors/FlatCAMGrbEditor.py:2290 msgid "Scale Aperture:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1899 +#: flatcamEditors/FlatCAMGrbEditor.py:2292 msgid "Scale a aperture in the aperture list" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1907 +#: flatcamEditors/FlatCAMGrbEditor.py:2300 msgid "Scale factor:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1909 +#: flatcamEditors/FlatCAMGrbEditor.py:2302 msgid "" "The factor by which to scale the selected aperture.\n" "Values can be between 0.0000 and 999.9999" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1937 flatcamGUI/FlatCAMGUI.py:698 -#: flatcamGUI/FlatCAMGUI.py:1919 +#: flatcamEditors/FlatCAMGrbEditor.py:2330 flatcamGUI/FlatCAMGUI.py:711 +#: flatcamGUI/FlatCAMGUI.py:1933 msgid "Add Pad Array" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1939 +#: flatcamEditors/FlatCAMGrbEditor.py:2332 msgid "Add an array of pads (linear or circular array)" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1945 +#: flatcamEditors/FlatCAMGrbEditor.py:2338 msgid "" "Select the type of pads array to create.\n" "It can be Linear X(Y) or Circular" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1956 +#: flatcamEditors/FlatCAMGrbEditor.py:2349 msgid "Nr of pads:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1958 +#: flatcamEditors/FlatCAMGrbEditor.py:2351 msgid "Specify how many pads to be in the array." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2431 -#: flatcamEditors/FlatCAMGrbEditor.py:2435 +#: flatcamEditors/FlatCAMGrbEditor.py:2826 +#: flatcamEditors/FlatCAMGrbEditor.py:2830 msgid "" "[WARNING_NOTCL] Aperture code value is missing or wrong format. Add it and " "retry." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2472 +#: flatcamEditors/FlatCAMGrbEditor.py:2866 msgid "" "[WARNING_NOTCL] Aperture dimensions value is missing or wrong format. Add it " "in format (width, height) and retry." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2484 +#: flatcamEditors/FlatCAMGrbEditor.py:2878 msgid "" "[WARNING_NOTCL] Aperture size value is missing or wrong format. Add it and " "retry." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2496 +#: flatcamEditors/FlatCAMGrbEditor.py:2889 msgid "[WARNING_NOTCL] Aperture already in the aperture table." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2503 +#: flatcamEditors/FlatCAMGrbEditor.py:2896 #, python-brace-format msgid "[success] Added new aperture with code: {apid}" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2532 -#: flatcamEditors/FlatCAMGrbEditor.py:2538 +#: flatcamEditors/FlatCAMGrbEditor.py:2924 msgid "[WARNING_NOTCL] Select an aperture in Aperture Table" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2561 +#: flatcamEditors/FlatCAMGrbEditor.py:2930 +#, python-format +msgid "[WARNING_NOTCL] Select an aperture in Aperture Table --> %s" +msgstr "" + +#: flatcamEditors/FlatCAMGrbEditor.py:2953 #, python-brace-format msgid "[success] Deleted aperture with code: {del_dia}" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2931 +#: flatcamEditors/FlatCAMGrbEditor.py:3373 #, python-format msgid "Adding aperture: %s geo ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3095 +#: flatcamEditors/FlatCAMGrbEditor.py:3552 msgid "" "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber " "creation." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3104 +#: flatcamEditors/FlatCAMGrbEditor.py:3555 +msgid "[ERROR] An internal error has occurred. See shell.\n" +msgstr "" + +#: flatcamEditors/FlatCAMGrbEditor.py:3560 msgid "Creating Gerber." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3112 +#: flatcamEditors/FlatCAMGrbEditor.py:3568 msgid "[success] Gerber editing finished." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3129 +#: flatcamEditors/FlatCAMGrbEditor.py:3584 msgid "[WARNING_NOTCL] Cancelled. No aperture is selected" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3649 +#: flatcamEditors/FlatCAMGrbEditor.py:4104 msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3657 +#: flatcamEditors/FlatCAMGrbEditor.py:4112 msgid "[success] Done. Apertures geometry deleted." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3792 +#: flatcamEditors/FlatCAMGrbEditor.py:4261 msgid "" "[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try " "again." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3821 +#: flatcamEditors/FlatCAMGrbEditor.py:4290 msgid "" "[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and " "retry." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3839 +#: flatcamEditors/FlatCAMGrbEditor.py:4320 msgid "" "[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try " "again." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3855 +#: flatcamEditors/FlatCAMGrbEditor.py:4336 msgid "[success] Done. Scale Tool completed." msgstr "" @@ -3272,51 +3337,62 @@ msgid "" "are set in Preferences -> Excellon Export." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:191 -msgid "Save &Defaults" +#: flatcamGUI/FlatCAMGUI.py:186 +msgid "Export &Gerber ..." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:197 flatcamGUI/FlatCAMGUI.py:520 -msgid "Save" +#: flatcamGUI/FlatCAMGUI.py:189 +msgid "" +"Will export an Gerber Object as Gerber file,\n" +"the coordinates format, the file units and zeros\n" +"are set in Preferences -> Gerber Export." msgstr "" #: flatcamGUI/FlatCAMGUI.py:199 +msgid "Save &Defaults" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:205 flatcamGUI/FlatCAMGUI.py:533 +msgid "Save" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:207 msgid "&Save Project ..." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:204 +#: flatcamGUI/FlatCAMGUI.py:212 msgid "Save Project &As ...\tCTRL+S" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:208 +#: flatcamGUI/FlatCAMGUI.py:216 msgid "Save Project C&opy ..." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:216 +#: flatcamGUI/FlatCAMGUI.py:224 msgid "E&xit" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:222 +#: flatcamGUI/FlatCAMGUI.py:230 msgid "&Edit" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:225 +#: flatcamGUI/FlatCAMGUI.py:233 msgid "Edit Object\tE" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:226 +#: flatcamGUI/FlatCAMGUI.py:234 msgid "Close Editor\tCTRL+S" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:234 +#: flatcamGUI/FlatCAMGUI.py:242 msgid "Conversion" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:236 +#: flatcamGUI/FlatCAMGUI.py:244 msgid "&Join Geo/Gerber/Exc -> Geo" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:238 +#: flatcamGUI/FlatCAMGUI.py:246 msgid "" "Merge a selection of objects, which can be of type:\n" "- Gerber\n" @@ -3325,684 +3401,688 @@ msgid "" "into a new combo Geometry object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:245 +#: flatcamGUI/FlatCAMGUI.py:253 msgid "Join Excellon(s) -> Excellon" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:247 +#: flatcamGUI/FlatCAMGUI.py:255 msgid "Merge a selection of Excellon objects into a new combo Excellon object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:250 +#: flatcamGUI/FlatCAMGUI.py:258 msgid "Join Gerber(s) -> Gerber" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:252 +#: flatcamGUI/FlatCAMGUI.py:260 msgid "Merge a selection of Gerber objects into a new combo Gerber object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:257 +#: flatcamGUI/FlatCAMGUI.py:265 msgid "Convert Single to MultiGeo" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:259 +#: flatcamGUI/FlatCAMGUI.py:267 msgid "" "Will convert a Geometry object from single_geometry type\n" "to a multi_geometry type." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:263 +#: flatcamGUI/FlatCAMGUI.py:271 msgid "Convert Multi to SingleGeo" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:265 +#: flatcamGUI/FlatCAMGUI.py:273 msgid "" "Will convert a Geometry object from multi_geometry type\n" "to a single_geometry type." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:272 -msgid "&Copy Object\tCTRL+C" -msgstr "" - -#: flatcamGUI/FlatCAMGUI.py:274 -msgid "Copy as &Geom" -msgstr "" - -#: flatcamGUI/FlatCAMGUI.py:277 -msgid "&Delete\tDEL" +#: flatcamGUI/FlatCAMGUI.py:279 +msgid "Convert Any to Geo" msgstr "" #: flatcamGUI/FlatCAMGUI.py:281 +msgid "Convert Any to Gerber" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:286 +msgid "&Copy\tCTRL+C" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:290 +msgid "&Delete\tDEL" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:294 msgid "Se&t Origin\tO" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:282 +#: flatcamGUI/FlatCAMGUI.py:295 msgid "Jump to Location\tJ" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:287 +#: flatcamGUI/FlatCAMGUI.py:300 msgid "Toggle Units\tQ" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:289 +#: flatcamGUI/FlatCAMGUI.py:302 msgid "&Select All\tCTRL+A" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:293 +#: flatcamGUI/FlatCAMGUI.py:306 msgid "&Preferences\tSHIFT+P" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:296 +#: flatcamGUI/FlatCAMGUI.py:309 msgid "&Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:311 +#: flatcamGUI/FlatCAMGUI.py:324 msgid "&Rotate Selection\tSHIFT+(R)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:329 msgid "&Skew on X axis\tSHIFT+X" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:318 +#: flatcamGUI/FlatCAMGUI.py:331 msgid "S&kew on Y axis\tSHIFT+Y" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:323 +#: flatcamGUI/FlatCAMGUI.py:336 msgid "Flip on &X axis\tX" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:325 +#: flatcamGUI/FlatCAMGUI.py:338 msgid "Flip on &Y axis\tY" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:330 +#: flatcamGUI/FlatCAMGUI.py:343 msgid "View source\tALT+S" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:335 +#: flatcamGUI/FlatCAMGUI.py:348 msgid "&View" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:336 +#: flatcamGUI/FlatCAMGUI.py:349 msgid "Enable all plots\tALT+1" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:338 +#: flatcamGUI/FlatCAMGUI.py:351 msgid "Disable all plots\tALT+2" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:340 +#: flatcamGUI/FlatCAMGUI.py:353 msgid "Disable non-selected\tALT+3" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:343 +#: flatcamGUI/FlatCAMGUI.py:356 msgid "&Zoom Fit\tV" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:344 +#: flatcamGUI/FlatCAMGUI.py:357 msgid "&Zoom In\t-" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:345 +#: flatcamGUI/FlatCAMGUI.py:358 msgid "&Zoom Out\t=" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:349 +#: flatcamGUI/FlatCAMGUI.py:362 msgid "Toggle Code Editor\tCTRL+E" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:352 +#: flatcamGUI/FlatCAMGUI.py:365 msgid "&Toggle FullScreen\tALT+F10" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:354 +#: flatcamGUI/FlatCAMGUI.py:367 msgid "&Toggle Plot Area\tCTRL+F10" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:356 +#: flatcamGUI/FlatCAMGUI.py:369 msgid "&Toggle Project/Sel/Tool\t`" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:359 +#: flatcamGUI/FlatCAMGUI.py:372 msgid "&Toggle Grid Snap\tG" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:361 +#: flatcamGUI/FlatCAMGUI.py:374 msgid "&Toggle Axis\tSHIFT+G" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:364 +#: flatcamGUI/FlatCAMGUI.py:377 msgid "Toggle Workspace\tSHIFT+W" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:368 +#: flatcamGUI/FlatCAMGUI.py:381 msgid "&Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:370 +#: flatcamGUI/FlatCAMGUI.py:383 msgid "&Command Line\tS" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:373 +#: flatcamGUI/FlatCAMGUI.py:386 msgid "&Help" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:374 +#: flatcamGUI/FlatCAMGUI.py:387 msgid "Help\tF1" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:375 +#: flatcamGUI/FlatCAMGUI.py:388 msgid "FlatCAM.org" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:378 +#: flatcamGUI/FlatCAMGUI.py:391 msgid "Shortcuts List\tF3" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:379 +#: flatcamGUI/FlatCAMGUI.py:392 msgid "YouTube Channel\tF4" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:381 +#: flatcamGUI/FlatCAMGUI.py:394 msgid "About" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:392 +#: flatcamGUI/FlatCAMGUI.py:405 msgid "Add Circle\tO" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:394 +#: flatcamGUI/FlatCAMGUI.py:407 msgid "Add Arc\tA" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:397 +#: flatcamGUI/FlatCAMGUI.py:410 msgid "Add Rectangle\tR" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:400 +#: flatcamGUI/FlatCAMGUI.py:413 msgid "Add Polygon\tN" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:415 msgid "Add Path\tP" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:404 +#: flatcamGUI/FlatCAMGUI.py:417 msgid "Add Text\tT" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:407 +#: flatcamGUI/FlatCAMGUI.py:420 msgid "Polygon Union\tU" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:409 +#: flatcamGUI/FlatCAMGUI.py:422 msgid "Polygon Intersection\tE" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:411 +#: flatcamGUI/FlatCAMGUI.py:424 msgid "Polygon Subtraction\tS" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:415 +#: flatcamGUI/FlatCAMGUI.py:428 msgid "Cut Path\tX" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:417 +#: flatcamGUI/FlatCAMGUI.py:430 msgid "Copy Geom\tC" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:419 +#: flatcamGUI/FlatCAMGUI.py:432 msgid "Delete Shape\tDEL" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:422 flatcamGUI/FlatCAMGUI.py:495 +#: flatcamGUI/FlatCAMGUI.py:435 flatcamGUI/FlatCAMGUI.py:508 msgid "Move\tM" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:424 +#: flatcamGUI/FlatCAMGUI.py:437 msgid "Buffer Tool\tB" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:427 +#: flatcamGUI/FlatCAMGUI.py:440 msgid "Paint Tool\tI" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:430 +#: flatcamGUI/FlatCAMGUI.py:443 msgid "Transform Tool\tALT+R" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:434 +#: flatcamGUI/FlatCAMGUI.py:447 msgid "Toggle Corner Snap\tK" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:437 +#: flatcamGUI/FlatCAMGUI.py:450 msgid ">Excellon Editor<" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:441 +#: flatcamGUI/FlatCAMGUI.py:454 msgid "Add Drill Array\tA" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:443 +#: flatcamGUI/FlatCAMGUI.py:456 msgid "Add Drill\tD" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:447 +#: flatcamGUI/FlatCAMGUI.py:460 msgid "Resize Drill(S)\tR" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:449 flatcamGUI/FlatCAMGUI.py:488 +#: flatcamGUI/FlatCAMGUI.py:462 flatcamGUI/FlatCAMGUI.py:501 msgid "Copy\tC" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:451 flatcamGUI/FlatCAMGUI.py:490 +#: flatcamGUI/FlatCAMGUI.py:464 flatcamGUI/FlatCAMGUI.py:503 msgid "Delete\tDEL" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:456 +#: flatcamGUI/FlatCAMGUI.py:469 msgid "Move Drill(s)\tM" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:460 +#: flatcamGUI/FlatCAMGUI.py:473 msgid ">Gerber Editor<" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:464 +#: flatcamGUI/FlatCAMGUI.py:477 msgid "Add Pad\tP" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:479 msgid "Add Pad Array\tA" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:468 +#: flatcamGUI/FlatCAMGUI.py:481 msgid "Add Track\tT" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:470 +#: flatcamGUI/FlatCAMGUI.py:483 msgid "Add Region\tN" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:474 +#: flatcamGUI/FlatCAMGUI.py:487 msgid "Poligonize\tALT+N" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:489 msgid "Add SemiDisc\tE" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:478 +#: flatcamGUI/FlatCAMGUI.py:491 msgid "Add Disc\tD" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:480 +#: flatcamGUI/FlatCAMGUI.py:493 msgid "Buffer\tB" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:482 +#: flatcamGUI/FlatCAMGUI.py:495 msgid "Scale\tS" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:484 +#: flatcamGUI/FlatCAMGUI.py:497 msgid "Transform\tALT+R" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:511 +#: flatcamGUI/FlatCAMGUI.py:524 msgid "Enable Plot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:512 +#: flatcamGUI/FlatCAMGUI.py:525 msgid "Disable Plot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:514 +#: flatcamGUI/FlatCAMGUI.py:527 msgid "Generate CNC" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:515 +#: flatcamGUI/FlatCAMGUI.py:528 msgid "View Source" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:517 flatcamGUI/FlatCAMGUI.py:1603 +#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1617 msgid "Edit" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:523 flatcamGUI/FlatCAMGUI.py:1609 +#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1623 #: flatcamTools/ToolProperties.py:25 msgid "Properties" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:552 +#: flatcamGUI/FlatCAMGUI.py:565 msgid "File Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:556 +#: flatcamGUI/FlatCAMGUI.py:569 msgid "Edit Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:560 +#: flatcamGUI/FlatCAMGUI.py:573 msgid "View Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:564 +#: flatcamGUI/FlatCAMGUI.py:577 msgid "Shell Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:568 +#: flatcamGUI/FlatCAMGUI.py:581 msgid "Tools Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:572 +#: flatcamGUI/FlatCAMGUI.py:585 msgid "Excellon Editor Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:576 +#: flatcamGUI/FlatCAMGUI.py:589 msgid "Geometry Editor Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:580 +#: flatcamGUI/FlatCAMGUI.py:593 msgid "Gerber Editor Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:597 msgid "Grid Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:603 flatcamGUI/FlatCAMGUI.py:1820 +#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1834 msgid "Open project" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:604 flatcamGUI/FlatCAMGUI.py:1821 +#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1835 msgid "Save project" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:607 flatcamGUI/FlatCAMGUI.py:1824 +#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1838 msgid "New Blank Geometry" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:608 +#: flatcamGUI/FlatCAMGUI.py:621 msgid "New Blank Gerber" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:609 flatcamGUI/FlatCAMGUI.py:1825 +#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1839 msgid "New Blank Excellon" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:611 flatcamGUI/FlatCAMGUI.py:1827 +#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1841 msgid "Editor" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:613 flatcamGUI/FlatCAMGUI.py:1829 +#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1843 msgid "Save Object and close the Editor" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1833 +#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1847 msgid "&Delete" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1836 +#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1850 msgid "&Replot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:621 flatcamGUI/FlatCAMGUI.py:1837 +#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1851 msgid "&Clear plot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1838 +#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1852 msgid "Zoom In" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:623 flatcamGUI/FlatCAMGUI.py:1839 +#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1853 msgid "Zoom Out" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1578 -#: flatcamGUI/FlatCAMGUI.py:1840 +#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1854 msgid "Zoom Fit" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:629 flatcamGUI/FlatCAMGUI.py:1845 +#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1859 msgid "&Command Line" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:632 flatcamGUI/FlatCAMGUI.py:1848 +#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1862 msgid "2Sided Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1849 +#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1863 msgid "&Cutout Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1850 +#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1864 #: flatcamGUI/ObjectUI.py:392 flatcamTools/ToolNonCopperClear.py:285 msgid "NCC Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:638 flatcamGUI/FlatCAMGUI.py:1854 +#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1868 msgid "Panel Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:639 flatcamGUI/FlatCAMGUI.py:1855 +#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1869 #: flatcamTools/ToolFilm.py:204 msgid "Film Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:640 flatcamGUI/FlatCAMGUI.py:1857 +#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1871 msgid "SolderPaste Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:641 flatcamGUI/FlatCAMGUI.py:1858 +#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1872 #: flatcamTools/ToolSub.py:26 msgid "Substract Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1863 +#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1877 msgid "Calculators Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:649 flatcamGUI/FlatCAMGUI.py:663 -#: flatcamGUI/FlatCAMGUI.py:696 flatcamGUI/FlatCAMGUI.py:1867 -#: flatcamGUI/FlatCAMGUI.py:1917 +#: flatcamGUI/FlatCAMGUI.py:662 flatcamGUI/FlatCAMGUI.py:676 +#: flatcamGUI/FlatCAMGUI.py:709 flatcamGUI/FlatCAMGUI.py:1881 +#: flatcamGUI/FlatCAMGUI.py:1931 msgid "Select" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:650 flatcamGUI/FlatCAMGUI.py:1868 +#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1882 msgid "Add Drill Hole" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1870 +#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1884 msgid "Add Drill Hole Array" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1871 +#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1885 msgid "Resize Drill" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:656 flatcamGUI/FlatCAMGUI.py:1874 +#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1888 msgid "Copy Drill" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:657 flatcamGUI/FlatCAMGUI.py:1876 +#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1890 msgid "Delete Drill" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:660 flatcamGUI/FlatCAMGUI.py:1879 +#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1893 msgid "Move Drill" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:664 flatcamGUI/FlatCAMGUI.py:1883 +#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1897 msgid "Add Circle" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1884 +#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1898 msgid "Add Arc" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:667 flatcamGUI/FlatCAMGUI.py:1886 +#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1900 msgid "Add Rectangle" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1889 +#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1903 msgid "Add Path" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:671 flatcamGUI/FlatCAMGUI.py:1891 +#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1905 msgid "Add Polygon" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1893 +#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1907 msgid "Add Text" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:674 flatcamGUI/FlatCAMGUI.py:1895 +#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1909 msgid "Add Buffer" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:675 flatcamGUI/FlatCAMGUI.py:1896 +#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1910 msgid "Paint Shape" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1899 +#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:1913 msgid "Polygon Union" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1901 +#: flatcamGUI/FlatCAMGUI.py:693 flatcamGUI/FlatCAMGUI.py:1915 msgid "Polygon Intersection" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:682 flatcamGUI/FlatCAMGUI.py:1903 +#: flatcamGUI/FlatCAMGUI.py:695 flatcamGUI/FlatCAMGUI.py:1917 msgid "Polygon Subtraction" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:685 flatcamGUI/FlatCAMGUI.py:1906 +#: flatcamGUI/FlatCAMGUI.py:698 flatcamGUI/FlatCAMGUI.py:1920 msgid "Cut Path" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:686 +#: flatcamGUI/FlatCAMGUI.py:699 msgid "Copy Shape(s)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:689 +#: flatcamGUI/FlatCAMGUI.py:702 msgid "Delete Shape '-'" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:715 -#: flatcamGUI/FlatCAMGUI.py:1911 flatcamGUI/FlatCAMGUI.py:1936 +#: flatcamGUI/FlatCAMGUI.py:704 flatcamGUI/FlatCAMGUI.py:728 +#: flatcamGUI/FlatCAMGUI.py:1925 flatcamGUI/FlatCAMGUI.py:1950 msgid "Transformations" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:693 +#: flatcamGUI/FlatCAMGUI.py:706 msgid "Move Objects " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:697 flatcamGUI/FlatCAMGUI.py:1918 +#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1932 msgid "Add Pad" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:699 flatcamGUI/FlatCAMGUI.py:1920 +#: flatcamGUI/FlatCAMGUI.py:712 flatcamGUI/FlatCAMGUI.py:1934 msgid "Add Track" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:700 flatcamGUI/FlatCAMGUI.py:1921 +#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1935 msgid "Add Region" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:702 flatcamGUI/FlatCAMGUI.py:1923 +#: flatcamGUI/FlatCAMGUI.py:715 flatcamGUI/FlatCAMGUI.py:1937 msgid "Poligonize" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:704 flatcamGUI/FlatCAMGUI.py:1925 +#: flatcamGUI/FlatCAMGUI.py:717 flatcamGUI/FlatCAMGUI.py:1939 msgid "SemiDisc" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:1926 +#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1940 msgid "Disc" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:717 flatcamGUI/FlatCAMGUI.py:1588 -#: flatcamGUI/FlatCAMGUI.py:1608 flatcamGUI/FlatCAMGUI.py:1938 +#: flatcamGUI/FlatCAMGUI.py:730 flatcamGUI/FlatCAMGUI.py:1602 +#: flatcamGUI/FlatCAMGUI.py:1622 flatcamGUI/FlatCAMGUI.py:1952 #: flatcamTools/ToolMove.py:26 msgid "Move" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:723 flatcamGUI/FlatCAMGUI.py:1944 +#: flatcamGUI/FlatCAMGUI.py:736 flatcamGUI/FlatCAMGUI.py:1958 msgid "Snap to grid" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:726 flatcamGUI/FlatCAMGUI.py:1947 +#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1961 msgid "Grid X snapping distance" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:731 flatcamGUI/FlatCAMGUI.py:1952 +#: flatcamGUI/FlatCAMGUI.py:744 flatcamGUI/FlatCAMGUI.py:1966 msgid "Grid Y snapping distance" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:737 flatcamGUI/FlatCAMGUI.py:1958 +#: flatcamGUI/FlatCAMGUI.py:750 flatcamGUI/FlatCAMGUI.py:1972 msgid "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:743 flatcamGUI/FlatCAMGUI.py:1964 +#: flatcamGUI/FlatCAMGUI.py:756 flatcamGUI/FlatCAMGUI.py:1978 msgid "Snap to corner" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:747 flatcamGUI/FlatCAMGUI.py:1968 -#: flatcamGUI/FlatCAMGUI.py:3311 +#: flatcamGUI/FlatCAMGUI.py:760 flatcamGUI/FlatCAMGUI.py:1982 +#: flatcamGUI/FlatCAMGUI.py:3339 msgid "Max. magnet distance" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:775 flatcamGUI/FlatCAMGUI.py:1572 +#: flatcamGUI/FlatCAMGUI.py:788 flatcamGUI/FlatCAMGUI.py:1586 msgid "Project" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:785 +#: flatcamGUI/FlatCAMGUI.py:798 msgid "Selected" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:804 flatcamGUI/FlatCAMGUI.py:812 +#: flatcamGUI/FlatCAMGUI.py:817 flatcamGUI/FlatCAMGUI.py:825 msgid "Plot Area" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:836 +#: flatcamGUI/FlatCAMGUI.py:849 msgid "General" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:845 +#: flatcamGUI/FlatCAMGUI.py:858 msgid "APP. DEFAULTS" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:846 +#: flatcamGUI/FlatCAMGUI.py:859 msgid "PROJ. OPTIONS " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:857 +#: flatcamGUI/FlatCAMGUI.py:870 msgid "GERBER" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:866 +#: flatcamGUI/FlatCAMGUI.py:879 msgid "EXCELLON" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:875 +#: flatcamGUI/FlatCAMGUI.py:888 msgid "GEOMETRY" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:885 +#: flatcamGUI/FlatCAMGUI.py:898 msgid "CNC-JOB" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:894 +#: flatcamGUI/FlatCAMGUI.py:907 msgid "TOOLS" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:911 +#: flatcamGUI/FlatCAMGUI.py:924 msgid "Import Preferences" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:914 +#: flatcamGUI/FlatCAMGUI.py:927 msgid "" "Import a full set of FlatCAM settings from a file\n" "previously saved on HDD.\n" @@ -4011,35 +4091,35 @@ msgid "" "on the first start. Do not delete that file." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:921 +#: flatcamGUI/FlatCAMGUI.py:934 msgid "Export Preferences" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:924 +#: flatcamGUI/FlatCAMGUI.py:937 msgid "" "Export a full set of FlatCAM settings in a file\n" "that is saved on HDD." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:929 +#: flatcamGUI/FlatCAMGUI.py:942 msgid "Open Pref Folder" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:932 +#: flatcamGUI/FlatCAMGUI.py:945 msgid "Open the folder where FlatCAM save the preferences files." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:940 +#: flatcamGUI/FlatCAMGUI.py:953 msgid "Save Preferences" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:943 +#: flatcamGUI/FlatCAMGUI.py:956 msgid "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:969 +#: flatcamGUI/FlatCAMGUI.py:982 msgid "" "General Shortcut list
\n" " Editor Shortcut list
\n" "
\n" @@ -4639,141 +4719,141 @@ msgid "" " " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1566 +#: flatcamGUI/FlatCAMGUI.py:1579 msgid "Disable" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1568 +#: flatcamGUI/FlatCAMGUI.py:1581 msgid "New" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1569 +#: flatcamGUI/FlatCAMGUI.py:1582 msgid "Geometry" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1570 +#: flatcamGUI/FlatCAMGUI.py:1584 msgid "Excellon" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1575 +#: flatcamGUI/FlatCAMGUI.py:1589 msgid "Grids" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1577 +#: flatcamGUI/FlatCAMGUI.py:1591 msgid "View" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1579 +#: flatcamGUI/FlatCAMGUI.py:1593 msgid "Clear Plot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1580 +#: flatcamGUI/FlatCAMGUI.py:1594 msgid "Replot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1583 +#: flatcamGUI/FlatCAMGUI.py:1597 msgid "Geo Editor" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1584 +#: flatcamGUI/FlatCAMGUI.py:1598 msgid "Line" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1585 +#: flatcamGUI/FlatCAMGUI.py:1599 msgid "Rectangle" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1586 +#: flatcamGUI/FlatCAMGUI.py:1600 msgid "Cut" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1591 +#: flatcamGUI/FlatCAMGUI.py:1605 msgid "Pad" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1592 +#: flatcamGUI/FlatCAMGUI.py:1606 msgid "Pad Array" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1593 +#: flatcamGUI/FlatCAMGUI.py:1607 msgid "Track" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1594 +#: flatcamGUI/FlatCAMGUI.py:1608 msgid "Region" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1596 +#: flatcamGUI/FlatCAMGUI.py:1610 msgid "Exc Editor" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1597 +#: flatcamGUI/FlatCAMGUI.py:1611 msgid "Add Drill" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1629 +#: flatcamGUI/FlatCAMGUI.py:1643 msgid "Print Preview" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1630 +#: flatcamGUI/FlatCAMGUI.py:1644 msgid "Print Code" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1631 +#: flatcamGUI/FlatCAMGUI.py:1645 msgid "Find in Code" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1636 +#: flatcamGUI/FlatCAMGUI.py:1650 msgid "Replace With" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1640 +#: flatcamGUI/FlatCAMGUI.py:1654 msgid "All" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1642 +#: 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:1645 +#: flatcamGUI/FlatCAMGUI.py:1659 msgid "Open Code" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1646 +#: flatcamGUI/FlatCAMGUI.py:1660 msgid "Save Code" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1681 +#: flatcamGUI/FlatCAMGUI.py:1695 msgid "" "Relative neasurement.\n" "Reference is last click position" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1687 +#: flatcamGUI/FlatCAMGUI.py:1701 msgid "" "Absolute neasurement.\n" "Reference is (X=0, Y= 0) position" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1882 +#: flatcamGUI/FlatCAMGUI.py:1896 msgid "Select 'Esc'" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1907 +#: flatcamGUI/FlatCAMGUI.py:1921 msgid "Copy Objects" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1909 +#: flatcamGUI/FlatCAMGUI.py:1923 msgid "Delete Shape" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1914 +#: flatcamGUI/FlatCAMGUI.py:1928 msgid "Move Objects" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2343 +#: flatcamGUI/FlatCAMGUI.py:2358 msgid "" "Please first select a geometry item to be cutted\n" "then select the geometry item that will be cutted\n" @@ -4781,131 +4861,131 @@ msgid "" "the toolbar button." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2350 flatcamGUI/FlatCAMGUI.py:2487 -#: flatcamGUI/FlatCAMGUI.py:2546 flatcamGUI/FlatCAMGUI.py:2566 +#: flatcamGUI/FlatCAMGUI.py:2365 flatcamGUI/FlatCAMGUI.py:2502 +#: flatcamGUI/FlatCAMGUI.py:2561 flatcamGUI/FlatCAMGUI.py:2581 msgid "Warning" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2417 flatcamGUI/FlatCAMGUI.py:2616 -#: flatcamGUI/FlatCAMGUI.py:2827 +#: flatcamGUI/FlatCAMGUI.py:2432 flatcamGUI/FlatCAMGUI.py:2631 +#: flatcamGUI/FlatCAMGUI.py:2842 msgid "[WARNING_NOTCL] Cancelled." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2482 +#: flatcamGUI/FlatCAMGUI.py:2497 msgid "" "Please select geometry items \n" "on which to perform Intersection Tool." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2541 +#: flatcamGUI/FlatCAMGUI.py:2556 msgid "" "Please select geometry items \n" "on which to perform Substraction Tool." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2561 +#: flatcamGUI/FlatCAMGUI.py:2576 msgid "" "Please select geometry items \n" "on which to perform union." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2632 flatcamGUI/FlatCAMGUI.py:2844 +#: flatcamGUI/FlatCAMGUI.py:2647 flatcamGUI/FlatCAMGUI.py:2859 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to delete." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2716 flatcamGUI/FlatCAMGUI.py:2911 +#: flatcamGUI/FlatCAMGUI.py:2731 flatcamGUI/FlatCAMGUI.py:2926 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to copy." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2762 flatcamGUI/FlatCAMGUI.py:2957 +#: flatcamGUI/FlatCAMGUI.py:2777 flatcamGUI/FlatCAMGUI.py:2972 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to move." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2971 +#: flatcamGUI/FlatCAMGUI.py:2986 msgid "New Tool ..." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2972 +#: flatcamGUI/FlatCAMGUI.py:2987 msgid "Enter a Tool Diameter:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3014 +#: flatcamGUI/FlatCAMGUI.py:3029 msgid "Measurement Tool exit..." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3296 +#: flatcamGUI/FlatCAMGUI.py:3324 msgid "Grid X value:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3298 +#: flatcamGUI/FlatCAMGUI.py:3326 msgid "This is the Grid snap value on X axis." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3303 +#: flatcamGUI/FlatCAMGUI.py:3331 msgid "Grid Y value:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3305 +#: flatcamGUI/FlatCAMGUI.py:3333 msgid "This is the Grid snap value on Y axis." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3310 +#: flatcamGUI/FlatCAMGUI.py:3338 msgid "Snap Max:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3315 +#: flatcamGUI/FlatCAMGUI.py:3343 msgid "Workspace:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3317 +#: flatcamGUI/FlatCAMGUI.py:3345 msgid "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3320 +#: flatcamGUI/FlatCAMGUI.py:3348 msgid "Wk. format:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3322 +#: flatcamGUI/FlatCAMGUI.py:3350 msgid "" "Select the type of rectangle to be used on canvas,\n" "as valid workspace." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3335 +#: flatcamGUI/FlatCAMGUI.py:3363 msgid "Plot Fill:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3337 +#: flatcamGUI/FlatCAMGUI.py:3365 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:3351 flatcamGUI/FlatCAMGUI.py:3401 -#: flatcamGUI/FlatCAMGUI.py:3451 +#: flatcamGUI/FlatCAMGUI.py:3379 flatcamGUI/FlatCAMGUI.py:3429 +#: flatcamGUI/FlatCAMGUI.py:3479 msgid "Alpha Level:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3353 +#: flatcamGUI/FlatCAMGUI.py:3381 msgid "Set the fill transparency for plotted objects." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3370 +#: flatcamGUI/FlatCAMGUI.py:3398 msgid "Plot Line:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3372 +#: flatcamGUI/FlatCAMGUI.py:3400 msgid "Set the line color for plotted objects." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3384 +#: flatcamGUI/FlatCAMGUI.py:3412 msgid "Sel. Fill:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3386 +#: flatcamGUI/FlatCAMGUI.py:3414 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from left to right.\n" @@ -4913,23 +4993,23 @@ msgid "" "digits are for alpha (transparency) level." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3403 +#: flatcamGUI/FlatCAMGUI.py:3431 msgid "Set the fill transparency for the 'left to right' selection box." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3420 +#: flatcamGUI/FlatCAMGUI.py:3448 msgid "Sel. Line:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3422 +#: flatcamGUI/FlatCAMGUI.py:3450 msgid "Set the line color for the 'left to right' selection box." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3434 +#: flatcamGUI/FlatCAMGUI.py:3462 msgid "Sel2. Fill:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3436 +#: flatcamGUI/FlatCAMGUI.py:3464 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from right to left.\n" @@ -4937,116 +5017,116 @@ msgid "" "digits are for alpha (transparency) level." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3453 +#: flatcamGUI/FlatCAMGUI.py:3481 msgid "Set the fill transparency for selection 'right to left' box." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3470 +#: flatcamGUI/FlatCAMGUI.py:3498 msgid "Sel2. Line:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3472 +#: flatcamGUI/FlatCAMGUI.py:3500 msgid "Set the line color for the 'right to left' selection box." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3484 +#: flatcamGUI/FlatCAMGUI.py:3512 msgid "Editor Draw:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3486 +#: flatcamGUI/FlatCAMGUI.py:3514 msgid "Set the color for the shape." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3498 +#: flatcamGUI/FlatCAMGUI.py:3526 msgid "Editor Draw Sel.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3500 +#: flatcamGUI/FlatCAMGUI.py:3528 msgid "Set the color of the shape when selected." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3512 +#: flatcamGUI/FlatCAMGUI.py:3540 msgid "Project Items:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3514 +#: flatcamGUI/FlatCAMGUI.py:3542 msgid "Set the color of the items in Project Tab Tree." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3525 +#: flatcamGUI/FlatCAMGUI.py:3553 msgid "Proj. Dis. Items:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3527 +#: flatcamGUI/FlatCAMGUI.py:3555 msgid "" "Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3578 +#: flatcamGUI/FlatCAMGUI.py:3606 msgid "GUI Settings" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3585 +#: flatcamGUI/FlatCAMGUI.py:3613 msgid "Layout:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3587 +#: flatcamGUI/FlatCAMGUI.py:3615 msgid "" "Select an layout for FlatCAM.\n" "It is applied immediately." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3603 +#: flatcamGUI/FlatCAMGUI.py:3631 msgid "Style:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3605 +#: flatcamGUI/FlatCAMGUI.py:3633 msgid "" "Select an style for FlatCAM.\n" "It will be applied at the next app start." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3616 +#: flatcamGUI/FlatCAMGUI.py:3644 msgid "HDPI Support:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3618 +#: flatcamGUI/FlatCAMGUI.py:3646 msgid "" "Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3631 +#: flatcamGUI/FlatCAMGUI.py:3659 msgid "Clear GUI Settings:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3633 +#: flatcamGUI/FlatCAMGUI.py:3661 msgid "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3636 +#: flatcamGUI/FlatCAMGUI.py:3664 msgid "Clear" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3640 +#: flatcamGUI/FlatCAMGUI.py:3668 msgid "Hover Shape:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3642 +#: flatcamGUI/FlatCAMGUI.py:3670 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:3649 +#: flatcamGUI/FlatCAMGUI.py:3677 msgid "Sel. Shape:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3651 +#: flatcamGUI/FlatCAMGUI.py:3679 msgid "" "Enable the display of a selection shape for FlatCAM objects.\n" "It is displayed whenever the mouse selects an object\n" @@ -5054,34 +5134,34 @@ msgid "" "right to left." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3693 +#: flatcamGUI/FlatCAMGUI.py:3721 msgid "Are you sure you want to delete the GUI Settings? \n" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3696 +#: flatcamGUI/FlatCAMGUI.py:3724 msgid "Clear GUI Settings" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3717 +#: flatcamGUI/FlatCAMGUI.py:3745 msgid "App Preferences" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3723 +#: flatcamGUI/FlatCAMGUI.py:3751 msgid "Units:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3724 +#: flatcamGUI/FlatCAMGUI.py:3752 msgid "" "The default value for FlatCAM units.\n" "Whatever is selected here is set every time\n" "FLatCAM is started." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3731 +#: flatcamGUI/FlatCAMGUI.py:3759 msgid "APP. LEVEL:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3732 +#: flatcamGUI/FlatCAMGUI.py:3760 msgid "" "Choose the default level of usage for FlatCAM.\n" "BASIC level -> reduced functionality, best for beginner's.\n" @@ -5091,19 +5171,19 @@ msgid "" "the Selected Tab for all kinds of FlatCAM objects." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3741 +#: flatcamGUI/FlatCAMGUI.py:3769 msgid "Languages:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3742 +#: flatcamGUI/FlatCAMGUI.py:3770 msgid "Set the language used throughout FlatCAM." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3745 +#: flatcamGUI/FlatCAMGUI.py:3773 msgid "Apply Language" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3746 +#: flatcamGUI/FlatCAMGUI.py:3774 msgid "" "Set the language used throughout FlatCAM.\n" "The app will restart after click.Windows: When FlatCAM is installed in " @@ -5114,91 +5194,91 @@ msgid "" "applied at the next app start." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3755 +#: flatcamGUI/FlatCAMGUI.py:3783 msgid "Shell at StartUp:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3757 flatcamGUI/FlatCAMGUI.py:3762 +#: flatcamGUI/FlatCAMGUI.py:3785 flatcamGUI/FlatCAMGUI.py:3790 msgid "" "Check this box if you want the shell to\n" "start automatically at startup." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3767 +#: flatcamGUI/FlatCAMGUI.py:3795 msgid "Version Check:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3769 flatcamGUI/FlatCAMGUI.py:3774 +#: flatcamGUI/FlatCAMGUI.py:3797 flatcamGUI/FlatCAMGUI.py:3802 msgid "" "Check this box if you want to check\n" "for a new version automatically at startup." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3779 +#: flatcamGUI/FlatCAMGUI.py:3807 msgid "Send Stats:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3781 flatcamGUI/FlatCAMGUI.py:3786 +#: flatcamGUI/FlatCAMGUI.py:3809 flatcamGUI/FlatCAMGUI.py:3814 msgid "" "Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3793 +#: flatcamGUI/FlatCAMGUI.py:3821 msgid "Pan Button:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3794 +#: flatcamGUI/FlatCAMGUI.py:3822 msgid "" "Select the mouse button to use for panning:\n" "- MMB --> Middle Mouse Button\n" "- RMB --> Right Mouse Button" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3801 +#: flatcamGUI/FlatCAMGUI.py:3829 msgid "Multiple Sel:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3802 +#: flatcamGUI/FlatCAMGUI.py:3830 msgid "Select the key used for multiple selection." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3807 +#: flatcamGUI/FlatCAMGUI.py:3835 msgid "Project at StartUp:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3809 flatcamGUI/FlatCAMGUI.py:3814 +#: flatcamGUI/FlatCAMGUI.py:3837 flatcamGUI/FlatCAMGUI.py:3842 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:3819 +#: flatcamGUI/FlatCAMGUI.py:3847 msgid "Project AutoHide:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3821 flatcamGUI/FlatCAMGUI.py:3827 +#: flatcamGUI/FlatCAMGUI.py:3849 flatcamGUI/FlatCAMGUI.py:3855 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:3833 +#: flatcamGUI/FlatCAMGUI.py:3861 msgid "Enable ToolTips:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3835 flatcamGUI/FlatCAMGUI.py:3840 +#: flatcamGUI/FlatCAMGUI.py:3863 flatcamGUI/FlatCAMGUI.py:3868 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:3843 +#: flatcamGUI/FlatCAMGUI.py:3871 msgid "Workers number:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3845 flatcamGUI/FlatCAMGUI.py:3854 +#: flatcamGUI/FlatCAMGUI.py:3873 flatcamGUI/FlatCAMGUI.py:3882 msgid "" "The number of Qthreads made available to the App.\n" "A bigger number may finish the jobs more quickly but\n" @@ -5208,108 +5288,131 @@ msgid "" "After change, it will be applied at next App start." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3895 +#: flatcamGUI/FlatCAMGUI.py:3894 flatcamGUI/FlatCAMGUI.py:3903 +msgid "" +"This value can counter the effect of the Circle Steps\n" +"parameter. Default value is 0.01.\n" +"A lower value will increase the detail both in image\n" +"and in Gcode for the circles, with a higher cost in\n" +"performance. Higher value will provide more\n" +"performance at the expense of level of detail." +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:3939 +msgid "\"Open\" behavior" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:3941 +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" +"\n" +"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." +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:3950 msgid "Save Compressed Project" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3897 +#: flatcamGUI/FlatCAMGUI.py:3952 msgid "" "Whether to save a compressed or uncompressed project.\n" "When checked it will save a compressed FlatCAM project." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3908 +#: flatcamGUI/FlatCAMGUI.py:3963 msgid "Compression Level:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3910 +#: flatcamGUI/FlatCAMGUI.py:3965 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:3936 flatcamGUI/FlatCAMGUI.py:4177 -#: flatcamGUI/FlatCAMGUI.py:4832 flatcamGUI/FlatCAMGUI.py:5156 +#: flatcamGUI/FlatCAMGUI.py:3991 flatcamGUI/FlatCAMGUI.py:4360 +#: flatcamGUI/FlatCAMGUI.py:5030 flatcamGUI/FlatCAMGUI.py:5402 #: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:505 -#: flatcamGUI/ObjectUI.py:830 flatcamGUI/ObjectUI.py:1344 +#: flatcamGUI/ObjectUI.py:833 flatcamGUI/ObjectUI.py:1350 msgid "Plot Options:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3943 flatcamGUI/FlatCAMGUI.py:4189 +#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4372 #: flatcamGUI/ObjectUI.py:156 flatcamGUI/ObjectUI.py:506 msgid "Solid" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3945 flatcamGUI/ObjectUI.py:158 +#: flatcamGUI/FlatCAMGUI.py:4000 flatcamGUI/ObjectUI.py:158 msgid "Solid color polygons." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3950 flatcamGUI/ObjectUI.py:164 +#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/ObjectUI.py:164 msgid "M-Color" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3952 flatcamGUI/ObjectUI.py:166 +#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:166 msgid "Draw polygons in different colors." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3957 flatcamGUI/FlatCAMGUI.py:4183 -#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/ObjectUI.py:172 +#: flatcamGUI/FlatCAMGUI.py:4012 flatcamGUI/FlatCAMGUI.py:4366 +#: flatcamGUI/FlatCAMGUI.py:5034 flatcamGUI/ObjectUI.py:172 msgid "Plot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3959 flatcamGUI/FlatCAMGUI.py:4838 +#: flatcamGUI/FlatCAMGUI.py:4014 flatcamGUI/FlatCAMGUI.py:5036 #: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:546 -#: flatcamGUI/ObjectUI.py:876 flatcamGUI/ObjectUI.py:1431 +#: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1437 msgid "Plot (show) this object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3964 flatcamGUI/FlatCAMGUI.py:4845 -#: flatcamGUI/FlatCAMGUI.py:5192 +#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:5043 +#: flatcamGUI/FlatCAMGUI.py:5438 msgid "Circle Steps:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3966 +#: flatcamGUI/FlatCAMGUI.py:4021 msgid "" "The number of circle steps for Gerber \n" "circular aperture linear approximation." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3981 +#: flatcamGUI/FlatCAMGUI.py:4036 msgid "Gerber Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3985 flatcamGUI/ObjectUI.py:251 +#: flatcamGUI/FlatCAMGUI.py:4040 flatcamGUI/ObjectUI.py:251 msgid "Isolation Routing:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3987 flatcamGUI/ObjectUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:4042 flatcamGUI/ObjectUI.py:253 msgid "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4555 -#: flatcamGUI/FlatCAMGUI.py:5480 flatcamGUI/ObjectUI.py:785 -#: flatcamGUI/ObjectUI.py:801 +#: flatcamGUI/FlatCAMGUI.py:4053 flatcamGUI/FlatCAMGUI.py:4753 +#: flatcamGUI/FlatCAMGUI.py:5726 flatcamGUI/ObjectUI.py:788 +#: flatcamGUI/ObjectUI.py:804 msgid "Diameter of the cutting tool." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4005 +#: flatcamGUI/FlatCAMGUI.py:4060 msgid "Width (# passes):" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:275 +#: flatcamGUI/FlatCAMGUI.py:4062 flatcamGUI/ObjectUI.py:275 msgid "" "Width of the isolation gap in\n" "number (integer) of tool widths." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4015 flatcamGUI/ObjectUI.py:283 +#: flatcamGUI/FlatCAMGUI.py:4070 flatcamGUI/ObjectUI.py:283 msgid "Pass overlap:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4017 flatcamGUI/ObjectUI.py:285 +#: flatcamGUI/FlatCAMGUI.py:4072 flatcamGUI/ObjectUI.py:285 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -5318,42 +5421,42 @@ msgid "" "above." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4025 flatcamGUI/ObjectUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:4080 flatcamGUI/ObjectUI.py:295 msgid "Milling Type:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4027 flatcamGUI/ObjectUI.py:297 +#: flatcamGUI/FlatCAMGUI.py:4082 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:4037 +#: flatcamGUI/FlatCAMGUI.py:4092 msgid "Combine Passes" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4039 flatcamGUI/ObjectUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:4094 flatcamGUI/ObjectUI.py:309 msgid "Combine all passes into one object" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4044 +#: flatcamGUI/FlatCAMGUI.py:4099 msgid "Clear non-copper:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4046 flatcamGUI/FlatCAMGUI.py:5368 +#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/FlatCAMGUI.py:5614 #: flatcamGUI/ObjectUI.py:386 msgid "" "Create a Geometry object with\n" "toolpaths to cut all non-copper regions." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4055 flatcamGUI/FlatCAMGUI.py:4081 +#: flatcamGUI/FlatCAMGUI.py:4110 flatcamGUI/FlatCAMGUI.py:4136 #: flatcamGUI/ObjectUI.py:430 flatcamGUI/ObjectUI.py:464 msgid "Boundary Margin:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4057 flatcamGUI/ObjectUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:4112 flatcamGUI/ObjectUI.py:432 msgid "" "Specify the edge of the PCB\n" "by drawing a box around all\n" @@ -5361,27 +5464,27 @@ msgid "" "distance." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4067 flatcamGUI/FlatCAMGUI.py:4090 +#: flatcamGUI/FlatCAMGUI.py:4122 flatcamGUI/FlatCAMGUI.py:4145 msgid "Rounded corners" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4069 +#: flatcamGUI/FlatCAMGUI.py:4124 msgid "" "Creates a Geometry objects with polygons\n" "covering the copper-free areas of the PCB." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4075 flatcamGUI/ObjectUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:4130 flatcamGUI/ObjectUI.py:454 msgid "Bounding Box:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4083 flatcamGUI/ObjectUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:4138 flatcamGUI/ObjectUI.py:466 msgid "" "Distance of the edges of the box\n" "to the nearest polygon." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4092 flatcamGUI/ObjectUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:4147 flatcamGUI/ObjectUI.py:476 msgid "" "If the bounding box is \n" "to have rounded corners\n" @@ -5389,74 +5492,134 @@ msgid "" "the margin." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4106 +#: flatcamGUI/FlatCAMGUI.py:4161 msgid "Gerber Adv. Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4110 +#: flatcamGUI/FlatCAMGUI.py:4165 msgid "Advanced Param.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4112 +#: flatcamGUI/FlatCAMGUI.py:4167 msgid "" "A list of Gerber advanced parameters.\n" "Those parameters are available only for\n" "Advanced App. Level." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4122 flatcamGUI/ObjectUI.py:314 +#: flatcamGUI/FlatCAMGUI.py:4177 flatcamGUI/ObjectUI.py:314 msgid "\"Follow\"" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4124 flatcamGUI/ObjectUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:4179 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:4132 +#: flatcamGUI/FlatCAMGUI.py:4187 msgid "Table Show/Hide" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4134 +#: flatcamGUI/FlatCAMGUI.py:4189 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:4142 -msgid "Ap. Scale Factor:" +#: flatcamGUI/FlatCAMGUI.py:4228 +msgid "Gerber Export" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4144 +#: flatcamGUI/FlatCAMGUI.py:4231 flatcamGUI/FlatCAMGUI.py:4902 +msgid "Export Options:" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:4233 msgid "" -"Change the size of the selected apertures.\n" -"Factor by which to multiply\n" -"geometric features of this object." +"The parameters set here are used in the file exported\n" +"when using the File -> Export -> Export Gerber menu entry." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4154 -msgid "Ap. Buffer Factor:" +#: flatcamGUI/FlatCAMGUI.py:4242 flatcamGUI/FlatCAMGUI.py:4913 +msgid "Units:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4156 +#: flatcamGUI/FlatCAMGUI.py:4244 flatcamGUI/FlatCAMGUI.py:4250 +msgid "The units used in the Gerber file." +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:4256 flatcamGUI/FlatCAMGUI.py:4927 +msgid "Int/Decimals:" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:4258 msgid "" -"Change the size of the selected apertures.\n" -"Factor by which to expand/shrink\n" -"geometric features of this object." +"The number of digits in the whole part of the number\n" +"and in the fractional part of the number." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4174 +#: flatcamGUI/FlatCAMGUI.py:4269 +msgid "" +"This numbers signify the number of digits in\n" +"the whole part of Gerber coordinates." +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:4283 +msgid "" +"This numbers signify the number of digits in\n" +"the decimal part of Gerber coordinates." +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:4292 flatcamGUI/FlatCAMGUI.py:4988 +msgid "Zeros:" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:4295 flatcamGUI/FlatCAMGUI.py:4305 +msgid "" +"This sets the type of Gerber zeros.\n" +"If LZ then Leading Zeros are removed and\n" +"Trailing Zeros are kept.\n" +"If TZ is checked then Trailing Zeros are removed\n" +"and Leading Zeros are kept." +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:4325 flatcamGUI/FlatCAMGUI.py:5368 +#: flatcamGUI/FlatCAMGUI.py:5612 flatcamGUI/FlatCAMGUI.py:5713 +#: flatcamGUI/FlatCAMGUI.py:5792 flatcamGUI/FlatCAMGUI.py:5851 +#: flatcamGUI/FlatCAMGUI.py:5954 flatcamGUI/FlatCAMGUI.py:6015 +#: flatcamGUI/FlatCAMGUI.py:6214 flatcamGUI/FlatCAMGUI.py:6341 +msgid "Parameters:" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:4327 +msgid "A list of Gerber Editor parameters." +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:4335 flatcamGUI/FlatCAMGUI.py:5378 +msgid "Selection limit:" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:4337 +msgid "" +"Set the number of selected Gerber 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:4357 msgid "Excellon General" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4196 +#: flatcamGUI/FlatCAMGUI.py:4379 msgid "Excellon Format:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4198 +#: flatcamGUI/FlatCAMGUI.py:4381 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -5479,41 +5642,41 @@ msgid "" "KiCAD 3:5 INCH TZ" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4223 +#: flatcamGUI/FlatCAMGUI.py:4406 msgid "INCH:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4226 +#: flatcamGUI/FlatCAMGUI.py:4409 msgid "Default values for INCH are 2:4" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4234 flatcamGUI/FlatCAMGUI.py:4267 -#: flatcamGUI/FlatCAMGUI.py:4744 +#: flatcamGUI/FlatCAMGUI.py:4417 flatcamGUI/FlatCAMGUI.py:4450 +#: flatcamGUI/FlatCAMGUI.py:4942 msgid "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4248 flatcamGUI/FlatCAMGUI.py:4281 -#: flatcamGUI/FlatCAMGUI.py:4758 +#: flatcamGUI/FlatCAMGUI.py:4431 flatcamGUI/FlatCAMGUI.py:4464 +#: flatcamGUI/FlatCAMGUI.py:4956 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4256 +#: flatcamGUI/FlatCAMGUI.py:4439 msgid "METRIC:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4259 +#: flatcamGUI/FlatCAMGUI.py:4442 msgid "Default values for METRIC are 3:3" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4290 +#: flatcamGUI/FlatCAMGUI.py:4473 msgid "Default Zeros:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4293 flatcamGUI/FlatCAMGUI.py:4793 +#: flatcamGUI/FlatCAMGUI.py:4476 flatcamGUI/FlatCAMGUI.py:4991 msgid "" "This sets the type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -5522,7 +5685,7 @@ msgid "" "and Leading Zeros are removed." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4304 +#: flatcamGUI/FlatCAMGUI.py:4487 msgid "" "This sets the default type of Excellon zeros.\n" "If it is not detected in the parsed file the value here\n" @@ -5532,11 +5695,11 @@ msgid "" "and Leading Zeros are removed." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4318 +#: flatcamGUI/FlatCAMGUI.py:4501 msgid "Default Units:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4321 +#: flatcamGUI/FlatCAMGUI.py:4504 msgid "" "This sets the default units of Excellon files.\n" "If it is not detected in the parsed file the value here\n" @@ -5544,22 +5707,22 @@ msgid "" "therefore this parameter will be used." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4332 +#: flatcamGUI/FlatCAMGUI.py:4515 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:4348 +#: flatcamGUI/FlatCAMGUI.py:4531 msgid "Excellon Optimization:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4355 +#: flatcamGUI/FlatCAMGUI.py:4538 msgid "Algorithm: " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4358 flatcamGUI/FlatCAMGUI.py:4371 +#: flatcamGUI/FlatCAMGUI.py:4541 flatcamGUI/FlatCAMGUI.py:4554 msgid "" "This sets the optimization type for the Excellon drill path.\n" "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" @@ -5571,11 +5734,11 @@ msgid "" "Travelling Salesman algorithm for path optimization." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4383 +#: flatcamGUI/FlatCAMGUI.py:4566 msgid "Optimization Time: " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4386 +#: flatcamGUI/FlatCAMGUI.py:4569 msgid "" "When OR-Tools Metaheuristic (MH) is enabled there is a\n" "maximum threshold for how much time is spent doing the\n" @@ -5583,120 +5746,132 @@ msgid "" "In seconds." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4427 +#: flatcamGUI/FlatCAMGUI.py:4611 msgid "Excellon Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4430 flatcamGUI/ObjectUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:4614 flatcamGUI/ObjectUI.py:584 msgid "Create CNC Job" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4432 +#: flatcamGUI/FlatCAMGUI.py:4616 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4440 flatcamGUI/FlatCAMGUI.py:4896 -#: flatcamGUI/FlatCAMGUI.py:5904 flatcamGUI/ObjectUI.py:595 -#: flatcamGUI/ObjectUI.py:1059 flatcamTools/ToolCalculators.py:108 +#: flatcamGUI/FlatCAMGUI.py:4624 flatcamGUI/FlatCAMGUI.py:5094 +#: flatcamGUI/FlatCAMGUI.py:6150 flatcamGUI/ObjectUI.py:595 +#: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolCalculators.py:108 msgid "Cut Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4442 flatcamGUI/ObjectUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:4626 flatcamGUI/ObjectUI.py:597 msgid "" "Drill depth (negative)\n" "below the copper surface." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4449 flatcamGUI/FlatCAMGUI.py:4929 -#: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1095 +#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/FlatCAMGUI.py:5127 +#: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1098 msgid "Travel Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4451 flatcamGUI/ObjectUI.py:607 +#: flatcamGUI/FlatCAMGUI.py:4635 flatcamGUI/ObjectUI.py:607 msgid "" "Tool height when travelling\n" "across the XY plane." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4459 flatcamGUI/FlatCAMGUI.py:4939 +#: flatcamGUI/FlatCAMGUI.py:4643 flatcamGUI/FlatCAMGUI.py:5137 msgid "Tool change:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4461 flatcamGUI/FlatCAMGUI.py:4941 +#: flatcamGUI/FlatCAMGUI.py:4645 flatcamGUI/FlatCAMGUI.py:5139 #: flatcamGUI/ObjectUI.py:617 msgid "" "Include tool-change sequence\n" "in G-Code (Pause for tool change)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4468 flatcamGUI/FlatCAMGUI.py:4949 +#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5147 msgid "Toolchange Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4470 flatcamGUI/FlatCAMGUI.py:4951 +#: flatcamGUI/FlatCAMGUI.py:4654 flatcamGUI/FlatCAMGUI.py:5149 msgid "Toolchange Z position." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4476 +#: flatcamGUI/FlatCAMGUI.py:4660 msgid "Feedrate:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4478 +#: flatcamGUI/FlatCAMGUI.py:4662 msgid "" "Tool speed while drilling\n" "(in units per minute)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4486 +#: flatcamGUI/FlatCAMGUI.py:4670 msgid "Spindle Speed:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4488 flatcamGUI/FlatCAMGUI.py:4981 -#: flatcamGUI/ObjectUI.py:681 +#: flatcamGUI/FlatCAMGUI.py:4672 flatcamGUI/FlatCAMGUI.py:5179 +#: flatcamGUI/ObjectUI.py:684 msgid "" "Speed of the spindle\n" "in RPM (optional)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4496 flatcamGUI/FlatCAMGUI.py:4989 -#: flatcamGUI/ObjectUI.py:689 flatcamGUI/ObjectUI.py:1218 +#: flatcamGUI/FlatCAMGUI.py:4680 flatcamGUI/FlatCAMGUI.py:5187 +msgid "Spindle dir.:" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:4682 flatcamGUI/FlatCAMGUI.py:5189 +msgid "" +"This sets the direction that the spindle is rotating.\n" +"It can be either:\n" +"- CW = clockwise or\n" +"- CCW = counter clockwise" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:4694 flatcamGUI/FlatCAMGUI.py:5201 +#: flatcamGUI/ObjectUI.py:692 flatcamGUI/ObjectUI.py:1224 msgid "Dwell:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4498 flatcamGUI/FlatCAMGUI.py:4991 -#: flatcamGUI/ObjectUI.py:691 flatcamGUI/ObjectUI.py:1221 +#: flatcamGUI/FlatCAMGUI.py:4696 flatcamGUI/FlatCAMGUI.py:5203 +#: 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:4501 flatcamGUI/FlatCAMGUI.py:4994 +#: flatcamGUI/FlatCAMGUI.py:4699 flatcamGUI/FlatCAMGUI.py:5206 msgid "Duration:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4503 flatcamGUI/FlatCAMGUI.py:4996 -#: flatcamGUI/ObjectUI.py:696 flatcamGUI/ObjectUI.py:1228 +#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 +#: flatcamGUI/ObjectUI.py:699 flatcamGUI/ObjectUI.py:1234 msgid "Number of milliseconds for spindle to dwell." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4515 flatcamGUI/FlatCAMGUI.py:5006 -#: flatcamGUI/ObjectUI.py:704 +#: flatcamGUI/FlatCAMGUI.py:4713 flatcamGUI/FlatCAMGUI.py:5218 +#: flatcamGUI/ObjectUI.py:707 msgid "Postprocessor:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4517 +#: flatcamGUI/FlatCAMGUI.py:4715 msgid "" "The postprocessor file that dictates\n" "gcode output." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4527 +#: flatcamGUI/FlatCAMGUI.py:4725 msgid "Gcode: " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4529 +#: flatcamGUI/FlatCAMGUI.py:4727 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -5704,93 +5879,93 @@ msgid "" "converted to drills." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4545 flatcamGUI/ObjectUI.py:769 +#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:772 msgid "Mill Holes" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4547 flatcamGUI/ObjectUI.py:771 +#: flatcamGUI/FlatCAMGUI.py:4745 flatcamGUI/ObjectUI.py:774 msgid "Create Geometry for milling holes." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4553 +#: flatcamGUI/FlatCAMGUI.py:4751 msgid "Drill Tool dia:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4560 +#: flatcamGUI/FlatCAMGUI.py:4758 msgid "Slot Tool dia:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4562 +#: flatcamGUI/FlatCAMGUI.py:4760 msgid "" "Diameter of the cutting tool\n" "when milling slots." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4574 +#: flatcamGUI/FlatCAMGUI.py:4772 msgid "Defaults" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4587 +#: flatcamGUI/FlatCAMGUI.py:4785 msgid "Excellon Adv. Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4593 flatcamGUI/FlatCAMGUI.py:5029 +#: flatcamGUI/FlatCAMGUI.py:4791 flatcamGUI/FlatCAMGUI.py:5241 msgid "Advanced Options:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4595 +#: 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:4603 +#: flatcamGUI/FlatCAMGUI.py:4801 msgid "Offset Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4605 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:4612 flatcamGUI/FlatCAMGUI.py:5040 +#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/FlatCAMGUI.py:5252 msgid "Toolchange X,Y:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4614 flatcamGUI/FlatCAMGUI.py:5042 +#: flatcamGUI/FlatCAMGUI.py:4812 flatcamGUI/FlatCAMGUI.py:5254 msgid "Toolchange X,Y position." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4620 flatcamGUI/FlatCAMGUI.py:5049 +#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5261 #: flatcamGUI/ObjectUI.py:634 msgid "Start move Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4622 +#: 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:4629 flatcamGUI/FlatCAMGUI.py:5059 -#: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1141 +#: flatcamGUI/FlatCAMGUI.py:4827 flatcamGUI/FlatCAMGUI.py:5271 +#: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1144 msgid "End move Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4631 flatcamGUI/FlatCAMGUI.py:5061 +#: flatcamGUI/FlatCAMGUI.py:4829 flatcamGUI/FlatCAMGUI.py:5273 msgid "" "Height of the tool after\n" "the last move at the end of the job." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4638 flatcamGUI/FlatCAMGUI.py:5069 +#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5281 #: flatcamGUI/ObjectUI.py:665 msgid "Feedrate Rapids:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4640 flatcamGUI/ObjectUI.py:667 +#: flatcamGUI/FlatCAMGUI.py:4838 flatcamGUI/ObjectUI.py:667 msgid "" "Tool speed while drilling\n" "(in units per minute).\n" @@ -5799,33 +5974,33 @@ msgid "" "ignore for any other cases." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4651 flatcamGUI/FlatCAMGUI.py:5093 -#: flatcamGUI/ObjectUI.py:715 flatcamGUI/ObjectUI.py:1250 +#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5305 +#: flatcamGUI/ObjectUI.py:718 flatcamGUI/ObjectUI.py:1256 msgid "Probe Z depth:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4653 flatcamGUI/FlatCAMGUI.py:5095 -#: flatcamGUI/ObjectUI.py:717 flatcamGUI/ObjectUI.py:1253 +#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5307 +#: 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:4661 flatcamGUI/FlatCAMGUI.py:5103 -#: flatcamGUI/ObjectUI.py:727 flatcamGUI/ObjectUI.py:1264 +#: flatcamGUI/FlatCAMGUI.py:4859 flatcamGUI/FlatCAMGUI.py:5315 +#: flatcamGUI/ObjectUI.py:730 flatcamGUI/ObjectUI.py:1270 msgid "Feedrate Probe:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4663 flatcamGUI/FlatCAMGUI.py:5105 -#: flatcamGUI/ObjectUI.py:729 flatcamGUI/ObjectUI.py:1267 +#: flatcamGUI/FlatCAMGUI.py:4861 flatcamGUI/FlatCAMGUI.py:5317 +#: flatcamGUI/ObjectUI.py:732 flatcamGUI/ObjectUI.py:1273 msgid "The feedrate used while the probe is probing." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4669 flatcamGUI/FlatCAMGUI.py:5112 +#: flatcamGUI/FlatCAMGUI.py:4867 flatcamGUI/FlatCAMGUI.py:5324 msgid "Fast Plunge:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4671 flatcamGUI/FlatCAMGUI.py:5114 +#: flatcamGUI/FlatCAMGUI.py:4869 flatcamGUI/FlatCAMGUI.py:5326 msgid "" "By checking this, the vertical move from\n" "Z_Toolchange to Z_move is done with G0,\n" @@ -5833,11 +6008,11 @@ msgid "" "WARNING: the move is done at Toolchange X,Y coords." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4680 +#: flatcamGUI/FlatCAMGUI.py:4878 msgid "Fast Retract:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4682 +#: flatcamGUI/FlatCAMGUI.py:4880 msgid "" "Exit hole strategy.\n" " - When uncheked, while exiting the drilled hole the drill bit\n" @@ -5847,33 +6022,21 @@ msgid "" "(travel height) is done as fast as possible (G0) in one move." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4701 +#: flatcamGUI/FlatCAMGUI.py:4899 msgid "Excellon Export" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4704 -msgid "Export Options:" -msgstr "" - -#: flatcamGUI/FlatCAMGUI.py:4706 +#: 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:4715 -msgid "Units:" -msgstr "" - -#: flatcamGUI/FlatCAMGUI.py:4717 flatcamGUI/FlatCAMGUI.py:4723 +#: flatcamGUI/FlatCAMGUI.py:4915 flatcamGUI/FlatCAMGUI.py:4921 msgid "The units used in the Excellon file." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4729 -msgid "Int/Decimals:" -msgstr "" - -#: flatcamGUI/FlatCAMGUI.py:4731 +#: flatcamGUI/FlatCAMGUI.py:4929 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -5881,11 +6044,11 @@ msgid "" "coordinates are not using period." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4767 +#: flatcamGUI/FlatCAMGUI.py:4965 msgid "Format:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4769 flatcamGUI/FlatCAMGUI.py:4779 +#: 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" @@ -5895,11 +6058,7 @@ msgid "" "or TZ = trailing zeros are kept." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4790 -msgid "Zeros:" -msgstr "" - -#: flatcamGUI/FlatCAMGUI.py:4803 +#: flatcamGUI/FlatCAMGUI.py:5001 msgid "" "This sets the default type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -5908,64 +6067,64 @@ msgid "" "and Leading Zeros are removed." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4829 +#: flatcamGUI/FlatCAMGUI.py:5027 msgid "Geometry General" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4847 +#: flatcamGUI/FlatCAMGUI.py:5045 msgid "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4855 +#: flatcamGUI/FlatCAMGUI.py:5053 msgid "Tools" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4862 +#: flatcamGUI/FlatCAMGUI.py:5060 msgid "Tool dia: " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4864 +#: flatcamGUI/FlatCAMGUI.py:5062 msgid "" "The diameter of the cutting\n" "tool.." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4879 +#: flatcamGUI/FlatCAMGUI.py:5077 msgid "Geometry Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4884 +#: flatcamGUI/FlatCAMGUI.py:5082 msgid "Create CNC Job:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4886 +#: flatcamGUI/FlatCAMGUI.py:5084 msgid "" "Create a CNC Job object\n" "tracing the contours of this\n" "Geometry object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4898 flatcamGUI/ObjectUI.py:1062 +#: flatcamGUI/FlatCAMGUI.py:5096 flatcamGUI/ObjectUI.py:1065 msgid "" "Cutting depth (negative)\n" "below the copper surface." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4906 +#: flatcamGUI/FlatCAMGUI.py:5104 msgid "Multidepth" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4908 +#: flatcamGUI/FlatCAMGUI.py:5106 msgid "Multidepth usage: True or False." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4913 +#: flatcamGUI/FlatCAMGUI.py:5111 msgid "Depth/Pass:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4915 +#: flatcamGUI/FlatCAMGUI.py:5113 msgid "" "The depth to cut on each pass,\n" "when multidepth is enabled.\n" @@ -5974,61 +6133,61 @@ msgid "" "which has negative value." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4931 flatcamGUI/ObjectUI.py:1098 +#: flatcamGUI/FlatCAMGUI.py:5129 flatcamGUI/ObjectUI.py:1101 msgid "" "Height of the tool when\n" "moving without cutting." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4958 flatcamGUI/ObjectUI.py:1153 +#: flatcamGUI/FlatCAMGUI.py:5156 flatcamGUI/ObjectUI.py:1156 msgid "Feed Rate X-Y:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4960 flatcamGUI/ObjectUI.py:1156 +#: flatcamGUI/FlatCAMGUI.py:5158 flatcamGUI/ObjectUI.py:1159 msgid "" "Cutting speed in the XY\n" "plane in units per minute" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4968 +#: flatcamGUI/FlatCAMGUI.py:5166 msgid "Feed Rate Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4970 +#: flatcamGUI/FlatCAMGUI.py:5168 msgid "" "Cutting speed in the XY\n" "plane in units per minute.\n" "It is called also Plunge." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4979 flatcamGUI/ObjectUI.py:679 -#: flatcamGUI/ObjectUI.py:1205 +#: flatcamGUI/FlatCAMGUI.py:5177 flatcamGUI/ObjectUI.py:682 +#: flatcamGUI/ObjectUI.py:1211 msgid "Spindle speed:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5008 +#: flatcamGUI/FlatCAMGUI.py:5220 msgid "" "The postprocessor file that dictates\n" "Machine Code output." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5024 +#: flatcamGUI/FlatCAMGUI.py:5236 msgid "Geometry Adv. Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5031 +#: flatcamGUI/FlatCAMGUI.py:5243 msgid "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5051 +#: flatcamGUI/FlatCAMGUI.py:5263 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:5071 +#: flatcamGUI/FlatCAMGUI.py:5283 msgid "" "Cutting speed in the XY plane\n" "(in units per minute).\n" @@ -6037,11 +6196,11 @@ msgid "" "ignore for any other cases." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5083 +#: flatcamGUI/FlatCAMGUI.py:5295 msgid "Re-cut 1st pt." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5085 flatcamGUI/ObjectUI.py:1196 +#: flatcamGUI/FlatCAMGUI.py:5297 flatcamGUI/ObjectUI.py:1202 msgid "" "In order to remove possible\n" "copper leftovers where first cut\n" @@ -6049,42 +6208,59 @@ msgid "" "extended cut over the first cut section." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5124 +#: flatcamGUI/FlatCAMGUI.py:5336 msgid "Seg. X size:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5126 +#: flatcamGUI/FlatCAMGUI.py:5338 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:5135 +#: flatcamGUI/FlatCAMGUI.py:5347 msgid "Seg. Y size:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5137 +#: flatcamGUI/FlatCAMGUI.py:5349 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:5153 +#: flatcamGUI/FlatCAMGUI.py:5365 +msgid "Geometry Editor" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5370 +msgid "A list of Geometry Editor parameters." +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5380 +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." +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:5399 msgid "CNC Job General" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5166 flatcamGUI/ObjectUI.py:544 -#: flatcamGUI/ObjectUI.py:874 flatcamGUI/ObjectUI.py:1428 +#: flatcamGUI/FlatCAMGUI.py:5412 flatcamGUI/ObjectUI.py:544 +#: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1434 msgid "Plot Object" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5173 +#: flatcamGUI/FlatCAMGUI.py:5419 msgid "Plot kind:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5175 flatcamGUI/ObjectUI.py:1350 +#: flatcamGUI/FlatCAMGUI.py:5421 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" @@ -6092,83 +6268,83 @@ msgid "" "which means the moves that cut into the material." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5194 +#: flatcamGUI/FlatCAMGUI.py:5440 msgid "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5204 +#: flatcamGUI/FlatCAMGUI.py:5450 msgid "" "Diameter of the tool to be\n" "rendered in the plot." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5212 +#: flatcamGUI/FlatCAMGUI.py:5458 msgid "Coords dec.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5214 +#: flatcamGUI/FlatCAMGUI.py:5460 msgid "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5222 +#: flatcamGUI/FlatCAMGUI.py:5468 msgid "Feedrate dec.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5224 +#: flatcamGUI/FlatCAMGUI.py:5470 msgid "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5239 +#: flatcamGUI/FlatCAMGUI.py:5485 msgid "CNC Job Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5242 flatcamGUI/FlatCAMGUI.py:5283 +#: flatcamGUI/FlatCAMGUI.py:5488 flatcamGUI/FlatCAMGUI.py:5529 msgid "Export G-Code:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5244 flatcamGUI/FlatCAMGUI.py:5285 -#: flatcamGUI/ObjectUI.py:1464 +#: flatcamGUI/FlatCAMGUI.py:5490 flatcamGUI/FlatCAMGUI.py:5531 +#: flatcamGUI/ObjectUI.py:1470 msgid "" "Export and save G-Code to\n" "make this object to a file." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5250 +#: flatcamGUI/FlatCAMGUI.py:5496 msgid "Prepend to G-Code:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5252 +#: flatcamGUI/FlatCAMGUI.py:5498 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:5261 +#: flatcamGUI/FlatCAMGUI.py:5507 msgid "Append to G-Code:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5263 flatcamGUI/ObjectUI.py:1486 +#: flatcamGUI/FlatCAMGUI.py:5509 flatcamGUI/ObjectUI.py:1492 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:5280 +#: flatcamGUI/FlatCAMGUI.py:5526 msgid "CNC Job Adv. Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5291 flatcamGUI/ObjectUI.py:1504 +#: flatcamGUI/FlatCAMGUI.py:5537 flatcamGUI/ObjectUI.py:1510 msgid "Toolchange G-Code:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5293 +#: flatcamGUI/FlatCAMGUI.py:5539 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -6176,95 +6352,88 @@ msgid "" "or a Toolchange Macro." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5307 flatcamGUI/ObjectUI.py:1526 +#: flatcamGUI/FlatCAMGUI.py:5553 flatcamGUI/ObjectUI.py:1532 msgid "Use Toolchange Macro" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5309 flatcamGUI/ObjectUI.py:1529 +#: flatcamGUI/FlatCAMGUI.py:5555 flatcamGUI/ObjectUI.py:1535 msgid "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5321 flatcamGUI/ObjectUI.py:1538 +#: flatcamGUI/FlatCAMGUI.py:5567 flatcamGUI/ObjectUI.py:1544 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:5328 flatcamGUI/ObjectUI.py:1545 +#: flatcamGUI/FlatCAMGUI.py:5574 flatcamGUI/ObjectUI.py:1551 msgid "Parameters" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5331 flatcamGUI/ObjectUI.py:1548 +#: flatcamGUI/FlatCAMGUI.py:5577 flatcamGUI/ObjectUI.py:1554 msgid "FlatCAM CNC parameters" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5332 flatcamGUI/ObjectUI.py:1549 +#: flatcamGUI/FlatCAMGUI.py:5578 flatcamGUI/ObjectUI.py:1555 msgid "tool = tool number" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5333 flatcamGUI/ObjectUI.py:1550 +#: flatcamGUI/FlatCAMGUI.py:5579 flatcamGUI/ObjectUI.py:1556 msgid "tooldia = tool diameter" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5334 flatcamGUI/ObjectUI.py:1551 +#: flatcamGUI/FlatCAMGUI.py:5580 flatcamGUI/ObjectUI.py:1557 msgid "t_drills = for Excellon, total number of drills" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5335 flatcamGUI/ObjectUI.py:1552 +#: flatcamGUI/FlatCAMGUI.py:5581 flatcamGUI/ObjectUI.py:1558 msgid "x_toolchange = X coord for Toolchange" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5336 flatcamGUI/ObjectUI.py:1553 +#: flatcamGUI/FlatCAMGUI.py:5582 flatcamGUI/ObjectUI.py:1559 msgid "y_toolchange = Y coord for Toolchange" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5337 flatcamGUI/ObjectUI.py:1554 +#: flatcamGUI/FlatCAMGUI.py:5583 flatcamGUI/ObjectUI.py:1560 msgid "z_toolchange = Z coord for Toolchange" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5338 +#: flatcamGUI/FlatCAMGUI.py:5584 msgid "z_cut = Z depth for the cut" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5339 +#: flatcamGUI/FlatCAMGUI.py:5585 msgid "z_move = Z height for travel" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5340 flatcamGUI/ObjectUI.py:1557 +#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1563 msgid "z_depthpercut = the step value for multidepth cut" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5341 flatcamGUI/ObjectUI.py:1558 +#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1564 msgid "spindlesspeed = the value for the spindle speed" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5342 flatcamGUI/ObjectUI.py:1559 +#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1565 msgid "dwelltime = time to dwell to allow the spindle to reach it's set RPM" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5363 +#: flatcamGUI/FlatCAMGUI.py:5609 msgid "NCC Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5366 flatcamGUI/FlatCAMGUI.py:5467 -#: flatcamGUI/FlatCAMGUI.py:5546 flatcamGUI/FlatCAMGUI.py:5605 -#: flatcamGUI/FlatCAMGUI.py:5708 flatcamGUI/FlatCAMGUI.py:5769 -#: flatcamGUI/FlatCAMGUI.py:5968 flatcamGUI/FlatCAMGUI.py:6095 -msgid "Parameters:" -msgstr "" - -#: flatcamGUI/FlatCAMGUI.py:5376 flatcamGUI/FlatCAMGUI.py:6106 +#: flatcamGUI/FlatCAMGUI.py:5622 flatcamGUI/FlatCAMGUI.py:6352 msgid "Tools dia:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5378 +#: flatcamGUI/FlatCAMGUI.py:5624 msgid "Diameters of the cutting tools, separated by ','" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5386 flatcamTools/ToolNonCopperClear.py:167 +#: flatcamGUI/FlatCAMGUI.py:5632 flatcamTools/ToolNonCopperClear.py:167 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -6279,11 +6448,11 @@ msgid "" "due of too many paths." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5402 flatcamTools/ToolNonCopperClear.py:183 +#: flatcamGUI/FlatCAMGUI.py:5648 flatcamTools/ToolNonCopperClear.py:183 msgid "Bounding box margin." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5411 flatcamTools/ToolNonCopperClear.py:192 +#: flatcamGUI/FlatCAMGUI.py:5657 flatcamTools/ToolNonCopperClear.py:192 #: flatcamTools/ToolPaint.py:190 msgid "" "Algorithm for non-copper clearing:
Standard: Fixed step inwards." @@ -6291,12 +6460,12 @@ msgid "" "lines." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5443 flatcamTools/ToolNonCopperClear.py:224 +#: flatcamGUI/FlatCAMGUI.py:5689 flatcamTools/ToolNonCopperClear.py:224 #: flatcamTools/ToolPaint.py:222 msgid "Rest M.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5445 +#: flatcamGUI/FlatCAMGUI.py:5691 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -6306,39 +6475,39 @@ msgid "" "If not checked, use the standard algorithm." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5464 +#: flatcamGUI/FlatCAMGUI.py:5710 msgid "Cutout Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5469 flatcamGUI/ObjectUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:5715 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:5488 +#: flatcamGUI/FlatCAMGUI.py:5734 msgid "" "Distance from objects at which\n" "to draw the cutout." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5495 flatcamTools/ToolCutOut.py:96 +#: flatcamGUI/FlatCAMGUI.py:5741 flatcamTools/ToolCutOut.py:96 msgid "Gap size:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5497 +#: flatcamGUI/FlatCAMGUI.py:5743 msgid "" "Size of the gaps in the toolpath\n" "that will remain to hold the\n" "board in place." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5505 flatcamTools/ToolCutOut.py:133 +#: flatcamGUI/FlatCAMGUI.py:5751 flatcamTools/ToolCutOut.py:134 msgid "Gaps:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5507 +#: flatcamGUI/FlatCAMGUI.py:5753 msgid "" "Number of bridge gaps used for the cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -6351,57 +6520,57 @@ msgid "" "- 8 - 2*left + 2*right +2*top + 2*bottom" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5528 flatcamTools/ToolCutOut.py:115 +#: flatcamGUI/FlatCAMGUI.py:5774 flatcamTools/ToolCutOut.py:115 msgid "Convex Sh.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5530 flatcamTools/ToolCutOut.py:117 +#: flatcamGUI/FlatCAMGUI.py:5776 msgid "Create a convex shape surrounding the entire PCB." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5543 +#: flatcamGUI/FlatCAMGUI.py:5789 msgid "2Sided Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5548 +#: flatcamGUI/FlatCAMGUI.py:5794 msgid "" "A tool to help in creating a double sided\n" "PCB using alignment holes." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5558 flatcamTools/ToolDblSided.py:235 +#: flatcamGUI/FlatCAMGUI.py:5804 flatcamTools/ToolDblSided.py:235 msgid "Drill diam.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5560 flatcamTools/ToolDblSided.py:226 +#: flatcamGUI/FlatCAMGUI.py:5806 flatcamTools/ToolDblSided.py:226 #: flatcamTools/ToolDblSided.py:237 msgid "Diameter of the drill for the alignment holes." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5569 flatcamTools/ToolDblSided.py:120 +#: flatcamGUI/FlatCAMGUI.py:5815 flatcamTools/ToolDblSided.py:120 msgid "Mirror Axis:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5571 flatcamTools/ToolDblSided.py:122 +#: flatcamGUI/FlatCAMGUI.py:5817 flatcamTools/ToolDblSided.py:122 msgid "Mirror vertically (X) or horizontally (Y)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5582 flatcamTools/ToolDblSided.py:133 +#: flatcamGUI/FlatCAMGUI.py:5828 flatcamTools/ToolDblSided.py:133 msgid "Axis Ref:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5584 +#: flatcamGUI/FlatCAMGUI.py:5830 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:5600 +#: flatcamGUI/FlatCAMGUI.py:5846 msgid "Paint Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5607 flatcamGUI/ObjectUI.py:1299 +#: flatcamGUI/FlatCAMGUI.py:5853 flatcamGUI/ObjectUI.py:1305 msgid "" "Creates tool paths to cover the\n" "whole area of a polygon (remove\n" @@ -6409,36 +6578,36 @@ msgid "" "to click on the desired polygon." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5631 +#: flatcamGUI/FlatCAMGUI.py:5877 msgid "" "How much (fraction) of the tool\n" "width to overlap each tool pass." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5685 flatcamTools/ToolPaint.py:237 +#: flatcamGUI/FlatCAMGUI.py:5931 flatcamTools/ToolPaint.py:237 msgid "Selection:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5687 +#: flatcamGUI/FlatCAMGUI.py:5933 msgid "How to select the polygons to paint." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5705 +#: flatcamGUI/FlatCAMGUI.py:5951 msgid "Film Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5710 +#: flatcamGUI/FlatCAMGUI.py:5956 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:5721 flatcamTools/ToolFilm.py:116 +#: flatcamGUI/FlatCAMGUI.py:5967 flatcamTools/ToolFilm.py:116 msgid "Film Type:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5723 flatcamTools/ToolFilm.py:118 +#: flatcamGUI/FlatCAMGUI.py:5969 flatcamTools/ToolFilm.py:118 msgid "" "Generate a Positive black film or a Negative film.\n" "Positive means that it will print the features\n" @@ -6448,11 +6617,11 @@ msgid "" "The Film format is SVG." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5734 flatcamTools/ToolFilm.py:130 +#: flatcamGUI/FlatCAMGUI.py:5980 flatcamTools/ToolFilm.py:130 msgid "Border:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5736 flatcamTools/ToolFilm.py:132 +#: flatcamGUI/FlatCAMGUI.py:5982 flatcamTools/ToolFilm.py:132 msgid "" "Specify a border around the object.\n" "Only for negative film.\n" @@ -6464,11 +6633,11 @@ msgid "" "surroundings if not for this border." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5749 flatcamTools/ToolFilm.py:144 +#: flatcamGUI/FlatCAMGUI.py:5995 flatcamTools/ToolFilm.py:144 msgid "Scale Stroke:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5751 flatcamTools/ToolFilm.py:146 +#: flatcamGUI/FlatCAMGUI.py:5997 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 " @@ -6476,69 +6645,69 @@ msgid "" "therefore the fine features may be more affected by this parameter." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5766 +#: flatcamGUI/FlatCAMGUI.py:6012 msgid "Panelize Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5771 +#: flatcamGUI/FlatCAMGUI.py:6017 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:5782 flatcamTools/ToolPanelize.py:113 +#: flatcamGUI/FlatCAMGUI.py:6028 flatcamTools/ToolPanelize.py:147 msgid "Spacing cols:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5784 flatcamTools/ToolPanelize.py:115 +#: flatcamGUI/FlatCAMGUI.py:6030 flatcamTools/ToolPanelize.py:149 msgid "" "Spacing between columns of the desired panel.\n" "In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5792 flatcamTools/ToolPanelize.py:122 +#: flatcamGUI/FlatCAMGUI.py:6038 flatcamTools/ToolPanelize.py:156 msgid "Spacing rows:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5794 flatcamTools/ToolPanelize.py:124 +#: flatcamGUI/FlatCAMGUI.py:6040 flatcamTools/ToolPanelize.py:158 msgid "" "Spacing between rows of the desired panel.\n" "In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5802 flatcamTools/ToolPanelize.py:131 +#: flatcamGUI/FlatCAMGUI.py:6048 flatcamTools/ToolPanelize.py:165 msgid "Columns:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5804 flatcamTools/ToolPanelize.py:133 +#: flatcamGUI/FlatCAMGUI.py:6050 flatcamTools/ToolPanelize.py:167 msgid "Number of columns of the desired panel" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5811 flatcamTools/ToolPanelize.py:139 +#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:173 msgid "Rows:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5813 flatcamTools/ToolPanelize.py:141 +#: flatcamGUI/FlatCAMGUI.py:6059 flatcamTools/ToolPanelize.py:175 msgid "Number of rows of the desired panel" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5821 flatcamTools/ToolPanelize.py:148 +#: flatcamGUI/FlatCAMGUI.py:6067 msgid "Panel Type:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5823 +#: flatcamGUI/FlatCAMGUI.py:6069 msgid "" "Choose the type of object for the panel object:\n" "- Gerber\n" "- Geometry" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5832 +#: flatcamGUI/FlatCAMGUI.py:6078 msgid "Constrain within:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5834 flatcamTools/ToolPanelize.py:160 +#: flatcamGUI/FlatCAMGUI.py:6080 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" @@ -6547,171 +6716,171 @@ msgid "" "they fit completely within selected area." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5843 flatcamTools/ToolPanelize.py:169 +#: flatcamGUI/FlatCAMGUI.py:6089 flatcamTools/ToolPanelize.py:204 msgid "Width (DX):" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5845 flatcamTools/ToolPanelize.py:171 +#: flatcamGUI/FlatCAMGUI.py:6091 flatcamTools/ToolPanelize.py:206 msgid "" "The width (DX) within which the panel must fit.\n" "In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5852 flatcamTools/ToolPanelize.py:177 +#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:212 msgid "Height (DY):" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5854 flatcamTools/ToolPanelize.py:179 +#: flatcamGUI/FlatCAMGUI.py:6100 flatcamTools/ToolPanelize.py:214 msgid "" "The height (DY)within which the panel must fit.\n" "In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5868 +#: flatcamGUI/FlatCAMGUI.py:6114 msgid "Calculators Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5871 +#: flatcamGUI/FlatCAMGUI.py:6117 msgid "V-Shape Tool Calculator:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5873 +#: flatcamGUI/FlatCAMGUI.py:6119 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:5884 flatcamTools/ToolCalculators.py:94 +#: flatcamGUI/FlatCAMGUI.py:6130 flatcamTools/ToolCalculators.py:94 msgid "Tip Diameter:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5886 +#: flatcamGUI/FlatCAMGUI.py:6132 msgid "" "This is the tool tip diameter.\n" "It is specified by manufacturer." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5894 +#: flatcamGUI/FlatCAMGUI.py:6140 msgid "Tip angle:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5896 +#: flatcamGUI/FlatCAMGUI.py:6142 msgid "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5906 +#: flatcamGUI/FlatCAMGUI.py:6152 msgid "" "This is depth to cut into material.\n" "In the CNCJob object it is the CutZ parameter." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5913 +#: flatcamGUI/FlatCAMGUI.py:6159 msgid "ElectroPlating Calculator:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5915 flatcamTools/ToolCalculators.py:152 +#: flatcamGUI/FlatCAMGUI.py:6161 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:5925 flatcamTools/ToolCalculators.py:161 +#: flatcamGUI/FlatCAMGUI.py:6171 flatcamTools/ToolCalculators.py:161 msgid "Board Length:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5927 flatcamTools/ToolCalculators.py:165 +#: flatcamGUI/FlatCAMGUI.py:6173 flatcamTools/ToolCalculators.py:165 msgid "This is the board length. In centimeters." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5933 flatcamTools/ToolCalculators.py:167 +#: flatcamGUI/FlatCAMGUI.py:6179 flatcamTools/ToolCalculators.py:167 msgid "Board Width:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5935 flatcamTools/ToolCalculators.py:171 +#: flatcamGUI/FlatCAMGUI.py:6181 flatcamTools/ToolCalculators.py:171 msgid "This is the board width.In centimeters." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5940 flatcamTools/ToolCalculators.py:173 +#: flatcamGUI/FlatCAMGUI.py:6186 flatcamTools/ToolCalculators.py:173 msgid "Current Density:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5943 flatcamTools/ToolCalculators.py:177 +#: flatcamGUI/FlatCAMGUI.py:6189 flatcamTools/ToolCalculators.py:177 msgid "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5949 flatcamTools/ToolCalculators.py:181 +#: flatcamGUI/FlatCAMGUI.py:6195 flatcamTools/ToolCalculators.py:181 msgid "Copper Growth:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5952 flatcamTools/ToolCalculators.py:185 +#: flatcamGUI/FlatCAMGUI.py:6198 flatcamTools/ToolCalculators.py:185 msgid "" "How thick the copper growth is intended to be.\n" "In microns." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5965 +#: flatcamGUI/FlatCAMGUI.py:6211 msgid "Transform Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5970 +#: flatcamGUI/FlatCAMGUI.py:6216 msgid "" "Various transformations that can be applied\n" "on a FlatCAM object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5980 +#: flatcamGUI/FlatCAMGUI.py:6226 msgid "Rotate Angle:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5982 +#: flatcamGUI/FlatCAMGUI.py:6228 msgid "Angle for rotation. In degrees." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5989 +#: flatcamGUI/FlatCAMGUI.py:6235 msgid "Skew_X angle:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5991 +#: flatcamGUI/FlatCAMGUI.py:6237 msgid "Angle for Skew/Shear on X axis. In degrees." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5998 +#: flatcamGUI/FlatCAMGUI.py:6244 msgid "Skew_Y angle:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6000 +#: flatcamGUI/FlatCAMGUI.py:6246 msgid "Angle for Skew/Shear on Y axis. In degrees." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6007 +#: flatcamGUI/FlatCAMGUI.py:6253 msgid "Scale_X factor:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6009 +#: flatcamGUI/FlatCAMGUI.py:6255 msgid "Factor for scaling on X axis." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6016 +#: flatcamGUI/FlatCAMGUI.py:6262 msgid "Scale_Y factor:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6018 +#: flatcamGUI/FlatCAMGUI.py:6264 msgid "Factor for scaling on Y axis." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6026 +#: flatcamGUI/FlatCAMGUI.py:6272 msgid "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6034 flatcamTools/ToolTransform.py:210 +#: flatcamGUI/FlatCAMGUI.py:6280 flatcamTools/ToolTransform.py:210 msgid "" "Scale the selected object(s)\n" "using the origin reference when checked,\n" @@ -6719,27 +6888,27 @@ msgid "" "of the selected objects when unchecked." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6043 +#: flatcamGUI/FlatCAMGUI.py:6289 msgid "Offset_X val:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6045 +#: flatcamGUI/FlatCAMGUI.py:6291 msgid "Distance to offset on X axis. In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6052 +#: flatcamGUI/FlatCAMGUI.py:6298 msgid "Offset_Y val:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6054 +#: flatcamGUI/FlatCAMGUI.py:6300 msgid "Distance to offset on Y axis. In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6060 +#: flatcamGUI/FlatCAMGUI.py:6306 msgid "Mirror Reference" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6062 flatcamTools/ToolTransform.py:314 +#: flatcamGUI/FlatCAMGUI.py:6308 flatcamTools/ToolTransform.py:314 msgid "" "Flip the selected object(s)\n" "around the point in Point Entry Field.\n" @@ -6752,174 +6921,174 @@ msgid "" "Point Entry field and click Flip on X(Y)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6073 +#: flatcamGUI/FlatCAMGUI.py:6319 msgid " Mirror Ref. Point:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6075 flatcamTools/ToolTransform.py:327 +#: flatcamGUI/FlatCAMGUI.py:6321 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:6092 +#: flatcamGUI/FlatCAMGUI.py:6338 msgid "SolderPaste Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6097 +#: flatcamGUI/FlatCAMGUI.py:6343 msgid "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6108 +#: flatcamGUI/FlatCAMGUI.py:6354 msgid "Diameters of nozzle tools, separated by ','" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6115 +#: flatcamGUI/FlatCAMGUI.py:6361 msgid "New Nozzle Dia:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6117 flatcamTools/ToolSolderPaste.py:103 +#: flatcamGUI/FlatCAMGUI.py:6363 flatcamTools/ToolSolderPaste.py:103 msgid "Diameter for the new Nozzle tool to add in the Tool Table" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6125 flatcamTools/ToolSolderPaste.py:166 +#: flatcamGUI/FlatCAMGUI.py:6371 flatcamTools/ToolSolderPaste.py:166 msgid "Z Dispense Start:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6127 flatcamTools/ToolSolderPaste.py:168 +#: flatcamGUI/FlatCAMGUI.py:6373 flatcamTools/ToolSolderPaste.py:168 msgid "The height (Z) when solder paste dispensing starts." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6134 flatcamTools/ToolSolderPaste.py:174 +#: flatcamGUI/FlatCAMGUI.py:6380 flatcamTools/ToolSolderPaste.py:174 msgid "Z Dispense:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6136 flatcamTools/ToolSolderPaste.py:176 +#: flatcamGUI/FlatCAMGUI.py:6382 flatcamTools/ToolSolderPaste.py:176 msgid "The height (Z) when doing solder paste dispensing." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6143 flatcamTools/ToolSolderPaste.py:183 +#: flatcamGUI/FlatCAMGUI.py:6389 flatcamTools/ToolSolderPaste.py:183 msgid "Z Dispense Stop:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6145 flatcamTools/ToolSolderPaste.py:185 +#: flatcamGUI/FlatCAMGUI.py:6391 flatcamTools/ToolSolderPaste.py:185 msgid "The height (Z) when solder paste dispensing stops." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6152 flatcamTools/ToolSolderPaste.py:191 +#: flatcamGUI/FlatCAMGUI.py:6398 flatcamTools/ToolSolderPaste.py:191 msgid "Z Travel:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6154 flatcamTools/ToolSolderPaste.py:193 +#: flatcamGUI/FlatCAMGUI.py:6400 flatcamTools/ToolSolderPaste.py:193 msgid "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6162 flatcamTools/ToolSolderPaste.py:200 +#: flatcamGUI/FlatCAMGUI.py:6408 flatcamTools/ToolSolderPaste.py:200 msgid "Z Toolchange:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6164 flatcamTools/ToolSolderPaste.py:202 +#: flatcamGUI/FlatCAMGUI.py:6410 flatcamTools/ToolSolderPaste.py:202 msgid "The height (Z) for tool (nozzle) change." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6171 flatcamTools/ToolSolderPaste.py:208 +#: flatcamGUI/FlatCAMGUI.py:6417 flatcamTools/ToolSolderPaste.py:208 msgid "XY Toolchange:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6173 flatcamTools/ToolSolderPaste.py:210 +#: flatcamGUI/FlatCAMGUI.py:6419 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:6181 flatcamTools/ToolSolderPaste.py:217 +#: flatcamGUI/FlatCAMGUI.py:6427 flatcamTools/ToolSolderPaste.py:217 msgid "Feedrate X-Y:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6183 flatcamTools/ToolSolderPaste.py:219 +#: flatcamGUI/FlatCAMGUI.py:6429 flatcamTools/ToolSolderPaste.py:219 msgid "Feedrate (speed) while moving on the X-Y plane." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6190 flatcamTools/ToolSolderPaste.py:225 +#: flatcamGUI/FlatCAMGUI.py:6436 flatcamTools/ToolSolderPaste.py:225 msgid "Feedrate Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6192 flatcamTools/ToolSolderPaste.py:227 +#: flatcamGUI/FlatCAMGUI.py:6438 flatcamTools/ToolSolderPaste.py:227 msgid "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6200 flatcamTools/ToolSolderPaste.py:234 +#: flatcamGUI/FlatCAMGUI.py:6446 flatcamTools/ToolSolderPaste.py:234 msgid "Feedrate Z Dispense:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6202 flatcamTools/ToolSolderPaste.py:236 +#: flatcamGUI/FlatCAMGUI.py:6448 flatcamTools/ToolSolderPaste.py:236 msgid "" "Feedrate (speed) while moving up vertically\n" " to Dispense position (on Z plane)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6210 flatcamTools/ToolSolderPaste.py:243 +#: flatcamGUI/FlatCAMGUI.py:6456 flatcamTools/ToolSolderPaste.py:243 msgid "Spindle Speed FWD:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6212 flatcamTools/ToolSolderPaste.py:245 +#: flatcamGUI/FlatCAMGUI.py:6458 flatcamTools/ToolSolderPaste.py:245 msgid "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6220 flatcamTools/ToolSolderPaste.py:252 +#: flatcamGUI/FlatCAMGUI.py:6466 flatcamTools/ToolSolderPaste.py:252 msgid "Dwell FWD:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6222 flatcamTools/ToolSolderPaste.py:254 +#: flatcamGUI/FlatCAMGUI.py:6468 flatcamTools/ToolSolderPaste.py:254 msgid "Pause after solder dispensing." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6229 flatcamTools/ToolSolderPaste.py:260 +#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:260 msgid "Spindle Speed REV:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6231 flatcamTools/ToolSolderPaste.py:262 +#: flatcamGUI/FlatCAMGUI.py:6477 flatcamTools/ToolSolderPaste.py:262 msgid "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6239 flatcamTools/ToolSolderPaste.py:269 +#: flatcamGUI/FlatCAMGUI.py:6485 flatcamTools/ToolSolderPaste.py:269 msgid "Dwell REV:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6241 flatcamTools/ToolSolderPaste.py:271 +#: flatcamGUI/FlatCAMGUI.py:6487 flatcamTools/ToolSolderPaste.py:271 msgid "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6248 flatcamTools/ToolSolderPaste.py:277 +#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:277 msgid "PostProcessors:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6250 flatcamTools/ToolSolderPaste.py:279 +#: flatcamGUI/FlatCAMGUI.py:6496 flatcamTools/ToolSolderPaste.py:279 msgid "Files that control the GCode generation." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6280 flatcamGUI/FlatCAMGUI.py:6286 +#: flatcamGUI/FlatCAMGUI.py:6526 flatcamGUI/FlatCAMGUI.py:6532 msgid "Idle." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6310 +#: flatcamGUI/FlatCAMGUI.py:6556 msgid "Application started ..." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6311 +#: flatcamGUI/FlatCAMGUI.py:6557 msgid "Hello!" msgstr "" @@ -6987,7 +7156,7 @@ msgid "Gerber Object" msgstr "" #: flatcamGUI/ObjectUI.py:182 flatcamGUI/ObjectUI.py:517 -#: flatcamGUI/ObjectUI.py:836 flatcamGUI/ObjectUI.py:1366 +#: flatcamGUI/ObjectUI.py:839 flatcamGUI/ObjectUI.py:1372 msgid "Name:" msgstr "" @@ -7126,8 +7295,8 @@ msgid "Resulting geometry will have rounded corners." msgstr "" #: flatcamGUI/ObjectUI.py:450 flatcamGUI/ObjectUI.py:484 -#: flatcamTools/ToolCutOut.py:167 flatcamTools/ToolCutOut.py:187 -#: flatcamTools/ToolCutOut.py:238 flatcamTools/ToolSolderPaste.py:127 +#: flatcamTools/ToolCutOut.py:168 flatcamTools/ToolCutOut.py:188 +#: flatcamTools/ToolCutOut.py:239 flatcamTools/ToolSolderPaste.py:127 msgid "Generate Geo" msgstr "" @@ -7149,7 +7318,7 @@ msgstr "" msgid "Solid circles." msgstr "" -#: flatcamGUI/ObjectUI.py:536 flatcamGUI/ObjectUI.py:855 +#: flatcamGUI/ObjectUI.py:536 flatcamGUI/ObjectUI.py:858 msgid "Tools Table" msgstr "" @@ -7172,7 +7341,7 @@ msgid "" "will be showed as a T1, T2 ... Tn in the Machine Code." msgstr "" -#: flatcamGUI/ObjectUI.py:565 flatcamGUI/ObjectUI.py:901 +#: flatcamGUI/ObjectUI.py:565 flatcamGUI/ObjectUI.py:904 #: flatcamTools/ToolNonCopperClear.py:97 flatcamTools/ToolPaint.py:94 msgid "" "Tool Diameter. It's value (in current FlatCAM units) \n" @@ -7201,15 +7370,15 @@ msgid "" "for this drill object." msgstr "" -#: flatcamGUI/ObjectUI.py:615 flatcamGUI/ObjectUI.py:1115 +#: flatcamGUI/ObjectUI.py:615 flatcamGUI/ObjectUI.py:1118 msgid "Tool change" msgstr "" -#: flatcamGUI/ObjectUI.py:623 flatcamGUI/ObjectUI.py:1108 +#: flatcamGUI/ObjectUI.py:623 flatcamGUI/ObjectUI.py:1111 msgid "Tool change Z:" msgstr "" -#: flatcamGUI/ObjectUI.py:625 flatcamGUI/ObjectUI.py:1111 +#: flatcamGUI/ObjectUI.py:625 flatcamGUI/ObjectUI.py:1114 msgid "" "Z-axis position (height) for\n" "tool change." @@ -7238,23 +7407,23 @@ msgid "" "This is for linear move G01." msgstr "" -#: flatcamGUI/ObjectUI.py:706 +#: flatcamGUI/ObjectUI.py:709 msgid "" "The json file that dictates\n" "gcode output." msgstr "" -#: flatcamGUI/ObjectUI.py:738 +#: flatcamGUI/ObjectUI.py:741 msgid "" "Select from the Tools Table above\n" "the tools you want to include." msgstr "" -#: flatcamGUI/ObjectUI.py:745 +#: flatcamGUI/ObjectUI.py:748 msgid "Type: " msgstr "" -#: flatcamGUI/ObjectUI.py:747 +#: flatcamGUI/ObjectUI.py:750 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -7262,53 +7431,53 @@ msgid "" "converted to a series of drills." msgstr "" -#: flatcamGUI/ObjectUI.py:762 +#: flatcamGUI/ObjectUI.py:765 msgid "Create GCode" msgstr "" -#: flatcamGUI/ObjectUI.py:764 +#: flatcamGUI/ObjectUI.py:767 msgid "Generate the CNC Job." msgstr "" -#: flatcamGUI/ObjectUI.py:776 +#: flatcamGUI/ObjectUI.py:779 msgid "" "Select from the Tools Table above\n" " the hole dias that are to be milled." msgstr "" -#: flatcamGUI/ObjectUI.py:783 +#: flatcamGUI/ObjectUI.py:786 msgid "Drills Tool dia:" msgstr "" -#: flatcamGUI/ObjectUI.py:790 +#: flatcamGUI/ObjectUI.py:793 msgid "Mill Drills Geo" msgstr "" -#: flatcamGUI/ObjectUI.py:792 +#: flatcamGUI/ObjectUI.py:795 msgid "" "Create the Geometry Object\n" "for milling DRILLS toolpaths." msgstr "" -#: flatcamGUI/ObjectUI.py:799 +#: flatcamGUI/ObjectUI.py:802 msgid "Slots Tool dia:" msgstr "" -#: flatcamGUI/ObjectUI.py:806 +#: flatcamGUI/ObjectUI.py:809 msgid "Mill Slots Geo" msgstr "" -#: flatcamGUI/ObjectUI.py:808 +#: flatcamGUI/ObjectUI.py:811 msgid "" "Create the Geometry Object\n" "for milling SLOTS toolpaths." msgstr "" -#: flatcamGUI/ObjectUI.py:826 +#: flatcamGUI/ObjectUI.py:829 msgid "Geometry Object" msgstr "" -#: flatcamGUI/ObjectUI.py:857 +#: flatcamGUI/ObjectUI.py:860 msgid "" "Tools in this Geometry object used for cutting.\n" "The 'Offset' entry will set an offset for the cut.\n" @@ -7324,22 +7493,22 @@ msgid "" "showed UI form entries named V-Tip Dia and V-Tip Angle." msgstr "" -#: flatcamGUI/ObjectUI.py:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "Dia" msgstr "" -#: flatcamGUI/ObjectUI.py:888 flatcamGUI/ObjectUI.py:1446 +#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "TT" msgstr "" -#: flatcamGUI/ObjectUI.py:895 +#: flatcamGUI/ObjectUI.py:898 msgid "" "This is the Tool Number.\n" "When ToolChange is checked, on toolchange event this value\n" "will be showed as a T1, T2 ... Tn" msgstr "" -#: flatcamGUI/ObjectUI.py:906 +#: flatcamGUI/ObjectUI.py:909 msgid "" "The value for the Offset can be:\n" "- Path -> There is no offset, the tool cut will be done through the geometry " @@ -7349,7 +7518,7 @@ msgid "" "- Out(side) -> The tool cut will follow the geometry line on the outside." msgstr "" -#: flatcamGUI/ObjectUI.py:913 +#: flatcamGUI/ObjectUI.py:916 msgid "" "The (Operation) Type has only informative value. Usually the UI form " "values \n" @@ -7361,7 +7530,7 @@ msgid "" "tip." msgstr "" -#: flatcamGUI/ObjectUI.py:922 +#: flatcamGUI/ObjectUI.py:925 msgid "" "The Tool Type (TT) can be:\n" "- Circular with 1 ... 4 teeth -> it is informative only. Being circular the " @@ -7378,7 +7547,7 @@ msgid "" "as Isolation." msgstr "" -#: flatcamGUI/ObjectUI.py:933 +#: flatcamGUI/ObjectUI.py:936 msgid "" "Plot column. It is visible only for MultiGeo geometries, meaning geometries " "that holds the geometry\n" @@ -7389,11 +7558,11 @@ msgid "" "for the corresponding tool." msgstr "" -#: flatcamGUI/ObjectUI.py:946 +#: flatcamGUI/ObjectUI.py:949 msgid "Tool Offset:" msgstr "" -#: flatcamGUI/ObjectUI.py:949 +#: flatcamGUI/ObjectUI.py:952 msgid "" "The value to offset the cut when \n" "the Offset type selected is 'Offset'.\n" @@ -7401,62 +7570,62 @@ msgid "" "cut and negative for 'inside' cut." msgstr "" -#: flatcamGUI/ObjectUI.py:972 +#: flatcamGUI/ObjectUI.py:975 msgid "Tool Dia:" msgstr "" -#: flatcamGUI/ObjectUI.py:991 flatcamTools/ToolNonCopperClear.py:136 +#: flatcamGUI/ObjectUI.py:994 flatcamTools/ToolNonCopperClear.py:136 #: flatcamTools/ToolPaint.py:133 msgid "" "Add a new tool to the Tool Table\n" "with the diameter specified above." msgstr "" -#: flatcamGUI/ObjectUI.py:999 +#: flatcamGUI/ObjectUI.py:1002 msgid "" "Copy a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." msgstr "" -#: flatcamGUI/ObjectUI.py:1007 +#: flatcamGUI/ObjectUI.py:1010 msgid "" "Delete a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." msgstr "" -#: flatcamGUI/ObjectUI.py:1023 +#: flatcamGUI/ObjectUI.py:1026 msgid "Tool Data" msgstr "" -#: flatcamGUI/ObjectUI.py:1026 +#: flatcamGUI/ObjectUI.py:1029 msgid "" "The data used for creating GCode.\n" "Each tool store it's own set of such data." msgstr "" -#: flatcamGUI/ObjectUI.py:1036 +#: flatcamGUI/ObjectUI.py:1039 msgid "V-Tip Dia:" msgstr "" -#: flatcamGUI/ObjectUI.py:1039 +#: flatcamGUI/ObjectUI.py:1042 msgid "The tip diameter for V-Shape Tool" msgstr "" -#: flatcamGUI/ObjectUI.py:1047 +#: flatcamGUI/ObjectUI.py:1050 msgid "V-Tip Angle:" msgstr "" -#: flatcamGUI/ObjectUI.py:1050 +#: flatcamGUI/ObjectUI.py:1053 msgid "" "The tip angle for V-Shape Tool.\n" "In degree." msgstr "" -#: flatcamGUI/ObjectUI.py:1071 +#: flatcamGUI/ObjectUI.py:1074 msgid "Multi-Depth:" msgstr "" -#: flatcamGUI/ObjectUI.py:1074 +#: flatcamGUI/ObjectUI.py:1077 msgid "" "Use multiple passes to limit\n" "the cut depth in each pass. Will\n" @@ -7466,37 +7635,37 @@ msgid "" "each pass (positive value)." msgstr "" -#: flatcamGUI/ObjectUI.py:1087 +#: flatcamGUI/ObjectUI.py:1090 msgid "Depth of each pass (positive)." msgstr "" -#: flatcamGUI/ObjectUI.py:1118 +#: flatcamGUI/ObjectUI.py:1121 msgid "" "Include tool-change sequence\n" "in the Machine Code (Pause for tool change)." msgstr "" -#: flatcamGUI/ObjectUI.py:1144 +#: flatcamGUI/ObjectUI.py:1147 msgid "" "This is the height (Z) at which the CNC\n" "will go as the last move." msgstr "" -#: flatcamGUI/ObjectUI.py:1165 +#: flatcamGUI/ObjectUI.py:1168 msgid "Feed Rate Z (Plunge):" msgstr "" -#: flatcamGUI/ObjectUI.py:1168 +#: flatcamGUI/ObjectUI.py:1171 msgid "" "Cutting speed in the Z\n" "plane in units per minute" msgstr "" -#: flatcamGUI/ObjectUI.py:1177 +#: flatcamGUI/ObjectUI.py:1180 msgid "Feed Rate Rapids:" msgstr "" -#: flatcamGUI/ObjectUI.py:1180 +#: flatcamGUI/ObjectUI.py:1183 msgid "" "Cutting speed in the XY\n" "plane in units per minute\n" @@ -7506,73 +7675,73 @@ msgid "" "ignore for any other cases." msgstr "" -#: flatcamGUI/ObjectUI.py:1193 +#: flatcamGUI/ObjectUI.py:1199 msgid "Cut over 1st pt" msgstr "" -#: flatcamGUI/ObjectUI.py:1208 +#: flatcamGUI/ObjectUI.py:1214 msgid "" "Speed of the spindle in RPM (optional).\n" "If LASER postprocessor is used,\n" "this value is the power of laser." msgstr "" -#: flatcamGUI/ObjectUI.py:1237 +#: flatcamGUI/ObjectUI.py:1243 msgid "PostProcessor:" msgstr "" -#: flatcamGUI/ObjectUI.py:1240 +#: flatcamGUI/ObjectUI.py:1246 msgid "" "The Postprocessor file that dictates\n" "the Machine Code (like GCode, RML, HPGL) output." msgstr "" -#: flatcamGUI/ObjectUI.py:1278 +#: flatcamGUI/ObjectUI.py:1284 msgid "" "Add at least one tool in the tool-table.\n" "Click the header to select all, or Ctrl + LMB\n" "for custom selection of tools." msgstr "" -#: flatcamGUI/ObjectUI.py:1285 +#: flatcamGUI/ObjectUI.py:1291 msgid "Generate" msgstr "" -#: flatcamGUI/ObjectUI.py:1288 +#: flatcamGUI/ObjectUI.py:1294 msgid "Generate the CNC Job object." msgstr "" -#: flatcamGUI/ObjectUI.py:1296 +#: flatcamGUI/ObjectUI.py:1302 msgid "Paint Area:" msgstr "" -#: flatcamGUI/ObjectUI.py:1311 +#: flatcamGUI/ObjectUI.py:1317 msgid "Launch Paint Tool in Tools Tab." msgstr "" -#: flatcamGUI/ObjectUI.py:1328 +#: flatcamGUI/ObjectUI.py:1334 msgid "CNC Job Object" msgstr "" -#: flatcamGUI/ObjectUI.py:1347 +#: flatcamGUI/ObjectUI.py:1353 msgid "Plot kind:" msgstr "" -#: flatcamGUI/ObjectUI.py:1372 +#: flatcamGUI/ObjectUI.py:1378 msgid "Travelled dist.:" msgstr "" -#: flatcamGUI/ObjectUI.py:1375 flatcamGUI/ObjectUI.py:1382 +#: flatcamGUI/ObjectUI.py:1381 flatcamGUI/ObjectUI.py:1388 msgid "" "This is the total travelled distance on X-Y plane.\n" "In current units." msgstr "" -#: flatcamGUI/ObjectUI.py:1410 +#: flatcamGUI/ObjectUI.py:1416 msgid "CNC Tools Table" msgstr "" -#: flatcamGUI/ObjectUI.py:1413 +#: flatcamGUI/ObjectUI.py:1419 msgid "" "Tools in this CNCJob object used for cutting.\n" "The tool diameter is used for plotting on canvas.\n" @@ -7585,37 +7754,37 @@ msgid "" "ball(B), or V-Shaped(V)." msgstr "" -#: flatcamGUI/ObjectUI.py:1447 +#: flatcamGUI/ObjectUI.py:1453 msgid "P" msgstr "" -#: flatcamGUI/ObjectUI.py:1453 +#: flatcamGUI/ObjectUI.py:1459 msgid "Update Plot" msgstr "" -#: flatcamGUI/ObjectUI.py:1455 +#: flatcamGUI/ObjectUI.py:1461 msgid "Update the plot." msgstr "" -#: flatcamGUI/ObjectUI.py:1462 +#: flatcamGUI/ObjectUI.py:1468 msgid "Export CNC Code:" msgstr "" -#: flatcamGUI/ObjectUI.py:1470 +#: flatcamGUI/ObjectUI.py:1476 msgid "Prepend to CNC Code:" msgstr "" -#: flatcamGUI/ObjectUI.py:1473 +#: flatcamGUI/ObjectUI.py:1479 msgid "" "Type here any G-Code commands you would\n" "like to add to the beginning of the generated file." msgstr "" -#: flatcamGUI/ObjectUI.py:1483 +#: flatcamGUI/ObjectUI.py:1489 msgid "Append to CNC Code" msgstr "" -#: flatcamGUI/ObjectUI.py:1507 +#: flatcamGUI/ObjectUI.py:1513 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -7628,29 +7797,29 @@ msgid "" "having as template the 'Toolchange Custom' posprocessor file." msgstr "" -#: flatcamGUI/ObjectUI.py:1555 +#: flatcamGUI/ObjectUI.py:1561 msgid "z_cut = depth where to cut" msgstr "" -#: flatcamGUI/ObjectUI.py:1556 +#: flatcamGUI/ObjectUI.py:1562 msgid "z_move = height where to travel" msgstr "" -#: flatcamGUI/ObjectUI.py:1574 +#: flatcamGUI/ObjectUI.py:1580 msgid "View CNC Code" msgstr "" -#: flatcamGUI/ObjectUI.py:1577 +#: flatcamGUI/ObjectUI.py:1583 msgid "" "Opens TAB to view/modify/print G-Code\n" "file." msgstr "" -#: flatcamGUI/ObjectUI.py:1583 +#: flatcamGUI/ObjectUI.py:1589 msgid "Save CNC Code" msgstr "" -#: flatcamGUI/ObjectUI.py:1586 +#: flatcamGUI/ObjectUI.py:1592 msgid "" "Opens dialog to save G-Code\n" "file." @@ -7794,15 +7963,21 @@ msgid "" "from which the PCB is cutout)." msgstr "" -#: flatcamTools/ToolCutOut.py:122 +#: flatcamTools/ToolCutOut.py:117 +msgid "" +"Create a convex shape surrounding the entire PCB.\n" +"Used only if the source object type is Gerber." +msgstr "" + +#: flatcamTools/ToolCutOut.py:123 msgid "A. Automatic Bridge Gaps" msgstr "" -#: flatcamTools/ToolCutOut.py:124 +#: flatcamTools/ToolCutOut.py:125 msgid "This section handle creation of automatic bridge gaps." msgstr "" -#: flatcamTools/ToolCutOut.py:135 +#: flatcamTools/ToolCutOut.py:136 msgid "" "Number of gaps used for the Automatic cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -7815,35 +7990,35 @@ msgid "" "- 8 - 2*left + 2*right +2*top + 2*bottom" msgstr "" -#: flatcamTools/ToolCutOut.py:158 +#: flatcamTools/ToolCutOut.py:159 msgid "FreeForm:" msgstr "" -#: flatcamTools/ToolCutOut.py:160 +#: flatcamTools/ToolCutOut.py:161 msgid "" "The cutout shape can be of ny shape.\n" "Useful when the PCB has a non-rectangular shape." msgstr "" -#: flatcamTools/ToolCutOut.py:169 +#: flatcamTools/ToolCutOut.py:170 msgid "" "Cutout the selected object.\n" "The cutout shape can be of any shape.\n" "Useful when the PCB has a non-rectangular shape." msgstr "" -#: flatcamTools/ToolCutOut.py:178 +#: flatcamTools/ToolCutOut.py:179 msgid "Rectangular:" msgstr "" -#: flatcamTools/ToolCutOut.py:180 +#: flatcamTools/ToolCutOut.py:181 msgid "" "The resulting cutout shape is\n" "always a rectangle shape and it will be\n" "the bounding box of the Object." msgstr "" -#: flatcamTools/ToolCutOut.py:189 +#: flatcamTools/ToolCutOut.py:190 msgid "" "Cutout the selected object.\n" "The resulting cutout shape is\n" @@ -7851,30 +8026,30 @@ msgid "" "the bounding box of the Object." msgstr "" -#: flatcamTools/ToolCutOut.py:197 +#: flatcamTools/ToolCutOut.py:198 msgid "B. Manual Bridge Gaps" msgstr "" -#: flatcamTools/ToolCutOut.py:199 +#: flatcamTools/ToolCutOut.py:200 msgid "" "This section handle creation of manual bridge gaps.\n" "This is done by mouse clicking on the perimeter of the\n" "Geometry object that is used as a cutout object. " msgstr "" -#: flatcamTools/ToolCutOut.py:215 +#: flatcamTools/ToolCutOut.py:216 msgid "Geo Obj:" msgstr "" -#: flatcamTools/ToolCutOut.py:217 +#: flatcamTools/ToolCutOut.py:218 msgid "Geometry object used to create the manual cutout." msgstr "" -#: flatcamTools/ToolCutOut.py:228 +#: flatcamTools/ToolCutOut.py:229 msgid "Manual Geo:" msgstr "" -#: flatcamTools/ToolCutOut.py:230 flatcamTools/ToolCutOut.py:240 +#: flatcamTools/ToolCutOut.py:231 flatcamTools/ToolCutOut.py:241 msgid "" "If the object to be cutout is a Gerber\n" "first create a Geometry that surrounds it,\n" @@ -7882,22 +8057,22 @@ msgid "" "Select the source Gerber file in the top object combobox." msgstr "" -#: flatcamTools/ToolCutOut.py:250 +#: flatcamTools/ToolCutOut.py:251 msgid "Manual Add Bridge Gaps:" msgstr "" -#: flatcamTools/ToolCutOut.py:252 +#: flatcamTools/ToolCutOut.py:253 msgid "" "Use the left mouse button (LMB) click\n" "to create a bridge gap to separate the PCB from\n" "the surrounding material." msgstr "" -#: flatcamTools/ToolCutOut.py:259 +#: flatcamTools/ToolCutOut.py:260 msgid "Generate Gap" msgstr "" -#: flatcamTools/ToolCutOut.py:261 +#: flatcamTools/ToolCutOut.py:262 msgid "" "Use the left mouse button (LMB) click\n" "to create a bridge gap to separate the PCB from\n" @@ -7906,50 +8081,50 @@ msgid "" "the Geometry object used as a cutout geometry." msgstr "" -#: flatcamTools/ToolCutOut.py:338 flatcamTools/ToolCutOut.py:483 +#: flatcamTools/ToolCutOut.py:341 flatcamTools/ToolCutOut.py:499 #: flatcamTools/ToolNonCopperClear.py:666 flatcamTools/ToolPaint.py:764 -#: flatcamTools/ToolPanelize.py:293 flatcamTools/ToolPanelize.py:307 -#: flatcamTools/ToolSub.py:234 flatcamTools/ToolSub.py:246 -#: flatcamTools/ToolSub.py:364 flatcamTools/ToolSub.py:376 +#: flatcamTools/ToolPanelize.py:352 flatcamTools/ToolPanelize.py:366 +#: flatcamTools/ToolSub.py:237 flatcamTools/ToolSub.py:249 +#: flatcamTools/ToolSub.py:428 flatcamTools/ToolSub.py:440 #, python-format msgid "[ERROR_NOTCL] Could not retrieve object: %s" msgstr "" -#: flatcamTools/ToolCutOut.py:342 +#: flatcamTools/ToolCutOut.py:345 msgid "" "[ERROR_NOTCL] There is no object selected for Cutout.\n" "Select one and try again." msgstr "" -#: flatcamTools/ToolCutOut.py:358 +#: flatcamTools/ToolCutOut.py:360 msgid "" "[WARNING_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." msgstr "" -#: flatcamTools/ToolCutOut.py:368 flatcamTools/ToolCutOut.py:511 -#: flatcamTools/ToolCutOut.py:736 +#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:527 +#: flatcamTools/ToolCutOut.py:771 msgid "" "[WARNING_NOTCL] Margin value is missing or wrong format. Add it and retry." msgstr "" -#: flatcamTools/ToolCutOut.py:379 flatcamTools/ToolCutOut.py:522 -#: flatcamTools/ToolCutOut.py:631 +#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:538 +#: flatcamTools/ToolCutOut.py:666 msgid "" "[WARNING_NOTCL] Gap size value is missing or wrong format. Add it and retry." msgstr "" -#: flatcamTools/ToolCutOut.py:386 flatcamTools/ToolCutOut.py:529 +#: flatcamTools/ToolCutOut.py:388 flatcamTools/ToolCutOut.py:545 msgid "[WARNING_NOTCL] Number of gaps value is missing. Add it and retry." msgstr "" -#: flatcamTools/ToolCutOut.py:390 flatcamTools/ToolCutOut.py:533 +#: flatcamTools/ToolCutOut.py:392 flatcamTools/ToolCutOut.py:549 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:395 flatcamTools/ToolCutOut.py:538 +#: flatcamTools/ToolCutOut.py:397 flatcamTools/ToolCutOut.py:554 msgid "" "[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n" "Optionally, this Multi-geo Geometry can be converted to Single-geo " @@ -7957,58 +8132,58 @@ msgid "" "and after that perform Cutout." msgstr "" -#: flatcamTools/ToolCutOut.py:467 flatcamTools/ToolCutOut.py:601 +#: flatcamTools/ToolCutOut.py:483 flatcamTools/ToolCutOut.py:636 msgid "[success] Any form CutOut operation finished." msgstr "" -#: flatcamTools/ToolCutOut.py:487 flatcamTools/ToolPaint.py:768 -#: flatcamTools/ToolPanelize.py:299 +#: flatcamTools/ToolCutOut.py:503 flatcamTools/ToolPaint.py:768 +#: flatcamTools/ToolPanelize.py:358 #, python-format msgid "[ERROR_NOTCL] Object not found: %s" msgstr "" -#: flatcamTools/ToolCutOut.py:501 flatcamTools/ToolCutOut.py:621 -#: flatcamTools/ToolCutOut.py:726 +#: flatcamTools/ToolCutOut.py:517 flatcamTools/ToolCutOut.py:656 +#: flatcamTools/ToolCutOut.py:761 msgid "" "[ERROR_NOTCL] Tool Diameter is zero value. Change it to a positive real " "number." msgstr "" -#: flatcamTools/ToolCutOut.py:606 +#: flatcamTools/ToolCutOut.py:641 msgid "" "Click on the selected geometry object perimeter to create a bridge gap ..." msgstr "" -#: flatcamTools/ToolCutOut.py:647 +#: flatcamTools/ToolCutOut.py:682 msgid "Making manual bridge gap..." msgstr "" -#: flatcamTools/ToolCutOut.py:670 +#: flatcamTools/ToolCutOut.py:705 #, python-format msgid "[ERROR_NOTCL] Could not retrieve Geometry object: %s" msgstr "" -#: flatcamTools/ToolCutOut.py:674 +#: flatcamTools/ToolCutOut.py:709 #, python-format msgid "[ERROR_NOTCL] Geometry object for manual cutout not found: %s" msgstr "" -#: flatcamTools/ToolCutOut.py:684 +#: flatcamTools/ToolCutOut.py:719 msgid "[success] Added manual Bridge Gap." msgstr "" -#: flatcamTools/ToolCutOut.py:701 +#: flatcamTools/ToolCutOut.py:736 #, python-format msgid "[ERROR_NOTCL] Could not retrieve Gerber object: %s" msgstr "" -#: flatcamTools/ToolCutOut.py:705 +#: flatcamTools/ToolCutOut.py:740 msgid "" "[ERROR_NOTCL] There is no Gerber object selected for Cutout.\n" "Select one and try again." msgstr "" -#: flatcamTools/ToolCutOut.py:710 +#: flatcamTools/ToolCutOut.py:745 msgid "" "[ERROR_NOTCL] The selected object has to be of Gerber type.\n" "Select a Gerber file and try again." @@ -8238,7 +8413,7 @@ msgstr "" msgid "Object for which to create the film." msgstr "" -#: flatcamTools/ToolFilm.py:89 flatcamTools/ToolPanelize.py:89 +#: flatcamTools/ToolFilm.py:89 flatcamTools/ToolPanelize.py:111 msgid "Box Type:" msgstr "" @@ -8250,7 +8425,7 @@ msgid "" "in the Box Object combobox." msgstr "" -#: flatcamTools/ToolFilm.py:104 flatcamTools/ToolPanelize.py:104 +#: flatcamTools/ToolFilm.py:104 flatcamTools/ToolPanelize.py:126 msgid "Box Object:" msgstr "" @@ -8672,16 +8847,16 @@ msgstr "" msgid "Parsing PDF file ..." msgstr "" -#: flatcamTools/ToolPDF.py:264 flatcamTools/ToolPDF.py:300 +#: flatcamTools/ToolPDF.py:265 flatcamTools/ToolPDF.py:338 #, python-format msgid "Rendering PDF layer #%d ..." msgstr "" -#: flatcamTools/ToolPDF.py:268 flatcamTools/ToolPDF.py:304 +#: flatcamTools/ToolPDF.py:269 flatcamTools/ToolPDF.py:342 msgid "[ERROR_NOTCL] Open PDF file failed." msgstr "" -#: flatcamTools/ToolPDF.py:273 flatcamTools/ToolPDF.py:309 +#: flatcamTools/ToolPDF.py:274 flatcamTools/ToolPDF.py:347 #, python-format msgid "[success] Rendered: %s" msgstr "" @@ -8844,7 +9019,23 @@ msgid "" "be duplicated in an array of rows and columns." msgstr "" -#: flatcamTools/ToolPanelize.py:91 +#: flatcamTools/ToolPanelize.py:86 +msgid "Penelization Reference:" +msgstr "" + +#: flatcamTools/ToolPanelize.py:88 +msgid "" +"Choose the reference for panelization:\n" +"- Object = the bounding box of a different object\n" +"- Bounding Box = the bounding box of the object to be panelized\n" +"\n" +"The reference is useful when doing panelization for more than one\n" +"object. The spacings (really offsets) will be applied in reference\n" +"to this reference object therefore maintaining the panelized\n" +"objects in sync." +msgstr "" + +#: flatcamTools/ToolPanelize.py:113 msgid "" "Specify the type of object to be used as an container for\n" "panelization. It can be: Gerber or Geometry type.\n" @@ -8852,61 +9043,79 @@ msgid "" "in the Box Object combobox." msgstr "" -#: flatcamTools/ToolPanelize.py:106 +#: flatcamTools/ToolPanelize.py:128 msgid "" "The actual object that is used a container for the\n" " selected object that is to be panelized." msgstr "" -#: flatcamTools/ToolPanelize.py:150 +#: flatcamTools/ToolPanelize.py:134 +msgid "Panel Data:" +msgstr "" + +#: flatcamTools/ToolPanelize.py:136 +msgid "" +"This informations will shape the resulting panel.\n" +"The number of rows and columns will set how many\n" +"duplicates of the original geometry will be generated.\n" +"\n" +"The spacings will set the distance between any two\n" +"elements of the panel array." +msgstr "" + +#: flatcamTools/ToolPanelize.py:183 +msgid "Panel Type:" +msgstr "" + +#: flatcamTools/ToolPanelize.py:185 msgid "" "Choose the type of object for the panel object:\n" "- Geometry\n" "- Gerber" msgstr "" -#: flatcamTools/ToolPanelize.py:158 +#: flatcamTools/ToolPanelize.py:193 msgid "Constrain panel within:" msgstr "" -#: flatcamTools/ToolPanelize.py:192 +#: flatcamTools/ToolPanelize.py:227 msgid "Panelize Object" msgstr "" -#: flatcamTools/ToolPanelize.py:194 +#: flatcamTools/ToolPanelize.py:229 msgid "" "Panelize the specified object around the specified box.\n" "In other words it creates multiple copies of the source object,\n" "arranged in a 2D array of rows and columns." msgstr "" -#: flatcamTools/ToolPanelize.py:311 +#: flatcamTools/ToolPanelize.py:370 #, python-format -msgid "[WARNING]No object Box. Using instead %s" +msgid "[WARNING_NOTCL]No object Box. Using instead %s" msgstr "" -#: flatcamTools/ToolPanelize.py:392 +#: flatcamTools/ToolPanelize.py:453 msgid "" "[ERROR_NOTCL] Columns or Rows are zero value. Change them to a positive " "integer." msgstr "" -#: flatcamTools/ToolPanelize.py:417 flatcamTools/ToolPanelize.py:526 +#: flatcamTools/ToolPanelize.py:478 flatcamTools/ToolPanelize.py:635 msgid "Generating panel ... Please wait." msgstr "" -#: flatcamTools/ToolPanelize.py:520 +#: flatcamTools/ToolPanelize.py:628 msgid "[success] Panel done..." msgstr "" -#: flatcamTools/ToolPanelize.py:523 +#: flatcamTools/ToolPanelize.py:631 #, python-brace-format msgid "" "[WARNING] Too big for the constrain area. Final panel has {col} columns and " "{row} rows" msgstr "" -#: flatcamTools/ToolPanelize.py:531 +#: flatcamTools/ToolPanelize.py:640 msgid "[success] Panel created successfully." msgstr "" @@ -9301,7 +9510,7 @@ msgstr "" msgid "Export GCode ..." msgstr "" -#: flatcamTools/ToolSolderPaste.py:1394 +#: flatcamTools/ToolSolderPaste.py:1396 #, python-format msgid "[success] Solder paste dispenser GCode file saved to: %s" msgstr "" @@ -9368,46 +9577,46 @@ msgid "" "Geometry from the Target Geometry." msgstr "" -#: flatcamTools/ToolSub.py:212 +#: flatcamTools/ToolSub.py:215 msgid "Sub Tool" msgstr "" -#: flatcamTools/ToolSub.py:227 flatcamTools/ToolSub.py:357 +#: flatcamTools/ToolSub.py:230 flatcamTools/ToolSub.py:421 msgid "[ERROR_NOTCL] No Target object loaded." msgstr "" -#: flatcamTools/ToolSub.py:239 flatcamTools/ToolSub.py:369 +#: flatcamTools/ToolSub.py:242 flatcamTools/ToolSub.py:433 msgid "[ERROR_NOTCL] No Substractor object loaded." msgstr "" -#: flatcamTools/ToolSub.py:277 +#: flatcamTools/ToolSub.py:294 #, python-format msgid "Parsing aperture %s geometry ..." msgstr "" -#: flatcamTools/ToolSub.py:331 flatcamTools/ToolSub.py:475 +#: flatcamTools/ToolSub.py:396 flatcamTools/ToolSub.py:539 msgid "Generating new object ..." msgstr "" -#: flatcamTools/ToolSub.py:334 flatcamTools/ToolSub.py:478 +#: flatcamTools/ToolSub.py:399 flatcamTools/ToolSub.py:542 msgid "[ERROR_NOTCL] Generating new object failed." msgstr "" -#: flatcamTools/ToolSub.py:339 flatcamTools/ToolSub.py:483 +#: flatcamTools/ToolSub.py:403 flatcamTools/ToolSub.py:547 #, python-format msgid "[success] Created: %s" msgstr "" -#: flatcamTools/ToolSub.py:380 +#: flatcamTools/ToolSub.py:444 msgid "" "[ERROR_NOTCL] Currently, the Substractor geometry cannot be of type Multigeo." msgstr "" -#: flatcamTools/ToolSub.py:425 +#: flatcamTools/ToolSub.py:489 msgid "Parsing solid_geometry ..." msgstr "" -#: flatcamTools/ToolSub.py:427 +#: flatcamTools/ToolSub.py:491 #, python-format msgid "Parsing tool %s geometry ..." msgstr "" @@ -9465,40 +9674,40 @@ msgstr "" msgid "CNCJob objects can't be rotated." msgstr "" -#: flatcamTools/ToolTransform.py:674 +#: flatcamTools/ToolTransform.py:673 msgid "[success] Rotate done ..." msgstr "" -#: flatcamTools/ToolTransform.py:689 +#: flatcamTools/ToolTransform.py:688 msgid "[WARNING_NOTCL] No object selected. Please Select an object to flip!" msgstr "" -#: flatcamTools/ToolTransform.py:724 +#: flatcamTools/ToolTransform.py:723 msgid "CNCJob objects can't be mirrored/flipped." msgstr "" -#: flatcamTools/ToolTransform.py:759 +#: flatcamTools/ToolTransform.py:757 msgid "" "[WARNING_NOTCL] No object selected. Please Select an object to shear/skew!" msgstr "" -#: flatcamTools/ToolTransform.py:781 +#: flatcamTools/ToolTransform.py:779 msgid "CNCJob objects can't be skewed." msgstr "" -#: flatcamTools/ToolTransform.py:808 +#: flatcamTools/ToolTransform.py:806 msgid "[WARNING_NOTCL] No object selected. Please Select an object to scale!" msgstr "" -#: flatcamTools/ToolTransform.py:841 +#: flatcamTools/ToolTransform.py:839 msgid "CNCJob objects can't be scaled." msgstr "" -#: flatcamTools/ToolTransform.py:861 +#: flatcamTools/ToolTransform.py:858 msgid "[WARNING_NOTCL] No object selected. Please Select an object to offset!" msgstr "" -#: flatcamTools/ToolTransform.py:882 +#: flatcamTools/ToolTransform.py:867 msgid "CNCJob objects can't be offseted." msgstr "" From 008afb3ca8dc29e612065a583fa16e857834608b Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Mon, 20 May 2019 16:36:13 +0300 Subject: [PATCH 36/42] - more PEP8 changes in Gerber editor --- README.md | 4 ++++ flatcamEditors/FlatCAMGrbEditor.py | 29 ++++++++++++++++------------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 7471238f..0bf2cb41 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing. ================================================= +20.05.2019 + +- more PEP8 changes in Gerber editor + 19.05.2019 - fixed the Circle Steps parameter for both Gerber and Geometry objects not being applied and instead the app internal defaults were used. diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 4d00d320..32ba76b6 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -82,7 +82,7 @@ class DrawToolShape(object): return return pts - def __init__(self, geo={}): + def __init__(self, geo=None): # Shapely type or list of such self.geo = geo @@ -525,11 +525,13 @@ class FCPadArray(FCShapeTool): new_geo_el = dict() if 'solid' in geo_el: - new_geo_el['solid'] = affinity.translate(geo_el['solid'], xoff=(dx - self.last_dx), - yoff=(dy - self.last_dy)) + new_geo_el['solid'] = affinity.translate( + geo_el['solid'], xoff=(dx - self.last_dx), yoff=(dy - self.last_dy) + ) if 'follow' in geo_el: - new_geo_el['follow'] = affinity.translate(geo_el['solid'], xoff=(dx - self.last_dx), - yoff=(dy - self.last_dy)) + new_geo_el['follow'] = affinity.translate( + geo_el['solid'], xoff=(dx - self.last_dx), yoff=(dy - self.last_dy) + ) geo_el_list.append(new_geo_el) else: @@ -582,7 +584,7 @@ class FCPadArray(FCShapeTool): center = Point([point_x, point_y]) new_geo_el['solid'] = center.buffer(self.radius) new_geo_el['follow'] = center - return new_geo_el + return new_geo_el elif ap_type == 'R': new_geo_el = dict() @@ -590,9 +592,9 @@ class FCPadArray(FCShapeTool): p2 = (point_x + self.half_width, point_y - self.half_height) p3 = (point_x + self.half_width, point_y + self.half_height) p4 = (point_x - self.half_width, point_y + self.half_height) - new_geo_el['solid'] = Polygon([p1, p2, p3, p4, p1]) + new_geo_el['solid'] = Polygon([p1, p2, p3, p4, p1]) new_geo_el['follow'] = Point([point_x, point_y]) - return new_geo_el + return new_geo_el elif ap_type == 'O': geo = [] new_geo_el = dict() @@ -725,7 +727,7 @@ class FCPoligonize(FCShapeTool): self.name = 'poligonize' self.draw_app = draw_app - self.draw_app.app.inform.emit( _("Select shape(s) and then click ...")) + self.draw_app.app.inform.emit(_("Select shape(s) and then click ...")) self.draw_app.in_action = True self.make() @@ -748,7 +750,7 @@ class FCPoligonize(FCShapeTool): apid_set.add(apid) break - if len (apid_set) > 1: + if len(apid_set) > 1: self.draw_app.in_action = False self.complete = True self.draw_app.app.inform.emit(_("[WARNING_NOTCL] Failed. Poligonize works only on " @@ -849,8 +851,9 @@ class FCRegion(FCShapeTool): try: QtGui.QGuiApplication.restoreOverrideCursor() - except: - pass + except Exception as e: + log.debug("FlatCAMGrbEditor.FCRegion --> %s" % str(e)) + self.cursor = QtGui.QCursor(QtGui.QPixmap('share/aero.png')) QtGui.QGuiApplication.setOverrideCursor(self.cursor) @@ -1863,7 +1866,7 @@ class FCApertureMove(FCShapeTool): self.geometry.append(DrawToolShape(new_geo_el)) self.current_storage.remove(select_shape) sel_shapes_to_be_deleted.append(select_shape) - self.draw_app.on_grb_shape_complete(self.current_storage, noplot=True) + self.draw_app.on_grb_shape_complete(self.current_storage, no_plot=True) self.geometry = [] for shp in sel_shapes_to_be_deleted: From 511df1979334b8459ffe0c9398f979011604e854 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Mon, 20 May 2019 17:15:33 +0300 Subject: [PATCH 37/42] - Gerber Editor - started to work on a new editor tool: Eraser --- README.md | 1 + flatcamEditors/FlatCAMGrbEditor.py | 159 +++++++++++++++++++++++++++++ flatcamGUI/FlatCAMGUI.py | 4 + share/eraser26.png | Bin 0 -> 1303 bytes 4 files changed, 164 insertions(+) create mode 100644 share/eraser26.png diff --git a/README.md b/README.md index 0bf2cb41..d32668d5 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ CAD program, and create G-Code for Isolation routing. 20.05.2019 - more PEP8 changes in Gerber editor +- Gerber Editor - started to work on a new editor tool: Eraser 19.05.2019 diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 32ba76b6..3983185f 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -1954,6 +1954,163 @@ class FCApertureCopy(FCApertureMove): self.draw_app.app.inform.emit(_("[success] Done. Apertures copied.")) +class FCEraser(FCShapeTool): + def __init__(self, draw_app): + DrawTool.__init__(self, draw_app) + self.name = 'eraser' + + self.origin = None + self.destination = None + self.selected_apertures = [] + + if self.draw_app.launched_from_shortcuts is True: + self.draw_app.launched_from_shortcuts = False + self.draw_app.app.inform.emit(_("Select a shape to act as deletion area ...")) + else: + self.draw_app.app.inform.emit(_("Click to erase ...")) + + self.current_storage = None + self.geometry = [] + + for index in self.draw_app.apertures_table.selectedIndexes(): + row = index.row() + # on column 1 in tool tables we hold the aperture codes, and we retrieve them as strings + aperture_on_row = self.draw_app.apertures_table.item(row, 1).text() + self.selected_apertures.append(aperture_on_row) + + # Switch notebook to Selected page + self.draw_app.app.ui.notebook.setCurrentWidget(self.draw_app.app.ui.selected_tab) + + self.sel_limit = self.draw_app.app.defaults["gerber_editor_sel_limit"] + + def set_origin(self, origin): + self.origin = origin + + def click(self, point): + self.draw_app.apertures_table.clearSelection() + sel_aperture = set() + + for storage in self.draw_app.storage_dict: + try: + for geo_el in self.draw_app.storage_dict[storage]['geometry']: + if 'solid' in geo_el.geo: + geometric_data = geo_el.geo['solid'] + if Point(point).within(geometric_data): + self.draw_app.selected = [] + self.draw_app.selected.append(geo_el) + sel_aperture.add(storage) + except KeyError: + pass + + # select the aperture in the Apertures Table that is associated with the selected shape + try: + self.draw_app.apertures_table.cellPressed.disconnect() + except Exception as e: + log.debug("FlatCAMGrbEditor.FCEraser.click_release() --> %s" % str(e)) + + self.draw_app.apertures_table.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) + for aper in sel_aperture: + for row in range(self.draw_app.apertures_table.rowCount()): + if str(aper) == self.draw_app.apertures_table.item(row, 1).text(): + self.draw_app.apertures_table.selectRow(row) + self.draw_app.last_aperture_selected = aper + self.draw_app.apertures_table.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + + self.draw_app.apertures_table.cellPressed.connect(self.draw_app.on_row_selected) + + if len(self.draw_app.get_selected()) == 0: + return "Nothing to move." + + if self.origin is None: + self.set_origin(point) + self.draw_app.app.inform.emit(_("Click to erase ...")) + return + else: + self.destination = point + self.make() + + # MS: always return to the Select Tool + self.draw_app.select_tool("select") + return + + # def click_release(self, point): + # self.draw_app.apertures_table.clearSelection() + # sel_aperture = set() + # + # for storage in self.draw_app.storage_dict: + # try: + # for geo_el in self.draw_app.storage_dict[storage]['geometry']: + # if 'solid' in geo_el.geo: + # geometric_data = geo_el.geo['solid'] + # if Point(point).within(geometric_data): + # self.draw_app.selected = [] + # self.draw_app.selected.append(geo_el) + # sel_aperture.add(storage) + # except KeyError: + # pass + # + # # select the aperture in the Apertures Table that is associated with the selected shape + # try: + # self.draw_app.apertures_table.cellPressed.disconnect() + # except Exception as e: + # log.debug("FlatCAMGrbEditor.FCEraser.click_release() --> %s" % str(e)) + # + # self.draw_app.apertures_table.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) + # for aper in sel_aperture: + # for row in range(self.draw_app.apertures_table.rowCount()): + # if str(aper) == self.draw_app.apertures_table.item(row, 1).text(): + # self.draw_app.apertures_table.selectRow(row) + # self.draw_app.last_aperture_selected = aper + # self.draw_app.apertures_table.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + # + # self.draw_app.apertures_table.cellPressed.connect(self.draw_app.on_row_selected) + # + # return "" + + def make(self): + # Create new geometry + dx = self.destination[0] - self.origin[0] + dy = self.destination[1] - self.origin[1] + sel_shapes_to_be_deleted = [] + + self.draw_app.plot_all() + self.draw_app.app.inform.emit(_("[success] Done. Apertures Move completed.")) + + def clean_up(self): + self.draw_app.selected = [] + self.draw_app.apertures_table.clearSelection() + self.draw_app.plot_all() + + def utility_geometry(self, data=None): + """ + Temporary geometry on screen while using this tool. + + :param data: + :return: + """ + geo_list = [] + + if self.origin is None: + return None + + if len(self.draw_app.get_selected()) == 0: + return None + + dx = data[0] - self.origin[0] + dy = data[1] - self.origin[1] + + for geom in self.draw_app.get_selected(): + new_geo_el = dict() + if 'solid' in geom.geo: + new_geo_el['solid'] = affinity.translate(geom.geo['solid'], xoff=dx, yoff=dy) + if 'follow' in geom.geo: + new_geo_el['follow'] = affinity.translate(geom.geo['follow'], xoff=dx, yoff=dy) + if 'clear' in geom.geo: + new_geo_el['clear'] = affinity.translate(geom.geo['clear'], xoff=dx, yoff=dy) + geo_list.append(deepcopy(new_geo_el)) + return DrawToolUtilityShape(geo_list) + + class FCApertureSelect(DrawTool): def __init__(self, grb_editor_app): DrawTool.__init__(self, grb_editor_app) @@ -2468,6 +2625,8 @@ class FlatCAMGrbEditor(QtCore.QObject): "constructor": FCBuffer}, "scale": {"button": self.app.ui.aperture_scale_btn, "constructor": FCScale}, + "eraser": {"button": self.app.ui.aperture_eraser_btn, + "constructor": FCEraser}, "copy": {"button": self.app.ui.aperture_copy_btn, "constructor": FCApertureCopy}, "transform": {"button": self.app.ui.grb_transform_btn, diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index ce88653c..09aaa014 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -720,6 +720,8 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.aperture_buffer_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/buffer16-2.png'), _('Buffer')) self.aperture_scale_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/scale32.png'), _('Scale')) + self.aperture_eraser_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/eraser26.png'), _('Eraser')) + self.grb_edit_toolbar.addSeparator() self.aperture_copy_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/copy32.png'), _("Copy")) self.aperture_delete_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/trash32.png'), @@ -1942,6 +1944,8 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.aperture_buffer_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/buffer16-2.png'), _('Buffer')) self.aperture_scale_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/scale32.png'), _('Scale')) + self.aperture_eraser_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/eraser26.png'), _('Eraser')) + self.grb_edit_toolbar.addSeparator() self.aperture_copy_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/copy32.png'), _("Copy")) self.aperture_delete_btn = self.grb_edit_toolbar.addAction(QtGui.QIcon('share/trash32.png'), diff --git a/share/eraser26.png b/share/eraser26.png new file mode 100644 index 0000000000000000000000000000000000000000..406a2ef56a8c5d53a88fa3456d2aa966f4336745 GIT binary patch literal 1303 zcmV+y1?c*TP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1guF!K~#8N?Va1} zW>Xx8f5PM}G&w{LDJi*`V#*D-lqlpNIVELDPOcF6D$f@#8X-#?`KbIHFpaA@{^R=`l zdK-U{SIA%l#P~*96FkJ77Kk&Xrlnu-sBN@rLk&Gy!mKe!ZN2x7Fk|>wRRZ(k&Ey)qn7dt=mX7xd~jR6s4 zB8J3(2r>cN#5h5Ai6Dg;69XbhLHfqvh8imdM36$1hyf9#0HtC;1R2RWvTuyz<)Mfm zBj_80Z{K}lKm-}c6fq!z3}C7l;5i735X{atF@{|8>N&{Ea#mOyWXc%eImn}OHja|- zNNXTnUzcO927gIfuj|3<+Yzo5fO2fg(THhs$$AGzmK#ftVhyhCkftsRJ69bkC0yRXbDh4bW1eT0aT?|+{ z2rLn$${0{X5STMcwK1TUATURis$)P+L14-#)yII^g1{6}T*QDHgFwkBZel>KL7+qw zS23XGATTD1yBJV=5Ev50Weo5T1TK}F-?qk?>ox{>2y%h^PFiEkbsYn055hHL-%4wI zx$a{?%|W91~#*o`|3}BIYYsZnB zRCp}*lyIBF`_kHeZu2qV8foo(l1Z2fR()WVIcvMQtB3)-1OArQBp}C+Zjz-rR`xw$ zxSAM=SEV%(NrIJ(a*TXUTHDH9T@1KZT9eVWRFtD7_j_C0$X#U&V5j@s5NuX_`93gr3hV@#x5hLSvSu)DuvhPhg z5#u1-Ci_OYOCAh9O+6#6Kbspd4#BOm?>THfHC-vW7y-_ZL|yG6^r_e;%1|T5mfRwz ziV`sfGDVb#F_N2QsVEVn5I4x*r8UWYBOl|-G literal 0 HcmV?d00001 From 4f2e5643d97c9379cb8b6e5ecec0f4c95731c2cb Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Tue, 21 May 2019 16:13:36 +0300 Subject: [PATCH 38/42] - added the file extension .ncd to the Excellon file extension list - solved parsing issue for Excellon files generated by older Eagle versions (v6.x) --- FlatCAMApp.py | 4 ++-- README.md | 5 +++++ camlib.py | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 5e7c1994..40f8feae 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -1905,7 +1905,7 @@ class App(QtCore.QObject): 'dim', 'mil', 'grb', 'top', 'bot', 'smt', 'smb', 'sst', 'ssb', 'spt', 'spb', 'pho', 'gdo', 'art', 'gbd', 'gb0', 'gb1', 'gb2', 'gb3', 'g4', 'gb5', 'gb6', 'gb7', 'gb8', 'gb9' ] - self.exc_list = ['drl', 'txt', 'xln', 'drd', 'tap', 'exc'] + 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'] @@ -5945,7 +5945,7 @@ class App(QtCore.QObject): self.report_usage("on_fileopenexcellon") App.log.debug("on_fileopenexcellon()") - _filter_ = "Excellon Files (*.drl *.txt *.xln *.drd *.tap *.exc);;" \ + _filter_ = "Excellon Files (*.drl *.txt *.xln *.drd *.tap *.exc *.ncd);;" \ "All Files (*.*)" try: diff --git a/README.md b/README.md index d32668d5..e611b28c 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,11 @@ CAD program, and create G-Code for Isolation routing. ================================================= +21.05.2019 + +- added the file extension .ncd to the Excellon file extension list +- solved parsing issue for Excellon files generated by older Eagle versions (v6.x) + 20.05.2019 - more PEP8 changes in Gerber editor diff --git a/camlib.py b/camlib.py index a0ee2667..052db845 100644 --- a/camlib.py +++ b/camlib.py @@ -3878,6 +3878,7 @@ class Excellon(Geometry): # Header Begin (M48) # if self.hbegin_re.search(eline): in_header = True + headerless = False log.warning("Found start of the header: %s" % eline) continue From b273bdc3df2d410ab58c7710bee35add12651da6 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 22 May 2019 01:04:10 +0300 Subject: [PATCH 39/42] - Gerber Editor: finished a new tool: Eraser. It will erase certain parts of Gerber geometries having the shape of a selected shape. --- README.md | 1 + flatcamEditors/FlatCAMGrbEditor.py | 126 +++++++++++++---------------- flatcamTools/ToolPaint.py | 6 +- 3 files changed, 60 insertions(+), 73 deletions(-) diff --git a/README.md b/README.md index e611b28c..cf672208 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ CAD program, and create G-Code for Isolation routing. - added the file extension .ncd to the Excellon file extension list - solved parsing issue for Excellon files generated by older Eagle versions (v6.x) +- Gerber Editor: finished a new tool: Eraser. It will erase certain parts of Gerber geometries having the shape of a selected shape. 20.05.2019 diff --git a/flatcamEditors/FlatCAMGrbEditor.py b/flatcamEditors/FlatCAMGrbEditor.py index 3983185f..687751c6 100644 --- a/flatcamEditors/FlatCAMGrbEditor.py +++ b/flatcamEditors/FlatCAMGrbEditor.py @@ -1963,11 +1963,12 @@ class FCEraser(FCShapeTool): self.destination = None self.selected_apertures = [] - if self.draw_app.launched_from_shortcuts is True: - self.draw_app.launched_from_shortcuts = False - self.draw_app.app.inform.emit(_("Select a shape to act as deletion area ...")) + if len(self.draw_app.get_selected()) == 0: + if self.draw_app.launched_from_shortcuts is True: + self.draw_app.launched_from_shortcuts = False + self.draw_app.app.inform.emit(_("Select a shape to act as deletion area ...")) else: - self.draw_app.app.inform.emit(_("Click to erase ...")) + self.draw_app.app.inform.emit(_("Click to pick-up the erase shape...")) self.current_storage = None self.geometry = [] @@ -1987,39 +1988,40 @@ class FCEraser(FCShapeTool): self.origin = origin def click(self, point): - self.draw_app.apertures_table.clearSelection() - sel_aperture = set() + if len(self.draw_app.get_selected()) == 0: + self.draw_app.apertures_table.clearSelection() + sel_aperture = set() - for storage in self.draw_app.storage_dict: + for storage in self.draw_app.storage_dict: + try: + for geo_el in self.draw_app.storage_dict[storage]['geometry']: + if 'solid' in geo_el.geo: + geometric_data = geo_el.geo['solid'] + if Point(point).within(geometric_data): + self.draw_app.selected = [] + self.draw_app.selected.append(geo_el) + sel_aperture.add(storage) + except KeyError: + pass + + # select the aperture in the Apertures Table that is associated with the selected shape try: - for geo_el in self.draw_app.storage_dict[storage]['geometry']: - if 'solid' in geo_el.geo: - geometric_data = geo_el.geo['solid'] - if Point(point).within(geometric_data): - self.draw_app.selected = [] - self.draw_app.selected.append(geo_el) - sel_aperture.add(storage) - except KeyError: - pass + self.draw_app.apertures_table.cellPressed.disconnect() + except Exception as e: + log.debug("FlatCAMGrbEditor.FCEraser.click_release() --> %s" % str(e)) - # select the aperture in the Apertures Table that is associated with the selected shape - try: - self.draw_app.apertures_table.cellPressed.disconnect() - except Exception as e: - log.debug("FlatCAMGrbEditor.FCEraser.click_release() --> %s" % str(e)) + self.draw_app.apertures_table.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) + for aper in sel_aperture: + for row in range(self.draw_app.apertures_table.rowCount()): + if str(aper) == self.draw_app.apertures_table.item(row, 1).text(): + self.draw_app.apertures_table.selectRow(row) + self.draw_app.last_aperture_selected = aper + self.draw_app.apertures_table.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) - self.draw_app.apertures_table.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) - for aper in sel_aperture: - for row in range(self.draw_app.apertures_table.rowCount()): - if str(aper) == self.draw_app.apertures_table.item(row, 1).text(): - self.draw_app.apertures_table.selectRow(row) - self.draw_app.last_aperture_selected = aper - self.draw_app.apertures_table.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) - - self.draw_app.apertures_table.cellPressed.connect(self.draw_app.on_row_selected) + self.draw_app.apertures_table.cellPressed.connect(self.draw_app.on_row_selected) if len(self.draw_app.get_selected()) == 0: - return "Nothing to move." + return "Nothing to ersase." if self.origin is None: self.set_origin(point) @@ -2029,52 +2031,32 @@ class FCEraser(FCShapeTool): self.destination = point self.make() - # MS: always return to the Select Tool - self.draw_app.select_tool("select") + # self.draw_app.select_tool("select") return - # def click_release(self, point): - # self.draw_app.apertures_table.clearSelection() - # sel_aperture = set() - # - # for storage in self.draw_app.storage_dict: - # try: - # for geo_el in self.draw_app.storage_dict[storage]['geometry']: - # if 'solid' in geo_el.geo: - # geometric_data = geo_el.geo['solid'] - # if Point(point).within(geometric_data): - # self.draw_app.selected = [] - # self.draw_app.selected.append(geo_el) - # sel_aperture.add(storage) - # except KeyError: - # pass - # - # # select the aperture in the Apertures Table that is associated with the selected shape - # try: - # self.draw_app.apertures_table.cellPressed.disconnect() - # except Exception as e: - # log.debug("FlatCAMGrbEditor.FCEraser.click_release() --> %s" % str(e)) - # - # self.draw_app.apertures_table.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) - # for aper in sel_aperture: - # for row in range(self.draw_app.apertures_table.rowCount()): - # if str(aper) == self.draw_app.apertures_table.item(row, 1).text(): - # self.draw_app.apertures_table.selectRow(row) - # self.draw_app.last_aperture_selected = aper - # self.draw_app.apertures_table.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) - # - # self.draw_app.apertures_table.cellPressed.connect(self.draw_app.on_row_selected) - # - # return "" - def make(self): - # Create new geometry - dx = self.destination[0] - self.origin[0] - dy = self.destination[1] - self.origin[1] - sel_shapes_to_be_deleted = [] + eraser_sel_shapes = [] + # create the eraser shape from selection + for eraser_shape in self.utility_geometry(data=self.destination).geo: + temp_shape = eraser_shape['solid'].buffer(0.0000001) + temp_shape = Polygon(temp_shape.exterior) + eraser_sel_shapes.append(temp_shape) + eraser_sel_shapes = cascaded_union(eraser_sel_shapes) + + for storage in self.draw_app.storage_dict: + try: + for geo_el in self.draw_app.storage_dict[storage]['geometry']: + 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) + except KeyError: + pass + + self.draw_app.delete_utility_geometry() self.draw_app.plot_all() - self.draw_app.app.inform.emit(_("[success] Done. Apertures Move completed.")) + self.draw_app.app.inform.emit(_("[success] Done. Eraser tool action completed.")) def clean_up(self): self.draw_app.selected = [] diff --git a/flatcamTools/ToolPaint.py b/flatcamTools/ToolPaint.py index 4e3c1e8a..381a03d8 100644 --- a/flatcamTools/ToolPaint.py +++ b/flatcamTools/ToolPaint.py @@ -795,7 +795,11 @@ class ToolPaint(FlatCAMTool, Gerber): if event.button == 1: self.app.inform.emit(_("Painting polygon...")) self.app.plotcanvas.vis_disconnect('mouse_press', doit) + pos = self.app.plotcanvas.vispy_canvas.translate_coords(event.pos) + if self.app.grid_status(): + pos = self.app.geo_editor.snap(pos[0], pos[1]) + self.paint_poly(self.paint_obj, inside_pt=[pos[0], pos[1]], tooldia=tooldia, @@ -827,7 +831,7 @@ class ToolPaint(FlatCAMTool, Gerber): # Which polygon. # poly = find_polygon(self.solid_geometry, inside_pt) - poly = obj.find_polygon(inside_pt) + poly = self.find_polygon(point=inside_pt, geoset=obj.solid_geometry) paint_method = self.paintmethod_combo.get_value() try: From cffcbb2410e26778c082ef8bbd903e95d680abb3 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 22 May 2019 15:03:45 +0300 Subject: [PATCH 40/42] - Geo Editor - added a new editor tool, Eraser --- README.md | 4 ++ flatcamEditors/FlatCAMGeoEditor.py | 104 +++++++++++++++++++++++++++++ flatcamGUI/FlatCAMGUI.py | 3 + 3 files changed, 111 insertions(+) diff --git a/README.md b/README.md index cf672208..c8d69ec7 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing. ================================================= +22.05.2019 + +- Geo Editor - added a new editor tool, Eraser + 21.05.2019 - added the file extension .ncd to the Excellon file extension list diff --git a/flatcamEditors/FlatCAMGeoEditor.py b/flatcamEditors/FlatCAMGeoEditor.py index aaad1c9c..a2d63768 100644 --- a/flatcamEditors/FlatCAMGeoEditor.py +++ b/flatcamEditors/FlatCAMGeoEditor.py @@ -2798,6 +2798,108 @@ class FCBuffer(FCShapeTool): self.buff_tool.hide_tool() +class FCEraser(FCShapeTool): + def __init__(self, draw_app): + DrawTool.__init__(self, draw_app) + self.name = 'eraser' + + self.origin = None + self.destination = None + + if len(self.draw_app.get_selected()) == 0: + if self.draw_app.launched_from_shortcuts is True: + self.draw_app.launched_from_shortcuts = False + self.draw_app.app.inform.emit(_("Select a shape to act as deletion area ...")) + else: + self.draw_app.app.inform.emit(_("Click to pick-up the erase shape...")) + + self.geometry = [] + self.storage = self.draw_app.storage + + # Switch notebook to Selected page + self.draw_app.app.ui.notebook.setCurrentWidget(self.draw_app.app.ui.selected_tab) + + def set_origin(self, origin): + self.origin = origin + + def click(self, point): + if len(self.draw_app.get_selected()) == 0: + + for obj_shape in self.storage.get_objects(): + try: + __, closest_shape = self.storage.nearest(point) + self.draw_app.selected.append(closest_shape) + except StopIteration: + return "" + + if len(self.draw_app.get_selected()) == 0: + return "Nothing to ersase." + + if self.origin is None: + self.set_origin(point) + self.draw_app.app.inform.emit(_("Click to erase ...")) + return + else: + self.destination = point + self.make() + + # self.draw_app.select_tool("select") + return + + def make(self): + eraser_sel_shapes = [] + + # create the eraser shape from selection + for eraser_shape in self.utility_geometry(data=self.destination).geo: + temp_shape = eraser_shape.buffer(0.0000001) + temp_shape = Polygon(temp_shape.exterior) + eraser_sel_shapes.append(temp_shape) + eraser_sel_shapes = cascaded_union(eraser_sel_shapes) + + for obj_shape in self.storage.get_objects(): + try: + geometric_data = obj_shape.geo + if eraser_sel_shapes.intersects(geometric_data): + obj_shape.geo = geometric_data.difference(eraser_sel_shapes) + except KeyError: + pass + + self.draw_app.delete_utility_geometry() + self.draw_app.plot_all() + self.draw_app.app.inform.emit(_("[success] Done. Eraser tool action completed.")) + + def utility_geometry(self, data=None): + """ + Temporary geometry on screen while using this tool. + + :param data: + :return: + """ + geo_list = [] + + if self.origin is None: + return None + + if len(self.draw_app.get_selected()) == 0: + return None + + dx = data[0] - self.origin[0] + dy = data[1] - self.origin[1] + + 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('select') + self.draw_app.selected = [] + return + return DrawToolUtilityShape(geo_list) + + def clean_up(self): + self.draw_app.selected = [] + self.draw_app.plot_all() + + class FCPaint(FCShapeTool): def __init__(self, draw_app): FCShapeTool.__init__(self, draw_app) @@ -2864,6 +2966,8 @@ class FlatCAMGeoEditor(QtCore.QObject): "constructor": FCBuffer}, "paint": {"button": self.app.ui.geo_add_paint_btn, "constructor": FCPaint}, + "eraser": {"button": self.app.ui.geo_eraser_btn, + "constructor": FCEraser}, "move": {"button": self.app.ui.geo_move_btn, "constructor": FCMove}, "transform": {"button": self.app.ui.geo_transform_btn, diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index 09aaa014..6e4eea09 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -686,6 +686,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.geo_add_text_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/text32.png'), _('Add Text')) self.geo_add_buffer_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/buffer16-2.png'), _('Add Buffer')) self.geo_add_paint_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/paint20_1.png'), _('Paint Shape')) + self.geo_eraser_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/eraser26.png'), _('Eraser')) self.geo_edit_toolbar.addSeparator() self.geo_union_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/union32.png'), _('Polygon Union')) @@ -1910,6 +1911,8 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.geo_add_buffer_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/buffer16-2.png'), _('Add Buffer')) self.geo_add_paint_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/paint20_1.png'), _('Paint Shape')) + self.geo_eraser_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/eraser26.png'), _('Eraser')) + self.geo_edit_toolbar.addSeparator() self.geo_union_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/union32.png'), _('Polygon Union')) From f400294027bbe7dc2862690a371736d9b0be9d5c Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 22 May 2019 15:37:07 +0300 Subject: [PATCH 41/42] - PEP8 cleanup of the Geo Editor --- FlatCAMApp.py | 2 +- README.md | 1 + flatcamEditors/FlatCAMGeoEditor.py | 454 ++++++++++++++--------------- 3 files changed, 222 insertions(+), 235 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 40f8feae..99e107fa 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -95,7 +95,7 @@ class App(QtCore.QObject): # Version version = 8.917 - version_date = "2019/05/18" + version_date = "2019/05/22" beta = True # current date now diff --git a/README.md b/README.md index c8d69ec7..c6448c8a 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ CAD program, and create G-Code for Isolation routing. 22.05.2019 - Geo Editor - added a new editor tool, Eraser +- PEP8 cleanup of the Geo Editor 21.05.2019 diff --git a/flatcamEditors/FlatCAMGeoEditor.py b/flatcamEditors/FlatCAMGeoEditor.py index a2d63768..ef7ed6b7 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 @@ -33,9 +33,9 @@ from flatcamParsers.ParseFont import * # from vispy.io import read_png import gettext import FlatCAMTranslation as fcTranslate +import builtins fcTranslate.apply_language('strings') -import builtins if '_' not in builtins.__dict__: _ = gettext.gettext @@ -81,9 +81,9 @@ class BufferSelectionTool(FlatCAMTool): self.buffer_corner_lbl = QtWidgets.QLabel(_("Buffer corner:")) self.buffer_corner_lbl.setToolTip( _("There are 3 types of corners:\n" - " - 'Round': the corner is rounded for exterior buffer.\n" - " - 'Square:' the corner is met in a sharp angle for exterior buffer.\n" - " - 'Beveled:' the corner is a line that directly connects the features meeting in the corner") + " - 'Round': the corner is rounded for exterior buffer.\n" + " - 'Square:' the corner is met in a sharp angle for exterior buffer.\n" + " - 'Beveled:' the corner is a line that directly connects the features meeting in the corner") ) self.buffer_corner_cb = FCComboBox() self.buffer_corner_cb.addItem(_("Round")) @@ -136,7 +136,7 @@ class BufferSelectionTool(FlatCAMTool): self.buffer_distance_entry.set_value(buffer_distance) except ValueError: self.app.inform.emit(_("[WARNING_NOTCL] Buffer distance value is missing or wrong format. " - "Add it and retry.")) + "Add it and retry.")) return # the cb index start from 0 but the join styles for the buffer start from 1 therefore the adjustment # I populated the combobox such that the index coincide with the join styles value (which is really an INT) @@ -153,7 +153,7 @@ class BufferSelectionTool(FlatCAMTool): self.buffer_distance_entry.set_value(buffer_distance) except ValueError: self.app.inform.emit(_("[WARNING_NOTCL] Buffer distance value is missing or wrong format. " - "Add it and retry.")) + "Add it and retry.")) return # the cb index start from 0 but the join styles for the buffer start from 1 therefore the adjustment # I populated the combobox such that the index coincide with the join styles value (which is really an INT) @@ -170,7 +170,7 @@ class BufferSelectionTool(FlatCAMTool): self.buffer_distance_entry.set_value(buffer_distance) except ValueError: self.app.inform.emit(_("[WARNING_NOTCL] Buffer distance value is missing or wrong format. " - "Add it and retry.")) + "Add it and retry.")) return # the cb index start from 0 but the join styles for the buffer start from 1 therefore the adjustment # I populated the combobox such that the index coincide with the join styles value (which is really an INT) @@ -283,9 +283,9 @@ class TextInputTool(FlatCAMTool): self.font_size_cb.setMaximumWidth(70) font_sizes = ['6', '7', '8', '9', '10', '11', '12', '13', '14', - '15', '16', '18', '20', '22', '24', '26', '28', - '32', '36', '40', '44', '48', '54', '60', '66', - '72', '80', '88', '96'] + '15', '16', '18', '20', '22', '24', '26', '28', + '32', '36', '40', '44', '48', '54', '60', '66', + '72', '80', '88', '96'] for i in font_sizes: self.font_size_cb.addItem(i) @@ -414,7 +414,7 @@ class PaintOptionsTool(FlatCAMTool): self.app = app self.fcdraw = fcdraw - ## Title + # Title title_label = QtWidgets.QLabel("%s" % ('Editor ' + self.toolName)) title_label.setStyleSheet(""" QLabel @@ -431,8 +431,8 @@ class PaintOptionsTool(FlatCAMTool): # Tool dia ptdlabel = QtWidgets.QLabel(_('Tool dia:')) ptdlabel.setToolTip( - _( "Diameter of the tool to\n" - "be used in the operation.") + _("Diameter of the tool to\n" + "be used in the operation.") ) grid.addWidget(ptdlabel, 0, 0) @@ -443,14 +443,14 @@ class PaintOptionsTool(FlatCAMTool): ovlabel = QtWidgets.QLabel(_('Overlap Rate:')) ovlabel.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 painted are still \n" - "not painted.\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 painted are still \n" + "not painted.\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.") ) grid.addWidget(ovlabel, 1, 0) self.paintoverlap_entry = FCEntry() @@ -460,9 +460,9 @@ class PaintOptionsTool(FlatCAMTool): # Margin marginlabel = QtWidgets.QLabel(_('Margin:')) marginlabel.setToolTip( - _( "Distance by which to avoid\n" - "the edges of the polygon to\n" - "be painted.") + _("Distance by which to avoid\n" + "the edges of the polygon to\n" + "be painted.") ) grid.addWidget(marginlabel, 2, 0) self.paintmargin_entry = FCEntry() @@ -472,8 +472,8 @@ class PaintOptionsTool(FlatCAMTool): 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.") ) grid.addWidget(methodlabel, 3, 0) self.paintmethod_combo = RadioSet([ @@ -486,8 +486,8 @@ class PaintOptionsTool(FlatCAMTool): # Connect lines pathconnectlabel = QtWidgets.QLabel(_("Connect:")) pathconnectlabel.setToolTip( - _( "Draw lines between resulting\n" - "segments to minimize tool lifts.") + _("Draw lines between resulting\n" + "segments to minimize tool lifts.") ) grid.addWidget(pathconnectlabel, 4, 0) self.pathconnect_cb = FCCheckBox() @@ -496,14 +496,13 @@ class PaintOptionsTool(FlatCAMTool): contourlabel = QtWidgets.QLabel(_("Contour:")) contourlabel.setToolTip( _("Cut around the perimeter of the polygon\n" - "to trim rough edges.") + "to trim rough edges.") ) grid.addWidget(contourlabel, 5, 0) self.paintcontour_cb = FCCheckBox() grid.addWidget(self.paintcontour_cb, 5, 1) - - ## Buttons + # Buttons hlay = QtWidgets.QHBoxLayout() self.layout.addLayout(hlay) hlay.addStretch() @@ -512,7 +511,7 @@ class PaintOptionsTool(FlatCAMTool): self.layout.addStretch() - ## Signals + # Signals self.paint_button.clicked.connect(self.on_paint) self.set_tool_ui() @@ -528,7 +527,7 @@ class PaintOptionsTool(FlatCAMTool): self.app.ui.notebook.setTabText(2, _("Paint Tool")) def set_tool_ui(self): - ## Init GUI + # Init GUI if self.app.defaults["tools_painttooldia"]: self.painttooldia_entry.set_value(self.app.defaults["tools_painttooldia"]) else: @@ -573,7 +572,7 @@ class PaintOptionsTool(FlatCAMTool): self.painttooldia_entry.set_value(tooldia) except ValueError: self.app.inform.emit(_("[WARNING_NOTCL] Tool diameter value is missing or wrong format. " - "Add it and retry.")) + "Add it and retry.")) return try: overlap = float(self.paintoverlap_entry.get_value()) @@ -584,7 +583,7 @@ class PaintOptionsTool(FlatCAMTool): self.paintoverlap_entry.set_value(overlap) except ValueError: self.app.inform.emit(_("[WARNING_NOTCL] Overlap value is missing or wrong format. " - "Add it and retry.")) + "Add it and retry.")) return try: @@ -596,7 +595,7 @@ class PaintOptionsTool(FlatCAMTool): self.paintmargin_entry.set_value(margin) except ValueError: self.app.inform.emit(_("[WARNING_NOTCL] Margin distance value is missing or wrong format. " - "Add it and retry.")) + "Add it and retry.")) return method = self.paintmethod_combo.get_value() contour = self.paintcontour_cb.get_value() @@ -654,21 +653,21 @@ class TransformEditorTool(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() self.rotate_label = QtWidgets.QLabel(_("Angle:")) self.rotate_label.setToolTip( - _( "Angle for Rotation action, in degrees.\n" - "Float number between -360 and 359.\n" - "Positive numbers for CW motion.\n" - "Negative numbers for CCW motion.") + _("Angle for Rotation action, in degrees.\n" + "Float number between -360 and 359.\n" + "Positive numbers for CW motion.\n" + "Negative numbers for CCW motion.") ) self.rotate_label.setFixedWidth(50) @@ -692,11 +691,11 @@ class TransformEditorTool(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() @@ -704,7 +703,7 @@ class TransformEditorTool(FlatCAMTool): self.skewx_label = QtWidgets.QLabel(_("Angle X:")) self.skewx_label.setToolTip( - _( "Angle for Skew action, in degrees.\n" + _("Angle for Skew action, in degrees.\n" "Float number between -360 and 359.") ) self.skewx_label.setFixedWidth(50) @@ -715,15 +714,15 @@ class TransformEditorTool(FlatCAMTool): self.skewx_button = FCButton() self.skewx_button.set_value(_("Skew X")) self.skewx_button.setToolTip( - _( "Skew/shear the selected shape(s).\n" - "The point of reference is the middle of\n" - "the bounding box for all selected shapes.")) + _("Skew/shear the selected shape(s).\n" + "The point of reference is the middle of\n" + "the bounding box for all selected shapes.")) self.skewx_button.setFixedWidth(60) self.skewy_label = QtWidgets.QLabel(_("Angle Y:")) self.skewy_label.setToolTip( - _( "Angle for Skew action, in degrees.\n" - "Float number between -360 and 359.") + _("Angle for Skew action, in degrees.\n" + "Float number between -360 and 359.") ) self.skewy_label.setFixedWidth(50) self.skewy_entry = FCEntry() @@ -734,8 +733,8 @@ class TransformEditorTool(FlatCAMTool): self.skewy_button.set_value(_("Skew Y")) self.skewy_button.setToolTip( _("Skew/shear the selected shape(s).\n" - "The point of reference is the middle of\n" - "the bounding box for all selected shapes.")) + "The point of reference is the middle of\n" + "the bounding box for all selected shapes.")) self.skewy_button.setFixedWidth(60) form1_child_1.addWidget(self.skewx_entry) @@ -749,11 +748,11 @@ class TransformEditorTool(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() @@ -771,9 +770,9 @@ class TransformEditorTool(FlatCAMTool): self.scalex_button = FCButton() self.scalex_button.set_value(_("Scale X")) self.scalex_button.setToolTip( - _( "Scale the selected shape(s).\n" - "The point of reference depends on \n" - "the Scale reference checkbox state.")) + _("Scale the selected shape(s).\n" + "The point of reference depends on \n" + "the Scale reference checkbox state.")) self.scalex_button.setFixedWidth(60) self.scaley_label = QtWidgets.QLabel(_("Factor Y:")) @@ -788,9 +787,9 @@ class TransformEditorTool(FlatCAMTool): self.scaley_button = FCButton() self.scaley_button.set_value(_("Scale Y")) self.scaley_button.setToolTip( - _( "Scale the selected shape(s).\n" - "The point of reference depends on \n" - "the Scale reference checkbox state.")) + _("Scale the selected shape(s).\n" + "The point of reference depends on \n" + "the Scale reference checkbox state.")) self.scaley_button.setFixedWidth(60) self.scale_link_cb = FCCheckBox() @@ -798,7 +797,7 @@ class TransformEditorTool(FlatCAMTool): self.scale_link_cb.setText(_("Link")) self.scale_link_cb.setToolTip( _("Scale the selected shape(s)\n" - "using the Scale Factor X for both axis.")) + "using the Scale Factor X for both axis.")) self.scale_link_cb.setFixedWidth(50) self.scale_zero_ref_cb = FCCheckBox() @@ -806,9 +805,9 @@ class TransformEditorTool(FlatCAMTool): self.scale_zero_ref_cb.setText(_("Scale Reference")) self.scale_zero_ref_cb.setToolTip( _("Scale the selected shape(s)\n" - "using the origin reference when checked,\n" - "and the center of the biggest bounding box\n" - "of the selected shapes when unchecked.")) + "using the origin reference when checked,\n" + "and the center of the biggest bounding box\n" + "of the selected shapes when unchecked.")) form2_child_1.addWidget(self.scalex_entry) form2_child_1.addWidget(self.scalex_button) @@ -823,11 +822,11 @@ class TransformEditorTool(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() @@ -845,9 +844,9 @@ class TransformEditorTool(FlatCAMTool): self.offx_button = FCButton() self.offx_button.set_value(_("Offset X")) self.offx_button.setToolTip( - _( "Offset the selected shape(s).\n" - "The point of reference is the middle of\n" - "the bounding box for all selected shapes.\n") + _("Offset the selected shape(s).\n" + "The point of reference is the middle of\n" + "the bounding box for all selected shapes.\n") ) self.offx_button.setFixedWidth(60) @@ -864,8 +863,8 @@ class TransformEditorTool(FlatCAMTool): self.offy_button.set_value(_("Offset Y")) self.offy_button.setToolTip( _("Offset the selected shape(s).\n" - "The point of reference is the middle of\n" - "the bounding box for all selected shapes.\n") + "The point of reference is the middle of\n" + "the bounding box for all selected shapes.\n") ) self.offy_button.setFixedWidth(60) @@ -880,11 +879,11 @@ class TransformEditorTool(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) @@ -895,7 +894,7 @@ class TransformEditorTool(FlatCAMTool): self.flipx_button.set_value(_("Flip on X")) self.flipx_button.setToolTip( _("Flip the selected shape(s) over the X axis.\n" - "Does not create a new shape.") + "Does not create a new shape.") ) self.flipx_button.setFixedWidth(60) @@ -903,7 +902,7 @@ class TransformEditorTool(FlatCAMTool): self.flipy_button.set_value(_("Flip on Y")) self.flipy_button.setToolTip( _("Flip the selected shape(s) over the X axis.\n" - "Does not create a new shape.") + "Does not create a new shape.") ) self.flipy_button.setFixedWidth(60) @@ -912,22 +911,22 @@ class TransformEditorTool(FlatCAMTool): self.flip_ref_cb.setText(_("Ref Pt")) self.flip_ref_cb.setToolTip( _("Flip the selected shape(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)") ) self.flip_ref_cb.setFixedWidth(50) self.flip_ref_label = QtWidgets.QLabel(_("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.") + "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.") ) self.flip_ref_label.setFixedWidth(50) self.flip_ref_entry = EvalEntry2("(0, 0)") @@ -937,9 +936,9 @@ class TransformEditorTool(FlatCAMTool): self.flip_ref_button = FCButton() self.flip_ref_button.set_value(_("Add")) self.flip_ref_button.setToolTip( - _( "The point coordinates can be captured by\n" - "left click on canvas together with pressing\n" - "SHIFT key. Then click Add button to insert.") + _("The point coordinates can be captured by\n" + "left click on canvas together with pressing\n" + "SHIFT key. Then click Add button to insert.") ) self.flip_ref_button.setFixedWidth(60) @@ -957,7 +956,7 @@ class TransformEditorTool(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) @@ -994,7 +993,7 @@ class TransformEditorTool(FlatCAMTool): FlatCAMTool.install(self, icon, separator, shortcut='ALT+T', **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: @@ -1111,7 +1110,7 @@ class TransformEditorTool(FlatCAMTool): value = float(self.skewx_entry.get_value().replace(',', '.')) except ValueError: self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered for Skew X, " - "use a number.")) + "use a number.")) return # self.on_skew("X", value) @@ -1132,7 +1131,7 @@ class TransformEditorTool(FlatCAMTool): value = float(self.skewy_entry.get_value().replace(',', '.')) except ValueError: self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered for Skew Y, " - "use a number.")) + "use a number.")) return # self.on_skew("Y", value) @@ -1153,7 +1152,7 @@ class TransformEditorTool(FlatCAMTool): xvalue = float(self.scalex_entry.get_value().replace(',', '.')) except ValueError: self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered for Scale X, " - "use a number.")) + "use a number.")) return # scaling to zero has no sense so we remove it, because scaling with 1 does nothing @@ -1190,7 +1189,7 @@ class TransformEditorTool(FlatCAMTool): yvalue = float(self.scaley_entry.get_value().replace(',', '.')) except ValueError: self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered for Scale Y, " - "use a number.")) + "use a number.")) return # scaling to zero has no sense so we remove it, because scaling with 1 does nothing @@ -1222,7 +1221,7 @@ class TransformEditorTool(FlatCAMTool): value = float(self.offx_entry.get_value().replace(',', '.')) except ValueError: self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered for Offset X, " - "use a number.")) + "use a number.")) return # self.on_offset("X", value) @@ -1243,7 +1242,7 @@ class TransformEditorTool(FlatCAMTool): value = float(self.offy_entry.get_value().replace(',', '.')) except ValueError: self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered for Offset Y, " - "use a number.")) + "use a number.")) return # self.on_offset("Y", value) @@ -1458,15 +1457,6 @@ class TransformEditorTool(FlatCAMTool): else: with self.app.proc_container.new(_("Applying Offset")): try: - # first get a bounding box to fit all - for sha in shape_list: - xmin, ymin, xmax, ymax = sha.bounds() - xminlist.append(xmin) - yminlist.append(ymin) - - # get the minimum x,y and maximum x,y for all objects selected - xminimal = min(xminlist) - yminimal = min(yminlist) self.app.progress.emit(20) for sha in shape_list: @@ -1476,10 +1466,6 @@ class TransformEditorTool(FlatCAMTool): sha.offset((0, num)) self.draw_app.replot() - # self.draw_app.add_shape(DrawToolShape(sha.geo)) - # - # self.draw_app.transform_complete.emit() - self.app.inform.emit(_('[success] Offset on the %s axis done ...') % str(axis)) self.app.progress.emit(100) @@ -1559,7 +1545,7 @@ class TransformEditorTool(FlatCAMTool): return else: self.app.inform.emit( - _( "[WARNING_NOTCL] Geometry shape skew X cancelled...")) + _("[WARNING_NOTCL] Geometry shape skew X cancelled...")) def on_skewy_key(self): val_box = FCInputDialog(title=_("Skew on Y axis ..."), @@ -1572,7 +1558,7 @@ class TransformEditorTool(FlatCAMTool): if ok: self.on_skewx(val=val) self.app.inform.emit( - _( "[success] Geometry shape skew on Y axis done...")) + _("[success] Geometry shape skew on Y axis done...")) return else: self.app.inform.emit( @@ -1599,19 +1585,19 @@ class DrawToolShape(object): """ pts = [] - ## Iterable: descend into each item. + # Iterable: descend into each item. try: for subo in o: pts += DrawToolShape.get_pts(subo) - ## Non-iterable + # Non-iterable except TypeError: if o is not None: - ## DrawToolShape: descend into .geo. + # DrawToolShape: descend into .geo. 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: @@ -1619,7 +1605,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) @@ -1645,14 +1631,14 @@ class DrawToolShape(object): """ # fixed issue of getting bounds only for one level lists of objects # now it can get bounds for nested lists of objects - def bounds_rec(shape): - if type(shape) is list: + def bounds_rec(shape_el): + if type(shape_el) is list: minx = Inf miny = Inf maxx = -Inf maxy = -Inf - for k in shape: + for k in shape_el: minx_, miny_, maxx_, maxy_ = bounds_rec(k) minx = min(minx, minx_) miny = min(miny, miny_) @@ -1661,7 +1647,7 @@ class DrawToolShape(object): return minx, miny, maxx, maxy else: # it's a Shapely object, return it's bounds - return shape.bounds + return shape_el.bounds bounds_coords = bounds_rec(self.geo) return bounds_coords @@ -1681,14 +1667,14 @@ class DrawToolShape(object): px, py = point xscale, yscale = {"X": (1.0, -1.0), "Y": (-1.0, 1.0)}[axis] - def mirror_geom(shape): - if type(shape) is list: + def mirror_geom(shape_el): + if type(shape_el) is list: new_obj = [] - for g in shape: + for g in shape_el: new_obj.append(mirror_geom(g)) return new_obj else: - return affinity.scale(shape, xscale, yscale, origin=(px,py)) + return affinity.scale(shape_el, xscale, yscale, origin=(px, py)) try: self.geo = mirror_geom(self.geo) @@ -1714,14 +1700,14 @@ class DrawToolShape(object): px, py = point - def rotate_geom(shape): - if type(shape) is list: + def rotate_geom(shape_el): + if type(shape_el) is list: new_obj = [] - for g in shape: + for g in shape_el: new_obj.append(rotate_geom(g)) return new_obj else: - return affinity.rotate(shape, angle, origin=(px, py)) + return affinity.rotate(shape_el, angle, origin=(px, py)) try: self.geo = rotate_geom(self.geo) @@ -1745,14 +1731,14 @@ class DrawToolShape(object): """ px, py = point - def skew_geom(shape): - if type(shape) is list: + def skew_geom(shape_el): + if type(shape_el) is list: new_obj = [] - for g in shape: + for g in shape_el: new_obj.append(skew_geom(g)) return new_obj else: - return affinity.skew(shape, angle_x, angle_y, origin=(px, py)) + return affinity.skew(shape_el, angle_x, angle_y, origin=(px, py)) try: self.geo = skew_geom(self.geo) @@ -1778,12 +1764,12 @@ class DrawToolShape(object): def translate_recursion(geom): if type(geom) == list: - geoms=list() + geoms = list() for local_geom in geom: geoms.append(translate_recursion(local_geom)) return geoms else: - return affinity.translate(geom, xoff=dx, yoff=dy) + return affinity.translate(geom, xoff=dx, yoff=dy) try: self.geo = translate_recursion(self.geo) @@ -1805,7 +1791,7 @@ class DrawToolShape(object): try: xfactor = float(xfactor) except: - log.debug("DrawToolShape.offset() --> Scale factor has to be a number: integer or float.") + log.debug("DrawToolShape.offset() --> Scale factor has to be a number: integer or float.") return if yfactor is None: @@ -1814,7 +1800,7 @@ class DrawToolShape(object): try: yfactor = float(yfactor) except: - log.debug("DrawToolShape.offset() --> Scale factor has to be a number: integer or float.") + log.debug("DrawToolShape.offset() --> Scale factor has to be a number: integer or float.") return if point is None: @@ -1825,7 +1811,7 @@ class DrawToolShape(object): def scale_recursion(geom): if type(geom) == list: - geoms=list() + geoms = list() for local_geom in geom: geoms.append(scale_recursion(local_geom)) return geoms @@ -2928,9 +2914,9 @@ class FCTransform(FCShapeTool): self.draw_app.transform_tool.run() -######################## -### Main Application ### -######################## +# ####################### +# ## Main Application ### +# ####################### class FlatCAMGeoEditor(QtCore.QObject): transform_complete = QtCore.pyqtSignal() @@ -2976,7 +2962,7 @@ class FlatCAMGeoEditor(QtCore.QObject): "constructor": FCCopy} } - ### Data + # ## Data self.active_tool = None self.storage = FlatCAMGeoEditor.make_storage() @@ -2992,7 +2978,7 @@ class FlatCAMGeoEditor(QtCore.QObject): self.shapes.enabled = False self.tool_shape.enabled = False - ## List of selected shapes. + # List of selected shapes. self.selected = [] self.flat_geo = [] @@ -3258,7 +3244,7 @@ class FlatCAMGeoEditor(QtCore.QObject): self.fcgeometry.visible = True 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 @@ -3288,7 +3274,6 @@ class FlatCAMGeoEditor(QtCore.QObject): self.app.ui.draw_cut.triggered.connect(self.cutpath) self.app.ui.draw_move.triggered.connect(self.on_move) - def disconnect_canvas_event_handlers(self): # we restore the key and mouse control to FlatCAMApp method # first connect to new, then disconnect the old handlers @@ -3366,8 +3351,7 @@ class FlatCAMGeoEditor(QtCore.QObject): "Shape object has empty geometry (None)" assert (isinstance(shape.geo, list) and len(shape.geo) > 0) or \ - not isinstance(shape.geo, list), \ - "Shape objects has empty geometry ([])" + not isinstance(shape.geo, list), "Shape objects has empty geometry ([])" if isinstance(shape, DrawToolUtilityShape): self.utility.append(shape) @@ -3407,6 +3391,7 @@ class FlatCAMGeoEditor(QtCore.QObject): into the editor. :param fcgeometry: FlatCAMGeometry + :param multigeo_tool: a tool for the case of multigeo :return: None """ assert isinstance(fcgeometry, Geometry), \ @@ -3444,9 +3429,8 @@ class FlatCAMGeoEditor(QtCore.QObject): self.replot() - # start with GRID toolbar activated - if self.app.ui.grid_snap_btn.isChecked() == False: + if self.app.ui.grid_snap_btn.isChecked() is False: self.app.ui.grid_snap_btn.trigger() def on_buffer_tool(self): @@ -3511,7 +3495,7 @@ class FlatCAMGeoEditor(QtCore.QObject): self.pos = self.canvas.vispy_canvas.translate_coords(event.pos) if self.app.grid_status(): - self.pos = self.app.geo_editor.snap(self.pos[0], self.pos[1]) + self.pos = self.app.geo_editor.snap(self.pos[0], self.pos[1]) self.app.app_cursor.enabled = True # Update cursor self.app.app_cursor.set_data(np.asarray([(self.pos[0], self.pos[1])]), symbol='++', edge_color='black', @@ -3535,7 +3519,7 @@ class FlatCAMGeoEditor(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.snap(self.pos[0], self.pos[1])) + self.active_tool.click(self.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: @@ -3585,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 @@ -3610,7 +3594,7 @@ class FlatCAMGeoEditor(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: @@ -3618,17 +3602,17 @@ class FlatCAMGeoEditor(QtCore.QObject): 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() if dx < 0: - 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), 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 @@ -3700,7 +3684,7 @@ class FlatCAMGeoEditor(QtCore.QObject): elif isinstance(self.active_tool, FCSelect): # Dispatch event to active_tool # msg = self.active_tool.click(self.snap(event.xdata, event.ydata)) - msg = self.active_tool.click_release((self.pos[0], self.pos[1])) + self.active_tool.click_release((self.pos[0], self.pos[1])) # self.app.inform.emit(msg) self.replot() except Exception as e: @@ -3713,15 +3697,14 @@ class FlatCAMGeoEditor(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])]) self.app.delete_selection_shape() for obj in self.storage.get_objects(): - if (sel_type is True and poly_selection.contains(obj.geo)) or \ - (sel_type is False and poly_selection.intersects(obj.geo)): + if (sel_type is True and poly_selection.contains(obj.geo)) or (sel_type is False and + poly_selection.intersects(obj.geo)): if self.key == self.app.defaults["global_mselect_key"]: if obj in self.selected: self.selected.remove(obj) @@ -3734,42 +3717,42 @@ class FlatCAMGeoEditor(QtCore.QObject): self.replot() 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) + 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() + self.tool_shape.redraw() def on_delete_btn(self): self.delete_selected() @@ -3844,14 +3827,14 @@ class FlatCAMGeoEditor(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) @@ -3912,7 +3895,7 @@ class FlatCAMGeoEditor(QtCore.QObject): @staticmethod def make_storage(): - ## Shape storage. + # Shape storage. storage = FlatCAMRTreeStorage() storage.get_points = DrawToolShape.get_pts @@ -3952,9 +3935,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)) @@ -3966,7 +3949,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'] @@ -4048,23 +4031,24 @@ class FlatCAMGeoEditor(QtCore.QObject): :return: None """ - shapes = self.get_selected() + geo_shapes = self.get_selected() try: - results = shapes[0].geo + results = geo_shapes[0].geo except Exception as e: log.debug("FlatCAMGeoEditor.intersection() --> %s" % str(e)) - self.app.inform.emit(_("[WARNING_NOTCL] A selection of at least 2 geo items is required to do Intersection.")) + self.app.inform.emit( + _("[WARNING_NOTCL] A selection of at least 2 geo items is required to do Intersection.")) self.select_tool('select') return - for shape in shapes[1:]: - results = results.intersection(shape.geo) + for shape_el in geo_shapes[1:]: + results = results.intersection(shape_el.geo) # Delete originals. for_deletion = [s for s in self.get_selected()] - for shape in for_deletion: - self.delete_shape(shape) + for shape_el in for_deletion: + self.delete_shape(shape_el) # Selected geometry is now gone! self.selected = [] @@ -4080,30 +4064,31 @@ class FlatCAMGeoEditor(QtCore.QObject): :return: None """ - shapes = self.get_selected() + geo_shapes = self.get_selected() results = [] intact = [] try: - intersector = shapes[0].geo + intersector = geo_shapes[0].geo except Exception as e: log.debug("FlatCAMGeoEditor.intersection() --> %s" % str(e)) - self.app.inform.emit(_("[WARNING_NOTCL] A selection of at least 2 geo items is required to do Intersection.")) + self.app.inform.emit( + _("[WARNING_NOTCL] A selection of at least 2 geo items is required to do Intersection.")) self.select_tool('select') return - for shape in shapes[1:]: - if intersector.intersects(shape.geo): - results.append(intersector.intersection(shape.geo)) + for shape_el in geo_shapes[1:]: + if intersector.intersects(shape_el.geo): + results.append(intersector.intersection(shape_el.geo)) else: - intact.append(shape) + intact.append(shape_el) if len(results) != 0: # Delete originals. for_deletion = [s for s in self.get_selected()] - for shape in for_deletion: - if shape not in intact: - self.delete_shape(shape) + for shape_el in for_deletion: + if shape_el not in intact: + self.delete_shape(shape_el) for geo in results: self.add_shape(DrawToolShape(geo)) @@ -4158,8 +4143,8 @@ class FlatCAMGeoEditor(QtCore.QObject): try: for linestring in target.geo: self.add_shape(DrawToolShape(linestring.difference(toolgeo))) - except: - self.app.log.warning("Current LinearString does not intersect the target") + except Exception as e: + self.app.log.warning("Current LinearString does not intersect the target. %s" % str(e)) else: self.app.log.warning("Not implemented. Object type: %s" % str(type(target.geo))) return @@ -4172,7 +4157,8 @@ class FlatCAMGeoEditor(QtCore.QObject): if buf_distance < 0: self.app.inform.emit( - _( "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to generate an 'inside' shape")) + _("[ERROR_NOTCL] Negative buffer value is not accepted. " + "Use Buffer interior to generate an 'inside' shape")) # deselect everything self.selected = [] @@ -4210,7 +4196,7 @@ class FlatCAMGeoEditor(QtCore.QObject): if buf_distance < 0: self.app.inform.emit( _("[ERROR_NOTCL] Negative buffer value is not accepted. " - "Use Buffer interior to generate an 'inside' shape") + "Use Buffer interior to generate an 'inside' shape") ) # deselect everything self.selected = [] @@ -4286,7 +4272,7 @@ class FlatCAMGeoEditor(QtCore.QObject): if buf_distance < 0: self.app.inform.emit(_("[ERROR_NOTCL] Negative buffer value is not accepted. " - "Use Buffer interior to generate an 'inside' shape")) + "Use Buffer interior to generate an 'inside' shape")) # deselect everything self.selected = [] self.replot() @@ -4412,13 +4398,13 @@ class FlatCAMGeoEditor(QtCore.QObject): if reset: self.flat_geo = [] - ## If iterable, expand recursively. + # If iterable, expand recursively. try: - for geo in geometry: - if geo is not None: - recurse(geometry=geo, reset=False) + for geo_el in geometry: + if geo_el is not None: + recurse(geometry=geo_el, reset=False) - ## Not iterable, do the actual indexing and add. + # Not iterable, do the actual indexing and add. except TypeError: self.flat_geo.append(geometry) @@ -4436,17 +4422,17 @@ class FlatCAMGeoEditor(QtCore.QObject): if method == "seed": cp = Geometry.clear_polygon2(poly_buf, - tooldia, self.app.defaults["geometry_circle_steps"], - overlap=overlap, contour=contour, connect=connect) + tooldia, self.app.defaults["geometry_circle_steps"], + overlap=overlap, contour=contour, connect=connect) elif method == "lines": cp = Geometry.clear_polygon3(poly_buf, - tooldia, self.app.defaults["geometry_circle_steps"], - overlap=overlap, contour=contour, connect=connect) + tooldia, self.app.defaults["geometry_circle_steps"], + overlap=overlap, contour=contour, connect=connect) else: cp = Geometry.clear_polygon(poly_buf, - tooldia, self.app.defaults["geometry_circle_steps"], - overlap=overlap, contour=contour, connect=connect) + tooldia, self.app.defaults["geometry_circle_steps"], + overlap=overlap, contour=contour, connect=connect) if cp is not None: local_results += list(cp.get_objects()) @@ -4454,7 +4440,7 @@ class FlatCAMGeoEditor(QtCore.QObject): log.debug("Could not Paint the polygons. %s" % str(e)) self.app.inform.emit( _("[ERROR] Could not do Paint. Try a different combination of parameters. " - "Or a different method of Paint\n%s") % str(e)) + "Or a different method of Paint\n%s") % str(e)) return # add the result to the results list From 17a93b8c7d350587085c8e7914d0731f50fe0eb8 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 22 May 2019 18:37:33 +0300 Subject: [PATCH 42/42] - fixed some selection issues in the new tool Eraser in Geometry Editor - updated the translation files --- README.md | 4 +- camlib.py | 5 +- flatcamEditors/FlatCAMGeoEditor.py | 22 +- locale/de/LC_MESSAGES/strings.mo | Bin 301667 -> 302108 bytes locale/de/LC_MESSAGES/strings.po | 2161 ++++++++++++++------------- locale/en/LC_MESSAGES/strings.mo | Bin 281307 -> 281713 bytes locale/en/LC_MESSAGES/strings.po | 2235 ++++++++++++++-------------- locale/ro/LC_MESSAGES/strings.mo | Bin 300006 -> 300482 bytes locale/ro/LC_MESSAGES/strings.po | 2197 +++++++++++++-------------- locale_template/strings.pot | 2159 ++++++++++++++------------- 10 files changed, 4423 insertions(+), 4360 deletions(-) diff --git a/README.md b/README.md index c6448c8a..01990737 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,9 @@ CAD program, and create G-Code for Isolation routing. 22.05.2019 - Geo Editor - added a new editor tool, Eraser -- PEP8 cleanup of the Geo Editor +- some PEP8 cleanup of the Geo Editor +- fixed some selection issues in the new tool Eraser in Geometry Editor +- updated the translation files 21.05.2019 diff --git a/camlib.py b/camlib.py index 052db845..a2b1051a 100644 --- a/camlib.py +++ b/camlib.py @@ -7738,7 +7738,10 @@ class FlatCAMRTree(object): def remove_obj(self, objid, obj): # Use all ptids to delete from index for i, pt in enumerate(self.get_points(obj)): - self.rti.delete(self.obj2points[objid][i], (pt[0], pt[1], pt[0], pt[1])) + try: + self.rti.delete(self.obj2points[objid][i], (pt[0], pt[1], pt[0], pt[1])) + except IndexError: + pass def nearest(self, pt): """ diff --git a/flatcamEditors/FlatCAMGeoEditor.py b/flatcamEditors/FlatCAMGeoEditor.py index ef7ed6b7..cc5f76e3 100644 --- a/flatcamEditors/FlatCAMGeoEditor.py +++ b/flatcamEditors/FlatCAMGeoEditor.py @@ -2810,16 +2810,19 @@ class FCEraser(FCShapeTool): def click(self, point): if len(self.draw_app.get_selected()) == 0: - for obj_shape in self.storage.get_objects(): try: __, closest_shape = self.storage.nearest(point) self.draw_app.selected.append(closest_shape) except StopIteration: + if len(self.draw_app.selected) > 0: + self.draw_app.app.inform.emit(_("Click to pick-up the erase shape...")) return "" if len(self.draw_app.get_selected()) == 0: return "Nothing to ersase." + else: + self.draw_app.app.inform.emit(_("Click to pick-up the erase shape...")) if self.origin is None: self.set_origin(point) @@ -3594,13 +3597,15 @@ class FlatCAMGeoEditor(QtCore.QObject): self.app.ui.rel_position_label.setText("Dx: %.4f   Dy: " "%.4f    " % (dx, dy)) - # ## 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) + if event.button == 1 and event.is_dragging == 1 and isinstance(self.active_tool, FCEraser): + pass + else: + # ## 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 ### dx = pos[0] - self.pos[0] @@ -3687,6 +3692,7 @@ class FlatCAMGeoEditor(QtCore.QObject): self.active_tool.click_release((self.pos[0], self.pos[1])) # self.app.inform.emit(msg) self.replot() + except Exception as e: log.warning("Error: %s" % str(e)) return diff --git a/locale/de/LC_MESSAGES/strings.mo b/locale/de/LC_MESSAGES/strings.mo index 7db1e63b6b6c916e634f9c81acc072f3619e59df..38fec665f89cbff3d14c529eeacd151dbdc39bb4 100644 GIT binary patch delta 39000 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 i}`(# delta 38654 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�G78qtG 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 n{xLU&zX|YEP8(jnv}aShortcut Key List" msgstr " Liste der Tastenkombinationen " @@ -1275,7 +1275,7 @@ msgstr "Schlitz insgesamt" #: flatcamTools/ToolNonCopperClear.py:627 #: flatcamTools/ToolNonCopperClear.py:644 flatcamTools/ToolPaint.py:538 #: flatcamTools/ToolPaint.py:608 flatcamTools/ToolPaint.py:743 -#: flatcamTools/ToolPaint.py:840 flatcamTools/ToolPaint.py:995 +#: flatcamTools/ToolPaint.py:844 flatcamTools/ToolPaint.py:999 #: flatcamTools/ToolPanelize.py:385 flatcamTools/ToolPanelize.py:397 #: flatcamTools/ToolPanelize.py:410 flatcamTools/ToolPanelize.py:423 #: flatcamTools/ToolPanelize.py:435 flatcamTools/ToolPanelize.py:446 @@ -1344,8 +1344,8 @@ msgstr "" msgid "Generating CNC Code" msgstr "CNC-Code generieren" -#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5165 camlib.py:5624 -#: camlib.py:5887 +#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5166 camlib.py:5625 +#: camlib.py:5888 msgid "" "[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " "format (x, y) \n" @@ -1367,8 +1367,8 @@ msgstr "Rau" msgid "Finish" msgstr "Oberfläche" -#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:724 -#: flatcamGUI/FlatCAMGUI.py:1615 flatcamGUI/FlatCAMGUI.py:1946 +#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:727 +#: flatcamGUI/FlatCAMGUI.py:1618 flatcamGUI/FlatCAMGUI.py:1953 #: flatcamGUI/ObjectUI.py:999 msgid "Copy" msgstr "Kopieren" @@ -1625,7 +1625,7 @@ msgstr "[success] Gerber drehen fertig." msgid "[ERROR_NOTCL] This is GCODE mark: %s" msgstr "[ERROR_NOTCL] Dies ist die GCODE-Marke: %s" -#: camlib.py:3989 +#: camlib.py:3990 #, python-format msgid "" "[WARNING] No tool diameter info's. See shell.\n" @@ -1642,7 +1642,7 @@ msgstr "" "Der Benutzer muss das resultierende Excellon-Objekt bearbeiten und die " "Durchmesser ändern, um die tatsächlichen Durchmesser widerzuspiegeln." -#: camlib.py:4454 +#: camlib.py:4455 #, python-brace-format msgid "" "[ERROR] Excellon Parser error.\n" @@ -1651,7 +1651,7 @@ msgstr "" "[ERROR] Fehler beim Excellon-Parser.\n" "Parsing fehlgeschlagen. Zeile {l_nr}: {line}\n" -#: camlib.py:4531 +#: camlib.py:4532 msgid "" "[WARNING] Excellon.create_geometry() -> a drill location was skipped due of " "not having a tool associated.\n" @@ -1661,12 +1661,12 @@ msgstr "" "da kein Werkzeug zugeordnet wurde.\n" "Ãœberprüfen Sie den resultierenden GCode." -#: camlib.py:5074 +#: camlib.py:5075 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "[ERROR] Es gibt keinen solchen Parameter: %s" -#: camlib.py:5144 +#: camlib.py:5145 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1681,7 +1681,7 @@ msgstr "" "einen negativen Wert. \n" "Ãœberprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:5151 camlib.py:5647 camlib.py:5910 +#: camlib.py:5152 camlib.py:5648 camlib.py:5911 #, python-format msgid "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" @@ -1689,15 +1689,15 @@ msgstr "" "[WARNING] Der Parameter Cut Z ist Null. Es wird kein Schnitt ausgeführt, da " "die %s Datei übersprungen wird" -#: camlib.py:5380 camlib.py:5477 camlib.py:5535 +#: camlib.py:5381 camlib.py:5478 camlib.py:5536 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "[ERROR_NOTCL] Die geladene Excellon-Datei hat keine Bohrer ..." -#: camlib.py:5482 +#: camlib.py:5483 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "[ERROR_NOTCL] Falscher Optimierungstyp ausgewählt." -#: camlib.py:5635 camlib.py:5898 +#: camlib.py:5636 camlib.py:5899 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." @@ -1705,7 +1705,7 @@ msgstr "" "[ERROR_NOTCL] Der Parameter Cut_Z ist None oder Null. Höchstwahrscheinlich " "eine schlechte Kombination anderer Parameter." -#: camlib.py:5640 camlib.py:5903 +#: camlib.py:5641 camlib.py:5904 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1720,11 +1720,11 @@ msgstr "" "einen negativen Wert. \n" "Ãœberprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:5652 camlib.py:5915 +#: camlib.py:5653 camlib.py:5916 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:5656 camlib.py:5919 +#: camlib.py:5657 camlib.py:5920 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1738,7 +1738,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:5663 camlib.py:5926 +#: camlib.py:5664 camlib.py:5927 #, python-format msgid "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" @@ -1746,12 +1746,12 @@ msgstr "" "[WARNING] Der Parameter Z-Weg ist Null. Dies ist gefährlich, da die %s Datei " "übersprungen wird" -#: camlib.py:5793 +#: camlib.py:5794 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "[ERROR] Eine Geometrie erwartet,%s erhalten" -#: camlib.py:5799 +#: camlib.py:5800 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." @@ -1759,7 +1759,7 @@ msgstr "" "[ERROR_NOTCL] Der Versuch, einen CNC-Auftrag aus einem Geometrieobjekt ohne " "solid_geometry zu generieren." -#: camlib.py:5838 +#: camlib.py:5839 msgid "" "[ERROR_NOTCL] The Tool Offset value is too negative to use for the " "current_geometry.\n" @@ -1769,7 +1769,7 @@ msgstr "" "current_geometry zu verwenden.\n" "Erhöhen Sie den Wert (im Modul) und versuchen Sie es erneut." -#: camlib.py:6052 +#: camlib.py:6053 msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." msgstr "" "[ERROR_NOTCL] In der SolderPaste-Geometrie sind keine Werkzeugdaten " @@ -1785,8 +1785,8 @@ msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:447 #: flatcamEditors/FlatCAMExcEditor.py:472 #: flatcamEditors/FlatCAMGrbEditor.py:451 -#: flatcamEditors/FlatCAMGrbEditor.py:1759 -#: flatcamEditors/FlatCAMGrbEditor.py:1787 +#: flatcamEditors/FlatCAMGrbEditor.py:1762 +#: flatcamEditors/FlatCAMGrbEditor.py:1790 msgid "Click on target location ..." msgstr "Klicken Sie auf den Zielort ..." @@ -1848,7 +1848,7 @@ msgstr "" "[WARNING_NOTCL] Abgebrochen. Keine Bohrer zur Größenänderung ausgewählt ..." #: flatcamEditors/FlatCAMExcEditor.py:449 -#: flatcamEditors/FlatCAMGrbEditor.py:1761 +#: flatcamEditors/FlatCAMGrbEditor.py:1764 msgid "Click on reference location ..." msgstr "Klicken Sie auf die Referenzposition ..." @@ -1865,7 +1865,7 @@ msgid "Excellon Editor" msgstr "Excellon Editor" #: flatcamEditors/FlatCAMExcEditor.py:765 -#: flatcamEditors/FlatCAMGrbEditor.py:2108 +#: flatcamEditors/FlatCAMGrbEditor.py:2250 msgid "Name:" msgstr "Name:" @@ -1950,7 +1950,7 @@ msgstr "Größe ändern" msgid "Resize drill(s)" msgstr "Bohrer verkleinern" -#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1612 +#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1615 msgid "Add Drill Array" msgstr "Bohrer-Array hinzufügen" @@ -1968,12 +1968,12 @@ msgstr "" "Es kann lineares X (Y) oder rund sein" #: flatcamEditors/FlatCAMExcEditor.py:900 -#: flatcamEditors/FlatCAMGrbEditor.py:2341 +#: flatcamEditors/FlatCAMGrbEditor.py:2483 msgid "Linear" msgstr "Linear" #: flatcamEditors/FlatCAMExcEditor.py:901 -#: flatcamEditors/FlatCAMGrbEditor.py:2342 +#: flatcamEditors/FlatCAMGrbEditor.py:2484 msgid "Circular" msgstr "Kreisförmig" @@ -1987,13 +1987,13 @@ msgstr "Geben Sie an, wie viele Drills im Array enthalten sein sollen." #: flatcamEditors/FlatCAMExcEditor.py:927 #: flatcamEditors/FlatCAMExcEditor.py:972 -#: flatcamEditors/FlatCAMGrbEditor.py:2368 -#: flatcamEditors/FlatCAMGrbEditor.py:2413 +#: flatcamEditors/FlatCAMGrbEditor.py:2510 +#: flatcamEditors/FlatCAMGrbEditor.py:2555 msgid "Direction:" msgstr "Richtung:" #: flatcamEditors/FlatCAMExcEditor.py:929 -#: flatcamEditors/FlatCAMGrbEditor.py:2370 +#: flatcamEditors/FlatCAMGrbEditor.py:2512 msgid "" "Direction on which the linear array is oriented:\n" "- 'X' - horizontal axis \n" @@ -2006,26 +2006,26 @@ msgstr "" "- 'Winkel' - ein benutzerdefinierter Winkel für die Neigung des Arrays" #: flatcamEditors/FlatCAMExcEditor.py:942 -#: flatcamEditors/FlatCAMGrbEditor.py:2383 +#: flatcamEditors/FlatCAMGrbEditor.py:2525 msgid "Pitch:" msgstr "Abstand:" #: flatcamEditors/FlatCAMExcEditor.py:944 -#: flatcamEditors/FlatCAMGrbEditor.py:2385 +#: flatcamEditors/FlatCAMGrbEditor.py:2527 msgid "Pitch = Distance between elements of the array." msgstr "Abstand = Abstand zwischen Elementen des Arrays." #: flatcamEditors/FlatCAMExcEditor.py:951 #: flatcamEditors/FlatCAMExcEditor.py:987 -#: flatcamEditors/FlatCAMGeoEditor.py:666 -#: flatcamEditors/FlatCAMGrbEditor.py:2392 -#: flatcamEditors/FlatCAMGrbEditor.py:2428 -#: flatcamEditors/FlatCAMGrbEditor.py:4414 flatcamTools/ToolTransform.py:68 +#: flatcamEditors/FlatCAMGeoEditor.py:665 +#: flatcamEditors/FlatCAMGrbEditor.py:2534 +#: flatcamEditors/FlatCAMGrbEditor.py:2570 +#: flatcamEditors/FlatCAMGrbEditor.py:4558 flatcamTools/ToolTransform.py:68 msgid "Angle:" msgstr "Winkel:" #: flatcamEditors/FlatCAMExcEditor.py:953 -#: flatcamEditors/FlatCAMGrbEditor.py:2394 +#: flatcamEditors/FlatCAMGrbEditor.py:2536 msgid "" "Angle at which the linear array is placed.\n" "The precision is of max 2 decimals.\n" @@ -2038,7 +2038,7 @@ msgstr "" "Maximalwert ist: 360.00 Grad." #: flatcamEditors/FlatCAMExcEditor.py:974 -#: flatcamEditors/FlatCAMGrbEditor.py:2415 +#: flatcamEditors/FlatCAMGrbEditor.py:2557 msgid "" "Direction for circular array.Can be CW = clockwise or CCW = counter " "clockwise." @@ -2047,7 +2047,7 @@ msgstr "" "Gegenuhrzeigersinn sein." #: flatcamEditors/FlatCAMExcEditor.py:989 -#: flatcamEditors/FlatCAMGrbEditor.py:2430 +#: flatcamEditors/FlatCAMGrbEditor.py:2572 msgid "Angle at which each element in circular array is placed." msgstr "" "Winkel, um den jedes Element in einer kreisförmigen Anordnung platziert wird." @@ -2062,7 +2062,7 @@ msgstr "" "Speichern und korrigieren Sie Excellon, wenn Sie dieses Tool hinzufügen " "möchten." -#: flatcamEditors/FlatCAMExcEditor.py:1461 flatcamGUI/FlatCAMGUI.py:2995 +#: flatcamEditors/FlatCAMExcEditor.py:1461 flatcamGUI/FlatCAMGUI.py:3002 #, python-brace-format msgid "[success] Added new tool with dia: {dia} {units}" msgstr "[success] Neues Werkzeug mit Durchmesser hinzugefügt: {dia} {units}" @@ -2101,17 +2101,17 @@ msgid "[success] Done. Drill(s) deleted." msgstr "[success] Erledigt. Bohrer gelöscht." #: flatcamEditors/FlatCAMExcEditor.py:2675 -#: flatcamEditors/FlatCAMGrbEditor.py:4174 +#: flatcamEditors/FlatCAMGrbEditor.py:4318 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:2258 +#: flatcamEditors/FlatCAMGrbEditor.py:2400 msgid "Buffer distance:" msgstr "Pufferabstand:" #: flatcamEditors/FlatCAMGeoEditor.py:81 -#: flatcamEditors/FlatCAMGrbEditor.py:2259 +#: flatcamEditors/FlatCAMGrbEditor.py:2401 msgid "Buffer corner:" msgstr "Pufferecke:" @@ -2131,17 +2131,17 @@ msgstr "" "der Ecke treffen, direkt verbindet" #: flatcamEditors/FlatCAMGeoEditor.py:89 -#: flatcamEditors/FlatCAMGrbEditor.py:2267 +#: flatcamEditors/FlatCAMGrbEditor.py:2409 msgid "Round" msgstr "Runden" #: flatcamEditors/FlatCAMGeoEditor.py:90 -#: flatcamEditors/FlatCAMGrbEditor.py:2268 +#: flatcamEditors/FlatCAMGrbEditor.py:2410 msgid "Square" msgstr "Quadrat" #: flatcamEditors/FlatCAMGeoEditor.py:91 -#: flatcamEditors/FlatCAMGrbEditor.py:2269 +#: flatcamEditors/FlatCAMGrbEditor.py:2411 msgid "Beveled" msgstr "Abgeschrägt" @@ -2158,17 +2158,17 @@ msgid "Full Buffer" msgstr "Voller Puffer" #: flatcamEditors/FlatCAMGeoEditor.py:127 -#: flatcamEditors/FlatCAMGeoEditor.py:2696 +#: flatcamEditors/FlatCAMGeoEditor.py:2682 msgid "Buffer Tool" msgstr "Pufferwerkzeug" #: flatcamEditors/FlatCAMGeoEditor.py:138 #: flatcamEditors/FlatCAMGeoEditor.py:155 #: flatcamEditors/FlatCAMGeoEditor.py:172 -#: flatcamEditors/FlatCAMGeoEditor.py:2714 -#: flatcamEditors/FlatCAMGeoEditor.py:2740 -#: flatcamEditors/FlatCAMGeoEditor.py:2766 -#: flatcamEditors/FlatCAMGrbEditor.py:4226 +#: flatcamEditors/FlatCAMGeoEditor.py:2700 +#: flatcamEditors/FlatCAMGeoEditor.py:2726 +#: flatcamEditors/FlatCAMGeoEditor.py:2752 +#: flatcamEditors/FlatCAMGrbEditor.py:4370 msgid "" "[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and " "retry." @@ -2180,17 +2180,17 @@ msgstr "" msgid "Text Tool" msgstr "Textwerkzeug" -#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:805 +#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:808 msgid "Tool" msgstr "Werkzeug" -#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4051 -#: flatcamGUI/FlatCAMGUI.py:5448 flatcamGUI/FlatCAMGUI.py:5724 -#: flatcamGUI/FlatCAMGUI.py:5864 flatcamGUI/ObjectUI.py:260 +#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4058 +#: flatcamGUI/FlatCAMGUI.py:5455 flatcamGUI/FlatCAMGUI.py:5731 +#: flatcamGUI/FlatCAMGUI.py:5871 flatcamGUI/ObjectUI.py:260 msgid "Tool dia:" msgstr "Werkzeugdurchmesser:" -#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5866 +#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5873 msgid "" "Diameter of the tool to\n" "be used in the operation." @@ -2198,8 +2198,8 @@ msgstr "" "Durchmesser des Werkzeugs bis\n" "in der Operation verwendet werden." -#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5630 -#: flatcamGUI/FlatCAMGUI.py:5875 flatcamTools/ToolNonCopperClear.py:165 +#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5637 +#: flatcamGUI/FlatCAMGUI.py:5882 flatcamTools/ToolNonCopperClear.py:165 #: flatcamTools/ToolPaint.py:160 msgid "Overlap Rate:" msgstr "Ãœberlappungsrate:" @@ -2233,14 +2233,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:5646 -#: flatcamGUI/FlatCAMGUI.py:5732 flatcamGUI/FlatCAMGUI.py:5885 +#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5653 +#: flatcamGUI/FlatCAMGUI.py:5739 flatcamGUI/FlatCAMGUI.py:5892 #: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:181 #: flatcamTools/ToolPaint.py:177 msgid "Margin:" msgstr "Marge:" -#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5887 +#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5894 #: flatcamTools/ToolPaint.py:179 msgid "" "Distance by which to avoid\n" @@ -2251,13 +2251,13 @@ msgstr "" "die Kanten des Polygons bis\n" "gemalt werden." -#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5655 -#: flatcamGUI/FlatCAMGUI.py:5896 flatcamTools/ToolNonCopperClear.py:190 +#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5662 +#: flatcamGUI/FlatCAMGUI.py:5903 flatcamTools/ToolNonCopperClear.py:190 #: flatcamTools/ToolPaint.py:188 msgid "Method:" msgstr "Methode:" -#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5898 +#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5905 msgid "" "Algorithm to paint the polygon:
Standard: Fixed step inwards." "
Seed-based: Outwards from seed." @@ -2265,14 +2265,14 @@ msgstr "" "Algorithmus zum Malen des Polygons:
Standard: Feststehender " "Schritt nach innen.
Samenbasiert: Aus dem Samen heraus." -#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5671 -#: flatcamGUI/FlatCAMGUI.py:5911 flatcamTools/ToolNonCopperClear.py:206 +#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5678 +#: flatcamGUI/FlatCAMGUI.py:5918 flatcamTools/ToolNonCopperClear.py:206 #: flatcamTools/ToolPaint.py:204 msgid "Connect:" msgstr "Verbinden:" -#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5673 -#: flatcamGUI/FlatCAMGUI.py:5913 flatcamTools/ToolNonCopperClear.py:208 +#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5680 +#: flatcamGUI/FlatCAMGUI.py:5920 flatcamTools/ToolNonCopperClear.py:208 #: flatcamTools/ToolPaint.py:206 msgid "" "Draw lines between resulting\n" @@ -2281,14 +2281,14 @@ msgstr "" "Zeichnen Sie Linien zwischen den Ergebnissen\n" "Segmente, um Werkzeuglifte zu minimieren." -#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5680 -#: flatcamGUI/FlatCAMGUI.py:5921 flatcamTools/ToolNonCopperClear.py:215 +#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5687 +#: flatcamGUI/FlatCAMGUI.py:5928 flatcamTools/ToolNonCopperClear.py:215 #: flatcamTools/ToolPaint.py:213 msgid "Contour:" msgstr "Kontur:" -#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5682 -#: flatcamGUI/FlatCAMGUI.py:5923 flatcamTools/ToolNonCopperClear.py:217 +#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5689 +#: flatcamGUI/FlatCAMGUI.py:5930 flatcamTools/ToolNonCopperClear.py:217 #: flatcamTools/ToolPaint.py:215 msgid "" "Cut around the perimeter of the polygon\n" @@ -2297,21 +2297,21 @@ msgstr "" "Schneiden Sie um den Umfang des Polygons herum\n" "Ecken und Kanten schneiden." -#: flatcamEditors/FlatCAMGeoEditor.py:510 +#: flatcamEditors/FlatCAMGeoEditor.py:509 msgid "Paint" msgstr "Malen" -#: flatcamEditors/FlatCAMGeoEditor.py:528 flatcamGUI/FlatCAMGUI.py:648 -#: flatcamGUI/FlatCAMGUI.py:1865 flatcamGUI/ObjectUI.py:1314 +#: flatcamEditors/FlatCAMGeoEditor.py:527 flatcamGUI/FlatCAMGUI.py:648 +#: flatcamGUI/FlatCAMGUI.py:1868 flatcamGUI/ObjectUI.py:1314 #: flatcamTools/ToolPaint.py:341 msgid "Paint Tool" msgstr "Werkzeug Malen" -#: flatcamEditors/FlatCAMGeoEditor.py:564 +#: flatcamEditors/FlatCAMGeoEditor.py:563 msgid "[WARNING_NOTCL] Paint cancelled. No shape selected." msgstr "[WARNING_NOTCL] Farbe abgebrochen. Keine Form ausgewählt" -#: flatcamEditors/FlatCAMGeoEditor.py:575 flatcamTools/ToolCutOut.py:355 +#: flatcamEditors/FlatCAMGeoEditor.py:574 flatcamTools/ToolCutOut.py:355 #: flatcamTools/ToolCutOut.py:512 flatcamTools/ToolCutOut.py:651 #: flatcamTools/ToolCutOut.py:756 flatcamTools/ToolDblSided.py:363 msgid "" @@ -2321,14 +2321,14 @@ msgstr "" "[WARNING_NOTCL] Werkzeugdurchmesserwert fehlt oder falsches Format. Fügen " "Sie es hinzu und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGeoEditor.py:586 +#: flatcamEditors/FlatCAMGeoEditor.py:585 msgid "" "[WARNING_NOTCL] Overlap value is missing or wrong format. Add it and retry." msgstr "" "[WARNING_NOTCL] Überlappungswert fehlt oder falsches Format. Fügen Sie es " "hinzu und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGeoEditor.py:598 +#: flatcamEditors/FlatCAMGeoEditor.py:597 msgid "" "[WARNING_NOTCL] Margin distance value is missing or wrong format. Add it and " "retry." @@ -2336,63 +2336,63 @@ msgstr "" "[WARNING_NOTCL] Randabstandswert fehlt oder falsches Format. Fügen Sie es " "hinzu und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGeoEditor.py:607 -#: flatcamEditors/FlatCAMGeoEditor.py:2721 -#: flatcamEditors/FlatCAMGeoEditor.py:2747 -#: flatcamEditors/FlatCAMGeoEditor.py:2773 +#: flatcamEditors/FlatCAMGeoEditor.py:606 +#: flatcamEditors/FlatCAMGeoEditor.py:2707 +#: flatcamEditors/FlatCAMGeoEditor.py:2733 +#: flatcamEditors/FlatCAMGeoEditor.py:2759 #: flatcamTools/ToolNonCopperClear.py:813 flatcamTools/ToolProperties.py:104 msgid "Tools" msgstr "Werkzeuge" -#: flatcamEditors/FlatCAMGeoEditor.py:618 -#: flatcamEditors/FlatCAMGeoEditor.py:991 -#: flatcamEditors/FlatCAMGrbEditor.py:4365 -#: flatcamEditors/FlatCAMGrbEditor.py:4750 flatcamGUI/FlatCAMGUI.py:659 -#: flatcamGUI/FlatCAMGUI.py:1878 flatcamTools/ToolTransform.py:398 +#: 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 msgid "Transform Tool" msgstr "Werkzeug Umwandeln" -#: flatcamEditors/FlatCAMGeoEditor.py:619 -#: flatcamEditors/FlatCAMGeoEditor.py:680 -#: flatcamEditors/FlatCAMGrbEditor.py:4366 -#: flatcamEditors/FlatCAMGrbEditor.py:4428 flatcamTools/ToolTransform.py:24 +#: flatcamEditors/FlatCAMGeoEditor.py:618 +#: flatcamEditors/FlatCAMGeoEditor.py:679 +#: flatcamEditors/FlatCAMGrbEditor.py:4510 +#: flatcamEditors/FlatCAMGrbEditor.py:4572 flatcamTools/ToolTransform.py:24 #: flatcamTools/ToolTransform.py:82 msgid "Rotate" msgstr "Drehen" -#: flatcamEditors/FlatCAMGeoEditor.py:620 -#: flatcamEditors/FlatCAMGrbEditor.py:4367 flatcamTools/ToolTransform.py:25 +#: flatcamEditors/FlatCAMGeoEditor.py:619 +#: flatcamEditors/FlatCAMGrbEditor.py:4511 flatcamTools/ToolTransform.py:25 msgid "Skew/Shear" msgstr "Neigung/Schere" -#: flatcamEditors/FlatCAMGeoEditor.py:621 -#: flatcamEditors/FlatCAMGrbEditor.py:2313 -#: flatcamEditors/FlatCAMGrbEditor.py:4368 flatcamGUI/FlatCAMGUI.py:722 -#: flatcamGUI/FlatCAMGUI.py:1944 flatcamGUI/ObjectUI.py:100 +#: flatcamEditors/FlatCAMGeoEditor.py:620 +#: flatcamEditors/FlatCAMGrbEditor.py:2455 +#: flatcamEditors/FlatCAMGrbEditor.py:4512 flatcamGUI/FlatCAMGUI.py:723 +#: flatcamGUI/FlatCAMGUI.py:1949 flatcamGUI/ObjectUI.py:100 #: flatcamTools/ToolTransform.py:26 msgid "Scale" msgstr "Skalieren" -#: flatcamEditors/FlatCAMGeoEditor.py:622 -#: flatcamEditors/FlatCAMGrbEditor.py:4369 flatcamTools/ToolTransform.py:27 +#: flatcamEditors/FlatCAMGeoEditor.py:621 +#: flatcamEditors/FlatCAMGrbEditor.py:4513 flatcamTools/ToolTransform.py:27 msgid "Mirror (Flip)" msgstr "Spiegeln (Flip)" -#: flatcamEditors/FlatCAMGeoEditor.py:623 -#: flatcamEditors/FlatCAMGrbEditor.py:4370 flatcamGUI/ObjectUI.py:127 +#: flatcamEditors/FlatCAMGeoEditor.py:622 +#: flatcamEditors/FlatCAMGrbEditor.py:4514 flatcamGUI/ObjectUI.py:127 #: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 #: flatcamTools/ToolTransform.py:28 msgid "Offset" msgstr "Versatz" -#: flatcamEditors/FlatCAMGeoEditor.py:634 -#: flatcamEditors/FlatCAMGrbEditor.py:4382 +#: flatcamEditors/FlatCAMGeoEditor.py:633 +#: flatcamEditors/FlatCAMGrbEditor.py:4526 #, python-format msgid "Editor %s" msgstr "Editor %s" -#: flatcamEditors/FlatCAMGeoEditor.py:668 -#: flatcamEditors/FlatCAMGrbEditor.py:4416 flatcamTools/ToolTransform.py:70 +#: flatcamEditors/FlatCAMGeoEditor.py:667 +#: flatcamEditors/FlatCAMGrbEditor.py:4560 flatcamTools/ToolTransform.py:70 msgid "" "Angle for Rotation action, in degrees.\n" "Float number between -360 and 359.\n" @@ -2404,8 +2404,8 @@ msgstr "" "Positive Zahlen für CW-Bewegung.\n" "Negative Zahlen für CCW-Bewegung." -#: flatcamEditors/FlatCAMGeoEditor.py:682 -#: flatcamEditors/FlatCAMGrbEditor.py:4430 +#: flatcamEditors/FlatCAMGeoEditor.py:681 +#: flatcamEditors/FlatCAMGrbEditor.py:4574 msgid "" "Rotate the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2415,15 +2415,15 @@ msgstr "" "Der Bezugspunkt ist die Mitte von\n" "der Begrenzungsrahmen für alle ausgewählten Formen." -#: flatcamEditors/FlatCAMGeoEditor.py:705 -#: flatcamEditors/FlatCAMGrbEditor.py:4453 flatcamTools/ToolTransform.py:107 +#: flatcamEditors/FlatCAMGeoEditor.py:704 +#: flatcamEditors/FlatCAMGrbEditor.py:4597 flatcamTools/ToolTransform.py:107 msgid "Angle X:" msgstr "Winkel X:" -#: flatcamEditors/FlatCAMGeoEditor.py:707 -#: flatcamEditors/FlatCAMGeoEditor.py:725 -#: flatcamEditors/FlatCAMGrbEditor.py:4455 -#: flatcamEditors/FlatCAMGrbEditor.py:4473 flatcamTools/ToolTransform.py:109 +#: flatcamEditors/FlatCAMGeoEditor.py:706 +#: flatcamEditors/FlatCAMGeoEditor.py:724 +#: flatcamEditors/FlatCAMGrbEditor.py:4599 +#: flatcamEditors/FlatCAMGrbEditor.py:4617 flatcamTools/ToolTransform.py:109 #: flatcamTools/ToolTransform.py:127 msgid "" "Angle for Skew action, in degrees.\n" @@ -2432,15 +2432,15 @@ msgstr "" "Winkel für die Schräglage in Grad.\n" "Float-Nummer zwischen -360 und 359." -#: flatcamEditors/FlatCAMGeoEditor.py:716 -#: flatcamEditors/FlatCAMGrbEditor.py:4464 flatcamTools/ToolTransform.py:118 +#: flatcamEditors/FlatCAMGeoEditor.py:715 +#: flatcamEditors/FlatCAMGrbEditor.py:4608 flatcamTools/ToolTransform.py:118 msgid "Skew X" msgstr "Neigung X" -#: flatcamEditors/FlatCAMGeoEditor.py:718 -#: flatcamEditors/FlatCAMGeoEditor.py:736 -#: flatcamEditors/FlatCAMGrbEditor.py:4466 -#: flatcamEditors/FlatCAMGrbEditor.py:4484 +#: flatcamEditors/FlatCAMGeoEditor.py:717 +#: flatcamEditors/FlatCAMGeoEditor.py:735 +#: flatcamEditors/FlatCAMGrbEditor.py:4610 +#: flatcamEditors/FlatCAMGrbEditor.py:4628 msgid "" "Skew/shear the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2450,35 +2450,35 @@ msgstr "" "Der Bezugspunkt ist die Mitte von\n" "der Begrenzungsrahmen für alle ausgewählten Formen." -#: flatcamEditors/FlatCAMGeoEditor.py:723 -#: flatcamEditors/FlatCAMGrbEditor.py:4471 flatcamTools/ToolTransform.py:125 +#: flatcamEditors/FlatCAMGeoEditor.py:722 +#: flatcamEditors/FlatCAMGrbEditor.py:4615 flatcamTools/ToolTransform.py:125 msgid "Angle Y:" msgstr "Winkel Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:734 -#: flatcamEditors/FlatCAMGrbEditor.py:4482 flatcamTools/ToolTransform.py:136 +#: flatcamEditors/FlatCAMGeoEditor.py:733 +#: flatcamEditors/FlatCAMGrbEditor.py:4626 flatcamTools/ToolTransform.py:136 msgid "Skew Y" msgstr "Neigung Y" -#: flatcamEditors/FlatCAMGeoEditor.py:762 -#: flatcamEditors/FlatCAMGrbEditor.py:4510 flatcamTools/ToolTransform.py:164 +#: flatcamEditors/FlatCAMGeoEditor.py:761 +#: flatcamEditors/FlatCAMGrbEditor.py:4654 flatcamTools/ToolTransform.py:164 msgid "Factor X:" msgstr "Faktor X:" -#: flatcamEditors/FlatCAMGeoEditor.py:764 -#: flatcamEditors/FlatCAMGrbEditor.py:4512 flatcamTools/ToolTransform.py:166 +#: flatcamEditors/FlatCAMGeoEditor.py:763 +#: flatcamEditors/FlatCAMGrbEditor.py:4656 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:772 -#: flatcamEditors/FlatCAMGrbEditor.py:4520 flatcamTools/ToolTransform.py:174 +#: flatcamEditors/FlatCAMGeoEditor.py:771 +#: flatcamEditors/FlatCAMGrbEditor.py:4664 flatcamTools/ToolTransform.py:174 msgid "Scale X" msgstr "Maßstab X" -#: flatcamEditors/FlatCAMGeoEditor.py:774 -#: flatcamEditors/FlatCAMGeoEditor.py:791 -#: flatcamEditors/FlatCAMGrbEditor.py:4522 -#: flatcamEditors/FlatCAMGrbEditor.py:4539 +#: flatcamEditors/FlatCAMGeoEditor.py:773 +#: flatcamEditors/FlatCAMGeoEditor.py:790 +#: flatcamEditors/FlatCAMGrbEditor.py:4666 +#: flatcamEditors/FlatCAMGrbEditor.py:4683 msgid "" "Scale the selected shape(s).\n" "The point of reference depends on \n" @@ -2488,29 +2488,29 @@ msgstr "" "Der Bezugspunkt hängt von ab\n" "das Kontrollkästchen Skalenreferenz." -#: flatcamEditors/FlatCAMGeoEditor.py:779 -#: flatcamEditors/FlatCAMGrbEditor.py:4527 flatcamTools/ToolTransform.py:181 +#: flatcamEditors/FlatCAMGeoEditor.py:778 +#: flatcamEditors/FlatCAMGrbEditor.py:4671 flatcamTools/ToolTransform.py:181 msgid "Factor Y:" msgstr "Faktor Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:781 -#: flatcamEditors/FlatCAMGrbEditor.py:4529 flatcamTools/ToolTransform.py:183 +#: flatcamEditors/FlatCAMGeoEditor.py:780 +#: flatcamEditors/FlatCAMGrbEditor.py:4673 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:789 -#: flatcamEditors/FlatCAMGrbEditor.py:4537 flatcamTools/ToolTransform.py:191 +#: flatcamEditors/FlatCAMGeoEditor.py:788 +#: flatcamEditors/FlatCAMGrbEditor.py:4681 flatcamTools/ToolTransform.py:191 msgid "Scale Y" msgstr "Maßstab Y" -#: flatcamEditors/FlatCAMGeoEditor.py:798 -#: flatcamEditors/FlatCAMGrbEditor.py:4546 flatcamGUI/FlatCAMGUI.py:6270 +#: flatcamEditors/FlatCAMGeoEditor.py:797 +#: flatcamEditors/FlatCAMGrbEditor.py:4690 flatcamGUI/FlatCAMGUI.py:6277 #: flatcamTools/ToolTransform.py:200 msgid "Link" msgstr "Verknüpfung" -#: flatcamEditors/FlatCAMGeoEditor.py:800 -#: flatcamEditors/FlatCAMGrbEditor.py:4548 +#: flatcamEditors/FlatCAMGeoEditor.py:799 +#: flatcamEditors/FlatCAMGrbEditor.py:4692 msgid "" "Scale the selected shape(s)\n" "using the Scale Factor X for both axis." @@ -2518,14 +2518,14 @@ msgstr "" "Skalieren der ausgewählten Form (en)\n" "Verwenden des Skalierungsfaktors X für beide Achsen." -#: flatcamEditors/FlatCAMGeoEditor.py:806 -#: flatcamEditors/FlatCAMGrbEditor.py:4554 flatcamGUI/FlatCAMGUI.py:6278 +#: flatcamEditors/FlatCAMGeoEditor.py:805 +#: flatcamEditors/FlatCAMGrbEditor.py:4698 flatcamGUI/FlatCAMGUI.py:6285 #: flatcamTools/ToolTransform.py:208 msgid "Scale Reference" msgstr "Skalenreferenz" -#: flatcamEditors/FlatCAMGeoEditor.py:808 -#: flatcamEditors/FlatCAMGrbEditor.py:4556 +#: flatcamEditors/FlatCAMGeoEditor.py:807 +#: flatcamEditors/FlatCAMGrbEditor.py:4700 msgid "" "Scale the selected shape(s)\n" "using the origin reference when checked,\n" @@ -2537,25 +2537,25 @@ msgstr "" "und die Mitte der größten Begrenzungsbox\n" "der ausgewählten Formen, wenn nicht markiert." -#: flatcamEditors/FlatCAMGeoEditor.py:836 -#: flatcamEditors/FlatCAMGrbEditor.py:4585 flatcamTools/ToolTransform.py:238 +#: flatcamEditors/FlatCAMGeoEditor.py:835 +#: flatcamEditors/FlatCAMGrbEditor.py:4729 flatcamTools/ToolTransform.py:238 msgid "Value X:" msgstr "Wert X:" -#: flatcamEditors/FlatCAMGeoEditor.py:838 -#: flatcamEditors/FlatCAMGrbEditor.py:4587 flatcamTools/ToolTransform.py:240 +#: flatcamEditors/FlatCAMGeoEditor.py:837 +#: flatcamEditors/FlatCAMGrbEditor.py:4731 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:846 -#: flatcamEditors/FlatCAMGrbEditor.py:4595 flatcamTools/ToolTransform.py:248 +#: flatcamEditors/FlatCAMGeoEditor.py:845 +#: flatcamEditors/FlatCAMGrbEditor.py:4739 flatcamTools/ToolTransform.py:248 msgid "Offset X" msgstr "Versatz X" -#: flatcamEditors/FlatCAMGeoEditor.py:848 -#: flatcamEditors/FlatCAMGeoEditor.py:866 -#: flatcamEditors/FlatCAMGrbEditor.py:4597 -#: flatcamEditors/FlatCAMGrbEditor.py:4615 +#: flatcamEditors/FlatCAMGeoEditor.py:847 +#: flatcamEditors/FlatCAMGeoEditor.py:865 +#: flatcamEditors/FlatCAMGrbEditor.py:4741 +#: flatcamEditors/FlatCAMGrbEditor.py:4759 msgid "" "Offset the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2565,30 +2565,30 @@ msgstr "" "Der Bezugspunkt ist die Mitte von\n" "der Begrenzungsrahmen für alle ausgewählten Formen.\n" -#: flatcamEditors/FlatCAMGeoEditor.py:854 -#: flatcamEditors/FlatCAMGrbEditor.py:4603 flatcamTools/ToolTransform.py:255 +#: flatcamEditors/FlatCAMGeoEditor.py:853 +#: flatcamEditors/FlatCAMGrbEditor.py:4747 flatcamTools/ToolTransform.py:255 msgid "Value Y:" msgstr "Wert Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:856 -#: flatcamEditors/FlatCAMGrbEditor.py:4605 flatcamTools/ToolTransform.py:257 +#: flatcamEditors/FlatCAMGeoEditor.py:855 +#: flatcamEditors/FlatCAMGrbEditor.py:4749 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:864 -#: flatcamEditors/FlatCAMGrbEditor.py:4613 flatcamTools/ToolTransform.py:265 +#: flatcamEditors/FlatCAMGeoEditor.py:863 +#: flatcamEditors/FlatCAMGrbEditor.py:4757 flatcamTools/ToolTransform.py:265 msgid "Offset Y" msgstr "Versatz Y" -#: flatcamEditors/FlatCAMGeoEditor.py:895 -#: flatcamEditors/FlatCAMGrbEditor.py:4644 flatcamTools/ToolTransform.py:295 +#: flatcamEditors/FlatCAMGeoEditor.py:894 +#: flatcamEditors/FlatCAMGrbEditor.py:4788 flatcamTools/ToolTransform.py:295 msgid "Flip on X" msgstr "Flip auf X" -#: flatcamEditors/FlatCAMGeoEditor.py:897 -#: flatcamEditors/FlatCAMGeoEditor.py:905 -#: flatcamEditors/FlatCAMGrbEditor.py:4646 -#: flatcamEditors/FlatCAMGrbEditor.py:4654 +#: flatcamEditors/FlatCAMGeoEditor.py:896 +#: flatcamEditors/FlatCAMGeoEditor.py:904 +#: flatcamEditors/FlatCAMGrbEditor.py:4790 +#: flatcamEditors/FlatCAMGrbEditor.py:4798 msgid "" "Flip the selected shape(s) over the X axis.\n" "Does not create a new shape." @@ -2596,18 +2596,18 @@ msgstr "" "Kippen Sie die ausgewählte Form (en) über die X-Achse.\n" "Erzeugt keine neue Form." -#: flatcamEditors/FlatCAMGeoEditor.py:903 -#: flatcamEditors/FlatCAMGrbEditor.py:4652 flatcamTools/ToolTransform.py:303 +#: flatcamEditors/FlatCAMGeoEditor.py:902 +#: flatcamEditors/FlatCAMGrbEditor.py:4796 flatcamTools/ToolTransform.py:303 msgid "Flip on Y" msgstr "Flip auf Y" -#: flatcamEditors/FlatCAMGeoEditor.py:912 -#: flatcamEditors/FlatCAMGrbEditor.py:4661 flatcamTools/ToolTransform.py:312 +#: flatcamEditors/FlatCAMGeoEditor.py:911 +#: flatcamEditors/FlatCAMGrbEditor.py:4805 flatcamTools/ToolTransform.py:312 msgid "Ref Pt" msgstr "Ref. Pt" -#: flatcamEditors/FlatCAMGeoEditor.py:914 -#: flatcamEditors/FlatCAMGrbEditor.py:4663 +#: flatcamEditors/FlatCAMGeoEditor.py:913 +#: flatcamEditors/FlatCAMGrbEditor.py:4807 msgid "" "Flip the selected shape(s)\n" "around the point in Point Entry Field.\n" @@ -2630,13 +2630,13 @@ msgstr "" "Oder geben Sie die Koordinaten im Format (x, y) in ein\n" "Punkt-Eingabefeld und klicken Sie auf X (Y) drehen" -#: flatcamEditors/FlatCAMGeoEditor.py:926 -#: flatcamEditors/FlatCAMGrbEditor.py:4675 flatcamTools/ToolTransform.py:325 +#: flatcamEditors/FlatCAMGeoEditor.py:925 +#: flatcamEditors/FlatCAMGrbEditor.py:4819 flatcamTools/ToolTransform.py:325 msgid "Point:" msgstr "Punkt:" -#: flatcamEditors/FlatCAMGeoEditor.py:928 -#: flatcamEditors/FlatCAMGrbEditor.py:4677 +#: flatcamEditors/FlatCAMGeoEditor.py:927 +#: flatcamEditors/FlatCAMGrbEditor.py:4821 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" @@ -2647,8 +2647,8 @@ 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 verwendet wird." -#: flatcamEditors/FlatCAMGeoEditor.py:940 -#: flatcamEditors/FlatCAMGrbEditor.py:4689 flatcamTools/ToolTransform.py:339 +#: flatcamEditors/FlatCAMGeoEditor.py:939 +#: flatcamEditors/FlatCAMGrbEditor.py:4833 flatcamTools/ToolTransform.py:339 msgid "" "The point coordinates can be captured by\n" "left click on canvas together with pressing\n" @@ -2659,396 +2659,396 @@ msgstr "" "Shift Taste. Klicken Sie dann auf die Schaltfläche Hinzufügen, um sie " "einzufügen." -#: flatcamEditors/FlatCAMGeoEditor.py:1055 -#: flatcamEditors/FlatCAMGrbEditor.py:4814 +#: flatcamEditors/FlatCAMGeoEditor.py:1054 +#: flatcamEditors/FlatCAMGrbEditor.py:4958 msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected." msgstr "[WARNING_NOTCL] Transformation abgebrochen Keine Form ausgewählt" -#: flatcamEditors/FlatCAMGeoEditor.py:1076 -#: flatcamEditors/FlatCAMGrbEditor.py:4834 flatcamTools/ToolTransform.py:468 +#: flatcamEditors/FlatCAMGeoEditor.py:1075 +#: flatcamEditors/FlatCAMGrbEditor.py:4978 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:1113 -#: flatcamEditors/FlatCAMGrbEditor.py:4877 flatcamTools/ToolTransform.py:502 +#: flatcamEditors/FlatCAMGeoEditor.py:1112 +#: flatcamEditors/FlatCAMGrbEditor.py:5021 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:1134 -#: flatcamEditors/FlatCAMGrbEditor.py:4904 flatcamTools/ToolTransform.py:520 +#: flatcamEditors/FlatCAMGeoEditor.py:1133 +#: flatcamEditors/FlatCAMGrbEditor.py:5048 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:1155 -#: flatcamEditors/FlatCAMGrbEditor.py:4931 flatcamTools/ToolTransform.py:538 +#: flatcamEditors/FlatCAMGeoEditor.py:1154 +#: flatcamEditors/FlatCAMGrbEditor.py:5075 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:1192 -#: flatcamEditors/FlatCAMGrbEditor.py:4972 flatcamTools/ToolTransform.py:572 +#: flatcamEditors/FlatCAMGeoEditor.py:1191 +#: flatcamEditors/FlatCAMGrbEditor.py:5116 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:1224 -#: flatcamEditors/FlatCAMGrbEditor.py:5010 flatcamTools/ToolTransform.py:601 +#: flatcamEditors/FlatCAMGeoEditor.py:1223 +#: flatcamEditors/FlatCAMGrbEditor.py:5154 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:1245 -#: flatcamEditors/FlatCAMGrbEditor.py:5036 flatcamTools/ToolTransform.py:619 +#: flatcamEditors/FlatCAMGeoEditor.py:1244 +#: flatcamEditors/FlatCAMGrbEditor.py:5180 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:1263 -#: flatcamEditors/FlatCAMGrbEditor.py:5059 +#: flatcamEditors/FlatCAMGeoEditor.py:1262 +#: flatcamEditors/FlatCAMGrbEditor.py:5203 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:1266 -#: flatcamEditors/FlatCAMGrbEditor.py:5062 flatcamTools/ToolTransform.py:640 +#: flatcamEditors/FlatCAMGeoEditor.py:1265 +#: flatcamEditors/FlatCAMGrbEditor.py:5206 flatcamTools/ToolTransform.py:640 msgid "Appying Rotate" msgstr "Anwenden Drehen" -#: flatcamEditors/FlatCAMGeoEditor.py:1294 -#: flatcamEditors/FlatCAMGrbEditor.py:5093 +#: flatcamEditors/FlatCAMGeoEditor.py:1293 +#: flatcamEditors/FlatCAMGrbEditor.py:5237 msgid "[success] Done. Rotate completed." msgstr "[success] Erledigt. Drehen abgeschlossen." -#: flatcamEditors/FlatCAMGeoEditor.py:1310 -#: flatcamEditors/FlatCAMGrbEditor.py:5112 +#: flatcamEditors/FlatCAMGeoEditor.py:1309 +#: flatcamEditors/FlatCAMGrbEditor.py:5256 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:1313 -#: flatcamEditors/FlatCAMGrbEditor.py:5115 flatcamTools/ToolTransform.py:691 +#: flatcamEditors/FlatCAMGeoEditor.py:1312 +#: flatcamEditors/FlatCAMGrbEditor.py:5259 flatcamTools/ToolTransform.py:691 msgid "Applying Flip" msgstr "Flip anwenden" -#: flatcamEditors/FlatCAMGeoEditor.py:1343 -#: flatcamEditors/FlatCAMGrbEditor.py:5152 flatcamTools/ToolTransform.py:733 +#: flatcamEditors/FlatCAMGeoEditor.py:1342 +#: flatcamEditors/FlatCAMGrbEditor.py:5296 flatcamTools/ToolTransform.py:733 msgid "[success] Flip on the Y axis done ..." msgstr "[success] Flip auf der Y-Achse erledigt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1346 -#: flatcamEditors/FlatCAMGrbEditor.py:5160 flatcamTools/ToolTransform.py:742 +#: flatcamEditors/FlatCAMGeoEditor.py:1345 +#: flatcamEditors/FlatCAMGrbEditor.py:5304 flatcamTools/ToolTransform.py:742 msgid "[success] Flip on the X axis done ..." msgstr "[success] Flip auf der X-Achse erledigt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1365 -#: flatcamEditors/FlatCAMGrbEditor.py:5180 +#: flatcamEditors/FlatCAMGeoEditor.py:1364 +#: flatcamEditors/FlatCAMGrbEditor.py:5324 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:1368 -#: flatcamEditors/FlatCAMGrbEditor.py:5183 flatcamTools/ToolTransform.py:760 +#: flatcamEditors/FlatCAMGeoEditor.py:1367 +#: flatcamEditors/FlatCAMGrbEditor.py:5327 flatcamTools/ToolTransform.py:760 msgid "Applying Skew" msgstr "Anwenden von Skew" -#: flatcamEditors/FlatCAMGeoEditor.py:1393 -#: flatcamEditors/FlatCAMGrbEditor.py:5216 flatcamTools/ToolTransform.py:791 +#: flatcamEditors/FlatCAMGeoEditor.py:1392 +#: flatcamEditors/FlatCAMGrbEditor.py:5360 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:1397 -#: flatcamEditors/FlatCAMGrbEditor.py:5220 flatcamTools/ToolTransform.py:795 +#: flatcamEditors/FlatCAMGeoEditor.py:1396 +#: flatcamEditors/FlatCAMGrbEditor.py:5364 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:1408 -#: flatcamEditors/FlatCAMGrbEditor.py:5239 +#: flatcamEditors/FlatCAMGeoEditor.py:1407 +#: flatcamEditors/FlatCAMGrbEditor.py:5383 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:1411 -#: flatcamEditors/FlatCAMGrbEditor.py:5242 flatcamTools/ToolTransform.py:809 +#: flatcamEditors/FlatCAMGeoEditor.py:1410 +#: flatcamEditors/FlatCAMGrbEditor.py:5386 flatcamTools/ToolTransform.py:809 msgid "Applying Scale" msgstr "Maßstab anwenden" -#: flatcamEditors/FlatCAMGeoEditor.py:1444 -#: flatcamEditors/FlatCAMGrbEditor.py:5278 flatcamTools/ToolTransform.py:848 +#: flatcamEditors/FlatCAMGeoEditor.py:1443 +#: flatcamEditors/FlatCAMGrbEditor.py:5422 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:1447 -#: flatcamEditors/FlatCAMGrbEditor.py:5281 flatcamTools/ToolTransform.py:851 +#: flatcamEditors/FlatCAMGeoEditor.py:1446 +#: flatcamEditors/FlatCAMGrbEditor.py:5425 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:1456 -#: flatcamEditors/FlatCAMGrbEditor.py:5294 +#: flatcamEditors/FlatCAMGeoEditor.py:1455 +#: flatcamEditors/FlatCAMGrbEditor.py:5438 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:1459 -#: flatcamEditors/FlatCAMGrbEditor.py:5297 flatcamTools/ToolTransform.py:861 +#: flatcamEditors/FlatCAMGeoEditor.py:1458 +#: flatcamEditors/FlatCAMGrbEditor.py:5441 flatcamTools/ToolTransform.py:861 msgid "Applying Offset" msgstr "Offsetdruck anwenden" -#: flatcamEditors/FlatCAMGeoEditor.py:1483 -#: flatcamEditors/FlatCAMGrbEditor.py:5318 flatcamTools/ToolTransform.py:880 +#: flatcamEditors/FlatCAMGeoEditor.py:1469 +#: flatcamEditors/FlatCAMGrbEditor.py:5462 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:1487 -#: flatcamEditors/FlatCAMGrbEditor.py:5322 flatcamTools/ToolTransform.py:884 +#: flatcamEditors/FlatCAMGeoEditor.py:1473 +#: flatcamEditors/FlatCAMGrbEditor.py:5466 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:1491 -#: flatcamEditors/FlatCAMGrbEditor.py:5326 +#: flatcamEditors/FlatCAMGeoEditor.py:1477 +#: flatcamEditors/FlatCAMGrbEditor.py:5470 msgid "Rotate ..." msgstr "Drehen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1492 -#: flatcamEditors/FlatCAMGeoEditor.py:1549 -#: flatcamEditors/FlatCAMGeoEditor.py:1566 -#: flatcamEditors/FlatCAMGrbEditor.py:5327 -#: flatcamEditors/FlatCAMGrbEditor.py:5384 -#: flatcamEditors/FlatCAMGrbEditor.py:5401 +#: flatcamEditors/FlatCAMGeoEditor.py:1478 +#: flatcamEditors/FlatCAMGeoEditor.py:1535 +#: flatcamEditors/FlatCAMGeoEditor.py:1552 +#: flatcamEditors/FlatCAMGrbEditor.py:5471 +#: flatcamEditors/FlatCAMGrbEditor.py:5528 +#: flatcamEditors/FlatCAMGrbEditor.py:5545 msgid "Enter an Angle Value (degrees):" msgstr "Geben Sie einen Winkelwert (Grad) ein:" -#: flatcamEditors/FlatCAMGeoEditor.py:1501 -#: flatcamEditors/FlatCAMGrbEditor.py:5336 +#: flatcamEditors/FlatCAMGeoEditor.py:1487 +#: flatcamEditors/FlatCAMGrbEditor.py:5480 msgid "[success] Geometry shape rotate done..." msgstr "[success] Geometrieform drehen fertig ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1506 -#: flatcamEditors/FlatCAMGrbEditor.py:5341 +#: flatcamEditors/FlatCAMGeoEditor.py:1492 +#: flatcamEditors/FlatCAMGrbEditor.py:5485 msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..." msgstr "[WARNING_NOTCL] Geometrieform drehen abgebrochen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1512 -#: flatcamEditors/FlatCAMGrbEditor.py:5347 +#: flatcamEditors/FlatCAMGeoEditor.py:1498 +#: flatcamEditors/FlatCAMGrbEditor.py:5491 msgid "Offset on X axis ..." msgstr "Versatz auf der X-Achse ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1513 -#: flatcamEditors/FlatCAMGeoEditor.py:1532 -#: flatcamEditors/FlatCAMGrbEditor.py:5348 -#: flatcamEditors/FlatCAMGrbEditor.py:5367 +#: flatcamEditors/FlatCAMGeoEditor.py:1499 +#: flatcamEditors/FlatCAMGeoEditor.py:1518 +#: flatcamEditors/FlatCAMGrbEditor.py:5492 +#: flatcamEditors/FlatCAMGrbEditor.py:5511 #, python-format msgid "Enter a distance Value (%s):" msgstr "Geben Sie einen Abstand ein (%s):" -#: flatcamEditors/FlatCAMGeoEditor.py:1522 -#: flatcamEditors/FlatCAMGrbEditor.py:5357 +#: flatcamEditors/FlatCAMGeoEditor.py:1508 +#: flatcamEditors/FlatCAMGrbEditor.py:5501 msgid "[success] Geometry shape offset on X axis done..." msgstr "[success] Geometrieformversatz auf der X-Achse erfolgt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1526 -#: flatcamEditors/FlatCAMGrbEditor.py:5361 +#: flatcamEditors/FlatCAMGeoEditor.py:1512 +#: flatcamEditors/FlatCAMGrbEditor.py:5505 msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..." msgstr "[WARNING_NOTCL] Geometrieformversatz X abgebrochen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1531 -#: flatcamEditors/FlatCAMGrbEditor.py:5366 +#: flatcamEditors/FlatCAMGeoEditor.py:1517 +#: flatcamEditors/FlatCAMGrbEditor.py:5510 msgid "Offset on Y axis ..." msgstr "Versatz auf der Y-Achse ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1541 -#: flatcamEditors/FlatCAMGrbEditor.py:5376 +#: flatcamEditors/FlatCAMGeoEditor.py:1527 +#: flatcamEditors/FlatCAMGrbEditor.py:5520 msgid "[success] Geometry shape offset on Y axis done..." msgstr "[success] Geometrieformversatz auf Y-Achse erfolgt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1545 -#: flatcamEditors/FlatCAMGrbEditor.py:5380 +#: flatcamEditors/FlatCAMGeoEditor.py:1531 +#: flatcamEditors/FlatCAMGrbEditor.py:5524 msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..." msgstr "[WARNING_NOTCL] Geometrieformversatz Y abgebrochen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1548 -#: flatcamEditors/FlatCAMGrbEditor.py:5383 +#: flatcamEditors/FlatCAMGeoEditor.py:1534 +#: flatcamEditors/FlatCAMGrbEditor.py:5527 msgid "Skew on X axis ..." msgstr "Neigung auf der X-Achse ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1558 -#: flatcamEditors/FlatCAMGrbEditor.py:5393 +#: flatcamEditors/FlatCAMGeoEditor.py:1544 +#: flatcamEditors/FlatCAMGrbEditor.py:5537 msgid "[success] Geometry shape skew on X axis done..." msgstr "[success] Geometrieformversatz auf X-Achse ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1562 -#: flatcamEditors/FlatCAMGrbEditor.py:5397 +#: flatcamEditors/FlatCAMGeoEditor.py:1548 +#: flatcamEditors/FlatCAMGrbEditor.py:5541 msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..." msgstr "[WARNING_NOTCL] Geometrieformversatz X abgebrochen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1565 -#: flatcamEditors/FlatCAMGrbEditor.py:5400 +#: flatcamEditors/FlatCAMGeoEditor.py:1551 +#: flatcamEditors/FlatCAMGrbEditor.py:5544 msgid "Skew on Y axis ..." msgstr "Neigung auf der Y-Achse ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1575 -#: flatcamEditors/FlatCAMGrbEditor.py:5410 +#: flatcamEditors/FlatCAMGeoEditor.py:1561 +#: flatcamEditors/FlatCAMGrbEditor.py:5554 msgid "[success] Geometry shape skew on Y axis done..." msgstr "[success] Geometrieformversatz auf Y-Achse erfolgt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1579 -#: flatcamEditors/FlatCAMGrbEditor.py:5414 +#: flatcamEditors/FlatCAMGeoEditor.py:1565 +#: flatcamEditors/FlatCAMGrbEditor.py:5558 msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..." msgstr "[WARNING_NOTCL] Geometrieformversatz Y abgebrochen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1943 -#: flatcamEditors/FlatCAMGeoEditor.py:1994 -#: flatcamEditors/FlatCAMGrbEditor.py:1351 -#: flatcamEditors/FlatCAMGrbEditor.py:1420 +#: flatcamEditors/FlatCAMGeoEditor.py:1929 +#: flatcamEditors/FlatCAMGeoEditor.py:1980 +#: flatcamEditors/FlatCAMGrbEditor.py:1354 +#: flatcamEditors/FlatCAMGrbEditor.py:1423 msgid "Click on Center point ..." msgstr "Klicken Sie auf Mittelpunkt." -#: flatcamEditors/FlatCAMGeoEditor.py:1950 -#: flatcamEditors/FlatCAMGrbEditor.py:1359 +#: flatcamEditors/FlatCAMGeoEditor.py:1936 +#: flatcamEditors/FlatCAMGrbEditor.py:1362 msgid "Click on Perimeter point to complete ..." msgstr "Klicken Sie auf Umfangspunkt, um den Vorgang abzuschließen." -#: flatcamEditors/FlatCAMGeoEditor.py:1979 +#: flatcamEditors/FlatCAMGeoEditor.py:1965 msgid "[success] Done. Adding Circle completed." msgstr "[success] Erledigt. Hinzufügen des Kreises abgeschlossen." -#: flatcamEditors/FlatCAMGeoEditor.py:2014 -#: flatcamEditors/FlatCAMGrbEditor.py:1445 +#: flatcamEditors/FlatCAMGeoEditor.py:2000 +#: flatcamEditors/FlatCAMGrbEditor.py:1448 msgid "Click on Start point ..." msgstr "Klicken Sie auf Startpunkt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2016 -#: flatcamEditors/FlatCAMGrbEditor.py:1447 +#: flatcamEditors/FlatCAMGeoEditor.py:2002 +#: flatcamEditors/FlatCAMGrbEditor.py:1450 msgid "Click on Point3 ..." msgstr "Klicken Sie auf Punkt3 ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2018 -#: flatcamEditors/FlatCAMGrbEditor.py:1449 +#: flatcamEditors/FlatCAMGeoEditor.py:2004 +#: flatcamEditors/FlatCAMGrbEditor.py:1452 msgid "Click on Stop point ..." msgstr "Klicken Sie auf Haltepunkt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2023 -#: flatcamEditors/FlatCAMGrbEditor.py:1454 +#: flatcamEditors/FlatCAMGeoEditor.py:2009 +#: flatcamEditors/FlatCAMGrbEditor.py:1457 msgid "Click on Stop point to complete ..." msgstr "Klicken Sie auf Stopp, um den Vorgang abzuschließen." -#: flatcamEditors/FlatCAMGeoEditor.py:2025 -#: flatcamEditors/FlatCAMGrbEditor.py:1456 +#: flatcamEditors/FlatCAMGeoEditor.py:2011 +#: flatcamEditors/FlatCAMGrbEditor.py:1459 msgid "Click on Point2 to complete ..." msgstr "Klicken Sie auf Punkt2, um den Vorgang abzuschließen." -#: flatcamEditors/FlatCAMGeoEditor.py:2027 -#: flatcamEditors/FlatCAMGrbEditor.py:1458 +#: flatcamEditors/FlatCAMGeoEditor.py:2013 +#: flatcamEditors/FlatCAMGrbEditor.py:1461 msgid "Click on Center point to complete ..." msgstr "Klicken Sie auf Mittelpunkt, um den Vorgang abzuschließen." -#: flatcamEditors/FlatCAMGeoEditor.py:2039 -#: flatcamEditors/FlatCAMGrbEditor.py:1470 +#: flatcamEditors/FlatCAMGeoEditor.py:2025 +#: flatcamEditors/FlatCAMGrbEditor.py:1473 #, python-format msgid "Direction: %s" msgstr "Richtung: %s" -#: flatcamEditors/FlatCAMGeoEditor.py:2049 -#: flatcamEditors/FlatCAMGrbEditor.py:1480 +#: flatcamEditors/FlatCAMGeoEditor.py:2035 +#: flatcamEditors/FlatCAMGrbEditor.py:1483 msgid "Mode: Start -> Stop -> Center. Click on Start point ..." msgstr "Modus: Start -> Stopp -> Zentrieren. Klicken Sie auf Startpunkt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2052 -#: flatcamEditors/FlatCAMGrbEditor.py:1483 +#: flatcamEditors/FlatCAMGeoEditor.py:2038 +#: flatcamEditors/FlatCAMGrbEditor.py:1486 msgid "Mode: Point1 -> Point3 -> Point2. Click on Point1 ..." msgstr "Modus: Punkt 1 -> Punkt 3 -> Punkt 2. Klicken Sie auf Punkt1 ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2055 -#: flatcamEditors/FlatCAMGrbEditor.py:1486 +#: flatcamEditors/FlatCAMGeoEditor.py:2041 +#: flatcamEditors/FlatCAMGrbEditor.py:1489 msgid "Mode: Center -> Start -> Stop. Click on Center point ..." msgstr "Modus: Mitte -> Start -> Stopp. Klicken Sie auf Mittelpunkt." -#: flatcamEditors/FlatCAMGeoEditor.py:2193 +#: flatcamEditors/FlatCAMGeoEditor.py:2179 msgid "[success] Done. Arc completed." msgstr "[success] Erledigt. Bogen abgeschlossen" -#: flatcamEditors/FlatCAMGeoEditor.py:2212 -#: flatcamEditors/FlatCAMGeoEditor.py:2265 -#: flatcamEditors/FlatCAMGeoEditor.py:2640 +#: flatcamEditors/FlatCAMGeoEditor.py:2198 +#: flatcamEditors/FlatCAMGeoEditor.py:2251 +#: flatcamEditors/FlatCAMGeoEditor.py:2626 msgid "Click on 1st corner ..." msgstr "Klicken Sie auf die 1. Ecke ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2218 +#: flatcamEditors/FlatCAMGeoEditor.py:2204 msgid "Click on opposite corner to complete ..." msgstr "" "Klicken Sie auf die gegenüberliegende Ecke, um den Vorgang abzuschließen." -#: flatcamEditors/FlatCAMGeoEditor.py:2246 +#: flatcamEditors/FlatCAMGeoEditor.py:2232 msgid "[success] Done. Rectangle completed." msgstr "[success] Erledigt. Rechteck fertiggestellt." -#: flatcamEditors/FlatCAMGeoEditor.py:2272 +#: flatcamEditors/FlatCAMGeoEditor.py:2258 msgid "Click on next Point or click right mouse button to complete ..." msgstr "" "Klicken Sie auf den nächsten Punkt oder klicken Sie mit der rechten " "Maustaste, um den Vorgang abzuschließen." -#: flatcamEditors/FlatCAMGeoEditor.py:2300 +#: flatcamEditors/FlatCAMGeoEditor.py:2286 msgid "[success] Done. Polygon completed." msgstr "[success] Erledigt. Polygon abgeschlossen" -#: flatcamEditors/FlatCAMGeoEditor.py:2310 -#: flatcamEditors/FlatCAMGeoEditor.py:2356 -#: flatcamEditors/FlatCAMGrbEditor.py:1055 -#: flatcamEditors/FlatCAMGrbEditor.py:1249 +#: flatcamEditors/FlatCAMGeoEditor.py:2296 +#: flatcamEditors/FlatCAMGeoEditor.py:2342 +#: flatcamEditors/FlatCAMGrbEditor.py:1058 +#: flatcamEditors/FlatCAMGrbEditor.py:1252 msgid "Backtracked one point ..." msgstr "Einen Punkt zurückverfolgt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2338 +#: flatcamEditors/FlatCAMGeoEditor.py:2324 msgid "[success] Done. Path completed." msgstr "[success] Erledigt. Pfad abgeschlossen" -#: flatcamEditors/FlatCAMGeoEditor.py:2461 +#: flatcamEditors/FlatCAMGeoEditor.py:2447 msgid "[WARNING_NOTCL] MOVE: No shape selected. Select a shape to move ..." msgstr "" "[WARNING_NOTCL] Bewegen: Keine Form ausgewählt. Wähle eine Form zum Bewegen " "aus ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2463 -#: flatcamEditors/FlatCAMGeoEditor.py:2475 +#: flatcamEditors/FlatCAMGeoEditor.py:2449 +#: flatcamEditors/FlatCAMGeoEditor.py:2461 msgid " MOVE: Click on reference point ..." msgstr " Bewegen: Referenzpunkt anklicken ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2466 +#: flatcamEditors/FlatCAMGeoEditor.py:2452 msgid " Click on destination point ..." msgstr " Klicken Sie auf den Zielpunkt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2500 +#: flatcamEditors/FlatCAMGeoEditor.py:2486 msgid "[success] Done. Geometry(s) Move completed." msgstr "[success] Erledigt. Geometrie(n) Bewegung abgeschlossen." -#: flatcamEditors/FlatCAMGeoEditor.py:2620 +#: flatcamEditors/FlatCAMGeoEditor.py:2606 msgid "[success] Done. Geometry(s) Copy completed." msgstr "[success] Erledigt. Geometrie(n) Kopieren abgeschlossen." -#: flatcamEditors/FlatCAMGeoEditor.py:2654 +#: flatcamEditors/FlatCAMGeoEditor.py:2640 #, python-format msgid "" "[ERROR]Font not supported. Only Regular, Bold, Italic and BoldItalic are " @@ -3057,62 +3057,84 @@ msgstr "" "[ERROR] Schrift wird nicht unterstützt. Es werden nur Regular, Bold, Italic " "und BoldItalic unterstützt. Error: %s" -#: flatcamEditors/FlatCAMGeoEditor.py:2664 +#: flatcamEditors/FlatCAMGeoEditor.py:2650 msgid "[success] Done. Adding Text completed." msgstr "[success] Erledigt. Hinzufügen von Text abgeschlossen" -#: flatcamEditors/FlatCAMGeoEditor.py:2692 +#: flatcamEditors/FlatCAMGeoEditor.py:2678 msgid "Create buffer geometry ..." msgstr "Puffergeometrie erstellen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2703 -#: flatcamEditors/FlatCAMGeoEditor.py:2729 -#: flatcamEditors/FlatCAMGeoEditor.py:2755 +#: flatcamEditors/FlatCAMGeoEditor.py:2689 +#: flatcamEditors/FlatCAMGeoEditor.py:2715 +#: flatcamEditors/FlatCAMGeoEditor.py:2741 msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected." msgstr "[WARNING_NOTCL] Puffer abgebrochen. Keine Form ausgewählt." -#: flatcamEditors/FlatCAMGeoEditor.py:2725 -#: flatcamEditors/FlatCAMGrbEditor.py:4276 +#: flatcamEditors/FlatCAMGeoEditor.py:2711 +#: flatcamEditors/FlatCAMGrbEditor.py:4420 msgid "[success] Done. Buffer Tool completed." msgstr "[success] Erledigt. Pufferwerkzeug abgeschlossen." -#: flatcamEditors/FlatCAMGeoEditor.py:2751 +#: flatcamEditors/FlatCAMGeoEditor.py:2737 msgid "[success] Done. Buffer Int Tool completed." msgstr "[success] Erledigt. Innenpufferwerkzeug abgeschlossen." -#: flatcamEditors/FlatCAMGeoEditor.py:2777 +#: flatcamEditors/FlatCAMGeoEditor.py:2763 msgid "[success] Done. Buffer Ext Tool completed." msgstr "[success] Erledigt. Außenpufferwerkzeug abgeschlossen." -#: flatcamEditors/FlatCAMGeoEditor.py:2810 +#: flatcamEditors/FlatCAMGeoEditor.py:2798 +#: flatcamEditors/FlatCAMGrbEditor.py:1969 +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 +msgid "Click to pick-up the erase shape..." +msgstr "Klicken Sie, um die Löschform aufzunehmen ..." + +#: flatcamEditors/FlatCAMGeoEditor.py:2829 +#: flatcamEditors/FlatCAMGrbEditor.py:2028 +msgid "Click to erase ..." +msgstr "Klicken zum Löschen ..." + +#: flatcamEditors/FlatCAMGeoEditor.py:2858 +#: flatcamEditors/FlatCAMGrbEditor.py:2059 +msgid "[success] Done. Eraser tool action completed." +msgstr "[success] Erledigt. Radiergummi-Aktion abgeschlossen." + +#: flatcamEditors/FlatCAMGeoEditor.py:2901 msgid "Create Paint geometry ..." msgstr "Malen geometrie erstellen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2824 -#: flatcamEditors/FlatCAMGrbEditor.py:2059 +#: flatcamEditors/FlatCAMGeoEditor.py:2915 +#: flatcamEditors/FlatCAMGrbEditor.py:2201 msgid "Shape transformations ..." msgstr "Formtransformationen ..." -#: flatcamEditors/FlatCAMGeoEditor.py:3327 +#: flatcamEditors/FlatCAMGeoEditor.py:3419 #, python-brace-format msgid "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" msgstr "" "[WARNING] Bearbeiten von MultiGeo-Geometrie, Werkzeug: {tool} mit " "Durchmesser: {dia}" -#: flatcamEditors/FlatCAMGeoEditor.py:3703 +#: flatcamEditors/FlatCAMGeoEditor.py:3796 msgid "[WARNING_NOTCL] Copy cancelled. No shape selected." msgstr "[WARNING_NOTCL] Kopieren abgebrochen Keine Form ausgewählt" -#: flatcamEditors/FlatCAMGeoEditor.py:3710 flatcamGUI/FlatCAMGUI.py:2725 -#: flatcamGUI/FlatCAMGUI.py:2771 flatcamGUI/FlatCAMGUI.py:2789 -#: flatcamGUI/FlatCAMGUI.py:2920 flatcamGUI/FlatCAMGUI.py:2932 -#: flatcamGUI/FlatCAMGUI.py:2966 +#: 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 msgid "Click on target point." msgstr "Klicken Sie auf den Zielpunkt." -#: flatcamEditors/FlatCAMGeoEditor.py:3953 -#: flatcamEditors/FlatCAMGeoEditor.py:3987 +#: flatcamEditors/FlatCAMGeoEditor.py:4047 +#: flatcamEditors/FlatCAMGeoEditor.py:4082 msgid "" "[WARNING_NOTCL] A selection of at least 2 geo items is required to do " "Intersection." @@ -3120,9 +3142,9 @@ msgstr "" "[WARNING_NOTCL] Eine Auswahl von mindestens 2 Geo-Elementen ist " "erforderlich, um die Kreuzung durchzuführen." -#: flatcamEditors/FlatCAMGeoEditor.py:4071 -#: flatcamEditors/FlatCAMGeoEditor.py:4108 -#: flatcamEditors/FlatCAMGeoEditor.py:4184 +#: flatcamEditors/FlatCAMGeoEditor.py:4166 +#: flatcamEditors/FlatCAMGeoEditor.py:4204 +#: flatcamEditors/FlatCAMGeoEditor.py:4280 msgid "" "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to " "generate an 'inside' shape" @@ -3130,54 +3152,54 @@ msgstr "" "[ERROR_NOTCL] Negativer Pufferwert wird nicht akzeptiert. Verwenden Sie den " "Pufferinnenraum, um eine Innenform zu erzeugen" -#: flatcamEditors/FlatCAMGeoEditor.py:4079 -#: flatcamEditors/FlatCAMGeoEditor.py:4117 -#: flatcamEditors/FlatCAMGeoEditor.py:4192 +#: flatcamEditors/FlatCAMGeoEditor.py:4175 +#: flatcamEditors/FlatCAMGeoEditor.py:4213 +#: flatcamEditors/FlatCAMGeoEditor.py:4288 msgid "[WARNING_NOTCL] Nothing selected for buffering." msgstr "[WARNING_NOTCL] Nichts ist für die Pufferung ausgewählt." -#: flatcamEditors/FlatCAMGeoEditor.py:4083 -#: flatcamEditors/FlatCAMGeoEditor.py:4121 -#: flatcamEditors/FlatCAMGeoEditor.py:4196 +#: flatcamEditors/FlatCAMGeoEditor.py:4179 +#: flatcamEditors/FlatCAMGeoEditor.py:4217 +#: flatcamEditors/FlatCAMGeoEditor.py:4292 msgid "[WARNING_NOTCL] Invalid distance for buffering." msgstr "[WARNING_NOTCL] Ungültige Entfernung für die Pufferung" -#: flatcamEditors/FlatCAMGeoEditor.py:4093 -#: flatcamEditors/FlatCAMGeoEditor.py:4205 +#: flatcamEditors/FlatCAMGeoEditor.py:4189 +#: flatcamEditors/FlatCAMGeoEditor.py:4301 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:4101 +#: flatcamEditors/FlatCAMGeoEditor.py:4197 msgid "[success] Full buffer geometry created." msgstr "[success] Volle Puffergeometrie erstellt." -#: flatcamEditors/FlatCAMGeoEditor.py:4131 +#: flatcamEditors/FlatCAMGeoEditor.py:4227 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:4146 +#: flatcamEditors/FlatCAMGeoEditor.py:4242 msgid "[success] Interior buffer geometry created." msgstr "[success] Innere Puffergeometrie erstellt." -#: flatcamEditors/FlatCAMGeoEditor.py:4217 +#: flatcamEditors/FlatCAMGeoEditor.py:4313 msgid "[success] Exterior buffer geometry created." msgstr "[success] Außenpuffergeometrie erstellt." -#: flatcamEditors/FlatCAMGeoEditor.py:4281 +#: flatcamEditors/FlatCAMGeoEditor.py:4377 msgid "[WARNING_NOTCL] Nothing selected for painting." msgstr "[WARNING_NOTCL] Nichts zum Malen ausgewählt." -#: flatcamEditors/FlatCAMGeoEditor.py:4287 +#: flatcamEditors/FlatCAMGeoEditor.py:4383 msgid "[WARNING] Invalid value for {}" msgstr "[WARNING] Ungültiger Wert für {}" -#: flatcamEditors/FlatCAMGeoEditor.py:4293 +#: flatcamEditors/FlatCAMGeoEditor.py:4389 msgid "" "[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 " "(100%)." @@ -3185,7 +3207,7 @@ msgstr "" "[ERROR_NOTCL] Kann nicht Malen machen. Der Überlappungswert muss unter 1,00 " "(100%) liegen." -#: flatcamEditors/FlatCAMGeoEditor.py:4352 +#: flatcamEditors/FlatCAMGeoEditor.py:4448 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -3196,7 +3218,7 @@ msgstr "" "Kombination von Parametern. Oder eine andere Methode von Malen\n" "%s" -#: flatcamEditors/FlatCAMGeoEditor.py:4363 +#: flatcamEditors/FlatCAMGeoEditor.py:4459 msgid "[success] Paint done." msgstr "[success] Malen Sie fertig." @@ -3219,7 +3241,7 @@ msgid "Click to place ..." msgstr "Zum Platzieren klicken ..." #: flatcamEditors/FlatCAMGrbEditor.py:357 -#: flatcamEditors/FlatCAMGrbEditor.py:660 +#: flatcamEditors/FlatCAMGrbEditor.py:662 msgid "" "Incompatible aperture type. Select an aperture with type 'C', 'R' or 'O'." msgstr "" @@ -3241,23 +3263,23 @@ msgstr "" msgid "Click on the Pad Circular Array Start position" msgstr "Klicken Sie auf die Startposition des Pad-Kreis-Arrays" -#: flatcamEditors/FlatCAMGrbEditor.py:685 +#: 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." -#: flatcamEditors/FlatCAMGrbEditor.py:707 +#: flatcamEditors/FlatCAMGrbEditor.py:709 msgid "[success] Done. Pad Array added." msgstr "[success] Erledigt. Pad Array hinzugefügt." -#: flatcamEditors/FlatCAMGrbEditor.py:728 +#: flatcamEditors/FlatCAMGrbEditor.py:730 msgid "Select shape(s) and then click ..." msgstr "Wählen Sie die Form (en) aus und klicken Sie dann auf ..." -#: flatcamEditors/FlatCAMGrbEditor.py:739 +#: flatcamEditors/FlatCAMGrbEditor.py:741 msgid "[ERROR_NOTCL] Failed. Nothing selected." msgstr "[ERROR_NOTCL] ist fehlgeschlagen. Nichts ausgewählt." -#: flatcamEditors/FlatCAMGrbEditor.py:754 +#: flatcamEditors/FlatCAMGrbEditor.py:756 msgid "" "[WARNING_NOTCL] Failed. Poligonize works only on geometries belonging to the " "same aperture." @@ -3265,145 +3287,145 @@ msgstr "" "[WARNING_NOTCL] Gescheitert. Poligonize funktioniert nur bei Geometrien, die " "zur selben Apertur gehören." -#: flatcamEditors/FlatCAMGrbEditor.py:807 +#: flatcamEditors/FlatCAMGrbEditor.py:809 msgid "[success] Done. Poligonize completed." msgstr "[Erfolg] Fertig. Poligonize abgeschlossen." -#: flatcamEditors/FlatCAMGrbEditor.py:857 -#: flatcamEditors/FlatCAMGrbEditor.py:1072 -#: flatcamEditors/FlatCAMGrbEditor.py:1096 +#: flatcamEditors/FlatCAMGrbEditor.py:860 +#: flatcamEditors/FlatCAMGrbEditor.py:1075 +#: flatcamEditors/FlatCAMGrbEditor.py:1099 msgid "Corner Mode 1: 45 degrees ..." msgstr "Eckmodus 1: 45 Grad ..." -#: flatcamEditors/FlatCAMGrbEditor.py:859 +#: flatcamEditors/FlatCAMGrbEditor.py:862 msgid "Click on 1st point ..." msgstr "Klicken Sie auf den 1. Punkt ..." -#: flatcamEditors/FlatCAMGrbEditor.py:869 -#: flatcamEditors/FlatCAMGrbEditor.py:1167 +#: flatcamEditors/FlatCAMGrbEditor.py:872 +#: flatcamEditors/FlatCAMGrbEditor.py:1170 msgid "Click on next Point or click Right mouse button to complete ..." msgstr "" "Klicken Sie auf den nächsten Punkt oder klicken Sie mit der rechten " "Maustaste, um den Vorgang abzuschließen." -#: flatcamEditors/FlatCAMGrbEditor.py:1060 -#: flatcamEditors/FlatCAMGrbEditor.py:1093 +#: flatcamEditors/FlatCAMGrbEditor.py:1063 +#: flatcamEditors/FlatCAMGrbEditor.py:1096 msgid "Corner Mode 2: Reverse 45 degrees ..." msgstr "Eckmodus 2: 45 Grad umkehren ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1063 -#: flatcamEditors/FlatCAMGrbEditor.py:1090 +#: flatcamEditors/FlatCAMGrbEditor.py:1066 +#: flatcamEditors/FlatCAMGrbEditor.py:1093 msgid "Corner Mode 3: 90 degrees ..." msgstr "Eckmodus 3: 90 Grad ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1066 -#: flatcamEditors/FlatCAMGrbEditor.py:1087 +#: flatcamEditors/FlatCAMGrbEditor.py:1069 +#: flatcamEditors/FlatCAMGrbEditor.py:1090 msgid "Corner Mode 4: Reverse 90 degrees ..." msgstr "Eckmodus 4: Um 90 Grad umkehren ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1069 -#: flatcamEditors/FlatCAMGrbEditor.py:1084 +#: flatcamEditors/FlatCAMGrbEditor.py:1072 +#: flatcamEditors/FlatCAMGrbEditor.py:1087 msgid "Corner Mode 5: Free angle ..." msgstr "Eckmodus 5: Freiwinkel ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1123 -#: flatcamEditors/FlatCAMGrbEditor.py:1281 -#: flatcamEditors/FlatCAMGrbEditor.py:1320 +#: flatcamEditors/FlatCAMGrbEditor.py:1126 +#: flatcamEditors/FlatCAMGrbEditor.py:1284 +#: flatcamEditors/FlatCAMGrbEditor.py:1323 msgid "Track Mode 1: 45 degrees ..." msgstr "Spurmodus 1: 45 Grad ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1261 -#: flatcamEditors/FlatCAMGrbEditor.py:1315 +#: flatcamEditors/FlatCAMGrbEditor.py:1264 +#: flatcamEditors/FlatCAMGrbEditor.py:1318 msgid "Track Mode 2: Reverse 45 degrees ..." msgstr "Spurmodus 2: 45 Grad umkehren ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1266 -#: flatcamEditors/FlatCAMGrbEditor.py:1310 +#: flatcamEditors/FlatCAMGrbEditor.py:1269 +#: flatcamEditors/FlatCAMGrbEditor.py:1313 msgid "Track Mode 3: 90 degrees ..." msgstr "Spurmodus 3: 90 Grad ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1271 -#: flatcamEditors/FlatCAMGrbEditor.py:1305 +#: flatcamEditors/FlatCAMGrbEditor.py:1274 +#: flatcamEditors/FlatCAMGrbEditor.py:1308 msgid "Track Mode 4: Reverse 90 degrees ..." msgstr "Spurmodus 4: Um 90 Grad umkehren ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1276 -#: flatcamEditors/FlatCAMGrbEditor.py:1300 +#: flatcamEditors/FlatCAMGrbEditor.py:1279 +#: flatcamEditors/FlatCAMGrbEditor.py:1303 msgid "Track Mode 5: Free angle ..." msgstr "Spurmodus 5: Freiwinkel ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1666 +#: flatcamEditors/FlatCAMGrbEditor.py:1669 msgid "Scale the selected Gerber apertures ..." msgstr "Skalieren Sie die ausgewählten Gerber-Öffnungen ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1708 +#: flatcamEditors/FlatCAMGrbEditor.py:1711 msgid "Buffer the selected apertures ..." msgstr "Die ausgewählten Öffnungen puffern ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1752 +#: flatcamEditors/FlatCAMGrbEditor.py:1755 msgid "[WARNING_NOTCL] Nothing selected to move ..." msgstr "[WARNING_NOTCL] Nichts zum Bewegen ausgewählt ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1875 +#: flatcamEditors/FlatCAMGrbEditor.py:1878 msgid "[success] Done. Apertures Move completed." msgstr "[success] Erledigt. Öffnungsbewegung abgeschlossen." -#: flatcamEditors/FlatCAMGrbEditor.py:1951 +#: flatcamEditors/FlatCAMGrbEditor.py:1954 msgid "[success] Done. Apertures copied." msgstr "[success] Erledigt. Blende kopiert." -#: flatcamEditors/FlatCAMGrbEditor.py:2101 flatcamGUI/FlatCAMGUI.py:1604 -#: flatcamGUI/FlatCAMGUI.py:4322 +#: flatcamEditors/FlatCAMGrbEditor.py:2243 flatcamGUI/FlatCAMGUI.py:1607 +#: flatcamGUI/FlatCAMGUI.py:4329 msgid "Gerber Editor" msgstr "Gerber-Editor" -#: flatcamEditors/FlatCAMGrbEditor.py:2120 flatcamGUI/ObjectUI.py:192 +#: flatcamEditors/FlatCAMGrbEditor.py:2262 flatcamGUI/ObjectUI.py:192 msgid "Apertures:" msgstr " Blenden: " -#: flatcamEditors/FlatCAMGrbEditor.py:2122 flatcamGUI/ObjectUI.py:194 +#: flatcamEditors/FlatCAMGrbEditor.py:2264 flatcamGUI/ObjectUI.py:194 msgid "Apertures Table for the Gerber Object." msgstr "Blendentabelle für das Gerberobjekt." -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 msgid "Code" msgstr "Code" -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 #: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "Type" msgstr "Typ" -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 msgid "Size" msgstr "Größe" -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 msgid "Dim" msgstr "Maße" -#: flatcamEditors/FlatCAMGrbEditor.py:2137 flatcamGUI/ObjectUI.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:2279 flatcamGUI/ObjectUI.py:232 msgid "Index" msgstr "Index" -#: flatcamEditors/FlatCAMGrbEditor.py:2139 flatcamGUI/ObjectUI.py:234 +#: flatcamEditors/FlatCAMGrbEditor.py:2281 flatcamGUI/ObjectUI.py:234 msgid "Aperture Code" msgstr "Öffnungscode" -#: flatcamEditors/FlatCAMGrbEditor.py:2141 flatcamGUI/ObjectUI.py:236 +#: flatcamEditors/FlatCAMGrbEditor.py:2283 flatcamGUI/ObjectUI.py:236 msgid "Type of aperture: circular, rectangle, macros etc" msgstr "Öffnungsart: kreisförmig, rechteckig, Makros usw" -#: flatcamEditors/FlatCAMGrbEditor.py:2143 -#: flatcamEditors/FlatCAMGrbEditor.py:2176 flatcamGUI/ObjectUI.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:2285 +#: flatcamEditors/FlatCAMGrbEditor.py:2318 flatcamGUI/ObjectUI.py:238 msgid "Aperture Size:" msgstr "Öffnungsgröße:" -#: flatcamEditors/FlatCAMGrbEditor.py:2145 flatcamGUI/ObjectUI.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:2287 flatcamGUI/ObjectUI.py:240 msgid "" "Aperture Dimensions:\n" " - (width, height) for R, O type.\n" @@ -3413,15 +3435,15 @@ msgstr "" "  - (Breite, Höhe) für R, O-Typ.\n" "  - (dia, nVertices) für P-Typ" -#: flatcamEditors/FlatCAMGrbEditor.py:2166 +#: flatcamEditors/FlatCAMGrbEditor.py:2308 msgid "Aperture Code:" msgstr "Öffnungscode:" -#: flatcamEditors/FlatCAMGrbEditor.py:2168 +#: flatcamEditors/FlatCAMGrbEditor.py:2310 msgid "Code for the new aperture" msgstr "Code für die neue Blende" -#: flatcamEditors/FlatCAMGrbEditor.py:2178 +#: flatcamEditors/FlatCAMGrbEditor.py:2320 msgid "" "Size for the new aperture.\n" "If aperture type is 'R' or 'O' then\n" @@ -3435,11 +3457,11 @@ msgstr "" "berechnet als:\n" "Quadrat (Breite ** 2 + Höhe ** 2)" -#: flatcamEditors/FlatCAMGrbEditor.py:2190 +#: flatcamEditors/FlatCAMGrbEditor.py:2332 msgid "Aperture Type:" msgstr "Blendentyp:" -#: flatcamEditors/FlatCAMGrbEditor.py:2192 +#: flatcamEditors/FlatCAMGrbEditor.py:2334 msgid "" "Select the type of new aperture. Can be:\n" "C = circular\n" @@ -3451,11 +3473,11 @@ msgstr "" "R = rechteckig\n" "O = länglich" -#: flatcamEditors/FlatCAMGrbEditor.py:2203 +#: flatcamEditors/FlatCAMGrbEditor.py:2345 msgid "Aperture Dim:" msgstr "Öffnungsmaße:" -#: flatcamEditors/FlatCAMGrbEditor.py:2205 +#: flatcamEditors/FlatCAMGrbEditor.py:2347 msgid "" "Dimensions for the new aperture.\n" "Active only for rectangular apertures (type R).\n" @@ -3465,31 +3487,31 @@ msgstr "" "Aktiv nur für rechteckige Öffnungen (Typ R).\n" "Das Format ist (Breite, Höhe)" -#: flatcamEditors/FlatCAMGrbEditor.py:2214 +#: flatcamEditors/FlatCAMGrbEditor.py:2356 msgid "Add/Delete Aperture:" msgstr "Blende hinzufügen / löschen:" -#: flatcamEditors/FlatCAMGrbEditor.py:2216 +#: flatcamEditors/FlatCAMGrbEditor.py:2358 msgid "Add/Delete an aperture in the aperture table" msgstr "Eine Blende in der Blendentabelle hinzufügen / löschen" -#: flatcamEditors/FlatCAMGrbEditor.py:2225 +#: flatcamEditors/FlatCAMGrbEditor.py:2367 msgid "Add a new aperture to the aperture list." msgstr "Fügen Sie der Blendenliste eine neue Blende hinzu." -#: flatcamEditors/FlatCAMGrbEditor.py:2230 +#: flatcamEditors/FlatCAMGrbEditor.py:2372 msgid "Delete a aperture in the aperture list" msgstr "Löschen Sie eine Blende in der Blendenliste" -#: flatcamEditors/FlatCAMGrbEditor.py:2246 +#: flatcamEditors/FlatCAMGrbEditor.py:2388 msgid "Buffer Aperture:" msgstr "Pufferblende:" -#: flatcamEditors/FlatCAMGrbEditor.py:2248 +#: flatcamEditors/FlatCAMGrbEditor.py:2390 msgid "Buffer a aperture in the aperture list" msgstr "Puffern Sie eine Blende in der Blendenliste" -#: flatcamEditors/FlatCAMGrbEditor.py:2261 +#: flatcamEditors/FlatCAMGrbEditor.py:2403 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded.\n" @@ -3503,24 +3525,24 @@ msgstr "" "  - 'Abgeschrägt:' Die Ecke ist eine Linie, die die Features, die sich in " "der Ecke treffen, direkt verbindet" -#: flatcamEditors/FlatCAMGrbEditor.py:2276 flatcamGUI/FlatCAMGUI.py:721 -#: flatcamGUI/FlatCAMGUI.py:1943 +#: flatcamEditors/FlatCAMGrbEditor.py:2418 flatcamGUI/FlatCAMGUI.py:722 +#: flatcamGUI/FlatCAMGUI.py:1948 msgid "Buffer" msgstr "Puffer" -#: flatcamEditors/FlatCAMGrbEditor.py:2290 +#: flatcamEditors/FlatCAMGrbEditor.py:2432 msgid "Scale Aperture:" msgstr "Skalenöffnung:" -#: flatcamEditors/FlatCAMGrbEditor.py:2292 +#: flatcamEditors/FlatCAMGrbEditor.py:2434 msgid "Scale a aperture in the aperture list" msgstr "Skalieren Sie eine Blende in der Blendenliste" -#: flatcamEditors/FlatCAMGrbEditor.py:2300 +#: flatcamEditors/FlatCAMGrbEditor.py:2442 msgid "Scale factor:" msgstr "Skalierungsfaktor:" -#: flatcamEditors/FlatCAMGrbEditor.py:2302 +#: flatcamEditors/FlatCAMGrbEditor.py:2444 msgid "" "The factor by which to scale the selected aperture.\n" "Values can be between 0.0000 and 999.9999" @@ -3528,16 +3550,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:2330 flatcamGUI/FlatCAMGUI.py:711 -#: flatcamGUI/FlatCAMGUI.py:1933 +#: flatcamEditors/FlatCAMGrbEditor.py:2472 flatcamGUI/FlatCAMGUI.py:712 +#: flatcamGUI/FlatCAMGUI.py:1938 msgid "Add Pad Array" msgstr "Pad-Array hinzufügen" -#: flatcamEditors/FlatCAMGrbEditor.py:2332 +#: flatcamEditors/FlatCAMGrbEditor.py:2474 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:2338 +#: flatcamEditors/FlatCAMGrbEditor.py:2480 msgid "" "Select the type of pads array to create.\n" "It can be Linear X(Y) or Circular" @@ -3545,16 +3567,16 @@ msgstr "" "Wählen Sie den zu erstellenden Pad-Array-Typ aus.\n" "Es kann lineares X (Y) oder rund sein" -#: flatcamEditors/FlatCAMGrbEditor.py:2349 +#: flatcamEditors/FlatCAMGrbEditor.py:2491 msgid "Nr of pads:" msgstr "Anzahl der Pads:" -#: flatcamEditors/FlatCAMGrbEditor.py:2351 +#: flatcamEditors/FlatCAMGrbEditor.py:2493 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:2826 -#: flatcamEditors/FlatCAMGrbEditor.py:2830 +#: flatcamEditors/FlatCAMGrbEditor.py:2970 +#: flatcamEditors/FlatCAMGrbEditor.py:2974 msgid "" "[WARNING_NOTCL] Aperture code value is missing or wrong format. Add it and " "retry." @@ -3562,7 +3584,7 @@ msgstr "" "[WARNING_NOTCL] Blendencodewert fehlt oder falsches Format. Fügen Sie es " "hinzu und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGrbEditor.py:2866 +#: flatcamEditors/FlatCAMGrbEditor.py:3010 msgid "" "[WARNING_NOTCL] Aperture dimensions value is missing or wrong format. Add it " "in format (width, height) and retry." @@ -3570,7 +3592,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:2878 +#: flatcamEditors/FlatCAMGrbEditor.py:3022 msgid "" "[WARNING_NOTCL] Aperture size value is missing or wrong format. Add it and " "retry." @@ -3578,35 +3600,35 @@ msgstr "" "[WARNING_NOTCL] Blendengrößenwert fehlt oder falsches Format. Fügen Sie es " "hinzu und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGrbEditor.py:2889 +#: flatcamEditors/FlatCAMGrbEditor.py:3033 msgid "[WARNING_NOTCL] Aperture already in the aperture table." msgstr "[WARNING_NOTCL] Blende bereits in der Blendentabelle." -#: flatcamEditors/FlatCAMGrbEditor.py:2896 +#: flatcamEditors/FlatCAMGrbEditor.py:3040 #, python-brace-format msgid "[success] Added new aperture with code: {apid}" msgstr "[success] Neue Blende mit Code hinzugefügt: {apid}" -#: flatcamEditors/FlatCAMGrbEditor.py:2924 +#: flatcamEditors/FlatCAMGrbEditor.py:3068 msgid "[WARNING_NOTCL] Select an aperture in Aperture Table" msgstr "[WARNING_NOTCL] Wählen Sie in Blende Table eine Blende aus" -#: flatcamEditors/FlatCAMGrbEditor.py:2930 +#: flatcamEditors/FlatCAMGrbEditor.py:3074 #, 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:2953 +#: flatcamEditors/FlatCAMGrbEditor.py:3097 #, python-brace-format msgid "[success] Deleted aperture with code: {del_dia}" msgstr "[success] Blende mit Code gelöscht: {del_dia}" -#: flatcamEditors/FlatCAMGrbEditor.py:3373 +#: flatcamEditors/FlatCAMGrbEditor.py:3517 #, python-format msgid "Adding aperture: %s geo ..." msgstr "Blende hinzufügen:%s geo ..." -#: flatcamEditors/FlatCAMGrbEditor.py:3552 +#: flatcamEditors/FlatCAMGrbEditor.py:3696 msgid "" "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber " "creation." @@ -3614,32 +3636,32 @@ msgstr "" "[ERROR_NOTCL] Die Datei enthält keine Aperture-Definitionen. Abbruch der " "Gerber-Erstellung." -#: flatcamEditors/FlatCAMGrbEditor.py:3555 +#: flatcamEditors/FlatCAMGrbEditor.py:3699 msgid "[ERROR] An internal error has occurred. See shell.\n" msgstr "[ERROR] Ein interner Fehler ist aufgetreten. Siehe Shell.\n" -#: flatcamEditors/FlatCAMGrbEditor.py:3560 +#: flatcamEditors/FlatCAMGrbEditor.py:3704 msgid "Creating Gerber." msgstr "Gerber erstellen." -#: flatcamEditors/FlatCAMGrbEditor.py:3568 +#: flatcamEditors/FlatCAMGrbEditor.py:3712 msgid "[success] Gerber editing finished." msgstr "[success] Gerber-Bearbeitung ist beendet." -#: flatcamEditors/FlatCAMGrbEditor.py:3584 +#: flatcamEditors/FlatCAMGrbEditor.py:3728 msgid "[WARNING_NOTCL] Cancelled. No aperture is selected" msgstr "[WARNING_NOTCL] Abgebrochen. Es ist keine Blende ausgewählt" -#: flatcamEditors/FlatCAMGrbEditor.py:4104 +#: flatcamEditors/FlatCAMGrbEditor.py:4248 msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected." msgstr "" "[ERROR_NOTCL] ist fehlgeschlagen. Es ist keine Blendengeometrie ausgewählt." -#: flatcamEditors/FlatCAMGrbEditor.py:4112 +#: flatcamEditors/FlatCAMGrbEditor.py:4256 msgid "[success] Done. Apertures geometry deleted." msgstr "[success] Fertig. Blendengeometrie gelöscht." -#: flatcamEditors/FlatCAMGrbEditor.py:4261 +#: flatcamEditors/FlatCAMGrbEditor.py:4405 msgid "" "[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try " "again." @@ -3647,7 +3669,7 @@ msgstr "" "[WARNING_NOTCL] Keine Blende zum Puffern Wählen Sie mindestens eine Blende " "und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGrbEditor.py:4290 +#: flatcamEditors/FlatCAMGrbEditor.py:4434 msgid "" "[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and " "retry." @@ -3655,7 +3677,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:4320 +#: flatcamEditors/FlatCAMGrbEditor.py:4464 msgid "" "[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try " "again." @@ -3663,7 +3685,7 @@ msgstr "" "[WARNING_NOTCL] Keine zu skalierende Blende Wählen Sie mindestens eine " "Blende und versuchen Sie es erneut." -#: flatcamEditors/FlatCAMGrbEditor.py:4336 +#: flatcamEditors/FlatCAMGrbEditor.py:4480 msgid "[success] Done. Scale Tool completed." msgstr "[success] Erledigt. Skalierungswerkzeug abgeschlossen." @@ -4246,11 +4268,11 @@ msgstr "CNC generieren" msgid "View Source" msgstr "Quelltext anzeigen" -#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1617 +#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1620 msgid "Edit" msgstr "Bearbeiten" -#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1623 +#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1626 #: flatcamTools/ToolProperties.py:25 msgid "Properties" msgstr "Eigenschaften" @@ -4291,15 +4313,15 @@ msgstr "Gerber Editor-Symbolleiste" msgid "Grid Toolbar" msgstr "Raster-Symbolleiste" -#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1834 +#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1837 msgid "Open project" msgstr "Offenes Projekt" -#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1835 +#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1838 msgid "Save project" msgstr "Projekt speichern" -#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1838 +#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1841 msgid "New Blank Geometry" msgstr "Neue leere Geometrie" @@ -4307,220 +4329,225 @@ msgstr "Neue leere Geometrie" msgid "New Blank Gerber" msgstr "Neue leere Gerber" -#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1839 +#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1842 msgid "New Blank Excellon" msgstr "Neuer unbelegter Excellon" -#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1841 +#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1844 msgid "Editor" msgstr "Editor" -#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1843 +#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1846 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:1847 +#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1850 msgid "&Delete" msgstr "&Löschen" -#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1850 +#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1853 msgid "&Replot" msgstr "&Replotieren" -#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1851 +#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1854 msgid "&Clear plot" msgstr "&Plot klar löschen" -#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1852 +#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1855 msgid "Zoom In" msgstr "Hineinzoomen" -#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1853 +#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1856 msgid "Zoom Out" msgstr "Rauszoomen" -#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1592 -#: flatcamGUI/FlatCAMGUI.py:1854 +#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1595 +#: flatcamGUI/FlatCAMGUI.py:1857 msgid "Zoom Fit" msgstr "Passenzoomen" -#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1859 +#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1862 msgid "&Command Line" msgstr "Befehlszeile" -#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1862 +#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1865 msgid "2Sided Tool" msgstr "2Seitiges Werkzeug" -#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1863 +#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1866 msgid "&Cutout Tool" msgstr "Ausschnittwerkzeug" -#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1864 +#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1867 #: flatcamGUI/ObjectUI.py:392 flatcamTools/ToolNonCopperClear.py:285 msgid "NCC Tool" msgstr "NCC Werkzeug" -#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1868 +#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1871 msgid "Panel Tool" msgstr "Platte Werkzeug" -#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1869 +#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1872 #: flatcamTools/ToolFilm.py:204 msgid "Film Tool" msgstr "Filmwerkzeug" -#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1871 +#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1874 msgid "SolderPaste Tool" msgstr "Lötpaste-Werkzeug" -#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1872 +#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1875 #: flatcamTools/ToolSub.py:26 msgid "Substract Tool" msgstr "Abziehen Werkzeug " -#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1877 +#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1880 msgid "Calculators Tool" msgstr "Rechnerwerkzeug" #: flatcamGUI/FlatCAMGUI.py:662 flatcamGUI/FlatCAMGUI.py:676 -#: flatcamGUI/FlatCAMGUI.py:709 flatcamGUI/FlatCAMGUI.py:1881 -#: flatcamGUI/FlatCAMGUI.py:1931 +#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1884 +#: flatcamGUI/FlatCAMGUI.py:1936 msgid "Select" msgstr "Wählen" -#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1882 +#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1885 msgid "Add Drill Hole" msgstr "Bohrloch hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1884 +#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1887 msgid "Add Drill Hole Array" msgstr "Bohrlochfeld hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1885 +#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1888 msgid "Resize Drill" msgstr "Bohrergröße ändern" -#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1888 +#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1891 msgid "Copy Drill" msgstr "Bohrer kopieren" -#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1890 +#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1893 msgid "Delete Drill" msgstr "Bohrer löschen" -#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1893 +#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1896 msgid "Move Drill" msgstr "Bohrer bewegen" -#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1897 +#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1900 msgid "Add Circle" msgstr "Kreis hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1898 +#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1901 msgid "Add Arc" msgstr "Bogen hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1900 +#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1903 msgid "Add Rectangle" msgstr "Rechteck hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1903 +#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1906 msgid "Add Path" msgstr "Pfad hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1905 +#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1908 msgid "Add Polygon" msgstr "Polygon hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1907 +#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1910 msgid "Add Text" msgstr "Text hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1909 +#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1912 msgid "Add Buffer" msgstr "Puffer hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1910 +#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1913 msgid "Paint Shape" msgstr "Malen Form" -#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:1913 +#: flatcamGUI/FlatCAMGUI.py:689 flatcamGUI/FlatCAMGUI.py:724 +#: flatcamGUI/FlatCAMGUI.py:1914 flatcamGUI/FlatCAMGUI.py:1950 +msgid "Eraser" +msgstr "Radiergummi" + +#: flatcamGUI/FlatCAMGUI.py:692 flatcamGUI/FlatCAMGUI.py:1918 msgid "Polygon Union" msgstr "Polygon-Vereinigung" -#: flatcamGUI/FlatCAMGUI.py:693 flatcamGUI/FlatCAMGUI.py:1915 +#: flatcamGUI/FlatCAMGUI.py:694 flatcamGUI/FlatCAMGUI.py:1920 msgid "Polygon Intersection" msgstr "Polygonschnitt" -#: flatcamGUI/FlatCAMGUI.py:695 flatcamGUI/FlatCAMGUI.py:1917 +#: flatcamGUI/FlatCAMGUI.py:696 flatcamGUI/FlatCAMGUI.py:1922 msgid "Polygon Subtraction" msgstr "Polygon-Subtraktion" -#: flatcamGUI/FlatCAMGUI.py:698 flatcamGUI/FlatCAMGUI.py:1920 +#: flatcamGUI/FlatCAMGUI.py:699 flatcamGUI/FlatCAMGUI.py:1925 msgid "Cut Path" msgstr "Pfad ausschneiden" -#: flatcamGUI/FlatCAMGUI.py:699 +#: flatcamGUI/FlatCAMGUI.py:700 msgid "Copy Shape(s)" msgstr "Form kopieren" -#: flatcamGUI/FlatCAMGUI.py:702 +#: flatcamGUI/FlatCAMGUI.py:703 msgid "Delete Shape '-'" msgstr "Form löschen" -#: flatcamGUI/FlatCAMGUI.py:704 flatcamGUI/FlatCAMGUI.py:728 -#: flatcamGUI/FlatCAMGUI.py:1925 flatcamGUI/FlatCAMGUI.py:1950 +#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:731 +#: flatcamGUI/FlatCAMGUI.py:1930 flatcamGUI/FlatCAMGUI.py:1957 msgid "Transformations" msgstr "Transformationen" -#: flatcamGUI/FlatCAMGUI.py:706 +#: flatcamGUI/FlatCAMGUI.py:707 msgid "Move Objects " msgstr "Objekte verschieben " -#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1932 +#: flatcamGUI/FlatCAMGUI.py:711 flatcamGUI/FlatCAMGUI.py:1937 msgid "Add Pad" msgstr "Pad hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:712 flatcamGUI/FlatCAMGUI.py:1934 +#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1939 msgid "Add Track" msgstr "Track hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1935 +#: flatcamGUI/FlatCAMGUI.py:714 flatcamGUI/FlatCAMGUI.py:1940 msgid "Add Region" msgstr "Region hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:715 flatcamGUI/FlatCAMGUI.py:1937 +#: flatcamGUI/FlatCAMGUI.py:716 flatcamGUI/FlatCAMGUI.py:1942 msgid "Poligonize" msgstr "Polygonisieren" -#: flatcamGUI/FlatCAMGUI.py:717 flatcamGUI/FlatCAMGUI.py:1939 +#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1944 msgid "SemiDisc" msgstr "Halbscheibe" -#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1940 +#: flatcamGUI/FlatCAMGUI.py:719 flatcamGUI/FlatCAMGUI.py:1945 msgid "Disc" msgstr "Scheibe" -#: flatcamGUI/FlatCAMGUI.py:730 flatcamGUI/FlatCAMGUI.py:1602 -#: flatcamGUI/FlatCAMGUI.py:1622 flatcamGUI/FlatCAMGUI.py:1952 +#: flatcamGUI/FlatCAMGUI.py:733 flatcamGUI/FlatCAMGUI.py:1605 +#: flatcamGUI/FlatCAMGUI.py:1625 flatcamGUI/FlatCAMGUI.py:1959 #: flatcamTools/ToolMove.py:26 msgid "Move" msgstr "Bewegung" -#: flatcamGUI/FlatCAMGUI.py:736 flatcamGUI/FlatCAMGUI.py:1958 +#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1965 msgid "Snap to grid" msgstr "Am Raster ausrichten" -#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1961 +#: flatcamGUI/FlatCAMGUI.py:742 flatcamGUI/FlatCAMGUI.py:1968 msgid "Grid X snapping distance" msgstr "Raster X Fangdistanz" -#: flatcamGUI/FlatCAMGUI.py:744 flatcamGUI/FlatCAMGUI.py:1966 +#: flatcamGUI/FlatCAMGUI.py:747 flatcamGUI/FlatCAMGUI.py:1973 msgid "Grid Y snapping distance" msgstr "Raster Y Fangdistanz" -#: flatcamGUI/FlatCAMGUI.py:750 flatcamGUI/FlatCAMGUI.py:1972 +#: flatcamGUI/FlatCAMGUI.py:753 flatcamGUI/FlatCAMGUI.py:1979 msgid "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." @@ -4528,64 +4555,64 @@ msgstr "" "Wenn aktiv, Wert auf Grid_X\n" "wird in den Wert von Grid_Y kopiert." -#: flatcamGUI/FlatCAMGUI.py:756 flatcamGUI/FlatCAMGUI.py:1978 +#: flatcamGUI/FlatCAMGUI.py:759 flatcamGUI/FlatCAMGUI.py:1985 msgid "Snap to corner" msgstr "In der Ecke ausrichten" -#: flatcamGUI/FlatCAMGUI.py:760 flatcamGUI/FlatCAMGUI.py:1982 -#: flatcamGUI/FlatCAMGUI.py:3339 +#: flatcamGUI/FlatCAMGUI.py:763 flatcamGUI/FlatCAMGUI.py:1989 +#: flatcamGUI/FlatCAMGUI.py:3346 msgid "Max. magnet distance" msgstr "Max. Magnetabstand" -#: flatcamGUI/FlatCAMGUI.py:788 flatcamGUI/FlatCAMGUI.py:1586 +#: flatcamGUI/FlatCAMGUI.py:791 flatcamGUI/FlatCAMGUI.py:1589 msgid "Project" msgstr "Projekt" -#: flatcamGUI/FlatCAMGUI.py:798 +#: flatcamGUI/FlatCAMGUI.py:801 msgid "Selected" msgstr "Ausgewählt" -#: flatcamGUI/FlatCAMGUI.py:817 flatcamGUI/FlatCAMGUI.py:825 +#: flatcamGUI/FlatCAMGUI.py:820 flatcamGUI/FlatCAMGUI.py:828 msgid "Plot Area" msgstr "Grundstücksfläche" -#: flatcamGUI/FlatCAMGUI.py:849 +#: flatcamGUI/FlatCAMGUI.py:852 msgid "General" msgstr "Allgemeines" -#: flatcamGUI/FlatCAMGUI.py:858 +#: flatcamGUI/FlatCAMGUI.py:861 msgid "APP. DEFAULTS" msgstr "Anwendungsvorgaben" -#: flatcamGUI/FlatCAMGUI.py:859 +#: flatcamGUI/FlatCAMGUI.py:862 msgid "PROJ. OPTIONS " msgstr "Projektoptionen" -#: flatcamGUI/FlatCAMGUI.py:870 +#: flatcamGUI/FlatCAMGUI.py:873 msgid "GERBER" msgstr "GERBER" -#: flatcamGUI/FlatCAMGUI.py:879 +#: flatcamGUI/FlatCAMGUI.py:882 msgid "EXCELLON" msgstr "EXCELLON" -#: flatcamGUI/FlatCAMGUI.py:888 +#: flatcamGUI/FlatCAMGUI.py:891 msgid "GEOMETRY" msgstr "GEOMETRY" -#: flatcamGUI/FlatCAMGUI.py:898 +#: flatcamGUI/FlatCAMGUI.py:901 msgid "CNC-JOB" msgstr "CNC-Auftrag" -#: flatcamGUI/FlatCAMGUI.py:907 +#: flatcamGUI/FlatCAMGUI.py:910 msgid "TOOLS" msgstr "WERKZEUGE" -#: flatcamGUI/FlatCAMGUI.py:924 +#: flatcamGUI/FlatCAMGUI.py:927 msgid "Import Preferences" msgstr "Importeinstellungen" -#: flatcamGUI/FlatCAMGUI.py:927 +#: flatcamGUI/FlatCAMGUI.py:930 msgid "" "Import a full set of FlatCAM settings from a file\n" "previously saved on HDD.\n" @@ -4600,11 +4627,11 @@ msgstr "" "FlatCAM speichert automatisch eine 'factory_defaults'-Datei\n" "beim ersten Start. Löschen Sie diese Datei nicht." -#: flatcamGUI/FlatCAMGUI.py:934 +#: flatcamGUI/FlatCAMGUI.py:937 msgid "Export Preferences" msgstr "Voreinstell. export." -#: flatcamGUI/FlatCAMGUI.py:937 +#: flatcamGUI/FlatCAMGUI.py:940 msgid "" "Export a full set of FlatCAM settings in a file\n" "that is saved on HDD." @@ -4613,20 +4640,20 @@ msgstr "" "Datei\n" "das ist auf der Festplatte gespeichert." -#: flatcamGUI/FlatCAMGUI.py:942 +#: flatcamGUI/FlatCAMGUI.py:945 msgid "Open Pref Folder" msgstr "Öffnen Sie \"Einstell.\"" -#: flatcamGUI/FlatCAMGUI.py:945 +#: flatcamGUI/FlatCAMGUI.py:948 msgid "Open the folder where FlatCAM save the preferences files." msgstr "" "Öffnen Sie den Ordner, in dem FlatCAM die Voreinstellungsdateien speichert." -#: flatcamGUI/FlatCAMGUI.py:953 +#: flatcamGUI/FlatCAMGUI.py:956 msgid "Save Preferences" msgstr "Voreinstell. speech." -#: flatcamGUI/FlatCAMGUI.py:956 +#: flatcamGUI/FlatCAMGUI.py:959 msgid "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." @@ -4634,7 +4661,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:982 +#: flatcamGUI/FlatCAMGUI.py:985 msgid "" "General Shortcut list
\n" "
Editor Shortcut list
\n" "
\n" @@ -5833,99 +5860,99 @@ msgstr "" "
\n" " " -#: flatcamGUI/FlatCAMGUI.py:1579 +#: flatcamGUI/FlatCAMGUI.py:1582 msgid "Disable" msgstr "Deaktivieren" -#: flatcamGUI/FlatCAMGUI.py:1581 +#: flatcamGUI/FlatCAMGUI.py:1584 msgid "New" msgstr "Neu" -#: flatcamGUI/FlatCAMGUI.py:1582 +#: flatcamGUI/FlatCAMGUI.py:1585 msgid "Geometry" msgstr "Geometrie" -#: flatcamGUI/FlatCAMGUI.py:1584 +#: flatcamGUI/FlatCAMGUI.py:1587 msgid "Excellon" msgstr "Excellon" -#: flatcamGUI/FlatCAMGUI.py:1589 +#: flatcamGUI/FlatCAMGUI.py:1592 msgid "Grids" msgstr "Raster" -#: flatcamGUI/FlatCAMGUI.py:1591 +#: flatcamGUI/FlatCAMGUI.py:1594 msgid "View" msgstr "Aussicht" -#: flatcamGUI/FlatCAMGUI.py:1593 +#: flatcamGUI/FlatCAMGUI.py:1596 msgid "Clear Plot" msgstr "Plot klar löschen" -#: flatcamGUI/FlatCAMGUI.py:1594 +#: flatcamGUI/FlatCAMGUI.py:1597 msgid "Replot" msgstr "Replotieren" -#: flatcamGUI/FlatCAMGUI.py:1597 +#: flatcamGUI/FlatCAMGUI.py:1600 msgid "Geo Editor" msgstr "Geo-Editor" -#: flatcamGUI/FlatCAMGUI.py:1598 +#: flatcamGUI/FlatCAMGUI.py:1601 msgid "Line" msgstr "Linie" -#: flatcamGUI/FlatCAMGUI.py:1599 +#: flatcamGUI/FlatCAMGUI.py:1602 msgid "Rectangle" msgstr "Rechteck" -#: flatcamGUI/FlatCAMGUI.py:1600 +#: flatcamGUI/FlatCAMGUI.py:1603 msgid "Cut" msgstr "Schnitt" -#: flatcamGUI/FlatCAMGUI.py:1605 +#: flatcamGUI/FlatCAMGUI.py:1608 msgid "Pad" msgstr "Pad" -#: flatcamGUI/FlatCAMGUI.py:1606 +#: flatcamGUI/FlatCAMGUI.py:1609 msgid "Pad Array" msgstr "Pad-Array" -#: flatcamGUI/FlatCAMGUI.py:1607 +#: flatcamGUI/FlatCAMGUI.py:1610 msgid "Track" msgstr "Track" -#: flatcamGUI/FlatCAMGUI.py:1608 +#: flatcamGUI/FlatCAMGUI.py:1611 msgid "Region" msgstr "Region" -#: flatcamGUI/FlatCAMGUI.py:1610 +#: flatcamGUI/FlatCAMGUI.py:1613 msgid "Exc Editor" msgstr "Exc-Editor" -#: flatcamGUI/FlatCAMGUI.py:1611 +#: flatcamGUI/FlatCAMGUI.py:1614 msgid "Add Drill" msgstr "Bohrer hinzufügen" -#: flatcamGUI/FlatCAMGUI.py:1643 +#: flatcamGUI/FlatCAMGUI.py:1646 msgid "Print Preview" msgstr "Druckvorschau" -#: flatcamGUI/FlatCAMGUI.py:1644 +#: flatcamGUI/FlatCAMGUI.py:1647 msgid "Print Code" msgstr "Code drucken" -#: flatcamGUI/FlatCAMGUI.py:1645 +#: flatcamGUI/FlatCAMGUI.py:1648 msgid "Find in Code" msgstr "Im Code suchen" -#: flatcamGUI/FlatCAMGUI.py:1650 +#: flatcamGUI/FlatCAMGUI.py:1653 msgid "Replace With" msgstr "Ersetzen mit" -#: flatcamGUI/FlatCAMGUI.py:1654 +#: flatcamGUI/FlatCAMGUI.py:1657 msgid "All" msgstr "Alles" -#: flatcamGUI/FlatCAMGUI.py:1656 +#: flatcamGUI/FlatCAMGUI.py:1659 msgid "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." @@ -5934,15 +5961,15 @@ msgstr "" "ersetzt\n" "mit dem Text im Feld \"Ersetzen\" .." -#: flatcamGUI/FlatCAMGUI.py:1659 +#: flatcamGUI/FlatCAMGUI.py:1662 msgid "Open Code" msgstr "Code öffnen" -#: flatcamGUI/FlatCAMGUI.py:1660 +#: flatcamGUI/FlatCAMGUI.py:1663 msgid "Save Code" msgstr "Code speichern" -#: flatcamGUI/FlatCAMGUI.py:1695 +#: flatcamGUI/FlatCAMGUI.py:1698 msgid "" "Relative neasurement.\n" "Reference is last click position" @@ -5950,7 +5977,7 @@ msgstr "" "Relative Messung\n" "Referenz ist Position des letzten Klicks" -#: flatcamGUI/FlatCAMGUI.py:1701 +#: flatcamGUI/FlatCAMGUI.py:1704 msgid "" "Absolute neasurement.\n" "Reference is (X=0, Y= 0) position" @@ -5958,23 +5985,23 @@ msgstr "" "Absolute Messung.\n" "Referenz ist (X = 0, Y = 0)" -#: flatcamGUI/FlatCAMGUI.py:1896 +#: flatcamGUI/FlatCAMGUI.py:1899 msgid "Select 'Esc'" msgstr "Wählen" -#: flatcamGUI/FlatCAMGUI.py:1921 +#: flatcamGUI/FlatCAMGUI.py:1926 msgid "Copy Objects" msgstr "Objekte kopieren" -#: flatcamGUI/FlatCAMGUI.py:1923 +#: flatcamGUI/FlatCAMGUI.py:1928 msgid "Delete Shape" msgstr "Form löschen" -#: flatcamGUI/FlatCAMGUI.py:1928 +#: flatcamGUI/FlatCAMGUI.py:1933 msgid "Move Objects" msgstr "Objekte verschieben" -#: flatcamGUI/FlatCAMGUI.py:2358 +#: flatcamGUI/FlatCAMGUI.py:2365 msgid "" "Please first select a geometry item to be cutted\n" "then select the geometry item that will be cutted\n" @@ -5986,17 +6013,17 @@ msgstr "" "aus dem ersten Artikel. Zum Schluss drücken Sie die Taste ~ X ~ oder\n" "die Symbolleisten-Schaltfläche." -#: flatcamGUI/FlatCAMGUI.py:2365 flatcamGUI/FlatCAMGUI.py:2502 -#: flatcamGUI/FlatCAMGUI.py:2561 flatcamGUI/FlatCAMGUI.py:2581 +#: flatcamGUI/FlatCAMGUI.py:2372 flatcamGUI/FlatCAMGUI.py:2509 +#: flatcamGUI/FlatCAMGUI.py:2568 flatcamGUI/FlatCAMGUI.py:2588 msgid "Warning" msgstr "Warnung" -#: flatcamGUI/FlatCAMGUI.py:2432 flatcamGUI/FlatCAMGUI.py:2631 -#: flatcamGUI/FlatCAMGUI.py:2842 +#: flatcamGUI/FlatCAMGUI.py:2439 flatcamGUI/FlatCAMGUI.py:2638 +#: flatcamGUI/FlatCAMGUI.py:2849 msgid "[WARNING_NOTCL] Cancelled." msgstr "[WARNING_NOTCL] Abgebrochen." -#: flatcamGUI/FlatCAMGUI.py:2497 +#: flatcamGUI/FlatCAMGUI.py:2504 msgid "" "Please select geometry items \n" "on which to perform Intersection Tool." @@ -6004,7 +6031,7 @@ msgstr "" "Bitte wählen Sie Geometrieelemente aus\n" "auf dem das Verschneidungswerkzeug ausgeführt werden soll." -#: flatcamGUI/FlatCAMGUI.py:2556 +#: flatcamGUI/FlatCAMGUI.py:2563 msgid "" "Please select geometry items \n" "on which to perform Substraction Tool." @@ -6012,7 +6039,7 @@ msgstr "" "Bitte wählen Sie Geometrieelemente aus\n" "auf dem das Subtraktionswerkzeug ausgeführt werden soll." -#: flatcamGUI/FlatCAMGUI.py:2576 +#: flatcamGUI/FlatCAMGUI.py:2583 msgid "" "Please select geometry items \n" "on which to perform union." @@ -6020,55 +6047,55 @@ msgstr "" "Bitte wählen Sie Geometrieelemente aus\n" "auf dem die Polygonverbindung ausgeführt werden soll." -#: flatcamGUI/FlatCAMGUI.py:2647 flatcamGUI/FlatCAMGUI.py:2859 +#: flatcamGUI/FlatCAMGUI.py:2654 flatcamGUI/FlatCAMGUI.py:2866 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to delete." msgstr "[WARNING_NOTCL] Abgebrochen. Nichts zum Löschen ausgewählt." -#: flatcamGUI/FlatCAMGUI.py:2731 flatcamGUI/FlatCAMGUI.py:2926 +#: flatcamGUI/FlatCAMGUI.py:2738 flatcamGUI/FlatCAMGUI.py:2933 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to copy." msgstr "[WARNING_NOTCL] Abgebrochen. Nichts zum Kopieren ausgewählt." -#: flatcamGUI/FlatCAMGUI.py:2777 flatcamGUI/FlatCAMGUI.py:2972 +#: flatcamGUI/FlatCAMGUI.py:2784 flatcamGUI/FlatCAMGUI.py:2979 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to move." msgstr "[WARNING_NOTCL] Abgebrochen. Nichts ausgewählt, um sich zu bewegen." -#: flatcamGUI/FlatCAMGUI.py:2986 +#: flatcamGUI/FlatCAMGUI.py:2993 msgid "New Tool ..." msgstr "Neues Werkzeug ..." -#: flatcamGUI/FlatCAMGUI.py:2987 +#: flatcamGUI/FlatCAMGUI.py:2994 msgid "Enter a Tool Diameter:" msgstr "Geben Sie einen Werkzeugdurchmesser ein:" -#: flatcamGUI/FlatCAMGUI.py:3029 +#: flatcamGUI/FlatCAMGUI.py:3036 msgid "Measurement Tool exit..." msgstr "Messwerkzeug beenden ..." -#: flatcamGUI/FlatCAMGUI.py:3324 +#: flatcamGUI/FlatCAMGUI.py:3331 msgid "Grid X value:" msgstr "Raster X-Wert:" -#: flatcamGUI/FlatCAMGUI.py:3326 +#: flatcamGUI/FlatCAMGUI.py:3333 msgid "This is the Grid snap value on X axis." msgstr "Dies ist der Rasterfangwert auf der X-Achse." -#: flatcamGUI/FlatCAMGUI.py:3331 +#: flatcamGUI/FlatCAMGUI.py:3338 msgid "Grid Y value:" msgstr "Raster Y-Wert:" -#: flatcamGUI/FlatCAMGUI.py:3333 +#: flatcamGUI/FlatCAMGUI.py:3340 msgid "This is the Grid snap value on Y axis." msgstr "Dies ist der Rasterfangwert auf der Y-Achse." -#: flatcamGUI/FlatCAMGUI.py:3338 +#: flatcamGUI/FlatCAMGUI.py:3345 msgid "Snap Max:" msgstr "Maximalwert:" -#: flatcamGUI/FlatCAMGUI.py:3343 +#: flatcamGUI/FlatCAMGUI.py:3350 msgid "Workspace:" msgstr "Arbeitsplatz:" -#: flatcamGUI/FlatCAMGUI.py:3345 +#: flatcamGUI/FlatCAMGUI.py:3352 msgid "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." @@ -6076,11 +6103,11 @@ msgstr "" "Zeichnen Sie ein begrenzendes Rechteck auf die Leinwand.\n" "Ziel ist es, die Grenzen unserer Arbeit aufzuzeigen." -#: flatcamGUI/FlatCAMGUI.py:3348 +#: flatcamGUI/FlatCAMGUI.py:3355 msgid "Wk. format:" msgstr "Arbeitsbereichformat:" -#: flatcamGUI/FlatCAMGUI.py:3350 +#: flatcamGUI/FlatCAMGUI.py:3357 msgid "" "Select the type of rectangle to be used on canvas,\n" "as valid workspace." @@ -6088,11 +6115,11 @@ msgstr "" "Wählen Sie den Typ des Rechtecks für die Leinwand aus.\n" "als gültiger Arbeitsbereich." -#: flatcamGUI/FlatCAMGUI.py:3363 +#: flatcamGUI/FlatCAMGUI.py:3370 msgid "Plot Fill:" msgstr "Plot füllen:" -#: flatcamGUI/FlatCAMGUI.py:3365 +#: flatcamGUI/FlatCAMGUI.py:3372 msgid "" "Set the fill color for plotted objects.\n" "First 6 digits are the color and the last 2\n" @@ -6102,28 +6129,28 @@ msgstr "" "Die ersten 6 Ziffern sind die Farbe und die letzten 2\n" "Ziffern sind für Alpha (Transparenz)." -#: flatcamGUI/FlatCAMGUI.py:3379 flatcamGUI/FlatCAMGUI.py:3429 -#: flatcamGUI/FlatCAMGUI.py:3479 +#: flatcamGUI/FlatCAMGUI.py:3386 flatcamGUI/FlatCAMGUI.py:3436 +#: flatcamGUI/FlatCAMGUI.py:3486 msgid "Alpha Level:" msgstr "Alpha-Ebene:" -#: flatcamGUI/FlatCAMGUI.py:3381 +#: flatcamGUI/FlatCAMGUI.py:3388 msgid "Set the fill transparency for plotted objects." msgstr "Legen Sie die Füllungstransparenz für geplottete Objekte fest." -#: flatcamGUI/FlatCAMGUI.py:3398 +#: flatcamGUI/FlatCAMGUI.py:3405 msgid "Plot Line:" msgstr "Handlungsstrang:" -#: flatcamGUI/FlatCAMGUI.py:3400 +#: flatcamGUI/FlatCAMGUI.py:3407 msgid "Set the line color for plotted objects." msgstr "Legen Sie die Linienfarbe für geplottete Objekte fest." -#: flatcamGUI/FlatCAMGUI.py:3412 +#: flatcamGUI/FlatCAMGUI.py:3419 msgid "Sel. Fill:" msgstr "Ausgewählte Füllung:" -#: flatcamGUI/FlatCAMGUI.py:3414 +#: flatcamGUI/FlatCAMGUI.py:3421 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from left to right.\n" @@ -6135,26 +6162,26 @@ msgstr "" "Die ersten 6 Ziffern sind die Farbe und die letzten 2\n" "Ziffern sind für Alpha (Transparenz)." -#: flatcamGUI/FlatCAMGUI.py:3431 +#: flatcamGUI/FlatCAMGUI.py:3438 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:3448 +#: flatcamGUI/FlatCAMGUI.py:3455 msgid "Sel. Line:" msgstr "Auswahlzeile:" -#: flatcamGUI/FlatCAMGUI.py:3450 +#: flatcamGUI/FlatCAMGUI.py:3457 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:3462 +#: flatcamGUI/FlatCAMGUI.py:3469 msgid "Sel2. Fill:" msgstr "Auswahl2 Füllung:" -#: flatcamGUI/FlatCAMGUI.py:3464 +#: flatcamGUI/FlatCAMGUI.py:3471 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from right to left.\n" @@ -6166,49 +6193,49 @@ msgstr "" "Die ersten 6 Ziffern sind die Farbe und die letzten 2\n" "Ziffern sind für Alpha (Transparenz)." -#: flatcamGUI/FlatCAMGUI.py:3481 +#: flatcamGUI/FlatCAMGUI.py:3488 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:3498 +#: flatcamGUI/FlatCAMGUI.py:3505 msgid "Sel2. Line:" msgstr "Auswahl 2 Zeile:" -#: flatcamGUI/FlatCAMGUI.py:3500 +#: flatcamGUI/FlatCAMGUI.py:3507 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:3512 +#: flatcamGUI/FlatCAMGUI.py:3519 msgid "Editor Draw:" msgstr "Editor zeichnen:" -#: flatcamGUI/FlatCAMGUI.py:3514 +#: flatcamGUI/FlatCAMGUI.py:3521 msgid "Set the color for the shape." msgstr "Legen Sie die Farbe für die Form fest." -#: flatcamGUI/FlatCAMGUI.py:3526 +#: flatcamGUI/FlatCAMGUI.py:3533 msgid "Editor Draw Sel.:" msgstr "Editor Draw Sel.:" -#: flatcamGUI/FlatCAMGUI.py:3528 +#: flatcamGUI/FlatCAMGUI.py:3535 msgid "Set the color of the shape when selected." msgstr "Legt die Farbe der Form fest, wenn sie ausgewählt wird." -#: flatcamGUI/FlatCAMGUI.py:3540 +#: flatcamGUI/FlatCAMGUI.py:3547 msgid "Project Items:" msgstr "Projektelemente:" -#: flatcamGUI/FlatCAMGUI.py:3542 +#: flatcamGUI/FlatCAMGUI.py:3549 msgid "Set the color of the items in Project Tab Tree." msgstr "Legen Sie die Farbe der Elemente im Projektregisterbaum fest." -#: flatcamGUI/FlatCAMGUI.py:3553 +#: flatcamGUI/FlatCAMGUI.py:3560 msgid "Proj. Dis. Items:" msgstr "Proj. Deakt. Elemente" -#: flatcamGUI/FlatCAMGUI.py:3555 +#: flatcamGUI/FlatCAMGUI.py:3562 msgid "" "Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled." @@ -6216,15 +6243,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:3606 +#: flatcamGUI/FlatCAMGUI.py:3613 msgid "GUI Settings" msgstr "GUI-Einstellungen" -#: flatcamGUI/FlatCAMGUI.py:3613 +#: flatcamGUI/FlatCAMGUI.py:3620 msgid "Layout:" msgstr "Layout:" -#: flatcamGUI/FlatCAMGUI.py:3615 +#: flatcamGUI/FlatCAMGUI.py:3622 msgid "" "Select an layout for FlatCAM.\n" "It is applied immediately." @@ -6232,11 +6259,11 @@ msgstr "" "Wählen Sie ein Layout für FlatCAM.\n" "Es wird sofort angewendet." -#: flatcamGUI/FlatCAMGUI.py:3631 +#: flatcamGUI/FlatCAMGUI.py:3638 msgid "Style:" msgstr "Stil:" -#: flatcamGUI/FlatCAMGUI.py:3633 +#: flatcamGUI/FlatCAMGUI.py:3640 msgid "" "Select an style for FlatCAM.\n" "It will be applied at the next app start." @@ -6244,11 +6271,11 @@ msgstr "" "Wählen Sie einen Stil für FlatCAM.\n" "Es wird beim nächsten Start der App angewendet." -#: flatcamGUI/FlatCAMGUI.py:3644 +#: flatcamGUI/FlatCAMGUI.py:3651 msgid "HDPI Support:" msgstr "HDPI-Unterstützung:" -#: flatcamGUI/FlatCAMGUI.py:3646 +#: flatcamGUI/FlatCAMGUI.py:3653 msgid "" "Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start." @@ -6256,11 +6283,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:3659 +#: flatcamGUI/FlatCAMGUI.py:3666 msgid "Clear GUI Settings:" msgstr "GUI-Einstellungen löschen:" -#: flatcamGUI/FlatCAMGUI.py:3661 +#: flatcamGUI/FlatCAMGUI.py:3668 msgid "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." @@ -6268,15 +6295,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:3664 +#: flatcamGUI/FlatCAMGUI.py:3671 msgid "Clear" msgstr "Klären" -#: flatcamGUI/FlatCAMGUI.py:3668 +#: flatcamGUI/FlatCAMGUI.py:3675 msgid "Hover Shape:" msgstr "Schwebeflug-Form:" -#: flatcamGUI/FlatCAMGUI.py:3670 +#: flatcamGUI/FlatCAMGUI.py:3677 msgid "" "Enable display of a hover shape for FlatCAM objects.\n" "It is displayed whenever the mouse cursor is hovering\n" @@ -6286,11 +6313,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:3677 +#: flatcamGUI/FlatCAMGUI.py:3684 msgid "Sel. Shape:" msgstr "Auswahlform:" -#: flatcamGUI/FlatCAMGUI.py:3679 +#: flatcamGUI/FlatCAMGUI.py:3686 msgid "" "Enable the display of a selection shape for FlatCAM objects.\n" "It is displayed whenever the mouse selects an object\n" @@ -6302,23 +6329,23 @@ msgstr "" "entweder durch Klicken oder Ziehen der Maus von links nach rechts oder\n" "rechts nach links." -#: flatcamGUI/FlatCAMGUI.py:3721 +#: flatcamGUI/FlatCAMGUI.py:3728 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:3724 +#: flatcamGUI/FlatCAMGUI.py:3731 msgid "Clear GUI Settings" msgstr "Löschen Sie die GUI-Einstellungen" -#: flatcamGUI/FlatCAMGUI.py:3745 +#: flatcamGUI/FlatCAMGUI.py:3752 msgid "App Preferences" msgstr "App-Einstellungen" -#: flatcamGUI/FlatCAMGUI.py:3751 +#: flatcamGUI/FlatCAMGUI.py:3758 msgid "Units:" msgstr "Einheiten:" -#: flatcamGUI/FlatCAMGUI.py:3752 +#: flatcamGUI/FlatCAMGUI.py:3759 msgid "" "The default value for FlatCAM units.\n" "Whatever is selected here is set every time\n" @@ -6328,11 +6355,11 @@ msgstr "" "Was hier ausgewählt wird, wird jedes Mal eingestellt\n" "FLatCAM wird gestartet." -#: flatcamGUI/FlatCAMGUI.py:3759 +#: flatcamGUI/FlatCAMGUI.py:3766 msgid "APP. LEVEL:" msgstr "Bewerbungsebene:" -#: flatcamGUI/FlatCAMGUI.py:3760 +#: flatcamGUI/FlatCAMGUI.py:3767 msgid "" "Choose the default level of usage for FlatCAM.\n" "BASIC level -> reduced functionality, best for beginner's.\n" @@ -6348,19 +6375,19 @@ msgstr "" "Die Auswahl hier beeinflusst die Parameter in\n" "Die Registerkarte Ausgewählt für alle Arten von FlatCAM-Objekten." -#: flatcamGUI/FlatCAMGUI.py:3769 +#: flatcamGUI/FlatCAMGUI.py:3776 msgid "Languages:" msgstr "Sprachen:" -#: flatcamGUI/FlatCAMGUI.py:3770 +#: flatcamGUI/FlatCAMGUI.py:3777 msgid "Set the language used throughout FlatCAM." msgstr "Stellen Sie die Sprache ein, die in FlatCAM verwendet wird." -#: flatcamGUI/FlatCAMGUI.py:3773 +#: flatcamGUI/FlatCAMGUI.py:3780 msgid "Apply Language" msgstr "Sprache anwend." -#: flatcamGUI/FlatCAMGUI.py:3774 +#: flatcamGUI/FlatCAMGUI.py:3781 msgid "" "Set the language used throughout FlatCAM.\n" "The app will restart after click.Windows: When FlatCAM is installed in " @@ -6379,11 +6406,11 @@ msgstr "" "Sicherheitsfunktionen. In diesem Fall wird die Sprache sein\n" "Beim nächsten Start der App angewendet." -#: flatcamGUI/FlatCAMGUI.py:3783 +#: flatcamGUI/FlatCAMGUI.py:3790 msgid "Shell at StartUp:" msgstr "Shell beim Start:" -#: flatcamGUI/FlatCAMGUI.py:3785 flatcamGUI/FlatCAMGUI.py:3790 +#: flatcamGUI/FlatCAMGUI.py:3792 flatcamGUI/FlatCAMGUI.py:3797 msgid "" "Check this box if you want the shell to\n" "start automatically at startup." @@ -6391,11 +6418,11 @@ msgstr "" "Aktivieren Sie dieses Kontrollkästchen, wenn die Shell gewünscht wird\n" "automatisch beim Start starten" -#: flatcamGUI/FlatCAMGUI.py:3795 +#: flatcamGUI/FlatCAMGUI.py:3802 msgid "Version Check:" msgstr "Versionsprüfung:" -#: flatcamGUI/FlatCAMGUI.py:3797 flatcamGUI/FlatCAMGUI.py:3802 +#: flatcamGUI/FlatCAMGUI.py:3804 flatcamGUI/FlatCAMGUI.py:3809 msgid "" "Check this box if you want to check\n" "for a new version automatically at startup." @@ -6404,11 +6431,11 @@ msgstr "" "wenn Sie das Kontrollkästchen aktivieren möchten\n" "für eine neue Version automatisch beim Start." -#: flatcamGUI/FlatCAMGUI.py:3807 +#: flatcamGUI/FlatCAMGUI.py:3814 msgid "Send Stats:" msgstr "Statistiken senden:" -#: flatcamGUI/FlatCAMGUI.py:3809 flatcamGUI/FlatCAMGUI.py:3814 +#: flatcamGUI/FlatCAMGUI.py:3816 flatcamGUI/FlatCAMGUI.py:3821 msgid "" "Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM." @@ -6417,11 +6444,11 @@ msgstr "" "zustimmen\n" "wird beim Start automatisch aktualisiert, um FlatCAM zu verbessern." -#: flatcamGUI/FlatCAMGUI.py:3821 +#: flatcamGUI/FlatCAMGUI.py:3828 msgid "Pan Button:" msgstr "Pan-Taste:" -#: flatcamGUI/FlatCAMGUI.py:3822 +#: flatcamGUI/FlatCAMGUI.py:3829 msgid "" "Select the mouse button to use for panning:\n" "- MMB --> Middle Mouse Button\n" @@ -6431,19 +6458,19 @@ msgstr "" "- MMB -> Mittlere Maustaste\n" "- RMB -> Rechte Maustaste" -#: flatcamGUI/FlatCAMGUI.py:3829 +#: flatcamGUI/FlatCAMGUI.py:3836 msgid "Multiple Sel:" msgstr "Mehrfachauswahl:" -#: flatcamGUI/FlatCAMGUI.py:3830 +#: flatcamGUI/FlatCAMGUI.py:3837 msgid "Select the key used for multiple selection." msgstr "Wählen Sie den Schlüssel für die Mehrfachauswahl aus." -#: flatcamGUI/FlatCAMGUI.py:3835 +#: flatcamGUI/FlatCAMGUI.py:3842 msgid "Project at StartUp:" msgstr "Projekt beim Start:" -#: flatcamGUI/FlatCAMGUI.py:3837 flatcamGUI/FlatCAMGUI.py:3842 +#: flatcamGUI/FlatCAMGUI.py:3844 flatcamGUI/FlatCAMGUI.py:3849 msgid "" "Check this box if you want the project/selected/tool tab area to\n" "to be shown automatically at startup." @@ -6453,11 +6480,11 @@ msgstr "" "angezeigt werden soll\n" "beim Start automatisch angezeigt werden." -#: flatcamGUI/FlatCAMGUI.py:3847 +#: flatcamGUI/FlatCAMGUI.py:3854 msgid "Project AutoHide:" msgstr "Projekt autoausblenden:" -#: flatcamGUI/FlatCAMGUI.py:3849 flatcamGUI/FlatCAMGUI.py:3855 +#: flatcamGUI/FlatCAMGUI.py:3856 flatcamGUI/FlatCAMGUI.py:3862 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" @@ -6469,11 +6496,11 @@ msgstr "" "keine Objekte geladen sind und anzeigen, wenn ein \n" "neues Objekt erstellt wird." -#: flatcamGUI/FlatCAMGUI.py:3861 +#: flatcamGUI/FlatCAMGUI.py:3868 msgid "Enable ToolTips:" msgstr " QuickInfos aktivieren: " -#: flatcamGUI/FlatCAMGUI.py:3863 flatcamGUI/FlatCAMGUI.py:3868 +#: flatcamGUI/FlatCAMGUI.py:3870 flatcamGUI/FlatCAMGUI.py:3875 msgid "" "Check this box if you want to have toolTips displayed\n" "when hovering with mouse over items throughout the App." @@ -6482,11 +6509,11 @@ msgstr "" "sollen\n" "wenn Sie mit der Maus über Elemente in der App fahren." -#: flatcamGUI/FlatCAMGUI.py:3871 +#: flatcamGUI/FlatCAMGUI.py:3878 msgid "Workers number:" msgstr "Arbeiter Nummer:" -#: flatcamGUI/FlatCAMGUI.py:3873 flatcamGUI/FlatCAMGUI.py:3882 +#: flatcamGUI/FlatCAMGUI.py:3880 flatcamGUI/FlatCAMGUI.py:3889 msgid "" "The number of Qthreads made available to the App.\n" "A bigger number may finish the jobs more quickly but\n" @@ -6502,7 +6529,7 @@ msgstr "" "Der Standardwert ist 2.\n" "Nach dem Ändern wird es beim nächsten Start der App angewendet." -#: flatcamGUI/FlatCAMGUI.py:3894 flatcamGUI/FlatCAMGUI.py:3903 +#: flatcamGUI/FlatCAMGUI.py:3901 flatcamGUI/FlatCAMGUI.py:3910 msgid "" "This value can counter the effect of the Circle Steps\n" "parameter. Default value is 0.01.\n" @@ -6518,11 +6545,11 @@ msgstr "" "Performance. Ein höherer Wert bietet mehr\n" "Leistung auf Kosten des Detaillierungsgrades." -#: flatcamGUI/FlatCAMGUI.py:3939 +#: flatcamGUI/FlatCAMGUI.py:3946 msgid "\"Open\" behavior" msgstr "\"Offen\" -Verhalten" -#: flatcamGUI/FlatCAMGUI.py:3941 +#: flatcamGUI/FlatCAMGUI.py:3948 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" @@ -6539,11 +6566,11 @@ msgstr "" "Dateien zuletzt verwendet: entweder der Pfad\n" "Pfad zum Speichern von Dateien oder Pfad zum Öffnen von Dateien." -#: flatcamGUI/FlatCAMGUI.py:3950 +#: flatcamGUI/FlatCAMGUI.py:3957 msgid "Save Compressed Project" msgstr "Speichern Sie das komprimierte Projekt" -#: flatcamGUI/FlatCAMGUI.py:3952 +#: flatcamGUI/FlatCAMGUI.py:3959 msgid "" "Whether to save a compressed or uncompressed project.\n" "When checked it will save a compressed FlatCAM project." @@ -6553,11 +6580,11 @@ msgstr "" "Wenn diese Option aktiviert ist, wird ein komprimiertes FlatCAM-Projekt " "gespeichert." -#: flatcamGUI/FlatCAMGUI.py:3963 +#: flatcamGUI/FlatCAMGUI.py:3970 msgid "Compression Level:" msgstr "Kompressionsstufe:" -#: flatcamGUI/FlatCAMGUI.py:3965 +#: flatcamGUI/FlatCAMGUI.py:3972 msgid "" "The level of compression used when saving\n" "a FlatCAM project. Higher value means better compression\n" @@ -6567,47 +6594,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:3991 flatcamGUI/FlatCAMGUI.py:4360 -#: flatcamGUI/FlatCAMGUI.py:5030 flatcamGUI/FlatCAMGUI.py:5402 +#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4367 +#: flatcamGUI/FlatCAMGUI.py:5037 flatcamGUI/FlatCAMGUI.py:5409 #: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:505 #: flatcamGUI/ObjectUI.py:833 flatcamGUI/ObjectUI.py:1350 msgid "Plot Options:" msgstr " Diagrammoptionen: " -#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4372 +#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/FlatCAMGUI.py:4379 #: flatcamGUI/ObjectUI.py:156 flatcamGUI/ObjectUI.py:506 msgid "Solid" msgstr "Solide" -#: flatcamGUI/FlatCAMGUI.py:4000 flatcamGUI/ObjectUI.py:158 +#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:158 msgid "Solid color polygons." msgstr "Einfarbige Polygone." -#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/ObjectUI.py:164 +#: flatcamGUI/FlatCAMGUI.py:4012 flatcamGUI/ObjectUI.py:164 msgid "M-Color" msgstr "M-farbig" -#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:166 +#: flatcamGUI/FlatCAMGUI.py:4014 flatcamGUI/ObjectUI.py:166 msgid "Draw polygons in different colors." msgstr "Zeichnen Sie Polygone in verschiedenen Farben." -#: flatcamGUI/FlatCAMGUI.py:4012 flatcamGUI/FlatCAMGUI.py:4366 -#: flatcamGUI/FlatCAMGUI.py:5034 flatcamGUI/ObjectUI.py:172 +#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:4373 +#: flatcamGUI/FlatCAMGUI.py:5041 flatcamGUI/ObjectUI.py:172 msgid "Plot" msgstr "Zeichn" -#: flatcamGUI/FlatCAMGUI.py:4014 flatcamGUI/FlatCAMGUI.py:5036 +#: flatcamGUI/FlatCAMGUI.py:4021 flatcamGUI/FlatCAMGUI.py:5043 #: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:546 #: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1437 msgid "Plot (show) this object." msgstr "Plotten (zeigen) dieses Objekt." -#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:5043 -#: flatcamGUI/FlatCAMGUI.py:5438 +#: flatcamGUI/FlatCAMGUI.py:4026 flatcamGUI/FlatCAMGUI.py:5050 +#: flatcamGUI/FlatCAMGUI.py:5445 msgid "Circle Steps:" msgstr "Kreisschritte:" -#: flatcamGUI/FlatCAMGUI.py:4021 +#: flatcamGUI/FlatCAMGUI.py:4028 msgid "" "The number of circle steps for Gerber \n" "circular aperture linear approximation." @@ -6615,15 +6642,15 @@ msgstr "" "Die Anzahl der Kreisschritte für Gerber\n" "lineare Approximation mit kreisförmiger Apertur." -#: flatcamGUI/FlatCAMGUI.py:4036 +#: flatcamGUI/FlatCAMGUI.py:4043 msgid "Gerber Options" msgstr "Gerber-Optionen" -#: flatcamGUI/FlatCAMGUI.py:4040 flatcamGUI/ObjectUI.py:251 +#: flatcamGUI/FlatCAMGUI.py:4047 flatcamGUI/ObjectUI.py:251 msgid "Isolation Routing:" msgstr " Isolierungsrouting: " -#: flatcamGUI/FlatCAMGUI.py:4042 flatcamGUI/ObjectUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:4049 flatcamGUI/ObjectUI.py:253 msgid "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." @@ -6632,17 +6659,17 @@ msgstr "" "Werkzeugwege zum Schneiden von \n" "äußeren Polygonen." -#: flatcamGUI/FlatCAMGUI.py:4053 flatcamGUI/FlatCAMGUI.py:4753 -#: flatcamGUI/FlatCAMGUI.py:5726 flatcamGUI/ObjectUI.py:788 +#: flatcamGUI/FlatCAMGUI.py:4060 flatcamGUI/FlatCAMGUI.py:4760 +#: flatcamGUI/FlatCAMGUI.py:5733 flatcamGUI/ObjectUI.py:788 #: flatcamGUI/ObjectUI.py:804 msgid "Diameter of the cutting tool." msgstr "Durchmesser des Schneidewerkzeugs." -#: flatcamGUI/FlatCAMGUI.py:4060 +#: flatcamGUI/FlatCAMGUI.py:4067 msgid "Width (# passes):" msgstr "Breite (# passt):" -#: flatcamGUI/FlatCAMGUI.py:4062 flatcamGUI/ObjectUI.py:275 +#: flatcamGUI/FlatCAMGUI.py:4069 flatcamGUI/ObjectUI.py:275 msgid "" "Width of the isolation gap in\n" "number (integer) of tool widths." @@ -6650,11 +6677,11 @@ msgstr "" "Breite der Isolationslücke in\n" "Anzahl (Ganzzahl) der Werkzeugbreiten." -#: flatcamGUI/FlatCAMGUI.py:4070 flatcamGUI/ObjectUI.py:283 +#: flatcamGUI/FlatCAMGUI.py:4077 flatcamGUI/ObjectUI.py:283 msgid "Pass overlap:" msgstr "Passüberlappung:" -#: flatcamGUI/FlatCAMGUI.py:4072 flatcamGUI/ObjectUI.py:285 +#: flatcamGUI/FlatCAMGUI.py:4079 flatcamGUI/ObjectUI.py:285 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -6668,11 +6695,11 @@ msgstr "" "Ein Wert von 0,25 bedeutet hier eine Überlappung von 25% \n" "vom oben angegebenen Werkzeugdurchmesser." -#: flatcamGUI/FlatCAMGUI.py:4080 flatcamGUI/ObjectUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:4087 flatcamGUI/ObjectUI.py:295 msgid "Milling Type:" msgstr "Fräsart:" -#: flatcamGUI/FlatCAMGUI.py:4082 flatcamGUI/ObjectUI.py:297 +#: flatcamGUI/FlatCAMGUI.py:4089 flatcamGUI/ObjectUI.py:297 msgid "" "Milling type:\n" "- climb / best for precision milling and to reduce tool usage\n" @@ -6683,19 +6710,19 @@ msgstr "" "Werkzeugverbrauchs\n" "- konventionell / nützlich, wenn kein Spielausgleich vorliegt" -#: flatcamGUI/FlatCAMGUI.py:4092 +#: flatcamGUI/FlatCAMGUI.py:4099 msgid "Combine Passes" msgstr "Kombinieren Sie Pässe" -#: flatcamGUI/FlatCAMGUI.py:4094 flatcamGUI/ObjectUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/ObjectUI.py:309 msgid "Combine all passes into one object" msgstr "Kombinieren Sie alle Durchgänge in einem Objekt" -#: flatcamGUI/FlatCAMGUI.py:4099 +#: flatcamGUI/FlatCAMGUI.py:4106 msgid "Clear non-copper:" msgstr " Nicht-Kupfer löschen: " -#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/FlatCAMGUI.py:5614 +#: flatcamGUI/FlatCAMGUI.py:4108 flatcamGUI/FlatCAMGUI.py:5621 #: flatcamGUI/ObjectUI.py:386 msgid "" "Create a Geometry object with\n" @@ -6704,12 +6731,12 @@ msgstr "" "Erstellen Sie ein Geometrieobjekt mit\n" "Werkzeugwege, um alle Nicht-Kupfer-Bereiche zu schneiden." -#: flatcamGUI/FlatCAMGUI.py:4110 flatcamGUI/FlatCAMGUI.py:4136 +#: flatcamGUI/FlatCAMGUI.py:4117 flatcamGUI/FlatCAMGUI.py:4143 #: flatcamGUI/ObjectUI.py:430 flatcamGUI/ObjectUI.py:464 msgid "Boundary Margin:" msgstr "Grenzmarge:" -#: flatcamGUI/FlatCAMGUI.py:4112 flatcamGUI/ObjectUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:4119 flatcamGUI/ObjectUI.py:432 msgid "" "Specify the edge of the PCB\n" "by drawing a box around all\n" @@ -6721,11 +6748,11 @@ msgstr "" "Objekte mit diesem Minimum\n" "Entfernung." -#: flatcamGUI/FlatCAMGUI.py:4122 flatcamGUI/FlatCAMGUI.py:4145 +#: flatcamGUI/FlatCAMGUI.py:4129 flatcamGUI/FlatCAMGUI.py:4152 msgid "Rounded corners" msgstr "Abgerundete Ecken" -#: flatcamGUI/FlatCAMGUI.py:4124 +#: flatcamGUI/FlatCAMGUI.py:4131 msgid "" "Creates a Geometry objects with polygons\n" "covering the copper-free areas of the PCB." @@ -6733,11 +6760,11 @@ msgstr "" "Erzeugt ein Geometrieobjekt mit Polygonen\n" "bedeckt die kupferfreien Bereiche der Leiterplatte." -#: flatcamGUI/FlatCAMGUI.py:4130 flatcamGUI/ObjectUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:4137 flatcamGUI/ObjectUI.py:454 msgid "Bounding Box:" msgstr " Begrenzungsbox: " -#: flatcamGUI/FlatCAMGUI.py:4138 flatcamGUI/ObjectUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:4145 flatcamGUI/ObjectUI.py:466 msgid "" "Distance of the edges of the box\n" "to the nearest polygon." @@ -6745,7 +6772,7 @@ msgstr "" "Abstand der Kanten der Box\n" "zum nächsten Polygon." -#: flatcamGUI/FlatCAMGUI.py:4147 flatcamGUI/ObjectUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:4154 flatcamGUI/ObjectUI.py:476 msgid "" "If the bounding box is \n" "to have rounded corners\n" @@ -6757,15 +6784,15 @@ msgstr "" "ihr Radius ist gleich\n" "der Abstand." -#: flatcamGUI/FlatCAMGUI.py:4161 +#: flatcamGUI/FlatCAMGUI.py:4168 msgid "Gerber Adv. Options" msgstr "Erweiterte Optionen von Gerber" -#: flatcamGUI/FlatCAMGUI.py:4165 +#: flatcamGUI/FlatCAMGUI.py:4172 msgid "Advanced Param.:" msgstr "Erweiterte Parameter:" -#: flatcamGUI/FlatCAMGUI.py:4167 +#: flatcamGUI/FlatCAMGUI.py:4174 msgid "" "A list of Gerber advanced parameters.\n" "Those parameters are available only for\n" @@ -6775,11 +6802,11 @@ msgstr "" "Diese Parameter sind nur für verfügbar\n" "Fortgeschrittene Anwendungsebene." -#: flatcamGUI/FlatCAMGUI.py:4177 flatcamGUI/ObjectUI.py:314 +#: flatcamGUI/FlatCAMGUI.py:4184 flatcamGUI/ObjectUI.py:314 msgid "\"Follow\"" msgstr "\"Folgen\"" -#: flatcamGUI/FlatCAMGUI.py:4179 flatcamGUI/ObjectUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:4186 flatcamGUI/ObjectUI.py:316 msgid "" "Generate a 'Follow' geometry.\n" "This means that it will cut through\n" @@ -6789,11 +6816,11 @@ msgstr "" "Dies bedeutet, dass es durchschneiden wird\n" "die Mitte der Spur" -#: flatcamGUI/FlatCAMGUI.py:4187 +#: flatcamGUI/FlatCAMGUI.py:4194 msgid "Table Show/Hide" msgstr "Tabelle anzeigen / ausblenden" -#: flatcamGUI/FlatCAMGUI.py:4189 +#: flatcamGUI/FlatCAMGUI.py:4196 msgid "" "Toggle the display of the Gerber Apertures Table.\n" "Also, on hide, it will delete all mark shapes\n" @@ -6803,15 +6830,15 @@ msgstr "" "Beim Ausblenden werden auch alle Markierungsformen gelöscht\n" "das sind auf leinwand gezeichnet." -#: flatcamGUI/FlatCAMGUI.py:4228 +#: flatcamGUI/FlatCAMGUI.py:4235 msgid "Gerber Export" msgstr "Gerber Export" -#: flatcamGUI/FlatCAMGUI.py:4231 flatcamGUI/FlatCAMGUI.py:4902 +#: flatcamGUI/FlatCAMGUI.py:4238 flatcamGUI/FlatCAMGUI.py:4909 msgid "Export Options:" msgstr "Exportoptionen:" -#: flatcamGUI/FlatCAMGUI.py:4233 +#: flatcamGUI/FlatCAMGUI.py:4240 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Gerber menu entry." @@ -6819,19 +6846,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:4242 flatcamGUI/FlatCAMGUI.py:4913 +#: flatcamGUI/FlatCAMGUI.py:4249 flatcamGUI/FlatCAMGUI.py:4920 msgid "Units:" msgstr "Einheiten:" -#: flatcamGUI/FlatCAMGUI.py:4244 flatcamGUI/FlatCAMGUI.py:4250 +#: flatcamGUI/FlatCAMGUI.py:4251 flatcamGUI/FlatCAMGUI.py:4257 msgid "The units used in the Gerber file." msgstr "Die in der Gerber-Datei verwendeten Einheiten." -#: flatcamGUI/FlatCAMGUI.py:4256 flatcamGUI/FlatCAMGUI.py:4927 +#: flatcamGUI/FlatCAMGUI.py:4263 flatcamGUI/FlatCAMGUI.py:4934 msgid "Int/Decimals:" msgstr "Ganzzahl / Dezimalzahl:" -#: flatcamGUI/FlatCAMGUI.py:4258 +#: flatcamGUI/FlatCAMGUI.py:4265 msgid "" "The number of digits in the whole part of the number\n" "and in the fractional part of the number." @@ -6839,7 +6866,7 @@ msgstr "" "Die Anzahl der Ziffern im gesamten Teil der Nummer\n" "und im Bruchteil der Zahl." -#: flatcamGUI/FlatCAMGUI.py:4269 +#: flatcamGUI/FlatCAMGUI.py:4276 msgid "" "This numbers signify the number of digits in\n" "the whole part of Gerber coordinates." @@ -6847,7 +6874,7 @@ msgstr "" "Diese Zahlen geben die Anzahl der Ziffern in an\n" "der ganze Teil von Gerber koordiniert." -#: flatcamGUI/FlatCAMGUI.py:4283 +#: flatcamGUI/FlatCAMGUI.py:4290 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Gerber coordinates." @@ -6855,11 +6882,11 @@ msgstr "" "Diese Zahlen geben die Anzahl der Ziffern in an\n" "Der Dezimalteil der Gerber-Koordinaten." -#: flatcamGUI/FlatCAMGUI.py:4292 flatcamGUI/FlatCAMGUI.py:4988 +#: flatcamGUI/FlatCAMGUI.py:4299 flatcamGUI/FlatCAMGUI.py:4995 msgid "Zeros:" msgstr "Nullen:" -#: flatcamGUI/FlatCAMGUI.py:4295 flatcamGUI/FlatCAMGUI.py:4305 +#: flatcamGUI/FlatCAMGUI.py:4302 flatcamGUI/FlatCAMGUI.py:4312 msgid "" "This sets the type of Gerber zeros.\n" "If LZ then Leading Zeros are removed and\n" @@ -6873,23 +6900,23 @@ msgstr "" "Wenn TZ aktiviert ist, werden nachfolgende Nullen entfernt\n" "und führende Nullen werden beibehalten." -#: flatcamGUI/FlatCAMGUI.py:4325 flatcamGUI/FlatCAMGUI.py:5368 -#: flatcamGUI/FlatCAMGUI.py:5612 flatcamGUI/FlatCAMGUI.py:5713 -#: flatcamGUI/FlatCAMGUI.py:5792 flatcamGUI/FlatCAMGUI.py:5851 -#: flatcamGUI/FlatCAMGUI.py:5954 flatcamGUI/FlatCAMGUI.py:6015 -#: flatcamGUI/FlatCAMGUI.py:6214 flatcamGUI/FlatCAMGUI.py:6341 +#: 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 msgid "Parameters:" msgstr "Parameter:" -#: flatcamGUI/FlatCAMGUI.py:4327 +#: flatcamGUI/FlatCAMGUI.py:4334 msgid "A list of Gerber Editor parameters." msgstr "Eine Liste der Gerber-Editor-Parameter." -#: flatcamGUI/FlatCAMGUI.py:4335 flatcamGUI/FlatCAMGUI.py:5378 +#: flatcamGUI/FlatCAMGUI.py:4342 flatcamGUI/FlatCAMGUI.py:5385 msgid "Selection limit:" msgstr "Auswahllimit:" -#: flatcamGUI/FlatCAMGUI.py:4337 +#: flatcamGUI/FlatCAMGUI.py:4344 msgid "" "Set the number of selected Gerber geometry\n" "items above which the utility geometry\n" @@ -6903,15 +6930,15 @@ msgstr "" "Erhöht die Leistung beim Bewegen von a\n" "große Anzahl von geometrischen Elementen." -#: flatcamGUI/FlatCAMGUI.py:4357 +#: flatcamGUI/FlatCAMGUI.py:4364 msgid "Excellon General" msgstr "Excellon Allgemeines" -#: flatcamGUI/FlatCAMGUI.py:4379 +#: flatcamGUI/FlatCAMGUI.py:4386 msgid "Excellon Format:" msgstr "Excellon-Format:" -#: flatcamGUI/FlatCAMGUI.py:4381 +#: flatcamGUI/FlatCAMGUI.py:4388 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -6953,16 +6980,16 @@ msgstr "" "Sprint-Layout 2: 4 ZOLL LZ\n" "KiCAD 3: 5 ZOLL TZ" -#: flatcamGUI/FlatCAMGUI.py:4406 +#: flatcamGUI/FlatCAMGUI.py:4413 msgid "INCH:" msgstr "ZOLL:" -#: flatcamGUI/FlatCAMGUI.py:4409 +#: flatcamGUI/FlatCAMGUI.py:4416 msgid "Default values for INCH are 2:4" msgstr "Die Standardwerte für ZOLL sind 2: 4" -#: flatcamGUI/FlatCAMGUI.py:4417 flatcamGUI/FlatCAMGUI.py:4450 -#: flatcamGUI/FlatCAMGUI.py:4942 +#: flatcamGUI/FlatCAMGUI.py:4424 flatcamGUI/FlatCAMGUI.py:4457 +#: flatcamGUI/FlatCAMGUI.py:4949 msgid "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." @@ -6970,8 +6997,8 @@ msgstr "" "Diese Zahlen geben die Anzahl der Ziffern in an\n" "der gesamte Teil der Excellon-Koordinaten." -#: flatcamGUI/FlatCAMGUI.py:4431 flatcamGUI/FlatCAMGUI.py:4464 -#: flatcamGUI/FlatCAMGUI.py:4956 +#: flatcamGUI/FlatCAMGUI.py:4438 flatcamGUI/FlatCAMGUI.py:4471 +#: flatcamGUI/FlatCAMGUI.py:4963 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." @@ -6979,19 +7006,19 @@ msgstr "" "Diese Zahlen geben die Anzahl der Ziffern in an\n" "der Dezimalteil der Excellon-Koordinaten." -#: flatcamGUI/FlatCAMGUI.py:4439 +#: flatcamGUI/FlatCAMGUI.py:4446 msgid "METRIC:" msgstr "METRISCH:" -#: flatcamGUI/FlatCAMGUI.py:4442 +#: flatcamGUI/FlatCAMGUI.py:4449 msgid "Default values for METRIC are 3:3" msgstr "Die Standardwerte für METRISCH sind 3: 3" -#: flatcamGUI/FlatCAMGUI.py:4473 +#: flatcamGUI/FlatCAMGUI.py:4480 msgid "Default Zeros:" msgstr "Standard Nullen:" -#: flatcamGUI/FlatCAMGUI.py:4476 flatcamGUI/FlatCAMGUI.py:4991 +#: flatcamGUI/FlatCAMGUI.py:4483 flatcamGUI/FlatCAMGUI.py:4998 msgid "" "This sets the type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -7005,7 +7032,7 @@ msgstr "" "Wenn TZ aktiviert ist, werden nachfolgende Nullen beibehalten\n" "und führende Nullen werden entfernt." -#: flatcamGUI/FlatCAMGUI.py:4487 +#: flatcamGUI/FlatCAMGUI.py:4494 msgid "" "This sets the default type of Excellon zeros.\n" "If it is not detected in the parsed file the value here\n" @@ -7021,11 +7048,11 @@ msgstr "" "Wenn TZ aktiviert ist, werden nachfolgende Nullen beibehalten\n" "und führende Nullen werden entfernt." -#: flatcamGUI/FlatCAMGUI.py:4501 +#: flatcamGUI/FlatCAMGUI.py:4508 msgid "Default Units:" msgstr "Standard einheiten:" -#: flatcamGUI/FlatCAMGUI.py:4504 +#: flatcamGUI/FlatCAMGUI.py:4511 msgid "" "This sets the default units of Excellon files.\n" "If it is not detected in the parsed file the value here\n" @@ -7037,7 +7064,7 @@ msgstr "" "wird verwendet. Einige Excellon-Dateien haben keinen Header\n" "Daher wird dieser Parameter verwendet." -#: flatcamGUI/FlatCAMGUI.py:4515 +#: flatcamGUI/FlatCAMGUI.py:4522 msgid "" "This sets the units of Excellon files.\n" "Some Excellon files don't have an header\n" @@ -7047,15 +7074,15 @@ msgstr "" "Einige Excellon-Dateien haben keinen Header\n" "Daher wird dieser Parameter verwendet." -#: flatcamGUI/FlatCAMGUI.py:4531 +#: flatcamGUI/FlatCAMGUI.py:4538 msgid "Excellon Optimization:" msgstr "Optimierung der Excellons:" -#: flatcamGUI/FlatCAMGUI.py:4538 +#: flatcamGUI/FlatCAMGUI.py:4545 msgid "Algorithm: " msgstr "Algorithmus:" -#: flatcamGUI/FlatCAMGUI.py:4541 flatcamGUI/FlatCAMGUI.py:4554 +#: flatcamGUI/FlatCAMGUI.py:4548 flatcamGUI/FlatCAMGUI.py:4561 msgid "" "This sets the optimization type for the Excellon drill path.\n" "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" @@ -7079,11 +7106,11 @@ msgstr "" "Wenn DEAKTIVIERT, arbeitet FlatCAM im 32-Bit-Modus und verwendet es\n" "Traveling Salesman-Algorithmus zur Pfadoptimierung." -#: flatcamGUI/FlatCAMGUI.py:4566 +#: flatcamGUI/FlatCAMGUI.py:4573 msgid "Optimization Time: " msgstr "Optimierungszeit:" -#: flatcamGUI/FlatCAMGUI.py:4569 +#: flatcamGUI/FlatCAMGUI.py:4576 msgid "" "When OR-Tools Metaheuristic (MH) is enabled there is a\n" "maximum threshold for how much time is spent doing the\n" @@ -7095,15 +7122,15 @@ msgstr "" "Pfadoptimierung. Diese maximale Dauer wird hier eingestellt.\n" "In Sekunden." -#: flatcamGUI/FlatCAMGUI.py:4611 +#: flatcamGUI/FlatCAMGUI.py:4618 msgid "Excellon Options" msgstr "Excellon-Optionen" -#: flatcamGUI/FlatCAMGUI.py:4614 flatcamGUI/ObjectUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:4621 flatcamGUI/ObjectUI.py:584 msgid "Create CNC Job" msgstr "CNC-Job erstellen" -#: flatcamGUI/FlatCAMGUI.py:4616 +#: flatcamGUI/FlatCAMGUI.py:4623 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object." @@ -7111,13 +7138,13 @@ msgstr "" "Parameter, die zum Erstellen eines CNC-Auftragsobjekts verwendet werden\n" "für dieses Bohrobjekt." -#: flatcamGUI/FlatCAMGUI.py:4624 flatcamGUI/FlatCAMGUI.py:5094 -#: flatcamGUI/FlatCAMGUI.py:6150 flatcamGUI/ObjectUI.py:595 +#: flatcamGUI/FlatCAMGUI.py:4631 flatcamGUI/FlatCAMGUI.py:5101 +#: flatcamGUI/FlatCAMGUI.py:6157 flatcamGUI/ObjectUI.py:595 #: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolCalculators.py:108 msgid "Cut Z:" msgstr "Schnitt Z:" -#: flatcamGUI/FlatCAMGUI.py:4626 flatcamGUI/ObjectUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/ObjectUI.py:597 msgid "" "Drill depth (negative)\n" "below the copper surface." @@ -7125,12 +7152,12 @@ msgstr "" "Bohrtiefe (negativ)\n" "unter der Kupferoberfläche." -#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/FlatCAMGUI.py:5127 +#: flatcamGUI/FlatCAMGUI.py:4640 flatcamGUI/FlatCAMGUI.py:5134 #: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1098 msgid "Travel Z:" msgstr "Reise Z:" -#: flatcamGUI/FlatCAMGUI.py:4635 flatcamGUI/ObjectUI.py:607 +#: flatcamGUI/FlatCAMGUI.py:4642 flatcamGUI/ObjectUI.py:607 msgid "" "Tool height when travelling\n" "across the XY plane." @@ -7138,11 +7165,11 @@ msgstr "" "Werkzeughöhe auf Reisen\n" "über die XY-Ebene." -#: flatcamGUI/FlatCAMGUI.py:4643 flatcamGUI/FlatCAMGUI.py:5137 +#: flatcamGUI/FlatCAMGUI.py:4650 flatcamGUI/FlatCAMGUI.py:5144 msgid "Tool change:" msgstr "Werkzeugwechsel:" -#: flatcamGUI/FlatCAMGUI.py:4645 flatcamGUI/FlatCAMGUI.py:5139 +#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5146 #: flatcamGUI/ObjectUI.py:617 msgid "" "Include tool-change sequence\n" @@ -7151,19 +7178,19 @@ msgstr "" "Werkzeugwechselfolge einbeziehen\n" "im G-Code (Pause für Werkzeugwechsel)." -#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5147 +#: flatcamGUI/FlatCAMGUI.py:4659 flatcamGUI/FlatCAMGUI.py:5154 msgid "Toolchange Z:" msgstr "Werkzeugwechsel Z:" -#: flatcamGUI/FlatCAMGUI.py:4654 flatcamGUI/FlatCAMGUI.py:5149 +#: flatcamGUI/FlatCAMGUI.py:4661 flatcamGUI/FlatCAMGUI.py:5156 msgid "Toolchange Z position." msgstr "Toolchange Z position." -#: flatcamGUI/FlatCAMGUI.py:4660 +#: flatcamGUI/FlatCAMGUI.py:4667 msgid "Feedrate:" msgstr "Vorschubgeschwindigkeit:" -#: flatcamGUI/FlatCAMGUI.py:4662 +#: flatcamGUI/FlatCAMGUI.py:4669 msgid "" "Tool speed while drilling\n" "(in units per minute)." @@ -7171,11 +7198,11 @@ msgstr "" "Werkzeuggeschwindigkeit beim Bohren\n" "(in Einheiten pro Minute)." -#: flatcamGUI/FlatCAMGUI.py:4670 +#: flatcamGUI/FlatCAMGUI.py:4677 msgid "Spindle Speed:" msgstr "Spulengeschwindigkeit:" -#: flatcamGUI/FlatCAMGUI.py:4672 flatcamGUI/FlatCAMGUI.py:5179 +#: flatcamGUI/FlatCAMGUI.py:4679 flatcamGUI/FlatCAMGUI.py:5186 #: flatcamGUI/ObjectUI.py:684 msgid "" "Speed of the spindle\n" @@ -7184,11 +7211,11 @@ msgstr "" "Geschwindigkeit der Spindel\n" "in RPM (optional)" -#: flatcamGUI/FlatCAMGUI.py:4680 flatcamGUI/FlatCAMGUI.py:5187 +#: flatcamGUI/FlatCAMGUI.py:4687 flatcamGUI/FlatCAMGUI.py:5194 msgid "Spindle dir.:" msgstr "Spindelrichtung:" -#: flatcamGUI/FlatCAMGUI.py:4682 flatcamGUI/FlatCAMGUI.py:5189 +#: flatcamGUI/FlatCAMGUI.py:4689 flatcamGUI/FlatCAMGUI.py:5196 msgid "" "This sets the direction that the spindle is rotating.\n" "It can be either:\n" @@ -7200,12 +7227,12 @@ msgstr "" "- CW = im Uhrzeigersinn oder\n" "- CCW = gegen den Uhrzeigersinn" -#: flatcamGUI/FlatCAMGUI.py:4694 flatcamGUI/FlatCAMGUI.py:5201 +#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 #: flatcamGUI/ObjectUI.py:692 flatcamGUI/ObjectUI.py:1224 msgid "Dwell:" msgstr "Wohnen:" -#: flatcamGUI/FlatCAMGUI.py:4696 flatcamGUI/FlatCAMGUI.py:5203 +#: flatcamGUI/FlatCAMGUI.py:4703 flatcamGUI/FlatCAMGUI.py:5210 #: flatcamGUI/ObjectUI.py:694 flatcamGUI/ObjectUI.py:1227 msgid "" "Pause to allow the spindle to reach its\n" @@ -7214,21 +7241,21 @@ msgstr "" "Pause, damit die Spindel ihre erreichen kann\n" "Geschwindigkeit vor dem Schneiden." -#: flatcamGUI/FlatCAMGUI.py:4699 flatcamGUI/FlatCAMGUI.py:5206 +#: flatcamGUI/FlatCAMGUI.py:4706 flatcamGUI/FlatCAMGUI.py:5213 msgid "Duration:" msgstr "Dauer:" -#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 +#: flatcamGUI/FlatCAMGUI.py:4708 flatcamGUI/FlatCAMGUI.py:5215 #: 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:4713 flatcamGUI/FlatCAMGUI.py:5218 +#: flatcamGUI/FlatCAMGUI.py:4720 flatcamGUI/FlatCAMGUI.py:5225 #: flatcamGUI/ObjectUI.py:707 msgid "Postprocessor:" msgstr "Postprozessor:" -#: flatcamGUI/FlatCAMGUI.py:4715 +#: flatcamGUI/FlatCAMGUI.py:4722 msgid "" "The postprocessor file that dictates\n" "gcode output." @@ -7236,11 +7263,11 @@ msgstr "" "Die Postprozessor-Datei, die diktiert\n" "gcode ausgabe." -#: flatcamGUI/FlatCAMGUI.py:4725 +#: flatcamGUI/FlatCAMGUI.py:4732 msgid "Gcode: " msgstr "Gcode:" -#: flatcamGUI/FlatCAMGUI.py:4727 +#: flatcamGUI/FlatCAMGUI.py:4734 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -7253,23 +7280,23 @@ msgstr "" "angezeigt\n" "in Bohrer umgewandelt." -#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:772 +#: flatcamGUI/FlatCAMGUI.py:4750 flatcamGUI/ObjectUI.py:772 msgid "Mill Holes" msgstr " Löcher bohren " -#: flatcamGUI/FlatCAMGUI.py:4745 flatcamGUI/ObjectUI.py:774 +#: flatcamGUI/FlatCAMGUI.py:4752 flatcamGUI/ObjectUI.py:774 msgid "Create Geometry for milling holes." msgstr "Erstellen Sie Geometrie zum Fräsen von Löchern." -#: flatcamGUI/FlatCAMGUI.py:4751 +#: flatcamGUI/FlatCAMGUI.py:4758 msgid "Drill Tool dia:" msgstr "Bohrwerkzeug Durchmesser:" -#: flatcamGUI/FlatCAMGUI.py:4758 +#: flatcamGUI/FlatCAMGUI.py:4765 msgid "Slot Tool dia:" msgstr "Schlitzwerkzeug Durchmesser:" -#: flatcamGUI/FlatCAMGUI.py:4760 +#: flatcamGUI/FlatCAMGUI.py:4767 msgid "" "Diameter of the cutting tool\n" "when milling slots." @@ -7277,19 +7304,19 @@ msgstr "" "Durchmesser des Schneidewerkzeugs\n" "beim Fräsen von Schlitzen." -#: flatcamGUI/FlatCAMGUI.py:4772 +#: flatcamGUI/FlatCAMGUI.py:4779 msgid "Defaults" msgstr "Standardwerte" -#: flatcamGUI/FlatCAMGUI.py:4785 +#: flatcamGUI/FlatCAMGUI.py:4792 msgid "Excellon Adv. Options" msgstr "Excellon erweiterte Optionen" -#: flatcamGUI/FlatCAMGUI.py:4791 flatcamGUI/FlatCAMGUI.py:5241 +#: flatcamGUI/FlatCAMGUI.py:4798 flatcamGUI/FlatCAMGUI.py:5248 msgid "Advanced Options:" msgstr "Erweiterte Optionen:" -#: flatcamGUI/FlatCAMGUI.py:4793 +#: flatcamGUI/FlatCAMGUI.py:4800 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object that are shown when App Level is Advanced." @@ -7298,11 +7325,11 @@ msgstr "" "für dieses Drill-Objekt, das angezeigt wird, wenn die App-Ebene Erweitert " "ist." -#: flatcamGUI/FlatCAMGUI.py:4801 +#: flatcamGUI/FlatCAMGUI.py:4808 msgid "Offset Z:" msgstr "Versatz Z:" -#: flatcamGUI/FlatCAMGUI.py:4803 flatcamGUI/ObjectUI.py:574 +#: flatcamGUI/FlatCAMGUI.py:4810 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" @@ -7313,20 +7340,20 @@ msgstr "" "erzeugen.\n" "Der Wert hier kann den Parameter Cut Z ausgleichen." -#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/FlatCAMGUI.py:5252 +#: flatcamGUI/FlatCAMGUI.py:4817 flatcamGUI/FlatCAMGUI.py:5259 msgid "Toolchange X,Y:" msgstr "Werkzeugwechsel X, Y:" -#: flatcamGUI/FlatCAMGUI.py:4812 flatcamGUI/FlatCAMGUI.py:5254 +#: flatcamGUI/FlatCAMGUI.py:4819 flatcamGUI/FlatCAMGUI.py:5261 msgid "Toolchange X,Y position." msgstr "Werkzeugwechsel X, Y Position." -#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5261 +#: flatcamGUI/FlatCAMGUI.py:4825 flatcamGUI/FlatCAMGUI.py:5268 #: flatcamGUI/ObjectUI.py:634 msgid "Start move Z:" msgstr "Startbewegung Z:" -#: flatcamGUI/FlatCAMGUI.py:4820 +#: flatcamGUI/FlatCAMGUI.py:4827 msgid "" "Height of the tool just after start.\n" "Delete the value if you don't need this feature." @@ -7334,12 +7361,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:4827 flatcamGUI/FlatCAMGUI.py:5271 +#: flatcamGUI/FlatCAMGUI.py:4834 flatcamGUI/FlatCAMGUI.py:5278 #: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1144 msgid "End move Z:" msgstr "Bewegung beenden Z:" -#: flatcamGUI/FlatCAMGUI.py:4829 flatcamGUI/FlatCAMGUI.py:5273 +#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5280 msgid "" "Height of the tool after\n" "the last move at the end of the job." @@ -7347,12 +7374,12 @@ msgstr "" "Höhe des Werkzeugs nach\n" "die letzte Bewegung am Ende des Jobs." -#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5281 +#: flatcamGUI/FlatCAMGUI.py:4843 flatcamGUI/FlatCAMGUI.py:5288 #: flatcamGUI/ObjectUI.py:665 msgid "Feedrate Rapids:" msgstr "Vorschubgeschwindigkeit:" -#: flatcamGUI/FlatCAMGUI.py:4838 flatcamGUI/ObjectUI.py:667 +#: flatcamGUI/FlatCAMGUI.py:4845 flatcamGUI/ObjectUI.py:667 msgid "" "Tool speed while drilling\n" "(in units per minute).\n" @@ -7366,12 +7393,12 @@ msgstr "" "Es ist nur für Marlin nützlich,\n" "für andere Fälle ignorieren." -#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5305 +#: flatcamGUI/FlatCAMGUI.py:4856 flatcamGUI/FlatCAMGUI.py:5312 #: flatcamGUI/ObjectUI.py:718 flatcamGUI/ObjectUI.py:1256 msgid "Probe Z depth:" msgstr "Sonde Z Tiefe:" -#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5307 +#: flatcamGUI/FlatCAMGUI.py:4858 flatcamGUI/FlatCAMGUI.py:5314 #: flatcamGUI/ObjectUI.py:720 flatcamGUI/ObjectUI.py:1259 msgid "" "The maximum depth that the probe is allowed\n" @@ -7380,21 +7407,21 @@ msgstr "" "Die maximale Tiefe, in der die Sonde zulässig ist\n" "zu untersuchen. Negativer Wert in aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:4859 flatcamGUI/FlatCAMGUI.py:5315 +#: flatcamGUI/FlatCAMGUI.py:4866 flatcamGUI/FlatCAMGUI.py:5322 #: flatcamGUI/ObjectUI.py:730 flatcamGUI/ObjectUI.py:1270 msgid "Feedrate Probe:" msgstr "Vorschubsonde:" -#: flatcamGUI/FlatCAMGUI.py:4861 flatcamGUI/FlatCAMGUI.py:5317 +#: flatcamGUI/FlatCAMGUI.py:4868 flatcamGUI/FlatCAMGUI.py:5324 #: 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:4867 flatcamGUI/FlatCAMGUI.py:5324 +#: flatcamGUI/FlatCAMGUI.py:4874 flatcamGUI/FlatCAMGUI.py:5331 msgid "Fast Plunge:" msgstr "Schneller Sprung:" -#: flatcamGUI/FlatCAMGUI.py:4869 flatcamGUI/FlatCAMGUI.py:5326 +#: flatcamGUI/FlatCAMGUI.py:4876 flatcamGUI/FlatCAMGUI.py:5333 msgid "" "By checking this, the vertical move from\n" "Z_Toolchange to Z_move is done with G0,\n" @@ -7406,11 +7433,11 @@ msgstr "" "Das bedeutet die schnellste verfügbare Geschwindigkeit.\n" "WARNUNG: Die Verschiebung erfolgt bei Toolchange X, Y-Koordinaten." -#: flatcamGUI/FlatCAMGUI.py:4878 +#: flatcamGUI/FlatCAMGUI.py:4885 msgid "Fast Retract:" msgstr "Schneller Rückzug:" -#: flatcamGUI/FlatCAMGUI.py:4880 +#: flatcamGUI/FlatCAMGUI.py:4887 msgid "" "Exit hole strategy.\n" " - When uncheked, while exiting the drilled hole the drill bit\n" @@ -7426,11 +7453,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:4899 +#: flatcamGUI/FlatCAMGUI.py:4906 msgid "Excellon Export" msgstr "Excellon Export" -#: flatcamGUI/FlatCAMGUI.py:4904 +#: flatcamGUI/FlatCAMGUI.py:4911 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Excellon menu entry." @@ -7439,11 +7466,11 @@ msgstr "" "bei Verwendung des Menüeintrags Datei -> Exportieren -> Exportieren von " "Excellon." -#: flatcamGUI/FlatCAMGUI.py:4915 flatcamGUI/FlatCAMGUI.py:4921 +#: flatcamGUI/FlatCAMGUI.py:4922 flatcamGUI/FlatCAMGUI.py:4928 msgid "The units used in the Excellon file." msgstr "Die in der Excellon-Datei verwendeten Einheiten." -#: flatcamGUI/FlatCAMGUI.py:4929 +#: flatcamGUI/FlatCAMGUI.py:4936 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -7455,11 +7482,11 @@ msgstr "" "Hier legen wir das verwendete Format fest\n" "Koordinaten verwenden keine Periode." -#: flatcamGUI/FlatCAMGUI.py:4965 +#: flatcamGUI/FlatCAMGUI.py:4972 msgid "Format:" msgstr "Format:" -#: flatcamGUI/FlatCAMGUI.py:4967 flatcamGUI/FlatCAMGUI.py:4977 +#: flatcamGUI/FlatCAMGUI.py:4974 flatcamGUI/FlatCAMGUI.py:4984 msgid "" "Select the kind of coordinates format used.\n" "Coordinates can be saved with decimal point or without.\n" @@ -7476,7 +7503,7 @@ msgstr "" "Es muss auch angegeben werden, wenn LZ = führende Nullen beibehalten werden\n" "oder TZ = nachfolgende Nullen bleiben erhalten." -#: flatcamGUI/FlatCAMGUI.py:5001 +#: flatcamGUI/FlatCAMGUI.py:5008 msgid "" "This sets the default type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -7490,11 +7517,11 @@ msgstr "" "Wenn TZ aktiviert ist, werden nachfolgende Nullen beibehalten\n" "und führende Nullen werden entfernt." -#: flatcamGUI/FlatCAMGUI.py:5027 +#: flatcamGUI/FlatCAMGUI.py:5034 msgid "Geometry General" msgstr "Geometrie Allgemein" -#: flatcamGUI/FlatCAMGUI.py:5045 +#: flatcamGUI/FlatCAMGUI.py:5052 msgid "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." @@ -7502,15 +7529,15 @@ msgstr "" "Die Anzahl der Kreisschritte für die Geometrie\n" "Kreis- und Bogenformen lineare Annäherung." -#: flatcamGUI/FlatCAMGUI.py:5053 +#: flatcamGUI/FlatCAMGUI.py:5060 msgid "Tools" msgstr "Werkzeuge" -#: flatcamGUI/FlatCAMGUI.py:5060 +#: flatcamGUI/FlatCAMGUI.py:5067 msgid "Tool dia: " msgstr "Werkzeugdurchmesser:" -#: flatcamGUI/FlatCAMGUI.py:5062 +#: flatcamGUI/FlatCAMGUI.py:5069 msgid "" "The diameter of the cutting\n" "tool.." @@ -7518,15 +7545,15 @@ msgstr "" "Der Durchmesser des Schnitts\n" "Werkzeug.." -#: flatcamGUI/FlatCAMGUI.py:5077 +#: flatcamGUI/FlatCAMGUI.py:5084 msgid "Geometry Options" msgstr "Geometrieoptionen" -#: flatcamGUI/FlatCAMGUI.py:5082 +#: flatcamGUI/FlatCAMGUI.py:5089 msgid "Create CNC Job:" msgstr "CNC-Auftrag erstellen:" -#: flatcamGUI/FlatCAMGUI.py:5084 +#: flatcamGUI/FlatCAMGUI.py:5091 msgid "" "Create a CNC Job object\n" "tracing the contours of this\n" @@ -7536,7 +7563,7 @@ msgstr "" "die Konturen davon nachzeichnen\n" "Geometrieobjekt." -#: flatcamGUI/FlatCAMGUI.py:5096 flatcamGUI/ObjectUI.py:1065 +#: flatcamGUI/FlatCAMGUI.py:5103 flatcamGUI/ObjectUI.py:1065 msgid "" "Cutting depth (negative)\n" "below the copper surface." @@ -7544,19 +7571,19 @@ msgstr "" "Schnitttiefe (negativ)\n" "unter der Kupferoberfläche." -#: flatcamGUI/FlatCAMGUI.py:5104 +#: flatcamGUI/FlatCAMGUI.py:5111 msgid "Multidepth" msgstr "Mehrere tiefe" -#: flatcamGUI/FlatCAMGUI.py:5106 +#: flatcamGUI/FlatCAMGUI.py:5113 msgid "Multidepth usage: True or False." msgstr "Mehrere Tiefe-Nutzung: Richtig oder Falsch." -#: flatcamGUI/FlatCAMGUI.py:5111 +#: flatcamGUI/FlatCAMGUI.py:5118 msgid "Depth/Pass:" msgstr "Tiefe / Pass:" -#: flatcamGUI/FlatCAMGUI.py:5113 +#: flatcamGUI/FlatCAMGUI.py:5120 msgid "" "The depth to cut on each pass,\n" "when multidepth is enabled.\n" @@ -7570,7 +7597,7 @@ msgstr "" "es ist ein Bruch aus der Tiefe\n" "was einen negativen Wert hat." -#: flatcamGUI/FlatCAMGUI.py:5129 flatcamGUI/ObjectUI.py:1101 +#: flatcamGUI/FlatCAMGUI.py:5136 flatcamGUI/ObjectUI.py:1101 msgid "" "Height of the tool when\n" "moving without cutting." @@ -7578,11 +7605,11 @@ msgstr "" "Höhe des Werkzeugs, wenn\n" "bewegen ohne zu schneiden" -#: flatcamGUI/FlatCAMGUI.py:5156 flatcamGUI/ObjectUI.py:1156 +#: flatcamGUI/FlatCAMGUI.py:5163 flatcamGUI/ObjectUI.py:1156 msgid "Feed Rate X-Y:" msgstr "Vorschubrate X-Y:" -#: flatcamGUI/FlatCAMGUI.py:5158 flatcamGUI/ObjectUI.py:1159 +#: flatcamGUI/FlatCAMGUI.py:5165 flatcamGUI/ObjectUI.py:1159 msgid "" "Cutting speed in the XY\n" "plane in units per minute" @@ -7590,11 +7617,11 @@ msgstr "" "Schnittgeschwindigkeit im XY\n" "Flugzeug in Einheiten pro Minute" -#: flatcamGUI/FlatCAMGUI.py:5166 +#: flatcamGUI/FlatCAMGUI.py:5173 msgid "Feed Rate Z:" msgstr "Vorschubrate Z:" -#: flatcamGUI/FlatCAMGUI.py:5168 +#: flatcamGUI/FlatCAMGUI.py:5175 msgid "" "Cutting speed in the XY\n" "plane in units per minute.\n" @@ -7604,12 +7631,12 @@ msgstr "" "Flugzeug in Einheiten pro Minute.\n" "Es heißt auch Sturz." -#: flatcamGUI/FlatCAMGUI.py:5177 flatcamGUI/ObjectUI.py:682 +#: flatcamGUI/FlatCAMGUI.py:5184 flatcamGUI/ObjectUI.py:682 #: flatcamGUI/ObjectUI.py:1211 msgid "Spindle speed:" msgstr "Spulengeschwindigkeit:" -#: flatcamGUI/FlatCAMGUI.py:5220 +#: flatcamGUI/FlatCAMGUI.py:5227 msgid "" "The postprocessor file that dictates\n" "Machine Code output." @@ -7617,11 +7644,11 @@ msgstr "" "Die Postprozessor-Datei, die diktiert\n" "Maschinencode-Ausgabe." -#: flatcamGUI/FlatCAMGUI.py:5236 +#: flatcamGUI/FlatCAMGUI.py:5243 msgid "Geometry Adv. Options" msgstr "Geometrie Erw. Optionen" -#: flatcamGUI/FlatCAMGUI.py:5243 +#: flatcamGUI/FlatCAMGUI.py:5250 msgid "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." @@ -7629,7 +7656,7 @@ msgstr "" "Parameter zum Erstellen eines CNC-Auftragsobjekts\n" "Verfolgung der Konturen eines Geometrieobjekts." -#: flatcamGUI/FlatCAMGUI.py:5263 +#: flatcamGUI/FlatCAMGUI.py:5270 msgid "" "Height of the tool just after starting the work.\n" "Delete the value if you don't need this feature." @@ -7637,7 +7664,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:5283 +#: flatcamGUI/FlatCAMGUI.py:5290 msgid "" "Cutting speed in the XY plane\n" "(in units per minute).\n" @@ -7651,11 +7678,11 @@ msgstr "" "Es ist nur für Marlin nützlich,\n" "für andere Fälle ignorieren." -#: flatcamGUI/FlatCAMGUI.py:5295 +#: flatcamGUI/FlatCAMGUI.py:5302 msgid "Re-cut 1st pt." msgstr "1. Punkt erneut schneiden" -#: flatcamGUI/FlatCAMGUI.py:5297 flatcamGUI/ObjectUI.py:1202 +#: flatcamGUI/FlatCAMGUI.py:5304 flatcamGUI/ObjectUI.py:1202 msgid "" "In order to remove possible\n" "copper leftovers where first cut\n" @@ -7667,11 +7694,11 @@ msgstr "" "Beim letzten Schnitt treffen wir einen\n" "verlängerter Schnitt über dem ersten Schnittabschnitt." -#: flatcamGUI/FlatCAMGUI.py:5336 +#: flatcamGUI/FlatCAMGUI.py:5343 msgid "Seg. X size:" msgstr "Seg. X Größe:" -#: flatcamGUI/FlatCAMGUI.py:5338 +#: flatcamGUI/FlatCAMGUI.py:5345 msgid "" "The size of the trace segment on the X axis.\n" "Useful for auto-leveling.\n" @@ -7681,11 +7708,11 @@ msgstr "" "Nützlich für die automatische Nivellierung.\n" "Ein Wert von 0 bedeutet keine Segmentierung auf der X-Achse." -#: flatcamGUI/FlatCAMGUI.py:5347 +#: flatcamGUI/FlatCAMGUI.py:5354 msgid "Seg. Y size:" msgstr "Seg. Y Größe:" -#: flatcamGUI/FlatCAMGUI.py:5349 +#: flatcamGUI/FlatCAMGUI.py:5356 msgid "" "The size of the trace segment on the Y axis.\n" "Useful for auto-leveling.\n" @@ -7695,15 +7722,15 @@ msgstr "" "Nützlich für die automatische Nivellierung.\n" "Ein Wert von 0 bedeutet keine Segmentierung auf der Y-Achse." -#: flatcamGUI/FlatCAMGUI.py:5365 +#: flatcamGUI/FlatCAMGUI.py:5372 msgid "Geometry Editor" msgstr "Geo-Editor" -#: flatcamGUI/FlatCAMGUI.py:5370 +#: flatcamGUI/FlatCAMGUI.py:5377 msgid "A list of Geometry Editor parameters." msgstr "Eine Liste der Geometry Editor-Parameter." -#: flatcamGUI/FlatCAMGUI.py:5380 +#: flatcamGUI/FlatCAMGUI.py:5387 msgid "" "Set the number of selected geometry\n" "items above which the utility geometry\n" @@ -7717,20 +7744,20 @@ msgstr "" "Erhöht die Leistung beim Bewegen von a\n" "große Anzahl von geometrischen Elementen." -#: flatcamGUI/FlatCAMGUI.py:5399 +#: flatcamGUI/FlatCAMGUI.py:5406 msgid "CNC Job General" msgstr "CNC-Job Allgemein" -#: flatcamGUI/FlatCAMGUI.py:5412 flatcamGUI/ObjectUI.py:544 +#: flatcamGUI/FlatCAMGUI.py:5419 flatcamGUI/ObjectUI.py:544 #: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1434 msgid "Plot Object" msgstr "Plotobjekt" -#: flatcamGUI/FlatCAMGUI.py:5419 +#: flatcamGUI/FlatCAMGUI.py:5426 msgid "Plot kind:" msgstr "Darstellungsart:" -#: flatcamGUI/FlatCAMGUI.py:5421 flatcamGUI/ObjectUI.py:1356 +#: flatcamGUI/FlatCAMGUI.py:5428 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" @@ -7743,7 +7770,7 @@ 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:5440 +#: flatcamGUI/FlatCAMGUI.py:5447 msgid "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." @@ -7751,7 +7778,7 @@ msgstr "" "Die Anzahl der Kreisschritte für GCode\n" "Kreis- und Bogenformen lineare Annäherung." -#: flatcamGUI/FlatCAMGUI.py:5450 +#: flatcamGUI/FlatCAMGUI.py:5457 msgid "" "Diameter of the tool to be\n" "rendered in the plot." @@ -7759,11 +7786,11 @@ msgstr "" "Durchmesser des Werkzeugs sein\n" "in der Handlung gerendert." -#: flatcamGUI/FlatCAMGUI.py:5458 +#: flatcamGUI/FlatCAMGUI.py:5465 msgid "Coords dec.:" msgstr "Koordinate Dezimalzahlen:" -#: flatcamGUI/FlatCAMGUI.py:5460 +#: flatcamGUI/FlatCAMGUI.py:5467 msgid "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" @@ -7771,11 +7798,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:5468 +#: flatcamGUI/FlatCAMGUI.py:5475 msgid "Feedrate dec.:" msgstr "Vorschub-Nachkommastellen:" -#: flatcamGUI/FlatCAMGUI.py:5470 +#: flatcamGUI/FlatCAMGUI.py:5477 msgid "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" @@ -7783,15 +7810,15 @@ msgstr "" "Die Anzahl der Dezimalstellen, für die verwendet werden soll\n" "der Vorschubparameter im CNC-Code (GCODE usw.)" -#: flatcamGUI/FlatCAMGUI.py:5485 +#: flatcamGUI/FlatCAMGUI.py:5492 msgid "CNC Job Options" msgstr "CNC-Auftragsoptionen" -#: flatcamGUI/FlatCAMGUI.py:5488 flatcamGUI/FlatCAMGUI.py:5529 +#: flatcamGUI/FlatCAMGUI.py:5495 flatcamGUI/FlatCAMGUI.py:5536 msgid "Export G-Code:" msgstr "G-Code exportieren:" -#: flatcamGUI/FlatCAMGUI.py:5490 flatcamGUI/FlatCAMGUI.py:5531 +#: flatcamGUI/FlatCAMGUI.py:5497 flatcamGUI/FlatCAMGUI.py:5538 #: flatcamGUI/ObjectUI.py:1470 msgid "" "Export and save G-Code to\n" @@ -7800,11 +7827,11 @@ msgstr "" "Exportieren und speichern Sie den G-Code nach\n" "Machen Sie dieses Objekt in eine Datei." -#: flatcamGUI/FlatCAMGUI.py:5496 +#: flatcamGUI/FlatCAMGUI.py:5503 msgid "Prepend to G-Code:" msgstr "Voranstellen an G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5498 +#: flatcamGUI/FlatCAMGUI.py:5505 msgid "" "Type here any G-Code commands you would\n" "like to add at the beginning of the G-Code file." @@ -7812,11 +7839,11 @@ msgstr "" "Geben Sie hier alle G-Code-Befehle ein\n" "gerne am Anfang der G-Code-Datei hinzufügen." -#: flatcamGUI/FlatCAMGUI.py:5507 +#: flatcamGUI/FlatCAMGUI.py:5514 msgid "Append to G-Code:" msgstr "An G-Code anhängen:" -#: flatcamGUI/FlatCAMGUI.py:5509 flatcamGUI/ObjectUI.py:1492 +#: flatcamGUI/FlatCAMGUI.py:5516 flatcamGUI/ObjectUI.py:1492 msgid "" "Type here any G-Code commands you would\n" "like to append to the generated file.\n" @@ -7826,15 +7853,15 @@ msgstr "" "gerne an die generierte Datei anhängen.\n" "I.e .: M2 (Programmende)" -#: flatcamGUI/FlatCAMGUI.py:5526 +#: flatcamGUI/FlatCAMGUI.py:5533 msgid "CNC Job Adv. Options" msgstr "Erw. CNC-Joboptionen" -#: flatcamGUI/FlatCAMGUI.py:5537 flatcamGUI/ObjectUI.py:1510 +#: flatcamGUI/FlatCAMGUI.py:5544 flatcamGUI/ObjectUI.py:1510 msgid "Toolchange G-Code:" msgstr "Werkzeugwechsel G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5539 +#: flatcamGUI/FlatCAMGUI.py:5546 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -7846,11 +7873,11 @@ msgstr "" "Dies stellt einen benutzerdefinierten Werkzeugwechsel-GCode dar.\n" "oder ein Werkzeugwechsel-Makro." -#: flatcamGUI/FlatCAMGUI.py:5553 flatcamGUI/ObjectUI.py:1532 +#: flatcamGUI/FlatCAMGUI.py:5560 flatcamGUI/ObjectUI.py:1532 msgid "Use Toolchange Macro" msgstr "Benutze das Werkzeugwechselmakro" -#: flatcamGUI/FlatCAMGUI.py:5555 flatcamGUI/ObjectUI.py:1535 +#: flatcamGUI/FlatCAMGUI.py:5562 flatcamGUI/ObjectUI.py:1535 msgid "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." @@ -7858,7 +7885,7 @@ msgstr "" "Aktivieren Sie dieses Kontrollkästchen, wenn Sie verwenden möchten\n" "ein benutzerdefiniertes Werkzeug ändert GCode (Makro)." -#: flatcamGUI/FlatCAMGUI.py:5567 flatcamGUI/ObjectUI.py:1544 +#: flatcamGUI/FlatCAMGUI.py:5574 flatcamGUI/ObjectUI.py:1544 msgid "" "A list of the FlatCAM variables that can be used\n" "in the Toolchange event.\n" @@ -7868,73 +7895,73 @@ msgstr "" "im Werkzeugwechselereignis.\n" "Sie müssen mit dem \"%\" -Symbol umgeben sein" -#: flatcamGUI/FlatCAMGUI.py:5574 flatcamGUI/ObjectUI.py:1551 +#: flatcamGUI/FlatCAMGUI.py:5581 flatcamGUI/ObjectUI.py:1551 msgid "Parameters" msgstr "Parameters" -#: flatcamGUI/FlatCAMGUI.py:5577 flatcamGUI/ObjectUI.py:1554 +#: flatcamGUI/FlatCAMGUI.py:5584 flatcamGUI/ObjectUI.py:1554 msgid "FlatCAM CNC parameters" msgstr "FlatCAM CNC-Parameter" -#: flatcamGUI/FlatCAMGUI.py:5578 flatcamGUI/ObjectUI.py:1555 +#: flatcamGUI/FlatCAMGUI.py:5585 flatcamGUI/ObjectUI.py:1555 msgid "tool = tool number" msgstr "tool = Werkzeugnummer" -#: flatcamGUI/FlatCAMGUI.py:5579 flatcamGUI/ObjectUI.py:1556 +#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1556 msgid "tooldia = tool diameter" msgstr "tooldia = Werkzeugdurchmesser" -#: flatcamGUI/FlatCAMGUI.py:5580 flatcamGUI/ObjectUI.py:1557 +#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1557 msgid "t_drills = for Excellon, total number of drills" msgstr "t_drills = für Excellon die Gesamtzahl der Bohrer" -#: flatcamGUI/FlatCAMGUI.py:5581 flatcamGUI/ObjectUI.py:1558 +#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1558 msgid "x_toolchange = X coord for Toolchange" msgstr "x_toolchange = X-Koord für Werkzeugwechsel" -#: flatcamGUI/FlatCAMGUI.py:5582 flatcamGUI/ObjectUI.py:1559 +#: flatcamGUI/FlatCAMGUI.py:5589 flatcamGUI/ObjectUI.py:1559 msgid "y_toolchange = Y coord for Toolchange" msgstr "y_toolchange = Y-Koord für Werkzeugwechsel" -#: flatcamGUI/FlatCAMGUI.py:5583 flatcamGUI/ObjectUI.py:1560 +#: flatcamGUI/FlatCAMGUI.py:5590 flatcamGUI/ObjectUI.py:1560 msgid "z_toolchange = Z coord for Toolchange" msgstr "z_toolchange = Z-Koord für Werkzeugwechsel" -#: flatcamGUI/FlatCAMGUI.py:5584 +#: flatcamGUI/FlatCAMGUI.py:5591 msgid "z_cut = Z depth for the cut" msgstr "z_cut = Z Tiefe für den Schnitt" -#: flatcamGUI/FlatCAMGUI.py:5585 +#: flatcamGUI/FlatCAMGUI.py:5592 msgid "z_move = Z height for travel" msgstr "z_move = Z Höhe für die Reise" -#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1563 +#: flatcamGUI/FlatCAMGUI.py:5593 flatcamGUI/ObjectUI.py:1563 msgid "z_depthpercut = the step value for multidepth cut" msgstr "z_depthpercut =der Schrittwert für den mehrstufigen Schnitt" -#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1564 +#: flatcamGUI/FlatCAMGUI.py:5594 flatcamGUI/ObjectUI.py:1564 msgid "spindlesspeed = the value for the spindle speed" msgstr "spindlesspeed =der Wert für die Spindeldrehzahl" -#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1565 +#: flatcamGUI/FlatCAMGUI.py:5595 flatcamGUI/ObjectUI.py:1565 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:5609 +#: flatcamGUI/FlatCAMGUI.py:5616 msgid "NCC Tool Options" msgstr "NCC-Tooloptionen" -#: flatcamGUI/FlatCAMGUI.py:5622 flatcamGUI/FlatCAMGUI.py:6352 +#: flatcamGUI/FlatCAMGUI.py:5629 flatcamGUI/FlatCAMGUI.py:6359 msgid "Tools dia:" msgstr "Werkzeug durchmesser:" -#: flatcamGUI/FlatCAMGUI.py:5624 +#: flatcamGUI/FlatCAMGUI.py:5631 msgid "Diameters of the cutting tools, separated by ','" msgstr "Durchmesser der Schneidwerkzeuge, getrennt durch ','" -#: flatcamGUI/FlatCAMGUI.py:5632 flatcamTools/ToolNonCopperClear.py:167 +#: flatcamGUI/FlatCAMGUI.py:5639 flatcamTools/ToolNonCopperClear.py:167 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -7963,11 +7990,11 @@ msgstr "" "Höhere Werte = langsame Bearbeitung und langsame Ausführung auf der CNC\n" "wegen zu vieler Wege." -#: flatcamGUI/FlatCAMGUI.py:5648 flatcamTools/ToolNonCopperClear.py:183 +#: flatcamGUI/FlatCAMGUI.py:5655 flatcamTools/ToolNonCopperClear.py:183 msgid "Bounding box margin." msgstr "Begrenzungsrahmenrand." -#: flatcamGUI/FlatCAMGUI.py:5657 flatcamTools/ToolNonCopperClear.py:192 +#: flatcamGUI/FlatCAMGUI.py:5664 flatcamTools/ToolNonCopperClear.py:192 #: flatcamTools/ToolPaint.py:190 msgid "" "Algorithm for non-copper clearing:
Standard: Fixed step inwards." @@ -7978,12 +8005,12 @@ msgstr "" "Schritt nach innen. Seed-based : Ausgehend vom Saatgut.
" "Line-based: Parallele Linien." -#: flatcamGUI/FlatCAMGUI.py:5689 flatcamTools/ToolNonCopperClear.py:224 +#: flatcamGUI/FlatCAMGUI.py:5696 flatcamTools/ToolNonCopperClear.py:224 #: flatcamTools/ToolPaint.py:222 msgid "Rest M.:" msgstr "Rest M.:" -#: flatcamGUI/FlatCAMGUI.py:5691 +#: flatcamGUI/FlatCAMGUI.py:5698 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -7999,11 +8026,11 @@ msgstr "" "konnte nicht mit dem vorherigen Tool gelöscht werden.\n" "Wenn nicht aktiviert, verwenden Sie den Standardalgorithmus." -#: flatcamGUI/FlatCAMGUI.py:5710 +#: flatcamGUI/FlatCAMGUI.py:5717 msgid "Cutout Tool Options" msgstr "Ausschnittwerkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:5715 flatcamGUI/ObjectUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:5722 flatcamGUI/ObjectUI.py:402 msgid "" "Create toolpaths to cut around\n" "the PCB and separate it from\n" @@ -8013,7 +8040,7 @@ msgstr "" "die PCB und trennen Sie es von\n" "das ursprüngliche Brett." -#: flatcamGUI/FlatCAMGUI.py:5734 +#: flatcamGUI/FlatCAMGUI.py:5741 msgid "" "Distance from objects at which\n" "to draw the cutout." @@ -8021,11 +8048,11 @@ msgstr "" "Entfernung von Objekten bei denen\n" "den Ausschnitt zeichnen." -#: flatcamGUI/FlatCAMGUI.py:5741 flatcamTools/ToolCutOut.py:96 +#: flatcamGUI/FlatCAMGUI.py:5748 flatcamTools/ToolCutOut.py:96 msgid "Gap size:" msgstr "Spaltgröße:" -#: flatcamGUI/FlatCAMGUI.py:5743 +#: flatcamGUI/FlatCAMGUI.py:5750 msgid "" "Size of the gaps in the toolpath\n" "that will remain to hold the\n" @@ -8035,11 +8062,11 @@ msgstr "" "das wird bleiben, um das zu halten\n" "Board an Ort und Stelle." -#: flatcamGUI/FlatCAMGUI.py:5751 flatcamTools/ToolCutOut.py:134 +#: flatcamGUI/FlatCAMGUI.py:5758 flatcamTools/ToolCutOut.py:134 msgid "Gaps:" msgstr "Spalt:" -#: flatcamGUI/FlatCAMGUI.py:5753 +#: flatcamGUI/FlatCAMGUI.py:5760 msgid "" "Number of bridge gaps used for the cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -8061,19 +8088,19 @@ msgstr "" "- 2 tb \t- 2 * oben + 2 * unten\n" "- 8 \t- 2 * links + 2 * rechts + 2 * oben + 2 * unten" -#: flatcamGUI/FlatCAMGUI.py:5774 flatcamTools/ToolCutOut.py:115 +#: flatcamGUI/FlatCAMGUI.py:5781 flatcamTools/ToolCutOut.py:115 msgid "Convex Sh.:" msgstr "Konvexe Form .:" -#: flatcamGUI/FlatCAMGUI.py:5776 +#: flatcamGUI/FlatCAMGUI.py:5783 msgid "Create a convex shape surrounding the entire PCB." msgstr "Erstellen Sie eine konvexe Form, die die gesamte Leiterplatte umgibt." -#: flatcamGUI/FlatCAMGUI.py:5789 +#: flatcamGUI/FlatCAMGUI.py:5796 msgid "2Sided Tool Options" msgstr "2Seitige Werkzeugoptionen" -#: flatcamGUI/FlatCAMGUI.py:5794 +#: flatcamGUI/FlatCAMGUI.py:5801 msgid "" "A tool to help in creating a double sided\n" "PCB using alignment holes." @@ -8081,28 +8108,28 @@ msgstr "" "Ein Werkzeug, das beim Erstellen eines doppelseitigen Dokuments hilft\n" "PCB mit Ausrichtungslöchern." -#: flatcamGUI/FlatCAMGUI.py:5804 flatcamTools/ToolDblSided.py:235 +#: flatcamGUI/FlatCAMGUI.py:5811 flatcamTools/ToolDblSided.py:235 msgid "Drill diam.:" msgstr "Bohrdurchmesser:" -#: flatcamGUI/FlatCAMGUI.py:5806 flatcamTools/ToolDblSided.py:226 +#: flatcamGUI/FlatCAMGUI.py:5813 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:5815 flatcamTools/ToolDblSided.py:120 +#: flatcamGUI/FlatCAMGUI.py:5822 flatcamTools/ToolDblSided.py:120 msgid "Mirror Axis:" msgstr "Spiegelachse:" -#: flatcamGUI/FlatCAMGUI.py:5817 flatcamTools/ToolDblSided.py:122 +#: flatcamGUI/FlatCAMGUI.py:5824 flatcamTools/ToolDblSided.py:122 msgid "Mirror vertically (X) or horizontally (Y)." msgstr "Vertikal spiegeln (X) oder horizontal (Y)." -#: flatcamGUI/FlatCAMGUI.py:5828 flatcamTools/ToolDblSided.py:133 +#: flatcamGUI/FlatCAMGUI.py:5835 flatcamTools/ToolDblSided.py:133 msgid "Axis Ref:" msgstr "Achsenreferenz:" -#: flatcamGUI/FlatCAMGUI.py:5830 +#: flatcamGUI/FlatCAMGUI.py:5837 msgid "" "The axis should pass through a point or cut\n" " a specified box (in a Geometry object) in \n" @@ -8112,11 +8139,11 @@ msgstr "" "ein angegebenes Feld (in einem Geometrieobjekt) in\n" "die Mitte." -#: flatcamGUI/FlatCAMGUI.py:5846 +#: flatcamGUI/FlatCAMGUI.py:5853 msgid "Paint Tool Options" msgstr "Paint werkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:5853 flatcamGUI/ObjectUI.py:1305 +#: flatcamGUI/FlatCAMGUI.py:5860 flatcamGUI/ObjectUI.py:1305 msgid "" "Creates tool paths to cover the\n" "whole area of a polygon (remove\n" @@ -8128,7 +8155,7 @@ msgstr "" "alles Kupfer). Du wirst gefragt\n" "Klicken Sie auf das gewünschte Polygon." -#: flatcamGUI/FlatCAMGUI.py:5877 +#: flatcamGUI/FlatCAMGUI.py:5884 msgid "" "How much (fraction) of the tool\n" "width to overlap each tool pass." @@ -8136,19 +8163,19 @@ msgstr "" "Wie viel (Bruchteil) des Werkzeugs\n" "Breite, um jeden Werkzeugdurchgang zu überlappen." -#: flatcamGUI/FlatCAMGUI.py:5931 flatcamTools/ToolPaint.py:237 +#: flatcamGUI/FlatCAMGUI.py:5938 flatcamTools/ToolPaint.py:237 msgid "Selection:" msgstr "Auswahl:" -#: flatcamGUI/FlatCAMGUI.py:5933 +#: flatcamGUI/FlatCAMGUI.py:5940 msgid "How to select the polygons to paint." msgstr "So wählen Sie die Polygone zum Malen aus." -#: flatcamGUI/FlatCAMGUI.py:5951 +#: flatcamGUI/FlatCAMGUI.py:5958 msgid "Film Tool Options" msgstr "Filmwerkzeugoptionen" -#: flatcamGUI/FlatCAMGUI.py:5956 +#: flatcamGUI/FlatCAMGUI.py:5963 msgid "" "Create a PCB film from a Gerber or Geometry\n" "FlatCAM object.\n" @@ -8158,11 +8185,11 @@ msgstr "" "FlatCAM-Objekt\n" "Die Datei wird im SVG-Format gespeichert." -#: flatcamGUI/FlatCAMGUI.py:5967 flatcamTools/ToolFilm.py:116 +#: flatcamGUI/FlatCAMGUI.py:5974 flatcamTools/ToolFilm.py:116 msgid "Film Type:" msgstr "Filmtyp:" -#: flatcamGUI/FlatCAMGUI.py:5969 flatcamTools/ToolFilm.py:118 +#: flatcamGUI/FlatCAMGUI.py:5976 flatcamTools/ToolFilm.py:118 msgid "" "Generate a Positive black film or a Negative film.\n" "Positive means that it will print the features\n" @@ -8178,11 +8205,11 @@ msgstr "" "mit weiß auf einer schwarzen leinwand.\n" "Das Filmformat ist SVG." -#: flatcamGUI/FlatCAMGUI.py:5980 flatcamTools/ToolFilm.py:130 +#: flatcamGUI/FlatCAMGUI.py:5987 flatcamTools/ToolFilm.py:130 msgid "Border:" msgstr "Rand:" -#: flatcamGUI/FlatCAMGUI.py:5982 flatcamTools/ToolFilm.py:132 +#: flatcamGUI/FlatCAMGUI.py:5989 flatcamTools/ToolFilm.py:132 msgid "" "Specify a border around the object.\n" "Only for negative film.\n" @@ -8202,11 +8229,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:5995 flatcamTools/ToolFilm.py:144 +#: flatcamGUI/FlatCAMGUI.py:6002 flatcamTools/ToolFilm.py:144 msgid "Scale Stroke:" msgstr "Skalierungshub:" -#: flatcamGUI/FlatCAMGUI.py:5997 flatcamTools/ToolFilm.py:146 +#: flatcamGUI/FlatCAMGUI.py:6004 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 " @@ -8218,11 +8245,11 @@ msgstr "" "dünner ist.\n" "Daher können die Feinheiten von diesem Parameter stärker beeinflusst werden." -#: flatcamGUI/FlatCAMGUI.py:6012 +#: flatcamGUI/FlatCAMGUI.py:6019 msgid "Panelize Tool Options" msgstr "Panelize Werkzeugoptionen" -#: flatcamGUI/FlatCAMGUI.py:6017 +#: flatcamGUI/FlatCAMGUI.py:6024 msgid "" "Create an object that contains an array of (x, y) elements,\n" "each element is a copy of the source object spaced\n" @@ -8232,11 +8259,11 @@ msgstr "" "Jedes Element ist eine Kopie des Quellobjekts\n" "in einem X-Abstand, Y-Abstand voneinander." -#: flatcamGUI/FlatCAMGUI.py:6028 flatcamTools/ToolPanelize.py:147 +#: flatcamGUI/FlatCAMGUI.py:6035 flatcamTools/ToolPanelize.py:147 msgid "Spacing cols:" msgstr "Abstandspalten:" -#: flatcamGUI/FlatCAMGUI.py:6030 flatcamTools/ToolPanelize.py:149 +#: flatcamGUI/FlatCAMGUI.py:6037 flatcamTools/ToolPanelize.py:149 msgid "" "Spacing between columns of the desired panel.\n" "In current units." @@ -8244,11 +8271,11 @@ msgstr "" "Abstand zwischen den Spalten des gewünschten Bereichs.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:6038 flatcamTools/ToolPanelize.py:156 +#: flatcamGUI/FlatCAMGUI.py:6045 flatcamTools/ToolPanelize.py:156 msgid "Spacing rows:" msgstr "Abstand Reihen:" -#: flatcamGUI/FlatCAMGUI.py:6040 flatcamTools/ToolPanelize.py:158 +#: flatcamGUI/FlatCAMGUI.py:6047 flatcamTools/ToolPanelize.py:158 msgid "" "Spacing between rows of the desired panel.\n" "In current units." @@ -8256,27 +8283,27 @@ msgstr "" "Abstand zwischen den Reihen des gewünschten Feldes.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:6048 flatcamTools/ToolPanelize.py:165 +#: flatcamGUI/FlatCAMGUI.py:6055 flatcamTools/ToolPanelize.py:165 msgid "Columns:" msgstr "Säulen:" -#: flatcamGUI/FlatCAMGUI.py:6050 flatcamTools/ToolPanelize.py:167 +#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:167 msgid "Number of columns of the desired panel" msgstr "Anzahl der Spalten des gewünschten Bereichs" -#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:173 +#: flatcamGUI/FlatCAMGUI.py:6064 flatcamTools/ToolPanelize.py:173 msgid "Rows:" msgstr "Reihen:" -#: flatcamGUI/FlatCAMGUI.py:6059 flatcamTools/ToolPanelize.py:175 +#: flatcamGUI/FlatCAMGUI.py:6066 flatcamTools/ToolPanelize.py:175 msgid "Number of rows of the desired panel" msgstr "Anzahl der Zeilen des gewünschten Panels" -#: flatcamGUI/FlatCAMGUI.py:6067 +#: flatcamGUI/FlatCAMGUI.py:6074 msgid "Panel Type:" msgstr "Panel-Typ:" -#: flatcamGUI/FlatCAMGUI.py:6069 +#: flatcamGUI/FlatCAMGUI.py:6076 msgid "" "Choose the type of object for the panel object:\n" "- Gerber\n" @@ -8286,11 +8313,11 @@ msgstr "" "- Gerber\n" "- Geometrie" -#: flatcamGUI/FlatCAMGUI.py:6078 +#: flatcamGUI/FlatCAMGUI.py:6085 msgid "Constrain within:" msgstr "Beschränkung innerhalb:" -#: flatcamGUI/FlatCAMGUI.py:6080 flatcamTools/ToolPanelize.py:195 +#: flatcamGUI/FlatCAMGUI.py:6087 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" @@ -8304,11 +8331,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:6089 flatcamTools/ToolPanelize.py:204 +#: flatcamGUI/FlatCAMGUI.py:6096 flatcamTools/ToolPanelize.py:204 msgid "Width (DX):" msgstr "Breite (DX):" -#: flatcamGUI/FlatCAMGUI.py:6091 flatcamTools/ToolPanelize.py:206 +#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:206 msgid "" "The width (DX) within which the panel must fit.\n" "In current units." @@ -8316,11 +8343,11 @@ msgstr "" "Die Breite (DX), in die das Panel passen muss.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:212 +#: flatcamGUI/FlatCAMGUI.py:6105 flatcamTools/ToolPanelize.py:212 msgid "Height (DY):" msgstr "Höhe (DY):" -#: flatcamGUI/FlatCAMGUI.py:6100 flatcamTools/ToolPanelize.py:214 +#: flatcamGUI/FlatCAMGUI.py:6107 flatcamTools/ToolPanelize.py:214 msgid "" "The height (DY)within which the panel must fit.\n" "In current units." @@ -8328,15 +8355,15 @@ msgstr "" "Die Höhe (DY), in die die Platte passen muss.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:6114 +#: flatcamGUI/FlatCAMGUI.py:6121 msgid "Calculators Tool Options" msgstr "Rechner-Tool-Optionen" -#: flatcamGUI/FlatCAMGUI.py:6117 +#: flatcamGUI/FlatCAMGUI.py:6124 msgid "V-Shape Tool Calculator:" msgstr " V-Shape-Werkzeug Rechner: " -#: flatcamGUI/FlatCAMGUI.py:6119 +#: flatcamGUI/FlatCAMGUI.py:6126 msgid "" "Calculate the tool diameter for a given V-shape tool,\n" "having the tip diameter, tip angle and\n" @@ -8347,11 +8374,11 @@ msgstr "" "mit dem Spitzendurchmesser, Spitzenwinkel und\n" "Schnitttiefe als Parameter." -#: flatcamGUI/FlatCAMGUI.py:6130 flatcamTools/ToolCalculators.py:94 +#: flatcamGUI/FlatCAMGUI.py:6137 flatcamTools/ToolCalculators.py:94 msgid "Tip Diameter:" msgstr "Spitzendurchmesser" -#: flatcamGUI/FlatCAMGUI.py:6132 +#: flatcamGUI/FlatCAMGUI.py:6139 msgid "" "This is the tool tip diameter.\n" "It is specified by manufacturer." @@ -8359,11 +8386,11 @@ msgstr "" "Dies ist der Werkzeugspitzendurchmesser.\n" "Es wird vom Hersteller angegeben." -#: flatcamGUI/FlatCAMGUI.py:6140 +#: flatcamGUI/FlatCAMGUI.py:6147 msgid "Tip angle:" msgstr "Spitzenwinkel:" -#: flatcamGUI/FlatCAMGUI.py:6142 +#: flatcamGUI/FlatCAMGUI.py:6149 msgid "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." @@ -8371,7 +8398,7 @@ msgstr "" "Dies ist der Winkel an der Spitze des Werkzeugs.\n" "Es wird vom Hersteller angegeben." -#: flatcamGUI/FlatCAMGUI.py:6152 +#: flatcamGUI/FlatCAMGUI.py:6159 msgid "" "This is depth to cut into material.\n" "In the CNCJob object it is the CutZ parameter." @@ -8379,11 +8406,11 @@ msgstr "" "Dies ist die Tiefe zum Schneiden in Material.\n" "Im CNCJob-Objekt ist dies der Parameter CutZ." -#: flatcamGUI/FlatCAMGUI.py:6159 +#: flatcamGUI/FlatCAMGUI.py:6166 msgid "ElectroPlating Calculator:" msgstr " Galvano-Rechner: " -#: flatcamGUI/FlatCAMGUI.py:6161 flatcamTools/ToolCalculators.py:152 +#: flatcamGUI/FlatCAMGUI.py:6168 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 " @@ -8394,27 +8421,27 @@ msgstr "" "unter Verwendung einer Methode wie Grahit-Tinte oder Calcium-Hypophosphit-" "Tinte oder Palladiumchlorid." -#: flatcamGUI/FlatCAMGUI.py:6171 flatcamTools/ToolCalculators.py:161 +#: flatcamGUI/FlatCAMGUI.py:6178 flatcamTools/ToolCalculators.py:161 msgid "Board Length:" msgstr "PCB Länge:" -#: flatcamGUI/FlatCAMGUI.py:6173 flatcamTools/ToolCalculators.py:165 +#: flatcamGUI/FlatCAMGUI.py:6180 flatcamTools/ToolCalculators.py:165 msgid "This is the board length. In centimeters." msgstr "Dies ist die Boardlänge. In Zentimeter" -#: flatcamGUI/FlatCAMGUI.py:6179 flatcamTools/ToolCalculators.py:167 +#: flatcamGUI/FlatCAMGUI.py:6186 flatcamTools/ToolCalculators.py:167 msgid "Board Width:" msgstr "PCB Breite:" -#: flatcamGUI/FlatCAMGUI.py:6181 flatcamTools/ToolCalculators.py:171 +#: flatcamGUI/FlatCAMGUI.py:6188 flatcamTools/ToolCalculators.py:171 msgid "This is the board width.In centimeters." msgstr "Dies ist die Breite der Platte in Zentimetern." -#: flatcamGUI/FlatCAMGUI.py:6186 flatcamTools/ToolCalculators.py:173 +#: flatcamGUI/FlatCAMGUI.py:6193 flatcamTools/ToolCalculators.py:173 msgid "Current Density:" msgstr "Stromdichte:" -#: flatcamGUI/FlatCAMGUI.py:6189 flatcamTools/ToolCalculators.py:177 +#: flatcamGUI/FlatCAMGUI.py:6196 flatcamTools/ToolCalculators.py:177 msgid "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." @@ -8422,11 +8449,11 @@ msgstr "" "Stromdichte durch die Platine.\n" "In Ampere pro Quadratfuß ASF." -#: flatcamGUI/FlatCAMGUI.py:6195 flatcamTools/ToolCalculators.py:181 +#: flatcamGUI/FlatCAMGUI.py:6202 flatcamTools/ToolCalculators.py:181 msgid "Copper Growth:" msgstr "Kupferwachstum:" -#: flatcamGUI/FlatCAMGUI.py:6198 flatcamTools/ToolCalculators.py:185 +#: flatcamGUI/FlatCAMGUI.py:6205 flatcamTools/ToolCalculators.py:185 msgid "" "How thick the copper growth is intended to be.\n" "In microns." @@ -8434,11 +8461,11 @@ msgstr "" "Wie dick soll das Kupferwachstum sein.\n" "In Mikrometern" -#: flatcamGUI/FlatCAMGUI.py:6211 +#: flatcamGUI/FlatCAMGUI.py:6218 msgid "Transform Tool Options" msgstr "Umwandlungswerkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:6216 +#: flatcamGUI/FlatCAMGUI.py:6223 msgid "" "Various transformations that can be applied\n" "on a FlatCAM object." @@ -8446,47 +8473,47 @@ msgstr "" "Verschiedene Transformationen, die angewendet werden können\n" "auf einem FlatCAM-Objekt." -#: flatcamGUI/FlatCAMGUI.py:6226 +#: flatcamGUI/FlatCAMGUI.py:6233 msgid "Rotate Angle:" msgstr "Winkel drehen:" -#: flatcamGUI/FlatCAMGUI.py:6228 +#: flatcamGUI/FlatCAMGUI.py:6235 msgid "Angle for rotation. In degrees." msgstr "Drehwinkel. In grad." -#: flatcamGUI/FlatCAMGUI.py:6235 +#: flatcamGUI/FlatCAMGUI.py:6242 msgid "Skew_X angle:" msgstr "Neigungswinkel X:" -#: flatcamGUI/FlatCAMGUI.py:6237 +#: flatcamGUI/FlatCAMGUI.py:6244 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:6244 +#: flatcamGUI/FlatCAMGUI.py:6251 msgid "Skew_Y angle:" msgstr "Neigungswinkel Y:" -#: flatcamGUI/FlatCAMGUI.py:6246 +#: flatcamGUI/FlatCAMGUI.py:6253 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:6253 +#: flatcamGUI/FlatCAMGUI.py:6260 msgid "Scale_X factor:" msgstr "Skalierung des X-Faktors:" -#: flatcamGUI/FlatCAMGUI.py:6255 +#: flatcamGUI/FlatCAMGUI.py:6262 msgid "Factor for scaling on X axis." msgstr "Faktor für die Skalierung auf der X-Achse." -#: flatcamGUI/FlatCAMGUI.py:6262 +#: flatcamGUI/FlatCAMGUI.py:6269 msgid "Scale_Y factor:" msgstr "Skalierung des Y-Faktors:" -#: flatcamGUI/FlatCAMGUI.py:6264 +#: flatcamGUI/FlatCAMGUI.py:6271 msgid "Factor for scaling on Y axis." msgstr "Faktor für die Skalierung auf der Y-Achse." -#: flatcamGUI/FlatCAMGUI.py:6272 +#: flatcamGUI/FlatCAMGUI.py:6279 msgid "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." @@ -8494,7 +8521,7 @@ msgstr "" "Skalieren Sie die ausgewählten Objekte\n" "Verwenden des Skalierungsfaktors X für beide Achsen." -#: flatcamGUI/FlatCAMGUI.py:6280 flatcamTools/ToolTransform.py:210 +#: flatcamGUI/FlatCAMGUI.py:6287 flatcamTools/ToolTransform.py:210 msgid "" "Scale the selected object(s)\n" "using the origin reference when checked,\n" @@ -8506,27 +8533,27 @@ msgstr "" "und die Mitte der größten Begrenzungsbox\n" "der ausgewählten Objekte, wenn sie nicht markiert sind." -#: flatcamGUI/FlatCAMGUI.py:6289 +#: flatcamGUI/FlatCAMGUI.py:6296 msgid "Offset_X val:" msgstr "Offset X Wert:" -#: flatcamGUI/FlatCAMGUI.py:6291 +#: flatcamGUI/FlatCAMGUI.py:6298 msgid "Distance to offset on X axis. In current units." msgstr "Abstand zum Offset auf der X-Achse. In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:6298 +#: flatcamGUI/FlatCAMGUI.py:6305 msgid "Offset_Y val:" msgstr "Offset Y-Wert:" -#: flatcamGUI/FlatCAMGUI.py:6300 +#: flatcamGUI/FlatCAMGUI.py:6307 msgid "Distance to offset on Y axis. In current units." msgstr "Abstand zum Offset auf der Y-Achse. In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:6306 +#: flatcamGUI/FlatCAMGUI.py:6313 msgid "Mirror Reference" msgstr "Spiegelreferenz" -#: flatcamGUI/FlatCAMGUI.py:6308 flatcamTools/ToolTransform.py:314 +#: flatcamGUI/FlatCAMGUI.py:6315 flatcamTools/ToolTransform.py:314 msgid "" "Flip the selected object(s)\n" "around the point in Point Entry Field.\n" @@ -8549,11 +8576,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:6319 +#: flatcamGUI/FlatCAMGUI.py:6326 msgid " Mirror Ref. Point:" msgstr "Spiegelref. Punkt:" -#: flatcamGUI/FlatCAMGUI.py:6321 flatcamTools/ToolTransform.py:327 +#: flatcamGUI/FlatCAMGUI.py:6328 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" @@ -8564,11 +8591,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:6338 +#: flatcamGUI/FlatCAMGUI.py:6345 msgid "SolderPaste Tool Options" msgstr "Lötpaste-Werkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:6343 +#: flatcamGUI/FlatCAMGUI.py:6350 msgid "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." @@ -8576,49 +8603,49 @@ msgstr "" "Ein Werkzeug zum Erstellen von GCode für die Ausgabe\n" "Lotpaste auf eine Leiterplatte." -#: flatcamGUI/FlatCAMGUI.py:6354 +#: flatcamGUI/FlatCAMGUI.py:6361 msgid "Diameters of nozzle tools, separated by ','" msgstr "Durchmesser der Düsenwerkzeuge, getrennt durch ','" -#: flatcamGUI/FlatCAMGUI.py:6361 +#: flatcamGUI/FlatCAMGUI.py:6368 msgid "New Nozzle Dia:" msgstr " Neuer Düsendurchmesser: " -#: flatcamGUI/FlatCAMGUI.py:6363 flatcamTools/ToolSolderPaste.py:103 +#: flatcamGUI/FlatCAMGUI.py:6370 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:6371 flatcamTools/ToolSolderPaste.py:166 +#: flatcamGUI/FlatCAMGUI.py:6378 flatcamTools/ToolSolderPaste.py:166 msgid "Z Dispense Start:" msgstr "Z Dosierbeginn:" -#: flatcamGUI/FlatCAMGUI.py:6373 flatcamTools/ToolSolderPaste.py:168 +#: flatcamGUI/FlatCAMGUI.py:6380 flatcamTools/ToolSolderPaste.py:168 msgid "The height (Z) when solder paste dispensing starts." msgstr "Die Höhe (Z) bei der Lotpastendosierung." -#: flatcamGUI/FlatCAMGUI.py:6380 flatcamTools/ToolSolderPaste.py:174 +#: flatcamGUI/FlatCAMGUI.py:6387 flatcamTools/ToolSolderPaste.py:174 msgid "Z Dispense:" msgstr "Z-Abgabe:" -#: flatcamGUI/FlatCAMGUI.py:6382 flatcamTools/ToolSolderPaste.py:176 +#: flatcamGUI/FlatCAMGUI.py:6389 flatcamTools/ToolSolderPaste.py:176 msgid "The height (Z) when doing solder paste dispensing." msgstr "Die Höhe (Z) bei der Lotpastendosierung." -#: flatcamGUI/FlatCAMGUI.py:6389 flatcamTools/ToolSolderPaste.py:183 +#: flatcamGUI/FlatCAMGUI.py:6396 flatcamTools/ToolSolderPaste.py:183 msgid "Z Dispense Stop:" msgstr "Z Abgabestopp:" -#: flatcamGUI/FlatCAMGUI.py:6391 flatcamTools/ToolSolderPaste.py:185 +#: flatcamGUI/FlatCAMGUI.py:6398 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:6398 flatcamTools/ToolSolderPaste.py:191 +#: flatcamGUI/FlatCAMGUI.py:6405 flatcamTools/ToolSolderPaste.py:191 msgid "Z Travel:" msgstr "Z Reise:" -#: flatcamGUI/FlatCAMGUI.py:6400 flatcamTools/ToolSolderPaste.py:193 +#: flatcamGUI/FlatCAMGUI.py:6407 flatcamTools/ToolSolderPaste.py:193 msgid "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." @@ -8626,19 +8653,19 @@ msgstr "" "Die Höhe (Z) für den Weg zwischen Pads\n" "(ohne Lotpaste zu dosieren)." -#: flatcamGUI/FlatCAMGUI.py:6408 flatcamTools/ToolSolderPaste.py:200 +#: flatcamGUI/FlatCAMGUI.py:6415 flatcamTools/ToolSolderPaste.py:200 msgid "Z Toolchange:" msgstr "Z Werkzeugwechsel:" -#: flatcamGUI/FlatCAMGUI.py:6410 flatcamTools/ToolSolderPaste.py:202 +#: flatcamGUI/FlatCAMGUI.py:6417 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:6417 flatcamTools/ToolSolderPaste.py:208 +#: flatcamGUI/FlatCAMGUI.py:6424 flatcamTools/ToolSolderPaste.py:208 msgid "XY Toolchange:" msgstr "XY-Werkzeugwechsel:" -#: flatcamGUI/FlatCAMGUI.py:6419 flatcamTools/ToolSolderPaste.py:210 +#: flatcamGUI/FlatCAMGUI.py:6426 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." @@ -8646,19 +8673,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:6427 flatcamTools/ToolSolderPaste.py:217 +#: flatcamGUI/FlatCAMGUI.py:6434 flatcamTools/ToolSolderPaste.py:217 msgid "Feedrate X-Y:" msgstr "Vorschub X-Y:" -#: flatcamGUI/FlatCAMGUI.py:6429 flatcamTools/ToolSolderPaste.py:219 +#: flatcamGUI/FlatCAMGUI.py:6436 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:6436 flatcamTools/ToolSolderPaste.py:225 +#: flatcamGUI/FlatCAMGUI.py:6443 flatcamTools/ToolSolderPaste.py:225 msgid "Feedrate Z:" msgstr "Vorschub Z:" -#: flatcamGUI/FlatCAMGUI.py:6438 flatcamTools/ToolSolderPaste.py:227 +#: flatcamGUI/FlatCAMGUI.py:6445 flatcamTools/ToolSolderPaste.py:227 msgid "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." @@ -8666,11 +8693,11 @@ msgstr "" "Vorschub (Geschwindigkeit) bei vertikaler Bewegung\n" "(auf der Z-Ebene)." -#: flatcamGUI/FlatCAMGUI.py:6446 flatcamTools/ToolSolderPaste.py:234 +#: flatcamGUI/FlatCAMGUI.py:6453 flatcamTools/ToolSolderPaste.py:234 msgid "Feedrate Z Dispense:" msgstr "Vorschub Z Dosierung:" -#: flatcamGUI/FlatCAMGUI.py:6448 flatcamTools/ToolSolderPaste.py:236 +#: flatcamGUI/FlatCAMGUI.py:6455 flatcamTools/ToolSolderPaste.py:236 msgid "" "Feedrate (speed) while moving up vertically\n" " to Dispense position (on Z plane)." @@ -8678,11 +8705,11 @@ msgstr "" "Vorschub (Geschwindigkeit) bei vertikaler Bewegung\n" "  zur Ausgabeposition (auf der Z-Ebene)." -#: flatcamGUI/FlatCAMGUI.py:6456 flatcamTools/ToolSolderPaste.py:243 +#: flatcamGUI/FlatCAMGUI.py:6463 flatcamTools/ToolSolderPaste.py:243 msgid "Spindle Speed FWD:" msgstr "Spindeldrehzahl FWD:" -#: flatcamGUI/FlatCAMGUI.py:6458 flatcamTools/ToolSolderPaste.py:245 +#: flatcamGUI/FlatCAMGUI.py:6465 flatcamTools/ToolSolderPaste.py:245 msgid "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." @@ -8690,19 +8717,19 @@ msgstr "" "Die Spendergeschwindigkeit beim Schieben der Lötpaste\n" "durch die Spenderdüse." -#: flatcamGUI/FlatCAMGUI.py:6466 flatcamTools/ToolSolderPaste.py:252 +#: flatcamGUI/FlatCAMGUI.py:6473 flatcamTools/ToolSolderPaste.py:252 msgid "Dwell FWD:" msgstr "Verweilzeit FWD:" -#: flatcamGUI/FlatCAMGUI.py:6468 flatcamTools/ToolSolderPaste.py:254 +#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:254 msgid "Pause after solder dispensing." msgstr "Pause nach dem Löten." -#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:260 +#: flatcamGUI/FlatCAMGUI.py:6482 flatcamTools/ToolSolderPaste.py:260 msgid "Spindle Speed REV:" msgstr "Spindeldrehzahl REV:" -#: flatcamGUI/FlatCAMGUI.py:6477 flatcamTools/ToolSolderPaste.py:262 +#: flatcamGUI/FlatCAMGUI.py:6484 flatcamTools/ToolSolderPaste.py:262 msgid "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." @@ -8710,11 +8737,11 @@ msgstr "" "Die Spendergeschwindigkeit beim Einfahren der Lötpaste\n" "durch die Spenderdüse." -#: flatcamGUI/FlatCAMGUI.py:6485 flatcamTools/ToolSolderPaste.py:269 +#: flatcamGUI/FlatCAMGUI.py:6492 flatcamTools/ToolSolderPaste.py:269 msgid "Dwell REV:" msgstr "Verweilen REV:" -#: flatcamGUI/FlatCAMGUI.py:6487 flatcamTools/ToolSolderPaste.py:271 +#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:271 msgid "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." @@ -8722,23 +8749,23 @@ msgstr "" "Pause nachdem Lotpastendispenser eingefahren wurde,\n" "das Druckgleichgewicht zu ermöglichen." -#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:277 +#: flatcamGUI/FlatCAMGUI.py:6501 flatcamTools/ToolSolderPaste.py:277 msgid "PostProcessors:" msgstr "Postprozessoren:" -#: flatcamGUI/FlatCAMGUI.py:6496 flatcamTools/ToolSolderPaste.py:279 +#: flatcamGUI/FlatCAMGUI.py:6503 flatcamTools/ToolSolderPaste.py:279 msgid "Files that control the GCode generation." msgstr "Dateien, die die GCode-Generierung steuern." -#: flatcamGUI/FlatCAMGUI.py:6526 flatcamGUI/FlatCAMGUI.py:6532 +#: flatcamGUI/FlatCAMGUI.py:6533 flatcamGUI/FlatCAMGUI.py:6539 msgid "Idle." msgstr "Untätig" -#: flatcamGUI/FlatCAMGUI.py:6556 +#: flatcamGUI/FlatCAMGUI.py:6563 msgid "Application started ..." msgstr "Bewerbung gestartet ..." -#: flatcamGUI/FlatCAMGUI.py:6557 +#: flatcamGUI/FlatCAMGUI.py:6564 msgid "Hello!" msgstr "Hello!" @@ -11067,23 +11094,23 @@ msgstr "[WARNING_NOTCL] Klicken Sie in das gewünschte Polygon." msgid "[ERROR_NOTCL] Can't do Paint on MultiGeo geometries ..." msgstr "[ERROR_NOTCL] \"Paint\" für MultiGeo-Geometrien nicht möglich ..." -#: flatcamTools/ToolPaint.py:796 flatcamTools/ToolPaint.py:999 +#: flatcamTools/ToolPaint.py:796 flatcamTools/ToolPaint.py:1003 msgid "Painting polygon..." msgstr "Polygon malen ..." -#: flatcamTools/ToolPaint.py:847 +#: flatcamTools/ToolPaint.py:851 msgid "[WARNING] No polygon found." msgstr "[WARNING] Kein Polygon gefunden." -#: flatcamTools/ToolPaint.py:850 +#: flatcamTools/ToolPaint.py:854 msgid "Painting polygon." msgstr "Polygon malen." -#: flatcamTools/ToolPaint.py:892 +#: flatcamTools/ToolPaint.py:896 msgid "[ERROR_NOTCL] Geometry could not be painted completely" msgstr "[ERROR_NOTCL] Geometrie konnte nicht vollständig gezeichnet werden" -#: flatcamTools/ToolPaint.py:918 +#: flatcamTools/ToolPaint.py:922 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -11094,16 +11121,16 @@ msgstr "" "Kombination von Parametern. Oder eine andere Farbstrategie\n" "%s" -#: flatcamTools/ToolPaint.py:960 +#: flatcamTools/ToolPaint.py:964 #, python-format msgid "[ERROR_NOTCL] PaintTool.paint_poly() --> %s" msgstr "[ERROR_NOTCL] PaintTool.paint_poly() --> %s" -#: flatcamTools/ToolPaint.py:966 flatcamTools/ToolPaint.py:1259 +#: flatcamTools/ToolPaint.py:970 flatcamTools/ToolPaint.py:1263 msgid "Polygon Paint started ..." msgstr "Polygonfarbe gestartet ..." -#: flatcamTools/ToolPaint.py:1115 flatcamTools/ToolPaint.py:1204 +#: flatcamTools/ToolPaint.py:1119 flatcamTools/ToolPaint.py:1208 #, python-format msgid "" "[ERROR] Could not do Paint All. Try a different combination of parameters. " @@ -11114,7 +11141,7 @@ msgstr "" "Parametern. Oder eine andere Farbmethode\n" "%s" -#: flatcamTools/ToolPaint.py:1139 +#: flatcamTools/ToolPaint.py:1143 msgid "" "[ERROR] There is no Painting Geometry in the file.\n" "Usually it means that the tool diameter is too big for the painted " @@ -11126,11 +11153,11 @@ msgstr "" "Geometrie zu groß ist.\n" "Ändern Sie die Malparameter und versuchen Sie es erneut." -#: flatcamTools/ToolPaint.py:1148 +#: flatcamTools/ToolPaint.py:1152 msgid "[success] Paint All Done." msgstr "[success] 'Paint' Sie alles fertig." -#: flatcamTools/ToolPaint.py:1234 +#: flatcamTools/ToolPaint.py:1238 msgid "" "[ERROR_NOTCL] There is no Painting Geometry in the file.\n" "Usually it means that the tool diameter is too big for the painted " @@ -11142,7 +11169,7 @@ msgstr "" "Geometrie zu groß ist.\n" "Ändern Sie die Malparameter und versuchen Sie es erneut." -#: flatcamTools/ToolPaint.py:1243 +#: flatcamTools/ToolPaint.py:1247 msgid "[success] Paint All with Rest-Machining done." msgstr "[success] Paint All with Rest-Machining erledigt." diff --git a/locale/en/LC_MESSAGES/strings.mo b/locale/en/LC_MESSAGES/strings.mo index 89c040c9063f38f047bcecb947fdc97585f6bc50..c3a054ecfdbc5c58b925641fac4a7239c8a5c128 100644 GIT binary patch delta 38966 zcmc)Tb#xX-!0+*WlHl$RNpK79mf&u|-QBJD;suJkI}~?!hvHt`txzaXT;K0+XSk>L zJ@@~+=WIXYJ3Biw`{aSp8&l)Fo)O2r9XDXA!x1r(<0Qw5`5mWm6vye`MX8SSk=#)H zgqU`8$+_!i?PF?Sd# zsp(j9EKGV9%z|yP6;4BM!@}pplO*#wvoJz(pVJi=phhHa3ZJ*b2BIEa5lqJXb7~RL zv+9=8+;J}~OMEEmj!#)HV}9bdaSSF(<#R^k5-f$;0)0+q>}g$ynvAD0BECR%Mo;T7Ohe1{(t%eh*xo``$8va4mixg}wkPuZq4JtjiO)p{N z)i4+7O@dkf{}Px&f+o|*)aF^vMQs$n<44?s+M2hfF_Y~as^eEtbL6p2{};7iCcK<@Hns+V%J6E_IiqkhYDA0X@E(EdR3xCCt0ro4 z)knSUI-xd8BR3P(-VW4AoJQ4ujH$K$ zzY{1%LU1l)GgJeMPz{_!eKLBEdI?3&?Q^nYD%4O`#SrX)T7HXB8_!wP4JFNE%4J2x ztD*Lb78srDJA(+Qhhs4S7osM~GSr=IL~kEJO`6N7Np%Z@@o!YavGSU7!KgdTj9R88 zYc}lzgMZ;loSx52rsDa{@+*hxP%YFAv_ws| zcBl(>MYYo(wOmJ{=D^hatpC~s7L%Y47++A&Fi8OuFNTUYwDF;+N3amp(00@a96{|D zPf;WG9rZ{O7c@I#8C*+zESAQ?g?vsZ4lTs`U&pLHOhN+^dKA%1!Ew%G6Z9`?Ub`)D zCh^6nkt$Nm=PblJsLA=+8XoF%+7Mrj`7uG5c^y~AoWw_$ehSBHqZxN1=v#7M8^osCUO3)Es$_8uA~gM-a87d1=K#ZE%%Q`HfJI#BEDJ zldmUs!%;XGzoL3Pu#_2*4XFL$0anBjrG3sgyog#2&B~Y#Oh#Q`4tiU-bq{JaUBn># z7wNF;Bq(coni5qpE$Z23M@^Cqt&stMcqMPOot<|F0Mg6%1GtRM%4nf)2%?2 zKaLu)OBh*Wew9E067HcUPqOmn&hwz2bsN+j4ngZH7 zlQkSO6K#jepN8tdG3=ygev&|CELh3s%)n8okqEAAMj$I{-4{ZQObOKbu8LjcV?alj;P<#`CDx z>V50qsE)t4`l^}o(NSA`Jk%sjg6eQ^HP*kLae5MTfjp=S6h}2&4z+`Y+x(WON7M~9 zVq;Lx^ag5Qc!Cq~JMO~q)lGhda5Kqkqsp~MZRtb8S^t`q^KHgHOhfz%sv}=ecjQ;Y z^gISCo)9&=gHR)t5A{gO*mz^q2z9pcL8$9Yu<7ejbLoIfASQu3$Ww4$qApytmf3 z+83HwdtfQzBQX!2K{Xgq$JC39x=>nFdS29|Es1*O6;Y40rnNEh1C8snC7>Z+Zas|} znm5+ibxlJdsGjG=K&*_KGo4Wv?2o$R(WnubgSxR*sB#BTH+TlM8t!2gt^YXnd`?~x znxcky2I@|hqZ;0UdK(@?O}3k;3p_>L(FfE8eD%%ehM1^$KGdC;M3t+A>R@fu2)9M= z{ojLtp7~(xh9gn4^b6`jaT}Nm2VrjFSy2r&v-Ut;V1#u7@^R9cg%wFZ(2%z%@tBRw zJ0o{vpVOE00qA}H|42X$L~LR%6dTp^f`daHQ)D0YO!uqdA;5rEpF;7$TwoBT~tj|)YXV?riCwil{(rKv4dC+=Oksh@Z(gT&I{2J|6zJE{><3#> zZ^Ij?j`iqdhO93tJ`BI(Xk?;0qdNN>7L4<_3wMgeyZM|NR4J80P)OOqyQS{ir*R+S?3qY}5r3qdrKaMNP_#sApUnHM<+5 zI@lgl;Xu?QnuqGZGIRq7Y$c#O--U`FL^XH}HTxf;*6~+VgSq>dhRR@8;#Dv`4!}@c zYV#js2I4O<7!&n1Klv0ywOgw%>t8+XL_!Dbi|XMM)T;Og)8R+#gQ@zNoogocCLX`P z&pCo)QI9ZufZ3`Wq2k?9?F~d-X9Q}5CSe&|HGuVBg22Bd^uT-rO@-B{A=->uW`|MF z@FI@Jd#DlXKz*fmM?I3ksC{A_X2SW{1y5jpEHucxJ$s-=bfrr`Lw+CC;1g8OU!pqj z3Dt0v!RA5Dg?&Fa{DYgBrOusE%|+?~@K{4$Vi+nWd;l>8`MW-KYv@Q4QZk zb>IbR1isny=tIo2OM-r+=Rj>(xv@2tMUBXM)R6DR1T4oBs7HBss9BzohI!wjxlZ74 z^W$+P)Rx#4HFW(@9a@I!&^AnihcP?;g;_A^2%pmk%b<43WvFMq8#SVbQ6qBFddYeV zqiFpW;o!qmMLqo)q=yQlLJR2BT(mVbt5L2I_`dp+>R` zYVr+2m79s)`rkl6ce)QXWaq3mQ9XZZ^IxMz!f%vmFczx8R5qR;wS$(m@u8>=Oh(n4 ziv@5cs)G;FRnOiN&@+xW+Pq#9U=Z;z)Q~nujX)pdQ98e(%8x?TpJC(6QIl&M>cYEF zlkNy=(w;=!;1wIcKbrNgp1mMJv+*;kXEA;=lPVReVlGt0qNod&N7bu`>R@YJi~~^R zgU0xrs+a}aD;>k|FVv&XJl5v~V(3`brS|luBxsrRN8Ra6)Fk>H^~2*jtcYh&Z^LBc z%!TWs>UT!HzDHv=T#lN2S1}{r!4(*VS6@loWc}z8(8f??f|*RcP|vgY3lO@mDtPOg0^gg&Nvqs7IL{b>R}Ib}FOlH$Xk&_Q(jk&H$S*+!mOQ>c}!w z13OV2IAZfJqn`ak)Cj${@h_-5jy%N}3-z%+A?oY4N~n5mZGJC|p!Gk1fQDkI&6tH6 z;)SRRYfwGjiR#EH%z!s-Ji=77OcP*M(o>>3QW13n;iwU4gk7-%cE;Nnf$KY!rAg@L?2j74$*2uv5$ZxaQIqw6^$+WL)CP48Rqr;cBQH=R_XS-w6k)oV z11V4$`A|I%L*-Y*Kx~1UM8i=-It}%xHljLs6g6VEtk1AJ@ef!L+s`noVLPha{TZx( zRs4qpZ4?n_nmdV(8iDxMG^n2Ew)w@aX-=|qxOZ-SQ-yu8H_sLe8j4b`baeyGvihaV?Vf$t%#>tXombZ z)J}L6%VWkxroA2*NZj2;Krfk_sAu~K_3YoG&K5zo6yvi^z?(2iBoS{pS2?XV~IM9t#os0%h; zZS06zR{c`$gPf#OQZHuu5>P~+_b##P{PeBd&V$=<;wE63|u>SRo z_Syo6P(ybD)$m2sq@Rvz_k>4p_>D^^9nJLaVnjv-v%nV|q4!!Uf0njHD>n)Ftv4QMJB z!zlMm1Ld$5@o`uKA6X0DH+MK5^OAla=U|ctKIbZK#oajmA?x4A9aenga}JSE`LVgf zxKCIvq>seSq!;?jET31{i}>Pay#L8h`rKR~@84!Qc0}!*-BIg*ppB0~ea4)Q`i!^% zwVaRs&HC5QcbNpu_LtZPgI<`Q^Jk;>hlDT9zK{&HuG64iLLsPzMxtJ?(^31wVjEv? z^LN|ylc@SvF*)9U>6*X~60{{I|Hu4r+1t7TE0KO3M`MOpW`o&;af$Cj-M|^t2J{3I z;s?|S#C&Z=CON8u!Km~Q)JPR}39u$JB_QqG(6x;G@ipEHs#E!)O^!a)1l=35; zcx^1I_1~O8bzEe9hk?Y)`ulksN?Yq>)F-4pI0hf#2<#T%=Uw;{hASSy&-*JEN3j9% z1`*8#cc7m65!8)dM%R0}5YUjskL2h5{GJ*$yVIlYyddh?RYdi?A!@|hqUOdgm>CCS zMqGm$xj#{l<{@gtUfB3M)OEi{@^ig)pEI(b_hWQR>_EmKY@-U;4r@j6^FI9^z_i4p zMD_Ew)@<0AA?}Xa!Y@Yi^XANFoI$)@bU*JaS^pSjLE@vaG9E#- z8$Yg}_jgC~xdil5sBc}3>e)BckYU9djs$cETQC%#qB@WtQyWi|X-dtbh@c z`FVe|QVmNJpN%SiA5|`Ga&tosQLAPaYGe*#IgFh`Bg6WuM?e*4poaVg>a`gur5U=S zsPz7r372DeyohQjWhy`KqgESKNB5%c_$9W&)PbhMqp>3KE2s{o4nnT)R3M-WbVtq3 z`8IwO8xwzny5s7>X7bEKjnDzq2aGqUj^s^kR>>gLGe3^0F=85X=b2E~>5Zju3A(zI zX9P-Op0uW+z8FgUFsg$Q()oFRYBd}+dA6ZC_6qZ0)%1Ser`r)&i})4PhtI4TOnfMA zB7PmK;JA#Y{o5H?|9V@c%H-#L`Ynm6h<8L49E(~Fw~)!=M9XYC5{`QR564ivgBtq4 zEapb4TBo8O?RC^hrO0Y*ib`La)ir^qBxurP4l&QHIo2b70#z_=HgkbCsL3`1hv6O6 z_k%66`+47p3`Gt3d<j>5%{v0)_O6D_r{VLQ5{Xorutoh9r{0pk%3sE=r5UXMG0)F0?P@S+WarZ6( zWn?U9D)d9m-n|%(|6)=sQ^+jSW>}c`R8+YO=&hE*CSDY^<8{XzxE8g%@1h=2ydu2y zumsXE*BL@UJK#>#vWQmH>~OhItD!q;gPDa|e)};4K1W?3ele3@8nsb%u+Bz3suQRW zDse(hen-^mnS*&Wy-#}qzL^N~b3(}|fLf=0u?HSQ-D%5Ni1y zvwlO(gK|T9>Ha%)(lb-{XUk5dZ`rG&t)SNkv+Cl$Cy@ZNYF*nk^ifiuh5D6OUC{;}l z8=xM=2vmbRP_z6VYO*G-X6m&?-PtI zXl6dNhN2p3iOT=gy2j>TMBUIw)Rvs8xw%d~3?x1RUER^|1msavLyxS{T9`Y@fl9B7 z>X3^nKOZ$&_gY_}?mW1q8S?VhzNqE767>krSpROx`d32KR%WO&U^3#RPZex1h8ubZhJZiQc zN8Mq>w#NLZhT5TqekumyHq^*mMLp|}7$1Y$`FYx_Y%+@ z-ADC2Mn^OI^P=KSQ2C=!>w7b5GTlSHGm>{Q9chXI#QUO_n`>Q%af#nS-QXM44M*+l z={ng7=$Y3-ebDHJ8uGEIXSWYEv^P-|zoHrn?&9b0<%m-dLy2ea#?O9{`9>5~{$5{m zhrWJ(-XBt>MY5d&sP$hQXEFbr>ID2qcrn2Ibo&Zp5dVrQ7Kz@}Hl=)@b? zcw5wkdZIcs3N<D2k%(l4r2V(aFoI30)eQC`E0x@YMHb~{et2E)NJp+ z)igZMx)r^R#m4_e)eG2W+D(cviRVCdBoy@viq*Gq=UN6wpPB}rp(^_QWqO(zHRM@Q z70X!b+WhvYkr;%!k+GeKGcYuvEH-3wMKHEnF2{s>ozNDh$^Bk*c3GxyQ4;C zFviAN)>Wtr>_&CuENaMa+Wfbu`VpQRVj)gBe@5)nl7N~T}O?`LyV>O{~H2Yetxgb zg`=SwPKYWPY|W0kP*GF|E2BDA7j?l_sCIhV{DC$;3U%R0sCMUI23(Hiwf@f&D1ph} zm`}Y;kUu?f7Gn<5yS_D#WHI(6ei7edxp(Fci@rA<3&+BwH^(fv09)Z{^fs&ye%>!A zR>fJQ7yiil?@HiL0=m<3pUjq98};mZU@|%~7I{|AiqGbb*I-%VJ5hJ+|HT*`^Ak^i zW3V!g#v51)TYWXJ>($n)Us?Z}jRD{I@fg#fI+7VRqy=oeEY>7m%cifk?m~USIe~gK zuTiVP_ub5e_^8#84%J>!RQr`sM<>ri*J3pEmdpl;|Ds@@OOjv3p}-}?(lIZ+qBiE7V%O+XcV{w5(ds^LIXkF%hj zWp2!f2T%<@$3Tn`;O{-c5Nl=Bjda4!*c+STQ|yi9BbfFNAsuv`vjjBR?xODe6KaET zBKmtfVj65kv;;1~l{Q`}lE3$p%x0`Y`d93T6(jq5A53;)d*VM(tEGJufA1F*n?&_@ zwAxNbldQiu(fz%z%WL8&GM=M`v}X+S2!^6|t}&>|H3{{$TZ-BTc3>SmjN1EC#Ps(j zU4GO%p(<)_v_|cqgHh}McTA=Ae~y3}e1#f`fLNx16sVENgT=6}btbBTYpB)Z7u(
&wNUkc#SmPDnejT7$B1$K`SV`_)d;9y3sih0YQva~n!Vdl9XyQs@W28fw*SQL`Ti3_!x|-QSFvSm8*+dmd)b&yWXDN*Jg}C4e3-=g$1Z(wh1+~ ze^?))X7LYHN8-ox_rB*3#FfO)pypDa_~r%%p*l1cbpvxy`3vK_=7P&fP(zzgcf1cZ z2ToyaypH;Sku!mLhE-AVUN%0(#&@C~!Btc{|DZa~`A7FlTE2i-G-p9i+CkcB{%jp${V`xfq;VG!e`Wp3Ux~4K4%rMMEe5#G_M-BCP zEQ@#1A2SA;XP*`Ii1Q+kz;(h1=&e;2wIdC;1*W1N$pX~mTaDdtKMuxRL8il7P;ben zxCoO5`+MJozO3%zxN$ZSDZn7KWZfEW-=qt0`;!wh8mf^sP+9TdL2Y9yPa4Z_n~gUFEi_3 zvoKF)fA5FJPS$y-Av=Q_s&`lft7kFGX##4lY(jPT5bDBjQIE=()jW#GsFzU^Yid-- zvs&|Kbxnm5BxsK>k9y`+Q9Z7Udd7`V7wCYxKp#}YgD?(`w)t~Vk7xx}#zUw_8aKr3 z3n_5|@jSQ-kGcd@U`RGI%g3P}$s$aSJ5ZDIicNoyX^6+jZaR_^bw>qI9WQC)l~5Z_ z9n?s5LOqg!Ha-nw6L*){gl(t`9kUrvP?PB+YCR{+!M?yolomAtJ#(5ZxIbz?n25U2 z66Y0wQPD5?23s6IT#~P5wj7&yr8Px1= ziRySq48-B6IkOCPW1CQO^Tp$(dhC)#7=f@0K%EmjPt2^&UKm~`PdN>X>#0yXrSD~KycI<}x zP?I!gesiI6s0-J@+}Hxu&P?knRQr3Z$1ojp>3n|He?>Ar7T~o?LaBo0rP02SzxNx8 zn^AX|t*~jJ2tl>VjI%eNm5Q5UTu0RJn<$M=-B2>pvfXH8$gs z^$qF{eqcR}Q^eo<1;q}SiFmc5W_k8UP0pF9)v^vV<7w37{A7($%*=@(3?aQZYM6)Li(0nskvu&74Su+BdSJ@+;Z&hNup9!sa*z z%cA>=Ksf>h!ptNaiaChyL=ENNs1ChHHShyE$F&lnB z&5`t_%v=aTy>s$>~P(#Zx6u01bCgXeSh%)ANny{R|_s!=<)PC>+^)`%K-gImg zYQ#3!_%8fT`~Wtfz5NyZy2QWbyiHx!?s=D_b&&9mEx>exY4 z`dQSSTt_Xxdp7+e>RJ0&Gh1ssRJ{4>dxQT_$O3@-%+zaSxvKybD`R6k7{QiX2lVh9yens-n98CYPn`h zOk2x*u&9js$)_u-;jyTmF2xSG0o8EI+GbUx!*s;6VIQo8eeoRj#tL=(yzb{4Dk{FxC7=ekpf0orHAH`48N81rFjGB$?+>Fpp~^o%jnH${GW&vhgi-7JdtbRE zMvd5FRQgKPBiW96cO1b?=w2bvg@CVtSr*+;ug_Jeo$(&(5hQ778cd1md0JElvZERf zMO~CBWnGBA)q1gYi^8YjgPuu z3e@{Oy|plQBVG-=;9=Aqm)mdX>H>2KXefV2O}=fY zg6B{TKSkZ?d(Fh<7-;e6ZSsTBDnp-bX*L~B9^{+|y zl?2Udzt-l?VxZzlP#sHynv6M69V>~NRJBm$+M!0KC+dQOQS~OGIyes(<7QO(I&J*D zzemvACD2|O7>0pu&9iQXfy947eO#V_S|yuMcX|#riEg8Qc6^K#F+w~0lM?E}6HxV+ zp5Bs5^Uz8i~)SA&=bI zJoCh;czPSphw4yi^e&8gl&vwU)_-3DYG^oW(o9A@<3*?;-fZK$ZT=ZlM{c1y{u*_` zuQoq=7xV0sp++c!jpsxSc`<8g%&YZZiGW@@!%&lEfi18GH90qWF_=^HPh4iWf#L(~6iCYoa$2HW2UZY0xqt)qd;*q+aVEuO|A%p}ipGBAv|FH#<^fVRI zp&msM)SZ+-jX(u!eN@NW+x$M(!I+lxQ8s@aULn2*)8iDkmsxJRt-fE(hsx5}f&zC? z@Bfm${k>mM9Er_|r|M%mFw{C3)q%yRk=tP7yHM@?fx7dMzQ#hR5p>JiKsf5zHnO&} z_Ch_wA*cpMVJ4i0`SAdj#?M#=!}^(zSfenQ_zBF6FEEV#AW47ob$}4N z5Nn|MR=NqQ!BrTDZ&0&09*;`THaV*2`szmM`B5DYL+y~2ur9X4YOgYHk z`vt|ho~*wbgU!!m(T12WA`4ZJ^p!=w2mUx(XNrhVb;sMe(<4)`~+)UOS zBg`YIfLfk)t?f~hdH@D!{ZAz@3};~_O!cc7@{ZOXs2!`HbsTC07Gh6ajhe*4Bh3Y; zS(l(z)kf6hJ%F0D$512pCwlMyy98A58R{8-LiIS}C^O`VQG0$yR71s4<;$YB;@Y?z zJEA6G!qMjEgfv)~cneheLhCxz+}Jak_1}!4y-R{7Nr^FL$U9?w;xlm{zQgsnWvuy@ zywx~==OFO}b`!gQ=Rwj{m^$77t8`Vo!wx6ljl2M4Rn&Ndl?D6kjR zfxDc-Gx!ZgfWF z&qZxOr?41??lJWTVJ+fEum&dIYwU{Ei67m|`p-)s$v%JYHx#SlRpKvjw+ig%^E`Jr z^nkx}i1_e><_^mpVzrRI4>yzE?TA@D>5uw*e;MUE>Mt%-J7&Jr>Ui8N$0ewpb0up1 zZ#nLoghM3g1I8KDhs38C6ThK$zUY6LNt71*5U+!M@d9dpsC2^Y3)NBUx<2Y9)DqRs zKGaL<3~GP4ZsSi}Ti{=t;djzB5DWD-OJdE7+Tp@6JFc_d#Y)8EoHEb6F=~T(hH>!? z>INd5HXBe%Oh`NgH3Dua0@|sJF~j z{C`m8f1n;kluM>VF;OGd8e8Kb)JrP!W&T`{8@hzvzyIC*Pt(Jx7@GpKQSXA)s5{tX z)Ayk|a1NK@BkYW0uKIhwp!gLN5kGa!jKD+G2);(WGrn3QTsQkiOsV&O4g#TA1NH2t zqV9Mu>W)^Up4A3agZoe&JAoSNE2!7?0}R7=sCM$*@b`Y1tr!*}{v3N_`kUq((go=1 zHx&JDnZG&_^R{WIKk5SGP+RRR)Ox*U&2qjV{Q~O=Oi%nRj=|)2{k>mMT!Ff9 z_Iu{flvm(X;@|GE{u>aOeBWH~73!IPMcrxi2lnNH8j%X%(xxZ;fJV^i}}zs&nDSJGh}H{&ngS*t(FIKVq4UY(Q~i^Zo@X1=8?bm z`+sAx4DpYc7DFGKw_PjLFDR}=ZQ)U$nmLmLXAocL5?Di^;9q9wo}voIerC4Ve5lpY z5`%CwuEN!*mr$MO=2LDz)N6Ycrot$Hn?EJbi0zb)TD}Qin2+sMF&}Yv6oG;S4q#>c zifXvROY^N)C)7HhWPN~HiRb>u3~4j#IMj&kM7;xEVr~q1Wk#?$>Jd!CN_Y^P>HQ!3 zwRs(ON4*O+V19gx>S53ulU^4K6Q6+D@iZ>L?-+vf|1}pngBk(fTl4i>5bBXsMs>Ug zYBenK@>zek38<&h-kCcH#cV2wdZtTIbKq|b#Z>Q22by4U;uBHjFQGad@WH%I3u8Ir zBe67IK$TDO(Ufa|g}J^ng@BgLdDPH+LRBpD$&AcIRK>HXA&mRkj7U+`pM3O0rEkJa zcn8a4)Gwx;nyAl$^HCjrhq~dkUs?aH2-G7`0S{nBjPcEMsGfBQ>H;fKlk1d6cF>CT&?F0>9y;SJQC1o;BI zFQq!5MrH$s;uq8i7WND9{?KYSYVN#5bu7JqfcItguULin9;}5i0s_1dX%WD`f2f3= zBy7Ss5lq1&7)m@r!~jRjuNG#&ewYfEpc*`knpE*41$cK>9CHvKje7s@#!yTcIlvqG z+E|kKuhvs8f#M{@i4x!qRSoM5RQgS8s;B|psUFRwREt_Ns0=(aH3rGC~ zvlPo>qJ$>B32H<(qGsIKbOiilX8@Q5)V$^xprE z2&iJBBxVT9quzRbQ61ZX+5umqmTB>%0p1SR4z(IqqDJ66YWaOY&6VI}W-e4f@jL*4GA&VsfQYIcNqaaf*Uvp z6J;}7;|$ae_7ZDg+3aQx%th^R-%yhv%Qlj-1@4$GK3?u%C_pfqH4g$zzsZ71X2~kA3i-jn~g>*8dvR9X~@ox`g@6 zqbr4)OWiQ5-X7Zs=vhBPT_AV<0Pmw#H`K^XL9LQ=7>qFrmmT6wvm}$*4KA6OvDS5ci<&=(hD6YAa11 zYAlYrlQuR!0o9?csCrjWll7f7eV8d<7d7I8!(0>CK!VoiJ=8OdP~4c>8ipFF#+VHI zqwaJD>P~lIAl^l_<0}#1{g9d#bwhkrf&7Aa-yjA~~gYUod4AihM6OsvwTBiS%MakmbE!~{BG5*&eg<_jH=j^L){J&;wV%*3sCLuM3uXUx`B77@+r!Cx=vvNngjK*01iRj z;cnDWzC+znl5(c!B~i1#qm55TTmQWN{ne;se&eENxo9Q|{5<|9O~-yteMvFSHd2>( z0o%bkr0JVb9r`pJM4flGo=c}M+q@T)-^$s5y#8D~Ee4YJMF0M38zL(xtVfZO#Fbui z{D-){a@TAgi;0Pkvm-T|@Nd*xP5e0F3zWIc1#Xk3qdw`esB@Ee9@0D5dVHVh9Vu)% z@28hU6zs@_mr?K`jh(l>POb)t|2*Q5o`ZAb&jjRCw^M?&&G?>1OK^eSSco$x=?iE> z2fyLv9m{@R*hC$-E`_ex%!-6{)U~}-xFr>i*-kv5u@K_5$PZN}hkj}bAYPpGvYfxr z)uTBk?UmwBPUygL!pZCiT%*if&H&v>G2a&*$aQ#cU? z``U{YL4KRgDN6cC8qradvXhDD=3GR4vn|UPAkKEuHgXQ8j(%|cc}ykkHzLvW`?qUs zh3X_!B;MYZy2OQRQc%YvF7kpnU-vqj2CTNxW_gD&B!pJDx+Y`3Bv4BPyDUi_NeVmvF(Hq~#$#jPysgQyGY- z<9tZnETj#ieni{$J;FzAeYF>f-#_$Ti$@i+#~TXkFOGcU0&M-xVq8X?-%sVYV= zlX6a^p}yFhGF1t;B|P>&jq~r*d7mryQhyYA@i=v`TRR&G?3?09b zahLdP{PWc?v)jMB@{t!Y(avV*5Qrg&0 zehB3bl73Imza$CCNcevpE6Ll*d5Qd4bYdD|9r_ETI--y^oV;i>o|(34;(Yu{-a5kk zgNjZV`QvT-?Z{h6`e52QK$^RN27aaRYtEURhwTLjI?<_Io3oK3_Tbw!@6g|n)p3)? zw$jiN;v)$!Bpltgk=k%#QL7>8x+smD^>R`-Ti<^F_25?<761MQc+_%@ey2NB$pb>sbeu| z<;fdhTWm$WapdhKUB^_>qU zq;=tpLxuLl^&x&T4d`1w9ehRQAvAB{!;vfQ{OsXA^$!X;YVy| zK4%&_F`BacBLq%n&N7@qF8>)!!6{_MqT-#|_g{&I^@Gz;3T~vQI^qy6N#)6$I&O3JBuz(sTV@;a zO@x=*hAYwNdg8@RF()7K@q}A*e&*E8Rv@hf^->Z};O$jp45Si&K;UHNJis}Z1`pf2 zy+F8y4OgLTP22OUgyV3&CZ3wc8gn+H>@80IrCO&jb>4EOp}j`LFA&~i>r%~mO!@fU z-&H2kkPi4brw|^*If_dEJvtK^!TEqP|Jsb*)}f@Ortz{g-jncg8m>+!ejc}pwmK4bxGsKZbIC;9NnS z57b{pxHlbILcBEfE|K<$GZpbE#53BFa34}I78!9lb!4XDa2r-UfC?9}up%7IIZsi! zC0@a~wxO4l`+4vOgU)s$5or4|;rTZ2AIeUk{kEJsj_I@VdkP&Uqm^w)8M_Hz!VYw# z7iTvb(Xod!361r|Qka;ttIaz?qx+~AoAO!g1?SQBRU4jReL%jB=#-!0WB&7}mH*dq zmPV#f$cOwR5za5zmUvG}y(8S5a1R>Rp|2;)QU5z>|5COA@h6n2gfX!xdF#nb$eD%k zQ_38{ALR3|m^c;mS?T9-k_tL**x^xl357Fq-cf|3DR~QR{(Z{VB5k;hm!jOyqcY)U zHeL<;bDdmxfwL6h(wwKb3Adgap(iep0K)TZrJoH&BT$#T!jw5~^Nx{Lo|At-!Wm26 z4*Zu+ETYj;q-Q2Amc5x+r1v5HI(5r%ZYF&c@m~q&=g;cA?>qO9@Rd`?7b>(O^AH8= zkamg2GI0SN!Q|~AZ4zmB>;?Ma1oDD7{~&!6b+2Pg;?FqOkw2Yy9NRug&MEzeBc6U% zZbG9vVo)%_e+tE-p*h5ZQAbKn{VkE7M||pSCx0vTlK)J^@5Gmrmw}7wXl?5!CH)|0 z2hPQu-of>~L+xIsu?ZB;$2pXEIeW21wxO7$2e98yqVZXz-6a0=7)x3$P95(#V-r5d zd4qDrxY$>WWXs?4O7S1k+}pM%cgS2og+*L6(|;OHO}Q%++(Y^{I{3)u9VY!((khZS znl^e6|BHAZ;yMmeb|2?u(taM*ZFm;x8K`qu&;RE!oQnLj*3Jtub(AK4fba)fDJxFo z;#X~lZ`g7w+l;)a#AB0xk()SU^Z5GQ`J226)JaLWF6k3(2UU;z=Sv!UM~cqTf9x@v z^sa;l(!ez;=HkpvLwjhbk1Z2IV>LvPBGGs5;;OVs_noK z%>Hxz7of6^E%xsGRFk6w>78icgf4;+sg#s+Jm(k6P9tq1HlT2&kG zNcj}D?Gc1KlKz0WyMf5hZmK{lFYIEv% zfZ?|7bkx@)VJ7D}+ZahsN&Uwj zYiaBwb+*yYdMw$+Q<`InZ25j1d!#1^(-bgOttrL@@C zcD4Z*{XpY7x)An}uVXd&fBx(!;e@1}qwR#0(Q${ohPEt!F~OUEPID4}A@PUpX-dNU zy$tWjNnU3f(%05HGSU#=!8#SlFJ{X}Al#QSMQvQ=A`y?sUh$Z4L&A$~UN`G<(sX$D zpNot9_lRkG8`1XkXI>o29iieMq!+-_WK5*NEZCh+Jiv&=dl7C+_%Y?~5zlJdTVyZ# z7>iM+t3Lnf>*u#b29o%i3gbCbkya8HP`MJ7I}#p1{xdqT$~Hm~??_}jzl3r}$=gny zTb$F$jYqpW9uU{D-kObc2FKCg)$ooyR7_$UszGKAQXg^AXtn_rYRv_zlNNzSqF`;} z$vDqZ_nVYh+J53b+HF8Mt!-azb+b2-$0ehajVPlQ4X-6FI%h>Ca7?4I za2iTWxm_m7=}lv!ICqn`mO9TVznyRt%4MhAT*|$%7hFb~ju)iI=KPCr51ZyTA##nx z`JC%)B1ukp!Ub^-4eOXjJd_J$rO`-Sum<7ke~ zYs&cZVCzyQEgf7(J2{m`yc_vlh!-Wj3gstw9pU-+B*TwFM@UFVrjEnbxP+TgDK8bO zdKK8B$!kQoGHLDb24!k;)*_ymvN{gYrjB;Bo1gTxw(fQ8WwQ8R8W7O@n?hn68cj#x zf`m^Hj!5_+r;dU6Cw`@&VN|+D{%%~wd7koXIB$|ypLj+te2e^lu>=wIlqIhUU@0JSzUM zm9FFO_M*q^h0fXdPm0sVWqZ+6)DN-YB-A}ixGL@I$Yu8*=gWV3T!;b>$-IiUNv~w{ zB4K1Yxr@qQ$$P|^jRtq=B>m@6m~zi;9i`Qz16yo-1@UNvmt{WBFO6W>X_8C-lc>0Jn?_e$}zKH+basYQAP!a6Q;!B)7Lv>~)x zjPt&k|76lgX9^sml8$$_(ihU&lBZ)16!zbGI)k6NR+MJ(kC*?)A$GybZp_g$3=&EF(myM=kHVur)(cgz`2h)eJHoq zmU~F!SIHkwUK~yx2PpHMwBx8F9_0hEC}q=NdY6PBMCMZHjO{>1ylWdML!KY;TNJKM zBe_XmN?J$C>&QuXKWT&T=kdq}UfPQ)x`p!9h{v{RzgXRtR6b!FD`GpK3c;LBXta_%or;eSRpDA<7 zwpA9lY8_pmk)Ov$3h3DPpR_wPTHdBdCH;dgV)K6|{VwHyr?HRt+}>pk(hm_%PI@oO z?kAp@j{Ix$+Y+8lc%VyQB$#KKI$lrZ8&doCL%o;ztC`1+6W@7qZ(lyLrC9jZ?Fw*{yfU) z`OoD7YdBj`;2$iAew?AUV1G)_CEf|IVt*Q)Pu|~@-9h*b>D#!#M$(dU4&f|BdLGh7 zlNW_>d&2WDJ#}IbPEDCN7+J&Ef!@wX9ZSiGz`~7zPl)fNl8zuM>hLFh1f7`7`GxZU z`OP_3k?(KsI@l5(eAEzqrg5!b>p+EhVRn zj;XkbcB+$})pp}7>A%rlYVz8XcAk74(Fu3e-^1BPLJ}?zo5W@mif0>Bp{5k-PGdTz za#km=E9Y?1MsfZ{{%6i{ z*67ovWni0@9l8W=nmaY+{7fyoHSOLqFeD_zDbb;A^Y(!~ItO;atUbE~_Gr^G&}4US z)3i&=ZEJJ;)}@S~^4+%85BIey9~|gqs7}-7Jp!9{4{Xu0L(3j*J9i3f+O1_%wYqKl zT;H~XaZ7o%DA>7!ic(^F>?VH6w{>pf_bq0moPjy=7tED?diTzLK|dqgW_R}6zu^CW I_fEz9A2oFzj{pDw delta 38631 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 diff --git a/locale/en/LC_MESSAGES/strings.po b/locale/en/LC_MESSAGES/strings.po index d38038aa..fc05dd8d 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-05-20 01:44+0300\n" -"PO-Revision-Date: 2019-05-20 01:46+0300\n" +"POT-Creation-Date: 2019-05-22 18:30+0300\n" +"PO-Revision-Date: 2019-05-22 18:30+0300\n" "Last-Translator: \n" "Language-Team: \n" "Language: en\n" @@ -62,17 +62,17 @@ msgstr "[WARNING_NOTCL] Editor is activated ..." msgid "Do you want to save the edited object?" msgstr "Do you want to save the edited object?" -#: FlatCAMApp.py:2255 flatcamGUI/FlatCAMGUI.py:1618 +#: FlatCAMApp.py:2255 flatcamGUI/FlatCAMGUI.py:1621 msgid "Close Editor" msgstr "Close Editor" #: FlatCAMApp.py:2258 FlatCAMApp.py:3349 FlatCAMApp.py:5799 -#: FlatCAMTranslation.py:89 flatcamGUI/FlatCAMGUI.py:3726 +#: FlatCAMTranslation.py:89 flatcamGUI/FlatCAMGUI.py:3733 msgid "Yes" msgstr "Yes" #: FlatCAMApp.py:2259 FlatCAMApp.py:3350 FlatCAMApp.py:5800 -#: FlatCAMTranslation.py:90 flatcamGUI/FlatCAMGUI.py:3727 +#: FlatCAMTranslation.py:90 flatcamGUI/FlatCAMGUI.py:3734 msgid "No" msgstr "No" @@ -139,7 +139,7 @@ msgstr "[ERROR_NOTCL] Failed to write defaults to file." msgid "[ERROR_NOTCL] Failed to open recent files file for writing." msgstr "[ERROR_NOTCL] Failed to open recent files file for writing." -#: FlatCAMApp.py:2930 camlib.py:4453 +#: FlatCAMApp.py:2930 camlib.py:4454 msgid "[ERROR_NOTCL] An internal error has ocurred. See shell.\n" msgstr "[ERROR_NOTCL] An internal error has ocurred. See shell.\n" @@ -208,7 +208,7 @@ msgstr "[ERROR_NOTCL] Failed to write factory defaults to file." msgid "Factory defaults saved." msgstr "Factory defaults saved." -#: FlatCAMApp.py:3339 flatcamGUI/FlatCAMGUI.py:3103 +#: FlatCAMApp.py:3339 flatcamGUI/FlatCAMGUI.py:3110 msgid "[WARNING_NOTCL] Application is saving the project. Please wait ..." msgstr "[WARNING_NOTCL] Application is saving the project. Please wait ..." @@ -310,7 +310,7 @@ msgstr "" "format." #: FlatCAMApp.py:4488 FlatCAMApp.py:4521 FlatCAMApp.py:4532 FlatCAMApp.py:4543 -#: flatcamGUI/FlatCAMGUI.py:2998 +#: flatcamGUI/FlatCAMGUI.py:3005 msgid "[WARNING_NOTCL] Adding Tool cancelled ..." msgstr "[WARNING_NOTCL] Adding Tool cancelled ..." @@ -352,20 +352,19 @@ msgstr "Wrong coordinates. Enter coordinates in format: X,Y" #: FlatCAMApp.py:4661 flatcamEditors/FlatCAMExcEditor.py:2285 #: flatcamEditors/FlatCAMExcEditor.py:2292 -#: flatcamEditors/FlatCAMGeoEditor.py:3555 -#: flatcamEditors/FlatCAMGeoEditor.py:3569 -#: flatcamEditors/FlatCAMGrbEditor.py:1037 -#: flatcamEditors/FlatCAMGrbEditor.py:1138 -#: flatcamEditors/FlatCAMGrbEditor.py:1399 -#: flatcamEditors/FlatCAMGrbEditor.py:1649 -#: flatcamEditors/FlatCAMGrbEditor.py:3784 -#: flatcamEditors/FlatCAMGrbEditor.py:3798 flatcamGUI/FlatCAMGUI.py:2412 -#: flatcamGUI/FlatCAMGUI.py:2424 +#: flatcamEditors/FlatCAMGeoEditor.py:3648 +#: flatcamEditors/FlatCAMGeoEditor.py:3662 +#: 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 msgid "[success] Done." msgstr "[success] Done." #: FlatCAMApp.py:4794 FlatCAMApp.py:4863 -#| msgid "[WARNING_NOTCL] No object selected. Please Select an object to flip!" 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." @@ -386,8 +385,8 @@ msgid "[success] Flip on Y axis done." msgstr "[success] Flip on Y axis done." #: FlatCAMApp.py:4971 FlatCAMApp.py:5011 -#: flatcamEditors/FlatCAMGeoEditor.py:1356 -#: flatcamEditors/FlatCAMGrbEditor.py:5165 flatcamTools/ToolTransform.py:748 +#: flatcamEditors/FlatCAMGeoEditor.py:1355 +#: flatcamEditors/FlatCAMGrbEditor.py:5309 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." @@ -416,8 +415,8 @@ msgstr "Enter the Angle value:" msgid "[success] Rotation done." msgstr "[success] Rotation done." -#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:1299 -#: flatcamEditors/FlatCAMGrbEditor.py:5096 flatcamTools/ToolTransform.py:677 +#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:1298 +#: flatcamEditors/FlatCAMGrbEditor.py:5240 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." @@ -438,9 +437,9 @@ msgstr "[WARNING_NOTCL] No object selected to Skew/Shear on Y axis." msgid "[success] Skew on Y axis done." msgstr "[success] Skew on Y axis done." -#: FlatCAMApp.py:5197 flatcamEditors/FlatCAMGeoEditor.py:938 -#: flatcamEditors/FlatCAMGrbEditor.py:2223 -#: flatcamEditors/FlatCAMGrbEditor.py:4687 flatcamGUI/ObjectUI.py:991 +#: FlatCAMApp.py:5197 flatcamEditors/FlatCAMGeoEditor.py:937 +#: flatcamEditors/FlatCAMGrbEditor.py:2365 +#: flatcamEditors/FlatCAMGrbEditor.py:4831 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 @@ -449,9 +448,9 @@ msgid "Add" msgstr "Add" #: FlatCAMApp.py:5198 FlatCAMObj.py:3302 -#: flatcamEditors/FlatCAMGrbEditor.py:2228 flatcamGUI/FlatCAMGUI.py:532 -#: flatcamGUI/FlatCAMGUI.py:726 flatcamGUI/FlatCAMGUI.py:1616 -#: flatcamGUI/FlatCAMGUI.py:1948 flatcamGUI/ObjectUI.py:1007 +#: flatcamEditors/FlatCAMGrbEditor.py:2370 flatcamGUI/FlatCAMGUI.py:532 +#: flatcamGUI/FlatCAMGUI.py:729 flatcamGUI/FlatCAMGUI.py:1619 +#: flatcamGUI/FlatCAMGUI.py:1955 flatcamGUI/ObjectUI.py:1007 #: flatcamTools/ToolNonCopperClear.py:146 flatcamTools/ToolPaint.py:143 #: flatcamTools/ToolSolderPaste.py:121 flatcamTools/ToolSolderPaste.py:481 msgid "Delete" @@ -529,7 +528,7 @@ msgid "[success] New Project created..." msgstr "[success] New Project created..." #: FlatCAMApp.py:5923 FlatCAMApp.py:5926 flatcamGUI/FlatCAMGUI.py:613 -#: flatcamGUI/FlatCAMGUI.py:1831 +#: flatcamGUI/FlatCAMGUI.py:1834 msgid "Open Gerber" msgstr "Open Gerber" @@ -538,7 +537,7 @@ 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:1832 +#: flatcamGUI/FlatCAMGUI.py:1835 msgid "Open Excellon" msgstr "Open Excellon" @@ -662,21 +661,16 @@ msgid "[WARNING_NOTCL] Export Excellon cancelled." msgstr "[WARNING_NOTCL] Export Excellon cancelled." #: FlatCAMApp.py:6267 -#| msgid "" -#| "[WARNING_NOTCL] No object selected. Please select an Gerber object to " -#| "export." 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 -#| msgid "Export SVG" msgid "Export Gerber" msgstr "Export Gerber" #: FlatCAMApp.py:6289 -#| msgid "[WARNING_NOTCL] Export SVG cancelled." msgid "[WARNING_NOTCL] Export Gerber cancelled." msgstr "[WARNING_NOTCL] Export Gerber cancelled." @@ -855,17 +849,14 @@ msgstr "[ERROR_NOTCL] Could not export Excellon file." #: FlatCAMApp.py:7199 #, python-format -#| msgid "[success] SVG file exported to %s" msgid "[success] Gerber file exported to %s" msgstr "[success] Gerber file exported to %s" #: FlatCAMApp.py:7206 -#| msgid "Exporting SVG" msgid "Exporting Gerber" msgstr "Exporting Gerber" #: FlatCAMApp.py:7211 FlatCAMApp.py:7218 -#| msgid "[ERROR_NOTCL] Could not export Excellon file." msgid "[ERROR_NOTCL] Could not export Gerber file." msgstr "[ERROR_NOTCL] Could not export Gerber file." @@ -1031,7 +1022,7 @@ msgstr "[ERROR_NOTCL] Failed to load recent item list." msgid "[ERROR_NOTCL] Failed to parse recent item list." msgstr "[ERROR_NOTCL] Failed to parse recent item list." -#: FlatCAMApp.py:8110 flatcamGUI/FlatCAMGUI.py:970 +#: FlatCAMApp.py:8110 flatcamGUI/FlatCAMGUI.py:973 msgid "Shortcut Key List" msgstr "Shortcut Key List" @@ -1239,7 +1230,7 @@ msgstr "Total Slots" #: flatcamTools/ToolNonCopperClear.py:627 #: flatcamTools/ToolNonCopperClear.py:644 flatcamTools/ToolPaint.py:538 #: flatcamTools/ToolPaint.py:608 flatcamTools/ToolPaint.py:743 -#: flatcamTools/ToolPaint.py:840 flatcamTools/ToolPaint.py:995 +#: flatcamTools/ToolPaint.py:844 flatcamTools/ToolPaint.py:999 #: flatcamTools/ToolPanelize.py:385 flatcamTools/ToolPanelize.py:397 #: flatcamTools/ToolPanelize.py:410 flatcamTools/ToolPanelize.py:423 #: flatcamTools/ToolPanelize.py:435 flatcamTools/ToolPanelize.py:446 @@ -1305,8 +1296,8 @@ msgstr "" msgid "Generating CNC Code" msgstr "Generating CNC Code" -#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5165 camlib.py:5624 -#: camlib.py:5887 +#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5166 camlib.py:5625 +#: camlib.py:5888 msgid "" "[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " "format (x, y) \n" @@ -1328,8 +1319,8 @@ msgstr "Rough" msgid "Finish" msgstr "Finish" -#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:724 -#: flatcamGUI/FlatCAMGUI.py:1615 flatcamGUI/FlatCAMGUI.py:1946 +#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:727 +#: flatcamGUI/FlatCAMGUI.py:1618 flatcamGUI/FlatCAMGUI.py:1953 #: flatcamGUI/ObjectUI.py:999 msgid "Copy" msgstr "Copy" @@ -1552,17 +1543,14 @@ msgid "[success] Gerber Offset done." msgstr "[success] Gerber Offset done." #: camlib.py:3512 -#| msgid "[success] Gerber Scale done." msgid "[success] Gerber Mirror done." msgstr "[success] Gerber Mirror done." #: camlib.py:3558 -#| msgid "[success] Gerber Scale done." msgid "[success] Gerber Skew done." msgstr "[success] Gerber Skew done." #: camlib.py:3596 -#| msgid "[success] Gerber Scale done." msgid "[success] Gerber Rotate done." msgstr "[success] Gerber Rotate done." @@ -1571,7 +1559,7 @@ msgstr "[success] Gerber Rotate done." msgid "[ERROR_NOTCL] This is GCODE mark: %s" msgstr "[ERROR_NOTCL] This is GCODE mark: %s" -#: camlib.py:3989 +#: camlib.py:3990 #, python-format msgid "" "[WARNING] No tool diameter info's. See shell.\n" @@ -1588,7 +1576,7 @@ msgstr "" "The user needs to edit the resulting Excellon object and change the " "diameters to reflect the real diameters." -#: camlib.py:4454 +#: camlib.py:4455 #, python-brace-format msgid "" "[ERROR] Excellon Parser error.\n" @@ -1597,7 +1585,7 @@ msgstr "" "[ERROR] Excellon Parser error.\n" "Parsing Failed. Line {l_nr}: {line}\n" -#: camlib.py:4531 +#: camlib.py:4532 msgid "" "[WARNING] Excellon.create_geometry() -> a drill location was skipped due of " "not having a tool associated.\n" @@ -1607,12 +1595,12 @@ msgstr "" "not having a tool associated.\n" "Check the resulting GCode." -#: camlib.py:5074 +#: camlib.py:5075 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "[ERROR] There is no such parameter: %s" -#: camlib.py:5144 +#: camlib.py:5145 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1626,22 +1614,22 @@ msgstr "" "therefore the app will convert the value to negative. Check the resulting " "CNC code (Gcode etc)." -#: camlib.py:5151 camlib.py:5647 camlib.py:5910 +#: camlib.py:5152 camlib.py:5648 camlib.py:5911 #, 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:5380 camlib.py:5477 camlib.py:5535 +#: camlib.py:5381 camlib.py:5478 camlib.py:5536 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "[ERROR_NOTCL] The loaded Excellon file has no drills ..." -#: camlib.py:5482 +#: camlib.py:5483 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "[ERROR_NOTCL] Wrong optimization type selected." -#: camlib.py:5635 camlib.py:5898 +#: camlib.py:5636 camlib.py:5899 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." @@ -1649,7 +1637,7 @@ msgstr "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." -#: camlib.py:5640 camlib.py:5903 +#: camlib.py:5641 camlib.py:5904 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1663,11 +1651,11 @@ msgstr "" "therefore the app will convert the value to negative.Check the resulting CNC " "code (Gcode etc)." -#: camlib.py:5652 camlib.py:5915 +#: camlib.py:5653 camlib.py:5916 msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." msgstr "[ERROR_NOTCL] Travel Z parameter is None or zero." -#: camlib.py:5656 camlib.py:5919 +#: camlib.py:5657 camlib.py:5920 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1681,19 +1669,19 @@ msgstr "" "therefore the app will convert the value to positive.Check the resulting CNC " "code (Gcode etc)." -#: camlib.py:5663 camlib.py:5926 +#: camlib.py:5664 camlib.py:5927 #, 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:5793 +#: camlib.py:5794 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "[ERROR]Expected a Geometry, got %s" -#: camlib.py:5799 +#: camlib.py:5800 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." @@ -1701,7 +1689,7 @@ msgstr "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." -#: camlib.py:5838 +#: camlib.py:5839 msgid "" "[ERROR_NOTCL] The Tool Offset value is too negative to use for the " "current_geometry.\n" @@ -1711,7 +1699,7 @@ msgstr "" "current_geometry.\n" "Raise the value (in module) and try again." -#: camlib.py:6052 +#: camlib.py:6053 msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." msgstr "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." @@ -1723,8 +1711,8 @@ msgstr "[WARNING_NOTCL] To add a drill first select a tool" #: flatcamEditors/FlatCAMExcEditor.py:447 #: flatcamEditors/FlatCAMExcEditor.py:472 #: flatcamEditors/FlatCAMGrbEditor.py:451 -#: flatcamEditors/FlatCAMGrbEditor.py:1759 -#: flatcamEditors/FlatCAMGrbEditor.py:1787 +#: flatcamEditors/FlatCAMGrbEditor.py:1762 +#: flatcamEditors/FlatCAMGrbEditor.py:1790 msgid "Click on target location ..." msgstr "Click on target location ..." @@ -1782,7 +1770,7 @@ 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:1761 +#: flatcamEditors/FlatCAMGrbEditor.py:1764 msgid "Click on reference location ..." msgstr "Click on reference location ..." @@ -1799,7 +1787,7 @@ msgid "Excellon Editor" msgstr "Excellon Editor" #: flatcamEditors/FlatCAMExcEditor.py:765 -#: flatcamEditors/FlatCAMGrbEditor.py:2108 +#: flatcamEditors/FlatCAMGrbEditor.py:2250 msgid "Name:" msgstr "Name:" @@ -1884,7 +1872,7 @@ msgstr "Resize" msgid "Resize drill(s)" msgstr "Resize drill(s)" -#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1612 +#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1615 msgid "Add Drill Array" msgstr "Add Drill Array" @@ -1901,12 +1889,12 @@ msgstr "" "It can be Linear X(Y) or Circular" #: flatcamEditors/FlatCAMExcEditor.py:900 -#: flatcamEditors/FlatCAMGrbEditor.py:2341 +#: flatcamEditors/FlatCAMGrbEditor.py:2483 msgid "Linear" msgstr "Linear" #: flatcamEditors/FlatCAMExcEditor.py:901 -#: flatcamEditors/FlatCAMGrbEditor.py:2342 +#: flatcamEditors/FlatCAMGrbEditor.py:2484 msgid "Circular" msgstr "Circular" @@ -1920,13 +1908,13 @@ msgstr "Specify how many drills to be in the array." #: flatcamEditors/FlatCAMExcEditor.py:927 #: flatcamEditors/FlatCAMExcEditor.py:972 -#: flatcamEditors/FlatCAMGrbEditor.py:2368 -#: flatcamEditors/FlatCAMGrbEditor.py:2413 +#: flatcamEditors/FlatCAMGrbEditor.py:2510 +#: flatcamEditors/FlatCAMGrbEditor.py:2555 msgid "Direction:" msgstr "Direction:" #: flatcamEditors/FlatCAMExcEditor.py:929 -#: flatcamEditors/FlatCAMGrbEditor.py:2370 +#: flatcamEditors/FlatCAMGrbEditor.py:2512 msgid "" "Direction on which the linear array is oriented:\n" "- 'X' - horizontal axis \n" @@ -1939,26 +1927,26 @@ msgstr "" "- 'Angle' - a custom angle for the array inclination" #: flatcamEditors/FlatCAMExcEditor.py:942 -#: flatcamEditors/FlatCAMGrbEditor.py:2383 +#: flatcamEditors/FlatCAMGrbEditor.py:2525 msgid "Pitch:" msgstr "Pitch:" #: flatcamEditors/FlatCAMExcEditor.py:944 -#: flatcamEditors/FlatCAMGrbEditor.py:2385 +#: flatcamEditors/FlatCAMGrbEditor.py:2527 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/FlatCAMGeoEditor.py:666 -#: flatcamEditors/FlatCAMGrbEditor.py:2392 -#: flatcamEditors/FlatCAMGrbEditor.py:2428 -#: flatcamEditors/FlatCAMGrbEditor.py:4414 flatcamTools/ToolTransform.py:68 +#: flatcamEditors/FlatCAMGeoEditor.py:665 +#: flatcamEditors/FlatCAMGrbEditor.py:2534 +#: flatcamEditors/FlatCAMGrbEditor.py:2570 +#: flatcamEditors/FlatCAMGrbEditor.py:4558 flatcamTools/ToolTransform.py:68 msgid "Angle:" msgstr "Angle:" #: flatcamEditors/FlatCAMExcEditor.py:953 -#: flatcamEditors/FlatCAMGrbEditor.py:2394 +#: flatcamEditors/FlatCAMGrbEditor.py:2536 msgid "" "Angle at which the linear array is placed.\n" "The precision is of max 2 decimals.\n" @@ -1971,7 +1959,7 @@ msgstr "" "Max value is: 360.00 degrees." #: flatcamEditors/FlatCAMExcEditor.py:974 -#: flatcamEditors/FlatCAMGrbEditor.py:2415 +#: flatcamEditors/FlatCAMGrbEditor.py:2557 msgid "" "Direction for circular array.Can be CW = clockwise or CCW = counter " "clockwise." @@ -1980,7 +1968,7 @@ msgstr "" "clockwise." #: flatcamEditors/FlatCAMExcEditor.py:989 -#: flatcamEditors/FlatCAMGrbEditor.py:2430 +#: flatcamEditors/FlatCAMGrbEditor.py:2572 msgid "Angle at which each element in circular array is placed." msgstr "Angle at which each element in circular array is placed." @@ -1992,7 +1980,7 @@ 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:2995 +#: flatcamEditors/FlatCAMExcEditor.py:1461 flatcamGUI/FlatCAMGUI.py:3002 #, python-brace-format msgid "[success] Added new tool with dia: {dia} {units}" msgstr "[success] Added new tool with dia: {dia} {units}" @@ -2031,17 +2019,17 @@ msgid "[success] Done. Drill(s) deleted." msgstr "[success] Done. Drill(s) deleted." #: flatcamEditors/FlatCAMExcEditor.py:2675 -#: flatcamEditors/FlatCAMGrbEditor.py:4174 +#: flatcamEditors/FlatCAMGrbEditor.py:4318 msgid "Click on the circular array Center position" msgstr "Click on the circular array Center position" #: flatcamEditors/FlatCAMGeoEditor.py:80 -#: flatcamEditors/FlatCAMGrbEditor.py:2258 +#: flatcamEditors/FlatCAMGrbEditor.py:2400 msgid "Buffer distance:" msgstr "Buffer distance:" #: flatcamEditors/FlatCAMGeoEditor.py:81 -#: flatcamEditors/FlatCAMGrbEditor.py:2259 +#: flatcamEditors/FlatCAMGrbEditor.py:2401 msgid "Buffer corner:" msgstr "Buffer corner:" @@ -2060,17 +2048,17 @@ msgstr "" "meeting in the corner" #: flatcamEditors/FlatCAMGeoEditor.py:89 -#: flatcamEditors/FlatCAMGrbEditor.py:2267 +#: flatcamEditors/FlatCAMGrbEditor.py:2409 msgid "Round" msgstr "Round" #: flatcamEditors/FlatCAMGeoEditor.py:90 -#: flatcamEditors/FlatCAMGrbEditor.py:2268 +#: flatcamEditors/FlatCAMGrbEditor.py:2410 msgid "Square" msgstr "Square" #: flatcamEditors/FlatCAMGeoEditor.py:91 -#: flatcamEditors/FlatCAMGrbEditor.py:2269 +#: flatcamEditors/FlatCAMGrbEditor.py:2411 msgid "Beveled" msgstr "Beveled" @@ -2087,17 +2075,17 @@ msgid "Full Buffer" msgstr "Full Buffer" #: flatcamEditors/FlatCAMGeoEditor.py:127 -#: flatcamEditors/FlatCAMGeoEditor.py:2696 +#: flatcamEditors/FlatCAMGeoEditor.py:2682 msgid "Buffer Tool" msgstr "Buffer Tool" #: flatcamEditors/FlatCAMGeoEditor.py:138 #: flatcamEditors/FlatCAMGeoEditor.py:155 #: flatcamEditors/FlatCAMGeoEditor.py:172 -#: flatcamEditors/FlatCAMGeoEditor.py:2714 -#: flatcamEditors/FlatCAMGeoEditor.py:2740 -#: flatcamEditors/FlatCAMGeoEditor.py:2766 -#: flatcamEditors/FlatCAMGrbEditor.py:4226 +#: flatcamEditors/FlatCAMGeoEditor.py:2700 +#: flatcamEditors/FlatCAMGeoEditor.py:2726 +#: flatcamEditors/FlatCAMGeoEditor.py:2752 +#: flatcamEditors/FlatCAMGrbEditor.py:4370 msgid "" "[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and " "retry." @@ -2109,17 +2097,17 @@ msgstr "" msgid "Text Tool" msgstr "Text Tool" -#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:805 +#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:808 msgid "Tool" msgstr "Tool" -#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4051 -#: flatcamGUI/FlatCAMGUI.py:5448 flatcamGUI/FlatCAMGUI.py:5724 -#: flatcamGUI/FlatCAMGUI.py:5864 flatcamGUI/ObjectUI.py:260 +#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4058 +#: flatcamGUI/FlatCAMGUI.py:5455 flatcamGUI/FlatCAMGUI.py:5731 +#: flatcamGUI/FlatCAMGUI.py:5871 flatcamGUI/ObjectUI.py:260 msgid "Tool dia:" msgstr "Tool dia:" -#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5866 +#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5873 msgid "" "Diameter of the tool to\n" "be used in the operation." @@ -2127,8 +2115,8 @@ msgstr "" "Diameter of the tool to\n" "be used in the operation." -#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5630 -#: flatcamGUI/FlatCAMGUI.py:5875 flatcamTools/ToolNonCopperClear.py:165 +#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5637 +#: flatcamGUI/FlatCAMGUI.py:5882 flatcamTools/ToolNonCopperClear.py:165 #: flatcamTools/ToolPaint.py:160 msgid "Overlap Rate:" msgstr "Overlap Rate:" @@ -2158,14 +2146,14 @@ msgstr "" "Higher values = slow processing and slow execution on CNC\n" "due of too many paths." -#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5646 -#: flatcamGUI/FlatCAMGUI.py:5732 flatcamGUI/FlatCAMGUI.py:5885 +#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5653 +#: flatcamGUI/FlatCAMGUI.py:5739 flatcamGUI/FlatCAMGUI.py:5892 #: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:181 #: flatcamTools/ToolPaint.py:177 msgid "Margin:" msgstr "Margin:" -#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5887 +#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5894 #: flatcamTools/ToolPaint.py:179 msgid "" "Distance by which to avoid\n" @@ -2176,13 +2164,13 @@ msgstr "" "the edges of the polygon to\n" "be painted." -#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5655 -#: flatcamGUI/FlatCAMGUI.py:5896 flatcamTools/ToolNonCopperClear.py:190 +#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5662 +#: flatcamGUI/FlatCAMGUI.py:5903 flatcamTools/ToolNonCopperClear.py:190 #: flatcamTools/ToolPaint.py:188 msgid "Method:" msgstr "Method:" -#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5898 +#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5905 msgid "" "Algorithm to paint the polygon:
Standard: Fixed step inwards." "
Seed-based: Outwards from seed." @@ -2190,14 +2178,14 @@ msgstr "" "Algorithm to paint the polygon:
Standard: Fixed step inwards." "
Seed-based: Outwards from seed." -#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5671 -#: flatcamGUI/FlatCAMGUI.py:5911 flatcamTools/ToolNonCopperClear.py:206 +#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5678 +#: flatcamGUI/FlatCAMGUI.py:5918 flatcamTools/ToolNonCopperClear.py:206 #: flatcamTools/ToolPaint.py:204 msgid "Connect:" msgstr "Connect:" -#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5673 -#: flatcamGUI/FlatCAMGUI.py:5913 flatcamTools/ToolNonCopperClear.py:208 +#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5680 +#: flatcamGUI/FlatCAMGUI.py:5920 flatcamTools/ToolNonCopperClear.py:208 #: flatcamTools/ToolPaint.py:206 msgid "" "Draw lines between resulting\n" @@ -2206,14 +2194,14 @@ msgstr "" "Draw lines between resulting\n" "segments to minimize tool lifts." -#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5680 -#: flatcamGUI/FlatCAMGUI.py:5921 flatcamTools/ToolNonCopperClear.py:215 +#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5687 +#: flatcamGUI/FlatCAMGUI.py:5928 flatcamTools/ToolNonCopperClear.py:215 #: flatcamTools/ToolPaint.py:213 msgid "Contour:" msgstr "Contour:" -#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5682 -#: flatcamGUI/FlatCAMGUI.py:5923 flatcamTools/ToolNonCopperClear.py:217 +#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5689 +#: flatcamGUI/FlatCAMGUI.py:5930 flatcamTools/ToolNonCopperClear.py:217 #: flatcamTools/ToolPaint.py:215 msgid "" "Cut around the perimeter of the polygon\n" @@ -2222,21 +2210,21 @@ msgstr "" "Cut around the perimeter of the polygon\n" "to trim rough edges." -#: flatcamEditors/FlatCAMGeoEditor.py:510 +#: flatcamEditors/FlatCAMGeoEditor.py:509 msgid "Paint" msgstr "Paint" -#: flatcamEditors/FlatCAMGeoEditor.py:528 flatcamGUI/FlatCAMGUI.py:648 -#: flatcamGUI/FlatCAMGUI.py:1865 flatcamGUI/ObjectUI.py:1314 +#: flatcamEditors/FlatCAMGeoEditor.py:527 flatcamGUI/FlatCAMGUI.py:648 +#: flatcamGUI/FlatCAMGUI.py:1868 flatcamGUI/ObjectUI.py:1314 #: flatcamTools/ToolPaint.py:341 msgid "Paint Tool" msgstr "Paint Tool" -#: flatcamEditors/FlatCAMGeoEditor.py:564 +#: flatcamEditors/FlatCAMGeoEditor.py:563 msgid "[WARNING_NOTCL] Paint cancelled. No shape selected." msgstr "[WARNING_NOTCL] Paint cancelled. No shape selected." -#: flatcamEditors/FlatCAMGeoEditor.py:575 flatcamTools/ToolCutOut.py:355 +#: flatcamEditors/FlatCAMGeoEditor.py:574 flatcamTools/ToolCutOut.py:355 #: flatcamTools/ToolCutOut.py:512 flatcamTools/ToolCutOut.py:651 #: flatcamTools/ToolCutOut.py:756 flatcamTools/ToolDblSided.py:363 msgid "" @@ -2246,13 +2234,13 @@ msgstr "" "[WARNING_NOTCL] Tool diameter value is missing or wrong format. Add it and " "retry." -#: flatcamEditors/FlatCAMGeoEditor.py:586 +#: flatcamEditors/FlatCAMGeoEditor.py:585 msgid "" "[WARNING_NOTCL] Overlap value is missing or wrong format. Add it and retry." msgstr "" "[WARNING_NOTCL] Overlap value is missing or wrong format. Add it and retry." -#: flatcamEditors/FlatCAMGeoEditor.py:598 +#: flatcamEditors/FlatCAMGeoEditor.py:597 msgid "" "[WARNING_NOTCL] Margin distance value is missing or wrong format. Add it and " "retry." @@ -2260,63 +2248,63 @@ msgstr "" "[WARNING_NOTCL] Margin distance value is missing or wrong format. Add it and " "retry." -#: flatcamEditors/FlatCAMGeoEditor.py:607 -#: flatcamEditors/FlatCAMGeoEditor.py:2721 -#: flatcamEditors/FlatCAMGeoEditor.py:2747 -#: flatcamEditors/FlatCAMGeoEditor.py:2773 +#: flatcamEditors/FlatCAMGeoEditor.py:606 +#: flatcamEditors/FlatCAMGeoEditor.py:2707 +#: flatcamEditors/FlatCAMGeoEditor.py:2733 +#: flatcamEditors/FlatCAMGeoEditor.py:2759 #: flatcamTools/ToolNonCopperClear.py:813 flatcamTools/ToolProperties.py:104 msgid "Tools" msgstr "Tools" -#: flatcamEditors/FlatCAMGeoEditor.py:618 -#: flatcamEditors/FlatCAMGeoEditor.py:991 -#: flatcamEditors/FlatCAMGrbEditor.py:4365 -#: flatcamEditors/FlatCAMGrbEditor.py:4750 flatcamGUI/FlatCAMGUI.py:659 -#: flatcamGUI/FlatCAMGUI.py:1878 flatcamTools/ToolTransform.py:398 +#: 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 msgid "Transform Tool" msgstr "Transform Tool" -#: flatcamEditors/FlatCAMGeoEditor.py:619 -#: flatcamEditors/FlatCAMGeoEditor.py:680 -#: flatcamEditors/FlatCAMGrbEditor.py:4366 -#: flatcamEditors/FlatCAMGrbEditor.py:4428 flatcamTools/ToolTransform.py:24 +#: flatcamEditors/FlatCAMGeoEditor.py:618 +#: flatcamEditors/FlatCAMGeoEditor.py:679 +#: flatcamEditors/FlatCAMGrbEditor.py:4510 +#: flatcamEditors/FlatCAMGrbEditor.py:4572 flatcamTools/ToolTransform.py:24 #: flatcamTools/ToolTransform.py:82 msgid "Rotate" msgstr "Rotate" -#: flatcamEditors/FlatCAMGeoEditor.py:620 -#: flatcamEditors/FlatCAMGrbEditor.py:4367 flatcamTools/ToolTransform.py:25 +#: flatcamEditors/FlatCAMGeoEditor.py:619 +#: flatcamEditors/FlatCAMGrbEditor.py:4511 flatcamTools/ToolTransform.py:25 msgid "Skew/Shear" msgstr "Skew/Shear" -#: flatcamEditors/FlatCAMGeoEditor.py:621 -#: flatcamEditors/FlatCAMGrbEditor.py:2313 -#: flatcamEditors/FlatCAMGrbEditor.py:4368 flatcamGUI/FlatCAMGUI.py:722 -#: flatcamGUI/FlatCAMGUI.py:1944 flatcamGUI/ObjectUI.py:100 +#: flatcamEditors/FlatCAMGeoEditor.py:620 +#: flatcamEditors/FlatCAMGrbEditor.py:2455 +#: flatcamEditors/FlatCAMGrbEditor.py:4512 flatcamGUI/FlatCAMGUI.py:723 +#: flatcamGUI/FlatCAMGUI.py:1949 flatcamGUI/ObjectUI.py:100 #: flatcamTools/ToolTransform.py:26 msgid "Scale" msgstr "Scale" -#: flatcamEditors/FlatCAMGeoEditor.py:622 -#: flatcamEditors/FlatCAMGrbEditor.py:4369 flatcamTools/ToolTransform.py:27 +#: flatcamEditors/FlatCAMGeoEditor.py:621 +#: flatcamEditors/FlatCAMGrbEditor.py:4513 flatcamTools/ToolTransform.py:27 msgid "Mirror (Flip)" msgstr "Mirror (Flip)" -#: flatcamEditors/FlatCAMGeoEditor.py:623 -#: flatcamEditors/FlatCAMGrbEditor.py:4370 flatcamGUI/ObjectUI.py:127 +#: flatcamEditors/FlatCAMGeoEditor.py:622 +#: flatcamEditors/FlatCAMGrbEditor.py:4514 flatcamGUI/ObjectUI.py:127 #: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 #: flatcamTools/ToolTransform.py:28 msgid "Offset" msgstr "Offset" -#: flatcamEditors/FlatCAMGeoEditor.py:634 -#: flatcamEditors/FlatCAMGrbEditor.py:4382 +#: flatcamEditors/FlatCAMGeoEditor.py:633 +#: flatcamEditors/FlatCAMGrbEditor.py:4526 #, python-format msgid "Editor %s" msgstr "Editor %s" -#: flatcamEditors/FlatCAMGeoEditor.py:668 -#: flatcamEditors/FlatCAMGrbEditor.py:4416 flatcamTools/ToolTransform.py:70 +#: flatcamEditors/FlatCAMGeoEditor.py:667 +#: flatcamEditors/FlatCAMGrbEditor.py:4560 flatcamTools/ToolTransform.py:70 msgid "" "Angle for Rotation action, in degrees.\n" "Float number between -360 and 359.\n" @@ -2328,8 +2316,8 @@ msgstr "" "Positive numbers for CW motion.\n" "Negative numbers for CCW motion." -#: flatcamEditors/FlatCAMGeoEditor.py:682 -#: flatcamEditors/FlatCAMGrbEditor.py:4430 +#: flatcamEditors/FlatCAMGeoEditor.py:681 +#: flatcamEditors/FlatCAMGrbEditor.py:4574 msgid "" "Rotate the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2339,15 +2327,15 @@ msgstr "" "The point of reference is the middle of\n" "the bounding box for all selected shapes." -#: flatcamEditors/FlatCAMGeoEditor.py:705 -#: flatcamEditors/FlatCAMGrbEditor.py:4453 flatcamTools/ToolTransform.py:107 +#: flatcamEditors/FlatCAMGeoEditor.py:704 +#: flatcamEditors/FlatCAMGrbEditor.py:4597 flatcamTools/ToolTransform.py:107 msgid "Angle X:" msgstr "Angle X:" -#: flatcamEditors/FlatCAMGeoEditor.py:707 -#: flatcamEditors/FlatCAMGeoEditor.py:725 -#: flatcamEditors/FlatCAMGrbEditor.py:4455 -#: flatcamEditors/FlatCAMGrbEditor.py:4473 flatcamTools/ToolTransform.py:109 +#: flatcamEditors/FlatCAMGeoEditor.py:706 +#: flatcamEditors/FlatCAMGeoEditor.py:724 +#: flatcamEditors/FlatCAMGrbEditor.py:4599 +#: flatcamEditors/FlatCAMGrbEditor.py:4617 flatcamTools/ToolTransform.py:109 #: flatcamTools/ToolTransform.py:127 msgid "" "Angle for Skew action, in degrees.\n" @@ -2356,15 +2344,15 @@ msgstr "" "Angle for Skew action, in degrees.\n" "Float number between -360 and 359." -#: flatcamEditors/FlatCAMGeoEditor.py:716 -#: flatcamEditors/FlatCAMGrbEditor.py:4464 flatcamTools/ToolTransform.py:118 +#: flatcamEditors/FlatCAMGeoEditor.py:715 +#: flatcamEditors/FlatCAMGrbEditor.py:4608 flatcamTools/ToolTransform.py:118 msgid "Skew X" msgstr "Skew X" -#: flatcamEditors/FlatCAMGeoEditor.py:718 -#: flatcamEditors/FlatCAMGeoEditor.py:736 -#: flatcamEditors/FlatCAMGrbEditor.py:4466 -#: flatcamEditors/FlatCAMGrbEditor.py:4484 +#: flatcamEditors/FlatCAMGeoEditor.py:717 +#: flatcamEditors/FlatCAMGeoEditor.py:735 +#: flatcamEditors/FlatCAMGrbEditor.py:4610 +#: flatcamEditors/FlatCAMGrbEditor.py:4628 msgid "" "Skew/shear the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2374,35 +2362,35 @@ msgstr "" "The point of reference is the middle of\n" "the bounding box for all selected shapes." -#: flatcamEditors/FlatCAMGeoEditor.py:723 -#: flatcamEditors/FlatCAMGrbEditor.py:4471 flatcamTools/ToolTransform.py:125 +#: flatcamEditors/FlatCAMGeoEditor.py:722 +#: flatcamEditors/FlatCAMGrbEditor.py:4615 flatcamTools/ToolTransform.py:125 msgid "Angle Y:" msgstr "Angle Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:734 -#: flatcamEditors/FlatCAMGrbEditor.py:4482 flatcamTools/ToolTransform.py:136 +#: flatcamEditors/FlatCAMGeoEditor.py:733 +#: flatcamEditors/FlatCAMGrbEditor.py:4626 flatcamTools/ToolTransform.py:136 msgid "Skew Y" msgstr "Skew Y" -#: flatcamEditors/FlatCAMGeoEditor.py:762 -#: flatcamEditors/FlatCAMGrbEditor.py:4510 flatcamTools/ToolTransform.py:164 +#: flatcamEditors/FlatCAMGeoEditor.py:761 +#: flatcamEditors/FlatCAMGrbEditor.py:4654 flatcamTools/ToolTransform.py:164 msgid "Factor X:" msgstr "Factor X:" -#: flatcamEditors/FlatCAMGeoEditor.py:764 -#: flatcamEditors/FlatCAMGrbEditor.py:4512 flatcamTools/ToolTransform.py:166 +#: flatcamEditors/FlatCAMGeoEditor.py:763 +#: flatcamEditors/FlatCAMGrbEditor.py:4656 flatcamTools/ToolTransform.py:166 msgid "Factor for Scale action over X axis." msgstr "Factor for Scale action over X axis." -#: flatcamEditors/FlatCAMGeoEditor.py:772 -#: flatcamEditors/FlatCAMGrbEditor.py:4520 flatcamTools/ToolTransform.py:174 +#: flatcamEditors/FlatCAMGeoEditor.py:771 +#: flatcamEditors/FlatCAMGrbEditor.py:4664 flatcamTools/ToolTransform.py:174 msgid "Scale X" msgstr "Scale X" -#: flatcamEditors/FlatCAMGeoEditor.py:774 -#: flatcamEditors/FlatCAMGeoEditor.py:791 -#: flatcamEditors/FlatCAMGrbEditor.py:4522 -#: flatcamEditors/FlatCAMGrbEditor.py:4539 +#: flatcamEditors/FlatCAMGeoEditor.py:773 +#: flatcamEditors/FlatCAMGeoEditor.py:790 +#: flatcamEditors/FlatCAMGrbEditor.py:4666 +#: flatcamEditors/FlatCAMGrbEditor.py:4683 msgid "" "Scale the selected shape(s).\n" "The point of reference depends on \n" @@ -2412,29 +2400,29 @@ msgstr "" "The point of reference depends on \n" "the Scale reference checkbox state." -#: flatcamEditors/FlatCAMGeoEditor.py:779 -#: flatcamEditors/FlatCAMGrbEditor.py:4527 flatcamTools/ToolTransform.py:181 +#: flatcamEditors/FlatCAMGeoEditor.py:778 +#: flatcamEditors/FlatCAMGrbEditor.py:4671 flatcamTools/ToolTransform.py:181 msgid "Factor Y:" msgstr "Factor Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:781 -#: flatcamEditors/FlatCAMGrbEditor.py:4529 flatcamTools/ToolTransform.py:183 +#: flatcamEditors/FlatCAMGeoEditor.py:780 +#: flatcamEditors/FlatCAMGrbEditor.py:4673 flatcamTools/ToolTransform.py:183 msgid "Factor for Scale action over Y axis." msgstr "Factor for Scale action over Y axis." -#: flatcamEditors/FlatCAMGeoEditor.py:789 -#: flatcamEditors/FlatCAMGrbEditor.py:4537 flatcamTools/ToolTransform.py:191 +#: flatcamEditors/FlatCAMGeoEditor.py:788 +#: flatcamEditors/FlatCAMGrbEditor.py:4681 flatcamTools/ToolTransform.py:191 msgid "Scale Y" msgstr "Scale Y" -#: flatcamEditors/FlatCAMGeoEditor.py:798 -#: flatcamEditors/FlatCAMGrbEditor.py:4546 flatcamGUI/FlatCAMGUI.py:6270 +#: flatcamEditors/FlatCAMGeoEditor.py:797 +#: flatcamEditors/FlatCAMGrbEditor.py:4690 flatcamGUI/FlatCAMGUI.py:6277 #: flatcamTools/ToolTransform.py:200 msgid "Link" msgstr "Link" -#: flatcamEditors/FlatCAMGeoEditor.py:800 -#: flatcamEditors/FlatCAMGrbEditor.py:4548 +#: flatcamEditors/FlatCAMGeoEditor.py:799 +#: flatcamEditors/FlatCAMGrbEditor.py:4692 msgid "" "Scale the selected shape(s)\n" "using the Scale Factor X for both axis." @@ -2442,14 +2430,14 @@ msgstr "" "Scale the selected shape(s)\n" "using the Scale Factor X for both axis." -#: flatcamEditors/FlatCAMGeoEditor.py:806 -#: flatcamEditors/FlatCAMGrbEditor.py:4554 flatcamGUI/FlatCAMGUI.py:6278 +#: flatcamEditors/FlatCAMGeoEditor.py:805 +#: flatcamEditors/FlatCAMGrbEditor.py:4698 flatcamGUI/FlatCAMGUI.py:6285 #: flatcamTools/ToolTransform.py:208 msgid "Scale Reference" msgstr "Scale Reference" -#: flatcamEditors/FlatCAMGeoEditor.py:808 -#: flatcamEditors/FlatCAMGrbEditor.py:4556 +#: flatcamEditors/FlatCAMGeoEditor.py:807 +#: flatcamEditors/FlatCAMGrbEditor.py:4700 msgid "" "Scale the selected shape(s)\n" "using the origin reference when checked,\n" @@ -2461,25 +2449,25 @@ msgstr "" "and the center of the biggest bounding box\n" "of the selected shapes when unchecked." -#: flatcamEditors/FlatCAMGeoEditor.py:836 -#: flatcamEditors/FlatCAMGrbEditor.py:4585 flatcamTools/ToolTransform.py:238 +#: flatcamEditors/FlatCAMGeoEditor.py:835 +#: flatcamEditors/FlatCAMGrbEditor.py:4729 flatcamTools/ToolTransform.py:238 msgid "Value X:" msgstr "Value X:" -#: flatcamEditors/FlatCAMGeoEditor.py:838 -#: flatcamEditors/FlatCAMGrbEditor.py:4587 flatcamTools/ToolTransform.py:240 +#: flatcamEditors/FlatCAMGeoEditor.py:837 +#: flatcamEditors/FlatCAMGrbEditor.py:4731 flatcamTools/ToolTransform.py:240 msgid "Value for Offset action on X axis." msgstr "Value for Offset action on X axis." -#: flatcamEditors/FlatCAMGeoEditor.py:846 -#: flatcamEditors/FlatCAMGrbEditor.py:4595 flatcamTools/ToolTransform.py:248 +#: flatcamEditors/FlatCAMGeoEditor.py:845 +#: flatcamEditors/FlatCAMGrbEditor.py:4739 flatcamTools/ToolTransform.py:248 msgid "Offset X" msgstr "Offset X" -#: flatcamEditors/FlatCAMGeoEditor.py:848 -#: flatcamEditors/FlatCAMGeoEditor.py:866 -#: flatcamEditors/FlatCAMGrbEditor.py:4597 -#: flatcamEditors/FlatCAMGrbEditor.py:4615 +#: flatcamEditors/FlatCAMGeoEditor.py:847 +#: flatcamEditors/FlatCAMGeoEditor.py:865 +#: flatcamEditors/FlatCAMGrbEditor.py:4741 +#: flatcamEditors/FlatCAMGrbEditor.py:4759 msgid "" "Offset the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2489,30 +2477,30 @@ msgstr "" "The point of reference is the middle of\n" "the bounding box for all selected shapes.\n" -#: flatcamEditors/FlatCAMGeoEditor.py:854 -#: flatcamEditors/FlatCAMGrbEditor.py:4603 flatcamTools/ToolTransform.py:255 +#: flatcamEditors/FlatCAMGeoEditor.py:853 +#: flatcamEditors/FlatCAMGrbEditor.py:4747 flatcamTools/ToolTransform.py:255 msgid "Value Y:" msgstr "Value Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:856 -#: flatcamEditors/FlatCAMGrbEditor.py:4605 flatcamTools/ToolTransform.py:257 +#: flatcamEditors/FlatCAMGeoEditor.py:855 +#: flatcamEditors/FlatCAMGrbEditor.py:4749 flatcamTools/ToolTransform.py:257 msgid "Value for Offset action on Y axis." msgstr "Value for Offset action on Y axis." -#: flatcamEditors/FlatCAMGeoEditor.py:864 -#: flatcamEditors/FlatCAMGrbEditor.py:4613 flatcamTools/ToolTransform.py:265 +#: flatcamEditors/FlatCAMGeoEditor.py:863 +#: flatcamEditors/FlatCAMGrbEditor.py:4757 flatcamTools/ToolTransform.py:265 msgid "Offset Y" msgstr "Offset Y" -#: flatcamEditors/FlatCAMGeoEditor.py:895 -#: flatcamEditors/FlatCAMGrbEditor.py:4644 flatcamTools/ToolTransform.py:295 +#: flatcamEditors/FlatCAMGeoEditor.py:894 +#: flatcamEditors/FlatCAMGrbEditor.py:4788 flatcamTools/ToolTransform.py:295 msgid "Flip on X" msgstr "Flip on X" -#: flatcamEditors/FlatCAMGeoEditor.py:897 -#: flatcamEditors/FlatCAMGeoEditor.py:905 -#: flatcamEditors/FlatCAMGrbEditor.py:4646 -#: flatcamEditors/FlatCAMGrbEditor.py:4654 +#: flatcamEditors/FlatCAMGeoEditor.py:896 +#: flatcamEditors/FlatCAMGeoEditor.py:904 +#: flatcamEditors/FlatCAMGrbEditor.py:4790 +#: flatcamEditors/FlatCAMGrbEditor.py:4798 msgid "" "Flip the selected shape(s) over the X axis.\n" "Does not create a new shape." @@ -2520,18 +2508,18 @@ msgstr "" "Flip the selected shape(s) over the X axis.\n" "Does not create a new shape." -#: flatcamEditors/FlatCAMGeoEditor.py:903 -#: flatcamEditors/FlatCAMGrbEditor.py:4652 flatcamTools/ToolTransform.py:303 +#: flatcamEditors/FlatCAMGeoEditor.py:902 +#: flatcamEditors/FlatCAMGrbEditor.py:4796 flatcamTools/ToolTransform.py:303 msgid "Flip on Y" msgstr "Flip on Y" -#: flatcamEditors/FlatCAMGeoEditor.py:912 -#: flatcamEditors/FlatCAMGrbEditor.py:4661 flatcamTools/ToolTransform.py:312 +#: flatcamEditors/FlatCAMGeoEditor.py:911 +#: flatcamEditors/FlatCAMGrbEditor.py:4805 flatcamTools/ToolTransform.py:312 msgid "Ref Pt" msgstr "Ref Pt" -#: flatcamEditors/FlatCAMGeoEditor.py:914 -#: flatcamEditors/FlatCAMGrbEditor.py:4663 +#: flatcamEditors/FlatCAMGeoEditor.py:913 +#: flatcamEditors/FlatCAMGrbEditor.py:4807 msgid "" "Flip the selected shape(s)\n" "around the point in Point Entry Field.\n" @@ -2553,13 +2541,13 @@ msgstr "" "Or enter the coords in format (x, y) in the\n" "Point Entry field and click Flip on X(Y)" -#: flatcamEditors/FlatCAMGeoEditor.py:926 -#: flatcamEditors/FlatCAMGrbEditor.py:4675 flatcamTools/ToolTransform.py:325 +#: flatcamEditors/FlatCAMGeoEditor.py:925 +#: flatcamEditors/FlatCAMGrbEditor.py:4819 flatcamTools/ToolTransform.py:325 msgid "Point:" msgstr "Point:" -#: flatcamEditors/FlatCAMGeoEditor.py:928 -#: flatcamEditors/FlatCAMGrbEditor.py:4677 +#: flatcamEditors/FlatCAMGeoEditor.py:927 +#: flatcamEditors/FlatCAMGrbEditor.py:4821 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" @@ -2569,8 +2557,8 @@ 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." -#: flatcamEditors/FlatCAMGeoEditor.py:940 -#: flatcamEditors/FlatCAMGrbEditor.py:4689 flatcamTools/ToolTransform.py:339 +#: flatcamEditors/FlatCAMGeoEditor.py:939 +#: flatcamEditors/FlatCAMGrbEditor.py:4833 flatcamTools/ToolTransform.py:339 msgid "" "The point coordinates can be captured by\n" "left click on canvas together with pressing\n" @@ -2580,371 +2568,366 @@ msgstr "" "left click on canvas together with pressing\n" "SHIFT key. Then click Add button to insert." -#: flatcamEditors/FlatCAMGeoEditor.py:1055 -#: flatcamEditors/FlatCAMGrbEditor.py:4814 +#: flatcamEditors/FlatCAMGeoEditor.py:1054 +#: flatcamEditors/FlatCAMGrbEditor.py:4958 msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected." msgstr "[WARNING_NOTCL] Transformation cancelled. No shape selected." -#: flatcamEditors/FlatCAMGeoEditor.py:1076 -#: flatcamEditors/FlatCAMGrbEditor.py:4834 flatcamTools/ToolTransform.py:468 +#: flatcamEditors/FlatCAMGeoEditor.py:1075 +#: flatcamEditors/FlatCAMGrbEditor.py:4978 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:1113 -#: flatcamEditors/FlatCAMGrbEditor.py:4877 flatcamTools/ToolTransform.py:502 +#: flatcamEditors/FlatCAMGeoEditor.py:1112 +#: flatcamEditors/FlatCAMGrbEditor.py:5021 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:1134 -#: flatcamEditors/FlatCAMGrbEditor.py:4904 flatcamTools/ToolTransform.py:520 +#: flatcamEditors/FlatCAMGeoEditor.py:1133 +#: flatcamEditors/FlatCAMGrbEditor.py:5048 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:1155 -#: flatcamEditors/FlatCAMGrbEditor.py:4931 flatcamTools/ToolTransform.py:538 +#: flatcamEditors/FlatCAMGeoEditor.py:1154 +#: flatcamEditors/FlatCAMGrbEditor.py:5075 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:1192 -#: flatcamEditors/FlatCAMGrbEditor.py:4972 flatcamTools/ToolTransform.py:572 +#: flatcamEditors/FlatCAMGeoEditor.py:1191 +#: flatcamEditors/FlatCAMGrbEditor.py:5116 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:1224 -#: flatcamEditors/FlatCAMGrbEditor.py:5010 flatcamTools/ToolTransform.py:601 +#: flatcamEditors/FlatCAMGeoEditor.py:1223 +#: flatcamEditors/FlatCAMGrbEditor.py:5154 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:1245 -#: flatcamEditors/FlatCAMGrbEditor.py:5036 flatcamTools/ToolTransform.py:619 +#: flatcamEditors/FlatCAMGeoEditor.py:1244 +#: flatcamEditors/FlatCAMGrbEditor.py:5180 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:1263 -#: flatcamEditors/FlatCAMGrbEditor.py:5059 +#: flatcamEditors/FlatCAMGeoEditor.py:1262 +#: flatcamEditors/FlatCAMGrbEditor.py:5203 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:1266 -#: flatcamEditors/FlatCAMGrbEditor.py:5062 flatcamTools/ToolTransform.py:640 +#: flatcamEditors/FlatCAMGeoEditor.py:1265 +#: flatcamEditors/FlatCAMGrbEditor.py:5206 flatcamTools/ToolTransform.py:640 msgid "Appying Rotate" msgstr "Appying Rotate" -#: flatcamEditors/FlatCAMGeoEditor.py:1294 -#: flatcamEditors/FlatCAMGrbEditor.py:5093 +#: flatcamEditors/FlatCAMGeoEditor.py:1293 +#: flatcamEditors/FlatCAMGrbEditor.py:5237 msgid "[success] Done. Rotate completed." msgstr "[success] Done. Rotate completed." -#: flatcamEditors/FlatCAMGeoEditor.py:1310 -#: flatcamEditors/FlatCAMGrbEditor.py:5112 +#: flatcamEditors/FlatCAMGeoEditor.py:1309 +#: flatcamEditors/FlatCAMGrbEditor.py:5256 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:1313 -#: flatcamEditors/FlatCAMGrbEditor.py:5115 flatcamTools/ToolTransform.py:691 +#: flatcamEditors/FlatCAMGeoEditor.py:1312 +#: flatcamEditors/FlatCAMGrbEditor.py:5259 flatcamTools/ToolTransform.py:691 msgid "Applying Flip" msgstr "Applying Flip" -#: flatcamEditors/FlatCAMGeoEditor.py:1343 -#: flatcamEditors/FlatCAMGrbEditor.py:5152 flatcamTools/ToolTransform.py:733 +#: flatcamEditors/FlatCAMGeoEditor.py:1342 +#: flatcamEditors/FlatCAMGrbEditor.py:5296 flatcamTools/ToolTransform.py:733 msgid "[success] Flip on the Y axis done ..." msgstr "[success] Flip on the Y axis done ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1346 -#: flatcamEditors/FlatCAMGrbEditor.py:5160 flatcamTools/ToolTransform.py:742 +#: flatcamEditors/FlatCAMGeoEditor.py:1345 +#: flatcamEditors/FlatCAMGrbEditor.py:5304 flatcamTools/ToolTransform.py:742 msgid "[success] Flip on the X axis done ..." msgstr "[success] Flip on the X axis done ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1365 -#: flatcamEditors/FlatCAMGrbEditor.py:5180 +#: flatcamEditors/FlatCAMGeoEditor.py:1364 +#: flatcamEditors/FlatCAMGrbEditor.py:5324 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:1368 -#: flatcamEditors/FlatCAMGrbEditor.py:5183 flatcamTools/ToolTransform.py:760 +#: flatcamEditors/FlatCAMGeoEditor.py:1367 +#: flatcamEditors/FlatCAMGrbEditor.py:5327 flatcamTools/ToolTransform.py:760 msgid "Applying Skew" msgstr "Applying Skew" -#: flatcamEditors/FlatCAMGeoEditor.py:1393 -#: flatcamEditors/FlatCAMGrbEditor.py:5216 flatcamTools/ToolTransform.py:791 +#: flatcamEditors/FlatCAMGeoEditor.py:1392 +#: flatcamEditors/FlatCAMGrbEditor.py:5360 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:1397 -#: flatcamEditors/FlatCAMGrbEditor.py:5220 flatcamTools/ToolTransform.py:795 +#: flatcamEditors/FlatCAMGeoEditor.py:1396 +#: flatcamEditors/FlatCAMGrbEditor.py:5364 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:1408 -#: flatcamEditors/FlatCAMGrbEditor.py:5239 +#: flatcamEditors/FlatCAMGeoEditor.py:1407 +#: flatcamEditors/FlatCAMGrbEditor.py:5383 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:1411 -#: flatcamEditors/FlatCAMGrbEditor.py:5242 flatcamTools/ToolTransform.py:809 +#: flatcamEditors/FlatCAMGeoEditor.py:1410 +#: flatcamEditors/FlatCAMGrbEditor.py:5386 flatcamTools/ToolTransform.py:809 msgid "Applying Scale" msgstr "Applying Scale" -#: flatcamEditors/FlatCAMGeoEditor.py:1444 -#: flatcamEditors/FlatCAMGrbEditor.py:5278 flatcamTools/ToolTransform.py:848 +#: flatcamEditors/FlatCAMGeoEditor.py:1443 +#: flatcamEditors/FlatCAMGrbEditor.py:5422 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:1447 -#: flatcamEditors/FlatCAMGrbEditor.py:5281 flatcamTools/ToolTransform.py:851 +#: flatcamEditors/FlatCAMGeoEditor.py:1446 +#: flatcamEditors/FlatCAMGrbEditor.py:5425 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:1456 -#: flatcamEditors/FlatCAMGrbEditor.py:5294 +#: flatcamEditors/FlatCAMGeoEditor.py:1455 +#: flatcamEditors/FlatCAMGrbEditor.py:5438 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:1459 -#: flatcamEditors/FlatCAMGrbEditor.py:5297 flatcamTools/ToolTransform.py:861 +#: flatcamEditors/FlatCAMGeoEditor.py:1458 +#: flatcamEditors/FlatCAMGrbEditor.py:5441 flatcamTools/ToolTransform.py:861 msgid "Applying Offset" msgstr "Applying Offset" -#: flatcamEditors/FlatCAMGeoEditor.py:1483 -#: flatcamEditors/FlatCAMGrbEditor.py:5318 flatcamTools/ToolTransform.py:880 +#: flatcamEditors/FlatCAMGeoEditor.py:1469 +#: flatcamEditors/FlatCAMGrbEditor.py:5462 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:1487 -#: flatcamEditors/FlatCAMGrbEditor.py:5322 flatcamTools/ToolTransform.py:884 +#: flatcamEditors/FlatCAMGeoEditor.py:1473 +#: flatcamEditors/FlatCAMGrbEditor.py:5466 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:1491 -#: flatcamEditors/FlatCAMGrbEditor.py:5326 +#: flatcamEditors/FlatCAMGeoEditor.py:1477 +#: flatcamEditors/FlatCAMGrbEditor.py:5470 msgid "Rotate ..." msgstr "Rotate ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1492 -#: flatcamEditors/FlatCAMGeoEditor.py:1549 -#: flatcamEditors/FlatCAMGeoEditor.py:1566 -#: flatcamEditors/FlatCAMGrbEditor.py:5327 -#: flatcamEditors/FlatCAMGrbEditor.py:5384 -#: flatcamEditors/FlatCAMGrbEditor.py:5401 +#: flatcamEditors/FlatCAMGeoEditor.py:1478 +#: flatcamEditors/FlatCAMGeoEditor.py:1535 +#: flatcamEditors/FlatCAMGeoEditor.py:1552 +#: flatcamEditors/FlatCAMGrbEditor.py:5471 +#: flatcamEditors/FlatCAMGrbEditor.py:5528 +#: flatcamEditors/FlatCAMGrbEditor.py:5545 msgid "Enter an Angle Value (degrees):" msgstr "Enter an Angle Value (degrees):" -#: flatcamEditors/FlatCAMGeoEditor.py:1501 -#: flatcamEditors/FlatCAMGrbEditor.py:5336 +#: flatcamEditors/FlatCAMGeoEditor.py:1487 +#: flatcamEditors/FlatCAMGrbEditor.py:5480 msgid "[success] Geometry shape rotate done..." msgstr "[success] Geometry shape rotate done..." -#: flatcamEditors/FlatCAMGeoEditor.py:1506 -#: flatcamEditors/FlatCAMGrbEditor.py:5341 +#: flatcamEditors/FlatCAMGeoEditor.py:1492 +#: flatcamEditors/FlatCAMGrbEditor.py:5485 msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..." msgstr "[WARNING_NOTCL] Geometry shape rotate cancelled..." -#: flatcamEditors/FlatCAMGeoEditor.py:1512 -#: flatcamEditors/FlatCAMGrbEditor.py:5347 +#: flatcamEditors/FlatCAMGeoEditor.py:1498 +#: flatcamEditors/FlatCAMGrbEditor.py:5491 msgid "Offset on X axis ..." msgstr "Offset on X axis ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1513 -#: flatcamEditors/FlatCAMGeoEditor.py:1532 -#: flatcamEditors/FlatCAMGrbEditor.py:5348 -#: flatcamEditors/FlatCAMGrbEditor.py:5367 +#: flatcamEditors/FlatCAMGeoEditor.py:1499 +#: flatcamEditors/FlatCAMGeoEditor.py:1518 +#: flatcamEditors/FlatCAMGrbEditor.py:5492 +#: flatcamEditors/FlatCAMGrbEditor.py:5511 #, python-format msgid "Enter a distance Value (%s):" msgstr "Enter a distance Value (%s):" -#: flatcamEditors/FlatCAMGeoEditor.py:1522 -#: flatcamEditors/FlatCAMGrbEditor.py:5357 +#: flatcamEditors/FlatCAMGeoEditor.py:1508 +#: flatcamEditors/FlatCAMGrbEditor.py:5501 msgid "[success] Geometry shape offset on X axis done..." msgstr "[success] Geometry shape offset on X axis done..." -#: flatcamEditors/FlatCAMGeoEditor.py:1526 -#: flatcamEditors/FlatCAMGrbEditor.py:5361 +#: flatcamEditors/FlatCAMGeoEditor.py:1512 +#: flatcamEditors/FlatCAMGrbEditor.py:5505 msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..." msgstr "[WARNING_NOTCL] Geometry shape offset X cancelled..." -#: flatcamEditors/FlatCAMGeoEditor.py:1531 -#: flatcamEditors/FlatCAMGrbEditor.py:5366 +#: flatcamEditors/FlatCAMGeoEditor.py:1517 +#: flatcamEditors/FlatCAMGrbEditor.py:5510 msgid "Offset on Y axis ..." msgstr "Offset on Y axis ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1541 -#: flatcamEditors/FlatCAMGrbEditor.py:5376 +#: flatcamEditors/FlatCAMGeoEditor.py:1527 +#: flatcamEditors/FlatCAMGrbEditor.py:5520 msgid "[success] Geometry shape offset on Y axis done..." msgstr "[success] Geometry shape offset on Y axis done..." -#: flatcamEditors/FlatCAMGeoEditor.py:1545 -#: flatcamEditors/FlatCAMGrbEditor.py:5380 +#: flatcamEditors/FlatCAMGeoEditor.py:1531 +#: flatcamEditors/FlatCAMGrbEditor.py:5524 msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..." msgstr "[WARNING_NOTCL] Geometry shape offset Y cancelled..." -#: flatcamEditors/FlatCAMGeoEditor.py:1548 -#: flatcamEditors/FlatCAMGrbEditor.py:5383 +#: flatcamEditors/FlatCAMGeoEditor.py:1534 +#: flatcamEditors/FlatCAMGrbEditor.py:5527 msgid "Skew on X axis ..." msgstr "Skew on X axis ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1558 -#: flatcamEditors/FlatCAMGrbEditor.py:5393 +#: flatcamEditors/FlatCAMGeoEditor.py:1544 +#: flatcamEditors/FlatCAMGrbEditor.py:5537 msgid "[success] Geometry shape skew on X axis done..." msgstr "[success] Geometry shape skew on X axis done..." -#: flatcamEditors/FlatCAMGeoEditor.py:1562 -#: flatcamEditors/FlatCAMGrbEditor.py:5397 +#: flatcamEditors/FlatCAMGeoEditor.py:1548 +#: flatcamEditors/FlatCAMGrbEditor.py:5541 msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..." msgstr "[WARNING_NOTCL] Geometry shape skew X cancelled..." -#: flatcamEditors/FlatCAMGeoEditor.py:1565 -#: flatcamEditors/FlatCAMGrbEditor.py:5400 +#: flatcamEditors/FlatCAMGeoEditor.py:1551 +#: flatcamEditors/FlatCAMGrbEditor.py:5544 msgid "Skew on Y axis ..." msgstr "Skew on Y axis ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1575 -#: flatcamEditors/FlatCAMGrbEditor.py:5410 +#: flatcamEditors/FlatCAMGeoEditor.py:1561 +#: flatcamEditors/FlatCAMGrbEditor.py:5554 msgid "[success] Geometry shape skew on Y axis done..." msgstr "[success] Geometry shape skew on Y axis done..." -#: flatcamEditors/FlatCAMGeoEditor.py:1579 -#: flatcamEditors/FlatCAMGrbEditor.py:5414 +#: flatcamEditors/FlatCAMGeoEditor.py:1565 +#: flatcamEditors/FlatCAMGrbEditor.py:5558 msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..." msgstr "[WARNING_NOTCL] Geometry shape skew Y cancelled..." -#: flatcamEditors/FlatCAMGeoEditor.py:1943 -#: flatcamEditors/FlatCAMGeoEditor.py:1994 -#: flatcamEditors/FlatCAMGrbEditor.py:1351 -#: flatcamEditors/FlatCAMGrbEditor.py:1420 +#: flatcamEditors/FlatCAMGeoEditor.py:1929 +#: flatcamEditors/FlatCAMGeoEditor.py:1980 +#: flatcamEditors/FlatCAMGrbEditor.py:1354 +#: flatcamEditors/FlatCAMGrbEditor.py:1423 msgid "Click on Center point ..." msgstr "Click on Center point ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1950 -#: flatcamEditors/FlatCAMGrbEditor.py:1359 +#: flatcamEditors/FlatCAMGeoEditor.py:1936 +#: flatcamEditors/FlatCAMGrbEditor.py:1362 msgid "Click on Perimeter point to complete ..." msgstr "Click on Perimeter point to complete ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1979 +#: flatcamEditors/FlatCAMGeoEditor.py:1965 msgid "[success] Done. Adding Circle completed." msgstr "[success] Done. Adding Circle completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2014 -#: flatcamEditors/FlatCAMGrbEditor.py:1445 +#: flatcamEditors/FlatCAMGeoEditor.py:2000 +#: flatcamEditors/FlatCAMGrbEditor.py:1448 msgid "Click on Start point ..." msgstr "Click on Start point ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2016 -#: flatcamEditors/FlatCAMGrbEditor.py:1447 +#: flatcamEditors/FlatCAMGeoEditor.py:2002 +#: flatcamEditors/FlatCAMGrbEditor.py:1450 msgid "Click on Point3 ..." msgstr "Click on Point3 ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2018 -#: flatcamEditors/FlatCAMGrbEditor.py:1449 +#: flatcamEditors/FlatCAMGeoEditor.py:2004 +#: flatcamEditors/FlatCAMGrbEditor.py:1452 msgid "Click on Stop point ..." msgstr "Click on Stop point ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2023 -#: flatcamEditors/FlatCAMGrbEditor.py:1454 +#: flatcamEditors/FlatCAMGeoEditor.py:2009 +#: flatcamEditors/FlatCAMGrbEditor.py:1457 msgid "Click on Stop point to complete ..." msgstr "Click on Stop point to complete ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2025 -#: flatcamEditors/FlatCAMGrbEditor.py:1456 +#: flatcamEditors/FlatCAMGeoEditor.py:2011 +#: flatcamEditors/FlatCAMGrbEditor.py:1459 msgid "Click on Point2 to complete ..." msgstr "Click on Point2 to complete ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2027 -#: flatcamEditors/FlatCAMGrbEditor.py:1458 +#: flatcamEditors/FlatCAMGeoEditor.py:2013 +#: flatcamEditors/FlatCAMGrbEditor.py:1461 msgid "Click on Center point to complete ..." msgstr "Click on Center point to complete ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2039 -#: flatcamEditors/FlatCAMGrbEditor.py:1470 +#: flatcamEditors/FlatCAMGeoEditor.py:2025 +#: flatcamEditors/FlatCAMGrbEditor.py:1473 #, python-format msgid "Direction: %s" msgstr "Direction: %s" -#: flatcamEditors/FlatCAMGeoEditor.py:2049 -#: flatcamEditors/FlatCAMGrbEditor.py:1480 +#: flatcamEditors/FlatCAMGeoEditor.py:2035 +#: flatcamEditors/FlatCAMGrbEditor.py:1483 msgid "Mode: Start -> Stop -> Center. Click on Start point ..." msgstr "Mode: Start -> Stop -> Center. Click on Start point ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2052 -#: flatcamEditors/FlatCAMGrbEditor.py:1483 +#: flatcamEditors/FlatCAMGeoEditor.py:2038 +#: flatcamEditors/FlatCAMGrbEditor.py:1486 msgid "Mode: Point1 -> Point3 -> Point2. Click on Point1 ..." msgstr "Mode: Point1 -> Point3 -> Point2. Click on Point1 ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2055 -#: flatcamEditors/FlatCAMGrbEditor.py:1486 +#: flatcamEditors/FlatCAMGeoEditor.py:2041 +#: flatcamEditors/FlatCAMGrbEditor.py:1489 msgid "Mode: Center -> Start -> Stop. Click on Center point ..." msgstr "Mode: Center -> Start -> Stop. Click on Center point ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2193 +#: flatcamEditors/FlatCAMGeoEditor.py:2179 msgid "[success] Done. Arc completed." msgstr "[success] Done. Arc completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2212 -#: flatcamEditors/FlatCAMGeoEditor.py:2265 -#: flatcamEditors/FlatCAMGeoEditor.py:2640 +#: flatcamEditors/FlatCAMGeoEditor.py:2198 +#: flatcamEditors/FlatCAMGeoEditor.py:2251 +#: flatcamEditors/FlatCAMGeoEditor.py:2626 msgid "Click on 1st corner ..." msgstr "Click on 1st corner ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2218 -#| msgid "Click on Stop point to complete ..." +#: flatcamEditors/FlatCAMGeoEditor.py:2204 msgid "Click on opposite corner to complete ..." msgstr "Click on opposite corner to complete ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2246 +#: flatcamEditors/FlatCAMGeoEditor.py:2232 msgid "[success] Done. Rectangle completed." msgstr "[success] Done. Rectangle completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2272 -#| msgid "Click on next Point or click Right mouse button to complete ..." +#: flatcamEditors/FlatCAMGeoEditor.py:2258 msgid "Click on next Point or click right mouse button to complete ..." msgstr "Click on next Point or click right mouse button to complete ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2300 +#: flatcamEditors/FlatCAMGeoEditor.py:2286 msgid "[success] Done. Polygon completed." msgstr "[success] Done. Polygon completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2310 -#: flatcamEditors/FlatCAMGeoEditor.py:2356 -#: flatcamEditors/FlatCAMGrbEditor.py:1055 -#: flatcamEditors/FlatCAMGrbEditor.py:1249 +#: flatcamEditors/FlatCAMGeoEditor.py:2296 +#: flatcamEditors/FlatCAMGeoEditor.py:2342 +#: flatcamEditors/FlatCAMGrbEditor.py:1058 +#: flatcamEditors/FlatCAMGrbEditor.py:1252 msgid "Backtracked one point ..." msgstr "Backtracked one point ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2338 +#: flatcamEditors/FlatCAMGeoEditor.py:2324 msgid "[success] Done. Path completed." msgstr "[success] Done. Path completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2461 -#| msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!" +#: flatcamEditors/FlatCAMGeoEditor.py:2447 msgid "[WARNING_NOTCL] MOVE: No shape selected. Select a shape to move ..." msgstr "[WARNING_NOTCL] MOVE: No shape selected. Select a shape to move ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2463 -#: flatcamEditors/FlatCAMGeoEditor.py:2475 -#| msgid "Click on reference point." +#: flatcamEditors/FlatCAMGeoEditor.py:2449 +#: flatcamEditors/FlatCAMGeoEditor.py:2461 msgid " MOVE: Click on reference point ..." msgstr " MOVE: Click on reference point ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2466 -#| msgid "Click on destination point." +#: flatcamEditors/FlatCAMGeoEditor.py:2452 msgid " Click on destination point ..." msgstr " Click on destination point ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2500 +#: flatcamEditors/FlatCAMGeoEditor.py:2486 msgid "[success] Done. Geometry(s) Move completed." msgstr "[success] Done. Geometry(s) Move completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2620 +#: flatcamEditors/FlatCAMGeoEditor.py:2606 msgid "[success] Done. Geometry(s) Copy completed." msgstr "[success] Done. Geometry(s) Copy completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2654 +#: flatcamEditors/FlatCAMGeoEditor.py:2640 #, python-format msgid "" "[ERROR]Font not supported. Only Regular, Bold, Italic and BoldItalic are " @@ -2953,60 +2936,85 @@ msgstr "" "[ERROR]Font not supported. Only Regular, Bold, Italic and BoldItalic are " "supported. Error: %s" -#: flatcamEditors/FlatCAMGeoEditor.py:2664 +#: flatcamEditors/FlatCAMGeoEditor.py:2650 msgid "[success] Done. Adding Text completed." msgstr "[success] Done. Adding Text completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2692 +#: flatcamEditors/FlatCAMGeoEditor.py:2678 msgid "Create buffer geometry ..." msgstr "Create buffer geometry ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2703 -#: flatcamEditors/FlatCAMGeoEditor.py:2729 -#: flatcamEditors/FlatCAMGeoEditor.py:2755 +#: flatcamEditors/FlatCAMGeoEditor.py:2689 +#: flatcamEditors/FlatCAMGeoEditor.py:2715 +#: flatcamEditors/FlatCAMGeoEditor.py:2741 msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected." msgstr "[WARNING_NOTCL] Buffer cancelled. No shape selected." -#: flatcamEditors/FlatCAMGeoEditor.py:2725 -#: flatcamEditors/FlatCAMGrbEditor.py:4276 +#: flatcamEditors/FlatCAMGeoEditor.py:2711 +#: flatcamEditors/FlatCAMGrbEditor.py:4420 msgid "[success] Done. Buffer Tool completed." msgstr "[success] Done. Buffer Tool completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2751 +#: flatcamEditors/FlatCAMGeoEditor.py:2737 msgid "[success] Done. Buffer Int Tool completed." msgstr "[success] Done. Buffer Int Tool completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2777 +#: flatcamEditors/FlatCAMGeoEditor.py:2763 msgid "[success] Done. Buffer Ext Tool completed." msgstr "[success] Done. Buffer Ext Tool completed." -#: flatcamEditors/FlatCAMGeoEditor.py:2810 +#: flatcamEditors/FlatCAMGeoEditor.py:2798 +#: flatcamEditors/FlatCAMGrbEditor.py:1969 +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 ..." +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 ..." +msgid "Click to erase ..." +msgstr "Click to erase ..." + +#: flatcamEditors/FlatCAMGeoEditor.py:2858 +#: flatcamEditors/FlatCAMGrbEditor.py:2059 +#| msgid "[success] Done. Scale Tool completed." +msgid "[success] Done. Eraser tool action completed." +msgstr "[success] Done. Eraser tool action completed." + +#: flatcamEditors/FlatCAMGeoEditor.py:2901 msgid "Create Paint geometry ..." msgstr "Create Paint geometry ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2824 -#: flatcamEditors/FlatCAMGrbEditor.py:2059 +#: flatcamEditors/FlatCAMGeoEditor.py:2915 +#: flatcamEditors/FlatCAMGrbEditor.py:2201 msgid "Shape transformations ..." msgstr "Shape transformations ..." -#: flatcamEditors/FlatCAMGeoEditor.py:3327 +#: flatcamEditors/FlatCAMGeoEditor.py:3419 #, python-brace-format msgid "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" msgstr "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" -#: flatcamEditors/FlatCAMGeoEditor.py:3703 +#: flatcamEditors/FlatCAMGeoEditor.py:3796 msgid "[WARNING_NOTCL] Copy cancelled. No shape selected." msgstr "[WARNING_NOTCL] Copy cancelled. No shape selected." -#: flatcamEditors/FlatCAMGeoEditor.py:3710 flatcamGUI/FlatCAMGUI.py:2725 -#: flatcamGUI/FlatCAMGUI.py:2771 flatcamGUI/FlatCAMGUI.py:2789 -#: flatcamGUI/FlatCAMGUI.py:2920 flatcamGUI/FlatCAMGUI.py:2932 -#: flatcamGUI/FlatCAMGUI.py:2966 +#: 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 msgid "Click on target point." msgstr "Click on target point." -#: flatcamEditors/FlatCAMGeoEditor.py:3953 -#: flatcamEditors/FlatCAMGeoEditor.py:3987 +#: flatcamEditors/FlatCAMGeoEditor.py:4047 +#: flatcamEditors/FlatCAMGeoEditor.py:4082 msgid "" "[WARNING_NOTCL] A selection of at least 2 geo items is required to do " "Intersection." @@ -3014,9 +3022,9 @@ msgstr "" "[WARNING_NOTCL] A selection of at least 2 geo items is required to do " "Intersection." -#: flatcamEditors/FlatCAMGeoEditor.py:4071 -#: flatcamEditors/FlatCAMGeoEditor.py:4108 -#: flatcamEditors/FlatCAMGeoEditor.py:4184 +#: flatcamEditors/FlatCAMGeoEditor.py:4166 +#: flatcamEditors/FlatCAMGeoEditor.py:4204 +#: flatcamEditors/FlatCAMGeoEditor.py:4280 msgid "" "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to " "generate an 'inside' shape" @@ -3024,52 +3032,52 @@ msgstr "" "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to " "generate an 'inside' shape" -#: flatcamEditors/FlatCAMGeoEditor.py:4079 -#: flatcamEditors/FlatCAMGeoEditor.py:4117 -#: flatcamEditors/FlatCAMGeoEditor.py:4192 +#: flatcamEditors/FlatCAMGeoEditor.py:4175 +#: flatcamEditors/FlatCAMGeoEditor.py:4213 +#: flatcamEditors/FlatCAMGeoEditor.py:4288 msgid "[WARNING_NOTCL] Nothing selected for buffering." msgstr "[WARNING_NOTCL] Nothing selected for buffering." -#: flatcamEditors/FlatCAMGeoEditor.py:4083 -#: flatcamEditors/FlatCAMGeoEditor.py:4121 -#: flatcamEditors/FlatCAMGeoEditor.py:4196 +#: flatcamEditors/FlatCAMGeoEditor.py:4179 +#: flatcamEditors/FlatCAMGeoEditor.py:4217 +#: flatcamEditors/FlatCAMGeoEditor.py:4292 msgid "[WARNING_NOTCL] Invalid distance for buffering." msgstr "[WARNING_NOTCL] Invalid distance for buffering." -#: flatcamEditors/FlatCAMGeoEditor.py:4093 -#: flatcamEditors/FlatCAMGeoEditor.py:4205 +#: flatcamEditors/FlatCAMGeoEditor.py:4189 +#: flatcamEditors/FlatCAMGeoEditor.py:4301 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:4101 +#: flatcamEditors/FlatCAMGeoEditor.py:4197 msgid "[success] Full buffer geometry created." msgstr "[success] Full buffer geometry created." -#: flatcamEditors/FlatCAMGeoEditor.py:4131 +#: flatcamEditors/FlatCAMGeoEditor.py:4227 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:4146 +#: flatcamEditors/FlatCAMGeoEditor.py:4242 msgid "[success] Interior buffer geometry created." msgstr "[success] Interior buffer geometry created." -#: flatcamEditors/FlatCAMGeoEditor.py:4217 +#: flatcamEditors/FlatCAMGeoEditor.py:4313 msgid "[success] Exterior buffer geometry created." msgstr "[success] Exterior buffer geometry created." -#: flatcamEditors/FlatCAMGeoEditor.py:4281 +#: flatcamEditors/FlatCAMGeoEditor.py:4377 msgid "[WARNING_NOTCL] Nothing selected for painting." msgstr "[WARNING_NOTCL] Nothing selected for painting." -#: flatcamEditors/FlatCAMGeoEditor.py:4287 +#: flatcamEditors/FlatCAMGeoEditor.py:4383 msgid "[WARNING] Invalid value for {}" msgstr "[WARNING] Invalid value for {}" -#: flatcamEditors/FlatCAMGeoEditor.py:4293 +#: flatcamEditors/FlatCAMGeoEditor.py:4389 msgid "" "[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 " "(100%)." @@ -3077,7 +3085,7 @@ msgstr "" "[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 " "(100%)." -#: flatcamEditors/FlatCAMGeoEditor.py:4352 +#: flatcamEditors/FlatCAMGeoEditor.py:4448 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -3088,7 +3096,7 @@ msgstr "" "different method of Paint\n" "%s" -#: flatcamEditors/FlatCAMGeoEditor.py:4363 +#: flatcamEditors/FlatCAMGeoEditor.py:4459 msgid "[success] Paint done." msgstr "[success] Paint done." @@ -3110,7 +3118,7 @@ msgid "Click to place ..." msgstr "Click to place ..." #: flatcamEditors/FlatCAMGrbEditor.py:357 -#: flatcamEditors/FlatCAMGrbEditor.py:660 +#: flatcamEditors/FlatCAMGrbEditor.py:662 msgid "" "Incompatible aperture type. Select an aperture with type 'C', 'R' or 'O'." msgstr "" @@ -3130,23 +3138,23 @@ msgstr "" msgid "Click on the Pad Circular Array Start position" msgstr "Click on the Pad Circular Array Start position" -#: flatcamEditors/FlatCAMGrbEditor.py:685 +#: 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." -#: flatcamEditors/FlatCAMGrbEditor.py:707 +#: flatcamEditors/FlatCAMGrbEditor.py:709 msgid "[success] Done. Pad Array added." msgstr "[success] Done. Pad Array added." -#: flatcamEditors/FlatCAMGrbEditor.py:728 +#: flatcamEditors/FlatCAMGrbEditor.py:730 msgid "Select shape(s) and then click ..." msgstr "Select shape(s) and then click ..." -#: flatcamEditors/FlatCAMGrbEditor.py:739 +#: flatcamEditors/FlatCAMGrbEditor.py:741 msgid "[ERROR_NOTCL] Failed. Nothing selected." msgstr "[ERROR_NOTCL] Failed. Nothing selected." -#: flatcamEditors/FlatCAMGrbEditor.py:754 +#: flatcamEditors/FlatCAMGrbEditor.py:756 msgid "" "[WARNING_NOTCL] Failed. Poligonize works only on geometries belonging to the " "same aperture." @@ -3154,144 +3162,143 @@ msgstr "" "[WARNING_NOTCL] Failed. Poligonize works only on geometries belonging to the " "same aperture." -#: flatcamEditors/FlatCAMGrbEditor.py:807 +#: flatcamEditors/FlatCAMGrbEditor.py:809 msgid "[success] Done. Poligonize completed." msgstr "[success] Done. Poligonize completed." -#: flatcamEditors/FlatCAMGrbEditor.py:857 -#: flatcamEditors/FlatCAMGrbEditor.py:1072 -#: flatcamEditors/FlatCAMGrbEditor.py:1096 +#: flatcamEditors/FlatCAMGrbEditor.py:860 +#: flatcamEditors/FlatCAMGrbEditor.py:1075 +#: flatcamEditors/FlatCAMGrbEditor.py:1099 msgid "Corner Mode 1: 45 degrees ..." msgstr "Corner Mode 1: 45 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:859 +#: flatcamEditors/FlatCAMGrbEditor.py:862 msgid "Click on 1st point ..." msgstr "Click on 1st point ..." -#: flatcamEditors/FlatCAMGrbEditor.py:869 -#: flatcamEditors/FlatCAMGrbEditor.py:1167 +#: flatcamEditors/FlatCAMGrbEditor.py:872 +#: flatcamEditors/FlatCAMGrbEditor.py:1170 msgid "Click on next Point or click Right mouse button to complete ..." msgstr "Click on next Point or click Right mouse button to complete ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1060 -#: flatcamEditors/FlatCAMGrbEditor.py:1093 +#: flatcamEditors/FlatCAMGrbEditor.py:1063 +#: flatcamEditors/FlatCAMGrbEditor.py:1096 msgid "Corner Mode 2: Reverse 45 degrees ..." msgstr "Corner Mode 2: Reverse 45 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1063 -#: flatcamEditors/FlatCAMGrbEditor.py:1090 +#: flatcamEditors/FlatCAMGrbEditor.py:1066 +#: flatcamEditors/FlatCAMGrbEditor.py:1093 msgid "Corner Mode 3: 90 degrees ..." msgstr "Corner Mode 3: 90 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1066 -#: flatcamEditors/FlatCAMGrbEditor.py:1087 +#: flatcamEditors/FlatCAMGrbEditor.py:1069 +#: flatcamEditors/FlatCAMGrbEditor.py:1090 msgid "Corner Mode 4: Reverse 90 degrees ..." msgstr "Corner Mode 4: Reverse 90 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1069 -#: flatcamEditors/FlatCAMGrbEditor.py:1084 +#: flatcamEditors/FlatCAMGrbEditor.py:1072 +#: flatcamEditors/FlatCAMGrbEditor.py:1087 msgid "Corner Mode 5: Free angle ..." msgstr "Corner Mode 5: Free angle ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1123 -#: flatcamEditors/FlatCAMGrbEditor.py:1281 -#: flatcamEditors/FlatCAMGrbEditor.py:1320 +#: flatcamEditors/FlatCAMGrbEditor.py:1126 +#: flatcamEditors/FlatCAMGrbEditor.py:1284 +#: flatcamEditors/FlatCAMGrbEditor.py:1323 msgid "Track Mode 1: 45 degrees ..." msgstr "Track Mode 1: 45 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1261 -#: flatcamEditors/FlatCAMGrbEditor.py:1315 +#: flatcamEditors/FlatCAMGrbEditor.py:1264 +#: flatcamEditors/FlatCAMGrbEditor.py:1318 msgid "Track Mode 2: Reverse 45 degrees ..." msgstr "Track Mode 2: Reverse 45 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1266 -#: flatcamEditors/FlatCAMGrbEditor.py:1310 +#: flatcamEditors/FlatCAMGrbEditor.py:1269 +#: flatcamEditors/FlatCAMGrbEditor.py:1313 msgid "Track Mode 3: 90 degrees ..." msgstr "Track Mode 3: 90 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1271 -#: flatcamEditors/FlatCAMGrbEditor.py:1305 +#: flatcamEditors/FlatCAMGrbEditor.py:1274 +#: flatcamEditors/FlatCAMGrbEditor.py:1308 msgid "Track Mode 4: Reverse 90 degrees ..." msgstr "Track Mode 4: Reverse 90 degrees ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1276 -#: flatcamEditors/FlatCAMGrbEditor.py:1300 +#: flatcamEditors/FlatCAMGrbEditor.py:1279 +#: flatcamEditors/FlatCAMGrbEditor.py:1303 msgid "Track Mode 5: Free angle ..." msgstr "Track Mode 5: Free angle ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1666 +#: flatcamEditors/FlatCAMGrbEditor.py:1669 msgid "Scale the selected Gerber apertures ..." msgstr "Scale the selected Gerber apertures ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1708 +#: flatcamEditors/FlatCAMGrbEditor.py:1711 msgid "Buffer the selected apertures ..." msgstr "Buffer the selected apertures ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1752 -#| msgid "[WARNING_NOTCL] Cancelled. Nothing selected to move." +#: flatcamEditors/FlatCAMGrbEditor.py:1755 msgid "[WARNING_NOTCL] Nothing selected to move ..." msgstr "[WARNING_NOTCL] Nothing selected to move ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1875 +#: flatcamEditors/FlatCAMGrbEditor.py:1878 msgid "[success] Done. Apertures Move completed." msgstr "[success] Done. Apertures Move completed." -#: flatcamEditors/FlatCAMGrbEditor.py:1951 +#: flatcamEditors/FlatCAMGrbEditor.py:1954 msgid "[success] Done. Apertures copied." msgstr "[success] Done. Apertures copied." -#: flatcamEditors/FlatCAMGrbEditor.py:2101 flatcamGUI/FlatCAMGUI.py:1604 -#: flatcamGUI/FlatCAMGUI.py:4322 +#: flatcamEditors/FlatCAMGrbEditor.py:2243 flatcamGUI/FlatCAMGUI.py:1607 +#: flatcamGUI/FlatCAMGUI.py:4329 msgid "Gerber Editor" msgstr "Gerber Editor" -#: flatcamEditors/FlatCAMGrbEditor.py:2120 flatcamGUI/ObjectUI.py:192 +#: flatcamEditors/FlatCAMGrbEditor.py:2262 flatcamGUI/ObjectUI.py:192 msgid "Apertures:" msgstr "Apertures:" -#: flatcamEditors/FlatCAMGrbEditor.py:2122 flatcamGUI/ObjectUI.py:194 +#: flatcamEditors/FlatCAMGrbEditor.py:2264 flatcamGUI/ObjectUI.py:194 msgid "Apertures Table for the Gerber Object." msgstr "Apertures Table for the Gerber Object." -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 msgid "Code" msgstr "Code" -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 #: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "Type" msgstr "Type" -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 msgid "Size" msgstr "Size" -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 msgid "Dim" msgstr "Dim" -#: flatcamEditors/FlatCAMGrbEditor.py:2137 flatcamGUI/ObjectUI.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:2279 flatcamGUI/ObjectUI.py:232 msgid "Index" msgstr "Index" -#: flatcamEditors/FlatCAMGrbEditor.py:2139 flatcamGUI/ObjectUI.py:234 +#: flatcamEditors/FlatCAMGrbEditor.py:2281 flatcamGUI/ObjectUI.py:234 msgid "Aperture Code" msgstr "Aperture Code" -#: flatcamEditors/FlatCAMGrbEditor.py:2141 flatcamGUI/ObjectUI.py:236 +#: flatcamEditors/FlatCAMGrbEditor.py:2283 flatcamGUI/ObjectUI.py:236 msgid "Type of aperture: circular, rectangle, macros etc" msgstr "Type of aperture: circular, rectangle, macros etc" -#: flatcamEditors/FlatCAMGrbEditor.py:2143 -#: flatcamEditors/FlatCAMGrbEditor.py:2176 flatcamGUI/ObjectUI.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:2285 +#: flatcamEditors/FlatCAMGrbEditor.py:2318 flatcamGUI/ObjectUI.py:238 msgid "Aperture Size:" msgstr "Aperture Size:" -#: flatcamEditors/FlatCAMGrbEditor.py:2145 flatcamGUI/ObjectUI.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:2287 flatcamGUI/ObjectUI.py:240 msgid "" "Aperture Dimensions:\n" " - (width, height) for R, O type.\n" @@ -3301,15 +3308,15 @@ msgstr "" " - (width, height) for R, O type.\n" " - (dia, nVertices) for P type" -#: flatcamEditors/FlatCAMGrbEditor.py:2166 +#: flatcamEditors/FlatCAMGrbEditor.py:2308 msgid "Aperture Code:" msgstr "Aperture Code:" -#: flatcamEditors/FlatCAMGrbEditor.py:2168 +#: flatcamEditors/FlatCAMGrbEditor.py:2310 msgid "Code for the new aperture" msgstr "Code for the new aperture" -#: flatcamEditors/FlatCAMGrbEditor.py:2178 +#: flatcamEditors/FlatCAMGrbEditor.py:2320 msgid "" "Size for the new aperture.\n" "If aperture type is 'R' or 'O' then\n" @@ -3323,11 +3330,11 @@ msgstr "" "calculated as:\n" "sqrt(width**2 + height**2)" -#: flatcamEditors/FlatCAMGrbEditor.py:2190 +#: flatcamEditors/FlatCAMGrbEditor.py:2332 msgid "Aperture Type:" msgstr "Aperture Type:" -#: flatcamEditors/FlatCAMGrbEditor.py:2192 +#: flatcamEditors/FlatCAMGrbEditor.py:2334 msgid "" "Select the type of new aperture. Can be:\n" "C = circular\n" @@ -3339,11 +3346,11 @@ msgstr "" "R = rectangular\n" "O = oblong" -#: flatcamEditors/FlatCAMGrbEditor.py:2203 +#: flatcamEditors/FlatCAMGrbEditor.py:2345 msgid "Aperture Dim:" msgstr "Aperture Dim:" -#: flatcamEditors/FlatCAMGrbEditor.py:2205 +#: flatcamEditors/FlatCAMGrbEditor.py:2347 msgid "" "Dimensions for the new aperture.\n" "Active only for rectangular apertures (type R).\n" @@ -3353,31 +3360,31 @@ msgstr "" "Active only for rectangular apertures (type R).\n" "The format is (width, height)" -#: flatcamEditors/FlatCAMGrbEditor.py:2214 +#: flatcamEditors/FlatCAMGrbEditor.py:2356 msgid "Add/Delete Aperture:" msgstr "Add/Delete Aperture:" -#: flatcamEditors/FlatCAMGrbEditor.py:2216 +#: flatcamEditors/FlatCAMGrbEditor.py:2358 msgid "Add/Delete an aperture in the aperture table" msgstr "Add/Delete an aperture in the aperture table" -#: flatcamEditors/FlatCAMGrbEditor.py:2225 +#: flatcamEditors/FlatCAMGrbEditor.py:2367 msgid "Add a new aperture to the aperture list." msgstr "Add a new aperture to the aperture list." -#: flatcamEditors/FlatCAMGrbEditor.py:2230 +#: flatcamEditors/FlatCAMGrbEditor.py:2372 msgid "Delete a aperture in the aperture list" msgstr "Delete a aperture in the aperture list" -#: flatcamEditors/FlatCAMGrbEditor.py:2246 +#: flatcamEditors/FlatCAMGrbEditor.py:2388 msgid "Buffer Aperture:" msgstr "Buffer Aperture:" -#: flatcamEditors/FlatCAMGrbEditor.py:2248 +#: flatcamEditors/FlatCAMGrbEditor.py:2390 msgid "Buffer a aperture in the aperture list" msgstr "Buffer a aperture in the aperture list" -#: flatcamEditors/FlatCAMGrbEditor.py:2261 +#: flatcamEditors/FlatCAMGrbEditor.py:2403 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded.\n" @@ -3391,24 +3398,24 @@ msgstr "" " - 'Beveled:' the corner is a line that directly connects the features " "meeting in the corner" -#: flatcamEditors/FlatCAMGrbEditor.py:2276 flatcamGUI/FlatCAMGUI.py:721 -#: flatcamGUI/FlatCAMGUI.py:1943 +#: flatcamEditors/FlatCAMGrbEditor.py:2418 flatcamGUI/FlatCAMGUI.py:722 +#: flatcamGUI/FlatCAMGUI.py:1948 msgid "Buffer" msgstr "Buffer" -#: flatcamEditors/FlatCAMGrbEditor.py:2290 +#: flatcamEditors/FlatCAMGrbEditor.py:2432 msgid "Scale Aperture:" msgstr "Scale Aperture:" -#: flatcamEditors/FlatCAMGrbEditor.py:2292 +#: flatcamEditors/FlatCAMGrbEditor.py:2434 msgid "Scale a aperture in the aperture list" msgstr "Scale a aperture in the aperture list" -#: flatcamEditors/FlatCAMGrbEditor.py:2300 +#: flatcamEditors/FlatCAMGrbEditor.py:2442 msgid "Scale factor:" msgstr "Scale factor:" -#: flatcamEditors/FlatCAMGrbEditor.py:2302 +#: flatcamEditors/FlatCAMGrbEditor.py:2444 msgid "" "The factor by which to scale the selected aperture.\n" "Values can be between 0.0000 and 999.9999" @@ -3416,16 +3423,16 @@ msgstr "" "The factor by which to scale the selected aperture.\n" "Values can be between 0.0000 and 999.9999" -#: flatcamEditors/FlatCAMGrbEditor.py:2330 flatcamGUI/FlatCAMGUI.py:711 -#: flatcamGUI/FlatCAMGUI.py:1933 +#: flatcamEditors/FlatCAMGrbEditor.py:2472 flatcamGUI/FlatCAMGUI.py:712 +#: flatcamGUI/FlatCAMGUI.py:1938 msgid "Add Pad Array" msgstr "Add Pad Array" -#: flatcamEditors/FlatCAMGrbEditor.py:2332 +#: flatcamEditors/FlatCAMGrbEditor.py:2474 msgid "Add an array of pads (linear or circular array)" msgstr "Add an array of pads (linear or circular array)" -#: flatcamEditors/FlatCAMGrbEditor.py:2338 +#: flatcamEditors/FlatCAMGrbEditor.py:2480 msgid "" "Select the type of pads array to create.\n" "It can be Linear X(Y) or Circular" @@ -3433,16 +3440,16 @@ msgstr "" "Select the type of pads array to create.\n" "It can be Linear X(Y) or Circular" -#: flatcamEditors/FlatCAMGrbEditor.py:2349 +#: flatcamEditors/FlatCAMGrbEditor.py:2491 msgid "Nr of pads:" msgstr "Nr of pads:" -#: flatcamEditors/FlatCAMGrbEditor.py:2351 +#: flatcamEditors/FlatCAMGrbEditor.py:2493 msgid "Specify how many pads to be in the array." msgstr "Specify how many pads to be in the array." -#: flatcamEditors/FlatCAMGrbEditor.py:2826 -#: flatcamEditors/FlatCAMGrbEditor.py:2830 +#: flatcamEditors/FlatCAMGrbEditor.py:2970 +#: flatcamEditors/FlatCAMGrbEditor.py:2974 msgid "" "[WARNING_NOTCL] Aperture code value is missing or wrong format. Add it and " "retry." @@ -3450,7 +3457,7 @@ msgstr "" "[WARNING_NOTCL] Aperture code value is missing or wrong format. Add it and " "retry." -#: flatcamEditors/FlatCAMGrbEditor.py:2866 +#: flatcamEditors/FlatCAMGrbEditor.py:3010 msgid "" "[WARNING_NOTCL] Aperture dimensions value is missing or wrong format. Add it " "in format (width, height) and retry." @@ -3458,7 +3465,7 @@ msgstr "" "[WARNING_NOTCL] Aperture dimensions value is missing or wrong format. Add it " "in format (width, height) and retry." -#: flatcamEditors/FlatCAMGrbEditor.py:2878 +#: flatcamEditors/FlatCAMGrbEditor.py:3022 msgid "" "[WARNING_NOTCL] Aperture size value is missing or wrong format. Add it and " "retry." @@ -3466,36 +3473,35 @@ msgstr "" "[WARNING_NOTCL] Aperture size value is missing or wrong format. Add it and " "retry." -#: flatcamEditors/FlatCAMGrbEditor.py:2889 +#: flatcamEditors/FlatCAMGrbEditor.py:3033 msgid "[WARNING_NOTCL] Aperture already in the aperture table." msgstr "[WARNING_NOTCL] Aperture already in the aperture table." -#: flatcamEditors/FlatCAMGrbEditor.py:2896 +#: flatcamEditors/FlatCAMGrbEditor.py:3040 #, python-brace-format msgid "[success] Added new aperture with code: {apid}" msgstr "[success] Added new aperture with code: {apid}" -#: flatcamEditors/FlatCAMGrbEditor.py:2924 +#: flatcamEditors/FlatCAMGrbEditor.py:3068 msgid "[WARNING_NOTCL] Select an aperture in Aperture Table" msgstr "[WARNING_NOTCL] Select an aperture in Aperture Table" -#: flatcamEditors/FlatCAMGrbEditor.py:2930 +#: flatcamEditors/FlatCAMGrbEditor.py:3074 #, python-format -#| msgid "[WARNING_NOTCL] Select an aperture in Aperture Table" msgid "[WARNING_NOTCL] Select an aperture in Aperture Table --> %s" msgstr "[WARNING_NOTCL] Select an aperture in Aperture Table --> %s" -#: flatcamEditors/FlatCAMGrbEditor.py:2953 +#: flatcamEditors/FlatCAMGrbEditor.py:3097 #, python-brace-format msgid "[success] Deleted aperture with code: {del_dia}" msgstr "[success] Deleted aperture with code: {del_dia}" -#: flatcamEditors/FlatCAMGrbEditor.py:3373 +#: flatcamEditors/FlatCAMGrbEditor.py:3517 #, python-format msgid "Adding aperture: %s geo ..." msgstr "Adding aperture: %s geo ..." -#: flatcamEditors/FlatCAMGrbEditor.py:3552 +#: flatcamEditors/FlatCAMGrbEditor.py:3696 msgid "" "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber " "creation." @@ -3503,32 +3509,31 @@ msgstr "" "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber " "creation." -#: flatcamEditors/FlatCAMGrbEditor.py:3555 -#| msgid "[ERROR] An internal error has ocurred. See shell.\n" +#: flatcamEditors/FlatCAMGrbEditor.py:3699 msgid "[ERROR] An internal error has occurred. See shell.\n" msgstr "[ERROR] An internal error has occurred. See shell.\n" -#: flatcamEditors/FlatCAMGrbEditor.py:3560 +#: flatcamEditors/FlatCAMGrbEditor.py:3704 msgid "Creating Gerber." msgstr "Creating Gerber." -#: flatcamEditors/FlatCAMGrbEditor.py:3568 +#: flatcamEditors/FlatCAMGrbEditor.py:3712 msgid "[success] Gerber editing finished." msgstr "[success] Gerber editing finished." -#: flatcamEditors/FlatCAMGrbEditor.py:3584 +#: flatcamEditors/FlatCAMGrbEditor.py:3728 msgid "[WARNING_NOTCL] Cancelled. No aperture is selected" msgstr "[WARNING_NOTCL] Cancelled. No aperture is selected" -#: flatcamEditors/FlatCAMGrbEditor.py:4104 +#: flatcamEditors/FlatCAMGrbEditor.py:4248 msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected." msgstr "[ERROR_NOTCL] Failed. No aperture geometry is selected." -#: flatcamEditors/FlatCAMGrbEditor.py:4112 +#: flatcamEditors/FlatCAMGrbEditor.py:4256 msgid "[success] Done. Apertures geometry deleted." msgstr "[success] Done. Apertures geometry deleted." -#: flatcamEditors/FlatCAMGrbEditor.py:4261 +#: flatcamEditors/FlatCAMGrbEditor.py:4405 msgid "" "[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try " "again." @@ -3536,7 +3541,7 @@ msgstr "" "[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try " "again." -#: flatcamEditors/FlatCAMGrbEditor.py:4290 +#: flatcamEditors/FlatCAMGrbEditor.py:4434 msgid "" "[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and " "retry." @@ -3544,7 +3549,7 @@ msgstr "" "[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and " "retry." -#: flatcamEditors/FlatCAMGrbEditor.py:4320 +#: flatcamEditors/FlatCAMGrbEditor.py:4464 msgid "" "[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try " "again." @@ -3552,7 +3557,7 @@ msgstr "" "[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try " "again." -#: flatcamEditors/FlatCAMGrbEditor.py:4336 +#: flatcamEditors/FlatCAMGrbEditor.py:4480 msgid "[success] Done. Scale Tool completed." msgstr "[success] Done. Scale Tool completed." @@ -3712,15 +3717,10 @@ msgstr "" "are set in Preferences -> Excellon Export." #: flatcamGUI/FlatCAMGUI.py:186 -#| msgid "Export &SVG ..." msgid "Export &Gerber ..." msgstr "Export &Gerber ..." #: flatcamGUI/FlatCAMGUI.py:189 -#| msgid "" -#| "Will export an Excellon Object as Excellon file,\n" -#| "the coordinates format, the file units and zeros\n" -#| "are set in Preferences -> Excellon Export." msgid "" "Will export an Gerber Object as Gerber file,\n" "the coordinates format, the file units and zeros\n" @@ -3830,17 +3830,14 @@ msgstr "" "to a single_geometry type." #: flatcamGUI/FlatCAMGUI.py:279 -#| msgid "Convert Single to MultiGeo" msgid "Convert Any to Geo" msgstr "Convert Any to Geo" #: flatcamGUI/FlatCAMGUI.py:281 -#| msgid "Convert Single to MultiGeo" msgid "Convert Any to Gerber" msgstr "Convert Any to Gerber" #: flatcamGUI/FlatCAMGUI.py:286 -#| msgid "&Copy Object\tCTRL+C" msgid "&Copy\tCTRL+C" msgstr "&Copy\tCTRL+C" @@ -4140,11 +4137,11 @@ msgstr "Generate CNC" msgid "View Source" msgstr "View Source" -#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1617 +#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1620 msgid "Edit" msgstr "Edit" -#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1623 +#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1626 #: flatcamTools/ToolProperties.py:25 msgid "Properties" msgstr "Properties" @@ -4185,15 +4182,15 @@ msgstr "Gerber Editor Toolbar" msgid "Grid Toolbar" msgstr "Grid Toolbar" -#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1834 +#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1837 msgid "Open project" msgstr "Open project" -#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1835 +#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1838 msgid "Save project" msgstr "Save project" -#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1838 +#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1841 msgid "New Blank Geometry" msgstr "New Blank Geometry" @@ -4201,220 +4198,225 @@ msgstr "New Blank Geometry" msgid "New Blank Gerber" msgstr "New Blank Gerber" -#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1839 +#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1842 msgid "New Blank Excellon" msgstr "New Blank Excellon" -#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1841 +#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1844 msgid "Editor" msgstr "Editor" -#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1843 +#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1846 msgid "Save Object and close the Editor" msgstr "Save Object and close the Editor" -#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1847 +#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1850 msgid "&Delete" msgstr "&Delete" -#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1850 +#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1853 msgid "&Replot" msgstr "&Replot" -#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1851 +#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1854 msgid "&Clear plot" msgstr "&Clear plot" -#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1852 +#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1855 msgid "Zoom In" msgstr "Zoom In" -#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1853 +#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1856 msgid "Zoom Out" msgstr "Zoom Out" -#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1592 -#: flatcamGUI/FlatCAMGUI.py:1854 +#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1595 +#: flatcamGUI/FlatCAMGUI.py:1857 msgid "Zoom Fit" msgstr "Zoom Fit" -#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1859 +#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1862 msgid "&Command Line" msgstr "&Command Line" -#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1862 +#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1865 msgid "2Sided Tool" msgstr "2Sided Tool" -#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1863 +#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1866 msgid "&Cutout Tool" msgstr "&Cutout Tool" -#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1864 +#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1867 #: flatcamGUI/ObjectUI.py:392 flatcamTools/ToolNonCopperClear.py:285 msgid "NCC Tool" msgstr "NCC Tool" -#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1868 +#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1871 msgid "Panel Tool" msgstr "Panel Tool" -#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1869 +#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1872 #: flatcamTools/ToolFilm.py:204 msgid "Film Tool" msgstr "Film Tool" -#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1871 +#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1874 msgid "SolderPaste Tool" msgstr "SolderPaste Tool" -#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1872 +#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1875 #: flatcamTools/ToolSub.py:26 msgid "Substract Tool" msgstr "Substract Tool" -#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1877 +#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1880 msgid "Calculators Tool" msgstr "Calculators Tool" #: flatcamGUI/FlatCAMGUI.py:662 flatcamGUI/FlatCAMGUI.py:676 -#: flatcamGUI/FlatCAMGUI.py:709 flatcamGUI/FlatCAMGUI.py:1881 -#: flatcamGUI/FlatCAMGUI.py:1931 +#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1884 +#: flatcamGUI/FlatCAMGUI.py:1936 msgid "Select" msgstr "Select" -#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1882 +#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1885 msgid "Add Drill Hole" msgstr "Add Drill Hole" -#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1884 +#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1887 msgid "Add Drill Hole Array" msgstr "Add Drill Hole Array" -#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1885 +#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1888 msgid "Resize Drill" msgstr "Resize Drill" -#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1888 +#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1891 msgid "Copy Drill" msgstr "Copy Drill" -#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1890 +#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1893 msgid "Delete Drill" msgstr "Delete Drill" -#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1893 +#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1896 msgid "Move Drill" msgstr "Move Drill" -#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1897 +#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1900 msgid "Add Circle" msgstr "Add Circle" -#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1898 +#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1901 msgid "Add Arc" msgstr "Add Arc" -#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1900 +#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1903 msgid "Add Rectangle" msgstr "Add Rectangle" -#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1903 +#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1906 msgid "Add Path" msgstr "Add Path" -#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1905 +#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1908 msgid "Add Polygon" msgstr "Add Polygon" -#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1907 +#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1910 msgid "Add Text" msgstr "Add Text" -#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1909 +#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1912 msgid "Add Buffer" msgstr "Add Buffer" -#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1910 +#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1913 msgid "Paint Shape" msgstr "Paint Shape" -#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:1913 +#: flatcamGUI/FlatCAMGUI.py:689 flatcamGUI/FlatCAMGUI.py:724 +#: flatcamGUI/FlatCAMGUI.py:1914 flatcamGUI/FlatCAMGUI.py:1950 +msgid "Eraser" +msgstr "Eraser" + +#: flatcamGUI/FlatCAMGUI.py:692 flatcamGUI/FlatCAMGUI.py:1918 msgid "Polygon Union" msgstr "Polygon Union" -#: flatcamGUI/FlatCAMGUI.py:693 flatcamGUI/FlatCAMGUI.py:1915 +#: flatcamGUI/FlatCAMGUI.py:694 flatcamGUI/FlatCAMGUI.py:1920 msgid "Polygon Intersection" msgstr "Polygon Intersection" -#: flatcamGUI/FlatCAMGUI.py:695 flatcamGUI/FlatCAMGUI.py:1917 +#: flatcamGUI/FlatCAMGUI.py:696 flatcamGUI/FlatCAMGUI.py:1922 msgid "Polygon Subtraction" msgstr "Polygon Subtraction" -#: flatcamGUI/FlatCAMGUI.py:698 flatcamGUI/FlatCAMGUI.py:1920 +#: flatcamGUI/FlatCAMGUI.py:699 flatcamGUI/FlatCAMGUI.py:1925 msgid "Cut Path" msgstr "Cut Path" -#: flatcamGUI/FlatCAMGUI.py:699 +#: flatcamGUI/FlatCAMGUI.py:700 msgid "Copy Shape(s)" msgstr "Copy Shape(s)" -#: flatcamGUI/FlatCAMGUI.py:702 +#: flatcamGUI/FlatCAMGUI.py:703 msgid "Delete Shape '-'" msgstr "Delete Shape '-'" -#: flatcamGUI/FlatCAMGUI.py:704 flatcamGUI/FlatCAMGUI.py:728 -#: flatcamGUI/FlatCAMGUI.py:1925 flatcamGUI/FlatCAMGUI.py:1950 +#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:731 +#: flatcamGUI/FlatCAMGUI.py:1930 flatcamGUI/FlatCAMGUI.py:1957 msgid "Transformations" msgstr "Transformations" -#: flatcamGUI/FlatCAMGUI.py:706 +#: flatcamGUI/FlatCAMGUI.py:707 msgid "Move Objects " msgstr "Move Objects " -#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1932 +#: flatcamGUI/FlatCAMGUI.py:711 flatcamGUI/FlatCAMGUI.py:1937 msgid "Add Pad" msgstr "Add Pad" -#: flatcamGUI/FlatCAMGUI.py:712 flatcamGUI/FlatCAMGUI.py:1934 +#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1939 msgid "Add Track" msgstr "Add Track" -#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1935 +#: flatcamGUI/FlatCAMGUI.py:714 flatcamGUI/FlatCAMGUI.py:1940 msgid "Add Region" msgstr "Add Region" -#: flatcamGUI/FlatCAMGUI.py:715 flatcamGUI/FlatCAMGUI.py:1937 +#: flatcamGUI/FlatCAMGUI.py:716 flatcamGUI/FlatCAMGUI.py:1942 msgid "Poligonize" msgstr "Poligonize" -#: flatcamGUI/FlatCAMGUI.py:717 flatcamGUI/FlatCAMGUI.py:1939 +#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1944 msgid "SemiDisc" msgstr "SemiDisc" -#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1940 +#: flatcamGUI/FlatCAMGUI.py:719 flatcamGUI/FlatCAMGUI.py:1945 msgid "Disc" msgstr "Disc" -#: flatcamGUI/FlatCAMGUI.py:730 flatcamGUI/FlatCAMGUI.py:1602 -#: flatcamGUI/FlatCAMGUI.py:1622 flatcamGUI/FlatCAMGUI.py:1952 +#: flatcamGUI/FlatCAMGUI.py:733 flatcamGUI/FlatCAMGUI.py:1605 +#: flatcamGUI/FlatCAMGUI.py:1625 flatcamGUI/FlatCAMGUI.py:1959 #: flatcamTools/ToolMove.py:26 msgid "Move" msgstr "Move" -#: flatcamGUI/FlatCAMGUI.py:736 flatcamGUI/FlatCAMGUI.py:1958 +#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1965 msgid "Snap to grid" msgstr "Snap to grid" -#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1961 +#: flatcamGUI/FlatCAMGUI.py:742 flatcamGUI/FlatCAMGUI.py:1968 msgid "Grid X snapping distance" msgstr "Grid X snapping distance" -#: flatcamGUI/FlatCAMGUI.py:744 flatcamGUI/FlatCAMGUI.py:1966 +#: flatcamGUI/FlatCAMGUI.py:747 flatcamGUI/FlatCAMGUI.py:1973 msgid "Grid Y snapping distance" msgstr "Grid Y snapping distance" -#: flatcamGUI/FlatCAMGUI.py:750 flatcamGUI/FlatCAMGUI.py:1972 +#: flatcamGUI/FlatCAMGUI.py:753 flatcamGUI/FlatCAMGUI.py:1979 msgid "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." @@ -4422,64 +4424,64 @@ msgstr "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." -#: flatcamGUI/FlatCAMGUI.py:756 flatcamGUI/FlatCAMGUI.py:1978 +#: flatcamGUI/FlatCAMGUI.py:759 flatcamGUI/FlatCAMGUI.py:1985 msgid "Snap to corner" msgstr "Snap to corner" -#: flatcamGUI/FlatCAMGUI.py:760 flatcamGUI/FlatCAMGUI.py:1982 -#: flatcamGUI/FlatCAMGUI.py:3339 +#: flatcamGUI/FlatCAMGUI.py:763 flatcamGUI/FlatCAMGUI.py:1989 +#: flatcamGUI/FlatCAMGUI.py:3346 msgid "Max. magnet distance" msgstr "Max. magnet distance" -#: flatcamGUI/FlatCAMGUI.py:788 flatcamGUI/FlatCAMGUI.py:1586 +#: flatcamGUI/FlatCAMGUI.py:791 flatcamGUI/FlatCAMGUI.py:1589 msgid "Project" msgstr "Project" -#: flatcamGUI/FlatCAMGUI.py:798 +#: flatcamGUI/FlatCAMGUI.py:801 msgid "Selected" msgstr "Selected" -#: flatcamGUI/FlatCAMGUI.py:817 flatcamGUI/FlatCAMGUI.py:825 +#: flatcamGUI/FlatCAMGUI.py:820 flatcamGUI/FlatCAMGUI.py:828 msgid "Plot Area" msgstr "Plot Area" -#: flatcamGUI/FlatCAMGUI.py:849 +#: flatcamGUI/FlatCAMGUI.py:852 msgid "General" msgstr "General" -#: flatcamGUI/FlatCAMGUI.py:858 +#: flatcamGUI/FlatCAMGUI.py:861 msgid "APP. DEFAULTS" msgstr "APP. DEFAULTS" -#: flatcamGUI/FlatCAMGUI.py:859 +#: flatcamGUI/FlatCAMGUI.py:862 msgid "PROJ. OPTIONS " msgstr "PROJ. OPTIONS " -#: flatcamGUI/FlatCAMGUI.py:870 +#: flatcamGUI/FlatCAMGUI.py:873 msgid "GERBER" msgstr "GERBER" -#: flatcamGUI/FlatCAMGUI.py:879 +#: flatcamGUI/FlatCAMGUI.py:882 msgid "EXCELLON" msgstr "EXCELLON" -#: flatcamGUI/FlatCAMGUI.py:888 +#: flatcamGUI/FlatCAMGUI.py:891 msgid "GEOMETRY" msgstr "GEOMETRY" -#: flatcamGUI/FlatCAMGUI.py:898 +#: flatcamGUI/FlatCAMGUI.py:901 msgid "CNC-JOB" msgstr "CNC-JOB" -#: flatcamGUI/FlatCAMGUI.py:907 +#: flatcamGUI/FlatCAMGUI.py:910 msgid "TOOLS" msgstr "TOOLS" -#: flatcamGUI/FlatCAMGUI.py:924 +#: flatcamGUI/FlatCAMGUI.py:927 msgid "Import Preferences" msgstr "Import Preferences" -#: flatcamGUI/FlatCAMGUI.py:927 +#: flatcamGUI/FlatCAMGUI.py:930 msgid "" "Import a full set of FlatCAM settings from a file\n" "previously saved on HDD.\n" @@ -4493,11 +4495,11 @@ msgstr "" "FlatCAM automatically save a 'factory_defaults' file\n" "on the first start. Do not delete that file." -#: flatcamGUI/FlatCAMGUI.py:934 +#: flatcamGUI/FlatCAMGUI.py:937 msgid "Export Preferences" msgstr "Export Preferences" -#: flatcamGUI/FlatCAMGUI.py:937 +#: flatcamGUI/FlatCAMGUI.py:940 msgid "" "Export a full set of FlatCAM settings in a file\n" "that is saved on HDD." @@ -4505,19 +4507,19 @@ msgstr "" "Export a full set of FlatCAM settings in a file\n" "that is saved on HDD." -#: flatcamGUI/FlatCAMGUI.py:942 +#: flatcamGUI/FlatCAMGUI.py:945 msgid "Open Pref Folder" msgstr "Open Pref Folder" -#: flatcamGUI/FlatCAMGUI.py:945 +#: flatcamGUI/FlatCAMGUI.py:948 msgid "Open the folder where FlatCAM save the preferences files." msgstr "Open the folder where FlatCAM save the preferences files." -#: flatcamGUI/FlatCAMGUI.py:953 +#: flatcamGUI/FlatCAMGUI.py:956 msgid "Save Preferences" msgstr "Save Preferences" -#: flatcamGUI/FlatCAMGUI.py:956 +#: flatcamGUI/FlatCAMGUI.py:959 msgid "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." @@ -4525,7 +4527,7 @@ msgstr "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." -#: flatcamGUI/FlatCAMGUI.py:982 +#: flatcamGUI/FlatCAMGUI.py:985 msgid "" "General Shortcut list
\n" " Editor Shortcut list
\n" "
\n" @@ -5717,99 +5719,99 @@ msgstr "" "
\n" " " -#: flatcamGUI/FlatCAMGUI.py:1579 +#: flatcamGUI/FlatCAMGUI.py:1582 msgid "Disable" msgstr "Disable" -#: flatcamGUI/FlatCAMGUI.py:1581 +#: flatcamGUI/FlatCAMGUI.py:1584 msgid "New" msgstr "New" -#: flatcamGUI/FlatCAMGUI.py:1582 +#: flatcamGUI/FlatCAMGUI.py:1585 msgid "Geometry" msgstr "Geometry" -#: flatcamGUI/FlatCAMGUI.py:1584 +#: flatcamGUI/FlatCAMGUI.py:1587 msgid "Excellon" msgstr "Excellon" -#: flatcamGUI/FlatCAMGUI.py:1589 +#: flatcamGUI/FlatCAMGUI.py:1592 msgid "Grids" msgstr "Grids" -#: flatcamGUI/FlatCAMGUI.py:1591 +#: flatcamGUI/FlatCAMGUI.py:1594 msgid "View" msgstr "View" -#: flatcamGUI/FlatCAMGUI.py:1593 +#: flatcamGUI/FlatCAMGUI.py:1596 msgid "Clear Plot" msgstr "Clear Plot" -#: flatcamGUI/FlatCAMGUI.py:1594 +#: flatcamGUI/FlatCAMGUI.py:1597 msgid "Replot" msgstr "Replot" -#: flatcamGUI/FlatCAMGUI.py:1597 +#: flatcamGUI/FlatCAMGUI.py:1600 msgid "Geo Editor" msgstr "Geo Editor" -#: flatcamGUI/FlatCAMGUI.py:1598 +#: flatcamGUI/FlatCAMGUI.py:1601 msgid "Line" msgstr "Line" -#: flatcamGUI/FlatCAMGUI.py:1599 +#: flatcamGUI/FlatCAMGUI.py:1602 msgid "Rectangle" msgstr "Rectangle" -#: flatcamGUI/FlatCAMGUI.py:1600 +#: flatcamGUI/FlatCAMGUI.py:1603 msgid "Cut" msgstr "Cut" -#: flatcamGUI/FlatCAMGUI.py:1605 +#: flatcamGUI/FlatCAMGUI.py:1608 msgid "Pad" msgstr "Pad" -#: flatcamGUI/FlatCAMGUI.py:1606 +#: flatcamGUI/FlatCAMGUI.py:1609 msgid "Pad Array" msgstr "Pad Array" -#: flatcamGUI/FlatCAMGUI.py:1607 +#: flatcamGUI/FlatCAMGUI.py:1610 msgid "Track" msgstr "Track" -#: flatcamGUI/FlatCAMGUI.py:1608 +#: flatcamGUI/FlatCAMGUI.py:1611 msgid "Region" msgstr "Region" -#: flatcamGUI/FlatCAMGUI.py:1610 +#: flatcamGUI/FlatCAMGUI.py:1613 msgid "Exc Editor" msgstr "Exc Editor" -#: flatcamGUI/FlatCAMGUI.py:1611 +#: flatcamGUI/FlatCAMGUI.py:1614 msgid "Add Drill" msgstr "Add Drill" -#: flatcamGUI/FlatCAMGUI.py:1643 +#: flatcamGUI/FlatCAMGUI.py:1646 msgid "Print Preview" msgstr "Print Preview" -#: flatcamGUI/FlatCAMGUI.py:1644 +#: flatcamGUI/FlatCAMGUI.py:1647 msgid "Print Code" msgstr "Print Code" -#: flatcamGUI/FlatCAMGUI.py:1645 +#: flatcamGUI/FlatCAMGUI.py:1648 msgid "Find in Code" msgstr "Find in Code" -#: flatcamGUI/FlatCAMGUI.py:1650 +#: flatcamGUI/FlatCAMGUI.py:1653 msgid "Replace With" msgstr "Replace With" -#: flatcamGUI/FlatCAMGUI.py:1654 +#: flatcamGUI/FlatCAMGUI.py:1657 msgid "All" msgstr "All" -#: flatcamGUI/FlatCAMGUI.py:1656 +#: flatcamGUI/FlatCAMGUI.py:1659 msgid "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." @@ -5817,15 +5819,15 @@ msgstr "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." -#: flatcamGUI/FlatCAMGUI.py:1659 +#: flatcamGUI/FlatCAMGUI.py:1662 msgid "Open Code" msgstr "Open Code" -#: flatcamGUI/FlatCAMGUI.py:1660 +#: flatcamGUI/FlatCAMGUI.py:1663 msgid "Save Code" msgstr "Save Code" -#: flatcamGUI/FlatCAMGUI.py:1695 +#: flatcamGUI/FlatCAMGUI.py:1698 msgid "" "Relative neasurement.\n" "Reference is last click position" @@ -5833,7 +5835,7 @@ msgstr "" "Relative neasurement.\n" "Reference is last click position" -#: flatcamGUI/FlatCAMGUI.py:1701 +#: flatcamGUI/FlatCAMGUI.py:1704 msgid "" "Absolute neasurement.\n" "Reference is (X=0, Y= 0) position" @@ -5841,23 +5843,23 @@ msgstr "" "Absolute neasurement.\n" "Reference is (X=0, Y= 0) position" -#: flatcamGUI/FlatCAMGUI.py:1896 +#: flatcamGUI/FlatCAMGUI.py:1899 msgid "Select 'Esc'" msgstr "Select 'Esc'" -#: flatcamGUI/FlatCAMGUI.py:1921 +#: flatcamGUI/FlatCAMGUI.py:1926 msgid "Copy Objects" msgstr "Copy Objects" -#: flatcamGUI/FlatCAMGUI.py:1923 +#: flatcamGUI/FlatCAMGUI.py:1928 msgid "Delete Shape" msgstr "Delete Shape" -#: flatcamGUI/FlatCAMGUI.py:1928 +#: flatcamGUI/FlatCAMGUI.py:1933 msgid "Move Objects" msgstr "Move Objects" -#: flatcamGUI/FlatCAMGUI.py:2358 +#: flatcamGUI/FlatCAMGUI.py:2365 msgid "" "Please first select a geometry item to be cutted\n" "then select the geometry item that will be cutted\n" @@ -5869,17 +5871,17 @@ msgstr "" "out of the first item. In the end press ~X~ key or\n" "the toolbar button." -#: flatcamGUI/FlatCAMGUI.py:2365 flatcamGUI/FlatCAMGUI.py:2502 -#: flatcamGUI/FlatCAMGUI.py:2561 flatcamGUI/FlatCAMGUI.py:2581 +#: flatcamGUI/FlatCAMGUI.py:2372 flatcamGUI/FlatCAMGUI.py:2509 +#: flatcamGUI/FlatCAMGUI.py:2568 flatcamGUI/FlatCAMGUI.py:2588 msgid "Warning" msgstr "Warning" -#: flatcamGUI/FlatCAMGUI.py:2432 flatcamGUI/FlatCAMGUI.py:2631 -#: flatcamGUI/FlatCAMGUI.py:2842 +#: flatcamGUI/FlatCAMGUI.py:2439 flatcamGUI/FlatCAMGUI.py:2638 +#: flatcamGUI/FlatCAMGUI.py:2849 msgid "[WARNING_NOTCL] Cancelled." msgstr "[WARNING_NOTCL] Cancelled." -#: flatcamGUI/FlatCAMGUI.py:2497 +#: flatcamGUI/FlatCAMGUI.py:2504 msgid "" "Please select geometry items \n" "on which to perform Intersection Tool." @@ -5887,7 +5889,7 @@ msgstr "" "Please select geometry items \n" "on which to perform Intersection Tool." -#: flatcamGUI/FlatCAMGUI.py:2556 +#: flatcamGUI/FlatCAMGUI.py:2563 msgid "" "Please select geometry items \n" "on which to perform Substraction Tool." @@ -5895,7 +5897,7 @@ msgstr "" "Please select geometry items \n" "on which to perform Substraction Tool." -#: flatcamGUI/FlatCAMGUI.py:2576 +#: flatcamGUI/FlatCAMGUI.py:2583 msgid "" "Please select geometry items \n" "on which to perform union." @@ -5903,55 +5905,55 @@ msgstr "" "Please select geometry items \n" "on which to perform union." -#: flatcamGUI/FlatCAMGUI.py:2647 flatcamGUI/FlatCAMGUI.py:2859 +#: flatcamGUI/FlatCAMGUI.py:2654 flatcamGUI/FlatCAMGUI.py:2866 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to delete." msgstr "[WARNING_NOTCL] Cancelled. Nothing selected to delete." -#: flatcamGUI/FlatCAMGUI.py:2731 flatcamGUI/FlatCAMGUI.py:2926 +#: flatcamGUI/FlatCAMGUI.py:2738 flatcamGUI/FlatCAMGUI.py:2933 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to copy." msgstr "[WARNING_NOTCL] Cancelled. Nothing selected to copy." -#: flatcamGUI/FlatCAMGUI.py:2777 flatcamGUI/FlatCAMGUI.py:2972 +#: flatcamGUI/FlatCAMGUI.py:2784 flatcamGUI/FlatCAMGUI.py:2979 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to move." msgstr "[WARNING_NOTCL] Cancelled. Nothing selected to move." -#: flatcamGUI/FlatCAMGUI.py:2986 +#: flatcamGUI/FlatCAMGUI.py:2993 msgid "New Tool ..." msgstr "New Tool ..." -#: flatcamGUI/FlatCAMGUI.py:2987 +#: flatcamGUI/FlatCAMGUI.py:2994 msgid "Enter a Tool Diameter:" msgstr "Enter a Tool Diameter:" -#: flatcamGUI/FlatCAMGUI.py:3029 +#: flatcamGUI/FlatCAMGUI.py:3036 msgid "Measurement Tool exit..." msgstr "Measurement Tool exit..." -#: flatcamGUI/FlatCAMGUI.py:3324 +#: flatcamGUI/FlatCAMGUI.py:3331 msgid "Grid X value:" msgstr "Grid X value:" -#: flatcamGUI/FlatCAMGUI.py:3326 +#: flatcamGUI/FlatCAMGUI.py:3333 msgid "This is the Grid snap value on X axis." msgstr "This is the Grid snap value on X axis." -#: flatcamGUI/FlatCAMGUI.py:3331 +#: flatcamGUI/FlatCAMGUI.py:3338 msgid "Grid Y value:" msgstr "Grid Y value:" -#: flatcamGUI/FlatCAMGUI.py:3333 +#: flatcamGUI/FlatCAMGUI.py:3340 msgid "This is the Grid snap value on Y axis." msgstr "This is the Grid snap value on Y axis." -#: flatcamGUI/FlatCAMGUI.py:3338 +#: flatcamGUI/FlatCAMGUI.py:3345 msgid "Snap Max:" msgstr "Snap Max:" -#: flatcamGUI/FlatCAMGUI.py:3343 +#: flatcamGUI/FlatCAMGUI.py:3350 msgid "Workspace:" msgstr "Workspace:" -#: flatcamGUI/FlatCAMGUI.py:3345 +#: flatcamGUI/FlatCAMGUI.py:3352 msgid "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." @@ -5959,11 +5961,11 @@ msgstr "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." -#: flatcamGUI/FlatCAMGUI.py:3348 +#: flatcamGUI/FlatCAMGUI.py:3355 msgid "Wk. format:" msgstr "Wk. format:" -#: flatcamGUI/FlatCAMGUI.py:3350 +#: flatcamGUI/FlatCAMGUI.py:3357 msgid "" "Select the type of rectangle to be used on canvas,\n" "as valid workspace." @@ -5971,11 +5973,11 @@ msgstr "" "Select the type of rectangle to be used on canvas,\n" "as valid workspace." -#: flatcamGUI/FlatCAMGUI.py:3363 +#: flatcamGUI/FlatCAMGUI.py:3370 msgid "Plot Fill:" msgstr "Plot Fill:" -#: flatcamGUI/FlatCAMGUI.py:3365 +#: flatcamGUI/FlatCAMGUI.py:3372 msgid "" "Set the fill color for plotted objects.\n" "First 6 digits are the color and the last 2\n" @@ -5985,28 +5987,28 @@ msgstr "" "First 6 digits are the color and the last 2\n" "digits are for alpha (transparency) level." -#: flatcamGUI/FlatCAMGUI.py:3379 flatcamGUI/FlatCAMGUI.py:3429 -#: flatcamGUI/FlatCAMGUI.py:3479 +#: flatcamGUI/FlatCAMGUI.py:3386 flatcamGUI/FlatCAMGUI.py:3436 +#: flatcamGUI/FlatCAMGUI.py:3486 msgid "Alpha Level:" msgstr "Alpha Level:" -#: flatcamGUI/FlatCAMGUI.py:3381 +#: flatcamGUI/FlatCAMGUI.py:3388 msgid "Set the fill transparency for plotted objects." msgstr "Set the fill transparency for plotted objects." -#: flatcamGUI/FlatCAMGUI.py:3398 +#: flatcamGUI/FlatCAMGUI.py:3405 msgid "Plot Line:" msgstr "Plot Line:" -#: flatcamGUI/FlatCAMGUI.py:3400 +#: flatcamGUI/FlatCAMGUI.py:3407 msgid "Set the line color for plotted objects." msgstr "Set the line color for plotted objects." -#: flatcamGUI/FlatCAMGUI.py:3412 +#: flatcamGUI/FlatCAMGUI.py:3419 msgid "Sel. Fill:" msgstr "Sel. Fill:" -#: flatcamGUI/FlatCAMGUI.py:3414 +#: flatcamGUI/FlatCAMGUI.py:3421 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from left to right.\n" @@ -6018,23 +6020,23 @@ msgstr "" "First 6 digits are the color and the last 2\n" "digits are for alpha (transparency) level." -#: flatcamGUI/FlatCAMGUI.py:3431 +#: flatcamGUI/FlatCAMGUI.py:3438 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:3448 +#: flatcamGUI/FlatCAMGUI.py:3455 msgid "Sel. Line:" msgstr "Sel. Line:" -#: flatcamGUI/FlatCAMGUI.py:3450 +#: flatcamGUI/FlatCAMGUI.py:3457 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:3462 +#: flatcamGUI/FlatCAMGUI.py:3469 msgid "Sel2. Fill:" msgstr "Sel2. Fill:" -#: flatcamGUI/FlatCAMGUI.py:3464 +#: flatcamGUI/FlatCAMGUI.py:3471 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from right to left.\n" @@ -6046,47 +6048,47 @@ msgstr "" "First 6 digits are the color and the last 2\n" "digits are for alpha (transparency) level." -#: flatcamGUI/FlatCAMGUI.py:3481 +#: flatcamGUI/FlatCAMGUI.py:3488 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:3498 +#: flatcamGUI/FlatCAMGUI.py:3505 msgid "Sel2. Line:" msgstr "Sel2. Line:" -#: flatcamGUI/FlatCAMGUI.py:3500 +#: flatcamGUI/FlatCAMGUI.py:3507 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:3512 +#: flatcamGUI/FlatCAMGUI.py:3519 msgid "Editor Draw:" msgstr "Editor Draw:" -#: flatcamGUI/FlatCAMGUI.py:3514 +#: flatcamGUI/FlatCAMGUI.py:3521 msgid "Set the color for the shape." msgstr "Set the color for the shape." -#: flatcamGUI/FlatCAMGUI.py:3526 +#: flatcamGUI/FlatCAMGUI.py:3533 msgid "Editor Draw Sel.:" msgstr "Editor Draw Sel.:" -#: flatcamGUI/FlatCAMGUI.py:3528 +#: flatcamGUI/FlatCAMGUI.py:3535 msgid "Set the color of the shape when selected." msgstr "Set the color of the shape when selected." -#: flatcamGUI/FlatCAMGUI.py:3540 +#: flatcamGUI/FlatCAMGUI.py:3547 msgid "Project Items:" msgstr "Project Items:" -#: flatcamGUI/FlatCAMGUI.py:3542 +#: flatcamGUI/FlatCAMGUI.py:3549 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:3553 +#: flatcamGUI/FlatCAMGUI.py:3560 msgid "Proj. Dis. Items:" msgstr "Proj. Dis. Items:" -#: flatcamGUI/FlatCAMGUI.py:3555 +#: flatcamGUI/FlatCAMGUI.py:3562 msgid "" "Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled." @@ -6094,15 +6096,15 @@ msgstr "" "Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled." -#: flatcamGUI/FlatCAMGUI.py:3606 +#: flatcamGUI/FlatCAMGUI.py:3613 msgid "GUI Settings" msgstr "GUI Settings" -#: flatcamGUI/FlatCAMGUI.py:3613 +#: flatcamGUI/FlatCAMGUI.py:3620 msgid "Layout:" msgstr "Layout:" -#: flatcamGUI/FlatCAMGUI.py:3615 +#: flatcamGUI/FlatCAMGUI.py:3622 msgid "" "Select an layout for FlatCAM.\n" "It is applied immediately." @@ -6110,11 +6112,11 @@ msgstr "" "Select an layout for FlatCAM.\n" "It is applied immediately." -#: flatcamGUI/FlatCAMGUI.py:3631 +#: flatcamGUI/FlatCAMGUI.py:3638 msgid "Style:" msgstr "Style:" -#: flatcamGUI/FlatCAMGUI.py:3633 +#: flatcamGUI/FlatCAMGUI.py:3640 msgid "" "Select an style for FlatCAM.\n" "It will be applied at the next app start." @@ -6122,11 +6124,11 @@ msgstr "" "Select an style for FlatCAM.\n" "It will be applied at the next app start." -#: flatcamGUI/FlatCAMGUI.py:3644 +#: flatcamGUI/FlatCAMGUI.py:3651 msgid "HDPI Support:" msgstr "HDPI Support:" -#: flatcamGUI/FlatCAMGUI.py:3646 +#: flatcamGUI/FlatCAMGUI.py:3653 msgid "" "Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start." @@ -6134,11 +6136,11 @@ msgstr "" "Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start." -#: flatcamGUI/FlatCAMGUI.py:3659 +#: flatcamGUI/FlatCAMGUI.py:3666 msgid "Clear GUI Settings:" msgstr "Clear GUI Settings:" -#: flatcamGUI/FlatCAMGUI.py:3661 +#: flatcamGUI/FlatCAMGUI.py:3668 msgid "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." @@ -6146,15 +6148,15 @@ msgstr "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." -#: flatcamGUI/FlatCAMGUI.py:3664 +#: flatcamGUI/FlatCAMGUI.py:3671 msgid "Clear" msgstr "Clear" -#: flatcamGUI/FlatCAMGUI.py:3668 +#: flatcamGUI/FlatCAMGUI.py:3675 msgid "Hover Shape:" msgstr "Hover Shape:" -#: flatcamGUI/FlatCAMGUI.py:3670 +#: flatcamGUI/FlatCAMGUI.py:3677 msgid "" "Enable display of a hover shape for FlatCAM objects.\n" "It is displayed whenever the mouse cursor is hovering\n" @@ -6164,11 +6166,11 @@ msgstr "" "It is displayed whenever the mouse cursor is hovering\n" "over any kind of not-selected object." -#: flatcamGUI/FlatCAMGUI.py:3677 +#: flatcamGUI/FlatCAMGUI.py:3684 msgid "Sel. Shape:" msgstr "Sel. Shape:" -#: flatcamGUI/FlatCAMGUI.py:3679 +#: flatcamGUI/FlatCAMGUI.py:3686 msgid "" "Enable the display of a selection shape for FlatCAM objects.\n" "It is displayed whenever the mouse selects an object\n" @@ -6180,23 +6182,23 @@ msgstr "" "either by clicking or dragging mouse from left to right or\n" "right to left." -#: flatcamGUI/FlatCAMGUI.py:3721 +#: flatcamGUI/FlatCAMGUI.py:3728 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:3724 +#: flatcamGUI/FlatCAMGUI.py:3731 msgid "Clear GUI Settings" msgstr "Clear GUI Settings" -#: flatcamGUI/FlatCAMGUI.py:3745 +#: flatcamGUI/FlatCAMGUI.py:3752 msgid "App Preferences" msgstr "App Preferences" -#: flatcamGUI/FlatCAMGUI.py:3751 +#: flatcamGUI/FlatCAMGUI.py:3758 msgid "Units:" msgstr "Units:" -#: flatcamGUI/FlatCAMGUI.py:3752 +#: flatcamGUI/FlatCAMGUI.py:3759 msgid "" "The default value for FlatCAM units.\n" "Whatever is selected here is set every time\n" @@ -6206,11 +6208,11 @@ msgstr "" "Whatever is selected here is set every time\n" "FLatCAM is started." -#: flatcamGUI/FlatCAMGUI.py:3759 +#: flatcamGUI/FlatCAMGUI.py:3766 msgid "APP. LEVEL:" msgstr "APP. LEVEL:" -#: flatcamGUI/FlatCAMGUI.py:3760 +#: flatcamGUI/FlatCAMGUI.py:3767 msgid "" "Choose the default level of usage for FlatCAM.\n" "BASIC level -> reduced functionality, best for beginner's.\n" @@ -6226,19 +6228,19 @@ msgstr "" "The choice here will influence the parameters in\n" "the Selected Tab for all kinds of FlatCAM objects." -#: flatcamGUI/FlatCAMGUI.py:3769 +#: flatcamGUI/FlatCAMGUI.py:3776 msgid "Languages:" msgstr "Languages:" -#: flatcamGUI/FlatCAMGUI.py:3770 +#: flatcamGUI/FlatCAMGUI.py:3777 msgid "Set the language used throughout FlatCAM." msgstr "Set the language used throughout FlatCAM." -#: flatcamGUI/FlatCAMGUI.py:3773 +#: flatcamGUI/FlatCAMGUI.py:3780 msgid "Apply Language" msgstr "Apply Language" -#: flatcamGUI/FlatCAMGUI.py:3774 +#: flatcamGUI/FlatCAMGUI.py:3781 msgid "" "Set the language used throughout FlatCAM.\n" "The app will restart after click.Windows: When FlatCAM is installed in " @@ -6256,11 +6258,11 @@ msgstr "" "security features. In this case the language will be\n" "applied at the next app start." -#: flatcamGUI/FlatCAMGUI.py:3783 +#: flatcamGUI/FlatCAMGUI.py:3790 msgid "Shell at StartUp:" msgstr "Shell at StartUp:" -#: flatcamGUI/FlatCAMGUI.py:3785 flatcamGUI/FlatCAMGUI.py:3790 +#: flatcamGUI/FlatCAMGUI.py:3792 flatcamGUI/FlatCAMGUI.py:3797 msgid "" "Check this box if you want the shell to\n" "start automatically at startup." @@ -6268,11 +6270,11 @@ msgstr "" "Check this box if you want the shell to\n" "start automatically at startup." -#: flatcamGUI/FlatCAMGUI.py:3795 +#: flatcamGUI/FlatCAMGUI.py:3802 msgid "Version Check:" msgstr "Version Check:" -#: flatcamGUI/FlatCAMGUI.py:3797 flatcamGUI/FlatCAMGUI.py:3802 +#: flatcamGUI/FlatCAMGUI.py:3804 flatcamGUI/FlatCAMGUI.py:3809 msgid "" "Check this box if you want to check\n" "for a new version automatically at startup." @@ -6280,11 +6282,11 @@ msgstr "" "Check this box if you want to check\n" "for a new version automatically at startup." -#: flatcamGUI/FlatCAMGUI.py:3807 +#: flatcamGUI/FlatCAMGUI.py:3814 msgid "Send Stats:" msgstr "Send Stats:" -#: flatcamGUI/FlatCAMGUI.py:3809 flatcamGUI/FlatCAMGUI.py:3814 +#: flatcamGUI/FlatCAMGUI.py:3816 flatcamGUI/FlatCAMGUI.py:3821 msgid "" "Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM." @@ -6292,11 +6294,11 @@ msgstr "" "Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM." -#: flatcamGUI/FlatCAMGUI.py:3821 +#: flatcamGUI/FlatCAMGUI.py:3828 msgid "Pan Button:" msgstr "Pan Button:" -#: flatcamGUI/FlatCAMGUI.py:3822 +#: flatcamGUI/FlatCAMGUI.py:3829 msgid "" "Select the mouse button to use for panning:\n" "- MMB --> Middle Mouse Button\n" @@ -6306,19 +6308,19 @@ msgstr "" "- MMB --> Middle Mouse Button\n" "- RMB --> Right Mouse Button" -#: flatcamGUI/FlatCAMGUI.py:3829 +#: flatcamGUI/FlatCAMGUI.py:3836 msgid "Multiple Sel:" msgstr "Multiple Sel:" -#: flatcamGUI/FlatCAMGUI.py:3830 +#: flatcamGUI/FlatCAMGUI.py:3837 msgid "Select the key used for multiple selection." msgstr "Select the key used for multiple selection." -#: flatcamGUI/FlatCAMGUI.py:3835 +#: flatcamGUI/FlatCAMGUI.py:3842 msgid "Project at StartUp:" msgstr "Project at StartUp:" -#: flatcamGUI/FlatCAMGUI.py:3837 flatcamGUI/FlatCAMGUI.py:3842 +#: flatcamGUI/FlatCAMGUI.py:3844 flatcamGUI/FlatCAMGUI.py:3849 msgid "" "Check this box if you want the project/selected/tool tab area to\n" "to be shown automatically at startup." @@ -6326,11 +6328,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:3847 +#: flatcamGUI/FlatCAMGUI.py:3854 msgid "Project AutoHide:" msgstr "Project AutoHide:" -#: flatcamGUI/FlatCAMGUI.py:3849 flatcamGUI/FlatCAMGUI.py:3855 +#: flatcamGUI/FlatCAMGUI.py:3856 flatcamGUI/FlatCAMGUI.py:3862 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" @@ -6340,11 +6342,11 @@ msgstr "" "hide automatically when there are no objects loaded and\n" "to show whenever a new object is created." -#: flatcamGUI/FlatCAMGUI.py:3861 +#: flatcamGUI/FlatCAMGUI.py:3868 msgid "Enable ToolTips:" msgstr "Enable ToolTips:" -#: flatcamGUI/FlatCAMGUI.py:3863 flatcamGUI/FlatCAMGUI.py:3868 +#: flatcamGUI/FlatCAMGUI.py:3870 flatcamGUI/FlatCAMGUI.py:3875 msgid "" "Check this box if you want to have toolTips displayed\n" "when hovering with mouse over items throughout the App." @@ -6352,11 +6354,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:3871 +#: flatcamGUI/FlatCAMGUI.py:3878 msgid "Workers number:" msgstr "Workers number:" -#: flatcamGUI/FlatCAMGUI.py:3873 flatcamGUI/FlatCAMGUI.py:3882 +#: flatcamGUI/FlatCAMGUI.py:3880 flatcamGUI/FlatCAMGUI.py:3889 msgid "" "The number of Qthreads made available to the App.\n" "A bigger number may finish the jobs more quickly but\n" @@ -6372,7 +6374,7 @@ msgstr "" "Default value is 2.\n" "After change, it will be applied at next App start." -#: flatcamGUI/FlatCAMGUI.py:3894 flatcamGUI/FlatCAMGUI.py:3903 +#: flatcamGUI/FlatCAMGUI.py:3901 flatcamGUI/FlatCAMGUI.py:3910 msgid "" "This value can counter the effect of the Circle Steps\n" "parameter. Default value is 0.01.\n" @@ -6388,12 +6390,11 @@ msgstr "" "performance. Higher value will provide more\n" "performance at the expense of level of detail." -#: flatcamGUI/FlatCAMGUI.py:3939 -#| msgid "Open Gerber" +#: flatcamGUI/FlatCAMGUI.py:3946 msgid "\"Open\" behavior" msgstr "\"Open\" behavior" -#: flatcamGUI/FlatCAMGUI.py:3941 +#: flatcamGUI/FlatCAMGUI.py:3948 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" @@ -6407,11 +6408,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:3950 +#: flatcamGUI/FlatCAMGUI.py:3957 msgid "Save Compressed Project" msgstr "Save Compressed Project" -#: flatcamGUI/FlatCAMGUI.py:3952 +#: flatcamGUI/FlatCAMGUI.py:3959 msgid "" "Whether to save a compressed or uncompressed project.\n" "When checked it will save a compressed FlatCAM project." @@ -6419,11 +6420,11 @@ msgstr "" "Whether to save a compressed or uncompressed project.\n" "When checked it will save a compressed FlatCAM project." -#: flatcamGUI/FlatCAMGUI.py:3963 +#: flatcamGUI/FlatCAMGUI.py:3970 msgid "Compression Level:" msgstr "Compression Level:" -#: flatcamGUI/FlatCAMGUI.py:3965 +#: flatcamGUI/FlatCAMGUI.py:3972 msgid "" "The level of compression used when saving\n" "a FlatCAM project. Higher value means better compression\n" @@ -6433,47 +6434,47 @@ msgstr "" "a FlatCAM project. Higher value means better compression\n" "but require more RAM usage and more processing time." -#: flatcamGUI/FlatCAMGUI.py:3991 flatcamGUI/FlatCAMGUI.py:4360 -#: flatcamGUI/FlatCAMGUI.py:5030 flatcamGUI/FlatCAMGUI.py:5402 +#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4367 +#: flatcamGUI/FlatCAMGUI.py:5037 flatcamGUI/FlatCAMGUI.py:5409 #: 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:3998 flatcamGUI/FlatCAMGUI.py:4372 +#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/FlatCAMGUI.py:4379 #: flatcamGUI/ObjectUI.py:156 flatcamGUI/ObjectUI.py:506 msgid "Solid" msgstr "Solid" -#: flatcamGUI/FlatCAMGUI.py:4000 flatcamGUI/ObjectUI.py:158 +#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:158 msgid "Solid color polygons." msgstr "Solid color polygons." -#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/ObjectUI.py:164 +#: flatcamGUI/FlatCAMGUI.py:4012 flatcamGUI/ObjectUI.py:164 msgid "M-Color" msgstr "M-Color" -#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:166 +#: flatcamGUI/FlatCAMGUI.py:4014 flatcamGUI/ObjectUI.py:166 msgid "Draw polygons in different colors." msgstr "Draw polygons in different colors." -#: flatcamGUI/FlatCAMGUI.py:4012 flatcamGUI/FlatCAMGUI.py:4366 -#: flatcamGUI/FlatCAMGUI.py:5034 flatcamGUI/ObjectUI.py:172 +#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:4373 +#: flatcamGUI/FlatCAMGUI.py:5041 flatcamGUI/ObjectUI.py:172 msgid "Plot" msgstr "Plot" -#: flatcamGUI/FlatCAMGUI.py:4014 flatcamGUI/FlatCAMGUI.py:5036 +#: flatcamGUI/FlatCAMGUI.py:4021 flatcamGUI/FlatCAMGUI.py:5043 #: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:546 #: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1437 msgid "Plot (show) this object." msgstr "Plot (show) this object." -#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:5043 -#: flatcamGUI/FlatCAMGUI.py:5438 +#: flatcamGUI/FlatCAMGUI.py:4026 flatcamGUI/FlatCAMGUI.py:5050 +#: flatcamGUI/FlatCAMGUI.py:5445 msgid "Circle Steps:" msgstr "Circle Steps:" -#: flatcamGUI/FlatCAMGUI.py:4021 +#: flatcamGUI/FlatCAMGUI.py:4028 msgid "" "The number of circle steps for Gerber \n" "circular aperture linear approximation." @@ -6481,15 +6482,15 @@ msgstr "" "The number of circle steps for Gerber \n" "circular aperture linear approximation." -#: flatcamGUI/FlatCAMGUI.py:4036 +#: flatcamGUI/FlatCAMGUI.py:4043 msgid "Gerber Options" msgstr "Gerber Options" -#: flatcamGUI/FlatCAMGUI.py:4040 flatcamGUI/ObjectUI.py:251 +#: flatcamGUI/FlatCAMGUI.py:4047 flatcamGUI/ObjectUI.py:251 msgid "Isolation Routing:" msgstr "Isolation Routing:" -#: flatcamGUI/FlatCAMGUI.py:4042 flatcamGUI/ObjectUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:4049 flatcamGUI/ObjectUI.py:253 msgid "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." @@ -6497,17 +6498,17 @@ msgstr "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." -#: flatcamGUI/FlatCAMGUI.py:4053 flatcamGUI/FlatCAMGUI.py:4753 -#: flatcamGUI/FlatCAMGUI.py:5726 flatcamGUI/ObjectUI.py:788 +#: flatcamGUI/FlatCAMGUI.py:4060 flatcamGUI/FlatCAMGUI.py:4760 +#: flatcamGUI/FlatCAMGUI.py:5733 flatcamGUI/ObjectUI.py:788 #: flatcamGUI/ObjectUI.py:804 msgid "Diameter of the cutting tool." msgstr "Diameter of the cutting tool." -#: flatcamGUI/FlatCAMGUI.py:4060 +#: flatcamGUI/FlatCAMGUI.py:4067 msgid "Width (# passes):" msgstr "Width (# passes):" -#: flatcamGUI/FlatCAMGUI.py:4062 flatcamGUI/ObjectUI.py:275 +#: flatcamGUI/FlatCAMGUI.py:4069 flatcamGUI/ObjectUI.py:275 msgid "" "Width of the isolation gap in\n" "number (integer) of tool widths." @@ -6515,11 +6516,11 @@ msgstr "" "Width of the isolation gap in\n" "number (integer) of tool widths." -#: flatcamGUI/FlatCAMGUI.py:4070 flatcamGUI/ObjectUI.py:283 +#: flatcamGUI/FlatCAMGUI.py:4077 flatcamGUI/ObjectUI.py:283 msgid "Pass overlap:" msgstr "Pass overlap:" -#: flatcamGUI/FlatCAMGUI.py:4072 flatcamGUI/ObjectUI.py:285 +#: flatcamGUI/FlatCAMGUI.py:4079 flatcamGUI/ObjectUI.py:285 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -6532,11 +6533,11 @@ msgstr "" "A value here of 0.25 means an overlap of 25%% from the tool diameter found " "above." -#: flatcamGUI/FlatCAMGUI.py:4080 flatcamGUI/ObjectUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:4087 flatcamGUI/ObjectUI.py:295 msgid "Milling Type:" msgstr "Milling Type:" -#: flatcamGUI/FlatCAMGUI.py:4082 flatcamGUI/ObjectUI.py:297 +#: flatcamGUI/FlatCAMGUI.py:4089 flatcamGUI/ObjectUI.py:297 msgid "" "Milling type:\n" "- climb / best for precision milling and to reduce tool usage\n" @@ -6546,19 +6547,19 @@ msgstr "" "- climb / best for precision milling and to reduce tool usage\n" "- conventional / useful when there is no backlash compensation" -#: flatcamGUI/FlatCAMGUI.py:4092 +#: flatcamGUI/FlatCAMGUI.py:4099 msgid "Combine Passes" msgstr "Combine Passes" -#: flatcamGUI/FlatCAMGUI.py:4094 flatcamGUI/ObjectUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/ObjectUI.py:309 msgid "Combine all passes into one object" msgstr "Combine all passes into one object" -#: flatcamGUI/FlatCAMGUI.py:4099 +#: flatcamGUI/FlatCAMGUI.py:4106 msgid "Clear non-copper:" msgstr "Clear non-copper:" -#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/FlatCAMGUI.py:5614 +#: flatcamGUI/FlatCAMGUI.py:4108 flatcamGUI/FlatCAMGUI.py:5621 #: flatcamGUI/ObjectUI.py:386 msgid "" "Create a Geometry object with\n" @@ -6567,12 +6568,12 @@ msgstr "" "Create a Geometry object with\n" "toolpaths to cut all non-copper regions." -#: flatcamGUI/FlatCAMGUI.py:4110 flatcamGUI/FlatCAMGUI.py:4136 +#: flatcamGUI/FlatCAMGUI.py:4117 flatcamGUI/FlatCAMGUI.py:4143 #: flatcamGUI/ObjectUI.py:430 flatcamGUI/ObjectUI.py:464 msgid "Boundary Margin:" msgstr "Boundary Margin:" -#: flatcamGUI/FlatCAMGUI.py:4112 flatcamGUI/ObjectUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:4119 flatcamGUI/ObjectUI.py:432 msgid "" "Specify the edge of the PCB\n" "by drawing a box around all\n" @@ -6584,11 +6585,11 @@ msgstr "" "objects with this minimum\n" "distance." -#: flatcamGUI/FlatCAMGUI.py:4122 flatcamGUI/FlatCAMGUI.py:4145 +#: flatcamGUI/FlatCAMGUI.py:4129 flatcamGUI/FlatCAMGUI.py:4152 msgid "Rounded corners" msgstr "Rounded corners" -#: flatcamGUI/FlatCAMGUI.py:4124 +#: flatcamGUI/FlatCAMGUI.py:4131 msgid "" "Creates a Geometry objects with polygons\n" "covering the copper-free areas of the PCB." @@ -6596,11 +6597,11 @@ msgstr "" "Creates a Geometry objects with polygons\n" "covering the copper-free areas of the PCB." -#: flatcamGUI/FlatCAMGUI.py:4130 flatcamGUI/ObjectUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:4137 flatcamGUI/ObjectUI.py:454 msgid "Bounding Box:" msgstr "Bounding Box:" -#: flatcamGUI/FlatCAMGUI.py:4138 flatcamGUI/ObjectUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:4145 flatcamGUI/ObjectUI.py:466 msgid "" "Distance of the edges of the box\n" "to the nearest polygon." @@ -6608,7 +6609,7 @@ msgstr "" "Distance of the edges of the box\n" "to the nearest polygon." -#: flatcamGUI/FlatCAMGUI.py:4147 flatcamGUI/ObjectUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:4154 flatcamGUI/ObjectUI.py:476 msgid "" "If the bounding box is \n" "to have rounded corners\n" @@ -6620,15 +6621,15 @@ msgstr "" "their radius is equal to\n" "the margin." -#: flatcamGUI/FlatCAMGUI.py:4161 +#: flatcamGUI/FlatCAMGUI.py:4168 msgid "Gerber Adv. Options" msgstr "Gerber Adv. Options" -#: flatcamGUI/FlatCAMGUI.py:4165 +#: flatcamGUI/FlatCAMGUI.py:4172 msgid "Advanced Param.:" msgstr "Advanced Param.:" -#: flatcamGUI/FlatCAMGUI.py:4167 +#: flatcamGUI/FlatCAMGUI.py:4174 msgid "" "A list of Gerber advanced parameters.\n" "Those parameters are available only for\n" @@ -6638,11 +6639,11 @@ msgstr "" "Those parameters are available only for\n" "Advanced App. Level." -#: flatcamGUI/FlatCAMGUI.py:4177 flatcamGUI/ObjectUI.py:314 +#: flatcamGUI/FlatCAMGUI.py:4184 flatcamGUI/ObjectUI.py:314 msgid "\"Follow\"" msgstr "\"Follow\"" -#: flatcamGUI/FlatCAMGUI.py:4179 flatcamGUI/ObjectUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:4186 flatcamGUI/ObjectUI.py:316 msgid "" "Generate a 'Follow' geometry.\n" "This means that it will cut through\n" @@ -6652,11 +6653,11 @@ msgstr "" "This means that it will cut through\n" "the middle of the trace." -#: flatcamGUI/FlatCAMGUI.py:4187 +#: flatcamGUI/FlatCAMGUI.py:4194 msgid "Table Show/Hide" msgstr "Table Show/Hide" -#: flatcamGUI/FlatCAMGUI.py:4189 +#: flatcamGUI/FlatCAMGUI.py:4196 msgid "" "Toggle the display of the Gerber Apertures Table.\n" "Also, on hide, it will delete all mark shapes\n" @@ -6666,19 +6667,15 @@ msgstr "" "Also, on hide, it will delete all mark shapes\n" "that are drawn on canvas." -#: flatcamGUI/FlatCAMGUI.py:4228 -#| msgid "Gerber Editor" +#: flatcamGUI/FlatCAMGUI.py:4235 msgid "Gerber Export" msgstr "Gerber Export" -#: flatcamGUI/FlatCAMGUI.py:4231 flatcamGUI/FlatCAMGUI.py:4902 +#: flatcamGUI/FlatCAMGUI.py:4238 flatcamGUI/FlatCAMGUI.py:4909 msgid "Export Options:" msgstr "Export Options:" -#: flatcamGUI/FlatCAMGUI.py:4233 -#| msgid "" -#| "The parameters set here are used in the file exported\n" -#| "when using the File -> Export -> Export Excellon menu entry." +#: flatcamGUI/FlatCAMGUI.py:4240 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Gerber menu entry." @@ -6686,21 +6683,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:4242 flatcamGUI/FlatCAMGUI.py:4913 +#: flatcamGUI/FlatCAMGUI.py:4249 flatcamGUI/FlatCAMGUI.py:4920 msgid "Units:" msgstr "Units:" -#: flatcamGUI/FlatCAMGUI.py:4244 flatcamGUI/FlatCAMGUI.py:4250 -#| msgid "The units used in the Excellon file." +#: flatcamGUI/FlatCAMGUI.py:4251 flatcamGUI/FlatCAMGUI.py:4257 msgid "The units used in the Gerber file." msgstr "The units used in the Gerber file." -#: flatcamGUI/FlatCAMGUI.py:4256 flatcamGUI/FlatCAMGUI.py:4927 +#: flatcamGUI/FlatCAMGUI.py:4263 flatcamGUI/FlatCAMGUI.py:4934 msgid "Int/Decimals:" msgstr "Int/Decimals:" -#: flatcamGUI/FlatCAMGUI.py:4258 -#| msgid "The number of digits for the fractional part of the coordinates." +#: flatcamGUI/FlatCAMGUI.py:4265 msgid "" "The number of digits in the whole part of the number\n" "and in the fractional part of the number." @@ -6708,10 +6703,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:4269 -#| msgid "" -#| "This numbers signify the number of digits in\n" -#| "the whole part of Excellon coordinates." +#: flatcamGUI/FlatCAMGUI.py:4276 msgid "" "This numbers signify the number of digits in\n" "the whole part of Gerber coordinates." @@ -6719,10 +6711,7 @@ msgstr "" "This numbers signify the number of digits in\n" "the whole part of Gerber coordinates." -#: flatcamGUI/FlatCAMGUI.py:4283 -#| msgid "" -#| "This numbers signify the number of digits in\n" -#| "the decimal part of Excellon coordinates." +#: flatcamGUI/FlatCAMGUI.py:4290 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Gerber coordinates." @@ -6730,17 +6719,11 @@ msgstr "" "This numbers signify the number of digits in\n" "the decimal part of Gerber coordinates." -#: flatcamGUI/FlatCAMGUI.py:4292 flatcamGUI/FlatCAMGUI.py:4988 +#: flatcamGUI/FlatCAMGUI.py:4299 flatcamGUI/FlatCAMGUI.py:4995 msgid "Zeros:" msgstr "Zeros:" -#: flatcamGUI/FlatCAMGUI.py:4295 flatcamGUI/FlatCAMGUI.py:4305 -#| msgid "" -#| "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." +#: flatcamGUI/FlatCAMGUI.py:4302 flatcamGUI/FlatCAMGUI.py:4312 msgid "" "This sets the type of Gerber zeros.\n" "If LZ then Leading Zeros are removed and\n" @@ -6754,24 +6737,23 @@ msgstr "" "If TZ is checked then Trailing Zeros are removed\n" "and Leading Zeros are kept." -#: flatcamGUI/FlatCAMGUI.py:4325 flatcamGUI/FlatCAMGUI.py:5368 -#: flatcamGUI/FlatCAMGUI.py:5612 flatcamGUI/FlatCAMGUI.py:5713 -#: flatcamGUI/FlatCAMGUI.py:5792 flatcamGUI/FlatCAMGUI.py:5851 -#: flatcamGUI/FlatCAMGUI.py:5954 flatcamGUI/FlatCAMGUI.py:6015 -#: flatcamGUI/FlatCAMGUI.py:6214 flatcamGUI/FlatCAMGUI.py:6341 +#: 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 msgid "Parameters:" msgstr "Parameters:" -#: flatcamGUI/FlatCAMGUI.py:4327 +#: flatcamGUI/FlatCAMGUI.py:4334 msgid "A list of Gerber Editor parameters." msgstr "A list of Gerber Editor parameters." -#: flatcamGUI/FlatCAMGUI.py:4335 flatcamGUI/FlatCAMGUI.py:5378 -#| msgid "Selection:" +#: flatcamGUI/FlatCAMGUI.py:4342 flatcamGUI/FlatCAMGUI.py:5385 msgid "Selection limit:" msgstr "Selection limit:" -#: flatcamGUI/FlatCAMGUI.py:4337 +#: flatcamGUI/FlatCAMGUI.py:4344 msgid "" "Set the number of selected Gerber geometry\n" "items above which the utility geometry\n" @@ -6785,15 +6767,15 @@ msgstr "" "Increases the performance when moving a\n" "large number of geometric elements." -#: flatcamGUI/FlatCAMGUI.py:4357 +#: flatcamGUI/FlatCAMGUI.py:4364 msgid "Excellon General" msgstr "Excellon General" -#: flatcamGUI/FlatCAMGUI.py:4379 +#: flatcamGUI/FlatCAMGUI.py:4386 msgid "Excellon Format:" msgstr "Excellon Format:" -#: flatcamGUI/FlatCAMGUI.py:4381 +#: flatcamGUI/FlatCAMGUI.py:4388 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -6835,16 +6817,16 @@ msgstr "" "Sprint Layout 2:4 INCH LZ\n" "KiCAD 3:5 INCH TZ" -#: flatcamGUI/FlatCAMGUI.py:4406 +#: flatcamGUI/FlatCAMGUI.py:4413 msgid "INCH:" msgstr "INCH:" -#: flatcamGUI/FlatCAMGUI.py:4409 +#: flatcamGUI/FlatCAMGUI.py:4416 msgid "Default values for INCH are 2:4" msgstr "Default values for INCH are 2:4" -#: flatcamGUI/FlatCAMGUI.py:4417 flatcamGUI/FlatCAMGUI.py:4450 -#: flatcamGUI/FlatCAMGUI.py:4942 +#: flatcamGUI/FlatCAMGUI.py:4424 flatcamGUI/FlatCAMGUI.py:4457 +#: flatcamGUI/FlatCAMGUI.py:4949 msgid "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." @@ -6852,8 +6834,8 @@ msgstr "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." -#: flatcamGUI/FlatCAMGUI.py:4431 flatcamGUI/FlatCAMGUI.py:4464 -#: flatcamGUI/FlatCAMGUI.py:4956 +#: flatcamGUI/FlatCAMGUI.py:4438 flatcamGUI/FlatCAMGUI.py:4471 +#: flatcamGUI/FlatCAMGUI.py:4963 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." @@ -6861,19 +6843,19 @@ msgstr "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." -#: flatcamGUI/FlatCAMGUI.py:4439 +#: flatcamGUI/FlatCAMGUI.py:4446 msgid "METRIC:" msgstr "METRIC:" -#: flatcamGUI/FlatCAMGUI.py:4442 +#: flatcamGUI/FlatCAMGUI.py:4449 msgid "Default values for METRIC are 3:3" msgstr "Default values for METRIC are 3:3" -#: flatcamGUI/FlatCAMGUI.py:4473 +#: flatcamGUI/FlatCAMGUI.py:4480 msgid "Default Zeros:" msgstr "Default Zeros:" -#: flatcamGUI/FlatCAMGUI.py:4476 flatcamGUI/FlatCAMGUI.py:4991 +#: flatcamGUI/FlatCAMGUI.py:4483 flatcamGUI/FlatCAMGUI.py:4998 msgid "" "This sets the type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -6887,7 +6869,7 @@ msgstr "" "If TZ is checked then Trailing Zeros are kept\n" "and Leading Zeros are removed." -#: flatcamGUI/FlatCAMGUI.py:4487 +#: flatcamGUI/FlatCAMGUI.py:4494 msgid "" "This sets the default type of Excellon zeros.\n" "If it is not detected in the parsed file the value here\n" @@ -6903,11 +6885,11 @@ msgstr "" "If TZ is checked then Trailing Zeros are kept\n" "and Leading Zeros are removed." -#: flatcamGUI/FlatCAMGUI.py:4501 +#: flatcamGUI/FlatCAMGUI.py:4508 msgid "Default Units:" msgstr "Default Units:" -#: flatcamGUI/FlatCAMGUI.py:4504 +#: flatcamGUI/FlatCAMGUI.py:4511 msgid "" "This sets the default units of Excellon files.\n" "If it is not detected in the parsed file the value here\n" @@ -6919,7 +6901,7 @@ msgstr "" "will be used.Some Excellon files don't have an header\n" "therefore this parameter will be used." -#: flatcamGUI/FlatCAMGUI.py:4515 +#: flatcamGUI/FlatCAMGUI.py:4522 msgid "" "This sets the units of Excellon files.\n" "Some Excellon files don't have an header\n" @@ -6929,15 +6911,15 @@ msgstr "" "Some Excellon files don't have an header\n" "therefore this parameter will be used." -#: flatcamGUI/FlatCAMGUI.py:4531 +#: flatcamGUI/FlatCAMGUI.py:4538 msgid "Excellon Optimization:" msgstr "Excellon Optimization:" -#: flatcamGUI/FlatCAMGUI.py:4538 +#: flatcamGUI/FlatCAMGUI.py:4545 msgid "Algorithm: " msgstr "Algorithm: " -#: flatcamGUI/FlatCAMGUI.py:4541 flatcamGUI/FlatCAMGUI.py:4554 +#: flatcamGUI/FlatCAMGUI.py:4548 flatcamGUI/FlatCAMGUI.py:4561 msgid "" "This sets the optimization type for the Excellon drill path.\n" "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" @@ -6957,11 +6939,11 @@ msgstr "" "If DISABLED, then FlatCAM works in 32bit mode and it uses \n" "Travelling Salesman algorithm for path optimization." -#: flatcamGUI/FlatCAMGUI.py:4566 +#: flatcamGUI/FlatCAMGUI.py:4573 msgid "Optimization Time: " msgstr "Optimization Time: " -#: flatcamGUI/FlatCAMGUI.py:4569 +#: flatcamGUI/FlatCAMGUI.py:4576 msgid "" "When OR-Tools Metaheuristic (MH) is enabled there is a\n" "maximum threshold for how much time is spent doing the\n" @@ -6973,15 +6955,15 @@ msgstr "" "path optimization. This max duration is set here.\n" "In seconds." -#: flatcamGUI/FlatCAMGUI.py:4611 +#: flatcamGUI/FlatCAMGUI.py:4618 msgid "Excellon Options" msgstr "Excellon Options" -#: flatcamGUI/FlatCAMGUI.py:4614 flatcamGUI/ObjectUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:4621 flatcamGUI/ObjectUI.py:584 msgid "Create CNC Job" msgstr "Create CNC Job" -#: flatcamGUI/FlatCAMGUI.py:4616 +#: flatcamGUI/FlatCAMGUI.py:4623 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object." @@ -6989,13 +6971,13 @@ msgstr "" "Parameters used to create a CNC Job object\n" "for this drill object." -#: flatcamGUI/FlatCAMGUI.py:4624 flatcamGUI/FlatCAMGUI.py:5094 -#: flatcamGUI/FlatCAMGUI.py:6150 flatcamGUI/ObjectUI.py:595 +#: flatcamGUI/FlatCAMGUI.py:4631 flatcamGUI/FlatCAMGUI.py:5101 +#: flatcamGUI/FlatCAMGUI.py:6157 flatcamGUI/ObjectUI.py:595 #: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolCalculators.py:108 msgid "Cut Z:" msgstr "Cut Z:" -#: flatcamGUI/FlatCAMGUI.py:4626 flatcamGUI/ObjectUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/ObjectUI.py:597 msgid "" "Drill depth (negative)\n" "below the copper surface." @@ -7003,12 +6985,12 @@ msgstr "" "Drill depth (negative)\n" "below the copper surface." -#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/FlatCAMGUI.py:5127 +#: flatcamGUI/FlatCAMGUI.py:4640 flatcamGUI/FlatCAMGUI.py:5134 #: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1098 msgid "Travel Z:" msgstr "Travel Z:" -#: flatcamGUI/FlatCAMGUI.py:4635 flatcamGUI/ObjectUI.py:607 +#: flatcamGUI/FlatCAMGUI.py:4642 flatcamGUI/ObjectUI.py:607 msgid "" "Tool height when travelling\n" "across the XY plane." @@ -7016,11 +6998,11 @@ msgstr "" "Tool height when travelling\n" "across the XY plane." -#: flatcamGUI/FlatCAMGUI.py:4643 flatcamGUI/FlatCAMGUI.py:5137 +#: flatcamGUI/FlatCAMGUI.py:4650 flatcamGUI/FlatCAMGUI.py:5144 msgid "Tool change:" msgstr "Tool change:" -#: flatcamGUI/FlatCAMGUI.py:4645 flatcamGUI/FlatCAMGUI.py:5139 +#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5146 #: flatcamGUI/ObjectUI.py:617 msgid "" "Include tool-change sequence\n" @@ -7029,19 +7011,19 @@ msgstr "" "Include tool-change sequence\n" "in G-Code (Pause for tool change)." -#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5147 +#: flatcamGUI/FlatCAMGUI.py:4659 flatcamGUI/FlatCAMGUI.py:5154 msgid "Toolchange Z:" msgstr "Toolchange Z:" -#: flatcamGUI/FlatCAMGUI.py:4654 flatcamGUI/FlatCAMGUI.py:5149 +#: flatcamGUI/FlatCAMGUI.py:4661 flatcamGUI/FlatCAMGUI.py:5156 msgid "Toolchange Z position." msgstr "Toolchange Z position." -#: flatcamGUI/FlatCAMGUI.py:4660 +#: flatcamGUI/FlatCAMGUI.py:4667 msgid "Feedrate:" msgstr "Feedrate:" -#: flatcamGUI/FlatCAMGUI.py:4662 +#: flatcamGUI/FlatCAMGUI.py:4669 msgid "" "Tool speed while drilling\n" "(in units per minute)." @@ -7049,11 +7031,11 @@ msgstr "" "Tool speed while drilling\n" "(in units per minute)." -#: flatcamGUI/FlatCAMGUI.py:4670 +#: flatcamGUI/FlatCAMGUI.py:4677 msgid "Spindle Speed:" msgstr "Spindle Speed:" -#: flatcamGUI/FlatCAMGUI.py:4672 flatcamGUI/FlatCAMGUI.py:5179 +#: flatcamGUI/FlatCAMGUI.py:4679 flatcamGUI/FlatCAMGUI.py:5186 #: flatcamGUI/ObjectUI.py:684 msgid "" "Speed of the spindle\n" @@ -7062,15 +7044,11 @@ msgstr "" "Speed of the spindle\n" "in RPM (optional)" -#: flatcamGUI/FlatCAMGUI.py:4680 flatcamGUI/FlatCAMGUI.py:5187 -#| msgid "Spindle Speed:" +#: flatcamGUI/FlatCAMGUI.py:4687 flatcamGUI/FlatCAMGUI.py:5194 msgid "Spindle dir.:" msgstr "Spindle dir.:" -#: flatcamGUI/FlatCAMGUI.py:4682 flatcamGUI/FlatCAMGUI.py:5189 -#| msgid "" -#| "Direction for circular array.Can be CW = clockwise or CCW = counter " -#| "clockwise." +#: flatcamGUI/FlatCAMGUI.py:4689 flatcamGUI/FlatCAMGUI.py:5196 msgid "" "This sets the direction that the spindle is rotating.\n" "It can be either:\n" @@ -7082,12 +7060,12 @@ msgstr "" "- CW = clockwise or\n" "- CCW = counter clockwise" -#: flatcamGUI/FlatCAMGUI.py:4694 flatcamGUI/FlatCAMGUI.py:5201 +#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 #: flatcamGUI/ObjectUI.py:692 flatcamGUI/ObjectUI.py:1224 msgid "Dwell:" msgstr "Dwell:" -#: flatcamGUI/FlatCAMGUI.py:4696 flatcamGUI/FlatCAMGUI.py:5203 +#: flatcamGUI/FlatCAMGUI.py:4703 flatcamGUI/FlatCAMGUI.py:5210 #: flatcamGUI/ObjectUI.py:694 flatcamGUI/ObjectUI.py:1227 msgid "" "Pause to allow the spindle to reach its\n" @@ -7096,21 +7074,21 @@ msgstr "" "Pause to allow the spindle to reach its\n" "speed before cutting." -#: flatcamGUI/FlatCAMGUI.py:4699 flatcamGUI/FlatCAMGUI.py:5206 +#: flatcamGUI/FlatCAMGUI.py:4706 flatcamGUI/FlatCAMGUI.py:5213 msgid "Duration:" msgstr "Duration:" -#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 +#: flatcamGUI/FlatCAMGUI.py:4708 flatcamGUI/FlatCAMGUI.py:5215 #: 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:4713 flatcamGUI/FlatCAMGUI.py:5218 +#: flatcamGUI/FlatCAMGUI.py:4720 flatcamGUI/FlatCAMGUI.py:5225 #: flatcamGUI/ObjectUI.py:707 msgid "Postprocessor:" msgstr "Postprocessor:" -#: flatcamGUI/FlatCAMGUI.py:4715 +#: flatcamGUI/FlatCAMGUI.py:4722 msgid "" "The postprocessor file that dictates\n" "gcode output." @@ -7118,11 +7096,11 @@ msgstr "" "The postprocessor file that dictates\n" "gcode output." -#: flatcamGUI/FlatCAMGUI.py:4725 +#: flatcamGUI/FlatCAMGUI.py:4732 msgid "Gcode: " msgstr "Gcode: " -#: flatcamGUI/FlatCAMGUI.py:4727 +#: flatcamGUI/FlatCAMGUI.py:4734 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -7134,23 +7112,23 @@ msgstr "" "When choosing 'Slots' or 'Both', slots will be\n" "converted to drills." -#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:772 +#: flatcamGUI/FlatCAMGUI.py:4750 flatcamGUI/ObjectUI.py:772 msgid "Mill Holes" msgstr "Mill Holes" -#: flatcamGUI/FlatCAMGUI.py:4745 flatcamGUI/ObjectUI.py:774 +#: flatcamGUI/FlatCAMGUI.py:4752 flatcamGUI/ObjectUI.py:774 msgid "Create Geometry for milling holes." msgstr "Create Geometry for milling holes." -#: flatcamGUI/FlatCAMGUI.py:4751 +#: flatcamGUI/FlatCAMGUI.py:4758 msgid "Drill Tool dia:" msgstr "Drill Tool dia:" -#: flatcamGUI/FlatCAMGUI.py:4758 +#: flatcamGUI/FlatCAMGUI.py:4765 msgid "Slot Tool dia:" msgstr "Slot Tool dia:" -#: flatcamGUI/FlatCAMGUI.py:4760 +#: flatcamGUI/FlatCAMGUI.py:4767 msgid "" "Diameter of the cutting tool\n" "when milling slots." @@ -7158,19 +7136,19 @@ msgstr "" "Diameter of the cutting tool\n" "when milling slots." -#: flatcamGUI/FlatCAMGUI.py:4772 +#: flatcamGUI/FlatCAMGUI.py:4779 msgid "Defaults" msgstr "Defaults" -#: flatcamGUI/FlatCAMGUI.py:4785 +#: flatcamGUI/FlatCAMGUI.py:4792 msgid "Excellon Adv. Options" msgstr "Excellon Adv. Options" -#: flatcamGUI/FlatCAMGUI.py:4791 flatcamGUI/FlatCAMGUI.py:5241 +#: flatcamGUI/FlatCAMGUI.py:4798 flatcamGUI/FlatCAMGUI.py:5248 msgid "Advanced Options:" msgstr "Advanced Options:" -#: flatcamGUI/FlatCAMGUI.py:4793 +#: flatcamGUI/FlatCAMGUI.py:4800 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object that are shown when App Level is Advanced." @@ -7178,11 +7156,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:4801 +#: flatcamGUI/FlatCAMGUI.py:4808 msgid "Offset Z:" msgstr "Offset Z:" -#: flatcamGUI/FlatCAMGUI.py:4803 flatcamGUI/ObjectUI.py:574 +#: flatcamGUI/FlatCAMGUI.py:4810 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" @@ -7192,20 +7170,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:4810 flatcamGUI/FlatCAMGUI.py:5252 +#: flatcamGUI/FlatCAMGUI.py:4817 flatcamGUI/FlatCAMGUI.py:5259 msgid "Toolchange X,Y:" msgstr "Toolchange X,Y:" -#: flatcamGUI/FlatCAMGUI.py:4812 flatcamGUI/FlatCAMGUI.py:5254 +#: flatcamGUI/FlatCAMGUI.py:4819 flatcamGUI/FlatCAMGUI.py:5261 msgid "Toolchange X,Y position." msgstr "Toolchange X,Y position." -#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5261 +#: flatcamGUI/FlatCAMGUI.py:4825 flatcamGUI/FlatCAMGUI.py:5268 #: flatcamGUI/ObjectUI.py:634 msgid "Start move Z:" msgstr "Start move Z:" -#: flatcamGUI/FlatCAMGUI.py:4820 +#: flatcamGUI/FlatCAMGUI.py:4827 msgid "" "Height of the tool just after start.\n" "Delete the value if you don't need this feature." @@ -7213,12 +7191,12 @@ msgstr "" "Height of the tool just after start.\n" "Delete the value if you don't need this feature." -#: flatcamGUI/FlatCAMGUI.py:4827 flatcamGUI/FlatCAMGUI.py:5271 +#: flatcamGUI/FlatCAMGUI.py:4834 flatcamGUI/FlatCAMGUI.py:5278 #: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1144 msgid "End move Z:" msgstr "End move Z:" -#: flatcamGUI/FlatCAMGUI.py:4829 flatcamGUI/FlatCAMGUI.py:5273 +#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5280 msgid "" "Height of the tool after\n" "the last move at the end of the job." @@ -7226,12 +7204,12 @@ msgstr "" "Height of the tool after\n" "the last move at the end of the job." -#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5281 +#: flatcamGUI/FlatCAMGUI.py:4843 flatcamGUI/FlatCAMGUI.py:5288 #: flatcamGUI/ObjectUI.py:665 msgid "Feedrate Rapids:" msgstr "Feedrate Rapids:" -#: flatcamGUI/FlatCAMGUI.py:4838 flatcamGUI/ObjectUI.py:667 +#: flatcamGUI/FlatCAMGUI.py:4845 flatcamGUI/ObjectUI.py:667 msgid "" "Tool speed while drilling\n" "(in units per minute).\n" @@ -7245,12 +7223,12 @@ msgstr "" "It is useful only for Marlin,\n" "ignore for any other cases." -#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5305 +#: flatcamGUI/FlatCAMGUI.py:4856 flatcamGUI/FlatCAMGUI.py:5312 #: flatcamGUI/ObjectUI.py:718 flatcamGUI/ObjectUI.py:1256 msgid "Probe Z depth:" msgstr "Probe Z depth:" -#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5307 +#: flatcamGUI/FlatCAMGUI.py:4858 flatcamGUI/FlatCAMGUI.py:5314 #: flatcamGUI/ObjectUI.py:720 flatcamGUI/ObjectUI.py:1259 msgid "" "The maximum depth that the probe is allowed\n" @@ -7259,21 +7237,21 @@ msgstr "" "The maximum depth that the probe is allowed\n" "to probe. Negative value, in current units." -#: flatcamGUI/FlatCAMGUI.py:4859 flatcamGUI/FlatCAMGUI.py:5315 +#: flatcamGUI/FlatCAMGUI.py:4866 flatcamGUI/FlatCAMGUI.py:5322 #: flatcamGUI/ObjectUI.py:730 flatcamGUI/ObjectUI.py:1270 msgid "Feedrate Probe:" msgstr "Feedrate Probe:" -#: flatcamGUI/FlatCAMGUI.py:4861 flatcamGUI/FlatCAMGUI.py:5317 +#: flatcamGUI/FlatCAMGUI.py:4868 flatcamGUI/FlatCAMGUI.py:5324 #: 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:4867 flatcamGUI/FlatCAMGUI.py:5324 +#: flatcamGUI/FlatCAMGUI.py:4874 flatcamGUI/FlatCAMGUI.py:5331 msgid "Fast Plunge:" msgstr "Fast Plunge:" -#: flatcamGUI/FlatCAMGUI.py:4869 flatcamGUI/FlatCAMGUI.py:5326 +#: flatcamGUI/FlatCAMGUI.py:4876 flatcamGUI/FlatCAMGUI.py:5333 msgid "" "By checking this, the vertical move from\n" "Z_Toolchange to Z_move is done with G0,\n" @@ -7285,11 +7263,11 @@ msgstr "" "meaning the fastest speed available.\n" "WARNING: the move is done at Toolchange X,Y coords." -#: flatcamGUI/FlatCAMGUI.py:4878 +#: flatcamGUI/FlatCAMGUI.py:4885 msgid "Fast Retract:" msgstr "Fast Retract:" -#: flatcamGUI/FlatCAMGUI.py:4880 +#: flatcamGUI/FlatCAMGUI.py:4887 msgid "" "Exit hole strategy.\n" " - When uncheked, while exiting the drilled hole the drill bit\n" @@ -7305,11 +7283,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:4899 +#: flatcamGUI/FlatCAMGUI.py:4906 msgid "Excellon Export" msgstr "Excellon Export" -#: flatcamGUI/FlatCAMGUI.py:4904 +#: flatcamGUI/FlatCAMGUI.py:4911 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Excellon menu entry." @@ -7317,11 +7295,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:4915 flatcamGUI/FlatCAMGUI.py:4921 +#: flatcamGUI/FlatCAMGUI.py:4922 flatcamGUI/FlatCAMGUI.py:4928 msgid "The units used in the Excellon file." msgstr "The units used in the Excellon file." -#: flatcamGUI/FlatCAMGUI.py:4929 +#: flatcamGUI/FlatCAMGUI.py:4936 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -7333,11 +7311,11 @@ msgstr "" "Here we set the format used when the provided\n" "coordinates are not using period." -#: flatcamGUI/FlatCAMGUI.py:4965 +#: flatcamGUI/FlatCAMGUI.py:4972 msgid "Format:" msgstr "Format:" -#: flatcamGUI/FlatCAMGUI.py:4967 flatcamGUI/FlatCAMGUI.py:4977 +#: flatcamGUI/FlatCAMGUI.py:4974 flatcamGUI/FlatCAMGUI.py:4984 msgid "" "Select the kind of coordinates format used.\n" "Coordinates can be saved with decimal point or without.\n" @@ -7353,7 +7331,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:5001 +#: flatcamGUI/FlatCAMGUI.py:5008 msgid "" "This sets the default type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -7367,11 +7345,11 @@ msgstr "" "If TZ is checked then Trailing Zeros are kept\n" "and Leading Zeros are removed." -#: flatcamGUI/FlatCAMGUI.py:5027 +#: flatcamGUI/FlatCAMGUI.py:5034 msgid "Geometry General" msgstr "Geometry General" -#: flatcamGUI/FlatCAMGUI.py:5045 +#: flatcamGUI/FlatCAMGUI.py:5052 msgid "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." @@ -7379,15 +7357,15 @@ msgstr "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." -#: flatcamGUI/FlatCAMGUI.py:5053 +#: flatcamGUI/FlatCAMGUI.py:5060 msgid "Tools" msgstr "Tools" -#: flatcamGUI/FlatCAMGUI.py:5060 +#: flatcamGUI/FlatCAMGUI.py:5067 msgid "Tool dia: " msgstr "Tool dia: " -#: flatcamGUI/FlatCAMGUI.py:5062 +#: flatcamGUI/FlatCAMGUI.py:5069 msgid "" "The diameter of the cutting\n" "tool.." @@ -7395,15 +7373,15 @@ msgstr "" "The diameter of the cutting\n" "tool.." -#: flatcamGUI/FlatCAMGUI.py:5077 +#: flatcamGUI/FlatCAMGUI.py:5084 msgid "Geometry Options" msgstr "Geometry Options" -#: flatcamGUI/FlatCAMGUI.py:5082 +#: flatcamGUI/FlatCAMGUI.py:5089 msgid "Create CNC Job:" msgstr "Create CNC Job:" -#: flatcamGUI/FlatCAMGUI.py:5084 +#: flatcamGUI/FlatCAMGUI.py:5091 msgid "" "Create a CNC Job object\n" "tracing the contours of this\n" @@ -7413,7 +7391,7 @@ msgstr "" "tracing the contours of this\n" "Geometry object." -#: flatcamGUI/FlatCAMGUI.py:5096 flatcamGUI/ObjectUI.py:1065 +#: flatcamGUI/FlatCAMGUI.py:5103 flatcamGUI/ObjectUI.py:1065 msgid "" "Cutting depth (negative)\n" "below the copper surface." @@ -7421,19 +7399,19 @@ msgstr "" "Cutting depth (negative)\n" "below the copper surface." -#: flatcamGUI/FlatCAMGUI.py:5104 +#: flatcamGUI/FlatCAMGUI.py:5111 msgid "Multidepth" msgstr "Multidepth" -#: flatcamGUI/FlatCAMGUI.py:5106 +#: flatcamGUI/FlatCAMGUI.py:5113 msgid "Multidepth usage: True or False." msgstr "Multidepth usage: True or False." -#: flatcamGUI/FlatCAMGUI.py:5111 +#: flatcamGUI/FlatCAMGUI.py:5118 msgid "Depth/Pass:" msgstr "Depth/Pass:" -#: flatcamGUI/FlatCAMGUI.py:5113 +#: flatcamGUI/FlatCAMGUI.py:5120 msgid "" "The depth to cut on each pass,\n" "when multidepth is enabled.\n" @@ -7447,7 +7425,7 @@ msgstr "" "it is a fraction from the depth\n" "which has negative value." -#: flatcamGUI/FlatCAMGUI.py:5129 flatcamGUI/ObjectUI.py:1101 +#: flatcamGUI/FlatCAMGUI.py:5136 flatcamGUI/ObjectUI.py:1101 msgid "" "Height of the tool when\n" "moving without cutting." @@ -7455,11 +7433,11 @@ msgstr "" "Height of the tool when\n" "moving without cutting." -#: flatcamGUI/FlatCAMGUI.py:5156 flatcamGUI/ObjectUI.py:1156 +#: flatcamGUI/FlatCAMGUI.py:5163 flatcamGUI/ObjectUI.py:1156 msgid "Feed Rate X-Y:" msgstr "Feed Rate X-Y:" -#: flatcamGUI/FlatCAMGUI.py:5158 flatcamGUI/ObjectUI.py:1159 +#: flatcamGUI/FlatCAMGUI.py:5165 flatcamGUI/ObjectUI.py:1159 msgid "" "Cutting speed in the XY\n" "plane in units per minute" @@ -7467,11 +7445,11 @@ msgstr "" "Cutting speed in the XY\n" "plane in units per minute" -#: flatcamGUI/FlatCAMGUI.py:5166 +#: flatcamGUI/FlatCAMGUI.py:5173 msgid "Feed Rate Z:" msgstr "Feed Rate Z:" -#: flatcamGUI/FlatCAMGUI.py:5168 +#: flatcamGUI/FlatCAMGUI.py:5175 msgid "" "Cutting speed in the XY\n" "plane in units per minute.\n" @@ -7481,12 +7459,12 @@ msgstr "" "plane in units per minute.\n" "It is called also Plunge." -#: flatcamGUI/FlatCAMGUI.py:5177 flatcamGUI/ObjectUI.py:682 +#: flatcamGUI/FlatCAMGUI.py:5184 flatcamGUI/ObjectUI.py:682 #: flatcamGUI/ObjectUI.py:1211 msgid "Spindle speed:" msgstr "Spindle speed:" -#: flatcamGUI/FlatCAMGUI.py:5220 +#: flatcamGUI/FlatCAMGUI.py:5227 msgid "" "The postprocessor file that dictates\n" "Machine Code output." @@ -7494,11 +7472,11 @@ msgstr "" "The postprocessor file that dictates\n" "Machine Code output." -#: flatcamGUI/FlatCAMGUI.py:5236 +#: flatcamGUI/FlatCAMGUI.py:5243 msgid "Geometry Adv. Options" msgstr "Geometry Adv. Options" -#: flatcamGUI/FlatCAMGUI.py:5243 +#: flatcamGUI/FlatCAMGUI.py:5250 msgid "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." @@ -7506,7 +7484,7 @@ msgstr "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." -#: flatcamGUI/FlatCAMGUI.py:5263 +#: flatcamGUI/FlatCAMGUI.py:5270 msgid "" "Height of the tool just after starting the work.\n" "Delete the value if you don't need this feature." @@ -7514,7 +7492,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:5283 +#: flatcamGUI/FlatCAMGUI.py:5290 msgid "" "Cutting speed in the XY plane\n" "(in units per minute).\n" @@ -7528,11 +7506,11 @@ msgstr "" "It is useful only for Marlin,\n" "ignore for any other cases." -#: flatcamGUI/FlatCAMGUI.py:5295 +#: flatcamGUI/FlatCAMGUI.py:5302 msgid "Re-cut 1st pt." msgstr "Re-cut 1st pt." -#: flatcamGUI/FlatCAMGUI.py:5297 flatcamGUI/ObjectUI.py:1202 +#: flatcamGUI/FlatCAMGUI.py:5304 flatcamGUI/ObjectUI.py:1202 msgid "" "In order to remove possible\n" "copper leftovers where first cut\n" @@ -7544,11 +7522,11 @@ msgstr "" "meet with last cut, we generate an\n" "extended cut over the first cut section." -#: flatcamGUI/FlatCAMGUI.py:5336 +#: flatcamGUI/FlatCAMGUI.py:5343 msgid "Seg. X size:" msgstr "Seg. X size:" -#: flatcamGUI/FlatCAMGUI.py:5338 +#: flatcamGUI/FlatCAMGUI.py:5345 msgid "" "The size of the trace segment on the X axis.\n" "Useful for auto-leveling.\n" @@ -7558,11 +7536,11 @@ msgstr "" "Useful for auto-leveling.\n" "A value of 0 means no segmentation on the X axis." -#: flatcamGUI/FlatCAMGUI.py:5347 +#: flatcamGUI/FlatCAMGUI.py:5354 msgid "Seg. Y size:" msgstr "Seg. Y size:" -#: flatcamGUI/FlatCAMGUI.py:5349 +#: flatcamGUI/FlatCAMGUI.py:5356 msgid "" "The size of the trace segment on the Y axis.\n" "Useful for auto-leveling.\n" @@ -7572,17 +7550,15 @@ msgstr "" "Useful for auto-leveling.\n" "A value of 0 means no segmentation on the Y axis." -#: flatcamGUI/FlatCAMGUI.py:5365 -#| msgid "Geo Editor" +#: flatcamGUI/FlatCAMGUI.py:5372 msgid "Geometry Editor" msgstr "Geometry Editor" -#: flatcamGUI/FlatCAMGUI.py:5370 -#| msgid "Geometry Editor Toolbar" +#: flatcamGUI/FlatCAMGUI.py:5377 msgid "A list of Geometry Editor parameters." msgstr "A list of Geometry Editor parameters." -#: flatcamGUI/FlatCAMGUI.py:5380 +#: flatcamGUI/FlatCAMGUI.py:5387 msgid "" "Set the number of selected geometry\n" "items above which the utility geometry\n" @@ -7596,20 +7572,20 @@ msgstr "" "Increases the performance when moving a\n" "large number of geometric elements." -#: flatcamGUI/FlatCAMGUI.py:5399 +#: flatcamGUI/FlatCAMGUI.py:5406 msgid "CNC Job General" msgstr "CNC Job General" -#: flatcamGUI/FlatCAMGUI.py:5412 flatcamGUI/ObjectUI.py:544 +#: flatcamGUI/FlatCAMGUI.py:5419 flatcamGUI/ObjectUI.py:544 #: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1434 msgid "Plot Object" msgstr "Plot Object" -#: flatcamGUI/FlatCAMGUI.py:5419 +#: flatcamGUI/FlatCAMGUI.py:5426 msgid "Plot kind:" msgstr "Plot kind:" -#: flatcamGUI/FlatCAMGUI.py:5421 flatcamGUI/ObjectUI.py:1356 +#: flatcamGUI/FlatCAMGUI.py:5428 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" @@ -7621,7 +7597,7 @@ 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:5440 +#: flatcamGUI/FlatCAMGUI.py:5447 msgid "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." @@ -7629,7 +7605,7 @@ msgstr "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." -#: flatcamGUI/FlatCAMGUI.py:5450 +#: flatcamGUI/FlatCAMGUI.py:5457 msgid "" "Diameter of the tool to be\n" "rendered in the plot." @@ -7637,11 +7613,11 @@ msgstr "" "Diameter of the tool to be\n" "rendered in the plot." -#: flatcamGUI/FlatCAMGUI.py:5458 +#: flatcamGUI/FlatCAMGUI.py:5465 msgid "Coords dec.:" msgstr "Coords dec.:" -#: flatcamGUI/FlatCAMGUI.py:5460 +#: flatcamGUI/FlatCAMGUI.py:5467 msgid "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" @@ -7649,11 +7625,11 @@ msgstr "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" -#: flatcamGUI/FlatCAMGUI.py:5468 +#: flatcamGUI/FlatCAMGUI.py:5475 msgid "Feedrate dec.:" msgstr "Feedrate dec.:" -#: flatcamGUI/FlatCAMGUI.py:5470 +#: flatcamGUI/FlatCAMGUI.py:5477 msgid "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" @@ -7661,15 +7637,15 @@ msgstr "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" -#: flatcamGUI/FlatCAMGUI.py:5485 +#: flatcamGUI/FlatCAMGUI.py:5492 msgid "CNC Job Options" msgstr "CNC Job Options" -#: flatcamGUI/FlatCAMGUI.py:5488 flatcamGUI/FlatCAMGUI.py:5529 +#: flatcamGUI/FlatCAMGUI.py:5495 flatcamGUI/FlatCAMGUI.py:5536 msgid "Export G-Code:" msgstr "Export G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5490 flatcamGUI/FlatCAMGUI.py:5531 +#: flatcamGUI/FlatCAMGUI.py:5497 flatcamGUI/FlatCAMGUI.py:5538 #: flatcamGUI/ObjectUI.py:1470 msgid "" "Export and save G-Code to\n" @@ -7678,11 +7654,11 @@ msgstr "" "Export and save G-Code to\n" "make this object to a file." -#: flatcamGUI/FlatCAMGUI.py:5496 +#: flatcamGUI/FlatCAMGUI.py:5503 msgid "Prepend to G-Code:" msgstr "Prepend to G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5498 +#: flatcamGUI/FlatCAMGUI.py:5505 msgid "" "Type here any G-Code commands you would\n" "like to add at the beginning of the G-Code file." @@ -7690,11 +7666,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:5507 +#: flatcamGUI/FlatCAMGUI.py:5514 msgid "Append to G-Code:" msgstr "Append to G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5509 flatcamGUI/ObjectUI.py:1492 +#: flatcamGUI/FlatCAMGUI.py:5516 flatcamGUI/ObjectUI.py:1492 msgid "" "Type here any G-Code commands you would\n" "like to append to the generated file.\n" @@ -7704,15 +7680,15 @@ msgstr "" "like to append to the generated file.\n" "I.e.: M2 (End of program)" -#: flatcamGUI/FlatCAMGUI.py:5526 +#: flatcamGUI/FlatCAMGUI.py:5533 msgid "CNC Job Adv. Options" msgstr "CNC Job Adv. Options" -#: flatcamGUI/FlatCAMGUI.py:5537 flatcamGUI/ObjectUI.py:1510 +#: flatcamGUI/FlatCAMGUI.py:5544 flatcamGUI/ObjectUI.py:1510 msgid "Toolchange G-Code:" msgstr "Toolchange G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5539 +#: flatcamGUI/FlatCAMGUI.py:5546 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -7724,11 +7700,11 @@ msgstr "" "This will constitute a Custom Toolchange GCode,\n" "or a Toolchange Macro." -#: flatcamGUI/FlatCAMGUI.py:5553 flatcamGUI/ObjectUI.py:1532 +#: flatcamGUI/FlatCAMGUI.py:5560 flatcamGUI/ObjectUI.py:1532 msgid "Use Toolchange Macro" msgstr "Use Toolchange Macro" -#: flatcamGUI/FlatCAMGUI.py:5555 flatcamGUI/ObjectUI.py:1535 +#: flatcamGUI/FlatCAMGUI.py:5562 flatcamGUI/ObjectUI.py:1535 msgid "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." @@ -7736,7 +7712,7 @@ msgstr "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." -#: flatcamGUI/FlatCAMGUI.py:5567 flatcamGUI/ObjectUI.py:1544 +#: flatcamGUI/FlatCAMGUI.py:5574 flatcamGUI/ObjectUI.py:1544 msgid "" "A list of the FlatCAM variables that can be used\n" "in the Toolchange event.\n" @@ -7746,71 +7722,71 @@ msgstr "" "in the Toolchange event.\n" "They have to be surrounded by the '%' symbol" -#: flatcamGUI/FlatCAMGUI.py:5574 flatcamGUI/ObjectUI.py:1551 +#: flatcamGUI/FlatCAMGUI.py:5581 flatcamGUI/ObjectUI.py:1551 msgid "Parameters" msgstr "Parameters" -#: flatcamGUI/FlatCAMGUI.py:5577 flatcamGUI/ObjectUI.py:1554 +#: flatcamGUI/FlatCAMGUI.py:5584 flatcamGUI/ObjectUI.py:1554 msgid "FlatCAM CNC parameters" msgstr "FlatCAM CNC parameters" -#: flatcamGUI/FlatCAMGUI.py:5578 flatcamGUI/ObjectUI.py:1555 +#: flatcamGUI/FlatCAMGUI.py:5585 flatcamGUI/ObjectUI.py:1555 msgid "tool = tool number" msgstr "tool = tool number" -#: flatcamGUI/FlatCAMGUI.py:5579 flatcamGUI/ObjectUI.py:1556 +#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1556 msgid "tooldia = tool diameter" msgstr "tooldia = tool diameter" -#: flatcamGUI/FlatCAMGUI.py:5580 flatcamGUI/ObjectUI.py:1557 +#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1557 msgid "t_drills = for Excellon, total number of drills" msgstr "t_drills = for Excellon, total number of drills" -#: flatcamGUI/FlatCAMGUI.py:5581 flatcamGUI/ObjectUI.py:1558 +#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1558 msgid "x_toolchange = X coord for Toolchange" msgstr "x_toolchange = X coord for Toolchange" -#: flatcamGUI/FlatCAMGUI.py:5582 flatcamGUI/ObjectUI.py:1559 +#: flatcamGUI/FlatCAMGUI.py:5589 flatcamGUI/ObjectUI.py:1559 msgid "y_toolchange = Y coord for Toolchange" msgstr "y_toolchange = Y coord for Toolchange" -#: flatcamGUI/FlatCAMGUI.py:5583 flatcamGUI/ObjectUI.py:1560 +#: flatcamGUI/FlatCAMGUI.py:5590 flatcamGUI/ObjectUI.py:1560 msgid "z_toolchange = Z coord for Toolchange" msgstr "z_toolchange = Z coord for Toolchange" -#: flatcamGUI/FlatCAMGUI.py:5584 +#: flatcamGUI/FlatCAMGUI.py:5591 msgid "z_cut = Z depth for the cut" msgstr "z_cut = Z depth for the cut" -#: flatcamGUI/FlatCAMGUI.py:5585 +#: flatcamGUI/FlatCAMGUI.py:5592 msgid "z_move = Z height for travel" msgstr "z_move = Z height for travel" -#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1563 +#: flatcamGUI/FlatCAMGUI.py:5593 flatcamGUI/ObjectUI.py:1563 msgid "z_depthpercut = the step value for multidepth cut" msgstr "z_depthpercut = the step value for multidepth cut" -#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1564 +#: flatcamGUI/FlatCAMGUI.py:5594 flatcamGUI/ObjectUI.py:1564 msgid "spindlesspeed = the value for the spindle speed" msgstr "spindlesspeed = the value for the spindle speed" -#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1565 +#: flatcamGUI/FlatCAMGUI.py:5595 flatcamGUI/ObjectUI.py:1565 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:5609 +#: flatcamGUI/FlatCAMGUI.py:5616 msgid "NCC Tool Options" msgstr "NCC Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5622 flatcamGUI/FlatCAMGUI.py:6352 +#: flatcamGUI/FlatCAMGUI.py:5629 flatcamGUI/FlatCAMGUI.py:6359 msgid "Tools dia:" msgstr "Tools dia:" -#: flatcamGUI/FlatCAMGUI.py:5624 +#: flatcamGUI/FlatCAMGUI.py:5631 msgid "Diameters of the cutting tools, separated by ','" msgstr "Diameters of the cutting tools, separated by ','" -#: flatcamGUI/FlatCAMGUI.py:5632 flatcamTools/ToolNonCopperClear.py:167 +#: flatcamGUI/FlatCAMGUI.py:5639 flatcamTools/ToolNonCopperClear.py:167 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -7835,11 +7811,11 @@ msgstr "" "Higher values = slow processing and slow execution on CNC\n" "due of too many paths." -#: flatcamGUI/FlatCAMGUI.py:5648 flatcamTools/ToolNonCopperClear.py:183 +#: flatcamGUI/FlatCAMGUI.py:5655 flatcamTools/ToolNonCopperClear.py:183 msgid "Bounding box margin." msgstr "Bounding box margin." -#: flatcamGUI/FlatCAMGUI.py:5657 flatcamTools/ToolNonCopperClear.py:192 +#: flatcamGUI/FlatCAMGUI.py:5664 flatcamTools/ToolNonCopperClear.py:192 #: flatcamTools/ToolPaint.py:190 msgid "" "Algorithm for non-copper clearing:
Standard: Fixed step inwards." @@ -7850,12 +7826,12 @@ msgstr "" "
Seed-based: Outwards from seed.
Line-based: Parallel " "lines." -#: flatcamGUI/FlatCAMGUI.py:5689 flatcamTools/ToolNonCopperClear.py:224 +#: flatcamGUI/FlatCAMGUI.py:5696 flatcamTools/ToolNonCopperClear.py:224 #: flatcamTools/ToolPaint.py:222 msgid "Rest M.:" msgstr "Rest M.:" -#: flatcamGUI/FlatCAMGUI.py:5691 +#: flatcamGUI/FlatCAMGUI.py:5698 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -7871,11 +7847,11 @@ msgstr "" "could not be cleared by previous tool.\n" "If not checked, use the standard algorithm." -#: flatcamGUI/FlatCAMGUI.py:5710 +#: flatcamGUI/FlatCAMGUI.py:5717 msgid "Cutout Tool Options" msgstr "Cutout Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5715 flatcamGUI/ObjectUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:5722 flatcamGUI/ObjectUI.py:402 msgid "" "Create toolpaths to cut around\n" "the PCB and separate it from\n" @@ -7885,7 +7861,7 @@ msgstr "" "the PCB and separate it from\n" "the original board." -#: flatcamGUI/FlatCAMGUI.py:5734 +#: flatcamGUI/FlatCAMGUI.py:5741 msgid "" "Distance from objects at which\n" "to draw the cutout." @@ -7893,11 +7869,11 @@ msgstr "" "Distance from objects at which\n" "to draw the cutout." -#: flatcamGUI/FlatCAMGUI.py:5741 flatcamTools/ToolCutOut.py:96 +#: flatcamGUI/FlatCAMGUI.py:5748 flatcamTools/ToolCutOut.py:96 msgid "Gap size:" msgstr "Gap size:" -#: flatcamGUI/FlatCAMGUI.py:5743 +#: flatcamGUI/FlatCAMGUI.py:5750 msgid "" "Size of the gaps in the toolpath\n" "that will remain to hold the\n" @@ -7907,11 +7883,11 @@ msgstr "" "that will remain to hold the\n" "board in place." -#: flatcamGUI/FlatCAMGUI.py:5751 flatcamTools/ToolCutOut.py:134 +#: flatcamGUI/FlatCAMGUI.py:5758 flatcamTools/ToolCutOut.py:134 msgid "Gaps:" msgstr "Gaps:" -#: flatcamGUI/FlatCAMGUI.py:5753 +#: flatcamGUI/FlatCAMGUI.py:5760 msgid "" "Number of bridge gaps used for the cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -7933,19 +7909,19 @@ msgstr "" "- 2tb - 2*top + 2*bottom\n" "- 8 - 2*left + 2*right +2*top + 2*bottom" -#: flatcamGUI/FlatCAMGUI.py:5774 flatcamTools/ToolCutOut.py:115 +#: flatcamGUI/FlatCAMGUI.py:5781 flatcamTools/ToolCutOut.py:115 msgid "Convex Sh.:" msgstr "Convex Sh.:" -#: flatcamGUI/FlatCAMGUI.py:5776 +#: flatcamGUI/FlatCAMGUI.py:5783 msgid "Create a convex shape surrounding the entire PCB." msgstr "Create a convex shape surrounding the entire PCB." -#: flatcamGUI/FlatCAMGUI.py:5789 +#: flatcamGUI/FlatCAMGUI.py:5796 msgid "2Sided Tool Options" msgstr "2Sided Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5794 +#: flatcamGUI/FlatCAMGUI.py:5801 msgid "" "A tool to help in creating a double sided\n" "PCB using alignment holes." @@ -7953,28 +7929,28 @@ msgstr "" "A tool to help in creating a double sided\n" "PCB using alignment holes." -#: flatcamGUI/FlatCAMGUI.py:5804 flatcamTools/ToolDblSided.py:235 +#: flatcamGUI/FlatCAMGUI.py:5811 flatcamTools/ToolDblSided.py:235 msgid "Drill diam.:" msgstr "Drill diam.:" -#: flatcamGUI/FlatCAMGUI.py:5806 flatcamTools/ToolDblSided.py:226 +#: flatcamGUI/FlatCAMGUI.py:5813 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:5815 flatcamTools/ToolDblSided.py:120 +#: flatcamGUI/FlatCAMGUI.py:5822 flatcamTools/ToolDblSided.py:120 msgid "Mirror Axis:" msgstr "Mirror Axis:" -#: flatcamGUI/FlatCAMGUI.py:5817 flatcamTools/ToolDblSided.py:122 +#: flatcamGUI/FlatCAMGUI.py:5824 flatcamTools/ToolDblSided.py:122 msgid "Mirror vertically (X) or horizontally (Y)." msgstr "Mirror vertically (X) or horizontally (Y)." -#: flatcamGUI/FlatCAMGUI.py:5828 flatcamTools/ToolDblSided.py:133 +#: flatcamGUI/FlatCAMGUI.py:5835 flatcamTools/ToolDblSided.py:133 msgid "Axis Ref:" msgstr "Axis Ref:" -#: flatcamGUI/FlatCAMGUI.py:5830 +#: flatcamGUI/FlatCAMGUI.py:5837 msgid "" "The axis should pass through a point or cut\n" " a specified box (in a Geometry object) in \n" @@ -7984,11 +7960,11 @@ msgstr "" " a specified box (in a Geometry object) in \n" "the middle." -#: flatcamGUI/FlatCAMGUI.py:5846 +#: flatcamGUI/FlatCAMGUI.py:5853 msgid "Paint Tool Options" msgstr "Paint Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5853 flatcamGUI/ObjectUI.py:1305 +#: flatcamGUI/FlatCAMGUI.py:5860 flatcamGUI/ObjectUI.py:1305 msgid "" "Creates tool paths to cover the\n" "whole area of a polygon (remove\n" @@ -8000,7 +7976,7 @@ msgstr "" "all copper). You will be asked\n" "to click on the desired polygon." -#: flatcamGUI/FlatCAMGUI.py:5877 +#: flatcamGUI/FlatCAMGUI.py:5884 msgid "" "How much (fraction) of the tool\n" "width to overlap each tool pass." @@ -8008,19 +7984,19 @@ msgstr "" "How much (fraction) of the tool\n" "width to overlap each tool pass." -#: flatcamGUI/FlatCAMGUI.py:5931 flatcamTools/ToolPaint.py:237 +#: flatcamGUI/FlatCAMGUI.py:5938 flatcamTools/ToolPaint.py:237 msgid "Selection:" msgstr "Selection:" -#: flatcamGUI/FlatCAMGUI.py:5933 +#: flatcamGUI/FlatCAMGUI.py:5940 msgid "How to select the polygons to paint." msgstr "How to select the polygons to paint." -#: flatcamGUI/FlatCAMGUI.py:5951 +#: flatcamGUI/FlatCAMGUI.py:5958 msgid "Film Tool Options" msgstr "Film Tool Options" -#: flatcamGUI/FlatCAMGUI.py:5956 +#: flatcamGUI/FlatCAMGUI.py:5963 msgid "" "Create a PCB film from a Gerber or Geometry\n" "FlatCAM object.\n" @@ -8030,11 +8006,11 @@ msgstr "" "FlatCAM object.\n" "The file is saved in SVG format." -#: flatcamGUI/FlatCAMGUI.py:5967 flatcamTools/ToolFilm.py:116 +#: flatcamGUI/FlatCAMGUI.py:5974 flatcamTools/ToolFilm.py:116 msgid "Film Type:" msgstr "Film Type:" -#: flatcamGUI/FlatCAMGUI.py:5969 flatcamTools/ToolFilm.py:118 +#: flatcamGUI/FlatCAMGUI.py:5976 flatcamTools/ToolFilm.py:118 msgid "" "Generate a Positive black film or a Negative film.\n" "Positive means that it will print the features\n" @@ -8050,11 +8026,11 @@ msgstr "" "with white on a black canvas.\n" "The Film format is SVG." -#: flatcamGUI/FlatCAMGUI.py:5980 flatcamTools/ToolFilm.py:130 +#: flatcamGUI/FlatCAMGUI.py:5987 flatcamTools/ToolFilm.py:130 msgid "Border:" msgstr "Border:" -#: flatcamGUI/FlatCAMGUI.py:5982 flatcamTools/ToolFilm.py:132 +#: flatcamGUI/FlatCAMGUI.py:5989 flatcamTools/ToolFilm.py:132 msgid "" "Specify a border around the object.\n" "Only for negative film.\n" @@ -8074,11 +8050,11 @@ msgstr "" "white color like the rest and which may confound with the\n" "surroundings if not for this border." -#: flatcamGUI/FlatCAMGUI.py:5995 flatcamTools/ToolFilm.py:144 +#: flatcamGUI/FlatCAMGUI.py:6002 flatcamTools/ToolFilm.py:144 msgid "Scale Stroke:" msgstr "Scale Stroke:" -#: flatcamGUI/FlatCAMGUI.py:5997 flatcamTools/ToolFilm.py:146 +#: flatcamGUI/FlatCAMGUI.py:6004 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 " @@ -8090,11 +8066,11 @@ msgstr "" "thinner,\n" "therefore the fine features may be more affected by this parameter." -#: flatcamGUI/FlatCAMGUI.py:6012 +#: flatcamGUI/FlatCAMGUI.py:6019 msgid "Panelize Tool Options" msgstr "Panelize Tool Options" -#: flatcamGUI/FlatCAMGUI.py:6017 +#: flatcamGUI/FlatCAMGUI.py:6024 msgid "" "Create an object that contains an array of (x, y) elements,\n" "each element is a copy of the source object spaced\n" @@ -8104,11 +8080,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:6028 flatcamTools/ToolPanelize.py:147 +#: flatcamGUI/FlatCAMGUI.py:6035 flatcamTools/ToolPanelize.py:147 msgid "Spacing cols:" msgstr "Spacing cols:" -#: flatcamGUI/FlatCAMGUI.py:6030 flatcamTools/ToolPanelize.py:149 +#: flatcamGUI/FlatCAMGUI.py:6037 flatcamTools/ToolPanelize.py:149 msgid "" "Spacing between columns of the desired panel.\n" "In current units." @@ -8116,11 +8092,11 @@ msgstr "" "Spacing between columns of the desired panel.\n" "In current units." -#: flatcamGUI/FlatCAMGUI.py:6038 flatcamTools/ToolPanelize.py:156 +#: flatcamGUI/FlatCAMGUI.py:6045 flatcamTools/ToolPanelize.py:156 msgid "Spacing rows:" msgstr "Spacing rows:" -#: flatcamGUI/FlatCAMGUI.py:6040 flatcamTools/ToolPanelize.py:158 +#: flatcamGUI/FlatCAMGUI.py:6047 flatcamTools/ToolPanelize.py:158 msgid "" "Spacing between rows of the desired panel.\n" "In current units." @@ -8128,27 +8104,27 @@ msgstr "" "Spacing between rows of the desired panel.\n" "In current units." -#: flatcamGUI/FlatCAMGUI.py:6048 flatcamTools/ToolPanelize.py:165 +#: flatcamGUI/FlatCAMGUI.py:6055 flatcamTools/ToolPanelize.py:165 msgid "Columns:" msgstr "Columns:" -#: flatcamGUI/FlatCAMGUI.py:6050 flatcamTools/ToolPanelize.py:167 +#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:167 msgid "Number of columns of the desired panel" msgstr "Number of columns of the desired panel" -#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:173 +#: flatcamGUI/FlatCAMGUI.py:6064 flatcamTools/ToolPanelize.py:173 msgid "Rows:" msgstr "Rows:" -#: flatcamGUI/FlatCAMGUI.py:6059 flatcamTools/ToolPanelize.py:175 +#: flatcamGUI/FlatCAMGUI.py:6066 flatcamTools/ToolPanelize.py:175 msgid "Number of rows of the desired panel" msgstr "Number of rows of the desired panel" -#: flatcamGUI/FlatCAMGUI.py:6067 +#: flatcamGUI/FlatCAMGUI.py:6074 msgid "Panel Type:" msgstr "Panel Type:" -#: flatcamGUI/FlatCAMGUI.py:6069 +#: flatcamGUI/FlatCAMGUI.py:6076 msgid "" "Choose the type of object for the panel object:\n" "- Gerber\n" @@ -8158,11 +8134,11 @@ msgstr "" "- Gerber\n" "- Geometry" -#: flatcamGUI/FlatCAMGUI.py:6078 +#: flatcamGUI/FlatCAMGUI.py:6085 msgid "Constrain within:" msgstr "Constrain within:" -#: flatcamGUI/FlatCAMGUI.py:6080 flatcamTools/ToolPanelize.py:195 +#: flatcamGUI/FlatCAMGUI.py:6087 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" @@ -8176,11 +8152,11 @@ msgstr "" "the final panel will have as many columns and rows as\n" "they fit completely within selected area." -#: flatcamGUI/FlatCAMGUI.py:6089 flatcamTools/ToolPanelize.py:204 +#: flatcamGUI/FlatCAMGUI.py:6096 flatcamTools/ToolPanelize.py:204 msgid "Width (DX):" msgstr "Width (DX):" -#: flatcamGUI/FlatCAMGUI.py:6091 flatcamTools/ToolPanelize.py:206 +#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:206 msgid "" "The width (DX) within which the panel must fit.\n" "In current units." @@ -8188,11 +8164,11 @@ msgstr "" "The width (DX) within which the panel must fit.\n" "In current units." -#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:212 +#: flatcamGUI/FlatCAMGUI.py:6105 flatcamTools/ToolPanelize.py:212 msgid "Height (DY):" msgstr "Height (DY):" -#: flatcamGUI/FlatCAMGUI.py:6100 flatcamTools/ToolPanelize.py:214 +#: flatcamGUI/FlatCAMGUI.py:6107 flatcamTools/ToolPanelize.py:214 msgid "" "The height (DY)within which the panel must fit.\n" "In current units." @@ -8200,15 +8176,15 @@ msgstr "" "The height (DY)within which the panel must fit.\n" "In current units." -#: flatcamGUI/FlatCAMGUI.py:6114 +#: flatcamGUI/FlatCAMGUI.py:6121 msgid "Calculators Tool Options" msgstr "Calculators Tool Options" -#: flatcamGUI/FlatCAMGUI.py:6117 +#: flatcamGUI/FlatCAMGUI.py:6124 msgid "V-Shape Tool Calculator:" msgstr "V-Shape Tool Calculator:" -#: flatcamGUI/FlatCAMGUI.py:6119 +#: flatcamGUI/FlatCAMGUI.py:6126 msgid "" "Calculate the tool diameter for a given V-shape tool,\n" "having the tip diameter, tip angle and\n" @@ -8218,11 +8194,11 @@ msgstr "" "having the tip diameter, tip angle and\n" "depth-of-cut as parameters." -#: flatcamGUI/FlatCAMGUI.py:6130 flatcamTools/ToolCalculators.py:94 +#: flatcamGUI/FlatCAMGUI.py:6137 flatcamTools/ToolCalculators.py:94 msgid "Tip Diameter:" msgstr "Tip Diameter:" -#: flatcamGUI/FlatCAMGUI.py:6132 +#: flatcamGUI/FlatCAMGUI.py:6139 msgid "" "This is the tool tip diameter.\n" "It is specified by manufacturer." @@ -8230,11 +8206,11 @@ msgstr "" "This is the tool tip diameter.\n" "It is specified by manufacturer." -#: flatcamGUI/FlatCAMGUI.py:6140 +#: flatcamGUI/FlatCAMGUI.py:6147 msgid "Tip angle:" msgstr "Tip angle:" -#: flatcamGUI/FlatCAMGUI.py:6142 +#: flatcamGUI/FlatCAMGUI.py:6149 msgid "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." @@ -8242,19 +8218,19 @@ msgstr "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." -#: flatcamGUI/FlatCAMGUI.py:6152 -msgid "" -"This is depth to cut into material.\n" -"In the CNCJob object it is the CutZ parameter." -msgstr "" -"This is depth to cut into material.\n" -"In the CNCJob object it is the CutZ parameter." - #: flatcamGUI/FlatCAMGUI.py:6159 +msgid "" +"This is depth to cut into material.\n" +"In the CNCJob object it is the CutZ parameter." +msgstr "" +"This is depth to cut into material.\n" +"In the CNCJob object it is the CutZ parameter." + +#: flatcamGUI/FlatCAMGUI.py:6166 msgid "ElectroPlating Calculator:" msgstr "ElectroPlating Calculator:" -#: flatcamGUI/FlatCAMGUI.py:6161 flatcamTools/ToolCalculators.py:152 +#: flatcamGUI/FlatCAMGUI.py:6168 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 " @@ -8264,27 +8240,27 @@ msgstr "" "using a method like grahite ink or calcium hypophosphite ink or palladium " "chloride." -#: flatcamGUI/FlatCAMGUI.py:6171 flatcamTools/ToolCalculators.py:161 +#: flatcamGUI/FlatCAMGUI.py:6178 flatcamTools/ToolCalculators.py:161 msgid "Board Length:" msgstr "Board Length:" -#: flatcamGUI/FlatCAMGUI.py:6173 flatcamTools/ToolCalculators.py:165 +#: flatcamGUI/FlatCAMGUI.py:6180 flatcamTools/ToolCalculators.py:165 msgid "This is the board length. In centimeters." msgstr "This is the board length. In centimeters." -#: flatcamGUI/FlatCAMGUI.py:6179 flatcamTools/ToolCalculators.py:167 +#: flatcamGUI/FlatCAMGUI.py:6186 flatcamTools/ToolCalculators.py:167 msgid "Board Width:" msgstr "Board Width:" -#: flatcamGUI/FlatCAMGUI.py:6181 flatcamTools/ToolCalculators.py:171 +#: flatcamGUI/FlatCAMGUI.py:6188 flatcamTools/ToolCalculators.py:171 msgid "This is the board width.In centimeters." msgstr "This is the board width.In centimeters." -#: flatcamGUI/FlatCAMGUI.py:6186 flatcamTools/ToolCalculators.py:173 +#: flatcamGUI/FlatCAMGUI.py:6193 flatcamTools/ToolCalculators.py:173 msgid "Current Density:" msgstr "Current Density:" -#: flatcamGUI/FlatCAMGUI.py:6189 flatcamTools/ToolCalculators.py:177 +#: flatcamGUI/FlatCAMGUI.py:6196 flatcamTools/ToolCalculators.py:177 msgid "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." @@ -8292,11 +8268,11 @@ msgstr "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." -#: flatcamGUI/FlatCAMGUI.py:6195 flatcamTools/ToolCalculators.py:181 +#: flatcamGUI/FlatCAMGUI.py:6202 flatcamTools/ToolCalculators.py:181 msgid "Copper Growth:" msgstr "Copper Growth:" -#: flatcamGUI/FlatCAMGUI.py:6198 flatcamTools/ToolCalculators.py:185 +#: flatcamGUI/FlatCAMGUI.py:6205 flatcamTools/ToolCalculators.py:185 msgid "" "How thick the copper growth is intended to be.\n" "In microns." @@ -8304,11 +8280,11 @@ msgstr "" "How thick the copper growth is intended to be.\n" "In microns." -#: flatcamGUI/FlatCAMGUI.py:6211 +#: flatcamGUI/FlatCAMGUI.py:6218 msgid "Transform Tool Options" msgstr "Transform Tool Options" -#: flatcamGUI/FlatCAMGUI.py:6216 +#: flatcamGUI/FlatCAMGUI.py:6223 msgid "" "Various transformations that can be applied\n" "on a FlatCAM object." @@ -8316,47 +8292,47 @@ msgstr "" "Various transformations that can be applied\n" "on a FlatCAM object." -#: flatcamGUI/FlatCAMGUI.py:6226 +#: flatcamGUI/FlatCAMGUI.py:6233 msgid "Rotate Angle:" msgstr "Rotate Angle:" -#: flatcamGUI/FlatCAMGUI.py:6228 +#: flatcamGUI/FlatCAMGUI.py:6235 msgid "Angle for rotation. In degrees." msgstr "Angle for rotation. In degrees." -#: flatcamGUI/FlatCAMGUI.py:6235 +#: flatcamGUI/FlatCAMGUI.py:6242 msgid "Skew_X angle:" msgstr "Skew_X angle:" -#: flatcamGUI/FlatCAMGUI.py:6237 +#: flatcamGUI/FlatCAMGUI.py:6244 msgid "Angle for Skew/Shear on X axis. In degrees." msgstr "Angle for Skew/Shear on X axis. In degrees." -#: flatcamGUI/FlatCAMGUI.py:6244 +#: flatcamGUI/FlatCAMGUI.py:6251 msgid "Skew_Y angle:" msgstr "Skew_Y angle:" -#: flatcamGUI/FlatCAMGUI.py:6246 +#: flatcamGUI/FlatCAMGUI.py:6253 msgid "Angle for Skew/Shear on Y axis. In degrees." msgstr "Angle for Skew/Shear on Y axis. In degrees." -#: flatcamGUI/FlatCAMGUI.py:6253 +#: flatcamGUI/FlatCAMGUI.py:6260 msgid "Scale_X factor:" msgstr "Scale_X factor:" -#: flatcamGUI/FlatCAMGUI.py:6255 +#: flatcamGUI/FlatCAMGUI.py:6262 msgid "Factor for scaling on X axis." msgstr "Factor for scaling on X axis." -#: flatcamGUI/FlatCAMGUI.py:6262 +#: flatcamGUI/FlatCAMGUI.py:6269 msgid "Scale_Y factor:" msgstr "Scale_Y factor:" -#: flatcamGUI/FlatCAMGUI.py:6264 +#: flatcamGUI/FlatCAMGUI.py:6271 msgid "Factor for scaling on Y axis." msgstr "Factor for scaling on Y axis." -#: flatcamGUI/FlatCAMGUI.py:6272 +#: flatcamGUI/FlatCAMGUI.py:6279 msgid "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." @@ -8364,7 +8340,7 @@ msgstr "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." -#: flatcamGUI/FlatCAMGUI.py:6280 flatcamTools/ToolTransform.py:210 +#: flatcamGUI/FlatCAMGUI.py:6287 flatcamTools/ToolTransform.py:210 msgid "" "Scale the selected object(s)\n" "using the origin reference when checked,\n" @@ -8376,27 +8352,27 @@ msgstr "" "and the center of the biggest bounding box\n" "of the selected objects when unchecked." -#: flatcamGUI/FlatCAMGUI.py:6289 +#: flatcamGUI/FlatCAMGUI.py:6296 msgid "Offset_X val:" msgstr "Offset_X val:" -#: flatcamGUI/FlatCAMGUI.py:6291 +#: flatcamGUI/FlatCAMGUI.py:6298 msgid "Distance to offset on X axis. In current units." msgstr "Distance to offset on X axis. In current units." -#: flatcamGUI/FlatCAMGUI.py:6298 +#: flatcamGUI/FlatCAMGUI.py:6305 msgid "Offset_Y val:" msgstr "Offset_Y val:" -#: flatcamGUI/FlatCAMGUI.py:6300 +#: flatcamGUI/FlatCAMGUI.py:6307 msgid "Distance to offset on Y axis. In current units." msgstr "Distance to offset on Y axis. In current units." -#: flatcamGUI/FlatCAMGUI.py:6306 +#: flatcamGUI/FlatCAMGUI.py:6313 msgid "Mirror Reference" msgstr "Mirror Reference" -#: flatcamGUI/FlatCAMGUI.py:6308 flatcamTools/ToolTransform.py:314 +#: flatcamGUI/FlatCAMGUI.py:6315 flatcamTools/ToolTransform.py:314 msgid "" "Flip the selected object(s)\n" "around the point in Point Entry Field.\n" @@ -8418,11 +8394,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:6319 +#: flatcamGUI/FlatCAMGUI.py:6326 msgid " Mirror Ref. Point:" msgstr " Mirror Ref. Point:" -#: flatcamGUI/FlatCAMGUI.py:6321 flatcamTools/ToolTransform.py:327 +#: flatcamGUI/FlatCAMGUI.py:6328 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" @@ -8432,11 +8408,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:6338 +#: flatcamGUI/FlatCAMGUI.py:6345 msgid "SolderPaste Tool Options" msgstr "SolderPaste Tool Options" -#: flatcamGUI/FlatCAMGUI.py:6343 +#: flatcamGUI/FlatCAMGUI.py:6350 msgid "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." @@ -8444,47 +8420,47 @@ msgstr "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." -#: flatcamGUI/FlatCAMGUI.py:6354 +#: flatcamGUI/FlatCAMGUI.py:6361 msgid "Diameters of nozzle tools, separated by ','" msgstr "Diameters of nozzle tools, separated by ','" -#: flatcamGUI/FlatCAMGUI.py:6361 +#: flatcamGUI/FlatCAMGUI.py:6368 msgid "New Nozzle Dia:" msgstr "New Nozzle Dia:" -#: flatcamGUI/FlatCAMGUI.py:6363 flatcamTools/ToolSolderPaste.py:103 +#: flatcamGUI/FlatCAMGUI.py:6370 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:6371 flatcamTools/ToolSolderPaste.py:166 +#: flatcamGUI/FlatCAMGUI.py:6378 flatcamTools/ToolSolderPaste.py:166 msgid "Z Dispense Start:" msgstr "Z Dispense Start:" -#: flatcamGUI/FlatCAMGUI.py:6373 flatcamTools/ToolSolderPaste.py:168 +#: flatcamGUI/FlatCAMGUI.py:6380 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:6380 flatcamTools/ToolSolderPaste.py:174 +#: flatcamGUI/FlatCAMGUI.py:6387 flatcamTools/ToolSolderPaste.py:174 msgid "Z Dispense:" msgstr "Z Dispense:" -#: flatcamGUI/FlatCAMGUI.py:6382 flatcamTools/ToolSolderPaste.py:176 +#: flatcamGUI/FlatCAMGUI.py:6389 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:6389 flatcamTools/ToolSolderPaste.py:183 +#: flatcamGUI/FlatCAMGUI.py:6396 flatcamTools/ToolSolderPaste.py:183 msgid "Z Dispense Stop:" msgstr "Z Dispense Stop:" -#: flatcamGUI/FlatCAMGUI.py:6391 flatcamTools/ToolSolderPaste.py:185 +#: flatcamGUI/FlatCAMGUI.py:6398 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:6398 flatcamTools/ToolSolderPaste.py:191 +#: flatcamGUI/FlatCAMGUI.py:6405 flatcamTools/ToolSolderPaste.py:191 msgid "Z Travel:" msgstr "Z Travel:" -#: flatcamGUI/FlatCAMGUI.py:6400 flatcamTools/ToolSolderPaste.py:193 +#: flatcamGUI/FlatCAMGUI.py:6407 flatcamTools/ToolSolderPaste.py:193 msgid "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." @@ -8492,19 +8468,19 @@ msgstr "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." -#: flatcamGUI/FlatCAMGUI.py:6408 flatcamTools/ToolSolderPaste.py:200 +#: flatcamGUI/FlatCAMGUI.py:6415 flatcamTools/ToolSolderPaste.py:200 msgid "Z Toolchange:" msgstr "Z Toolchange:" -#: flatcamGUI/FlatCAMGUI.py:6410 flatcamTools/ToolSolderPaste.py:202 +#: flatcamGUI/FlatCAMGUI.py:6417 flatcamTools/ToolSolderPaste.py:202 msgid "The height (Z) for tool (nozzle) change." msgstr "The height (Z) for tool (nozzle) change." -#: flatcamGUI/FlatCAMGUI.py:6417 flatcamTools/ToolSolderPaste.py:208 +#: flatcamGUI/FlatCAMGUI.py:6424 flatcamTools/ToolSolderPaste.py:208 msgid "XY Toolchange:" msgstr "XY Toolchange:" -#: flatcamGUI/FlatCAMGUI.py:6419 flatcamTools/ToolSolderPaste.py:210 +#: flatcamGUI/FlatCAMGUI.py:6426 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." @@ -8512,19 +8488,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:6427 flatcamTools/ToolSolderPaste.py:217 +#: flatcamGUI/FlatCAMGUI.py:6434 flatcamTools/ToolSolderPaste.py:217 msgid "Feedrate X-Y:" msgstr "Feedrate X-Y:" -#: flatcamGUI/FlatCAMGUI.py:6429 flatcamTools/ToolSolderPaste.py:219 +#: flatcamGUI/FlatCAMGUI.py:6436 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:6436 flatcamTools/ToolSolderPaste.py:225 +#: flatcamGUI/FlatCAMGUI.py:6443 flatcamTools/ToolSolderPaste.py:225 msgid "Feedrate Z:" msgstr "Feedrate Z:" -#: flatcamGUI/FlatCAMGUI.py:6438 flatcamTools/ToolSolderPaste.py:227 +#: flatcamGUI/FlatCAMGUI.py:6445 flatcamTools/ToolSolderPaste.py:227 msgid "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." @@ -8532,11 +8508,11 @@ msgstr "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." -#: flatcamGUI/FlatCAMGUI.py:6446 flatcamTools/ToolSolderPaste.py:234 +#: flatcamGUI/FlatCAMGUI.py:6453 flatcamTools/ToolSolderPaste.py:234 msgid "Feedrate Z Dispense:" msgstr "Feedrate Z Dispense:" -#: flatcamGUI/FlatCAMGUI.py:6448 flatcamTools/ToolSolderPaste.py:236 +#: flatcamGUI/FlatCAMGUI.py:6455 flatcamTools/ToolSolderPaste.py:236 msgid "" "Feedrate (speed) while moving up vertically\n" " to Dispense position (on Z plane)." @@ -8544,11 +8520,11 @@ msgstr "" "Feedrate (speed) while moving up vertically\n" " to Dispense position (on Z plane)." -#: flatcamGUI/FlatCAMGUI.py:6456 flatcamTools/ToolSolderPaste.py:243 +#: flatcamGUI/FlatCAMGUI.py:6463 flatcamTools/ToolSolderPaste.py:243 msgid "Spindle Speed FWD:" msgstr "Spindle Speed FWD:" -#: flatcamGUI/FlatCAMGUI.py:6458 flatcamTools/ToolSolderPaste.py:245 +#: flatcamGUI/FlatCAMGUI.py:6465 flatcamTools/ToolSolderPaste.py:245 msgid "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." @@ -8556,19 +8532,19 @@ msgstr "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." -#: flatcamGUI/FlatCAMGUI.py:6466 flatcamTools/ToolSolderPaste.py:252 +#: flatcamGUI/FlatCAMGUI.py:6473 flatcamTools/ToolSolderPaste.py:252 msgid "Dwell FWD:" msgstr "Dwell FWD:" -#: flatcamGUI/FlatCAMGUI.py:6468 flatcamTools/ToolSolderPaste.py:254 +#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:254 msgid "Pause after solder dispensing." msgstr "Pause after solder dispensing." -#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:260 +#: flatcamGUI/FlatCAMGUI.py:6482 flatcamTools/ToolSolderPaste.py:260 msgid "Spindle Speed REV:" msgstr "Spindle Speed REV:" -#: flatcamGUI/FlatCAMGUI.py:6477 flatcamTools/ToolSolderPaste.py:262 +#: flatcamGUI/FlatCAMGUI.py:6484 flatcamTools/ToolSolderPaste.py:262 msgid "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." @@ -8576,11 +8552,11 @@ msgstr "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." -#: flatcamGUI/FlatCAMGUI.py:6485 flatcamTools/ToolSolderPaste.py:269 +#: flatcamGUI/FlatCAMGUI.py:6492 flatcamTools/ToolSolderPaste.py:269 msgid "Dwell REV:" msgstr "Dwell REV:" -#: flatcamGUI/FlatCAMGUI.py:6487 flatcamTools/ToolSolderPaste.py:271 +#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:271 msgid "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." @@ -8588,23 +8564,23 @@ msgstr "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." -#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:277 +#: flatcamGUI/FlatCAMGUI.py:6501 flatcamTools/ToolSolderPaste.py:277 msgid "PostProcessors:" msgstr "PostProcessors:" -#: flatcamGUI/FlatCAMGUI.py:6496 flatcamTools/ToolSolderPaste.py:279 +#: flatcamGUI/FlatCAMGUI.py:6503 flatcamTools/ToolSolderPaste.py:279 msgid "Files that control the GCode generation." msgstr "Files that control the GCode generation." -#: flatcamGUI/FlatCAMGUI.py:6526 flatcamGUI/FlatCAMGUI.py:6532 +#: flatcamGUI/FlatCAMGUI.py:6533 flatcamGUI/FlatCAMGUI.py:6539 msgid "Idle." msgstr "Idle." -#: flatcamGUI/FlatCAMGUI.py:6556 +#: flatcamGUI/FlatCAMGUI.py:6563 msgid "Application started ..." msgstr "Application started ..." -#: flatcamGUI/FlatCAMGUI.py:6557 +#: flatcamGUI/FlatCAMGUI.py:6564 msgid "Hello!" msgstr "Hello!" @@ -9710,7 +9686,6 @@ msgstr "" "from which the PCB is cutout)." #: flatcamTools/ToolCutOut.py:117 -#| msgid "Create a convex shape surrounding the entire PCB." msgid "" "Create a convex shape surrounding the entire PCB.\n" "Used only if the source object type is Gerber." @@ -10886,23 +10861,23 @@ msgstr "[WARNING_NOTCL] Click inside the desired polygon." msgid "[ERROR_NOTCL] Can't do Paint on MultiGeo geometries ..." msgstr "[ERROR_NOTCL] Can't do Paint on MultiGeo geometries ..." -#: flatcamTools/ToolPaint.py:796 flatcamTools/ToolPaint.py:999 +#: flatcamTools/ToolPaint.py:796 flatcamTools/ToolPaint.py:1003 msgid "Painting polygon..." msgstr "Painting polygon..." -#: flatcamTools/ToolPaint.py:847 +#: flatcamTools/ToolPaint.py:851 msgid "[WARNING] No polygon found." msgstr "[WARNING] No polygon found." -#: flatcamTools/ToolPaint.py:850 +#: flatcamTools/ToolPaint.py:854 msgid "Painting polygon." msgstr "Painting polygon." -#: flatcamTools/ToolPaint.py:892 +#: flatcamTools/ToolPaint.py:896 msgid "[ERROR_NOTCL] Geometry could not be painted completely" msgstr "[ERROR_NOTCL] Geometry could not be painted completely" -#: flatcamTools/ToolPaint.py:918 +#: flatcamTools/ToolPaint.py:922 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -10913,16 +10888,16 @@ msgstr "" "different strategy of paint\n" "%s" -#: flatcamTools/ToolPaint.py:960 +#: flatcamTools/ToolPaint.py:964 #, python-format msgid "[ERROR_NOTCL] PaintTool.paint_poly() --> %s" msgstr "[ERROR_NOTCL] PaintTool.paint_poly() --> %s" -#: flatcamTools/ToolPaint.py:966 flatcamTools/ToolPaint.py:1259 +#: flatcamTools/ToolPaint.py:970 flatcamTools/ToolPaint.py:1263 msgid "Polygon Paint started ..." msgstr "Polygon Paint started ..." -#: flatcamTools/ToolPaint.py:1115 flatcamTools/ToolPaint.py:1204 +#: flatcamTools/ToolPaint.py:1119 flatcamTools/ToolPaint.py:1208 #, python-format msgid "" "[ERROR] Could not do Paint All. Try a different combination of parameters. " @@ -10933,7 +10908,7 @@ msgstr "" "Or a different Method of paint\n" "%s" -#: flatcamTools/ToolPaint.py:1139 +#: flatcamTools/ToolPaint.py:1143 msgid "" "[ERROR] There is no Painting Geometry in the file.\n" "Usually it means that the tool diameter is too big for the painted " @@ -10945,11 +10920,11 @@ msgstr "" "geometry.\n" "Change the painting parameters and try again." -#: flatcamTools/ToolPaint.py:1148 +#: flatcamTools/ToolPaint.py:1152 msgid "[success] Paint All Done." msgstr "[success] Paint All Done." -#: flatcamTools/ToolPaint.py:1234 +#: flatcamTools/ToolPaint.py:1238 msgid "" "[ERROR_NOTCL] There is no Painting Geometry in the file.\n" "Usually it means that the tool diameter is too big for the painted " @@ -10961,7 +10936,7 @@ msgstr "" "geometry.\n" "Change the painting parameters and try again." -#: flatcamTools/ToolPaint.py:1243 +#: flatcamTools/ToolPaint.py:1247 msgid "[success] Paint All with Rest-Machining done." msgstr "[success] Paint All with Rest-Machining done." @@ -10990,7 +10965,6 @@ msgstr "" "be duplicated in an array of rows and columns." #: flatcamTools/ToolPanelize.py:86 -#| msgid "Generate Isolation Geometry:" msgid "Penelization Reference:" msgstr "Penelization Reference:" @@ -11035,7 +11009,6 @@ msgstr "" " selected object that is to be panelized." #: flatcamTools/ToolPanelize.py:134 -#| msgid "Tool Data" msgid "Panel Data:" msgstr "Panel Data:" @@ -11056,7 +11029,6 @@ msgstr "" "elements of the panel array." #: flatcamTools/ToolPanelize.py:183 -#| msgid "Panel Type:" msgid "Panel Type:" msgstr "Panel Type:" @@ -11090,7 +11062,6 @@ msgstr "" #: flatcamTools/ToolPanelize.py:370 #, python-format -#| msgid "[WARNING_NOTCL] No object Box. Using instead %s" msgid "[WARNING_NOTCL]No object Box. Using instead %s" msgstr "[WARNING_NOTCL]No object Box. Using instead %s" diff --git a/locale/ro/LC_MESSAGES/strings.mo b/locale/ro/LC_MESSAGES/strings.mo index 2ce363684b08fe12a26ece99f635c45adb880042..41177036e5e693370045c649ff36d2cc3ad53d70 100644 GIT binary patch delta 39257 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 E00dyOmH+?% delta 38909 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şiere recente< pentru a fi salvat " "a eșuat." -#: FlatCAMApp.py:2930 camlib.py:4453 +#: FlatCAMApp.py:2930 camlib.py:4454 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 " @@ -220,7 +220,7 @@ msgstr "" msgid "Factory defaults saved." msgstr "Valori default de fabrică au fost salvate." -#: FlatCAMApp.py:3339 flatcamGUI/FlatCAMGUI.py:3103 +#: FlatCAMApp.py:3339 flatcamGUI/FlatCAMGUI.py:3110 msgid "[WARNING_NOTCL] Application is saving the project. Please wait ..." msgstr "[WARNING_NOTCL] Aplicația salvează proiectul. Vă rugăm aşteptați ..." @@ -328,16 +328,16 @@ msgstr "" "format Real." #: FlatCAMApp.py:4488 FlatCAMApp.py:4521 FlatCAMApp.py:4532 FlatCAMApp.py:4543 -#: flatcamGUI/FlatCAMGUI.py:2998 +#: flatcamGUI/FlatCAMGUI.py:3005 msgid "[WARNING_NOTCL] Adding Tool cancelled ..." -msgstr "[WARNING_NOTCL] Adaugarea unei unelte anulata ..." +msgstr "[WARNING_NOTCL] Adăugarea unei unelte anulata ..." #: FlatCAMApp.py:4491 msgid "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." msgstr "" -"Adaugarea de unelte noi functionează doar in modul Avansat.\n" +"Adăugarea de unelte noi functionează doar in modul Avansat.\n" "Pentru aceasta mergi in Preferințe -> General - Activează Modul Avansat." #: FlatCAMApp.py:4604 @@ -370,15 +370,15 @@ msgstr "Coordonate gresite. Introduceți coordonatele in format X,Y." #: FlatCAMApp.py:4661 flatcamEditors/FlatCAMExcEditor.py:2285 #: flatcamEditors/FlatCAMExcEditor.py:2292 -#: flatcamEditors/FlatCAMGeoEditor.py:3555 -#: flatcamEditors/FlatCAMGeoEditor.py:3569 -#: flatcamEditors/FlatCAMGrbEditor.py:1037 -#: flatcamEditors/FlatCAMGrbEditor.py:1138 -#: flatcamEditors/FlatCAMGrbEditor.py:1399 -#: flatcamEditors/FlatCAMGrbEditor.py:1649 -#: flatcamEditors/FlatCAMGrbEditor.py:3784 -#: flatcamEditors/FlatCAMGrbEditor.py:3798 flatcamGUI/FlatCAMGUI.py:2412 -#: flatcamGUI/FlatCAMGUI.py:2424 +#: flatcamEditors/FlatCAMGeoEditor.py:3648 +#: flatcamEditors/FlatCAMGeoEditor.py:3662 +#: 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 msgid "[success] Done." msgstr "[success] Executat." @@ -406,8 +406,8 @@ msgid "[success] Flip on Y axis done." msgstr "[success] Oglindire pe axa Y executată." #: FlatCAMApp.py:4971 FlatCAMApp.py:5011 -#: flatcamEditors/FlatCAMGeoEditor.py:1356 -#: flatcamEditors/FlatCAMGrbEditor.py:5165 flatcamTools/ToolTransform.py:748 +#: flatcamEditors/FlatCAMGeoEditor.py:1355 +#: flatcamEditors/FlatCAMGrbEditor.py:5309 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." @@ -437,8 +437,8 @@ msgstr "Introduceți valoaea Unghiului:" msgid "[success] Rotation done." msgstr "[success] Rotaţie executată." -#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:1299 -#: flatcamEditors/FlatCAMGrbEditor.py:5096 flatcamTools/ToolTransform.py:677 +#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:1298 +#: flatcamEditors/FlatCAMGrbEditor.py:5240 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." @@ -459,9 +459,9 @@ msgstr "[WARNING_NOTCL] Nici-un obiect selectat pentru Deformare pe axa Y." msgid "[success] Skew on Y axis done." msgstr "[success] Deformare pe axa Y executată." -#: FlatCAMApp.py:5197 flatcamEditors/FlatCAMGeoEditor.py:938 -#: flatcamEditors/FlatCAMGrbEditor.py:2223 -#: flatcamEditors/FlatCAMGrbEditor.py:4687 flatcamGUI/ObjectUI.py:991 +#: FlatCAMApp.py:5197 flatcamEditors/FlatCAMGeoEditor.py:937 +#: flatcamEditors/FlatCAMGrbEditor.py:2365 +#: flatcamEditors/FlatCAMGrbEditor.py:4831 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 @@ -470,9 +470,9 @@ msgid "Add" msgstr "Adaugă" #: FlatCAMApp.py:5198 FlatCAMObj.py:3302 -#: flatcamEditors/FlatCAMGrbEditor.py:2228 flatcamGUI/FlatCAMGUI.py:532 -#: flatcamGUI/FlatCAMGUI.py:726 flatcamGUI/FlatCAMGUI.py:1616 -#: flatcamGUI/FlatCAMGUI.py:1948 flatcamGUI/ObjectUI.py:1007 +#: flatcamEditors/FlatCAMGrbEditor.py:2370 flatcamGUI/FlatCAMGUI.py:532 +#: flatcamGUI/FlatCAMGUI.py:729 flatcamGUI/FlatCAMGUI.py:1619 +#: flatcamGUI/FlatCAMGUI.py:1955 flatcamGUI/ObjectUI.py:1007 #: flatcamTools/ToolNonCopperClear.py:146 flatcamTools/ToolPaint.py:143 #: flatcamTools/ToolSolderPaste.py:121 flatcamTools/ToolSolderPaste.py:481 msgid "Delete" @@ -503,7 +503,7 @@ msgstr "[WARNING_NOTCL] Grila exista deja." #: FlatCAMApp.py:5231 msgid "[WARNING_NOTCL] Adding New Grid cancelled ..." -msgstr "[WARNING_NOTCL] Adaugarea unei valori de Grila a fost anulata ..." +msgstr "[WARNING_NOTCL] Adăugarea unei valori de Grila a fost anulata ..." #: FlatCAMApp.py:5253 msgid "[ERROR_NOTCL] Grid Value does not exist ..." @@ -550,7 +550,7 @@ 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:1831 +#: flatcamGUI/FlatCAMGUI.py:1834 msgid "Open Gerber" msgstr "Încarcă Gerber" @@ -559,7 +559,7 @@ 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:1832 +#: flatcamGUI/FlatCAMGUI.py:1835 msgid "Open Excellon" msgstr "Încarcă Excellon" @@ -1059,7 +1059,7 @@ msgstr "[ERROR_NOTCL] Esec in incărcarea listei cu obiecte recente." msgid "[ERROR_NOTCL] Failed to parse recent item list." msgstr "[ERROR_NOTCL] Esec in parsarea listei cu obiecte recente." -#: FlatCAMApp.py:8110 flatcamGUI/FlatCAMGUI.py:970 +#: FlatCAMApp.py:8110 flatcamGUI/FlatCAMGUI.py:973 msgid "Shortcut Key List" msgstr "Lista cu taste Shortcut" @@ -1277,7 +1277,7 @@ msgstr "Nr. Tot. Sloturi" #: flatcamTools/ToolNonCopperClear.py:627 #: flatcamTools/ToolNonCopperClear.py:644 flatcamTools/ToolPaint.py:538 #: flatcamTools/ToolPaint.py:608 flatcamTools/ToolPaint.py:743 -#: flatcamTools/ToolPaint.py:840 flatcamTools/ToolPaint.py:995 +#: flatcamTools/ToolPaint.py:844 flatcamTools/ToolPaint.py:999 #: flatcamTools/ToolPanelize.py:385 flatcamTools/ToolPanelize.py:397 #: flatcamTools/ToolPanelize.py:410 flatcamTools/ToolPanelize.py:423 #: flatcamTools/ToolPanelize.py:435 flatcamTools/ToolPanelize.py:446 @@ -1345,8 +1345,8 @@ msgstr "" msgid "Generating CNC Code" msgstr "CNC Code in curs de generare" -#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5165 camlib.py:5624 -#: camlib.py:5887 +#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5166 camlib.py:5625 +#: camlib.py:5888 msgid "" "[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " "format (x, y) \n" @@ -1368,8 +1368,8 @@ msgstr "Grosier" msgid "Finish" msgstr "Finisare" -#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:724 -#: flatcamGUI/FlatCAMGUI.py:1615 flatcamGUI/FlatCAMGUI.py:1946 +#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:727 +#: flatcamGUI/FlatCAMGUI.py:1618 flatcamGUI/FlatCAMGUI.py:1953 #: flatcamGUI/ObjectUI.py:999 msgid "Copy" msgstr "Copiază" @@ -1619,7 +1619,7 @@ msgstr "[success] Rotatia Gerber efectuata." msgid "[ERROR_NOTCL] This is GCODE mark: %s" msgstr "[ERROR_NOTCL] Acesta este un marcaj Gerber: %s" -#: camlib.py:3989 +#: camlib.py:3990 #, python-format msgid "" "[WARNING] No tool diameter info's. See shell.\n" @@ -1635,7 +1635,7 @@ msgstr "" "Userul trebuie să editeze obictul Excellon rezultat si sa ajusteze " "diametrele a.i sa reflecte diametrele reale." -#: camlib.py:4454 +#: camlib.py:4455 #, python-brace-format msgid "" "[ERROR] Excellon Parser error.\n" @@ -1645,7 +1645,7 @@ msgstr "" "Parsare eșuata. Linia {l_nr}: {line}\n" "\n" -#: camlib.py:4531 +#: camlib.py:4532 msgid "" "[WARNING] Excellon.create_geometry() -> a drill location was skipped due of " "not having a tool associated.\n" @@ -1655,12 +1655,12 @@ msgstr "" "deoarece nu are o unealtă asociata.\n" "Verifică codul G-Code rezultat." -#: camlib.py:5074 +#: camlib.py:5075 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "[ERROR] Nu exista un asemenea parametru: %s" -#: camlib.py:5144 +#: camlib.py:5145 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1673,7 +1673,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:5151 camlib.py:5647 camlib.py:5910 +#: camlib.py:5152 camlib.py:5648 camlib.py:5911 #, python-format msgid "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" @@ -1681,15 +1681,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:5380 camlib.py:5477 camlib.py:5535 +#: camlib.py:5381 camlib.py:5478 camlib.py:5536 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "[ERROR_NOTCL] Fişierul Excellon incărcat nu are găuri ..." -#: camlib.py:5482 +#: camlib.py:5483 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "[ERROR_NOTCL] Un tip de optimizare incorrect a fost selectat." -#: camlib.py:5635 camlib.py:5898 +#: camlib.py:5636 camlib.py:5899 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." @@ -1697,7 +1697,7 @@ msgstr "" "[ERROR_NOTCL] Parametrul >Z tăiere< este None sau zero. Cel mai probabil o " "combinaţie nefericita de parametri." -#: camlib.py:5640 camlib.py:5903 +#: camlib.py:5641 camlib.py:5904 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1710,11 +1710,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:5652 camlib.py:5915 +#: camlib.py:5653 camlib.py:5916 msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." msgstr "[ERROR_NOTCL] Parametrul >Z deplasare< este None sau zero." -#: camlib.py:5656 camlib.py:5919 +#: camlib.py:5657 camlib.py:5920 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1728,7 +1728,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:5663 camlib.py:5926 +#: camlib.py:5664 camlib.py:5927 #, python-format msgid "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" @@ -1736,12 +1736,12 @@ msgstr "" "[WARNING] Parametrul >Z deplasare< este zero. Aceasta este periculos, prin " "urmare fişierul %s nu se procesează." -#: camlib.py:5793 +#: camlib.py:5794 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "[ERROR] Se astepta o Geometrie, am primit in schimb %s" -#: camlib.py:5799 +#: camlib.py:5800 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." @@ -1749,7 +1749,7 @@ msgstr "" "[ERROR_NOTCL] Se încearcă generarea unui CNC Job dintr-un obiect Geometrie " "fără atributul solid_geometry." -#: camlib.py:5838 +#: camlib.py:5839 msgid "" "[ERROR_NOTCL] The Tool Offset value is too negative to use for the " "current_geometry.\n" @@ -1759,7 +1759,7 @@ msgstr "" "fi folosita. \n" "Mareste valoarea absoluta și încearcă din nou." -#: camlib.py:6052 +#: camlib.py:6053 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." @@ -1774,8 +1774,8 @@ msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:447 #: flatcamEditors/FlatCAMExcEditor.py:472 #: flatcamEditors/FlatCAMGrbEditor.py:451 -#: flatcamEditors/FlatCAMGrbEditor.py:1759 -#: flatcamEditors/FlatCAMGrbEditor.py:1787 +#: flatcamEditors/FlatCAMGrbEditor.py:1762 +#: flatcamEditors/FlatCAMGrbEditor.py:1790 msgid "Click on target location ..." msgstr "Click pe locatia tinta ..." @@ -1830,7 +1830,7 @@ msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:423 msgid "[success] Done. Drill Resize completed." -msgstr "[success] Executat. Redimensionare găurire terminata." +msgstr "[success] Executat. Redimensionare găurire terminată." #: flatcamEditors/FlatCAMExcEditor.py:426 msgid "[WARNING_NOTCL] Cancelled. No drills selected for resize ..." @@ -1838,7 +1838,7 @@ msgstr "" "[WARNING_NOTCL] Anulat. Nimic nu este selectat pentruredimensionare ..." #: flatcamEditors/FlatCAMExcEditor.py:449 -#: flatcamEditors/FlatCAMGrbEditor.py:1761 +#: flatcamEditors/FlatCAMGrbEditor.py:1764 msgid "Click on reference location ..." msgstr "Click pe locatia de referinţă ..." @@ -1855,7 +1855,7 @@ msgid "Excellon Editor" msgstr "Editor Excellon" #: flatcamEditors/FlatCAMExcEditor.py:765 -#: flatcamEditors/FlatCAMGrbEditor.py:2108 +#: flatcamEditors/FlatCAMGrbEditor.py:2250 msgid "Name:" msgstr "Nume:" @@ -1942,7 +1942,7 @@ msgstr "Redimensionează" msgid "Resize drill(s)" msgstr "Redimensionează op. de găurire." -#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1612 +#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1615 msgid "Add Drill Array" msgstr "Adaugă o arie de op. găurire" @@ -1959,12 +1959,12 @@ msgstr "" "Poate fi Liniar X(Y) sau Circular." #: flatcamEditors/FlatCAMExcEditor.py:900 -#: flatcamEditors/FlatCAMGrbEditor.py:2341 +#: flatcamEditors/FlatCAMGrbEditor.py:2483 msgid "Linear" msgstr "Liniar" #: flatcamEditors/FlatCAMExcEditor.py:901 -#: flatcamEditors/FlatCAMGrbEditor.py:2342 +#: flatcamEditors/FlatCAMGrbEditor.py:2484 msgid "Circular" msgstr "Circular" @@ -1978,13 +1978,13 @@ msgstr "Specifica cate operațiuni de găurire să fie incluse in arie." #: flatcamEditors/FlatCAMExcEditor.py:927 #: flatcamEditors/FlatCAMExcEditor.py:972 -#: flatcamEditors/FlatCAMGrbEditor.py:2368 -#: flatcamEditors/FlatCAMGrbEditor.py:2413 +#: flatcamEditors/FlatCAMGrbEditor.py:2510 +#: flatcamEditors/FlatCAMGrbEditor.py:2555 msgid "Direction:" msgstr "Direcţie:" #: flatcamEditors/FlatCAMExcEditor.py:929 -#: flatcamEditors/FlatCAMGrbEditor.py:2370 +#: flatcamEditors/FlatCAMGrbEditor.py:2512 msgid "" "Direction on which the linear array is oriented:\n" "- 'X' - horizontal axis \n" @@ -1997,26 +1997,26 @@ msgstr "" "- 'Unghi' - un unghi particular pentru inclinatia ariei" #: flatcamEditors/FlatCAMExcEditor.py:942 -#: flatcamEditors/FlatCAMGrbEditor.py:2383 +#: flatcamEditors/FlatCAMGrbEditor.py:2525 msgid "Pitch:" msgstr "Pas:" #: flatcamEditors/FlatCAMExcEditor.py:944 -#: flatcamEditors/FlatCAMGrbEditor.py:2385 +#: flatcamEditors/FlatCAMGrbEditor.py:2527 msgid "Pitch = Distance between elements of the array." msgstr "Pas = Distanta între elementele ariei." #: flatcamEditors/FlatCAMExcEditor.py:951 #: flatcamEditors/FlatCAMExcEditor.py:987 -#: flatcamEditors/FlatCAMGeoEditor.py:666 -#: flatcamEditors/FlatCAMGrbEditor.py:2392 -#: flatcamEditors/FlatCAMGrbEditor.py:2428 -#: flatcamEditors/FlatCAMGrbEditor.py:4414 flatcamTools/ToolTransform.py:68 +#: flatcamEditors/FlatCAMGeoEditor.py:665 +#: flatcamEditors/FlatCAMGrbEditor.py:2534 +#: flatcamEditors/FlatCAMGrbEditor.py:2570 +#: flatcamEditors/FlatCAMGrbEditor.py:4558 flatcamTools/ToolTransform.py:68 msgid "Angle:" msgstr "Unghi:" #: flatcamEditors/FlatCAMExcEditor.py:953 -#: flatcamEditors/FlatCAMGrbEditor.py:2394 +#: flatcamEditors/FlatCAMGrbEditor.py:2536 msgid "" "Angle at which the linear array is placed.\n" "The precision is of max 2 decimals.\n" @@ -2029,7 +2029,7 @@ msgstr "" "Val maxima este: 360.00 grade." #: flatcamEditors/FlatCAMExcEditor.py:974 -#: flatcamEditors/FlatCAMGrbEditor.py:2415 +#: flatcamEditors/FlatCAMGrbEditor.py:2557 msgid "" "Direction for circular array.Can be CW = clockwise or CCW = counter " "clockwise." @@ -2038,7 +2038,7 @@ msgstr "" "sau CCW = invers acelor de ceasornic" #: flatcamEditors/FlatCAMExcEditor.py:989 -#: flatcamEditors/FlatCAMGrbEditor.py:2430 +#: flatcamEditors/FlatCAMGrbEditor.py:2572 msgid "Angle at which each element in circular array is placed." msgstr "" "Unghiul la care fiecare element al ariei circulare este plasat fata de " @@ -2053,7 +2053,7 @@ msgstr "" "Salvează și reeditează obiectul Excellon daca ai nevoie să adaugi aceasta " "unealtă." -#: flatcamEditors/FlatCAMExcEditor.py:1461 flatcamGUI/FlatCAMGUI.py:2995 +#: flatcamEditors/FlatCAMExcEditor.py:1461 flatcamGUI/FlatCAMGUI.py:3002 #, python-brace-format msgid "[success] Added new tool with dia: {dia} {units}" msgstr "[success] O noua unealtă este adăugată cu diametrul: {dia} {units}" @@ -2081,7 +2081,7 @@ msgstr "In curs de creere Excellon." #: flatcamEditors/FlatCAMExcEditor.py:2056 msgid "[success] Excellon editing finished." -msgstr "[success] Editarea Excellon a fost terminata." +msgstr "[success] Editarea Excellon a fost terminată." #: flatcamEditors/FlatCAMExcEditor.py:2073 msgid "[WARNING_NOTCL] Cancelled. There is no Tool/Drill selected" @@ -2093,17 +2093,17 @@ msgid "[success] Done. Drill(s) deleted." msgstr "[success] Executat. Operatiile de găurire șterse." #: flatcamEditors/FlatCAMExcEditor.py:2675 -#: flatcamEditors/FlatCAMGrbEditor.py:4174 +#: flatcamEditors/FlatCAMGrbEditor.py:4318 msgid "Click on the circular array Center position" msgstr "Click pe punctul de Centru al ariei circulare." #: flatcamEditors/FlatCAMGeoEditor.py:80 -#: flatcamEditors/FlatCAMGrbEditor.py:2258 +#: flatcamEditors/FlatCAMGrbEditor.py:2400 msgid "Buffer distance:" msgstr "Distanta pt bufer:" #: flatcamEditors/FlatCAMGeoEditor.py:81 -#: flatcamEditors/FlatCAMGrbEditor.py:2259 +#: flatcamEditors/FlatCAMGrbEditor.py:2401 msgid "Buffer corner:" msgstr "Coltul pt bufer:" @@ -2122,17 +2122,17 @@ msgstr "" "care formează coltul" #: flatcamEditors/FlatCAMGeoEditor.py:89 -#: flatcamEditors/FlatCAMGrbEditor.py:2267 +#: flatcamEditors/FlatCAMGrbEditor.py:2409 msgid "Round" msgstr "Rotund" #: flatcamEditors/FlatCAMGeoEditor.py:90 -#: flatcamEditors/FlatCAMGrbEditor.py:2268 +#: flatcamEditors/FlatCAMGrbEditor.py:2410 msgid "Square" msgstr "Patrat" #: flatcamEditors/FlatCAMGeoEditor.py:91 -#: flatcamEditors/FlatCAMGrbEditor.py:2269 +#: flatcamEditors/FlatCAMGrbEditor.py:2411 msgid "Beveled" msgstr "Beveled" @@ -2149,17 +2149,17 @@ msgid "Full Buffer" msgstr "Bufer complet" #: flatcamEditors/FlatCAMGeoEditor.py:127 -#: flatcamEditors/FlatCAMGeoEditor.py:2696 +#: flatcamEditors/FlatCAMGeoEditor.py:2682 msgid "Buffer Tool" msgstr "Unealta Bufer" #: flatcamEditors/FlatCAMGeoEditor.py:138 #: flatcamEditors/FlatCAMGeoEditor.py:155 #: flatcamEditors/FlatCAMGeoEditor.py:172 -#: flatcamEditors/FlatCAMGeoEditor.py:2714 -#: flatcamEditors/FlatCAMGeoEditor.py:2740 -#: flatcamEditors/FlatCAMGeoEditor.py:2766 -#: flatcamEditors/FlatCAMGrbEditor.py:4226 +#: flatcamEditors/FlatCAMGeoEditor.py:2700 +#: flatcamEditors/FlatCAMGeoEditor.py:2726 +#: flatcamEditors/FlatCAMGeoEditor.py:2752 +#: flatcamEditors/FlatCAMGrbEditor.py:4370 msgid "" "[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and " "retry." @@ -2171,17 +2171,17 @@ msgstr "" msgid "Text Tool" msgstr "Unealta Text" -#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:805 +#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:808 msgid "Tool" msgstr "Unealta" -#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4051 -#: flatcamGUI/FlatCAMGUI.py:5448 flatcamGUI/FlatCAMGUI.py:5724 -#: flatcamGUI/FlatCAMGUI.py:5864 flatcamGUI/ObjectUI.py:260 +#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4058 +#: flatcamGUI/FlatCAMGUI.py:5455 flatcamGUI/FlatCAMGUI.py:5731 +#: flatcamGUI/FlatCAMGUI.py:5871 flatcamGUI/ObjectUI.py:260 msgid "Tool dia:" msgstr "Dia unealtă:" -#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5866 +#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5873 msgid "" "Diameter of the tool to\n" "be used in the operation." @@ -2189,8 +2189,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:5630 -#: flatcamGUI/FlatCAMGUI.py:5875 flatcamTools/ToolNonCopperClear.py:165 +#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5637 +#: flatcamGUI/FlatCAMGUI.py:5882 flatcamTools/ToolNonCopperClear.py:165 #: flatcamTools/ToolPaint.py:160 msgid "Overlap Rate:" msgstr "Rata suprapunere:" @@ -2221,14 +2221,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:5646 -#: flatcamGUI/FlatCAMGUI.py:5732 flatcamGUI/FlatCAMGUI.py:5885 +#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5653 +#: flatcamGUI/FlatCAMGUI.py:5739 flatcamGUI/FlatCAMGUI.py:5892 #: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:181 #: flatcamTools/ToolPaint.py:177 msgid "Margin:" msgstr "Margine:" -#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5887 +#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5894 #: flatcamTools/ToolPaint.py:179 msgid "" "Distance by which to avoid\n" @@ -2239,13 +2239,13 @@ msgstr "" "poligonului care trebuie\n" "să fie >pictat<." -#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5655 -#: flatcamGUI/FlatCAMGUI.py:5896 flatcamTools/ToolNonCopperClear.py:190 +#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5662 +#: flatcamGUI/FlatCAMGUI.py:5903 flatcamTools/ToolNonCopperClear.py:190 #: flatcamTools/ToolPaint.py:188 msgid "Method:" msgstr "Metoda:" -#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5898 +#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5905 msgid "" "Algorithm to paint the polygon:
Standard: Fixed step inwards." "
Seed-based: Outwards from seed." @@ -2253,14 +2253,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:5671 -#: flatcamGUI/FlatCAMGUI.py:5911 flatcamTools/ToolNonCopperClear.py:206 +#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5678 +#: flatcamGUI/FlatCAMGUI.py:5918 flatcamTools/ToolNonCopperClear.py:206 #: flatcamTools/ToolPaint.py:204 msgid "Connect:" msgstr "Conectează:" -#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5673 -#: flatcamGUI/FlatCAMGUI.py:5913 flatcamTools/ToolNonCopperClear.py:208 +#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5680 +#: flatcamGUI/FlatCAMGUI.py:5920 flatcamTools/ToolNonCopperClear.py:208 #: flatcamTools/ToolPaint.py:206 msgid "" "Draw lines between resulting\n" @@ -2270,14 +2270,14 @@ msgstr "" "rezultate pentru a minimiza miscarile\n" "de ridicare a uneltei." -#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5680 -#: flatcamGUI/FlatCAMGUI.py:5921 flatcamTools/ToolNonCopperClear.py:215 +#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5687 +#: flatcamGUI/FlatCAMGUI.py:5928 flatcamTools/ToolNonCopperClear.py:215 #: flatcamTools/ToolPaint.py:213 msgid "Contour:" msgstr "Contur:" -#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5682 -#: flatcamGUI/FlatCAMGUI.py:5923 flatcamTools/ToolNonCopperClear.py:217 +#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5689 +#: flatcamGUI/FlatCAMGUI.py:5930 flatcamTools/ToolNonCopperClear.py:217 #: flatcamTools/ToolPaint.py:215 msgid "" "Cut around the perimeter of the polygon\n" @@ -2286,21 +2286,21 @@ msgstr "" "Taie de-a lungul perimetrului poligonului\n" "pentru a elimina bavurile." -#: flatcamEditors/FlatCAMGeoEditor.py:510 +#: flatcamEditors/FlatCAMGeoEditor.py:509 msgid "Paint" msgstr "Pictează" -#: flatcamEditors/FlatCAMGeoEditor.py:528 flatcamGUI/FlatCAMGUI.py:648 -#: flatcamGUI/FlatCAMGUI.py:1865 flatcamGUI/ObjectUI.py:1314 +#: flatcamEditors/FlatCAMGeoEditor.py:527 flatcamGUI/FlatCAMGUI.py:648 +#: flatcamGUI/FlatCAMGUI.py:1868 flatcamGUI/ObjectUI.py:1314 #: flatcamTools/ToolPaint.py:341 msgid "Paint Tool" msgstr "Unealta Paint" -#: flatcamEditors/FlatCAMGeoEditor.py:564 +#: flatcamEditors/FlatCAMGeoEditor.py:563 msgid "[WARNING_NOTCL] Paint cancelled. No shape selected." msgstr "[WARNING_NOTCL] Operaţie Paint anulata. Nici-o forma selectată." -#: flatcamEditors/FlatCAMGeoEditor.py:575 flatcamTools/ToolCutOut.py:355 +#: flatcamEditors/FlatCAMGeoEditor.py:574 flatcamTools/ToolCutOut.py:355 #: flatcamTools/ToolCutOut.py:512 flatcamTools/ToolCutOut.py:651 #: flatcamTools/ToolCutOut.py:756 flatcamTools/ToolDblSided.py:363 msgid "" @@ -2310,14 +2310,14 @@ msgstr "" "[WARNING_NOTCL] Diametrul uneltei lipseste sau este intr-un format " "incompatibil. Adaugă-l și reîncearcă." -#: flatcamEditors/FlatCAMGeoEditor.py:586 +#: flatcamEditors/FlatCAMGeoEditor.py:585 msgid "" "[WARNING_NOTCL] Overlap value is missing or wrong format. Add it and retry." msgstr "" "[WARNING_NOTCL] Valoarea de suprapunere a uneltei lipseste sau este intr-un " "format incompatibil. Adaugă-o și reîncearcă." -#: flatcamEditors/FlatCAMGeoEditor.py:598 +#: flatcamEditors/FlatCAMGeoEditor.py:597 msgid "" "[WARNING_NOTCL] Margin distance value is missing or wrong format. Add it and " "retry." @@ -2325,63 +2325,63 @@ msgstr "" "[WARNING_NOTCL] Valoarea de margine lipseste sau este intr-un format " "incompatibil. Adaugă-o și reîncearcă." -#: flatcamEditors/FlatCAMGeoEditor.py:607 -#: flatcamEditors/FlatCAMGeoEditor.py:2721 -#: flatcamEditors/FlatCAMGeoEditor.py:2747 -#: flatcamEditors/FlatCAMGeoEditor.py:2773 +#: flatcamEditors/FlatCAMGeoEditor.py:606 +#: flatcamEditors/FlatCAMGeoEditor.py:2707 +#: flatcamEditors/FlatCAMGeoEditor.py:2733 +#: flatcamEditors/FlatCAMGeoEditor.py:2759 #: flatcamTools/ToolNonCopperClear.py:813 flatcamTools/ToolProperties.py:104 msgid "Tools" msgstr "Unelte" -#: flatcamEditors/FlatCAMGeoEditor.py:618 -#: flatcamEditors/FlatCAMGeoEditor.py:991 -#: flatcamEditors/FlatCAMGrbEditor.py:4365 -#: flatcamEditors/FlatCAMGrbEditor.py:4750 flatcamGUI/FlatCAMGUI.py:659 -#: flatcamGUI/FlatCAMGUI.py:1878 flatcamTools/ToolTransform.py:398 +#: 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 msgid "Transform Tool" msgstr "Unealta Transformare" -#: flatcamEditors/FlatCAMGeoEditor.py:619 -#: flatcamEditors/FlatCAMGeoEditor.py:680 -#: flatcamEditors/FlatCAMGrbEditor.py:4366 -#: flatcamEditors/FlatCAMGrbEditor.py:4428 flatcamTools/ToolTransform.py:24 +#: flatcamEditors/FlatCAMGeoEditor.py:618 +#: flatcamEditors/FlatCAMGeoEditor.py:679 +#: flatcamEditors/FlatCAMGrbEditor.py:4510 +#: flatcamEditors/FlatCAMGrbEditor.py:4572 flatcamTools/ToolTransform.py:24 #: flatcamTools/ToolTransform.py:82 msgid "Rotate" msgstr "Rotaţie" -#: flatcamEditors/FlatCAMGeoEditor.py:620 -#: flatcamEditors/FlatCAMGrbEditor.py:4367 flatcamTools/ToolTransform.py:25 +#: flatcamEditors/FlatCAMGeoEditor.py:619 +#: flatcamEditors/FlatCAMGrbEditor.py:4511 flatcamTools/ToolTransform.py:25 msgid "Skew/Shear" msgstr "Deformare" -#: flatcamEditors/FlatCAMGeoEditor.py:621 -#: flatcamEditors/FlatCAMGrbEditor.py:2313 -#: flatcamEditors/FlatCAMGrbEditor.py:4368 flatcamGUI/FlatCAMGUI.py:722 -#: flatcamGUI/FlatCAMGUI.py:1944 flatcamGUI/ObjectUI.py:100 +#: flatcamEditors/FlatCAMGeoEditor.py:620 +#: flatcamEditors/FlatCAMGrbEditor.py:2455 +#: flatcamEditors/FlatCAMGrbEditor.py:4512 flatcamGUI/FlatCAMGUI.py:723 +#: flatcamGUI/FlatCAMGUI.py:1949 flatcamGUI/ObjectUI.py:100 #: flatcamTools/ToolTransform.py:26 msgid "Scale" msgstr "Scalare" -#: flatcamEditors/FlatCAMGeoEditor.py:622 -#: flatcamEditors/FlatCAMGrbEditor.py:4369 flatcamTools/ToolTransform.py:27 +#: flatcamEditors/FlatCAMGeoEditor.py:621 +#: flatcamEditors/FlatCAMGrbEditor.py:4513 flatcamTools/ToolTransform.py:27 msgid "Mirror (Flip)" msgstr "Oglindire" -#: flatcamEditors/FlatCAMGeoEditor.py:623 -#: flatcamEditors/FlatCAMGrbEditor.py:4370 flatcamGUI/ObjectUI.py:127 +#: flatcamEditors/FlatCAMGeoEditor.py:622 +#: flatcamEditors/FlatCAMGrbEditor.py:4514 flatcamGUI/ObjectUI.py:127 #: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 #: flatcamTools/ToolTransform.py:28 msgid "Offset" msgstr "Ofset" -#: flatcamEditors/FlatCAMGeoEditor.py:634 -#: flatcamEditors/FlatCAMGrbEditor.py:4382 +#: flatcamEditors/FlatCAMGeoEditor.py:633 +#: flatcamEditors/FlatCAMGrbEditor.py:4526 #, python-format msgid "Editor %s" msgstr "Editor %s" -#: flatcamEditors/FlatCAMGeoEditor.py:668 -#: flatcamEditors/FlatCAMGrbEditor.py:4416 flatcamTools/ToolTransform.py:70 +#: flatcamEditors/FlatCAMGeoEditor.py:667 +#: flatcamEditors/FlatCAMGrbEditor.py:4560 flatcamTools/ToolTransform.py:70 msgid "" "Angle for Rotation action, in degrees.\n" "Float number between -360 and 359.\n" @@ -2392,8 +2392,8 @@ msgstr "" "Numerele pozitive inseamna o mișcare in sens ace ceasornic.\n" "Numerele negative inseamna o mișcare in sens invers ace ceasornic." -#: flatcamEditors/FlatCAMGeoEditor.py:682 -#: flatcamEditors/FlatCAMGrbEditor.py:4430 +#: flatcamEditors/FlatCAMGeoEditor.py:681 +#: flatcamEditors/FlatCAMGrbEditor.py:4574 msgid "" "Rotate the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2404,15 +2404,15 @@ msgstr "" "formei înconjurătoare care cuprinde\n" "toate formele selectate." -#: flatcamEditors/FlatCAMGeoEditor.py:705 -#: flatcamEditors/FlatCAMGrbEditor.py:4453 flatcamTools/ToolTransform.py:107 +#: flatcamEditors/FlatCAMGeoEditor.py:704 +#: flatcamEditors/FlatCAMGrbEditor.py:4597 flatcamTools/ToolTransform.py:107 msgid "Angle X:" msgstr "Unghi X:" -#: flatcamEditors/FlatCAMGeoEditor.py:707 -#: flatcamEditors/FlatCAMGeoEditor.py:725 -#: flatcamEditors/FlatCAMGrbEditor.py:4455 -#: flatcamEditors/FlatCAMGrbEditor.py:4473 flatcamTools/ToolTransform.py:109 +#: flatcamEditors/FlatCAMGeoEditor.py:706 +#: flatcamEditors/FlatCAMGeoEditor.py:724 +#: flatcamEditors/FlatCAMGrbEditor.py:4599 +#: flatcamEditors/FlatCAMGrbEditor.py:4617 flatcamTools/ToolTransform.py:109 #: flatcamTools/ToolTransform.py:127 msgid "" "Angle for Skew action, in degrees.\n" @@ -2421,15 +2421,15 @@ msgstr "" "Valoarea unghiului de Deformare, in grade.\n" "Ia valori Reale între -360 and 359 grade." -#: flatcamEditors/FlatCAMGeoEditor.py:716 -#: flatcamEditors/FlatCAMGrbEditor.py:4464 flatcamTools/ToolTransform.py:118 +#: flatcamEditors/FlatCAMGeoEditor.py:715 +#: flatcamEditors/FlatCAMGrbEditor.py:4608 flatcamTools/ToolTransform.py:118 msgid "Skew X" msgstr "Deformare X" -#: flatcamEditors/FlatCAMGeoEditor.py:718 -#: flatcamEditors/FlatCAMGeoEditor.py:736 -#: flatcamEditors/FlatCAMGrbEditor.py:4466 -#: flatcamEditors/FlatCAMGrbEditor.py:4484 +#: flatcamEditors/FlatCAMGeoEditor.py:717 +#: flatcamEditors/FlatCAMGeoEditor.py:735 +#: flatcamEditors/FlatCAMGrbEditor.py:4610 +#: flatcamEditors/FlatCAMGrbEditor.py:4628 msgid "" "Skew/shear the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2440,35 +2440,35 @@ msgstr "" "formei înconjurătoare care cuprinde\n" "toate formele selectate." -#: flatcamEditors/FlatCAMGeoEditor.py:723 -#: flatcamEditors/FlatCAMGrbEditor.py:4471 flatcamTools/ToolTransform.py:125 +#: flatcamEditors/FlatCAMGeoEditor.py:722 +#: flatcamEditors/FlatCAMGrbEditor.py:4615 flatcamTools/ToolTransform.py:125 msgid "Angle Y:" msgstr "Unghi Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:734 -#: flatcamEditors/FlatCAMGrbEditor.py:4482 flatcamTools/ToolTransform.py:136 +#: flatcamEditors/FlatCAMGeoEditor.py:733 +#: flatcamEditors/FlatCAMGrbEditor.py:4626 flatcamTools/ToolTransform.py:136 msgid "Skew Y" msgstr "Deformare Y" -#: flatcamEditors/FlatCAMGeoEditor.py:762 -#: flatcamEditors/FlatCAMGrbEditor.py:4510 flatcamTools/ToolTransform.py:164 +#: flatcamEditors/FlatCAMGeoEditor.py:761 +#: flatcamEditors/FlatCAMGrbEditor.py:4654 flatcamTools/ToolTransform.py:164 msgid "Factor X:" msgstr "Factor X:" -#: flatcamEditors/FlatCAMGeoEditor.py:764 -#: flatcamEditors/FlatCAMGrbEditor.py:4512 flatcamTools/ToolTransform.py:166 +#: flatcamEditors/FlatCAMGeoEditor.py:763 +#: flatcamEditors/FlatCAMGrbEditor.py:4656 flatcamTools/ToolTransform.py:166 msgid "Factor for Scale action over X axis." msgstr "Factor pentru scalarea pe axa X" -#: flatcamEditors/FlatCAMGeoEditor.py:772 -#: flatcamEditors/FlatCAMGrbEditor.py:4520 flatcamTools/ToolTransform.py:174 +#: flatcamEditors/FlatCAMGeoEditor.py:771 +#: flatcamEditors/FlatCAMGrbEditor.py:4664 flatcamTools/ToolTransform.py:174 msgid "Scale X" msgstr "Scalează X" -#: flatcamEditors/FlatCAMGeoEditor.py:774 -#: flatcamEditors/FlatCAMGeoEditor.py:791 -#: flatcamEditors/FlatCAMGrbEditor.py:4522 -#: flatcamEditors/FlatCAMGrbEditor.py:4539 +#: flatcamEditors/FlatCAMGeoEditor.py:773 +#: flatcamEditors/FlatCAMGeoEditor.py:790 +#: flatcamEditors/FlatCAMGrbEditor.py:4666 +#: flatcamEditors/FlatCAMGrbEditor.py:4683 msgid "" "Scale the selected shape(s).\n" "The point of reference depends on \n" @@ -2478,29 +2478,29 @@ msgstr "" "Punctul de referinţă depinde de \n" "starea checkbox-ului >Referința scalare<." -#: flatcamEditors/FlatCAMGeoEditor.py:779 -#: flatcamEditors/FlatCAMGrbEditor.py:4527 flatcamTools/ToolTransform.py:181 +#: flatcamEditors/FlatCAMGeoEditor.py:778 +#: flatcamEditors/FlatCAMGrbEditor.py:4671 flatcamTools/ToolTransform.py:181 msgid "Factor Y:" msgstr "Factor Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:781 -#: flatcamEditors/FlatCAMGrbEditor.py:4529 flatcamTools/ToolTransform.py:183 +#: flatcamEditors/FlatCAMGeoEditor.py:780 +#: flatcamEditors/FlatCAMGrbEditor.py:4673 flatcamTools/ToolTransform.py:183 msgid "Factor for Scale action over Y axis." msgstr "Factor pentru scalarea pe axa Y." -#: flatcamEditors/FlatCAMGeoEditor.py:789 -#: flatcamEditors/FlatCAMGrbEditor.py:4537 flatcamTools/ToolTransform.py:191 +#: flatcamEditors/FlatCAMGeoEditor.py:788 +#: flatcamEditors/FlatCAMGrbEditor.py:4681 flatcamTools/ToolTransform.py:191 msgid "Scale Y" msgstr "Scalează Y" -#: flatcamEditors/FlatCAMGeoEditor.py:798 -#: flatcamEditors/FlatCAMGrbEditor.py:4546 flatcamGUI/FlatCAMGUI.py:6270 +#: flatcamEditors/FlatCAMGeoEditor.py:797 +#: flatcamEditors/FlatCAMGrbEditor.py:4690 flatcamGUI/FlatCAMGUI.py:6277 #: flatcamTools/ToolTransform.py:200 msgid "Link" msgstr "Legatura" -#: flatcamEditors/FlatCAMGeoEditor.py:800 -#: flatcamEditors/FlatCAMGrbEditor.py:4548 +#: flatcamEditors/FlatCAMGeoEditor.py:799 +#: flatcamEditors/FlatCAMGrbEditor.py:4692 msgid "" "Scale the selected shape(s)\n" "using the Scale Factor X for both axis." @@ -2508,14 +2508,14 @@ msgstr "" "Scalează formele selectate\n" "folsoind factorul: Factor X pentru ambele axe." -#: flatcamEditors/FlatCAMGeoEditor.py:806 -#: flatcamEditors/FlatCAMGrbEditor.py:4554 flatcamGUI/FlatCAMGUI.py:6278 +#: flatcamEditors/FlatCAMGeoEditor.py:805 +#: flatcamEditors/FlatCAMGrbEditor.py:4698 flatcamGUI/FlatCAMGUI.py:6285 #: flatcamTools/ToolTransform.py:208 msgid "Scale Reference" msgstr "Referința scalare" -#: flatcamEditors/FlatCAMGeoEditor.py:808 -#: flatcamEditors/FlatCAMGrbEditor.py:4556 +#: flatcamEditors/FlatCAMGeoEditor.py:807 +#: flatcamEditors/FlatCAMGrbEditor.py:4700 msgid "" "Scale the selected shape(s)\n" "using the origin reference when checked,\n" @@ -2528,25 +2528,25 @@ msgstr "" "toate formele selectate când nu este\n" "bifat și este originea când este bifat." -#: flatcamEditors/FlatCAMGeoEditor.py:836 -#: flatcamEditors/FlatCAMGrbEditor.py:4585 flatcamTools/ToolTransform.py:238 +#: flatcamEditors/FlatCAMGeoEditor.py:835 +#: flatcamEditors/FlatCAMGrbEditor.py:4729 flatcamTools/ToolTransform.py:238 msgid "Value X:" msgstr "Valoare X:" -#: flatcamEditors/FlatCAMGeoEditor.py:838 -#: flatcamEditors/FlatCAMGrbEditor.py:4587 flatcamTools/ToolTransform.py:240 +#: flatcamEditors/FlatCAMGeoEditor.py:837 +#: flatcamEditors/FlatCAMGrbEditor.py:4731 flatcamTools/ToolTransform.py:240 msgid "Value for Offset action on X axis." msgstr "Valoare pentru deplasarea pe axa X." -#: flatcamEditors/FlatCAMGeoEditor.py:846 -#: flatcamEditors/FlatCAMGrbEditor.py:4595 flatcamTools/ToolTransform.py:248 +#: flatcamEditors/FlatCAMGeoEditor.py:845 +#: flatcamEditors/FlatCAMGrbEditor.py:4739 flatcamTools/ToolTransform.py:248 msgid "Offset X" msgstr "Ofset pe X" -#: flatcamEditors/FlatCAMGeoEditor.py:848 -#: flatcamEditors/FlatCAMGeoEditor.py:866 -#: flatcamEditors/FlatCAMGrbEditor.py:4597 -#: flatcamEditors/FlatCAMGrbEditor.py:4615 +#: flatcamEditors/FlatCAMGeoEditor.py:847 +#: flatcamEditors/FlatCAMGeoEditor.py:865 +#: flatcamEditors/FlatCAMGrbEditor.py:4741 +#: flatcamEditors/FlatCAMGrbEditor.py:4759 msgid "" "Offset the selected shape(s).\n" "The point of reference is the middle of\n" @@ -2557,30 +2557,30 @@ msgstr "" "formei înconjurătoare care cuprinde\n" "toate formele selectate.\n" -#: flatcamEditors/FlatCAMGeoEditor.py:854 -#: flatcamEditors/FlatCAMGrbEditor.py:4603 flatcamTools/ToolTransform.py:255 +#: flatcamEditors/FlatCAMGeoEditor.py:853 +#: flatcamEditors/FlatCAMGrbEditor.py:4747 flatcamTools/ToolTransform.py:255 msgid "Value Y:" msgstr "Valoare Y:" -#: flatcamEditors/FlatCAMGeoEditor.py:856 -#: flatcamEditors/FlatCAMGrbEditor.py:4605 flatcamTools/ToolTransform.py:257 +#: flatcamEditors/FlatCAMGeoEditor.py:855 +#: flatcamEditors/FlatCAMGrbEditor.py:4749 flatcamTools/ToolTransform.py:257 msgid "Value for Offset action on Y axis." msgstr "Valoare pentru deplasarea pe axa Y." -#: flatcamEditors/FlatCAMGeoEditor.py:864 -#: flatcamEditors/FlatCAMGrbEditor.py:4613 flatcamTools/ToolTransform.py:265 +#: flatcamEditors/FlatCAMGeoEditor.py:863 +#: flatcamEditors/FlatCAMGrbEditor.py:4757 flatcamTools/ToolTransform.py:265 msgid "Offset Y" msgstr "Ofset pe Y" -#: flatcamEditors/FlatCAMGeoEditor.py:895 -#: flatcamEditors/FlatCAMGrbEditor.py:4644 flatcamTools/ToolTransform.py:295 +#: flatcamEditors/FlatCAMGeoEditor.py:894 +#: flatcamEditors/FlatCAMGrbEditor.py:4788 flatcamTools/ToolTransform.py:295 msgid "Flip on X" msgstr "Oglindește pe X" -#: flatcamEditors/FlatCAMGeoEditor.py:897 -#: flatcamEditors/FlatCAMGeoEditor.py:905 -#: flatcamEditors/FlatCAMGrbEditor.py:4646 -#: flatcamEditors/FlatCAMGrbEditor.py:4654 +#: flatcamEditors/FlatCAMGeoEditor.py:896 +#: flatcamEditors/FlatCAMGeoEditor.py:904 +#: flatcamEditors/FlatCAMGrbEditor.py:4790 +#: flatcamEditors/FlatCAMGrbEditor.py:4798 msgid "" "Flip the selected shape(s) over the X axis.\n" "Does not create a new shape." @@ -2588,18 +2588,18 @@ msgstr "" "Oglindește formele selectate peste axa X\n" "Nu crează noi forme." -#: flatcamEditors/FlatCAMGeoEditor.py:903 -#: flatcamEditors/FlatCAMGrbEditor.py:4652 flatcamTools/ToolTransform.py:303 +#: flatcamEditors/FlatCAMGeoEditor.py:902 +#: flatcamEditors/FlatCAMGrbEditor.py:4796 flatcamTools/ToolTransform.py:303 msgid "Flip on Y" msgstr "Oglindește pe Y" -#: flatcamEditors/FlatCAMGeoEditor.py:912 -#: flatcamEditors/FlatCAMGrbEditor.py:4661 flatcamTools/ToolTransform.py:312 +#: flatcamEditors/FlatCAMGeoEditor.py:911 +#: flatcamEditors/FlatCAMGrbEditor.py:4805 flatcamTools/ToolTransform.py:312 msgid "Ref Pt" msgstr "Pt ref" -#: flatcamEditors/FlatCAMGeoEditor.py:914 -#: flatcamEditors/FlatCAMGrbEditor.py:4663 +#: flatcamEditors/FlatCAMGeoEditor.py:913 +#: flatcamEditors/FlatCAMGrbEditor.py:4807 msgid "" "Flip the selected shape(s)\n" "around the point in Point Entry Field.\n" @@ -2622,13 +2622,13 @@ msgstr "" "Alternativ se pot introduce manual in formatul (x, y). \n" "La final click pe >Oglindește pe X(Y)<." -#: flatcamEditors/FlatCAMGeoEditor.py:926 -#: flatcamEditors/FlatCAMGrbEditor.py:4675 flatcamTools/ToolTransform.py:325 +#: flatcamEditors/FlatCAMGeoEditor.py:925 +#: flatcamEditors/FlatCAMGrbEditor.py:4819 flatcamTools/ToolTransform.py:325 msgid "Point:" msgstr "Punct:" -#: flatcamEditors/FlatCAMGeoEditor.py:928 -#: flatcamEditors/FlatCAMGrbEditor.py:4677 +#: flatcamEditors/FlatCAMGeoEditor.py:927 +#: flatcamEditors/FlatCAMGrbEditor.py:4821 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" @@ -2638,8 +2638,8 @@ msgstr "" "Valoarea 'x' in (x, y) va fi folosita când se face oglindire pe X\n" "și valoarea 'y' in (x, y) va fi folosita când se face oglindire pe Y." -#: flatcamEditors/FlatCAMGeoEditor.py:940 -#: flatcamEditors/FlatCAMGrbEditor.py:4689 flatcamTools/ToolTransform.py:339 +#: flatcamEditors/FlatCAMGeoEditor.py:939 +#: flatcamEditors/FlatCAMGrbEditor.py:4833 flatcamTools/ToolTransform.py:339 msgid "" "The point coordinates can be captured by\n" "left click on canvas together with pressing\n" @@ -2650,393 +2650,393 @@ msgstr "" "tasta SHIFT.\n" "La final, apasa butonul >Adaugă< pt a le insera." -#: flatcamEditors/FlatCAMGeoEditor.py:1055 -#: flatcamEditors/FlatCAMGrbEditor.py:4814 +#: flatcamEditors/FlatCAMGeoEditor.py:1054 +#: flatcamEditors/FlatCAMGrbEditor.py:4958 msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected." msgstr "[WARNING_NOTCL] Transformare anulata. Nici-o forma nu este selectată." -#: flatcamEditors/FlatCAMGeoEditor.py:1076 -#: flatcamEditors/FlatCAMGrbEditor.py:4834 flatcamTools/ToolTransform.py:468 +#: flatcamEditors/FlatCAMGeoEditor.py:1075 +#: flatcamEditors/FlatCAMGrbEditor.py:4978 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:1113 -#: flatcamEditors/FlatCAMGrbEditor.py:4877 flatcamTools/ToolTransform.py:502 +#: flatcamEditors/FlatCAMGeoEditor.py:1112 +#: flatcamEditors/FlatCAMGrbEditor.py:5021 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:1134 -#: flatcamEditors/FlatCAMGrbEditor.py:4904 flatcamTools/ToolTransform.py:520 +#: flatcamEditors/FlatCAMGeoEditor.py:1133 +#: flatcamEditors/FlatCAMGrbEditor.py:5048 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:1155 -#: flatcamEditors/FlatCAMGrbEditor.py:4931 flatcamTools/ToolTransform.py:538 +#: flatcamEditors/FlatCAMGeoEditor.py:1154 +#: flatcamEditors/FlatCAMGrbEditor.py:5075 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:1192 -#: flatcamEditors/FlatCAMGrbEditor.py:4972 flatcamTools/ToolTransform.py:572 +#: flatcamEditors/FlatCAMGeoEditor.py:1191 +#: flatcamEditors/FlatCAMGrbEditor.py:5116 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:1224 -#: flatcamEditors/FlatCAMGrbEditor.py:5010 flatcamTools/ToolTransform.py:601 +#: flatcamEditors/FlatCAMGeoEditor.py:1223 +#: flatcamEditors/FlatCAMGrbEditor.py:5154 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:1245 -#: flatcamEditors/FlatCAMGrbEditor.py:5036 flatcamTools/ToolTransform.py:619 +#: flatcamEditors/FlatCAMGeoEditor.py:1244 +#: flatcamEditors/FlatCAMGrbEditor.py:5180 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:1263 -#: flatcamEditors/FlatCAMGrbEditor.py:5059 +#: flatcamEditors/FlatCAMGeoEditor.py:1262 +#: flatcamEditors/FlatCAMGrbEditor.py:5203 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:1266 -#: flatcamEditors/FlatCAMGrbEditor.py:5062 flatcamTools/ToolTransform.py:640 +#: flatcamEditors/FlatCAMGeoEditor.py:1265 +#: flatcamEditors/FlatCAMGrbEditor.py:5206 flatcamTools/ToolTransform.py:640 msgid "Appying Rotate" msgstr "Execuţie Rotaţie" -#: flatcamEditors/FlatCAMGeoEditor.py:1294 -#: flatcamEditors/FlatCAMGrbEditor.py:5093 +#: flatcamEditors/FlatCAMGeoEditor.py:1293 +#: flatcamEditors/FlatCAMGrbEditor.py:5237 msgid "[success] Done. Rotate completed." msgstr "[success] Executat. Rotaţie finalizata." -#: flatcamEditors/FlatCAMGeoEditor.py:1310 -#: flatcamEditors/FlatCAMGrbEditor.py:5112 +#: flatcamEditors/FlatCAMGeoEditor.py:1309 +#: flatcamEditors/FlatCAMGrbEditor.py:5256 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:1313 -#: flatcamEditors/FlatCAMGrbEditor.py:5115 flatcamTools/ToolTransform.py:691 +#: flatcamEditors/FlatCAMGeoEditor.py:1312 +#: flatcamEditors/FlatCAMGrbEditor.py:5259 flatcamTools/ToolTransform.py:691 msgid "Applying Flip" msgstr "Execuţie Oglindire" -#: flatcamEditors/FlatCAMGeoEditor.py:1343 -#: flatcamEditors/FlatCAMGrbEditor.py:5152 flatcamTools/ToolTransform.py:733 +#: flatcamEditors/FlatCAMGeoEditor.py:1342 +#: flatcamEditors/FlatCAMGrbEditor.py:5296 flatcamTools/ToolTransform.py:733 msgid "[success] Flip on the Y axis done ..." msgstr "Oglindirea pe axa X efectuata ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1346 -#: flatcamEditors/FlatCAMGrbEditor.py:5160 flatcamTools/ToolTransform.py:742 +#: flatcamEditors/FlatCAMGeoEditor.py:1345 +#: flatcamEditors/FlatCAMGrbEditor.py:5304 flatcamTools/ToolTransform.py:742 msgid "[success] Flip on the X axis done ..." msgstr "Oglindirea pe axa Y efectuata ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1365 -#: flatcamEditors/FlatCAMGrbEditor.py:5180 +#: flatcamEditors/FlatCAMGeoEditor.py:1364 +#: flatcamEditors/FlatCAMGrbEditor.py:5324 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:1368 -#: flatcamEditors/FlatCAMGrbEditor.py:5183 flatcamTools/ToolTransform.py:760 +#: flatcamEditors/FlatCAMGeoEditor.py:1367 +#: flatcamEditors/FlatCAMGrbEditor.py:5327 flatcamTools/ToolTransform.py:760 msgid "Applying Skew" msgstr "Execuţie Deformare" -#: flatcamEditors/FlatCAMGeoEditor.py:1393 -#: flatcamEditors/FlatCAMGrbEditor.py:5216 flatcamTools/ToolTransform.py:791 +#: flatcamEditors/FlatCAMGeoEditor.py:1392 +#: flatcamEditors/FlatCAMGrbEditor.py:5360 flatcamTools/ToolTransform.py:791 #, python-format msgid "[success] Skew on the %s axis done ..." msgstr "[success] Deformarea pe axa %s executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1397 -#: flatcamEditors/FlatCAMGrbEditor.py:5220 flatcamTools/ToolTransform.py:795 +#: flatcamEditors/FlatCAMGeoEditor.py:1396 +#: flatcamEditors/FlatCAMGrbEditor.py:5364 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:1408 -#: flatcamEditors/FlatCAMGrbEditor.py:5239 +#: flatcamEditors/FlatCAMGeoEditor.py:1407 +#: flatcamEditors/FlatCAMGrbEditor.py:5383 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:1411 -#: flatcamEditors/FlatCAMGrbEditor.py:5242 flatcamTools/ToolTransform.py:809 +#: flatcamEditors/FlatCAMGeoEditor.py:1410 +#: flatcamEditors/FlatCAMGrbEditor.py:5386 flatcamTools/ToolTransform.py:809 msgid "Applying Scale" msgstr "Execuţie Scalare" -#: flatcamEditors/FlatCAMGeoEditor.py:1444 -#: flatcamEditors/FlatCAMGrbEditor.py:5278 flatcamTools/ToolTransform.py:848 +#: flatcamEditors/FlatCAMGeoEditor.py:1443 +#: flatcamEditors/FlatCAMGrbEditor.py:5422 flatcamTools/ToolTransform.py:848 #, python-format msgid "[success] Scale on the %s axis done ..." msgstr "[success] Scalarea pe axa %s executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1447 -#: flatcamEditors/FlatCAMGrbEditor.py:5281 flatcamTools/ToolTransform.py:851 +#: flatcamEditors/FlatCAMGeoEditor.py:1446 +#: flatcamEditors/FlatCAMGrbEditor.py:5425 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:1456 -#: flatcamEditors/FlatCAMGrbEditor.py:5294 +#: flatcamEditors/FlatCAMGeoEditor.py:1455 +#: flatcamEditors/FlatCAMGrbEditor.py:5438 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:1459 -#: flatcamEditors/FlatCAMGrbEditor.py:5297 flatcamTools/ToolTransform.py:861 +#: flatcamEditors/FlatCAMGeoEditor.py:1458 +#: flatcamEditors/FlatCAMGrbEditor.py:5441 flatcamTools/ToolTransform.py:861 msgid "Applying Offset" msgstr "Execuţie Ofset" -#: flatcamEditors/FlatCAMGeoEditor.py:1483 -#: flatcamEditors/FlatCAMGrbEditor.py:5318 flatcamTools/ToolTransform.py:880 +#: flatcamEditors/FlatCAMGeoEditor.py:1469 +#: flatcamEditors/FlatCAMGrbEditor.py:5462 flatcamTools/ToolTransform.py:880 #, python-format msgid "[success] Offset on the %s axis done ..." msgstr "[success] Deplasarea pe axa %s executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1487 -#: flatcamEditors/FlatCAMGrbEditor.py:5322 flatcamTools/ToolTransform.py:884 +#: flatcamEditors/FlatCAMGeoEditor.py:1473 +#: flatcamEditors/FlatCAMGrbEditor.py:5466 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:1491 -#: flatcamEditors/FlatCAMGrbEditor.py:5326 +#: flatcamEditors/FlatCAMGeoEditor.py:1477 +#: flatcamEditors/FlatCAMGrbEditor.py:5470 msgid "Rotate ..." msgstr "Rotaţie ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1492 -#: flatcamEditors/FlatCAMGeoEditor.py:1549 -#: flatcamEditors/FlatCAMGeoEditor.py:1566 -#: flatcamEditors/FlatCAMGrbEditor.py:5327 -#: flatcamEditors/FlatCAMGrbEditor.py:5384 -#: flatcamEditors/FlatCAMGrbEditor.py:5401 +#: flatcamEditors/FlatCAMGeoEditor.py:1478 +#: flatcamEditors/FlatCAMGeoEditor.py:1535 +#: flatcamEditors/FlatCAMGeoEditor.py:1552 +#: flatcamEditors/FlatCAMGrbEditor.py:5471 +#: flatcamEditors/FlatCAMGrbEditor.py:5528 +#: flatcamEditors/FlatCAMGrbEditor.py:5545 msgid "Enter an Angle Value (degrees):" msgstr "Introdu o valoare in grade pt Unghi:" -#: flatcamEditors/FlatCAMGeoEditor.py:1501 -#: flatcamEditors/FlatCAMGrbEditor.py:5336 +#: flatcamEditors/FlatCAMGeoEditor.py:1487 +#: flatcamEditors/FlatCAMGrbEditor.py:5480 msgid "[success] Geometry shape rotate done..." msgstr "[success] Rotatia formei geometrice executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1506 -#: flatcamEditors/FlatCAMGrbEditor.py:5341 +#: flatcamEditors/FlatCAMGeoEditor.py:1492 +#: flatcamEditors/FlatCAMGrbEditor.py:5485 msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..." msgstr "[WARNING_NOTCL] Rotatia formei geometrice anulata ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1512 -#: flatcamEditors/FlatCAMGrbEditor.py:5347 +#: flatcamEditors/FlatCAMGeoEditor.py:1498 +#: flatcamEditors/FlatCAMGrbEditor.py:5491 msgid "Offset on X axis ..." msgstr "Ofset pe axa X ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1513 -#: flatcamEditors/FlatCAMGeoEditor.py:1532 -#: flatcamEditors/FlatCAMGrbEditor.py:5348 -#: flatcamEditors/FlatCAMGrbEditor.py:5367 +#: flatcamEditors/FlatCAMGeoEditor.py:1499 +#: flatcamEditors/FlatCAMGeoEditor.py:1518 +#: flatcamEditors/FlatCAMGrbEditor.py:5492 +#: flatcamEditors/FlatCAMGrbEditor.py:5511 #, python-format msgid "Enter a distance Value (%s):" msgstr "Introdu of valoare pt Distanta (%s):" -#: flatcamEditors/FlatCAMGeoEditor.py:1522 -#: flatcamEditors/FlatCAMGrbEditor.py:5357 +#: flatcamEditors/FlatCAMGeoEditor.py:1508 +#: flatcamEditors/FlatCAMGrbEditor.py:5501 msgid "[success] Geometry shape offset on X axis done..." msgstr "[success] Deplasarea formei geometrice pe axa X executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1526 -#: flatcamEditors/FlatCAMGrbEditor.py:5361 +#: flatcamEditors/FlatCAMGeoEditor.py:1512 +#: flatcamEditors/FlatCAMGrbEditor.py:5505 msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..." msgstr "[WARNING_NOTCL] Deplasarea formei geometrice pe axa X anulata ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1531 -#: flatcamEditors/FlatCAMGrbEditor.py:5366 +#: flatcamEditors/FlatCAMGeoEditor.py:1517 +#: flatcamEditors/FlatCAMGrbEditor.py:5510 msgid "Offset on Y axis ..." msgstr "Ofset pe axa Y ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1541 -#: flatcamEditors/FlatCAMGrbEditor.py:5376 +#: flatcamEditors/FlatCAMGeoEditor.py:1527 +#: flatcamEditors/FlatCAMGrbEditor.py:5520 msgid "[success] Geometry shape offset on Y axis done..." msgstr "[success] Deplasarea formei geometrice pe axa Y executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1545 -#: flatcamEditors/FlatCAMGrbEditor.py:5380 +#: flatcamEditors/FlatCAMGeoEditor.py:1531 +#: flatcamEditors/FlatCAMGrbEditor.py:5524 msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..." msgstr "[WARNING_NOTCL] Deplasarea formei geometrice pe axa Y anulata ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1548 -#: flatcamEditors/FlatCAMGrbEditor.py:5383 +#: flatcamEditors/FlatCAMGeoEditor.py:1534 +#: flatcamEditors/FlatCAMGrbEditor.py:5527 msgid "Skew on X axis ..." msgstr "Deformare pe axa X ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1558 -#: flatcamEditors/FlatCAMGrbEditor.py:5393 +#: flatcamEditors/FlatCAMGeoEditor.py:1544 +#: flatcamEditors/FlatCAMGrbEditor.py:5537 msgid "[success] Geometry shape skew on X axis done..." msgstr "[success] Deformarea formei geometrice pe axa X executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1562 -#: flatcamEditors/FlatCAMGrbEditor.py:5397 +#: flatcamEditors/FlatCAMGeoEditor.py:1548 +#: flatcamEditors/FlatCAMGrbEditor.py:5541 msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..." msgstr "[WARNING_NOTCL] Deformarea formei geometrice pe axa X anulata ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1565 -#: flatcamEditors/FlatCAMGrbEditor.py:5400 +#: flatcamEditors/FlatCAMGeoEditor.py:1551 +#: flatcamEditors/FlatCAMGrbEditor.py:5544 msgid "Skew on Y axis ..." msgstr "Deformare pe axa Y ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1575 -#: flatcamEditors/FlatCAMGrbEditor.py:5410 +#: flatcamEditors/FlatCAMGeoEditor.py:1561 +#: flatcamEditors/FlatCAMGrbEditor.py:5554 msgid "[success] Geometry shape skew on Y axis done..." msgstr "[success] Deformarea formei geometrice pe axa Y executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1579 -#: flatcamEditors/FlatCAMGrbEditor.py:5414 +#: flatcamEditors/FlatCAMGeoEditor.py:1565 +#: flatcamEditors/FlatCAMGrbEditor.py:5558 msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..." msgstr "[success] Deformarea formei geometrice pe axa Y executată ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1943 -#: flatcamEditors/FlatCAMGeoEditor.py:1994 -#: flatcamEditors/FlatCAMGrbEditor.py:1351 -#: flatcamEditors/FlatCAMGrbEditor.py:1420 +#: flatcamEditors/FlatCAMGeoEditor.py:1929 +#: flatcamEditors/FlatCAMGeoEditor.py:1980 +#: flatcamEditors/FlatCAMGrbEditor.py:1354 +#: flatcamEditors/FlatCAMGrbEditor.py:1423 msgid "Click on Center point ..." msgstr "Click pe punctul de Centru ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1950 -#: flatcamEditors/FlatCAMGrbEditor.py:1359 +#: flatcamEditors/FlatCAMGeoEditor.py:1936 +#: flatcamEditors/FlatCAMGrbEditor.py:1362 msgid "Click on Perimeter point to complete ..." msgstr "Click pe un punct aflat pe Circumferintă pentru terminare ..." -#: flatcamEditors/FlatCAMGeoEditor.py:1979 +#: flatcamEditors/FlatCAMGeoEditor.py:1965 msgid "[success] Done. Adding Circle completed." -msgstr "[success] Executat. Adaugarea unei forme Cerc terminata." +msgstr "[success] Executat. Adăugarea unei forme Cerc terminată." -#: flatcamEditors/FlatCAMGeoEditor.py:2014 -#: flatcamEditors/FlatCAMGrbEditor.py:1445 +#: flatcamEditors/FlatCAMGeoEditor.py:2000 +#: flatcamEditors/FlatCAMGrbEditor.py:1448 msgid "Click on Start point ..." msgstr "Click pe punctul de Start ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2016 -#: flatcamEditors/FlatCAMGrbEditor.py:1447 +#: flatcamEditors/FlatCAMGeoEditor.py:2002 +#: flatcamEditors/FlatCAMGrbEditor.py:1450 msgid "Click on Point3 ..." msgstr "Click pe Punctul3 ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2018 -#: flatcamEditors/FlatCAMGrbEditor.py:1449 +#: flatcamEditors/FlatCAMGeoEditor.py:2004 +#: flatcamEditors/FlatCAMGrbEditor.py:1452 msgid "Click on Stop point ..." msgstr "Click pe punctulde Stop ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2023 -#: flatcamEditors/FlatCAMGrbEditor.py:1454 +#: flatcamEditors/FlatCAMGeoEditor.py:2009 +#: flatcamEditors/FlatCAMGrbEditor.py:1457 msgid "Click on Stop point to complete ..." msgstr "Click pe punctul de Stop pentru terminare ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2025 -#: flatcamEditors/FlatCAMGrbEditor.py:1456 +#: flatcamEditors/FlatCAMGeoEditor.py:2011 +#: flatcamEditors/FlatCAMGrbEditor.py:1459 msgid "Click on Point2 to complete ..." msgstr "Click pe Punctul2 pentru terminare ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2027 -#: flatcamEditors/FlatCAMGrbEditor.py:1458 +#: flatcamEditors/FlatCAMGeoEditor.py:2013 +#: flatcamEditors/FlatCAMGrbEditor.py:1461 msgid "Click on Center point to complete ..." msgstr "Click pe punctul de Centru pentru terminare ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2039 -#: flatcamEditors/FlatCAMGrbEditor.py:1470 +#: flatcamEditors/FlatCAMGeoEditor.py:2025 +#: flatcamEditors/FlatCAMGrbEditor.py:1473 #, python-format msgid "Direction: %s" msgstr "Direcţie: %s" -#: flatcamEditors/FlatCAMGeoEditor.py:2049 -#: flatcamEditors/FlatCAMGrbEditor.py:1480 +#: flatcamEditors/FlatCAMGeoEditor.py:2035 +#: flatcamEditors/FlatCAMGrbEditor.py:1483 msgid "Mode: Start -> Stop -> Center. Click on Start point ..." msgstr "Mod: Start -> Stop -> Centru. Click pe punctul de Start ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2052 -#: flatcamEditors/FlatCAMGrbEditor.py:1483 +#: flatcamEditors/FlatCAMGeoEditor.py:2038 +#: flatcamEditors/FlatCAMGrbEditor.py:1486 msgid "Mode: Point1 -> Point3 -> Point2. Click on Point1 ..." msgstr "Mod: Point1 -> Point3 -> Point2. Click pe Punctul1 ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2055 -#: flatcamEditors/FlatCAMGrbEditor.py:1486 +#: flatcamEditors/FlatCAMGeoEditor.py:2041 +#: flatcamEditors/FlatCAMGrbEditor.py:1489 msgid "Mode: Center -> Start -> Stop. Click on Center point ..." msgstr "Mod: Center -> Start -> Stop. Click pe punctul de Centru ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2193 +#: flatcamEditors/FlatCAMGeoEditor.py:2179 msgid "[success] Done. Arc completed." -msgstr "[success] Executat. Adaugarea unei forme Arc terminata." +msgstr "[success] Executat. Adăugarea unei forme Arc terminată." -#: flatcamEditors/FlatCAMGeoEditor.py:2212 -#: flatcamEditors/FlatCAMGeoEditor.py:2265 -#: flatcamEditors/FlatCAMGeoEditor.py:2640 +#: flatcamEditors/FlatCAMGeoEditor.py:2198 +#: flatcamEditors/FlatCAMGeoEditor.py:2251 +#: flatcamEditors/FlatCAMGeoEditor.py:2626 msgid "Click on 1st corner ..." msgstr "Click pe primul colt ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2218 +#: flatcamEditors/FlatCAMGeoEditor.py:2204 msgid "Click on opposite corner to complete ..." msgstr "Click pe punctul opus pentru terminare ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2246 +#: flatcamEditors/FlatCAMGeoEditor.py:2232 msgid "[success] Done. Rectangle completed." msgstr "[success] Executat. Rotaţie finalizata." -#: flatcamEditors/FlatCAMGeoEditor.py:2272 +#: flatcamEditors/FlatCAMGeoEditor.py:2258 msgid "Click on next Point or click right mouse button to complete ..." msgstr "" "Click pe punctul următor sau click buton dreapta al mousului pentru " "terminare ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2300 +#: flatcamEditors/FlatCAMGeoEditor.py:2286 msgid "[success] Done. Polygon completed." -msgstr "[success] Executat. Adaugarea unei forme Poligon terminata." +msgstr "[success] Executat. Adăugarea unei forme Poligon terminată." -#: flatcamEditors/FlatCAMGeoEditor.py:2310 -#: flatcamEditors/FlatCAMGeoEditor.py:2356 -#: flatcamEditors/FlatCAMGrbEditor.py:1055 -#: flatcamEditors/FlatCAMGrbEditor.py:1249 +#: flatcamEditors/FlatCAMGeoEditor.py:2296 +#: flatcamEditors/FlatCAMGeoEditor.py:2342 +#: flatcamEditors/FlatCAMGrbEditor.py:1058 +#: flatcamEditors/FlatCAMGrbEditor.py:1252 msgid "Backtracked one point ..." msgstr "Revenit la penultimul Punct ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2338 +#: flatcamEditors/FlatCAMGeoEditor.py:2324 msgid "[success] Done. Path completed." -msgstr "[success] Executata. Adaugarea unei forme tip Cale terminata." +msgstr "[success] Executata. Adăugarea unei forme tip Cale terminată." -#: flatcamEditors/FlatCAMGeoEditor.py:2461 +#: flatcamEditors/FlatCAMGeoEditor.py:2447 msgid "[WARNING_NOTCL] MOVE: No shape selected. Select a shape to move ..." msgstr "" "[WARNING_NOTCL] MUTARE: Nici-o forma nu este selectată. Selectează o forma " "pentru a putea face deplasare!" -#: flatcamEditors/FlatCAMGeoEditor.py:2463 -#: flatcamEditors/FlatCAMGeoEditor.py:2475 +#: flatcamEditors/FlatCAMGeoEditor.py:2449 +#: flatcamEditors/FlatCAMGeoEditor.py:2461 msgid " MOVE: Click on reference point ..." msgstr "MUTARE: Click pe punctul de referinţă ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2466 +#: flatcamEditors/FlatCAMGeoEditor.py:2452 msgid " Click on destination point ..." msgstr " Click pe punctul de Destinaţie ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2500 +#: flatcamEditors/FlatCAMGeoEditor.py:2486 msgid "[success] Done. Geometry(s) Move completed." -msgstr "[success] Executat. Mutarea Geometriilor terminata." +msgstr "[success] Executat. Mutarea Geometriilor terminată." -#: flatcamEditors/FlatCAMGeoEditor.py:2620 +#: flatcamEditors/FlatCAMGeoEditor.py:2606 msgid "[success] Done. Geometry(s) Copy completed." -msgstr "[success] Executat. Copierea Geometriilor terminata." +msgstr "[success] Executat. Copierea Geometriilor terminată." -#: flatcamEditors/FlatCAMGeoEditor.py:2654 +#: flatcamEditors/FlatCAMGeoEditor.py:2640 #, python-format msgid "" "[ERROR]Font not supported. Only Regular, Bold, Italic and BoldItalic are " @@ -3045,65 +3045,87 @@ msgstr "" "[ERROR] Fontul nu este compatibil. Doar cele tip: Regular, Bold, Italic și " "BoldItalic sunt acceptate. Eroarea:: %s" -#: flatcamEditors/FlatCAMGeoEditor.py:2664 +#: flatcamEditors/FlatCAMGeoEditor.py:2650 msgid "[success] Done. Adding Text completed." -msgstr "[success] Executat. Adaugarea de Text terminata." +msgstr "[success] Executat. Adăugarea de Text terminată." -#: flatcamEditors/FlatCAMGeoEditor.py:2692 +#: flatcamEditors/FlatCAMGeoEditor.py:2678 msgid "Create buffer geometry ..." msgstr "Crează o geometrie de tipe Bufer ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2703 -#: flatcamEditors/FlatCAMGeoEditor.py:2729 -#: flatcamEditors/FlatCAMGeoEditor.py:2755 +#: flatcamEditors/FlatCAMGeoEditor.py:2689 +#: flatcamEditors/FlatCAMGeoEditor.py:2715 +#: flatcamEditors/FlatCAMGeoEditor.py:2741 msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected." msgstr "" -"[WARNING_NOTCL] Crearea de geometrie Bufer anulata. Nici-o forma geometrică " +"[WARNING_NOTCL] Crearea de geometrie Bufer anulată. Nici-o forma geometrică " "nu este selectată." -#: flatcamEditors/FlatCAMGeoEditor.py:2725 -#: flatcamEditors/FlatCAMGrbEditor.py:4276 +#: flatcamEditors/FlatCAMGeoEditor.py:2711 +#: flatcamEditors/FlatCAMGrbEditor.py:4420 msgid "[success] Done. Buffer Tool completed." -msgstr "[success] Executat. Unealta Bufer terminat." +msgstr "[success] Executat. Unealta Bufer terminată." -#: flatcamEditors/FlatCAMGeoEditor.py:2751 +#: flatcamEditors/FlatCAMGeoEditor.py:2737 msgid "[success] Done. Buffer Int Tool completed." -msgstr "[success] Executat. Unealta Bufer Intern terminat." +msgstr "[success] Executat. Unealta Bufer Intern terminată." -#: flatcamEditors/FlatCAMGeoEditor.py:2777 +#: flatcamEditors/FlatCAMGeoEditor.py:2763 msgid "[success] Done. Buffer Ext Tool completed." -msgstr "[success] Executat. Unealta Bufer Extern terminat." +msgstr "[success] Executat. Unealta Bufer Extern terminată." -#: flatcamEditors/FlatCAMGeoEditor.py:2810 +#: flatcamEditors/FlatCAMGeoEditor.py:2798 +#: flatcamEditors/FlatCAMGrbEditor.py:1969 +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 +msgid "Click to pick-up the erase shape..." +msgstr "Click pentru a activa forma de stergere..." + +#: flatcamEditors/FlatCAMGeoEditor.py:2829 +#: flatcamEditors/FlatCAMGrbEditor.py:2028 +msgid "Click to erase ..." +msgstr "Click pt a sterge ..." + +#: flatcamEditors/FlatCAMGeoEditor.py:2858 +#: flatcamEditors/FlatCAMGrbEditor.py:2059 +msgid "[success] Done. Eraser tool action completed." +msgstr "[success] Executat. Unealta Stergere s-a terminat." + +#: flatcamEditors/FlatCAMGeoEditor.py:2901 msgid "Create Paint geometry ..." msgstr "Crează o geometrie Paint ..." -#: flatcamEditors/FlatCAMGeoEditor.py:2824 -#: flatcamEditors/FlatCAMGrbEditor.py:2059 +#: flatcamEditors/FlatCAMGeoEditor.py:2915 +#: flatcamEditors/FlatCAMGrbEditor.py:2201 msgid "Shape transformations ..." msgstr "Transformări de forme geometrice ..." -#: flatcamEditors/FlatCAMGeoEditor.py:3327 +#: flatcamEditors/FlatCAMGeoEditor.py:3419 #, python-brace-format msgid "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" msgstr "" "[WARNING] Se editeaza un obiect tip Geometrie MultiGeo , unealta: {tool} cu " "diametrul: {dia}" -#: flatcamEditors/FlatCAMGeoEditor.py:3703 +#: flatcamEditors/FlatCAMGeoEditor.py:3796 msgid "[WARNING_NOTCL] Copy cancelled. No shape selected." msgstr "" "[WARNING_NOTCL] Copiere anulata. Nici-o forma geometrică nu este selectată." -#: flatcamEditors/FlatCAMGeoEditor.py:3710 flatcamGUI/FlatCAMGUI.py:2725 -#: flatcamGUI/FlatCAMGUI.py:2771 flatcamGUI/FlatCAMGUI.py:2789 -#: flatcamGUI/FlatCAMGUI.py:2920 flatcamGUI/FlatCAMGUI.py:2932 -#: flatcamGUI/FlatCAMGUI.py:2966 +#: 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 msgid "Click on target point." msgstr "Click pe punctul tinta." -#: flatcamEditors/FlatCAMGeoEditor.py:3953 -#: flatcamEditors/FlatCAMGeoEditor.py:3987 +#: flatcamEditors/FlatCAMGeoEditor.py:4047 +#: flatcamEditors/FlatCAMGeoEditor.py:4082 msgid "" "[WARNING_NOTCL] A selection of at least 2 geo items is required to do " "Intersection." @@ -3111,9 +3133,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:4071 -#: flatcamEditors/FlatCAMGeoEditor.py:4108 -#: flatcamEditors/FlatCAMGeoEditor.py:4184 +#: flatcamEditors/FlatCAMGeoEditor.py:4166 +#: flatcamEditors/FlatCAMGeoEditor.py:4204 +#: flatcamEditors/FlatCAMGeoEditor.py:4280 msgid "" "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to " "generate an 'inside' shape" @@ -3121,57 +3143,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:4079 -#: flatcamEditors/FlatCAMGeoEditor.py:4117 -#: flatcamEditors/FlatCAMGeoEditor.py:4192 +#: flatcamEditors/FlatCAMGeoEditor.py:4175 +#: flatcamEditors/FlatCAMGeoEditor.py:4213 +#: flatcamEditors/FlatCAMGeoEditor.py:4288 msgid "[WARNING_NOTCL] Nothing selected for buffering." msgstr "" "[WARNING_NOTCL] Nici-o forma geometrică nu este selectată pentru a face " "Bufer." -#: flatcamEditors/FlatCAMGeoEditor.py:4083 -#: flatcamEditors/FlatCAMGeoEditor.py:4121 -#: flatcamEditors/FlatCAMGeoEditor.py:4196 +#: flatcamEditors/FlatCAMGeoEditor.py:4179 +#: flatcamEditors/FlatCAMGeoEditor.py:4217 +#: flatcamEditors/FlatCAMGeoEditor.py:4292 msgid "[WARNING_NOTCL] Invalid distance for buffering." msgstr "[WARNING_NOTCL] Distanta invalida pentru a face Bufer." -#: flatcamEditors/FlatCAMGeoEditor.py:4093 -#: flatcamEditors/FlatCAMGeoEditor.py:4205 +#: flatcamEditors/FlatCAMGeoEditor.py:4189 +#: flatcamEditors/FlatCAMGeoEditor.py:4301 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:4101 +#: flatcamEditors/FlatCAMGeoEditor.py:4197 msgid "[success] Full buffer geometry created." msgstr "[success] Geometrie tip Bufer Complet creată." -#: flatcamEditors/FlatCAMGeoEditor.py:4131 +#: flatcamEditors/FlatCAMGeoEditor.py:4227 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:4146 +#: flatcamEditors/FlatCAMGeoEditor.py:4242 msgid "[success] Interior buffer geometry created." msgstr "[success] Geometrie Bufer interior creată." -#: flatcamEditors/FlatCAMGeoEditor.py:4217 +#: flatcamEditors/FlatCAMGeoEditor.py:4313 msgid "[success] Exterior buffer geometry created." msgstr "[success] Geometrie Bufer Exterior creată." -#: flatcamEditors/FlatCAMGeoEditor.py:4281 +#: flatcamEditors/FlatCAMGeoEditor.py:4377 msgid "[WARNING_NOTCL] Nothing selected for painting." msgstr "" "[WARNING_NOTCL] Nici-o forma geometrică nu este selectată pentru Paint." -#: flatcamEditors/FlatCAMGeoEditor.py:4287 +#: flatcamEditors/FlatCAMGeoEditor.py:4383 msgid "[WARNING] Invalid value for {}" msgstr "[WARNING] Valoare invalida pentru {}" -#: flatcamEditors/FlatCAMGeoEditor.py:4293 +#: flatcamEditors/FlatCAMGeoEditor.py:4389 msgid "" "[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 " "(100%)." @@ -3179,7 +3201,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:4352 +#: flatcamEditors/FlatCAMGeoEditor.py:4448 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -3190,7 +3212,7 @@ msgstr "" "Or o metoda diferita de Paint\n" "%s" -#: flatcamEditors/FlatCAMGeoEditor.py:4363 +#: flatcamEditors/FlatCAMGeoEditor.py:4459 msgid "[success] Paint done." msgstr "[success] Paint executat." @@ -3213,7 +3235,7 @@ msgid "Click to place ..." msgstr "Click pt a plasa ..." #: flatcamEditors/FlatCAMGrbEditor.py:357 -#: flatcamEditors/FlatCAMGrbEditor.py:660 +#: flatcamEditors/FlatCAMGrbEditor.py:662 msgid "" "Incompatible aperture type. Select an aperture with type 'C', 'R' or 'O'." msgstr "" @@ -3235,23 +3257,23 @@ msgstr "" msgid "Click on the Pad Circular Array Start position" msgstr "Click pe punctul de Start al ariei de paduri" -#: flatcamEditors/FlatCAMGrbEditor.py:685 +#: flatcamEditors/FlatCAMGrbEditor.py:687 msgid "[WARNING_NOTCL] Too many Pads for the selected spacing angle." msgstr "[WARNING_NOTCL] Prea multe paduri pentru unghiul selectat." -#: flatcamEditors/FlatCAMGrbEditor.py:707 +#: flatcamEditors/FlatCAMGrbEditor.py:709 msgid "[success] Done. Pad Array added." msgstr "[success] Executat. Aria de paduri a fost adăugată." -#: flatcamEditors/FlatCAMGrbEditor.py:728 +#: flatcamEditors/FlatCAMGrbEditor.py:730 msgid "Select shape(s) and then click ..." msgstr "Selectează formele si apoi click ..." -#: flatcamEditors/FlatCAMGrbEditor.py:739 +#: flatcamEditors/FlatCAMGrbEditor.py:741 msgid "[ERROR_NOTCL] Failed. Nothing selected." msgstr "[ERROR_NOTCL] Eșuat. Nu este nimic selectat." -#: flatcamEditors/FlatCAMGrbEditor.py:754 +#: flatcamEditors/FlatCAMGrbEditor.py:756 msgid "" "[WARNING_NOTCL] Failed. Poligonize works only on geometries belonging to the " "same aperture." @@ -3259,136 +3281,136 @@ msgstr "" "[WARNING_NOTCL] Esuat. Poligonizarea lucrează doar asupra geometriilor care " "apartin aceleasi aperturi." -#: flatcamEditors/FlatCAMGrbEditor.py:807 +#: flatcamEditors/FlatCAMGrbEditor.py:809 msgid "[success] Done. Poligonize completed." msgstr "[success] Executat. Poligonizare completă." -#: flatcamEditors/FlatCAMGrbEditor.py:857 -#: flatcamEditors/FlatCAMGrbEditor.py:1072 -#: flatcamEditors/FlatCAMGrbEditor.py:1096 +#: flatcamEditors/FlatCAMGrbEditor.py:860 +#: flatcamEditors/FlatCAMGrbEditor.py:1075 +#: flatcamEditors/FlatCAMGrbEditor.py:1099 msgid "Corner Mode 1: 45 degrees ..." msgstr "Mod Colt 1: 45 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:859 +#: flatcamEditors/FlatCAMGrbEditor.py:862 msgid "Click on 1st point ..." msgstr "Click pe primul punct ..." -#: flatcamEditors/FlatCAMGrbEditor.py:869 -#: flatcamEditors/FlatCAMGrbEditor.py:1167 +#: flatcamEditors/FlatCAMGrbEditor.py:872 +#: flatcamEditors/FlatCAMGrbEditor.py:1170 msgid "Click on next Point or click Right mouse button to complete ..." msgstr "" "Click pe punctul următor sau click buton dreapta al mousului pentru " "terminare ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1060 -#: flatcamEditors/FlatCAMGrbEditor.py:1093 +#: flatcamEditors/FlatCAMGrbEditor.py:1063 +#: flatcamEditors/FlatCAMGrbEditor.py:1096 msgid "Corner Mode 2: Reverse 45 degrees ..." msgstr "Mod Colt 2: Invers 45 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1063 -#: flatcamEditors/FlatCAMGrbEditor.py:1090 +#: flatcamEditors/FlatCAMGrbEditor.py:1066 +#: flatcamEditors/FlatCAMGrbEditor.py:1093 msgid "Corner Mode 3: 90 degrees ..." msgstr "Mod Colt 3: 90 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1066 -#: flatcamEditors/FlatCAMGrbEditor.py:1087 +#: flatcamEditors/FlatCAMGrbEditor.py:1069 +#: flatcamEditors/FlatCAMGrbEditor.py:1090 msgid "Corner Mode 4: Reverse 90 degrees ..." msgstr "Mod Colt 4: Invers 90 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1069 -#: flatcamEditors/FlatCAMGrbEditor.py:1084 +#: flatcamEditors/FlatCAMGrbEditor.py:1072 +#: flatcamEditors/FlatCAMGrbEditor.py:1087 msgid "Corner Mode 5: Free angle ..." msgstr "Mod Colt 5: Unghi liber ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1123 -#: flatcamEditors/FlatCAMGrbEditor.py:1281 -#: flatcamEditors/FlatCAMGrbEditor.py:1320 +#: flatcamEditors/FlatCAMGrbEditor.py:1126 +#: flatcamEditors/FlatCAMGrbEditor.py:1284 +#: flatcamEditors/FlatCAMGrbEditor.py:1323 msgid "Track Mode 1: 45 degrees ..." msgstr "Mod Traseu 1: 45 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1261 -#: flatcamEditors/FlatCAMGrbEditor.py:1315 +#: flatcamEditors/FlatCAMGrbEditor.py:1264 +#: flatcamEditors/FlatCAMGrbEditor.py:1318 msgid "Track Mode 2: Reverse 45 degrees ..." msgstr "Mod Traseu 2: Invers 45 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1266 -#: flatcamEditors/FlatCAMGrbEditor.py:1310 +#: flatcamEditors/FlatCAMGrbEditor.py:1269 +#: flatcamEditors/FlatCAMGrbEditor.py:1313 msgid "Track Mode 3: 90 degrees ..." msgstr "Mod Traseu 3: 90 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1271 -#: flatcamEditors/FlatCAMGrbEditor.py:1305 +#: flatcamEditors/FlatCAMGrbEditor.py:1274 +#: flatcamEditors/FlatCAMGrbEditor.py:1308 msgid "Track Mode 4: Reverse 90 degrees ..." msgstr "Mod Traseu 4: Invers 90 grade ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1276 -#: flatcamEditors/FlatCAMGrbEditor.py:1300 +#: flatcamEditors/FlatCAMGrbEditor.py:1279 +#: flatcamEditors/FlatCAMGrbEditor.py:1303 msgid "Track Mode 5: Free angle ..." msgstr "Mod Traseu 5: Unghi liber ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1666 +#: flatcamEditors/FlatCAMGrbEditor.py:1669 msgid "Scale the selected Gerber apertures ..." msgstr "Șterge aperturile Gerber selectate ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1708 +#: flatcamEditors/FlatCAMGrbEditor.py:1711 msgid "Buffer the selected apertures ..." msgstr "Bufereaza aperturile selectate." -#: flatcamEditors/FlatCAMGrbEditor.py:1752 +#: flatcamEditors/FlatCAMGrbEditor.py:1755 msgid "[WARNING_NOTCL] Nothing selected to move ..." msgstr "[WARNING_NOTCL] Nimic nu este selectat pentru mutare ..." -#: flatcamEditors/FlatCAMGrbEditor.py:1875 +#: flatcamEditors/FlatCAMGrbEditor.py:1878 msgid "[success] Done. Apertures Move completed." msgstr "[success] Executat. Mutarea Aperturilor terminată." -#: flatcamEditors/FlatCAMGrbEditor.py:1951 +#: flatcamEditors/FlatCAMGrbEditor.py:1954 msgid "[success] Done. Apertures copied." msgstr "[success] Executat. Aperturile au fost copiate." -#: flatcamEditors/FlatCAMGrbEditor.py:2101 flatcamGUI/FlatCAMGUI.py:1604 -#: flatcamGUI/FlatCAMGUI.py:4322 +#: flatcamEditors/FlatCAMGrbEditor.py:2243 flatcamGUI/FlatCAMGUI.py:1607 +#: flatcamGUI/FlatCAMGUI.py:4329 msgid "Gerber Editor" msgstr "Editor Gerber" -#: flatcamEditors/FlatCAMGrbEditor.py:2120 flatcamGUI/ObjectUI.py:192 +#: flatcamEditors/FlatCAMGrbEditor.py:2262 flatcamGUI/ObjectUI.py:192 msgid "Apertures:" msgstr "Aperturi:" -#: flatcamEditors/FlatCAMGrbEditor.py:2122 flatcamGUI/ObjectUI.py:194 +#: flatcamEditors/FlatCAMGrbEditor.py:2264 flatcamGUI/ObjectUI.py:194 msgid "Apertures Table for the Gerber Object." msgstr "Tabela de aperturi pt obiectul Gerber." -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 msgid "Code" msgstr "Cod" -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 #: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "Type" msgstr "Tip" -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 msgid "Size" msgstr "Dimens." -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 msgid "Dim" msgstr "Dim" -#: flatcamEditors/FlatCAMGrbEditor.py:2137 flatcamGUI/ObjectUI.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:2279 flatcamGUI/ObjectUI.py:232 msgid "Index" msgstr "Index" -#: flatcamEditors/FlatCAMGrbEditor.py:2139 flatcamGUI/ObjectUI.py:234 +#: flatcamEditors/FlatCAMGrbEditor.py:2281 flatcamGUI/ObjectUI.py:234 msgid "Aperture Code" msgstr "Cod" -#: flatcamEditors/FlatCAMGrbEditor.py:2141 flatcamGUI/ObjectUI.py:236 +#: flatcamEditors/FlatCAMGrbEditor.py:2283 flatcamGUI/ObjectUI.py:236 msgid "Type of aperture: circular, rectangle, macros etc" msgstr "" "Tipul aperturilor:\n" @@ -3397,12 +3419,12 @@ msgstr "" "- macro-uri\n" "etc" -#: flatcamEditors/FlatCAMGrbEditor.py:2143 -#: flatcamEditors/FlatCAMGrbEditor.py:2176 flatcamGUI/ObjectUI.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:2285 +#: flatcamEditors/FlatCAMGrbEditor.py:2318 flatcamGUI/ObjectUI.py:238 msgid "Aperture Size:" msgstr "Dim. aper." -#: flatcamEditors/FlatCAMGrbEditor.py:2145 flatcamGUI/ObjectUI.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:2287 flatcamGUI/ObjectUI.py:240 msgid "" "Aperture Dimensions:\n" " - (width, height) for R, O type.\n" @@ -3412,15 +3434,15 @@ msgstr "" "- (latime, inaltime) pt tipurile R, O.\n" "- (diametru, nVertices) pt tipul P" -#: flatcamEditors/FlatCAMGrbEditor.py:2166 +#: flatcamEditors/FlatCAMGrbEditor.py:2308 msgid "Aperture Code:" msgstr "Cod apertură" -#: flatcamEditors/FlatCAMGrbEditor.py:2168 +#: flatcamEditors/FlatCAMGrbEditor.py:2310 msgid "Code for the new aperture" msgstr "Diametru pentru noua apertură" -#: flatcamEditors/FlatCAMGrbEditor.py:2178 +#: flatcamEditors/FlatCAMGrbEditor.py:2320 msgid "" "Size for the new aperture.\n" "If aperture type is 'R' or 'O' then\n" @@ -3433,11 +3455,11 @@ msgstr "" "valoarea este calculată automat prin:\n" "sqrt(lătime**2 + inăltime**2)" -#: flatcamEditors/FlatCAMGrbEditor.py:2190 +#: flatcamEditors/FlatCAMGrbEditor.py:2332 msgid "Aperture Type:" msgstr "Tip aper." -#: flatcamEditors/FlatCAMGrbEditor.py:2192 +#: flatcamEditors/FlatCAMGrbEditor.py:2334 msgid "" "Select the type of new aperture. Can be:\n" "C = circular\n" @@ -3449,11 +3471,11 @@ msgstr "" "R = rectangular\n" "O = oval" -#: flatcamEditors/FlatCAMGrbEditor.py:2203 +#: flatcamEditors/FlatCAMGrbEditor.py:2345 msgid "Aperture Dim:" msgstr "Dim. aper." -#: flatcamEditors/FlatCAMGrbEditor.py:2205 +#: flatcamEditors/FlatCAMGrbEditor.py:2347 msgid "" "Dimensions for the new aperture.\n" "Active only for rectangular apertures (type R).\n" @@ -3463,31 +3485,31 @@ msgstr "" "Activă doar pentru aperturile rectangulare (tip 'R').\n" "Formatul este (lătime, inăltime)" -#: flatcamEditors/FlatCAMGrbEditor.py:2214 +#: flatcamEditors/FlatCAMGrbEditor.py:2356 msgid "Add/Delete Aperture:" msgstr "Adaugă/Șterge aper." -#: flatcamEditors/FlatCAMGrbEditor.py:2216 +#: flatcamEditors/FlatCAMGrbEditor.py:2358 msgid "Add/Delete an aperture in the aperture table" msgstr "Adaugă/Șterge o apertură din lista de aperturi." -#: flatcamEditors/FlatCAMGrbEditor.py:2225 +#: flatcamEditors/FlatCAMGrbEditor.py:2367 msgid "Add a new aperture to the aperture list." msgstr "Adaugă o nouă apertură in lista de aperturi." -#: flatcamEditors/FlatCAMGrbEditor.py:2230 +#: flatcamEditors/FlatCAMGrbEditor.py:2372 msgid "Delete a aperture in the aperture list" msgstr "Șterge o apertură din lista de aperturi." -#: flatcamEditors/FlatCAMGrbEditor.py:2246 +#: flatcamEditors/FlatCAMGrbEditor.py:2388 msgid "Buffer Aperture:" msgstr "Bufer pt apertură:" -#: flatcamEditors/FlatCAMGrbEditor.py:2248 +#: flatcamEditors/FlatCAMGrbEditor.py:2390 msgid "Buffer a aperture in the aperture list" msgstr "Fă bufer pt o apertură din lista de aperturi" -#: flatcamEditors/FlatCAMGrbEditor.py:2261 +#: flatcamEditors/FlatCAMGrbEditor.py:2403 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded.\n" @@ -3501,24 +3523,24 @@ msgstr "" " - 'Beveled:' coltul este inlocuit cu o linie care uneste capetele liniilor " "care formează coltul" -#: flatcamEditors/FlatCAMGrbEditor.py:2276 flatcamGUI/FlatCAMGUI.py:721 -#: flatcamGUI/FlatCAMGUI.py:1943 +#: flatcamEditors/FlatCAMGrbEditor.py:2418 flatcamGUI/FlatCAMGUI.py:722 +#: flatcamGUI/FlatCAMGUI.py:1948 msgid "Buffer" msgstr "Bufer" -#: flatcamEditors/FlatCAMGrbEditor.py:2290 +#: flatcamEditors/FlatCAMGrbEditor.py:2432 msgid "Scale Aperture:" msgstr "Scalează ap.:" -#: flatcamEditors/FlatCAMGrbEditor.py:2292 +#: flatcamEditors/FlatCAMGrbEditor.py:2434 msgid "Scale a aperture in the aperture list" msgstr "Scalează o apertură in lista de aperturi" -#: flatcamEditors/FlatCAMGrbEditor.py:2300 +#: flatcamEditors/FlatCAMGrbEditor.py:2442 msgid "Scale factor:" msgstr "Factor Scalare:" -#: flatcamEditors/FlatCAMGrbEditor.py:2302 +#: flatcamEditors/FlatCAMGrbEditor.py:2444 msgid "" "The factor by which to scale the selected aperture.\n" "Values can be between 0.0000 and 999.9999" @@ -3526,16 +3548,16 @@ msgstr "" "Factorul cu care se va face scalarea aperturii selectate.\n" "Poate lua valori intre: 0.000 si 999.9999" -#: flatcamEditors/FlatCAMGrbEditor.py:2330 flatcamGUI/FlatCAMGUI.py:711 -#: flatcamGUI/FlatCAMGUI.py:1933 +#: flatcamEditors/FlatCAMGrbEditor.py:2472 flatcamGUI/FlatCAMGUI.py:712 +#: flatcamGUI/FlatCAMGUI.py:1938 msgid "Add Pad Array" msgstr "Adaugă o arie de paduri" -#: flatcamEditors/FlatCAMGrbEditor.py:2332 +#: flatcamEditors/FlatCAMGrbEditor.py:2474 msgid "Add an array of pads (linear or circular array)" msgstr "Adaugă o arie de paduri (arie lineara sau circulara)." -#: flatcamEditors/FlatCAMGrbEditor.py:2338 +#: flatcamEditors/FlatCAMGrbEditor.py:2480 msgid "" "Select the type of pads array to create.\n" "It can be Linear X(Y) or Circular" @@ -3543,16 +3565,16 @@ msgstr "" "Selectează tipul de arii de paduri.\n" "Poate fi Liniar X(Y) sau Circular." -#: flatcamEditors/FlatCAMGrbEditor.py:2349 +#: flatcamEditors/FlatCAMGrbEditor.py:2491 msgid "Nr of pads:" msgstr "Nr. paduri:" -#: flatcamEditors/FlatCAMGrbEditor.py:2351 +#: flatcamEditors/FlatCAMGrbEditor.py:2493 msgid "Specify how many pads to be in the array." msgstr "Specifica cate paduri să fie incluse in arie." -#: flatcamEditors/FlatCAMGrbEditor.py:2826 -#: flatcamEditors/FlatCAMGrbEditor.py:2830 +#: flatcamEditors/FlatCAMGrbEditor.py:2970 +#: flatcamEditors/FlatCAMGrbEditor.py:2974 msgid "" "[WARNING_NOTCL] Aperture code value is missing or wrong format. Add it and " "retry." @@ -3560,7 +3582,7 @@ msgstr "" "[WARNING_NOTCL] Valoarea codului aperturii lipseste sau este in format " "greșit. Adaugă din nou și reîncearcă." -#: flatcamEditors/FlatCAMGrbEditor.py:2866 +#: flatcamEditors/FlatCAMGrbEditor.py:3010 msgid "" "[WARNING_NOTCL] Aperture dimensions value is missing or wrong format. Add it " "in format (width, height) and retry." @@ -3568,7 +3590,7 @@ msgstr "" "[WARNING_NOTCL] Dimensiunile aperturii lipsesc sau sunt intr-un format " "greșit. Adaugă din nou și reîncearcă." -#: flatcamEditors/FlatCAMGrbEditor.py:2878 +#: flatcamEditors/FlatCAMGrbEditor.py:3022 msgid "" "[WARNING_NOTCL] Aperture size value is missing or wrong format. Add it and " "retry." @@ -3576,35 +3598,35 @@ msgstr "" "[WARNING_NOTCL] Valoarea mărimii aperturii lipseste sau este in format " "greșit. Adaugă din nou și reîncearcă." -#: flatcamEditors/FlatCAMGrbEditor.py:2889 +#: flatcamEditors/FlatCAMGrbEditor.py:3033 msgid "[WARNING_NOTCL] Aperture already in the aperture table." msgstr "[WARNING_NOTCL] Apertura este deja in lista de aperturi." -#: flatcamEditors/FlatCAMGrbEditor.py:2896 +#: flatcamEditors/FlatCAMGrbEditor.py:3040 #, 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:2924 +#: flatcamEditors/FlatCAMGrbEditor.py:3068 msgid "[WARNING_NOTCL] Select an aperture in Aperture Table" msgstr "[WARNING_NOTCL] Selectează o unealtă in Tabela de Aperturi" -#: flatcamEditors/FlatCAMGrbEditor.py:2930 +#: flatcamEditors/FlatCAMGrbEditor.py:3074 #, 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:2953 +#: flatcamEditors/FlatCAMGrbEditor.py:3097 #, python-brace-format msgid "[success] Deleted aperture with code: {del_dia}" msgstr "[success] Unealta cu diametrul: {del_dia} a fost stearsă" -#: flatcamEditors/FlatCAMGrbEditor.py:3373 +#: flatcamEditors/FlatCAMGrbEditor.py:3517 #, python-format msgid "Adding aperture: %s geo ..." msgstr "Se adaugă apertura: %s geo ..." -#: flatcamEditors/FlatCAMGrbEditor.py:3552 +#: flatcamEditors/FlatCAMGrbEditor.py:3696 msgid "" "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber " "creation." @@ -3612,34 +3634,34 @@ msgstr "" "[ERROR_NOTCL] Nu există definitii de aperturi in fişier. Se anulează crearea " "de obiect Gerber." -#: flatcamEditors/FlatCAMGrbEditor.py:3555 +#: flatcamEditors/FlatCAMGrbEditor.py:3699 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:3560 +#: flatcamEditors/FlatCAMGrbEditor.py:3704 msgid "Creating Gerber." msgstr "Gerber in curs de creare." -#: flatcamEditors/FlatCAMGrbEditor.py:3568 +#: flatcamEditors/FlatCAMGrbEditor.py:3712 msgid "[success] Gerber editing finished." msgstr "[success] Editarea Gerber a fost terminată." -#: flatcamEditors/FlatCAMGrbEditor.py:3584 +#: flatcamEditors/FlatCAMGrbEditor.py:3728 msgid "[WARNING_NOTCL] Cancelled. No aperture is selected" msgstr "[WARNING_NOTCL] Anulat. Nici-o apertură nu este selectată." -#: flatcamEditors/FlatCAMGrbEditor.py:4104 +#: flatcamEditors/FlatCAMGrbEditor.py:4248 msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected." msgstr "" "[WARNING_NOTCL] Anulat. Nici-o geometrie de apertură nu este selectată." -#: flatcamEditors/FlatCAMGrbEditor.py:4112 +#: flatcamEditors/FlatCAMGrbEditor.py:4256 msgid "[success] Done. Apertures geometry deleted." msgstr "[success] Executat. Geometriile aperturilor au fost șterse." -#: flatcamEditors/FlatCAMGrbEditor.py:4261 +#: flatcamEditors/FlatCAMGrbEditor.py:4405 msgid "" "[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try " "again." @@ -3647,7 +3669,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:4290 +#: flatcamEditors/FlatCAMGrbEditor.py:4434 msgid "" "[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and " "retry." @@ -3655,7 +3677,7 @@ msgstr "" "[WARNING_NOTCL] Valoarea factorului de scalare lipseste sau este in format " "gresit. Adaugă din nou și reîncearcă." -#: flatcamEditors/FlatCAMGrbEditor.py:4320 +#: flatcamEditors/FlatCAMGrbEditor.py:4464 msgid "" "[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try " "again." @@ -3663,7 +3685,7 @@ msgstr "" "[WARNING_NOTCL] Nici-o apertură sel. pt scalare. Selectează cel puțin o " "apertură și încearcă din nou." -#: flatcamEditors/FlatCAMGrbEditor.py:4336 +#: flatcamEditors/FlatCAMGrbEditor.py:4480 msgid "[success] Done. Scale Tool completed." msgstr "[success] Executat. Unealta Scalare a terminat." @@ -4244,11 +4266,11 @@ msgstr "Generează CNC" msgid "View Source" msgstr "Vizualiz. Sursa" -#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1617 +#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1620 msgid "Edit" msgstr "Editează" -#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1623 +#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1626 #: flatcamTools/ToolProperties.py:25 msgid "Properties" msgstr "Proprietati" @@ -4289,15 +4311,15 @@ msgstr "Toolbar Editor Gerber" msgid "Grid Toolbar" msgstr "Toolbar Grid-uri" -#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1834 +#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1837 msgid "Open project" msgstr "Încarcă Proiect" -#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1835 +#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1838 msgid "Save project" msgstr "Salvează Proiect" -#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1838 +#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1841 msgid "New Blank Geometry" msgstr "Geometrie Noua (goală)" @@ -4305,220 +4327,225 @@ msgstr "Geometrie Noua (goală)" msgid "New Blank Gerber" msgstr "Gerber Nou (gol)" -#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1839 +#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1842 msgid "New Blank Excellon" msgstr "Excellon nou (gol)" -#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1841 +#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1844 msgid "Editor" msgstr "Editor" -#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1843 +#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1846 msgid "Save Object and close the Editor" msgstr "Salvează Obiectul și inchide Editorul" -#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1847 +#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1850 msgid "&Delete" msgstr "&Șterge" -#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1850 +#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1853 msgid "&Replot" msgstr "&Reafișare" -#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1851 +#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1854 msgid "&Clear plot" msgstr "&Șterge Afișare" -#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1852 +#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1855 msgid "Zoom In" msgstr "Marire" -#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1853 +#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1856 msgid "Zoom Out" msgstr "Micsorare" -#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1592 -#: flatcamGUI/FlatCAMGUI.py:1854 +#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1595 +#: flatcamGUI/FlatCAMGUI.py:1857 msgid "Zoom Fit" msgstr "Marire și ajustare" -#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1859 +#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1862 msgid "&Command Line" msgstr "&Linie de comanda" -#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1862 +#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1865 msgid "2Sided Tool" msgstr "Unealta 2-fețe" -#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1863 +#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1866 msgid "&Cutout Tool" msgstr "Unealta Decupare" -#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1864 +#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1867 #: flatcamGUI/ObjectUI.py:392 flatcamTools/ToolNonCopperClear.py:285 msgid "NCC Tool" msgstr "Unealta NCC" -#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1868 +#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1871 msgid "Panel Tool" msgstr "Unealta Panel" -#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1869 +#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1872 #: flatcamTools/ToolFilm.py:204 msgid "Film Tool" msgstr "Unealta Film" -#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1871 +#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1874 msgid "SolderPaste Tool" msgstr "Unealta Dispenser SP" -#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1872 +#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1875 #: flatcamTools/ToolSub.py:26 msgid "Substract Tool" msgstr "Unealta Scădere" -#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1877 +#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1880 msgid "Calculators Tool" msgstr "Unealta Calculatoare" #: flatcamGUI/FlatCAMGUI.py:662 flatcamGUI/FlatCAMGUI.py:676 -#: flatcamGUI/FlatCAMGUI.py:709 flatcamGUI/FlatCAMGUI.py:1881 -#: flatcamGUI/FlatCAMGUI.py:1931 +#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1884 +#: flatcamGUI/FlatCAMGUI.py:1936 msgid "Select" msgstr "Selectează" -#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1882 +#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1885 msgid "Add Drill Hole" msgstr "Adaugă o Găurire" -#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1884 +#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1887 msgid "Add Drill Hole Array" msgstr "Adaugă o arie de Găuriri" -#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1885 +#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1888 msgid "Resize Drill" msgstr "Redimens. Găurire" -#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1888 +#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1891 msgid "Copy Drill" msgstr "Copiază Găurire" -#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1890 +#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1893 msgid "Delete Drill" msgstr "Șterge Găurire" -#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1893 +#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1896 msgid "Move Drill" msgstr "Muta Găurire" -#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1897 +#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1900 msgid "Add Circle" msgstr "Adaugă Cerc" -#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1898 +#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1901 msgid "Add Arc" msgstr "Adaugă Arc" -#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1900 +#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1903 msgid "Add Rectangle" msgstr "Adaugă Patrulater" -#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1903 +#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1906 msgid "Add Path" msgstr "Adaugă Cale" -#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1905 +#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1908 msgid "Add Polygon" msgstr "Adaugă Poligon" -#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1907 +#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1910 msgid "Add Text" msgstr "Adaugă Text" -#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1909 +#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1912 msgid "Add Buffer" msgstr "Adaugă Bufer" -#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1910 +#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1913 msgid "Paint Shape" msgstr "Paint o forma" -#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:1913 +#: flatcamGUI/FlatCAMGUI.py:689 flatcamGUI/FlatCAMGUI.py:724 +#: flatcamGUI/FlatCAMGUI.py:1914 flatcamGUI/FlatCAMGUI.py:1950 +msgid "Eraser" +msgstr "Stergere Selectivă" + +#: flatcamGUI/FlatCAMGUI.py:692 flatcamGUI/FlatCAMGUI.py:1918 msgid "Polygon Union" msgstr "Uniune Poligoane" -#: flatcamGUI/FlatCAMGUI.py:693 flatcamGUI/FlatCAMGUI.py:1915 +#: flatcamGUI/FlatCAMGUI.py:694 flatcamGUI/FlatCAMGUI.py:1920 msgid "Polygon Intersection" msgstr "Intersecţie Poligoane" -#: flatcamGUI/FlatCAMGUI.py:695 flatcamGUI/FlatCAMGUI.py:1917 +#: flatcamGUI/FlatCAMGUI.py:696 flatcamGUI/FlatCAMGUI.py:1922 msgid "Polygon Subtraction" msgstr "Substracţie Poligoane" -#: flatcamGUI/FlatCAMGUI.py:698 flatcamGUI/FlatCAMGUI.py:1920 +#: flatcamGUI/FlatCAMGUI.py:699 flatcamGUI/FlatCAMGUI.py:1925 msgid "Cut Path" msgstr "Taie Cale" -#: flatcamGUI/FlatCAMGUI.py:699 +#: flatcamGUI/FlatCAMGUI.py:700 msgid "Copy Shape(s)" msgstr "Copiază forme geo." -#: flatcamGUI/FlatCAMGUI.py:702 +#: flatcamGUI/FlatCAMGUI.py:703 msgid "Delete Shape '-'" msgstr "Șterge forme geo." -#: flatcamGUI/FlatCAMGUI.py:704 flatcamGUI/FlatCAMGUI.py:728 -#: flatcamGUI/FlatCAMGUI.py:1925 flatcamGUI/FlatCAMGUI.py:1950 +#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:731 +#: flatcamGUI/FlatCAMGUI.py:1930 flatcamGUI/FlatCAMGUI.py:1957 msgid "Transformations" msgstr "Transformări" -#: flatcamGUI/FlatCAMGUI.py:706 +#: flatcamGUI/FlatCAMGUI.py:707 msgid "Move Objects " msgstr "Muta obiecte" -#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1932 +#: flatcamGUI/FlatCAMGUI.py:711 flatcamGUI/FlatCAMGUI.py:1937 msgid "Add Pad" msgstr "Adaugă Pad" -#: flatcamGUI/FlatCAMGUI.py:712 flatcamGUI/FlatCAMGUI.py:1934 +#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1939 msgid "Add Track" msgstr "Adaugă Traseu" -#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1935 +#: flatcamGUI/FlatCAMGUI.py:714 flatcamGUI/FlatCAMGUI.py:1940 msgid "Add Region" msgstr "Adaugă Regiune" -#: flatcamGUI/FlatCAMGUI.py:715 flatcamGUI/FlatCAMGUI.py:1937 +#: flatcamGUI/FlatCAMGUI.py:716 flatcamGUI/FlatCAMGUI.py:1942 msgid "Poligonize" msgstr "Poligonizare" -#: flatcamGUI/FlatCAMGUI.py:717 flatcamGUI/FlatCAMGUI.py:1939 +#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1944 msgid "SemiDisc" msgstr "SemiDisc" -#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1940 +#: flatcamGUI/FlatCAMGUI.py:719 flatcamGUI/FlatCAMGUI.py:1945 msgid "Disc" msgstr "Disc" -#: flatcamGUI/FlatCAMGUI.py:730 flatcamGUI/FlatCAMGUI.py:1602 -#: flatcamGUI/FlatCAMGUI.py:1622 flatcamGUI/FlatCAMGUI.py:1952 +#: flatcamGUI/FlatCAMGUI.py:733 flatcamGUI/FlatCAMGUI.py:1605 +#: flatcamGUI/FlatCAMGUI.py:1625 flatcamGUI/FlatCAMGUI.py:1959 #: flatcamTools/ToolMove.py:26 msgid "Move" msgstr "Mutare" -#: flatcamGUI/FlatCAMGUI.py:736 flatcamGUI/FlatCAMGUI.py:1958 +#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1965 msgid "Snap to grid" msgstr "Lipire la grid" -#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1961 +#: flatcamGUI/FlatCAMGUI.py:742 flatcamGUI/FlatCAMGUI.py:1968 msgid "Grid X snapping distance" msgstr "Distanta de lipire la grid pe axa X" -#: flatcamGUI/FlatCAMGUI.py:744 flatcamGUI/FlatCAMGUI.py:1966 +#: flatcamGUI/FlatCAMGUI.py:747 flatcamGUI/FlatCAMGUI.py:1973 msgid "Grid Y snapping distance" msgstr "Distanta de lipire la grid pe axa Y" -#: flatcamGUI/FlatCAMGUI.py:750 flatcamGUI/FlatCAMGUI.py:1972 +#: flatcamGUI/FlatCAMGUI.py:753 flatcamGUI/FlatCAMGUI.py:1979 msgid "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." @@ -4526,64 +4553,64 @@ msgstr "" "când este activ, valoarea de pe Grid_X\n" "este copiata și in Grid_Y" -#: flatcamGUI/FlatCAMGUI.py:756 flatcamGUI/FlatCAMGUI.py:1978 +#: flatcamGUI/FlatCAMGUI.py:759 flatcamGUI/FlatCAMGUI.py:1985 msgid "Snap to corner" msgstr "Lipire la colt" -#: flatcamGUI/FlatCAMGUI.py:760 flatcamGUI/FlatCAMGUI.py:1982 -#: flatcamGUI/FlatCAMGUI.py:3339 +#: flatcamGUI/FlatCAMGUI.py:763 flatcamGUI/FlatCAMGUI.py:1989 +#: flatcamGUI/FlatCAMGUI.py:3346 msgid "Max. magnet distance" msgstr "Distanta magnetica maxima" -#: flatcamGUI/FlatCAMGUI.py:788 flatcamGUI/FlatCAMGUI.py:1586 +#: flatcamGUI/FlatCAMGUI.py:791 flatcamGUI/FlatCAMGUI.py:1589 msgid "Project" msgstr "Proiect" -#: flatcamGUI/FlatCAMGUI.py:798 +#: flatcamGUI/FlatCAMGUI.py:801 msgid "Selected" msgstr "Selectat" -#: flatcamGUI/FlatCAMGUI.py:817 flatcamGUI/FlatCAMGUI.py:825 +#: flatcamGUI/FlatCAMGUI.py:820 flatcamGUI/FlatCAMGUI.py:828 msgid "Plot Area" msgstr "Arie Afișare" -#: flatcamGUI/FlatCAMGUI.py:849 +#: flatcamGUI/FlatCAMGUI.py:852 msgid "General" msgstr "General" -#: flatcamGUI/FlatCAMGUI.py:858 +#: flatcamGUI/FlatCAMGUI.py:861 msgid "APP. DEFAULTS" msgstr "Default for App" -#: flatcamGUI/FlatCAMGUI.py:859 +#: flatcamGUI/FlatCAMGUI.py:862 msgid "PROJ. OPTIONS " msgstr "Opțiuni Proiect" -#: flatcamGUI/FlatCAMGUI.py:870 +#: flatcamGUI/FlatCAMGUI.py:873 msgid "GERBER" msgstr "GERBER" -#: flatcamGUI/FlatCAMGUI.py:879 +#: flatcamGUI/FlatCAMGUI.py:882 msgid "EXCELLON" msgstr "EXCELLON" -#: flatcamGUI/FlatCAMGUI.py:888 +#: flatcamGUI/FlatCAMGUI.py:891 msgid "GEOMETRY" msgstr "GEOMETRIE" -#: flatcamGUI/FlatCAMGUI.py:898 +#: flatcamGUI/FlatCAMGUI.py:901 msgid "CNC-JOB" msgstr "CNCJob" -#: flatcamGUI/FlatCAMGUI.py:907 +#: flatcamGUI/FlatCAMGUI.py:910 msgid "TOOLS" msgstr "Unelte" -#: flatcamGUI/FlatCAMGUI.py:924 +#: flatcamGUI/FlatCAMGUI.py:927 msgid "Import Preferences" msgstr "Importa Preferințele" -#: flatcamGUI/FlatCAMGUI.py:927 +#: flatcamGUI/FlatCAMGUI.py:930 msgid "" "Import a full set of FlatCAM settings from a file\n" "previously saved on HDD.\n" @@ -4597,11 +4624,11 @@ msgstr "" "FlatCAM salvează automat un fişier numit 'factory_defaults'\n" "la prima pornire. Nu șterge acel fişier." -#: flatcamGUI/FlatCAMGUI.py:934 +#: flatcamGUI/FlatCAMGUI.py:937 msgid "Export Preferences" msgstr "Exporta Preferințele" -#: flatcamGUI/FlatCAMGUI.py:937 +#: flatcamGUI/FlatCAMGUI.py:940 msgid "" "Export a full set of FlatCAM settings in a file\n" "that is saved on HDD." @@ -4609,19 +4636,19 @@ msgstr "" "Exporta un set complet de setări ale FlatCAM\n" "intr-un fişier care se salvează pe HDD." -#: flatcamGUI/FlatCAMGUI.py:942 +#: flatcamGUI/FlatCAMGUI.py:945 msgid "Open Pref Folder" msgstr "Deschide Pref Dir" -#: flatcamGUI/FlatCAMGUI.py:945 +#: flatcamGUI/FlatCAMGUI.py:948 msgid "Open the folder where FlatCAM save the preferences files." msgstr "Deschide directorul unde FlatCAM salvează fişierele cu setări." -#: flatcamGUI/FlatCAMGUI.py:953 +#: flatcamGUI/FlatCAMGUI.py:956 msgid "Save Preferences" msgstr "Salvează Pref" -#: flatcamGUI/FlatCAMGUI.py:956 +#: flatcamGUI/FlatCAMGUI.py:959 msgid "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." @@ -4629,7 +4656,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:982 +#: flatcamGUI/FlatCAMGUI.py:985 msgid "" "General Shortcut list
\n" " Editor Shortcut list
\n" "
\n" @@ -5824,99 +5851,99 @@ msgstr "" "
\n" " " -#: flatcamGUI/FlatCAMGUI.py:1579 +#: flatcamGUI/FlatCAMGUI.py:1582 msgid "Disable" msgstr "Dezactivează" -#: flatcamGUI/FlatCAMGUI.py:1581 +#: flatcamGUI/FlatCAMGUI.py:1584 msgid "New" msgstr "Nou" -#: flatcamGUI/FlatCAMGUI.py:1582 +#: flatcamGUI/FlatCAMGUI.py:1585 msgid "Geometry" msgstr "Geometrie" -#: flatcamGUI/FlatCAMGUI.py:1584 +#: flatcamGUI/FlatCAMGUI.py:1587 msgid "Excellon" msgstr "Excellon" -#: flatcamGUI/FlatCAMGUI.py:1589 +#: flatcamGUI/FlatCAMGUI.py:1592 msgid "Grids" msgstr "Grid-uri" -#: flatcamGUI/FlatCAMGUI.py:1591 +#: flatcamGUI/FlatCAMGUI.py:1594 msgid "View" msgstr "Vizualizare" -#: flatcamGUI/FlatCAMGUI.py:1593 +#: flatcamGUI/FlatCAMGUI.py:1596 msgid "Clear Plot" msgstr "Șterge Afișare" -#: flatcamGUI/FlatCAMGUI.py:1594 +#: flatcamGUI/FlatCAMGUI.py:1597 msgid "Replot" msgstr "Reafișare" -#: flatcamGUI/FlatCAMGUI.py:1597 +#: flatcamGUI/FlatCAMGUI.py:1600 msgid "Geo Editor" msgstr "Editor Geometrii" -#: flatcamGUI/FlatCAMGUI.py:1598 +#: flatcamGUI/FlatCAMGUI.py:1601 msgid "Line" msgstr "Linie" -#: flatcamGUI/FlatCAMGUI.py:1599 +#: flatcamGUI/FlatCAMGUI.py:1602 msgid "Rectangle" msgstr "Patrulater" -#: flatcamGUI/FlatCAMGUI.py:1600 +#: flatcamGUI/FlatCAMGUI.py:1603 msgid "Cut" msgstr "Tăiere" -#: flatcamGUI/FlatCAMGUI.py:1605 +#: flatcamGUI/FlatCAMGUI.py:1608 msgid "Pad" msgstr "Pad" -#: flatcamGUI/FlatCAMGUI.py:1606 +#: flatcamGUI/FlatCAMGUI.py:1609 msgid "Pad Array" msgstr "Arie de paduri" -#: flatcamGUI/FlatCAMGUI.py:1607 +#: flatcamGUI/FlatCAMGUI.py:1610 msgid "Track" msgstr "Traseu" -#: flatcamGUI/FlatCAMGUI.py:1608 +#: flatcamGUI/FlatCAMGUI.py:1611 msgid "Region" msgstr "Regiune" -#: flatcamGUI/FlatCAMGUI.py:1610 +#: flatcamGUI/FlatCAMGUI.py:1613 msgid "Exc Editor" msgstr "Editor EXC." -#: flatcamGUI/FlatCAMGUI.py:1611 +#: flatcamGUI/FlatCAMGUI.py:1614 msgid "Add Drill" msgstr "Adaugă găurire" -#: flatcamGUI/FlatCAMGUI.py:1643 +#: flatcamGUI/FlatCAMGUI.py:1646 msgid "Print Preview" msgstr "Preview tiparire" -#: flatcamGUI/FlatCAMGUI.py:1644 +#: flatcamGUI/FlatCAMGUI.py:1647 msgid "Print Code" msgstr "Tipareste Cod" -#: flatcamGUI/FlatCAMGUI.py:1645 +#: flatcamGUI/FlatCAMGUI.py:1648 msgid "Find in Code" msgstr "Cauta in Cod" -#: flatcamGUI/FlatCAMGUI.py:1650 +#: flatcamGUI/FlatCAMGUI.py:1653 msgid "Replace With" msgstr "Inlocuieste cu" -#: flatcamGUI/FlatCAMGUI.py:1654 +#: flatcamGUI/FlatCAMGUI.py:1657 msgid "All" msgstr "Toate" -#: flatcamGUI/FlatCAMGUI.py:1656 +#: flatcamGUI/FlatCAMGUI.py:1659 msgid "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." @@ -5925,15 +5952,15 @@ msgstr "" "'Cauta'\n" "cu textul din casuta 'Inlocuieste'" -#: flatcamGUI/FlatCAMGUI.py:1659 +#: flatcamGUI/FlatCAMGUI.py:1662 msgid "Open Code" msgstr "Deschide Cod" -#: flatcamGUI/FlatCAMGUI.py:1660 +#: flatcamGUI/FlatCAMGUI.py:1663 msgid "Save Code" msgstr "Salvează Cod" -#: flatcamGUI/FlatCAMGUI.py:1695 +#: flatcamGUI/FlatCAMGUI.py:1698 msgid "" "Relative neasurement.\n" "Reference is last click position" @@ -5941,7 +5968,7 @@ msgstr "" "Masuratoare relativa.\n" "Referința este poziţia ultimului click pe canvas." -#: flatcamGUI/FlatCAMGUI.py:1701 +#: flatcamGUI/FlatCAMGUI.py:1704 msgid "" "Absolute neasurement.\n" "Reference is (X=0, Y= 0) position" @@ -5949,23 +5976,23 @@ msgstr "" "Masuratoare absoluta.\n" "Referința este originea (0, 0)." -#: flatcamGUI/FlatCAMGUI.py:1896 +#: flatcamGUI/FlatCAMGUI.py:1899 msgid "Select 'Esc'" msgstr "Select" -#: flatcamGUI/FlatCAMGUI.py:1921 +#: flatcamGUI/FlatCAMGUI.py:1926 msgid "Copy Objects" msgstr "Copiază Obiecte" -#: flatcamGUI/FlatCAMGUI.py:1923 +#: flatcamGUI/FlatCAMGUI.py:1928 msgid "Delete Shape" msgstr "Șterge forme geo" -#: flatcamGUI/FlatCAMGUI.py:1928 +#: flatcamGUI/FlatCAMGUI.py:1933 msgid "Move Objects" msgstr "Muta Obiecte" -#: flatcamGUI/FlatCAMGUI.py:2358 +#: flatcamGUI/FlatCAMGUI.py:2365 msgid "" "Please first select a geometry item to be cutted\n" "then select the geometry item that will be cutted\n" @@ -5976,17 +6003,17 @@ msgstr "" "apoi selectează forma geo. taietoare. La final apasa tasta ~X~ sau\n" "butonul corespunzator din Toolbar." -#: flatcamGUI/FlatCAMGUI.py:2365 flatcamGUI/FlatCAMGUI.py:2502 -#: flatcamGUI/FlatCAMGUI.py:2561 flatcamGUI/FlatCAMGUI.py:2581 +#: flatcamGUI/FlatCAMGUI.py:2372 flatcamGUI/FlatCAMGUI.py:2509 +#: flatcamGUI/FlatCAMGUI.py:2568 flatcamGUI/FlatCAMGUI.py:2588 msgid "Warning" msgstr "Atenţie" -#: flatcamGUI/FlatCAMGUI.py:2432 flatcamGUI/FlatCAMGUI.py:2631 -#: flatcamGUI/FlatCAMGUI.py:2842 +#: flatcamGUI/FlatCAMGUI.py:2439 flatcamGUI/FlatCAMGUI.py:2638 +#: flatcamGUI/FlatCAMGUI.py:2849 msgid "[WARNING_NOTCL] Cancelled." msgstr "[WARNING_NOTCL] Anulat." -#: flatcamGUI/FlatCAMGUI.py:2497 +#: flatcamGUI/FlatCAMGUI.py:2504 msgid "" "Please select geometry items \n" "on which to perform Intersection Tool." @@ -5994,7 +6021,7 @@ msgstr "" "Selectează forma geometrică asupra careia să se\n" "aplice Unealta Intersecţie." -#: flatcamGUI/FlatCAMGUI.py:2556 +#: flatcamGUI/FlatCAMGUI.py:2563 msgid "" "Please select geometry items \n" "on which to perform Substraction Tool." @@ -6002,7 +6029,7 @@ msgstr "" "Selectează forma geometrică asupra careia să se\n" "aplice Unealta Substracţie." -#: flatcamGUI/FlatCAMGUI.py:2576 +#: flatcamGUI/FlatCAMGUI.py:2583 msgid "" "Please select geometry items \n" "on which to perform union." @@ -6010,55 +6037,55 @@ msgstr "" "Selectează forma geometrică asupra careia să se\n" "aplice Unealta Uniune." -#: flatcamGUI/FlatCAMGUI.py:2647 flatcamGUI/FlatCAMGUI.py:2859 +#: flatcamGUI/FlatCAMGUI.py:2654 flatcamGUI/FlatCAMGUI.py:2866 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to delete." msgstr "[WARNING_NOTCL] Anulat. Nimic nu este selectat pentru ștergere." -#: flatcamGUI/FlatCAMGUI.py:2731 flatcamGUI/FlatCAMGUI.py:2926 +#: flatcamGUI/FlatCAMGUI.py:2738 flatcamGUI/FlatCAMGUI.py:2933 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to copy." msgstr "[WARNING_NOTCL] Anulat. Nimic nu este selectat pentru copiere." -#: flatcamGUI/FlatCAMGUI.py:2777 flatcamGUI/FlatCAMGUI.py:2972 +#: flatcamGUI/FlatCAMGUI.py:2784 flatcamGUI/FlatCAMGUI.py:2979 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to move." msgstr "[WARNING_NOTCL] Anulat. Nimic nu este selectat pentru mutare." -#: flatcamGUI/FlatCAMGUI.py:2986 +#: flatcamGUI/FlatCAMGUI.py:2993 msgid "New Tool ..." msgstr "O noua Unealta ..." -#: flatcamGUI/FlatCAMGUI.py:2987 +#: flatcamGUI/FlatCAMGUI.py:2994 msgid "Enter a Tool Diameter:" msgstr "Introdu un Diametru de Unealta:" -#: flatcamGUI/FlatCAMGUI.py:3029 +#: flatcamGUI/FlatCAMGUI.py:3036 msgid "Measurement Tool exit..." msgstr "Măsurătoarea s-a terminat ..." -#: flatcamGUI/FlatCAMGUI.py:3324 +#: flatcamGUI/FlatCAMGUI.py:3331 msgid "Grid X value:" msgstr "Valoarea Grid_X:" -#: flatcamGUI/FlatCAMGUI.py:3326 +#: flatcamGUI/FlatCAMGUI.py:3333 msgid "This is the Grid snap value on X axis." msgstr "Aceasta este valoare pentru lipire pe Grid pe axa X." -#: flatcamGUI/FlatCAMGUI.py:3331 +#: flatcamGUI/FlatCAMGUI.py:3338 msgid "Grid Y value:" msgstr "Valoarea Grid_Y:" -#: flatcamGUI/FlatCAMGUI.py:3333 +#: flatcamGUI/FlatCAMGUI.py:3340 msgid "This is the Grid snap value on Y axis." msgstr "Aceasta este valoare pentru lipire pe Grid pe axa Y." -#: flatcamGUI/FlatCAMGUI.py:3338 +#: flatcamGUI/FlatCAMGUI.py:3345 msgid "Snap Max:" msgstr "Lipire Max:" -#: flatcamGUI/FlatCAMGUI.py:3343 +#: flatcamGUI/FlatCAMGUI.py:3350 msgid "Workspace:" msgstr "Spatiu de lucru:" -#: flatcamGUI/FlatCAMGUI.py:3345 +#: flatcamGUI/FlatCAMGUI.py:3352 msgid "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." @@ -6066,11 +6093,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:3348 +#: flatcamGUI/FlatCAMGUI.py:3355 msgid "Wk. format:" msgstr "Format SL:" -#: flatcamGUI/FlatCAMGUI.py:3350 +#: flatcamGUI/FlatCAMGUI.py:3357 msgid "" "Select the type of rectangle to be used on canvas,\n" "as valid workspace." @@ -6078,11 +6105,11 @@ msgstr "" "Selectează tipul de patrulater care va fi desenat pe canvas,\n" "pentru a delimita suprafata de lucru disponibila (SL)." -#: flatcamGUI/FlatCAMGUI.py:3363 +#: flatcamGUI/FlatCAMGUI.py:3370 msgid "Plot Fill:" msgstr "Culoare Afișare:" -#: flatcamGUI/FlatCAMGUI.py:3365 +#: flatcamGUI/FlatCAMGUI.py:3372 msgid "" "Set the fill color for plotted objects.\n" "First 6 digits are the color and the last 2\n" @@ -6092,28 +6119,28 @@ msgstr "" "Primii 6 digiti sunt culoarea efectiva și ultimii\n" "doi sunt pentru nivelul de transparenţă (alfa)." -#: flatcamGUI/FlatCAMGUI.py:3379 flatcamGUI/FlatCAMGUI.py:3429 -#: flatcamGUI/FlatCAMGUI.py:3479 +#: flatcamGUI/FlatCAMGUI.py:3386 flatcamGUI/FlatCAMGUI.py:3436 +#: flatcamGUI/FlatCAMGUI.py:3486 msgid "Alpha Level:" msgstr "Nivel Alfa:" -#: flatcamGUI/FlatCAMGUI.py:3381 +#: flatcamGUI/FlatCAMGUI.py:3388 msgid "Set the fill transparency for plotted objects." msgstr "Setează nivelul de transparenţa pentru obiectele afisate." -#: flatcamGUI/FlatCAMGUI.py:3398 +#: flatcamGUI/FlatCAMGUI.py:3405 msgid "Plot Line:" msgstr "Culoare contur:" -#: flatcamGUI/FlatCAMGUI.py:3400 +#: flatcamGUI/FlatCAMGUI.py:3407 msgid "Set the line color for plotted objects." msgstr "Setează culoarea conturului." -#: flatcamGUI/FlatCAMGUI.py:3412 +#: flatcamGUI/FlatCAMGUI.py:3419 msgid "Sel. Fill:" msgstr "Culoare Selecţie:" -#: flatcamGUI/FlatCAMGUI.py:3414 +#: flatcamGUI/FlatCAMGUI.py:3421 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from left to right.\n" @@ -6125,27 +6152,27 @@ msgstr "" "Primii 6 digiti sunt culoarea efectiva și ultimii\n" "doi sunt pentru nivelul de transparenţă (alfa)." -#: flatcamGUI/FlatCAMGUI.py:3431 +#: flatcamGUI/FlatCAMGUI.py:3438 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:3448 +#: flatcamGUI/FlatCAMGUI.py:3455 msgid "Sel. Line:" msgstr "Contur Selecţie:" -#: flatcamGUI/FlatCAMGUI.py:3450 +#: flatcamGUI/FlatCAMGUI.py:3457 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:3462 +#: flatcamGUI/FlatCAMGUI.py:3469 msgid "Sel2. Fill:" msgstr "Culoare Selecţie 2:" -#: flatcamGUI/FlatCAMGUI.py:3464 +#: flatcamGUI/FlatCAMGUI.py:3471 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from right to left.\n" @@ -6157,53 +6184,53 @@ msgstr "" "Primii 6 digiti sunt culoarea efectiva și ultimii\n" "doi sunt pentru nivelul de transparenţă (alfa)." -#: flatcamGUI/FlatCAMGUI.py:3481 +#: flatcamGUI/FlatCAMGUI.py:3488 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:3498 +#: flatcamGUI/FlatCAMGUI.py:3505 msgid "Sel2. Line:" msgstr "Contur Selecţie 2:" -#: flatcamGUI/FlatCAMGUI.py:3500 +#: flatcamGUI/FlatCAMGUI.py:3507 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:3512 +#: flatcamGUI/FlatCAMGUI.py:3519 msgid "Editor Draw:" msgstr "Desen Editor:" -#: flatcamGUI/FlatCAMGUI.py:3514 +#: flatcamGUI/FlatCAMGUI.py:3521 msgid "Set the color for the shape." msgstr "Setează culoarea pentru forma geometrică din Editor." -#: flatcamGUI/FlatCAMGUI.py:3526 +#: flatcamGUI/FlatCAMGUI.py:3533 msgid "Editor Draw Sel.:" msgstr "Sel. Desen Editor:" -#: flatcamGUI/FlatCAMGUI.py:3528 +#: flatcamGUI/FlatCAMGUI.py:3535 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:3540 +#: flatcamGUI/FlatCAMGUI.py:3547 msgid "Project Items:" msgstr "Elemente Proiect:" -#: flatcamGUI/FlatCAMGUI.py:3542 +#: flatcamGUI/FlatCAMGUI.py:3549 msgid "Set the color of the items in Project Tab Tree." msgstr "Setează culoarea elementelor din tab-ul Proiect." -#: flatcamGUI/FlatCAMGUI.py:3553 +#: flatcamGUI/FlatCAMGUI.py:3560 msgid "Proj. Dis. Items:" msgstr "Elem. proj. dez." -#: flatcamGUI/FlatCAMGUI.py:3555 +#: flatcamGUI/FlatCAMGUI.py:3562 msgid "" "Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled." @@ -6211,15 +6238,15 @@ msgstr "" "Setează culoarea elementelor din tab-ul Proiect\n" "in cazul in care elementele sunt dezactivate." -#: flatcamGUI/FlatCAMGUI.py:3606 +#: flatcamGUI/FlatCAMGUI.py:3613 msgid "GUI Settings" msgstr "Setări GUI" -#: flatcamGUI/FlatCAMGUI.py:3613 +#: flatcamGUI/FlatCAMGUI.py:3620 msgid "Layout:" msgstr "Amplasare:" -#: flatcamGUI/FlatCAMGUI.py:3615 +#: flatcamGUI/FlatCAMGUI.py:3622 msgid "" "Select an layout for FlatCAM.\n" "It is applied immediately." @@ -6227,11 +6254,11 @@ msgstr "" "Selectează un stil de amplasare a elementelor GUI in FlatCAM.\n" "Se aplica imediat." -#: flatcamGUI/FlatCAMGUI.py:3631 +#: flatcamGUI/FlatCAMGUI.py:3638 msgid "Style:" msgstr "Stil:" -#: flatcamGUI/FlatCAMGUI.py:3633 +#: flatcamGUI/FlatCAMGUI.py:3640 msgid "" "Select an style for FlatCAM.\n" "It will be applied at the next app start." @@ -6239,11 +6266,11 @@ msgstr "" "Selectează un stil pentru FlatCAM.\n" "Se va aplica la urmatoarea pornire a aplicaţiei." -#: flatcamGUI/FlatCAMGUI.py:3644 +#: flatcamGUI/FlatCAMGUI.py:3651 msgid "HDPI Support:" msgstr "Suport H-DPI:" -#: flatcamGUI/FlatCAMGUI.py:3646 +#: flatcamGUI/FlatCAMGUI.py:3653 msgid "" "Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start." @@ -6252,11 +6279,11 @@ msgstr "" "Util pentru monitoarele 4k.\n" "Va fi aplicată la următoarea pornire a aplicaţiei." -#: flatcamGUI/FlatCAMGUI.py:3659 +#: flatcamGUI/FlatCAMGUI.py:3666 msgid "Clear GUI Settings:" msgstr "Șterge setările GUI:" -#: flatcamGUI/FlatCAMGUI.py:3661 +#: flatcamGUI/FlatCAMGUI.py:3668 msgid "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." @@ -6264,15 +6291,15 @@ msgstr "" "Șterge setările GUI pentru FlatCAM,\n" "cum ar fi: amplasare, stare UI, suport HDPI sau traducerea." -#: flatcamGUI/FlatCAMGUI.py:3664 +#: flatcamGUI/FlatCAMGUI.py:3671 msgid "Clear" msgstr "Șterge" -#: flatcamGUI/FlatCAMGUI.py:3668 +#: flatcamGUI/FlatCAMGUI.py:3675 msgid "Hover Shape:" msgstr "Forma Hover:" -#: flatcamGUI/FlatCAMGUI.py:3670 +#: flatcamGUI/FlatCAMGUI.py:3677 msgid "" "Enable display of a hover shape for FlatCAM objects.\n" "It is displayed whenever the mouse cursor is hovering\n" @@ -6282,11 +6309,11 @@ msgstr "" "in canvas-ul FlatCAM. Forma este afișată doar daca obiectul \n" "nu este selectat." -#: flatcamGUI/FlatCAMGUI.py:3677 +#: flatcamGUI/FlatCAMGUI.py:3684 msgid "Sel. Shape:" msgstr "Forma Sel.:" -#: flatcamGUI/FlatCAMGUI.py:3679 +#: flatcamGUI/FlatCAMGUI.py:3686 msgid "" "Enable the display of a selection shape for FlatCAM objects.\n" "It is displayed whenever the mouse selects an object\n" @@ -6298,23 +6325,23 @@ msgstr "" "pe canvas-ul FlatCAM fie facând click pe obiect fie prin\n" "crearea unei ferestre de selectie." -#: flatcamGUI/FlatCAMGUI.py:3721 +#: flatcamGUI/FlatCAMGUI.py:3728 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:3724 +#: flatcamGUI/FlatCAMGUI.py:3731 msgid "Clear GUI Settings" msgstr "Șterge Setările GUI" -#: flatcamGUI/FlatCAMGUI.py:3745 +#: flatcamGUI/FlatCAMGUI.py:3752 msgid "App Preferences" msgstr "Preferințele Aplicaţie" -#: flatcamGUI/FlatCAMGUI.py:3751 +#: flatcamGUI/FlatCAMGUI.py:3758 msgid "Units:" msgstr "Unitati:" -#: flatcamGUI/FlatCAMGUI.py:3752 +#: flatcamGUI/FlatCAMGUI.py:3759 msgid "" "The default value for FlatCAM units.\n" "Whatever is selected here is set every time\n" @@ -6323,11 +6350,11 @@ msgstr "" "Unitatea de masura pt FlatCAM.\n" "Este setată la fiecare pornire a programului." -#: flatcamGUI/FlatCAMGUI.py:3759 +#: flatcamGUI/FlatCAMGUI.py:3766 msgid "APP. LEVEL:" msgstr "Nivel aplic.:" -#: flatcamGUI/FlatCAMGUI.py:3760 +#: flatcamGUI/FlatCAMGUI.py:3767 msgid "" "Choose the default level of usage for FlatCAM.\n" "BASIC level -> reduced functionality, best for beginner's.\n" @@ -6343,19 +6370,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:3769 +#: flatcamGUI/FlatCAMGUI.py:3776 msgid "Languages:" msgstr "Traduceri:" -#: flatcamGUI/FlatCAMGUI.py:3770 +#: flatcamGUI/FlatCAMGUI.py:3777 msgid "Set the language used throughout FlatCAM." msgstr "Setează limba folosita pentru textele din FlatCAM." -#: flatcamGUI/FlatCAMGUI.py:3773 +#: flatcamGUI/FlatCAMGUI.py:3780 msgid "Apply Language" msgstr "Aplica Traducere" -#: flatcamGUI/FlatCAMGUI.py:3774 +#: flatcamGUI/FlatCAMGUI.py:3781 msgid "" "Set the language used throughout FlatCAM.\n" "The app will restart after click.Windows: When FlatCAM is installed in " @@ -6371,11 +6398,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:3783 +#: flatcamGUI/FlatCAMGUI.py:3790 msgid "Shell at StartUp:" msgstr "Shell la pornire:" -#: flatcamGUI/FlatCAMGUI.py:3785 flatcamGUI/FlatCAMGUI.py:3790 +#: flatcamGUI/FlatCAMGUI.py:3792 flatcamGUI/FlatCAMGUI.py:3797 msgid "" "Check this box if you want the shell to\n" "start automatically at startup." @@ -6384,11 +6411,11 @@ msgstr "" "automata a ferestrei Shell (linia de comanda)\n" "la initializarea aplicaţiei." -#: flatcamGUI/FlatCAMGUI.py:3795 +#: flatcamGUI/FlatCAMGUI.py:3802 msgid "Version Check:" msgstr "Verificare versiune:" -#: flatcamGUI/FlatCAMGUI.py:3797 flatcamGUI/FlatCAMGUI.py:3802 +#: flatcamGUI/FlatCAMGUI.py:3804 flatcamGUI/FlatCAMGUI.py:3809 msgid "" "Check this box if you want to check\n" "for a new version automatically at startup." @@ -6397,11 +6424,11 @@ msgstr "" "daca exista o versiune mai noua,\n" "la pornirea aplicaţiei." -#: flatcamGUI/FlatCAMGUI.py:3807 +#: flatcamGUI/FlatCAMGUI.py:3814 msgid "Send Stats:" msgstr "Statistici:" -#: flatcamGUI/FlatCAMGUI.py:3809 flatcamGUI/FlatCAMGUI.py:3814 +#: flatcamGUI/FlatCAMGUI.py:3816 flatcamGUI/FlatCAMGUI.py:3821 msgid "" "Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM." @@ -6411,11 +6438,11 @@ msgstr "" "aplicaţia. In acest fel dezvoltatorii vor sti unde să se focalizeze\n" "in crearea de inbunatatiri." -#: flatcamGUI/FlatCAMGUI.py:3821 +#: flatcamGUI/FlatCAMGUI.py:3828 msgid "Pan Button:" msgstr "Buton Pan (mișcare):" -#: flatcamGUI/FlatCAMGUI.py:3822 +#: flatcamGUI/FlatCAMGUI.py:3829 msgid "" "Select the mouse button to use for panning:\n" "- MMB --> Middle Mouse Button\n" @@ -6425,19 +6452,19 @@ msgstr "" "- MMB - butonul din mijloc al mouse-ului\n" "- RMB - butonul in dreapta al mouse-ului." -#: flatcamGUI/FlatCAMGUI.py:3829 +#: flatcamGUI/FlatCAMGUI.py:3836 msgid "Multiple Sel:" msgstr "Sel. multipla:" -#: flatcamGUI/FlatCAMGUI.py:3830 +#: flatcamGUI/FlatCAMGUI.py:3837 msgid "Select the key used for multiple selection." msgstr "Selectează tasta folosita pentru selectia multipla." -#: flatcamGUI/FlatCAMGUI.py:3835 +#: flatcamGUI/FlatCAMGUI.py:3842 msgid "Project at StartUp:" msgstr "Proiect la pornire:" -#: flatcamGUI/FlatCAMGUI.py:3837 flatcamGUI/FlatCAMGUI.py:3842 +#: flatcamGUI/FlatCAMGUI.py:3844 flatcamGUI/FlatCAMGUI.py:3849 msgid "" "Check this box if you want the project/selected/tool tab area to\n" "to be shown automatically at startup." @@ -6445,11 +6472,11 @@ msgstr "" "Bifează aici daca dorești ca zona Notebook să fie\n" "afișată automat la pornire." -#: flatcamGUI/FlatCAMGUI.py:3847 +#: flatcamGUI/FlatCAMGUI.py:3854 msgid "Project AutoHide:" msgstr "Ascundere Proiect:" -#: flatcamGUI/FlatCAMGUI.py:3849 flatcamGUI/FlatCAMGUI.py:3855 +#: flatcamGUI/FlatCAMGUI.py:3856 flatcamGUI/FlatCAMGUI.py:3862 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" @@ -6459,11 +6486,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:3861 +#: flatcamGUI/FlatCAMGUI.py:3868 msgid "Enable ToolTips:" msgstr "Activează ToolTip-uri:" -#: flatcamGUI/FlatCAMGUI.py:3863 flatcamGUI/FlatCAMGUI.py:3868 +#: flatcamGUI/FlatCAMGUI.py:3870 flatcamGUI/FlatCAMGUI.py:3875 msgid "" "Check this box if you want to have toolTips displayed\n" "when hovering with mouse over items throughout the App." @@ -6471,11 +6498,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:3871 +#: flatcamGUI/FlatCAMGUI.py:3878 msgid "Workers number:" msgstr "Număr de worker's:" -#: flatcamGUI/FlatCAMGUI.py:3873 flatcamGUI/FlatCAMGUI.py:3882 +#: flatcamGUI/FlatCAMGUI.py:3880 flatcamGUI/FlatCAMGUI.py:3889 msgid "" "The number of Qthreads made available to the App.\n" "A bigger number may finish the jobs more quickly but\n" @@ -6491,7 +6518,7 @@ msgstr "" "Valoarea standard este 2.\n" "Dupa schimbarea valoarii, se va aplica la următoarea pornire a aplicatiei." -#: flatcamGUI/FlatCAMGUI.py:3894 flatcamGUI/FlatCAMGUI.py:3903 +#: flatcamGUI/FlatCAMGUI.py:3901 flatcamGUI/FlatCAMGUI.py:3910 msgid "" "This value can counter the effect of the Circle Steps\n" "parameter. Default value is 0.01.\n" @@ -6507,11 +6534,11 @@ msgstr "" "O valoare mai mare va oferi mai multă performantă dar in\n" "defavoarea nievelului de detalii." -#: flatcamGUI/FlatCAMGUI.py:3939 +#: flatcamGUI/FlatCAMGUI.py:3946 msgid "\"Open\" behavior" msgstr "Stil \"Încarcare\"" -#: flatcamGUI/FlatCAMGUI.py:3941 +#: flatcamGUI/FlatCAMGUI.py:3948 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" @@ -6529,11 +6556,11 @@ msgstr "" "ambele \n" "cazuri: fie că se deschide un fisier, fie că se salvează un fisier." -#: flatcamGUI/FlatCAMGUI.py:3950 +#: flatcamGUI/FlatCAMGUI.py:3957 msgid "Save Compressed Project" msgstr "Salvează Proiectul comprimat" -#: flatcamGUI/FlatCAMGUI.py:3952 +#: flatcamGUI/FlatCAMGUI.py:3959 msgid "" "Whether to save a compressed or uncompressed project.\n" "When checked it will save a compressed FlatCAM project." @@ -6542,11 +6569,11 @@ msgstr "" "Când este bifat aici, se va salva o arhiva a proiectului\n" "lucru care poate reduce dimensiunea semnificativ." -#: flatcamGUI/FlatCAMGUI.py:3963 +#: flatcamGUI/FlatCAMGUI.py:3970 msgid "Compression Level:" msgstr "Nivel compresie:" -#: flatcamGUI/FlatCAMGUI.py:3965 +#: flatcamGUI/FlatCAMGUI.py:3972 msgid "" "The level of compression used when saving\n" "a FlatCAM project. Higher value means better compression\n" @@ -6557,49 +6584,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:3991 flatcamGUI/FlatCAMGUI.py:4360 -#: flatcamGUI/FlatCAMGUI.py:5030 flatcamGUI/FlatCAMGUI.py:5402 +#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4367 +#: flatcamGUI/FlatCAMGUI.py:5037 flatcamGUI/FlatCAMGUI.py:5409 #: 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:3998 flatcamGUI/FlatCAMGUI.py:4372 +#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/FlatCAMGUI.py:4379 #: flatcamGUI/ObjectUI.py:156 flatcamGUI/ObjectUI.py:506 msgid "Solid" msgstr "Solid" -#: flatcamGUI/FlatCAMGUI.py:4000 flatcamGUI/ObjectUI.py:158 +#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:158 msgid "Solid color polygons." msgstr "Poligoane color solide." -#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/ObjectUI.py:164 +#: flatcamGUI/FlatCAMGUI.py:4012 flatcamGUI/ObjectUI.py:164 msgid "M-Color" msgstr "M-Color" -#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:166 +#: flatcamGUI/FlatCAMGUI.py:4014 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:4012 flatcamGUI/FlatCAMGUI.py:4366 -#: flatcamGUI/FlatCAMGUI.py:5034 flatcamGUI/ObjectUI.py:172 +#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:4373 +#: flatcamGUI/FlatCAMGUI.py:5041 flatcamGUI/ObjectUI.py:172 msgid "Plot" msgstr "Afisează" -#: flatcamGUI/FlatCAMGUI.py:4014 flatcamGUI/FlatCAMGUI.py:5036 +#: flatcamGUI/FlatCAMGUI.py:4021 flatcamGUI/FlatCAMGUI.py:5043 #: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:546 #: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1437 msgid "Plot (show) this object." msgstr "Afisează (arata) acest obiect." -#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:5043 -#: flatcamGUI/FlatCAMGUI.py:5438 +#: flatcamGUI/FlatCAMGUI.py:4026 flatcamGUI/FlatCAMGUI.py:5050 +#: flatcamGUI/FlatCAMGUI.py:5445 msgid "Circle Steps:" msgstr "Aprox. Cerc" -#: flatcamGUI/FlatCAMGUI.py:4021 +#: flatcamGUI/FlatCAMGUI.py:4028 msgid "" "The number of circle steps for Gerber \n" "circular aperture linear approximation." @@ -6607,15 +6634,15 @@ msgstr "" "Numărul de segmente utilizate pentru\n" "aproximarea lineara a aperturilor Gerber circulare." -#: flatcamGUI/FlatCAMGUI.py:4036 +#: flatcamGUI/FlatCAMGUI.py:4043 msgid "Gerber Options" msgstr "Opțiuni Gerber" -#: flatcamGUI/FlatCAMGUI.py:4040 flatcamGUI/ObjectUI.py:251 +#: flatcamGUI/FlatCAMGUI.py:4047 flatcamGUI/ObjectUI.py:251 msgid "Isolation Routing:" msgstr "Izolare:" -#: flatcamGUI/FlatCAMGUI.py:4042 flatcamGUI/ObjectUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:4049 flatcamGUI/ObjectUI.py:253 msgid "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." @@ -6624,17 +6651,17 @@ msgstr "" "care să fie taiate in afara poligoanelor,\n" "urmărindu-le conturul." -#: flatcamGUI/FlatCAMGUI.py:4053 flatcamGUI/FlatCAMGUI.py:4753 -#: flatcamGUI/FlatCAMGUI.py:5726 flatcamGUI/ObjectUI.py:788 +#: flatcamGUI/FlatCAMGUI.py:4060 flatcamGUI/FlatCAMGUI.py:4760 +#: flatcamGUI/FlatCAMGUI.py:5733 flatcamGUI/ObjectUI.py:788 #: flatcamGUI/ObjectUI.py:804 msgid "Diameter of the cutting tool." msgstr "Diametrul uneltei taietoare." -#: flatcamGUI/FlatCAMGUI.py:4060 +#: flatcamGUI/FlatCAMGUI.py:4067 msgid "Width (# passes):" msgstr "Latime(# treceri):" -#: flatcamGUI/FlatCAMGUI.py:4062 flatcamGUI/ObjectUI.py:275 +#: flatcamGUI/FlatCAMGUI.py:4069 flatcamGUI/ObjectUI.py:275 msgid "" "Width of the isolation gap in\n" "number (integer) of tool widths." @@ -6642,11 +6669,11 @@ msgstr "" "Lăţimea spatiului de izolare\n" "in număr intreg de grosimi ale uneltei." -#: flatcamGUI/FlatCAMGUI.py:4070 flatcamGUI/ObjectUI.py:283 +#: flatcamGUI/FlatCAMGUI.py:4077 flatcamGUI/ObjectUI.py:283 msgid "Pass overlap:" msgstr "Suprapunere:" -#: flatcamGUI/FlatCAMGUI.py:4072 flatcamGUI/ObjectUI.py:285 +#: flatcamGUI/FlatCAMGUI.py:4079 flatcamGUI/ObjectUI.py:285 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -6660,11 +6687,11 @@ msgstr "" "Exemplu:\n" "O valoare de 0.25 reprezinta o suprapunere de 25%% din diametrul uneltei." -#: flatcamGUI/FlatCAMGUI.py:4080 flatcamGUI/ObjectUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:4087 flatcamGUI/ObjectUI.py:295 msgid "Milling Type:" msgstr "Tip Frezare:" -#: flatcamGUI/FlatCAMGUI.py:4082 flatcamGUI/ObjectUI.py:297 +#: flatcamGUI/FlatCAMGUI.py:4089 flatcamGUI/ObjectUI.py:297 msgid "" "Milling type:\n" "- climb / best for precision milling and to reduce tool usage\n" @@ -6675,19 +6702,19 @@ msgstr "" "uneltei\n" "- conventional -> pentru cazul când nu exista o compensare a 'backlash-ului'" -#: flatcamGUI/FlatCAMGUI.py:4092 +#: flatcamGUI/FlatCAMGUI.py:4099 msgid "Combine Passes" msgstr "Combina" -#: flatcamGUI/FlatCAMGUI.py:4094 flatcamGUI/ObjectUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/ObjectUI.py:309 msgid "Combine all passes into one object" msgstr "Combina toate trecerile intr-un singur obiect" -#: flatcamGUI/FlatCAMGUI.py:4099 +#: flatcamGUI/FlatCAMGUI.py:4106 msgid "Clear non-copper:" msgstr "Curăță non-Cu:" -#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/FlatCAMGUI.py:5614 +#: flatcamGUI/FlatCAMGUI.py:4108 flatcamGUI/FlatCAMGUI.py:5621 #: flatcamGUI/ObjectUI.py:386 msgid "" "Create a Geometry object with\n" @@ -6697,12 +6724,12 @@ msgstr "" "care să curete de cupru toate zonele unde se dorește să nu \n" "fie cupru." -#: flatcamGUI/FlatCAMGUI.py:4110 flatcamGUI/FlatCAMGUI.py:4136 +#: flatcamGUI/FlatCAMGUI.py:4117 flatcamGUI/FlatCAMGUI.py:4143 #: flatcamGUI/ObjectUI.py:430 flatcamGUI/ObjectUI.py:464 msgid "Boundary Margin:" msgstr "Margine:" -#: flatcamGUI/FlatCAMGUI.py:4112 flatcamGUI/ObjectUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:4119 flatcamGUI/ObjectUI.py:432 msgid "" "Specify the edge of the PCB\n" "by drawing a box around all\n" @@ -6713,11 +6740,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:4122 flatcamGUI/FlatCAMGUI.py:4145 +#: flatcamGUI/FlatCAMGUI.py:4129 flatcamGUI/FlatCAMGUI.py:4152 msgid "Rounded corners" msgstr "C. rotunjite" -#: flatcamGUI/FlatCAMGUI.py:4124 +#: flatcamGUI/FlatCAMGUI.py:4131 msgid "" "Creates a Geometry objects with polygons\n" "covering the copper-free areas of the PCB." @@ -6725,11 +6752,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:4130 flatcamGUI/ObjectUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:4137 flatcamGUI/ObjectUI.py:454 msgid "Bounding Box:" msgstr "Forma înconjurătoare::" -#: flatcamGUI/FlatCAMGUI.py:4138 flatcamGUI/ObjectUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:4145 flatcamGUI/ObjectUI.py:466 msgid "" "Distance of the edges of the box\n" "to the nearest polygon." @@ -6737,7 +6764,7 @@ msgstr "" "Distanta de la marginile formei înconjurătoare\n" "pana la cel mai apropiat poligon." -#: flatcamGUI/FlatCAMGUI.py:4147 flatcamGUI/ObjectUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:4154 flatcamGUI/ObjectUI.py:476 msgid "" "If the bounding box is \n" "to have rounded corners\n" @@ -6747,15 +6774,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:4161 +#: flatcamGUI/FlatCAMGUI.py:4168 msgid "Gerber Adv. Options" msgstr "Opțiuni Av. Gerber" -#: flatcamGUI/FlatCAMGUI.py:4165 +#: flatcamGUI/FlatCAMGUI.py:4172 msgid "Advanced Param.:" msgstr "Param. avansati.:" -#: flatcamGUI/FlatCAMGUI.py:4167 +#: flatcamGUI/FlatCAMGUI.py:4174 msgid "" "A list of Gerber advanced parameters.\n" "Those parameters are available only for\n" @@ -6766,11 +6793,11 @@ msgstr "" "când este selectat Nivelul Avansat pentru\n" "aplicaţie in Preferințe - > General" -#: flatcamGUI/FlatCAMGUI.py:4177 flatcamGUI/ObjectUI.py:314 +#: flatcamGUI/FlatCAMGUI.py:4184 flatcamGUI/ObjectUI.py:314 msgid "\"Follow\"" msgstr "\"Urmareste\"" -#: flatcamGUI/FlatCAMGUI.py:4179 flatcamGUI/ObjectUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:4186 flatcamGUI/ObjectUI.py:316 msgid "" "Generate a 'Follow' geometry.\n" "This means that it will cut through\n" @@ -6780,11 +6807,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:4187 +#: flatcamGUI/FlatCAMGUI.py:4194 msgid "Table Show/Hide" msgstr "Arata/Ascunde Tabela" -#: flatcamGUI/FlatCAMGUI.py:4189 +#: flatcamGUI/FlatCAMGUI.py:4196 msgid "" "Toggle the display of the Gerber Apertures Table.\n" "Also, on hide, it will delete all mark shapes\n" @@ -6794,15 +6821,15 @@ msgstr "" "când se ascunde aceasta, se vor șterge și toate\n" "posibil afisatele marcaje ale aperturilor." -#: flatcamGUI/FlatCAMGUI.py:4228 +#: flatcamGUI/FlatCAMGUI.py:4235 msgid "Gerber Export" msgstr "Export Gerber" -#: flatcamGUI/FlatCAMGUI.py:4231 flatcamGUI/FlatCAMGUI.py:4902 +#: flatcamGUI/FlatCAMGUI.py:4238 flatcamGUI/FlatCAMGUI.py:4909 msgid "Export Options:" msgstr "Opțiuni Export::" -#: flatcamGUI/FlatCAMGUI.py:4233 +#: flatcamGUI/FlatCAMGUI.py:4240 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Gerber menu entry." @@ -6811,19 +6838,19 @@ msgstr "" "se exporta un fişier Gerber folosind:\n" "File -> Exportă -> Exportă Gerber" -#: flatcamGUI/FlatCAMGUI.py:4242 flatcamGUI/FlatCAMGUI.py:4913 +#: flatcamGUI/FlatCAMGUI.py:4249 flatcamGUI/FlatCAMGUI.py:4920 msgid "Units:" msgstr "Unitati:" -#: flatcamGUI/FlatCAMGUI.py:4244 flatcamGUI/FlatCAMGUI.py:4250 +#: flatcamGUI/FlatCAMGUI.py:4251 flatcamGUI/FlatCAMGUI.py:4257 msgid "The units used in the Gerber file." msgstr "Unitătile de măsură folosite in fişierul Gerber." -#: flatcamGUI/FlatCAMGUI.py:4256 flatcamGUI/FlatCAMGUI.py:4927 +#: flatcamGUI/FlatCAMGUI.py:4263 flatcamGUI/FlatCAMGUI.py:4934 msgid "Int/Decimals:" msgstr "Int/Zecimale:" -#: flatcamGUI/FlatCAMGUI.py:4258 +#: flatcamGUI/FlatCAMGUI.py:4265 msgid "" "The number of digits in the whole part of the number\n" "and in the fractional part of the number." @@ -6831,7 +6858,7 @@ msgstr "" "Acest număr reprezinta numărul de digiti din partea\n" "intreagă si in partea fractională a numărului." -#: flatcamGUI/FlatCAMGUI.py:4269 +#: flatcamGUI/FlatCAMGUI.py:4276 msgid "" "This numbers signify the number of digits in\n" "the whole part of Gerber coordinates." @@ -6839,7 +6866,7 @@ msgstr "" "Acest număr reprezinta numărul de digiti din partea\n" "intreagă a coordonatelor Gerber." -#: flatcamGUI/FlatCAMGUI.py:4283 +#: flatcamGUI/FlatCAMGUI.py:4290 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Gerber coordinates." @@ -6847,11 +6874,11 @@ msgstr "" "Acest număr reprezinta numărul de digiti din partea\n" "zecimală a coordonatelor Gerber." -#: flatcamGUI/FlatCAMGUI.py:4292 flatcamGUI/FlatCAMGUI.py:4988 +#: flatcamGUI/FlatCAMGUI.py:4299 flatcamGUI/FlatCAMGUI.py:4995 msgid "Zeros:" msgstr "Zero-uri:" -#: flatcamGUI/FlatCAMGUI.py:4295 flatcamGUI/FlatCAMGUI.py:4305 +#: flatcamGUI/FlatCAMGUI.py:4302 flatcamGUI/FlatCAMGUI.py:4312 msgid "" "This sets the type of Gerber zeros.\n" "If LZ then Leading Zeros are removed and\n" @@ -6867,23 +6894,23 @@ msgstr "" "cele de la final sunt păstrate.\n" "(Invers fată de fişierele Excellon)." -#: flatcamGUI/FlatCAMGUI.py:4325 flatcamGUI/FlatCAMGUI.py:5368 -#: flatcamGUI/FlatCAMGUI.py:5612 flatcamGUI/FlatCAMGUI.py:5713 -#: flatcamGUI/FlatCAMGUI.py:5792 flatcamGUI/FlatCAMGUI.py:5851 -#: flatcamGUI/FlatCAMGUI.py:5954 flatcamGUI/FlatCAMGUI.py:6015 -#: flatcamGUI/FlatCAMGUI.py:6214 flatcamGUI/FlatCAMGUI.py:6341 +#: 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 msgid "Parameters:" msgstr "Parametri:" -#: flatcamGUI/FlatCAMGUI.py:4327 +#: flatcamGUI/FlatCAMGUI.py:4334 msgid "A list of Gerber Editor parameters." msgstr "O listă de parametri ai Editorului Gerber." -#: flatcamGUI/FlatCAMGUI.py:4335 flatcamGUI/FlatCAMGUI.py:5378 +#: flatcamGUI/FlatCAMGUI.py:4342 flatcamGUI/FlatCAMGUI.py:5385 msgid "Selection limit:" msgstr "Limita selecţie:" -#: flatcamGUI/FlatCAMGUI.py:4337 +#: flatcamGUI/FlatCAMGUI.py:4344 msgid "" "Set the number of selected Gerber geometry\n" "items above which the utility geometry\n" @@ -6896,15 +6923,15 @@ msgstr "" "Creste performanta cand se mută un număr mai mare\n" "de elemente geometrice." -#: flatcamGUI/FlatCAMGUI.py:4357 +#: flatcamGUI/FlatCAMGUI.py:4364 msgid "Excellon General" msgstr "Excellon General" -#: flatcamGUI/FlatCAMGUI.py:4379 +#: flatcamGUI/FlatCAMGUI.py:4386 msgid "Excellon Format:" msgstr "Formatul Excellon" -#: flatcamGUI/FlatCAMGUI.py:4381 +#: flatcamGUI/FlatCAMGUI.py:4388 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -6950,18 +6977,18 @@ msgstr "" "Sprint Layout 2:4 INCH LZ\n" "KiCAD 3:5 INCH TZ" -#: flatcamGUI/FlatCAMGUI.py:4406 +#: flatcamGUI/FlatCAMGUI.py:4413 msgid "INCH:" msgstr "Inch" -#: flatcamGUI/FlatCAMGUI.py:4409 +#: flatcamGUI/FlatCAMGUI.py:4416 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:4417 flatcamGUI/FlatCAMGUI.py:4450 -#: flatcamGUI/FlatCAMGUI.py:4942 +#: flatcamGUI/FlatCAMGUI.py:4424 flatcamGUI/FlatCAMGUI.py:4457 +#: flatcamGUI/FlatCAMGUI.py:4949 msgid "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." @@ -6969,8 +6996,8 @@ msgstr "" "Acest număr reprezinta numărul de digiti din partea\n" "intreaga a coordonatelor Excellon." -#: flatcamGUI/FlatCAMGUI.py:4431 flatcamGUI/FlatCAMGUI.py:4464 -#: flatcamGUI/FlatCAMGUI.py:4956 +#: flatcamGUI/FlatCAMGUI.py:4438 flatcamGUI/FlatCAMGUI.py:4471 +#: flatcamGUI/FlatCAMGUI.py:4963 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." @@ -6978,21 +7005,21 @@ msgstr "" "Acest număr reprezinta numărul de digiti din partea\n" "zecimala a coordonatelor Excellon." -#: flatcamGUI/FlatCAMGUI.py:4439 +#: flatcamGUI/FlatCAMGUI.py:4446 msgid "METRIC:" msgstr "Metric" -#: flatcamGUI/FlatCAMGUI.py:4442 +#: flatcamGUI/FlatCAMGUI.py:4449 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:4473 +#: flatcamGUI/FlatCAMGUI.py:4480 msgid "Default Zeros:" msgstr "Suprimare Zero:" -#: flatcamGUI/FlatCAMGUI.py:4476 flatcamGUI/FlatCAMGUI.py:4991 +#: flatcamGUI/FlatCAMGUI.py:4483 flatcamGUI/FlatCAMGUI.py:4998 msgid "" "This sets the type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -7008,7 +7035,7 @@ msgstr "" "cele de la final sunt pastrate.\n" "(Invers fata de fişierele Gerber)." -#: flatcamGUI/FlatCAMGUI.py:4487 +#: flatcamGUI/FlatCAMGUI.py:4494 msgid "" "This sets the default type of Excellon zeros.\n" "If it is not detected in the parsed file the value here\n" @@ -7027,11 +7054,11 @@ msgstr "" "cele de la final sunt pastrate.\n" "(Invers fata de fişierele Gerber)." -#: flatcamGUI/FlatCAMGUI.py:4501 +#: flatcamGUI/FlatCAMGUI.py:4508 msgid "Default Units:" msgstr "Unitati Excellon:" -#: flatcamGUI/FlatCAMGUI.py:4504 +#: flatcamGUI/FlatCAMGUI.py:4511 msgid "" "This sets the default units of Excellon files.\n" "If it is not detected in the parsed file the value here\n" @@ -7045,7 +7072,7 @@ msgstr "" "(unde se gasesc unitatile) și atunci se va folosi\n" "aceasta valoare." -#: flatcamGUI/FlatCAMGUI.py:4515 +#: flatcamGUI/FlatCAMGUI.py:4522 msgid "" "This sets the units of Excellon files.\n" "Some Excellon files don't have an header\n" @@ -7058,15 +7085,15 @@ msgstr "" "(unde se gasesc unitatile) și atunci se va folosi\n" "aceasta valoare." -#: flatcamGUI/FlatCAMGUI.py:4531 +#: flatcamGUI/FlatCAMGUI.py:4538 msgid "Excellon Optimization:" msgstr "Optimizarea traseului Excellon:" -#: flatcamGUI/FlatCAMGUI.py:4538 +#: flatcamGUI/FlatCAMGUI.py:4545 msgid "Algorithm: " msgstr "Algoritm:" -#: flatcamGUI/FlatCAMGUI.py:4541 flatcamGUI/FlatCAMGUI.py:4554 +#: flatcamGUI/FlatCAMGUI.py:4548 flatcamGUI/FlatCAMGUI.py:4561 msgid "" "This sets the optimization type for the Excellon drill path.\n" "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" @@ -7090,11 +7117,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:4566 +#: flatcamGUI/FlatCAMGUI.py:4573 msgid "Optimization Time: " msgstr "Durata optimiz.:" -#: flatcamGUI/FlatCAMGUI.py:4569 +#: flatcamGUI/FlatCAMGUI.py:4576 msgid "" "When OR-Tools Metaheuristic (MH) is enabled there is a\n" "maximum threshold for how much time is spent doing the\n" @@ -7105,15 +7132,15 @@ msgstr "" "reprezinta cat timp se sta pentru fiecare element in\n" "incercarea de a afla calea optima." -#: flatcamGUI/FlatCAMGUI.py:4611 +#: flatcamGUI/FlatCAMGUI.py:4618 msgid "Excellon Options" msgstr "Opțiuni Excellon" -#: flatcamGUI/FlatCAMGUI.py:4614 flatcamGUI/ObjectUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:4621 flatcamGUI/ObjectUI.py:584 msgid "Create CNC Job" msgstr "Crează CNCJob" -#: flatcamGUI/FlatCAMGUI.py:4616 +#: flatcamGUI/FlatCAMGUI.py:4623 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object." @@ -7121,13 +7148,13 @@ msgstr "" "Parametrii folositi pentru a crea un obiect FlatCAM tip CNCJob\n" "din acest obiect Excellon." -#: flatcamGUI/FlatCAMGUI.py:4624 flatcamGUI/FlatCAMGUI.py:5094 -#: flatcamGUI/FlatCAMGUI.py:6150 flatcamGUI/ObjectUI.py:595 +#: flatcamGUI/FlatCAMGUI.py:4631 flatcamGUI/FlatCAMGUI.py:5101 +#: flatcamGUI/FlatCAMGUI.py:6157 flatcamGUI/ObjectUI.py:595 #: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolCalculators.py:108 msgid "Cut Z:" msgstr "Z tăiere:" -#: flatcamGUI/FlatCAMGUI.py:4626 flatcamGUI/ObjectUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/ObjectUI.py:597 msgid "" "Drill depth (negative)\n" "below the copper surface." @@ -7136,12 +7163,12 @@ msgstr "" "Daca se foloseşte o val. pozitivă, aplicaţia\n" "va incerca in mod automat să schimbe semnul." -#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/FlatCAMGUI.py:5127 +#: flatcamGUI/FlatCAMGUI.py:4640 flatcamGUI/FlatCAMGUI.py:5134 #: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1098 msgid "Travel Z:" msgstr "Z Deplasare:" -#: flatcamGUI/FlatCAMGUI.py:4635 flatcamGUI/ObjectUI.py:607 +#: flatcamGUI/FlatCAMGUI.py:4642 flatcamGUI/ObjectUI.py:607 msgid "" "Tool height when travelling\n" "across the XY plane." @@ -7150,11 +7177,11 @@ msgstr "" "in planul X-Y, fără a efectua taieri, adica\n" "in afara materialului." -#: flatcamGUI/FlatCAMGUI.py:4643 flatcamGUI/FlatCAMGUI.py:5137 +#: flatcamGUI/FlatCAMGUI.py:4650 flatcamGUI/FlatCAMGUI.py:5144 msgid "Tool change:" msgstr "Schimbare unealtă:" -#: flatcamGUI/FlatCAMGUI.py:4645 flatcamGUI/FlatCAMGUI.py:5139 +#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5146 #: flatcamGUI/ObjectUI.py:617 msgid "" "Include tool-change sequence\n" @@ -7164,11 +7191,11 @@ msgstr "" "in codul G-Code (pauza pentru schimbare unealtă).\n" "De obicei este folosita comanda G-Code M6." -#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5147 +#: flatcamGUI/FlatCAMGUI.py:4659 flatcamGUI/FlatCAMGUI.py:5154 msgid "Toolchange Z:" msgstr "Z schimb. unealtă:" -#: flatcamGUI/FlatCAMGUI.py:4654 flatcamGUI/FlatCAMGUI.py:5149 +#: flatcamGUI/FlatCAMGUI.py:4661 flatcamGUI/FlatCAMGUI.py:5156 msgid "Toolchange Z position." msgstr "" "Înălţimea la care se efectuează schimbarea uneltei.\n" @@ -7176,11 +7203,11 @@ msgstr "" "'toolchanger' automat sau acolo unde utilizatorul\n" "schimba unealtă manual." -#: flatcamGUI/FlatCAMGUI.py:4660 +#: flatcamGUI/FlatCAMGUI.py:4667 msgid "Feedrate:" msgstr "Feedrate:" -#: flatcamGUI/FlatCAMGUI.py:4662 +#: flatcamGUI/FlatCAMGUI.py:4669 msgid "" "Tool speed while drilling\n" "(in units per minute)." @@ -7188,11 +7215,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:4670 +#: flatcamGUI/FlatCAMGUI.py:4677 msgid "Spindle Speed:" msgstr "Viteza Motor:" -#: flatcamGUI/FlatCAMGUI.py:4672 flatcamGUI/FlatCAMGUI.py:5179 +#: flatcamGUI/FlatCAMGUI.py:4679 flatcamGUI/FlatCAMGUI.py:5186 #: flatcamGUI/ObjectUI.py:684 msgid "" "Speed of the spindle\n" @@ -7203,11 +7230,11 @@ msgstr "" "Acest parametru este optional și se poate lasa gol\n" "daca nu se foloseşte." -#: flatcamGUI/FlatCAMGUI.py:4680 flatcamGUI/FlatCAMGUI.py:5187 +#: flatcamGUI/FlatCAMGUI.py:4687 flatcamGUI/FlatCAMGUI.py:5194 msgid "Spindle dir.:" msgstr "Directie Motor:" -#: flatcamGUI/FlatCAMGUI.py:4682 flatcamGUI/FlatCAMGUI.py:5189 +#: flatcamGUI/FlatCAMGUI.py:4689 flatcamGUI/FlatCAMGUI.py:5196 msgid "" "This sets the direction that the spindle is rotating.\n" "It can be either:\n" @@ -7219,12 +7246,12 @@ msgstr "" "- CW = in sensul acelor de ceasornic\n" "- CCW = in sensul invers acelor de ceasornic" -#: flatcamGUI/FlatCAMGUI.py:4694 flatcamGUI/FlatCAMGUI.py:5201 +#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 #: flatcamGUI/ObjectUI.py:692 flatcamGUI/ObjectUI.py:1224 msgid "Dwell:" msgstr "Pauza:" -#: flatcamGUI/FlatCAMGUI.py:4696 flatcamGUI/FlatCAMGUI.py:5203 +#: flatcamGUI/FlatCAMGUI.py:4703 flatcamGUI/FlatCAMGUI.py:5210 #: flatcamGUI/ObjectUI.py:694 flatcamGUI/ObjectUI.py:1227 msgid "" "Pause to allow the spindle to reach its\n" @@ -7233,21 +7260,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:4699 flatcamGUI/FlatCAMGUI.py:5206 +#: flatcamGUI/FlatCAMGUI.py:4706 flatcamGUI/FlatCAMGUI.py:5213 msgid "Duration:" msgstr "Durata:" -#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 +#: flatcamGUI/FlatCAMGUI.py:4708 flatcamGUI/FlatCAMGUI.py:5215 #: 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:4713 flatcamGUI/FlatCAMGUI.py:5218 +#: flatcamGUI/FlatCAMGUI.py:4720 flatcamGUI/FlatCAMGUI.py:5225 #: flatcamGUI/ObjectUI.py:707 msgid "Postprocessor:" msgstr "Postprocesor:" -#: flatcamGUI/FlatCAMGUI.py:4715 +#: flatcamGUI/FlatCAMGUI.py:4722 msgid "" "The postprocessor file that dictates\n" "gcode output." @@ -7256,11 +7283,11 @@ msgstr "" "respecte un anumit format care să fie ințeles de diverse\n" "utilaje. Este responsabil de 'personalizarea' G-Code." -#: flatcamGUI/FlatCAMGUI.py:4725 +#: flatcamGUI/FlatCAMGUI.py:4732 msgid "Gcode: " msgstr "G-Code:" -#: flatcamGUI/FlatCAMGUI.py:4727 +#: flatcamGUI/FlatCAMGUI.py:4734 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -7274,41 +7301,41 @@ msgstr "" "Când se alege Sloturi sau Ambele, sloturile vor fi convertite in serii de " "găuri." -#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:772 +#: flatcamGUI/FlatCAMGUI.py:4750 flatcamGUI/ObjectUI.py:772 msgid "Mill Holes" msgstr "Frezare găuri" -#: flatcamGUI/FlatCAMGUI.py:4745 flatcamGUI/ObjectUI.py:774 +#: flatcamGUI/FlatCAMGUI.py:4752 flatcamGUI/ObjectUI.py:774 msgid "Create Geometry for milling holes." msgstr "Crează un obiect tip Geometrie pentru frezarea găurilor." -#: flatcamGUI/FlatCAMGUI.py:4751 +#: flatcamGUI/FlatCAMGUI.py:4758 msgid "Drill Tool dia:" msgstr "Dia. Burghiu Găurire:" -#: flatcamGUI/FlatCAMGUI.py:4758 +#: flatcamGUI/FlatCAMGUI.py:4765 msgid "Slot Tool dia:" msgstr "Dia. Freza Slot:" -#: flatcamGUI/FlatCAMGUI.py:4760 +#: flatcamGUI/FlatCAMGUI.py:4767 msgid "" "Diameter of the cutting tool\n" "when milling slots." msgstr "Diametrul frezei când se frezează sloturile." -#: flatcamGUI/FlatCAMGUI.py:4772 +#: flatcamGUI/FlatCAMGUI.py:4779 msgid "Defaults" msgstr "Val. Implicite" -#: flatcamGUI/FlatCAMGUI.py:4785 +#: flatcamGUI/FlatCAMGUI.py:4792 msgid "Excellon Adv. Options" msgstr "Opțiuni Avans. Excellon" -#: flatcamGUI/FlatCAMGUI.py:4791 flatcamGUI/FlatCAMGUI.py:5241 +#: flatcamGUI/FlatCAMGUI.py:4798 flatcamGUI/FlatCAMGUI.py:5248 msgid "Advanced Options:" msgstr "Opțiuni avansate:" -#: flatcamGUI/FlatCAMGUI.py:4793 +#: flatcamGUI/FlatCAMGUI.py:4800 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object that are shown when App Level is Advanced." @@ -7317,11 +7344,11 @@ msgstr "" "pt acest obiect Excellon, parametri care sunt disponibili\n" "doar in modul Avansat al aplicaţiei." -#: flatcamGUI/FlatCAMGUI.py:4801 +#: flatcamGUI/FlatCAMGUI.py:4808 msgid "Offset Z:" msgstr "Z ofset:" -#: flatcamGUI/FlatCAMGUI.py:4803 flatcamGUI/ObjectUI.py:574 +#: flatcamGUI/FlatCAMGUI.py:4810 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" @@ -7334,20 +7361,20 @@ msgstr "" "Valoarea de aici efectuează o compensare asupra\n" "parametrului >Z tăiere<." -#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/FlatCAMGUI.py:5252 +#: flatcamGUI/FlatCAMGUI.py:4817 flatcamGUI/FlatCAMGUI.py:5259 msgid "Toolchange X,Y:" msgstr "X,Y schimb. unealtă:" -#: flatcamGUI/FlatCAMGUI.py:4812 flatcamGUI/FlatCAMGUI.py:5254 +#: flatcamGUI/FlatCAMGUI.py:4819 flatcamGUI/FlatCAMGUI.py:5261 msgid "Toolchange X,Y position." msgstr "Poziţia X,Y in format (x,y) unde se face schimbarea uneltei." -#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5261 +#: flatcamGUI/FlatCAMGUI.py:4825 flatcamGUI/FlatCAMGUI.py:5268 #: flatcamGUI/ObjectUI.py:634 msgid "Start move Z:" msgstr "Z pornire:" -#: flatcamGUI/FlatCAMGUI.py:4820 +#: flatcamGUI/FlatCAMGUI.py:4827 msgid "" "Height of the tool just after start.\n" "Delete the value if you don't need this feature." @@ -7355,23 +7382,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:4827 flatcamGUI/FlatCAMGUI.py:5271 +#: flatcamGUI/FlatCAMGUI.py:4834 flatcamGUI/FlatCAMGUI.py:5278 #: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1144 msgid "End move Z:" msgstr "Z oprire:" -#: flatcamGUI/FlatCAMGUI.py:4829 flatcamGUI/FlatCAMGUI.py:5273 +#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5280 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:4836 flatcamGUI/FlatCAMGUI.py:5281 +#: flatcamGUI/FlatCAMGUI.py:4843 flatcamGUI/FlatCAMGUI.py:5288 #: flatcamGUI/ObjectUI.py:665 msgid "Feedrate Rapids:" msgstr "Feedrate rapizi:" -#: flatcamGUI/FlatCAMGUI.py:4838 flatcamGUI/ObjectUI.py:667 +#: flatcamGUI/FlatCAMGUI.py:4845 flatcamGUI/ObjectUI.py:667 msgid "" "Tool speed while drilling\n" "(in units per minute).\n" @@ -7384,12 +7411,12 @@ msgstr "" "printerul 3D Marlin, implicit când se foloseşte fişierul\n" "postprocesor: Marlin. Ignora aceasta parametru in rest." -#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5305 +#: flatcamGUI/FlatCAMGUI.py:4856 flatcamGUI/FlatCAMGUI.py:5312 #: flatcamGUI/ObjectUI.py:718 flatcamGUI/ObjectUI.py:1256 msgid "Probe Z depth:" msgstr "Z sonda:" -#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5307 +#: flatcamGUI/FlatCAMGUI.py:4858 flatcamGUI/FlatCAMGUI.py:5314 #: flatcamGUI/ObjectUI.py:720 flatcamGUI/ObjectUI.py:1259 msgid "" "The maximum depth that the probe is allowed\n" @@ -7398,21 +7425,21 @@ msgstr "" "Adâncimea maxima la care este permis sondei să coboare.\n" "Are o valoare negativă, in unitatile curente." -#: flatcamGUI/FlatCAMGUI.py:4859 flatcamGUI/FlatCAMGUI.py:5315 +#: flatcamGUI/FlatCAMGUI.py:4866 flatcamGUI/FlatCAMGUI.py:5322 #: flatcamGUI/ObjectUI.py:730 flatcamGUI/ObjectUI.py:1270 msgid "Feedrate Probe:" msgstr "Feedrate sonda:" -#: flatcamGUI/FlatCAMGUI.py:4861 flatcamGUI/FlatCAMGUI.py:5317 +#: flatcamGUI/FlatCAMGUI.py:4868 flatcamGUI/FlatCAMGUI.py:5324 #: 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:4867 flatcamGUI/FlatCAMGUI.py:5324 +#: flatcamGUI/FlatCAMGUI.py:4874 flatcamGUI/FlatCAMGUI.py:5331 msgid "Fast Plunge:" msgstr "Plonjare rapida:" -#: flatcamGUI/FlatCAMGUI.py:4869 flatcamGUI/FlatCAMGUI.py:5326 +#: flatcamGUI/FlatCAMGUI.py:4876 flatcamGUI/FlatCAMGUI.py:5333 msgid "" "By checking this, the vertical move from\n" "Z_Toolchange to Z_move is done with G0,\n" @@ -7429,11 +7456,11 @@ msgstr "" "schimba\n" "unealta. Daca aveti ceva plasat sub unealtă ceva se va strica." -#: flatcamGUI/FlatCAMGUI.py:4878 +#: flatcamGUI/FlatCAMGUI.py:4885 msgid "Fast Retract:" msgstr "Retragere rapida:" -#: flatcamGUI/FlatCAMGUI.py:4880 +#: flatcamGUI/FlatCAMGUI.py:4887 msgid "" "Exit hole strategy.\n" " - When uncheked, while exiting the drilled hole the drill bit\n" @@ -7452,11 +7479,11 @@ msgstr "" "adâncimea\n" "de deplasare cu viteza maxima G0, intr-o singură mișcare." -#: flatcamGUI/FlatCAMGUI.py:4899 +#: flatcamGUI/FlatCAMGUI.py:4906 msgid "Excellon Export" msgstr "Export Excellon" -#: flatcamGUI/FlatCAMGUI.py:4904 +#: flatcamGUI/FlatCAMGUI.py:4911 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Excellon menu entry." @@ -7465,11 +7492,11 @@ msgstr "" "se exporta un fişier Excellon folosind:\n" "File -> Exporta -> Exporta Excellon" -#: flatcamGUI/FlatCAMGUI.py:4915 flatcamGUI/FlatCAMGUI.py:4921 +#: flatcamGUI/FlatCAMGUI.py:4922 flatcamGUI/FlatCAMGUI.py:4928 msgid "The units used in the Excellon file." msgstr "Unitatile de masura folosite in fişierul Excellon." -#: flatcamGUI/FlatCAMGUI.py:4929 +#: flatcamGUI/FlatCAMGUI.py:4936 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -7481,11 +7508,11 @@ msgstr "" "Aici se setează formatul Excellon când nu se utilizează\n" "coordonate cu zecimale." -#: flatcamGUI/FlatCAMGUI.py:4965 +#: flatcamGUI/FlatCAMGUI.py:4972 msgid "Format:" msgstr "Format:" -#: flatcamGUI/FlatCAMGUI.py:4967 flatcamGUI/FlatCAMGUI.py:4977 +#: flatcamGUI/FlatCAMGUI.py:4974 flatcamGUI/FlatCAMGUI.py:4984 msgid "" "Select the kind of coordinates format used.\n" "Coordinates can be saved with decimal point or without.\n" @@ -7504,7 +7531,7 @@ msgstr "" "- LZ = zerourile prefix sunt pastrate și cele sufix eliminate\n" "- TZ = zerourile prefix sunt eliminate și cele sufix pastrate." -#: flatcamGUI/FlatCAMGUI.py:5001 +#: flatcamGUI/FlatCAMGUI.py:5008 msgid "" "This sets the default type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -7516,11 +7543,11 @@ msgstr "" "- LZ = zerourile prefix sunt pastrate și cele sufix eliminate\n" "- TZ = zerourile prefix sunt eliminate și cele sufix pastrate." -#: flatcamGUI/FlatCAMGUI.py:5027 +#: flatcamGUI/FlatCAMGUI.py:5034 msgid "Geometry General" msgstr "Geometrie General" -#: flatcamGUI/FlatCAMGUI.py:5045 +#: flatcamGUI/FlatCAMGUI.py:5052 msgid "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." @@ -7528,29 +7555,29 @@ msgstr "" "Numărul de segmente utilizate pentru\n" "aproximarea lineara a Geometriilor circulare." -#: flatcamGUI/FlatCAMGUI.py:5053 +#: flatcamGUI/FlatCAMGUI.py:5060 msgid "Tools" msgstr "Unelte" -#: flatcamGUI/FlatCAMGUI.py:5060 +#: flatcamGUI/FlatCAMGUI.py:5067 msgid "Tool dia: " msgstr "Dia Unealta:" -#: flatcamGUI/FlatCAMGUI.py:5062 +#: flatcamGUI/FlatCAMGUI.py:5069 msgid "" "The diameter of the cutting\n" "tool.." msgstr "Diametrul uneltei taietoare ..." -#: flatcamGUI/FlatCAMGUI.py:5077 +#: flatcamGUI/FlatCAMGUI.py:5084 msgid "Geometry Options" msgstr "Opțiuni Geometrie" -#: flatcamGUI/FlatCAMGUI.py:5082 +#: flatcamGUI/FlatCAMGUI.py:5089 msgid "Create CNC Job:" msgstr "Crează CNCJob:" -#: flatcamGUI/FlatCAMGUI.py:5084 +#: flatcamGUI/FlatCAMGUI.py:5091 msgid "" "Create a CNC Job object\n" "tracing the contours of this\n" @@ -7559,7 +7586,7 @@ msgstr "" "Crează un obiect CNCJob care urmareste conturul\n" "acestui obiect tip Geometrie." -#: flatcamGUI/FlatCAMGUI.py:5096 flatcamGUI/ObjectUI.py:1065 +#: flatcamGUI/FlatCAMGUI.py:5103 flatcamGUI/ObjectUI.py:1065 msgid "" "Cutting depth (negative)\n" "below the copper surface." @@ -7567,21 +7594,21 @@ msgstr "" "Adâncimea la care se taie sub suprafata de cupru.\n" "Valoare negativă." -#: flatcamGUI/FlatCAMGUI.py:5104 +#: flatcamGUI/FlatCAMGUI.py:5111 msgid "Multidepth" msgstr "MultiPas" -#: flatcamGUI/FlatCAMGUI.py:5106 +#: flatcamGUI/FlatCAMGUI.py:5113 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:5111 +#: flatcamGUI/FlatCAMGUI.py:5118 msgid "Depth/Pass:" msgstr "Adanc./Trecere" -#: flatcamGUI/FlatCAMGUI.py:5113 +#: flatcamGUI/FlatCAMGUI.py:5120 msgid "" "The depth to cut on each pass,\n" "when multidepth is enabled.\n" @@ -7594,7 +7621,7 @@ msgstr "" "Valoarea este pozitivă desi reprezinta o fracţie\n" "a adancimii de tăiere care este o valoare negativă." -#: flatcamGUI/FlatCAMGUI.py:5129 flatcamGUI/ObjectUI.py:1101 +#: flatcamGUI/FlatCAMGUI.py:5136 flatcamGUI/ObjectUI.py:1101 msgid "" "Height of the tool when\n" "moving without cutting." @@ -7602,11 +7629,11 @@ msgstr "" "Înălţimea la care se misca unealta când nu taie,\n" "deasupra materialului." -#: flatcamGUI/FlatCAMGUI.py:5156 flatcamGUI/ObjectUI.py:1156 +#: flatcamGUI/FlatCAMGUI.py:5163 flatcamGUI/ObjectUI.py:1156 msgid "Feed Rate X-Y:" msgstr "Feedrate X-Y:" -#: flatcamGUI/FlatCAMGUI.py:5158 flatcamGUI/ObjectUI.py:1159 +#: flatcamGUI/FlatCAMGUI.py:5165 flatcamGUI/ObjectUI.py:1159 msgid "" "Cutting speed in the XY\n" "plane in units per minute" @@ -7614,11 +7641,11 @@ msgstr "" "Viteza de tăiere in planul X-Y\n" "in unitati pe minut." -#: flatcamGUI/FlatCAMGUI.py:5166 +#: flatcamGUI/FlatCAMGUI.py:5173 msgid "Feed Rate Z:" msgstr "Feedrate Z:" -#: flatcamGUI/FlatCAMGUI.py:5168 +#: flatcamGUI/FlatCAMGUI.py:5175 msgid "" "Cutting speed in the XY\n" "plane in units per minute.\n" @@ -7628,12 +7655,12 @@ msgstr "" "in unitati pe minut.\n" "Mai este numita și viteza de plonjare." -#: flatcamGUI/FlatCAMGUI.py:5177 flatcamGUI/ObjectUI.py:682 +#: flatcamGUI/FlatCAMGUI.py:5184 flatcamGUI/ObjectUI.py:682 #: flatcamGUI/ObjectUI.py:1211 msgid "Spindle speed:" msgstr "Viteza motor:" -#: flatcamGUI/FlatCAMGUI.py:5220 +#: flatcamGUI/FlatCAMGUI.py:5227 msgid "" "The postprocessor file that dictates\n" "Machine Code output." @@ -7642,11 +7669,11 @@ msgstr "" "respecte un anumit format care să fie ințeles de diverse\n" "utilaje. Este responsabil de 'personalizarea' G-Code." -#: flatcamGUI/FlatCAMGUI.py:5236 +#: flatcamGUI/FlatCAMGUI.py:5243 msgid "Geometry Adv. Options" msgstr "Opțiuni Avans. Geometrie" -#: flatcamGUI/FlatCAMGUI.py:5243 +#: flatcamGUI/FlatCAMGUI.py:5250 msgid "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." @@ -7654,7 +7681,7 @@ msgstr "" "Parametrii folositi pentru a crea un obiect CNCJob,\n" "urmărind contururile unui obiect tip Geometrie." -#: flatcamGUI/FlatCAMGUI.py:5263 +#: flatcamGUI/FlatCAMGUI.py:5270 msgid "" "Height of the tool just after starting the work.\n" "Delete the value if you don't need this feature." @@ -7662,7 +7689,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:5283 +#: flatcamGUI/FlatCAMGUI.py:5290 msgid "" "Cutting speed in the XY plane\n" "(in units per minute).\n" @@ -7675,11 +7702,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:5295 +#: flatcamGUI/FlatCAMGUI.py:5302 msgid "Re-cut 1st pt." msgstr "Re-tăiere 1-ul pt." -#: flatcamGUI/FlatCAMGUI.py:5297 flatcamGUI/ObjectUI.py:1202 +#: flatcamGUI/FlatCAMGUI.py:5304 flatcamGUI/ObjectUI.py:1202 msgid "" "In order to remove possible\n" "copper leftovers where first cut\n" @@ -7691,11 +7718,11 @@ msgstr "" "cu sfârşitul acesteia (este vorba de un contur), sunt eliminate\n" "prin taierea peste acest punct." -#: flatcamGUI/FlatCAMGUI.py:5336 +#: flatcamGUI/FlatCAMGUI.py:5343 msgid "Seg. X size:" msgstr "Dim. seg X." -#: flatcamGUI/FlatCAMGUI.py:5338 +#: flatcamGUI/FlatCAMGUI.py:5345 msgid "" "The size of the trace segment on the X axis.\n" "Useful for auto-leveling.\n" @@ -7706,11 +7733,11 @@ msgstr "" "O valoare de 0 inseamnaca nu se face segmentare\n" "pe axa X." -#: flatcamGUI/FlatCAMGUI.py:5347 +#: flatcamGUI/FlatCAMGUI.py:5354 msgid "Seg. Y size:" msgstr "Dim. seg Y." -#: flatcamGUI/FlatCAMGUI.py:5349 +#: flatcamGUI/FlatCAMGUI.py:5356 msgid "" "The size of the trace segment on the Y axis.\n" "Useful for auto-leveling.\n" @@ -7721,15 +7748,15 @@ msgstr "" "O valoare de 0 inseamnaca nu se face segmentare\n" "pe axa Y." -#: flatcamGUI/FlatCAMGUI.py:5365 +#: flatcamGUI/FlatCAMGUI.py:5372 msgid "Geometry Editor" msgstr "Editor Geometrii" -#: flatcamGUI/FlatCAMGUI.py:5370 +#: flatcamGUI/FlatCAMGUI.py:5377 msgid "A list of Geometry Editor parameters." msgstr "O lista de parametri ai Editorului de Geometrii." -#: flatcamGUI/FlatCAMGUI.py:5380 +#: flatcamGUI/FlatCAMGUI.py:5387 msgid "" "Set the number of selected geometry\n" "items above which the utility geometry\n" @@ -7743,20 +7770,20 @@ msgstr "" "Creste performanta cand se muta un număr mai mare de \n" "elemente geometrice." -#: flatcamGUI/FlatCAMGUI.py:5399 +#: flatcamGUI/FlatCAMGUI.py:5406 msgid "CNC Job General" msgstr "CNCJob General" -#: flatcamGUI/FlatCAMGUI.py:5412 flatcamGUI/ObjectUI.py:544 +#: flatcamGUI/FlatCAMGUI.py:5419 flatcamGUI/ObjectUI.py:544 #: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1434 msgid "Plot Object" msgstr "Afisează" -#: flatcamGUI/FlatCAMGUI.py:5419 +#: flatcamGUI/FlatCAMGUI.py:5426 msgid "Plot kind:" msgstr "Tip afișare:" -#: flatcamGUI/FlatCAMGUI.py:5421 flatcamGUI/ObjectUI.py:1356 +#: flatcamGUI/FlatCAMGUI.py:5428 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" @@ -7769,7 +7796,7 @@ msgstr "" "- Tăiere -> miscarile in material, tăiere\n" "- Amandoua" -#: flatcamGUI/FlatCAMGUI.py:5440 +#: flatcamGUI/FlatCAMGUI.py:5447 msgid "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." @@ -7777,17 +7804,17 @@ msgstr "" "Numărul de segmente utilizate pentru\n" "aproximarea lineara a reprezentarilor GCodului circular." -#: flatcamGUI/FlatCAMGUI.py:5450 +#: flatcamGUI/FlatCAMGUI.py:5457 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:5458 +#: flatcamGUI/FlatCAMGUI.py:5465 msgid "Coords dec.:" msgstr "Coord. zec.:" -#: flatcamGUI/FlatCAMGUI.py:5460 +#: flatcamGUI/FlatCAMGUI.py:5467 msgid "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" @@ -7795,11 +7822,11 @@ msgstr "" "Numărul de zecimale care să fie folosit in \n" "coordonatele X,Y,Z in codul CNC (GCode etc)." -#: flatcamGUI/FlatCAMGUI.py:5468 +#: flatcamGUI/FlatCAMGUI.py:5475 msgid "Feedrate dec.:" msgstr "Feedrate zec.:" -#: flatcamGUI/FlatCAMGUI.py:5470 +#: flatcamGUI/FlatCAMGUI.py:5477 msgid "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" @@ -7807,15 +7834,15 @@ msgstr "" "Numărul de zecimale care să fie folosit in \n" "parametrul >Feedrate< in codul CNC (GCode etc)." -#: flatcamGUI/FlatCAMGUI.py:5485 +#: flatcamGUI/FlatCAMGUI.py:5492 msgid "CNC Job Options" msgstr "Opțiuni CNCJob" -#: flatcamGUI/FlatCAMGUI.py:5488 flatcamGUI/FlatCAMGUI.py:5529 +#: flatcamGUI/FlatCAMGUI.py:5495 flatcamGUI/FlatCAMGUI.py:5536 msgid "Export G-Code:" msgstr "Exporta G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5490 flatcamGUI/FlatCAMGUI.py:5531 +#: flatcamGUI/FlatCAMGUI.py:5497 flatcamGUI/FlatCAMGUI.py:5538 #: flatcamGUI/ObjectUI.py:1470 msgid "" "Export and save G-Code to\n" @@ -7824,11 +7851,11 @@ msgstr "" "Exporta și salvează codul G-Code intr-un fişier\n" "care este salvat pe HDD." -#: flatcamGUI/FlatCAMGUI.py:5496 +#: flatcamGUI/FlatCAMGUI.py:5503 msgid "Prepend to G-Code:" msgstr "Adaugă la inceputul G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5498 +#: flatcamGUI/FlatCAMGUI.py:5505 msgid "" "Type here any G-Code commands you would\n" "like to add at the beginning of the G-Code file." @@ -7836,11 +7863,11 @@ msgstr "" "Adaugă aici orice comenzi G-Code care se dorește să fie\n" "inserate la inceputul codului G-Code." -#: flatcamGUI/FlatCAMGUI.py:5507 +#: flatcamGUI/FlatCAMGUI.py:5514 msgid "Append to G-Code:" msgstr "Adaugă la sfârşitul G-Code:" -#: flatcamGUI/FlatCAMGUI.py:5509 flatcamGUI/ObjectUI.py:1492 +#: flatcamGUI/FlatCAMGUI.py:5516 flatcamGUI/ObjectUI.py:1492 msgid "" "Type here any G-Code commands you would\n" "like to append to the generated file.\n" @@ -7849,15 +7876,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:5526 +#: flatcamGUI/FlatCAMGUI.py:5533 msgid "CNC Job Adv. Options" msgstr "Opțiuni Avans. CNCJob" -#: flatcamGUI/FlatCAMGUI.py:5537 flatcamGUI/ObjectUI.py:1510 +#: flatcamGUI/FlatCAMGUI.py:5544 flatcamGUI/ObjectUI.py:1510 msgid "Toolchange G-Code:" msgstr "G-Code pt schimb unealtă:" -#: flatcamGUI/FlatCAMGUI.py:5539 +#: flatcamGUI/FlatCAMGUI.py:5546 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -7869,11 +7896,11 @@ msgstr "" "Comanda M6 este inlocuita.\n" "Aceata va constitui un macro pentru schimbul uneltelor." -#: flatcamGUI/FlatCAMGUI.py:5553 flatcamGUI/ObjectUI.py:1532 +#: flatcamGUI/FlatCAMGUI.py:5560 flatcamGUI/ObjectUI.py:1532 msgid "Use Toolchange Macro" msgstr "Fol. Macro schimb unealtă" -#: flatcamGUI/FlatCAMGUI.py:5555 flatcamGUI/ObjectUI.py:1535 +#: flatcamGUI/FlatCAMGUI.py:5562 flatcamGUI/ObjectUI.py:1535 msgid "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." @@ -7881,7 +7908,7 @@ msgstr "" "Bifează aici daca dorești să folosești Macro pentru\n" "schimb unelte." -#: flatcamGUI/FlatCAMGUI.py:5567 flatcamGUI/ObjectUI.py:1544 +#: flatcamGUI/FlatCAMGUI.py:5574 flatcamGUI/ObjectUI.py:1544 msgid "" "A list of the FlatCAM variables that can be used\n" "in the Toolchange event.\n" @@ -7891,71 +7918,71 @@ msgstr "" "de schimb al uneltei (când se intalneste comanda M6).\n" "Este necesar să fie inconjurate de simbolul '%'." -#: flatcamGUI/FlatCAMGUI.py:5574 flatcamGUI/ObjectUI.py:1551 +#: flatcamGUI/FlatCAMGUI.py:5581 flatcamGUI/ObjectUI.py:1551 msgid "Parameters" msgstr "Parametri" -#: flatcamGUI/FlatCAMGUI.py:5577 flatcamGUI/ObjectUI.py:1554 +#: flatcamGUI/FlatCAMGUI.py:5584 flatcamGUI/ObjectUI.py:1554 msgid "FlatCAM CNC parameters" msgstr "Parametri FlatCAM CNC" -#: flatcamGUI/FlatCAMGUI.py:5578 flatcamGUI/ObjectUI.py:1555 +#: flatcamGUI/FlatCAMGUI.py:5585 flatcamGUI/ObjectUI.py:1555 msgid "tool = tool number" msgstr "tool = numărul uneltei" -#: flatcamGUI/FlatCAMGUI.py:5579 flatcamGUI/ObjectUI.py:1556 +#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1556 msgid "tooldia = tool diameter" msgstr "tooldia = dimaetrul uneltei" -#: flatcamGUI/FlatCAMGUI.py:5580 flatcamGUI/ObjectUI.py:1557 +#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1557 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:5581 flatcamGUI/ObjectUI.py:1558 +#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1558 msgid "x_toolchange = X coord for Toolchange" msgstr "x_toolchange = coord. X pt schimb unealtă" -#: flatcamGUI/FlatCAMGUI.py:5582 flatcamGUI/ObjectUI.py:1559 +#: flatcamGUI/FlatCAMGUI.py:5589 flatcamGUI/ObjectUI.py:1559 msgid "y_toolchange = Y coord for Toolchange" msgstr "y_toolchange = coord. Y pt schimb unealtă" -#: flatcamGUI/FlatCAMGUI.py:5583 flatcamGUI/ObjectUI.py:1560 +#: flatcamGUI/FlatCAMGUI.py:5590 flatcamGUI/ObjectUI.py:1560 msgid "z_toolchange = Z coord for Toolchange" msgstr "z_toolchange = coord. Z pt schimb unealtă" -#: flatcamGUI/FlatCAMGUI.py:5584 +#: flatcamGUI/FlatCAMGUI.py:5591 msgid "z_cut = Z depth for the cut" msgstr "z_cut = Z adâncimea de tăiere" -#: flatcamGUI/FlatCAMGUI.py:5585 +#: flatcamGUI/FlatCAMGUI.py:5592 msgid "z_move = Z height for travel" msgstr "z_move = Z Înălţimea deplasare" -#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1563 +#: flatcamGUI/FlatCAMGUI.py:5593 flatcamGUI/ObjectUI.py:1563 msgid "z_depthpercut = the step value for multidepth cut" msgstr "z_depthpercut = pasul pentru taierea progresiva" -#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1564 +#: flatcamGUI/FlatCAMGUI.py:5594 flatcamGUI/ObjectUI.py:1564 msgid "spindlesspeed = the value for the spindle speed" msgstr "spindlesspeed = valoarea viteza motor" -#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1565 +#: flatcamGUI/FlatCAMGUI.py:5595 flatcamGUI/ObjectUI.py:1565 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:5609 +#: flatcamGUI/FlatCAMGUI.py:5616 msgid "NCC Tool Options" msgstr "Opțiuni Unealta NCC" -#: flatcamGUI/FlatCAMGUI.py:5622 flatcamGUI/FlatCAMGUI.py:6352 +#: flatcamGUI/FlatCAMGUI.py:5629 flatcamGUI/FlatCAMGUI.py:6359 msgid "Tools dia:" msgstr "Dia unealtă:" -#: flatcamGUI/FlatCAMGUI.py:5624 +#: flatcamGUI/FlatCAMGUI.py:5631 msgid "Diameters of the cutting tools, separated by ','" msgstr "Diametrele pentru unelte taietoare, separate cu virgula" -#: flatcamGUI/FlatCAMGUI.py:5632 flatcamTools/ToolNonCopperClear.py:167 +#: flatcamGUI/FlatCAMGUI.py:5639 flatcamTools/ToolNonCopperClear.py:167 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -7981,11 +8008,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:5648 flatcamTools/ToolNonCopperClear.py:183 +#: flatcamGUI/FlatCAMGUI.py:5655 flatcamTools/ToolNonCopperClear.py:183 msgid "Bounding box margin." msgstr "Marginea pentru forma înconjurătoare." -#: flatcamGUI/FlatCAMGUI.py:5657 flatcamTools/ToolNonCopperClear.py:192 +#: flatcamGUI/FlatCAMGUI.py:5664 flatcamTools/ToolNonCopperClear.py:192 #: flatcamTools/ToolPaint.py:190 msgid "" "Algorithm for non-copper clearing:
Standard: Fixed step inwards." @@ -7996,12 +8023,12 @@ msgstr "" "
Punct-samanta: De la punctul samanta, spre expterior.
Linii " "drepte: Linii paralele." -#: flatcamGUI/FlatCAMGUI.py:5689 flatcamTools/ToolNonCopperClear.py:224 +#: flatcamGUI/FlatCAMGUI.py:5696 flatcamTools/ToolNonCopperClear.py:224 #: flatcamTools/ToolPaint.py:222 msgid "Rest M.:" msgstr "Rest M.:" -#: flatcamGUI/FlatCAMGUI.py:5691 +#: flatcamGUI/FlatCAMGUI.py:5698 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -8019,11 +8046,11 @@ msgstr "" "precedenta.\n" "Daca nu este bifat, foloseşte algoritmul standard." -#: flatcamGUI/FlatCAMGUI.py:5710 +#: flatcamGUI/FlatCAMGUI.py:5717 msgid "Cutout Tool Options" msgstr "Opțiuni Unealta Decupare" -#: flatcamGUI/FlatCAMGUI.py:5715 flatcamGUI/ObjectUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:5722 flatcamGUI/ObjectUI.py:402 msgid "" "Create toolpaths to cut around\n" "the PCB and separate it from\n" @@ -8033,17 +8060,17 @@ msgstr "" "lasand punţi pentru a separa PCB-ul de \n" "placa din care a fost taiat." -#: flatcamGUI/FlatCAMGUI.py:5734 +#: flatcamGUI/FlatCAMGUI.py:5741 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:5741 flatcamTools/ToolCutOut.py:96 +#: flatcamGUI/FlatCAMGUI.py:5748 flatcamTools/ToolCutOut.py:96 msgid "Gap size:" msgstr "Dim. punte:" -#: flatcamGUI/FlatCAMGUI.py:5743 +#: flatcamGUI/FlatCAMGUI.py:5750 msgid "" "Size of the gaps in the toolpath\n" "that will remain to hold the\n" @@ -8053,11 +8080,11 @@ msgstr "" "care vor mentine PCB-ul in poziţie, fără să cada\n" "din placa 'mama' dupa decupare." -#: flatcamGUI/FlatCAMGUI.py:5751 flatcamTools/ToolCutOut.py:134 +#: flatcamGUI/FlatCAMGUI.py:5758 flatcamTools/ToolCutOut.py:134 msgid "Gaps:" msgstr "Punţi:" -#: flatcamGUI/FlatCAMGUI.py:5753 +#: flatcamGUI/FlatCAMGUI.py:5760 msgid "" "Number of bridge gaps used for the cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -8079,21 +8106,21 @@ msgstr "" "- 2tb = 2* sus - 2* jos\n" "- 8 = 2* stânga - 2* dreapta - 2* sus - 2* jos" -#: flatcamGUI/FlatCAMGUI.py:5774 flatcamTools/ToolCutOut.py:115 +#: flatcamGUI/FlatCAMGUI.py:5781 flatcamTools/ToolCutOut.py:115 msgid "Convex Sh.:" msgstr "Formă Conv." -#: flatcamGUI/FlatCAMGUI.py:5776 +#: flatcamGUI/FlatCAMGUI.py:5783 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:5789 +#: flatcamGUI/FlatCAMGUI.py:5796 msgid "2Sided Tool Options" msgstr "Opțiuni Unealta 2Fețe" -#: flatcamGUI/FlatCAMGUI.py:5794 +#: flatcamGUI/FlatCAMGUI.py:5801 msgid "" "A tool to help in creating a double sided\n" "PCB using alignment holes." @@ -8101,28 +8128,28 @@ msgstr "" "O unealtă care ajuta in crearea de PCB-uri cu 2 fețe\n" "folosind găuri de aliniere." -#: flatcamGUI/FlatCAMGUI.py:5804 flatcamTools/ToolDblSided.py:235 +#: flatcamGUI/FlatCAMGUI.py:5811 flatcamTools/ToolDblSided.py:235 msgid "Drill diam.:" msgstr "Dia gaura:" -#: flatcamGUI/FlatCAMGUI.py:5806 flatcamTools/ToolDblSided.py:226 +#: flatcamGUI/FlatCAMGUI.py:5813 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:5815 flatcamTools/ToolDblSided.py:120 +#: flatcamGUI/FlatCAMGUI.py:5822 flatcamTools/ToolDblSided.py:120 msgid "Mirror Axis:" msgstr "Axe oglindire:" -#: flatcamGUI/FlatCAMGUI.py:5817 flatcamTools/ToolDblSided.py:122 +#: flatcamGUI/FlatCAMGUI.py:5824 flatcamTools/ToolDblSided.py:122 msgid "Mirror vertically (X) or horizontally (Y)." msgstr "Oglindește vertical (X) sau orizontal (Y)." -#: flatcamGUI/FlatCAMGUI.py:5828 flatcamTools/ToolDblSided.py:133 +#: flatcamGUI/FlatCAMGUI.py:5835 flatcamTools/ToolDblSided.py:133 msgid "Axis Ref:" msgstr "Axa de ref.:" -#: flatcamGUI/FlatCAMGUI.py:5830 +#: flatcamGUI/FlatCAMGUI.py:5837 msgid "" "The axis should pass through a point or cut\n" " a specified box (in a Geometry object) in \n" @@ -8131,11 +8158,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:5846 +#: flatcamGUI/FlatCAMGUI.py:5853 msgid "Paint Tool Options" msgstr "Opțiuni Unealta Paint" -#: flatcamGUI/FlatCAMGUI.py:5853 flatcamGUI/ObjectUI.py:1305 +#: flatcamGUI/FlatCAMGUI.py:5860 flatcamGUI/ObjectUI.py:1305 msgid "" "Creates tool paths to cover the\n" "whole area of a polygon (remove\n" @@ -8148,7 +8175,7 @@ msgstr "" "singur poligon se va cere să faceti click pe poligonul\n" "dorit." -#: flatcamGUI/FlatCAMGUI.py:5877 +#: flatcamGUI/FlatCAMGUI.py:5884 msgid "" "How much (fraction) of the tool\n" "width to overlap each tool pass." @@ -8156,19 +8183,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:5931 flatcamTools/ToolPaint.py:237 +#: flatcamGUI/FlatCAMGUI.py:5938 flatcamTools/ToolPaint.py:237 msgid "Selection:" msgstr "Selecţie:" -#: flatcamGUI/FlatCAMGUI.py:5933 +#: flatcamGUI/FlatCAMGUI.py:5940 msgid "How to select the polygons to paint." msgstr "Cum să se selecteze poligoanele de pictat (paint)." -#: flatcamGUI/FlatCAMGUI.py:5951 +#: flatcamGUI/FlatCAMGUI.py:5958 msgid "Film Tool Options" msgstr "Opțiuni Unealta Film" -#: flatcamGUI/FlatCAMGUI.py:5956 +#: flatcamGUI/FlatCAMGUI.py:5963 msgid "" "Create a PCB film from a Gerber or Geometry\n" "FlatCAM object.\n" @@ -8177,11 +8204,11 @@ msgstr "" "Crează un film PCB dintr-un obiect Gerber sau tip Geometrie.\n" "Fişierul este salvat in format SVG." -#: flatcamGUI/FlatCAMGUI.py:5967 flatcamTools/ToolFilm.py:116 +#: flatcamGUI/FlatCAMGUI.py:5974 flatcamTools/ToolFilm.py:116 msgid "Film Type:" msgstr "Tip film:" -#: flatcamGUI/FlatCAMGUI.py:5969 flatcamTools/ToolFilm.py:118 +#: flatcamGUI/FlatCAMGUI.py:5976 flatcamTools/ToolFilm.py:118 msgid "" "Generate a Positive black film or a Negative film.\n" "Positive means that it will print the features\n" @@ -8195,11 +8222,11 @@ msgstr "" "Negativ = traseele vor fi albe pe un fundal negru.\n" "Formatul fişierului pt filmul salvat este SVG." -#: flatcamGUI/FlatCAMGUI.py:5980 flatcamTools/ToolFilm.py:130 +#: flatcamGUI/FlatCAMGUI.py:5987 flatcamTools/ToolFilm.py:130 msgid "Border:" msgstr "Bordura:" -#: flatcamGUI/FlatCAMGUI.py:5982 flatcamTools/ToolFilm.py:132 +#: flatcamGUI/FlatCAMGUI.py:5989 flatcamTools/ToolFilm.py:132 msgid "" "Specify a border around the object.\n" "Only for negative film.\n" @@ -8216,11 +8243,11 @@ msgstr "" "Va crea o bara solida neagra in jurul printului efectiv permitand o\n" "delimitare exacta" -#: flatcamGUI/FlatCAMGUI.py:5995 flatcamTools/ToolFilm.py:144 +#: flatcamGUI/FlatCAMGUI.py:6002 flatcamTools/ToolFilm.py:144 msgid "Scale Stroke:" msgstr "Scalează:" -#: flatcamGUI/FlatCAMGUI.py:5997 flatcamTools/ToolFilm.py:146 +#: flatcamGUI/FlatCAMGUI.py:6004 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 " @@ -8230,11 +8257,11 @@ msgstr "" "Scalează grosimea conturului fiecarui element din fişierul SVG.\n" "Elementele mai mici vor fi afectate mai mult." -#: flatcamGUI/FlatCAMGUI.py:6012 +#: flatcamGUI/FlatCAMGUI.py:6019 msgid "Panelize Tool Options" msgstr "Opțiuni Unealta Panelizare" -#: flatcamGUI/FlatCAMGUI.py:6017 +#: flatcamGUI/FlatCAMGUI.py:6024 msgid "" "Create an object that contains an array of (x, y) elements,\n" "each element is a copy of the source object spaced\n" @@ -8244,11 +8271,11 @@ msgstr "" "unde fiecare element este o copie a obiectului sursa, separat la o\n" "distanţă X, Y unul de celalalt." -#: flatcamGUI/FlatCAMGUI.py:6028 flatcamTools/ToolPanelize.py:147 +#: flatcamGUI/FlatCAMGUI.py:6035 flatcamTools/ToolPanelize.py:147 msgid "Spacing cols:" msgstr "Sep. coloane:" -#: flatcamGUI/FlatCAMGUI.py:6030 flatcamTools/ToolPanelize.py:149 +#: flatcamGUI/FlatCAMGUI.py:6037 flatcamTools/ToolPanelize.py:149 msgid "" "Spacing between columns of the desired panel.\n" "In current units." @@ -8256,11 +8283,11 @@ msgstr "" "Spatiul de separare între coloane.\n" "In unitatile curente." -#: flatcamGUI/FlatCAMGUI.py:6038 flatcamTools/ToolPanelize.py:156 +#: flatcamGUI/FlatCAMGUI.py:6045 flatcamTools/ToolPanelize.py:156 msgid "Spacing rows:" msgstr "Sep. linii:" -#: flatcamGUI/FlatCAMGUI.py:6040 flatcamTools/ToolPanelize.py:158 +#: flatcamGUI/FlatCAMGUI.py:6047 flatcamTools/ToolPanelize.py:158 msgid "" "Spacing between rows of the desired panel.\n" "In current units." @@ -8268,27 +8295,27 @@ msgstr "" "Spatiul de separare între linii.\n" "In unitatile curente." -#: flatcamGUI/FlatCAMGUI.py:6048 flatcamTools/ToolPanelize.py:165 +#: flatcamGUI/FlatCAMGUI.py:6055 flatcamTools/ToolPanelize.py:165 msgid "Columns:" msgstr "Coloane:" -#: flatcamGUI/FlatCAMGUI.py:6050 flatcamTools/ToolPanelize.py:167 +#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:167 msgid "Number of columns of the desired panel" msgstr "Numărul de coloane ale panel-ului dorit." -#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:173 +#: flatcamGUI/FlatCAMGUI.py:6064 flatcamTools/ToolPanelize.py:173 msgid "Rows:" msgstr "Linii:" -#: flatcamGUI/FlatCAMGUI.py:6059 flatcamTools/ToolPanelize.py:175 +#: flatcamGUI/FlatCAMGUI.py:6066 flatcamTools/ToolPanelize.py:175 msgid "Number of rows of the desired panel" msgstr "Numărul de linii ale panel-ului dorit." -#: flatcamGUI/FlatCAMGUI.py:6067 +#: flatcamGUI/FlatCAMGUI.py:6074 msgid "Panel Type:" msgstr "Tip panel:" -#: flatcamGUI/FlatCAMGUI.py:6069 +#: flatcamGUI/FlatCAMGUI.py:6076 msgid "" "Choose the type of object for the panel object:\n" "- Gerber\n" @@ -8298,11 +8325,11 @@ msgstr "" "- Gerber\n" "- Geometrie" -#: flatcamGUI/FlatCAMGUI.py:6078 +#: flatcamGUI/FlatCAMGUI.py:6085 msgid "Constrain within:" msgstr "Constrange:" -#: flatcamGUI/FlatCAMGUI.py:6080 flatcamTools/ToolPanelize.py:195 +#: flatcamGUI/FlatCAMGUI.py:6087 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" @@ -8316,11 +8343,11 @@ msgstr "" "panelul final va contine numai acel număr de linii/coloane care se inscrie\n" "complet in aria desemnata." -#: flatcamGUI/FlatCAMGUI.py:6089 flatcamTools/ToolPanelize.py:204 +#: flatcamGUI/FlatCAMGUI.py:6096 flatcamTools/ToolPanelize.py:204 msgid "Width (DX):" msgstr "Latime (Dx):" -#: flatcamGUI/FlatCAMGUI.py:6091 flatcamTools/ToolPanelize.py:206 +#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:206 msgid "" "The width (DX) within which the panel must fit.\n" "In current units." @@ -8328,11 +8355,11 @@ msgstr "" "Lăţimea (Dx) in care panelul trebuie să se inscrie.\n" "In unitati curente." -#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:212 +#: flatcamGUI/FlatCAMGUI.py:6105 flatcamTools/ToolPanelize.py:212 msgid "Height (DY):" msgstr "Inaltime (Dy):" -#: flatcamGUI/FlatCAMGUI.py:6100 flatcamTools/ToolPanelize.py:214 +#: flatcamGUI/FlatCAMGUI.py:6107 flatcamTools/ToolPanelize.py:214 msgid "" "The height (DY)within which the panel must fit.\n" "In current units." @@ -8340,15 +8367,15 @@ msgstr "" "Înălţimea (Dy) in care panelul trebuie să se inscrie.\n" "In unitati curente." -#: flatcamGUI/FlatCAMGUI.py:6114 +#: flatcamGUI/FlatCAMGUI.py:6121 msgid "Calculators Tool Options" msgstr "Opțiuni Unealta Calculatoare" -#: flatcamGUI/FlatCAMGUI.py:6117 +#: flatcamGUI/FlatCAMGUI.py:6124 msgid "V-Shape Tool Calculator:" msgstr "Calculator: Unealta V-shape" -#: flatcamGUI/FlatCAMGUI.py:6119 +#: flatcamGUI/FlatCAMGUI.py:6126 msgid "" "Calculate the tool diameter for a given V-shape tool,\n" "having the tip diameter, tip angle and\n" @@ -8358,11 +8385,11 @@ msgstr "" "avand diametrul vârfului și unghiul la vârf cat și\n" "adâncimea de tăiere, ca parametri." -#: flatcamGUI/FlatCAMGUI.py:6130 flatcamTools/ToolCalculators.py:94 +#: flatcamGUI/FlatCAMGUI.py:6137 flatcamTools/ToolCalculators.py:94 msgid "Tip Diameter:" msgstr "Dia vârf:" -#: flatcamGUI/FlatCAMGUI.py:6132 +#: flatcamGUI/FlatCAMGUI.py:6139 msgid "" "This is the tool tip diameter.\n" "It is specified by manufacturer." @@ -8370,11 +8397,11 @@ msgstr "" "Acesta este diametrul la vârf al uneltei.\n" "Este specificat de producator." -#: flatcamGUI/FlatCAMGUI.py:6140 +#: flatcamGUI/FlatCAMGUI.py:6147 msgid "Tip angle:" msgstr "Unghiul la vârf:" -#: flatcamGUI/FlatCAMGUI.py:6142 +#: flatcamGUI/FlatCAMGUI.py:6149 msgid "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." @@ -8382,7 +8409,7 @@ msgstr "" "Acesta este unghiul la vârf al uneltei.\n" "Este specificat de producator." -#: flatcamGUI/FlatCAMGUI.py:6152 +#: flatcamGUI/FlatCAMGUI.py:6159 msgid "" "This is depth to cut into material.\n" "In the CNCJob object it is the CutZ parameter." @@ -8390,11 +8417,11 @@ msgstr "" "Aceasta este adâncimea la care se taie in material.\n" "In obiectul CNCJob este parametrul >Z tăiere<." -#: flatcamGUI/FlatCAMGUI.py:6159 +#: flatcamGUI/FlatCAMGUI.py:6166 msgid "ElectroPlating Calculator:" msgstr "Calculator Electroplacare:" -#: flatcamGUI/FlatCAMGUI.py:6161 flatcamTools/ToolCalculators.py:152 +#: flatcamGUI/FlatCAMGUI.py:6168 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 " @@ -8406,31 +8433,31 @@ msgstr "" "- clorura paladiu\n" "- hipofosfit de calciu" -#: flatcamGUI/FlatCAMGUI.py:6171 flatcamTools/ToolCalculators.py:161 +#: flatcamGUI/FlatCAMGUI.py:6178 flatcamTools/ToolCalculators.py:161 msgid "Board Length:" msgstr "Lung. placii:" -#: flatcamGUI/FlatCAMGUI.py:6173 flatcamTools/ToolCalculators.py:165 +#: flatcamGUI/FlatCAMGUI.py:6180 flatcamTools/ToolCalculators.py:165 msgid "This is the board length. In centimeters." msgstr "" "Aceasta este lungimea PCB-ului.\n" "In centimetri. " -#: flatcamGUI/FlatCAMGUI.py:6179 flatcamTools/ToolCalculators.py:167 +#: flatcamGUI/FlatCAMGUI.py:6186 flatcamTools/ToolCalculators.py:167 msgid "Board Width:" msgstr "Lat. placii:" -#: flatcamGUI/FlatCAMGUI.py:6181 flatcamTools/ToolCalculators.py:171 +#: flatcamGUI/FlatCAMGUI.py:6188 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:6186 flatcamTools/ToolCalculators.py:173 +#: flatcamGUI/FlatCAMGUI.py:6193 flatcamTools/ToolCalculators.py:173 msgid "Current Density:" msgstr "Densitate I:" -#: flatcamGUI/FlatCAMGUI.py:6189 flatcamTools/ToolCalculators.py:177 +#: flatcamGUI/FlatCAMGUI.py:6196 flatcamTools/ToolCalculators.py:177 msgid "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." @@ -8438,11 +8465,11 @@ msgstr "" "Densitatea de curent care să treaca prin placa.\n" "In ASF (amperi pe picior la patrat)." -#: flatcamGUI/FlatCAMGUI.py:6195 flatcamTools/ToolCalculators.py:181 +#: flatcamGUI/FlatCAMGUI.py:6202 flatcamTools/ToolCalculators.py:181 msgid "Copper Growth:" msgstr "Grosime Cu:" -#: flatcamGUI/FlatCAMGUI.py:6198 flatcamTools/ToolCalculators.py:185 +#: flatcamGUI/FlatCAMGUI.py:6205 flatcamTools/ToolCalculators.py:185 msgid "" "How thick the copper growth is intended to be.\n" "In microns." @@ -8450,11 +8477,11 @@ msgstr "" "Cat de gros se dorește să fie stratul de cupru depus.\n" "In microni." -#: flatcamGUI/FlatCAMGUI.py:6211 +#: flatcamGUI/FlatCAMGUI.py:6218 msgid "Transform Tool Options" msgstr "Opțiuni Unealta Transformare" -#: flatcamGUI/FlatCAMGUI.py:6216 +#: flatcamGUI/FlatCAMGUI.py:6223 msgid "" "Various transformations that can be applied\n" "on a FlatCAM object." @@ -8467,47 +8494,47 @@ msgstr "" "- deformare\n" "- oglindire" -#: flatcamGUI/FlatCAMGUI.py:6226 +#: flatcamGUI/FlatCAMGUI.py:6233 msgid "Rotate Angle:" msgstr "Unghi Rotaţie:" -#: flatcamGUI/FlatCAMGUI.py:6228 +#: flatcamGUI/FlatCAMGUI.py:6235 msgid "Angle for rotation. In degrees." msgstr "Unnghiul pentru rotaţie. In grade." -#: flatcamGUI/FlatCAMGUI.py:6235 +#: flatcamGUI/FlatCAMGUI.py:6242 msgid "Skew_X angle:" msgstr "Unghi Deform_X:" -#: flatcamGUI/FlatCAMGUI.py:6237 +#: flatcamGUI/FlatCAMGUI.py:6244 msgid "Angle for Skew/Shear on X axis. In degrees." msgstr "Unghiul pentru deformare pe axa X. In grade." -#: flatcamGUI/FlatCAMGUI.py:6244 +#: flatcamGUI/FlatCAMGUI.py:6251 msgid "Skew_Y angle:" msgstr "Unghi Deform_Y:" -#: flatcamGUI/FlatCAMGUI.py:6246 +#: flatcamGUI/FlatCAMGUI.py:6253 msgid "Angle for Skew/Shear on Y axis. In degrees." msgstr "Unghiul pentru deformare pe axa Y. In grade." -#: flatcamGUI/FlatCAMGUI.py:6253 +#: flatcamGUI/FlatCAMGUI.py:6260 msgid "Scale_X factor:" msgstr "Factor Scal_X:" -#: flatcamGUI/FlatCAMGUI.py:6255 +#: flatcamGUI/FlatCAMGUI.py:6262 msgid "Factor for scaling on X axis." msgstr "Factor de scalare pe axa X." -#: flatcamGUI/FlatCAMGUI.py:6262 +#: flatcamGUI/FlatCAMGUI.py:6269 msgid "Scale_Y factor:" msgstr "Factor Scal_Y:" -#: flatcamGUI/FlatCAMGUI.py:6264 +#: flatcamGUI/FlatCAMGUI.py:6271 msgid "Factor for scaling on Y axis." msgstr "Factor de scalare pe axa Y." -#: flatcamGUI/FlatCAMGUI.py:6272 +#: flatcamGUI/FlatCAMGUI.py:6279 msgid "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." @@ -8515,7 +8542,7 @@ msgstr "" "Scalează obiectele selectate folosind\n" "Factor Scal_X pentru ambele axe." -#: flatcamGUI/FlatCAMGUI.py:6280 flatcamTools/ToolTransform.py:210 +#: flatcamGUI/FlatCAMGUI.py:6287 flatcamTools/ToolTransform.py:210 msgid "" "Scale the selected object(s)\n" "using the origin reference when checked,\n" @@ -8528,27 +8555,27 @@ msgstr "" "centrul formei inconjuatoare care cuprinde\n" "toate obiectele selectate." -#: flatcamGUI/FlatCAMGUI.py:6289 +#: flatcamGUI/FlatCAMGUI.py:6296 msgid "Offset_X val:" msgstr "Ofset_X:" -#: flatcamGUI/FlatCAMGUI.py:6291 +#: flatcamGUI/FlatCAMGUI.py:6298 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:6298 +#: flatcamGUI/FlatCAMGUI.py:6305 msgid "Offset_Y val:" msgstr "Ofset_Y:" -#: flatcamGUI/FlatCAMGUI.py:6300 +#: flatcamGUI/FlatCAMGUI.py:6307 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:6306 +#: flatcamGUI/FlatCAMGUI.py:6313 msgid "Mirror Reference" msgstr "Referinţă Oglindire" -#: flatcamGUI/FlatCAMGUI.py:6308 flatcamTools/ToolTransform.py:314 +#: flatcamGUI/FlatCAMGUI.py:6315 flatcamTools/ToolTransform.py:314 msgid "" "Flip the selected object(s)\n" "around the point in Point Entry Field.\n" @@ -8571,11 +8598,11 @@ msgstr "" "in forma (x, y).\n" "La final apasa butonul de oglindire pe axa dorita. " -#: flatcamGUI/FlatCAMGUI.py:6319 +#: flatcamGUI/FlatCAMGUI.py:6326 msgid " Mirror Ref. Point:" msgstr "Pt. Ref. Oglindire:" -#: flatcamGUI/FlatCAMGUI.py:6321 flatcamTools/ToolTransform.py:327 +#: flatcamGUI/FlatCAMGUI.py:6328 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" @@ -8586,11 +8613,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:6338 +#: flatcamGUI/FlatCAMGUI.py:6345 msgid "SolderPaste Tool Options" msgstr "Opțiuni Unealta Pasta Fludor" -#: flatcamGUI/FlatCAMGUI.py:6343 +#: flatcamGUI/FlatCAMGUI.py:6350 msgid "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." @@ -8598,49 +8625,49 @@ msgstr "" "O unealtă care crează cod G-Code pentru dispensarea de pastă de fludor\n" "pe padurile unui PCB." -#: flatcamGUI/FlatCAMGUI.py:6354 +#: flatcamGUI/FlatCAMGUI.py:6361 msgid "Diameters of nozzle tools, separated by ','" msgstr "Diametrele uneltelor (nozzle), separate prin virgula." -#: flatcamGUI/FlatCAMGUI.py:6361 +#: flatcamGUI/FlatCAMGUI.py:6368 msgid "New Nozzle Dia:" msgstr "Nou Dia::" -#: flatcamGUI/FlatCAMGUI.py:6363 flatcamTools/ToolSolderPaste.py:103 +#: flatcamGUI/FlatCAMGUI.py:6370 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:6371 flatcamTools/ToolSolderPaste.py:166 +#: flatcamGUI/FlatCAMGUI.py:6378 flatcamTools/ToolSolderPaste.py:166 msgid "Z Dispense Start:" msgstr "Z start disp.:" -#: flatcamGUI/FlatCAMGUI.py:6373 flatcamTools/ToolSolderPaste.py:168 +#: flatcamGUI/FlatCAMGUI.py:6380 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:6380 flatcamTools/ToolSolderPaste.py:174 +#: flatcamGUI/FlatCAMGUI.py:6387 flatcamTools/ToolSolderPaste.py:174 msgid "Z Dispense:" msgstr "Z disp.:" -#: flatcamGUI/FlatCAMGUI.py:6382 flatcamTools/ToolSolderPaste.py:176 +#: flatcamGUI/FlatCAMGUI.py:6389 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:6389 flatcamTools/ToolSolderPaste.py:183 +#: flatcamGUI/FlatCAMGUI.py:6396 flatcamTools/ToolSolderPaste.py:183 msgid "Z Dispense Stop:" msgstr "Z stop disp.:" -#: flatcamGUI/FlatCAMGUI.py:6391 flatcamTools/ToolSolderPaste.py:185 +#: flatcamGUI/FlatCAMGUI.py:6398 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:6398 flatcamTools/ToolSolderPaste.py:191 +#: flatcamGUI/FlatCAMGUI.py:6405 flatcamTools/ToolSolderPaste.py:191 msgid "Z Travel:" msgstr "Z deplasare:" -#: flatcamGUI/FlatCAMGUI.py:6400 flatcamTools/ToolSolderPaste.py:193 +#: flatcamGUI/FlatCAMGUI.py:6407 flatcamTools/ToolSolderPaste.py:193 msgid "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." @@ -8648,19 +8675,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:6408 flatcamTools/ToolSolderPaste.py:200 +#: flatcamGUI/FlatCAMGUI.py:6415 flatcamTools/ToolSolderPaste.py:200 msgid "Z Toolchange:" msgstr "Z schimb. unealtă:" -#: flatcamGUI/FlatCAMGUI.py:6410 flatcamTools/ToolSolderPaste.py:202 +#: flatcamGUI/FlatCAMGUI.py:6417 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:6417 flatcamTools/ToolSolderPaste.py:208 +#: flatcamGUI/FlatCAMGUI.py:6424 flatcamTools/ToolSolderPaste.py:208 msgid "XY Toolchange:" msgstr "XY schimb unealtă:" -#: flatcamGUI/FlatCAMGUI.py:6419 flatcamTools/ToolSolderPaste.py:210 +#: flatcamGUI/FlatCAMGUI.py:6426 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." @@ -8668,30 +8695,30 @@ msgstr "" "Coordonatele X, Y pentru schimbarea uneltei (nozzle).\n" "Formatul este (x,y) unde x și y sunt numere Reale." -#: flatcamGUI/FlatCAMGUI.py:6427 flatcamTools/ToolSolderPaste.py:217 +#: flatcamGUI/FlatCAMGUI.py:6434 flatcamTools/ToolSolderPaste.py:217 msgid "Feedrate X-Y:" msgstr "Feedrate X-Y:" -#: flatcamGUI/FlatCAMGUI.py:6429 flatcamTools/ToolSolderPaste.py:219 +#: flatcamGUI/FlatCAMGUI.py:6436 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:6436 flatcamTools/ToolSolderPaste.py:225 +#: flatcamGUI/FlatCAMGUI.py:6443 flatcamTools/ToolSolderPaste.py:225 msgid "Feedrate Z:" msgstr "Feedrate Z:" -#: flatcamGUI/FlatCAMGUI.py:6438 flatcamTools/ToolSolderPaste.py:227 +#: flatcamGUI/FlatCAMGUI.py:6445 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:6446 flatcamTools/ToolSolderPaste.py:234 +#: flatcamGUI/FlatCAMGUI.py:6453 flatcamTools/ToolSolderPaste.py:234 msgid "Feedrate Z Dispense:" msgstr "Feedrate Z disp.:" -#: flatcamGUI/FlatCAMGUI.py:6448 flatcamTools/ToolSolderPaste.py:236 +#: flatcamGUI/FlatCAMGUI.py:6455 flatcamTools/ToolSolderPaste.py:236 msgid "" "Feedrate (speed) while moving up vertically\n" " to Dispense position (on Z plane)." @@ -8699,11 +8726,11 @@ msgstr "" "Viteza de deplasare la mișcarea pe verticala spre\n" "poziţia de dispensare (in planul Z)." -#: flatcamGUI/FlatCAMGUI.py:6456 flatcamTools/ToolSolderPaste.py:243 +#: flatcamGUI/FlatCAMGUI.py:6463 flatcamTools/ToolSolderPaste.py:243 msgid "Spindle Speed FWD:" msgstr "Viteza motor inainte:" -#: flatcamGUI/FlatCAMGUI.py:6458 flatcamTools/ToolSolderPaste.py:245 +#: flatcamGUI/FlatCAMGUI.py:6465 flatcamTools/ToolSolderPaste.py:245 msgid "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." @@ -8711,19 +8738,19 @@ msgstr "" "Viteza motorului de dispensare in timp ce impinge pastă de fludor\n" "prin orificiul uneltei de dispensare." -#: flatcamGUI/FlatCAMGUI.py:6466 flatcamTools/ToolSolderPaste.py:252 +#: flatcamGUI/FlatCAMGUI.py:6473 flatcamTools/ToolSolderPaste.py:252 msgid "Dwell FWD:" msgstr "Pauza dupa disp.:" -#: flatcamGUI/FlatCAMGUI.py:6468 flatcamTools/ToolSolderPaste.py:254 +#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:254 msgid "Pause after solder dispensing." msgstr "Pauza dupa dispensarea de pastă de fludor." -#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:260 +#: flatcamGUI/FlatCAMGUI.py:6482 flatcamTools/ToolSolderPaste.py:260 msgid "Spindle Speed REV:" msgstr "Viteza motor inapoi:" -#: flatcamGUI/FlatCAMGUI.py:6477 flatcamTools/ToolSolderPaste.py:262 +#: flatcamGUI/FlatCAMGUI.py:6484 flatcamTools/ToolSolderPaste.py:262 msgid "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." @@ -8731,11 +8758,11 @@ msgstr "" "Viteza motorului de dispensare in timp ce retrage pasta de fludor\n" "prin orificiul uneltei de dispensare." -#: flatcamGUI/FlatCAMGUI.py:6485 flatcamTools/ToolSolderPaste.py:269 +#: flatcamGUI/FlatCAMGUI.py:6492 flatcamTools/ToolSolderPaste.py:269 msgid "Dwell REV:" msgstr "Pauza dupa rev:" -#: flatcamGUI/FlatCAMGUI.py:6487 flatcamTools/ToolSolderPaste.py:271 +#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:271 msgid "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." @@ -8743,23 +8770,23 @@ msgstr "" "Pauza dupa ce pasta de fludor a fost retrasă,\n" "necesară pt a ajunge la un echilibru al presiunilor." -#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:277 +#: flatcamGUI/FlatCAMGUI.py:6501 flatcamTools/ToolSolderPaste.py:277 msgid "PostProcessors:" msgstr "Postprocesoare:" -#: flatcamGUI/FlatCAMGUI.py:6496 flatcamTools/ToolSolderPaste.py:279 +#: flatcamGUI/FlatCAMGUI.py:6503 flatcamTools/ToolSolderPaste.py:279 msgid "Files that control the GCode generation." msgstr "Fişiere care controlează generarea codului G-Code." -#: flatcamGUI/FlatCAMGUI.py:6526 flatcamGUI/FlatCAMGUI.py:6532 +#: flatcamGUI/FlatCAMGUI.py:6533 flatcamGUI/FlatCAMGUI.py:6539 msgid "Idle." msgstr "Inactiv." -#: flatcamGUI/FlatCAMGUI.py:6556 +#: flatcamGUI/FlatCAMGUI.py:6563 msgid "Application started ..." msgstr "Aplicaţia a pornit ..." -#: flatcamGUI/FlatCAMGUI.py:6557 +#: flatcamGUI/FlatCAMGUI.py:6564 msgid "Hello!" msgstr "Bună!" @@ -10858,7 +10885,7 @@ msgstr "" #: flatcamTools/ToolNonCopperClear.py:513 flatcamTools/ToolPaint.py:568 msgid "[WARNING_NOTCL] Adding tool cancelled. Tool already in Tool Table." msgstr "" -"[WARNING_NOTCL] Adaugarea unei unelte noi este anulata. Unealta exista deja " +"[WARNING_NOTCL] Adăugarea unei unelte noi este anulata. Unealta exista deja " "in Tabela de Unelte." #: flatcamTools/ToolNonCopperClear.py:518 flatcamTools/ToolPaint.py:573 @@ -11072,23 +11099,23 @@ msgstr "" msgid "[ERROR_NOTCL] Can't do Paint on MultiGeo geometries ..." msgstr "[ERROR_NOTCL] Nu se poate face 'pictare' pe geometrii MultiGeo ..." -#: flatcamTools/ToolPaint.py:796 flatcamTools/ToolPaint.py:999 +#: flatcamTools/ToolPaint.py:796 flatcamTools/ToolPaint.py:1003 msgid "Painting polygon..." msgstr "Se 'pictează' un poligon..." -#: flatcamTools/ToolPaint.py:847 +#: flatcamTools/ToolPaint.py:851 msgid "[WARNING] No polygon found." msgstr "[WARNING] Nu s-a gasit nici-un poligon." -#: flatcamTools/ToolPaint.py:850 +#: flatcamTools/ToolPaint.py:854 msgid "Painting polygon." msgstr "Se 'pictează' un poligon." -#: flatcamTools/ToolPaint.py:892 +#: flatcamTools/ToolPaint.py:896 msgid "[ERROR_NOTCL] Geometry could not be painted completely" msgstr "[ERROR_NOTCL] Geometria nu a putut să fie 'pictata' complet." -#: flatcamTools/ToolPaint.py:918 +#: flatcamTools/ToolPaint.py:922 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -11099,16 +11126,16 @@ msgstr "" "diferita de parametri. Sau o strategie diferita de 'pictare'.\n" "%s" -#: flatcamTools/ToolPaint.py:960 +#: flatcamTools/ToolPaint.py:964 #, python-format msgid "[ERROR_NOTCL] PaintTool.paint_poly() --> %s" msgstr "[ERROR_NOTCL] PaintTool.paint_poly() --> %s" -#: flatcamTools/ToolPaint.py:966 flatcamTools/ToolPaint.py:1259 +#: flatcamTools/ToolPaint.py:970 flatcamTools/ToolPaint.py:1263 msgid "Polygon Paint started ..." msgstr "Paint pt poligon a inceput ..." -#: flatcamTools/ToolPaint.py:1115 flatcamTools/ToolPaint.py:1204 +#: flatcamTools/ToolPaint.py:1119 flatcamTools/ToolPaint.py:1208 #, python-format msgid "" "[ERROR] Could not do Paint All. Try a different combination of parameters. " @@ -11119,7 +11146,7 @@ msgstr "" "combinaţie diferita de parametri. Sau încearcă o alta metoda de 'pictat'\n" "%s" -#: flatcamTools/ToolPaint.py:1139 +#: flatcamTools/ToolPaint.py:1143 msgid "" "[ERROR] There is no Painting Geometry in the file.\n" "Usually it means that the tool diameter is too big for the painted " @@ -11131,11 +11158,11 @@ msgstr "" "geometrice.\n" "Schimbă parametrii de 'pictare' și încearcă din nou." -#: flatcamTools/ToolPaint.py:1148 +#: flatcamTools/ToolPaint.py:1152 msgid "[success] Paint All Done." msgstr "[success] 'Paint' pt toate poligoanele a fost efectuata." -#: flatcamTools/ToolPaint.py:1234 +#: flatcamTools/ToolPaint.py:1238 msgid "" "[ERROR_NOTCL] There is no Painting Geometry in the file.\n" "Usually it means that the tool diameter is too big for the painted " @@ -11147,7 +11174,7 @@ msgstr "" "pt a fi folosit in obiectul Geometrie de 'pictat'.\n" "Schimbă parametrii de 'pictat' și încearcă din nou." -#: flatcamTools/ToolPaint.py:1243 +#: flatcamTools/ToolPaint.py:1247 msgid "[success] Paint All with Rest-Machining done." msgstr "" "[success] 'Paint' pentru toate poligoanele cu strategia Rest a fost " @@ -11693,7 +11720,7 @@ msgstr "Șterge Obiectul" msgid "" "[WARNING_NOTCL] Adding Nozzle tool cancelled. Tool already in Tool Table." msgstr "" -"[WARNING_NOTCL] Adaugarea unei unelte Nozzle a fost anulata. Unealta exista " +"[WARNING_NOTCL] Adăugarea unei unelte Nozzle a fost anulata. Unealta exista " "deja in Tabela de Unelte." #: flatcamTools/ToolSolderPaste.py:794 diff --git a/locale_template/strings.pot b/locale_template/strings.pot index 23773da5..d006ce2d 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-20 01:44+0300\n" +"POT-Creation-Date: 2019-05-22 18:30+0300\n" "PO-Revision-Date: 2019-03-25 15:08+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -59,17 +59,17 @@ msgstr "" msgid "Do you want to save the edited object?" msgstr "" -#: FlatCAMApp.py:2255 flatcamGUI/FlatCAMGUI.py:1618 +#: FlatCAMApp.py:2255 flatcamGUI/FlatCAMGUI.py:1621 msgid "Close Editor" msgstr "" #: FlatCAMApp.py:2258 FlatCAMApp.py:3349 FlatCAMApp.py:5799 -#: FlatCAMTranslation.py:89 flatcamGUI/FlatCAMGUI.py:3726 +#: FlatCAMTranslation.py:89 flatcamGUI/FlatCAMGUI.py:3733 msgid "Yes" msgstr "" #: FlatCAMApp.py:2259 FlatCAMApp.py:3350 FlatCAMApp.py:5800 -#: FlatCAMTranslation.py:90 flatcamGUI/FlatCAMGUI.py:3727 +#: FlatCAMTranslation.py:90 flatcamGUI/FlatCAMGUI.py:3734 msgid "No" msgstr "" @@ -135,7 +135,7 @@ msgstr "" msgid "[ERROR_NOTCL] Failed to open recent files file for writing." msgstr "" -#: FlatCAMApp.py:2930 camlib.py:4453 +#: FlatCAMApp.py:2930 camlib.py:4454 msgid "[ERROR_NOTCL] An internal error has ocurred. See shell.\n" msgstr "" @@ -191,7 +191,7 @@ msgstr "" msgid "Factory defaults saved." msgstr "" -#: FlatCAMApp.py:3339 flatcamGUI/FlatCAMGUI.py:3103 +#: FlatCAMApp.py:3339 flatcamGUI/FlatCAMGUI.py:3110 msgid "[WARNING_NOTCL] Application is saving the project. Please wait ..." msgstr "" @@ -283,7 +283,7 @@ msgid "" msgstr "" #: FlatCAMApp.py:4488 FlatCAMApp.py:4521 FlatCAMApp.py:4532 FlatCAMApp.py:4543 -#: flatcamGUI/FlatCAMGUI.py:2998 +#: flatcamGUI/FlatCAMGUI.py:3005 msgid "[WARNING_NOTCL] Adding Tool cancelled ..." msgstr "" @@ -323,15 +323,15 @@ msgstr "" #: FlatCAMApp.py:4661 flatcamEditors/FlatCAMExcEditor.py:2285 #: flatcamEditors/FlatCAMExcEditor.py:2292 -#: flatcamEditors/FlatCAMGeoEditor.py:3555 -#: flatcamEditors/FlatCAMGeoEditor.py:3569 -#: flatcamEditors/FlatCAMGrbEditor.py:1037 -#: flatcamEditors/FlatCAMGrbEditor.py:1138 -#: flatcamEditors/FlatCAMGrbEditor.py:1399 -#: flatcamEditors/FlatCAMGrbEditor.py:1649 -#: flatcamEditors/FlatCAMGrbEditor.py:3784 -#: flatcamEditors/FlatCAMGrbEditor.py:3798 flatcamGUI/FlatCAMGUI.py:2412 -#: flatcamGUI/FlatCAMGUI.py:2424 +#: flatcamEditors/FlatCAMGeoEditor.py:3648 +#: flatcamEditors/FlatCAMGeoEditor.py:3662 +#: 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 msgid "[success] Done." msgstr "" @@ -356,8 +356,8 @@ msgid "[success] Flip on Y axis done." msgstr "" #: FlatCAMApp.py:4971 FlatCAMApp.py:5011 -#: flatcamEditors/FlatCAMGeoEditor.py:1356 -#: flatcamEditors/FlatCAMGrbEditor.py:5165 flatcamTools/ToolTransform.py:748 +#: flatcamEditors/FlatCAMGeoEditor.py:1355 +#: flatcamEditors/FlatCAMGrbEditor.py:5309 flatcamTools/ToolTransform.py:748 #, python-format msgid "[ERROR_NOTCL] Due of %s, Flip action was not executed." msgstr "" @@ -386,8 +386,8 @@ msgstr "" msgid "[success] Rotation done." msgstr "" -#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:1299 -#: flatcamEditors/FlatCAMGrbEditor.py:5096 flatcamTools/ToolTransform.py:677 +#: FlatCAMApp.py:5059 flatcamEditors/FlatCAMGeoEditor.py:1298 +#: flatcamEditors/FlatCAMGrbEditor.py:5240 flatcamTools/ToolTransform.py:677 #, python-format msgid "[ERROR_NOTCL] Due of %s, rotation movement was not executed." msgstr "" @@ -408,9 +408,9 @@ msgstr "" msgid "[success] Skew on Y axis done." msgstr "" -#: FlatCAMApp.py:5197 flatcamEditors/FlatCAMGeoEditor.py:938 -#: flatcamEditors/FlatCAMGrbEditor.py:2223 -#: flatcamEditors/FlatCAMGrbEditor.py:4687 flatcamGUI/ObjectUI.py:991 +#: FlatCAMApp.py:5197 flatcamEditors/FlatCAMGeoEditor.py:937 +#: flatcamEditors/FlatCAMGrbEditor.py:2365 +#: flatcamEditors/FlatCAMGrbEditor.py:4831 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 @@ -419,9 +419,9 @@ msgid "Add" msgstr "" #: FlatCAMApp.py:5198 FlatCAMObj.py:3302 -#: flatcamEditors/FlatCAMGrbEditor.py:2228 flatcamGUI/FlatCAMGUI.py:532 -#: flatcamGUI/FlatCAMGUI.py:726 flatcamGUI/FlatCAMGUI.py:1616 -#: flatcamGUI/FlatCAMGUI.py:1948 flatcamGUI/ObjectUI.py:1007 +#: flatcamEditors/FlatCAMGrbEditor.py:2370 flatcamGUI/FlatCAMGUI.py:532 +#: flatcamGUI/FlatCAMGUI.py:729 flatcamGUI/FlatCAMGUI.py:1619 +#: flatcamGUI/FlatCAMGUI.py:1955 flatcamGUI/ObjectUI.py:1007 #: flatcamTools/ToolNonCopperClear.py:146 flatcamTools/ToolPaint.py:143 #: flatcamTools/ToolSolderPaste.py:121 flatcamTools/ToolSolderPaste.py:481 msgid "Delete" @@ -494,7 +494,7 @@ msgid "[success] New Project created..." msgstr "" #: FlatCAMApp.py:5923 FlatCAMApp.py:5926 flatcamGUI/FlatCAMGUI.py:613 -#: flatcamGUI/FlatCAMGUI.py:1831 +#: flatcamGUI/FlatCAMGUI.py:1834 msgid "Open Gerber" msgstr "" @@ -503,7 +503,7 @@ msgid "[WARNING_NOTCL] Open Gerber cancelled." msgstr "" #: FlatCAMApp.py:5952 FlatCAMApp.py:5955 flatcamGUI/FlatCAMGUI.py:614 -#: flatcamGUI/FlatCAMGUI.py:1832 +#: flatcamGUI/FlatCAMGUI.py:1835 msgid "Open Excellon" msgstr "" @@ -946,7 +946,7 @@ msgstr "" msgid "[ERROR_NOTCL] Failed to parse recent item list." msgstr "" -#: FlatCAMApp.py:8110 flatcamGUI/FlatCAMGUI.py:970 +#: FlatCAMApp.py:8110 flatcamGUI/FlatCAMGUI.py:973 msgid "Shortcut Key List" msgstr "" @@ -1105,7 +1105,7 @@ msgstr "" #: flatcamTools/ToolNonCopperClear.py:627 #: flatcamTools/ToolNonCopperClear.py:644 flatcamTools/ToolPaint.py:538 #: flatcamTools/ToolPaint.py:608 flatcamTools/ToolPaint.py:743 -#: flatcamTools/ToolPaint.py:840 flatcamTools/ToolPaint.py:995 +#: flatcamTools/ToolPaint.py:844 flatcamTools/ToolPaint.py:999 #: flatcamTools/ToolPanelize.py:385 flatcamTools/ToolPanelize.py:397 #: flatcamTools/ToolPanelize.py:410 flatcamTools/ToolPanelize.py:423 #: flatcamTools/ToolPanelize.py:435 flatcamTools/ToolPanelize.py:446 @@ -1164,8 +1164,8 @@ msgstr "" msgid "Generating CNC Code" msgstr "" -#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5165 camlib.py:5624 -#: camlib.py:5887 +#: FlatCAMObj.py:2674 FlatCAMObj.py:5021 camlib.py:5166 camlib.py:5625 +#: camlib.py:5888 msgid "" "[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " "format (x, y) \n" @@ -1184,8 +1184,8 @@ msgstr "" msgid "Finish" msgstr "" -#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:724 -#: flatcamGUI/FlatCAMGUI.py:1615 flatcamGUI/FlatCAMGUI.py:1946 +#: FlatCAMObj.py:3300 flatcamGUI/FlatCAMGUI.py:531 flatcamGUI/FlatCAMGUI.py:727 +#: flatcamGUI/FlatCAMGUI.py:1618 flatcamGUI/FlatCAMGUI.py:1953 #: flatcamGUI/ObjectUI.py:999 msgid "Copy" msgstr "" @@ -1409,7 +1409,7 @@ msgstr "" msgid "[ERROR_NOTCL] This is GCODE mark: %s" msgstr "" -#: camlib.py:3989 +#: camlib.py:3990 #, python-format msgid "" "[WARNING] No tool diameter info's. See shell.\n" @@ -1420,26 +1420,26 @@ msgid "" "diameters to reflect the real diameters." msgstr "" -#: camlib.py:4454 +#: camlib.py:4455 #, python-brace-format msgid "" "[ERROR] Excellon Parser error.\n" "Parsing Failed. Line {l_nr}: {line}\n" msgstr "" -#: camlib.py:4531 +#: camlib.py:4532 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:5074 +#: camlib.py:5075 #, python-format msgid "[ERROR] There is no such parameter: %s" msgstr "" -#: camlib.py:5144 +#: camlib.py:5145 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "drill into material.\n" @@ -1448,27 +1448,27 @@ msgid "" "CNC code (Gcode etc)." msgstr "" -#: camlib.py:5151 camlib.py:5647 camlib.py:5910 +#: camlib.py:5152 camlib.py:5648 camlib.py:5911 #, python-format msgid "" "[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" msgstr "" -#: camlib.py:5380 camlib.py:5477 camlib.py:5535 +#: camlib.py:5381 camlib.py:5478 camlib.py:5536 msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." msgstr "" -#: camlib.py:5482 +#: camlib.py:5483 msgid "[ERROR_NOTCL] Wrong optimization type selected." msgstr "" -#: camlib.py:5635 camlib.py:5898 +#: camlib.py:5636 camlib.py:5899 msgid "" "[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " "combinations of other parameters." msgstr "" -#: camlib.py:5640 camlib.py:5903 +#: camlib.py:5641 camlib.py:5904 msgid "" "[WARNING] The Cut Z parameter has positive value. It is the depth value to " "cut into material.\n" @@ -1477,11 +1477,11 @@ msgid "" "code (Gcode etc)." msgstr "" -#: camlib.py:5652 camlib.py:5915 +#: camlib.py:5653 camlib.py:5916 msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." msgstr "" -#: camlib.py:5656 camlib.py:5919 +#: camlib.py:5657 camlib.py:5920 msgid "" "[WARNING] The Travel Z parameter has negative value. It is the height value " "to travel between cuts.\n" @@ -1490,31 +1490,31 @@ msgid "" "code (Gcode etc)." msgstr "" -#: camlib.py:5663 camlib.py:5926 +#: camlib.py:5664 camlib.py:5927 #, python-format msgid "" "[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" msgstr "" -#: camlib.py:5793 +#: camlib.py:5794 #, python-format msgid "[ERROR]Expected a Geometry, got %s" msgstr "" -#: camlib.py:5799 +#: camlib.py:5800 msgid "" "[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " "solid_geometry." msgstr "" -#: camlib.py:5838 +#: camlib.py:5839 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:6052 +#: camlib.py:6053 msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." msgstr "" @@ -1526,8 +1526,8 @@ msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:447 #: flatcamEditors/FlatCAMExcEditor.py:472 #: flatcamEditors/FlatCAMGrbEditor.py:451 -#: flatcamEditors/FlatCAMGrbEditor.py:1759 -#: flatcamEditors/FlatCAMGrbEditor.py:1787 +#: flatcamEditors/FlatCAMGrbEditor.py:1762 +#: flatcamEditors/FlatCAMGrbEditor.py:1790 msgid "Click on target location ..." msgstr "" @@ -1581,7 +1581,7 @@ msgid "[WARNING_NOTCL] Cancelled. No drills selected for resize ..." msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:449 -#: flatcamEditors/FlatCAMGrbEditor.py:1761 +#: flatcamEditors/FlatCAMGrbEditor.py:1764 msgid "Click on reference location ..." msgstr "" @@ -1598,7 +1598,7 @@ msgid "Excellon Editor" msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:765 -#: flatcamEditors/FlatCAMGrbEditor.py:2108 +#: flatcamEditors/FlatCAMGrbEditor.py:2250 msgid "Name:" msgstr "" @@ -1675,7 +1675,7 @@ msgstr "" msgid "Resize drill(s)" msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1612 +#: flatcamEditors/FlatCAMExcEditor.py:889 flatcamGUI/FlatCAMGUI.py:1615 msgid "Add Drill Array" msgstr "" @@ -1690,12 +1690,12 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:900 -#: flatcamEditors/FlatCAMGrbEditor.py:2341 +#: flatcamEditors/FlatCAMGrbEditor.py:2483 msgid "Linear" msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:901 -#: flatcamEditors/FlatCAMGrbEditor.py:2342 +#: flatcamEditors/FlatCAMGrbEditor.py:2484 msgid "Circular" msgstr "" @@ -1709,13 +1709,13 @@ msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:927 #: flatcamEditors/FlatCAMExcEditor.py:972 -#: flatcamEditors/FlatCAMGrbEditor.py:2368 -#: flatcamEditors/FlatCAMGrbEditor.py:2413 +#: flatcamEditors/FlatCAMGrbEditor.py:2510 +#: flatcamEditors/FlatCAMGrbEditor.py:2555 msgid "Direction:" msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:929 -#: flatcamEditors/FlatCAMGrbEditor.py:2370 +#: flatcamEditors/FlatCAMGrbEditor.py:2512 msgid "" "Direction on which the linear array is oriented:\n" "- 'X' - horizontal axis \n" @@ -1724,26 +1724,26 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:942 -#: flatcamEditors/FlatCAMGrbEditor.py:2383 +#: flatcamEditors/FlatCAMGrbEditor.py:2525 msgid "Pitch:" msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:944 -#: flatcamEditors/FlatCAMGrbEditor.py:2385 +#: flatcamEditors/FlatCAMGrbEditor.py:2527 msgid "Pitch = Distance between elements of the array." msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:951 #: flatcamEditors/FlatCAMExcEditor.py:987 -#: flatcamEditors/FlatCAMGeoEditor.py:666 -#: flatcamEditors/FlatCAMGrbEditor.py:2392 -#: flatcamEditors/FlatCAMGrbEditor.py:2428 -#: flatcamEditors/FlatCAMGrbEditor.py:4414 flatcamTools/ToolTransform.py:68 +#: flatcamEditors/FlatCAMGeoEditor.py:665 +#: flatcamEditors/FlatCAMGrbEditor.py:2534 +#: flatcamEditors/FlatCAMGrbEditor.py:2570 +#: flatcamEditors/FlatCAMGrbEditor.py:4558 flatcamTools/ToolTransform.py:68 msgid "Angle:" msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:953 -#: flatcamEditors/FlatCAMGrbEditor.py:2394 +#: flatcamEditors/FlatCAMGrbEditor.py:2536 msgid "" "Angle at which the linear array is placed.\n" "The precision is of max 2 decimals.\n" @@ -1752,14 +1752,14 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:974 -#: flatcamEditors/FlatCAMGrbEditor.py:2415 +#: flatcamEditors/FlatCAMGrbEditor.py:2557 msgid "" "Direction for circular array.Can be CW = clockwise or CCW = counter " "clockwise." msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:989 -#: flatcamEditors/FlatCAMGrbEditor.py:2430 +#: flatcamEditors/FlatCAMGrbEditor.py:2572 msgid "Angle at which each element in circular array is placed." msgstr "" @@ -1769,7 +1769,7 @@ msgid "" "Save and reedit Excellon if you need to add this tool. " msgstr "" -#: flatcamEditors/FlatCAMExcEditor.py:1461 flatcamGUI/FlatCAMGUI.py:2995 +#: flatcamEditors/FlatCAMExcEditor.py:1461 flatcamGUI/FlatCAMGUI.py:3002 #, python-brace-format msgid "[success] Added new tool with dia: {dia} {units}" msgstr "" @@ -1806,17 +1806,17 @@ msgid "[success] Done. Drill(s) deleted." msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:2675 -#: flatcamEditors/FlatCAMGrbEditor.py:4174 +#: flatcamEditors/FlatCAMGrbEditor.py:4318 msgid "Click on the circular array Center position" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:80 -#: flatcamEditors/FlatCAMGrbEditor.py:2258 +#: flatcamEditors/FlatCAMGrbEditor.py:2400 msgid "Buffer distance:" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:81 -#: flatcamEditors/FlatCAMGrbEditor.py:2259 +#: flatcamEditors/FlatCAMGrbEditor.py:2401 msgid "Buffer corner:" msgstr "" @@ -1830,17 +1830,17 @@ msgid "" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:89 -#: flatcamEditors/FlatCAMGrbEditor.py:2267 +#: flatcamEditors/FlatCAMGrbEditor.py:2409 msgid "Round" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:90 -#: flatcamEditors/FlatCAMGrbEditor.py:2268 +#: flatcamEditors/FlatCAMGrbEditor.py:2410 msgid "Square" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:91 -#: flatcamEditors/FlatCAMGrbEditor.py:2269 +#: flatcamEditors/FlatCAMGrbEditor.py:2411 msgid "Beveled" msgstr "" @@ -1857,17 +1857,17 @@ msgid "Full Buffer" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:127 -#: flatcamEditors/FlatCAMGeoEditor.py:2696 +#: flatcamEditors/FlatCAMGeoEditor.py:2682 msgid "Buffer Tool" msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:138 #: flatcamEditors/FlatCAMGeoEditor.py:155 #: flatcamEditors/FlatCAMGeoEditor.py:172 -#: flatcamEditors/FlatCAMGeoEditor.py:2714 -#: flatcamEditors/FlatCAMGeoEditor.py:2740 -#: flatcamEditors/FlatCAMGeoEditor.py:2766 -#: flatcamEditors/FlatCAMGrbEditor.py:4226 +#: flatcamEditors/FlatCAMGeoEditor.py:2700 +#: flatcamEditors/FlatCAMGeoEditor.py:2726 +#: flatcamEditors/FlatCAMGeoEditor.py:2752 +#: flatcamEditors/FlatCAMGrbEditor.py:4370 msgid "" "[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and " "retry." @@ -1877,24 +1877,24 @@ msgstr "" msgid "Text Tool" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:805 +#: flatcamEditors/FlatCAMGeoEditor.py:401 flatcamGUI/FlatCAMGUI.py:808 msgid "Tool" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4051 -#: flatcamGUI/FlatCAMGUI.py:5448 flatcamGUI/FlatCAMGUI.py:5724 -#: flatcamGUI/FlatCAMGUI.py:5864 flatcamGUI/ObjectUI.py:260 +#: flatcamEditors/FlatCAMGeoEditor.py:432 flatcamGUI/FlatCAMGUI.py:4058 +#: flatcamGUI/FlatCAMGUI.py:5455 flatcamGUI/FlatCAMGUI.py:5731 +#: flatcamGUI/FlatCAMGUI.py:5871 flatcamGUI/ObjectUI.py:260 msgid "Tool dia:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5866 +#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:5873 msgid "" "Diameter of the tool to\n" "be used in the operation." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5630 -#: flatcamGUI/FlatCAMGUI.py:5875 flatcamTools/ToolNonCopperClear.py:165 +#: flatcamEditors/FlatCAMGeoEditor.py:443 flatcamGUI/FlatCAMGUI.py:5637 +#: flatcamGUI/FlatCAMGUI.py:5882 flatcamTools/ToolNonCopperClear.py:165 #: flatcamTools/ToolPaint.py:160 msgid "Overlap Rate:" msgstr "" @@ -1914,14 +1914,14 @@ msgid "" "due of too many paths." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5646 -#: flatcamGUI/FlatCAMGUI.py:5732 flatcamGUI/FlatCAMGUI.py:5885 +#: flatcamEditors/FlatCAMGeoEditor.py:461 flatcamGUI/FlatCAMGUI.py:5653 +#: flatcamGUI/FlatCAMGUI.py:5739 flatcamGUI/FlatCAMGUI.py:5892 #: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:181 #: flatcamTools/ToolPaint.py:177 msgid "Margin:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5887 +#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:5894 #: flatcamTools/ToolPaint.py:179 msgid "" "Distance by which to avoid\n" @@ -1929,61 +1929,61 @@ msgid "" "be painted." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5655 -#: flatcamGUI/FlatCAMGUI.py:5896 flatcamTools/ToolNonCopperClear.py:190 +#: flatcamEditors/FlatCAMGeoEditor.py:472 flatcamGUI/FlatCAMGUI.py:5662 +#: flatcamGUI/FlatCAMGUI.py:5903 flatcamTools/ToolNonCopperClear.py:190 #: flatcamTools/ToolPaint.py:188 msgid "Method:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5898 +#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:5905 msgid "" "Algorithm to paint the polygon:
Standard: Fixed step inwards." "
Seed-based: Outwards from seed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5671 -#: flatcamGUI/FlatCAMGUI.py:5911 flatcamTools/ToolNonCopperClear.py:206 +#: flatcamEditors/FlatCAMGeoEditor.py:487 flatcamGUI/FlatCAMGUI.py:5678 +#: flatcamGUI/FlatCAMGUI.py:5918 flatcamTools/ToolNonCopperClear.py:206 #: flatcamTools/ToolPaint.py:204 msgid "Connect:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5673 -#: flatcamGUI/FlatCAMGUI.py:5913 flatcamTools/ToolNonCopperClear.py:208 +#: flatcamEditors/FlatCAMGeoEditor.py:489 flatcamGUI/FlatCAMGUI.py:5680 +#: flatcamGUI/FlatCAMGUI.py:5920 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:5680 -#: flatcamGUI/FlatCAMGUI.py:5921 flatcamTools/ToolNonCopperClear.py:215 +#: flatcamEditors/FlatCAMGeoEditor.py:496 flatcamGUI/FlatCAMGUI.py:5687 +#: flatcamGUI/FlatCAMGUI.py:5928 flatcamTools/ToolNonCopperClear.py:215 #: flatcamTools/ToolPaint.py:213 msgid "Contour:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5682 -#: flatcamGUI/FlatCAMGUI.py:5923 flatcamTools/ToolNonCopperClear.py:217 +#: flatcamEditors/FlatCAMGeoEditor.py:498 flatcamGUI/FlatCAMGUI.py:5689 +#: flatcamGUI/FlatCAMGUI.py:5930 flatcamTools/ToolNonCopperClear.py:217 #: flatcamTools/ToolPaint.py:215 msgid "" "Cut around the perimeter of the polygon\n" "to trim rough edges." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:510 +#: flatcamEditors/FlatCAMGeoEditor.py:509 msgid "Paint" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:528 flatcamGUI/FlatCAMGUI.py:648 -#: flatcamGUI/FlatCAMGUI.py:1865 flatcamGUI/ObjectUI.py:1314 +#: flatcamEditors/FlatCAMGeoEditor.py:527 flatcamGUI/FlatCAMGUI.py:648 +#: flatcamGUI/FlatCAMGUI.py:1868 flatcamGUI/ObjectUI.py:1314 #: flatcamTools/ToolPaint.py:341 msgid "Paint Tool" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:564 +#: flatcamEditors/FlatCAMGeoEditor.py:563 msgid "[WARNING_NOTCL] Paint cancelled. No shape selected." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:575 flatcamTools/ToolCutOut.py:355 +#: flatcamEditors/FlatCAMGeoEditor.py:574 flatcamTools/ToolCutOut.py:355 #: flatcamTools/ToolCutOut.py:512 flatcamTools/ToolCutOut.py:651 #: flatcamTools/ToolCutOut.py:756 flatcamTools/ToolDblSided.py:363 msgid "" @@ -1991,74 +1991,74 @@ msgid "" "retry." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:586 +#: flatcamEditors/FlatCAMGeoEditor.py:585 msgid "" "[WARNING_NOTCL] Overlap value is missing or wrong format. Add it and retry." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:598 +#: flatcamEditors/FlatCAMGeoEditor.py:597 msgid "" "[WARNING_NOTCL] Margin distance value is missing or wrong format. Add it and " "retry." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:607 -#: flatcamEditors/FlatCAMGeoEditor.py:2721 -#: flatcamEditors/FlatCAMGeoEditor.py:2747 -#: flatcamEditors/FlatCAMGeoEditor.py:2773 +#: flatcamEditors/FlatCAMGeoEditor.py:606 +#: flatcamEditors/FlatCAMGeoEditor.py:2707 +#: flatcamEditors/FlatCAMGeoEditor.py:2733 +#: flatcamEditors/FlatCAMGeoEditor.py:2759 #: flatcamTools/ToolNonCopperClear.py:813 flatcamTools/ToolProperties.py:104 msgid "Tools" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:618 -#: flatcamEditors/FlatCAMGeoEditor.py:991 -#: flatcamEditors/FlatCAMGrbEditor.py:4365 -#: flatcamEditors/FlatCAMGrbEditor.py:4750 flatcamGUI/FlatCAMGUI.py:659 -#: flatcamGUI/FlatCAMGUI.py:1878 flatcamTools/ToolTransform.py:398 +#: 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 msgid "Transform Tool" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:619 -#: flatcamEditors/FlatCAMGeoEditor.py:680 -#: flatcamEditors/FlatCAMGrbEditor.py:4366 -#: flatcamEditors/FlatCAMGrbEditor.py:4428 flatcamTools/ToolTransform.py:24 +#: flatcamEditors/FlatCAMGeoEditor.py:618 +#: flatcamEditors/FlatCAMGeoEditor.py:679 +#: flatcamEditors/FlatCAMGrbEditor.py:4510 +#: flatcamEditors/FlatCAMGrbEditor.py:4572 flatcamTools/ToolTransform.py:24 #: flatcamTools/ToolTransform.py:82 msgid "Rotate" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:620 -#: flatcamEditors/FlatCAMGrbEditor.py:4367 flatcamTools/ToolTransform.py:25 +#: flatcamEditors/FlatCAMGeoEditor.py:619 +#: flatcamEditors/FlatCAMGrbEditor.py:4511 flatcamTools/ToolTransform.py:25 msgid "Skew/Shear" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:621 -#: flatcamEditors/FlatCAMGrbEditor.py:2313 -#: flatcamEditors/FlatCAMGrbEditor.py:4368 flatcamGUI/FlatCAMGUI.py:722 -#: flatcamGUI/FlatCAMGUI.py:1944 flatcamGUI/ObjectUI.py:100 +#: flatcamEditors/FlatCAMGeoEditor.py:620 +#: flatcamEditors/FlatCAMGrbEditor.py:2455 +#: flatcamEditors/FlatCAMGrbEditor.py:4512 flatcamGUI/FlatCAMGUI.py:723 +#: flatcamGUI/FlatCAMGUI.py:1949 flatcamGUI/ObjectUI.py:100 #: flatcamTools/ToolTransform.py:26 msgid "Scale" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:622 -#: flatcamEditors/FlatCAMGrbEditor.py:4369 flatcamTools/ToolTransform.py:27 +#: flatcamEditors/FlatCAMGeoEditor.py:621 +#: flatcamEditors/FlatCAMGrbEditor.py:4513 flatcamTools/ToolTransform.py:27 msgid "Mirror (Flip)" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:623 -#: flatcamEditors/FlatCAMGrbEditor.py:4370 flatcamGUI/ObjectUI.py:127 +#: flatcamEditors/FlatCAMGeoEditor.py:622 +#: flatcamEditors/FlatCAMGrbEditor.py:4514 flatcamGUI/ObjectUI.py:127 #: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 #: flatcamTools/ToolTransform.py:28 msgid "Offset" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:634 -#: flatcamEditors/FlatCAMGrbEditor.py:4382 +#: flatcamEditors/FlatCAMGeoEditor.py:633 +#: flatcamEditors/FlatCAMGrbEditor.py:4526 #, python-format msgid "Editor %s" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:668 -#: flatcamEditors/FlatCAMGrbEditor.py:4416 flatcamTools/ToolTransform.py:70 +#: flatcamEditors/FlatCAMGeoEditor.py:667 +#: flatcamEditors/FlatCAMGrbEditor.py:4560 flatcamTools/ToolTransform.py:70 msgid "" "Angle for Rotation action, in degrees.\n" "Float number between -360 and 359.\n" @@ -2066,115 +2066,115 @@ msgid "" "Negative numbers for CCW motion." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:682 -#: flatcamEditors/FlatCAMGrbEditor.py:4430 +#: flatcamEditors/FlatCAMGeoEditor.py:681 +#: flatcamEditors/FlatCAMGrbEditor.py:4574 msgid "" "Rotate the selected shape(s).\n" "The point of reference is the middle of\n" "the bounding box for all selected shapes." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:705 -#: flatcamEditors/FlatCAMGrbEditor.py:4453 flatcamTools/ToolTransform.py:107 +#: flatcamEditors/FlatCAMGeoEditor.py:704 +#: flatcamEditors/FlatCAMGrbEditor.py:4597 flatcamTools/ToolTransform.py:107 msgid "Angle X:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:707 -#: flatcamEditors/FlatCAMGeoEditor.py:725 -#: flatcamEditors/FlatCAMGrbEditor.py:4455 -#: flatcamEditors/FlatCAMGrbEditor.py:4473 flatcamTools/ToolTransform.py:109 +#: flatcamEditors/FlatCAMGeoEditor.py:706 +#: flatcamEditors/FlatCAMGeoEditor.py:724 +#: flatcamEditors/FlatCAMGrbEditor.py:4599 +#: flatcamEditors/FlatCAMGrbEditor.py:4617 flatcamTools/ToolTransform.py:109 #: flatcamTools/ToolTransform.py:127 msgid "" "Angle for Skew action, in degrees.\n" "Float number between -360 and 359." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:716 -#: flatcamEditors/FlatCAMGrbEditor.py:4464 flatcamTools/ToolTransform.py:118 +#: flatcamEditors/FlatCAMGeoEditor.py:715 +#: flatcamEditors/FlatCAMGrbEditor.py:4608 flatcamTools/ToolTransform.py:118 msgid "Skew X" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:718 -#: flatcamEditors/FlatCAMGeoEditor.py:736 -#: flatcamEditors/FlatCAMGrbEditor.py:4466 -#: flatcamEditors/FlatCAMGrbEditor.py:4484 +#: flatcamEditors/FlatCAMGeoEditor.py:717 +#: flatcamEditors/FlatCAMGeoEditor.py:735 +#: flatcamEditors/FlatCAMGrbEditor.py:4610 +#: flatcamEditors/FlatCAMGrbEditor.py:4628 msgid "" "Skew/shear the selected shape(s).\n" "The point of reference is the middle of\n" "the bounding box for all selected shapes." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:723 -#: flatcamEditors/FlatCAMGrbEditor.py:4471 flatcamTools/ToolTransform.py:125 +#: flatcamEditors/FlatCAMGeoEditor.py:722 +#: flatcamEditors/FlatCAMGrbEditor.py:4615 flatcamTools/ToolTransform.py:125 msgid "Angle Y:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:734 -#: flatcamEditors/FlatCAMGrbEditor.py:4482 flatcamTools/ToolTransform.py:136 +#: flatcamEditors/FlatCAMGeoEditor.py:733 +#: flatcamEditors/FlatCAMGrbEditor.py:4626 flatcamTools/ToolTransform.py:136 msgid "Skew Y" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:762 -#: flatcamEditors/FlatCAMGrbEditor.py:4510 flatcamTools/ToolTransform.py:164 +#: flatcamEditors/FlatCAMGeoEditor.py:761 +#: flatcamEditors/FlatCAMGrbEditor.py:4654 flatcamTools/ToolTransform.py:164 msgid "Factor X:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:764 -#: flatcamEditors/FlatCAMGrbEditor.py:4512 flatcamTools/ToolTransform.py:166 +#: flatcamEditors/FlatCAMGeoEditor.py:763 +#: flatcamEditors/FlatCAMGrbEditor.py:4656 flatcamTools/ToolTransform.py:166 msgid "Factor for Scale action over X axis." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:772 -#: flatcamEditors/FlatCAMGrbEditor.py:4520 flatcamTools/ToolTransform.py:174 +#: flatcamEditors/FlatCAMGeoEditor.py:771 +#: flatcamEditors/FlatCAMGrbEditor.py:4664 flatcamTools/ToolTransform.py:174 msgid "Scale X" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:774 -#: flatcamEditors/FlatCAMGeoEditor.py:791 -#: flatcamEditors/FlatCAMGrbEditor.py:4522 -#: flatcamEditors/FlatCAMGrbEditor.py:4539 +#: flatcamEditors/FlatCAMGeoEditor.py:773 +#: flatcamEditors/FlatCAMGeoEditor.py:790 +#: flatcamEditors/FlatCAMGrbEditor.py:4666 +#: flatcamEditors/FlatCAMGrbEditor.py:4683 msgid "" "Scale the selected shape(s).\n" "The point of reference depends on \n" "the Scale reference checkbox state." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:779 -#: flatcamEditors/FlatCAMGrbEditor.py:4527 flatcamTools/ToolTransform.py:181 +#: flatcamEditors/FlatCAMGeoEditor.py:778 +#: flatcamEditors/FlatCAMGrbEditor.py:4671 flatcamTools/ToolTransform.py:181 msgid "Factor Y:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:781 -#: flatcamEditors/FlatCAMGrbEditor.py:4529 flatcamTools/ToolTransform.py:183 +#: flatcamEditors/FlatCAMGeoEditor.py:780 +#: flatcamEditors/FlatCAMGrbEditor.py:4673 flatcamTools/ToolTransform.py:183 msgid "Factor for Scale action over Y axis." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:789 -#: flatcamEditors/FlatCAMGrbEditor.py:4537 flatcamTools/ToolTransform.py:191 +#: flatcamEditors/FlatCAMGeoEditor.py:788 +#: flatcamEditors/FlatCAMGrbEditor.py:4681 flatcamTools/ToolTransform.py:191 msgid "Scale Y" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:798 -#: flatcamEditors/FlatCAMGrbEditor.py:4546 flatcamGUI/FlatCAMGUI.py:6270 +#: flatcamEditors/FlatCAMGeoEditor.py:797 +#: flatcamEditors/FlatCAMGrbEditor.py:4690 flatcamGUI/FlatCAMGUI.py:6277 #: flatcamTools/ToolTransform.py:200 msgid "Link" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:800 -#: flatcamEditors/FlatCAMGrbEditor.py:4548 +#: flatcamEditors/FlatCAMGeoEditor.py:799 +#: flatcamEditors/FlatCAMGrbEditor.py:4692 msgid "" "Scale the selected shape(s)\n" "using the Scale Factor X for both axis." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:806 -#: flatcamEditors/FlatCAMGrbEditor.py:4554 flatcamGUI/FlatCAMGUI.py:6278 +#: flatcamEditors/FlatCAMGeoEditor.py:805 +#: flatcamEditors/FlatCAMGrbEditor.py:4698 flatcamGUI/FlatCAMGUI.py:6285 #: flatcamTools/ToolTransform.py:208 msgid "Scale Reference" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:808 -#: flatcamEditors/FlatCAMGrbEditor.py:4556 +#: flatcamEditors/FlatCAMGeoEditor.py:807 +#: flatcamEditors/FlatCAMGrbEditor.py:4700 msgid "" "Scale the selected shape(s)\n" "using the origin reference when checked,\n" @@ -2182,72 +2182,72 @@ msgid "" "of the selected shapes when unchecked." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:836 -#: flatcamEditors/FlatCAMGrbEditor.py:4585 flatcamTools/ToolTransform.py:238 +#: flatcamEditors/FlatCAMGeoEditor.py:835 +#: flatcamEditors/FlatCAMGrbEditor.py:4729 flatcamTools/ToolTransform.py:238 msgid "Value X:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:838 -#: flatcamEditors/FlatCAMGrbEditor.py:4587 flatcamTools/ToolTransform.py:240 +#: flatcamEditors/FlatCAMGeoEditor.py:837 +#: flatcamEditors/FlatCAMGrbEditor.py:4731 flatcamTools/ToolTransform.py:240 msgid "Value for Offset action on X axis." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:846 -#: flatcamEditors/FlatCAMGrbEditor.py:4595 flatcamTools/ToolTransform.py:248 +#: flatcamEditors/FlatCAMGeoEditor.py:845 +#: flatcamEditors/FlatCAMGrbEditor.py:4739 flatcamTools/ToolTransform.py:248 msgid "Offset X" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:848 -#: flatcamEditors/FlatCAMGeoEditor.py:866 -#: flatcamEditors/FlatCAMGrbEditor.py:4597 -#: flatcamEditors/FlatCAMGrbEditor.py:4615 +#: flatcamEditors/FlatCAMGeoEditor.py:847 +#: flatcamEditors/FlatCAMGeoEditor.py:865 +#: flatcamEditors/FlatCAMGrbEditor.py:4741 +#: flatcamEditors/FlatCAMGrbEditor.py:4759 msgid "" "Offset the selected shape(s).\n" "The point of reference is the middle of\n" "the bounding box for all selected shapes.\n" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:854 -#: flatcamEditors/FlatCAMGrbEditor.py:4603 flatcamTools/ToolTransform.py:255 +#: flatcamEditors/FlatCAMGeoEditor.py:853 +#: flatcamEditors/FlatCAMGrbEditor.py:4747 flatcamTools/ToolTransform.py:255 msgid "Value Y:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:856 -#: flatcamEditors/FlatCAMGrbEditor.py:4605 flatcamTools/ToolTransform.py:257 +#: flatcamEditors/FlatCAMGeoEditor.py:855 +#: flatcamEditors/FlatCAMGrbEditor.py:4749 flatcamTools/ToolTransform.py:257 msgid "Value for Offset action on Y axis." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:864 -#: flatcamEditors/FlatCAMGrbEditor.py:4613 flatcamTools/ToolTransform.py:265 +#: flatcamEditors/FlatCAMGeoEditor.py:863 +#: flatcamEditors/FlatCAMGrbEditor.py:4757 flatcamTools/ToolTransform.py:265 msgid "Offset Y" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:895 -#: flatcamEditors/FlatCAMGrbEditor.py:4644 flatcamTools/ToolTransform.py:295 +#: flatcamEditors/FlatCAMGeoEditor.py:894 +#: flatcamEditors/FlatCAMGrbEditor.py:4788 flatcamTools/ToolTransform.py:295 msgid "Flip on X" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:897 -#: flatcamEditors/FlatCAMGeoEditor.py:905 -#: flatcamEditors/FlatCAMGrbEditor.py:4646 -#: flatcamEditors/FlatCAMGrbEditor.py:4654 +#: flatcamEditors/FlatCAMGeoEditor.py:896 +#: flatcamEditors/FlatCAMGeoEditor.py:904 +#: flatcamEditors/FlatCAMGrbEditor.py:4790 +#: flatcamEditors/FlatCAMGrbEditor.py:4798 msgid "" "Flip the selected shape(s) over the X axis.\n" "Does not create a new shape." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:903 -#: flatcamEditors/FlatCAMGrbEditor.py:4652 flatcamTools/ToolTransform.py:303 +#: flatcamEditors/FlatCAMGeoEditor.py:902 +#: flatcamEditors/FlatCAMGrbEditor.py:4796 flatcamTools/ToolTransform.py:303 msgid "Flip on Y" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:912 -#: flatcamEditors/FlatCAMGrbEditor.py:4661 flatcamTools/ToolTransform.py:312 +#: flatcamEditors/FlatCAMGeoEditor.py:911 +#: flatcamEditors/FlatCAMGrbEditor.py:4805 flatcamTools/ToolTransform.py:312 msgid "Ref Pt" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:914 -#: flatcamEditors/FlatCAMGrbEditor.py:4663 +#: flatcamEditors/FlatCAMGeoEditor.py:913 +#: flatcamEditors/FlatCAMGrbEditor.py:4807 msgid "" "Flip the selected shape(s)\n" "around the point in Point Entry Field.\n" @@ -2260,509 +2260,531 @@ msgid "" "Point Entry field and click Flip on X(Y)" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:926 -#: flatcamEditors/FlatCAMGrbEditor.py:4675 flatcamTools/ToolTransform.py:325 +#: flatcamEditors/FlatCAMGeoEditor.py:925 +#: flatcamEditors/FlatCAMGrbEditor.py:4819 flatcamTools/ToolTransform.py:325 msgid "Point:" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:928 -#: flatcamEditors/FlatCAMGrbEditor.py:4677 +#: flatcamEditors/FlatCAMGeoEditor.py:927 +#: flatcamEditors/FlatCAMGrbEditor.py:4821 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." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:940 -#: flatcamEditors/FlatCAMGrbEditor.py:4689 flatcamTools/ToolTransform.py:339 +#: flatcamEditors/FlatCAMGeoEditor.py:939 +#: flatcamEditors/FlatCAMGrbEditor.py:4833 flatcamTools/ToolTransform.py:339 msgid "" "The point coordinates can be captured by\n" "left click on canvas together with pressing\n" "SHIFT key. Then click Add button to insert." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1055 -#: flatcamEditors/FlatCAMGrbEditor.py:4814 +#: flatcamEditors/FlatCAMGeoEditor.py:1054 +#: flatcamEditors/FlatCAMGrbEditor.py:4958 msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1076 -#: flatcamEditors/FlatCAMGrbEditor.py:4834 flatcamTools/ToolTransform.py:468 +#: flatcamEditors/FlatCAMGeoEditor.py:1075 +#: flatcamEditors/FlatCAMGrbEditor.py:4978 flatcamTools/ToolTransform.py:468 msgid "[ERROR_NOTCL] Wrong value format entered for Rotate, use a number." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1113 -#: flatcamEditors/FlatCAMGrbEditor.py:4877 flatcamTools/ToolTransform.py:502 +#: flatcamEditors/FlatCAMGeoEditor.py:1112 +#: flatcamEditors/FlatCAMGrbEditor.py:5021 flatcamTools/ToolTransform.py:502 msgid "[ERROR_NOTCL] Wrong value format entered for Skew X, use a number." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1134 -#: flatcamEditors/FlatCAMGrbEditor.py:4904 flatcamTools/ToolTransform.py:520 +#: flatcamEditors/FlatCAMGeoEditor.py:1133 +#: flatcamEditors/FlatCAMGrbEditor.py:5048 flatcamTools/ToolTransform.py:520 msgid "[ERROR_NOTCL] Wrong value format entered for Skew Y, use a number." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1155 -#: flatcamEditors/FlatCAMGrbEditor.py:4931 flatcamTools/ToolTransform.py:538 +#: flatcamEditors/FlatCAMGeoEditor.py:1154 +#: flatcamEditors/FlatCAMGrbEditor.py:5075 flatcamTools/ToolTransform.py:538 msgid "[ERROR_NOTCL] Wrong value format entered for Scale X, use a number." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1192 -#: flatcamEditors/FlatCAMGrbEditor.py:4972 flatcamTools/ToolTransform.py:572 +#: flatcamEditors/FlatCAMGeoEditor.py:1191 +#: flatcamEditors/FlatCAMGrbEditor.py:5116 flatcamTools/ToolTransform.py:572 msgid "[ERROR_NOTCL] Wrong value format entered for Scale Y, use a number." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1224 -#: flatcamEditors/FlatCAMGrbEditor.py:5010 flatcamTools/ToolTransform.py:601 +#: flatcamEditors/FlatCAMGeoEditor.py:1223 +#: flatcamEditors/FlatCAMGrbEditor.py:5154 flatcamTools/ToolTransform.py:601 msgid "[ERROR_NOTCL] Wrong value format entered for Offset X, use a number." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1245 -#: flatcamEditors/FlatCAMGrbEditor.py:5036 flatcamTools/ToolTransform.py:619 +#: flatcamEditors/FlatCAMGeoEditor.py:1244 +#: flatcamEditors/FlatCAMGrbEditor.py:5180 flatcamTools/ToolTransform.py:619 msgid "[ERROR_NOTCL] Wrong value format entered for Offset Y, use a number." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1263 -#: flatcamEditors/FlatCAMGrbEditor.py:5059 +#: flatcamEditors/FlatCAMGeoEditor.py:1262 +#: flatcamEditors/FlatCAMGrbEditor.py:5203 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1266 -#: flatcamEditors/FlatCAMGrbEditor.py:5062 flatcamTools/ToolTransform.py:640 +#: flatcamEditors/FlatCAMGeoEditor.py:1265 +#: flatcamEditors/FlatCAMGrbEditor.py:5206 flatcamTools/ToolTransform.py:640 msgid "Appying Rotate" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1294 -#: flatcamEditors/FlatCAMGrbEditor.py:5093 +#: flatcamEditors/FlatCAMGeoEditor.py:1293 +#: flatcamEditors/FlatCAMGrbEditor.py:5237 msgid "[success] Done. Rotate completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1310 -#: flatcamEditors/FlatCAMGrbEditor.py:5112 +#: flatcamEditors/FlatCAMGeoEditor.py:1309 +#: flatcamEditors/FlatCAMGrbEditor.py:5256 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to flip!" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1313 -#: flatcamEditors/FlatCAMGrbEditor.py:5115 flatcamTools/ToolTransform.py:691 +#: flatcamEditors/FlatCAMGeoEditor.py:1312 +#: flatcamEditors/FlatCAMGrbEditor.py:5259 flatcamTools/ToolTransform.py:691 msgid "Applying Flip" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1343 -#: flatcamEditors/FlatCAMGrbEditor.py:5152 flatcamTools/ToolTransform.py:733 +#: flatcamEditors/FlatCAMGeoEditor.py:1342 +#: flatcamEditors/FlatCAMGrbEditor.py:5296 flatcamTools/ToolTransform.py:733 msgid "[success] Flip on the Y axis done ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1346 -#: flatcamEditors/FlatCAMGrbEditor.py:5160 flatcamTools/ToolTransform.py:742 +#: flatcamEditors/FlatCAMGeoEditor.py:1345 +#: flatcamEditors/FlatCAMGrbEditor.py:5304 flatcamTools/ToolTransform.py:742 msgid "[success] Flip on the X axis done ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1365 -#: flatcamEditors/FlatCAMGrbEditor.py:5180 +#: flatcamEditors/FlatCAMGeoEditor.py:1364 +#: flatcamEditors/FlatCAMGrbEditor.py:5324 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1368 -#: flatcamEditors/FlatCAMGrbEditor.py:5183 flatcamTools/ToolTransform.py:760 +#: flatcamEditors/FlatCAMGeoEditor.py:1367 +#: flatcamEditors/FlatCAMGrbEditor.py:5327 flatcamTools/ToolTransform.py:760 msgid "Applying Skew" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1393 -#: flatcamEditors/FlatCAMGrbEditor.py:5216 flatcamTools/ToolTransform.py:791 +#: flatcamEditors/FlatCAMGeoEditor.py:1392 +#: flatcamEditors/FlatCAMGrbEditor.py:5360 flatcamTools/ToolTransform.py:791 #, python-format msgid "[success] Skew on the %s axis done ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1397 -#: flatcamEditors/FlatCAMGrbEditor.py:5220 flatcamTools/ToolTransform.py:795 +#: flatcamEditors/FlatCAMGeoEditor.py:1396 +#: flatcamEditors/FlatCAMGrbEditor.py:5364 flatcamTools/ToolTransform.py:795 #, python-format msgid "[ERROR_NOTCL] Due of %s, Skew action was not executed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1408 -#: flatcamEditors/FlatCAMGrbEditor.py:5239 +#: flatcamEditors/FlatCAMGeoEditor.py:1407 +#: flatcamEditors/FlatCAMGrbEditor.py:5383 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to scale!" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1411 -#: flatcamEditors/FlatCAMGrbEditor.py:5242 flatcamTools/ToolTransform.py:809 +#: flatcamEditors/FlatCAMGeoEditor.py:1410 +#: flatcamEditors/FlatCAMGrbEditor.py:5386 flatcamTools/ToolTransform.py:809 msgid "Applying Scale" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1444 -#: flatcamEditors/FlatCAMGrbEditor.py:5278 flatcamTools/ToolTransform.py:848 +#: flatcamEditors/FlatCAMGeoEditor.py:1443 +#: flatcamEditors/FlatCAMGrbEditor.py:5422 flatcamTools/ToolTransform.py:848 #, python-format msgid "[success] Scale on the %s axis done ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1447 -#: flatcamEditors/FlatCAMGrbEditor.py:5281 flatcamTools/ToolTransform.py:851 +#: flatcamEditors/FlatCAMGeoEditor.py:1446 +#: flatcamEditors/FlatCAMGrbEditor.py:5425 flatcamTools/ToolTransform.py:851 #, python-format msgid "[ERROR_NOTCL] Due of %s, Scale action was not executed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1456 -#: flatcamEditors/FlatCAMGrbEditor.py:5294 +#: flatcamEditors/FlatCAMGeoEditor.py:1455 +#: flatcamEditors/FlatCAMGrbEditor.py:5438 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to offset!" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1459 -#: flatcamEditors/FlatCAMGrbEditor.py:5297 flatcamTools/ToolTransform.py:861 +#: flatcamEditors/FlatCAMGeoEditor.py:1458 +#: flatcamEditors/FlatCAMGrbEditor.py:5441 flatcamTools/ToolTransform.py:861 msgid "Applying Offset" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1483 -#: flatcamEditors/FlatCAMGrbEditor.py:5318 flatcamTools/ToolTransform.py:880 +#: flatcamEditors/FlatCAMGeoEditor.py:1469 +#: flatcamEditors/FlatCAMGrbEditor.py:5462 flatcamTools/ToolTransform.py:880 #, python-format msgid "[success] Offset on the %s axis done ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1487 -#: flatcamEditors/FlatCAMGrbEditor.py:5322 flatcamTools/ToolTransform.py:884 +#: flatcamEditors/FlatCAMGeoEditor.py:1473 +#: flatcamEditors/FlatCAMGrbEditor.py:5466 flatcamTools/ToolTransform.py:884 #, python-format msgid "[ERROR_NOTCL] Due of %s, Offset action was not executed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1491 -#: flatcamEditors/FlatCAMGrbEditor.py:5326 +#: flatcamEditors/FlatCAMGeoEditor.py:1477 +#: flatcamEditors/FlatCAMGrbEditor.py:5470 msgid "Rotate ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1492 -#: flatcamEditors/FlatCAMGeoEditor.py:1549 -#: flatcamEditors/FlatCAMGeoEditor.py:1566 -#: flatcamEditors/FlatCAMGrbEditor.py:5327 -#: flatcamEditors/FlatCAMGrbEditor.py:5384 -#: flatcamEditors/FlatCAMGrbEditor.py:5401 +#: flatcamEditors/FlatCAMGeoEditor.py:1478 +#: flatcamEditors/FlatCAMGeoEditor.py:1535 +#: flatcamEditors/FlatCAMGeoEditor.py:1552 +#: flatcamEditors/FlatCAMGrbEditor.py:5471 +#: flatcamEditors/FlatCAMGrbEditor.py:5528 +#: flatcamEditors/FlatCAMGrbEditor.py:5545 msgid "Enter an Angle Value (degrees):" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1501 -#: flatcamEditors/FlatCAMGrbEditor.py:5336 +#: flatcamEditors/FlatCAMGeoEditor.py:1487 +#: flatcamEditors/FlatCAMGrbEditor.py:5480 msgid "[success] Geometry shape rotate done..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1506 -#: flatcamEditors/FlatCAMGrbEditor.py:5341 +#: flatcamEditors/FlatCAMGeoEditor.py:1492 +#: flatcamEditors/FlatCAMGrbEditor.py:5485 msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1512 -#: flatcamEditors/FlatCAMGrbEditor.py:5347 +#: flatcamEditors/FlatCAMGeoEditor.py:1498 +#: flatcamEditors/FlatCAMGrbEditor.py:5491 msgid "Offset on X axis ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1513 -#: flatcamEditors/FlatCAMGeoEditor.py:1532 -#: flatcamEditors/FlatCAMGrbEditor.py:5348 -#: flatcamEditors/FlatCAMGrbEditor.py:5367 +#: flatcamEditors/FlatCAMGeoEditor.py:1499 +#: flatcamEditors/FlatCAMGeoEditor.py:1518 +#: flatcamEditors/FlatCAMGrbEditor.py:5492 +#: flatcamEditors/FlatCAMGrbEditor.py:5511 #, python-format msgid "Enter a distance Value (%s):" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1522 -#: flatcamEditors/FlatCAMGrbEditor.py:5357 +#: flatcamEditors/FlatCAMGeoEditor.py:1508 +#: flatcamEditors/FlatCAMGrbEditor.py:5501 msgid "[success] Geometry shape offset on X axis done..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1526 -#: flatcamEditors/FlatCAMGrbEditor.py:5361 +#: flatcamEditors/FlatCAMGeoEditor.py:1512 +#: flatcamEditors/FlatCAMGrbEditor.py:5505 msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1531 -#: flatcamEditors/FlatCAMGrbEditor.py:5366 +#: flatcamEditors/FlatCAMGeoEditor.py:1517 +#: flatcamEditors/FlatCAMGrbEditor.py:5510 msgid "Offset on Y axis ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1541 -#: flatcamEditors/FlatCAMGrbEditor.py:5376 +#: flatcamEditors/FlatCAMGeoEditor.py:1527 +#: flatcamEditors/FlatCAMGrbEditor.py:5520 msgid "[success] Geometry shape offset on Y axis done..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1545 -#: flatcamEditors/FlatCAMGrbEditor.py:5380 +#: flatcamEditors/FlatCAMGeoEditor.py:1531 +#: flatcamEditors/FlatCAMGrbEditor.py:5524 msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1548 -#: flatcamEditors/FlatCAMGrbEditor.py:5383 +#: flatcamEditors/FlatCAMGeoEditor.py:1534 +#: flatcamEditors/FlatCAMGrbEditor.py:5527 msgid "Skew on X axis ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1558 -#: flatcamEditors/FlatCAMGrbEditor.py:5393 +#: flatcamEditors/FlatCAMGeoEditor.py:1544 +#: flatcamEditors/FlatCAMGrbEditor.py:5537 msgid "[success] Geometry shape skew on X axis done..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1562 -#: flatcamEditors/FlatCAMGrbEditor.py:5397 +#: flatcamEditors/FlatCAMGeoEditor.py:1548 +#: flatcamEditors/FlatCAMGrbEditor.py:5541 msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1565 -#: flatcamEditors/FlatCAMGrbEditor.py:5400 +#: flatcamEditors/FlatCAMGeoEditor.py:1551 +#: flatcamEditors/FlatCAMGrbEditor.py:5544 msgid "Skew on Y axis ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1575 -#: flatcamEditors/FlatCAMGrbEditor.py:5410 +#: flatcamEditors/FlatCAMGeoEditor.py:1561 +#: flatcamEditors/FlatCAMGrbEditor.py:5554 msgid "[success] Geometry shape skew on Y axis done..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1579 -#: flatcamEditors/FlatCAMGrbEditor.py:5414 +#: flatcamEditors/FlatCAMGeoEditor.py:1565 +#: flatcamEditors/FlatCAMGrbEditor.py:5558 msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1943 -#: flatcamEditors/FlatCAMGeoEditor.py:1994 -#: flatcamEditors/FlatCAMGrbEditor.py:1351 -#: flatcamEditors/FlatCAMGrbEditor.py:1420 +#: flatcamEditors/FlatCAMGeoEditor.py:1929 +#: flatcamEditors/FlatCAMGeoEditor.py:1980 +#: flatcamEditors/FlatCAMGrbEditor.py:1354 +#: flatcamEditors/FlatCAMGrbEditor.py:1423 msgid "Click on Center point ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1950 -#: flatcamEditors/FlatCAMGrbEditor.py:1359 +#: flatcamEditors/FlatCAMGeoEditor.py:1936 +#: flatcamEditors/FlatCAMGrbEditor.py:1362 msgid "Click on Perimeter point to complete ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:1979 +#: flatcamEditors/FlatCAMGeoEditor.py:1965 msgid "[success] Done. Adding Circle completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2014 -#: flatcamEditors/FlatCAMGrbEditor.py:1445 +#: flatcamEditors/FlatCAMGeoEditor.py:2000 +#: flatcamEditors/FlatCAMGrbEditor.py:1448 msgid "Click on Start point ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2016 -#: flatcamEditors/FlatCAMGrbEditor.py:1447 +#: flatcamEditors/FlatCAMGeoEditor.py:2002 +#: flatcamEditors/FlatCAMGrbEditor.py:1450 msgid "Click on Point3 ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2018 -#: flatcamEditors/FlatCAMGrbEditor.py:1449 +#: flatcamEditors/FlatCAMGeoEditor.py:2004 +#: flatcamEditors/FlatCAMGrbEditor.py:1452 msgid "Click on Stop point ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2023 -#: flatcamEditors/FlatCAMGrbEditor.py:1454 +#: flatcamEditors/FlatCAMGeoEditor.py:2009 +#: flatcamEditors/FlatCAMGrbEditor.py:1457 msgid "Click on Stop point to complete ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2025 -#: flatcamEditors/FlatCAMGrbEditor.py:1456 +#: flatcamEditors/FlatCAMGeoEditor.py:2011 +#: flatcamEditors/FlatCAMGrbEditor.py:1459 msgid "Click on Point2 to complete ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2027 -#: flatcamEditors/FlatCAMGrbEditor.py:1458 +#: flatcamEditors/FlatCAMGeoEditor.py:2013 +#: flatcamEditors/FlatCAMGrbEditor.py:1461 msgid "Click on Center point to complete ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2039 -#: flatcamEditors/FlatCAMGrbEditor.py:1470 +#: flatcamEditors/FlatCAMGeoEditor.py:2025 +#: flatcamEditors/FlatCAMGrbEditor.py:1473 #, python-format msgid "Direction: %s" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2049 -#: flatcamEditors/FlatCAMGrbEditor.py:1480 +#: flatcamEditors/FlatCAMGeoEditor.py:2035 +#: flatcamEditors/FlatCAMGrbEditor.py:1483 msgid "Mode: Start -> Stop -> Center. Click on Start point ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2052 -#: flatcamEditors/FlatCAMGrbEditor.py:1483 +#: flatcamEditors/FlatCAMGeoEditor.py:2038 +#: flatcamEditors/FlatCAMGrbEditor.py:1486 msgid "Mode: Point1 -> Point3 -> Point2. Click on Point1 ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2055 -#: flatcamEditors/FlatCAMGrbEditor.py:1486 +#: flatcamEditors/FlatCAMGeoEditor.py:2041 +#: flatcamEditors/FlatCAMGrbEditor.py:1489 msgid "Mode: Center -> Start -> Stop. Click on Center point ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2193 +#: flatcamEditors/FlatCAMGeoEditor.py:2179 msgid "[success] Done. Arc completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2212 -#: flatcamEditors/FlatCAMGeoEditor.py:2265 -#: flatcamEditors/FlatCAMGeoEditor.py:2640 +#: flatcamEditors/FlatCAMGeoEditor.py:2198 +#: flatcamEditors/FlatCAMGeoEditor.py:2251 +#: flatcamEditors/FlatCAMGeoEditor.py:2626 msgid "Click on 1st corner ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2218 +#: flatcamEditors/FlatCAMGeoEditor.py:2204 msgid "Click on opposite corner to complete ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2246 +#: flatcamEditors/FlatCAMGeoEditor.py:2232 msgid "[success] Done. Rectangle completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2272 +#: flatcamEditors/FlatCAMGeoEditor.py:2258 msgid "Click on next Point or click right mouse button to complete ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2300 +#: flatcamEditors/FlatCAMGeoEditor.py:2286 msgid "[success] Done. Polygon completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2310 -#: flatcamEditors/FlatCAMGeoEditor.py:2356 -#: flatcamEditors/FlatCAMGrbEditor.py:1055 -#: flatcamEditors/FlatCAMGrbEditor.py:1249 +#: flatcamEditors/FlatCAMGeoEditor.py:2296 +#: flatcamEditors/FlatCAMGeoEditor.py:2342 +#: flatcamEditors/FlatCAMGrbEditor.py:1058 +#: flatcamEditors/FlatCAMGrbEditor.py:1252 msgid "Backtracked one point ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2338 +#: flatcamEditors/FlatCAMGeoEditor.py:2324 msgid "[success] Done. Path completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2461 +#: flatcamEditors/FlatCAMGeoEditor.py:2447 msgid "[WARNING_NOTCL] MOVE: No shape selected. Select a shape to move ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2463 -#: flatcamEditors/FlatCAMGeoEditor.py:2475 +#: flatcamEditors/FlatCAMGeoEditor.py:2449 +#: flatcamEditors/FlatCAMGeoEditor.py:2461 msgid " MOVE: Click on reference point ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2466 +#: flatcamEditors/FlatCAMGeoEditor.py:2452 msgid " Click on destination point ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2500 +#: flatcamEditors/FlatCAMGeoEditor.py:2486 msgid "[success] Done. Geometry(s) Move completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2620 +#: flatcamEditors/FlatCAMGeoEditor.py:2606 msgid "[success] Done. Geometry(s) Copy completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2654 +#: flatcamEditors/FlatCAMGeoEditor.py:2640 #, python-format msgid "" "[ERROR]Font not supported. Only Regular, Bold, Italic and BoldItalic are " "supported. Error: %s" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2664 +#: flatcamEditors/FlatCAMGeoEditor.py:2650 msgid "[success] Done. Adding Text completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2692 +#: flatcamEditors/FlatCAMGeoEditor.py:2678 msgid "Create buffer geometry ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2703 -#: flatcamEditors/FlatCAMGeoEditor.py:2729 -#: flatcamEditors/FlatCAMGeoEditor.py:2755 +#: flatcamEditors/FlatCAMGeoEditor.py:2689 +#: flatcamEditors/FlatCAMGeoEditor.py:2715 +#: flatcamEditors/FlatCAMGeoEditor.py:2741 msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2725 -#: flatcamEditors/FlatCAMGrbEditor.py:4276 +#: flatcamEditors/FlatCAMGeoEditor.py:2711 +#: flatcamEditors/FlatCAMGrbEditor.py:4420 msgid "[success] Done. Buffer Tool completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2751 +#: flatcamEditors/FlatCAMGeoEditor.py:2737 msgid "[success] Done. Buffer Int Tool completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2777 +#: flatcamEditors/FlatCAMGeoEditor.py:2763 msgid "[success] Done. Buffer Ext Tool completed." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2810 +#: flatcamEditors/FlatCAMGeoEditor.py:2798 +#: flatcamEditors/FlatCAMGrbEditor.py:1969 +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 +msgid "Click to pick-up the erase shape..." +msgstr "" + +#: flatcamEditors/FlatCAMGeoEditor.py:2829 +#: flatcamEditors/FlatCAMGrbEditor.py:2028 +msgid "Click to erase ..." +msgstr "" + +#: flatcamEditors/FlatCAMGeoEditor.py:2858 +#: flatcamEditors/FlatCAMGrbEditor.py:2059 +msgid "[success] Done. Eraser tool action completed." +msgstr "" + +#: flatcamEditors/FlatCAMGeoEditor.py:2901 msgid "Create Paint geometry ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:2824 -#: flatcamEditors/FlatCAMGrbEditor.py:2059 +#: flatcamEditors/FlatCAMGeoEditor.py:2915 +#: flatcamEditors/FlatCAMGrbEditor.py:2201 msgid "Shape transformations ..." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:3327 +#: flatcamEditors/FlatCAMGeoEditor.py:3419 #, python-brace-format msgid "[WARNING] Editing MultiGeo Geometry, tool: {tool} with diameter: {dia}" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:3703 +#: flatcamEditors/FlatCAMGeoEditor.py:3796 msgid "[WARNING_NOTCL] Copy cancelled. No shape selected." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:3710 flatcamGUI/FlatCAMGUI.py:2725 -#: flatcamGUI/FlatCAMGUI.py:2771 flatcamGUI/FlatCAMGUI.py:2789 -#: flatcamGUI/FlatCAMGUI.py:2920 flatcamGUI/FlatCAMGUI.py:2932 -#: flatcamGUI/FlatCAMGUI.py:2966 +#: 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 msgid "Click on target point." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:3953 -#: flatcamEditors/FlatCAMGeoEditor.py:3987 +#: flatcamEditors/FlatCAMGeoEditor.py:4047 +#: flatcamEditors/FlatCAMGeoEditor.py:4082 msgid "" "[WARNING_NOTCL] A selection of at least 2 geo items is required to do " "Intersection." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4071 -#: flatcamEditors/FlatCAMGeoEditor.py:4108 -#: flatcamEditors/FlatCAMGeoEditor.py:4184 +#: flatcamEditors/FlatCAMGeoEditor.py:4166 +#: flatcamEditors/FlatCAMGeoEditor.py:4204 +#: flatcamEditors/FlatCAMGeoEditor.py:4280 msgid "" "[ERROR_NOTCL] Negative buffer value is not accepted. Use Buffer interior to " "generate an 'inside' shape" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4079 -#: flatcamEditors/FlatCAMGeoEditor.py:4117 -#: flatcamEditors/FlatCAMGeoEditor.py:4192 +#: flatcamEditors/FlatCAMGeoEditor.py:4175 +#: flatcamEditors/FlatCAMGeoEditor.py:4213 +#: flatcamEditors/FlatCAMGeoEditor.py:4288 msgid "[WARNING_NOTCL] Nothing selected for buffering." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4083 -#: flatcamEditors/FlatCAMGeoEditor.py:4121 -#: flatcamEditors/FlatCAMGeoEditor.py:4196 +#: flatcamEditors/FlatCAMGeoEditor.py:4179 +#: flatcamEditors/FlatCAMGeoEditor.py:4217 +#: flatcamEditors/FlatCAMGeoEditor.py:4292 msgid "[WARNING_NOTCL] Invalid distance for buffering." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4093 -#: flatcamEditors/FlatCAMGeoEditor.py:4205 +#: flatcamEditors/FlatCAMGeoEditor.py:4189 +#: flatcamEditors/FlatCAMGeoEditor.py:4301 msgid "" "[ERROR_NOTCL] Failed, the result is empty. Choose a different buffer value." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4101 +#: flatcamEditors/FlatCAMGeoEditor.py:4197 msgid "[success] Full buffer geometry created." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4131 +#: flatcamEditors/FlatCAMGeoEditor.py:4227 msgid "" "[ERROR_NOTCL] Failed, the result is empty. Choose a smaller buffer value." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4146 +#: flatcamEditors/FlatCAMGeoEditor.py:4242 msgid "[success] Interior buffer geometry created." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4217 +#: flatcamEditors/FlatCAMGeoEditor.py:4313 msgid "[success] Exterior buffer geometry created." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4281 +#: flatcamEditors/FlatCAMGeoEditor.py:4377 msgid "[WARNING_NOTCL] Nothing selected for painting." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4287 +#: flatcamEditors/FlatCAMGeoEditor.py:4383 msgid "[WARNING] Invalid value for {}" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4293 +#: flatcamEditors/FlatCAMGeoEditor.py:4389 msgid "" "[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 " "(100%)." msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4352 +#: flatcamEditors/FlatCAMGeoEditor.py:4448 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -2770,7 +2792,7 @@ msgid "" "%s" msgstr "" -#: flatcamEditors/FlatCAMGeoEditor.py:4363 +#: flatcamEditors/FlatCAMGeoEditor.py:4459 msgid "[success] Paint done." msgstr "" @@ -2790,7 +2812,7 @@ msgid "Click to place ..." msgstr "" #: flatcamEditors/FlatCAMGrbEditor.py:357 -#: flatcamEditors/FlatCAMGrbEditor.py:660 +#: flatcamEditors/FlatCAMGrbEditor.py:662 msgid "" "Incompatible aperture type. Select an aperture with type 'C', 'R' or 'O'." msgstr "" @@ -2808,180 +2830,180 @@ msgstr "" msgid "Click on the Pad Circular Array Start position" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:685 +#: flatcamEditors/FlatCAMGrbEditor.py:687 msgid "[WARNING_NOTCL] Too many Pads for the selected spacing angle." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:707 +#: flatcamEditors/FlatCAMGrbEditor.py:709 msgid "[success] Done. Pad Array added." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:728 +#: flatcamEditors/FlatCAMGrbEditor.py:730 msgid "Select shape(s) and then click ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:739 +#: flatcamEditors/FlatCAMGrbEditor.py:741 msgid "[ERROR_NOTCL] Failed. Nothing selected." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:754 +#: flatcamEditors/FlatCAMGrbEditor.py:756 msgid "" "[WARNING_NOTCL] Failed. Poligonize works only on geometries belonging to the " "same aperture." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:807 +#: flatcamEditors/FlatCAMGrbEditor.py:809 msgid "[success] Done. Poligonize completed." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:857 -#: flatcamEditors/FlatCAMGrbEditor.py:1072 -#: flatcamEditors/FlatCAMGrbEditor.py:1096 +#: flatcamEditors/FlatCAMGrbEditor.py:860 +#: flatcamEditors/FlatCAMGrbEditor.py:1075 +#: flatcamEditors/FlatCAMGrbEditor.py:1099 msgid "Corner Mode 1: 45 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:859 +#: flatcamEditors/FlatCAMGrbEditor.py:862 msgid "Click on 1st point ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:869 -#: flatcamEditors/FlatCAMGrbEditor.py:1167 +#: flatcamEditors/FlatCAMGrbEditor.py:872 +#: flatcamEditors/FlatCAMGrbEditor.py:1170 msgid "Click on next Point or click Right mouse button to complete ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1060 -#: flatcamEditors/FlatCAMGrbEditor.py:1093 +#: flatcamEditors/FlatCAMGrbEditor.py:1063 +#: flatcamEditors/FlatCAMGrbEditor.py:1096 msgid "Corner Mode 2: Reverse 45 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1063 -#: flatcamEditors/FlatCAMGrbEditor.py:1090 +#: flatcamEditors/FlatCAMGrbEditor.py:1066 +#: flatcamEditors/FlatCAMGrbEditor.py:1093 msgid "Corner Mode 3: 90 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1066 -#: flatcamEditors/FlatCAMGrbEditor.py:1087 +#: flatcamEditors/FlatCAMGrbEditor.py:1069 +#: flatcamEditors/FlatCAMGrbEditor.py:1090 msgid "Corner Mode 4: Reverse 90 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1069 -#: flatcamEditors/FlatCAMGrbEditor.py:1084 +#: flatcamEditors/FlatCAMGrbEditor.py:1072 +#: flatcamEditors/FlatCAMGrbEditor.py:1087 msgid "Corner Mode 5: Free angle ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1123 -#: flatcamEditors/FlatCAMGrbEditor.py:1281 -#: flatcamEditors/FlatCAMGrbEditor.py:1320 +#: flatcamEditors/FlatCAMGrbEditor.py:1126 +#: flatcamEditors/FlatCAMGrbEditor.py:1284 +#: flatcamEditors/FlatCAMGrbEditor.py:1323 msgid "Track Mode 1: 45 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1261 -#: flatcamEditors/FlatCAMGrbEditor.py:1315 +#: flatcamEditors/FlatCAMGrbEditor.py:1264 +#: flatcamEditors/FlatCAMGrbEditor.py:1318 msgid "Track Mode 2: Reverse 45 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1266 -#: flatcamEditors/FlatCAMGrbEditor.py:1310 +#: flatcamEditors/FlatCAMGrbEditor.py:1269 +#: flatcamEditors/FlatCAMGrbEditor.py:1313 msgid "Track Mode 3: 90 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1271 -#: flatcamEditors/FlatCAMGrbEditor.py:1305 +#: flatcamEditors/FlatCAMGrbEditor.py:1274 +#: flatcamEditors/FlatCAMGrbEditor.py:1308 msgid "Track Mode 4: Reverse 90 degrees ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1276 -#: flatcamEditors/FlatCAMGrbEditor.py:1300 +#: flatcamEditors/FlatCAMGrbEditor.py:1279 +#: flatcamEditors/FlatCAMGrbEditor.py:1303 msgid "Track Mode 5: Free angle ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1666 +#: flatcamEditors/FlatCAMGrbEditor.py:1669 msgid "Scale the selected Gerber apertures ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1708 +#: flatcamEditors/FlatCAMGrbEditor.py:1711 msgid "Buffer the selected apertures ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1752 +#: flatcamEditors/FlatCAMGrbEditor.py:1755 msgid "[WARNING_NOTCL] Nothing selected to move ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1875 +#: flatcamEditors/FlatCAMGrbEditor.py:1878 msgid "[success] Done. Apertures Move completed." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:1951 +#: flatcamEditors/FlatCAMGrbEditor.py:1954 msgid "[success] Done. Apertures copied." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2101 flatcamGUI/FlatCAMGUI.py:1604 -#: flatcamGUI/FlatCAMGUI.py:4322 +#: flatcamEditors/FlatCAMGrbEditor.py:2243 flatcamGUI/FlatCAMGUI.py:1607 +#: flatcamGUI/FlatCAMGUI.py:4329 msgid "Gerber Editor" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2120 flatcamGUI/ObjectUI.py:192 +#: flatcamEditors/FlatCAMGrbEditor.py:2262 flatcamGUI/ObjectUI.py:192 msgid "Apertures:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2122 flatcamGUI/ObjectUI.py:194 +#: flatcamEditors/FlatCAMGrbEditor.py:2264 flatcamGUI/ObjectUI.py:194 msgid "Apertures Table for the Gerber Object." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 msgid "Code" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 #: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1452 msgid "Type" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 msgid "Size" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2133 -#: flatcamEditors/FlatCAMGrbEditor.py:3442 flatcamGUI/ObjectUI.py:228 +#: flatcamEditors/FlatCAMGrbEditor.py:2275 +#: flatcamEditors/FlatCAMGrbEditor.py:3586 flatcamGUI/ObjectUI.py:228 msgid "Dim" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2137 flatcamGUI/ObjectUI.py:232 +#: flatcamEditors/FlatCAMGrbEditor.py:2279 flatcamGUI/ObjectUI.py:232 msgid "Index" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2139 flatcamGUI/ObjectUI.py:234 +#: flatcamEditors/FlatCAMGrbEditor.py:2281 flatcamGUI/ObjectUI.py:234 msgid "Aperture Code" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2141 flatcamGUI/ObjectUI.py:236 +#: flatcamEditors/FlatCAMGrbEditor.py:2283 flatcamGUI/ObjectUI.py:236 msgid "Type of aperture: circular, rectangle, macros etc" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2143 -#: flatcamEditors/FlatCAMGrbEditor.py:2176 flatcamGUI/ObjectUI.py:238 +#: flatcamEditors/FlatCAMGrbEditor.py:2285 +#: flatcamEditors/FlatCAMGrbEditor.py:2318 flatcamGUI/ObjectUI.py:238 msgid "Aperture Size:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2145 flatcamGUI/ObjectUI.py:240 +#: flatcamEditors/FlatCAMGrbEditor.py:2287 flatcamGUI/ObjectUI.py:240 msgid "" "Aperture Dimensions:\n" " - (width, height) for R, O type.\n" " - (dia, nVertices) for P type" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2166 +#: flatcamEditors/FlatCAMGrbEditor.py:2308 msgid "Aperture Code:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2168 +#: flatcamEditors/FlatCAMGrbEditor.py:2310 msgid "Code for the new aperture" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2178 +#: flatcamEditors/FlatCAMGrbEditor.py:2320 msgid "" "Size for the new aperture.\n" "If aperture type is 'R' or 'O' then\n" @@ -2990,11 +3012,11 @@ msgid "" "sqrt(width**2 + height**2)" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2190 +#: flatcamEditors/FlatCAMGrbEditor.py:2332 msgid "Aperture Type:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2192 +#: flatcamEditors/FlatCAMGrbEditor.py:2334 msgid "" "Select the type of new aperture. Can be:\n" "C = circular\n" @@ -3002,42 +3024,42 @@ msgid "" "O = oblong" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2203 +#: flatcamEditors/FlatCAMGrbEditor.py:2345 msgid "Aperture Dim:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2205 +#: flatcamEditors/FlatCAMGrbEditor.py:2347 msgid "" "Dimensions for the new aperture.\n" "Active only for rectangular apertures (type R).\n" "The format is (width, height)" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2214 +#: flatcamEditors/FlatCAMGrbEditor.py:2356 msgid "Add/Delete Aperture:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2216 +#: flatcamEditors/FlatCAMGrbEditor.py:2358 msgid "Add/Delete an aperture in the aperture table" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2225 +#: flatcamEditors/FlatCAMGrbEditor.py:2367 msgid "Add a new aperture to the aperture list." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2230 +#: flatcamEditors/FlatCAMGrbEditor.py:2372 msgid "Delete a aperture in the aperture list" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2246 +#: flatcamEditors/FlatCAMGrbEditor.py:2388 msgid "Buffer Aperture:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2248 +#: flatcamEditors/FlatCAMGrbEditor.py:2390 msgid "Buffer a aperture in the aperture list" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2261 +#: flatcamEditors/FlatCAMGrbEditor.py:2403 msgid "" "There are 3 types of corners:\n" " - 'Round': the corner is rounded.\n" @@ -3046,148 +3068,148 @@ msgid "" "meeting in the corner" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2276 flatcamGUI/FlatCAMGUI.py:721 -#: flatcamGUI/FlatCAMGUI.py:1943 +#: flatcamEditors/FlatCAMGrbEditor.py:2418 flatcamGUI/FlatCAMGUI.py:722 +#: flatcamGUI/FlatCAMGUI.py:1948 msgid "Buffer" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2290 +#: flatcamEditors/FlatCAMGrbEditor.py:2432 msgid "Scale Aperture:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2292 +#: flatcamEditors/FlatCAMGrbEditor.py:2434 msgid "Scale a aperture in the aperture list" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2300 +#: flatcamEditors/FlatCAMGrbEditor.py:2442 msgid "Scale factor:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2302 +#: flatcamEditors/FlatCAMGrbEditor.py:2444 msgid "" "The factor by which to scale the selected aperture.\n" "Values can be between 0.0000 and 999.9999" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2330 flatcamGUI/FlatCAMGUI.py:711 -#: flatcamGUI/FlatCAMGUI.py:1933 +#: flatcamEditors/FlatCAMGrbEditor.py:2472 flatcamGUI/FlatCAMGUI.py:712 +#: flatcamGUI/FlatCAMGUI.py:1938 msgid "Add Pad Array" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2332 +#: flatcamEditors/FlatCAMGrbEditor.py:2474 msgid "Add an array of pads (linear or circular array)" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2338 +#: flatcamEditors/FlatCAMGrbEditor.py:2480 msgid "" "Select the type of pads array to create.\n" "It can be Linear X(Y) or Circular" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2349 +#: flatcamEditors/FlatCAMGrbEditor.py:2491 msgid "Nr of pads:" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2351 +#: flatcamEditors/FlatCAMGrbEditor.py:2493 msgid "Specify how many pads to be in the array." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2826 -#: flatcamEditors/FlatCAMGrbEditor.py:2830 +#: flatcamEditors/FlatCAMGrbEditor.py:2970 +#: flatcamEditors/FlatCAMGrbEditor.py:2974 msgid "" "[WARNING_NOTCL] Aperture code value is missing or wrong format. Add it and " "retry." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2866 +#: flatcamEditors/FlatCAMGrbEditor.py:3010 msgid "" "[WARNING_NOTCL] Aperture dimensions value is missing or wrong format. Add it " "in format (width, height) and retry." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2878 +#: flatcamEditors/FlatCAMGrbEditor.py:3022 msgid "" "[WARNING_NOTCL] Aperture size value is missing or wrong format. Add it and " "retry." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2889 +#: flatcamEditors/FlatCAMGrbEditor.py:3033 msgid "[WARNING_NOTCL] Aperture already in the aperture table." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2896 +#: flatcamEditors/FlatCAMGrbEditor.py:3040 #, python-brace-format msgid "[success] Added new aperture with code: {apid}" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2924 +#: flatcamEditors/FlatCAMGrbEditor.py:3068 msgid "[WARNING_NOTCL] Select an aperture in Aperture Table" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2930 +#: flatcamEditors/FlatCAMGrbEditor.py:3074 #, python-format msgid "[WARNING_NOTCL] Select an aperture in Aperture Table --> %s" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:2953 +#: flatcamEditors/FlatCAMGrbEditor.py:3097 #, python-brace-format msgid "[success] Deleted aperture with code: {del_dia}" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3373 +#: flatcamEditors/FlatCAMGrbEditor.py:3517 #, python-format msgid "Adding aperture: %s geo ..." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3552 +#: flatcamEditors/FlatCAMGrbEditor.py:3696 msgid "" "[ERROR_NOTCL] There are no Aperture definitions in the file. Aborting Gerber " "creation." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3555 +#: flatcamEditors/FlatCAMGrbEditor.py:3699 msgid "[ERROR] An internal error has occurred. See shell.\n" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3560 +#: flatcamEditors/FlatCAMGrbEditor.py:3704 msgid "Creating Gerber." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3568 +#: flatcamEditors/FlatCAMGrbEditor.py:3712 msgid "[success] Gerber editing finished." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:3584 +#: flatcamEditors/FlatCAMGrbEditor.py:3728 msgid "[WARNING_NOTCL] Cancelled. No aperture is selected" msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:4104 +#: flatcamEditors/FlatCAMGrbEditor.py:4248 msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:4112 +#: flatcamEditors/FlatCAMGrbEditor.py:4256 msgid "[success] Done. Apertures geometry deleted." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:4261 +#: flatcamEditors/FlatCAMGrbEditor.py:4405 msgid "" "[WARNING_NOTCL] No aperture to buffer. Select at least one aperture and try " "again." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:4290 +#: flatcamEditors/FlatCAMGrbEditor.py:4434 msgid "" "[WARNING_NOTCL] Scale factor value is missing or wrong format. Add it and " "retry." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:4320 +#: flatcamEditors/FlatCAMGrbEditor.py:4464 msgid "" "[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try " "again." msgstr "" -#: flatcamEditors/FlatCAMGrbEditor.py:4336 +#: flatcamEditors/FlatCAMGrbEditor.py:4480 msgid "[success] Done. Scale Tool completed." msgstr "" @@ -3745,11 +3767,11 @@ msgstr "" msgid "View Source" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1617 +#: flatcamGUI/FlatCAMGUI.py:530 flatcamGUI/FlatCAMGUI.py:1620 msgid "Edit" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1623 +#: flatcamGUI/FlatCAMGUI.py:536 flatcamGUI/FlatCAMGUI.py:1626 #: flatcamTools/ToolProperties.py:25 msgid "Properties" msgstr "" @@ -3790,15 +3812,15 @@ msgstr "" msgid "Grid Toolbar" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1834 +#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1837 msgid "Open project" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1835 +#: flatcamGUI/FlatCAMGUI.py:617 flatcamGUI/FlatCAMGUI.py:1838 msgid "Save project" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1838 +#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1841 msgid "New Blank Geometry" msgstr "" @@ -3806,283 +3828,288 @@ msgstr "" msgid "New Blank Gerber" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1839 +#: flatcamGUI/FlatCAMGUI.py:622 flatcamGUI/FlatCAMGUI.py:1842 msgid "New Blank Excellon" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1841 +#: flatcamGUI/FlatCAMGUI.py:624 flatcamGUI/FlatCAMGUI.py:1844 msgid "Editor" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1843 +#: flatcamGUI/FlatCAMGUI.py:626 flatcamGUI/FlatCAMGUI.py:1846 msgid "Save Object and close the Editor" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1847 +#: flatcamGUI/FlatCAMGUI.py:630 flatcamGUI/FlatCAMGUI.py:1850 msgid "&Delete" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1850 +#: flatcamGUI/FlatCAMGUI.py:633 flatcamGUI/FlatCAMGUI.py:1853 msgid "&Replot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1851 +#: flatcamGUI/FlatCAMGUI.py:634 flatcamGUI/FlatCAMGUI.py:1854 msgid "&Clear plot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1852 +#: flatcamGUI/FlatCAMGUI.py:635 flatcamGUI/FlatCAMGUI.py:1855 msgid "Zoom In" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1853 +#: flatcamGUI/FlatCAMGUI.py:636 flatcamGUI/FlatCAMGUI.py:1856 msgid "Zoom Out" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1592 -#: flatcamGUI/FlatCAMGUI.py:1854 +#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1595 +#: flatcamGUI/FlatCAMGUI.py:1857 msgid "Zoom Fit" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1859 +#: flatcamGUI/FlatCAMGUI.py:642 flatcamGUI/FlatCAMGUI.py:1862 msgid "&Command Line" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1862 +#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1865 msgid "2Sided Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1863 +#: flatcamGUI/FlatCAMGUI.py:646 flatcamGUI/FlatCAMGUI.py:1866 msgid "&Cutout Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1864 +#: flatcamGUI/FlatCAMGUI.py:647 flatcamGUI/FlatCAMGUI.py:1867 #: flatcamGUI/ObjectUI.py:392 flatcamTools/ToolNonCopperClear.py:285 msgid "NCC Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1868 +#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1871 msgid "Panel Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1869 +#: flatcamGUI/FlatCAMGUI.py:652 flatcamGUI/FlatCAMGUI.py:1872 #: flatcamTools/ToolFilm.py:204 msgid "Film Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1871 +#: flatcamGUI/FlatCAMGUI.py:653 flatcamGUI/FlatCAMGUI.py:1874 msgid "SolderPaste Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1872 +#: flatcamGUI/FlatCAMGUI.py:654 flatcamGUI/FlatCAMGUI.py:1875 #: flatcamTools/ToolSub.py:26 msgid "Substract Tool" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1877 +#: flatcamGUI/FlatCAMGUI.py:658 flatcamGUI/FlatCAMGUI.py:1880 msgid "Calculators Tool" msgstr "" #: flatcamGUI/FlatCAMGUI.py:662 flatcamGUI/FlatCAMGUI.py:676 -#: flatcamGUI/FlatCAMGUI.py:709 flatcamGUI/FlatCAMGUI.py:1881 -#: flatcamGUI/FlatCAMGUI.py:1931 +#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1884 +#: flatcamGUI/FlatCAMGUI.py:1936 msgid "Select" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1882 +#: flatcamGUI/FlatCAMGUI.py:663 flatcamGUI/FlatCAMGUI.py:1885 msgid "Add Drill Hole" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1884 +#: flatcamGUI/FlatCAMGUI.py:665 flatcamGUI/FlatCAMGUI.py:1887 msgid "Add Drill Hole Array" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1885 +#: flatcamGUI/FlatCAMGUI.py:666 flatcamGUI/FlatCAMGUI.py:1888 msgid "Resize Drill" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1888 +#: flatcamGUI/FlatCAMGUI.py:669 flatcamGUI/FlatCAMGUI.py:1891 msgid "Copy Drill" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1890 +#: flatcamGUI/FlatCAMGUI.py:670 flatcamGUI/FlatCAMGUI.py:1893 msgid "Delete Drill" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1893 +#: flatcamGUI/FlatCAMGUI.py:673 flatcamGUI/FlatCAMGUI.py:1896 msgid "Move Drill" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1897 +#: flatcamGUI/FlatCAMGUI.py:677 flatcamGUI/FlatCAMGUI.py:1900 msgid "Add Circle" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1898 +#: flatcamGUI/FlatCAMGUI.py:678 flatcamGUI/FlatCAMGUI.py:1901 msgid "Add Arc" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1900 +#: flatcamGUI/FlatCAMGUI.py:680 flatcamGUI/FlatCAMGUI.py:1903 msgid "Add Rectangle" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1903 +#: flatcamGUI/FlatCAMGUI.py:683 flatcamGUI/FlatCAMGUI.py:1906 msgid "Add Path" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1905 +#: flatcamGUI/FlatCAMGUI.py:684 flatcamGUI/FlatCAMGUI.py:1908 msgid "Add Polygon" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1907 +#: flatcamGUI/FlatCAMGUI.py:686 flatcamGUI/FlatCAMGUI.py:1910 msgid "Add Text" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1909 +#: flatcamGUI/FlatCAMGUI.py:687 flatcamGUI/FlatCAMGUI.py:1912 msgid "Add Buffer" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1910 +#: flatcamGUI/FlatCAMGUI.py:688 flatcamGUI/FlatCAMGUI.py:1913 msgid "Paint Shape" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:691 flatcamGUI/FlatCAMGUI.py:1913 +#: flatcamGUI/FlatCAMGUI.py:689 flatcamGUI/FlatCAMGUI.py:724 +#: flatcamGUI/FlatCAMGUI.py:1914 flatcamGUI/FlatCAMGUI.py:1950 +msgid "Eraser" +msgstr "" + +#: flatcamGUI/FlatCAMGUI.py:692 flatcamGUI/FlatCAMGUI.py:1918 msgid "Polygon Union" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:693 flatcamGUI/FlatCAMGUI.py:1915 +#: flatcamGUI/FlatCAMGUI.py:694 flatcamGUI/FlatCAMGUI.py:1920 msgid "Polygon Intersection" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:695 flatcamGUI/FlatCAMGUI.py:1917 +#: flatcamGUI/FlatCAMGUI.py:696 flatcamGUI/FlatCAMGUI.py:1922 msgid "Polygon Subtraction" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:698 flatcamGUI/FlatCAMGUI.py:1920 +#: flatcamGUI/FlatCAMGUI.py:699 flatcamGUI/FlatCAMGUI.py:1925 msgid "Cut Path" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:699 +#: flatcamGUI/FlatCAMGUI.py:700 msgid "Copy Shape(s)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:702 +#: flatcamGUI/FlatCAMGUI.py:703 msgid "Delete Shape '-'" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:704 flatcamGUI/FlatCAMGUI.py:728 -#: flatcamGUI/FlatCAMGUI.py:1925 flatcamGUI/FlatCAMGUI.py:1950 +#: flatcamGUI/FlatCAMGUI.py:705 flatcamGUI/FlatCAMGUI.py:731 +#: flatcamGUI/FlatCAMGUI.py:1930 flatcamGUI/FlatCAMGUI.py:1957 msgid "Transformations" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:706 +#: flatcamGUI/FlatCAMGUI.py:707 msgid "Move Objects " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:710 flatcamGUI/FlatCAMGUI.py:1932 +#: flatcamGUI/FlatCAMGUI.py:711 flatcamGUI/FlatCAMGUI.py:1937 msgid "Add Pad" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:712 flatcamGUI/FlatCAMGUI.py:1934 +#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1939 msgid "Add Track" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:713 flatcamGUI/FlatCAMGUI.py:1935 +#: flatcamGUI/FlatCAMGUI.py:714 flatcamGUI/FlatCAMGUI.py:1940 msgid "Add Region" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:715 flatcamGUI/FlatCAMGUI.py:1937 +#: flatcamGUI/FlatCAMGUI.py:716 flatcamGUI/FlatCAMGUI.py:1942 msgid "Poligonize" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:717 flatcamGUI/FlatCAMGUI.py:1939 +#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1944 msgid "SemiDisc" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:718 flatcamGUI/FlatCAMGUI.py:1940 +#: flatcamGUI/FlatCAMGUI.py:719 flatcamGUI/FlatCAMGUI.py:1945 msgid "Disc" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:730 flatcamGUI/FlatCAMGUI.py:1602 -#: flatcamGUI/FlatCAMGUI.py:1622 flatcamGUI/FlatCAMGUI.py:1952 +#: flatcamGUI/FlatCAMGUI.py:733 flatcamGUI/FlatCAMGUI.py:1605 +#: flatcamGUI/FlatCAMGUI.py:1625 flatcamGUI/FlatCAMGUI.py:1959 #: flatcamTools/ToolMove.py:26 msgid "Move" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:736 flatcamGUI/FlatCAMGUI.py:1958 +#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1965 msgid "Snap to grid" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:739 flatcamGUI/FlatCAMGUI.py:1961 +#: flatcamGUI/FlatCAMGUI.py:742 flatcamGUI/FlatCAMGUI.py:1968 msgid "Grid X snapping distance" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:744 flatcamGUI/FlatCAMGUI.py:1966 +#: flatcamGUI/FlatCAMGUI.py:747 flatcamGUI/FlatCAMGUI.py:1973 msgid "Grid Y snapping distance" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:750 flatcamGUI/FlatCAMGUI.py:1972 +#: flatcamGUI/FlatCAMGUI.py:753 flatcamGUI/FlatCAMGUI.py:1979 msgid "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:756 flatcamGUI/FlatCAMGUI.py:1978 +#: flatcamGUI/FlatCAMGUI.py:759 flatcamGUI/FlatCAMGUI.py:1985 msgid "Snap to corner" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:760 flatcamGUI/FlatCAMGUI.py:1982 -#: flatcamGUI/FlatCAMGUI.py:3339 +#: flatcamGUI/FlatCAMGUI.py:763 flatcamGUI/FlatCAMGUI.py:1989 +#: flatcamGUI/FlatCAMGUI.py:3346 msgid "Max. magnet distance" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:788 flatcamGUI/FlatCAMGUI.py:1586 +#: flatcamGUI/FlatCAMGUI.py:791 flatcamGUI/FlatCAMGUI.py:1589 msgid "Project" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:798 +#: flatcamGUI/FlatCAMGUI.py:801 msgid "Selected" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:817 flatcamGUI/FlatCAMGUI.py:825 +#: flatcamGUI/FlatCAMGUI.py:820 flatcamGUI/FlatCAMGUI.py:828 msgid "Plot Area" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:849 +#: flatcamGUI/FlatCAMGUI.py:852 msgid "General" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:858 +#: flatcamGUI/FlatCAMGUI.py:861 msgid "APP. DEFAULTS" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:859 +#: flatcamGUI/FlatCAMGUI.py:862 msgid "PROJ. OPTIONS " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:870 +#: flatcamGUI/FlatCAMGUI.py:873 msgid "GERBER" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:879 +#: flatcamGUI/FlatCAMGUI.py:882 msgid "EXCELLON" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:888 +#: flatcamGUI/FlatCAMGUI.py:891 msgid "GEOMETRY" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:898 +#: flatcamGUI/FlatCAMGUI.py:901 msgid "CNC-JOB" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:907 +#: flatcamGUI/FlatCAMGUI.py:910 msgid "TOOLS" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:924 +#: flatcamGUI/FlatCAMGUI.py:927 msgid "Import Preferences" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:927 +#: flatcamGUI/FlatCAMGUI.py:930 msgid "" "Import a full set of FlatCAM settings from a file\n" "previously saved on HDD.\n" @@ -4091,35 +4118,35 @@ msgid "" "on the first start. Do not delete that file." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:934 +#: flatcamGUI/FlatCAMGUI.py:937 msgid "Export Preferences" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:937 +#: flatcamGUI/FlatCAMGUI.py:940 msgid "" "Export a full set of FlatCAM settings in a file\n" "that is saved on HDD." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:942 +#: flatcamGUI/FlatCAMGUI.py:945 msgid "Open Pref Folder" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:945 +#: flatcamGUI/FlatCAMGUI.py:948 msgid "Open the folder where FlatCAM save the preferences files." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:953 +#: flatcamGUI/FlatCAMGUI.py:956 msgid "Save Preferences" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:956 +#: flatcamGUI/FlatCAMGUI.py:959 msgid "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:982 +#: flatcamGUI/FlatCAMGUI.py:985 msgid "" "General Shortcut list
\n" " Editor Shortcut list
\n" "
\n" @@ -4719,141 +4746,141 @@ msgid "" " " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1579 +#: flatcamGUI/FlatCAMGUI.py:1582 msgid "Disable" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1581 +#: flatcamGUI/FlatCAMGUI.py:1584 msgid "New" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1582 +#: flatcamGUI/FlatCAMGUI.py:1585 msgid "Geometry" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1584 +#: flatcamGUI/FlatCAMGUI.py:1587 msgid "Excellon" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1589 +#: flatcamGUI/FlatCAMGUI.py:1592 msgid "Grids" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1591 +#: flatcamGUI/FlatCAMGUI.py:1594 msgid "View" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1593 +#: flatcamGUI/FlatCAMGUI.py:1596 msgid "Clear Plot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1594 +#: flatcamGUI/FlatCAMGUI.py:1597 msgid "Replot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1597 +#: flatcamGUI/FlatCAMGUI.py:1600 msgid "Geo Editor" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1598 +#: flatcamGUI/FlatCAMGUI.py:1601 msgid "Line" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1599 +#: flatcamGUI/FlatCAMGUI.py:1602 msgid "Rectangle" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1600 +#: flatcamGUI/FlatCAMGUI.py:1603 msgid "Cut" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1605 +#: flatcamGUI/FlatCAMGUI.py:1608 msgid "Pad" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1606 +#: flatcamGUI/FlatCAMGUI.py:1609 msgid "Pad Array" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1607 +#: flatcamGUI/FlatCAMGUI.py:1610 msgid "Track" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1608 +#: flatcamGUI/FlatCAMGUI.py:1611 msgid "Region" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1610 +#: flatcamGUI/FlatCAMGUI.py:1613 msgid "Exc Editor" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1611 +#: flatcamGUI/FlatCAMGUI.py:1614 msgid "Add Drill" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1643 +#: flatcamGUI/FlatCAMGUI.py:1646 msgid "Print Preview" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1644 +#: flatcamGUI/FlatCAMGUI.py:1647 msgid "Print Code" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1645 +#: flatcamGUI/FlatCAMGUI.py:1648 msgid "Find in Code" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1650 +#: flatcamGUI/FlatCAMGUI.py:1653 msgid "Replace With" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1654 +#: flatcamGUI/FlatCAMGUI.py:1657 msgid "All" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1656 +#: flatcamGUI/FlatCAMGUI.py:1659 msgid "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1659 +#: flatcamGUI/FlatCAMGUI.py:1662 msgid "Open Code" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1660 +#: flatcamGUI/FlatCAMGUI.py:1663 msgid "Save Code" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1695 +#: flatcamGUI/FlatCAMGUI.py:1698 msgid "" "Relative neasurement.\n" "Reference is last click position" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1701 +#: flatcamGUI/FlatCAMGUI.py:1704 msgid "" "Absolute neasurement.\n" "Reference is (X=0, Y= 0) position" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1896 +#: flatcamGUI/FlatCAMGUI.py:1899 msgid "Select 'Esc'" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1921 +#: flatcamGUI/FlatCAMGUI.py:1926 msgid "Copy Objects" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1923 +#: flatcamGUI/FlatCAMGUI.py:1928 msgid "Delete Shape" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:1928 +#: flatcamGUI/FlatCAMGUI.py:1933 msgid "Move Objects" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2358 +#: flatcamGUI/FlatCAMGUI.py:2365 msgid "" "Please first select a geometry item to be cutted\n" "then select the geometry item that will be cutted\n" @@ -4861,131 +4888,131 @@ msgid "" "the toolbar button." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2365 flatcamGUI/FlatCAMGUI.py:2502 -#: flatcamGUI/FlatCAMGUI.py:2561 flatcamGUI/FlatCAMGUI.py:2581 +#: flatcamGUI/FlatCAMGUI.py:2372 flatcamGUI/FlatCAMGUI.py:2509 +#: flatcamGUI/FlatCAMGUI.py:2568 flatcamGUI/FlatCAMGUI.py:2588 msgid "Warning" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2432 flatcamGUI/FlatCAMGUI.py:2631 -#: flatcamGUI/FlatCAMGUI.py:2842 +#: flatcamGUI/FlatCAMGUI.py:2439 flatcamGUI/FlatCAMGUI.py:2638 +#: flatcamGUI/FlatCAMGUI.py:2849 msgid "[WARNING_NOTCL] Cancelled." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2497 +#: flatcamGUI/FlatCAMGUI.py:2504 msgid "" "Please select geometry items \n" "on which to perform Intersection Tool." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2556 +#: flatcamGUI/FlatCAMGUI.py:2563 msgid "" "Please select geometry items \n" "on which to perform Substraction Tool." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2576 +#: flatcamGUI/FlatCAMGUI.py:2583 msgid "" "Please select geometry items \n" "on which to perform union." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2647 flatcamGUI/FlatCAMGUI.py:2859 +#: flatcamGUI/FlatCAMGUI.py:2654 flatcamGUI/FlatCAMGUI.py:2866 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to delete." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2731 flatcamGUI/FlatCAMGUI.py:2926 +#: flatcamGUI/FlatCAMGUI.py:2738 flatcamGUI/FlatCAMGUI.py:2933 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to copy." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2777 flatcamGUI/FlatCAMGUI.py:2972 +#: flatcamGUI/FlatCAMGUI.py:2784 flatcamGUI/FlatCAMGUI.py:2979 msgid "[WARNING_NOTCL] Cancelled. Nothing selected to move." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2986 +#: flatcamGUI/FlatCAMGUI.py:2993 msgid "New Tool ..." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:2987 +#: flatcamGUI/FlatCAMGUI.py:2994 msgid "Enter a Tool Diameter:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3029 +#: flatcamGUI/FlatCAMGUI.py:3036 msgid "Measurement Tool exit..." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3324 +#: flatcamGUI/FlatCAMGUI.py:3331 msgid "Grid X value:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3326 +#: flatcamGUI/FlatCAMGUI.py:3333 msgid "This is the Grid snap value on X axis." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3331 +#: flatcamGUI/FlatCAMGUI.py:3338 msgid "Grid Y value:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3333 +#: flatcamGUI/FlatCAMGUI.py:3340 msgid "This is the Grid snap value on Y axis." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3338 +#: flatcamGUI/FlatCAMGUI.py:3345 msgid "Snap Max:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3343 +#: flatcamGUI/FlatCAMGUI.py:3350 msgid "Workspace:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3345 +#: flatcamGUI/FlatCAMGUI.py:3352 msgid "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3348 +#: flatcamGUI/FlatCAMGUI.py:3355 msgid "Wk. format:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3350 +#: flatcamGUI/FlatCAMGUI.py:3357 msgid "" "Select the type of rectangle to be used on canvas,\n" "as valid workspace." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3363 +#: flatcamGUI/FlatCAMGUI.py:3370 msgid "Plot Fill:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3365 +#: flatcamGUI/FlatCAMGUI.py:3372 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:3379 flatcamGUI/FlatCAMGUI.py:3429 -#: flatcamGUI/FlatCAMGUI.py:3479 +#: flatcamGUI/FlatCAMGUI.py:3386 flatcamGUI/FlatCAMGUI.py:3436 +#: flatcamGUI/FlatCAMGUI.py:3486 msgid "Alpha Level:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3381 +#: flatcamGUI/FlatCAMGUI.py:3388 msgid "Set the fill transparency for plotted objects." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3398 +#: flatcamGUI/FlatCAMGUI.py:3405 msgid "Plot Line:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3400 +#: flatcamGUI/FlatCAMGUI.py:3407 msgid "Set the line color for plotted objects." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3412 +#: flatcamGUI/FlatCAMGUI.py:3419 msgid "Sel. Fill:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3414 +#: flatcamGUI/FlatCAMGUI.py:3421 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from left to right.\n" @@ -4993,23 +5020,23 @@ msgid "" "digits are for alpha (transparency) level." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3431 +#: flatcamGUI/FlatCAMGUI.py:3438 msgid "Set the fill transparency for the 'left to right' selection box." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3448 +#: flatcamGUI/FlatCAMGUI.py:3455 msgid "Sel. Line:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3450 +#: flatcamGUI/FlatCAMGUI.py:3457 msgid "Set the line color for the 'left to right' selection box." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3462 +#: flatcamGUI/FlatCAMGUI.py:3469 msgid "Sel2. Fill:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3464 +#: flatcamGUI/FlatCAMGUI.py:3471 msgid "" "Set the fill color for the selection box\n" "in case that the selection is done from right to left.\n" @@ -5017,116 +5044,116 @@ msgid "" "digits are for alpha (transparency) level." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3481 +#: flatcamGUI/FlatCAMGUI.py:3488 msgid "Set the fill transparency for selection 'right to left' box." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3498 +#: flatcamGUI/FlatCAMGUI.py:3505 msgid "Sel2. Line:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3500 +#: flatcamGUI/FlatCAMGUI.py:3507 msgid "Set the line color for the 'right to left' selection box." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3512 +#: flatcamGUI/FlatCAMGUI.py:3519 msgid "Editor Draw:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3514 +#: flatcamGUI/FlatCAMGUI.py:3521 msgid "Set the color for the shape." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3526 +#: flatcamGUI/FlatCAMGUI.py:3533 msgid "Editor Draw Sel.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3528 +#: flatcamGUI/FlatCAMGUI.py:3535 msgid "Set the color of the shape when selected." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3540 +#: flatcamGUI/FlatCAMGUI.py:3547 msgid "Project Items:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3542 +#: flatcamGUI/FlatCAMGUI.py:3549 msgid "Set the color of the items in Project Tab Tree." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3553 +#: flatcamGUI/FlatCAMGUI.py:3560 msgid "Proj. Dis. Items:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3555 +#: flatcamGUI/FlatCAMGUI.py:3562 msgid "" "Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3606 +#: flatcamGUI/FlatCAMGUI.py:3613 msgid "GUI Settings" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3613 +#: flatcamGUI/FlatCAMGUI.py:3620 msgid "Layout:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3615 +#: flatcamGUI/FlatCAMGUI.py:3622 msgid "" "Select an layout for FlatCAM.\n" "It is applied immediately." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3631 +#: flatcamGUI/FlatCAMGUI.py:3638 msgid "Style:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3633 +#: flatcamGUI/FlatCAMGUI.py:3640 msgid "" "Select an style for FlatCAM.\n" "It will be applied at the next app start." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3644 +#: flatcamGUI/FlatCAMGUI.py:3651 msgid "HDPI Support:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3646 +#: flatcamGUI/FlatCAMGUI.py:3653 msgid "" "Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3659 +#: flatcamGUI/FlatCAMGUI.py:3666 msgid "Clear GUI Settings:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3661 +#: flatcamGUI/FlatCAMGUI.py:3668 msgid "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3664 +#: flatcamGUI/FlatCAMGUI.py:3671 msgid "Clear" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3668 +#: flatcamGUI/FlatCAMGUI.py:3675 msgid "Hover Shape:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3670 +#: flatcamGUI/FlatCAMGUI.py:3677 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:3677 +#: flatcamGUI/FlatCAMGUI.py:3684 msgid "Sel. Shape:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3679 +#: flatcamGUI/FlatCAMGUI.py:3686 msgid "" "Enable the display of a selection shape for FlatCAM objects.\n" "It is displayed whenever the mouse selects an object\n" @@ -5134,34 +5161,34 @@ msgid "" "right to left." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3721 +#: flatcamGUI/FlatCAMGUI.py:3728 msgid "Are you sure you want to delete the GUI Settings? \n" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3724 +#: flatcamGUI/FlatCAMGUI.py:3731 msgid "Clear GUI Settings" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3745 +#: flatcamGUI/FlatCAMGUI.py:3752 msgid "App Preferences" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3751 +#: flatcamGUI/FlatCAMGUI.py:3758 msgid "Units:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3752 +#: flatcamGUI/FlatCAMGUI.py:3759 msgid "" "The default value for FlatCAM units.\n" "Whatever is selected here is set every time\n" "FLatCAM is started." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3759 +#: flatcamGUI/FlatCAMGUI.py:3766 msgid "APP. LEVEL:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3760 +#: flatcamGUI/FlatCAMGUI.py:3767 msgid "" "Choose the default level of usage for FlatCAM.\n" "BASIC level -> reduced functionality, best for beginner's.\n" @@ -5171,19 +5198,19 @@ msgid "" "the Selected Tab for all kinds of FlatCAM objects." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3769 +#: flatcamGUI/FlatCAMGUI.py:3776 msgid "Languages:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3770 +#: flatcamGUI/FlatCAMGUI.py:3777 msgid "Set the language used throughout FlatCAM." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3773 +#: flatcamGUI/FlatCAMGUI.py:3780 msgid "Apply Language" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3774 +#: flatcamGUI/FlatCAMGUI.py:3781 msgid "" "Set the language used throughout FlatCAM.\n" "The app will restart after click.Windows: When FlatCAM is installed in " @@ -5194,91 +5221,91 @@ msgid "" "applied at the next app start." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3783 +#: flatcamGUI/FlatCAMGUI.py:3790 msgid "Shell at StartUp:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3785 flatcamGUI/FlatCAMGUI.py:3790 +#: flatcamGUI/FlatCAMGUI.py:3792 flatcamGUI/FlatCAMGUI.py:3797 msgid "" "Check this box if you want the shell to\n" "start automatically at startup." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3795 +#: flatcamGUI/FlatCAMGUI.py:3802 msgid "Version Check:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3797 flatcamGUI/FlatCAMGUI.py:3802 +#: flatcamGUI/FlatCAMGUI.py:3804 flatcamGUI/FlatCAMGUI.py:3809 msgid "" "Check this box if you want to check\n" "for a new version automatically at startup." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3807 +#: flatcamGUI/FlatCAMGUI.py:3814 msgid "Send Stats:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3809 flatcamGUI/FlatCAMGUI.py:3814 +#: flatcamGUI/FlatCAMGUI.py:3816 flatcamGUI/FlatCAMGUI.py:3821 msgid "" "Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3821 +#: flatcamGUI/FlatCAMGUI.py:3828 msgid "Pan Button:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3822 +#: flatcamGUI/FlatCAMGUI.py:3829 msgid "" "Select the mouse button to use for panning:\n" "- MMB --> Middle Mouse Button\n" "- RMB --> Right Mouse Button" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3829 +#: flatcamGUI/FlatCAMGUI.py:3836 msgid "Multiple Sel:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3830 +#: flatcamGUI/FlatCAMGUI.py:3837 msgid "Select the key used for multiple selection." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3835 +#: flatcamGUI/FlatCAMGUI.py:3842 msgid "Project at StartUp:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3837 flatcamGUI/FlatCAMGUI.py:3842 +#: flatcamGUI/FlatCAMGUI.py:3844 flatcamGUI/FlatCAMGUI.py:3849 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:3847 +#: flatcamGUI/FlatCAMGUI.py:3854 msgid "Project AutoHide:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3849 flatcamGUI/FlatCAMGUI.py:3855 +#: flatcamGUI/FlatCAMGUI.py:3856 flatcamGUI/FlatCAMGUI.py:3862 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:3861 +#: flatcamGUI/FlatCAMGUI.py:3868 msgid "Enable ToolTips:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3863 flatcamGUI/FlatCAMGUI.py:3868 +#: flatcamGUI/FlatCAMGUI.py:3870 flatcamGUI/FlatCAMGUI.py:3875 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:3871 +#: flatcamGUI/FlatCAMGUI.py:3878 msgid "Workers number:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3873 flatcamGUI/FlatCAMGUI.py:3882 +#: flatcamGUI/FlatCAMGUI.py:3880 flatcamGUI/FlatCAMGUI.py:3889 msgid "" "The number of Qthreads made available to the App.\n" "A bigger number may finish the jobs more quickly but\n" @@ -5288,7 +5315,7 @@ msgid "" "After change, it will be applied at next App start." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3894 flatcamGUI/FlatCAMGUI.py:3903 +#: flatcamGUI/FlatCAMGUI.py:3901 flatcamGUI/FlatCAMGUI.py:3910 msgid "" "This value can counter the effect of the Circle Steps\n" "parameter. Default value is 0.01.\n" @@ -5298,11 +5325,11 @@ msgid "" "performance at the expense of level of detail." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3939 +#: flatcamGUI/FlatCAMGUI.py:3946 msgid "\"Open\" behavior" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3941 +#: flatcamGUI/FlatCAMGUI.py:3948 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" @@ -5311,108 +5338,108 @@ msgid "" "path for saving files or the path for opening files." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3950 +#: flatcamGUI/FlatCAMGUI.py:3957 msgid "Save Compressed Project" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3952 +#: flatcamGUI/FlatCAMGUI.py:3959 msgid "" "Whether to save a compressed or uncompressed project.\n" "When checked it will save a compressed FlatCAM project." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3963 +#: flatcamGUI/FlatCAMGUI.py:3970 msgid "Compression Level:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3965 +#: flatcamGUI/FlatCAMGUI.py:3972 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:3991 flatcamGUI/FlatCAMGUI.py:4360 -#: flatcamGUI/FlatCAMGUI.py:5030 flatcamGUI/FlatCAMGUI.py:5402 +#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4367 +#: flatcamGUI/FlatCAMGUI.py:5037 flatcamGUI/FlatCAMGUI.py:5409 #: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:505 #: flatcamGUI/ObjectUI.py:833 flatcamGUI/ObjectUI.py:1350 msgid "Plot Options:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:3998 flatcamGUI/FlatCAMGUI.py:4372 +#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/FlatCAMGUI.py:4379 #: flatcamGUI/ObjectUI.py:156 flatcamGUI/ObjectUI.py:506 msgid "Solid" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4000 flatcamGUI/ObjectUI.py:158 +#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:158 msgid "Solid color polygons." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4005 flatcamGUI/ObjectUI.py:164 +#: flatcamGUI/FlatCAMGUI.py:4012 flatcamGUI/ObjectUI.py:164 msgid "M-Color" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4007 flatcamGUI/ObjectUI.py:166 +#: flatcamGUI/FlatCAMGUI.py:4014 flatcamGUI/ObjectUI.py:166 msgid "Draw polygons in different colors." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4012 flatcamGUI/FlatCAMGUI.py:4366 -#: flatcamGUI/FlatCAMGUI.py:5034 flatcamGUI/ObjectUI.py:172 +#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:4373 +#: flatcamGUI/FlatCAMGUI.py:5041 flatcamGUI/ObjectUI.py:172 msgid "Plot" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4014 flatcamGUI/FlatCAMGUI.py:5036 +#: flatcamGUI/FlatCAMGUI.py:4021 flatcamGUI/FlatCAMGUI.py:5043 #: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:546 #: flatcamGUI/ObjectUI.py:879 flatcamGUI/ObjectUI.py:1437 msgid "Plot (show) this object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4019 flatcamGUI/FlatCAMGUI.py:5043 -#: flatcamGUI/FlatCAMGUI.py:5438 +#: flatcamGUI/FlatCAMGUI.py:4026 flatcamGUI/FlatCAMGUI.py:5050 +#: flatcamGUI/FlatCAMGUI.py:5445 msgid "Circle Steps:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4021 +#: flatcamGUI/FlatCAMGUI.py:4028 msgid "" "The number of circle steps for Gerber \n" "circular aperture linear approximation." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4036 +#: flatcamGUI/FlatCAMGUI.py:4043 msgid "Gerber Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4040 flatcamGUI/ObjectUI.py:251 +#: flatcamGUI/FlatCAMGUI.py:4047 flatcamGUI/ObjectUI.py:251 msgid "Isolation Routing:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4042 flatcamGUI/ObjectUI.py:253 +#: flatcamGUI/FlatCAMGUI.py:4049 flatcamGUI/ObjectUI.py:253 msgid "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4053 flatcamGUI/FlatCAMGUI.py:4753 -#: flatcamGUI/FlatCAMGUI.py:5726 flatcamGUI/ObjectUI.py:788 +#: flatcamGUI/FlatCAMGUI.py:4060 flatcamGUI/FlatCAMGUI.py:4760 +#: flatcamGUI/FlatCAMGUI.py:5733 flatcamGUI/ObjectUI.py:788 #: flatcamGUI/ObjectUI.py:804 msgid "Diameter of the cutting tool." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4060 +#: flatcamGUI/FlatCAMGUI.py:4067 msgid "Width (# passes):" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4062 flatcamGUI/ObjectUI.py:275 +#: flatcamGUI/FlatCAMGUI.py:4069 flatcamGUI/ObjectUI.py:275 msgid "" "Width of the isolation gap in\n" "number (integer) of tool widths." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4070 flatcamGUI/ObjectUI.py:283 +#: flatcamGUI/FlatCAMGUI.py:4077 flatcamGUI/ObjectUI.py:283 msgid "Pass overlap:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4072 flatcamGUI/ObjectUI.py:285 +#: flatcamGUI/FlatCAMGUI.py:4079 flatcamGUI/ObjectUI.py:285 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -5421,42 +5448,42 @@ msgid "" "above." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4080 flatcamGUI/ObjectUI.py:295 +#: flatcamGUI/FlatCAMGUI.py:4087 flatcamGUI/ObjectUI.py:295 msgid "Milling Type:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4082 flatcamGUI/ObjectUI.py:297 +#: flatcamGUI/FlatCAMGUI.py:4089 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:4092 +#: flatcamGUI/FlatCAMGUI.py:4099 msgid "Combine Passes" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4094 flatcamGUI/ObjectUI.py:309 +#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/ObjectUI.py:309 msgid "Combine all passes into one object" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4099 +#: flatcamGUI/FlatCAMGUI.py:4106 msgid "Clear non-copper:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4101 flatcamGUI/FlatCAMGUI.py:5614 +#: flatcamGUI/FlatCAMGUI.py:4108 flatcamGUI/FlatCAMGUI.py:5621 #: flatcamGUI/ObjectUI.py:386 msgid "" "Create a Geometry object with\n" "toolpaths to cut all non-copper regions." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4110 flatcamGUI/FlatCAMGUI.py:4136 +#: flatcamGUI/FlatCAMGUI.py:4117 flatcamGUI/FlatCAMGUI.py:4143 #: flatcamGUI/ObjectUI.py:430 flatcamGUI/ObjectUI.py:464 msgid "Boundary Margin:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4112 flatcamGUI/ObjectUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:4119 flatcamGUI/ObjectUI.py:432 msgid "" "Specify the edge of the PCB\n" "by drawing a box around all\n" @@ -5464,27 +5491,27 @@ msgid "" "distance." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4122 flatcamGUI/FlatCAMGUI.py:4145 +#: flatcamGUI/FlatCAMGUI.py:4129 flatcamGUI/FlatCAMGUI.py:4152 msgid "Rounded corners" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4124 +#: flatcamGUI/FlatCAMGUI.py:4131 msgid "" "Creates a Geometry objects with polygons\n" "covering the copper-free areas of the PCB." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4130 flatcamGUI/ObjectUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:4137 flatcamGUI/ObjectUI.py:454 msgid "Bounding Box:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4138 flatcamGUI/ObjectUI.py:466 +#: flatcamGUI/FlatCAMGUI.py:4145 flatcamGUI/ObjectUI.py:466 msgid "" "Distance of the edges of the box\n" "to the nearest polygon." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4147 flatcamGUI/ObjectUI.py:476 +#: flatcamGUI/FlatCAMGUI.py:4154 flatcamGUI/ObjectUI.py:476 msgid "" "If the bounding box is \n" "to have rounded corners\n" @@ -5492,92 +5519,92 @@ msgid "" "the margin." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4161 +#: flatcamGUI/FlatCAMGUI.py:4168 msgid "Gerber Adv. Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4165 +#: flatcamGUI/FlatCAMGUI.py:4172 msgid "Advanced Param.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4167 +#: flatcamGUI/FlatCAMGUI.py:4174 msgid "" "A list of Gerber advanced parameters.\n" "Those parameters are available only for\n" "Advanced App. Level." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4177 flatcamGUI/ObjectUI.py:314 +#: flatcamGUI/FlatCAMGUI.py:4184 flatcamGUI/ObjectUI.py:314 msgid "\"Follow\"" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4179 flatcamGUI/ObjectUI.py:316 +#: flatcamGUI/FlatCAMGUI.py:4186 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:4187 +#: flatcamGUI/FlatCAMGUI.py:4194 msgid "Table Show/Hide" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4189 +#: flatcamGUI/FlatCAMGUI.py:4196 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:4228 +#: flatcamGUI/FlatCAMGUI.py:4235 msgid "Gerber Export" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4231 flatcamGUI/FlatCAMGUI.py:4902 +#: flatcamGUI/FlatCAMGUI.py:4238 flatcamGUI/FlatCAMGUI.py:4909 msgid "Export Options:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4233 +#: flatcamGUI/FlatCAMGUI.py:4240 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:4242 flatcamGUI/FlatCAMGUI.py:4913 +#: flatcamGUI/FlatCAMGUI.py:4249 flatcamGUI/FlatCAMGUI.py:4920 msgid "Units:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4244 flatcamGUI/FlatCAMGUI.py:4250 +#: flatcamGUI/FlatCAMGUI.py:4251 flatcamGUI/FlatCAMGUI.py:4257 msgid "The units used in the Gerber file." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4256 flatcamGUI/FlatCAMGUI.py:4927 +#: flatcamGUI/FlatCAMGUI.py:4263 flatcamGUI/FlatCAMGUI.py:4934 msgid "Int/Decimals:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4258 +#: flatcamGUI/FlatCAMGUI.py:4265 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:4269 +#: flatcamGUI/FlatCAMGUI.py:4276 msgid "" "This numbers signify the number of digits in\n" "the whole part of Gerber coordinates." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4283 +#: flatcamGUI/FlatCAMGUI.py:4290 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Gerber coordinates." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4292 flatcamGUI/FlatCAMGUI.py:4988 +#: flatcamGUI/FlatCAMGUI.py:4299 flatcamGUI/FlatCAMGUI.py:4995 msgid "Zeros:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4295 flatcamGUI/FlatCAMGUI.py:4305 +#: flatcamGUI/FlatCAMGUI.py:4302 flatcamGUI/FlatCAMGUI.py:4312 msgid "" "This sets the type of Gerber zeros.\n" "If LZ then Leading Zeros are removed and\n" @@ -5586,23 +5613,23 @@ msgid "" "and Leading Zeros are kept." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4325 flatcamGUI/FlatCAMGUI.py:5368 -#: flatcamGUI/FlatCAMGUI.py:5612 flatcamGUI/FlatCAMGUI.py:5713 -#: flatcamGUI/FlatCAMGUI.py:5792 flatcamGUI/FlatCAMGUI.py:5851 -#: flatcamGUI/FlatCAMGUI.py:5954 flatcamGUI/FlatCAMGUI.py:6015 -#: flatcamGUI/FlatCAMGUI.py:6214 flatcamGUI/FlatCAMGUI.py:6341 +#: 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 msgid "Parameters:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4327 +#: flatcamGUI/FlatCAMGUI.py:4334 msgid "A list of Gerber Editor parameters." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4335 flatcamGUI/FlatCAMGUI.py:5378 +#: flatcamGUI/FlatCAMGUI.py:4342 flatcamGUI/FlatCAMGUI.py:5385 msgid "Selection limit:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4337 +#: flatcamGUI/FlatCAMGUI.py:4344 msgid "" "Set the number of selected Gerber geometry\n" "items above which the utility geometry\n" @@ -5611,15 +5638,15 @@ msgid "" "large number of geometric elements." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4357 +#: flatcamGUI/FlatCAMGUI.py:4364 msgid "Excellon General" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4379 +#: flatcamGUI/FlatCAMGUI.py:4386 msgid "Excellon Format:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4381 +#: flatcamGUI/FlatCAMGUI.py:4388 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -5642,41 +5669,41 @@ msgid "" "KiCAD 3:5 INCH TZ" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4406 +#: flatcamGUI/FlatCAMGUI.py:4413 msgid "INCH:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4409 +#: flatcamGUI/FlatCAMGUI.py:4416 msgid "Default values for INCH are 2:4" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4417 flatcamGUI/FlatCAMGUI.py:4450 -#: flatcamGUI/FlatCAMGUI.py:4942 +#: flatcamGUI/FlatCAMGUI.py:4424 flatcamGUI/FlatCAMGUI.py:4457 +#: flatcamGUI/FlatCAMGUI.py:4949 msgid "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4431 flatcamGUI/FlatCAMGUI.py:4464 -#: flatcamGUI/FlatCAMGUI.py:4956 +#: flatcamGUI/FlatCAMGUI.py:4438 flatcamGUI/FlatCAMGUI.py:4471 +#: flatcamGUI/FlatCAMGUI.py:4963 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4439 +#: flatcamGUI/FlatCAMGUI.py:4446 msgid "METRIC:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4442 +#: flatcamGUI/FlatCAMGUI.py:4449 msgid "Default values for METRIC are 3:3" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4473 +#: flatcamGUI/FlatCAMGUI.py:4480 msgid "Default Zeros:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4476 flatcamGUI/FlatCAMGUI.py:4991 +#: flatcamGUI/FlatCAMGUI.py:4483 flatcamGUI/FlatCAMGUI.py:4998 msgid "" "This sets the type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -5685,7 +5712,7 @@ msgid "" "and Leading Zeros are removed." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4487 +#: flatcamGUI/FlatCAMGUI.py:4494 msgid "" "This sets the default type of Excellon zeros.\n" "If it is not detected in the parsed file the value here\n" @@ -5695,11 +5722,11 @@ msgid "" "and Leading Zeros are removed." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4501 +#: flatcamGUI/FlatCAMGUI.py:4508 msgid "Default Units:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4504 +#: flatcamGUI/FlatCAMGUI.py:4511 msgid "" "This sets the default units of Excellon files.\n" "If it is not detected in the parsed file the value here\n" @@ -5707,22 +5734,22 @@ msgid "" "therefore this parameter will be used." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4515 +#: flatcamGUI/FlatCAMGUI.py:4522 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:4531 +#: flatcamGUI/FlatCAMGUI.py:4538 msgid "Excellon Optimization:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4538 +#: flatcamGUI/FlatCAMGUI.py:4545 msgid "Algorithm: " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4541 flatcamGUI/FlatCAMGUI.py:4554 +#: flatcamGUI/FlatCAMGUI.py:4548 flatcamGUI/FlatCAMGUI.py:4561 msgid "" "This sets the optimization type for the Excellon drill path.\n" "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" @@ -5734,11 +5761,11 @@ msgid "" "Travelling Salesman algorithm for path optimization." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4566 +#: flatcamGUI/FlatCAMGUI.py:4573 msgid "Optimization Time: " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4569 +#: flatcamGUI/FlatCAMGUI.py:4576 msgid "" "When OR-Tools Metaheuristic (MH) is enabled there is a\n" "maximum threshold for how much time is spent doing the\n" @@ -5746,88 +5773,88 @@ msgid "" "In seconds." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4611 +#: flatcamGUI/FlatCAMGUI.py:4618 msgid "Excellon Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4614 flatcamGUI/ObjectUI.py:584 +#: flatcamGUI/FlatCAMGUI.py:4621 flatcamGUI/ObjectUI.py:584 msgid "Create CNC Job" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4616 +#: flatcamGUI/FlatCAMGUI.py:4623 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4624 flatcamGUI/FlatCAMGUI.py:5094 -#: flatcamGUI/FlatCAMGUI.py:6150 flatcamGUI/ObjectUI.py:595 +#: flatcamGUI/FlatCAMGUI.py:4631 flatcamGUI/FlatCAMGUI.py:5101 +#: flatcamGUI/FlatCAMGUI.py:6157 flatcamGUI/ObjectUI.py:595 #: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolCalculators.py:108 msgid "Cut Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4626 flatcamGUI/ObjectUI.py:597 +#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/ObjectUI.py:597 msgid "" "Drill depth (negative)\n" "below the copper surface." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4633 flatcamGUI/FlatCAMGUI.py:5127 +#: flatcamGUI/FlatCAMGUI.py:4640 flatcamGUI/FlatCAMGUI.py:5134 #: flatcamGUI/ObjectUI.py:605 flatcamGUI/ObjectUI.py:1098 msgid "Travel Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4635 flatcamGUI/ObjectUI.py:607 +#: flatcamGUI/FlatCAMGUI.py:4642 flatcamGUI/ObjectUI.py:607 msgid "" "Tool height when travelling\n" "across the XY plane." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4643 flatcamGUI/FlatCAMGUI.py:5137 +#: flatcamGUI/FlatCAMGUI.py:4650 flatcamGUI/FlatCAMGUI.py:5144 msgid "Tool change:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4645 flatcamGUI/FlatCAMGUI.py:5139 +#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5146 #: flatcamGUI/ObjectUI.py:617 msgid "" "Include tool-change sequence\n" "in G-Code (Pause for tool change)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4652 flatcamGUI/FlatCAMGUI.py:5147 +#: flatcamGUI/FlatCAMGUI.py:4659 flatcamGUI/FlatCAMGUI.py:5154 msgid "Toolchange Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4654 flatcamGUI/FlatCAMGUI.py:5149 +#: flatcamGUI/FlatCAMGUI.py:4661 flatcamGUI/FlatCAMGUI.py:5156 msgid "Toolchange Z position." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4660 +#: flatcamGUI/FlatCAMGUI.py:4667 msgid "Feedrate:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4662 +#: flatcamGUI/FlatCAMGUI.py:4669 msgid "" "Tool speed while drilling\n" "(in units per minute)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4670 +#: flatcamGUI/FlatCAMGUI.py:4677 msgid "Spindle Speed:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4672 flatcamGUI/FlatCAMGUI.py:5179 +#: flatcamGUI/FlatCAMGUI.py:4679 flatcamGUI/FlatCAMGUI.py:5186 #: flatcamGUI/ObjectUI.py:684 msgid "" "Speed of the spindle\n" "in RPM (optional)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4680 flatcamGUI/FlatCAMGUI.py:5187 +#: flatcamGUI/FlatCAMGUI.py:4687 flatcamGUI/FlatCAMGUI.py:5194 msgid "Spindle dir.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4682 flatcamGUI/FlatCAMGUI.py:5189 +#: flatcamGUI/FlatCAMGUI.py:4689 flatcamGUI/FlatCAMGUI.py:5196 msgid "" "This sets the direction that the spindle is rotating.\n" "It can be either:\n" @@ -5835,43 +5862,43 @@ msgid "" "- CCW = counter clockwise" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4694 flatcamGUI/FlatCAMGUI.py:5201 +#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 #: flatcamGUI/ObjectUI.py:692 flatcamGUI/ObjectUI.py:1224 msgid "Dwell:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4696 flatcamGUI/FlatCAMGUI.py:5203 +#: flatcamGUI/FlatCAMGUI.py:4703 flatcamGUI/FlatCAMGUI.py:5210 #: 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:4699 flatcamGUI/FlatCAMGUI.py:5206 +#: flatcamGUI/FlatCAMGUI.py:4706 flatcamGUI/FlatCAMGUI.py:5213 msgid "Duration:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5208 +#: flatcamGUI/FlatCAMGUI.py:4708 flatcamGUI/FlatCAMGUI.py:5215 #: flatcamGUI/ObjectUI.py:699 flatcamGUI/ObjectUI.py:1234 msgid "Number of milliseconds for spindle to dwell." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4713 flatcamGUI/FlatCAMGUI.py:5218 +#: flatcamGUI/FlatCAMGUI.py:4720 flatcamGUI/FlatCAMGUI.py:5225 #: flatcamGUI/ObjectUI.py:707 msgid "Postprocessor:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4715 +#: flatcamGUI/FlatCAMGUI.py:4722 msgid "" "The postprocessor file that dictates\n" "gcode output." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4725 +#: flatcamGUI/FlatCAMGUI.py:4732 msgid "Gcode: " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4727 +#: flatcamGUI/FlatCAMGUI.py:4734 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -5879,93 +5906,93 @@ msgid "" "converted to drills." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:772 +#: flatcamGUI/FlatCAMGUI.py:4750 flatcamGUI/ObjectUI.py:772 msgid "Mill Holes" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4745 flatcamGUI/ObjectUI.py:774 +#: flatcamGUI/FlatCAMGUI.py:4752 flatcamGUI/ObjectUI.py:774 msgid "Create Geometry for milling holes." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4751 +#: flatcamGUI/FlatCAMGUI.py:4758 msgid "Drill Tool dia:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4758 +#: flatcamGUI/FlatCAMGUI.py:4765 msgid "Slot Tool dia:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4760 +#: flatcamGUI/FlatCAMGUI.py:4767 msgid "" "Diameter of the cutting tool\n" "when milling slots." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4772 +#: flatcamGUI/FlatCAMGUI.py:4779 msgid "Defaults" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4785 +#: flatcamGUI/FlatCAMGUI.py:4792 msgid "Excellon Adv. Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4791 flatcamGUI/FlatCAMGUI.py:5241 +#: flatcamGUI/FlatCAMGUI.py:4798 flatcamGUI/FlatCAMGUI.py:5248 msgid "Advanced Options:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4793 +#: flatcamGUI/FlatCAMGUI.py:4800 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object that are shown when App Level is Advanced." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4801 +#: flatcamGUI/FlatCAMGUI.py:4808 msgid "Offset Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4803 flatcamGUI/ObjectUI.py:574 +#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/ObjectUI.py:574 msgid "" "Some drill bits (the larger ones) need to drill deeper\n" "to create the desired exit hole diameter due of the tip shape.\n" "The value here can compensate the Cut Z parameter." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4810 flatcamGUI/FlatCAMGUI.py:5252 +#: flatcamGUI/FlatCAMGUI.py:4817 flatcamGUI/FlatCAMGUI.py:5259 msgid "Toolchange X,Y:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4812 flatcamGUI/FlatCAMGUI.py:5254 +#: flatcamGUI/FlatCAMGUI.py:4819 flatcamGUI/FlatCAMGUI.py:5261 msgid "Toolchange X,Y position." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4818 flatcamGUI/FlatCAMGUI.py:5261 +#: flatcamGUI/FlatCAMGUI.py:4825 flatcamGUI/FlatCAMGUI.py:5268 #: flatcamGUI/ObjectUI.py:634 msgid "Start move Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4820 +#: flatcamGUI/FlatCAMGUI.py:4827 msgid "" "Height of the tool just after start.\n" "Delete the value if you don't need this feature." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4827 flatcamGUI/FlatCAMGUI.py:5271 +#: flatcamGUI/FlatCAMGUI.py:4834 flatcamGUI/FlatCAMGUI.py:5278 #: flatcamGUI/ObjectUI.py:644 flatcamGUI/ObjectUI.py:1144 msgid "End move Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4829 flatcamGUI/FlatCAMGUI.py:5273 +#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5280 msgid "" "Height of the tool after\n" "the last move at the end of the job." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4836 flatcamGUI/FlatCAMGUI.py:5281 +#: flatcamGUI/FlatCAMGUI.py:4843 flatcamGUI/FlatCAMGUI.py:5288 #: flatcamGUI/ObjectUI.py:665 msgid "Feedrate Rapids:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4838 flatcamGUI/ObjectUI.py:667 +#: flatcamGUI/FlatCAMGUI.py:4845 flatcamGUI/ObjectUI.py:667 msgid "" "Tool speed while drilling\n" "(in units per minute).\n" @@ -5974,33 +6001,33 @@ msgid "" "ignore for any other cases." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4849 flatcamGUI/FlatCAMGUI.py:5305 +#: flatcamGUI/FlatCAMGUI.py:4856 flatcamGUI/FlatCAMGUI.py:5312 #: flatcamGUI/ObjectUI.py:718 flatcamGUI/ObjectUI.py:1256 msgid "Probe Z depth:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4851 flatcamGUI/FlatCAMGUI.py:5307 +#: flatcamGUI/FlatCAMGUI.py:4858 flatcamGUI/FlatCAMGUI.py:5314 #: flatcamGUI/ObjectUI.py:720 flatcamGUI/ObjectUI.py:1259 msgid "" "The maximum depth that the probe is allowed\n" "to probe. Negative value, in current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4859 flatcamGUI/FlatCAMGUI.py:5315 +#: flatcamGUI/FlatCAMGUI.py:4866 flatcamGUI/FlatCAMGUI.py:5322 #: flatcamGUI/ObjectUI.py:730 flatcamGUI/ObjectUI.py:1270 msgid "Feedrate Probe:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4861 flatcamGUI/FlatCAMGUI.py:5317 +#: flatcamGUI/FlatCAMGUI.py:4868 flatcamGUI/FlatCAMGUI.py:5324 #: flatcamGUI/ObjectUI.py:732 flatcamGUI/ObjectUI.py:1273 msgid "The feedrate used while the probe is probing." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4867 flatcamGUI/FlatCAMGUI.py:5324 +#: flatcamGUI/FlatCAMGUI.py:4874 flatcamGUI/FlatCAMGUI.py:5331 msgid "Fast Plunge:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4869 flatcamGUI/FlatCAMGUI.py:5326 +#: flatcamGUI/FlatCAMGUI.py:4876 flatcamGUI/FlatCAMGUI.py:5333 msgid "" "By checking this, the vertical move from\n" "Z_Toolchange to Z_move is done with G0,\n" @@ -6008,11 +6035,11 @@ msgid "" "WARNING: the move is done at Toolchange X,Y coords." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4878 +#: flatcamGUI/FlatCAMGUI.py:4885 msgid "Fast Retract:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4880 +#: flatcamGUI/FlatCAMGUI.py:4887 msgid "" "Exit hole strategy.\n" " - When uncheked, while exiting the drilled hole the drill bit\n" @@ -6022,21 +6049,21 @@ msgid "" "(travel height) is done as fast as possible (G0) in one move." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4899 +#: flatcamGUI/FlatCAMGUI.py:4906 msgid "Excellon Export" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4904 +#: flatcamGUI/FlatCAMGUI.py:4911 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Excellon menu entry." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4915 flatcamGUI/FlatCAMGUI.py:4921 +#: flatcamGUI/FlatCAMGUI.py:4922 flatcamGUI/FlatCAMGUI.py:4928 msgid "The units used in the Excellon file." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4929 +#: flatcamGUI/FlatCAMGUI.py:4936 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -6044,11 +6071,11 @@ msgid "" "coordinates are not using period." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4965 +#: flatcamGUI/FlatCAMGUI.py:4972 msgid "Format:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:4967 flatcamGUI/FlatCAMGUI.py:4977 +#: flatcamGUI/FlatCAMGUI.py:4974 flatcamGUI/FlatCAMGUI.py:4984 msgid "" "Select the kind of coordinates format used.\n" "Coordinates can be saved with decimal point or without.\n" @@ -6058,7 +6085,7 @@ msgid "" "or TZ = trailing zeros are kept." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5001 +#: flatcamGUI/FlatCAMGUI.py:5008 msgid "" "This sets the default type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -6067,64 +6094,64 @@ msgid "" "and Leading Zeros are removed." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5027 +#: flatcamGUI/FlatCAMGUI.py:5034 msgid "Geometry General" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5045 +#: flatcamGUI/FlatCAMGUI.py:5052 msgid "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5053 +#: flatcamGUI/FlatCAMGUI.py:5060 msgid "Tools" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5060 +#: flatcamGUI/FlatCAMGUI.py:5067 msgid "Tool dia: " msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5062 +#: flatcamGUI/FlatCAMGUI.py:5069 msgid "" "The diameter of the cutting\n" "tool.." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5077 +#: flatcamGUI/FlatCAMGUI.py:5084 msgid "Geometry Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5082 +#: flatcamGUI/FlatCAMGUI.py:5089 msgid "Create CNC Job:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5084 +#: flatcamGUI/FlatCAMGUI.py:5091 msgid "" "Create a CNC Job object\n" "tracing the contours of this\n" "Geometry object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5096 flatcamGUI/ObjectUI.py:1065 +#: flatcamGUI/FlatCAMGUI.py:5103 flatcamGUI/ObjectUI.py:1065 msgid "" "Cutting depth (negative)\n" "below the copper surface." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5104 +#: flatcamGUI/FlatCAMGUI.py:5111 msgid "Multidepth" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5106 +#: flatcamGUI/FlatCAMGUI.py:5113 msgid "Multidepth usage: True or False." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5111 +#: flatcamGUI/FlatCAMGUI.py:5118 msgid "Depth/Pass:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5113 +#: flatcamGUI/FlatCAMGUI.py:5120 msgid "" "The depth to cut on each pass,\n" "when multidepth is enabled.\n" @@ -6133,61 +6160,61 @@ msgid "" "which has negative value." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5129 flatcamGUI/ObjectUI.py:1101 +#: flatcamGUI/FlatCAMGUI.py:5136 flatcamGUI/ObjectUI.py:1101 msgid "" "Height of the tool when\n" "moving without cutting." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5156 flatcamGUI/ObjectUI.py:1156 +#: flatcamGUI/FlatCAMGUI.py:5163 flatcamGUI/ObjectUI.py:1156 msgid "Feed Rate X-Y:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5158 flatcamGUI/ObjectUI.py:1159 +#: flatcamGUI/FlatCAMGUI.py:5165 flatcamGUI/ObjectUI.py:1159 msgid "" "Cutting speed in the XY\n" "plane in units per minute" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5166 +#: flatcamGUI/FlatCAMGUI.py:5173 msgid "Feed Rate Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5168 +#: flatcamGUI/FlatCAMGUI.py:5175 msgid "" "Cutting speed in the XY\n" "plane in units per minute.\n" "It is called also Plunge." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5177 flatcamGUI/ObjectUI.py:682 +#: flatcamGUI/FlatCAMGUI.py:5184 flatcamGUI/ObjectUI.py:682 #: flatcamGUI/ObjectUI.py:1211 msgid "Spindle speed:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5220 +#: flatcamGUI/FlatCAMGUI.py:5227 msgid "" "The postprocessor file that dictates\n" "Machine Code output." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5236 +#: flatcamGUI/FlatCAMGUI.py:5243 msgid "Geometry Adv. Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5243 +#: flatcamGUI/FlatCAMGUI.py:5250 msgid "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5263 +#: flatcamGUI/FlatCAMGUI.py:5270 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:5283 +#: flatcamGUI/FlatCAMGUI.py:5290 msgid "" "Cutting speed in the XY plane\n" "(in units per minute).\n" @@ -6196,11 +6223,11 @@ msgid "" "ignore for any other cases." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5295 +#: flatcamGUI/FlatCAMGUI.py:5302 msgid "Re-cut 1st pt." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5297 flatcamGUI/ObjectUI.py:1202 +#: flatcamGUI/FlatCAMGUI.py:5304 flatcamGUI/ObjectUI.py:1202 msgid "" "In order to remove possible\n" "copper leftovers where first cut\n" @@ -6208,37 +6235,37 @@ msgid "" "extended cut over the first cut section." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5336 +#: flatcamGUI/FlatCAMGUI.py:5343 msgid "Seg. X size:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5338 +#: flatcamGUI/FlatCAMGUI.py:5345 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:5347 +#: flatcamGUI/FlatCAMGUI.py:5354 msgid "Seg. Y size:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5349 +#: flatcamGUI/FlatCAMGUI.py:5356 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:5365 +#: flatcamGUI/FlatCAMGUI.py:5372 msgid "Geometry Editor" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5370 +#: flatcamGUI/FlatCAMGUI.py:5377 msgid "A list of Geometry Editor parameters." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5380 +#: flatcamGUI/FlatCAMGUI.py:5387 msgid "" "Set the number of selected geometry\n" "items above which the utility geometry\n" @@ -6247,20 +6274,20 @@ msgid "" "large number of geometric elements." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5399 +#: flatcamGUI/FlatCAMGUI.py:5406 msgid "CNC Job General" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5412 flatcamGUI/ObjectUI.py:544 +#: flatcamGUI/FlatCAMGUI.py:5419 flatcamGUI/ObjectUI.py:544 #: flatcamGUI/ObjectUI.py:877 flatcamGUI/ObjectUI.py:1434 msgid "Plot Object" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5419 +#: flatcamGUI/FlatCAMGUI.py:5426 msgid "Plot kind:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5421 flatcamGUI/ObjectUI.py:1356 +#: flatcamGUI/FlatCAMGUI.py:5428 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" @@ -6268,83 +6295,83 @@ msgid "" "which means the moves that cut into the material." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5440 +#: flatcamGUI/FlatCAMGUI.py:5447 msgid "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5450 +#: flatcamGUI/FlatCAMGUI.py:5457 msgid "" "Diameter of the tool to be\n" "rendered in the plot." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5458 +#: flatcamGUI/FlatCAMGUI.py:5465 msgid "Coords dec.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5460 +#: flatcamGUI/FlatCAMGUI.py:5467 msgid "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5468 +#: flatcamGUI/FlatCAMGUI.py:5475 msgid "Feedrate dec.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5470 +#: flatcamGUI/FlatCAMGUI.py:5477 msgid "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5485 +#: flatcamGUI/FlatCAMGUI.py:5492 msgid "CNC Job Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5488 flatcamGUI/FlatCAMGUI.py:5529 +#: flatcamGUI/FlatCAMGUI.py:5495 flatcamGUI/FlatCAMGUI.py:5536 msgid "Export G-Code:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5490 flatcamGUI/FlatCAMGUI.py:5531 +#: flatcamGUI/FlatCAMGUI.py:5497 flatcamGUI/FlatCAMGUI.py:5538 #: flatcamGUI/ObjectUI.py:1470 msgid "" "Export and save G-Code to\n" "make this object to a file." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5496 +#: flatcamGUI/FlatCAMGUI.py:5503 msgid "Prepend to G-Code:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5498 +#: flatcamGUI/FlatCAMGUI.py:5505 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:5507 +#: flatcamGUI/FlatCAMGUI.py:5514 msgid "Append to G-Code:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5509 flatcamGUI/ObjectUI.py:1492 +#: flatcamGUI/FlatCAMGUI.py:5516 flatcamGUI/ObjectUI.py:1492 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:5526 +#: flatcamGUI/FlatCAMGUI.py:5533 msgid "CNC Job Adv. Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5537 flatcamGUI/ObjectUI.py:1510 +#: flatcamGUI/FlatCAMGUI.py:5544 flatcamGUI/ObjectUI.py:1510 msgid "Toolchange G-Code:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5539 +#: flatcamGUI/FlatCAMGUI.py:5546 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -6352,88 +6379,88 @@ msgid "" "or a Toolchange Macro." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5553 flatcamGUI/ObjectUI.py:1532 +#: flatcamGUI/FlatCAMGUI.py:5560 flatcamGUI/ObjectUI.py:1532 msgid "Use Toolchange Macro" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5555 flatcamGUI/ObjectUI.py:1535 +#: flatcamGUI/FlatCAMGUI.py:5562 flatcamGUI/ObjectUI.py:1535 msgid "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5567 flatcamGUI/ObjectUI.py:1544 +#: flatcamGUI/FlatCAMGUI.py:5574 flatcamGUI/ObjectUI.py:1544 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:5574 flatcamGUI/ObjectUI.py:1551 +#: flatcamGUI/FlatCAMGUI.py:5581 flatcamGUI/ObjectUI.py:1551 msgid "Parameters" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5577 flatcamGUI/ObjectUI.py:1554 +#: flatcamGUI/FlatCAMGUI.py:5584 flatcamGUI/ObjectUI.py:1554 msgid "FlatCAM CNC parameters" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5578 flatcamGUI/ObjectUI.py:1555 +#: flatcamGUI/FlatCAMGUI.py:5585 flatcamGUI/ObjectUI.py:1555 msgid "tool = tool number" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5579 flatcamGUI/ObjectUI.py:1556 +#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1556 msgid "tooldia = tool diameter" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5580 flatcamGUI/ObjectUI.py:1557 +#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1557 msgid "t_drills = for Excellon, total number of drills" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5581 flatcamGUI/ObjectUI.py:1558 +#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1558 msgid "x_toolchange = X coord for Toolchange" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5582 flatcamGUI/ObjectUI.py:1559 +#: flatcamGUI/FlatCAMGUI.py:5589 flatcamGUI/ObjectUI.py:1559 msgid "y_toolchange = Y coord for Toolchange" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5583 flatcamGUI/ObjectUI.py:1560 +#: flatcamGUI/FlatCAMGUI.py:5590 flatcamGUI/ObjectUI.py:1560 msgid "z_toolchange = Z coord for Toolchange" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5584 +#: flatcamGUI/FlatCAMGUI.py:5591 msgid "z_cut = Z depth for the cut" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5585 +#: flatcamGUI/FlatCAMGUI.py:5592 msgid "z_move = Z height for travel" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5586 flatcamGUI/ObjectUI.py:1563 +#: flatcamGUI/FlatCAMGUI.py:5593 flatcamGUI/ObjectUI.py:1563 msgid "z_depthpercut = the step value for multidepth cut" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5587 flatcamGUI/ObjectUI.py:1564 +#: flatcamGUI/FlatCAMGUI.py:5594 flatcamGUI/ObjectUI.py:1564 msgid "spindlesspeed = the value for the spindle speed" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5588 flatcamGUI/ObjectUI.py:1565 +#: flatcamGUI/FlatCAMGUI.py:5595 flatcamGUI/ObjectUI.py:1565 msgid "dwelltime = time to dwell to allow the spindle to reach it's set RPM" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5609 +#: flatcamGUI/FlatCAMGUI.py:5616 msgid "NCC Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5622 flatcamGUI/FlatCAMGUI.py:6352 +#: flatcamGUI/FlatCAMGUI.py:5629 flatcamGUI/FlatCAMGUI.py:6359 msgid "Tools dia:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5624 +#: flatcamGUI/FlatCAMGUI.py:5631 msgid "Diameters of the cutting tools, separated by ','" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5632 flatcamTools/ToolNonCopperClear.py:167 +#: flatcamGUI/FlatCAMGUI.py:5639 flatcamTools/ToolNonCopperClear.py:167 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -6448,11 +6475,11 @@ msgid "" "due of too many paths." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5648 flatcamTools/ToolNonCopperClear.py:183 +#: flatcamGUI/FlatCAMGUI.py:5655 flatcamTools/ToolNonCopperClear.py:183 msgid "Bounding box margin." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5657 flatcamTools/ToolNonCopperClear.py:192 +#: flatcamGUI/FlatCAMGUI.py:5664 flatcamTools/ToolNonCopperClear.py:192 #: flatcamTools/ToolPaint.py:190 msgid "" "Algorithm for non-copper clearing:
Standard: Fixed step inwards." @@ -6460,12 +6487,12 @@ msgid "" "lines." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5689 flatcamTools/ToolNonCopperClear.py:224 +#: flatcamGUI/FlatCAMGUI.py:5696 flatcamTools/ToolNonCopperClear.py:224 #: flatcamTools/ToolPaint.py:222 msgid "Rest M.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5691 +#: flatcamGUI/FlatCAMGUI.py:5698 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -6475,39 +6502,39 @@ msgid "" "If not checked, use the standard algorithm." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5710 +#: flatcamGUI/FlatCAMGUI.py:5717 msgid "Cutout Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5715 flatcamGUI/ObjectUI.py:402 +#: flatcamGUI/FlatCAMGUI.py:5722 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:5734 +#: flatcamGUI/FlatCAMGUI.py:5741 msgid "" "Distance from objects at which\n" "to draw the cutout." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5741 flatcamTools/ToolCutOut.py:96 +#: flatcamGUI/FlatCAMGUI.py:5748 flatcamTools/ToolCutOut.py:96 msgid "Gap size:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5743 +#: flatcamGUI/FlatCAMGUI.py:5750 msgid "" "Size of the gaps in the toolpath\n" "that will remain to hold the\n" "board in place." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5751 flatcamTools/ToolCutOut.py:134 +#: flatcamGUI/FlatCAMGUI.py:5758 flatcamTools/ToolCutOut.py:134 msgid "Gaps:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5753 +#: flatcamGUI/FlatCAMGUI.py:5760 msgid "" "Number of bridge gaps used for the cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -6520,57 +6547,57 @@ msgid "" "- 8 - 2*left + 2*right +2*top + 2*bottom" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5774 flatcamTools/ToolCutOut.py:115 +#: flatcamGUI/FlatCAMGUI.py:5781 flatcamTools/ToolCutOut.py:115 msgid "Convex Sh.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5776 +#: flatcamGUI/FlatCAMGUI.py:5783 msgid "Create a convex shape surrounding the entire PCB." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5789 +#: flatcamGUI/FlatCAMGUI.py:5796 msgid "2Sided Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5794 +#: flatcamGUI/FlatCAMGUI.py:5801 msgid "" "A tool to help in creating a double sided\n" "PCB using alignment holes." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5804 flatcamTools/ToolDblSided.py:235 +#: flatcamGUI/FlatCAMGUI.py:5811 flatcamTools/ToolDblSided.py:235 msgid "Drill diam.:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5806 flatcamTools/ToolDblSided.py:226 +#: flatcamGUI/FlatCAMGUI.py:5813 flatcamTools/ToolDblSided.py:226 #: flatcamTools/ToolDblSided.py:237 msgid "Diameter of the drill for the alignment holes." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5815 flatcamTools/ToolDblSided.py:120 +#: flatcamGUI/FlatCAMGUI.py:5822 flatcamTools/ToolDblSided.py:120 msgid "Mirror Axis:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5817 flatcamTools/ToolDblSided.py:122 +#: flatcamGUI/FlatCAMGUI.py:5824 flatcamTools/ToolDblSided.py:122 msgid "Mirror vertically (X) or horizontally (Y)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5828 flatcamTools/ToolDblSided.py:133 +#: flatcamGUI/FlatCAMGUI.py:5835 flatcamTools/ToolDblSided.py:133 msgid "Axis Ref:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5830 +#: flatcamGUI/FlatCAMGUI.py:5837 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:5846 +#: flatcamGUI/FlatCAMGUI.py:5853 msgid "Paint Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5853 flatcamGUI/ObjectUI.py:1305 +#: flatcamGUI/FlatCAMGUI.py:5860 flatcamGUI/ObjectUI.py:1305 msgid "" "Creates tool paths to cover the\n" "whole area of a polygon (remove\n" @@ -6578,36 +6605,36 @@ msgid "" "to click on the desired polygon." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5877 +#: flatcamGUI/FlatCAMGUI.py:5884 msgid "" "How much (fraction) of the tool\n" "width to overlap each tool pass." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5931 flatcamTools/ToolPaint.py:237 +#: flatcamGUI/FlatCAMGUI.py:5938 flatcamTools/ToolPaint.py:237 msgid "Selection:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5933 +#: flatcamGUI/FlatCAMGUI.py:5940 msgid "How to select the polygons to paint." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5951 +#: flatcamGUI/FlatCAMGUI.py:5958 msgid "Film Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5956 +#: flatcamGUI/FlatCAMGUI.py:5963 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:5967 flatcamTools/ToolFilm.py:116 +#: flatcamGUI/FlatCAMGUI.py:5974 flatcamTools/ToolFilm.py:116 msgid "Film Type:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5969 flatcamTools/ToolFilm.py:118 +#: flatcamGUI/FlatCAMGUI.py:5976 flatcamTools/ToolFilm.py:118 msgid "" "Generate a Positive black film or a Negative film.\n" "Positive means that it will print the features\n" @@ -6617,11 +6644,11 @@ msgid "" "The Film format is SVG." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5980 flatcamTools/ToolFilm.py:130 +#: flatcamGUI/FlatCAMGUI.py:5987 flatcamTools/ToolFilm.py:130 msgid "Border:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5982 flatcamTools/ToolFilm.py:132 +#: flatcamGUI/FlatCAMGUI.py:5989 flatcamTools/ToolFilm.py:132 msgid "" "Specify a border around the object.\n" "Only for negative film.\n" @@ -6633,11 +6660,11 @@ msgid "" "surroundings if not for this border." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5995 flatcamTools/ToolFilm.py:144 +#: flatcamGUI/FlatCAMGUI.py:6002 flatcamTools/ToolFilm.py:144 msgid "Scale Stroke:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:5997 flatcamTools/ToolFilm.py:146 +#: flatcamGUI/FlatCAMGUI.py:6004 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 " @@ -6645,69 +6672,69 @@ msgid "" "therefore the fine features may be more affected by this parameter." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6012 +#: flatcamGUI/FlatCAMGUI.py:6019 msgid "Panelize Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6017 +#: flatcamGUI/FlatCAMGUI.py:6024 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:6028 flatcamTools/ToolPanelize.py:147 +#: flatcamGUI/FlatCAMGUI.py:6035 flatcamTools/ToolPanelize.py:147 msgid "Spacing cols:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6030 flatcamTools/ToolPanelize.py:149 +#: flatcamGUI/FlatCAMGUI.py:6037 flatcamTools/ToolPanelize.py:149 msgid "" "Spacing between columns of the desired panel.\n" "In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6038 flatcamTools/ToolPanelize.py:156 +#: flatcamGUI/FlatCAMGUI.py:6045 flatcamTools/ToolPanelize.py:156 msgid "Spacing rows:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6040 flatcamTools/ToolPanelize.py:158 +#: flatcamGUI/FlatCAMGUI.py:6047 flatcamTools/ToolPanelize.py:158 msgid "" "Spacing between rows of the desired panel.\n" "In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6048 flatcamTools/ToolPanelize.py:165 +#: flatcamGUI/FlatCAMGUI.py:6055 flatcamTools/ToolPanelize.py:165 msgid "Columns:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6050 flatcamTools/ToolPanelize.py:167 +#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:167 msgid "Number of columns of the desired panel" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6057 flatcamTools/ToolPanelize.py:173 +#: flatcamGUI/FlatCAMGUI.py:6064 flatcamTools/ToolPanelize.py:173 msgid "Rows:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6059 flatcamTools/ToolPanelize.py:175 +#: flatcamGUI/FlatCAMGUI.py:6066 flatcamTools/ToolPanelize.py:175 msgid "Number of rows of the desired panel" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6067 +#: flatcamGUI/FlatCAMGUI.py:6074 msgid "Panel Type:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6069 +#: flatcamGUI/FlatCAMGUI.py:6076 msgid "" "Choose the type of object for the panel object:\n" "- Gerber\n" "- Geometry" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6078 +#: flatcamGUI/FlatCAMGUI.py:6085 msgid "Constrain within:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6080 flatcamTools/ToolPanelize.py:195 +#: flatcamGUI/FlatCAMGUI.py:6087 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" @@ -6716,171 +6743,171 @@ msgid "" "they fit completely within selected area." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6089 flatcamTools/ToolPanelize.py:204 +#: flatcamGUI/FlatCAMGUI.py:6096 flatcamTools/ToolPanelize.py:204 msgid "Width (DX):" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6091 flatcamTools/ToolPanelize.py:206 +#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:206 msgid "" "The width (DX) within which the panel must fit.\n" "In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6098 flatcamTools/ToolPanelize.py:212 +#: flatcamGUI/FlatCAMGUI.py:6105 flatcamTools/ToolPanelize.py:212 msgid "Height (DY):" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6100 flatcamTools/ToolPanelize.py:214 +#: flatcamGUI/FlatCAMGUI.py:6107 flatcamTools/ToolPanelize.py:214 msgid "" "The height (DY)within which the panel must fit.\n" "In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6114 +#: flatcamGUI/FlatCAMGUI.py:6121 msgid "Calculators Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6117 +#: flatcamGUI/FlatCAMGUI.py:6124 msgid "V-Shape Tool Calculator:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6119 +#: flatcamGUI/FlatCAMGUI.py:6126 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:6130 flatcamTools/ToolCalculators.py:94 +#: flatcamGUI/FlatCAMGUI.py:6137 flatcamTools/ToolCalculators.py:94 msgid "Tip Diameter:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6132 +#: flatcamGUI/FlatCAMGUI.py:6139 msgid "" "This is the tool tip diameter.\n" "It is specified by manufacturer." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6140 +#: flatcamGUI/FlatCAMGUI.py:6147 msgid "Tip angle:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6142 +#: flatcamGUI/FlatCAMGUI.py:6149 msgid "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6152 +#: flatcamGUI/FlatCAMGUI.py:6159 msgid "" "This is depth to cut into material.\n" "In the CNCJob object it is the CutZ parameter." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6159 +#: flatcamGUI/FlatCAMGUI.py:6166 msgid "ElectroPlating Calculator:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6161 flatcamTools/ToolCalculators.py:152 +#: flatcamGUI/FlatCAMGUI.py:6168 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:6171 flatcamTools/ToolCalculators.py:161 +#: flatcamGUI/FlatCAMGUI.py:6178 flatcamTools/ToolCalculators.py:161 msgid "Board Length:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6173 flatcamTools/ToolCalculators.py:165 +#: flatcamGUI/FlatCAMGUI.py:6180 flatcamTools/ToolCalculators.py:165 msgid "This is the board length. In centimeters." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6179 flatcamTools/ToolCalculators.py:167 +#: flatcamGUI/FlatCAMGUI.py:6186 flatcamTools/ToolCalculators.py:167 msgid "Board Width:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6181 flatcamTools/ToolCalculators.py:171 +#: flatcamGUI/FlatCAMGUI.py:6188 flatcamTools/ToolCalculators.py:171 msgid "This is the board width.In centimeters." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6186 flatcamTools/ToolCalculators.py:173 +#: flatcamGUI/FlatCAMGUI.py:6193 flatcamTools/ToolCalculators.py:173 msgid "Current Density:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6189 flatcamTools/ToolCalculators.py:177 +#: flatcamGUI/FlatCAMGUI.py:6196 flatcamTools/ToolCalculators.py:177 msgid "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6195 flatcamTools/ToolCalculators.py:181 +#: flatcamGUI/FlatCAMGUI.py:6202 flatcamTools/ToolCalculators.py:181 msgid "Copper Growth:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6198 flatcamTools/ToolCalculators.py:185 +#: flatcamGUI/FlatCAMGUI.py:6205 flatcamTools/ToolCalculators.py:185 msgid "" "How thick the copper growth is intended to be.\n" "In microns." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6211 +#: flatcamGUI/FlatCAMGUI.py:6218 msgid "Transform Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6216 +#: flatcamGUI/FlatCAMGUI.py:6223 msgid "" "Various transformations that can be applied\n" "on a FlatCAM object." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6226 +#: flatcamGUI/FlatCAMGUI.py:6233 msgid "Rotate Angle:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6228 +#: flatcamGUI/FlatCAMGUI.py:6235 msgid "Angle for rotation. In degrees." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6235 +#: flatcamGUI/FlatCAMGUI.py:6242 msgid "Skew_X angle:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6237 +#: flatcamGUI/FlatCAMGUI.py:6244 msgid "Angle for Skew/Shear on X axis. In degrees." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6244 +#: flatcamGUI/FlatCAMGUI.py:6251 msgid "Skew_Y angle:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6246 +#: flatcamGUI/FlatCAMGUI.py:6253 msgid "Angle for Skew/Shear on Y axis. In degrees." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6253 +#: flatcamGUI/FlatCAMGUI.py:6260 msgid "Scale_X factor:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6255 +#: flatcamGUI/FlatCAMGUI.py:6262 msgid "Factor for scaling on X axis." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6262 +#: flatcamGUI/FlatCAMGUI.py:6269 msgid "Scale_Y factor:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6264 +#: flatcamGUI/FlatCAMGUI.py:6271 msgid "Factor for scaling on Y axis." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6272 +#: flatcamGUI/FlatCAMGUI.py:6279 msgid "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6280 flatcamTools/ToolTransform.py:210 +#: flatcamGUI/FlatCAMGUI.py:6287 flatcamTools/ToolTransform.py:210 msgid "" "Scale the selected object(s)\n" "using the origin reference when checked,\n" @@ -6888,27 +6915,27 @@ msgid "" "of the selected objects when unchecked." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6289 +#: flatcamGUI/FlatCAMGUI.py:6296 msgid "Offset_X val:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6291 +#: flatcamGUI/FlatCAMGUI.py:6298 msgid "Distance to offset on X axis. In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6298 +#: flatcamGUI/FlatCAMGUI.py:6305 msgid "Offset_Y val:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6300 +#: flatcamGUI/FlatCAMGUI.py:6307 msgid "Distance to offset on Y axis. In current units." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6306 +#: flatcamGUI/FlatCAMGUI.py:6313 msgid "Mirror Reference" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6308 flatcamTools/ToolTransform.py:314 +#: flatcamGUI/FlatCAMGUI.py:6315 flatcamTools/ToolTransform.py:314 msgid "" "Flip the selected object(s)\n" "around the point in Point Entry Field.\n" @@ -6921,174 +6948,174 @@ msgid "" "Point Entry field and click Flip on X(Y)" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6319 +#: flatcamGUI/FlatCAMGUI.py:6326 msgid " Mirror Ref. Point:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6321 flatcamTools/ToolTransform.py:327 +#: flatcamGUI/FlatCAMGUI.py:6328 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:6338 +#: flatcamGUI/FlatCAMGUI.py:6345 msgid "SolderPaste Tool Options" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6343 +#: flatcamGUI/FlatCAMGUI.py:6350 msgid "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6354 +#: flatcamGUI/FlatCAMGUI.py:6361 msgid "Diameters of nozzle tools, separated by ','" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6361 +#: flatcamGUI/FlatCAMGUI.py:6368 msgid "New Nozzle Dia:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6363 flatcamTools/ToolSolderPaste.py:103 +#: flatcamGUI/FlatCAMGUI.py:6370 flatcamTools/ToolSolderPaste.py:103 msgid "Diameter for the new Nozzle tool to add in the Tool Table" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6371 flatcamTools/ToolSolderPaste.py:166 +#: flatcamGUI/FlatCAMGUI.py:6378 flatcamTools/ToolSolderPaste.py:166 msgid "Z Dispense Start:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6373 flatcamTools/ToolSolderPaste.py:168 +#: flatcamGUI/FlatCAMGUI.py:6380 flatcamTools/ToolSolderPaste.py:168 msgid "The height (Z) when solder paste dispensing starts." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6380 flatcamTools/ToolSolderPaste.py:174 +#: flatcamGUI/FlatCAMGUI.py:6387 flatcamTools/ToolSolderPaste.py:174 msgid "Z Dispense:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6382 flatcamTools/ToolSolderPaste.py:176 +#: flatcamGUI/FlatCAMGUI.py:6389 flatcamTools/ToolSolderPaste.py:176 msgid "The height (Z) when doing solder paste dispensing." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6389 flatcamTools/ToolSolderPaste.py:183 +#: flatcamGUI/FlatCAMGUI.py:6396 flatcamTools/ToolSolderPaste.py:183 msgid "Z Dispense Stop:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6391 flatcamTools/ToolSolderPaste.py:185 +#: flatcamGUI/FlatCAMGUI.py:6398 flatcamTools/ToolSolderPaste.py:185 msgid "The height (Z) when solder paste dispensing stops." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6398 flatcamTools/ToolSolderPaste.py:191 +#: flatcamGUI/FlatCAMGUI.py:6405 flatcamTools/ToolSolderPaste.py:191 msgid "Z Travel:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6400 flatcamTools/ToolSolderPaste.py:193 +#: flatcamGUI/FlatCAMGUI.py:6407 flatcamTools/ToolSolderPaste.py:193 msgid "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6408 flatcamTools/ToolSolderPaste.py:200 +#: flatcamGUI/FlatCAMGUI.py:6415 flatcamTools/ToolSolderPaste.py:200 msgid "Z Toolchange:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6410 flatcamTools/ToolSolderPaste.py:202 +#: flatcamGUI/FlatCAMGUI.py:6417 flatcamTools/ToolSolderPaste.py:202 msgid "The height (Z) for tool (nozzle) change." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6417 flatcamTools/ToolSolderPaste.py:208 +#: flatcamGUI/FlatCAMGUI.py:6424 flatcamTools/ToolSolderPaste.py:208 msgid "XY Toolchange:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6419 flatcamTools/ToolSolderPaste.py:210 +#: flatcamGUI/FlatCAMGUI.py:6426 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:6427 flatcamTools/ToolSolderPaste.py:217 +#: flatcamGUI/FlatCAMGUI.py:6434 flatcamTools/ToolSolderPaste.py:217 msgid "Feedrate X-Y:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6429 flatcamTools/ToolSolderPaste.py:219 +#: flatcamGUI/FlatCAMGUI.py:6436 flatcamTools/ToolSolderPaste.py:219 msgid "Feedrate (speed) while moving on the X-Y plane." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6436 flatcamTools/ToolSolderPaste.py:225 +#: flatcamGUI/FlatCAMGUI.py:6443 flatcamTools/ToolSolderPaste.py:225 msgid "Feedrate Z:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6438 flatcamTools/ToolSolderPaste.py:227 +#: flatcamGUI/FlatCAMGUI.py:6445 flatcamTools/ToolSolderPaste.py:227 msgid "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6446 flatcamTools/ToolSolderPaste.py:234 +#: flatcamGUI/FlatCAMGUI.py:6453 flatcamTools/ToolSolderPaste.py:234 msgid "Feedrate Z Dispense:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6448 flatcamTools/ToolSolderPaste.py:236 +#: flatcamGUI/FlatCAMGUI.py:6455 flatcamTools/ToolSolderPaste.py:236 msgid "" "Feedrate (speed) while moving up vertically\n" " to Dispense position (on Z plane)." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6456 flatcamTools/ToolSolderPaste.py:243 +#: flatcamGUI/FlatCAMGUI.py:6463 flatcamTools/ToolSolderPaste.py:243 msgid "Spindle Speed FWD:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6458 flatcamTools/ToolSolderPaste.py:245 +#: flatcamGUI/FlatCAMGUI.py:6465 flatcamTools/ToolSolderPaste.py:245 msgid "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6466 flatcamTools/ToolSolderPaste.py:252 +#: flatcamGUI/FlatCAMGUI.py:6473 flatcamTools/ToolSolderPaste.py:252 msgid "Dwell FWD:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6468 flatcamTools/ToolSolderPaste.py:254 +#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:254 msgid "Pause after solder dispensing." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6475 flatcamTools/ToolSolderPaste.py:260 +#: flatcamGUI/FlatCAMGUI.py:6482 flatcamTools/ToolSolderPaste.py:260 msgid "Spindle Speed REV:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6477 flatcamTools/ToolSolderPaste.py:262 +#: flatcamGUI/FlatCAMGUI.py:6484 flatcamTools/ToolSolderPaste.py:262 msgid "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6485 flatcamTools/ToolSolderPaste.py:269 +#: flatcamGUI/FlatCAMGUI.py:6492 flatcamTools/ToolSolderPaste.py:269 msgid "Dwell REV:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6487 flatcamTools/ToolSolderPaste.py:271 +#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:271 msgid "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6494 flatcamTools/ToolSolderPaste.py:277 +#: flatcamGUI/FlatCAMGUI.py:6501 flatcamTools/ToolSolderPaste.py:277 msgid "PostProcessors:" msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6496 flatcamTools/ToolSolderPaste.py:279 +#: flatcamGUI/FlatCAMGUI.py:6503 flatcamTools/ToolSolderPaste.py:279 msgid "Files that control the GCode generation." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6526 flatcamGUI/FlatCAMGUI.py:6532 +#: flatcamGUI/FlatCAMGUI.py:6533 flatcamGUI/FlatCAMGUI.py:6539 msgid "Idle." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6556 +#: flatcamGUI/FlatCAMGUI.py:6563 msgid "Application started ..." msgstr "" -#: flatcamGUI/FlatCAMGUI.py:6557 +#: flatcamGUI/FlatCAMGUI.py:6564 msgid "Hello!" msgstr "" @@ -8936,23 +8963,23 @@ msgstr "" msgid "[ERROR_NOTCL] Can't do Paint on MultiGeo geometries ..." msgstr "" -#: flatcamTools/ToolPaint.py:796 flatcamTools/ToolPaint.py:999 +#: flatcamTools/ToolPaint.py:796 flatcamTools/ToolPaint.py:1003 msgid "Painting polygon..." msgstr "" -#: flatcamTools/ToolPaint.py:847 +#: flatcamTools/ToolPaint.py:851 msgid "[WARNING] No polygon found." msgstr "" -#: flatcamTools/ToolPaint.py:850 +#: flatcamTools/ToolPaint.py:854 msgid "Painting polygon." msgstr "" -#: flatcamTools/ToolPaint.py:892 +#: flatcamTools/ToolPaint.py:896 msgid "[ERROR_NOTCL] Geometry could not be painted completely" msgstr "" -#: flatcamTools/ToolPaint.py:918 +#: flatcamTools/ToolPaint.py:922 #, python-format msgid "" "[ERROR] Could not do Paint. Try a different combination of parameters. Or a " @@ -8960,16 +8987,16 @@ msgid "" "%s" msgstr "" -#: flatcamTools/ToolPaint.py:960 +#: flatcamTools/ToolPaint.py:964 #, python-format msgid "[ERROR_NOTCL] PaintTool.paint_poly() --> %s" msgstr "" -#: flatcamTools/ToolPaint.py:966 flatcamTools/ToolPaint.py:1259 +#: flatcamTools/ToolPaint.py:970 flatcamTools/ToolPaint.py:1263 msgid "Polygon Paint started ..." msgstr "" -#: flatcamTools/ToolPaint.py:1115 flatcamTools/ToolPaint.py:1204 +#: flatcamTools/ToolPaint.py:1119 flatcamTools/ToolPaint.py:1208 #, python-format msgid "" "[ERROR] Could not do Paint All. Try a different combination of parameters. " @@ -8977,7 +9004,7 @@ msgid "" "%s" msgstr "" -#: flatcamTools/ToolPaint.py:1139 +#: flatcamTools/ToolPaint.py:1143 msgid "" "[ERROR] There is no Painting Geometry in the file.\n" "Usually it means that the tool diameter is too big for the painted " @@ -8985,11 +9012,11 @@ msgid "" "Change the painting parameters and try again." msgstr "" -#: flatcamTools/ToolPaint.py:1148 +#: flatcamTools/ToolPaint.py:1152 msgid "[success] Paint All Done." msgstr "" -#: flatcamTools/ToolPaint.py:1234 +#: flatcamTools/ToolPaint.py:1238 msgid "" "[ERROR_NOTCL] There is no Painting Geometry in the file.\n" "Usually it means that the tool diameter is too big for the painted " @@ -8997,7 +9024,7 @@ msgid "" "Change the painting parameters and try again." msgstr "" -#: flatcamTools/ToolPaint.py:1243 +#: flatcamTools/ToolPaint.py:1247 msgid "[success] Paint All with Rest-Machining done." msgstr ""