From f73f6fb5da0aee0e520cdd33ca44f6af60ce3eef Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 29 Aug 2020 16:10:00 +0300 Subject: [PATCH] - 2Sided Tool - fixed newly introduced issues in the Alignment section - 2Sided Tool - modified the UI such that some of the fields will allow only numbers and some special characters ([,],(,),/,*,,,+,-,%) - Cutout Tool - working on adding mouse bites for the Freeform cutout - updated the translation files to the current state of the app --- CHANGELOG.md | 7 + appGUI/GUIElements.py | 24 +- appTools/ToolCutOut.py | 653 +- appTools/ToolDblSided.py | 42 +- locale/de/LC_MESSAGES/strings.mo | Bin 391681 -> 377490 bytes locale/de/LC_MESSAGES/strings.po | 13412 ++++++++++++----------- locale/en/LC_MESSAGES/strings.mo | Bin 360424 -> 347676 bytes locale/en/LC_MESSAGES/strings.po | 14608 ++++++++++++++------------ locale/es/LC_MESSAGES/strings.mo | Bin 393671 -> 379713 bytes locale/es/LC_MESSAGES/strings.po | 13419 ++++++++++++----------- locale/fr/LC_MESSAGES/strings.mo | Bin 394649 -> 380711 bytes locale/fr/LC_MESSAGES/strings.po | 13400 ++++++++++++----------- locale/hu/LC_MESSAGES/strings.mo | Bin 518 -> 680 bytes locale/hu/LC_MESSAGES/strings.po | 12080 +++++++++++---------- locale/it/LC_MESSAGES/strings.mo | Bin 379960 -> 366233 bytes locale/it/LC_MESSAGES/strings.po | 13328 +++++++++++++---------- locale/pt_BR/LC_MESSAGES/strings.mo | Bin 380930 -> 367197 bytes locale/pt_BR/LC_MESSAGES/strings.po | 13294 +++++++++++++---------- locale/ro/LC_MESSAGES/strings.mo | Bin 389494 -> 375736 bytes locale/ro/LC_MESSAGES/strings.po | 13401 ++++++++++++----------- locale/ru/LC_MESSAGES/strings.mo | Bin 502341 -> 484380 bytes locale/ru/LC_MESSAGES/strings.po | 13308 +++++++++++++---------- locale/tr/LC_MESSAGES/strings.mo | Bin 383192 -> 369502 bytes locale/tr/LC_MESSAGES/strings.po | 13674 +++++++++++++----------- locale_template/strings.pot | 11253 +++++++++++--------- 25 files changed, 81423 insertions(+), 64480 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ea57002..2cac7806 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ CHANGELOG for FlatCAM beta ================================================= +29.08.2020 + +- 2Sided Tool - fixed newly introduced issues in the Alignment section +- 2Sided Tool - modified the UI such that some of the fields will allow only numbers and some special characters ([,],(,),/,*,,,+,-,%) +- Cutout Tool - working on adding mouse bites for the Freeform cutout +- updated the translation files to the current state of the app + 28.08.2020 - Paint Tool - upgraded the UI and added the functionality that now adding a new tool is done by first searching the Tools DB for a suitable tool and if fails then it adds an default tool diff --git a/appGUI/GUIElements.py b/appGUI/GUIElements.py index f2af5d71..c05c2ccb 100644 --- a/appGUI/GUIElements.py +++ b/appGUI/GUIElements.py @@ -286,7 +286,7 @@ class LengthEntry(QtWidgets.QLineEdit): # Unit conversion table OUTPUT-INPUT self.scales = { 'IN': {'IN': 1.0, - 'MM': 1/25.4}, + 'MM': 1 / 25.4}, 'MM': {'IN': 25.4, 'MM': 1.0} } @@ -668,6 +668,7 @@ class NumericalEvalEntry(FCEntry): """ Will evaluate the input and return a value. Accepts only float numbers and formulas using the operators: /,*,+,-,% """ + def __init__(self, border_color=None): super().__init__(border_color=border_color) @@ -691,10 +692,11 @@ class NumericalEvalTupleEntry(EvalEntry): """ Will return a text value. Accepts only float numbers and formulas using the operators: /,*,+,-,% """ + def __init__(self, border_color=None): super().__init__(border_color=border_color) - regex = QtCore.QRegExp("[0-9\/\*\+\-\%\.\s\,\[\]]*") + regex = QtCore.QRegExp("[0-9\/\*\+\-\%\.\s\,\[\]\(\)]*") validator = QtGui.QRegExpValidator(regex, self) self.setValidator(validator) @@ -802,7 +804,6 @@ class FCSliderWithSpinner(QtWidgets.QFrame): class FCSpinner(QtWidgets.QSpinBox): - returnPressed = QtCore.pyqtSignal() confirmation_signal = QtCore.pyqtSignal(bool, float, float) @@ -1040,7 +1041,6 @@ class FCSliderWithDoubleSpinner(QtWidgets.QFrame): class FCDoubleSpinner(QtWidgets.QDoubleSpinBox): - returnPressed = QtCore.pyqtSignal() confirmation_signal = QtCore.pyqtSignal(bool, float, float) @@ -1694,7 +1694,6 @@ class FCButton(QtWidgets.QPushButton): class FCLabel(QtWidgets.QLabel): - clicked = QtCore.pyqtSignal(bool) right_clicked = QtCore.pyqtSignal(bool) middle_clicked = QtCore.pyqtSignal(bool) @@ -2018,7 +2017,7 @@ class FCDetachableTab(QtWidgets.QTabWidget): if str(tab_name) == str(self.tabText(index)): self.protectTab(index) - # Make this tab the current tab + # Make this tab the current tab if index > -1: self.setCurrentIndex(insert_index) if self.use_old_index else self.setCurrentIndex(index) @@ -2101,7 +2100,6 @@ class FCDetachableTab(QtWidgets.QTabWidget): # area to the side of the QTabBar) or there are not tabs # currently attached... if tabDropPos.y() < self.tabBar.height() or self.count() == 0: - # Close the detached tab and allow it to re-attach # automatically self.detachedTabs[name].close() @@ -2422,6 +2420,7 @@ class VerticalScrollArea(QtWidgets.QScrollArea): scroll area that also expands horizontally to accommodate its contents. """ + def __init__(self, parent=None): QtWidgets.QScrollArea.__init__(self, parent=parent) self.setWidgetResizable(True) @@ -2537,7 +2536,6 @@ class OptionalHideInputSection: class FCTable(QtWidgets.QTableWidget): - drag_drop_sig = QtCore.pyqtSignal(object, int) lost_focus = QtCore.pyqtSignal() @@ -3011,7 +3009,7 @@ class _BrowserTextEdit(QTextEdit): save_action.triggered.connect(lambda: self.save_log(app=self.app)) clear_action = QAction(_("Clear"), self) - clear_action.setShortcut(QKeySequence(Qt.Key_Delete)) # it's not working, the shortcut + clear_action.setShortcut(QKeySequence(Qt.Key_Delete)) # it's not working, the shortcut self.menu.addAction(clear_action) clear_action.triggered.connect(self.clear) @@ -3507,8 +3505,8 @@ class FCZeroAxes(QtWidgets.QFrame): class RotatedToolButton(QtWidgets.QToolButton): - def __init__(self, orientation = "east", *args, **kwargs): - super(RotatedToolButton,self).__init__(*args, **kwargs) + def __init__(self, orientation="east", *args, **kwargs): + super(RotatedToolButton, self).__init__(*args, **kwargs) self.orientation = orientation def paintEvent(self, event): @@ -3560,8 +3558,8 @@ class RotatedToolButton(QtWidgets.QToolButton): class RotatedButton(QtWidgets.QPushButton): - def __init__(self, orientation = "west", *args, **kwargs): - super(RotatedButton,self).__init__(*args, **kwargs) + def __init__(self, orientation="west", *args, **kwargs): + super(RotatedButton, self).__init__(*args, **kwargs) self.orientation = orientation def paintEvent(self, event): diff --git a/appTools/ToolCutOut.py b/appTools/ToolCutOut.py index fbb28e3d..7e09ced0 100644 --- a/appTools/ToolCutOut.py +++ b/appTools/ToolCutOut.py @@ -10,7 +10,7 @@ from appTool import AppTool from appGUI.GUIElements import FCDoubleSpinner, FCCheckBox, RadioSet, FCComboBox, OptionalInputSection, FCButton, \ FCLabel -from shapely.geometry import box, MultiPolygon, Polygon, LineString, LinearRing, MultiLineString +from shapely.geometry import box, MultiPolygon, Polygon, LineString, LinearRing, MultiLineString, Point from shapely.ops import cascaded_union, unary_union, linemerge import shapely.affinity as affinity @@ -187,52 +187,52 @@ class CutOut(AppTool): self.ui.dia.set_value(float(self.app.defaults["tools_cutout_tooldia"])) self.default_data.update({ - "plot": True, + "plot": True, - "cutz": float(self.app.defaults["geometry_cutz"]), - "multidepth": self.app.defaults["geometry_multidepth"], - "depthperpass": float(self.app.defaults["geometry_depthperpass"]), + "cutz": float(self.app.defaults["geometry_cutz"]), + "multidepth": self.app.defaults["geometry_multidepth"], + "depthperpass": float(self.app.defaults["geometry_depthperpass"]), - "vtipdia": float(self.app.defaults["geometry_vtipdia"]), - "vtipangle": float(self.app.defaults["geometry_vtipangle"]), - "travelz": float(self.app.defaults["geometry_travelz"]), - "feedrate": float(self.app.defaults["geometry_feedrate"]), - "feedrate_z": float(self.app.defaults["geometry_feedrate_z"]), - "feedrate_rapid": float(self.app.defaults["geometry_feedrate_rapid"]), - "spindlespeed": self.app.defaults["geometry_spindlespeed"], - "dwell": self.app.defaults["geometry_dwell"], - "dwelltime": float(self.app.defaults["geometry_dwelltime"]), - "spindledir": self.app.defaults["geometry_spindledir"], - "ppname_g": self.app.defaults["geometry_ppname_g"], - "extracut": self.app.defaults["geometry_extracut"], - "extracut_length": float(self.app.defaults["geometry_extracut_length"]), - "toolchange": self.app.defaults["geometry_toolchange"], - "toolchangexy": self.app.defaults["geometry_toolchangexy"], - "toolchangez": float(self.app.defaults["geometry_toolchangez"]), - "startz": self.app.defaults["geometry_startz"], - "endz": float(self.app.defaults["geometry_endz"]), - "area_exclusion": self.app.defaults["geometry_area_exclusion"], - "area_shape": self.app.defaults["geometry_area_shape"], - "area_strategy": self.app.defaults["geometry_area_strategy"], - "area_overz": float(self.app.defaults["geometry_area_overz"]), - "optimization_type": self.app.defaults["geometry_optimization_type"], + "vtipdia": float(self.app.defaults["geometry_vtipdia"]), + "vtipangle": float(self.app.defaults["geometry_vtipangle"]), + "travelz": float(self.app.defaults["geometry_travelz"]), + "feedrate": float(self.app.defaults["geometry_feedrate"]), + "feedrate_z": float(self.app.defaults["geometry_feedrate_z"]), + "feedrate_rapid": float(self.app.defaults["geometry_feedrate_rapid"]), + "spindlespeed": self.app.defaults["geometry_spindlespeed"], + "dwell": self.app.defaults["geometry_dwell"], + "dwelltime": float(self.app.defaults["geometry_dwelltime"]), + "spindledir": self.app.defaults["geometry_spindledir"], + "ppname_g": self.app.defaults["geometry_ppname_g"], + "extracut": self.app.defaults["geometry_extracut"], + "extracut_length": float(self.app.defaults["geometry_extracut_length"]), + "toolchange": self.app.defaults["geometry_toolchange"], + "toolchangexy": self.app.defaults["geometry_toolchangexy"], + "toolchangez": float(self.app.defaults["geometry_toolchangez"]), + "startz": self.app.defaults["geometry_startz"], + "endz": float(self.app.defaults["geometry_endz"]), + "area_exclusion": self.app.defaults["geometry_area_exclusion"], + "area_shape": self.app.defaults["geometry_area_shape"], + "area_strategy": self.app.defaults["geometry_area_strategy"], + "area_overz": float(self.app.defaults["geometry_area_overz"]), + "optimization_type": self.app.defaults["geometry_optimization_type"], # Cutout - "tools_cutout_tooldia": self.app.defaults["tools_cutout_tooldia"], - "tools_cutout_kind": self.app.defaults["tools_cutout_kind"], - "tools_cutout_margin": float(self.app.defaults["tools_cutout_margin"]), - "tools_cutout_z": float(self.app.defaults["tools_cutout_z"]), - "tools_cutout_depthperpass": float(self.app.defaults["tools_cutout_depthperpass"]), - "tools_cutout_mdepth": self.app.defaults["tools_cutout_mdepth"], - "tools_cutout_gapsize": float(self.app.defaults["tools_cutout_gapsize"]), - "tools_cutout_gaps_ff": self.app.defaults["tools_cutout_gaps_ff"], - "tools_cutout_convexshape": self.app.defaults["tools_cutout_convexshape"], + "tools_cutout_tooldia": self.app.defaults["tools_cutout_tooldia"], + "tools_cutout_kind": self.app.defaults["tools_cutout_kind"], + "tools_cutout_margin": float(self.app.defaults["tools_cutout_margin"]), + "tools_cutout_z": float(self.app.defaults["tools_cutout_z"]), + "tools_cutout_depthperpass": float(self.app.defaults["tools_cutout_depthperpass"]), + "tools_cutout_mdepth": self.app.defaults["tools_cutout_mdepth"], + "tools_cutout_gapsize": float(self.app.defaults["tools_cutout_gapsize"]), + "tools_cutout_gaps_ff": self.app.defaults["tools_cutout_gaps_ff"], + "tools_cutout_convexshape": self.app.defaults["tools_cutout_convexshape"], - "tools_cutout_big_cursor": self.app.defaults["tools_cutout_big_cursor"], - "tools_cutout_gap_type": self.app.defaults["tools_cutout_gap_type"], - "tools_cutout_gap_depth": float(self.app.defaults["tools_cutout_gap_depth"]), - "tools_cutout_mb_dia": float(self.app.defaults["tools_cutout_mb_dia"]), - "tools_cutout_mb_spacing": float(self.app.defaults["tools_cutout_mb_spacing"]), + "tools_cutout_big_cursor": self.app.defaults["tools_cutout_big_cursor"], + "tools_cutout_gap_type": self.app.defaults["tools_cutout_gap_type"], + "tools_cutout_gap_depth": float(self.app.defaults["tools_cutout_gap_depth"]), + "tools_cutout_mb_dia": float(self.app.defaults["tools_cutout_mb_dia"]), + "tools_cutout_mb_spacing": float(self.app.defaults["tools_cutout_mb_spacing"]), }) tool_dia = float(self.app.defaults["tools_cutout_tooldia"]) @@ -366,14 +366,14 @@ class CutOut(AppTool): new_tdia = deepcopy(updated_tooldia) if updated_tooldia is not None else deepcopy(truncated_tooldia) self.cut_tool_dict.update({ - 'tooldia': new_tdia, - 'offset': deepcopy(offset), - 'offset_value': deepcopy(offset_val), - 'type': deepcopy(typ), - 'tool_type': deepcopy(tool_type), - 'data': deepcopy(new_tools_dict), - 'solid_geometry': [] - }) + 'tooldia': new_tdia, + 'offset': deepcopy(offset), + 'offset_value': deepcopy(offset_val), + 'type': deepcopy(typ), + 'tool_type': deepcopy(tool_type), + 'data': deepcopy(new_tools_dict), + 'solid_geometry': [] + }) self.update_ui(new_tools_dict) @@ -381,65 +381,67 @@ class CutOut(AppTool): self.app.inform.emit('[success] %s' % _("Updated tool from Tools Database.")) def on_tool_default_add(self, dia=None, muted=None): + + dia = dia self.default_data.update({ - "plot": True, + "plot": True, - "cutz": float(self.app.defaults["geometry_cutz"]), - "multidepth": self.app.defaults["geometry_multidepth"], - "depthperpass": float(self.app.defaults["geometry_depthperpass"]), + "cutz": float(self.app.defaults["geometry_cutz"]), + "multidepth": self.app.defaults["geometry_multidepth"], + "depthperpass": float(self.app.defaults["geometry_depthperpass"]), - "vtipdia": float(self.app.defaults["geometry_vtipdia"]), - "vtipangle": float(self.app.defaults["geometry_vtipangle"]), - "travelz": float(self.app.defaults["geometry_travelz"]), - "feedrate": float(self.app.defaults["geometry_feedrate"]), - "feedrate_z": float(self.app.defaults["geometry_feedrate_z"]), - "feedrate_rapid": float(self.app.defaults["geometry_feedrate_rapid"]), - "spindlespeed": self.app.defaults["geometry_spindlespeed"], - "dwell": self.app.defaults["geometry_dwell"], - "dwelltime": float(self.app.defaults["geometry_dwelltime"]), - "spindledir": self.app.defaults["geometry_spindledir"], - "ppname_g": self.app.defaults["geometry_ppname_g"], - "extracut": self.app.defaults["geometry_extracut"], - "extracut_length": float(self.app.defaults["geometry_extracut_length"]), - "toolchange": self.app.defaults["geometry_toolchange"], - "toolchangexy": self.app.defaults["geometry_toolchangexy"], - "toolchangez": float(self.app.defaults["geometry_toolchangez"]), - "startz": self.app.defaults["geometry_startz"], - "endz": float(self.app.defaults["geometry_endz"]), - "area_exclusion": self.app.defaults["geometry_area_exclusion"], - "area_shape": self.app.defaults["geometry_area_shape"], - "area_strategy": self.app.defaults["geometry_area_strategy"], - "area_overz": float(self.app.defaults["geometry_area_overz"]), - "optimization_type": self.app.defaults["geometry_optimization_type"], + "vtipdia": float(self.app.defaults["geometry_vtipdia"]), + "vtipangle": float(self.app.defaults["geometry_vtipangle"]), + "travelz": float(self.app.defaults["geometry_travelz"]), + "feedrate": float(self.app.defaults["geometry_feedrate"]), + "feedrate_z": float(self.app.defaults["geometry_feedrate_z"]), + "feedrate_rapid": float(self.app.defaults["geometry_feedrate_rapid"]), + "spindlespeed": self.app.defaults["geometry_spindlespeed"], + "dwell": self.app.defaults["geometry_dwell"], + "dwelltime": float(self.app.defaults["geometry_dwelltime"]), + "spindledir": self.app.defaults["geometry_spindledir"], + "ppname_g": self.app.defaults["geometry_ppname_g"], + "extracut": self.app.defaults["geometry_extracut"], + "extracut_length": float(self.app.defaults["geometry_extracut_length"]), + "toolchange": self.app.defaults["geometry_toolchange"], + "toolchangexy": self.app.defaults["geometry_toolchangexy"], + "toolchangez": float(self.app.defaults["geometry_toolchangez"]), + "startz": self.app.defaults["geometry_startz"], + "endz": float(self.app.defaults["geometry_endz"]), + "area_exclusion": self.app.defaults["geometry_area_exclusion"], + "area_shape": self.app.defaults["geometry_area_shape"], + "area_strategy": self.app.defaults["geometry_area_strategy"], + "area_overz": float(self.app.defaults["geometry_area_overz"]), + "optimization_type": self.app.defaults["geometry_optimization_type"], # Cutout - "tools_cutout_tooldia": self.app.defaults["tools_cutout_tooldia"], - "tools_cutout_kind": self.app.defaults["tools_cutout_kind"], - "tools_cutout_margin": float(self.app.defaults["tools_cutout_margin"]), - "tools_cutout_z": float(self.app.defaults["tools_cutout_z"]), - "tools_cutout_depthperpass": float(self.app.defaults["tools_cutout_depthperpass"]), - "tools_cutout_mdepth": self.app.defaults["tools_cutout_mdepth"], - "tools_cutout_gapsize": float(self.app.defaults["tools_cutout_gapsize"]), - "tools_cutout_gaps_ff": self.app.defaults["tools_cutout_gaps_ff"], - "tools_cutout_convexshape": self.app.defaults["tools_cutout_convexshape"], + "tools_cutout_tooldia": self.app.defaults["tools_cutout_tooldia"], + "tools_cutout_kind": self.app.defaults["tools_cutout_kind"], + "tools_cutout_margin": float(self.app.defaults["tools_cutout_margin"]), + "tools_cutout_z": float(self.app.defaults["tools_cutout_z"]), + "tools_cutout_depthperpass": float(self.app.defaults["tools_cutout_depthperpass"]), + "tools_cutout_mdepth": self.app.defaults["tools_cutout_mdepth"], + "tools_cutout_gapsize": float(self.app.defaults["tools_cutout_gapsize"]), + "tools_cutout_gaps_ff": self.app.defaults["tools_cutout_gaps_ff"], + "tools_cutout_convexshape": self.app.defaults["tools_cutout_convexshape"], - "tools_cutout_big_cursor": self.app.defaults["tools_cutout_big_cursor"], - "tools_cutout_gap_type": self.app.defaults["tools_cutout_gap_type"], - "tools_cutout_gap_depth": float(self.app.defaults["tools_cutout_gap_depth"]), - "tools_cutout_mb_dia": float(self.app.defaults["tools_cutout_mb_dia"]), - "tools_cutout_mb_spacing": float(self.app.defaults["tools_cutout_mb_spacing"]), + "tools_cutout_big_cursor": self.app.defaults["tools_cutout_big_cursor"], + "tools_cutout_gap_type": self.app.defaults["tools_cutout_gap_type"], + "tools_cutout_gap_depth": float(self.app.defaults["tools_cutout_gap_depth"]), + "tools_cutout_mb_dia": float(self.app.defaults["tools_cutout_mb_dia"]), + "tools_cutout_mb_spacing": float(self.app.defaults["tools_cutout_mb_spacing"]), }) self.cut_tool_dict.update({ - 'tooldia': str(self.app.defaults["tools_cutout_tooldia"]), - 'offset': 'Path', - 'offset_value': 0.0, - 'type': _('Rough'), - 'tool_type': 'C1', - 'data': deepcopy(self.default_data), - 'solid_geometry': [] - }) + 'tooldia': str(self.app.defaults["tools_cutout_tooldia"]), + 'offset': 'Path', + 'offset_value': 0.0, + 'type': _('Rough'), + 'tool_type': 'C1', + 'data': deepcopy(self.default_data), + 'solid_geometry': [] + }) self.update_ui(self.default_data) @@ -490,13 +492,13 @@ class CutOut(AppTool): truncated_tooldia = self.app.dec_format(tooldia, self.decimals) self.cutout_tools.update({ 1: { - 'tooldia': truncated_tooldia, - 'offset': tool['offset'], - 'offset_value': tool['offset_value'], - 'type': tool['type'], - 'tool_type': tool['tool_type'], - 'data': deepcopy(tool['data']), - 'solid_geometry': [] + 'tooldia': truncated_tooldia, + 'offset': tool['offset'], + 'offset_value': tool['offset_value'], + 'type': tool['type'], + 'tool_type': tool['tool_type'], + 'data': deepcopy(tool['data']), + 'solid_geometry': [] } }) self.cutout_tools[1]['data']['name'] = '_cutout' @@ -554,7 +556,6 @@ class CutOut(AppTool): return margin = float(self.ui.margin.get_value()) - gapsize = float(self.ui.gapsize.get_value()) try: gaps = self.ui.gaps.get_value() @@ -575,225 +576,274 @@ class CutOut(AppTool): "and after that perform Cutout.")) return - convex_box = self.ui.convex_box_cb.get_value() + def cutout_handler(geom, gapsize): + proc_geometry = [] + rest_geometry = [] + r_temp_geo = [] + initial_geo = deepcopy(geom) - gapsize = gapsize / 2 + (dia / 2) + # Get min and max data for each object as we just cut rectangles across X or Y + xxmin, yymin, xxmax, yymax = CutOut.recursive_bounds(geom) - def geo_init(geo_obj, app_obj): - solid_geo = [] - gaps_solid_geo = None + px = 0.5 * (xxmin + xxmax) + margin + py = 0.5 * (yymin + yymax) + margin + lenx = (xxmax - xxmin) + (margin * 2) + leny = (yymax - yymin) + (margin * 2) - if cutout_obj.kind == 'gerber': - if isinstance(cutout_obj.solid_geometry, list): - cutout_obj.solid_geometry = MultiPolygon(cutout_obj.solid_geometry) - - try: - if convex_box: - object_geo = cutout_obj.solid_geometry.convex_hull - else: - object_geo = cutout_obj.solid_geometry - except Exception as err: - log.debug("CutOut.on_freeform_cutout().geo_init() --> %s" % str(err)) - object_geo = cutout_obj.solid_geometry + if gaps == 'None': + pass else: - object_geo = cutout_obj.solid_geometry + if gaps == '8' or gaps == '2LR': + points = ( + xxmin - gapsize, # botleft_x + py - gapsize + leny / 4, # botleft_y + xxmax + gapsize, # topright_x + py + gapsize + leny / 4 # topright_y + ) + geom = self.subtract_poly_from_geo(geom, points) + r_temp_geo.append( + self.intersect_geo(initial_geo, box(points[0], points[1], points[2], points[3])) + ) - def cutout_handler(geom): - proc_geometry = [] - rest_geometry = [] - r_temp_geo = [] - initial_geo = deepcopy(geom) + points = ( + xxmin - gapsize, + py - gapsize - leny / 4, + xxmax + gapsize, + py + gapsize - leny / 4 + ) + geom = self.subtract_poly_from_geo(geom, points) + r_temp_geo.append( + self.intersect_geo(initial_geo, box(points[0], points[1], points[2], points[3])) + ) - # Get min and max data for each object as we just cut rectangles across X or Y - xxmin, yymin, xxmax, yymax = CutOut.recursive_bounds(geom) + if gaps == '8' or gaps == '2TB': + points = ( + px - gapsize + lenx / 4, + yymin - gapsize, + px + gapsize + lenx / 4, + yymax + gapsize + ) + geom = self.subtract_poly_from_geo(geom, points) + r_temp_geo.append( + self.intersect_geo(initial_geo, box(points[0], points[1], points[2], points[3])) + ) - px = 0.5 * (xxmin + xxmax) + margin - py = 0.5 * (yymin + yymax) + margin - lenx = (xxmax - xxmin) + (margin * 2) - leny = (yymax - yymin) + (margin * 2) + points = ( + px - gapsize - lenx / 4, + yymin - gapsize, + px + gapsize - lenx / 4, + yymax + gapsize + ) + geom = self.subtract_poly_from_geo(geom, points) + r_temp_geo.append( + self.intersect_geo(initial_geo, box(points[0], points[1], points[2], points[3])) + ) - if gaps == 'None': - pass - else: - if gaps == '8' or gaps == '2LR': - points = ( - xxmin - gapsize, # botleft_x - py - gapsize + leny / 4, # botleft_y - xxmax + gapsize, # topright_x - py + gapsize + leny / 4 # topright_y - ) - geom = self.subtract_poly_from_geo(geom, points) - r_temp_geo.append( - self.intersect_geo(initial_geo, box(points[0], points[1], points[2], points[3])) - ) + if gaps == '4' or gaps == 'LR': + points = ( + xxmin - gapsize, + py - gapsize, + xxmax + gapsize, + py + gapsize + ) + geom = self.subtract_poly_from_geo(geom, points) + r_temp_geo.append( + self.intersect_geo(initial_geo, box(points[0], points[1], points[2], points[3])) + ) - points = ( - xxmin - gapsize, - py - gapsize - leny / 4, - xxmax + gapsize, - py + gapsize - leny / 4 - ) - geom = self.subtract_poly_from_geo(geom, points) - r_temp_geo.append( - self.intersect_geo(initial_geo, box(points[0], points[1], points[2], points[3])) - ) + if gaps == '4' or gaps == 'TB': + points = ( + px - gapsize, + yymin - gapsize, + px + gapsize, + yymax + gapsize + ) + geom = self.subtract_poly_from_geo(geom, points) + r_temp_geo.append( + self.intersect_geo(initial_geo, box(points[0], points[1], points[2], points[3])) + ) - if gaps == '8' or gaps == '2TB': - points = ( - px - gapsize + lenx / 4, - yymin - gapsize, - px + gapsize + lenx / 4, - yymax + gapsize - ) - geom = self.subtract_poly_from_geo(geom, points) - r_temp_geo.append( - self.intersect_geo(initial_geo, box(points[0], points[1], points[2], points[3])) - ) - - points = ( - px - gapsize - lenx / 4, - yymin - gapsize, - px + gapsize - lenx / 4, - yymax + gapsize - ) - geom = self.subtract_poly_from_geo(geom, points) - r_temp_geo.append( - self.intersect_geo(initial_geo, box(points[0], points[1], points[2], points[3])) - ) - - if gaps == '4' or gaps == 'LR': - points = ( - xxmin - gapsize, - py - gapsize, - xxmax + gapsize, - py + gapsize - ) - geom = self.subtract_poly_from_geo(geom, points) - r_temp_geo.append( - self.intersect_geo(initial_geo, box(points[0], points[1], points[2], points[3])) - ) - - if gaps == '4' or gaps == 'TB': - points = ( - px - gapsize, - yymin - gapsize, - px + gapsize, - yymax + gapsize - ) - geom = self.subtract_poly_from_geo(geom, points) - r_temp_geo.append( - self.intersect_geo(initial_geo, box(points[0], points[1], points[2], points[3])) - ) - - try: - for g in geom: - if g and not g.is_empty: - proc_geometry.append(g) - except TypeError: - if geom and not geom.is_empty: - proc_geometry.append(geom) - - r_temp_geo = CutOut.flatten(r_temp_geo) - for g in r_temp_geo: + try: + for g in geom: if g and not g.is_empty: - rest_geometry.append(g) + proc_geometry.append(g) + except TypeError: + if geom and not geom.is_empty: + proc_geometry.append(geom) - return proc_geometry, rest_geometry + r_temp_geo = CutOut.flatten(r_temp_geo) + for g in r_temp_geo: + if g and not g.is_empty: + rest_geometry.append(g) - if kind == 'single': - object_geo = unary_union(object_geo) + return proc_geometry, rest_geometry + + with self.app.proc_container.new("Generating Cutout ..."): + outname = cutout_obj.options["name"] + "_cutout" + self.app.collection.promise(outname) + + outname_exc = cutout_obj.options["name"] + "_mouse_bites" + if self.ui.gaptype_radio.get_value() == 'mb': + self.app.collection.promise(outname_exc) + + def job_thread(app_obj): + solid_geo = [] + gaps_solid_geo = [] + mouse_bites_geo = [] + + convex_box = self.ui.convex_box_cb.get_value() + gapsize = self.ui.gapsize.get_value() + gapsize = gapsize / 2 + (dia / 2) - # for geo in object_geo: if cutout_obj.kind == 'gerber': - if isinstance(object_geo, MultiPolygon): - x0, y0, x1, y1 = object_geo.bounds - object_geo = box(x0, y0, x1, y1) - if margin >= 0: - geo_buf = object_geo.buffer(margin + abs(dia / 2)) - else: - geo_buf = object_geo.buffer(margin - abs(dia / 2)) + if isinstance(cutout_obj.solid_geometry, list): + cutout_obj.solid_geometry = MultiPolygon(cutout_obj.solid_geometry) - geo = geo_buf.exterior - else: - geo = object_geo - - solid_geo, rest_geo = cutout_handler(geom=geo) - if self.ui.gaptype_radio.get_value() == 'bt' and self.ui.thin_depth_entry.get_value() > 0: - gaps_solid_geo = rest_geo - else: - try: - __ = iter(object_geo) - except TypeError: - object_geo = [object_geo] - - for geom_struct in object_geo: - if cutout_obj.kind == 'gerber': - if margin >= 0: - geom_struct = (geom_struct.buffer(margin + abs(dia / 2))).exterior + try: + if convex_box: + object_geo = cutout_obj.solid_geometry.convex_hull else: - geom_struct_buff = geom_struct.buffer(-margin + abs(dia / 2)) - geom_struct = geom_struct_buff.interiors + object_geo = cutout_obj.solid_geometry + except Exception as err: + log.debug("CutOut.on_freeform_cutout().geo_init() --> %s" % str(err)) + object_geo = cutout_obj.solid_geometry + else: + object_geo = cutout_obj.solid_geometry - c_geo, r_geo = cutout_handler(geom=geom_struct) - solid_geo += c_geo + if kind == 'single': + object_geo = unary_union(object_geo) + + # for geo in object_geo: + if cutout_obj.kind == 'gerber': + if isinstance(object_geo, MultiPolygon): + x0, y0, x1, y1 = object_geo.bounds + object_geo = box(x0, y0, x1, y1) + if margin >= 0: + geo_buf = object_geo.buffer(margin + abs(dia / 2)) + else: + geo_buf = object_geo.buffer(margin - abs(dia / 2)) + + geo = geo_buf.exterior + else: + geo = object_geo + + solid_geo, rest_geo = cutout_handler(geom=geo, gapsize=gapsize) if self.ui.gaptype_radio.get_value() == 'bt' and self.ui.thin_depth_entry.get_value() > 0: - gaps_solid_geo += r_geo + gaps_solid_geo = rest_geo + if self.ui.gaptype_radio.get_value() == 'mb': + mouse_bites_geo = rest_geo + else: + try: + __ = iter(object_geo) + except TypeError: + object_geo = [object_geo] - if not solid_geo: - app_obj.inform.emit('[ERROR_NOTCL] %s' % _("Failed.")) - return "fail" + for geom_struct in object_geo: + if cutout_obj.kind == 'gerber': + if margin >= 0: + geom_struct = (geom_struct.buffer(margin + abs(dia / 2))).exterior + else: + geom_struct_buff = geom_struct.buffer(-margin + abs(dia / 2)) + geom_struct = geom_struct_buff.interiors - solid_geo = linemerge(solid_geo) - geo_obj.solid_geometry = deepcopy(solid_geo) + c_geo, r_geo = cutout_handler(geom=geom_struct, gapsize=gapsize) + solid_geo += c_geo + if self.ui.gaptype_radio.get_value() == 'bt' and self.ui.thin_depth_entry.get_value() > 0: + gaps_solid_geo += r_geo + if self.ui.gaptype_radio.get_value() == 'mb': + mouse_bites_geo += r_geo + if not solid_geo: + self.app.inform.emit('[ERROR_NOTCL] %s' % _("Failed.")) + return "fail" - xmin, ymin, xmax, ymax = CutOut.recursive_bounds(geo_obj.solid_geometry) - geo_obj.options['xmin'] = xmin - geo_obj.options['ymin'] = ymin - geo_obj.options['xmax'] = xmax - geo_obj.options['ymax'] = ymax - geo_obj.options['cnctooldia'] = str(dia) - geo_obj.options['cutz'] = self.ui.cutz_entry.get_value() - geo_obj.options['multidepth'] = self.ui.mpass_cb.get_value() - geo_obj.options['depthperpass'] = self.ui.maxdepth_entry.get_value() + solid_geo = linemerge(solid_geo) - geo_obj.multigeo = True + # list of Shapely Points to mark the drill points centers + holes = [] + print(mouse_bites_geo) - geo_obj.tools.update({ - 1: self.cut_tool_dict - }) - geo_obj.tools[1]['tooldia'] = str(dia) - geo_obj.tools[1]['solid_geometry'] = geo_obj.solid_geometry + def geo_init(geo_obj, app_object): + geo_obj.solid_geometry = deepcopy(solid_geo) - geo_obj.tools[1]['data']['name'] = outname - geo_obj.tools[1]['data']['cutz'] = self.ui.cutz_entry.get_value() - geo_obj.tools[1]['data']['multidepth'] = self.ui.mpass_cb.get_value() - geo_obj.tools[1]['data']['depthperpass'] = self.ui.maxdepth_entry.get_value() + xmin, ymin, xmax, ymax = CutOut.recursive_bounds(geo_obj.solid_geometry) + geo_obj.options['xmin'] = xmin + geo_obj.options['ymin'] = ymin + geo_obj.options['xmax'] = xmax + geo_obj.options['ymax'] = ymax + geo_obj.options['cnctooldia'] = str(dia) + geo_obj.options['cutz'] = self.ui.cutz_entry.get_value() + geo_obj.options['multidepth'] = self.ui.mpass_cb.get_value() + geo_obj.options['depthperpass'] = self.ui.maxdepth_entry.get_value() - if gaps_solid_geo is not None: - geo_obj.tools.update({ - 9999: self.cut_tool_dict - }) - geo_obj.tools[9999]['tooldia'] = str(dia) - geo_obj.tools[9999]['solid_geometry'] = gaps_solid_geo + geo_obj.multigeo = True - geo_obj.tools[9999]['data']['name'] = outname - geo_obj.tools[9999]['data']['cutz'] = self.ui.thin_depth_entry.get_value() - geo_obj.tools[9999]['data']['multidepth'] = self.ui.mpass_cb.get_value() - geo_obj.tools[9999]['data']['depthperpass'] = self.ui.maxdepth_entry.get_value() - # plot this tool in a different color - geo_obj.tools[9999]['data']['override_color'] = "#29a3a3fa" + geo_obj.tools.update({ + 1: self.cut_tool_dict + }) + geo_obj.tools[1]['tooldia'] = str(dia) + geo_obj.tools[1]['solid_geometry'] = geo_obj.solid_geometry - outname = cutout_obj.options["name"] + "_cutout" - ret = self.app.app_obj.new_object('geometry', outname, geo_init) + geo_obj.tools[1]['data']['name'] = outname + geo_obj.tools[1]['data']['cutz'] = self.ui.cutz_entry.get_value() + geo_obj.tools[1]['data']['multidepth'] = self.ui.mpass_cb.get_value() + geo_obj.tools[1]['data']['depthperpass'] = self.ui.maxdepth_entry.get_value() - if ret == 'fail': - self.app.inform.emit('[ERROR_NOTCL] %s' % _("Failed.")) - return + if gaps_solid_geo: + geo_obj.tools.update({ + 9999: self.cut_tool_dict + }) + geo_obj.tools[9999]['tooldia'] = str(dia) + geo_obj.tools[9999]['solid_geometry'] = gaps_solid_geo - # cutout_obj.plot(plot_tool=1) - self.app.inform.emit('[success] %s' % _("Any form CutOut operation finished.")) - # self.app.ui.notebook.setCurrentWidget(self.app.ui.project_tab) - self.app.should_we_save = True + geo_obj.tools[9999]['data']['name'] = outname + geo_obj.tools[9999]['data']['cutz'] = self.ui.thin_depth_entry.get_value() + geo_obj.tools[9999]['data']['multidepth'] = self.ui.mpass_cb.get_value() + geo_obj.tools[9999]['data']['depthperpass'] = self.ui.maxdepth_entry.get_value() + # plot this tool in a different color + geo_obj.tools[9999]['data']['override_color'] = "#29a3a3fa" + + def excellon_init(exc_obj, app_o): + if not holes: + return 'fail' + mb_dia = self.ui.mb_dia_entry.get_value() + + tools = {} + tools[1] = {} + tools[1]["tooldia"] = mb_dia + tools[1]['drills'] = holes + tools[1]['solid_geometry'] = [] + + exc_obj.tools = tools + exc_obj.create_geometry() + exc_obj.source_file = app_o.export_excellon(obj_name=exc_obj.options['name'], local_use=exc_obj, + filename=None, use_thread=False) + # calculate the bounds + xmin, ymin, xmax, ymax = CutOut.recursive_bounds(exc_obj.solid_geometry) + exc_obj.options['xmin'] = xmin + exc_obj.options['ymin'] = ymin + exc_obj.options['xmax'] = xmax + exc_obj.options['ymax'] = ymax + + try: + ret = app_obj.app_obj.new_object('geometry', outname, geo_init) + if ret == 'fail': + app_obj.inform.emit('[ERROR_NOTCL] %s' % _("Failed.")) + return + + if self.ui.gaptype_radio.get_value() == 'mb': + ret = app_obj.app_obj.new_object('excellon', outname_exc, excellon_init) + if ret == 'fail': + app_obj.inform.emit('[ERROR_NOTCL] %s' % _("Mouse bites failed.")) + return + + # cutout_obj.plot(plot_tool=1) + app_obj.inform.emit('[success] %s' % _("Any form CutOut operation finished.")) + # self.app.ui.notebook.setCurrentWidget(self.app.ui.project_tab) + app_obj.should_we_save = True + except Exception as ee: + log.debug(str(ee)) + + self.app.worker_task.emit({'fcn': job_thread, 'params': [self.app]}) def on_rectangular_cutout(self): log.debug("Cutout.on_rectangular_cutout() was launched ...") @@ -875,7 +925,7 @@ class CutOut(AppTool): xmin - gapsize, # botleft_x py - gapsize + leny / 4, # botleft_y xmax + gapsize, # topright_x - py + gapsize + leny / 4 # topright_y + py + gapsize + leny / 4 # topright_y ) geom = self.subtract_poly_from_geo(geom, points) points = ( @@ -1660,14 +1710,13 @@ class CutOut(AppTool): if second_geo.intersects(geo): results.append(second_geo.intersection(geo)) - return CutOut.flatten(results) + return CutOut.flatten(results) def reset_fields(self): self.ui.obj_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) class CutoutUI: - toolName = _("Cutout PCB") def __init__(self, layout, app): @@ -1898,9 +1947,9 @@ class CutoutUI: self.gaptype_radio = RadioSet( [ - {'label': _('Bridge'), 'value': 'b'}, - {'label': _('Thin'), 'value': 'bt'}, - {'label': "M-Bites", 'value': 'mb'} + {'label': _('Bridge'), 'value': 'b'}, + {'label': _('Thin'), 'value': 'bt'}, + {'label': "M-Bites", 'value': 'mb'} ], stretch=True ) diff --git a/appTools/ToolDblSided.py b/appTools/ToolDblSided.py index 4f6ffc9d..c077f762 100644 --- a/appTools/ToolDblSided.py +++ b/appTools/ToolDblSided.py @@ -2,7 +2,7 @@ from PyQt5 import QtWidgets, QtCore, QtGui from appTool import AppTool -from appGUI.GUIElements import RadioSet, FCDoubleSpinner, EvalEntry, FCEntry, FCButton, FCComboBox, FCCheckBox +from appGUI.GUIElements import RadioSet, FCDoubleSpinner, FCButton, FCComboBox, NumericalEvalTupleEntry from numpy import Inf @@ -156,27 +156,19 @@ class DblSidedTool(AppTool): try: px, py = self.ui.point_entry.get_value() except TypeError: - self.app.inform.emit('[WARNING_NOTCL] %s' % _("'Point' reference is selected and 'Point' coordinates " - "are missing. Add them and retry.")) + msg = '[WARNING_NOTCL] %s' % \ + _("'Point' reference is selected and 'Point' coordinates are missing. Add them and retry.") + self.app.inform.emit(msg) return else: selection_index = self.ui.box_combo.currentIndex() - model_index = self.app.collection.index(selection_index, 0, self.ui.gerber_object_combo.rootModelIndex()) + model_index = self.app.collection.index(selection_index, 0, self.ui.object_combo.rootModelIndex()) try: bb_obj = model_index.internalPointer().obj except AttributeError: - model_index = self.app.collection.index(selection_index, 0, self.ui.exc_object_combo.rootModelIndex()) - try: - bb_obj = model_index.internalPointer().obj - except AttributeError: - model_index = self.app.collection.index(selection_index, 0, - self.ui.geo_object_combo.rootModelIndex()) - try: - bb_obj = model_index.internalPointer().obj - except AttributeError: - self.app.inform.emit( - '[WARNING_NOTCL] %s' % _("There is no Box reference object loaded. Load one and retry.")) - return + msg = '[WARNING_NOTCL] %s' % _("There is no Box reference object loaded. Load one and retry.") + self.app.inform.emit(msg) + return xmin, ymin, xmax, ymax = bb_obj.bounds() px = 0.5 * (xmin + xmax) @@ -184,10 +176,10 @@ class DblSidedTool(AppTool): xscale, yscale = {"X": (1.0, -1.0), "Y": (-1.0, 1.0)}[axis] - dia = float(self.drill_dia.get_value()) + dia = self.ui.drill_dia.get_value() if dia == '': - self.app.inform.emit('[WARNING_NOTCL] %s' % - _("No value or wrong format in Drill Dia entry. Add it and retry.")) + msg = '[WARNING_NOTCL] %s' % _("No value or wrong format in Drill Dia entry. Add it and retry.") + self.app.inform.emit(msg) return tools = {} @@ -198,8 +190,8 @@ class DblSidedTool(AppTool): # holes = self.alignment_holes.get_value() holes = eval('[{}]'.format(self.ui.alignment_holes.text())) if not holes: - self.app.inform.emit('[WARNING_NOTCL] %s' % _("There are no Alignment Drill Coordinates to use. " - "Add them and retry.")) + msg = '[WARNING_NOTCL] %s' % _("There are no Alignment Drill Coordinates to use. Add them and retry.") + self.app.inform.emit(msg) return for hole in holes: @@ -629,7 +621,7 @@ class DsidedUI: grid0.addWidget(self.ymax_entry, 10, 1) # Center point value - self.center_entry = FCEntry() + self.center_entry = NumericalEvalTupleEntry(border_color='#0069A9') self.center_entry.setPlaceholderText(_("Center point coordinates")) self.center_btn = FCButton('%s:' % _("Centroid")) @@ -714,7 +706,7 @@ class DsidedUI: grid1.addWidget(self.axis_location, 4, 1, 1, 2) # ## Point/Box - self.point_entry = EvalEntry() + self.point_entry = NumericalEvalTupleEntry(border_color='#0069A9') self.point_entry.setPlaceholderText(_("Point coordinates")) # Add a reference @@ -876,7 +868,7 @@ class DsidedUI: "It can be modified in the Mirror Parameters -> Reference section") ) - self.align_ref_label_val = EvalEntry() + self.align_ref_label_val = NumericalEvalTupleEntry(border_color='#0069A9') self.align_ref_label_val.setToolTip( _("The reference point used to create the second alignment drill\n" "from the first alignment drill, by doing mirror.\n" @@ -900,7 +892,7 @@ class DsidedUI: "- one drill in mirror position over the axis selected above in the 'Align Axis'.") ) - self.alignment_holes = EvalEntry() + self.alignment_holes = NumericalEvalTupleEntry(border_color='#0069A9') self.alignment_holes.setPlaceholderText(_("Drill coordinates")) grid5.addWidget(self.ah_label, 0, 0, 1, 2) diff --git a/locale/de/LC_MESSAGES/strings.mo b/locale/de/LC_MESSAGES/strings.mo index 2c174c93f7d2a4fd958eba50050463d4db40e7b1..4cf481fcf738411b568c86158b13decc6d05c4cf 100644 GIT binary patch delta 67718 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 z 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 delta 79144 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 will ensure that the non-copper clearing is always complete.\n" @@ -847,31 +993,28 @@ msgstr "" "Wenn dies nicht erfolgreich ist, schlägt auch das Löschen ohne Kupfer fehl.\n" "- Klären-> das reguläre Nicht-Kupfer-löschen." -#: appDatabase.py:1427 appEditors/AppGerberEditor.py:2749 -#: appGUI/GUIElements.py:2765 appTools/ToolNCC.py:350 +#: appDatabase.py:1513 appEditors/AppGerberEditor.py:2749 +#: appGUI/GUIElements.py:3011 appTools/ToolNCC.py:3945 msgid "Clear" msgstr "Klären" -#: appDatabase.py:1428 appTools/ToolNCC.py:351 -msgid "Isolation" -msgstr "Isolation" - -#: appDatabase.py:1436 appDatabase.py:1682 appGUI/ObjectUI.py:646 +#: appDatabase.py:1522 appDatabase.py:1768 #: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:62 #: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:56 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:182 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:137 -#: appTools/ToolIsolation.py:351 appTools/ToolNCC.py:359 +#: appTools/ToolIsolation.py:3159 appTools/ToolMilling.py:1760 +#: appTools/ToolNCC.py:3954 msgid "Milling Type" msgstr "Fräsart" -#: appDatabase.py:1438 appDatabase.py:1446 appDatabase.py:1684 -#: appDatabase.py:1692 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:184 +#: appDatabase.py:1524 appDatabase.py:1532 appDatabase.py:1770 +#: appDatabase.py:1778 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:184 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:192 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:139 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:147 -#: appTools/ToolIsolation.py:353 appTools/ToolIsolation.py:361 -#: appTools/ToolNCC.py:361 appTools/ToolNCC.py:369 +#: appTools/ToolIsolation.py:3161 appTools/ToolIsolation.py:3169 +#: appTools/ToolNCC.py:3956 appTools/ToolNCC.py:3964 msgid "" "Milling type when the selected tool is of type: 'iso_op':\n" "- climb / best for precision milling and to reduce tool usage\n" @@ -882,36 +1025,37 @@ msgstr "" "Werkzeugverbrauchs\n" "- konventionell / nützlich, wenn kein Spielausgleich vorhanden ist" -#: appDatabase.py:1443 appDatabase.py:1689 +#: appDatabase.py:1529 appDatabase.py:1775 #: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:62 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:189 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:144 -#: appTools/ToolIsolation.py:358 appTools/ToolNCC.py:366 +#: appTools/ToolIsolation.py:3166 appTools/ToolNCC.py:3961 msgid "Climb" msgstr "Steigen" # Cannot translate without context. -#: appDatabase.py:1444 appDatabase.py:1690 +#: appDatabase.py:1530 appDatabase.py:1776 #: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:63 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:190 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:145 -#: appTools/ToolIsolation.py:359 appTools/ToolNCC.py:367 +#: appTools/ToolIsolation.py:3167 appTools/ToolNCC.py:3962 msgid "Conventional" msgstr "Konventionell" -#: appDatabase.py:1456 appDatabase.py:1565 appDatabase.py:1667 -#: appEditors/AppGeoEditor.py:450 +#: appDatabase.py:1542 appDatabase.py:1651 appDatabase.py:1753 +#: appDatabase.py:2027 appEditors/AppGeoEditor.py:450 appGUI/ObjectUI.py:1552 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:250 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:167 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:182 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:163 -#: appTools/ToolIsolation.py:336 appTools/ToolNCC.py:382 -#: appTools/ToolPaint.py:328 +#: appTools/ToolDrilling.py:2298 appTools/ToolIsolation.py:3144 +#: appTools/ToolNCC.py:3977 appTools/ToolPaint.py:2953 msgid "Overlap" msgstr "Überlappung" # Double -#: appDatabase.py:1458 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:184 -#: appTools/ToolNCC.py:384 +#: appDatabase.py:1544 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:184 +#: appTools/ToolNCC.py:3979 msgid "" "How much (percentage) of the tool width to overlap each tool pass.\n" "Adjust the value starting with lower values\n" @@ -930,7 +1074,7 @@ msgstr "" "Höhere Werte = langsame Verarbeitung und langsame Ausführung auf CNC\n" "wegen zu vieler Wege." -#: appDatabase.py:1477 appDatabase.py:1586 appEditors/AppGeoEditor.py:470 +#: appDatabase.py:1563 appDatabase.py:2071 appEditors/AppGeoEditor.py:470 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:72 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:229 #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:59 @@ -940,37 +1084,39 @@ msgstr "" #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:115 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:202 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:183 -#: appTools/ToolCopperThieving.py:115 appTools/ToolCopperThieving.py:366 -#: appTools/ToolCorners.py:149 appTools/ToolCutOut.py:190 -#: appTools/ToolFiducials.py:175 appTools/ToolInvertGerber.py:91 -#: appTools/ToolInvertGerber.py:99 appTools/ToolNCC.py:403 -#: appTools/ToolPaint.py:349 +#: appTools/ToolCopperThieving.py:1204 appTools/ToolCopperThieving.py:1455 +#: appTools/ToolCorners.py:411 appTools/ToolCutOut.py:1915 +#: appTools/ToolFiducials.py:786 appTools/ToolInvertGerber.py:234 +#: appTools/ToolInvertGerber.py:242 appTools/ToolNCC.py:4021 +#: appTools/ToolNCC.py:4124 msgid "Margin" msgstr "Marge" -#: appDatabase.py:1479 +#: appDatabase.py:1565 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:74 #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:61 #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:125 #: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:68 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:204 -#: appTools/ToolCopperThieving.py:117 appTools/ToolCorners.py:151 -#: appTools/ToolFiducials.py:177 appTools/ToolNCC.py:405 +#: appTools/ToolCopperThieving.py:1206 appTools/ToolCorners.py:413 +#: appTools/ToolFiducials.py:788 appTools/ToolNCC.py:4023 +#: appTools/ToolNCC.py:4126 msgid "Bounding box margin." msgstr "Begrenzungsrahmenrand." -#: appDatabase.py:1490 appDatabase.py:1601 appEditors/AppGeoEditor.py:484 +#: appDatabase.py:1576 appDatabase.py:1687 appEditors/AppGeoEditor.py:484 +#: appGUI/ObjectUI.py:1567 #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:105 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:106 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:215 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:198 -#: appTools/ToolExtractDrills.py:128 appTools/ToolNCC.py:416 -#: appTools/ToolPaint.py:364 appTools/ToolPunchGerber.py:139 +#: appTools/ToolExtractDrills.py:520 appTools/ToolNCC.py:3998 +#: appTools/ToolPaint.py:2989 appTools/ToolPunchGerber.py:793 msgid "Method" msgstr "Methode" -#: appDatabase.py:1492 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:217 -#: appTools/ToolNCC.py:418 +#: appDatabase.py:1578 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:217 +#: appTools/ToolNCC.py:4000 msgid "" "Algorithm for copper clearing:\n" "- Standard: Fixed step inwards.\n" @@ -982,57 +1128,56 @@ msgstr "" "- Samenbasiert: Aus dem Samen heraus.\n" "- Linienbasiert: Parallele Linien." -#: appDatabase.py:1500 appDatabase.py:1615 appEditors/AppGeoEditor.py:498 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 +#: appDatabase.py:1586 appDatabase.py:1701 appEditors/AppGeoEditor.py:498 +#: appGUI/ObjectUI.py:1577 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:217 -#: appTools/ToolNCC.py:431 appTools/ToolNCC.py:2232 appTools/ToolNCC.py:2764 -#: appTools/ToolNCC.py:2796 appTools/ToolPaint.py:389 -#: appTools/ToolPaint.py:1859 tclCommands/TclCommandCopperClear.py:126 +#: appTools/ToolNCC.py:1915 appTools/ToolNCC.py:4013 appTools/ToolPaint.py:1455 +#: appTools/ToolPaint.py:3014 tclCommands/TclCommandCopperClear.py:126 #: tclCommands/TclCommandCopperClear.py:134 tclCommands/TclCommandPaint.py:125 msgid "Standard" msgstr "Standard" -#: appDatabase.py:1500 appDatabase.py:1615 appEditors/AppGeoEditor.py:498 -#: appEditors/AppGeoEditor.py:568 appEditors/AppGeoEditor.py:5091 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 +#: appDatabase.py:1586 appDatabase.py:1701 appEditors/AppGeoEditor.py:498 +#: appEditors/AppGeoEditor.py:568 appEditors/AppGeoEditor.py:5109 +#: appGUI/ObjectUI.py:1577 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:217 -#: appTools/ToolNCC.py:431 appTools/ToolNCC.py:2243 appTools/ToolNCC.py:2770 -#: appTools/ToolNCC.py:2802 appTools/ToolPaint.py:389 -#: appTools/ToolPaint.py:1873 defaults.py:416 defaults.py:448 +#: appTools/ToolNCC.py:1926 appTools/ToolNCC.py:4013 appTools/ToolPaint.py:1469 +#: appTools/ToolPaint.py:3014 defaults.py:462 defaults.py:499 #: tclCommands/TclCommandCopperClear.py:128 #: tclCommands/TclCommandCopperClear.py:136 tclCommands/TclCommandPaint.py:127 msgid "Seed" msgstr "Keim" -#: appDatabase.py:1500 appDatabase.py:1615 appEditors/AppGeoEditor.py:498 -#: appEditors/AppGeoEditor.py:5095 +#: appDatabase.py:1586 appDatabase.py:1701 appEditors/AppGeoEditor.py:498 +#: appEditors/AppGeoEditor.py:5113 appGUI/ObjectUI.py:1577 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:217 -#: appTools/ToolNCC.py:431 appTools/ToolNCC.py:2254 appTools/ToolPaint.py:389 -#: appTools/ToolPaint.py:698 appTools/ToolPaint.py:1887 +#: appTools/ToolNCC.py:1937 appTools/ToolNCC.py:4013 appTools/ToolPaint.py:160 +#: appTools/ToolPaint.py:1483 appTools/ToolPaint.py:3014 #: tclCommands/TclCommandCopperClear.py:130 tclCommands/TclCommandPaint.py:129 msgid "Lines" msgstr "Linien" -#: appDatabase.py:1500 appDatabase.py:1615 +#: appDatabase.py:1586 appDatabase.py:1701 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:217 -#: appTools/ToolNCC.py:431 appTools/ToolNCC.py:2265 appTools/ToolPaint.py:389 -#: appTools/ToolPaint.py:2052 tclCommands/TclCommandPaint.py:133 +#: appTools/ToolNCC.py:1948 appTools/ToolNCC.py:4013 appTools/ToolPaint.py:1648 +#: appTools/ToolPaint.py:3014 tclCommands/TclCommandPaint.py:133 msgid "Combo" msgstr "Combo" -#: appDatabase.py:1508 appDatabase.py:1626 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:237 +#: appDatabase.py:1594 appDatabase.py:1712 appGUI/ObjectUI.py:2070 +#: appGUI/ObjectUI.py:2093 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:237 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:224 -#: appTools/ToolNCC.py:439 appTools/ToolPaint.py:400 +#: appObjects/FlatCAMCNCJob.py:1157 appObjects/FlatCAMCNCJob.py:1179 +#: appTools/ToolNCC.py:4034 appTools/ToolNCC.py:4137 appTools/ToolPaint.py:3025 msgid "Connect" msgstr "Verbinden" -#: appDatabase.py:1512 appDatabase.py:1629 appEditors/AppGeoEditor.py:507 +#: appDatabase.py:1598 appDatabase.py:1715 appEditors/AppGeoEditor.py:507 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:239 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:226 -#: appTools/ToolNCC.py:443 appTools/ToolPaint.py:403 +#: appTools/ToolNCC.py:4038 appTools/ToolNCC.py:4139 appTools/ToolPaint.py:3028 msgid "" "Draw lines between resulting\n" "segments to minimize tool lifts." @@ -1040,17 +1185,17 @@ msgstr "" "Zeichnen Sie Linien zwischen den Ergebnissen\n" "Segmente, um Werkzeuglifte zu minimieren." -#: appDatabase.py:1518 appDatabase.py:1633 +#: appDatabase.py:1604 appDatabase.py:1719 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:246 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:232 -#: appTools/ToolNCC.py:449 appTools/ToolPaint.py:407 +#: appTools/ToolNCC.py:4044 appTools/ToolNCC.py:4145 appTools/ToolPaint.py:3032 msgid "Contour" msgstr "Kontur" -#: appDatabase.py:1522 appDatabase.py:1636 appEditors/AppGeoEditor.py:517 +#: appDatabase.py:1608 appDatabase.py:1722 appEditors/AppGeoEditor.py:517 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:248 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:234 -#: appTools/ToolNCC.py:453 appTools/ToolPaint.py:410 +#: appTools/ToolNCC.py:4048 appTools/ToolNCC.py:4147 appTools/ToolPaint.py:3035 msgid "" "Cut around the perimeter of the polygon\n" "to trim rough edges." @@ -1058,18 +1203,19 @@ msgstr "" "Schneiden Sie um den Umfang des Polygons herum\n" "Ecken und Kanten schneiden." -#: appDatabase.py:1528 appEditors/AppGeoEditor.py:611 -#: appEditors/AppGerberEditor.py:5304 appGUI/ObjectUI.py:143 -#: appGUI/ObjectUI.py:1394 appGUI/ObjectUI.py:2256 +#: appDatabase.py:1614 appDatabase.py:1672 appEditors/AppGeoEditor.py:611 +#: appEditors/AppGerberEditor.py:5321 appEditors/appGCodeEditor.py:692 +#: appGUI/ObjectUI.py:143 appGUI/ObjectUI.py:858 appGUI/ObjectUI.py:1830 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:255 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:183 -#: appTools/ToolEtchCompensation.py:199 appTools/ToolEtchCompensation.py:207 -#: appTools/ToolNCC.py:459 appTools/ToolTransform.py:31 +#: appTools/ToolEtchCompensation.py:417 appTools/ToolEtchCompensation.py:425 +#: appTools/ToolNCC.py:4054 appTools/ToolNCC.py:4153 appTools/ToolPaint.py:2974 +#: appTools/ToolPaint.py:3081 appTools/ToolTransform.py:517 msgid "Offset" msgstr "Versatz" -#: appDatabase.py:1532 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:257 -#: appTools/ToolNCC.py:463 +#: appDatabase.py:1618 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:257 +#: appTools/ToolNCC.py:4058 appTools/ToolNCC.py:4155 msgid "" "If used, it will add an offset to the copper features.\n" "The copper clearing will finish to a distance\n" @@ -1082,9 +1228,9 @@ msgstr "" "Der Wert kann zwischen 0 und 10 FlatCAM-Einheiten liegen." # 3rd Time -#: appDatabase.py:1567 appEditors/AppGeoEditor.py:452 +#: appDatabase.py:1653 appEditors/AppGeoEditor.py:452 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:165 -#: appTools/ToolPaint.py:330 +#: appTools/ToolPaint.py:2955 msgid "" "How much (percentage) of the tool width to overlap each tool pass.\n" "Adjust the value starting with lower values\n" @@ -1104,9 +1250,9 @@ msgstr "" "Höhere Werte = langsame Verarbeitung und langsame Ausführung auf CNC\n" "wegen zu vieler Wege." -#: appDatabase.py:1588 appEditors/AppGeoEditor.py:472 +#: appDatabase.py:1674 appEditors/AppGeoEditor.py:472 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:185 -#: appTools/ToolPaint.py:351 +#: appTools/ToolPaint.py:2976 appTools/ToolPaint.py:3083 msgid "" "Distance by which to avoid\n" "the edges of the polygon to\n" @@ -1116,8 +1262,8 @@ msgstr "" "die Kanten des Polygons bis\n" "gemalt werden." -#: appDatabase.py:1603 appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:200 -#: appTools/ToolPaint.py:366 +#: appDatabase.py:1689 appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:200 +#: appTools/ToolPaint.py:2991 msgid "" "Algorithm for painting:\n" "- Standard: Fixed step inwards.\n" @@ -1138,21 +1284,21 @@ msgstr "" "ausgewählt\n" "in der angegebenen Reihenfolge." -#: appDatabase.py:1615 appDatabase.py:1617 +#: appDatabase.py:1701 appDatabase.py:1703 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:217 -#: appTools/ToolPaint.py:389 appTools/ToolPaint.py:391 -#: appTools/ToolPaint.py:692 appTools/ToolPaint.py:697 -#: appTools/ToolPaint.py:1901 tclCommands/TclCommandPaint.py:131 +#: appTools/ToolPaint.py:154 appTools/ToolPaint.py:159 +#: appTools/ToolPaint.py:1497 appTools/ToolPaint.py:3014 +#: appTools/ToolPaint.py:3016 tclCommands/TclCommandPaint.py:131 msgid "Laser_lines" msgstr "LaserlinienLinien" -#: appDatabase.py:1654 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:154 -#: appTools/ToolIsolation.py:323 +#: appDatabase.py:1740 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:154 +#: appTools/ToolIsolation.py:3131 msgid "Passes" msgstr "Geht herum" -#: appDatabase.py:1656 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:156 -#: appTools/ToolIsolation.py:325 +#: appDatabase.py:1742 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:156 +#: appTools/ToolIsolation.py:3133 msgid "" "Width of the isolation gap in\n" "number (integer) of tool widths." @@ -1160,24 +1306,25 @@ msgstr "" "Breite der Isolationslücke in\n" "Anzahl (Ganzzahl) der Werkzeugbreiten." -#: appDatabase.py:1669 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:169 -#: appTools/ToolIsolation.py:338 +#: appDatabase.py:1755 appGUI/ObjectUI.py:1554 +#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:169 +#: appTools/ToolIsolation.py:3146 msgid "How much (percentage) of the tool width to overlap each tool pass." msgstr "" "Wie viel (Prozent) der Werkzeugbreite, um jeden Werkzeugdurchlauf zu " "überlappen." -#: appDatabase.py:1702 appGUI/ObjectUI.py:236 +#: appDatabase.py:1788 appGUI/ObjectUI.py:234 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:201 -#: appTools/ToolIsolation.py:371 +#: appTools/ToolIsolation.py:3179 msgid "Follow" msgstr "Folgen" -#: appDatabase.py:1704 appDatabase.py:1710 appGUI/ObjectUI.py:237 +#: appDatabase.py:1790 appDatabase.py:1796 appGUI/ObjectUI.py:235 #: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:45 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:203 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:209 -#: appTools/ToolIsolation.py:373 appTools/ToolIsolation.py:379 +#: appTools/ToolIsolation.py:3181 appTools/ToolIsolation.py:3187 msgid "" "Generate a 'Follow' geometry.\n" "This means that it will cut through\n" @@ -1187,13 +1334,13 @@ msgstr "" "Dies bedeutet, dass es durchschneiden wird\n" "die Mitte der Spur." -#: appDatabase.py:1719 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:218 -#: appTools/ToolIsolation.py:388 +#: appDatabase.py:1805 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:218 +#: appTools/ToolIsolation.py:3196 msgid "Isolation Type" msgstr "Isolierungsart" -#: appDatabase.py:1721 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:220 -#: appTools/ToolIsolation.py:390 +#: appDatabase.py:1807 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:220 +#: appTools/ToolIsolation.py:3198 msgid "" "Choose how the isolation will be executed:\n" "- 'Full' -> complete isolation of polygons\n" @@ -1212,35 +1359,326 @@ msgstr "" "wohingegen \"Int\" Isolation nur möglich ist, wenn es ein Loch \n" "innerhalb des Polygons gibt (also z.B. ein Torus)" -#: appDatabase.py:1730 appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:75 +#: appDatabase.py:1816 appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:72 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:229 -#: appTools/ToolIsolation.py:399 +#: appTools/ToolIsolation.py:3207 msgid "Full" msgstr "Voll" -#: appDatabase.py:1731 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:230 -#: appTools/ToolIsolation.py:400 +#: appDatabase.py:1817 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:230 +#: appTools/ToolIsolation.py:3208 msgid "Ext" msgstr "Ausserhalb" -#: appDatabase.py:1732 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:231 -#: appTools/ToolIsolation.py:401 +#: appDatabase.py:1818 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:231 +#: appTools/ToolIsolation.py:3209 msgid "Int" msgstr "Innerhalb" -#: appDatabase.py:1755 +#: appDatabase.py:1836 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:59 +#: appTools/ToolDrilling.py:2131 appTools/ToolMilling.py:1795 +msgid "" +"Drill depth (negative)\n" +"below the copper surface." +msgstr "" +"Bohrtiefe (negativ)\n" +"unter der Kupferoberfläche." + +#: appDatabase.py:1855 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:283 +#: appTools/ToolDrilling.py:2274 appTools/ToolMilling.py:1980 +msgid "Offset Z" +msgstr "Versatz Z" + +#: appDatabase.py:1857 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:285 +#: appTools/ToolDrilling.py:2276 appTools/ToolMilling.py:1982 +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 "" +"Einige Bohrer (die größeren) müssen tiefer bohren\n" +"um den gewünschten Austrittslochdurchmesser aufgrund der Spitzenform zu " +"erzeugen.\n" +"Der Wert hier kann den Parameter Cut Z ausgleichen." + +#: appDatabase.py:1874 appGUI/ObjectUI.py:1112 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:72 +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:82 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:80 +#: appTools/ToolCutOut.py:1886 appTools/ToolDrilling.py:2153 +#: appTools/ToolMilling.py:1817 +msgid "" +"Use multiple passes to limit\n" +"the cut depth in each pass. Will\n" +"cut multiple times until Cut Z is\n" +"reached." +msgstr "" +"Verwenden Sie zum Begrenzen mehrere Durchgänge\n" +"die Schnitttiefe in jedem Durchgang. Wille\n" +"mehrmals schneiden, bis Schnitttiefe Z\n" +"erreicht ist." + +#: appDatabase.py:1896 appGUI/ObjectUI.py:1126 +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:94 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:92 +#: appTools/ToolCutOut.py:1900 appTools/ToolDrilling.py:2166 +#: appTools/ToolMilling.py:1830 +msgid "Depth of each pass (positive)." +msgstr "Tiefe jedes Durchgangs (positiv)." + +#: appDatabase.py:1905 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:100 +#: appTools/ToolDrilling.py:2177 appTools/ToolMilling.py:1841 +msgid "" +"Tool height when travelling\n" +"across the XY plane." +msgstr "" +"Werkzeughöhe auf Reisen\n" +"über die XY-Ebene." + +#: appDatabase.py:1931 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:173 +#: appTools/ToolDrilling.py:2198 appTools/ToolMilling.py:1877 +msgid "" +"Tool speed while drilling\n" +"(in units per minute).\n" +"So called 'Plunge' feedrate.\n" +"This is for linear move G01." +msgstr "" +"Werkzeuggeschwindigkeit beim Bohren\n" +"(in Einheiten pro Minute).\n" +"Sogenannter Eintauchvorschub.\n" +"Dies ist für die lineare Bewegung G01." + +#: appDatabase.py:1946 appGUI/ObjectUI.py:1183 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:67 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:317 +#: appTools/ToolDrilling.py:2213 appTools/ToolMilling.py:1892 +msgid "Feedrate Rapids" +msgstr "Vorschubgeschwindigkeit" + +#: appDatabase.py:1948 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:319 +#: appTools/ToolDrilling.py:2215 appTools/ToolMilling.py:1894 +msgid "" +"Tool speed while drilling\n" +"(in units per minute).\n" +"This is for the rapid move G00.\n" +"It is useful only for Marlin,\n" +"ignore for any other cases." +msgstr "" +"Werkzeuggeschwindigkeit beim Bohren\n" +"(in Einheiten pro Minute).\n" +"Dies ist für die schnelle Bewegung G00.\n" +"Es ist nur für Marlin nützlich,\n" +"für andere Fälle ignorieren." + +#: appDatabase.py:1969 appGUI/ObjectUI.py:1226 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:217 +#: appObjects/FlatCAMGeometry.py:1761 appTools/ToolDrilling.py:1296 +#: appTools/ToolDrilling.py:2235 appTools/ToolMilling.py:1307 +#: appTools/ToolMilling.py:1942 +msgid "Spindle speed" +msgstr "Spulengeschwindigkeit" + +#: appDatabase.py:1971 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:188 +#: appTools/ToolDrilling.py:2237 appTools/ToolMilling.py:1944 +msgid "" +"Speed of the spindle\n" +"in RPM (optional)" +msgstr "" +"Geschwindigkeit der Spindel\n" +"in RPM (optional)" + +#: appDatabase.py:2016 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:243 +#: appTools/ToolDrilling.py:2290 +#, fuzzy +#| msgid "Mill Slots" +msgid "Drill slots" +msgstr "Mühlenschlitze" + +#: appDatabase.py:2018 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:245 +#: appTools/ToolDrilling.py:2292 +msgid "If the selected tool has slots then they will be drilled." +msgstr "" + +#: appDatabase.py:2029 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:252 +#: appTools/ToolDrilling.py:2300 +#, fuzzy +#| msgid "How much (percentage) of the tool width to overlap each tool pass." +msgid "" +"How much (percentage) of the tool diameter to overlap previous drill hole." +msgstr "" +"Wie viel (Prozent) der Werkzeugbreite, um jeden Werkzeugdurchlauf zu " +"überlappen." + +#: appDatabase.py:2043 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:264 +#: appTools/ToolDrilling.py:2314 +msgid "Last drill" +msgstr "" + +#: appDatabase.py:2045 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:266 +#: appTools/ToolDrilling.py:2316 +msgid "" +"If the slot length is not completely covered by drill holes,\n" +"add a drill hole on the slot end point." +msgstr "" + +#: appDatabase.py:2073 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:117 +#: appTools/ToolCutOut.py:1917 +msgid "" +"Margin over bounds. A positive value here\n" +"will make the cutout of the PCB further from\n" +"the actual PCB border" +msgstr "" +"Marge über Grenzen. Ein positiver Wert hier\n" +"macht den Ausschnitt der Leiterplatte weiter aus\n" +"die tatsächliche PCB-Grenze" + +#: appDatabase.py:2085 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:131 +#: appTools/ToolCutOut.py:1925 +msgid "Gap size" +msgstr "Spaltgröße" + +#: appDatabase.py:2087 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:133 +#: appTools/ToolCutOut.py:1927 +msgid "" +"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)." +msgstr "" +"Die Größe der Brückenlücken im Ausschnitt\n" +"verwendet, um die Platine verbunden zu halten\n" +"das umgebende Material (das eine\n" +"von denen die Leiterplatte ausgeschnitten ist)." + +#: appDatabase.py:2096 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:148 +#: appTools/ToolCutOut.py:1940 +#, fuzzy +#| msgid "Image type" +msgid "Gap type" +msgstr "Bildtyp" + +#: appDatabase.py:2098 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:150 +#: appTools/ToolCutOut.py:1942 +msgid "" +"The type of gap:\n" +"- Bridge -> the cutout will be interrupted by bridges\n" +"- Thin -> same as 'bridge' but it will be thinner by partially milling the " +"gap\n" +"- M-Bites -> 'Mouse Bites' - same as 'bridge' but covered with drill holes" +msgstr "" + +#: appDatabase.py:2106 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:158 +#: appTools/ToolCutOut.py:1950 +msgid "Bridge" +msgstr "" + +#: appDatabase.py:2107 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:159 +#: appTools/ToolCutOut.py:1951 +msgid "Thin" +msgstr "" + +#: appDatabase.py:2118 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:169 +#: appTools/ToolCutOut.py:1961 +#, fuzzy +#| msgid "MultiDepth" +msgid "Depth" +msgstr "Mehrfache Durchgänge" + +#: appDatabase.py:2120 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:171 +#: appTools/ToolCutOut.py:1963 +#, fuzzy +#| msgid "" +#| "The width of the travel lines to be\n" +#| "rendered in the plot." +msgid "" +"The depth until the milling is done\n" +"in order to thin the gaps." +msgstr "" +"Die Breite der Fahrlinien soll sein\n" +"in der Handlung gerendert." + +#: appDatabase.py:2137 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:43 +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:186 +#: appTools/ToolCalculators.py:249 appTools/ToolCutOut.py:1978 +msgid "Tool Diameter" +msgstr "Werkzeugdurchm" + +#: appDatabase.py:2139 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:188 +#: appTools/ToolCutOut.py:1980 +msgid "The drill hole diameter when doing mpuse bites." +msgstr "" + +#: appDatabase.py:2150 +#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:151 +#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:180 +#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:209 +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:198 +#: appTools/ToolCopperThieving.py:1327 appTools/ToolCopperThieving.py:1367 +#: appTools/ToolCopperThieving.py:1407 appTools/ToolCutOut.py:1990 +msgid "Spacing" +msgstr "Abstand" + +#: appDatabase.py:2152 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:200 +#: appTools/ToolCutOut.py:1992 +msgid "The spacing between drill holes when doing mouse bites." +msgstr "" + +#: appDatabase.py:2171 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:233 +#: appTools/ToolCutOut.py:1793 +msgid "Convex Shape" +msgstr "Konvexe Form" + +#: appDatabase.py:2174 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:235 +#: appTools/ToolCutOut.py:1795 appTools/ToolCutOut.py:1800 +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." + +#: appDatabase.py:2182 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:209 +#: appTools/ToolCutOut.py:2021 +msgid "Gaps" +msgstr "Spalt" + +#: appDatabase.py:2184 appTools/ToolCutOut.py:2023 +msgid "" +"Number of gaps used for the Automatic cutout.\n" +"There can be maximum 8 bridges/gaps.\n" +"The choices are:\n" +"- None - no gaps\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" +msgstr "" +"Anzahl der Lücken, die für den automatischen Ausschnitt verwendet werden.\n" +"Es können maximal 8 Brücken / Lücken vorhanden sein.\n" +"Die Wahlmöglichkeiten sind:\n" +"- Keine - keine Lücken\n" +"- lr \t- links + rechts\n" +"- tb \t- oben + unten\n" +"- 4 \t- links + rechts + oben + unten\n" +"- 2lr \t- 2 * links + 2 * rechts\n" +"- 2 tb \t- 2 * oben + 2 * unten\n" +"- 8 \t- 2 * links + 2 * rechts + 2 * oben + 2 * unten" + +#: appDatabase.py:2221 msgid "Add Tool in DB" msgstr "Werkzeug in DB hinzufügen" -#: appDatabase.py:1789 +#: appDatabase.py:2259 msgid "Save DB" msgstr "Speichern DB" -#: appDatabase.py:1791 +#: appDatabase.py:2262 msgid "Save the Tools Database information's." msgstr "Speichern Sie die Tools-Datenbankinformationen." -#: appDatabase.py:1797 +#: appDatabase.py:2268 msgid "" "Insert a new tool in the Tools Table of the\n" "object/application tool after selecting a tool\n" @@ -1250,53 +1688,140 @@ msgstr "" "Objekt / Anwendungswerkzeug nach Auswahl eines Werkzeugs\n" "in der Werkzeugdatenbank." -#: appEditors/AppExcEditor.py:50 appEditors/AppExcEditor.py:74 -#: appEditors/AppExcEditor.py:168 appEditors/AppExcEditor.py:385 +#: appDatabase.py:2294 appDatabase.py:2305 appEditors/AppExcEditor.py:4215 +#: appEditors/AppExcEditor.py:4226 appEditors/appGCodeEditor.py:775 +#: appEditors/appGCodeEditor.py:786 appGUI/ObjectUI.py:163 +#: appGUI/ObjectUI.py:174 appTool.py:280 appTool.py:291 +#: appTools/ToolAlignObjects.py:516 appTools/ToolAlignObjects.py:527 +#: appTools/ToolCalculators.py:390 appTools/ToolCalculators.py:401 +#: appTools/ToolCalibration.py:1395 appTools/ToolCalibration.py:1406 +#: appTools/ToolCopperThieving.py:1595 appTools/ToolCopperThieving.py:1606 +#: appTools/ToolCorners.py:462 appTools/ToolCorners.py:473 +#: appTools/ToolCutOut.py:2195 appTools/ToolCutOut.py:2206 +#: appTools/ToolDblSided.py:965 appTools/ToolDblSided.py:976 +#: appTools/ToolDistance.py:659 appTools/ToolDistance.py:670 +#: appTools/ToolDistanceMin.py:324 appTools/ToolDistanceMin.py:335 +#: appTools/ToolDrilling.py:2652 appTools/ToolDrilling.py:2663 +#: appTools/ToolEtchCompensation.py:476 appTools/ToolEtchCompensation.py:487 +#: appTools/ToolExtractDrills.py:732 appTools/ToolExtractDrills.py:743 +#: appTools/ToolFiducials.py:950 appTools/ToolFiducials.py:961 +#: appTools/ToolFilm.py:1282 appTools/ToolFilm.py:1293 +#: appTools/ToolImage.py:322 appTools/ToolImage.py:333 +#: appTools/ToolInvertGerber.py:304 appTools/ToolInvertGerber.py:315 +#: appTools/ToolIsolation.py:3439 appTools/ToolIsolation.py:3450 +#: appTools/ToolMilling.py:2341 appTools/ToolMilling.py:2352 +#: appTools/ToolNCC.py:4384 appTools/ToolNCC.py:4395 +#: appTools/ToolOptimal.py:614 appTools/ToolOptimal.py:625 +#: appTools/ToolPaint.py:3265 appTools/ToolPaint.py:3276 +#: appTools/ToolPanelize.py:914 appTools/ToolPanelize.py:925 +#: appTools/ToolPcbWizard.py:488 appTools/ToolPcbWizard.py:499 +#: appTools/ToolPunchGerber.py:1022 appTools/ToolPunchGerber.py:1033 +#: appTools/ToolQRCode.py:919 appTools/ToolQRCode.py:930 +#: appTools/ToolRulesCheck.py:1655 appTools/ToolRulesCheck.py:1666 +#: appTools/ToolSolderPaste.py:1575 appTools/ToolSolderPaste.py:1586 +#: appTools/ToolSub.py:770 appTools/ToolSub.py:781 +#: appTools/ToolTransform.py:964 appTools/ToolTransform.py:975 +msgid "Edited value is out of range" +msgstr "Der bearbeitete Wert liegt außerhalb des Bereichs" + +#: appDatabase.py:2300 appDatabase.py:2307 appEditors/AppExcEditor.py:4221 +#: appEditors/AppExcEditor.py:4228 appEditors/appGCodeEditor.py:781 +#: appEditors/appGCodeEditor.py:788 appGUI/ObjectUI.py:169 +#: appGUI/ObjectUI.py:176 appTool.py:286 appTool.py:293 +#: appTools/ToolAlignObjects.py:522 appTools/ToolAlignObjects.py:529 +#: appTools/ToolCalculators.py:396 appTools/ToolCalculators.py:403 +#: appTools/ToolCalibration.py:1401 appTools/ToolCalibration.py:1408 +#: appTools/ToolCopperThieving.py:1601 appTools/ToolCopperThieving.py:1608 +#: appTools/ToolCorners.py:468 appTools/ToolCorners.py:475 +#: appTools/ToolCutOut.py:2201 appTools/ToolCutOut.py:2208 +#: appTools/ToolDblSided.py:971 appTools/ToolDblSided.py:978 +#: appTools/ToolDistance.py:665 appTools/ToolDistance.py:672 +#: appTools/ToolDistanceMin.py:330 appTools/ToolDistanceMin.py:337 +#: appTools/ToolDrilling.py:2658 appTools/ToolDrilling.py:2665 +#: appTools/ToolEtchCompensation.py:482 appTools/ToolEtchCompensation.py:489 +#: appTools/ToolExtractDrills.py:738 appTools/ToolExtractDrills.py:745 +#: appTools/ToolFiducials.py:956 appTools/ToolFiducials.py:963 +#: appTools/ToolFilm.py:1288 appTools/ToolFilm.py:1295 +#: appTools/ToolImage.py:328 appTools/ToolImage.py:335 +#: appTools/ToolInvertGerber.py:310 appTools/ToolInvertGerber.py:317 +#: appTools/ToolIsolation.py:3445 appTools/ToolIsolation.py:3452 +#: appTools/ToolMilling.py:2347 appTools/ToolMilling.py:2354 +#: appTools/ToolNCC.py:4390 appTools/ToolNCC.py:4397 +#: appTools/ToolOptimal.py:620 appTools/ToolOptimal.py:627 +#: appTools/ToolPaint.py:3271 appTools/ToolPaint.py:3278 +#: appTools/ToolPanelize.py:920 appTools/ToolPanelize.py:927 +#: appTools/ToolPcbWizard.py:494 appTools/ToolPcbWizard.py:501 +#: appTools/ToolPunchGerber.py:1028 appTools/ToolPunchGerber.py:1035 +#: appTools/ToolQRCode.py:925 appTools/ToolQRCode.py:932 +#: appTools/ToolRulesCheck.py:1661 appTools/ToolRulesCheck.py:1668 +#: appTools/ToolSolderPaste.py:1581 appTools/ToolSolderPaste.py:1588 +#: appTools/ToolSub.py:776 appTools/ToolSub.py:783 +#: appTools/ToolTransform.py:970 appTools/ToolTransform.py:977 +msgid "Edited value is within limits." +msgstr "Der bearbeitete Wert liegt innerhalb der Grenzen." + +#: appDatabase.py:2573 appTranslation.py:210 app_Main.py:3380 app_Main.py:6872 +msgid "Save changes" +msgstr "Änderungen speichern" + +#: appDatabase.py:3290 +msgid "" +"To change tool properties select only one tool. Tools currently selected" +msgstr "" + +#: appDatabase.py:3451 appTools/ToolDrilling.py:893 +#, fuzzy +#| msgid "Tool Diameter." +msgid "Tools DB empty." +msgstr "Werkzeugdurchmesser." + +#: appEditors/AppExcEditor.py:51 appEditors/AppExcEditor.py:75 +#: appEditors/AppExcEditor.py:169 appEditors/AppExcEditor.py:386 #: appEditors/AppExcEditor.py:589 appEditors/AppGerberEditor.py:241 #: appEditors/AppGerberEditor.py:248 msgid "Click to place ..." msgstr "Klicken um zu platzieren ..." -#: appEditors/AppExcEditor.py:58 +#: appEditors/AppExcEditor.py:59 msgid "To add a drill first select a tool" msgstr "Um einen Bohrer hinzuzufügen, wählen Sie zuerst ein Werkzeug aus" -#: appEditors/AppExcEditor.py:122 +#: appEditors/AppExcEditor.py:123 msgid "Done. Drill added." msgstr "Erledigt. Bohrer hinzugefügt." -#: appEditors/AppExcEditor.py:176 +#: appEditors/AppExcEditor.py:177 msgid "To add an Drill Array first select a tool in Tool Table" msgstr "" "Um ein Bohr-Array hinzuzufügen, wählen Sie zunächst ein Werkzeug in der " "Werkzeugtabelle aus" -#: appEditors/AppExcEditor.py:192 appEditors/AppExcEditor.py:415 +#: appEditors/AppExcEditor.py:193 appEditors/AppExcEditor.py:415 #: appEditors/AppExcEditor.py:636 appEditors/AppExcEditor.py:1151 #: appEditors/AppExcEditor.py:1178 appEditors/AppGerberEditor.py:471 #: appEditors/AppGerberEditor.py:1944 appEditors/AppGerberEditor.py:1974 msgid "Click on target location ..." msgstr "Klicken Sie auf den Zielort ..." -#: appEditors/AppExcEditor.py:211 +#: appEditors/AppExcEditor.py:212 msgid "Click on the Drill Circular Array Start position" msgstr "Klicken Sie auf die Startposition des Bohrkreis-Arrays" -#: appEditors/AppExcEditor.py:233 appEditors/AppExcEditor.py:677 +#: appEditors/AppExcEditor.py:234 appEditors/AppExcEditor.py:677 #: appEditors/AppGerberEditor.py:516 msgid "The value is not Float. Check for comma instead of dot separator." msgstr "" "Der Wert ist nicht Real. Überprüfen Sie das Komma anstelle des Trennzeichens." -#: appEditors/AppExcEditor.py:237 +#: appEditors/AppExcEditor.py:238 msgid "The value is mistyped. Check the value" msgstr "Der Wert ist falsch geschrieben. Überprüfen Sie den Wert" -#: appEditors/AppExcEditor.py:336 +#: appEditors/AppExcEditor.py:337 msgid "Too many drills for the selected spacing angle." msgstr "Zu viele Bohrer für den ausgewählten Abstandswinkel." -#: appEditors/AppExcEditor.py:354 +#: appEditors/AppExcEditor.py:355 msgid "Done. Drill Array added." msgstr "Erledigt. Bohrfeld hinzugefügt." @@ -1367,23 +1892,113 @@ msgstr "Erledigt. Bohrer Bewegen abgeschlossen." msgid "Done. Drill(s) copied." msgstr "Erledigt. Bohrer kopiert." -#: appEditors/AppExcEditor.py:1557 +#: appEditors/AppExcEditor.py:1897 appObjects/FlatCAMExcellon.py:324 +#: appTools/ToolDrilling.py:570 appTools/ToolMilling.py:494 +msgid "Total Drills" +msgstr "Bohrungen insgesamt" + +#: appEditors/AppExcEditor.py:1929 appObjects/FlatCAMExcellon.py:358 +#: appTools/ToolDrilling.py:597 appTools/ToolMilling.py:521 +msgid "Total Slots" +msgstr "Schlitz insgesamt" + +#: appEditors/AppExcEditor.py:2003 appObjects/FlatCAMGeometry.py:682 +#: appObjects/FlatCAMGeometry.py:1170 appObjects/FlatCAMGeometry.py:1907 +#: appObjects/FlatCAMGeometry.py:2566 appTools/ToolIsolation.py:1217 +#: appTools/ToolIsolation.py:1667 appTools/ToolNCC.py:1150 +#: appTools/ToolNCC.py:1284 appTools/ToolPaint.py:888 +#: appTools/ToolPaint.py:1026 appTools/ToolPaint.py:1739 +#: appTools/ToolSolderPaste.py:455 appTools/ToolSolderPaste.py:527 +msgid "Wrong value format entered, use a number." +msgstr "Falsches Wertformat eingegeben, eine Zahl verwenden." + +#: appEditors/AppExcEditor.py:2014 +msgid "" +"Tool already in the original or actual tool list.\n" +"Save and reedit Excellon if you need to add this tool. " +msgstr "" +"Werkzeug bereits in der ursprünglichen oder tatsächlichen Werkzeugliste.\n" +"Speichern Sie Excellon und bearbeiten Sie es erneut, wenn Sie dieses Tool " +"hinzufügen müssen. " + +#: appEditors/AppExcEditor.py:2022 appGUI/MainGUI.py:3512 +msgid "Added new tool with dia" +msgstr "Neues Werkzeug mit Durchmesser hinzugefügt" + +#: appEditors/AppExcEditor.py:2055 +msgid "Select a tool in Tool Table" +msgstr "Wählen Sie ein Werkzeug in der Werkzeugtabelle aus" + +#: appEditors/AppExcEditor.py:2085 +msgid "Deleted tool with diameter" +msgstr "Gelöschtes Werkzeug mit Durchmesser" + +#: appEditors/AppExcEditor.py:2232 +msgid "Done. Tool edit completed." +msgstr "Erledigt. Werkzeugbearbeitung abgeschlossen." + +#: appEditors/AppExcEditor.py:2858 +msgid "There are no Tools definitions in the file. Aborting Excellon creation." +msgstr "" +"Die Datei enthält keine Werkzeugdefinitionen. Abbruch der Excellon-" +"Erstellung." + +#: appEditors/AppExcEditor.py:2862 +msgid "An internal error has ocurred. See Shell.\n" +msgstr "" +"Ein interner Fehler ist aufgetreten. Siehe Shell.\n" +"\n" + +#: appEditors/AppExcEditor.py:2867 +msgid "Creating Excellon." +msgstr "Excellon erstellen." + +#: appEditors/AppExcEditor.py:2881 +msgid "Excellon editing finished." +msgstr "Excellon-Bearbeitung abgeschlossen." + +#: appEditors/AppExcEditor.py:2897 +msgid "Cancelled. There is no Tool/Drill selected" +msgstr "Abgebrochen. Es ist kein Werkzeug / Bohrer ausgewählt" + +#: appEditors/AppExcEditor.py:3123 appEditors/AppExcEditor.py:3130 +#: appEditors/AppGeoEditor.py:4233 appEditors/AppGeoEditor.py:4247 +#: appEditors/AppGerberEditor.py:1085 appEditors/AppGerberEditor.py:1312 +#: appEditors/AppGerberEditor.py:1497 appEditors/AppGerberEditor.py:1766 +#: appEditors/AppGerberEditor.py:4625 appEditors/AppGerberEditor.py:4642 +#: appGUI/MainGUI.py:2859 appGUI/MainGUI.py:2871 +#: appTools/ToolAlignObjects.py:253 appTools/ToolAlignObjects.py:275 +#: app_Main.py:4955 app_Main.py:5109 +msgid "Done." +msgstr "Fertig." + +#: appEditors/AppExcEditor.py:3491 +msgid "Done. Drill(s) deleted." +msgstr "Erledigt. Bohrer gelöscht." + +#: appEditors/AppExcEditor.py:3564 appEditors/AppExcEditor.py:3574 +#: appEditors/AppGerberEditor.py:5073 +msgid "Click on the circular array Center position" +msgstr "Klicken Sie auf die kreisförmige Anordnung in der Mitte" + +#: appEditors/AppExcEditor.py:3705 appGUI/ObjectUI.py:609 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:26 msgid "Excellon Editor" msgstr "Excellon Editor" -#: appEditors/AppExcEditor.py:1564 appEditors/AppGerberEditor.py:2469 +#: appEditors/AppExcEditor.py:3712 appEditors/AppGerberEditor.py:2469 +#: appEditors/appGCodeEditor.py:674 msgid "Name:" msgstr "Name:" -#: appEditors/AppExcEditor.py:1570 appGUI/ObjectUI.py:540 -#: appGUI/ObjectUI.py:1362 appTools/ToolIsolation.py:118 -#: appTools/ToolNCC.py:120 appTools/ToolPaint.py:114 -#: appTools/ToolSolderPaste.py:79 +#: appEditors/AppExcEditor.py:3718 appGUI/ObjectUI.py:530 +#: appGUI/ObjectUI.py:826 appTools/ToolIsolation.py:2972 +#: appTools/ToolNCC.py:3765 appTools/ToolPaint.py:2799 +#: appTools/ToolSolderPaste.py:1155 msgid "Tools Table" msgstr "Werkzeugtabelle" -#: appEditors/AppExcEditor.py:1572 appGUI/ObjectUI.py:542 +#: appEditors/AppExcEditor.py:3720 appGUI/ObjectUI.py:532 msgid "" "Tools in this Excellon object\n" "when are used for drilling." @@ -1391,21 +2006,21 @@ msgstr "" "Werkzeuge in diesem Excellon-Objekt\n" "Wann werden zum Bohren verwendet." -#: appEditors/AppExcEditor.py:1584 appEditors/AppExcEditor.py:3041 -#: appGUI/ObjectUI.py:560 appObjects/FlatCAMExcellon.py:1265 -#: appObjects/FlatCAMExcellon.py:1368 appObjects/FlatCAMExcellon.py:1553 -#: appTools/ToolIsolation.py:130 appTools/ToolNCC.py:132 -#: appTools/ToolPaint.py:127 appTools/ToolPcbWizard.py:76 -#: appTools/ToolProperties.py:416 appTools/ToolProperties.py:476 -#: appTools/ToolSolderPaste.py:90 tclCommands/TclCommandDrillcncjob.py:195 -msgid "Diameter" -msgstr "Durchmesser" +#: appEditors/AppExcEditor.py:3741 +#, fuzzy +#| msgid "Total Slots" +msgid "Convert Slots" +msgstr "Schlitz insgesamt" -#: appEditors/AppExcEditor.py:1592 +#: appEditors/AppExcEditor.py:3743 +msgid "Convert the slots in the selected tools to drills." +msgstr "" + +#: appEditors/AppExcEditor.py:3753 msgid "Add/Delete Tool" msgstr "Werkzeug hinzufügen / löschen" -#: appEditors/AppExcEditor.py:1594 +#: appEditors/AppExcEditor.py:3755 msgid "" "Add/Delete a tool to the tool list\n" "for this Excellon object." @@ -1413,16 +2028,16 @@ msgstr "" "Werkzeug zur Werkzeugliste hinzufügen / löschen\n" "für dieses Excellon-Objekt." -#: appEditors/AppExcEditor.py:1606 appGUI/ObjectUI.py:1482 +#: appEditors/AppExcEditor.py:3767 appGUI/ObjectUI.py:961 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:57 msgid "Diameter for the new tool" msgstr "Durchmesser für das neue Werkzeug" -#: appEditors/AppExcEditor.py:1616 +#: appEditors/AppExcEditor.py:3777 msgid "Add Tool" msgstr "Werkzeug hinzufügen" -#: appEditors/AppExcEditor.py:1618 +#: appEditors/AppExcEditor.py:3779 msgid "" "Add a new tool to the tool list\n" "with the diameter specified above." @@ -1430,11 +2045,11 @@ msgstr "" "Fügen Sie der Werkzeugliste ein neues Werkzeug hinzu\n" "mit dem oben angegebenen Durchmesser." -#: appEditors/AppExcEditor.py:1630 +#: appEditors/AppExcEditor.py:3791 msgid "Delete Tool" msgstr "Werkzeug löschen" -#: appEditors/AppExcEditor.py:1632 +#: appEditors/AppExcEditor.py:3793 msgid "" "Delete a tool in the tool list\n" "by selecting a row in the tool table." @@ -1442,41 +2057,41 @@ msgstr "" "Löschen Sie ein Werkzeug in der Werkzeugliste\n" "indem Sie eine Zeile in der Werkzeugtabelle auswählen." -#: appEditors/AppExcEditor.py:1650 appGUI/MainGUI.py:4392 +#: appEditors/AppExcEditor.py:3811 appGUI/MainGUI.py:4561 msgid "Resize Drill(s)" msgstr "Größe der Bohrer ändern" -#: appEditors/AppExcEditor.py:1652 +#: appEditors/AppExcEditor.py:3813 msgid "Resize a drill or a selection of drills." msgstr "Ändern Sie die Größe eines Bohrers oder einer Auswahl von Bohrern." -#: appEditors/AppExcEditor.py:1659 +#: appEditors/AppExcEditor.py:3820 msgid "Resize Dia" msgstr "Durchmesser ändern" -#: appEditors/AppExcEditor.py:1661 +#: appEditors/AppExcEditor.py:3822 msgid "Diameter to resize to." msgstr "Durchmesser zur Größenänderung." -#: appEditors/AppExcEditor.py:1672 +#: appEditors/AppExcEditor.py:3833 msgid "Resize" msgstr "Größe ändern" -#: appEditors/AppExcEditor.py:1674 +#: appEditors/AppExcEditor.py:3835 msgid "Resize drill(s)" msgstr "Bohrer verkleinern" -#: appEditors/AppExcEditor.py:1699 appGUI/MainGUI.py:1514 -#: appGUI/MainGUI.py:4391 +#: appEditors/AppExcEditor.py:3860 appGUI/MainGUI.py:1564 +#: appGUI/MainGUI.py:4560 msgid "Add Drill Array" msgstr "Bohrer-Array hinzufügen" -#: appEditors/AppExcEditor.py:1701 +#: appEditors/AppExcEditor.py:3862 msgid "Add an array of drills (linear or circular array)" msgstr "" "Hinzufügen eines Arrays von Bohrern (lineares oder kreisförmiges Array)" -#: appEditors/AppExcEditor.py:1707 +#: appEditors/AppExcEditor.py:3868 msgid "" "Select the type of drills array to create.\n" "It can be Linear X(Y) or Circular" @@ -1484,12 +2099,12 @@ msgstr "" "Wählen Sie den Typ des zu erstellenden Bohrfelds aus.\n" "Es kann lineares X (Y) oder rund sein" -#: appEditors/AppExcEditor.py:1710 appEditors/AppExcEditor.py:1924 +#: appEditors/AppExcEditor.py:3871 appEditors/AppExcEditor.py:4085 #: appEditors/AppGerberEditor.py:2782 msgid "Linear" msgstr "Linear" -#: appEditors/AppExcEditor.py:1711 appEditors/AppExcEditor.py:1925 +#: appEditors/AppExcEditor.py:3872 appEditors/AppExcEditor.py:4086 #: appEditors/AppGerberEditor.py:2783 #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:52 #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:149 @@ -1499,32 +2114,31 @@ msgstr "Linear" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:78 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:61 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:70 -#: appTools/ToolExtractDrills.py:78 appTools/ToolExtractDrills.py:201 -#: appTools/ToolFiducials.py:223 appTools/ToolIsolation.py:207 -#: appTools/ToolNCC.py:221 appTools/ToolPaint.py:203 -#: appTools/ToolPunchGerber.py:89 appTools/ToolPunchGerber.py:229 +#: appTools/ToolExtractDrills.py:470 appTools/ToolExtractDrills.py:593 +#: appTools/ToolFiducials.py:834 appTools/ToolPunchGerber.py:743 +#: appTools/ToolPunchGerber.py:883 msgid "Circular" msgstr "Kreisförmig" -#: appEditors/AppExcEditor.py:1719 +#: appEditors/AppExcEditor.py:3880 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:68 msgid "Nr of drills" msgstr "Anzahl der Bohrer" -#: appEditors/AppExcEditor.py:1720 +#: appEditors/AppExcEditor.py:3881 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:70 msgid "Specify how many drills to be in the array." msgstr "Geben Sie an, wie viele Drills im Array enthalten sein sollen." -#: appEditors/AppExcEditor.py:1738 appEditors/AppExcEditor.py:1788 -#: appEditors/AppExcEditor.py:1860 appEditors/AppExcEditor.py:1953 -#: appEditors/AppExcEditor.py:2004 appEditors/AppGerberEditor.py:1580 +#: appEditors/AppExcEditor.py:3899 appEditors/AppExcEditor.py:3949 +#: appEditors/AppExcEditor.py:4021 appEditors/AppExcEditor.py:4114 +#: appEditors/AppExcEditor.py:4165 appEditors/AppGerberEditor.py:1580 #: appEditors/AppGerberEditor.py:2811 appEditors/AppGerberEditor.py:2860 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:178 msgid "Direction" msgstr "Richtung" -#: appEditors/AppExcEditor.py:1740 appEditors/AppExcEditor.py:1955 +#: appEditors/AppExcEditor.py:3901 appEditors/AppExcEditor.py:4116 #: appEditors/AppGerberEditor.py:2813 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:86 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:234 @@ -1540,35 +2154,37 @@ msgstr "" "- 'Y' - vertikale Achse oder\n" "- 'Winkel' - ein benutzerdefinierter Winkel für die Neigung des Arrays" -#: appEditors/AppExcEditor.py:1747 appEditors/AppExcEditor.py:1869 -#: appEditors/AppExcEditor.py:1962 appEditors/AppGerberEditor.py:2820 +#: appEditors/AppExcEditor.py:3908 appEditors/AppExcEditor.py:4030 +#: appEditors/AppExcEditor.py:4123 appEditors/AppGerberEditor.py:2820 +#: appGUI/GUIElements.py:3470 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:92 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:187 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:240 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:129 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:197 -#: appTools/ToolFilm.py:239 +#: appTools/ToolFilm.py:956 msgid "X" msgstr "X" -#: appEditors/AppExcEditor.py:1748 appEditors/AppExcEditor.py:1870 -#: appEditors/AppExcEditor.py:1963 appEditors/AppGerberEditor.py:2821 +#: appEditors/AppExcEditor.py:3909 appEditors/AppExcEditor.py:4031 +#: appEditors/AppExcEditor.py:4124 appEditors/AppGerberEditor.py:2821 +#: appGUI/GUIElements.py:3477 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:93 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:188 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:241 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:130 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:198 -#: appTools/ToolFilm.py:240 +#: appTools/ToolFilm.py:957 msgid "Y" msgstr "Y" -#: appEditors/AppExcEditor.py:1749 appEditors/AppExcEditor.py:1766 -#: appEditors/AppExcEditor.py:1800 appEditors/AppExcEditor.py:1871 -#: appEditors/AppExcEditor.py:1875 appEditors/AppExcEditor.py:1964 -#: appEditors/AppExcEditor.py:1982 appEditors/AppExcEditor.py:2016 +#: appEditors/AppExcEditor.py:3910 appEditors/AppExcEditor.py:3927 +#: appEditors/AppExcEditor.py:3961 appEditors/AppExcEditor.py:4032 +#: appEditors/AppExcEditor.py:4036 appEditors/AppExcEditor.py:4125 +#: appEditors/AppExcEditor.py:4143 appEditors/AppExcEditor.py:4177 #: appEditors/AppGeoEditor.py:683 appEditors/AppGerberEditor.py:2822 #: appEditors/AppGerberEditor.py:2839 appEditors/AppGerberEditor.py:2875 -#: appEditors/AppGerberEditor.py:5376 +#: appEditors/AppGerberEditor.py:5393 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:94 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:113 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:189 @@ -1578,12 +2194,12 @@ msgstr "Y" #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:131 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:149 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:96 -#: appTools/ToolDistance.py:120 appTools/ToolDistanceMin.py:68 -#: appTools/ToolTransform.py:130 +#: appTools/ToolDistance.py:626 appTools/ToolDistanceMin.py:256 +#: appTools/ToolTransform.py:617 msgid "Angle" msgstr "Winkel" -#: appEditors/AppExcEditor.py:1753 appEditors/AppExcEditor.py:1968 +#: appEditors/AppExcEditor.py:3914 appEditors/AppExcEditor.py:4129 #: appEditors/AppGerberEditor.py:2826 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:100 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:248 @@ -1591,7 +2207,7 @@ msgstr "Winkel" msgid "Pitch" msgstr "Abstand" -#: appEditors/AppExcEditor.py:1755 appEditors/AppExcEditor.py:1970 +#: appEditors/AppExcEditor.py:3916 appEditors/AppExcEditor.py:4131 #: appEditors/AppGerberEditor.py:2828 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:102 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:250 @@ -1599,7 +2215,7 @@ msgstr "Abstand" msgid "Pitch = Distance between elements of the array." msgstr "Abstand = Abstand zwischen Elementen des Arrays." -#: appEditors/AppExcEditor.py:1768 appEditors/AppExcEditor.py:1984 +#: appEditors/AppExcEditor.py:3929 appEditors/AppExcEditor.py:4145 msgid "" "Angle at which the linear array is placed.\n" "The precision is of max 2 decimals.\n" @@ -1611,7 +2227,7 @@ msgstr "" "Der Mindestwert beträgt -360 Grad.\n" "Maximalwert ist: 360.00 Grad." -#: appEditors/AppExcEditor.py:1789 appEditors/AppExcEditor.py:2005 +#: appEditors/AppExcEditor.py:3950 appEditors/AppExcEditor.py:4166 #: appEditors/AppGerberEditor.py:2862 msgid "" "Direction for circular array.Can be CW = clockwise or CCW = counter " @@ -1620,27 +2236,27 @@ msgstr "" "Richtung für kreisförmige Anordnung. Kann CW = Uhrzeigersinn oder CCW = " "Gegenuhrzeigersinn sein." -#: appEditors/AppExcEditor.py:1796 appEditors/AppExcEditor.py:2012 +#: appEditors/AppExcEditor.py:3957 appEditors/AppExcEditor.py:4173 #: appEditors/AppGerberEditor.py:2870 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:129 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:136 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:286 #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:145 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:171 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:366 msgid "CW" msgstr "CW" -#: appEditors/AppExcEditor.py:1797 appEditors/AppExcEditor.py:2013 +#: appEditors/AppExcEditor.py:3958 appEditors/AppExcEditor.py:4174 #: appEditors/AppGerberEditor.py:2871 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:130 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:137 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:287 #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:146 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:172 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:367 msgid "CCW" msgstr "CCW" -#: appEditors/AppExcEditor.py:1801 appEditors/AppExcEditor.py:2017 +#: appEditors/AppExcEditor.py:3962 appEditors/AppExcEditor.py:4178 #: appEditors/AppGerberEditor.py:2877 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:115 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:145 @@ -1652,11 +2268,11 @@ msgid "Angle at which each element in circular array is placed." msgstr "" "Winkel, um den jedes Element in einer kreisförmigen Anordnung platziert wird." -#: appEditors/AppExcEditor.py:1835 +#: appEditors/AppExcEditor.py:3996 msgid "Slot Parameters" msgstr "Schlitze-Parameter" -#: appEditors/AppExcEditor.py:1837 +#: appEditors/AppExcEditor.py:3998 msgid "" "Parameters for adding a slot (hole with oval shape)\n" "either single or as an part of an array." @@ -1664,19 +2280,19 @@ msgstr "" "Parameter zum Hinzufügen eines Schlitzes (Loch mit ovaler Form)\n" "entweder einzeln oder als Teil eines Arrays." -#: appEditors/AppExcEditor.py:1846 +#: appEditors/AppExcEditor.py:4007 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:162 #: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:56 -#: appTools/ToolCorners.py:136 appTools/ToolProperties.py:559 +#: appTools/ToolCorners.py:398 appTools/ToolProperties.py:575 msgid "Length" msgstr "Länge" -#: appEditors/AppExcEditor.py:1848 +#: appEditors/AppExcEditor.py:4009 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:164 msgid "Length = The length of the slot." msgstr "Länge = Die Länge des Schlitzes." -#: appEditors/AppExcEditor.py:1862 +#: appEditors/AppExcEditor.py:4023 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:180 msgid "" "Direction on which the slot is oriented:\n" @@ -1689,7 +2305,7 @@ msgstr "" "- 'Y' - vertikale Achse oder\n" "- 'Winkel' - Ein benutzerdefinierter Winkel für die Schlitzneigung" -#: appEditors/AppExcEditor.py:1877 +#: appEditors/AppExcEditor.py:4038 msgid "" "Angle at which the slot is placed.\n" "The precision is of max 2 decimals.\n" @@ -1701,16 +2317,16 @@ msgstr "" "Der Mindestwert beträgt: -360 Grad.\n" "Maximaler Wert ist: 360.00 Grad." -#: appEditors/AppExcEditor.py:1910 +#: appEditors/AppExcEditor.py:4071 msgid "Slot Array Parameters" msgstr "Schlitzes Array-Parameter" -#: appEditors/AppExcEditor.py:1912 +#: appEditors/AppExcEditor.py:4073 msgid "Parameters for the array of slots (linear or circular array)" msgstr "" "Parameter für das Array von Schlitzes (lineares oder kreisförmiges Array)" -#: appEditors/AppExcEditor.py:1921 +#: appEditors/AppExcEditor.py:4082 msgid "" "Select the type of slot array to create.\n" "It can be Linear X(Y) or Circular" @@ -1718,101 +2334,29 @@ msgstr "" "Wählen Sie den Typ des zu erstellenden Slot-Arrays.\n" "Es kann ein lineares X (Y) oder ein kreisförmiges sein" -#: appEditors/AppExcEditor.py:1933 +#: appEditors/AppExcEditor.py:4094 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:219 msgid "Nr of slots" msgstr "Anzahl der Slots" -#: appEditors/AppExcEditor.py:1934 +#: appEditors/AppExcEditor.py:4095 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:221 msgid "Specify how many slots to be in the array." msgstr "Geben Sie an, wie viele Steckplätze sich im Array befinden sollen." -#: appEditors/AppExcEditor.py:2452 appObjects/FlatCAMExcellon.py:433 -msgid "Total Drills" -msgstr "Bohrungen insgesamt" +#: appEditors/AppExcEditor.py:4198 appEditors/AppGeoEditor.py:3301 +#: appEditors/AppGerberEditor.py:2899 appEditors/appGCodeEditor.py:758 +#, fuzzy +#| msgid "Exc Editor" +msgid "Exit Editor" +msgstr "Exc-Editor" -#: appEditors/AppExcEditor.py:2484 appObjects/FlatCAMExcellon.py:464 -msgid "Total Slots" -msgstr "Schlitz insgesamt" - -#: appEditors/AppExcEditor.py:2559 appObjects/FlatCAMGeometry.py:664 -#: appObjects/FlatCAMGeometry.py:1099 appObjects/FlatCAMGeometry.py:1841 -#: appObjects/FlatCAMGeometry.py:2491 appTools/ToolIsolation.py:1526 -#: appTools/ToolNCC.py:1516 appTools/ToolPaint.py:1268 -#: appTools/ToolPaint.py:1439 appTools/ToolSolderPaste.py:891 -#: appTools/ToolSolderPaste.py:964 -msgid "Wrong value format entered, use a number." -msgstr "Falsches Wertformat eingegeben, eine Zahl verwenden." - -#: appEditors/AppExcEditor.py:2570 -msgid "" -"Tool already in the original or actual tool list.\n" -"Save and reedit Excellon if you need to add this tool. " -msgstr "" -"Werkzeug bereits in der ursprünglichen oder tatsächlichen Werkzeugliste.\n" -"Speichern Sie Excellon und bearbeiten Sie es erneut, wenn Sie dieses Tool " -"hinzufügen müssen. " - -#: appEditors/AppExcEditor.py:2579 appGUI/MainGUI.py:3364 -msgid "Added new tool with dia" -msgstr "Neues Werkzeug mit Durchmesser hinzugefügt" - -#: appEditors/AppExcEditor.py:2612 -msgid "Select a tool in Tool Table" -msgstr "Wählen Sie ein Werkzeug in der Werkzeugtabelle aus" - -#: appEditors/AppExcEditor.py:2642 -msgid "Deleted tool with diameter" -msgstr "Gelöschtes Werkzeug mit Durchmesser" - -#: appEditors/AppExcEditor.py:2790 -msgid "Done. Tool edit completed." -msgstr "Erledigt. Werkzeugbearbeitung abgeschlossen." - -#: appEditors/AppExcEditor.py:3327 -msgid "There are no Tools definitions in the file. Aborting Excellon creation." -msgstr "" -"Die Datei enthält keine Werkzeugdefinitionen. Abbruch der Excellon-" -"Erstellung." - -#: appEditors/AppExcEditor.py:3331 -msgid "An internal error has ocurred. See Shell.\n" -msgstr "" -"Ein interner Fehler ist aufgetreten. Siehe Shell.\n" -"\n" - -#: appEditors/AppExcEditor.py:3336 -msgid "Creating Excellon." -msgstr "Excellon erstellen." - -#: appEditors/AppExcEditor.py:3350 -msgid "Excellon editing finished." -msgstr "Excellon-Bearbeitung abgeschlossen." - -#: appEditors/AppExcEditor.py:3367 -msgid "Cancelled. There is no Tool/Drill selected" -msgstr "Abgebrochen. Es ist kein Werkzeug / Bohrer ausgewählt" - -#: appEditors/AppExcEditor.py:3601 appEditors/AppExcEditor.py:3609 -#: appEditors/AppGeoEditor.py:4286 appEditors/AppGeoEditor.py:4300 -#: appEditors/AppGerberEditor.py:1085 appEditors/AppGerberEditor.py:1312 -#: appEditors/AppGerberEditor.py:1497 appEditors/AppGerberEditor.py:1766 -#: appEditors/AppGerberEditor.py:4608 appEditors/AppGerberEditor.py:4625 -#: appGUI/MainGUI.py:2711 appGUI/MainGUI.py:2723 -#: appTools/ToolAlignObjects.py:393 appTools/ToolAlignObjects.py:415 -#: app_Main.py:4800 app_Main.py:4954 -msgid "Done." -msgstr "Fertig." - -#: appEditors/AppExcEditor.py:3984 -msgid "Done. Drill(s) deleted." -msgstr "Erledigt. Bohrer gelöscht." - -#: appEditors/AppExcEditor.py:4057 appEditors/AppExcEditor.py:4067 -#: appEditors/AppGerberEditor.py:5056 -msgid "Click on the circular array Center position" -msgstr "Klicken Sie auf die kreisförmige Anordnung in der Mitte" +#: appEditors/AppExcEditor.py:4201 appEditors/AppGeoEditor.py:3304 +#: appEditors/AppGerberEditor.py:2902 appEditors/appGCodeEditor.py:761 +#, fuzzy +#| msgid "Exc Editor" +msgid "Exit from Editor." +msgstr "Exc-Editor" #: appEditors/AppGeoEditor.py:84 msgid "Buffer distance:" @@ -1842,7 +2386,7 @@ msgid "Round" msgstr "Runden" #: appEditors/AppGeoEditor.py:94 appEditors/AppGerberEditor.py:2639 -#: appGUI/ObjectUI.py:1149 appGUI/ObjectUI.py:2004 +#: appGUI/ObjectUI.py:1489 #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:225 #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:68 #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:175 @@ -1852,10 +2396,11 @@ msgstr "Runden" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:298 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:327 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:291 -#: appTools/ToolExtractDrills.py:94 appTools/ToolExtractDrills.py:227 -#: appTools/ToolIsolation.py:566 appTools/ToolNCC.py:583 -#: appTools/ToolPaint.py:526 appTools/ToolPunchGerber.py:105 -#: appTools/ToolPunchGerber.py:255 appTools/ToolQRCode.py:207 +#: appTools/ToolDrilling.py:2574 appTools/ToolExtractDrills.py:486 +#: appTools/ToolExtractDrills.py:619 appTools/ToolIsolation.py:3375 +#: appTools/ToolMilling.py:2264 appTools/ToolNCC.py:4234 +#: appTools/ToolPaint.py:3166 appTools/ToolPunchGerber.py:759 +#: appTools/ToolPunchGerber.py:909 appTools/ToolQRCode.py:785 msgid "Square" msgstr "Quadrat" @@ -1876,7 +2421,7 @@ msgid "Full Buffer" msgstr "Voller Puffer" #: appEditors/AppGeoEditor.py:131 appEditors/AppGeoEditor.py:2959 -#: appGUI/MainGUI.py:4301 +#: appGUI/MainGUI.py:4470 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:191 msgid "Buffer Tool" msgstr "Pufferwerkzeug" @@ -1884,7 +2429,7 @@ msgstr "Pufferwerkzeug" #: appEditors/AppGeoEditor.py:143 appEditors/AppGeoEditor.py:160 #: appEditors/AppGeoEditor.py:177 appEditors/AppGeoEditor.py:2978 #: appEditors/AppGeoEditor.py:3006 appEditors/AppGeoEditor.py:3034 -#: appEditors/AppGerberEditor.py:5109 +#: appEditors/AppGerberEditor.py:5126 msgid "Buffer distance value is missing or wrong format. Add it and retry." msgstr "" "Pufferabstandswert fehlt oder falsches Format. Fügen Sie es hinzu und " @@ -1894,7 +2439,7 @@ msgstr "" msgid "Font" msgstr "Schrift" -#: appEditors/AppGeoEditor.py:322 appGUI/MainGUI.py:1452 +#: appEditors/AppGeoEditor.py:322 appGUI/MainGUI.py:1502 msgid "Text" msgstr "Text" @@ -1902,12 +2447,15 @@ msgstr "Text" msgid "Text Tool" msgstr "Textwerkzeug" -#: appEditors/AppGeoEditor.py:404 appGUI/MainGUI.py:502 -#: appGUI/MainGUI.py:1199 appGUI/ObjectUI.py:597 appGUI/ObjectUI.py:1564 -#: appObjects/FlatCAMExcellon.py:852 appObjects/FlatCAMExcellon.py:1242 -#: appObjects/FlatCAMGeometry.py:825 appTools/ToolIsolation.py:313 -#: appTools/ToolIsolation.py:1196 appTools/ToolNCC.py:331 -#: appTools/ToolNCC.py:797 appTools/ToolPaint.py:313 appTools/ToolPaint.py:766 +#: appEditors/AppGeoEditor.py:404 appGUI/MainGUI.py:511 appGUI/MainGUI.py:1245 +#: appGUI/ObjectUI.py:1047 appObjects/FlatCAMExcellon.py:854 +#: appObjects/FlatCAMGeometry.py:888 appTools/ToolDrilling.py:710 +#: appTools/ToolDrilling.py:1019 appTools/ToolDrilling.py:2102 +#: appTools/ToolIsolation.py:691 appTools/ToolIsolation.py:3121 +#: appTools/ToolMilling.py:790 appTools/ToolMilling.py:1046 +#: appTools/ToolMilling.py:1711 appTools/ToolNCC.py:324 +#: appTools/ToolNCC.py:2230 appTools/ToolNCC.py:3926 appTools/ToolPaint.py:304 +#: appTools/ToolPaint.py:2938 msgid "Tool" msgstr "Werkzeug" @@ -1939,81 +2487,76 @@ msgstr "Verbinden:" msgid "Contour:" msgstr "Kontur:" -#: appEditors/AppGeoEditor.py:528 appGUI/MainGUI.py:1456 -msgid "Paint" -msgstr "Malen" - -#: appEditors/AppGeoEditor.py:546 appGUI/MainGUI.py:912 -#: appGUI/MainGUI.py:1944 appGUI/ObjectUI.py:2069 appTools/ToolPaint.py:42 -#: appTools/ToolPaint.py:737 +#: appEditors/AppGeoEditor.py:546 appGUI/MainGUI.py:935 appGUI/MainGUI.py:2090 +#: appGUI/ObjectUI.py:1642 appTools/ToolPaint.py:228 appTools/ToolPaint.py:2729 msgid "Paint Tool" msgstr "Werkzeug Malen" #: appEditors/AppGeoEditor.py:582 appEditors/AppGeoEditor.py:1071 #: appEditors/AppGeoEditor.py:2966 appEditors/AppGeoEditor.py:2994 -#: appEditors/AppGeoEditor.py:3022 appEditors/AppGeoEditor.py:4439 -#: appEditors/AppGerberEditor.py:5764 +#: appEditors/AppGeoEditor.py:3022 appEditors/AppGeoEditor.py:4386 +#: appEditors/AppGerberEditor.py:5781 msgid "Cancelled. No shape selected." msgstr "Abgebrochen. Keine Form ausgewählt." #: appEditors/AppGeoEditor.py:595 appEditors/AppGeoEditor.py:2984 #: appEditors/AppGeoEditor.py:3012 appEditors/AppGeoEditor.py:3040 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:69 -#: appTools/ToolProperties.py:117 appTools/ToolProperties.py:162 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:71 +#: appTools/ToolProperties.py:117 appTools/ToolProperties.py:165 msgid "Tools" msgstr "Werkzeuge" #: appEditors/AppGeoEditor.py:606 appEditors/AppGeoEditor.py:1035 -#: appEditors/AppGerberEditor.py:5299 appEditors/AppGerberEditor.py:5728 -#: appGUI/MainGUI.py:935 appGUI/MainGUI.py:1967 appTools/ToolTransform.py:494 +#: appEditors/AppGerberEditor.py:5316 appEditors/AppGerberEditor.py:5745 +#: appGUI/MainGUI.py:960 appGUI/MainGUI.py:2115 appTools/ToolTransform.py:85 msgid "Transform Tool" msgstr "Werkzeug Umwandeln" #: appEditors/AppGeoEditor.py:607 appEditors/AppGeoEditor.py:699 -#: appEditors/AppGerberEditor.py:5300 appEditors/AppGerberEditor.py:5392 +#: appEditors/AppGerberEditor.py:5317 appEditors/AppGerberEditor.py:5409 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:88 -#: appTools/ToolTransform.py:27 appTools/ToolTransform.py:146 +#: appTools/ToolTransform.py:513 appTools/ToolTransform.py:633 msgid "Rotate" msgstr "Drehen" -#: appEditors/AppGeoEditor.py:608 appEditors/AppGerberEditor.py:5301 -#: appTools/ToolTransform.py:28 +#: appEditors/AppGeoEditor.py:608 appEditors/AppGerberEditor.py:5318 +#: appTools/ToolTransform.py:514 msgid "Skew/Shear" msgstr "Neigung/Schere" #: appEditors/AppGeoEditor.py:609 appEditors/AppGerberEditor.py:2687 -#: appEditors/AppGerberEditor.py:5302 appGUI/MainGUI.py:1057 -#: appGUI/MainGUI.py:1499 appGUI/MainGUI.py:2089 appGUI/MainGUI.py:4513 +#: appEditors/AppGerberEditor.py:5319 appGUI/MainGUI.py:1082 +#: appGUI/MainGUI.py:1549 appGUI/MainGUI.py:2237 appGUI/MainGUI.py:4682 #: appGUI/ObjectUI.py:125 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:147 -#: appTools/ToolTransform.py:29 +#: appTools/ToolTransform.py:515 msgid "Scale" msgstr "Skalieren" -#: appEditors/AppGeoEditor.py:610 appEditors/AppGerberEditor.py:5303 -#: appTools/ToolTransform.py:30 +#: appEditors/AppGeoEditor.py:610 appEditors/AppGerberEditor.py:5320 +#: appTools/ToolTransform.py:516 msgid "Mirror (Flip)" msgstr "Spiegeln (Flip)" #: appEditors/AppGeoEditor.py:612 appEditors/AppGerberEditor.py:2647 -#: appEditors/AppGerberEditor.py:5305 appGUI/MainGUI.py:1055 -#: appGUI/MainGUI.py:1454 appGUI/MainGUI.py:1497 appGUI/MainGUI.py:2087 -#: appGUI/MainGUI.py:4511 +#: appEditors/AppGerberEditor.py:5322 appGUI/MainGUI.py:1080 +#: appGUI/MainGUI.py:1504 appGUI/MainGUI.py:1547 appGUI/MainGUI.py:2235 +#: appGUI/MainGUI.py:4680 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:212 -#: appTools/ToolTransform.py:32 +#: appTools/ToolTransform.py:518 msgid "Buffer" msgstr "Puffer" -#: appEditors/AppGeoEditor.py:643 appEditors/AppGerberEditor.py:5336 -#: appGUI/GUIElements.py:2701 +#: appEditors/AppGeoEditor.py:643 appEditors/AppGerberEditor.py:5353 +#: appGUI/GUIElements.py:2947 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:169 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:44 -#: appTools/ToolDblSided.py:173 appTools/ToolDblSided.py:388 -#: appTools/ToolFilm.py:202 appTools/ToolTransform.py:60 +#: appTools/ToolDblSided.py:688 appTools/ToolDblSided.py:864 +#: appTools/ToolFilm.py:913 appTools/ToolTransform.py:547 msgid "Reference" msgstr "Referenz" -#: appEditors/AppGeoEditor.py:645 appEditors/AppGerberEditor.py:5338 +#: appEditors/AppGeoEditor.py:645 appEditors/AppGerberEditor.py:5355 msgid "" "The reference point for Rotate, Skew, Scale, Mirror.\n" "Can be:\n" @@ -2031,73 +2574,73 @@ msgstr "" "definiert ist\n" "- Min. Auswahl -> der Punkt (minx, miny) des Begrenzungsrahmens der Auswahl" -#: appEditors/AppGeoEditor.py:653 appEditors/AppGerberEditor.py:5346 +#: appEditors/AppGeoEditor.py:653 appEditors/AppGerberEditor.py:5363 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:54 -#: appTools/ToolCalibration.py:770 appTools/ToolCalibration.py:771 -#: appTools/ToolTransform.py:70 +#: appTools/ToolCalibration.py:126 appTools/ToolCalibration.py:127 +#: appTools/ToolTransform.py:557 msgid "Origin" msgstr "Ursprung" #: appEditors/AppGeoEditor.py:653 appEditors/AppGeoEditor.py:1044 -#: appEditors/AppGerberEditor.py:5346 appEditors/AppGerberEditor.py:5737 +#: appEditors/AppGerberEditor.py:5363 appEditors/AppGerberEditor.py:5754 #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:250 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:275 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:311 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:258 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:54 -#: appTools/ToolIsolation.py:504 appTools/ToolNCC.py:539 -#: appTools/ToolPaint.py:455 appTools/ToolTransform.py:70 defaults.py:505 +#: appTools/ToolIsolation.py:3313 appTools/ToolNCC.py:4190 +#: appTools/ToolPaint.py:3095 appTools/ToolTransform.py:557 defaults.py:557 msgid "Selection" msgstr "Auswahl" -#: appEditors/AppGeoEditor.py:653 appEditors/AppGerberEditor.py:5346 -#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:80 +#: appEditors/AppGeoEditor.py:653 appEditors/AppGerberEditor.py:5363 +#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:85 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:54 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:60 -#: appTools/ToolDblSided.py:181 appTools/ToolTransform.py:70 +#: appTools/ToolDblSided.py:699 appTools/ToolTransform.py:557 msgid "Point" msgstr "Punkt" -#: appEditors/AppGeoEditor.py:653 appEditors/AppGerberEditor.py:5346 +#: appEditors/AppGeoEditor.py:653 appEditors/AppGerberEditor.py:5363 msgid "Minimum" msgstr "Minimum" #: appEditors/AppGeoEditor.py:659 appEditors/AppGeoEditor.py:955 -#: appEditors/AppGerberEditor.py:5352 appEditors/AppGerberEditor.py:5648 +#: appEditors/AppGerberEditor.py:5369 appEditors/AppGerberEditor.py:5665 #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:131 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:133 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:243 -#: appTools/ToolExtractDrills.py:164 appTools/ToolExtractDrills.py:285 -#: appTools/ToolPunchGerber.py:192 appTools/ToolPunchGerber.py:308 -#: appTools/ToolTransform.py:76 appTools/ToolTransform.py:402 app_Main.py:9822 +#: appTools/ToolExtractDrills.py:556 appTools/ToolExtractDrills.py:677 +#: appTools/ToolPunchGerber.py:846 appTools/ToolPunchGerber.py:962 +#: appTools/ToolTransform.py:563 appTools/ToolTransform.py:889 +#: app_Main.py:10219 msgid "Value" msgstr "Wert" -#: appEditors/AppGeoEditor.py:661 appEditors/AppGerberEditor.py:5354 +#: appEditors/AppGeoEditor.py:661 appEditors/AppGerberEditor.py:5371 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:62 -#: appTools/ToolTransform.py:78 +#: appTools/ToolTransform.py:565 msgid "A point of reference in format X,Y." msgstr "Ein Bezugspunkt im Format X, Y." #: appEditors/AppGeoEditor.py:668 appEditors/AppGerberEditor.py:2590 -#: appEditors/AppGerberEditor.py:5361 appGUI/ObjectUI.py:1494 -#: appTools/ToolDblSided.py:192 appTools/ToolDblSided.py:425 -#: appTools/ToolIsolation.py:276 appTools/ToolIsolation.py:631 -#: appTools/ToolNCC.py:294 appTools/ToolNCC.py:631 appTools/ToolPaint.py:276 -#: appTools/ToolPaint.py:675 appTools/ToolSolderPaste.py:127 -#: appTools/ToolSolderPaste.py:605 appTools/ToolTransform.py:85 -#: app_Main.py:5794 +#: appEditors/AppGerberEditor.py:5378 appGUI/ObjectUI.py:973 +#: appGUI/ObjectUI.py:2151 appTools/ToolDblSided.py:713 +#: appTools/ToolDblSided.py:901 appTools/ToolNCC.py:63 +#: appTools/ToolPaint.py:137 appTools/ToolSolderPaste.py:160 +#: appTools/ToolSolderPaste.py:1203 appTools/ToolTransform.py:572 +#: app_Main.py:6121 msgid "Add" msgstr "Hinzufügen" -#: appEditors/AppGeoEditor.py:670 appEditors/AppGerberEditor.py:5363 -#: appTools/ToolTransform.py:87 +#: appEditors/AppGeoEditor.py:670 appEditors/AppGerberEditor.py:5380 +#: appTools/ToolTransform.py:574 msgid "Add point coordinates from clipboard." msgstr "Punktkoordinaten aus der Zwischenablage hinzufügen." -#: appEditors/AppGeoEditor.py:685 appEditors/AppGerberEditor.py:5378 +#: appEditors/AppGeoEditor.py:685 appEditors/AppGerberEditor.py:5395 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:98 -#: appTools/ToolTransform.py:132 +#: appTools/ToolTransform.py:619 msgid "" "Angle for Rotation action, in degrees.\n" "Float number between -360 and 359.\n" @@ -2109,8 +2652,8 @@ msgstr "" "Positive Zahlen für CW-Bewegung.\n" "Negative Zahlen für CCW-Bewegung." -#: appEditors/AppGeoEditor.py:701 appEditors/AppGerberEditor.py:5394 -#: appTools/ToolTransform.py:148 +#: appEditors/AppGeoEditor.py:701 appEditors/AppGerberEditor.py:5411 +#: appTools/ToolTransform.py:635 msgid "" "Rotate the selected object(s).\n" "The point of reference is the middle of\n" @@ -2121,33 +2664,33 @@ msgstr "" "der Begrenzungsrahmen für alle ausgewählten Objekte." #: appEditors/AppGeoEditor.py:721 appEditors/AppGeoEditor.py:783 -#: appEditors/AppGerberEditor.py:5414 appEditors/AppGerberEditor.py:5476 +#: appEditors/AppGerberEditor.py:5431 appEditors/AppGerberEditor.py:5493 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:112 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:151 -#: appTools/ToolTransform.py:168 appTools/ToolTransform.py:230 +#: appTools/ToolTransform.py:655 appTools/ToolTransform.py:717 msgid "Link" msgstr "Verknüpfung" #: appEditors/AppGeoEditor.py:723 appEditors/AppGeoEditor.py:785 -#: appEditors/AppGerberEditor.py:5416 appEditors/AppGerberEditor.py:5478 +#: appEditors/AppGerberEditor.py:5433 appEditors/AppGerberEditor.py:5495 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:114 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:153 -#: appTools/ToolTransform.py:170 appTools/ToolTransform.py:232 +#: appTools/ToolTransform.py:657 appTools/ToolTransform.py:719 msgid "Link the Y entry to X entry and copy its content." msgstr "" "Verknüpfen Sie den Y-Eintrag mit dem X-Eintrag und kopieren Sie dessen " "Inhalt." -#: appEditors/AppGeoEditor.py:728 appEditors/AppGerberEditor.py:5421 +#: appEditors/AppGeoEditor.py:728 appEditors/AppGerberEditor.py:5438 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:151 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:124 -#: appTools/ToolFilm.py:184 appTools/ToolTransform.py:175 +#: appTools/ToolFilm.py:895 appTools/ToolTransform.py:662 msgid "X angle" msgstr "X Winkel" #: appEditors/AppGeoEditor.py:730 appEditors/AppGeoEditor.py:751 -#: appEditors/AppGerberEditor.py:5423 appEditors/AppGerberEditor.py:5444 -#: appTools/ToolTransform.py:177 appTools/ToolTransform.py:198 +#: appEditors/AppGerberEditor.py:5440 appEditors/AppGerberEditor.py:5461 +#: appTools/ToolTransform.py:664 appTools/ToolTransform.py:685 msgid "" "Angle for Skew action, in degrees.\n" "Float number between -360 and 360." @@ -2155,14 +2698,14 @@ msgstr "" "Winkel für Schrägstellung in Grad.\n" "Gleitkommazahl zwischen -360 und 360." -#: appEditors/AppGeoEditor.py:738 appEditors/AppGerberEditor.py:5431 -#: appTools/ToolTransform.py:185 +#: appEditors/AppGeoEditor.py:738 appEditors/AppGerberEditor.py:5448 +#: appTools/ToolTransform.py:672 msgid "Skew X" msgstr "Neigung X" #: appEditors/AppGeoEditor.py:740 appEditors/AppGeoEditor.py:761 -#: appEditors/AppGerberEditor.py:5433 appEditors/AppGerberEditor.py:5454 -#: appTools/ToolTransform.py:187 appTools/ToolTransform.py:208 +#: appEditors/AppGerberEditor.py:5450 appEditors/AppGerberEditor.py:5471 +#: appTools/ToolTransform.py:674 appTools/ToolTransform.py:695 msgid "" "Skew/shear the selected object(s).\n" "The point of reference is the middle of\n" @@ -2172,39 +2715,39 @@ msgstr "" "Der Bezugspunkt ist die Mitte von\n" "der Begrenzungsrahmen für alle ausgewählten Objekte." -#: appEditors/AppGeoEditor.py:749 appEditors/AppGerberEditor.py:5442 +#: appEditors/AppGeoEditor.py:749 appEditors/AppGerberEditor.py:5459 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:160 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:138 -#: appTools/ToolFilm.py:193 appTools/ToolTransform.py:196 +#: appTools/ToolFilm.py:904 appTools/ToolTransform.py:683 msgid "Y angle" msgstr "Y Winkel" -#: appEditors/AppGeoEditor.py:759 appEditors/AppGerberEditor.py:5452 -#: appTools/ToolTransform.py:206 +#: appEditors/AppGeoEditor.py:759 appEditors/AppGerberEditor.py:5469 +#: appTools/ToolTransform.py:693 msgid "Skew Y" msgstr "Neigung Y" -#: appEditors/AppGeoEditor.py:790 appEditors/AppGerberEditor.py:5483 +#: appEditors/AppGeoEditor.py:790 appEditors/AppGerberEditor.py:5500 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:120 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:162 -#: appTools/ToolFilm.py:145 appTools/ToolTransform.py:237 +#: appTools/ToolFilm.py:851 appTools/ToolTransform.py:724 msgid "X factor" msgstr "X Faktor" -#: appEditors/AppGeoEditor.py:792 appEditors/AppGerberEditor.py:5485 +#: appEditors/AppGeoEditor.py:792 appEditors/AppGerberEditor.py:5502 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:164 -#: appTools/ToolTransform.py:239 +#: appTools/ToolTransform.py:726 msgid "Factor for scaling on X axis." msgstr "Faktor für die Skalierung auf der X-Achse." -#: appEditors/AppGeoEditor.py:799 appEditors/AppGerberEditor.py:5492 -#: appTools/ToolTransform.py:246 +#: appEditors/AppGeoEditor.py:799 appEditors/AppGerberEditor.py:5509 +#: appTools/ToolTransform.py:733 msgid "Scale X" msgstr "Maßstab X" #: appEditors/AppGeoEditor.py:801 appEditors/AppGeoEditor.py:821 -#: appEditors/AppGerberEditor.py:5494 appEditors/AppGerberEditor.py:5514 -#: appTools/ToolTransform.py:248 appTools/ToolTransform.py:268 +#: appEditors/AppGerberEditor.py:5511 appEditors/AppGerberEditor.py:5531 +#: appTools/ToolTransform.py:735 appTools/ToolTransform.py:755 msgid "" "Scale the selected object(s).\n" "The point of reference depends on \n" @@ -2214,60 +2757,60 @@ msgstr "" "Der Bezugspunkt hängt von ab\n" "das Kontrollkästchen Skalenreferenz." -#: appEditors/AppGeoEditor.py:810 appEditors/AppGerberEditor.py:5503 +#: appEditors/AppGeoEditor.py:810 appEditors/AppGerberEditor.py:5520 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:129 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:175 -#: appTools/ToolFilm.py:154 appTools/ToolTransform.py:257 +#: appTools/ToolFilm.py:860 appTools/ToolTransform.py:744 msgid "Y factor" msgstr "Y Faktor" -#: appEditors/AppGeoEditor.py:812 appEditors/AppGerberEditor.py:5505 +#: appEditors/AppGeoEditor.py:812 appEditors/AppGerberEditor.py:5522 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:177 -#: appTools/ToolTransform.py:259 +#: appTools/ToolTransform.py:746 msgid "Factor for scaling on Y axis." msgstr "Faktor für die Skalierung auf der Y-Achse." -#: appEditors/AppGeoEditor.py:819 appEditors/AppGerberEditor.py:5512 -#: appTools/ToolTransform.py:266 +#: appEditors/AppGeoEditor.py:819 appEditors/AppGerberEditor.py:5529 +#: appTools/ToolTransform.py:753 msgid "Scale Y" msgstr "Maßstab Y" -#: appEditors/AppGeoEditor.py:846 appEditors/AppGerberEditor.py:5539 -#: appTools/ToolTransform.py:293 +#: appEditors/AppGeoEditor.py:846 appEditors/AppGerberEditor.py:5556 +#: appTools/ToolTransform.py:780 msgid "Flip on X" msgstr "Flip auf X" #: appEditors/AppGeoEditor.py:848 appEditors/AppGeoEditor.py:853 -#: appEditors/AppGerberEditor.py:5541 appEditors/AppGerberEditor.py:5546 -#: appTools/ToolTransform.py:295 appTools/ToolTransform.py:300 +#: appEditors/AppGerberEditor.py:5558 appEditors/AppGerberEditor.py:5563 +#: appTools/ToolTransform.py:782 appTools/ToolTransform.py:787 msgid "Flip the selected object(s) over the X axis." msgstr "Drehen Sie die ausgewählten Objekte über die X-Achse." -#: appEditors/AppGeoEditor.py:851 appEditors/AppGerberEditor.py:5544 -#: appTools/ToolTransform.py:298 +#: appEditors/AppGeoEditor.py:851 appEditors/AppGerberEditor.py:5561 +#: appTools/ToolTransform.py:785 msgid "Flip on Y" msgstr "Flip auf Y" -#: appEditors/AppGeoEditor.py:871 appEditors/AppGerberEditor.py:5564 +#: appEditors/AppGeoEditor.py:871 appEditors/AppGerberEditor.py:5581 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:191 -#: appTools/ToolTransform.py:318 +#: appTools/ToolTransform.py:805 msgid "X val" msgstr "X-Wert" -#: appEditors/AppGeoEditor.py:873 appEditors/AppGerberEditor.py:5566 +#: appEditors/AppGeoEditor.py:873 appEditors/AppGerberEditor.py:5583 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:193 -#: appTools/ToolTransform.py:320 +#: appTools/ToolTransform.py:807 msgid "Distance to offset on X axis. In current units." msgstr "Abstand zum Offset auf der X-Achse. In aktuellen Einheiten." -#: appEditors/AppGeoEditor.py:880 appEditors/AppGerberEditor.py:5573 -#: appTools/ToolTransform.py:327 +#: appEditors/AppGeoEditor.py:880 appEditors/AppGerberEditor.py:5590 +#: appTools/ToolTransform.py:814 msgid "Offset X" msgstr "Versatz X" #: appEditors/AppGeoEditor.py:882 appEditors/AppGeoEditor.py:902 -#: appEditors/AppGerberEditor.py:5575 appEditors/AppGerberEditor.py:5595 -#: appTools/ToolTransform.py:329 appTools/ToolTransform.py:349 +#: appEditors/AppGerberEditor.py:5592 appEditors/AppGerberEditor.py:5612 +#: appTools/ToolTransform.py:816 appTools/ToolTransform.py:836 msgid "" "Offset the selected object(s).\n" "The point of reference is the middle of\n" @@ -2277,33 +2820,34 @@ msgstr "" "Der Bezugspunkt ist die Mitte von\n" "der Begrenzungsrahmen für alle ausgewählten Objekte.\n" -#: appEditors/AppGeoEditor.py:891 appEditors/AppGerberEditor.py:5584 +#: appEditors/AppGeoEditor.py:891 appEditors/AppGerberEditor.py:5601 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:204 -#: appTools/ToolTransform.py:338 +#: appTools/ToolTransform.py:825 msgid "Y val" msgstr "Y-Wert" -#: appEditors/AppGeoEditor.py:893 appEditors/AppGerberEditor.py:5586 +#: appEditors/AppGeoEditor.py:893 appEditors/AppGerberEditor.py:5603 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:206 -#: appTools/ToolTransform.py:340 +#: appTools/ToolTransform.py:827 msgid "Distance to offset on Y axis. In current units." msgstr "Abstand zum Offset auf der Y-Achse. In aktuellen Einheiten." -#: appEditors/AppGeoEditor.py:900 appEditors/AppGerberEditor.py:5593 -#: appTools/ToolTransform.py:347 +#: appEditors/AppGeoEditor.py:900 appEditors/AppGerberEditor.py:5610 +#: appTools/ToolTransform.py:834 msgid "Offset Y" msgstr "Versatz Y" -#: appEditors/AppGeoEditor.py:920 appEditors/AppGerberEditor.py:5613 +#: appEditors/AppGeoEditor.py:920 appEditors/AppGerberEditor.py:5630 +#: appGUI/ObjectUI.py:410 appGUI/ObjectUI.py:447 #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:142 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:216 -#: appTools/ToolQRCode.py:206 appTools/ToolTransform.py:367 +#: appTools/ToolQRCode.py:784 appTools/ToolTransform.py:854 msgid "Rounded" msgstr "Agberundet" -#: appEditors/AppGeoEditor.py:922 appEditors/AppGerberEditor.py:5615 +#: appEditors/AppGeoEditor.py:922 appEditors/AppGerberEditor.py:5632 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:218 -#: appTools/ToolTransform.py:369 +#: appTools/ToolTransform.py:856 msgid "" "If checked then the buffer will surround the buffered shape,\n" "every corner will be rounded.\n" @@ -2315,16 +2859,16 @@ msgstr "" "Wenn nicht markiert, folgt der Puffer der exakten Geometrie\n" "der gepufferten Form." -#: appEditors/AppGeoEditor.py:930 appEditors/AppGerberEditor.py:5623 +#: appEditors/AppGeoEditor.py:930 appEditors/AppGerberEditor.py:5640 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:226 -#: appTools/ToolDistance.py:505 appTools/ToolDistanceMin.py:286 -#: appTools/ToolTransform.py:377 +#: appTools/ToolDistance.py:408 appTools/ToolDistanceMin.py:199 +#: appTools/ToolTransform.py:864 msgid "Distance" msgstr "Entfernung" -#: appEditors/AppGeoEditor.py:932 appEditors/AppGerberEditor.py:5625 +#: appEditors/AppGeoEditor.py:932 appEditors/AppGerberEditor.py:5642 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:228 -#: appTools/ToolTransform.py:379 +#: appTools/ToolTransform.py:866 msgid "" "A positive value will create the effect of dilation,\n" "while a negative value will create the effect of erosion.\n" @@ -2336,13 +2880,13 @@ msgstr "" "Jedes Geometrieelement des Objekts wird vergrößert\n" "oder mit der \"Entfernung\" verringert." -#: appEditors/AppGeoEditor.py:944 appEditors/AppGerberEditor.py:5637 -#: appTools/ToolTransform.py:391 +#: appEditors/AppGeoEditor.py:944 appEditors/AppGerberEditor.py:5654 +#: appTools/ToolTransform.py:878 msgid "Buffer D" msgstr "Puffer E" -#: appEditors/AppGeoEditor.py:946 appEditors/AppGerberEditor.py:5639 -#: appTools/ToolTransform.py:393 +#: appEditors/AppGeoEditor.py:946 appEditors/AppGerberEditor.py:5656 +#: appTools/ToolTransform.py:880 msgid "" "Create the buffer effect on each geometry,\n" "element from the selected object, using the distance." @@ -2350,9 +2894,9 @@ msgstr "" "Erstellen Sie den Puffereffekt für jede Geometrie.\n" "Element aus dem ausgewählten Objekt unter Verwendung des Abstands." -#: appEditors/AppGeoEditor.py:957 appEditors/AppGerberEditor.py:5650 +#: appEditors/AppGeoEditor.py:957 appEditors/AppGerberEditor.py:5667 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:245 -#: appTools/ToolTransform.py:404 +#: appTools/ToolTransform.py:891 msgid "" "A positive value will create the effect of dilation,\n" "while a negative value will create the effect of erosion.\n" @@ -2366,13 +2910,13 @@ msgstr "" "oder verringert, um dem 'Wert' zu entsprechen. Wert ist ein Prozentsatz\n" "der ursprünglichen Dimension." -#: appEditors/AppGeoEditor.py:970 appEditors/AppGerberEditor.py:5663 -#: appTools/ToolTransform.py:417 +#: appEditors/AppGeoEditor.py:970 appEditors/AppGerberEditor.py:5680 +#: appTools/ToolTransform.py:904 msgid "Buffer F" msgstr "Puffer F" -#: appEditors/AppGeoEditor.py:972 appEditors/AppGerberEditor.py:5665 -#: appTools/ToolTransform.py:419 +#: appEditors/AppGeoEditor.py:972 appEditors/AppGerberEditor.py:5682 +#: appTools/ToolTransform.py:906 msgid "" "Create the buffer effect on each geometry,\n" "element from the selected object, using the factor." @@ -2380,59 +2924,59 @@ msgstr "" "Erstellen Sie den Puffereffekt für jede Geometrie.\n" "Element aus dem ausgewählten Objekt unter Verwendung des Faktors." -#: appEditors/AppGeoEditor.py:1043 appEditors/AppGerberEditor.py:5736 -#: appGUI/ObjectUI.py:1103 appGUI/ObjectUI.py:1958 -#: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:48 +#: appEditors/AppGeoEditor.py:1043 appEditors/AppGerberEditor.py:5753 +#: appGUI/ObjectUI.py:1443 appGUI/preferences/tools/Tools2CalPrefGroupUI.py:48 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:54 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:70 -#: appTools/ToolCalibration.py:186 appTools/ToolNCC.py:109 -#: appTools/ToolPaint.py:102 appTools/ToolPanelize.py:98 -#: appTools/ToolTransform.py:70 +#: appTools/ToolCalibration.py:881 appTools/ToolDrilling.py:2526 +#: appTools/ToolFilm.py:784 appTools/ToolMilling.py:2218 +#: appTools/ToolNCC.py:3754 appTools/ToolPaint.py:2787 +#: appTools/ToolPanelize.py:697 appTools/ToolTransform.py:557 msgid "Object" msgstr "Objekt" #: appEditors/AppGeoEditor.py:1107 appEditors/AppGeoEditor.py:1130 #: appEditors/AppGeoEditor.py:1276 appEditors/AppGeoEditor.py:1301 #: appEditors/AppGeoEditor.py:1335 appEditors/AppGeoEditor.py:1370 -#: appEditors/AppGeoEditor.py:1401 appEditors/AppGerberEditor.py:5800 -#: appEditors/AppGerberEditor.py:5823 appEditors/AppGerberEditor.py:5968 -#: appEditors/AppGerberEditor.py:6001 appEditors/AppGerberEditor.py:6044 -#: appEditors/AppGerberEditor.py:6085 appEditors/AppGerberEditor.py:6121 +#: appEditors/AppGeoEditor.py:1401 appEditors/AppGerberEditor.py:5817 +#: appEditors/AppGerberEditor.py:5840 appEditors/AppGerberEditor.py:5985 +#: appEditors/AppGerberEditor.py:6018 appEditors/AppGerberEditor.py:6061 +#: appEditors/AppGerberEditor.py:6102 appEditors/AppGerberEditor.py:6138 msgid "No shape selected." msgstr "Keine Form ausgewählt." -#: appEditors/AppGeoEditor.py:1115 appEditors/AppGerberEditor.py:5808 -#: appTools/ToolTransform.py:585 +#: appEditors/AppGeoEditor.py:1115 appEditors/AppGerberEditor.py:5825 +#: appTools/ToolTransform.py:150 msgid "Incorrect format for Point value. Needs format X,Y" msgstr "Falsches Format für Punktwert. Benötigt Format X, Y." -#: appEditors/AppGeoEditor.py:1140 appEditors/AppGerberEditor.py:5833 -#: appTools/ToolTransform.py:602 +#: appEditors/AppGeoEditor.py:1140 appEditors/AppGerberEditor.py:5850 +#: appTools/ToolTransform.py:167 msgid "Rotate transformation can not be done for a value of 0." msgstr "" "Bei einem Wert von 0 kann keine Rotationstransformation durchgeführt werden." #: appEditors/AppGeoEditor.py:1198 appEditors/AppGeoEditor.py:1219 -#: appEditors/AppGerberEditor.py:5891 appEditors/AppGerberEditor.py:5912 -#: appTools/ToolTransform.py:660 appTools/ToolTransform.py:681 +#: appEditors/AppGerberEditor.py:5908 appEditors/AppGerberEditor.py:5929 +#: appTools/ToolTransform.py:225 appTools/ToolTransform.py:246 msgid "Scale transformation can not be done for a factor of 0 or 1." msgstr "" "Eine Skalentransformation kann für einen Faktor von 0 oder 1 nicht " "durchgeführt werden." #: appEditors/AppGeoEditor.py:1232 appEditors/AppGeoEditor.py:1241 -#: appEditors/AppGerberEditor.py:5925 appEditors/AppGerberEditor.py:5934 -#: appTools/ToolTransform.py:694 appTools/ToolTransform.py:703 +#: appEditors/AppGerberEditor.py:5942 appEditors/AppGerberEditor.py:5951 +#: appTools/ToolTransform.py:259 appTools/ToolTransform.py:268 msgid "Offset transformation can not be done for a value of 0." msgstr "" "Bei einem Wert von 0 kann keine Offset-Transformation durchgeführt werden." -#: appEditors/AppGeoEditor.py:1271 appEditors/AppGerberEditor.py:5971 -#: appTools/ToolTransform.py:731 +#: appEditors/AppGeoEditor.py:1271 appEditors/AppGerberEditor.py:5988 +#: appTools/ToolTransform.py:296 msgid "Appying Rotate" msgstr "Anwenden Drehen" -#: appEditors/AppGeoEditor.py:1284 appEditors/AppGerberEditor.py:5983 +#: appEditors/AppGeoEditor.py:1284 appEditors/AppGerberEditor.py:6000 msgid "Done. Rotate completed." msgstr "Erledigt. Drehen abgeschlossen." @@ -2440,18 +2984,18 @@ msgstr "Erledigt. Drehen abgeschlossen." msgid "Rotation action was not executed" msgstr "Rotationsaktion wurde nicht ausgeführt" -#: appEditors/AppGeoEditor.py:1304 appEditors/AppGerberEditor.py:6004 -#: appTools/ToolTransform.py:757 +#: appEditors/AppGeoEditor.py:1304 appEditors/AppGerberEditor.py:6021 +#: appTools/ToolTransform.py:322 msgid "Applying Flip" msgstr "Flip anwenden" -#: appEditors/AppGeoEditor.py:1312 appEditors/AppGerberEditor.py:6016 -#: appTools/ToolTransform.py:774 +#: appEditors/AppGeoEditor.py:1312 appEditors/AppGerberEditor.py:6033 +#: appTools/ToolTransform.py:339 msgid "Flip on the Y axis done" msgstr "Spiegeln Sie die Y-Achse bereit" -#: appEditors/AppGeoEditor.py:1315 appEditors/AppGerberEditor.py:6024 -#: appTools/ToolTransform.py:783 +#: appEditors/AppGeoEditor.py:1315 appEditors/AppGerberEditor.py:6041 +#: appTools/ToolTransform.py:348 msgid "Flip on the X axis done" msgstr "Spiegeln Sie die X-Achse bereit" @@ -2459,16 +3003,16 @@ msgstr "Spiegeln Sie die X-Achse bereit" msgid "Flip action was not executed" msgstr "Spiegeln-Aktion wurde nicht ausgeführt" -#: appEditors/AppGeoEditor.py:1338 appEditors/AppGerberEditor.py:6047 -#: appTools/ToolTransform.py:804 +#: appEditors/AppGeoEditor.py:1338 appEditors/AppGerberEditor.py:6064 +#: appTools/ToolTransform.py:369 msgid "Applying Skew" msgstr "Schräglauf anwenden" -#: appEditors/AppGeoEditor.py:1347 appEditors/AppGerberEditor.py:6063 +#: appEditors/AppGeoEditor.py:1347 appEditors/AppGerberEditor.py:6080 msgid "Skew on the X axis done" msgstr "Schrägstellung auf der X-Achse erfolgt" -#: appEditors/AppGeoEditor.py:1349 appEditors/AppGerberEditor.py:6065 +#: appEditors/AppGeoEditor.py:1349 appEditors/AppGerberEditor.py:6082 msgid "Skew on the Y axis done" msgstr "Schrägstellung auf der Y-Achse erfolgt" @@ -2476,16 +3020,16 @@ msgstr "Schrägstellung auf der Y-Achse erfolgt" msgid "Skew action was not executed" msgstr "Die Versatzaktion wurde nicht ausgeführt" -#: appEditors/AppGeoEditor.py:1373 appEditors/AppGerberEditor.py:6088 -#: appTools/ToolTransform.py:831 +#: appEditors/AppGeoEditor.py:1373 appEditors/AppGerberEditor.py:6105 +#: appTools/ToolTransform.py:396 msgid "Applying Scale" msgstr "Maßstab anwenden" -#: appEditors/AppGeoEditor.py:1382 appEditors/AppGerberEditor.py:6101 +#: appEditors/AppGeoEditor.py:1382 appEditors/AppGerberEditor.py:6118 msgid "Scale on the X axis done" msgstr "Skalieren auf der X-Achse erledigt" -#: appEditors/AppGeoEditor.py:1384 appEditors/AppGerberEditor.py:6103 +#: appEditors/AppGeoEditor.py:1384 appEditors/AppGerberEditor.py:6120 msgid "Scale on the Y axis done" msgstr "Skalieren auf der Y-Achse erledigt" @@ -2493,16 +3037,16 @@ msgstr "Skalieren auf der Y-Achse erledigt" msgid "Scale action was not executed" msgstr "Skalierungsaktion wurde nicht ausgeführt" -#: appEditors/AppGeoEditor.py:1404 appEditors/AppGerberEditor.py:6124 -#: appTools/ToolTransform.py:859 +#: appEditors/AppGeoEditor.py:1404 appEditors/AppGerberEditor.py:6141 +#: appTools/ToolTransform.py:424 msgid "Applying Offset" msgstr "Offsetdruck anwenden" -#: appEditors/AppGeoEditor.py:1414 appEditors/AppGerberEditor.py:6145 +#: appEditors/AppGeoEditor.py:1414 appEditors/AppGerberEditor.py:6162 msgid "Offset on the X axis done" msgstr "Versatz auf der X-Achse erfolgt" -#: appEditors/AppGeoEditor.py:1416 appEditors/AppGerberEditor.py:6147 +#: appEditors/AppGeoEditor.py:1416 appEditors/AppGerberEditor.py:6164 msgid "Offset on the Y axis done" msgstr "Versatz auf der Y-Achse erfolgt" @@ -2510,65 +3054,65 @@ msgstr "Versatz auf der Y-Achse erfolgt" msgid "Offset action was not executed" msgstr "Offsetaktion wurde nicht ausgeführt" -#: appEditors/AppGeoEditor.py:1426 appEditors/AppGerberEditor.py:6157 +#: appEditors/AppGeoEditor.py:1426 appEditors/AppGerberEditor.py:6174 msgid "No shape selected" msgstr "Keine Form ausgewählt" -#: appEditors/AppGeoEditor.py:1429 appEditors/AppGerberEditor.py:6160 -#: appTools/ToolTransform.py:889 +#: appEditors/AppGeoEditor.py:1429 appEditors/AppGerberEditor.py:6177 +#: appTools/ToolTransform.py:453 msgid "Applying Buffer" msgstr "Anwenden von Puffer" -#: appEditors/AppGeoEditor.py:1436 appEditors/AppGerberEditor.py:6182 -#: appTools/ToolTransform.py:910 +#: appEditors/AppGeoEditor.py:1436 appEditors/AppGerberEditor.py:6199 +#: appTools/ToolTransform.py:474 msgid "Buffer done" msgstr "Puffer fertig" -#: appEditors/AppGeoEditor.py:1440 appEditors/AppGerberEditor.py:6186 -#: appTools/ToolTransform.py:879 appTools/ToolTransform.py:915 +#: appEditors/AppGeoEditor.py:1440 appEditors/AppGerberEditor.py:6203 +#: appTools/ToolTransform.py:443 appTools/ToolTransform.py:478 msgid "Action was not executed, due of" msgstr "Aktion wurde nicht ausgeführt, weil" -#: appEditors/AppGeoEditor.py:1444 appEditors/AppGerberEditor.py:6190 +#: appEditors/AppGeoEditor.py:1444 appEditors/AppGerberEditor.py:6207 msgid "Rotate ..." msgstr "Drehen ..." #: appEditors/AppGeoEditor.py:1445 appEditors/AppGeoEditor.py:1494 -#: appEditors/AppGeoEditor.py:1509 appEditors/AppGerberEditor.py:6191 -#: appEditors/AppGerberEditor.py:6240 appEditors/AppGerberEditor.py:6255 +#: appEditors/AppGeoEditor.py:1509 appEditors/AppGerberEditor.py:6208 +#: appEditors/AppGerberEditor.py:6257 appEditors/AppGerberEditor.py:6272 msgid "Enter an Angle Value (degrees)" msgstr "Geben Sie einen Winkelwert (Grad) ein" -#: appEditors/AppGeoEditor.py:1453 appEditors/AppGerberEditor.py:6199 +#: appEditors/AppGeoEditor.py:1453 appEditors/AppGerberEditor.py:6216 msgid "Geometry shape rotate done" msgstr "Geometrieform drehen fertig" -#: appEditors/AppGeoEditor.py:1456 appEditors/AppGerberEditor.py:6202 +#: appEditors/AppGeoEditor.py:1456 appEditors/AppGerberEditor.py:6219 msgid "Geometry shape rotate cancelled" msgstr "Geometrieform drehen abgebrochen" -#: appEditors/AppGeoEditor.py:1461 appEditors/AppGerberEditor.py:6207 +#: appEditors/AppGeoEditor.py:1461 appEditors/AppGerberEditor.py:6224 msgid "Offset on X axis ..." msgstr "Versatz auf der X-Achse ..." #: appEditors/AppGeoEditor.py:1462 appEditors/AppGeoEditor.py:1479 -#: appEditors/AppGerberEditor.py:6208 appEditors/AppGerberEditor.py:6225 +#: appEditors/AppGerberEditor.py:6225 appEditors/AppGerberEditor.py:6242 msgid "Enter a distance Value" msgstr "Geben Sie einen Abstandswert ein" -#: appEditors/AppGeoEditor.py:1470 appEditors/AppGerberEditor.py:6216 +#: appEditors/AppGeoEditor.py:1470 appEditors/AppGerberEditor.py:6233 msgid "Geometry shape offset on X axis done" msgstr "Geometrieformversatz auf der X-Achse erfolgt" -#: appEditors/AppGeoEditor.py:1473 appEditors/AppGerberEditor.py:6219 +#: appEditors/AppGeoEditor.py:1473 appEditors/AppGerberEditor.py:6236 msgid "Geometry shape offset X cancelled" msgstr "[WARNING_NOTCL] Geometrieformversatz X abgebrochen" -#: appEditors/AppGeoEditor.py:1478 appEditors/AppGerberEditor.py:6224 +#: appEditors/AppGeoEditor.py:1478 appEditors/AppGerberEditor.py:6241 msgid "Offset on Y axis ..." msgstr "Versatz auf der Y-Achse ..." -#: appEditors/AppGeoEditor.py:1487 appEditors/AppGerberEditor.py:6233 +#: appEditors/AppGeoEditor.py:1487 appEditors/AppGerberEditor.py:6250 msgid "Geometry shape offset on Y axis done" msgstr "Geometrieformversatz auf Y-Achse erfolgt" @@ -2576,11 +3120,11 @@ msgstr "Geometrieformversatz auf Y-Achse erfolgt" msgid "Geometry shape offset on Y axis canceled" msgstr "Geometrieformversatz auf Y-Achse erfolgt" -#: appEditors/AppGeoEditor.py:1493 appEditors/AppGerberEditor.py:6239 +#: appEditors/AppGeoEditor.py:1493 appEditors/AppGerberEditor.py:6256 msgid "Skew on X axis ..." msgstr "Neigung auf der X-Achse ..." -#: appEditors/AppGeoEditor.py:1502 appEditors/AppGerberEditor.py:6248 +#: appEditors/AppGeoEditor.py:1502 appEditors/AppGerberEditor.py:6265 msgid "Geometry shape skew on X axis done" msgstr "Geometrieformversatz auf X-Achse" @@ -2588,11 +3132,11 @@ msgstr "Geometrieformversatz auf X-Achse" msgid "Geometry shape skew on X axis canceled" msgstr "Geometrieformversatz auf X-Achse" -#: appEditors/AppGeoEditor.py:1508 appEditors/AppGerberEditor.py:6254 +#: appEditors/AppGeoEditor.py:1508 appEditors/AppGerberEditor.py:6271 msgid "Skew on Y axis ..." msgstr "Neigung auf der Y-Achse ..." -#: appEditors/AppGeoEditor.py:1517 appEditors/AppGerberEditor.py:6263 +#: appEditors/AppGeoEditor.py:1517 appEditors/AppGerberEditor.py:6280 msgid "Geometry shape skew on Y axis done" msgstr "Geometrieformversatz auf Y-Achse erfolgt" @@ -2736,7 +3280,7 @@ msgstr " Erledigt. Hinzufügen von Text abgeschlossen." msgid "Create buffer geometry ..." msgstr "Puffergeometrie erstellen ..." -#: appEditors/AppGeoEditor.py:2990 appEditors/AppGerberEditor.py:5153 +#: appEditors/AppGeoEditor.py:2990 appEditors/AppGerberEditor.py:5170 msgid "Done. Buffer Tool completed." msgstr "Erledigt. Pufferwerkzeug abgeschlossen." @@ -2773,85 +3317,80 @@ msgstr "Malen geometrie erstellen ..." msgid "Shape transformations ..." msgstr "Formtransformationen ..." -#: appEditors/AppGeoEditor.py:3281 +#: appEditors/AppGeoEditor.py:3281 appGUI/ObjectUI.py:914 #: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:27 msgid "Geometry Editor" msgstr "Geo-Editor" #: appEditors/AppGeoEditor.py:3287 appEditors/AppGerberEditor.py:2495 -#: appEditors/AppGerberEditor.py:3951 appGUI/ObjectUI.py:282 -#: appGUI/ObjectUI.py:1394 appGUI/ObjectUI.py:2256 appTools/ToolCutOut.py:95 -#: appTools/ToolTransform.py:92 +#: appEditors/AppGerberEditor.py:3968 appEditors/appGCodeEditor.py:692 +#: appGUI/ObjectUI.py:276 appGUI/ObjectUI.py:858 appGUI/ObjectUI.py:1830 +#: appTools/ToolCutOut.py:1772 appTools/ToolDblSided.py:519 +#: appTools/ToolTransform.py:579 msgid "Type" msgstr "Typ" -#: appEditors/AppGeoEditor.py:3287 appGUI/ObjectUI.py:221 -#: appGUI/ObjectUI.py:521 appGUI/ObjectUI.py:1330 appGUI/ObjectUI.py:2165 -#: appGUI/ObjectUI.py:2469 appGUI/ObjectUI.py:2536 -#: appTools/ToolCalibration.py:234 appTools/ToolFiducials.py:70 -msgid "Name" -msgstr "Name" - -#: appEditors/AppGeoEditor.py:3539 +#: appEditors/AppGeoEditor.py:3557 msgid "Ring" msgstr "Ring" -#: appEditors/AppGeoEditor.py:3541 +#: appEditors/AppGeoEditor.py:3559 msgid "Line" msgstr "Linie" -#: appEditors/AppGeoEditor.py:3543 appGUI/MainGUI.py:1446 -#: appGUI/ObjectUI.py:1150 appGUI/ObjectUI.py:2005 +#: appEditors/AppGeoEditor.py:3561 appGUI/MainGUI.py:1496 +#: appGUI/ObjectUI.py:1490 #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:226 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:299 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:328 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:292 -#: appTools/ToolIsolation.py:567 appTools/ToolNCC.py:584 -#: appTools/ToolPaint.py:527 +#: appTools/ToolDrilling.py:2575 appTools/ToolIsolation.py:3376 +#: appTools/ToolMilling.py:2265 appTools/ToolNCC.py:4235 +#: appTools/ToolPaint.py:3167 msgid "Polygon" msgstr "Polygon" -#: appEditors/AppGeoEditor.py:3545 +#: appEditors/AppGeoEditor.py:3563 msgid "Multi-Line" msgstr "Mehrzeilig" -#: appEditors/AppGeoEditor.py:3547 +#: appEditors/AppGeoEditor.py:3565 msgid "Multi-Polygon" msgstr "Multi-Polygon" -#: appEditors/AppGeoEditor.py:3554 +#: appEditors/AppGeoEditor.py:3572 msgid "Geo Elem" msgstr "Geoelement" -#: appEditors/AppGeoEditor.py:4007 -msgid "Editing MultiGeo Geometry, tool" -msgstr "Bearbeiten von MultiGeo Geometry, Werkzeug" - -#: appEditors/AppGeoEditor.py:4009 -msgid "with diameter" -msgstr "mit Durchmesser" - -#: appEditors/AppGeoEditor.py:4081 +#: appEditors/AppGeoEditor.py:4028 msgid "Grid Snap enabled." msgstr "Rasterfang aktiviert." -#: appEditors/AppGeoEditor.py:4085 +#: appEditors/AppGeoEditor.py:4032 msgid "Grid Snap disabled." msgstr "Rasterfang deaktiviert." -#: appEditors/AppGeoEditor.py:4446 appGUI/MainGUI.py:3046 -#: appGUI/MainGUI.py:3092 appGUI/MainGUI.py:3110 appGUI/MainGUI.py:3254 -#: appGUI/MainGUI.py:3293 appGUI/MainGUI.py:3305 appGUI/MainGUI.py:3322 +#: appEditors/AppGeoEditor.py:4393 appGUI/MainGUI.py:3194 +#: appGUI/MainGUI.py:3240 appGUI/MainGUI.py:3258 appGUI/MainGUI.py:3402 +#: appGUI/MainGUI.py:3441 appGUI/MainGUI.py:3453 appGUI/MainGUI.py:3470 msgid "Click on target point." msgstr "Klicken Sie auf den Zielpunkt." -#: appEditors/AppGeoEditor.py:4762 appEditors/AppGeoEditor.py:4797 +#: appEditors/AppGeoEditor.py:4675 +msgid "Editing MultiGeo Geometry, tool" +msgstr "Bearbeiten von MultiGeo Geometry, Werkzeug" + +#: appEditors/AppGeoEditor.py:4677 appTools/ToolNCC.py:2232 +msgid "with diameter" +msgstr "mit Durchmesser" + +#: appEditors/AppGeoEditor.py:4780 appEditors/AppGeoEditor.py:4815 msgid "A selection of at least 2 geo items is required to do Intersection." msgstr "" "Eine Auswahl von mindestens 2 Geo-Elementen ist erforderlich, um die " "Kreuzung durchzuführen." -#: appEditors/AppGeoEditor.py:4883 appEditors/AppGeoEditor.py:4987 +#: appEditors/AppGeoEditor.py:4901 appEditors/AppGeoEditor.py:5005 msgid "" "Negative buffer value is not accepted. Use Buffer interior to generate an " "'inside' shape" @@ -2859,56 +3398,56 @@ msgstr "" "Negativer Pufferwert wird nicht akzeptiert. Verwenden Sie den " "Pufferinnenraum, um eine Innenform zu erzeugen" -#: appEditors/AppGeoEditor.py:4893 appEditors/AppGeoEditor.py:4946 -#: appEditors/AppGeoEditor.py:4996 +#: appEditors/AppGeoEditor.py:4911 appEditors/AppGeoEditor.py:4964 +#: appEditors/AppGeoEditor.py:5014 msgid "Nothing selected for buffering." msgstr "Nichts ist für die Pufferung ausgewählt." -#: appEditors/AppGeoEditor.py:4898 appEditors/AppGeoEditor.py:4950 -#: appEditors/AppGeoEditor.py:5001 +#: appEditors/AppGeoEditor.py:4916 appEditors/AppGeoEditor.py:4968 +#: appEditors/AppGeoEditor.py:5019 msgid "Invalid distance for buffering." msgstr "Ungültige Entfernung zum Puffern." -#: appEditors/AppGeoEditor.py:4922 appEditors/AppGeoEditor.py:5021 +#: appEditors/AppGeoEditor.py:4940 appEditors/AppGeoEditor.py:5039 msgid "Failed, the result is empty. Choose a different buffer value." msgstr "" "Fehlgeschlagen, das Ergebnis ist leer. Wählen Sie einen anderen Pufferwert." -#: appEditors/AppGeoEditor.py:4933 +#: appEditors/AppGeoEditor.py:4951 msgid "Full buffer geometry created." msgstr "Volle Puffergeometrie erstellt." -#: appEditors/AppGeoEditor.py:4939 +#: appEditors/AppGeoEditor.py:4957 msgid "Negative buffer value is not accepted." msgstr "Negativer Pufferwert wird nicht akzeptiert." -#: appEditors/AppGeoEditor.py:4970 +#: appEditors/AppGeoEditor.py:4988 msgid "Failed, the result is empty. Choose a smaller buffer value." msgstr "" "Fehlgeschlagen, das Ergebnis ist leer. Wählen Sie einen kleineren Pufferwert." -#: appEditors/AppGeoEditor.py:4980 +#: appEditors/AppGeoEditor.py:4998 msgid "Interior buffer geometry created." msgstr "Innere Puffergeometrie erstellt." -#: appEditors/AppGeoEditor.py:5031 +#: appEditors/AppGeoEditor.py:5049 msgid "Exterior buffer geometry created." msgstr "Außenpuffergeometrie erstellt." -#: appEditors/AppGeoEditor.py:5037 +#: appEditors/AppGeoEditor.py:5055 #, python-format msgid "Could not do Paint. Overlap value has to be less than 100%%." msgstr "Konnte nicht Malen. Der Überlappungswert muss kleiner als 100 %% sein." -#: appEditors/AppGeoEditor.py:5044 +#: appEditors/AppGeoEditor.py:5062 msgid "Nothing selected for painting." msgstr "Nichts zum Malen ausgewählt." -#: appEditors/AppGeoEditor.py:5050 +#: appEditors/AppGeoEditor.py:5068 msgid "Invalid value for" msgstr "Ungültiger Wert für" -#: appEditors/AppGeoEditor.py:5109 +#: appEditors/AppGeoEditor.py:5127 msgid "" "Could not do Paint. Try a different combination of parameters. Or a " "different method of Paint" @@ -2916,7 +3455,7 @@ msgstr "" "Konnte nicht malen. Probieren Sie eine andere Kombination von Parametern " "aus. Oder eine andere Malmethode" -#: appEditors/AppGeoEditor.py:5120 +#: appEditors/AppGeoEditor.py:5138 msgid "Paint done." msgstr "Malen fertig." @@ -3050,59 +3589,60 @@ msgstr "Erledigt. Öffnungsbewegung abgeschlossen." msgid "Done. Apertures copied." msgstr "Erledigt. Blende kopiert." -#: appEditors/AppGerberEditor.py:2462 appGUI/MainGUI.py:1477 +#: appEditors/AppGerberEditor.py:2462 appGUI/MainGUI.py:1527 +#: appGUI/ObjectUI.py:309 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:27 msgid "Gerber Editor" msgstr "Gerber-Editor" -#: appEditors/AppGerberEditor.py:2482 appGUI/ObjectUI.py:247 -#: appTools/ToolProperties.py:159 +#: appEditors/AppGerberEditor.py:2482 appGUI/ObjectUI.py:241 +#: appTools/ToolProperties.py:162 msgid "Apertures" msgstr "Öffnungen" -#: appEditors/AppGerberEditor.py:2484 appGUI/ObjectUI.py:249 +#: appEditors/AppGerberEditor.py:2484 appGUI/ObjectUI.py:243 msgid "Apertures Table for the Gerber Object." msgstr "Blendentabelle für das Gerberobjekt." -#: appEditors/AppGerberEditor.py:2495 appEditors/AppGerberEditor.py:3951 -#: appGUI/ObjectUI.py:282 +#: appEditors/AppGerberEditor.py:2495 appEditors/AppGerberEditor.py:3968 +#: appGUI/ObjectUI.py:276 msgid "Code" msgstr "Code" -#: appEditors/AppGerberEditor.py:2495 appEditors/AppGerberEditor.py:3951 -#: appGUI/ObjectUI.py:282 +#: appEditors/AppGerberEditor.py:2495 appEditors/AppGerberEditor.py:3968 +#: appGUI/ObjectUI.py:276 #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:103 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:167 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:196 #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:43 -#: appTools/ToolCopperThieving.py:265 appTools/ToolCopperThieving.py:305 -#: appTools/ToolFiducials.py:159 +#: appTools/ToolCopperThieving.py:1354 appTools/ToolCopperThieving.py:1394 +#: appTools/ToolFiducials.py:770 msgid "Size" msgstr "Größe" -#: appEditors/AppGerberEditor.py:2495 appEditors/AppGerberEditor.py:3951 -#: appGUI/ObjectUI.py:282 +#: appEditors/AppGerberEditor.py:2495 appEditors/AppGerberEditor.py:3968 +#: appGUI/ObjectUI.py:276 msgid "Dim" msgstr "Maße" -#: appEditors/AppGerberEditor.py:2500 appGUI/ObjectUI.py:286 +#: appEditors/AppGerberEditor.py:2500 appGUI/ObjectUI.py:280 msgid "Index" msgstr "Index" #: appEditors/AppGerberEditor.py:2502 appEditors/AppGerberEditor.py:2531 -#: appGUI/ObjectUI.py:288 +#: appGUI/ObjectUI.py:282 msgid "Aperture Code" msgstr "Öffnungscode" -#: appEditors/AppGerberEditor.py:2504 appGUI/ObjectUI.py:290 +#: appEditors/AppGerberEditor.py:2504 appGUI/ObjectUI.py:284 msgid "Type of aperture: circular, rectangle, macros etc" msgstr "Öffnungsart: kreisförmig, rechteckig, Makros usw" -#: appEditors/AppGerberEditor.py:2506 appGUI/ObjectUI.py:292 +#: appEditors/AppGerberEditor.py:2506 appGUI/ObjectUI.py:286 msgid "Aperture Size:" msgstr "Öffnungsgröße:" -#: appEditors/AppGerberEditor.py:2508 appGUI/ObjectUI.py:294 +#: appEditors/AppGerberEditor.py:2508 appGUI/ObjectUI.py:288 msgid "" "Aperture Dimensions:\n" " - (width, height) for R, O type.\n" @@ -3178,13 +3718,13 @@ msgid "Add a new aperture to the aperture list." msgstr "Fügen Sie der Blendenliste eine neue Blende hinzu." #: appEditors/AppGerberEditor.py:2595 appEditors/AppGerberEditor.py:2743 -#: appGUI/MainGUI.py:748 appGUI/MainGUI.py:1068 appGUI/MainGUI.py:1527 -#: appGUI/MainGUI.py:2099 appGUI/MainGUI.py:4514 appGUI/ObjectUI.py:1525 -#: appObjects/FlatCAMGeometry.py:563 appTools/ToolIsolation.py:298 -#: appTools/ToolIsolation.py:637 appTools/ToolNCC.py:316 -#: appTools/ToolNCC.py:637 appTools/ToolPaint.py:298 appTools/ToolPaint.py:681 -#: appTools/ToolSolderPaste.py:133 appTools/ToolSolderPaste.py:608 -#: app_Main.py:5796 +#: appGUI/MainGUI.py:757 appGUI/MainGUI.py:1093 appGUI/MainGUI.py:1577 +#: appGUI/MainGUI.py:2247 appGUI/MainGUI.py:4683 appGUI/ObjectUI.py:1007 +#: appObjects/FlatCAMGeometry.py:555 appTools/ToolIsolation.py:70 +#: appTools/ToolIsolation.py:3105 appTools/ToolNCC.py:69 +#: appTools/ToolNCC.py:3910 appTools/ToolPaint.py:143 +#: appTools/ToolPaint.py:2924 appTools/ToolSolderPaste.py:163 +#: appTools/ToolSolderPaste.py:1209 app_Main.py:6123 msgid "Delete" msgstr "Löschen" @@ -3293,8 +3833,8 @@ msgstr "Löschen Sie alle markierten Polygone." msgid "Clear all the markings." msgstr "Alle Markierungen entfernen." -#: appEditors/AppGerberEditor.py:2771 appGUI/MainGUI.py:1040 -#: appGUI/MainGUI.py:2072 appGUI/MainGUI.py:4511 +#: appEditors/AppGerberEditor.py:2771 appGUI/MainGUI.py:1065 +#: appGUI/MainGUI.py:2220 appGUI/MainGUI.py:4680 msgid "Add Pad Array" msgstr "Pad-Array hinzufügen" @@ -3332,13 +3872,13 @@ msgstr "" "Der Mindestwert beträgt -359,99 Grad.\n" "Maximalwert ist: 360.00 Grad." -#: appEditors/AppGerberEditor.py:3335 appEditors/AppGerberEditor.py:3339 +#: appEditors/AppGerberEditor.py:3352 appEditors/AppGerberEditor.py:3356 msgid "Aperture code value is missing or wrong format. Add it and retry." msgstr "" "Blendencodewert fehlt oder falsches Format. Fügen Sie es hinzu und versuchen " "Sie es erneut." -#: appEditors/AppGerberEditor.py:3375 +#: appEditors/AppGerberEditor.py:3392 msgid "" "Aperture dimensions value is missing or wrong format. Add it in format " "(width, height) and retry." @@ -3346,218 +3886,220 @@ msgstr "" "Wert für Blendenmaße fehlt oder falsches Format. Fügen Sie es im Format " "(Breite, Höhe) hinzu und versuchen Sie es erneut." -#: appEditors/AppGerberEditor.py:3388 +#: appEditors/AppGerberEditor.py:3405 msgid "Aperture size value is missing or wrong format. Add it and retry." msgstr "" "Der Wert für die Blendengröße fehlt oder das Format ist falsch. Fügen Sie es " "hinzu und versuchen Sie es erneut." -#: appEditors/AppGerberEditor.py:3399 +#: appEditors/AppGerberEditor.py:3416 msgid "Aperture already in the aperture table." msgstr "Blende bereits in der Blendentabelle." -#: appEditors/AppGerberEditor.py:3406 +#: appEditors/AppGerberEditor.py:3423 msgid "Added new aperture with code" msgstr "Neue Blende mit Code hinzugefügt" -#: appEditors/AppGerberEditor.py:3438 +#: appEditors/AppGerberEditor.py:3455 msgid " Select an aperture in Aperture Table" msgstr " Wählen Sie in Blende Table eine Blende aus" -#: appEditors/AppGerberEditor.py:3446 +#: appEditors/AppGerberEditor.py:3463 msgid "Select an aperture in Aperture Table -->" msgstr "Wählen Sie in Blende Table eine Blende aus -->" -#: appEditors/AppGerberEditor.py:3460 +#: appEditors/AppGerberEditor.py:3477 msgid "Deleted aperture with code" msgstr "Blende mit Code gelöscht" -#: appEditors/AppGerberEditor.py:3528 +#: appEditors/AppGerberEditor.py:3545 msgid "Dimensions need two float values separated by comma." msgstr "Bemaßungen benötigen zwei durch Komma getrennte Gleitkommawerte." -#: appEditors/AppGerberEditor.py:3537 +#: appEditors/AppGerberEditor.py:3554 msgid "Dimensions edited." msgstr "Abmessungen bearbeitet." -#: appEditors/AppGerberEditor.py:4066 +#: appEditors/AppGerberEditor.py:4083 msgid "Loading Gerber into Editor" msgstr "Gerber File wird in den Editor geladen" -#: appEditors/AppGerberEditor.py:4194 +#: appEditors/AppGerberEditor.py:4211 msgid "Setting up the UI" msgstr "UI wird initialisiert" -#: appEditors/AppGerberEditor.py:4195 +#: appEditors/AppGerberEditor.py:4212 msgid "Adding geometry finished. Preparing the GUI" msgstr "Geometrie hinzufügen fertig. Vorbereiten der GUI" -#: appEditors/AppGerberEditor.py:4204 +#: appEditors/AppGerberEditor.py:4221 msgid "Finished loading the Gerber object into the editor." msgstr "Gerber-Objekte wurde in den Editor geladen." -#: appEditors/AppGerberEditor.py:4345 +#: appEditors/AppGerberEditor.py:4362 msgid "" "There are no Aperture definitions in the file. Aborting Gerber creation." msgstr "" "Die Datei enthält keine Aperture-Definitionen. Abbruch der Gerber-Erstellung." -#: appEditors/AppGerberEditor.py:4347 appObjects/AppObject.py:133 -#: appObjects/FlatCAMGeometry.py:1786 appParsers/ParseExcellon.py:896 -#: appTools/ToolPcbWizard.py:432 app_Main.py:8589 app_Main.py:8653 -#: app_Main.py:8784 app_Main.py:8849 app_Main.py:9501 +#: appEditors/AppGerberEditor.py:4364 appObjects/AppObject.py:156 +#: appObjects/FlatCAMGeometry.py:1850 appParsers/ParseExcellon.py:972 +#: appTools/ToolPcbWizard.py:318 app_Main.py:8990 app_Main.py:9050 +#: app_Main.py:9181 app_Main.py:9246 app_Main.py:9898 msgid "An internal error has occurred. See shell.\n" msgstr "Ein interner Fehler ist aufgetreten. Siehe Shell.\n" -#: appEditors/AppGerberEditor.py:4355 +#: appEditors/AppGerberEditor.py:4372 msgid "Creating Gerber." msgstr "Gerber erstellen." -#: appEditors/AppGerberEditor.py:4367 +#: appEditors/AppGerberEditor.py:4384 msgid "Done. Gerber editing finished." msgstr "Erledigt. Gerber-Bearbeitung beendet." -#: appEditors/AppGerberEditor.py:4383 +#: appEditors/AppGerberEditor.py:4400 msgid "Cancelled. No aperture is selected" msgstr "Abgebrochen. Es ist keine Blende ausgewählt" -#: appEditors/AppGerberEditor.py:4538 app_Main.py:6122 +#: appEditors/AppGerberEditor.py:4555 app_Main.py:6456 msgid "Coordinates copied to clipboard." msgstr "Koordinaten in die Zwischenablage kopiert." -#: appEditors/AppGerberEditor.py:4985 +#: appEditors/AppGerberEditor.py:5002 msgid "Failed. No aperture geometry is selected." msgstr "Gescheitert. Es ist keine Aperturgeometrie ausgewählt." -#: appEditors/AppGerberEditor.py:4994 appEditors/AppGerberEditor.py:5265 +#: appEditors/AppGerberEditor.py:5011 appEditors/AppGerberEditor.py:5282 msgid "Done. Apertures geometry deleted." msgstr "Fertig. Blendengeometrie gelöscht." -#: appEditors/AppGerberEditor.py:5137 +#: appEditors/AppGerberEditor.py:5154 msgid "No aperture to buffer. Select at least one aperture and try again." msgstr "" "Keine Blende zum Puffern Wählen Sie mindestens eine Blende und versuchen Sie " "es erneut." -#: appEditors/AppGerberEditor.py:5149 +#: appEditors/AppGerberEditor.py:5166 appTools/ToolCutOut.py:756 +#: appTools/ToolCutOut.py:830 appTools/ToolCutOut.py:1049 +#: appTools/ToolCutOut.py:1088 camlib.py:4826 camlib.py:5582 msgid "Failed." msgstr "Gescheitert." -#: appEditors/AppGerberEditor.py:5168 +#: appEditors/AppGerberEditor.py:5185 msgid "Scale factor value is missing or wrong format. Add it and retry." msgstr "" "Der Skalierungsfaktor ist nicht vorhanden oder das Format ist falsch. Fügen " "Sie es hinzu und versuchen Sie es erneut." -#: appEditors/AppGerberEditor.py:5200 +#: appEditors/AppGerberEditor.py:5217 msgid "No aperture to scale. Select at least one aperture and try again." msgstr "" "Keine zu skalierende Blende Wählen Sie mindestens eine Blende und versuchen " "Sie es erneut." -#: appEditors/AppGerberEditor.py:5216 +#: appEditors/AppGerberEditor.py:5233 msgid "Done. Scale Tool completed." msgstr "Erledigt. Skalierungswerkzeug abgeschlossen." -#: appEditors/AppGerberEditor.py:5254 +#: appEditors/AppGerberEditor.py:5271 msgid "Polygons marked." msgstr "Polygone markiert." -#: appEditors/AppGerberEditor.py:5257 +#: appEditors/AppGerberEditor.py:5274 msgid "No polygons were marked. None fit within the limits." msgstr "Es wurden keine Polygone markiert. Keiner passt in die Grenzen." -#: appEditors/AppGerberEditor.py:5985 +#: appEditors/AppGerberEditor.py:6002 msgid "Rotation action was not executed." msgstr "Rotationsaktion wurde nicht ausgeführt." -#: appEditors/AppGerberEditor.py:6027 app_Main.py:5556 app_Main.py:5604 +#: appEditors/AppGerberEditor.py:6044 app_Main.py:5879 app_Main.py:5927 msgid "Flip action was not executed." msgstr "Flip-Aktion wurde nicht ausgeführt." -#: appEditors/AppGerberEditor.py:6067 +#: appEditors/AppGerberEditor.py:6084 msgid "Skew action was not executed." msgstr "Die Versatzaktion wurde nicht ausgeführt." -#: appEditors/AppGerberEditor.py:6106 +#: appEditors/AppGerberEditor.py:6123 msgid "Scale action was not executed." msgstr "Skalierungsaktion wurde nicht ausgeführt." -#: appEditors/AppGerberEditor.py:6150 +#: appEditors/AppGerberEditor.py:6167 msgid "Offset action was not executed." msgstr "Offsetaktion wurde nicht ausgeführt." -#: appEditors/AppGerberEditor.py:6236 +#: appEditors/AppGerberEditor.py:6253 msgid "Geometry shape offset Y cancelled" msgstr "Geometrieform-Versatz Y abgebrochen" -#: appEditors/AppGerberEditor.py:6251 +#: appEditors/AppGerberEditor.py:6268 msgid "Geometry shape skew X cancelled" msgstr "Geometrieformverzerren X abgebrochen" -#: appEditors/AppGerberEditor.py:6266 +#: appEditors/AppGerberEditor.py:6283 msgid "Geometry shape skew Y cancelled" msgstr "Geometrieformverzerren Y abgebrochen" -#: appEditors/FlatCAMTextEditor.py:74 +#: appEditors/AppTextEditor.py:75 msgid "Print Preview" msgstr "Druckvorschau" -#: appEditors/FlatCAMTextEditor.py:75 +#: appEditors/AppTextEditor.py:77 msgid "Open a OS standard Preview Print window." msgstr "" "Öffnen Sie ein Standardfenster für die Druckvorschau des Betriebssystems." -#: appEditors/FlatCAMTextEditor.py:78 +#: appEditors/AppTextEditor.py:80 msgid "Print Code" msgstr "Code drucken" -#: appEditors/FlatCAMTextEditor.py:79 +#: appEditors/AppTextEditor.py:82 msgid "Open a OS standard Print window." msgstr "Öffnen Sie ein Betriebssystem-Standard-Druckfenster." -#: appEditors/FlatCAMTextEditor.py:81 +#: appEditors/AppTextEditor.py:85 msgid "Find in Code" msgstr "Im Code suchen" -#: appEditors/FlatCAMTextEditor.py:82 +#: appEditors/AppTextEditor.py:87 msgid "Will search and highlight in yellow the string in the Find box." msgstr "Sucht und hebt die Zeichenfolge im Feld Suchen gelb hervor." -#: appEditors/FlatCAMTextEditor.py:86 +#: appEditors/AppTextEditor.py:91 msgid "Find box. Enter here the strings to be searched in the text." msgstr "" "Suchfeld. Geben Sie hier die Zeichenfolgen ein, nach denen im Text gesucht " "werden soll." -#: appEditors/FlatCAMTextEditor.py:88 +#: appEditors/AppTextEditor.py:93 msgid "Replace With" msgstr "Ersetzen mit" -#: appEditors/FlatCAMTextEditor.py:89 +#: appEditors/AppTextEditor.py:95 msgid "" "Will replace the string from the Find box with the one in the Replace box." msgstr "" "Ersetzt die Zeichenfolge aus dem Feld Suchen durch die Zeichenfolge aus dem " "Feld Ersetzen." -#: appEditors/FlatCAMTextEditor.py:93 +#: appEditors/AppTextEditor.py:99 msgid "String to replace the one in the Find box throughout the text." msgstr "" "Zeichenfolge, die die Zeichenfolge im Feld Suchen im gesamten Text ersetzt." -#: appEditors/FlatCAMTextEditor.py:95 appGUI/ObjectUI.py:2149 -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:54 +#: appEditors/AppTextEditor.py:101 appGUI/GUIElements.py:3498 +#: appGUI/ObjectUI.py:1726 appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:61 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:285 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:280 -#: appTools/ToolIsolation.py:514 appTools/ToolIsolation.py:1312 -#: appTools/ToolIsolation.py:1703 appTools/ToolPaint.py:485 -#: appTools/ToolPaint.py:1446 defaults.py:404 defaults.py:449 +#: appTools/ToolIsolation.py:802 appTools/ToolIsolation.py:1395 +#: appTools/ToolIsolation.py:3323 appTools/ToolPaint.py:1034 +#: appTools/ToolPaint.py:3125 defaults.py:413 defaults.py:500 #: tclCommands/TclCommandPaint.py:162 msgid "All" msgstr "Alles" -#: appEditors/FlatCAMTextEditor.py:96 +#: appEditors/AppTextEditor.py:102 msgid "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." @@ -3566,62 +4108,164 @@ msgstr "" "ersetzt\n" "mit dem Text im Feld \"Ersetzen\" .." -#: appEditors/FlatCAMTextEditor.py:99 +#: appEditors/AppTextEditor.py:105 msgid "Copy All" msgstr "Kopiere alles" -#: appEditors/FlatCAMTextEditor.py:100 +#: appEditors/AppTextEditor.py:107 msgid "Will copy all the text in the Code Editor to the clipboard." msgstr "Kopiert den gesamten Text im Code-Editor in die Zwischenablage." -#: appEditors/FlatCAMTextEditor.py:103 +#: appEditors/AppTextEditor.py:112 +#, fuzzy +#| msgid "Save changes" +msgid "Save changes internally." +msgstr "Änderungen speichern" + +#: appEditors/AppTextEditor.py:115 msgid "Open Code" msgstr "Code öffnen" -#: appEditors/FlatCAMTextEditor.py:104 +#: appEditors/AppTextEditor.py:117 msgid "Will open a text file in the editor." msgstr "Öffnet eine Textdatei im Editor." -#: appEditors/FlatCAMTextEditor.py:106 +#: appEditors/AppTextEditor.py:120 msgid "Save Code" msgstr "Code speichern" -#: appEditors/FlatCAMTextEditor.py:107 +#: appEditors/AppTextEditor.py:122 msgid "Will save the text in the editor into a file." msgstr "Speichert den Text im Editor in einer Datei." -#: appEditors/FlatCAMTextEditor.py:109 +#: appEditors/AppTextEditor.py:125 msgid "Run Code" msgstr "Code ausführen" -#: appEditors/FlatCAMTextEditor.py:110 +#: appEditors/AppTextEditor.py:126 msgid "Will run the TCL commands found in the text file, one by one." msgstr "Führt die in der Textdatei enthaltenen TCL-Befehle nacheinander aus." -#: appEditors/FlatCAMTextEditor.py:184 +#: appEditors/AppTextEditor.py:224 appEditors/appGCodeEditor.py:602 msgid "Open file" msgstr "Datei öffnen" -#: appEditors/FlatCAMTextEditor.py:215 appEditors/FlatCAMTextEditor.py:220 -#: appObjects/FlatCAMCNCJob.py:507 appObjects/FlatCAMCNCJob.py:512 -#: appTools/ToolSolderPaste.py:1508 +#: appEditors/AppTextEditor.py:255 appEditors/AppTextEditor.py:260 +#: appObjects/FlatCAMCNCJob.py:1485 appObjects/FlatCAMCNCJob.py:1490 +#: appObjects/FlatCAMCNCJob.py:1713 appObjects/FlatCAMCNCJob.py:1718 +#: appTools/ToolSolderPaste.py:1063 app_Main.py:7021 app_Main.py:7026 msgid "Export Code ..." msgstr "Code exportieren ..." -#: appEditors/FlatCAMTextEditor.py:272 appObjects/FlatCAMCNCJob.py:955 -#: appTools/ToolSolderPaste.py:1538 +#: appEditors/AppTextEditor.py:314 appObjects/FlatCAMCNCJob.py:1507 +#: appObjects/FlatCAMCNCJob.py:2106 appTools/ToolSolderPaste.py:1093 msgid "No such file or directory" msgstr "Keine solche Datei oder Ordner" -#: appEditors/FlatCAMTextEditor.py:284 appObjects/FlatCAMCNCJob.py:969 +#: appEditors/AppTextEditor.py:326 appObjects/FlatCAMCNCJob.py:2120 msgid "Saved to" msgstr "Gespeichert in" -#: appEditors/FlatCAMTextEditor.py:334 -msgid "Code Editor content copied to clipboard ..." +#: appEditors/AppTextEditor.py:374 +#, fuzzy +#| msgid "Code Editor content copied to clipboard ..." +msgid "Content copied to clipboard ..." msgstr "Code Editor Inhalt in die Zwischenablage kopiert ..." -#: appGUI/GUIElements.py:2703 +#: appEditors/appGCodeEditor.py:66 app_Main.py:7882 +msgid "Code Editor" +msgstr "Code-Editor" + +#: appEditors/appGCodeEditor.py:143 appEditors/appGCodeEditor.py:235 +#, fuzzy +#| msgid "View GCode" +msgid "All GCode" +msgstr "GCode anzeigen" + +#: appEditors/appGCodeEditor.py:149 appEditors/appGCodeEditor.py:241 +#, fuzzy +#| msgid "Save GCode" +msgid "Header GCode" +msgstr "Speichern Sie GCode" + +#: appEditors/appGCodeEditor.py:155 appEditors/appGCodeEditor.py:247 +#, fuzzy +#| msgid "Starting G-Code" +msgid "Start GCode" +msgstr "G-Code starten" + +#: appEditors/appGCodeEditor.py:577 appObjects/FlatCAMCNCJob.py:1811 +#: appTools/ToolCalibration.py:447 +msgid "Loaded Machine Code into Code Editor" +msgstr "Maschinencode in den Code-Editor geladen" + +#: appEditors/appGCodeEditor.py:667 appGUI/ObjectUI.py:1858 +#, fuzzy +#| msgid "Code Editor" +msgid "GCode Editor" +msgstr "Code-Editor" + +#: appEditors/appGCodeEditor.py:692 appEditors/appGCodeEditor.py:703 +#: appGUI/ObjectUI.py:858 appGUI/ObjectUI.py:1830 appGUI/ObjectUI.py:1840 +#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:138 +#: appTools/ToolCopperThieving.py:1314 +msgid "Dia" +msgstr "Durchm" + +#: appEditors/appGCodeEditor.py:692 appGUI/ObjectUI.py:858 +#: appGUI/ObjectUI.py:1830 appTools/ToolIsolation.py:2984 +#: appTools/ToolNCC.py:3777 appTools/ToolPaint.py:2812 +msgid "TT" +msgstr "TT" + +#: appEditors/appGCodeEditor.py:703 appGUI/ObjectUI.py:571 +#: appGUI/ObjectUI.py:1840 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:71 +#: appTools/ToolDrilling.py:2051 appTools/ToolMilling.py:1670 +#: appTools/ToolMilling.py:1769 appTools/ToolProperties.py:169 +msgid "Drills" +msgstr "Bohrer" + +#: appEditors/appGCodeEditor.py:703 appGUI/ObjectUI.py:571 +#: appGUI/ObjectUI.py:1840 +#: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:158 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:72 +#: appTools/ToolDrilling.py:2051 appTools/ToolMilling.py:1670 +#: appTools/ToolMilling.py:1770 appTools/ToolProperties.py:171 +msgid "Slots" +msgstr "Schlüssel" + +#: appEditors/appGCodeEditor.py:712 appEditors/appGCodeEditor.py:734 +msgid "CNC Code Snippet" +msgstr "" + +#: appEditors/appGCodeEditor.py:714 appEditors/appGCodeEditor.py:736 +msgid "Code snippet defined in Preferences." +msgstr "" + +#: appEditors/appGCodeEditor.py:720 appEditors/appGCodeEditor.py:742 +#, fuzzy +#| msgid "" +#| "Type here any G-Code commands you would\n" +#| "like to add at the beginning of the G-Code file." +msgid "" +"Type here any G-Code commands you would\n" +"like to insert at the cursor location." +msgstr "" +"Geben Sie hier alle G-Code-Befehle ein\n" +"die Sie am Anfang der G-Code-Datei hinzufügen möchten." + +#: appEditors/appGCodeEditor.py:726 appEditors/appGCodeEditor.py:748 +#, fuzzy +#| msgid "Insert QRCode" +msgid "Insert Code" +msgstr "QRCode einfügen" + +#: appEditors/appGCodeEditor.py:729 appEditors/appGCodeEditor.py:751 +msgid "Insert the code above at the cursor location." +msgstr "" + +#: appGUI/GUIElements.py:2949 msgid "" "The reference can be:\n" "- Absolute -> the reference point is point (0,0)\n" @@ -3631,19 +4275,19 @@ msgstr "" "- Absolut -> Der Bezugspunkt ist Punkt (0,0)\n" "- Relativ -> Der Referenzpunkt ist die Mausposition vor dem Sprung" -#: appGUI/GUIElements.py:2708 +#: appGUI/GUIElements.py:2954 msgid "Abs" msgstr "Abs" -#: appGUI/GUIElements.py:2709 +#: appGUI/GUIElements.py:2955 msgid "Relative" msgstr "Relativ" -#: appGUI/GUIElements.py:2719 +#: appGUI/GUIElements.py:2965 msgid "Location" msgstr "Ort" -#: appGUI/GUIElements.py:2721 +#: appGUI/GUIElements.py:2967 msgid "" "The Location value is a tuple (x,y).\n" "If the reference is Absolute then the Jump will be at the position (x,y).\n" @@ -3657,37 +4301,91 @@ msgstr "" "(x, y)\n" "vom aktuellen Mausstandort aus." -#: appGUI/GUIElements.py:2761 +#: appGUI/GUIElements.py:3007 msgid "Save Log" msgstr "Protokoll speichern" -#: appGUI/GUIElements.py:2771 app_Main.py:2682 app_Main.py:3028 -#: app_Main.py:3197 +#: appGUI/GUIElements.py:3017 app_Main.py:2803 app_Main.py:3175 +#: app_Main.py:3348 msgid "Close" msgstr "Schließen" -#: appGUI/GUIElements.py:2780 appTools/ToolShell.py:296 +#: appGUI/GUIElements.py:3026 appTools/ToolShell.py:296 msgid "Type >help< to get started" msgstr "Geben Sie> help Geo" msgstr "Geo/Gerber/Exc -> Geo zusammenfassen" -#: appGUI/MainGUI.py:336 +#: appGUI/MainGUI.py:366 msgid "" "Merge a selection of objects, which can be of type:\n" "- Gerber\n" @@ -3954,855 +4696,853 @@ msgstr "" "- Geometrie\n" "in ein neues Geometrieobjekt kombinieren." -#: appGUI/MainGUI.py:343 +#: appGUI/MainGUI.py:373 msgid "Join Excellon(s) -> Excellon" msgstr "Excellon(s) -> Excellon zusammenfassen" -#: appGUI/MainGUI.py:345 +#: appGUI/MainGUI.py:375 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." -#: appGUI/MainGUI.py:348 +#: appGUI/MainGUI.py:378 msgid "Join Gerber(s) -> Gerber" msgstr "Gerber(s) -> Gerber zusammenfassen" -#: appGUI/MainGUI.py:350 +#: appGUI/MainGUI.py:380 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." -#: appGUI/MainGUI.py:355 -msgid "Convert Single to MultiGeo" -msgstr "Konvertieren Sie Single in MultiGeo" - -#: appGUI/MainGUI.py:357 -msgid "" -"Will convert a Geometry object from single_geometry type\n" -"to a multi_geometry type." -msgstr "" -"Konvertiert ein Geometrieobjekt vom Typ single_geometry\n" -"zu einem multi_geometry-Typ." - -#: appGUI/MainGUI.py:361 -msgid "Convert Multi to SingleGeo" -msgstr "Konvertieren Sie Multi in SingleGeo" - -#: appGUI/MainGUI.py:363 -msgid "" -"Will convert a Geometry object from multi_geometry type\n" -"to a single_geometry type." -msgstr "" -"Konvertiert ein Geometrieobjekt vom Typ multi_geometry\n" -"zu einem single_geometry-Typ." - -#: appGUI/MainGUI.py:370 -msgid "Convert Any to Geo" -msgstr "Konvertieren Sie Any zu Geo" - -#: appGUI/MainGUI.py:373 -msgid "Convert Any to Gerber" -msgstr "Konvertieren Sie Any zu Gerber" - -#: appGUI/MainGUI.py:379 +#: appGUI/MainGUI.py:388 msgid "&Copy\tCtrl+C" msgstr "Kopieren\tSTRG+C" -#: appGUI/MainGUI.py:384 +#: appGUI/MainGUI.py:393 msgid "&Delete\tDEL" msgstr "Löschen\tDEL" -#: appGUI/MainGUI.py:389 +#: appGUI/MainGUI.py:398 msgid "Se&t Origin\tO" msgstr "Ursprung festlegen\tO" -#: appGUI/MainGUI.py:391 +#: appGUI/MainGUI.py:400 msgid "Move to Origin\tShift+O" msgstr "Zum Ursprung wechseln\tShift+O" -#: appGUI/MainGUI.py:394 +#: appGUI/MainGUI.py:403 msgid "Jump to Location\tJ" msgstr "Zum Ort springen\tJ" -#: appGUI/MainGUI.py:396 +#: appGUI/MainGUI.py:405 msgid "Locate in Object\tShift+J" msgstr "Suchen Sie im Objekt\tShift+J" -#: appGUI/MainGUI.py:401 +#: appGUI/MainGUI.py:410 msgid "Toggle Units\tQ" msgstr "Einheiten umschalten\tQ" -#: appGUI/MainGUI.py:403 +#: appGUI/MainGUI.py:412 msgid "&Select All\tCtrl+A" msgstr "Alles auswählen\tSTRG+A" -#: appGUI/MainGUI.py:408 +#: appGUI/MainGUI.py:417 msgid "&Preferences\tShift+P" msgstr "Einstellungen\tShift+P" -#: appGUI/MainGUI.py:414 appTools/ToolProperties.py:155 +#: appGUI/MainGUI.py:423 appTools/ToolProperties.py:158 msgid "Options" msgstr "Optionen" -#: appGUI/MainGUI.py:416 +#: appGUI/MainGUI.py:425 msgid "&Rotate Selection\tShift+(R)" msgstr "Auswahl drehen\tShift+(R)" -#: appGUI/MainGUI.py:421 +#: appGUI/MainGUI.py:430 msgid "&Skew on X axis\tShift+X" msgstr "Neigung auf der X-Achse\tShift+X" -#: appGUI/MainGUI.py:423 +#: appGUI/MainGUI.py:432 msgid "S&kew on Y axis\tShift+Y" msgstr "Neigung auf der Y-Achse\tShift+Y" -#: appGUI/MainGUI.py:428 +#: appGUI/MainGUI.py:437 msgid "Flip on &X axis\tX" msgstr "X-Achse kippen\tX" -#: appGUI/MainGUI.py:430 +#: appGUI/MainGUI.py:439 msgid "Flip on &Y axis\tY" msgstr "Y-Achse kippen\tY" -#: appGUI/MainGUI.py:435 +#: appGUI/MainGUI.py:444 msgid "View source\tAlt+S" msgstr "Quelltext anzeigen\tAlt+S" -#: appGUI/MainGUI.py:437 +#: appGUI/MainGUI.py:446 msgid "Tools DataBase\tCtrl+D" msgstr "Werkzeugdatenbank\tSTRG+D" -#: appGUI/MainGUI.py:444 appGUI/MainGUI.py:1427 +#: appGUI/MainGUI.py:453 appGUI/MainGUI.py:1477 msgid "View" msgstr "Aussicht" -#: appGUI/MainGUI.py:446 +#: appGUI/MainGUI.py:455 msgid "Enable all plots\tAlt+1" msgstr "Alle Diagramme aktivieren\tAlt+1" -#: appGUI/MainGUI.py:448 +#: appGUI/MainGUI.py:457 msgid "Disable all plots\tAlt+2" msgstr "Alle Diagramme deaktivieren\tAlt+2" -#: appGUI/MainGUI.py:450 +#: appGUI/MainGUI.py:459 msgid "Disable non-selected\tAlt+3" msgstr "Nicht ausgewählte Diagramme deaktivieren\tAlt+3" -#: appGUI/MainGUI.py:454 +#: appGUI/MainGUI.py:463 msgid "&Zoom Fit\tV" msgstr "Passed zoomen\tV" -#: appGUI/MainGUI.py:456 +#: appGUI/MainGUI.py:465 msgid "&Zoom In\t=" msgstr "Hineinzoomen\t=" -#: appGUI/MainGUI.py:458 +#: appGUI/MainGUI.py:467 msgid "&Zoom Out\t-" msgstr "Rauszoomen\t-" -#: appGUI/MainGUI.py:463 +#: appGUI/MainGUI.py:472 msgid "Redraw All\tF5" msgstr "Alles neu zeichnen\tF5" -#: appGUI/MainGUI.py:467 +#: appGUI/MainGUI.py:476 msgid "Toggle Code Editor\tShift+E" msgstr "Code-Editor umschalten\tShift+E" -#: appGUI/MainGUI.py:470 +#: appGUI/MainGUI.py:479 msgid "&Toggle FullScreen\tAlt+F10" msgstr "FullScreen umschalten\tAlt+F10" -#: appGUI/MainGUI.py:472 +#: appGUI/MainGUI.py:481 msgid "&Toggle Plot Area\tCtrl+F10" msgstr "Plotbereich umschalten\tSTRG+F10" -#: appGUI/MainGUI.py:474 +#: appGUI/MainGUI.py:483 msgid "&Toggle Project/Sel/Tool\t`" msgstr "Projekt/Auswahl/Werkzeug umschalten\t`" -#: appGUI/MainGUI.py:478 +#: appGUI/MainGUI.py:487 msgid "&Toggle Grid Snap\tG" msgstr "Schaltet den Rasterfang ein\tG" -#: appGUI/MainGUI.py:480 +#: appGUI/MainGUI.py:489 msgid "&Toggle Grid Lines\tAlt+G" msgstr "Gitterlinien umschalten\tAlt+G" -#: appGUI/MainGUI.py:482 +#: appGUI/MainGUI.py:491 msgid "&Toggle Axis\tShift+G" msgstr "Achse umschalten\tShift+G" -#: appGUI/MainGUI.py:484 +#: appGUI/MainGUI.py:493 msgid "Toggle Workspace\tShift+W" msgstr "Arbeitsbereich umschalten\tShift+W" -#: appGUI/MainGUI.py:486 +#: appGUI/MainGUI.py:495 msgid "Toggle HUD\tAlt+H" msgstr "Umschalten HUD\tAlt+H" -#: appGUI/MainGUI.py:491 +#: appGUI/MainGUI.py:500 msgid "Objects" msgstr "Objekte" -#: appGUI/MainGUI.py:494 appGUI/MainGUI.py:4099 -#: appObjects/ObjectCollection.py:1121 appObjects/ObjectCollection.py:1168 +#: appGUI/MainGUI.py:503 appGUI/MainGUI.py:4268 +#: appObjects/ObjectCollection.py:1128 appObjects/ObjectCollection.py:1175 msgid "Select All" msgstr "Select All" -#: appGUI/MainGUI.py:496 appObjects/ObjectCollection.py:1125 -#: appObjects/ObjectCollection.py:1172 +#: appGUI/MainGUI.py:505 appObjects/ObjectCollection.py:1132 +#: appObjects/ObjectCollection.py:1179 msgid "Deselect All" msgstr "Alle abwählen" -#: appGUI/MainGUI.py:505 +#: appGUI/MainGUI.py:514 msgid "&Command Line\tS" msgstr "Befehlszeile\tS" -#: appGUI/MainGUI.py:510 +#: appGUI/MainGUI.py:519 msgid "Help" msgstr "Hilfe" -#: appGUI/MainGUI.py:512 +#: appGUI/MainGUI.py:521 msgid "Online Help\tF1" msgstr "Onlinehilfe\tF1" -#: appGUI/MainGUI.py:518 app_Main.py:3166 app_Main.py:3175 +#: appGUI/MainGUI.py:527 app_Main.py:3313 app_Main.py:3322 msgid "Bookmarks Manager" msgstr "Lesezeichen verwalten" -#: appGUI/MainGUI.py:522 +#: appGUI/MainGUI.py:531 msgid "Report a bug" msgstr "Einen Fehler melden" -#: appGUI/MainGUI.py:525 +#: appGUI/MainGUI.py:534 msgid "Excellon Specification" msgstr "Excellon-Spezifikation" -#: appGUI/MainGUI.py:527 +#: appGUI/MainGUI.py:536 msgid "Gerber Specification" msgstr "Gerber-Spezifikation" -#: appGUI/MainGUI.py:532 +#: appGUI/MainGUI.py:541 msgid "Shortcuts List\tF3" msgstr "Tastenkürzel Liste\tF3" -#: appGUI/MainGUI.py:534 +#: appGUI/MainGUI.py:543 msgid "YouTube Channel\tF4" msgstr "Youtube Kanal\tF4" -#: appGUI/MainGUI.py:539 -msgid "ReadMe?" -msgstr "Liesmich?" +#: appGUI/MainGUI.py:548 +#, fuzzy +#| msgid "How To's" +msgid "How To" +msgstr "How To's" -#: appGUI/MainGUI.py:542 app_Main.py:2649 +#: appGUI/MainGUI.py:551 app_Main.py:2770 msgid "About FlatCAM" msgstr "Über FlatCAM" -#: appGUI/MainGUI.py:551 +#: appGUI/MainGUI.py:560 msgid "Add Circle\tO" msgstr "Kreis hinzufügen\tO" -#: appGUI/MainGUI.py:554 +#: appGUI/MainGUI.py:563 msgid "Add Arc\tA" msgstr "Bogen hinzufügen\tA" -#: appGUI/MainGUI.py:557 +#: appGUI/MainGUI.py:566 msgid "Add Rectangle\tR" msgstr "Rechteck hinzufügen\tR" -#: appGUI/MainGUI.py:560 +#: appGUI/MainGUI.py:569 msgid "Add Polygon\tN" msgstr "Polygon hinzufügen\tN" -#: appGUI/MainGUI.py:563 +#: appGUI/MainGUI.py:572 msgid "Add Path\tP" msgstr "Pfad hinzufügen\tP" -#: appGUI/MainGUI.py:566 +#: appGUI/MainGUI.py:575 msgid "Add Text\tT" msgstr "Text hinzufügen\tT" -#: appGUI/MainGUI.py:569 +#: appGUI/MainGUI.py:578 msgid "Polygon Union\tU" msgstr "Polygon-Vereinigung\tU" -#: appGUI/MainGUI.py:571 +#: appGUI/MainGUI.py:580 msgid "Polygon Intersection\tE" msgstr "Polygonschnitt\tE" -#: appGUI/MainGUI.py:573 +#: appGUI/MainGUI.py:582 msgid "Polygon Subtraction\tS" msgstr "Polygon-Subtraktion\tS" -#: appGUI/MainGUI.py:577 +#: appGUI/MainGUI.py:586 msgid "Cut Path\tX" msgstr "Pfad ausschneiden\tX" -#: appGUI/MainGUI.py:581 +#: appGUI/MainGUI.py:590 msgid "Copy Geom\tC" msgstr "Geometrie kopieren\tC" -#: appGUI/MainGUI.py:583 +#: appGUI/MainGUI.py:592 msgid "Delete Shape\tDEL" msgstr "Form löschen\tDEL" -#: appGUI/MainGUI.py:587 appGUI/MainGUI.py:674 +#: appGUI/MainGUI.py:596 appGUI/MainGUI.py:683 msgid "Move\tM" msgstr "Bewegung\tM" -#: appGUI/MainGUI.py:589 +#: appGUI/MainGUI.py:598 msgid "Buffer Tool\tB" msgstr "Pufferwerkzeug\tB" -#: appGUI/MainGUI.py:592 +#: appGUI/MainGUI.py:601 msgid "Paint Tool\tI" msgstr "Malenwerkzeug\tI" -#: appGUI/MainGUI.py:595 +#: appGUI/MainGUI.py:604 msgid "Transform Tool\tAlt+R" msgstr "Transformationswerkzeug\tAlt+R" -#: appGUI/MainGUI.py:599 +#: appGUI/MainGUI.py:608 msgid "Toggle Corner Snap\tK" msgstr "Eckfang umschalten\tK" -#: appGUI/MainGUI.py:605 +#: appGUI/MainGUI.py:614 msgid ">Excellon Editor<" msgstr ">Excellon Editor<" -#: appGUI/MainGUI.py:609 +#: appGUI/MainGUI.py:618 msgid "Add Drill Array\tA" msgstr "Bohrfeld hinzufügen\tA" -#: appGUI/MainGUI.py:611 +#: appGUI/MainGUI.py:620 msgid "Add Drill\tD" msgstr "Bohrer hinzufügen\tD" -#: appGUI/MainGUI.py:615 +#: appGUI/MainGUI.py:624 msgid "Add Slot Array\tQ" msgstr "Steckplatz-Array hinzufügen\tQ" -#: appGUI/MainGUI.py:617 +#: appGUI/MainGUI.py:626 msgid "Add Slot\tW" msgstr "Slot hinzufügen\tW" -#: appGUI/MainGUI.py:621 +#: appGUI/MainGUI.py:630 msgid "Resize Drill(S)\tR" msgstr "Bohrer verkleinern\tR" -#: appGUI/MainGUI.py:624 appGUI/MainGUI.py:668 +#: appGUI/MainGUI.py:633 appGUI/MainGUI.py:677 msgid "Copy\tC" msgstr "Kopieren\tC" -#: appGUI/MainGUI.py:626 appGUI/MainGUI.py:670 +#: appGUI/MainGUI.py:635 appGUI/MainGUI.py:679 msgid "Delete\tDEL" msgstr "Löschen\tDEL" -#: appGUI/MainGUI.py:631 +#: appGUI/MainGUI.py:640 msgid "Move Drill(s)\tM" msgstr "Bohrer verschieben\tM" -#: appGUI/MainGUI.py:636 +#: appGUI/MainGUI.py:645 msgid ">Gerber Editor<" msgstr ">Gerber-Editor<" -#: appGUI/MainGUI.py:640 +#: appGUI/MainGUI.py:649 msgid "Add Pad\tP" msgstr "Pad hinzufügen\tP" -#: appGUI/MainGUI.py:642 +#: appGUI/MainGUI.py:651 msgid "Add Pad Array\tA" msgstr "Pad-Array hinzufügen\tA" -#: appGUI/MainGUI.py:644 +#: appGUI/MainGUI.py:653 msgid "Add Track\tT" msgstr "Track hinzufügen\tA" -#: appGUI/MainGUI.py:646 +#: appGUI/MainGUI.py:655 msgid "Add Region\tN" msgstr "Region hinzufügen\tN" -#: appGUI/MainGUI.py:650 +#: appGUI/MainGUI.py:659 msgid "Poligonize\tAlt+N" msgstr "Polygonisieren\tAlt+N" -#: appGUI/MainGUI.py:652 +#: appGUI/MainGUI.py:661 msgid "Add SemiDisc\tE" msgstr "Halbschibe hinzufügen\tE" -#: appGUI/MainGUI.py:654 +#: appGUI/MainGUI.py:663 msgid "Add Disc\tD" msgstr "Schibe hinzufügen\tD" -#: appGUI/MainGUI.py:656 +#: appGUI/MainGUI.py:665 msgid "Buffer\tB" msgstr "Puffer\tB" -#: appGUI/MainGUI.py:658 +#: appGUI/MainGUI.py:667 msgid "Scale\tS" msgstr "Skalieren\tS" -#: appGUI/MainGUI.py:660 +#: appGUI/MainGUI.py:669 msgid "Mark Area\tAlt+A" msgstr "Bereich markieren\tAlt+A" -#: appGUI/MainGUI.py:662 +#: appGUI/MainGUI.py:671 msgid "Eraser\tCtrl+E" msgstr "Radiergummi\tSTRG+E" -#: appGUI/MainGUI.py:664 +#: appGUI/MainGUI.py:673 msgid "Transform\tAlt+R" msgstr "Transformationswerkzeug\tSTRG+R" -#: appGUI/MainGUI.py:691 +#: appGUI/MainGUI.py:700 msgid "Enable Plot" msgstr "Diagramm aktivieren" -#: appGUI/MainGUI.py:693 +#: appGUI/MainGUI.py:702 msgid "Disable Plot" msgstr "Diagramm deaktivieren" -#: appGUI/MainGUI.py:697 +#: appGUI/MainGUI.py:706 msgid "Set Color" msgstr "Farbsatz" -#: appGUI/MainGUI.py:700 app_Main.py:9768 +#: appGUI/MainGUI.py:709 app_Main.py:10165 msgid "Red" msgstr "Rote" -#: appGUI/MainGUI.py:703 app_Main.py:9770 +#: appGUI/MainGUI.py:712 app_Main.py:10167 msgid "Blue" msgstr "Blau" -#: appGUI/MainGUI.py:706 app_Main.py:9773 +#: appGUI/MainGUI.py:715 app_Main.py:10170 msgid "Yellow" msgstr "Gelb" -#: appGUI/MainGUI.py:709 app_Main.py:9775 +#: appGUI/MainGUI.py:718 app_Main.py:10172 msgid "Green" msgstr "Grün" -#: appGUI/MainGUI.py:712 app_Main.py:9777 +#: appGUI/MainGUI.py:721 app_Main.py:10174 msgid "Purple" msgstr "Lila" -#: appGUI/MainGUI.py:715 app_Main.py:9779 +#: appGUI/MainGUI.py:724 app_Main.py:10176 msgid "Brown" msgstr "Braun" -#: appGUI/MainGUI.py:718 app_Main.py:9781 app_Main.py:9837 +#: appGUI/MainGUI.py:727 app_Main.py:10178 app_Main.py:10234 msgid "White" msgstr "Weiß" -#: appGUI/MainGUI.py:721 app_Main.py:9783 +#: appGUI/MainGUI.py:730 app_Main.py:10180 msgid "Black" msgstr "Schwarz" -#: appGUI/MainGUI.py:726 app_Main.py:9786 +#: appGUI/MainGUI.py:735 app_Main.py:10183 msgid "Custom" msgstr "Benutzerdefiniert" -#: appGUI/MainGUI.py:731 app_Main.py:9820 +#: appGUI/MainGUI.py:740 app_Main.py:10217 msgid "Opacity" msgstr "Opazität" -#: appGUI/MainGUI.py:734 app_Main.py:9796 +#: appGUI/MainGUI.py:743 app_Main.py:10193 msgid "Default" msgstr "Standard" -#: appGUI/MainGUI.py:739 +#: appGUI/MainGUI.py:748 msgid "Generate CNC" msgstr "CNC generieren" -#: appGUI/MainGUI.py:741 +#: appGUI/MainGUI.py:750 msgid "View Source" msgstr "Quelltext anzeigen" -#: appGUI/MainGUI.py:746 appGUI/MainGUI.py:851 appGUI/MainGUI.py:1066 -#: appGUI/MainGUI.py:1525 appGUI/MainGUI.py:1886 appGUI/MainGUI.py:2097 -#: appGUI/MainGUI.py:4511 appGUI/ObjectUI.py:1519 -#: appObjects/FlatCAMGeometry.py:560 appTools/ToolPanelize.py:552 -#: appTools/ToolPanelize.py:579 appTools/ToolPanelize.py:672 -#: appTools/ToolPanelize.py:699 appTools/ToolPanelize.py:759 +#: appGUI/MainGUI.py:755 appGUI/MainGUI.py:874 appGUI/MainGUI.py:1091 +#: appGUI/MainGUI.py:1575 appGUI/MainGUI.py:2032 appGUI/MainGUI.py:2245 +#: appGUI/MainGUI.py:4680 appGUI/ObjectUI.py:1000 +#: appObjects/FlatCAMGeometry.py:552 appTools/ToolPanelize.py:325 +#: appTools/ToolPanelize.py:351 appTools/ToolPanelize.py:448 +#: appTools/ToolPanelize.py:477 appTools/ToolPanelize.py:538 msgid "Copy" msgstr "Kopieren" -#: appGUI/MainGUI.py:754 appGUI/MainGUI.py:1538 appTools/ToolProperties.py:31 +#: appGUI/MainGUI.py:763 appGUI/MainGUI.py:1588 appTools/ToolProperties.py:31 msgid "Properties" msgstr "Eigenschaften" -#: appGUI/MainGUI.py:783 +#: appGUI/MainGUI.py:792 msgid "File Toolbar" msgstr "Dateisymbolleiste" -#: appGUI/MainGUI.py:787 +#: appGUI/MainGUI.py:796 msgid "Edit Toolbar" msgstr "Symbolleiste bearbeiten" -#: appGUI/MainGUI.py:791 +#: appGUI/MainGUI.py:800 msgid "View Toolbar" msgstr "Symbolleiste anzeigen" -#: appGUI/MainGUI.py:795 +#: appGUI/MainGUI.py:804 msgid "Shell Toolbar" msgstr "Shell-Symbolleiste" -#: appGUI/MainGUI.py:799 +#: appGUI/MainGUI.py:808 msgid "Tools Toolbar" msgstr "Werkzeugleiste" -#: appGUI/MainGUI.py:803 +#: appGUI/MainGUI.py:812 msgid "Excellon Editor Toolbar" msgstr "Excellon Editor-Symbolleiste" -#: appGUI/MainGUI.py:809 +#: appGUI/MainGUI.py:818 msgid "Geometry Editor Toolbar" msgstr "Geometrie Editor-Symbolleiste" -#: appGUI/MainGUI.py:813 +#: appGUI/MainGUI.py:822 msgid "Gerber Editor Toolbar" msgstr "Gerber Editor-Symbolleiste" -#: appGUI/MainGUI.py:817 +#: appGUI/MainGUI.py:827 appGUI/MainGUI.py:1886 +#, fuzzy +#| msgid "Coordinates copied to clipboard." +msgid "Delta Coordinates Toolbar" +msgstr "Koordinaten in die Zwischenablage kopiert." + +#: appGUI/MainGUI.py:830 appGUI/MainGUI.py:1894 +#, fuzzy +#| msgid "Coordinates" +msgid "Coordinates Toolbar" +msgstr "Koordinaten" + +#: appGUI/MainGUI.py:833 appGUI/MainGUI.py:1902 msgid "Grid Toolbar" msgstr "Raster-Symbolleiste" -#: appGUI/MainGUI.py:831 appGUI/MainGUI.py:1865 app_Main.py:6716 -#: app_Main.py:6721 +#: appGUI/MainGUI.py:842 appGUI/MainGUI.py:1910 +#, fuzzy +#| msgid "Edit Toolbar" +msgid "Status Toolbar" +msgstr "Symbolleiste bearbeiten" + +#: appGUI/MainGUI.py:854 appGUI/MainGUI.py:2011 app_Main.py:7087 +#: app_Main.py:7092 msgid "Open Gerber" msgstr "Gerber öffnen" -#: appGUI/MainGUI.py:833 appGUI/MainGUI.py:1867 app_Main.py:6756 -#: app_Main.py:6761 +#: appGUI/MainGUI.py:856 appGUI/MainGUI.py:2013 app_Main.py:7127 +#: app_Main.py:7132 msgid "Open Excellon" msgstr "Excellon öffnen" -#: appGUI/MainGUI.py:836 appGUI/MainGUI.py:1870 +#: appGUI/MainGUI.py:859 appGUI/MainGUI.py:2016 msgid "Open project" msgstr "Projekt öffnen" -#: appGUI/MainGUI.py:838 appGUI/MainGUI.py:1872 +#: appGUI/MainGUI.py:861 appGUI/MainGUI.py:2018 msgid "Save project" msgstr "Projekt speichern" -#: appGUI/MainGUI.py:844 appGUI/MainGUI.py:1878 +#: appGUI/MainGUI.py:867 appGUI/MainGUI.py:2024 msgid "Editor" msgstr "Editor" -#: appGUI/MainGUI.py:846 appGUI/MainGUI.py:1881 +#: appGUI/MainGUI.py:869 appGUI/MainGUI.py:2027 msgid "Save Object and close the Editor" msgstr "Speichern Sie das Objekt und schließen Sie den Editor" -#: appGUI/MainGUI.py:853 appGUI/MainGUI.py:1888 +#: appGUI/MainGUI.py:876 appGUI/MainGUI.py:2034 msgid "&Delete" msgstr "&Löschen" -#: appGUI/MainGUI.py:856 appGUI/MainGUI.py:1891 appGUI/MainGUI.py:4100 -#: appGUI/MainGUI.py:4308 appTools/ToolDistance.py:35 -#: appTools/ToolDistance.py:197 +#: appGUI/MainGUI.py:879 appGUI/MainGUI.py:2037 appGUI/MainGUI.py:4269 +#: appGUI/MainGUI.py:4477 appTools/ToolDistance.py:100 +#: appTools/ToolDistance.py:544 msgid "Distance Tool" msgstr "Entfernungswerkzeug" -#: appGUI/MainGUI.py:858 appGUI/MainGUI.py:1893 +#: appGUI/MainGUI.py:881 appGUI/MainGUI.py:2039 msgid "Distance Min Tool" msgstr "Werkzeug für Mindestabstand" -#: appGUI/MainGUI.py:860 appGUI/MainGUI.py:1895 appGUI/MainGUI.py:4093 +#: appGUI/MainGUI.py:883 appGUI/MainGUI.py:2041 appGUI/MainGUI.py:4262 msgid "Set Origin" msgstr "Nullpunkt festlegen" -#: appGUI/MainGUI.py:862 appGUI/MainGUI.py:1897 +#: appGUI/MainGUI.py:885 appGUI/MainGUI.py:2043 msgid "Move to Origin" msgstr "Zum Ursprung wechseln" -#: appGUI/MainGUI.py:865 appGUI/MainGUI.py:1899 +#: appGUI/MainGUI.py:888 appGUI/MainGUI.py:2045 msgid "Jump to Location" msgstr "Zur Position springen\tJ" -#: appGUI/MainGUI.py:867 appGUI/MainGUI.py:1901 appGUI/MainGUI.py:4105 +#: appGUI/MainGUI.py:890 appGUI/MainGUI.py:2047 appGUI/MainGUI.py:4274 msgid "Locate in Object" msgstr "Suchen Sie im Objekt" -#: appGUI/MainGUI.py:873 appGUI/MainGUI.py:1907 +#: appGUI/MainGUI.py:896 appGUI/MainGUI.py:2053 msgid "&Replot" msgstr "Neuzeichnen &R" -#: appGUI/MainGUI.py:875 appGUI/MainGUI.py:1909 +#: appGUI/MainGUI.py:898 appGUI/MainGUI.py:2055 msgid "&Clear plot" msgstr "Darstellung löschen &C" -#: appGUI/MainGUI.py:877 appGUI/MainGUI.py:1911 appGUI/MainGUI.py:4096 +#: appGUI/MainGUI.py:900 appGUI/MainGUI.py:2057 appGUI/MainGUI.py:4265 msgid "Zoom In" msgstr "Hineinzoomen" -#: appGUI/MainGUI.py:879 appGUI/MainGUI.py:1913 appGUI/MainGUI.py:4096 +#: appGUI/MainGUI.py:902 appGUI/MainGUI.py:2059 appGUI/MainGUI.py:4265 msgid "Zoom Out" msgstr "Rauszoomen" -#: appGUI/MainGUI.py:881 appGUI/MainGUI.py:1429 appGUI/MainGUI.py:1915 -#: appGUI/MainGUI.py:4095 +#: appGUI/MainGUI.py:904 appGUI/MainGUI.py:1479 appGUI/MainGUI.py:2061 +#: appGUI/MainGUI.py:4264 msgid "Zoom Fit" msgstr "Passend zoomen" -#: appGUI/MainGUI.py:889 appGUI/MainGUI.py:1921 +#: appGUI/MainGUI.py:912 appGUI/MainGUI.py:2067 msgid "&Command Line" msgstr "Befehlszeile" -#: appGUI/MainGUI.py:901 appGUI/MainGUI.py:1933 +#: appGUI/MainGUI.py:924 appGUI/MainGUI.py:2079 msgid "2Sided Tool" msgstr "2Seitiges Werkzeug" -#: appGUI/MainGUI.py:903 appGUI/MainGUI.py:1935 appGUI/MainGUI.py:4111 +#: appGUI/MainGUI.py:926 appGUI/MainGUI.py:2081 appGUI/MainGUI.py:4280 msgid "Align Objects Tool" msgstr "Werkzeug \"Objekte ausrichten\"" -#: appGUI/MainGUI.py:905 appGUI/MainGUI.py:1937 appGUI/MainGUI.py:4111 -#: appTools/ToolExtractDrills.py:393 +#: appGUI/MainGUI.py:928 appGUI/MainGUI.py:2083 appGUI/MainGUI.py:4280 +#: appTools/ToolExtractDrills.py:98 msgid "Extract Drills Tool" msgstr "Bohrer Extrahieren Werkzeug" -#: appGUI/MainGUI.py:908 appGUI/ObjectUI.py:360 appTools/ToolCutOut.py:440 +#: appGUI/MainGUI.py:931 appGUI/ObjectUI.py:361 appTools/ToolCutOut.py:150 +#: appTools/ToolCutOut.py:1811 msgid "Cutout Tool" msgstr "Ausschnittwerkzeug" -#: appGUI/MainGUI.py:910 appGUI/MainGUI.py:1942 appGUI/ObjectUI.py:346 -#: appGUI/ObjectUI.py:2087 appTools/ToolNCC.py:974 +#: appGUI/MainGUI.py:933 appGUI/MainGUI.py:2088 appGUI/ObjectUI.py:346 +#: appGUI/ObjectUI.py:1661 appTools/ToolNCC.py:197 msgid "NCC Tool" msgstr "NCC Werkzeug" -#: appGUI/MainGUI.py:914 appGUI/MainGUI.py:1946 appGUI/MainGUI.py:4113 -#: appTools/ToolIsolation.py:38 appTools/ToolIsolation.py:787 +#: appGUI/MainGUI.py:937 appGUI/MainGUI.py:2092 appGUI/MainGUI.py:4282 +#: appTools/ToolIsolation.py:189 appTools/ToolIsolation.py:2900 msgid "Isolation Tool" msgstr "Isolationswerkzeug" -#: appGUI/MainGUI.py:918 appGUI/MainGUI.py:1950 +#: appGUI/MainGUI.py:939 appGUI/MainGUI.py:2094 appGUI/ObjectUI.py:641 +#: appTools/ToolDrilling.py:244 appTools/ToolDrilling.py:1965 +#: appTools/ToolMilling.py:169 +#, fuzzy +#| msgid "Drilling" +msgid "Drilling Tool" +msgstr "Bohren" + +#: appGUI/MainGUI.py:943 appGUI/MainGUI.py:2098 msgid "Panel Tool" msgstr "Platte Werkzeug" -#: appGUI/MainGUI.py:920 appGUI/MainGUI.py:1952 appTools/ToolFilm.py:569 +#: appGUI/MainGUI.py:945 appGUI/MainGUI.py:2100 appTools/ToolFilm.py:106 msgid "Film Tool" msgstr "Filmwerkzeug" -#: appGUI/MainGUI.py:922 appGUI/MainGUI.py:1954 appTools/ToolSolderPaste.py:561 +#: appGUI/MainGUI.py:947 appGUI/MainGUI.py:2102 appTools/ToolSolderPaste.py:116 msgid "SolderPaste Tool" msgstr "Lötpaste-Werkzeug" -#: appGUI/MainGUI.py:924 appGUI/MainGUI.py:1956 appGUI/MainGUI.py:4118 -#: appTools/ToolSub.py:40 +#: appGUI/MainGUI.py:949 appGUI/MainGUI.py:2104 appGUI/MainGUI.py:4287 +#: appTools/ToolSub.py:611 msgid "Subtract Tool" msgstr "Subtraktionswerkzeug" -#: appGUI/MainGUI.py:926 appGUI/MainGUI.py:1958 appTools/ToolRulesCheck.py:616 +#: appGUI/MainGUI.py:951 appGUI/MainGUI.py:2106 appTools/ToolRulesCheck.py:115 msgid "Rules Tool" msgstr "Regelwerkzeug" -#: appGUI/MainGUI.py:928 appGUI/MainGUI.py:1960 appGUI/MainGUI.py:4115 -#: appTools/ToolOptimal.py:33 appTools/ToolOptimal.py:313 +#: appGUI/MainGUI.py:953 appGUI/MainGUI.py:2108 appGUI/MainGUI.py:4284 +#: appTools/ToolOptimal.py:103 appTools/ToolOptimal.py:390 msgid "Optimal Tool" msgstr "Optimierungswerkzeug" -#: appGUI/MainGUI.py:933 appGUI/MainGUI.py:1965 appGUI/MainGUI.py:4111 +#: appGUI/MainGUI.py:958 appGUI/MainGUI.py:2113 appGUI/MainGUI.py:4280 msgid "Calculators Tool" msgstr "Rechnerwerkzeug" -#: appGUI/MainGUI.py:937 appGUI/MainGUI.py:1969 appGUI/MainGUI.py:4116 -#: appTools/ToolQRCode.py:43 appTools/ToolQRCode.py:391 +#: appGUI/MainGUI.py:962 appGUI/MainGUI.py:2117 appGUI/MainGUI.py:4285 +#: appTools/ToolQRCode.py:114 appTools/ToolQRCode.py:625 msgid "QRCode Tool" msgstr "QRCode Werkzeug" # Really don't know -#: appGUI/MainGUI.py:939 appGUI/MainGUI.py:1971 appGUI/MainGUI.py:4113 -#: appTools/ToolCopperThieving.py:39 appTools/ToolCopperThieving.py:572 +#: appGUI/MainGUI.py:964 appGUI/MainGUI.py:2119 appGUI/MainGUI.py:4282 +#: appTools/ToolCopperThieving.py:126 appTools/ToolCopperThieving.py:1131 msgid "Copper Thieving Tool" msgstr "Copper Thieving Werkzeug" # Really don't know -#: appGUI/MainGUI.py:942 appGUI/MainGUI.py:1974 appGUI/MainGUI.py:4112 -#: appTools/ToolFiducials.py:33 appTools/ToolFiducials.py:399 +#: appGUI/MainGUI.py:967 appGUI/MainGUI.py:2122 appGUI/MainGUI.py:4281 +#: appTools/ToolFiducials.py:114 appTools/ToolFiducials.py:648 msgid "Fiducials Tool" msgstr "Passermarken-Tool" -#: appGUI/MainGUI.py:944 appGUI/MainGUI.py:1976 appTools/ToolCalibration.py:37 -#: appTools/ToolCalibration.py:759 +#: appGUI/MainGUI.py:969 appGUI/MainGUI.py:2124 appTools/ToolCalibration.py:115 +#: appTools/ToolCalibration.py:735 msgid "Calibration Tool" msgstr "Kalibierungswerkzeug" -#: appGUI/MainGUI.py:946 appGUI/MainGUI.py:1978 appGUI/MainGUI.py:4113 +#: appGUI/MainGUI.py:971 appGUI/MainGUI.py:2126 appGUI/MainGUI.py:4282 msgid "Punch Gerber Tool" msgstr "Stanzen Sie das Gerber-Werkzeug" -#: appGUI/MainGUI.py:948 appGUI/MainGUI.py:1980 appTools/ToolInvertGerber.py:31 +#: appGUI/MainGUI.py:973 appGUI/MainGUI.py:2128 +#: appTools/ToolInvertGerber.py:175 msgid "Invert Gerber Tool" msgstr "Invertieren Sie das Gerber-Werkzeug" -#: appGUI/MainGUI.py:950 appGUI/MainGUI.py:1982 appGUI/MainGUI.py:4115 -#: appTools/ToolCorners.py:31 +#: appGUI/MainGUI.py:975 appGUI/MainGUI.py:2130 appGUI/MainGUI.py:4284 +#: appTools/ToolCorners.py:297 msgid "Corner Markers Tool" msgstr "Eckmarkierungswerkzeug" -#: appGUI/MainGUI.py:952 appGUI/MainGUI.py:1984 -#: appTools/ToolEtchCompensation.py:32 appTools/ToolEtchCompensation.py:288 +#: appGUI/MainGUI.py:977 appGUI/MainGUI.py:2132 +#: appTools/ToolEtchCompensation.py:80 appTools/ToolEtchCompensation.py:251 msgid "Etch Compensation Tool" msgstr "Ätzkompensationswerkzeug" -#: appGUI/MainGUI.py:958 appGUI/MainGUI.py:984 appGUI/MainGUI.py:1036 -#: appGUI/MainGUI.py:1990 appGUI/MainGUI.py:2068 +#: appGUI/MainGUI.py:983 appGUI/MainGUI.py:1009 appGUI/MainGUI.py:1061 +#: appGUI/MainGUI.py:2138 appGUI/MainGUI.py:2216 msgid "Select" msgstr "Wählen" -#: appGUI/MainGUI.py:960 appGUI/MainGUI.py:1992 +#: appGUI/MainGUI.py:985 appGUI/MainGUI.py:2140 msgid "Add Drill Hole" msgstr "Bohrloch hinzufügen" -#: appGUI/MainGUI.py:962 appGUI/MainGUI.py:1994 +#: appGUI/MainGUI.py:987 appGUI/MainGUI.py:2142 msgid "Add Drill Hole Array" msgstr "Bohrlochfeld hinzufügen" -#: appGUI/MainGUI.py:964 appGUI/MainGUI.py:1517 appGUI/MainGUI.py:1998 -#: appGUI/MainGUI.py:4393 +#: appGUI/MainGUI.py:989 appGUI/MainGUI.py:1567 appGUI/MainGUI.py:2146 +#: appGUI/MainGUI.py:4562 msgid "Add Slot" msgstr "Steckplatz hinzufügen" -#: appGUI/MainGUI.py:966 appGUI/MainGUI.py:1519 appGUI/MainGUI.py:2000 -#: appGUI/MainGUI.py:4392 +#: appGUI/MainGUI.py:991 appGUI/MainGUI.py:1569 appGUI/MainGUI.py:2148 +#: appGUI/MainGUI.py:4561 msgid "Add Slot Array" msgstr "Steckplatz-Array hinzufügen" -#: appGUI/MainGUI.py:968 appGUI/MainGUI.py:1522 appGUI/MainGUI.py:1996 +#: appGUI/MainGUI.py:993 appGUI/MainGUI.py:1572 appGUI/MainGUI.py:2144 msgid "Resize Drill" msgstr "Bohrergröße ändern" -#: appGUI/MainGUI.py:972 appGUI/MainGUI.py:2004 +#: appGUI/MainGUI.py:997 appGUI/MainGUI.py:2152 msgid "Copy Drill" msgstr "Bohrer kopieren" -#: appGUI/MainGUI.py:974 appGUI/MainGUI.py:2006 +#: appGUI/MainGUI.py:999 appGUI/MainGUI.py:2154 msgid "Delete Drill" msgstr "Bohrer löschen" -#: appGUI/MainGUI.py:978 appGUI/MainGUI.py:2010 +#: appGUI/MainGUI.py:1003 appGUI/MainGUI.py:2158 msgid "Move Drill" msgstr "Bohrer bewegen" -#: appGUI/MainGUI.py:986 appGUI/MainGUI.py:2018 +#: appGUI/MainGUI.py:1011 appGUI/MainGUI.py:2166 msgid "Add Circle" msgstr "Kreis hinzufügen" -#: appGUI/MainGUI.py:988 appGUI/MainGUI.py:2020 +#: appGUI/MainGUI.py:1013 appGUI/MainGUI.py:2168 msgid "Add Arc" msgstr "Bogen hinzufügen" -#: appGUI/MainGUI.py:990 appGUI/MainGUI.py:2022 +#: appGUI/MainGUI.py:1015 appGUI/MainGUI.py:2170 msgid "Add Rectangle" msgstr "Rechteck hinzufügen" -#: appGUI/MainGUI.py:994 appGUI/MainGUI.py:2026 +#: appGUI/MainGUI.py:1019 appGUI/MainGUI.py:2174 msgid "Add Path" msgstr "Pfad hinzufügen" -#: appGUI/MainGUI.py:996 appGUI/MainGUI.py:2028 +#: appGUI/MainGUI.py:1021 appGUI/MainGUI.py:2176 msgid "Add Polygon" msgstr "Polygon hinzufügen" -#: appGUI/MainGUI.py:999 appGUI/MainGUI.py:2031 +#: appGUI/MainGUI.py:1024 appGUI/MainGUI.py:2179 msgid "Add Text" msgstr "Text hinzufügen" -#: appGUI/MainGUI.py:1001 appGUI/MainGUI.py:2033 +#: appGUI/MainGUI.py:1026 appGUI/MainGUI.py:2181 msgid "Add Buffer" msgstr "Puffer hinzufügen" -#: appGUI/MainGUI.py:1003 appGUI/MainGUI.py:2035 +#: appGUI/MainGUI.py:1028 appGUI/MainGUI.py:2183 msgid "Paint Shape" msgstr "Malen Form" -#: appGUI/MainGUI.py:1005 appGUI/MainGUI.py:1062 appGUI/MainGUI.py:1458 -#: appGUI/MainGUI.py:1503 appGUI/MainGUI.py:2037 appGUI/MainGUI.py:2093 +#: appGUI/MainGUI.py:1030 appGUI/MainGUI.py:1087 appGUI/MainGUI.py:1508 +#: appGUI/MainGUI.py:1553 appGUI/MainGUI.py:2185 appGUI/MainGUI.py:2241 msgid "Eraser" msgstr "Radiergummi" -#: appGUI/MainGUI.py:1009 appGUI/MainGUI.py:2041 +#: appGUI/MainGUI.py:1034 appGUI/MainGUI.py:2189 msgid "Polygon Union" msgstr "Polygon-Vereinigung" -#: appGUI/MainGUI.py:1011 appGUI/MainGUI.py:2043 +#: appGUI/MainGUI.py:1036 appGUI/MainGUI.py:2191 msgid "Polygon Explode" msgstr "Polygon explodieren" -#: appGUI/MainGUI.py:1014 appGUI/MainGUI.py:2046 +#: appGUI/MainGUI.py:1039 appGUI/MainGUI.py:2194 msgid "Polygon Intersection" msgstr "Polygonschnitt" -#: appGUI/MainGUI.py:1016 appGUI/MainGUI.py:2048 +#: appGUI/MainGUI.py:1041 appGUI/MainGUI.py:2196 msgid "Polygon Subtraction" msgstr "Polygon-Subtraktion" -#: appGUI/MainGUI.py:1020 appGUI/MainGUI.py:2052 +#: appGUI/MainGUI.py:1045 appGUI/MainGUI.py:2200 msgid "Cut Path" msgstr "Pfad ausschneiden" -#: appGUI/MainGUI.py:1022 +#: appGUI/MainGUI.py:1047 msgid "Copy Shape(s)" msgstr "Form kopieren" -#: appGUI/MainGUI.py:1025 +#: appGUI/MainGUI.py:1050 msgid "Delete Shape '-'" msgstr "Form löschen" -#: appGUI/MainGUI.py:1027 appGUI/MainGUI.py:1070 appGUI/MainGUI.py:1470 -#: appGUI/MainGUI.py:1507 appGUI/MainGUI.py:2058 appGUI/MainGUI.py:2101 +#: appGUI/MainGUI.py:1052 appGUI/MainGUI.py:1095 appGUI/MainGUI.py:1520 +#: appGUI/MainGUI.py:1557 appGUI/MainGUI.py:2206 appGUI/MainGUI.py:2249 #: appGUI/ObjectUI.py:109 appGUI/ObjectUI.py:152 msgid "Transformations" msgstr "Transformationen" -#: appGUI/MainGUI.py:1030 +#: appGUI/MainGUI.py:1055 msgid "Move Objects " msgstr "Objekte verschieben " -#: appGUI/MainGUI.py:1038 appGUI/MainGUI.py:2070 appGUI/MainGUI.py:4512 +#: appGUI/MainGUI.py:1063 appGUI/MainGUI.py:2218 appGUI/MainGUI.py:4681 msgid "Add Pad" msgstr "Pad hinzufügen" -#: appGUI/MainGUI.py:1042 appGUI/MainGUI.py:2074 appGUI/MainGUI.py:4513 +#: appGUI/MainGUI.py:1067 appGUI/MainGUI.py:2222 appGUI/MainGUI.py:4682 msgid "Add Track" msgstr "Track hinzufügen" -#: appGUI/MainGUI.py:1044 appGUI/MainGUI.py:2076 appGUI/MainGUI.py:4512 +#: appGUI/MainGUI.py:1069 appGUI/MainGUI.py:2224 appGUI/MainGUI.py:4681 msgid "Add Region" msgstr "Region hinzufügen" -#: appGUI/MainGUI.py:1046 appGUI/MainGUI.py:1489 appGUI/MainGUI.py:2078 +#: appGUI/MainGUI.py:1071 appGUI/MainGUI.py:1539 appGUI/MainGUI.py:2226 msgid "Poligonize" msgstr "Polygonisieren" -#: appGUI/MainGUI.py:1049 appGUI/MainGUI.py:1491 appGUI/MainGUI.py:2081 +#: appGUI/MainGUI.py:1074 appGUI/MainGUI.py:1541 appGUI/MainGUI.py:2229 msgid "SemiDisc" msgstr "Halbscheibe" -#: appGUI/MainGUI.py:1051 appGUI/MainGUI.py:1493 appGUI/MainGUI.py:2083 +#: appGUI/MainGUI.py:1076 appGUI/MainGUI.py:1543 appGUI/MainGUI.py:2231 msgid "Disc" msgstr "Scheibe" -#: appGUI/MainGUI.py:1059 appGUI/MainGUI.py:1501 appGUI/MainGUI.py:2091 +#: appGUI/MainGUI.py:1084 appGUI/MainGUI.py:1551 appGUI/MainGUI.py:2239 msgid "Mark Area" msgstr "Bereich markieren" -#: appGUI/MainGUI.py:1073 appGUI/MainGUI.py:1474 appGUI/MainGUI.py:1536 -#: appGUI/MainGUI.py:2104 appGUI/MainGUI.py:4512 appTools/ToolMove.py:27 +#: appGUI/MainGUI.py:1098 appGUI/MainGUI.py:1524 appGUI/MainGUI.py:1586 +#: appGUI/MainGUI.py:2252 appGUI/MainGUI.py:4681 appTools/ToolMove.py:27 msgid "Move" msgstr "Bewegung" -#: appGUI/MainGUI.py:1081 +#: appGUI/MainGUI.py:1106 msgid "Snap to grid" msgstr "Am Raster ausrichten" -#: appGUI/MainGUI.py:1084 +#: appGUI/MainGUI.py:1109 msgid "Grid X snapping distance" msgstr "Raster X Fangdistanz" -#: appGUI/MainGUI.py:1089 +#: appGUI/MainGUI.py:1114 msgid "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." @@ -4810,31 +5550,39 @@ msgstr "" "Wenn aktiv, Wert auf Grid_X\n" "wird in den Wert von Grid_Y kopiert." -#: appGUI/MainGUI.py:1096 +#: appGUI/MainGUI.py:1121 msgid "Grid Y snapping distance" msgstr "Raster Y Fangdistanz" -#: appGUI/MainGUI.py:1101 +#: appGUI/MainGUI.py:1128 +msgid "Snap to corner" +msgstr "In der Ecke ausrichten" + +#: appGUI/MainGUI.py:1132 appGUI/preferences/general/GeneralAPPSetGroupUI.py:78 +msgid "Max. magnet distance" +msgstr "Max. Magnetabstand" + +#: appGUI/MainGUI.py:1142 msgid "Toggle the display of axis on canvas" msgstr "Schalten Sie die Anzeige der Achse auf der Leinwand um" -#: appGUI/MainGUI.py:1107 appGUI/preferences/PreferencesUIManager.py:855 -#: appGUI/preferences/PreferencesUIManager.py:947 -#: appGUI/preferences/PreferencesUIManager.py:975 -#: appGUI/preferences/PreferencesUIManager.py:1080 app_Main.py:5263 -#: app_Main.py:5268 app_Main.py:5283 +#: appGUI/MainGUI.py:1148 appGUI/preferences/PreferencesUIManager.py:889 +#: appGUI/preferences/PreferencesUIManager.py:982 +#: appGUI/preferences/PreferencesUIManager.py:1010 +#: appGUI/preferences/PreferencesUIManager.py:1115 app_Main.py:5579 +#: app_Main.py:5584 app_Main.py:5599 msgid "Preferences" msgstr "Einstellungen" -#: appGUI/MainGUI.py:1113 +#: appGUI/MainGUI.py:1154 msgid "Command Line" msgstr "Befehlszeile" -#: appGUI/MainGUI.py:1119 +#: appGUI/MainGUI.py:1160 msgid "HUD (Heads up display)" msgstr "HUD (Heads-up-Display)" -#: appGUI/MainGUI.py:1125 appGUI/preferences/general/GeneralAPPSetGroupUI.py:97 +#: appGUI/MainGUI.py:1166 appGUI/preferences/general/GeneralAPPSetGroupUI.py:97 msgid "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." @@ -4842,240 +5590,15 @@ msgstr "" "Zeichnen Sie ein begrenzendes Rechteck auf die Leinwand.\n" "Ziel ist es, die Grenzen unserer Arbeit aufzuzeigen." -#: appGUI/MainGUI.py:1135 -msgid "Snap to corner" -msgstr "In der Ecke ausrichten" - -#: appGUI/MainGUI.py:1139 appGUI/preferences/general/GeneralAPPSetGroupUI.py:78 -msgid "Max. magnet distance" -msgstr "Max. Magnetabstand" - -#: appGUI/MainGUI.py:1175 appGUI/MainGUI.py:1420 app_Main.py:7763 -msgid "Project" -msgstr "Projekt" - -#: appGUI/MainGUI.py:1190 -msgid "Selected" -msgstr "Ausgewählt" - -#: appGUI/MainGUI.py:1218 appGUI/MainGUI.py:1226 -msgid "Plot Area" -msgstr "Grundstücksfläche" - -#: appGUI/MainGUI.py:1253 -msgid "General" -msgstr "Allgemeines" - -#: appGUI/MainGUI.py:1268 appTools/ToolCopperThieving.py:74 -#: appTools/ToolCorners.py:55 appTools/ToolDblSided.py:64 -#: appTools/ToolEtchCompensation.py:73 appTools/ToolExtractDrills.py:61 -#: appTools/ToolFiducials.py:262 appTools/ToolInvertGerber.py:72 -#: appTools/ToolIsolation.py:94 appTools/ToolOptimal.py:71 -#: appTools/ToolPunchGerber.py:64 appTools/ToolQRCode.py:78 -#: appTools/ToolRulesCheck.py:61 appTools/ToolSolderPaste.py:67 -#: appTools/ToolSub.py:70 -msgid "GERBER" -msgstr "GERBER" - -#: appGUI/MainGUI.py:1278 appTools/ToolDblSided.py:92 -#: appTools/ToolRulesCheck.py:199 -msgid "EXCELLON" -msgstr "EXCELLON" - -#: appGUI/MainGUI.py:1288 appTools/ToolDblSided.py:120 appTools/ToolSub.py:125 -msgid "GEOMETRY" -msgstr "GEOMETRY" - -#: appGUI/MainGUI.py:1298 -msgid "CNC-JOB" -msgstr "CNC-Auftrag" - -#: appGUI/MainGUI.py:1307 appGUI/ObjectUI.py:328 appGUI/ObjectUI.py:2062 -msgid "TOOLS" -msgstr "WERKZEUGE" - -#: appGUI/MainGUI.py:1316 -msgid "TOOLS 2" -msgstr "WERKZEUGE 2" - -#: appGUI/MainGUI.py:1326 -msgid "UTILITIES" -msgstr "NUTZEN" - -#: appGUI/MainGUI.py:1343 -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:201 -msgid "Restore Defaults" -msgstr "Standard wiederherstellen" - -#: appGUI/MainGUI.py:1346 +#: appGUI/MainGUI.py:1179 msgid "" -"Restore the entire set of default values\n" -"to the initial values loaded after first launch." +"Relative measurement.\n" +"Reference is last click position" msgstr "" -"Stellen Sie den gesamten Satz von Standardwerten wieder her\n" -"auf die nach dem ersten Start geladenen Anfangswerte." +"Relative Messung\n" +"Referenz ist Position des letzten Klicks" -#: appGUI/MainGUI.py:1351 -msgid "Open Pref Folder" -msgstr "Öffnen Sie den Einstellungsordner" - -#: appGUI/MainGUI.py:1354 -msgid "Open the folder where FlatCAM save the preferences files." -msgstr "" -"Öffnen Sie den Ordner, in dem FlatCAM die Voreinstellungsdateien speichert." - -#: appGUI/MainGUI.py:1358 appGUI/MainGUI.py:1836 -msgid "Clear GUI Settings" -msgstr "Löschen Sie die GUI-Einstellungen" - -#: appGUI/MainGUI.py:1362 -msgid "" -"Clear the GUI settings for FlatCAM,\n" -"such as: layout, gui state, style, hdpi support etc." -msgstr "" -"Löschen Sie die GUI-Einstellungen für FlatCAM.\n" -"wie zum Beispiel: Layout, GUI-Status, Stil, HDPI-Unterstützung usw." - -#: appGUI/MainGUI.py:1373 -msgid "Apply" -msgstr "Anwenden" - -#: appGUI/MainGUI.py:1376 -msgid "Apply the current preferences without saving to a file." -msgstr "Anwenden ohne zu speichern." - -#: appGUI/MainGUI.py:1383 -msgid "" -"Save the current settings in the 'current_defaults' file\n" -"which is the file storing the working default preferences." -msgstr "" -"Speichern Sie die aktuellen Einstellungen in der Datei 'current_defaults'\n" -"Dies ist die Datei, in der die Arbeitseinstellungen gespeichert sind." - -#: appGUI/MainGUI.py:1391 -msgid "Will not save the changes and will close the preferences window." -msgstr "Einstellungen werden geschlossen ohne die Änderungen zu speichern." - -#: appGUI/MainGUI.py:1405 -msgid "Toggle Visibility" -msgstr "Sichtbarkeit umschalten" - -#: appGUI/MainGUI.py:1411 -msgid "New" -msgstr "Neu" - -#: appGUI/MainGUI.py:1413 -#: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:78 -#: appTools/ToolCalibration.py:631 appTools/ToolCalibration.py:648 -#: appTools/ToolCalibration.py:815 appTools/ToolCopperThieving.py:148 -#: appTools/ToolCopperThieving.py:162 appTools/ToolCopperThieving.py:608 -#: appTools/ToolCutOut.py:92 appTools/ToolDblSided.py:226 -#: appTools/ToolFilm.py:69 appTools/ToolFilm.py:92 appTools/ToolImage.py:49 -#: appTools/ToolImage.py:271 appTools/ToolIsolation.py:474 -#: appTools/ToolIsolation.py:527 appTools/ToolIsolation.py:1306 -#: appTools/ToolNCC.py:95 appTools/ToolNCC.py:558 appTools/ToolNCC.py:1318 -#: appTools/ToolPaint.py:501 appTools/ToolPaint.py:705 -#: appTools/ToolPanelize.py:116 appTools/ToolPanelize.py:385 -#: appTools/ToolPanelize.py:403 appTools/ToolTransform.py:100 -#: appTools/ToolTransform.py:535 -msgid "Geometry" -msgstr "Geometrie" - -#: appGUI/MainGUI.py:1417 -#: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:99 -#: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:77 -#: appTools/ToolAlignObjects.py:74 appTools/ToolAlignObjects.py:110 -#: appTools/ToolCalibration.py:197 appTools/ToolCalibration.py:631 -#: appTools/ToolCalibration.py:648 appTools/ToolCalibration.py:807 -#: appTools/ToolCalibration.py:815 appTools/ToolCopperThieving.py:148 -#: appTools/ToolCopperThieving.py:162 appTools/ToolCopperThieving.py:608 -#: appTools/ToolDblSided.py:225 appTools/ToolFilm.py:342 -#: appTools/ToolIsolation.py:527 appTools/ToolIsolation.py:1306 -#: appTools/ToolNCC.py:558 appTools/ToolNCC.py:1318 appTools/ToolPaint.py:501 -#: appTools/ToolPaint.py:705 appTools/ToolPanelize.py:385 -#: appTools/ToolPunchGerber.py:149 appTools/ToolPunchGerber.py:164 -#: appTools/ToolTransform.py:99 appTools/ToolTransform.py:535 -msgid "Excellon" -msgstr "Excellon" - -#: appGUI/MainGUI.py:1424 -msgid "Grids" -msgstr "Raster" - -#: appGUI/MainGUI.py:1431 -msgid "Clear Plot" -msgstr "Plot klar löschen" - -#: appGUI/MainGUI.py:1433 -msgid "Replot" -msgstr "Replotieren" - -#: appGUI/MainGUI.py:1437 -msgid "Geo Editor" -msgstr "Geo-Editor" - -#: appGUI/MainGUI.py:1439 -msgid "Path" -msgstr "Pfad" - -#: appGUI/MainGUI.py:1441 -msgid "Rectangle" -msgstr "Rechteck" - -#: appGUI/MainGUI.py:1444 -msgid "Circle" -msgstr "Kreis" - -#: appGUI/MainGUI.py:1448 -msgid "Arc" -msgstr "Bogen" - -#: appGUI/MainGUI.py:1462 -msgid "Union" -msgstr "Vereinigung" - -#: appGUI/MainGUI.py:1464 -msgid "Intersection" -msgstr "Überschneidung" - -#: appGUI/MainGUI.py:1466 -msgid "Subtraction" -msgstr "Subtraktion" - -#: appGUI/MainGUI.py:1468 appGUI/ObjectUI.py:2151 -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:56 -msgid "Cut" -msgstr "Schnitt" - -#: appGUI/MainGUI.py:1479 -msgid "Pad" -msgstr "Pad" - -#: appGUI/MainGUI.py:1481 -msgid "Pad Array" -msgstr "Pad-Array" - -#: appGUI/MainGUI.py:1485 -msgid "Track" -msgstr "Track" - -#: appGUI/MainGUI.py:1487 -msgid "Region" -msgstr "Region" - -#: appGUI/MainGUI.py:1510 -msgid "Exc Editor" -msgstr "Exc-Editor" - -#: appGUI/MainGUI.py:1512 appGUI/MainGUI.py:4391 -msgid "Add Drill" -msgstr "Bohrer hinzufügen" - -#: appGUI/MainGUI.py:1531 app_Main.py:2222 -msgid "Close Editor" -msgstr "Editor schließen" - -#: appGUI/MainGUI.py:1555 +#: appGUI/MainGUI.py:1187 msgid "" "Absolute measurement.\n" "Reference is (X=0, Y= 0) position" @@ -5083,60 +5606,288 @@ msgstr "" "Absolute Messung.\n" "Referenz ist (X = 0, Y = 0)" -#: appGUI/MainGUI.py:1563 +#: appGUI/MainGUI.py:1221 appGUI/MainGUI.py:1470 app_Main.py:8126 +msgid "Project" +msgstr "Projekt" + +#: appGUI/MainGUI.py:1236 +msgid "Selected" +msgstr "Ausgewählt" + +#: appGUI/MainGUI.py:1264 appGUI/MainGUI.py:1272 +msgid "Plot Area" +msgstr "Grundstücksfläche" + +#: appGUI/MainGUI.py:1314 appTools/ToolCopperThieving.py:1163 +#: appTools/ToolCorners.py:317 appTools/ToolEtchCompensation.py:291 +#: appTools/ToolExtractDrills.py:453 appTools/ToolFiducials.py:873 +#: appTools/ToolInvertGerber.py:215 appTools/ToolIsolation.py:2948 +#: appTools/ToolOptimal.py:421 appTools/ToolPunchGerber.py:718 +#: appTools/ToolQRCode.py:656 appTools/ToolRulesCheck.py:1163 +#: appTools/ToolSolderPaste.py:1143 appTools/ToolSub.py:641 +msgid "GERBER" +msgstr "GERBER" + +#: appGUI/MainGUI.py:1324 appTools/ToolDrilling.py:2018 +#: appTools/ToolMilling.py:1637 appTools/ToolRulesCheck.py:1301 +msgid "EXCELLON" +msgstr "EXCELLON" + +#: appGUI/MainGUI.py:1334 appTools/ToolSub.py:696 +msgid "GEOMETRY" +msgstr "GEOMETRY" + +#: appGUI/MainGUI.py:1344 +msgid "CNC-JOB" +msgstr "CNC-Auftrag" + +#: appGUI/MainGUI.py:1353 appGUI/ObjectUI.py:327 appGUI/ObjectUI.py:637 +#: appGUI/ObjectUI.py:1635 +msgid "TOOLS" +msgstr "WERKZEUGE" + +#: appGUI/MainGUI.py:1362 +msgid "TOOLS 2" +msgstr "WERKZEUGE 2" + +#: appGUI/MainGUI.py:1372 +msgid "UTILITIES" +msgstr "NUTZEN" + +#: appGUI/MainGUI.py:1388 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:201 +msgid "Restore Defaults" +msgstr "Standard wiederherstellen" + +#: appGUI/MainGUI.py:1392 +msgid "" +"Restore the entire set of default values\n" +"to the initial values loaded after first launch." +msgstr "" +"Stellen Sie den gesamten Satz von Standardwerten wieder her\n" +"auf die nach dem ersten Start geladenen Anfangswerte." + +#: appGUI/MainGUI.py:1397 +msgid "Open Pref Folder" +msgstr "Öffnen Sie den Einstellungsordner" + +#: appGUI/MainGUI.py:1401 +msgid "Open the folder where FlatCAM save the preferences files." +msgstr "" +"Öffnen Sie den Ordner, in dem FlatCAM die Voreinstellungsdateien speichert." + +#: appGUI/MainGUI.py:1405 appGUI/MainGUI.py:1982 +msgid "Clear GUI Settings" +msgstr "Löschen Sie die GUI-Einstellungen" + +#: appGUI/MainGUI.py:1410 +msgid "" +"Clear the GUI settings for FlatCAM,\n" +"such as: layout, gui state, style, hdpi support etc." +msgstr "" +"Löschen Sie die GUI-Einstellungen für FlatCAM.\n" +"wie zum Beispiel: Layout, GUI-Status, Stil, HDPI-Unterstützung usw." + +#: appGUI/MainGUI.py:1422 +msgid "Apply" +msgstr "Anwenden" + +#: appGUI/MainGUI.py:1425 +msgid "Apply the current preferences without saving to a file." +msgstr "Anwenden ohne zu speichern." + +#: appGUI/MainGUI.py:1433 +msgid "" +"Save the current settings in the 'current_defaults' file\n" +"which is the file storing the working default preferences." +msgstr "" +"Speichern Sie die aktuellen Einstellungen in der Datei 'current_defaults'\n" +"Dies ist die Datei, in der die Arbeitseinstellungen gespeichert sind." + +#: appGUI/MainGUI.py:1441 +msgid "Will not save the changes and will close the preferences window." +msgstr "Einstellungen werden geschlossen ohne die Änderungen zu speichern." + +#: appGUI/MainGUI.py:1455 +msgid "Toggle Visibility" +msgstr "Sichtbarkeit umschalten" + +#: appGUI/MainGUI.py:1461 appGUI/ObjectUI.py:2143 +msgid "New" +msgstr "Neu" + +#: appGUI/MainGUI.py:1463 +#: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:78 +#: appTools/ToolCalibration.py:171 appTools/ToolCalibration.py:1326 +#: appTools/ToolCalibration.py:1343 appTools/ToolCopperThieving.py:163 +#: appTools/ToolCopperThieving.py:1237 appTools/ToolCopperThieving.py:1251 +#: appTools/ToolCutOut.py:1769 appTools/ToolDblSided.py:529 +#: appTools/ToolDblSided.py:774 appTools/ToolFilm.py:782 +#: appTools/ToolFilm.py:805 appTools/ToolImage.py:136 appTools/ToolImage.py:191 +#: appTools/ToolIsolation.py:796 appTools/ToolIsolation.py:3283 +#: appTools/ToolIsolation.py:3336 appTools/ToolNCC.py:792 +#: appTools/ToolNCC.py:3740 appTools/ToolNCC.py:4209 appTools/ToolPaint.py:167 +#: appTools/ToolPaint.py:3141 appTools/ToolPanelize.py:147 +#: appTools/ToolPanelize.py:167 appTools/ToolPanelize.py:715 +#: appTools/ToolTransform.py:126 appTools/ToolTransform.py:587 +msgid "Geometry" +msgstr "Geometrie" + +#: appGUI/MainGUI.py:1467 +#: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:99 +#: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:77 +#: appTools/ToolAlignObjects.py:399 appTools/ToolAlignObjects.py:435 +#: appTools/ToolCalibration.py:163 appTools/ToolCalibration.py:171 +#: appTools/ToolCalibration.py:892 appTools/ToolCalibration.py:1326 +#: appTools/ToolCalibration.py:1343 appTools/ToolCopperThieving.py:163 +#: appTools/ToolCopperThieving.py:1237 appTools/ToolCopperThieving.py:1251 +#: appTools/ToolDblSided.py:530 appTools/ToolDblSided.py:731 +#: appTools/ToolDblSided.py:773 appTools/ToolFilm.py:1060 +#: appTools/ToolIsolation.py:796 appTools/ToolIsolation.py:3336 +#: appTools/ToolNCC.py:792 appTools/ToolNCC.py:4209 appTools/ToolPaint.py:167 +#: appTools/ToolPaint.py:3141 appTools/ToolPanelize.py:147 +#: appTools/ToolPunchGerber.py:803 appTools/ToolPunchGerber.py:818 +#: appTools/ToolTransform.py:126 appTools/ToolTransform.py:586 +msgid "Excellon" +msgstr "Excellon" + +#: appGUI/MainGUI.py:1474 +msgid "Grids" +msgstr "Raster" + +#: appGUI/MainGUI.py:1481 +msgid "Clear Plot" +msgstr "Plot klar löschen" + +#: appGUI/MainGUI.py:1483 +msgid "Replot" +msgstr "Replotieren" + +#: appGUI/MainGUI.py:1487 +msgid "Geo Editor" +msgstr "Geo-Editor" + +#: appGUI/MainGUI.py:1489 +msgid "Path" +msgstr "Pfad" + +#: appGUI/MainGUI.py:1491 +msgid "Rectangle" +msgstr "Rechteck" + +#: appGUI/MainGUI.py:1494 +msgid "Circle" +msgstr "Kreis" + +#: appGUI/MainGUI.py:1498 +msgid "Arc" +msgstr "Bogen" + +#: appGUI/MainGUI.py:1512 +msgid "Union" +msgstr "Vereinigung" + +#: appGUI/MainGUI.py:1514 +msgid "Intersection" +msgstr "Überschneidung" + +#: appGUI/MainGUI.py:1516 +msgid "Subtraction" +msgstr "Subtraktion" + +#: appGUI/MainGUI.py:1518 appGUI/ObjectUI.py:1728 +#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:63 +msgid "Cut" +msgstr "Schnitt" + +#: appGUI/MainGUI.py:1529 +msgid "Pad" +msgstr "Pad" + +#: appGUI/MainGUI.py:1531 +msgid "Pad Array" +msgstr "Pad-Array" + +#: appGUI/MainGUI.py:1535 +msgid "Track" +msgstr "Track" + +#: appGUI/MainGUI.py:1537 +msgid "Region" +msgstr "Region" + +#: appGUI/MainGUI.py:1560 +msgid "Exc Editor" +msgstr "Exc-Editor" + +#: appGUI/MainGUI.py:1562 appGUI/MainGUI.py:4560 +msgid "Add Drill" +msgstr "Bohrer hinzufügen" + +#: appGUI/MainGUI.py:1581 app_Main.py:2285 +msgid "Close Editor" +msgstr "Editor schließen" + +#: appGUI/MainGUI.py:1612 msgid "Application units" msgstr "Anwendungseinheiten" -#: appGUI/MainGUI.py:1654 +#: appGUI/MainGUI.py:1707 msgid "Lock Toolbars" msgstr "Symbolleisten sperren" -#: appGUI/MainGUI.py:1824 +#: appGUI/MainGUI.py:1863 +msgid "Detachable Tabs" +msgstr "Abnehmbare Laschen" + +#: appGUI/MainGUI.py:1963 msgid "FlatCAM Preferences Folder opened." msgstr "FlatCAM-Einstellungsordner geöffnet." -#: appGUI/MainGUI.py:1835 +#: appGUI/MainGUI.py:1981 msgid "Are you sure you want to delete the GUI Settings? \n" msgstr "Möchten Sie die GUI-Einstellungen wirklich löschen?\n" -#: appGUI/MainGUI.py:1840 appGUI/preferences/PreferencesUIManager.py:886 -#: appGUI/preferences/PreferencesUIManager.py:1131 appTranslation.py:111 -#: appTranslation.py:212 app_Main.py:2226 app_Main.py:3233 app_Main.py:5478 -#: app_Main.py:6539 +#: appGUI/MainGUI.py:1986 appGUI/preferences/PreferencesUIManager.py:921 +#: appGUI/preferences/PreferencesUIManager.py:1167 appTranslation.py:112 +#: appTranslation.py:214 app_Main.py:2289 app_Main.py:3384 app_Main.py:5809 +#: app_Main.py:6876 msgid "Yes" msgstr "Ja" -#: appGUI/MainGUI.py:1841 appGUI/preferences/PreferencesUIManager.py:1132 +#: appGUI/MainGUI.py:1987 appGUI/preferences/PreferencesUIManager.py:1168 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:49 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:62 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:164 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:150 -#: appTools/ToolIsolation.py:174 appTools/ToolNCC.py:182 -#: appTools/ToolPaint.py:165 appTranslation.py:112 appTranslation.py:213 -#: app_Main.py:2227 app_Main.py:3234 app_Main.py:5479 app_Main.py:6540 +#: appTools/ToolDrilling.py:2076 appTools/ToolIsolation.py:3028 +#: appTools/ToolMilling.py:1695 appTools/ToolNCC.py:3827 +#: appTools/ToolPaint.py:2850 appTranslation.py:113 appTranslation.py:215 +#: app_Main.py:2290 app_Main.py:3385 app_Main.py:5810 app_Main.py:6877 msgid "No" msgstr "Nein" -#: appGUI/MainGUI.py:1940 +#: appGUI/MainGUI.py:2086 msgid "&Cutout Tool" msgstr "Ausschnittwerkzeug" -#: appGUI/MainGUI.py:2016 +#: appGUI/MainGUI.py:2164 msgid "Select 'Esc'" msgstr "Wählen" -#: appGUI/MainGUI.py:2054 +#: appGUI/MainGUI.py:2202 msgid "Copy Objects" msgstr "Objekte kopieren" -#: appGUI/MainGUI.py:2056 appGUI/MainGUI.py:4311 +#: appGUI/MainGUI.py:2204 appGUI/MainGUI.py:4480 msgid "Delete Shape" msgstr "Form löschen" -#: appGUI/MainGUI.py:2062 +#: appGUI/MainGUI.py:2210 msgid "Move Objects" msgstr "Objekte verschieben" -#: appGUI/MainGUI.py:2648 +#: appGUI/MainGUI.py:2796 msgid "" "Please first select a geometry item to be cutted\n" "then select the geometry item that will be cutted\n" @@ -5148,12 +5899,12 @@ msgstr "" "aus dem ersten Artikel. Zum Schluss drücken Sie die Taste ~ X ~ oder\n" "die Symbolleisten-Schaltfläche." -#: appGUI/MainGUI.py:2655 appGUI/MainGUI.py:2819 appGUI/MainGUI.py:2866 -#: appGUI/MainGUI.py:2888 +#: appGUI/MainGUI.py:2803 appGUI/MainGUI.py:2967 appGUI/MainGUI.py:3014 +#: appGUI/MainGUI.py:3036 msgid "Warning" msgstr "Warnung" -#: appGUI/MainGUI.py:2814 +#: appGUI/MainGUI.py:2962 msgid "" "Please select geometry items \n" "on which to perform Intersection Tool." @@ -5161,7 +5912,7 @@ msgstr "" "Bitte wählen Sie Geometrieelemente aus\n" "auf dem das Verschneidungswerkzeug ausgeführt werden soll." -#: appGUI/MainGUI.py:2861 +#: appGUI/MainGUI.py:3009 msgid "" "Please select geometry items \n" "on which to perform Substraction Tool." @@ -5169,7 +5920,7 @@ msgstr "" "Bitte wählen Sie Geometrieelemente aus\n" "auf dem das Subtraktionswerkzeug ausgeführt werden soll." -#: appGUI/MainGUI.py:2883 +#: appGUI/MainGUI.py:3031 msgid "" "Please select geometry items \n" "on which to perform union." @@ -5177,277 +5928,277 @@ msgstr "" "Bitte wählen Sie Geometrieelemente aus\n" "auf dem die Polygonverbindung ausgeführt werden soll." -#: appGUI/MainGUI.py:2968 appGUI/MainGUI.py:3183 +#: appGUI/MainGUI.py:3116 appGUI/MainGUI.py:3331 msgid "Cancelled. Nothing selected to delete." msgstr "Abgebrochen. Nichts zum Löschen ausgewählt." -#: appGUI/MainGUI.py:3052 appGUI/MainGUI.py:3299 +#: appGUI/MainGUI.py:3200 appGUI/MainGUI.py:3447 msgid "Cancelled. Nothing selected to copy." msgstr "Abgebrochen. Nichts zum Kopieren ausgewählt." -#: appGUI/MainGUI.py:3098 appGUI/MainGUI.py:3328 +#: appGUI/MainGUI.py:3246 appGUI/MainGUI.py:3476 msgid "Cancelled. Nothing selected to move." msgstr "Abgebrochen. Nichts ausgewählt, um sich zu bewegen." -#: appGUI/MainGUI.py:3354 +#: appGUI/MainGUI.py:3502 msgid "New Tool ..." msgstr "Neues Werkzeug ..." -#: appGUI/MainGUI.py:3355 appTools/ToolIsolation.py:1283 -#: appTools/ToolNCC.py:924 appTools/ToolPaint.py:849 -#: appTools/ToolSolderPaste.py:568 +#: appGUI/MainGUI.py:3503 appTools/ToolIsolation.py:777 appTools/ToolNCC.py:450 +#: appTools/ToolPaint.py:387 appTools/ToolSolderPaste.py:123 msgid "Enter a Tool Diameter" msgstr "Geben Sie einen Werkzeugdurchmesser ein" -#: appGUI/MainGUI.py:3367 +#: appGUI/MainGUI.py:3515 msgid "Adding Tool cancelled ..." msgstr "Tool wird hinzugefügt abgebrochen ..." -#: appGUI/MainGUI.py:3381 +#: appGUI/MainGUI.py:3545 msgid "Distance Tool exit..." msgstr "Entfernungstool beenden ..." -#: appGUI/MainGUI.py:3561 app_Main.py:3221 +#: appGUI/MainGUI.py:3725 app_Main.py:3372 msgid "Application is saving the project. Please wait ..." msgstr "Anwendung speichert das Projekt. Warten Sie mal ..." -#: appGUI/MainGUI.py:3668 -msgid "Shell disabled." -msgstr "Shell deaktiviert." - -#: appGUI/MainGUI.py:3678 +#: appGUI/MainGUI.py:3858 msgid "Shell enabled." msgstr "Shell aktiviert." -#: appGUI/MainGUI.py:3706 app_Main.py:9279 +#: appGUI/MainGUI.py:3861 +msgid "Shell disabled." +msgstr "Shell deaktiviert." + +#: appGUI/MainGUI.py:3875 app_Main.py:9676 msgid "Shortcut Key List" msgstr " Liste der Tastenkombinationen " -#: appGUI/MainGUI.py:4089 +#: appGUI/MainGUI.py:4258 msgid "General Shortcut list" msgstr "Tastenkürzel Liste" -#: appGUI/MainGUI.py:4090 +#: appGUI/MainGUI.py:4259 msgid "SHOW SHORTCUT LIST" msgstr "Verknüpfungsliste anzeigen" -#: appGUI/MainGUI.py:4090 +#: appGUI/MainGUI.py:4259 msgid "Switch to Project Tab" msgstr "Wechseln Sie zur Registerkarte Projekt" -#: appGUI/MainGUI.py:4090 +#: appGUI/MainGUI.py:4259 msgid "Switch to Selected Tab" msgstr "Wechseln Sie zur ausgewählten Registerkarte" -#: appGUI/MainGUI.py:4091 +#: appGUI/MainGUI.py:4260 msgid "Switch to Tool Tab" msgstr "Wechseln Sie zur Werkzeugregisterkarte" -#: appGUI/MainGUI.py:4092 +#: appGUI/MainGUI.py:4261 msgid "New Gerber" msgstr "Neuer Gerber" -#: appGUI/MainGUI.py:4092 +#: appGUI/MainGUI.py:4261 msgid "Edit Object (if selected)" msgstr "Objekt bearbeiten (falls ausgewählt)" -#: appGUI/MainGUI.py:4092 app_Main.py:5782 +#: appGUI/MainGUI.py:4261 app_Main.py:6109 msgid "Grid On/Off" msgstr "Raster ein/aus" -#: appGUI/MainGUI.py:4092 +#: appGUI/MainGUI.py:4261 msgid "Jump to Coordinates" msgstr "Springe zu den Koordinaten" -#: appGUI/MainGUI.py:4093 +#: appGUI/MainGUI.py:4262 msgid "New Excellon" msgstr "Neuer Excellon" -#: appGUI/MainGUI.py:4093 +#: appGUI/MainGUI.py:4262 msgid "Move Obj" msgstr "Objekt verschieben" -#: appGUI/MainGUI.py:4093 +#: appGUI/MainGUI.py:4262 msgid "New Geometry" msgstr "Neue Geometrie" -#: appGUI/MainGUI.py:4093 +#: appGUI/MainGUI.py:4262 msgid "Change Units" msgstr "Einheiten ändern" -#: appGUI/MainGUI.py:4094 +#: appGUI/MainGUI.py:4263 msgid "Open Properties Tool" msgstr "Öffnen Sie das Eigenschaften-Tool" -#: appGUI/MainGUI.py:4094 +#: appGUI/MainGUI.py:4263 msgid "Rotate by 90 degree CW" msgstr "Um 90 Grad im Uhrzeigersinn drehen" -#: appGUI/MainGUI.py:4094 +#: appGUI/MainGUI.py:4263 msgid "Shell Toggle" msgstr "Shell umschalten" -#: appGUI/MainGUI.py:4095 +#: appGUI/MainGUI.py:4264 msgid "" "Add a Tool (when in Geometry Selected Tab or in Tools NCC or Tools Paint)" msgstr "" "Hinzufügen eines Werkzeugs (auf der Registerkarte \"Geometrie ausgewählt\" " "oder unter \"Werkzeuge\", \"NCC\" oder \"Werkzeuge\", \"Malen\")" -#: appGUI/MainGUI.py:4096 +#: appGUI/MainGUI.py:4265 msgid "Flip on X_axis" msgstr "Auf X-Achse spiegeln" -#: appGUI/MainGUI.py:4096 +#: appGUI/MainGUI.py:4265 msgid "Flip on Y_axis" msgstr "Auf Y-Achse spiegeln" -#: appGUI/MainGUI.py:4099 +#: appGUI/MainGUI.py:4268 msgid "Copy Obj" msgstr "Objekt kopieren" -#: appGUI/MainGUI.py:4099 +#: appGUI/MainGUI.py:4268 msgid "Open Tools Database" msgstr "Werkzeugdatenbank öffnen" -#: appGUI/MainGUI.py:4100 +#: appGUI/MainGUI.py:4269 msgid "Open Excellon File" msgstr "Öffnen Sie die Excellon-Datei" -#: appGUI/MainGUI.py:4100 +#: appGUI/MainGUI.py:4269 msgid "Open Gerber File" msgstr "Öffnen Sie die Gerber-Datei" -#: appGUI/MainGUI.py:4100 +#: appGUI/MainGUI.py:4269 msgid "New Project" msgstr "Neues Projekt" -#: appGUI/MainGUI.py:4101 app_Main.py:6835 app_Main.py:6838 +#: appGUI/MainGUI.py:4270 app_Main.py:7206 app_Main.py:7209 msgid "Open Project" msgstr "Projekt öffnen" -#: appGUI/MainGUI.py:4101 appTools/ToolPDF.py:41 +#: appGUI/MainGUI.py:4270 appTools/ToolPDF.py:41 msgid "PDF Import Tool" msgstr "PDF-Importwerkzeug" -#: appGUI/MainGUI.py:4101 +#: appGUI/MainGUI.py:4270 msgid "Save Project" msgstr "Projekt speichern" -#: appGUI/MainGUI.py:4101 +#: appGUI/MainGUI.py:4270 msgid "Toggle Plot Area" msgstr "Zeichenbereich umschalten0" -#: appGUI/MainGUI.py:4104 +#: appGUI/MainGUI.py:4273 msgid "Copy Obj_Name" msgstr "Kopieren Sie den Namen des Objekts" -#: appGUI/MainGUI.py:4105 +#: appGUI/MainGUI.py:4274 msgid "Toggle Code Editor" msgstr "Code-Editor umschalten" -#: appGUI/MainGUI.py:4105 +#: appGUI/MainGUI.py:4274 msgid "Toggle the axis" msgstr "Achse umschalten" -#: appGUI/MainGUI.py:4105 appGUI/MainGUI.py:4306 appGUI/MainGUI.py:4393 -#: appGUI/MainGUI.py:4515 +#: appGUI/MainGUI.py:4274 appGUI/MainGUI.py:4475 appGUI/MainGUI.py:4562 +#: appGUI/MainGUI.py:4684 msgid "Distance Minimum Tool" msgstr "Mindestabstand Werkzeug" -#: appGUI/MainGUI.py:4106 +#: appGUI/MainGUI.py:4275 msgid "Open Preferences Window" msgstr "Öffnen Sie das Einstellungsfenster" -#: appGUI/MainGUI.py:4107 +#: appGUI/MainGUI.py:4276 msgid "Rotate by 90 degree CCW" msgstr "Um 90 Grad gegen den Uhrzeigersinn drehen" -#: appGUI/MainGUI.py:4107 +#: appGUI/MainGUI.py:4276 msgid "Run a Script" msgstr "Führen Sie ein Skript aus" -#: appGUI/MainGUI.py:4107 +#: appGUI/MainGUI.py:4276 msgid "Toggle the workspace" msgstr "Arbeitsbereich umschalten" -#: appGUI/MainGUI.py:4107 +#: appGUI/MainGUI.py:4276 msgid "Skew on X axis" msgstr "Neigung auf der X-Achse" -#: appGUI/MainGUI.py:4108 +#: appGUI/MainGUI.py:4277 msgid "Skew on Y axis" msgstr "Neigung auf der Y-Achse" -#: appGUI/MainGUI.py:4111 +#: appGUI/MainGUI.py:4280 msgid "2-Sided PCB Tool" msgstr "2-seitiges PCB Werkzeug" -#: appGUI/MainGUI.py:4112 +#: appGUI/MainGUI.py:4281 msgid "Toggle Grid Lines" msgstr "Rasterlinien umschalten" -#: appGUI/MainGUI.py:4114 +#: appGUI/MainGUI.py:4283 msgid "Solder Paste Dispensing Tool" msgstr "Lotpasten-Dosierwerkzeug" -#: appGUI/MainGUI.py:4115 +#: appGUI/MainGUI.py:4284 msgid "Film PCB Tool" msgstr "Film PCB Werkzeug" -#: appGUI/MainGUI.py:4115 +#: appGUI/MainGUI.py:4284 msgid "Non-Copper Clearing Tool" msgstr "Nicht-Kupfer-Räumwerkzeug" -#: appGUI/MainGUI.py:4116 +#: appGUI/MainGUI.py:4285 msgid "Paint Area Tool" msgstr "Malbereichswerkzeug" -#: appGUI/MainGUI.py:4116 +#: appGUI/MainGUI.py:4285 msgid "Rules Check Tool" msgstr "Regelprüfwerkzeug" -#: appGUI/MainGUI.py:4117 +#: appGUI/MainGUI.py:4286 msgid "View File Source" msgstr "Dateiquelle anzeigen" -#: appGUI/MainGUI.py:4117 +#: appGUI/MainGUI.py:4286 msgid "Transformations Tool" msgstr "Transformations-Tool" -#: appGUI/MainGUI.py:4118 +#: appGUI/MainGUI.py:4287 msgid "Cutout PCB Tool" msgstr "Ausschnitt PCB Tool" -#: appGUI/MainGUI.py:4118 appTools/ToolPanelize.py:35 +#: appGUI/MainGUI.py:4287 appTools/ToolPanelize.py:35 +#: appTools/ToolPanelize.py:634 msgid "Panelize PCB" msgstr "Panelisierung PCB" -#: appGUI/MainGUI.py:4119 +#: appGUI/MainGUI.py:4288 msgid "Enable all Plots" msgstr "Alle Zeichnungen aktivieren" -#: appGUI/MainGUI.py:4119 +#: appGUI/MainGUI.py:4288 msgid "Disable all Plots" msgstr "Alle Zeichnungen deaktivieren" -#: appGUI/MainGUI.py:4119 +#: appGUI/MainGUI.py:4288 msgid "Disable Non-selected Plots" msgstr "Nicht ausgewählte Zeichnungen deaktiv" -#: appGUI/MainGUI.py:4120 +#: appGUI/MainGUI.py:4289 msgid "Toggle Full Screen" msgstr "Vollbild umschalten" -#: appGUI/MainGUI.py:4123 +#: appGUI/MainGUI.py:4292 msgid "Abort current task (gracefully)" msgstr "Aktuelle Aufgabe abbrechen (ordnungsgemäß)" -#: appGUI/MainGUI.py:4126 +#: appGUI/MainGUI.py:4295 msgid "Save Project As" msgstr "Projekt speichern als" -#: appGUI/MainGUI.py:4127 +#: appGUI/MainGUI.py:4296 msgid "" "Paste Special. Will convert a Windows path style to the one required in Tcl " "Shell" @@ -5455,224 +6206,224 @@ msgstr "" "Paste Special. Konvertiert einen Windows-Pfadstil in den in Tcl Shell " "erforderlichen" -#: appGUI/MainGUI.py:4130 +#: appGUI/MainGUI.py:4299 msgid "Open Online Manual" msgstr "Online-Handbuch öffnen" -#: appGUI/MainGUI.py:4131 +#: appGUI/MainGUI.py:4300 msgid "Open Online Tutorials" msgstr "Öffnen Sie Online-Tutorials" -#: appGUI/MainGUI.py:4131 +#: appGUI/MainGUI.py:4300 msgid "Refresh Plots" msgstr "Zeichnungen aktualisieren" -#: appGUI/MainGUI.py:4131 appTools/ToolSolderPaste.py:517 +#: appGUI/MainGUI.py:4300 appTools/ToolSolderPaste.py:71 msgid "Delete Object" msgstr "Objekt löschen" -#: appGUI/MainGUI.py:4131 +#: appGUI/MainGUI.py:4300 msgid "Alternate: Delete Tool" msgstr "Alternative: Werkzeug löschen" -#: appGUI/MainGUI.py:4132 +#: appGUI/MainGUI.py:4301 msgid "(left to Key_1)Toggle Notebook Area (Left Side)" msgstr "(links neben Taste_1) Notebook-Bereich umschalten (linke Seite)" -#: appGUI/MainGUI.py:4132 +#: appGUI/MainGUI.py:4301 msgid "En(Dis)able Obj Plot" msgstr "Objektzeichnung (de)aktivieren" -#: appGUI/MainGUI.py:4133 +#: appGUI/MainGUI.py:4302 msgid "Deselects all objects" msgstr "Hebt die Auswahl aller Objekte auf" -#: appGUI/MainGUI.py:4147 +#: appGUI/MainGUI.py:4316 msgid "Editor Shortcut list" msgstr "Editor-Verknüpfungsliste" -#: appGUI/MainGUI.py:4301 +#: appGUI/MainGUI.py:4470 msgid "GEOMETRY EDITOR" msgstr "GEOMETRIE-EDITOR" -#: appGUI/MainGUI.py:4301 +#: appGUI/MainGUI.py:4470 msgid "Draw an Arc" msgstr "Zeichnen Sie einen Bogen" -#: appGUI/MainGUI.py:4301 +#: appGUI/MainGUI.py:4470 msgid "Copy Geo Item" msgstr "Geo-Objekt kopieren" -#: appGUI/MainGUI.py:4302 +#: appGUI/MainGUI.py:4471 msgid "Within Add Arc will toogle the ARC direction: CW or CCW" msgstr "" "Innerhalb von Bogen hinzufügen wird die ARC-Richtung getippt: CW oder CCW" -#: appGUI/MainGUI.py:4302 +#: appGUI/MainGUI.py:4471 msgid "Polygon Intersection Tool" msgstr "Werkzeug Polygonschnitt" -#: appGUI/MainGUI.py:4303 +#: appGUI/MainGUI.py:4472 msgid "Geo Paint Tool" msgstr "Geo-Malwerkzeug" -#: appGUI/MainGUI.py:4303 appGUI/MainGUI.py:4392 appGUI/MainGUI.py:4512 +#: appGUI/MainGUI.py:4472 appGUI/MainGUI.py:4561 appGUI/MainGUI.py:4681 msgid "Jump to Location (x, y)" msgstr "Zum Standort springen (x, y)" -#: appGUI/MainGUI.py:4303 +#: appGUI/MainGUI.py:4472 msgid "Toggle Corner Snap" msgstr "Eckfang umschalten" -#: appGUI/MainGUI.py:4303 +#: appGUI/MainGUI.py:4472 msgid "Move Geo Item" msgstr "Geo-Objekt verschieben" -#: appGUI/MainGUI.py:4304 +#: appGUI/MainGUI.py:4473 msgid "Within Add Arc will cycle through the ARC modes" msgstr "Innerhalb von Bogen hinzufügen werden die ARC-Modi durchlaufen" -#: appGUI/MainGUI.py:4304 +#: appGUI/MainGUI.py:4473 msgid "Draw a Polygon" msgstr "Zeichnen Sie ein Polygon" -#: appGUI/MainGUI.py:4304 +#: appGUI/MainGUI.py:4473 msgid "Draw a Circle" msgstr "Zeichne einen Kreis" -#: appGUI/MainGUI.py:4305 +#: appGUI/MainGUI.py:4474 msgid "Draw a Path" msgstr "Zeichne einen Pfad" -#: appGUI/MainGUI.py:4305 +#: appGUI/MainGUI.py:4474 msgid "Draw Rectangle" msgstr "Rechteck zeichnen" -#: appGUI/MainGUI.py:4305 +#: appGUI/MainGUI.py:4474 msgid "Polygon Subtraction Tool" msgstr "Polygon-Subtraktionswerkzeug" -#: appGUI/MainGUI.py:4305 +#: appGUI/MainGUI.py:4474 msgid "Add Text Tool" msgstr "Textwerkzeug hinzufügen" -#: appGUI/MainGUI.py:4306 +#: appGUI/MainGUI.py:4475 msgid "Polygon Union Tool" msgstr "Polygonverbindungswerkzeug" -#: appGUI/MainGUI.py:4306 +#: appGUI/MainGUI.py:4475 msgid "Flip shape on X axis" msgstr "Form auf der X-Achse spiegeln" -#: appGUI/MainGUI.py:4306 +#: appGUI/MainGUI.py:4475 msgid "Flip shape on Y axis" msgstr "Form auf der Y-Achse spiegeln" -#: appGUI/MainGUI.py:4307 +#: appGUI/MainGUI.py:4476 msgid "Skew shape on X axis" msgstr "Neigung auf der X-Achse" -#: appGUI/MainGUI.py:4307 +#: appGUI/MainGUI.py:4476 msgid "Skew shape on Y axis" msgstr "Neigung auf der Y-Achse" -#: appGUI/MainGUI.py:4307 +#: appGUI/MainGUI.py:4476 msgid "Editor Transformation Tool" msgstr "Editor-Transformationstool" -#: appGUI/MainGUI.py:4308 +#: appGUI/MainGUI.py:4477 msgid "Offset shape on X axis" msgstr "Versetzte Form auf der X-Achse" -#: appGUI/MainGUI.py:4308 +#: appGUI/MainGUI.py:4477 msgid "Offset shape on Y axis" msgstr "Versetzte Form auf der Y-Achse" -#: appGUI/MainGUI.py:4309 appGUI/MainGUI.py:4395 appGUI/MainGUI.py:4517 +#: appGUI/MainGUI.py:4478 appGUI/MainGUI.py:4564 appGUI/MainGUI.py:4686 msgid "Save Object and Exit Editor" msgstr "Objekt speichern und Editor beenden" -#: appGUI/MainGUI.py:4309 +#: appGUI/MainGUI.py:4478 msgid "Polygon Cut Tool" msgstr "Polygon-Schneidewerkzeug" -#: appGUI/MainGUI.py:4310 +#: appGUI/MainGUI.py:4479 msgid "Rotate Geometry" msgstr "Geometrie drehen" -#: appGUI/MainGUI.py:4310 +#: appGUI/MainGUI.py:4479 msgid "Finish drawing for certain tools" msgstr "Beenden Sie das Zeichnen für bestimmte Werkzeuge" -#: appGUI/MainGUI.py:4310 appGUI/MainGUI.py:4395 appGUI/MainGUI.py:4515 +#: appGUI/MainGUI.py:4479 appGUI/MainGUI.py:4564 appGUI/MainGUI.py:4684 msgid "Abort and return to Select" msgstr "Abbrechen und zurück zu Auswählen" -#: appGUI/MainGUI.py:4391 +#: appGUI/MainGUI.py:4560 msgid "EXCELLON EDITOR" msgstr "EXCELLON EDITOR" -#: appGUI/MainGUI.py:4391 +#: appGUI/MainGUI.py:4560 msgid "Copy Drill(s)" msgstr "Bohrer kopieren" -#: appGUI/MainGUI.py:4392 +#: appGUI/MainGUI.py:4561 msgid "Move Drill(s)" msgstr "Bohrer verschieben" -#: appGUI/MainGUI.py:4393 +#: appGUI/MainGUI.py:4562 msgid "Add a new Tool" msgstr "Fügen Sie ein neues Werkzeug hinzu" -#: appGUI/MainGUI.py:4394 +#: appGUI/MainGUI.py:4563 msgid "Delete Drill(s)" msgstr "Bohrer löschen" -#: appGUI/MainGUI.py:4394 +#: appGUI/MainGUI.py:4563 msgid "Alternate: Delete Tool(s)" msgstr "Alternative: Werkzeug (e) löschen" -#: appGUI/MainGUI.py:4511 +#: appGUI/MainGUI.py:4680 msgid "GERBER EDITOR" msgstr "GERBER EDITOR" -#: appGUI/MainGUI.py:4511 +#: appGUI/MainGUI.py:4680 msgid "Add Disc" msgstr "Fügen Sie eine Scheiben hinzu" -#: appGUI/MainGUI.py:4511 +#: appGUI/MainGUI.py:4680 msgid "Add SemiDisc" msgstr "Halbschibe hinzufügen" -#: appGUI/MainGUI.py:4513 +#: appGUI/MainGUI.py:4682 msgid "Within Track & Region Tools will cycle in REVERSE the bend modes" msgstr "" "Innerhalb von Track- und Region-Werkzeugen werden die Biegemodi umgekehrt" -#: appGUI/MainGUI.py:4514 +#: appGUI/MainGUI.py:4683 msgid "Within Track & Region Tools will cycle FORWARD the bend modes" msgstr "" "Innerhalb von Track und Region werden mit Tools die Biegemodi vorwärts " "durchlaufen" -#: appGUI/MainGUI.py:4515 +#: appGUI/MainGUI.py:4684 msgid "Alternate: Delete Apertures" msgstr "Alternative: Löschen Sie die Blenden" -#: appGUI/MainGUI.py:4516 +#: appGUI/MainGUI.py:4685 msgid "Eraser Tool" msgstr "Radiergummi" -#: appGUI/MainGUI.py:4517 +#: appGUI/MainGUI.py:4686 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:221 msgid "Mark Area Tool" msgstr "Bereich markieren Werkzeug" -#: appGUI/MainGUI.py:4517 +#: appGUI/MainGUI.py:4686 msgid "Poligonize Tool" msgstr "Werkzeug Polygonisieren" -#: appGUI/MainGUI.py:4517 +#: appGUI/MainGUI.py:4686 msgid "Transformation Tool" msgstr "Transformationswerkzeug" @@ -5680,7 +6431,8 @@ msgstr "Transformationswerkzeug" msgid "App Object" msgstr "Objekt" -#: appGUI/ObjectUI.py:78 appTools/ToolIsolation.py:77 +#: appGUI/ObjectUI.py:78 appTools/ToolDrilling.py:2001 +#: appTools/ToolIsolation.py:2937 appTools/ToolMilling.py:1620 msgid "" "BASIC is suitable for a beginner. Many parameters\n" "are hidden from the user in this mode.\n" @@ -5698,7 +6450,7 @@ msgstr "" "Bearbeiten -> Einstellungen -> Allgemein und überprüfen Sie:\n" "Optionsfeld \"Anwendungsebene\"." -#: appGUI/ObjectUI.py:111 appGUI/ObjectUI.py:154 +#: appGUI/ObjectUI.py:111 appGUI/ObjectUI.py:155 msgid "Geometrical transformations of the current object." msgstr "Geometrische Transformationen des aktuellen Objekts." @@ -5730,31 +6482,23 @@ msgstr "" msgid "Perform the offset operation." msgstr "Führen Sie den Versatzvorgang aus." -#: appGUI/ObjectUI.py:162 appGUI/ObjectUI.py:173 appTool.py:280 appTool.py:291 -msgid "Edited value is out of range" -msgstr "Der bearbeitete Wert liegt außerhalb des Bereichs" - -#: appGUI/ObjectUI.py:168 appGUI/ObjectUI.py:175 appTool.py:286 appTool.py:293 -msgid "Edited value is within limits." -msgstr "Der bearbeitete Wert liegt innerhalb der Grenzen." - -#: appGUI/ObjectUI.py:187 +#: appGUI/ObjectUI.py:188 msgid "Gerber Object" msgstr "Gerber-Objekt" -#: appGUI/ObjectUI.py:196 appGUI/ObjectUI.py:496 appGUI/ObjectUI.py:1313 -#: appGUI/ObjectUI.py:2135 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:30 +#: appGUI/ObjectUI.py:197 appGUI/ObjectUI.py:497 appGUI/ObjectUI.py:777 +#: appGUI/ObjectUI.py:1715 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:30 #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:33 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:31 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:33 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:31 msgid "Plot Options" msgstr "Diagrammoptionen" -#: appGUI/ObjectUI.py:202 appGUI/ObjectUI.py:502 +#: appGUI/ObjectUI.py:202 appGUI/ObjectUI.py:503 #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:47 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:45 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:119 -#: appTools/ToolCopperThieving.py:195 +#: appTools/ToolCopperThieving.py:1284 msgid "Solid" msgstr "Solide" @@ -5762,47 +6506,44 @@ msgstr "Solide" msgid "Solid color polygons." msgstr "Einfarbige Polygone." -#: appGUI/ObjectUI.py:210 appGUI/ObjectUI.py:510 appGUI/ObjectUI.py:1319 +#: appGUI/ObjectUI.py:209 appGUI/ObjectUI.py:511 appGUI/ObjectUI.py:783 msgid "Multi-Color" msgstr "M-farbig" -#: appGUI/ObjectUI.py:212 appGUI/ObjectUI.py:512 appGUI/ObjectUI.py:1321 +#: appGUI/ObjectUI.py:211 appGUI/ObjectUI.py:513 appGUI/ObjectUI.py:785 #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:56 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:47 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:49 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:54 msgid "Draw polygons in different colors." msgstr "Zeichnen Sie Polygone in verschiedenen Farben." -#: appGUI/ObjectUI.py:228 appGUI/ObjectUI.py:548 +#: appGUI/ObjectUI.py:226 appGUI/ObjectUI.py:544 #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:40 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:38 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:40 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:38 msgid "Plot" msgstr "Zeichn" -#: appGUI/ObjectUI.py:229 appGUI/ObjectUI.py:550 appGUI/ObjectUI.py:1383 -#: appGUI/ObjectUI.py:2245 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:41 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:40 +#: appGUI/ObjectUI.py:227 appGUI/ObjectUI.py:546 appGUI/ObjectUI.py:847 +#: appGUI/ObjectUI.py:1819 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:41 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:42 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:40 msgid "Plot (show) this object." msgstr "Plotten (zeigen) dieses Objekt." -#: appGUI/ObjectUI.py:258 -msgid "" -"Toggle the display of the Gerber Apertures Table.\n" -"When unchecked, it will delete all mark shapes\n" -"that are drawn on canvas." -msgstr "" -"Schaltet die Anzeige der Gerber-Apertur-Tabelle um.\n" -"Wenn das Kontrollkästchen deaktiviert ist, werden alle Markierungsformen " -"gelöscht\n" -"das sind auf leinwand gezeichnet." +#: appGUI/ObjectUI.py:251 appGUI/ObjectUI.py:539 +#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:50 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:54 +#, fuzzy +#| msgid "Toggle the display of axis on canvas" +msgid "Toggle the display of the Tools Table." +msgstr "Schalten Sie die Anzeige der Achse auf der Leinwand um" -#: appGUI/ObjectUI.py:268 +#: appGUI/ObjectUI.py:260 msgid "Mark All" msgstr "Alles mark" -#: appGUI/ObjectUI.py:270 +#: appGUI/ObjectUI.py:262 msgid "" "When checked it will display all the apertures.\n" "When unchecked, it will delete all mark shapes\n" @@ -5813,15 +6554,15 @@ msgstr "" "gelöscht\n" "das sind auf leinwand gezeichnet." -#: appGUI/ObjectUI.py:298 +#: appGUI/ObjectUI.py:292 msgid "Mark the aperture instances on canvas." msgstr "Markieren Sie die Blendeninstanzen auf der Leinwand." -#: appGUI/ObjectUI.py:305 appTools/ToolIsolation.py:600 +#: appGUI/ObjectUI.py:299 appTools/ToolIsolation.py:3410 msgid "Buffer Solid Geometry" msgstr "Festkörpergeometrie puffern" -#: appGUI/ObjectUI.py:307 appTools/ToolIsolation.py:602 +#: appGUI/ObjectUI.py:301 appTools/ToolIsolation.py:3412 msgid "" "This button is shown only when the Gerber file\n" "is loaded without buffering.\n" @@ -5833,12 +6574,18 @@ msgstr "" "Durch Klicken auf diese Schaltfläche wird die gepufferte Geometrie erstellt\n" "für die Isolierung erforderlich." -#: appGUI/ObjectUI.py:332 +#: appGUI/ObjectUI.py:312 +#, fuzzy +#| msgid "Gerber Object" +msgid "Edit an Gerber object." +msgstr "Gerber-Objekt" + +#: appGUI/ObjectUI.py:331 msgid "Isolation Routing" msgstr "Isolierungsrouting" #: appGUI/ObjectUI.py:334 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:32 -#: appTools/ToolIsolation.py:67 +#: appTools/ToolIsolation.py:2927 msgid "" "Create a Geometry object with\n" "toolpaths to cut around polygons." @@ -5846,7 +6593,7 @@ msgstr "" "Erstellen Sie ein Geometrieobjekt mit\n" "Werkzeugwege zum Schneiden um Polygonen." -#: appGUI/ObjectUI.py:348 appGUI/ObjectUI.py:2089 appTools/ToolNCC.py:599 +#: appGUI/ObjectUI.py:349 appGUI/ObjectUI.py:1664 appTools/ToolNCC.py:4251 msgid "" "Create the Geometry Object\n" "for non-copper routing." @@ -5854,7 +6601,7 @@ msgstr "" "Erstellen Sie das Geometrieobjekt\n" "für kupferfreies Routing." -#: appGUI/ObjectUI.py:362 +#: appGUI/ObjectUI.py:364 msgid "" "Generate the geometry for\n" "the board cutout." @@ -5862,11 +6609,11 @@ msgstr "" "Generieren Sie die Geometrie für\n" "der Brettausschnitt." -#: appGUI/ObjectUI.py:379 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:32 +#: appGUI/ObjectUI.py:381 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:32 msgid "Non-copper regions" msgstr "Regionen ohne Kupfer" -#: appGUI/ObjectUI.py:381 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:34 +#: appGUI/ObjectUI.py:383 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:34 msgid "" "Create polygons covering the\n" "areas without copper on the PCB.\n" @@ -5880,13 +6627,13 @@ msgstr "" "Objekt. Kann verwendet werden, um alle zu entfernen\n" "Kupfer aus einer bestimmten Region." -#: appGUI/ObjectUI.py:391 appGUI/ObjectUI.py:432 +#: appGUI/ObjectUI.py:393 appGUI/ObjectUI.py:434 #: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:46 #: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:79 msgid "Boundary Margin" msgstr "Grenzmarge" -#: appGUI/ObjectUI.py:393 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:48 +#: appGUI/ObjectUI.py:395 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:48 msgid "" "Specify the edge of the PCB\n" "by drawing a box around all\n" @@ -5898,28 +6645,23 @@ msgstr "" "Objekte mit diesem Minimum\n" "Entfernung." -#: appGUI/ObjectUI.py:408 appGUI/ObjectUI.py:446 -#: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:61 -#: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:92 -msgid "Rounded Geo" -msgstr "Abgerundete Geo" - -#: appGUI/ObjectUI.py:410 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:63 +#: appGUI/ObjectUI.py:412 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:63 msgid "Resulting geometry will have rounded corners." msgstr "Die resultierende Geometrie hat abgerundete Ecken." -#: appGUI/ObjectUI.py:414 appGUI/ObjectUI.py:455 -#: appTools/ToolSolderPaste.py:373 -msgid "Generate Geo" -msgstr "Geo erzeugen" +#: appGUI/ObjectUI.py:415 appGUI/ObjectUI.py:455 appTools/ToolCutOut.py:2045 +#: appTools/ToolCutOut.py:2060 appTools/ToolIsolation.py:3389 +#: appTools/ToolNCC.py:4248 appTools/ToolPaint.py:3176 +msgid "Generate Geometry" +msgstr "Geometrie erzeugen" -#: appGUI/ObjectUI.py:424 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:73 +#: appGUI/ObjectUI.py:426 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:73 #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:137 -#: appTools/ToolPanelize.py:99 appTools/ToolQRCode.py:201 +#: appTools/ToolPanelize.py:698 appTools/ToolQRCode.py:779 msgid "Bounding Box" msgstr "Begrenzungsrahmen" -#: appGUI/ObjectUI.py:426 +#: appGUI/ObjectUI.py:428 msgid "" "Create a geometry surrounding the Gerber object.\n" "Square shape." @@ -5927,7 +6669,7 @@ msgstr "" "Erstellen Sie eine Geometrie, die das Gerber-Objekt umgibt.\n" "Quadratische Form." -#: appGUI/ObjectUI.py:434 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:81 +#: appGUI/ObjectUI.py:436 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:81 msgid "" "Distance of the edges of the box\n" "to the nearest polygon." @@ -5935,7 +6677,7 @@ msgstr "" "Abstand der Kanten der Box\n" "zum nächsten Polygon." -#: appGUI/ObjectUI.py:448 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:94 +#: appGUI/ObjectUI.py:449 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:94 msgid "" "If the bounding box is \n" "to have rounded corners\n" @@ -5947,32 +6689,20 @@ msgstr "" "ihr Radius ist gleich\n" "der Abstand." -#: appGUI/ObjectUI.py:457 +#: appGUI/ObjectUI.py:458 msgid "Generate the Geometry object." msgstr "Generieren Sie das Geometrieobjekt." -#: appGUI/ObjectUI.py:484 +#: appGUI/ObjectUI.py:485 msgid "Excellon Object" msgstr "Excellon-Objekt" -#: appGUI/ObjectUI.py:504 +#: appGUI/ObjectUI.py:505 msgid "Solid circles." msgstr "Feste Kreise." -#: appGUI/ObjectUI.py:560 appGUI/ObjectUI.py:655 appGUI/ObjectUI.py:2266 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:71 -#: appTools/ToolProperties.py:166 -msgid "Drills" -msgstr "Bohrer" - -#: appGUI/ObjectUI.py:560 appGUI/ObjectUI.py:656 appGUI/ObjectUI.py:2266 -#: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:158 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:72 -#: appTools/ToolProperties.py:168 -msgid "Slots" -msgstr "Schlüssel" - -#: appGUI/ObjectUI.py:565 +#: appGUI/ObjectUI.py:576 appTools/ToolDrilling.py:2053 +#: appTools/ToolMilling.py:1672 msgid "" "This is the Tool Number.\n" "When ToolChange is checked, on toolchange event this value\n" @@ -5987,7 +6717,8 @@ msgstr "" "\n" "Hier werden die Werkzeuge zur G-Code-Generierung ausgewählt." -#: appGUI/ObjectUI.py:570 appGUI/ObjectUI.py:1407 appTools/ToolPaint.py:141 +#: appGUI/ObjectUI.py:581 appGUI/ObjectUI.py:871 appTools/ToolDrilling.py:2058 +#: appTools/ToolMilling.py:1677 appTools/ToolPaint.py:2826 msgid "" "Tool Diameter. It's value (in current FlatCAM units) \n" "is the cut width into the material." @@ -5995,7 +6726,8 @@ msgstr "" "Werkzeugdurchmesser Der Wert (in aktuellen FlatCAM-Einheiten)\n" "ist die Schnittbreite in das Material." -#: appGUI/ObjectUI.py:573 +#: appGUI/ObjectUI.py:584 appTools/ToolDrilling.py:2061 +#: appTools/ToolMilling.py:1680 msgid "" "The number of Drill holes. Holes that are drilled with\n" "a drill bit." @@ -6003,7 +6735,8 @@ msgstr "" "Die Anzahl der Bohrlöcher. Löcher, mit denen gebohrt wird\n" "ein Bohrer." -#: appGUI/ObjectUI.py:576 +#: appGUI/ObjectUI.py:587 appTools/ToolDrilling.py:2064 +#: appTools/ToolMilling.py:1683 msgid "" "The number of Slot holes. Holes that are created by\n" "milling them with an endmill bit." @@ -6011,7 +6744,13 @@ msgstr "" "Die Anzahl der Langlöcher. Löcher, die von erstellt werden\n" "Fräsen mit einem Schaftfräser." -#: appGUI/ObjectUI.py:579 +#: appGUI/ObjectUI.py:590 +#, fuzzy +#| msgid "Set the color of the shape when selected." +msgid "Show the color of the drill holes when using multi-color." +msgstr "Legt die Farbe der Form fest, wenn sie ausgewählt wird." + +#: appGUI/ObjectUI.py:592 msgid "" "Toggle display of the drills for the current tool.\n" "This does not select the tools for G-code generation." @@ -6019,532 +6758,55 @@ msgstr "" "Anzeige der Bohrer für das aktuelle Werkzeug umschalten.\n" "Hiermit werden die Tools für die G-Code-Generierung nicht ausgewählt." -#: appGUI/ObjectUI.py:597 appGUI/ObjectUI.py:1564 -#: appObjects/FlatCAMExcellon.py:537 appObjects/FlatCAMExcellon.py:836 -#: appObjects/FlatCAMExcellon.py:852 appObjects/FlatCAMExcellon.py:856 -#: appObjects/FlatCAMGeometry.py:380 appObjects/FlatCAMGeometry.py:825 -#: appObjects/FlatCAMGeometry.py:861 appTools/ToolIsolation.py:313 -#: appTools/ToolIsolation.py:1076 appTools/ToolIsolation.py:1196 -#: appTools/ToolIsolation.py:1210 appTools/ToolNCC.py:331 -#: appTools/ToolNCC.py:797 appTools/ToolNCC.py:811 appTools/ToolNCC.py:1214 -#: appTools/ToolPaint.py:313 appTools/ToolPaint.py:766 -#: appTools/ToolPaint.py:778 appTools/ToolPaint.py:1190 -msgid "Parameters for" -msgstr "Parameter für" +#: appGUI/ObjectUI.py:601 +#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:55 +#, fuzzy +#| msgid "Add from DB" +msgid "Auto load from DB" +msgstr "Aus DB hinzufügen" -#: appGUI/ObjectUI.py:600 appGUI/ObjectUI.py:1567 appTools/ToolIsolation.py:316 -#: appTools/ToolNCC.py:334 appTools/ToolPaint.py:316 +#: appGUI/ObjectUI.py:603 +#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:57 msgid "" -"The data used for creating GCode.\n" -"Each tool store it's own set of such data." +"Automatic replacement of the tools from related application tools\n" +"with tools from DB that have a close diameter value." msgstr "" -"Die Daten, die zum Erstellen von GCode verwendet werden.\n" -"Jedes Werkzeug speichert seinen eigenen Satz solcher Daten." -#: appGUI/ObjectUI.py:626 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:48 -msgid "" -"Operation type:\n" -"- Drilling -> will drill the drills/slots associated with this tool\n" -"- Milling -> will mill the drills/slots" +#: appGUI/ObjectUI.py:613 +#, fuzzy +#| msgid "Excellon Object" +msgid "Edit an Excellon object." +msgstr "Excellon-Objekt" + +#: appGUI/ObjectUI.py:644 +#, fuzzy +#| msgid "" +#| "Merge a selection of Excellon objects into a new combo Excellon object." +msgid "Generate GCode out of drill holes in an Excellon object." msgstr "" -"Betriebsart:\n" -"- Bohren -> bohrt die mit diesem Werkzeug verbundenen Bohrer / Schlitze\n" -"- Fräsen -> fräst die Bohrer / Schlitze" +"Fassen Sie eine Auswahl von Excellon-Objekten in einem neuen Excellon-Objekt " +"zusammen." -#: appGUI/ObjectUI.py:632 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:54 -msgid "Drilling" -msgstr "Bohren" +#: appGUI/ObjectUI.py:655 +#, fuzzy +#| msgid "Milling Type" +msgid "Milling Tool" +msgstr "Fräsart" -#: appGUI/ObjectUI.py:633 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:55 -msgid "Milling" -msgstr "Fräsprozess" - -#: appGUI/ObjectUI.py:648 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:64 -msgid "" -"Milling type:\n" -"- Drills -> will mill the drills associated with this tool\n" -"- Slots -> will mill the slots associated with this tool\n" -"- Both -> will mill both drills and mills or whatever is available" +#: appGUI/ObjectUI.py:658 +#, fuzzy +#| msgid "" +#| "Merge a selection of Excellon objects into a new combo Excellon object." +msgid "Generate GCode out of slot holes in an Excellon object." msgstr "" -"Frästyp:\n" -"- Bohrer -> fräst die mit diesem Werkzeug verbundenen Bohrer\n" -"- Schlüssel-> fräst die diesem Tool zugeordneten Slots\n" -"- Beide -> fräsen sowohl Bohrer als auch Fräser oder was auch immer " -"verfügbar ist" +"Fassen Sie eine Auswahl von Excellon-Objekten in einem neuen Excellon-Objekt " +"zusammen." -#: appGUI/ObjectUI.py:657 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:73 -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:199 -#: appTools/ToolFilm.py:241 -msgid "Both" -msgstr "Both" - -#: appGUI/ObjectUI.py:665 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:80 -msgid "Milling Diameter" -msgstr "Fräsdurchmesser" - -#: appGUI/ObjectUI.py:667 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:82 -msgid "The diameter of the tool who will do the milling" -msgstr "Der Durchmesser des Werkzeugs, das das Fräsen übernimmt" - -#: appGUI/ObjectUI.py:681 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:95 -msgid "" -"Drill depth (negative)\n" -"below the copper surface." -msgstr "" -"Bohrtiefe (negativ)\n" -"unter der Kupferoberfläche." - -#: appGUI/ObjectUI.py:700 appGUI/ObjectUI.py:1626 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:113 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:69 -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:79 -#: appTools/ToolCutOut.py:159 -msgid "Multi-Depth" -msgstr "Mehrfache Tiefe" - -#: appGUI/ObjectUI.py:703 appGUI/ObjectUI.py:1629 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:116 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:72 -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:82 -#: appTools/ToolCutOut.py:162 -msgid "" -"Use multiple passes to limit\n" -"the cut depth in each pass. Will\n" -"cut multiple times until Cut Z is\n" -"reached." -msgstr "" -"Verwenden Sie zum Begrenzen mehrere Durchgänge\n" -"die Schnitttiefe in jedem Durchgang. Wille\n" -"mehrmals schneiden, bis Schnitttiefe Z\n" -"erreicht ist." - -#: appGUI/ObjectUI.py:716 appGUI/ObjectUI.py:1643 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:128 -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:94 -#: appTools/ToolCutOut.py:176 -msgid "Depth of each pass (positive)." -msgstr "Tiefe jedes Durchgangs (positiv)." - -#: appGUI/ObjectUI.py:727 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:136 -msgid "" -"Tool height when travelling\n" -"across the XY plane." -msgstr "" -"Werkzeughöhe auf Reisen\n" -"über die XY-Ebene." - -#: appGUI/ObjectUI.py:748 appGUI/ObjectUI.py:1673 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:188 -msgid "" -"Cutting speed in the XY\n" -"plane in units per minute" -msgstr "" -"Schnittgeschwindigkeit im XY\n" -"Flugzeug in Einheiten pro Minute" - -#: appGUI/ObjectUI.py:763 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:209 -msgid "" -"Tool speed while drilling\n" -"(in units per minute).\n" -"So called 'Plunge' feedrate.\n" -"This is for linear move G01." -msgstr "" -"Werkzeuggeschwindigkeit beim Bohren\n" -"(in Einheiten pro Minute).\n" -"Sogenannter Eintauchvorschub.\n" -"Dies ist für die lineare Bewegung G01." - -#: appGUI/ObjectUI.py:778 appGUI/ObjectUI.py:1700 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:80 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:67 -msgid "Feedrate Rapids" -msgstr "Vorschubgeschwindigkeit" - -#: appGUI/ObjectUI.py:780 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:82 -msgid "" -"Tool speed while drilling\n" -"(in units per minute).\n" -"This is for the rapid move G00.\n" -"It is useful only for Marlin,\n" -"ignore for any other cases." -msgstr "" -"Werkzeuggeschwindigkeit beim Bohren\n" -"(in Einheiten pro Minute).\n" -"Dies ist für die schnelle Bewegung G00.\n" -"Es ist nur für Marlin nützlich,\n" -"für andere Fälle ignorieren." - -#: appGUI/ObjectUI.py:800 appGUI/ObjectUI.py:1720 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:85 -msgid "Re-cut" -msgstr "Nachschneiden" - -#: appGUI/ObjectUI.py:802 appGUI/ObjectUI.py:815 appGUI/ObjectUI.py:1722 -#: appGUI/ObjectUI.py:1734 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:87 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:99 -msgid "" -"In order to remove possible\n" -"copper leftovers where first cut\n" -"meet with last cut, we generate an\n" -"extended cut over the first cut section." -msgstr "" -"Um zu entfernen möglich\n" -"Kupferreste wurden zuerst geschnitten\n" -"Beim letzten Schnitt treffen wir einen\n" -"verlängerter Schnitt über dem ersten Schnittabschnitt." - -#: appGUI/ObjectUI.py:828 appGUI/ObjectUI.py:1743 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:217 -#: appObjects/FlatCAMExcellon.py:1512 appObjects/FlatCAMGeometry.py:1687 -msgid "Spindle speed" -msgstr "Spulengeschwindigkeit" - -#: appGUI/ObjectUI.py:830 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:224 -msgid "" -"Speed of the spindle\n" -"in RPM (optional)" -msgstr "" -"Geschwindigkeit der Spindel\n" -"in RPM (optional)" - -#: appGUI/ObjectUI.py:845 appGUI/ObjectUI.py:1762 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:238 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:235 -msgid "" -"Pause to allow the spindle to reach its\n" -"speed before cutting." -msgstr "" -"Pause, damit die Spindel ihre erreichen kann\n" -"Geschwindigkeit vor dem Schneiden." - -#: appGUI/ObjectUI.py:856 appGUI/ObjectUI.py:1772 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:246 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:240 -msgid "Number of time units for spindle to dwell." -msgstr "Anzahl der Zeiteinheiten, in denen die Spindel verweilen soll." - -#: appGUI/ObjectUI.py:866 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:46 -msgid "Offset Z" -msgstr "Versatz Z" - -#: appGUI/ObjectUI.py:868 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:48 -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 "" -"Einige Bohrer (die größeren) müssen tiefer bohren\n" -"um den gewünschten Austrittslochdurchmesser aufgrund der Spitzenform zu " -"erzeugen.\n" -"Der Wert hier kann den Parameter Cut Z ausgleichen." - -#: appGUI/ObjectUI.py:928 appGUI/ObjectUI.py:1826 appTools/ToolIsolation.py:412 -#: appTools/ToolNCC.py:492 appTools/ToolPaint.py:422 -msgid "Apply parameters to all tools" -msgstr "Parameter auf alle Werkzeuge anwenden" - -#: appGUI/ObjectUI.py:930 appGUI/ObjectUI.py:1828 appTools/ToolIsolation.py:414 -#: appTools/ToolNCC.py:494 appTools/ToolPaint.py:424 -msgid "" -"The parameters in the current form will be applied\n" -"on all the tools from the Tool Table." -msgstr "" -"Die aktuell angegebenen Parameter werden allen Werkzeugen der " -"Werkzeugtabelle zugeordnet." - -#: appGUI/ObjectUI.py:941 appGUI/ObjectUI.py:1839 appTools/ToolIsolation.py:425 -#: appTools/ToolNCC.py:505 appTools/ToolPaint.py:435 -msgid "Common Parameters" -msgstr "Allgemeine Parameter" - -#: appGUI/ObjectUI.py:943 appGUI/ObjectUI.py:1841 appTools/ToolIsolation.py:427 -#: appTools/ToolNCC.py:507 appTools/ToolPaint.py:437 -msgid "Parameters that are common for all tools." -msgstr "Parameter, die allen Werkzeugen gemeinsam sind." - -#: appGUI/ObjectUI.py:948 appGUI/ObjectUI.py:1846 -msgid "Tool change Z" -msgstr "Werkzeugwechsel Z" - -#: appGUI/ObjectUI.py:950 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:154 -msgid "" -"Include tool-change sequence\n" -"in G-Code (Pause for tool change)." -msgstr "" -"Werkzeugwechselfolge einbeziehen\n" -"im G-Code (Pause für Werkzeugwechsel)." - -#: appGUI/ObjectUI.py:957 appGUI/ObjectUI.py:1857 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:162 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:135 -msgid "" -"Z-axis position (height) for\n" -"tool change." -msgstr "" -"Z-Achsenposition (Höhe) für\n" -"Werkzeugwechsel." - -#: appGUI/ObjectUI.py:974 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:71 -msgid "" -"Height of the tool just after start.\n" -"Delete the value if you don't need this feature." -msgstr "" -"Höhe des Werkzeugs gleich nach dem Start.\n" -"Löschen Sie den Wert, wenn Sie diese Funktion nicht benötigen." - -#: appGUI/ObjectUI.py:983 appGUI/ObjectUI.py:1885 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:178 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:154 -msgid "End move Z" -msgstr "Bewegung beenden Z" - -#: appGUI/ObjectUI.py:985 appGUI/ObjectUI.py:1887 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:180 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:156 -msgid "" -"Height of the tool after\n" -"the last move at the end of the job." -msgstr "" -"Höhe des Werkzeugs nach\n" -"die letzte Bewegung am Ende des Jobs." - -#: appGUI/ObjectUI.py:1002 appGUI/ObjectUI.py:1904 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:195 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:174 -msgid "End move X,Y" -msgstr "Bewegung beenden X, Y" - -#: appGUI/ObjectUI.py:1004 appGUI/ObjectUI.py:1906 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:197 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:176 -msgid "" -"End move X,Y position. In format (x,y).\n" -"If no value is entered then there is no move\n" -"on X,Y plane at the end of the job." -msgstr "" -"Beenden Sie die X-, Y-Position. Im Format (x, y).\n" -"Wenn kein Wert eingegeben wird, erfolgt keine Bewegung\n" -"auf der X, Y-Ebene am Ende des Jobs." - -#: appGUI/ObjectUI.py:1014 appGUI/ObjectUI.py:1780 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:96 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:108 -msgid "Probe Z depth" -msgstr "Sonde Z Tiefe" - -#: appGUI/ObjectUI.py:1016 appGUI/ObjectUI.py:1782 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:98 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:110 -msgid "" -"The maximum depth that the probe is allowed\n" -"to probe. Negative value, in current units." -msgstr "" -"Die maximale Tiefe, in der die Sonde zulässig ist\n" -"zu untersuchen. Negativer Wert in aktuellen Einheiten." - -#: appGUI/ObjectUI.py:1033 appGUI/ObjectUI.py:1797 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:109 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:123 -msgid "Feedrate Probe" -msgstr "Vorschubsonde" - -#: appGUI/ObjectUI.py:1035 appGUI/ObjectUI.py:1799 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:111 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:125 -msgid "The feedrate used while the probe is probing." -msgstr "Der Vorschub während der Sondenmessung." - -#: appGUI/ObjectUI.py:1051 -msgid "Preprocessor E" -msgstr "Postprozessor E" - -#: appGUI/ObjectUI.py:1053 -msgid "" -"The preprocessor JSON file that dictates\n" -"Gcode output for Excellon Objects." -msgstr "" -"Die diktierende Präprozessor-JSON-Datei\n" -"Gcode-Ausgabe für Excellon-Objekte." - -#: appGUI/ObjectUI.py:1063 -msgid "Preprocessor G" -msgstr "Postprozessor G" - -#: appGUI/ObjectUI.py:1065 -msgid "" -"The preprocessor JSON file that dictates\n" -"Gcode output for Geometry (Milling) Objects." -msgstr "" -"Die diktierende Präprozessor-JSON-Datei\n" -"Gcode-Ausgabe für Geometrieobjekte (Fräsen)." - -#: appGUI/ObjectUI.py:1079 appGUI/ObjectUI.py:1934 -msgid "Add exclusion areas" -msgstr "Ausschlussbereiche hinzufügen" - -#: appGUI/ObjectUI.py:1082 appGUI/ObjectUI.py:1937 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:212 -msgid "" -"Include exclusion areas.\n" -"In those areas the travel of the tools\n" -"is forbidden." -msgstr "" -"Ausschlussbereiche einschließen.\n" -"In diesen Bereichen die Reise der Werkzeuge\n" -"ist verboten." - -#: appGUI/ObjectUI.py:1103 appGUI/ObjectUI.py:1122 appGUI/ObjectUI.py:1958 -#: appGUI/ObjectUI.py:1977 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:232 -msgid "Strategy" -msgstr "Strategie" - -#: appGUI/ObjectUI.py:1103 appGUI/ObjectUI.py:1134 appGUI/ObjectUI.py:1958 -#: appGUI/ObjectUI.py:1989 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:244 -msgid "Over Z" -msgstr "Über Z" - -#: appGUI/ObjectUI.py:1105 appGUI/ObjectUI.py:1960 -msgid "This is the Area ID." -msgstr "Dies ist die Bereichs-ID." - -#: appGUI/ObjectUI.py:1107 appGUI/ObjectUI.py:1962 -msgid "Type of the object where the exclusion area was added." -msgstr "Typ des Objekts, zu dem der Ausschlussbereich hinzugefügt wurde." - -#: appGUI/ObjectUI.py:1109 appGUI/ObjectUI.py:1964 -msgid "" -"The strategy used for exclusion area. Go around the exclusion areas or over " -"it." -msgstr "" -"Die Strategie für den Ausschlussbereich. Gehen Sie um die Ausschlussbereiche " -"herum oder darüber." - -#: appGUI/ObjectUI.py:1111 appGUI/ObjectUI.py:1966 -msgid "" -"If the strategy is to go over the area then this is the height at which the " -"tool will go to avoid the exclusion area." -msgstr "" -"Wenn die Strategie darin besteht, über den Bereich zu gehen, ist dies die " -"Höhe, in der sich das Werkzeug bewegt, um den Ausschlussbereich zu vermeiden." - -#: appGUI/ObjectUI.py:1123 appGUI/ObjectUI.py:1978 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:233 -msgid "" -"The strategy followed when encountering an exclusion area.\n" -"Can be:\n" -"- Over -> when encountering the area, the tool will go to a set height\n" -"- Around -> will avoid the exclusion area by going around the area" -msgstr "" -"Die Strategie wurde verfolgt, wenn auf einen Ausschlussbereich gestoßen " -"wurde.\n" -"Kann sein:\n" -"- Über -> Wenn Sie auf den Bereich stoßen, erreicht das Werkzeug eine " -"festgelegte Höhe\n" -"- Vermeiden -> vermeidet den Ausschlussbereich, indem Sie den Bereich umgehen" - -#: appGUI/ObjectUI.py:1127 appGUI/ObjectUI.py:1982 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:237 -msgid "Over" -msgstr "Über" - -#: appGUI/ObjectUI.py:1128 appGUI/ObjectUI.py:1983 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:238 -msgid "Around" -msgstr "Vermeiden" - -#: appGUI/ObjectUI.py:1135 appGUI/ObjectUI.py:1990 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:245 -msgid "" -"The height Z to which the tool will rise in order to avoid\n" -"an interdiction area." -msgstr "" -"Die Höhe Z, auf die das Werkzeug ansteigt, um dies zu vermeiden\n" -"ein Verbotsbereich." - -#: appGUI/ObjectUI.py:1145 appGUI/ObjectUI.py:2000 -msgid "Add area:" -msgstr "Bereich hinzufügen:" - -#: appGUI/ObjectUI.py:1146 appGUI/ObjectUI.py:2001 -msgid "Add an Exclusion Area." -msgstr "Fügen Sie einen Ausschlussbereich hinzu." - -#: appGUI/ObjectUI.py:1152 appGUI/ObjectUI.py:2007 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:222 -#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:295 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:324 -#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:288 -#: appTools/ToolIsolation.py:563 appTools/ToolNCC.py:580 -#: appTools/ToolPaint.py:523 -msgid "The kind of selection shape used for area selection." -msgstr "Die Art der Auswahlform, die für die Bereichsauswahl verwendet wird." - -#: appGUI/ObjectUI.py:1162 appGUI/ObjectUI.py:2017 -#: appGUI/preferences/utilities/AutoCompletePrefGroupUI.py:32 -#: appGUI/preferences/utilities/FAExcPrefGroupUI.py:42 -#: appGUI/preferences/utilities/FAGcoPrefGroupUI.py:32 -#: appGUI/preferences/utilities/FAGrbPrefGroupUI.py:32 -msgid "Delete All" -msgstr "Alles löschen" - -#: appGUI/ObjectUI.py:1163 appGUI/ObjectUI.py:2018 -msgid "Delete all exclusion areas." -msgstr "Löschen Sie alle Ausschlussbereiche." - -#: appGUI/ObjectUI.py:1166 appGUI/ObjectUI.py:2021 -msgid "Delete Selected" -msgstr "Ausgewählte löschen" - -#: appGUI/ObjectUI.py:1167 appGUI/ObjectUI.py:2022 -msgid "Delete all exclusion areas that are selected in the table." -msgstr "Löschen Sie alle in der Tabelle ausgewählten Ausschlussbereiche." - -#: appGUI/ObjectUI.py:1191 appGUI/ObjectUI.py:2038 -msgid "" -"Add / Select 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 "" -"Hinzufügen / Auswählen mindestens eines Werkzeugs in der Werkzeugtabelle.\n" -"Klicken Sie auf die Überschrift #, um alle auszuwählen, oder auf Strg + LMB\n" -"zur benutzerdefinierten Auswahl von Werkzeugen." - -#: appGUI/ObjectUI.py:1199 appGUI/ObjectUI.py:2045 -msgid "Generate CNCJob object" -msgstr "Generieren des CNC-Job-Objekts" - -#: appGUI/ObjectUI.py:1201 -msgid "" -"Generate the CNC Job.\n" -"If milling then an additional Geometry object will be created" -msgstr "" -"Generieren Sie den CNC-Auftrag.\n" -"Beim Fräsen wird ein zusätzliches Geometrieobjekt erstellt" - -#: appGUI/ObjectUI.py:1218 +#: appGUI/ObjectUI.py:682 msgid "Milling Geometry" msgstr "Fräsgeometrie" -#: appGUI/ObjectUI.py:1220 +#: appGUI/ObjectUI.py:684 msgid "" "Create Geometry for milling holes.\n" "Select from the Tools Table above the hole dias to be\n" @@ -6555,16 +6817,16 @@ msgstr "" "die gefräst werden sollen. Verwenden Sie die Spalte #, um die Auswahl zu " "treffen." -#: appGUI/ObjectUI.py:1228 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:296 +#: appGUI/ObjectUI.py:692 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:101 msgid "Diameter of the cutting tool." msgstr "Durchmesser des Schneidewerkzeugs." -#: appGUI/ObjectUI.py:1238 +#: appGUI/ObjectUI.py:702 msgid "Mill Drills" msgstr "Mühlenbohrer" -#: appGUI/ObjectUI.py:1240 +#: appGUI/ObjectUI.py:704 msgid "" "Create the Geometry Object\n" "for milling DRILLS toolpaths." @@ -6572,11 +6834,11 @@ msgstr "" "Erstellen Sie das Geometrieobjekt\n" "zum Fräsen von BOHRER-Werkzeugwegen." -#: appGUI/ObjectUI.py:1258 +#: appGUI/ObjectUI.py:722 msgid "Mill Slots" msgstr "Mühlenschlitze" -#: appGUI/ObjectUI.py:1260 +#: appGUI/ObjectUI.py:724 msgid "" "Create the Geometry Object\n" "for milling SLOTS toolpaths." @@ -6584,11 +6846,11 @@ msgstr "" "Erstellen Sie das Geometrieobjekt\n" "zum Fräsen von Werkzeugwegen." -#: appGUI/ObjectUI.py:1302 appTools/ToolCutOut.py:319 +#: appGUI/ObjectUI.py:766 msgid "Geometry Object" msgstr "Geometrieobjekt" -#: appGUI/ObjectUI.py:1364 +#: appGUI/ObjectUI.py:828 msgid "" "Tools in this Geometry object used for cutting.\n" "The 'Offset' entry will set an offset for the cut.\n" @@ -6617,24 +6879,12 @@ 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." -#: appGUI/ObjectUI.py:1381 appGUI/ObjectUI.py:2243 +#: appGUI/ObjectUI.py:845 appGUI/ObjectUI.py:1817 #: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:40 msgid "Plot Object" msgstr "Plotobjekt" -#: appGUI/ObjectUI.py:1394 appGUI/ObjectUI.py:2256 appGUI/ObjectUI.py:2266 -#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:138 -#: appTools/ToolCopperThieving.py:225 -msgid "Dia" -msgstr "Durchm" - -#: appGUI/ObjectUI.py:1394 appGUI/ObjectUI.py:2256 -#: appTools/ToolIsolation.py:130 appTools/ToolNCC.py:132 -#: appTools/ToolPaint.py:127 -msgid "TT" -msgstr "TT" - -#: appGUI/ObjectUI.py:1401 +#: appGUI/ObjectUI.py:865 msgid "" "This is the Tool Number.\n" "When ToolChange is checked, on toolchange event this value\n" @@ -6645,7 +6895,7 @@ msgstr "" "Werkzeugwechselereignis angezeigt\n" "wird als T1, T2 ... Tn angezeigt" -#: appGUI/ObjectUI.py:1412 +#: appGUI/ObjectUI.py:876 msgid "" "The value for the Offset can be:\n" "- Path -> There is no offset, the tool cut will be done through the geometry " @@ -6662,7 +6912,7 @@ msgstr "" "- Out (Seite) -> Der Werkzeugschnitt folgt der Geometrielinie an der " "Außenseite." -#: appGUI/ObjectUI.py:1419 +#: appGUI/ObjectUI.py:883 msgid "" "The (Operation) Type has only informative value. Usually the UI form " "values \n" @@ -6685,7 +6935,7 @@ msgstr "" "Für die Isolierung benötigen wir einen niedrigeren Vorschub, da ein Fräser " "mit einer feinen Spitze verwendet wird." -#: appGUI/ObjectUI.py:1428 +#: appGUI/ObjectUI.py:892 msgid "" "The Tool Type (TT) can be:\n" "- Circular with 1 ... 4 teeth -> it is informative only. Being circular the " @@ -6715,7 +6965,7 @@ msgstr "" "Wenn Sie den V-Form-Werkzeugtyp automatisch auswählen, wird der " "Operationstyp als Isolation ausgewählt." -#: appGUI/ObjectUI.py:1440 +#: appGUI/ObjectUI.py:904 msgid "" "Plot column. It is visible only for MultiGeo geometries, meaning geometries " "that holds the geometry\n" @@ -6733,7 +6983,13 @@ msgstr "" "der Leinwand aktiviert / deaktiviert werden\n" "für das entsprechende Werkzeug." -#: appGUI/ObjectUI.py:1458 +#: appGUI/ObjectUI.py:918 +#, fuzzy +#| msgid "Geometry Object" +msgid "Edit an Geometry object." +msgstr "Geometrieobjekt" + +#: appGUI/ObjectUI.py:937 msgid "" "The value to offset the cut when \n" "the Offset type selected is 'Offset'.\n" @@ -6745,15 +7001,12 @@ msgstr "" "Der Wert kann für \"außerhalb\" positiv sein\n" "Cut und Negativ für \"Inside\" Cut." -#: appGUI/ObjectUI.py:1477 appTools/ToolIsolation.py:195 -#: appTools/ToolIsolation.py:1282 appTools/ToolNCC.py:209 -#: appTools/ToolNCC.py:923 appTools/ToolPaint.py:191 appTools/ToolPaint.py:848 -#: appTools/ToolSolderPaste.py:567 +#: appGUI/ObjectUI.py:956 appTools/ToolIsolation.py:776 appTools/ToolNCC.py:449 +#: appTools/ToolPaint.py:386 appTools/ToolSolderPaste.py:122 msgid "New Tool" msgstr "Neues Werkzeug" -#: appGUI/ObjectUI.py:1496 appTools/ToolIsolation.py:278 -#: appTools/ToolNCC.py:296 appTools/ToolPaint.py:278 +#: appGUI/ObjectUI.py:976 msgid "" "Add a new tool to the Tool Table\n" "with the diameter specified above." @@ -6761,22 +7014,28 @@ msgstr "" "Fügen Sie der Werkzeugtabelle ein neues Werkzeug hinzu\n" "mit dem oben angegebenen Durchmesser." -#: appGUI/ObjectUI.py:1500 appTools/ToolIsolation.py:282 -#: appTools/ToolIsolation.py:634 appTools/ToolNCC.py:300 -#: appTools/ToolNCC.py:634 appTools/ToolPaint.py:282 appTools/ToolPaint.py:678 +#: appGUI/ObjectUI.py:980 appTools/ToolIsolation.py:3049 appTools/ToolNCC.py:66 +#: appTools/ToolNCC.py:3854 appTools/ToolPaint.py:140 +#: appTools/ToolPaint.py:2877 msgid "Add from DB" msgstr "Aus DB hinzufügen" -#: appGUI/ObjectUI.py:1502 appTools/ToolIsolation.py:284 -#: appTools/ToolNCC.py:302 appTools/ToolPaint.py:284 +#: appGUI/ObjectUI.py:982 appTools/ToolCutOut.py:1845 +#: appTools/ToolIsolation.py:3092 appTools/ToolNCC.py:3897 +#: appTools/ToolPaint.py:2911 +#, fuzzy +#| msgid "" +#| "Add a new tool to the Tool Table\n" +#| "from the Tool DataBase." msgid "" "Add a new tool to the Tool Table\n" -"from the Tool DataBase." +"from the Tool Database.\n" +"Tool database administration in Menu: Options -> Tools Database" msgstr "" "Fügen Sie der Werkzeugtabelle ein neues Werkzeug aus der\n" "aus der Werkzeugdatenbank hinzu." -#: appGUI/ObjectUI.py:1521 +#: appGUI/ObjectUI.py:1003 msgid "" "Copy a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." @@ -6784,7 +7043,7 @@ msgstr "" "Kopieren Sie eine Auswahl von Werkzeugen in die Werkzeugtabelle\n" "indem Sie zuerst eine Zeile in der Werkzeugtabelle auswählen." -#: appGUI/ObjectUI.py:1527 +#: appGUI/ObjectUI.py:1010 msgid "" "Delete a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." @@ -6792,36 +7051,62 @@ msgstr "" "Löschen Sie eine Auswahl von Werkzeugen in der Werkzeugtabelle\n" "indem Sie zuerst eine Zeile in der Werkzeugtabelle auswählen." -#: appGUI/ObjectUI.py:1574 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:89 +#: appGUI/ObjectUI.py:1047 appObjects/FlatCAMGeometry.py:388 +#: appObjects/FlatCAMGeometry.py:824 appObjects/FlatCAMGeometry.py:829 +#: appObjects/FlatCAMGeometry.py:863 appObjects/FlatCAMGeometry.py:888 +#: appObjects/FlatCAMGeometry.py:892 appTools/ToolDrilling.py:704 +#: appTools/ToolDrilling.py:710 appTools/ToolDrilling.py:753 +#: appTools/ToolDrilling.py:969 appTools/ToolDrilling.py:976 +#: appTools/ToolDrilling.py:1007 appTools/ToolDrilling.py:1019 +#: appTools/ToolDrilling.py:1023 appTools/ToolDrilling.py:2102 +#: appTools/ToolIsolation.py:525 appTools/ToolIsolation.py:633 +#: appTools/ToolIsolation.py:638 appTools/ToolIsolation.py:668 +#: appTools/ToolIsolation.py:691 appTools/ToolIsolation.py:704 +#: appTools/ToolIsolation.py:3121 appTools/ToolMilling.py:628 +#: appTools/ToolMilling.py:744 appTools/ToolMilling.py:749 +#: appTools/ToolMilling.py:779 appTools/ToolMilling.py:790 +#: appTools/ToolMilling.py:794 appTools/ToolMilling.py:1711 +#: appTools/ToolNCC.py:266 appTools/ToolNCC.py:271 appTools/ToolNCC.py:301 +#: appTools/ToolNCC.py:324 appTools/ToolNCC.py:337 appTools/ToolNCC.py:700 +#: appTools/ToolNCC.py:3926 appTools/ToolPaint.py:247 appTools/ToolPaint.py:252 +#: appTools/ToolPaint.py:282 appTools/ToolPaint.py:304 +#: appTools/ToolPaint.py:316 appTools/ToolPaint.py:654 +#: appTools/ToolPaint.py:2938 +msgid "Parameters for" +msgstr "Parameter für" + +#: appGUI/ObjectUI.py:1050 appTools/ToolDrilling.py:2105 +#: appTools/ToolIsolation.py:3124 appTools/ToolMilling.py:1714 +#: appTools/ToolNCC.py:3929 appTools/ToolPaint.py:2941 +msgid "" +"The data used for creating GCode.\n" +"Each tool store it's own set of such data." +msgstr "" +"Die Daten, die zum Erstellen von GCode verwendet werden.\n" +"Jedes Werkzeug speichert seinen eigenen Satz solcher Daten." + +#: appGUI/ObjectUI.py:1057 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:89 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:72 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:78 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:85 -#: appTools/ToolIsolation.py:219 appTools/ToolNCC.py:233 -#: appTools/ToolNCC.py:240 appTools/ToolPaint.py:215 msgid "V-Tip Dia" msgstr "Stichelspitzen-Durchm" -#: appGUI/ObjectUI.py:1577 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:91 +#: appGUI/ObjectUI.py:1060 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:91 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:74 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:80 -#: appTools/ToolIsolation.py:221 appTools/ToolNCC.py:235 -#: appTools/ToolPaint.py:217 msgid "The tip diameter for V-Shape Tool" msgstr "Der Spitzendurchmesser für das V-Shape-Werkzeug" -#: appGUI/ObjectUI.py:1589 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:101 +#: appGUI/ObjectUI.py:1072 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:101 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:84 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:91 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:99 -#: appTools/ToolIsolation.py:232 appTools/ToolNCC.py:246 -#: appTools/ToolNCC.py:254 appTools/ToolPaint.py:228 msgid "V-Tip Angle" msgstr "Stichel-Winkel" -#: appGUI/ObjectUI.py:1592 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:86 +#: appGUI/ObjectUI.py:1075 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:86 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:93 -#: appTools/ToolIsolation.py:234 appTools/ToolNCC.py:248 -#: appTools/ToolPaint.py:230 msgid "" "The tip angle for V-Shape Tool.\n" "In degree." @@ -6829,10 +7114,10 @@ msgstr "" "Der Spitzenwinkel für das Stichel-Werkzeug.\n" "In grad." -#: appGUI/ObjectUI.py:1608 +#: appGUI/ObjectUI.py:1091 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:51 #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:61 -#: appObjects/FlatCAMGeometry.py:1238 appTools/ToolCutOut.py:141 +#: appObjects/FlatCAMGeometry.py:1312 appTools/ToolCutOut.py:1865 msgid "" "Cutting depth (negative)\n" "below the copper surface." @@ -6840,7 +7125,16 @@ msgstr "" "Schnitttiefe (negativ)\n" "unter der Kupferoberfläche." -#: appGUI/ObjectUI.py:1654 +#: appGUI/ObjectUI.py:1109 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:69 +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:79 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:77 +#: appTools/ToolCutOut.py:1883 appTools/ToolDrilling.py:2150 +#: appTools/ToolMilling.py:1814 +msgid "Multi-Depth" +msgstr "Mehrfache Tiefe" + +#: appGUI/ObjectUI.py:1137 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:104 msgid "" "Height of the tool when\n" @@ -6849,7 +7143,17 @@ msgstr "" "Höhe des Werkzeugs bei\n" "Bewegen ohne zu schneiden." -#: appGUI/ObjectUI.py:1687 +#: appGUI/ObjectUI.py:1156 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:188 +#: appTools/ToolMilling.py:1862 +msgid "" +"Cutting speed in the XY\n" +"plane in units per minute" +msgstr "" +"Schnittgeschwindigkeit im XY\n" +"Flugzeug in Einheiten pro Minute" + +#: appGUI/ObjectUI.py:1170 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:203 msgid "" "Cutting speed in the XY\n" @@ -6860,7 +7164,7 @@ msgstr "" "Flugzeug in Einheiten pro Minute.\n" "Es heißt auch Sturz." -#: appGUI/ObjectUI.py:1702 +#: appGUI/ObjectUI.py:1185 #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:69 msgid "" "Cutting speed in the XY plane\n" @@ -6875,7 +7179,28 @@ msgstr "" "Es ist nur für Marlin nützlich,\n" "für andere Fälle ignorieren." -#: appGUI/ObjectUI.py:1746 +#: appGUI/ObjectUI.py:1203 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:85 +#: appTools/ToolMilling.py:1914 +msgid "Re-cut" +msgstr "Nachschneiden" + +#: appGUI/ObjectUI.py:1205 appGUI/ObjectUI.py:1217 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:87 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:99 +#: appTools/ToolMilling.py:1916 appTools/ToolMilling.py:1929 +msgid "" +"In order to remove possible\n" +"copper leftovers where first cut\n" +"meet with last cut, we generate an\n" +"extended cut over the first cut section." +msgstr "" +"Um zu entfernen möglich\n" +"Kupferreste wurden zuerst geschnitten\n" +"Beim letzten Schnitt treffen wir einen\n" +"verlängerter Schnitt über dem ersten Schnittabschnitt." + +#: appGUI/ObjectUI.py:1229 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:220 msgid "" "Speed of the spindle in RPM (optional).\n" @@ -6886,7 +7211,93 @@ msgstr "" "Wenn LASER-Postprozessor verwendet wird,\n" "Dieser Wert ist die Leistung des Lasers." -#: appGUI/ObjectUI.py:1849 +#: appGUI/ObjectUI.py:1245 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:235 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:202 +#: appTools/ToolDrilling.py:2252 appTools/ToolMilling.py:1959 +msgid "" +"Pause to allow the spindle to reach its\n" +"speed before cutting." +msgstr "" +"Pause, damit die Spindel ihre erreichen kann\n" +"Geschwindigkeit vor dem Schneiden." + +#: appGUI/ObjectUI.py:1255 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:240 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:210 +#: appTools/ToolDrilling.py:2264 appTools/ToolMilling.py:1970 +msgid "Number of time units for spindle to dwell." +msgstr "Anzahl der Zeiteinheiten, in denen die Spindel verweilen soll." + +#: appGUI/ObjectUI.py:1263 appGUI/ObjectUI.py:1962 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:117 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:108 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:333 +#: appTools/ToolDrilling.py:2447 appTools/ToolMilling.py:2129 +msgid "Probe Z depth" +msgstr "Sonde Z Tiefe" + +#: appGUI/ObjectUI.py:1265 appGUI/ObjectUI.py:1964 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:119 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:110 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:335 +#: appTools/ToolDrilling.py:2449 appTools/ToolMilling.py:2131 +msgid "" +"The maximum depth that the probe is allowed\n" +"to probe. Negative value, in current units." +msgstr "" +"Die maximale Tiefe, in der die Sonde zulässig ist\n" +"zu untersuchen. Negativer Wert in aktuellen Einheiten." + +#: appGUI/ObjectUI.py:1280 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:123 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:346 +#: appTools/ToolDrilling.py:2466 appTools/ToolMilling.py:2148 +msgid "Feedrate Probe" +msgstr "Vorschubsonde" + +#: appGUI/ObjectUI.py:1282 appGUI/ObjectUI.py:1977 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:132 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:125 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:348 +#: appTools/ToolDrilling.py:2468 appTools/ToolMilling.py:2150 +msgid "The feedrate used while the probe is probing." +msgstr "Der Vorschub während der Sondenmessung." + +#: appGUI/ObjectUI.py:1309 appTools/ToolDrilling.py:2350 +#: appTools/ToolIsolation.py:3220 appTools/ToolMilling.py:2042 +#: appTools/ToolNCC.py:4087 appTools/ToolPaint.py:3047 +msgid "Apply parameters to all tools" +msgstr "Parameter auf alle Werkzeuge anwenden" + +#: appGUI/ObjectUI.py:1312 appTools/ToolDrilling.py:2353 +#: appTools/ToolIsolation.py:3223 appTools/ToolMilling.py:2045 +#: appTools/ToolNCC.py:4090 appTools/ToolPaint.py:3050 +msgid "" +"The parameters in the current form will be applied\n" +"on all the tools from the Tool Table." +msgstr "" +"Die aktuell angegebenen Parameter werden allen Werkzeugen der " +"Werkzeugtabelle zugeordnet." + +#: appGUI/ObjectUI.py:1323 appTools/ToolDrilling.py:2364 +#: appTools/ToolIsolation.py:3234 appTools/ToolMilling.py:2056 +#: appTools/ToolNCC.py:4101 appTools/ToolPaint.py:3061 +msgid "Common Parameters" +msgstr "Allgemeine Parameter" + +#: appGUI/ObjectUI.py:1325 appTools/ToolDrilling.py:2366 +#: appTools/ToolIsolation.py:3236 appTools/ToolMilling.py:2058 +#: appTools/ToolNCC.py:4103 appTools/ToolPaint.py:3063 +msgid "Parameters that are common for all tools." +msgstr "Parameter, die allen Werkzeugen gemeinsam sind." + +#: appGUI/ObjectUI.py:1330 appTools/ToolDrilling.py:2380 +#: appTools/ToolMilling.py:2063 +msgid "Tool change Z" +msgstr "Werkzeugwechsel Z" + +#: appGUI/ObjectUI.py:1333 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:125 msgid "" "Include tool-change sequence\n" @@ -6895,7 +7306,63 @@ msgstr "" "Werkzeugwechselfolge einbeziehen\n" "im Maschinencode (Pause für Werkzeugwechsel)." -#: appGUI/ObjectUI.py:1918 +#: appGUI/ObjectUI.py:1341 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:135 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:126 +#: appTools/ToolDrilling.py:2382 appTools/ToolMilling.py:2072 +msgid "" +"Z-axis position (height) for\n" +"tool change." +msgstr "" +"Z-Achsenposition (Höhe) für\n" +"Werkzeugwechsel." + +#: appGUI/ObjectUI.py:1369 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:154 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:142 +#: appTools/ToolDrilling.py:2413 appTools/ToolMilling.py:2098 +msgid "End move Z" +msgstr "Bewegung beenden Z" + +#: appGUI/ObjectUI.py:1371 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:156 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:144 +#: appTools/ToolDrilling.py:2415 appTools/ToolMilling.py:2100 +msgid "" +"Height of the tool after\n" +"the last move at the end of the job." +msgstr "" +"Höhe des Werkzeugs nach\n" +"die letzte Bewegung am Ende des Jobs." + +#: appGUI/ObjectUI.py:1388 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:174 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:159 +#: appTools/ToolDrilling.py:2433 appTools/ToolMilling.py:2117 +msgid "End move X,Y" +msgstr "Bewegung beenden X, Y" + +#: appGUI/ObjectUI.py:1390 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:176 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:161 +#: appTools/ToolDrilling.py:2435 appTools/ToolMilling.py:2119 +msgid "" +"End move X,Y position. In format (x,y).\n" +"If no value is entered then there is no move\n" +"on X,Y plane at the end of the job." +msgstr "" +"Beenden Sie die X-, Y-Position. Im Format (x, y).\n" +"Wenn kein Wert eingegeben wird, erfolgt keine Bewegung\n" +"auf der X, Y-Ebene am Ende des Jobs." + +#: appGUI/ObjectUI.py:1395 appTools/ToolDrilling.py:2440 +#: appTools/ToolMilling.py:2124 +#, fuzzy +#| msgid "Coordinates" +msgid "X,Y coordinates" +msgstr "Koordinaten" + +#: appGUI/ObjectUI.py:1403 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:257 msgid "" "The Preprocessor file that dictates\n" @@ -6904,11 +7371,222 @@ msgstr "" "Die Postprozessor-Datei, die diktiert\n" "den Maschinencode (wie GCode, RML, HPGL)." -#: appGUI/ObjectUI.py:2064 +#: appGUI/ObjectUI.py:1419 appTools/ToolDrilling.py:2501 +#: appTools/ToolMilling.py:2194 +msgid "Add exclusion areas" +msgstr "Ausschlussbereiche hinzufügen" + +#: appGUI/ObjectUI.py:1422 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:212 +#: appTools/ToolDrilling.py:2504 appTools/ToolMilling.py:2197 +msgid "" +"Include exclusion areas.\n" +"In those areas the travel of the tools\n" +"is forbidden." +msgstr "" +"Ausschlussbereiche einschließen.\n" +"In diesen Bereichen die Reise der Werkzeuge\n" +"ist verboten." + +#: appGUI/ObjectUI.py:1443 appGUI/ObjectUI.py:1462 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:232 +#: appTools/ToolDrilling.py:2526 appTools/ToolDrilling.py:2545 +#: appTools/ToolMilling.py:2218 appTools/ToolMilling.py:2237 +msgid "Strategy" +msgstr "Strategie" + +#: appGUI/ObjectUI.py:1443 appGUI/ObjectUI.py:1474 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:244 +#: appTools/ToolDrilling.py:2526 appTools/ToolDrilling.py:2558 +#: appTools/ToolMilling.py:2218 appTools/ToolMilling.py:2249 +msgid "Over Z" +msgstr "Über Z" + +#: appGUI/ObjectUI.py:1445 appTools/ToolDrilling.py:2528 +#: appTools/ToolMilling.py:2220 +msgid "This is the Area ID." +msgstr "Dies ist die Bereichs-ID." + +#: appGUI/ObjectUI.py:1447 appTools/ToolDrilling.py:2530 +#: appTools/ToolMilling.py:2222 +msgid "Type of the object where the exclusion area was added." +msgstr "Typ des Objekts, zu dem der Ausschlussbereich hinzugefügt wurde." + +#: appGUI/ObjectUI.py:1449 appTools/ToolDrilling.py:2532 +#: appTools/ToolMilling.py:2224 +msgid "" +"The strategy used for exclusion area. Go around the exclusion areas or over " +"it." +msgstr "" +"Die Strategie für den Ausschlussbereich. Gehen Sie um die Ausschlussbereiche " +"herum oder darüber." + +#: appGUI/ObjectUI.py:1451 appTools/ToolDrilling.py:2534 +#: appTools/ToolMilling.py:2226 +msgid "" +"If the strategy is to go over the area then this is the height at which the " +"tool will go to avoid the exclusion area." +msgstr "" +"Wenn die Strategie darin besteht, über den Bereich zu gehen, ist dies die " +"Höhe, in der sich das Werkzeug bewegt, um den Ausschlussbereich zu vermeiden." + +#: appGUI/ObjectUI.py:1463 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:233 +#: appTools/ToolDrilling.py:2546 appTools/ToolMilling.py:2238 +msgid "" +"The strategy followed when encountering an exclusion area.\n" +"Can be:\n" +"- Over -> when encountering the area, the tool will go to a set height\n" +"- Around -> will avoid the exclusion area by going around the area" +msgstr "" +"Die Strategie wurde verfolgt, wenn auf einen Ausschlussbereich gestoßen " +"wurde.\n" +"Kann sein:\n" +"- Über -> Wenn Sie auf den Bereich stoßen, erreicht das Werkzeug eine " +"festgelegte Höhe\n" +"- Vermeiden -> vermeidet den Ausschlussbereich, indem Sie den Bereich umgehen" + +#: appGUI/ObjectUI.py:1467 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:237 +#: appTools/ToolDrilling.py:2550 appTools/ToolMilling.py:2242 +msgid "Over" +msgstr "Über" + +#: appGUI/ObjectUI.py:1468 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:238 +#: appTools/ToolDrilling.py:2551 appTools/ToolMilling.py:2243 +msgid "Around" +msgstr "Vermeiden" + +#: appGUI/ObjectUI.py:1475 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:245 +#: appTools/ToolDrilling.py:2559 appTools/ToolMilling.py:2250 +msgid "" +"The height Z to which the tool will rise in order to avoid\n" +"an interdiction area." +msgstr "" +"Die Höhe Z, auf die das Werkzeug ansteigt, um dies zu vermeiden\n" +"ein Verbotsbereich." + +#: appGUI/ObjectUI.py:1485 appTools/ToolDrilling.py:2570 +#: appTools/ToolMilling.py:2260 +msgid "Add area:" +msgstr "Bereich hinzufügen:" + +#: appGUI/ObjectUI.py:1486 appTools/ToolDrilling.py:2571 +#: appTools/ToolMilling.py:2261 +msgid "Add an Exclusion Area." +msgstr "Fügen Sie einen Ausschlussbereich hinzu." + +#: appGUI/ObjectUI.py:1492 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:222 +#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:295 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:324 +#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:288 +#: appTools/ToolDrilling.py:2577 appTools/ToolIsolation.py:3372 +#: appTools/ToolMilling.py:2267 appTools/ToolNCC.py:4231 +#: appTools/ToolPaint.py:3163 +msgid "The kind of selection shape used for area selection." +msgstr "Die Art der Auswahlform, die für die Bereichsauswahl verwendet wird." + +#: appGUI/ObjectUI.py:1502 +#: appGUI/preferences/utilities/AutoCompletePrefGroupUI.py:32 +#: appGUI/preferences/utilities/FAExcPrefGroupUI.py:42 +#: appGUI/preferences/utilities/FAGcoPrefGroupUI.py:32 +#: appGUI/preferences/utilities/FAGrbPrefGroupUI.py:32 +#: appTools/ToolDrilling.py:2588 appTools/ToolMilling.py:2277 +msgid "Delete All" +msgstr "Alles löschen" + +#: appGUI/ObjectUI.py:1503 appTools/ToolDrilling.py:2589 +#: appTools/ToolMilling.py:2278 +msgid "Delete all exclusion areas." +msgstr "Löschen Sie alle Ausschlussbereiche." + +#: appGUI/ObjectUI.py:1506 appTools/ToolDrilling.py:2592 +#: appTools/ToolMilling.py:2281 +msgid "Delete Selected" +msgstr "Ausgewählte löschen" + +#: appGUI/ObjectUI.py:1507 appTools/ToolDrilling.py:2593 +#: appTools/ToolMilling.py:2282 +msgid "Delete all exclusion areas that are selected in the table." +msgstr "Löschen Sie alle in der Tabelle ausgewählten Ausschlussbereiche." + +#: appGUI/ObjectUI.py:1517 +#, fuzzy +#| msgid "Add Polygon" +msgid "Add Polish" +msgstr "Polygon hinzufügen" + +#: appGUI/ObjectUI.py:1519 +msgid "" +"Will add a Paint section at the end of the GCode.\n" +"A metallic brush will clean the material after milling." +msgstr "" + +#: appGUI/ObjectUI.py:1527 +#, fuzzy +#| msgid "Diameter for the new tool." +msgid "Diameter for the polishing tool." +msgstr "Durchmesser für das neue Werkzeug." + +#: appGUI/ObjectUI.py:1538 +#, fuzzy +#| msgid "Measure" +msgid "Pressure" +msgstr "Messen" + +#: appGUI/ObjectUI.py:1540 +msgid "" +"Negative value. The higher the absolute value\n" +"the stronger the pressure of the brush on the material." +msgstr "" + +#: appGUI/ObjectUI.py:1569 +#, fuzzy +#| msgid "" +#| "Algorithm for copper clearing:\n" +#| "- Standard: Fixed step inwards.\n" +#| "- Seed-based: Outwards from seed.\n" +#| "- Line-based: Parallel lines." +msgid "" +"Algorithm for polishing:\n" +"- Standard: Fixed step inwards.\n" +"- Seed-based: Outwards from seed.\n" +"- Line-based: Parallel lines." +msgstr "" +"Algorithmus zur Kupferreinigung:\n" +"- Standard: Schritt nach innen behoben.\n" +"- Samenbasiert: Aus dem Samen heraus.\n" +"- Linienbasiert: Parallele Linien." + +#: appGUI/ObjectUI.py:1613 appTools/ToolDrilling.py:2615 +#: appTools/ToolMilling.py:2304 +msgid "Generate CNCJob object" +msgstr "Generieren des CNC-Job-Objekts" + +#: appGUI/ObjectUI.py:1616 +#, fuzzy +#| msgid "Generate CNCJob object" +msgid "Generate CNCJob object." +msgstr "Generieren des CNC-Job-Objekts" + +#: appGUI/ObjectUI.py:1618 +msgid "" +"Add / Select 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 "" +"Hinzufügen / Auswählen mindestens eines Werkzeugs in der Werkzeugtabelle.\n" +"Klicken Sie auf die Überschrift #, um alle auszuwählen, oder auf Strg + LMB\n" +"zur benutzerdefinierten Auswahl von Werkzeugen." + +#: appGUI/ObjectUI.py:1637 msgid "Launch Paint Tool in Tools Tab." msgstr "Starten Sie das Paint Werkzeug in der Registerkarte \"Tools\"." -#: appGUI/ObjectUI.py:2072 appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:35 +#: appGUI/ObjectUI.py:1646 appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:35 msgid "" "Creates tool paths to cover the\n" "whole area of a polygon (remove\n" @@ -6920,15 +7598,11 @@ msgstr "" "alles Kupfer). Du wirst gefragt\n" "Klicken Sie auf das gewünschte Polygon." -#: appGUI/ObjectUI.py:2127 +#: appGUI/ObjectUI.py:1702 msgid "CNC Job Object" msgstr "CNC-Auftragsobjekt" -#: appGUI/ObjectUI.py:2138 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:45 -msgid "Plot kind" -msgstr "Darstellungsart" - -#: appGUI/ObjectUI.py:2141 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:47 +#: appGUI/ObjectUI.py:1718 appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:54 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" @@ -6941,15 +7615,15 @@ msgstr "" "über dem Werkstück oder es kann vom Typ 'Ausschneiden' sein,\n" "was bedeutet, dass die Bewegungen, die in das Material geschnitten werden." -#: appGUI/ObjectUI.py:2150 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:55 +#: appGUI/ObjectUI.py:1727 appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:62 msgid "Travel" msgstr "Reise" -#: appGUI/ObjectUI.py:2154 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:64 +#: appGUI/ObjectUI.py:1746 appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:71 msgid "Display Annotation" msgstr "Anmerkung anzeigen" -#: appGUI/ObjectUI.py:2156 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:66 +#: appGUI/ObjectUI.py:1748 appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:73 msgid "" "This selects if to display text annotation on the plot.\n" "When checked it will display numbers in order for each end\n" @@ -6961,11 +7635,11 @@ msgstr "" "richtigen Reihenfolge angezeigt\n" "einer Reiseleitung." -#: appGUI/ObjectUI.py:2171 -msgid "Travelled dist." -msgstr "Zurückgelegte Strecke." +#: appGUI/ObjectUI.py:1760 appTools/ToolProperties.py:562 +msgid "Travelled distance" +msgstr "Zurückgelegte Strecke" -#: appGUI/ObjectUI.py:2173 appGUI/ObjectUI.py:2178 +#: appGUI/ObjectUI.py:1762 msgid "" "This is the total travelled distance on X-Y plane.\n" "In current units." @@ -6973,11 +7647,11 @@ msgstr "" "Dies ist die Gesamtstrecke auf der X-Y-Ebene.\n" "In aktuellen Einheiten." -#: appGUI/ObjectUI.py:2183 +#: appGUI/ObjectUI.py:1773 msgid "Estimated time" msgstr "Geschätzte Zeit" -#: appGUI/ObjectUI.py:2185 appGUI/ObjectUI.py:2190 +#: appGUI/ObjectUI.py:1775 msgid "" "This is the estimated time to do the routing/drilling,\n" "without the time spent in ToolChange events." @@ -6985,11 +7659,11 @@ msgstr "" "Dies ist die geschätzte Zeit für das Fräsen / Bohren.\n" "ohne die Zeit, die in Werkzeugwechselereignissen verbracht wird." -#: appGUI/ObjectUI.py:2225 +#: appGUI/ObjectUI.py:1799 msgid "CNC Tools Table" msgstr "CNC Werkzeugtabelle" -#: appGUI/ObjectUI.py:2228 +#: appGUI/ObjectUI.py:1802 msgid "" "Tools in this CNCJob object used for cutting.\n" "The tool diameter is used for plotting on canvas.\n" @@ -7011,25 +7685,390 @@ msgstr "" "Der 'Werkzeugtyp' (TT) kann kreisförmig mit 1 bis 4 Zähnen (C1..C4) sein.\n" "Kugel (B) oder V-Form (V)." -#: appGUI/ObjectUI.py:2256 appGUI/ObjectUI.py:2267 +#: appGUI/ObjectUI.py:1830 appGUI/ObjectUI.py:1841 msgid "P" msgstr "P" -#: appGUI/ObjectUI.py:2277 +#: appGUI/ObjectUI.py:1851 msgid "Update Plot" msgstr "Plot aktualisieren" -#: appGUI/ObjectUI.py:2279 +#: appGUI/ObjectUI.py:1853 msgid "Update the plot." msgstr "Aktualisieren Sie die Darstellung." -#: appGUI/ObjectUI.py:2286 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:30 +#: appGUI/ObjectUI.py:1862 +#, fuzzy +#| msgid "Create the QRCode object." +msgid "Edit an GCode object." +msgstr "Erzeugen des QRCode Objektes." + +#: appGUI/ObjectUI.py:1878 +msgid "Use CNC Code Snippets" +msgstr "" + +#: appGUI/ObjectUI.py:1880 +msgid "" +"When selected, it will include CNC Code snippets (append and prepend)\n" +"defined in the Preferences." +msgstr "" + +#: appGUI/ObjectUI.py:1886 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:64 +msgid "Autolevelling" +msgstr "" + +#: appGUI/ObjectUI.py:1888 +msgid "Enable the autolevelling feature." +msgstr "" + +#: appGUI/ObjectUI.py:1905 +#, fuzzy +#| msgid "Tools Table" +msgid "Probe Points Table" +msgstr "Werkzeugtabelle" + +#: appGUI/ObjectUI.py:1906 +msgid "Generate GCode that will obtain the height map" +msgstr "" + +#: appGUI/ObjectUI.py:1908 +msgid "Show" +msgstr "" + +#: appGUI/ObjectUI.py:1909 +#, fuzzy +#| msgid "Toggle the display of axis on canvas" +msgid "Toggle the display of the Probe Points table." +msgstr "Schalten Sie die Anzeige der Achse auf der Leinwand um" + +#: appGUI/ObjectUI.py:1922 +#, fuzzy +#| msgid "Coordinates" +msgid "X-Y Coordinates" +msgstr "Koordinaten" + +#: appGUI/ObjectUI.py:1922 +#, fuzzy +#| msgid "Light" +msgid "Height" +msgstr "Licht" + +#: appGUI/ObjectUI.py:1926 +msgid "Show Voronoi diagram" +msgstr "" + +#: appGUI/ObjectUI.py:1928 +msgid "Display Voronoi diagram if there are probe points in the table." +msgstr "" + +#: appGUI/ObjectUI.py:1941 +#, fuzzy +#| msgid "Finished G-Code generation" +msgid "Probe GCode Generation" +msgstr "Fertige G-Code-Generierung" + +#: appGUI/ObjectUI.py:1943 +msgid "" +"Will create a GCode which will be sent to the controller,\n" +"either through a file or directly, with the intent to get the height map\n" +"that is to modify the original GCode to level the cutting height." +msgstr "" + +#: appGUI/ObjectUI.py:1950 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:105 +#, fuzzy +#| msgid "Probe Z depth" +msgid "Probe Z travel" +msgstr "Sonde Z Tiefe" + +#: appGUI/ObjectUI.py:1952 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:107 +#, fuzzy +#| msgid "Height (Z) for travelling between the points." +msgid "The safe Z for probe travelling between probe points." +msgstr "Die Höhe (Z) für den Weg zwischen Pads." + +#: appGUI/ObjectUI.py:1975 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:130 +#, fuzzy +#| msgid "Feedrate" +msgid "Probe Feedrate" +msgstr "Vorschubgeschwindigkeit" + +#: appGUI/ObjectUI.py:1991 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:71 +#, fuzzy +#| msgid "Mode:" +msgid "Mode" +msgstr "Modus:" + +#: appGUI/ObjectUI.py:1992 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:72 +msgid "" +"Choose a mode for height map generation.\n" +"- Manual: will pick a selection of probe points by clicking on canvas\n" +"- Grid: will automatically generate a grid of probe points" +msgstr "" + +#: appGUI/ObjectUI.py:1998 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:78 +#: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:74 +#: appTools/ToolCutOut.py:2082 appTools/ToolFiducials.py:801 +msgid "Manual" +msgstr "Manuell" + +#: appGUI/ObjectUI.py:1999 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:79 +#, fuzzy +#| msgid "Grids" +msgid "Grid" +msgstr "Raster" + +#: appGUI/ObjectUI.py:2007 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:87 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:77 +#: appTools/ToolPanelize.py:787 +msgid "Columns" +msgstr "Säulen" + +#: appGUI/ObjectUI.py:2009 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:89 +msgid "The number of grid columns." +msgstr "" + +#: appGUI/ObjectUI.py:2017 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:97 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:89 +#: appTools/ToolPanelize.py:797 +msgid "Rows" +msgstr "Reihen" + +#: appGUI/ObjectUI.py:2019 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:99 +msgid "The number of gird rows." +msgstr "" + +#: appGUI/ObjectUI.py:2024 +#, fuzzy +#| msgid "Get Points" +msgid "Add Probe Points" +msgstr "Punkte einholen" + +#: appGUI/ObjectUI.py:2032 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:146 +#, fuzzy +#| msgid "Contour" +msgid "Controller" +msgstr "Kontur" + +#: appGUI/ObjectUI.py:2034 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:148 +msgid "" +"The kind of controller for which to generate\n" +"height map gcode." +msgstr "" + +#: appGUI/ObjectUI.py:2080 appGUI/ObjectUI.py:2095 +#: appObjects/FlatCAMCNCJob.py:1159 appObjects/FlatCAMCNCJob.py:1181 +#, fuzzy +#| msgid "Contour" +msgid "Control" +msgstr "Kontur" + +#: appGUI/ObjectUI.py:2090 appGUI/ObjectUI.py:2097 +#: appObjects/FlatCAMCNCJob.py:1161 appObjects/FlatCAMCNCJob.py:1183 +#, fuzzy +#| msgid "Rendered" +msgid "Sender" +msgstr "Gerendert" + +#: appGUI/ObjectUI.py:2111 +msgid "COM list" +msgstr "" + +#: appGUI/ObjectUI.py:2113 appGUI/ObjectUI.py:2128 +msgid "Lists the available serial ports." +msgstr "" + +#: appGUI/ObjectUI.py:2117 +msgid "Search" +msgstr "" + +#: appGUI/ObjectUI.py:2119 +msgid "Search for the available serial ports." +msgstr "" + +#: appGUI/ObjectUI.py:2126 +msgid "Baud rates" +msgstr "" + +#: appGUI/ObjectUI.py:2145 +msgid "New, custom baudrate." +msgstr "" + +#: appGUI/ObjectUI.py:2153 +msgid "Add the specified custom baudrate to the list." +msgstr "" + +#: appGUI/ObjectUI.py:2159 +#, fuzzy +#| msgid "Delete Selected" +msgid "Delete selected baudrate" +msgstr "Ausgewählte löschen" + +#: appGUI/ObjectUI.py:2163 +msgid "Reset" +msgstr "Zurücksetzen" + +#: appGUI/ObjectUI.py:2165 +msgid "Software reset of the controller." +msgstr "" + +#: appGUI/ObjectUI.py:2171 appObjects/FlatCAMCNCJob.py:1175 +#, fuzzy +#| msgid "Connect" +msgid "Disconnected" +msgstr "Verbinden" + +#: appGUI/ObjectUI.py:2173 +#, fuzzy +#| msgid "" +#| "Create a Gerber object from the selected object, within\n" +#| "the specified box." +msgid "Connect to the selected port with the selected baud rate." +msgstr "" +"Erstellen Sie innerhalb des ausgewählten Objekts ein Gerber-Objekt\n" +"das angegebene Feld." + +#: appGUI/ObjectUI.py:2198 +msgid "Jog" +msgstr "" + +#: appGUI/ObjectUI.py:2206 +#, fuzzy +#| msgid "Zeros" +msgid "Zero Axes" +msgstr "Nullen" + +#: appGUI/ObjectUI.py:2239 +msgid "Pause/Resume" +msgstr "" + +#: appGUI/ObjectUI.py:2261 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:158 +msgid "Step" +msgstr "" + +#: appGUI/ObjectUI.py:2263 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:160 +msgid "Each jog action will move the axes with this value." +msgstr "" + +#: appGUI/ObjectUI.py:2275 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:171 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:89 +#: appTools/ToolProperties.py:529 +msgid "Feedrate" +msgstr "Vorschubgeschwindigkeit" + +#: appGUI/ObjectUI.py:2277 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:173 +msgid "Feedrate when jogging." +msgstr "" + +#: appGUI/ObjectUI.py:2297 +msgid "Send Command" +msgstr "" + +#: appGUI/ObjectUI.py:2299 appGUI/ObjectUI.py:2309 +msgid "Send a custom command to GRBL." +msgstr "" + +#: appGUI/ObjectUI.py:2304 +msgid "Type GRBL command ..." +msgstr "" + +#: appGUI/ObjectUI.py:2307 +msgid "Send" +msgstr "" + +#: appGUI/ObjectUI.py:2315 +#, fuzzy +#| msgid "Text to PDF parameters" +msgid "Get Config parameter" +msgstr "Text zu PDF-Parametern" + +#: appGUI/ObjectUI.py:2317 +msgid "A GRBL configuration parameter." +msgstr "" + +#: appGUI/ObjectUI.py:2322 +msgid "Type GRBL parameter ..." +msgstr "" + +#: appGUI/ObjectUI.py:2325 +#, fuzzy +#| msgid "Geo" +msgid "Get" +msgstr "Geo" + +#: appGUI/ObjectUI.py:2327 +msgid "Get the value of a specified GRBL parameter." +msgstr "" + +#: appGUI/ObjectUI.py:2335 +#, fuzzy +#| msgid "Gerber Export" +msgid "Get Report" +msgstr "Gerber Export" + +#: appGUI/ObjectUI.py:2337 +msgid "Print in shell the GRBL report." +msgstr "" + +#: appGUI/ObjectUI.py:2342 +msgid "Apply AutoLevelling" +msgstr "" + +#: appGUI/ObjectUI.py:2344 +msgid "" +"Will send the probing GCode to the GRBL controller,\n" +"wait for the Z probing data and then apply this data\n" +"over the original GCode therefore doing autolevelling." +msgstr "" + +#: appGUI/ObjectUI.py:2354 +#, fuzzy +#| msgid "Starting G-Code" +msgid "Save Probing GCode" +msgstr "G-Code starten" + +#: appGUI/ObjectUI.py:2362 +msgid "View/Edit the probing GCode." +msgstr "" + +#: appGUI/ObjectUI.py:2369 appObjects/FlatCAMCNCJob.py:1579 +#: appObjects/FlatCAMCNCJob.py:1583 +#, fuzzy +#| msgid "Import List" +msgid "Import Height Map" +msgstr "Liste importieren" + +#: appGUI/ObjectUI.py:2371 +msgid "" +"Import the file that has the Z heights\n" +"obtained through probing and then apply this data\n" +"over the original GCode therefore\n" +"doing autolevelling." +msgstr "" + +#: appGUI/ObjectUI.py:2389 msgid "Export CNC Code" msgstr "CNC-Code exportieren" -#: appGUI/ObjectUI.py:2288 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:32 +#: appGUI/ObjectUI.py:2391 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:37 #: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:33 msgid "" "Export and save G-Code to\n" @@ -7038,214 +8077,11 @@ msgstr "" "Exportieren und speichern Sie den G-Code nach\n" "Machen Sie dieses Objekt in eine Datei." -#: appGUI/ObjectUI.py:2294 -msgid "Prepend to CNC Code" -msgstr "CNC-Code voranstellen" - -#: appGUI/ObjectUI.py:2296 appGUI/ObjectUI.py:2303 -#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:49 -msgid "" -"Type here any G-Code commands you would\n" -"like to add at the beginning of the G-Code file." -msgstr "" -"Geben Sie hier alle G-Code-Befehle ein\n" -"die Sie am Anfang der G-Code-Datei hinzufügen möchten." - -#: appGUI/ObjectUI.py:2309 -msgid "Append to CNC Code" -msgstr "An CNC Code anhängen" - -#: appGUI/ObjectUI.py:2311 appGUI/ObjectUI.py:2319 -#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:65 -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 "" -"Geben Sie hier alle G-Code-Befehle ein\n" -"die Sie an die generierte Datei anhängen möchten.\n" -"z.B.: M2 (Programmende)" - -#: appGUI/ObjectUI.py:2333 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:38 -msgid "Toolchange G-Code" -msgstr "Werkzeugwechsel G-Code" - -#: appGUI/ObjectUI.py:2336 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:41 -msgid "" -"Type here any G-Code commands you would\n" -"like to be executed when Toolchange event is encountered.\n" -"This will constitute a Custom Toolchange GCode,\n" -"or a Toolchange Macro.\n" -"The FlatCAM variables are surrounded by '%' symbol.\n" -"\n" -"WARNING: it can be used only with a preprocessor file\n" -"that has 'toolchange_custom' in it's name and this is built\n" -"having as template the 'Toolchange Custom' posprocessor file." -msgstr "" -"Geben Sie hier alle G-Code-Befehle ein\n" -"Wird ausgeführt, wenn ein Werkzeugwechselereignis auftritt.\n" -"Dies stellt einen benutzerdefinierten Werkzeugwechsel-GCode dar.\n" -"oder ein Werkzeugwechsel-Makro.\n" -"Die FlatCAM-Variablen sind vom '%'-Symbol umgeben.\n" -"\n" -"WARNUNG: Es kann nur mit einer Postprozessor-Datei verwendet werden\n" -"das hat \"toolchange_custom\" im Namen und das ist gebaut\n" -"mit der \"Toolchange Custom\" -Prozessordatei als Vorlage." - -#: appGUI/ObjectUI.py:2351 -msgid "" -"Type here any G-Code commands you would\n" -"like to be executed when Toolchange event is encountered.\n" -"This will constitute a Custom Toolchange GCode,\n" -"or a Toolchange Macro.\n" -"The FlatCAM variables are surrounded by '%' symbol.\n" -"WARNING: it can be used only with a preprocessor file\n" -"that has 'toolchange_custom' in it's name." -msgstr "" -"Geben Sie hier G-Code-Befehle ein\n" -"die ausgeführt werden, wenn ein Werkzeugwechselereignis auftritt.\n" -"So kann ein benutzerdefinierter Werkzeugwechsel in GCode definiert werden.\n" -"Die FlatCAM-Variablen sind vom '%'-Symbol umgeben.\n" -"\n" -"WARNUNG: Ein Werkzeugwechselereignis kann nur mit einer Präprozessor-Datei " -"verwendet werden\n" -"die das Präfix \"toolchange_custom\" im Namen hat und nach Vorlage der \n" -" \n" -"\"Toolchange Custom\" -Prozessordatei erzeugt wurde." - -#: appGUI/ObjectUI.py:2366 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:80 -msgid "Use Toolchange Macro" -msgstr "Benutze das Werkzeugwechselmakro" - -#: appGUI/ObjectUI.py:2368 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:82 -msgid "" -"Check this box if you want to use\n" -"a Custom Toolchange GCode (macro)." -msgstr "" -"Aktivieren Sie dieses Kontrollkästchen, wenn Sie verwenden möchten\n" -"ein benutzerdefiniertes Werkzeug ändert GCode (Makro)." - -#: appGUI/ObjectUI.py:2376 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:94 -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 "" -"Eine Liste der FlatCAM-Variablen, die verwendet werden können\n" -"im Werkzeugwechselereignis.\n" -"Sie müssen mit dem \"%\" -Symbol umgeben sein" - -#: appGUI/ObjectUI.py:2383 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:101 -#: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:30 -#: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:31 -#: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:31 -#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:37 -#: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:36 -#: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:36 -#: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:36 -#: appGUI/preferences/tools/Tools2InvertPrefGroupUI.py:31 -#: appGUI/preferences/tools/Tools2OptimalPrefGroupUI.py:31 -#: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:36 -#: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:31 -#: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:30 -#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:31 -#: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:35 -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:32 -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:31 -#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:30 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:31 -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:31 -#: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:31 -#: appGUI/preferences/tools/ToolsSubPrefGroupUI.py:31 -#: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:31 -#: appTools/ToolCalibration.py:67 appTools/ToolCopperThieving.py:93 -#: appTools/ToolCorners.py:115 appTools/ToolEtchCompensation.py:138 -#: appTools/ToolFiducials.py:152 appTools/ToolInvertGerber.py:85 -#: appTools/ToolQRCode.py:114 -msgid "Parameters" -msgstr "Parameters" - -#: appGUI/ObjectUI.py:2386 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:106 -msgid "FlatCAM CNC parameters" -msgstr "FlatCAM CNC-Parameter" - -#: appGUI/ObjectUI.py:2387 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:111 -msgid "tool number" -msgstr "Werkzeugnummer" - -#: appGUI/ObjectUI.py:2388 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:112 -msgid "tool diameter" -msgstr "Werkzeugdurchmesser" - -#: appGUI/ObjectUI.py:2389 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:113 -msgid "for Excellon, total number of drills" -msgstr "für Excellon die Gesamtzahl der Bohrer" - -#: appGUI/ObjectUI.py:2391 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:115 -msgid "X coord for Toolchange" -msgstr "X-Koordinate für Werkzeugwechsel" - -#: appGUI/ObjectUI.py:2392 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:116 -msgid "Y coord for Toolchange" -msgstr "Y-Koordinate für Werkzeugwechsel" - -#: appGUI/ObjectUI.py:2393 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:118 -msgid "Z coord for Toolchange" -msgstr "Z-Koordinate für Werkzeugwechsel" - -#: appGUI/ObjectUI.py:2394 -msgid "depth where to cut" -msgstr "tiefe wo zu schneiden" - -#: appGUI/ObjectUI.py:2395 -msgid "height where to travel" -msgstr "Höhe, wohin man reist" - -#: appGUI/ObjectUI.py:2396 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:121 -msgid "the step value for multidepth cut" -msgstr "der Schrittwert für den mehrstufigen Schnitt" - -#: appGUI/ObjectUI.py:2398 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:123 -msgid "the value for the spindle speed" -msgstr "der Wert für die Spindeldrehzahl" - #: appGUI/ObjectUI.py:2400 -msgid "time to dwell to allow the spindle to reach it's set RPM" -msgstr "" -"Zeit zum Verweilen, damit die Spindel die eingestellte Drehzahl erreicht" - -#: appGUI/ObjectUI.py:2416 -msgid "View CNC Code" -msgstr "CNC-Code anzeigen" - -#: appGUI/ObjectUI.py:2418 -msgid "" -"Opens TAB to view/modify/print G-Code\n" -"file." -msgstr "" -"Öffnet die Registerkarte zum Anzeigen / Ändern / Drucken von G-Code\n" -"Datei." - -#: appGUI/ObjectUI.py:2423 msgid "Save CNC Code" msgstr "CNC-Code speichern" -#: appGUI/ObjectUI.py:2425 +#: appGUI/ObjectUI.py:2403 msgid "" "Opens dialog to save G-Code\n" "file." @@ -7253,80 +8089,86 @@ msgstr "" "Öffnet den Dialog zum Speichern des G-Codes\n" "Datei." -#: appGUI/ObjectUI.py:2459 +#: appGUI/ObjectUI.py:2410 +#, fuzzy +#| msgid "View CNC Code" +msgid "Review CNC Code." +msgstr "CNC-Code anzeigen" + +#: appGUI/ObjectUI.py:2464 msgid "Script Object" msgstr "Skriptobjekt" -#: appGUI/ObjectUI.py:2479 appGUI/ObjectUI.py:2553 +#: appGUI/ObjectUI.py:2484 appGUI/ObjectUI.py:2558 msgid "Auto Completer" msgstr "Auto-Vervollständiger" -#: appGUI/ObjectUI.py:2481 +#: appGUI/ObjectUI.py:2486 msgid "This selects if the auto completer is enabled in the Script Editor." msgstr "" "Hiermit wird ausgewählt, ob der automatische Vervollständiger im Skript-" "Editor aktiviert ist." -#: appGUI/ObjectUI.py:2526 +#: appGUI/ObjectUI.py:2531 msgid "Document Object" msgstr "Dokumentobjekt" -#: appGUI/ObjectUI.py:2555 +#: appGUI/ObjectUI.py:2560 msgid "This selects if the auto completer is enabled in the Document Editor." msgstr "" "Hiermit wird ausgewählt, ob der automatische Vervollständiger im " "Dokumenteditor aktiviert ist." -#: appGUI/ObjectUI.py:2573 +#: appGUI/ObjectUI.py:2578 msgid "Font Type" msgstr "Schriftart" -#: appGUI/ObjectUI.py:2590 +#: appGUI/ObjectUI.py:2595 #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:189 msgid "Font Size" msgstr "Schriftgröße" -#: appGUI/ObjectUI.py:2626 +#: appGUI/ObjectUI.py:2631 msgid "Alignment" msgstr "Ausrichtung" -#: appGUI/ObjectUI.py:2631 +#: appGUI/ObjectUI.py:2636 msgid "Align Left" msgstr "Linksbündig" -#: appGUI/ObjectUI.py:2636 app_Main.py:4838 +#: appGUI/ObjectUI.py:2641 app_Main.py:4993 msgid "Center" msgstr "Center" -#: appGUI/ObjectUI.py:2641 +#: appGUI/ObjectUI.py:2646 msgid "Align Right" msgstr "Rechts ausrichten" -#: appGUI/ObjectUI.py:2646 +#: appGUI/ObjectUI.py:2651 msgid "Justify" msgstr "Rechtfertigen" -#: appGUI/ObjectUI.py:2653 +#: appGUI/ObjectUI.py:2658 msgid "Font Color" msgstr "Schriftfarbe" -#: appGUI/ObjectUI.py:2655 +#: appGUI/ObjectUI.py:2660 msgid "Set the font color for the selected text" msgstr "Stellen Sie die Schriftfarbe für den ausgewählten Text ein" -#: appGUI/ObjectUI.py:2669 +#: appGUI/ObjectUI.py:2674 msgid "Selection Color" msgstr "Auswahlfarbe" -#: appGUI/ObjectUI.py:2671 +#: appGUI/ObjectUI.py:2676 msgid "Set the selection color when doing text selection." msgstr "Stellen Sie die Auswahlfarbe bei der Textauswahl ein." -#: appGUI/ObjectUI.py:2685 +#: appGUI/ObjectUI.py:2690 msgid "Tab Size" msgstr "Tab-Größe" -#: appGUI/ObjectUI.py:2687 +#: appGUI/ObjectUI.py:2692 msgid "Set the tab size. In pixels. Default value is 80 pixels." msgstr "" "Stellen Sie die Größe der Registerkarte ein. In Pixeln. Der Standardwert " @@ -7356,7 +8198,7 @@ msgstr "Raster aktiviert." msgid "Grid disabled." msgstr "Raster deaktiviert." -#: appGUI/PlotCanvasLegacy.py:1523 +#: appGUI/PlotCanvasLegacy.py:1530 msgid "" "Could not annotate due of a difference between the number of text elements " "and the number of text positions." @@ -7364,41 +8206,41 @@ msgstr "" "Aufgrund eines Unterschieds zwischen der Anzahl der Textelemente und der " "Anzahl der Textpositionen konnten keine Anmerkungen erstellt werden." -#: appGUI/preferences/PreferencesUIManager.py:861 +#: appGUI/preferences/PreferencesUIManager.py:896 msgid "Preferences applied." msgstr "Einstellungen werden angewendet." -#: appGUI/preferences/PreferencesUIManager.py:881 +#: appGUI/preferences/PreferencesUIManager.py:916 msgid "Are you sure you want to continue?" msgstr "Sind Sie sicher, dass Sie fortfahren wollen?" -#: appGUI/preferences/PreferencesUIManager.py:882 +#: appGUI/preferences/PreferencesUIManager.py:917 msgid "Application will restart" msgstr "Die Anwendung wird neu gestartet" -#: appGUI/preferences/PreferencesUIManager.py:980 +#: appGUI/preferences/PreferencesUIManager.py:1015 msgid "Preferences closed without saving." msgstr "Einstellungen geschlossen ohne zu speichern." -#: appGUI/preferences/PreferencesUIManager.py:992 +#: appGUI/preferences/PreferencesUIManager.py:1027 msgid "Preferences default values are restored." msgstr "Die Standardeinstellungen werden wiederhergestellt." -#: appGUI/preferences/PreferencesUIManager.py:1023 app_Main.py:2501 -#: app_Main.py:2569 +#: appGUI/preferences/PreferencesUIManager.py:1058 app_Main.py:2622 +#: app_Main.py:2690 msgid "Failed to write defaults to file." msgstr "Fehler beim Schreiben der Voreinstellungen in die Datei." -#: appGUI/preferences/PreferencesUIManager.py:1027 -#: appGUI/preferences/PreferencesUIManager.py:1140 +#: appGUI/preferences/PreferencesUIManager.py:1062 +#: appGUI/preferences/PreferencesUIManager.py:1176 msgid "Preferences saved." msgstr "Einstellungen gespeichert." -#: appGUI/preferences/PreferencesUIManager.py:1077 +#: appGUI/preferences/PreferencesUIManager.py:1112 msgid "Preferences edited but not saved." msgstr "Einstellungen bearbeitet, aber nicht gespeichert." -#: appGUI/preferences/PreferencesUIManager.py:1125 +#: appGUI/preferences/PreferencesUIManager.py:1161 msgid "" "One or more values are changed.\n" "Do you want to save the Preferences?" @@ -7410,66 +8252,133 @@ msgstr "" msgid "CNC Job Adv. Options" msgstr "Erw. CNC-Joboptionen" -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:64 -msgid "" -"Type here any G-Code commands you would like to be executed when Toolchange " -"event is encountered.\n" -"This will constitute a Custom Toolchange GCode, or a Toolchange Macro.\n" -"The FlatCAM variables are surrounded by '%' symbol.\n" -"WARNING: it can be used only with a preprocessor file that has " -"'toolchange_custom' in it's name." -msgstr "" -"Geben Sie hier G-Code-Befehle ein, die ausgeführt werden, wenn ein " -"Werkzeugwechselereignis auftritt.\n" -"So kann ein benutzerdefinierter Werkzeugwechsel in GCode definiert werden.\n" -"Die FlatCAM-Variablen sind vom '%'-Symbol umgeben.\n" -"\n" -"WARNUNG: Ein Werkzeugwechselereignis kann nur mit einer Präprozessor-Datei " -"verwendet warden, die das Präfix \"toolchange_custom\" im Namen hat und nach " -"Vorlage der \"Toolchange Custom\" -Prozessordatei erzeugt wurde." +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:35 +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:31 +#: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:30 +#: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:31 +#: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:31 +#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:37 +#: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:36 +#: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:36 +#: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:36 +#: appGUI/preferences/tools/Tools2InvertPrefGroupUI.py:31 +#: appGUI/preferences/tools/Tools2OptimalPrefGroupUI.py:31 +#: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:36 +#: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:31 +#: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:30 +#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:35 +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:32 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:30 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsSubPrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:31 +#: appTools/ToolCalibration.py:762 appTools/ToolCopperThieving.py:1182 +#: appTools/ToolCorners.py:377 appTools/ToolEtchCompensation.py:356 +#: appTools/ToolFiducials.py:763 appTools/ToolInvertGerber.py:228 +#: appTools/ToolQRCode.py:692 +msgid "Parameters" +msgstr "Parameters" -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:119 -msgid "Z depth for the cut" -msgstr "Z Tiefe für den Schnitt" - -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:120 -msgid "Z height for travel" -msgstr "Z Höhe für die Reise" - -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:126 -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" - -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:145 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:43 msgid "Annotation Size" msgstr "Anmerkungsgröße" -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:147 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:45 msgid "The font size of the annotation text. In pixels." msgstr "Die Schriftgröße des Anmerkungstextes. In Pixeln." -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:157 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:54 msgid "Annotation Color" msgstr "Anmerkungsfarbe" -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:159 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:56 msgid "Set the font color for the annotation texts." msgstr "Legen Sie die Schriftfarbe für die Anmerkungstexte fest." +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:66 +#, fuzzy +#| msgid "Parameters for this tool" +msgid "Parameters for the autolevelling." +msgstr "Parameter für dieses Werkzeug" + +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:186 +msgid "Safe height (Z) distance when jogging to origin." +msgstr "" + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:27 +#, fuzzy +#| msgid "Code Editor" +msgid "CNC Job Editor" +msgstr "Code-Editor" + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:33 +#: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:33 +#, fuzzy +#| msgid "A list of Gerber Editor parameters." +msgid "A list of Editor parameters." +msgstr "Eine Liste der Gerber-Editor-Parameter." + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:46 +msgid "Prepend to G-Code" +msgstr "Voranstellen an G-Code" + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:48 +msgid "" +"Type here any G-Code commands you would\n" +"like to add at the beginning of the G-Code file." +msgstr "" +"Geben Sie hier alle G-Code-Befehle ein\n" +"die Sie am Anfang der G-Code-Datei hinzufügen möchten." + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:55 +msgid "" +"Type here any G-Code commands you would like to add at the beginning of the " +"G-Code file." +msgstr "" +"Geben Sie hier alle G-Code-Befehle ein\n" +"die Sie zum Anfang der G-Code-Datei hinzufügen möchten." + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:62 +msgid "Append to G-Code" +msgstr "An G-Code anhängen" + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:64 +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 "" +"Geben Sie hier alle G-Code-Befehle ein\n" +"die Sie an die generierte Datei anhängen möchten.\n" +"z.B.: M2 (Programmende)" + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:72 +msgid "" +"Type here any G-Code commands you would like to append to the generated " +"file.\n" +"I.e.: M2 (End of program)" +msgstr "" +"Geben Sie hier alle G-Code-Befehle ein, die Sie an die generierte Datei " +"anhängen möchten.\n" +"Zum Beispiel: M2 (Programmende)" + #: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:26 msgid "CNC Job General" msgstr "CNC-Job Allgemein" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:77 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:57 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:47 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:59 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:59 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:45 msgid "Circle Steps" msgstr "Kreisschritte" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:79 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:49 msgid "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." @@ -7477,11 +8386,11 @@ msgstr "" "Die Anzahl der Kreisschritte für GCode\n" "Kreis- und Bogenformen lineare Annäherung." -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:88 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:58 msgid "Travel dia" msgstr "Verfahrdurchm" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:90 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:60 msgid "" "The width of the travel lines to be\n" "rendered in the plot." @@ -7489,16 +8398,16 @@ msgstr "" "Die Breite der Fahrlinien soll sein\n" "in der Handlung gerendert." -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:103 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:73 msgid "G-code Decimals" msgstr "G-Code-Dezimalstellen" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:106 -#: appTools/ToolFiducials.py:71 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:76 +#: appTools/ToolFiducials.py:682 msgid "Coordinates" msgstr "Koordinaten" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:108 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:78 msgid "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" @@ -7506,12 +8415,7 @@ msgstr "" "Die Anzahl der Dezimalstellen, für die verwendet werden soll\n" "die X-, Y-, Z-Koordinaten im CNC-Code (GCODE usw.)" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:119 -#: appTools/ToolProperties.py:519 -msgid "Feedrate" -msgstr "Vorschubgeschwindigkeit" - -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:121 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:91 msgid "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" @@ -7519,11 +8423,11 @@ msgstr "" "Die Anzahl der Dezimalstellen, für die verwendet werden soll\n" "der Vorschubparameter im CNC-Code (GCODE usw.)" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:132 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:102 msgid "Coordinates type" msgstr "Koordinaten eingeben" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:134 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:104 msgid "" "The type of coordinates to be used in Gcode.\n" "Can be:\n" @@ -7535,19 +8439,19 @@ msgstr "" "- Absolut G90 -> die Referenz ist der Ursprung x = 0, y = 0\n" "- Inkrementell G91 -> Die Referenz ist die vorherige Position" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:140 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:110 msgid "Absolute G90" msgstr "Absolut G90" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:141 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:111 msgid "Incremental G91" msgstr "Inkrementelles G91" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:151 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:121 msgid "Force Windows style line-ending" msgstr "Windows Zeilenendemarkierung erzwingen" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:153 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:123 msgid "" "When checked will force a Windows style line-ending\n" "(\\r\\n) on non-Windows OS's." @@ -7555,38 +8459,38 @@ msgstr "" "Wenn ausgewählt werden Zeilenendungsmarkierungen von Windows (CRLF) auch auf " "anderen Betriebssystemen geschrieben." -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:165 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:135 msgid "Travel Line Color" msgstr "Reiselinienfarbe" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:169 -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:210 -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:271 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:139 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:180 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:275 #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:154 #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:195 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:94 -#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:153 -#: appTools/ToolRulesCheck.py:186 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:158 +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:169 +#: appTools/ToolRulesCheck.py:1288 msgid "Outline" msgstr "Gliederung" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:171 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:141 msgid "Set the travel line color for plotted objects." msgstr "Legen Sie die Reiselinienfarbe für geplottete Objekte fest." -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:179 -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:220 -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:281 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:149 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:190 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:285 #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:163 #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:205 -#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:163 +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:179 msgid "Fill" msgstr "Füll" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:181 -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:222 -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:283 -#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:165 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:151 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:192 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:287 +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:181 msgid "" "Set the fill color for plotted objects.\n" "First 6 digits are the color and the last 2\n" @@ -7596,28 +8500,28 @@ msgstr "" "Die ersten 6 Ziffern sind die Farbe und die letzten 2\n" "Ziffern sind für Alpha (Transparenz)." -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:191 -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:293 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:161 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:297 #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:176 #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:218 -#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:175 +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:191 msgid "Alpha" msgstr "Alpha" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:193 -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:295 -#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:177 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:163 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:299 +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:193 msgid "Set the fill transparency for plotted objects." msgstr "Legen Sie die Füllungstransparenz für geplottete Objekte fest." -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:206 -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:267 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:90 -#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:149 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:176 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:271 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:154 +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:165 msgid "Object Color" msgstr "Objektfarbe" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:212 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:182 msgid "Set the color for plotted objects." msgstr "Legen Sie die Farbe für geplottete Objekte fest." @@ -7629,31 +8533,9 @@ msgstr "CNC-Auftragsoptionen" msgid "Export G-Code" msgstr "G-Code exportieren" -#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:47 -msgid "Prepend to G-Code" -msgstr "Voranstellen an G-Code" - -#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:56 -msgid "" -"Type here any G-Code commands you would like to add at the beginning of the " -"G-Code file." -msgstr "" -"Geben Sie hier alle G-Code-Befehle ein\n" -"die Sie zum Anfang der G-Code-Datei hinzufügen möchten." - -#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:63 -msgid "Append to G-Code" -msgstr "An G-Code anhängen" - -#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:73 -msgid "" -"Type here any G-Code commands you would like to append to the generated " -"file.\n" -"I.e.: M2 (End of program)" -msgstr "" -"Geben Sie hier alle G-Code-Befehle ein, die Sie an die generierte Datei " -"anhängen möchten.\n" -"Zum Beispiel: M2 (Programmende)" +#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:52 +msgid "Plot kind" +msgstr "Darstellungsart" #: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:27 msgid "Excellon Adv. Options" @@ -7662,6 +8544,7 @@ msgstr "Excellon erweiterte Optionen" #: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:34 #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:34 #: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:276 msgid "Advanced Options" msgstr "Erweiterte Optionen" @@ -7675,70 +8558,10 @@ msgstr "" "Diese Parameter sind nur für verfügbar\n" "Erweiterte App. Niveau." -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:59 -msgid "Toolchange X,Y" -msgstr "Werkzeugwechsel X, Y" - -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:61 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:48 -msgid "Toolchange X,Y position." -msgstr "Werkzeugwechsel X, Y Position." - -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:121 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:137 -msgid "Spindle direction" -msgstr "Drehrichtung" - -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:123 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:139 -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" - -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:134 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:151 -msgid "Fast Plunge" -msgstr "Schneller Sprung" - -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:136 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:153 -msgid "" -"By checking this, the vertical move from\n" -"Z_Toolchange to Z_move is done with G0,\n" -"meaning the fastest speed available.\n" -"WARNING: the move is done at Toolchange X,Y coords." -msgstr "" -"Wenn Sie dies überprüfen, bewegen Sie sich vertikal\n" -"Z_Toolchange zu Z_move erfolgt mit G0,\n" -"Das bedeutet die schnellste verfügbare Geschwindigkeit.\n" -"WARNUNG: Die Verschiebung erfolgt bei Toolchange X, Y-Koordinaten." - -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:143 -msgid "Fast Retract" -msgstr "Schneller Rückzug" - -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:145 -msgid "" -"Exit hole strategy.\n" -" - When uncheked, while exiting the drilled hole the drill bit\n" -"will travel slow, with set feedrate (G1), up to zero depth and then\n" -"travel as fast as possible (G0) to the Z Move (travel height).\n" -" - When checked the travel from Z cut (cut depth) to Z_move\n" -"(travel height) is done as fast as possible (G0) in one move." -msgstr "" -"Verlassen Sie die Lochstrategie.\n" -"  - Ungeprüft, beim Verlassen des Bohrlochs der Bohrer\n" -"fährt langsam, mit eingestelltem Vorschub (G1), bis zur Nulltiefe und dann\n" -"Fahren Sie so schnell wie möglich (G0) bis Z Move (Fahrhöhe).\n" -"  - 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." +#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:48 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:52 +msgid "Table Show/Hide" +msgstr "Tabelle anzeigen / ausblenden" #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:32 msgid "A list of Excellon Editor parameters." @@ -7851,8 +8674,8 @@ msgstr "" #: appGUI/preferences/general/GeneralAppPrefGroupUI.py:39 #: appGUI/preferences/gerber/GerberExpPrefGroupUI.py:42 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:82 -#: appTools/ToolDistance.py:56 appTools/ToolDistanceMin.py:49 -#: appTools/ToolPcbWizard.py:127 appTools/ToolProperties.py:154 +#: appTools/ToolDistance.py:562 appTools/ToolDistanceMin.py:237 +#: appTools/ToolPcbWizard.py:455 appTools/ToolProperties.py:157 msgid "Units" msgstr "Einheiten" @@ -7866,7 +8689,7 @@ msgstr "Die in der Excellon-Datei verwendeten Einheiten." #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:182 #: appGUI/preferences/gerber/GerberExpPrefGroupUI.py:47 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:87 -#: appTools/ToolCalculators.py:61 appTools/ToolPcbWizard.py:125 +#: appTools/ToolCalculators.py:187 appTools/ToolPcbWizard.py:453 msgid "INCH" msgstr "ZOLL" @@ -7875,7 +8698,7 @@ msgstr "ZOLL" #: appGUI/preferences/general/GeneralAppPrefGroupUI.py:43 #: appGUI/preferences/gerber/GerberExpPrefGroupUI.py:48 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:88 -#: appTools/ToolCalculators.py:62 appTools/ToolPcbWizard.py:126 +#: appTools/ToolCalculators.py:188 appTools/ToolPcbWizard.py:454 msgid "MM" msgstr "MM" @@ -7971,7 +8794,7 @@ msgstr "" #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:167 #: appGUI/preferences/gerber/GerberExpPrefGroupUI.py:106 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:107 -#: appTools/ToolPcbWizard.py:111 +#: appTools/ToolPcbWizard.py:439 msgid "LZ" msgstr "LZ" @@ -7979,7 +8802,7 @@ msgstr "LZ" #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:168 #: appGUI/preferences/gerber/GerberExpPrefGroupUI.py:107 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:108 -#: appTools/ToolPcbWizard.py:112 +#: appTools/ToolPcbWizard.py:440 msgid "TZ" msgstr "TZ" @@ -8029,7 +8852,7 @@ msgid "Excellon General" msgstr "Excellon Allgemeines" #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:54 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:45 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:47 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:52 msgid "M-Color" msgstr "M-farbig" @@ -8139,15 +8962,32 @@ msgid "Update Export settings" msgstr "Exporteinstellungen aktual" #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:210 -msgid "Excellon Optimization" -msgstr "Optimierung der Excellons" +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:91 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:110 +#: appTools/ToolPanelize.py:821 +#, fuzzy +#| msgid "Optimization Time" +msgid "Path Optimization" +msgstr "Optimierungszeit" #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:213 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:94 msgid "Algorithm:" msgstr "Algorithmus:" #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:215 -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:231 +#, fuzzy +#| msgid "" +#| "This sets the optimization type for the Excellon drill path.\n" +#| "If <> is checked then Google OR-Tools algorithm with\n" +#| "MetaHeuristic Guided Local Path is used. Default search time is 3sec.\n" +#| "If <> is checked then Google OR-Tools Basic algorithm is used.\n" +#| "If <> is checked then Travelling Salesman algorithm is used for\n" +#| "drill path optimization.\n" +#| "\n" +#| "If this control is disabled, then FlatCAM works in 32bit mode and it " +#| "uses\n" +#| "Travelling Salesman algorithm for path optimization." msgid "" "This sets the optimization type for the Excellon drill path.\n" "If <> is checked then Google OR-Tools algorithm with\n" @@ -8156,8 +8996,7 @@ msgid "" "If <> is checked then Travelling Salesman algorithm is used for\n" "drill path optimization.\n" "\n" -"If this control is disabled, then FlatCAM works in 32bit mode and it uses\n" -"Travelling Salesman algorithm for path optimization." +"Some options are disabled when FlatCAM works in 32bit mode." msgstr "" "Hiermit wird der Optimierungstyp für den Excellon-Bohrpfad festgelegt.\n" "Wenn << MetaHeuristic >> aktiviert ist, verwenden Sie den Google OR-Tools-" @@ -8174,28 +9013,42 @@ msgstr "" "und verwendet\n" "Travelling Salesman-Algorithmus zur Pfadoptimierung." -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:226 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:225 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:310 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:314 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:109 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:171 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:175 msgid "MetaHeuristic" msgstr "MetaHeuristic" -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:227 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:226 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:310 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:314 #: appGUI/preferences/general/GeneralAppPrefGroupUI.py:104 -#: appObjects/FlatCAMExcellon.py:694 appObjects/FlatCAMGeometry.py:568 -#: appObjects/FlatCAMGerber.py:223 appTools/ToolIsolation.py:806 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:110 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:171 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:175 +#: appObjects/FlatCAMExcellon.py:154 appObjects/FlatCAMGeometry.py:560 +#: appObjects/FlatCAMGerber.py:167 appTools/ToolDrilling.py:305 +#: appTools/ToolIsolation.py:241 appTools/ToolMilling.py:294 msgid "Basic" msgstr "Basis" -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:228 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:227 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:111 msgid "TSA" msgstr "TSA" -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:245 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:245 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:233 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:117 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:238 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:209 msgid "Duration" msgstr "Dauer" -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:248 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:236 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:119 msgid "" "When OR-Tools Metaheuristic (MH) is enabled there is a\n" "maximum threshold for how much time is spent doing the\n" @@ -8207,9 +9060,30 @@ msgstr "" "Pfadoptimierung. Diese maximale Dauer wird hier eingestellt.\n" "In Sekunden." -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:273 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:96 -#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:155 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:255 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:138 +#, fuzzy +#| msgid "Plot Options" +msgid "Join Option" +msgstr "Diagrammoptionen" + +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:258 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:141 +#, fuzzy +#| msgid "Rules Tool" +msgid "Fuse Tools" +msgstr "Regelwerkzeug" + +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:260 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:143 +msgid "" +"When checked the joined (merged) object tools\n" +"will be merged also but only if they share some of their attributes." +msgstr "" + +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:277 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:160 +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:171 msgid "Set the line color for plotted objects." msgstr "Legen Sie die Linienfarbe für geplottete Objekte fest." @@ -8230,58 +9104,64 @@ msgstr "" "Parameter, die zum Erstellen eines CNC-Auftragsobjekts verwendet werden\n" "für dieses Bohrobjekt." -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:152 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:122 -msgid "Tool change" -msgstr "Werkzeugwechsel" - -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:236 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:233 -msgid "Enable Dwell" -msgstr "Verweilzeit aktivieren" - -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:259 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:48 +#: appTools/ToolMilling.py:1740 msgid "" -"The preprocessor JSON file that dictates\n" -"Gcode output." +"Operation type:\n" +"- Drilling -> will drill the drills/slots associated with this tool\n" +"- Milling -> will mill the drills/slots" msgstr "" -"Die Postprozessor-JSON-Datei, die diktiert\n" -"Gcode-Ausgabe." +"Betriebsart:\n" +"- Bohren -> bohrt die mit diesem Werkzeug verbundenen Bohrer / Schlitze\n" +"- Fräsen -> fräst die Bohrer / Schlitze" -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:270 -msgid "Gcode" -msgstr "Gcode" - -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:272 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:64 +#: appTools/ToolMilling.py:1762 msgid "" -"Choose what to use for GCode generation:\n" -"'Drills', 'Slots' or 'Both'.\n" -"When choosing 'Slots' or 'Both', slots will be\n" -"converted to drills." +"Milling type:\n" +"- Drills -> will mill the drills associated with this tool\n" +"- Slots -> will mill the slots associated with this tool\n" +"- Both -> will mill both drills and mills or whatever is available" msgstr "" -"Wählen Sie aus, was für die GCode-Generierung verwendet werden soll:\n" -"'Bohrer', 'Schlüssel' oder 'Beide'.\n" -"Wenn Sie \"Schlüssel\" oder \"Beide\" wählen, werden die Schlüssel " -"angezeigt\n" -"in Bohrer umgewandelt." +"Frästyp:\n" +"- Bohrer -> fräst die mit diesem Werkzeug verbundenen Bohrer\n" +"- Schlüssel-> fräst die diesem Tool zugeordneten Slots\n" +"- Beide -> fräsen sowohl Bohrer als auch Fräser oder was auch immer " +"verfügbar ist" -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:288 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:73 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:199 +#: appTools/ToolFilm.py:958 appTools/ToolMilling.py:1771 +msgid "Both" +msgstr "Both" + +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:80 +#: appTools/ToolMilling.py:1779 +msgid "Milling Diameter" +msgstr "Fräsdurchmesser" + +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:82 +#: appTools/ToolMilling.py:1781 +msgid "The diameter of the tool who will do the milling" +msgstr "Der Durchmesser des Werkzeugs, das das Fräsen übernimmt" + +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:93 msgid "Mill Holes" msgstr "Löcher bohren" -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:290 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:95 msgid "Create Geometry for milling holes." msgstr "Erstellen Sie Geometrie zum Fräsen von Löchern." -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:294 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:99 msgid "Drill Tool dia" msgstr "Bohrwerkzeugs Durchm" -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:305 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:110 msgid "Slot Tool dia" msgstr "Schlitzwerkzeug Durchmesser" -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:307 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:112 msgid "" "Diameter of the cutting tool\n" "when milling slots." @@ -8340,7 +9220,7 @@ msgstr "Orientierung" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:172 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:228 -#: appTools/ToolFilm.py:405 +#: appTools/ToolFilm.py:1123 msgid "" "Can be:\n" "- Portrait\n" @@ -8351,16 +9231,16 @@ msgstr "" "- Querformat" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:176 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:154 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:168 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:232 -#: appTools/ToolFilm.py:409 +#: appTools/ToolFilm.py:1127 msgid "Portrait" msgstr "Hochformat" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:177 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:155 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:169 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:233 -#: appTools/ToolFilm.py:410 +#: appTools/ToolFilm.py:1128 msgid "Landscape" msgstr "Querformat" @@ -8381,6 +9261,7 @@ msgstr "" "und schließen Sie die Registerkarten Projekt, Ausgewählt und Werkzeug ein." #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:214 +#: appTools/ToolDblSided.py:673 appTools/ToolDblSided.py:847 msgid "Axis" msgstr "Achse" @@ -8429,12 +9310,12 @@ msgstr "" "- Groß -> Unendliche Linien" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:292 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:193 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:207 msgid "Small" msgstr "Klein" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:293 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:194 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:208 msgid "Big" msgstr "Groß" @@ -8482,12 +9363,12 @@ msgstr "" "- RMB -> Rechte Maustaste" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:356 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:226 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:240 msgid "MMB" msgstr "MMB" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:357 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:227 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:241 msgid "RMB" msgstr "RMB" @@ -8500,12 +9381,12 @@ msgid "Select the key used for multiple selection." msgstr "Wählen Sie den Schlüssel für die Mehrfachauswahl aus." #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:367 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:233 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:247 msgid "CTRL" msgstr "STRG" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:368 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:234 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:248 msgid "SHIFT" msgstr "SHIFT" @@ -8524,11 +9405,24 @@ msgstr "" "löschen ausgelöst wird, entweder durch\n" "Menüverknüpfung oder Tastenkombination." -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:388 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:387 +#, fuzzy +#| msgid "Excellon Editor" +msgid "Allow Edit" +msgstr "Excellon Editor" + +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:389 +msgid "" +"When cheched, the user can edit the objects in the Project Tab\n" +"by using the left mouse button click on the object name.\n" +"Active after restart." +msgstr "" + +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:396 msgid "\"Open\" behavior" msgstr "\"Offen\" -Verhalten" -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:390 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:398 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" @@ -8545,11 +9439,11 @@ msgstr "" "Dateien zuletzt verwendet: entweder der Pfad\n" "Pfad zum Speichern von Dateien oder Pfad zum Öffnen von Dateien." -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:399 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:407 msgid "Enable ToolTips" msgstr "QuickInfos aktivieren" -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:401 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:409 msgid "" "Check this box if you want to have toolTips displayed\n" "when hovering with mouse over items throughout the App." @@ -8558,11 +9452,11 @@ msgstr "" "sollen\n" "wenn Sie mit der Maus über Elemente in der App fahren." -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:408 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:416 msgid "Allow Machinist Unsafe Settings" msgstr "Unsichere Maschineneinstellungen erlauben" -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:410 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:418 msgid "" "If checked, some of the application settings will be allowed\n" "to have values that are usually unsafe to use.\n" @@ -8577,11 +9471,11 @@ msgstr "" "Wird beim Nächsten Programmstart wirksam\n" " << ACHTUNG>>: Ändern Sie das nicht, wenn Sie nicht wissen was Sie tun!" -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:422 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:430 msgid "Bookmarks limit" msgstr "Lesezeichenlimit" -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:424 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:432 msgid "" "The maximum number of bookmarks that may be installed in the menu.\n" "The number of bookmarks in the bookmark manager may be greater\n" @@ -8591,11 +9485,11 @@ msgstr "" "Die Anzahl der Lesezeichen im Lesezeichen-Manager ist möglicherweise größer\n" "Aber das Menü wird nur so viel enthalten." -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:433 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:441 msgid "Activity Icon" msgstr "Aktivitätssymbol" -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:435 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:443 msgid "Select the GIF that show activity when FlatCAM is active." msgstr "" "Wählen Sie das GIF aus, das die Aktivität anzeigt, wenn FlatCAM aktiv ist." @@ -8680,7 +9574,9 @@ msgid "OpenGL(3D)" msgstr "OpenGL (3D)" #: appGUI/preferences/general/GeneralAppPrefGroupUI.py:98 -msgid "APP. LEVEL" +#, fuzzy +#| msgid "APP. LEVEL" +msgid "APPLICATION LEVEL" msgstr "Darstellung" #: appGUI/preferences/general/GeneralAppPrefGroupUI.py:99 @@ -8700,8 +9596,9 @@ msgstr "" "Die Registerkarte Ausgewählt für alle Arten von FlatCAM-Objekten." #: appGUI/preferences/general/GeneralAppPrefGroupUI.py:105 -#: appObjects/FlatCAMExcellon.py:707 appObjects/FlatCAMGeometry.py:589 -#: appObjects/FlatCAMGerber.py:231 appTools/ToolIsolation.py:837 +#: appObjects/FlatCAMExcellon.py:163 appObjects/FlatCAMGeometry.py:581 +#: appObjects/FlatCAMGerber.py:175 appTools/ToolDrilling.py:309 +#: appTools/ToolIsolation.py:268 appTools/ToolMilling.py:305 msgid "Advanced" msgstr "Erweitert" @@ -9028,7 +9925,9 @@ msgstr "" "Es wird beim nächsten App-Start angewendet." #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:111 -msgid "Activate HDPI Support" +#, fuzzy +#| msgid "Activate HDPI Support" +msgid "HDPI Support" msgstr "Aktivieren Sie die HDPI-Unterstützung" #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:113 @@ -9040,8 +9939,10 @@ msgstr "" "Es wird beim nächsten App-Start angewendet." #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:127 -msgid "Display Hover Shape" -msgstr "Schwebeflugform anzeigen" +#, fuzzy +#| msgid "Convex Shape" +msgid "Hover Shape" +msgstr "Konvexe Form" #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:129 msgid "" @@ -9054,7 +9955,9 @@ msgstr "" "über jede Art von nicht ausgewähltem Objekt." #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:136 -msgid "Display Selection Shape" +#, fuzzy +#| msgid "Display Selection Shape" +msgid "Selection Shape" msgstr "Auswahlform anzeigen" #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:138 @@ -9195,10 +10098,15 @@ msgstr "" #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:46 #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:112 #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:134 -#: appTools/ToolCalibration.py:125 appTools/ToolSolderPaste.py:236 +#: appTools/ToolCalibration.py:820 appTools/ToolSolderPaste.py:1312 msgid "Toolchange X-Y" msgstr "Werkzeugwechsel X, Y" +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:48 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:298 +msgid "Toolchange X,Y position." +msgstr "Werkzeugwechsel X, Y Position." + #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:58 msgid "" "Height of the tool just after starting the work.\n" @@ -9207,6 +10115,42 @@ msgstr "" "Höhe des Werkzeugs unmittelbar nach Beginn der Arbeit.\n" "Löschen Sie den Wert, wenn Sie diese Funktion nicht benötigen." +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:137 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:358 +msgid "Spindle direction" +msgstr "Drehrichtung" + +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:139 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:360 +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" + +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:151 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:371 +msgid "Fast Plunge" +msgstr "Schneller Sprung" + +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:153 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:373 +msgid "" +"By checking this, the vertical move from\n" +"Z_Toolchange to Z_move is done with G0,\n" +"meaning the fastest speed available.\n" +"WARNING: the move is done at Toolchange X,Y coords." +msgstr "" +"Wenn Sie dies überprüfen, bewegen Sie sich vertikal\n" +"Z_Toolchange zu Z_move erfolgt mit G0,\n" +"Das bedeutet die schnellste verfügbare Geschwindigkeit.\n" +"WARNUNG: Die Verschiebung erfolgt bei Toolchange X, Y-Koordinaten." + #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:161 msgid "Segment X size" msgstr "Segment X Größe" @@ -9253,19 +10197,6 @@ msgstr "" msgid "Exclusion areas" msgstr "Ausschlussbereiche" -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:220 -#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:293 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:322 -#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:286 -#: appTools/ToolIsolation.py:561 appTools/ToolNCC.py:578 -#: appTools/ToolPaint.py:521 -msgid "Shape" -msgstr "Form" - -#: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:33 -msgid "A list of Geometry Editor parameters." -msgstr "Eine Liste der Geometry Editor-Parameter." - #: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:43 #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:174 msgid "" @@ -9292,11 +10223,11 @@ msgstr "" "Werkzeugverbrauchs\n" "- konventionell / nützlich, wenn kein Spielausgleich vorliegt" -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:27 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:29 msgid "Geometry General" msgstr "Geometrie Allgemein" -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:59 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:61 msgid "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." @@ -9304,7 +10235,7 @@ msgstr "" "Die Anzahl der Kreisschritte für die Geometrie\n" "Kreis- und Bogenformen lineare Annäherung." -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:73 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:75 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:41 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:41 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:48 @@ -9312,7 +10243,7 @@ msgstr "" msgid "Tools Dia" msgstr "Werkzeugdurchmesser" -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:75 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:77 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:108 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:43 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:43 @@ -9327,6 +10258,48 @@ msgstr "" "Der Wert des Durchmessers muss das Punkt-Dezimal-Trennzeichen verwenden.\n" "Gültige Werte: 0.3, 1.0" +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:96 +#, fuzzy +#| msgid "" +#| "This sets the optimization type for the Excellon drill path.\n" +#| "If <> is checked then Google OR-Tools algorithm with\n" +#| "MetaHeuristic Guided Local Path is used. Default search time is 3sec.\n" +#| "If <> is checked then Google OR-Tools Basic algorithm is used.\n" +#| "If <> is checked then Travelling Salesman algorithm is used for\n" +#| "drill path optimization.\n" +#| "\n" +#| "If this control is disabled, then FlatCAM works in 32bit mode and it " +#| "uses\n" +#| "Travelling Salesman algorithm for path optimization." +msgid "" +"This sets the path optimization algorithm.\n" +"- Rtre -> Rtree algorithm\n" +"- MetaHeuristic -> Google OR-Tools algorithm with\n" +"MetaHeuristic Guided Local Path is used. Default search time is 3sec.\n" +"- Basic -> Using Google OR-Tools Basic algorithm\n" +"- TSA -> Using Travelling Salesman algorithm\n" +"\n" +"Some options are disabled when FlatCAM works in 32bit mode." +msgstr "" +"Hiermit wird der Optimierungstyp für den Excellon-Bohrpfad festgelegt.\n" +"Wenn << MetaHeuristic >> aktiviert ist, verwenden Sie den Google OR-Tools-" +"Algorithmus\n" +"Es wird ein metaHeuristisch geführter lokaler Pfad verwendet. Die " +"Standardsuchzeit beträgt 3 Sekunden.\n" +"Wenn << Basic >> aktiviert ist, wird der Google OR-Tools Basic-Algorithmus " +"verwendet.\n" +"Wenn << TSA >> markiert ist, wird der Traveling Salesman-Algorithmus für " +"verwendet\n" +"Bohrpfadoptimierung.\n" +"\n" +"Wenn dieses Steuerelement deaktiviert ist, arbeitet FlatCAM im 32-Bit-Modus " +"und verwendet\n" +"Travelling Salesman-Algorithmus zur Pfadoptimierung." + +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:108 +msgid "Rtree" +msgstr "" + #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:29 msgid "Geometry Options" msgstr "Geometrieoptionen" @@ -9359,6 +10332,17 @@ msgstr "" "es ist ein Bruch aus der Tiefe\n" "was einen negativen Wert hat." +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:122 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:116 +#: appTools/ToolDrilling.py:2371 +msgid "Tool change" +msgstr "Werkzeugwechsel" + +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:233 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:200 +msgid "Enable Dwell" +msgstr "Verweilzeit aktivieren" + #: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:27 msgid "Gerber Adv. Options" msgstr "Erweiterte Optionen von Gerber" @@ -9377,31 +10361,18 @@ msgstr "" msgid "\"Follow\"" msgstr "\"Folgen\"" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:52 -msgid "Table Show/Hide" -msgstr "Tabelle anzeigen / ausblenden" - -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:54 -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 "" -"Anzeige der Gerber-Blendentabelle umschalten.\n" -"Beim Ausblenden werden auch alle Markierungsformen gelöscht\n" -"das sind auf leinwand gezeichnet." - -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:67 -#: appObjects/FlatCAMGerber.py:406 appTools/ToolCopperThieving.py:1026 -#: appTools/ToolCopperThieving.py:1215 appTools/ToolCopperThieving.py:1227 -#: appTools/ToolIsolation.py:1626 appTools/ToolNCC.py:2079 -#: appTools/ToolNCC.py:2190 appTools/ToolNCC.py:2205 appTools/ToolNCC.py:3163 -#: appTools/ToolNCC.py:3268 appTools/ToolNCC.py:3283 appTools/ToolNCC.py:3549 -#: appTools/ToolNCC.py:3650 appTools/ToolNCC.py:3665 camlib.py:991 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:64 +#: appObjects/FlatCAMGerber.py:350 appTools/ToolCopperThieving.py:581 +#: appTools/ToolCopperThieving.py:770 appTools/ToolCopperThieving.py:782 +#: appTools/ToolIsolation.py:1318 appTools/ToolNCC.py:1743 +#: appTools/ToolNCC.py:1770 appTools/ToolNCC.py:1878 appTools/ToolNCC.py:1891 +#: appTools/ToolNCC.py:2737 appTools/ToolNCC.py:2842 appTools/ToolNCC.py:2857 +#: appTools/ToolNCC.py:3123 appTools/ToolNCC.py:3224 appTools/ToolNCC.py:3239 +#: camlib.py:1062 msgid "Buffering" msgstr "Pufferung" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:69 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:66 msgid "" "Buffering type:\n" "- None --> best performance, fast file loading but no so good display\n" @@ -9415,30 +10386,31 @@ msgstr "" "Standardeinstellung.\n" "<< WARNUNG >>: Ändern Sie dies nur, wenn Sie wissen, was Sie tun !!!" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:74 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:71 #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:88 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:196 -#: appTools/ToolFiducials.py:204 appTools/ToolFilm.py:238 -#: appTools/ToolProperties.py:452 appTools/ToolProperties.py:455 -#: appTools/ToolProperties.py:458 appTools/ToolProperties.py:483 +#: appTools/ToolFiducials.py:815 appTools/ToolFilm.py:955 +#: appTools/ToolProperties.py:453 appTools/ToolProperties.py:456 +#: appTools/ToolProperties.py:459 appTools/ToolProperties.py:487 +#: appTools/ToolProperties.py:494 appTools/ToolProperties.py:497 msgid "None" msgstr "Keiner" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:80 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:77 msgid "Delayed Buffering" msgstr "Verzögerte Pufferung" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:82 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:79 msgid "When checked it will do the buffering in background." msgstr "" "Wenn diese Option aktiviert ist, wird die Pufferung im Hintergrund " "ausgeführt." -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:87 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:84 msgid "Simplify" msgstr "Vereinfachen" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:89 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:86 msgid "" "When checked all the Gerber polygons will be\n" "loaded with simplification having a set tolerance.\n" @@ -9448,11 +10420,11 @@ msgstr "" "geladen mit Vereinfachung mit einer festgelegten Toleranz.\n" "<< WARNUNG >>: Ändern Sie dies nur, wenn Sie wissen, was Sie tun !!!" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:96 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:93 msgid "Tolerance" msgstr "Toleranz" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:97 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:94 msgid "Tolerance for polygon simplification." msgstr "Toleranz für Polygonvereinfachung." @@ -9650,10 +10622,45 @@ msgstr "" "Kann helfen, Gerber-Dateien zu laden, die sonst\n" "nicht richtig laden." +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:144 +#, fuzzy +#| msgid "Set Color" +msgid "Store colors" +msgstr "Farbsatz" + +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:146 +msgid "" +"It will store the set colors for Gerber objects.\n" +"Those will be used each time the application is started." +msgstr "" + +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:152 +#, fuzzy +#| msgid "Clear Plot" +msgid "Clear Colors" +msgstr "Plot klar löschen" + +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:155 +#, fuzzy +#| msgid "Set the color for plotted objects." +msgid "Reset the colors associated with Gerber objects." +msgstr "Legen Sie die Farbe für geplottete Objekte fest." + +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:229 +#, fuzzy +#| msgid "There is no Gerber object loaded ..." +msgid "Stored colors for Gerber objects are deleted." +msgstr "Es ist kein Gerber-Objekt geladen ..." + #: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:29 msgid "Gerber Options" msgstr "Gerber-Optionen" +#: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:61 +#: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:92 +msgid "Rounded Geo" +msgstr "Abgerundete Geo" + # Don´t know Copper Thieving #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:27 msgid "Copper Thieving Tool Options" @@ -9673,7 +10680,7 @@ msgstr "Anzahl der Schritte (Linien) um Kreise zu interpolieren." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:57 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:261 -#: appTools/ToolCopperThieving.py:100 appTools/ToolCopperThieving.py:435 +#: appTools/ToolCopperThieving.py:1189 appTools/ToolCopperThieving.py:1524 msgid "Clearance" msgstr "Freistellung" @@ -9691,10 +10698,10 @@ msgstr "" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:86 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:309 -#: appTools/ToolCopperThieving.py:129 appTools/ToolNCC.py:535 -#: appTools/ToolNCC.py:1324 appTools/ToolNCC.py:1655 appTools/ToolNCC.py:1948 -#: appTools/ToolNCC.py:2012 appTools/ToolNCC.py:3027 appTools/ToolNCC.py:3036 -#: defaults.py:422 tclCommands/TclCommandCopperClear.py:190 +#: appTools/ToolCopperThieving.py:1218 appTools/ToolNCC.py:1301 +#: appTools/ToolNCC.py:1617 appTools/ToolNCC.py:1681 appTools/ToolNCC.py:2601 +#: appTools/ToolNCC.py:2610 appTools/ToolNCC.py:4186 appTools/ToolNCC.py:4312 +#: defaults.py:468 tclCommands/TclCommandCopperClear.py:190 msgid "Itself" msgstr "Selbst" @@ -9702,11 +10709,11 @@ msgstr "Selbst" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:285 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:309 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:280 -#: appTools/ToolCopperThieving.py:130 appTools/ToolIsolation.py:514 -#: appTools/ToolIsolation.py:1323 appTools/ToolIsolation.py:1705 -#: appTools/ToolNCC.py:535 appTools/ToolNCC.py:1334 appTools/ToolNCC.py:1668 -#: appTools/ToolNCC.py:1964 appTools/ToolNCC.py:2019 appTools/ToolPaint.py:485 -#: appTools/ToolPaint.py:945 appTools/ToolPaint.py:1471 +#: appTools/ToolCopperThieving.py:1219 appTools/ToolIsolation.py:813 +#: appTools/ToolIsolation.py:1397 appTools/ToolIsolation.py:3323 +#: appTools/ToolNCC.py:1315 appTools/ToolNCC.py:1633 appTools/ToolNCC.py:1688 +#: appTools/ToolNCC.py:4186 appTools/ToolNCC.py:4322 appTools/ToolPaint.py:1060 +#: appTools/ToolPaint.py:3125 appTools/ToolPaint.py:3247 msgid "Area Selection" msgstr "Bereichsauswahl" @@ -9714,18 +10721,18 @@ msgstr "Bereichsauswahl" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:285 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:309 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:280 -#: appTools/ToolCopperThieving.py:131 appTools/ToolDblSided.py:216 -#: appTools/ToolIsolation.py:514 appTools/ToolIsolation.py:1745 -#: appTools/ToolNCC.py:535 appTools/ToolNCC.py:1684 appTools/ToolNCC.py:1970 -#: appTools/ToolNCC.py:2027 appTools/ToolNCC.py:2408 appTools/ToolNCC.py:2656 -#: appTools/ToolNCC.py:3072 appTools/ToolPaint.py:485 appTools/ToolPaint.py:930 -#: appTools/ToolPaint.py:1487 tclCommands/TclCommandCopperClear.py:192 -#: tclCommands/TclCommandPaint.py:166 +#: appTools/ToolCopperThieving.py:1220 appTools/ToolDblSided.py:764 +#: appTools/ToolIsolation.py:1437 appTools/ToolIsolation.py:3323 +#: appTools/ToolNCC.py:1334 appTools/ToolNCC.py:1639 appTools/ToolNCC.py:1696 +#: appTools/ToolNCC.py:2074 appTools/ToolNCC.py:2308 appTools/ToolNCC.py:2646 +#: appTools/ToolNCC.py:4186 appTools/ToolPaint.py:1079 +#: appTools/ToolPaint.py:3125 appTools/ToolPaint.py:3230 +#: tclCommands/TclCommandCopperClear.py:192 tclCommands/TclCommandPaint.py:166 msgid "Reference Object" msgstr "Ref. Objekt" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:90 -#: appTools/ToolCopperThieving.py:133 +#: appTools/ToolCopperThieving.py:1222 msgid "Reference:" msgstr "Referenz:" @@ -9748,25 +10755,25 @@ msgstr "" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:188 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:76 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:190 -#: appTools/ToolCopperThieving.py:175 appTools/ToolExtractDrills.py:102 -#: appTools/ToolExtractDrills.py:240 appTools/ToolPunchGerber.py:113 -#: appTools/ToolPunchGerber.py:268 +#: appTools/ToolCopperThieving.py:1264 appTools/ToolExtractDrills.py:494 +#: appTools/ToolExtractDrills.py:632 appTools/ToolPunchGerber.py:767 +#: appTools/ToolPunchGerber.py:922 msgid "Rectangular" msgstr "Rechteckig" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:102 -#: appTools/ToolCopperThieving.py:176 +#: appTools/ToolCopperThieving.py:1265 msgid "Minimal" msgstr "Minimal" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:104 -#: appTools/ToolCopperThieving.py:178 appTools/ToolFilm.py:94 +#: appTools/ToolCopperThieving.py:1267 appTools/ToolFilm.py:807 msgid "Box Type:" msgstr "Box-Typ:" # Double #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:106 -#: appTools/ToolCopperThieving.py:180 +#: appTools/ToolCopperThieving.py:1269 msgid "" "- 'Rectangular' - the bounding box will be of rectangular shape.\n" "- 'Minimal' - the bounding box will be the convex hull shape." @@ -9775,28 +10782,28 @@ msgstr "" "- 'Minimal' - Der Begrenzungsrahmen ist die konvexe Rumpfform." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:120 -#: appTools/ToolCopperThieving.py:196 +#: appTools/ToolCopperThieving.py:1285 msgid "Dots Grid" msgstr "Punktmuster" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:121 -#: appTools/ToolCopperThieving.py:197 +#: appTools/ToolCopperThieving.py:1286 msgid "Squares Grid" msgstr "Quadratraster" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:122 -#: appTools/ToolCopperThieving.py:198 +#: appTools/ToolCopperThieving.py:1287 msgid "Lines Grid" msgstr "Linienraster" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:124 -#: appTools/ToolCopperThieving.py:200 +#: appTools/ToolCopperThieving.py:1289 msgid "Fill Type:" msgstr "Füllart:" # Double #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:126 -#: appTools/ToolCopperThieving.py:202 +#: appTools/ToolCopperThieving.py:1291 msgid "" "- 'Solid' - copper thieving will be a solid polygon.\n" "- 'Dots Grid' - the empty area will be filled with a pattern of dots.\n" @@ -9810,66 +10817,58 @@ msgstr "" "- 'Linienraster' - Der leere Bereich wird mit einem Linienmuster gefüllt." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:134 -#: appTools/ToolCopperThieving.py:221 +#: appTools/ToolCopperThieving.py:1310 msgid "Dots Grid Parameters" msgstr "Punktmuster Parameter" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:140 -#: appTools/ToolCopperThieving.py:227 +#: appTools/ToolCopperThieving.py:1316 msgid "Dot diameter in Dots Grid." msgstr "Punktdurchmesser im Punktmuster." -#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:151 -#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:180 -#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:209 -#: appTools/ToolCopperThieving.py:238 appTools/ToolCopperThieving.py:278 -#: appTools/ToolCopperThieving.py:318 -msgid "Spacing" -msgstr "Abstand" - #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:153 -#: appTools/ToolCopperThieving.py:240 +#: appTools/ToolCopperThieving.py:1329 msgid "Distance between each two dots in Dots Grid." msgstr "Abstand zwischen zwei Punkten im Punktmuster." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:163 -#: appTools/ToolCopperThieving.py:261 +#: appTools/ToolCopperThieving.py:1350 msgid "Squares Grid Parameters" msgstr "Quadratraster Parameter" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:169 -#: appTools/ToolCopperThieving.py:267 +#: appTools/ToolCopperThieving.py:1356 msgid "Square side size in Squares Grid." msgstr "Quadratlängen im Quadratraster." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:182 -#: appTools/ToolCopperThieving.py:280 +#: appTools/ToolCopperThieving.py:1369 msgid "Distance between each two squares in Squares Grid." msgstr "Abstand zwischen zwei Quadraten im Quadratraster." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:192 -#: appTools/ToolCopperThieving.py:301 +#: appTools/ToolCopperThieving.py:1390 msgid "Lines Grid Parameters" msgstr "Schraffurparameter" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:198 -#: appTools/ToolCopperThieving.py:307 +#: appTools/ToolCopperThieving.py:1396 msgid "Line thickness size in Lines Grid." msgstr "Liniendicke." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:211 -#: appTools/ToolCopperThieving.py:320 +#: appTools/ToolCopperThieving.py:1409 msgid "Distance between each two lines in Lines Grid." msgstr "Linienabstand." # What is a Robber Bar? #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:221 -#: appTools/ToolCopperThieving.py:358 +#: appTools/ToolCopperThieving.py:1447 msgid "Robber Bar Parameters" msgstr "Robber Bar-Parameter" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:223 -#: appTools/ToolCopperThieving.py:360 +#: appTools/ToolCopperThieving.py:1449 msgid "" "Parameters used for the robber bar.\n" "Robber bar = copper border to help in pattern hole plating." @@ -9878,35 +10877,35 @@ msgstr "" "Eine Robber Bar ist ein Kupferrand bei Lochmustern." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:231 -#: appTools/ToolCopperThieving.py:368 +#: appTools/ToolCopperThieving.py:1457 msgid "Bounding box margin for robber bar." msgstr "Begrenzungsrahmenrand der Robber Bar." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:242 #: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:42 -#: appTools/ToolCopperThieving.py:379 appTools/ToolCorners.py:122 -#: appTools/ToolEtchCompensation.py:152 +#: appTools/ToolCopperThieving.py:1468 appTools/ToolCorners.py:384 +#: appTools/ToolEtchCompensation.py:370 msgid "Thickness" msgstr "Dicke" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:244 -#: appTools/ToolCopperThieving.py:381 +#: appTools/ToolCopperThieving.py:1470 msgid "The robber bar thickness." msgstr "Dicke der Robber Bar." # What is pattern plating? #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:254 -#: appTools/ToolCopperThieving.py:412 +#: appTools/ToolCopperThieving.py:1501 msgid "Pattern Plating Mask" msgstr "Musterbeschichtungsmaske" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:256 -#: appTools/ToolCopperThieving.py:414 +#: appTools/ToolCopperThieving.py:1503 msgid "Generate a mask for pattern plating." msgstr "Erzeugen Sie eine Maske für die Musterbeschichtung." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:263 -#: appTools/ToolCopperThieving.py:437 +#: appTools/ToolCopperThieving.py:1526 msgid "" "The distance between the possible copper thieving elements\n" "and/or robber bar and the actual openings in the mask." @@ -9923,18 +10922,18 @@ msgstr "Kalibirierungs-Tool-Optionen" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:38 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:38 #: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:37 -#: appTools/ToolCopperThieving.py:95 appTools/ToolCorners.py:117 -#: appTools/ToolFiducials.py:154 +#: appTools/ToolCopperThieving.py:1184 appTools/ToolCorners.py:379 +#: appTools/ToolFiducials.py:765 msgid "Parameters used for this tool." msgstr "Parameter für dieses Werkzeug." #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:43 -#: appTools/ToolCalibration.py:181 +#: appTools/ToolCalibration.py:876 msgid "Source Type" msgstr "Quellenart" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:44 -#: appTools/ToolCalibration.py:182 +#: appTools/ToolCalibration.py:877 msgid "" "The source of calibration points.\n" "It can be:\n" @@ -9948,32 +10947,32 @@ msgstr "" "setzen" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:49 -#: appTools/ToolCalibration.py:187 +#: appTools/ToolCalibration.py:882 msgid "Free" msgstr "Frei" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:63 -#: appTools/ToolCalibration.py:76 +#: appTools/ToolCalibration.py:771 msgid "Height (Z) for travelling between the points." msgstr "Die Höhe (Z) für den Weg zwischen Pads." #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:75 -#: appTools/ToolCalibration.py:88 +#: appTools/ToolCalibration.py:783 msgid "Verification Z" msgstr "Z Überprüfung" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:77 -#: appTools/ToolCalibration.py:90 +#: appTools/ToolCalibration.py:785 msgid "Height (Z) for checking the point." msgstr "Höhe (Z) um den Punkt zu prüfen." #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:89 -#: appTools/ToolCalibration.py:102 +#: appTools/ToolCalibration.py:797 msgid "Zero Z tool" msgstr "Z Höhen Werkzeug" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:91 -#: appTools/ToolCalibration.py:104 +#: appTools/ToolCalibration.py:799 msgid "" "Include a sequence to zero the height (Z)\n" "of the verification tool." @@ -9982,12 +10981,12 @@ msgstr "" "des Überprüfungswerkzeugs zu nullen." #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:100 -#: appTools/ToolCalibration.py:113 +#: appTools/ToolCalibration.py:808 msgid "Height (Z) for mounting the verification probe." msgstr "Höhe (Z) zur Installation der Überprüfungssonde." #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:114 -#: appTools/ToolCalibration.py:127 +#: appTools/ToolCalibration.py:822 msgid "" "Toolchange X,Y position.\n" "If no value is entered then the current\n" @@ -9998,12 +10997,12 @@ msgstr "" "(x, y) Punkt wird verwendet," #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:125 -#: appTools/ToolCalibration.py:153 +#: appTools/ToolCalibration.py:848 msgid "Second point" msgstr "Zweiter Punkt" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:127 -#: appTools/ToolCalibration.py:155 +#: appTools/ToolCalibration.py:850 msgid "" "Second point in the Gcode verification can be:\n" "- top-left -> the user will align the PCB vertically\n" @@ -10014,12 +11013,12 @@ msgstr "" "- rechts unten -> Der Benutzer richtet die Leiterplatte horizontal aus" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:131 -#: appTools/ToolCalibration.py:159 app_Main.py:4835 +#: appTools/ToolCalibration.py:854 app_Main.py:4990 msgid "Top-Left" msgstr "Oben links" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:132 -#: appTools/ToolCalibration.py:160 app_Main.py:4836 +#: appTools/ToolCalibration.py:855 app_Main.py:4991 msgid "Bottom-Right" msgstr "Unten rechts" @@ -10029,13 +11028,13 @@ msgstr "Optionen für Bohrer extrahieren" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:42 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:42 -#: appTools/ToolExtractDrills.py:68 appTools/ToolPunchGerber.py:75 +#: appTools/ToolExtractDrills.py:460 appTools/ToolPunchGerber.py:729 msgid "Processed Pads Type" msgstr "Verarbeitete Pads Typ" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:44 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:44 -#: appTools/ToolExtractDrills.py:70 appTools/ToolPunchGerber.py:77 +#: appTools/ToolExtractDrills.py:462 appTools/ToolPunchGerber.py:731 msgid "" "The type of pads shape to be processed.\n" "If the PCB has many SMD pads with rectangular pads,\n" @@ -10047,7 +11046,7 @@ msgstr "" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:54 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:54 -#: appTools/ToolExtractDrills.py:80 appTools/ToolPunchGerber.py:91 +#: appTools/ToolExtractDrills.py:472 appTools/ToolPunchGerber.py:745 msgid "Process Circular Pads." msgstr "Prozessrunde Pads." @@ -10055,26 +11054,26 @@ msgstr "Prozessrunde Pads." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:162 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:60 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:164 -#: appTools/ToolExtractDrills.py:86 appTools/ToolExtractDrills.py:214 -#: appTools/ToolPunchGerber.py:97 appTools/ToolPunchGerber.py:242 +#: appTools/ToolExtractDrills.py:478 appTools/ToolExtractDrills.py:606 +#: appTools/ToolPunchGerber.py:751 appTools/ToolPunchGerber.py:896 msgid "Oblong" msgstr "Länglich" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:62 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:62 -#: appTools/ToolExtractDrills.py:88 appTools/ToolPunchGerber.py:99 +#: appTools/ToolExtractDrills.py:480 appTools/ToolPunchGerber.py:753 msgid "Process Oblong Pads." msgstr "Längliche Pads verarbeiten." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:70 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:70 -#: appTools/ToolExtractDrills.py:96 appTools/ToolPunchGerber.py:107 +#: appTools/ToolExtractDrills.py:488 appTools/ToolPunchGerber.py:761 msgid "Process Square Pads." msgstr "Quadratische Pads verarbeiten." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:78 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:78 -#: appTools/ToolExtractDrills.py:104 appTools/ToolPunchGerber.py:115 +#: appTools/ToolExtractDrills.py:496 appTools/ToolPunchGerber.py:769 msgid "Process Rectangular Pads." msgstr "Rechteckige Pads verarbeiten." @@ -10082,15 +11081,15 @@ msgstr "Rechteckige Pads verarbeiten." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:201 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:84 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:203 -#: appTools/ToolExtractDrills.py:110 appTools/ToolExtractDrills.py:253 -#: appTools/ToolProperties.py:172 appTools/ToolPunchGerber.py:121 -#: appTools/ToolPunchGerber.py:281 +#: appTools/ToolExtractDrills.py:502 appTools/ToolExtractDrills.py:645 +#: appTools/ToolProperties.py:175 appTools/ToolPunchGerber.py:775 +#: appTools/ToolPunchGerber.py:935 msgid "Others" msgstr "Andere" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:86 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:86 -#: appTools/ToolExtractDrills.py:112 appTools/ToolPunchGerber.py:123 +#: appTools/ToolExtractDrills.py:504 appTools/ToolPunchGerber.py:777 msgid "Process pads not in the categories above." msgstr "Prozess-Pads nicht in den oben genannten Kategorien." @@ -10098,8 +11097,8 @@ msgstr "Prozess-Pads nicht in den oben genannten Kategorien." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:123 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:100 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:125 -#: appTools/ToolExtractDrills.py:139 appTools/ToolExtractDrills.py:156 -#: appTools/ToolPunchGerber.py:150 appTools/ToolPunchGerber.py:184 +#: appTools/ToolExtractDrills.py:531 appTools/ToolExtractDrills.py:548 +#: appTools/ToolPunchGerber.py:804 appTools/ToolPunchGerber.py:838 msgid "Fixed Diameter" msgstr "Fester Durchmesser" @@ -10107,19 +11106,19 @@ msgstr "Fester Durchmesser" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:140 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:101 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:142 -#: appTools/ToolExtractDrills.py:140 appTools/ToolExtractDrills.py:192 -#: appTools/ToolPunchGerber.py:151 appTools/ToolPunchGerber.py:214 +#: appTools/ToolExtractDrills.py:532 appTools/ToolExtractDrills.py:584 +#: appTools/ToolPunchGerber.py:805 appTools/ToolPunchGerber.py:868 msgid "Fixed Annular Ring" msgstr "Fester Ring" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:101 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:102 -#: appTools/ToolExtractDrills.py:141 appTools/ToolPunchGerber.py:152 +#: appTools/ToolExtractDrills.py:533 appTools/ToolPunchGerber.py:806 msgid "Proportional" msgstr "Proportional" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:107 -#: appTools/ToolExtractDrills.py:130 +#: appTools/ToolExtractDrills.py:522 msgid "" "The method for processing pads. Can be:\n" "- Fixed Diameter -> all holes will have a set size\n" @@ -10133,13 +11132,13 @@ msgstr "" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:133 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:135 -#: appTools/ToolExtractDrills.py:166 appTools/ToolPunchGerber.py:194 +#: appTools/ToolExtractDrills.py:558 appTools/ToolPunchGerber.py:848 msgid "Fixed hole diameter." msgstr "Fester Lochdurchmesser." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:142 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:144 -#: appTools/ToolExtractDrills.py:194 appTools/ToolPunchGerber.py:216 +#: appTools/ToolExtractDrills.py:586 appTools/ToolPunchGerber.py:870 msgid "" "The size of annular ring.\n" "The copper sliver between the hole exterior\n" @@ -10151,37 +11150,37 @@ msgstr "" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:151 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:153 -#: appTools/ToolExtractDrills.py:203 appTools/ToolPunchGerber.py:231 +#: appTools/ToolExtractDrills.py:595 appTools/ToolPunchGerber.py:885 msgid "The size of annular ring for circular pads." msgstr "Die Größe des Ringes für kreisförmige Pads." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:164 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:166 -#: appTools/ToolExtractDrills.py:216 appTools/ToolPunchGerber.py:244 +#: appTools/ToolExtractDrills.py:608 appTools/ToolPunchGerber.py:898 msgid "The size of annular ring for oblong pads." msgstr "Die Größe des Ringes für längliche Pads." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:177 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:179 -#: appTools/ToolExtractDrills.py:229 appTools/ToolPunchGerber.py:257 +#: appTools/ToolExtractDrills.py:621 appTools/ToolPunchGerber.py:911 msgid "The size of annular ring for square pads." msgstr "Die Größe des Ringes für quadratische Pads." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:190 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:192 -#: appTools/ToolExtractDrills.py:242 appTools/ToolPunchGerber.py:270 +#: appTools/ToolExtractDrills.py:634 appTools/ToolPunchGerber.py:924 msgid "The size of annular ring for rectangular pads." msgstr "Die Größe des Ringes für rechteckige Pads." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:203 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:205 -#: appTools/ToolExtractDrills.py:255 appTools/ToolPunchGerber.py:283 +#: appTools/ToolExtractDrills.py:647 appTools/ToolPunchGerber.py:937 msgid "The size of annular ring for other pads." msgstr "Die Größe des Ringes für andere Pads." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:213 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:215 -#: appTools/ToolExtractDrills.py:276 appTools/ToolPunchGerber.py:299 +#: appTools/ToolExtractDrills.py:668 appTools/ToolPunchGerber.py:953 msgid "Proportional Diameter" msgstr "Proportionaler Durchmesser" @@ -10192,7 +11191,7 @@ msgstr "Faktor" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:224 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:226 -#: appTools/ToolExtractDrills.py:287 appTools/ToolPunchGerber.py:310 +#: appTools/ToolExtractDrills.py:679 appTools/ToolPunchGerber.py:964 msgid "" "Proportional Diameter.\n" "The hole diameter will be a fraction of the pad size." @@ -10206,7 +11205,7 @@ msgid "Fiducials Tool Options" msgstr "Passermarken-Werkzeugoptionen" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:45 -#: appTools/ToolFiducials.py:161 +#: appTools/ToolFiducials.py:772 msgid "" "This set the fiducial diameter if fiducial type is circular,\n" "otherwise is the size of the fiducial.\n" @@ -10217,17 +11216,12 @@ msgstr "" "Der Ausschnitt der Lötmaske ist doppelt so groß." #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:73 -#: appTools/ToolFiducials.py:189 +#: appTools/ToolFiducials.py:800 msgid "Auto" msgstr "Auto" -#: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:74 -#: appTools/ToolFiducials.py:190 -msgid "Manual" -msgstr "Manuell" - #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:76 -#: appTools/ToolFiducials.py:192 +#: appTools/ToolFiducials.py:803 msgid "Mode:" msgstr "Modus:" @@ -10242,22 +11236,22 @@ msgstr "" "- \"Manuell\" Die Bezugspunkte werden manuell platziert." #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:86 -#: appTools/ToolFiducials.py:202 +#: appTools/ToolFiducials.py:813 msgid "Up" msgstr "Hoch" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:87 -#: appTools/ToolFiducials.py:203 +#: appTools/ToolFiducials.py:814 msgid "Down" msgstr "Runter" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:90 -#: appTools/ToolFiducials.py:206 +#: appTools/ToolFiducials.py:817 msgid "Second fiducial" msgstr "Zweiter Bezugspunkt" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:92 -#: appTools/ToolFiducials.py:208 +#: appTools/ToolFiducials.py:819 msgid "" "The position for the second fiducial.\n" "- 'Up' - the order is: bottom-left, top-left, top-right.\n" @@ -10271,22 +11265,22 @@ msgstr "" "Links, Oben-Rechts." #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:108 -#: appTools/ToolFiducials.py:224 +#: appTools/ToolFiducials.py:835 msgid "Cross" msgstr "Kreuzförmig" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:109 -#: appTools/ToolFiducials.py:225 +#: appTools/ToolFiducials.py:836 msgid "Chess" msgstr "Schachbrett" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:112 -#: appTools/ToolFiducials.py:227 +#: appTools/ToolFiducials.py:838 msgid "Fiducial Type" msgstr "Bezugspunktart" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:114 -#: appTools/ToolFiducials.py:229 +#: appTools/ToolFiducials.py:840 msgid "" "The type of fiducial.\n" "- 'Circular' - this is the regular fiducial.\n" @@ -10299,7 +11293,7 @@ msgstr "" "\"Schachbrett\" Schachbrettförmige Bezugspunkte." #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:123 -#: appTools/ToolFiducials.py:238 +#: appTools/ToolFiducials.py:849 msgid "Line thickness" msgstr "Liniendicke" @@ -10316,7 +11310,7 @@ msgstr "" "und umgekehrt." #: appGUI/preferences/tools/Tools2InvertPrefGroupUI.py:47 -#: appTools/ToolInvertGerber.py:93 +#: appTools/ToolInvertGerber.py:236 msgid "" "Distance by which to avoid\n" "the edges of the Gerber object." @@ -10325,12 +11319,12 @@ msgstr "" "die Kanten des Gerber-Objekts." #: appGUI/preferences/tools/Tools2InvertPrefGroupUI.py:58 -#: appTools/ToolInvertGerber.py:104 +#: appTools/ToolInvertGerber.py:247 msgid "Lines Join Style" msgstr "Linien verbinden Stil" #: appGUI/preferences/tools/Tools2InvertPrefGroupUI.py:60 -#: appTools/ToolInvertGerber.py:106 +#: appTools/ToolInvertGerber.py:249 msgid "" "The way that the lines in the object outline will be joined.\n" "Can be:\n" @@ -10357,7 +11351,7 @@ msgstr "" "jeweils zwei Gerber geometrische Elemente" #: appGUI/preferences/tools/Tools2OptimalPrefGroupUI.py:48 -#: appTools/ToolOptimal.py:84 +#: appTools/ToolOptimal.py:434 msgid "Precision" msgstr "Präzision" @@ -10372,7 +11366,7 @@ msgid "Punch Gerber Options" msgstr "Stanzen Sie die Gerber-Optionen" #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:108 -#: appTools/ToolPunchGerber.py:141 +#: appTools/ToolPunchGerber.py:795 msgid "" "The punch hole source can be:\n" "- Excellon Object-> the Excellon object drills center will serve as " @@ -10404,12 +11398,12 @@ msgstr "" "in Gerber Dateien einzufügen oder als Datei zu exportieren." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:45 -#: appTools/ToolQRCode.py:121 +#: appTools/ToolQRCode.py:699 msgid "Version" msgstr "Version" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:47 -#: appTools/ToolQRCode.py:123 +#: appTools/ToolQRCode.py:701 msgid "" "QRCode version can have values from 1 (21x21 boxes)\n" "to 40 (177x177 boxes)." @@ -10418,13 +11412,13 @@ msgstr "" " bis 40 (177x177 Quadrate) angegeben werden." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:58 -#: appTools/ToolQRCode.py:134 +#: appTools/ToolQRCode.py:712 msgid "Error correction" msgstr "Fehlerausgleich" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:60 #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:71 -#: appTools/ToolQRCode.py:136 appTools/ToolQRCode.py:147 +#: appTools/ToolQRCode.py:714 appTools/ToolQRCode.py:725 #, python-format msgid "" "Parameter that controls the error correction used for the QR Code.\n" @@ -10440,12 +11434,12 @@ msgstr "" "H : max. 30%% Fehler können ausgeglichen warden." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:81 -#: appTools/ToolQRCode.py:157 +#: appTools/ToolQRCode.py:735 msgid "Box Size" msgstr "Quadratgröße" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:83 -#: appTools/ToolQRCode.py:159 +#: appTools/ToolQRCode.py:737 msgid "" "Box size control the overall size of the QRcode\n" "by adjusting the size of each box in the code." @@ -10455,12 +11449,12 @@ msgstr "" "spezifiziert." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:94 -#: appTools/ToolQRCode.py:170 +#: appTools/ToolQRCode.py:748 msgid "Border Size" msgstr "Randdicke" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:96 -#: appTools/ToolQRCode.py:172 +#: appTools/ToolQRCode.py:750 msgid "" "Size of the QRCode border. How many boxes thick is the border.\n" "Default value is 4. The width of the clearance around the QRCode." @@ -10470,27 +11464,27 @@ msgstr "" "an." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:107 -#: appTools/ToolQRCode.py:92 +#: appTools/ToolQRCode.py:670 msgid "QRCode Data" msgstr "QRCode Daten" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:109 -#: appTools/ToolQRCode.py:94 +#: appTools/ToolQRCode.py:672 msgid "QRCode Data. Alphanumeric text to be encoded in the QRCode." msgstr "Beliebiger Text der in den QRCode umgerechnet werden soll." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:113 -#: appTools/ToolQRCode.py:98 +#: appTools/ToolQRCode.py:676 msgid "Add here the text to be included in the QRCode..." msgstr "Geben Sie hier den Text in Ihrem QRCode an." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:119 -#: appTools/ToolQRCode.py:183 +#: appTools/ToolQRCode.py:761 msgid "Polarity" msgstr "Polarität" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:121 -#: appTools/ToolQRCode.py:185 +#: appTools/ToolQRCode.py:763 msgid "" "Choose the polarity of the QRCode.\n" "It can be drawn in a negative way (squares are clear)\n" @@ -10501,17 +11495,17 @@ msgstr "" "oder Positiv (die Boxen sind undurchsichtig)." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:125 -#: appTools/ToolFilm.py:279 appTools/ToolQRCode.py:189 +#: appTools/ToolFilm.py:997 appTools/ToolQRCode.py:767 msgid "Negative" msgstr "Negativ" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:126 -#: appTools/ToolFilm.py:278 appTools/ToolQRCode.py:190 +#: appTools/ToolFilm.py:996 appTools/ToolQRCode.py:768 msgid "Positive" msgstr "Positiv" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:128 -#: appTools/ToolQRCode.py:192 +#: appTools/ToolQRCode.py:770 msgid "" "Choose the type of QRCode to be created.\n" "If added on a Silkscreen Gerber file the QRCode may\n" @@ -10525,7 +11519,7 @@ msgstr "" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:139 #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:145 -#: appTools/ToolQRCode.py:203 appTools/ToolQRCode.py:209 +#: appTools/ToolQRCode.py:781 appTools/ToolQRCode.py:787 msgid "" "The bounding box, meaning the empty space that surrounds\n" "the QRCode geometry, can have a rounded or a square shape." @@ -10534,22 +11528,22 @@ msgstr "" "kann abgerundete oder scharfe Ecken haben." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:152 -#: appTools/ToolQRCode.py:237 +#: appTools/ToolQRCode.py:815 msgid "Fill Color" msgstr "Boxfarbe" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:154 -#: appTools/ToolQRCode.py:239 +#: appTools/ToolQRCode.py:817 msgid "Set the QRCode fill color (squares color)." msgstr "Wählen Sie die Farbe der Boxen." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:162 -#: appTools/ToolQRCode.py:261 +#: appTools/ToolQRCode.py:839 msgid "Back Color" msgstr "Hintergrundfarbe" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:164 -#: appTools/ToolQRCode.py:263 +#: appTools/ToolQRCode.py:841 msgid "Set the QRCode background color." msgstr "Wählen Sie die Farbe im QRCode, die nicht von einer Box bedeckt ist." @@ -10567,12 +11561,12 @@ msgstr "" "von Herstellungsregeln." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:42 -#: appTools/ToolRulesCheck.py:265 appTools/ToolRulesCheck.py:929 +#: appTools/ToolRulesCheck.py:428 appTools/ToolRulesCheck.py:1367 msgid "Trace Size" msgstr "Spurengröße" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:44 -#: appTools/ToolRulesCheck.py:267 +#: appTools/ToolRulesCheck.py:1369 msgid "This checks if the minimum size for traces is met." msgstr "Hiermit wird überprüft, ob die Mindestgröße für Traces erfüllt ist." @@ -10586,27 +11580,27 @@ msgstr "Hiermit wird überprüft, ob die Mindestgröße für Traces erfüllt ist #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:194 #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:216 #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:236 -#: appTools/ToolRulesCheck.py:277 appTools/ToolRulesCheck.py:299 -#: appTools/ToolRulesCheck.py:322 appTools/ToolRulesCheck.py:345 -#: appTools/ToolRulesCheck.py:368 appTools/ToolRulesCheck.py:391 -#: appTools/ToolRulesCheck.py:414 appTools/ToolRulesCheck.py:437 -#: appTools/ToolRulesCheck.py:462 appTools/ToolRulesCheck.py:485 +#: appTools/ToolRulesCheck.py:1379 appTools/ToolRulesCheck.py:1401 +#: appTools/ToolRulesCheck.py:1424 appTools/ToolRulesCheck.py:1447 +#: appTools/ToolRulesCheck.py:1470 appTools/ToolRulesCheck.py:1493 +#: appTools/ToolRulesCheck.py:1516 appTools/ToolRulesCheck.py:1539 +#: appTools/ToolRulesCheck.py:1564 appTools/ToolRulesCheck.py:1587 msgid "Min value" msgstr "Min. Wert" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:56 -#: appTools/ToolRulesCheck.py:279 +#: appTools/ToolRulesCheck.py:1381 msgid "Minimum acceptable trace size." msgstr "Minimale akzeptable Trace-Größe." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:61 -#: appTools/ToolRulesCheck.py:286 appTools/ToolRulesCheck.py:1157 -#: appTools/ToolRulesCheck.py:1187 +#: appTools/ToolRulesCheck.py:656 appTools/ToolRulesCheck.py:686 +#: appTools/ToolRulesCheck.py:1388 msgid "Copper to Copper clearance" msgstr "Mininalabstand Kupfer zu Kupfer" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:63 -#: appTools/ToolRulesCheck.py:288 +#: appTools/ToolRulesCheck.py:1390 msgid "" "This checks if the minimum clearance between copper\n" "features is met." @@ -10621,34 +11615,34 @@ msgstr "" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:156 #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:176 #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:238 -#: appTools/ToolRulesCheck.py:301 appTools/ToolRulesCheck.py:324 -#: appTools/ToolRulesCheck.py:347 appTools/ToolRulesCheck.py:370 -#: appTools/ToolRulesCheck.py:393 appTools/ToolRulesCheck.py:416 -#: appTools/ToolRulesCheck.py:464 +#: appTools/ToolRulesCheck.py:1403 appTools/ToolRulesCheck.py:1426 +#: appTools/ToolRulesCheck.py:1449 appTools/ToolRulesCheck.py:1472 +#: appTools/ToolRulesCheck.py:1495 appTools/ToolRulesCheck.py:1518 +#: appTools/ToolRulesCheck.py:1566 msgid "Minimum acceptable clearance value." msgstr "Minimaler akzeptabler Abstandswert." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:81 -#: appTools/ToolRulesCheck.py:309 appTools/ToolRulesCheck.py:1217 -#: appTools/ToolRulesCheck.py:1223 appTools/ToolRulesCheck.py:1236 -#: appTools/ToolRulesCheck.py:1243 +#: appTools/ToolRulesCheck.py:716 appTools/ToolRulesCheck.py:722 +#: appTools/ToolRulesCheck.py:735 appTools/ToolRulesCheck.py:742 +#: appTools/ToolRulesCheck.py:1411 msgid "Copper to Outline clearance" msgstr "Mininalabstand Kupfer zum Rahmen" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:83 -#: appTools/ToolRulesCheck.py:311 +#: appTools/ToolRulesCheck.py:1413 msgid "" "This checks if the minimum clearance between copper\n" "features and the outline is met." msgstr "Überprüft den Minimalabstand zwischen Kupfer und Rand." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:101 -#: appTools/ToolRulesCheck.py:332 +#: appTools/ToolRulesCheck.py:1434 msgid "Silk to Silk Clearance" msgstr "Siebdruck zu siebdruck Abstand" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:103 -#: appTools/ToolRulesCheck.py:334 +#: appTools/ToolRulesCheck.py:1436 msgid "" "This checks if the minimum clearance between silkscreen\n" "features and silkscreen features is met." @@ -10657,13 +11651,13 @@ msgstr "" "Objekte und Silkscreen-Objekte erfüllt ist." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:121 -#: appTools/ToolRulesCheck.py:355 appTools/ToolRulesCheck.py:1326 -#: appTools/ToolRulesCheck.py:1332 appTools/ToolRulesCheck.py:1350 +#: appTools/ToolRulesCheck.py:825 appTools/ToolRulesCheck.py:831 +#: appTools/ToolRulesCheck.py:849 appTools/ToolRulesCheck.py:1457 msgid "Silk to Solder Mask Clearance" msgstr "Siebdruck auf Lötmaske Clearance" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:123 -#: appTools/ToolRulesCheck.py:357 +#: appTools/ToolRulesCheck.py:1459 msgid "" "This checks if the minimum clearance between silkscreen\n" "features and soldermask features is met." @@ -10672,14 +11666,14 @@ msgstr "" "Spuren und Lötmaskenspuren werden eingehalten." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:141 -#: appTools/ToolRulesCheck.py:378 appTools/ToolRulesCheck.py:1380 -#: appTools/ToolRulesCheck.py:1386 appTools/ToolRulesCheck.py:1400 -#: appTools/ToolRulesCheck.py:1407 +#: appTools/ToolRulesCheck.py:879 appTools/ToolRulesCheck.py:885 +#: appTools/ToolRulesCheck.py:899 appTools/ToolRulesCheck.py:906 +#: appTools/ToolRulesCheck.py:1480 msgid "Silk to Outline Clearance" msgstr "Siebdruck zur Gliederung Clearance" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:143 -#: appTools/ToolRulesCheck.py:380 +#: appTools/ToolRulesCheck.py:1482 msgid "" "This checks if the minimum clearance between silk\n" "features and the outline is met." @@ -10688,13 +11682,13 @@ msgstr "" "Spuren und der Umriss ist erfüllt." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:161 -#: appTools/ToolRulesCheck.py:401 appTools/ToolRulesCheck.py:1418 -#: appTools/ToolRulesCheck.py:1445 +#: appTools/ToolRulesCheck.py:917 appTools/ToolRulesCheck.py:944 +#: appTools/ToolRulesCheck.py:1503 msgid "Minimum Solder Mask Sliver" msgstr "Minimum Lötmaskenband" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:163 -#: appTools/ToolRulesCheck.py:403 +#: appTools/ToolRulesCheck.py:1505 msgid "" "This checks if the minimum clearance between soldermask\n" "features and soldermask features is met." @@ -10704,14 +11698,14 @@ msgstr "" "Spuren und Soldermask-Merkmale sind erfüllt." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:181 -#: appTools/ToolRulesCheck.py:424 appTools/ToolRulesCheck.py:1483 -#: appTools/ToolRulesCheck.py:1489 appTools/ToolRulesCheck.py:1505 -#: appTools/ToolRulesCheck.py:1512 +#: appTools/ToolRulesCheck.py:982 appTools/ToolRulesCheck.py:988 +#: appTools/ToolRulesCheck.py:1004 appTools/ToolRulesCheck.py:1011 +#: appTools/ToolRulesCheck.py:1526 msgid "Minimum Annular Ring" msgstr "Minimaler Ring" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:183 -#: appTools/ToolRulesCheck.py:426 +#: appTools/ToolRulesCheck.py:1528 msgid "" "This checks if the minimum copper ring left by drilling\n" "a hole into a pad is met." @@ -10720,17 +11714,17 @@ msgstr "" "Ein Loch in einem Pad ist getroffen." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:196 -#: appTools/ToolRulesCheck.py:439 +#: appTools/ToolRulesCheck.py:1541 msgid "Minimum acceptable ring value." msgstr "Minimaler akzeptabler Ringwert." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:203 -#: appTools/ToolRulesCheck.py:449 appTools/ToolRulesCheck.py:873 +#: appTools/ToolRulesCheck.py:372 appTools/ToolRulesCheck.py:1551 msgid "Hole to Hole Clearance" msgstr "Loch zu Loch Abstand" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:205 -#: appTools/ToolRulesCheck.py:451 +#: appTools/ToolRulesCheck.py:1553 msgid "" "This checks if the minimum clearance between a drill hole\n" "and another drill hole is met." @@ -10739,17 +11733,17 @@ msgstr "" "und ein weiteres Bohrloch ist getroffen." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:218 -#: appTools/ToolRulesCheck.py:487 +#: appTools/ToolRulesCheck.py:1589 msgid "Minimum acceptable drill size." msgstr "Minimale zulässige Bohrergröße." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:223 -#: appTools/ToolRulesCheck.py:472 appTools/ToolRulesCheck.py:847 +#: appTools/ToolRulesCheck.py:346 appTools/ToolRulesCheck.py:1574 msgid "Hole Size" msgstr "Lochgröße" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:225 -#: appTools/ToolRulesCheck.py:474 +#: appTools/ToolRulesCheck.py:1576 msgid "" "This checks if the drill holes\n" "sizes are above the threshold." @@ -10774,18 +11768,17 @@ msgid "Drill dia" msgstr "Bohrdurchmesser" #: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:49 -#: appTools/ToolDblSided.py:363 appTools/ToolDblSided.py:368 +#: appTools/ToolDblSided.py:833 appTools/ToolDblSided.py:838 msgid "Diameter of the drill for the alignment holes." msgstr "Durchmesser des Bohrers für die Ausrichtungslöcher." #: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:56 -#: appTools/ToolDblSided.py:377 msgid "Align Axis" msgstr "Achse ausrichten" #: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:58 #: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:71 -#: appTools/ToolDblSided.py:165 appTools/ToolDblSided.py:379 +#: appTools/ToolDblSided.py:674 appTools/ToolDblSided.py:849 msgid "Mirror vertically (X) or horizontally (Y)." msgstr "Vertikal spiegeln (X) oder horizontal (Y)." @@ -10793,31 +11786,55 @@ msgstr "Vertikal spiegeln (X) oder horizontal (Y)." msgid "Mirror Axis:" msgstr "Spiegelachse:" -#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:81 -#: appTools/ToolDblSided.py:182 +#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:86 +#: appTools/ToolDblSided.py:700 msgid "Box" msgstr "Box" -#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:82 +#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:87 +#: appTools/ToolDblSided.py:701 +#, fuzzy +#| msgid "Hole Size" +msgid "Hole Snap" +msgstr "Lochgröße" + +#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:90 msgid "Axis Ref" msgstr "Achsenreferenz" -#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:84 +#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:92 +#, fuzzy +#| msgid "" +#| "The coordinates used as reference for the mirror operation.\n" +#| "Can be:\n" +#| "- Point -> a set of coordinates (x,y) around which the object is " +#| "mirrored\n" +#| "- Box -> a set of coordinates (x, y) obtained from the center of the\n" +#| "bounding box of another object selected below" msgid "" -"The axis should pass through a point or cut\n" -" a specified box (in a FlatCAM object) through \n" -"the center." +"The coordinates used as reference for the mirror operation.\n" +"Can be:\n" +"- Point -> a set of coordinates (x,y) around which the object is mirrored\n" +"- Box -> a set of coordinates (x, y) obtained from the center of the\n" +"bounding box of another object selected below\n" +"- Hole Snap-> a point defined by the center of a drill hone in a Excellon " +"object" msgstr "" -"Die Achse sollte einen Punkt durchlaufen oder schneiden\n" -"eine angegebene Box (in einem FlatCAM-Objekt) durch\n" -"das Zentrum." +"Die Koordinaten, die als Referenz für die Spiegeloperation verwendet " +"werden.\n" +"Kann sein:\n" +"- Punkt -> eine Reihe von Koordinaten (x, y), um die das Objekt gespiegelt " +"wird\n" +"- Box -> ein Satz von Koordinaten (x, y), die aus der Mitte des erhalten " +"werden\n" +"Begrenzungsrahmen eines anderen unten ausgewählten Objekts" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:27 msgid "Calculators Tool Options" msgstr "Rechner-Tool-Optionen" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:31 -#: appTools/ToolCalculators.py:25 +#: appTools/ToolCalculators.py:152 msgid "V-Shape Tool Calculator" msgstr "V-Shape-Werkzeugrechner" @@ -10833,12 +11850,12 @@ msgstr "" "Schnitttiefe als Parameter." #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:50 -#: appTools/ToolCalculators.py:94 +#: appTools/ToolCalculators.py:220 msgid "Tip Diameter" msgstr "Spitzendurchmesser" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:52 -#: appTools/ToolCalculators.py:102 +#: appTools/ToolCalculators.py:228 msgid "" "This is the tool tip diameter.\n" "It is specified by manufacturer." @@ -10847,7 +11864,7 @@ msgstr "" "Es wird vom Hersteller angegeben." #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:64 -#: appTools/ToolCalculators.py:105 +#: appTools/ToolCalculators.py:231 msgid "Tip Angle" msgstr "Spitzenwinkel" @@ -10868,12 +11885,12 @@ msgstr "" "Im CNCJob-Objekt ist dies der Parameter CutZ." #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:87 -#: appTools/ToolCalculators.py:27 +#: appTools/ToolCalculators.py:154 msgid "ElectroPlating Calculator" msgstr "Galvanikrechner" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:89 -#: appTools/ToolCalculators.py:158 +#: appTools/ToolCalculators.py:284 msgid "" "This calculator is useful for those who plate the via/pad/drill holes,\n" "using a method like graphite ink or calcium hypophosphite ink or palladium " @@ -10885,32 +11902,32 @@ msgstr "" "Tinte oder Palladiumchlorid." #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:100 -#: appTools/ToolCalculators.py:167 +#: appTools/ToolCalculators.py:293 msgid "Board Length" msgstr "PCB Länge" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:102 -#: appTools/ToolCalculators.py:173 +#: appTools/ToolCalculators.py:299 msgid "This is the board length. In centimeters." msgstr "Dies ist die Boardlänge. In Zentimeter." #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:112 -#: appTools/ToolCalculators.py:175 +#: appTools/ToolCalculators.py:301 msgid "Board Width" msgstr "PCB Breite" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:114 -#: appTools/ToolCalculators.py:181 +#: appTools/ToolCalculators.py:307 msgid "This is the board width.In centimeters." msgstr "Dies ist die Breite der Platte in Zentimetern." #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:119 -#: appTools/ToolCalculators.py:183 +#: appTools/ToolCalculators.py:309 msgid "Current Density" msgstr "Stromdichte" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:125 -#: appTools/ToolCalculators.py:190 +#: appTools/ToolCalculators.py:316 msgid "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." @@ -10919,12 +11936,12 @@ msgstr "" "In Ampere pro Quadratfuß ASF." #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:131 -#: appTools/ToolCalculators.py:193 +#: appTools/ToolCalculators.py:319 msgid "Copper Growth" msgstr "Kupferwachstum" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:137 -#: appTools/ToolCalculators.py:200 +#: appTools/ToolCalculators.py:326 msgid "" "How thick the copper growth is intended to be.\n" "In microns." @@ -10937,12 +11954,12 @@ msgid "Corner Markers Options" msgstr "Optionen für Eckmarkierungen" #: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:44 -#: appTools/ToolCorners.py:124 +#: appTools/ToolCorners.py:386 msgid "The thickness of the line that makes the corner marker." msgstr "Die Dicke der Linie, die die Eckmarkierung bildet." #: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:58 -#: appTools/ToolCorners.py:138 +#: appTools/ToolCorners.py:400 msgid "The length of the line that makes the corner marker." msgstr "Die Länge der Linie, die die Eckmarkierung bildet." @@ -10960,13 +11977,8 @@ msgstr "" "die PCB und trennen Sie es von\n" "das ursprüngliche Brett." -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:43 -#: appTools/ToolCalculators.py:123 appTools/ToolCutOut.py:129 -msgid "Tool Diameter" -msgstr "Werkzeugdurchm" - #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:45 -#: appTools/ToolCutOut.py:131 +#: appTools/ToolCutOut.py:1821 msgid "" "Diameter of the tool used to cutout\n" "the PCB shape out of the surrounding material." @@ -10979,7 +11991,7 @@ msgid "Object kind" msgstr "Objektart" #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:102 -#: appTools/ToolCutOut.py:77 +#: appTools/ToolCutOut.py:1754 msgid "" "Choice of what kind the object we want to cutout is.
- Single: " "contain a single PCB Gerber outline object.
- Panel: a panel PCB " @@ -10992,50 +12004,16 @@ msgstr "" "aus vielen einzelnen PCB-Konturen zusammengesetzt ist." #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:109 -#: appTools/ToolCutOut.py:83 +#: appTools/ToolCutOut.py:1760 msgid "Single" msgstr "Einzeln" #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:110 -#: appTools/ToolCutOut.py:84 +#: appTools/ToolCutOut.py:1761 msgid "Panel" msgstr "Platte" -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:117 -#: appTools/ToolCutOut.py:192 -msgid "" -"Margin over bounds. A positive value here\n" -"will make the cutout of the PCB further from\n" -"the actual PCB border" -msgstr "" -"Marge über Grenzen. Ein positiver Wert hier\n" -"macht den Ausschnitt der Leiterplatte weiter aus\n" -"die tatsächliche PCB-Grenze" - -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:130 -#: appTools/ToolCutOut.py:203 -msgid "Gap size" -msgstr "Spaltgröße" - -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:132 -#: appTools/ToolCutOut.py:205 -msgid "" -"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)." -msgstr "" -"Die Größe der Brückenlücken im Ausschnitt\n" -"verwendet, um die Platine verbunden zu halten\n" -"das umgebende Material (das eine\n" -"von denen die Leiterplatte ausgeschnitten ist)." - -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:146 -#: appTools/ToolCutOut.py:245 -msgid "Gaps" -msgstr "Spalt" - -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:148 +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:211 msgid "" "Number of gaps used for the cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -11059,19 +12037,150 @@ msgstr "" "- 2 tb \t- 2 * oben + 2 * unten\n" "- 8 \t- 2 * links + 2 * rechts + 2 * oben + 2 * unten" -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:170 -#: appTools/ToolCutOut.py:222 -msgid "Convex Shape" -msgstr "Konvexe Form" - -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:172 -#: appTools/ToolCutOut.py:225 -msgid "" -"Create a convex shape surrounding the entire PCB.\n" -"Used only if the source object type is Gerber." +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:240 +#: appTools/ToolCutOut.py:2091 +msgid "Big cursor" msgstr "" -"Erstellen Sie eine konvexe Form, die die gesamte Leiterplatte umgibt.\n" -"Wird nur verwendet, wenn der Quellobjekttyp Gerber ist." + +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:242 +#: appTools/ToolCutOut.py:2093 +msgid "Use a big cursor when adding manual gaps." +msgstr "" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:27 +#, fuzzy +#| msgid "Film Tool Options" +msgid "Drilling Tool Options" +msgstr "Filmwerkzeugoptionen" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:33 +#: appTools/ToolDrilling.py:1992 appTools/ToolMilling.py:1611 +#, fuzzy +#| msgid "Create Geometry for milling holes." +msgid "Create CNCJob with toolpaths for drilling or milling holes." +msgstr "Erstellen Sie Geometrie zum Fräsen von Löchern." + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:41 +#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:54 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:156 +#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:142 +#: appTools/ToolDrilling.py:2068 appTools/ToolIsolation.py:3020 +#: appTools/ToolMilling.py:1687 appTools/ToolNCC.py:3819 +#: appTools/ToolPaint.py:2842 +msgid "Tool order" +msgstr "Werkzeugbestellung" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:42 +#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:55 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:157 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:167 +#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:143 +#: appTools/ToolDrilling.py:2069 appTools/ToolIsolation.py:3021 +#: appTools/ToolMilling.py:1688 appTools/ToolNCC.py:3820 +#: appTools/ToolNCC.py:3830 appTools/ToolPaint.py:2843 +#: appTools/ToolPaint.py:2853 +msgid "" +"This set the way that the tools in the tools table are used.\n" +"'No' --> means that the used order is the one in the tool table\n" +"'Forward' --> means that the tools will be ordered from small to big\n" +"'Reverse' --> means that the tools will ordered from big to small\n" +"\n" +"WARNING: using rest machining will automatically set the order\n" +"in reverse and disable this control." +msgstr "" +"Hiermit wird festgelegt, wie die Werkzeuge in der Werkzeugtabelle verwendet " +"werden.\n" +"'Nein' -> bedeutet, dass die verwendete Reihenfolge die in der " +"Werkzeugtabelle ist\n" +"'Weiter' -> bedeutet, dass die Werkzeuge von klein nach groß sortiert " +"werden\n" +"'Rückwärts' -> Menus, die die Werkzeuge von groß nach klein ordnen\n" +"\n" +"WARNUNG: Bei Verwendung der Restbearbeitung wird die Reihenfolge automatisch " +"festgelegt\n" +"in umgekehrter Richtung und deaktivieren Sie diese Steuerung." + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:50 +#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:63 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:165 +#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:151 +#: appTools/ToolDrilling.py:2077 appTools/ToolIsolation.py:3029 +#: appTools/ToolMilling.py:1696 appTools/ToolNCC.py:3828 +#: appTools/ToolPaint.py:2851 +msgid "Forward" +msgstr "Vorwärts" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:51 +#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:64 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:166 +#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:152 +#: appTools/ToolDrilling.py:2078 appTools/ToolIsolation.py:3030 +#: appTools/ToolMilling.py:1697 appTools/ToolNCC.py:3829 +#: appTools/ToolPaint.py:2852 +msgid "Reverse" +msgstr "Rückwärts" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:118 +#: appTools/ToolDrilling.py:2373 appTools/ToolMilling.py:2065 +msgid "" +"Include tool-change sequence\n" +"in G-Code (Pause for tool change)." +msgstr "" +"Werkzeugwechselfolge einbeziehen\n" +"im G-Code (Pause für Werkzeugwechsel)." + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:223 +msgid "" +"The preprocessor JSON file that dictates\n" +"Gcode output." +msgstr "" +"Die Postprozessor-JSON-Datei, die diktiert\n" +"Gcode-Ausgabe." + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:239 +#, fuzzy +#| msgid "Mill Slots" +msgid "Drilling Slots" +msgstr "Mühlenschlitze" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:278 +#, fuzzy +#| msgid "A list of Excellon Editor parameters." +msgid "A list of advanced parameters." +msgstr "Eine Liste der Excellon Editor-Parameter." + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:296 +msgid "Toolchange X,Y" +msgstr "Werkzeugwechsel X, Y" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:308 +#: appTools/ToolDrilling.py:2403 appTools/ToolMilling.py:2089 +msgid "" +"Height of the tool just after start.\n" +"Delete the value if you don't need this feature." +msgstr "" +"Höhe des Werkzeugs gleich nach dem Start.\n" +"Löschen Sie den Wert, wenn Sie diese Funktion nicht benötigen." + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:380 +msgid "Fast Retract" +msgstr "Schneller Rückzug" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:382 +msgid "" +"Exit hole strategy.\n" +" - When uncheked, while exiting the drilled hole the drill bit\n" +"will travel slow, with set feedrate (G1), up to zero depth and then\n" +"travel as fast as possible (G0) to the Z Move (travel height).\n" +" - When checked the travel from Z cut (cut depth) to Z_move\n" +"(travel height) is done as fast as possible (G0) in one move." +msgstr "" +"Verlassen Sie die Lochstrategie.\n" +"  - Ungeprüft, beim Verlassen des Bohrlochs der Bohrer\n" +"fährt langsam, mit eingestelltem Vorschub (G1), bis zur Nulltiefe und dann\n" +"Fahren Sie so schnell wie möglich (G0) bis Z Move (Fahrhöhe).\n" +"  - 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." #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:27 msgid "Film Tool Options" @@ -11089,7 +12198,8 @@ msgstr "" msgid "Film Type" msgstr "Filmtyp" -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:45 appTools/ToolFilm.py:283 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:45 +#: appTools/ToolFilm.py:1001 msgid "" "Generate a Positive black film or a Negative film.\n" "Positive means that it will print the features\n" @@ -11113,11 +12223,13 @@ msgstr "Filmfarbe" msgid "Set the film color when positive film is selected." msgstr "Stellen Sie die Filmfarbe ein, wenn Positivfilm ausgewählt ist." -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:71 appTools/ToolFilm.py:299 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:71 +#: appTools/ToolFilm.py:1017 msgid "Border" msgstr "Rand" -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:73 appTools/ToolFilm.py:301 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:73 +#: appTools/ToolFilm.py:1019 msgid "" "Specify a border around the object.\n" "Only for negative film.\n" @@ -11137,11 +12249,11 @@ msgstr "" "weiße Farbe wie der Rest und die mit der verwechseln kann\n" "Umgebung, wenn nicht für diese Grenze." -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:90 appTools/ToolFilm.py:266 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:90 appTools/ToolFilm.py:986 msgid "Scale Stroke" msgstr "Skalierungshub" -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:92 appTools/ToolFilm.py:268 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:92 appTools/ToolFilm.py:988 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 " @@ -11153,12 +12265,12 @@ msgstr "" "dünner ist.\n" "Daher können die Feinheiten von diesem Parameter stärker beeinflusst werden." -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:99 appTools/ToolFilm.py:124 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:99 appTools/ToolFilm.py:830 msgid "Film Adjustments" msgstr "Filmeinstellungen" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:101 -#: appTools/ToolFilm.py:126 +#: appTools/ToolFilm.py:832 msgid "" "Sometime the printers will distort the print shape, especially the Laser " "types.\n" @@ -11169,12 +12281,12 @@ msgstr "" "Druckverzerrungen." #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:108 -#: appTools/ToolFilm.py:133 +#: appTools/ToolFilm.py:839 msgid "Scale Film geometry" msgstr "Filmgeometrie skalieren" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:110 -#: appTools/ToolFilm.py:135 +#: appTools/ToolFilm.py:841 msgid "" "A value greater than 1 will stretch the film\n" "while a value less than 1 will jolt it." @@ -11183,12 +12295,12 @@ msgstr "" "Ein Wert unter 1 ruckelt." #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:139 -#: appTools/ToolFilm.py:172 +#: appTools/ToolFilm.py:883 msgid "Skew Film geometry" msgstr "Verzerren Sie die Filmgeometrie" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:141 -#: appTools/ToolFilm.py:174 +#: appTools/ToolFilm.py:885 msgid "" "Positive values will skew to the right\n" "while negative values will skew to the left." @@ -11197,7 +12309,7 @@ msgstr "" "negative Werte werden nach links verschoben." #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:171 -#: appTools/ToolFilm.py:204 +#: appTools/ToolFilm.py:915 msgid "" "The reference point to be used as origin for the skew.\n" "It can be one of the four points of the geometry bounding box." @@ -11206,64 +12318,64 @@ msgstr "" "Dies kann einer der vier Punkte des Geometrie-Begrenzungsrahmens sein." #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:174 -#: appTools/ToolCorners.py:80 appTools/ToolFiducials.py:83 -#: appTools/ToolFilm.py:207 +#: appTools/ToolCorners.py:342 appTools/ToolFiducials.py:694 +#: appTools/ToolFilm.py:918 msgid "Bottom Left" msgstr "Unten links" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:175 -#: appTools/ToolCorners.py:88 appTools/ToolFilm.py:208 +#: appTools/ToolCorners.py:350 appTools/ToolFilm.py:919 msgid "Top Left" msgstr "Oben links" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:176 -#: appTools/ToolCorners.py:84 appTools/ToolFilm.py:209 +#: appTools/ToolCorners.py:346 appTools/ToolFilm.py:920 msgid "Bottom Right" msgstr "Unten rechts" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:177 -#: appTools/ToolFilm.py:210 +#: appTools/ToolFilm.py:921 msgid "Top right" msgstr "Oben rechts" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:185 -#: appTools/ToolFilm.py:227 +#: appTools/ToolFilm.py:944 msgid "Mirror Film geometry" msgstr "Spiegeln Sie die Filmgeometrie" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:187 -#: appTools/ToolFilm.py:229 +#: appTools/ToolFilm.py:946 msgid "Mirror the film geometry on the selected axis or on both." msgstr "" "Spiegeln Sie die Filmgeometrie auf der ausgewählten Achse oder auf beiden." #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:201 -#: appTools/ToolFilm.py:243 +#: appTools/ToolFilm.py:960 msgid "Mirror axis" msgstr "Achse spiegeln" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:211 -#: appTools/ToolFilm.py:388 +#: appTools/ToolFilm.py:1106 msgid "SVG" msgstr "SVG" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:212 -#: appTools/ToolFilm.py:389 +#: appTools/ToolFilm.py:1107 msgid "PNG" msgstr "PNG" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:213 -#: appTools/ToolFilm.py:390 +#: appTools/ToolFilm.py:1108 msgid "PDF" msgstr "PDF" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:216 -#: appTools/ToolFilm.py:281 appTools/ToolFilm.py:393 +#: appTools/ToolFilm.py:999 appTools/ToolFilm.py:1111 msgid "Film Type:" msgstr "Filmtyp:" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:218 -#: appTools/ToolFilm.py:395 +#: appTools/ToolFilm.py:1113 msgid "" "The file type of the saved film. Can be:\n" "- 'SVG' -> open-source vectorial format\n" @@ -11276,17 +12388,17 @@ msgstr "" "- 'PDF' -> portable document format" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:227 -#: appTools/ToolFilm.py:404 +#: appTools/ToolFilm.py:1122 msgid "Page Orientation" msgstr "Seitenausrichtung" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:240 -#: appTools/ToolFilm.py:417 +#: appTools/ToolFilm.py:1135 msgid "Page Size" msgstr "Seitengröße" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:241 -#: appTools/ToolFilm.py:418 +#: appTools/ToolFilm.py:1136 msgid "A selection of standard ISO 216 page sizes." msgstr "Eine Auswahl von Standard ISO 216 Seitengrößen." @@ -11300,65 +12412,11 @@ msgstr "Optionen für das Isolationswerkzeug" msgid "Comma separated values" msgstr "Komma-getrennte Werte" -#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:54 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:156 -#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:142 -#: appTools/ToolIsolation.py:166 appTools/ToolNCC.py:174 -#: appTools/ToolPaint.py:157 -msgid "Tool order" -msgstr "Werkzeugbestellung" - -#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:55 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:157 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:167 -#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:143 -#: appTools/ToolIsolation.py:167 appTools/ToolNCC.py:175 -#: appTools/ToolNCC.py:185 appTools/ToolPaint.py:158 appTools/ToolPaint.py:168 -msgid "" -"This set the way that the tools in the tools table are used.\n" -"'No' --> means that the used order is the one in the tool table\n" -"'Forward' --> means that the tools will be ordered from small to big\n" -"'Reverse' --> means that the tools will ordered from big to small\n" -"\n" -"WARNING: using rest machining will automatically set the order\n" -"in reverse and disable this control." -msgstr "" -"Hiermit wird festgelegt, wie die Werkzeuge in der Werkzeugtabelle verwendet " -"werden.\n" -"'Nein' -> bedeutet, dass die verwendete Reihenfolge die in der " -"Werkzeugtabelle ist\n" -"'Weiter' -> bedeutet, dass die Werkzeuge von klein nach groß sortiert " -"werden\n" -"'Rückwärts' -> Menus, die die Werkzeuge von groß nach klein ordnen\n" -"\n" -"WARNUNG: Bei Verwendung der Restbearbeitung wird die Reihenfolge automatisch " -"festgelegt\n" -"in umgekehrter Richtung und deaktivieren Sie diese Steuerung." - -#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:63 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:165 -#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:151 -#: appTools/ToolIsolation.py:175 appTools/ToolNCC.py:183 -#: appTools/ToolPaint.py:166 -msgid "Forward" -msgstr "Vorwärts" - -#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:64 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:166 -#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:152 -#: appTools/ToolIsolation.py:176 appTools/ToolNCC.py:184 -#: appTools/ToolPaint.py:167 -msgid "Reverse" -msgstr "Rückwärts" - #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:72 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:80 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:55 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:63 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:64 -#: appTools/ToolIsolation.py:201 appTools/ToolIsolation.py:209 -#: appTools/ToolNCC.py:215 appTools/ToolNCC.py:223 appTools/ToolPaint.py:197 -#: appTools/ToolPaint.py:205 msgid "" "Default tool type:\n" "- 'V-shape'\n" @@ -11371,8 +12429,6 @@ msgstr "" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:77 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:60 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:69 -#: appTools/ToolIsolation.py:206 appTools/ToolNCC.py:220 -#: appTools/ToolPaint.py:202 msgid "V-shape" msgstr "V-Form" @@ -11388,8 +12444,6 @@ msgstr "" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:126 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:100 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:109 -#: appTools/ToolIsolation.py:248 appTools/ToolNCC.py:262 -#: appTools/ToolNCC.py:271 appTools/ToolPaint.py:244 appTools/ToolPaint.py:253 msgid "" "Depth of cut into material. Negative value.\n" "In FlatCAM units." @@ -11400,8 +12454,8 @@ msgstr "" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:136 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:119 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:125 -#: appTools/ToolIsolation.py:262 appTools/ToolNCC.py:280 -#: appTools/ToolPaint.py:262 +#: appTools/ToolIsolation.py:3055 appTools/ToolNCC.py:3860 +#: appTools/ToolPaint.py:2883 msgid "" "Diameter for the new tool to add in the Tool Table.\n" "If the tool is V-shape type then this value is automatically\n" @@ -11415,13 +12469,13 @@ msgstr "" #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:288 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:244 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:245 -#: appTools/ToolIsolation.py:432 appTools/ToolNCC.py:512 -#: appTools/ToolPaint.py:441 +#: appTools/ToolIsolation.py:3241 appTools/ToolNCC.py:4108 +#: appTools/ToolPaint.py:3067 msgid "Rest" msgstr "Rest" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:246 -#: appTools/ToolIsolation.py:435 +#: appTools/ToolIsolation.py:3244 msgid "" "If checked, use 'rest machining'.\n" "Basically it will isolate outside PCB features,\n" @@ -11440,22 +12494,22 @@ msgstr "" "Wenn nicht aktiviert, verwenden Sie den Standardalgorithmus." #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:258 -#: appTools/ToolIsolation.py:457 +#: appTools/ToolIsolation.py:3266 msgid "Combine" msgstr "Kombinieren" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:260 -#: appTools/ToolIsolation.py:459 +#: appTools/ToolIsolation.py:3268 msgid "Combine all passes into one object" msgstr "Kombinieren Sie alle Durchgänge in einem Objekt" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:267 -#: appTools/ToolIsolation.py:466 +#: appTools/ToolIsolation.py:3275 msgid "Except" msgstr "Außer" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:268 -#: appTools/ToolIsolation.py:467 +#: appTools/ToolIsolation.py:3276 msgid "" "When the isolation geometry is generated,\n" "by checking this, the area of the object below\n" @@ -11466,7 +12520,7 @@ msgstr "" "wird von der Isolationsgeometrie abgezogen." #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:277 -#: appTools/ToolIsolation.py:506 +#: appTools/ToolIsolation.py:3315 msgid "" "Isolation scope. Choose what to isolate:\n" "- 'All' -> Isolate all the polygons in the object\n" @@ -11483,20 +12537,20 @@ msgstr "" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:285 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:280 -#: appTools/ToolIsolation.py:514 appTools/ToolIsolation.py:1335 -#: appTools/ToolIsolation.py:1724 appTools/ToolPaint.py:485 -#: appTools/ToolPaint.py:941 appTools/ToolPaint.py:1451 +#: appTools/ToolIsolation.py:825 appTools/ToolIsolation.py:1416 +#: appTools/ToolIsolation.py:3323 appTools/ToolPaint.py:1037 +#: appTools/ToolPaint.py:3125 appTools/ToolPaint.py:3241 #: tclCommands/TclCommandPaint.py:164 msgid "Polygon Selection" msgstr "Polygon auswahl" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:305 -#: appTools/ToolIsolation.py:550 +#: appTools/ToolIsolation.py:3359 msgid "Interiors" msgstr "Inneres" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:307 -#: appTools/ToolIsolation.py:552 +#: appTools/ToolIsolation.py:3361 msgid "" "When checked the user can select interiors of a polygon.\n" "(holes in the polygon)." @@ -11506,12 +12560,12 @@ msgstr "" "(Löcher im Polygon)." #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:312 -#: appTools/ToolIsolation.py:447 +#: appTools/ToolIsolation.py:3256 msgid "Forced Rest" msgstr "Gezwungen" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:314 -#: appTools/ToolIsolation.py:449 +#: appTools/ToolIsolation.py:3258 msgid "" "When checked the isolation will be done with the current tool even if\n" "interiors of a polygon (holes in the polygon) could not be isolated.\n" @@ -11538,11 +12592,11 @@ msgstr "Progressiv" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:329 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:341 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:305 -#: appObjects/AppObject.py:351 appObjects/FlatCAMObj.py:251 -#: appObjects/FlatCAMObj.py:282 appObjects/FlatCAMObj.py:298 -#: appObjects/FlatCAMObj.py:378 appTools/ToolCopperThieving.py:1491 -#: appTools/ToolCorners.py:411 appTools/ToolFiducials.py:813 -#: appTools/ToolMove.py:229 appTools/ToolQRCode.py:737 app_Main.py:4520 +#: appObjects/AppObject.py:439 appObjects/FlatCAMObj.py:255 +#: appObjects/FlatCAMObj.py:286 appObjects/FlatCAMObj.py:302 +#: appObjects/FlatCAMObj.py:382 appTools/ToolCopperThieving.py:1038 +#: appTools/ToolCorners.py:263 appTools/ToolFiducials.py:530 +#: appTools/ToolMove.py:229 appTools/ToolQRCode.py:460 app_Main.py:4676 msgid "Plotting" msgstr "Plotten" @@ -11585,7 +12639,7 @@ msgstr "" "zu den Kupferflächen enden.\n" "Der Wert kann zwischen 0 und 10 FlatCAM-Einheiten liegen." -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:290 appTools/ToolNCC.py:516 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:290 appTools/ToolNCC.py:4112 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -11603,7 +12657,7 @@ msgstr "" "kein kupfer mehr zum löschen oder es gibt keine werkzeuge mehr.\n" "Wenn nicht aktiviert, verwenden Sie den Standardalgorithmus." -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:313 appTools/ToolNCC.py:541 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:313 appTools/ToolNCC.py:4192 msgid "" "Selection of area to be processed.\n" "- 'Itself' - the processing extent is based on the object that is " @@ -11638,7 +12692,7 @@ msgstr "" "In Anwendungseinheiten." #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:247 -#: appTools/ToolPaint.py:444 +#: appTools/ToolPaint.py:3070 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -11659,7 +12713,7 @@ msgstr "" "Wenn nicht aktiviert, verwenden Sie den Standardalgorithmus." #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:260 -#: appTools/ToolPaint.py:457 +#: appTools/ToolPaint.py:3097 msgid "" "Selection of area to be processed.\n" "- 'Polygon Selection' - left mouse click to add/remove polygons to be " @@ -11697,12 +12751,12 @@ msgstr "" "in einem X-Abstand, Y-Abstand voneinander." #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:50 -#: appTools/ToolPanelize.py:165 +#: appTools/ToolPanelize.py:764 msgid "Spacing cols" msgstr "Abstandspalten" #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:52 -#: appTools/ToolPanelize.py:167 +#: appTools/ToolPanelize.py:766 msgid "" "Spacing between columns of the desired panel.\n" "In current units." @@ -11711,12 +12765,12 @@ msgstr "" "In aktuellen Einheiten." #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:64 -#: appTools/ToolPanelize.py:177 +#: appTools/ToolPanelize.py:776 msgid "Spacing rows" msgstr "Abstand Reihen" #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:66 -#: appTools/ToolPanelize.py:179 +#: appTools/ToolPanelize.py:778 msgid "" "Spacing between rows of the desired panel.\n" "In current units." @@ -11724,53 +12778,43 @@ msgstr "" "Abstand zwischen den Reihen des gewünschten Feldes.\n" "In aktuellen Einheiten." -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:77 -#: appTools/ToolPanelize.py:188 -msgid "Columns" -msgstr "Säulen" - #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:79 -#: appTools/ToolPanelize.py:190 +#: appTools/ToolPanelize.py:789 msgid "Number of columns of the desired panel" msgstr "Anzahl der Spalten des gewünschten Bereichs" -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:89 -#: appTools/ToolPanelize.py:198 -msgid "Rows" -msgstr "Reihen" - #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:91 -#: appTools/ToolPanelize.py:200 +#: appTools/ToolPanelize.py:799 msgid "Number of rows of the desired panel" msgstr "Anzahl der Zeilen des gewünschten Panels" #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:97 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:76 -#: appTools/ToolAlignObjects.py:73 appTools/ToolAlignObjects.py:109 -#: appTools/ToolCalibration.py:196 appTools/ToolCalibration.py:631 -#: appTools/ToolCalibration.py:648 appTools/ToolCalibration.py:807 -#: appTools/ToolCalibration.py:815 appTools/ToolCopperThieving.py:148 -#: appTools/ToolCopperThieving.py:162 appTools/ToolCopperThieving.py:608 -#: appTools/ToolCutOut.py:91 appTools/ToolDblSided.py:224 -#: appTools/ToolFilm.py:68 appTools/ToolFilm.py:91 appTools/ToolImage.py:49 -#: appTools/ToolImage.py:252 appTools/ToolImage.py:273 -#: appTools/ToolIsolation.py:475 appTools/ToolIsolation.py:527 -#: appTools/ToolIsolation.py:1306 appTools/ToolNCC.py:96 -#: appTools/ToolNCC.py:558 appTools/ToolNCC.py:1318 appTools/ToolPaint.py:501 -#: appTools/ToolPaint.py:705 appTools/ToolPanelize.py:116 -#: appTools/ToolPanelize.py:210 appTools/ToolPanelize.py:385 -#: appTools/ToolPanelize.py:403 appTools/ToolTransform.py:98 -#: appTools/ToolTransform.py:535 defaults.py:506 +#: appTools/ToolAlignObjects.py:398 appTools/ToolAlignObjects.py:434 +#: appTools/ToolCalibration.py:163 appTools/ToolCalibration.py:171 +#: appTools/ToolCalibration.py:891 appTools/ToolCalibration.py:1326 +#: appTools/ToolCalibration.py:1343 appTools/ToolCopperThieving.py:163 +#: appTools/ToolCopperThieving.py:1237 appTools/ToolCopperThieving.py:1251 +#: appTools/ToolCutOut.py:1768 appTools/ToolDblSided.py:528 +#: appTools/ToolDblSided.py:772 appTools/ToolFilm.py:781 +#: appTools/ToolFilm.py:804 appTools/ToolImage.py:117 appTools/ToolImage.py:138 +#: appTools/ToolImage.py:191 appTools/ToolIsolation.py:796 +#: appTools/ToolIsolation.py:3284 appTools/ToolIsolation.py:3336 +#: appTools/ToolNCC.py:792 appTools/ToolNCC.py:3741 appTools/ToolNCC.py:4209 +#: appTools/ToolPaint.py:167 appTools/ToolPaint.py:3141 +#: appTools/ToolPanelize.py:147 appTools/ToolPanelize.py:167 +#: appTools/ToolPanelize.py:715 appTools/ToolPanelize.py:809 +#: appTools/ToolTransform.py:126 appTools/ToolTransform.py:585 defaults.py:558 msgid "Gerber" msgstr "Gerber" #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:98 -#: appTools/ToolPanelize.py:211 +#: appTools/ToolPanelize.py:810 msgid "Geo" msgstr "Geo" #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:99 -#: appTools/ToolPanelize.py:212 +#: appTools/ToolPanelize.py:811 msgid "Panel Type" msgstr "Panel-Typ" @@ -11784,12 +12828,21 @@ msgstr "" "- Gerber\n" "- Geometrie" -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:110 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:112 +#: appTools/ToolPanelize.py:823 +msgid "" +"Active only for Geometry panel type.\n" +"When checked the application will find\n" +"any two overlapping Line elements in the panel\n" +"and remove the overlapping parts, keeping only one of them." +msgstr "" + +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:120 msgid "Constrain within" msgstr "Beschränkung innerhalb" -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:112 -#: appTools/ToolPanelize.py:224 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:122 +#: appTools/ToolPanelize.py:833 msgid "" "Area define by DX and DY within to constrain the panel.\n" "DX and DY values are in current units.\n" @@ -11803,13 +12856,13 @@ msgstr "" "Das letzte Panel enthält so viele Spalten und Zeilen wie\n" "Sie passen vollständig in den ausgewählten Bereich." -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:125 -#: appTools/ToolPanelize.py:236 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:135 +#: appTools/ToolPanelize.py:845 msgid "Width (DX)" msgstr "Breite (DX)" -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:127 -#: appTools/ToolPanelize.py:238 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:137 +#: appTools/ToolPanelize.py:847 msgid "" "The width (DX) within which the panel must fit.\n" "In current units." @@ -11817,13 +12870,13 @@ msgstr "" "Die Breite (DX), in die das Panel passen muss.\n" "In aktuellen Einheiten." -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:138 -#: appTools/ToolPanelize.py:247 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:148 +#: appTools/ToolPanelize.py:856 msgid "Height (DY)" msgstr "Höhe (DY)" -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:140 -#: appTools/ToolPanelize.py:249 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:150 +#: appTools/ToolPanelize.py:858 msgid "" "The height (DY)within which the panel must fit.\n" "In current units." @@ -11848,49 +12901,49 @@ msgid "New Nozzle Dia" msgstr "Neuer Düsendurchmesser" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:56 -#: appTools/ToolSolderPaste.py:112 +#: appTools/ToolSolderPaste.py:1188 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" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:72 -#: appTools/ToolSolderPaste.py:179 +#: appTools/ToolSolderPaste.py:1255 msgid "Z Dispense Start" msgstr "Z Dosierbeginn" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:74 -#: appTools/ToolSolderPaste.py:181 +#: appTools/ToolSolderPaste.py:1257 msgid "The height (Z) when solder paste dispensing starts." msgstr "Die Höhe (Z) bei der Lotpastendosierung." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:85 -#: appTools/ToolSolderPaste.py:191 +#: appTools/ToolSolderPaste.py:1267 msgid "Z Dispense" msgstr "Z-Abgabe" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:87 -#: appTools/ToolSolderPaste.py:193 +#: appTools/ToolSolderPaste.py:1269 msgid "The height (Z) when doing solder paste dispensing." msgstr "Die Höhe (Z) bei der Lotpastendosierung." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:98 -#: appTools/ToolSolderPaste.py:203 +#: appTools/ToolSolderPaste.py:1279 msgid "Z Dispense Stop" msgstr "Z Abgabestopp" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:100 -#: appTools/ToolSolderPaste.py:205 +#: appTools/ToolSolderPaste.py:1281 msgid "The height (Z) when solder paste dispensing stops." msgstr "Die Höhe (Z) bei der Lotpastendosierung stoppt." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:111 -#: appTools/ToolSolderPaste.py:215 +#: appTools/ToolSolderPaste.py:1291 msgid "Z Travel" msgstr "Z Reise" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:113 -#: appTools/ToolSolderPaste.py:217 +#: appTools/ToolSolderPaste.py:1293 msgid "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." @@ -11899,17 +12952,17 @@ msgstr "" "(ohne Lotpaste zu dosieren)." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:125 -#: appTools/ToolSolderPaste.py:228 +#: appTools/ToolSolderPaste.py:1304 msgid "Z Toolchange" msgstr "Z Werkzeugwechsel" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:127 -#: appTools/ToolSolderPaste.py:230 +#: appTools/ToolSolderPaste.py:1306 msgid "The height (Z) for tool (nozzle) change." msgstr "Die Höhe (Z) für Werkzeug (Düse) ändert sich." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:136 -#: appTools/ToolSolderPaste.py:238 +#: appTools/ToolSolderPaste.py:1314 msgid "" "The X,Y location for tool (nozzle) change.\n" "The format is (x, y) where x and y are real numbers." @@ -11918,12 +12971,12 @@ msgstr "" "Das Format ist (x, y), wobei x und y reelle Zahlen sind." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:150 -#: appTools/ToolSolderPaste.py:251 +#: appTools/ToolSolderPaste.py:1327 msgid "Feedrate (speed) while moving on the X-Y plane." msgstr "Vorschub (Geschwindigkeit) während der Bewegung auf der X-Y-Ebene." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:163 -#: appTools/ToolSolderPaste.py:263 +#: appTools/ToolSolderPaste.py:1339 msgid "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." @@ -11932,7 +12985,7 @@ msgstr "" "(auf der Z-Ebene)." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:175 -#: appTools/ToolSolderPaste.py:274 +#: appTools/ToolSolderPaste.py:1350 msgid "Feedrate Z Dispense" msgstr "Vorschub Z Dosierung" @@ -11945,12 +12998,12 @@ msgstr "" "in Ausgabeposition (in der Z-Ebene)." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:188 -#: appTools/ToolSolderPaste.py:286 +#: appTools/ToolSolderPaste.py:1362 msgid "Spindle Speed FWD" msgstr "Spindeldrehzahl FWD" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:190 -#: appTools/ToolSolderPaste.py:288 +#: appTools/ToolSolderPaste.py:1364 msgid "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." @@ -11959,22 +13012,22 @@ msgstr "" "durch die Spenderdüse." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:202 -#: appTools/ToolSolderPaste.py:299 +#: appTools/ToolSolderPaste.py:1375 msgid "Dwell FWD" msgstr "Verweilzeit FWD" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:204 -#: appTools/ToolSolderPaste.py:301 +#: appTools/ToolSolderPaste.py:1377 msgid "Pause after solder dispensing." msgstr "Pause nach dem Löten." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:214 -#: appTools/ToolSolderPaste.py:310 +#: appTools/ToolSolderPaste.py:1386 msgid "Spindle Speed REV" msgstr "Spindeldrehzahl REV" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:216 -#: appTools/ToolSolderPaste.py:312 +#: appTools/ToolSolderPaste.py:1388 msgid "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." @@ -11983,12 +13036,12 @@ msgstr "" "durch die Spenderdüse." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:228 -#: appTools/ToolSolderPaste.py:323 +#: appTools/ToolSolderPaste.py:1399 msgid "Dwell REV" msgstr "Verweilen REV" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:230 -#: appTools/ToolSolderPaste.py:325 +#: appTools/ToolSolderPaste.py:1401 msgid "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." @@ -11997,7 +13050,7 @@ msgstr "" "das Druckgleichgewicht zu ermöglichen." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:239 -#: appTools/ToolSolderPaste.py:333 +#: appTools/ToolSolderPaste.py:1409 msgid "Files that control the GCode generation." msgstr "Dateien, die die GCode-Generierung steuern." @@ -12013,7 +13066,7 @@ msgstr "" "Ein Werkzeug zum Subtrahieren eines Gerber- oder Geometrieobjekts\n" "von einem anderen des gleichen Typs." -#: appGUI/preferences/tools/ToolsSubPrefGroupUI.py:38 appTools/ToolSub.py:160 +#: appGUI/preferences/tools/ToolsSubPrefGroupUI.py:38 appTools/ToolSub.py:731 msgid "Close paths" msgstr "Wege schließen" @@ -12037,7 +13090,7 @@ msgstr "" "auf einem Anwendungsobjekt." #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:46 -#: appTools/ToolTransform.py:62 +#: appTools/ToolTransform.py:549 msgid "" "The reference point for Rotate, Skew, Scale, Mirror.\n" "Can be:\n" @@ -12055,7 +13108,7 @@ msgstr "" "- Objekt -> die Mitte des Begrenzungsrahmens eines bestimmten Objekts" #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:72 -#: appTools/ToolTransform.py:94 +#: appTools/ToolTransform.py:581 msgid "The type of object used as reference." msgstr "Der Objekttyp, der als Referenz verwendet wird." @@ -12065,7 +13118,7 @@ msgstr "Neigung" #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:126 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:140 -#: appTools/ToolCalibration.py:505 appTools/ToolCalibration.py:518 +#: appTools/ToolCalibration.py:1200 appTools/ToolCalibration.py:1213 msgid "" "Angle for Skew action, in degrees.\n" "Float number between -360 and 359." @@ -12228,7 +13281,7 @@ msgstr "GCode-Dateizuordnungen" msgid "Gerber File associations" msgstr "Gerber Dateizuordnungen" -#: appObjects/AppObject.py:134 +#: appObjects/AppObject.py:157 #, python-brace-format msgid "" "Object ({kind}) failed because: {error} \n" @@ -12237,23 +13290,32 @@ msgstr "" "Objekt ({kind}) gescheitert weil: {error} \n" "\n" -#: appObjects/AppObject.py:151 +#: appObjects/AppObject.py:176 msgid "Converting units to " msgstr "Einheiten umrechnen in " -#: appObjects/AppObject.py:256 +#: appObjects/AppObject.py:248 appObjects/FlatCAMGeometry.py:128 +#: appObjects/FlatCAMGeometry.py:514 appObjects/FlatCAMGeometry.py:991 +#: appObjects/FlatCAMGerber.py:522 appObjects/FlatCAMGerber.py:665 +#: appTools/ToolCutOut.py:440 appTools/ToolIsolation.py:1585 +#: appTools/ToolIsolation.py:1747 appTools/ToolIsolation.py:1940 camlib.py:1173 +#: camlib.py:1234 +msgid "Rough" +msgstr "Rau" + +#: appObjects/AppObject.py:302 msgid "CREATE A NEW FLATCAM TCL SCRIPT" msgstr "NEUES FLATCAL TCL SCRIPT ERZEUGEN" -#: appObjects/AppObject.py:257 +#: appObjects/AppObject.py:303 msgid "TCL Tutorial is here" msgstr "Das TCL Tutorial ist hier" -#: appObjects/AppObject.py:259 +#: appObjects/AppObject.py:305 msgid "FlatCAM commands list" msgstr "FlatCAM Befehlsliste" -#: appObjects/AppObject.py:260 +#: appObjects/AppObject.py:306 msgid "" "Type >help< followed by Run Code for a list of FlatCAM Tcl Commands " "(displayed in Tcl Shell)." @@ -12261,206 +13323,274 @@ msgstr "" "Geben Sie >help< gefolgt von Run Code ein, um eine Liste der FlatCAM Tcl-" "Befehle anzuzeigen (angezeigt in der Tcl-Shell)." -#: appObjects/AppObject.py:306 appObjects/AppObject.py:312 -#: appObjects/AppObject.py:318 appObjects/AppObject.py:324 -#: appObjects/AppObject.py:330 appObjects/AppObject.py:336 +#: appObjects/AppObject.py:357 appObjects/AppObject.py:363 +#: appObjects/AppObject.py:369 appObjects/AppObject.py:375 +#: appObjects/AppObject.py:381 appObjects/AppObject.py:387 msgid "created/selected" msgstr "erstellt / ausgewählt" -#: appObjects/FlatCAMCNCJob.py:429 appObjects/FlatCAMDocument.py:71 +#: appObjects/FlatCAMCNCJob.py:618 appObjects/FlatCAMDocument.py:71 #: appObjects/FlatCAMScript.py:82 msgid "Basic" msgstr "Basic" -#: appObjects/FlatCAMCNCJob.py:435 appObjects/FlatCAMDocument.py:75 +#: appObjects/FlatCAMCNCJob.py:625 appObjects/FlatCAMDocument.py:75 #: appObjects/FlatCAMScript.py:86 msgid "Advanced" msgstr "Erweitert" -#: appObjects/FlatCAMCNCJob.py:478 -msgid "Plotting..." -msgstr "Zeichnung..." +#: appObjects/FlatCAMCNCJob.py:740 +#, fuzzy +#| msgid "Click on Start point ..." +msgid "Click on canvas to add a Probe Point..." +msgstr "Klicken Sie auf Startpunkt ..." -#: appObjects/FlatCAMCNCJob.py:517 appTools/ToolSolderPaste.py:1511 +#: appObjects/FlatCAMCNCJob.py:926 +#, fuzzy +#| msgid "" +#| "Zone added. Click to start adding next zone or right click to finish." +msgid "" +"Added a Probe Point... Click again to add another or right click to " +"finish ..." +msgstr "" +"Zone hinzugefügt. Klicken Sie, um die nächste Zone hinzuzufügen, oder " +"klicken Sie mit der rechten Maustaste, um den Vorgang abzuschließen." + +#: appObjects/FlatCAMCNCJob.py:948 +#, fuzzy +#| msgid "Finished G-Code processing..." +msgid "Finished adding Probe Points..." +msgstr "Fertige G-Code Verarbeitung ..." + +#: appObjects/FlatCAMCNCJob.py:1117 +#, fuzzy +#| msgid "Click to place ..." +msgid "COM list updated ..." +msgstr "Klicken um zu platzieren ..." + +#: appObjects/FlatCAMCNCJob.py:1153 +#, fuzzy +#| msgid "Connect" +msgid "Connected" +msgstr "Verbinden" + +#: appObjects/FlatCAMCNCJob.py:1164 +msgid "Port connected" +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1168 +msgid "Could not connect to GRBL on port" +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1185 +msgid "Port is connected. Disconnecting" +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1187 +#, fuzzy +#| msgid "Could not retrieve box object" +msgid "Could not connect to port" +msgstr "Box-Objekt konnte nicht abgerufen werden" + +#: appObjects/FlatCAMCNCJob.py:1217 appObjects/FlatCAMCNCJob.py:1634 +#, fuzzy +#| msgid "Opening G-Code." +msgid "Sending GCode..." +msgstr "G-Code öffnen." + +#: appObjects/FlatCAMCNCJob.py:1346 +msgid "GRBL is doing a home cycle." +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1352 +msgid "GRBL software reset was sent." +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1360 +msgid "GRBL resumed." +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1364 +msgid "GRBL paused." +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1493 appObjects/FlatCAMCNCJob.py:1728 +#: appTools/ToolSolderPaste.py:1066 msgid "Export cancelled ..." msgstr "Export abgebrochen ..." -#: appObjects/FlatCAMCNCJob.py:538 -msgid "File saved to" -msgstr "Datei gespeichert in" - -#: appObjects/FlatCAMCNCJob.py:548 appObjects/FlatCAMScript.py:134 -#: app_Main.py:7425 +#: appObjects/FlatCAMCNCJob.py:1517 appObjects/FlatCAMCNCJob.py:1764 +#: appObjects/FlatCAMScript.py:134 app_Main.py:7807 msgid "Loading..." msgstr "Wird geladen..." -#: appObjects/FlatCAMCNCJob.py:562 app_Main.py:7522 -msgid "Code Editor" -msgstr "Code-Editor" +#: appObjects/FlatCAMCNCJob.py:1521 +#, fuzzy +#| msgid "There is no such parameter" +msgid "There is nothing to view" +msgstr "Es gibt keinen solchen Parameter" -#: appObjects/FlatCAMCNCJob.py:599 appTools/ToolCalibration.py:1097 -msgid "Loaded Machine Code into Code Editor" +#: appObjects/FlatCAMCNCJob.py:1527 +#, fuzzy +#| msgid "Gcode Viewer" +msgid "Code Viewer" +msgstr "GCode Anzeige" + +#: appObjects/FlatCAMCNCJob.py:1565 +#, fuzzy +#| msgid "Loaded Machine Code into Code Editor" +msgid "Loaded Machine Code into Code Viewer" msgstr "Maschinencode in den Code-Editor geladen" -#: appObjects/FlatCAMCNCJob.py:740 +#: appObjects/FlatCAMCNCJob.py:1611 +#, fuzzy +#| msgid "Failed to open config file" +msgid "Failed to open height map file" +msgstr "Fehler beim Öffnen der Konfigurationsdatei" + +#: appObjects/FlatCAMCNCJob.py:1660 +msgid "Finished probing. Doing the autolevelling." +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1665 +msgid "Sending probing GCode to the GRBL controller." +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1670 +#, fuzzy +#| msgid "Finished G-Code processing..." +msgid "Finished autolevelling." +msgstr "Fertige G-Code Verarbeitung ..." + +#: appObjects/FlatCAMCNCJob.py:1684 +msgid "Plotting..." +msgstr "Zeichnung..." + +#: appObjects/FlatCAMCNCJob.py:1754 +msgid "File saved to" +msgstr "Datei gespeichert in" + +#: appObjects/FlatCAMCNCJob.py:1778 +#, fuzzy +#| msgid "Gcode Viewer" +msgid "Code Review" +msgstr "GCode Anzeige" + +#: appObjects/FlatCAMCNCJob.py:1961 msgid "This CNCJob object can't be processed because it is a" msgstr "Dieses CNCJob-Objekt kann nicht verarbeitet werden, da es sich um ein" -#: appObjects/FlatCAMCNCJob.py:742 +#: appObjects/FlatCAMCNCJob.py:1963 msgid "CNCJob object" msgstr "CNCJob-Objekt" -#: appObjects/FlatCAMCNCJob.py:922 +#: appObjects/FlatCAMCNCJob.py:2073 msgid "" -"G-code does not have a G94 code and we will not include the code in the " -"'Prepend to GCode' text box" +"G-code does not have a G94 code.\n" +"Append Code snippet will not be used.." msgstr "" -"G-Code hat keinen G94-Code und wir werden den Code nicht in das Textfeld " -"\"Vor dem GCode\" aufnehmen" -#: appObjects/FlatCAMCNCJob.py:933 -msgid "Cancelled. The Toolchange Custom code is enabled but it's empty." -msgstr "" -"Abgebrochen. Der benutzerdefinierte Code zum Ändern des Werkzeugs ist " -"aktiviert, aber er ist leer." - -#: appObjects/FlatCAMCNCJob.py:938 -msgid "Toolchange G-code was replaced by a custom code." -msgstr "" -"Der Werkzeugwechsel-G-Code wurde durch einen benutzerdefinierten Code " -"ersetzt." - -#: appObjects/FlatCAMCNCJob.py:986 appObjects/FlatCAMCNCJob.py:995 -msgid "" -"The used preprocessor file has to have in it's name: 'toolchange_custom'" -msgstr "" -"Die verwendete Postprozessor-Datei muss im Namen enthalten sein: " -"'toolchange_custom'" - -#: appObjects/FlatCAMCNCJob.py:998 -msgid "There is no preprocessor file." -msgstr "Es gibt keine Postprozessor-Datei." - -#: appObjects/FlatCAMDocument.py:175 +#: appObjects/FlatCAMDocument.py:173 msgid "Document Editor" msgstr "Dokumenteditor" -#: appObjects/FlatCAMExcellon.py:537 appObjects/FlatCAMExcellon.py:856 -#: appObjects/FlatCAMGeometry.py:380 appObjects/FlatCAMGeometry.py:861 -#: appTools/ToolIsolation.py:1076 appTools/ToolIsolation.py:1210 -#: appTools/ToolNCC.py:811 appTools/ToolNCC.py:1214 appTools/ToolPaint.py:778 -#: appTools/ToolPaint.py:1190 -msgid "Multiple Tools" -msgstr "Mehrere Werkzeuge" - -#: appObjects/FlatCAMExcellon.py:836 -msgid "No Tool Selected" -msgstr "Kein Werkzeug ausgewählt" - -#: appObjects/FlatCAMExcellon.py:1234 appObjects/FlatCAMExcellon.py:1348 -#: appObjects/FlatCAMExcellon.py:1535 +#: appObjects/FlatCAMExcellon.py:848 appObjects/FlatCAMExcellon.py:956 +#: appTools/ToolDrilling.py:1598 appTools/ToolMilling.py:1038 +#: appTools/ToolMilling.py:1154 appTools/ToolMilling.py:1340 msgid "Please select one or more tools from the list and try again." msgstr "" "Bitte wählen Sie ein oder mehrere Werkzeuge aus der Liste aus und versuchen " "Sie es erneut." -#: appObjects/FlatCAMExcellon.py:1241 +#: appObjects/FlatCAMExcellon.py:853 appTools/ToolMilling.py:1045 msgid "Milling tool for DRILLS is larger than hole size. Cancelled." msgstr "Das Fräswerkzeug für BOHRER ist größer als die Lochgröße. Abgebrochen." -#: appObjects/FlatCAMExcellon.py:1265 appObjects/FlatCAMExcellon.py:1368 -#: appObjects/FlatCAMExcellon.py:1553 tclCommands/TclCommandDrillcncjob.py:195 +#: appObjects/FlatCAMExcellon.py:876 appObjects/FlatCAMExcellon.py:976 +#: appTools/ToolDrilling.py:1748 appTools/ToolDrilling.py:1813 +#: appTools/ToolMilling.py:1071 appTools/ToolMilling.py:1175 +#: appTools/ToolMilling.py:1360 tclCommands/TclCommandDrillcncjob.py:195 msgid "Tool_nr" msgstr "Werkzeugnummer" -#: appObjects/FlatCAMExcellon.py:1265 appObjects/FlatCAMExcellon.py:1368 -#: appObjects/FlatCAMExcellon.py:1553 tclCommands/TclCommandDrillcncjob.py:195 +#: appObjects/FlatCAMExcellon.py:876 appObjects/FlatCAMExcellon.py:976 +#: appTools/ToolDrilling.py:1748 appTools/ToolDrilling.py:1813 +#: appTools/ToolMilling.py:1071 appTools/ToolMilling.py:1175 +#: appTools/ToolMilling.py:1360 tclCommands/TclCommandDrillcncjob.py:195 msgid "Drills_Nr" msgstr "Bohrnummer" -#: appObjects/FlatCAMExcellon.py:1265 appObjects/FlatCAMExcellon.py:1368 -#: appObjects/FlatCAMExcellon.py:1553 tclCommands/TclCommandDrillcncjob.py:195 +#: appObjects/FlatCAMExcellon.py:876 appObjects/FlatCAMExcellon.py:976 +#: appTools/ToolDrilling.py:1748 appTools/ToolDrilling.py:1813 +#: appTools/ToolMilling.py:1071 appTools/ToolMilling.py:1175 +#: appTools/ToolMilling.py:1360 tclCommands/TclCommandDrillcncjob.py:195 msgid "Slots_Nr" msgstr "Schlitznummer" -#: appObjects/FlatCAMExcellon.py:1357 +#: appObjects/FlatCAMExcellon.py:965 appTools/ToolMilling.py:1163 msgid "Milling tool for SLOTS is larger than hole size. Cancelled." msgstr "" "Das Fräswerkzeug für SCHLITZ ist größer als die Lochgröße. Abgebrochen." -#: appObjects/FlatCAMExcellon.py:1461 appObjects/FlatCAMGeometry.py:1636 -msgid "Focus Z" -msgstr "Fokus Z" - -#: appObjects/FlatCAMExcellon.py:1480 appObjects/FlatCAMGeometry.py:1655 -msgid "Laser Power" -msgstr "Laserleistung" - -#: appObjects/FlatCAMExcellon.py:1610 appObjects/FlatCAMGeometry.py:2088 -#: appObjects/FlatCAMGeometry.py:2092 appObjects/FlatCAMGeometry.py:2243 -msgid "Generating CNC Code" -msgstr "CNC-Code generieren" - -#: appObjects/FlatCAMExcellon.py:1663 appObjects/FlatCAMGeometry.py:2553 -msgid "Delete failed. There are no exclusion areas to delete." -msgstr "Löschen fehlgeschlagen. Es sind keine Ausschlussbereiche zu löschen." - -#: appObjects/FlatCAMExcellon.py:1680 appObjects/FlatCAMGeometry.py:2570 -msgid "Delete failed. Nothing is selected." -msgstr "Löschen fehlgeschlagen. Es ist nichts ausgewählt." - -#: appObjects/FlatCAMExcellon.py:1945 appTools/ToolIsolation.py:1278 -#: appTools/ToolNCC.py:918 appTools/ToolPaint.py:843 -msgid "Current Tool parameters were applied to all tools." -msgstr "Aktuelle Werkzeugparameter wurden auf alle Werkzeuge angewendet." - -#: appObjects/FlatCAMGeometry.py:124 appObjects/FlatCAMGeometry.py:1298 -#: appObjects/FlatCAMGeometry.py:1299 appObjects/FlatCAMGeometry.py:1308 +#: appObjects/FlatCAMGeometry.py:128 appObjects/FlatCAMGeometry.py:1372 +#: appObjects/FlatCAMGeometry.py:1373 appObjects/FlatCAMGeometry.py:1382 msgid "Iso" msgstr "Iso" -#: appObjects/FlatCAMGeometry.py:124 appObjects/FlatCAMGeometry.py:522 -#: appObjects/FlatCAMGeometry.py:920 appObjects/FlatCAMGerber.py:578 -#: appObjects/FlatCAMGerber.py:721 appTools/ToolCutOut.py:727 -#: appTools/ToolCutOut.py:923 appTools/ToolCutOut.py:1083 -#: appTools/ToolIsolation.py:1881 appTools/ToolIsolation.py:2021 -#: appTools/ToolIsolation.py:2196 -msgid "Rough" -msgstr "Rau" - -#: appObjects/FlatCAMGeometry.py:124 +#: appObjects/FlatCAMGeometry.py:128 msgid "Finish" msgstr "Oberfläche" -#: appObjects/FlatCAMGeometry.py:557 +#: appObjects/FlatCAMGeometry.py:388 appObjects/FlatCAMGeometry.py:829 +#: appObjects/FlatCAMGeometry.py:892 appTools/ToolDrilling.py:704 +#: appTools/ToolDrilling.py:976 appTools/ToolDrilling.py:1023 +#: appTools/ToolIsolation.py:525 appTools/ToolIsolation.py:638 +#: appTools/ToolIsolation.py:704 appTools/ToolMilling.py:628 +#: appTools/ToolMilling.py:749 appTools/ToolMilling.py:794 +#: appTools/ToolNCC.py:271 appTools/ToolNCC.py:337 appTools/ToolNCC.py:700 +#: appTools/ToolPaint.py:252 appTools/ToolPaint.py:316 +#: appTools/ToolPaint.py:654 +msgid "Multiple Tools" +msgstr "Mehrere Werkzeuge" + +#: appObjects/FlatCAMGeometry.py:549 msgid "Add from Tool DB" msgstr "Werkzeug aus Werkzeugdatenbank hinzufügen" -#: appObjects/FlatCAMGeometry.py:939 +#: appObjects/FlatCAMGeometry.py:824 appObjects/FlatCAMGeometry.py:863 +#: appTools/ToolDrilling.py:753 appTools/ToolDrilling.py:969 +#: appTools/ToolDrilling.py:1007 appTools/ToolIsolation.py:633 +#: appTools/ToolIsolation.py:668 appTools/ToolMilling.py:744 +#: appTools/ToolMilling.py:779 appTools/ToolNCC.py:266 appTools/ToolNCC.py:301 +#: appTools/ToolPaint.py:247 appTools/ToolPaint.py:282 app_Main.py:2188 +msgid "No Tool Selected" +msgstr "Kein Werkzeug ausgewählt" + +#: appObjects/FlatCAMGeometry.py:1010 msgid "Tool added in Tool Table." msgstr "Werkzeug in der Werkzeugtabelle hinzugefügt." -#: appObjects/FlatCAMGeometry.py:1048 appObjects/FlatCAMGeometry.py:1057 +#: appObjects/FlatCAMGeometry.py:1119 appObjects/FlatCAMGeometry.py:1128 msgid "Failed. Select a tool to copy." msgstr "Fehlgeschlagen. Wählen Sie ein Werkzeug zum Kopieren aus." -#: appObjects/FlatCAMGeometry.py:1086 +#: appObjects/FlatCAMGeometry.py:1157 msgid "Tool was copied in Tool Table." msgstr "Das Werkzeug wurde in die Werkzeugtabelle kopiert." -#: appObjects/FlatCAMGeometry.py:1113 +#: appObjects/FlatCAMGeometry.py:1187 msgid "Tool was edited in Tool Table." msgstr "Das Werkzeug wurde in der Werkzeugtabelle bearbeitet." -#: appObjects/FlatCAMGeometry.py:1142 appObjects/FlatCAMGeometry.py:1151 +#: appObjects/FlatCAMGeometry.py:1216 appObjects/FlatCAMGeometry.py:1225 msgid "Failed. Select a tool to delete." msgstr "Gescheitert. Wählen Sie ein Werkzeug zum Löschen aus." -#: appObjects/FlatCAMGeometry.py:1175 +#: appObjects/FlatCAMGeometry.py:1249 msgid "Tool was deleted in Tool Table." msgstr "Werkzeug wurde in der Werkzeugtabelle gelöscht." -#: appObjects/FlatCAMGeometry.py:1212 appObjects/FlatCAMGeometry.py:1221 +#: appObjects/FlatCAMGeometry.py:1286 appObjects/FlatCAMGeometry.py:1295 msgid "" "Disabled because the tool is V-shape.\n" "For V-shape tools the depth of cut is\n" @@ -12479,19 +13609,29 @@ msgstr "" "NB: Ein Wert von Null bedeutet, dass Werkzeugdurchmesser = 'V-Spitze " "Durchmesser'" -#: appObjects/FlatCAMGeometry.py:1708 +#: appObjects/FlatCAMGeometry.py:1710 appTools/ToolDrilling.py:1242 +#: appTools/ToolMilling.py:1256 +msgid "Focus Z" +msgstr "Fokus Z" + +#: appObjects/FlatCAMGeometry.py:1729 appTools/ToolDrilling.py:1264 +#: appTools/ToolMilling.py:1275 +msgid "Laser Power" +msgstr "Laserleistung" + +#: appObjects/FlatCAMGeometry.py:1782 msgid "This Geometry can't be processed because it is" msgstr "Diese Geometrie kann nicht verarbeitet werden, da dies der Fall ist" -#: appObjects/FlatCAMGeometry.py:1708 +#: appObjects/FlatCAMGeometry.py:1782 msgid "geometry" msgstr "geometrie" -#: appObjects/FlatCAMGeometry.py:1749 +#: appObjects/FlatCAMGeometry.py:1813 msgid "Failed. No tool selected in the tool table ..." msgstr "Gescheitert. Kein Werkzeug in der Werkzeugtabelle ausgewählt ..." -#: appObjects/FlatCAMGeometry.py:1847 appObjects/FlatCAMGeometry.py:1997 +#: appObjects/FlatCAMGeometry.py:1913 appObjects/FlatCAMGeometry.py:2068 msgid "" "Tool Offset is selected in Tool Table but no value is provided.\n" "Add a Tool Offset or change the Offset Type." @@ -12500,46 +13640,52 @@ msgstr "" "Wert angegeben.\n" "Fügen Sie einen Werkzeugversatz hinzu oder ändern Sie den Versatztyp." -#: appObjects/FlatCAMGeometry.py:1913 appObjects/FlatCAMGeometry.py:2059 +#: appObjects/FlatCAMGeometry.py:1981 appObjects/FlatCAMGeometry.py:2131 msgid "G-Code parsing in progress..." msgstr "G-Code-Analyse läuft ..." -#: appObjects/FlatCAMGeometry.py:1915 appObjects/FlatCAMGeometry.py:2061 +#: appObjects/FlatCAMGeometry.py:1983 appObjects/FlatCAMGeometry.py:2133 msgid "G-Code parsing finished..." msgstr "G-Code-Analyse beendet ..." -#: appObjects/FlatCAMGeometry.py:1923 +#: appObjects/FlatCAMGeometry.py:1991 msgid "Finished G-Code processing" msgstr "G-Code-Verarbeitung abgeschlossen" -#: appObjects/FlatCAMGeometry.py:1925 appObjects/FlatCAMGeometry.py:2073 +#: appObjects/FlatCAMGeometry.py:1993 appObjects/FlatCAMGeometry.py:2145 msgid "G-Code processing failed with error" msgstr "G-Code-Verarbeitung fehlgeschlagen mit Fehler" -#: appObjects/FlatCAMGeometry.py:1967 appTools/ToolSolderPaste.py:1309 +#: appObjects/FlatCAMGeometry.py:2037 appTools/ToolSolderPaste.py:866 msgid "Cancelled. Empty file, it has no geometry" msgstr "Abgebrochen. Leere Datei hat keine Geometrie" -#: appObjects/FlatCAMGeometry.py:2071 appObjects/FlatCAMGeometry.py:2238 +#: appObjects/FlatCAMGeometry.py:2143 appObjects/FlatCAMGeometry.py:2313 msgid "Finished G-Code processing..." msgstr "Fertige G-Code Verarbeitung ..." -#: appObjects/FlatCAMGeometry.py:2090 appObjects/FlatCAMGeometry.py:2094 -#: appObjects/FlatCAMGeometry.py:2245 +#: appObjects/FlatCAMGeometry.py:2162 appObjects/FlatCAMGeometry.py:2166 +#: appObjects/FlatCAMGeometry.py:2318 appTools/ToolDrilling.py:1946 +#: appTools/ToolMilling.py:1417 +msgid "Generating CNC Code" +msgstr "CNC-Code generieren" + +#: appObjects/FlatCAMGeometry.py:2164 appObjects/FlatCAMGeometry.py:2168 +#: appObjects/FlatCAMGeometry.py:2320 msgid "CNCjob created" msgstr "CNCjob erstellt" -#: appObjects/FlatCAMGeometry.py:2276 appObjects/FlatCAMGeometry.py:2285 -#: appParsers/ParseGerber.py:1867 appParsers/ParseGerber.py:1877 +#: appObjects/FlatCAMGeometry.py:2351 appObjects/FlatCAMGeometry.py:2360 +#: appParsers/ParseGerber.py:1953 appParsers/ParseGerber.py:1963 msgid "Scale factor has to be a number: integer or float." msgstr "" "Der Skalierungsfaktor muss eine Zahl sein: Ganzzahl oder Fließkommazahl." -#: appObjects/FlatCAMGeometry.py:2348 +#: appObjects/FlatCAMGeometry.py:2423 msgid "Geometry Scale done." msgstr "Geometrie Skalierung fertig." -#: appObjects/FlatCAMGeometry.py:2365 appParsers/ParseGerber.py:1993 +#: appObjects/FlatCAMGeometry.py:2440 appParsers/ParseGerber.py:2079 msgid "" "An (x,y) pair of values are needed. Probable you entered only one value in " "the Offset field." @@ -12547,11 +13693,11 @@ msgstr "" "Ein (x, y) Wertepaar wird benötigt. Wahrscheinlich haben Sie im Feld Offset " "nur einen Wert eingegeben." -#: appObjects/FlatCAMGeometry.py:2421 +#: appObjects/FlatCAMGeometry.py:2496 msgid "Geometry Offset done." msgstr "Geometrie Offset fertig." -#: appObjects/FlatCAMGeometry.py:2450 +#: appObjects/FlatCAMGeometry.py:2525 msgid "" "The Toolchange X,Y field in Edit -> Preferences has to be in the format (x, " "y)\n" @@ -12561,95 +13707,105 @@ msgstr "" "(x, y) sein\n" "Aber jetzt gibt es nur einen Wert, nicht zwei." -#: appObjects/FlatCAMGerber.py:403 appTools/ToolIsolation.py:1610 +#: appObjects/FlatCAMGeometry.py:2628 appTools/ToolDrilling.py:1362 +#: appTools/ToolMilling.py:1488 +msgid "Delete failed. There are no exclusion areas to delete." +msgstr "Löschen fehlgeschlagen. Es sind keine Ausschlussbereiche zu löschen." + +#: appObjects/FlatCAMGeometry.py:2645 appTools/ToolDrilling.py:1379 +#: appTools/ToolMilling.py:1505 +msgid "Delete failed. Nothing is selected." +msgstr "Löschen fehlgeschlagen. Es ist nichts ausgewählt." + +#: appObjects/FlatCAMGerber.py:347 appTools/ToolIsolation.py:1302 msgid "Buffering solid geometry" msgstr "Festkörpergeometrie puffern" -#: appObjects/FlatCAMGerber.py:410 appTools/ToolIsolation.py:1632 +#: appObjects/FlatCAMGerber.py:354 appTools/ToolIsolation.py:1324 msgid "Done" msgstr "Fertig" -#: appObjects/FlatCAMGerber.py:436 appObjects/FlatCAMGerber.py:462 +#: appObjects/FlatCAMGerber.py:380 appObjects/FlatCAMGerber.py:406 msgid "Operation could not be done." msgstr "Operation konnte nicht durchgeführt werden." -#: appObjects/FlatCAMGerber.py:594 appObjects/FlatCAMGerber.py:668 -#: appTools/ToolIsolation.py:1844 appTools/ToolIsolation.py:2172 -#: appTools/ToolNCC.py:2117 appTools/ToolNCC.py:3197 appTools/ToolNCC.py:3576 +#: appObjects/FlatCAMGerber.py:538 appObjects/FlatCAMGerber.py:612 +#: appTools/ToolIsolation.py:1545 appTools/ToolIsolation.py:1913 +#: appTools/ToolNCC.py:1806 appTools/ToolNCC.py:2771 appTools/ToolNCC.py:3150 msgid "Isolation geometry could not be generated." msgstr "Isolationsgeometrie konnte nicht generiert werden." -#: appObjects/FlatCAMGerber.py:619 appObjects/FlatCAMGerber.py:746 -#: appTools/ToolIsolation.py:1908 appTools/ToolIsolation.py:2077 -#: appTools/ToolIsolation.py:2248 +#: appObjects/FlatCAMGerber.py:563 appObjects/FlatCAMGerber.py:690 +#: appTools/ToolIsolation.py:1612 appTools/ToolIsolation.py:1808 +#: appTools/ToolIsolation.py:1997 msgid "Isolation geometry created" msgstr "Isolationsgeometrie erstellt" -#: appObjects/FlatCAMGerber.py:1041 +#: appObjects/FlatCAMGerber.py:972 msgid "Plotting Apertures" msgstr "Plotten Apertures" -#: appObjects/FlatCAMObj.py:237 +#: appObjects/FlatCAMObj.py:241 msgid "Name changed from" msgstr "Name geändert von" -#: appObjects/FlatCAMObj.py:237 +#: appObjects/FlatCAMObj.py:241 msgid "to" msgstr "zu" -#: appObjects/FlatCAMObj.py:248 +#: appObjects/FlatCAMObj.py:252 msgid "Offsetting..." msgstr "Offset hinzufügen ..." -#: appObjects/FlatCAMObj.py:262 appObjects/FlatCAMObj.py:267 +#: appObjects/FlatCAMObj.py:266 appObjects/FlatCAMObj.py:271 msgid "Scaling could not be executed." msgstr "Skalierungsaktion wurde nicht ausgeführt." -#: appObjects/FlatCAMObj.py:271 appObjects/FlatCAMObj.py:279 +#: appObjects/FlatCAMObj.py:275 appObjects/FlatCAMObj.py:283 msgid "Scale done." msgstr "Skalieren Sie fertig." -#: appObjects/FlatCAMObj.py:277 +#: appObjects/FlatCAMObj.py:281 msgid "Scaling..." msgstr "Skalierung ..." -#: appObjects/FlatCAMObj.py:295 +#: appObjects/FlatCAMObj.py:299 msgid "Skewing..." msgstr "Verziehen..." -#: appObjects/FlatCAMScript.py:163 +#: appObjects/FlatCAMScript.py:160 msgid "Script Editor" msgstr "Script Editor" -#: appObjects/ObjectCollection.py:514 +#: appObjects/ObjectCollection.py:519 #, python-brace-format msgid "Object renamed from {old} to {new}" msgstr "Objekt umbenannt von {old} zu {new}" -#: appObjects/ObjectCollection.py:926 appObjects/ObjectCollection.py:932 -#: appObjects/ObjectCollection.py:938 appObjects/ObjectCollection.py:944 -#: appObjects/ObjectCollection.py:950 appObjects/ObjectCollection.py:956 -#: app_Main.py:6359 app_Main.py:6365 app_Main.py:6371 app_Main.py:6377 +#: appObjects/ObjectCollection.py:933 appObjects/ObjectCollection.py:939 +#: appObjects/ObjectCollection.py:945 appObjects/ObjectCollection.py:951 +#: appObjects/ObjectCollection.py:957 appObjects/ObjectCollection.py:963 +#: app_Main.py:6696 app_Main.py:6702 app_Main.py:6708 app_Main.py:6714 msgid "selected" msgstr "ausgewählt" -#: appObjects/ObjectCollection.py:987 +#: appObjects/ObjectCollection.py:994 msgid "Cause of error" msgstr "Fehlerursache" -#: appObjects/ObjectCollection.py:1188 +#: appObjects/ObjectCollection.py:1195 msgid "All objects are selected." msgstr "Alle Objekte werden ausgewählt." -#: appObjects/ObjectCollection.py:1198 +#: appObjects/ObjectCollection.py:1205 msgid "Objects selection is cleared." msgstr "Die Objektauswahl wird gelöscht." -#: appParsers/ParseExcellon.py:315 +#: appParsers/ParseExcellon.py:292 msgid "This is GCODE mark" msgstr "Dies ist die GCODE-Marke" -#: appParsers/ParseExcellon.py:432 +#: appParsers/ParseExcellon.py:436 msgid "" "No tool diameter info's. See shell.\n" "A tool change event: T" @@ -12657,7 +13813,7 @@ msgstr "" "Keine Angaben zum Werkzeugdurchmesser. Siehe Shell.\n" "Ein Werkzeugwechselereignis: T" -#: appParsers/ParseExcellon.py:435 +#: appParsers/ParseExcellon.py:439 msgid "" "was found but the Excellon file have no informations regarding the tool " "diameters therefore the application will try to load it by using some 'fake' " @@ -12671,7 +13827,7 @@ msgstr "" "Der Benutzer muss das resultierende Excellon-Objekt bearbeiten und die " "Durchmesser so ändern, dass sie den tatsächlichen Durchmessern entsprechen." -#: appParsers/ParseExcellon.py:899 +#: appParsers/ParseExcellon.py:975 msgid "" "Excellon Parser error.\n" "Parsing Failed. Line" @@ -12679,40 +13835,30 @@ msgstr "" "Excellon-Parser-Fehler.\n" "Analyse fehlgeschlagen. Linie" -#: appParsers/ParseExcellon.py:981 -msgid "" -"Excellon.create_geometry() -> a drill location was skipped due of not having " -"a tool associated.\n" -"Check the resulting GCode." -msgstr "" -"Excellon.create_geometry () -> Eine Bohrposition wurde übersprungen, da kein " -"Werkzeug zugeordnet ist.\n" -"Überprüfen Sie den resultierenden GCode." - #: appParsers/ParseFont.py:303 msgid "Font not supported, try another one." msgstr "Schriftart wird nicht unterstützt, versuchen Sie es mit einer anderen." -#: appParsers/ParseGerber.py:425 +#: appParsers/ParseGerber.py:426 msgid "Gerber processing. Parsing" msgstr "Gerber-Verarbeitung. Parsing" -#: appParsers/ParseGerber.py:425 appParsers/ParseHPGL2.py:181 +#: appParsers/ParseGerber.py:426 appParsers/ParseHPGL2.py:201 msgid "lines" msgstr "Linien" -#: appParsers/ParseGerber.py:1001 appParsers/ParseGerber.py:1101 -#: appParsers/ParseHPGL2.py:274 appParsers/ParseHPGL2.py:288 -#: appParsers/ParseHPGL2.py:307 appParsers/ParseHPGL2.py:331 -#: appParsers/ParseHPGL2.py:366 +#: appParsers/ParseGerber.py:1037 appParsers/ParseGerber.py:1137 +#: appParsers/ParseHPGL2.py:294 appParsers/ParseHPGL2.py:308 +#: appParsers/ParseHPGL2.py:327 appParsers/ParseHPGL2.py:351 +#: appParsers/ParseHPGL2.py:386 msgid "Coordinates missing, line ignored" msgstr "Koordinaten fehlen, Zeile wird ignoriert" -#: appParsers/ParseGerber.py:1003 appParsers/ParseGerber.py:1103 +#: appParsers/ParseGerber.py:1039 appParsers/ParseGerber.py:1139 msgid "GERBER file might be CORRUPT. Check the file !!!" msgstr "Die GERBER-Datei könnte CORRUPT sein. Überprüfen Sie die Datei !!!" -#: appParsers/ParseGerber.py:1057 +#: appParsers/ParseGerber.py:1093 msgid "" "Region does not have enough points. File will be processed but there are " "parser errors. Line number" @@ -12720,63 +13866,63 @@ msgstr "" "Region hat nicht genug Punkte. Die Datei wird verarbeitet, es treten jedoch " "Parserfehler auf. Linien Nummer" -#: appParsers/ParseGerber.py:1487 appParsers/ParseHPGL2.py:401 +#: appParsers/ParseGerber.py:1523 appParsers/ParseHPGL2.py:421 msgid "Gerber processing. Joining polygons" msgstr "Gerber-Verarbeitung. Polygone verbinden" -#: appParsers/ParseGerber.py:1505 +#: appParsers/ParseGerber.py:1541 msgid "Gerber processing. Applying Gerber polarity." msgstr "Gerber-Verarbeitung. Anwenden der Gerber-Polarität." -#: appParsers/ParseGerber.py:1565 +#: appParsers/ParseGerber.py:1601 msgid "Gerber Line" msgstr "Gerber Linie" -#: appParsers/ParseGerber.py:1565 +#: appParsers/ParseGerber.py:1601 msgid "Gerber Line Content" msgstr "Gerber-Zeileninhalt" -#: appParsers/ParseGerber.py:1567 +#: appParsers/ParseGerber.py:1603 msgid "Gerber Parser ERROR" msgstr "Gerber-Parser FEHLER" -#: appParsers/ParseGerber.py:1957 +#: appParsers/ParseGerber.py:2043 msgid "Gerber Scale done." msgstr "Gerber-Skalierung erfolgt." -#: appParsers/ParseGerber.py:2049 +#: appParsers/ParseGerber.py:2135 msgid "Gerber Offset done." msgstr "Gerber Offset fertig." -#: appParsers/ParseGerber.py:2125 +#: appParsers/ParseGerber.py:2211 msgid "Gerber Mirror done." msgstr "Gerber Spiegel fertig." -#: appParsers/ParseGerber.py:2199 +#: appParsers/ParseGerber.py:2285 msgid "Gerber Skew done." msgstr "Gerber-Versatz fertig." -#: appParsers/ParseGerber.py:2261 +#: appParsers/ParseGerber.py:2347 msgid "Gerber Rotate done." msgstr "Gerber drehen fertig." -#: appParsers/ParseGerber.py:2418 +#: appParsers/ParseGerber.py:2504 msgid "Gerber Buffer done." msgstr "Gerber Buffer fertig." -#: appParsers/ParseHPGL2.py:181 +#: appParsers/ParseHPGL2.py:201 msgid "HPGL2 processing. Parsing" msgstr "HPGL2 -Verarbeitung. Parsing" -#: appParsers/ParseHPGL2.py:413 +#: appParsers/ParseHPGL2.py:433 msgid "HPGL2 Line" msgstr "HPGL2-Linie" -#: appParsers/ParseHPGL2.py:413 +#: appParsers/ParseHPGL2.py:433 msgid "HPGL2 Line Content" msgstr "HPGL2-Zeileninhalt" -#: appParsers/ParseHPGL2.py:414 +#: appParsers/ParseHPGL2.py:434 msgid "HPGL2 Parser ERROR" msgstr "HPGL2 -Parser FEHLER" @@ -12784,15 +13930,54 @@ msgstr "HPGL2 -Parser FEHLER" msgid "processes running." msgstr "laufende Prozesse." -#: appTools/ToolAlignObjects.py:32 +#: appTools/ToolAlignObjects.py:32 appTools/ToolAlignObjects.py:360 msgid "Align Objects" msgstr "Objekte ausrichten" -#: appTools/ToolAlignObjects.py:61 +#: appTools/ToolAlignObjects.py:104 +msgid "Align Tool" +msgstr "Ausrichten Werkzeug" + +#: appTools/ToolAlignObjects.py:149 +msgid "There is no aligned FlatCAM object selected..." +msgstr "Es ist kein ausgerichtetes FlatCAM-Objekt ausgewählt ..." + +#: appTools/ToolAlignObjects.py:159 +msgid "There is no aligner FlatCAM object selected..." +msgstr "Es ist kein Aligner FlatCAM-Objekt ausgewählt ..." + +#: appTools/ToolAlignObjects.py:181 appTools/ToolAlignObjects.py:245 +msgid "First Point" +msgstr "Erster Punkt" + +#: appTools/ToolAlignObjects.py:181 appTools/ToolAlignObjects.py:260 +msgid "Click on the START point." +msgstr "Klicken Sie auf den START-Punkt." + +#: appTools/ToolAlignObjects.py:240 appTools/ToolCalibration.py:276 +#: appTools/ToolDblSided.py:285 +msgid "Cancelled by user request." +msgstr "Auf Benutzerwunsch storniert." + +#: appTools/ToolAlignObjects.py:245 appTools/ToolAlignObjects.py:267 +msgid "Click on the DESTINATION point." +msgstr "Klicken Sie auf den Punkt ZIEL." + +#: appTools/ToolAlignObjects.py:245 appTools/ToolAlignObjects.py:260 +#: appTools/ToolAlignObjects.py:267 +msgid "Or right click to cancel." +msgstr "Oder klicken Sie mit der rechten Maustaste, um abzubrechen." + +#: appTools/ToolAlignObjects.py:260 appTools/ToolAlignObjects.py:267 +#: appTools/ToolFiducials.py:718 +msgid "Second Point" +msgstr "Zweiter Punkt" + +#: appTools/ToolAlignObjects.py:386 msgid "MOVING object" msgstr "BEWEGLICHES Objekt" -#: appTools/ToolAlignObjects.py:65 +#: appTools/ToolAlignObjects.py:390 msgid "" "Specify the type of object to be aligned.\n" "It can be of type: Gerber or Excellon.\n" @@ -12804,15 +13989,17 @@ msgstr "" "Die Auswahl hier entscheidet über die Art der Objekte, die sein werden\n" "in der Objekt-Combobox." -#: appTools/ToolAlignObjects.py:86 +#: appTools/ToolAlignObjects.py:411 msgid "Object to be aligned." msgstr "Zu ausrichtendes Objekt." -#: appTools/ToolAlignObjects.py:98 -msgid "TARGET object" +#: appTools/ToolAlignObjects.py:423 +#, fuzzy +#| msgid "TARGET object" +msgid "DESTINATION object" msgstr "ZIEL-Objekt" -#: appTools/ToolAlignObjects.py:100 +#: appTools/ToolAlignObjects.py:425 msgid "" "Specify the type of object to be aligned to.\n" "It can be of type: Gerber or Excellon.\n" @@ -12824,15 +14011,15 @@ msgstr "" "Die Auswahl hier entscheidet über die Art der Objekte, die sein werden\n" "in der Objekt-Combobox." -#: appTools/ToolAlignObjects.py:122 +#: appTools/ToolAlignObjects.py:447 msgid "Object to be aligned to. Aligner." msgstr "Objekt, an dem ausgerichtet werden soll. Aligner." -#: appTools/ToolAlignObjects.py:135 +#: appTools/ToolAlignObjects.py:460 msgid "Alignment Type" msgstr "AusrichtungstypAusrichtung" -#: appTools/ToolAlignObjects.py:137 +#: appTools/ToolAlignObjects.py:462 msgid "" "The type of alignment can be:\n" "- Single Point -> it require a single point of sync, the action will be a " @@ -12846,19 +14033,19 @@ msgstr "" "- Doppelpunkt -> Es sind zwei Synchronisierungspunkte erforderlich. Die " "Aktion wird verschoben und anschließend gedreht" -#: appTools/ToolAlignObjects.py:143 +#: appTools/ToolAlignObjects.py:468 msgid "Single Point" msgstr "Einziger Punkt" -#: appTools/ToolAlignObjects.py:144 +#: appTools/ToolAlignObjects.py:469 msgid "Dual Point" msgstr "Doppelpunkt" -#: appTools/ToolAlignObjects.py:159 +#: appTools/ToolAlignObjects.py:481 msgid "Align Object" msgstr "Objekt ausrichten" -#: appTools/ToolAlignObjects.py:161 +#: appTools/ToolAlignObjects.py:483 msgid "" "Align the specified object to the aligner object.\n" "If only one point is used then it assumes translation.\n" @@ -12869,93 +14056,61 @@ msgstr "" "Wenn diese Punkte verwendet werden, wird eine Translation und Rotation " "angenommen." -#: appTools/ToolAlignObjects.py:176 appTools/ToolCalculators.py:246 -#: appTools/ToolCalibration.py:683 appTools/ToolCopperThieving.py:488 -#: appTools/ToolCorners.py:182 appTools/ToolCutOut.py:362 -#: appTools/ToolDblSided.py:471 appTools/ToolEtchCompensation.py:240 -#: appTools/ToolExtractDrills.py:310 appTools/ToolFiducials.py:321 -#: appTools/ToolFilm.py:503 appTools/ToolInvertGerber.py:143 -#: appTools/ToolIsolation.py:612 appTools/ToolNCC.py:612 -#: appTools/ToolOptimal.py:243 appTools/ToolPaint.py:555 -#: appTools/ToolPanelize.py:280 appTools/ToolPunchGerber.py:339 -#: appTools/ToolQRCode.py:323 appTools/ToolRulesCheck.py:516 -#: appTools/ToolSolderPaste.py:481 appTools/ToolSub.py:181 -#: appTools/ToolTransform.py:433 +#: appTools/ToolAlignObjects.py:498 appTools/ToolCalculators.py:372 +#: appTools/ToolCalibration.py:1378 appTools/ToolCopperThieving.py:1577 +#: appTools/ToolCorners.py:444 appTools/ToolCutOut.py:2152 +#: appTools/ToolDblSided.py:947 appTools/ToolDrilling.py:2635 +#: appTools/ToolEtchCompensation.py:458 appTools/ToolExtractDrills.py:702 +#: appTools/ToolFiducials.py:932 appTools/ToolFilm.py:1222 +#: appTools/ToolInvertGerber.py:286 appTools/ToolIsolation.py:3422 +#: appTools/ToolMilling.py:2324 appTools/ToolNCC.py:4264 +#: appTools/ToolOptimal.py:593 appTools/ToolPaint.py:3192 +#: appTools/ToolPanelize.py:889 appTools/ToolPunchGerber.py:993 +#: appTools/ToolQRCode.py:901 appTools/ToolRulesCheck.py:1618 +#: appTools/ToolSolderPaste.py:1557 appTools/ToolSub.py:752 +#: appTools/ToolTransform.py:920 msgid "Reset Tool" msgstr "Reset Werkzeug" -#: appTools/ToolAlignObjects.py:178 appTools/ToolCalculators.py:248 -#: appTools/ToolCalibration.py:685 appTools/ToolCopperThieving.py:490 -#: appTools/ToolCorners.py:184 appTools/ToolCutOut.py:364 -#: appTools/ToolDblSided.py:473 appTools/ToolEtchCompensation.py:242 -#: appTools/ToolExtractDrills.py:312 appTools/ToolFiducials.py:323 -#: appTools/ToolFilm.py:505 appTools/ToolInvertGerber.py:145 -#: appTools/ToolIsolation.py:614 appTools/ToolNCC.py:614 -#: appTools/ToolOptimal.py:245 appTools/ToolPaint.py:557 -#: appTools/ToolPanelize.py:282 appTools/ToolPunchGerber.py:341 -#: appTools/ToolQRCode.py:325 appTools/ToolRulesCheck.py:518 -#: appTools/ToolSolderPaste.py:483 appTools/ToolSub.py:183 -#: appTools/ToolTransform.py:435 +#: appTools/ToolAlignObjects.py:501 appTools/ToolCalculators.py:375 +#: appTools/ToolCalibration.py:1381 appTools/ToolCopperThieving.py:1580 +#: appTools/ToolCorners.py:447 appTools/ToolCutOut.py:2155 +#: appTools/ToolDblSided.py:950 appTools/ToolDrilling.py:2638 +#: appTools/ToolEtchCompensation.py:461 appTools/ToolExtractDrills.py:705 +#: appTools/ToolFiducials.py:935 appTools/ToolFilm.py:1225 +#: appTools/ToolInvertGerber.py:289 appTools/ToolIsolation.py:3425 +#: appTools/ToolMilling.py:2327 appTools/ToolNCC.py:4267 +#: appTools/ToolOptimal.py:596 appTools/ToolPaint.py:3195 +#: appTools/ToolPanelize.py:892 appTools/ToolPunchGerber.py:996 +#: appTools/ToolQRCode.py:904 appTools/ToolRulesCheck.py:1621 +#: appTools/ToolSolderPaste.py:1560 appTools/ToolSub.py:755 +#: appTools/ToolTransform.py:923 msgid "Will reset the tool parameters." msgstr "Wird die Werkzeugeinstellungen zurücksetzen." -#: appTools/ToolAlignObjects.py:244 -msgid "Align Tool" -msgstr "Ausrichten Werkzeug" +#: appTools/ToolCalculators.py:77 +msgid "Calc. Tool" +msgstr "Rechner-Tool" -#: appTools/ToolAlignObjects.py:289 -msgid "There is no aligned FlatCAM object selected..." -msgstr "Es ist kein ausgerichtetes FlatCAM-Objekt ausgewählt ..." - -#: appTools/ToolAlignObjects.py:299 -msgid "There is no aligner FlatCAM object selected..." -msgstr "Es ist kein Aligner FlatCAM-Objekt ausgewählt ..." - -#: appTools/ToolAlignObjects.py:321 appTools/ToolAlignObjects.py:385 -msgid "First Point" -msgstr "Erster Punkt" - -#: appTools/ToolAlignObjects.py:321 appTools/ToolAlignObjects.py:400 -msgid "Click on the START point." -msgstr "Klicken Sie auf den START-Punkt." - -#: appTools/ToolAlignObjects.py:380 appTools/ToolCalibration.py:920 -msgid "Cancelled by user request." -msgstr "Auf Benutzerwunsch storniert." - -#: appTools/ToolAlignObjects.py:385 appTools/ToolAlignObjects.py:407 -msgid "Click on the DESTINATION point." -msgstr "Klicken Sie auf den Punkt ZIEL." - -#: appTools/ToolAlignObjects.py:385 appTools/ToolAlignObjects.py:400 -#: appTools/ToolAlignObjects.py:407 -msgid "Or right click to cancel." -msgstr "Oder klicken Sie mit der rechten Maustaste, um abzubrechen." - -#: appTools/ToolAlignObjects.py:400 appTools/ToolAlignObjects.py:407 -#: appTools/ToolFiducials.py:107 -msgid "Second Point" -msgstr "Zweiter Punkt" - -#: appTools/ToolCalculators.py:24 +#: appTools/ToolCalculators.py:151 msgid "Calculators" msgstr "Rechner" -#: appTools/ToolCalculators.py:26 +#: appTools/ToolCalculators.py:153 msgid "Units Calculator" msgstr "Einheitenrechner" -#: appTools/ToolCalculators.py:70 +#: appTools/ToolCalculators.py:196 msgid "Here you enter the value to be converted from INCH to MM" msgstr "" "Hier geben Sie den Wert ein, der von Zoll in Metrik konvertiert werden soll" -#: appTools/ToolCalculators.py:75 +#: appTools/ToolCalculators.py:201 msgid "Here you enter the value to be converted from MM to INCH" msgstr "" "Hier geben Sie den Wert ein, der von Metrik in Zoll konvertiert werden soll" -#: appTools/ToolCalculators.py:111 +#: appTools/ToolCalculators.py:237 msgid "" "This is the angle of the tip of the tool.\n" "It is specified by manufacturer." @@ -12963,7 +14118,7 @@ msgstr "" "Dies ist der Winkel der Werkzeugspitze.\n" "Es wird vom Hersteller angegeben." -#: appTools/ToolCalculators.py:120 +#: appTools/ToolCalculators.py:246 msgid "" "This is the depth to cut into the material.\n" "In the CNCJob is the CutZ parameter." @@ -12971,7 +14126,7 @@ msgstr "" "Dies ist die Tiefe, in die das Material geschnitten werden soll.\n" "Im CNCJob befindet sich der Parameter CutZ." -#: appTools/ToolCalculators.py:128 +#: appTools/ToolCalculators.py:254 msgid "" "This is the tool diameter to be entered into\n" "FlatCAM Gerber section.\n" @@ -12981,11 +14136,11 @@ msgstr "" "FlatCAM-Gerber-Bereich.\n" "Im CNCJob-Bereich heißt es >Werkzeugdurchmesser<." -#: appTools/ToolCalculators.py:139 appTools/ToolCalculators.py:235 +#: appTools/ToolCalculators.py:265 appTools/ToolCalculators.py:361 msgid "Calculate" msgstr "Berechnung" -#: appTools/ToolCalculators.py:142 +#: appTools/ToolCalculators.py:268 msgid "" "Calculate either the Cut Z or the effective tool diameter,\n" " depending on which is desired and which is known. " @@ -12994,11 +14149,11 @@ msgstr "" "Werkzeugdurchmesser.\n" " je nachdem was gewünscht wird und was bekannt ist. " -#: appTools/ToolCalculators.py:205 +#: appTools/ToolCalculators.py:331 msgid "Current Value" msgstr "Aktueller Wert" -#: appTools/ToolCalculators.py:212 +#: appTools/ToolCalculators.py:338 msgid "" "This is the current intensity value\n" "to be set on the Power Supply. In Amps." @@ -13006,11 +14161,11 @@ msgstr "" "Dies ist der aktuelle Intensitätswert\n" "am Netzteil einstellen. In Ampere." -#: appTools/ToolCalculators.py:216 +#: appTools/ToolCalculators.py:342 msgid "Time" msgstr "Zeit" -#: appTools/ToolCalculators.py:223 +#: appTools/ToolCalculators.py:349 msgid "" "This is the calculated time required for the procedure.\n" "In minutes." @@ -13018,7 +14173,7 @@ msgstr "" "Dies ist die berechnete Zeit, die für das Verfahren benötigt wird.\n" "In Minuten." -#: appTools/ToolCalculators.py:238 +#: appTools/ToolCalculators.py:364 msgid "" "Calculate the current intensity value and the procedure time,\n" "depending on the parameters above" @@ -13026,19 +14181,60 @@ msgstr "" "Berechnen Sie den aktuellen Intensitätswert und die Eingriffszeit,\n" "abhängig von den obigen Parametern" -#: appTools/ToolCalculators.py:299 -msgid "Calc. Tool" -msgstr "Rechner-Tool" +#: appTools/ToolCalibration.py:156 +msgid "Tool initialized" +msgstr "Werkzeug eingerichtet" -#: appTools/ToolCalibration.py:69 +#: appTools/ToolCalibration.py:194 +msgid "There is no source FlatCAM object selected..." +msgstr "Es is kein FlatCAM Objekt ausgewählt." + +#: appTools/ToolCalibration.py:215 +msgid "Get First calibration point. Bottom Left..." +msgstr "Lese ersten Kalibrierungspunkt (Unten Links)" + +#: appTools/ToolCalibration.py:282 +msgid "Get Second calibration point. Bottom Right (Top Left)..." +msgstr "Zweiter Kalibrierungspunkt abrufen. Unten rechts (oben links) ..." + +#: appTools/ToolCalibration.py:286 +msgid "Get Third calibration point. Top Left (Bottom Right)..." +msgstr "" +"Holen Sie sich den dritten Kalibrierungspunkt. Oben links unten rechts)..." + +#: appTools/ToolCalibration.py:290 +msgid "Get Forth calibration point. Top Right..." +msgstr "Lese vierten Kalibrierungspunkt (Oben Rechts)" + +#: appTools/ToolCalibration.py:294 +msgid "Done. All four points have been acquired." +msgstr "Erledigt, alle vier Punkte wurden gelesen." + +#: appTools/ToolCalibration.py:325 +msgid "Verification GCode for FlatCAM Calibration Tool" +msgstr "Überprüfungs GCode des FlatCAM Kalibrierungstools" + +#: appTools/ToolCalibration.py:337 appTools/ToolCalibration.py:423 +msgid "Gcode Viewer" +msgstr "GCode Anzeige" + +#: appTools/ToolCalibration.py:353 +msgid "Cancelled. Four points are needed for GCode generation." +msgstr "Abgebrochen. Es werden vier Punkte zur GCode Erzeugung benötigt." + +#: appTools/ToolCalibration.py:603 appTools/ToolCalibration.py:699 +msgid "There is no FlatCAM object selected..." +msgstr "Es ist kein FlatCAM Objekt ausgewählt." + +#: appTools/ToolCalibration.py:764 msgid "Parameters used when creating the GCode in this tool." msgstr "Verwendete Parameter zum Erzeugen des GCodes mit diesem Wwerkzeug." -#: appTools/ToolCalibration.py:173 +#: appTools/ToolCalibration.py:868 msgid "STEP 1: Acquire Calibration Points" msgstr "Schritt 1: Kalibrierungspunkte erzeugen" -#: appTools/ToolCalibration.py:175 +#: appTools/ToolCalibration.py:870 msgid "" "Pick four points by clicking on canvas.\n" "Those four points should be in the four\n" @@ -13048,25 +14244,24 @@ msgstr "" "Diese vier Punkte sollten in den vier sein\n" "(so viel wie möglich) Ecken des Objekts." -#: appTools/ToolCalibration.py:193 appTools/ToolFilm.py:71 -#: appTools/ToolImage.py:54 appTools/ToolPanelize.py:77 -#: appTools/ToolProperties.py:177 +#: appTools/ToolCalibration.py:888 appTools/ToolImage.py:196 +#: appTools/ToolPanelize.py:676 appTools/ToolProperties.py:180 msgid "Object Type" msgstr "Objekttyp" -#: appTools/ToolCalibration.py:210 +#: appTools/ToolCalibration.py:905 msgid "Source object selection" msgstr "Auswahl des Quellobjekts" -#: appTools/ToolCalibration.py:212 +#: appTools/ToolCalibration.py:907 msgid "FlatCAM Object to be used as a source for reference points." msgstr "Das FlatCAM-Objekt, das als Referenzpunkt verwendet werden soll." -#: appTools/ToolCalibration.py:218 +#: appTools/ToolCalibration.py:913 msgid "Calibration Points" msgstr "Kalibrierungspunkte" -#: appTools/ToolCalibration.py:220 +#: appTools/ToolCalibration.py:915 msgid "" "Contain the expected calibration points and the\n" "ones measured." @@ -13074,52 +14269,52 @@ msgstr "" "Enthalten die erwarteten Kalibrierungspunkte sowie\n" "die gemessenen." -#: appTools/ToolCalibration.py:235 appTools/ToolSub.py:81 -#: appTools/ToolSub.py:136 +#: appTools/ToolCalibration.py:930 appTools/ToolSub.py:652 +#: appTools/ToolSub.py:707 msgid "Target" msgstr "Ziel" -#: appTools/ToolCalibration.py:236 +#: appTools/ToolCalibration.py:931 msgid "Found Delta" msgstr "Gefundener Unterschied" -#: appTools/ToolCalibration.py:248 +#: appTools/ToolCalibration.py:943 msgid "Bot Left X" msgstr "Unten links X" -#: appTools/ToolCalibration.py:257 +#: appTools/ToolCalibration.py:952 msgid "Bot Left Y" msgstr "Unten links Y" -#: appTools/ToolCalibration.py:275 +#: appTools/ToolCalibration.py:970 msgid "Bot Right X" msgstr "Unten rechts X" -#: appTools/ToolCalibration.py:285 +#: appTools/ToolCalibration.py:980 msgid "Bot Right Y" msgstr "Unten rechts Y" -#: appTools/ToolCalibration.py:300 +#: appTools/ToolCalibration.py:995 msgid "Top Left X" msgstr "Oben links X" -#: appTools/ToolCalibration.py:309 +#: appTools/ToolCalibration.py:1004 msgid "Top Left Y" msgstr "Oben links Y" -#: appTools/ToolCalibration.py:324 +#: appTools/ToolCalibration.py:1019 msgid "Top Right X" msgstr "Oben rechts X" -#: appTools/ToolCalibration.py:334 +#: appTools/ToolCalibration.py:1029 msgid "Top Right Y" msgstr "Oben rechts Y" -#: appTools/ToolCalibration.py:367 +#: appTools/ToolCalibration.py:1062 msgid "Get Points" msgstr "Punkte einholen" -#: appTools/ToolCalibration.py:369 +#: appTools/ToolCalibration.py:1064 msgid "" "Pick four points by clicking on canvas if the source choice\n" "is 'free' or inside the object geometry if the source is 'object'.\n" @@ -13131,11 +14326,11 @@ msgstr "" "Diese vier Punkte sollten in vier unterschiedlichen Quadranten des Objektes " "sein." -#: appTools/ToolCalibration.py:390 +#: appTools/ToolCalibration.py:1085 msgid "STEP 2: Verification GCode" msgstr "Schritt 2: Überprüfung des GCodes" -#: appTools/ToolCalibration.py:392 appTools/ToolCalibration.py:405 +#: appTools/ToolCalibration.py:1087 appTools/ToolCalibration.py:1100 msgid "" "Generate GCode file to locate and align the PCB by using\n" "the four points acquired above.\n" @@ -13155,15 +14350,15 @@ msgstr "" "- dritter Punkt -> Kontrollpunkt. Kann sein: oben links oder unten rechts.\n" "- vierter Punkt -> letzter Verifizierungspunkt. Nur zur Bewertung." -#: appTools/ToolCalibration.py:403 appTools/ToolSolderPaste.py:344 +#: appTools/ToolCalibration.py:1098 appTools/ToolSolderPaste.py:1420 msgid "Generate GCode" msgstr "GCode generieren" -#: appTools/ToolCalibration.py:429 +#: appTools/ToolCalibration.py:1124 msgid "STEP 3: Adjustments" msgstr "Schritt 3: Anpassungen" -#: appTools/ToolCalibration.py:431 appTools/ToolCalibration.py:440 +#: appTools/ToolCalibration.py:1126 appTools/ToolCalibration.py:1135 msgid "" "Calculate Scale and Skew factors based on the differences (delta)\n" "found when checking the PCB pattern. The differences must be filled\n" @@ -13174,15 +14369,15 @@ msgstr "" "Feldern\n" "eingetragen warden." -#: appTools/ToolCalibration.py:438 +#: appTools/ToolCalibration.py:1133 msgid "Calculate Factors" msgstr "Berechne Faktoren" -#: appTools/ToolCalibration.py:460 +#: appTools/ToolCalibration.py:1155 msgid "STEP 4: Adjusted GCode" msgstr "Schritt 4 Angepasster GCode" -#: appTools/ToolCalibration.py:462 +#: appTools/ToolCalibration.py:1157 msgid "" "Generate verification GCode file adjusted with\n" "the factors above." @@ -13190,51 +14385,51 @@ msgstr "" "Erzeuge den GCode mit den zuvor gefundenen\n" "Faktoren." -#: appTools/ToolCalibration.py:467 +#: appTools/ToolCalibration.py:1162 msgid "Scale Factor X:" msgstr "Skalierungsfaktor X:" -#: appTools/ToolCalibration.py:469 +#: appTools/ToolCalibration.py:1164 msgid "Factor for Scale action over X axis." msgstr "Faktor für die Skalierungsaktion über der X-Achse." -#: appTools/ToolCalibration.py:479 +#: appTools/ToolCalibration.py:1174 msgid "Scale Factor Y:" msgstr "Skalierungsfaktor Y:" -#: appTools/ToolCalibration.py:481 +#: appTools/ToolCalibration.py:1176 msgid "Factor for Scale action over Y axis." msgstr "Faktor für die Skalierungsaktion über der Y-Achse." -#: appTools/ToolCalibration.py:491 +#: appTools/ToolCalibration.py:1186 msgid "Apply Scale Factors" msgstr "Skalierungen anwenden" -#: appTools/ToolCalibration.py:493 +#: appTools/ToolCalibration.py:1188 msgid "Apply Scale factors on the calibration points." msgstr "Anwenden der Skalierungsfaktoren auf die Kalibrierungspunkte." -#: appTools/ToolCalibration.py:503 +#: appTools/ToolCalibration.py:1198 msgid "Skew Angle X:" msgstr "Verzerrungs-Winkel X:" -#: appTools/ToolCalibration.py:516 +#: appTools/ToolCalibration.py:1211 msgid "Skew Angle Y:" msgstr "Verzerrungs-Winkel Y:" -#: appTools/ToolCalibration.py:529 +#: appTools/ToolCalibration.py:1224 msgid "Apply Skew Factors" msgstr "Schrägstellung anwenden" -#: appTools/ToolCalibration.py:531 +#: appTools/ToolCalibration.py:1226 msgid "Apply Skew factors on the calibration points." msgstr "Anwenden der Verzerrungswinkel auf die Bezugspunkte." -#: appTools/ToolCalibration.py:600 +#: appTools/ToolCalibration.py:1295 msgid "Generate Adjusted GCode" msgstr "Angepassten Überprüfungs-GCode generieren" -#: appTools/ToolCalibration.py:602 +#: appTools/ToolCalibration.py:1297 msgid "" "Generate verification GCode file adjusted with\n" "the factors set above.\n" @@ -13246,11 +14441,11 @@ msgstr "" "Die GCode-Parameter können neu eingestellt werden\n" "bevor Sie auf diese Schaltfläche klicken." -#: appTools/ToolCalibration.py:623 +#: appTools/ToolCalibration.py:1318 msgid "STEP 5: Calibrate FlatCAM Objects" msgstr "Schritt 5: Kalibrieren der FlatCAM Objekte" -#: appTools/ToolCalibration.py:625 +#: appTools/ToolCalibration.py:1320 msgid "" "Adjust the FlatCAM objects\n" "with the factors determined and verified above." @@ -13258,27 +14453,27 @@ msgstr "" "Anpassen der FlatCAM Objekte\n" "mit den zuvor bestimmten und überprüften Faktoren." -#: appTools/ToolCalibration.py:637 +#: appTools/ToolCalibration.py:1332 msgid "Adjusted object type" msgstr "Angepasster Objekttyp" -#: appTools/ToolCalibration.py:638 +#: appTools/ToolCalibration.py:1333 msgid "Type of the FlatCAM Object to be adjusted." msgstr "Art des FlatCAM Objektes das angepasst wird." -#: appTools/ToolCalibration.py:651 +#: appTools/ToolCalibration.py:1346 msgid "Adjusted object selection" msgstr "Objektauswahl angepasst" -#: appTools/ToolCalibration.py:653 +#: appTools/ToolCalibration.py:1348 msgid "The FlatCAM Object to be adjusted." msgstr "Das FlatCAM Objekt das angepasst werden muss." -#: appTools/ToolCalibration.py:660 +#: appTools/ToolCalibration.py:1355 msgid "Calibrate" msgstr "Kalibrieren" -#: appTools/ToolCalibration.py:662 +#: appTools/ToolCalibration.py:1357 msgid "" "Adjust (scale and/or skew) the objects\n" "with the factors determined above." @@ -13286,57 +14481,132 @@ msgstr "" "Anpassen (Skalieren und/oder Verzerren) der Objekte\n" "anhand der zuvor gefundenen Faktoren." -#: appTools/ToolCalibration.py:800 -msgid "Tool initialized" -msgstr "Werkzeug eingerichtet" +#: appTools/ToolCopperThieving.py:184 appTools/ToolCopperThieving.py:209 +msgid "Lines Grid works only for 'itself' reference ..." +msgstr "Schraffur geht nur bei \"Selbst\" Referenz ..." -#: appTools/ToolCalibration.py:838 -msgid "There is no source FlatCAM object selected..." -msgstr "Es is kein FlatCAM Objekt ausgewählt." +#: appTools/ToolCopperThieving.py:195 +msgid "Solid fill selected." +msgstr "Vollständige Füllung gewählt." -#: appTools/ToolCalibration.py:859 -msgid "Get First calibration point. Bottom Left..." -msgstr "Lese ersten Kalibrierungspunkt (Unten Links)" +#: appTools/ToolCopperThieving.py:200 +msgid "Dots grid fill selected." +msgstr "Punktmusterfüllung gewählt." -#: appTools/ToolCalibration.py:926 -msgid "Get Second calibration point. Bottom Right (Top Left)..." -msgstr "Zweiter Kalibrierungspunkt abrufen. Unten rechts (oben links) ..." +#: appTools/ToolCopperThieving.py:205 +msgid "Squares grid fill selected." +msgstr "Quadratfüllung gewählt." -#: appTools/ToolCalibration.py:930 -msgid "Get Third calibration point. Top Left (Bottom Right)..." -msgstr "" -"Holen Sie sich den dritten Kalibrierungspunkt. Oben links unten rechts)..." +#: appTools/ToolCopperThieving.py:226 appTools/ToolCopperThieving.py:308 +#: appTools/ToolCopperThieving.py:910 appTools/ToolCorners.py:120 +#: appTools/ToolDblSided.py:304 appTools/ToolExtractDrills.py:141 +#: appTools/ToolFiducials.py:187 appTools/ToolFiducials.py:464 +#: appTools/ToolOptimal.py:138 appTools/ToolPunchGerber.py:188 +#: appTools/ToolQRCode.py:158 +msgid "There is no Gerber object loaded ..." +msgstr "Es ist kein Gerber-Objekt geladen ..." -#: appTools/ToolCalibration.py:934 -msgid "Get Forth calibration point. Top Right..." -msgstr "Lese vierten Kalibrierungspunkt (Oben Rechts)" +#: appTools/ToolCopperThieving.py:239 appTools/ToolCopperThieving.py:838 +msgid "Append geometry" +msgstr "Geometrie angehängt" -#: appTools/ToolCalibration.py:938 -msgid "Done. All four points have been acquired." -msgstr "Erledigt, alle vier Punkte wurden gelesen." +#: appTools/ToolCopperThieving.py:283 appTools/ToolCopperThieving.py:871 +#: appTools/ToolCopperThieving.py:1016 +msgid "Append source file" +msgstr "Fügen Sie die Quelldatei an" -#: appTools/ToolCalibration.py:969 -msgid "Verification GCode for FlatCAM Calibration Tool" -msgstr "Überprüfungs GCode des FlatCAM Kalibrierungstools" +# Don`t know what a Copper Thieving Tool would do hence hard to translate +#: appTools/ToolCopperThieving.py:291 appTools/ToolCopperThieving.py:879 +msgid "Copper Thieving Tool done." +msgstr "'Copper Thieving' Werkzeug fertig." -#: appTools/ToolCalibration.py:981 appTools/ToolCalibration.py:1067 -msgid "Gcode Viewer" -msgstr "GCode Anzeige" +#: appTools/ToolCopperThieving.py:318 appTools/ToolCopperThieving.py:351 +#: appTools/ToolCutOut.py:539 appTools/ToolCutOut.py:862 +#: appTools/ToolDrilling.py:725 appTools/ToolDrilling.py:1568 +#: appTools/ToolEtchCompensation.py:152 appTools/ToolInvertGerber.py:99 +#: appTools/ToolIsolation.py:899 appTools/ToolIsolation.py:1310 +#: appTools/ToolIsolation.py:1337 appTools/ToolMilling.py:424 +#: appTools/ToolMilling.py:639 appTools/ToolMilling.py:1322 +#: appTools/ToolNCC.py:829 appTools/ToolNCC.py:1261 appTools/ToolNCC.py:1307 +#: appTools/ToolNCC.py:1340 appTools/ToolPaint.py:1085 +#: appTools/ToolPanelize.py:191 appTools/ToolPanelize.py:205 +#: appTools/ToolSub.py:157 appTools/ToolSub.py:170 appTools/ToolSub.py:359 +#: appTools/ToolSub.py:372 tclCommands/TclCommandCopperClear.py:97 +#: tclCommands/TclCommandPaint.py:99 +msgid "Could not retrieve object" +msgstr "Objekt konnte nicht abgerufen werden" -#: appTools/ToolCalibration.py:997 -msgid "Cancelled. Four points are needed for GCode generation." -msgstr "Abgebrochen. Es werden vier Punkte zur GCode Erzeugung benötigt." +#: appTools/ToolCopperThieving.py:379 +msgid "Click the end point of the filling area." +msgstr "Klicken Sie auf den Endpunkt des Ausfüllbereichs." -#: appTools/ToolCalibration.py:1253 appTools/ToolCalibration.py:1349 -msgid "There is no FlatCAM object selected..." -msgstr "Es ist kein FlatCAM Objekt ausgewählt." +#: appTools/ToolCopperThieving.py:507 appTools/ToolCopperThieving.py:511 +#: appTools/ToolCopperThieving.py:572 +msgid "Thieving" +msgstr "Diebstahl" -#: appTools/ToolCopperThieving.py:76 appTools/ToolFiducials.py:264 +#: appTools/ToolCopperThieving.py:518 +msgid "Copper Thieving Tool started. Reading parameters." +msgstr "Copper Thieving Tool gestartet. Parameter lesen." + +#: appTools/ToolCopperThieving.py:543 +msgid "Copper Thieving Tool. Preparing isolation polygons." +msgstr "Copper Thieving-Tool. Vorbereitung von isolierenden Polygonen." + +#: appTools/ToolCopperThieving.py:588 +msgid "Copper Thieving Tool. Preparing areas to fill with copper." +msgstr "Copper Thieving Tool: Areale zur Kupferfüllung vorbereiten." + +#: appTools/ToolCopperThieving.py:599 appTools/ToolIsolation.py:906 +#: appTools/ToolNCC.py:836 appTools/ToolOptimal.py:145 +#: appTools/ToolPanelize.py:612 appTools/ToolRulesCheck.py:626 +msgid "Working..." +msgstr "Arbeiten..." + +#: appTools/ToolCopperThieving.py:626 +msgid "Geometry not supported for bounding box" +msgstr "Geometrie für Umriss nicht unterstützt" + +#: appTools/ToolCopperThieving.py:632 appTools/ToolNCC.py:1631 +#: appTools/ToolNCC.py:1686 appTools/ToolNCC.py:2626 appTools/ToolPaint.py:2456 +msgid "No object available." +msgstr "Kein Objekt vorhanden." + +#: appTools/ToolCopperThieving.py:669 appTools/ToolNCC.py:1656 +#: appTools/ToolNCC.py:1709 appTools/ToolNCC.py:2668 +msgid "The reference object type is not supported." +msgstr "Der Referenzobjekttyp wird nicht unterstützt." + +#: appTools/ToolCopperThieving.py:674 +msgid "Copper Thieving Tool. Appending new geometry and buffering." +msgstr "Copper Thieving Tool. Füge neue Geometrie an und puffere sie." + +#: appTools/ToolCopperThieving.py:690 +msgid "Create geometry" +msgstr "Geometrie erstellen" + +#: appTools/ToolCopperThieving.py:890 appTools/ToolCopperThieving.py:894 +msgid "P-Plating Mask" +msgstr "P-Beschichtungsmaske" + +#: appTools/ToolCopperThieving.py:916 +msgid "Append PP-M geometry" +msgstr "PPM Geometrie hinzufügen" + +#: appTools/ToolCopperThieving.py:1034 +msgid "Generating Pattern Plating Mask done." +msgstr "Erzeugen der PPM abgeschlossen." + +#: appTools/ToolCopperThieving.py:1106 +msgid "Copper Thieving Tool exit." +msgstr "Copper Thieving Tool verlassen." + +#: appTools/ToolCopperThieving.py:1165 appTools/ToolFiducials.py:875 msgid "Gerber Object to which will be added a copper thieving." msgstr "Dem Gerber Objekt wird ein Copper Thieving hinzugefügt." # Double -#: appTools/ToolCopperThieving.py:102 +#: appTools/ToolCopperThieving.py:1191 msgid "" "This set the distance between the copper thieving components\n" "(the polygon fill may be split in multiple polygons)\n" @@ -13349,7 +14619,7 @@ msgstr "" "in mehrere aufgeteilt." # Double -#: appTools/ToolCopperThieving.py:135 +#: appTools/ToolCopperThieving.py:1224 msgid "" "- 'Itself' - the copper thieving extent is based on the object extent.\n" "- 'Area Selection' - left mouse click to start selection of the area to be " @@ -13364,12 +14634,12 @@ msgstr "" "- 'Referenzobjekt' - 'Copper Thieving' innerhalb des von einem anderen " "Objekt angegebenen Bereichs." -#: appTools/ToolCopperThieving.py:142 appTools/ToolIsolation.py:521 -#: appTools/ToolNCC.py:552 appTools/ToolPaint.py:495 +#: appTools/ToolCopperThieving.py:1231 appTools/ToolIsolation.py:3330 +#: appTools/ToolNCC.py:4203 appTools/ToolPaint.py:3135 msgid "Ref. Type" msgstr "Ref. Typ" -#: appTools/ToolCopperThieving.py:144 +#: appTools/ToolCopperThieving.py:1233 msgid "" "The type of FlatCAM object to be used as copper thieving reference.\n" "It can be Gerber, Excellon or Geometry." @@ -13378,25 +14648,25 @@ msgstr "" "soll.\n" "Es kann Gerber, Excellon oder Geometry sein." -#: appTools/ToolCopperThieving.py:153 appTools/ToolIsolation.py:532 -#: appTools/ToolNCC.py:562 appTools/ToolPaint.py:505 +#: appTools/ToolCopperThieving.py:1242 appTools/ToolIsolation.py:3341 +#: appTools/ToolNCC.py:4213 appTools/ToolPaint.py:3145 msgid "Ref. Object" msgstr "Ref. Objekt" -#: appTools/ToolCopperThieving.py:155 appTools/ToolIsolation.py:534 -#: appTools/ToolNCC.py:564 appTools/ToolPaint.py:507 +#: appTools/ToolCopperThieving.py:1244 appTools/ToolIsolation.py:3343 +#: appTools/ToolNCC.py:4215 appTools/ToolPaint.py:3147 msgid "The FlatCAM object to be used as non copper clearing reference." msgstr "" "Das FlatCAM-Objekt, das als Nicht-Kupfer-Clearing-Referenz verwendet werden " "soll." # Double -#: appTools/ToolCopperThieving.py:331 +#: appTools/ToolCopperThieving.py:1420 msgid "Insert Copper thieving" msgstr "'Coper Thieving' einsetzen" # Double -#: appTools/ToolCopperThieving.py:333 +#: appTools/ToolCopperThieving.py:1422 msgid "" "Will add a polygon (may be split in multiple parts)\n" "that will surround the actual Gerber traces at a certain distance." @@ -13405,12 +14675,12 @@ msgstr "" "das wird die eigentlichen Gerber-Spuren in einem gewissen Abstand umgeben." # Double -#: appTools/ToolCopperThieving.py:392 +#: appTools/ToolCopperThieving.py:1481 msgid "Insert Robber Bar" msgstr "'Robber Bar' einsetzen" # Double -#: appTools/ToolCopperThieving.py:394 +#: appTools/ToolCopperThieving.py:1483 msgid "" "Will add a polygon with a defined thickness\n" "that will surround the actual Gerber object\n" @@ -13422,11 +14692,11 @@ msgstr "" "in einem bestimmten Abstand.\n" "Erforderlich für die Lochmusterbeschichtung." -#: appTools/ToolCopperThieving.py:418 +#: appTools/ToolCopperThieving.py:1507 msgid "Select Soldermask object" msgstr "Lötmaskenobjekt auswählen" -#: appTools/ToolCopperThieving.py:420 +#: appTools/ToolCopperThieving.py:1509 msgid "" "Gerber Object with the soldermask.\n" "It will be used as a base for\n" @@ -13435,11 +14705,11 @@ msgstr "" "Das Gerber Objekt mit der Lötmaske\n" "Wird als Basis verwendet." -#: appTools/ToolCopperThieving.py:449 +#: appTools/ToolCopperThieving.py:1538 msgid "Plated area" msgstr "Beschichtetes Areal" -#: appTools/ToolCopperThieving.py:451 +#: appTools/ToolCopperThieving.py:1540 msgid "" "The area to be plated by pattern plating.\n" "Basically is made from the openings in the plating mask.\n" @@ -13456,19 +14726,19 @@ msgstr "" "etwas größer als die Pads sind, und dieses Areal aus der Lötmaske berechnet " "wird." -#: appTools/ToolCopperThieving.py:462 +#: appTools/ToolCopperThieving.py:1551 msgid "mm" msgstr "mm" -#: appTools/ToolCopperThieving.py:464 +#: appTools/ToolCopperThieving.py:1553 msgid "in" msgstr "in" -#: appTools/ToolCopperThieving.py:471 +#: appTools/ToolCopperThieving.py:1560 msgid "Generate pattern plating mask" msgstr "Generieren der Beschichtungsmaske" -#: appTools/ToolCopperThieving.py:473 +#: appTools/ToolCopperThieving.py:1562 msgid "" "Will add to the soldermask gerber geometry\n" "the geometries of the copper thieving and/or\n" @@ -13478,178 +14748,241 @@ msgstr "" "Robber Bar zu der Gerber Geometrie hinzufügen, sofern\n" "diese erzeugt worden sind." -#: appTools/ToolCopperThieving.py:629 appTools/ToolCopperThieving.py:654 -msgid "Lines Grid works only for 'itself' reference ..." -msgstr "Schraffur geht nur bei \"Selbst\" Referenz ..." - -#: appTools/ToolCopperThieving.py:640 -msgid "Solid fill selected." -msgstr "Vollständige Füllung gewählt." - -#: appTools/ToolCopperThieving.py:645 -msgid "Dots grid fill selected." -msgstr "Punktmusterfüllung gewählt." - -#: appTools/ToolCopperThieving.py:650 -msgid "Squares grid fill selected." -msgstr "Quadratfüllung gewählt." - -#: appTools/ToolCopperThieving.py:671 appTools/ToolCopperThieving.py:753 -#: appTools/ToolCopperThieving.py:1355 appTools/ToolCorners.py:268 -#: appTools/ToolDblSided.py:657 appTools/ToolExtractDrills.py:436 -#: appTools/ToolFiducials.py:470 appTools/ToolFiducials.py:747 -#: appTools/ToolOptimal.py:348 appTools/ToolPunchGerber.py:512 -#: appTools/ToolQRCode.py:435 -msgid "There is no Gerber object loaded ..." -msgstr "Es ist kein Gerber-Objekt geladen ..." - -#: appTools/ToolCopperThieving.py:684 appTools/ToolCopperThieving.py:1283 -msgid "Append geometry" -msgstr "Geometrie angehängt" - -#: appTools/ToolCopperThieving.py:728 appTools/ToolCopperThieving.py:1316 -#: appTools/ToolCopperThieving.py:1469 -msgid "Append source file" -msgstr "Fügen Sie die Quelldatei an" - -# Don`t know what a Copper Thieving Tool would do hence hard to translate -#: appTools/ToolCopperThieving.py:736 appTools/ToolCopperThieving.py:1324 -msgid "Copper Thieving Tool done." -msgstr "'Copper Thieving' Werkzeug fertig." - -#: appTools/ToolCopperThieving.py:763 appTools/ToolCopperThieving.py:796 -#: appTools/ToolCutOut.py:556 appTools/ToolCutOut.py:761 -#: appTools/ToolEtchCompensation.py:360 appTools/ToolInvertGerber.py:211 -#: appTools/ToolIsolation.py:1618 appTools/ToolIsolation.py:1645 -#: appTools/ToolNCC.py:1617 appTools/ToolNCC.py:1661 appTools/ToolNCC.py:1690 -#: appTools/ToolPaint.py:1493 appTools/ToolPanelize.py:424 -#: appTools/ToolPanelize.py:438 appTools/ToolSub.py:295 appTools/ToolSub.py:308 -#: appTools/ToolSub.py:499 appTools/ToolSub.py:514 -#: tclCommands/TclCommandCopperClear.py:97 tclCommands/TclCommandPaint.py:99 -msgid "Could not retrieve object" -msgstr "Objekt konnte nicht abgerufen werden" - -#: appTools/ToolCopperThieving.py:824 -msgid "Click the end point of the filling area." -msgstr "Klicken Sie auf den Endpunkt des Ausfüllbereichs." - -#: appTools/ToolCopperThieving.py:952 appTools/ToolCopperThieving.py:956 -#: appTools/ToolCopperThieving.py:1017 -msgid "Thieving" -msgstr "Diebstahl" - -#: appTools/ToolCopperThieving.py:963 -msgid "Copper Thieving Tool started. Reading parameters." -msgstr "Copper Thieving Tool gestartet. Parameter lesen." - -#: appTools/ToolCopperThieving.py:988 -msgid "Copper Thieving Tool. Preparing isolation polygons." -msgstr "Copper Thieving-Tool. Vorbereitung von isolierenden Polygonen." - -#: appTools/ToolCopperThieving.py:1033 -msgid "Copper Thieving Tool. Preparing areas to fill with copper." -msgstr "Copper Thieving Tool: Areale zur Kupferfüllung vorbereiten." - -#: appTools/ToolCopperThieving.py:1044 appTools/ToolOptimal.py:355 -#: appTools/ToolPanelize.py:805 appTools/ToolRulesCheck.py:1127 -msgid "Working..." -msgstr "Arbeiten..." - -#: appTools/ToolCopperThieving.py:1071 -msgid "Geometry not supported for bounding box" -msgstr "Geometrie für Umriss nicht unterstützt" - -#: appTools/ToolCopperThieving.py:1077 appTools/ToolNCC.py:1962 -#: appTools/ToolNCC.py:2017 appTools/ToolNCC.py:3052 appTools/ToolPaint.py:3405 -msgid "No object available." -msgstr "Kein Objekt vorhanden." - -#: appTools/ToolCopperThieving.py:1114 appTools/ToolNCC.py:1987 -#: appTools/ToolNCC.py:2040 appTools/ToolNCC.py:3094 -msgid "The reference object type is not supported." -msgstr "Der Referenzobjekttyp wird nicht unterstützt." - -#: appTools/ToolCopperThieving.py:1119 -msgid "Copper Thieving Tool. Appending new geometry and buffering." -msgstr "Copper Thieving Tool. Füge neue Geometrie an und puffere sie." - -#: appTools/ToolCopperThieving.py:1135 -msgid "Create geometry" -msgstr "Geometrie erstellen" - -#: appTools/ToolCopperThieving.py:1335 appTools/ToolCopperThieving.py:1339 -msgid "P-Plating Mask" -msgstr "P-Beschichtungsmaske" - -#: appTools/ToolCopperThieving.py:1361 -msgid "Append PP-M geometry" -msgstr "PPM Geometrie hinzufügen" - -#: appTools/ToolCopperThieving.py:1487 -msgid "Generating Pattern Plating Mask done." -msgstr "Erzeugen der PPM abgeschlossen." - -#: appTools/ToolCopperThieving.py:1559 -msgid "Copper Thieving Tool exit." -msgstr "Copper Thieving Tool verlassen." - -#: appTools/ToolCorners.py:57 -msgid "The Gerber object to which will be added corner markers." -msgstr "Das Gerber-Objekt, dem Eckmarkierungen hinzugefügt werden." - -#: appTools/ToolCorners.py:73 -msgid "Locations" -msgstr "Standorte" - -#: appTools/ToolCorners.py:75 -msgid "Locations where to place corner markers." -msgstr "Orte, an denen Eckmarkierungen platziert werden sollen." - -#: appTools/ToolCorners.py:92 appTools/ToolFiducials.py:95 -msgid "Top Right" -msgstr "Oben rechts" - -#: appTools/ToolCorners.py:101 -msgid "Toggle ALL" -msgstr "ALLE umschalten" - -#: appTools/ToolCorners.py:167 -msgid "Add Marker" -msgstr "Marker hinzufügen" - -#: appTools/ToolCorners.py:169 -msgid "Will add corner markers to the selected Gerber file." -msgstr "Fügt der ausgewählten Gerber-Datei Eckmarkierungen hinzu." - -#: appTools/ToolCorners.py:235 +#: appTools/ToolCorners.py:87 msgid "Corners Tool" msgstr "Ecken Werkzeug" -#: appTools/ToolCorners.py:305 +#: appTools/ToolCorners.py:157 msgid "Please select at least a location" msgstr "Bitte wählen Sie mindestens einen Ort aus" -#: appTools/ToolCorners.py:440 +#: appTools/ToolCorners.py:292 msgid "Corners Tool exit." msgstr "Ecken Werkzeugausgang." -#: appTools/ToolCutOut.py:41 +#: appTools/ToolCorners.py:319 +msgid "The Gerber object to which will be added corner markers." +msgstr "Das Gerber-Objekt, dem Eckmarkierungen hinzugefügt werden." + +#: appTools/ToolCorners.py:335 +msgid "Locations" +msgstr "Standorte" + +#: appTools/ToolCorners.py:337 +msgid "Locations where to place corner markers." +msgstr "Orte, an denen Eckmarkierungen platziert werden sollen." + +#: appTools/ToolCorners.py:354 appTools/ToolFiducials.py:706 +msgid "Top Right" +msgstr "Oben rechts" + +#: appTools/ToolCorners.py:363 +msgid "Toggle ALL" +msgstr "ALLE umschalten" + +#: appTools/ToolCorners.py:429 +msgid "Add Marker" +msgstr "Marker hinzufügen" + +#: appTools/ToolCorners.py:431 +msgid "Will add corner markers to the selected Gerber file." +msgstr "Fügt der ausgewählten Gerber-Datei Eckmarkierungen hinzu." + +#: appTools/ToolCutOut.py:274 appTools/ToolIsolation.py:785 +#: appTools/ToolIsolation.py:1014 appTools/ToolIsolation.py:1150 +#: appTools/ToolNCC.py:458 appTools/ToolNCC.py:945 appTools/ToolNCC.py:1083 +#: appTools/ToolPaint.py:395 appTools/ToolPaint.py:685 +#: appTools/ToolPaint.py:822 appTools/ToolSolderPaste.py:131 +#: appTools/ToolSolderPaste.py:464 app_Main.py:4490 +msgid "Please enter a tool diameter with non-zero value, in Float format." +msgstr "" +"Bitte geben Sie einen Werkzeugdurchmesser ungleich Null im Float-Format ein." + +#: appTools/ToolCutOut.py:350 appTools/ToolIsolation.py:1095 +#: appTools/ToolNCC.py:1028 appTools/ToolPaint.py:766 +#, fuzzy +#| msgid "Tools in Tools Database edited but not saved." +msgid "Tool not in Tools Database. Adding a default tool." +msgstr "Werkzeugdatenbank geschlossen ohne zu speichern." + +#: appTools/ToolCutOut.py:357 appTools/ToolDrilling.py:941 +#: appTools/ToolIsolation.py:1102 appTools/ToolNCC.py:1035 +#: appTools/ToolPaint.py:774 +msgid "" +"Cancelled.\n" +"Multiple tools for one tool diameter found in Tools Database." +msgstr "" + +#: appTools/ToolCutOut.py:381 +#, fuzzy +#| msgid "Add Tool from Tools DB" +msgid "Updated tool from Tools Database." +msgstr "Werkzeug aus Werkzeugdatenbank hinzufügen" + +#: appTools/ToolCutOut.py:449 +#, fuzzy +#| msgid "Default Values" +msgid "Default tool added." +msgstr "Standardwerte" + +#: appTools/ToolCutOut.py:458 appTools/ToolIsolation.py:2539 +#: appTools/ToolNCC.py:3601 appTools/ToolPaint.py:2619 +msgid "Selected tool can't be used here. Pick another." +msgstr "" + +#: appTools/ToolCutOut.py:481 +#, fuzzy +#| msgid "Tool copied from Tools DB." +msgid "Tool updated from Tools Database." +msgstr "Das Werkzeug wurde aus der Werkzeugdatenbank kopiert." + +#: appTools/ToolCutOut.py:544 +msgid "" +"There is no object selected for Cutout.\n" +"Select one and try again." +msgstr "" +"Es ist kein Objekt für den Ausschnitt ausgewählt.\n" +"Wählen Sie eine aus und versuchen Sie es erneut." + +#: appTools/ToolCutOut.py:550 appTools/ToolCutOut.py:871 +#: appTools/ToolCutOut.py:1118 appTools/ToolCutOut.py:1236 +#: tclCommands/TclCommandGeoCutout.py:184 +msgid "Tool Diameter is zero value. Change it to a positive real number." +msgstr "" +"Werkzeugdurchmesser ist Nullwert. Ändern Sie es in eine positive reelle Zahl." + +#: appTools/ToolCutOut.py:563 appTools/ToolCutOut.py:886 +msgid "Number of gaps value is missing. Add it and retry." +msgstr "" +"Der Wert für die Anzahl der Lücken fehlt. Fügen Sie es hinzu und versuchen " +"Sie es erneut." + +#: appTools/ToolCutOut.py:568 appTools/ToolCutOut.py:890 +msgid "" +"Gaps value can be only one of: 'None', 'lr', 'tb', '2lr', '2tb', 4 or 8. " +"Fill in a correct value and retry. " +msgstr "" +"Der Lückenwert kann nur einer der folgenden Werte sein: \"Keine\", \"lr\", " +"\"tb\", \"2lr\", \"2tb\", 4 oder 8. Geben Sie einen korrekten Wert ein und " +"wiederholen Sie den Vorgang. " + +#: appTools/ToolCutOut.py:573 appTools/ToolCutOut.py:896 +msgid "" +"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." +msgstr "" +"Bei einer Multi-Geo-Geometrie können keine Ausschnitte vorgenommen werden.\n" +"Optional kann diese Multi-Geo-Geometrie in Single-Geo-Geometrie konvertiert " +"werden.\n" +"und danach Cutout durchführen." + +#: appTools/ToolCutOut.py:836 +#, fuzzy +#| msgid "Open GCode file failed." +msgid "Mouse bites failed." +msgstr "Öffnen der GCode-Datei fehlgeschlagen." + +#: appTools/ToolCutOut.py:840 appTools/ToolCutOut.py:1086 +msgid "Any form CutOut operation finished." +msgstr "Jede Form CutOut-Operation ist abgeschlossen." + +#: appTools/ToolCutOut.py:866 appTools/ToolDrilling.py:1572 +#: appTools/ToolEtchCompensation.py:158 appTools/ToolInvertGerber.py:105 +#: appTools/ToolIsolation.py:903 appTools/ToolIsolation.py:1314 +#: appTools/ToolIsolation.py:1341 appTools/ToolMilling.py:1326 +#: appTools/ToolNCC.py:833 appTools/ToolNCC.py:1265 appTools/ToolPaint.py:1002 +#: appTools/ToolPanelize.py:196 tclCommands/TclCommandBbox.py:71 +#: tclCommands/TclCommandNregions.py:71 +msgid "Object not found" +msgstr "Objekt nicht gefunden" + +#: appTools/ToolCutOut.py:1040 +msgid "Rectangular cutout with negative margin is not possible." +msgstr "Ein rechteckiger Ausschnitt mit negativem Rand ist nicht möglich." + +#: appTools/ToolCutOut.py:1102 appTools/ToolCutOut.py:1129 +msgid "Could not retrieve Geometry object" +msgstr "Geometrieobjekt konnte nicht abgerufen werden" + +#: appTools/ToolCutOut.py:1107 appTools/ToolCutOut.py:1158 +msgid "Geometry object for manual cutout not found" +msgstr "Geometrieobjekt für manuellen Ausschnitt nicht gefunden" + +#: appTools/ToolCutOut.py:1110 +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 ..." + +#: appTools/ToolCutOut.py:1185 +#, fuzzy +#| msgid "Generate the Geometry object." +msgid "No tool in the Geometry object." +msgstr "Generieren Sie das Geometrieobjekt." + +#: appTools/ToolCutOut.py:1206 +#, fuzzy +#| msgid "" +#| "Zone added. Click to start adding next zone or right click to finish." +msgid "" +"Added manual Bridge Gap. Left click to add another or right click to finish." +msgstr "" +"Zone hinzugefügt. Klicken Sie, um die nächste Zone hinzuzufügen, oder " +"klicken Sie mit der rechten Maustaste, um den Vorgang abzuschließen." + +#: appTools/ToolCutOut.py:1218 +msgid "Could not retrieve Gerber object" +msgstr "Gerber-Objekt konnte nicht abgerufen werden" + +#: appTools/ToolCutOut.py:1223 +msgid "" +"There is no Gerber object selected for Cutout.\n" +"Select one and try again." +msgstr "" +"Es ist kein Gerber-Objekt für den Ausschnitt ausgewählt.\n" +"Wählen Sie eine aus und versuchen Sie es erneut." + +#: appTools/ToolCutOut.py:1229 +msgid "" +"The selected object has to be of Gerber type.\n" +"Select a Gerber file and try again." +msgstr "" +"Das ausgewählte Objekt muss vom Typ Gerber sein.\n" +"Wählen Sie eine Gerber-Datei aus und versuchen Sie es erneut." + +#: appTools/ToolCutOut.py:1264 +msgid "Geometry not supported for cutout" +msgstr "Geometrie für Ausschnitt nicht unterstützt" + +#: appTools/ToolCutOut.py:1336 +msgid "Making manual bridge gap..." +msgstr "Manuelle Brückenlücke herstellen ..." + +#: appTools/ToolCutOut.py:1378 +msgid "Finished manual adding of gaps." +msgstr "" + +#: appTools/ToolCutOut.py:1720 msgid "Cutout PCB" msgstr "Ausschnitt PCB" -#: appTools/ToolCutOut.py:69 appTools/ToolPanelize.py:53 +#: appTools/ToolCutOut.py:1746 appTools/ToolDblSided.py:513 +#: appTools/ToolPanelize.py:652 msgid "Source Object" msgstr "Quellobjekt" -#: appTools/ToolCutOut.py:70 +#: appTools/ToolCutOut.py:1747 msgid "Object to be cutout" msgstr "Auszuschneidendes Objekt" -#: appTools/ToolCutOut.py:75 +#: appTools/ToolCutOut.py:1752 msgid "Kind" msgstr "Typ" -#: appTools/ToolCutOut.py:97 +#: appTools/ToolCutOut.py:1774 appTools/ToolDblSided.py:521 msgid "" "Specify the type of object to be cutout.\n" "It can be of type: Gerber or Geometry.\n" @@ -13661,47 +14994,51 @@ msgstr "" "Was hier ausgewählt wird, bestimmt die Art\n" "von Objekten, die die Combobox 'Object' füllen." -#: appTools/ToolCutOut.py:121 +#: appTools/ToolCutOut.py:1830 appTools/ToolIsolation.py:61 +#: appTools/ToolIsolation.py:3078 appTools/ToolNCC.py:3883 +#: appTools/ToolPaint.py:2897 +msgid "Search and Add" +msgstr "" + +#: appTools/ToolCutOut.py:1833 appTools/ToolIsolation.py:3081 +#: appTools/ToolNCC.py:3886 appTools/ToolPaint.py:2900 +msgid "" +"Add a new tool to the Tool Table\n" +"with the diameter specified above.\n" +"This is done by a background search\n" +"in the Tools Database. If nothing is found\n" +"in the Tools DB then a default tool is added." +msgstr "" + +#: appTools/ToolCutOut.py:1842 appTools/ToolIsolation.py:65 +#: appTools/ToolIsolation.py:3089 appTools/ToolNCC.py:3894 +#: appTools/ToolPaint.py:2908 +#, fuzzy +#| msgid "Add from DB" +msgid "Pick from DB" +msgstr "Aus DB hinzufügen" + +#: appTools/ToolCutOut.py:1858 msgid "Tool Parameters" msgstr "Werkzeugparameter" -#: appTools/ToolCutOut.py:238 -msgid "A. Automatic Bridge Gaps" -msgstr "A. Automatische Brückenlücken" +#: appTools/ToolCutOut.py:2007 +#, fuzzy +#| msgid "Auto" +msgid "Automatic" +msgstr "Auto" -#: appTools/ToolCutOut.py:240 +#: appTools/ToolCutOut.py:2007 appTools/ToolCutOut.py:2082 +#, fuzzy +#| msgid "B. Manual Bridge Gaps" +msgid "Bridge Gaps" +msgstr "B. Manuelle Brückenlücken" + +#: appTools/ToolCutOut.py:2009 msgid "This section handle creation of automatic bridge gaps." msgstr "Dieser Abschnitt behandelt die Erstellung automatischer Brückenlücken." -#: appTools/ToolCutOut.py:247 -msgid "" -"Number of gaps used for the Automatic cutout.\n" -"There can be maximum 8 bridges/gaps.\n" -"The choices are:\n" -"- None - no gaps\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" -msgstr "" -"Anzahl der Lücken, die für den automatischen Ausschnitt verwendet werden.\n" -"Es können maximal 8 Brücken / Lücken vorhanden sein.\n" -"Die Wahlmöglichkeiten sind:\n" -"- Keine - keine Lücken\n" -"- lr \t- links + rechts\n" -"- tb \t- oben + unten\n" -"- 4 \t- links + rechts + oben + unten\n" -"- 2lr \t- 2 * links + 2 * rechts\n" -"- 2 tb \t- 2 * oben + 2 * unten\n" -"- 8 \t- 2 * links + 2 * rechts + 2 * oben + 2 * unten" - -#: appTools/ToolCutOut.py:269 -msgid "Generate Freeform Geometry" -msgstr "Freiform Geometrie erzeugen" - -#: appTools/ToolCutOut.py:271 +#: appTools/ToolCutOut.py:2048 msgid "" "Cutout the selected object.\n" "The cutout shape can be of any shape.\n" @@ -13711,11 +15048,7 @@ msgstr "" "Die Ausschnittform kann eine beliebige Form haben.\n" "Nützlich, wenn die Leiterplatte eine nicht rechteckige Form hat." -#: appTools/ToolCutOut.py:283 -msgid "Generate Rectangular Geometry" -msgstr "Rechteck Geometrie erzeugen" - -#: appTools/ToolCutOut.py:285 +#: appTools/ToolCutOut.py:2063 msgid "" "Cutout the selected object.\n" "The resulting cutout shape is\n" @@ -13727,11 +15060,7 @@ msgstr "" "immer eine rechteckige Form und es wird sein\n" "der Begrenzungsrahmen des Objekts." -#: appTools/ToolCutOut.py:304 -msgid "B. Manual Bridge Gaps" -msgstr "B. Manuelle Brückenlücken" - -#: appTools/ToolCutOut.py:306 +#: appTools/ToolCutOut.py:2084 msgid "" "This section handle creation of manual bridge gaps.\n" "This is done by mouse clicking on the perimeter of the\n" @@ -13741,15 +15070,11 @@ msgstr "" "Dies geschieht durch einen Mausklick auf den Umfang des\n" "Geometrieobjekt, das als Ausschnittobjekt verwendet wird. " -#: appTools/ToolCutOut.py:321 -msgid "Geometry object used to create the manual cutout." -msgstr "Geometrieobjekt zum Erstellen des manuellen Ausschnitts." - -#: appTools/ToolCutOut.py:328 +#: appTools/ToolCutOut.py:2100 msgid "Generate Manual Geometry" msgstr "Manuelle Geometrie erzeugen" -#: appTools/ToolCutOut.py:330 +#: appTools/ToolCutOut.py:2103 msgid "" "If the object to be cutout is a Gerber\n" "first create a Geometry that surrounds it,\n" @@ -13761,11 +15086,21 @@ msgstr "" "als Ausschnitt verwendet werden, falls noch nicht vorhanden.\n" "Wählen Sie in der oberen Objekt-Combobox die Quell-Gerber-Datei aus." -#: appTools/ToolCutOut.py:343 +#: appTools/ToolCutOut.py:2123 +#, fuzzy +#| msgid "Subtract Geometry" +msgid "Manual cutout Geometry" +msgstr "Geometrie subtrahieren" + +#: appTools/ToolCutOut.py:2125 +msgid "Geometry object used to create the manual cutout." +msgstr "Geometrieobjekt zum Erstellen des manuellen Ausschnitts." + +#: appTools/ToolCutOut.py:2132 msgid "Manual Add Bridge Gaps" msgstr "Manuelles Hinzufügen von Brückenlücken" -#: appTools/ToolCutOut.py:345 +#: appTools/ToolCutOut.py:2135 msgid "" "Use the left mouse button (LMB) click\n" "to create a bridge gap to separate the PCB from\n" @@ -13779,170 +15114,177 @@ msgstr "" "Der LMB-Klick muss am Umfang von erfolgen\n" "das Geometrieobjekt, das als Ausschnittsgeometrie verwendet wird." -#: appTools/ToolCutOut.py:561 +#: appTools/ToolDblSided.py:107 +msgid "2-Sided Tool" +msgstr "2-seitiges Werkzeug" + +#: appTools/ToolDblSided.py:160 msgid "" -"There is no object selected for Cutout.\n" -"Select one and try again." +"'Point' reference is selected and 'Point' coordinates are missing. Add them " +"and retry." msgstr "" -"Es ist kein Objekt für den Ausschnitt ausgewählt.\n" -"Wählen Sie eine aus und versuchen Sie es erneut." +"'Point'-Referenz ist ausgewählt und' Point'-Koordinaten fehlen. Fügen Sie " +"sie hinzu und versuchen Sie es erneut." -#: appTools/ToolCutOut.py:567 appTools/ToolCutOut.py:770 -#: appTools/ToolCutOut.py:951 appTools/ToolCutOut.py:1033 -#: tclCommands/TclCommandGeoCutout.py:184 -msgid "Tool Diameter is zero value. Change it to a positive real number." +#: appTools/ToolDblSided.py:169 +msgid "There is no Box reference object loaded. Load one and retry." msgstr "" -"Werkzeugdurchmesser ist Nullwert. Ändern Sie es in eine positive reelle Zahl." +"Es ist kein Box-Referenzobjekt geladen. Laden Sie einen und versuchen Sie es " +"erneut." -#: appTools/ToolCutOut.py:581 appTools/ToolCutOut.py:785 -msgid "Number of gaps value is missing. Add it and retry." +#: appTools/ToolDblSided.py:181 +msgid "No value or wrong format in Drill Dia entry. Add it and retry." msgstr "" -"Der Wert für die Anzahl der Lücken fehlt. Fügen Sie es hinzu und versuchen " -"Sie es erneut." +"Kein Wert oder falsches Format im Eintrag Bohrdurchmesser. Fügen Sie es " +"hinzu und versuchen Sie es erneut." -#: appTools/ToolCutOut.py:586 appTools/ToolCutOut.py:789 +#: appTools/ToolDblSided.py:193 +msgid "There are no Alignment Drill Coordinates to use. Add them and retry." +msgstr "" +"Es sind keine Ausrichtungsbohrkoordinaten vorhanden. Fügen Sie sie hinzu und " +"versuchen Sie es erneut." + +#: appTools/ToolDblSided.py:213 +msgid "Excellon object with alignment drills created..." +msgstr "Excellon-Objekt mit Ausrichtungsbohrern erstellt ..." + +#: appTools/ToolDblSided.py:224 appTools/ToolPunchGerber.py:209 +msgid "There is no Excellon object loaded ..." +msgstr "Es ist kein Excellon-Objekt geladen ..." + +#: appTools/ToolDblSided.py:236 +msgid "Click on canvas within the desired Excellon drill hole" +msgstr "" + +#: appTools/ToolDblSided.py:280 +#, fuzzy +#| msgid "Mirror Reference point" +msgid "Mirror reference point set." +msgstr "Referenzpunkt spiegeln" + +#: appTools/ToolDblSided.py:308 +msgid "Only Gerber, Excellon and Geometry objects can be mirrored." +msgstr "Nur Gerber-, Excellon- und Geometrie-Objekte können gespiegelt werden." + +#: appTools/ToolDblSided.py:320 +msgid "There is no Box object loaded ..." +msgstr "Es ist kein Box-Objekt geladen ..." + +#: appTools/ToolDblSided.py:330 msgid "" -"Gaps value can be only one of: 'None', 'lr', 'tb', '2lr', '2tb', 4 or 8. " -"Fill in a correct value and retry. " +"There are no Point coordinates in the Point field. Add coords and try " +"again ..." msgstr "" -"Der Lückenwert kann nur einer der folgenden Werte sein: \"Keine\", \"lr\", " -"\"tb\", \"2lr\", \"2tb\", 4 oder 8. Geben Sie einen korrekten Wert ein und " -"wiederholen Sie den Vorgang. " +"Das Punktfeld enthält keine Punktkoordinaten. Fügen Sie Coords hinzu und " +"versuchen Sie es erneut ..." -#: appTools/ToolCutOut.py:591 appTools/ToolCutOut.py:795 -msgid "" -"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." -msgstr "" -"Bei einer Multi-Geo-Geometrie können keine Ausschnitte vorgenommen werden.\n" -"Optional kann diese Multi-Geo-Geometrie in Single-Geo-Geometrie konvertiert " -"werden.\n" -"und danach Cutout durchführen." +#: appTools/ToolDblSided.py:337 camlib.py:2329 +msgid "Object was mirrored" +msgstr "Objekt wurde gespiegelt" -#: appTools/ToolCutOut.py:743 appTools/ToolCutOut.py:940 -msgid "Any form CutOut operation finished." -msgstr "Jede Form CutOut-Operation ist abgeschlossen." +#: appTools/ToolDblSided.py:403 app_Main.py:4629 app_Main.py:4784 +msgid "Failed. No object(s) selected..." +msgstr "Gescheitert. Kein Objekt ausgewählt ..." -#: appTools/ToolCutOut.py:765 appTools/ToolEtchCompensation.py:366 -#: appTools/ToolInvertGerber.py:217 appTools/ToolIsolation.py:1622 -#: appTools/ToolIsolation.py:1649 appTools/ToolNCC.py:1621 -#: appTools/ToolPaint.py:1416 appTools/ToolPanelize.py:429 -#: tclCommands/TclCommandBbox.py:71 tclCommands/TclCommandNregions.py:71 -msgid "Object not found" -msgstr "Objekt nicht gefunden" - -#: appTools/ToolCutOut.py:909 -msgid "Rectangular cutout with negative margin is not possible." -msgstr "Ein rechteckiger Ausschnitt mit negativem Rand ist nicht möglich." - -#: appTools/ToolCutOut.py:945 -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 ..." - -#: appTools/ToolCutOut.py:962 appTools/ToolCutOut.py:988 -msgid "Could not retrieve Geometry object" -msgstr "Geometrieobjekt konnte nicht abgerufen werden" - -#: appTools/ToolCutOut.py:993 -msgid "Geometry object for manual cutout not found" -msgstr "Geometrieobjekt für manuellen Ausschnitt nicht gefunden" - -#: appTools/ToolCutOut.py:1003 -msgid "Added manual Bridge Gap." -msgstr "Manuelle Brückenlücke hinzugefügt." - -#: appTools/ToolCutOut.py:1015 -msgid "Could not retrieve Gerber object" -msgstr "Gerber-Objekt konnte nicht abgerufen werden" - -#: appTools/ToolCutOut.py:1020 -msgid "" -"There is no Gerber object selected for Cutout.\n" -"Select one and try again." -msgstr "" -"Es ist kein Gerber-Objekt für den Ausschnitt ausgewählt.\n" -"Wählen Sie eine aus und versuchen Sie es erneut." - -#: appTools/ToolCutOut.py:1026 -msgid "" -"The selected object has to be of Gerber type.\n" -"Select a Gerber file and try again." -msgstr "" -"Das ausgewählte Objekt muss vom Typ Gerber sein.\n" -"Wählen Sie eine Gerber-Datei aus und versuchen Sie es erneut." - -#: appTools/ToolCutOut.py:1061 -msgid "Geometry not supported for cutout" -msgstr "Geometrie für Ausschnitt nicht unterstützt" - -#: appTools/ToolCutOut.py:1136 -msgid "Making manual bridge gap..." -msgstr "Manuelle Brückenlücke herstellen ..." - -#: appTools/ToolDblSided.py:26 +#: appTools/ToolDblSided.py:487 msgid "2-Sided PCB" msgstr "2-seitige PCB" -#: appTools/ToolDblSided.py:52 -msgid "Mirror Operation" -msgstr "Spiegelbetrieb" - -#: appTools/ToolDblSided.py:53 +#: appTools/ToolDblSided.py:514 msgid "Objects to be mirrored" msgstr "Zu spiegelnde Objekte" -#: appTools/ToolDblSided.py:65 -msgid "Gerber to be mirrored" -msgstr "Zu spiegelndes Gerber" +#: appTools/ToolDblSided.py:560 +msgid "Bounds Values" +msgstr "Grenzen Werte" -#: appTools/ToolDblSided.py:67 appTools/ToolDblSided.py:95 -#: appTools/ToolDblSided.py:125 -msgid "Mirror" -msgstr "Spiegeln" - -#: appTools/ToolDblSided.py:69 appTools/ToolDblSided.py:97 -#: appTools/ToolDblSided.py:127 +#: appTools/ToolDblSided.py:562 msgid "" -"Mirrors (flips) the specified object around \n" -"the specified axis. Does not create a new \n" -"object, but modifies it." +"Select on canvas the object(s)\n" +"for which to calculate bounds values." msgstr "" -"Spiegelt das angegebene Objekt um\n" -"die angegebene Achse. Erstellt kein neues\n" -"Objekt, ändert es aber." +"Wählen Sie auf der Leinwand die Objekte aus.\n" +"für die Grenzwerte berechnet werden sollen." -#: appTools/ToolDblSided.py:93 -msgid "Excellon Object to be mirrored." -msgstr "Zu spiegelndes Excellon-Objekt." +#: appTools/ToolDblSided.py:572 +msgid "X min" +msgstr "X min" -#: appTools/ToolDblSided.py:122 -msgid "Geometry Obj to be mirrored." -msgstr "Geometrie-Objekt, das gespiegelt werden soll." +#: appTools/ToolDblSided.py:574 appTools/ToolDblSided.py:588 +msgid "Minimum location." +msgstr "Mindeststandort." -#: appTools/ToolDblSided.py:158 -msgid "Mirror Parameters" -msgstr "Spiegelparameter" +#: appTools/ToolDblSided.py:586 +msgid "Y min" +msgstr "Y min" -#: appTools/ToolDblSided.py:159 +#: appTools/ToolDblSided.py:600 +msgid "X max" +msgstr "X max" + +#: appTools/ToolDblSided.py:602 appTools/ToolDblSided.py:616 +msgid "Maximum location." +msgstr "Maximaler Standort." + +#: appTools/ToolDblSided.py:614 +msgid "Y max" +msgstr "Y max" + +#: appTools/ToolDblSided.py:625 +msgid "Center point coordinates" +msgstr "Mittelpunktskoordinaten" + +#: appTools/ToolDblSided.py:627 +msgid "Centroid" +msgstr "Schwerpunkt" + +#: appTools/ToolDblSided.py:629 +msgid "" +"The center point location for the rectangular\n" +"bounding shape. Centroid. Format is (x, y)." +msgstr "" +"Die Mittelpunktposition für das Rechteck\n" +"begrenzende Form. Centroid. Das Format ist (x, y)." + +#: appTools/ToolDblSided.py:638 +msgid "Calculate Bounds Values" +msgstr "Berechnen Sie Grenzwerte" + +#: appTools/ToolDblSided.py:640 +msgid "" +"Calculate the enveloping rectangular shape coordinates,\n" +"for the selection of objects.\n" +"The envelope shape is parallel with the X, Y axis." +msgstr "" +"Berechnen Sie die einhüllenden rechteckigen Formkoordinaten,\n" +"zur Auswahl von Objekten.\n" +"Die Hüllkurvenform verläuft parallel zur X- und Y-Achse." + +#: appTools/ToolDblSided.py:667 +msgid "Mirror Operation" +msgstr "Spiegelbetrieb" + +#: appTools/ToolDblSided.py:668 msgid "Parameters for the mirror operation" msgstr "Parameter für die Spiegeloperation" -#: appTools/ToolDblSided.py:164 -msgid "Mirror Axis" -msgstr "Spiegelachse" - -#: appTools/ToolDblSided.py:175 +#: appTools/ToolDblSided.py:690 +#, fuzzy +#| msgid "" +#| "The coordinates used as reference for the mirror operation.\n" +#| "Can be:\n" +#| "- Point -> a set of coordinates (x,y) around which the object is " +#| "mirrored\n" +#| "- Box -> a set of coordinates (x, y) obtained from the center of the\n" +#| "bounding box of another object selected below" msgid "" "The coordinates used as reference for the mirror operation.\n" "Can be:\n" "- Point -> a set of coordinates (x,y) around which the object is mirrored\n" "- Box -> a set of coordinates (x, y) obtained from the center of the\n" -"bounding box of another object selected below" +"bounding box of another object selected below\n" +"- Hole Snap -> a point defined by the center of a drill hone in a Excellon " +"object" msgstr "" "Die Koordinaten, die als Referenz für die Spiegeloperation verwendet " "werden.\n" @@ -13953,11 +15295,11 @@ msgstr "" "werden\n" "Begrenzungsrahmen eines anderen unten ausgewählten Objekts" -#: appTools/ToolDblSided.py:189 +#: appTools/ToolDblSided.py:710 msgid "Point coordinates" msgstr "Punktkoordinaten" -#: appTools/ToolDblSided.py:194 +#: appTools/ToolDblSided.py:715 msgid "" "Add the coordinates in format (x, y) through which the mirroring " "axis\n" @@ -13973,7 +15315,21 @@ msgstr "" "und klicken Sie mit der linken Maustaste auf die Leinwand oder Sie können " "die Koordinaten manuell eingeben." -#: appTools/ToolDblSided.py:218 +#: appTools/ToolDblSided.py:733 +msgid "Object that holds holes that can be picked as reference for mirroing." +msgstr "" + +#: appTools/ToolDblSided.py:748 +msgid "Pick hole" +msgstr "" + +#: appTools/ToolDblSided.py:750 +msgid "" +"Click inside a drill hole that belong to the selected Excellon object,\n" +"and the hole center coordinates will be copied to the Point field." +msgstr "" + +#: appTools/ToolDblSided.py:766 msgid "" "It can be of type: Gerber or Excellon or Geometry.\n" "The coordinates of the center of the bounding box are used\n" @@ -13983,77 +15339,25 @@ msgstr "" "Die Koordinaten der Mitte des Begrenzungsrahmens werden verwendet\n" "als Referenz für den Spiegelbetrieb." -#: appTools/ToolDblSided.py:252 -msgid "Bounds Values" -msgstr "Grenzen Werte" +#: appTools/ToolDblSided.py:792 +msgid "Mirror" +msgstr "Spiegeln" -#: appTools/ToolDblSided.py:254 +#: appTools/ToolDblSided.py:794 msgid "" -"Select on canvas the object(s)\n" -"for which to calculate bounds values." +"Mirrors (flips) the specified object around \n" +"the specified axis. Does not create a new \n" +"object, but modifies it." msgstr "" -"Wählen Sie auf der Leinwand die Objekte aus.\n" -"für die Grenzwerte berechnet werden sollen." +"Spiegelt das angegebene Objekt um\n" +"die angegebene Achse. Erstellt kein neues\n" +"Objekt, ändert es aber." -#: appTools/ToolDblSided.py:264 -msgid "X min" -msgstr "X min" - -#: appTools/ToolDblSided.py:266 appTools/ToolDblSided.py:280 -msgid "Minimum location." -msgstr "Mindeststandort." - -#: appTools/ToolDblSided.py:278 -msgid "Y min" -msgstr "Y min" - -#: appTools/ToolDblSided.py:292 -msgid "X max" -msgstr "X max" - -#: appTools/ToolDblSided.py:294 appTools/ToolDblSided.py:308 -msgid "Maximum location." -msgstr "Maximaler Standort." - -#: appTools/ToolDblSided.py:306 -msgid "Y max" -msgstr "Y max" - -#: appTools/ToolDblSided.py:317 -msgid "Center point coordinates" -msgstr "Mittelpunktskoordinaten" - -#: appTools/ToolDblSided.py:319 -msgid "Centroid" -msgstr "Schwerpunkt" - -#: appTools/ToolDblSided.py:321 -msgid "" -"The center point location for the rectangular\n" -"bounding shape. Centroid. Format is (x, y)." -msgstr "" -"Die Mittelpunktposition für das Rechteck\n" -"begrenzende Form. Centroid. Das Format ist (x, y)." - -#: appTools/ToolDblSided.py:330 -msgid "Calculate Bounds Values" -msgstr "Berechnen Sie Grenzwerte" - -#: appTools/ToolDblSided.py:332 -msgid "" -"Calculate the enveloping rectangular shape coordinates,\n" -"for the selection of objects.\n" -"The envelope shape is parallel with the X, Y axis." -msgstr "" -"Berechnen Sie die einhüllenden rechteckigen Formkoordinaten,\n" -"zur Auswahl von Objekten.\n" -"Die Hüllkurvenform verläuft parallel zur X- und Y-Achse." - -#: appTools/ToolDblSided.py:352 +#: appTools/ToolDblSided.py:822 msgid "PCB Alignment" msgstr "PCB-Ausrichtung" -#: appTools/ToolDblSided.py:354 appTools/ToolDblSided.py:456 +#: appTools/ToolDblSided.py:824 appTools/ToolDblSided.py:932 msgid "" "Creates an Excellon Object containing the\n" "specified alignment holes and their mirror\n" @@ -14063,11 +15367,11 @@ msgstr "" "spezifizierte Ausrichtungslöcher und deren Spiegel\n" "Bilder." -#: appTools/ToolDblSided.py:361 +#: appTools/ToolDblSided.py:831 msgid "Drill Diameter" msgstr "Bohrdurchmesser" -#: appTools/ToolDblSided.py:390 appTools/ToolDblSided.py:397 +#: appTools/ToolDblSided.py:866 appTools/ToolDblSided.py:873 msgid "" "The reference point used to create the second alignment drill\n" "from the first alignment drill, by doing mirror.\n" @@ -14078,11 +15382,11 @@ msgstr "" "vom ersten Ausrichtungsbohrer durch Spiegeln.\n" "Sie kann im Abschnitt Spiegelparameter -> Referenz geändert werden" -#: appTools/ToolDblSided.py:410 +#: appTools/ToolDblSided.py:886 msgid "Alignment Drill Coordinates" msgstr "Ausrichtungsbohrkoordinaten" -#: appTools/ToolDblSided.py:412 +#: appTools/ToolDblSided.py:888 msgid "" "Alignment holes (x1, y1), (x2, y2), ... on one side of the mirror axis. For " "each set of (x, y) coordinates\n" @@ -14100,11 +15404,11 @@ msgstr "" "- Ein Bohrer in Spiegelposition über der oben in 'Achse ausrichten' " "ausgewählten Achse." -#: appTools/ToolDblSided.py:420 +#: appTools/ToolDblSided.py:896 msgid "Drill coordinates" msgstr "Bohrkoordinaten" -#: appTools/ToolDblSided.py:427 +#: appTools/ToolDblSided.py:903 msgid "" "Add alignment drill holes coordinates in the format: (x1, y1), (x2, " "y2), ... \n" @@ -14131,104 +15435,72 @@ msgstr "" "die Leinwand. Klicken Sie dann in das Feld und dann auf Einfügen.\n" "- durch manuelle Eingabe der Koordinaten im Format: (x1, y1), (x2, y2), ..." -#: appTools/ToolDblSided.py:442 +#: appTools/ToolDblSided.py:918 msgid "Delete Last" msgstr "Letzte löschen" -#: appTools/ToolDblSided.py:444 +#: appTools/ToolDblSided.py:920 msgid "Delete the last coordinates tuple in the list." msgstr "Delete the last coordinates tuple in the list." -#: appTools/ToolDblSided.py:454 +#: appTools/ToolDblSided.py:930 msgid "Create Excellon Object" msgstr "Excellon-Objekt erstellen" -#: appTools/ToolDblSided.py:541 -msgid "2-Sided Tool" -msgstr "2-seitiges Werkzeug" +#: appTools/ToolDistance.py:177 +msgid "Working" +msgstr "Arbeiten" -#: appTools/ToolDblSided.py:581 -msgid "" -"'Point' reference is selected and 'Point' coordinates are missing. Add them " -"and retry." -msgstr "" -"'Point'-Referenz ist ausgewählt und' Point'-Koordinaten fehlen. Fügen Sie " -"sie hinzu und versuchen Sie es erneut." +#: appTools/ToolDistance.py:182 +msgid "MEASURING: Click on the Start point ..." +msgstr "MESSEN: Klicken Sie auf den Startpunkt ..." -#: appTools/ToolDblSided.py:600 -msgid "There is no Box reference object loaded. Load one and retry." -msgstr "" -"Es ist kein Box-Referenzobjekt geladen. Laden Sie einen und versuchen Sie es " -"erneut." +#: appTools/ToolDistance.py:242 appTools/ToolDistance.py:648 +#: appTools/ToolDistanceMin.py:302 +msgid "Measure" +msgstr "Messen" -#: appTools/ToolDblSided.py:612 -msgid "No value or wrong format in Drill Dia entry. Add it and retry." -msgstr "" -"Kein Wert oder falsches Format im Eintrag Bohrdurchmesser. Fügen Sie es " -"hinzu und versuchen Sie es erneut." +#: appTools/ToolDistance.py:292 +msgid "Distance Tool finished." +msgstr "Distanzwerkzeug fertig." -#: appTools/ToolDblSided.py:623 -msgid "There are no Alignment Drill Coordinates to use. Add them and retry." -msgstr "" -"Es sind keine Ausrichtungsbohrkoordinaten vorhanden. Fügen Sie sie hinzu und " -"versuchen Sie es erneut." +#: appTools/ToolDistance.py:364 +msgid "Pads overlapped. Aborting." +msgstr "Pads überlappen sich. Abbruch." -#: appTools/ToolDblSided.py:648 -msgid "Excellon object with alignment drills created..." -msgstr "Excellon-Objekt mit Ausrichtungsbohrern erstellt ..." +#: appTools/ToolDistance.py:392 +msgid "Distance Tool cancelled." +msgstr "Distanzwerkzeug abgebrochen." -#: appTools/ToolDblSided.py:661 appTools/ToolDblSided.py:704 -#: appTools/ToolDblSided.py:748 -msgid "Only Gerber, Excellon and Geometry objects can be mirrored." -msgstr "Nur Gerber-, Excellon- und Geometrie-Objekte können gespiegelt werden." +#: appTools/ToolDistance.py:397 +msgid "MEASURING: Click on the Destination point ..." +msgstr "MESSEN: Klicken Sie auf den Zielpunkt ..." -#: appTools/ToolDblSided.py:671 appTools/ToolDblSided.py:715 -msgid "" -"There are no Point coordinates in the Point field. Add coords and try " -"again ..." -msgstr "" -"Das Punktfeld enthält keine Punktkoordinaten. Fügen Sie Coords hinzu und " -"versuchen Sie es erneut ..." +#: appTools/ToolDistance.py:406 appTools/ToolDistanceMin.py:197 +msgid "MEASURING" +msgstr "MESSUNG" -#: appTools/ToolDblSided.py:681 appTools/ToolDblSided.py:725 -#: appTools/ToolDblSided.py:762 -msgid "There is no Box object loaded ..." -msgstr "Es ist kein Box-Objekt geladen ..." +#: appTools/ToolDistance.py:407 appTools/ToolDistanceMin.py:198 +msgid "Result" +msgstr "Ergebnis" -#: appTools/ToolDblSided.py:691 appTools/ToolDblSided.py:735 -#: appTools/ToolDblSided.py:772 -msgid "was mirrored" -msgstr "wurde gespiegelt" - -#: appTools/ToolDblSided.py:700 appTools/ToolPunchGerber.py:533 -msgid "There is no Excellon object loaded ..." -msgstr "Es ist kein Excellon-Objekt geladen ..." - -#: appTools/ToolDblSided.py:744 -msgid "There is no Geometry object loaded ..." -msgstr "Es wurde kein Geometrieobjekt geladen ..." - -#: appTools/ToolDblSided.py:818 app_Main.py:4473 app_Main.py:4628 -msgid "Failed. No object(s) selected..." -msgstr "Gescheitert. Kein Objekt ausgewählt ..." - -#: appTools/ToolDistance.py:57 appTools/ToolDistanceMin.py:50 +#: appTools/ToolDistance.py:563 appTools/ToolDistanceMin.py:238 msgid "Those are the units in which the distance is measured." msgstr "Dies sind die Einheiten, in denen die Entfernung gemessen wird." -#: appTools/ToolDistance.py:58 appTools/ToolDistanceMin.py:51 +#: appTools/ToolDistance.py:564 appTools/ToolDistanceMin.py:239 msgid "METRIC (mm)" msgstr "METRISCH (mm)" -#: appTools/ToolDistance.py:58 appTools/ToolDistanceMin.py:51 +#: appTools/ToolDistance.py:564 appTools/ToolDistanceMin.py:239 msgid "INCH (in)" msgstr "ZOLL (in)" -#: appTools/ToolDistance.py:64 +#: appTools/ToolDistance.py:570 msgid "Snap to center" msgstr "Zur Mitte einrasten" -#: appTools/ToolDistance.py:66 +#: appTools/ToolDistance.py:572 msgid "" "Mouse cursor will snap to the center of the pad/drill\n" "when it is hovering over the geometry of the pad/drill." @@ -14236,99 +15508,83 @@ msgstr "" "Der Mauszeiger rastet in der Mitte des Pads / Bohrers ein\n" "wenn es über der Geometrie des Pads / Bohrers schwebt." -#: appTools/ToolDistance.py:76 +#: appTools/ToolDistance.py:582 msgid "Start Coords" msgstr "Starten Sie Koords" -#: appTools/ToolDistance.py:77 appTools/ToolDistance.py:82 +#: appTools/ToolDistance.py:583 appTools/ToolDistance.py:588 msgid "This is measuring Start point coordinates." msgstr "Dies ist das Messen von Startpunktkoordinaten." -#: appTools/ToolDistance.py:87 +#: appTools/ToolDistance.py:593 msgid "Stop Coords" msgstr "Stoppen Sie Koords" -#: appTools/ToolDistance.py:88 appTools/ToolDistance.py:93 +#: appTools/ToolDistance.py:594 appTools/ToolDistance.py:599 msgid "This is the measuring Stop point coordinates." msgstr "Dies ist die Messpunkt-Koordinate." -#: appTools/ToolDistance.py:98 appTools/ToolDistanceMin.py:62 +#: appTools/ToolDistance.py:604 appTools/ToolDistanceMin.py:250 msgid "Dx" msgstr "Dx" -#: appTools/ToolDistance.py:99 appTools/ToolDistance.py:104 -#: appTools/ToolDistanceMin.py:63 appTools/ToolDistanceMin.py:92 +#: appTools/ToolDistance.py:605 appTools/ToolDistance.py:610 +#: appTools/ToolDistanceMin.py:251 appTools/ToolDistanceMin.py:280 msgid "This is the distance measured over the X axis." msgstr "Dies ist der Abstand, der über die X-Achse gemessen wird." -#: appTools/ToolDistance.py:109 appTools/ToolDistanceMin.py:65 +#: appTools/ToolDistance.py:615 appTools/ToolDistanceMin.py:253 msgid "Dy" msgstr "Dy" -#: appTools/ToolDistance.py:110 appTools/ToolDistance.py:115 -#: appTools/ToolDistanceMin.py:66 appTools/ToolDistanceMin.py:97 +#: appTools/ToolDistance.py:616 appTools/ToolDistance.py:621 +#: appTools/ToolDistanceMin.py:254 appTools/ToolDistanceMin.py:285 msgid "This is the distance measured over the Y axis." msgstr "Dies ist die über die Y-Achse gemessene Entfernung." -#: appTools/ToolDistance.py:121 appTools/ToolDistance.py:126 -#: appTools/ToolDistanceMin.py:69 appTools/ToolDistanceMin.py:102 +#: appTools/ToolDistance.py:627 appTools/ToolDistance.py:632 +#: appTools/ToolDistanceMin.py:257 appTools/ToolDistanceMin.py:290 msgid "This is orientation angle of the measuring line." msgstr "Dies ist der Orientierungswinkel der Messlinie." -#: appTools/ToolDistance.py:131 appTools/ToolDistanceMin.py:71 +#: appTools/ToolDistance.py:637 appTools/ToolDistanceMin.py:259 msgid "DISTANCE" msgstr "ENTFERNUNG" -#: appTools/ToolDistance.py:132 appTools/ToolDistance.py:137 +#: appTools/ToolDistance.py:638 appTools/ToolDistance.py:643 msgid "This is the point to point Euclidian distance." msgstr "Dies ist die Punkt-zu-Punkt-Euklidische Entfernung." -#: appTools/ToolDistance.py:142 appTools/ToolDistance.py:339 -#: appTools/ToolDistanceMin.py:114 -msgid "Measure" -msgstr "Messen" - -#: appTools/ToolDistance.py:274 -msgid "Working" -msgstr "Arbeiten" - -#: appTools/ToolDistance.py:279 -msgid "MEASURING: Click on the Start point ..." -msgstr "MESSEN: Klicken Sie auf den Startpunkt ..." - -#: appTools/ToolDistance.py:389 -msgid "Distance Tool finished." -msgstr "Distanzwerkzeug fertig." - -#: appTools/ToolDistance.py:461 -msgid "Pads overlapped. Aborting." -msgstr "Pads überlappen sich. Abbruch." - -#: appTools/ToolDistance.py:489 -msgid "Distance Tool cancelled." -msgstr "Distanzwerkzeug abgebrochen." - -#: appTools/ToolDistance.py:494 -msgid "MEASURING: Click on the Destination point ..." -msgstr "MESSEN: Klicken Sie auf den Zielpunkt ..." - -#: appTools/ToolDistance.py:503 appTools/ToolDistanceMin.py:284 -msgid "MEASURING" -msgstr "MESSUNG" - -#: appTools/ToolDistance.py:504 appTools/ToolDistanceMin.py:285 -msgid "Result" -msgstr "Ergebnis" - -#: appTools/ToolDistanceMin.py:31 appTools/ToolDistanceMin.py:143 +#: appTools/ToolDistanceMin.py:56 appTools/ToolDistanceMin.py:221 msgid "Minimum Distance Tool" msgstr "Werkzeug für minimalen Abstand" -#: appTools/ToolDistanceMin.py:54 +#: appTools/ToolDistanceMin.py:67 +msgid "" +"Select two objects and no more, to measure the distance between them ..." +msgstr "" +"Wählen Sie zwei und nicht mehr Objekte aus, um den Abstand zwischen ihnen zu " +"messen ..." + +#: appTools/ToolDistanceMin.py:108 appTools/ToolDistanceMin.py:129 +#: appTools/ToolDistanceMin.py:138 appTools/ToolDistanceMin.py:159 +msgid "Select two objects and no more. Currently the selection has objects: " +msgstr "" +"Wählen Sie zwei Objekte und nicht mehr. Derzeit hat die Auswahl Objekte: " + +#: appTools/ToolDistanceMin.py:206 +msgid "Objects intersects or touch at" +msgstr "Objekte schneiden sich oder berühren sich" + +#: appTools/ToolDistanceMin.py:212 +msgid "Jumped to the half point between the two selected objects" +msgstr "Sprang zum halben Punkt zwischen den beiden ausgewählten Objekten" + +#: appTools/ToolDistanceMin.py:242 msgid "First object point" msgstr "Erster Objektpunkt" -#: appTools/ToolDistanceMin.py:55 appTools/ToolDistanceMin.py:80 +#: appTools/ToolDistanceMin.py:243 appTools/ToolDistanceMin.py:268 msgid "" "This is first object point coordinates.\n" "This is the start point for measuring distance." @@ -14336,11 +15592,11 @@ msgstr "" "Dies sind erste Objektpunktkoordinaten.\n" "Dies ist der Startpunkt für die Entfernungsmessung." -#: appTools/ToolDistanceMin.py:58 +#: appTools/ToolDistanceMin.py:246 msgid "Second object point" msgstr "Zweiter Objektpunkt" -#: appTools/ToolDistanceMin.py:59 appTools/ToolDistanceMin.py:86 +#: appTools/ToolDistanceMin.py:247 appTools/ToolDistanceMin.py:274 msgid "" "This is second object point coordinates.\n" "This is the end point for measuring distance." @@ -14348,60 +15604,112 @@ msgstr "" "Dies sind die Koordinaten des zweiten Objektpunkts.\n" "Dies ist der Endpunkt für die Entfernungsmessung." -#: appTools/ToolDistanceMin.py:72 appTools/ToolDistanceMin.py:107 +#: appTools/ToolDistanceMin.py:260 appTools/ToolDistanceMin.py:295 msgid "This is the point to point Euclidean distance." msgstr "Dies ist die euklidische Distanz von Punkt zu Punkt." -#: appTools/ToolDistanceMin.py:74 +#: appTools/ToolDistanceMin.py:262 msgid "Half Point" msgstr "Halber Punkt" -#: appTools/ToolDistanceMin.py:75 appTools/ToolDistanceMin.py:112 +#: appTools/ToolDistanceMin.py:263 appTools/ToolDistanceMin.py:300 msgid "This is the middle point of the point to point Euclidean distance." msgstr "Dies ist der Mittelpunkt der euklidischen Distanz von Punkt zu Punkt." -#: appTools/ToolDistanceMin.py:117 +#: appTools/ToolDistanceMin.py:305 msgid "Jump to Half Point" msgstr "Springe zum halben Punkt" -#: appTools/ToolDistanceMin.py:154 +#: appTools/ToolDrilling.py:1181 appTools/ToolIsolation.py:772 +#: appTools/ToolMilling.py:962 appTools/ToolNCC.py:444 +#: appTools/ToolPaint.py:381 +msgid "Current Tool parameters were applied to all tools." +msgstr "Aktuelle Werkzeugparameter wurden auf alle Werkzeuge angewendet." + +#: appTools/ToolDrilling.py:1586 camlib.py:3619 +msgid "The loaded Excellon file has no drills" +msgstr "Die geladene Excellon-Datei hat keine Bohrer" + +#: appTools/ToolDrilling.py:1631 camlib.py:3541 +msgid "Creating a list of points to drill..." +msgstr "Erstellen einer Liste von Punkten zum Bohren ..." + +#: appTools/ToolDrilling.py:1638 camlib.py:3570 +msgid "Failed. Drill points inside the exclusion zones." +msgstr "Gescheitert. Bohrpunkte innerhalb der Sperrzonen." + +#: appTools/ToolDrilling.py:1654 camlib.py:3609 camlib.py:5002 camlib.py:5767 +msgid "Starting G-Code" +msgstr "G-Code starten" + +#: appTools/ToolDrilling.py:1659 appTools/ToolMilling.py:1355 +#, fuzzy +#| msgid "Generating panel..." +msgid "Generating Excellon CNCJob..." +msgstr "Panel wird erstellt ..." + +#: appTools/ToolDrilling.py:1777 camlib.py:3140 camlib.py:5270 camlib.py:5629 +msgid "The Toolchange X,Y format has to be (x, y)." +msgstr "" + +#: appTools/ToolDrilling.py:2020 appTools/ToolMilling.py:1639 +#, fuzzy +#| msgid "Excellon object with alignment drills created..." +msgid "Excellon object for drilling/milling operation." +msgstr "Excellon-Objekt mit Ausrichtungsbohrern erstellt ..." + +#: appTools/ToolDrilling.py:2084 +msgid "Search DB" +msgstr "" + +#: appTools/ToolDrilling.py:2087 msgid "" -"Select two objects and no more, to measure the distance between them ..." +"Will search and try to replace the tools from Tools Table\n" +"with tools from DB that have a close diameter value." msgstr "" -"Wählen Sie zwei und nicht mehr Objekte aus, um den Abstand zwischen ihnen zu " -"messen ..." -#: appTools/ToolDistanceMin.py:195 appTools/ToolDistanceMin.py:216 -#: appTools/ToolDistanceMin.py:225 appTools/ToolDistanceMin.py:246 -msgid "Select two objects and no more. Currently the selection has objects: " +#: appTools/ToolDrilling.py:2486 appTools/ToolMilling.py:2168 +msgid "" +"The preprocessor JSON file that dictates\n" +"Gcode output for Excellon Objects." msgstr "" -"Wählen Sie zwei Objekte und nicht mehr. Derzeit hat die Auswahl Objekte: " +"Die diktierende Präprozessor-JSON-Datei\n" +"Gcode-Ausgabe für Excellon-Objekte." -#: appTools/ToolDistanceMin.py:293 -msgid "Objects intersects or touch at" -msgstr "Objekte schneiden sich oder berühren sich" +#: appTools/ToolDrilling.py:2618 appTools/ToolMilling.py:2307 +#, fuzzy +#| msgid "" +#| "Add / Select at least one tool in the tool-table.\n" +#| "Click the # header to select all, or Ctrl + LMB\n" +#| "for custom selection of tools." +msgid "" +"Generate the CNC Job.\n" +"If milling then an additional Geometry object will be created.\n" +"Add / Select 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 "" +"Hinzufügen / Auswählen mindestens eines Werkzeugs in der Werkzeugtabelle.\n" +"Klicken Sie auf die Überschrift #, um alle auszuwählen, oder auf Strg + LMB\n" +"zur benutzerdefinierten Auswahl von Werkzeugen." -#: appTools/ToolDistanceMin.py:299 -msgid "Jumped to the half point between the two selected objects" -msgstr "Sprang zum halben Punkt zwischen den beiden ausgewählten Objekten" - -#: appTools/ToolEtchCompensation.py:75 appTools/ToolInvertGerber.py:74 +#: appTools/ToolEtchCompensation.py:293 appTools/ToolInvertGerber.py:217 msgid "Gerber object that will be inverted." msgstr "Gerber-Objekt, das invertiert wird." -#: appTools/ToolEtchCompensation.py:86 +#: appTools/ToolEtchCompensation.py:304 msgid "Utilities" msgstr "Dienstprogramme" -#: appTools/ToolEtchCompensation.py:87 +#: appTools/ToolEtchCompensation.py:305 msgid "Conversion utilities" msgstr "Konvertierungsdienstprogramme" -#: appTools/ToolEtchCompensation.py:92 +#: appTools/ToolEtchCompensation.py:310 msgid "Oz to Microns" msgstr "Oz zu Mikron" -#: appTools/ToolEtchCompensation.py:94 +#: appTools/ToolEtchCompensation.py:312 msgid "" "Will convert from oz thickness to microns [um].\n" "Can use formulas with operators: /, *, +, -, %, .\n" @@ -14411,19 +15719,19 @@ msgstr "" "Kann Formeln mit Operatoren verwenden: /, *, +, -,% ,.\n" "Die reellen Zahlen verwenden das Punkt-Dezimal-Trennzeichen." -#: appTools/ToolEtchCompensation.py:103 +#: appTools/ToolEtchCompensation.py:321 msgid "Oz value" msgstr "Oz Wert" -#: appTools/ToolEtchCompensation.py:105 appTools/ToolEtchCompensation.py:126 +#: appTools/ToolEtchCompensation.py:323 appTools/ToolEtchCompensation.py:344 msgid "Microns value" msgstr "Mikronwert" -#: appTools/ToolEtchCompensation.py:113 +#: appTools/ToolEtchCompensation.py:331 msgid "Mils to Microns" msgstr "Mils zu Mikron" -#: appTools/ToolEtchCompensation.py:115 +#: appTools/ToolEtchCompensation.py:333 msgid "" "Will convert from mils to microns [um].\n" "Can use formulas with operators: /, *, +, -, %, .\n" @@ -14433,19 +15741,19 @@ msgstr "" "Kann Formeln mit Operatoren verwenden: /, *, +, -,% ,.\n" "Die reellen Zahlen verwenden das Punkt-Dezimal-Trennzeichen." -#: appTools/ToolEtchCompensation.py:124 +#: appTools/ToolEtchCompensation.py:342 msgid "Mils value" msgstr "Mils Wert" -#: appTools/ToolEtchCompensation.py:139 appTools/ToolInvertGerber.py:86 +#: appTools/ToolEtchCompensation.py:357 appTools/ToolInvertGerber.py:229 msgid "Parameters for this tool" msgstr "Parameter für dieses Werkzeug" -#: appTools/ToolEtchCompensation.py:144 +#: appTools/ToolEtchCompensation.py:362 msgid "Copper Thickness" msgstr "Kupferdicke" -#: appTools/ToolEtchCompensation.py:146 +#: appTools/ToolEtchCompensation.py:364 msgid "" "The thickness of the copper foil.\n" "In microns [um]." @@ -14453,11 +15761,11 @@ msgstr "" "Die Dicke der Kupferfolie.\n" "In Mikrometern [um]." -#: appTools/ToolEtchCompensation.py:157 +#: appTools/ToolEtchCompensation.py:375 msgid "Ratio" msgstr "Verhältnis" -#: appTools/ToolEtchCompensation.py:159 +#: appTools/ToolEtchCompensation.py:377 msgid "" "The ratio of lateral etch versus depth etch.\n" "Can be:\n" @@ -14469,35 +15777,35 @@ msgstr "" "- custom -> Der Benutzer gibt einen benutzerdefinierten Wert ein\n" "- vorausgewählt -> Wert, der von einer Auswahl der Ätzmittel abhängt" -#: appTools/ToolEtchCompensation.py:165 +#: appTools/ToolEtchCompensation.py:383 msgid "Etch Factor" msgstr "Ätzfaktor" -#: appTools/ToolEtchCompensation.py:166 +#: appTools/ToolEtchCompensation.py:384 msgid "Etchants list" msgstr "Ätzliste" -#: appTools/ToolEtchCompensation.py:167 +#: appTools/ToolEtchCompensation.py:385 msgid "Manual offset" msgstr "Manueller Versatz" -#: appTools/ToolEtchCompensation.py:174 appTools/ToolEtchCompensation.py:179 +#: appTools/ToolEtchCompensation.py:392 appTools/ToolEtchCompensation.py:397 msgid "Etchants" msgstr "Ätzmittel" -#: appTools/ToolEtchCompensation.py:176 +#: appTools/ToolEtchCompensation.py:394 msgid "A list of etchants." msgstr "Eine Liste von Ätzmitteln." -#: appTools/ToolEtchCompensation.py:180 +#: appTools/ToolEtchCompensation.py:398 msgid "Alkaline baths" msgstr "Alkalische Bäder" -#: appTools/ToolEtchCompensation.py:186 +#: appTools/ToolEtchCompensation.py:404 msgid "Etch factor" msgstr "Ätzfaktor" -#: appTools/ToolEtchCompensation.py:188 +#: appTools/ToolEtchCompensation.py:406 msgid "" "The ratio between depth etch and lateral etch .\n" "Accepts real numbers and formulas using the operators: /,*,+,-,%" @@ -14505,15 +15813,15 @@ msgstr "" "Das Verhältnis zwischen Tiefenätzen und seitlichem Ätzen.\n" "Akzeptiert reelle Zahlen und Formeln mit den Operatoren: /, *, +, -,%" -#: appTools/ToolEtchCompensation.py:192 +#: appTools/ToolEtchCompensation.py:410 msgid "Real number or formula" msgstr "Reelle Zahl oder Formel" -#: appTools/ToolEtchCompensation.py:193 +#: appTools/ToolEtchCompensation.py:411 msgid "Etch_factor" msgstr "Ätzfaktor" -#: appTools/ToolEtchCompensation.py:201 +#: appTools/ToolEtchCompensation.py:419 msgid "" "Value with which to increase or decrease (buffer)\n" "the copper features. In microns [um]." @@ -14521,38 +15829,60 @@ msgstr "" "Wert, mit dem erhöht oder verringert werden soll (Puffer)\n" "die Kupfermerkmale. In Mikrometern [um]." -#: appTools/ToolEtchCompensation.py:225 +#: appTools/ToolEtchCompensation.py:443 msgid "Compensate" msgstr "Kompensieren" -#: appTools/ToolEtchCompensation.py:227 +#: appTools/ToolEtchCompensation.py:445 msgid "" "Will increase the copper features thickness to compensate the lateral etch." msgstr "" "Erhöht die Dicke der Kupfermerkmale, um das seitliche Ätzen zu kompensieren." -#: appTools/ToolExtractDrills.py:29 appTools/ToolExtractDrills.py:295 -msgid "Extract Drills" -msgstr "Bohrer extrahieren" - -#: appTools/ToolExtractDrills.py:62 -msgid "Gerber from which to extract drill holes" -msgstr "Gerber, aus dem Bohrlöcher gezogen werden sollen" - -#: appTools/ToolExtractDrills.py:297 -msgid "Extract drills from a given Gerber file." -msgstr "Extrahieren Sie Bohrer aus einer bestimmten Gerber-Datei." - -#: appTools/ToolExtractDrills.py:478 appTools/ToolExtractDrills.py:563 -#: appTools/ToolExtractDrills.py:648 +#: appTools/ToolExtractDrills.py:189 appTools/ToolExtractDrills.py:279 +#: appTools/ToolExtractDrills.py:369 msgid "No drills extracted. Try different parameters." msgstr "Keine Bohrer extrahiert. Probieren Sie verschiedene Parameter aus." -#: appTools/ToolFiducials.py:56 +#: appTools/ToolExtractDrills.py:420 appTools/ToolExtractDrills.py:687 +msgid "Extract Drills" +msgstr "Bohrer extrahieren" + +#: appTools/ToolExtractDrills.py:454 +msgid "Gerber from which to extract drill holes" +msgstr "Gerber, aus dem Bohrlöcher gezogen werden sollen" + +#: appTools/ToolExtractDrills.py:689 +msgid "Extract drills from a given Gerber file." +msgstr "Extrahieren Sie Bohrer aus einer bestimmten Gerber-Datei." + +#: appTools/ToolFiducials.py:237 +msgid "Click to add first Fiducial. Bottom Left..." +msgstr "Klicken um den ersten Bezugspunkt unten links hinzuzufügen..." + +#: appTools/ToolFiducials.py:501 +msgid "Click to add the last fiducial. Top Right..." +msgstr "Klicken um den letzten Bezugspunkt oben rechts hinzuzufügen..." + +#: appTools/ToolFiducials.py:506 +msgid "Click to add the second fiducial. Top Left or Bottom Right..." +msgstr "" +"Klicken um den zweiten Bezugspunkt oben links oder unten rechts " +"hinzuzufügen..." + +#: appTools/ToolFiducials.py:509 appTools/ToolFiducials.py:518 +msgid "Done. All fiducials have been added." +msgstr "Fertig. Alle Bezugspunkte hinzugefügt." + +#: appTools/ToolFiducials.py:595 +msgid "Fiducials Tool exit." +msgstr "Bezugspunkttool beenden." + +#: appTools/ToolFiducials.py:667 msgid "Fiducials Coordinates" msgstr "Bezugspunktkoordinaten" -#: appTools/ToolFiducials.py:58 +#: appTools/ToolFiducials.py:669 msgid "" "A table with the fiducial points coordinates,\n" "in the format (x, y)." @@ -14560,7 +15890,7 @@ msgstr "" "Eine Tabelle der Bezugspunkte mit Koordinaten \n" "im Format (x,z)" -#: appTools/ToolFiducials.py:194 +#: appTools/ToolFiducials.py:805 msgid "" "- 'Auto' - automatic placement of fiducials in the corners of the bounding " "box.\n" @@ -14570,31 +15900,31 @@ msgstr "" "platziert.\n" "\"Manuell\" Die Bezugspunkte werden manuell platziert." -#: appTools/ToolFiducials.py:240 +#: appTools/ToolFiducials.py:851 msgid "Thickness of the line that makes the fiducial." msgstr "Dicke der Linie, die den Bezugspunkt macht." -#: appTools/ToolFiducials.py:271 +#: appTools/ToolFiducials.py:882 msgid "Add Fiducial" msgstr "Bezugspunkt hinzufügen" -#: appTools/ToolFiducials.py:273 +#: appTools/ToolFiducials.py:884 msgid "Will add a polygon on the copper layer to serve as fiducial." msgstr "Fügt ein Polygon auf die Kupferschicht als Bezugspunkt hinzu." -#: appTools/ToolFiducials.py:289 +#: appTools/ToolFiducials.py:900 msgid "Soldermask Gerber" msgstr "Lötpastenmaske Gerber" -#: appTools/ToolFiducials.py:291 +#: appTools/ToolFiducials.py:902 msgid "The Soldermask Gerber object." msgstr "Lötpastenmaske Gerber-Objekt." -#: appTools/ToolFiducials.py:303 +#: appTools/ToolFiducials.py:914 msgid "Add Soldermask Opening" msgstr "Lotpastenmaske Öffnung hinzufügen" -#: appTools/ToolFiducials.py:305 +#: appTools/ToolFiducials.py:916 msgid "" "Will add a polygon on the soldermask layer\n" "to serve as fiducial opening.\n" @@ -14606,33 +15936,83 @@ msgstr "" "Der Durchmesser ist immer doppelt so groß\n" "wie der Kupfer Bezugspunkt." -#: appTools/ToolFiducials.py:520 -msgid "Click to add first Fiducial. Bottom Left..." -msgstr "Klicken um den ersten Bezugspunkt unten links hinzuzufügen..." - -#: appTools/ToolFiducials.py:784 -msgid "Click to add the last fiducial. Top Right..." -msgstr "Klicken um den letzten Bezugspunkt oben rechts hinzuzufügen..." - -#: appTools/ToolFiducials.py:789 -msgid "Click to add the second fiducial. Top Left or Bottom Right..." +#: appTools/ToolFilm.py:154 +msgid "No FlatCAM object selected. Load an object for Film and retry." msgstr "" -"Klicken um den zweiten Bezugspunkt oben links oder unten rechts " -"hinzuzufügen..." +"Kein FlatCAM-Objekt ausgewählt. Laden Sie ein Objekt für Film und versuchen " +"Sie es erneut." -#: appTools/ToolFiducials.py:792 appTools/ToolFiducials.py:801 -msgid "Done. All fiducials have been added." -msgstr "Fertig. Alle Bezugspunkte hinzugefügt." +#: appTools/ToolFilm.py:161 +msgid "No FlatCAM object selected. Load an object for Box and retry." +msgstr "" +"Kein FlatCAM-Objekt ausgewählt. Laden Sie ein Objekt für Box und versuchen " +"Sie es erneut." -#: appTools/ToolFiducials.py:878 -msgid "Fiducials Tool exit." -msgstr "Bezugspunkttool beenden." +#: appTools/ToolFilm.py:165 +msgid "No FlatCAM object selected." +msgstr "Kein FlatCAM-Objekt ausgewählt." -#: appTools/ToolFilm.py:42 +#: appTools/ToolFilm.py:176 +msgid "Generating Film ..." +msgstr "Film wird erstellt ..." + +#: appTools/ToolFilm.py:225 appTools/ToolFilm.py:229 +msgid "Export positive film" +msgstr "Film positiv exportieren" + +#: appTools/ToolFilm.py:262 +msgid "" +"No Excellon object selected. Load an object for punching reference and retry." +msgstr "" +"Kein Excellon-Objekt ausgewählt. Laden Sie ein Objekt zum Stanzen der " +"Referenz und versuchen Sie es erneut." + +#: appTools/ToolFilm.py:286 +msgid "" +" Could not generate punched hole film because the punch hole sizeis bigger " +"than some of the apertures in the Gerber object." +msgstr "" +" Es konnte kein Lochfilm erzeugt werden, da die Lochgröße größer ist als " +"einige der Öffnungen im Gerber-Objekt." + +#: appTools/ToolFilm.py:298 +msgid "" +"Could not generate punched hole film because the punch hole sizeis bigger " +"than some of the apertures in the Gerber object." +msgstr "" +"Es konnte kein Lochfilm erzeugt werden, da die Lochgröße größer ist als " +"einige der Öffnungen im Gerber-Objekt." + +#: appTools/ToolFilm.py:316 +msgid "" +"Could not generate punched hole film because the newly created object " +"geometry is the same as the one in the source object geometry..." +msgstr "" +"Lochfolie konnte nicht generiert werden, da die neu erstellte " +"Objektgeometrie mit der in der Quellobjektgeometrie übereinstimmt ..." + +#: appTools/ToolFilm.py:371 appTools/ToolFilm.py:375 +msgid "Export negative film" +msgstr "Exportieren negativ Film" + +#: appTools/ToolFilm.py:434 appTools/ToolFilm.py:615 +#: appTools/ToolPanelize.py:209 +msgid "No object Box. Using instead" +msgstr "Keine Objektbox. Verwenden Sie stattdessen" + +#: appTools/ToolFilm.py:550 appTools/ToolFilm.py:728 +msgid "Film file exported to" +msgstr "Film-Datei exportiert nach" + +#: appTools/ToolFilm.py:553 appTools/ToolFilm.py:731 +msgid "Generating Film ... Please wait." +msgstr "Film wird erstellt ... Bitte warten Sie." + +#: appTools/ToolFilm.py:754 msgid "Film PCB" msgstr "Film PCB" -#: appTools/ToolFilm.py:73 +#: appTools/ToolFilm.py:786 msgid "" "Specify the type of object for which to create the film.\n" "The object can be of type: Gerber or Geometry.\n" @@ -14644,7 +16024,7 @@ msgstr "" "Die Auswahl hier bestimmt den Objekttyp\n" "im Filmobjekt-Kombinationsfeld." -#: appTools/ToolFilm.py:96 +#: appTools/ToolFilm.py:809 msgid "" "Specify the type of object to be used as an container for\n" "film creation. It can be: Gerber or Geometry type.The selection here decide " @@ -14656,15 +16036,15 @@ msgstr "" "bestimmt den Objekttyp\n" "im Kombinationsfeld Box-Objekt." -#: appTools/ToolFilm.py:256 +#: appTools/ToolFilm.py:976 msgid "Film Parameters" msgstr "Film-Parameter" -#: appTools/ToolFilm.py:317 +#: appTools/ToolFilm.py:1035 msgid "Punch drill holes" msgstr "Löcher stanzen" -#: appTools/ToolFilm.py:318 +#: appTools/ToolFilm.py:1036 msgid "" "When checked the generated film will have holes in pads when\n" "the generated film is positive. This is done to help drilling,\n" @@ -14676,11 +16056,11 @@ msgstr "" "erleichtern.\n" "wenn manuell erledigt." -#: appTools/ToolFilm.py:336 +#: appTools/ToolFilm.py:1054 msgid "Source" msgstr "Quelle" -#: appTools/ToolFilm.py:338 +#: appTools/ToolFilm.py:1056 msgid "" "The punch hole source can be:\n" "- Excellon -> an Excellon holes center will serve as reference.\n" @@ -14690,34 +16070,34 @@ msgstr "" "- Excellon -> Ein Excellon-Lochzentrum dient als Referenz.\n" "- Pad-Mitte -> wird versuchen, die Pad-Mitte als Referenz zu verwenden." -#: appTools/ToolFilm.py:343 +#: appTools/ToolFilm.py:1061 msgid "Pad center" msgstr "Pad-Mitte" -#: appTools/ToolFilm.py:348 +#: appTools/ToolFilm.py:1066 msgid "Excellon Obj" msgstr "Excellon-Objekt" -#: appTools/ToolFilm.py:350 +#: appTools/ToolFilm.py:1068 msgid "" "Remove the geometry of Excellon from the Film to create the holes in pads." msgstr "" "Entfernen Sie die Geometrie von Excellon aus dem Film, um die Löcher in den " "Pads zu erzeugen." -#: appTools/ToolFilm.py:364 +#: appTools/ToolFilm.py:1082 msgid "Punch Size" msgstr "Lochergröße" -#: appTools/ToolFilm.py:365 +#: appTools/ToolFilm.py:1083 msgid "The value here will control how big is the punch hole in the pads." msgstr "Der Wert hier bestimmt, wie groß das Loch in den Pads ist." -#: appTools/ToolFilm.py:485 +#: appTools/ToolFilm.py:1203 msgid "Save Film" msgstr "Film speichern" -#: appTools/ToolFilm.py:487 +#: appTools/ToolFilm.py:1206 msgid "" "Create a Film for the selected object, within\n" "the specified box. Does not create a new \n" @@ -14729,7 +16109,7 @@ msgstr "" "  FlatCAM-Objekt, speichern Sie es jedoch direkt im \n" "gewähltem Format." -#: appTools/ToolFilm.py:649 +#: appTools/ToolFilm.py:1277 msgid "" "Using the Pad center does not work on Geometry objects. Only a Gerber object " "has pads." @@ -14737,87 +16117,37 @@ msgstr "" "Die Verwendung der Pad-Mitte funktioniert nicht bei Geometrieobjekten. Nur " "ein Gerber-Objekt hat Pads." -#: appTools/ToolFilm.py:659 -msgid "No FlatCAM object selected. Load an object for Film and retry." -msgstr "" -"Kein FlatCAM-Objekt ausgewählt. Laden Sie ein Objekt für Film und versuchen " -"Sie es erneut." +#: appTools/ToolImage.py:65 +msgid "Image Tool" +msgstr "Bildwerkzeug" -#: appTools/ToolFilm.py:666 -msgid "No FlatCAM object selected. Load an object for Box and retry." -msgstr "" -"Kein FlatCAM-Objekt ausgewählt. Laden Sie ein Objekt für Box und versuchen " -"Sie es erneut." +#: appTools/ToolImage.py:95 appTools/ToolImage.py:98 +msgid "Import IMAGE" +msgstr "BILD importieren" -#: appTools/ToolFilm.py:670 -msgid "No FlatCAM object selected." -msgstr "Kein FlatCAM-Objekt ausgewählt." - -#: appTools/ToolFilm.py:681 -msgid "Generating Film ..." -msgstr "Film wird erstellt ..." - -#: appTools/ToolFilm.py:730 appTools/ToolFilm.py:734 -msgid "Export positive film" -msgstr "Film positiv exportieren" - -#: appTools/ToolFilm.py:767 +#: appTools/ToolImage.py:142 app_Main.py:8870 app_Main.py:8923 msgid "" -"No Excellon object selected. Load an object for punching reference and retry." +"Not supported type is picked as parameter. Only Geometry and Gerber are " +"supported" msgstr "" -"Kein Excellon-Objekt ausgewählt. Laden Sie ein Objekt zum Stanzen der " -"Referenz und versuchen Sie es erneut." +"Nicht unterstützte Art wird als Parameter ausgewählt. Nur Geometrie und " +"Gerber werden unterstützt" -#: appTools/ToolFilm.py:791 -msgid "" -" Could not generate punched hole film because the punch hole sizeis bigger " -"than some of the apertures in the Gerber object." -msgstr "" -" Es konnte kein Lochfilm erzeugt werden, da die Lochgröße größer ist als " -"einige der Öffnungen im Gerber-Objekt." +#: appTools/ToolImage.py:150 +msgid "Importing Image" +msgstr "Bild importieren" -#: appTools/ToolFilm.py:803 -msgid "" -"Could not generate punched hole film because the punch hole sizeis bigger " -"than some of the apertures in the Gerber object." -msgstr "" -"Es konnte kein Lochfilm erzeugt werden, da die Lochgröße größer ist als " -"einige der Öffnungen im Gerber-Objekt." +#: appTools/ToolImage.py:162 appTools/ToolPDF.py:154 app_Main.py:8901 +#: app_Main.py:8956 app_Main.py:9020 app_Main.py:9083 app_Main.py:9149 +#: app_Main.py:9214 app_Main.py:9271 +msgid "Opened" +msgstr "Geöffnet" -#: appTools/ToolFilm.py:821 -msgid "" -"Could not generate punched hole film because the newly created object " -"geometry is the same as the one in the source object geometry..." -msgstr "" -"Lochfolie konnte nicht generiert werden, da die neu erstellte " -"Objektgeometrie mit der in der Quellobjektgeometrie übereinstimmt ..." - -#: appTools/ToolFilm.py:876 appTools/ToolFilm.py:880 -msgid "Export negative film" -msgstr "Exportieren negativ Film" - -#: appTools/ToolFilm.py:941 appTools/ToolFilm.py:1124 -#: appTools/ToolPanelize.py:442 -msgid "No object Box. Using instead" -msgstr "Keine Objektbox. Verwenden Sie stattdessen" - -#: appTools/ToolFilm.py:1057 appTools/ToolFilm.py:1237 -msgid "Film file exported to" -msgstr "Film-Datei exportiert nach" - -#: appTools/ToolFilm.py:1060 appTools/ToolFilm.py:1240 -msgid "Generating Film ... Please wait." -msgstr "Film wird erstellt ... Bitte warten Sie." - -#: appTools/ToolImage.py:24 +#: appTools/ToolImage.py:167 msgid "Image as Object" msgstr "Bild als Objekt" -#: appTools/ToolImage.py:33 -msgid "Image to PCB" -msgstr "Bild auf PCB" - -#: appTools/ToolImage.py:56 +#: appTools/ToolImage.py:198 msgid "" "Specify the type of object to create from the image.\n" "It can be of type: Gerber or Geometry." @@ -14825,23 +16155,23 @@ msgstr "" "Geben Sie den Objekttyp an, der aus dem Bild erstellt werden soll.\n" "Es kann vom Typ sein: Gerber oder Geometrie." -#: appTools/ToolImage.py:65 +#: appTools/ToolImage.py:207 msgid "DPI value" msgstr "DPI-Wert" -#: appTools/ToolImage.py:66 +#: appTools/ToolImage.py:208 msgid "Specify a DPI value for the image." msgstr "Geben Sie einen DPI-Wert für das Bild an." -#: appTools/ToolImage.py:72 +#: appTools/ToolImage.py:214 msgid "Level of detail" msgstr "Detaillierungsgrad" -#: appTools/ToolImage.py:81 +#: appTools/ToolImage.py:223 msgid "Image type" msgstr "Bildtyp" -#: appTools/ToolImage.py:83 +#: appTools/ToolImage.py:225 msgid "" "Choose a method for the image interpretation.\n" "B/W means a black & white image. Color means a colored image." @@ -14849,12 +16179,12 @@ msgstr "" "Wählen Sie eine Methode für die Bildinterpretation.\n" "B / W steht für ein Schwarzweißbild. Farbe bedeutet ein farbiges Bild." -#: appTools/ToolImage.py:92 appTools/ToolImage.py:107 appTools/ToolImage.py:120 -#: appTools/ToolImage.py:133 +#: appTools/ToolImage.py:234 appTools/ToolImage.py:249 +#: appTools/ToolImage.py:262 appTools/ToolImage.py:275 msgid "Mask value" msgstr "Maskenwert" -#: appTools/ToolImage.py:94 +#: appTools/ToolImage.py:236 msgid "" "Mask for monochrome image.\n" "Takes values between [0 ... 255].\n" @@ -14870,7 +16200,7 @@ msgstr "" "0 bedeutet kein Detail und 255 bedeutet alles\n" "(das ist total schwarz)." -#: appTools/ToolImage.py:109 +#: appTools/ToolImage.py:251 msgid "" "Mask for RED color.\n" "Takes values between [0 ... 255].\n" @@ -14882,7 +16212,7 @@ msgstr "" "Legt fest, wie viel Details enthalten sind\n" "in der resultierenden Geometrie." -#: appTools/ToolImage.py:122 +#: appTools/ToolImage.py:264 msgid "" "Mask for GREEN color.\n" "Takes values between [0 ... 255].\n" @@ -14894,7 +16224,7 @@ msgstr "" "Legt fest, wie viel Details enthalten sind\n" "in der resultierenden Geometrie." -#: appTools/ToolImage.py:135 +#: appTools/ToolImage.py:277 msgid "" "Mask for BLUE color.\n" "Takes values between [0 ... 255].\n" @@ -14906,45 +16236,23 @@ msgstr "" "Legt fest, wie viel Details enthalten sind\n" "in der resultierenden Geometrie." -#: appTools/ToolImage.py:143 +#: appTools/ToolImage.py:285 msgid "Import image" msgstr "Bild importieren" -#: appTools/ToolImage.py:145 +#: appTools/ToolImage.py:287 msgid "Open a image of raster type and then import it in FlatCAM." msgstr "Öffnen Sie ein Bild vom Raster-Typ und importieren Sie es in FlatCAM." -#: appTools/ToolImage.py:182 -msgid "Image Tool" -msgstr "Bildwerkzeug" +#: appTools/ToolInvertGerber.py:75 +msgid "Invert Tool" +msgstr "Invertiert Werkzeug" -#: appTools/ToolImage.py:234 appTools/ToolImage.py:237 -msgid "Import IMAGE" -msgstr "BILD importieren" - -#: appTools/ToolImage.py:277 app_Main.py:8484 app_Main.py:8531 -msgid "" -"Not supported type is picked as parameter. Only Geometry and Gerber are " -"supported" -msgstr "" -"Nicht unterstützte Art wird als Parameter ausgewählt. Nur Geometrie und " -"Gerber werden unterstützt" - -#: appTools/ToolImage.py:285 -msgid "Importing Image" -msgstr "Bild importieren" - -#: appTools/ToolImage.py:297 appTools/ToolPDF.py:154 app_Main.py:8509 -#: app_Main.py:8555 app_Main.py:8619 app_Main.py:8686 app_Main.py:8752 -#: app_Main.py:8817 app_Main.py:8874 -msgid "Opened" -msgstr "Geöffnet" - -#: appTools/ToolInvertGerber.py:126 +#: appTools/ToolInvertGerber.py:269 msgid "Invert Gerber" msgstr "Gerber umkehren" -#: appTools/ToolInvertGerber.py:128 +#: appTools/ToolInvertGerber.py:271 msgid "" "Will invert the Gerber object: areas that have copper\n" "will be empty of copper and previous empty area will be\n" @@ -14954,15 +16262,183 @@ msgstr "" "wird leer von Kupfer sein und der vorherige leere Bereich wird leer sein\n" "mit Kupfer gefüllt." -#: appTools/ToolInvertGerber.py:187 -msgid "Invert Tool" -msgstr "Invertiert Werkzeug" +#: appTools/ToolIsolation.py:789 appTools/ToolNCC.py:462 +#: appTools/ToolPaint.py:399 appTools/ToolSolderPaste.py:135 app_Main.py:4494 +msgid "Adding Tool cancelled" +msgstr "Addierwerkzeug abgebrochen" -#: appTools/ToolIsolation.py:96 +#: appTools/ToolIsolation.py:934 appTools/ToolNCC.py:864 +#: appTools/ToolOptimal.py:179 +msgid "" +"The Gerber object has one Polygon as geometry.\n" +"There are no distances between geometry elements to be found." +msgstr "" +"Das Gerber-Objekt hat ein Polygon als Geometrie.\n" +"Es sind keine Abstände zwischen Geometrieelementen zu finden." + +#: appTools/ToolIsolation.py:977 appTools/ToolNCC.py:907 +#, fuzzy +#| msgid "tooldia = tool diameter" +msgid "Optimal tool diameter found" +msgstr "tooldia = Werkzeugdurchmesser" + +#: appTools/ToolIsolation.py:1022 appTools/ToolIsolation.py:1109 +#: appTools/ToolIsolation.py:1171 appTools/ToolIsolation.py:2588 +#: appTools/ToolNCC.py:954 appTools/ToolNCC.py:1042 appTools/ToolNCC.py:1104 +#: appTools/ToolNCC.py:3650 appTools/ToolPaint.py:693 appTools/ToolPaint.py:781 +#: appTools/ToolPaint.py:843 appTools/ToolPaint.py:2675 +#: appTools/ToolSolderPaste.py:488 +msgid "Cancelled. Tool already in Tool Table." +msgstr "Abgebrochen. Werkzeug bereits in der Werkzeugtabelle." + +#: appTools/ToolIsolation.py:1137 appTools/ToolNCC.py:1070 +#: appTools/ToolPaint.py:809 +#, fuzzy +#| msgid "New tool added to Tool Table." +msgid "New tool added to Tool Table from Tools Database." +msgstr "Neues Werkzeug zur Werkzeugtabelle hinzugefügt." + +#: appTools/ToolIsolation.py:1201 appTools/ToolNCC.py:1134 +#: appTools/ToolPaint.py:872 +#, fuzzy +#| msgid "New tool added to Tool Table." +msgid "Default tool added to Tool Table." +msgstr "Neues Werkzeug zur Werkzeugtabelle hinzugefügt." + +#: appTools/ToolIsolation.py:1227 appTools/ToolNCC.py:1160 +#: appTools/ToolPaint.py:897 +msgid "Tool from Tool Table was edited." +msgstr "Werkzeug aus Werkzeugtabelle wurde bearbeitet." + +#: appTools/ToolIsolation.py:1240 appTools/ToolNCC.py:1173 +#: appTools/ToolPaint.py:910 appTools/ToolSolderPaste.py:548 +msgid "Cancelled. New diameter value is already in the Tool Table." +msgstr "" +"Abgebrochen. Der neue Durchmesserwert befindet sich bereits in der " +"Werkzeugtabelle." + +#: appTools/ToolIsolation.py:1291 appTools/ToolNCC.py:1224 +#: appTools/ToolPaint.py:960 +msgid "Delete failed. Select a tool to delete." +msgstr "Löschen fehlgeschlagen. Wählen Sie ein Werkzeug zum Löschen aus." + +#: appTools/ToolIsolation.py:1297 appTools/ToolNCC.py:1230 +#: appTools/ToolPaint.py:966 +msgid "Tool(s) deleted from Tool Table." +msgstr "Werkzeug(e) aus der Werkzeugtabelle gelöscht." + +#: appTools/ToolIsolation.py:1345 +msgid "Isolating..." +msgstr "Isolieren ..." + +#: appTools/ToolIsolation.py:1365 +msgid "Following geometry was generated" +msgstr "Folgende Geometrie wurde erzeugt" + +#: appTools/ToolIsolation.py:1380 +msgid "Failed to create Follow Geometry with tool diameter" +msgstr "Fehler beim Erstellen der folgenden Geometrie mit Werkzeugdurchmesser" + +#: appTools/ToolIsolation.py:1383 +msgid "Follow Geometry was created with tool diameter" +msgstr "Die folgende Geometrie wurde mit dem Werkzeugdurchmesser erstellt" + +#: appTools/ToolIsolation.py:1424 +msgid "Click on a polygon to isolate it." +msgstr "Klicken Sie auf ein Plozgon um es zu isolieren." + +#: appTools/ToolIsolation.py:1470 appTools/ToolIsolation.py:1672 +#: appTools/ToolIsolation.py:1859 appTools/ToolNCC.py:1295 +#: appTools/ToolPaint.py:1030 appTools/ToolPaint.py:1743 +msgid "No selected tools in Tool Table." +msgstr "Keine ausgewählten Werkzeuge in der Werkzeugtabelle." + +#: appTools/ToolIsolation.py:1552 appTools/ToolIsolation.py:1575 +#: appTools/ToolIsolation.py:1732 appTools/ToolIsolation.py:1925 +msgid "Subtracting Geo" +msgstr "Geo subtrahieren" + +#: appTools/ToolIsolation.py:1556 appTools/ToolIsolation.py:1736 +#: appTools/ToolIsolation.py:1929 +msgid "Intersecting Geo" +msgstr "Sich überschneidende Geometrie" + +#: appTools/ToolIsolation.py:1608 appTools/ToolIsolation.py:1805 +#: appTools/ToolIsolation.py:1994 +msgid "Empty Geometry in" +msgstr "Leere Geometrie in" + +#: appTools/ToolIsolation.py:1814 +msgid "" +"Partial failure. The geometry was processed with all tools.\n" +"But there are still not-isolated geometry elements. Try to include a tool " +"with smaller diameter." +msgstr "" +"Teilversagen. Die Geometrie wurde mit allen Werkzeugen verarbeitet.\n" +"Es gibt jedoch immer noch nicht isolierte Geometrieelemente. Versuchen Sie, " +"ein Werkzeug mit kleinerem Durchmesser einzuschließen." + +#: appTools/ToolIsolation.py:1817 +msgid "" +"The following are coordinates for the copper features that could not be " +"isolated:" +msgstr "" +"Die folgenden Koordinaten für die Kupfermerkmale konnten nicht isoliert " +"werden:" + +#: appTools/ToolIsolation.py:2158 appTools/ToolIsolation.py:2271 +#: appTools/ToolPaint.py:1125 +msgid "Added polygon" +msgstr "Polygon hinzugefügt" + +#: appTools/ToolIsolation.py:2159 appTools/ToolIsolation.py:2273 +msgid "Click to add next polygon or right click to start isolation." +msgstr "" +"Klicken Sie, um das nächste Polygon hinzuzufügen, oder klicken Sie mit der " +"rechten Maustaste, um den Isolationsvorgang zu beginnen." + +#: appTools/ToolIsolation.py:2171 appTools/ToolPaint.py:1139 +msgid "Removed polygon" +msgstr "Polygon entfernt" + +# nearly the same as before? What good is this? +#: appTools/ToolIsolation.py:2172 +msgid "Click to add/remove next polygon or right click to start isolation." +msgstr "" +"Klicken Sie, um das nächste Polygon hinzuzufügen oder zu entfernen, oder " +"klicken Sie mit der rechten Maustaste, um den Isolationsvorgang zu beginnen." + +#: appTools/ToolIsolation.py:2177 appTools/ToolPaint.py:1145 +msgid "No polygon detected under click position." +msgstr "Kein Polygon an der Stelle an die geklickt wurde." + +#: appTools/ToolIsolation.py:2207 appTools/ToolPaint.py:1175 +msgid "List of single polygons is empty. Aborting." +msgstr "Liste der Einzelpolygone ist leer. Vorgang wird abgebrochen." + +#: appTools/ToolIsolation.py:2276 +msgid "No polygon in selection." +msgstr "Kein Polygon in der Auswahl." + +#: appTools/ToolIsolation.py:2304 +msgid "Click the end point of the paint area." +msgstr "Klicken Sie auf den Endpunkt des Malbereichs." + +#: appTools/ToolIsolation.py:2552 appTools/ToolNCC.py:3614 +#: appTools/ToolPaint.py:2632 app_Main.py:5773 app_Main.py:5783 +msgid "Tool from DB added in Tool Table." +msgstr "Werkzeug aus Werkzeugdatenbank zur Werkzeugtabelle hinzugefügt." + +#: appTools/ToolIsolation.py:2606 appTools/ToolNCC.py:3667 +#: appTools/ToolPaint.py:2692 +msgid "New tool added to Tool Table." +msgstr "Neues Werkzeug zur Werkzeugtabelle hinzugefügt." + +#: appTools/ToolIsolation.py:2950 msgid "Gerber object for isolation routing." msgstr "Gerber-Objekt für Isolationsrouting." -#: appTools/ToolIsolation.py:120 appTools/ToolNCC.py:122 +#: appTools/ToolIsolation.py:2974 appTools/ToolNCC.py:3767 msgid "" "Tools pool from which the algorithm\n" "will pick the ones used for copper clearing." @@ -14970,7 +16446,7 @@ msgstr "" "Toolspool aus dem der Algorithmus\n" "wählt die für die Kupferreinigung verwendeten aus." -#: appTools/ToolIsolation.py:136 +#: appTools/ToolIsolation.py:2990 msgid "" "This is the Tool Number.\n" "Isolation routing will start with the tool with the biggest \n" @@ -14988,7 +16464,7 @@ msgstr "" "Werkzeugen\n" "Diese Funktion kann keine Routing-Geometrie erstellen." -#: appTools/ToolIsolation.py:144 appTools/ToolNCC.py:146 +#: appTools/ToolIsolation.py:2998 appTools/ToolNCC.py:3791 msgid "" "Tool Diameter. It's value (in current FlatCAM units)\n" "is the cut width into the material." @@ -14996,7 +16472,7 @@ msgstr "" "Werkzeugdurchmesser. Wert (in aktuellen FlatCAM-Einheiten)\n" "ist die Schnittbreite in das Material." -#: appTools/ToolIsolation.py:148 appTools/ToolNCC.py:150 +#: appTools/ToolIsolation.py:3002 appTools/ToolNCC.py:3795 msgid "" "The Tool Type (TT) can be:\n" "- Circular with 1 ... 4 teeth -> it is informative only. Being circular,\n" @@ -15031,8 +16507,20 @@ msgstr "" "Operationstyp ausgewählt\n" "in der resultierenden Geometrie als Isolation." -#: appTools/ToolIsolation.py:300 appTools/ToolNCC.py:318 -#: appTools/ToolPaint.py:300 appTools/ToolSolderPaste.py:135 +#: appTools/ToolIsolation.py:3068 appTools/ToolNCC.py:3873 +#, fuzzy +#| msgid "Minimal" +msgid "Find Optimal" +msgstr "Minimal" + +#: appTools/ToolIsolation.py:3071 appTools/ToolNCC.py:3876 +msgid "" +"Find a tool diameter that is guaranteed\n" +"to do a complete isolation." +msgstr "" + +#: appTools/ToolIsolation.py:3108 appTools/ToolNCC.py:3913 +#: appTools/ToolPaint.py:2927 appTools/ToolSolderPaste.py:1211 msgid "" "Delete a selection of tools in the Tool Table\n" "by first selecting a row(s) in the Tool Table." @@ -15040,7 +16528,7 @@ msgstr "" "Löschen Sie eine Auswahl von Werkzeugen in der Werkzeugtabelle\n" "indem Sie zuerst eine oder mehrere Zeilen in der Werkzeugtabelle auswählen." -#: appTools/ToolIsolation.py:477 +#: appTools/ToolIsolation.py:3286 msgid "" "Specify the type of object to be excepted from isolation.\n" "It can be of type: Gerber or Geometry.\n" @@ -15052,11 +16540,11 @@ msgstr "" "Was hier ausgewählt wird, bestimmt die Art\n" "von Objekten, die das Kombinationsfeld \"Objekt\" füllen." -#: appTools/ToolIsolation.py:487 +#: appTools/ToolIsolation.py:3296 msgid "Object whose area will be removed from isolation geometry." msgstr "Objekt, dessen Bereich aus der Isolationsgeometrie entfernt wird." -#: appTools/ToolIsolation.py:523 appTools/ToolNCC.py:554 +#: appTools/ToolIsolation.py:3332 appTools/ToolNCC.py:4205 msgid "" "The type of FlatCAM object to be used as non copper clearing reference.\n" "It can be Gerber, Excellon or Geometry." @@ -15065,11 +16553,7 @@ msgstr "" "Referenz verwendet werden soll.\n" "Es kann Gerber, Excellon oder Geometry sein." -#: appTools/ToolIsolation.py:580 -msgid "Generate Isolation Geometry" -msgstr "Isolationsgeometrie erzeugen" - -#: appTools/ToolIsolation.py:588 +#: appTools/ToolIsolation.py:3398 msgid "" "Create a Geometry object with toolpaths to cut \n" "isolation outside, inside or on both sides of the\n" @@ -15091,156 +16575,39 @@ msgstr "" "Verwenden Sie in der Gerber-Funktion ein negatives Werkzeug\n" "Durchmesser oben." -#: appTools/ToolIsolation.py:1291 appTools/ToolIsolation.py:1459 -#: appTools/ToolNCC.py:932 appTools/ToolNCC.py:1449 appTools/ToolPaint.py:857 -#: appTools/ToolSolderPaste.py:576 appTools/ToolSolderPaste.py:901 -#: app_Main.py:4333 -msgid "Please enter a tool diameter with non-zero value, in Float format." -msgstr "" -"Bitte geben Sie einen Werkzeugdurchmesser ungleich Null im Float-Format ein." +#: appTools/ToolMilling.py:1064 +#, fuzzy +#| msgid "Generating Solder Paste dispensing geometry..." +msgid "Generating drills milling geometry..." +msgstr "Lötpasten-Dosiergeometrie erzeugen ..." -#: appTools/ToolIsolation.py:1295 appTools/ToolNCC.py:936 -#: appTools/ToolPaint.py:861 appTools/ToolSolderPaste.py:580 app_Main.py:4337 -msgid "Adding Tool cancelled" -msgstr "Addierwerkzeug abgebrochen" +#: appTools/ToolMilling.py:1169 +#, fuzzy +#| msgid "Generating Solder Paste dispensing geometry..." +msgid "Generating slot milling geometry..." +msgstr "Lötpasten-Dosiergeometrie erzeugen ..." -#: appTools/ToolIsolation.py:1453 appTools/ToolNCC.py:1443 -#: appTools/ToolPaint.py:1203 appTools/ToolSolderPaste.py:896 -msgid "Please enter a tool diameter to add, in Float format." -msgstr "" -"Bitte geben Sie einen hinzuzufügenden Werkzeugdurchmesser im Float-Format " -"ein." +#: appTools/ToolMilling.py:1584 +#, fuzzy +#| msgid "Mill Holes" +msgid "Milling Holes Tool" +msgstr "Löcher bohren" -#: appTools/ToolIsolation.py:1484 appTools/ToolIsolation.py:2842 -#: appTools/ToolNCC.py:1474 appTools/ToolNCC.py:4079 appTools/ToolPaint.py:1227 -#: appTools/ToolPaint.py:3628 appTools/ToolSolderPaste.py:925 -msgid "Cancelled. Tool already in Tool Table." -msgstr "Abgebrochen. Werkzeug bereits in der Werkzeugtabelle." +#: appTools/ToolMilling.py:2166 +msgid "Preprocessor E" +msgstr "Postprozessor E" -#: appTools/ToolIsolation.py:1491 appTools/ToolIsolation.py:2860 -#: appTools/ToolNCC.py:1481 appTools/ToolNCC.py:4096 appTools/ToolPaint.py:1232 -#: appTools/ToolPaint.py:3645 -msgid "New tool added to Tool Table." -msgstr "Neues Werkzeug zur Werkzeugtabelle hinzugefügt." +#: appTools/ToolMilling.py:2178 +msgid "Preprocessor G" +msgstr "Postprozessor G" -#: appTools/ToolIsolation.py:1535 appTools/ToolNCC.py:1525 -#: appTools/ToolPaint.py:1276 -msgid "Tool from Tool Table was edited." -msgstr "Werkzeug aus Werkzeugtabelle wurde bearbeitet." - -#: appTools/ToolIsolation.py:1547 appTools/ToolNCC.py:1537 -#: appTools/ToolPaint.py:1288 appTools/ToolSolderPaste.py:986 -msgid "Cancelled. New diameter value is already in the Tool Table." -msgstr "" -"Abgebrochen. Der neue Durchmesserwert befindet sich bereits in der " -"Werkzeugtabelle." - -#: appTools/ToolIsolation.py:1599 appTools/ToolNCC.py:1589 -#: appTools/ToolPaint.py:1386 -msgid "Delete failed. Select a tool to delete." -msgstr "Löschen fehlgeschlagen. Wählen Sie ein Werkzeug zum Löschen aus." - -#: appTools/ToolIsolation.py:1605 appTools/ToolNCC.py:1595 -#: appTools/ToolPaint.py:1392 -msgid "Tool(s) deleted from Tool Table." -msgstr "Werkzeug(e) aus der Werkzeugtabelle gelöscht." - -#: appTools/ToolIsolation.py:1653 -msgid "Isolating..." -msgstr "Isolieren ..." - -#: appTools/ToolIsolation.py:1673 -msgid "Following geometry was generated" -msgstr "Folgende Geometrie wurde erzeugt" - -#: appTools/ToolIsolation.py:1688 -msgid "Failed to create Follow Geometry with tool diameter" -msgstr "Fehler beim Erstellen der folgenden Geometrie mit Werkzeugdurchmesser" - -#: appTools/ToolIsolation.py:1691 -msgid "Follow Geometry was created with tool diameter" -msgstr "Die folgende Geometrie wurde mit dem Werkzeugdurchmesser erstellt" - -#: appTools/ToolIsolation.py:1732 -msgid "Click on a polygon to isolate it." -msgstr "Klicken Sie auf ein Plozgon um es zu isolieren." - -#: appTools/ToolIsolation.py:1851 appTools/ToolIsolation.py:1871 -#: appTools/ToolIsolation.py:2009 appTools/ToolIsolation.py:2184 -msgid "Subtracting Geo" -msgstr "Geo subtrahieren" - -#: appTools/ToolIsolation.py:1855 appTools/ToolIsolation.py:2013 -#: appTools/ToolIsolation.py:2188 -msgid "Intersecting Geo" -msgstr "Sich überschneidende Geometrie" - -#: appTools/ToolIsolation.py:1904 appTools/ToolIsolation.py:2074 -#: appTools/ToolIsolation.py:2245 -msgid "Empty Geometry in" -msgstr "Leere Geometrie in" - -#: appTools/ToolIsolation.py:2083 +#: appTools/ToolMilling.py:2180 msgid "" -"Partial failure. The geometry was processed with all tools.\n" -"But there are still not-isolated geometry elements. Try to include a tool " -"with smaller diameter." +"The preprocessor JSON file that dictates\n" +"Gcode output for Geometry (Milling) Objects." msgstr "" -"Teilversagen. Die Geometrie wurde mit allen Werkzeugen verarbeitet.\n" -"Es gibt jedoch immer noch nicht isolierte Geometrieelemente. Versuchen Sie, " -"ein Werkzeug mit kleinerem Durchmesser einzuschließen." - -#: appTools/ToolIsolation.py:2086 -msgid "" -"The following are coordinates for the copper features that could not be " -"isolated:" -msgstr "" -"Die folgenden Koordinaten für die Kupfermerkmale konnten nicht isoliert " -"werden:" - -#: appTools/ToolIsolation.py:2409 appTools/ToolIsolation.py:2522 -#: appTools/ToolPaint.py:1535 -msgid "Added polygon" -msgstr "Polygon hinzugefügt" - -#: appTools/ToolIsolation.py:2410 appTools/ToolIsolation.py:2524 -msgid "Click to add next polygon or right click to start isolation." -msgstr "" -"Klicken Sie, um das nächste Polygon hinzuzufügen, oder klicken Sie mit der " -"rechten Maustaste, um den Isolationsvorgang zu beginnen." - -#: appTools/ToolIsolation.py:2422 appTools/ToolPaint.py:1549 -msgid "Removed polygon" -msgstr "Polygon entfernt" - -# nearly the same as before? What good is this? -#: appTools/ToolIsolation.py:2423 -msgid "Click to add/remove next polygon or right click to start isolation." -msgstr "" -"Klicken Sie, um das nächste Polygon hinzuzufügen oder zu entfernen, oder " -"klicken Sie mit der rechten Maustaste, um den Isolationsvorgang zu beginnen." - -#: appTools/ToolIsolation.py:2428 appTools/ToolPaint.py:1555 -msgid "No polygon detected under click position." -msgstr "Kein Polygon an der Stelle an die geklickt wurde." - -#: appTools/ToolIsolation.py:2458 appTools/ToolPaint.py:1584 -msgid "List of single polygons is empty. Aborting." -msgstr "Liste der Einzelpolygone ist leer. Vorgang wird abgebrochen." - -#: appTools/ToolIsolation.py:2527 -msgid "No polygon in selection." -msgstr "Kein Polygon in der Auswahl." - -#: appTools/ToolIsolation.py:2555 appTools/ToolNCC.py:1725 -#: appTools/ToolPaint.py:1619 -msgid "Click the end point of the paint area." -msgstr "Klicken Sie auf den Endpunkt des Malbereichs." - -#: appTools/ToolIsolation.py:2799 appTools/ToolNCC.py:4036 -#: appTools/ToolPaint.py:3585 app_Main.py:5442 app_Main.py:5452 -msgid "Tool from DB added in Tool Table." -msgstr "Werkzeug aus Werkzeugdatenbank zur Werkzeugtabelle hinzugefügt." +"Die diktierende Präprozessor-JSON-Datei\n" +"Gcode-Ausgabe für Geometrieobjekte (Fräsen)." #: appTools/ToolMove.py:102 msgid "MOVE: Click on the Start point ..." @@ -15266,15 +16633,168 @@ msgstr "Keine Objekte ausgewählt." msgid "Error when mouse left click." msgstr "Fehler beim Klicken mit der linken Maustaste." -#: appTools/ToolNCC.py:42 +#: appTools/ToolNCC.py:1674 appTools/ToolNCC.py:2598 +msgid "NCC Tool. Preparing non-copper polygons." +msgstr "NCC-Tool. Vorbereitung von kupferfreien Polygonen." + +#: appTools/ToolNCC.py:1734 appTools/ToolNCC.py:2726 +msgid "NCC Tool. Calculate 'empty' area." +msgstr "NCC-Tool. Berechnen Sie die \"leere\" Fläche." + +#: appTools/ToolNCC.py:1745 appTools/ToolNCC.py:1774 appTools/ToolNCC.py:1880 +#: appTools/ToolNCC.py:1893 appTools/ToolNCC.py:2739 appTools/ToolNCC.py:2844 +#: appTools/ToolNCC.py:2859 appTools/ToolNCC.py:3125 appTools/ToolNCC.py:3226 +#: appTools/ToolNCC.py:3241 +msgid "Buffering finished" +msgstr "Pufferung beendet" + +#: appTools/ToolNCC.py:1749 appTools/ToolNCC.py:1778 appTools/ToolNCC.py:1884 +#: appTools/ToolNCC.py:1896 appTools/ToolNCC.py:2747 appTools/ToolNCC.py:2866 +#: appTools/ToolNCC.py:3132 appTools/ToolNCC.py:3248 +msgid "Could not get the extent of the area to be non copper cleared." +msgstr "" +"Die Ausdehnung des nicht kupferhaltigen Bereichs konnte nicht gelöscht " +"werden." + +#: appTools/ToolNCC.py:1757 appTools/ToolNCC.py:1907 appTools/ToolNCC.py:2877 +msgid "NCC Tool. Finished calculation of 'empty' area." +msgstr "NCC-Tool. Berechnung der 'leeren' Fläche beendet." + +#: appTools/ToolNCC.py:1810 appTools/ToolNCC.py:2774 appTools/ToolNCC.py:2851 +#: appTools/ToolNCC.py:3152 appTools/ToolNCC.py:3233 +msgid "" +"Isolation geometry is broken. Margin is less than isolation tool diameter." +msgstr "" +"Die Isolationsgeometrie ist gebrochen. Der Rand ist kleiner als der " +"Durchmesser des Isolationswerkzeugs." + +#: appTools/ToolNCC.py:1900 appTools/ToolNCC.py:2870 appTools/ToolNCC.py:3251 +msgid "The selected object is not suitable for copper clearing." +msgstr "Das ausgewählte Objekt ist nicht zum Löschen von Kupfer geeignet." + +#: appTools/ToolNCC.py:1950 +msgid "Clearing the polygon with the method: lines." +msgstr "Löschen des Polygons mit der Methode: Linien." + +#: appTools/ToolNCC.py:1960 +msgid "Failed. Clearing the polygon with the method: seed." +msgstr "Gescheitert. Löschen des Polygons mit der Methode: seed." + +#: appTools/ToolNCC.py:1969 +msgid "Failed. Clearing the polygon with the method: standard." +msgstr "Gescheitert. Löschen des Polygons mit der Methode: Standard." + +#: appTools/ToolNCC.py:1985 +#, fuzzy +#| msgid "Geometry could not be cleared completely" +msgid "Polygon could not be cleared. Location:" +msgstr "Die Geometrie konnte nicht vollständig gelöscht werden" + +#: appTools/ToolNCC.py:2017 appTools/ToolNCC.py:2019 appTools/ToolNCC.py:2547 +#: appTools/ToolNCC.py:2549 +msgid "Non-Copper clearing ..." +msgstr "Nicht-Kupfer-Clearing ..." + +#: appTools/ToolNCC.py:2038 +msgid "" +"There is no copper clearing tool in the selection and at least one is needed." +msgstr "" + +#: appTools/ToolNCC.py:2053 appTools/ToolNCC.py:2694 +msgid "" +"NCC Tool. Finished non-copper polygons. Normal copper clearing task started." +msgstr "" +"NCC-Tool. Fertige kupferfreie Polygone. Normale Kupferentfernungsaufgabe " +"gestartet." + +#: appTools/ToolNCC.py:2081 appTools/ToolNCC.py:2315 +msgid "NCC Tool failed creating bounding box." +msgstr "Das NCC-Tool konnte keinen Begrenzungsrahmen erstellen." + +#: appTools/ToolNCC.py:2101 appTools/ToolNCC.py:2351 appTools/ToolNCC.py:2890 +#: appTools/ToolNCC.py:3276 +msgid "NCC Tool clearing with tool diameter" +msgstr "Das NCC-Werkzeug wird mit dem Werkzeugdurchmesser gelöscht" + +#: appTools/ToolNCC.py:2101 appTools/ToolNCC.py:2351 appTools/ToolNCC.py:2890 +#: appTools/ToolNCC.py:3276 +msgid "started." +msgstr "gestartet." + +#: appTools/ToolNCC.py:2229 +#, fuzzy +#| msgid "Could not get the extent of the area to be non copper cleared." +msgid "Could not use the tool for copper clear." +msgstr "" +"Die Ausdehnung des nicht kupferhaltigen Bereichs konnte nicht gelöscht " +"werden." + +#: appTools/ToolNCC.py:2251 appTools/ToolNCC.py:3051 +msgid "" +"There is no NCC Geometry in the file.\n" +"Usually it means that the tool diameter is too big for the painted " +"geometry.\n" +"Change the painting parameters and try again." +msgstr "" +"Die Datei enthält keine NCC-Geometrie.\n" +"In der Regel bedeutet dies, dass der Werkzeugdurchmesser für die lackierte " +"Geometrie zu groß ist.\n" +"Ändern Sie die Malparameter und versuchen Sie es erneut." + +#: appTools/ToolNCC.py:2261 appTools/ToolNCC.py:3060 +msgid "NCC Tool clear all done." +msgstr "NCC Tool löschen alles erledigt." + +#: appTools/ToolNCC.py:2264 appTools/ToolNCC.py:3063 +msgid "NCC Tool clear all done but the copper features isolation is broken for" +msgstr "" +"Das NCC-Tool löscht alles, aber die Isolierung der Kupfermerkmale ist " +"unterbrochen" + +#: appTools/ToolNCC.py:2266 appTools/ToolNCC.py:2462 appTools/ToolNCC.py:3065 +#: appTools/ToolNCC.py:3448 +msgid "tools" +msgstr "Werkzeuge" + +#: appTools/ToolNCC.py:2293 +#, fuzzy +#| msgid "Paint Tool. Rest machining painting area task started." +msgid "NCC Tool. Rest machining copper clearing task started." +msgstr "Malwerkzeug. Restbearbeitung Lackierbereich Aufgabe gestartet." + +#: appTools/ToolNCC.py:2458 appTools/ToolNCC.py:3444 +msgid "NCC Tool Rest Machining clear all done." +msgstr "Die Bearbeitung der NCC-Werkzeugablagen ist abgeschlossen." + +#: appTools/ToolNCC.py:2461 appTools/ToolNCC.py:3447 +msgid "" +"NCC Tool Rest Machining clear all done but the copper features isolation is " +"broken for" +msgstr "" +"Die Bearbeitung der NCC-Werkzeugablagen ist abgeschlossen, die Isolierung " +"der Kupferelemente ist jedoch unterbrochen" + +#: appTools/ToolNCC.py:2559 +msgid "NCC Tool started. Reading parameters." +msgstr "NCC Tool gestartet. Parameter lesen." + +#: appTools/ToolNCC.py:3546 +msgid "" +"Try to use the Buffering Type = Full in Preferences -> Gerber General. " +"Reload the Gerber file after this change." +msgstr "" +"Versuchen Sie, den Puffertyp = Voll in Einstellungen -> Allgemein zu " +"verwenden. Laden Sie die Gerber-Datei nach dieser Änderung neu." + +#: appTools/ToolNCC.py:3702 msgid "Non-Copper Clearing" msgstr "Nicht-Kupfer-Clearing" -#: appTools/ToolNCC.py:86 appTools/ToolPaint.py:79 +#: appTools/ToolNCC.py:3731 appTools/ToolPaint.py:2764 msgid "Obj Type" msgstr "Obj-Typ" -#: appTools/ToolNCC.py:88 +#: appTools/ToolNCC.py:3733 msgid "" "Specify the type of object to be cleared of excess copper.\n" "It can be of type: Gerber or Geometry.\n" @@ -15287,11 +16807,11 @@ msgstr "" "Was hier ausgewählt wird, bestimmt die Art\n" "von Objekten, die das Kombinationsfeld \"Objekt\" füllen." -#: appTools/ToolNCC.py:110 +#: appTools/ToolNCC.py:3755 msgid "Object to be cleared of excess copper." msgstr "Objekt, das von überschüssigem Kupfer befreit werden soll." -#: appTools/ToolNCC.py:138 +#: appTools/ToolNCC.py:3783 msgid "" "This is the Tool Number.\n" "Non copper clearing will start with the tool with the biggest \n" @@ -15308,185 +16828,76 @@ msgstr "" "in der resultierenden Geometrie. Dies liegt daran, dass mit einigen Tools\n" "Diese Funktion kann keine Malgeometrie erstellen." -#: appTools/ToolNCC.py:597 appTools/ToolPaint.py:536 -msgid "Generate Geometry" -msgstr "Geometrie erzeugen" +#: appTools/ToolOptimal.py:142 +msgid "Only Gerber objects can be evaluated." +msgstr "Es können nur Gerber-Objekte ausgewertet werden." -#: appTools/ToolNCC.py:1638 -msgid "Wrong Tool Dia value format entered, use a number." -msgstr "Falsches Werkzeug Dia-Wertformat eingegeben, verwenden Sie eine Zahl." - -#: appTools/ToolNCC.py:1649 appTools/ToolPaint.py:1443 -msgid "No selected tools in Tool Table." -msgstr "Keine ausgewählten Werkzeuge in der Werkzeugtabelle." - -#: appTools/ToolNCC.py:2005 appTools/ToolNCC.py:3024 -msgid "NCC Tool. Preparing non-copper polygons." -msgstr "NCC-Tool. Vorbereitung von kupferfreien Polygonen." - -#: appTools/ToolNCC.py:2064 appTools/ToolNCC.py:3152 -msgid "NCC Tool. Calculate 'empty' area." -msgstr "NCC-Tool. Berechnen Sie die \"leere\" Fläche." - -#: appTools/ToolNCC.py:2083 appTools/ToolNCC.py:2192 appTools/ToolNCC.py:2207 -#: appTools/ToolNCC.py:3165 appTools/ToolNCC.py:3270 appTools/ToolNCC.py:3285 -#: appTools/ToolNCC.py:3551 appTools/ToolNCC.py:3652 appTools/ToolNCC.py:3667 -msgid "Buffering finished" -msgstr "Pufferung beendet" - -#: appTools/ToolNCC.py:2091 appTools/ToolNCC.py:2214 appTools/ToolNCC.py:3173 -#: appTools/ToolNCC.py:3292 appTools/ToolNCC.py:3558 appTools/ToolNCC.py:3674 -msgid "Could not get the extent of the area to be non copper cleared." -msgstr "" -"Die Ausdehnung des nicht kupferhaltigen Bereichs konnte nicht gelöscht " -"werden." - -#: appTools/ToolNCC.py:2121 appTools/ToolNCC.py:2200 appTools/ToolNCC.py:3200 -#: appTools/ToolNCC.py:3277 appTools/ToolNCC.py:3578 appTools/ToolNCC.py:3659 +#: appTools/ToolOptimal.py:148 msgid "" -"Isolation geometry is broken. Margin is less than isolation tool diameter." -msgstr "" -"Die Isolationsgeometrie ist gebrochen. Der Rand ist kleiner als der " -"Durchmesser des Isolationswerkzeugs." +"Optimal Tool. Started to search for the minimum distance between copper " +"features." +msgstr "Optimierer. Sucht Minimalabstand zwischen Kupferbereichen." -#: appTools/ToolNCC.py:2217 appTools/ToolNCC.py:3296 appTools/ToolNCC.py:3677 -msgid "The selected object is not suitable for copper clearing." -msgstr "Das ausgewählte Objekt ist nicht zum Löschen von Kupfer geeignet." +#: appTools/ToolOptimal.py:158 +msgid "Optimal Tool. Parsing geometry for aperture" +msgstr "Optimales Werkzeug. Analysegeometrie für Blende" -#: appTools/ToolNCC.py:2224 appTools/ToolNCC.py:3303 -msgid "NCC Tool. Finished calculation of 'empty' area." -msgstr "NCC-Tool. Berechnung der 'leeren' Fläche beendet." +#: appTools/ToolOptimal.py:169 +msgid "Optimal Tool. Creating a buffer for the object geometry." +msgstr "Optimales Werkzeug. Erstellen eines Puffers für die Objektgeometrie." -#: appTools/ToolNCC.py:2267 -msgid "Clearing the polygon with the method: lines." -msgstr "Löschen des Polygons mit der Methode: Linien." - -#: appTools/ToolNCC.py:2277 -msgid "Failed. Clearing the polygon with the method: seed." -msgstr "Gescheitert. Löschen des Polygons mit der Methode: seed." - -#: appTools/ToolNCC.py:2286 -msgid "Failed. Clearing the polygon with the method: standard." -msgstr "Gescheitert. Löschen des Polygons mit der Methode: Standard." - -#: appTools/ToolNCC.py:2300 -msgid "Geometry could not be cleared completely" -msgstr "Die Geometrie konnte nicht vollständig gelöscht werden" - -#: appTools/ToolNCC.py:2325 appTools/ToolNCC.py:2327 appTools/ToolNCC.py:2973 -#: appTools/ToolNCC.py:2975 -msgid "Non-Copper clearing ..." -msgstr "Nicht-Kupfer-Clearing ..." - -#: appTools/ToolNCC.py:2377 appTools/ToolNCC.py:3120 +#: appTools/ToolOptimal.py:184 msgid "" -"NCC Tool. Finished non-copper polygons. Normal copper clearing task started." +"Optimal Tool. Finding the distances between each two elements. Iterations" msgstr "" -"NCC-Tool. Fertige kupferfreie Polygone. Normale Kupferentfernungsaufgabe " -"gestartet." +"Optimales Werkzeug. Finden der Abstände zwischen jeweils zwei Elementen. " +"Iterationen" -#: appTools/ToolNCC.py:2415 appTools/ToolNCC.py:2663 -msgid "NCC Tool failed creating bounding box." -msgstr "Das NCC-Tool konnte keinen Begrenzungsrahmen erstellen." +#: appTools/ToolOptimal.py:218 +msgid "Optimal Tool. Finding the minimum distance." +msgstr "Optimales Werkzeug. Den Mindestabstand finden." -#: appTools/ToolNCC.py:2430 appTools/ToolNCC.py:2680 appTools/ToolNCC.py:3316 -#: appTools/ToolNCC.py:3702 -msgid "NCC Tool clearing with tool diameter" -msgstr "Das NCC-Werkzeug wird mit dem Werkzeugdurchmesser gelöscht" +#: appTools/ToolOptimal.py:234 +msgid "Optimal Tool. Finished successfully." +msgstr "Optimales Werkzeug. Erfolgreich beendet." -#: appTools/ToolNCC.py:2430 appTools/ToolNCC.py:2680 appTools/ToolNCC.py:3316 -#: appTools/ToolNCC.py:3702 -msgid "started." -msgstr "gestartet." - -#: appTools/ToolNCC.py:2588 appTools/ToolNCC.py:3477 -msgid "" -"There is no NCC Geometry in the file.\n" -"Usually it means that the tool diameter is too big for the painted " -"geometry.\n" -"Change the painting parameters and try again." -msgstr "" -"Die Datei enthält keine NCC-Geometrie.\n" -"In der Regel bedeutet dies, dass der Werkzeugdurchmesser für die lackierte " -"Geometrie zu groß ist.\n" -"Ändern Sie die Malparameter und versuchen Sie es erneut." - -#: appTools/ToolNCC.py:2597 appTools/ToolNCC.py:3486 -msgid "NCC Tool clear all done." -msgstr "NCC Tool löschen alles erledigt." - -#: appTools/ToolNCC.py:2600 appTools/ToolNCC.py:3489 -msgid "NCC Tool clear all done but the copper features isolation is broken for" -msgstr "" -"Das NCC-Tool löscht alles, aber die Isolierung der Kupfermerkmale ist " -"unterbrochen" - -#: appTools/ToolNCC.py:2602 appTools/ToolNCC.py:2888 appTools/ToolNCC.py:3491 -#: appTools/ToolNCC.py:3874 -msgid "tools" -msgstr "Werkzeuge" - -#: appTools/ToolNCC.py:2884 appTools/ToolNCC.py:3870 -msgid "NCC Tool Rest Machining clear all done." -msgstr "Die Bearbeitung der NCC-Werkzeugablagen ist abgeschlossen." - -#: appTools/ToolNCC.py:2887 appTools/ToolNCC.py:3873 -msgid "" -"NCC Tool Rest Machining clear all done but the copper features isolation is " -"broken for" -msgstr "" -"Die Bearbeitung der NCC-Werkzeugablagen ist abgeschlossen, die Isolierung " -"der Kupferelemente ist jedoch unterbrochen" - -#: appTools/ToolNCC.py:2985 -msgid "NCC Tool started. Reading parameters." -msgstr "NCC Tool gestartet. Parameter lesen." - -#: appTools/ToolNCC.py:3972 -msgid "" -"Try to use the Buffering Type = Full in Preferences -> Gerber General. " -"Reload the Gerber file after this change." -msgstr "" -"Versuchen Sie, den Puffertyp = Voll in Einstellungen -> Allgemein zu " -"verwenden. Laden Sie die Gerber-Datei nach dieser Änderung neu." - -#: appTools/ToolOptimal.py:85 +#: appTools/ToolOptimal.py:435 msgid "Number of decimals kept for found distances." msgstr "Anzahl der Dezimalstellen für gefundene Entfernungen." -#: appTools/ToolOptimal.py:93 +#: appTools/ToolOptimal.py:443 msgid "Minimum distance" msgstr "Mindestabstand" -#: appTools/ToolOptimal.py:94 +#: appTools/ToolOptimal.py:444 msgid "Display minimum distance between copper features." msgstr "Zeigt den Mindestabstand zwischen Kupferelementen an." -#: appTools/ToolOptimal.py:98 +#: appTools/ToolOptimal.py:448 msgid "Determined" msgstr "Entschlossen" -#: appTools/ToolOptimal.py:112 +#: appTools/ToolOptimal.py:462 msgid "Occurring" msgstr "Vorkommen" -#: appTools/ToolOptimal.py:113 +#: appTools/ToolOptimal.py:463 msgid "How many times this minimum is found." msgstr "Wie oft wird dieses Minimum gefunden." -#: appTools/ToolOptimal.py:119 +#: appTools/ToolOptimal.py:469 msgid "Minimum points coordinates" msgstr "Minimale Punktkoordinaten" -#: appTools/ToolOptimal.py:120 appTools/ToolOptimal.py:126 +#: appTools/ToolOptimal.py:470 appTools/ToolOptimal.py:476 msgid "Coordinates for points where minimum distance was found." msgstr "Koordinaten für Punkte, an denen der Mindestabstand gefunden wurde." -#: appTools/ToolOptimal.py:139 appTools/ToolOptimal.py:215 +#: appTools/ToolOptimal.py:489 appTools/ToolOptimal.py:565 msgid "Jump to selected position" msgstr "Zur ausgewählten Position springen" -#: appTools/ToolOptimal.py:141 appTools/ToolOptimal.py:217 +#: appTools/ToolOptimal.py:491 appTools/ToolOptimal.py:567 msgid "" "Select a position in the Locations text box and then\n" "click this button." @@ -15494,11 +16905,11 @@ msgstr "" "Wählen Sie eine Position im Textfeld Standorte und dann\n" "Klicken Sie auf diese Schaltfläche." -#: appTools/ToolOptimal.py:149 +#: appTools/ToolOptimal.py:499 msgid "Other distances" msgstr "Andere Entfernungen" -#: appTools/ToolOptimal.py:150 +#: appTools/ToolOptimal.py:500 msgid "" "Will display other distances in the Gerber file ordered from\n" "the minimum to the maximum, not including the absolute minimum." @@ -15506,13 +16917,13 @@ msgstr "" "Zeigt andere Entfernungen in der von bestellten Gerber-Datei an\n" "das Minimum bis zum Maximum, ohne das absolute Minimum." -#: appTools/ToolOptimal.py:155 +#: appTools/ToolOptimal.py:505 msgid "Other distances points coordinates" msgstr "Andere Entfernungen Punkte Koordinaten" -#: appTools/ToolOptimal.py:156 appTools/ToolOptimal.py:170 -#: appTools/ToolOptimal.py:177 appTools/ToolOptimal.py:194 -#: appTools/ToolOptimal.py:201 +#: appTools/ToolOptimal.py:506 appTools/ToolOptimal.py:520 +#: appTools/ToolOptimal.py:527 appTools/ToolOptimal.py:544 +#: appTools/ToolOptimal.py:551 msgid "" "Other distances and the coordinates for points\n" "where the distance was found." @@ -15520,19 +16931,19 @@ msgstr "" "Andere Entfernungen und die Koordinaten für Punkte\n" "wo die Entfernung gefunden wurde." -#: appTools/ToolOptimal.py:169 +#: appTools/ToolOptimal.py:519 msgid "Gerber distances" msgstr "Gerber Entfernungen" -#: appTools/ToolOptimal.py:193 +#: appTools/ToolOptimal.py:543 msgid "Points coordinates" msgstr "Punktkoordinaten" -#: appTools/ToolOptimal.py:225 +#: appTools/ToolOptimal.py:575 msgid "Find Minimum" msgstr "Minimum finden" -#: appTools/ToolOptimal.py:227 +#: appTools/ToolOptimal.py:577 msgid "" "Calculate the minimum distance between copper features,\n" "this will allow the determination of the right tool to\n" @@ -15542,47 +16953,6 @@ msgstr "" "Dies ermöglicht die Bestimmung des richtigen Werkzeugs\n" "Verwendung zur Isolierung oder zum Löschen von Kupfer." -#: appTools/ToolOptimal.py:352 -msgid "Only Gerber objects can be evaluated." -msgstr "Es können nur Gerber-Objekte ausgewertet werden." - -#: appTools/ToolOptimal.py:358 -msgid "" -"Optimal Tool. Started to search for the minimum distance between copper " -"features." -msgstr "Optimierer. Sucht Minimalabstand zwischen Kupferbereichen." - -#: appTools/ToolOptimal.py:368 -msgid "Optimal Tool. Parsing geometry for aperture" -msgstr "Optimales Werkzeug. Analysegeometrie für Blende" - -#: appTools/ToolOptimal.py:379 -msgid "Optimal Tool. Creating a buffer for the object geometry." -msgstr "Optimales Werkzeug. Erstellen eines Puffers für die Objektgeometrie." - -#: appTools/ToolOptimal.py:389 -msgid "" -"The Gerber object has one Polygon as geometry.\n" -"There are no distances between geometry elements to be found." -msgstr "" -"Das Gerber-Objekt hat ein Polygon als Geometrie.\n" -"Es sind keine Abstände zwischen Geometrieelementen zu finden." - -#: appTools/ToolOptimal.py:394 -msgid "" -"Optimal Tool. Finding the distances between each two elements. Iterations" -msgstr "" -"Optimales Werkzeug. Finden der Abstände zwischen jeweils zwei Elementen. " -"Iterationen" - -#: appTools/ToolOptimal.py:429 -msgid "Optimal Tool. Finding the minimum distance." -msgstr "Optimales Werkzeug. Den Mindestabstand finden." - -#: appTools/ToolOptimal.py:445 -msgid "Optimal Tool. Finished successfully." -msgstr "Optimales Werkzeug. Erfolgreich beendet." - #: appTools/ToolPDF.py:91 appTools/ToolPDF.py:95 msgid "Open PDF" msgstr "PDF öffnen" @@ -15595,11 +16965,11 @@ msgstr "PDF öffnen abgebrochen" msgid "Parsing PDF file ..." msgstr "PDF-Datei wird analysiert ..." -#: appTools/ToolPDF.py:138 app_Main.py:8717 +#: appTools/ToolPDF.py:138 app_Main.py:9114 msgid "Failed to open" msgstr "Gescheitert zu öffnen" -#: appTools/ToolPDF.py:203 appTools/ToolPcbWizard.py:445 app_Main.py:8666 +#: appTools/ToolPDF.py:203 appTools/ToolPcbWizard.py:331 app_Main.py:9063 msgid "No geometry found in file" msgstr "Keine Geometrie in der Datei gefunden" @@ -15616,7 +16986,135 @@ msgstr "Öffnen der PDF-Datei fehlgeschlagen." msgid "Rendered" msgstr "Gerendert" -#: appTools/ToolPaint.py:81 +#: appTools/ToolPaint.py:998 +#, python-format +msgid "Could not retrieve object: %s" +msgstr "Objekt konnte nicht abgerufen werden: %s" + +#: appTools/ToolPaint.py:1008 +msgid "Can't do Paint on MultiGeo geometries" +msgstr "Auf MultiGeo-Geometrien kann nicht gemalt werden" + +#: appTools/ToolPaint.py:1045 +msgid "Click on a polygon to paint it." +msgstr "Klicken Sie auf ein Polygon um es auszufüllen." + +#: appTools/ToolPaint.py:1061 +msgid "Click the start point of the paint area." +msgstr "Klicken Sie auf den Startpunkt des Malbereichs." + +#: appTools/ToolPaint.py:1127 +msgid "Click to add next polygon or right click to start painting." +msgstr "" +"Klicken Sie, um die nächste Zone hinzuzufügen, oder klicken Sie mit der " +"rechten Maustaste um mit dem Ausfüllen zu beginnen." + +#: appTools/ToolPaint.py:1140 +msgid "Click to add/remove next polygon or right click to start painting." +msgstr "" +"Klicken Sie, um die nächste Zone hinzuzufügen oder zu löschen, oder klicken " +"Sie mit der rechten Maustaste, um den Vorgang abzuschließen." + +#: appTools/ToolPaint.py:1650 +msgid "Painting polygon with method: lines." +msgstr "Polygon mit Methode malen: Linien." + +#: appTools/ToolPaint.py:1662 +msgid "Failed. Painting polygon with method: seed." +msgstr "Gescheitert. Polygon mit Methode malen: Same." + +#: appTools/ToolPaint.py:1673 +msgid "Failed. Painting polygon with method: standard." +msgstr "Gescheitert. Polygon mit Methode malen: Standard." + +#: appTools/ToolPaint.py:1689 +msgid "Geometry could not be painted completely" +msgstr "Geometrie konnte nicht vollständig gemalt werden" + +#: appTools/ToolPaint.py:1763 appTools/ToolPaint.py:1950 +msgid "Painting with tool diameter = " +msgstr "Lackieren mit Werkzeugdurchmesser = " + +#: appTools/ToolPaint.py:1766 appTools/ToolPaint.py:1953 +msgid "started" +msgstr "gestartet" + +#: appTools/ToolPaint.py:1792 appTools/ToolPaint.py:1940 +msgid "Margin parameter too big. Tool is not used" +msgstr "Randparameter zu groß. Werkzeug wird nicht verwendet" + +#: appTools/ToolPaint.py:1852 appTools/ToolPaint.py:2061 +msgid "" +"Could not do Paint. Try a different combination of parameters. Or a " +"different strategy of paint" +msgstr "" +"Konnte nicht malen. Probieren Sie eine andere Kombination von Parametern " +"aus. Oder eine andere Strategie der Farbe" + +#: appTools/ToolPaint.py:1907 appTools/ToolPaint.py:2132 +msgid "" +"There is no Painting Geometry in the file.\n" +"Usually it means that the tool diameter is too big for the painted " +"geometry.\n" +"Change the painting parameters and try again." +msgstr "" +"Die Datei enthält keine Malgeometrie.\n" +"Normalerweise bedeutet dies, dass der Werkzeugdurchmesser für die lackierte " +"Geometrie zu groß ist.\n" +"Ändern Sie die Malparameter und versuchen Sie es erneut." + +#: appTools/ToolPaint.py:2175 +#, fuzzy +#| msgid "Paint All failed." +msgid "Paint failed." +msgstr "Malen Alle Polygone sind fehlgeschlagen." + +#: appTools/ToolPaint.py:2181 +#, fuzzy +#| msgid "Paint done." +msgid "Paint Done." +msgstr "Malen fertig." + +#: appTools/ToolPaint.py:2186 +#, fuzzy +#| msgid "Painting polygon..." +msgid "Painting..." +msgstr "Polygon malen ..." + +#: appTools/ToolPaint.py:2220 appTools/ToolPaint.py:2225 +#: appTools/ToolPaint.py:2233 appTools/ToolPaint.py:2320 +#: appTools/ToolPaint.py:2323 appTools/ToolPaint.py:2331 +#: appTools/ToolPaint.py:2401 appTools/ToolPaint.py:2406 +#: appTools/ToolPaint.py:2412 +msgid "Paint Tool." +msgstr "Malwerkzeug." + +#: appTools/ToolPaint.py:2221 appTools/ToolPaint.py:2225 +#: appTools/ToolPaint.py:2233 +msgid "Normal painting polygon task started." +msgstr "Normale Zeichenpolygonaufgabe gestartet." + +#: appTools/ToolPaint.py:2222 appTools/ToolPaint.py:2320 +#: appTools/ToolPaint.py:2403 +msgid "Buffering geometry..." +msgstr "Geometrie puffern..." + +#: appTools/ToolPaint.py:2245 appTools/ToolPaint.py:2338 +#: appTools/ToolPaint.py:2420 +msgid "No polygon found." +msgstr "Kein Polygon gefunden." + +#: appTools/ToolPaint.py:2320 appTools/ToolPaint.py:2323 +#: appTools/ToolPaint.py:2331 +msgid "Paint all polygons task started." +msgstr "Malen Sie alle Polygone Aufgabe gestartet." + +#: appTools/ToolPaint.py:2402 appTools/ToolPaint.py:2406 +#: appTools/ToolPaint.py:2412 +msgid "Painting area task started." +msgstr "Malbereichsaufgabe gestartet." + +#: appTools/ToolPaint.py:2766 msgid "" "Specify the type of object to be painted.\n" "It can be of type: Gerber or Geometry.\n" @@ -15628,11 +17126,11 @@ msgstr "" "Was hier ausgewählt wird, bestimmt die Art\n" "von Objekten, die das Kombinationsfeld \"Objekt\" füllen." -#: appTools/ToolPaint.py:103 +#: appTools/ToolPaint.py:2788 msgid "Object to be painted." msgstr "Gegenstand gemalt werden." -#: appTools/ToolPaint.py:116 +#: appTools/ToolPaint.py:2801 msgid "" "Tools pool from which the algorithm\n" "will pick the ones used for painting." @@ -15640,7 +17138,7 @@ msgstr "" "Toolspool aus dem der Algorithmus\n" "wählt die zum Malen verwendeten aus." -#: appTools/ToolPaint.py:133 +#: appTools/ToolPaint.py:2818 msgid "" "This is the Tool Number.\n" "Painting will start with the tool with the biggest diameter,\n" @@ -15656,7 +17154,7 @@ msgstr "" "in der resultierenden Geometrie. Dies liegt daran, dass mit einigen Tools\n" "Diese Funktion kann keine Malgeometrie erstellen." -#: appTools/ToolPaint.py:145 +#: appTools/ToolPaint.py:2830 msgid "" "The Tool Type (TT) can be:\n" "- Circular -> it is informative only. Being circular,\n" @@ -15691,7 +17189,7 @@ msgstr "" "Operationstyp ausgewählt\n" "in der resultierenden Geometrie als Isolation." -#: appTools/ToolPaint.py:497 +#: appTools/ToolPaint.py:3137 msgid "" "The type of FlatCAM object to be used as paint reference.\n" "It can be Gerber, Excellon or Geometry." @@ -15699,194 +17197,68 @@ msgstr "" "Der Typ des FlatCAM-Objekts, das als Malreferenz verwendet werden soll.\n" "Es kann Gerber, Excellon oder Geometry sein." -#: appTools/ToolPaint.py:538 +#: appTools/ToolPaint.py:3179 +#, fuzzy +#| msgid "" +#| "Create a Geometry object with\n" +#| "toolpaths to cut around polygons." +msgid "Create a Geometry Object which paints the polygons." +msgstr "" +"Erstellen Sie ein Geometrieobjekt mit\n" +"Werkzeugwege zum Schneiden um Polygonen." + +#: appTools/ToolPanelize.py:89 +msgid "Panel. Tool" +msgstr "Platte Werkzeug" + +#: appTools/ToolPanelize.py:236 +msgid "Columns or Rows are zero value. Change them to a positive integer." +msgstr "" +"Spalten oder Zeilen haben den Wert Null. Ändern Sie sie in eine positive " +"Ganzzahl." + +#: appTools/ToolPanelize.py:275 +msgid "Generating panel ... " +msgstr "Panel wird erstellt ... " + +#: appTools/ToolPanelize.py:362 appTools/ToolPanelize.py:584 +#, fuzzy +#| msgid "Generating panel ... Adding the Gerber code." +msgid "Generating panel ... Adding the source code." +msgstr "Panel wird generiert ... Hinzufügen des Gerber-Codes." + +#: appTools/ToolPanelize.py:550 +msgid "Optimizing the overlapping paths." +msgstr "" + +#: appTools/ToolPanelize.py:582 +#, fuzzy +#| msgid "Optimization Time" +msgid "Optimization complete." +msgstr "Optimierungszeit" + +#: appTools/ToolPanelize.py:596 +msgid "Generating panel... Spawning copies" +msgstr "Panel wird erstellt ... Kopien werden erstellt" + +#: appTools/ToolPanelize.py:605 +msgid "Panel done..." +msgstr "Panel fertig ..." + +#: appTools/ToolPanelize.py:608 +#, python-brace-format msgid "" -"- 'Area Selection' - left mouse click to start selection of the area to be " -"painted.\n" -"Keeping a modifier key pressed (CTRL or SHIFT) will allow to add multiple " -"areas.\n" -"- 'All Polygons' - the Paint will start after click.\n" -"- 'Reference Object' - will do non copper clearing within the area\n" -"specified by another object." +"{text} Too big for the constrain area. Final panel has {col} columns and " +"{row} rows" msgstr "" -"- 'Bereichsauswahl' - Klicken Sie mit der linken Maustaste, um den Bereich " -"auszuwählen, der gemalt werden soll.\n" -"Wenn Sie eine Änderungstaste gedrückt halten (STRG oder UMSCHALTTASTE), " -"können Sie mehrere Bereiche hinzufügen.\n" -"- 'Alle Polygone' - Der Malvorgang wird nach dem Klicken gestartet.\n" -"- 'Referenzobjekt' - löscht nicht kupferne Objekte innerhalb des Bereichs\n" -"von einem anderen Objekt angegeben." +"{text} Zu groß für den Einschränkungsbereich. Das letzte Panel enthält {col} " +"Spalten und {row} Zeilen" -#: appTools/ToolPaint.py:1412 -#, python-format -msgid "Could not retrieve object: %s" -msgstr "Objekt konnte nicht abgerufen werden: %s" +#: appTools/ToolPanelize.py:617 +msgid "Panel created successfully." +msgstr "Panel erfolgreich erstellt." -#: appTools/ToolPaint.py:1422 -msgid "Can't do Paint on MultiGeo geometries" -msgstr "Auf MultiGeo-Geometrien kann nicht gemalt werden" - -#: appTools/ToolPaint.py:1459 -msgid "Click on a polygon to paint it." -msgstr "Klicken Sie auf ein Polygon um es auszufüllen." - -#: appTools/ToolPaint.py:1472 -msgid "Click the start point of the paint area." -msgstr "Klicken Sie auf den Startpunkt des Malbereichs." - -#: appTools/ToolPaint.py:1537 -msgid "Click to add next polygon or right click to start painting." -msgstr "" -"Klicken Sie, um die nächste Zone hinzuzufügen, oder klicken Sie mit der " -"rechten Maustaste um mit dem Ausfüllen zu beginnen." - -#: appTools/ToolPaint.py:1550 -msgid "Click to add/remove next polygon or right click to start painting." -msgstr "" -"Klicken Sie, um die nächste Zone hinzuzufügen oder zu löschen, oder klicken " -"Sie mit der rechten Maustaste, um den Vorgang abzuschließen." - -#: appTools/ToolPaint.py:2054 -msgid "Painting polygon with method: lines." -msgstr "Polygon mit Methode malen: Linien." - -#: appTools/ToolPaint.py:2066 -msgid "Failed. Painting polygon with method: seed." -msgstr "Gescheitert. Polygon mit Methode malen: Same." - -#: appTools/ToolPaint.py:2077 -msgid "Failed. Painting polygon with method: standard." -msgstr "Gescheitert. Polygon mit Methode malen: Standard." - -#: appTools/ToolPaint.py:2093 -msgid "Geometry could not be painted completely" -msgstr "Geometrie konnte nicht vollständig gemalt werden" - -#: appTools/ToolPaint.py:2122 appTools/ToolPaint.py:2125 -#: appTools/ToolPaint.py:2133 appTools/ToolPaint.py:2436 -#: appTools/ToolPaint.py:2439 appTools/ToolPaint.py:2447 -#: appTools/ToolPaint.py:2935 appTools/ToolPaint.py:2938 -#: appTools/ToolPaint.py:2944 -msgid "Paint Tool." -msgstr "Malwerkzeug." - -#: appTools/ToolPaint.py:2122 appTools/ToolPaint.py:2125 -#: appTools/ToolPaint.py:2133 -msgid "Normal painting polygon task started." -msgstr "Normale Zeichenpolygonaufgabe gestartet." - -#: appTools/ToolPaint.py:2123 appTools/ToolPaint.py:2437 -#: appTools/ToolPaint.py:2936 -msgid "Buffering geometry..." -msgstr "Geometrie puffern..." - -#: appTools/ToolPaint.py:2145 appTools/ToolPaint.py:2454 -#: appTools/ToolPaint.py:2952 -msgid "No polygon found." -msgstr "Kein Polygon gefunden." - -#: appTools/ToolPaint.py:2175 -msgid "Painting polygon..." -msgstr "Polygon malen ..." - -#: appTools/ToolPaint.py:2185 appTools/ToolPaint.py:2500 -#: appTools/ToolPaint.py:2690 appTools/ToolPaint.py:2998 -#: appTools/ToolPaint.py:3177 -msgid "Painting with tool diameter = " -msgstr "Lackieren mit Werkzeugdurchmesser = " - -#: appTools/ToolPaint.py:2186 appTools/ToolPaint.py:2501 -#: appTools/ToolPaint.py:2691 appTools/ToolPaint.py:2999 -#: appTools/ToolPaint.py:3178 -msgid "started" -msgstr "gestartet" - -#: appTools/ToolPaint.py:2211 appTools/ToolPaint.py:2527 -#: appTools/ToolPaint.py:2717 appTools/ToolPaint.py:3025 -#: appTools/ToolPaint.py:3204 -msgid "Margin parameter too big. Tool is not used" -msgstr "Randparameter zu groß. Werkzeug wird nicht verwendet" - -#: appTools/ToolPaint.py:2269 appTools/ToolPaint.py:2596 -#: appTools/ToolPaint.py:2774 appTools/ToolPaint.py:3088 -#: appTools/ToolPaint.py:3266 -msgid "" -"Could not do Paint. Try a different combination of parameters. Or a " -"different strategy of paint" -msgstr "" -"Konnte nicht malen. Probieren Sie eine andere Kombination von Parametern " -"aus. Oder eine andere Strategie der Farbe" - -#: appTools/ToolPaint.py:2326 appTools/ToolPaint.py:2662 -#: appTools/ToolPaint.py:2831 appTools/ToolPaint.py:3149 -#: appTools/ToolPaint.py:3328 -msgid "" -"There is no Painting Geometry in the file.\n" -"Usually it means that the tool diameter is too big for the painted " -"geometry.\n" -"Change the painting parameters and try again." -msgstr "" -"Die Datei enthält keine Malgeometrie.\n" -"Normalerweise bedeutet dies, dass der Werkzeugdurchmesser für die lackierte " -"Geometrie zu groß ist.\n" -"Ändern Sie die Malparameter und versuchen Sie es erneut." - -#: appTools/ToolPaint.py:2349 -msgid "Paint Single failed." -msgstr "Das Malen eines einzelnen Polygons ist fehlgeschlagen." - -#: appTools/ToolPaint.py:2355 -msgid "Paint Single Done." -msgstr "Malen Sie Single Done." - -#: appTools/ToolPaint.py:2357 appTools/ToolPaint.py:2867 -#: appTools/ToolPaint.py:3364 -msgid "Polygon Paint started ..." -msgstr "Polygonfarbe gestartet ..." - -#: appTools/ToolPaint.py:2436 appTools/ToolPaint.py:2439 -#: appTools/ToolPaint.py:2447 -msgid "Paint all polygons task started." -msgstr "Malen Sie alle Polygone Aufgabe gestartet." - -#: appTools/ToolPaint.py:2478 appTools/ToolPaint.py:2976 -msgid "Painting polygons..." -msgstr "Polygone malen ..." - -#: appTools/ToolPaint.py:2671 -msgid "Paint All Done." -msgstr "Malen Sie alles fertig." - -#: appTools/ToolPaint.py:2840 appTools/ToolPaint.py:3337 -msgid "Paint All with Rest-Machining done." -msgstr "Malen Sie alles mit Restbearbeitung." - -#: appTools/ToolPaint.py:2859 -msgid "Paint All failed." -msgstr "Malen Alle Polygone sind fehlgeschlagen." - -#: appTools/ToolPaint.py:2865 -msgid "Paint Poly All Done." -msgstr "Malen Sie alle Polygone fertig." - -#: appTools/ToolPaint.py:2935 appTools/ToolPaint.py:2938 -#: appTools/ToolPaint.py:2944 -msgid "Painting area task started." -msgstr "Malbereichsaufgabe gestartet." - -#: appTools/ToolPaint.py:3158 -msgid "Paint Area Done." -msgstr "Lackierbereich fertig." - -#: appTools/ToolPaint.py:3356 -msgid "Paint Area failed." -msgstr "Lackierbereich fehlgeschlagen." - -#: appTools/ToolPaint.py:3362 -msgid "Paint Poly Area Done." -msgstr "Lackierbereich fertig." - -#: appTools/ToolPanelize.py:55 +#: appTools/ToolPanelize.py:654 msgid "" "Specify the type of object to be panelized\n" "It can be of type: Gerber, Excellon or Geometry.\n" @@ -15898,7 +17270,7 @@ msgstr "" "Die Auswahl hier bestimmt den Objekttyp\n" "im Objekt-Kombinationsfeld." -#: appTools/ToolPanelize.py:88 +#: appTools/ToolPanelize.py:687 msgid "" "Object to be panelized. This means that it will\n" "be duplicated in an array of rows and columns." @@ -15906,11 +17278,11 @@ msgstr "" "Objekt, das in Panels gesetzt werden soll. Dies bedeutet, dass es wird\n" "in einem Array von Zeilen und Spalten dupliziert werden." -#: appTools/ToolPanelize.py:100 +#: appTools/ToolPanelize.py:699 msgid "Penelization Reference" msgstr "Penelisierungshinweis" -#: appTools/ToolPanelize.py:102 +#: appTools/ToolPanelize.py:701 msgid "" "Choose the reference for panelization:\n" "- Object = the bounding box of a different object\n" @@ -15930,11 +17302,11 @@ msgstr "" "Zu diesem Referenzobjekt gehört daher die Beibehaltung der getäfelten\n" "Objekte synchronisieren." -#: appTools/ToolPanelize.py:123 +#: appTools/ToolPanelize.py:722 msgid "Box Type" msgstr "Box-Typ" -#: appTools/ToolPanelize.py:125 +#: appTools/ToolPanelize.py:724 msgid "" "Specify the type of object to be used as an container for\n" "panelization. It can be: Gerber or Geometry type.\n" @@ -15946,7 +17318,7 @@ msgstr "" "Die Auswahl hier bestimmt den Objekttyp\n" "im Kombinationsfeld Box-Objekt." -#: appTools/ToolPanelize.py:139 +#: appTools/ToolPanelize.py:738 msgid "" "The actual object that is used as container for the\n" " selected object that is to be panelized." @@ -15954,11 +17326,11 @@ msgstr "" "Das eigentliche Objekt, für das ein Container verwendet wird\n" "ausgewähltes Objekt, das in Panelisiert werden soll." -#: appTools/ToolPanelize.py:149 +#: appTools/ToolPanelize.py:748 msgid "Panel Data" msgstr "Paneldaten" -#: appTools/ToolPanelize.py:151 +#: appTools/ToolPanelize.py:750 msgid "" "This informations will shape the resulting panel.\n" "The number of rows and columns will set how many\n" @@ -15974,7 +17346,7 @@ msgstr "" "Die Abstände bestimmen den Abstand zwischen zwei Elementen\n" "Elemente des Panel-Arrays." -#: appTools/ToolPanelize.py:214 +#: appTools/ToolPanelize.py:813 msgid "" "Choose the type of object for the panel object:\n" "- Geometry\n" @@ -15984,15 +17356,15 @@ msgstr "" "- Geometrie\n" "- Gerber" -#: appTools/ToolPanelize.py:222 +#: appTools/ToolPanelize.py:831 msgid "Constrain panel within" msgstr "Panel einschränken innerhalb" -#: appTools/ToolPanelize.py:263 +#: appTools/ToolPanelize.py:872 msgid "Panelize Object" msgstr "Panelize Objekt" -#: appTools/ToolPanelize.py:265 appTools/ToolRulesCheck.py:501 +#: appTools/ToolPanelize.py:874 appTools/ToolRulesCheck.py:1603 msgid "" "Panelize the specified object around the specified box.\n" "In other words it creates multiple copies of the source object,\n" @@ -16002,62 +17374,78 @@ msgstr "" "Mit anderen Worten, es erstellt mehrere Kopien des Quellobjekts,\n" "in einem 2D-Array von Zeilen und Spalten angeordnet." -#: appTools/ToolPanelize.py:333 -msgid "Panel. Tool" -msgstr "Platte Werkzeug" +#: appTools/ToolPcbWizard.py:93 +msgid "PCBWizard Tool" +msgstr "PCBWizard Werkzeug" -#: appTools/ToolPanelize.py:469 -msgid "Columns or Rows are zero value. Change them to a positive integer." -msgstr "" -"Spalten oder Zeilen haben den Wert Null. Ändern Sie sie in eine positive " -"Ganzzahl." +#: appTools/ToolPcbWizard.py:179 appTools/ToolPcbWizard.py:183 +msgid "Load PcbWizard Excellon file" +msgstr "PcbWizard Excellon-Datei laden" -#: appTools/ToolPanelize.py:506 -msgid "Generating panel ... " -msgstr "Panel wird erstellt ... " +#: appTools/ToolPcbWizard.py:202 appTools/ToolPcbWizard.py:206 +msgid "Load PcbWizard INF file" +msgstr "Laden Sie die PcbWizard INF-Datei" -#: appTools/ToolPanelize.py:781 -msgid "Generating panel ... Adding the Gerber code." -msgstr "Panel wird generiert ... Hinzufügen des Gerber-Codes." - -#: appTools/ToolPanelize.py:789 -msgid "Generating panel... Spawning copies" -msgstr "Panel wird erstellt ... Kopien werden erstellt" - -#: appTools/ToolPanelize.py:798 -msgid "Panel done..." -msgstr "Panel fertig ..." - -#: appTools/ToolPanelize.py:801 -#, python-brace-format +#: appTools/ToolPcbWizard.py:254 msgid "" -"{text} Too big for the constrain area. Final panel has {col} columns and " -"{row} rows" +"The INF file does not contain the tool table.\n" +"Try to open the Excellon file from File -> Open -> Excellon\n" +"and edit the drill diameters manually." msgstr "" -"{text} Zu groß für den Einschränkungsbereich. Das letzte Panel enthält {col} " -"Spalten und {row} Zeilen" +"Die INF-Datei enthält keine Werkzeugtabelle.\n" +"Versuchen Sie, die Excellon-Datei über Datei -> Öffnen -> Excellon zu " +"öffnen\n" +"und bearbeiten Sie die Bohrerdurchmesser manuell." -#: appTools/ToolPanelize.py:810 -msgid "Panel created successfully." -msgstr "Panel erfolgreich erstellt." +#: appTools/ToolPcbWizard.py:274 +msgid "PcbWizard .INF file loaded." +msgstr "PcbWizard-INF-Datei wurde geladen." -#: appTools/ToolPcbWizard.py:31 +#: appTools/ToolPcbWizard.py:278 +msgid "Main PcbWizard Excellon file loaded." +msgstr "Haupt-PcbWizard Excellon-Datei geladen." + +#: appTools/ToolPcbWizard.py:310 app_Main.py:9043 +msgid "This is not Excellon file." +msgstr "Dies ist keine Excellon-Datei." + +#: appTools/ToolPcbWizard.py:313 +msgid "Cannot parse file" +msgstr "Datei kann nicht analysiert werden" + +#: appTools/ToolPcbWizard.py:336 +msgid "Importing Excellon." +msgstr "Excellon importieren." + +#: appTools/ToolPcbWizard.py:343 +msgid "Import Excellon file failed." +msgstr "Import der Excellon-Datei ist fehlgeschlagen." + +#: appTools/ToolPcbWizard.py:350 +msgid "Imported" +msgstr "Importiert" + +#: appTools/ToolPcbWizard.py:353 +msgid "Excellon merging is in progress. Please wait..." +msgstr "Das Zusammenführen von Excellons ist im Gange. Warten Sie mal..." + +#: appTools/ToolPcbWizard.py:355 +msgid "The imported Excellon file is empty." +msgstr "Die importierte Excellon-Datei ist Keine." + +#: appTools/ToolPcbWizard.py:360 msgid "PcbWizard Import Tool" msgstr "PCBWizard Werkzeug importieren" -#: appTools/ToolPcbWizard.py:40 -msgid "Import 2-file Excellon" -msgstr "Importieren Sie 2-Datei-Excellon" - -#: appTools/ToolPcbWizard.py:51 +#: appTools/ToolPcbWizard.py:379 msgid "Load files" msgstr "Dateien laden" -#: appTools/ToolPcbWizard.py:57 +#: appTools/ToolPcbWizard.py:385 msgid "Excellon file" msgstr "Excellon-Datei" -#: appTools/ToolPcbWizard.py:59 +#: appTools/ToolPcbWizard.py:387 msgid "" "Load the Excellon file.\n" "Usually it has a .DRL extension" @@ -16065,51 +17453,51 @@ msgstr "" "Laden Sie die Excellon-Datei.\n" "Normalerweise hat es die Erweiterung .DRL" -#: appTools/ToolPcbWizard.py:65 +#: appTools/ToolPcbWizard.py:393 msgid "INF file" msgstr "INF-Datei" -#: appTools/ToolPcbWizard.py:67 +#: appTools/ToolPcbWizard.py:395 msgid "Load the INF file." msgstr "Laden Sie die INF-Datei." -#: appTools/ToolPcbWizard.py:79 +#: appTools/ToolPcbWizard.py:407 msgid "Tool Number" msgstr "Werkzeugnummer" -#: appTools/ToolPcbWizard.py:81 +#: appTools/ToolPcbWizard.py:409 msgid "Tool diameter in file units." msgstr "Werkzeugdurchmesser in Feileneinheiten." -#: appTools/ToolPcbWizard.py:87 +#: appTools/ToolPcbWizard.py:415 msgid "Excellon format" msgstr "Excellon format" -#: appTools/ToolPcbWizard.py:95 +#: appTools/ToolPcbWizard.py:423 msgid "Int. digits" msgstr "Ganzzahlige Ziffern" -#: appTools/ToolPcbWizard.py:97 +#: appTools/ToolPcbWizard.py:425 msgid "The number of digits for the integral part of the coordinates." msgstr "Die Anzahl der Ziffern für den integralen Teil der Koordinaten." -#: appTools/ToolPcbWizard.py:104 +#: appTools/ToolPcbWizard.py:432 msgid "Frac. digits" msgstr "Nachkommastellen" -#: appTools/ToolPcbWizard.py:106 +#: appTools/ToolPcbWizard.py:434 msgid "The number of digits for the fractional part of the coordinates." msgstr "Die Anzahl der Stellen für den gebrochenen Teil der Koordinaten." -#: appTools/ToolPcbWizard.py:113 +#: appTools/ToolPcbWizard.py:441 msgid "No Suppression" msgstr "Keine Unterdrück" -#: appTools/ToolPcbWizard.py:114 +#: appTools/ToolPcbWizard.py:442 msgid "Zeros supp." msgstr "Nullunterdrück." -#: appTools/ToolPcbWizard.py:116 +#: appTools/ToolPcbWizard.py:444 msgid "" "The type of zeros suppression used.\n" "Can be of type:\n" @@ -16123,7 +17511,7 @@ msgstr "" "- TZ = nachfolgende Nullen bleiben erhalten\n" "- Keine Unterdrückung = keine Nullunterdrückung" -#: appTools/ToolPcbWizard.py:129 +#: appTools/ToolPcbWizard.py:457 msgid "" "The type of units that the coordinates and tool\n" "diameters are using. Can be INCH or MM." @@ -16131,11 +17519,11 @@ msgstr "" "Die Art der Einheiten, die die Koordinaten und das Werkzeug haben\n" "Durchmesser verwenden. Kann INCH oder MM sein." -#: appTools/ToolPcbWizard.py:136 +#: appTools/ToolPcbWizard.py:464 msgid "Import Excellon" msgstr "Excellon importieren" -#: appTools/ToolPcbWizard.py:138 +#: appTools/ToolPcbWizard.py:466 msgid "" "Import in FlatCAM an Excellon file\n" "that store it's information's in 2 files.\n" @@ -16147,69 +17535,10 @@ msgstr "" "Normalerweise hat man eine .DRL-Erweiterung\n" "der andere hat die Erweiterung .INF." -#: appTools/ToolPcbWizard.py:197 -msgid "PCBWizard Tool" -msgstr "PCBWizard Werkzeug" - -#: appTools/ToolPcbWizard.py:291 appTools/ToolPcbWizard.py:295 -msgid "Load PcbWizard Excellon file" -msgstr "PcbWizard Excellon-Datei laden" - -#: appTools/ToolPcbWizard.py:314 appTools/ToolPcbWizard.py:318 -msgid "Load PcbWizard INF file" -msgstr "Laden Sie die PcbWizard INF-Datei" - -#: appTools/ToolPcbWizard.py:366 -msgid "" -"The INF file does not contain the tool table.\n" -"Try to open the Excellon file from File -> Open -> Excellon\n" -"and edit the drill diameters manually." -msgstr "" -"Die INF-Datei enthält keine Werkzeugtabelle.\n" -"Versuchen Sie, die Excellon-Datei über Datei -> Öffnen -> Excellon zu " -"öffnen\n" -"und bearbeiten Sie die Bohrerdurchmesser manuell." - -#: appTools/ToolPcbWizard.py:387 -msgid "PcbWizard .INF file loaded." -msgstr "PcbWizard-INF-Datei wurde geladen." - -#: appTools/ToolPcbWizard.py:392 -msgid "Main PcbWizard Excellon file loaded." -msgstr "Haupt-PcbWizard Excellon-Datei geladen." - -#: appTools/ToolPcbWizard.py:424 app_Main.py:8644 -msgid "This is not Excellon file." -msgstr "Dies ist keine Excellon-Datei." - -#: appTools/ToolPcbWizard.py:427 -msgid "Cannot parse file" -msgstr "Datei kann nicht analysiert werden" - -#: appTools/ToolPcbWizard.py:450 -msgid "Importing Excellon." -msgstr "Excellon importieren." - -#: appTools/ToolPcbWizard.py:457 -msgid "Import Excellon file failed." -msgstr "Import der Excellon-Datei ist fehlgeschlagen." - -#: appTools/ToolPcbWizard.py:464 -msgid "Imported" -msgstr "Importiert" - -#: appTools/ToolPcbWizard.py:467 -msgid "Excellon merging is in progress. Please wait..." -msgstr "Das Zusammenführen von Excellons ist im Gange. Warten Sie mal..." - -#: appTools/ToolPcbWizard.py:469 -msgid "The imported Excellon file is empty." -msgstr "Die importierte Excellon-Datei ist Keine." - -#: appTools/ToolProperties.py:116 appTools/ToolTransform.py:577 -#: app_Main.py:4815 app_Main.py:6927 app_Main.py:7027 app_Main.py:7068 -#: app_Main.py:7109 app_Main.py:7151 app_Main.py:7193 app_Main.py:7237 -#: app_Main.py:7281 app_Main.py:7805 app_Main.py:7809 +#: appTools/ToolProperties.py:116 appTools/ToolTransform.py:142 +#: app_Main.py:4970 app_Main.py:7298 app_Main.py:7398 app_Main.py:7439 +#: app_Main.py:7480 app_Main.py:7522 app_Main.py:7564 app_Main.py:7608 +#: app_Main.py:7652 app_Main.py:8168 app_Main.py:8172 msgid "No object selected." msgstr "Kein Objekt ausgewählt." @@ -16221,149 +17550,121 @@ msgstr "Objekteigenschaften werden angezeigt." msgid "Properties Tool" msgstr "Eigenschaftenwerkzeug" -#: appTools/ToolProperties.py:150 +#: appTools/ToolProperties.py:153 msgid "TYPE" msgstr "TYP" -#: appTools/ToolProperties.py:151 +#: appTools/ToolProperties.py:154 msgid "NAME" msgstr "NAME" -#: appTools/ToolProperties.py:153 +#: appTools/ToolProperties.py:156 msgid "Dimensions" msgstr "Dimensionen" -#: appTools/ToolProperties.py:181 +#: appTools/ToolProperties.py:184 msgid "Geo Type" msgstr "Geo-Typ" -#: appTools/ToolProperties.py:184 +#: appTools/ToolProperties.py:187 msgid "Single-Geo" msgstr "Einzehln Geo" -#: appTools/ToolProperties.py:185 +#: appTools/ToolProperties.py:188 msgid "Multi-Geo" msgstr "Mehrfache Geo" -#: appTools/ToolProperties.py:196 +#: appTools/ToolProperties.py:199 msgid "Calculating dimensions ... Please wait." msgstr "Bemaßung wird berechnet ... Bitte warten." -#: appTools/ToolProperties.py:339 appTools/ToolProperties.py:343 -#: appTools/ToolProperties.py:345 +#: appTools/ToolProperties.py:342 appTools/ToolProperties.py:346 +#: appTools/ToolProperties.py:348 msgid "Inch" msgstr "Zoll" -#: appTools/ToolProperties.py:339 appTools/ToolProperties.py:344 -#: appTools/ToolProperties.py:346 +#: appTools/ToolProperties.py:342 appTools/ToolProperties.py:347 +#: appTools/ToolProperties.py:349 msgid "Metric" msgstr "Metrisch" -#: appTools/ToolProperties.py:421 appTools/ToolProperties.py:486 +#: appTools/ToolProperties.py:422 appTools/ToolProperties.py:490 msgid "Drills number" msgstr "Bohrernummer" -#: appTools/ToolProperties.py:422 appTools/ToolProperties.py:488 +#: appTools/ToolProperties.py:423 appTools/ToolProperties.py:492 msgid "Slots number" msgstr "Slotnummer" -#: appTools/ToolProperties.py:424 +#: appTools/ToolProperties.py:425 msgid "Drills total number:" msgstr "Gesamtzahl Bohrer:" -#: appTools/ToolProperties.py:425 +#: appTools/ToolProperties.py:426 msgid "Slots total number:" msgstr "Gesamtzahl der slots:" -#: appTools/ToolProperties.py:452 appTools/ToolProperties.py:455 -#: appTools/ToolProperties.py:458 appTools/ToolProperties.py:483 +#: appTools/ToolProperties.py:453 appTools/ToolProperties.py:456 +#: appTools/ToolProperties.py:459 appTools/ToolProperties.py:487 +#: appTools/ToolProperties.py:494 appTools/ToolProperties.py:497 msgid "Present" msgstr "Vorhanden" -#: appTools/ToolProperties.py:453 appTools/ToolProperties.py:484 +#: appTools/ToolProperties.py:454 appTools/ToolProperties.py:488 msgid "Solid Geometry" msgstr "Festkörpergeometrie" -#: appTools/ToolProperties.py:456 +#: appTools/ToolProperties.py:457 appTools/ToolProperties.py:495 msgid "GCode Text" msgstr "GCode Text" -#: appTools/ToolProperties.py:459 +#: appTools/ToolProperties.py:460 appTools/ToolProperties.py:498 msgid "GCode Geometry" msgstr "GCode Geometrie" -#: appTools/ToolProperties.py:462 -msgid "Data" -msgstr "Daten" +#: appTools/ToolProperties.py:468 appTools/ToolProperties.py:541 +#, fuzzy +#| msgid "Tool Dia" +msgid "Tool Data" +msgstr "Werkzeugdurchm" -#: appTools/ToolProperties.py:495 +#: appTools/ToolProperties.py:505 msgid "Depth of Cut" msgstr "Tiefe des Schnitts" -#: appTools/ToolProperties.py:507 +#: appTools/ToolProperties.py:517 msgid "Clearance Height" msgstr "Freilaufhöhe" -#: appTools/ToolProperties.py:539 +#: appTools/ToolProperties.py:555 msgid "Routing time" msgstr "Berechnungszeit" -#: appTools/ToolProperties.py:546 -msgid "Travelled distance" -msgstr "Zurückgelegte Strecke" - -#: appTools/ToolProperties.py:564 +#: appTools/ToolProperties.py:580 msgid "Width" msgstr "Breite" -#: appTools/ToolProperties.py:570 appTools/ToolProperties.py:578 +#: appTools/ToolProperties.py:586 appTools/ToolProperties.py:594 msgid "Box Area" msgstr "Feld Bereich" -#: appTools/ToolProperties.py:573 appTools/ToolProperties.py:581 +#: appTools/ToolProperties.py:589 appTools/ToolProperties.py:597 msgid "Convex_Hull Area" msgstr "Konvexer Rumpfbereich" -#: appTools/ToolProperties.py:588 appTools/ToolProperties.py:591 +#: appTools/ToolProperties.py:604 appTools/ToolProperties.py:607 msgid "Copper Area" msgstr "Kupferareal" -#: appTools/ToolPunchGerber.py:30 appTools/ToolPunchGerber.py:323 -msgid "Punch Gerber" -msgstr "Schlag Gerber" - -#: appTools/ToolPunchGerber.py:65 -msgid "Gerber into which to punch holes" -msgstr "Gerber, in den Löcher gestanzt werden können" - -#: appTools/ToolPunchGerber.py:85 -msgid "ALL" -msgstr "ALLE" - -#: appTools/ToolPunchGerber.py:166 -msgid "" -"Remove the geometry of Excellon from the Gerber to create the holes in pads." -msgstr "" -"Entfernen Sie die Geometrie von Excellon aus dem Gerber, um die Löcher in " -"den Pads zu erstellen." - -#: appTools/ToolPunchGerber.py:325 -msgid "" -"Create a Gerber object from the selected object, within\n" -"the specified box." -msgstr "" -"Erstellen Sie innerhalb des ausgewählten Objekts ein Gerber-Objekt\n" -"das angegebene Feld." - -#: appTools/ToolPunchGerber.py:425 +#: appTools/ToolPunchGerber.py:101 msgid "Punch Tool" msgstr "Stanzwerkzeug" -#: appTools/ToolPunchGerber.py:599 +#: appTools/ToolPunchGerber.py:275 msgid "The value of the fixed diameter is 0.0. Aborting." msgstr "Der Wert des festen Durchmessers beträgt 0,0. Abbruch." -#: appTools/ToolPunchGerber.py:602 +#: appTools/ToolPunchGerber.py:278 msgid "" "Could not generate punched hole Gerber because the punch hole size is bigger " "than some of the apertures in the Gerber object." @@ -16371,7 +17672,7 @@ msgstr "" "Stanzloch Gerber konnte nicht generiert werden, da die Stanzlochgröße größer " "ist als einige der Öffnungen im Gerber-Objekt." -#: appTools/ToolPunchGerber.py:665 +#: appTools/ToolPunchGerber.py:341 msgid "" "Could not generate punched hole Gerber because the newly created object " "geometry is the same as the one in the source object geometry..." @@ -16379,19 +17680,72 @@ msgstr "" "Stanzloch Gerber konnte nicht generiert werden, da die neu erstellte " "Objektgeometrie mit der in der Quellobjektgeometrie übereinstimmt ..." -#: appTools/ToolQRCode.py:80 +#: appTools/ToolPunchGerber.py:684 appTools/ToolPunchGerber.py:977 +msgid "Punch Gerber" +msgstr "Schlag Gerber" + +#: appTools/ToolPunchGerber.py:719 +msgid "Gerber into which to punch holes" +msgstr "Gerber, in den Löcher gestanzt werden können" + +#: appTools/ToolPunchGerber.py:739 +msgid "ALL" +msgstr "ALLE" + +#: appTools/ToolPunchGerber.py:820 +msgid "" +"Remove the geometry of Excellon from the Gerber to create the holes in pads." +msgstr "" +"Entfernen Sie die Geometrie von Excellon aus dem Gerber, um die Löcher in " +"den Pads zu erstellen." + +#: appTools/ToolPunchGerber.py:979 +msgid "" +"Create a Gerber object from the selected object, within\n" +"the specified box." +msgstr "" +"Erstellen Sie innerhalb des ausgewählten Objekts ein Gerber-Objekt\n" +"das angegebene Feld." + +#: appTools/ToolQRCode.py:147 appTools/ToolQRCode.py:482 +#: appTools/ToolQRCode.py:531 +msgid "Cancelled. There is no QRCode Data in the text box." +msgstr "Abgebrochen. Es befindet sich kein QRCode im Feld." + +#: appTools/ToolQRCode.py:166 +msgid "Generating QRCode geometry" +msgstr "QRCode Geometrie erzeugen" + +#: appTools/ToolQRCode.py:206 +msgid "Click on the Destination point ..." +msgstr "Klicken Sie auf den Zielpunkt ..." + +#: appTools/ToolQRCode.py:321 +msgid "QRCode Tool done." +msgstr "QRCode Tool fertig." + +#: appTools/ToolQRCode.py:514 appTools/ToolQRCode.py:518 +msgid "Export PNG" +msgstr "PNG exportieren" + +#: appTools/ToolQRCode.py:561 appTools/ToolQRCode.py:565 app_Main.py:7330 +#: app_Main.py:7334 +msgid "Export SVG" +msgstr "SVG exportieren" + +#: appTools/ToolQRCode.py:658 msgid "Gerber Object to which the QRCode will be added." msgstr "Gerber-Objekt zu dem der QRCode hinzugefügt wird." -#: appTools/ToolQRCode.py:116 +#: appTools/ToolQRCode.py:694 msgid "The parameters used to shape the QRCode." msgstr "Parameter zum Aussehen des QRCodes." -#: appTools/ToolQRCode.py:216 +#: appTools/ToolQRCode.py:794 msgid "Export QRCode" msgstr "QRCode exportieren" -#: appTools/ToolQRCode.py:218 +#: appTools/ToolQRCode.py:796 msgid "" "Show a set of controls allowing to export the QRCode\n" "to a SVG file or an PNG file." @@ -16399,179 +17753,51 @@ msgstr "" "Zeigt einen Satz von Bedienelementen um den QRCode\n" "in eine SVG oder ein PNG File zu exportieren." -#: appTools/ToolQRCode.py:257 +#: appTools/ToolQRCode.py:835 msgid "Transparent back color" msgstr "Transparente Hintergrundfarbe" -#: appTools/ToolQRCode.py:282 +#: appTools/ToolQRCode.py:860 msgid "Export QRCode SVG" msgstr "QRCode als SVG exportieren" -#: appTools/ToolQRCode.py:284 +#: appTools/ToolQRCode.py:862 msgid "Export a SVG file with the QRCode content." msgstr "Export als SVG Code mit dem QRCode Inhalt." -#: appTools/ToolQRCode.py:295 +#: appTools/ToolQRCode.py:873 msgid "Export QRCode PNG" msgstr "G-Code als PNG exportieren" -#: appTools/ToolQRCode.py:297 +#: appTools/ToolQRCode.py:875 msgid "Export a PNG image file with the QRCode content." msgstr "Exportiert den QRCode als PNG Datei." -#: appTools/ToolQRCode.py:308 +#: appTools/ToolQRCode.py:886 msgid "Insert QRCode" msgstr "QRCode einfügen" -#: appTools/ToolQRCode.py:310 +#: appTools/ToolQRCode.py:888 msgid "Create the QRCode object." msgstr "Erzeugen des QRCode Objektes." -#: appTools/ToolQRCode.py:424 appTools/ToolQRCode.py:759 -#: appTools/ToolQRCode.py:808 -msgid "Cancelled. There is no QRCode Data in the text box." -msgstr "Abgebrochen. Es befindet sich kein QRCode im Feld." - -#: appTools/ToolQRCode.py:443 -msgid "Generating QRCode geometry" -msgstr "QRCode Geometrie erzeugen" - -#: appTools/ToolQRCode.py:483 -msgid "Click on the Destination point ..." -msgstr "Klicken Sie auf den Zielpunkt ..." - -#: appTools/ToolQRCode.py:598 -msgid "QRCode Tool done." -msgstr "QRCode Tool fertig." - -#: appTools/ToolQRCode.py:791 appTools/ToolQRCode.py:795 -msgid "Export PNG" -msgstr "PNG exportieren" - -#: appTools/ToolQRCode.py:838 appTools/ToolQRCode.py:842 app_Main.py:6959 -#: app_Main.py:6963 -msgid "Export SVG" -msgstr "SVG exportieren" - -#: appTools/ToolRulesCheck.py:33 -msgid "Check Rules" -msgstr "Überprüfen Sie die Regeln" - -#: appTools/ToolRulesCheck.py:63 -msgid "Gerber objects for which to check rules." -msgstr "Gerber-Objekte, für die Regeln überprüft werden sollen." - -#: appTools/ToolRulesCheck.py:78 -msgid "Top" -msgstr "Oberst" - -#: appTools/ToolRulesCheck.py:80 -msgid "The Top Gerber Copper object for which rules are checked." -msgstr "Das Top Gerber Copper-Objekt, für das Regeln überprüft werden." - -#: appTools/ToolRulesCheck.py:96 -msgid "Bottom" -msgstr "Unterseite" - -#: appTools/ToolRulesCheck.py:98 -msgid "The Bottom Gerber Copper object for which rules are checked." -msgstr "Das untere Gerber Copper-Objekt, für das Regeln überprüft werden." - -#: appTools/ToolRulesCheck.py:114 -msgid "SM Top" -msgstr "SM Oberst" - -#: appTools/ToolRulesCheck.py:116 -msgid "The Top Gerber Solder Mask object for which rules are checked." -msgstr "Das oberste Gerber-Lötmaskenobjekt, für das Regeln überprüft werden." - -#: appTools/ToolRulesCheck.py:132 -msgid "SM Bottom" -msgstr "SM unten" - -#: appTools/ToolRulesCheck.py:134 -msgid "The Bottom Gerber Solder Mask object for which rules are checked." -msgstr "Das untere Gerber-Lötmaskenobjekt, für das Regeln überprüft werden." - -#: appTools/ToolRulesCheck.py:150 -msgid "Silk Top" -msgstr "Siebdruck Oben" - -#: appTools/ToolRulesCheck.py:152 -msgid "The Top Gerber Silkscreen object for which rules are checked." -msgstr "Das oberste Gerber-Siebdruck-Objekt, für das Regeln überprüft werden." - -#: appTools/ToolRulesCheck.py:168 -msgid "Silk Bottom" -msgstr "Siebdruck unten" - -#: appTools/ToolRulesCheck.py:170 -msgid "The Bottom Gerber Silkscreen object for which rules are checked." -msgstr "Das untere Gerber-Siebdruck-Objekt, für das Regeln überprüft werden." - -#: appTools/ToolRulesCheck.py:188 -msgid "The Gerber Outline (Cutout) object for which rules are checked." -msgstr "" -"Das Gerber-Gliederungsobjekt (Ausschnitt), für das Regeln überprüft werden." - -#: appTools/ToolRulesCheck.py:201 -msgid "Excellon objects for which to check rules." -msgstr "Excellon-Objekte, für die Regeln überprüft werden sollen." - -#: appTools/ToolRulesCheck.py:213 -msgid "Excellon 1" -msgstr "Excellon 1" - -#: appTools/ToolRulesCheck.py:215 -msgid "" -"Excellon object for which to check rules.\n" -"Holds the plated holes or a general Excellon file content." -msgstr "" -"Excellon-Objekt, für das Regeln überprüft werden sollen.\n" -"Enthält die plattierten Löcher oder einen allgemeinen Excellon-Dateiinhalt." - -#: appTools/ToolRulesCheck.py:232 -msgid "Excellon 2" -msgstr "Excellon 2" - -#: appTools/ToolRulesCheck.py:234 -msgid "" -"Excellon object for which to check rules.\n" -"Holds the non-plated holes." -msgstr "" -"Excellon-Objekt, für das Regeln überprüft werden sollen.\n" -"Hält die nicht plattierten Löcher." - -#: appTools/ToolRulesCheck.py:247 -msgid "All Rules" -msgstr "Alle Regeln" - -#: appTools/ToolRulesCheck.py:249 -msgid "This check/uncheck all the rules below." -msgstr "" -"Hiermit können Sie alle unten aufgeführten Regeln aktivieren / deaktivieren." - -#: appTools/ToolRulesCheck.py:499 -msgid "Run Rules Check" -msgstr "Führen Sie die Regelprüfung durch" - -#: appTools/ToolRulesCheck.py:1158 appTools/ToolRulesCheck.py:1218 -#: appTools/ToolRulesCheck.py:1255 appTools/ToolRulesCheck.py:1327 -#: appTools/ToolRulesCheck.py:1381 appTools/ToolRulesCheck.py:1419 -#: appTools/ToolRulesCheck.py:1484 +#: appTools/ToolRulesCheck.py:657 appTools/ToolRulesCheck.py:717 +#: appTools/ToolRulesCheck.py:754 appTools/ToolRulesCheck.py:826 +#: appTools/ToolRulesCheck.py:880 appTools/ToolRulesCheck.py:918 +#: appTools/ToolRulesCheck.py:983 msgid "Value is not valid." msgstr "Wert ist ungültig." -#: appTools/ToolRulesCheck.py:1172 +#: appTools/ToolRulesCheck.py:671 msgid "TOP -> Copper to Copper clearance" msgstr "TOP -> Kupfer zu Kupfer Abstand" -#: appTools/ToolRulesCheck.py:1183 +#: appTools/ToolRulesCheck.py:682 msgid "BOTTOM -> Copper to Copper clearance" msgstr "UNTEN -> Kupfer zu Kupfer Abstand" -#: appTools/ToolRulesCheck.py:1188 appTools/ToolRulesCheck.py:1282 -#: appTools/ToolRulesCheck.py:1446 +#: appTools/ToolRulesCheck.py:687 appTools/ToolRulesCheck.py:781 +#: appTools/ToolRulesCheck.py:945 msgid "" "At least one Gerber object has to be selected for this rule but none is " "selected." @@ -16579,13 +17805,13 @@ msgstr "" "Für diese Regel muss mindestens ein Gerber-Objekt ausgewählt sein, aber " "keines." -#: appTools/ToolRulesCheck.py:1224 +#: appTools/ToolRulesCheck.py:723 msgid "" "One of the copper Gerber objects or the Outline Gerber object is not valid." msgstr "" "Eines der Kupfer-Gerber-Objekte oder das Umriss-Gerber-Objekt ist ungültig." -#: appTools/ToolRulesCheck.py:1237 appTools/ToolRulesCheck.py:1401 +#: appTools/ToolRulesCheck.py:736 appTools/ToolRulesCheck.py:900 msgid "" "Outline Gerber object presence is mandatory for this rule but it is not " "selected." @@ -16593,31 +17819,31 @@ msgstr "" "Das Vorhandensein von Gerber-Objekten ist für diese Regel obligatorisch, " "jedoch nicht ausgewählt." -#: appTools/ToolRulesCheck.py:1254 appTools/ToolRulesCheck.py:1281 +#: appTools/ToolRulesCheck.py:753 appTools/ToolRulesCheck.py:780 msgid "Silk to Silk clearance" msgstr "Siebdruck zu siebdruck freiheit" -#: appTools/ToolRulesCheck.py:1267 +#: appTools/ToolRulesCheck.py:766 msgid "TOP -> Silk to Silk clearance" msgstr "TOP -> Siebdruck zu Siebdruck Abstand" -#: appTools/ToolRulesCheck.py:1277 +#: appTools/ToolRulesCheck.py:776 msgid "BOTTOM -> Silk to Silk clearance" msgstr "UNTEN -> Abstand von Siebdruck zu Siebdruck" -#: appTools/ToolRulesCheck.py:1333 +#: appTools/ToolRulesCheck.py:832 msgid "One or more of the Gerber objects is not valid." msgstr "Eines oder mehrere der Gerber-Objekte sind ungültig." -#: appTools/ToolRulesCheck.py:1341 +#: appTools/ToolRulesCheck.py:840 msgid "TOP -> Silk to Solder Mask Clearance" msgstr "TOP -> Abstand von Siebdruck zu Lötmaske" -#: appTools/ToolRulesCheck.py:1347 +#: appTools/ToolRulesCheck.py:846 msgid "BOTTOM -> Silk to Solder Mask Clearance" msgstr "UNTEN -> Abstand von Siebdruck zu Lötmaske" -#: appTools/ToolRulesCheck.py:1351 +#: appTools/ToolRulesCheck.py:850 msgid "" "Both Silk and Solder Mask Gerber objects has to be either both Top or both " "Bottom." @@ -16625,50 +17851,152 @@ msgstr "" "Sowohl Siebdruck- als auch Lötmasken-Gerber-Objekte müssen entweder beide " "oben oder beide unten sein." -#: appTools/ToolRulesCheck.py:1387 +#: appTools/ToolRulesCheck.py:886 msgid "" "One of the Silk Gerber objects or the Outline Gerber object is not valid." msgstr "" "Eines der Siebdruck-Gerber-Objekte oder das Gliederung-Gerber-Objekt ist " "ungültig." -#: appTools/ToolRulesCheck.py:1431 +#: appTools/ToolRulesCheck.py:930 msgid "TOP -> Minimum Solder Mask Sliver" msgstr "TOP -> Minimum Lötmaskenband" -#: appTools/ToolRulesCheck.py:1441 +#: appTools/ToolRulesCheck.py:940 msgid "BOTTOM -> Minimum Solder Mask Sliver" msgstr "UNTEN-> Minimum Lötmaskenband" -#: appTools/ToolRulesCheck.py:1490 +#: appTools/ToolRulesCheck.py:989 msgid "One of the Copper Gerber objects or the Excellon objects is not valid." msgstr "" "Eines der Kupfer-Gerber-Objekte oder der Excellon-Objekte ist ungültig." -#: appTools/ToolRulesCheck.py:1506 +#: appTools/ToolRulesCheck.py:1005 msgid "" "Excellon object presence is mandatory for this rule but none is selected." msgstr "" "Das Vorhandensein von Excellon-Objekten ist für diese Regel obligatorisch, " "es ist jedoch keine ausgewählt." -#: appTools/ToolRulesCheck.py:1579 appTools/ToolRulesCheck.py:1592 -#: appTools/ToolRulesCheck.py:1603 appTools/ToolRulesCheck.py:1616 +#: appTools/ToolRulesCheck.py:1078 appTools/ToolRulesCheck.py:1091 +#: appTools/ToolRulesCheck.py:1102 appTools/ToolRulesCheck.py:1115 msgid "STATUS" msgstr "STATUS" -#: appTools/ToolRulesCheck.py:1582 appTools/ToolRulesCheck.py:1606 +#: appTools/ToolRulesCheck.py:1081 appTools/ToolRulesCheck.py:1105 msgid "FAILED" msgstr "GESCHEITERT" -#: appTools/ToolRulesCheck.py:1595 appTools/ToolRulesCheck.py:1619 +#: appTools/ToolRulesCheck.py:1094 appTools/ToolRulesCheck.py:1118 msgid "PASSED" msgstr "BESTANDEN" -#: appTools/ToolRulesCheck.py:1596 appTools/ToolRulesCheck.py:1620 +#: appTools/ToolRulesCheck.py:1095 appTools/ToolRulesCheck.py:1119 msgid "Violations: There are no violations for the current rule." msgstr "Verstöße: Für die aktuelle Regel gibt es keine Verstöße." +#: appTools/ToolRulesCheck.py:1137 +msgid "Check Rules" +msgstr "Überprüfen Sie die Regeln" + +#: appTools/ToolRulesCheck.py:1165 +msgid "Gerber objects for which to check rules." +msgstr "Gerber-Objekte, für die Regeln überprüft werden sollen." + +#: appTools/ToolRulesCheck.py:1180 +msgid "Top" +msgstr "Oberst" + +#: appTools/ToolRulesCheck.py:1182 +msgid "The Top Gerber Copper object for which rules are checked." +msgstr "Das Top Gerber Copper-Objekt, für das Regeln überprüft werden." + +#: appTools/ToolRulesCheck.py:1198 +msgid "Bottom" +msgstr "Unterseite" + +#: appTools/ToolRulesCheck.py:1200 +msgid "The Bottom Gerber Copper object for which rules are checked." +msgstr "Das untere Gerber Copper-Objekt, für das Regeln überprüft werden." + +#: appTools/ToolRulesCheck.py:1216 +msgid "SM Top" +msgstr "SM Oberst" + +#: appTools/ToolRulesCheck.py:1218 +msgid "The Top Gerber Solder Mask object for which rules are checked." +msgstr "Das oberste Gerber-Lötmaskenobjekt, für das Regeln überprüft werden." + +#: appTools/ToolRulesCheck.py:1234 +msgid "SM Bottom" +msgstr "SM unten" + +#: appTools/ToolRulesCheck.py:1236 +msgid "The Bottom Gerber Solder Mask object for which rules are checked." +msgstr "Das untere Gerber-Lötmaskenobjekt, für das Regeln überprüft werden." + +#: appTools/ToolRulesCheck.py:1252 +msgid "Silk Top" +msgstr "Siebdruck Oben" + +#: appTools/ToolRulesCheck.py:1254 +msgid "The Top Gerber Silkscreen object for which rules are checked." +msgstr "Das oberste Gerber-Siebdruck-Objekt, für das Regeln überprüft werden." + +#: appTools/ToolRulesCheck.py:1270 +msgid "Silk Bottom" +msgstr "Siebdruck unten" + +#: appTools/ToolRulesCheck.py:1272 +msgid "The Bottom Gerber Silkscreen object for which rules are checked." +msgstr "Das untere Gerber-Siebdruck-Objekt, für das Regeln überprüft werden." + +#: appTools/ToolRulesCheck.py:1290 +msgid "The Gerber Outline (Cutout) object for which rules are checked." +msgstr "" +"Das Gerber-Gliederungsobjekt (Ausschnitt), für das Regeln überprüft werden." + +#: appTools/ToolRulesCheck.py:1303 +msgid "Excellon objects for which to check rules." +msgstr "Excellon-Objekte, für die Regeln überprüft werden sollen." + +#: appTools/ToolRulesCheck.py:1315 +msgid "Excellon 1" +msgstr "Excellon 1" + +#: appTools/ToolRulesCheck.py:1317 +msgid "" +"Excellon object for which to check rules.\n" +"Holds the plated holes or a general Excellon file content." +msgstr "" +"Excellon-Objekt, für das Regeln überprüft werden sollen.\n" +"Enthält die plattierten Löcher oder einen allgemeinen Excellon-Dateiinhalt." + +#: appTools/ToolRulesCheck.py:1334 +msgid "Excellon 2" +msgstr "Excellon 2" + +#: appTools/ToolRulesCheck.py:1336 +msgid "" +"Excellon object for which to check rules.\n" +"Holds the non-plated holes." +msgstr "" +"Excellon-Objekt, für das Regeln überprüft werden sollen.\n" +"Hält die nicht plattierten Löcher." + +#: appTools/ToolRulesCheck.py:1349 +msgid "All Rules" +msgstr "Alle Regeln" + +#: appTools/ToolRulesCheck.py:1351 +msgid "This check/uncheck all the rules below." +msgstr "" +"Hiermit können Sie alle unten aufgeführten Regeln aktivieren / deaktivieren." + +#: appTools/ToolRulesCheck.py:1601 +msgid "Run Rules Check" +msgstr "Führen Sie die Regelprüfung durch" + #: appTools/ToolShell.py:59 msgid "Clear the text." msgstr "Löschen Sie den Text." @@ -16677,15 +18005,109 @@ msgstr "Löschen Sie den Text." msgid "...processing..." msgstr "...wird bearbeitet..." -#: appTools/ToolSolderPaste.py:37 +#: appTools/ToolSolderPaste.py:459 +msgid "Please enter a tool diameter to add, in Float format." +msgstr "" +"Bitte geben Sie einen hinzuzufügenden Werkzeugdurchmesser im Float-Format " +"ein." + +#: appTools/ToolSolderPaste.py:493 +msgid "New Nozzle tool added to Tool Table." +msgstr "Neues Düsenwerkzeug zur Werkzeugtabelle hinzugefügt." + +#: appTools/ToolSolderPaste.py:535 +msgid "Nozzle tool from Tool Table was edited." +msgstr "Das Düsenwerkzeug aus der Werkzeugtabelle wurde bearbeitet." + +#: appTools/ToolSolderPaste.py:593 +msgid "Delete failed. Select a Nozzle tool to delete." +msgstr "Löschen fehlgeschlagen. Wählen Sie ein Düsenwerkzeug zum Löschen aus." + +#: appTools/ToolSolderPaste.py:598 +msgid "Nozzle tool(s) deleted from Tool Table." +msgstr "Düsenwerkzeug (e) aus der Werkzeugtabelle gelöscht." + +#: appTools/ToolSolderPaste.py:652 +msgid "No SolderPaste mask Gerber object loaded." +msgstr "Keine Lötpastenmaske Gerber-Objekt geladen." + +#: appTools/ToolSolderPaste.py:670 +msgid "Creating Solder Paste dispensing geometry." +msgstr "Erstellen einer Lotpastenspendergeometrie." + +#: appTools/ToolSolderPaste.py:683 +msgid "No Nozzle tools in the tool table." +msgstr "Nein Düsenwerkzeuge in der Werkzeugtabelle." + +#: appTools/ToolSolderPaste.py:809 +msgid "Cancelled. Empty file, it has no geometry..." +msgstr "Abgebrochen. Leere Datei hat keine Geometrie ..." + +#: appTools/ToolSolderPaste.py:812 +msgid "Solder Paste geometry generated successfully" +msgstr "Lotpastengeometrie erfolgreich generiert" + +#: appTools/ToolSolderPaste.py:819 +msgid "Some or all pads have no solder due of inadequate nozzle diameters..." +msgstr "" +"Einige oder alle Pads haben wegen unzureichender Düsendurchmesser keine " +"Lötstellen ..." + +#: appTools/ToolSolderPaste.py:833 +msgid "Generating Solder Paste dispensing geometry..." +msgstr "Lötpasten-Dosiergeometrie erzeugen ..." + +#: appTools/ToolSolderPaste.py:852 +msgid "There is no Geometry object available." +msgstr "Es ist kein Geometrieobjekt verfügbar." + +#: appTools/ToolSolderPaste.py:857 +msgid "This Geometry can't be processed. NOT a solder_paste_tool geometry." +msgstr "" +"Diese Geometrie kann nicht verarbeitet werden. KEINE Geometrie " +"\"Lötpaste_Tool\"." + +#: appTools/ToolSolderPaste.py:893 +msgid "An internal error has ocurred. See shell.\n" +msgstr "Ein interner Fehler ist aufgetreten. Siehe Konsole.\n" + +#: appTools/ToolSolderPaste.py:962 +msgid "ToolSolderPaste CNCjob created" +msgstr "Werkzeuglötpaste CNC-Auftrag erstellt" + +#: appTools/ToolSolderPaste.py:981 +msgid "SP GCode Editor" +msgstr "SP GCode-Editor" + +#: appTools/ToolSolderPaste.py:993 appTools/ToolSolderPaste.py:998 +#: appTools/ToolSolderPaste.py:1047 +msgid "" +"This CNCJob object can't be processed. NOT a solder_paste_tool CNCJob object." +msgstr "" +"Dieses CNCJob-Objekt kann nicht verarbeitet werden. KEIN lot_paste_tool " +"CNCJob Objekt." + +#: appTools/ToolSolderPaste.py:1022 +msgid "No Gcode in the object" +msgstr "Kein Gcode im Objekt" + +#: appTools/ToolSolderPaste.py:1057 +msgid "Export GCode ..." +msgstr "GCode exportieren ..." + +#: appTools/ToolSolderPaste.py:1104 +msgid "Solder paste dispenser GCode file saved to" +msgstr "Lotpastenspender GCode-Datei gespeichert in" + +#: appTools/ToolSolderPaste.py:1114 msgid "Solder Paste Tool" msgstr "Lötpaste-Werkzeug" -#: appTools/ToolSolderPaste.py:68 +#: appTools/ToolSolderPaste.py:1144 msgid "Gerber Solderpaste object." msgstr "Gerber Lötpastenobjekt." -#: appTools/ToolSolderPaste.py:81 +#: appTools/ToolSolderPaste.py:1157 msgid "" "Tools pool from which the algorithm\n" "will pick the ones used for dispensing solder paste." @@ -16693,7 +18115,7 @@ msgstr "" "Toolspool aus dem der Algorithmus\n" "wählt die für die Lotpaste verwendeten aus." -#: appTools/ToolSolderPaste.py:96 +#: appTools/ToolSolderPaste.py:1172 msgid "" "This is the Tool Number.\n" "The solder dispensing will start with the tool with the biggest \n" @@ -16708,7 +18130,7 @@ msgstr "" "vorhanden\n" "Mit Lötpaste gibt die App eine Warnmeldung aus." -#: appTools/ToolSolderPaste.py:103 +#: appTools/ToolSolderPaste.py:1179 msgid "" "Nozzle tool Diameter. It's value (in current FlatCAM units)\n" "is the width of the solder paste dispensed." @@ -16716,11 +18138,11 @@ msgstr "" "Düsenwerkzeug Durchmesser. Der Wert (in aktuellen FlatCAM-Einheiten)\n" "ist die Breite der Lotpaste." -#: appTools/ToolSolderPaste.py:110 +#: appTools/ToolSolderPaste.py:1186 msgid "New Nozzle Tool" msgstr "Neues Düsenwerkzeug" -#: appTools/ToolSolderPaste.py:129 +#: appTools/ToolSolderPaste.py:1205 msgid "" "Add a new nozzle tool to the Tool Table\n" "with the diameter specified above." @@ -16728,11 +18150,11 @@ msgstr "" "Fügen Sie der Werkzeugtabelle ein neues Düsenwerkzeug hinzu\n" "mit dem oben angegebenen Durchmesser." -#: appTools/ToolSolderPaste.py:151 +#: appTools/ToolSolderPaste.py:1227 msgid "STEP 1" msgstr "SCHRITT 1" -#: appTools/ToolSolderPaste.py:153 +#: appTools/ToolSolderPaste.py:1229 msgid "" "First step is to select a number of nozzle tools for usage\n" "and then optionally modify the GCode parameters below." @@ -16740,7 +18162,7 @@ msgstr "" "Zunächst müssen Sie eine Reihe von Düsenwerkzeugen auswählen\n" "und ändern Sie dann optional die GCode-Parameter." -#: appTools/ToolSolderPaste.py:156 +#: appTools/ToolSolderPaste.py:1232 msgid "" "Select tools.\n" "Modify parameters." @@ -16748,7 +18170,7 @@ msgstr "" "Werkzeuge auswählen.\n" "Parameter ändern." -#: appTools/ToolSolderPaste.py:276 +#: appTools/ToolSolderPaste.py:1352 msgid "" "Feedrate (speed) while moving up vertically\n" " to Dispense position (on Z plane)." @@ -16756,7 +18178,7 @@ msgstr "" "Vorschub (Geschwindigkeit) bei vertikaler Bewegung\n" "  zur Ausgabeposition (auf der Z-Ebene)." -#: appTools/ToolSolderPaste.py:346 +#: appTools/ToolSolderPaste.py:1422 msgid "" "Generate GCode for Solder Paste dispensing\n" "on PCB pads." @@ -16764,11 +18186,11 @@ msgstr "" "Generieren Sie GCode für die Lotpastendosierung\n" "auf PCB-Pads." -#: appTools/ToolSolderPaste.py:367 +#: appTools/ToolSolderPaste.py:1443 msgid "STEP 2" msgstr "SCHRITT 2" -#: appTools/ToolSolderPaste.py:369 +#: appTools/ToolSolderPaste.py:1445 msgid "" "Second step is to create a solder paste dispensing\n" "geometry out of an Solder Paste Mask Gerber file." @@ -16776,15 +18198,19 @@ msgstr "" "Der zweite Schritt ist das Erstellen einer Lotpastendispensierung\n" "Geometrie aus einer Lotpastenmaske-Gerber-Datei." -#: appTools/ToolSolderPaste.py:375 +#: appTools/ToolSolderPaste.py:1449 +msgid "Generate Geo" +msgstr "Geo erzeugen" + +#: appTools/ToolSolderPaste.py:1451 msgid "Generate solder paste dispensing geometry." msgstr "Generieren Sie Lotpastendispensiergeometrie." -#: appTools/ToolSolderPaste.py:398 +#: appTools/ToolSolderPaste.py:1474 msgid "Geo Result" msgstr "Geo-Ergebnis" -#: appTools/ToolSolderPaste.py:400 +#: appTools/ToolSolderPaste.py:1476 msgid "" "Geometry Solder Paste object.\n" "The name of the object has to end in:\n" @@ -16794,11 +18220,11 @@ msgstr "" "Der Name des Objekts muss auf enden:\n" "'_solderpaste' als Schutz." -#: appTools/ToolSolderPaste.py:409 +#: appTools/ToolSolderPaste.py:1485 msgid "STEP 3" msgstr "SCHRITT 3" -#: appTools/ToolSolderPaste.py:411 +#: appTools/ToolSolderPaste.py:1487 msgid "" "Third step is to select a solder paste dispensing geometry,\n" "and then generate a CNCJob object.\n" @@ -16814,11 +18240,11 @@ msgstr "" "Zuerst müssen Sie eine Geometrie mit diesen neuen Parametern generieren.\n" "und erst danach können Sie einen aktualisierten CNCJob erstellen." -#: appTools/ToolSolderPaste.py:432 +#: appTools/ToolSolderPaste.py:1508 msgid "CNC Result" msgstr "CNC-Ergebnis" -#: appTools/ToolSolderPaste.py:434 +#: appTools/ToolSolderPaste.py:1510 msgid "" "CNCJob Solder paste object.\n" "In order to enable the GCode save section,\n" @@ -16830,11 +18256,11 @@ msgstr "" "Der Name des Objekts muss auf enden:\n" "'_solderpaste' als Schutz." -#: appTools/ToolSolderPaste.py:444 +#: appTools/ToolSolderPaste.py:1520 msgid "View GCode" msgstr "GCode anzeigen" -#: appTools/ToolSolderPaste.py:446 +#: appTools/ToolSolderPaste.py:1522 msgid "" "View the generated GCode for Solder Paste dispensing\n" "on PCB pads." @@ -16842,11 +18268,11 @@ msgstr "" "Zeigen Sie den generierten GCode für die Lotpastendosierung an\n" "auf PCB-Pads." -#: appTools/ToolSolderPaste.py:456 +#: appTools/ToolSolderPaste.py:1532 msgid "Save GCode" msgstr "Speichern Sie GCode" -#: appTools/ToolSolderPaste.py:458 +#: appTools/ToolSolderPaste.py:1534 msgid "" "Save the generated GCode for Solder Paste dispensing\n" "on PCB pads, to a file." @@ -16854,11 +18280,11 @@ msgstr "" "Speichern Sie den generierten GCode für die Lotpastendosierung\n" "auf PCB-Pads zu einer Datei." -#: appTools/ToolSolderPaste.py:468 +#: appTools/ToolSolderPaste.py:1544 msgid "STEP 4" msgstr "SCHRITT 4" -#: appTools/ToolSolderPaste.py:470 +#: appTools/ToolSolderPaste.py:1546 msgid "" "Fourth step (and last) is to select a CNCJob made from \n" "a solder paste dispensing geometry, and then view/save it's GCode." @@ -16866,95 +18292,56 @@ msgstr "" "Vierter Schritt (und letzter Schritt) ist die Auswahl eines CNCJobs aus\n" "eine Lotpastendispensiergeometrie und dann den GCode anzeigen / speichern." -#: appTools/ToolSolderPaste.py:930 -msgid "New Nozzle tool added to Tool Table." -msgstr "Neues Düsenwerkzeug zur Werkzeugtabelle hinzugefügt." +#: appTools/ToolSub.py:126 +msgid "Sub Tool" +msgstr "Sub. Werkzeug" -#: appTools/ToolSolderPaste.py:973 -msgid "Nozzle tool from Tool Table was edited." -msgstr "Das Düsenwerkzeug aus der Werkzeugtabelle wurde bearbeitet." +#: appTools/ToolSub.py:147 appTools/ToolSub.py:351 +msgid "No Target object loaded." +msgstr "Kein Zielobjekt geladen." -#: appTools/ToolSolderPaste.py:1032 -msgid "Delete failed. Select a Nozzle tool to delete." -msgstr "Löschen fehlgeschlagen. Wählen Sie ein Düsenwerkzeug zum Löschen aus." +#: appTools/ToolSub.py:150 +msgid "Loading geometry from Gerber objects." +msgstr "Lade Geometrien aus Gerber Objekten." -#: appTools/ToolSolderPaste.py:1038 -msgid "Nozzle tool(s) deleted from Tool Table." -msgstr "Düsenwerkzeug (e) aus der Werkzeugtabelle gelöscht." +#: appTools/ToolSub.py:162 appTools/ToolSub.py:364 +msgid "No Subtractor object loaded." +msgstr "Es wurde kein Subtrahiererobjekt geladen." -#: appTools/ToolSolderPaste.py:1094 -msgid "No SolderPaste mask Gerber object loaded." -msgstr "Keine Lötpastenmaske Gerber-Objekt geladen." +# whatever aperture means here.... +#: appTools/ToolSub.py:204 +msgid "Finished parsing geometry for aperture" +msgstr "Einlesen der aperture Geometrie fertiggestellt" -#: appTools/ToolSolderPaste.py:1112 -msgid "Creating Solder Paste dispensing geometry." -msgstr "Erstellen einer Lotpastenspendergeometrie." +#: appTools/ToolSub.py:206 +msgid "Subtraction aperture processing finished." +msgstr "Die Verarbeitung der Subtraktionsapertur ist beendet." -#: appTools/ToolSolderPaste.py:1125 -msgid "No Nozzle tools in the tool table." -msgstr "Nein Düsenwerkzeuge in der Werkzeugtabelle." +#: appTools/ToolSub.py:326 appTools/ToolSub.py:515 +msgid "Generating new object ..." +msgstr "Neues Objekt erzeugen ..." -#: appTools/ToolSolderPaste.py:1251 -msgid "Cancelled. Empty file, it has no geometry..." -msgstr "Abgebrochen. Leere Datei hat keine Geometrie ..." +#: appTools/ToolSub.py:329 appTools/ToolSub.py:518 appTools/ToolSub.py:595 +msgid "Generating new object failed." +msgstr "Das Generieren eines neuen Objekts ist fehlgeschlagen." -#: appTools/ToolSolderPaste.py:1254 -msgid "Solder Paste geometry generated successfully" -msgstr "Lotpastengeometrie erfolgreich generiert" +#: appTools/ToolSub.py:333 appTools/ToolSub.py:523 +msgid "Created" +msgstr "Erstellt" -#: appTools/ToolSolderPaste.py:1261 -msgid "Some or all pads have no solder due of inadequate nozzle diameters..." -msgstr "" -"Einige oder alle Pads haben wegen unzureichender Düsendurchmesser keine " -"Lötstellen ..." +#: appTools/ToolSub.py:377 +msgid "Currently, the Subtractor geometry cannot be of type Multigeo." +msgstr "Derzeit kann die Subtrahierergeometrie nicht vom Typ Multi-Geo sein." -#: appTools/ToolSolderPaste.py:1275 -msgid "Generating Solder Paste dispensing geometry..." -msgstr "Lötpasten-Dosiergeometrie erzeugen ..." +#: appTools/ToolSub.py:417 +msgid "Parsing solid_geometry ..." +msgstr "Analyse von solid_geometry ..." -#: appTools/ToolSolderPaste.py:1295 -msgid "There is no Geometry object available." -msgstr "Es ist kein Geometrieobjekt verfügbar." +#: appTools/ToolSub.py:419 +msgid "Parsing solid_geometry for tool" +msgstr "Analysieren der solid_geometry für das Werkzeug" -#: appTools/ToolSolderPaste.py:1300 -msgid "This Geometry can't be processed. NOT a solder_paste_tool geometry." -msgstr "" -"Diese Geometrie kann nicht verarbeitet werden. KEINE Geometrie " -"\"Lötpaste_Tool\"." - -#: appTools/ToolSolderPaste.py:1336 -msgid "An internal error has ocurred. See shell.\n" -msgstr "Ein interner Fehler ist aufgetreten. Siehe Konsole.\n" - -#: appTools/ToolSolderPaste.py:1401 -msgid "ToolSolderPaste CNCjob created" -msgstr "Werkzeuglötpaste CNC-Auftrag erstellt" - -#: appTools/ToolSolderPaste.py:1420 -msgid "SP GCode Editor" -msgstr "SP GCode-Editor" - -#: appTools/ToolSolderPaste.py:1432 appTools/ToolSolderPaste.py:1437 -#: appTools/ToolSolderPaste.py:1492 -msgid "" -"This CNCJob object can't be processed. NOT a solder_paste_tool CNCJob object." -msgstr "" -"Dieses CNCJob-Objekt kann nicht verarbeitet werden. KEIN lot_paste_tool " -"CNCJob Objekt." - -#: appTools/ToolSolderPaste.py:1462 -msgid "No Gcode in the object" -msgstr "Kein Gcode im Objekt" - -#: appTools/ToolSolderPaste.py:1502 -msgid "Export GCode ..." -msgstr "GCode exportieren ..." - -#: appTools/ToolSolderPaste.py:1550 -msgid "Solder paste dispenser GCode file saved to" -msgstr "Lotpastenspender GCode-Datei gespeichert in" - -#: appTools/ToolSub.py:83 +#: appTools/ToolSub.py:654 msgid "" "Gerber object from which to subtract\n" "the subtractor Gerber object." @@ -16962,11 +18349,11 @@ msgstr "" "Gerber-Objekt, von dem subtrahiert werden soll\n" "der Subtrahierer Gerber Objekt." -#: appTools/ToolSub.py:96 appTools/ToolSub.py:151 +#: appTools/ToolSub.py:667 appTools/ToolSub.py:722 msgid "Subtractor" msgstr "Subtraktor" -#: appTools/ToolSub.py:98 +#: appTools/ToolSub.py:669 msgid "" "Gerber object that will be subtracted\n" "from the target Gerber object." @@ -16974,11 +18361,11 @@ msgstr "" "Gerber-Objekt, das abgezogen wird\n" "vom Zielobjekt Gerber." -#: appTools/ToolSub.py:105 +#: appTools/ToolSub.py:676 msgid "Subtract Gerber" msgstr "Gerber abziehen" -#: appTools/ToolSub.py:107 +#: appTools/ToolSub.py:678 msgid "" "Will remove the area occupied by the subtractor\n" "Gerber from the Target Gerber.\n" @@ -16990,7 +18377,7 @@ msgstr "" "Kann verwendet werden, um den überlappenden Siebdruck zu entfernen\n" "über der Lötmaske." -#: appTools/ToolSub.py:138 +#: appTools/ToolSub.py:709 msgid "" "Geometry object from which to subtract\n" "the subtractor Geometry object." @@ -16998,7 +18385,7 @@ msgstr "" "Geometrieobjekt, von dem subtrahiert werden soll\n" "das Subtrahierer-Geometrieobjekt." -#: appTools/ToolSub.py:153 +#: appTools/ToolSub.py:724 msgid "" "Geometry object that will be subtracted\n" "from the target Geometry object." @@ -17006,18 +18393,18 @@ msgstr "" "Geometrieobjekt, das subtrahiert wird\n" "aus dem Zielobjekt Geometrie." -#: appTools/ToolSub.py:161 +#: appTools/ToolSub.py:732 msgid "" "Checking this will close the paths cut by the Geometry subtractor object." msgstr "" "Wenn Sie dies aktivieren, werden die vom Geometrie-Subtrahierer-Objekt " "geschnittenen Pfade geschlossen." -#: appTools/ToolSub.py:164 +#: appTools/ToolSub.py:735 msgid "Subtract Geometry" msgstr "Geometrie subtrahieren" -#: appTools/ToolSub.py:166 +#: appTools/ToolSub.py:737 msgid "" "Will remove the area occupied by the subtractor\n" "Geometry from the Target Geometry." @@ -17025,60 +18412,97 @@ msgstr "" "Entfernt den vom Subtrahierer belegten Bereich\n" "Geometrie aus der Zielgeometrie." -#: appTools/ToolSub.py:264 -msgid "Sub Tool" -msgstr "Sub. Werkzeug" +#: appTools/ToolTransform.py:293 +msgid "No object selected. Please Select an object to rotate!" +msgstr "Kein Objekt ausgewählt. Bitte wählen Sie ein Objekt zum Drehen aus!" -#: appTools/ToolSub.py:285 appTools/ToolSub.py:490 -msgid "No Target object loaded." -msgstr "Kein Zielobjekt geladen." +#: appTools/ToolTransform.py:301 +msgid "CNCJob objects can't be rotated." +msgstr "CNCJob-Objekte können nicht gedreht werden." -#: appTools/ToolSub.py:288 -msgid "Loading geometry from Gerber objects." -msgstr "Lade Geometrien aus Gerber Objekten." +#: appTools/ToolTransform.py:309 +msgid "Rotate done" +msgstr "Fertig drehen" -#: appTools/ToolSub.py:300 appTools/ToolSub.py:505 -msgid "No Subtractor object loaded." -msgstr "Es wurde kein Subtrahiererobjekt geladen." +#: appTools/ToolTransform.py:312 appTools/ToolTransform.py:353 +#: appTools/ToolTransform.py:386 appTools/ToolTransform.py:414 +msgid "Due of" +msgstr "Aufgrund von" -# whatever aperture means here.... -#: appTools/ToolSub.py:342 -msgid "Finished parsing geometry for aperture" -msgstr "Einlesen der aperture Geometrie fertiggestellt" +#: appTools/ToolTransform.py:312 appTools/ToolTransform.py:353 +#: appTools/ToolTransform.py:386 appTools/ToolTransform.py:414 +msgid "action was not executed." +msgstr "Aktion wurde nicht ausgeführt." -#: appTools/ToolSub.py:344 -msgid "Subtraction aperture processing finished." -msgstr "Die Verarbeitung der Subtraktionsapertur ist beendet." +#: appTools/ToolTransform.py:319 +msgid "No object selected. Please Select an object to flip" +msgstr "Kein Objekt ausgewählt. Bitte wählen Sie ein Objekt aus" -#: appTools/ToolSub.py:464 appTools/ToolSub.py:662 -msgid "Generating new object ..." -msgstr "Neues Objekt erzeugen ..." +#: appTools/ToolTransform.py:329 +msgid "CNCJob objects can't be mirrored/flipped." +msgstr "CNCJob-Objekte können nicht gespiegelt / gespiegelt werden." -#: appTools/ToolSub.py:467 appTools/ToolSub.py:666 appTools/ToolSub.py:745 -msgid "Generating new object failed." -msgstr "Das Generieren eines neuen Objekts ist fehlgeschlagen." +#: appTools/ToolTransform.py:361 +msgid "Skew transformation can not be done for 0, 90 and 180 degrees." +msgstr "" +"Die Neigungstransformation kann nicht für 0, 90 und 180 Grad durchgeführt " +"werden." -#: appTools/ToolSub.py:471 appTools/ToolSub.py:672 -msgid "Created" -msgstr "Erstellt" +#: appTools/ToolTransform.py:366 +msgid "No object selected. Please Select an object to shear/skew!" +msgstr "" +"Kein Objekt ausgewählt. Bitte wählen Sie ein Objekt zum Scheren / Schrägen!" -#: appTools/ToolSub.py:519 -msgid "Currently, the Subtractor geometry cannot be of type Multigeo." -msgstr "Derzeit kann die Subtrahierergeometrie nicht vom Typ Multi-Geo sein." +#: appTools/ToolTransform.py:375 +msgid "CNCJob objects can't be skewed." +msgstr "CNCJob-Objekte können nicht verzerrt werden." -#: appTools/ToolSub.py:564 -msgid "Parsing solid_geometry ..." -msgstr "Analyse von solid_geometry ..." +#: appTools/ToolTransform.py:383 +msgid "Skew on the" +msgstr "Schräg auf die" -#: appTools/ToolSub.py:566 -msgid "Parsing solid_geometry for tool" -msgstr "Analysieren der solid_geometry für das Werkzeug" +#: appTools/ToolTransform.py:383 appTools/ToolTransform.py:411 +#: appTools/ToolTransform.py:441 +msgid "axis done" +msgstr "Achse fertig" -#: appTools/ToolTransform.py:26 +#: appTools/ToolTransform.py:393 +msgid "No object selected. Please Select an object to scale!" +msgstr "Kein Objekt ausgewählt. Bitte wählen Sie ein Objekt zum Skalieren!" + +#: appTools/ToolTransform.py:402 +msgid "CNCJob objects can't be scaled." +msgstr "CNCJob-Objekte können nicht skaliert werden." + +#: appTools/ToolTransform.py:411 +msgid "Scale on the" +msgstr "Skalieren Sie auf der" + +#: appTools/ToolTransform.py:421 +msgid "No object selected. Please Select an object to offset!" +msgstr "Kein Objekt ausgewählt. Bitte wählen Sie ein Objekt zum Versetzen aus!" + +#: appTools/ToolTransform.py:428 +msgid "CNCJob objects can't be offset." +msgstr "CNCJob-Objekte können nicht versetzt werden." + +#: appTools/ToolTransform.py:441 +msgid "Offset on the" +msgstr "Offset auf dem" + +#: appTools/ToolTransform.py:450 +msgid "No object selected. Please Select an object to buffer!" +msgstr "Kein Objekt ausgewählt. Bitte wählen Sie ein Objekt zum Puffern aus!" + +#: appTools/ToolTransform.py:457 +msgid "CNCJob objects can't be buffered." +msgstr "CNCJob-Objekte können nicht gepuffert werden." + +#: appTools/ToolTransform.py:512 msgid "Object Transform" msgstr "Objekttransformation" -#: appTools/ToolTransform.py:116 +#: appTools/ToolTransform.py:603 msgid "" "The object used as reference.\n" "The used point is the center of it's bounding box." @@ -17086,105 +18510,19 @@ msgstr "" "Das als Referenz verwendete Objekt.\n" "Der verwendete Punkt ist die Mitte des Begrenzungsrahmens." -#: appTools/ToolTransform.py:728 -msgid "No object selected. Please Select an object to rotate!" -msgstr "Kein Objekt ausgewählt. Bitte wählen Sie ein Objekt zum Drehen aus!" - -#: appTools/ToolTransform.py:736 -msgid "CNCJob objects can't be rotated." -msgstr "CNCJob-Objekte können nicht gedreht werden." - -#: appTools/ToolTransform.py:744 -msgid "Rotate done" -msgstr "Fertig drehen" - -#: appTools/ToolTransform.py:747 appTools/ToolTransform.py:788 -#: appTools/ToolTransform.py:821 appTools/ToolTransform.py:849 -msgid "Due of" -msgstr "Aufgrund von" - -#: appTools/ToolTransform.py:747 appTools/ToolTransform.py:788 -#: appTools/ToolTransform.py:821 appTools/ToolTransform.py:849 -msgid "action was not executed." -msgstr "Aktion wurde nicht ausgeführt." - -#: appTools/ToolTransform.py:754 -msgid "No object selected. Please Select an object to flip" -msgstr "Kein Objekt ausgewählt. Bitte wählen Sie ein Objekt aus" - -#: appTools/ToolTransform.py:764 -msgid "CNCJob objects can't be mirrored/flipped." -msgstr "CNCJob-Objekte können nicht gespiegelt / gespiegelt werden." - -#: appTools/ToolTransform.py:796 -msgid "Skew transformation can not be done for 0, 90 and 180 degrees." -msgstr "" -"Die Neigungstransformation kann nicht für 0, 90 und 180 Grad durchgeführt " -"werden." - -#: appTools/ToolTransform.py:801 -msgid "No object selected. Please Select an object to shear/skew!" -msgstr "" -"Kein Objekt ausgewählt. Bitte wählen Sie ein Objekt zum Scheren / Schrägen!" - -#: appTools/ToolTransform.py:810 -msgid "CNCJob objects can't be skewed." -msgstr "CNCJob-Objekte können nicht verzerrt werden." - -#: appTools/ToolTransform.py:818 -msgid "Skew on the" -msgstr "Schräg auf die" - -#: appTools/ToolTransform.py:818 appTools/ToolTransform.py:846 -#: appTools/ToolTransform.py:876 -msgid "axis done" -msgstr "Achse fertig" - -#: appTools/ToolTransform.py:828 -msgid "No object selected. Please Select an object to scale!" -msgstr "Kein Objekt ausgewählt. Bitte wählen Sie ein Objekt zum Skalieren!" - -#: appTools/ToolTransform.py:837 -msgid "CNCJob objects can't be scaled." -msgstr "CNCJob-Objekte können nicht skaliert werden." - -#: appTools/ToolTransform.py:846 -msgid "Scale on the" -msgstr "Skalieren Sie auf der" - -#: appTools/ToolTransform.py:856 -msgid "No object selected. Please Select an object to offset!" -msgstr "Kein Objekt ausgewählt. Bitte wählen Sie ein Objekt zum Versetzen aus!" - -#: appTools/ToolTransform.py:863 -msgid "CNCJob objects can't be offset." -msgstr "CNCJob-Objekte können nicht versetzt werden." - -#: appTools/ToolTransform.py:876 -msgid "Offset on the" -msgstr "Offset auf dem" - -#: appTools/ToolTransform.py:886 -msgid "No object selected. Please Select an object to buffer!" -msgstr "Kein Objekt ausgewählt. Bitte wählen Sie ein Objekt zum Puffern aus!" - -#: appTools/ToolTransform.py:893 -msgid "CNCJob objects can't be buffered." -msgstr "CNCJob-Objekte können nicht gepuffert werden." - -#: appTranslation.py:104 +#: appTranslation.py:105 msgid "The application will restart." msgstr "Die Anwendung wird neu gestartet." -#: appTranslation.py:106 +#: appTranslation.py:107 msgid "Are you sure do you want to change the current language to" msgstr "Möchten Sie die aktuelle Sprache wirklich in ändern" -#: appTranslation.py:107 +#: appTranslation.py:108 msgid "Apply Language ..." msgstr "Sprache anwenden ..." -#: appTranslation.py:205 app_Main.py:3226 +#: appTranslation.py:207 app_Main.py:3377 msgid "" "There are files/objects modified in FlatCAM. \n" "Do you want to Save the project?" @@ -17192,21 +18530,17 @@ msgstr "" "In FlatCAM wurden Dateien / Objekte geändert.\n" "Möchten Sie das Projekt speichern?" -#: appTranslation.py:208 app_Main.py:3229 app_Main.py:6535 -msgid "Save changes" -msgstr "Änderungen speichern" - -#: app_Main.py:479 +#: app_Main.py:490 msgid "FlatCAM is initializing ..." msgstr "FlatCAM wird initialisiert ..." -#: app_Main.py:623 +#: app_Main.py:650 msgid "Could not find the Language files. The App strings are missing." msgstr "" "Die Sprachdateien konnten nicht gefunden werden. Die App-Zeichenfolgen " "fehlen." -#: app_Main.py:695 +#: app_Main.py:722 msgid "" "FlatCAM is initializing ...\n" "Canvas initialization started." @@ -17214,7 +18548,7 @@ msgstr "" "FlatCAM wird initialisiert ...\n" "Die Canvas-Initialisierung wurde gestartet." -#: app_Main.py:715 +#: app_Main.py:742 msgid "" "FlatCAM is initializing ...\n" "Canvas initialization started.\n" @@ -17224,44 +18558,44 @@ msgstr "" "Die Canvas-Initialisierung wurde gestartet.\n" "Canvas-Initialisierung abgeschlossen in" -#: app_Main.py:1561 app_Main.py:6648 +#: app_Main.py:1590 app_Main.py:6984 msgid "New Project - Not saved" msgstr "Neues Projekt - Nicht gespeichert" -#: app_Main.py:1662 +#: app_Main.py:1696 msgid "" "Found old default preferences files. Please reboot the application to update." msgstr "" "Alte Einstellungsdatei gefunden. Bitte starten Sie Flatcam neu um die " "Einstellungen zu aktualisieren." -#: app_Main.py:1729 +#: app_Main.py:1763 msgid "Open Config file failed." msgstr "Öffnen der Config-Datei ist fehlgeschlagen." -#: app_Main.py:1744 +#: app_Main.py:1778 msgid "Open Script file failed." msgstr "Open Script-Datei ist fehlgeschlagen." -#: app_Main.py:1770 +#: app_Main.py:1804 msgid "Open Excellon file failed." msgstr "Öffnen der Excellon-Datei fehlgeschlagen." -#: app_Main.py:1783 +#: app_Main.py:1817 msgid "Open GCode file failed." msgstr "Öffnen der GCode-Datei fehlgeschlagen." -#: app_Main.py:1796 +#: app_Main.py:1830 msgid "Open Gerber file failed." msgstr "Öffnen der Gerber-Datei fehlgeschlagen." -#: app_Main.py:2119 +#: app_Main.py:2168 msgid "Select a Geometry, Gerber, Excellon or CNCJob Object to edit." msgstr "" "Wählen Sie ein zu bearbeitendes Geometrie-, Gerber-, Excellon- oder CNCJob-" "Objekt aus." -#: app_Main.py:2134 +#: app_Main.py:2183 msgid "" "Simultaneous editing of tools geometry in a MultiGeo Geometry is not " "possible.\n" @@ -17271,93 +18605,109 @@ msgstr "" "Geometrie ist nicht möglich.\n" "Bearbeiten Sie jeweils nur eine Geometrie." -#: app_Main.py:2200 +#: app_Main.py:2263 msgid "Editor is activated ..." msgstr "Editor wurde aktiviert ..." -#: app_Main.py:2221 +#: app_Main.py:2284 msgid "Do you want to save the edited object?" msgstr "Möchten Sie das bearbeitete Objekt speichern?" -#: app_Main.py:2257 +#: app_Main.py:2325 msgid "Object empty after edit." msgstr "Das Objekt ist nach der Bearbeitung leer." -#: app_Main.py:2262 app_Main.py:2280 app_Main.py:2299 +#: app_Main.py:2330 app_Main.py:2348 app_Main.py:2379 app_Main.py:2395 msgid "Editor exited. Editor content saved." msgstr "Editor beendet. Editorinhalt gespeichert." -#: app_Main.py:2303 app_Main.py:2327 app_Main.py:2345 +#: app_Main.py:2399 +#, fuzzy +#| msgid "Select a Gerber, Geometry or Excellon Object to update." +msgid "Select a Gerber, Geometry, Excellon or CNCJobObject to update." +msgstr "" +"Wählen Sie ein Gerber-, Geometrie- oder Excellon-Objekt zum Aktualisieren " +"aus." + +#: app_Main.py:2402 +msgid "is updated, returning to App..." +msgstr "wurde aktualisiert..." + +#: app_Main.py:2415 +msgid "Editor exited. Editor content was not saved." +msgstr "Editor beendet. Der Inhalt des Editors wurde nicht gespeichert." + +#: app_Main.py:2440 +#, fuzzy +#| msgid "Select a Gerber, Geometry or Excellon Object to update." +msgid "Select a Gerber, Geometry, Excellon or CNCJob Object to update." +msgstr "" +"Wählen Sie ein Gerber-, Geometrie- oder Excellon-Objekt zum Aktualisieren " +"aus." + +#: app_Main.py:2463 msgid "Select a Gerber, Geometry or Excellon Object to update." msgstr "" "Wählen Sie ein Gerber-, Geometrie- oder Excellon-Objekt zum Aktualisieren " "aus." -#: app_Main.py:2306 -msgid "is updated, returning to App..." -msgstr "wurde aktualisiert..." - -#: app_Main.py:2313 -msgid "Editor exited. Editor content was not saved." -msgstr "Editor beendet. Der Inhalt des Editors wurde nicht gespeichert." - -#: app_Main.py:2446 app_Main.py:2450 +#: app_Main.py:2567 app_Main.py:2571 msgid "Import FlatCAM Preferences" msgstr "FlatCAM-Voreinstellungen importieren" -#: app_Main.py:2461 +#: app_Main.py:2582 msgid "Imported Defaults from" msgstr "Voreinstellungen wurden importiert von" -#: app_Main.py:2481 app_Main.py:2487 +#: app_Main.py:2602 app_Main.py:2608 msgid "Export FlatCAM Preferences" msgstr "FlatCAM-Voreinstellungen exportieren" -#: app_Main.py:2507 +#: app_Main.py:2628 msgid "Exported preferences to" msgstr "Exportierte Einstellungen nach" -#: app_Main.py:2527 app_Main.py:2532 +#: app_Main.py:2648 app_Main.py:2653 msgid "Save to file" msgstr "Speichern unter" -#: app_Main.py:2556 +#: app_Main.py:2677 msgid "Could not load the file." msgstr "Die Datei konnte nicht geladen werden." -#: app_Main.py:2572 +#: app_Main.py:2693 msgid "Exported file to" msgstr "Exportierte Datei nach" -#: app_Main.py:2609 +#: app_Main.py:2730 msgid "Failed to open recent files file for writing." msgstr "Fehler beim Öffnen der zuletzt geöffneten Datei zum Schreiben." -#: app_Main.py:2620 +#: app_Main.py:2741 msgid "Failed to open recent projects file for writing." msgstr "Fehler beim Öffnen der letzten Projektdatei zum Schreiben." -#: app_Main.py:2675 +#: app_Main.py:2796 msgid "2D Computer-Aided Printed Circuit Board Manufacturing" msgstr "2D-Computer-Aided-Printed-Circuit-Board-Herstellung" -#: app_Main.py:2676 +#: app_Main.py:2797 msgid "Development" msgstr "Entwicklung" -#: app_Main.py:2677 +#: app_Main.py:2798 msgid "DOWNLOAD" msgstr "HERUNTERLADEN" -#: app_Main.py:2678 +#: app_Main.py:2799 msgid "Issue tracker" msgstr "Problem Tracker" -#: app_Main.py:2697 +#: app_Main.py:2818 msgid "Licensed under the MIT license" msgstr "Lizenziert unter der MIT-Lizenz" -#: app_Main.py:2706 +#: app_Main.py:2827 msgid "" "Permission is hereby granted, free of charge, to any person obtaining a " "copy\n" @@ -17412,7 +18762,7 @@ msgstr "" "ZUSAMMENHANG MIT DER\n" " SOFTWARE ODER SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN." -#: app_Main.py:2728 +#: app_Main.py:2849 msgid "" "Some of the icons used are from the following sources:
" -#: app_Main.py:2764 +#: app_Main.py:2885 msgid "Splash" msgstr "Begrüßungsbildschirm" -#: app_Main.py:2770 +#: app_Main.py:2891 msgid "Programmers" msgstr "Programmierer" -#: app_Main.py:2776 +#: app_Main.py:2897 msgid "Translators" msgstr "Übersetzer" -#: app_Main.py:2782 +#: app_Main.py:2903 msgid "License" msgstr "Lizenz" -#: app_Main.py:2788 +#: app_Main.py:2909 msgid "Attributions" msgstr "Zuschreibungen" -#: app_Main.py:2811 +#: app_Main.py:2932 msgid "Programmer" msgstr "Programmierer" -#: app_Main.py:2812 +#: app_Main.py:2933 msgid "Status" msgstr "Status" -#: app_Main.py:2813 app_Main.py:2893 +#: app_Main.py:2934 app_Main.py:3014 msgid "E-mail" msgstr "Email" -#: app_Main.py:2816 +#: app_Main.py:2937 msgid "Program Author" msgstr "Programmautor" -#: app_Main.py:2821 +#: app_Main.py:2942 msgid "BETA Maintainer >= 2019" msgstr "Betreuer >= 2019" -#: app_Main.py:2890 +#: app_Main.py:3011 msgid "Language" msgstr "Sprache" -#: app_Main.py:2891 +#: app_Main.py:3012 msgid "Translator" msgstr "Übersetzer" -#: app_Main.py:2892 +#: app_Main.py:3013 msgid "Corrections" msgstr "Korrekturen" -#: app_Main.py:2972 +#: app_Main.py:3098 msgid "Important Information's" msgstr "Important Information's" -#: app_Main.py:2994 +#: app_Main.py:3146 #, python-format msgid "This program is %s and free in a very wide meaning of the word." msgstr "" "Dieses Programm ist %s und in einer sehr weiten Bedeutung des Wortes " "kostenlos." -#: app_Main.py:2995 +#: app_Main.py:3147 msgid "Yet it cannot evolve without contributions." msgstr "Es kann sich jedoch nicht ohne Beiträge entwickeln." -#: app_Main.py:2996 +#: app_Main.py:3148 msgid "If you want to see this application grow and become better and better" msgstr "Wenn Sie möchten, dass diese Anwendung wächst und immer besser wird" -#: app_Main.py:2997 +#: app_Main.py:3149 msgid "you can contribute to the development yourself by:" msgstr "Sie können selbst zur Entwicklung beitragen, indem Sie:" -#: app_Main.py:2998 +#: app_Main.py:3150 msgid "Pull Requests on the Bitbucket repository, if you are a developer" msgstr "Pull-Anfragen im Bitbucket-Repository, wenn Sie Entwickler sind" -#: app_Main.py:3000 +#: app_Main.py:3152 msgid "Bug Reports by providing the steps required to reproduce the bug" msgstr "" "Fehlerberichte, indem Sie die Schritte bereitstellen, die zum Reproduzieren " "des Fehlers erforderlich sind" -#: app_Main.py:3002 -msgid "If you like or use this program you can make a donation" -msgstr "" -"Wenn Sie dieses Programm mögen oder nutzen, können Sie eine Spende machen" - -#: app_Main.py:3004 -#, python-format -msgid "You don't have to make a donation %s, and it is totally optional but:" -msgstr "Sie müssen keine Spende% s machen, und es ist völlig optional, aber:" - -#: app_Main.py:3005 -msgid "it will be welcomed with joy" -msgstr "es wird mit Freude begrüßt" - -#: app_Main.py:3006 -msgid "it will give me a reason to continue" -msgstr "es wird mir einen Grund geben, fortzufahren" - -#: app_Main.py:3036 +#: app_Main.py:3183 msgid "Contribute" msgstr "Beisteuern" -#: app_Main.py:3059 +#: app_Main.py:3206 msgid "Links Exchange" msgstr "Links austauschen" -#: app_Main.py:3071 app_Main.py:3090 +#: app_Main.py:3218 app_Main.py:3237 msgid "Soon ..." msgstr "Bald ..." -#: app_Main.py:3078 +#: app_Main.py:3225 msgid "How To's" msgstr "How To's" -#: app_Main.py:3186 +#: app_Main.py:3337 msgid "" "This entry will resolve to another website if:\n" "\n" @@ -17574,32 +18906,32 @@ msgstr "" "Wenn Sie keine Informationen zu FlatCAM beta erhalten können\n" "Verwenden Sie den Link zum YouTube-Kanal im Menü Hilfe." -#: app_Main.py:3193 +#: app_Main.py:3344 msgid "Alternative website" msgstr "Alternative Website" -#: app_Main.py:3544 +#: app_Main.py:3695 msgid "Selected Excellon file extensions registered with FlatCAM." msgstr "" "Ausgewählte Excellon-Dateierweiterungen, die bei FlatCAM registriert sind." -#: app_Main.py:3566 +#: app_Main.py:3717 msgid "Selected GCode file extensions registered with FlatCAM." msgstr "" "Ausgewählte GCode-Dateierweiterungen, die bei FlatCAM registriert sind." -#: app_Main.py:3588 +#: app_Main.py:3739 msgid "Selected Gerber file extensions registered with FlatCAM." msgstr "" "Ausgewählte Gerber-Dateierweiterungen, die bei FlatCAM registriert sind." -#: app_Main.py:3776 app_Main.py:3835 app_Main.py:3863 +#: app_Main.py:3927 app_Main.py:3988 app_Main.py:4018 msgid "At least two objects are required for join. Objects currently selected" msgstr "" "Zum Verbinden sind mindestens zwei Objekte erforderlich. Derzeit ausgewählte " "Objekte" -#: app_Main.py:3785 +#: app_Main.py:3936 msgid "" "Failed join. The Geometry objects are of different types.\n" "At least one is MultiGeo type and the other is SingleGeo type. A possibility " @@ -17617,52 +18949,52 @@ msgstr "" "und das Ergebnis entspricht möglicherweise nicht dem, was erwartet wurde.\n" "Überprüfen Sie den generierten GCODE." -#: app_Main.py:3797 app_Main.py:3807 +#: app_Main.py:3950 app_Main.py:3960 msgid "Geometry merging finished" msgstr "Zusammenführung der Geometrien beendet" -#: app_Main.py:3830 +#: app_Main.py:3983 msgid "Failed. Excellon joining works only on Excellon objects." msgstr "" "Gescheitert. Die Zusammenfügung von Excellon funktioniert nur bei Excellon-" "Objekten." -#: app_Main.py:3840 +#: app_Main.py:3995 msgid "Excellon merging finished" msgstr "Excellon-Bearbeitung abgeschlossen" -#: app_Main.py:3858 +#: app_Main.py:4013 msgid "Failed. Gerber joining works only on Gerber objects." msgstr "" "Gescheitert. Das Zusammenfügen für Gerber-Objekte funktioniert nur bei " "Gerber-Objekten." -#: app_Main.py:3868 +#: app_Main.py:4023 msgid "Gerber merging finished" msgstr "Erledigt. Gerber-Bearbeitung beendet" -#: app_Main.py:3888 app_Main.py:3925 +#: app_Main.py:4043 app_Main.py:4080 msgid "Failed. Select a Geometry Object and try again." msgstr "" "Gescheitert. Wählen Sie ein Geometrieobjekt aus und versuchen Sie es erneut." -#: app_Main.py:3892 app_Main.py:3930 +#: app_Main.py:4047 app_Main.py:4085 msgid "Expected a GeometryObject, got" msgstr "Erwartet ein GeometryObject, bekam" -#: app_Main.py:3907 +#: app_Main.py:4062 msgid "A Geometry object was converted to MultiGeo type." msgstr "Ein Geometrieobjekt wurde in den MultiGeo-Typ konvertiert." -#: app_Main.py:3945 +#: app_Main.py:4100 msgid "A Geometry object was converted to SingleGeo type." msgstr "Ein Geometrieobjekt wurde in den SingleGeo-Typ konvertiert." -#: app_Main.py:4152 +#: app_Main.py:4333 msgid "Toggle Units" msgstr "Einheiten wechseln" -#: app_Main.py:4156 +#: app_Main.py:4337 msgid "" "Changing the units of the project\n" "will scale all objects.\n" @@ -17674,28 +19006,24 @@ msgstr "" "aller Objekte entsprechend skaliert.\n" "Wollen Sie Fortsetzen?" -#: app_Main.py:4159 app_Main.py:4346 app_Main.py:4429 app_Main.py:6933 -#: app_Main.py:6949 app_Main.py:7287 app_Main.py:7299 +#: app_Main.py:4340 app_Main.py:4503 app_Main.py:4586 app_Main.py:7304 +#: app_Main.py:7320 app_Main.py:7658 app_Main.py:7670 msgid "Ok" msgstr "Ok" -#: app_Main.py:4209 +#: app_Main.py:4390 msgid "Converted units to" msgstr "Einheiten wurden umgerechnet in" -#: app_Main.py:4244 -msgid "Detachable Tabs" -msgstr "Abnehmbare Laschen" - -#: app_Main.py:4273 +#: app_Main.py:4430 msgid "Workspace enabled." msgstr "Arbeitsbereich aktiviert." -#: app_Main.py:4276 +#: app_Main.py:4433 msgid "Workspace disabled." msgstr "Arbeitsbereich deaktiviert." -#: app_Main.py:4340 +#: app_Main.py:4497 msgid "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." @@ -17704,11 +19032,11 @@ msgstr "" "ist.\n" "Gehen Sie zu Einstellungen -> Allgemein - Erweiterte Optionen anzeigen." -#: app_Main.py:4422 +#: app_Main.py:4579 msgid "Delete objects" msgstr "Objekte löschen" -#: app_Main.py:4427 +#: app_Main.py:4584 msgid "" "Are you sure you want to permanently delete\n" "the selected objects?" @@ -17716,92 +19044,92 @@ msgstr "" "Möchten Sie die ausgewählten Objekte\n" "wirklich dauerhaft löschen?" -#: app_Main.py:4471 +#: app_Main.py:4627 msgid "Object(s) deleted" msgstr "Objekt (e) gelöscht" -#: app_Main.py:4475 +#: app_Main.py:4631 msgid "Save the work in Editor and try again ..." msgstr "Speichern Sie den Editor und versuchen Sie es erneut ..." -#: app_Main.py:4504 +#: app_Main.py:4660 msgid "Object deleted" msgstr "Objekt (e) gelöscht" -#: app_Main.py:4531 +#: app_Main.py:4687 msgid "Click to set the origin ..." msgstr "Klicken Sie hier, um den Ursprung festzulegen ..." -#: app_Main.py:4553 +#: app_Main.py:4709 msgid "Setting Origin..." msgstr "Ursprung setzten ..." -#: app_Main.py:4566 app_Main.py:4668 +#: app_Main.py:4722 app_Main.py:4824 msgid "Origin set" msgstr "Ursprung gesetzt" -#: app_Main.py:4583 +#: app_Main.py:4739 msgid "Origin coordinates specified but incomplete." msgstr "Ursprungskoordinaten angegeben, aber unvollständig." -#: app_Main.py:4624 +#: app_Main.py:4780 msgid "Moving to Origin..." msgstr "Umzug zum Ursprung ..." -#: app_Main.py:4705 +#: app_Main.py:4861 msgid "Jump to ..." msgstr "Springen zu ..." -#: app_Main.py:4706 +#: app_Main.py:4862 msgid "Enter the coordinates in format X,Y:" msgstr "Geben Sie die Koordinaten im Format X, Y ein:" -#: app_Main.py:4716 +#: app_Main.py:4872 msgid "Wrong coordinates. Enter coordinates in format: X,Y" msgstr "Falsche Koordinaten. Koordinaten im Format eingeben: X, Y" -#: app_Main.py:4834 +#: app_Main.py:4989 msgid "Bottom-Left" msgstr "Unten links" -#: app_Main.py:4837 +#: app_Main.py:4992 msgid "Top-Right" msgstr "Oben rechts" -#: app_Main.py:4858 +#: app_Main.py:5013 msgid "Locate ..." msgstr "Lokalisieren ..." -#: app_Main.py:5131 app_Main.py:5208 +#: app_Main.py:5286 app_Main.py:5361 app_Main.py:5524 msgid "No object is selected. Select an object and try again." msgstr "" "Es ist kein Objekt ausgewählt. Wählen Sie ein Objekt und versuchen Sie es " "erneut." -#: app_Main.py:5234 +#: app_Main.py:5550 msgid "" "Aborting. The current task will be gracefully closed as soon as possible..." msgstr "" "Abbrechen. Die aktuelle Aufgabe wird so schnell wie möglich ordnungsgemäß " "abgeschlossen ..." -#: app_Main.py:5240 +#: app_Main.py:5556 msgid "The current task was gracefully closed on user request..." msgstr "" "Die aktuelle Aufgabe wurde auf Benutzeranforderung ordnungsgemäß " "geschlossen ..." -#: app_Main.py:5415 +#: app_Main.py:5746 msgid "Tools in Tools Database edited but not saved." msgstr "Werkzeugdatenbank geschlossen ohne zu speichern." -#: app_Main.py:5454 +#: app_Main.py:5785 msgid "Adding tool from DB is not allowed for this object." msgstr "" "Das Hinzufügen von Werkzeugen aus der Datenbank ist für dieses Objekt nicht " "zulässig." -#: app_Main.py:5472 +#: app_Main.py:5803 msgid "" "One or more Tools are edited.\n" "Do you want to update the Tools Database?" @@ -17809,113 +19137,113 @@ msgstr "" "Ein oder mehrere Werkzeuge wurden geändert.\n" "Möchten Sie die Werkzeugdatenbank aktualisieren?" -#: app_Main.py:5474 +#: app_Main.py:5805 msgid "Save Tools Database" msgstr "Werkzeugdatenbank speichern" -#: app_Main.py:5528 +#: app_Main.py:5851 msgid "No object selected to Flip on Y axis." msgstr "Kein Objekt ausgewählt, um auf der Y-Achse zu spiegeln." -#: app_Main.py:5554 +#: app_Main.py:5877 msgid "Flip on Y axis done." msgstr "Y-Achse spiegeln fertig." -#: app_Main.py:5576 +#: app_Main.py:5899 msgid "No object selected to Flip on X axis." msgstr "Es wurde kein Objekt zum Spiegeln auf der X-Achse ausgewählt." -#: app_Main.py:5602 +#: app_Main.py:5925 msgid "Flip on X axis done." msgstr "Flip on X axis done." -#: app_Main.py:5624 +#: app_Main.py:5947 msgid "No object selected to Rotate." msgstr "Es wurde kein Objekt zum Drehen ausgewählt." -#: app_Main.py:5627 app_Main.py:5678 app_Main.py:5715 +#: app_Main.py:5950 app_Main.py:6001 app_Main.py:6038 msgid "Transform" msgstr "Verwandeln" -#: app_Main.py:5627 app_Main.py:5678 app_Main.py:5715 +#: app_Main.py:5950 app_Main.py:6001 app_Main.py:6038 msgid "Enter the Angle value:" msgstr "Geben Sie den Winkelwert ein:" -#: app_Main.py:5657 +#: app_Main.py:5980 msgid "Rotation done." msgstr "Rotation abgeschlossen." -#: app_Main.py:5659 +#: app_Main.py:5982 msgid "Rotation movement was not executed." msgstr "Drehbewegung wurde nicht ausgeführt." -#: app_Main.py:5676 +#: app_Main.py:5999 msgid "No object selected to Skew/Shear on X axis." msgstr "Auf der X-Achse wurde kein Objekt zum Neigen / Schneiden ausgewählt." -#: app_Main.py:5697 +#: app_Main.py:6020 msgid "Skew on X axis done." msgstr "Neigung auf der X-Achse." -#: app_Main.py:5713 +#: app_Main.py:6036 msgid "No object selected to Skew/Shear on Y axis." msgstr "Kein Objekt für Neigung / Schneiden auf der Y-Achse ausgewählt." -#: app_Main.py:5734 +#: app_Main.py:6057 msgid "Skew on Y axis done." msgstr "Neigung auf der Y-Achse." -#: app_Main.py:5812 +#: app_Main.py:6139 msgid "New Grid ..." msgstr "Neues Raster ..." -#: app_Main.py:5813 +#: app_Main.py:6140 msgid "Enter a Grid Value:" msgstr "Geben Sie einen Rasterwert ein:" -#: app_Main.py:5821 app_Main.py:5845 +#: app_Main.py:6148 app_Main.py:6172 msgid "Please enter a grid value with non-zero value, in Float format." msgstr "" "Bitte geben Sie im Float-Format einen Rasterwert mit einem Wert ungleich " "Null ein." -#: app_Main.py:5826 +#: app_Main.py:6153 msgid "New Grid added" msgstr "Neues Raster" -#: app_Main.py:5828 +#: app_Main.py:6155 msgid "Grid already exists" msgstr "Netz existiert bereits" -#: app_Main.py:5830 +#: app_Main.py:6157 msgid "Adding New Grid cancelled" msgstr "Neues Netz wurde abgebrochen" -#: app_Main.py:5851 +#: app_Main.py:6178 msgid " Grid Value does not exist" msgstr " Rasterwert existiert nicht" -#: app_Main.py:5853 +#: app_Main.py:6180 msgid "Grid Value deleted" msgstr "Rasterwert gelöscht" -#: app_Main.py:5855 +#: app_Main.py:6182 msgid "Delete Grid value cancelled" msgstr "Rasterwert löschen abgebrochen" -#: app_Main.py:5861 +#: app_Main.py:6188 msgid "Key Shortcut List" msgstr "Tastenkürzel Liste" -#: app_Main.py:5895 +#: app_Main.py:6225 msgid " No object selected to copy it's name" msgstr " Kein Objekt zum Kopieren des Namens ausgewählt" -#: app_Main.py:5899 +#: app_Main.py:6229 msgid "Name copied on clipboard ..." msgstr "Name in Zwischenablage kopiert ..." -#: app_Main.py:6532 +#: app_Main.py:6869 msgid "" "There are files/objects opened in FlatCAM.\n" "Creating a New project will delete them.\n" @@ -17925,12 +19253,12 @@ msgstr "" "Wenn Sie ein neues Projekt erstellen, werden diese gelöscht.\n" "Möchten Sie das Projekt speichern?" -#: app_Main.py:6555 +#: app_Main.py:6892 msgid "New Project created" msgstr "Neues Projekt erstellt" -#: app_Main.py:6727 app_Main.py:6766 app_Main.py:6810 app_Main.py:6880 -#: app_Main.py:7674 app_Main.py:8887 app_Main.py:8949 +#: app_Main.py:7098 app_Main.py:7137 app_Main.py:7181 app_Main.py:7251 +#: app_Main.py:8037 app_Main.py:9284 app_Main.py:9346 msgid "" "Canvas initialization started.\n" "Canvas initialization finished in" @@ -17938,296 +19266,301 @@ msgstr "" "Die Canvas-Initialisierung wurde gestartet.\n" "Canvas-Initialisierung abgeschlossen in" -#: app_Main.py:6729 +#: app_Main.py:7100 msgid "Opening Gerber file." msgstr "Gerber-Datei öffnen." -#: app_Main.py:6768 +#: app_Main.py:7139 msgid "Opening Excellon file." msgstr "Excellon-Datei öffnen." -#: app_Main.py:6799 app_Main.py:6804 +#: app_Main.py:7170 app_Main.py:7175 msgid "Open G-Code" msgstr "G-Code öffnen" -#: app_Main.py:6812 +#: app_Main.py:7183 msgid "Opening G-Code file." msgstr "Öffnen der G-Code-Datei." -#: app_Main.py:6871 app_Main.py:6875 +#: app_Main.py:7242 app_Main.py:7246 msgid "Open HPGL2" msgstr "HPGL2 öffnen" -#: app_Main.py:6882 +#: app_Main.py:7253 msgid "Opening HPGL2 file." msgstr "HPGL2-Datei öffnen." -#: app_Main.py:6905 app_Main.py:6908 +#: app_Main.py:7276 app_Main.py:7279 msgid "Open Configuration File" msgstr "Einstellungsdatei öffne" -#: app_Main.py:6928 app_Main.py:7282 +#: app_Main.py:7299 app_Main.py:7653 msgid "Please Select a Geometry object to export" msgstr "Bitte wählen Sie ein Geometrieobjekt zum Exportieren aus" -#: app_Main.py:6944 +#: app_Main.py:7315 msgid "Only Geometry, Gerber and CNCJob objects can be used." msgstr "Es können nur Geometrie-, Gerber- und CNCJob-Objekte verwendet werden." -#: app_Main.py:6989 +#: app_Main.py:7360 msgid "Data must be a 3D array with last dimension 3 or 4" msgstr "Daten müssen ein 3D-Array mit der letzten Dimension 3 oder 4 sein" -#: app_Main.py:6995 app_Main.py:6999 +#: app_Main.py:7366 app_Main.py:7370 msgid "Export PNG Image" msgstr "PNG-Bild exportieren" -#: app_Main.py:7032 app_Main.py:7242 +#: app_Main.py:7403 app_Main.py:7613 msgid "Failed. Only Gerber objects can be saved as Gerber files..." msgstr "" "Fehlgeschlagen. Nur Gerber-Objekte können als Gerber-Dateien gespeichert " "werden ..." -#: app_Main.py:7044 +#: app_Main.py:7415 msgid "Save Gerber source file" msgstr "Gerber-Quelldatei speichern" -#: app_Main.py:7073 +#: app_Main.py:7444 msgid "Failed. Only Script objects can be saved as TCL Script files..." msgstr "" "Gescheitert. Nur Skriptobjekte können als TCL-Skriptdateien gespeichert " "werden ..." -#: app_Main.py:7085 +#: app_Main.py:7456 msgid "Save Script source file" msgstr "Speichern Sie die Quelldatei des Skripts" -#: app_Main.py:7114 +#: app_Main.py:7485 msgid "Failed. Only Document objects can be saved as Document files..." msgstr "" "Gescheitert. Nur Dokumentobjekte können als Dokumentdateien gespeichert " "werden ..." -#: app_Main.py:7126 +#: app_Main.py:7497 msgid "Save Document source file" msgstr "Speichern Sie die Quelldatei des Dokuments" -#: app_Main.py:7156 app_Main.py:7198 app_Main.py:8157 +#: app_Main.py:7527 app_Main.py:7569 app_Main.py:8520 msgid "Failed. Only Excellon objects can be saved as Excellon files..." msgstr "" "Fehlgeschlagen. Nur Excellon-Objekte können als Excellon-Dateien gespeichert " "werden ..." -#: app_Main.py:7164 app_Main.py:7169 +#: app_Main.py:7535 app_Main.py:7540 msgid "Save Excellon source file" msgstr "Speichern Sie die Excellon-Quelldatei" -#: app_Main.py:7206 app_Main.py:7210 +#: app_Main.py:7577 app_Main.py:7581 msgid "Export Excellon" msgstr "Excellon exportieren" -#: app_Main.py:7250 app_Main.py:7254 +#: app_Main.py:7621 app_Main.py:7625 msgid "Export Gerber" msgstr "Gerber exportieren" -#: app_Main.py:7294 +#: app_Main.py:7665 msgid "Only Geometry objects can be used." msgstr "Es können nur Geometrieobjekte verwendet werden." -#: app_Main.py:7310 app_Main.py:7314 +#: app_Main.py:7681 app_Main.py:7685 msgid "Export DXF" msgstr "DXF exportieren" -#: app_Main.py:7339 app_Main.py:7342 +#: app_Main.py:7710 app_Main.py:7713 msgid "Import SVG" msgstr "SVG importieren" -#: app_Main.py:7370 app_Main.py:7374 +#: app_Main.py:7741 app_Main.py:7745 msgid "Import DXF" msgstr "Importieren Sie DXF" -#: app_Main.py:7424 -msgid "Viewing the source code of the selected object." -msgstr "Anzeigen des Quellcodes des ausgewählten Objekts." - -#: app_Main.py:7431 app_Main.py:7435 +#: app_Main.py:7799 app_Main.py:7803 msgid "Select an Gerber or Excellon file to view it's source file." msgstr "" "Wählen Sie eine Gerber- oder Excellon-Datei aus, um die Quelldatei " "anzuzeigen." -#: app_Main.py:7449 +#: app_Main.py:7806 +msgid "Viewing the source code of the selected object." +msgstr "Anzeigen des Quellcodes des ausgewählten Objekts." + +#: app_Main.py:7820 msgid "Source Editor" msgstr "Quelleditor" -#: app_Main.py:7489 app_Main.py:7496 +#: app_Main.py:7856 app_Main.py:7863 msgid "There is no selected object for which to see it's source file code." msgstr "" "Es gibt kein ausgewähltes Objekt, für das man seinen Quelldateien sehen kann." -#: app_Main.py:7508 +#: app_Main.py:7871 msgid "Failed to load the source code for the selected object" msgstr "Fehler beim Laden des Quellcodes für das ausgewählte Objekt" -#: app_Main.py:7544 +#: app_Main.py:7904 msgid "Go to Line ..." msgstr "Gehe zur Linie ..." -#: app_Main.py:7545 +#: app_Main.py:7905 msgid "Line:" msgstr "Linie:" -#: app_Main.py:7572 +#: app_Main.py:7932 msgid "New TCL script file created in Code Editor." msgstr "Neue TCL-Skriptdatei, die im Code-Editor erstellt wurde." -#: app_Main.py:7608 app_Main.py:7610 app_Main.py:7646 app_Main.py:7648 +#: app_Main.py:7971 app_Main.py:7973 app_Main.py:8009 app_Main.py:8011 msgid "Open TCL script" msgstr "Öffnen Sie das TCL-Skript" -#: app_Main.py:7676 +#: app_Main.py:8039 msgid "Executing ScriptObject file." msgstr "Ausführen der ScriptObject-Datei." -#: app_Main.py:7684 app_Main.py:7687 +#: app_Main.py:8047 app_Main.py:8050 msgid "Run TCL script" msgstr "Führen Sie das TCL-Skript aus" -#: app_Main.py:7710 +#: app_Main.py:8073 msgid "TCL script file opened in Code Editor and executed." msgstr "TCL-Skriptdatei im Code-Editor geöffnet und ausgeführt." -#: app_Main.py:7761 app_Main.py:7767 +#: app_Main.py:8124 app_Main.py:8130 msgid "Save Project As ..." msgstr "Projekt speichern als ..." -#: app_Main.py:7802 +#: app_Main.py:8165 msgid "FlatCAM objects print" msgstr "FlatCAM-Objekte werden gedruckt" -#: app_Main.py:7815 app_Main.py:7822 +#: app_Main.py:8178 app_Main.py:8185 msgid "Save Object as PDF ..." msgstr "Objekt als PDF speichern ..." -#: app_Main.py:7831 +#: app_Main.py:8194 msgid "Printing PDF ... Please wait." msgstr "PDF wird gedruckt ... Bitte warten." -#: app_Main.py:8010 +#: app_Main.py:8373 msgid "PDF file saved to" msgstr "PDF-Datei gespeichert in" -#: app_Main.py:8035 +#: app_Main.py:8398 msgid "Exporting SVG" msgstr "SVG exportieren" -#: app_Main.py:8078 +#: app_Main.py:8441 msgid "SVG file exported to" msgstr "SVG-Datei exportiert nach" -#: app_Main.py:8104 -msgid "" -"Save cancelled because source file is empty. Try to export the Gerber file." +#: app_Main.py:8467 +#, fuzzy +#| msgid "" +#| "Save cancelled because source file is empty. Try to export the Gerber " +#| "file." +msgid "Save cancelled because source file is empty. Try to export the file." msgstr "" "Speichern abgebrochen, da die Quelldatei leer ist. Versuchen Sie einen " "Export der Gerber Datei." -#: app_Main.py:8251 +#: app_Main.py:8618 msgid "Excellon file exported to" msgstr "Excellon-Datei exportiert nach" -#: app_Main.py:8260 +#: app_Main.py:8627 msgid "Exporting Excellon" msgstr "Excellon exportieren" -#: app_Main.py:8265 app_Main.py:8272 +#: app_Main.py:8632 app_Main.py:8639 msgid "Could not export Excellon file." msgstr "Excellon-Datei konnte nicht exportiert werden." -#: app_Main.py:8387 +#: app_Main.py:8755 msgid "Gerber file exported to" msgstr "Gerberdatei exportiert nach" -#: app_Main.py:8395 +#: app_Main.py:8763 msgid "Exporting Gerber" msgstr "Gerber exportieren" -#: app_Main.py:8400 app_Main.py:8407 -msgid "Could not export Gerber file." -msgstr "Gerber-Datei konnte nicht exportiert werden." +#: app_Main.py:8768 app_Main.py:8775 +#, fuzzy +#| msgid "Could not export DXF file." +msgid "Could not export file." +msgstr "DXF-Datei konnte nicht exportiert werden." -#: app_Main.py:8442 +#: app_Main.py:8823 msgid "DXF file exported to" msgstr "DXF-Datei exportiert nach" -#: app_Main.py:8448 +#: app_Main.py:8832 msgid "Exporting DXF" msgstr "DXF exportieren" -#: app_Main.py:8453 app_Main.py:8460 +#: app_Main.py:8837 app_Main.py:8844 msgid "Could not export DXF file." msgstr "DXF-Datei konnte nicht exportiert werden." -#: app_Main.py:8494 +#: app_Main.py:8886 msgid "Importing SVG" msgstr "SVG importieren" -#: app_Main.py:8502 app_Main.py:8548 +#: app_Main.py:8894 app_Main.py:8949 msgid "Import failed." msgstr "Import fehlgeschlagen." -#: app_Main.py:8540 +#: app_Main.py:8941 msgid "Importing DXF" msgstr "DXF importieren" -#: app_Main.py:8581 app_Main.py:8776 app_Main.py:8841 +#: app_Main.py:8982 app_Main.py:9173 app_Main.py:9238 msgid "Failed to open file" msgstr "Datei konnte nicht geöffnet werden" -#: app_Main.py:8584 app_Main.py:8779 app_Main.py:8844 +#: app_Main.py:8985 app_Main.py:9176 app_Main.py:9241 msgid "Failed to parse file" msgstr "Datei konnte nicht analysiert werden" -#: app_Main.py:8596 +#: app_Main.py:8997 msgid "Object is not Gerber file or empty. Aborting object creation." msgstr "" "Objekt ist keine Gerberdatei oder leer. Objekterstellung wird abgebrochen." -#: app_Main.py:8601 +#: app_Main.py:9002 msgid "Opening Gerber" msgstr "Gerber öffnen" -#: app_Main.py:8612 +#: app_Main.py:9013 msgid "Open Gerber failed. Probable not a Gerber file." msgstr "Open Gerber ist fehlgeschlagen. Wahrscheinlich keine Gerber-Datei." -#: app_Main.py:8648 +#: app_Main.py:9046 msgid "Cannot open file" msgstr "Kann Datei nicht öffnen" -#: app_Main.py:8669 +#: app_Main.py:9066 msgid "Opening Excellon." msgstr "Eröffnung Excellon." -#: app_Main.py:8679 +#: app_Main.py:9076 msgid "Open Excellon file failed. Probable not an Excellon file." msgstr "" "Die Excellon-Datei konnte nicht geöffnet werden. Wahrscheinlich keine " "Excellon-Datei." -#: app_Main.py:8711 +#: app_Main.py:9108 msgid "Reading GCode file" msgstr "GCode-Datei wird gelesen" -#: app_Main.py:8724 +#: app_Main.py:9121 msgid "This is not GCODE" msgstr "Dies ist kein GCODE" -#: app_Main.py:8729 +#: app_Main.py:9126 msgid "Opening G-Code." msgstr "G-Code öffnen." -#: app_Main.py:8742 +#: app_Main.py:9139 msgid "" "Failed to create CNCJob Object. Probable not a GCode file. Try to load it " "from File menu.\n" @@ -18239,103 +19572,103 @@ msgstr "" "Der Versuch, ein FlatCAM CNCJob-Objekt aus einer G-Code-Datei zu erstellen, " "ist während der Verarbeitung fehlgeschlagen" -#: app_Main.py:8798 +#: app_Main.py:9195 msgid "Object is not HPGL2 file or empty. Aborting object creation." msgstr "" "Objekt ist keine HPGL2-Datei oder leer. Objekterstellung wird abgebrochen." -#: app_Main.py:8803 +#: app_Main.py:9200 msgid "Opening HPGL2" msgstr "HPGL2 öffnen" -#: app_Main.py:8810 +#: app_Main.py:9207 msgid " Open HPGL2 failed. Probable not a HPGL2 file." msgstr " HPGL2 öffnen ist fehlgeschlagen. Wahrscheinlich keine HPGL2-Datei." -#: app_Main.py:8836 +#: app_Main.py:9233 msgid "TCL script file opened in Code Editor." msgstr "TCL-Skriptdatei im Code-Editor geöffnet." -#: app_Main.py:8856 +#: app_Main.py:9253 msgid "Opening TCL Script..." msgstr "TCL-Skript wird geöffnet ..." -#: app_Main.py:8867 +#: app_Main.py:9264 msgid "Failed to open TCL Script." msgstr "TCL-Skript konnte nicht geöffnet werden." -#: app_Main.py:8889 +#: app_Main.py:9286 msgid "Opening FlatCAM Config file." msgstr "Öffnen der FlatCAM Config-Datei." -#: app_Main.py:8917 +#: app_Main.py:9314 msgid "Failed to open config file" msgstr "Fehler beim Öffnen der Konfigurationsdatei" -#: app_Main.py:8946 +#: app_Main.py:9343 msgid "Loading Project ... Please Wait ..." msgstr "Projekt wird geladen ... Bitte warten ..." -#: app_Main.py:8951 +#: app_Main.py:9348 msgid "Opening FlatCAM Project file." msgstr "Öffnen der FlatCAM-Projektdatei." -#: app_Main.py:8966 app_Main.py:8970 app_Main.py:8987 +#: app_Main.py:9363 app_Main.py:9367 app_Main.py:9384 msgid "Failed to open project file" msgstr "Projektdatei konnte nicht geöffnet werden" -#: app_Main.py:9024 +#: app_Main.py:9423 msgid "Loading Project ... restoring" msgstr "Projekt wird geladen ... wird wiederhergestellt" -#: app_Main.py:9034 +#: app_Main.py:9431 msgid "Project loaded from" msgstr "Projekt geladen von" -#: app_Main.py:9060 +#: app_Main.py:9457 msgid "Redrawing all objects" msgstr "Alle Objekte neu zeichnen" -#: app_Main.py:9148 +#: app_Main.py:9545 msgid "Failed to load recent item list." msgstr "Fehler beim Laden der letzten Elementliste." -#: app_Main.py:9155 +#: app_Main.py:9552 msgid "Failed to parse recent item list." msgstr "Liste der letzten Artikel konnte nicht analysiert werden." -#: app_Main.py:9165 +#: app_Main.py:9562 msgid "Failed to load recent projects item list." msgstr "Fehler beim Laden der Artikelliste der letzten Projekte." -#: app_Main.py:9172 +#: app_Main.py:9569 msgid "Failed to parse recent project item list." msgstr "" "Fehler beim Analysieren der Liste der zuletzt verwendeten Projektelemente." -#: app_Main.py:9233 +#: app_Main.py:9630 msgid "Clear Recent projects" msgstr "Letzte Projekte löschen" -#: app_Main.py:9257 +#: app_Main.py:9654 msgid "Clear Recent files" msgstr "Letzte Dateien löschen" -#: app_Main.py:9359 +#: app_Main.py:9756 msgid "Selected Tab - Choose an Item from Project Tab" msgstr "" "Ausgewählte Registerkarte - Wählen Sie ein Element auf der Registerkarte " "\"Projekt\" aus" -#: app_Main.py:9360 +#: app_Main.py:9757 msgid "Details" msgstr "Einzelheiten" -#: app_Main.py:9362 +#: app_Main.py:9759 msgid "The normal flow when working with the application is the following:" msgstr "Der normale Ablauf bei der Arbeit mit der Anwendung ist folgender:" -#: app_Main.py:9363 +#: app_Main.py:9760 msgid "" "Load/Import a Gerber, Excellon, Gcode, DXF, Raster Image or SVG file into " "the application using either the toolbars, key shortcuts or even dragging " @@ -18345,7 +19678,7 @@ msgstr "" "SVG-Datei in die Anwendung mithilfe der Symbolleisten, Tastenkombinationen " "oder sogar Ziehen und Ablegen der Dateien auf der GUI." -#: app_Main.py:9366 +#: app_Main.py:9763 msgid "" "You can also load a project by double clicking on the project file, drag and " "drop of the file into the GUI or through the menu (or toolbar) actions " @@ -18355,7 +19688,7 @@ msgstr "" "doppelklicken, die Datei per Drag & Drop in die GUI oder über die in der App " "angebotenen Menü- (oder Symbolleisten-) Aktionen ziehen." -#: app_Main.py:9369 +#: app_Main.py:9766 msgid "" "Once an object is available in the Project Tab, by selecting it and then " "focusing on SELECTED TAB (more simpler is to double click the object name in " @@ -18368,7 +19701,7 @@ msgstr "" "AUSGEWÄHLTES TAB mit den Objekteigenschaften entsprechend der Art " "aktualisiert: Gerber, Excellon-, Geometrie- oder CNCJob-Objekt." -#: app_Main.py:9373 +#: app_Main.py:9770 msgid "" "If the selection of the object is done on the canvas by single click " "instead, and the SELECTED TAB is in focus, again the object properties will " @@ -18383,7 +19716,7 @@ msgstr "" "doppelklicken, um das Ausgewählte Registerkarte zu öffnen und es zu füllen, " "selbst wenn es unscharf war." -#: app_Main.py:9377 +#: app_Main.py:9774 msgid "" "You can change the parameters in this screen and the flow direction is like " "this:" @@ -18391,7 +19724,7 @@ msgstr "" "Sie können die Parameter in diesem Bildschirm ändern und die Flussrichtung " "ist wie folgt:" -#: app_Main.py:9378 +#: app_Main.py:9775 msgid "" "Gerber/Excellon Object --> Change Parameter --> Generate Geometry --> " "Geometry Object --> Add tools (change param in Selected Tab) --> Generate " @@ -18404,7 +19737,7 @@ msgstr "" "überprüfen (über CNC bearbeiten) Code) und / oder GCode anhängen / " "voranstellen (ebenfalls in Ausgewählte Registerkarte) -> GCode speichern." -#: app_Main.py:9382 +#: app_Main.py:9779 msgid "" "A list of key shortcuts is available through an menu entry in Help --> " "Shortcuts List or through its own key shortcut: F3." @@ -18413,33 +19746,33 @@ msgstr "" "der Hilfe -> Liste der Tastenkombinationen oder über eine eigene " "Tastenkombination: F3." -#: app_Main.py:9446 +#: app_Main.py:9843 msgid "Failed checking for latest version. Could not connect." msgstr "" "Fehler bei der Suche nach der neuesten Version. Konnte keine Verbindung " "herstellen." -#: app_Main.py:9453 +#: app_Main.py:9850 msgid "Could not parse information about latest version." msgstr "Informationen zur neuesten Version konnten nicht analysiert werden." -#: app_Main.py:9463 +#: app_Main.py:9860 msgid "FlatCAM is up to date!" msgstr "FlatCAM ist auf dem neuesten Version!" -#: app_Main.py:9468 +#: app_Main.py:9865 msgid "Newer Version Available" msgstr "Neuere Version verfügbar" -#: app_Main.py:9470 +#: app_Main.py:9867 msgid "There is a newer version of FlatCAM available for download:" msgstr "Es gibt eine neuere Version von FlatCAM zum Download:" -#: app_Main.py:9474 +#: app_Main.py:9871 msgid "info" msgstr "Info" -#: app_Main.py:9502 +#: app_Main.py:9899 msgid "" "OpenGL canvas initialization failed. HW or HW configuration not supported." "Change the graphic engine to Legacy(2D) in Edit -> Preferences -> General " @@ -18451,63 +19784,63 @@ msgstr "" "Einstellungen -> Registerkarte Allgemein in Legacy (2D).\n" "\n" -#: app_Main.py:9580 +#: app_Main.py:9977 msgid "All plots disabled." msgstr "Alle Diagramme sind deaktiviert." -#: app_Main.py:9587 +#: app_Main.py:9984 msgid "All non selected plots disabled." msgstr "Alle nicht ausgewählten Diagramme sind deaktiviert." -#: app_Main.py:9594 +#: app_Main.py:9991 msgid "All plots enabled." msgstr "Alle Diagramme aktiviert." -#: app_Main.py:9600 +#: app_Main.py:9997 msgid "Selected plots enabled..." msgstr "Ausgewählte Diagramme aktiviert ..." -#: app_Main.py:9608 +#: app_Main.py:10005 msgid "Selected plots disabled..." msgstr "Ausgewählte Diagramme deaktiviert ..." -#: app_Main.py:9641 +#: app_Main.py:10038 msgid "Enabling plots ..." msgstr "Diagramm aktivieren..." -#: app_Main.py:9690 +#: app_Main.py:10087 msgid "Disabling plots ..." msgstr "Diagramm deaktivieren..." -#: app_Main.py:9713 +#: app_Main.py:10110 msgid "Working ..." msgstr "Arbeiten ..." -#: app_Main.py:9822 +#: app_Main.py:10219 msgid "Set alpha level ..." msgstr "Alpha-Level einstellen ..." -#: app_Main.py:9876 +#: app_Main.py:10285 msgid "Saving FlatCAM Project" msgstr "FlatCAM-Projekt speichern" -#: app_Main.py:9897 app_Main.py:9933 +#: app_Main.py:10308 app_Main.py:10344 msgid "Project saved to" msgstr "Projekt gespeichert in" -#: app_Main.py:9904 +#: app_Main.py:10315 msgid "The object is used by another application." msgstr "Das Objekt wird von einer anderen Anwendung verwendet." -#: app_Main.py:9918 +#: app_Main.py:10329 msgid "Failed to verify project file" msgstr "Fehler beim Überprüfen der Projektdatei" -#: app_Main.py:9918 app_Main.py:9926 app_Main.py:9936 +#: app_Main.py:10329 app_Main.py:10337 app_Main.py:10347 msgid "Retry to save it." msgstr "Versuchen Sie erneut, es zu speichern." -#: app_Main.py:9926 app_Main.py:9936 +#: app_Main.py:10337 app_Main.py:10347 msgid "Failed to parse saved project file" msgstr "Fehler beim Parsen der Projektdatei" @@ -18519,59 +19852,59 @@ msgstr "FlatCAM Beta" msgid "G-Code from GERBERS" msgstr "G-Code von GERBERS" -#: camlib.py:596 +#: camlib.py:656 msgid "self.solid_geometry is neither BaseGeometry or list." msgstr "self.solid_geometry ist weder BaseGeometry noch eine Liste." -#: camlib.py:978 +#: camlib.py:1049 msgid "Pass" msgstr "Pass" -#: camlib.py:1000 +#: camlib.py:1071 msgid "Get Exteriors" msgstr "Holen Sie sich das Äußere" -#: camlib.py:1003 +#: camlib.py:1074 msgid "Get Interiors" msgstr "Holen Sie sich Innenräume" -#: camlib.py:2191 -msgid "Object was mirrored" -msgstr "Objekt wurde gespiegelt" - -#: camlib.py:2193 +#: camlib.py:2331 msgid "Failed to mirror. No object selected" msgstr "Spiegelung fehlgeschlagen Kein Objekt ausgewählt" -#: camlib.py:2258 +#: camlib.py:2396 msgid "Object was rotated" msgstr "Objekt wurde gedreht" -#: camlib.py:2260 +#: camlib.py:2398 msgid "Failed to rotate. No object selected" msgstr "Fehler beim Drehen. Kein Objekt ausgewählt" -#: camlib.py:2326 +#: camlib.py:2464 msgid "Object was skewed" msgstr "Objekt war schief" -#: camlib.py:2328 +#: camlib.py:2466 msgid "Failed to skew. No object selected" msgstr "Fehler beim Neigen Kein Objekt ausgewählt" -#: camlib.py:2404 +#: camlib.py:2542 msgid "Object was buffered" msgstr "Objekt wurde gepuffert" -#: camlib.py:2406 +#: camlib.py:2544 msgid "Failed to buffer. No object selected" msgstr "Fehler beim Puffern. Kein Objekt ausgewählt" -#: camlib.py:2649 +#: camlib.py:2793 msgid "There is no such parameter" msgstr "Es gibt keinen solchen Parameter" -#: camlib.py:2717 camlib.py:2969 camlib.py:3232 camlib.py:3488 +#: camlib.py:3000 camlib.py:4941 camlib.py:5701 +msgid "Indexing geometry before generating G-Code..." +msgstr "Indizierung der Geometrie vor dem Generieren von G-Code ..." + +#: camlib.py:3030 camlib.py:3665 camlib.py:3901 msgid "" "The Cut Z parameter has positive value. It is the depth value to drill into " "material.\n" @@ -18586,14 +19919,34 @@ msgstr "" "einen negativen Wert. \n" "Überprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:2725 camlib.py:2979 camlib.py:3242 camlib.py:3498 camlib.py:3823 -#: camlib.py:4223 -msgid "The Cut Z parameter is zero. There will be no cut, skipping file" +#: camlib.py:3037 +#, fuzzy +#| msgid "The Cut Z parameter is zero. There will be no cut, skipping file" +msgid "The Cut Z parameter is zero. There will be no cut, aborting" msgstr "" "Der Parameter Cut Z ist Null. Es wird kein Schnitt ausgeführt, und die Datei " "wird übersprungen" -#: camlib.py:2740 camlib.py:4191 +#: camlib.py:3164 camlib.py:5250 +msgid "The End X,Y format has to be (x, y)." +msgstr "" + +#: camlib.py:3240 camlib.py:3749 camlib.py:3982 camlib.py:5015 camlib.py:5341 +#: camlib.py:5778 +msgid "Starting G-Code for tool with diameter" +msgstr "Start-G-Code für Werkzeug mit Durchmesser" + +#: camlib.py:3365 camlib.py:3870 camlib.py:4103 camlib.py:6715 +msgid "G91 coordinates not implemented" +msgstr "G91 Koordinaten nicht implementiert" + +#: camlib.py:3374 +#, fuzzy, python-format +#| msgid "Finished G-Code generation" +msgid "Finished G-Code generation for tool: %s" +msgstr "Fertige G-Code-Generierung" + +#: camlib.py:3424 msgid "" "The Toolchange X,Y field in Edit -> Preferences has to be in the format (x, " "y) \n" @@ -18603,7 +19956,7 @@ msgstr "" "(x, y) sein\n" "Aber jetzt gibt es nur einen Wert, nicht zwei. " -#: camlib.py:2753 camlib.py:3770 camlib.py:4169 +#: camlib.py:3436 camlib.py:4850 camlib.py:5609 msgid "" "The End Move X,Y field in Edit -> Preferences has to be in the format (x, y) " "but now there is only one value, not two." @@ -18611,35 +19964,17 @@ msgstr "" "Das Feld Endverschiebung X, Y unter Bearbeiten -> Einstellungen muss das " "Format (x, y) haben, aber jetzt gibt es nur einen Wert, nicht zwei." -#: camlib.py:2841 -msgid "Creating a list of points to drill..." -msgstr "Erstellen einer Liste von Punkten zum Bohren ..." +#: camlib.py:3675 camlib.py:3911 camlib.py:4904 camlib.py:5191 camlib.py:5659 +msgid "The Cut Z parameter is zero. There will be no cut, skipping file" +msgstr "" +"Der Parameter Cut Z ist Null. Es wird kein Schnitt ausgeführt, und die Datei " +"wird übersprungen" -#: camlib.py:2865 -msgid "Failed. Drill points inside the exclusion zones." -msgstr "Gescheitert. Bohrpunkte innerhalb der Sperrzonen." - -#: camlib.py:2942 camlib.py:3921 camlib.py:4331 -msgid "Starting G-Code" -msgstr "G-Code starten" - -#: camlib.py:3083 camlib.py:3336 camlib.py:3534 camlib.py:3934 camlib.py:4342 -msgid "Starting G-Code for tool with diameter" -msgstr "Start-G-Code für Werkzeug mit Durchmesser" - -#: camlib.py:3200 camlib.py:3452 camlib.py:3654 -msgid "G91 coordinates not implemented" -msgstr "G91 Koordinaten nicht implementiert" - -#: camlib.py:3206 camlib.py:3459 camlib.py:3659 -msgid "The loaded Excellon file has no drills" -msgstr "Die geladene Excellon-Datei hat keine Bohrer" - -#: camlib.py:3682 +#: camlib.py:4757 msgid "Finished G-Code generation..." msgstr "Fertige G-Code-Generierung ..." -#: camlib.py:3792 +#: camlib.py:4873 msgid "" "The Toolchange X,Y field in Edit -> Preferences has to be in the format (x, " "y) \n" @@ -18649,7 +19984,7 @@ msgstr "" "das Format (x, y) haben.\n" "Aber jetzt gibt es nur einen Wert, nicht zwei." -#: camlib.py:3806 camlib.py:4206 +#: camlib.py:4887 camlib.py:5175 camlib.py:5642 msgid "" "Cut_Z parameter is None or zero. Most likely a bad combinations of other " "parameters." @@ -18657,7 +19992,7 @@ msgstr "" "Der Parameter Cut_Z ist None oder Null. Höchstwahrscheinlich eine schlechte " "Kombination anderer Parameter." -#: camlib.py:3815 camlib.py:4215 +#: camlib.py:4896 camlib.py:5183 camlib.py:5651 msgid "" "The Cut Z parameter has positive value. It is the depth value to cut into " "material.\n" @@ -18672,11 +20007,11 @@ msgstr "" "einen negativen Wert. \n" "Überprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:3828 camlib.py:4229 +#: camlib.py:4909 camlib.py:5196 camlib.py:5665 msgid "Travel Z parameter is None or zero." msgstr "Der Parameter für den Travel Z ist Kein oder Null." -#: camlib.py:3833 camlib.py:4234 +#: camlib.py:4914 camlib.py:5201 camlib.py:5670 msgid "" "The Travel Z parameter has negative value. It is the height value to travel " "between cuts.\n" @@ -18690,36 +20025,28 @@ msgstr "" "einen Tippfehler handelt, konvertiert die App den Wert in einen positiven " "Wert. Überprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:3841 camlib.py:4242 +#: camlib.py:4922 camlib.py:5209 camlib.py:5678 msgid "The Z Travel parameter is zero. This is dangerous, skipping file" msgstr "" "Der Parameter Z-Weg ist Null. Dies ist gefährlich, da die %s Datei " "übersprungen wird" -#: camlib.py:3860 camlib.py:4265 -msgid "Indexing geometry before generating G-Code..." -msgstr "Indizierung der Geometrie vor dem Generieren von G-Code ..." - -#: camlib.py:4008 camlib.py:4419 +#: camlib.py:5086 camlib.py:5447 camlib.py:5852 msgid "Finished G-Code generation" msgstr "Fertige G-Code-Generierung" -#: camlib.py:4008 +#: camlib.py:5086 camlib.py:5447 msgid "paths traced" msgstr "Pfade verfolgt" -#: camlib.py:4058 -msgid "Expected a Geometry, got" -msgstr "Erwartet eine Geometrie, erhalten" - -#: camlib.py:4065 +#: camlib.py:5500 msgid "" "Trying to generate a CNC Job from a Geometry object without solid_geometry." msgstr "" "Der Versuch, einen CNC-Auftrag aus einem Geometrieobjekt ohne solid_geometry " "zu generieren." -#: camlib.py:4106 +#: camlib.py:5542 msgid "" "The Tool Offset value is too negative to use for the current_geometry.\n" "Raise the value (in module) and try again." @@ -18728,39 +20055,57 @@ msgstr "" "Geometrie verwendet zu werden.\n" "Erhöhen Sie den Wert (im Modul) und versuchen Sie es erneut." -#: camlib.py:4419 +#: camlib.py:5852 msgid " paths traced." msgstr " Pfade verfolgt." -#: camlib.py:4447 +#: camlib.py:5880 msgid "There is no tool data in the SolderPaste geometry." msgstr "In der SolderPaste-Geometrie sind keine Werkzeugdaten vorhanden." -#: camlib.py:4536 +#: camlib.py:5969 msgid "Finished SolderPaste G-Code generation" msgstr "Fertige G-Code-Generierung für Lötpaste" -#: camlib.py:4536 +#: camlib.py:5969 msgid "paths traced." msgstr "paths traced." -#: camlib.py:4871 +#: camlib.py:6292 msgid "Parsing GCode file. Number of lines" msgstr "Analysieren der GCode-Datei. Anzahl der Zeilen" -#: camlib.py:4978 +#: camlib.py:6404 msgid "Creating Geometry from the parsed GCode file. " msgstr "Erstellen von Geometrie aus der analysierten GCode-Datei. " -#: camlib.py:5146 camlib.py:5419 camlib.py:5567 camlib.py:5736 +#: camlib.py:6461 +#, fuzzy +#| msgid "Starting G-Code for tool with diameter" +msgid "Parsing GCode file for tool diameter" +msgstr "Start-G-Code für Werkzeug mit Durchmesser" + +#: camlib.py:6462 +#, fuzzy +#| msgid "Nr of slots" +msgid "Number of lines" +msgstr "Anzahl der Slots" + +#: camlib.py:6551 +#, fuzzy +#| msgid "Creating Geometry from the parsed GCode file. " +msgid "Creating Geometry from the parsed GCode file for tool diameter" +msgstr "Erstellen von Geometrie aus der analysierten GCode-Datei. " + +#: camlib.py:6985 camlib.py:7133 camlib.py:7302 msgid "G91 coordinates not implemented ..." msgstr "G91 Koordinaten nicht implementiert ..." -#: defaults.py:786 +#: defaults.py:845 msgid "Could not load defaults file." msgstr "Voreinstellungen konnte nicht geladen werden." -#: defaults.py:799 +#: defaults.py:858 msgid "Failed to parse defaults file." msgstr "Fehler beim Einlesen der Voreinstellungen." @@ -18776,12 +20121,12 @@ msgstr "Erwartete eine Liste von durch Komma getrennten Objektnamen. Bekam" msgid "TclCommand Bounds done." msgstr "TclCommand Bounds getan." -#: tclCommands/TclCommandCopperClear.py:281 tclCommands/TclCommandPaint.py:283 +#: tclCommands/TclCommandCopperClear.py:287 tclCommands/TclCommandPaint.py:283 #: tclCommands/TclCommandScale.py:81 msgid "Could not retrieve box object" msgstr "Box-Objekt konnte nicht abgerufen werden" -#: tclCommands/TclCommandCopperClear.py:304 +#: tclCommands/TclCommandCopperClear.py:310 msgid "Expected either -box or -all." msgstr "Erwartet entweder -box oder -all." @@ -18861,6 +20206,374 @@ msgstr "" "Kein Geometriename in args. Geben Sie einen Namen ein und versuchen Sie es " "erneut." +#~ msgid "Basic Geo Parameters" +#~ msgstr "Grundlegende Geoparameter" + +#~ msgid "Advanced Geo Parameters" +#~ msgstr "Erweiterte Geoparameter" + +#~ msgid "ReadMe?" +#~ msgstr "Liesmich?" + +#~ msgid "" +#~ "Toggle the display of the Gerber Apertures Table.\n" +#~ "When unchecked, it will delete all mark shapes\n" +#~ "that are drawn on canvas." +#~ msgstr "" +#~ "Schaltet die Anzeige der Gerber-Apertur-Tabelle um.\n" +#~ "Wenn das Kontrollkästchen deaktiviert ist, werden alle Markierungsformen " +#~ "gelöscht\n" +#~ "das sind auf leinwand gezeichnet." + +#~ msgid "" +#~ "Generate the CNC Job.\n" +#~ "If milling then an additional Geometry object will be created" +#~ msgstr "" +#~ "Generieren Sie den CNC-Auftrag.\n" +#~ "Beim Fräsen wird ein zusätzliches Geometrieobjekt erstellt" + +#~ msgid "Travelled dist." +#~ msgstr "Zurückgelegte Strecke." + +#~ msgid "Prepend to CNC Code" +#~ msgstr "CNC-Code voranstellen" + +#~ msgid "Append to CNC Code" +#~ msgstr "An CNC Code anhängen" + +#~ msgid "Toolchange G-Code" +#~ msgstr "Werkzeugwechsel G-Code" + +#~ msgid "" +#~ "Type here any G-Code commands you would\n" +#~ "like to be executed when Toolchange event is encountered.\n" +#~ "This will constitute a Custom Toolchange GCode,\n" +#~ "or a Toolchange Macro.\n" +#~ "The FlatCAM variables are surrounded by '%' symbol.\n" +#~ "\n" +#~ "WARNING: it can be used only with a preprocessor file\n" +#~ "that has 'toolchange_custom' in it's name and this is built\n" +#~ "having as template the 'Toolchange Custom' posprocessor file." +#~ msgstr "" +#~ "Geben Sie hier alle G-Code-Befehle ein\n" +#~ "Wird ausgeführt, wenn ein Werkzeugwechselereignis auftritt.\n" +#~ "Dies stellt einen benutzerdefinierten Werkzeugwechsel-GCode dar.\n" +#~ "oder ein Werkzeugwechsel-Makro.\n" +#~ "Die FlatCAM-Variablen sind vom '%'-Symbol umgeben.\n" +#~ "\n" +#~ "WARNUNG: Es kann nur mit einer Postprozessor-Datei verwendet werden\n" +#~ "das hat \"toolchange_custom\" im Namen und das ist gebaut\n" +#~ "mit der \"Toolchange Custom\" -Prozessordatei als Vorlage." + +#~ msgid "" +#~ "Type here any G-Code commands you would\n" +#~ "like to be executed when Toolchange event is encountered.\n" +#~ "This will constitute a Custom Toolchange GCode,\n" +#~ "or a Toolchange Macro.\n" +#~ "The FlatCAM variables are surrounded by '%' symbol.\n" +#~ "WARNING: it can be used only with a preprocessor file\n" +#~ "that has 'toolchange_custom' in it's name." +#~ msgstr "" +#~ "Geben Sie hier G-Code-Befehle ein\n" +#~ "die ausgeführt werden, wenn ein Werkzeugwechselereignis auftritt.\n" +#~ "So kann ein benutzerdefinierter Werkzeugwechsel in GCode definiert " +#~ "werden.\n" +#~ "Die FlatCAM-Variablen sind vom '%'-Symbol umgeben.\n" +#~ "\n" +#~ "WARNUNG: Ein Werkzeugwechselereignis kann nur mit einer Präprozessor-" +#~ "Datei verwendet werden\n" +#~ "die das Präfix \"toolchange_custom\" im Namen hat und nach Vorlage der \n" +#~ " \n" +#~ "\"Toolchange Custom\" -Prozessordatei erzeugt wurde." + +#~ msgid "Use Toolchange Macro" +#~ msgstr "Benutze das Werkzeugwechselmakro" + +#~ msgid "" +#~ "Check this box if you want to use\n" +#~ "a Custom Toolchange GCode (macro)." +#~ msgstr "" +#~ "Aktivieren Sie dieses Kontrollkästchen, wenn Sie verwenden möchten\n" +#~ "ein benutzerdefiniertes Werkzeug ändert GCode (Makro)." + +#~ 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 "" +#~ "Eine Liste der FlatCAM-Variablen, die verwendet werden können\n" +#~ "im Werkzeugwechselereignis.\n" +#~ "Sie müssen mit dem \"%\" -Symbol umgeben sein" + +#~ msgid "FlatCAM CNC parameters" +#~ msgstr "FlatCAM CNC-Parameter" + +#~ msgid "tool number" +#~ msgstr "Werkzeugnummer" + +#~ msgid "tool diameter" +#~ msgstr "Werkzeugdurchmesser" + +#~ msgid "for Excellon, total number of drills" +#~ msgstr "für Excellon die Gesamtzahl der Bohrer" + +#~ msgid "X coord for Toolchange" +#~ msgstr "X-Koordinate für Werkzeugwechsel" + +#~ msgid "Y coord for Toolchange" +#~ msgstr "Y-Koordinate für Werkzeugwechsel" + +#~ msgid "Z coord for Toolchange" +#~ msgstr "Z-Koordinate für Werkzeugwechsel" + +#~ msgid "depth where to cut" +#~ msgstr "tiefe wo zu schneiden" + +#~ msgid "height where to travel" +#~ msgstr "Höhe, wohin man reist" + +#~ msgid "the step value for multidepth cut" +#~ msgstr "der Schrittwert für den mehrstufigen Schnitt" + +#~ msgid "the value for the spindle speed" +#~ msgstr "der Wert für die Spindeldrehzahl" + +#~ msgid "time to dwell to allow the spindle to reach it's set RPM" +#~ msgstr "" +#~ "Zeit zum Verweilen, damit die Spindel die eingestellte Drehzahl erreicht" + +#~ msgid "" +#~ "Opens TAB to view/modify/print G-Code\n" +#~ "file." +#~ msgstr "" +#~ "Öffnet die Registerkarte zum Anzeigen / Ändern / Drucken von G-Code\n" +#~ "Datei." + +#~ msgid "" +#~ "Type here any G-Code commands you would like to be executed when " +#~ "Toolchange event is encountered.\n" +#~ "This will constitute a Custom Toolchange GCode, or a Toolchange Macro.\n" +#~ "The FlatCAM variables are surrounded by '%' symbol.\n" +#~ "WARNING: it can be used only with a preprocessor file that has " +#~ "'toolchange_custom' in it's name." +#~ msgstr "" +#~ "Geben Sie hier G-Code-Befehle ein, die ausgeführt werden, wenn ein " +#~ "Werkzeugwechselereignis auftritt.\n" +#~ "So kann ein benutzerdefinierter Werkzeugwechsel in GCode definiert " +#~ "werden.\n" +#~ "Die FlatCAM-Variablen sind vom '%'-Symbol umgeben.\n" +#~ "\n" +#~ "WARNUNG: Ein Werkzeugwechselereignis kann nur mit einer Präprozessor-" +#~ "Datei verwendet warden, die das Präfix \"toolchange_custom\" im Namen hat " +#~ "und nach Vorlage der \"Toolchange Custom\" -Prozessordatei erzeugt wurde." + +#~ msgid "Z depth for the cut" +#~ msgstr "Z Tiefe für den Schnitt" + +#~ msgid "Z height for travel" +#~ msgstr "Z Höhe für die Reise" + +#~ 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" + +#~ msgid "Excellon Optimization" +#~ msgstr "Optimierung der Excellons" + +#~ msgid "Gcode" +#~ msgstr "Gcode" + +#~ msgid "" +#~ "Choose what to use for GCode generation:\n" +#~ "'Drills', 'Slots' or 'Both'.\n" +#~ "When choosing 'Slots' or 'Both', slots will be\n" +#~ "converted to drills." +#~ msgstr "" +#~ "Wählen Sie aus, was für die GCode-Generierung verwendet werden soll:\n" +#~ "'Bohrer', 'Schlüssel' oder 'Beide'.\n" +#~ "Wenn Sie \"Schlüssel\" oder \"Beide\" wählen, werden die Schlüssel " +#~ "angezeigt\n" +#~ "in Bohrer umgewandelt." + +#~ msgid "Display Hover Shape" +#~ msgstr "Schwebeflugform anzeigen" + +#~ msgid "A list of Geometry Editor parameters." +#~ msgstr "Eine Liste der Geometry Editor-Parameter." + +#~ 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 "" +#~ "Anzeige der Gerber-Blendentabelle umschalten.\n" +#~ "Beim Ausblenden werden auch alle Markierungsformen gelöscht\n" +#~ "das sind auf leinwand gezeichnet." + +#~ msgid "" +#~ "The axis should pass through a point or cut\n" +#~ " a specified box (in a FlatCAM object) through \n" +#~ "the center." +#~ msgstr "" +#~ "Die Achse sollte einen Punkt durchlaufen oder schneiden\n" +#~ "eine angegebene Box (in einem FlatCAM-Objekt) durch\n" +#~ "das Zentrum." + +#~ msgid "" +#~ "G-code does not have a G94 code and we will not include the code in the " +#~ "'Prepend to GCode' text box" +#~ msgstr "" +#~ "G-Code hat keinen G94-Code und wir werden den Code nicht in das Textfeld " +#~ "\"Vor dem GCode\" aufnehmen" + +#~ msgid "Cancelled. The Toolchange Custom code is enabled but it's empty." +#~ msgstr "" +#~ "Abgebrochen. Der benutzerdefinierte Code zum Ändern des Werkzeugs ist " +#~ "aktiviert, aber er ist leer." + +#~ msgid "Toolchange G-code was replaced by a custom code." +#~ msgstr "" +#~ "Der Werkzeugwechsel-G-Code wurde durch einen benutzerdefinierten Code " +#~ "ersetzt." + +#~ msgid "" +#~ "The used preprocessor file has to have in it's name: 'toolchange_custom'" +#~ msgstr "" +#~ "Die verwendete Postprozessor-Datei muss im Namen enthalten sein: " +#~ "'toolchange_custom'" + +#~ msgid "There is no preprocessor file." +#~ msgstr "Es gibt keine Postprozessor-Datei." + +#~ msgid "" +#~ "Excellon.create_geometry() -> a drill location was skipped due of not " +#~ "having a tool associated.\n" +#~ "Check the resulting GCode." +#~ msgstr "" +#~ "Excellon.create_geometry () -> Eine Bohrposition wurde übersprungen, da " +#~ "kein Werkzeug zugeordnet ist.\n" +#~ "Überprüfen Sie den resultierenden GCode." + +#~ msgid "A. Automatic Bridge Gaps" +#~ msgstr "A. Automatische Brückenlücken" + +#~ msgid "Generate Freeform Geometry" +#~ msgstr "Freiform Geometrie erzeugen" + +#~ msgid "Generate Rectangular Geometry" +#~ msgstr "Rechteck Geometrie erzeugen" + +#~ msgid "Added manual Bridge Gap." +#~ msgstr "Manuelle Brückenlücke hinzugefügt." + +#~ msgid "Gerber to be mirrored" +#~ msgstr "Zu spiegelndes Gerber" + +#~ msgid "Excellon Object to be mirrored." +#~ msgstr "Zu spiegelndes Excellon-Objekt." + +#~ msgid "Geometry Obj to be mirrored." +#~ msgstr "Geometrie-Objekt, das gespiegelt werden soll." + +#~ msgid "Mirror Parameters" +#~ msgstr "Spiegelparameter" + +#~ msgid "Mirror Axis" +#~ msgstr "Spiegelachse" + +#~ msgid "was mirrored" +#~ msgstr "wurde gespiegelt" + +#~ msgid "There is no Geometry object loaded ..." +#~ msgstr "Es wurde kein Geometrieobjekt geladen ..." + +#~ msgid "Image to PCB" +#~ msgstr "Bild auf PCB" + +#~ msgid "Generate Isolation Geometry" +#~ msgstr "Isolationsgeometrie erzeugen" + +#~ msgid "Wrong Tool Dia value format entered, use a number." +#~ msgstr "" +#~ "Falsches Werkzeug Dia-Wertformat eingegeben, verwenden Sie eine Zahl." + +#~ msgid "" +#~ "- 'Area Selection' - left mouse click to start selection of the area to " +#~ "be painted.\n" +#~ "Keeping a modifier key pressed (CTRL or SHIFT) will allow to add multiple " +#~ "areas.\n" +#~ "- 'All Polygons' - the Paint will start after click.\n" +#~ "- 'Reference Object' - will do non copper clearing within the area\n" +#~ "specified by another object." +#~ msgstr "" +#~ "- 'Bereichsauswahl' - Klicken Sie mit der linken Maustaste, um den " +#~ "Bereich auszuwählen, der gemalt werden soll.\n" +#~ "Wenn Sie eine Änderungstaste gedrückt halten (STRG oder UMSCHALTTASTE), " +#~ "können Sie mehrere Bereiche hinzufügen.\n" +#~ "- 'Alle Polygone' - Der Malvorgang wird nach dem Klicken gestartet.\n" +#~ "- 'Referenzobjekt' - löscht nicht kupferne Objekte innerhalb des " +#~ "Bereichs\n" +#~ "von einem anderen Objekt angegeben." + +#~ msgid "Paint Single failed." +#~ msgstr "Das Malen eines einzelnen Polygons ist fehlgeschlagen." + +#~ msgid "Paint Single Done." +#~ msgstr "Malen Sie Single Done." + +#~ msgid "Polygon Paint started ..." +#~ msgstr "Polygonfarbe gestartet ..." + +#~ msgid "Painting polygons..." +#~ msgstr "Polygone malen ..." + +#~ msgid "Paint All Done." +#~ msgstr "Malen Sie alles fertig." + +#~ msgid "Paint All with Rest-Machining done." +#~ msgstr "Malen Sie alles mit Restbearbeitung." + +#~ msgid "Paint Poly All Done." +#~ msgstr "Malen Sie alle Polygone fertig." + +#~ msgid "Paint Area Done." +#~ msgstr "Lackierbereich fertig." + +#~ msgid "Paint Area failed." +#~ msgstr "Lackierbereich fehlgeschlagen." + +#~ msgid "Paint Poly Area Done." +#~ msgstr "Lackierbereich fertig." + +#~ msgid "Import 2-file Excellon" +#~ msgstr "Importieren Sie 2-Datei-Excellon" + +#~ msgid "Data" +#~ msgstr "Daten" + +#~ msgid "If you like or use this program you can make a donation" +#~ msgstr "" +#~ "Wenn Sie dieses Programm mögen oder nutzen, können Sie eine Spende machen" + +#, python-format +#~ msgid "" +#~ "You don't have to make a donation %s, and it is totally optional but:" +#~ msgstr "" +#~ "Sie müssen keine Spende% s machen, und es ist völlig optional, aber:" + +#~ msgid "it will be welcomed with joy" +#~ msgstr "es wird mit Freude begrüßt" + +#~ msgid "it will give me a reason to continue" +#~ msgstr "es wird mir einen Grund geben, fortzufahren" + +#~ msgid "Could not export Gerber file." +#~ msgstr "Gerber-Datei konnte nicht exportiert werden." + +#~ msgid "Expected a Geometry, got" +#~ msgstr "Erwartet eine Geometrie, erhalten" + #~ msgid "Angle:" #~ msgstr "Winkel:" @@ -19060,9 +20773,6 @@ msgstr "" #~ "Oder geben Sie die Koordinaten im Format (x, y) in ein\n" #~ "Punkt-Eingabefeld und klicken Sie auf X (Y) drehen" -#~ msgid "Mirror Reference point" -#~ msgstr "Referenzpunkt spiegeln" - #~ 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" @@ -19076,9 +20786,6 @@ msgstr "" #~ msgid "Ref. Point" #~ msgstr "Anhaltspunkt" -#~ msgid "Add Tool from Tools DB" -#~ msgstr "Werkzeug aus Werkzeugdatenbank hinzufügen" - #~ msgid "FlatCAM Object" #~ msgstr "FlatCAM-Objekt" @@ -19228,13 +20935,6 @@ msgstr "" #~ msgid "New Blank Excellon" #~ msgstr "Neuen Excellon erstellen" -#~ msgid "" -#~ "Relative measurement.\n" -#~ "Reference is last click position" -#~ msgstr "" -#~ "Relative Messung\n" -#~ "Referenz ist Position des letzten Klicks" - #~ msgid "Clear areas" #~ msgstr "Bereiche löschen" @@ -19648,9 +21348,6 @@ msgstr "" #~ msgid "Move action cancelled." #~ msgstr "Bewegungsaktion abgebrochen." -#~ msgid "Diameter for the new tool." -#~ msgstr "Durchmesser für das neue Werkzeug." - #~ msgid "Create Paint Geometry" #~ msgstr "Farbgeometrie erstellen" @@ -19673,9 +21370,6 @@ msgstr "" #~ msgid "Rest machining painting area task started." #~ msgstr "Restbearbeitung Lackierbereich Aufgabe gestartet." -#~ msgid "Paint Tool. Rest machining painting area task started." -#~ msgstr "Malwerkzeug. Restbearbeitung Lackierbereich Aufgabe gestartet." - #~ msgid "Properties Tool was not displayed. No object selected." #~ msgstr "" #~ "Das Eigenschaften-Tool wurde nicht angezeigt. Kein Objekt ausgewählt." @@ -19721,9 +21415,6 @@ msgstr "" #~ msgid "Default Units" #~ msgstr "Standard Einheiten" -#~ msgid "Optimization Time" -#~ msgstr "Optimierungszeit" - #~ msgid "Coordinates decimals" #~ msgstr "Koordinate Dezimalzahlen" @@ -20151,9 +21842,6 @@ msgstr "" #~ msgid "Geometry Reference Box Object" #~ msgstr "Geometrie-Referenzfeldobjekt" -#~ msgid "Reset" -#~ msgstr "Zurücksetzen" - #~ msgid "Resets all the fields." #~ msgstr "Setzt alle Felder zurück." @@ -20202,9 +21890,6 @@ msgstr "" #~ msgid "tool = tool number" #~ msgstr "tool = Werkzeugnummer" -#~ msgid "tooldia = tool diameter" -#~ msgstr "tooldia = Werkzeugdurchmesser" - #~ msgid "t_drills = for Excellon, total number of drills" #~ msgstr "t_drills = für Excellon die Gesamtzahl der Bohrer" @@ -20313,11 +21998,6 @@ msgstr "" #~ msgid "Stop" #~ msgstr "Halt" -#, fuzzy -#~| msgid "Generating panel..." -#~ msgid "Generating panel ..." -#~ msgstr "Panel wird erstellt ..." - #, fuzzy #~| msgid "Spacing cols" #~ msgid "Spawning copies" diff --git a/locale/en/LC_MESSAGES/strings.mo b/locale/en/LC_MESSAGES/strings.mo index 53b6a944f3ba40ca3c69c10ee2e6a502e6b3b6ff..9f64431fc8dabbd661a25bcd00a007accaad3c1d 100644 GIT binary patch delta 67616 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 delta 78090 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 CTvwz3 diff --git a/locale/en/LC_MESSAGES/strings.po b/locale/en/LC_MESSAGES/strings.po index ae5fb55e..996a5e65 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: 2020-06-05 19:36+0300\n" -"PO-Revision-Date: 2020-06-05 19:36+0300\n" +"POT-Creation-Date: 2020-08-29 16:07+0300\n" +"PO-Revision-Date: 2020-08-29 16:07+0300\n" "Last-Translator: \n" "Language-Team: \n" "Language: en\n" @@ -100,33 +100,35 @@ msgstr "Bookmark removed." msgid "Export Bookmarks" msgstr "Export Bookmarks" -#: Bookmark.py:293 appGUI/MainGUI.py:515 +#: Bookmark.py:293 appGUI/MainGUI.py:524 msgid "Bookmarks" msgstr "Bookmarks" #: Bookmark.py:300 Bookmark.py:342 appDatabase.py:665 appDatabase.py:711 -#: appDatabase.py:2279 appDatabase.py:2325 appEditors/AppExcEditor.py:1023 -#: appEditors/AppExcEditor.py:1091 appEditors/FlatCAMTextEditor.py:223 -#: appGUI/MainGUI.py:2730 appGUI/MainGUI.py:2952 appGUI/MainGUI.py:3167 -#: appObjects/ObjectCollection.py:127 appTools/ToolFilm.py:739 -#: appTools/ToolFilm.py:885 appTools/ToolImage.py:247 appTools/ToolMove.py:269 -#: appTools/ToolPcbWizard.py:301 appTools/ToolPcbWizard.py:324 -#: appTools/ToolQRCode.py:800 appTools/ToolQRCode.py:847 app_Main.py:1713 -#: app_Main.py:2454 app_Main.py:2490 app_Main.py:2537 app_Main.py:4223 -#: app_Main.py:6734 app_Main.py:6773 app_Main.py:6817 app_Main.py:6846 -#: app_Main.py:6887 app_Main.py:6912 app_Main.py:6968 app_Main.py:7004 -#: app_Main.py:7049 app_Main.py:7090 app_Main.py:7132 app_Main.py:7174 -#: app_Main.py:7215 app_Main.py:7259 app_Main.py:7319 app_Main.py:7351 -#: app_Main.py:7383 app_Main.py:7614 app_Main.py:7652 app_Main.py:7695 -#: app_Main.py:7772 app_Main.py:7827 +#: appDatabase.py:2998 appDatabase.py:3044 appEditors/AppExcEditor.py:1023 +#: appEditors/AppExcEditor.py:1091 appEditors/AppTextEditor.py:263 +#: appGUI/MainGUI.py:2878 appGUI/MainGUI.py:3100 appGUI/MainGUI.py:3315 +#: appObjects/FlatCAMCNCJob.py:1589 appObjects/ObjectCollection.py:126 +#: appTools/ToolFilm.py:234 appTools/ToolFilm.py:380 appTools/ToolImage.py:112 +#: appTools/ToolMove.py:269 appTools/ToolPcbWizard.py:189 +#: appTools/ToolPcbWizard.py:212 appTools/ToolQRCode.py:523 +#: appTools/ToolQRCode.py:570 app_Main.py:1747 app_Main.py:2575 +#: app_Main.py:2611 app_Main.py:2658 app_Main.py:4404 app_Main.py:7105 +#: app_Main.py:7144 app_Main.py:7188 app_Main.py:7217 app_Main.py:7258 +#: app_Main.py:7283 app_Main.py:7339 app_Main.py:7375 app_Main.py:7420 +#: app_Main.py:7461 app_Main.py:7503 app_Main.py:7545 app_Main.py:7586 +#: app_Main.py:7630 app_Main.py:7690 app_Main.py:7722 app_Main.py:7754 +#: app_Main.py:7977 app_Main.py:8015 app_Main.py:8058 app_Main.py:8135 +#: app_Main.py:8190 msgid "Cancelled." msgstr "Cancelled." -#: Bookmark.py:308 appDatabase.py:673 appDatabase.py:2287 -#: appEditors/FlatCAMTextEditor.py:276 appObjects/FlatCAMCNCJob.py:959 -#: appTools/ToolFilm.py:1016 appTools/ToolFilm.py:1197 -#: appTools/ToolSolderPaste.py:1542 app_Main.py:2545 app_Main.py:8071 -#: app_Main.py:8119 app_Main.py:8244 app_Main.py:8380 +#: Bookmark.py:308 appDatabase.py:673 appDatabase.py:3006 +#: appEditors/AppTextEditor.py:318 appObjects/FlatCAMCNCJob.py:1511 +#: appObjects/FlatCAMCNCJob.py:2110 appTools/ToolFilm.py:509 +#: appTools/ToolFilm.py:688 appTools/ToolSolderPaste.py:1097 app_Main.py:2666 +#: app_Main.py:8434 app_Main.py:8482 app_Main.py:8611 app_Main.py:8748 +#: app_Main.py:8816 msgid "" "Permission denied, saving not possible.\n" "Most likely another app is holding the file open and not accessible." @@ -154,61 +156,62 @@ msgstr "Import Bookmarks" msgid "Imported Bookmarks from" msgstr "Imported Bookmarks from" -#: Common.py:42 +#: appCommon/Common.py:46 msgid "The user requested a graceful exit of the current task." msgstr "The user requested a graceful exit of the current task." -#: Common.py:210 appTools/ToolCopperThieving.py:773 -#: appTools/ToolIsolation.py:1706 appTools/ToolNCC.py:1669 +#: appCommon/Common.py:292 appTools/ToolCopperThieving.py:328 +#: appTools/ToolIsolation.py:1398 appTools/ToolNCC.py:1316 msgid "Click the start point of the area." msgstr "Click the start point of the area." -#: Common.py:269 +#: appCommon/Common.py:351 appTools/ToolNCC.py:1375 appTools/ToolPaint.py:1209 msgid "Click the end point of the area." msgstr "Click the end point of the area." -#: Common.py:275 Common.py:377 appTools/ToolCopperThieving.py:830 -#: appTools/ToolIsolation.py:2561 appTools/ToolIsolation.py:2613 -#: appTools/ToolNCC.py:1731 appTools/ToolNCC.py:1783 appTools/ToolPaint.py:1625 -#: appTools/ToolPaint.py:1676 +#: appCommon/Common.py:357 appCommon/Common.py:459 +#: appTools/ToolCopperThieving.py:385 appTools/ToolIsolation.py:2310 +#: appTools/ToolIsolation.py:2362 appTools/ToolNCC.py:1381 +#: appTools/ToolNCC.py:1433 appTools/ToolPaint.py:1215 +#: appTools/ToolPaint.py:1266 msgid "Zone added. Click to start adding next zone or right click to finish." msgstr "Zone added. Click to start adding next zone or right click to finish." -#: Common.py:322 appEditors/AppGeoEditor.py:2352 -#: appTools/ToolIsolation.py:2584 appTools/ToolNCC.py:1754 -#: appTools/ToolPaint.py:1647 +#: appCommon/Common.py:404 appEditors/AppGeoEditor.py:2352 +#: appTools/ToolIsolation.py:2333 appTools/ToolNCC.py:1404 +#: appTools/ToolPaint.py:1237 msgid "Click on next Point or click right mouse button to complete ..." msgstr "Click on next Point or click right mouse button to complete ..." -#: Common.py:408 +#: appCommon/Common.py:490 msgid "Exclusion areas added. Checking overlap with the object geometry ..." msgstr "Exclusion areas added. Checking overlap with the object geometry ..." -#: Common.py:413 +#: appCommon/Common.py:496 msgid "Failed. Exclusion areas intersects the object geometry ..." msgstr "Failed. Exclusion areas intersects the object geometry ..." -#: Common.py:417 +#: appCommon/Common.py:499 msgid "Exclusion areas added." msgstr "Exclusion areas added." -#: Common.py:426 Common.py:559 Common.py:619 appGUI/ObjectUI.py:2047 +#: appCommon/Common.py:508 appCommon/Common.py:641 appCommon/Common.py:703 msgid "Generate the CNC Job object." msgstr "Generate the CNC Job object." -#: Common.py:426 +#: appCommon/Common.py:508 msgid "With Exclusion areas." msgstr "With Exclusion areas." -#: Common.py:461 +#: appCommon/Common.py:543 msgid "Cancelled. Area exclusion drawing was interrupted." msgstr "Cancelled. Area exclusion drawing was interrupted." -#: Common.py:572 Common.py:621 +#: appCommon/Common.py:651 appCommon/Common.py:706 msgid "All exclusion zones deleted." msgstr "All exclusion zones deleted." -#: Common.py:608 +#: appCommon/Common.py:692 msgid "Selected exclusion zones deleted." msgstr "Selected exclusion zones deleted." @@ -216,7 +219,7 @@ msgstr "Selected exclusion zones deleted." msgid "Add Geometry Tool in DB" msgstr "Add Geometry Tool in DB" -#: appDatabase.py:90 appDatabase.py:1757 +#: appDatabase.py:90 appDatabase.py:2224 msgid "" "Add a new tool in the Tools Database.\n" "It will be used in the Geometry UI.\n" @@ -226,31 +229,31 @@ msgstr "" "It will be used in the Geometry UI.\n" "You can edit it after it is added." -#: appDatabase.py:104 appDatabase.py:1771 +#: appDatabase.py:104 appDatabase.py:2238 msgid "Delete Tool from DB" msgstr "Delete Tool from DB" -#: appDatabase.py:106 appDatabase.py:1773 +#: appDatabase.py:106 appDatabase.py:2241 msgid "Remove a selection of tools in the Tools Database." msgstr "Remove a selection of tools in the Tools Database." -#: appDatabase.py:110 appDatabase.py:1777 +#: appDatabase.py:110 appDatabase.py:2245 msgid "Export DB" msgstr "Export DB" -#: appDatabase.py:112 appDatabase.py:1779 +#: appDatabase.py:112 appDatabase.py:2248 msgid "Save the Tools Database to a custom text file." msgstr "Save the Tools Database to a custom text file." -#: appDatabase.py:116 appDatabase.py:1783 +#: appDatabase.py:116 appDatabase.py:2252 msgid "Import DB" msgstr "Import DB" -#: appDatabase.py:118 appDatabase.py:1785 +#: appDatabase.py:118 appDatabase.py:2255 msgid "Load the Tools Database information's from a custom text file." msgstr "Load the Tools Database information's from a custom text file." -#: appDatabase.py:122 appDatabase.py:1795 +#: appDatabase.py:122 appDatabase.py:2266 msgid "Transfer the Tool" msgstr "Transfer the Tool" @@ -264,87 +267,88 @@ msgstr "" "active Geometry object after selecting a tool\n" "in the Tools Database." -#: appDatabase.py:130 appDatabase.py:1810 appGUI/MainGUI.py:1388 -#: appGUI/preferences/PreferencesUIManager.py:887 app_Main.py:2228 -#: app_Main.py:3235 app_Main.py:4160 app_Main.py:4430 app_Main.py:6541 +#: appDatabase.py:130 appDatabase.py:2281 appGUI/MainGUI.py:1438 +#: appGUI/preferences/PreferencesUIManager.py:922 app_Main.py:2291 +#: app_Main.py:3386 app_Main.py:4341 app_Main.py:4587 app_Main.py:6878 msgid "Cancel" msgstr "Cancel" -#: appDatabase.py:160 appDatabase.py:835 appDatabase.py:1106 +#: appDatabase.py:160 appDatabase.py:835 msgid "Tool Name" msgstr "Tool Name" -#: appDatabase.py:161 appDatabase.py:837 appDatabase.py:1119 -#: appEditors/AppExcEditor.py:1604 appGUI/ObjectUI.py:1226 -#: appGUI/ObjectUI.py:1480 +#: appDatabase.py:161 appDatabase.py:837 appEditors/AppExcEditor.py:3765 +#: appGUI/ObjectUI.py:690 appGUI/ObjectUI.py:959 appGUI/ObjectUI.py:1525 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:132 -#: appTools/ToolIsolation.py:260 appTools/ToolNCC.py:278 -#: appTools/ToolNCC.py:287 appTools/ToolPaint.py:260 +#: appTools/ToolCutOut.py:1819 appTools/ToolIsolation.py:3053 +#: appTools/ToolNCC.py:3858 appTools/ToolNCC.py:3867 appTools/ToolPaint.py:2881 msgid "Tool Dia" msgstr "Tool Dia" -#: appDatabase.py:162 appDatabase.py:839 appDatabase.py:1300 -#: appGUI/ObjectUI.py:1455 +#: appDatabase.py:162 appDatabase.py:839 appDatabase.py:1273 +#: appGUI/ObjectUI.py:934 msgid "Tool Offset" msgstr "Tool Offset" -#: appDatabase.py:163 appDatabase.py:841 appDatabase.py:1317 +#: appDatabase.py:163 appDatabase.py:841 appDatabase.py:1290 msgid "Custom Offset" msgstr "Custom Offset" -#: appDatabase.py:164 appDatabase.py:843 appDatabase.py:1284 +#: appDatabase.py:164 appDatabase.py:843 appDatabase.py:1257 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:70 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:53 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:62 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:72 -#: appTools/ToolIsolation.py:199 appTools/ToolNCC.py:213 -#: appTools/ToolNCC.py:227 appTools/ToolPaint.py:195 msgid "Tool Type" msgstr "Tool Type" -#: appDatabase.py:165 appDatabase.py:845 appDatabase.py:1132 +#: appDatabase.py:165 appDatabase.py:845 msgid "Tool Shape" msgstr "Tool Shape" -#: appDatabase.py:166 appDatabase.py:848 appDatabase.py:1148 -#: appGUI/ObjectUI.py:679 appGUI/ObjectUI.py:1605 appGUI/ObjectUI.py:2266 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:93 +#: appDatabase.py:166 appDatabase.py:848 appDatabase.py:1309 +#: appDatabase.py:1834 appEditors/appGCodeEditor.py:703 appGUI/ObjectUI.py:1088 +#: appGUI/ObjectUI.py:1840 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:49 #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:78 #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:58 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:57 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:115 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:98 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:105 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:113 -#: appTools/ToolCalculators.py:114 appTools/ToolCutOut.py:138 -#: appTools/ToolIsolation.py:246 appTools/ToolNCC.py:260 -#: appTools/ToolNCC.py:268 appTools/ToolPaint.py:242 +#: appTools/ToolCalculators.py:240 appTools/ToolCutOut.py:1862 +#: appTools/ToolDrilling.py:2129 appTools/ToolMilling.py:1793 msgid "Cut Z" msgstr "Cut Z" -#: appDatabase.py:167 appDatabase.py:850 appDatabase.py:1162 +#: appDatabase.py:167 appDatabase.py:850 appDatabase.py:1323 +#: appDatabase.py:1871 msgid "MultiDepth" msgstr "MultiDepth" -#: appDatabase.py:168 appDatabase.py:852 appDatabase.py:1175 +#: appDatabase.py:168 appDatabase.py:852 appDatabase.py:1336 +#: appDatabase.py:1887 msgid "DPP" msgstr "DPP" -#: appDatabase.py:169 appDatabase.py:854 appDatabase.py:1331 +#: appDatabase.py:169 appDatabase.py:854 appDatabase.py:1224 msgid "V-Dia" msgstr "V-Dia" -#: appDatabase.py:170 appDatabase.py:856 appDatabase.py:1345 +#: appDatabase.py:170 appDatabase.py:856 appDatabase.py:1238 msgid "V-Angle" msgstr "V-Angle" -#: appDatabase.py:171 appDatabase.py:858 appDatabase.py:1189 -#: appGUI/ObjectUI.py:725 appGUI/ObjectUI.py:1652 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:134 +#: appDatabase.py:171 appDatabase.py:858 appDatabase.py:1350 +#: appDatabase.py:1903 appGUI/ObjectUI.py:1135 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:184 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:102 #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:61 -#: appObjects/FlatCAMExcellon.py:1496 appObjects/FlatCAMGeometry.py:1671 -#: appTools/ToolCalibration.py:74 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:98 +#: appObjects/FlatCAMGeometry.py:1745 appTools/ToolCalibration.py:769 +#: appTools/ToolDrilling.py:1280 appTools/ToolDrilling.py:2175 +#: appTools/ToolMilling.py:1291 appTools/ToolMilling.py:1839 msgid "Travel Z" msgstr "Travel Z" @@ -356,37 +360,39 @@ msgstr "FR" msgid "FR Z" msgstr "FR Z" -#: appDatabase.py:174 appDatabase.py:864 appDatabase.py:1359 +#: appDatabase.py:174 appDatabase.py:864 appDatabase.py:1431 msgid "FR Rapids" msgstr "FR Rapids" -#: appDatabase.py:175 appDatabase.py:866 appDatabase.py:1232 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:222 +#: appDatabase.py:175 appDatabase.py:866 appDatabase.py:1452 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:186 msgid "Spindle Speed" msgstr "Spindle Speed" -#: appDatabase.py:176 appDatabase.py:868 appDatabase.py:1247 -#: appGUI/ObjectUI.py:843 appGUI/ObjectUI.py:1759 +#: appDatabase.py:176 appDatabase.py:868 appDatabase.py:1467 +#: appDatabase.py:1984 appGUI/ObjectUI.py:1242 appTools/ToolDrilling.py:2250 +#: appTools/ToolMilling.py:1957 msgid "Dwell" msgstr "Dwell" -#: appDatabase.py:177 appDatabase.py:870 appDatabase.py:1260 +#: appDatabase.py:177 appDatabase.py:870 appDatabase.py:1480 +#: appDatabase.py:1997 msgid "Dwelltime" msgstr "Dwelltime" -#: appDatabase.py:178 appDatabase.py:872 appGUI/ObjectUI.py:1916 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:257 +#: appDatabase.py:178 appDatabase.py:872 appGUI/ObjectUI.py:1401 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:255 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:221 #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:237 -#: appTools/ToolSolderPaste.py:331 +#: appTools/ToolDrilling.py:2484 appTools/ToolSolderPaste.py:1407 msgid "Preprocessor" msgstr "Preprocessor" -#: appDatabase.py:179 appDatabase.py:874 appDatabase.py:1375 +#: appDatabase.py:179 appDatabase.py:874 appDatabase.py:1365 msgid "ExtraCut" msgstr "ExtraCut" -#: appDatabase.py:180 appDatabase.py:876 appDatabase.py:1390 +#: appDatabase.py:180 appDatabase.py:876 appDatabase.py:1380 msgid "E-Cut Length" msgstr "E-Cut Length" @@ -399,16 +405,17 @@ msgid "Toolchange XY" msgstr "Toolchange XY" #: appDatabase.py:183 appDatabase.py:882 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:160 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:132 #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:98 -#: appTools/ToolCalibration.py:111 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:124 +#: appTools/ToolCalibration.py:806 msgid "Toolchange Z" msgstr "Toolchange Z" -#: appDatabase.py:184 appDatabase.py:884 appGUI/ObjectUI.py:972 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:69 +#: appDatabase.py:184 appDatabase.py:884 #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:56 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:306 +#: appTools/ToolDrilling.py:2401 appTools/ToolMilling.py:2087 msgid "Start Z" msgstr "Start Z" @@ -420,7 +427,7 @@ msgstr "End Z" msgid "Tool Index." msgstr "Tool Index." -#: appDatabase.py:191 appDatabase.py:1108 +#: appDatabase.py:191 appDatabase.py:1126 msgid "" "Tool name.\n" "This is not used in the app, it's function\n" @@ -430,11 +437,11 @@ msgstr "" "This is not used in the app, it's function\n" "is to serve as a note for the user." -#: appDatabase.py:195 appDatabase.py:1121 +#: appDatabase.py:195 appDatabase.py:1139 msgid "Tool Diameter." msgstr "Tool Diameter." -#: appDatabase.py:197 appDatabase.py:1302 +#: appDatabase.py:197 appDatabase.py:1275 msgid "" "Tool Offset.\n" "Can be of a few types:\n" @@ -450,7 +457,7 @@ msgstr "" "Out = offset outside by half of tool diameter\n" "Custom = custom offset using the Custom Offset value" -#: appDatabase.py:204 appDatabase.py:1319 +#: appDatabase.py:204 appDatabase.py:1292 msgid "" "Custom Offset.\n" "A value to be used as offset from the current path." @@ -458,7 +465,7 @@ msgstr "" "Custom Offset.\n" "A value to be used as offset from the current path." -#: appDatabase.py:207 appDatabase.py:1286 +#: appDatabase.py:207 appDatabase.py:1259 msgid "" "Tool Type.\n" "Can be:\n" @@ -472,7 +479,7 @@ msgstr "" "Rough = rough cut, low feedrate, multiple passes\n" "Finish = finishing cut, high feedrate" -#: appDatabase.py:213 appDatabase.py:1134 +#: appDatabase.py:213 appDatabase.py:1210 msgid "" "Tool Shape. \n" "Can be:\n" @@ -486,7 +493,7 @@ msgstr "" "B = ball tip milling tool\n" "V = v-shape milling tool" -#: appDatabase.py:219 appDatabase.py:1150 +#: appDatabase.py:219 appDatabase.py:1311 msgid "" "Cutting Depth.\n" "The depth at which to cut into material." @@ -494,7 +501,7 @@ msgstr "" "Cutting Depth.\n" "The depth at which to cut into material." -#: appDatabase.py:222 appDatabase.py:1164 +#: appDatabase.py:222 appDatabase.py:1325 msgid "" "Multi Depth.\n" "Selecting this will allow cutting in multiple passes,\n" @@ -504,7 +511,7 @@ msgstr "" "Selecting this will allow cutting in multiple passes,\n" "each pass adding a DPP parameter depth." -#: appDatabase.py:226 appDatabase.py:1177 +#: appDatabase.py:226 appDatabase.py:1338 appDatabase.py:1889 msgid "" "DPP. Depth per Pass.\n" "The value used to cut into material on each pass." @@ -512,7 +519,7 @@ msgstr "" "DPP. Depth per Pass.\n" "The value used to cut into material on each pass." -#: appDatabase.py:229 appDatabase.py:1333 +#: appDatabase.py:229 appDatabase.py:1226 msgid "" "V-Dia.\n" "Diameter of the tip for V-Shape Tools." @@ -520,7 +527,7 @@ msgstr "" "V-Dia.\n" "Diameter of the tip for V-Shape Tools." -#: appDatabase.py:232 appDatabase.py:1347 +#: appDatabase.py:232 appDatabase.py:1240 msgid "" "V-Agle.\n" "Angle at the tip for the V-Shape Tools." @@ -528,7 +535,7 @@ msgstr "" "V-Agle.\n" "Angle at the tip for the V-Shape Tools." -#: appDatabase.py:235 appDatabase.py:1191 +#: appDatabase.py:235 appDatabase.py:1352 msgid "" "Clearance Height.\n" "Height at which the milling bit will travel between cuts,\n" @@ -554,7 +561,7 @@ msgstr "" "FR Z. Feedrate Z\n" "The speed on Z plane." -#: appDatabase.py:245 appDatabase.py:1361 +#: appDatabase.py:245 appDatabase.py:1433 msgid "" "FR Rapids. Feedrate Rapids\n" "Speed used while moving as fast as possible.\n" @@ -566,7 +573,7 @@ msgstr "" "This is used only by some devices that can't use\n" "the G0 g-code command. Mostly 3D printers." -#: appDatabase.py:250 appDatabase.py:1234 +#: appDatabase.py:250 appDatabase.py:1454 msgid "" "Spindle Speed.\n" "If it's left empty it will not be used.\n" @@ -576,20 +583,29 @@ msgstr "" "If it's left empty it will not be used.\n" "The speed of the spindle in RPM." -#: appDatabase.py:254 appDatabase.py:1249 +#: appDatabase.py:254 appDatabase.py:1469 appDatabase.py:1986 +#, fuzzy +#| msgid "" +#| "Dwell.\n" +#| "Check this if a delay is needed to allow\n" +#| "the spindle motor to reach it's set speed." msgid "" "Dwell.\n" "Check this if a delay is needed to allow\n" -"the spindle motor to reach it's set speed." +"the spindle motor to reach its set speed." msgstr "" "Dwell.\n" "Check this if a delay is needed to allow\n" "the spindle motor to reach it's set speed." -#: appDatabase.py:258 appDatabase.py:1262 +#: appDatabase.py:258 appDatabase.py:1482 appDatabase.py:1999 +#, fuzzy +#| msgid "" +#| "Dwell Time.\n" +#| "A delay used to allow the motor spindle reach it's set speed." msgid "" "Dwell Time.\n" -"A delay used to allow the motor spindle reach it's set speed." +"A delay used to allow the motor spindle reach its set speed." msgstr "" "Dwell Time.\n" "A delay used to allow the motor spindle reach it's set speed." @@ -604,7 +620,7 @@ msgstr "" "A selection of files that will alter the generated G-code\n" "to fit for a number of use cases." -#: appDatabase.py:265 appDatabase.py:1377 +#: appDatabase.py:265 appDatabase.py:1367 msgid "" "Extra Cut.\n" "If checked, after a isolation is finished an extra cut\n" @@ -618,7 +634,7 @@ msgstr "" "such as that this point is covered by this extra cut to\n" "ensure a complete isolation." -#: appDatabase.py:271 appDatabase.py:1392 +#: appDatabase.py:271 appDatabase.py:1382 msgid "" "Extra Cut length.\n" "If checked, after a isolation is finished an extra cut\n" @@ -684,145 +700,275 @@ msgstr "" "End Z.\n" "A position on Z plane to move immediately after job stop." -#: appDatabase.py:307 appDatabase.py:684 appDatabase.py:718 appDatabase.py:2033 -#: appDatabase.py:2298 appDatabase.py:2332 +#: appDatabase.py:307 appDatabase.py:684 appDatabase.py:718 appDatabase.py:2647 +#: appDatabase.py:3017 appDatabase.py:3051 appTools/ToolCutOut.py:287 +#: appTools/ToolDrilling.py:881 appTools/ToolIsolation.py:1032 +#: appTools/ToolNCC.py:964 appTools/ToolPaint.py:703 msgid "Could not load Tools DB file." msgstr "Could not load Tools DB file." -#: appDatabase.py:315 appDatabase.py:726 appDatabase.py:2041 -#: appDatabase.py:2340 +#: appDatabase.py:315 appDatabase.py:726 appDatabase.py:2655 +#: appDatabase.py:3059 appTools/ToolCutOut.py:298 appTools/ToolDrilling.py:889 +#: appTools/ToolIsolation.py:1043 appTools/ToolNCC.py:975 +#: appTools/ToolPaint.py:714 msgid "Failed to parse Tools DB file." msgstr "Failed to parse Tools DB file." -#: appDatabase.py:318 appDatabase.py:729 appDatabase.py:2044 -#: appDatabase.py:2343 +#: appDatabase.py:318 appDatabase.py:729 appDatabase.py:2658 +#: appDatabase.py:3062 msgid "Loaded Tools DB from" msgstr "Loaded Tools DB from" -#: appDatabase.py:324 appDatabase.py:1958 +#: appDatabase.py:324 appDatabase.py:2562 msgid "Add to DB" msgstr "Add to DB" -#: appDatabase.py:326 appDatabase.py:1961 +#: appDatabase.py:326 appDatabase.py:2565 msgid "Copy from DB" msgstr "Copy from DB" -#: appDatabase.py:328 appDatabase.py:1964 +#: appDatabase.py:328 appDatabase.py:2568 msgid "Delete from DB" msgstr "Delete from DB" -#: appDatabase.py:605 appDatabase.py:2198 +#: appDatabase.py:605 appDatabase.py:2917 msgid "Tool added to DB." msgstr "Tool added to DB." -#: appDatabase.py:626 appDatabase.py:2231 +#: appDatabase.py:626 appDatabase.py:2950 msgid "Tool copied from Tools DB." msgstr "Tool copied from Tools DB." -#: appDatabase.py:644 appDatabase.py:2258 +#: appDatabase.py:644 appDatabase.py:2977 msgid "Tool removed from Tools DB." msgstr "Tool removed from Tools DB." -#: appDatabase.py:655 appDatabase.py:2269 +#: appDatabase.py:655 appDatabase.py:2988 msgid "Export Tools Database" msgstr "Export Tools Database" -#: appDatabase.py:658 appDatabase.py:2272 +#: appDatabase.py:658 appDatabase.py:2991 msgid "Tools_Database" msgstr "Tools_Database" -#: appDatabase.py:695 appDatabase.py:698 appDatabase.py:750 appDatabase.py:2309 -#: appDatabase.py:2312 appDatabase.py:2365 +#: appDatabase.py:695 appDatabase.py:698 appDatabase.py:750 appDatabase.py:3028 +#: appDatabase.py:3031 appDatabase.py:3126 msgid "Failed to write Tools DB to file." msgstr "Failed to write Tools DB to file." -#: appDatabase.py:701 appDatabase.py:2315 +#: appDatabase.py:701 appDatabase.py:3034 msgid "Exported Tools DB to" msgstr "Exported Tools DB to" -#: appDatabase.py:708 appDatabase.py:2322 +#: appDatabase.py:708 appDatabase.py:3041 msgid "Import FlatCAM Tools DB" msgstr "Import FlatCAM Tools DB" -#: appDatabase.py:740 appDatabase.py:915 appDatabase.py:2354 -#: appDatabase.py:2624 appObjects/FlatCAMGeometry.py:956 -#: appTools/ToolIsolation.py:2792 appTools/ToolIsolation.py:2877 -#: appTools/ToolNCC.py:4029 appTools/ToolNCC.py:4113 appTools/ToolPaint.py:3578 -#: appTools/ToolPaint.py:3663 app_Main.py:5357 app_Main.py:5391 -#: app_Main.py:5418 app_Main.py:5438 app_Main.py:5448 +#: appDatabase.py:740 appDatabase.py:915 appDatabase.py:3073 +#: appDatabase.py:3464 appObjects/FlatCAMGeometry.py:1027 +#: appTools/ToolCutOut.py:476 appTools/ToolCutOut.py:517 +#: appTools/ToolIsolation.py:2545 appTools/ToolIsolation.py:2629 +#: appTools/ToolNCC.py:3607 appTools/ToolNCC.py:3687 appTools/ToolPaint.py:2625 +#: appTools/ToolPaint.py:2714 app_Main.py:5676 app_Main.py:5718 +#: app_Main.py:5749 app_Main.py:5769 app_Main.py:5779 msgid "Tools Database" msgstr "Tools Database" -#: appDatabase.py:754 appDatabase.py:2369 +#: appDatabase.py:754 appDatabase.py:3130 msgid "Saved Tools DB." msgstr "Saved Tools DB." -#: appDatabase.py:901 appDatabase.py:2611 +#: appDatabase.py:901 appDatabase.py:3447 msgid "No Tool/row selected in the Tools Database table" msgstr "No Tool/row selected in the Tools Database table" -#: appDatabase.py:919 appDatabase.py:2628 +#: appDatabase.py:919 appDatabase.py:3468 msgid "Cancelled adding tool from DB." msgstr "Cancelled adding tool from DB." -#: appDatabase.py:1020 -msgid "Basic Geo Parameters" -msgstr "Basic Geo Parameters" +#: appDatabase.py:995 +#, fuzzy +#| msgid "NCC Tool Options" +msgid "Tool Description" +msgstr "NCC Tool Options" -#: appDatabase.py:1032 -msgid "Advanced Geo Parameters" -msgstr "Advanced Geo Parameters" +#: appDatabase.py:1008 +#, fuzzy +#| msgid "Milling Diameter" +msgid "Milling Parameters" +msgstr "Milling Diameter" -#: appDatabase.py:1045 +#: appDatabase.py:1021 msgid "NCC Parameters" msgstr "NCC Parameters" -#: appDatabase.py:1058 +#: appDatabase.py:1034 msgid "Paint Parameters" msgstr "Paint Parameters" -#: appDatabase.py:1071 +#: appDatabase.py:1047 msgid "Isolation Parameters" msgstr "Isolation Parameters" -#: appDatabase.py:1204 appGUI/ObjectUI.py:746 appGUI/ObjectUI.py:1671 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:186 -#: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:148 -#: appTools/ToolSolderPaste.py:249 -msgid "Feedrate X-Y" -msgstr "Feedrate X-Y" +#: appDatabase.py:1060 +#, fuzzy +#| msgid "Film Parameters" +msgid "Drilling Parameters" +msgstr "Film Parameters" -#: appDatabase.py:1206 +#: appDatabase.py:1073 +#, fuzzy +#| msgid "Slot Parameters" +msgid "Cutout Parameters" +msgstr "Slot Parameters" + +#: appDatabase.py:1124 appEditors/AppGeoEditor.py:3287 appGUI/ObjectUI.py:219 +#: appGUI/ObjectUI.py:521 appGUI/ObjectUI.py:794 appGUI/ObjectUI.py:1738 +#: appGUI/ObjectUI.py:2474 appGUI/ObjectUI.py:2541 +#: appTools/ToolCalibration.py:929 appTools/ToolFiducials.py:681 +msgid "Name" +msgstr "Name" + +#: appDatabase.py:1137 appEditors/AppExcEditor.py:2567 +#: appEditors/AppExcEditor.py:3732 appGUI/ObjectUI.py:571 +#: appObjects/FlatCAMExcellon.py:876 appObjects/FlatCAMExcellon.py:976 +#: appTools/ToolDrilling.py:1748 appTools/ToolDrilling.py:1813 +#: appTools/ToolDrilling.py:2051 appTools/ToolIsolation.py:2984 +#: appTools/ToolMilling.py:1071 appTools/ToolMilling.py:1175 +#: appTools/ToolMilling.py:1360 appTools/ToolMilling.py:1670 +#: appTools/ToolNCC.py:3777 appTools/ToolPaint.py:2812 +#: appTools/ToolPcbWizard.py:404 appTools/ToolProperties.py:417 +#: appTools/ToolProperties.py:480 appTools/ToolSolderPaste.py:1166 +#: tclCommands/TclCommandDrillcncjob.py:195 +msgid "Diameter" +msgstr "Diameter" + +#: appDatabase.py:1150 +#, fuzzy +#| msgid "Geo Tolerance" +msgid "Diameter Tolerance" +msgstr "Geo Tolerance" + +#: appDatabase.py:1152 msgid "" -"Feedrate X-Y. Feedrate\n" -"The speed on XY plane used while cutting into material." +"Tool tolerance. If there is a tool in the targeted tools table with\n" +"the value within the limits then this tool from DB will be used." msgstr "" -"Feedrate X-Y. Feedrate\n" -"The speed on XY plane used while cutting into material." -#: appDatabase.py:1218 appGUI/ObjectUI.py:761 appGUI/ObjectUI.py:1685 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:207 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:201 -#: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:161 -#: appTools/ToolSolderPaste.py:261 -msgid "Feedrate Z" -msgstr "Feedrate Z" +#: appDatabase.py:1158 +#, fuzzy +#| msgid "in" +msgid "Min" +msgstr "in" -#: appDatabase.py:1220 -msgid "" -"Feedrate Z\n" -"The speed on Z plane." +#: appDatabase.py:1160 +msgid "Set the tool tolerance minimum." msgstr "" -"Feedrate Z\n" -"The speed on Z plane." -#: appDatabase.py:1418 appGUI/ObjectUI.py:624 +#: appDatabase.py:1172 +msgid "Max" +msgstr "" + +#: appDatabase.py:1174 +msgid "Set the tool tolerance maximum." +msgstr "" + +#: appDatabase.py:1186 appDatabase.py:1504 #: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:46 -#: appTools/ToolNCC.py:341 +#: appTools/ToolMilling.py:1738 appTools/ToolNCC.py:3936 msgid "Operation" msgstr "Operation" -#: appDatabase.py:1420 appTools/ToolNCC.py:343 +#: appDatabase.py:1188 +msgid "The kind of Application Tool where this tool is to be used." +msgstr "" + +#: appDatabase.py:1192 appDatabase.py:2695 appDatabase.py:2731 +#: appDatabase.py:2794 appDatabase.py:3079 appGUI/MainGUI.py:1299 +msgid "General" +msgstr "General" + +#: appDatabase.py:1192 appDatabase.py:2753 appDatabase.py:3082 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:55 +#: appTools/ToolMilling.py:1747 +msgid "Milling" +msgstr "Milling" + +#: appDatabase.py:1192 appDatabase.py:2757 appDatabase.py:3087 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:54 +#: appTools/ToolMilling.py:1746 +msgid "Drilling" +msgstr "Drilling" + +#: appDatabase.py:1192 appDatabase.py:1514 appDatabase.py:2761 +#: appDatabase.py:3095 appTools/ToolIsolation.py:1066 +#: appTools/ToolIsolation.py:2538 appTools/ToolNCC.py:3946 +msgid "Isolation" +msgstr "Isolation" + +#: appDatabase.py:1192 appDatabase.py:2767 appDatabase.py:3103 +#: appEditors/AppGeoEditor.py:528 appGUI/MainGUI.py:1506 +#: appTools/ToolPaint.py:737 appTools/ToolPaint.py:2618 +msgid "Paint" +msgstr "Paint" + +#: appDatabase.py:1192 appDatabase.py:2773 appDatabase.py:3111 +#: appTools/ToolNCC.py:999 appTools/ToolNCC.py:3600 +#, fuzzy +#| msgid "CCW" +msgid "NCC" +msgstr "CCW" + +#: appDatabase.py:1192 appDatabase.py:2779 appTools/ToolCutOut.py:321 +#: appTools/ToolCutOut.py:457 +#, fuzzy +#| msgid "Cutout PCB" +msgid "Cutout" +msgstr "Cutout PCB" + +#: appDatabase.py:1208 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:220 +#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:293 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:322 +#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:286 +#: appTools/ToolIsolation.py:3370 appTools/ToolNCC.py:4229 +#: appTools/ToolPaint.py:3161 +msgid "Shape" +msgstr "Shape" + +#: appDatabase.py:1403 appGUI/ObjectUI.py:1154 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:186 +#: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:148 +#: appTools/ToolMilling.py:1860 appTools/ToolSolderPaste.py:1325 +msgid "Feedrate X-Y" +msgstr "Feedrate X-Y" + +#: appDatabase.py:1405 +msgid "" +"Feedrate X-Y. Feedrate\n" +"The speed on XY plane used while cutting into material." +msgstr "" +"Feedrate X-Y. Feedrate\n" +"The speed on XY plane used while cutting into material." + +#: appDatabase.py:1417 appDatabase.py:1929 appGUI/ObjectUI.py:1168 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:201 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:171 +#: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:161 +#: appTools/ToolDrilling.py:2196 appTools/ToolMilling.py:1875 +#: appTools/ToolSolderPaste.py:1337 +msgid "Feedrate Z" +msgstr "Feedrate Z" + +#: appDatabase.py:1419 +msgid "" +"Feedrate Z\n" +"The speed on Z plane." +msgstr "" +"Feedrate Z\n" +"The speed on Z plane." + +#: appDatabase.py:1506 appTools/ToolNCC.py:3938 msgid "" "The 'Operation' can be:\n" "- Isolation -> will ensure that the non-copper clearing is always complete.\n" @@ -834,31 +980,28 @@ msgstr "" "If it's not successful then the non-copper clearing will fail, too.\n" "- Clear -> the regular non-copper clearing." -#: appDatabase.py:1427 appEditors/AppGerberEditor.py:2749 -#: appGUI/GUIElements.py:2765 appTools/ToolNCC.py:350 +#: appDatabase.py:1513 appEditors/AppGerberEditor.py:2749 +#: appGUI/GUIElements.py:3011 appTools/ToolNCC.py:3945 msgid "Clear" msgstr "Clear" -#: appDatabase.py:1428 appTools/ToolNCC.py:351 -msgid "Isolation" -msgstr "Isolation" - -#: appDatabase.py:1436 appDatabase.py:1682 appGUI/ObjectUI.py:646 +#: appDatabase.py:1522 appDatabase.py:1768 #: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:62 #: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:56 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:182 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:137 -#: appTools/ToolIsolation.py:351 appTools/ToolNCC.py:359 +#: appTools/ToolIsolation.py:3159 appTools/ToolMilling.py:1760 +#: appTools/ToolNCC.py:3954 msgid "Milling Type" msgstr "Milling Type" -#: appDatabase.py:1438 appDatabase.py:1446 appDatabase.py:1684 -#: appDatabase.py:1692 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:184 +#: appDatabase.py:1524 appDatabase.py:1532 appDatabase.py:1770 +#: appDatabase.py:1778 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:184 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:192 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:139 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:147 -#: appTools/ToolIsolation.py:353 appTools/ToolIsolation.py:361 -#: appTools/ToolNCC.py:361 appTools/ToolNCC.py:369 +#: appTools/ToolIsolation.py:3161 appTools/ToolIsolation.py:3169 +#: appTools/ToolNCC.py:3956 appTools/ToolNCC.py:3964 msgid "" "Milling type when the selected tool is of type: 'iso_op':\n" "- climb / best for precision milling and to reduce tool usage\n" @@ -868,34 +1011,35 @@ msgstr "" "- climb / best for precision milling and to reduce tool usage\n" "- conventional / useful when there is no backlash compensation" -#: appDatabase.py:1443 appDatabase.py:1689 +#: appDatabase.py:1529 appDatabase.py:1775 #: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:62 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:189 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:144 -#: appTools/ToolIsolation.py:358 appTools/ToolNCC.py:366 +#: appTools/ToolIsolation.py:3166 appTools/ToolNCC.py:3961 msgid "Climb" msgstr "Climb" -#: appDatabase.py:1444 appDatabase.py:1690 +#: appDatabase.py:1530 appDatabase.py:1776 #: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:63 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:190 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:145 -#: appTools/ToolIsolation.py:359 appTools/ToolNCC.py:367 +#: appTools/ToolIsolation.py:3167 appTools/ToolNCC.py:3962 msgid "Conventional" msgstr "Conventional" -#: appDatabase.py:1456 appDatabase.py:1565 appDatabase.py:1667 -#: appEditors/AppGeoEditor.py:450 +#: appDatabase.py:1542 appDatabase.py:1651 appDatabase.py:1753 +#: appDatabase.py:2027 appEditors/AppGeoEditor.py:450 appGUI/ObjectUI.py:1552 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:250 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:167 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:182 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:163 -#: appTools/ToolIsolation.py:336 appTools/ToolNCC.py:382 -#: appTools/ToolPaint.py:328 +#: appTools/ToolDrilling.py:2298 appTools/ToolIsolation.py:3144 +#: appTools/ToolNCC.py:3977 appTools/ToolPaint.py:2953 msgid "Overlap" msgstr "Overlap" -#: appDatabase.py:1458 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:184 -#: appTools/ToolNCC.py:384 +#: appDatabase.py:1544 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:184 +#: appTools/ToolNCC.py:3979 msgid "" "How much (percentage) of the tool width to overlap each tool pass.\n" "Adjust the value starting with lower values\n" @@ -913,7 +1057,7 @@ msgstr "" "Higher values = slow processing and slow execution on CNC\n" "due of too many paths." -#: appDatabase.py:1477 appDatabase.py:1586 appEditors/AppGeoEditor.py:470 +#: appDatabase.py:1563 appDatabase.py:2071 appEditors/AppGeoEditor.py:470 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:72 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:229 #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:59 @@ -923,37 +1067,39 @@ msgstr "" #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:115 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:202 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:183 -#: appTools/ToolCopperThieving.py:115 appTools/ToolCopperThieving.py:366 -#: appTools/ToolCorners.py:149 appTools/ToolCutOut.py:190 -#: appTools/ToolFiducials.py:175 appTools/ToolInvertGerber.py:91 -#: appTools/ToolInvertGerber.py:99 appTools/ToolNCC.py:403 -#: appTools/ToolPaint.py:349 +#: appTools/ToolCopperThieving.py:1204 appTools/ToolCopperThieving.py:1455 +#: appTools/ToolCorners.py:411 appTools/ToolCutOut.py:1915 +#: appTools/ToolFiducials.py:786 appTools/ToolInvertGerber.py:234 +#: appTools/ToolInvertGerber.py:242 appTools/ToolNCC.py:4021 +#: appTools/ToolNCC.py:4124 msgid "Margin" msgstr "Margin" -#: appDatabase.py:1479 +#: appDatabase.py:1565 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:74 #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:61 #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:125 #: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:68 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:204 -#: appTools/ToolCopperThieving.py:117 appTools/ToolCorners.py:151 -#: appTools/ToolFiducials.py:177 appTools/ToolNCC.py:405 +#: appTools/ToolCopperThieving.py:1206 appTools/ToolCorners.py:413 +#: appTools/ToolFiducials.py:788 appTools/ToolNCC.py:4023 +#: appTools/ToolNCC.py:4126 msgid "Bounding box margin." msgstr "Bounding box margin." -#: appDatabase.py:1490 appDatabase.py:1601 appEditors/AppGeoEditor.py:484 +#: appDatabase.py:1576 appDatabase.py:1687 appEditors/AppGeoEditor.py:484 +#: appGUI/ObjectUI.py:1567 #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:105 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:106 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:215 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:198 -#: appTools/ToolExtractDrills.py:128 appTools/ToolNCC.py:416 -#: appTools/ToolPaint.py:364 appTools/ToolPunchGerber.py:139 +#: appTools/ToolExtractDrills.py:520 appTools/ToolNCC.py:3998 +#: appTools/ToolPaint.py:2989 appTools/ToolPunchGerber.py:793 msgid "Method" msgstr "Method" -#: appDatabase.py:1492 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:217 -#: appTools/ToolNCC.py:418 +#: appDatabase.py:1578 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:217 +#: appTools/ToolNCC.py:4000 msgid "" "Algorithm for copper clearing:\n" "- Standard: Fixed step inwards.\n" @@ -965,57 +1111,56 @@ msgstr "" "- Seed-based: Outwards from seed.\n" "- Line-based: Parallel lines." -#: appDatabase.py:1500 appDatabase.py:1615 appEditors/AppGeoEditor.py:498 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 +#: appDatabase.py:1586 appDatabase.py:1701 appEditors/AppGeoEditor.py:498 +#: appGUI/ObjectUI.py:1577 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:217 -#: appTools/ToolNCC.py:431 appTools/ToolNCC.py:2232 appTools/ToolNCC.py:2764 -#: appTools/ToolNCC.py:2796 appTools/ToolPaint.py:389 -#: appTools/ToolPaint.py:1859 tclCommands/TclCommandCopperClear.py:126 +#: appTools/ToolNCC.py:1915 appTools/ToolNCC.py:4013 appTools/ToolPaint.py:1455 +#: appTools/ToolPaint.py:3014 tclCommands/TclCommandCopperClear.py:126 #: tclCommands/TclCommandCopperClear.py:134 tclCommands/TclCommandPaint.py:125 msgid "Standard" msgstr "Standard" -#: appDatabase.py:1500 appDatabase.py:1615 appEditors/AppGeoEditor.py:498 -#: appEditors/AppGeoEditor.py:568 appEditors/AppGeoEditor.py:5091 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 +#: appDatabase.py:1586 appDatabase.py:1701 appEditors/AppGeoEditor.py:498 +#: appEditors/AppGeoEditor.py:568 appEditors/AppGeoEditor.py:5109 +#: appGUI/ObjectUI.py:1577 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:217 -#: appTools/ToolNCC.py:431 appTools/ToolNCC.py:2243 appTools/ToolNCC.py:2770 -#: appTools/ToolNCC.py:2802 appTools/ToolPaint.py:389 -#: appTools/ToolPaint.py:1873 defaults.py:416 defaults.py:448 +#: appTools/ToolNCC.py:1926 appTools/ToolNCC.py:4013 appTools/ToolPaint.py:1469 +#: appTools/ToolPaint.py:3014 defaults.py:462 defaults.py:499 #: tclCommands/TclCommandCopperClear.py:128 #: tclCommands/TclCommandCopperClear.py:136 tclCommands/TclCommandPaint.py:127 msgid "Seed" msgstr "Seed" -#: appDatabase.py:1500 appDatabase.py:1615 appEditors/AppGeoEditor.py:498 -#: appEditors/AppGeoEditor.py:5095 +#: appDatabase.py:1586 appDatabase.py:1701 appEditors/AppGeoEditor.py:498 +#: appEditors/AppGeoEditor.py:5113 appGUI/ObjectUI.py:1577 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:217 -#: appTools/ToolNCC.py:431 appTools/ToolNCC.py:2254 appTools/ToolPaint.py:389 -#: appTools/ToolPaint.py:698 appTools/ToolPaint.py:1887 +#: appTools/ToolNCC.py:1937 appTools/ToolNCC.py:4013 appTools/ToolPaint.py:160 +#: appTools/ToolPaint.py:1483 appTools/ToolPaint.py:3014 #: tclCommands/TclCommandCopperClear.py:130 tclCommands/TclCommandPaint.py:129 msgid "Lines" msgstr "Lines" -#: appDatabase.py:1500 appDatabase.py:1615 +#: appDatabase.py:1586 appDatabase.py:1701 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:217 -#: appTools/ToolNCC.py:431 appTools/ToolNCC.py:2265 appTools/ToolPaint.py:389 -#: appTools/ToolPaint.py:2052 tclCommands/TclCommandPaint.py:133 +#: appTools/ToolNCC.py:1948 appTools/ToolNCC.py:4013 appTools/ToolPaint.py:1648 +#: appTools/ToolPaint.py:3014 tclCommands/TclCommandPaint.py:133 msgid "Combo" msgstr "Combo" -#: appDatabase.py:1508 appDatabase.py:1626 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:237 +#: appDatabase.py:1594 appDatabase.py:1712 appGUI/ObjectUI.py:2070 +#: appGUI/ObjectUI.py:2093 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:237 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:224 -#: appTools/ToolNCC.py:439 appTools/ToolPaint.py:400 +#: appObjects/FlatCAMCNCJob.py:1157 appObjects/FlatCAMCNCJob.py:1179 +#: appTools/ToolNCC.py:4034 appTools/ToolNCC.py:4137 appTools/ToolPaint.py:3025 msgid "Connect" msgstr "Connect" -#: appDatabase.py:1512 appDatabase.py:1629 appEditors/AppGeoEditor.py:507 +#: appDatabase.py:1598 appDatabase.py:1715 appEditors/AppGeoEditor.py:507 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:239 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:226 -#: appTools/ToolNCC.py:443 appTools/ToolPaint.py:403 +#: appTools/ToolNCC.py:4038 appTools/ToolNCC.py:4139 appTools/ToolPaint.py:3028 msgid "" "Draw lines between resulting\n" "segments to minimize tool lifts." @@ -1023,17 +1168,17 @@ msgstr "" "Draw lines between resulting\n" "segments to minimize tool lifts." -#: appDatabase.py:1518 appDatabase.py:1633 +#: appDatabase.py:1604 appDatabase.py:1719 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:246 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:232 -#: appTools/ToolNCC.py:449 appTools/ToolPaint.py:407 +#: appTools/ToolNCC.py:4044 appTools/ToolNCC.py:4145 appTools/ToolPaint.py:3032 msgid "Contour" msgstr "Contour" -#: appDatabase.py:1522 appDatabase.py:1636 appEditors/AppGeoEditor.py:517 +#: appDatabase.py:1608 appDatabase.py:1722 appEditors/AppGeoEditor.py:517 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:248 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:234 -#: appTools/ToolNCC.py:453 appTools/ToolPaint.py:410 +#: appTools/ToolNCC.py:4048 appTools/ToolNCC.py:4147 appTools/ToolPaint.py:3035 msgid "" "Cut around the perimeter of the polygon\n" "to trim rough edges." @@ -1041,18 +1186,19 @@ msgstr "" "Cut around the perimeter of the polygon\n" "to trim rough edges." -#: appDatabase.py:1528 appEditors/AppGeoEditor.py:611 -#: appEditors/AppGerberEditor.py:5304 appGUI/ObjectUI.py:143 -#: appGUI/ObjectUI.py:1394 appGUI/ObjectUI.py:2256 +#: appDatabase.py:1614 appDatabase.py:1672 appEditors/AppGeoEditor.py:611 +#: appEditors/AppGerberEditor.py:5321 appEditors/appGCodeEditor.py:692 +#: appGUI/ObjectUI.py:143 appGUI/ObjectUI.py:858 appGUI/ObjectUI.py:1830 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:255 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:183 -#: appTools/ToolEtchCompensation.py:199 appTools/ToolEtchCompensation.py:207 -#: appTools/ToolNCC.py:459 appTools/ToolTransform.py:31 +#: appTools/ToolEtchCompensation.py:417 appTools/ToolEtchCompensation.py:425 +#: appTools/ToolNCC.py:4054 appTools/ToolNCC.py:4153 appTools/ToolPaint.py:2974 +#: appTools/ToolPaint.py:3081 appTools/ToolTransform.py:517 msgid "Offset" msgstr "Offset" -#: appDatabase.py:1532 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:257 -#: appTools/ToolNCC.py:463 +#: appDatabase.py:1618 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:257 +#: appTools/ToolNCC.py:4058 appTools/ToolNCC.py:4155 msgid "" "If used, it will add an offset to the copper features.\n" "The copper clearing will finish to a distance\n" @@ -1064,9 +1210,9 @@ msgstr "" "from the copper features.\n" "The value can be between 0 and 10 FlatCAM units." -#: appDatabase.py:1567 appEditors/AppGeoEditor.py:452 +#: appDatabase.py:1653 appEditors/AppGeoEditor.py:452 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:165 -#: appTools/ToolPaint.py:330 +#: appTools/ToolPaint.py:2955 msgid "" "How much (percentage) of the tool width to overlap each tool pass.\n" "Adjust the value starting with lower values\n" @@ -1084,9 +1230,9 @@ msgstr "" "Higher values = slow processing and slow execution on CNC\n" "due of too many paths." -#: appDatabase.py:1588 appEditors/AppGeoEditor.py:472 +#: appDatabase.py:1674 appEditors/AppGeoEditor.py:472 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:185 -#: appTools/ToolPaint.py:351 +#: appTools/ToolPaint.py:2976 appTools/ToolPaint.py:3083 msgid "" "Distance by which to avoid\n" "the edges of the polygon to\n" @@ -1096,8 +1242,8 @@ msgstr "" "the edges of the polygon to\n" "be painted." -#: appDatabase.py:1603 appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:200 -#: appTools/ToolPaint.py:366 +#: appDatabase.py:1689 appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:200 +#: appTools/ToolPaint.py:2991 msgid "" "Algorithm for painting:\n" "- Standard: Fixed step inwards.\n" @@ -1117,21 +1263,21 @@ msgstr "" "- Combo: In case of failure a new method will be picked from the above\n" "in the order specified." -#: appDatabase.py:1615 appDatabase.py:1617 +#: appDatabase.py:1701 appDatabase.py:1703 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:217 -#: appTools/ToolPaint.py:389 appTools/ToolPaint.py:391 -#: appTools/ToolPaint.py:692 appTools/ToolPaint.py:697 -#: appTools/ToolPaint.py:1901 tclCommands/TclCommandPaint.py:131 +#: appTools/ToolPaint.py:154 appTools/ToolPaint.py:159 +#: appTools/ToolPaint.py:1497 appTools/ToolPaint.py:3014 +#: appTools/ToolPaint.py:3016 tclCommands/TclCommandPaint.py:131 msgid "Laser_lines" msgstr "Laser_lines" -#: appDatabase.py:1654 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:154 -#: appTools/ToolIsolation.py:323 +#: appDatabase.py:1740 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:154 +#: appTools/ToolIsolation.py:3131 msgid "Passes" msgstr "Passes" -#: appDatabase.py:1656 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:156 -#: appTools/ToolIsolation.py:325 +#: appDatabase.py:1742 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:156 +#: appTools/ToolIsolation.py:3133 msgid "" "Width of the isolation gap in\n" "number (integer) of tool widths." @@ -1139,22 +1285,23 @@ msgstr "" "Width of the isolation gap in\n" "number (integer) of tool widths." -#: appDatabase.py:1669 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:169 -#: appTools/ToolIsolation.py:338 +#: appDatabase.py:1755 appGUI/ObjectUI.py:1554 +#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:169 +#: appTools/ToolIsolation.py:3146 msgid "How much (percentage) of the tool width to overlap each tool pass." msgstr "How much (percentage) of the tool width to overlap each tool pass." -#: appDatabase.py:1702 appGUI/ObjectUI.py:236 +#: appDatabase.py:1788 appGUI/ObjectUI.py:234 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:201 -#: appTools/ToolIsolation.py:371 +#: appTools/ToolIsolation.py:3179 msgid "Follow" msgstr "Follow" -#: appDatabase.py:1704 appDatabase.py:1710 appGUI/ObjectUI.py:237 +#: appDatabase.py:1790 appDatabase.py:1796 appGUI/ObjectUI.py:235 #: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:45 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:203 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:209 -#: appTools/ToolIsolation.py:373 appTools/ToolIsolation.py:379 +#: appTools/ToolIsolation.py:3181 appTools/ToolIsolation.py:3187 msgid "" "Generate a 'Follow' geometry.\n" "This means that it will cut through\n" @@ -1164,13 +1311,13 @@ msgstr "" "This means that it will cut through\n" "the middle of the trace." -#: appDatabase.py:1719 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:218 -#: appTools/ToolIsolation.py:388 +#: appDatabase.py:1805 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:218 +#: appTools/ToolIsolation.py:3196 msgid "Isolation Type" msgstr "Isolation Type" -#: appDatabase.py:1721 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:220 -#: appTools/ToolIsolation.py:390 +#: appDatabase.py:1807 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:220 +#: appTools/ToolIsolation.py:3198 msgid "" "Choose how the isolation will be executed:\n" "- 'Full' -> complete isolation of polygons\n" @@ -1190,35 +1337,323 @@ msgstr "" "isolation can be done only when there is an opening\n" "inside of the polygon (e.g polygon is a 'doughnut' shape)." -#: appDatabase.py:1730 appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:75 +#: appDatabase.py:1816 appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:72 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:229 -#: appTools/ToolIsolation.py:399 +#: appTools/ToolIsolation.py:3207 msgid "Full" msgstr "Full" -#: appDatabase.py:1731 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:230 -#: appTools/ToolIsolation.py:400 +#: appDatabase.py:1817 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:230 +#: appTools/ToolIsolation.py:3208 msgid "Ext" msgstr "Ext" -#: appDatabase.py:1732 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:231 -#: appTools/ToolIsolation.py:401 +#: appDatabase.py:1818 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:231 +#: appTools/ToolIsolation.py:3209 msgid "Int" msgstr "Int" -#: appDatabase.py:1755 +#: appDatabase.py:1836 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:59 +#: appTools/ToolDrilling.py:2131 appTools/ToolMilling.py:1795 +msgid "" +"Drill depth (negative)\n" +"below the copper surface." +msgstr "" +"Drill depth (negative)\n" +"below the copper surface." + +#: appDatabase.py:1855 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:283 +#: appTools/ToolDrilling.py:2274 appTools/ToolMilling.py:1980 +msgid "Offset Z" +msgstr "Offset Z" + +#: appDatabase.py:1857 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:285 +#: appTools/ToolDrilling.py:2276 appTools/ToolMilling.py:1982 +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 "" +"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." + +#: appDatabase.py:1874 appGUI/ObjectUI.py:1112 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:72 +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:82 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:80 +#: appTools/ToolCutOut.py:1886 appTools/ToolDrilling.py:2153 +#: appTools/ToolMilling.py:1817 +msgid "" +"Use multiple passes to limit\n" +"the cut depth in each pass. Will\n" +"cut multiple times until Cut Z is\n" +"reached." +msgstr "" +"Use multiple passes to limit\n" +"the cut depth in each pass. Will\n" +"cut multiple times until Cut Z is\n" +"reached." + +#: appDatabase.py:1896 appGUI/ObjectUI.py:1126 +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:94 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:92 +#: appTools/ToolCutOut.py:1900 appTools/ToolDrilling.py:2166 +#: appTools/ToolMilling.py:1830 +msgid "Depth of each pass (positive)." +msgstr "Depth of each pass (positive)." + +#: appDatabase.py:1905 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:100 +#: appTools/ToolDrilling.py:2177 appTools/ToolMilling.py:1841 +msgid "" +"Tool height when travelling\n" +"across the XY plane." +msgstr "" +"Tool height when travelling\n" +"across the XY plane." + +#: appDatabase.py:1931 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:173 +#: appTools/ToolDrilling.py:2198 appTools/ToolMilling.py:1877 +msgid "" +"Tool speed while drilling\n" +"(in units per minute).\n" +"So called 'Plunge' feedrate.\n" +"This is for linear move G01." +msgstr "" +"Tool speed while drilling\n" +"(in units per minute).\n" +"So called 'Plunge' feedrate.\n" +"This is for linear move G01." + +#: appDatabase.py:1946 appGUI/ObjectUI.py:1183 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:67 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:317 +#: appTools/ToolDrilling.py:2213 appTools/ToolMilling.py:1892 +msgid "Feedrate Rapids" +msgstr "Feedrate Rapids" + +#: appDatabase.py:1948 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:319 +#: appTools/ToolDrilling.py:2215 appTools/ToolMilling.py:1894 +msgid "" +"Tool speed while drilling\n" +"(in units per minute).\n" +"This is for the rapid move G00.\n" +"It is useful only for Marlin,\n" +"ignore for any other cases." +msgstr "" +"Tool speed while drilling\n" +"(in units per minute).\n" +"This is for the rapid move G00.\n" +"It is useful only for Marlin,\n" +"ignore for any other cases." + +#: appDatabase.py:1969 appGUI/ObjectUI.py:1226 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:217 +#: appObjects/FlatCAMGeometry.py:1761 appTools/ToolDrilling.py:1296 +#: appTools/ToolDrilling.py:2235 appTools/ToolMilling.py:1307 +#: appTools/ToolMilling.py:1942 +msgid "Spindle speed" +msgstr "Spindle speed" + +#: appDatabase.py:1971 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:188 +#: appTools/ToolDrilling.py:2237 appTools/ToolMilling.py:1944 +msgid "" +"Speed of the spindle\n" +"in RPM (optional)" +msgstr "" +"Speed of the spindle\n" +"in RPM (optional)" + +#: appDatabase.py:2016 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:243 +#: appTools/ToolDrilling.py:2290 +#, fuzzy +#| msgid "Mill Slots" +msgid "Drill slots" +msgstr "Mill Slots" + +#: appDatabase.py:2018 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:245 +#: appTools/ToolDrilling.py:2292 +msgid "If the selected tool has slots then they will be drilled." +msgstr "" + +#: appDatabase.py:2029 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:252 +#: appTools/ToolDrilling.py:2300 +#, fuzzy +#| msgid "How much (percentage) of the tool width to overlap each tool pass." +msgid "" +"How much (percentage) of the tool diameter to overlap previous drill hole." +msgstr "How much (percentage) of the tool width to overlap each tool pass." + +#: appDatabase.py:2043 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:264 +#: appTools/ToolDrilling.py:2314 +msgid "Last drill" +msgstr "" + +#: appDatabase.py:2045 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:266 +#: appTools/ToolDrilling.py:2316 +msgid "" +"If the slot length is not completely covered by drill holes,\n" +"add a drill hole on the slot end point." +msgstr "" + +#: appDatabase.py:2073 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:117 +#: appTools/ToolCutOut.py:1917 +msgid "" +"Margin over bounds. A positive value here\n" +"will make the cutout of the PCB further from\n" +"the actual PCB border" +msgstr "" +"Margin over bounds. A positive value here\n" +"will make the cutout of the PCB further from\n" +"the actual PCB border" + +#: appDatabase.py:2085 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:131 +#: appTools/ToolCutOut.py:1925 +msgid "Gap size" +msgstr "Gap size" + +#: appDatabase.py:2087 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:133 +#: appTools/ToolCutOut.py:1927 +msgid "" +"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)." +msgstr "" +"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)." + +#: appDatabase.py:2096 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:148 +#: appTools/ToolCutOut.py:1940 +#, fuzzy +#| msgid "Image type" +msgid "Gap type" +msgstr "Image type" + +#: appDatabase.py:2098 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:150 +#: appTools/ToolCutOut.py:1942 +msgid "" +"The type of gap:\n" +"- Bridge -> the cutout will be interrupted by bridges\n" +"- Thin -> same as 'bridge' but it will be thinner by partially milling the " +"gap\n" +"- M-Bites -> 'Mouse Bites' - same as 'bridge' but covered with drill holes" +msgstr "" + +#: appDatabase.py:2106 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:158 +#: appTools/ToolCutOut.py:1950 +msgid "Bridge" +msgstr "" + +#: appDatabase.py:2107 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:159 +#: appTools/ToolCutOut.py:1951 +msgid "Thin" +msgstr "" + +#: appDatabase.py:2118 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:169 +#: appTools/ToolCutOut.py:1961 +#, fuzzy +#| msgid "MultiDepth" +msgid "Depth" +msgstr "MultiDepth" + +#: appDatabase.py:2120 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:171 +#: appTools/ToolCutOut.py:1963 +#, fuzzy +#| msgid "" +#| "The width of the travel lines to be\n" +#| "rendered in the plot." +msgid "" +"The depth until the milling is done\n" +"in order to thin the gaps." +msgstr "" +"The width of the travel lines to be\n" +"rendered in the plot." + +#: appDatabase.py:2137 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:43 +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:186 +#: appTools/ToolCalculators.py:249 appTools/ToolCutOut.py:1978 +msgid "Tool Diameter" +msgstr "Tool Diameter" + +#: appDatabase.py:2139 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:188 +#: appTools/ToolCutOut.py:1980 +msgid "The drill hole diameter when doing mpuse bites." +msgstr "" + +#: appDatabase.py:2150 +#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:151 +#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:180 +#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:209 +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:198 +#: appTools/ToolCopperThieving.py:1327 appTools/ToolCopperThieving.py:1367 +#: appTools/ToolCopperThieving.py:1407 appTools/ToolCutOut.py:1990 +msgid "Spacing" +msgstr "Spacing" + +#: appDatabase.py:2152 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:200 +#: appTools/ToolCutOut.py:1992 +msgid "The spacing between drill holes when doing mouse bites." +msgstr "" + +#: appDatabase.py:2171 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:233 +#: appTools/ToolCutOut.py:1793 +msgid "Convex Shape" +msgstr "Convex Shape" + +#: appDatabase.py:2174 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:235 +#: appTools/ToolCutOut.py:1795 appTools/ToolCutOut.py:1800 +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." + +#: appDatabase.py:2182 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:209 +#: appTools/ToolCutOut.py:2021 +msgid "Gaps" +msgstr "Gaps" + +#: appDatabase.py:2184 appTools/ToolCutOut.py:2023 +msgid "" +"Number of gaps used for the Automatic cutout.\n" +"There can be maximum 8 bridges/gaps.\n" +"The choices are:\n" +"- None - no gaps\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" +msgstr "" +"Number of gaps used for the Automatic cutout.\n" +"There can be maximum 8 bridges/gaps.\n" +"The choices are:\n" +"- None - no gaps\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" + +#: appDatabase.py:2221 msgid "Add Tool in DB" msgstr "Add Tool in DB" -#: appDatabase.py:1789 +#: appDatabase.py:2259 msgid "Save DB" msgstr "Save DB" -#: appDatabase.py:1791 +#: appDatabase.py:2262 msgid "Save the Tools Database information's." msgstr "Save the Tools Database information's." -#: appDatabase.py:1797 +#: appDatabase.py:2268 msgid "" "Insert a new tool in the Tools Table of the\n" "object/application tool after selecting a tool\n" @@ -1228,50 +1663,137 @@ msgstr "" "object/application tool after selecting a tool\n" "in the Tools Database." -#: appEditors/AppExcEditor.py:50 appEditors/AppExcEditor.py:74 -#: appEditors/AppExcEditor.py:168 appEditors/AppExcEditor.py:385 +#: appDatabase.py:2294 appDatabase.py:2305 appEditors/AppExcEditor.py:4215 +#: appEditors/AppExcEditor.py:4226 appEditors/appGCodeEditor.py:775 +#: appEditors/appGCodeEditor.py:786 appGUI/ObjectUI.py:163 +#: appGUI/ObjectUI.py:174 appTool.py:280 appTool.py:291 +#: appTools/ToolAlignObjects.py:516 appTools/ToolAlignObjects.py:527 +#: appTools/ToolCalculators.py:390 appTools/ToolCalculators.py:401 +#: appTools/ToolCalibration.py:1395 appTools/ToolCalibration.py:1406 +#: appTools/ToolCopperThieving.py:1595 appTools/ToolCopperThieving.py:1606 +#: appTools/ToolCorners.py:462 appTools/ToolCorners.py:473 +#: appTools/ToolCutOut.py:2195 appTools/ToolCutOut.py:2206 +#: appTools/ToolDblSided.py:965 appTools/ToolDblSided.py:976 +#: appTools/ToolDistance.py:659 appTools/ToolDistance.py:670 +#: appTools/ToolDistanceMin.py:324 appTools/ToolDistanceMin.py:335 +#: appTools/ToolDrilling.py:2652 appTools/ToolDrilling.py:2663 +#: appTools/ToolEtchCompensation.py:476 appTools/ToolEtchCompensation.py:487 +#: appTools/ToolExtractDrills.py:732 appTools/ToolExtractDrills.py:743 +#: appTools/ToolFiducials.py:950 appTools/ToolFiducials.py:961 +#: appTools/ToolFilm.py:1282 appTools/ToolFilm.py:1293 +#: appTools/ToolImage.py:322 appTools/ToolImage.py:333 +#: appTools/ToolInvertGerber.py:304 appTools/ToolInvertGerber.py:315 +#: appTools/ToolIsolation.py:3439 appTools/ToolIsolation.py:3450 +#: appTools/ToolMilling.py:2341 appTools/ToolMilling.py:2352 +#: appTools/ToolNCC.py:4384 appTools/ToolNCC.py:4395 +#: appTools/ToolOptimal.py:614 appTools/ToolOptimal.py:625 +#: appTools/ToolPaint.py:3265 appTools/ToolPaint.py:3276 +#: appTools/ToolPanelize.py:914 appTools/ToolPanelize.py:925 +#: appTools/ToolPcbWizard.py:488 appTools/ToolPcbWizard.py:499 +#: appTools/ToolPunchGerber.py:1022 appTools/ToolPunchGerber.py:1033 +#: appTools/ToolQRCode.py:919 appTools/ToolQRCode.py:930 +#: appTools/ToolRulesCheck.py:1655 appTools/ToolRulesCheck.py:1666 +#: appTools/ToolSolderPaste.py:1575 appTools/ToolSolderPaste.py:1586 +#: appTools/ToolSub.py:770 appTools/ToolSub.py:781 +#: appTools/ToolTransform.py:964 appTools/ToolTransform.py:975 +msgid "Edited value is out of range" +msgstr "Edited value is out of range" + +#: appDatabase.py:2300 appDatabase.py:2307 appEditors/AppExcEditor.py:4221 +#: appEditors/AppExcEditor.py:4228 appEditors/appGCodeEditor.py:781 +#: appEditors/appGCodeEditor.py:788 appGUI/ObjectUI.py:169 +#: appGUI/ObjectUI.py:176 appTool.py:286 appTool.py:293 +#: appTools/ToolAlignObjects.py:522 appTools/ToolAlignObjects.py:529 +#: appTools/ToolCalculators.py:396 appTools/ToolCalculators.py:403 +#: appTools/ToolCalibration.py:1401 appTools/ToolCalibration.py:1408 +#: appTools/ToolCopperThieving.py:1601 appTools/ToolCopperThieving.py:1608 +#: appTools/ToolCorners.py:468 appTools/ToolCorners.py:475 +#: appTools/ToolCutOut.py:2201 appTools/ToolCutOut.py:2208 +#: appTools/ToolDblSided.py:971 appTools/ToolDblSided.py:978 +#: appTools/ToolDistance.py:665 appTools/ToolDistance.py:672 +#: appTools/ToolDistanceMin.py:330 appTools/ToolDistanceMin.py:337 +#: appTools/ToolDrilling.py:2658 appTools/ToolDrilling.py:2665 +#: appTools/ToolEtchCompensation.py:482 appTools/ToolEtchCompensation.py:489 +#: appTools/ToolExtractDrills.py:738 appTools/ToolExtractDrills.py:745 +#: appTools/ToolFiducials.py:956 appTools/ToolFiducials.py:963 +#: appTools/ToolFilm.py:1288 appTools/ToolFilm.py:1295 +#: appTools/ToolImage.py:328 appTools/ToolImage.py:335 +#: appTools/ToolInvertGerber.py:310 appTools/ToolInvertGerber.py:317 +#: appTools/ToolIsolation.py:3445 appTools/ToolIsolation.py:3452 +#: appTools/ToolMilling.py:2347 appTools/ToolMilling.py:2354 +#: appTools/ToolNCC.py:4390 appTools/ToolNCC.py:4397 +#: appTools/ToolOptimal.py:620 appTools/ToolOptimal.py:627 +#: appTools/ToolPaint.py:3271 appTools/ToolPaint.py:3278 +#: appTools/ToolPanelize.py:920 appTools/ToolPanelize.py:927 +#: appTools/ToolPcbWizard.py:494 appTools/ToolPcbWizard.py:501 +#: appTools/ToolPunchGerber.py:1028 appTools/ToolPunchGerber.py:1035 +#: appTools/ToolQRCode.py:925 appTools/ToolQRCode.py:932 +#: appTools/ToolRulesCheck.py:1661 appTools/ToolRulesCheck.py:1668 +#: appTools/ToolSolderPaste.py:1581 appTools/ToolSolderPaste.py:1588 +#: appTools/ToolSub.py:776 appTools/ToolSub.py:783 +#: appTools/ToolTransform.py:970 appTools/ToolTransform.py:977 +msgid "Edited value is within limits." +msgstr "Edited value is within limits." + +#: appDatabase.py:2573 appTranslation.py:210 app_Main.py:3380 app_Main.py:6872 +msgid "Save changes" +msgstr "Save changes" + +#: appDatabase.py:3290 +msgid "" +"To change tool properties select only one tool. Tools currently selected" +msgstr "" + +#: appDatabase.py:3451 appTools/ToolDrilling.py:893 +#, fuzzy +#| msgid "Tool Diameter." +msgid "Tools DB empty." +msgstr "Tool Diameter." + +#: appEditors/AppExcEditor.py:51 appEditors/AppExcEditor.py:75 +#: appEditors/AppExcEditor.py:169 appEditors/AppExcEditor.py:386 #: appEditors/AppExcEditor.py:589 appEditors/AppGerberEditor.py:241 #: appEditors/AppGerberEditor.py:248 msgid "Click to place ..." msgstr "Click to place ..." -#: appEditors/AppExcEditor.py:58 +#: appEditors/AppExcEditor.py:59 msgid "To add a drill first select a tool" msgstr "To add a drill first select a tool" -#: appEditors/AppExcEditor.py:122 +#: appEditors/AppExcEditor.py:123 msgid "Done. Drill added." msgstr "Done. Drill added." -#: appEditors/AppExcEditor.py:176 +#: appEditors/AppExcEditor.py:177 msgid "To add an Drill Array first select a tool in Tool Table" msgstr "To add an Drill Array first select a tool in Tool Table" -#: appEditors/AppExcEditor.py:192 appEditors/AppExcEditor.py:415 +#: appEditors/AppExcEditor.py:193 appEditors/AppExcEditor.py:415 #: appEditors/AppExcEditor.py:636 appEditors/AppExcEditor.py:1151 #: appEditors/AppExcEditor.py:1178 appEditors/AppGerberEditor.py:471 #: appEditors/AppGerberEditor.py:1944 appEditors/AppGerberEditor.py:1974 msgid "Click on target location ..." msgstr "Click on target location ..." -#: appEditors/AppExcEditor.py:211 +#: appEditors/AppExcEditor.py:212 msgid "Click on the Drill Circular Array Start position" msgstr "Click on the Drill Circular Array Start position" -#: appEditors/AppExcEditor.py:233 appEditors/AppExcEditor.py:677 +#: appEditors/AppExcEditor.py:234 appEditors/AppExcEditor.py:677 #: appEditors/AppGerberEditor.py:516 msgid "The value is not Float. Check for comma instead of dot separator." msgstr "The value is not Float. Check for comma instead of dot separator." -#: appEditors/AppExcEditor.py:237 +#: appEditors/AppExcEditor.py:238 msgid "The value is mistyped. Check the value" msgstr "The value is mistyped. Check the value" -#: appEditors/AppExcEditor.py:336 +#: appEditors/AppExcEditor.py:337 msgid "Too many drills for the selected spacing angle." msgstr "Too many drills for the selected spacing angle." -#: appEditors/AppExcEditor.py:354 +#: appEditors/AppExcEditor.py:355 msgid "Done. Drill Array added." msgstr "Done. Drill Array added." @@ -1336,23 +1858,109 @@ msgstr "Done. Drill(s) Move completed." msgid "Done. Drill(s) copied." msgstr "Done. Drill(s) copied." -#: appEditors/AppExcEditor.py:1557 +#: appEditors/AppExcEditor.py:1897 appObjects/FlatCAMExcellon.py:324 +#: appTools/ToolDrilling.py:570 appTools/ToolMilling.py:494 +msgid "Total Drills" +msgstr "Total Drills" + +#: appEditors/AppExcEditor.py:1929 appObjects/FlatCAMExcellon.py:358 +#: appTools/ToolDrilling.py:597 appTools/ToolMilling.py:521 +msgid "Total Slots" +msgstr "Total Slots" + +#: appEditors/AppExcEditor.py:2003 appObjects/FlatCAMGeometry.py:682 +#: appObjects/FlatCAMGeometry.py:1170 appObjects/FlatCAMGeometry.py:1907 +#: appObjects/FlatCAMGeometry.py:2566 appTools/ToolIsolation.py:1217 +#: appTools/ToolIsolation.py:1667 appTools/ToolNCC.py:1150 +#: appTools/ToolNCC.py:1284 appTools/ToolPaint.py:888 +#: appTools/ToolPaint.py:1026 appTools/ToolPaint.py:1739 +#: appTools/ToolSolderPaste.py:455 appTools/ToolSolderPaste.py:527 +msgid "Wrong value format entered, use a number." +msgstr "Wrong value format entered, use a number." + +#: appEditors/AppExcEditor.py:2014 +msgid "" +"Tool already in the original or actual tool list.\n" +"Save and reedit Excellon if you need to add this tool. " +msgstr "" +"Tool already in the original or actual tool list.\n" +"Save and reedit Excellon if you need to add this tool. " + +#: appEditors/AppExcEditor.py:2022 appGUI/MainGUI.py:3512 +msgid "Added new tool with dia" +msgstr "Added new tool with dia" + +#: appEditors/AppExcEditor.py:2055 +msgid "Select a tool in Tool Table" +msgstr "Select a tool in Tool Table" + +#: appEditors/AppExcEditor.py:2085 +msgid "Deleted tool with diameter" +msgstr "Deleted tool with diameter" + +#: appEditors/AppExcEditor.py:2232 +msgid "Done. Tool edit completed." +msgstr "Done. Tool edit completed." + +#: appEditors/AppExcEditor.py:2858 +msgid "There are no Tools definitions in the file. Aborting Excellon creation." +msgstr "" +"There are no Tools definitions in the file. Aborting Excellon creation." + +#: appEditors/AppExcEditor.py:2862 +msgid "An internal error has ocurred. See Shell.\n" +msgstr "An internal error has ocurred. See Shell.\n" + +#: appEditors/AppExcEditor.py:2867 +msgid "Creating Excellon." +msgstr "Creating Excellon." + +#: appEditors/AppExcEditor.py:2881 +msgid "Excellon editing finished." +msgstr "Excellon editing finished." + +#: appEditors/AppExcEditor.py:2897 +msgid "Cancelled. There is no Tool/Drill selected" +msgstr "Cancelled. There is no Tool/Drill selected" + +#: appEditors/AppExcEditor.py:3123 appEditors/AppExcEditor.py:3130 +#: appEditors/AppGeoEditor.py:4233 appEditors/AppGeoEditor.py:4247 +#: appEditors/AppGerberEditor.py:1085 appEditors/AppGerberEditor.py:1312 +#: appEditors/AppGerberEditor.py:1497 appEditors/AppGerberEditor.py:1766 +#: appEditors/AppGerberEditor.py:4625 appEditors/AppGerberEditor.py:4642 +#: appGUI/MainGUI.py:2859 appGUI/MainGUI.py:2871 +#: appTools/ToolAlignObjects.py:253 appTools/ToolAlignObjects.py:275 +#: app_Main.py:4955 app_Main.py:5109 +msgid "Done." +msgstr "Done." + +#: appEditors/AppExcEditor.py:3491 +msgid "Done. Drill(s) deleted." +msgstr "Done. Drill(s) deleted." + +#: appEditors/AppExcEditor.py:3564 appEditors/AppExcEditor.py:3574 +#: appEditors/AppGerberEditor.py:5073 +msgid "Click on the circular array Center position" +msgstr "Click on the circular array Center position" + +#: appEditors/AppExcEditor.py:3705 appGUI/ObjectUI.py:609 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:26 msgid "Excellon Editor" msgstr "Excellon Editor" -#: appEditors/AppExcEditor.py:1564 appEditors/AppGerberEditor.py:2469 +#: appEditors/AppExcEditor.py:3712 appEditors/AppGerberEditor.py:2469 +#: appEditors/appGCodeEditor.py:674 msgid "Name:" msgstr "Name:" -#: appEditors/AppExcEditor.py:1570 appGUI/ObjectUI.py:540 -#: appGUI/ObjectUI.py:1362 appTools/ToolIsolation.py:118 -#: appTools/ToolNCC.py:120 appTools/ToolPaint.py:114 -#: appTools/ToolSolderPaste.py:79 +#: appEditors/AppExcEditor.py:3718 appGUI/ObjectUI.py:530 +#: appGUI/ObjectUI.py:826 appTools/ToolIsolation.py:2972 +#: appTools/ToolNCC.py:3765 appTools/ToolPaint.py:2799 +#: appTools/ToolSolderPaste.py:1155 msgid "Tools Table" msgstr "Tools Table" -#: appEditors/AppExcEditor.py:1572 appGUI/ObjectUI.py:542 +#: appEditors/AppExcEditor.py:3720 appGUI/ObjectUI.py:532 msgid "" "Tools in this Excellon object\n" "when are used for drilling." @@ -1360,21 +1968,21 @@ msgstr "" "Tools in this Excellon object\n" "when are used for drilling." -#: appEditors/AppExcEditor.py:1584 appEditors/AppExcEditor.py:3041 -#: appGUI/ObjectUI.py:560 appObjects/FlatCAMExcellon.py:1265 -#: appObjects/FlatCAMExcellon.py:1368 appObjects/FlatCAMExcellon.py:1553 -#: appTools/ToolIsolation.py:130 appTools/ToolNCC.py:132 -#: appTools/ToolPaint.py:127 appTools/ToolPcbWizard.py:76 -#: appTools/ToolProperties.py:416 appTools/ToolProperties.py:476 -#: appTools/ToolSolderPaste.py:90 tclCommands/TclCommandDrillcncjob.py:195 -msgid "Diameter" -msgstr "Diameter" +#: appEditors/AppExcEditor.py:3741 +#, fuzzy +#| msgid "Total Slots" +msgid "Convert Slots" +msgstr "Total Slots" -#: appEditors/AppExcEditor.py:1592 +#: appEditors/AppExcEditor.py:3743 +msgid "Convert the slots in the selected tools to drills." +msgstr "" + +#: appEditors/AppExcEditor.py:3753 msgid "Add/Delete Tool" msgstr "Add/Delete Tool" -#: appEditors/AppExcEditor.py:1594 +#: appEditors/AppExcEditor.py:3755 msgid "" "Add/Delete a tool to the tool list\n" "for this Excellon object." @@ -1382,16 +1990,16 @@ msgstr "" "Add/Delete a tool to the tool list\n" "for this Excellon object." -#: appEditors/AppExcEditor.py:1606 appGUI/ObjectUI.py:1482 +#: appEditors/AppExcEditor.py:3767 appGUI/ObjectUI.py:961 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:57 msgid "Diameter for the new tool" msgstr "Diameter for the new tool" -#: appEditors/AppExcEditor.py:1616 +#: appEditors/AppExcEditor.py:3777 msgid "Add Tool" msgstr "Add Tool" -#: appEditors/AppExcEditor.py:1618 +#: appEditors/AppExcEditor.py:3779 msgid "" "Add a new tool to the tool list\n" "with the diameter specified above." @@ -1399,11 +2007,11 @@ msgstr "" "Add a new tool to the tool list\n" "with the diameter specified above." -#: appEditors/AppExcEditor.py:1630 +#: appEditors/AppExcEditor.py:3791 msgid "Delete Tool" msgstr "Delete Tool" -#: appEditors/AppExcEditor.py:1632 +#: appEditors/AppExcEditor.py:3793 msgid "" "Delete a tool in the tool list\n" "by selecting a row in the tool table." @@ -1411,40 +2019,40 @@ msgstr "" "Delete a tool in the tool list\n" "by selecting a row in the tool table." -#: appEditors/AppExcEditor.py:1650 appGUI/MainGUI.py:4392 +#: appEditors/AppExcEditor.py:3811 appGUI/MainGUI.py:4561 msgid "Resize Drill(s)" msgstr "Resize Drill(s)" -#: appEditors/AppExcEditor.py:1652 +#: appEditors/AppExcEditor.py:3813 msgid "Resize a drill or a selection of drills." msgstr "Resize a drill or a selection of drills." -#: appEditors/AppExcEditor.py:1659 +#: appEditors/AppExcEditor.py:3820 msgid "Resize Dia" msgstr "Resize Dia" -#: appEditors/AppExcEditor.py:1661 +#: appEditors/AppExcEditor.py:3822 msgid "Diameter to resize to." msgstr "Diameter to resize to." -#: appEditors/AppExcEditor.py:1672 +#: appEditors/AppExcEditor.py:3833 msgid "Resize" msgstr "Resize" -#: appEditors/AppExcEditor.py:1674 +#: appEditors/AppExcEditor.py:3835 msgid "Resize drill(s)" msgstr "Resize drill(s)" -#: appEditors/AppExcEditor.py:1699 appGUI/MainGUI.py:1514 -#: appGUI/MainGUI.py:4391 +#: appEditors/AppExcEditor.py:3860 appGUI/MainGUI.py:1564 +#: appGUI/MainGUI.py:4560 msgid "Add Drill Array" msgstr "Add Drill Array" -#: appEditors/AppExcEditor.py:1701 +#: appEditors/AppExcEditor.py:3862 msgid "Add an array of drills (linear or circular array)" msgstr "Add an array of drills (linear or circular array)" -#: appEditors/AppExcEditor.py:1707 +#: appEditors/AppExcEditor.py:3868 msgid "" "Select the type of drills array to create.\n" "It can be Linear X(Y) or Circular" @@ -1452,12 +2060,12 @@ msgstr "" "Select the type of drills array to create.\n" "It can be Linear X(Y) or Circular" -#: appEditors/AppExcEditor.py:1710 appEditors/AppExcEditor.py:1924 +#: appEditors/AppExcEditor.py:3871 appEditors/AppExcEditor.py:4085 #: appEditors/AppGerberEditor.py:2782 msgid "Linear" msgstr "Linear" -#: appEditors/AppExcEditor.py:1711 appEditors/AppExcEditor.py:1925 +#: appEditors/AppExcEditor.py:3872 appEditors/AppExcEditor.py:4086 #: appEditors/AppGerberEditor.py:2783 #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:52 #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:149 @@ -1467,32 +2075,31 @@ msgstr "Linear" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:78 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:61 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:70 -#: appTools/ToolExtractDrills.py:78 appTools/ToolExtractDrills.py:201 -#: appTools/ToolFiducials.py:223 appTools/ToolIsolation.py:207 -#: appTools/ToolNCC.py:221 appTools/ToolPaint.py:203 -#: appTools/ToolPunchGerber.py:89 appTools/ToolPunchGerber.py:229 +#: appTools/ToolExtractDrills.py:470 appTools/ToolExtractDrills.py:593 +#: appTools/ToolFiducials.py:834 appTools/ToolPunchGerber.py:743 +#: appTools/ToolPunchGerber.py:883 msgid "Circular" msgstr "Circular" -#: appEditors/AppExcEditor.py:1719 +#: appEditors/AppExcEditor.py:3880 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:68 msgid "Nr of drills" msgstr "Nr of drills" -#: appEditors/AppExcEditor.py:1720 +#: appEditors/AppExcEditor.py:3881 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:70 msgid "Specify how many drills to be in the array." msgstr "Specify how many drills to be in the array." -#: appEditors/AppExcEditor.py:1738 appEditors/AppExcEditor.py:1788 -#: appEditors/AppExcEditor.py:1860 appEditors/AppExcEditor.py:1953 -#: appEditors/AppExcEditor.py:2004 appEditors/AppGerberEditor.py:1580 +#: appEditors/AppExcEditor.py:3899 appEditors/AppExcEditor.py:3949 +#: appEditors/AppExcEditor.py:4021 appEditors/AppExcEditor.py:4114 +#: appEditors/AppExcEditor.py:4165 appEditors/AppGerberEditor.py:1580 #: appEditors/AppGerberEditor.py:2811 appEditors/AppGerberEditor.py:2860 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:178 msgid "Direction" msgstr "Direction" -#: appEditors/AppExcEditor.py:1740 appEditors/AppExcEditor.py:1955 +#: appEditors/AppExcEditor.py:3901 appEditors/AppExcEditor.py:4116 #: appEditors/AppGerberEditor.py:2813 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:86 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:234 @@ -1508,35 +2115,37 @@ msgstr "" "- 'Y' - vertical axis or \n" "- 'Angle' - a custom angle for the array inclination" -#: appEditors/AppExcEditor.py:1747 appEditors/AppExcEditor.py:1869 -#: appEditors/AppExcEditor.py:1962 appEditors/AppGerberEditor.py:2820 +#: appEditors/AppExcEditor.py:3908 appEditors/AppExcEditor.py:4030 +#: appEditors/AppExcEditor.py:4123 appEditors/AppGerberEditor.py:2820 +#: appGUI/GUIElements.py:3470 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:92 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:187 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:240 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:129 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:197 -#: appTools/ToolFilm.py:239 +#: appTools/ToolFilm.py:956 msgid "X" msgstr "X" -#: appEditors/AppExcEditor.py:1748 appEditors/AppExcEditor.py:1870 -#: appEditors/AppExcEditor.py:1963 appEditors/AppGerberEditor.py:2821 +#: appEditors/AppExcEditor.py:3909 appEditors/AppExcEditor.py:4031 +#: appEditors/AppExcEditor.py:4124 appEditors/AppGerberEditor.py:2821 +#: appGUI/GUIElements.py:3477 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:93 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:188 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:241 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:130 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:198 -#: appTools/ToolFilm.py:240 +#: appTools/ToolFilm.py:957 msgid "Y" msgstr "Y" -#: appEditors/AppExcEditor.py:1749 appEditors/AppExcEditor.py:1766 -#: appEditors/AppExcEditor.py:1800 appEditors/AppExcEditor.py:1871 -#: appEditors/AppExcEditor.py:1875 appEditors/AppExcEditor.py:1964 -#: appEditors/AppExcEditor.py:1982 appEditors/AppExcEditor.py:2016 +#: appEditors/AppExcEditor.py:3910 appEditors/AppExcEditor.py:3927 +#: appEditors/AppExcEditor.py:3961 appEditors/AppExcEditor.py:4032 +#: appEditors/AppExcEditor.py:4036 appEditors/AppExcEditor.py:4125 +#: appEditors/AppExcEditor.py:4143 appEditors/AppExcEditor.py:4177 #: appEditors/AppGeoEditor.py:683 appEditors/AppGerberEditor.py:2822 #: appEditors/AppGerberEditor.py:2839 appEditors/AppGerberEditor.py:2875 -#: appEditors/AppGerberEditor.py:5376 +#: appEditors/AppGerberEditor.py:5393 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:94 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:113 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:189 @@ -1546,12 +2155,12 @@ msgstr "Y" #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:131 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:149 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:96 -#: appTools/ToolDistance.py:120 appTools/ToolDistanceMin.py:68 -#: appTools/ToolTransform.py:130 +#: appTools/ToolDistance.py:626 appTools/ToolDistanceMin.py:256 +#: appTools/ToolTransform.py:617 msgid "Angle" msgstr "Angle" -#: appEditors/AppExcEditor.py:1753 appEditors/AppExcEditor.py:1968 +#: appEditors/AppExcEditor.py:3914 appEditors/AppExcEditor.py:4129 #: appEditors/AppGerberEditor.py:2826 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:100 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:248 @@ -1559,7 +2168,7 @@ msgstr "Angle" msgid "Pitch" msgstr "Pitch" -#: appEditors/AppExcEditor.py:1755 appEditors/AppExcEditor.py:1970 +#: appEditors/AppExcEditor.py:3916 appEditors/AppExcEditor.py:4131 #: appEditors/AppGerberEditor.py:2828 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:102 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:250 @@ -1567,7 +2176,7 @@ msgstr "Pitch" msgid "Pitch = Distance between elements of the array." msgstr "Pitch = Distance between elements of the array." -#: appEditors/AppExcEditor.py:1768 appEditors/AppExcEditor.py:1984 +#: appEditors/AppExcEditor.py:3929 appEditors/AppExcEditor.py:4145 msgid "" "Angle at which the linear array is placed.\n" "The precision is of max 2 decimals.\n" @@ -1579,7 +2188,7 @@ msgstr "" "Min value is: -360 degrees.\n" "Max value is: 360.00 degrees." -#: appEditors/AppExcEditor.py:1789 appEditors/AppExcEditor.py:2005 +#: appEditors/AppExcEditor.py:3950 appEditors/AppExcEditor.py:4166 #: appEditors/AppGerberEditor.py:2862 msgid "" "Direction for circular array.Can be CW = clockwise or CCW = counter " @@ -1588,27 +2197,27 @@ msgstr "" "Direction for circular array.Can be CW = clockwise or CCW = counter " "clockwise." -#: appEditors/AppExcEditor.py:1796 appEditors/AppExcEditor.py:2012 +#: appEditors/AppExcEditor.py:3957 appEditors/AppExcEditor.py:4173 #: appEditors/AppGerberEditor.py:2870 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:129 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:136 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:286 #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:145 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:171 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:366 msgid "CW" msgstr "CW" -#: appEditors/AppExcEditor.py:1797 appEditors/AppExcEditor.py:2013 +#: appEditors/AppExcEditor.py:3958 appEditors/AppExcEditor.py:4174 #: appEditors/AppGerberEditor.py:2871 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:130 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:137 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:287 #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:146 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:172 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:367 msgid "CCW" msgstr "CCW" -#: appEditors/AppExcEditor.py:1801 appEditors/AppExcEditor.py:2017 +#: appEditors/AppExcEditor.py:3962 appEditors/AppExcEditor.py:4178 #: appEditors/AppGerberEditor.py:2877 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:115 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:145 @@ -1619,11 +2228,11 @@ msgstr "CCW" msgid "Angle at which each element in circular array is placed." msgstr "Angle at which each element in circular array is placed." -#: appEditors/AppExcEditor.py:1835 +#: appEditors/AppExcEditor.py:3996 msgid "Slot Parameters" msgstr "Slot Parameters" -#: appEditors/AppExcEditor.py:1837 +#: appEditors/AppExcEditor.py:3998 msgid "" "Parameters for adding a slot (hole with oval shape)\n" "either single or as an part of an array." @@ -1631,19 +2240,19 @@ msgstr "" "Parameters for adding a slot (hole with oval shape)\n" "either single or as an part of an array." -#: appEditors/AppExcEditor.py:1846 +#: appEditors/AppExcEditor.py:4007 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:162 #: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:56 -#: appTools/ToolCorners.py:136 appTools/ToolProperties.py:559 +#: appTools/ToolCorners.py:398 appTools/ToolProperties.py:575 msgid "Length" msgstr "Length" -#: appEditors/AppExcEditor.py:1848 +#: appEditors/AppExcEditor.py:4009 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:164 msgid "Length = The length of the slot." msgstr "Length = The length of the slot." -#: appEditors/AppExcEditor.py:1862 +#: appEditors/AppExcEditor.py:4023 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:180 msgid "" "Direction on which the slot is oriented:\n" @@ -1656,7 +2265,7 @@ msgstr "" "- 'Y' - vertical axis or \n" "- 'Angle' - a custom angle for the slot inclination" -#: appEditors/AppExcEditor.py:1877 +#: appEditors/AppExcEditor.py:4038 msgid "" "Angle at which the slot is placed.\n" "The precision is of max 2 decimals.\n" @@ -1668,15 +2277,15 @@ msgstr "" "Min value is: -360 degrees.\n" "Max value is: 360.00 degrees." -#: appEditors/AppExcEditor.py:1910 +#: appEditors/AppExcEditor.py:4071 msgid "Slot Array Parameters" msgstr "Slot Array Parameters" -#: appEditors/AppExcEditor.py:1912 +#: appEditors/AppExcEditor.py:4073 msgid "Parameters for the array of slots (linear or circular array)" msgstr "Parameters for the array of slots (linear or circular array)" -#: appEditors/AppExcEditor.py:1921 +#: appEditors/AppExcEditor.py:4082 msgid "" "Select the type of slot array to create.\n" "It can be Linear X(Y) or Circular" @@ -1684,97 +2293,29 @@ msgstr "" "Select the type of slot array to create.\n" "It can be Linear X(Y) or Circular" -#: appEditors/AppExcEditor.py:1933 +#: appEditors/AppExcEditor.py:4094 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:219 msgid "Nr of slots" msgstr "Nr of slots" -#: appEditors/AppExcEditor.py:1934 +#: appEditors/AppExcEditor.py:4095 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:221 msgid "Specify how many slots to be in the array." msgstr "Specify how many slots to be in the array." -#: appEditors/AppExcEditor.py:2452 appObjects/FlatCAMExcellon.py:433 -msgid "Total Drills" -msgstr "Total Drills" +#: appEditors/AppExcEditor.py:4198 appEditors/AppGeoEditor.py:3301 +#: appEditors/AppGerberEditor.py:2899 appEditors/appGCodeEditor.py:758 +#, fuzzy +#| msgid "Exc Editor" +msgid "Exit Editor" +msgstr "Exc Editor" -#: appEditors/AppExcEditor.py:2484 appObjects/FlatCAMExcellon.py:464 -msgid "Total Slots" -msgstr "Total Slots" - -#: appEditors/AppExcEditor.py:2559 appObjects/FlatCAMGeometry.py:664 -#: appObjects/FlatCAMGeometry.py:1099 appObjects/FlatCAMGeometry.py:1841 -#: appObjects/FlatCAMGeometry.py:2491 appTools/ToolIsolation.py:1526 -#: appTools/ToolNCC.py:1516 appTools/ToolPaint.py:1268 -#: appTools/ToolPaint.py:1439 appTools/ToolSolderPaste.py:891 -#: appTools/ToolSolderPaste.py:964 -msgid "Wrong value format entered, use a number." -msgstr "Wrong value format entered, use a number." - -#: appEditors/AppExcEditor.py:2570 -msgid "" -"Tool already in the original or actual tool list.\n" -"Save and reedit Excellon if you need to add this tool. " -msgstr "" -"Tool already in the original or actual tool list.\n" -"Save and reedit Excellon if you need to add this tool. " - -#: appEditors/AppExcEditor.py:2579 appGUI/MainGUI.py:3364 -msgid "Added new tool with dia" -msgstr "Added new tool with dia" - -#: appEditors/AppExcEditor.py:2612 -msgid "Select a tool in Tool Table" -msgstr "Select a tool in Tool Table" - -#: appEditors/AppExcEditor.py:2642 -msgid "Deleted tool with diameter" -msgstr "Deleted tool with diameter" - -#: appEditors/AppExcEditor.py:2790 -msgid "Done. Tool edit completed." -msgstr "Done. Tool edit completed." - -#: appEditors/AppExcEditor.py:3327 -msgid "There are no Tools definitions in the file. Aborting Excellon creation." -msgstr "" -"There are no Tools definitions in the file. Aborting Excellon creation." - -#: appEditors/AppExcEditor.py:3331 -msgid "An internal error has ocurred. See Shell.\n" -msgstr "An internal error has ocurred. See Shell.\n" - -#: appEditors/AppExcEditor.py:3336 -msgid "Creating Excellon." -msgstr "Creating Excellon." - -#: appEditors/AppExcEditor.py:3350 -msgid "Excellon editing finished." -msgstr "Excellon editing finished." - -#: appEditors/AppExcEditor.py:3367 -msgid "Cancelled. There is no Tool/Drill selected" -msgstr "Cancelled. There is no Tool/Drill selected" - -#: appEditors/AppExcEditor.py:3601 appEditors/AppExcEditor.py:3609 -#: appEditors/AppGeoEditor.py:4286 appEditors/AppGeoEditor.py:4300 -#: appEditors/AppGerberEditor.py:1085 appEditors/AppGerberEditor.py:1312 -#: appEditors/AppGerberEditor.py:1497 appEditors/AppGerberEditor.py:1766 -#: appEditors/AppGerberEditor.py:4608 appEditors/AppGerberEditor.py:4625 -#: appGUI/MainGUI.py:2711 appGUI/MainGUI.py:2723 -#: appTools/ToolAlignObjects.py:393 appTools/ToolAlignObjects.py:415 -#: app_Main.py:4800 app_Main.py:4954 -msgid "Done." -msgstr "Done." - -#: appEditors/AppExcEditor.py:3984 -msgid "Done. Drill(s) deleted." -msgstr "Done. Drill(s) deleted." - -#: appEditors/AppExcEditor.py:4057 appEditors/AppExcEditor.py:4067 -#: appEditors/AppGerberEditor.py:5056 -msgid "Click on the circular array Center position" -msgstr "Click on the circular array Center position" +#: appEditors/AppExcEditor.py:4201 appEditors/AppGeoEditor.py:3304 +#: appEditors/AppGerberEditor.py:2902 appEditors/appGCodeEditor.py:761 +#, fuzzy +#| msgid "Exc Editor" +msgid "Exit from Editor." +msgstr "Exc Editor" #: appEditors/AppGeoEditor.py:84 msgid "Buffer distance:" @@ -1803,7 +2344,7 @@ msgid "Round" msgstr "Round" #: appEditors/AppGeoEditor.py:94 appEditors/AppGerberEditor.py:2639 -#: appGUI/ObjectUI.py:1149 appGUI/ObjectUI.py:2004 +#: appGUI/ObjectUI.py:1489 #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:225 #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:68 #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:175 @@ -1813,10 +2354,11 @@ msgstr "Round" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:298 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:327 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:291 -#: appTools/ToolExtractDrills.py:94 appTools/ToolExtractDrills.py:227 -#: appTools/ToolIsolation.py:566 appTools/ToolNCC.py:583 -#: appTools/ToolPaint.py:526 appTools/ToolPunchGerber.py:105 -#: appTools/ToolPunchGerber.py:255 appTools/ToolQRCode.py:207 +#: appTools/ToolDrilling.py:2574 appTools/ToolExtractDrills.py:486 +#: appTools/ToolExtractDrills.py:619 appTools/ToolIsolation.py:3375 +#: appTools/ToolMilling.py:2264 appTools/ToolNCC.py:4234 +#: appTools/ToolPaint.py:3166 appTools/ToolPunchGerber.py:759 +#: appTools/ToolPunchGerber.py:909 appTools/ToolQRCode.py:785 msgid "Square" msgstr "Square" @@ -1837,7 +2379,7 @@ msgid "Full Buffer" msgstr "Full Buffer" #: appEditors/AppGeoEditor.py:131 appEditors/AppGeoEditor.py:2959 -#: appGUI/MainGUI.py:4301 +#: appGUI/MainGUI.py:4470 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:191 msgid "Buffer Tool" msgstr "Buffer Tool" @@ -1845,7 +2387,7 @@ msgstr "Buffer Tool" #: appEditors/AppGeoEditor.py:143 appEditors/AppGeoEditor.py:160 #: appEditors/AppGeoEditor.py:177 appEditors/AppGeoEditor.py:2978 #: appEditors/AppGeoEditor.py:3006 appEditors/AppGeoEditor.py:3034 -#: appEditors/AppGerberEditor.py:5109 +#: appEditors/AppGerberEditor.py:5126 msgid "Buffer distance value is missing or wrong format. Add it and retry." msgstr "Buffer distance value is missing or wrong format. Add it and retry." @@ -1853,7 +2395,7 @@ msgstr "Buffer distance value is missing or wrong format. Add it and retry." msgid "Font" msgstr "Font" -#: appEditors/AppGeoEditor.py:322 appGUI/MainGUI.py:1452 +#: appEditors/AppGeoEditor.py:322 appGUI/MainGUI.py:1502 msgid "Text" msgstr "Text" @@ -1861,12 +2403,15 @@ msgstr "Text" msgid "Text Tool" msgstr "Text Tool" -#: appEditors/AppGeoEditor.py:404 appGUI/MainGUI.py:502 -#: appGUI/MainGUI.py:1199 appGUI/ObjectUI.py:597 appGUI/ObjectUI.py:1564 -#: appObjects/FlatCAMExcellon.py:852 appObjects/FlatCAMExcellon.py:1242 -#: appObjects/FlatCAMGeometry.py:825 appTools/ToolIsolation.py:313 -#: appTools/ToolIsolation.py:1196 appTools/ToolNCC.py:331 -#: appTools/ToolNCC.py:797 appTools/ToolPaint.py:313 appTools/ToolPaint.py:766 +#: appEditors/AppGeoEditor.py:404 appGUI/MainGUI.py:511 appGUI/MainGUI.py:1245 +#: appGUI/ObjectUI.py:1047 appObjects/FlatCAMExcellon.py:854 +#: appObjects/FlatCAMGeometry.py:888 appTools/ToolDrilling.py:710 +#: appTools/ToolDrilling.py:1019 appTools/ToolDrilling.py:2102 +#: appTools/ToolIsolation.py:691 appTools/ToolIsolation.py:3121 +#: appTools/ToolMilling.py:790 appTools/ToolMilling.py:1046 +#: appTools/ToolMilling.py:1711 appTools/ToolNCC.py:324 +#: appTools/ToolNCC.py:2230 appTools/ToolNCC.py:3926 appTools/ToolPaint.py:304 +#: appTools/ToolPaint.py:2938 msgid "Tool" msgstr "Tool" @@ -1898,81 +2443,76 @@ msgstr "Connect:" msgid "Contour:" msgstr "Contour:" -#: appEditors/AppGeoEditor.py:528 appGUI/MainGUI.py:1456 -msgid "Paint" -msgstr "Paint" - -#: appEditors/AppGeoEditor.py:546 appGUI/MainGUI.py:912 -#: appGUI/MainGUI.py:1944 appGUI/ObjectUI.py:2069 appTools/ToolPaint.py:42 -#: appTools/ToolPaint.py:737 +#: appEditors/AppGeoEditor.py:546 appGUI/MainGUI.py:935 appGUI/MainGUI.py:2090 +#: appGUI/ObjectUI.py:1642 appTools/ToolPaint.py:228 appTools/ToolPaint.py:2729 msgid "Paint Tool" msgstr "Paint Tool" #: appEditors/AppGeoEditor.py:582 appEditors/AppGeoEditor.py:1071 #: appEditors/AppGeoEditor.py:2966 appEditors/AppGeoEditor.py:2994 -#: appEditors/AppGeoEditor.py:3022 appEditors/AppGeoEditor.py:4439 -#: appEditors/AppGerberEditor.py:5764 +#: appEditors/AppGeoEditor.py:3022 appEditors/AppGeoEditor.py:4386 +#: appEditors/AppGerberEditor.py:5781 msgid "Cancelled. No shape selected." msgstr "Cancelled. No shape selected." #: appEditors/AppGeoEditor.py:595 appEditors/AppGeoEditor.py:2984 #: appEditors/AppGeoEditor.py:3012 appEditors/AppGeoEditor.py:3040 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:69 -#: appTools/ToolProperties.py:117 appTools/ToolProperties.py:162 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:71 +#: appTools/ToolProperties.py:117 appTools/ToolProperties.py:165 msgid "Tools" msgstr "Tools" #: appEditors/AppGeoEditor.py:606 appEditors/AppGeoEditor.py:1035 -#: appEditors/AppGerberEditor.py:5299 appEditors/AppGerberEditor.py:5728 -#: appGUI/MainGUI.py:935 appGUI/MainGUI.py:1967 appTools/ToolTransform.py:494 +#: appEditors/AppGerberEditor.py:5316 appEditors/AppGerberEditor.py:5745 +#: appGUI/MainGUI.py:960 appGUI/MainGUI.py:2115 appTools/ToolTransform.py:85 msgid "Transform Tool" msgstr "Transform Tool" #: appEditors/AppGeoEditor.py:607 appEditors/AppGeoEditor.py:699 -#: appEditors/AppGerberEditor.py:5300 appEditors/AppGerberEditor.py:5392 +#: appEditors/AppGerberEditor.py:5317 appEditors/AppGerberEditor.py:5409 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:88 -#: appTools/ToolTransform.py:27 appTools/ToolTransform.py:146 +#: appTools/ToolTransform.py:513 appTools/ToolTransform.py:633 msgid "Rotate" msgstr "Rotate" -#: appEditors/AppGeoEditor.py:608 appEditors/AppGerberEditor.py:5301 -#: appTools/ToolTransform.py:28 +#: appEditors/AppGeoEditor.py:608 appEditors/AppGerberEditor.py:5318 +#: appTools/ToolTransform.py:514 msgid "Skew/Shear" msgstr "Skew/Shear" #: appEditors/AppGeoEditor.py:609 appEditors/AppGerberEditor.py:2687 -#: appEditors/AppGerberEditor.py:5302 appGUI/MainGUI.py:1057 -#: appGUI/MainGUI.py:1499 appGUI/MainGUI.py:2089 appGUI/MainGUI.py:4513 +#: appEditors/AppGerberEditor.py:5319 appGUI/MainGUI.py:1082 +#: appGUI/MainGUI.py:1549 appGUI/MainGUI.py:2237 appGUI/MainGUI.py:4682 #: appGUI/ObjectUI.py:125 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:147 -#: appTools/ToolTransform.py:29 +#: appTools/ToolTransform.py:515 msgid "Scale" msgstr "Scale" -#: appEditors/AppGeoEditor.py:610 appEditors/AppGerberEditor.py:5303 -#: appTools/ToolTransform.py:30 +#: appEditors/AppGeoEditor.py:610 appEditors/AppGerberEditor.py:5320 +#: appTools/ToolTransform.py:516 msgid "Mirror (Flip)" msgstr "Mirror (Flip)" #: appEditors/AppGeoEditor.py:612 appEditors/AppGerberEditor.py:2647 -#: appEditors/AppGerberEditor.py:5305 appGUI/MainGUI.py:1055 -#: appGUI/MainGUI.py:1454 appGUI/MainGUI.py:1497 appGUI/MainGUI.py:2087 -#: appGUI/MainGUI.py:4511 +#: appEditors/AppGerberEditor.py:5322 appGUI/MainGUI.py:1080 +#: appGUI/MainGUI.py:1504 appGUI/MainGUI.py:1547 appGUI/MainGUI.py:2235 +#: appGUI/MainGUI.py:4680 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:212 -#: appTools/ToolTransform.py:32 +#: appTools/ToolTransform.py:518 msgid "Buffer" msgstr "Buffer" -#: appEditors/AppGeoEditor.py:643 appEditors/AppGerberEditor.py:5336 -#: appGUI/GUIElements.py:2701 +#: appEditors/AppGeoEditor.py:643 appEditors/AppGerberEditor.py:5353 +#: appGUI/GUIElements.py:2947 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:169 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:44 -#: appTools/ToolDblSided.py:173 appTools/ToolDblSided.py:388 -#: appTools/ToolFilm.py:202 appTools/ToolTransform.py:60 +#: appTools/ToolDblSided.py:688 appTools/ToolDblSided.py:864 +#: appTools/ToolFilm.py:913 appTools/ToolTransform.py:547 msgid "Reference" msgstr "Reference" -#: appEditors/AppGeoEditor.py:645 appEditors/AppGerberEditor.py:5338 +#: appEditors/AppGeoEditor.py:645 appEditors/AppGerberEditor.py:5355 msgid "" "The reference point for Rotate, Skew, Scale, Mirror.\n" "Can be:\n" @@ -1990,73 +2530,73 @@ msgstr "" "- Min Selection -> the point (minx, miny) of the bounding box of the " "selection" -#: appEditors/AppGeoEditor.py:653 appEditors/AppGerberEditor.py:5346 +#: appEditors/AppGeoEditor.py:653 appEditors/AppGerberEditor.py:5363 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:54 -#: appTools/ToolCalibration.py:770 appTools/ToolCalibration.py:771 -#: appTools/ToolTransform.py:70 +#: appTools/ToolCalibration.py:126 appTools/ToolCalibration.py:127 +#: appTools/ToolTransform.py:557 msgid "Origin" msgstr "Origin" #: appEditors/AppGeoEditor.py:653 appEditors/AppGeoEditor.py:1044 -#: appEditors/AppGerberEditor.py:5346 appEditors/AppGerberEditor.py:5737 +#: appEditors/AppGerberEditor.py:5363 appEditors/AppGerberEditor.py:5754 #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:250 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:275 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:311 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:258 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:54 -#: appTools/ToolIsolation.py:504 appTools/ToolNCC.py:539 -#: appTools/ToolPaint.py:455 appTools/ToolTransform.py:70 defaults.py:505 +#: appTools/ToolIsolation.py:3313 appTools/ToolNCC.py:4190 +#: appTools/ToolPaint.py:3095 appTools/ToolTransform.py:557 defaults.py:557 msgid "Selection" msgstr "Selection" -#: appEditors/AppGeoEditor.py:653 appEditors/AppGerberEditor.py:5346 -#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:80 +#: appEditors/AppGeoEditor.py:653 appEditors/AppGerberEditor.py:5363 +#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:85 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:54 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:60 -#: appTools/ToolDblSided.py:181 appTools/ToolTransform.py:70 +#: appTools/ToolDblSided.py:699 appTools/ToolTransform.py:557 msgid "Point" msgstr "Point" -#: appEditors/AppGeoEditor.py:653 appEditors/AppGerberEditor.py:5346 +#: appEditors/AppGeoEditor.py:653 appEditors/AppGerberEditor.py:5363 msgid "Minimum" msgstr "Minimum" #: appEditors/AppGeoEditor.py:659 appEditors/AppGeoEditor.py:955 -#: appEditors/AppGerberEditor.py:5352 appEditors/AppGerberEditor.py:5648 +#: appEditors/AppGerberEditor.py:5369 appEditors/AppGerberEditor.py:5665 #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:131 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:133 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:243 -#: appTools/ToolExtractDrills.py:164 appTools/ToolExtractDrills.py:285 -#: appTools/ToolPunchGerber.py:192 appTools/ToolPunchGerber.py:308 -#: appTools/ToolTransform.py:76 appTools/ToolTransform.py:402 app_Main.py:9822 +#: appTools/ToolExtractDrills.py:556 appTools/ToolExtractDrills.py:677 +#: appTools/ToolPunchGerber.py:846 appTools/ToolPunchGerber.py:962 +#: appTools/ToolTransform.py:563 appTools/ToolTransform.py:889 +#: app_Main.py:10219 msgid "Value" msgstr "Value" -#: appEditors/AppGeoEditor.py:661 appEditors/AppGerberEditor.py:5354 +#: appEditors/AppGeoEditor.py:661 appEditors/AppGerberEditor.py:5371 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:62 -#: appTools/ToolTransform.py:78 +#: appTools/ToolTransform.py:565 msgid "A point of reference in format X,Y." msgstr "A point of reference in format X,Y." #: appEditors/AppGeoEditor.py:668 appEditors/AppGerberEditor.py:2590 -#: appEditors/AppGerberEditor.py:5361 appGUI/ObjectUI.py:1494 -#: appTools/ToolDblSided.py:192 appTools/ToolDblSided.py:425 -#: appTools/ToolIsolation.py:276 appTools/ToolIsolation.py:631 -#: appTools/ToolNCC.py:294 appTools/ToolNCC.py:631 appTools/ToolPaint.py:276 -#: appTools/ToolPaint.py:675 appTools/ToolSolderPaste.py:127 -#: appTools/ToolSolderPaste.py:605 appTools/ToolTransform.py:85 -#: app_Main.py:5794 +#: appEditors/AppGerberEditor.py:5378 appGUI/ObjectUI.py:973 +#: appGUI/ObjectUI.py:2151 appTools/ToolDblSided.py:713 +#: appTools/ToolDblSided.py:901 appTools/ToolNCC.py:63 +#: appTools/ToolPaint.py:137 appTools/ToolSolderPaste.py:160 +#: appTools/ToolSolderPaste.py:1203 appTools/ToolTransform.py:572 +#: app_Main.py:6121 msgid "Add" msgstr "Add" -#: appEditors/AppGeoEditor.py:670 appEditors/AppGerberEditor.py:5363 -#: appTools/ToolTransform.py:87 +#: appEditors/AppGeoEditor.py:670 appEditors/AppGerberEditor.py:5380 +#: appTools/ToolTransform.py:574 msgid "Add point coordinates from clipboard." msgstr "Add point coordinates from clipboard." -#: appEditors/AppGeoEditor.py:685 appEditors/AppGerberEditor.py:5378 +#: appEditors/AppGeoEditor.py:685 appEditors/AppGerberEditor.py:5395 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:98 -#: appTools/ToolTransform.py:132 +#: appTools/ToolTransform.py:619 msgid "" "Angle for Rotation action, in degrees.\n" "Float number between -360 and 359.\n" @@ -2068,8 +2608,8 @@ msgstr "" "Positive numbers for CW motion.\n" "Negative numbers for CCW motion." -#: appEditors/AppGeoEditor.py:701 appEditors/AppGerberEditor.py:5394 -#: appTools/ToolTransform.py:148 +#: appEditors/AppGeoEditor.py:701 appEditors/AppGerberEditor.py:5411 +#: appTools/ToolTransform.py:635 msgid "" "Rotate the selected object(s).\n" "The point of reference is the middle of\n" @@ -2080,31 +2620,31 @@ msgstr "" "the bounding box for all selected objects." #: appEditors/AppGeoEditor.py:721 appEditors/AppGeoEditor.py:783 -#: appEditors/AppGerberEditor.py:5414 appEditors/AppGerberEditor.py:5476 +#: appEditors/AppGerberEditor.py:5431 appEditors/AppGerberEditor.py:5493 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:112 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:151 -#: appTools/ToolTransform.py:168 appTools/ToolTransform.py:230 +#: appTools/ToolTransform.py:655 appTools/ToolTransform.py:717 msgid "Link" msgstr "Link" #: appEditors/AppGeoEditor.py:723 appEditors/AppGeoEditor.py:785 -#: appEditors/AppGerberEditor.py:5416 appEditors/AppGerberEditor.py:5478 +#: appEditors/AppGerberEditor.py:5433 appEditors/AppGerberEditor.py:5495 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:114 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:153 -#: appTools/ToolTransform.py:170 appTools/ToolTransform.py:232 +#: appTools/ToolTransform.py:657 appTools/ToolTransform.py:719 msgid "Link the Y entry to X entry and copy its content." msgstr "Link the Y entry to X entry and copy its content." -#: appEditors/AppGeoEditor.py:728 appEditors/AppGerberEditor.py:5421 +#: appEditors/AppGeoEditor.py:728 appEditors/AppGerberEditor.py:5438 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:151 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:124 -#: appTools/ToolFilm.py:184 appTools/ToolTransform.py:175 +#: appTools/ToolFilm.py:895 appTools/ToolTransform.py:662 msgid "X angle" msgstr "X angle" #: appEditors/AppGeoEditor.py:730 appEditors/AppGeoEditor.py:751 -#: appEditors/AppGerberEditor.py:5423 appEditors/AppGerberEditor.py:5444 -#: appTools/ToolTransform.py:177 appTools/ToolTransform.py:198 +#: appEditors/AppGerberEditor.py:5440 appEditors/AppGerberEditor.py:5461 +#: appTools/ToolTransform.py:664 appTools/ToolTransform.py:685 msgid "" "Angle for Skew action, in degrees.\n" "Float number between -360 and 360." @@ -2112,14 +2652,14 @@ msgstr "" "Angle for Skew action, in degrees.\n" "Float number between -360 and 360." -#: appEditors/AppGeoEditor.py:738 appEditors/AppGerberEditor.py:5431 -#: appTools/ToolTransform.py:185 +#: appEditors/AppGeoEditor.py:738 appEditors/AppGerberEditor.py:5448 +#: appTools/ToolTransform.py:672 msgid "Skew X" msgstr "Skew X" #: appEditors/AppGeoEditor.py:740 appEditors/AppGeoEditor.py:761 -#: appEditors/AppGerberEditor.py:5433 appEditors/AppGerberEditor.py:5454 -#: appTools/ToolTransform.py:187 appTools/ToolTransform.py:208 +#: appEditors/AppGerberEditor.py:5450 appEditors/AppGerberEditor.py:5471 +#: appTools/ToolTransform.py:674 appTools/ToolTransform.py:695 msgid "" "Skew/shear the selected object(s).\n" "The point of reference is the middle of\n" @@ -2129,39 +2669,39 @@ msgstr "" "The point of reference is the middle of\n" "the bounding box for all selected objects." -#: appEditors/AppGeoEditor.py:749 appEditors/AppGerberEditor.py:5442 +#: appEditors/AppGeoEditor.py:749 appEditors/AppGerberEditor.py:5459 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:160 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:138 -#: appTools/ToolFilm.py:193 appTools/ToolTransform.py:196 +#: appTools/ToolFilm.py:904 appTools/ToolTransform.py:683 msgid "Y angle" msgstr "Y angle" -#: appEditors/AppGeoEditor.py:759 appEditors/AppGerberEditor.py:5452 -#: appTools/ToolTransform.py:206 +#: appEditors/AppGeoEditor.py:759 appEditors/AppGerberEditor.py:5469 +#: appTools/ToolTransform.py:693 msgid "Skew Y" msgstr "Skew Y" -#: appEditors/AppGeoEditor.py:790 appEditors/AppGerberEditor.py:5483 +#: appEditors/AppGeoEditor.py:790 appEditors/AppGerberEditor.py:5500 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:120 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:162 -#: appTools/ToolFilm.py:145 appTools/ToolTransform.py:237 +#: appTools/ToolFilm.py:851 appTools/ToolTransform.py:724 msgid "X factor" msgstr "X factor" -#: appEditors/AppGeoEditor.py:792 appEditors/AppGerberEditor.py:5485 +#: appEditors/AppGeoEditor.py:792 appEditors/AppGerberEditor.py:5502 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:164 -#: appTools/ToolTransform.py:239 +#: appTools/ToolTransform.py:726 msgid "Factor for scaling on X axis." msgstr "Factor for scaling on X axis." -#: appEditors/AppGeoEditor.py:799 appEditors/AppGerberEditor.py:5492 -#: appTools/ToolTransform.py:246 +#: appEditors/AppGeoEditor.py:799 appEditors/AppGerberEditor.py:5509 +#: appTools/ToolTransform.py:733 msgid "Scale X" msgstr "Scale X" #: appEditors/AppGeoEditor.py:801 appEditors/AppGeoEditor.py:821 -#: appEditors/AppGerberEditor.py:5494 appEditors/AppGerberEditor.py:5514 -#: appTools/ToolTransform.py:248 appTools/ToolTransform.py:268 +#: appEditors/AppGerberEditor.py:5511 appEditors/AppGerberEditor.py:5531 +#: appTools/ToolTransform.py:735 appTools/ToolTransform.py:755 msgid "" "Scale the selected object(s).\n" "The point of reference depends on \n" @@ -2171,60 +2711,60 @@ msgstr "" "The point of reference depends on \n" "the Scale reference checkbox state." -#: appEditors/AppGeoEditor.py:810 appEditors/AppGerberEditor.py:5503 +#: appEditors/AppGeoEditor.py:810 appEditors/AppGerberEditor.py:5520 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:129 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:175 -#: appTools/ToolFilm.py:154 appTools/ToolTransform.py:257 +#: appTools/ToolFilm.py:860 appTools/ToolTransform.py:744 msgid "Y factor" msgstr "Y factor" -#: appEditors/AppGeoEditor.py:812 appEditors/AppGerberEditor.py:5505 +#: appEditors/AppGeoEditor.py:812 appEditors/AppGerberEditor.py:5522 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:177 -#: appTools/ToolTransform.py:259 +#: appTools/ToolTransform.py:746 msgid "Factor for scaling on Y axis." msgstr "Factor for scaling on Y axis." -#: appEditors/AppGeoEditor.py:819 appEditors/AppGerberEditor.py:5512 -#: appTools/ToolTransform.py:266 +#: appEditors/AppGeoEditor.py:819 appEditors/AppGerberEditor.py:5529 +#: appTools/ToolTransform.py:753 msgid "Scale Y" msgstr "Scale Y" -#: appEditors/AppGeoEditor.py:846 appEditors/AppGerberEditor.py:5539 -#: appTools/ToolTransform.py:293 +#: appEditors/AppGeoEditor.py:846 appEditors/AppGerberEditor.py:5556 +#: appTools/ToolTransform.py:780 msgid "Flip on X" msgstr "Flip on X" #: appEditors/AppGeoEditor.py:848 appEditors/AppGeoEditor.py:853 -#: appEditors/AppGerberEditor.py:5541 appEditors/AppGerberEditor.py:5546 -#: appTools/ToolTransform.py:295 appTools/ToolTransform.py:300 +#: appEditors/AppGerberEditor.py:5558 appEditors/AppGerberEditor.py:5563 +#: appTools/ToolTransform.py:782 appTools/ToolTransform.py:787 msgid "Flip the selected object(s) over the X axis." msgstr "Flip the selected object(s) over the X axis." -#: appEditors/AppGeoEditor.py:851 appEditors/AppGerberEditor.py:5544 -#: appTools/ToolTransform.py:298 +#: appEditors/AppGeoEditor.py:851 appEditors/AppGerberEditor.py:5561 +#: appTools/ToolTransform.py:785 msgid "Flip on Y" msgstr "Flip on Y" -#: appEditors/AppGeoEditor.py:871 appEditors/AppGerberEditor.py:5564 +#: appEditors/AppGeoEditor.py:871 appEditors/AppGerberEditor.py:5581 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:191 -#: appTools/ToolTransform.py:318 +#: appTools/ToolTransform.py:805 msgid "X val" msgstr "X val" -#: appEditors/AppGeoEditor.py:873 appEditors/AppGerberEditor.py:5566 +#: appEditors/AppGeoEditor.py:873 appEditors/AppGerberEditor.py:5583 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:193 -#: appTools/ToolTransform.py:320 +#: appTools/ToolTransform.py:807 msgid "Distance to offset on X axis. In current units." msgstr "Distance to offset on X axis. In current units." -#: appEditors/AppGeoEditor.py:880 appEditors/AppGerberEditor.py:5573 -#: appTools/ToolTransform.py:327 +#: appEditors/AppGeoEditor.py:880 appEditors/AppGerberEditor.py:5590 +#: appTools/ToolTransform.py:814 msgid "Offset X" msgstr "Offset X" #: appEditors/AppGeoEditor.py:882 appEditors/AppGeoEditor.py:902 -#: appEditors/AppGerberEditor.py:5575 appEditors/AppGerberEditor.py:5595 -#: appTools/ToolTransform.py:329 appTools/ToolTransform.py:349 +#: appEditors/AppGerberEditor.py:5592 appEditors/AppGerberEditor.py:5612 +#: appTools/ToolTransform.py:816 appTools/ToolTransform.py:836 msgid "" "Offset the selected object(s).\n" "The point of reference is the middle of\n" @@ -2234,33 +2774,34 @@ msgstr "" "The point of reference is the middle of\n" "the bounding box for all selected objects.\n" -#: appEditors/AppGeoEditor.py:891 appEditors/AppGerberEditor.py:5584 +#: appEditors/AppGeoEditor.py:891 appEditors/AppGerberEditor.py:5601 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:204 -#: appTools/ToolTransform.py:338 +#: appTools/ToolTransform.py:825 msgid "Y val" msgstr "Y val" -#: appEditors/AppGeoEditor.py:893 appEditors/AppGerberEditor.py:5586 +#: appEditors/AppGeoEditor.py:893 appEditors/AppGerberEditor.py:5603 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:206 -#: appTools/ToolTransform.py:340 +#: appTools/ToolTransform.py:827 msgid "Distance to offset on Y axis. In current units." msgstr "Distance to offset on Y axis. In current units." -#: appEditors/AppGeoEditor.py:900 appEditors/AppGerberEditor.py:5593 -#: appTools/ToolTransform.py:347 +#: appEditors/AppGeoEditor.py:900 appEditors/AppGerberEditor.py:5610 +#: appTools/ToolTransform.py:834 msgid "Offset Y" msgstr "Offset Y" -#: appEditors/AppGeoEditor.py:920 appEditors/AppGerberEditor.py:5613 +#: appEditors/AppGeoEditor.py:920 appEditors/AppGerberEditor.py:5630 +#: appGUI/ObjectUI.py:410 appGUI/ObjectUI.py:447 #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:142 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:216 -#: appTools/ToolQRCode.py:206 appTools/ToolTransform.py:367 +#: appTools/ToolQRCode.py:784 appTools/ToolTransform.py:854 msgid "Rounded" msgstr "Rounded" -#: appEditors/AppGeoEditor.py:922 appEditors/AppGerberEditor.py:5615 +#: appEditors/AppGeoEditor.py:922 appEditors/AppGerberEditor.py:5632 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:218 -#: appTools/ToolTransform.py:369 +#: appTools/ToolTransform.py:856 msgid "" "If checked then the buffer will surround the buffered shape,\n" "every corner will be rounded.\n" @@ -2272,16 +2813,16 @@ msgstr "" "If not checked then the buffer will follow the exact geometry\n" "of the buffered shape." -#: appEditors/AppGeoEditor.py:930 appEditors/AppGerberEditor.py:5623 +#: appEditors/AppGeoEditor.py:930 appEditors/AppGerberEditor.py:5640 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:226 -#: appTools/ToolDistance.py:505 appTools/ToolDistanceMin.py:286 -#: appTools/ToolTransform.py:377 +#: appTools/ToolDistance.py:408 appTools/ToolDistanceMin.py:199 +#: appTools/ToolTransform.py:864 msgid "Distance" msgstr "Distance" -#: appEditors/AppGeoEditor.py:932 appEditors/AppGerberEditor.py:5625 +#: appEditors/AppGeoEditor.py:932 appEditors/AppGerberEditor.py:5642 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:228 -#: appTools/ToolTransform.py:379 +#: appTools/ToolTransform.py:866 msgid "" "A positive value will create the effect of dilation,\n" "while a negative value will create the effect of erosion.\n" @@ -2293,13 +2834,13 @@ msgstr "" "Each geometry element of the object will be increased\n" "or decreased with the 'distance'." -#: appEditors/AppGeoEditor.py:944 appEditors/AppGerberEditor.py:5637 -#: appTools/ToolTransform.py:391 +#: appEditors/AppGeoEditor.py:944 appEditors/AppGerberEditor.py:5654 +#: appTools/ToolTransform.py:878 msgid "Buffer D" msgstr "Buffer D" -#: appEditors/AppGeoEditor.py:946 appEditors/AppGerberEditor.py:5639 -#: appTools/ToolTransform.py:393 +#: appEditors/AppGeoEditor.py:946 appEditors/AppGerberEditor.py:5656 +#: appTools/ToolTransform.py:880 msgid "" "Create the buffer effect on each geometry,\n" "element from the selected object, using the distance." @@ -2307,9 +2848,9 @@ msgstr "" "Create the buffer effect on each geometry,\n" "element from the selected object, using the distance." -#: appEditors/AppGeoEditor.py:957 appEditors/AppGerberEditor.py:5650 +#: appEditors/AppGeoEditor.py:957 appEditors/AppGerberEditor.py:5667 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:245 -#: appTools/ToolTransform.py:404 +#: appTools/ToolTransform.py:891 msgid "" "A positive value will create the effect of dilation,\n" "while a negative value will create the effect of erosion.\n" @@ -2323,13 +2864,13 @@ msgstr "" "or decreased to fit the 'Value'. Value is a percentage\n" "of the initial dimension." -#: appEditors/AppGeoEditor.py:970 appEditors/AppGerberEditor.py:5663 -#: appTools/ToolTransform.py:417 +#: appEditors/AppGeoEditor.py:970 appEditors/AppGerberEditor.py:5680 +#: appTools/ToolTransform.py:904 msgid "Buffer F" msgstr "Buffer F" -#: appEditors/AppGeoEditor.py:972 appEditors/AppGerberEditor.py:5665 -#: appTools/ToolTransform.py:419 +#: appEditors/AppGeoEditor.py:972 appEditors/AppGerberEditor.py:5682 +#: appTools/ToolTransform.py:906 msgid "" "Create the buffer effect on each geometry,\n" "element from the selected object, using the factor." @@ -2337,55 +2878,55 @@ msgstr "" "Create the buffer effect on each geometry,\n" "element from the selected object, using the factor." -#: appEditors/AppGeoEditor.py:1043 appEditors/AppGerberEditor.py:5736 -#: appGUI/ObjectUI.py:1103 appGUI/ObjectUI.py:1958 -#: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:48 +#: appEditors/AppGeoEditor.py:1043 appEditors/AppGerberEditor.py:5753 +#: appGUI/ObjectUI.py:1443 appGUI/preferences/tools/Tools2CalPrefGroupUI.py:48 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:54 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:70 -#: appTools/ToolCalibration.py:186 appTools/ToolNCC.py:109 -#: appTools/ToolPaint.py:102 appTools/ToolPanelize.py:98 -#: appTools/ToolTransform.py:70 +#: appTools/ToolCalibration.py:881 appTools/ToolDrilling.py:2526 +#: appTools/ToolFilm.py:784 appTools/ToolMilling.py:2218 +#: appTools/ToolNCC.py:3754 appTools/ToolPaint.py:2787 +#: appTools/ToolPanelize.py:697 appTools/ToolTransform.py:557 msgid "Object" msgstr "Object" #: appEditors/AppGeoEditor.py:1107 appEditors/AppGeoEditor.py:1130 #: appEditors/AppGeoEditor.py:1276 appEditors/AppGeoEditor.py:1301 #: appEditors/AppGeoEditor.py:1335 appEditors/AppGeoEditor.py:1370 -#: appEditors/AppGeoEditor.py:1401 appEditors/AppGerberEditor.py:5800 -#: appEditors/AppGerberEditor.py:5823 appEditors/AppGerberEditor.py:5968 -#: appEditors/AppGerberEditor.py:6001 appEditors/AppGerberEditor.py:6044 -#: appEditors/AppGerberEditor.py:6085 appEditors/AppGerberEditor.py:6121 +#: appEditors/AppGeoEditor.py:1401 appEditors/AppGerberEditor.py:5817 +#: appEditors/AppGerberEditor.py:5840 appEditors/AppGerberEditor.py:5985 +#: appEditors/AppGerberEditor.py:6018 appEditors/AppGerberEditor.py:6061 +#: appEditors/AppGerberEditor.py:6102 appEditors/AppGerberEditor.py:6138 msgid "No shape selected." msgstr "No shape selected." -#: appEditors/AppGeoEditor.py:1115 appEditors/AppGerberEditor.py:5808 -#: appTools/ToolTransform.py:585 +#: appEditors/AppGeoEditor.py:1115 appEditors/AppGerberEditor.py:5825 +#: appTools/ToolTransform.py:150 msgid "Incorrect format for Point value. Needs format X,Y" msgstr "Incorrect format for Point value. Needs format X,Y" -#: appEditors/AppGeoEditor.py:1140 appEditors/AppGerberEditor.py:5833 -#: appTools/ToolTransform.py:602 +#: appEditors/AppGeoEditor.py:1140 appEditors/AppGerberEditor.py:5850 +#: appTools/ToolTransform.py:167 msgid "Rotate transformation can not be done for a value of 0." msgstr "Rotate transformation can not be done for a value of 0." #: appEditors/AppGeoEditor.py:1198 appEditors/AppGeoEditor.py:1219 -#: appEditors/AppGerberEditor.py:5891 appEditors/AppGerberEditor.py:5912 -#: appTools/ToolTransform.py:660 appTools/ToolTransform.py:681 +#: appEditors/AppGerberEditor.py:5908 appEditors/AppGerberEditor.py:5929 +#: appTools/ToolTransform.py:225 appTools/ToolTransform.py:246 msgid "Scale transformation can not be done for a factor of 0 or 1." msgstr "Scale transformation can not be done for a factor of 0 or 1." #: appEditors/AppGeoEditor.py:1232 appEditors/AppGeoEditor.py:1241 -#: appEditors/AppGerberEditor.py:5925 appEditors/AppGerberEditor.py:5934 -#: appTools/ToolTransform.py:694 appTools/ToolTransform.py:703 +#: appEditors/AppGerberEditor.py:5942 appEditors/AppGerberEditor.py:5951 +#: appTools/ToolTransform.py:259 appTools/ToolTransform.py:268 msgid "Offset transformation can not be done for a value of 0." msgstr "Offset transformation can not be done for a value of 0." -#: appEditors/AppGeoEditor.py:1271 appEditors/AppGerberEditor.py:5971 -#: appTools/ToolTransform.py:731 +#: appEditors/AppGeoEditor.py:1271 appEditors/AppGerberEditor.py:5988 +#: appTools/ToolTransform.py:296 msgid "Appying Rotate" msgstr "Appying Rotate" -#: appEditors/AppGeoEditor.py:1284 appEditors/AppGerberEditor.py:5983 +#: appEditors/AppGeoEditor.py:1284 appEditors/AppGerberEditor.py:6000 msgid "Done. Rotate completed." msgstr "Done. Rotate completed." @@ -2393,18 +2934,18 @@ msgstr "Done. Rotate completed." msgid "Rotation action was not executed" msgstr "Rotation action was not executed" -#: appEditors/AppGeoEditor.py:1304 appEditors/AppGerberEditor.py:6004 -#: appTools/ToolTransform.py:757 +#: appEditors/AppGeoEditor.py:1304 appEditors/AppGerberEditor.py:6021 +#: appTools/ToolTransform.py:322 msgid "Applying Flip" msgstr "Applying Flip" -#: appEditors/AppGeoEditor.py:1312 appEditors/AppGerberEditor.py:6016 -#: appTools/ToolTransform.py:774 +#: appEditors/AppGeoEditor.py:1312 appEditors/AppGerberEditor.py:6033 +#: appTools/ToolTransform.py:339 msgid "Flip on the Y axis done" msgstr "Flip on the Y axis done" -#: appEditors/AppGeoEditor.py:1315 appEditors/AppGerberEditor.py:6024 -#: appTools/ToolTransform.py:783 +#: appEditors/AppGeoEditor.py:1315 appEditors/AppGerberEditor.py:6041 +#: appTools/ToolTransform.py:348 msgid "Flip on the X axis done" msgstr "Flip on the X axis done" @@ -2412,16 +2953,16 @@ msgstr "Flip on the X axis done" msgid "Flip action was not executed" msgstr "Flip action was not executed" -#: appEditors/AppGeoEditor.py:1338 appEditors/AppGerberEditor.py:6047 -#: appTools/ToolTransform.py:804 +#: appEditors/AppGeoEditor.py:1338 appEditors/AppGerberEditor.py:6064 +#: appTools/ToolTransform.py:369 msgid "Applying Skew" msgstr "Applying Skew" -#: appEditors/AppGeoEditor.py:1347 appEditors/AppGerberEditor.py:6063 +#: appEditors/AppGeoEditor.py:1347 appEditors/AppGerberEditor.py:6080 msgid "Skew on the X axis done" msgstr "Skew on the X axis done" -#: appEditors/AppGeoEditor.py:1349 appEditors/AppGerberEditor.py:6065 +#: appEditors/AppGeoEditor.py:1349 appEditors/AppGerberEditor.py:6082 msgid "Skew on the Y axis done" msgstr "Skew on the Y axis done" @@ -2429,16 +2970,16 @@ msgstr "Skew on the Y axis done" msgid "Skew action was not executed" msgstr "Skew action was not executed" -#: appEditors/AppGeoEditor.py:1373 appEditors/AppGerberEditor.py:6088 -#: appTools/ToolTransform.py:831 +#: appEditors/AppGeoEditor.py:1373 appEditors/AppGerberEditor.py:6105 +#: appTools/ToolTransform.py:396 msgid "Applying Scale" msgstr "Applying Scale" -#: appEditors/AppGeoEditor.py:1382 appEditors/AppGerberEditor.py:6101 +#: appEditors/AppGeoEditor.py:1382 appEditors/AppGerberEditor.py:6118 msgid "Scale on the X axis done" msgstr "Scale on the X axis done" -#: appEditors/AppGeoEditor.py:1384 appEditors/AppGerberEditor.py:6103 +#: appEditors/AppGeoEditor.py:1384 appEditors/AppGerberEditor.py:6120 msgid "Scale on the Y axis done" msgstr "Scale on the Y axis done" @@ -2446,16 +2987,16 @@ msgstr "Scale on the Y axis done" msgid "Scale action was not executed" msgstr "Scale action was not executed" -#: appEditors/AppGeoEditor.py:1404 appEditors/AppGerberEditor.py:6124 -#: appTools/ToolTransform.py:859 +#: appEditors/AppGeoEditor.py:1404 appEditors/AppGerberEditor.py:6141 +#: appTools/ToolTransform.py:424 msgid "Applying Offset" msgstr "Applying Offset" -#: appEditors/AppGeoEditor.py:1414 appEditors/AppGerberEditor.py:6145 +#: appEditors/AppGeoEditor.py:1414 appEditors/AppGerberEditor.py:6162 msgid "Offset on the X axis done" msgstr "Offset on the X axis done" -#: appEditors/AppGeoEditor.py:1416 appEditors/AppGerberEditor.py:6147 +#: appEditors/AppGeoEditor.py:1416 appEditors/AppGerberEditor.py:6164 msgid "Offset on the Y axis done" msgstr "Offset on the Y axis done" @@ -2463,65 +3004,65 @@ msgstr "Offset on the Y axis done" msgid "Offset action was not executed" msgstr "Offset action was not executed" -#: appEditors/AppGeoEditor.py:1426 appEditors/AppGerberEditor.py:6157 +#: appEditors/AppGeoEditor.py:1426 appEditors/AppGerberEditor.py:6174 msgid "No shape selected" msgstr "No shape selected" -#: appEditors/AppGeoEditor.py:1429 appEditors/AppGerberEditor.py:6160 -#: appTools/ToolTransform.py:889 +#: appEditors/AppGeoEditor.py:1429 appEditors/AppGerberEditor.py:6177 +#: appTools/ToolTransform.py:453 msgid "Applying Buffer" msgstr "Applying Buffer" -#: appEditors/AppGeoEditor.py:1436 appEditors/AppGerberEditor.py:6182 -#: appTools/ToolTransform.py:910 +#: appEditors/AppGeoEditor.py:1436 appEditors/AppGerberEditor.py:6199 +#: appTools/ToolTransform.py:474 msgid "Buffer done" msgstr "Buffer done" -#: appEditors/AppGeoEditor.py:1440 appEditors/AppGerberEditor.py:6186 -#: appTools/ToolTransform.py:879 appTools/ToolTransform.py:915 +#: appEditors/AppGeoEditor.py:1440 appEditors/AppGerberEditor.py:6203 +#: appTools/ToolTransform.py:443 appTools/ToolTransform.py:478 msgid "Action was not executed, due of" msgstr "Action was not executed, due of" -#: appEditors/AppGeoEditor.py:1444 appEditors/AppGerberEditor.py:6190 +#: appEditors/AppGeoEditor.py:1444 appEditors/AppGerberEditor.py:6207 msgid "Rotate ..." msgstr "Rotate ..." #: appEditors/AppGeoEditor.py:1445 appEditors/AppGeoEditor.py:1494 -#: appEditors/AppGeoEditor.py:1509 appEditors/AppGerberEditor.py:6191 -#: appEditors/AppGerberEditor.py:6240 appEditors/AppGerberEditor.py:6255 +#: appEditors/AppGeoEditor.py:1509 appEditors/AppGerberEditor.py:6208 +#: appEditors/AppGerberEditor.py:6257 appEditors/AppGerberEditor.py:6272 msgid "Enter an Angle Value (degrees)" msgstr "Enter an Angle Value (degrees)" -#: appEditors/AppGeoEditor.py:1453 appEditors/AppGerberEditor.py:6199 +#: appEditors/AppGeoEditor.py:1453 appEditors/AppGerberEditor.py:6216 msgid "Geometry shape rotate done" msgstr "Geometry shape rotate done" -#: appEditors/AppGeoEditor.py:1456 appEditors/AppGerberEditor.py:6202 +#: appEditors/AppGeoEditor.py:1456 appEditors/AppGerberEditor.py:6219 msgid "Geometry shape rotate cancelled" msgstr "Geometry shape rotate cancelled" -#: appEditors/AppGeoEditor.py:1461 appEditors/AppGerberEditor.py:6207 +#: appEditors/AppGeoEditor.py:1461 appEditors/AppGerberEditor.py:6224 msgid "Offset on X axis ..." msgstr "Offset on X axis ..." #: appEditors/AppGeoEditor.py:1462 appEditors/AppGeoEditor.py:1479 -#: appEditors/AppGerberEditor.py:6208 appEditors/AppGerberEditor.py:6225 +#: appEditors/AppGerberEditor.py:6225 appEditors/AppGerberEditor.py:6242 msgid "Enter a distance Value" msgstr "Enter a distance Value" -#: appEditors/AppGeoEditor.py:1470 appEditors/AppGerberEditor.py:6216 +#: appEditors/AppGeoEditor.py:1470 appEditors/AppGerberEditor.py:6233 msgid "Geometry shape offset on X axis done" msgstr "Geometry shape offset on X axis done" -#: appEditors/AppGeoEditor.py:1473 appEditors/AppGerberEditor.py:6219 +#: appEditors/AppGeoEditor.py:1473 appEditors/AppGerberEditor.py:6236 msgid "Geometry shape offset X cancelled" msgstr "Geometry shape offset X cancelled" -#: appEditors/AppGeoEditor.py:1478 appEditors/AppGerberEditor.py:6224 +#: appEditors/AppGeoEditor.py:1478 appEditors/AppGerberEditor.py:6241 msgid "Offset on Y axis ..." msgstr "Offset on Y axis ..." -#: appEditors/AppGeoEditor.py:1487 appEditors/AppGerberEditor.py:6233 +#: appEditors/AppGeoEditor.py:1487 appEditors/AppGerberEditor.py:6250 msgid "Geometry shape offset on Y axis done" msgstr "Geometry shape offset on Y axis done" @@ -2529,11 +3070,11 @@ msgstr "Geometry shape offset on Y axis done" msgid "Geometry shape offset on Y axis canceled" msgstr "Geometry shape offset on Y axis canceled" -#: appEditors/AppGeoEditor.py:1493 appEditors/AppGerberEditor.py:6239 +#: appEditors/AppGeoEditor.py:1493 appEditors/AppGerberEditor.py:6256 msgid "Skew on X axis ..." msgstr "Skew on X axis ..." -#: appEditors/AppGeoEditor.py:1502 appEditors/AppGerberEditor.py:6248 +#: appEditors/AppGeoEditor.py:1502 appEditors/AppGerberEditor.py:6265 msgid "Geometry shape skew on X axis done" msgstr "Geometry shape skew on X axis done" @@ -2541,11 +3082,11 @@ msgstr "Geometry shape skew on X axis done" msgid "Geometry shape skew on X axis canceled" msgstr "Geometry shape skew on X axis canceled" -#: appEditors/AppGeoEditor.py:1508 appEditors/AppGerberEditor.py:6254 +#: appEditors/AppGeoEditor.py:1508 appEditors/AppGerberEditor.py:6271 msgid "Skew on Y axis ..." msgstr "Skew on Y axis ..." -#: appEditors/AppGeoEditor.py:1517 appEditors/AppGerberEditor.py:6263 +#: appEditors/AppGeoEditor.py:1517 appEditors/AppGerberEditor.py:6280 msgid "Geometry shape skew on Y axis done" msgstr "Geometry shape skew on Y axis done" @@ -2688,7 +3229,7 @@ msgstr " Done. Adding Text completed." msgid "Create buffer geometry ..." msgstr "Create buffer geometry ..." -#: appEditors/AppGeoEditor.py:2990 appEditors/AppGerberEditor.py:5153 +#: appEditors/AppGeoEditor.py:2990 appEditors/AppGerberEditor.py:5170 msgid "Done. Buffer Tool completed." msgstr "Done. Buffer Tool completed." @@ -2725,83 +3266,78 @@ msgstr "Create Paint geometry ..." msgid "Shape transformations ..." msgstr "Shape transformations ..." -#: appEditors/AppGeoEditor.py:3281 +#: appEditors/AppGeoEditor.py:3281 appGUI/ObjectUI.py:914 #: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:27 msgid "Geometry Editor" msgstr "Geometry Editor" #: appEditors/AppGeoEditor.py:3287 appEditors/AppGerberEditor.py:2495 -#: appEditors/AppGerberEditor.py:3951 appGUI/ObjectUI.py:282 -#: appGUI/ObjectUI.py:1394 appGUI/ObjectUI.py:2256 appTools/ToolCutOut.py:95 -#: appTools/ToolTransform.py:92 +#: appEditors/AppGerberEditor.py:3968 appEditors/appGCodeEditor.py:692 +#: appGUI/ObjectUI.py:276 appGUI/ObjectUI.py:858 appGUI/ObjectUI.py:1830 +#: appTools/ToolCutOut.py:1772 appTools/ToolDblSided.py:519 +#: appTools/ToolTransform.py:579 msgid "Type" msgstr "Type" -#: appEditors/AppGeoEditor.py:3287 appGUI/ObjectUI.py:221 -#: appGUI/ObjectUI.py:521 appGUI/ObjectUI.py:1330 appGUI/ObjectUI.py:2165 -#: appGUI/ObjectUI.py:2469 appGUI/ObjectUI.py:2536 -#: appTools/ToolCalibration.py:234 appTools/ToolFiducials.py:70 -msgid "Name" -msgstr "Name" - -#: appEditors/AppGeoEditor.py:3539 +#: appEditors/AppGeoEditor.py:3557 msgid "Ring" msgstr "Ring" -#: appEditors/AppGeoEditor.py:3541 +#: appEditors/AppGeoEditor.py:3559 msgid "Line" msgstr "Line" -#: appEditors/AppGeoEditor.py:3543 appGUI/MainGUI.py:1446 -#: appGUI/ObjectUI.py:1150 appGUI/ObjectUI.py:2005 +#: appEditors/AppGeoEditor.py:3561 appGUI/MainGUI.py:1496 +#: appGUI/ObjectUI.py:1490 #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:226 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:299 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:328 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:292 -#: appTools/ToolIsolation.py:567 appTools/ToolNCC.py:584 -#: appTools/ToolPaint.py:527 +#: appTools/ToolDrilling.py:2575 appTools/ToolIsolation.py:3376 +#: appTools/ToolMilling.py:2265 appTools/ToolNCC.py:4235 +#: appTools/ToolPaint.py:3167 msgid "Polygon" msgstr "Polygon" -#: appEditors/AppGeoEditor.py:3545 +#: appEditors/AppGeoEditor.py:3563 msgid "Multi-Line" msgstr "Multi-Line" -#: appEditors/AppGeoEditor.py:3547 +#: appEditors/AppGeoEditor.py:3565 msgid "Multi-Polygon" msgstr "Multi-Polygon" -#: appEditors/AppGeoEditor.py:3554 +#: appEditors/AppGeoEditor.py:3572 msgid "Geo Elem" msgstr "Geo Elem" -#: appEditors/AppGeoEditor.py:4007 -msgid "Editing MultiGeo Geometry, tool" -msgstr "Editing MultiGeo Geometry, tool" - -#: appEditors/AppGeoEditor.py:4009 -msgid "with diameter" -msgstr "with diameter" - -#: appEditors/AppGeoEditor.py:4081 +#: appEditors/AppGeoEditor.py:4028 msgid "Grid Snap enabled." msgstr "Grid Snap enabled." -#: appEditors/AppGeoEditor.py:4085 +#: appEditors/AppGeoEditor.py:4032 msgid "Grid Snap disabled." msgstr "Grid Snap disabled." -#: appEditors/AppGeoEditor.py:4446 appGUI/MainGUI.py:3046 -#: appGUI/MainGUI.py:3092 appGUI/MainGUI.py:3110 appGUI/MainGUI.py:3254 -#: appGUI/MainGUI.py:3293 appGUI/MainGUI.py:3305 appGUI/MainGUI.py:3322 +#: appEditors/AppGeoEditor.py:4393 appGUI/MainGUI.py:3194 +#: appGUI/MainGUI.py:3240 appGUI/MainGUI.py:3258 appGUI/MainGUI.py:3402 +#: appGUI/MainGUI.py:3441 appGUI/MainGUI.py:3453 appGUI/MainGUI.py:3470 msgid "Click on target point." msgstr "Click on target point." -#: appEditors/AppGeoEditor.py:4762 appEditors/AppGeoEditor.py:4797 +#: appEditors/AppGeoEditor.py:4675 +msgid "Editing MultiGeo Geometry, tool" +msgstr "Editing MultiGeo Geometry, tool" + +#: appEditors/AppGeoEditor.py:4677 appTools/ToolNCC.py:2232 +msgid "with diameter" +msgstr "with diameter" + +#: appEditors/AppGeoEditor.py:4780 appEditors/AppGeoEditor.py:4815 msgid "A selection of at least 2 geo items is required to do Intersection." msgstr "A selection of at least 2 geo items is required to do Intersection." -#: appEditors/AppGeoEditor.py:4883 appEditors/AppGeoEditor.py:4987 +#: appEditors/AppGeoEditor.py:4901 appEditors/AppGeoEditor.py:5005 msgid "" "Negative buffer value is not accepted. Use Buffer interior to generate an " "'inside' shape" @@ -2809,54 +3345,54 @@ msgstr "" "Negative buffer value is not accepted. Use Buffer interior to generate an " "'inside' shape" -#: appEditors/AppGeoEditor.py:4893 appEditors/AppGeoEditor.py:4946 -#: appEditors/AppGeoEditor.py:4996 +#: appEditors/AppGeoEditor.py:4911 appEditors/AppGeoEditor.py:4964 +#: appEditors/AppGeoEditor.py:5014 msgid "Nothing selected for buffering." msgstr "Nothing selected for buffering." -#: appEditors/AppGeoEditor.py:4898 appEditors/AppGeoEditor.py:4950 -#: appEditors/AppGeoEditor.py:5001 +#: appEditors/AppGeoEditor.py:4916 appEditors/AppGeoEditor.py:4968 +#: appEditors/AppGeoEditor.py:5019 msgid "Invalid distance for buffering." msgstr "Invalid distance for buffering." -#: appEditors/AppGeoEditor.py:4922 appEditors/AppGeoEditor.py:5021 +#: appEditors/AppGeoEditor.py:4940 appEditors/AppGeoEditor.py:5039 msgid "Failed, the result is empty. Choose a different buffer value." msgstr "Failed, the result is empty. Choose a different buffer value." -#: appEditors/AppGeoEditor.py:4933 +#: appEditors/AppGeoEditor.py:4951 msgid "Full buffer geometry created." msgstr "Full buffer geometry created." -#: appEditors/AppGeoEditor.py:4939 +#: appEditors/AppGeoEditor.py:4957 msgid "Negative buffer value is not accepted." msgstr "Negative buffer value is not accepted." -#: appEditors/AppGeoEditor.py:4970 +#: appEditors/AppGeoEditor.py:4988 msgid "Failed, the result is empty. Choose a smaller buffer value." msgstr "Failed, the result is empty. Choose a smaller buffer value." -#: appEditors/AppGeoEditor.py:4980 +#: appEditors/AppGeoEditor.py:4998 msgid "Interior buffer geometry created." msgstr "Interior buffer geometry created." -#: appEditors/AppGeoEditor.py:5031 +#: appEditors/AppGeoEditor.py:5049 msgid "Exterior buffer geometry created." msgstr "Exterior buffer geometry created." -#: appEditors/AppGeoEditor.py:5037 +#: appEditors/AppGeoEditor.py:5055 #, python-format msgid "Could not do Paint. Overlap value has to be less than 100%%." msgstr "Could not do Paint. Overlap value has to be less than 100%%." -#: appEditors/AppGeoEditor.py:5044 +#: appEditors/AppGeoEditor.py:5062 msgid "Nothing selected for painting." msgstr "Nothing selected for painting." -#: appEditors/AppGeoEditor.py:5050 +#: appEditors/AppGeoEditor.py:5068 msgid "Invalid value for" msgstr "Invalid value for" -#: appEditors/AppGeoEditor.py:5109 +#: appEditors/AppGeoEditor.py:5127 msgid "" "Could not do Paint. Try a different combination of parameters. Or a " "different method of Paint" @@ -2864,7 +3400,7 @@ msgstr "" "Could not do Paint. Try a different combination of parameters. Or a " "different method of Paint" -#: appEditors/AppGeoEditor.py:5120 +#: appEditors/AppGeoEditor.py:5138 msgid "Paint done." msgstr "Paint done." @@ -2990,59 +3526,60 @@ msgstr "Done. Apertures Move completed." msgid "Done. Apertures copied." msgstr "Done. Apertures copied." -#: appEditors/AppGerberEditor.py:2462 appGUI/MainGUI.py:1477 +#: appEditors/AppGerberEditor.py:2462 appGUI/MainGUI.py:1527 +#: appGUI/ObjectUI.py:309 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:27 msgid "Gerber Editor" msgstr "Gerber Editor" -#: appEditors/AppGerberEditor.py:2482 appGUI/ObjectUI.py:247 -#: appTools/ToolProperties.py:159 +#: appEditors/AppGerberEditor.py:2482 appGUI/ObjectUI.py:241 +#: appTools/ToolProperties.py:162 msgid "Apertures" msgstr "Apertures" -#: appEditors/AppGerberEditor.py:2484 appGUI/ObjectUI.py:249 +#: appEditors/AppGerberEditor.py:2484 appGUI/ObjectUI.py:243 msgid "Apertures Table for the Gerber Object." msgstr "Apertures Table for the Gerber Object." -#: appEditors/AppGerberEditor.py:2495 appEditors/AppGerberEditor.py:3951 -#: appGUI/ObjectUI.py:282 +#: appEditors/AppGerberEditor.py:2495 appEditors/AppGerberEditor.py:3968 +#: appGUI/ObjectUI.py:276 msgid "Code" msgstr "Code" -#: appEditors/AppGerberEditor.py:2495 appEditors/AppGerberEditor.py:3951 -#: appGUI/ObjectUI.py:282 +#: appEditors/AppGerberEditor.py:2495 appEditors/AppGerberEditor.py:3968 +#: appGUI/ObjectUI.py:276 #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:103 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:167 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:196 #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:43 -#: appTools/ToolCopperThieving.py:265 appTools/ToolCopperThieving.py:305 -#: appTools/ToolFiducials.py:159 +#: appTools/ToolCopperThieving.py:1354 appTools/ToolCopperThieving.py:1394 +#: appTools/ToolFiducials.py:770 msgid "Size" msgstr "Size" -#: appEditors/AppGerberEditor.py:2495 appEditors/AppGerberEditor.py:3951 -#: appGUI/ObjectUI.py:282 +#: appEditors/AppGerberEditor.py:2495 appEditors/AppGerberEditor.py:3968 +#: appGUI/ObjectUI.py:276 msgid "Dim" msgstr "Dim" -#: appEditors/AppGerberEditor.py:2500 appGUI/ObjectUI.py:286 +#: appEditors/AppGerberEditor.py:2500 appGUI/ObjectUI.py:280 msgid "Index" msgstr "Index" #: appEditors/AppGerberEditor.py:2502 appEditors/AppGerberEditor.py:2531 -#: appGUI/ObjectUI.py:288 +#: appGUI/ObjectUI.py:282 msgid "Aperture Code" msgstr "Aperture Code" -#: appEditors/AppGerberEditor.py:2504 appGUI/ObjectUI.py:290 +#: appEditors/AppGerberEditor.py:2504 appGUI/ObjectUI.py:284 msgid "Type of aperture: circular, rectangle, macros etc" msgstr "Type of aperture: circular, rectangle, macros etc" -#: appEditors/AppGerberEditor.py:2506 appGUI/ObjectUI.py:292 +#: appEditors/AppGerberEditor.py:2506 appGUI/ObjectUI.py:286 msgid "Aperture Size:" msgstr "Aperture Size:" -#: appEditors/AppGerberEditor.py:2508 appGUI/ObjectUI.py:294 +#: appEditors/AppGerberEditor.py:2508 appGUI/ObjectUI.py:288 msgid "" "Aperture Dimensions:\n" " - (width, height) for R, O type.\n" @@ -3118,13 +3655,13 @@ msgid "Add a new aperture to the aperture list." msgstr "Add a new aperture to the aperture list." #: appEditors/AppGerberEditor.py:2595 appEditors/AppGerberEditor.py:2743 -#: appGUI/MainGUI.py:748 appGUI/MainGUI.py:1068 appGUI/MainGUI.py:1527 -#: appGUI/MainGUI.py:2099 appGUI/MainGUI.py:4514 appGUI/ObjectUI.py:1525 -#: appObjects/FlatCAMGeometry.py:563 appTools/ToolIsolation.py:298 -#: appTools/ToolIsolation.py:637 appTools/ToolNCC.py:316 -#: appTools/ToolNCC.py:637 appTools/ToolPaint.py:298 appTools/ToolPaint.py:681 -#: appTools/ToolSolderPaste.py:133 appTools/ToolSolderPaste.py:608 -#: app_Main.py:5796 +#: appGUI/MainGUI.py:757 appGUI/MainGUI.py:1093 appGUI/MainGUI.py:1577 +#: appGUI/MainGUI.py:2247 appGUI/MainGUI.py:4683 appGUI/ObjectUI.py:1007 +#: appObjects/FlatCAMGeometry.py:555 appTools/ToolIsolation.py:70 +#: appTools/ToolIsolation.py:3105 appTools/ToolNCC.py:69 +#: appTools/ToolNCC.py:3910 appTools/ToolPaint.py:143 +#: appTools/ToolPaint.py:2924 appTools/ToolSolderPaste.py:163 +#: appTools/ToolSolderPaste.py:1209 app_Main.py:6123 msgid "Delete" msgstr "Delete" @@ -3232,8 +3769,8 @@ msgstr "Delete all the marked polygons." msgid "Clear all the markings." msgstr "Clear all the markings." -#: appEditors/AppGerberEditor.py:2771 appGUI/MainGUI.py:1040 -#: appGUI/MainGUI.py:2072 appGUI/MainGUI.py:4511 +#: appEditors/AppGerberEditor.py:2771 appGUI/MainGUI.py:1065 +#: appGUI/MainGUI.py:2220 appGUI/MainGUI.py:4680 msgid "Add Pad Array" msgstr "Add Pad Array" @@ -3271,11 +3808,11 @@ msgstr "" "Min value is: -359.99 degrees.\n" "Max value is: 360.00 degrees." -#: appEditors/AppGerberEditor.py:3335 appEditors/AppGerberEditor.py:3339 +#: appEditors/AppGerberEditor.py:3352 appEditors/AppGerberEditor.py:3356 msgid "Aperture code value is missing or wrong format. Add it and retry." msgstr "Aperture code value is missing or wrong format. Add it and retry." -#: appEditors/AppGerberEditor.py:3375 +#: appEditors/AppGerberEditor.py:3392 msgid "" "Aperture dimensions value is missing or wrong format. Add it in format " "(width, height) and retry." @@ -3283,205 +3820,207 @@ msgstr "" "Aperture dimensions value is missing or wrong format. Add it in format " "(width, height) and retry." -#: appEditors/AppGerberEditor.py:3388 +#: appEditors/AppGerberEditor.py:3405 msgid "Aperture size value is missing or wrong format. Add it and retry." msgstr "Aperture size value is missing or wrong format. Add it and retry." -#: appEditors/AppGerberEditor.py:3399 +#: appEditors/AppGerberEditor.py:3416 msgid "Aperture already in the aperture table." msgstr "Aperture already in the aperture table." -#: appEditors/AppGerberEditor.py:3406 +#: appEditors/AppGerberEditor.py:3423 msgid "Added new aperture with code" msgstr "Added new aperture with code" -#: appEditors/AppGerberEditor.py:3438 +#: appEditors/AppGerberEditor.py:3455 msgid " Select an aperture in Aperture Table" msgstr " Select an aperture in Aperture Table" -#: appEditors/AppGerberEditor.py:3446 +#: appEditors/AppGerberEditor.py:3463 msgid "Select an aperture in Aperture Table -->" msgstr "Select an aperture in Aperture Table -->" -#: appEditors/AppGerberEditor.py:3460 +#: appEditors/AppGerberEditor.py:3477 msgid "Deleted aperture with code" msgstr "Deleted aperture with code" -#: appEditors/AppGerberEditor.py:3528 +#: appEditors/AppGerberEditor.py:3545 msgid "Dimensions need two float values separated by comma." msgstr "Dimensions need two float values separated by comma." -#: appEditors/AppGerberEditor.py:3537 +#: appEditors/AppGerberEditor.py:3554 msgid "Dimensions edited." msgstr "Dimensions edited." -#: appEditors/AppGerberEditor.py:4066 +#: appEditors/AppGerberEditor.py:4083 msgid "Loading Gerber into Editor" msgstr "Loading Gerber into Editor" -#: appEditors/AppGerberEditor.py:4194 +#: appEditors/AppGerberEditor.py:4211 msgid "Setting up the UI" msgstr "Setting up the UI" -#: appEditors/AppGerberEditor.py:4195 +#: appEditors/AppGerberEditor.py:4212 msgid "Adding geometry finished. Preparing the GUI" msgstr "Adding geometry finished. Preparing the GUI" -#: appEditors/AppGerberEditor.py:4204 +#: appEditors/AppGerberEditor.py:4221 msgid "Finished loading the Gerber object into the editor." msgstr "Finished loading the Gerber object into the editor." -#: appEditors/AppGerberEditor.py:4345 +#: appEditors/AppGerberEditor.py:4362 msgid "" "There are no Aperture definitions in the file. Aborting Gerber creation." msgstr "" "There are no Aperture definitions in the file. Aborting Gerber creation." -#: appEditors/AppGerberEditor.py:4347 appObjects/AppObject.py:133 -#: appObjects/FlatCAMGeometry.py:1786 appParsers/ParseExcellon.py:896 -#: appTools/ToolPcbWizard.py:432 app_Main.py:8589 app_Main.py:8653 -#: app_Main.py:8784 app_Main.py:8849 app_Main.py:9501 +#: appEditors/AppGerberEditor.py:4364 appObjects/AppObject.py:156 +#: appObjects/FlatCAMGeometry.py:1850 appParsers/ParseExcellon.py:972 +#: appTools/ToolPcbWizard.py:318 app_Main.py:8990 app_Main.py:9050 +#: app_Main.py:9181 app_Main.py:9246 app_Main.py:9898 msgid "An internal error has occurred. See shell.\n" msgstr "An internal error has occurred. See shell.\n" -#: appEditors/AppGerberEditor.py:4355 +#: appEditors/AppGerberEditor.py:4372 msgid "Creating Gerber." msgstr "Creating Gerber." -#: appEditors/AppGerberEditor.py:4367 +#: appEditors/AppGerberEditor.py:4384 msgid "Done. Gerber editing finished." msgstr "Done. Gerber editing finished." -#: appEditors/AppGerberEditor.py:4383 +#: appEditors/AppGerberEditor.py:4400 msgid "Cancelled. No aperture is selected" msgstr "Cancelled. No aperture is selected" -#: appEditors/AppGerberEditor.py:4538 app_Main.py:6122 +#: appEditors/AppGerberEditor.py:4555 app_Main.py:6456 msgid "Coordinates copied to clipboard." msgstr "Coordinates copied to clipboard." -#: appEditors/AppGerberEditor.py:4985 +#: appEditors/AppGerberEditor.py:5002 msgid "Failed. No aperture geometry is selected." msgstr "Failed. No aperture geometry is selected." -#: appEditors/AppGerberEditor.py:4994 appEditors/AppGerberEditor.py:5265 +#: appEditors/AppGerberEditor.py:5011 appEditors/AppGerberEditor.py:5282 msgid "Done. Apertures geometry deleted." msgstr "Done. Apertures geometry deleted." -#: appEditors/AppGerberEditor.py:5137 +#: appEditors/AppGerberEditor.py:5154 msgid "No aperture to buffer. Select at least one aperture and try again." msgstr "No aperture to buffer. Select at least one aperture and try again." -#: appEditors/AppGerberEditor.py:5149 +#: appEditors/AppGerberEditor.py:5166 appTools/ToolCutOut.py:756 +#: appTools/ToolCutOut.py:830 appTools/ToolCutOut.py:1049 +#: appTools/ToolCutOut.py:1088 camlib.py:4826 camlib.py:5582 msgid "Failed." msgstr "Failed." -#: appEditors/AppGerberEditor.py:5168 +#: appEditors/AppGerberEditor.py:5185 msgid "Scale factor value is missing or wrong format. Add it and retry." msgstr "Scale factor value is missing or wrong format. Add it and retry." -#: appEditors/AppGerberEditor.py:5200 +#: appEditors/AppGerberEditor.py:5217 msgid "No aperture to scale. Select at least one aperture and try again." msgstr "No aperture to scale. Select at least one aperture and try again." -#: appEditors/AppGerberEditor.py:5216 +#: appEditors/AppGerberEditor.py:5233 msgid "Done. Scale Tool completed." msgstr "Done. Scale Tool completed." -#: appEditors/AppGerberEditor.py:5254 +#: appEditors/AppGerberEditor.py:5271 msgid "Polygons marked." msgstr "Polygons marked." -#: appEditors/AppGerberEditor.py:5257 +#: appEditors/AppGerberEditor.py:5274 msgid "No polygons were marked. None fit within the limits." msgstr "No polygons were marked. None fit within the limits." -#: appEditors/AppGerberEditor.py:5985 +#: appEditors/AppGerberEditor.py:6002 msgid "Rotation action was not executed." msgstr "Rotation action was not executed." -#: appEditors/AppGerberEditor.py:6027 app_Main.py:5556 app_Main.py:5604 +#: appEditors/AppGerberEditor.py:6044 app_Main.py:5879 app_Main.py:5927 msgid "Flip action was not executed." msgstr "Flip action was not executed." -#: appEditors/AppGerberEditor.py:6067 +#: appEditors/AppGerberEditor.py:6084 msgid "Skew action was not executed." msgstr "Skew action was not executed." -#: appEditors/AppGerberEditor.py:6106 +#: appEditors/AppGerberEditor.py:6123 msgid "Scale action was not executed." msgstr "Scale action was not executed." -#: appEditors/AppGerberEditor.py:6150 +#: appEditors/AppGerberEditor.py:6167 msgid "Offset action was not executed." msgstr "Offset action was not executed." -#: appEditors/AppGerberEditor.py:6236 +#: appEditors/AppGerberEditor.py:6253 msgid "Geometry shape offset Y cancelled" msgstr "Geometry shape offset Y cancelled" -#: appEditors/AppGerberEditor.py:6251 +#: appEditors/AppGerberEditor.py:6268 msgid "Geometry shape skew X cancelled" msgstr "Geometry shape skew X cancelled" -#: appEditors/AppGerberEditor.py:6266 +#: appEditors/AppGerberEditor.py:6283 msgid "Geometry shape skew Y cancelled" msgstr "Geometry shape skew Y cancelled" -#: appEditors/FlatCAMTextEditor.py:74 +#: appEditors/AppTextEditor.py:75 msgid "Print Preview" msgstr "Print Preview" -#: appEditors/FlatCAMTextEditor.py:75 +#: appEditors/AppTextEditor.py:77 msgid "Open a OS standard Preview Print window." msgstr "Open a OS standard Preview Print window." -#: appEditors/FlatCAMTextEditor.py:78 +#: appEditors/AppTextEditor.py:80 msgid "Print Code" msgstr "Print Code" -#: appEditors/FlatCAMTextEditor.py:79 +#: appEditors/AppTextEditor.py:82 msgid "Open a OS standard Print window." msgstr "Open a OS standard Print window." -#: appEditors/FlatCAMTextEditor.py:81 +#: appEditors/AppTextEditor.py:85 msgid "Find in Code" msgstr "Find in Code" -#: appEditors/FlatCAMTextEditor.py:82 +#: appEditors/AppTextEditor.py:87 msgid "Will search and highlight in yellow the string in the Find box." msgstr "Will search and highlight in yellow the string in the Find box." -#: appEditors/FlatCAMTextEditor.py:86 +#: appEditors/AppTextEditor.py:91 msgid "Find box. Enter here the strings to be searched in the text." msgstr "Find box. Enter here the strings to be searched in the text." -#: appEditors/FlatCAMTextEditor.py:88 +#: appEditors/AppTextEditor.py:93 msgid "Replace With" msgstr "Replace With" -#: appEditors/FlatCAMTextEditor.py:89 +#: appEditors/AppTextEditor.py:95 msgid "" "Will replace the string from the Find box with the one in the Replace box." msgstr "" "Will replace the string from the Find box with the one in the Replace box." -#: appEditors/FlatCAMTextEditor.py:93 +#: appEditors/AppTextEditor.py:99 msgid "String to replace the one in the Find box throughout the text." msgstr "String to replace the one in the Find box throughout the text." -#: appEditors/FlatCAMTextEditor.py:95 appGUI/ObjectUI.py:2149 -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:54 +#: appEditors/AppTextEditor.py:101 appGUI/GUIElements.py:3498 +#: appGUI/ObjectUI.py:1726 appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:61 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:285 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:280 -#: appTools/ToolIsolation.py:514 appTools/ToolIsolation.py:1312 -#: appTools/ToolIsolation.py:1703 appTools/ToolPaint.py:485 -#: appTools/ToolPaint.py:1446 defaults.py:404 defaults.py:449 +#: appTools/ToolIsolation.py:802 appTools/ToolIsolation.py:1395 +#: appTools/ToolIsolation.py:3323 appTools/ToolPaint.py:1034 +#: appTools/ToolPaint.py:3125 defaults.py:413 defaults.py:500 #: tclCommands/TclCommandPaint.py:162 msgid "All" msgstr "All" -#: appEditors/FlatCAMTextEditor.py:96 +#: appEditors/AppTextEditor.py:102 msgid "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." @@ -3489,62 +4028,164 @@ msgstr "" "When checked it will replace all instances in the 'Find' box\n" "with the text in the 'Replace' box.." -#: appEditors/FlatCAMTextEditor.py:99 +#: appEditors/AppTextEditor.py:105 msgid "Copy All" msgstr "Copy All" -#: appEditors/FlatCAMTextEditor.py:100 +#: appEditors/AppTextEditor.py:107 msgid "Will copy all the text in the Code Editor to the clipboard." msgstr "Will copy all the text in the Code Editor to the clipboard." -#: appEditors/FlatCAMTextEditor.py:103 +#: appEditors/AppTextEditor.py:112 +#, fuzzy +#| msgid "Save changes" +msgid "Save changes internally." +msgstr "Save changes" + +#: appEditors/AppTextEditor.py:115 msgid "Open Code" msgstr "Open Code" -#: appEditors/FlatCAMTextEditor.py:104 +#: appEditors/AppTextEditor.py:117 msgid "Will open a text file in the editor." msgstr "Will open a text file in the editor." -#: appEditors/FlatCAMTextEditor.py:106 +#: appEditors/AppTextEditor.py:120 msgid "Save Code" msgstr "Save Code" -#: appEditors/FlatCAMTextEditor.py:107 +#: appEditors/AppTextEditor.py:122 msgid "Will save the text in the editor into a file." msgstr "Will save the text in the editor into a file." -#: appEditors/FlatCAMTextEditor.py:109 +#: appEditors/AppTextEditor.py:125 msgid "Run Code" msgstr "Run Code" -#: appEditors/FlatCAMTextEditor.py:110 +#: appEditors/AppTextEditor.py:126 msgid "Will run the TCL commands found in the text file, one by one." msgstr "Will run the TCL commands found in the text file, one by one." -#: appEditors/FlatCAMTextEditor.py:184 +#: appEditors/AppTextEditor.py:224 appEditors/appGCodeEditor.py:602 msgid "Open file" msgstr "Open file" -#: appEditors/FlatCAMTextEditor.py:215 appEditors/FlatCAMTextEditor.py:220 -#: appObjects/FlatCAMCNCJob.py:507 appObjects/FlatCAMCNCJob.py:512 -#: appTools/ToolSolderPaste.py:1508 +#: appEditors/AppTextEditor.py:255 appEditors/AppTextEditor.py:260 +#: appObjects/FlatCAMCNCJob.py:1485 appObjects/FlatCAMCNCJob.py:1490 +#: appObjects/FlatCAMCNCJob.py:1713 appObjects/FlatCAMCNCJob.py:1718 +#: appTools/ToolSolderPaste.py:1063 app_Main.py:7021 app_Main.py:7026 msgid "Export Code ..." msgstr "Export Code ..." -#: appEditors/FlatCAMTextEditor.py:272 appObjects/FlatCAMCNCJob.py:955 -#: appTools/ToolSolderPaste.py:1538 +#: appEditors/AppTextEditor.py:314 appObjects/FlatCAMCNCJob.py:1507 +#: appObjects/FlatCAMCNCJob.py:2106 appTools/ToolSolderPaste.py:1093 msgid "No such file or directory" msgstr "No such file or directory" -#: appEditors/FlatCAMTextEditor.py:284 appObjects/FlatCAMCNCJob.py:969 +#: appEditors/AppTextEditor.py:326 appObjects/FlatCAMCNCJob.py:2120 msgid "Saved to" msgstr "Saved to" -#: appEditors/FlatCAMTextEditor.py:334 -msgid "Code Editor content copied to clipboard ..." +#: appEditors/AppTextEditor.py:374 +#, fuzzy +#| msgid "Code Editor content copied to clipboard ..." +msgid "Content copied to clipboard ..." msgstr "Code Editor content copied to clipboard ..." -#: appGUI/GUIElements.py:2703 +#: appEditors/appGCodeEditor.py:66 app_Main.py:7882 +msgid "Code Editor" +msgstr "Code Editor" + +#: appEditors/appGCodeEditor.py:143 appEditors/appGCodeEditor.py:235 +#, fuzzy +#| msgid "View GCode" +msgid "All GCode" +msgstr "View GCode" + +#: appEditors/appGCodeEditor.py:149 appEditors/appGCodeEditor.py:241 +#, fuzzy +#| msgid "Save GCode" +msgid "Header GCode" +msgstr "Save GCode" + +#: appEditors/appGCodeEditor.py:155 appEditors/appGCodeEditor.py:247 +#, fuzzy +#| msgid "Starting G-Code" +msgid "Start GCode" +msgstr "Starting G-Code" + +#: appEditors/appGCodeEditor.py:577 appObjects/FlatCAMCNCJob.py:1811 +#: appTools/ToolCalibration.py:447 +msgid "Loaded Machine Code into Code Editor" +msgstr "Loaded Machine Code into Code Editor" + +#: appEditors/appGCodeEditor.py:667 appGUI/ObjectUI.py:1858 +#, fuzzy +#| msgid "Code Editor" +msgid "GCode Editor" +msgstr "Code Editor" + +#: appEditors/appGCodeEditor.py:692 appEditors/appGCodeEditor.py:703 +#: appGUI/ObjectUI.py:858 appGUI/ObjectUI.py:1830 appGUI/ObjectUI.py:1840 +#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:138 +#: appTools/ToolCopperThieving.py:1314 +msgid "Dia" +msgstr "Dia" + +#: appEditors/appGCodeEditor.py:692 appGUI/ObjectUI.py:858 +#: appGUI/ObjectUI.py:1830 appTools/ToolIsolation.py:2984 +#: appTools/ToolNCC.py:3777 appTools/ToolPaint.py:2812 +msgid "TT" +msgstr "TT" + +#: appEditors/appGCodeEditor.py:703 appGUI/ObjectUI.py:571 +#: appGUI/ObjectUI.py:1840 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:71 +#: appTools/ToolDrilling.py:2051 appTools/ToolMilling.py:1670 +#: appTools/ToolMilling.py:1769 appTools/ToolProperties.py:169 +msgid "Drills" +msgstr "Drills" + +#: appEditors/appGCodeEditor.py:703 appGUI/ObjectUI.py:571 +#: appGUI/ObjectUI.py:1840 +#: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:158 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:72 +#: appTools/ToolDrilling.py:2051 appTools/ToolMilling.py:1670 +#: appTools/ToolMilling.py:1770 appTools/ToolProperties.py:171 +msgid "Slots" +msgstr "Slots" + +#: appEditors/appGCodeEditor.py:712 appEditors/appGCodeEditor.py:734 +msgid "CNC Code Snippet" +msgstr "" + +#: appEditors/appGCodeEditor.py:714 appEditors/appGCodeEditor.py:736 +msgid "Code snippet defined in Preferences." +msgstr "" + +#: appEditors/appGCodeEditor.py:720 appEditors/appGCodeEditor.py:742 +#, fuzzy +#| msgid "" +#| "Type here any G-Code commands you would\n" +#| "like to add at the beginning of the G-Code file." +msgid "" +"Type here any G-Code commands you would\n" +"like to insert at the cursor location." +msgstr "" +"Type here any G-Code commands you would\n" +"like to add at the beginning of the G-Code file." + +#: appEditors/appGCodeEditor.py:726 appEditors/appGCodeEditor.py:748 +#, fuzzy +#| msgid "Insert QRCode" +msgid "Insert Code" +msgstr "Insert QRCode" + +#: appEditors/appGCodeEditor.py:729 appEditors/appGCodeEditor.py:751 +msgid "Insert the code above at the cursor location." +msgstr "" + +#: appGUI/GUIElements.py:2949 msgid "" "The reference can be:\n" "- Absolute -> the reference point is point (0,0)\n" @@ -3554,19 +4195,19 @@ msgstr "" "- Absolute -> the reference point is point (0,0)\n" "- Relative -> the reference point is the mouse position before Jump" -#: appGUI/GUIElements.py:2708 +#: appGUI/GUIElements.py:2954 msgid "Abs" msgstr "Abs" -#: appGUI/GUIElements.py:2709 +#: appGUI/GUIElements.py:2955 msgid "Relative" msgstr "Relative" -#: appGUI/GUIElements.py:2719 +#: appGUI/GUIElements.py:2965 msgid "Location" msgstr "Location" -#: appGUI/GUIElements.py:2721 +#: appGUI/GUIElements.py:2967 msgid "" "The Location value is a tuple (x,y).\n" "If the reference is Absolute then the Jump will be at the position (x,y).\n" @@ -3578,37 +4219,91 @@ msgstr "" "If the reference is Relative then the Jump will be at the (x,y) distance\n" "from the current mouse location point." -#: appGUI/GUIElements.py:2761 +#: appGUI/GUIElements.py:3007 msgid "Save Log" msgstr "Save Log" -#: appGUI/GUIElements.py:2771 app_Main.py:2682 app_Main.py:3028 -#: app_Main.py:3197 +#: appGUI/GUIElements.py:3017 app_Main.py:2803 app_Main.py:3175 +#: app_Main.py:3348 msgid "Close" msgstr "Close" -#: appGUI/GUIElements.py:2780 appTools/ToolShell.py:296 +#: appGUI/GUIElements.py:3026 appTools/ToolShell.py:296 msgid "Type >help< to get started" msgstr "Type >help< to get started" -#: appGUI/GUIElements.py:3170 appGUI/GUIElements.py:3179 +#: appGUI/GUIElements.py:3393 appGUI/GUIElements.py:3410 +#, fuzzy +#| msgid "Toggle the axis" +msgid "Jog the Y axis." +msgstr "Toggle the axis" + +#: appGUI/GUIElements.py:3401 +#, fuzzy +#| msgid "Move to Origin" +msgid "Move to Origin." +msgstr "Move to Origin" + +#: appGUI/GUIElements.py:3418 appGUI/GUIElements.py:3426 +#, fuzzy +#| msgid "Toggle the axis" +msgid "Jog the X axis." +msgstr "Toggle the axis" + +#: appGUI/GUIElements.py:3436 appGUI/GUIElements.py:3446 +#, fuzzy +#| msgid "Toggle the axis" +msgid "Jog the Z axis." +msgstr "Toggle the axis" + +#: appGUI/GUIElements.py:3472 +msgid "Zero the CNC X axes at current position." +msgstr "" + +#: appGUI/GUIElements.py:3480 +msgid "Zero the CNC Y axes at current position." +msgstr "" + +#: appGUI/GUIElements.py:3485 +#, fuzzy +#| msgid "LZ" +msgid "Z" +msgstr "LZ" + +#: appGUI/GUIElements.py:3488 +msgid "Zero the CNC Z axes at current position." +msgstr "" + +#: appGUI/GUIElements.py:3492 +msgid "Do Home" +msgstr "" + +#: appGUI/GUIElements.py:3494 +msgid "Perform a homing cycle on all axis." +msgstr "" + +#: appGUI/GUIElements.py:3502 +msgid "Zero all CNC axes at current position." +msgstr "" + +#: appGUI/GUIElements.py:3657 appGUI/GUIElements.py:3666 msgid "Idle." msgstr "Idle." -#: appGUI/GUIElements.py:3212 +#: appGUI/GUIElements.py:3699 msgid "Application started ..." msgstr "Application started ..." -#: appGUI/GUIElements.py:3213 +#: appGUI/GUIElements.py:3700 msgid "Hello!" msgstr "Hello!" -#: appGUI/GUIElements.py:3260 appGUI/MainGUI.py:190 appGUI/MainGUI.py:895 -#: appGUI/MainGUI.py:1927 +#: appGUI/GUIElements.py:3747 appGUI/MainGUI.py:190 appGUI/MainGUI.py:918 +#: appGUI/MainGUI.py:2073 msgid "Run Script ..." msgstr "Run Script ..." -#: appGUI/GUIElements.py:3262 appGUI/MainGUI.py:192 +#: appGUI/GUIElements.py:3749 appGUI/MainGUI.py:192 msgid "" "Will run the opened Tcl Script thus\n" "enabling the automation of certain\n" @@ -3618,32 +4313,32 @@ msgstr "" "enabling the automation of certain\n" "functions of FlatCAM." -#: appGUI/GUIElements.py:3271 appGUI/MainGUI.py:118 -#: appTools/ToolPcbWizard.py:62 appTools/ToolPcbWizard.py:69 +#: appGUI/GUIElements.py:3758 appGUI/MainGUI.py:118 +#: appTools/ToolPcbWizard.py:390 appTools/ToolPcbWizard.py:397 msgid "Open" msgstr "Open" -#: appGUI/GUIElements.py:3275 +#: appGUI/GUIElements.py:3762 msgid "Open Project ..." msgstr "Open Project ..." -#: appGUI/GUIElements.py:3281 appGUI/MainGUI.py:129 +#: appGUI/GUIElements.py:3768 appGUI/MainGUI.py:129 msgid "Open &Gerber ...\tCtrl+G" msgstr "Open &Gerber ...\tCtrl+G" -#: appGUI/GUIElements.py:3286 appGUI/MainGUI.py:134 +#: appGUI/GUIElements.py:3773 appGUI/MainGUI.py:134 msgid "Open &Excellon ...\tCtrl+E" msgstr "Open &Excellon ...\tCtrl+E" -#: appGUI/GUIElements.py:3291 appGUI/MainGUI.py:139 +#: appGUI/GUIElements.py:3778 appGUI/MainGUI.py:139 msgid "Open G-&Code ..." msgstr "Open G-&Code ..." -#: appGUI/GUIElements.py:3301 +#: appGUI/GUIElements.py:3788 msgid "Exit" msgstr "Exit" -#: appGUI/MainGUI.py:67 appGUI/MainGUI.py:69 appGUI/MainGUI.py:1407 +#: appGUI/MainGUI.py:67 appGUI/MainGUI.py:69 appGUI/MainGUI.py:1457 msgid "Toggle Panel" msgstr "Toggle Panel" @@ -3711,7 +4406,7 @@ msgstr "Recent projects" msgid "Recent files" msgstr "Recent files" -#: appGUI/MainGUI.py:156 appGUI/MainGUI.py:750 appGUI/MainGUI.py:1380 +#: appGUI/MainGUI.py:156 appGUI/MainGUI.py:759 appGUI/MainGUI.py:1430 msgid "Save" msgstr "Save" @@ -3727,11 +4422,11 @@ msgstr "Save Project &As ...\tCtrl+Shift+S" msgid "Scripting" msgstr "Scripting" -#: appGUI/MainGUI.py:184 appGUI/MainGUI.py:891 appGUI/MainGUI.py:1923 +#: appGUI/MainGUI.py:184 appGUI/MainGUI.py:914 appGUI/MainGUI.py:2069 msgid "New Script ..." msgstr "New Script ..." -#: appGUI/MainGUI.py:186 appGUI/MainGUI.py:893 appGUI/MainGUI.py:1925 +#: appGUI/MainGUI.py:186 appGUI/MainGUI.py:916 appGUI/MainGUI.py:2071 msgid "Open Script ..." msgstr "Open Script ..." @@ -3829,11 +4524,11 @@ msgstr "Import Preferences from file ..." msgid "Export Preferences to file ..." msgstr "Export Preferences to file ..." -#: appGUI/MainGUI.py:295 appGUI/preferences/PreferencesUIManager.py:1127 +#: appGUI/MainGUI.py:295 appGUI/preferences/PreferencesUIManager.py:1163 msgid "Save Preferences" msgstr "Save Preferences" -#: appGUI/MainGUI.py:301 appGUI/MainGUI.py:4101 +#: appGUI/MainGUI.py:301 appGUI/MainGUI.py:4270 msgid "Print (PDF)" msgstr "Print (PDF)" @@ -3841,7 +4536,7 @@ msgstr "Print (PDF)" msgid "E&xit" msgstr "E&xit" -#: appGUI/MainGUI.py:317 appGUI/MainGUI.py:744 appGUI/MainGUI.py:1529 +#: appGUI/MainGUI.py:317 appGUI/MainGUI.py:753 appGUI/MainGUI.py:1579 msgid "Edit" msgstr "Edit" @@ -3853,15 +4548,59 @@ msgstr "Edit Object\tE" msgid "Close Editor\tCtrl+S" msgstr "Close Editor\tCtrl+S" -#: appGUI/MainGUI.py:332 +#: appGUI/MainGUI.py:333 msgid "Conversion" msgstr "Conversion" -#: appGUI/MainGUI.py:334 +#: appGUI/MainGUI.py:336 +msgid "Convert Single to MultiGeo" +msgstr "Convert Single to MultiGeo" + +#: appGUI/MainGUI.py:338 +msgid "" +"Will convert a Geometry object from single_geometry type\n" +"to a multi_geometry type." +msgstr "" +"Will convert a Geometry object from single_geometry type\n" +"to a multi_geometry type." + +#: appGUI/MainGUI.py:342 +msgid "Convert Multi to SingleGeo" +msgstr "Convert Multi to SingleGeo" + +#: appGUI/MainGUI.py:344 +msgid "" +"Will convert a Geometry object from multi_geometry type\n" +"to a single_geometry type." +msgstr "" +"Will convert a Geometry object from multi_geometry type\n" +"to a single_geometry type." + +#: appGUI/MainGUI.py:351 +msgid "Convert Any to Geo" +msgstr "Convert Any to Geo" + +#: appGUI/MainGUI.py:354 +msgid "Convert Any to Gerber" +msgstr "Convert Any to Gerber" + +#: appGUI/MainGUI.py:357 +#, fuzzy +#| msgid "Convert Any to Geo" +msgid "Convert Any to Excellon" +msgstr "Convert Any to Geo" + +#: appGUI/MainGUI.py:362 +#, fuzzy +#| msgid "Align Objects" +msgid "Join Objects" +msgstr "Align Objects" + +#: appGUI/MainGUI.py:364 msgid "&Join Geo/Gerber/Exc -> Geo" msgstr "&Join Geo/Gerber/Exc -> Geo" -#: appGUI/MainGUI.py:336 +#: appGUI/MainGUI.py:366 msgid "" "Merge a selection of objects, which can be of type:\n" "- Gerber\n" @@ -3875,850 +4614,848 @@ msgstr "" "- Geometry\n" "into a new combo Geometry object." -#: appGUI/MainGUI.py:343 +#: appGUI/MainGUI.py:373 msgid "Join Excellon(s) -> Excellon" msgstr "Join Excellon(s) -> Excellon" -#: appGUI/MainGUI.py:345 +#: appGUI/MainGUI.py:375 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." -#: appGUI/MainGUI.py:348 +#: appGUI/MainGUI.py:378 msgid "Join Gerber(s) -> Gerber" msgstr "Join Gerber(s) -> Gerber" -#: appGUI/MainGUI.py:350 +#: appGUI/MainGUI.py:380 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." -#: appGUI/MainGUI.py:355 -msgid "Convert Single to MultiGeo" -msgstr "Convert Single to MultiGeo" - -#: appGUI/MainGUI.py:357 -msgid "" -"Will convert a Geometry object from single_geometry type\n" -"to a multi_geometry type." -msgstr "" -"Will convert a Geometry object from single_geometry type\n" -"to a multi_geometry type." - -#: appGUI/MainGUI.py:361 -msgid "Convert Multi to SingleGeo" -msgstr "Convert Multi to SingleGeo" - -#: appGUI/MainGUI.py:363 -msgid "" -"Will convert a Geometry object from multi_geometry type\n" -"to a single_geometry type." -msgstr "" -"Will convert a Geometry object from multi_geometry type\n" -"to a single_geometry type." - -#: appGUI/MainGUI.py:370 -msgid "Convert Any to Geo" -msgstr "Convert Any to Geo" - -#: appGUI/MainGUI.py:373 -msgid "Convert Any to Gerber" -msgstr "Convert Any to Gerber" - -#: appGUI/MainGUI.py:379 +#: appGUI/MainGUI.py:388 msgid "&Copy\tCtrl+C" msgstr "&Copy\tCtrl+C" -#: appGUI/MainGUI.py:384 +#: appGUI/MainGUI.py:393 msgid "&Delete\tDEL" msgstr "&Delete\tDEL" -#: appGUI/MainGUI.py:389 +#: appGUI/MainGUI.py:398 msgid "Se&t Origin\tO" msgstr "Se&t Origin\tO" -#: appGUI/MainGUI.py:391 +#: appGUI/MainGUI.py:400 msgid "Move to Origin\tShift+O" msgstr "Move to Origin\tShift+O" -#: appGUI/MainGUI.py:394 +#: appGUI/MainGUI.py:403 msgid "Jump to Location\tJ" msgstr "Jump to Location\tJ" -#: appGUI/MainGUI.py:396 +#: appGUI/MainGUI.py:405 msgid "Locate in Object\tShift+J" msgstr "Locate in Object\tShift+J" -#: appGUI/MainGUI.py:401 +#: appGUI/MainGUI.py:410 msgid "Toggle Units\tQ" msgstr "Toggle Units\tQ" -#: appGUI/MainGUI.py:403 +#: appGUI/MainGUI.py:412 msgid "&Select All\tCtrl+A" msgstr "&Select All\tCtrl+A" -#: appGUI/MainGUI.py:408 +#: appGUI/MainGUI.py:417 msgid "&Preferences\tShift+P" msgstr "&Preferences\tShift+P" -#: appGUI/MainGUI.py:414 appTools/ToolProperties.py:155 +#: appGUI/MainGUI.py:423 appTools/ToolProperties.py:158 msgid "Options" msgstr "Options" -#: appGUI/MainGUI.py:416 +#: appGUI/MainGUI.py:425 msgid "&Rotate Selection\tShift+(R)" msgstr "&Rotate Selection\tShift+(R)" -#: appGUI/MainGUI.py:421 +#: appGUI/MainGUI.py:430 msgid "&Skew on X axis\tShift+X" msgstr "&Skew on X axis\tShift+X" -#: appGUI/MainGUI.py:423 +#: appGUI/MainGUI.py:432 msgid "S&kew on Y axis\tShift+Y" msgstr "S&kew on Y axis\tShift+Y" -#: appGUI/MainGUI.py:428 +#: appGUI/MainGUI.py:437 msgid "Flip on &X axis\tX" msgstr "Flip on &X axis\tX" -#: appGUI/MainGUI.py:430 +#: appGUI/MainGUI.py:439 msgid "Flip on &Y axis\tY" msgstr "Flip on &Y axis\tY" -#: appGUI/MainGUI.py:435 +#: appGUI/MainGUI.py:444 msgid "View source\tAlt+S" msgstr "View source\tAlt+S" -#: appGUI/MainGUI.py:437 +#: appGUI/MainGUI.py:446 msgid "Tools DataBase\tCtrl+D" msgstr "Tools DataBase\tCtrl+D" -#: appGUI/MainGUI.py:444 appGUI/MainGUI.py:1427 +#: appGUI/MainGUI.py:453 appGUI/MainGUI.py:1477 msgid "View" msgstr "View" -#: appGUI/MainGUI.py:446 +#: appGUI/MainGUI.py:455 msgid "Enable all plots\tAlt+1" msgstr "Enable all plots\tAlt+1" -#: appGUI/MainGUI.py:448 +#: appGUI/MainGUI.py:457 msgid "Disable all plots\tAlt+2" msgstr "Disable all plots\tAlt+2" -#: appGUI/MainGUI.py:450 +#: appGUI/MainGUI.py:459 msgid "Disable non-selected\tAlt+3" msgstr "Disable non-selected\tAlt+3" -#: appGUI/MainGUI.py:454 +#: appGUI/MainGUI.py:463 msgid "&Zoom Fit\tV" msgstr "&Zoom Fit\tV" -#: appGUI/MainGUI.py:456 +#: appGUI/MainGUI.py:465 msgid "&Zoom In\t=" msgstr "&Zoom In\t=" -#: appGUI/MainGUI.py:458 +#: appGUI/MainGUI.py:467 msgid "&Zoom Out\t-" msgstr "&Zoom Out\t-" -#: appGUI/MainGUI.py:463 +#: appGUI/MainGUI.py:472 msgid "Redraw All\tF5" msgstr "Redraw All\tF5" -#: appGUI/MainGUI.py:467 +#: appGUI/MainGUI.py:476 msgid "Toggle Code Editor\tShift+E" msgstr "Toggle Code Editor\tShift+E" -#: appGUI/MainGUI.py:470 +#: appGUI/MainGUI.py:479 msgid "&Toggle FullScreen\tAlt+F10" msgstr "&Toggle FullScreen\tAlt+F10" -#: appGUI/MainGUI.py:472 +#: appGUI/MainGUI.py:481 msgid "&Toggle Plot Area\tCtrl+F10" msgstr "&Toggle Plot Area\tCtrl+F10" -#: appGUI/MainGUI.py:474 +#: appGUI/MainGUI.py:483 msgid "&Toggle Project/Sel/Tool\t`" msgstr "&Toggle Project/Sel/Tool\t`" -#: appGUI/MainGUI.py:478 +#: appGUI/MainGUI.py:487 msgid "&Toggle Grid Snap\tG" msgstr "&Toggle Grid Snap\tG" -#: appGUI/MainGUI.py:480 +#: appGUI/MainGUI.py:489 msgid "&Toggle Grid Lines\tAlt+G" msgstr "&Toggle Grid Lines\tAlt+G" -#: appGUI/MainGUI.py:482 +#: appGUI/MainGUI.py:491 msgid "&Toggle Axis\tShift+G" msgstr "&Toggle Axis\tShift+G" -#: appGUI/MainGUI.py:484 +#: appGUI/MainGUI.py:493 msgid "Toggle Workspace\tShift+W" msgstr "Toggle Workspace\tShift+W" -#: appGUI/MainGUI.py:486 +#: appGUI/MainGUI.py:495 msgid "Toggle HUD\tAlt+H" msgstr "Toggle HUD\tAlt+H" -#: appGUI/MainGUI.py:491 +#: appGUI/MainGUI.py:500 msgid "Objects" msgstr "Objects" -#: appGUI/MainGUI.py:494 appGUI/MainGUI.py:4099 -#: appObjects/ObjectCollection.py:1121 appObjects/ObjectCollection.py:1168 +#: appGUI/MainGUI.py:503 appGUI/MainGUI.py:4268 +#: appObjects/ObjectCollection.py:1128 appObjects/ObjectCollection.py:1175 msgid "Select All" msgstr "Select All" -#: appGUI/MainGUI.py:496 appObjects/ObjectCollection.py:1125 -#: appObjects/ObjectCollection.py:1172 +#: appGUI/MainGUI.py:505 appObjects/ObjectCollection.py:1132 +#: appObjects/ObjectCollection.py:1179 msgid "Deselect All" msgstr "Deselect All" -#: appGUI/MainGUI.py:505 +#: appGUI/MainGUI.py:514 msgid "&Command Line\tS" msgstr "&Command Line\tS" -#: appGUI/MainGUI.py:510 +#: appGUI/MainGUI.py:519 msgid "Help" msgstr "Help" -#: appGUI/MainGUI.py:512 +#: appGUI/MainGUI.py:521 msgid "Online Help\tF1" msgstr "Online Help\tF1" -#: appGUI/MainGUI.py:518 app_Main.py:3166 app_Main.py:3175 +#: appGUI/MainGUI.py:527 app_Main.py:3313 app_Main.py:3322 msgid "Bookmarks Manager" msgstr "Bookmarks Manager" -#: appGUI/MainGUI.py:522 +#: appGUI/MainGUI.py:531 msgid "Report a bug" msgstr "Report a bug" -#: appGUI/MainGUI.py:525 +#: appGUI/MainGUI.py:534 msgid "Excellon Specification" msgstr "Excellon Specification" -#: appGUI/MainGUI.py:527 +#: appGUI/MainGUI.py:536 msgid "Gerber Specification" msgstr "Gerber Specification" -#: appGUI/MainGUI.py:532 +#: appGUI/MainGUI.py:541 msgid "Shortcuts List\tF3" msgstr "Shortcuts List\tF3" -#: appGUI/MainGUI.py:534 +#: appGUI/MainGUI.py:543 msgid "YouTube Channel\tF4" msgstr "YouTube Channel\tF4" -#: appGUI/MainGUI.py:539 -msgid "ReadMe?" -msgstr "ReadMe?" +#: appGUI/MainGUI.py:548 +#, fuzzy +#| msgid "How To's" +msgid "How To" +msgstr "How To's" -#: appGUI/MainGUI.py:542 app_Main.py:2649 +#: appGUI/MainGUI.py:551 app_Main.py:2770 msgid "About FlatCAM" msgstr "About FlatCAM" -#: appGUI/MainGUI.py:551 +#: appGUI/MainGUI.py:560 msgid "Add Circle\tO" msgstr "Add Circle\tO" -#: appGUI/MainGUI.py:554 +#: appGUI/MainGUI.py:563 msgid "Add Arc\tA" msgstr "Add Arc\tA" -#: appGUI/MainGUI.py:557 +#: appGUI/MainGUI.py:566 msgid "Add Rectangle\tR" msgstr "Add Rectangle\tR" -#: appGUI/MainGUI.py:560 +#: appGUI/MainGUI.py:569 msgid "Add Polygon\tN" msgstr "Add Polygon\tN" -#: appGUI/MainGUI.py:563 +#: appGUI/MainGUI.py:572 msgid "Add Path\tP" msgstr "Add Path\tP" -#: appGUI/MainGUI.py:566 +#: appGUI/MainGUI.py:575 msgid "Add Text\tT" msgstr "Add Text\tT" -#: appGUI/MainGUI.py:569 +#: appGUI/MainGUI.py:578 msgid "Polygon Union\tU" msgstr "Polygon Union\tU" -#: appGUI/MainGUI.py:571 +#: appGUI/MainGUI.py:580 msgid "Polygon Intersection\tE" msgstr "Polygon Intersection\tE" -#: appGUI/MainGUI.py:573 +#: appGUI/MainGUI.py:582 msgid "Polygon Subtraction\tS" msgstr "Polygon Subtraction\tS" -#: appGUI/MainGUI.py:577 +#: appGUI/MainGUI.py:586 msgid "Cut Path\tX" msgstr "Cut Path\tX" -#: appGUI/MainGUI.py:581 +#: appGUI/MainGUI.py:590 msgid "Copy Geom\tC" msgstr "Copy Geom\tC" -#: appGUI/MainGUI.py:583 +#: appGUI/MainGUI.py:592 msgid "Delete Shape\tDEL" msgstr "Delete Shape\tDEL" -#: appGUI/MainGUI.py:587 appGUI/MainGUI.py:674 +#: appGUI/MainGUI.py:596 appGUI/MainGUI.py:683 msgid "Move\tM" msgstr "Move\tM" -#: appGUI/MainGUI.py:589 +#: appGUI/MainGUI.py:598 msgid "Buffer Tool\tB" msgstr "Buffer Tool\tB" -#: appGUI/MainGUI.py:592 +#: appGUI/MainGUI.py:601 msgid "Paint Tool\tI" msgstr "Paint Tool\tI" -#: appGUI/MainGUI.py:595 +#: appGUI/MainGUI.py:604 msgid "Transform Tool\tAlt+R" msgstr "Transform Tool\tAlt+R" -#: appGUI/MainGUI.py:599 +#: appGUI/MainGUI.py:608 msgid "Toggle Corner Snap\tK" msgstr "Toggle Corner Snap\tK" -#: appGUI/MainGUI.py:605 +#: appGUI/MainGUI.py:614 msgid ">Excellon Editor<" msgstr ">Excellon Editor<" -#: appGUI/MainGUI.py:609 +#: appGUI/MainGUI.py:618 msgid "Add Drill Array\tA" msgstr "Add Drill Array\tA" -#: appGUI/MainGUI.py:611 +#: appGUI/MainGUI.py:620 msgid "Add Drill\tD" msgstr "Add Drill\tD" -#: appGUI/MainGUI.py:615 +#: appGUI/MainGUI.py:624 msgid "Add Slot Array\tQ" msgstr "Add Slot Array\tQ" -#: appGUI/MainGUI.py:617 +#: appGUI/MainGUI.py:626 msgid "Add Slot\tW" msgstr "Add Slot\tW" -#: appGUI/MainGUI.py:621 +#: appGUI/MainGUI.py:630 msgid "Resize Drill(S)\tR" msgstr "Resize Drill(S)\tR" -#: appGUI/MainGUI.py:624 appGUI/MainGUI.py:668 +#: appGUI/MainGUI.py:633 appGUI/MainGUI.py:677 msgid "Copy\tC" msgstr "Copy\tC" -#: appGUI/MainGUI.py:626 appGUI/MainGUI.py:670 +#: appGUI/MainGUI.py:635 appGUI/MainGUI.py:679 msgid "Delete\tDEL" msgstr "Delete\tDEL" -#: appGUI/MainGUI.py:631 +#: appGUI/MainGUI.py:640 msgid "Move Drill(s)\tM" msgstr "Move Drill(s)\tM" -#: appGUI/MainGUI.py:636 +#: appGUI/MainGUI.py:645 msgid ">Gerber Editor<" msgstr ">Gerber Editor<" -#: appGUI/MainGUI.py:640 +#: appGUI/MainGUI.py:649 msgid "Add Pad\tP" msgstr "Add Pad\tP" -#: appGUI/MainGUI.py:642 +#: appGUI/MainGUI.py:651 msgid "Add Pad Array\tA" msgstr "Add Pad Array\tA" -#: appGUI/MainGUI.py:644 +#: appGUI/MainGUI.py:653 msgid "Add Track\tT" msgstr "Add Track\tT" -#: appGUI/MainGUI.py:646 +#: appGUI/MainGUI.py:655 msgid "Add Region\tN" msgstr "Add Region\tN" -#: appGUI/MainGUI.py:650 +#: appGUI/MainGUI.py:659 msgid "Poligonize\tAlt+N" msgstr "Poligonize\tAlt+N" -#: appGUI/MainGUI.py:652 +#: appGUI/MainGUI.py:661 msgid "Add SemiDisc\tE" msgstr "Add SemiDisc\tE" -#: appGUI/MainGUI.py:654 +#: appGUI/MainGUI.py:663 msgid "Add Disc\tD" msgstr "Add Disc\tD" -#: appGUI/MainGUI.py:656 +#: appGUI/MainGUI.py:665 msgid "Buffer\tB" msgstr "Buffer\tB" -#: appGUI/MainGUI.py:658 +#: appGUI/MainGUI.py:667 msgid "Scale\tS" msgstr "Scale\tS" -#: appGUI/MainGUI.py:660 +#: appGUI/MainGUI.py:669 msgid "Mark Area\tAlt+A" msgstr "Mark Area\tAlt+A" -#: appGUI/MainGUI.py:662 +#: appGUI/MainGUI.py:671 msgid "Eraser\tCtrl+E" msgstr "Eraser\tCtrl+E" -#: appGUI/MainGUI.py:664 +#: appGUI/MainGUI.py:673 msgid "Transform\tAlt+R" msgstr "Transform\tAlt+R" -#: appGUI/MainGUI.py:691 +#: appGUI/MainGUI.py:700 msgid "Enable Plot" msgstr "Enable Plot" -#: appGUI/MainGUI.py:693 +#: appGUI/MainGUI.py:702 msgid "Disable Plot" msgstr "Disable Plot" -#: appGUI/MainGUI.py:697 +#: appGUI/MainGUI.py:706 msgid "Set Color" msgstr "Set Color" -#: appGUI/MainGUI.py:700 app_Main.py:9768 +#: appGUI/MainGUI.py:709 app_Main.py:10165 msgid "Red" msgstr "Red" -#: appGUI/MainGUI.py:703 app_Main.py:9770 +#: appGUI/MainGUI.py:712 app_Main.py:10167 msgid "Blue" msgstr "Blue" -#: appGUI/MainGUI.py:706 app_Main.py:9773 +#: appGUI/MainGUI.py:715 app_Main.py:10170 msgid "Yellow" msgstr "Yellow" -#: appGUI/MainGUI.py:709 app_Main.py:9775 +#: appGUI/MainGUI.py:718 app_Main.py:10172 msgid "Green" msgstr "Green" -#: appGUI/MainGUI.py:712 app_Main.py:9777 +#: appGUI/MainGUI.py:721 app_Main.py:10174 msgid "Purple" msgstr "Purple" -#: appGUI/MainGUI.py:715 app_Main.py:9779 +#: appGUI/MainGUI.py:724 app_Main.py:10176 msgid "Brown" msgstr "Brown" -#: appGUI/MainGUI.py:718 app_Main.py:9781 app_Main.py:9837 +#: appGUI/MainGUI.py:727 app_Main.py:10178 app_Main.py:10234 msgid "White" msgstr "White" -#: appGUI/MainGUI.py:721 app_Main.py:9783 +#: appGUI/MainGUI.py:730 app_Main.py:10180 msgid "Black" msgstr "Black" -#: appGUI/MainGUI.py:726 app_Main.py:9786 +#: appGUI/MainGUI.py:735 app_Main.py:10183 msgid "Custom" msgstr "Custom" -#: appGUI/MainGUI.py:731 app_Main.py:9820 +#: appGUI/MainGUI.py:740 app_Main.py:10217 msgid "Opacity" msgstr "Opacity" -#: appGUI/MainGUI.py:734 app_Main.py:9796 +#: appGUI/MainGUI.py:743 app_Main.py:10193 msgid "Default" msgstr "Default" -#: appGUI/MainGUI.py:739 +#: appGUI/MainGUI.py:748 msgid "Generate CNC" msgstr "Generate CNC" -#: appGUI/MainGUI.py:741 +#: appGUI/MainGUI.py:750 msgid "View Source" msgstr "View Source" -#: appGUI/MainGUI.py:746 appGUI/MainGUI.py:851 appGUI/MainGUI.py:1066 -#: appGUI/MainGUI.py:1525 appGUI/MainGUI.py:1886 appGUI/MainGUI.py:2097 -#: appGUI/MainGUI.py:4511 appGUI/ObjectUI.py:1519 -#: appObjects/FlatCAMGeometry.py:560 appTools/ToolPanelize.py:552 -#: appTools/ToolPanelize.py:579 appTools/ToolPanelize.py:672 -#: appTools/ToolPanelize.py:699 appTools/ToolPanelize.py:759 +#: appGUI/MainGUI.py:755 appGUI/MainGUI.py:874 appGUI/MainGUI.py:1091 +#: appGUI/MainGUI.py:1575 appGUI/MainGUI.py:2032 appGUI/MainGUI.py:2245 +#: appGUI/MainGUI.py:4680 appGUI/ObjectUI.py:1000 +#: appObjects/FlatCAMGeometry.py:552 appTools/ToolPanelize.py:325 +#: appTools/ToolPanelize.py:351 appTools/ToolPanelize.py:448 +#: appTools/ToolPanelize.py:477 appTools/ToolPanelize.py:538 msgid "Copy" msgstr "Copy" -#: appGUI/MainGUI.py:754 appGUI/MainGUI.py:1538 appTools/ToolProperties.py:31 +#: appGUI/MainGUI.py:763 appGUI/MainGUI.py:1588 appTools/ToolProperties.py:31 msgid "Properties" msgstr "Properties" -#: appGUI/MainGUI.py:783 +#: appGUI/MainGUI.py:792 msgid "File Toolbar" msgstr "File Toolbar" -#: appGUI/MainGUI.py:787 +#: appGUI/MainGUI.py:796 msgid "Edit Toolbar" msgstr "Edit Toolbar" -#: appGUI/MainGUI.py:791 +#: appGUI/MainGUI.py:800 msgid "View Toolbar" msgstr "View Toolbar" -#: appGUI/MainGUI.py:795 +#: appGUI/MainGUI.py:804 msgid "Shell Toolbar" msgstr "Shell Toolbar" -#: appGUI/MainGUI.py:799 +#: appGUI/MainGUI.py:808 msgid "Tools Toolbar" msgstr "Tools Toolbar" -#: appGUI/MainGUI.py:803 +#: appGUI/MainGUI.py:812 msgid "Excellon Editor Toolbar" msgstr "Excellon Editor Toolbar" -#: appGUI/MainGUI.py:809 +#: appGUI/MainGUI.py:818 msgid "Geometry Editor Toolbar" msgstr "Geometry Editor Toolbar" -#: appGUI/MainGUI.py:813 +#: appGUI/MainGUI.py:822 msgid "Gerber Editor Toolbar" msgstr "Gerber Editor Toolbar" -#: appGUI/MainGUI.py:817 +#: appGUI/MainGUI.py:827 appGUI/MainGUI.py:1886 +#, fuzzy +#| msgid "Coordinates copied to clipboard." +msgid "Delta Coordinates Toolbar" +msgstr "Coordinates copied to clipboard." + +#: appGUI/MainGUI.py:830 appGUI/MainGUI.py:1894 +#, fuzzy +#| msgid "Coordinates" +msgid "Coordinates Toolbar" +msgstr "Coordinates" + +#: appGUI/MainGUI.py:833 appGUI/MainGUI.py:1902 msgid "Grid Toolbar" msgstr "Grid Toolbar" -#: appGUI/MainGUI.py:831 appGUI/MainGUI.py:1865 app_Main.py:6716 -#: app_Main.py:6721 +#: appGUI/MainGUI.py:842 appGUI/MainGUI.py:1910 +#, fuzzy +#| msgid "Edit Toolbar" +msgid "Status Toolbar" +msgstr "Edit Toolbar" + +#: appGUI/MainGUI.py:854 appGUI/MainGUI.py:2011 app_Main.py:7087 +#: app_Main.py:7092 msgid "Open Gerber" msgstr "Open Gerber" -#: appGUI/MainGUI.py:833 appGUI/MainGUI.py:1867 app_Main.py:6756 -#: app_Main.py:6761 +#: appGUI/MainGUI.py:856 appGUI/MainGUI.py:2013 app_Main.py:7127 +#: app_Main.py:7132 msgid "Open Excellon" msgstr "Open Excellon" -#: appGUI/MainGUI.py:836 appGUI/MainGUI.py:1870 +#: appGUI/MainGUI.py:859 appGUI/MainGUI.py:2016 msgid "Open project" msgstr "Open project" -#: appGUI/MainGUI.py:838 appGUI/MainGUI.py:1872 +#: appGUI/MainGUI.py:861 appGUI/MainGUI.py:2018 msgid "Save project" msgstr "Save project" -#: appGUI/MainGUI.py:844 appGUI/MainGUI.py:1878 +#: appGUI/MainGUI.py:867 appGUI/MainGUI.py:2024 msgid "Editor" msgstr "Editor" -#: appGUI/MainGUI.py:846 appGUI/MainGUI.py:1881 +#: appGUI/MainGUI.py:869 appGUI/MainGUI.py:2027 msgid "Save Object and close the Editor" msgstr "Save Object and close the Editor" -#: appGUI/MainGUI.py:853 appGUI/MainGUI.py:1888 +#: appGUI/MainGUI.py:876 appGUI/MainGUI.py:2034 msgid "&Delete" msgstr "&Delete" -#: appGUI/MainGUI.py:856 appGUI/MainGUI.py:1891 appGUI/MainGUI.py:4100 -#: appGUI/MainGUI.py:4308 appTools/ToolDistance.py:35 -#: appTools/ToolDistance.py:197 +#: appGUI/MainGUI.py:879 appGUI/MainGUI.py:2037 appGUI/MainGUI.py:4269 +#: appGUI/MainGUI.py:4477 appTools/ToolDistance.py:100 +#: appTools/ToolDistance.py:544 msgid "Distance Tool" msgstr "Distance Tool" -#: appGUI/MainGUI.py:858 appGUI/MainGUI.py:1893 +#: appGUI/MainGUI.py:881 appGUI/MainGUI.py:2039 msgid "Distance Min Tool" msgstr "Distance Min Tool" -#: appGUI/MainGUI.py:860 appGUI/MainGUI.py:1895 appGUI/MainGUI.py:4093 +#: appGUI/MainGUI.py:883 appGUI/MainGUI.py:2041 appGUI/MainGUI.py:4262 msgid "Set Origin" msgstr "Set Origin" -#: appGUI/MainGUI.py:862 appGUI/MainGUI.py:1897 +#: appGUI/MainGUI.py:885 appGUI/MainGUI.py:2043 msgid "Move to Origin" msgstr "Move to Origin" -#: appGUI/MainGUI.py:865 appGUI/MainGUI.py:1899 +#: appGUI/MainGUI.py:888 appGUI/MainGUI.py:2045 msgid "Jump to Location" msgstr "Jump to Location" -#: appGUI/MainGUI.py:867 appGUI/MainGUI.py:1901 appGUI/MainGUI.py:4105 +#: appGUI/MainGUI.py:890 appGUI/MainGUI.py:2047 appGUI/MainGUI.py:4274 msgid "Locate in Object" msgstr "Locate in Object" -#: appGUI/MainGUI.py:873 appGUI/MainGUI.py:1907 +#: appGUI/MainGUI.py:896 appGUI/MainGUI.py:2053 msgid "&Replot" msgstr "&Replot" -#: appGUI/MainGUI.py:875 appGUI/MainGUI.py:1909 +#: appGUI/MainGUI.py:898 appGUI/MainGUI.py:2055 msgid "&Clear plot" msgstr "&Clear plot" -#: appGUI/MainGUI.py:877 appGUI/MainGUI.py:1911 appGUI/MainGUI.py:4096 +#: appGUI/MainGUI.py:900 appGUI/MainGUI.py:2057 appGUI/MainGUI.py:4265 msgid "Zoom In" msgstr "Zoom In" -#: appGUI/MainGUI.py:879 appGUI/MainGUI.py:1913 appGUI/MainGUI.py:4096 +#: appGUI/MainGUI.py:902 appGUI/MainGUI.py:2059 appGUI/MainGUI.py:4265 msgid "Zoom Out" msgstr "Zoom Out" -#: appGUI/MainGUI.py:881 appGUI/MainGUI.py:1429 appGUI/MainGUI.py:1915 -#: appGUI/MainGUI.py:4095 +#: appGUI/MainGUI.py:904 appGUI/MainGUI.py:1479 appGUI/MainGUI.py:2061 +#: appGUI/MainGUI.py:4264 msgid "Zoom Fit" msgstr "Zoom Fit" -#: appGUI/MainGUI.py:889 appGUI/MainGUI.py:1921 +#: appGUI/MainGUI.py:912 appGUI/MainGUI.py:2067 msgid "&Command Line" msgstr "&Command Line" -#: appGUI/MainGUI.py:901 appGUI/MainGUI.py:1933 +#: appGUI/MainGUI.py:924 appGUI/MainGUI.py:2079 msgid "2Sided Tool" msgstr "2Sided Tool" -#: appGUI/MainGUI.py:903 appGUI/MainGUI.py:1935 appGUI/MainGUI.py:4111 +#: appGUI/MainGUI.py:926 appGUI/MainGUI.py:2081 appGUI/MainGUI.py:4280 msgid "Align Objects Tool" msgstr "Align Objects Tool" -#: appGUI/MainGUI.py:905 appGUI/MainGUI.py:1937 appGUI/MainGUI.py:4111 -#: appTools/ToolExtractDrills.py:393 +#: appGUI/MainGUI.py:928 appGUI/MainGUI.py:2083 appGUI/MainGUI.py:4280 +#: appTools/ToolExtractDrills.py:98 msgid "Extract Drills Tool" msgstr "Extract Drills Tool" -#: appGUI/MainGUI.py:908 appGUI/ObjectUI.py:360 appTools/ToolCutOut.py:440 +#: appGUI/MainGUI.py:931 appGUI/ObjectUI.py:361 appTools/ToolCutOut.py:150 +#: appTools/ToolCutOut.py:1811 msgid "Cutout Tool" msgstr "Cutout Tool" -#: appGUI/MainGUI.py:910 appGUI/MainGUI.py:1942 appGUI/ObjectUI.py:346 -#: appGUI/ObjectUI.py:2087 appTools/ToolNCC.py:974 +#: appGUI/MainGUI.py:933 appGUI/MainGUI.py:2088 appGUI/ObjectUI.py:346 +#: appGUI/ObjectUI.py:1661 appTools/ToolNCC.py:197 msgid "NCC Tool" msgstr "NCC Tool" -#: appGUI/MainGUI.py:914 appGUI/MainGUI.py:1946 appGUI/MainGUI.py:4113 -#: appTools/ToolIsolation.py:38 appTools/ToolIsolation.py:787 +#: appGUI/MainGUI.py:937 appGUI/MainGUI.py:2092 appGUI/MainGUI.py:4282 +#: appTools/ToolIsolation.py:189 appTools/ToolIsolation.py:2900 msgid "Isolation Tool" msgstr "Isolation Tool" -#: appGUI/MainGUI.py:918 appGUI/MainGUI.py:1950 +#: appGUI/MainGUI.py:939 appGUI/MainGUI.py:2094 appGUI/ObjectUI.py:641 +#: appTools/ToolDrilling.py:244 appTools/ToolDrilling.py:1965 +#: appTools/ToolMilling.py:169 +#, fuzzy +#| msgid "Drilling" +msgid "Drilling Tool" +msgstr "Drilling" + +#: appGUI/MainGUI.py:943 appGUI/MainGUI.py:2098 msgid "Panel Tool" msgstr "Panel Tool" -#: appGUI/MainGUI.py:920 appGUI/MainGUI.py:1952 appTools/ToolFilm.py:569 +#: appGUI/MainGUI.py:945 appGUI/MainGUI.py:2100 appTools/ToolFilm.py:106 msgid "Film Tool" msgstr "Film Tool" -#: appGUI/MainGUI.py:922 appGUI/MainGUI.py:1954 appTools/ToolSolderPaste.py:561 +#: appGUI/MainGUI.py:947 appGUI/MainGUI.py:2102 appTools/ToolSolderPaste.py:116 msgid "SolderPaste Tool" msgstr "SolderPaste Tool" -#: appGUI/MainGUI.py:924 appGUI/MainGUI.py:1956 appGUI/MainGUI.py:4118 -#: appTools/ToolSub.py:40 +#: appGUI/MainGUI.py:949 appGUI/MainGUI.py:2104 appGUI/MainGUI.py:4287 +#: appTools/ToolSub.py:611 msgid "Subtract Tool" msgstr "Subtract Tool" -#: appGUI/MainGUI.py:926 appGUI/MainGUI.py:1958 appTools/ToolRulesCheck.py:616 +#: appGUI/MainGUI.py:951 appGUI/MainGUI.py:2106 appTools/ToolRulesCheck.py:115 msgid "Rules Tool" msgstr "Rules Tool" -#: appGUI/MainGUI.py:928 appGUI/MainGUI.py:1960 appGUI/MainGUI.py:4115 -#: appTools/ToolOptimal.py:33 appTools/ToolOptimal.py:313 +#: appGUI/MainGUI.py:953 appGUI/MainGUI.py:2108 appGUI/MainGUI.py:4284 +#: appTools/ToolOptimal.py:103 appTools/ToolOptimal.py:390 msgid "Optimal Tool" msgstr "Optimal Tool" -#: appGUI/MainGUI.py:933 appGUI/MainGUI.py:1965 appGUI/MainGUI.py:4111 +#: appGUI/MainGUI.py:958 appGUI/MainGUI.py:2113 appGUI/MainGUI.py:4280 msgid "Calculators Tool" msgstr "Calculators Tool" -#: appGUI/MainGUI.py:937 appGUI/MainGUI.py:1969 appGUI/MainGUI.py:4116 -#: appTools/ToolQRCode.py:43 appTools/ToolQRCode.py:391 +#: appGUI/MainGUI.py:962 appGUI/MainGUI.py:2117 appGUI/MainGUI.py:4285 +#: appTools/ToolQRCode.py:114 appTools/ToolQRCode.py:625 msgid "QRCode Tool" msgstr "QRCode Tool" -#: appGUI/MainGUI.py:939 appGUI/MainGUI.py:1971 appGUI/MainGUI.py:4113 -#: appTools/ToolCopperThieving.py:39 appTools/ToolCopperThieving.py:572 +#: appGUI/MainGUI.py:964 appGUI/MainGUI.py:2119 appGUI/MainGUI.py:4282 +#: appTools/ToolCopperThieving.py:126 appTools/ToolCopperThieving.py:1131 msgid "Copper Thieving Tool" msgstr "Copper Thieving Tool" -#: appGUI/MainGUI.py:942 appGUI/MainGUI.py:1974 appGUI/MainGUI.py:4112 -#: appTools/ToolFiducials.py:33 appTools/ToolFiducials.py:399 +#: appGUI/MainGUI.py:967 appGUI/MainGUI.py:2122 appGUI/MainGUI.py:4281 +#: appTools/ToolFiducials.py:114 appTools/ToolFiducials.py:648 msgid "Fiducials Tool" msgstr "Fiducials Tool" -#: appGUI/MainGUI.py:944 appGUI/MainGUI.py:1976 appTools/ToolCalibration.py:37 -#: appTools/ToolCalibration.py:759 +#: appGUI/MainGUI.py:969 appGUI/MainGUI.py:2124 appTools/ToolCalibration.py:115 +#: appTools/ToolCalibration.py:735 msgid "Calibration Tool" msgstr "Calibration Tool" -#: appGUI/MainGUI.py:946 appGUI/MainGUI.py:1978 appGUI/MainGUI.py:4113 +#: appGUI/MainGUI.py:971 appGUI/MainGUI.py:2126 appGUI/MainGUI.py:4282 msgid "Punch Gerber Tool" msgstr "Punch Gerber Tool" -#: appGUI/MainGUI.py:948 appGUI/MainGUI.py:1980 appTools/ToolInvertGerber.py:31 +#: appGUI/MainGUI.py:973 appGUI/MainGUI.py:2128 +#: appTools/ToolInvertGerber.py:175 msgid "Invert Gerber Tool" msgstr "Invert Gerber Tool" -#: appGUI/MainGUI.py:950 appGUI/MainGUI.py:1982 appGUI/MainGUI.py:4115 -#: appTools/ToolCorners.py:31 +#: appGUI/MainGUI.py:975 appGUI/MainGUI.py:2130 appGUI/MainGUI.py:4284 +#: appTools/ToolCorners.py:297 msgid "Corner Markers Tool" msgstr "Corner Markers Tool" -#: appGUI/MainGUI.py:952 appGUI/MainGUI.py:1984 -#: appTools/ToolEtchCompensation.py:32 appTools/ToolEtchCompensation.py:288 +#: appGUI/MainGUI.py:977 appGUI/MainGUI.py:2132 +#: appTools/ToolEtchCompensation.py:80 appTools/ToolEtchCompensation.py:251 msgid "Etch Compensation Tool" msgstr "Etch Compensation Tool" -#: appGUI/MainGUI.py:958 appGUI/MainGUI.py:984 appGUI/MainGUI.py:1036 -#: appGUI/MainGUI.py:1990 appGUI/MainGUI.py:2068 +#: appGUI/MainGUI.py:983 appGUI/MainGUI.py:1009 appGUI/MainGUI.py:1061 +#: appGUI/MainGUI.py:2138 appGUI/MainGUI.py:2216 msgid "Select" msgstr "Select" -#: appGUI/MainGUI.py:960 appGUI/MainGUI.py:1992 +#: appGUI/MainGUI.py:985 appGUI/MainGUI.py:2140 msgid "Add Drill Hole" msgstr "Add Drill Hole" -#: appGUI/MainGUI.py:962 appGUI/MainGUI.py:1994 +#: appGUI/MainGUI.py:987 appGUI/MainGUI.py:2142 msgid "Add Drill Hole Array" msgstr "Add Drill Hole Array" -#: appGUI/MainGUI.py:964 appGUI/MainGUI.py:1517 appGUI/MainGUI.py:1998 -#: appGUI/MainGUI.py:4393 +#: appGUI/MainGUI.py:989 appGUI/MainGUI.py:1567 appGUI/MainGUI.py:2146 +#: appGUI/MainGUI.py:4562 msgid "Add Slot" msgstr "Add Slot" -#: appGUI/MainGUI.py:966 appGUI/MainGUI.py:1519 appGUI/MainGUI.py:2000 -#: appGUI/MainGUI.py:4392 +#: appGUI/MainGUI.py:991 appGUI/MainGUI.py:1569 appGUI/MainGUI.py:2148 +#: appGUI/MainGUI.py:4561 msgid "Add Slot Array" msgstr "Add Slot Array" -#: appGUI/MainGUI.py:968 appGUI/MainGUI.py:1522 appGUI/MainGUI.py:1996 +#: appGUI/MainGUI.py:993 appGUI/MainGUI.py:1572 appGUI/MainGUI.py:2144 msgid "Resize Drill" msgstr "Resize Drill" -#: appGUI/MainGUI.py:972 appGUI/MainGUI.py:2004 +#: appGUI/MainGUI.py:997 appGUI/MainGUI.py:2152 msgid "Copy Drill" msgstr "Copy Drill" -#: appGUI/MainGUI.py:974 appGUI/MainGUI.py:2006 +#: appGUI/MainGUI.py:999 appGUI/MainGUI.py:2154 msgid "Delete Drill" msgstr "Delete Drill" -#: appGUI/MainGUI.py:978 appGUI/MainGUI.py:2010 +#: appGUI/MainGUI.py:1003 appGUI/MainGUI.py:2158 msgid "Move Drill" msgstr "Move Drill" -#: appGUI/MainGUI.py:986 appGUI/MainGUI.py:2018 +#: appGUI/MainGUI.py:1011 appGUI/MainGUI.py:2166 msgid "Add Circle" msgstr "Add Circle" -#: appGUI/MainGUI.py:988 appGUI/MainGUI.py:2020 +#: appGUI/MainGUI.py:1013 appGUI/MainGUI.py:2168 msgid "Add Arc" msgstr "Add Arc" -#: appGUI/MainGUI.py:990 appGUI/MainGUI.py:2022 +#: appGUI/MainGUI.py:1015 appGUI/MainGUI.py:2170 msgid "Add Rectangle" msgstr "Add Rectangle" -#: appGUI/MainGUI.py:994 appGUI/MainGUI.py:2026 +#: appGUI/MainGUI.py:1019 appGUI/MainGUI.py:2174 msgid "Add Path" msgstr "Add Path" -#: appGUI/MainGUI.py:996 appGUI/MainGUI.py:2028 +#: appGUI/MainGUI.py:1021 appGUI/MainGUI.py:2176 msgid "Add Polygon" msgstr "Add Polygon" -#: appGUI/MainGUI.py:999 appGUI/MainGUI.py:2031 +#: appGUI/MainGUI.py:1024 appGUI/MainGUI.py:2179 msgid "Add Text" msgstr "Add Text" -#: appGUI/MainGUI.py:1001 appGUI/MainGUI.py:2033 +#: appGUI/MainGUI.py:1026 appGUI/MainGUI.py:2181 msgid "Add Buffer" msgstr "Add Buffer" -#: appGUI/MainGUI.py:1003 appGUI/MainGUI.py:2035 +#: appGUI/MainGUI.py:1028 appGUI/MainGUI.py:2183 msgid "Paint Shape" msgstr "Paint Shape" -#: appGUI/MainGUI.py:1005 appGUI/MainGUI.py:1062 appGUI/MainGUI.py:1458 -#: appGUI/MainGUI.py:1503 appGUI/MainGUI.py:2037 appGUI/MainGUI.py:2093 +#: appGUI/MainGUI.py:1030 appGUI/MainGUI.py:1087 appGUI/MainGUI.py:1508 +#: appGUI/MainGUI.py:1553 appGUI/MainGUI.py:2185 appGUI/MainGUI.py:2241 msgid "Eraser" msgstr "Eraser" -#: appGUI/MainGUI.py:1009 appGUI/MainGUI.py:2041 +#: appGUI/MainGUI.py:1034 appGUI/MainGUI.py:2189 msgid "Polygon Union" msgstr "Polygon Union" -#: appGUI/MainGUI.py:1011 appGUI/MainGUI.py:2043 +#: appGUI/MainGUI.py:1036 appGUI/MainGUI.py:2191 msgid "Polygon Explode" msgstr "Polygon Explode" -#: appGUI/MainGUI.py:1014 appGUI/MainGUI.py:2046 +#: appGUI/MainGUI.py:1039 appGUI/MainGUI.py:2194 msgid "Polygon Intersection" msgstr "Polygon Intersection" -#: appGUI/MainGUI.py:1016 appGUI/MainGUI.py:2048 +#: appGUI/MainGUI.py:1041 appGUI/MainGUI.py:2196 msgid "Polygon Subtraction" msgstr "Polygon Subtraction" -#: appGUI/MainGUI.py:1020 appGUI/MainGUI.py:2052 +#: appGUI/MainGUI.py:1045 appGUI/MainGUI.py:2200 msgid "Cut Path" msgstr "Cut Path" -#: appGUI/MainGUI.py:1022 +#: appGUI/MainGUI.py:1047 msgid "Copy Shape(s)" msgstr "Copy Shape(s)" -#: appGUI/MainGUI.py:1025 +#: appGUI/MainGUI.py:1050 msgid "Delete Shape '-'" msgstr "Delete Shape '-'" -#: appGUI/MainGUI.py:1027 appGUI/MainGUI.py:1070 appGUI/MainGUI.py:1470 -#: appGUI/MainGUI.py:1507 appGUI/MainGUI.py:2058 appGUI/MainGUI.py:2101 +#: appGUI/MainGUI.py:1052 appGUI/MainGUI.py:1095 appGUI/MainGUI.py:1520 +#: appGUI/MainGUI.py:1557 appGUI/MainGUI.py:2206 appGUI/MainGUI.py:2249 #: appGUI/ObjectUI.py:109 appGUI/ObjectUI.py:152 msgid "Transformations" msgstr "Transformations" -#: appGUI/MainGUI.py:1030 +#: appGUI/MainGUI.py:1055 msgid "Move Objects " msgstr "Move Objects " -#: appGUI/MainGUI.py:1038 appGUI/MainGUI.py:2070 appGUI/MainGUI.py:4512 +#: appGUI/MainGUI.py:1063 appGUI/MainGUI.py:2218 appGUI/MainGUI.py:4681 msgid "Add Pad" msgstr "Add Pad" -#: appGUI/MainGUI.py:1042 appGUI/MainGUI.py:2074 appGUI/MainGUI.py:4513 +#: appGUI/MainGUI.py:1067 appGUI/MainGUI.py:2222 appGUI/MainGUI.py:4682 msgid "Add Track" msgstr "Add Track" -#: appGUI/MainGUI.py:1044 appGUI/MainGUI.py:2076 appGUI/MainGUI.py:4512 +#: appGUI/MainGUI.py:1069 appGUI/MainGUI.py:2224 appGUI/MainGUI.py:4681 msgid "Add Region" msgstr "Add Region" -#: appGUI/MainGUI.py:1046 appGUI/MainGUI.py:1489 appGUI/MainGUI.py:2078 +#: appGUI/MainGUI.py:1071 appGUI/MainGUI.py:1539 appGUI/MainGUI.py:2226 msgid "Poligonize" msgstr "Poligonize" -#: appGUI/MainGUI.py:1049 appGUI/MainGUI.py:1491 appGUI/MainGUI.py:2081 +#: appGUI/MainGUI.py:1074 appGUI/MainGUI.py:1541 appGUI/MainGUI.py:2229 msgid "SemiDisc" msgstr "SemiDisc" -#: appGUI/MainGUI.py:1051 appGUI/MainGUI.py:1493 appGUI/MainGUI.py:2083 +#: appGUI/MainGUI.py:1076 appGUI/MainGUI.py:1543 appGUI/MainGUI.py:2231 msgid "Disc" msgstr "Disc" -#: appGUI/MainGUI.py:1059 appGUI/MainGUI.py:1501 appGUI/MainGUI.py:2091 +#: appGUI/MainGUI.py:1084 appGUI/MainGUI.py:1551 appGUI/MainGUI.py:2239 msgid "Mark Area" msgstr "Mark Area" -#: appGUI/MainGUI.py:1073 appGUI/MainGUI.py:1474 appGUI/MainGUI.py:1536 -#: appGUI/MainGUI.py:2104 appGUI/MainGUI.py:4512 appTools/ToolMove.py:27 +#: appGUI/MainGUI.py:1098 appGUI/MainGUI.py:1524 appGUI/MainGUI.py:1586 +#: appGUI/MainGUI.py:2252 appGUI/MainGUI.py:4681 appTools/ToolMove.py:27 msgid "Move" msgstr "Move" -#: appGUI/MainGUI.py:1081 +#: appGUI/MainGUI.py:1106 msgid "Snap to grid" msgstr "Snap to grid" -#: appGUI/MainGUI.py:1084 +#: appGUI/MainGUI.py:1109 msgid "Grid X snapping distance" msgstr "Grid X snapping distance" -#: appGUI/MainGUI.py:1089 +#: appGUI/MainGUI.py:1114 msgid "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." @@ -4726,31 +5463,39 @@ msgstr "" "When active, value on Grid_X\n" "is copied to the Grid_Y value." -#: appGUI/MainGUI.py:1096 +#: appGUI/MainGUI.py:1121 msgid "Grid Y snapping distance" msgstr "Grid Y snapping distance" -#: appGUI/MainGUI.py:1101 +#: appGUI/MainGUI.py:1128 +msgid "Snap to corner" +msgstr "Snap to corner" + +#: appGUI/MainGUI.py:1132 appGUI/preferences/general/GeneralAPPSetGroupUI.py:78 +msgid "Max. magnet distance" +msgstr "Max. magnet distance" + +#: appGUI/MainGUI.py:1142 msgid "Toggle the display of axis on canvas" msgstr "Toggle the display of axis on canvas" -#: appGUI/MainGUI.py:1107 appGUI/preferences/PreferencesUIManager.py:855 -#: appGUI/preferences/PreferencesUIManager.py:947 -#: appGUI/preferences/PreferencesUIManager.py:975 -#: appGUI/preferences/PreferencesUIManager.py:1080 app_Main.py:5263 -#: app_Main.py:5268 app_Main.py:5283 +#: appGUI/MainGUI.py:1148 appGUI/preferences/PreferencesUIManager.py:889 +#: appGUI/preferences/PreferencesUIManager.py:982 +#: appGUI/preferences/PreferencesUIManager.py:1010 +#: appGUI/preferences/PreferencesUIManager.py:1115 app_Main.py:5579 +#: app_Main.py:5584 app_Main.py:5599 msgid "Preferences" msgstr "Preferences" -#: appGUI/MainGUI.py:1113 +#: appGUI/MainGUI.py:1154 msgid "Command Line" msgstr "Command Line" -#: appGUI/MainGUI.py:1119 +#: appGUI/MainGUI.py:1160 msgid "HUD (Heads up display)" msgstr "HUD (Heads up display)" -#: appGUI/MainGUI.py:1125 appGUI/preferences/general/GeneralAPPSetGroupUI.py:97 +#: appGUI/MainGUI.py:1166 appGUI/preferences/general/GeneralAPPSetGroupUI.py:97 msgid "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." @@ -4758,72 +5503,76 @@ msgstr "" "Draw a delimiting rectangle on canvas.\n" "The purpose is to illustrate the limits for our work." -#: appGUI/MainGUI.py:1135 -msgid "Snap to corner" -msgstr "Snap to corner" +#: appGUI/MainGUI.py:1179 +msgid "" +"Relative measurement.\n" +"Reference is last click position" +msgstr "" +"Relative measurement.\n" +"Reference is last click position" -#: appGUI/MainGUI.py:1139 appGUI/preferences/general/GeneralAPPSetGroupUI.py:78 -msgid "Max. magnet distance" -msgstr "Max. magnet distance" +#: appGUI/MainGUI.py:1187 +msgid "" +"Absolute measurement.\n" +"Reference is (X=0, Y= 0) position" +msgstr "" +"Absolute measurement.\n" +"Reference is (X=0, Y= 0) position" -#: appGUI/MainGUI.py:1175 appGUI/MainGUI.py:1420 app_Main.py:7763 +#: appGUI/MainGUI.py:1221 appGUI/MainGUI.py:1470 app_Main.py:8126 msgid "Project" msgstr "Project" -#: appGUI/MainGUI.py:1190 +#: appGUI/MainGUI.py:1236 msgid "Selected" msgstr "Selected" -#: appGUI/MainGUI.py:1218 appGUI/MainGUI.py:1226 +#: appGUI/MainGUI.py:1264 appGUI/MainGUI.py:1272 msgid "Plot Area" msgstr "Plot Area" -#: appGUI/MainGUI.py:1253 -msgid "General" -msgstr "General" - -#: appGUI/MainGUI.py:1268 appTools/ToolCopperThieving.py:74 -#: appTools/ToolCorners.py:55 appTools/ToolDblSided.py:64 -#: appTools/ToolEtchCompensation.py:73 appTools/ToolExtractDrills.py:61 -#: appTools/ToolFiducials.py:262 appTools/ToolInvertGerber.py:72 -#: appTools/ToolIsolation.py:94 appTools/ToolOptimal.py:71 -#: appTools/ToolPunchGerber.py:64 appTools/ToolQRCode.py:78 -#: appTools/ToolRulesCheck.py:61 appTools/ToolSolderPaste.py:67 -#: appTools/ToolSub.py:70 +#: appGUI/MainGUI.py:1314 appTools/ToolCopperThieving.py:1163 +#: appTools/ToolCorners.py:317 appTools/ToolEtchCompensation.py:291 +#: appTools/ToolExtractDrills.py:453 appTools/ToolFiducials.py:873 +#: appTools/ToolInvertGerber.py:215 appTools/ToolIsolation.py:2948 +#: appTools/ToolOptimal.py:421 appTools/ToolPunchGerber.py:718 +#: appTools/ToolQRCode.py:656 appTools/ToolRulesCheck.py:1163 +#: appTools/ToolSolderPaste.py:1143 appTools/ToolSub.py:641 msgid "GERBER" msgstr "GERBER" -#: appGUI/MainGUI.py:1278 appTools/ToolDblSided.py:92 -#: appTools/ToolRulesCheck.py:199 +#: appGUI/MainGUI.py:1324 appTools/ToolDrilling.py:2018 +#: appTools/ToolMilling.py:1637 appTools/ToolRulesCheck.py:1301 msgid "EXCELLON" msgstr "EXCELLON" -#: appGUI/MainGUI.py:1288 appTools/ToolDblSided.py:120 appTools/ToolSub.py:125 +#: appGUI/MainGUI.py:1334 appTools/ToolSub.py:696 msgid "GEOMETRY" msgstr "GEOMETRY" -#: appGUI/MainGUI.py:1298 +#: appGUI/MainGUI.py:1344 msgid "CNC-JOB" msgstr "CNC-JOB" -#: appGUI/MainGUI.py:1307 appGUI/ObjectUI.py:328 appGUI/ObjectUI.py:2062 +#: appGUI/MainGUI.py:1353 appGUI/ObjectUI.py:327 appGUI/ObjectUI.py:637 +#: appGUI/ObjectUI.py:1635 msgid "TOOLS" msgstr "TOOLS" -#: appGUI/MainGUI.py:1316 +#: appGUI/MainGUI.py:1362 msgid "TOOLS 2" msgstr "TOOLS 2" -#: appGUI/MainGUI.py:1326 +#: appGUI/MainGUI.py:1372 msgid "UTILITIES" msgstr "UTILITIES" -#: appGUI/MainGUI.py:1343 +#: appGUI/MainGUI.py:1388 #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:201 msgid "Restore Defaults" msgstr "Restore Defaults" -#: appGUI/MainGUI.py:1346 +#: appGUI/MainGUI.py:1392 msgid "" "Restore the entire set of default values\n" "to the initial values loaded after first launch." @@ -4831,19 +5580,19 @@ msgstr "" "Restore the entire set of default values\n" "to the initial values loaded after first launch." -#: appGUI/MainGUI.py:1351 +#: appGUI/MainGUI.py:1397 msgid "Open Pref Folder" msgstr "Open Pref Folder" -#: appGUI/MainGUI.py:1354 +#: appGUI/MainGUI.py:1401 msgid "Open the folder where FlatCAM save the preferences files." msgstr "Open the folder where FlatCAM save the preferences files." -#: appGUI/MainGUI.py:1358 appGUI/MainGUI.py:1836 +#: appGUI/MainGUI.py:1405 appGUI/MainGUI.py:1982 msgid "Clear GUI Settings" msgstr "Clear GUI Settings" -#: appGUI/MainGUI.py:1362 +#: appGUI/MainGUI.py:1410 msgid "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." @@ -4851,15 +5600,15 @@ msgstr "" "Clear the GUI settings for FlatCAM,\n" "such as: layout, gui state, style, hdpi support etc." -#: appGUI/MainGUI.py:1373 +#: appGUI/MainGUI.py:1422 msgid "Apply" msgstr "Apply" -#: appGUI/MainGUI.py:1376 +#: appGUI/MainGUI.py:1425 msgid "Apply the current preferences without saving to a file." msgstr "Apply the current preferences without saving to a file." -#: appGUI/MainGUI.py:1383 +#: appGUI/MainGUI.py:1433 msgid "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." @@ -4867,191 +5616,190 @@ msgstr "" "Save the current settings in the 'current_defaults' file\n" "which is the file storing the working default preferences." -#: appGUI/MainGUI.py:1391 +#: appGUI/MainGUI.py:1441 msgid "Will not save the changes and will close the preferences window." msgstr "Will not save the changes and will close the preferences window." -#: appGUI/MainGUI.py:1405 +#: appGUI/MainGUI.py:1455 msgid "Toggle Visibility" msgstr "Toggle Visibility" -#: appGUI/MainGUI.py:1411 +#: appGUI/MainGUI.py:1461 appGUI/ObjectUI.py:2143 msgid "New" msgstr "New" -#: appGUI/MainGUI.py:1413 +#: appGUI/MainGUI.py:1463 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:78 -#: appTools/ToolCalibration.py:631 appTools/ToolCalibration.py:648 -#: appTools/ToolCalibration.py:815 appTools/ToolCopperThieving.py:148 -#: appTools/ToolCopperThieving.py:162 appTools/ToolCopperThieving.py:608 -#: appTools/ToolCutOut.py:92 appTools/ToolDblSided.py:226 -#: appTools/ToolFilm.py:69 appTools/ToolFilm.py:92 appTools/ToolImage.py:49 -#: appTools/ToolImage.py:271 appTools/ToolIsolation.py:474 -#: appTools/ToolIsolation.py:527 appTools/ToolIsolation.py:1306 -#: appTools/ToolNCC.py:95 appTools/ToolNCC.py:558 appTools/ToolNCC.py:1318 -#: appTools/ToolPaint.py:501 appTools/ToolPaint.py:705 -#: appTools/ToolPanelize.py:116 appTools/ToolPanelize.py:385 -#: appTools/ToolPanelize.py:403 appTools/ToolTransform.py:100 -#: appTools/ToolTransform.py:535 +#: appTools/ToolCalibration.py:171 appTools/ToolCalibration.py:1326 +#: appTools/ToolCalibration.py:1343 appTools/ToolCopperThieving.py:163 +#: appTools/ToolCopperThieving.py:1237 appTools/ToolCopperThieving.py:1251 +#: appTools/ToolCutOut.py:1769 appTools/ToolDblSided.py:529 +#: appTools/ToolDblSided.py:774 appTools/ToolFilm.py:782 +#: appTools/ToolFilm.py:805 appTools/ToolImage.py:136 appTools/ToolImage.py:191 +#: appTools/ToolIsolation.py:796 appTools/ToolIsolation.py:3283 +#: appTools/ToolIsolation.py:3336 appTools/ToolNCC.py:792 +#: appTools/ToolNCC.py:3740 appTools/ToolNCC.py:4209 appTools/ToolPaint.py:167 +#: appTools/ToolPaint.py:3141 appTools/ToolPanelize.py:147 +#: appTools/ToolPanelize.py:167 appTools/ToolPanelize.py:715 +#: appTools/ToolTransform.py:126 appTools/ToolTransform.py:587 msgid "Geometry" msgstr "Geometry" -#: appGUI/MainGUI.py:1417 +#: appGUI/MainGUI.py:1467 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:99 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:77 -#: appTools/ToolAlignObjects.py:74 appTools/ToolAlignObjects.py:110 -#: appTools/ToolCalibration.py:197 appTools/ToolCalibration.py:631 -#: appTools/ToolCalibration.py:648 appTools/ToolCalibration.py:807 -#: appTools/ToolCalibration.py:815 appTools/ToolCopperThieving.py:148 -#: appTools/ToolCopperThieving.py:162 appTools/ToolCopperThieving.py:608 -#: appTools/ToolDblSided.py:225 appTools/ToolFilm.py:342 -#: appTools/ToolIsolation.py:527 appTools/ToolIsolation.py:1306 -#: appTools/ToolNCC.py:558 appTools/ToolNCC.py:1318 appTools/ToolPaint.py:501 -#: appTools/ToolPaint.py:705 appTools/ToolPanelize.py:385 -#: appTools/ToolPunchGerber.py:149 appTools/ToolPunchGerber.py:164 -#: appTools/ToolTransform.py:99 appTools/ToolTransform.py:535 +#: appTools/ToolAlignObjects.py:399 appTools/ToolAlignObjects.py:435 +#: appTools/ToolCalibration.py:163 appTools/ToolCalibration.py:171 +#: appTools/ToolCalibration.py:892 appTools/ToolCalibration.py:1326 +#: appTools/ToolCalibration.py:1343 appTools/ToolCopperThieving.py:163 +#: appTools/ToolCopperThieving.py:1237 appTools/ToolCopperThieving.py:1251 +#: appTools/ToolDblSided.py:530 appTools/ToolDblSided.py:731 +#: appTools/ToolDblSided.py:773 appTools/ToolFilm.py:1060 +#: appTools/ToolIsolation.py:796 appTools/ToolIsolation.py:3336 +#: appTools/ToolNCC.py:792 appTools/ToolNCC.py:4209 appTools/ToolPaint.py:167 +#: appTools/ToolPaint.py:3141 appTools/ToolPanelize.py:147 +#: appTools/ToolPunchGerber.py:803 appTools/ToolPunchGerber.py:818 +#: appTools/ToolTransform.py:126 appTools/ToolTransform.py:586 msgid "Excellon" msgstr "Excellon" -#: appGUI/MainGUI.py:1424 +#: appGUI/MainGUI.py:1474 msgid "Grids" msgstr "Grids" -#: appGUI/MainGUI.py:1431 +#: appGUI/MainGUI.py:1481 msgid "Clear Plot" msgstr "Clear Plot" -#: appGUI/MainGUI.py:1433 +#: appGUI/MainGUI.py:1483 msgid "Replot" msgstr "Replot" -#: appGUI/MainGUI.py:1437 +#: appGUI/MainGUI.py:1487 msgid "Geo Editor" msgstr "Geo Editor" -#: appGUI/MainGUI.py:1439 +#: appGUI/MainGUI.py:1489 msgid "Path" msgstr "Path" -#: appGUI/MainGUI.py:1441 +#: appGUI/MainGUI.py:1491 msgid "Rectangle" msgstr "Rectangle" -#: appGUI/MainGUI.py:1444 +#: appGUI/MainGUI.py:1494 msgid "Circle" msgstr "Circle" -#: appGUI/MainGUI.py:1448 +#: appGUI/MainGUI.py:1498 msgid "Arc" msgstr "Arc" -#: appGUI/MainGUI.py:1462 +#: appGUI/MainGUI.py:1512 msgid "Union" msgstr "Union" -#: appGUI/MainGUI.py:1464 +#: appGUI/MainGUI.py:1514 msgid "Intersection" msgstr "Intersection" -#: appGUI/MainGUI.py:1466 +#: appGUI/MainGUI.py:1516 msgid "Subtraction" msgstr "Subtraction" -#: appGUI/MainGUI.py:1468 appGUI/ObjectUI.py:2151 -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:56 +#: appGUI/MainGUI.py:1518 appGUI/ObjectUI.py:1728 +#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:63 msgid "Cut" msgstr "Cut" -#: appGUI/MainGUI.py:1479 +#: appGUI/MainGUI.py:1529 msgid "Pad" msgstr "Pad" -#: appGUI/MainGUI.py:1481 +#: appGUI/MainGUI.py:1531 msgid "Pad Array" msgstr "Pad Array" -#: appGUI/MainGUI.py:1485 +#: appGUI/MainGUI.py:1535 msgid "Track" msgstr "Track" -#: appGUI/MainGUI.py:1487 +#: appGUI/MainGUI.py:1537 msgid "Region" msgstr "Region" -#: appGUI/MainGUI.py:1510 +#: appGUI/MainGUI.py:1560 msgid "Exc Editor" msgstr "Exc Editor" -#: appGUI/MainGUI.py:1512 appGUI/MainGUI.py:4391 +#: appGUI/MainGUI.py:1562 appGUI/MainGUI.py:4560 msgid "Add Drill" msgstr "Add Drill" -#: appGUI/MainGUI.py:1531 app_Main.py:2222 +#: appGUI/MainGUI.py:1581 app_Main.py:2285 msgid "Close Editor" msgstr "Close Editor" -#: appGUI/MainGUI.py:1555 -msgid "" -"Absolute measurement.\n" -"Reference is (X=0, Y= 0) position" -msgstr "" -"Absolute measurement.\n" -"Reference is (X=0, Y= 0) position" - -#: appGUI/MainGUI.py:1563 +#: appGUI/MainGUI.py:1612 msgid "Application units" msgstr "Application units" -#: appGUI/MainGUI.py:1654 +#: appGUI/MainGUI.py:1707 msgid "Lock Toolbars" msgstr "Lock Toolbars" -#: appGUI/MainGUI.py:1824 +#: appGUI/MainGUI.py:1863 +msgid "Detachable Tabs" +msgstr "Detachable Tabs" + +#: appGUI/MainGUI.py:1963 msgid "FlatCAM Preferences Folder opened." msgstr "FlatCAM Preferences Folder opened." -#: appGUI/MainGUI.py:1835 +#: appGUI/MainGUI.py:1981 msgid "Are you sure you want to delete the GUI Settings? \n" msgstr "Are you sure you want to delete the GUI Settings? \n" -#: appGUI/MainGUI.py:1840 appGUI/preferences/PreferencesUIManager.py:886 -#: appGUI/preferences/PreferencesUIManager.py:1131 appTranslation.py:111 -#: appTranslation.py:212 app_Main.py:2226 app_Main.py:3233 app_Main.py:5478 -#: app_Main.py:6539 +#: appGUI/MainGUI.py:1986 appGUI/preferences/PreferencesUIManager.py:921 +#: appGUI/preferences/PreferencesUIManager.py:1167 appTranslation.py:112 +#: appTranslation.py:214 app_Main.py:2289 app_Main.py:3384 app_Main.py:5809 +#: app_Main.py:6876 msgid "Yes" msgstr "Yes" -#: appGUI/MainGUI.py:1841 appGUI/preferences/PreferencesUIManager.py:1132 +#: appGUI/MainGUI.py:1987 appGUI/preferences/PreferencesUIManager.py:1168 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:49 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:62 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:164 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:150 -#: appTools/ToolIsolation.py:174 appTools/ToolNCC.py:182 -#: appTools/ToolPaint.py:165 appTranslation.py:112 appTranslation.py:213 -#: app_Main.py:2227 app_Main.py:3234 app_Main.py:5479 app_Main.py:6540 +#: appTools/ToolDrilling.py:2076 appTools/ToolIsolation.py:3028 +#: appTools/ToolMilling.py:1695 appTools/ToolNCC.py:3827 +#: appTools/ToolPaint.py:2850 appTranslation.py:113 appTranslation.py:215 +#: app_Main.py:2290 app_Main.py:3385 app_Main.py:5810 app_Main.py:6877 msgid "No" msgstr "No" -#: appGUI/MainGUI.py:1940 +#: appGUI/MainGUI.py:2086 msgid "&Cutout Tool" msgstr "&Cutout Tool" -#: appGUI/MainGUI.py:2016 +#: appGUI/MainGUI.py:2164 msgid "Select 'Esc'" msgstr "Select 'Esc'" -#: appGUI/MainGUI.py:2054 +#: appGUI/MainGUI.py:2202 msgid "Copy Objects" msgstr "Copy Objects" -#: appGUI/MainGUI.py:2056 appGUI/MainGUI.py:4311 +#: appGUI/MainGUI.py:2204 appGUI/MainGUI.py:4480 msgid "Delete Shape" msgstr "Delete Shape" -#: appGUI/MainGUI.py:2062 +#: appGUI/MainGUI.py:2210 msgid "Move Objects" msgstr "Move Objects" -#: appGUI/MainGUI.py:2648 +#: appGUI/MainGUI.py:2796 msgid "" "Please first select a geometry item to be cutted\n" "then select the geometry item that will be cutted\n" @@ -5063,12 +5811,12 @@ msgstr "" "out of the first item. In the end press ~X~ key or\n" "the toolbar button." -#: appGUI/MainGUI.py:2655 appGUI/MainGUI.py:2819 appGUI/MainGUI.py:2866 -#: appGUI/MainGUI.py:2888 +#: appGUI/MainGUI.py:2803 appGUI/MainGUI.py:2967 appGUI/MainGUI.py:3014 +#: appGUI/MainGUI.py:3036 msgid "Warning" msgstr "Warning" -#: appGUI/MainGUI.py:2814 +#: appGUI/MainGUI.py:2962 msgid "" "Please select geometry items \n" "on which to perform Intersection Tool." @@ -5076,7 +5824,7 @@ msgstr "" "Please select geometry items \n" "on which to perform Intersection Tool." -#: appGUI/MainGUI.py:2861 +#: appGUI/MainGUI.py:3009 msgid "" "Please select geometry items \n" "on which to perform Substraction Tool." @@ -5084,7 +5832,7 @@ msgstr "" "Please select geometry items \n" "on which to perform Substraction Tool." -#: appGUI/MainGUI.py:2883 +#: appGUI/MainGUI.py:3031 msgid "" "Please select geometry items \n" "on which to perform union." @@ -5092,276 +5840,276 @@ msgstr "" "Please select geometry items \n" "on which to perform union." -#: appGUI/MainGUI.py:2968 appGUI/MainGUI.py:3183 +#: appGUI/MainGUI.py:3116 appGUI/MainGUI.py:3331 msgid "Cancelled. Nothing selected to delete." msgstr "Cancelled. Nothing selected to delete." -#: appGUI/MainGUI.py:3052 appGUI/MainGUI.py:3299 +#: appGUI/MainGUI.py:3200 appGUI/MainGUI.py:3447 msgid "Cancelled. Nothing selected to copy." msgstr "Cancelled. Nothing selected to copy." -#: appGUI/MainGUI.py:3098 appGUI/MainGUI.py:3328 +#: appGUI/MainGUI.py:3246 appGUI/MainGUI.py:3476 msgid "Cancelled. Nothing selected to move." msgstr "Cancelled. Nothing selected to move." -#: appGUI/MainGUI.py:3354 +#: appGUI/MainGUI.py:3502 msgid "New Tool ..." msgstr "New Tool ..." -#: appGUI/MainGUI.py:3355 appTools/ToolIsolation.py:1283 -#: appTools/ToolNCC.py:924 appTools/ToolPaint.py:849 -#: appTools/ToolSolderPaste.py:568 +#: appGUI/MainGUI.py:3503 appTools/ToolIsolation.py:777 appTools/ToolNCC.py:450 +#: appTools/ToolPaint.py:387 appTools/ToolSolderPaste.py:123 msgid "Enter a Tool Diameter" msgstr "Enter a Tool Diameter" -#: appGUI/MainGUI.py:3367 +#: appGUI/MainGUI.py:3515 msgid "Adding Tool cancelled ..." msgstr "Adding Tool cancelled ..." -#: appGUI/MainGUI.py:3381 +#: appGUI/MainGUI.py:3545 msgid "Distance Tool exit..." msgstr "Distance Tool exit..." -#: appGUI/MainGUI.py:3561 app_Main.py:3221 +#: appGUI/MainGUI.py:3725 app_Main.py:3372 msgid "Application is saving the project. Please wait ..." msgstr "Application is saving the project. Please wait ..." -#: appGUI/MainGUI.py:3668 -msgid "Shell disabled." -msgstr "Shell disabled." - -#: appGUI/MainGUI.py:3678 +#: appGUI/MainGUI.py:3858 msgid "Shell enabled." msgstr "Shell enabled." -#: appGUI/MainGUI.py:3706 app_Main.py:9279 +#: appGUI/MainGUI.py:3861 +msgid "Shell disabled." +msgstr "Shell disabled." + +#: appGUI/MainGUI.py:3875 app_Main.py:9676 msgid "Shortcut Key List" msgstr "Shortcut Key List" -#: appGUI/MainGUI.py:4089 +#: appGUI/MainGUI.py:4258 msgid "General Shortcut list" msgstr "General Shortcut list" -#: appGUI/MainGUI.py:4090 +#: appGUI/MainGUI.py:4259 msgid "SHOW SHORTCUT LIST" msgstr "SHOW SHORTCUT LIST" -#: appGUI/MainGUI.py:4090 +#: appGUI/MainGUI.py:4259 msgid "Switch to Project Tab" msgstr "Switch to Project Tab" -#: appGUI/MainGUI.py:4090 +#: appGUI/MainGUI.py:4259 msgid "Switch to Selected Tab" msgstr "Switch to Selected Tab" -#: appGUI/MainGUI.py:4091 +#: appGUI/MainGUI.py:4260 msgid "Switch to Tool Tab" msgstr "Switch to Tool Tab" -#: appGUI/MainGUI.py:4092 +#: appGUI/MainGUI.py:4261 msgid "New Gerber" msgstr "New Gerber" -#: appGUI/MainGUI.py:4092 +#: appGUI/MainGUI.py:4261 msgid "Edit Object (if selected)" msgstr "Edit Object (if selected)" -#: appGUI/MainGUI.py:4092 app_Main.py:5782 +#: appGUI/MainGUI.py:4261 app_Main.py:6109 msgid "Grid On/Off" msgstr "Grid On/Off" -#: appGUI/MainGUI.py:4092 +#: appGUI/MainGUI.py:4261 msgid "Jump to Coordinates" msgstr "Jump to Coordinates" -#: appGUI/MainGUI.py:4093 +#: appGUI/MainGUI.py:4262 msgid "New Excellon" msgstr "New Excellon" -#: appGUI/MainGUI.py:4093 +#: appGUI/MainGUI.py:4262 msgid "Move Obj" msgstr "Move Obj" -#: appGUI/MainGUI.py:4093 +#: appGUI/MainGUI.py:4262 msgid "New Geometry" msgstr "New Geometry" -#: appGUI/MainGUI.py:4093 +#: appGUI/MainGUI.py:4262 msgid "Change Units" msgstr "Change Units" -#: appGUI/MainGUI.py:4094 +#: appGUI/MainGUI.py:4263 msgid "Open Properties Tool" msgstr "Open Properties Tool" -#: appGUI/MainGUI.py:4094 +#: appGUI/MainGUI.py:4263 msgid "Rotate by 90 degree CW" msgstr "Rotate by 90 degree CW" -#: appGUI/MainGUI.py:4094 +#: appGUI/MainGUI.py:4263 msgid "Shell Toggle" msgstr "Shell Toggle" -#: appGUI/MainGUI.py:4095 +#: appGUI/MainGUI.py:4264 msgid "" "Add a Tool (when in Geometry Selected Tab or in Tools NCC or Tools Paint)" msgstr "" "Add a Tool (when in Geometry Selected Tab or in Tools NCC or Tools Paint)" -#: appGUI/MainGUI.py:4096 +#: appGUI/MainGUI.py:4265 msgid "Flip on X_axis" msgstr "Flip on X_axis" -#: appGUI/MainGUI.py:4096 +#: appGUI/MainGUI.py:4265 msgid "Flip on Y_axis" msgstr "Flip on Y_axis" -#: appGUI/MainGUI.py:4099 +#: appGUI/MainGUI.py:4268 msgid "Copy Obj" msgstr "Copy Obj" -#: appGUI/MainGUI.py:4099 +#: appGUI/MainGUI.py:4268 msgid "Open Tools Database" msgstr "Open Tools Database" -#: appGUI/MainGUI.py:4100 +#: appGUI/MainGUI.py:4269 msgid "Open Excellon File" msgstr "Open Excellon File" -#: appGUI/MainGUI.py:4100 +#: appGUI/MainGUI.py:4269 msgid "Open Gerber File" msgstr "Open Gerber File" -#: appGUI/MainGUI.py:4100 +#: appGUI/MainGUI.py:4269 msgid "New Project" msgstr "New Project" -#: appGUI/MainGUI.py:4101 app_Main.py:6835 app_Main.py:6838 +#: appGUI/MainGUI.py:4270 app_Main.py:7206 app_Main.py:7209 msgid "Open Project" msgstr "Open Project" -#: appGUI/MainGUI.py:4101 appTools/ToolPDF.py:41 +#: appGUI/MainGUI.py:4270 appTools/ToolPDF.py:41 msgid "PDF Import Tool" msgstr "PDF Import Tool" -#: appGUI/MainGUI.py:4101 +#: appGUI/MainGUI.py:4270 msgid "Save Project" msgstr "Save Project" -#: appGUI/MainGUI.py:4101 +#: appGUI/MainGUI.py:4270 msgid "Toggle Plot Area" msgstr "Toggle Plot Area" -#: appGUI/MainGUI.py:4104 +#: appGUI/MainGUI.py:4273 msgid "Copy Obj_Name" msgstr "Copy Obj_Name" -#: appGUI/MainGUI.py:4105 +#: appGUI/MainGUI.py:4274 msgid "Toggle Code Editor" msgstr "Toggle Code Editor" -#: appGUI/MainGUI.py:4105 +#: appGUI/MainGUI.py:4274 msgid "Toggle the axis" msgstr "Toggle the axis" -#: appGUI/MainGUI.py:4105 appGUI/MainGUI.py:4306 appGUI/MainGUI.py:4393 -#: appGUI/MainGUI.py:4515 +#: appGUI/MainGUI.py:4274 appGUI/MainGUI.py:4475 appGUI/MainGUI.py:4562 +#: appGUI/MainGUI.py:4684 msgid "Distance Minimum Tool" msgstr "Distance Minimum Tool" -#: appGUI/MainGUI.py:4106 +#: appGUI/MainGUI.py:4275 msgid "Open Preferences Window" msgstr "Open Preferences Window" -#: appGUI/MainGUI.py:4107 +#: appGUI/MainGUI.py:4276 msgid "Rotate by 90 degree CCW" msgstr "Rotate by 90 degree CCW" -#: appGUI/MainGUI.py:4107 +#: appGUI/MainGUI.py:4276 msgid "Run a Script" msgstr "Run a Script" -#: appGUI/MainGUI.py:4107 +#: appGUI/MainGUI.py:4276 msgid "Toggle the workspace" msgstr "Toggle the workspace" -#: appGUI/MainGUI.py:4107 +#: appGUI/MainGUI.py:4276 msgid "Skew on X axis" msgstr "Skew on X axis" -#: appGUI/MainGUI.py:4108 +#: appGUI/MainGUI.py:4277 msgid "Skew on Y axis" msgstr "Skew on Y axis" -#: appGUI/MainGUI.py:4111 +#: appGUI/MainGUI.py:4280 msgid "2-Sided PCB Tool" msgstr "2-Sided PCB Tool" -#: appGUI/MainGUI.py:4112 +#: appGUI/MainGUI.py:4281 msgid "Toggle Grid Lines" msgstr "Toggle Grid Lines" -#: appGUI/MainGUI.py:4114 +#: appGUI/MainGUI.py:4283 msgid "Solder Paste Dispensing Tool" msgstr "Solder Paste Dispensing Tool" -#: appGUI/MainGUI.py:4115 +#: appGUI/MainGUI.py:4284 msgid "Film PCB Tool" msgstr "Film PCB Tool" -#: appGUI/MainGUI.py:4115 +#: appGUI/MainGUI.py:4284 msgid "Non-Copper Clearing Tool" msgstr "Non-Copper Clearing Tool" -#: appGUI/MainGUI.py:4116 +#: appGUI/MainGUI.py:4285 msgid "Paint Area Tool" msgstr "Paint Area Tool" -#: appGUI/MainGUI.py:4116 +#: appGUI/MainGUI.py:4285 msgid "Rules Check Tool" msgstr "Rules Check Tool" -#: appGUI/MainGUI.py:4117 +#: appGUI/MainGUI.py:4286 msgid "View File Source" msgstr "View File Source" -#: appGUI/MainGUI.py:4117 +#: appGUI/MainGUI.py:4286 msgid "Transformations Tool" msgstr "Transformations Tool" -#: appGUI/MainGUI.py:4118 +#: appGUI/MainGUI.py:4287 msgid "Cutout PCB Tool" msgstr "Cutout PCB Tool" -#: appGUI/MainGUI.py:4118 appTools/ToolPanelize.py:35 +#: appGUI/MainGUI.py:4287 appTools/ToolPanelize.py:35 +#: appTools/ToolPanelize.py:634 msgid "Panelize PCB" msgstr "Panelize PCB" -#: appGUI/MainGUI.py:4119 +#: appGUI/MainGUI.py:4288 msgid "Enable all Plots" msgstr "Enable all Plots" -#: appGUI/MainGUI.py:4119 +#: appGUI/MainGUI.py:4288 msgid "Disable all Plots" msgstr "Disable all Plots" -#: appGUI/MainGUI.py:4119 +#: appGUI/MainGUI.py:4288 msgid "Disable Non-selected Plots" msgstr "Disable Non-selected Plots" -#: appGUI/MainGUI.py:4120 +#: appGUI/MainGUI.py:4289 msgid "Toggle Full Screen" msgstr "Toggle Full Screen" -#: appGUI/MainGUI.py:4123 +#: appGUI/MainGUI.py:4292 msgid "Abort current task (gracefully)" msgstr "Abort current task (gracefully)" -#: appGUI/MainGUI.py:4126 +#: appGUI/MainGUI.py:4295 msgid "Save Project As" msgstr "Save Project As" -#: appGUI/MainGUI.py:4127 +#: appGUI/MainGUI.py:4296 msgid "" "Paste Special. Will convert a Windows path style to the one required in Tcl " "Shell" @@ -5369,220 +6117,220 @@ msgstr "" "Paste Special. Will convert a Windows path style to the one required in Tcl " "Shell" -#: appGUI/MainGUI.py:4130 +#: appGUI/MainGUI.py:4299 msgid "Open Online Manual" msgstr "Open Online Manual" -#: appGUI/MainGUI.py:4131 +#: appGUI/MainGUI.py:4300 msgid "Open Online Tutorials" msgstr "Open Online Tutorials" -#: appGUI/MainGUI.py:4131 +#: appGUI/MainGUI.py:4300 msgid "Refresh Plots" msgstr "Refresh Plots" -#: appGUI/MainGUI.py:4131 appTools/ToolSolderPaste.py:517 +#: appGUI/MainGUI.py:4300 appTools/ToolSolderPaste.py:71 msgid "Delete Object" msgstr "Delete Object" -#: appGUI/MainGUI.py:4131 +#: appGUI/MainGUI.py:4300 msgid "Alternate: Delete Tool" msgstr "Alternate: Delete Tool" -#: appGUI/MainGUI.py:4132 +#: appGUI/MainGUI.py:4301 msgid "(left to Key_1)Toggle Notebook Area (Left Side)" msgstr "(left to Key_1)Toggle Notebook Area (Left Side)" -#: appGUI/MainGUI.py:4132 +#: appGUI/MainGUI.py:4301 msgid "En(Dis)able Obj Plot" msgstr "En(Dis)able Obj Plot" -#: appGUI/MainGUI.py:4133 +#: appGUI/MainGUI.py:4302 msgid "Deselects all objects" msgstr "Deselects all objects" -#: appGUI/MainGUI.py:4147 +#: appGUI/MainGUI.py:4316 msgid "Editor Shortcut list" msgstr "Editor Shortcut list" -#: appGUI/MainGUI.py:4301 +#: appGUI/MainGUI.py:4470 msgid "GEOMETRY EDITOR" msgstr "GEOMETRY EDITOR" -#: appGUI/MainGUI.py:4301 +#: appGUI/MainGUI.py:4470 msgid "Draw an Arc" msgstr "Draw an Arc" -#: appGUI/MainGUI.py:4301 +#: appGUI/MainGUI.py:4470 msgid "Copy Geo Item" msgstr "Copy Geo Item" -#: appGUI/MainGUI.py:4302 +#: appGUI/MainGUI.py:4471 msgid "Within Add Arc will toogle the ARC direction: CW or CCW" msgstr "Within Add Arc will toogle the ARC direction: CW or CCW" -#: appGUI/MainGUI.py:4302 +#: appGUI/MainGUI.py:4471 msgid "Polygon Intersection Tool" msgstr "Polygon Intersection Tool" -#: appGUI/MainGUI.py:4303 +#: appGUI/MainGUI.py:4472 msgid "Geo Paint Tool" msgstr "Geo Paint Tool" -#: appGUI/MainGUI.py:4303 appGUI/MainGUI.py:4392 appGUI/MainGUI.py:4512 +#: appGUI/MainGUI.py:4472 appGUI/MainGUI.py:4561 appGUI/MainGUI.py:4681 msgid "Jump to Location (x, y)" msgstr "Jump to Location (x, y)" -#: appGUI/MainGUI.py:4303 +#: appGUI/MainGUI.py:4472 msgid "Toggle Corner Snap" msgstr "Toggle Corner Snap" -#: appGUI/MainGUI.py:4303 +#: appGUI/MainGUI.py:4472 msgid "Move Geo Item" msgstr "Move Geo Item" -#: appGUI/MainGUI.py:4304 +#: appGUI/MainGUI.py:4473 msgid "Within Add Arc will cycle through the ARC modes" msgstr "Within Add Arc will cycle through the ARC modes" -#: appGUI/MainGUI.py:4304 +#: appGUI/MainGUI.py:4473 msgid "Draw a Polygon" msgstr "Draw a Polygon" -#: appGUI/MainGUI.py:4304 +#: appGUI/MainGUI.py:4473 msgid "Draw a Circle" msgstr "Draw a Circle" -#: appGUI/MainGUI.py:4305 +#: appGUI/MainGUI.py:4474 msgid "Draw a Path" msgstr "Draw a Path" -#: appGUI/MainGUI.py:4305 +#: appGUI/MainGUI.py:4474 msgid "Draw Rectangle" msgstr "Draw Rectangle" -#: appGUI/MainGUI.py:4305 +#: appGUI/MainGUI.py:4474 msgid "Polygon Subtraction Tool" msgstr "Polygon Subtraction Tool" -#: appGUI/MainGUI.py:4305 +#: appGUI/MainGUI.py:4474 msgid "Add Text Tool" msgstr "Add Text Tool" -#: appGUI/MainGUI.py:4306 +#: appGUI/MainGUI.py:4475 msgid "Polygon Union Tool" msgstr "Polygon Union Tool" -#: appGUI/MainGUI.py:4306 +#: appGUI/MainGUI.py:4475 msgid "Flip shape on X axis" msgstr "Flip shape on X axis" -#: appGUI/MainGUI.py:4306 +#: appGUI/MainGUI.py:4475 msgid "Flip shape on Y axis" msgstr "Flip shape on Y axis" -#: appGUI/MainGUI.py:4307 +#: appGUI/MainGUI.py:4476 msgid "Skew shape on X axis" msgstr "Skew shape on X axis" -#: appGUI/MainGUI.py:4307 +#: appGUI/MainGUI.py:4476 msgid "Skew shape on Y axis" msgstr "Skew shape on Y axis" -#: appGUI/MainGUI.py:4307 +#: appGUI/MainGUI.py:4476 msgid "Editor Transformation Tool" msgstr "Editor Transformation Tool" -#: appGUI/MainGUI.py:4308 +#: appGUI/MainGUI.py:4477 msgid "Offset shape on X axis" msgstr "Offset shape on X axis" -#: appGUI/MainGUI.py:4308 +#: appGUI/MainGUI.py:4477 msgid "Offset shape on Y axis" msgstr "Offset shape on Y axis" -#: appGUI/MainGUI.py:4309 appGUI/MainGUI.py:4395 appGUI/MainGUI.py:4517 +#: appGUI/MainGUI.py:4478 appGUI/MainGUI.py:4564 appGUI/MainGUI.py:4686 msgid "Save Object and Exit Editor" msgstr "Save Object and Exit Editor" -#: appGUI/MainGUI.py:4309 +#: appGUI/MainGUI.py:4478 msgid "Polygon Cut Tool" msgstr "Polygon Cut Tool" -#: appGUI/MainGUI.py:4310 +#: appGUI/MainGUI.py:4479 msgid "Rotate Geometry" msgstr "Rotate Geometry" -#: appGUI/MainGUI.py:4310 +#: appGUI/MainGUI.py:4479 msgid "Finish drawing for certain tools" msgstr "Finish drawing for certain tools" -#: appGUI/MainGUI.py:4310 appGUI/MainGUI.py:4395 appGUI/MainGUI.py:4515 +#: appGUI/MainGUI.py:4479 appGUI/MainGUI.py:4564 appGUI/MainGUI.py:4684 msgid "Abort and return to Select" msgstr "Abort and return to Select" -#: appGUI/MainGUI.py:4391 +#: appGUI/MainGUI.py:4560 msgid "EXCELLON EDITOR" msgstr "EXCELLON EDITOR" -#: appGUI/MainGUI.py:4391 +#: appGUI/MainGUI.py:4560 msgid "Copy Drill(s)" msgstr "Copy Drill(s)" -#: appGUI/MainGUI.py:4392 +#: appGUI/MainGUI.py:4561 msgid "Move Drill(s)" msgstr "Move Drill(s)" -#: appGUI/MainGUI.py:4393 +#: appGUI/MainGUI.py:4562 msgid "Add a new Tool" msgstr "Add a new Tool" -#: appGUI/MainGUI.py:4394 +#: appGUI/MainGUI.py:4563 msgid "Delete Drill(s)" msgstr "Delete Drill(s)" -#: appGUI/MainGUI.py:4394 +#: appGUI/MainGUI.py:4563 msgid "Alternate: Delete Tool(s)" msgstr "Alternate: Delete Tool(s)" -#: appGUI/MainGUI.py:4511 +#: appGUI/MainGUI.py:4680 msgid "GERBER EDITOR" msgstr "GERBER EDITOR" -#: appGUI/MainGUI.py:4511 +#: appGUI/MainGUI.py:4680 msgid "Add Disc" msgstr "Add Disc" -#: appGUI/MainGUI.py:4511 +#: appGUI/MainGUI.py:4680 msgid "Add SemiDisc" msgstr "Add SemiDisc" -#: appGUI/MainGUI.py:4513 +#: appGUI/MainGUI.py:4682 msgid "Within Track & Region Tools will cycle in REVERSE the bend modes" msgstr "Within Track & Region Tools will cycle in REVERSE the bend modes" -#: appGUI/MainGUI.py:4514 +#: appGUI/MainGUI.py:4683 msgid "Within Track & Region Tools will cycle FORWARD the bend modes" msgstr "Within Track & Region Tools will cycle FORWARD the bend modes" -#: appGUI/MainGUI.py:4515 +#: appGUI/MainGUI.py:4684 msgid "Alternate: Delete Apertures" msgstr "Alternate: Delete Apertures" -#: appGUI/MainGUI.py:4516 +#: appGUI/MainGUI.py:4685 msgid "Eraser Tool" msgstr "Eraser Tool" -#: appGUI/MainGUI.py:4517 +#: appGUI/MainGUI.py:4686 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:221 msgid "Mark Area Tool" msgstr "Mark Area Tool" -#: appGUI/MainGUI.py:4517 +#: appGUI/MainGUI.py:4686 msgid "Poligonize Tool" msgstr "Poligonize Tool" -#: appGUI/MainGUI.py:4517 +#: appGUI/MainGUI.py:4686 msgid "Transformation Tool" msgstr "Transformation Tool" @@ -5590,7 +6338,8 @@ msgstr "Transformation Tool" msgid "App Object" msgstr "App Object" -#: appGUI/ObjectUI.py:78 appTools/ToolIsolation.py:77 +#: appGUI/ObjectUI.py:78 appTools/ToolDrilling.py:2001 +#: appTools/ToolIsolation.py:2937 appTools/ToolMilling.py:1620 msgid "" "BASIC is suitable for a beginner. Many parameters\n" "are hidden from the user in this mode.\n" @@ -5608,7 +6357,7 @@ msgstr "" "Edit -> Preferences -> General and check:\n" "'APP. LEVEL' radio button." -#: appGUI/ObjectUI.py:111 appGUI/ObjectUI.py:154 +#: appGUI/ObjectUI.py:111 appGUI/ObjectUI.py:155 msgid "Geometrical transformations of the current object." msgstr "Geometrical transformations of the current object." @@ -5640,31 +6389,23 @@ msgstr "" msgid "Perform the offset operation." msgstr "Perform the offset operation." -#: appGUI/ObjectUI.py:162 appGUI/ObjectUI.py:173 appTool.py:280 appTool.py:291 -msgid "Edited value is out of range" -msgstr "Edited value is out of range" - -#: appGUI/ObjectUI.py:168 appGUI/ObjectUI.py:175 appTool.py:286 appTool.py:293 -msgid "Edited value is within limits." -msgstr "Edited value is within limits." - -#: appGUI/ObjectUI.py:187 +#: appGUI/ObjectUI.py:188 msgid "Gerber Object" msgstr "Gerber Object" -#: appGUI/ObjectUI.py:196 appGUI/ObjectUI.py:496 appGUI/ObjectUI.py:1313 -#: appGUI/ObjectUI.py:2135 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:30 +#: appGUI/ObjectUI.py:197 appGUI/ObjectUI.py:497 appGUI/ObjectUI.py:777 +#: appGUI/ObjectUI.py:1715 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:30 #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:33 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:31 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:33 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:31 msgid "Plot Options" msgstr "Plot Options" -#: appGUI/ObjectUI.py:202 appGUI/ObjectUI.py:502 +#: appGUI/ObjectUI.py:202 appGUI/ObjectUI.py:503 #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:47 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:45 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:119 -#: appTools/ToolCopperThieving.py:195 +#: appTools/ToolCopperThieving.py:1284 msgid "Solid" msgstr "Solid" @@ -5672,46 +6413,44 @@ msgstr "Solid" msgid "Solid color polygons." msgstr "Solid color polygons." -#: appGUI/ObjectUI.py:210 appGUI/ObjectUI.py:510 appGUI/ObjectUI.py:1319 +#: appGUI/ObjectUI.py:209 appGUI/ObjectUI.py:511 appGUI/ObjectUI.py:783 msgid "Multi-Color" msgstr "Multi-Color" -#: appGUI/ObjectUI.py:212 appGUI/ObjectUI.py:512 appGUI/ObjectUI.py:1321 +#: appGUI/ObjectUI.py:211 appGUI/ObjectUI.py:513 appGUI/ObjectUI.py:785 #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:56 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:47 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:49 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:54 msgid "Draw polygons in different colors." msgstr "Draw polygons in different colors." -#: appGUI/ObjectUI.py:228 appGUI/ObjectUI.py:548 +#: appGUI/ObjectUI.py:226 appGUI/ObjectUI.py:544 #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:40 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:38 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:40 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:38 msgid "Plot" msgstr "Plot" -#: appGUI/ObjectUI.py:229 appGUI/ObjectUI.py:550 appGUI/ObjectUI.py:1383 -#: appGUI/ObjectUI.py:2245 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:41 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:40 +#: appGUI/ObjectUI.py:227 appGUI/ObjectUI.py:546 appGUI/ObjectUI.py:847 +#: appGUI/ObjectUI.py:1819 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:41 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:42 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:40 msgid "Plot (show) this object." msgstr "Plot (show) this object." -#: appGUI/ObjectUI.py:258 -msgid "" -"Toggle the display of the Gerber Apertures Table.\n" -"When unchecked, it will delete all mark shapes\n" -"that are drawn on canvas." -msgstr "" -"Toggle the display of the Gerber Apertures Table.\n" -"When unchecked, it will delete all mark shapes\n" -"that are drawn on canvas." +#: appGUI/ObjectUI.py:251 appGUI/ObjectUI.py:539 +#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:50 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:54 +#, fuzzy +#| msgid "Toggle the display of axis on canvas" +msgid "Toggle the display of the Tools Table." +msgstr "Toggle the display of axis on canvas" -#: appGUI/ObjectUI.py:268 +#: appGUI/ObjectUI.py:260 msgid "Mark All" msgstr "Mark All" -#: appGUI/ObjectUI.py:270 +#: appGUI/ObjectUI.py:262 msgid "" "When checked it will display all the apertures.\n" "When unchecked, it will delete all mark shapes\n" @@ -5721,15 +6460,15 @@ msgstr "" "When unchecked, it will delete all mark shapes\n" "that are drawn on canvas." -#: appGUI/ObjectUI.py:298 +#: appGUI/ObjectUI.py:292 msgid "Mark the aperture instances on canvas." msgstr "Mark the aperture instances on canvas." -#: appGUI/ObjectUI.py:305 appTools/ToolIsolation.py:600 +#: appGUI/ObjectUI.py:299 appTools/ToolIsolation.py:3410 msgid "Buffer Solid Geometry" msgstr "Buffer Solid Geometry" -#: appGUI/ObjectUI.py:307 appTools/ToolIsolation.py:602 +#: appGUI/ObjectUI.py:301 appTools/ToolIsolation.py:3412 msgid "" "This button is shown only when the Gerber file\n" "is loaded without buffering.\n" @@ -5741,12 +6480,18 @@ msgstr "" "Clicking this will create the buffered geometry\n" "required for isolation." -#: appGUI/ObjectUI.py:332 +#: appGUI/ObjectUI.py:312 +#, fuzzy +#| msgid "Gerber Object" +msgid "Edit an Gerber object." +msgstr "Gerber Object" + +#: appGUI/ObjectUI.py:331 msgid "Isolation Routing" msgstr "Isolation Routing" #: appGUI/ObjectUI.py:334 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:32 -#: appTools/ToolIsolation.py:67 +#: appTools/ToolIsolation.py:2927 msgid "" "Create a Geometry object with\n" "toolpaths to cut around polygons." @@ -5754,7 +6499,7 @@ msgstr "" "Create a Geometry object with\n" "toolpaths to cut around polygons." -#: appGUI/ObjectUI.py:348 appGUI/ObjectUI.py:2089 appTools/ToolNCC.py:599 +#: appGUI/ObjectUI.py:349 appGUI/ObjectUI.py:1664 appTools/ToolNCC.py:4251 msgid "" "Create the Geometry Object\n" "for non-copper routing." @@ -5762,7 +6507,7 @@ msgstr "" "Create the Geometry Object\n" "for non-copper routing." -#: appGUI/ObjectUI.py:362 +#: appGUI/ObjectUI.py:364 msgid "" "Generate the geometry for\n" "the board cutout." @@ -5770,11 +6515,11 @@ msgstr "" "Generate the geometry for\n" "the board cutout." -#: appGUI/ObjectUI.py:379 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:32 +#: appGUI/ObjectUI.py:381 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:32 msgid "Non-copper regions" msgstr "Non-copper regions" -#: appGUI/ObjectUI.py:381 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:34 +#: appGUI/ObjectUI.py:383 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:34 msgid "" "Create polygons covering the\n" "areas without copper on the PCB.\n" @@ -5788,13 +6533,13 @@ msgstr "" "object. Can be used to remove all\n" "copper from a specified region." -#: appGUI/ObjectUI.py:391 appGUI/ObjectUI.py:432 +#: appGUI/ObjectUI.py:393 appGUI/ObjectUI.py:434 #: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:46 #: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:79 msgid "Boundary Margin" msgstr "Boundary Margin" -#: appGUI/ObjectUI.py:393 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:48 +#: appGUI/ObjectUI.py:395 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:48 msgid "" "Specify the edge of the PCB\n" "by drawing a box around all\n" @@ -5806,28 +6551,23 @@ msgstr "" "objects with this minimum\n" "distance." -#: appGUI/ObjectUI.py:408 appGUI/ObjectUI.py:446 -#: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:61 -#: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:92 -msgid "Rounded Geo" -msgstr "Rounded Geo" - -#: appGUI/ObjectUI.py:410 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:63 +#: appGUI/ObjectUI.py:412 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:63 msgid "Resulting geometry will have rounded corners." msgstr "Resulting geometry will have rounded corners." -#: appGUI/ObjectUI.py:414 appGUI/ObjectUI.py:455 -#: appTools/ToolSolderPaste.py:373 -msgid "Generate Geo" -msgstr "Generate Geo" +#: appGUI/ObjectUI.py:415 appGUI/ObjectUI.py:455 appTools/ToolCutOut.py:2045 +#: appTools/ToolCutOut.py:2060 appTools/ToolIsolation.py:3389 +#: appTools/ToolNCC.py:4248 appTools/ToolPaint.py:3176 +msgid "Generate Geometry" +msgstr "Generate Geometry" -#: appGUI/ObjectUI.py:424 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:73 +#: appGUI/ObjectUI.py:426 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:73 #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:137 -#: appTools/ToolPanelize.py:99 appTools/ToolQRCode.py:201 +#: appTools/ToolPanelize.py:698 appTools/ToolQRCode.py:779 msgid "Bounding Box" msgstr "Bounding Box" -#: appGUI/ObjectUI.py:426 +#: appGUI/ObjectUI.py:428 msgid "" "Create a geometry surrounding the Gerber object.\n" "Square shape." @@ -5835,7 +6575,7 @@ msgstr "" "Create a geometry surrounding the Gerber object.\n" "Square shape." -#: appGUI/ObjectUI.py:434 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:81 +#: appGUI/ObjectUI.py:436 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:81 msgid "" "Distance of the edges of the box\n" "to the nearest polygon." @@ -5843,7 +6583,7 @@ msgstr "" "Distance of the edges of the box\n" "to the nearest polygon." -#: appGUI/ObjectUI.py:448 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:94 +#: appGUI/ObjectUI.py:449 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:94 msgid "" "If the bounding box is \n" "to have rounded corners\n" @@ -5855,32 +6595,20 @@ msgstr "" "their radius is equal to\n" "the margin." -#: appGUI/ObjectUI.py:457 +#: appGUI/ObjectUI.py:458 msgid "Generate the Geometry object." msgstr "Generate the Geometry object." -#: appGUI/ObjectUI.py:484 +#: appGUI/ObjectUI.py:485 msgid "Excellon Object" msgstr "Excellon Object" -#: appGUI/ObjectUI.py:504 +#: appGUI/ObjectUI.py:505 msgid "Solid circles." msgstr "Solid circles." -#: appGUI/ObjectUI.py:560 appGUI/ObjectUI.py:655 appGUI/ObjectUI.py:2266 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:71 -#: appTools/ToolProperties.py:166 -msgid "Drills" -msgstr "Drills" - -#: appGUI/ObjectUI.py:560 appGUI/ObjectUI.py:656 appGUI/ObjectUI.py:2266 -#: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:158 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:72 -#: appTools/ToolProperties.py:168 -msgid "Slots" -msgstr "Slots" - -#: appGUI/ObjectUI.py:565 +#: appGUI/ObjectUI.py:576 appTools/ToolDrilling.py:2053 +#: appTools/ToolMilling.py:1672 msgid "" "This is the Tool Number.\n" "When ToolChange is checked, on toolchange event this value\n" @@ -5894,7 +6622,8 @@ msgstr "" "\n" "Here the tools are selected for G-code generation." -#: appGUI/ObjectUI.py:570 appGUI/ObjectUI.py:1407 appTools/ToolPaint.py:141 +#: appGUI/ObjectUI.py:581 appGUI/ObjectUI.py:871 appTools/ToolDrilling.py:2058 +#: appTools/ToolMilling.py:1677 appTools/ToolPaint.py:2826 msgid "" "Tool Diameter. It's value (in current FlatCAM units) \n" "is the cut width into the material." @@ -5902,7 +6631,8 @@ msgstr "" "Tool Diameter. It's value (in current FlatCAM units) \n" "is the cut width into the material." -#: appGUI/ObjectUI.py:573 +#: appGUI/ObjectUI.py:584 appTools/ToolDrilling.py:2061 +#: appTools/ToolMilling.py:1680 msgid "" "The number of Drill holes. Holes that are drilled with\n" "a drill bit." @@ -5910,7 +6640,8 @@ msgstr "" "The number of Drill holes. Holes that are drilled with\n" "a drill bit." -#: appGUI/ObjectUI.py:576 +#: appGUI/ObjectUI.py:587 appTools/ToolDrilling.py:2064 +#: appTools/ToolMilling.py:1683 msgid "" "The number of Slot holes. Holes that are created by\n" "milling them with an endmill bit." @@ -5918,7 +6649,13 @@ msgstr "" "The number of Slot holes. Holes that are created by\n" "milling them with an endmill bit." -#: appGUI/ObjectUI.py:579 +#: appGUI/ObjectUI.py:590 +#, fuzzy +#| msgid "Set the color of the shape when selected." +msgid "Show the color of the drill holes when using multi-color." +msgstr "Set the color of the shape when selected." + +#: appGUI/ObjectUI.py:592 msgid "" "Toggle display of the drills for the current tool.\n" "This does not select the tools for G-code generation." @@ -5926,528 +6663,53 @@ msgstr "" "Toggle display of the drills for the current tool.\n" "This does not select the tools for G-code generation." -#: appGUI/ObjectUI.py:597 appGUI/ObjectUI.py:1564 -#: appObjects/FlatCAMExcellon.py:537 appObjects/FlatCAMExcellon.py:836 -#: appObjects/FlatCAMExcellon.py:852 appObjects/FlatCAMExcellon.py:856 -#: appObjects/FlatCAMGeometry.py:380 appObjects/FlatCAMGeometry.py:825 -#: appObjects/FlatCAMGeometry.py:861 appTools/ToolIsolation.py:313 -#: appTools/ToolIsolation.py:1076 appTools/ToolIsolation.py:1196 -#: appTools/ToolIsolation.py:1210 appTools/ToolNCC.py:331 -#: appTools/ToolNCC.py:797 appTools/ToolNCC.py:811 appTools/ToolNCC.py:1214 -#: appTools/ToolPaint.py:313 appTools/ToolPaint.py:766 -#: appTools/ToolPaint.py:778 appTools/ToolPaint.py:1190 -msgid "Parameters for" -msgstr "Parameters for" +#: appGUI/ObjectUI.py:601 +#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:55 +#, fuzzy +#| msgid "Add from DB" +msgid "Auto load from DB" +msgstr "Add from DB" -#: appGUI/ObjectUI.py:600 appGUI/ObjectUI.py:1567 appTools/ToolIsolation.py:316 -#: appTools/ToolNCC.py:334 appTools/ToolPaint.py:316 +#: appGUI/ObjectUI.py:603 +#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:57 msgid "" -"The data used for creating GCode.\n" -"Each tool store it's own set of such data." +"Automatic replacement of the tools from related application tools\n" +"with tools from DB that have a close diameter value." msgstr "" -"The data used for creating GCode.\n" -"Each tool store it's own set of such data." -#: appGUI/ObjectUI.py:626 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:48 -msgid "" -"Operation type:\n" -"- Drilling -> will drill the drills/slots associated with this tool\n" -"- Milling -> will mill the drills/slots" +#: appGUI/ObjectUI.py:613 +#, fuzzy +#| msgid "Excellon Object" +msgid "Edit an Excellon object." +msgstr "Excellon Object" + +#: appGUI/ObjectUI.py:644 +#, fuzzy +#| msgid "" +#| "Merge a selection of Excellon objects into a new combo Excellon object." +msgid "Generate GCode out of drill holes in an Excellon object." msgstr "" -"Operation type:\n" -"- Drilling -> will drill the drills/slots associated with this tool\n" -"- Milling -> will mill the drills/slots" +"Merge a selection of Excellon objects into a new combo Excellon object." -#: appGUI/ObjectUI.py:632 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:54 -msgid "Drilling" -msgstr "Drilling" +#: appGUI/ObjectUI.py:655 +#, fuzzy +#| msgid "Milling Type" +msgid "Milling Tool" +msgstr "Milling Type" -#: appGUI/ObjectUI.py:633 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:55 -msgid "Milling" -msgstr "Milling" - -#: appGUI/ObjectUI.py:648 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:64 -msgid "" -"Milling type:\n" -"- Drills -> will mill the drills associated with this tool\n" -"- Slots -> will mill the slots associated with this tool\n" -"- Both -> will mill both drills and mills or whatever is available" +#: appGUI/ObjectUI.py:658 +#, fuzzy +#| msgid "" +#| "Merge a selection of Excellon objects into a new combo Excellon object." +msgid "Generate GCode out of slot holes in an Excellon object." msgstr "" -"Milling type:\n" -"- Drills -> will mill the drills associated with this tool\n" -"- Slots -> will mill the slots associated with this tool\n" -"- Both -> will mill both drills and mills or whatever is available" +"Merge a selection of Excellon objects into a new combo Excellon object." -#: appGUI/ObjectUI.py:657 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:73 -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:199 -#: appTools/ToolFilm.py:241 -msgid "Both" -msgstr "Both" - -#: appGUI/ObjectUI.py:665 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:80 -msgid "Milling Diameter" -msgstr "Milling Diameter" - -#: appGUI/ObjectUI.py:667 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:82 -msgid "The diameter of the tool who will do the milling" -msgstr "The diameter of the tool who will do the milling" - -#: appGUI/ObjectUI.py:681 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:95 -msgid "" -"Drill depth (negative)\n" -"below the copper surface." -msgstr "" -"Drill depth (negative)\n" -"below the copper surface." - -#: appGUI/ObjectUI.py:700 appGUI/ObjectUI.py:1626 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:113 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:69 -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:79 -#: appTools/ToolCutOut.py:159 -msgid "Multi-Depth" -msgstr "Multi-Depth" - -#: appGUI/ObjectUI.py:703 appGUI/ObjectUI.py:1629 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:116 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:72 -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:82 -#: appTools/ToolCutOut.py:162 -msgid "" -"Use multiple passes to limit\n" -"the cut depth in each pass. Will\n" -"cut multiple times until Cut Z is\n" -"reached." -msgstr "" -"Use multiple passes to limit\n" -"the cut depth in each pass. Will\n" -"cut multiple times until Cut Z is\n" -"reached." - -#: appGUI/ObjectUI.py:716 appGUI/ObjectUI.py:1643 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:128 -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:94 -#: appTools/ToolCutOut.py:176 -msgid "Depth of each pass (positive)." -msgstr "Depth of each pass (positive)." - -#: appGUI/ObjectUI.py:727 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:136 -msgid "" -"Tool height when travelling\n" -"across the XY plane." -msgstr "" -"Tool height when travelling\n" -"across the XY plane." - -#: appGUI/ObjectUI.py:748 appGUI/ObjectUI.py:1673 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:188 -msgid "" -"Cutting speed in the XY\n" -"plane in units per minute" -msgstr "" -"Cutting speed in the XY\n" -"plane in units per minute" - -#: appGUI/ObjectUI.py:763 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:209 -msgid "" -"Tool speed while drilling\n" -"(in units per minute).\n" -"So called 'Plunge' feedrate.\n" -"This is for linear move G01." -msgstr "" -"Tool speed while drilling\n" -"(in units per minute).\n" -"So called 'Plunge' feedrate.\n" -"This is for linear move G01." - -#: appGUI/ObjectUI.py:778 appGUI/ObjectUI.py:1700 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:80 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:67 -msgid "Feedrate Rapids" -msgstr "Feedrate Rapids" - -#: appGUI/ObjectUI.py:780 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:82 -msgid "" -"Tool speed while drilling\n" -"(in units per minute).\n" -"This is for the rapid move G00.\n" -"It is useful only for Marlin,\n" -"ignore for any other cases." -msgstr "" -"Tool speed while drilling\n" -"(in units per minute).\n" -"This is for the rapid move G00.\n" -"It is useful only for Marlin,\n" -"ignore for any other cases." - -#: appGUI/ObjectUI.py:800 appGUI/ObjectUI.py:1720 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:85 -msgid "Re-cut" -msgstr "Re-cut" - -#: appGUI/ObjectUI.py:802 appGUI/ObjectUI.py:815 appGUI/ObjectUI.py:1722 -#: appGUI/ObjectUI.py:1734 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:87 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:99 -msgid "" -"In order to remove possible\n" -"copper leftovers where first cut\n" -"meet with last cut, we generate an\n" -"extended cut over the first cut section." -msgstr "" -"In order to remove possible\n" -"copper leftovers where first cut\n" -"meet with last cut, we generate an\n" -"extended cut over the first cut section." - -#: appGUI/ObjectUI.py:828 appGUI/ObjectUI.py:1743 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:217 -#: appObjects/FlatCAMExcellon.py:1512 appObjects/FlatCAMGeometry.py:1687 -msgid "Spindle speed" -msgstr "Spindle speed" - -#: appGUI/ObjectUI.py:830 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:224 -msgid "" -"Speed of the spindle\n" -"in RPM (optional)" -msgstr "" -"Speed of the spindle\n" -"in RPM (optional)" - -#: appGUI/ObjectUI.py:845 appGUI/ObjectUI.py:1762 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:238 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:235 -msgid "" -"Pause to allow the spindle to reach its\n" -"speed before cutting." -msgstr "" -"Pause to allow the spindle to reach its\n" -"speed before cutting." - -#: appGUI/ObjectUI.py:856 appGUI/ObjectUI.py:1772 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:246 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:240 -msgid "Number of time units for spindle to dwell." -msgstr "Number of time units for spindle to dwell." - -#: appGUI/ObjectUI.py:866 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:46 -msgid "Offset Z" -msgstr "Offset Z" - -#: appGUI/ObjectUI.py:868 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:48 -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 "" -"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." - -#: appGUI/ObjectUI.py:928 appGUI/ObjectUI.py:1826 appTools/ToolIsolation.py:412 -#: appTools/ToolNCC.py:492 appTools/ToolPaint.py:422 -msgid "Apply parameters to all tools" -msgstr "Apply parameters to all tools" - -#: appGUI/ObjectUI.py:930 appGUI/ObjectUI.py:1828 appTools/ToolIsolation.py:414 -#: appTools/ToolNCC.py:494 appTools/ToolPaint.py:424 -msgid "" -"The parameters in the current form will be applied\n" -"on all the tools from the Tool Table." -msgstr "" -"The parameters in the current form will be applied\n" -"on all the tools from the Tool Table." - -#: appGUI/ObjectUI.py:941 appGUI/ObjectUI.py:1839 appTools/ToolIsolation.py:425 -#: appTools/ToolNCC.py:505 appTools/ToolPaint.py:435 -msgid "Common Parameters" -msgstr "Common Parameters" - -#: appGUI/ObjectUI.py:943 appGUI/ObjectUI.py:1841 appTools/ToolIsolation.py:427 -#: appTools/ToolNCC.py:507 appTools/ToolPaint.py:437 -msgid "Parameters that are common for all tools." -msgstr "Parameters that are common for all tools." - -#: appGUI/ObjectUI.py:948 appGUI/ObjectUI.py:1846 -msgid "Tool change Z" -msgstr "Tool change Z" - -#: appGUI/ObjectUI.py:950 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:154 -msgid "" -"Include tool-change sequence\n" -"in G-Code (Pause for tool change)." -msgstr "" -"Include tool-change sequence\n" -"in G-Code (Pause for tool change)." - -#: appGUI/ObjectUI.py:957 appGUI/ObjectUI.py:1857 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:162 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:135 -msgid "" -"Z-axis position (height) for\n" -"tool change." -msgstr "" -"Z-axis position (height) for\n" -"tool change." - -#: appGUI/ObjectUI.py:974 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:71 -msgid "" -"Height of the tool just after start.\n" -"Delete the value if you don't need this feature." -msgstr "" -"Height of the tool just after start.\n" -"Delete the value if you don't need this feature." - -#: appGUI/ObjectUI.py:983 appGUI/ObjectUI.py:1885 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:178 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:154 -msgid "End move Z" -msgstr "End move Z" - -#: appGUI/ObjectUI.py:985 appGUI/ObjectUI.py:1887 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:180 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:156 -msgid "" -"Height of the tool after\n" -"the last move at the end of the job." -msgstr "" -"Height of the tool after\n" -"the last move at the end of the job." - -#: appGUI/ObjectUI.py:1002 appGUI/ObjectUI.py:1904 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:195 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:174 -msgid "End move X,Y" -msgstr "End move X,Y" - -#: appGUI/ObjectUI.py:1004 appGUI/ObjectUI.py:1906 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:197 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:176 -msgid "" -"End move X,Y position. In format (x,y).\n" -"If no value is entered then there is no move\n" -"on X,Y plane at the end of the job." -msgstr "" -"End move X,Y position. In format (x,y).\n" -"If no value is entered then there is no move\n" -"on X,Y plane at the end of the job." - -#: appGUI/ObjectUI.py:1014 appGUI/ObjectUI.py:1780 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:96 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:108 -msgid "Probe Z depth" -msgstr "Probe Z depth" - -#: appGUI/ObjectUI.py:1016 appGUI/ObjectUI.py:1782 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:98 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:110 -msgid "" -"The maximum depth that the probe is allowed\n" -"to probe. Negative value, in current units." -msgstr "" -"The maximum depth that the probe is allowed\n" -"to probe. Negative value, in current units." - -#: appGUI/ObjectUI.py:1033 appGUI/ObjectUI.py:1797 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:109 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:123 -msgid "Feedrate Probe" -msgstr "Feedrate Probe" - -#: appGUI/ObjectUI.py:1035 appGUI/ObjectUI.py:1799 -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:111 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:125 -msgid "The feedrate used while the probe is probing." -msgstr "The feedrate used while the probe is probing." - -#: appGUI/ObjectUI.py:1051 -msgid "Preprocessor E" -msgstr "Preprocessor E" - -#: appGUI/ObjectUI.py:1053 -msgid "" -"The preprocessor JSON file that dictates\n" -"Gcode output for Excellon Objects." -msgstr "" -"The preprocessor JSON file that dictates\n" -"Gcode output for Excellon Objects." - -#: appGUI/ObjectUI.py:1063 -msgid "Preprocessor G" -msgstr "Preprocessor G" - -#: appGUI/ObjectUI.py:1065 -msgid "" -"The preprocessor JSON file that dictates\n" -"Gcode output for Geometry (Milling) Objects." -msgstr "" -"The preprocessor JSON file that dictates\n" -"Gcode output for Geometry (Milling) Objects." - -#: appGUI/ObjectUI.py:1079 appGUI/ObjectUI.py:1934 -msgid "Add exclusion areas" -msgstr "Add exclusion areas" - -#: appGUI/ObjectUI.py:1082 appGUI/ObjectUI.py:1937 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:212 -msgid "" -"Include exclusion areas.\n" -"In those areas the travel of the tools\n" -"is forbidden." -msgstr "" -"Include exclusion areas.\n" -"In those areas the travel of the tools\n" -"is forbidden." - -#: appGUI/ObjectUI.py:1103 appGUI/ObjectUI.py:1122 appGUI/ObjectUI.py:1958 -#: appGUI/ObjectUI.py:1977 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:232 -msgid "Strategy" -msgstr "Strategy" - -#: appGUI/ObjectUI.py:1103 appGUI/ObjectUI.py:1134 appGUI/ObjectUI.py:1958 -#: appGUI/ObjectUI.py:1989 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:244 -msgid "Over Z" -msgstr "Over Z" - -#: appGUI/ObjectUI.py:1105 appGUI/ObjectUI.py:1960 -msgid "This is the Area ID." -msgstr "This is the Area ID." - -#: appGUI/ObjectUI.py:1107 appGUI/ObjectUI.py:1962 -msgid "Type of the object where the exclusion area was added." -msgstr "Type of the object where the exclusion area was added." - -#: appGUI/ObjectUI.py:1109 appGUI/ObjectUI.py:1964 -msgid "" -"The strategy used for exclusion area. Go around the exclusion areas or over " -"it." -msgstr "" -"The strategy used for exclusion area. Go around the exclusion areas or over " -"it." - -#: appGUI/ObjectUI.py:1111 appGUI/ObjectUI.py:1966 -msgid "" -"If the strategy is to go over the area then this is the height at which the " -"tool will go to avoid the exclusion area." -msgstr "" -"If the strategy is to go over the area then this is the height at which the " -"tool will go to avoid the exclusion area." - -#: appGUI/ObjectUI.py:1123 appGUI/ObjectUI.py:1978 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:233 -msgid "" -"The strategy followed when encountering an exclusion area.\n" -"Can be:\n" -"- Over -> when encountering the area, the tool will go to a set height\n" -"- Around -> will avoid the exclusion area by going around the area" -msgstr "" -"The strategy followed when encountering an exclusion area.\n" -"Can be:\n" -"- Over -> when encountering the area, the tool will go to a set height\n" -"- Around -> will avoid the exclusion area by going around the area" - -#: appGUI/ObjectUI.py:1127 appGUI/ObjectUI.py:1982 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:237 -msgid "Over" -msgstr "Over" - -#: appGUI/ObjectUI.py:1128 appGUI/ObjectUI.py:1983 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:238 -msgid "Around" -msgstr "Around" - -#: appGUI/ObjectUI.py:1135 appGUI/ObjectUI.py:1990 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:245 -msgid "" -"The height Z to which the tool will rise in order to avoid\n" -"an interdiction area." -msgstr "" -"The height Z to which the tool will rise in order to avoid\n" -"an interdiction area." - -#: appGUI/ObjectUI.py:1145 appGUI/ObjectUI.py:2000 -msgid "Add area:" -msgstr "Add area:" - -#: appGUI/ObjectUI.py:1146 appGUI/ObjectUI.py:2001 -msgid "Add an Exclusion Area." -msgstr "Add an Exclusion Area." - -#: appGUI/ObjectUI.py:1152 appGUI/ObjectUI.py:2007 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:222 -#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:295 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:324 -#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:288 -#: appTools/ToolIsolation.py:563 appTools/ToolNCC.py:580 -#: appTools/ToolPaint.py:523 -msgid "The kind of selection shape used for area selection." -msgstr "The kind of selection shape used for area selection." - -#: appGUI/ObjectUI.py:1162 appGUI/ObjectUI.py:2017 -#: appGUI/preferences/utilities/AutoCompletePrefGroupUI.py:32 -#: appGUI/preferences/utilities/FAExcPrefGroupUI.py:42 -#: appGUI/preferences/utilities/FAGcoPrefGroupUI.py:32 -#: appGUI/preferences/utilities/FAGrbPrefGroupUI.py:32 -msgid "Delete All" -msgstr "Delete All" - -#: appGUI/ObjectUI.py:1163 appGUI/ObjectUI.py:2018 -msgid "Delete all exclusion areas." -msgstr "Delete all exclusion areas." - -#: appGUI/ObjectUI.py:1166 appGUI/ObjectUI.py:2021 -msgid "Delete Selected" -msgstr "Delete Selected" - -#: appGUI/ObjectUI.py:1167 appGUI/ObjectUI.py:2022 -msgid "Delete all exclusion areas that are selected in the table." -msgstr "Delete all exclusion areas that are selected in the table." - -#: appGUI/ObjectUI.py:1191 appGUI/ObjectUI.py:2038 -msgid "" -"Add / Select 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 "" -"Add / Select at least one tool in the tool-table.\n" -"Click the # header to select all, or Ctrl + LMB\n" -"for custom selection of tools." - -#: appGUI/ObjectUI.py:1199 appGUI/ObjectUI.py:2045 -msgid "Generate CNCJob object" -msgstr "Generate CNCJob object" - -#: appGUI/ObjectUI.py:1201 -msgid "" -"Generate the CNC Job.\n" -"If milling then an additional Geometry object will be created" -msgstr "" -"Generate the CNC Job.\n" -"If milling then an additional Geometry object will be created" - -#: appGUI/ObjectUI.py:1218 +#: appGUI/ObjectUI.py:682 msgid "Milling Geometry" msgstr "Milling Geometry" -#: appGUI/ObjectUI.py:1220 +#: appGUI/ObjectUI.py:684 msgid "" "Create Geometry for milling holes.\n" "Select from the Tools Table above the hole dias to be\n" @@ -6457,16 +6719,16 @@ msgstr "" "Select from the Tools Table above the hole dias to be\n" "milled. Use the # column to make the selection." -#: appGUI/ObjectUI.py:1228 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:296 +#: appGUI/ObjectUI.py:692 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:101 msgid "Diameter of the cutting tool." msgstr "Diameter of the cutting tool." -#: appGUI/ObjectUI.py:1238 +#: appGUI/ObjectUI.py:702 msgid "Mill Drills" msgstr "Mill Drills" -#: appGUI/ObjectUI.py:1240 +#: appGUI/ObjectUI.py:704 msgid "" "Create the Geometry Object\n" "for milling DRILLS toolpaths." @@ -6474,11 +6736,11 @@ msgstr "" "Create the Geometry Object\n" "for milling DRILLS toolpaths." -#: appGUI/ObjectUI.py:1258 +#: appGUI/ObjectUI.py:722 msgid "Mill Slots" msgstr "Mill Slots" -#: appGUI/ObjectUI.py:1260 +#: appGUI/ObjectUI.py:724 msgid "" "Create the Geometry Object\n" "for milling SLOTS toolpaths." @@ -6486,11 +6748,11 @@ msgstr "" "Create the Geometry Object\n" "for milling SLOTS toolpaths." -#: appGUI/ObjectUI.py:1302 appTools/ToolCutOut.py:319 +#: appGUI/ObjectUI.py:766 msgid "Geometry Object" msgstr "Geometry Object" -#: appGUI/ObjectUI.py:1364 +#: appGUI/ObjectUI.py:828 msgid "" "Tools in this Geometry object used for cutting.\n" "The 'Offset' entry will set an offset for the cut.\n" @@ -6518,24 +6780,12 @@ 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." -#: appGUI/ObjectUI.py:1381 appGUI/ObjectUI.py:2243 +#: appGUI/ObjectUI.py:845 appGUI/ObjectUI.py:1817 #: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:40 msgid "Plot Object" msgstr "Plot Object" -#: appGUI/ObjectUI.py:1394 appGUI/ObjectUI.py:2256 appGUI/ObjectUI.py:2266 -#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:138 -#: appTools/ToolCopperThieving.py:225 -msgid "Dia" -msgstr "Dia" - -#: appGUI/ObjectUI.py:1394 appGUI/ObjectUI.py:2256 -#: appTools/ToolIsolation.py:130 appTools/ToolNCC.py:132 -#: appTools/ToolPaint.py:127 -msgid "TT" -msgstr "TT" - -#: appGUI/ObjectUI.py:1401 +#: appGUI/ObjectUI.py:865 msgid "" "This is the Tool Number.\n" "When ToolChange is checked, on toolchange event this value\n" @@ -6545,7 +6795,7 @@ msgstr "" "When ToolChange is checked, on toolchange event this value\n" "will be showed as a T1, T2 ... Tn" -#: appGUI/ObjectUI.py:1412 +#: appGUI/ObjectUI.py:876 msgid "" "The value for the Offset can be:\n" "- Path -> There is no offset, the tool cut will be done through the geometry " @@ -6561,7 +6811,7 @@ msgstr "" "'pocket'.\n" "- Out(side) -> The tool cut will follow the geometry line on the outside." -#: appGUI/ObjectUI.py:1419 +#: appGUI/ObjectUI.py:883 msgid "" "The (Operation) Type has only informative value. Usually the UI form " "values \n" @@ -6581,7 +6831,7 @@ msgstr "" "For Isolation we need a lower Feedrate as it use a milling bit with a fine " "tip." -#: appGUI/ObjectUI.py:1428 +#: appGUI/ObjectUI.py:892 msgid "" "The Tool Type (TT) can be:\n" "- Circular with 1 ... 4 teeth -> it is informative only. Being circular the " @@ -6611,7 +6861,7 @@ msgstr "" "Choosing the V-Shape Tool Type automatically will select the Operation Type " "as Isolation." -#: appGUI/ObjectUI.py:1440 +#: appGUI/ObjectUI.py:904 msgid "" "Plot column. It is visible only for MultiGeo geometries, meaning geometries " "that holds the geometry\n" @@ -6629,7 +6879,13 @@ msgstr "" "plot on canvas\n" "for the corresponding tool." -#: appGUI/ObjectUI.py:1458 +#: appGUI/ObjectUI.py:918 +#, fuzzy +#| msgid "Geometry Object" +msgid "Edit an Geometry object." +msgstr "Geometry Object" + +#: appGUI/ObjectUI.py:937 msgid "" "The value to offset the cut when \n" "the Offset type selected is 'Offset'.\n" @@ -6641,15 +6897,12 @@ msgstr "" "The value can be positive for 'outside'\n" "cut and negative for 'inside' cut." -#: appGUI/ObjectUI.py:1477 appTools/ToolIsolation.py:195 -#: appTools/ToolIsolation.py:1282 appTools/ToolNCC.py:209 -#: appTools/ToolNCC.py:923 appTools/ToolPaint.py:191 appTools/ToolPaint.py:848 -#: appTools/ToolSolderPaste.py:567 +#: appGUI/ObjectUI.py:956 appTools/ToolIsolation.py:776 appTools/ToolNCC.py:449 +#: appTools/ToolPaint.py:386 appTools/ToolSolderPaste.py:122 msgid "New Tool" msgstr "New Tool" -#: appGUI/ObjectUI.py:1496 appTools/ToolIsolation.py:278 -#: appTools/ToolNCC.py:296 appTools/ToolPaint.py:278 +#: appGUI/ObjectUI.py:976 msgid "" "Add a new tool to the Tool Table\n" "with the diameter specified above." @@ -6657,22 +6910,28 @@ msgstr "" "Add a new tool to the Tool Table\n" "with the diameter specified above." -#: appGUI/ObjectUI.py:1500 appTools/ToolIsolation.py:282 -#: appTools/ToolIsolation.py:634 appTools/ToolNCC.py:300 -#: appTools/ToolNCC.py:634 appTools/ToolPaint.py:282 appTools/ToolPaint.py:678 +#: appGUI/ObjectUI.py:980 appTools/ToolIsolation.py:3049 appTools/ToolNCC.py:66 +#: appTools/ToolNCC.py:3854 appTools/ToolPaint.py:140 +#: appTools/ToolPaint.py:2877 msgid "Add from DB" msgstr "Add from DB" -#: appGUI/ObjectUI.py:1502 appTools/ToolIsolation.py:284 -#: appTools/ToolNCC.py:302 appTools/ToolPaint.py:284 +#: appGUI/ObjectUI.py:982 appTools/ToolCutOut.py:1845 +#: appTools/ToolIsolation.py:3092 appTools/ToolNCC.py:3897 +#: appTools/ToolPaint.py:2911 +#, fuzzy +#| msgid "" +#| "Add a new tool to the Tool Table\n" +#| "from the Tool DataBase." msgid "" "Add a new tool to the Tool Table\n" -"from the Tool DataBase." +"from the Tool Database.\n" +"Tool database administration in Menu: Options -> Tools Database" msgstr "" "Add a new tool to the Tool Table\n" "from the Tool DataBase." -#: appGUI/ObjectUI.py:1521 +#: appGUI/ObjectUI.py:1003 msgid "" "Copy a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." @@ -6680,7 +6939,7 @@ msgstr "" "Copy a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." -#: appGUI/ObjectUI.py:1527 +#: appGUI/ObjectUI.py:1010 msgid "" "Delete a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." @@ -6688,36 +6947,62 @@ msgstr "" "Delete a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." -#: appGUI/ObjectUI.py:1574 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:89 +#: appGUI/ObjectUI.py:1047 appObjects/FlatCAMGeometry.py:388 +#: appObjects/FlatCAMGeometry.py:824 appObjects/FlatCAMGeometry.py:829 +#: appObjects/FlatCAMGeometry.py:863 appObjects/FlatCAMGeometry.py:888 +#: appObjects/FlatCAMGeometry.py:892 appTools/ToolDrilling.py:704 +#: appTools/ToolDrilling.py:710 appTools/ToolDrilling.py:753 +#: appTools/ToolDrilling.py:969 appTools/ToolDrilling.py:976 +#: appTools/ToolDrilling.py:1007 appTools/ToolDrilling.py:1019 +#: appTools/ToolDrilling.py:1023 appTools/ToolDrilling.py:2102 +#: appTools/ToolIsolation.py:525 appTools/ToolIsolation.py:633 +#: appTools/ToolIsolation.py:638 appTools/ToolIsolation.py:668 +#: appTools/ToolIsolation.py:691 appTools/ToolIsolation.py:704 +#: appTools/ToolIsolation.py:3121 appTools/ToolMilling.py:628 +#: appTools/ToolMilling.py:744 appTools/ToolMilling.py:749 +#: appTools/ToolMilling.py:779 appTools/ToolMilling.py:790 +#: appTools/ToolMilling.py:794 appTools/ToolMilling.py:1711 +#: appTools/ToolNCC.py:266 appTools/ToolNCC.py:271 appTools/ToolNCC.py:301 +#: appTools/ToolNCC.py:324 appTools/ToolNCC.py:337 appTools/ToolNCC.py:700 +#: appTools/ToolNCC.py:3926 appTools/ToolPaint.py:247 appTools/ToolPaint.py:252 +#: appTools/ToolPaint.py:282 appTools/ToolPaint.py:304 +#: appTools/ToolPaint.py:316 appTools/ToolPaint.py:654 +#: appTools/ToolPaint.py:2938 +msgid "Parameters for" +msgstr "Parameters for" + +#: appGUI/ObjectUI.py:1050 appTools/ToolDrilling.py:2105 +#: appTools/ToolIsolation.py:3124 appTools/ToolMilling.py:1714 +#: appTools/ToolNCC.py:3929 appTools/ToolPaint.py:2941 +msgid "" +"The data used for creating GCode.\n" +"Each tool store it's own set of such data." +msgstr "" +"The data used for creating GCode.\n" +"Each tool store it's own set of such data." + +#: appGUI/ObjectUI.py:1057 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:89 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:72 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:78 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:85 -#: appTools/ToolIsolation.py:219 appTools/ToolNCC.py:233 -#: appTools/ToolNCC.py:240 appTools/ToolPaint.py:215 msgid "V-Tip Dia" msgstr "V-Tip Dia" -#: appGUI/ObjectUI.py:1577 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:91 +#: appGUI/ObjectUI.py:1060 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:91 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:74 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:80 -#: appTools/ToolIsolation.py:221 appTools/ToolNCC.py:235 -#: appTools/ToolPaint.py:217 msgid "The tip diameter for V-Shape Tool" msgstr "The tip diameter for V-Shape Tool" -#: appGUI/ObjectUI.py:1589 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:101 +#: appGUI/ObjectUI.py:1072 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:101 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:84 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:91 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:99 -#: appTools/ToolIsolation.py:232 appTools/ToolNCC.py:246 -#: appTools/ToolNCC.py:254 appTools/ToolPaint.py:228 msgid "V-Tip Angle" msgstr "V-Tip Angle" -#: appGUI/ObjectUI.py:1592 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:86 +#: appGUI/ObjectUI.py:1075 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:86 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:93 -#: appTools/ToolIsolation.py:234 appTools/ToolNCC.py:248 -#: appTools/ToolPaint.py:230 msgid "" "The tip angle for V-Shape Tool.\n" "In degree." @@ -6725,10 +7010,10 @@ msgstr "" "The tip angle for V-Shape Tool.\n" "In degree." -#: appGUI/ObjectUI.py:1608 +#: appGUI/ObjectUI.py:1091 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:51 #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:61 -#: appObjects/FlatCAMGeometry.py:1238 appTools/ToolCutOut.py:141 +#: appObjects/FlatCAMGeometry.py:1312 appTools/ToolCutOut.py:1865 msgid "" "Cutting depth (negative)\n" "below the copper surface." @@ -6736,7 +7021,16 @@ msgstr "" "Cutting depth (negative)\n" "below the copper surface." -#: appGUI/ObjectUI.py:1654 +#: appGUI/ObjectUI.py:1109 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:69 +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:79 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:77 +#: appTools/ToolCutOut.py:1883 appTools/ToolDrilling.py:2150 +#: appTools/ToolMilling.py:1814 +msgid "Multi-Depth" +msgstr "Multi-Depth" + +#: appGUI/ObjectUI.py:1137 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:104 msgid "" "Height of the tool when\n" @@ -6745,7 +7039,17 @@ msgstr "" "Height of the tool when\n" "moving without cutting." -#: appGUI/ObjectUI.py:1687 +#: appGUI/ObjectUI.py:1156 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:188 +#: appTools/ToolMilling.py:1862 +msgid "" +"Cutting speed in the XY\n" +"plane in units per minute" +msgstr "" +"Cutting speed in the XY\n" +"plane in units per minute" + +#: appGUI/ObjectUI.py:1170 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:203 msgid "" "Cutting speed in the XY\n" @@ -6756,7 +7060,7 @@ msgstr "" "plane in units per minute.\n" "It is called also Plunge." -#: appGUI/ObjectUI.py:1702 +#: appGUI/ObjectUI.py:1185 #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:69 msgid "" "Cutting speed in the XY plane\n" @@ -6771,7 +7075,28 @@ msgstr "" "It is useful only for Marlin,\n" "ignore for any other cases." -#: appGUI/ObjectUI.py:1746 +#: appGUI/ObjectUI.py:1203 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:85 +#: appTools/ToolMilling.py:1914 +msgid "Re-cut" +msgstr "Re-cut" + +#: appGUI/ObjectUI.py:1205 appGUI/ObjectUI.py:1217 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:87 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:99 +#: appTools/ToolMilling.py:1916 appTools/ToolMilling.py:1929 +msgid "" +"In order to remove possible\n" +"copper leftovers where first cut\n" +"meet with last cut, we generate an\n" +"extended cut over the first cut section." +msgstr "" +"In order to remove possible\n" +"copper leftovers where first cut\n" +"meet with last cut, we generate an\n" +"extended cut over the first cut section." + +#: appGUI/ObjectUI.py:1229 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:220 msgid "" "Speed of the spindle in RPM (optional).\n" @@ -6782,7 +7107,93 @@ msgstr "" "If LASER preprocessor is used,\n" "this value is the power of laser." -#: appGUI/ObjectUI.py:1849 +#: appGUI/ObjectUI.py:1245 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:235 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:202 +#: appTools/ToolDrilling.py:2252 appTools/ToolMilling.py:1959 +msgid "" +"Pause to allow the spindle to reach its\n" +"speed before cutting." +msgstr "" +"Pause to allow the spindle to reach its\n" +"speed before cutting." + +#: appGUI/ObjectUI.py:1255 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:240 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:210 +#: appTools/ToolDrilling.py:2264 appTools/ToolMilling.py:1970 +msgid "Number of time units for spindle to dwell." +msgstr "Number of time units for spindle to dwell." + +#: appGUI/ObjectUI.py:1263 appGUI/ObjectUI.py:1962 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:117 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:108 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:333 +#: appTools/ToolDrilling.py:2447 appTools/ToolMilling.py:2129 +msgid "Probe Z depth" +msgstr "Probe Z depth" + +#: appGUI/ObjectUI.py:1265 appGUI/ObjectUI.py:1964 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:119 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:110 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:335 +#: appTools/ToolDrilling.py:2449 appTools/ToolMilling.py:2131 +msgid "" +"The maximum depth that the probe is allowed\n" +"to probe. Negative value, in current units." +msgstr "" +"The maximum depth that the probe is allowed\n" +"to probe. Negative value, in current units." + +#: appGUI/ObjectUI.py:1280 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:123 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:346 +#: appTools/ToolDrilling.py:2466 appTools/ToolMilling.py:2148 +msgid "Feedrate Probe" +msgstr "Feedrate Probe" + +#: appGUI/ObjectUI.py:1282 appGUI/ObjectUI.py:1977 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:132 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:125 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:348 +#: appTools/ToolDrilling.py:2468 appTools/ToolMilling.py:2150 +msgid "The feedrate used while the probe is probing." +msgstr "The feedrate used while the probe is probing." + +#: appGUI/ObjectUI.py:1309 appTools/ToolDrilling.py:2350 +#: appTools/ToolIsolation.py:3220 appTools/ToolMilling.py:2042 +#: appTools/ToolNCC.py:4087 appTools/ToolPaint.py:3047 +msgid "Apply parameters to all tools" +msgstr "Apply parameters to all tools" + +#: appGUI/ObjectUI.py:1312 appTools/ToolDrilling.py:2353 +#: appTools/ToolIsolation.py:3223 appTools/ToolMilling.py:2045 +#: appTools/ToolNCC.py:4090 appTools/ToolPaint.py:3050 +msgid "" +"The parameters in the current form will be applied\n" +"on all the tools from the Tool Table." +msgstr "" +"The parameters in the current form will be applied\n" +"on all the tools from the Tool Table." + +#: appGUI/ObjectUI.py:1323 appTools/ToolDrilling.py:2364 +#: appTools/ToolIsolation.py:3234 appTools/ToolMilling.py:2056 +#: appTools/ToolNCC.py:4101 appTools/ToolPaint.py:3061 +msgid "Common Parameters" +msgstr "Common Parameters" + +#: appGUI/ObjectUI.py:1325 appTools/ToolDrilling.py:2366 +#: appTools/ToolIsolation.py:3236 appTools/ToolMilling.py:2058 +#: appTools/ToolNCC.py:4103 appTools/ToolPaint.py:3063 +msgid "Parameters that are common for all tools." +msgstr "Parameters that are common for all tools." + +#: appGUI/ObjectUI.py:1330 appTools/ToolDrilling.py:2380 +#: appTools/ToolMilling.py:2063 +msgid "Tool change Z" +msgstr "Tool change Z" + +#: appGUI/ObjectUI.py:1333 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:125 msgid "" "Include tool-change sequence\n" @@ -6791,7 +7202,63 @@ msgstr "" "Include tool-change sequence\n" "in the Machine Code (Pause for tool change)." -#: appGUI/ObjectUI.py:1918 +#: appGUI/ObjectUI.py:1341 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:135 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:126 +#: appTools/ToolDrilling.py:2382 appTools/ToolMilling.py:2072 +msgid "" +"Z-axis position (height) for\n" +"tool change." +msgstr "" +"Z-axis position (height) for\n" +"tool change." + +#: appGUI/ObjectUI.py:1369 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:154 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:142 +#: appTools/ToolDrilling.py:2413 appTools/ToolMilling.py:2098 +msgid "End move Z" +msgstr "End move Z" + +#: appGUI/ObjectUI.py:1371 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:156 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:144 +#: appTools/ToolDrilling.py:2415 appTools/ToolMilling.py:2100 +msgid "" +"Height of the tool after\n" +"the last move at the end of the job." +msgstr "" +"Height of the tool after\n" +"the last move at the end of the job." + +#: appGUI/ObjectUI.py:1388 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:174 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:159 +#: appTools/ToolDrilling.py:2433 appTools/ToolMilling.py:2117 +msgid "End move X,Y" +msgstr "End move X,Y" + +#: appGUI/ObjectUI.py:1390 +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:176 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:161 +#: appTools/ToolDrilling.py:2435 appTools/ToolMilling.py:2119 +msgid "" +"End move X,Y position. In format (x,y).\n" +"If no value is entered then there is no move\n" +"on X,Y plane at the end of the job." +msgstr "" +"End move X,Y position. In format (x,y).\n" +"If no value is entered then there is no move\n" +"on X,Y plane at the end of the job." + +#: appGUI/ObjectUI.py:1395 appTools/ToolDrilling.py:2440 +#: appTools/ToolMilling.py:2124 +#, fuzzy +#| msgid "Coordinates" +msgid "X,Y coordinates" +msgstr "Coordinates" + +#: appGUI/ObjectUI.py:1403 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:257 msgid "" "The Preprocessor file that dictates\n" @@ -6800,11 +7267,220 @@ msgstr "" "The Preprocessor file that dictates\n" "the Machine Code (like GCode, RML, HPGL) output." -#: appGUI/ObjectUI.py:2064 +#: appGUI/ObjectUI.py:1419 appTools/ToolDrilling.py:2501 +#: appTools/ToolMilling.py:2194 +msgid "Add exclusion areas" +msgstr "Add exclusion areas" + +#: appGUI/ObjectUI.py:1422 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:212 +#: appTools/ToolDrilling.py:2504 appTools/ToolMilling.py:2197 +msgid "" +"Include exclusion areas.\n" +"In those areas the travel of the tools\n" +"is forbidden." +msgstr "" +"Include exclusion areas.\n" +"In those areas the travel of the tools\n" +"is forbidden." + +#: appGUI/ObjectUI.py:1443 appGUI/ObjectUI.py:1462 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:232 +#: appTools/ToolDrilling.py:2526 appTools/ToolDrilling.py:2545 +#: appTools/ToolMilling.py:2218 appTools/ToolMilling.py:2237 +msgid "Strategy" +msgstr "Strategy" + +#: appGUI/ObjectUI.py:1443 appGUI/ObjectUI.py:1474 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:244 +#: appTools/ToolDrilling.py:2526 appTools/ToolDrilling.py:2558 +#: appTools/ToolMilling.py:2218 appTools/ToolMilling.py:2249 +msgid "Over Z" +msgstr "Over Z" + +#: appGUI/ObjectUI.py:1445 appTools/ToolDrilling.py:2528 +#: appTools/ToolMilling.py:2220 +msgid "This is the Area ID." +msgstr "This is the Area ID." + +#: appGUI/ObjectUI.py:1447 appTools/ToolDrilling.py:2530 +#: appTools/ToolMilling.py:2222 +msgid "Type of the object where the exclusion area was added." +msgstr "Type of the object where the exclusion area was added." + +#: appGUI/ObjectUI.py:1449 appTools/ToolDrilling.py:2532 +#: appTools/ToolMilling.py:2224 +msgid "" +"The strategy used for exclusion area. Go around the exclusion areas or over " +"it." +msgstr "" +"The strategy used for exclusion area. Go around the exclusion areas or over " +"it." + +#: appGUI/ObjectUI.py:1451 appTools/ToolDrilling.py:2534 +#: appTools/ToolMilling.py:2226 +msgid "" +"If the strategy is to go over the area then this is the height at which the " +"tool will go to avoid the exclusion area." +msgstr "" +"If the strategy is to go over the area then this is the height at which the " +"tool will go to avoid the exclusion area." + +#: appGUI/ObjectUI.py:1463 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:233 +#: appTools/ToolDrilling.py:2546 appTools/ToolMilling.py:2238 +msgid "" +"The strategy followed when encountering an exclusion area.\n" +"Can be:\n" +"- Over -> when encountering the area, the tool will go to a set height\n" +"- Around -> will avoid the exclusion area by going around the area" +msgstr "" +"The strategy followed when encountering an exclusion area.\n" +"Can be:\n" +"- Over -> when encountering the area, the tool will go to a set height\n" +"- Around -> will avoid the exclusion area by going around the area" + +#: appGUI/ObjectUI.py:1467 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:237 +#: appTools/ToolDrilling.py:2550 appTools/ToolMilling.py:2242 +msgid "Over" +msgstr "Over" + +#: appGUI/ObjectUI.py:1468 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:238 +#: appTools/ToolDrilling.py:2551 appTools/ToolMilling.py:2243 +msgid "Around" +msgstr "Around" + +#: appGUI/ObjectUI.py:1475 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:245 +#: appTools/ToolDrilling.py:2559 appTools/ToolMilling.py:2250 +msgid "" +"The height Z to which the tool will rise in order to avoid\n" +"an interdiction area." +msgstr "" +"The height Z to which the tool will rise in order to avoid\n" +"an interdiction area." + +#: appGUI/ObjectUI.py:1485 appTools/ToolDrilling.py:2570 +#: appTools/ToolMilling.py:2260 +msgid "Add area:" +msgstr "Add area:" + +#: appGUI/ObjectUI.py:1486 appTools/ToolDrilling.py:2571 +#: appTools/ToolMilling.py:2261 +msgid "Add an Exclusion Area." +msgstr "Add an Exclusion Area." + +#: appGUI/ObjectUI.py:1492 +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:222 +#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:295 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:324 +#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:288 +#: appTools/ToolDrilling.py:2577 appTools/ToolIsolation.py:3372 +#: appTools/ToolMilling.py:2267 appTools/ToolNCC.py:4231 +#: appTools/ToolPaint.py:3163 +msgid "The kind of selection shape used for area selection." +msgstr "The kind of selection shape used for area selection." + +#: appGUI/ObjectUI.py:1502 +#: appGUI/preferences/utilities/AutoCompletePrefGroupUI.py:32 +#: appGUI/preferences/utilities/FAExcPrefGroupUI.py:42 +#: appGUI/preferences/utilities/FAGcoPrefGroupUI.py:32 +#: appGUI/preferences/utilities/FAGrbPrefGroupUI.py:32 +#: appTools/ToolDrilling.py:2588 appTools/ToolMilling.py:2277 +msgid "Delete All" +msgstr "Delete All" + +#: appGUI/ObjectUI.py:1503 appTools/ToolDrilling.py:2589 +#: appTools/ToolMilling.py:2278 +msgid "Delete all exclusion areas." +msgstr "Delete all exclusion areas." + +#: appGUI/ObjectUI.py:1506 appTools/ToolDrilling.py:2592 +#: appTools/ToolMilling.py:2281 +msgid "Delete Selected" +msgstr "Delete Selected" + +#: appGUI/ObjectUI.py:1507 appTools/ToolDrilling.py:2593 +#: appTools/ToolMilling.py:2282 +msgid "Delete all exclusion areas that are selected in the table." +msgstr "Delete all exclusion areas that are selected in the table." + +#: appGUI/ObjectUI.py:1517 +#, fuzzy +#| msgid "Add Polygon" +msgid "Add Polish" +msgstr "Add Polygon" + +#: appGUI/ObjectUI.py:1519 +msgid "" +"Will add a Paint section at the end of the GCode.\n" +"A metallic brush will clean the material after milling." +msgstr "" + +#: appGUI/ObjectUI.py:1527 +#, fuzzy +#| msgid "Diameter for the new tool." +msgid "Diameter for the polishing tool." +msgstr "Diameter for the new tool." + +#: appGUI/ObjectUI.py:1538 +#, fuzzy +#| msgid "Measure" +msgid "Pressure" +msgstr "Measure" + +#: appGUI/ObjectUI.py:1540 +msgid "" +"Negative value. The higher the absolute value\n" +"the stronger the pressure of the brush on the material." +msgstr "" + +#: appGUI/ObjectUI.py:1569 +#, fuzzy +#| msgid "" +#| "Algorithm for copper clearing:\n" +#| "- Standard: Fixed step inwards.\n" +#| "- Seed-based: Outwards from seed.\n" +#| "- Line-based: Parallel lines." +msgid "" +"Algorithm for polishing:\n" +"- Standard: Fixed step inwards.\n" +"- Seed-based: Outwards from seed.\n" +"- Line-based: Parallel lines." +msgstr "" +"Algorithm for copper clearing:\n" +"- Standard: Fixed step inwards.\n" +"- Seed-based: Outwards from seed.\n" +"- Line-based: Parallel lines." + +#: appGUI/ObjectUI.py:1613 appTools/ToolDrilling.py:2615 +#: appTools/ToolMilling.py:2304 +msgid "Generate CNCJob object" +msgstr "Generate CNCJob object" + +#: appGUI/ObjectUI.py:1616 +#, fuzzy +#| msgid "Generate CNCJob object" +msgid "Generate CNCJob object." +msgstr "Generate CNCJob object" + +#: appGUI/ObjectUI.py:1618 +msgid "" +"Add / Select 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 "" +"Add / Select at least one tool in the tool-table.\n" +"Click the # header to select all, or Ctrl + LMB\n" +"for custom selection of tools." + +#: appGUI/ObjectUI.py:1637 msgid "Launch Paint Tool in Tools Tab." msgstr "Launch Paint Tool in Tools Tab." -#: appGUI/ObjectUI.py:2072 appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:35 +#: appGUI/ObjectUI.py:1646 appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:35 msgid "" "Creates tool paths to cover the\n" "whole area of a polygon (remove\n" @@ -6816,15 +7492,11 @@ msgstr "" "all copper). You will be asked\n" "to click on the desired polygon." -#: appGUI/ObjectUI.py:2127 +#: appGUI/ObjectUI.py:1702 msgid "CNC Job Object" msgstr "CNC Job Object" -#: appGUI/ObjectUI.py:2138 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:45 -msgid "Plot kind" -msgstr "Plot kind" - -#: appGUI/ObjectUI.py:2141 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:47 +#: appGUI/ObjectUI.py:1718 appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:54 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" @@ -6836,15 +7508,15 @@ msgstr "" "above the work piece or it can be of type 'Cut',\n" "which means the moves that cut into the material." -#: appGUI/ObjectUI.py:2150 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:55 +#: appGUI/ObjectUI.py:1727 appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:62 msgid "Travel" msgstr "Travel" -#: appGUI/ObjectUI.py:2154 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:64 +#: appGUI/ObjectUI.py:1746 appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:71 msgid "Display Annotation" msgstr "Display Annotation" -#: appGUI/ObjectUI.py:2156 appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:66 +#: appGUI/ObjectUI.py:1748 appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:73 msgid "" "This selects if to display text annotation on the plot.\n" "When checked it will display numbers in order for each end\n" @@ -6854,11 +7526,11 @@ msgstr "" "When checked it will display numbers in order for each end\n" "of a travel line." -#: appGUI/ObjectUI.py:2171 -msgid "Travelled dist." -msgstr "Travelled dist." +#: appGUI/ObjectUI.py:1760 appTools/ToolProperties.py:562 +msgid "Travelled distance" +msgstr "Travelled distance" -#: appGUI/ObjectUI.py:2173 appGUI/ObjectUI.py:2178 +#: appGUI/ObjectUI.py:1762 msgid "" "This is the total travelled distance on X-Y plane.\n" "In current units." @@ -6866,11 +7538,11 @@ msgstr "" "This is the total travelled distance on X-Y plane.\n" "In current units." -#: appGUI/ObjectUI.py:2183 +#: appGUI/ObjectUI.py:1773 msgid "Estimated time" msgstr "Estimated time" -#: appGUI/ObjectUI.py:2185 appGUI/ObjectUI.py:2190 +#: appGUI/ObjectUI.py:1775 msgid "" "This is the estimated time to do the routing/drilling,\n" "without the time spent in ToolChange events." @@ -6878,11 +7550,11 @@ msgstr "" "This is the estimated time to do the routing/drilling,\n" "without the time spent in ToolChange events." -#: appGUI/ObjectUI.py:2225 +#: appGUI/ObjectUI.py:1799 msgid "CNC Tools Table" msgstr "CNC Tools Table" -#: appGUI/ObjectUI.py:2228 +#: appGUI/ObjectUI.py:1802 msgid "" "Tools in this CNCJob object used for cutting.\n" "The tool diameter is used for plotting on canvas.\n" @@ -6904,25 +7576,390 @@ msgstr "" "The 'Tool type'(TT) can be circular with 1 to 4 teeths(C1..C4),\n" "ball(B), or V-Shaped(V)." -#: appGUI/ObjectUI.py:2256 appGUI/ObjectUI.py:2267 +#: appGUI/ObjectUI.py:1830 appGUI/ObjectUI.py:1841 msgid "P" msgstr "P" -#: appGUI/ObjectUI.py:2277 +#: appGUI/ObjectUI.py:1851 msgid "Update Plot" msgstr "Update Plot" -#: appGUI/ObjectUI.py:2279 +#: appGUI/ObjectUI.py:1853 msgid "Update the plot." msgstr "Update the plot." -#: appGUI/ObjectUI.py:2286 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:30 +#: appGUI/ObjectUI.py:1862 +#, fuzzy +#| msgid "Create the QRCode object." +msgid "Edit an GCode object." +msgstr "Create the QRCode object." + +#: appGUI/ObjectUI.py:1878 +msgid "Use CNC Code Snippets" +msgstr "" + +#: appGUI/ObjectUI.py:1880 +msgid "" +"When selected, it will include CNC Code snippets (append and prepend)\n" +"defined in the Preferences." +msgstr "" + +#: appGUI/ObjectUI.py:1886 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:64 +msgid "Autolevelling" +msgstr "" + +#: appGUI/ObjectUI.py:1888 +msgid "Enable the autolevelling feature." +msgstr "" + +#: appGUI/ObjectUI.py:1905 +#, fuzzy +#| msgid "Tools Table" +msgid "Probe Points Table" +msgstr "Tools Table" + +#: appGUI/ObjectUI.py:1906 +msgid "Generate GCode that will obtain the height map" +msgstr "" + +#: appGUI/ObjectUI.py:1908 +msgid "Show" +msgstr "" + +#: appGUI/ObjectUI.py:1909 +#, fuzzy +#| msgid "Toggle the display of axis on canvas" +msgid "Toggle the display of the Probe Points table." +msgstr "Toggle the display of axis on canvas" + +#: appGUI/ObjectUI.py:1922 +#, fuzzy +#| msgid "Coordinates" +msgid "X-Y Coordinates" +msgstr "Coordinates" + +#: appGUI/ObjectUI.py:1922 +#, fuzzy +#| msgid "Light" +msgid "Height" +msgstr "Light" + +#: appGUI/ObjectUI.py:1926 +msgid "Show Voronoi diagram" +msgstr "" + +#: appGUI/ObjectUI.py:1928 +msgid "Display Voronoi diagram if there are probe points in the table." +msgstr "" + +#: appGUI/ObjectUI.py:1941 +#, fuzzy +#| msgid "Finished G-Code generation" +msgid "Probe GCode Generation" +msgstr "Finished G-Code generation" + +#: appGUI/ObjectUI.py:1943 +msgid "" +"Will create a GCode which will be sent to the controller,\n" +"either through a file or directly, with the intent to get the height map\n" +"that is to modify the original GCode to level the cutting height." +msgstr "" + +#: appGUI/ObjectUI.py:1950 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:105 +#, fuzzy +#| msgid "Probe Z depth" +msgid "Probe Z travel" +msgstr "Probe Z depth" + +#: appGUI/ObjectUI.py:1952 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:107 +#, fuzzy +#| msgid "Height (Z) for travelling between the points." +msgid "The safe Z for probe travelling between probe points." +msgstr "Height (Z) for travelling between the points." + +#: appGUI/ObjectUI.py:1975 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:130 +#, fuzzy +#| msgid "Feedrate" +msgid "Probe Feedrate" +msgstr "Feedrate" + +#: appGUI/ObjectUI.py:1991 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:71 +#, fuzzy +#| msgid "Mode:" +msgid "Mode" +msgstr "Mode:" + +#: appGUI/ObjectUI.py:1992 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:72 +msgid "" +"Choose a mode for height map generation.\n" +"- Manual: will pick a selection of probe points by clicking on canvas\n" +"- Grid: will automatically generate a grid of probe points" +msgstr "" + +#: appGUI/ObjectUI.py:1998 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:78 +#: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:74 +#: appTools/ToolCutOut.py:2082 appTools/ToolFiducials.py:801 +msgid "Manual" +msgstr "Manual" + +#: appGUI/ObjectUI.py:1999 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:79 +#, fuzzy +#| msgid "Grids" +msgid "Grid" +msgstr "Grids" + +#: appGUI/ObjectUI.py:2007 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:87 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:77 +#: appTools/ToolPanelize.py:787 +msgid "Columns" +msgstr "Columns" + +#: appGUI/ObjectUI.py:2009 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:89 +msgid "The number of grid columns." +msgstr "" + +#: appGUI/ObjectUI.py:2017 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:97 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:89 +#: appTools/ToolPanelize.py:797 +msgid "Rows" +msgstr "Rows" + +#: appGUI/ObjectUI.py:2019 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:99 +msgid "The number of gird rows." +msgstr "" + +#: appGUI/ObjectUI.py:2024 +#, fuzzy +#| msgid "Get Points" +msgid "Add Probe Points" +msgstr "Get Points" + +#: appGUI/ObjectUI.py:2032 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:146 +#, fuzzy +#| msgid "Contour" +msgid "Controller" +msgstr "Contour" + +#: appGUI/ObjectUI.py:2034 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:148 +msgid "" +"The kind of controller for which to generate\n" +"height map gcode." +msgstr "" + +#: appGUI/ObjectUI.py:2080 appGUI/ObjectUI.py:2095 +#: appObjects/FlatCAMCNCJob.py:1159 appObjects/FlatCAMCNCJob.py:1181 +#, fuzzy +#| msgid "Contour" +msgid "Control" +msgstr "Contour" + +#: appGUI/ObjectUI.py:2090 appGUI/ObjectUI.py:2097 +#: appObjects/FlatCAMCNCJob.py:1161 appObjects/FlatCAMCNCJob.py:1183 +#, fuzzy +#| msgid "Rendered" +msgid "Sender" +msgstr "Rendered" + +#: appGUI/ObjectUI.py:2111 +msgid "COM list" +msgstr "" + +#: appGUI/ObjectUI.py:2113 appGUI/ObjectUI.py:2128 +msgid "Lists the available serial ports." +msgstr "" + +#: appGUI/ObjectUI.py:2117 +msgid "Search" +msgstr "" + +#: appGUI/ObjectUI.py:2119 +msgid "Search for the available serial ports." +msgstr "" + +#: appGUI/ObjectUI.py:2126 +msgid "Baud rates" +msgstr "" + +#: appGUI/ObjectUI.py:2145 +msgid "New, custom baudrate." +msgstr "" + +#: appGUI/ObjectUI.py:2153 +msgid "Add the specified custom baudrate to the list." +msgstr "" + +#: appGUI/ObjectUI.py:2159 +#, fuzzy +#| msgid "Delete Selected" +msgid "Delete selected baudrate" +msgstr "Delete Selected" + +#: appGUI/ObjectUI.py:2163 +msgid "Reset" +msgstr "Reset" + +#: appGUI/ObjectUI.py:2165 +msgid "Software reset of the controller." +msgstr "" + +#: appGUI/ObjectUI.py:2171 appObjects/FlatCAMCNCJob.py:1175 +#, fuzzy +#| msgid "Connect" +msgid "Disconnected" +msgstr "Connect" + +#: appGUI/ObjectUI.py:2173 +#, fuzzy +#| msgid "" +#| "Create a Gerber object from the selected object, within\n" +#| "the specified box." +msgid "Connect to the selected port with the selected baud rate." +msgstr "" +"Create a Gerber object from the selected object, within\n" +"the specified box." + +#: appGUI/ObjectUI.py:2198 +msgid "Jog" +msgstr "" + +#: appGUI/ObjectUI.py:2206 +#, fuzzy +#| msgid "Zeros" +msgid "Zero Axes" +msgstr "Zeros" + +#: appGUI/ObjectUI.py:2239 +msgid "Pause/Resume" +msgstr "" + +#: appGUI/ObjectUI.py:2261 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:158 +msgid "Step" +msgstr "" + +#: appGUI/ObjectUI.py:2263 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:160 +msgid "Each jog action will move the axes with this value." +msgstr "" + +#: appGUI/ObjectUI.py:2275 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:171 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:89 +#: appTools/ToolProperties.py:529 +msgid "Feedrate" +msgstr "Feedrate" + +#: appGUI/ObjectUI.py:2277 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:173 +msgid "Feedrate when jogging." +msgstr "" + +#: appGUI/ObjectUI.py:2297 +msgid "Send Command" +msgstr "" + +#: appGUI/ObjectUI.py:2299 appGUI/ObjectUI.py:2309 +msgid "Send a custom command to GRBL." +msgstr "" + +#: appGUI/ObjectUI.py:2304 +msgid "Type GRBL command ..." +msgstr "" + +#: appGUI/ObjectUI.py:2307 +msgid "Send" +msgstr "" + +#: appGUI/ObjectUI.py:2315 +#, fuzzy +#| msgid "Text to PDF parameters" +msgid "Get Config parameter" +msgstr "Text to PDF parameters" + +#: appGUI/ObjectUI.py:2317 +msgid "A GRBL configuration parameter." +msgstr "" + +#: appGUI/ObjectUI.py:2322 +msgid "Type GRBL parameter ..." +msgstr "" + +#: appGUI/ObjectUI.py:2325 +#, fuzzy +#| msgid "Geo" +msgid "Get" +msgstr "Geo" + +#: appGUI/ObjectUI.py:2327 +msgid "Get the value of a specified GRBL parameter." +msgstr "" + +#: appGUI/ObjectUI.py:2335 +#, fuzzy +#| msgid "Gerber Export" +msgid "Get Report" +msgstr "Gerber Export" + +#: appGUI/ObjectUI.py:2337 +msgid "Print in shell the GRBL report." +msgstr "" + +#: appGUI/ObjectUI.py:2342 +msgid "Apply AutoLevelling" +msgstr "" + +#: appGUI/ObjectUI.py:2344 +msgid "" +"Will send the probing GCode to the GRBL controller,\n" +"wait for the Z probing data and then apply this data\n" +"over the original GCode therefore doing autolevelling." +msgstr "" + +#: appGUI/ObjectUI.py:2354 +#, fuzzy +#| msgid "Starting G-Code" +msgid "Save Probing GCode" +msgstr "Starting G-Code" + +#: appGUI/ObjectUI.py:2362 +msgid "View/Edit the probing GCode." +msgstr "" + +#: appGUI/ObjectUI.py:2369 appObjects/FlatCAMCNCJob.py:1579 +#: appObjects/FlatCAMCNCJob.py:1583 +#, fuzzy +#| msgid "Import List" +msgid "Import Height Map" +msgstr "Import List" + +#: appGUI/ObjectUI.py:2371 +msgid "" +"Import the file that has the Z heights\n" +"obtained through probing and then apply this data\n" +"over the original GCode therefore\n" +"doing autolevelling." +msgstr "" + +#: appGUI/ObjectUI.py:2389 msgid "Export CNC Code" msgstr "Export CNC Code" -#: appGUI/ObjectUI.py:2288 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:32 +#: appGUI/ObjectUI.py:2391 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:37 #: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:33 msgid "" "Export and save G-Code to\n" @@ -6931,210 +7968,11 @@ msgstr "" "Export and save G-Code to\n" "make this object to a file." -#: appGUI/ObjectUI.py:2294 -msgid "Prepend to CNC Code" -msgstr "Prepend to CNC Code" - -#: appGUI/ObjectUI.py:2296 appGUI/ObjectUI.py:2303 -#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:49 -msgid "" -"Type here any G-Code commands you would\n" -"like to add at the beginning of the G-Code file." -msgstr "" -"Type here any G-Code commands you would\n" -"like to add at the beginning of the G-Code file." - -#: appGUI/ObjectUI.py:2309 -msgid "Append to CNC Code" -msgstr "Append to CNC Code" - -#: appGUI/ObjectUI.py:2311 appGUI/ObjectUI.py:2319 -#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:65 -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 "" -"Type here any G-Code commands you would\n" -"like to append to the generated file.\n" -"I.e.: M2 (End of program)" - -#: appGUI/ObjectUI.py:2333 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:38 -msgid "Toolchange G-Code" -msgstr "Toolchange G-Code" - -#: appGUI/ObjectUI.py:2336 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:41 -msgid "" -"Type here any G-Code commands you would\n" -"like to be executed when Toolchange event is encountered.\n" -"This will constitute a Custom Toolchange GCode,\n" -"or a Toolchange Macro.\n" -"The FlatCAM variables are surrounded by '%' symbol.\n" -"\n" -"WARNING: it can be used only with a preprocessor file\n" -"that has 'toolchange_custom' in it's name and this is built\n" -"having as template the 'Toolchange Custom' posprocessor file." -msgstr "" -"Type here any G-Code commands you would\n" -"like to be executed when Toolchange event is encountered.\n" -"This will constitute a Custom Toolchange GCode,\n" -"or a Toolchange Macro.\n" -"The FlatCAM variables are surrounded by '%' symbol.\n" -"\n" -"WARNING: it can be used only with a preprocessor file\n" -"that has 'toolchange_custom' in it's name and this is built\n" -"having as template the 'Toolchange Custom' posprocessor file." - -#: appGUI/ObjectUI.py:2351 -msgid "" -"Type here any G-Code commands you would\n" -"like to be executed when Toolchange event is encountered.\n" -"This will constitute a Custom Toolchange GCode,\n" -"or a Toolchange Macro.\n" -"The FlatCAM variables are surrounded by '%' symbol.\n" -"WARNING: it can be used only with a preprocessor file\n" -"that has 'toolchange_custom' in it's name." -msgstr "" -"Type here any G-Code commands you would\n" -"like to be executed when Toolchange event is encountered.\n" -"This will constitute a Custom Toolchange GCode,\n" -"or a Toolchange Macro.\n" -"The FlatCAM variables are surrounded by '%' symbol.\n" -"WARNING: it can be used only with a preprocessor file\n" -"that has 'toolchange_custom' in it's name." - -#: appGUI/ObjectUI.py:2366 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:80 -msgid "Use Toolchange Macro" -msgstr "Use Toolchange Macro" - -#: appGUI/ObjectUI.py:2368 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:82 -msgid "" -"Check this box if you want to use\n" -"a Custom Toolchange GCode (macro)." -msgstr "" -"Check this box if you want to use\n" -"a Custom Toolchange GCode (macro)." - -#: appGUI/ObjectUI.py:2376 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:94 -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 "" -"A list of the FlatCAM variables that can be used\n" -"in the Toolchange event.\n" -"They have to be surrounded by the '%' symbol" - -#: appGUI/ObjectUI.py:2383 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:101 -#: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:30 -#: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:31 -#: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:31 -#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:37 -#: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:36 -#: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:36 -#: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:36 -#: appGUI/preferences/tools/Tools2InvertPrefGroupUI.py:31 -#: appGUI/preferences/tools/Tools2OptimalPrefGroupUI.py:31 -#: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:36 -#: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:31 -#: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:30 -#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:31 -#: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:35 -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:32 -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:31 -#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:30 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:31 -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:31 -#: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:31 -#: appGUI/preferences/tools/ToolsSubPrefGroupUI.py:31 -#: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:31 -#: appTools/ToolCalibration.py:67 appTools/ToolCopperThieving.py:93 -#: appTools/ToolCorners.py:115 appTools/ToolEtchCompensation.py:138 -#: appTools/ToolFiducials.py:152 appTools/ToolInvertGerber.py:85 -#: appTools/ToolQRCode.py:114 -msgid "Parameters" -msgstr "Parameters" - -#: appGUI/ObjectUI.py:2386 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:106 -msgid "FlatCAM CNC parameters" -msgstr "FlatCAM CNC parameters" - -#: appGUI/ObjectUI.py:2387 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:111 -msgid "tool number" -msgstr "tool number" - -#: appGUI/ObjectUI.py:2388 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:112 -msgid "tool diameter" -msgstr "tool diameter" - -#: appGUI/ObjectUI.py:2389 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:113 -msgid "for Excellon, total number of drills" -msgstr "for Excellon, total number of drills" - -#: appGUI/ObjectUI.py:2391 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:115 -msgid "X coord for Toolchange" -msgstr "X coord for Toolchange" - -#: appGUI/ObjectUI.py:2392 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:116 -msgid "Y coord for Toolchange" -msgstr "Y coord for Toolchange" - -#: appGUI/ObjectUI.py:2393 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:118 -msgid "Z coord for Toolchange" -msgstr "Z coord for Toolchange" - -#: appGUI/ObjectUI.py:2394 -msgid "depth where to cut" -msgstr "depth where to cut" - -#: appGUI/ObjectUI.py:2395 -msgid "height where to travel" -msgstr "height where to travel" - -#: appGUI/ObjectUI.py:2396 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:121 -msgid "the step value for multidepth cut" -msgstr "the step value for multidepth cut" - -#: appGUI/ObjectUI.py:2398 -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:123 -msgid "the value for the spindle speed" -msgstr "the value for the spindle speed" - #: appGUI/ObjectUI.py:2400 -msgid "time to dwell to allow the spindle to reach it's set RPM" -msgstr "time to dwell to allow the spindle to reach it's set RPM" - -#: appGUI/ObjectUI.py:2416 -msgid "View CNC Code" -msgstr "View CNC Code" - -#: appGUI/ObjectUI.py:2418 -msgid "" -"Opens TAB to view/modify/print G-Code\n" -"file." -msgstr "" -"Opens TAB to view/modify/print G-Code\n" -"file." - -#: appGUI/ObjectUI.py:2423 msgid "Save CNC Code" msgstr "Save CNC Code" -#: appGUI/ObjectUI.py:2425 +#: appGUI/ObjectUI.py:2403 msgid "" "Opens dialog to save G-Code\n" "file." @@ -7142,76 +7980,82 @@ msgstr "" "Opens dialog to save G-Code\n" "file." -#: appGUI/ObjectUI.py:2459 +#: appGUI/ObjectUI.py:2410 +#, fuzzy +#| msgid "View CNC Code" +msgid "Review CNC Code." +msgstr "View CNC Code" + +#: appGUI/ObjectUI.py:2464 msgid "Script Object" msgstr "Script Object" -#: appGUI/ObjectUI.py:2479 appGUI/ObjectUI.py:2553 +#: appGUI/ObjectUI.py:2484 appGUI/ObjectUI.py:2558 msgid "Auto Completer" msgstr "Auto Completer" -#: appGUI/ObjectUI.py:2481 +#: appGUI/ObjectUI.py:2486 msgid "This selects if the auto completer is enabled in the Script Editor." msgstr "This selects if the auto completer is enabled in the Script Editor." -#: appGUI/ObjectUI.py:2526 +#: appGUI/ObjectUI.py:2531 msgid "Document Object" msgstr "Document Object" -#: appGUI/ObjectUI.py:2555 +#: appGUI/ObjectUI.py:2560 msgid "This selects if the auto completer is enabled in the Document Editor." msgstr "This selects if the auto completer is enabled in the Document Editor." -#: appGUI/ObjectUI.py:2573 +#: appGUI/ObjectUI.py:2578 msgid "Font Type" msgstr "Font Type" -#: appGUI/ObjectUI.py:2590 +#: appGUI/ObjectUI.py:2595 #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:189 msgid "Font Size" msgstr "Font Size" -#: appGUI/ObjectUI.py:2626 +#: appGUI/ObjectUI.py:2631 msgid "Alignment" msgstr "Alignment" -#: appGUI/ObjectUI.py:2631 +#: appGUI/ObjectUI.py:2636 msgid "Align Left" msgstr "Align Left" -#: appGUI/ObjectUI.py:2636 app_Main.py:4838 +#: appGUI/ObjectUI.py:2641 app_Main.py:4993 msgid "Center" msgstr "Center" -#: appGUI/ObjectUI.py:2641 +#: appGUI/ObjectUI.py:2646 msgid "Align Right" msgstr "Align Right" -#: appGUI/ObjectUI.py:2646 +#: appGUI/ObjectUI.py:2651 msgid "Justify" msgstr "Justify" -#: appGUI/ObjectUI.py:2653 +#: appGUI/ObjectUI.py:2658 msgid "Font Color" msgstr "Font Color" -#: appGUI/ObjectUI.py:2655 +#: appGUI/ObjectUI.py:2660 msgid "Set the font color for the selected text" msgstr "Set the font color for the selected text" -#: appGUI/ObjectUI.py:2669 +#: appGUI/ObjectUI.py:2674 msgid "Selection Color" msgstr "Selection Color" -#: appGUI/ObjectUI.py:2671 +#: appGUI/ObjectUI.py:2676 msgid "Set the selection color when doing text selection." msgstr "Set the selection color when doing text selection." -#: appGUI/ObjectUI.py:2685 +#: appGUI/ObjectUI.py:2690 msgid "Tab Size" msgstr "Tab Size" -#: appGUI/ObjectUI.py:2687 +#: appGUI/ObjectUI.py:2692 msgid "Set the tab size. In pixels. Default value is 80 pixels." msgstr "Set the tab size. In pixels. Default value is 80 pixels." @@ -7239,7 +8083,7 @@ msgstr "Grid enabled." msgid "Grid disabled." msgstr "Grid disabled." -#: appGUI/PlotCanvasLegacy.py:1523 +#: appGUI/PlotCanvasLegacy.py:1530 msgid "" "Could not annotate due of a difference between the number of text elements " "and the number of text positions." @@ -7247,41 +8091,41 @@ msgstr "" "Could not annotate due of a difference between the number of text elements " "and the number of text positions." -#: appGUI/preferences/PreferencesUIManager.py:861 +#: appGUI/preferences/PreferencesUIManager.py:896 msgid "Preferences applied." msgstr "Preferences applied." -#: appGUI/preferences/PreferencesUIManager.py:881 +#: appGUI/preferences/PreferencesUIManager.py:916 msgid "Are you sure you want to continue?" msgstr "Are you sure you want to continue?" -#: appGUI/preferences/PreferencesUIManager.py:882 +#: appGUI/preferences/PreferencesUIManager.py:917 msgid "Application will restart" msgstr "Application will restart" -#: appGUI/preferences/PreferencesUIManager.py:980 +#: appGUI/preferences/PreferencesUIManager.py:1015 msgid "Preferences closed without saving." msgstr "Preferences closed without saving." -#: appGUI/preferences/PreferencesUIManager.py:992 +#: appGUI/preferences/PreferencesUIManager.py:1027 msgid "Preferences default values are restored." msgstr "Preferences default values are restored." -#: appGUI/preferences/PreferencesUIManager.py:1023 app_Main.py:2501 -#: app_Main.py:2569 +#: appGUI/preferences/PreferencesUIManager.py:1058 app_Main.py:2622 +#: app_Main.py:2690 msgid "Failed to write defaults to file." msgstr "Failed to write defaults to file." -#: appGUI/preferences/PreferencesUIManager.py:1027 -#: appGUI/preferences/PreferencesUIManager.py:1140 +#: appGUI/preferences/PreferencesUIManager.py:1062 +#: appGUI/preferences/PreferencesUIManager.py:1176 msgid "Preferences saved." msgstr "Preferences saved." -#: appGUI/preferences/PreferencesUIManager.py:1077 +#: appGUI/preferences/PreferencesUIManager.py:1112 msgid "Preferences edited but not saved." msgstr "Preferences edited but not saved." -#: appGUI/preferences/PreferencesUIManager.py:1125 +#: appGUI/preferences/PreferencesUIManager.py:1161 msgid "" "One or more values are changed.\n" "Do you want to save the Preferences?" @@ -7293,62 +8137,133 @@ msgstr "" msgid "CNC Job Adv. Options" msgstr "CNC Job Adv. Options" -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:64 -msgid "" -"Type here any G-Code commands you would like to be executed when Toolchange " -"event is encountered.\n" -"This will constitute a Custom Toolchange GCode, or a Toolchange Macro.\n" -"The FlatCAM variables are surrounded by '%' symbol.\n" -"WARNING: it can be used only with a preprocessor file that has " -"'toolchange_custom' in it's name." -msgstr "" -"Type here any G-Code commands you would like to be executed when Toolchange " -"event is encountered.\n" -"This will constitute a Custom Toolchange GCode, or a Toolchange Macro.\n" -"The FlatCAM variables are surrounded by '%' symbol.\n" -"WARNING: it can be used only with a preprocessor file that has " -"'toolchange_custom' in it's name." +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:35 +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:31 +#: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:30 +#: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:31 +#: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:31 +#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:37 +#: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:36 +#: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:36 +#: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:36 +#: appGUI/preferences/tools/Tools2InvertPrefGroupUI.py:31 +#: appGUI/preferences/tools/Tools2OptimalPrefGroupUI.py:31 +#: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:36 +#: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:31 +#: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:30 +#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:35 +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:32 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:30 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsSubPrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:31 +#: appTools/ToolCalibration.py:762 appTools/ToolCopperThieving.py:1182 +#: appTools/ToolCorners.py:377 appTools/ToolEtchCompensation.py:356 +#: appTools/ToolFiducials.py:763 appTools/ToolInvertGerber.py:228 +#: appTools/ToolQRCode.py:692 +msgid "Parameters" +msgstr "Parameters" -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:119 -msgid "Z depth for the cut" -msgstr "Z depth for the cut" - -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:120 -msgid "Z height for travel" -msgstr "Z height for travel" - -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:126 -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" - -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:145 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:43 msgid "Annotation Size" msgstr "Annotation Size" -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:147 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:45 msgid "The font size of the annotation text. In pixels." msgstr "The font size of the annotation text. In pixels." -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:157 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:54 msgid "Annotation Color" msgstr "Annotation Color" -#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:159 +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:56 msgid "Set the font color for the annotation texts." msgstr "Set the font color for the annotation texts." +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:66 +#, fuzzy +#| msgid "Parameters for this tool" +msgid "Parameters for the autolevelling." +msgstr "Parameters for this tool" + +#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:186 +msgid "Safe height (Z) distance when jogging to origin." +msgstr "" + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:27 +#, fuzzy +#| msgid "Code Editor" +msgid "CNC Job Editor" +msgstr "Code Editor" + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:33 +#: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:33 +#, fuzzy +#| msgid "A list of Gerber Editor parameters." +msgid "A list of Editor parameters." +msgstr "A list of Gerber Editor parameters." + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:46 +msgid "Prepend to G-Code" +msgstr "Prepend to G-Code" + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:48 +msgid "" +"Type here any G-Code commands you would\n" +"like to add at the beginning of the G-Code file." +msgstr "" +"Type here any G-Code commands you would\n" +"like to add at the beginning of the G-Code file." + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:55 +msgid "" +"Type here any G-Code commands you would like to add at the beginning of the " +"G-Code file." +msgstr "" +"Type here any G-Code commands you would like to add at the beginning of the " +"G-Code file." + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:62 +msgid "Append to G-Code" +msgstr "Append to G-Code" + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:64 +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 "" +"Type here any G-Code commands you would\n" +"like to append to the generated file.\n" +"I.e.: M2 (End of program)" + +#: appGUI/preferences/cncjob/CNCJobEditorPrefGroupUI.py:72 +msgid "" +"Type here any G-Code commands you would like to append to the generated " +"file.\n" +"I.e.: M2 (End of program)" +msgstr "" +"Type here any G-Code commands you would like to append to the generated " +"file.\n" +"I.e.: M2 (End of program)" + #: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:26 msgid "CNC Job General" msgstr "CNC Job General" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:77 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:57 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:47 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:59 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:59 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:45 msgid "Circle Steps" msgstr "Circle Steps" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:79 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:49 msgid "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." @@ -7356,11 +8271,11 @@ msgstr "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:88 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:58 msgid "Travel dia" msgstr "Travel dia" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:90 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:60 msgid "" "The width of the travel lines to be\n" "rendered in the plot." @@ -7368,16 +8283,16 @@ msgstr "" "The width of the travel lines to be\n" "rendered in the plot." -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:103 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:73 msgid "G-code Decimals" msgstr "G-code Decimals" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:106 -#: appTools/ToolFiducials.py:71 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:76 +#: appTools/ToolFiducials.py:682 msgid "Coordinates" msgstr "Coordinates" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:108 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:78 msgid "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" @@ -7385,12 +8300,7 @@ msgstr "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:119 -#: appTools/ToolProperties.py:519 -msgid "Feedrate" -msgstr "Feedrate" - -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:121 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:91 msgid "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" @@ -7398,11 +8308,11 @@ msgstr "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:132 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:102 msgid "Coordinates type" msgstr "Coordinates type" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:134 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:104 msgid "" "The type of coordinates to be used in Gcode.\n" "Can be:\n" @@ -7414,19 +8324,19 @@ msgstr "" "- Absolute G90 -> the reference is the origin x=0, y=0\n" "- Incremental G91 -> the reference is the previous position" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:140 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:110 msgid "Absolute G90" msgstr "Absolute G90" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:141 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:111 msgid "Incremental G91" msgstr "Incremental G91" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:151 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:121 msgid "Force Windows style line-ending" msgstr "Force Windows style line-ending" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:153 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:123 msgid "" "When checked will force a Windows style line-ending\n" "(\\r\\n) on non-Windows OS's." @@ -7434,38 +8344,38 @@ msgstr "" "When checked will force a Windows style line-ending\n" "(\\r\\n) on non-Windows OS's." -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:165 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:135 msgid "Travel Line Color" msgstr "Travel Line Color" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:169 -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:210 -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:271 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:139 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:180 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:275 #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:154 #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:195 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:94 -#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:153 -#: appTools/ToolRulesCheck.py:186 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:158 +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:169 +#: appTools/ToolRulesCheck.py:1288 msgid "Outline" msgstr "Outline" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:171 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:141 msgid "Set the travel line color for plotted objects." msgstr "Set the travel line color for plotted objects." -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:179 -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:220 -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:281 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:149 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:190 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:285 #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:163 #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:205 -#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:163 +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:179 msgid "Fill" msgstr "Fill" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:181 -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:222 -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:283 -#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:165 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:151 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:192 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:287 +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:181 msgid "" "Set the fill color for plotted objects.\n" "First 6 digits are the color and the last 2\n" @@ -7475,28 +8385,28 @@ msgstr "" "First 6 digits are the color and the last 2\n" "digits are for alpha (transparency) level." -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:191 -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:293 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:161 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:297 #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:176 #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:218 -#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:175 +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:191 msgid "Alpha" msgstr "Alpha" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:193 -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:295 -#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:177 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:163 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:299 +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:193 msgid "Set the fill transparency for plotted objects." msgstr "Set the fill transparency for plotted objects." -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:206 -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:267 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:90 -#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:149 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:176 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:271 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:154 +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:165 msgid "Object Color" msgstr "Object Color" -#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:212 +#: appGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py:182 msgid "Set the color for plotted objects." msgstr "Set the color for plotted objects." @@ -7508,31 +8418,9 @@ msgstr "CNC Job Options" msgid "Export G-Code" msgstr "Export G-Code" -#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:47 -msgid "Prepend to G-Code" -msgstr "Prepend to G-Code" - -#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:56 -msgid "" -"Type here any G-Code commands you would like to add at the beginning of the " -"G-Code file." -msgstr "" -"Type here any G-Code commands you would like to add at the beginning of the " -"G-Code file." - -#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:63 -msgid "Append to G-Code" -msgstr "Append to G-Code" - -#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:73 -msgid "" -"Type here any G-Code commands you would like to append to the generated " -"file.\n" -"I.e.: M2 (End of program)" -msgstr "" -"Type here any G-Code commands you would like to append to the generated " -"file.\n" -"I.e.: M2 (End of program)" +#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:52 +msgid "Plot kind" +msgstr "Plot kind" #: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:27 msgid "Excellon Adv. Options" @@ -7541,6 +8429,7 @@ msgstr "Excellon Adv. Options" #: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:34 #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:34 #: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:31 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:276 msgid "Advanced Options" msgstr "Advanced Options" @@ -7554,70 +8443,10 @@ msgstr "" "Those parameters are available only for\n" "Advanced App. Level." -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:59 -msgid "Toolchange X,Y" -msgstr "Toolchange X,Y" - -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:61 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:48 -msgid "Toolchange X,Y position." -msgstr "Toolchange X,Y position." - -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:121 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:137 -msgid "Spindle direction" -msgstr "Spindle direction" - -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:123 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:139 -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" - -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:134 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:151 -msgid "Fast Plunge" -msgstr "Fast Plunge" - -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:136 -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:153 -msgid "" -"By checking this, the vertical move from\n" -"Z_Toolchange to Z_move is done with G0,\n" -"meaning the fastest speed available.\n" -"WARNING: the move is done at Toolchange X,Y coords." -msgstr "" -"By checking this, the vertical move from\n" -"Z_Toolchange to Z_move is done with G0,\n" -"meaning the fastest speed available.\n" -"WARNING: the move is done at Toolchange X,Y coords." - -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:143 -msgid "Fast Retract" -msgstr "Fast Retract" - -#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:145 -msgid "" -"Exit hole strategy.\n" -" - When uncheked, while exiting the drilled hole the drill bit\n" -"will travel slow, with set feedrate (G1), up to zero depth and then\n" -"travel as fast as possible (G0) to the Z Move (travel height).\n" -" - When checked the travel from Z cut (cut depth) to Z_move\n" -"(travel height) is done as fast as possible (G0) in one move." -msgstr "" -"Exit hole strategy.\n" -" - When uncheked, while exiting the drilled hole the drill bit\n" -"will travel slow, with set feedrate (G1), up to zero depth and then\n" -"travel as fast as possible (G0) to the Z Move (travel height).\n" -" - When checked the travel from Z cut (cut depth) to Z_move\n" -"(travel height) is done as fast as possible (G0) in one move." +#: appGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py:48 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:52 +msgid "Table Show/Hide" +msgstr "Table Show/Hide" #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:32 msgid "A list of Excellon Editor parameters." @@ -7729,8 +8558,8 @@ msgstr "" #: appGUI/preferences/general/GeneralAppPrefGroupUI.py:39 #: appGUI/preferences/gerber/GerberExpPrefGroupUI.py:42 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:82 -#: appTools/ToolDistance.py:56 appTools/ToolDistanceMin.py:49 -#: appTools/ToolPcbWizard.py:127 appTools/ToolProperties.py:154 +#: appTools/ToolDistance.py:562 appTools/ToolDistanceMin.py:237 +#: appTools/ToolPcbWizard.py:455 appTools/ToolProperties.py:157 msgid "Units" msgstr "Units" @@ -7744,7 +8573,7 @@ msgstr "The units used in the Excellon file." #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:182 #: appGUI/preferences/gerber/GerberExpPrefGroupUI.py:47 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:87 -#: appTools/ToolCalculators.py:61 appTools/ToolPcbWizard.py:125 +#: appTools/ToolCalculators.py:187 appTools/ToolPcbWizard.py:453 msgid "INCH" msgstr "INCH" @@ -7753,7 +8582,7 @@ msgstr "INCH" #: appGUI/preferences/general/GeneralAppPrefGroupUI.py:43 #: appGUI/preferences/gerber/GerberExpPrefGroupUI.py:48 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:88 -#: appTools/ToolCalculators.py:62 appTools/ToolPcbWizard.py:126 +#: appTools/ToolCalculators.py:188 appTools/ToolPcbWizard.py:454 msgid "MM" msgstr "MM" @@ -7848,7 +8677,7 @@ msgstr "" #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:167 #: appGUI/preferences/gerber/GerberExpPrefGroupUI.py:106 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:107 -#: appTools/ToolPcbWizard.py:111 +#: appTools/ToolPcbWizard.py:439 msgid "LZ" msgstr "LZ" @@ -7856,7 +8685,7 @@ msgstr "LZ" #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:168 #: appGUI/preferences/gerber/GerberExpPrefGroupUI.py:107 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:108 -#: appTools/ToolPcbWizard.py:112 +#: appTools/ToolPcbWizard.py:440 msgid "TZ" msgstr "TZ" @@ -7906,7 +8735,7 @@ msgid "Excellon General" msgstr "Excellon General" #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:54 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:45 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:47 #: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:52 msgid "M-Color" msgstr "M-Color" @@ -8016,15 +8845,32 @@ msgid "Update Export settings" msgstr "Update Export settings" #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:210 -msgid "Excellon Optimization" -msgstr "Excellon Optimization" +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:91 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:110 +#: appTools/ToolPanelize.py:821 +#, fuzzy +#| msgid "Optimization Time" +msgid "Path Optimization" +msgstr "Optimization Time" #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:213 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:94 msgid "Algorithm:" msgstr "Algorithm:" #: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:215 -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:231 +#, fuzzy +#| msgid "" +#| "This sets the optimization type for the Excellon drill path.\n" +#| "If <> is checked then Google OR-Tools algorithm with\n" +#| "MetaHeuristic Guided Local Path is used. Default search time is 3sec.\n" +#| "If <> is checked then Google OR-Tools Basic algorithm is used.\n" +#| "If <> is checked then Travelling Salesman algorithm is used for\n" +#| "drill path optimization.\n" +#| "\n" +#| "If this control is disabled, then FlatCAM works in 32bit mode and it " +#| "uses\n" +#| "Travelling Salesman algorithm for path optimization." msgid "" "This sets the optimization type for the Excellon drill path.\n" "If <> is checked then Google OR-Tools algorithm with\n" @@ -8033,8 +8879,7 @@ msgid "" "If <> is checked then Travelling Salesman algorithm is used for\n" "drill path optimization.\n" "\n" -"If this control is disabled, then FlatCAM works in 32bit mode and it uses\n" -"Travelling Salesman algorithm for path optimization." +"Some options are disabled when FlatCAM works in 32bit mode." msgstr "" "This sets the optimization type for the Excellon drill path.\n" "If <> is checked then Google OR-Tools algorithm with\n" @@ -8046,28 +8891,42 @@ msgstr "" "If this control is disabled, then FlatCAM works in 32bit mode and it uses\n" "Travelling Salesman algorithm for path optimization." -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:226 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:225 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:310 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:314 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:109 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:171 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:175 msgid "MetaHeuristic" msgstr "MetaHeuristic" -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:227 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:226 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:310 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:314 #: appGUI/preferences/general/GeneralAppPrefGroupUI.py:104 -#: appObjects/FlatCAMExcellon.py:694 appObjects/FlatCAMGeometry.py:568 -#: appObjects/FlatCAMGerber.py:223 appTools/ToolIsolation.py:806 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:110 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:171 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:175 +#: appObjects/FlatCAMExcellon.py:154 appObjects/FlatCAMGeometry.py:560 +#: appObjects/FlatCAMGerber.py:167 appTools/ToolDrilling.py:305 +#: appTools/ToolIsolation.py:241 appTools/ToolMilling.py:294 msgid "Basic" msgstr "Basic" -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:228 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:227 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:111 msgid "TSA" msgstr "TSA" -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:245 -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:245 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:233 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:117 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:238 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:209 msgid "Duration" msgstr "Duration" -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:248 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:236 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:119 msgid "" "When OR-Tools Metaheuristic (MH) is enabled there is a\n" "maximum threshold for how much time is spent doing the\n" @@ -8079,9 +8938,30 @@ msgstr "" "path optimization. This max duration is set here.\n" "In seconds." -#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:273 -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:96 -#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:155 +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:255 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:138 +#, fuzzy +#| msgid "Plot Options" +msgid "Join Option" +msgstr "Plot Options" + +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:258 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:141 +#, fuzzy +#| msgid "Rules Tool" +msgid "Fuse Tools" +msgstr "Rules Tool" + +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:260 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:143 +msgid "" +"When checked the joined (merged) object tools\n" +"will be merged also but only if they share some of their attributes." +msgstr "" + +#: appGUI/preferences/excellon/ExcellonGenPrefGroupUI.py:277 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:160 +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:171 msgid "Set the line color for plotted objects." msgstr "Set the line color for plotted objects." @@ -8102,57 +8982,63 @@ msgstr "" "Parameters used to create a CNC Job object\n" "for this drill object." -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:152 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:122 -msgid "Tool change" -msgstr "Tool change" - -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:236 -#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:233 -msgid "Enable Dwell" -msgstr "Enable Dwell" - -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:259 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:48 +#: appTools/ToolMilling.py:1740 msgid "" -"The preprocessor JSON file that dictates\n" -"Gcode output." +"Operation type:\n" +"- Drilling -> will drill the drills/slots associated with this tool\n" +"- Milling -> will mill the drills/slots" msgstr "" -"The preprocessor JSON file that dictates\n" -"Gcode output." +"Operation type:\n" +"- Drilling -> will drill the drills/slots associated with this tool\n" +"- Milling -> will mill the drills/slots" -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:270 -msgid "Gcode" -msgstr "Gcode" - -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:272 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:64 +#: appTools/ToolMilling.py:1762 msgid "" -"Choose what to use for GCode generation:\n" -"'Drills', 'Slots' or 'Both'.\n" -"When choosing 'Slots' or 'Both', slots will be\n" -"converted to drills." +"Milling type:\n" +"- Drills -> will mill the drills associated with this tool\n" +"- Slots -> will mill the slots associated with this tool\n" +"- Both -> will mill both drills and mills or whatever is available" msgstr "" -"Choose what to use for GCode generation:\n" -"'Drills', 'Slots' or 'Both'.\n" -"When choosing 'Slots' or 'Both', slots will be\n" -"converted to drills." +"Milling type:\n" +"- Drills -> will mill the drills associated with this tool\n" +"- Slots -> will mill the slots associated with this tool\n" +"- Both -> will mill both drills and mills or whatever is available" -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:288 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:73 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:199 +#: appTools/ToolFilm.py:958 appTools/ToolMilling.py:1771 +msgid "Both" +msgstr "Both" + +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:80 +#: appTools/ToolMilling.py:1779 +msgid "Milling Diameter" +msgstr "Milling Diameter" + +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:82 +#: appTools/ToolMilling.py:1781 +msgid "The diameter of the tool who will do the milling" +msgstr "The diameter of the tool who will do the milling" + +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:93 msgid "Mill Holes" msgstr "Mill Holes" -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:290 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:95 msgid "Create Geometry for milling holes." msgstr "Create Geometry for milling holes." -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:294 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:99 msgid "Drill Tool dia" msgstr "Drill Tool dia" -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:305 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:110 msgid "Slot Tool dia" msgstr "Slot Tool dia" -#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:307 +#: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:112 msgid "" "Diameter of the cutting tool\n" "when milling slots." @@ -8211,7 +9097,7 @@ msgstr "Orientation" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:172 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:228 -#: appTools/ToolFilm.py:405 +#: appTools/ToolFilm.py:1123 msgid "" "Can be:\n" "- Portrait\n" @@ -8222,16 +9108,16 @@ msgstr "" "- Landscape" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:176 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:154 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:168 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:232 -#: appTools/ToolFilm.py:409 +#: appTools/ToolFilm.py:1127 msgid "Portrait" msgstr "Portrait" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:177 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:155 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:169 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:233 -#: appTools/ToolFilm.py:410 +#: appTools/ToolFilm.py:1128 msgid "Landscape" msgstr "Landscape" @@ -8250,6 +9136,7 @@ msgstr "" "and include the Project, Selected and Tool tabs." #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:214 +#: appTools/ToolDblSided.py:673 appTools/ToolDblSided.py:847 msgid "Axis" msgstr "Axis" @@ -8296,12 +9183,12 @@ msgstr "" "- Big -> Infinite lines" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:292 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:193 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:207 msgid "Small" msgstr "Small" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:293 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:194 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:208 msgid "Big" msgstr "Big" @@ -8349,12 +9236,12 @@ msgstr "" "- RMB --> Right Mouse Button" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:356 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:226 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:240 msgid "MMB" msgstr "MMB" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:357 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:227 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:241 msgid "RMB" msgstr "RMB" @@ -8367,12 +9254,12 @@ msgid "Select the key used for multiple selection." msgstr "Select the key used for multiple selection." #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:367 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:233 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:247 msgid "CTRL" msgstr "CTRL" #: appGUI/preferences/general/GeneralAPPSetGroupUI.py:368 -#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:234 +#: appGUI/preferences/general/GeneralAppSettingsGroupUI.py:248 msgid "SHIFT" msgstr "SHIFT" @@ -8390,11 +9277,24 @@ msgstr "" "whenever the Delete object(s) event is triggered, either by\n" "menu shortcut or key shortcut." -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:388 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:387 +#, fuzzy +#| msgid "Excellon Editor" +msgid "Allow Edit" +msgstr "Excellon Editor" + +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:389 +msgid "" +"When cheched, the user can edit the objects in the Project Tab\n" +"by using the left mouse button click on the object name.\n" +"Active after restart." +msgstr "" + +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:396 msgid "\"Open\" behavior" msgstr "\"Open\" behavior" -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:390 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:398 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" @@ -8408,11 +9308,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." -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:399 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:407 msgid "Enable ToolTips" msgstr "Enable ToolTips" -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:401 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:409 msgid "" "Check this box if you want to have toolTips displayed\n" "when hovering with mouse over items throughout the App." @@ -8420,11 +9320,11 @@ msgstr "" "Check this box if you want to have toolTips displayed\n" "when hovering with mouse over items throughout the App." -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:408 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:416 msgid "Allow Machinist Unsafe Settings" msgstr "Allow Machinist Unsafe Settings" -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:410 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:418 msgid "" "If checked, some of the application settings will be allowed\n" "to have values that are usually unsafe to use.\n" @@ -8438,11 +9338,11 @@ msgstr "" "It will applied at the next application start.\n" "<>: Don't change this unless you know what you are doing !!!" -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:422 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:430 msgid "Bookmarks limit" msgstr "Bookmarks limit" -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:424 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:432 msgid "" "The maximum number of bookmarks that may be installed in the menu.\n" "The number of bookmarks in the bookmark manager may be greater\n" @@ -8452,11 +9352,11 @@ msgstr "" "The number of bookmarks in the bookmark manager may be greater\n" "but the menu will hold only so much." -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:433 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:441 msgid "Activity Icon" msgstr "Activity Icon" -#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:435 +#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:443 msgid "Select the GIF that show activity when FlatCAM is active." msgstr "Select the GIF that show activity when FlatCAM is active." @@ -8537,7 +9437,9 @@ msgid "OpenGL(3D)" msgstr "OpenGL(3D)" #: appGUI/preferences/general/GeneralAppPrefGroupUI.py:98 -msgid "APP. LEVEL" +#, fuzzy +#| msgid "APP. LEVEL" +msgid "APPLICATION LEVEL" msgstr "APP. LEVEL" #: appGUI/preferences/general/GeneralAppPrefGroupUI.py:99 @@ -8557,8 +9459,9 @@ msgstr "" "the Selected Tab for all kinds of FlatCAM objects." #: appGUI/preferences/general/GeneralAppPrefGroupUI.py:105 -#: appObjects/FlatCAMExcellon.py:707 appObjects/FlatCAMGeometry.py:589 -#: appObjects/FlatCAMGerber.py:231 appTools/ToolIsolation.py:837 +#: appObjects/FlatCAMExcellon.py:163 appObjects/FlatCAMGeometry.py:581 +#: appObjects/FlatCAMGerber.py:175 appTools/ToolDrilling.py:309 +#: appTools/ToolIsolation.py:268 appTools/ToolMilling.py:305 msgid "Advanced" msgstr "Advanced" @@ -8871,7 +9774,9 @@ msgstr "" "It will be applied at the next app start." #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:111 -msgid "Activate HDPI Support" +#, fuzzy +#| msgid "Activate HDPI Support" +msgid "HDPI Support" msgstr "Activate HDPI Support" #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:113 @@ -8883,8 +9788,10 @@ msgstr "" "It will be applied at the next app start." #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:127 -msgid "Display Hover Shape" -msgstr "Display Hover Shape" +#, fuzzy +#| msgid "Convex Shape" +msgid "Hover Shape" +msgstr "Convex Shape" #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:129 msgid "" @@ -8897,7 +9804,9 @@ msgstr "" "over any kind of not-selected object." #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:136 -msgid "Display Selection Shape" +#, fuzzy +#| msgid "Display Selection Shape" +msgid "Selection Shape" msgstr "Display Selection Shape" #: appGUI/preferences/general/GeneralGUIPrefGroupUI.py:138 @@ -9031,10 +9940,15 @@ msgstr "" #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:46 #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:112 #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:134 -#: appTools/ToolCalibration.py:125 appTools/ToolSolderPaste.py:236 +#: appTools/ToolCalibration.py:820 appTools/ToolSolderPaste.py:1312 msgid "Toolchange X-Y" msgstr "Toolchange X-Y" +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:48 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:298 +msgid "Toolchange X,Y position." +msgstr "Toolchange X,Y position." + #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:58 msgid "" "Height of the tool just after starting the work.\n" @@ -9043,6 +9957,42 @@ msgstr "" "Height of the tool just after starting the work.\n" "Delete the value if you don't need this feature." +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:137 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:358 +msgid "Spindle direction" +msgstr "Spindle direction" + +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:139 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:360 +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" + +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:151 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:371 +msgid "Fast Plunge" +msgstr "Fast Plunge" + +#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:153 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:373 +msgid "" +"By checking this, the vertical move from\n" +"Z_Toolchange to Z_move is done with G0,\n" +"meaning the fastest speed available.\n" +"WARNING: the move is done at Toolchange X,Y coords." +msgstr "" +"By checking this, the vertical move from\n" +"Z_Toolchange to Z_move is done with G0,\n" +"meaning the fastest speed available.\n" +"WARNING: the move is done at Toolchange X,Y coords." + #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:161 msgid "Segment X size" msgstr "Segment X size" @@ -9089,19 +10039,6 @@ msgstr "" msgid "Exclusion areas" msgstr "Exclusion areas" -#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:220 -#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:293 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:322 -#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:286 -#: appTools/ToolIsolation.py:561 appTools/ToolNCC.py:578 -#: appTools/ToolPaint.py:521 -msgid "Shape" -msgstr "Shape" - -#: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:33 -msgid "A list of Geometry Editor parameters." -msgstr "A list of Geometry Editor parameters." - #: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:43 #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:174 msgid "" @@ -9127,11 +10064,11 @@ msgstr "" "- climb / best for precision milling and to reduce tool usage\n" "- conventional / useful when there is no backlash compensation" -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:27 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:29 msgid "Geometry General" msgstr "Geometry General" -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:59 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:61 msgid "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." @@ -9139,7 +10076,7 @@ msgstr "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:73 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:75 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:41 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:41 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:48 @@ -9147,7 +10084,7 @@ msgstr "" msgid "Tools Dia" msgstr "Tools Dia" -#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:75 +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:77 #: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:108 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:43 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:43 @@ -9162,6 +10099,43 @@ msgstr "" "The value of the diameter has to use the dot decimals separator.\n" "Valid values: 0.3, 1.0" +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:96 +#, fuzzy +#| msgid "" +#| "This sets the optimization type for the Excellon drill path.\n" +#| "If <> is checked then Google OR-Tools algorithm with\n" +#| "MetaHeuristic Guided Local Path is used. Default search time is 3sec.\n" +#| "If <> is checked then Google OR-Tools Basic algorithm is used.\n" +#| "If <> is checked then Travelling Salesman algorithm is used for\n" +#| "drill path optimization.\n" +#| "\n" +#| "If this control is disabled, then FlatCAM works in 32bit mode and it " +#| "uses\n" +#| "Travelling Salesman algorithm for path optimization." +msgid "" +"This sets the path optimization algorithm.\n" +"- Rtre -> Rtree algorithm\n" +"- MetaHeuristic -> Google OR-Tools algorithm with\n" +"MetaHeuristic Guided Local Path is used. Default search time is 3sec.\n" +"- Basic -> Using Google OR-Tools Basic algorithm\n" +"- TSA -> Using Travelling Salesman algorithm\n" +"\n" +"Some options are disabled when FlatCAM works in 32bit mode." +msgstr "" +"This sets the optimization type for the Excellon drill path.\n" +"If <> is checked then Google OR-Tools algorithm with\n" +"MetaHeuristic Guided Local Path is used. Default search time is 3sec.\n" +"If <> is checked then Google OR-Tools Basic algorithm is used.\n" +"If <> is checked then Travelling Salesman algorithm is used for\n" +"drill path optimization.\n" +"\n" +"If this control is disabled, then FlatCAM works in 32bit mode and it uses\n" +"Travelling Salesman algorithm for path optimization." + +#: appGUI/preferences/geometry/GeometryGenPrefGroupUI.py:108 +msgid "Rtree" +msgstr "" + #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:29 msgid "Geometry Options" msgstr "Geometry Options" @@ -9194,6 +10168,17 @@ msgstr "" "it is a fraction from the depth\n" "which has negative value." +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:122 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:116 +#: appTools/ToolDrilling.py:2371 +msgid "Tool change" +msgstr "Tool change" + +#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:233 +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:200 +msgid "Enable Dwell" +msgstr "Enable Dwell" + #: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:27 msgid "Gerber Adv. Options" msgstr "Gerber Adv. Options" @@ -9212,31 +10197,18 @@ msgstr "" msgid "\"Follow\"" msgstr "\"Follow\"" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:52 -msgid "Table Show/Hide" -msgstr "Table Show/Hide" - -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:54 -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 "" -"Toggle the display of the Gerber Apertures Table.\n" -"Also, on hide, it will delete all mark shapes\n" -"that are drawn on canvas." - -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:67 -#: appObjects/FlatCAMGerber.py:406 appTools/ToolCopperThieving.py:1026 -#: appTools/ToolCopperThieving.py:1215 appTools/ToolCopperThieving.py:1227 -#: appTools/ToolIsolation.py:1626 appTools/ToolNCC.py:2079 -#: appTools/ToolNCC.py:2190 appTools/ToolNCC.py:2205 appTools/ToolNCC.py:3163 -#: appTools/ToolNCC.py:3268 appTools/ToolNCC.py:3283 appTools/ToolNCC.py:3549 -#: appTools/ToolNCC.py:3650 appTools/ToolNCC.py:3665 camlib.py:991 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:64 +#: appObjects/FlatCAMGerber.py:350 appTools/ToolCopperThieving.py:581 +#: appTools/ToolCopperThieving.py:770 appTools/ToolCopperThieving.py:782 +#: appTools/ToolIsolation.py:1318 appTools/ToolNCC.py:1743 +#: appTools/ToolNCC.py:1770 appTools/ToolNCC.py:1878 appTools/ToolNCC.py:1891 +#: appTools/ToolNCC.py:2737 appTools/ToolNCC.py:2842 appTools/ToolNCC.py:2857 +#: appTools/ToolNCC.py:3123 appTools/ToolNCC.py:3224 appTools/ToolNCC.py:3239 +#: camlib.py:1062 msgid "Buffering" msgstr "Buffering" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:69 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:66 msgid "" "Buffering type:\n" "- None --> best performance, fast file loading but no so good display\n" @@ -9248,28 +10220,29 @@ msgstr "" "- Full --> slow file loading but good visuals. This is the default.\n" "<>: Don't change this unless you know what you are doing !!!" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:74 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:71 #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:88 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:196 -#: appTools/ToolFiducials.py:204 appTools/ToolFilm.py:238 -#: appTools/ToolProperties.py:452 appTools/ToolProperties.py:455 -#: appTools/ToolProperties.py:458 appTools/ToolProperties.py:483 +#: appTools/ToolFiducials.py:815 appTools/ToolFilm.py:955 +#: appTools/ToolProperties.py:453 appTools/ToolProperties.py:456 +#: appTools/ToolProperties.py:459 appTools/ToolProperties.py:487 +#: appTools/ToolProperties.py:494 appTools/ToolProperties.py:497 msgid "None" msgstr "None" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:80 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:77 msgid "Delayed Buffering" msgstr "Delayed Buffering" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:82 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:79 msgid "When checked it will do the buffering in background." msgstr "When checked it will do the buffering in background." -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:87 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:84 msgid "Simplify" msgstr "Simplify" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:89 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:86 msgid "" "When checked all the Gerber polygons will be\n" "loaded with simplification having a set tolerance.\n" @@ -9279,11 +10252,11 @@ msgstr "" "loaded with simplification having a set tolerance.\n" "<>: Don't change this unless you know what you are doing !!!" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:96 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:93 msgid "Tolerance" msgstr "Tolerance" -#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:97 +#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:94 msgid "Tolerance for polygon simplification." msgstr "Tolerance for polygon simplification." @@ -9481,10 +10454,45 @@ msgstr "" "May help loading Gerber files that otherwise\n" "do not load correctly." +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:144 +#, fuzzy +#| msgid "Set Color" +msgid "Store colors" +msgstr "Set Color" + +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:146 +msgid "" +"It will store the set colors for Gerber objects.\n" +"Those will be used each time the application is started." +msgstr "" + +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:152 +#, fuzzy +#| msgid "Clear Plot" +msgid "Clear Colors" +msgstr "Clear Plot" + +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:155 +#, fuzzy +#| msgid "Set the color for plotted objects." +msgid "Reset the colors associated with Gerber objects." +msgstr "Set the color for plotted objects." + +#: appGUI/preferences/gerber/GerberGenPrefGroupUI.py:229 +#, fuzzy +#| msgid "There is no Gerber object loaded ..." +msgid "Stored colors for Gerber objects are deleted." +msgstr "There is no Gerber object loaded ..." + #: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:29 msgid "Gerber Options" msgstr "Gerber Options" +#: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:61 +#: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:92 +msgid "Rounded Geo" +msgstr "Rounded Geo" + #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:27 msgid "Copper Thieving Tool Options" msgstr "Copper Thieving Tool Options" @@ -9503,7 +10511,7 @@ msgstr "Number of steps (lines) used to interpolate circles." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:57 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:261 -#: appTools/ToolCopperThieving.py:100 appTools/ToolCopperThieving.py:435 +#: appTools/ToolCopperThieving.py:1189 appTools/ToolCopperThieving.py:1524 msgid "Clearance" msgstr "Clearance" @@ -9519,10 +10527,10 @@ msgstr "" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:86 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:309 -#: appTools/ToolCopperThieving.py:129 appTools/ToolNCC.py:535 -#: appTools/ToolNCC.py:1324 appTools/ToolNCC.py:1655 appTools/ToolNCC.py:1948 -#: appTools/ToolNCC.py:2012 appTools/ToolNCC.py:3027 appTools/ToolNCC.py:3036 -#: defaults.py:422 tclCommands/TclCommandCopperClear.py:190 +#: appTools/ToolCopperThieving.py:1218 appTools/ToolNCC.py:1301 +#: appTools/ToolNCC.py:1617 appTools/ToolNCC.py:1681 appTools/ToolNCC.py:2601 +#: appTools/ToolNCC.py:2610 appTools/ToolNCC.py:4186 appTools/ToolNCC.py:4312 +#: defaults.py:468 tclCommands/TclCommandCopperClear.py:190 msgid "Itself" msgstr "Itself" @@ -9530,11 +10538,11 @@ msgstr "Itself" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:285 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:309 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:280 -#: appTools/ToolCopperThieving.py:130 appTools/ToolIsolation.py:514 -#: appTools/ToolIsolation.py:1323 appTools/ToolIsolation.py:1705 -#: appTools/ToolNCC.py:535 appTools/ToolNCC.py:1334 appTools/ToolNCC.py:1668 -#: appTools/ToolNCC.py:1964 appTools/ToolNCC.py:2019 appTools/ToolPaint.py:485 -#: appTools/ToolPaint.py:945 appTools/ToolPaint.py:1471 +#: appTools/ToolCopperThieving.py:1219 appTools/ToolIsolation.py:813 +#: appTools/ToolIsolation.py:1397 appTools/ToolIsolation.py:3323 +#: appTools/ToolNCC.py:1315 appTools/ToolNCC.py:1633 appTools/ToolNCC.py:1688 +#: appTools/ToolNCC.py:4186 appTools/ToolNCC.py:4322 appTools/ToolPaint.py:1060 +#: appTools/ToolPaint.py:3125 appTools/ToolPaint.py:3247 msgid "Area Selection" msgstr "Area Selection" @@ -9542,18 +10550,18 @@ msgstr "Area Selection" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:285 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:309 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:280 -#: appTools/ToolCopperThieving.py:131 appTools/ToolDblSided.py:216 -#: appTools/ToolIsolation.py:514 appTools/ToolIsolation.py:1745 -#: appTools/ToolNCC.py:535 appTools/ToolNCC.py:1684 appTools/ToolNCC.py:1970 -#: appTools/ToolNCC.py:2027 appTools/ToolNCC.py:2408 appTools/ToolNCC.py:2656 -#: appTools/ToolNCC.py:3072 appTools/ToolPaint.py:485 appTools/ToolPaint.py:930 -#: appTools/ToolPaint.py:1487 tclCommands/TclCommandCopperClear.py:192 -#: tclCommands/TclCommandPaint.py:166 +#: appTools/ToolCopperThieving.py:1220 appTools/ToolDblSided.py:764 +#: appTools/ToolIsolation.py:1437 appTools/ToolIsolation.py:3323 +#: appTools/ToolNCC.py:1334 appTools/ToolNCC.py:1639 appTools/ToolNCC.py:1696 +#: appTools/ToolNCC.py:2074 appTools/ToolNCC.py:2308 appTools/ToolNCC.py:2646 +#: appTools/ToolNCC.py:4186 appTools/ToolPaint.py:1079 +#: appTools/ToolPaint.py:3125 appTools/ToolPaint.py:3230 +#: tclCommands/TclCommandCopperClear.py:192 tclCommands/TclCommandPaint.py:166 msgid "Reference Object" msgstr "Reference Object" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:90 -#: appTools/ToolCopperThieving.py:133 +#: appTools/ToolCopperThieving.py:1222 msgid "Reference:" msgstr "Reference:" @@ -9576,24 +10584,24 @@ msgstr "" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:188 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:76 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:190 -#: appTools/ToolCopperThieving.py:175 appTools/ToolExtractDrills.py:102 -#: appTools/ToolExtractDrills.py:240 appTools/ToolPunchGerber.py:113 -#: appTools/ToolPunchGerber.py:268 +#: appTools/ToolCopperThieving.py:1264 appTools/ToolExtractDrills.py:494 +#: appTools/ToolExtractDrills.py:632 appTools/ToolPunchGerber.py:767 +#: appTools/ToolPunchGerber.py:922 msgid "Rectangular" msgstr "Rectangular" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:102 -#: appTools/ToolCopperThieving.py:176 +#: appTools/ToolCopperThieving.py:1265 msgid "Minimal" msgstr "Minimal" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:104 -#: appTools/ToolCopperThieving.py:178 appTools/ToolFilm.py:94 +#: appTools/ToolCopperThieving.py:1267 appTools/ToolFilm.py:807 msgid "Box Type:" msgstr "Box Type:" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:106 -#: appTools/ToolCopperThieving.py:180 +#: appTools/ToolCopperThieving.py:1269 msgid "" "- 'Rectangular' - the bounding box will be of rectangular shape.\n" "- 'Minimal' - the bounding box will be the convex hull shape." @@ -9602,27 +10610,27 @@ msgstr "" "- 'Minimal' - the bounding box will be the convex hull shape." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:120 -#: appTools/ToolCopperThieving.py:196 +#: appTools/ToolCopperThieving.py:1285 msgid "Dots Grid" msgstr "Dots Grid" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:121 -#: appTools/ToolCopperThieving.py:197 +#: appTools/ToolCopperThieving.py:1286 msgid "Squares Grid" msgstr "Squares Grid" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:122 -#: appTools/ToolCopperThieving.py:198 +#: appTools/ToolCopperThieving.py:1287 msgid "Lines Grid" msgstr "Lines Grid" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:124 -#: appTools/ToolCopperThieving.py:200 +#: appTools/ToolCopperThieving.py:1289 msgid "Fill Type:" msgstr "Fill Type:" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:126 -#: appTools/ToolCopperThieving.py:202 +#: appTools/ToolCopperThieving.py:1291 msgid "" "- 'Solid' - copper thieving will be a solid polygon.\n" "- 'Dots Grid' - the empty area will be filled with a pattern of dots.\n" @@ -9635,65 +10643,57 @@ msgstr "" "- 'Lines Grid' - the empty area will be filled with a pattern of lines." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:134 -#: appTools/ToolCopperThieving.py:221 +#: appTools/ToolCopperThieving.py:1310 msgid "Dots Grid Parameters" msgstr "Dots Grid Parameters" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:140 -#: appTools/ToolCopperThieving.py:227 +#: appTools/ToolCopperThieving.py:1316 msgid "Dot diameter in Dots Grid." msgstr "Dot diameter in Dots Grid." -#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:151 -#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:180 -#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:209 -#: appTools/ToolCopperThieving.py:238 appTools/ToolCopperThieving.py:278 -#: appTools/ToolCopperThieving.py:318 -msgid "Spacing" -msgstr "Spacing" - #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:153 -#: appTools/ToolCopperThieving.py:240 +#: appTools/ToolCopperThieving.py:1329 msgid "Distance between each two dots in Dots Grid." msgstr "Distance between each two dots in Dots Grid." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:163 -#: appTools/ToolCopperThieving.py:261 +#: appTools/ToolCopperThieving.py:1350 msgid "Squares Grid Parameters" msgstr "Squares Grid Parameters" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:169 -#: appTools/ToolCopperThieving.py:267 +#: appTools/ToolCopperThieving.py:1356 msgid "Square side size in Squares Grid." msgstr "Square side size in Squares Grid." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:182 -#: appTools/ToolCopperThieving.py:280 +#: appTools/ToolCopperThieving.py:1369 msgid "Distance between each two squares in Squares Grid." msgstr "Distance between each two squares in Squares Grid." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:192 -#: appTools/ToolCopperThieving.py:301 +#: appTools/ToolCopperThieving.py:1390 msgid "Lines Grid Parameters" msgstr "Lines Grid Parameters" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:198 -#: appTools/ToolCopperThieving.py:307 +#: appTools/ToolCopperThieving.py:1396 msgid "Line thickness size in Lines Grid." msgstr "Line thickness size in Lines Grid." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:211 -#: appTools/ToolCopperThieving.py:320 +#: appTools/ToolCopperThieving.py:1409 msgid "Distance between each two lines in Lines Grid." msgstr "Distance between each two lines in Lines Grid." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:221 -#: appTools/ToolCopperThieving.py:358 +#: appTools/ToolCopperThieving.py:1447 msgid "Robber Bar Parameters" msgstr "Robber Bar Parameters" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:223 -#: appTools/ToolCopperThieving.py:360 +#: appTools/ToolCopperThieving.py:1449 msgid "" "Parameters used for the robber bar.\n" "Robber bar = copper border to help in pattern hole plating." @@ -9702,34 +10702,34 @@ msgstr "" "Robber bar = copper border to help in pattern hole plating." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:231 -#: appTools/ToolCopperThieving.py:368 +#: appTools/ToolCopperThieving.py:1457 msgid "Bounding box margin for robber bar." msgstr "Bounding box margin for robber bar." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:242 #: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:42 -#: appTools/ToolCopperThieving.py:379 appTools/ToolCorners.py:122 -#: appTools/ToolEtchCompensation.py:152 +#: appTools/ToolCopperThieving.py:1468 appTools/ToolCorners.py:384 +#: appTools/ToolEtchCompensation.py:370 msgid "Thickness" msgstr "Thickness" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:244 -#: appTools/ToolCopperThieving.py:381 +#: appTools/ToolCopperThieving.py:1470 msgid "The robber bar thickness." msgstr "The robber bar thickness." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:254 -#: appTools/ToolCopperThieving.py:412 +#: appTools/ToolCopperThieving.py:1501 msgid "Pattern Plating Mask" msgstr "Pattern Plating Mask" #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:256 -#: appTools/ToolCopperThieving.py:414 +#: appTools/ToolCopperThieving.py:1503 msgid "Generate a mask for pattern plating." msgstr "Generate a mask for pattern plating." #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:263 -#: appTools/ToolCopperThieving.py:437 +#: appTools/ToolCopperThieving.py:1526 msgid "" "The distance between the possible copper thieving elements\n" "and/or robber bar and the actual openings in the mask." @@ -9746,18 +10746,18 @@ msgstr "Calibration Tool Options" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:38 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:38 #: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:37 -#: appTools/ToolCopperThieving.py:95 appTools/ToolCorners.py:117 -#: appTools/ToolFiducials.py:154 +#: appTools/ToolCopperThieving.py:1184 appTools/ToolCorners.py:379 +#: appTools/ToolFiducials.py:765 msgid "Parameters used for this tool." msgstr "Parameters used for this tool." #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:43 -#: appTools/ToolCalibration.py:181 +#: appTools/ToolCalibration.py:876 msgid "Source Type" msgstr "Source Type" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:44 -#: appTools/ToolCalibration.py:182 +#: appTools/ToolCalibration.py:877 msgid "" "The source of calibration points.\n" "It can be:\n" @@ -9770,32 +10770,32 @@ msgstr "" "- Free -> click freely on canvas to acquire the calibration points" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:49 -#: appTools/ToolCalibration.py:187 +#: appTools/ToolCalibration.py:882 msgid "Free" msgstr "Free" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:63 -#: appTools/ToolCalibration.py:76 +#: appTools/ToolCalibration.py:771 msgid "Height (Z) for travelling between the points." msgstr "Height (Z) for travelling between the points." #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:75 -#: appTools/ToolCalibration.py:88 +#: appTools/ToolCalibration.py:783 msgid "Verification Z" msgstr "Verification Z" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:77 -#: appTools/ToolCalibration.py:90 +#: appTools/ToolCalibration.py:785 msgid "Height (Z) for checking the point." msgstr "Height (Z) for checking the point." #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:89 -#: appTools/ToolCalibration.py:102 +#: appTools/ToolCalibration.py:797 msgid "Zero Z tool" msgstr "Zero Z tool" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:91 -#: appTools/ToolCalibration.py:104 +#: appTools/ToolCalibration.py:799 msgid "" "Include a sequence to zero the height (Z)\n" "of the verification tool." @@ -9804,12 +10804,12 @@ msgstr "" "of the verification tool." #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:100 -#: appTools/ToolCalibration.py:113 +#: appTools/ToolCalibration.py:808 msgid "Height (Z) for mounting the verification probe." msgstr "Height (Z) for mounting the verification probe." #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:114 -#: appTools/ToolCalibration.py:127 +#: appTools/ToolCalibration.py:822 msgid "" "Toolchange X,Y position.\n" "If no value is entered then the current\n" @@ -9820,12 +10820,12 @@ msgstr "" "(x, y) point will be used," #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:125 -#: appTools/ToolCalibration.py:153 +#: appTools/ToolCalibration.py:848 msgid "Second point" msgstr "Second point" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:127 -#: appTools/ToolCalibration.py:155 +#: appTools/ToolCalibration.py:850 msgid "" "Second point in the Gcode verification can be:\n" "- top-left -> the user will align the PCB vertically\n" @@ -9836,12 +10836,12 @@ msgstr "" "- bottom-right -> the user will align the PCB horizontally" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:131 -#: appTools/ToolCalibration.py:159 app_Main.py:4835 +#: appTools/ToolCalibration.py:854 app_Main.py:4990 msgid "Top-Left" msgstr "Top-Left" #: appGUI/preferences/tools/Tools2CalPrefGroupUI.py:132 -#: appTools/ToolCalibration.py:160 app_Main.py:4836 +#: appTools/ToolCalibration.py:855 app_Main.py:4991 msgid "Bottom-Right" msgstr "Bottom-Right" @@ -9851,13 +10851,13 @@ msgstr "Extract Drills Options" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:42 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:42 -#: appTools/ToolExtractDrills.py:68 appTools/ToolPunchGerber.py:75 +#: appTools/ToolExtractDrills.py:460 appTools/ToolPunchGerber.py:729 msgid "Processed Pads Type" msgstr "Processed Pads Type" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:44 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:44 -#: appTools/ToolExtractDrills.py:70 appTools/ToolPunchGerber.py:77 +#: appTools/ToolExtractDrills.py:462 appTools/ToolPunchGerber.py:731 msgid "" "The type of pads shape to be processed.\n" "If the PCB has many SMD pads with rectangular pads,\n" @@ -9869,7 +10869,7 @@ msgstr "" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:54 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:54 -#: appTools/ToolExtractDrills.py:80 appTools/ToolPunchGerber.py:91 +#: appTools/ToolExtractDrills.py:472 appTools/ToolPunchGerber.py:745 msgid "Process Circular Pads." msgstr "Process Circular Pads." @@ -9877,26 +10877,26 @@ msgstr "Process Circular Pads." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:162 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:60 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:164 -#: appTools/ToolExtractDrills.py:86 appTools/ToolExtractDrills.py:214 -#: appTools/ToolPunchGerber.py:97 appTools/ToolPunchGerber.py:242 +#: appTools/ToolExtractDrills.py:478 appTools/ToolExtractDrills.py:606 +#: appTools/ToolPunchGerber.py:751 appTools/ToolPunchGerber.py:896 msgid "Oblong" msgstr "Oblong" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:62 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:62 -#: appTools/ToolExtractDrills.py:88 appTools/ToolPunchGerber.py:99 +#: appTools/ToolExtractDrills.py:480 appTools/ToolPunchGerber.py:753 msgid "Process Oblong Pads." msgstr "Process Oblong Pads." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:70 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:70 -#: appTools/ToolExtractDrills.py:96 appTools/ToolPunchGerber.py:107 +#: appTools/ToolExtractDrills.py:488 appTools/ToolPunchGerber.py:761 msgid "Process Square Pads." msgstr "Process Square Pads." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:78 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:78 -#: appTools/ToolExtractDrills.py:104 appTools/ToolPunchGerber.py:115 +#: appTools/ToolExtractDrills.py:496 appTools/ToolPunchGerber.py:769 msgid "Process Rectangular Pads." msgstr "Process Rectangular Pads." @@ -9904,15 +10904,15 @@ msgstr "Process Rectangular Pads." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:201 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:84 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:203 -#: appTools/ToolExtractDrills.py:110 appTools/ToolExtractDrills.py:253 -#: appTools/ToolProperties.py:172 appTools/ToolPunchGerber.py:121 -#: appTools/ToolPunchGerber.py:281 +#: appTools/ToolExtractDrills.py:502 appTools/ToolExtractDrills.py:645 +#: appTools/ToolProperties.py:175 appTools/ToolPunchGerber.py:775 +#: appTools/ToolPunchGerber.py:935 msgid "Others" msgstr "Others" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:86 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:86 -#: appTools/ToolExtractDrills.py:112 appTools/ToolPunchGerber.py:123 +#: appTools/ToolExtractDrills.py:504 appTools/ToolPunchGerber.py:777 msgid "Process pads not in the categories above." msgstr "Process pads not in the categories above." @@ -9920,8 +10920,8 @@ msgstr "Process pads not in the categories above." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:123 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:100 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:125 -#: appTools/ToolExtractDrills.py:139 appTools/ToolExtractDrills.py:156 -#: appTools/ToolPunchGerber.py:150 appTools/ToolPunchGerber.py:184 +#: appTools/ToolExtractDrills.py:531 appTools/ToolExtractDrills.py:548 +#: appTools/ToolPunchGerber.py:804 appTools/ToolPunchGerber.py:838 msgid "Fixed Diameter" msgstr "Fixed Diameter" @@ -9929,19 +10929,19 @@ msgstr "Fixed Diameter" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:140 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:101 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:142 -#: appTools/ToolExtractDrills.py:140 appTools/ToolExtractDrills.py:192 -#: appTools/ToolPunchGerber.py:151 appTools/ToolPunchGerber.py:214 +#: appTools/ToolExtractDrills.py:532 appTools/ToolExtractDrills.py:584 +#: appTools/ToolPunchGerber.py:805 appTools/ToolPunchGerber.py:868 msgid "Fixed Annular Ring" msgstr "Fixed Annular Ring" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:101 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:102 -#: appTools/ToolExtractDrills.py:141 appTools/ToolPunchGerber.py:152 +#: appTools/ToolExtractDrills.py:533 appTools/ToolPunchGerber.py:806 msgid "Proportional" msgstr "Proportional" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:107 -#: appTools/ToolExtractDrills.py:130 +#: appTools/ToolExtractDrills.py:522 msgid "" "The method for processing pads. Can be:\n" "- Fixed Diameter -> all holes will have a set size\n" @@ -9955,13 +10955,13 @@ msgstr "" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:133 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:135 -#: appTools/ToolExtractDrills.py:166 appTools/ToolPunchGerber.py:194 +#: appTools/ToolExtractDrills.py:558 appTools/ToolPunchGerber.py:848 msgid "Fixed hole diameter." msgstr "Fixed hole diameter." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:142 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:144 -#: appTools/ToolExtractDrills.py:194 appTools/ToolPunchGerber.py:216 +#: appTools/ToolExtractDrills.py:586 appTools/ToolPunchGerber.py:870 msgid "" "The size of annular ring.\n" "The copper sliver between the hole exterior\n" @@ -9973,37 +10973,37 @@ msgstr "" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:151 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:153 -#: appTools/ToolExtractDrills.py:203 appTools/ToolPunchGerber.py:231 +#: appTools/ToolExtractDrills.py:595 appTools/ToolPunchGerber.py:885 msgid "The size of annular ring for circular pads." msgstr "The size of annular ring for circular pads." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:164 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:166 -#: appTools/ToolExtractDrills.py:216 appTools/ToolPunchGerber.py:244 +#: appTools/ToolExtractDrills.py:608 appTools/ToolPunchGerber.py:898 msgid "The size of annular ring for oblong pads." msgstr "The size of annular ring for oblong pads." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:177 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:179 -#: appTools/ToolExtractDrills.py:229 appTools/ToolPunchGerber.py:257 +#: appTools/ToolExtractDrills.py:621 appTools/ToolPunchGerber.py:911 msgid "The size of annular ring for square pads." msgstr "The size of annular ring for square pads." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:190 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:192 -#: appTools/ToolExtractDrills.py:242 appTools/ToolPunchGerber.py:270 +#: appTools/ToolExtractDrills.py:634 appTools/ToolPunchGerber.py:924 msgid "The size of annular ring for rectangular pads." msgstr "The size of annular ring for rectangular pads." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:203 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:205 -#: appTools/ToolExtractDrills.py:255 appTools/ToolPunchGerber.py:283 +#: appTools/ToolExtractDrills.py:647 appTools/ToolPunchGerber.py:937 msgid "The size of annular ring for other pads." msgstr "The size of annular ring for other pads." #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:213 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:215 -#: appTools/ToolExtractDrills.py:276 appTools/ToolPunchGerber.py:299 +#: appTools/ToolExtractDrills.py:668 appTools/ToolPunchGerber.py:953 msgid "Proportional Diameter" msgstr "Proportional Diameter" @@ -10014,7 +11014,7 @@ msgstr "Factor" #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:224 #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:226 -#: appTools/ToolExtractDrills.py:287 appTools/ToolPunchGerber.py:310 +#: appTools/ToolExtractDrills.py:679 appTools/ToolPunchGerber.py:964 msgid "" "Proportional Diameter.\n" "The hole diameter will be a fraction of the pad size." @@ -10027,7 +11027,7 @@ msgid "Fiducials Tool Options" msgstr "Fiducials Tool Options" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:45 -#: appTools/ToolFiducials.py:161 +#: appTools/ToolFiducials.py:772 msgid "" "This set the fiducial diameter if fiducial type is circular,\n" "otherwise is the size of the fiducial.\n" @@ -10038,17 +11038,12 @@ msgstr "" "The soldermask opening is double than that." #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:73 -#: appTools/ToolFiducials.py:189 +#: appTools/ToolFiducials.py:800 msgid "Auto" msgstr "Auto" -#: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:74 -#: appTools/ToolFiducials.py:190 -msgid "Manual" -msgstr "Manual" - #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:76 -#: appTools/ToolFiducials.py:192 +#: appTools/ToolFiducials.py:803 msgid "Mode:" msgstr "Mode:" @@ -10063,22 +11058,22 @@ msgstr "" "- 'Manual' - manual placement of fiducials." #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:86 -#: appTools/ToolFiducials.py:202 +#: appTools/ToolFiducials.py:813 msgid "Up" msgstr "Up" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:87 -#: appTools/ToolFiducials.py:203 +#: appTools/ToolFiducials.py:814 msgid "Down" msgstr "Down" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:90 -#: appTools/ToolFiducials.py:206 +#: appTools/ToolFiducials.py:817 msgid "Second fiducial" msgstr "Second fiducial" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:92 -#: appTools/ToolFiducials.py:208 +#: appTools/ToolFiducials.py:819 msgid "" "The position for the second fiducial.\n" "- 'Up' - the order is: bottom-left, top-left, top-right.\n" @@ -10091,22 +11086,22 @@ msgstr "" "- 'None' - there is no second fiducial. The order is: bottom-left, top-right." #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:108 -#: appTools/ToolFiducials.py:224 +#: appTools/ToolFiducials.py:835 msgid "Cross" msgstr "Cross" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:109 -#: appTools/ToolFiducials.py:225 +#: appTools/ToolFiducials.py:836 msgid "Chess" msgstr "Chess" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:112 -#: appTools/ToolFiducials.py:227 +#: appTools/ToolFiducials.py:838 msgid "Fiducial Type" msgstr "Fiducial Type" #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:114 -#: appTools/ToolFiducials.py:229 +#: appTools/ToolFiducials.py:840 msgid "" "The type of fiducial.\n" "- 'Circular' - this is the regular fiducial.\n" @@ -10119,7 +11114,7 @@ msgstr "" "- 'Chess' - chess pattern fiducial." #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:123 -#: appTools/ToolFiducials.py:238 +#: appTools/ToolFiducials.py:849 msgid "Line thickness" msgstr "Line thickness" @@ -10136,7 +11131,7 @@ msgstr "" "and in revers." #: appGUI/preferences/tools/Tools2InvertPrefGroupUI.py:47 -#: appTools/ToolInvertGerber.py:93 +#: appTools/ToolInvertGerber.py:236 msgid "" "Distance by which to avoid\n" "the edges of the Gerber object." @@ -10145,12 +11140,12 @@ msgstr "" "the edges of the Gerber object." #: appGUI/preferences/tools/Tools2InvertPrefGroupUI.py:58 -#: appTools/ToolInvertGerber.py:104 +#: appTools/ToolInvertGerber.py:247 msgid "Lines Join Style" msgstr "Lines Join Style" #: appGUI/preferences/tools/Tools2InvertPrefGroupUI.py:60 -#: appTools/ToolInvertGerber.py:106 +#: appTools/ToolInvertGerber.py:249 msgid "" "The way that the lines in the object outline will be joined.\n" "Can be:\n" @@ -10177,7 +11172,7 @@ msgstr "" "every two Gerber geometric elements" #: appGUI/preferences/tools/Tools2OptimalPrefGroupUI.py:48 -#: appTools/ToolOptimal.py:84 +#: appTools/ToolOptimal.py:434 msgid "Precision" msgstr "Precision" @@ -10190,7 +11185,7 @@ msgid "Punch Gerber Options" msgstr "Punch Gerber Options" #: appGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py:108 -#: appTools/ToolPunchGerber.py:141 +#: appTools/ToolPunchGerber.py:795 msgid "" "The punch hole source can be:\n" "- Excellon Object-> the Excellon object drills center will serve as " @@ -10223,12 +11218,12 @@ msgstr "" "into a selected Gerber file, or it can be exported as a file." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:45 -#: appTools/ToolQRCode.py:121 +#: appTools/ToolQRCode.py:699 msgid "Version" msgstr "Version" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:47 -#: appTools/ToolQRCode.py:123 +#: appTools/ToolQRCode.py:701 msgid "" "QRCode version can have values from 1 (21x21 boxes)\n" "to 40 (177x177 boxes)." @@ -10237,13 +11232,13 @@ msgstr "" "to 40 (177x177 boxes)." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:58 -#: appTools/ToolQRCode.py:134 +#: appTools/ToolQRCode.py:712 msgid "Error correction" msgstr "Error correction" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:60 #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:71 -#: appTools/ToolQRCode.py:136 appTools/ToolQRCode.py:147 +#: appTools/ToolQRCode.py:714 appTools/ToolQRCode.py:725 #, python-format msgid "" "Parameter that controls the error correction used for the QR Code.\n" @@ -10259,12 +11254,12 @@ msgstr "" "H = maximum 30%% errors can be corrected." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:81 -#: appTools/ToolQRCode.py:157 +#: appTools/ToolQRCode.py:735 msgid "Box Size" msgstr "Box Size" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:83 -#: appTools/ToolQRCode.py:159 +#: appTools/ToolQRCode.py:737 msgid "" "Box size control the overall size of the QRcode\n" "by adjusting the size of each box in the code." @@ -10273,12 +11268,12 @@ msgstr "" "by adjusting the size of each box in the code." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:94 -#: appTools/ToolQRCode.py:170 +#: appTools/ToolQRCode.py:748 msgid "Border Size" msgstr "Border Size" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:96 -#: appTools/ToolQRCode.py:172 +#: appTools/ToolQRCode.py:750 msgid "" "Size of the QRCode border. How many boxes thick is the border.\n" "Default value is 4. The width of the clearance around the QRCode." @@ -10287,27 +11282,27 @@ msgstr "" "Default value is 4. The width of the clearance around the QRCode." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:107 -#: appTools/ToolQRCode.py:92 +#: appTools/ToolQRCode.py:670 msgid "QRCode Data" msgstr "QRCode Data" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:109 -#: appTools/ToolQRCode.py:94 +#: appTools/ToolQRCode.py:672 msgid "QRCode Data. Alphanumeric text to be encoded in the QRCode." msgstr "QRCode Data. Alphanumeric text to be encoded in the QRCode." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:113 -#: appTools/ToolQRCode.py:98 +#: appTools/ToolQRCode.py:676 msgid "Add here the text to be included in the QRCode..." msgstr "Add here the text to be included in the QRCode..." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:119 -#: appTools/ToolQRCode.py:183 +#: appTools/ToolQRCode.py:761 msgid "Polarity" msgstr "Polarity" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:121 -#: appTools/ToolQRCode.py:185 +#: appTools/ToolQRCode.py:763 msgid "" "Choose the polarity of the QRCode.\n" "It can be drawn in a negative way (squares are clear)\n" @@ -10318,17 +11313,17 @@ msgstr "" "or in a positive way (squares are opaque)." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:125 -#: appTools/ToolFilm.py:279 appTools/ToolQRCode.py:189 +#: appTools/ToolFilm.py:997 appTools/ToolQRCode.py:767 msgid "Negative" msgstr "Negative" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:126 -#: appTools/ToolFilm.py:278 appTools/ToolQRCode.py:190 +#: appTools/ToolFilm.py:996 appTools/ToolQRCode.py:768 msgid "Positive" msgstr "Positive" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:128 -#: appTools/ToolQRCode.py:192 +#: appTools/ToolQRCode.py:770 msgid "" "Choose the type of QRCode to be created.\n" "If added on a Silkscreen Gerber file the QRCode may\n" @@ -10342,7 +11337,7 @@ msgstr "" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:139 #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:145 -#: appTools/ToolQRCode.py:203 appTools/ToolQRCode.py:209 +#: appTools/ToolQRCode.py:781 appTools/ToolQRCode.py:787 msgid "" "The bounding box, meaning the empty space that surrounds\n" "the QRCode geometry, can have a rounded or a square shape." @@ -10351,22 +11346,22 @@ msgstr "" "the QRCode geometry, can have a rounded or a square shape." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:152 -#: appTools/ToolQRCode.py:237 +#: appTools/ToolQRCode.py:815 msgid "Fill Color" msgstr "Fill Color" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:154 -#: appTools/ToolQRCode.py:239 +#: appTools/ToolQRCode.py:817 msgid "Set the QRCode fill color (squares color)." msgstr "Set the QRCode fill color (squares color)." #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:162 -#: appTools/ToolQRCode.py:261 +#: appTools/ToolQRCode.py:839 msgid "Back Color" msgstr "Back Color" #: appGUI/preferences/tools/Tools2QRCodePrefGroupUI.py:164 -#: appTools/ToolQRCode.py:263 +#: appTools/ToolQRCode.py:841 msgid "Set the QRCode background color." msgstr "Set the QRCode background color." @@ -10383,12 +11378,12 @@ msgstr "" "of Manufacturing Rules." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:42 -#: appTools/ToolRulesCheck.py:265 appTools/ToolRulesCheck.py:929 +#: appTools/ToolRulesCheck.py:428 appTools/ToolRulesCheck.py:1367 msgid "Trace Size" msgstr "Trace Size" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:44 -#: appTools/ToolRulesCheck.py:267 +#: appTools/ToolRulesCheck.py:1369 msgid "This checks if the minimum size for traces is met." msgstr "This checks if the minimum size for traces is met." @@ -10402,27 +11397,27 @@ msgstr "This checks if the minimum size for traces is met." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:194 #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:216 #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:236 -#: appTools/ToolRulesCheck.py:277 appTools/ToolRulesCheck.py:299 -#: appTools/ToolRulesCheck.py:322 appTools/ToolRulesCheck.py:345 -#: appTools/ToolRulesCheck.py:368 appTools/ToolRulesCheck.py:391 -#: appTools/ToolRulesCheck.py:414 appTools/ToolRulesCheck.py:437 -#: appTools/ToolRulesCheck.py:462 appTools/ToolRulesCheck.py:485 +#: appTools/ToolRulesCheck.py:1379 appTools/ToolRulesCheck.py:1401 +#: appTools/ToolRulesCheck.py:1424 appTools/ToolRulesCheck.py:1447 +#: appTools/ToolRulesCheck.py:1470 appTools/ToolRulesCheck.py:1493 +#: appTools/ToolRulesCheck.py:1516 appTools/ToolRulesCheck.py:1539 +#: appTools/ToolRulesCheck.py:1564 appTools/ToolRulesCheck.py:1587 msgid "Min value" msgstr "Min value" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:56 -#: appTools/ToolRulesCheck.py:279 +#: appTools/ToolRulesCheck.py:1381 msgid "Minimum acceptable trace size." msgstr "Minimum acceptable trace size." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:61 -#: appTools/ToolRulesCheck.py:286 appTools/ToolRulesCheck.py:1157 -#: appTools/ToolRulesCheck.py:1187 +#: appTools/ToolRulesCheck.py:656 appTools/ToolRulesCheck.py:686 +#: appTools/ToolRulesCheck.py:1388 msgid "Copper to Copper clearance" msgstr "Copper to Copper clearance" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:63 -#: appTools/ToolRulesCheck.py:288 +#: appTools/ToolRulesCheck.py:1390 msgid "" "This checks if the minimum clearance between copper\n" "features is met." @@ -10437,22 +11432,22 @@ msgstr "" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:156 #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:176 #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:238 -#: appTools/ToolRulesCheck.py:301 appTools/ToolRulesCheck.py:324 -#: appTools/ToolRulesCheck.py:347 appTools/ToolRulesCheck.py:370 -#: appTools/ToolRulesCheck.py:393 appTools/ToolRulesCheck.py:416 -#: appTools/ToolRulesCheck.py:464 +#: appTools/ToolRulesCheck.py:1403 appTools/ToolRulesCheck.py:1426 +#: appTools/ToolRulesCheck.py:1449 appTools/ToolRulesCheck.py:1472 +#: appTools/ToolRulesCheck.py:1495 appTools/ToolRulesCheck.py:1518 +#: appTools/ToolRulesCheck.py:1566 msgid "Minimum acceptable clearance value." msgstr "Minimum acceptable clearance value." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:81 -#: appTools/ToolRulesCheck.py:309 appTools/ToolRulesCheck.py:1217 -#: appTools/ToolRulesCheck.py:1223 appTools/ToolRulesCheck.py:1236 -#: appTools/ToolRulesCheck.py:1243 +#: appTools/ToolRulesCheck.py:716 appTools/ToolRulesCheck.py:722 +#: appTools/ToolRulesCheck.py:735 appTools/ToolRulesCheck.py:742 +#: appTools/ToolRulesCheck.py:1411 msgid "Copper to Outline clearance" msgstr "Copper to Outline clearance" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:83 -#: appTools/ToolRulesCheck.py:311 +#: appTools/ToolRulesCheck.py:1413 msgid "" "This checks if the minimum clearance between copper\n" "features and the outline is met." @@ -10461,12 +11456,12 @@ msgstr "" "features and the outline is met." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:101 -#: appTools/ToolRulesCheck.py:332 +#: appTools/ToolRulesCheck.py:1434 msgid "Silk to Silk Clearance" msgstr "Silk to Silk Clearance" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:103 -#: appTools/ToolRulesCheck.py:334 +#: appTools/ToolRulesCheck.py:1436 msgid "" "This checks if the minimum clearance between silkscreen\n" "features and silkscreen features is met." @@ -10475,13 +11470,13 @@ msgstr "" "features and silkscreen features is met." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:121 -#: appTools/ToolRulesCheck.py:355 appTools/ToolRulesCheck.py:1326 -#: appTools/ToolRulesCheck.py:1332 appTools/ToolRulesCheck.py:1350 +#: appTools/ToolRulesCheck.py:825 appTools/ToolRulesCheck.py:831 +#: appTools/ToolRulesCheck.py:849 appTools/ToolRulesCheck.py:1457 msgid "Silk to Solder Mask Clearance" msgstr "Silk to Solder Mask Clearance" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:123 -#: appTools/ToolRulesCheck.py:357 +#: appTools/ToolRulesCheck.py:1459 msgid "" "This checks if the minimum clearance between silkscreen\n" "features and soldermask features is met." @@ -10490,14 +11485,14 @@ msgstr "" "features and soldermask features is met." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:141 -#: appTools/ToolRulesCheck.py:378 appTools/ToolRulesCheck.py:1380 -#: appTools/ToolRulesCheck.py:1386 appTools/ToolRulesCheck.py:1400 -#: appTools/ToolRulesCheck.py:1407 +#: appTools/ToolRulesCheck.py:879 appTools/ToolRulesCheck.py:885 +#: appTools/ToolRulesCheck.py:899 appTools/ToolRulesCheck.py:906 +#: appTools/ToolRulesCheck.py:1480 msgid "Silk to Outline Clearance" msgstr "Silk to Outline Clearance" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:143 -#: appTools/ToolRulesCheck.py:380 +#: appTools/ToolRulesCheck.py:1482 msgid "" "This checks if the minimum clearance between silk\n" "features and the outline is met." @@ -10506,13 +11501,13 @@ msgstr "" "features and the outline is met." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:161 -#: appTools/ToolRulesCheck.py:401 appTools/ToolRulesCheck.py:1418 -#: appTools/ToolRulesCheck.py:1445 +#: appTools/ToolRulesCheck.py:917 appTools/ToolRulesCheck.py:944 +#: appTools/ToolRulesCheck.py:1503 msgid "Minimum Solder Mask Sliver" msgstr "Minimum Solder Mask Sliver" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:163 -#: appTools/ToolRulesCheck.py:403 +#: appTools/ToolRulesCheck.py:1505 msgid "" "This checks if the minimum clearance between soldermask\n" "features and soldermask features is met." @@ -10521,14 +11516,14 @@ msgstr "" "features and soldermask features is met." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:181 -#: appTools/ToolRulesCheck.py:424 appTools/ToolRulesCheck.py:1483 -#: appTools/ToolRulesCheck.py:1489 appTools/ToolRulesCheck.py:1505 -#: appTools/ToolRulesCheck.py:1512 +#: appTools/ToolRulesCheck.py:982 appTools/ToolRulesCheck.py:988 +#: appTools/ToolRulesCheck.py:1004 appTools/ToolRulesCheck.py:1011 +#: appTools/ToolRulesCheck.py:1526 msgid "Minimum Annular Ring" msgstr "Minimum Annular Ring" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:183 -#: appTools/ToolRulesCheck.py:426 +#: appTools/ToolRulesCheck.py:1528 msgid "" "This checks if the minimum copper ring left by drilling\n" "a hole into a pad is met." @@ -10537,17 +11532,17 @@ msgstr "" "a hole into a pad is met." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:196 -#: appTools/ToolRulesCheck.py:439 +#: appTools/ToolRulesCheck.py:1541 msgid "Minimum acceptable ring value." msgstr "Minimum acceptable ring value." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:203 -#: appTools/ToolRulesCheck.py:449 appTools/ToolRulesCheck.py:873 +#: appTools/ToolRulesCheck.py:372 appTools/ToolRulesCheck.py:1551 msgid "Hole to Hole Clearance" msgstr "Hole to Hole Clearance" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:205 -#: appTools/ToolRulesCheck.py:451 +#: appTools/ToolRulesCheck.py:1553 msgid "" "This checks if the minimum clearance between a drill hole\n" "and another drill hole is met." @@ -10556,17 +11551,17 @@ msgstr "" "and another drill hole is met." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:218 -#: appTools/ToolRulesCheck.py:487 +#: appTools/ToolRulesCheck.py:1589 msgid "Minimum acceptable drill size." msgstr "Minimum acceptable drill size." #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:223 -#: appTools/ToolRulesCheck.py:472 appTools/ToolRulesCheck.py:847 +#: appTools/ToolRulesCheck.py:346 appTools/ToolRulesCheck.py:1574 msgid "Hole Size" msgstr "Hole Size" #: appGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py:225 -#: appTools/ToolRulesCheck.py:474 +#: appTools/ToolRulesCheck.py:1576 msgid "" "This checks if the drill holes\n" "sizes are above the threshold." @@ -10591,18 +11586,17 @@ msgid "Drill dia" msgstr "Drill dia" #: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:49 -#: appTools/ToolDblSided.py:363 appTools/ToolDblSided.py:368 +#: appTools/ToolDblSided.py:833 appTools/ToolDblSided.py:838 msgid "Diameter of the drill for the alignment holes." msgstr "Diameter of the drill for the alignment holes." #: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:56 -#: appTools/ToolDblSided.py:377 msgid "Align Axis" msgstr "Align Axis" #: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:58 #: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:71 -#: appTools/ToolDblSided.py:165 appTools/ToolDblSided.py:379 +#: appTools/ToolDblSided.py:674 appTools/ToolDblSided.py:849 msgid "Mirror vertically (X) or horizontally (Y)." msgstr "Mirror vertically (X) or horizontally (Y)." @@ -10610,31 +11604,52 @@ msgstr "Mirror vertically (X) or horizontally (Y)." msgid "Mirror Axis:" msgstr "Mirror Axis:" -#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:81 -#: appTools/ToolDblSided.py:182 +#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:86 +#: appTools/ToolDblSided.py:700 msgid "Box" msgstr "Box" -#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:82 +#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:87 +#: appTools/ToolDblSided.py:701 +#, fuzzy +#| msgid "Hole Size" +msgid "Hole Snap" +msgstr "Hole Size" + +#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:90 msgid "Axis Ref" msgstr "Axis Ref" -#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:84 +#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:92 +#, fuzzy +#| msgid "" +#| "The coordinates used as reference for the mirror operation.\n" +#| "Can be:\n" +#| "- Point -> a set of coordinates (x,y) around which the object is " +#| "mirrored\n" +#| "- Box -> a set of coordinates (x, y) obtained from the center of the\n" +#| "bounding box of another object selected below" msgid "" -"The axis should pass through a point or cut\n" -" a specified box (in a FlatCAM object) through \n" -"the center." +"The coordinates used as reference for the mirror operation.\n" +"Can be:\n" +"- Point -> a set of coordinates (x,y) around which the object is mirrored\n" +"- Box -> a set of coordinates (x, y) obtained from the center of the\n" +"bounding box of another object selected below\n" +"- Hole Snap-> a point defined by the center of a drill hone in a Excellon " +"object" msgstr "" -"The axis should pass through a point or cut\n" -" a specified box (in a FlatCAM object) through \n" -"the center." +"The coordinates used as reference for the mirror operation.\n" +"Can be:\n" +"- Point -> a set of coordinates (x,y) around which the object is mirrored\n" +"- Box -> a set of coordinates (x, y) obtained from the center of the\n" +"bounding box of another object selected below" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:27 msgid "Calculators Tool Options" msgstr "Calculators Tool Options" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:31 -#: appTools/ToolCalculators.py:25 +#: appTools/ToolCalculators.py:152 msgid "V-Shape Tool Calculator" msgstr "V-Shape Tool Calculator" @@ -10649,12 +11664,12 @@ msgstr "" "depth-of-cut as parameters." #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:50 -#: appTools/ToolCalculators.py:94 +#: appTools/ToolCalculators.py:220 msgid "Tip Diameter" msgstr "Tip Diameter" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:52 -#: appTools/ToolCalculators.py:102 +#: appTools/ToolCalculators.py:228 msgid "" "This is the tool tip diameter.\n" "It is specified by manufacturer." @@ -10663,7 +11678,7 @@ msgstr "" "It is specified by manufacturer." #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:64 -#: appTools/ToolCalculators.py:105 +#: appTools/ToolCalculators.py:231 msgid "Tip Angle" msgstr "Tip Angle" @@ -10684,12 +11699,12 @@ msgstr "" "In the CNCJob object it is the CutZ parameter." #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:87 -#: appTools/ToolCalculators.py:27 +#: appTools/ToolCalculators.py:154 msgid "ElectroPlating Calculator" msgstr "ElectroPlating Calculator" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:89 -#: appTools/ToolCalculators.py:158 +#: appTools/ToolCalculators.py:284 msgid "" "This calculator is useful for those who plate the via/pad/drill holes,\n" "using a method like graphite ink or calcium hypophosphite ink or palladium " @@ -10700,32 +11715,32 @@ msgstr "" "chloride." #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:100 -#: appTools/ToolCalculators.py:167 +#: appTools/ToolCalculators.py:293 msgid "Board Length" msgstr "Board Length" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:102 -#: appTools/ToolCalculators.py:173 +#: appTools/ToolCalculators.py:299 msgid "This is the board length. In centimeters." msgstr "This is the board length. In centimeters." #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:112 -#: appTools/ToolCalculators.py:175 +#: appTools/ToolCalculators.py:301 msgid "Board Width" msgstr "Board Width" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:114 -#: appTools/ToolCalculators.py:181 +#: appTools/ToolCalculators.py:307 msgid "This is the board width.In centimeters." msgstr "This is the board width.In centimeters." #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:119 -#: appTools/ToolCalculators.py:183 +#: appTools/ToolCalculators.py:309 msgid "Current Density" msgstr "Current Density" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:125 -#: appTools/ToolCalculators.py:190 +#: appTools/ToolCalculators.py:316 msgid "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." @@ -10734,12 +11749,12 @@ msgstr "" "In Amps per Square Feet ASF." #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:131 -#: appTools/ToolCalculators.py:193 +#: appTools/ToolCalculators.py:319 msgid "Copper Growth" msgstr "Copper Growth" #: appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py:137 -#: appTools/ToolCalculators.py:200 +#: appTools/ToolCalculators.py:326 msgid "" "How thick the copper growth is intended to be.\n" "In microns." @@ -10752,12 +11767,12 @@ msgid "Corner Markers Options" msgstr "Corner Markers Options" #: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:44 -#: appTools/ToolCorners.py:124 +#: appTools/ToolCorners.py:386 msgid "The thickness of the line that makes the corner marker." msgstr "The thickness of the line that makes the corner marker." #: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:58 -#: appTools/ToolCorners.py:138 +#: appTools/ToolCorners.py:400 msgid "The length of the line that makes the corner marker." msgstr "The length of the line that makes the corner marker." @@ -10775,13 +11790,8 @@ msgstr "" "the PCB and separate it from\n" "the original board." -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:43 -#: appTools/ToolCalculators.py:123 appTools/ToolCutOut.py:129 -msgid "Tool Diameter" -msgstr "Tool Diameter" - #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:45 -#: appTools/ToolCutOut.py:131 +#: appTools/ToolCutOut.py:1821 msgid "" "Diameter of the tool used to cutout\n" "the PCB shape out of the surrounding material." @@ -10794,7 +11804,7 @@ msgid "Object kind" msgstr "Object kind" #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:102 -#: appTools/ToolCutOut.py:77 +#: appTools/ToolCutOut.py:1754 msgid "" "Choice of what kind the object we want to cutout is.
- Single: " "contain a single PCB Gerber outline object.
- Panel: a panel PCB " @@ -10807,50 +11817,16 @@ msgstr "" "out of many individual PCB outlines." #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:109 -#: appTools/ToolCutOut.py:83 +#: appTools/ToolCutOut.py:1760 msgid "Single" msgstr "Single" #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:110 -#: appTools/ToolCutOut.py:84 +#: appTools/ToolCutOut.py:1761 msgid "Panel" msgstr "Panel" -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:117 -#: appTools/ToolCutOut.py:192 -msgid "" -"Margin over bounds. A positive value here\n" -"will make the cutout of the PCB further from\n" -"the actual PCB border" -msgstr "" -"Margin over bounds. A positive value here\n" -"will make the cutout of the PCB further from\n" -"the actual PCB border" - -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:130 -#: appTools/ToolCutOut.py:203 -msgid "Gap size" -msgstr "Gap size" - -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:132 -#: appTools/ToolCutOut.py:205 -msgid "" -"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)." -msgstr "" -"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)." - -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:146 -#: appTools/ToolCutOut.py:245 -msgid "Gaps" -msgstr "Gaps" - -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:148 +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:211 msgid "" "Number of gaps used for the cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -10874,19 +11850,146 @@ msgstr "" "- 2tb - 2*top + 2*bottom\n" "- 8 - 2*left + 2*right +2*top + 2*bottom" -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:170 -#: appTools/ToolCutOut.py:222 -msgid "Convex Shape" -msgstr "Convex Shape" - -#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:172 -#: appTools/ToolCutOut.py:225 -msgid "" -"Create a convex shape surrounding the entire PCB.\n" -"Used only if the source object type is Gerber." +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:240 +#: appTools/ToolCutOut.py:2091 +msgid "Big cursor" msgstr "" -"Create a convex shape surrounding the entire PCB.\n" -"Used only if the source object type is Gerber." + +#: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:242 +#: appTools/ToolCutOut.py:2093 +msgid "Use a big cursor when adding manual gaps." +msgstr "" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:27 +#, fuzzy +#| msgid "Film Tool Options" +msgid "Drilling Tool Options" +msgstr "Film Tool Options" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:33 +#: appTools/ToolDrilling.py:1992 appTools/ToolMilling.py:1611 +#, fuzzy +#| msgid "Create Geometry for milling holes." +msgid "Create CNCJob with toolpaths for drilling or milling holes." +msgstr "Create Geometry for milling holes." + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:41 +#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:54 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:156 +#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:142 +#: appTools/ToolDrilling.py:2068 appTools/ToolIsolation.py:3020 +#: appTools/ToolMilling.py:1687 appTools/ToolNCC.py:3819 +#: appTools/ToolPaint.py:2842 +msgid "Tool order" +msgstr "Tool order" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:42 +#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:55 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:157 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:167 +#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:143 +#: appTools/ToolDrilling.py:2069 appTools/ToolIsolation.py:3021 +#: appTools/ToolMilling.py:1688 appTools/ToolNCC.py:3820 +#: appTools/ToolNCC.py:3830 appTools/ToolPaint.py:2843 +#: appTools/ToolPaint.py:2853 +msgid "" +"This set the way that the tools in the tools table are used.\n" +"'No' --> means that the used order is the one in the tool table\n" +"'Forward' --> means that the tools will be ordered from small to big\n" +"'Reverse' --> means that the tools will ordered from big to small\n" +"\n" +"WARNING: using rest machining will automatically set the order\n" +"in reverse and disable this control." +msgstr "" +"This set the way that the tools in the tools table are used.\n" +"'No' --> means that the used order is the one in the tool table\n" +"'Forward' --> means that the tools will be ordered from small to big\n" +"'Reverse' --> means that the tools will ordered from big to small\n" +"\n" +"WARNING: using rest machining will automatically set the order\n" +"in reverse and disable this control." + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:50 +#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:63 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:165 +#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:151 +#: appTools/ToolDrilling.py:2077 appTools/ToolIsolation.py:3029 +#: appTools/ToolMilling.py:1696 appTools/ToolNCC.py:3828 +#: appTools/ToolPaint.py:2851 +msgid "Forward" +msgstr "Forward" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:51 +#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:64 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:166 +#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:152 +#: appTools/ToolDrilling.py:2078 appTools/ToolIsolation.py:3030 +#: appTools/ToolMilling.py:1697 appTools/ToolNCC.py:3829 +#: appTools/ToolPaint.py:2852 +msgid "Reverse" +msgstr "Reverse" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:118 +#: appTools/ToolDrilling.py:2373 appTools/ToolMilling.py:2065 +msgid "" +"Include tool-change sequence\n" +"in G-Code (Pause for tool change)." +msgstr "" +"Include tool-change sequence\n" +"in G-Code (Pause for tool change)." + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:223 +msgid "" +"The preprocessor JSON file that dictates\n" +"Gcode output." +msgstr "" +"The preprocessor JSON file that dictates\n" +"Gcode output." + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:239 +#, fuzzy +#| msgid "Mill Slots" +msgid "Drilling Slots" +msgstr "Mill Slots" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:278 +#, fuzzy +#| msgid "A list of Excellon Editor parameters." +msgid "A list of advanced parameters." +msgstr "A list of Excellon Editor parameters." + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:296 +msgid "Toolchange X,Y" +msgstr "Toolchange X,Y" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:308 +#: appTools/ToolDrilling.py:2403 appTools/ToolMilling.py:2089 +msgid "" +"Height of the tool just after start.\n" +"Delete the value if you don't need this feature." +msgstr "" +"Height of the tool just after start.\n" +"Delete the value if you don't need this feature." + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:380 +msgid "Fast Retract" +msgstr "Fast Retract" + +#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:382 +msgid "" +"Exit hole strategy.\n" +" - When uncheked, while exiting the drilled hole the drill bit\n" +"will travel slow, with set feedrate (G1), up to zero depth and then\n" +"travel as fast as possible (G0) to the Z Move (travel height).\n" +" - When checked the travel from Z cut (cut depth) to Z_move\n" +"(travel height) is done as fast as possible (G0) in one move." +msgstr "" +"Exit hole strategy.\n" +" - When uncheked, while exiting the drilled hole the drill bit\n" +"will travel slow, with set feedrate (G1), up to zero depth and then\n" +"travel as fast as possible (G0) to the Z Move (travel height).\n" +" - When checked the travel from Z cut (cut depth) to Z_move\n" +"(travel height) is done as fast as possible (G0) in one move." #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:27 msgid "Film Tool Options" @@ -10904,7 +12007,8 @@ msgstr "" msgid "Film Type" msgstr "Film Type" -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:45 appTools/ToolFilm.py:283 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:45 +#: appTools/ToolFilm.py:1001 msgid "" "Generate a Positive black film or a Negative film.\n" "Positive means that it will print the features\n" @@ -10928,11 +12032,13 @@ msgstr "Film Color" msgid "Set the film color when positive film is selected." msgstr "Set the film color when positive film is selected." -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:71 appTools/ToolFilm.py:299 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:71 +#: appTools/ToolFilm.py:1017 msgid "Border" msgstr "Border" -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:73 appTools/ToolFilm.py:301 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:73 +#: appTools/ToolFilm.py:1019 msgid "" "Specify a border around the object.\n" "Only for negative film.\n" @@ -10952,11 +12058,11 @@ msgstr "" "white color like the rest and which may confound with the\n" "surroundings if not for this border." -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:90 appTools/ToolFilm.py:266 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:90 appTools/ToolFilm.py:986 msgid "Scale Stroke" msgstr "Scale Stroke" -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:92 appTools/ToolFilm.py:268 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:92 appTools/ToolFilm.py:988 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 " @@ -10968,12 +12074,12 @@ msgstr "" "thinner,\n" "therefore the fine features may be more affected by this parameter." -#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:99 appTools/ToolFilm.py:124 +#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:99 appTools/ToolFilm.py:830 msgid "Film Adjustments" msgstr "Film Adjustments" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:101 -#: appTools/ToolFilm.py:126 +#: appTools/ToolFilm.py:832 msgid "" "Sometime the printers will distort the print shape, especially the Laser " "types.\n" @@ -10984,12 +12090,12 @@ msgstr "" "This section provide the tools to compensate for the print distortions." #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:108 -#: appTools/ToolFilm.py:133 +#: appTools/ToolFilm.py:839 msgid "Scale Film geometry" msgstr "Scale Film geometry" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:110 -#: appTools/ToolFilm.py:135 +#: appTools/ToolFilm.py:841 msgid "" "A value greater than 1 will stretch the film\n" "while a value less than 1 will jolt it." @@ -10998,12 +12104,12 @@ msgstr "" "while a value less than 1 will jolt it." #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:139 -#: appTools/ToolFilm.py:172 +#: appTools/ToolFilm.py:883 msgid "Skew Film geometry" msgstr "Skew Film geometry" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:141 -#: appTools/ToolFilm.py:174 +#: appTools/ToolFilm.py:885 msgid "" "Positive values will skew to the right\n" "while negative values will skew to the left." @@ -11012,7 +12118,7 @@ msgstr "" "while negative values will skew to the left." #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:171 -#: appTools/ToolFilm.py:204 +#: appTools/ToolFilm.py:915 msgid "" "The reference point to be used as origin for the skew.\n" "It can be one of the four points of the geometry bounding box." @@ -11021,63 +12127,63 @@ msgstr "" "It can be one of the four points of the geometry bounding box." #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:174 -#: appTools/ToolCorners.py:80 appTools/ToolFiducials.py:83 -#: appTools/ToolFilm.py:207 +#: appTools/ToolCorners.py:342 appTools/ToolFiducials.py:694 +#: appTools/ToolFilm.py:918 msgid "Bottom Left" msgstr "Bottom Left" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:175 -#: appTools/ToolCorners.py:88 appTools/ToolFilm.py:208 +#: appTools/ToolCorners.py:350 appTools/ToolFilm.py:919 msgid "Top Left" msgstr "Top Left" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:176 -#: appTools/ToolCorners.py:84 appTools/ToolFilm.py:209 +#: appTools/ToolCorners.py:346 appTools/ToolFilm.py:920 msgid "Bottom Right" msgstr "Bottom Right" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:177 -#: appTools/ToolFilm.py:210 +#: appTools/ToolFilm.py:921 msgid "Top right" msgstr "Top right" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:185 -#: appTools/ToolFilm.py:227 +#: appTools/ToolFilm.py:944 msgid "Mirror Film geometry" msgstr "Mirror Film geometry" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:187 -#: appTools/ToolFilm.py:229 +#: appTools/ToolFilm.py:946 msgid "Mirror the film geometry on the selected axis or on both." msgstr "Mirror the film geometry on the selected axis or on both." #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:201 -#: appTools/ToolFilm.py:243 +#: appTools/ToolFilm.py:960 msgid "Mirror axis" msgstr "Mirror axis" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:211 -#: appTools/ToolFilm.py:388 +#: appTools/ToolFilm.py:1106 msgid "SVG" msgstr "SVG" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:212 -#: appTools/ToolFilm.py:389 +#: appTools/ToolFilm.py:1107 msgid "PNG" msgstr "PNG" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:213 -#: appTools/ToolFilm.py:390 +#: appTools/ToolFilm.py:1108 msgid "PDF" msgstr "PDF" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:216 -#: appTools/ToolFilm.py:281 appTools/ToolFilm.py:393 +#: appTools/ToolFilm.py:999 appTools/ToolFilm.py:1111 msgid "Film Type:" msgstr "Film Type:" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:218 -#: appTools/ToolFilm.py:395 +#: appTools/ToolFilm.py:1113 msgid "" "The file type of the saved film. Can be:\n" "- 'SVG' -> open-source vectorial format\n" @@ -11090,17 +12196,17 @@ msgstr "" "- 'PDF' -> portable document format" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:227 -#: appTools/ToolFilm.py:404 +#: appTools/ToolFilm.py:1122 msgid "Page Orientation" msgstr "Page Orientation" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:240 -#: appTools/ToolFilm.py:417 +#: appTools/ToolFilm.py:1135 msgid "Page Size" msgstr "Page Size" #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:241 -#: appTools/ToolFilm.py:418 +#: appTools/ToolFilm.py:1136 msgid "A selection of standard ISO 216 page sizes." msgstr "A selection of standard ISO 216 page sizes." @@ -11114,61 +12220,11 @@ msgstr "Isolation Tool Options" msgid "Comma separated values" msgstr "Comma separated values" -#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:54 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:156 -#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:142 -#: appTools/ToolIsolation.py:166 appTools/ToolNCC.py:174 -#: appTools/ToolPaint.py:157 -msgid "Tool order" -msgstr "Tool order" - -#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:55 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:157 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:167 -#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:143 -#: appTools/ToolIsolation.py:167 appTools/ToolNCC.py:175 -#: appTools/ToolNCC.py:185 appTools/ToolPaint.py:158 appTools/ToolPaint.py:168 -msgid "" -"This set the way that the tools in the tools table are used.\n" -"'No' --> means that the used order is the one in the tool table\n" -"'Forward' --> means that the tools will be ordered from small to big\n" -"'Reverse' --> means that the tools will ordered from big to small\n" -"\n" -"WARNING: using rest machining will automatically set the order\n" -"in reverse and disable this control." -msgstr "" -"This set the way that the tools in the tools table are used.\n" -"'No' --> means that the used order is the one in the tool table\n" -"'Forward' --> means that the tools will be ordered from small to big\n" -"'Reverse' --> means that the tools will ordered from big to small\n" -"\n" -"WARNING: using rest machining will automatically set the order\n" -"in reverse and disable this control." - -#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:63 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:165 -#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:151 -#: appTools/ToolIsolation.py:175 appTools/ToolNCC.py:183 -#: appTools/ToolPaint.py:166 -msgid "Forward" -msgstr "Forward" - -#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:64 -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:166 -#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:152 -#: appTools/ToolIsolation.py:176 appTools/ToolNCC.py:184 -#: appTools/ToolPaint.py:167 -msgid "Reverse" -msgstr "Reverse" - #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:72 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:80 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:55 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:63 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:64 -#: appTools/ToolIsolation.py:201 appTools/ToolIsolation.py:209 -#: appTools/ToolNCC.py:215 appTools/ToolNCC.py:223 appTools/ToolPaint.py:197 -#: appTools/ToolPaint.py:205 msgid "" "Default tool type:\n" "- 'V-shape'\n" @@ -11181,8 +12237,6 @@ msgstr "" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:77 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:60 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:69 -#: appTools/ToolIsolation.py:206 appTools/ToolNCC.py:220 -#: appTools/ToolPaint.py:202 msgid "V-shape" msgstr "V-shape" @@ -11198,8 +12252,6 @@ msgstr "" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:126 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:100 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:109 -#: appTools/ToolIsolation.py:248 appTools/ToolNCC.py:262 -#: appTools/ToolNCC.py:271 appTools/ToolPaint.py:244 appTools/ToolPaint.py:253 msgid "" "Depth of cut into material. Negative value.\n" "In FlatCAM units." @@ -11210,8 +12262,8 @@ msgstr "" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:136 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:119 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:125 -#: appTools/ToolIsolation.py:262 appTools/ToolNCC.py:280 -#: appTools/ToolPaint.py:262 +#: appTools/ToolIsolation.py:3055 appTools/ToolNCC.py:3860 +#: appTools/ToolPaint.py:2883 msgid "" "Diameter for the new tool to add in the Tool Table.\n" "If the tool is V-shape type then this value is automatically\n" @@ -11225,13 +12277,13 @@ msgstr "" #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:288 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:244 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:245 -#: appTools/ToolIsolation.py:432 appTools/ToolNCC.py:512 -#: appTools/ToolPaint.py:441 +#: appTools/ToolIsolation.py:3241 appTools/ToolNCC.py:4108 +#: appTools/ToolPaint.py:3067 msgid "Rest" msgstr "Rest" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:246 -#: appTools/ToolIsolation.py:435 +#: appTools/ToolIsolation.py:3244 msgid "" "If checked, use 'rest machining'.\n" "Basically it will isolate outside PCB features,\n" @@ -11250,22 +12302,22 @@ msgstr "" "If not checked, use the standard algorithm." #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:258 -#: appTools/ToolIsolation.py:457 +#: appTools/ToolIsolation.py:3266 msgid "Combine" msgstr "Combine" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:260 -#: appTools/ToolIsolation.py:459 +#: appTools/ToolIsolation.py:3268 msgid "Combine all passes into one object" msgstr "Combine all passes into one object" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:267 -#: appTools/ToolIsolation.py:466 +#: appTools/ToolIsolation.py:3275 msgid "Except" msgstr "Except" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:268 -#: appTools/ToolIsolation.py:467 +#: appTools/ToolIsolation.py:3276 msgid "" "When the isolation geometry is generated,\n" "by checking this, the area of the object below\n" @@ -11276,7 +12328,7 @@ msgstr "" "will be subtracted from the isolation geometry." #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:277 -#: appTools/ToolIsolation.py:506 +#: appTools/ToolIsolation.py:3315 msgid "" "Isolation scope. Choose what to isolate:\n" "- 'All' -> Isolate all the polygons in the object\n" @@ -11292,21 +12344,20 @@ msgstr "" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:285 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:280 -#: appTools/ToolIsolation.py:514 appTools/ToolIsolation.py:1335 -#: appTools/ToolIsolation.py:1724 appTools/ToolPaint.py:485 -#: appTools/ToolPaint.py:941 appTools/ToolPaint.py:1451 +#: appTools/ToolIsolation.py:825 appTools/ToolIsolation.py:1416 +#: appTools/ToolIsolation.py:3323 appTools/ToolPaint.py:1037 +#: appTools/ToolPaint.py:3125 appTools/ToolPaint.py:3241 #: tclCommands/TclCommandPaint.py:164 msgid "Polygon Selection" msgstr "Polygon Selection" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:305 -#: appTools/ToolIsolation.py:550 -#| msgid "Interior" +#: appTools/ToolIsolation.py:3359 msgid "Interiors" msgstr "Interiors" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:307 -#: appTools/ToolIsolation.py:552 +#: appTools/ToolIsolation.py:3361 msgid "" "When checked the user can select interiors of a polygon.\n" "(holes in the polygon)." @@ -11315,12 +12366,12 @@ msgstr "" "(holes in the polygon)." #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:312 -#: appTools/ToolIsolation.py:447 +#: appTools/ToolIsolation.py:3256 msgid "Forced Rest" msgstr "Forced Rest" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:314 -#: appTools/ToolIsolation.py:449 +#: appTools/ToolIsolation.py:3258 msgid "" "When checked the isolation will be done with the current tool even if\n" "interiors of a polygon (holes in the polygon) could not be isolated.\n" @@ -11345,11 +12396,11 @@ msgstr "Progressive" #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:329 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:341 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:305 -#: appObjects/AppObject.py:351 appObjects/FlatCAMObj.py:251 -#: appObjects/FlatCAMObj.py:282 appObjects/FlatCAMObj.py:298 -#: appObjects/FlatCAMObj.py:378 appTools/ToolCopperThieving.py:1491 -#: appTools/ToolCorners.py:411 appTools/ToolFiducials.py:813 -#: appTools/ToolMove.py:229 appTools/ToolQRCode.py:737 app_Main.py:4520 +#: appObjects/AppObject.py:439 appObjects/FlatCAMObj.py:255 +#: appObjects/FlatCAMObj.py:286 appObjects/FlatCAMObj.py:302 +#: appObjects/FlatCAMObj.py:382 appTools/ToolCopperThieving.py:1038 +#: appTools/ToolCorners.py:263 appTools/ToolFiducials.py:530 +#: appTools/ToolMove.py:229 appTools/ToolQRCode.py:460 app_Main.py:4676 msgid "Plotting" msgstr "Plotting" @@ -11391,7 +12442,7 @@ msgstr "" "from the copper features.\n" "The value can be between 0.0 and 9999.9 FlatCAM units." -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:290 appTools/ToolNCC.py:516 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:290 appTools/ToolNCC.py:4112 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -11409,7 +12460,7 @@ msgstr "" "no more copper to clear or there are no more tools.\n" "If not checked, use the standard algorithm." -#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:313 appTools/ToolNCC.py:541 +#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:313 appTools/ToolNCC.py:4192 msgid "" "Selection of area to be processed.\n" "- 'Itself' - the processing extent is based on the object that is " @@ -11443,7 +12494,7 @@ msgstr "" "In application units." #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:247 -#: appTools/ToolPaint.py:444 +#: appTools/ToolPaint.py:3070 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -11464,7 +12515,7 @@ msgstr "" "If not checked, use the standard algorithm." #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:260 -#: appTools/ToolPaint.py:457 +#: appTools/ToolPaint.py:3097 msgid "" "Selection of area to be processed.\n" "- 'Polygon Selection' - left mouse click to add/remove polygons to be " @@ -11501,12 +12552,12 @@ msgstr "" "at a X distance, Y distance of each other." #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:50 -#: appTools/ToolPanelize.py:165 +#: appTools/ToolPanelize.py:764 msgid "Spacing cols" msgstr "Spacing cols" #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:52 -#: appTools/ToolPanelize.py:167 +#: appTools/ToolPanelize.py:766 msgid "" "Spacing between columns of the desired panel.\n" "In current units." @@ -11515,12 +12566,12 @@ msgstr "" "In current units." #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:64 -#: appTools/ToolPanelize.py:177 +#: appTools/ToolPanelize.py:776 msgid "Spacing rows" msgstr "Spacing rows" #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:66 -#: appTools/ToolPanelize.py:179 +#: appTools/ToolPanelize.py:778 msgid "" "Spacing between rows of the desired panel.\n" "In current units." @@ -11528,53 +12579,43 @@ msgstr "" "Spacing between rows of the desired panel.\n" "In current units." -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:77 -#: appTools/ToolPanelize.py:188 -msgid "Columns" -msgstr "Columns" - #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:79 -#: appTools/ToolPanelize.py:190 +#: appTools/ToolPanelize.py:789 msgid "Number of columns of the desired panel" msgstr "Number of columns of the desired panel" -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:89 -#: appTools/ToolPanelize.py:198 -msgid "Rows" -msgstr "Rows" - #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:91 -#: appTools/ToolPanelize.py:200 +#: appTools/ToolPanelize.py:799 msgid "Number of rows of the desired panel" msgstr "Number of rows of the desired panel" #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:97 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:76 -#: appTools/ToolAlignObjects.py:73 appTools/ToolAlignObjects.py:109 -#: appTools/ToolCalibration.py:196 appTools/ToolCalibration.py:631 -#: appTools/ToolCalibration.py:648 appTools/ToolCalibration.py:807 -#: appTools/ToolCalibration.py:815 appTools/ToolCopperThieving.py:148 -#: appTools/ToolCopperThieving.py:162 appTools/ToolCopperThieving.py:608 -#: appTools/ToolCutOut.py:91 appTools/ToolDblSided.py:224 -#: appTools/ToolFilm.py:68 appTools/ToolFilm.py:91 appTools/ToolImage.py:49 -#: appTools/ToolImage.py:252 appTools/ToolImage.py:273 -#: appTools/ToolIsolation.py:475 appTools/ToolIsolation.py:527 -#: appTools/ToolIsolation.py:1306 appTools/ToolNCC.py:96 -#: appTools/ToolNCC.py:558 appTools/ToolNCC.py:1318 appTools/ToolPaint.py:501 -#: appTools/ToolPaint.py:705 appTools/ToolPanelize.py:116 -#: appTools/ToolPanelize.py:210 appTools/ToolPanelize.py:385 -#: appTools/ToolPanelize.py:403 appTools/ToolTransform.py:98 -#: appTools/ToolTransform.py:535 defaults.py:506 +#: appTools/ToolAlignObjects.py:398 appTools/ToolAlignObjects.py:434 +#: appTools/ToolCalibration.py:163 appTools/ToolCalibration.py:171 +#: appTools/ToolCalibration.py:891 appTools/ToolCalibration.py:1326 +#: appTools/ToolCalibration.py:1343 appTools/ToolCopperThieving.py:163 +#: appTools/ToolCopperThieving.py:1237 appTools/ToolCopperThieving.py:1251 +#: appTools/ToolCutOut.py:1768 appTools/ToolDblSided.py:528 +#: appTools/ToolDblSided.py:772 appTools/ToolFilm.py:781 +#: appTools/ToolFilm.py:804 appTools/ToolImage.py:117 appTools/ToolImage.py:138 +#: appTools/ToolImage.py:191 appTools/ToolIsolation.py:796 +#: appTools/ToolIsolation.py:3284 appTools/ToolIsolation.py:3336 +#: appTools/ToolNCC.py:792 appTools/ToolNCC.py:3741 appTools/ToolNCC.py:4209 +#: appTools/ToolPaint.py:167 appTools/ToolPaint.py:3141 +#: appTools/ToolPanelize.py:147 appTools/ToolPanelize.py:167 +#: appTools/ToolPanelize.py:715 appTools/ToolPanelize.py:809 +#: appTools/ToolTransform.py:126 appTools/ToolTransform.py:585 defaults.py:558 msgid "Gerber" msgstr "Gerber" #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:98 -#: appTools/ToolPanelize.py:211 +#: appTools/ToolPanelize.py:810 msgid "Geo" msgstr "Geo" #: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:99 -#: appTools/ToolPanelize.py:212 +#: appTools/ToolPanelize.py:811 msgid "Panel Type" msgstr "Panel Type" @@ -11588,12 +12629,21 @@ msgstr "" "- Gerber\n" "- Geometry" -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:110 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:112 +#: appTools/ToolPanelize.py:823 +msgid "" +"Active only for Geometry panel type.\n" +"When checked the application will find\n" +"any two overlapping Line elements in the panel\n" +"and remove the overlapping parts, keeping only one of them." +msgstr "" + +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:120 msgid "Constrain within" msgstr "Constrain within" -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:112 -#: appTools/ToolPanelize.py:224 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:122 +#: appTools/ToolPanelize.py:833 msgid "" "Area define by DX and DY within to constrain the panel.\n" "DX and DY values are in current units.\n" @@ -11607,13 +12657,13 @@ msgstr "" "the final panel will have as many columns and rows as\n" "they fit completely within selected area." -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:125 -#: appTools/ToolPanelize.py:236 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:135 +#: appTools/ToolPanelize.py:845 msgid "Width (DX)" msgstr "Width (DX)" -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:127 -#: appTools/ToolPanelize.py:238 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:137 +#: appTools/ToolPanelize.py:847 msgid "" "The width (DX) within which the panel must fit.\n" "In current units." @@ -11621,13 +12671,13 @@ msgstr "" "The width (DX) within which the panel must fit.\n" "In current units." -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:138 -#: appTools/ToolPanelize.py:247 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:148 +#: appTools/ToolPanelize.py:856 msgid "Height (DY)" msgstr "Height (DY)" -#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:140 -#: appTools/ToolPanelize.py:249 +#: appGUI/preferences/tools/ToolsPanelizePrefGroupUI.py:150 +#: appTools/ToolPanelize.py:858 msgid "" "The height (DY)within which the panel must fit.\n" "In current units." @@ -11652,47 +12702,47 @@ msgid "New Nozzle Dia" msgstr "New Nozzle Dia" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:56 -#: appTools/ToolSolderPaste.py:112 +#: appTools/ToolSolderPaste.py:1188 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" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:72 -#: appTools/ToolSolderPaste.py:179 +#: appTools/ToolSolderPaste.py:1255 msgid "Z Dispense Start" msgstr "Z Dispense Start" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:74 -#: appTools/ToolSolderPaste.py:181 +#: appTools/ToolSolderPaste.py:1257 msgid "The height (Z) when solder paste dispensing starts." msgstr "The height (Z) when solder paste dispensing starts." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:85 -#: appTools/ToolSolderPaste.py:191 +#: appTools/ToolSolderPaste.py:1267 msgid "Z Dispense" msgstr "Z Dispense" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:87 -#: appTools/ToolSolderPaste.py:193 +#: appTools/ToolSolderPaste.py:1269 msgid "The height (Z) when doing solder paste dispensing." msgstr "The height (Z) when doing solder paste dispensing." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:98 -#: appTools/ToolSolderPaste.py:203 +#: appTools/ToolSolderPaste.py:1279 msgid "Z Dispense Stop" msgstr "Z Dispense Stop" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:100 -#: appTools/ToolSolderPaste.py:205 +#: appTools/ToolSolderPaste.py:1281 msgid "The height (Z) when solder paste dispensing stops." msgstr "The height (Z) when solder paste dispensing stops." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:111 -#: appTools/ToolSolderPaste.py:215 +#: appTools/ToolSolderPaste.py:1291 msgid "Z Travel" msgstr "Z Travel" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:113 -#: appTools/ToolSolderPaste.py:217 +#: appTools/ToolSolderPaste.py:1293 msgid "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." @@ -11701,17 +12751,17 @@ msgstr "" "(without dispensing solder paste)." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:125 -#: appTools/ToolSolderPaste.py:228 +#: appTools/ToolSolderPaste.py:1304 msgid "Z Toolchange" msgstr "Z Toolchange" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:127 -#: appTools/ToolSolderPaste.py:230 +#: appTools/ToolSolderPaste.py:1306 msgid "The height (Z) for tool (nozzle) change." msgstr "The height (Z) for tool (nozzle) change." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:136 -#: appTools/ToolSolderPaste.py:238 +#: appTools/ToolSolderPaste.py:1314 msgid "" "The X,Y location for tool (nozzle) change.\n" "The format is (x, y) where x and y are real numbers." @@ -11720,12 +12770,12 @@ msgstr "" "The format is (x, y) where x and y are real numbers." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:150 -#: appTools/ToolSolderPaste.py:251 +#: appTools/ToolSolderPaste.py:1327 msgid "Feedrate (speed) while moving on the X-Y plane." msgstr "Feedrate (speed) while moving on the X-Y plane." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:163 -#: appTools/ToolSolderPaste.py:263 +#: appTools/ToolSolderPaste.py:1339 msgid "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." @@ -11734,7 +12784,7 @@ msgstr "" "(on Z plane)." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:175 -#: appTools/ToolSolderPaste.py:274 +#: appTools/ToolSolderPaste.py:1350 msgid "Feedrate Z Dispense" msgstr "Feedrate Z Dispense" @@ -11747,12 +12797,12 @@ msgstr "" "to Dispense position (on Z plane)." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:188 -#: appTools/ToolSolderPaste.py:286 +#: appTools/ToolSolderPaste.py:1362 msgid "Spindle Speed FWD" msgstr "Spindle Speed FWD" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:190 -#: appTools/ToolSolderPaste.py:288 +#: appTools/ToolSolderPaste.py:1364 msgid "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." @@ -11761,22 +12811,22 @@ msgstr "" "through the dispenser nozzle." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:202 -#: appTools/ToolSolderPaste.py:299 +#: appTools/ToolSolderPaste.py:1375 msgid "Dwell FWD" msgstr "Dwell FWD" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:204 -#: appTools/ToolSolderPaste.py:301 +#: appTools/ToolSolderPaste.py:1377 msgid "Pause after solder dispensing." msgstr "Pause after solder dispensing." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:214 -#: appTools/ToolSolderPaste.py:310 +#: appTools/ToolSolderPaste.py:1386 msgid "Spindle Speed REV" msgstr "Spindle Speed REV" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:216 -#: appTools/ToolSolderPaste.py:312 +#: appTools/ToolSolderPaste.py:1388 msgid "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." @@ -11785,12 +12835,12 @@ msgstr "" "through the dispenser nozzle." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:228 -#: appTools/ToolSolderPaste.py:323 +#: appTools/ToolSolderPaste.py:1399 msgid "Dwell REV" msgstr "Dwell REV" #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:230 -#: appTools/ToolSolderPaste.py:325 +#: appTools/ToolSolderPaste.py:1401 msgid "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." @@ -11799,7 +12849,7 @@ msgstr "" "to allow pressure equilibrium." #: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:239 -#: appTools/ToolSolderPaste.py:333 +#: appTools/ToolSolderPaste.py:1409 msgid "Files that control the GCode generation." msgstr "Files that control the GCode generation." @@ -11815,7 +12865,7 @@ msgstr "" "A tool to substract one Gerber or Geometry object\n" "from another of the same type." -#: appGUI/preferences/tools/ToolsSubPrefGroupUI.py:38 appTools/ToolSub.py:160 +#: appGUI/preferences/tools/ToolsSubPrefGroupUI.py:38 appTools/ToolSub.py:731 msgid "Close paths" msgstr "Close paths" @@ -11838,7 +12888,7 @@ msgstr "" "on a application object." #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:46 -#: appTools/ToolTransform.py:62 +#: appTools/ToolTransform.py:549 msgid "" "The reference point for Rotate, Skew, Scale, Mirror.\n" "Can be:\n" @@ -11855,7 +12905,7 @@ msgstr "" "- Object -> the center of the bounding box of a specific object" #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:72 -#: appTools/ToolTransform.py:94 +#: appTools/ToolTransform.py:581 msgid "The type of object used as reference." msgstr "The type of object used as reference." @@ -11865,7 +12915,7 @@ msgstr "Skew" #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:126 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:140 -#: appTools/ToolCalibration.py:505 appTools/ToolCalibration.py:518 +#: appTools/ToolCalibration.py:1200 appTools/ToolCalibration.py:1213 msgid "" "Angle for Skew action, in degrees.\n" "Float number between -360 and 359." @@ -12025,7 +13075,7 @@ msgstr "GCode File associations" msgid "Gerber File associations" msgstr "Gerber File associations" -#: appObjects/AppObject.py:134 +#: appObjects/AppObject.py:157 #, python-brace-format msgid "" "Object ({kind}) failed because: {error} \n" @@ -12034,23 +13084,32 @@ msgstr "" "Object ({kind}) failed because: {error} \n" "\n" -#: appObjects/AppObject.py:151 +#: appObjects/AppObject.py:176 msgid "Converting units to " msgstr "Converting units to " -#: appObjects/AppObject.py:256 +#: appObjects/AppObject.py:248 appObjects/FlatCAMGeometry.py:128 +#: appObjects/FlatCAMGeometry.py:514 appObjects/FlatCAMGeometry.py:991 +#: appObjects/FlatCAMGerber.py:522 appObjects/FlatCAMGerber.py:665 +#: appTools/ToolCutOut.py:440 appTools/ToolIsolation.py:1585 +#: appTools/ToolIsolation.py:1747 appTools/ToolIsolation.py:1940 camlib.py:1173 +#: camlib.py:1234 +msgid "Rough" +msgstr "Rough" + +#: appObjects/AppObject.py:302 msgid "CREATE A NEW FLATCAM TCL SCRIPT" msgstr "CREATE A NEW FLATCAM TCL SCRIPT" -#: appObjects/AppObject.py:257 +#: appObjects/AppObject.py:303 msgid "TCL Tutorial is here" msgstr "TCL Tutorial is here" -#: appObjects/AppObject.py:259 +#: appObjects/AppObject.py:305 msgid "FlatCAM commands list" msgstr "FlatCAM commands list" -#: appObjects/AppObject.py:260 +#: appObjects/AppObject.py:306 msgid "" "Type >help< followed by Run Code for a list of FlatCAM Tcl Commands " "(displayed in Tcl Shell)." @@ -12058,198 +13117,269 @@ msgstr "" "Type >help< followed by Run Code for a list of FlatCAM Tcl Commands " "(displayed in Tcl Shell)." -#: appObjects/AppObject.py:306 appObjects/AppObject.py:312 -#: appObjects/AppObject.py:318 appObjects/AppObject.py:324 -#: appObjects/AppObject.py:330 appObjects/AppObject.py:336 +#: appObjects/AppObject.py:357 appObjects/AppObject.py:363 +#: appObjects/AppObject.py:369 appObjects/AppObject.py:375 +#: appObjects/AppObject.py:381 appObjects/AppObject.py:387 msgid "created/selected" msgstr "created/selected" -#: appObjects/FlatCAMCNCJob.py:429 appObjects/FlatCAMDocument.py:71 +#: appObjects/FlatCAMCNCJob.py:618 appObjects/FlatCAMDocument.py:71 #: appObjects/FlatCAMScript.py:82 msgid "Basic" msgstr "Basic" -#: appObjects/FlatCAMCNCJob.py:435 appObjects/FlatCAMDocument.py:75 +#: appObjects/FlatCAMCNCJob.py:625 appObjects/FlatCAMDocument.py:75 #: appObjects/FlatCAMScript.py:86 msgid "Advanced" msgstr "Advanced" -#: appObjects/FlatCAMCNCJob.py:478 -msgid "Plotting..." -msgstr "Plotting..." +#: appObjects/FlatCAMCNCJob.py:740 +#, fuzzy +#| msgid "Click on Start point ..." +msgid "Click on canvas to add a Probe Point..." +msgstr "Click on Start point ..." -#: appObjects/FlatCAMCNCJob.py:517 appTools/ToolSolderPaste.py:1511 +#: appObjects/FlatCAMCNCJob.py:926 +#, fuzzy +#| msgid "" +#| "Zone added. Click to start adding next zone or right click to finish." +msgid "" +"Added a Probe Point... Click again to add another or right click to " +"finish ..." +msgstr "Zone added. Click to start adding next zone or right click to finish." + +#: appObjects/FlatCAMCNCJob.py:948 +#, fuzzy +#| msgid "Finished G-Code processing..." +msgid "Finished adding Probe Points..." +msgstr "Finished G-Code processing..." + +#: appObjects/FlatCAMCNCJob.py:1117 +#, fuzzy +#| msgid "Click to place ..." +msgid "COM list updated ..." +msgstr "Click to place ..." + +#: appObjects/FlatCAMCNCJob.py:1153 +#, fuzzy +#| msgid "Connect" +msgid "Connected" +msgstr "Connect" + +#: appObjects/FlatCAMCNCJob.py:1164 +msgid "Port connected" +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1168 +msgid "Could not connect to GRBL on port" +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1185 +msgid "Port is connected. Disconnecting" +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1187 +#, fuzzy +#| msgid "Could not retrieve box object" +msgid "Could not connect to port" +msgstr "Could not retrieve box object" + +#: appObjects/FlatCAMCNCJob.py:1217 appObjects/FlatCAMCNCJob.py:1634 +#, fuzzy +#| msgid "Opening G-Code." +msgid "Sending GCode..." +msgstr "Opening G-Code." + +#: appObjects/FlatCAMCNCJob.py:1346 +msgid "GRBL is doing a home cycle." +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1352 +msgid "GRBL software reset was sent." +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1360 +msgid "GRBL resumed." +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1364 +msgid "GRBL paused." +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1493 appObjects/FlatCAMCNCJob.py:1728 +#: appTools/ToolSolderPaste.py:1066 msgid "Export cancelled ..." msgstr "Export cancelled ..." -#: appObjects/FlatCAMCNCJob.py:538 -msgid "File saved to" -msgstr "File saved to" - -#: appObjects/FlatCAMCNCJob.py:548 appObjects/FlatCAMScript.py:134 -#: app_Main.py:7425 +#: appObjects/FlatCAMCNCJob.py:1517 appObjects/FlatCAMCNCJob.py:1764 +#: appObjects/FlatCAMScript.py:134 app_Main.py:7807 msgid "Loading..." msgstr "Loading..." -#: appObjects/FlatCAMCNCJob.py:562 app_Main.py:7522 -msgid "Code Editor" -msgstr "Code Editor" +#: appObjects/FlatCAMCNCJob.py:1521 +#, fuzzy +#| msgid "There is no such parameter" +msgid "There is nothing to view" +msgstr "There is no such parameter" -#: appObjects/FlatCAMCNCJob.py:599 appTools/ToolCalibration.py:1097 -msgid "Loaded Machine Code into Code Editor" +#: appObjects/FlatCAMCNCJob.py:1527 +#, fuzzy +#| msgid "Gcode Viewer" +msgid "Code Viewer" +msgstr "Gcode Viewer" + +#: appObjects/FlatCAMCNCJob.py:1565 +#, fuzzy +#| msgid "Loaded Machine Code into Code Editor" +msgid "Loaded Machine Code into Code Viewer" msgstr "Loaded Machine Code into Code Editor" -#: appObjects/FlatCAMCNCJob.py:740 +#: appObjects/FlatCAMCNCJob.py:1611 +#, fuzzy +#| msgid "Failed to open config file" +msgid "Failed to open height map file" +msgstr "Failed to open config file" + +#: appObjects/FlatCAMCNCJob.py:1660 +msgid "Finished probing. Doing the autolevelling." +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1665 +msgid "Sending probing GCode to the GRBL controller." +msgstr "" + +#: appObjects/FlatCAMCNCJob.py:1670 +#, fuzzy +#| msgid "Finished G-Code processing..." +msgid "Finished autolevelling." +msgstr "Finished G-Code processing..." + +#: appObjects/FlatCAMCNCJob.py:1684 +msgid "Plotting..." +msgstr "Plotting..." + +#: appObjects/FlatCAMCNCJob.py:1754 +msgid "File saved to" +msgstr "File saved to" + +#: appObjects/FlatCAMCNCJob.py:1778 +#, fuzzy +#| msgid "Gcode Viewer" +msgid "Code Review" +msgstr "Gcode Viewer" + +#: appObjects/FlatCAMCNCJob.py:1961 msgid "This CNCJob object can't be processed because it is a" msgstr "This CNCJob object can't be processed because it is a" -#: appObjects/FlatCAMCNCJob.py:742 +#: appObjects/FlatCAMCNCJob.py:1963 msgid "CNCJob object" msgstr "CNCJob object" -#: appObjects/FlatCAMCNCJob.py:922 +#: appObjects/FlatCAMCNCJob.py:2073 msgid "" -"G-code does not have a G94 code and we will not include the code in the " -"'Prepend to GCode' text box" +"G-code does not have a G94 code.\n" +"Append Code snippet will not be used.." msgstr "" -"G-code does not have a G94 code and we will not include the code in the " -"'Prepend to GCode' text box" -#: appObjects/FlatCAMCNCJob.py:933 -msgid "Cancelled. The Toolchange Custom code is enabled but it's empty." -msgstr "Cancelled. The Toolchange Custom code is enabled but it's empty." - -#: appObjects/FlatCAMCNCJob.py:938 -msgid "Toolchange G-code was replaced by a custom code." -msgstr "Toolchange G-code was replaced by a custom code." - -#: appObjects/FlatCAMCNCJob.py:986 appObjects/FlatCAMCNCJob.py:995 -msgid "" -"The used preprocessor file has to have in it's name: 'toolchange_custom'" -msgstr "" -"The used preprocessor file has to have in it's name: 'toolchange_custom'" - -#: appObjects/FlatCAMCNCJob.py:998 -msgid "There is no preprocessor file." -msgstr "There is no preprocessor file." - -#: appObjects/FlatCAMDocument.py:175 +#: appObjects/FlatCAMDocument.py:173 msgid "Document Editor" msgstr "Document Editor" -#: appObjects/FlatCAMExcellon.py:537 appObjects/FlatCAMExcellon.py:856 -#: appObjects/FlatCAMGeometry.py:380 appObjects/FlatCAMGeometry.py:861 -#: appTools/ToolIsolation.py:1076 appTools/ToolIsolation.py:1210 -#: appTools/ToolNCC.py:811 appTools/ToolNCC.py:1214 appTools/ToolPaint.py:778 -#: appTools/ToolPaint.py:1190 -msgid "Multiple Tools" -msgstr "Multiple Tools" - -#: appObjects/FlatCAMExcellon.py:836 -msgid "No Tool Selected" -msgstr "No Tool Selected" - -#: appObjects/FlatCAMExcellon.py:1234 appObjects/FlatCAMExcellon.py:1348 -#: appObjects/FlatCAMExcellon.py:1535 +#: appObjects/FlatCAMExcellon.py:848 appObjects/FlatCAMExcellon.py:956 +#: appTools/ToolDrilling.py:1598 appTools/ToolMilling.py:1038 +#: appTools/ToolMilling.py:1154 appTools/ToolMilling.py:1340 msgid "Please select one or more tools from the list and try again." msgstr "Please select one or more tools from the list and try again." -#: appObjects/FlatCAMExcellon.py:1241 +#: appObjects/FlatCAMExcellon.py:853 appTools/ToolMilling.py:1045 msgid "Milling tool for DRILLS is larger than hole size. Cancelled." msgstr "Milling tool for DRILLS is larger than hole size. Cancelled." -#: appObjects/FlatCAMExcellon.py:1265 appObjects/FlatCAMExcellon.py:1368 -#: appObjects/FlatCAMExcellon.py:1553 tclCommands/TclCommandDrillcncjob.py:195 +#: appObjects/FlatCAMExcellon.py:876 appObjects/FlatCAMExcellon.py:976 +#: appTools/ToolDrilling.py:1748 appTools/ToolDrilling.py:1813 +#: appTools/ToolMilling.py:1071 appTools/ToolMilling.py:1175 +#: appTools/ToolMilling.py:1360 tclCommands/TclCommandDrillcncjob.py:195 msgid "Tool_nr" msgstr "Tool_nr" -#: appObjects/FlatCAMExcellon.py:1265 appObjects/FlatCAMExcellon.py:1368 -#: appObjects/FlatCAMExcellon.py:1553 tclCommands/TclCommandDrillcncjob.py:195 +#: appObjects/FlatCAMExcellon.py:876 appObjects/FlatCAMExcellon.py:976 +#: appTools/ToolDrilling.py:1748 appTools/ToolDrilling.py:1813 +#: appTools/ToolMilling.py:1071 appTools/ToolMilling.py:1175 +#: appTools/ToolMilling.py:1360 tclCommands/TclCommandDrillcncjob.py:195 msgid "Drills_Nr" msgstr "Drills_Nr" -#: appObjects/FlatCAMExcellon.py:1265 appObjects/FlatCAMExcellon.py:1368 -#: appObjects/FlatCAMExcellon.py:1553 tclCommands/TclCommandDrillcncjob.py:195 +#: appObjects/FlatCAMExcellon.py:876 appObjects/FlatCAMExcellon.py:976 +#: appTools/ToolDrilling.py:1748 appTools/ToolDrilling.py:1813 +#: appTools/ToolMilling.py:1071 appTools/ToolMilling.py:1175 +#: appTools/ToolMilling.py:1360 tclCommands/TclCommandDrillcncjob.py:195 msgid "Slots_Nr" msgstr "Slots_Nr" -#: appObjects/FlatCAMExcellon.py:1357 +#: appObjects/FlatCAMExcellon.py:965 appTools/ToolMilling.py:1163 msgid "Milling tool for SLOTS is larger than hole size. Cancelled." msgstr "Milling tool for SLOTS is larger than hole size. Cancelled." -#: appObjects/FlatCAMExcellon.py:1461 appObjects/FlatCAMGeometry.py:1636 -msgid "Focus Z" -msgstr "Focus Z" - -#: appObjects/FlatCAMExcellon.py:1480 appObjects/FlatCAMGeometry.py:1655 -msgid "Laser Power" -msgstr "Laser Power" - -#: appObjects/FlatCAMExcellon.py:1610 appObjects/FlatCAMGeometry.py:2088 -#: appObjects/FlatCAMGeometry.py:2092 appObjects/FlatCAMGeometry.py:2243 -msgid "Generating CNC Code" -msgstr "Generating CNC Code" - -#: appObjects/FlatCAMExcellon.py:1663 appObjects/FlatCAMGeometry.py:2553 -msgid "Delete failed. There are no exclusion areas to delete." -msgstr "Delete failed. There are no exclusion areas to delete." - -#: appObjects/FlatCAMExcellon.py:1680 appObjects/FlatCAMGeometry.py:2570 -msgid "Delete failed. Nothing is selected." -msgstr "Delete failed. Nothing is selected." - -#: appObjects/FlatCAMExcellon.py:1945 appTools/ToolIsolation.py:1278 -#: appTools/ToolNCC.py:918 appTools/ToolPaint.py:843 -msgid "Current Tool parameters were applied to all tools." -msgstr "Current Tool parameters were applied to all tools." - -#: appObjects/FlatCAMGeometry.py:124 appObjects/FlatCAMGeometry.py:1298 -#: appObjects/FlatCAMGeometry.py:1299 appObjects/FlatCAMGeometry.py:1308 +#: appObjects/FlatCAMGeometry.py:128 appObjects/FlatCAMGeometry.py:1372 +#: appObjects/FlatCAMGeometry.py:1373 appObjects/FlatCAMGeometry.py:1382 msgid "Iso" msgstr "Iso" -#: appObjects/FlatCAMGeometry.py:124 appObjects/FlatCAMGeometry.py:522 -#: appObjects/FlatCAMGeometry.py:920 appObjects/FlatCAMGerber.py:578 -#: appObjects/FlatCAMGerber.py:721 appTools/ToolCutOut.py:727 -#: appTools/ToolCutOut.py:923 appTools/ToolCutOut.py:1083 -#: appTools/ToolIsolation.py:1881 appTools/ToolIsolation.py:2021 -#: appTools/ToolIsolation.py:2196 -msgid "Rough" -msgstr "Rough" - -#: appObjects/FlatCAMGeometry.py:124 +#: appObjects/FlatCAMGeometry.py:128 msgid "Finish" msgstr "Finish" -#: appObjects/FlatCAMGeometry.py:557 +#: appObjects/FlatCAMGeometry.py:388 appObjects/FlatCAMGeometry.py:829 +#: appObjects/FlatCAMGeometry.py:892 appTools/ToolDrilling.py:704 +#: appTools/ToolDrilling.py:976 appTools/ToolDrilling.py:1023 +#: appTools/ToolIsolation.py:525 appTools/ToolIsolation.py:638 +#: appTools/ToolIsolation.py:704 appTools/ToolMilling.py:628 +#: appTools/ToolMilling.py:749 appTools/ToolMilling.py:794 +#: appTools/ToolNCC.py:271 appTools/ToolNCC.py:337 appTools/ToolNCC.py:700 +#: appTools/ToolPaint.py:252 appTools/ToolPaint.py:316 +#: appTools/ToolPaint.py:654 +msgid "Multiple Tools" +msgstr "Multiple Tools" + +#: appObjects/FlatCAMGeometry.py:549 msgid "Add from Tool DB" msgstr "Add from Tool DB" -#: appObjects/FlatCAMGeometry.py:939 +#: appObjects/FlatCAMGeometry.py:824 appObjects/FlatCAMGeometry.py:863 +#: appTools/ToolDrilling.py:753 appTools/ToolDrilling.py:969 +#: appTools/ToolDrilling.py:1007 appTools/ToolIsolation.py:633 +#: appTools/ToolIsolation.py:668 appTools/ToolMilling.py:744 +#: appTools/ToolMilling.py:779 appTools/ToolNCC.py:266 appTools/ToolNCC.py:301 +#: appTools/ToolPaint.py:247 appTools/ToolPaint.py:282 app_Main.py:2188 +msgid "No Tool Selected" +msgstr "No Tool Selected" + +#: appObjects/FlatCAMGeometry.py:1010 msgid "Tool added in Tool Table." msgstr "Tool added in Tool Table." -#: appObjects/FlatCAMGeometry.py:1048 appObjects/FlatCAMGeometry.py:1057 +#: appObjects/FlatCAMGeometry.py:1119 appObjects/FlatCAMGeometry.py:1128 msgid "Failed. Select a tool to copy." msgstr "Failed. Select a tool to copy." -#: appObjects/FlatCAMGeometry.py:1086 +#: appObjects/FlatCAMGeometry.py:1157 msgid "Tool was copied in Tool Table." msgstr "Tool was copied in Tool Table." -#: appObjects/FlatCAMGeometry.py:1113 +#: appObjects/FlatCAMGeometry.py:1187 msgid "Tool was edited in Tool Table." msgstr "Tool was edited in Tool Table." -#: appObjects/FlatCAMGeometry.py:1142 appObjects/FlatCAMGeometry.py:1151 +#: appObjects/FlatCAMGeometry.py:1216 appObjects/FlatCAMGeometry.py:1225 msgid "Failed. Select a tool to delete." msgstr "Failed. Select a tool to delete." -#: appObjects/FlatCAMGeometry.py:1175 +#: appObjects/FlatCAMGeometry.py:1249 msgid "Tool was deleted in Tool Table." msgstr "Tool was deleted in Tool Table." -#: appObjects/FlatCAMGeometry.py:1212 appObjects/FlatCAMGeometry.py:1221 +#: appObjects/FlatCAMGeometry.py:1286 appObjects/FlatCAMGeometry.py:1295 msgid "" "Disabled because the tool is V-shape.\n" "For V-shape tools the depth of cut is\n" @@ -12267,19 +13397,29 @@ msgstr "" "- Tool Dia -> 'Dia' column found in the Tool Table\n" "NB: a value of zero means that Tool Dia = 'V-tip Dia'" -#: appObjects/FlatCAMGeometry.py:1708 +#: appObjects/FlatCAMGeometry.py:1710 appTools/ToolDrilling.py:1242 +#: appTools/ToolMilling.py:1256 +msgid "Focus Z" +msgstr "Focus Z" + +#: appObjects/FlatCAMGeometry.py:1729 appTools/ToolDrilling.py:1264 +#: appTools/ToolMilling.py:1275 +msgid "Laser Power" +msgstr "Laser Power" + +#: appObjects/FlatCAMGeometry.py:1782 msgid "This Geometry can't be processed because it is" msgstr "This Geometry can't be processed because it is" -#: appObjects/FlatCAMGeometry.py:1708 +#: appObjects/FlatCAMGeometry.py:1782 msgid "geometry" msgstr "geometry" -#: appObjects/FlatCAMGeometry.py:1749 +#: appObjects/FlatCAMGeometry.py:1813 msgid "Failed. No tool selected in the tool table ..." msgstr "Failed. No tool selected in the tool table ..." -#: appObjects/FlatCAMGeometry.py:1847 appObjects/FlatCAMGeometry.py:1997 +#: appObjects/FlatCAMGeometry.py:1913 appObjects/FlatCAMGeometry.py:2068 msgid "" "Tool Offset is selected in Tool Table but no value is provided.\n" "Add a Tool Offset or change the Offset Type." @@ -12287,45 +13427,51 @@ msgstr "" "Tool Offset is selected in Tool Table but no value is provided.\n" "Add a Tool Offset or change the Offset Type." -#: appObjects/FlatCAMGeometry.py:1913 appObjects/FlatCAMGeometry.py:2059 +#: appObjects/FlatCAMGeometry.py:1981 appObjects/FlatCAMGeometry.py:2131 msgid "G-Code parsing in progress..." msgstr "G-Code parsing in progress..." -#: appObjects/FlatCAMGeometry.py:1915 appObjects/FlatCAMGeometry.py:2061 +#: appObjects/FlatCAMGeometry.py:1983 appObjects/FlatCAMGeometry.py:2133 msgid "G-Code parsing finished..." msgstr "G-Code parsing finished..." -#: appObjects/FlatCAMGeometry.py:1923 +#: appObjects/FlatCAMGeometry.py:1991 msgid "Finished G-Code processing" msgstr "Finished G-Code processing" -#: appObjects/FlatCAMGeometry.py:1925 appObjects/FlatCAMGeometry.py:2073 +#: appObjects/FlatCAMGeometry.py:1993 appObjects/FlatCAMGeometry.py:2145 msgid "G-Code processing failed with error" msgstr "G-Code processing failed with error" -#: appObjects/FlatCAMGeometry.py:1967 appTools/ToolSolderPaste.py:1309 +#: appObjects/FlatCAMGeometry.py:2037 appTools/ToolSolderPaste.py:866 msgid "Cancelled. Empty file, it has no geometry" msgstr "Cancelled. Empty file, it has no geometry" -#: appObjects/FlatCAMGeometry.py:2071 appObjects/FlatCAMGeometry.py:2238 +#: appObjects/FlatCAMGeometry.py:2143 appObjects/FlatCAMGeometry.py:2313 msgid "Finished G-Code processing..." msgstr "Finished G-Code processing..." -#: appObjects/FlatCAMGeometry.py:2090 appObjects/FlatCAMGeometry.py:2094 -#: appObjects/FlatCAMGeometry.py:2245 +#: appObjects/FlatCAMGeometry.py:2162 appObjects/FlatCAMGeometry.py:2166 +#: appObjects/FlatCAMGeometry.py:2318 appTools/ToolDrilling.py:1946 +#: appTools/ToolMilling.py:1417 +msgid "Generating CNC Code" +msgstr "Generating CNC Code" + +#: appObjects/FlatCAMGeometry.py:2164 appObjects/FlatCAMGeometry.py:2168 +#: appObjects/FlatCAMGeometry.py:2320 msgid "CNCjob created" msgstr "CNCjob created" -#: appObjects/FlatCAMGeometry.py:2276 appObjects/FlatCAMGeometry.py:2285 -#: appParsers/ParseGerber.py:1867 appParsers/ParseGerber.py:1877 +#: appObjects/FlatCAMGeometry.py:2351 appObjects/FlatCAMGeometry.py:2360 +#: appParsers/ParseGerber.py:1953 appParsers/ParseGerber.py:1963 msgid "Scale factor has to be a number: integer or float." msgstr "Scale factor has to be a number: integer or float." -#: appObjects/FlatCAMGeometry.py:2348 +#: appObjects/FlatCAMGeometry.py:2423 msgid "Geometry Scale done." msgstr "Geometry Scale done." -#: appObjects/FlatCAMGeometry.py:2365 appParsers/ParseGerber.py:1993 +#: appObjects/FlatCAMGeometry.py:2440 appParsers/ParseGerber.py:2079 msgid "" "An (x,y) pair of values are needed. Probable you entered only one value in " "the Offset field." @@ -12333,11 +13479,11 @@ msgstr "" "An (x,y) pair of values are needed. Probable you entered only one value in " "the Offset field." -#: appObjects/FlatCAMGeometry.py:2421 +#: appObjects/FlatCAMGeometry.py:2496 msgid "Geometry Offset done." msgstr "Geometry Offset done." -#: appObjects/FlatCAMGeometry.py:2450 +#: appObjects/FlatCAMGeometry.py:2525 msgid "" "The Toolchange X,Y field in Edit -> Preferences has to be in the format (x, " "y)\n" @@ -12347,95 +13493,105 @@ msgstr "" "y)\n" "but now there is only one value, not two." -#: appObjects/FlatCAMGerber.py:403 appTools/ToolIsolation.py:1610 +#: appObjects/FlatCAMGeometry.py:2628 appTools/ToolDrilling.py:1362 +#: appTools/ToolMilling.py:1488 +msgid "Delete failed. There are no exclusion areas to delete." +msgstr "Delete failed. There are no exclusion areas to delete." + +#: appObjects/FlatCAMGeometry.py:2645 appTools/ToolDrilling.py:1379 +#: appTools/ToolMilling.py:1505 +msgid "Delete failed. Nothing is selected." +msgstr "Delete failed. Nothing is selected." + +#: appObjects/FlatCAMGerber.py:347 appTools/ToolIsolation.py:1302 msgid "Buffering solid geometry" msgstr "Buffering solid geometry" -#: appObjects/FlatCAMGerber.py:410 appTools/ToolIsolation.py:1632 +#: appObjects/FlatCAMGerber.py:354 appTools/ToolIsolation.py:1324 msgid "Done" msgstr "Done" -#: appObjects/FlatCAMGerber.py:436 appObjects/FlatCAMGerber.py:462 +#: appObjects/FlatCAMGerber.py:380 appObjects/FlatCAMGerber.py:406 msgid "Operation could not be done." msgstr "Operation could not be done." -#: appObjects/FlatCAMGerber.py:594 appObjects/FlatCAMGerber.py:668 -#: appTools/ToolIsolation.py:1844 appTools/ToolIsolation.py:2172 -#: appTools/ToolNCC.py:2117 appTools/ToolNCC.py:3197 appTools/ToolNCC.py:3576 +#: appObjects/FlatCAMGerber.py:538 appObjects/FlatCAMGerber.py:612 +#: appTools/ToolIsolation.py:1545 appTools/ToolIsolation.py:1913 +#: appTools/ToolNCC.py:1806 appTools/ToolNCC.py:2771 appTools/ToolNCC.py:3150 msgid "Isolation geometry could not be generated." msgstr "Isolation geometry could not be generated." -#: appObjects/FlatCAMGerber.py:619 appObjects/FlatCAMGerber.py:746 -#: appTools/ToolIsolation.py:1908 appTools/ToolIsolation.py:2077 -#: appTools/ToolIsolation.py:2248 +#: appObjects/FlatCAMGerber.py:563 appObjects/FlatCAMGerber.py:690 +#: appTools/ToolIsolation.py:1612 appTools/ToolIsolation.py:1808 +#: appTools/ToolIsolation.py:1997 msgid "Isolation geometry created" msgstr "Isolation geometry created" -#: appObjects/FlatCAMGerber.py:1041 +#: appObjects/FlatCAMGerber.py:972 msgid "Plotting Apertures" msgstr "Plotting Apertures" -#: appObjects/FlatCAMObj.py:237 +#: appObjects/FlatCAMObj.py:241 msgid "Name changed from" msgstr "Name changed from" -#: appObjects/FlatCAMObj.py:237 +#: appObjects/FlatCAMObj.py:241 msgid "to" msgstr "to" -#: appObjects/FlatCAMObj.py:248 +#: appObjects/FlatCAMObj.py:252 msgid "Offsetting..." msgstr "Offsetting..." -#: appObjects/FlatCAMObj.py:262 appObjects/FlatCAMObj.py:267 +#: appObjects/FlatCAMObj.py:266 appObjects/FlatCAMObj.py:271 msgid "Scaling could not be executed." msgstr "Scaling could not be executed." -#: appObjects/FlatCAMObj.py:271 appObjects/FlatCAMObj.py:279 +#: appObjects/FlatCAMObj.py:275 appObjects/FlatCAMObj.py:283 msgid "Scale done." msgstr "Scale done." -#: appObjects/FlatCAMObj.py:277 +#: appObjects/FlatCAMObj.py:281 msgid "Scaling..." msgstr "Scaling..." -#: appObjects/FlatCAMObj.py:295 +#: appObjects/FlatCAMObj.py:299 msgid "Skewing..." msgstr "Skewing..." -#: appObjects/FlatCAMScript.py:163 +#: appObjects/FlatCAMScript.py:160 msgid "Script Editor" msgstr "Script Editor" -#: appObjects/ObjectCollection.py:514 +#: appObjects/ObjectCollection.py:519 #, python-brace-format msgid "Object renamed from {old} to {new}" msgstr "Object renamed from {old} to {new}" -#: appObjects/ObjectCollection.py:926 appObjects/ObjectCollection.py:932 -#: appObjects/ObjectCollection.py:938 appObjects/ObjectCollection.py:944 -#: appObjects/ObjectCollection.py:950 appObjects/ObjectCollection.py:956 -#: app_Main.py:6359 app_Main.py:6365 app_Main.py:6371 app_Main.py:6377 +#: appObjects/ObjectCollection.py:933 appObjects/ObjectCollection.py:939 +#: appObjects/ObjectCollection.py:945 appObjects/ObjectCollection.py:951 +#: appObjects/ObjectCollection.py:957 appObjects/ObjectCollection.py:963 +#: app_Main.py:6696 app_Main.py:6702 app_Main.py:6708 app_Main.py:6714 msgid "selected" msgstr "selected" -#: appObjects/ObjectCollection.py:987 +#: appObjects/ObjectCollection.py:994 msgid "Cause of error" msgstr "Cause of error" -#: appObjects/ObjectCollection.py:1188 +#: appObjects/ObjectCollection.py:1195 msgid "All objects are selected." msgstr "All objects are selected." -#: appObjects/ObjectCollection.py:1198 +#: appObjects/ObjectCollection.py:1205 msgid "Objects selection is cleared." msgstr "Objects selection is cleared." -#: appParsers/ParseExcellon.py:315 +#: appParsers/ParseExcellon.py:292 msgid "This is GCODE mark" msgstr "This is GCODE mark" -#: appParsers/ParseExcellon.py:432 +#: appParsers/ParseExcellon.py:436 msgid "" "No tool diameter info's. See shell.\n" "A tool change event: T" @@ -12443,7 +13599,7 @@ msgstr "" "No tool diameter info's. See shell.\n" "A tool change event: T" -#: appParsers/ParseExcellon.py:435 +#: appParsers/ParseExcellon.py:439 msgid "" "was found but the Excellon file have no informations regarding the tool " "diameters therefore the application will try to load it by using some 'fake' " @@ -12457,7 +13613,7 @@ msgstr "" "The user needs to edit the resulting Excellon object and change the " "diameters to reflect the real diameters." -#: appParsers/ParseExcellon.py:899 +#: appParsers/ParseExcellon.py:975 msgid "" "Excellon Parser error.\n" "Parsing Failed. Line" @@ -12465,40 +13621,30 @@ msgstr "" "Excellon Parser error.\n" "Parsing Failed. Line" -#: appParsers/ParseExcellon.py:981 -msgid "" -"Excellon.create_geometry() -> a drill location was skipped due of not having " -"a tool associated.\n" -"Check the resulting GCode." -msgstr "" -"Excellon.create_geometry() -> a drill location was skipped due of not having " -"a tool associated.\n" -"Check the resulting GCode." - #: appParsers/ParseFont.py:303 msgid "Font not supported, try another one." msgstr "Font not supported, try another one." -#: appParsers/ParseGerber.py:425 +#: appParsers/ParseGerber.py:426 msgid "Gerber processing. Parsing" msgstr "Gerber processing. Parsing" -#: appParsers/ParseGerber.py:425 appParsers/ParseHPGL2.py:181 +#: appParsers/ParseGerber.py:426 appParsers/ParseHPGL2.py:201 msgid "lines" msgstr "lines" -#: appParsers/ParseGerber.py:1001 appParsers/ParseGerber.py:1101 -#: appParsers/ParseHPGL2.py:274 appParsers/ParseHPGL2.py:288 -#: appParsers/ParseHPGL2.py:307 appParsers/ParseHPGL2.py:331 -#: appParsers/ParseHPGL2.py:366 +#: appParsers/ParseGerber.py:1037 appParsers/ParseGerber.py:1137 +#: appParsers/ParseHPGL2.py:294 appParsers/ParseHPGL2.py:308 +#: appParsers/ParseHPGL2.py:327 appParsers/ParseHPGL2.py:351 +#: appParsers/ParseHPGL2.py:386 msgid "Coordinates missing, line ignored" msgstr "Coordinates missing, line ignored" -#: appParsers/ParseGerber.py:1003 appParsers/ParseGerber.py:1103 +#: appParsers/ParseGerber.py:1039 appParsers/ParseGerber.py:1139 msgid "GERBER file might be CORRUPT. Check the file !!!" msgstr "GERBER file might be CORRUPT. Check the file !!!" -#: appParsers/ParseGerber.py:1057 +#: appParsers/ParseGerber.py:1093 msgid "" "Region does not have enough points. File will be processed but there are " "parser errors. Line number" @@ -12506,63 +13652,63 @@ msgstr "" "Region does not have enough points. File will be processed but there are " "parser errors. Line number" -#: appParsers/ParseGerber.py:1487 appParsers/ParseHPGL2.py:401 +#: appParsers/ParseGerber.py:1523 appParsers/ParseHPGL2.py:421 msgid "Gerber processing. Joining polygons" msgstr "Gerber processing. Joining polygons" -#: appParsers/ParseGerber.py:1505 +#: appParsers/ParseGerber.py:1541 msgid "Gerber processing. Applying Gerber polarity." msgstr "Gerber processing. Applying Gerber polarity." -#: appParsers/ParseGerber.py:1565 +#: appParsers/ParseGerber.py:1601 msgid "Gerber Line" msgstr "Gerber Line" -#: appParsers/ParseGerber.py:1565 +#: appParsers/ParseGerber.py:1601 msgid "Gerber Line Content" msgstr "Gerber Line Content" -#: appParsers/ParseGerber.py:1567 +#: appParsers/ParseGerber.py:1603 msgid "Gerber Parser ERROR" msgstr "Gerber Parser ERROR" -#: appParsers/ParseGerber.py:1957 +#: appParsers/ParseGerber.py:2043 msgid "Gerber Scale done." msgstr "Gerber Scale done." -#: appParsers/ParseGerber.py:2049 +#: appParsers/ParseGerber.py:2135 msgid "Gerber Offset done." msgstr "Gerber Offset done." -#: appParsers/ParseGerber.py:2125 +#: appParsers/ParseGerber.py:2211 msgid "Gerber Mirror done." msgstr "Gerber Mirror done." -#: appParsers/ParseGerber.py:2199 +#: appParsers/ParseGerber.py:2285 msgid "Gerber Skew done." msgstr "Gerber Skew done." -#: appParsers/ParseGerber.py:2261 +#: appParsers/ParseGerber.py:2347 msgid "Gerber Rotate done." msgstr "Gerber Rotate done." -#: appParsers/ParseGerber.py:2418 +#: appParsers/ParseGerber.py:2504 msgid "Gerber Buffer done." msgstr "Gerber Buffer done." -#: appParsers/ParseHPGL2.py:181 +#: appParsers/ParseHPGL2.py:201 msgid "HPGL2 processing. Parsing" msgstr "HPGL2 processing. Parsing" -#: appParsers/ParseHPGL2.py:413 +#: appParsers/ParseHPGL2.py:433 msgid "HPGL2 Line" msgstr "HPGL2 Line" -#: appParsers/ParseHPGL2.py:413 +#: appParsers/ParseHPGL2.py:433 msgid "HPGL2 Line Content" msgstr "HPGL2 Line Content" -#: appParsers/ParseHPGL2.py:414 +#: appParsers/ParseHPGL2.py:434 msgid "HPGL2 Parser ERROR" msgstr "HPGL2 Parser ERROR" @@ -12570,983 +13716,893 @@ msgstr "HPGL2 Parser ERROR" msgid "processes running." msgstr "processes running." -#: appTools/ToolAlignObjects.py:32 +#: appTools/ToolAlignObjects.py:32 appTools/ToolAlignObjects.py:360 msgid "Align Objects" msgstr "Align Objects" -#: appTools/ToolAlignObjects.py:61 -msgid "MOVING object" -msgstr "MOVING object" - -#: appTools/ToolAlignObjects.py:65 -msgid "" -"Specify the type of object to be aligned.\n" -"It can be of type: Gerber or Excellon.\n" -"The selection here decide the type of objects that will be\n" -"in the Object combobox." -msgstr "" -"Specify the type of object to be aligned.\n" -"It can be of type: Gerber or Excellon.\n" -"The selection here decide the type of objects that will be\n" -"in the Object combobox." - -#: appTools/ToolAlignObjects.py:86 -msgid "Object to be aligned." -msgstr "Object to be aligned." - -#: appTools/ToolAlignObjects.py:98 -msgid "TARGET object" -msgstr "TARGET object" - -#: appTools/ToolAlignObjects.py:100 -msgid "" -"Specify the type of object to be aligned to.\n" -"It can be of type: Gerber or Excellon.\n" -"The selection here decide the type of objects that will be\n" -"in the Object combobox." -msgstr "" -"Specify the type of object to be aligned to.\n" -"It can be of type: Gerber or Excellon.\n" -"The selection here decide the type of objects that will be\n" -"in the Object combobox." - -#: appTools/ToolAlignObjects.py:122 -msgid "Object to be aligned to. Aligner." -msgstr "Object to be aligned to. Aligner." - -#: appTools/ToolAlignObjects.py:135 -msgid "Alignment Type" -msgstr "Alignment Type" - -#: appTools/ToolAlignObjects.py:137 -msgid "" -"The type of alignment can be:\n" -"- Single Point -> it require a single point of sync, the action will be a " -"translation\n" -"- Dual Point -> it require two points of sync, the action will be " -"translation followed by rotation" -msgstr "" -"The type of alignment can be:\n" -"- Single Point -> it require a single point of sync, the action will be a " -"translation\n" -"- Dual Point -> it require two points of sync, the action will be " -"translation followed by rotation" - -#: appTools/ToolAlignObjects.py:143 -msgid "Single Point" -msgstr "Single Point" - -#: appTools/ToolAlignObjects.py:144 -msgid "Dual Point" -msgstr "Dual Point" - -#: appTools/ToolAlignObjects.py:159 -msgid "Align Object" -msgstr "Align Object" - -#: appTools/ToolAlignObjects.py:161 -msgid "" -"Align the specified object to the aligner object.\n" -"If only one point is used then it assumes translation.\n" -"If tho points are used it assume translation and rotation." -msgstr "" -"Align the specified object to the aligner object.\n" -"If only one point is used then it assumes translation.\n" -"If tho points are used it assume translation and rotation." - -#: appTools/ToolAlignObjects.py:176 appTools/ToolCalculators.py:246 -#: appTools/ToolCalibration.py:683 appTools/ToolCopperThieving.py:488 -#: appTools/ToolCorners.py:182 appTools/ToolCutOut.py:362 -#: appTools/ToolDblSided.py:471 appTools/ToolEtchCompensation.py:240 -#: appTools/ToolExtractDrills.py:310 appTools/ToolFiducials.py:321 -#: appTools/ToolFilm.py:503 appTools/ToolInvertGerber.py:143 -#: appTools/ToolIsolation.py:612 appTools/ToolNCC.py:612 -#: appTools/ToolOptimal.py:243 appTools/ToolPaint.py:555 -#: appTools/ToolPanelize.py:280 appTools/ToolPunchGerber.py:339 -#: appTools/ToolQRCode.py:323 appTools/ToolRulesCheck.py:516 -#: appTools/ToolSolderPaste.py:481 appTools/ToolSub.py:181 -#: appTools/ToolTransform.py:433 -msgid "Reset Tool" -msgstr "Reset Tool" - -#: appTools/ToolAlignObjects.py:178 appTools/ToolCalculators.py:248 -#: appTools/ToolCalibration.py:685 appTools/ToolCopperThieving.py:490 -#: appTools/ToolCorners.py:184 appTools/ToolCutOut.py:364 -#: appTools/ToolDblSided.py:473 appTools/ToolEtchCompensation.py:242 -#: appTools/ToolExtractDrills.py:312 appTools/ToolFiducials.py:323 -#: appTools/ToolFilm.py:505 appTools/ToolInvertGerber.py:145 -#: appTools/ToolIsolation.py:614 appTools/ToolNCC.py:614 -#: appTools/ToolOptimal.py:245 appTools/ToolPaint.py:557 -#: appTools/ToolPanelize.py:282 appTools/ToolPunchGerber.py:341 -#: appTools/ToolQRCode.py:325 appTools/ToolRulesCheck.py:518 -#: appTools/ToolSolderPaste.py:483 appTools/ToolSub.py:183 -#: appTools/ToolTransform.py:435 -msgid "Will reset the tool parameters." -msgstr "Will reset the tool parameters." - -#: appTools/ToolAlignObjects.py:244 +#: appTools/ToolAlignObjects.py:104 msgid "Align Tool" msgstr "Align Tool" -#: appTools/ToolAlignObjects.py:289 +#: appTools/ToolAlignObjects.py:149 msgid "There is no aligned FlatCAM object selected..." msgstr "There is no aligned FlatCAM object selected..." -#: appTools/ToolAlignObjects.py:299 +#: appTools/ToolAlignObjects.py:159 msgid "There is no aligner FlatCAM object selected..." msgstr "There is no aligner FlatCAM object selected..." -#: appTools/ToolAlignObjects.py:321 appTools/ToolAlignObjects.py:385 +#: appTools/ToolAlignObjects.py:181 appTools/ToolAlignObjects.py:245 msgid "First Point" msgstr "First Point" -#: appTools/ToolAlignObjects.py:321 appTools/ToolAlignObjects.py:400 +#: appTools/ToolAlignObjects.py:181 appTools/ToolAlignObjects.py:260 msgid "Click on the START point." msgstr "Click on the START point." -#: appTools/ToolAlignObjects.py:380 appTools/ToolCalibration.py:920 +#: appTools/ToolAlignObjects.py:240 appTools/ToolCalibration.py:276 +#: appTools/ToolDblSided.py:285 msgid "Cancelled by user request." msgstr "Cancelled by user request." -#: appTools/ToolAlignObjects.py:385 appTools/ToolAlignObjects.py:407 +#: appTools/ToolAlignObjects.py:245 appTools/ToolAlignObjects.py:267 msgid "Click on the DESTINATION point." msgstr "Click on the DESTINATION point." -#: appTools/ToolAlignObjects.py:385 appTools/ToolAlignObjects.py:400 -#: appTools/ToolAlignObjects.py:407 +#: appTools/ToolAlignObjects.py:245 appTools/ToolAlignObjects.py:260 +#: appTools/ToolAlignObjects.py:267 msgid "Or right click to cancel." msgstr "Or right click to cancel." -#: appTools/ToolAlignObjects.py:400 appTools/ToolAlignObjects.py:407 -#: appTools/ToolFiducials.py:107 +#: appTools/ToolAlignObjects.py:260 appTools/ToolAlignObjects.py:267 +#: appTools/ToolFiducials.py:718 msgid "Second Point" msgstr "Second Point" -#: appTools/ToolCalculators.py:24 -msgid "Calculators" -msgstr "Calculators" +#: appTools/ToolAlignObjects.py:386 +msgid "MOVING object" +msgstr "MOVING object" -#: appTools/ToolCalculators.py:26 -msgid "Units Calculator" -msgstr "Units Calculator" - -#: appTools/ToolCalculators.py:70 -msgid "Here you enter the value to be converted from INCH to MM" -msgstr "Here you enter the value to be converted from INCH to MM" - -#: appTools/ToolCalculators.py:75 -msgid "Here you enter the value to be converted from MM to INCH" -msgstr "Here you enter the value to be converted from MM to INCH" - -#: appTools/ToolCalculators.py:111 +#: appTools/ToolAlignObjects.py:390 msgid "" -"This is the angle of the tip of the tool.\n" -"It is specified by manufacturer." +"Specify the type of object to be aligned.\n" +"It can be of type: Gerber or Excellon.\n" +"The selection here decide the type of objects that will be\n" +"in the Object combobox." msgstr "" -"This is the angle of the tip of the tool.\n" -"It is specified by manufacturer." +"Specify the type of object to be aligned.\n" +"It can be of type: Gerber or Excellon.\n" +"The selection here decide the type of objects that will be\n" +"in the Object combobox." -#: appTools/ToolCalculators.py:120 +#: appTools/ToolAlignObjects.py:411 +msgid "Object to be aligned." +msgstr "Object to be aligned." + +#: appTools/ToolAlignObjects.py:423 +#, fuzzy +#| msgid "TARGET object" +msgid "DESTINATION object" +msgstr "TARGET object" + +#: appTools/ToolAlignObjects.py:425 msgid "" -"This is the depth to cut into the material.\n" -"In the CNCJob is the CutZ parameter." +"Specify the type of object to be aligned to.\n" +"It can be of type: Gerber or Excellon.\n" +"The selection here decide the type of objects that will be\n" +"in the Object combobox." msgstr "" -"This is the depth to cut into the material.\n" -"In the CNCJob is the CutZ parameter." +"Specify the type of object to be aligned to.\n" +"It can be of type: Gerber or Excellon.\n" +"The selection here decide the type of objects that will be\n" +"in the Object combobox." -#: appTools/ToolCalculators.py:128 +#: appTools/ToolAlignObjects.py:447 +msgid "Object to be aligned to. Aligner." +msgstr "Object to be aligned to. Aligner." + +#: appTools/ToolAlignObjects.py:460 +msgid "Alignment Type" +msgstr "Alignment Type" + +#: appTools/ToolAlignObjects.py:462 msgid "" -"This is the tool diameter to be entered into\n" -"FlatCAM Gerber section.\n" -"In the CNCJob section it is called >Tool dia<." +"The type of alignment can be:\n" +"- Single Point -> it require a single point of sync, the action will be a " +"translation\n" +"- Dual Point -> it require two points of sync, the action will be " +"translation followed by rotation" msgstr "" -"This is the tool diameter to be entered into\n" -"FlatCAM Gerber section.\n" -"In the CNCJob section it is called >Tool dia<." +"The type of alignment can be:\n" +"- Single Point -> it require a single point of sync, the action will be a " +"translation\n" +"- Dual Point -> it require two points of sync, the action will be " +"translation followed by rotation" -#: appTools/ToolCalculators.py:139 appTools/ToolCalculators.py:235 -msgid "Calculate" -msgstr "Calculate" +#: appTools/ToolAlignObjects.py:468 +msgid "Single Point" +msgstr "Single Point" -#: appTools/ToolCalculators.py:142 +#: appTools/ToolAlignObjects.py:469 +msgid "Dual Point" +msgstr "Dual Point" + +#: appTools/ToolAlignObjects.py:481 +msgid "Align Object" +msgstr "Align Object" + +#: appTools/ToolAlignObjects.py:483 msgid "" -"Calculate either the Cut Z or the effective tool diameter,\n" -" depending on which is desired and which is known. " +"Align the specified object to the aligner object.\n" +"If only one point is used then it assumes translation.\n" +"If tho points are used it assume translation and rotation." msgstr "" -"Calculate either the Cut Z or the effective tool diameter,\n" -" depending on which is desired and which is known. " +"Align the specified object to the aligner object.\n" +"If only one point is used then it assumes translation.\n" +"If tho points are used it assume translation and rotation." -#: appTools/ToolCalculators.py:205 -msgid "Current Value" -msgstr "Current Value" +#: appTools/ToolAlignObjects.py:498 appTools/ToolCalculators.py:372 +#: appTools/ToolCalibration.py:1378 appTools/ToolCopperThieving.py:1577 +#: appTools/ToolCorners.py:444 appTools/ToolCutOut.py:2152 +#: appTools/ToolDblSided.py:947 appTools/ToolDrilling.py:2635 +#: appTools/ToolEtchCompensation.py:458 appTools/ToolExtractDrills.py:702 +#: appTools/ToolFiducials.py:932 appTools/ToolFilm.py:1222 +#: appTools/ToolInvertGerber.py:286 appTools/ToolIsolation.py:3422 +#: appTools/ToolMilling.py:2324 appTools/ToolNCC.py:4264 +#: appTools/ToolOptimal.py:593 appTools/ToolPaint.py:3192 +#: appTools/ToolPanelize.py:889 appTools/ToolPunchGerber.py:993 +#: appTools/ToolQRCode.py:901 appTools/ToolRulesCheck.py:1618 +#: appTools/ToolSolderPaste.py:1557 appTools/ToolSub.py:752 +#: appTools/ToolTransform.py:920 +msgid "Reset Tool" +msgstr "Reset Tool" -#: appTools/ToolCalculators.py:212 -msgid "" -"This is the current intensity value\n" -"to be set on the Power Supply. In Amps." -msgstr "" -"This is the current intensity value\n" -"to be set on the Power Supply. In Amps." +#: appTools/ToolAlignObjects.py:501 appTools/ToolCalculators.py:375 +#: appTools/ToolCalibration.py:1381 appTools/ToolCopperThieving.py:1580 +#: appTools/ToolCorners.py:447 appTools/ToolCutOut.py:2155 +#: appTools/ToolDblSided.py:950 appTools/ToolDrilling.py:2638 +#: appTools/ToolEtchCompensation.py:461 appTools/ToolExtractDrills.py:705 +#: appTools/ToolFiducials.py:935 appTools/ToolFilm.py:1225 +#: appTools/ToolInvertGerber.py:289 appTools/ToolIsolation.py:3425 +#: appTools/ToolMilling.py:2327 appTools/ToolNCC.py:4267 +#: appTools/ToolOptimal.py:596 appTools/ToolPaint.py:3195 +#: appTools/ToolPanelize.py:892 appTools/ToolPunchGerber.py:996 +#: appTools/ToolQRCode.py:904 appTools/ToolRulesCheck.py:1621 +#: appTools/ToolSolderPaste.py:1560 appTools/ToolSub.py:755 +#: appTools/ToolTransform.py:923 +msgid "Will reset the tool parameters." +msgstr "Will reset the tool parameters." -#: appTools/ToolCalculators.py:216 -msgid "Time" -msgstr "Time" - -#: appTools/ToolCalculators.py:223 -msgid "" -"This is the calculated time required for the procedure.\n" -"In minutes." -msgstr "" -"This is the calculated time required for the procedure.\n" -"In minutes." - -#: appTools/ToolCalculators.py:238 -msgid "" -"Calculate the current intensity value and the procedure time,\n" -"depending on the parameters above" -msgstr "" -"Calculate the current intensity value and the procedure time,\n" -"depending on the parameters above" - -#: appTools/ToolCalculators.py:299 +#: appTools/ToolCalculators.py:77 msgid "Calc. Tool" msgstr "Calc. Tool" -#: appTools/ToolCalibration.py:69 -msgid "Parameters used when creating the GCode in this tool." -msgstr "Parameters used when creating the GCode in this tool." +#: appTools/ToolCalculators.py:151 +msgid "Calculators" +msgstr "Calculators" -#: appTools/ToolCalibration.py:173 -msgid "STEP 1: Acquire Calibration Points" -msgstr "STEP 1: Acquire Calibration Points" +#: appTools/ToolCalculators.py:153 +msgid "Units Calculator" +msgstr "Units Calculator" -#: appTools/ToolCalibration.py:175 +#: appTools/ToolCalculators.py:196 +msgid "Here you enter the value to be converted from INCH to MM" +msgstr "Here you enter the value to be converted from INCH to MM" + +#: appTools/ToolCalculators.py:201 +msgid "Here you enter the value to be converted from MM to INCH" +msgstr "Here you enter the value to be converted from MM to INCH" + +#: appTools/ToolCalculators.py:237 msgid "" -"Pick four points by clicking on canvas.\n" -"Those four points should be in the four\n" -"(as much as possible) corners of the object." +"This is the angle of the tip of the tool.\n" +"It is specified by manufacturer." msgstr "" -"Pick four points by clicking on canvas.\n" -"Those four points should be in the four\n" -"(as much as possible) corners of the object." +"This is the angle of the tip of the tool.\n" +"It is specified by manufacturer." -#: appTools/ToolCalibration.py:193 appTools/ToolFilm.py:71 -#: appTools/ToolImage.py:54 appTools/ToolPanelize.py:77 -#: appTools/ToolProperties.py:177 -msgid "Object Type" -msgstr "Object Type" - -#: appTools/ToolCalibration.py:210 -msgid "Source object selection" -msgstr "Source object selection" - -#: appTools/ToolCalibration.py:212 -msgid "FlatCAM Object to be used as a source for reference points." -msgstr "FlatCAM Object to be used as a source for reference points." - -#: appTools/ToolCalibration.py:218 -msgid "Calibration Points" -msgstr "Calibration Points" - -#: appTools/ToolCalibration.py:220 +#: appTools/ToolCalculators.py:246 msgid "" -"Contain the expected calibration points and the\n" -"ones measured." +"This is the depth to cut into the material.\n" +"In the CNCJob is the CutZ parameter." msgstr "" -"Contain the expected calibration points and the\n" -"ones measured." +"This is the depth to cut into the material.\n" +"In the CNCJob is the CutZ parameter." -#: appTools/ToolCalibration.py:235 appTools/ToolSub.py:81 -#: appTools/ToolSub.py:136 -msgid "Target" -msgstr "Target" - -#: appTools/ToolCalibration.py:236 -msgid "Found Delta" -msgstr "Found Delta" - -#: appTools/ToolCalibration.py:248 -msgid "Bot Left X" -msgstr "Bot Left X" - -#: appTools/ToolCalibration.py:257 -msgid "Bot Left Y" -msgstr "Bot Left Y" - -#: appTools/ToolCalibration.py:275 -msgid "Bot Right X" -msgstr "Bot Right X" - -#: appTools/ToolCalibration.py:285 -msgid "Bot Right Y" -msgstr "Bot Right Y" - -#: appTools/ToolCalibration.py:300 -msgid "Top Left X" -msgstr "Top Left X" - -#: appTools/ToolCalibration.py:309 -msgid "Top Left Y" -msgstr "Top Left Y" - -#: appTools/ToolCalibration.py:324 -msgid "Top Right X" -msgstr "Top Right X" - -#: appTools/ToolCalibration.py:334 -msgid "Top Right Y" -msgstr "Top Right Y" - -#: appTools/ToolCalibration.py:367 -msgid "Get Points" -msgstr "Get Points" - -#: appTools/ToolCalibration.py:369 +#: appTools/ToolCalculators.py:254 msgid "" -"Pick four points by clicking on canvas if the source choice\n" -"is 'free' or inside the object geometry if the source is 'object'.\n" -"Those four points should be in the four squares of\n" -"the object." +"This is the tool diameter to be entered into\n" +"FlatCAM Gerber section.\n" +"In the CNCJob section it is called >Tool dia<." msgstr "" -"Pick four points by clicking on canvas if the source choice\n" -"is 'free' or inside the object geometry if the source is 'object'.\n" -"Those four points should be in the four squares of\n" -"the object." +"This is the tool diameter to be entered into\n" +"FlatCAM Gerber section.\n" +"In the CNCJob section it is called >Tool dia<." -#: appTools/ToolCalibration.py:390 -msgid "STEP 2: Verification GCode" -msgstr "STEP 2: Verification GCode" +#: appTools/ToolCalculators.py:265 appTools/ToolCalculators.py:361 +msgid "Calculate" +msgstr "Calculate" -#: appTools/ToolCalibration.py:392 appTools/ToolCalibration.py:405 +#: appTools/ToolCalculators.py:268 msgid "" -"Generate GCode file to locate and align the PCB by using\n" -"the four points acquired above.\n" -"The points sequence is:\n" -"- first point -> set the origin\n" -"- second point -> alignment point. Can be: top-left or bottom-right.\n" -"- third point -> check point. Can be: top-left or bottom-right.\n" -"- forth point -> final verification point. Just for evaluation." +"Calculate either the Cut Z or the effective tool diameter,\n" +" depending on which is desired and which is known. " msgstr "" -"Generate GCode file to locate and align the PCB by using\n" -"the four points acquired above.\n" -"The points sequence is:\n" -"- first point -> set the origin\n" -"- second point -> alignment point. Can be: top-left or bottom-right.\n" -"- third point -> check point. Can be: top-left or bottom-right.\n" -"- forth point -> final verification point. Just for evaluation." +"Calculate either the Cut Z or the effective tool diameter,\n" +" depending on which is desired and which is known. " -#: appTools/ToolCalibration.py:403 appTools/ToolSolderPaste.py:344 -msgid "Generate GCode" -msgstr "Generate GCode" +#: appTools/ToolCalculators.py:331 +msgid "Current Value" +msgstr "Current Value" -#: appTools/ToolCalibration.py:429 -msgid "STEP 3: Adjustments" -msgstr "STEP 3: Adjustments" - -#: appTools/ToolCalibration.py:431 appTools/ToolCalibration.py:440 +#: appTools/ToolCalculators.py:338 msgid "" -"Calculate Scale and Skew factors based on the differences (delta)\n" -"found when checking the PCB pattern. The differences must be filled\n" -"in the fields Found (Delta)." +"This is the current intensity value\n" +"to be set on the Power Supply. In Amps." msgstr "" -"Calculate Scale and Skew factors based on the differences (delta)\n" -"found when checking the PCB pattern. The differences must be filled\n" -"in the fields Found (Delta)." +"This is the current intensity value\n" +"to be set on the Power Supply. In Amps." -#: appTools/ToolCalibration.py:438 -msgid "Calculate Factors" -msgstr "Calculate Factors" +#: appTools/ToolCalculators.py:342 +msgid "Time" +msgstr "Time" -#: appTools/ToolCalibration.py:460 -msgid "STEP 4: Adjusted GCode" -msgstr "STEP 4: Adjusted GCode" - -#: appTools/ToolCalibration.py:462 +#: appTools/ToolCalculators.py:349 msgid "" -"Generate verification GCode file adjusted with\n" -"the factors above." +"This is the calculated time required for the procedure.\n" +"In minutes." msgstr "" -"Generate verification GCode file adjusted with\n" -"the factors above." +"This is the calculated time required for the procedure.\n" +"In minutes." -#: appTools/ToolCalibration.py:467 -msgid "Scale Factor X:" -msgstr "Scale Factor X:" - -#: appTools/ToolCalibration.py:469 -msgid "Factor for Scale action over X axis." -msgstr "Factor for Scale action over X axis." - -#: appTools/ToolCalibration.py:479 -msgid "Scale Factor Y:" -msgstr "Scale Factor Y:" - -#: appTools/ToolCalibration.py:481 -msgid "Factor for Scale action over Y axis." -msgstr "Factor for Scale action over Y axis." - -#: appTools/ToolCalibration.py:491 -msgid "Apply Scale Factors" -msgstr "Apply Scale Factors" - -#: appTools/ToolCalibration.py:493 -msgid "Apply Scale factors on the calibration points." -msgstr "Apply Scale factors on the calibration points." - -#: appTools/ToolCalibration.py:503 -msgid "Skew Angle X:" -msgstr "Skew Angle X:" - -#: appTools/ToolCalibration.py:516 -msgid "Skew Angle Y:" -msgstr "Skew Angle Y:" - -#: appTools/ToolCalibration.py:529 -msgid "Apply Skew Factors" -msgstr "Apply Skew Factors" - -#: appTools/ToolCalibration.py:531 -msgid "Apply Skew factors on the calibration points." -msgstr "Apply Skew factors on the calibration points." - -#: appTools/ToolCalibration.py:600 -msgid "Generate Adjusted GCode" -msgstr "Generate Adjusted GCode" - -#: appTools/ToolCalibration.py:602 +#: appTools/ToolCalculators.py:364 msgid "" -"Generate verification GCode file adjusted with\n" -"the factors set above.\n" -"The GCode parameters can be readjusted\n" -"before clicking this button." +"Calculate the current intensity value and the procedure time,\n" +"depending on the parameters above" msgstr "" -"Generate verification GCode file adjusted with\n" -"the factors set above.\n" -"The GCode parameters can be readjusted\n" -"before clicking this button." +"Calculate the current intensity value and the procedure time,\n" +"depending on the parameters above" -#: appTools/ToolCalibration.py:623 -msgid "STEP 5: Calibrate FlatCAM Objects" -msgstr "STEP 5: Calibrate FlatCAM Objects" - -#: appTools/ToolCalibration.py:625 -msgid "" -"Adjust the FlatCAM objects\n" -"with the factors determined and verified above." -msgstr "" -"Adjust the FlatCAM objects\n" -"with the factors determined and verified above." - -#: appTools/ToolCalibration.py:637 -msgid "Adjusted object type" -msgstr "Adjusted object type" - -#: appTools/ToolCalibration.py:638 -msgid "Type of the FlatCAM Object to be adjusted." -msgstr "Type of the FlatCAM Object to be adjusted." - -#: appTools/ToolCalibration.py:651 -msgid "Adjusted object selection" -msgstr "Adjusted object selection" - -#: appTools/ToolCalibration.py:653 -msgid "The FlatCAM Object to be adjusted." -msgstr "The FlatCAM Object to be adjusted." - -#: appTools/ToolCalibration.py:660 -msgid "Calibrate" -msgstr "Calibrate" - -#: appTools/ToolCalibration.py:662 -msgid "" -"Adjust (scale and/or skew) the objects\n" -"with the factors determined above." -msgstr "" -"Adjust (scale and/or skew) the objects\n" -"with the factors determined above." - -#: appTools/ToolCalibration.py:800 +#: appTools/ToolCalibration.py:156 msgid "Tool initialized" msgstr "Tool initialized" -#: appTools/ToolCalibration.py:838 +#: appTools/ToolCalibration.py:194 msgid "There is no source FlatCAM object selected..." msgstr "There is no source FlatCAM object selected..." -#: appTools/ToolCalibration.py:859 +#: appTools/ToolCalibration.py:215 msgid "Get First calibration point. Bottom Left..." msgstr "Get First calibration point. Bottom Left..." -#: appTools/ToolCalibration.py:926 +#: appTools/ToolCalibration.py:282 msgid "Get Second calibration point. Bottom Right (Top Left)..." msgstr "Get Second calibration point. Bottom Right (Top Left)..." -#: appTools/ToolCalibration.py:930 +#: appTools/ToolCalibration.py:286 msgid "Get Third calibration point. Top Left (Bottom Right)..." msgstr "Get Third calibration point. Top Left (Bottom Right)..." -#: appTools/ToolCalibration.py:934 +#: appTools/ToolCalibration.py:290 msgid "Get Forth calibration point. Top Right..." msgstr "Get Forth calibration point. Top Right..." -#: appTools/ToolCalibration.py:938 +#: appTools/ToolCalibration.py:294 msgid "Done. All four points have been acquired." msgstr "Done. All four points have been acquired." -#: appTools/ToolCalibration.py:969 +#: appTools/ToolCalibration.py:325 msgid "Verification GCode for FlatCAM Calibration Tool" msgstr "Verification GCode for FlatCAM Calibration Tool" -#: appTools/ToolCalibration.py:981 appTools/ToolCalibration.py:1067 +#: appTools/ToolCalibration.py:337 appTools/ToolCalibration.py:423 msgid "Gcode Viewer" msgstr "Gcode Viewer" -#: appTools/ToolCalibration.py:997 +#: appTools/ToolCalibration.py:353 msgid "Cancelled. Four points are needed for GCode generation." msgstr "Cancelled. Four points are needed for GCode generation." -#: appTools/ToolCalibration.py:1253 appTools/ToolCalibration.py:1349 +#: appTools/ToolCalibration.py:603 appTools/ToolCalibration.py:699 msgid "There is no FlatCAM object selected..." msgstr "There is no FlatCAM object selected..." -#: appTools/ToolCopperThieving.py:76 appTools/ToolFiducials.py:264 -msgid "Gerber Object to which will be added a copper thieving." -msgstr "Gerber Object to which will be added a copper thieving." +#: appTools/ToolCalibration.py:764 +msgid "Parameters used when creating the GCode in this tool." +msgstr "Parameters used when creating the GCode in this tool." -#: appTools/ToolCopperThieving.py:102 +#: appTools/ToolCalibration.py:868 +msgid "STEP 1: Acquire Calibration Points" +msgstr "STEP 1: Acquire Calibration Points" + +#: appTools/ToolCalibration.py:870 msgid "" -"This set the distance between the copper thieving components\n" -"(the polygon fill may be split in multiple polygons)\n" -"and the copper traces in the Gerber file." +"Pick four points by clicking on canvas.\n" +"Those four points should be in the four\n" +"(as much as possible) corners of the object." msgstr "" -"This set the distance between the copper thieving components\n" -"(the polygon fill may be split in multiple polygons)\n" -"and the copper traces in the Gerber file." +"Pick four points by clicking on canvas.\n" +"Those four points should be in the four\n" +"(as much as possible) corners of the object." -#: appTools/ToolCopperThieving.py:135 +#: appTools/ToolCalibration.py:888 appTools/ToolImage.py:196 +#: appTools/ToolPanelize.py:676 appTools/ToolProperties.py:180 +msgid "Object Type" +msgstr "Object Type" + +#: appTools/ToolCalibration.py:905 +msgid "Source object selection" +msgstr "Source object selection" + +#: appTools/ToolCalibration.py:907 +msgid "FlatCAM Object to be used as a source for reference points." +msgstr "FlatCAM Object to be used as a source for reference points." + +#: appTools/ToolCalibration.py:913 +msgid "Calibration Points" +msgstr "Calibration Points" + +#: appTools/ToolCalibration.py:915 msgid "" -"- 'Itself' - the copper thieving extent is based on the object extent.\n" -"- 'Area Selection' - left mouse click to start selection of the area to be " -"filled.\n" -"- 'Reference Object' - will do copper thieving within the area specified by " -"another object." +"Contain the expected calibration points and the\n" +"ones measured." msgstr "" -"- 'Itself' - the copper thieving extent is based on the object extent.\n" -"- 'Area Selection' - left mouse click to start selection of the area to be " -"filled.\n" -"- 'Reference Object' - will do copper thieving within the area specified by " -"another object." +"Contain the expected calibration points and the\n" +"ones measured." -#: appTools/ToolCopperThieving.py:142 appTools/ToolIsolation.py:521 -#: appTools/ToolNCC.py:552 appTools/ToolPaint.py:495 -msgid "Ref. Type" -msgstr "Ref. Type" +#: appTools/ToolCalibration.py:930 appTools/ToolSub.py:652 +#: appTools/ToolSub.py:707 +msgid "Target" +msgstr "Target" -#: appTools/ToolCopperThieving.py:144 +#: appTools/ToolCalibration.py:931 +msgid "Found Delta" +msgstr "Found Delta" + +#: appTools/ToolCalibration.py:943 +msgid "Bot Left X" +msgstr "Bot Left X" + +#: appTools/ToolCalibration.py:952 +msgid "Bot Left Y" +msgstr "Bot Left Y" + +#: appTools/ToolCalibration.py:970 +msgid "Bot Right X" +msgstr "Bot Right X" + +#: appTools/ToolCalibration.py:980 +msgid "Bot Right Y" +msgstr "Bot Right Y" + +#: appTools/ToolCalibration.py:995 +msgid "Top Left X" +msgstr "Top Left X" + +#: appTools/ToolCalibration.py:1004 +msgid "Top Left Y" +msgstr "Top Left Y" + +#: appTools/ToolCalibration.py:1019 +msgid "Top Right X" +msgstr "Top Right X" + +#: appTools/ToolCalibration.py:1029 +msgid "Top Right Y" +msgstr "Top Right Y" + +#: appTools/ToolCalibration.py:1062 +msgid "Get Points" +msgstr "Get Points" + +#: appTools/ToolCalibration.py:1064 msgid "" -"The type of FlatCAM object to be used as copper thieving reference.\n" -"It can be Gerber, Excellon or Geometry." +"Pick four points by clicking on canvas if the source choice\n" +"is 'free' or inside the object geometry if the source is 'object'.\n" +"Those four points should be in the four squares of\n" +"the object." msgstr "" -"The type of FlatCAM object to be used as copper thieving reference.\n" -"It can be Gerber, Excellon or Geometry." +"Pick four points by clicking on canvas if the source choice\n" +"is 'free' or inside the object geometry if the source is 'object'.\n" +"Those four points should be in the four squares of\n" +"the object." -#: appTools/ToolCopperThieving.py:153 appTools/ToolIsolation.py:532 -#: appTools/ToolNCC.py:562 appTools/ToolPaint.py:505 -msgid "Ref. Object" -msgstr "Ref. Object" +#: appTools/ToolCalibration.py:1085 +msgid "STEP 2: Verification GCode" +msgstr "STEP 2: Verification GCode" -#: appTools/ToolCopperThieving.py:155 appTools/ToolIsolation.py:534 -#: appTools/ToolNCC.py:564 appTools/ToolPaint.py:507 -msgid "The FlatCAM object to be used as non copper clearing reference." -msgstr "The FlatCAM object to be used as non copper clearing reference." - -#: appTools/ToolCopperThieving.py:331 -msgid "Insert Copper thieving" -msgstr "Insert Copper thieving" - -#: appTools/ToolCopperThieving.py:333 +#: appTools/ToolCalibration.py:1087 appTools/ToolCalibration.py:1100 msgid "" -"Will add a polygon (may be split in multiple parts)\n" -"that will surround the actual Gerber traces at a certain distance." +"Generate GCode file to locate and align the PCB by using\n" +"the four points acquired above.\n" +"The points sequence is:\n" +"- first point -> set the origin\n" +"- second point -> alignment point. Can be: top-left or bottom-right.\n" +"- third point -> check point. Can be: top-left or bottom-right.\n" +"- forth point -> final verification point. Just for evaluation." msgstr "" -"Will add a polygon (may be split in multiple parts)\n" -"that will surround the actual Gerber traces at a certain distance." +"Generate GCode file to locate and align the PCB by using\n" +"the four points acquired above.\n" +"The points sequence is:\n" +"- first point -> set the origin\n" +"- second point -> alignment point. Can be: top-left or bottom-right.\n" +"- third point -> check point. Can be: top-left or bottom-right.\n" +"- forth point -> final verification point. Just for evaluation." -#: appTools/ToolCopperThieving.py:392 -msgid "Insert Robber Bar" -msgstr "Insert Robber Bar" +#: appTools/ToolCalibration.py:1098 appTools/ToolSolderPaste.py:1420 +msgid "Generate GCode" +msgstr "Generate GCode" -#: appTools/ToolCopperThieving.py:394 +#: appTools/ToolCalibration.py:1124 +msgid "STEP 3: Adjustments" +msgstr "STEP 3: Adjustments" + +#: appTools/ToolCalibration.py:1126 appTools/ToolCalibration.py:1135 msgid "" -"Will add a polygon with a defined thickness\n" -"that will surround the actual Gerber object\n" -"at a certain distance.\n" -"Required when doing holes pattern plating." +"Calculate Scale and Skew factors based on the differences (delta)\n" +"found when checking the PCB pattern. The differences must be filled\n" +"in the fields Found (Delta)." msgstr "" -"Will add a polygon with a defined thickness\n" -"that will surround the actual Gerber object\n" -"at a certain distance.\n" -"Required when doing holes pattern plating." +"Calculate Scale and Skew factors based on the differences (delta)\n" +"found when checking the PCB pattern. The differences must be filled\n" +"in the fields Found (Delta)." -#: appTools/ToolCopperThieving.py:418 -msgid "Select Soldermask object" -msgstr "Select Soldermask object" +#: appTools/ToolCalibration.py:1133 +msgid "Calculate Factors" +msgstr "Calculate Factors" -#: appTools/ToolCopperThieving.py:420 +#: appTools/ToolCalibration.py:1155 +msgid "STEP 4: Adjusted GCode" +msgstr "STEP 4: Adjusted GCode" + +#: appTools/ToolCalibration.py:1157 msgid "" -"Gerber Object with the soldermask.\n" -"It will be used as a base for\n" -"the pattern plating mask." +"Generate verification GCode file adjusted with\n" +"the factors above." msgstr "" -"Gerber Object with the soldermask.\n" -"It will be used as a base for\n" -"the pattern plating mask." +"Generate verification GCode file adjusted with\n" +"the factors above." -#: appTools/ToolCopperThieving.py:449 -msgid "Plated area" -msgstr "Plated area" +#: appTools/ToolCalibration.py:1162 +msgid "Scale Factor X:" +msgstr "Scale Factor X:" -#: appTools/ToolCopperThieving.py:451 +#: appTools/ToolCalibration.py:1164 +msgid "Factor for Scale action over X axis." +msgstr "Factor for Scale action over X axis." + +#: appTools/ToolCalibration.py:1174 +msgid "Scale Factor Y:" +msgstr "Scale Factor Y:" + +#: appTools/ToolCalibration.py:1176 +msgid "Factor for Scale action over Y axis." +msgstr "Factor for Scale action over Y axis." + +#: appTools/ToolCalibration.py:1186 +msgid "Apply Scale Factors" +msgstr "Apply Scale Factors" + +#: appTools/ToolCalibration.py:1188 +msgid "Apply Scale factors on the calibration points." +msgstr "Apply Scale factors on the calibration points." + +#: appTools/ToolCalibration.py:1198 +msgid "Skew Angle X:" +msgstr "Skew Angle X:" + +#: appTools/ToolCalibration.py:1211 +msgid "Skew Angle Y:" +msgstr "Skew Angle Y:" + +#: appTools/ToolCalibration.py:1224 +msgid "Apply Skew Factors" +msgstr "Apply Skew Factors" + +#: appTools/ToolCalibration.py:1226 +msgid "Apply Skew factors on the calibration points." +msgstr "Apply Skew factors on the calibration points." + +#: appTools/ToolCalibration.py:1295 +msgid "Generate Adjusted GCode" +msgstr "Generate Adjusted GCode" + +#: appTools/ToolCalibration.py:1297 msgid "" -"The area to be plated by pattern plating.\n" -"Basically is made from the openings in the plating mask.\n" -"\n" -"<> - the calculated area is actually a bit larger\n" -"due of the fact that the soldermask openings are by design\n" -"a bit larger than the copper pads, and this area is\n" -"calculated from the soldermask openings." +"Generate verification GCode file adjusted with\n" +"the factors set above.\n" +"The GCode parameters can be readjusted\n" +"before clicking this button." msgstr "" -"The area to be plated by pattern plating.\n" -"Basically is made from the openings in the plating mask.\n" -"\n" -"<> - the calculated area is actually a bit larger\n" -"due of the fact that the soldermask openings are by design\n" -"a bit larger than the copper pads, and this area is\n" -"calculated from the soldermask openings." +"Generate verification GCode file adjusted with\n" +"the factors set above.\n" +"The GCode parameters can be readjusted\n" +"before clicking this button." -#: appTools/ToolCopperThieving.py:462 -msgid "mm" -msgstr "mm" +#: appTools/ToolCalibration.py:1318 +msgid "STEP 5: Calibrate FlatCAM Objects" +msgstr "STEP 5: Calibrate FlatCAM Objects" -#: appTools/ToolCopperThieving.py:464 -msgid "in" -msgstr "in" - -#: appTools/ToolCopperThieving.py:471 -msgid "Generate pattern plating mask" -msgstr "Generate pattern plating mask" - -#: appTools/ToolCopperThieving.py:473 +#: appTools/ToolCalibration.py:1320 msgid "" -"Will add to the soldermask gerber geometry\n" -"the geometries of the copper thieving and/or\n" -"the robber bar if those were generated." +"Adjust the FlatCAM objects\n" +"with the factors determined and verified above." msgstr "" -"Will add to the soldermask gerber geometry\n" -"the geometries of the copper thieving and/or\n" -"the robber bar if those were generated." +"Adjust the FlatCAM objects\n" +"with the factors determined and verified above." -#: appTools/ToolCopperThieving.py:629 appTools/ToolCopperThieving.py:654 +#: appTools/ToolCalibration.py:1332 +msgid "Adjusted object type" +msgstr "Adjusted object type" + +#: appTools/ToolCalibration.py:1333 +msgid "Type of the FlatCAM Object to be adjusted." +msgstr "Type of the FlatCAM Object to be adjusted." + +#: appTools/ToolCalibration.py:1346 +msgid "Adjusted object selection" +msgstr "Adjusted object selection" + +#: appTools/ToolCalibration.py:1348 +msgid "The FlatCAM Object to be adjusted." +msgstr "The FlatCAM Object to be adjusted." + +#: appTools/ToolCalibration.py:1355 +msgid "Calibrate" +msgstr "Calibrate" + +#: appTools/ToolCalibration.py:1357 +msgid "" +"Adjust (scale and/or skew) the objects\n" +"with the factors determined above." +msgstr "" +"Adjust (scale and/or skew) the objects\n" +"with the factors determined above." + +#: appTools/ToolCopperThieving.py:184 appTools/ToolCopperThieving.py:209 msgid "Lines Grid works only for 'itself' reference ..." msgstr "Lines Grid works only for 'itself' reference ..." -#: appTools/ToolCopperThieving.py:640 +#: appTools/ToolCopperThieving.py:195 msgid "Solid fill selected." msgstr "Solid fill selected." -#: appTools/ToolCopperThieving.py:645 +#: appTools/ToolCopperThieving.py:200 msgid "Dots grid fill selected." msgstr "Dots grid fill selected." -#: appTools/ToolCopperThieving.py:650 +#: appTools/ToolCopperThieving.py:205 msgid "Squares grid fill selected." msgstr "Squares grid fill selected." -#: appTools/ToolCopperThieving.py:671 appTools/ToolCopperThieving.py:753 -#: appTools/ToolCopperThieving.py:1355 appTools/ToolCorners.py:268 -#: appTools/ToolDblSided.py:657 appTools/ToolExtractDrills.py:436 -#: appTools/ToolFiducials.py:470 appTools/ToolFiducials.py:747 -#: appTools/ToolOptimal.py:348 appTools/ToolPunchGerber.py:512 -#: appTools/ToolQRCode.py:435 +#: appTools/ToolCopperThieving.py:226 appTools/ToolCopperThieving.py:308 +#: appTools/ToolCopperThieving.py:910 appTools/ToolCorners.py:120 +#: appTools/ToolDblSided.py:304 appTools/ToolExtractDrills.py:141 +#: appTools/ToolFiducials.py:187 appTools/ToolFiducials.py:464 +#: appTools/ToolOptimal.py:138 appTools/ToolPunchGerber.py:188 +#: appTools/ToolQRCode.py:158 msgid "There is no Gerber object loaded ..." msgstr "There is no Gerber object loaded ..." -#: appTools/ToolCopperThieving.py:684 appTools/ToolCopperThieving.py:1283 +#: appTools/ToolCopperThieving.py:239 appTools/ToolCopperThieving.py:838 msgid "Append geometry" msgstr "Append geometry" -#: appTools/ToolCopperThieving.py:728 appTools/ToolCopperThieving.py:1316 -#: appTools/ToolCopperThieving.py:1469 +#: appTools/ToolCopperThieving.py:283 appTools/ToolCopperThieving.py:871 +#: appTools/ToolCopperThieving.py:1016 msgid "Append source file" msgstr "Append source file" -#: appTools/ToolCopperThieving.py:736 appTools/ToolCopperThieving.py:1324 +#: appTools/ToolCopperThieving.py:291 appTools/ToolCopperThieving.py:879 msgid "Copper Thieving Tool done." msgstr "Copper Thieving Tool done." -#: appTools/ToolCopperThieving.py:763 appTools/ToolCopperThieving.py:796 -#: appTools/ToolCutOut.py:556 appTools/ToolCutOut.py:761 -#: appTools/ToolEtchCompensation.py:360 appTools/ToolInvertGerber.py:211 -#: appTools/ToolIsolation.py:1618 appTools/ToolIsolation.py:1645 -#: appTools/ToolNCC.py:1617 appTools/ToolNCC.py:1661 appTools/ToolNCC.py:1690 -#: appTools/ToolPaint.py:1493 appTools/ToolPanelize.py:424 -#: appTools/ToolPanelize.py:438 appTools/ToolSub.py:295 appTools/ToolSub.py:308 -#: appTools/ToolSub.py:499 appTools/ToolSub.py:514 -#: tclCommands/TclCommandCopperClear.py:97 tclCommands/TclCommandPaint.py:99 +#: appTools/ToolCopperThieving.py:318 appTools/ToolCopperThieving.py:351 +#: appTools/ToolCutOut.py:539 appTools/ToolCutOut.py:862 +#: appTools/ToolDrilling.py:725 appTools/ToolDrilling.py:1568 +#: appTools/ToolEtchCompensation.py:152 appTools/ToolInvertGerber.py:99 +#: appTools/ToolIsolation.py:899 appTools/ToolIsolation.py:1310 +#: appTools/ToolIsolation.py:1337 appTools/ToolMilling.py:424 +#: appTools/ToolMilling.py:639 appTools/ToolMilling.py:1322 +#: appTools/ToolNCC.py:829 appTools/ToolNCC.py:1261 appTools/ToolNCC.py:1307 +#: appTools/ToolNCC.py:1340 appTools/ToolPaint.py:1085 +#: appTools/ToolPanelize.py:191 appTools/ToolPanelize.py:205 +#: appTools/ToolSub.py:157 appTools/ToolSub.py:170 appTools/ToolSub.py:359 +#: appTools/ToolSub.py:372 tclCommands/TclCommandCopperClear.py:97 +#: tclCommands/TclCommandPaint.py:99 msgid "Could not retrieve object" msgstr "Could not retrieve object" -#: appTools/ToolCopperThieving.py:824 +#: appTools/ToolCopperThieving.py:379 msgid "Click the end point of the filling area." msgstr "Click the end point of the filling area." -#: appTools/ToolCopperThieving.py:952 appTools/ToolCopperThieving.py:956 -#: appTools/ToolCopperThieving.py:1017 +#: appTools/ToolCopperThieving.py:507 appTools/ToolCopperThieving.py:511 +#: appTools/ToolCopperThieving.py:572 msgid "Thieving" msgstr "Thieving" -#: appTools/ToolCopperThieving.py:963 +#: appTools/ToolCopperThieving.py:518 msgid "Copper Thieving Tool started. Reading parameters." msgstr "Copper Thieving Tool started. Reading parameters." -#: appTools/ToolCopperThieving.py:988 +#: appTools/ToolCopperThieving.py:543 msgid "Copper Thieving Tool. Preparing isolation polygons." msgstr "Copper Thieving Tool. Preparing isolation polygons." -#: appTools/ToolCopperThieving.py:1033 +#: appTools/ToolCopperThieving.py:588 msgid "Copper Thieving Tool. Preparing areas to fill with copper." msgstr "Copper Thieving Tool. Preparing areas to fill with copper." -#: appTools/ToolCopperThieving.py:1044 appTools/ToolOptimal.py:355 -#: appTools/ToolPanelize.py:805 appTools/ToolRulesCheck.py:1127 +#: appTools/ToolCopperThieving.py:599 appTools/ToolIsolation.py:906 +#: appTools/ToolNCC.py:836 appTools/ToolOptimal.py:145 +#: appTools/ToolPanelize.py:612 appTools/ToolRulesCheck.py:626 msgid "Working..." msgstr "Working..." -#: appTools/ToolCopperThieving.py:1071 +#: appTools/ToolCopperThieving.py:626 msgid "Geometry not supported for bounding box" msgstr "Geometry not supported for bounding box" -#: appTools/ToolCopperThieving.py:1077 appTools/ToolNCC.py:1962 -#: appTools/ToolNCC.py:2017 appTools/ToolNCC.py:3052 appTools/ToolPaint.py:3405 +#: appTools/ToolCopperThieving.py:632 appTools/ToolNCC.py:1631 +#: appTools/ToolNCC.py:1686 appTools/ToolNCC.py:2626 appTools/ToolPaint.py:2456 msgid "No object available." msgstr "No object available." -#: appTools/ToolCopperThieving.py:1114 appTools/ToolNCC.py:1987 -#: appTools/ToolNCC.py:2040 appTools/ToolNCC.py:3094 +#: appTools/ToolCopperThieving.py:669 appTools/ToolNCC.py:1656 +#: appTools/ToolNCC.py:1709 appTools/ToolNCC.py:2668 msgid "The reference object type is not supported." msgstr "The reference object type is not supported." -#: appTools/ToolCopperThieving.py:1119 +#: appTools/ToolCopperThieving.py:674 msgid "Copper Thieving Tool. Appending new geometry and buffering." msgstr "Copper Thieving Tool. Appending new geometry and buffering." -#: appTools/ToolCopperThieving.py:1135 +#: appTools/ToolCopperThieving.py:690 msgid "Create geometry" msgstr "Create geometry" -#: appTools/ToolCopperThieving.py:1335 appTools/ToolCopperThieving.py:1339 +#: appTools/ToolCopperThieving.py:890 appTools/ToolCopperThieving.py:894 msgid "P-Plating Mask" msgstr "P-Plating Mask" -#: appTools/ToolCopperThieving.py:1361 +#: appTools/ToolCopperThieving.py:916 msgid "Append PP-M geometry" msgstr "Append PP-M geometry" -#: appTools/ToolCopperThieving.py:1487 +#: appTools/ToolCopperThieving.py:1034 msgid "Generating Pattern Plating Mask done." msgstr "Generating Pattern Plating Mask done." -#: appTools/ToolCopperThieving.py:1559 +#: appTools/ToolCopperThieving.py:1106 msgid "Copper Thieving Tool exit." msgstr "Copper Thieving Tool exit." -#: appTools/ToolCorners.py:57 -msgid "The Gerber object to which will be added corner markers." -msgstr "The Gerber object to which will be added corner markers." +#: appTools/ToolCopperThieving.py:1165 appTools/ToolFiducials.py:875 +msgid "Gerber Object to which will be added a copper thieving." +msgstr "Gerber Object to which will be added a copper thieving." -#: appTools/ToolCorners.py:73 -msgid "Locations" -msgstr "Locations" +#: appTools/ToolCopperThieving.py:1191 +msgid "" +"This set the distance between the copper thieving components\n" +"(the polygon fill may be split in multiple polygons)\n" +"and the copper traces in the Gerber file." +msgstr "" +"This set the distance between the copper thieving components\n" +"(the polygon fill may be split in multiple polygons)\n" +"and the copper traces in the Gerber file." -#: appTools/ToolCorners.py:75 -msgid "Locations where to place corner markers." -msgstr "Locations where to place corner markers." +#: appTools/ToolCopperThieving.py:1224 +msgid "" +"- 'Itself' - the copper thieving extent is based on the object extent.\n" +"- 'Area Selection' - left mouse click to start selection of the area to be " +"filled.\n" +"- 'Reference Object' - will do copper thieving within the area specified by " +"another object." +msgstr "" +"- 'Itself' - the copper thieving extent is based on the object extent.\n" +"- 'Area Selection' - left mouse click to start selection of the area to be " +"filled.\n" +"- 'Reference Object' - will do copper thieving within the area specified by " +"another object." -#: appTools/ToolCorners.py:92 appTools/ToolFiducials.py:95 -msgid "Top Right" -msgstr "Top Right" +#: appTools/ToolCopperThieving.py:1231 appTools/ToolIsolation.py:3330 +#: appTools/ToolNCC.py:4203 appTools/ToolPaint.py:3135 +msgid "Ref. Type" +msgstr "Ref. Type" -#: appTools/ToolCorners.py:101 -msgid "Toggle ALL" -msgstr "Toggle ALL" +#: appTools/ToolCopperThieving.py:1233 +msgid "" +"The type of FlatCAM object to be used as copper thieving reference.\n" +"It can be Gerber, Excellon or Geometry." +msgstr "" +"The type of FlatCAM object to be used as copper thieving reference.\n" +"It can be Gerber, Excellon or Geometry." -#: appTools/ToolCorners.py:167 -msgid "Add Marker" -msgstr "Add Marker" +#: appTools/ToolCopperThieving.py:1242 appTools/ToolIsolation.py:3341 +#: appTools/ToolNCC.py:4213 appTools/ToolPaint.py:3145 +msgid "Ref. Object" +msgstr "Ref. Object" -#: appTools/ToolCorners.py:169 -msgid "Will add corner markers to the selected Gerber file." -msgstr "Will add corner markers to the selected Gerber file." +#: appTools/ToolCopperThieving.py:1244 appTools/ToolIsolation.py:3343 +#: appTools/ToolNCC.py:4215 appTools/ToolPaint.py:3147 +msgid "The FlatCAM object to be used as non copper clearing reference." +msgstr "The FlatCAM object to be used as non copper clearing reference." -#: appTools/ToolCorners.py:235 +#: appTools/ToolCopperThieving.py:1420 +msgid "Insert Copper thieving" +msgstr "Insert Copper thieving" + +#: appTools/ToolCopperThieving.py:1422 +msgid "" +"Will add a polygon (may be split in multiple parts)\n" +"that will surround the actual Gerber traces at a certain distance." +msgstr "" +"Will add a polygon (may be split in multiple parts)\n" +"that will surround the actual Gerber traces at a certain distance." + +#: appTools/ToolCopperThieving.py:1481 +msgid "Insert Robber Bar" +msgstr "Insert Robber Bar" + +#: appTools/ToolCopperThieving.py:1483 +msgid "" +"Will add a polygon with a defined thickness\n" +"that will surround the actual Gerber object\n" +"at a certain distance.\n" +"Required when doing holes pattern plating." +msgstr "" +"Will add a polygon with a defined thickness\n" +"that will surround the actual Gerber object\n" +"at a certain distance.\n" +"Required when doing holes pattern plating." + +#: appTools/ToolCopperThieving.py:1507 +msgid "Select Soldermask object" +msgstr "Select Soldermask object" + +#: appTools/ToolCopperThieving.py:1509 +msgid "" +"Gerber Object with the soldermask.\n" +"It will be used as a base for\n" +"the pattern plating mask." +msgstr "" +"Gerber Object with the soldermask.\n" +"It will be used as a base for\n" +"the pattern plating mask." + +#: appTools/ToolCopperThieving.py:1538 +msgid "Plated area" +msgstr "Plated area" + +#: appTools/ToolCopperThieving.py:1540 +msgid "" +"The area to be plated by pattern plating.\n" +"Basically is made from the openings in the plating mask.\n" +"\n" +"<> - the calculated area is actually a bit larger\n" +"due of the fact that the soldermask openings are by design\n" +"a bit larger than the copper pads, and this area is\n" +"calculated from the soldermask openings." +msgstr "" +"The area to be plated by pattern plating.\n" +"Basically is made from the openings in the plating mask.\n" +"\n" +"<> - the calculated area is actually a bit larger\n" +"due of the fact that the soldermask openings are by design\n" +"a bit larger than the copper pads, and this area is\n" +"calculated from the soldermask openings." + +#: appTools/ToolCopperThieving.py:1551 +msgid "mm" +msgstr "mm" + +#: appTools/ToolCopperThieving.py:1553 +msgid "in" +msgstr "in" + +#: appTools/ToolCopperThieving.py:1560 +msgid "Generate pattern plating mask" +msgstr "Generate pattern plating mask" + +#: appTools/ToolCopperThieving.py:1562 +msgid "" +"Will add to the soldermask gerber geometry\n" +"the geometries of the copper thieving and/or\n" +"the robber bar if those were generated." +msgstr "" +"Will add to the soldermask gerber geometry\n" +"the geometries of the copper thieving and/or\n" +"the robber bar if those were generated." + +#: appTools/ToolCorners.py:87 msgid "Corners Tool" msgstr "Corners Tool" -#: appTools/ToolCorners.py:305 +#: appTools/ToolCorners.py:157 msgid "Please select at least a location" msgstr "Please select at least a location" -#: appTools/ToolCorners.py:440 +#: appTools/ToolCorners.py:292 msgid "Corners Tool exit." msgstr "Corners Tool exit." -#: appTools/ToolCutOut.py:41 -msgid "Cutout PCB" -msgstr "Cutout PCB" +#: appTools/ToolCorners.py:319 +msgid "The Gerber object to which will be added corner markers." +msgstr "The Gerber object to which will be added corner markers." -#: appTools/ToolCutOut.py:69 appTools/ToolPanelize.py:53 -msgid "Source Object" -msgstr "Source Object" +#: appTools/ToolCorners.py:335 +msgid "Locations" +msgstr "Locations" -#: appTools/ToolCutOut.py:70 -msgid "Object to be cutout" -msgstr "Object to be cutout" +#: appTools/ToolCorners.py:337 +msgid "Locations where to place corner markers." +msgstr "Locations where to place corner markers." -#: appTools/ToolCutOut.py:75 -msgid "Kind" -msgstr "Kind" +#: appTools/ToolCorners.py:354 appTools/ToolFiducials.py:706 +msgid "Top Right" +msgstr "Top Right" -#: appTools/ToolCutOut.py:97 +#: appTools/ToolCorners.py:363 +msgid "Toggle ALL" +msgstr "Toggle ALL" + +#: appTools/ToolCorners.py:429 +msgid "Add Marker" +msgstr "Add Marker" + +#: appTools/ToolCorners.py:431 +msgid "Will add corner markers to the selected Gerber file." +msgstr "Will add corner markers to the selected Gerber file." + +#: appTools/ToolCutOut.py:274 appTools/ToolIsolation.py:785 +#: appTools/ToolIsolation.py:1014 appTools/ToolIsolation.py:1150 +#: appTools/ToolNCC.py:458 appTools/ToolNCC.py:945 appTools/ToolNCC.py:1083 +#: appTools/ToolPaint.py:395 appTools/ToolPaint.py:685 +#: appTools/ToolPaint.py:822 appTools/ToolSolderPaste.py:131 +#: appTools/ToolSolderPaste.py:464 app_Main.py:4490 +msgid "Please enter a tool diameter with non-zero value, in Float format." +msgstr "Please enter a tool diameter with non-zero value, in Float format." + +#: appTools/ToolCutOut.py:350 appTools/ToolIsolation.py:1095 +#: appTools/ToolNCC.py:1028 appTools/ToolPaint.py:766 +#, fuzzy +#| msgid "Tools in Tools Database edited but not saved." +msgid "Tool not in Tools Database. Adding a default tool." +msgstr "Tools in Tools Database edited but not saved." + +#: appTools/ToolCutOut.py:357 appTools/ToolDrilling.py:941 +#: appTools/ToolIsolation.py:1102 appTools/ToolNCC.py:1035 +#: appTools/ToolPaint.py:774 msgid "" -"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." +"Cancelled.\n" +"Multiple tools for one tool diameter found in Tools Database." msgstr "" -"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." -#: appTools/ToolCutOut.py:121 -msgid "Tool Parameters" -msgstr "Tool Parameters" +#: appTools/ToolCutOut.py:381 +#, fuzzy +#| msgid "Add Tool from Tools DB" +msgid "Updated tool from Tools Database." +msgstr "Add Tool from Tools DB" -#: appTools/ToolCutOut.py:238 -msgid "A. Automatic Bridge Gaps" -msgstr "A. Automatic Bridge Gaps" +#: appTools/ToolCutOut.py:449 +#, fuzzy +#| msgid "Default Values" +msgid "Default tool added." +msgstr "Default Values" -#: appTools/ToolCutOut.py:240 -msgid "This section handle creation of automatic bridge gaps." -msgstr "This section handle creation of automatic bridge gaps." - -#: appTools/ToolCutOut.py:247 -msgid "" -"Number of gaps used for the Automatic cutout.\n" -"There can be maximum 8 bridges/gaps.\n" -"The choices are:\n" -"- None - no gaps\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" +#: appTools/ToolCutOut.py:458 appTools/ToolIsolation.py:2539 +#: appTools/ToolNCC.py:3601 appTools/ToolPaint.py:2619 +msgid "Selected tool can't be used here. Pick another." msgstr "" -"Number of gaps used for the Automatic cutout.\n" -"There can be maximum 8 bridges/gaps.\n" -"The choices are:\n" -"- None - no gaps\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" -#: appTools/ToolCutOut.py:269 -msgid "Generate Freeform Geometry" -msgstr "Generate Freeform Geometry" +#: appTools/ToolCutOut.py:481 +#, fuzzy +#| msgid "Tool copied from Tools DB." +msgid "Tool updated from Tools Database." +msgstr "Tool copied from Tools DB." -#: appTools/ToolCutOut.py:271 -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 "" -"Cutout the selected object.\n" -"The cutout shape can be of any shape.\n" -"Useful when the PCB has a non-rectangular shape." - -#: appTools/ToolCutOut.py:283 -msgid "Generate Rectangular Geometry" -msgstr "Generate Rectangular Geometry" - -#: appTools/ToolCutOut.py:285 -msgid "" -"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." -msgstr "" -"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." - -#: appTools/ToolCutOut.py:304 -msgid "B. Manual Bridge Gaps" -msgstr "B. Manual Bridge Gaps" - -#: appTools/ToolCutOut.py:306 -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 "" -"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. " - -#: appTools/ToolCutOut.py:321 -msgid "Geometry object used to create the manual cutout." -msgstr "Geometry object used to create the manual cutout." - -#: appTools/ToolCutOut.py:328 -msgid "Generate Manual Geometry" -msgstr "Generate Manual Geometry" - -#: appTools/ToolCutOut.py:330 -msgid "" -"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." -msgstr "" -"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." - -#: appTools/ToolCutOut.py:343 -msgid "Manual Add Bridge Gaps" -msgstr "Manual Add Bridge Gaps" - -#: appTools/ToolCutOut.py:345 -msgid "" -"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." -msgstr "" -"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." - -#: appTools/ToolCutOut.py:561 +#: appTools/ToolCutOut.py:544 msgid "" "There is no object selected for Cutout.\n" "Select one and try again." @@ -13554,17 +14610,17 @@ msgstr "" "There is no object selected for Cutout.\n" "Select one and try again." -#: appTools/ToolCutOut.py:567 appTools/ToolCutOut.py:770 -#: appTools/ToolCutOut.py:951 appTools/ToolCutOut.py:1033 +#: appTools/ToolCutOut.py:550 appTools/ToolCutOut.py:871 +#: appTools/ToolCutOut.py:1118 appTools/ToolCutOut.py:1236 #: tclCommands/TclCommandGeoCutout.py:184 msgid "Tool Diameter is zero value. Change it to a positive real number." msgstr "Tool Diameter is zero value. Change it to a positive real number." -#: appTools/ToolCutOut.py:581 appTools/ToolCutOut.py:785 +#: appTools/ToolCutOut.py:563 appTools/ToolCutOut.py:886 msgid "Number of gaps value is missing. Add it and retry." msgstr "Number of gaps value is missing. Add it and retry." -#: appTools/ToolCutOut.py:586 appTools/ToolCutOut.py:789 +#: appTools/ToolCutOut.py:568 appTools/ToolCutOut.py:890 msgid "" "Gaps value can be only one of: 'None', 'lr', 'tb', '2lr', '2tb', 4 or 8. " "Fill in a correct value and retry. " @@ -13572,7 +14628,7 @@ msgstr "" "Gaps value can be only one of: 'None', 'lr', 'tb', '2lr', '2tb', 4 or 8. " "Fill in a correct value and retry. " -#: appTools/ToolCutOut.py:591 appTools/ToolCutOut.py:795 +#: appTools/ToolCutOut.py:573 appTools/ToolCutOut.py:896 msgid "" "Cutout operation cannot be done on a multi-geo Geometry.\n" "Optionally, this Multi-geo Geometry can be converted to Single-geo " @@ -13584,45 +14640,63 @@ msgstr "" "Geometry,\n" "and after that perform Cutout." -#: appTools/ToolCutOut.py:743 appTools/ToolCutOut.py:940 +#: appTools/ToolCutOut.py:836 +#, fuzzy +#| msgid "Open GCode file failed." +msgid "Mouse bites failed." +msgstr "Open GCode file failed." + +#: appTools/ToolCutOut.py:840 appTools/ToolCutOut.py:1086 msgid "Any form CutOut operation finished." msgstr "Any form CutOut operation finished." -#: appTools/ToolCutOut.py:765 appTools/ToolEtchCompensation.py:366 -#: appTools/ToolInvertGerber.py:217 appTools/ToolIsolation.py:1622 -#: appTools/ToolIsolation.py:1649 appTools/ToolNCC.py:1621 -#: appTools/ToolPaint.py:1416 appTools/ToolPanelize.py:429 -#: tclCommands/TclCommandBbox.py:71 tclCommands/TclCommandNregions.py:71 +#: appTools/ToolCutOut.py:866 appTools/ToolDrilling.py:1572 +#: appTools/ToolEtchCompensation.py:158 appTools/ToolInvertGerber.py:105 +#: appTools/ToolIsolation.py:903 appTools/ToolIsolation.py:1314 +#: appTools/ToolIsolation.py:1341 appTools/ToolMilling.py:1326 +#: appTools/ToolNCC.py:833 appTools/ToolNCC.py:1265 appTools/ToolPaint.py:1002 +#: appTools/ToolPanelize.py:196 tclCommands/TclCommandBbox.py:71 +#: tclCommands/TclCommandNregions.py:71 msgid "Object not found" msgstr "Object not found" -#: appTools/ToolCutOut.py:909 +#: appTools/ToolCutOut.py:1040 msgid "Rectangular cutout with negative margin is not possible." msgstr "Rectangular cutout with negative margin is not possible." -#: appTools/ToolCutOut.py:945 -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 ..." - -#: appTools/ToolCutOut.py:962 appTools/ToolCutOut.py:988 +#: appTools/ToolCutOut.py:1102 appTools/ToolCutOut.py:1129 msgid "Could not retrieve Geometry object" msgstr "Could not retrieve Geometry object" -#: appTools/ToolCutOut.py:993 +#: appTools/ToolCutOut.py:1107 appTools/ToolCutOut.py:1158 msgid "Geometry object for manual cutout not found" msgstr "Geometry object for manual cutout not found" -#: appTools/ToolCutOut.py:1003 -msgid "Added manual Bridge Gap." -msgstr "Added manual Bridge Gap." +#: appTools/ToolCutOut.py:1110 +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 ..." -#: appTools/ToolCutOut.py:1015 +#: appTools/ToolCutOut.py:1185 +#, fuzzy +#| msgid "Generate the Geometry object." +msgid "No tool in the Geometry object." +msgstr "Generate the Geometry object." + +#: appTools/ToolCutOut.py:1206 +#, fuzzy +#| msgid "" +#| "Zone added. Click to start adding next zone or right click to finish." +msgid "" +"Added manual Bridge Gap. Left click to add another or right click to finish." +msgstr "Zone added. Click to start adding next zone or right click to finish." + +#: appTools/ToolCutOut.py:1218 msgid "Could not retrieve Gerber object" msgstr "Could not retrieve Gerber object" -#: appTools/ToolCutOut.py:1020 +#: appTools/ToolCutOut.py:1223 msgid "" "There is no Gerber object selected for Cutout.\n" "Select one and try again." @@ -13630,7 +14704,7 @@ msgstr "" "There is no Gerber object selected for Cutout.\n" "Select one and try again." -#: appTools/ToolCutOut.py:1026 +#: appTools/ToolCutOut.py:1229 msgid "" "The selected object has to be of Gerber type.\n" "Select a Gerber file and try again." @@ -13638,273 +14712,172 @@ msgstr "" "The selected object has to be of Gerber type.\n" "Select a Gerber file and try again." -#: appTools/ToolCutOut.py:1061 +#: appTools/ToolCutOut.py:1264 msgid "Geometry not supported for cutout" msgstr "Geometry not supported for cutout" -#: appTools/ToolCutOut.py:1136 +#: appTools/ToolCutOut.py:1336 msgid "Making manual bridge gap..." msgstr "Making manual bridge gap..." -#: appTools/ToolDblSided.py:26 -msgid "2-Sided PCB" -msgstr "2-Sided PCB" - -#: appTools/ToolDblSided.py:52 -msgid "Mirror Operation" -msgstr "Mirror Operation" - -#: appTools/ToolDblSided.py:53 -msgid "Objects to be mirrored" -msgstr "Objects to be mirrored" - -#: appTools/ToolDblSided.py:65 -msgid "Gerber to be mirrored" -msgstr "Gerber to be mirrored" - -#: appTools/ToolDblSided.py:67 appTools/ToolDblSided.py:95 -#: appTools/ToolDblSided.py:125 -msgid "Mirror" -msgstr "Mirror" - -#: appTools/ToolDblSided.py:69 appTools/ToolDblSided.py:97 -#: appTools/ToolDblSided.py:127 -msgid "" -"Mirrors (flips) the specified object around \n" -"the specified axis. Does not create a new \n" -"object, but modifies it." +#: appTools/ToolCutOut.py:1378 +msgid "Finished manual adding of gaps." msgstr "" -"Mirrors (flips) the specified object around \n" -"the specified axis. Does not create a new \n" -"object, but modifies it." -#: appTools/ToolDblSided.py:93 -msgid "Excellon Object to be mirrored." -msgstr "Excellon Object to be mirrored." +#: appTools/ToolCutOut.py:1720 +msgid "Cutout PCB" +msgstr "Cutout PCB" -#: appTools/ToolDblSided.py:122 -msgid "Geometry Obj to be mirrored." -msgstr "Geometry Obj to be mirrored." +#: appTools/ToolCutOut.py:1746 appTools/ToolDblSided.py:513 +#: appTools/ToolPanelize.py:652 +msgid "Source Object" +msgstr "Source Object" -#: appTools/ToolDblSided.py:158 -msgid "Mirror Parameters" -msgstr "Mirror Parameters" +#: appTools/ToolCutOut.py:1747 +msgid "Object to be cutout" +msgstr "Object to be cutout" -#: appTools/ToolDblSided.py:159 -msgid "Parameters for the mirror operation" -msgstr "Parameters for the mirror operation" +#: appTools/ToolCutOut.py:1752 +msgid "Kind" +msgstr "Kind" -#: appTools/ToolDblSided.py:164 -msgid "Mirror Axis" -msgstr "Mirror Axis" - -#: appTools/ToolDblSided.py:175 +#: appTools/ToolCutOut.py:1774 appTools/ToolDblSided.py:521 msgid "" -"The coordinates used as reference for the mirror operation.\n" -"Can be:\n" -"- Point -> a set of coordinates (x,y) around which the object is mirrored\n" -"- Box -> a set of coordinates (x, y) obtained from the center of the\n" -"bounding box of another object selected below" +"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." msgstr "" -"The coordinates used as reference for the mirror operation.\n" -"Can be:\n" -"- Point -> a set of coordinates (x,y) around which the object is mirrored\n" -"- Box -> a set of coordinates (x, y) obtained from the center of the\n" -"bounding box of another object selected below" +"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." -#: appTools/ToolDblSided.py:189 -msgid "Point coordinates" -msgstr "Point coordinates" +#: appTools/ToolCutOut.py:1830 appTools/ToolIsolation.py:61 +#: appTools/ToolIsolation.py:3078 appTools/ToolNCC.py:3883 +#: appTools/ToolPaint.py:2897 +msgid "Search and Add" +msgstr "" -#: appTools/ToolDblSided.py:194 +#: appTools/ToolCutOut.py:1833 appTools/ToolIsolation.py:3081 +#: appTools/ToolNCC.py:3886 appTools/ToolPaint.py:2900 msgid "" -"Add the coordinates in format (x, y) through which the mirroring " -"axis\n" -" selected in 'MIRROR AXIS' pass.\n" -"The (x, y) coordinates are captured by pressing SHIFT key\n" -"and left mouse button click on canvas or you can enter the coordinates " -"manually." +"Add a new tool to the Tool Table\n" +"with the diameter specified above.\n" +"This is done by a background search\n" +"in the Tools Database. If nothing is found\n" +"in the Tools DB then a default tool is added." msgstr "" -"Add the coordinates in format (x, y) through which the mirroring " -"axis\n" -" selected in 'MIRROR AXIS' pass.\n" -"The (x, y) coordinates are captured by pressing SHIFT key\n" -"and left mouse button click on canvas or you can enter the coordinates " -"manually." -#: appTools/ToolDblSided.py:218 +#: appTools/ToolCutOut.py:1842 appTools/ToolIsolation.py:65 +#: appTools/ToolIsolation.py:3089 appTools/ToolNCC.py:3894 +#: appTools/ToolPaint.py:2908 +#, fuzzy +#| msgid "Add from DB" +msgid "Pick from DB" +msgstr "Add from DB" + +#: appTools/ToolCutOut.py:1858 +msgid "Tool Parameters" +msgstr "Tool Parameters" + +#: appTools/ToolCutOut.py:2007 +#, fuzzy +#| msgid "Auto" +msgid "Automatic" +msgstr "Auto" + +#: appTools/ToolCutOut.py:2007 appTools/ToolCutOut.py:2082 +#, fuzzy +#| msgid "B. Manual Bridge Gaps" +msgid "Bridge Gaps" +msgstr "B. Manual Bridge Gaps" + +#: appTools/ToolCutOut.py:2009 +msgid "This section handle creation of automatic bridge gaps." +msgstr "This section handle creation of automatic bridge gaps." + +#: appTools/ToolCutOut.py:2048 msgid "" -"It can be of type: Gerber or Excellon or Geometry.\n" -"The coordinates of the center of the bounding box are used\n" -"as reference for mirror operation." +"Cutout the selected object.\n" +"The cutout shape can be of any shape.\n" +"Useful when the PCB has a non-rectangular shape." msgstr "" -"It can be of type: Gerber or Excellon or Geometry.\n" -"The coordinates of the center of the bounding box are used\n" -"as reference for mirror operation." +"Cutout the selected object.\n" +"The cutout shape can be of any shape.\n" +"Useful when the PCB has a non-rectangular shape." -#: appTools/ToolDblSided.py:252 -msgid "Bounds Values" -msgstr "Bounds Values" - -#: appTools/ToolDblSided.py:254 +#: appTools/ToolCutOut.py:2063 msgid "" -"Select on canvas the object(s)\n" -"for which to calculate bounds values." +"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." msgstr "" -"Select on canvas the object(s)\n" -"for which to calculate bounds values." +"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." -#: appTools/ToolDblSided.py:264 -msgid "X min" -msgstr "X min" - -#: appTools/ToolDblSided.py:266 appTools/ToolDblSided.py:280 -msgid "Minimum location." -msgstr "Minimum location." - -#: appTools/ToolDblSided.py:278 -msgid "Y min" -msgstr "Y min" - -#: appTools/ToolDblSided.py:292 -msgid "X max" -msgstr "X max" - -#: appTools/ToolDblSided.py:294 appTools/ToolDblSided.py:308 -msgid "Maximum location." -msgstr "Maximum location." - -#: appTools/ToolDblSided.py:306 -msgid "Y max" -msgstr "Y max" - -#: appTools/ToolDblSided.py:317 -msgid "Center point coordinates" -msgstr "Center point coordinates" - -#: appTools/ToolDblSided.py:319 -msgid "Centroid" -msgstr "Centroid" - -#: appTools/ToolDblSided.py:321 +#: appTools/ToolCutOut.py:2084 msgid "" -"The center point location for the rectangular\n" -"bounding shape. Centroid. Format is (x, y)." +"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 "" -"The center point location for the rectangular\n" -"bounding shape. Centroid. Format is (x, y)." +"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. " -#: appTools/ToolDblSided.py:330 -msgid "Calculate Bounds Values" -msgstr "Calculate Bounds Values" +#: appTools/ToolCutOut.py:2100 +msgid "Generate Manual Geometry" +msgstr "Generate Manual Geometry" -#: appTools/ToolDblSided.py:332 +#: appTools/ToolCutOut.py:2103 msgid "" -"Calculate the enveloping rectangular shape coordinates,\n" -"for the selection of objects.\n" -"The envelope shape is parallel with the X, Y axis." +"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." msgstr "" -"Calculate the enveloping rectangular shape coordinates,\n" -"for the selection of objects.\n" -"The envelope shape is parallel with the X, Y axis." +"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." -#: appTools/ToolDblSided.py:352 -msgid "PCB Alignment" -msgstr "PCB Alignment" +#: appTools/ToolCutOut.py:2123 +#, fuzzy +#| msgid "Subtract Geometry" +msgid "Manual cutout Geometry" +msgstr "Subtract Geometry" -#: appTools/ToolDblSided.py:354 appTools/ToolDblSided.py:456 +#: appTools/ToolCutOut.py:2125 +msgid "Geometry object used to create the manual cutout." +msgstr "Geometry object used to create the manual cutout." + +#: appTools/ToolCutOut.py:2132 +msgid "Manual Add Bridge Gaps" +msgstr "Manual Add Bridge Gaps" + +#: appTools/ToolCutOut.py:2135 msgid "" -"Creates an Excellon Object containing the\n" -"specified alignment holes and their mirror\n" -"images." +"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." msgstr "" -"Creates an Excellon Object containing the\n" -"specified alignment holes and their mirror\n" -"images." +"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." -#: appTools/ToolDblSided.py:361 -msgid "Drill Diameter" -msgstr "Drill Diameter" - -#: appTools/ToolDblSided.py:390 appTools/ToolDblSided.py:397 -msgid "" -"The reference point used to create the second alignment drill\n" -"from the first alignment drill, by doing mirror.\n" -"It can be modified in the Mirror Parameters -> Reference section" -msgstr "" -"The reference point used to create the second alignment drill\n" -"from the first alignment drill, by doing mirror.\n" -"It can be modified in the Mirror Parameters -> Reference section" - -#: appTools/ToolDblSided.py:410 -msgid "Alignment Drill Coordinates" -msgstr "Alignment Drill Coordinates" - -#: appTools/ToolDblSided.py:412 -msgid "" -"Alignment holes (x1, y1), (x2, y2), ... on one side of the mirror axis. For " -"each set of (x, y) coordinates\n" -"entered here, a pair of drills will be created:\n" -"\n" -"- one drill at the coordinates from the field\n" -"- one drill in mirror position over the axis selected above in the 'Align " -"Axis'." -msgstr "" -"Alignment holes (x1, y1), (x2, y2), ... on one side of the mirror axis. For " -"each set of (x, y) coordinates\n" -"entered here, a pair of drills will be created:\n" -"\n" -"- one drill at the coordinates from the field\n" -"- one drill in mirror position over the axis selected above in the 'Align " -"Axis'." - -#: appTools/ToolDblSided.py:420 -msgid "Drill coordinates" -msgstr "Drill coordinates" - -#: appTools/ToolDblSided.py:427 -msgid "" -"Add alignment drill holes coordinates in the format: (x1, y1), (x2, " -"y2), ... \n" -"on one side of the alignment axis.\n" -"\n" -"The coordinates set can be obtained:\n" -"- press SHIFT key and left mouse clicking on canvas. Then click Add.\n" -"- press SHIFT key and left mouse clicking on canvas. Then Ctrl+V in the " -"field.\n" -"- press SHIFT key and left mouse clicking on canvas. Then RMB click in the " -"field and click Paste.\n" -"- by entering the coords manually in the format: (x1, y1), (x2, y2), ..." -msgstr "" -"Add alignment drill holes coordinates in the format: (x1, y1), (x2, " -"y2), ... \n" -"on one side of the alignment axis.\n" -"\n" -"The coordinates set can be obtained:\n" -"- press SHIFT key and left mouse clicking on canvas. Then click Add.\n" -"- press SHIFT key and left mouse clicking on canvas. Then Ctrl+V in the " -"field.\n" -"- press SHIFT key and left mouse clicking on canvas. Then RMB click in the " -"field and click Paste.\n" -"- by entering the coords manually in the format: (x1, y1), (x2, y2), ..." - -#: appTools/ToolDblSided.py:442 -msgid "Delete Last" -msgstr "Delete Last" - -#: appTools/ToolDblSided.py:444 -msgid "Delete the last coordinates tuple in the list." -msgstr "Delete the last coordinates tuple in the list." - -#: appTools/ToolDblSided.py:454 -msgid "Create Excellon Object" -msgstr "Create Excellon Object" - -#: appTools/ToolDblSided.py:541 +#: appTools/ToolDblSided.py:107 msgid "2-Sided Tool" msgstr "2-Sided Tool" -#: appTools/ToolDblSided.py:581 +#: appTools/ToolDblSided.py:160 msgid "" "'Point' reference is selected and 'Point' coordinates are missing. Add them " "and retry." @@ -13912,245 +14885,577 @@ msgstr "" "'Point' reference is selected and 'Point' coordinates are missing. Add them " "and retry." -#: appTools/ToolDblSided.py:600 +#: appTools/ToolDblSided.py:169 msgid "There is no Box reference object loaded. Load one and retry." msgstr "There is no Box reference object loaded. Load one and retry." -#: appTools/ToolDblSided.py:612 +#: appTools/ToolDblSided.py:181 msgid "No value or wrong format in Drill Dia entry. Add it and retry." msgstr "No value or wrong format in Drill Dia entry. Add it and retry." -#: appTools/ToolDblSided.py:623 +#: appTools/ToolDblSided.py:193 msgid "There are no Alignment Drill Coordinates to use. Add them and retry." msgstr "There are no Alignment Drill Coordinates to use. Add them and retry." -#: appTools/ToolDblSided.py:648 +#: appTools/ToolDblSided.py:213 msgid "Excellon object with alignment drills created..." msgstr "Excellon object with alignment drills created..." -#: appTools/ToolDblSided.py:661 appTools/ToolDblSided.py:704 -#: appTools/ToolDblSided.py:748 -msgid "Only Gerber, Excellon and Geometry objects can be mirrored." -msgstr "Only Gerber, Excellon and Geometry objects can be mirrored." - -#: appTools/ToolDblSided.py:671 appTools/ToolDblSided.py:715 -msgid "" -"There are no Point coordinates in the Point field. Add coords and try " -"again ..." -msgstr "" -"There are no Point coordinates in the Point field. Add coords and try " -"again ..." - -#: appTools/ToolDblSided.py:681 appTools/ToolDblSided.py:725 -#: appTools/ToolDblSided.py:762 -msgid "There is no Box object loaded ..." -msgstr "There is no Box object loaded ..." - -#: appTools/ToolDblSided.py:691 appTools/ToolDblSided.py:735 -#: appTools/ToolDblSided.py:772 -msgid "was mirrored" -msgstr "was mirrored" - -#: appTools/ToolDblSided.py:700 appTools/ToolPunchGerber.py:533 +#: appTools/ToolDblSided.py:224 appTools/ToolPunchGerber.py:209 msgid "There is no Excellon object loaded ..." msgstr "There is no Excellon object loaded ..." -#: appTools/ToolDblSided.py:744 -msgid "There is no Geometry object loaded ..." -msgstr "There is no Geometry object loaded ..." +#: appTools/ToolDblSided.py:236 +msgid "Click on canvas within the desired Excellon drill hole" +msgstr "" -#: appTools/ToolDblSided.py:818 app_Main.py:4473 app_Main.py:4628 +#: appTools/ToolDblSided.py:280 +#, fuzzy +#| msgid "Mirror Reference point" +msgid "Mirror reference point set." +msgstr "Mirror Reference point" + +#: appTools/ToolDblSided.py:308 +msgid "Only Gerber, Excellon and Geometry objects can be mirrored." +msgstr "Only Gerber, Excellon and Geometry objects can be mirrored." + +#: appTools/ToolDblSided.py:320 +msgid "There is no Box object loaded ..." +msgstr "There is no Box object loaded ..." + +#: appTools/ToolDblSided.py:330 +msgid "" +"There are no Point coordinates in the Point field. Add coords and try " +"again ..." +msgstr "" +"There are no Point coordinates in the Point field. Add coords and try " +"again ..." + +#: appTools/ToolDblSided.py:337 camlib.py:2329 +msgid "Object was mirrored" +msgstr "Object was mirrored" + +#: appTools/ToolDblSided.py:403 app_Main.py:4629 app_Main.py:4784 msgid "Failed. No object(s) selected..." msgstr "Failed. No object(s) selected..." -#: appTools/ToolDistance.py:57 appTools/ToolDistanceMin.py:50 -msgid "Those are the units in which the distance is measured." -msgstr "Those are the units in which the distance is measured." +#: appTools/ToolDblSided.py:487 +msgid "2-Sided PCB" +msgstr "2-Sided PCB" -#: appTools/ToolDistance.py:58 appTools/ToolDistanceMin.py:51 -msgid "METRIC (mm)" -msgstr "METRIC (mm)" +#: appTools/ToolDblSided.py:514 +msgid "Objects to be mirrored" +msgstr "Objects to be mirrored" -#: appTools/ToolDistance.py:58 appTools/ToolDistanceMin.py:51 -msgid "INCH (in)" -msgstr "INCH (in)" +#: appTools/ToolDblSided.py:560 +msgid "Bounds Values" +msgstr "Bounds Values" -#: appTools/ToolDistance.py:64 -msgid "Snap to center" -msgstr "Snap to center" - -#: appTools/ToolDistance.py:66 +#: appTools/ToolDblSided.py:562 msgid "" -"Mouse cursor will snap to the center of the pad/drill\n" -"when it is hovering over the geometry of the pad/drill." +"Select on canvas the object(s)\n" +"for which to calculate bounds values." msgstr "" -"Mouse cursor will snap to the center of the pad/drill\n" -"when it is hovering over the geometry of the pad/drill." +"Select on canvas the object(s)\n" +"for which to calculate bounds values." -#: appTools/ToolDistance.py:76 -msgid "Start Coords" -msgstr "Start Coords" +#: appTools/ToolDblSided.py:572 +msgid "X min" +msgstr "X min" -#: appTools/ToolDistance.py:77 appTools/ToolDistance.py:82 -msgid "This is measuring Start point coordinates." -msgstr "This is measuring Start point coordinates." +#: appTools/ToolDblSided.py:574 appTools/ToolDblSided.py:588 +msgid "Minimum location." +msgstr "Minimum location." -#: appTools/ToolDistance.py:87 -msgid "Stop Coords" -msgstr "Stop Coords" +#: appTools/ToolDblSided.py:586 +msgid "Y min" +msgstr "Y min" -#: appTools/ToolDistance.py:88 appTools/ToolDistance.py:93 -msgid "This is the measuring Stop point coordinates." -msgstr "This is the measuring Stop point coordinates." +#: appTools/ToolDblSided.py:600 +msgid "X max" +msgstr "X max" -#: appTools/ToolDistance.py:98 appTools/ToolDistanceMin.py:62 -msgid "Dx" -msgstr "Dx" +#: appTools/ToolDblSided.py:602 appTools/ToolDblSided.py:616 +msgid "Maximum location." +msgstr "Maximum location." -#: appTools/ToolDistance.py:99 appTools/ToolDistance.py:104 -#: appTools/ToolDistanceMin.py:63 appTools/ToolDistanceMin.py:92 -msgid "This is the distance measured over the X axis." -msgstr "This is the distance measured over the X axis." +#: appTools/ToolDblSided.py:614 +msgid "Y max" +msgstr "Y max" -#: appTools/ToolDistance.py:109 appTools/ToolDistanceMin.py:65 -msgid "Dy" -msgstr "Dy" +#: appTools/ToolDblSided.py:625 +msgid "Center point coordinates" +msgstr "Center point coordinates" -#: appTools/ToolDistance.py:110 appTools/ToolDistance.py:115 -#: appTools/ToolDistanceMin.py:66 appTools/ToolDistanceMin.py:97 -msgid "This is the distance measured over the Y axis." -msgstr "This is the distance measured over the Y axis." +#: appTools/ToolDblSided.py:627 +msgid "Centroid" +msgstr "Centroid" -#: appTools/ToolDistance.py:121 appTools/ToolDistance.py:126 -#: appTools/ToolDistanceMin.py:69 appTools/ToolDistanceMin.py:102 -msgid "This is orientation angle of the measuring line." -msgstr "This is orientation angle of the measuring line." +#: appTools/ToolDblSided.py:629 +msgid "" +"The center point location for the rectangular\n" +"bounding shape. Centroid. Format is (x, y)." +msgstr "" +"The center point location for the rectangular\n" +"bounding shape. Centroid. Format is (x, y)." -#: appTools/ToolDistance.py:131 appTools/ToolDistanceMin.py:71 -msgid "DISTANCE" -msgstr "DISTANCE" +#: appTools/ToolDblSided.py:638 +msgid "Calculate Bounds Values" +msgstr "Calculate Bounds Values" -#: appTools/ToolDistance.py:132 appTools/ToolDistance.py:137 -msgid "This is the point to point Euclidian distance." -msgstr "This is the point to point Euclidian distance." +#: appTools/ToolDblSided.py:640 +msgid "" +"Calculate the enveloping rectangular shape coordinates,\n" +"for the selection of objects.\n" +"The envelope shape is parallel with the X, Y axis." +msgstr "" +"Calculate the enveloping rectangular shape coordinates,\n" +"for the selection of objects.\n" +"The envelope shape is parallel with the X, Y axis." -#: appTools/ToolDistance.py:142 appTools/ToolDistance.py:339 -#: appTools/ToolDistanceMin.py:114 -msgid "Measure" -msgstr "Measure" +#: appTools/ToolDblSided.py:667 +msgid "Mirror Operation" +msgstr "Mirror Operation" -#: appTools/ToolDistance.py:274 +#: appTools/ToolDblSided.py:668 +msgid "Parameters for the mirror operation" +msgstr "Parameters for the mirror operation" + +#: appTools/ToolDblSided.py:690 +#, fuzzy +#| msgid "" +#| "The coordinates used as reference for the mirror operation.\n" +#| "Can be:\n" +#| "- Point -> a set of coordinates (x,y) around which the object is " +#| "mirrored\n" +#| "- Box -> a set of coordinates (x, y) obtained from the center of the\n" +#| "bounding box of another object selected below" +msgid "" +"The coordinates used as reference for the mirror operation.\n" +"Can be:\n" +"- Point -> a set of coordinates (x,y) around which the object is mirrored\n" +"- Box -> a set of coordinates (x, y) obtained from the center of the\n" +"bounding box of another object selected below\n" +"- Hole Snap -> a point defined by the center of a drill hone in a Excellon " +"object" +msgstr "" +"The coordinates used as reference for the mirror operation.\n" +"Can be:\n" +"- Point -> a set of coordinates (x,y) around which the object is mirrored\n" +"- Box -> a set of coordinates (x, y) obtained from the center of the\n" +"bounding box of another object selected below" + +#: appTools/ToolDblSided.py:710 +msgid "Point coordinates" +msgstr "Point coordinates" + +#: appTools/ToolDblSided.py:715 +msgid "" +"Add the coordinates in format (x, y) through which the mirroring " +"axis\n" +" selected in 'MIRROR AXIS' pass.\n" +"The (x, y) coordinates are captured by pressing SHIFT key\n" +"and left mouse button click on canvas or you can enter the coordinates " +"manually." +msgstr "" +"Add the coordinates in format (x, y) through which the mirroring " +"axis\n" +" selected in 'MIRROR AXIS' pass.\n" +"The (x, y) coordinates are captured by pressing SHIFT key\n" +"and left mouse button click on canvas or you can enter the coordinates " +"manually." + +#: appTools/ToolDblSided.py:733 +msgid "Object that holds holes that can be picked as reference for mirroing." +msgstr "" + +#: appTools/ToolDblSided.py:748 +msgid "Pick hole" +msgstr "" + +#: appTools/ToolDblSided.py:750 +msgid "" +"Click inside a drill hole that belong to the selected Excellon object,\n" +"and the hole center coordinates will be copied to the Point field." +msgstr "" + +#: appTools/ToolDblSided.py:766 +msgid "" +"It can be of type: Gerber or Excellon or Geometry.\n" +"The coordinates of the center of the bounding box are used\n" +"as reference for mirror operation." +msgstr "" +"It can be of type: Gerber or Excellon or Geometry.\n" +"The coordinates of the center of the bounding box are used\n" +"as reference for mirror operation." + +#: appTools/ToolDblSided.py:792 +msgid "Mirror" +msgstr "Mirror" + +#: appTools/ToolDblSided.py:794 +msgid "" +"Mirrors (flips) the specified object around \n" +"the specified axis. Does not create a new \n" +"object, but modifies it." +msgstr "" +"Mirrors (flips) the specified object around \n" +"the specified axis. Does not create a new \n" +"object, but modifies it." + +#: appTools/ToolDblSided.py:822 +msgid "PCB Alignment" +msgstr "PCB Alignment" + +#: appTools/ToolDblSided.py:824 appTools/ToolDblSided.py:932 +msgid "" +"Creates an Excellon Object containing the\n" +"specified alignment holes and their mirror\n" +"images." +msgstr "" +"Creates an Excellon Object containing the\n" +"specified alignment holes and their mirror\n" +"images." + +#: appTools/ToolDblSided.py:831 +msgid "Drill Diameter" +msgstr "Drill Diameter" + +#: appTools/ToolDblSided.py:866 appTools/ToolDblSided.py:873 +msgid "" +"The reference point used to create the second alignment drill\n" +"from the first alignment drill, by doing mirror.\n" +"It can be modified in the Mirror Parameters -> Reference section" +msgstr "" +"The reference point used to create the second alignment drill\n" +"from the first alignment drill, by doing mirror.\n" +"It can be modified in the Mirror Parameters -> Reference section" + +#: appTools/ToolDblSided.py:886 +msgid "Alignment Drill Coordinates" +msgstr "Alignment Drill Coordinates" + +#: appTools/ToolDblSided.py:888 +msgid "" +"Alignment holes (x1, y1), (x2, y2), ... on one side of the mirror axis. For " +"each set of (x, y) coordinates\n" +"entered here, a pair of drills will be created:\n" +"\n" +"- one drill at the coordinates from the field\n" +"- one drill in mirror position over the axis selected above in the 'Align " +"Axis'." +msgstr "" +"Alignment holes (x1, y1), (x2, y2), ... on one side of the mirror axis. For " +"each set of (x, y) coordinates\n" +"entered here, a pair of drills will be created:\n" +"\n" +"- one drill at the coordinates from the field\n" +"- one drill in mirror position over the axis selected above in the 'Align " +"Axis'." + +#: appTools/ToolDblSided.py:896 +msgid "Drill coordinates" +msgstr "Drill coordinates" + +#: appTools/ToolDblSided.py:903 +msgid "" +"Add alignment drill holes coordinates in the format: (x1, y1), (x2, " +"y2), ... \n" +"on one side of the alignment axis.\n" +"\n" +"The coordinates set can be obtained:\n" +"- press SHIFT key and left mouse clicking on canvas. Then click Add.\n" +"- press SHIFT key and left mouse clicking on canvas. Then Ctrl+V in the " +"field.\n" +"- press SHIFT key and left mouse clicking on canvas. Then RMB click in the " +"field and click Paste.\n" +"- by entering the coords manually in the format: (x1, y1), (x2, y2), ..." +msgstr "" +"Add alignment drill holes coordinates in the format: (x1, y1), (x2, " +"y2), ... \n" +"on one side of the alignment axis.\n" +"\n" +"The coordinates set can be obtained:\n" +"- press SHIFT key and left mouse clicking on canvas. Then click Add.\n" +"- press SHIFT key and left mouse clicking on canvas. Then Ctrl+V in the " +"field.\n" +"- press SHIFT key and left mouse clicking on canvas. Then RMB click in the " +"field and click Paste.\n" +"- by entering the coords manually in the format: (x1, y1), (x2, y2), ..." + +#: appTools/ToolDblSided.py:918 +msgid "Delete Last" +msgstr "Delete Last" + +#: appTools/ToolDblSided.py:920 +msgid "Delete the last coordinates tuple in the list." +msgstr "Delete the last coordinates tuple in the list." + +#: appTools/ToolDblSided.py:930 +msgid "Create Excellon Object" +msgstr "Create Excellon Object" + +#: appTools/ToolDistance.py:177 msgid "Working" msgstr "Working" -#: appTools/ToolDistance.py:279 +#: appTools/ToolDistance.py:182 msgid "MEASURING: Click on the Start point ..." msgstr "MEASURING: Click on the Start point ..." -#: appTools/ToolDistance.py:389 +#: appTools/ToolDistance.py:242 appTools/ToolDistance.py:648 +#: appTools/ToolDistanceMin.py:302 +msgid "Measure" +msgstr "Measure" + +#: appTools/ToolDistance.py:292 msgid "Distance Tool finished." msgstr "Distance Tool finished." -#: appTools/ToolDistance.py:461 +#: appTools/ToolDistance.py:364 msgid "Pads overlapped. Aborting." msgstr "Pads overlapped. Aborting." -#: appTools/ToolDistance.py:489 +#: appTools/ToolDistance.py:392 msgid "Distance Tool cancelled." msgstr "Distance Tool cancelled." -#: appTools/ToolDistance.py:494 +#: appTools/ToolDistance.py:397 msgid "MEASURING: Click on the Destination point ..." msgstr "MEASURING: Click on the Destination point ..." -#: appTools/ToolDistance.py:503 appTools/ToolDistanceMin.py:284 +#: appTools/ToolDistance.py:406 appTools/ToolDistanceMin.py:197 msgid "MEASURING" msgstr "MEASURING" -#: appTools/ToolDistance.py:504 appTools/ToolDistanceMin.py:285 +#: appTools/ToolDistance.py:407 appTools/ToolDistanceMin.py:198 msgid "Result" msgstr "Result" -#: appTools/ToolDistanceMin.py:31 appTools/ToolDistanceMin.py:143 +#: appTools/ToolDistance.py:563 appTools/ToolDistanceMin.py:238 +msgid "Those are the units in which the distance is measured." +msgstr "Those are the units in which the distance is measured." + +#: appTools/ToolDistance.py:564 appTools/ToolDistanceMin.py:239 +msgid "METRIC (mm)" +msgstr "METRIC (mm)" + +#: appTools/ToolDistance.py:564 appTools/ToolDistanceMin.py:239 +msgid "INCH (in)" +msgstr "INCH (in)" + +#: appTools/ToolDistance.py:570 +msgid "Snap to center" +msgstr "Snap to center" + +#: appTools/ToolDistance.py:572 +msgid "" +"Mouse cursor will snap to the center of the pad/drill\n" +"when it is hovering over the geometry of the pad/drill." +msgstr "" +"Mouse cursor will snap to the center of the pad/drill\n" +"when it is hovering over the geometry of the pad/drill." + +#: appTools/ToolDistance.py:582 +msgid "Start Coords" +msgstr "Start Coords" + +#: appTools/ToolDistance.py:583 appTools/ToolDistance.py:588 +msgid "This is measuring Start point coordinates." +msgstr "This is measuring Start point coordinates." + +#: appTools/ToolDistance.py:593 +msgid "Stop Coords" +msgstr "Stop Coords" + +#: appTools/ToolDistance.py:594 appTools/ToolDistance.py:599 +msgid "This is the measuring Stop point coordinates." +msgstr "This is the measuring Stop point coordinates." + +#: appTools/ToolDistance.py:604 appTools/ToolDistanceMin.py:250 +msgid "Dx" +msgstr "Dx" + +#: appTools/ToolDistance.py:605 appTools/ToolDistance.py:610 +#: appTools/ToolDistanceMin.py:251 appTools/ToolDistanceMin.py:280 +msgid "This is the distance measured over the X axis." +msgstr "This is the distance measured over the X axis." + +#: appTools/ToolDistance.py:615 appTools/ToolDistanceMin.py:253 +msgid "Dy" +msgstr "Dy" + +#: appTools/ToolDistance.py:616 appTools/ToolDistance.py:621 +#: appTools/ToolDistanceMin.py:254 appTools/ToolDistanceMin.py:285 +msgid "This is the distance measured over the Y axis." +msgstr "This is the distance measured over the Y axis." + +#: appTools/ToolDistance.py:627 appTools/ToolDistance.py:632 +#: appTools/ToolDistanceMin.py:257 appTools/ToolDistanceMin.py:290 +msgid "This is orientation angle of the measuring line." +msgstr "This is orientation angle of the measuring line." + +#: appTools/ToolDistance.py:637 appTools/ToolDistanceMin.py:259 +msgid "DISTANCE" +msgstr "DISTANCE" + +#: appTools/ToolDistance.py:638 appTools/ToolDistance.py:643 +msgid "This is the point to point Euclidian distance." +msgstr "This is the point to point Euclidian distance." + +#: appTools/ToolDistanceMin.py:56 appTools/ToolDistanceMin.py:221 msgid "Minimum Distance Tool" msgstr "Minimum Distance Tool" -#: appTools/ToolDistanceMin.py:54 -msgid "First object point" -msgstr "First object point" - -#: appTools/ToolDistanceMin.py:55 appTools/ToolDistanceMin.py:80 -msgid "" -"This is first object point coordinates.\n" -"This is the start point for measuring distance." -msgstr "" -"This is first object point coordinates.\n" -"This is the start point for measuring distance." - -#: appTools/ToolDistanceMin.py:58 -msgid "Second object point" -msgstr "Second object point" - -#: appTools/ToolDistanceMin.py:59 appTools/ToolDistanceMin.py:86 -msgid "" -"This is second object point coordinates.\n" -"This is the end point for measuring distance." -msgstr "" -"This is second object point coordinates.\n" -"This is the end point for measuring distance." - -#: appTools/ToolDistanceMin.py:72 appTools/ToolDistanceMin.py:107 -msgid "This is the point to point Euclidean distance." -msgstr "This is the point to point Euclidean distance." - -#: appTools/ToolDistanceMin.py:74 -msgid "Half Point" -msgstr "Half Point" - -#: appTools/ToolDistanceMin.py:75 appTools/ToolDistanceMin.py:112 -msgid "This is the middle point of the point to point Euclidean distance." -msgstr "This is the middle point of the point to point Euclidean distance." - -#: appTools/ToolDistanceMin.py:117 -msgid "Jump to Half Point" -msgstr "Jump to Half Point" - -#: appTools/ToolDistanceMin.py:154 +#: appTools/ToolDistanceMin.py:67 msgid "" "Select two objects and no more, to measure the distance between them ..." msgstr "" "Select two objects and no more, to measure the distance between them ..." -#: appTools/ToolDistanceMin.py:195 appTools/ToolDistanceMin.py:216 -#: appTools/ToolDistanceMin.py:225 appTools/ToolDistanceMin.py:246 +#: appTools/ToolDistanceMin.py:108 appTools/ToolDistanceMin.py:129 +#: appTools/ToolDistanceMin.py:138 appTools/ToolDistanceMin.py:159 msgid "Select two objects and no more. Currently the selection has objects: " msgstr "Select two objects and no more. Currently the selection has objects: " -#: appTools/ToolDistanceMin.py:293 +#: appTools/ToolDistanceMin.py:206 msgid "Objects intersects or touch at" msgstr "Objects intersects or touch at" -#: appTools/ToolDistanceMin.py:299 +#: appTools/ToolDistanceMin.py:212 msgid "Jumped to the half point between the two selected objects" msgstr "Jumped to the half point between the two selected objects" -#: appTools/ToolEtchCompensation.py:75 appTools/ToolInvertGerber.py:74 +#: appTools/ToolDistanceMin.py:242 +msgid "First object point" +msgstr "First object point" + +#: appTools/ToolDistanceMin.py:243 appTools/ToolDistanceMin.py:268 +msgid "" +"This is first object point coordinates.\n" +"This is the start point for measuring distance." +msgstr "" +"This is first object point coordinates.\n" +"This is the start point for measuring distance." + +#: appTools/ToolDistanceMin.py:246 +msgid "Second object point" +msgstr "Second object point" + +#: appTools/ToolDistanceMin.py:247 appTools/ToolDistanceMin.py:274 +msgid "" +"This is second object point coordinates.\n" +"This is the end point for measuring distance." +msgstr "" +"This is second object point coordinates.\n" +"This is the end point for measuring distance." + +#: appTools/ToolDistanceMin.py:260 appTools/ToolDistanceMin.py:295 +msgid "This is the point to point Euclidean distance." +msgstr "This is the point to point Euclidean distance." + +#: appTools/ToolDistanceMin.py:262 +msgid "Half Point" +msgstr "Half Point" + +#: appTools/ToolDistanceMin.py:263 appTools/ToolDistanceMin.py:300 +msgid "This is the middle point of the point to point Euclidean distance." +msgstr "This is the middle point of the point to point Euclidean distance." + +#: appTools/ToolDistanceMin.py:305 +msgid "Jump to Half Point" +msgstr "Jump to Half Point" + +#: appTools/ToolDrilling.py:1181 appTools/ToolIsolation.py:772 +#: appTools/ToolMilling.py:962 appTools/ToolNCC.py:444 +#: appTools/ToolPaint.py:381 +msgid "Current Tool parameters were applied to all tools." +msgstr "Current Tool parameters were applied to all tools." + +#: appTools/ToolDrilling.py:1586 camlib.py:3619 +msgid "The loaded Excellon file has no drills" +msgstr "The loaded Excellon file has no drills" + +#: appTools/ToolDrilling.py:1631 camlib.py:3541 +msgid "Creating a list of points to drill..." +msgstr "Creating a list of points to drill..." + +#: appTools/ToolDrilling.py:1638 camlib.py:3570 +msgid "Failed. Drill points inside the exclusion zones." +msgstr "Failed. Drill points inside the exclusion zones." + +#: appTools/ToolDrilling.py:1654 camlib.py:3609 camlib.py:5002 camlib.py:5767 +msgid "Starting G-Code" +msgstr "Starting G-Code" + +#: appTools/ToolDrilling.py:1659 appTools/ToolMilling.py:1355 +#, fuzzy +#| msgid "Generating panel ..." +msgid "Generating Excellon CNCJob..." +msgstr "Generating panel ..." + +#: appTools/ToolDrilling.py:1777 camlib.py:3140 camlib.py:5270 camlib.py:5629 +msgid "The Toolchange X,Y format has to be (x, y)." +msgstr "" + +#: appTools/ToolDrilling.py:2020 appTools/ToolMilling.py:1639 +#, fuzzy +#| msgid "Excellon object with alignment drills created..." +msgid "Excellon object for drilling/milling operation." +msgstr "Excellon object with alignment drills created..." + +#: appTools/ToolDrilling.py:2084 +msgid "Search DB" +msgstr "" + +#: appTools/ToolDrilling.py:2087 +msgid "" +"Will search and try to replace the tools from Tools Table\n" +"with tools from DB that have a close diameter value." +msgstr "" + +#: appTools/ToolDrilling.py:2486 appTools/ToolMilling.py:2168 +msgid "" +"The preprocessor JSON file that dictates\n" +"Gcode output for Excellon Objects." +msgstr "" +"The preprocessor JSON file that dictates\n" +"Gcode output for Excellon Objects." + +#: appTools/ToolDrilling.py:2618 appTools/ToolMilling.py:2307 +#, fuzzy +#| msgid "" +#| "Add / Select at least one tool in the tool-table.\n" +#| "Click the # header to select all, or Ctrl + LMB\n" +#| "for custom selection of tools." +msgid "" +"Generate the CNC Job.\n" +"If milling then an additional Geometry object will be created.\n" +"Add / Select 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 "" +"Add / Select at least one tool in the tool-table.\n" +"Click the # header to select all, or Ctrl + LMB\n" +"for custom selection of tools." + +#: appTools/ToolEtchCompensation.py:293 appTools/ToolInvertGerber.py:217 msgid "Gerber object that will be inverted." msgstr "Gerber object that will be inverted." -#: appTools/ToolEtchCompensation.py:86 +#: appTools/ToolEtchCompensation.py:304 msgid "Utilities" msgstr "Utilities" -#: appTools/ToolEtchCompensation.py:87 +#: appTools/ToolEtchCompensation.py:305 msgid "Conversion utilities" msgstr "Conversion utilities" -#: appTools/ToolEtchCompensation.py:92 +#: appTools/ToolEtchCompensation.py:310 msgid "Oz to Microns" msgstr "Oz to Microns" -#: appTools/ToolEtchCompensation.py:94 +#: appTools/ToolEtchCompensation.py:312 msgid "" "Will convert from oz thickness to microns [um].\n" "Can use formulas with operators: /, *, +, -, %, .\n" @@ -14160,19 +15465,19 @@ msgstr "" "Can use formulas with operators: /, *, +, -, %, .\n" "The real numbers use the dot decimals separator." -#: appTools/ToolEtchCompensation.py:103 +#: appTools/ToolEtchCompensation.py:321 msgid "Oz value" msgstr "Oz value" -#: appTools/ToolEtchCompensation.py:105 appTools/ToolEtchCompensation.py:126 +#: appTools/ToolEtchCompensation.py:323 appTools/ToolEtchCompensation.py:344 msgid "Microns value" msgstr "Microns value" -#: appTools/ToolEtchCompensation.py:113 +#: appTools/ToolEtchCompensation.py:331 msgid "Mils to Microns" msgstr "Mils to Microns" -#: appTools/ToolEtchCompensation.py:115 +#: appTools/ToolEtchCompensation.py:333 msgid "" "Will convert from mils to microns [um].\n" "Can use formulas with operators: /, *, +, -, %, .\n" @@ -14182,19 +15487,19 @@ msgstr "" "Can use formulas with operators: /, *, +, -, %, .\n" "The real numbers use the dot decimals separator." -#: appTools/ToolEtchCompensation.py:124 +#: appTools/ToolEtchCompensation.py:342 msgid "Mils value" msgstr "Mils value" -#: appTools/ToolEtchCompensation.py:139 appTools/ToolInvertGerber.py:86 +#: appTools/ToolEtchCompensation.py:357 appTools/ToolInvertGerber.py:229 msgid "Parameters for this tool" msgstr "Parameters for this tool" -#: appTools/ToolEtchCompensation.py:144 +#: appTools/ToolEtchCompensation.py:362 msgid "Copper Thickness" msgstr "Copper Thickness" -#: appTools/ToolEtchCompensation.py:146 +#: appTools/ToolEtchCompensation.py:364 msgid "" "The thickness of the copper foil.\n" "In microns [um]." @@ -14202,11 +15507,11 @@ msgstr "" "The thickness of the copper foil.\n" "In microns [um]." -#: appTools/ToolEtchCompensation.py:157 +#: appTools/ToolEtchCompensation.py:375 msgid "Ratio" msgstr "Ratio" -#: appTools/ToolEtchCompensation.py:159 +#: appTools/ToolEtchCompensation.py:377 msgid "" "The ratio of lateral etch versus depth etch.\n" "Can be:\n" @@ -14218,35 +15523,35 @@ msgstr "" "- custom -> the user will enter a custom value\n" "- preselection -> value which depends on a selection of etchants" -#: appTools/ToolEtchCompensation.py:165 +#: appTools/ToolEtchCompensation.py:383 msgid "Etch Factor" msgstr "Etch Factor" -#: appTools/ToolEtchCompensation.py:166 +#: appTools/ToolEtchCompensation.py:384 msgid "Etchants list" msgstr "Etchants list" -#: appTools/ToolEtchCompensation.py:167 +#: appTools/ToolEtchCompensation.py:385 msgid "Manual offset" msgstr "Manual offset" -#: appTools/ToolEtchCompensation.py:174 appTools/ToolEtchCompensation.py:179 +#: appTools/ToolEtchCompensation.py:392 appTools/ToolEtchCompensation.py:397 msgid "Etchants" msgstr "Etchants" -#: appTools/ToolEtchCompensation.py:176 +#: appTools/ToolEtchCompensation.py:394 msgid "A list of etchants." msgstr "A list of etchants." -#: appTools/ToolEtchCompensation.py:180 +#: appTools/ToolEtchCompensation.py:398 msgid "Alkaline baths" msgstr "Alkaline baths" -#: appTools/ToolEtchCompensation.py:186 +#: appTools/ToolEtchCompensation.py:404 msgid "Etch factor" msgstr "Etch factor" -#: appTools/ToolEtchCompensation.py:188 +#: appTools/ToolEtchCompensation.py:406 msgid "" "The ratio between depth etch and lateral etch .\n" "Accepts real numbers and formulas using the operators: /,*,+,-,%" @@ -14254,15 +15559,15 @@ msgstr "" "The ratio between depth etch and lateral etch .\n" "Accepts real numbers and formulas using the operators: /,*,+,-,%" -#: appTools/ToolEtchCompensation.py:192 +#: appTools/ToolEtchCompensation.py:410 msgid "Real number or formula" msgstr "Real number or formula" -#: appTools/ToolEtchCompensation.py:193 +#: appTools/ToolEtchCompensation.py:411 msgid "Etch_factor" msgstr "Etch_factor" -#: appTools/ToolEtchCompensation.py:201 +#: appTools/ToolEtchCompensation.py:419 msgid "" "Value with which to increase or decrease (buffer)\n" "the copper features. In microns [um]." @@ -14270,244 +15575,138 @@ msgstr "" "Value with which to increase or decrease (buffer)\n" "the copper features. In microns [um]." -#: appTools/ToolEtchCompensation.py:225 +#: appTools/ToolEtchCompensation.py:443 msgid "Compensate" msgstr "Compensate" -#: appTools/ToolEtchCompensation.py:227 +#: appTools/ToolEtchCompensation.py:445 msgid "" "Will increase the copper features thickness to compensate the lateral etch." msgstr "" "Will increase the copper features thickness to compensate the lateral etch." -#: appTools/ToolExtractDrills.py:29 appTools/ToolExtractDrills.py:295 -msgid "Extract Drills" -msgstr "Extract Drills" - -#: appTools/ToolExtractDrills.py:62 -msgid "Gerber from which to extract drill holes" -msgstr "Gerber from which to extract drill holes" - -#: appTools/ToolExtractDrills.py:297 -msgid "Extract drills from a given Gerber file." -msgstr "Extract drills from a given Gerber file." - -#: appTools/ToolExtractDrills.py:478 appTools/ToolExtractDrills.py:563 -#: appTools/ToolExtractDrills.py:648 +#: appTools/ToolExtractDrills.py:189 appTools/ToolExtractDrills.py:279 +#: appTools/ToolExtractDrills.py:369 msgid "No drills extracted. Try different parameters." msgstr "No drills extracted. Try different parameters." -#: appTools/ToolFiducials.py:56 -msgid "Fiducials Coordinates" -msgstr "Fiducials Coordinates" +#: appTools/ToolExtractDrills.py:420 appTools/ToolExtractDrills.py:687 +msgid "Extract Drills" +msgstr "Extract Drills" -#: appTools/ToolFiducials.py:58 -msgid "" -"A table with the fiducial points coordinates,\n" -"in the format (x, y)." -msgstr "" -"A table with the fiducial points coordinates,\n" -"in the format (x, y)." +#: appTools/ToolExtractDrills.py:454 +msgid "Gerber from which to extract drill holes" +msgstr "Gerber from which to extract drill holes" -#: appTools/ToolFiducials.py:194 -msgid "" -"- 'Auto' - automatic placement of fiducials in the corners of the bounding " -"box.\n" -" - 'Manual' - manual placement of fiducials." -msgstr "" -"- 'Auto' - automatic placement of fiducials in the corners of the bounding " -"box.\n" -" - 'Manual' - manual placement of fiducials." +#: appTools/ToolExtractDrills.py:689 +msgid "Extract drills from a given Gerber file." +msgstr "Extract drills from a given Gerber file." -#: appTools/ToolFiducials.py:240 -msgid "Thickness of the line that makes the fiducial." -msgstr "Thickness of the line that makes the fiducial." - -#: appTools/ToolFiducials.py:271 -msgid "Add Fiducial" -msgstr "Add Fiducial" - -#: appTools/ToolFiducials.py:273 -msgid "Will add a polygon on the copper layer to serve as fiducial." -msgstr "Will add a polygon on the copper layer to serve as fiducial." - -#: appTools/ToolFiducials.py:289 -msgid "Soldermask Gerber" -msgstr "Soldermask Gerber" - -#: appTools/ToolFiducials.py:291 -msgid "The Soldermask Gerber object." -msgstr "The Soldermask Gerber object." - -#: appTools/ToolFiducials.py:303 -msgid "Add Soldermask Opening" -msgstr "Add Soldermask Opening" - -#: appTools/ToolFiducials.py:305 -msgid "" -"Will add a polygon on the soldermask layer\n" -"to serve as fiducial opening.\n" -"The diameter is always double of the diameter\n" -"for the copper fiducial." -msgstr "" -"Will add a polygon on the soldermask layer\n" -"to serve as fiducial opening.\n" -"The diameter is always double of the diameter\n" -"for the copper fiducial." - -#: appTools/ToolFiducials.py:520 +#: appTools/ToolFiducials.py:237 msgid "Click to add first Fiducial. Bottom Left..." msgstr "Click to add first Fiducial. Bottom Left..." -#: appTools/ToolFiducials.py:784 +#: appTools/ToolFiducials.py:501 msgid "Click to add the last fiducial. Top Right..." msgstr "Click to add the last fiducial. Top Right..." -#: appTools/ToolFiducials.py:789 +#: appTools/ToolFiducials.py:506 msgid "Click to add the second fiducial. Top Left or Bottom Right..." msgstr "Click to add the second fiducial. Top Left or Bottom Right..." -#: appTools/ToolFiducials.py:792 appTools/ToolFiducials.py:801 +#: appTools/ToolFiducials.py:509 appTools/ToolFiducials.py:518 msgid "Done. All fiducials have been added." msgstr "Done. All fiducials have been added." -#: appTools/ToolFiducials.py:878 +#: appTools/ToolFiducials.py:595 msgid "Fiducials Tool exit." msgstr "Fiducials Tool exit." -#: appTools/ToolFilm.py:42 -msgid "Film PCB" -msgstr "Film PCB" +#: appTools/ToolFiducials.py:667 +msgid "Fiducials Coordinates" +msgstr "Fiducials Coordinates" -#: appTools/ToolFilm.py:73 +#: appTools/ToolFiducials.py:669 msgid "" -"Specify the type of object for which to create the film.\n" -"The object can be of type: Gerber or Geometry.\n" -"The selection here decide the type of objects that will be\n" -"in the Film Object combobox." +"A table with the fiducial points coordinates,\n" +"in the format (x, y)." msgstr "" -"Specify the type of object for which to create the film.\n" -"The object can be of type: Gerber or Geometry.\n" -"The selection here decide the type of objects that will be\n" -"in the Film Object combobox." +"A table with the fiducial points coordinates,\n" +"in the format (x, y)." -#: appTools/ToolFilm.py:96 +#: appTools/ToolFiducials.py:805 msgid "" -"Specify the type of object to be used as an container for\n" -"film creation. It can be: Gerber or Geometry type.The selection here decide " -"the type of objects that will be\n" -"in the Box Object combobox." +"- 'Auto' - automatic placement of fiducials in the corners of the bounding " +"box.\n" +" - 'Manual' - manual placement of fiducials." msgstr "" -"Specify the type of object to be used as an container for\n" -"film creation. It can be: Gerber or Geometry type.The selection here decide " -"the type of objects that will be\n" -"in the Box Object combobox." +"- 'Auto' - automatic placement of fiducials in the corners of the bounding " +"box.\n" +" - 'Manual' - manual placement of fiducials." -#: appTools/ToolFilm.py:256 -msgid "Film Parameters" -msgstr "Film Parameters" +#: appTools/ToolFiducials.py:851 +msgid "Thickness of the line that makes the fiducial." +msgstr "Thickness of the line that makes the fiducial." -#: appTools/ToolFilm.py:317 -msgid "Punch drill holes" -msgstr "Punch drill holes" +#: appTools/ToolFiducials.py:882 +msgid "Add Fiducial" +msgstr "Add Fiducial" -#: appTools/ToolFilm.py:318 +#: appTools/ToolFiducials.py:884 +msgid "Will add a polygon on the copper layer to serve as fiducial." +msgstr "Will add a polygon on the copper layer to serve as fiducial." + +#: appTools/ToolFiducials.py:900 +msgid "Soldermask Gerber" +msgstr "Soldermask Gerber" + +#: appTools/ToolFiducials.py:902 +msgid "The Soldermask Gerber object." +msgstr "The Soldermask Gerber object." + +#: appTools/ToolFiducials.py:914 +msgid "Add Soldermask Opening" +msgstr "Add Soldermask Opening" + +#: appTools/ToolFiducials.py:916 msgid "" -"When checked the generated film will have holes in pads when\n" -"the generated film is positive. This is done to help drilling,\n" -"when done manually." +"Will add a polygon on the soldermask layer\n" +"to serve as fiducial opening.\n" +"The diameter is always double of the diameter\n" +"for the copper fiducial." msgstr "" -"When checked the generated film will have holes in pads when\n" -"the generated film is positive. This is done to help drilling,\n" -"when done manually." +"Will add a polygon on the soldermask layer\n" +"to serve as fiducial opening.\n" +"The diameter is always double of the diameter\n" +"for the copper fiducial." -#: appTools/ToolFilm.py:336 -msgid "Source" -msgstr "Source" - -#: appTools/ToolFilm.py:338 -msgid "" -"The punch hole source can be:\n" -"- Excellon -> an Excellon holes center will serve as reference.\n" -"- Pad Center -> will try to use the pads center as reference." -msgstr "" -"The punch hole source can be:\n" -"- Excellon -> an Excellon holes center will serve as reference.\n" -"- Pad Center -> will try to use the pads center as reference." - -#: appTools/ToolFilm.py:343 -msgid "Pad center" -msgstr "Pad center" - -#: appTools/ToolFilm.py:348 -msgid "Excellon Obj" -msgstr "Excellon Obj" - -#: appTools/ToolFilm.py:350 -msgid "" -"Remove the geometry of Excellon from the Film to create the holes in pads." -msgstr "" -"Remove the geometry of Excellon from the Film to create the holes in pads." - -#: appTools/ToolFilm.py:364 -msgid "Punch Size" -msgstr "Punch Size" - -#: appTools/ToolFilm.py:365 -msgid "The value here will control how big is the punch hole in the pads." -msgstr "The value here will control how big is the punch hole in the pads." - -#: appTools/ToolFilm.py:485 -msgid "Save Film" -msgstr "Save Film" - -#: appTools/ToolFilm.py:487 -msgid "" -"Create a Film for the selected object, within\n" -"the specified box. Does not create a new \n" -" FlatCAM object, but directly save it in the\n" -"selected format." -msgstr "" -"Create a Film for the selected object, within\n" -"the specified box. Does not create a new \n" -" FlatCAM object, but directly save it in the\n" -"selected format." - -#: appTools/ToolFilm.py:649 -msgid "" -"Using the Pad center does not work on Geometry objects. Only a Gerber object " -"has pads." -msgstr "" -"Using the Pad center does not work on Geometry objects. Only a Gerber object " -"has pads." - -#: appTools/ToolFilm.py:659 +#: appTools/ToolFilm.py:154 msgid "No FlatCAM object selected. Load an object for Film and retry." msgstr "No FlatCAM object selected. Load an object for Film and retry." -#: appTools/ToolFilm.py:666 +#: appTools/ToolFilm.py:161 msgid "No FlatCAM object selected. Load an object for Box and retry." msgstr "No FlatCAM object selected. Load an object for Box and retry." -#: appTools/ToolFilm.py:670 +#: appTools/ToolFilm.py:165 msgid "No FlatCAM object selected." msgstr "No FlatCAM object selected." -#: appTools/ToolFilm.py:681 +#: appTools/ToolFilm.py:176 msgid "Generating Film ..." msgstr "Generating Film ..." -#: appTools/ToolFilm.py:730 appTools/ToolFilm.py:734 +#: appTools/ToolFilm.py:225 appTools/ToolFilm.py:229 msgid "Export positive film" msgstr "Export positive film" -#: appTools/ToolFilm.py:767 +#: appTools/ToolFilm.py:262 msgid "" "No Excellon object selected. Load an object for punching reference and retry." msgstr "" "No Excellon object selected. Load an object for punching reference and retry." -#: appTools/ToolFilm.py:791 +#: appTools/ToolFilm.py:286 msgid "" " Could not generate punched hole film because the punch hole sizeis bigger " "than some of the apertures in the Gerber object." @@ -14515,7 +15714,7 @@ msgstr "" " Could not generate punched hole film because the punch hole sizeis bigger " "than some of the apertures in the Gerber object." -#: appTools/ToolFilm.py:803 +#: appTools/ToolFilm.py:298 msgid "" "Could not generate punched hole film because the punch hole sizeis bigger " "than some of the apertures in the Gerber object." @@ -14523,7 +15722,7 @@ msgstr "" "Could not generate punched hole film because the punch hole sizeis bigger " "than some of the apertures in the Gerber object." -#: appTools/ToolFilm.py:821 +#: appTools/ToolFilm.py:316 msgid "" "Could not generate punched hole film because the newly created object " "geometry is the same as the one in the source object geometry..." @@ -14531,137 +15730,138 @@ msgstr "" "Could not generate punched hole film because the newly created object " "geometry is the same as the one in the source object geometry..." -#: appTools/ToolFilm.py:876 appTools/ToolFilm.py:880 +#: appTools/ToolFilm.py:371 appTools/ToolFilm.py:375 msgid "Export negative film" msgstr "Export negative film" -#: appTools/ToolFilm.py:941 appTools/ToolFilm.py:1124 -#: appTools/ToolPanelize.py:442 +#: appTools/ToolFilm.py:434 appTools/ToolFilm.py:615 +#: appTools/ToolPanelize.py:209 msgid "No object Box. Using instead" msgstr "No object Box. Using instead" -#: appTools/ToolFilm.py:1057 appTools/ToolFilm.py:1237 +#: appTools/ToolFilm.py:550 appTools/ToolFilm.py:728 msgid "Film file exported to" msgstr "Film file exported to" -#: appTools/ToolFilm.py:1060 appTools/ToolFilm.py:1240 +#: appTools/ToolFilm.py:553 appTools/ToolFilm.py:731 msgid "Generating Film ... Please wait." msgstr "Generating Film ... Please wait." -#: appTools/ToolImage.py:24 -msgid "Image as Object" -msgstr "Image as Object" +#: appTools/ToolFilm.py:754 +msgid "Film PCB" +msgstr "Film PCB" -#: appTools/ToolImage.py:33 -msgid "Image to PCB" -msgstr "Image to PCB" - -#: appTools/ToolImage.py:56 +#: appTools/ToolFilm.py:786 msgid "" -"Specify the type of object to create from the image.\n" -"It can be of type: Gerber or Geometry." +"Specify the type of object for which to create the film.\n" +"The object can be of type: Gerber or Geometry.\n" +"The selection here decide the type of objects that will be\n" +"in the Film Object combobox." msgstr "" -"Specify the type of object to create from the image.\n" -"It can be of type: Gerber or Geometry." +"Specify the type of object for which to create the film.\n" +"The object can be of type: Gerber or Geometry.\n" +"The selection here decide the type of objects that will be\n" +"in the Film Object combobox." + +#: appTools/ToolFilm.py:809 +msgid "" +"Specify the type of object to be used as an container for\n" +"film creation. It can be: Gerber or Geometry type.The selection here decide " +"the type of objects that will be\n" +"in the Box Object combobox." +msgstr "" +"Specify the type of object to be used as an container for\n" +"film creation. It can be: Gerber or Geometry type.The selection here decide " +"the type of objects that will be\n" +"in the Box Object combobox." + +#: appTools/ToolFilm.py:976 +msgid "Film Parameters" +msgstr "Film Parameters" + +#: appTools/ToolFilm.py:1035 +msgid "Punch drill holes" +msgstr "Punch drill holes" + +#: appTools/ToolFilm.py:1036 +msgid "" +"When checked the generated film will have holes in pads when\n" +"the generated film is positive. This is done to help drilling,\n" +"when done manually." +msgstr "" +"When checked the generated film will have holes in pads when\n" +"the generated film is positive. This is done to help drilling,\n" +"when done manually." + +#: appTools/ToolFilm.py:1054 +msgid "Source" +msgstr "Source" + +#: appTools/ToolFilm.py:1056 +msgid "" +"The punch hole source can be:\n" +"- Excellon -> an Excellon holes center will serve as reference.\n" +"- Pad Center -> will try to use the pads center as reference." +msgstr "" +"The punch hole source can be:\n" +"- Excellon -> an Excellon holes center will serve as reference.\n" +"- Pad Center -> will try to use the pads center as reference." + +#: appTools/ToolFilm.py:1061 +msgid "Pad center" +msgstr "Pad center" + +#: appTools/ToolFilm.py:1066 +msgid "Excellon Obj" +msgstr "Excellon Obj" + +#: appTools/ToolFilm.py:1068 +msgid "" +"Remove the geometry of Excellon from the Film to create the holes in pads." +msgstr "" +"Remove the geometry of Excellon from the Film to create the holes in pads." + +#: appTools/ToolFilm.py:1082 +msgid "Punch Size" +msgstr "Punch Size" + +#: appTools/ToolFilm.py:1083 +msgid "The value here will control how big is the punch hole in the pads." +msgstr "The value here will control how big is the punch hole in the pads." + +#: appTools/ToolFilm.py:1203 +msgid "Save Film" +msgstr "Save Film" + +#: appTools/ToolFilm.py:1206 +msgid "" +"Create a Film for the selected object, within\n" +"the specified box. Does not create a new \n" +" FlatCAM object, but directly save it in the\n" +"selected format." +msgstr "" +"Create a Film for the selected object, within\n" +"the specified box. Does not create a new \n" +" FlatCAM object, but directly save it in the\n" +"selected format." + +#: appTools/ToolFilm.py:1277 +msgid "" +"Using the Pad center does not work on Geometry objects. Only a Gerber object " +"has pads." +msgstr "" +"Using the Pad center does not work on Geometry objects. Only a Gerber object " +"has pads." #: appTools/ToolImage.py:65 -msgid "DPI value" -msgstr "DPI value" - -#: appTools/ToolImage.py:66 -msgid "Specify a DPI value for the image." -msgstr "Specify a DPI value for the image." - -#: appTools/ToolImage.py:72 -msgid "Level of detail" -msgstr "Level of detail" - -#: appTools/ToolImage.py:81 -msgid "Image type" -msgstr "Image type" - -#: appTools/ToolImage.py:83 -msgid "" -"Choose a method for the image interpretation.\n" -"B/W means a black & white image. Color means a colored image." -msgstr "" -"Choose a method for the image interpretation.\n" -"B/W means a black & white image. Color means a colored image." - -#: appTools/ToolImage.py:92 appTools/ToolImage.py:107 appTools/ToolImage.py:120 -#: appTools/ToolImage.py:133 -msgid "Mask value" -msgstr "Mask value" - -#: appTools/ToolImage.py:94 -msgid "" -"Mask for monochrome image.\n" -"Takes values between [0 ... 255].\n" -"Decides the level of details to include\n" -"in the resulting geometry.\n" -"0 means no detail and 255 means everything \n" -"(which is totally black)." -msgstr "" -"Mask for monochrome image.\n" -"Takes values between [0 ... 255].\n" -"Decides the level of details to include\n" -"in the resulting geometry.\n" -"0 means no detail and 255 means everything \n" -"(which is totally black)." - -#: appTools/ToolImage.py:109 -msgid "" -"Mask for RED color.\n" -"Takes values between [0 ... 255].\n" -"Decides the level of details to include\n" -"in the resulting geometry." -msgstr "" -"Mask for RED color.\n" -"Takes values between [0 ... 255].\n" -"Decides the level of details to include\n" -"in the resulting geometry." - -#: appTools/ToolImage.py:122 -msgid "" -"Mask for GREEN color.\n" -"Takes values between [0 ... 255].\n" -"Decides the level of details to include\n" -"in the resulting geometry." -msgstr "" -"Mask for GREEN color.\n" -"Takes values between [0 ... 255].\n" -"Decides the level of details to include\n" -"in the resulting geometry." - -#: appTools/ToolImage.py:135 -msgid "" -"Mask for BLUE color.\n" -"Takes values between [0 ... 255].\n" -"Decides the level of details to include\n" -"in the resulting geometry." -msgstr "" -"Mask for BLUE color.\n" -"Takes values between [0 ... 255].\n" -"Decides the level of details to include\n" -"in the resulting geometry." - -#: appTools/ToolImage.py:143 -msgid "Import image" -msgstr "Import image" - -#: appTools/ToolImage.py:145 -msgid "Open a image of raster type and then import it in FlatCAM." -msgstr "Open a image of raster type and then import it in FlatCAM." - -#: appTools/ToolImage.py:182 msgid "Image Tool" msgstr "Image Tool" -#: appTools/ToolImage.py:234 appTools/ToolImage.py:237 +#: appTools/ToolImage.py:95 appTools/ToolImage.py:98 msgid "Import IMAGE" msgstr "Import IMAGE" -#: appTools/ToolImage.py:277 app_Main.py:8484 app_Main.py:8531 +#: appTools/ToolImage.py:142 app_Main.py:8870 app_Main.py:8923 msgid "" "Not supported type is picked as parameter. Only Geometry and Gerber are " "supported" @@ -14669,251 +15869,240 @@ msgstr "" "Not supported type is picked as parameter. Only Geometry and Gerber are " "supported" -#: appTools/ToolImage.py:285 +#: appTools/ToolImage.py:150 msgid "Importing Image" msgstr "Importing Image" -#: appTools/ToolImage.py:297 appTools/ToolPDF.py:154 app_Main.py:8509 -#: app_Main.py:8555 app_Main.py:8619 app_Main.py:8686 app_Main.py:8752 -#: app_Main.py:8817 app_Main.py:8874 +#: appTools/ToolImage.py:162 appTools/ToolPDF.py:154 app_Main.py:8901 +#: app_Main.py:8956 app_Main.py:9020 app_Main.py:9083 app_Main.py:9149 +#: app_Main.py:9214 app_Main.py:9271 msgid "Opened" msgstr "Opened" -#: appTools/ToolInvertGerber.py:126 -msgid "Invert Gerber" -msgstr "Invert Gerber" +#: appTools/ToolImage.py:167 +msgid "Image as Object" +msgstr "Image as Object" -#: appTools/ToolInvertGerber.py:128 +#: appTools/ToolImage.py:198 msgid "" -"Will invert the Gerber object: areas that have copper\n" -"will be empty of copper and previous empty area will be\n" -"filled with copper." +"Specify the type of object to create from the image.\n" +"It can be of type: Gerber or Geometry." msgstr "" -"Will invert the Gerber object: areas that have copper\n" -"will be empty of copper and previous empty area will be\n" -"filled with copper." +"Specify the type of object to create from the image.\n" +"It can be of type: Gerber or Geometry." -#: appTools/ToolInvertGerber.py:187 +#: appTools/ToolImage.py:207 +msgid "DPI value" +msgstr "DPI value" + +#: appTools/ToolImage.py:208 +msgid "Specify a DPI value for the image." +msgstr "Specify a DPI value for the image." + +#: appTools/ToolImage.py:214 +msgid "Level of detail" +msgstr "Level of detail" + +#: appTools/ToolImage.py:223 +msgid "Image type" +msgstr "Image type" + +#: appTools/ToolImage.py:225 +msgid "" +"Choose a method for the image interpretation.\n" +"B/W means a black & white image. Color means a colored image." +msgstr "" +"Choose a method for the image interpretation.\n" +"B/W means a black & white image. Color means a colored image." + +#: appTools/ToolImage.py:234 appTools/ToolImage.py:249 +#: appTools/ToolImage.py:262 appTools/ToolImage.py:275 +msgid "Mask value" +msgstr "Mask value" + +#: appTools/ToolImage.py:236 +msgid "" +"Mask for monochrome image.\n" +"Takes values between [0 ... 255].\n" +"Decides the level of details to include\n" +"in the resulting geometry.\n" +"0 means no detail and 255 means everything \n" +"(which is totally black)." +msgstr "" +"Mask for monochrome image.\n" +"Takes values between [0 ... 255].\n" +"Decides the level of details to include\n" +"in the resulting geometry.\n" +"0 means no detail and 255 means everything \n" +"(which is totally black)." + +#: appTools/ToolImage.py:251 +msgid "" +"Mask for RED color.\n" +"Takes values between [0 ... 255].\n" +"Decides the level of details to include\n" +"in the resulting geometry." +msgstr "" +"Mask for RED color.\n" +"Takes values between [0 ... 255].\n" +"Decides the level of details to include\n" +"in the resulting geometry." + +#: appTools/ToolImage.py:264 +msgid "" +"Mask for GREEN color.\n" +"Takes values between [0 ... 255].\n" +"Decides the level of details to include\n" +"in the resulting geometry." +msgstr "" +"Mask for GREEN color.\n" +"Takes values between [0 ... 255].\n" +"Decides the level of details to include\n" +"in the resulting geometry." + +#: appTools/ToolImage.py:277 +msgid "" +"Mask for BLUE color.\n" +"Takes values between [0 ... 255].\n" +"Decides the level of details to include\n" +"in the resulting geometry." +msgstr "" +"Mask for BLUE color.\n" +"Takes values between [0 ... 255].\n" +"Decides the level of details to include\n" +"in the resulting geometry." + +#: appTools/ToolImage.py:285 +msgid "Import image" +msgstr "Import image" + +#: appTools/ToolImage.py:287 +msgid "Open a image of raster type and then import it in FlatCAM." +msgstr "Open a image of raster type and then import it in FlatCAM." + +#: appTools/ToolInvertGerber.py:75 msgid "Invert Tool" msgstr "Invert Tool" -#: appTools/ToolIsolation.py:96 -msgid "Gerber object for isolation routing." -msgstr "Gerber object for isolation routing." +#: appTools/ToolInvertGerber.py:269 +msgid "Invert Gerber" +msgstr "Invert Gerber" -#: appTools/ToolIsolation.py:120 appTools/ToolNCC.py:122 +#: appTools/ToolInvertGerber.py:271 msgid "" -"Tools pool from which the algorithm\n" -"will pick the ones used for copper clearing." +"Will invert the Gerber object: areas that have copper\n" +"will be empty of copper and previous empty area will be\n" +"filled with copper." msgstr "" -"Tools pool from which the algorithm\n" -"will pick the ones used for copper clearing." +"Will invert the Gerber object: areas that have copper\n" +"will be empty of copper and previous empty area will be\n" +"filled with copper." -#: appTools/ToolIsolation.py:136 -msgid "" -"This is the Tool Number.\n" -"Isolation routing will start with the tool with the biggest \n" -"diameter, continuing until there are no more tools.\n" -"Only tools that create Isolation geometry will still be present\n" -"in the resulting geometry. This is because with some tools\n" -"this function will not be able to create routing geometry." -msgstr "" -"This is the Tool Number.\n" -"Isolation routing will start with the tool with the biggest \n" -"diameter, continuing until there are no more tools.\n" -"Only tools that create Isolation geometry will still be present\n" -"in the resulting geometry. This is because with some tools\n" -"this function will not be able to create routing geometry." - -#: appTools/ToolIsolation.py:144 appTools/ToolNCC.py:146 -msgid "" -"Tool Diameter. It's value (in current FlatCAM units)\n" -"is the cut width into the material." -msgstr "" -"Tool Diameter. It's value (in current FlatCAM units)\n" -"is the cut width into the material." - -#: appTools/ToolIsolation.py:148 appTools/ToolNCC.py:150 -msgid "" -"The Tool Type (TT) can be:\n" -"- Circular with 1 ... 4 teeth -> it is informative only. Being circular,\n" -"the cut width in material is exactly the tool diameter.\n" -"- Ball -> informative only and make reference to the Ball type endmill.\n" -"- V-Shape -> it will disable Z-Cut parameter in the resulting geometry UI " -"form\n" -"and enable two additional UI form fields in the resulting geometry: V-Tip " -"Dia and\n" -"V-Tip Angle. Adjusting those two values will adjust the Z-Cut parameter " -"such\n" -"as the cut width into material will be equal with the value in the Tool " -"Diameter\n" -"column of this table.\n" -"Choosing the 'V-Shape' Tool Type automatically will select the Operation " -"Type\n" -"in the resulting geometry as Isolation." -msgstr "" -"The Tool Type (TT) can be:\n" -"- Circular with 1 ... 4 teeth -> it is informative only. Being circular,\n" -"the cut width in material is exactly the tool diameter.\n" -"- Ball -> informative only and make reference to the Ball type endmill.\n" -"- V-Shape -> it will disable Z-Cut parameter in the resulting geometry UI " -"form\n" -"and enable two additional UI form fields in the resulting geometry: V-Tip " -"Dia and\n" -"V-Tip Angle. Adjusting those two values will adjust the Z-Cut parameter " -"such\n" -"as the cut width into material will be equal with the value in the Tool " -"Diameter\n" -"column of this table.\n" -"Choosing the 'V-Shape' Tool Type automatically will select the Operation " -"Type\n" -"in the resulting geometry as Isolation." - -#: appTools/ToolIsolation.py:300 appTools/ToolNCC.py:318 -#: appTools/ToolPaint.py:300 appTools/ToolSolderPaste.py:135 -msgid "" -"Delete a selection of tools in the Tool Table\n" -"by first selecting a row(s) in the Tool Table." -msgstr "" -"Delete a selection of tools in the Tool Table\n" -"by first selecting a row(s) in the Tool Table." - -#: appTools/ToolIsolation.py:477 -msgid "" -"Specify the type of object to be excepted from isolation.\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." -msgstr "" -"Specify the type of object to be excepted from isolation.\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." - -#: appTools/ToolIsolation.py:487 -msgid "Object whose area will be removed from isolation geometry." -msgstr "Object whose area will be removed from isolation geometry." - -#: appTools/ToolIsolation.py:523 appTools/ToolNCC.py:554 -msgid "" -"The type of FlatCAM object to be used as non copper clearing reference.\n" -"It can be Gerber, Excellon or Geometry." -msgstr "" -"The type of FlatCAM object to be used as non copper clearing reference.\n" -"It can be Gerber, Excellon or Geometry." - -#: appTools/ToolIsolation.py:580 -msgid "Generate Isolation Geometry" -msgstr "Generate Isolation Geometry" - -#: appTools/ToolIsolation.py:588 -msgid "" -"Create a Geometry object with toolpaths to cut \n" -"isolation outside, inside or on both sides of the\n" -"object. For a Gerber object outside means outside\n" -"of the Gerber feature and inside means inside of\n" -"the Gerber feature, if possible at all. This means\n" -"that only if the Gerber feature has openings inside, they\n" -"will be isolated. If what is wanted is to cut isolation\n" -"inside the actual Gerber feature, use a negative tool\n" -"diameter above." -msgstr "" -"Create a Geometry object with toolpaths to cut \n" -"isolation outside, inside or on both sides of the\n" -"object. For a Gerber object outside means outside\n" -"of the Gerber feature and inside means inside of\n" -"the Gerber feature, if possible at all. This means\n" -"that only if the Gerber feature has openings inside, they\n" -"will be isolated. If what is wanted is to cut isolation\n" -"inside the actual Gerber feature, use a negative tool\n" -"diameter above." - -#: appTools/ToolIsolation.py:1291 appTools/ToolIsolation.py:1459 -#: appTools/ToolNCC.py:932 appTools/ToolNCC.py:1449 appTools/ToolPaint.py:857 -#: appTools/ToolSolderPaste.py:576 appTools/ToolSolderPaste.py:901 -#: app_Main.py:4333 -msgid "Please enter a tool diameter with non-zero value, in Float format." -msgstr "Please enter a tool diameter with non-zero value, in Float format." - -#: appTools/ToolIsolation.py:1295 appTools/ToolNCC.py:936 -#: appTools/ToolPaint.py:861 appTools/ToolSolderPaste.py:580 app_Main.py:4337 +#: appTools/ToolIsolation.py:789 appTools/ToolNCC.py:462 +#: appTools/ToolPaint.py:399 appTools/ToolSolderPaste.py:135 app_Main.py:4494 msgid "Adding Tool cancelled" msgstr "Adding Tool cancelled" -#: appTools/ToolIsolation.py:1453 appTools/ToolNCC.py:1443 -#: appTools/ToolPaint.py:1203 appTools/ToolSolderPaste.py:896 -msgid "Please enter a tool diameter to add, in Float format." -msgstr "Please enter a tool diameter to add, in Float format." +#: appTools/ToolIsolation.py:934 appTools/ToolNCC.py:864 +#: appTools/ToolOptimal.py:179 +msgid "" +"The Gerber object has one Polygon as geometry.\n" +"There are no distances between geometry elements to be found." +msgstr "" +"The Gerber object has one Polygon as geometry.\n" +"There are no distances between geometry elements to be found." -#: appTools/ToolIsolation.py:1484 appTools/ToolIsolation.py:2842 -#: appTools/ToolNCC.py:1474 appTools/ToolNCC.py:4079 appTools/ToolPaint.py:1227 -#: appTools/ToolPaint.py:3628 appTools/ToolSolderPaste.py:925 +#: appTools/ToolIsolation.py:977 appTools/ToolNCC.py:907 +#, fuzzy +#| msgid "tooldia = tool diameter" +msgid "Optimal tool diameter found" +msgstr "tooldia = tool diameter" + +#: appTools/ToolIsolation.py:1022 appTools/ToolIsolation.py:1109 +#: appTools/ToolIsolation.py:1171 appTools/ToolIsolation.py:2588 +#: appTools/ToolNCC.py:954 appTools/ToolNCC.py:1042 appTools/ToolNCC.py:1104 +#: appTools/ToolNCC.py:3650 appTools/ToolPaint.py:693 appTools/ToolPaint.py:781 +#: appTools/ToolPaint.py:843 appTools/ToolPaint.py:2675 +#: appTools/ToolSolderPaste.py:488 msgid "Cancelled. Tool already in Tool Table." msgstr "Cancelled. Tool already in Tool Table." -#: appTools/ToolIsolation.py:1491 appTools/ToolIsolation.py:2860 -#: appTools/ToolNCC.py:1481 appTools/ToolNCC.py:4096 appTools/ToolPaint.py:1232 -#: appTools/ToolPaint.py:3645 -msgid "New tool added to Tool Table." +#: appTools/ToolIsolation.py:1137 appTools/ToolNCC.py:1070 +#: appTools/ToolPaint.py:809 +#, fuzzy +#| msgid "New tool added to Tool Table." +msgid "New tool added to Tool Table from Tools Database." msgstr "New tool added to Tool Table." -#: appTools/ToolIsolation.py:1535 appTools/ToolNCC.py:1525 -#: appTools/ToolPaint.py:1276 +#: appTools/ToolIsolation.py:1201 appTools/ToolNCC.py:1134 +#: appTools/ToolPaint.py:872 +#, fuzzy +#| msgid "New tool added to Tool Table." +msgid "Default tool added to Tool Table." +msgstr "New tool added to Tool Table." + +#: appTools/ToolIsolation.py:1227 appTools/ToolNCC.py:1160 +#: appTools/ToolPaint.py:897 msgid "Tool from Tool Table was edited." msgstr "Tool from Tool Table was edited." -#: appTools/ToolIsolation.py:1547 appTools/ToolNCC.py:1537 -#: appTools/ToolPaint.py:1288 appTools/ToolSolderPaste.py:986 +#: appTools/ToolIsolation.py:1240 appTools/ToolNCC.py:1173 +#: appTools/ToolPaint.py:910 appTools/ToolSolderPaste.py:548 msgid "Cancelled. New diameter value is already in the Tool Table." msgstr "Cancelled. New diameter value is already in the Tool Table." -#: appTools/ToolIsolation.py:1599 appTools/ToolNCC.py:1589 -#: appTools/ToolPaint.py:1386 +#: appTools/ToolIsolation.py:1291 appTools/ToolNCC.py:1224 +#: appTools/ToolPaint.py:960 msgid "Delete failed. Select a tool to delete." msgstr "Delete failed. Select a tool to delete." -#: appTools/ToolIsolation.py:1605 appTools/ToolNCC.py:1595 -#: appTools/ToolPaint.py:1392 +#: appTools/ToolIsolation.py:1297 appTools/ToolNCC.py:1230 +#: appTools/ToolPaint.py:966 msgid "Tool(s) deleted from Tool Table." msgstr "Tool(s) deleted from Tool Table." -#: appTools/ToolIsolation.py:1653 +#: appTools/ToolIsolation.py:1345 msgid "Isolating..." msgstr "Isolating..." -#: appTools/ToolIsolation.py:1673 -#| msgid "Isolation geometry created" +#: appTools/ToolIsolation.py:1365 msgid "Following geometry was generated" msgstr "Following geometry was generated" -#: appTools/ToolIsolation.py:1688 +#: appTools/ToolIsolation.py:1380 msgid "Failed to create Follow Geometry with tool diameter" msgstr "Failed to create Follow Geometry with tool diameter" -#: appTools/ToolIsolation.py:1691 +#: appTools/ToolIsolation.py:1383 msgid "Follow Geometry was created with tool diameter" msgstr "Follow Geometry was created with tool diameter" -#: appTools/ToolIsolation.py:1732 +#: appTools/ToolIsolation.py:1424 msgid "Click on a polygon to isolate it." msgstr "Click on a polygon to isolate it." -#: appTools/ToolIsolation.py:1851 appTools/ToolIsolation.py:1871 -#: appTools/ToolIsolation.py:2009 appTools/ToolIsolation.py:2184 +#: appTools/ToolIsolation.py:1470 appTools/ToolIsolation.py:1672 +#: appTools/ToolIsolation.py:1859 appTools/ToolNCC.py:1295 +#: appTools/ToolPaint.py:1030 appTools/ToolPaint.py:1743 +msgid "No selected tools in Tool Table." +msgstr "No selected tools in Tool Table." + +#: appTools/ToolIsolation.py:1552 appTools/ToolIsolation.py:1575 +#: appTools/ToolIsolation.py:1732 appTools/ToolIsolation.py:1925 msgid "Subtracting Geo" msgstr "Subtracting Geo" -#: appTools/ToolIsolation.py:1855 appTools/ToolIsolation.py:2013 -#: appTools/ToolIsolation.py:2188 +#: appTools/ToolIsolation.py:1556 appTools/ToolIsolation.py:1736 +#: appTools/ToolIsolation.py:1929 msgid "Intersecting Geo" msgstr "Intersecting Geo" -#: appTools/ToolIsolation.py:1904 appTools/ToolIsolation.py:2074 -#: appTools/ToolIsolation.py:2245 +#: appTools/ToolIsolation.py:1608 appTools/ToolIsolation.py:1805 +#: appTools/ToolIsolation.py:1994 msgid "Empty Geometry in" msgstr "Empty Geometry in" -#: appTools/ToolIsolation.py:2083 +#: appTools/ToolIsolation.py:1814 msgid "" "Partial failure. The geometry was processed with all tools.\n" "But there are still not-isolated geometry elements. Try to include a tool " @@ -14923,7 +16112,7 @@ msgstr "" "But there are still not-isolated geometry elements. Try to include a tool " "with smaller diameter." -#: appTools/ToolIsolation.py:2086 +#: appTools/ToolIsolation.py:1817 msgid "" "The following are coordinates for the copper features that could not be " "isolated:" @@ -14931,45 +16120,222 @@ msgstr "" "The following are coordinates for the copper features that could not be " "isolated:" -#: appTools/ToolIsolation.py:2409 appTools/ToolIsolation.py:2522 -#: appTools/ToolPaint.py:1535 +#: appTools/ToolIsolation.py:2158 appTools/ToolIsolation.py:2271 +#: appTools/ToolPaint.py:1125 msgid "Added polygon" msgstr "Added polygon" -#: appTools/ToolIsolation.py:2410 appTools/ToolIsolation.py:2524 +#: appTools/ToolIsolation.py:2159 appTools/ToolIsolation.py:2273 msgid "Click to add next polygon or right click to start isolation." msgstr "Click to add next polygon or right click to start isolation." -#: appTools/ToolIsolation.py:2422 appTools/ToolPaint.py:1549 +#: appTools/ToolIsolation.py:2171 appTools/ToolPaint.py:1139 msgid "Removed polygon" msgstr "Removed polygon" -#: appTools/ToolIsolation.py:2423 +#: appTools/ToolIsolation.py:2172 msgid "Click to add/remove next polygon or right click to start isolation." msgstr "Click to add/remove next polygon or right click to start isolation." -#: appTools/ToolIsolation.py:2428 appTools/ToolPaint.py:1555 +#: appTools/ToolIsolation.py:2177 appTools/ToolPaint.py:1145 msgid "No polygon detected under click position." msgstr "No polygon detected under click position." -#: appTools/ToolIsolation.py:2458 appTools/ToolPaint.py:1584 +#: appTools/ToolIsolation.py:2207 appTools/ToolPaint.py:1175 msgid "List of single polygons is empty. Aborting." msgstr "List of single polygons is empty. Aborting." -#: appTools/ToolIsolation.py:2527 +#: appTools/ToolIsolation.py:2276 msgid "No polygon in selection." msgstr "No polygon in selection." -#: appTools/ToolIsolation.py:2555 appTools/ToolNCC.py:1725 -#: appTools/ToolPaint.py:1619 +#: appTools/ToolIsolation.py:2304 msgid "Click the end point of the paint area." msgstr "Click the end point of the paint area." -#: appTools/ToolIsolation.py:2799 appTools/ToolNCC.py:4036 -#: appTools/ToolPaint.py:3585 app_Main.py:5442 app_Main.py:5452 +#: appTools/ToolIsolation.py:2552 appTools/ToolNCC.py:3614 +#: appTools/ToolPaint.py:2632 app_Main.py:5773 app_Main.py:5783 msgid "Tool from DB added in Tool Table." msgstr "Tool from DB added in Tool Table." +#: appTools/ToolIsolation.py:2606 appTools/ToolNCC.py:3667 +#: appTools/ToolPaint.py:2692 +msgid "New tool added to Tool Table." +msgstr "New tool added to Tool Table." + +#: appTools/ToolIsolation.py:2950 +msgid "Gerber object for isolation routing." +msgstr "Gerber object for isolation routing." + +#: appTools/ToolIsolation.py:2974 appTools/ToolNCC.py:3767 +msgid "" +"Tools pool from which the algorithm\n" +"will pick the ones used for copper clearing." +msgstr "" +"Tools pool from which the algorithm\n" +"will pick the ones used for copper clearing." + +#: appTools/ToolIsolation.py:2990 +msgid "" +"This is the Tool Number.\n" +"Isolation routing will start with the tool with the biggest \n" +"diameter, continuing until there are no more tools.\n" +"Only tools that create Isolation geometry will still be present\n" +"in the resulting geometry. This is because with some tools\n" +"this function will not be able to create routing geometry." +msgstr "" +"This is the Tool Number.\n" +"Isolation routing will start with the tool with the biggest \n" +"diameter, continuing until there are no more tools.\n" +"Only tools that create Isolation geometry will still be present\n" +"in the resulting geometry. This is because with some tools\n" +"this function will not be able to create routing geometry." + +#: appTools/ToolIsolation.py:2998 appTools/ToolNCC.py:3791 +msgid "" +"Tool Diameter. It's value (in current FlatCAM units)\n" +"is the cut width into the material." +msgstr "" +"Tool Diameter. It's value (in current FlatCAM units)\n" +"is the cut width into the material." + +#: appTools/ToolIsolation.py:3002 appTools/ToolNCC.py:3795 +msgid "" +"The Tool Type (TT) can be:\n" +"- Circular with 1 ... 4 teeth -> it is informative only. Being circular,\n" +"the cut width in material is exactly the tool diameter.\n" +"- Ball -> informative only and make reference to the Ball type endmill.\n" +"- V-Shape -> it will disable Z-Cut parameter in the resulting geometry UI " +"form\n" +"and enable two additional UI form fields in the resulting geometry: V-Tip " +"Dia and\n" +"V-Tip Angle. Adjusting those two values will adjust the Z-Cut parameter " +"such\n" +"as the cut width into material will be equal with the value in the Tool " +"Diameter\n" +"column of this table.\n" +"Choosing the 'V-Shape' Tool Type automatically will select the Operation " +"Type\n" +"in the resulting geometry as Isolation." +msgstr "" +"The Tool Type (TT) can be:\n" +"- Circular with 1 ... 4 teeth -> it is informative only. Being circular,\n" +"the cut width in material is exactly the tool diameter.\n" +"- Ball -> informative only and make reference to the Ball type endmill.\n" +"- V-Shape -> it will disable Z-Cut parameter in the resulting geometry UI " +"form\n" +"and enable two additional UI form fields in the resulting geometry: V-Tip " +"Dia and\n" +"V-Tip Angle. Adjusting those two values will adjust the Z-Cut parameter " +"such\n" +"as the cut width into material will be equal with the value in the Tool " +"Diameter\n" +"column of this table.\n" +"Choosing the 'V-Shape' Tool Type automatically will select the Operation " +"Type\n" +"in the resulting geometry as Isolation." + +#: appTools/ToolIsolation.py:3068 appTools/ToolNCC.py:3873 +#, fuzzy +#| msgid "Minimal" +msgid "Find Optimal" +msgstr "Minimal" + +#: appTools/ToolIsolation.py:3071 appTools/ToolNCC.py:3876 +msgid "" +"Find a tool diameter that is guaranteed\n" +"to do a complete isolation." +msgstr "" + +#: appTools/ToolIsolation.py:3108 appTools/ToolNCC.py:3913 +#: appTools/ToolPaint.py:2927 appTools/ToolSolderPaste.py:1211 +msgid "" +"Delete a selection of tools in the Tool Table\n" +"by first selecting a row(s) in the Tool Table." +msgstr "" +"Delete a selection of tools in the Tool Table\n" +"by first selecting a row(s) in the Tool Table." + +#: appTools/ToolIsolation.py:3286 +msgid "" +"Specify the type of object to be excepted from isolation.\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." +msgstr "" +"Specify the type of object to be excepted from isolation.\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." + +#: appTools/ToolIsolation.py:3296 +msgid "Object whose area will be removed from isolation geometry." +msgstr "Object whose area will be removed from isolation geometry." + +#: appTools/ToolIsolation.py:3332 appTools/ToolNCC.py:4205 +msgid "" +"The type of FlatCAM object to be used as non copper clearing reference.\n" +"It can be Gerber, Excellon or Geometry." +msgstr "" +"The type of FlatCAM object to be used as non copper clearing reference.\n" +"It can be Gerber, Excellon or Geometry." + +#: appTools/ToolIsolation.py:3398 +msgid "" +"Create a Geometry object with toolpaths to cut \n" +"isolation outside, inside or on both sides of the\n" +"object. For a Gerber object outside means outside\n" +"of the Gerber feature and inside means inside of\n" +"the Gerber feature, if possible at all. This means\n" +"that only if the Gerber feature has openings inside, they\n" +"will be isolated. If what is wanted is to cut isolation\n" +"inside the actual Gerber feature, use a negative tool\n" +"diameter above." +msgstr "" +"Create a Geometry object with toolpaths to cut \n" +"isolation outside, inside or on both sides of the\n" +"object. For a Gerber object outside means outside\n" +"of the Gerber feature and inside means inside of\n" +"the Gerber feature, if possible at all. This means\n" +"that only if the Gerber feature has openings inside, they\n" +"will be isolated. If what is wanted is to cut isolation\n" +"inside the actual Gerber feature, use a negative tool\n" +"diameter above." + +#: appTools/ToolMilling.py:1064 +#, fuzzy +#| msgid "Generating Solder Paste dispensing geometry..." +msgid "Generating drills milling geometry..." +msgstr "Generating Solder Paste dispensing geometry..." + +#: appTools/ToolMilling.py:1169 +#, fuzzy +#| msgid "Generating Solder Paste dispensing geometry..." +msgid "Generating slot milling geometry..." +msgstr "Generating Solder Paste dispensing geometry..." + +#: appTools/ToolMilling.py:1584 +#, fuzzy +#| msgid "Mill Holes" +msgid "Milling Holes Tool" +msgstr "Mill Holes" + +#: appTools/ToolMilling.py:2166 +msgid "Preprocessor E" +msgstr "Preprocessor E" + +#: appTools/ToolMilling.py:2178 +msgid "Preprocessor G" +msgstr "Preprocessor G" + +#: appTools/ToolMilling.py:2180 +msgid "" +"The preprocessor JSON file that dictates\n" +"Gcode output for Geometry (Milling) Objects." +msgstr "" +"The preprocessor JSON file that dictates\n" +"Gcode output for Geometry (Milling) Objects." + #: appTools/ToolMove.py:102 msgid "MOVE: Click on the Start point ..." msgstr "MOVE: Click on the Start point ..." @@ -14994,134 +16360,97 @@ msgstr "No object(s) selected." msgid "Error when mouse left click." msgstr "Error when mouse left click." -#: appTools/ToolNCC.py:42 -msgid "Non-Copper Clearing" -msgstr "Non-Copper Clearing" - -#: appTools/ToolNCC.py:86 appTools/ToolPaint.py:79 -msgid "Obj Type" -msgstr "Obj Type" - -#: appTools/ToolNCC.py:88 -msgid "" -"Specify the type of object to be cleared of excess copper.\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." -msgstr "" -"Specify the type of object to be cleared of excess copper.\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." - -#: appTools/ToolNCC.py:110 -msgid "Object to be cleared of excess copper." -msgstr "Object to be cleared of excess copper." - -#: appTools/ToolNCC.py:138 -msgid "" -"This is the Tool Number.\n" -"Non copper clearing will start with the tool with the biggest \n" -"diameter, continuing until there are no more tools.\n" -"Only tools that create NCC clearing geometry will still be present\n" -"in the resulting geometry. This is because with some tools\n" -"this function will not be able to create painting geometry." -msgstr "" -"This is the Tool Number.\n" -"Non copper clearing will start with the tool with the biggest \n" -"diameter, continuing until there are no more tools.\n" -"Only tools that create NCC clearing geometry will still be present\n" -"in the resulting geometry. This is because with some tools\n" -"this function will not be able to create painting geometry." - -#: appTools/ToolNCC.py:597 appTools/ToolPaint.py:536 -msgid "Generate Geometry" -msgstr "Generate Geometry" - -#: appTools/ToolNCC.py:1638 -msgid "Wrong Tool Dia value format entered, use a number." -msgstr "Wrong Tool Dia value format entered, use a number." - -#: appTools/ToolNCC.py:1649 appTools/ToolPaint.py:1443 -msgid "No selected tools in Tool Table." -msgstr "No selected tools in Tool Table." - -#: appTools/ToolNCC.py:2005 appTools/ToolNCC.py:3024 +#: appTools/ToolNCC.py:1674 appTools/ToolNCC.py:2598 msgid "NCC Tool. Preparing non-copper polygons." msgstr "NCC Tool. Preparing non-copper polygons." -#: appTools/ToolNCC.py:2064 appTools/ToolNCC.py:3152 +#: appTools/ToolNCC.py:1734 appTools/ToolNCC.py:2726 msgid "NCC Tool. Calculate 'empty' area." msgstr "NCC Tool. Calculate 'empty' area." -#: appTools/ToolNCC.py:2083 appTools/ToolNCC.py:2192 appTools/ToolNCC.py:2207 -#: appTools/ToolNCC.py:3165 appTools/ToolNCC.py:3270 appTools/ToolNCC.py:3285 -#: appTools/ToolNCC.py:3551 appTools/ToolNCC.py:3652 appTools/ToolNCC.py:3667 +#: appTools/ToolNCC.py:1745 appTools/ToolNCC.py:1774 appTools/ToolNCC.py:1880 +#: appTools/ToolNCC.py:1893 appTools/ToolNCC.py:2739 appTools/ToolNCC.py:2844 +#: appTools/ToolNCC.py:2859 appTools/ToolNCC.py:3125 appTools/ToolNCC.py:3226 +#: appTools/ToolNCC.py:3241 msgid "Buffering finished" msgstr "Buffering finished" -#: appTools/ToolNCC.py:2091 appTools/ToolNCC.py:2214 appTools/ToolNCC.py:3173 -#: appTools/ToolNCC.py:3292 appTools/ToolNCC.py:3558 appTools/ToolNCC.py:3674 +#: appTools/ToolNCC.py:1749 appTools/ToolNCC.py:1778 appTools/ToolNCC.py:1884 +#: appTools/ToolNCC.py:1896 appTools/ToolNCC.py:2747 appTools/ToolNCC.py:2866 +#: appTools/ToolNCC.py:3132 appTools/ToolNCC.py:3248 msgid "Could not get the extent of the area to be non copper cleared." msgstr "Could not get the extent of the area to be non copper cleared." -#: appTools/ToolNCC.py:2121 appTools/ToolNCC.py:2200 appTools/ToolNCC.py:3200 -#: appTools/ToolNCC.py:3277 appTools/ToolNCC.py:3578 appTools/ToolNCC.py:3659 -msgid "" -"Isolation geometry is broken. Margin is less than isolation tool diameter." -msgstr "" -"Isolation geometry is broken. Margin is less than isolation tool diameter." - -#: appTools/ToolNCC.py:2217 appTools/ToolNCC.py:3296 appTools/ToolNCC.py:3677 -msgid "The selected object is not suitable for copper clearing." -msgstr "The selected object is not suitable for copper clearing." - -#: appTools/ToolNCC.py:2224 appTools/ToolNCC.py:3303 +#: appTools/ToolNCC.py:1757 appTools/ToolNCC.py:1907 appTools/ToolNCC.py:2877 msgid "NCC Tool. Finished calculation of 'empty' area." msgstr "NCC Tool. Finished calculation of 'empty' area." -#: appTools/ToolNCC.py:2267 +#: appTools/ToolNCC.py:1810 appTools/ToolNCC.py:2774 appTools/ToolNCC.py:2851 +#: appTools/ToolNCC.py:3152 appTools/ToolNCC.py:3233 +msgid "" +"Isolation geometry is broken. Margin is less than isolation tool diameter." +msgstr "" +"Isolation geometry is broken. Margin is less than isolation tool diameter." + +#: appTools/ToolNCC.py:1900 appTools/ToolNCC.py:2870 appTools/ToolNCC.py:3251 +msgid "The selected object is not suitable for copper clearing." +msgstr "The selected object is not suitable for copper clearing." + +#: appTools/ToolNCC.py:1950 msgid "Clearing the polygon with the method: lines." msgstr "Clearing the polygon with the method: lines." -#: appTools/ToolNCC.py:2277 +#: appTools/ToolNCC.py:1960 msgid "Failed. Clearing the polygon with the method: seed." msgstr "Failed. Clearing the polygon with the method: seed." -#: appTools/ToolNCC.py:2286 +#: appTools/ToolNCC.py:1969 msgid "Failed. Clearing the polygon with the method: standard." msgstr "Failed. Clearing the polygon with the method: standard." -#: appTools/ToolNCC.py:2300 -msgid "Geometry could not be cleared completely" +#: appTools/ToolNCC.py:1985 +#, fuzzy +#| msgid "Geometry could not be cleared completely" +msgid "Polygon could not be cleared. Location:" msgstr "Geometry could not be cleared completely" -#: appTools/ToolNCC.py:2325 appTools/ToolNCC.py:2327 appTools/ToolNCC.py:2973 -#: appTools/ToolNCC.py:2975 +#: appTools/ToolNCC.py:2017 appTools/ToolNCC.py:2019 appTools/ToolNCC.py:2547 +#: appTools/ToolNCC.py:2549 msgid "Non-Copper clearing ..." msgstr "Non-Copper clearing ..." -#: appTools/ToolNCC.py:2377 appTools/ToolNCC.py:3120 +#: appTools/ToolNCC.py:2038 +msgid "" +"There is no copper clearing tool in the selection and at least one is needed." +msgstr "" + +#: appTools/ToolNCC.py:2053 appTools/ToolNCC.py:2694 msgid "" "NCC Tool. Finished non-copper polygons. Normal copper clearing task started." msgstr "" "NCC Tool. Finished non-copper polygons. Normal copper clearing task started." -#: appTools/ToolNCC.py:2415 appTools/ToolNCC.py:2663 +#: appTools/ToolNCC.py:2081 appTools/ToolNCC.py:2315 msgid "NCC Tool failed creating bounding box." msgstr "NCC Tool failed creating bounding box." -#: appTools/ToolNCC.py:2430 appTools/ToolNCC.py:2680 appTools/ToolNCC.py:3316 -#: appTools/ToolNCC.py:3702 +#: appTools/ToolNCC.py:2101 appTools/ToolNCC.py:2351 appTools/ToolNCC.py:2890 +#: appTools/ToolNCC.py:3276 msgid "NCC Tool clearing with tool diameter" msgstr "NCC Tool clearing with tool diameter" -#: appTools/ToolNCC.py:2430 appTools/ToolNCC.py:2680 appTools/ToolNCC.py:3316 -#: appTools/ToolNCC.py:3702 +#: appTools/ToolNCC.py:2101 appTools/ToolNCC.py:2351 appTools/ToolNCC.py:2890 +#: appTools/ToolNCC.py:3276 msgid "started." msgstr "started." -#: appTools/ToolNCC.py:2588 appTools/ToolNCC.py:3477 +#: appTools/ToolNCC.py:2229 +#, fuzzy +#| msgid "Could not get the extent of the area to be non copper cleared." +msgid "Could not use the tool for copper clear." +msgstr "Could not get the extent of the area to be non copper cleared." + +#: appTools/ToolNCC.py:2251 appTools/ToolNCC.py:3051 msgid "" "There is no NCC Geometry in the file.\n" "Usually it means that the tool diameter is too big for the painted " @@ -15133,25 +16462,31 @@ msgstr "" "geometry.\n" "Change the painting parameters and try again." -#: appTools/ToolNCC.py:2597 appTools/ToolNCC.py:3486 +#: appTools/ToolNCC.py:2261 appTools/ToolNCC.py:3060 msgid "NCC Tool clear all done." msgstr "NCC Tool clear all done." -#: appTools/ToolNCC.py:2600 appTools/ToolNCC.py:3489 +#: appTools/ToolNCC.py:2264 appTools/ToolNCC.py:3063 msgid "NCC Tool clear all done but the copper features isolation is broken for" msgstr "" "NCC Tool clear all done but the copper features isolation is broken for" -#: appTools/ToolNCC.py:2602 appTools/ToolNCC.py:2888 appTools/ToolNCC.py:3491 -#: appTools/ToolNCC.py:3874 +#: appTools/ToolNCC.py:2266 appTools/ToolNCC.py:2462 appTools/ToolNCC.py:3065 +#: appTools/ToolNCC.py:3448 msgid "tools" msgstr "tools" -#: appTools/ToolNCC.py:2884 appTools/ToolNCC.py:3870 +#: appTools/ToolNCC.py:2293 +#, fuzzy +#| msgid "Paint Tool. Rest machining painting area task started." +msgid "NCC Tool. Rest machining copper clearing task started." +msgstr "Paint Tool. Rest machining painting area task started." + +#: appTools/ToolNCC.py:2458 appTools/ToolNCC.py:3444 msgid "NCC Tool Rest Machining clear all done." msgstr "NCC Tool Rest Machining clear all done." -#: appTools/ToolNCC.py:2887 appTools/ToolNCC.py:3873 +#: appTools/ToolNCC.py:2461 appTools/ToolNCC.py:3447 msgid "" "NCC Tool Rest Machining clear all done but the copper features isolation is " "broken for" @@ -15159,11 +16494,11 @@ msgstr "" "NCC Tool Rest Machining clear all done but the copper features isolation is " "broken for" -#: appTools/ToolNCC.py:2985 +#: appTools/ToolNCC.py:2559 msgid "NCC Tool started. Reading parameters." msgstr "NCC Tool started. Reading parameters." -#: appTools/ToolNCC.py:3972 +#: appTools/ToolNCC.py:3546 msgid "" "Try to use the Buffering Type = Full in Preferences -> Gerber General. " "Reload the Gerber file after this change." @@ -15171,103 +16506,51 @@ msgstr "" "Try to use the Buffering Type = Full in Preferences -> Gerber General. " "Reload the Gerber file after this change." -#: appTools/ToolOptimal.py:85 -msgid "Number of decimals kept for found distances." -msgstr "Number of decimals kept for found distances." +#: appTools/ToolNCC.py:3702 +msgid "Non-Copper Clearing" +msgstr "Non-Copper Clearing" -#: appTools/ToolOptimal.py:93 -msgid "Minimum distance" -msgstr "Minimum distance" +#: appTools/ToolNCC.py:3731 appTools/ToolPaint.py:2764 +msgid "Obj Type" +msgstr "Obj Type" -#: appTools/ToolOptimal.py:94 -msgid "Display minimum distance between copper features." -msgstr "Display minimum distance between copper features." - -#: appTools/ToolOptimal.py:98 -msgid "Determined" -msgstr "Determined" - -#: appTools/ToolOptimal.py:112 -msgid "Occurring" -msgstr "Occurring" - -#: appTools/ToolOptimal.py:113 -msgid "How many times this minimum is found." -msgstr "How many times this minimum is found." - -#: appTools/ToolOptimal.py:119 -msgid "Minimum points coordinates" -msgstr "Minimum points coordinates" - -#: appTools/ToolOptimal.py:120 appTools/ToolOptimal.py:126 -msgid "Coordinates for points where minimum distance was found." -msgstr "Coordinates for points where minimum distance was found." - -#: appTools/ToolOptimal.py:139 appTools/ToolOptimal.py:215 -msgid "Jump to selected position" -msgstr "Jump to selected position" - -#: appTools/ToolOptimal.py:141 appTools/ToolOptimal.py:217 +#: appTools/ToolNCC.py:3733 msgid "" -"Select a position in the Locations text box and then\n" -"click this button." +"Specify the type of object to be cleared of excess copper.\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." msgstr "" -"Select a position in the Locations text box and then\n" -"click this button." +"Specify the type of object to be cleared of excess copper.\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." -#: appTools/ToolOptimal.py:149 -msgid "Other distances" -msgstr "Other distances" +#: appTools/ToolNCC.py:3755 +msgid "Object to be cleared of excess copper." +msgstr "Object to be cleared of excess copper." -#: appTools/ToolOptimal.py:150 +#: appTools/ToolNCC.py:3783 msgid "" -"Will display other distances in the Gerber file ordered from\n" -"the minimum to the maximum, not including the absolute minimum." +"This is the Tool Number.\n" +"Non copper clearing will start with the tool with the biggest \n" +"diameter, continuing until there are no more tools.\n" +"Only tools that create NCC clearing geometry will still be present\n" +"in the resulting geometry. This is because with some tools\n" +"this function will not be able to create painting geometry." msgstr "" -"Will display other distances in the Gerber file ordered from\n" -"the minimum to the maximum, not including the absolute minimum." +"This is the Tool Number.\n" +"Non copper clearing will start with the tool with the biggest \n" +"diameter, continuing until there are no more tools.\n" +"Only tools that create NCC clearing geometry will still be present\n" +"in the resulting geometry. This is because with some tools\n" +"this function will not be able to create painting geometry." -#: appTools/ToolOptimal.py:155 -msgid "Other distances points coordinates" -msgstr "Other distances points coordinates" - -#: appTools/ToolOptimal.py:156 appTools/ToolOptimal.py:170 -#: appTools/ToolOptimal.py:177 appTools/ToolOptimal.py:194 -#: appTools/ToolOptimal.py:201 -msgid "" -"Other distances and the coordinates for points\n" -"where the distance was found." -msgstr "" -"Other distances and the coordinates for points\n" -"where the distance was found." - -#: appTools/ToolOptimal.py:169 -msgid "Gerber distances" -msgstr "Gerber distances" - -#: appTools/ToolOptimal.py:193 -msgid "Points coordinates" -msgstr "Points coordinates" - -#: appTools/ToolOptimal.py:225 -msgid "Find Minimum" -msgstr "Find Minimum" - -#: appTools/ToolOptimal.py:227 -msgid "" -"Calculate the minimum distance between copper features,\n" -"this will allow the determination of the right tool to\n" -"use for isolation or copper clearing." -msgstr "" -"Calculate the minimum distance between copper features,\n" -"this will allow the determination of the right tool to\n" -"use for isolation or copper clearing." - -#: appTools/ToolOptimal.py:352 +#: appTools/ToolOptimal.py:142 msgid "Only Gerber objects can be evaluated." msgstr "Only Gerber objects can be evaluated." -#: appTools/ToolOptimal.py:358 +#: appTools/ToolOptimal.py:148 msgid "" "Optimal Tool. Started to search for the minimum distance between copper " "features." @@ -15275,36 +16558,120 @@ msgstr "" "Optimal Tool. Started to search for the minimum distance between copper " "features." -#: appTools/ToolOptimal.py:368 +#: appTools/ToolOptimal.py:158 msgid "Optimal Tool. Parsing geometry for aperture" msgstr "Optimal Tool. Parsing geometry for aperture" -#: appTools/ToolOptimal.py:379 +#: appTools/ToolOptimal.py:169 msgid "Optimal Tool. Creating a buffer for the object geometry." msgstr "Optimal Tool. Creating a buffer for the object geometry." -#: appTools/ToolOptimal.py:389 -msgid "" -"The Gerber object has one Polygon as geometry.\n" -"There are no distances between geometry elements to be found." -msgstr "" -"The Gerber object has one Polygon as geometry.\n" -"There are no distances between geometry elements to be found." - -#: appTools/ToolOptimal.py:394 +#: appTools/ToolOptimal.py:184 msgid "" "Optimal Tool. Finding the distances between each two elements. Iterations" msgstr "" "Optimal Tool. Finding the distances between each two elements. Iterations" -#: appTools/ToolOptimal.py:429 +#: appTools/ToolOptimal.py:218 msgid "Optimal Tool. Finding the minimum distance." msgstr "Optimal Tool. Finding the minimum distance." -#: appTools/ToolOptimal.py:445 +#: appTools/ToolOptimal.py:234 msgid "Optimal Tool. Finished successfully." msgstr "Optimal Tool. Finished successfully." +#: appTools/ToolOptimal.py:435 +msgid "Number of decimals kept for found distances." +msgstr "Number of decimals kept for found distances." + +#: appTools/ToolOptimal.py:443 +msgid "Minimum distance" +msgstr "Minimum distance" + +#: appTools/ToolOptimal.py:444 +msgid "Display minimum distance between copper features." +msgstr "Display minimum distance between copper features." + +#: appTools/ToolOptimal.py:448 +msgid "Determined" +msgstr "Determined" + +#: appTools/ToolOptimal.py:462 +msgid "Occurring" +msgstr "Occurring" + +#: appTools/ToolOptimal.py:463 +msgid "How many times this minimum is found." +msgstr "How many times this minimum is found." + +#: appTools/ToolOptimal.py:469 +msgid "Minimum points coordinates" +msgstr "Minimum points coordinates" + +#: appTools/ToolOptimal.py:470 appTools/ToolOptimal.py:476 +msgid "Coordinates for points where minimum distance was found." +msgstr "Coordinates for points where minimum distance was found." + +#: appTools/ToolOptimal.py:489 appTools/ToolOptimal.py:565 +msgid "Jump to selected position" +msgstr "Jump to selected position" + +#: appTools/ToolOptimal.py:491 appTools/ToolOptimal.py:567 +msgid "" +"Select a position in the Locations text box and then\n" +"click this button." +msgstr "" +"Select a position in the Locations text box and then\n" +"click this button." + +#: appTools/ToolOptimal.py:499 +msgid "Other distances" +msgstr "Other distances" + +#: appTools/ToolOptimal.py:500 +msgid "" +"Will display other distances in the Gerber file ordered from\n" +"the minimum to the maximum, not including the absolute minimum." +msgstr "" +"Will display other distances in the Gerber file ordered from\n" +"the minimum to the maximum, not including the absolute minimum." + +#: appTools/ToolOptimal.py:505 +msgid "Other distances points coordinates" +msgstr "Other distances points coordinates" + +#: appTools/ToolOptimal.py:506 appTools/ToolOptimal.py:520 +#: appTools/ToolOptimal.py:527 appTools/ToolOptimal.py:544 +#: appTools/ToolOptimal.py:551 +msgid "" +"Other distances and the coordinates for points\n" +"where the distance was found." +msgstr "" +"Other distances and the coordinates for points\n" +"where the distance was found." + +#: appTools/ToolOptimal.py:519 +msgid "Gerber distances" +msgstr "Gerber distances" + +#: appTools/ToolOptimal.py:543 +msgid "Points coordinates" +msgstr "Points coordinates" + +#: appTools/ToolOptimal.py:575 +msgid "Find Minimum" +msgstr "Find Minimum" + +#: appTools/ToolOptimal.py:577 +msgid "" +"Calculate the minimum distance between copper features,\n" +"this will allow the determination of the right tool to\n" +"use for isolation or copper clearing." +msgstr "" +"Calculate the minimum distance between copper features,\n" +"this will allow the determination of the right tool to\n" +"use for isolation or copper clearing." + #: appTools/ToolPDF.py:91 appTools/ToolPDF.py:95 msgid "Open PDF" msgstr "Open PDF" @@ -15317,11 +16684,11 @@ msgstr "Open PDF cancelled" msgid "Parsing PDF file ..." msgstr "Parsing PDF file ..." -#: appTools/ToolPDF.py:138 app_Main.py:8717 +#: appTools/ToolPDF.py:138 app_Main.py:9114 msgid "Failed to open" msgstr "Failed to open" -#: appTools/ToolPDF.py:203 appTools/ToolPcbWizard.py:445 app_Main.py:8666 +#: appTools/ToolPDF.py:203 appTools/ToolPcbWizard.py:331 app_Main.py:9063 msgid "No geometry found in file" msgstr "No geometry found in file" @@ -15338,197 +16705,60 @@ msgstr "Open PDF file failed." msgid "Rendered" msgstr "Rendered" -#: appTools/ToolPaint.py:81 -msgid "" -"Specify the type of object to be painted.\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." -msgstr "" -"Specify the type of object to be painted.\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." - -#: appTools/ToolPaint.py:103 -msgid "Object to be painted." -msgstr "Object to be painted." - -#: appTools/ToolPaint.py:116 -msgid "" -"Tools pool from which the algorithm\n" -"will pick the ones used for painting." -msgstr "" -"Tools pool from which the algorithm\n" -"will pick the ones used for painting." - -#: appTools/ToolPaint.py:133 -msgid "" -"This is the Tool Number.\n" -"Painting will start with the tool with the biggest diameter,\n" -"continuing until there are no more tools.\n" -"Only tools that create painting geometry will still be present\n" -"in the resulting geometry. This is because with some tools\n" -"this function will not be able to create painting geometry." -msgstr "" -"This is the Tool Number.\n" -"Painting will start with the tool with the biggest diameter,\n" -"continuing until there are no more tools.\n" -"Only tools that create painting geometry will still be present\n" -"in the resulting geometry. This is because with some tools\n" -"this function will not be able to create painting geometry." - -#: appTools/ToolPaint.py:145 -msgid "" -"The Tool Type (TT) can be:\n" -"- Circular -> it is informative only. Being circular,\n" -"the cut width in material is exactly the tool diameter.\n" -"- Ball -> informative only and make reference to the Ball type endmill.\n" -"- V-Shape -> it will disable Z-Cut parameter in the resulting geometry UI " -"form\n" -"and enable two additional UI form fields in the resulting geometry: V-Tip " -"Dia and\n" -"V-Tip Angle. Adjusting those two values will adjust the Z-Cut parameter " -"such\n" -"as the cut width into material will be equal with the value in the Tool " -"Diameter\n" -"column of this table.\n" -"Choosing the 'V-Shape' Tool Type automatically will select the Operation " -"Type\n" -"in the resulting geometry as Isolation." -msgstr "" -"The Tool Type (TT) can be:\n" -"- Circular -> it is informative only. Being circular,\n" -"the cut width in material is exactly the tool diameter.\n" -"- Ball -> informative only and make reference to the Ball type endmill.\n" -"- V-Shape -> it will disable Z-Cut parameter in the resulting geometry UI " -"form\n" -"and enable two additional UI form fields in the resulting geometry: V-Tip " -"Dia and\n" -"V-Tip Angle. Adjusting those two values will adjust the Z-Cut parameter " -"such\n" -"as the cut width into material will be equal with the value in the Tool " -"Diameter\n" -"column of this table.\n" -"Choosing the 'V-Shape' Tool Type automatically will select the Operation " -"Type\n" -"in the resulting geometry as Isolation." - -#: appTools/ToolPaint.py:497 -msgid "" -"The type of FlatCAM object to be used as paint reference.\n" -"It can be Gerber, Excellon or Geometry." -msgstr "" -"The type of FlatCAM object to be used as paint reference.\n" -"It can be Gerber, Excellon or Geometry." - -#: appTools/ToolPaint.py:538 -msgid "" -"- 'Area Selection' - left mouse click to start selection of the area to be " -"painted.\n" -"Keeping a modifier key pressed (CTRL or SHIFT) will allow to add multiple " -"areas.\n" -"- 'All Polygons' - the Paint will start after click.\n" -"- 'Reference Object' - will do non copper clearing within the area\n" -"specified by another object." -msgstr "" -"- 'Area Selection' - left mouse click to start selection of the area to be " -"painted.\n" -"Keeping a modifier key pressed (CTRL or SHIFT) will allow to add multiple " -"areas.\n" -"- 'All Polygons' - the Paint will start after click.\n" -"- 'Reference Object' - will do non copper clearing within the area\n" -"specified by another object." - -#: appTools/ToolPaint.py:1412 +#: appTools/ToolPaint.py:998 #, python-format msgid "Could not retrieve object: %s" msgstr "Could not retrieve object: %s" -#: appTools/ToolPaint.py:1422 +#: appTools/ToolPaint.py:1008 msgid "Can't do Paint on MultiGeo geometries" msgstr "Can't do Paint on MultiGeo geometries" -#: appTools/ToolPaint.py:1459 +#: appTools/ToolPaint.py:1045 msgid "Click on a polygon to paint it." msgstr "Click on a polygon to paint it." -#: appTools/ToolPaint.py:1472 +#: appTools/ToolPaint.py:1061 msgid "Click the start point of the paint area." msgstr "Click the start point of the paint area." -#: appTools/ToolPaint.py:1537 +#: appTools/ToolPaint.py:1127 msgid "Click to add next polygon or right click to start painting." msgstr "Click to add next polygon or right click to start painting." -#: appTools/ToolPaint.py:1550 +#: appTools/ToolPaint.py:1140 msgid "Click to add/remove next polygon or right click to start painting." msgstr "Click to add/remove next polygon or right click to start painting." -#: appTools/ToolPaint.py:2054 +#: appTools/ToolPaint.py:1650 msgid "Painting polygon with method: lines." msgstr "Painting polygon with method: lines." -#: appTools/ToolPaint.py:2066 +#: appTools/ToolPaint.py:1662 msgid "Failed. Painting polygon with method: seed." msgstr "Failed. Painting polygon with method: seed." -#: appTools/ToolPaint.py:2077 +#: appTools/ToolPaint.py:1673 msgid "Failed. Painting polygon with method: standard." msgstr "Failed. Painting polygon with method: standard." -#: appTools/ToolPaint.py:2093 +#: appTools/ToolPaint.py:1689 msgid "Geometry could not be painted completely" msgstr "Geometry could not be painted completely" -#: appTools/ToolPaint.py:2122 appTools/ToolPaint.py:2125 -#: appTools/ToolPaint.py:2133 appTools/ToolPaint.py:2436 -#: appTools/ToolPaint.py:2439 appTools/ToolPaint.py:2447 -#: appTools/ToolPaint.py:2935 appTools/ToolPaint.py:2938 -#: appTools/ToolPaint.py:2944 -msgid "Paint Tool." -msgstr "Paint Tool." - -#: appTools/ToolPaint.py:2122 appTools/ToolPaint.py:2125 -#: appTools/ToolPaint.py:2133 -msgid "Normal painting polygon task started." -msgstr "Normal painting polygon task started." - -#: appTools/ToolPaint.py:2123 appTools/ToolPaint.py:2437 -#: appTools/ToolPaint.py:2936 -msgid "Buffering geometry..." -msgstr "Buffering geometry..." - -#: appTools/ToolPaint.py:2145 appTools/ToolPaint.py:2454 -#: appTools/ToolPaint.py:2952 -msgid "No polygon found." -msgstr "No polygon found." - -#: appTools/ToolPaint.py:2175 -msgid "Painting polygon..." -msgstr "Painting polygon..." - -#: appTools/ToolPaint.py:2185 appTools/ToolPaint.py:2500 -#: appTools/ToolPaint.py:2690 appTools/ToolPaint.py:2998 -#: appTools/ToolPaint.py:3177 +#: appTools/ToolPaint.py:1763 appTools/ToolPaint.py:1950 msgid "Painting with tool diameter = " msgstr "Painting with tool diameter = " -#: appTools/ToolPaint.py:2186 appTools/ToolPaint.py:2501 -#: appTools/ToolPaint.py:2691 appTools/ToolPaint.py:2999 -#: appTools/ToolPaint.py:3178 +#: appTools/ToolPaint.py:1766 appTools/ToolPaint.py:1953 msgid "started" msgstr "started" -#: appTools/ToolPaint.py:2211 appTools/ToolPaint.py:2527 -#: appTools/ToolPaint.py:2717 appTools/ToolPaint.py:3025 -#: appTools/ToolPaint.py:3204 +#: appTools/ToolPaint.py:1792 appTools/ToolPaint.py:1940 msgid "Margin parameter too big. Tool is not used" msgstr "Margin parameter too big. Tool is not used" -#: appTools/ToolPaint.py:2269 appTools/ToolPaint.py:2596 -#: appTools/ToolPaint.py:2774 appTools/ToolPaint.py:3088 -#: appTools/ToolPaint.py:3266 +#: appTools/ToolPaint.py:1852 appTools/ToolPaint.py:2061 msgid "" "Could not do Paint. Try a different combination of parameters. Or a " "different strategy of paint" @@ -15536,9 +16766,7 @@ msgstr "" "Could not do Paint. Try a different combination of parameters. Or a " "different strategy of paint" -#: appTools/ToolPaint.py:2326 appTools/ToolPaint.py:2662 -#: appTools/ToolPaint.py:2831 appTools/ToolPaint.py:3149 -#: appTools/ToolPaint.py:3328 +#: appTools/ToolPaint.py:1907 appTools/ToolPaint.py:2132 msgid "" "There is no Painting Geometry in the file.\n" "Usually it means that the tool diameter is too big for the painted " @@ -15550,202 +16778,188 @@ msgstr "" "geometry.\n" "Change the painting parameters and try again." -#: appTools/ToolPaint.py:2349 -msgid "Paint Single failed." -msgstr "Paint Single failed." +#: appTools/ToolPaint.py:2175 +#, fuzzy +#| msgid "Paint All failed." +msgid "Paint failed." +msgstr "Paint All failed." -#: appTools/ToolPaint.py:2355 -msgid "Paint Single Done." -msgstr "Paint Single Done." +#: appTools/ToolPaint.py:2181 +#, fuzzy +#| msgid "Paint done." +msgid "Paint Done." +msgstr "Paint done." -#: appTools/ToolPaint.py:2357 appTools/ToolPaint.py:2867 -#: appTools/ToolPaint.py:3364 -msgid "Polygon Paint started ..." -msgstr "Polygon Paint started ..." +#: appTools/ToolPaint.py:2186 +#, fuzzy +#| msgid "Painting polygon..." +msgid "Painting..." +msgstr "Painting polygon..." -#: appTools/ToolPaint.py:2436 appTools/ToolPaint.py:2439 -#: appTools/ToolPaint.py:2447 +#: appTools/ToolPaint.py:2220 appTools/ToolPaint.py:2225 +#: appTools/ToolPaint.py:2233 appTools/ToolPaint.py:2320 +#: appTools/ToolPaint.py:2323 appTools/ToolPaint.py:2331 +#: appTools/ToolPaint.py:2401 appTools/ToolPaint.py:2406 +#: appTools/ToolPaint.py:2412 +msgid "Paint Tool." +msgstr "Paint Tool." + +#: appTools/ToolPaint.py:2221 appTools/ToolPaint.py:2225 +#: appTools/ToolPaint.py:2233 +msgid "Normal painting polygon task started." +msgstr "Normal painting polygon task started." + +#: appTools/ToolPaint.py:2222 appTools/ToolPaint.py:2320 +#: appTools/ToolPaint.py:2403 +msgid "Buffering geometry..." +msgstr "Buffering geometry..." + +#: appTools/ToolPaint.py:2245 appTools/ToolPaint.py:2338 +#: appTools/ToolPaint.py:2420 +msgid "No polygon found." +msgstr "No polygon found." + +#: appTools/ToolPaint.py:2320 appTools/ToolPaint.py:2323 +#: appTools/ToolPaint.py:2331 msgid "Paint all polygons task started." msgstr "Paint all polygons task started." -#: appTools/ToolPaint.py:2478 appTools/ToolPaint.py:2976 -msgid "Painting polygons..." -msgstr "Painting polygons..." - -#: appTools/ToolPaint.py:2671 -msgid "Paint All Done." -msgstr "Paint All Done." - -#: appTools/ToolPaint.py:2840 appTools/ToolPaint.py:3337 -msgid "Paint All with Rest-Machining done." -msgstr "Paint All with Rest-Machining done." - -#: appTools/ToolPaint.py:2859 -msgid "Paint All failed." -msgstr "Paint All failed." - -#: appTools/ToolPaint.py:2865 -msgid "Paint Poly All Done." -msgstr "Paint Poly All Done." - -#: appTools/ToolPaint.py:2935 appTools/ToolPaint.py:2938 -#: appTools/ToolPaint.py:2944 +#: appTools/ToolPaint.py:2402 appTools/ToolPaint.py:2406 +#: appTools/ToolPaint.py:2412 msgid "Painting area task started." msgstr "Painting area task started." -#: appTools/ToolPaint.py:3158 -msgid "Paint Area Done." -msgstr "Paint Area Done." - -#: appTools/ToolPaint.py:3356 -msgid "Paint Area failed." -msgstr "Paint Area failed." - -#: appTools/ToolPaint.py:3362 -msgid "Paint Poly Area Done." -msgstr "Paint Poly Area Done." - -#: appTools/ToolPanelize.py:55 +#: appTools/ToolPaint.py:2766 msgid "" -"Specify the type of object to be panelized\n" -"It can be of type: Gerber, Excellon or Geometry.\n" -"The selection here decide the type of objects that will be\n" -"in the Object combobox." +"Specify the type of object to be painted.\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." msgstr "" -"Specify the type of object to be panelized\n" -"It can be of type: Gerber, Excellon or Geometry.\n" -"The selection here decide the type of objects that will be\n" -"in the Object combobox." +"Specify the type of object to be painted.\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." -#: appTools/ToolPanelize.py:88 +#: appTools/ToolPaint.py:2788 +msgid "Object to be painted." +msgstr "Object to be painted." + +#: appTools/ToolPaint.py:2801 msgid "" -"Object to be panelized. This means that it will\n" -"be duplicated in an array of rows and columns." +"Tools pool from which the algorithm\n" +"will pick the ones used for painting." msgstr "" -"Object to be panelized. This means that it will\n" -"be duplicated in an array of rows and columns." +"Tools pool from which the algorithm\n" +"will pick the ones used for painting." -#: appTools/ToolPanelize.py:100 -msgid "Penelization Reference" -msgstr "Penelization Reference" - -#: appTools/ToolPanelize.py:102 +#: appTools/ToolPaint.py:2818 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." +"This is the Tool Number.\n" +"Painting will start with the tool with the biggest diameter,\n" +"continuing until there are no more tools.\n" +"Only tools that create painting geometry will still be present\n" +"in the resulting geometry. This is because with some tools\n" +"this function will not be able to create painting geometry." 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." +"This is the Tool Number.\n" +"Painting will start with the tool with the biggest diameter,\n" +"continuing until there are no more tools.\n" +"Only tools that create painting geometry will still be present\n" +"in the resulting geometry. This is because with some tools\n" +"this function will not be able to create painting geometry." -#: appTools/ToolPanelize.py:123 -msgid "Box Type" -msgstr "Box Type" - -#: appTools/ToolPanelize.py:125 +#: appTools/ToolPaint.py:2830 msgid "" -"Specify the type of object to be used as an container for\n" -"panelization. It can be: Gerber or Geometry type.\n" -"The selection here decide the type of objects that will be\n" -"in the Box Object combobox." +"The Tool Type (TT) can be:\n" +"- Circular -> it is informative only. Being circular,\n" +"the cut width in material is exactly the tool diameter.\n" +"- Ball -> informative only and make reference to the Ball type endmill.\n" +"- V-Shape -> it will disable Z-Cut parameter in the resulting geometry UI " +"form\n" +"and enable two additional UI form fields in the resulting geometry: V-Tip " +"Dia and\n" +"V-Tip Angle. Adjusting those two values will adjust the Z-Cut parameter " +"such\n" +"as the cut width into material will be equal with the value in the Tool " +"Diameter\n" +"column of this table.\n" +"Choosing the 'V-Shape' Tool Type automatically will select the Operation " +"Type\n" +"in the resulting geometry as Isolation." msgstr "" -"Specify the type of object to be used as an container for\n" -"panelization. It can be: Gerber or Geometry type.\n" -"The selection here decide the type of objects that will be\n" -"in the Box Object combobox." +"The Tool Type (TT) can be:\n" +"- Circular -> it is informative only. Being circular,\n" +"the cut width in material is exactly the tool diameter.\n" +"- Ball -> informative only and make reference to the Ball type endmill.\n" +"- V-Shape -> it will disable Z-Cut parameter in the resulting geometry UI " +"form\n" +"and enable two additional UI form fields in the resulting geometry: V-Tip " +"Dia and\n" +"V-Tip Angle. Adjusting those two values will adjust the Z-Cut parameter " +"such\n" +"as the cut width into material will be equal with the value in the Tool " +"Diameter\n" +"column of this table.\n" +"Choosing the 'V-Shape' Tool Type automatically will select the Operation " +"Type\n" +"in the resulting geometry as Isolation." -#: appTools/ToolPanelize.py:139 +#: appTools/ToolPaint.py:3137 msgid "" -"The actual object that is used as container for the\n" -" selected object that is to be panelized." +"The type of FlatCAM object to be used as paint reference.\n" +"It can be Gerber, Excellon or Geometry." msgstr "" -"The actual object that is used as container for the\n" -" selected object that is to be panelized." +"The type of FlatCAM object to be used as paint reference.\n" +"It can be Gerber, Excellon or Geometry." -#: appTools/ToolPanelize.py:149 -msgid "Panel Data" -msgstr "Panel Data" - -#: appTools/ToolPanelize.py:151 -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." +#: appTools/ToolPaint.py:3179 +#, fuzzy +#| msgid "" +#| "Create a Geometry object with\n" +#| "toolpaths to cut around polygons." +msgid "Create a Geometry Object which paints the polygons." 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." +"Create a Geometry object with\n" +"toolpaths to cut around polygons." -#: appTools/ToolPanelize.py:214 -msgid "" -"Choose the type of object for the panel object:\n" -"- Geometry\n" -"- Gerber" -msgstr "" -"Choose the type of object for the panel object:\n" -"- Geometry\n" -"- Gerber" - -#: appTools/ToolPanelize.py:222 -msgid "Constrain panel within" -msgstr "Constrain panel within" - -#: appTools/ToolPanelize.py:263 -msgid "Panelize Object" -msgstr "Panelize Object" - -#: appTools/ToolPanelize.py:265 appTools/ToolRulesCheck.py:501 -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 "" -"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." - -#: appTools/ToolPanelize.py:333 +#: appTools/ToolPanelize.py:89 msgid "Panel. Tool" msgstr "Panel. Tool" -#: appTools/ToolPanelize.py:469 +#: appTools/ToolPanelize.py:236 msgid "Columns or Rows are zero value. Change them to a positive integer." msgstr "Columns or Rows are zero value. Change them to a positive integer." -#: appTools/ToolPanelize.py:506 +#: appTools/ToolPanelize.py:275 msgid "Generating panel ... " msgstr "Generating panel ... " -#: appTools/ToolPanelize.py:781 -msgid "Generating panel ... Adding the Gerber code." +#: appTools/ToolPanelize.py:362 appTools/ToolPanelize.py:584 +#, fuzzy +#| msgid "Generating panel ... Adding the Gerber code." +msgid "Generating panel ... Adding the source code." msgstr "Generating panel ... Adding the Gerber code." -#: appTools/ToolPanelize.py:789 +#: appTools/ToolPanelize.py:550 +msgid "Optimizing the overlapping paths." +msgstr "" + +#: appTools/ToolPanelize.py:582 +#, fuzzy +#| msgid "Optimization Time" +msgid "Optimization complete." +msgstr "Optimization Time" + +#: appTools/ToolPanelize.py:596 msgid "Generating panel... Spawning copies" msgstr "Generating panel... Spawning copies" -#: appTools/ToolPanelize.py:798 +#: appTools/ToolPanelize.py:605 msgid "Panel done..." msgstr "Panel done..." -#: appTools/ToolPanelize.py:801 +#: appTools/ToolPanelize.py:608 #, python-brace-format msgid "" "{text} Too big for the constrain area. Final panel has {col} columns and " @@ -15754,129 +16968,139 @@ msgstr "" "{text} Too big for the constrain area. Final panel has {col} columns and " "{row} rows" -#: appTools/ToolPanelize.py:810 +#: appTools/ToolPanelize.py:617 msgid "Panel created successfully." msgstr "Panel created successfully." -#: appTools/ToolPcbWizard.py:31 -msgid "PcbWizard Import Tool" -msgstr "PcbWizard Import Tool" - -#: appTools/ToolPcbWizard.py:40 -msgid "Import 2-file Excellon" -msgstr "Import 2-file Excellon" - -#: appTools/ToolPcbWizard.py:51 -msgid "Load files" -msgstr "Load files" - -#: appTools/ToolPcbWizard.py:57 -msgid "Excellon file" -msgstr "Excellon file" - -#: appTools/ToolPcbWizard.py:59 +#: appTools/ToolPanelize.py:654 msgid "" -"Load the Excellon file.\n" -"Usually it has a .DRL extension" +"Specify the type of object to be panelized\n" +"It can be of type: Gerber, Excellon or Geometry.\n" +"The selection here decide the type of objects that will be\n" +"in the Object combobox." msgstr "" -"Load the Excellon file.\n" -"Usually it has a .DRL extension" +"Specify the type of object to be panelized\n" +"It can be of type: Gerber, Excellon or Geometry.\n" +"The selection here decide the type of objects that will be\n" +"in the Object combobox." -#: appTools/ToolPcbWizard.py:65 -msgid "INF file" -msgstr "INF file" - -#: appTools/ToolPcbWizard.py:67 -msgid "Load the INF file." -msgstr "Load the INF file." - -#: appTools/ToolPcbWizard.py:79 -msgid "Tool Number" -msgstr "Tool Number" - -#: appTools/ToolPcbWizard.py:81 -msgid "Tool diameter in file units." -msgstr "Tool diameter in file units." - -#: appTools/ToolPcbWizard.py:87 -msgid "Excellon format" -msgstr "Excellon format" - -#: appTools/ToolPcbWizard.py:95 -msgid "Int. digits" -msgstr "Int. digits" - -#: appTools/ToolPcbWizard.py:97 -msgid "The number of digits for the integral part of the coordinates." -msgstr "The number of digits for the integral part of the coordinates." - -#: appTools/ToolPcbWizard.py:104 -msgid "Frac. digits" -msgstr "Frac. digits" - -#: appTools/ToolPcbWizard.py:106 -msgid "The number of digits for the fractional part of the coordinates." -msgstr "The number of digits for the fractional part of the coordinates." - -#: appTools/ToolPcbWizard.py:113 -msgid "No Suppression" -msgstr "No Suppression" - -#: appTools/ToolPcbWizard.py:114 -msgid "Zeros supp." -msgstr "Zeros supp." - -#: appTools/ToolPcbWizard.py:116 +#: appTools/ToolPanelize.py:687 msgid "" -"The type of zeros suppression used.\n" -"Can be of type:\n" -"- LZ = leading zeros are kept\n" -"- TZ = trailing zeros are kept\n" -"- No Suppression = no zero suppression" +"Object to be panelized. This means that it will\n" +"be duplicated in an array of rows and columns." msgstr "" -"The type of zeros suppression used.\n" -"Can be of type:\n" -"- LZ = leading zeros are kept\n" -"- TZ = trailing zeros are kept\n" -"- No Suppression = no zero suppression" +"Object to be panelized. This means that it will\n" +"be duplicated in an array of rows and columns." -#: appTools/ToolPcbWizard.py:129 +#: appTools/ToolPanelize.py:699 +msgid "Penelization Reference" +msgstr "Penelization Reference" + +#: appTools/ToolPanelize.py:701 msgid "" -"The type of units that the coordinates and tool\n" -"diameters are using. Can be INCH or MM." +"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 "" -"The type of units that the coordinates and tool\n" -"diameters are using. Can be INCH or MM." +"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." -#: appTools/ToolPcbWizard.py:136 -msgid "Import Excellon" -msgstr "Import Excellon" +#: appTools/ToolPanelize.py:722 +msgid "Box Type" +msgstr "Box Type" -#: appTools/ToolPcbWizard.py:138 +#: appTools/ToolPanelize.py:724 msgid "" -"Import in FlatCAM an Excellon file\n" -"that store it's information's in 2 files.\n" -"One usually has .DRL extension while\n" -"the other has .INF extension." +"Specify the type of object to be used as an container for\n" +"panelization. It can be: Gerber or Geometry type.\n" +"The selection here decide the type of objects that will be\n" +"in the Box Object combobox." msgstr "" -"Import in FlatCAM an Excellon file\n" -"that store it's information's in 2 files.\n" -"One usually has .DRL extension while\n" -"the other has .INF extension." +"Specify the type of object to be used as an container for\n" +"panelization. It can be: Gerber or Geometry type.\n" +"The selection here decide the type of objects that will be\n" +"in the Box Object combobox." -#: appTools/ToolPcbWizard.py:197 +#: appTools/ToolPanelize.py:738 +msgid "" +"The actual object that is used as container for the\n" +" selected object that is to be panelized." +msgstr "" +"The actual object that is used as container for the\n" +" selected object that is to be panelized." + +#: appTools/ToolPanelize.py:748 +msgid "Panel Data" +msgstr "Panel Data" + +#: appTools/ToolPanelize.py:750 +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." + +#: appTools/ToolPanelize.py:813 +msgid "" +"Choose the type of object for the panel object:\n" +"- Geometry\n" +"- Gerber" +msgstr "" +"Choose the type of object for the panel object:\n" +"- Geometry\n" +"- Gerber" + +#: appTools/ToolPanelize.py:831 +msgid "Constrain panel within" +msgstr "Constrain panel within" + +#: appTools/ToolPanelize.py:872 +msgid "Panelize Object" +msgstr "Panelize Object" + +#: appTools/ToolPanelize.py:874 appTools/ToolRulesCheck.py:1603 +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 "" +"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." + +#: appTools/ToolPcbWizard.py:93 msgid "PCBWizard Tool" msgstr "PCBWizard Tool" -#: appTools/ToolPcbWizard.py:291 appTools/ToolPcbWizard.py:295 +#: appTools/ToolPcbWizard.py:179 appTools/ToolPcbWizard.py:183 msgid "Load PcbWizard Excellon file" msgstr "Load PcbWizard Excellon file" -#: appTools/ToolPcbWizard.py:314 appTools/ToolPcbWizard.py:318 +#: appTools/ToolPcbWizard.py:202 appTools/ToolPcbWizard.py:206 msgid "Load PcbWizard INF file" msgstr "Load PcbWizard INF file" -#: appTools/ToolPcbWizard.py:366 +#: appTools/ToolPcbWizard.py:254 msgid "" "The INF file does not contain the tool table.\n" "Try to open the Excellon file from File -> Open -> Excellon\n" @@ -15886,46 +17110,148 @@ msgstr "" "Try to open the Excellon file from File -> Open -> Excellon\n" "and edit the drill diameters manually." -#: appTools/ToolPcbWizard.py:387 +#: appTools/ToolPcbWizard.py:274 msgid "PcbWizard .INF file loaded." msgstr "PcbWizard .INF file loaded." -#: appTools/ToolPcbWizard.py:392 +#: appTools/ToolPcbWizard.py:278 msgid "Main PcbWizard Excellon file loaded." msgstr "Main PcbWizard Excellon file loaded." -#: appTools/ToolPcbWizard.py:424 app_Main.py:8644 +#: appTools/ToolPcbWizard.py:310 app_Main.py:9043 msgid "This is not Excellon file." msgstr "This is not Excellon file." -#: appTools/ToolPcbWizard.py:427 +#: appTools/ToolPcbWizard.py:313 msgid "Cannot parse file" msgstr "Cannot parse file" -#: appTools/ToolPcbWizard.py:450 +#: appTools/ToolPcbWizard.py:336 msgid "Importing Excellon." msgstr "Importing Excellon." -#: appTools/ToolPcbWizard.py:457 +#: appTools/ToolPcbWizard.py:343 msgid "Import Excellon file failed." msgstr "Import Excellon file failed." -#: appTools/ToolPcbWizard.py:464 +#: appTools/ToolPcbWizard.py:350 msgid "Imported" msgstr "Imported" -#: appTools/ToolPcbWizard.py:467 +#: appTools/ToolPcbWizard.py:353 msgid "Excellon merging is in progress. Please wait..." msgstr "Excellon merging is in progress. Please wait..." -#: appTools/ToolPcbWizard.py:469 +#: appTools/ToolPcbWizard.py:355 msgid "The imported Excellon file is empty." msgstr "The imported Excellon file is empty." -#: appTools/ToolProperties.py:116 appTools/ToolTransform.py:577 -#: app_Main.py:4815 app_Main.py:6927 app_Main.py:7027 app_Main.py:7068 -#: app_Main.py:7109 app_Main.py:7151 app_Main.py:7193 app_Main.py:7237 -#: app_Main.py:7281 app_Main.py:7805 app_Main.py:7809 +#: appTools/ToolPcbWizard.py:360 +msgid "PcbWizard Import Tool" +msgstr "PcbWizard Import Tool" + +#: appTools/ToolPcbWizard.py:379 +msgid "Load files" +msgstr "Load files" + +#: appTools/ToolPcbWizard.py:385 +msgid "Excellon file" +msgstr "Excellon file" + +#: appTools/ToolPcbWizard.py:387 +msgid "" +"Load the Excellon file.\n" +"Usually it has a .DRL extension" +msgstr "" +"Load the Excellon file.\n" +"Usually it has a .DRL extension" + +#: appTools/ToolPcbWizard.py:393 +msgid "INF file" +msgstr "INF file" + +#: appTools/ToolPcbWizard.py:395 +msgid "Load the INF file." +msgstr "Load the INF file." + +#: appTools/ToolPcbWizard.py:407 +msgid "Tool Number" +msgstr "Tool Number" + +#: appTools/ToolPcbWizard.py:409 +msgid "Tool diameter in file units." +msgstr "Tool diameter in file units." + +#: appTools/ToolPcbWizard.py:415 +msgid "Excellon format" +msgstr "Excellon format" + +#: appTools/ToolPcbWizard.py:423 +msgid "Int. digits" +msgstr "Int. digits" + +#: appTools/ToolPcbWizard.py:425 +msgid "The number of digits for the integral part of the coordinates." +msgstr "The number of digits for the integral part of the coordinates." + +#: appTools/ToolPcbWizard.py:432 +msgid "Frac. digits" +msgstr "Frac. digits" + +#: appTools/ToolPcbWizard.py:434 +msgid "The number of digits for the fractional part of the coordinates." +msgstr "The number of digits for the fractional part of the coordinates." + +#: appTools/ToolPcbWizard.py:441 +msgid "No Suppression" +msgstr "No Suppression" + +#: appTools/ToolPcbWizard.py:442 +msgid "Zeros supp." +msgstr "Zeros supp." + +#: appTools/ToolPcbWizard.py:444 +msgid "" +"The type of zeros suppression used.\n" +"Can be of type:\n" +"- LZ = leading zeros are kept\n" +"- TZ = trailing zeros are kept\n" +"- No Suppression = no zero suppression" +msgstr "" +"The type of zeros suppression used.\n" +"Can be of type:\n" +"- LZ = leading zeros are kept\n" +"- TZ = trailing zeros are kept\n" +"- No Suppression = no zero suppression" + +#: appTools/ToolPcbWizard.py:457 +msgid "" +"The type of units that the coordinates and tool\n" +"diameters are using. Can be INCH or MM." +msgstr "" +"The type of units that the coordinates and tool\n" +"diameters are using. Can be INCH or MM." + +#: appTools/ToolPcbWizard.py:464 +msgid "Import Excellon" +msgstr "Import Excellon" + +#: appTools/ToolPcbWizard.py:466 +msgid "" +"Import in FlatCAM an Excellon file\n" +"that store it's information's in 2 files.\n" +"One usually has .DRL extension while\n" +"the other has .INF extension." +msgstr "" +"Import in FlatCAM an Excellon file\n" +"that store it's information's in 2 files.\n" +"One usually has .DRL extension while\n" +"the other has .INF extension." + +#: appTools/ToolProperties.py:116 appTools/ToolTransform.py:142 +#: app_Main.py:4970 app_Main.py:7298 app_Main.py:7398 app_Main.py:7439 +#: app_Main.py:7480 app_Main.py:7522 app_Main.py:7564 app_Main.py:7608 +#: app_Main.py:7652 app_Main.py:8168 app_Main.py:8172 msgid "No object selected." msgstr "No object selected." @@ -15937,148 +17263,121 @@ msgstr "Object Properties are displayed." msgid "Properties Tool" msgstr "Properties Tool" -#: appTools/ToolProperties.py:150 +#: appTools/ToolProperties.py:153 msgid "TYPE" msgstr "TYPE" -#: appTools/ToolProperties.py:151 +#: appTools/ToolProperties.py:154 msgid "NAME" msgstr "NAME" -#: appTools/ToolProperties.py:153 +#: appTools/ToolProperties.py:156 msgid "Dimensions" msgstr "Dimensions" -#: appTools/ToolProperties.py:181 +#: appTools/ToolProperties.py:184 msgid "Geo Type" msgstr "Geo Type" -#: appTools/ToolProperties.py:184 +#: appTools/ToolProperties.py:187 msgid "Single-Geo" msgstr "Single-Geo" -#: appTools/ToolProperties.py:185 +#: appTools/ToolProperties.py:188 msgid "Multi-Geo" msgstr "Multi-Geo" -#: appTools/ToolProperties.py:196 +#: appTools/ToolProperties.py:199 msgid "Calculating dimensions ... Please wait." msgstr "Calculating dimensions ... Please wait." -#: appTools/ToolProperties.py:339 appTools/ToolProperties.py:343 -#: appTools/ToolProperties.py:345 +#: appTools/ToolProperties.py:342 appTools/ToolProperties.py:346 +#: appTools/ToolProperties.py:348 msgid "Inch" msgstr "Inch" -#: appTools/ToolProperties.py:339 appTools/ToolProperties.py:344 -#: appTools/ToolProperties.py:346 +#: appTools/ToolProperties.py:342 appTools/ToolProperties.py:347 +#: appTools/ToolProperties.py:349 msgid "Metric" msgstr "Metric" -#: appTools/ToolProperties.py:421 appTools/ToolProperties.py:486 +#: appTools/ToolProperties.py:422 appTools/ToolProperties.py:490 msgid "Drills number" msgstr "Drills number" -#: appTools/ToolProperties.py:422 appTools/ToolProperties.py:488 +#: appTools/ToolProperties.py:423 appTools/ToolProperties.py:492 msgid "Slots number" msgstr "Slots number" -#: appTools/ToolProperties.py:424 +#: appTools/ToolProperties.py:425 msgid "Drills total number:" msgstr "Drills total number:" -#: appTools/ToolProperties.py:425 +#: appTools/ToolProperties.py:426 msgid "Slots total number:" msgstr "Slots total number:" -#: appTools/ToolProperties.py:452 appTools/ToolProperties.py:455 -#: appTools/ToolProperties.py:458 appTools/ToolProperties.py:483 +#: appTools/ToolProperties.py:453 appTools/ToolProperties.py:456 +#: appTools/ToolProperties.py:459 appTools/ToolProperties.py:487 +#: appTools/ToolProperties.py:494 appTools/ToolProperties.py:497 msgid "Present" msgstr "Present" -#: appTools/ToolProperties.py:453 appTools/ToolProperties.py:484 +#: appTools/ToolProperties.py:454 appTools/ToolProperties.py:488 msgid "Solid Geometry" msgstr "Solid Geometry" -#: appTools/ToolProperties.py:456 +#: appTools/ToolProperties.py:457 appTools/ToolProperties.py:495 msgid "GCode Text" msgstr "GCode Text" -#: appTools/ToolProperties.py:459 +#: appTools/ToolProperties.py:460 appTools/ToolProperties.py:498 msgid "GCode Geometry" msgstr "GCode Geometry" -#: appTools/ToolProperties.py:462 -msgid "Data" -msgstr "Data" +#: appTools/ToolProperties.py:468 appTools/ToolProperties.py:541 +#, fuzzy +#| msgid "Tool Dia" +msgid "Tool Data" +msgstr "Tool Dia" -#: appTools/ToolProperties.py:495 +#: appTools/ToolProperties.py:505 msgid "Depth of Cut" msgstr "Depth of Cut" -#: appTools/ToolProperties.py:507 +#: appTools/ToolProperties.py:517 msgid "Clearance Height" msgstr "Clearance Height" -#: appTools/ToolProperties.py:539 +#: appTools/ToolProperties.py:555 msgid "Routing time" msgstr "Routing time" -#: appTools/ToolProperties.py:546 -msgid "Travelled distance" -msgstr "Travelled distance" - -#: appTools/ToolProperties.py:564 +#: appTools/ToolProperties.py:580 msgid "Width" msgstr "Width" -#: appTools/ToolProperties.py:570 appTools/ToolProperties.py:578 +#: appTools/ToolProperties.py:586 appTools/ToolProperties.py:594 msgid "Box Area" msgstr "Box Area" -#: appTools/ToolProperties.py:573 appTools/ToolProperties.py:581 +#: appTools/ToolProperties.py:589 appTools/ToolProperties.py:597 msgid "Convex_Hull Area" msgstr "Convex_Hull Area" -#: appTools/ToolProperties.py:588 appTools/ToolProperties.py:591 +#: appTools/ToolProperties.py:604 appTools/ToolProperties.py:607 msgid "Copper Area" msgstr "Copper Area" -#: appTools/ToolPunchGerber.py:30 appTools/ToolPunchGerber.py:323 -msgid "Punch Gerber" -msgstr "Punch Gerber" - -#: appTools/ToolPunchGerber.py:65 -msgid "Gerber into which to punch holes" -msgstr "Gerber into which to punch holes" - -#: appTools/ToolPunchGerber.py:85 -msgid "ALL" -msgstr "ALL" - -#: appTools/ToolPunchGerber.py:166 -msgid "" -"Remove the geometry of Excellon from the Gerber to create the holes in pads." -msgstr "" -"Remove the geometry of Excellon from the Gerber to create the holes in pads." - -#: appTools/ToolPunchGerber.py:325 -msgid "" -"Create a Gerber object from the selected object, within\n" -"the specified box." -msgstr "" -"Create a Gerber object from the selected object, within\n" -"the specified box." - -#: appTools/ToolPunchGerber.py:425 +#: appTools/ToolPunchGerber.py:101 msgid "Punch Tool" msgstr "Punch Tool" -#: appTools/ToolPunchGerber.py:599 +#: appTools/ToolPunchGerber.py:275 msgid "The value of the fixed diameter is 0.0. Aborting." msgstr "The value of the fixed diameter is 0.0. Aborting." -#: appTools/ToolPunchGerber.py:602 +#: appTools/ToolPunchGerber.py:278 msgid "" "Could not generate punched hole Gerber because the punch hole size is bigger " "than some of the apertures in the Gerber object." @@ -16086,7 +17385,7 @@ msgstr "" "Could not generate punched hole Gerber because the punch hole size is bigger " "than some of the apertures in the Gerber object." -#: appTools/ToolPunchGerber.py:665 +#: appTools/ToolPunchGerber.py:341 msgid "" "Could not generate punched hole Gerber because the newly created object " "geometry is the same as the one in the source object geometry..." @@ -16094,197 +17393,123 @@ msgstr "" "Could not generate punched hole Gerber because the newly created object " "geometry is the same as the one in the source object geometry..." -#: appTools/ToolQRCode.py:80 -msgid "Gerber Object to which the QRCode will be added." -msgstr "Gerber Object to which the QRCode will be added." +#: appTools/ToolPunchGerber.py:684 appTools/ToolPunchGerber.py:977 +msgid "Punch Gerber" +msgstr "Punch Gerber" -#: appTools/ToolQRCode.py:116 -msgid "The parameters used to shape the QRCode." -msgstr "The parameters used to shape the QRCode." +#: appTools/ToolPunchGerber.py:719 +msgid "Gerber into which to punch holes" +msgstr "Gerber into which to punch holes" -#: appTools/ToolQRCode.py:216 -msgid "Export QRCode" -msgstr "Export QRCode" +#: appTools/ToolPunchGerber.py:739 +msgid "ALL" +msgstr "ALL" -#: appTools/ToolQRCode.py:218 +#: appTools/ToolPunchGerber.py:820 msgid "" -"Show a set of controls allowing to export the QRCode\n" -"to a SVG file or an PNG file." +"Remove the geometry of Excellon from the Gerber to create the holes in pads." msgstr "" -"Show a set of controls allowing to export the QRCode\n" -"to a SVG file or an PNG file." +"Remove the geometry of Excellon from the Gerber to create the holes in pads." -#: appTools/ToolQRCode.py:257 -msgid "Transparent back color" -msgstr "Transparent back color" +#: appTools/ToolPunchGerber.py:979 +msgid "" +"Create a Gerber object from the selected object, within\n" +"the specified box." +msgstr "" +"Create a Gerber object from the selected object, within\n" +"the specified box." -#: appTools/ToolQRCode.py:282 -msgid "Export QRCode SVG" -msgstr "Export QRCode SVG" - -#: appTools/ToolQRCode.py:284 -msgid "Export a SVG file with the QRCode content." -msgstr "Export a SVG file with the QRCode content." - -#: appTools/ToolQRCode.py:295 -msgid "Export QRCode PNG" -msgstr "Export QRCode PNG" - -#: appTools/ToolQRCode.py:297 -msgid "Export a PNG image file with the QRCode content." -msgstr "Export a PNG image file with the QRCode content." - -#: appTools/ToolQRCode.py:308 -msgid "Insert QRCode" -msgstr "Insert QRCode" - -#: appTools/ToolQRCode.py:310 -msgid "Create the QRCode object." -msgstr "Create the QRCode object." - -#: appTools/ToolQRCode.py:424 appTools/ToolQRCode.py:759 -#: appTools/ToolQRCode.py:808 +#: appTools/ToolQRCode.py:147 appTools/ToolQRCode.py:482 +#: appTools/ToolQRCode.py:531 msgid "Cancelled. There is no QRCode Data in the text box." msgstr "Cancelled. There is no QRCode Data in the text box." -#: appTools/ToolQRCode.py:443 +#: appTools/ToolQRCode.py:166 msgid "Generating QRCode geometry" msgstr "Generating QRCode geometry" -#: appTools/ToolQRCode.py:483 +#: appTools/ToolQRCode.py:206 msgid "Click on the Destination point ..." msgstr "Click on the Destination point ..." -#: appTools/ToolQRCode.py:598 +#: appTools/ToolQRCode.py:321 msgid "QRCode Tool done." msgstr "QRCode Tool done." -#: appTools/ToolQRCode.py:791 appTools/ToolQRCode.py:795 +#: appTools/ToolQRCode.py:514 appTools/ToolQRCode.py:518 msgid "Export PNG" msgstr "Export PNG" -#: appTools/ToolQRCode.py:838 appTools/ToolQRCode.py:842 app_Main.py:6959 -#: app_Main.py:6963 +#: appTools/ToolQRCode.py:561 appTools/ToolQRCode.py:565 app_Main.py:7330 +#: app_Main.py:7334 msgid "Export SVG" msgstr "Export SVG" -#: appTools/ToolRulesCheck.py:33 -msgid "Check Rules" -msgstr "Check Rules" +#: appTools/ToolQRCode.py:658 +msgid "Gerber Object to which the QRCode will be added." +msgstr "Gerber Object to which the QRCode will be added." -#: appTools/ToolRulesCheck.py:63 -msgid "Gerber objects for which to check rules." -msgstr "Gerber objects for which to check rules." +#: appTools/ToolQRCode.py:694 +msgid "The parameters used to shape the QRCode." +msgstr "The parameters used to shape the QRCode." -#: appTools/ToolRulesCheck.py:78 -msgid "Top" -msgstr "Top" +#: appTools/ToolQRCode.py:794 +msgid "Export QRCode" +msgstr "Export QRCode" -#: appTools/ToolRulesCheck.py:80 -msgid "The Top Gerber Copper object for which rules are checked." -msgstr "The Top Gerber Copper object for which rules are checked." - -#: appTools/ToolRulesCheck.py:96 -msgid "Bottom" -msgstr "Bottom" - -#: appTools/ToolRulesCheck.py:98 -msgid "The Bottom Gerber Copper object for which rules are checked." -msgstr "The Bottom Gerber Copper object for which rules are checked." - -#: appTools/ToolRulesCheck.py:114 -msgid "SM Top" -msgstr "SM Top" - -#: appTools/ToolRulesCheck.py:116 -msgid "The Top Gerber Solder Mask object for which rules are checked." -msgstr "The Top Gerber Solder Mask object for which rules are checked." - -#: appTools/ToolRulesCheck.py:132 -msgid "SM Bottom" -msgstr "SM Bottom" - -#: appTools/ToolRulesCheck.py:134 -msgid "The Bottom Gerber Solder Mask object for which rules are checked." -msgstr "The Bottom Gerber Solder Mask object for which rules are checked." - -#: appTools/ToolRulesCheck.py:150 -msgid "Silk Top" -msgstr "Silk Top" - -#: appTools/ToolRulesCheck.py:152 -msgid "The Top Gerber Silkscreen object for which rules are checked." -msgstr "The Top Gerber Silkscreen object for which rules are checked." - -#: appTools/ToolRulesCheck.py:168 -msgid "Silk Bottom" -msgstr "Silk Bottom" - -#: appTools/ToolRulesCheck.py:170 -msgid "The Bottom Gerber Silkscreen object for which rules are checked." -msgstr "The Bottom Gerber Silkscreen object for which rules are checked." - -#: appTools/ToolRulesCheck.py:188 -msgid "The Gerber Outline (Cutout) object for which rules are checked." -msgstr "The Gerber Outline (Cutout) object for which rules are checked." - -#: appTools/ToolRulesCheck.py:201 -msgid "Excellon objects for which to check rules." -msgstr "Excellon objects for which to check rules." - -#: appTools/ToolRulesCheck.py:213 -msgid "Excellon 1" -msgstr "Excellon 1" - -#: appTools/ToolRulesCheck.py:215 +#: appTools/ToolQRCode.py:796 msgid "" -"Excellon object for which to check rules.\n" -"Holds the plated holes or a general Excellon file content." +"Show a set of controls allowing to export the QRCode\n" +"to a SVG file or an PNG file." msgstr "" -"Excellon object for which to check rules.\n" -"Holds the plated holes or a general Excellon file content." +"Show a set of controls allowing to export the QRCode\n" +"to a SVG file or an PNG file." -#: appTools/ToolRulesCheck.py:232 -msgid "Excellon 2" -msgstr "Excellon 2" +#: appTools/ToolQRCode.py:835 +msgid "Transparent back color" +msgstr "Transparent back color" -#: appTools/ToolRulesCheck.py:234 -msgid "" -"Excellon object for which to check rules.\n" -"Holds the non-plated holes." -msgstr "" -"Excellon object for which to check rules.\n" -"Holds the non-plated holes." +#: appTools/ToolQRCode.py:860 +msgid "Export QRCode SVG" +msgstr "Export QRCode SVG" -#: appTools/ToolRulesCheck.py:247 -msgid "All Rules" -msgstr "All Rules" +#: appTools/ToolQRCode.py:862 +msgid "Export a SVG file with the QRCode content." +msgstr "Export a SVG file with the QRCode content." -#: appTools/ToolRulesCheck.py:249 -msgid "This check/uncheck all the rules below." -msgstr "This check/uncheck all the rules below." +#: appTools/ToolQRCode.py:873 +msgid "Export QRCode PNG" +msgstr "Export QRCode PNG" -#: appTools/ToolRulesCheck.py:499 -msgid "Run Rules Check" -msgstr "Run Rules Check" +#: appTools/ToolQRCode.py:875 +msgid "Export a PNG image file with the QRCode content." +msgstr "Export a PNG image file with the QRCode content." -#: appTools/ToolRulesCheck.py:1158 appTools/ToolRulesCheck.py:1218 -#: appTools/ToolRulesCheck.py:1255 appTools/ToolRulesCheck.py:1327 -#: appTools/ToolRulesCheck.py:1381 appTools/ToolRulesCheck.py:1419 -#: appTools/ToolRulesCheck.py:1484 +#: appTools/ToolQRCode.py:886 +msgid "Insert QRCode" +msgstr "Insert QRCode" + +#: appTools/ToolQRCode.py:888 +msgid "Create the QRCode object." +msgstr "Create the QRCode object." + +#: appTools/ToolRulesCheck.py:657 appTools/ToolRulesCheck.py:717 +#: appTools/ToolRulesCheck.py:754 appTools/ToolRulesCheck.py:826 +#: appTools/ToolRulesCheck.py:880 appTools/ToolRulesCheck.py:918 +#: appTools/ToolRulesCheck.py:983 msgid "Value is not valid." msgstr "Value is not valid." -#: appTools/ToolRulesCheck.py:1172 +#: appTools/ToolRulesCheck.py:671 msgid "TOP -> Copper to Copper clearance" msgstr "TOP -> Copper to Copper clearance" -#: appTools/ToolRulesCheck.py:1183 +#: appTools/ToolRulesCheck.py:682 msgid "BOTTOM -> Copper to Copper clearance" msgstr "BOTTOM -> Copper to Copper clearance" -#: appTools/ToolRulesCheck.py:1188 appTools/ToolRulesCheck.py:1282 -#: appTools/ToolRulesCheck.py:1446 +#: appTools/ToolRulesCheck.py:687 appTools/ToolRulesCheck.py:781 +#: appTools/ToolRulesCheck.py:945 msgid "" "At least one Gerber object has to be selected for this rule but none is " "selected." @@ -16292,13 +17517,13 @@ msgstr "" "At least one Gerber object has to be selected for this rule but none is " "selected." -#: appTools/ToolRulesCheck.py:1224 +#: appTools/ToolRulesCheck.py:723 msgid "" "One of the copper Gerber objects or the Outline Gerber object is not valid." msgstr "" "One of the copper Gerber objects or the Outline Gerber object is not valid." -#: appTools/ToolRulesCheck.py:1237 appTools/ToolRulesCheck.py:1401 +#: appTools/ToolRulesCheck.py:736 appTools/ToolRulesCheck.py:900 msgid "" "Outline Gerber object presence is mandatory for this rule but it is not " "selected." @@ -16306,31 +17531,31 @@ msgstr "" "Outline Gerber object presence is mandatory for this rule but it is not " "selected." -#: appTools/ToolRulesCheck.py:1254 appTools/ToolRulesCheck.py:1281 +#: appTools/ToolRulesCheck.py:753 appTools/ToolRulesCheck.py:780 msgid "Silk to Silk clearance" msgstr "Silk to Silk clearance" -#: appTools/ToolRulesCheck.py:1267 +#: appTools/ToolRulesCheck.py:766 msgid "TOP -> Silk to Silk clearance" msgstr "TOP -> Silk to Silk clearance" -#: appTools/ToolRulesCheck.py:1277 +#: appTools/ToolRulesCheck.py:776 msgid "BOTTOM -> Silk to Silk clearance" msgstr "BOTTOM -> Silk to Silk clearance" -#: appTools/ToolRulesCheck.py:1333 +#: appTools/ToolRulesCheck.py:832 msgid "One or more of the Gerber objects is not valid." msgstr "One or more of the Gerber objects is not valid." -#: appTools/ToolRulesCheck.py:1341 +#: appTools/ToolRulesCheck.py:840 msgid "TOP -> Silk to Solder Mask Clearance" msgstr "TOP -> Silk to Solder Mask Clearance" -#: appTools/ToolRulesCheck.py:1347 +#: appTools/ToolRulesCheck.py:846 msgid "BOTTOM -> Silk to Solder Mask Clearance" msgstr "BOTTOM -> Silk to Solder Mask Clearance" -#: appTools/ToolRulesCheck.py:1351 +#: appTools/ToolRulesCheck.py:850 msgid "" "Both Silk and Solder Mask Gerber objects has to be either both Top or both " "Bottom." @@ -16338,47 +17563,147 @@ msgstr "" "Both Silk and Solder Mask Gerber objects has to be either both Top or both " "Bottom." -#: appTools/ToolRulesCheck.py:1387 +#: appTools/ToolRulesCheck.py:886 msgid "" "One of the Silk Gerber objects or the Outline Gerber object is not valid." msgstr "" "One of the Silk Gerber objects or the Outline Gerber object is not valid." -#: appTools/ToolRulesCheck.py:1431 +#: appTools/ToolRulesCheck.py:930 msgid "TOP -> Minimum Solder Mask Sliver" msgstr "TOP -> Minimum Solder Mask Sliver" -#: appTools/ToolRulesCheck.py:1441 +#: appTools/ToolRulesCheck.py:940 msgid "BOTTOM -> Minimum Solder Mask Sliver" msgstr "BOTTOM -> Minimum Solder Mask Sliver" -#: appTools/ToolRulesCheck.py:1490 +#: appTools/ToolRulesCheck.py:989 msgid "One of the Copper Gerber objects or the Excellon objects is not valid." msgstr "One of the Copper Gerber objects or the Excellon objects is not valid." -#: appTools/ToolRulesCheck.py:1506 +#: appTools/ToolRulesCheck.py:1005 msgid "" "Excellon object presence is mandatory for this rule but none is selected." msgstr "" "Excellon object presence is mandatory for this rule but none is selected." -#: appTools/ToolRulesCheck.py:1579 appTools/ToolRulesCheck.py:1592 -#: appTools/ToolRulesCheck.py:1603 appTools/ToolRulesCheck.py:1616 +#: appTools/ToolRulesCheck.py:1078 appTools/ToolRulesCheck.py:1091 +#: appTools/ToolRulesCheck.py:1102 appTools/ToolRulesCheck.py:1115 msgid "STATUS" msgstr "STATUS" -#: appTools/ToolRulesCheck.py:1582 appTools/ToolRulesCheck.py:1606 +#: appTools/ToolRulesCheck.py:1081 appTools/ToolRulesCheck.py:1105 msgid "FAILED" msgstr "FAILED" -#: appTools/ToolRulesCheck.py:1595 appTools/ToolRulesCheck.py:1619 +#: appTools/ToolRulesCheck.py:1094 appTools/ToolRulesCheck.py:1118 msgid "PASSED" msgstr "PASSED" -#: appTools/ToolRulesCheck.py:1596 appTools/ToolRulesCheck.py:1620 +#: appTools/ToolRulesCheck.py:1095 appTools/ToolRulesCheck.py:1119 msgid "Violations: There are no violations for the current rule." msgstr "Violations: There are no violations for the current rule." +#: appTools/ToolRulesCheck.py:1137 +msgid "Check Rules" +msgstr "Check Rules" + +#: appTools/ToolRulesCheck.py:1165 +msgid "Gerber objects for which to check rules." +msgstr "Gerber objects for which to check rules." + +#: appTools/ToolRulesCheck.py:1180 +msgid "Top" +msgstr "Top" + +#: appTools/ToolRulesCheck.py:1182 +msgid "The Top Gerber Copper object for which rules are checked." +msgstr "The Top Gerber Copper object for which rules are checked." + +#: appTools/ToolRulesCheck.py:1198 +msgid "Bottom" +msgstr "Bottom" + +#: appTools/ToolRulesCheck.py:1200 +msgid "The Bottom Gerber Copper object for which rules are checked." +msgstr "The Bottom Gerber Copper object for which rules are checked." + +#: appTools/ToolRulesCheck.py:1216 +msgid "SM Top" +msgstr "SM Top" + +#: appTools/ToolRulesCheck.py:1218 +msgid "The Top Gerber Solder Mask object for which rules are checked." +msgstr "The Top Gerber Solder Mask object for which rules are checked." + +#: appTools/ToolRulesCheck.py:1234 +msgid "SM Bottom" +msgstr "SM Bottom" + +#: appTools/ToolRulesCheck.py:1236 +msgid "The Bottom Gerber Solder Mask object for which rules are checked." +msgstr "The Bottom Gerber Solder Mask object for which rules are checked." + +#: appTools/ToolRulesCheck.py:1252 +msgid "Silk Top" +msgstr "Silk Top" + +#: appTools/ToolRulesCheck.py:1254 +msgid "The Top Gerber Silkscreen object for which rules are checked." +msgstr "The Top Gerber Silkscreen object for which rules are checked." + +#: appTools/ToolRulesCheck.py:1270 +msgid "Silk Bottom" +msgstr "Silk Bottom" + +#: appTools/ToolRulesCheck.py:1272 +msgid "The Bottom Gerber Silkscreen object for which rules are checked." +msgstr "The Bottom Gerber Silkscreen object for which rules are checked." + +#: appTools/ToolRulesCheck.py:1290 +msgid "The Gerber Outline (Cutout) object for which rules are checked." +msgstr "The Gerber Outline (Cutout) object for which rules are checked." + +#: appTools/ToolRulesCheck.py:1303 +msgid "Excellon objects for which to check rules." +msgstr "Excellon objects for which to check rules." + +#: appTools/ToolRulesCheck.py:1315 +msgid "Excellon 1" +msgstr "Excellon 1" + +#: appTools/ToolRulesCheck.py:1317 +msgid "" +"Excellon object for which to check rules.\n" +"Holds the plated holes or a general Excellon file content." +msgstr "" +"Excellon object for which to check rules.\n" +"Holds the plated holes or a general Excellon file content." + +#: appTools/ToolRulesCheck.py:1334 +msgid "Excellon 2" +msgstr "Excellon 2" + +#: appTools/ToolRulesCheck.py:1336 +msgid "" +"Excellon object for which to check rules.\n" +"Holds the non-plated holes." +msgstr "" +"Excellon object for which to check rules.\n" +"Holds the non-plated holes." + +#: appTools/ToolRulesCheck.py:1349 +msgid "All Rules" +msgstr "All Rules" + +#: appTools/ToolRulesCheck.py:1351 +msgid "This check/uncheck all the rules below." +msgstr "This check/uncheck all the rules below." + +#: appTools/ToolRulesCheck.py:1601 +msgid "Run Rules Check" +msgstr "Run Rules Check" + #: appTools/ToolShell.py:59 msgid "Clear the text." msgstr "Clear the text." @@ -16387,503 +17712,511 @@ msgstr "Clear the text." msgid "...processing..." msgstr "...processing..." -#: appTools/ToolSolderPaste.py:37 -msgid "Solder Paste Tool" -msgstr "Solder Paste Tool" +#: appTools/ToolSolderPaste.py:459 +msgid "Please enter a tool diameter to add, in Float format." +msgstr "Please enter a tool diameter to add, in Float format." -#: appTools/ToolSolderPaste.py:68 -msgid "Gerber Solderpaste object." -msgstr "Gerber Solderpaste object." - -#: appTools/ToolSolderPaste.py:81 -msgid "" -"Tools pool from which the algorithm\n" -"will pick the ones used for dispensing solder paste." -msgstr "" -"Tools pool from which the algorithm\n" -"will pick the ones used for dispensing solder paste." - -#: appTools/ToolSolderPaste.py:96 -msgid "" -"This is the Tool Number.\n" -"The solder dispensing will start with the tool with the biggest \n" -"diameter, continuing until there are no more Nozzle tools.\n" -"If there are no longer tools but there are still pads not covered\n" -" with solder paste, the app will issue a warning message box." -msgstr "" -"This is the Tool Number.\n" -"The solder dispensing will start with the tool with the biggest \n" -"diameter, continuing until there are no more Nozzle tools.\n" -"If there are no longer tools but there are still pads not covered\n" -" with solder paste, the app will issue a warning message box." - -#: appTools/ToolSolderPaste.py:103 -msgid "" -"Nozzle tool Diameter. It's value (in current FlatCAM units)\n" -"is the width of the solder paste dispensed." -msgstr "" -"Nozzle tool Diameter. It's value (in current FlatCAM units)\n" -"is the width of the solder paste dispensed." - -#: appTools/ToolSolderPaste.py:110 -msgid "New Nozzle Tool" -msgstr "New Nozzle Tool" - -#: appTools/ToolSolderPaste.py:129 -msgid "" -"Add a new nozzle tool to the Tool Table\n" -"with the diameter specified above." -msgstr "" -"Add a new nozzle tool to the Tool Table\n" -"with the diameter specified above." - -#: appTools/ToolSolderPaste.py:151 -msgid "STEP 1" -msgstr "STEP 1" - -#: appTools/ToolSolderPaste.py:153 -msgid "" -"First step is to select a number of nozzle tools for usage\n" -"and then optionally modify the GCode parameters below." -msgstr "" -"First step is to select a number of nozzle tools for usage\n" -"and then optionally modify the GCode parameters below." - -#: appTools/ToolSolderPaste.py:156 -msgid "" -"Select tools.\n" -"Modify parameters." -msgstr "" -"Select tools.\n" -"Modify parameters." - -#: appTools/ToolSolderPaste.py:276 -msgid "" -"Feedrate (speed) while moving up vertically\n" -" to Dispense position (on Z plane)." -msgstr "" -"Feedrate (speed) while moving up vertically\n" -" to Dispense position (on Z plane)." - -#: appTools/ToolSolderPaste.py:346 -msgid "" -"Generate GCode for Solder Paste dispensing\n" -"on PCB pads." -msgstr "" -"Generate GCode for Solder Paste dispensing\n" -"on PCB pads." - -#: appTools/ToolSolderPaste.py:367 -msgid "STEP 2" -msgstr "STEP 2" - -#: appTools/ToolSolderPaste.py:369 -msgid "" -"Second step is to create a solder paste dispensing\n" -"geometry out of an Solder Paste Mask Gerber file." -msgstr "" -"Second step is to create a solder paste dispensing\n" -"geometry out of an Solder Paste Mask Gerber file." - -#: appTools/ToolSolderPaste.py:375 -msgid "Generate solder paste dispensing geometry." -msgstr "Generate solder paste dispensing geometry." - -#: appTools/ToolSolderPaste.py:398 -msgid "Geo Result" -msgstr "Geo Result" - -#: appTools/ToolSolderPaste.py:400 -msgid "" -"Geometry Solder Paste object.\n" -"The name of the object has to end in:\n" -"'_solderpaste' as a protection." -msgstr "" -"Geometry Solder Paste object.\n" -"The name of the object has to end in:\n" -"'_solderpaste' as a protection." - -#: appTools/ToolSolderPaste.py:409 -msgid "STEP 3" -msgstr "STEP 3" - -#: appTools/ToolSolderPaste.py:411 -msgid "" -"Third step is to select a solder paste dispensing geometry,\n" -"and then generate a CNCJob object.\n" -"\n" -"REMEMBER: if you want to create a CNCJob with new parameters,\n" -"first you need to generate a geometry with those new params,\n" -"and only after that you can generate an updated CNCJob." -msgstr "" -"Third step is to select a solder paste dispensing geometry,\n" -"and then generate a CNCJob object.\n" -"\n" -"REMEMBER: if you want to create a CNCJob with new parameters,\n" -"first you need to generate a geometry with those new params,\n" -"and only after that you can generate an updated CNCJob." - -#: appTools/ToolSolderPaste.py:432 -msgid "CNC Result" -msgstr "CNC Result" - -#: appTools/ToolSolderPaste.py:434 -msgid "" -"CNCJob Solder paste object.\n" -"In order to enable the GCode save section,\n" -"the name of the object has to end in:\n" -"'_solderpaste' as a protection." -msgstr "" -"CNCJob Solder paste object.\n" -"In order to enable the GCode save section,\n" -"the name of the object has to end in:\n" -"'_solderpaste' as a protection." - -#: appTools/ToolSolderPaste.py:444 -msgid "View GCode" -msgstr "View GCode" - -#: appTools/ToolSolderPaste.py:446 -msgid "" -"View the generated GCode for Solder Paste dispensing\n" -"on PCB pads." -msgstr "" -"View the generated GCode for Solder Paste dispensing\n" -"on PCB pads." - -#: appTools/ToolSolderPaste.py:456 -msgid "Save GCode" -msgstr "Save GCode" - -#: appTools/ToolSolderPaste.py:458 -msgid "" -"Save the generated GCode for Solder Paste dispensing\n" -"on PCB pads, to a file." -msgstr "" -"Save the generated GCode for Solder Paste dispensing\n" -"on PCB pads, to a file." - -#: appTools/ToolSolderPaste.py:468 -msgid "STEP 4" -msgstr "STEP 4" - -#: appTools/ToolSolderPaste.py:470 -msgid "" -"Fourth step (and last) is to select a CNCJob made from \n" -"a solder paste dispensing geometry, and then view/save it's GCode." -msgstr "" -"Fourth step (and last) is to select a CNCJob made from \n" -"a solder paste dispensing geometry, and then view/save it's GCode." - -#: appTools/ToolSolderPaste.py:930 +#: appTools/ToolSolderPaste.py:493 msgid "New Nozzle tool added to Tool Table." msgstr "New Nozzle tool added to Tool Table." -#: appTools/ToolSolderPaste.py:973 +#: appTools/ToolSolderPaste.py:535 msgid "Nozzle tool from Tool Table was edited." msgstr "Nozzle tool from Tool Table was edited." -#: appTools/ToolSolderPaste.py:1032 +#: appTools/ToolSolderPaste.py:593 msgid "Delete failed. Select a Nozzle tool to delete." msgstr "Delete failed. Select a Nozzle tool to delete." -#: appTools/ToolSolderPaste.py:1038 +#: appTools/ToolSolderPaste.py:598 msgid "Nozzle tool(s) deleted from Tool Table." msgstr "Nozzle tool(s) deleted from Tool Table." -#: appTools/ToolSolderPaste.py:1094 +#: appTools/ToolSolderPaste.py:652 msgid "No SolderPaste mask Gerber object loaded." msgstr "No SolderPaste mask Gerber object loaded." -#: appTools/ToolSolderPaste.py:1112 +#: appTools/ToolSolderPaste.py:670 msgid "Creating Solder Paste dispensing geometry." msgstr "Creating Solder Paste dispensing geometry." -#: appTools/ToolSolderPaste.py:1125 +#: appTools/ToolSolderPaste.py:683 msgid "No Nozzle tools in the tool table." msgstr "No Nozzle tools in the tool table." -#: appTools/ToolSolderPaste.py:1251 +#: appTools/ToolSolderPaste.py:809 msgid "Cancelled. Empty file, it has no geometry..." msgstr "Cancelled. Empty file, it has no geometry..." -#: appTools/ToolSolderPaste.py:1254 +#: appTools/ToolSolderPaste.py:812 msgid "Solder Paste geometry generated successfully" msgstr "Solder Paste geometry generated successfully" -#: appTools/ToolSolderPaste.py:1261 +#: appTools/ToolSolderPaste.py:819 msgid "Some or all pads have no solder due of inadequate nozzle diameters..." msgstr "Some or all pads have no solder due of inadequate nozzle diameters..." -#: appTools/ToolSolderPaste.py:1275 +#: appTools/ToolSolderPaste.py:833 msgid "Generating Solder Paste dispensing geometry..." msgstr "Generating Solder Paste dispensing geometry..." -#: appTools/ToolSolderPaste.py:1295 +#: appTools/ToolSolderPaste.py:852 msgid "There is no Geometry object available." msgstr "There is no Geometry object available." -#: appTools/ToolSolderPaste.py:1300 +#: appTools/ToolSolderPaste.py:857 msgid "This Geometry can't be processed. NOT a solder_paste_tool geometry." msgstr "This Geometry can't be processed. NOT a solder_paste_tool geometry." -#: appTools/ToolSolderPaste.py:1336 +#: appTools/ToolSolderPaste.py:893 msgid "An internal error has ocurred. See shell.\n" msgstr "An internal error has ocurred. See shell.\n" -#: appTools/ToolSolderPaste.py:1401 +#: appTools/ToolSolderPaste.py:962 msgid "ToolSolderPaste CNCjob created" msgstr "ToolSolderPaste CNCjob created" -#: appTools/ToolSolderPaste.py:1420 +#: appTools/ToolSolderPaste.py:981 msgid "SP GCode Editor" msgstr "SP GCode Editor" -#: appTools/ToolSolderPaste.py:1432 appTools/ToolSolderPaste.py:1437 -#: appTools/ToolSolderPaste.py:1492 +#: appTools/ToolSolderPaste.py:993 appTools/ToolSolderPaste.py:998 +#: appTools/ToolSolderPaste.py:1047 msgid "" "This CNCJob object can't be processed. NOT a solder_paste_tool CNCJob object." msgstr "" "This CNCJob object can't be processed. NOT a solder_paste_tool CNCJob object." -#: appTools/ToolSolderPaste.py:1462 +#: appTools/ToolSolderPaste.py:1022 msgid "No Gcode in the object" msgstr "No Gcode in the object" -#: appTools/ToolSolderPaste.py:1502 +#: appTools/ToolSolderPaste.py:1057 msgid "Export GCode ..." msgstr "Export GCode ..." -#: appTools/ToolSolderPaste.py:1550 +#: appTools/ToolSolderPaste.py:1104 msgid "Solder paste dispenser GCode file saved to" msgstr "Solder paste dispenser GCode file saved to" -#: appTools/ToolSub.py:83 +#: appTools/ToolSolderPaste.py:1114 +msgid "Solder Paste Tool" +msgstr "Solder Paste Tool" + +#: appTools/ToolSolderPaste.py:1144 +msgid "Gerber Solderpaste object." +msgstr "Gerber Solderpaste object." + +#: appTools/ToolSolderPaste.py:1157 msgid "" -"Gerber object from which to subtract\n" -"the subtractor Gerber object." +"Tools pool from which the algorithm\n" +"will pick the ones used for dispensing solder paste." msgstr "" -"Gerber object from which to subtract\n" -"the subtractor Gerber object." +"Tools pool from which the algorithm\n" +"will pick the ones used for dispensing solder paste." -#: appTools/ToolSub.py:96 appTools/ToolSub.py:151 -msgid "Subtractor" -msgstr "Subtractor" - -#: appTools/ToolSub.py:98 +#: appTools/ToolSolderPaste.py:1172 msgid "" -"Gerber object that will be subtracted\n" -"from the target Gerber object." +"This is the Tool Number.\n" +"The solder dispensing will start with the tool with the biggest \n" +"diameter, continuing until there are no more Nozzle tools.\n" +"If there are no longer tools but there are still pads not covered\n" +" with solder paste, the app will issue a warning message box." msgstr "" -"Gerber object that will be subtracted\n" -"from the target Gerber object." +"This is the Tool Number.\n" +"The solder dispensing will start with the tool with the biggest \n" +"diameter, continuing until there are no more Nozzle tools.\n" +"If there are no longer tools but there are still pads not covered\n" +" with solder paste, the app will issue a warning message box." -#: appTools/ToolSub.py:105 -msgid "Subtract Gerber" -msgstr "Subtract Gerber" - -#: appTools/ToolSub.py:107 +#: appTools/ToolSolderPaste.py:1179 msgid "" -"Will remove the area occupied by the subtractor\n" -"Gerber from the Target Gerber.\n" -"Can be used to remove the overlapping silkscreen\n" -"over the soldermask." +"Nozzle tool Diameter. It's value (in current FlatCAM units)\n" +"is the width of the solder paste dispensed." msgstr "" -"Will remove the area occupied by the subtractor\n" -"Gerber from the Target Gerber.\n" -"Can be used to remove the overlapping silkscreen\n" -"over the soldermask." +"Nozzle tool Diameter. It's value (in current FlatCAM units)\n" +"is the width of the solder paste dispensed." -#: appTools/ToolSub.py:138 +#: appTools/ToolSolderPaste.py:1186 +msgid "New Nozzle Tool" +msgstr "New Nozzle Tool" + +#: appTools/ToolSolderPaste.py:1205 msgid "" -"Geometry object from which to subtract\n" -"the subtractor Geometry object." +"Add a new nozzle tool to the Tool Table\n" +"with the diameter specified above." msgstr "" -"Geometry object from which to subtract\n" -"the subtractor Geometry object." +"Add a new nozzle tool to the Tool Table\n" +"with the diameter specified above." -#: appTools/ToolSub.py:153 +#: appTools/ToolSolderPaste.py:1227 +msgid "STEP 1" +msgstr "STEP 1" + +#: appTools/ToolSolderPaste.py:1229 msgid "" -"Geometry object that will be subtracted\n" -"from the target Geometry object." +"First step is to select a number of nozzle tools for usage\n" +"and then optionally modify the GCode parameters below." msgstr "" -"Geometry object that will be subtracted\n" -"from the target Geometry object." +"First step is to select a number of nozzle tools for usage\n" +"and then optionally modify the GCode parameters below." -#: appTools/ToolSub.py:161 +#: appTools/ToolSolderPaste.py:1232 msgid "" -"Checking this will close the paths cut by the Geometry subtractor object." +"Select tools.\n" +"Modify parameters." msgstr "" -"Checking this will close the paths cut by the Geometry subtractor object." +"Select tools.\n" +"Modify parameters." -#: appTools/ToolSub.py:164 -msgid "Subtract Geometry" -msgstr "Subtract Geometry" - -#: appTools/ToolSub.py:166 +#: appTools/ToolSolderPaste.py:1352 msgid "" -"Will remove the area occupied by the subtractor\n" -"Geometry from the Target Geometry." +"Feedrate (speed) while moving up vertically\n" +" to Dispense position (on Z plane)." msgstr "" -"Will remove the area occupied by the subtractor\n" -"Geometry from the Target Geometry." +"Feedrate (speed) while moving up vertically\n" +" to Dispense position (on Z plane)." -#: appTools/ToolSub.py:264 +#: appTools/ToolSolderPaste.py:1422 +msgid "" +"Generate GCode for Solder Paste dispensing\n" +"on PCB pads." +msgstr "" +"Generate GCode for Solder Paste dispensing\n" +"on PCB pads." + +#: appTools/ToolSolderPaste.py:1443 +msgid "STEP 2" +msgstr "STEP 2" + +#: appTools/ToolSolderPaste.py:1445 +msgid "" +"Second step is to create a solder paste dispensing\n" +"geometry out of an Solder Paste Mask Gerber file." +msgstr "" +"Second step is to create a solder paste dispensing\n" +"geometry out of an Solder Paste Mask Gerber file." + +#: appTools/ToolSolderPaste.py:1449 +msgid "Generate Geo" +msgstr "Generate Geo" + +#: appTools/ToolSolderPaste.py:1451 +msgid "Generate solder paste dispensing geometry." +msgstr "Generate solder paste dispensing geometry." + +#: appTools/ToolSolderPaste.py:1474 +msgid "Geo Result" +msgstr "Geo Result" + +#: appTools/ToolSolderPaste.py:1476 +msgid "" +"Geometry Solder Paste object.\n" +"The name of the object has to end in:\n" +"'_solderpaste' as a protection." +msgstr "" +"Geometry Solder Paste object.\n" +"The name of the object has to end in:\n" +"'_solderpaste' as a protection." + +#: appTools/ToolSolderPaste.py:1485 +msgid "STEP 3" +msgstr "STEP 3" + +#: appTools/ToolSolderPaste.py:1487 +msgid "" +"Third step is to select a solder paste dispensing geometry,\n" +"and then generate a CNCJob object.\n" +"\n" +"REMEMBER: if you want to create a CNCJob with new parameters,\n" +"first you need to generate a geometry with those new params,\n" +"and only after that you can generate an updated CNCJob." +msgstr "" +"Third step is to select a solder paste dispensing geometry,\n" +"and then generate a CNCJob object.\n" +"\n" +"REMEMBER: if you want to create a CNCJob with new parameters,\n" +"first you need to generate a geometry with those new params,\n" +"and only after that you can generate an updated CNCJob." + +#: appTools/ToolSolderPaste.py:1508 +msgid "CNC Result" +msgstr "CNC Result" + +#: appTools/ToolSolderPaste.py:1510 +msgid "" +"CNCJob Solder paste object.\n" +"In order to enable the GCode save section,\n" +"the name of the object has to end in:\n" +"'_solderpaste' as a protection." +msgstr "" +"CNCJob Solder paste object.\n" +"In order to enable the GCode save section,\n" +"the name of the object has to end in:\n" +"'_solderpaste' as a protection." + +#: appTools/ToolSolderPaste.py:1520 +msgid "View GCode" +msgstr "View GCode" + +#: appTools/ToolSolderPaste.py:1522 +msgid "" +"View the generated GCode for Solder Paste dispensing\n" +"on PCB pads." +msgstr "" +"View the generated GCode for Solder Paste dispensing\n" +"on PCB pads." + +#: appTools/ToolSolderPaste.py:1532 +msgid "Save GCode" +msgstr "Save GCode" + +#: appTools/ToolSolderPaste.py:1534 +msgid "" +"Save the generated GCode for Solder Paste dispensing\n" +"on PCB pads, to a file." +msgstr "" +"Save the generated GCode for Solder Paste dispensing\n" +"on PCB pads, to a file." + +#: appTools/ToolSolderPaste.py:1544 +msgid "STEP 4" +msgstr "STEP 4" + +#: appTools/ToolSolderPaste.py:1546 +msgid "" +"Fourth step (and last) is to select a CNCJob made from \n" +"a solder paste dispensing geometry, and then view/save it's GCode." +msgstr "" +"Fourth step (and last) is to select a CNCJob made from \n" +"a solder paste dispensing geometry, and then view/save it's GCode." + +#: appTools/ToolSub.py:126 msgid "Sub Tool" msgstr "Sub Tool" -#: appTools/ToolSub.py:285 appTools/ToolSub.py:490 +#: appTools/ToolSub.py:147 appTools/ToolSub.py:351 msgid "No Target object loaded." msgstr "No Target object loaded." -#: appTools/ToolSub.py:288 +#: appTools/ToolSub.py:150 msgid "Loading geometry from Gerber objects." msgstr "Loading geometry from Gerber objects." -#: appTools/ToolSub.py:300 appTools/ToolSub.py:505 +#: appTools/ToolSub.py:162 appTools/ToolSub.py:364 msgid "No Subtractor object loaded." msgstr "No Subtractor object loaded." -#: appTools/ToolSub.py:342 +#: appTools/ToolSub.py:204 msgid "Finished parsing geometry for aperture" msgstr "Finished parsing geometry for aperture" -#: appTools/ToolSub.py:344 +#: appTools/ToolSub.py:206 msgid "Subtraction aperture processing finished." msgstr "Subtraction aperture processing finished." -#: appTools/ToolSub.py:464 appTools/ToolSub.py:662 +#: appTools/ToolSub.py:326 appTools/ToolSub.py:515 msgid "Generating new object ..." msgstr "Generating new object ..." -#: appTools/ToolSub.py:467 appTools/ToolSub.py:666 appTools/ToolSub.py:745 +#: appTools/ToolSub.py:329 appTools/ToolSub.py:518 appTools/ToolSub.py:595 msgid "Generating new object failed." msgstr "Generating new object failed." -#: appTools/ToolSub.py:471 appTools/ToolSub.py:672 +#: appTools/ToolSub.py:333 appTools/ToolSub.py:523 msgid "Created" msgstr "Created" -#: appTools/ToolSub.py:519 +#: appTools/ToolSub.py:377 msgid "Currently, the Subtractor geometry cannot be of type Multigeo." msgstr "Currently, the Subtractor geometry cannot be of type Multigeo." -#: appTools/ToolSub.py:564 +#: appTools/ToolSub.py:417 msgid "Parsing solid_geometry ..." msgstr "Parsing solid_geometry ..." -#: appTools/ToolSub.py:566 +#: appTools/ToolSub.py:419 msgid "Parsing solid_geometry for tool" msgstr "Parsing solid_geometry for tool" -#: appTools/ToolTransform.py:26 -msgid "Object Transform" -msgstr "Object Transform" - -#: appTools/ToolTransform.py:116 +#: appTools/ToolSub.py:654 msgid "" -"The object used as reference.\n" -"The used point is the center of it's bounding box." +"Gerber object from which to subtract\n" +"the subtractor Gerber object." msgstr "" -"The object used as reference.\n" -"The used point is the center of it's bounding box." +"Gerber object from which to subtract\n" +"the subtractor Gerber object." -#: appTools/ToolTransform.py:728 +#: appTools/ToolSub.py:667 appTools/ToolSub.py:722 +msgid "Subtractor" +msgstr "Subtractor" + +#: appTools/ToolSub.py:669 +msgid "" +"Gerber object that will be subtracted\n" +"from the target Gerber object." +msgstr "" +"Gerber object that will be subtracted\n" +"from the target Gerber object." + +#: appTools/ToolSub.py:676 +msgid "Subtract Gerber" +msgstr "Subtract Gerber" + +#: appTools/ToolSub.py:678 +msgid "" +"Will remove the area occupied by the subtractor\n" +"Gerber from the Target Gerber.\n" +"Can be used to remove the overlapping silkscreen\n" +"over the soldermask." +msgstr "" +"Will remove the area occupied by the subtractor\n" +"Gerber from the Target Gerber.\n" +"Can be used to remove the overlapping silkscreen\n" +"over the soldermask." + +#: appTools/ToolSub.py:709 +msgid "" +"Geometry object from which to subtract\n" +"the subtractor Geometry object." +msgstr "" +"Geometry object from which to subtract\n" +"the subtractor Geometry object." + +#: appTools/ToolSub.py:724 +msgid "" +"Geometry object that will be subtracted\n" +"from the target Geometry object." +msgstr "" +"Geometry object that will be subtracted\n" +"from the target Geometry object." + +#: appTools/ToolSub.py:732 +msgid "" +"Checking this will close the paths cut by the Geometry subtractor object." +msgstr "" +"Checking this will close the paths cut by the Geometry subtractor object." + +#: appTools/ToolSub.py:735 +msgid "Subtract Geometry" +msgstr "Subtract Geometry" + +#: appTools/ToolSub.py:737 +msgid "" +"Will remove the area occupied by the subtractor\n" +"Geometry from the Target Geometry." +msgstr "" +"Will remove the area occupied by the subtractor\n" +"Geometry from the Target Geometry." + +#: appTools/ToolTransform.py:293 msgid "No object selected. Please Select an object to rotate!" msgstr "No object selected. Please Select an object to rotate!" -#: appTools/ToolTransform.py:736 +#: appTools/ToolTransform.py:301 msgid "CNCJob objects can't be rotated." msgstr "CNCJob objects can't be rotated." -#: appTools/ToolTransform.py:744 +#: appTools/ToolTransform.py:309 msgid "Rotate done" msgstr "Rotate done" -#: appTools/ToolTransform.py:747 appTools/ToolTransform.py:788 -#: appTools/ToolTransform.py:821 appTools/ToolTransform.py:849 +#: appTools/ToolTransform.py:312 appTools/ToolTransform.py:353 +#: appTools/ToolTransform.py:386 appTools/ToolTransform.py:414 msgid "Due of" msgstr "Due of" -#: appTools/ToolTransform.py:747 appTools/ToolTransform.py:788 -#: appTools/ToolTransform.py:821 appTools/ToolTransform.py:849 +#: appTools/ToolTransform.py:312 appTools/ToolTransform.py:353 +#: appTools/ToolTransform.py:386 appTools/ToolTransform.py:414 msgid "action was not executed." msgstr "action was not executed." -#: appTools/ToolTransform.py:754 +#: appTools/ToolTransform.py:319 msgid "No object selected. Please Select an object to flip" msgstr "No object selected. Please Select an object to flip" -#: appTools/ToolTransform.py:764 +#: appTools/ToolTransform.py:329 msgid "CNCJob objects can't be mirrored/flipped." msgstr "CNCJob objects can't be mirrored/flipped." -#: appTools/ToolTransform.py:796 +#: appTools/ToolTransform.py:361 msgid "Skew transformation can not be done for 0, 90 and 180 degrees." msgstr "Skew transformation can not be done for 0, 90 and 180 degrees." -#: appTools/ToolTransform.py:801 +#: appTools/ToolTransform.py:366 msgid "No object selected. Please Select an object to shear/skew!" msgstr "No object selected. Please Select an object to shear/skew!" -#: appTools/ToolTransform.py:810 +#: appTools/ToolTransform.py:375 msgid "CNCJob objects can't be skewed." msgstr "CNCJob objects can't be skewed." -#: appTools/ToolTransform.py:818 +#: appTools/ToolTransform.py:383 msgid "Skew on the" msgstr "Skew on the" -#: appTools/ToolTransform.py:818 appTools/ToolTransform.py:846 -#: appTools/ToolTransform.py:876 +#: appTools/ToolTransform.py:383 appTools/ToolTransform.py:411 +#: appTools/ToolTransform.py:441 msgid "axis done" msgstr "axis done" -#: appTools/ToolTransform.py:828 +#: appTools/ToolTransform.py:393 msgid "No object selected. Please Select an object to scale!" msgstr "No object selected. Please Select an object to scale!" -#: appTools/ToolTransform.py:837 +#: appTools/ToolTransform.py:402 msgid "CNCJob objects can't be scaled." msgstr "CNCJob objects can't be scaled." -#: appTools/ToolTransform.py:846 +#: appTools/ToolTransform.py:411 msgid "Scale on the" msgstr "Scale on the" -#: appTools/ToolTransform.py:856 +#: appTools/ToolTransform.py:421 msgid "No object selected. Please Select an object to offset!" msgstr "No object selected. Please Select an object to offset!" -#: appTools/ToolTransform.py:863 +#: appTools/ToolTransform.py:428 msgid "CNCJob objects can't be offset." msgstr "CNCJob objects can't be offset." -#: appTools/ToolTransform.py:876 +#: appTools/ToolTransform.py:441 msgid "Offset on the" msgstr "Offset on the" -#: appTools/ToolTransform.py:886 +#: appTools/ToolTransform.py:450 msgid "No object selected. Please Select an object to buffer!" msgstr "No object selected. Please Select an object to buffer!" -#: appTools/ToolTransform.py:893 +#: appTools/ToolTransform.py:457 msgid "CNCJob objects can't be buffered." msgstr "CNCJob objects can't be buffered." -#: appTranslation.py:104 +#: appTools/ToolTransform.py:512 +msgid "Object Transform" +msgstr "Object Transform" + +#: appTools/ToolTransform.py:603 +msgid "" +"The object used as reference.\n" +"The used point is the center of it's bounding box." +msgstr "" +"The object used as reference.\n" +"The used point is the center of it's bounding box." + +#: appTranslation.py:105 msgid "The application will restart." msgstr "The application will restart." -#: appTranslation.py:106 +#: appTranslation.py:107 msgid "Are you sure do you want to change the current language to" msgstr "Are you sure do you want to change the current language to" -#: appTranslation.py:107 +#: appTranslation.py:108 msgid "Apply Language ..." msgstr "Apply Language ..." -#: appTranslation.py:205 app_Main.py:3226 +#: appTranslation.py:207 app_Main.py:3377 msgid "" "There are files/objects modified in FlatCAM. \n" "Do you want to Save the project?" @@ -16891,19 +18224,15 @@ msgstr "" "There are files/objects modified in FlatCAM. \n" "Do you want to Save the project?" -#: appTranslation.py:208 app_Main.py:3229 app_Main.py:6535 -msgid "Save changes" -msgstr "Save changes" - -#: app_Main.py:479 +#: app_Main.py:490 msgid "FlatCAM is initializing ..." msgstr "FlatCAM is initializing ..." -#: app_Main.py:623 +#: app_Main.py:650 msgid "Could not find the Language files. The App strings are missing." msgstr "Could not find the Language files. The App strings are missing." -#: app_Main.py:695 +#: app_Main.py:722 msgid "" "FlatCAM is initializing ...\n" "Canvas initialization started." @@ -16911,7 +18240,7 @@ msgstr "" "FlatCAM is initializing ...\n" "Canvas initialization started." -#: app_Main.py:715 +#: app_Main.py:742 msgid "" "FlatCAM is initializing ...\n" "Canvas initialization started.\n" @@ -16921,41 +18250,41 @@ msgstr "" "Canvas initialization started.\n" "Canvas initialization finished in" -#: app_Main.py:1561 app_Main.py:6648 +#: app_Main.py:1590 app_Main.py:6984 msgid "New Project - Not saved" msgstr "New Project - Not saved" -#: app_Main.py:1662 +#: app_Main.py:1696 msgid "" "Found old default preferences files. Please reboot the application to update." msgstr "" "Found old default preferences files. Please reboot the application to update." -#: app_Main.py:1729 +#: app_Main.py:1763 msgid "Open Config file failed." msgstr "Open Config file failed." -#: app_Main.py:1744 +#: app_Main.py:1778 msgid "Open Script file failed." msgstr "Open Script file failed." -#: app_Main.py:1770 +#: app_Main.py:1804 msgid "Open Excellon file failed." msgstr "Open Excellon file failed." -#: app_Main.py:1783 +#: app_Main.py:1817 msgid "Open GCode file failed." msgstr "Open GCode file failed." -#: app_Main.py:1796 +#: app_Main.py:1830 msgid "Open Gerber file failed." msgstr "Open Gerber file failed." -#: app_Main.py:2119 +#: app_Main.py:2168 msgid "Select a Geometry, Gerber, Excellon or CNCJob Object to edit." msgstr "Select a Geometry, Gerber, Excellon or CNCJob Object to edit." -#: app_Main.py:2134 +#: app_Main.py:2183 msgid "" "Simultaneous editing of tools geometry in a MultiGeo Geometry is not " "possible.\n" @@ -16965,91 +18294,103 @@ msgstr "" "possible.\n" "Edit only one geometry at a time." -#: app_Main.py:2200 +#: app_Main.py:2263 msgid "Editor is activated ..." msgstr "Editor is activated ..." -#: app_Main.py:2221 +#: app_Main.py:2284 msgid "Do you want to save the edited object?" msgstr "Do you want to save the edited object?" -#: app_Main.py:2257 +#: app_Main.py:2325 msgid "Object empty after edit." msgstr "Object empty after edit." -#: app_Main.py:2262 app_Main.py:2280 app_Main.py:2299 +#: app_Main.py:2330 app_Main.py:2348 app_Main.py:2379 app_Main.py:2395 msgid "Editor exited. Editor content saved." msgstr "Editor exited. Editor content saved." -#: app_Main.py:2303 app_Main.py:2327 app_Main.py:2345 -msgid "Select a Gerber, Geometry or Excellon Object to update." +#: app_Main.py:2399 +#, fuzzy +#| msgid "Select a Gerber, Geometry or Excellon Object to update." +msgid "Select a Gerber, Geometry, Excellon or CNCJobObject to update." msgstr "Select a Gerber, Geometry or Excellon Object to update." -#: app_Main.py:2306 +#: app_Main.py:2402 msgid "is updated, returning to App..." msgstr "is updated, returning to App..." -#: app_Main.py:2313 +#: app_Main.py:2415 msgid "Editor exited. Editor content was not saved." msgstr "Editor exited. Editor content was not saved." -#: app_Main.py:2446 app_Main.py:2450 +#: app_Main.py:2440 +#, fuzzy +#| msgid "Select a Gerber, Geometry or Excellon Object to update." +msgid "Select a Gerber, Geometry, Excellon or CNCJob Object to update." +msgstr "Select a Gerber, Geometry or Excellon Object to update." + +#: app_Main.py:2463 +msgid "Select a Gerber, Geometry or Excellon Object to update." +msgstr "Select a Gerber, Geometry or Excellon Object to update." + +#: app_Main.py:2567 app_Main.py:2571 msgid "Import FlatCAM Preferences" msgstr "Import FlatCAM Preferences" -#: app_Main.py:2461 +#: app_Main.py:2582 msgid "Imported Defaults from" msgstr "Imported Defaults from" -#: app_Main.py:2481 app_Main.py:2487 +#: app_Main.py:2602 app_Main.py:2608 msgid "Export FlatCAM Preferences" msgstr "Export FlatCAM Preferences" -#: app_Main.py:2507 +#: app_Main.py:2628 msgid "Exported preferences to" msgstr "Exported preferences to" -#: app_Main.py:2527 app_Main.py:2532 +#: app_Main.py:2648 app_Main.py:2653 msgid "Save to file" msgstr "Save to file" -#: app_Main.py:2556 +#: app_Main.py:2677 msgid "Could not load the file." msgstr "Could not load the file." -#: app_Main.py:2572 +#: app_Main.py:2693 msgid "Exported file to" msgstr "Exported file to" -#: app_Main.py:2609 +#: app_Main.py:2730 msgid "Failed to open recent files file for writing." msgstr "Failed to open recent files file for writing." -#: app_Main.py:2620 +#: app_Main.py:2741 msgid "Failed to open recent projects file for writing." msgstr "Failed to open recent projects file for writing." -#: app_Main.py:2675 +#: app_Main.py:2796 msgid "2D Computer-Aided Printed Circuit Board Manufacturing" msgstr "2D Computer-Aided Printed Circuit Board Manufacturing" -#: app_Main.py:2676 +#: app_Main.py:2797 msgid "Development" msgstr "Development" -#: app_Main.py:2677 +#: app_Main.py:2798 msgid "DOWNLOAD" msgstr "DOWNLOAD" -#: app_Main.py:2678 +#: app_Main.py:2799 msgid "Issue tracker" msgstr "Issue tracker" -#: app_Main.py:2697 +#: app_Main.py:2818 msgid "Licensed under the MIT license" msgstr "Licensed under the MIT license" -#: app_Main.py:2706 +#: app_Main.py:2827 msgid "" "Permission is hereby granted, free of charge, to any person obtaining a " "copy\n" @@ -17097,7 +18438,7 @@ msgstr "" "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n" "THE SOFTWARE." -#: app_Main.py:2728 +#: app_Main.py:2849 msgid "" "Some of the icons used are from the following sources:
" -#: app_Main.py:2764 +#: app_Main.py:2885 msgid "Splash" msgstr "Splash" -#: app_Main.py:2770 +#: app_Main.py:2891 msgid "Programmers" msgstr "Programmers" -#: app_Main.py:2776 +#: app_Main.py:2897 msgid "Translators" msgstr "Translators" -#: app_Main.py:2782 +#: app_Main.py:2903 msgid "License" msgstr "License" -#: app_Main.py:2788 +#: app_Main.py:2909 msgid "Attributions" msgstr "Attributions" -#: app_Main.py:2811 +#: app_Main.py:2932 msgid "Programmer" msgstr "Programmer" -#: app_Main.py:2812 +#: app_Main.py:2933 msgid "Status" msgstr "Status" -#: app_Main.py:2813 app_Main.py:2893 +#: app_Main.py:2934 app_Main.py:3014 msgid "E-mail" msgstr "E-mail" -#: app_Main.py:2816 +#: app_Main.py:2937 msgid "Program Author" msgstr "Program Author" -#: app_Main.py:2821 +#: app_Main.py:2942 msgid "BETA Maintainer >= 2019" msgstr "BETA Maintainer >= 2019" -#: app_Main.py:2890 +#: app_Main.py:3011 msgid "Language" msgstr "Language" -#: app_Main.py:2891 +#: app_Main.py:3012 msgid "Translator" msgstr "Translator" -#: app_Main.py:2892 +#: app_Main.py:3013 msgid "Corrections" msgstr "Corrections" -#: app_Main.py:2972 +#: app_Main.py:3098 msgid "Important Information's" msgstr "Important Information's" -#: app_Main.py:2994 +#: app_Main.py:3146 #, python-format msgid "This program is %s and free in a very wide meaning of the word." msgstr "This program is %s and free in a very wide meaning of the word." -#: app_Main.py:2995 +#: app_Main.py:3147 msgid "Yet it cannot evolve without contributions." msgstr "Yet it cannot evolve without contributions." -#: app_Main.py:2996 +#: app_Main.py:3148 msgid "If you want to see this application grow and become better and better" msgstr "If you want to see this application grow and become better and better" -#: app_Main.py:2997 +#: app_Main.py:3149 msgid "you can contribute to the development yourself by:" msgstr "you can contribute to the development yourself by:" -#: app_Main.py:2998 +#: app_Main.py:3150 msgid "Pull Requests on the Bitbucket repository, if you are a developer" msgstr "Pull Requests on the Bitbucket repository, if you are a developer" -#: app_Main.py:3000 +#: app_Main.py:3152 msgid "Bug Reports by providing the steps required to reproduce the bug" msgstr "Bug Reports by providing the steps required to reproduce the bug" -#: app_Main.py:3002 -msgid "If you like or use this program you can make a donation" -msgstr "If you like or use this program you can make a donation" - -#: app_Main.py:3004 -#, python-format -msgid "You don't have to make a donation %s, and it is totally optional but:" -msgstr "You don't have to make a donation %s, and it is totally optional but:" - -#: app_Main.py:3005 -msgid "it will be welcomed with joy" -msgstr "it will be welcomed with joy" - -#: app_Main.py:3006 -msgid "it will give me a reason to continue" -msgstr "it will give me a reason to continue" - -#: app_Main.py:3036 +#: app_Main.py:3183 msgid "Contribute" msgstr "Contribute" -#: app_Main.py:3059 +#: app_Main.py:3206 msgid "Links Exchange" msgstr "Links Exchange" -#: app_Main.py:3071 app_Main.py:3090 -#| msgid "Go to Line ..." +#: app_Main.py:3218 app_Main.py:3237 msgid "Soon ..." msgstr "Soon ..." -#: app_Main.py:3078 +#: app_Main.py:3225 msgid "How To's" msgstr "How To's" -#: app_Main.py:3186 +#: app_Main.py:3337 msgid "" "This entry will resolve to another website if:\n" "\n" @@ -17254,27 +18577,27 @@ msgstr "" "If you can't get any informations about FlatCAM beta\n" "use the YouTube channel link from the Help menu." -#: app_Main.py:3193 +#: app_Main.py:3344 msgid "Alternative website" msgstr "Alternative website" -#: app_Main.py:3544 +#: app_Main.py:3695 msgid "Selected Excellon file extensions registered with FlatCAM." msgstr "Selected Excellon file extensions registered with FlatCAM." -#: app_Main.py:3566 +#: app_Main.py:3717 msgid "Selected GCode file extensions registered with FlatCAM." msgstr "Selected GCode file extensions registered with FlatCAM." -#: app_Main.py:3588 +#: app_Main.py:3739 msgid "Selected Gerber file extensions registered with FlatCAM." msgstr "Selected Gerber file extensions registered with FlatCAM." -#: app_Main.py:3776 app_Main.py:3835 app_Main.py:3863 +#: app_Main.py:3927 app_Main.py:3988 app_Main.py:4018 msgid "At least two objects are required for join. Objects currently selected" msgstr "At least two objects are required for join. Objects currently selected" -#: app_Main.py:3785 +#: app_Main.py:3936 msgid "" "Failed join. The Geometry objects are of different types.\n" "At least one is MultiGeo type and the other is SingleGeo type. A possibility " @@ -17290,47 +18613,47 @@ msgstr "" "be lost and the result may not be what was expected. \n" "Check the generated GCODE." -#: app_Main.py:3797 app_Main.py:3807 +#: app_Main.py:3950 app_Main.py:3960 msgid "Geometry merging finished" msgstr "Geometry merging finished" -#: app_Main.py:3830 +#: app_Main.py:3983 msgid "Failed. Excellon joining works only on Excellon objects." msgstr "Failed. Excellon joining works only on Excellon objects." -#: app_Main.py:3840 +#: app_Main.py:3995 msgid "Excellon merging finished" msgstr "Excellon merging finished" -#: app_Main.py:3858 +#: app_Main.py:4013 msgid "Failed. Gerber joining works only on Gerber objects." msgstr "Failed. Gerber joining works only on Gerber objects." -#: app_Main.py:3868 +#: app_Main.py:4023 msgid "Gerber merging finished" msgstr "Gerber merging finished" -#: app_Main.py:3888 app_Main.py:3925 +#: app_Main.py:4043 app_Main.py:4080 msgid "Failed. Select a Geometry Object and try again." msgstr "Failed. Select a Geometry Object and try again." -#: app_Main.py:3892 app_Main.py:3930 +#: app_Main.py:4047 app_Main.py:4085 msgid "Expected a GeometryObject, got" msgstr "Expected a GeometryObject, got" -#: app_Main.py:3907 +#: app_Main.py:4062 msgid "A Geometry object was converted to MultiGeo type." msgstr "A Geometry object was converted to MultiGeo type." -#: app_Main.py:3945 +#: app_Main.py:4100 msgid "A Geometry object was converted to SingleGeo type." msgstr "A Geometry object was converted to SingleGeo type." -#: app_Main.py:4152 +#: app_Main.py:4333 msgid "Toggle Units" msgstr "Toggle Units" -#: app_Main.py:4156 +#: app_Main.py:4337 msgid "" "Changing the units of the project\n" "will scale all objects.\n" @@ -17342,28 +18665,24 @@ msgstr "" "\n" "Do you want to continue?" -#: app_Main.py:4159 app_Main.py:4346 app_Main.py:4429 app_Main.py:6933 -#: app_Main.py:6949 app_Main.py:7287 app_Main.py:7299 +#: app_Main.py:4340 app_Main.py:4503 app_Main.py:4586 app_Main.py:7304 +#: app_Main.py:7320 app_Main.py:7658 app_Main.py:7670 msgid "Ok" msgstr "Ok" -#: app_Main.py:4209 +#: app_Main.py:4390 msgid "Converted units to" msgstr "Converted units to" -#: app_Main.py:4244 -msgid "Detachable Tabs" -msgstr "Detachable Tabs" - -#: app_Main.py:4273 +#: app_Main.py:4430 msgid "Workspace enabled." msgstr "Workspace enabled." -#: app_Main.py:4276 +#: app_Main.py:4433 msgid "Workspace disabled." msgstr "Workspace disabled." -#: app_Main.py:4340 +#: app_Main.py:4497 msgid "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." @@ -17371,11 +18690,11 @@ msgstr "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." -#: app_Main.py:4422 +#: app_Main.py:4579 msgid "Delete objects" msgstr "Delete objects" -#: app_Main.py:4427 +#: app_Main.py:4584 msgid "" "Are you sure you want to permanently delete\n" "the selected objects?" @@ -17383,85 +18702,85 @@ msgstr "" "Are you sure you want to permanently delete\n" "the selected objects?" -#: app_Main.py:4471 +#: app_Main.py:4627 msgid "Object(s) deleted" msgstr "Object(s) deleted" -#: app_Main.py:4475 +#: app_Main.py:4631 msgid "Save the work in Editor and try again ..." msgstr "Save the work in Editor and try again ..." -#: app_Main.py:4504 +#: app_Main.py:4660 msgid "Object deleted" msgstr "Object deleted" -#: app_Main.py:4531 +#: app_Main.py:4687 msgid "Click to set the origin ..." msgstr "Click to set the origin ..." -#: app_Main.py:4553 +#: app_Main.py:4709 msgid "Setting Origin..." msgstr "Setting Origin..." -#: app_Main.py:4566 app_Main.py:4668 +#: app_Main.py:4722 app_Main.py:4824 msgid "Origin set" msgstr "Origin set" -#: app_Main.py:4583 +#: app_Main.py:4739 msgid "Origin coordinates specified but incomplete." msgstr "Origin coordinates specified but incomplete." -#: app_Main.py:4624 +#: app_Main.py:4780 msgid "Moving to Origin..." msgstr "Moving to Origin..." -#: app_Main.py:4705 +#: app_Main.py:4861 msgid "Jump to ..." msgstr "Jump to ..." -#: app_Main.py:4706 +#: app_Main.py:4862 msgid "Enter the coordinates in format X,Y:" msgstr "Enter the coordinates in format X,Y:" -#: app_Main.py:4716 +#: app_Main.py:4872 msgid "Wrong coordinates. Enter coordinates in format: X,Y" msgstr "Wrong coordinates. Enter coordinates in format: X,Y" -#: app_Main.py:4834 +#: app_Main.py:4989 msgid "Bottom-Left" msgstr "Bottom-Left" -#: app_Main.py:4837 +#: app_Main.py:4992 msgid "Top-Right" msgstr "Top-Right" -#: app_Main.py:4858 +#: app_Main.py:5013 msgid "Locate ..." msgstr "Locate ..." -#: app_Main.py:5131 app_Main.py:5208 +#: app_Main.py:5286 app_Main.py:5361 app_Main.py:5524 msgid "No object is selected. Select an object and try again." msgstr "No object is selected. Select an object and try again." -#: app_Main.py:5234 +#: app_Main.py:5550 msgid "" "Aborting. The current task will be gracefully closed as soon as possible..." msgstr "" "Aborting. The current task will be gracefully closed as soon as possible..." -#: app_Main.py:5240 +#: app_Main.py:5556 msgid "The current task was gracefully closed on user request..." msgstr "The current task was gracefully closed on user request..." -#: app_Main.py:5415 +#: app_Main.py:5746 msgid "Tools in Tools Database edited but not saved." msgstr "Tools in Tools Database edited but not saved." -#: app_Main.py:5454 +#: app_Main.py:5785 msgid "Adding tool from DB is not allowed for this object." msgstr "Adding tool from DB is not allowed for this object." -#: app_Main.py:5472 +#: app_Main.py:5803 msgid "" "One or more Tools are edited.\n" "Do you want to update the Tools Database?" @@ -17469,111 +18788,111 @@ msgstr "" "One or more Tools are edited.\n" "Do you want to update the Tools Database?" -#: app_Main.py:5474 +#: app_Main.py:5805 msgid "Save Tools Database" msgstr "Save Tools Database" -#: app_Main.py:5528 +#: app_Main.py:5851 msgid "No object selected to Flip on Y axis." msgstr "No object selected to Flip on Y axis." -#: app_Main.py:5554 +#: app_Main.py:5877 msgid "Flip on Y axis done." msgstr "Flip on Y axis done." -#: app_Main.py:5576 +#: app_Main.py:5899 msgid "No object selected to Flip on X axis." msgstr "No object selected to Flip on X axis." -#: app_Main.py:5602 +#: app_Main.py:5925 msgid "Flip on X axis done." msgstr "Flip on X axis done." -#: app_Main.py:5624 +#: app_Main.py:5947 msgid "No object selected to Rotate." msgstr "No object selected to Rotate." -#: app_Main.py:5627 app_Main.py:5678 app_Main.py:5715 +#: app_Main.py:5950 app_Main.py:6001 app_Main.py:6038 msgid "Transform" msgstr "Transform" -#: app_Main.py:5627 app_Main.py:5678 app_Main.py:5715 +#: app_Main.py:5950 app_Main.py:6001 app_Main.py:6038 msgid "Enter the Angle value:" msgstr "Enter the Angle value:" -#: app_Main.py:5657 +#: app_Main.py:5980 msgid "Rotation done." msgstr "Rotation done." -#: app_Main.py:5659 +#: app_Main.py:5982 msgid "Rotation movement was not executed." msgstr "Rotation movement was not executed." -#: app_Main.py:5676 +#: app_Main.py:5999 msgid "No object selected to Skew/Shear on X axis." msgstr "No object selected to Skew/Shear on X axis." -#: app_Main.py:5697 +#: app_Main.py:6020 msgid "Skew on X axis done." msgstr "Skew on X axis done." -#: app_Main.py:5713 +#: app_Main.py:6036 msgid "No object selected to Skew/Shear on Y axis." msgstr "No object selected to Skew/Shear on Y axis." -#: app_Main.py:5734 +#: app_Main.py:6057 msgid "Skew on Y axis done." msgstr "Skew on Y axis done." -#: app_Main.py:5812 +#: app_Main.py:6139 msgid "New Grid ..." msgstr "New Grid ..." -#: app_Main.py:5813 +#: app_Main.py:6140 msgid "Enter a Grid Value:" msgstr "Enter a Grid Value:" -#: app_Main.py:5821 app_Main.py:5845 +#: app_Main.py:6148 app_Main.py:6172 msgid "Please enter a grid value with non-zero value, in Float format." msgstr "Please enter a grid value with non-zero value, in Float format." -#: app_Main.py:5826 +#: app_Main.py:6153 msgid "New Grid added" msgstr "New Grid added" -#: app_Main.py:5828 +#: app_Main.py:6155 msgid "Grid already exists" msgstr "Grid already exists" -#: app_Main.py:5830 +#: app_Main.py:6157 msgid "Adding New Grid cancelled" msgstr "Adding New Grid cancelled" -#: app_Main.py:5851 +#: app_Main.py:6178 msgid " Grid Value does not exist" msgstr " Grid Value does not exist" -#: app_Main.py:5853 +#: app_Main.py:6180 msgid "Grid Value deleted" msgstr "Grid Value deleted" -#: app_Main.py:5855 +#: app_Main.py:6182 msgid "Delete Grid value cancelled" msgstr "Delete Grid value cancelled" -#: app_Main.py:5861 +#: app_Main.py:6188 msgid "Key Shortcut List" msgstr "Key Shortcut List" -#: app_Main.py:5895 +#: app_Main.py:6225 msgid " No object selected to copy it's name" msgstr " No object selected to copy it's name" -#: app_Main.py:5899 +#: app_Main.py:6229 msgid "Name copied on clipboard ..." msgstr "Name copied on clipboard ..." -#: app_Main.py:6532 +#: app_Main.py:6869 msgid "" "There are files/objects opened in FlatCAM.\n" "Creating a New project will delete them.\n" @@ -17583,12 +18902,12 @@ msgstr "" "Creating a New project will delete them.\n" "Do you want to Save the project?" -#: app_Main.py:6555 +#: app_Main.py:6892 msgid "New Project created" msgstr "New Project created" -#: app_Main.py:6727 app_Main.py:6766 app_Main.py:6810 app_Main.py:6880 -#: app_Main.py:7674 app_Main.py:8887 app_Main.py:8949 +#: app_Main.py:7098 app_Main.py:7137 app_Main.py:7181 app_Main.py:7251 +#: app_Main.py:8037 app_Main.py:9284 app_Main.py:9346 msgid "" "Canvas initialization started.\n" "Canvas initialization finished in" @@ -17596,281 +18915,286 @@ msgstr "" "Canvas initialization started.\n" "Canvas initialization finished in" -#: app_Main.py:6729 +#: app_Main.py:7100 msgid "Opening Gerber file." msgstr "Opening Gerber file." -#: app_Main.py:6768 +#: app_Main.py:7139 msgid "Opening Excellon file." msgstr "Opening Excellon file." -#: app_Main.py:6799 app_Main.py:6804 +#: app_Main.py:7170 app_Main.py:7175 msgid "Open G-Code" msgstr "Open G-Code" -#: app_Main.py:6812 +#: app_Main.py:7183 msgid "Opening G-Code file." msgstr "Opening G-Code file." -#: app_Main.py:6871 app_Main.py:6875 +#: app_Main.py:7242 app_Main.py:7246 msgid "Open HPGL2" msgstr "Open HPGL2" -#: app_Main.py:6882 +#: app_Main.py:7253 msgid "Opening HPGL2 file." msgstr "Opening HPGL2 file." -#: app_Main.py:6905 app_Main.py:6908 +#: app_Main.py:7276 app_Main.py:7279 msgid "Open Configuration File" msgstr "Open Configuration File" -#: app_Main.py:6928 app_Main.py:7282 +#: app_Main.py:7299 app_Main.py:7653 msgid "Please Select a Geometry object to export" msgstr "Please Select a Geometry object to export" -#: app_Main.py:6944 +#: app_Main.py:7315 msgid "Only Geometry, Gerber and CNCJob objects can be used." msgstr "Only Geometry, Gerber and CNCJob objects can be used." -#: app_Main.py:6989 +#: app_Main.py:7360 msgid "Data must be a 3D array with last dimension 3 or 4" msgstr "Data must be a 3D array with last dimension 3 or 4" -#: app_Main.py:6995 app_Main.py:6999 +#: app_Main.py:7366 app_Main.py:7370 msgid "Export PNG Image" msgstr "Export PNG Image" -#: app_Main.py:7032 app_Main.py:7242 +#: app_Main.py:7403 app_Main.py:7613 msgid "Failed. Only Gerber objects can be saved as Gerber files..." msgstr "Failed. Only Gerber objects can be saved as Gerber files..." -#: app_Main.py:7044 +#: app_Main.py:7415 msgid "Save Gerber source file" msgstr "Save Gerber source file" -#: app_Main.py:7073 +#: app_Main.py:7444 msgid "Failed. Only Script objects can be saved as TCL Script files..." msgstr "Failed. Only Script objects can be saved as TCL Script files..." -#: app_Main.py:7085 +#: app_Main.py:7456 msgid "Save Script source file" msgstr "Save Script source file" -#: app_Main.py:7114 +#: app_Main.py:7485 msgid "Failed. Only Document objects can be saved as Document files..." msgstr "Failed. Only Document objects can be saved as Document files..." -#: app_Main.py:7126 +#: app_Main.py:7497 msgid "Save Document source file" msgstr "Save Document source file" -#: app_Main.py:7156 app_Main.py:7198 app_Main.py:8157 +#: app_Main.py:7527 app_Main.py:7569 app_Main.py:8520 msgid "Failed. Only Excellon objects can be saved as Excellon files..." msgstr "Failed. Only Excellon objects can be saved as Excellon files..." -#: app_Main.py:7164 app_Main.py:7169 +#: app_Main.py:7535 app_Main.py:7540 msgid "Save Excellon source file" msgstr "Save Excellon source file" -#: app_Main.py:7206 app_Main.py:7210 +#: app_Main.py:7577 app_Main.py:7581 msgid "Export Excellon" msgstr "Export Excellon" -#: app_Main.py:7250 app_Main.py:7254 +#: app_Main.py:7621 app_Main.py:7625 msgid "Export Gerber" msgstr "Export Gerber" -#: app_Main.py:7294 +#: app_Main.py:7665 msgid "Only Geometry objects can be used." msgstr "Only Geometry objects can be used." -#: app_Main.py:7310 app_Main.py:7314 +#: app_Main.py:7681 app_Main.py:7685 msgid "Export DXF" msgstr "Export DXF" -#: app_Main.py:7339 app_Main.py:7342 +#: app_Main.py:7710 app_Main.py:7713 msgid "Import SVG" msgstr "Import SVG" -#: app_Main.py:7370 app_Main.py:7374 +#: app_Main.py:7741 app_Main.py:7745 msgid "Import DXF" msgstr "Import DXF" -#: app_Main.py:7424 -msgid "Viewing the source code of the selected object." -msgstr "Viewing the source code of the selected object." - -#: app_Main.py:7431 app_Main.py:7435 +#: app_Main.py:7799 app_Main.py:7803 msgid "Select an Gerber or Excellon file to view it's source file." msgstr "Select an Gerber or Excellon file to view it's source file." -#: app_Main.py:7449 +#: app_Main.py:7806 +msgid "Viewing the source code of the selected object." +msgstr "Viewing the source code of the selected object." + +#: app_Main.py:7820 msgid "Source Editor" msgstr "Source Editor" -#: app_Main.py:7489 app_Main.py:7496 +#: app_Main.py:7856 app_Main.py:7863 msgid "There is no selected object for which to see it's source file code." msgstr "There is no selected object for which to see it's source file code." -#: app_Main.py:7508 +#: app_Main.py:7871 msgid "Failed to load the source code for the selected object" msgstr "Failed to load the source code for the selected object" -#: app_Main.py:7544 +#: app_Main.py:7904 msgid "Go to Line ..." msgstr "Go to Line ..." -#: app_Main.py:7545 +#: app_Main.py:7905 msgid "Line:" msgstr "Line:" -#: app_Main.py:7572 +#: app_Main.py:7932 msgid "New TCL script file created in Code Editor." msgstr "New TCL script file created in Code Editor." -#: app_Main.py:7608 app_Main.py:7610 app_Main.py:7646 app_Main.py:7648 +#: app_Main.py:7971 app_Main.py:7973 app_Main.py:8009 app_Main.py:8011 msgid "Open TCL script" msgstr "Open TCL script" -#: app_Main.py:7676 +#: app_Main.py:8039 msgid "Executing ScriptObject file." msgstr "Executing ScriptObject file." -#: app_Main.py:7684 app_Main.py:7687 +#: app_Main.py:8047 app_Main.py:8050 msgid "Run TCL script" msgstr "Run TCL script" -#: app_Main.py:7710 +#: app_Main.py:8073 msgid "TCL script file opened in Code Editor and executed." msgstr "TCL script file opened in Code Editor and executed." -#: app_Main.py:7761 app_Main.py:7767 +#: app_Main.py:8124 app_Main.py:8130 msgid "Save Project As ..." msgstr "Save Project As ..." -#: app_Main.py:7802 +#: app_Main.py:8165 msgid "FlatCAM objects print" msgstr "FlatCAM objects print" -#: app_Main.py:7815 app_Main.py:7822 +#: app_Main.py:8178 app_Main.py:8185 msgid "Save Object as PDF ..." msgstr "Save Object as PDF ..." -#: app_Main.py:7831 +#: app_Main.py:8194 msgid "Printing PDF ... Please wait." msgstr "Printing PDF ... Please wait." -#: app_Main.py:8010 +#: app_Main.py:8373 msgid "PDF file saved to" msgstr "PDF file saved to" -#: app_Main.py:8035 +#: app_Main.py:8398 msgid "Exporting SVG" msgstr "Exporting SVG" -#: app_Main.py:8078 +#: app_Main.py:8441 msgid "SVG file exported to" msgstr "SVG file exported to" -#: app_Main.py:8104 -msgid "" -"Save cancelled because source file is empty. Try to export the Gerber file." +#: app_Main.py:8467 +#, fuzzy +#| msgid "" +#| "Save cancelled because source file is empty. Try to export the Gerber " +#| "file." +msgid "Save cancelled because source file is empty. Try to export the file." msgstr "" "Save cancelled because source file is empty. Try to export the Gerber file." -#: app_Main.py:8251 +#: app_Main.py:8618 msgid "Excellon file exported to" msgstr "Excellon file exported to" -#: app_Main.py:8260 +#: app_Main.py:8627 msgid "Exporting Excellon" msgstr "Exporting Excellon" -#: app_Main.py:8265 app_Main.py:8272 +#: app_Main.py:8632 app_Main.py:8639 msgid "Could not export Excellon file." msgstr "Could not export Excellon file." -#: app_Main.py:8387 +#: app_Main.py:8755 msgid "Gerber file exported to" msgstr "Gerber file exported to" -#: app_Main.py:8395 +#: app_Main.py:8763 msgid "Exporting Gerber" msgstr "Exporting Gerber" -#: app_Main.py:8400 app_Main.py:8407 -msgid "Could not export Gerber file." -msgstr "Could not export Gerber file." +#: app_Main.py:8768 app_Main.py:8775 +#, fuzzy +#| msgid "Could not export DXF file." +msgid "Could not export file." +msgstr "Could not export DXF file." -#: app_Main.py:8442 +#: app_Main.py:8823 msgid "DXF file exported to" msgstr "DXF file exported to" -#: app_Main.py:8448 +#: app_Main.py:8832 msgid "Exporting DXF" msgstr "Exporting DXF" -#: app_Main.py:8453 app_Main.py:8460 +#: app_Main.py:8837 app_Main.py:8844 msgid "Could not export DXF file." msgstr "Could not export DXF file." -#: app_Main.py:8494 +#: app_Main.py:8886 msgid "Importing SVG" msgstr "Importing SVG" -#: app_Main.py:8502 app_Main.py:8548 +#: app_Main.py:8894 app_Main.py:8949 msgid "Import failed." msgstr "Import failed." -#: app_Main.py:8540 +#: app_Main.py:8941 msgid "Importing DXF" msgstr "Importing DXF" -#: app_Main.py:8581 app_Main.py:8776 app_Main.py:8841 +#: app_Main.py:8982 app_Main.py:9173 app_Main.py:9238 msgid "Failed to open file" msgstr "Failed to open file" -#: app_Main.py:8584 app_Main.py:8779 app_Main.py:8844 +#: app_Main.py:8985 app_Main.py:9176 app_Main.py:9241 msgid "Failed to parse file" msgstr "Failed to parse file" -#: app_Main.py:8596 +#: app_Main.py:8997 msgid "Object is not Gerber file or empty. Aborting object creation." msgstr "Object is not Gerber file or empty. Aborting object creation." -#: app_Main.py:8601 +#: app_Main.py:9002 msgid "Opening Gerber" msgstr "Opening Gerber" -#: app_Main.py:8612 +#: app_Main.py:9013 msgid "Open Gerber failed. Probable not a Gerber file." msgstr "Open Gerber failed. Probable not a Gerber file." -#: app_Main.py:8648 +#: app_Main.py:9046 msgid "Cannot open file" msgstr "Cannot open file" -#: app_Main.py:8669 +#: app_Main.py:9066 msgid "Opening Excellon." msgstr "Opening Excellon." -#: app_Main.py:8679 +#: app_Main.py:9076 msgid "Open Excellon file failed. Probable not an Excellon file." msgstr "Open Excellon file failed. Probable not an Excellon file." -#: app_Main.py:8711 +#: app_Main.py:9108 msgid "Reading GCode file" msgstr "Reading GCode file" -#: app_Main.py:8724 +#: app_Main.py:9121 msgid "This is not GCODE" msgstr "This is not GCODE" -#: app_Main.py:8729 +#: app_Main.py:9126 msgid "Opening G-Code." msgstr "Opening G-Code." -#: app_Main.py:8742 +#: app_Main.py:9139 msgid "" "Failed to create CNCJob Object. Probable not a GCode file. Try to load it " "from File menu.\n" @@ -17882,99 +19206,99 @@ msgstr "" " Attempting to create a FlatCAM CNCJob Object from G-Code file failed during " "processing" -#: app_Main.py:8798 +#: app_Main.py:9195 msgid "Object is not HPGL2 file or empty. Aborting object creation." msgstr "Object is not HPGL2 file or empty. Aborting object creation." -#: app_Main.py:8803 +#: app_Main.py:9200 msgid "Opening HPGL2" msgstr "Opening HPGL2" -#: app_Main.py:8810 +#: app_Main.py:9207 msgid " Open HPGL2 failed. Probable not a HPGL2 file." msgstr " Open HPGL2 failed. Probable not a HPGL2 file." -#: app_Main.py:8836 +#: app_Main.py:9233 msgid "TCL script file opened in Code Editor." msgstr "TCL script file opened in Code Editor." -#: app_Main.py:8856 +#: app_Main.py:9253 msgid "Opening TCL Script..." msgstr "Opening TCL Script..." -#: app_Main.py:8867 +#: app_Main.py:9264 msgid "Failed to open TCL Script." msgstr "Failed to open TCL Script." -#: app_Main.py:8889 +#: app_Main.py:9286 msgid "Opening FlatCAM Config file." msgstr "Opening FlatCAM Config file." -#: app_Main.py:8917 +#: app_Main.py:9314 msgid "Failed to open config file" msgstr "Failed to open config file" -#: app_Main.py:8946 +#: app_Main.py:9343 msgid "Loading Project ... Please Wait ..." msgstr "Loading Project ... Please Wait ..." -#: app_Main.py:8951 +#: app_Main.py:9348 msgid "Opening FlatCAM Project file." msgstr "Opening FlatCAM Project file." -#: app_Main.py:8966 app_Main.py:8970 app_Main.py:8987 +#: app_Main.py:9363 app_Main.py:9367 app_Main.py:9384 msgid "Failed to open project file" msgstr "Failed to open project file" -#: app_Main.py:9024 +#: app_Main.py:9423 msgid "Loading Project ... restoring" msgstr "Loading Project ... restoring" -#: app_Main.py:9034 +#: app_Main.py:9431 msgid "Project loaded from" msgstr "Project loaded from" -#: app_Main.py:9060 +#: app_Main.py:9457 msgid "Redrawing all objects" msgstr "Redrawing all objects" -#: app_Main.py:9148 +#: app_Main.py:9545 msgid "Failed to load recent item list." msgstr "Failed to load recent item list." -#: app_Main.py:9155 +#: app_Main.py:9552 msgid "Failed to parse recent item list." msgstr "Failed to parse recent item list." -#: app_Main.py:9165 +#: app_Main.py:9562 msgid "Failed to load recent projects item list." msgstr "Failed to load recent projects item list." -#: app_Main.py:9172 +#: app_Main.py:9569 msgid "Failed to parse recent project item list." msgstr "Failed to parse recent project item list." -#: app_Main.py:9233 +#: app_Main.py:9630 msgid "Clear Recent projects" msgstr "Clear Recent projects" -#: app_Main.py:9257 +#: app_Main.py:9654 msgid "Clear Recent files" msgstr "Clear Recent files" -#: app_Main.py:9359 +#: app_Main.py:9756 msgid "Selected Tab - Choose an Item from Project Tab" msgstr "Selected Tab - Choose an Item from Project Tab" -#: app_Main.py:9360 +#: app_Main.py:9757 msgid "Details" msgstr "Details" -#: app_Main.py:9362 +#: app_Main.py:9759 msgid "The normal flow when working with the application is the following:" msgstr "The normal flow when working with the application is the following:" -#: app_Main.py:9363 +#: app_Main.py:9760 msgid "" "Load/Import a Gerber, Excellon, Gcode, DXF, Raster Image or SVG file into " "the application using either the toolbars, key shortcuts or even dragging " @@ -17984,7 +19308,7 @@ msgstr "" "the application using either the toolbars, key shortcuts or even dragging " "and dropping the files on the GUI." -#: app_Main.py:9366 +#: app_Main.py:9763 msgid "" "You can also load a project by double clicking on the project file, drag and " "drop of the file into the GUI or through the menu (or toolbar) actions " @@ -17994,7 +19318,7 @@ msgstr "" "drop of the file into the GUI or through the menu (or toolbar) actions " "offered within the app." -#: app_Main.py:9369 +#: app_Main.py:9766 msgid "" "Once an object is available in the Project Tab, by selecting it and then " "focusing on SELECTED TAB (more simpler is to double click the object name in " @@ -18006,7 +19330,7 @@ msgstr "" "the Project Tab, SELECTED TAB will be updated with the object properties " "according to its kind: Gerber, Excellon, Geometry or CNCJob object." -#: app_Main.py:9373 +#: app_Main.py:9770 msgid "" "If the selection of the object is done on the canvas by single click " "instead, and the SELECTED TAB is in focus, again the object properties will " @@ -18020,7 +19344,7 @@ msgstr "" "object on the canvas will bring the SELECTED TAB and populate it even if it " "was out of focus." -#: app_Main.py:9377 +#: app_Main.py:9774 msgid "" "You can change the parameters in this screen and the flow direction is like " "this:" @@ -18028,7 +19352,7 @@ msgstr "" "You can change the parameters in this screen and the flow direction is like " "this:" -#: app_Main.py:9378 +#: app_Main.py:9775 msgid "" "Gerber/Excellon Object --> Change Parameter --> Generate Geometry --> " "Geometry Object --> Add tools (change param in Selected Tab) --> Generate " @@ -18040,7 +19364,7 @@ msgstr "" "CNCJob --> CNCJob Object --> Verify GCode (through Edit CNC Code) and/or " "append/prepend to GCode (again, done in SELECTED TAB) --> Save GCode." -#: app_Main.py:9382 +#: app_Main.py:9779 msgid "" "A list of key shortcuts is available through an menu entry in Help --> " "Shortcuts List or through its own key shortcut: F3." @@ -18048,31 +19372,31 @@ msgstr "" "A list of key shortcuts is available through an menu entry in Help --> " "Shortcuts List or through its own key shortcut: F3." -#: app_Main.py:9446 +#: app_Main.py:9843 msgid "Failed checking for latest version. Could not connect." msgstr "Failed checking for latest version. Could not connect." -#: app_Main.py:9453 +#: app_Main.py:9850 msgid "Could not parse information about latest version." msgstr "Could not parse information about latest version." -#: app_Main.py:9463 +#: app_Main.py:9860 msgid "FlatCAM is up to date!" msgstr "FlatCAM is up to date!" -#: app_Main.py:9468 +#: app_Main.py:9865 msgid "Newer Version Available" msgstr "Newer Version Available" -#: app_Main.py:9470 +#: app_Main.py:9867 msgid "There is a newer version of FlatCAM available for download:" msgstr "There is a newer version of FlatCAM available for download:" -#: app_Main.py:9474 +#: app_Main.py:9871 msgid "info" msgstr "info" -#: app_Main.py:9502 +#: app_Main.py:9899 msgid "" "OpenGL canvas initialization failed. HW or HW configuration not supported." "Change the graphic engine to Legacy(2D) in Edit -> Preferences -> General " @@ -18084,63 +19408,63 @@ msgstr "" "tab.\n" "\n" -#: app_Main.py:9580 +#: app_Main.py:9977 msgid "All plots disabled." msgstr "All plots disabled." -#: app_Main.py:9587 +#: app_Main.py:9984 msgid "All non selected plots disabled." msgstr "All non selected plots disabled." -#: app_Main.py:9594 +#: app_Main.py:9991 msgid "All plots enabled." msgstr "All plots enabled." -#: app_Main.py:9600 +#: app_Main.py:9997 msgid "Selected plots enabled..." msgstr "Selected plots enabled..." -#: app_Main.py:9608 +#: app_Main.py:10005 msgid "Selected plots disabled..." msgstr "Selected plots disabled..." -#: app_Main.py:9641 +#: app_Main.py:10038 msgid "Enabling plots ..." msgstr "Enabling plots ..." -#: app_Main.py:9690 +#: app_Main.py:10087 msgid "Disabling plots ..." msgstr "Disabling plots ..." -#: app_Main.py:9713 +#: app_Main.py:10110 msgid "Working ..." msgstr "Working ..." -#: app_Main.py:9822 +#: app_Main.py:10219 msgid "Set alpha level ..." msgstr "Set alpha level ..." -#: app_Main.py:9876 +#: app_Main.py:10285 msgid "Saving FlatCAM Project" msgstr "Saving FlatCAM Project" -#: app_Main.py:9897 app_Main.py:9933 +#: app_Main.py:10308 app_Main.py:10344 msgid "Project saved to" msgstr "Project saved to" -#: app_Main.py:9904 +#: app_Main.py:10315 msgid "The object is used by another application." msgstr "The object is used by another application." -#: app_Main.py:9918 +#: app_Main.py:10329 msgid "Failed to verify project file" msgstr "Failed to verify project file" -#: app_Main.py:9918 app_Main.py:9926 app_Main.py:9936 +#: app_Main.py:10329 app_Main.py:10337 app_Main.py:10347 msgid "Retry to save it." msgstr "Retry to save it." -#: app_Main.py:9926 app_Main.py:9936 +#: app_Main.py:10337 app_Main.py:10347 msgid "Failed to parse saved project file" msgstr "Failed to parse saved project file" @@ -18152,200 +19476,192 @@ msgstr "FlatCAM Beta" msgid "G-Code from GERBERS" msgstr "G-Code from GERBERS" -#: camlib.py:596 +#: camlib.py:656 msgid "self.solid_geometry is neither BaseGeometry or list." msgstr "self.solid_geometry is neither BaseGeometry or list." -#: camlib.py:978 +#: camlib.py:1049 msgid "Pass" msgstr "Pass" -#: camlib.py:1000 +#: camlib.py:1071 msgid "Get Exteriors" msgstr "Get Exteriors" -#: camlib.py:1003 +#: camlib.py:1074 msgid "Get Interiors" msgstr "Get Interiors" -#: camlib.py:2191 -msgid "Object was mirrored" -msgstr "Object was mirrored" - -#: camlib.py:2193 +#: camlib.py:2331 msgid "Failed to mirror. No object selected" msgstr "Failed to mirror. No object selected" -#: camlib.py:2258 +#: camlib.py:2396 msgid "Object was rotated" msgstr "Object was rotated" -#: camlib.py:2260 +#: camlib.py:2398 msgid "Failed to rotate. No object selected" msgstr "Failed to rotate. No object selected" -#: camlib.py:2326 +#: camlib.py:2464 msgid "Object was skewed" msgstr "Object was skewed" -#: camlib.py:2328 +#: camlib.py:2466 msgid "Failed to skew. No object selected" msgstr "Failed to skew. No object selected" -#: camlib.py:2404 +#: camlib.py:2542 msgid "Object was buffered" msgstr "Object was buffered" -#: camlib.py:2406 +#: camlib.py:2544 msgid "Failed to buffer. No object selected" msgstr "Failed to buffer. No object selected" -#: camlib.py:2649 +#: camlib.py:2793 msgid "There is no such parameter" msgstr "There is no such parameter" -#: camlib.py:2717 camlib.py:2969 camlib.py:3232 camlib.py:3488 -msgid "" -"The Cut Z parameter has positive value. It is the depth value to drill into " -"material.\n" -"The Cut Z parameter needs to have a negative value, assuming it is a typo " -"therefore the app will convert the value to negative. Check the resulting " -"CNC code (Gcode etc)." -msgstr "" -"The Cut Z parameter has positive value. It is the depth value to drill into " -"material.\n" -"The Cut Z parameter needs to have a negative value, assuming it is a typo " -"therefore the app will convert the value to negative. Check the resulting " -"CNC code (Gcode etc)." - -#: camlib.py:2725 camlib.py:2979 camlib.py:3242 camlib.py:3498 camlib.py:3823 -#: camlib.py:4223 -msgid "The Cut Z parameter is zero. There will be no cut, skipping file" -msgstr "The Cut Z parameter is zero. There will be no cut, skipping file" - -#: camlib.py:2740 camlib.py:4191 -msgid "" -"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 "" -"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. " - -#: camlib.py:2753 camlib.py:3770 camlib.py:4169 -msgid "" -"The End Move X,Y field in Edit -> Preferences has to be in the format (x, y) " -"but now there is only one value, not two." -msgstr "" -"The End Move X,Y field in Edit -> Preferences has to be in the format (x, y) " -"but now there is only one value, not two." - -#: camlib.py:2841 -msgid "Creating a list of points to drill..." -msgstr "Creating a list of points to drill..." - -#: camlib.py:2865 -msgid "Failed. Drill points inside the exclusion zones." -msgstr "Failed. Drill points inside the exclusion zones." - -#: camlib.py:2942 camlib.py:3921 camlib.py:4331 -msgid "Starting G-Code" -msgstr "Starting G-Code" - -#: camlib.py:3083 camlib.py:3336 camlib.py:3534 camlib.py:3934 camlib.py:4342 -msgid "Starting G-Code for tool with diameter" -msgstr "Starting G-Code for tool with diameter" - -#: camlib.py:3200 camlib.py:3452 camlib.py:3654 -msgid "G91 coordinates not implemented" -msgstr "G91 coordinates not implemented" - -#: camlib.py:3206 camlib.py:3459 camlib.py:3659 -msgid "The loaded Excellon file has no drills" -msgstr "The loaded Excellon file has no drills" - -#: camlib.py:3682 -msgid "Finished G-Code generation..." -msgstr "Finished G-Code generation..." - -#: camlib.py:3792 -msgid "" -"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 "" -"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." - -#: camlib.py:3806 camlib.py:4206 -msgid "" -"Cut_Z parameter is None or zero. Most likely a bad combinations of other " -"parameters." -msgstr "" -"Cut_Z parameter is None or zero. Most likely a bad combinations of other " -"parameters." - -#: camlib.py:3815 camlib.py:4215 -msgid "" -"The Cut Z parameter has positive value. It is the depth value to cut into " -"material.\n" -"The Cut Z parameter needs to have a negative value, assuming it is a typo " -"therefore the app will convert the value to negative.Check the resulting CNC " -"code (Gcode etc)." -msgstr "" -"The Cut Z parameter has positive value. It is the depth value to cut into " -"material.\n" -"The Cut Z parameter needs to have a negative value, assuming it is a typo " -"therefore the app will convert the value to negative.Check the resulting CNC " -"code (Gcode etc)." - -#: camlib.py:3828 camlib.py:4229 -msgid "Travel Z parameter is None or zero." -msgstr "Travel Z parameter is None or zero." - -#: camlib.py:3833 camlib.py:4234 -msgid "" -"The Travel Z parameter has negative value. It is the height value to travel " -"between cuts.\n" -"The Z Travel parameter needs to have a positive value, assuming it is a typo " -"therefore the app will convert the value to positive.Check the resulting CNC " -"code (Gcode etc)." -msgstr "" -"The Travel Z parameter has negative value. It is the height value to travel " -"between cuts.\n" -"The Z Travel parameter needs to have a positive value, assuming it is a typo " -"therefore the app will convert the value to positive.Check the resulting CNC " -"code (Gcode etc)." - -#: camlib.py:3841 camlib.py:4242 -msgid "The Z Travel parameter is zero. This is dangerous, skipping file" -msgstr "The Z Travel parameter is zero. This is dangerous, skipping file" - -#: camlib.py:3860 camlib.py:4265 +#: camlib.py:3000 camlib.py:4941 camlib.py:5701 msgid "Indexing geometry before generating G-Code..." msgstr "Indexing geometry before generating G-Code..." -#: camlib.py:4008 camlib.py:4419 +#: camlib.py:3030 camlib.py:3665 camlib.py:3901 +msgid "" +"The Cut Z parameter has positive value. It is the depth value to drill into " +"material.\n" +"The Cut Z parameter needs to have a negative value, assuming it is a typo " +"therefore the app will convert the value to negative. Check the resulting " +"CNC code (Gcode etc)." +msgstr "" +"The Cut Z parameter has positive value. It is the depth value to drill into " +"material.\n" +"The Cut Z parameter needs to have a negative value, assuming it is a typo " +"therefore the app will convert the value to negative. Check the resulting " +"CNC code (Gcode etc)." + +#: camlib.py:3037 +#, fuzzy +#| msgid "The Cut Z parameter is zero. There will be no cut, skipping file" +msgid "The Cut Z parameter is zero. There will be no cut, aborting" +msgstr "The Cut Z parameter is zero. There will be no cut, skipping file" + +#: camlib.py:3164 camlib.py:5250 +msgid "The End X,Y format has to be (x, y)." +msgstr "" + +#: camlib.py:3240 camlib.py:3749 camlib.py:3982 camlib.py:5015 camlib.py:5341 +#: camlib.py:5778 +msgid "Starting G-Code for tool with diameter" +msgstr "Starting G-Code for tool with diameter" + +#: camlib.py:3365 camlib.py:3870 camlib.py:4103 camlib.py:6715 +msgid "G91 coordinates not implemented" +msgstr "G91 coordinates not implemented" + +#: camlib.py:3374 +#, fuzzy, python-format +#| msgid "Finished G-Code generation" +msgid "Finished G-Code generation for tool: %s" +msgstr "Finished G-Code generation" + +#: camlib.py:3424 +msgid "" +"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 "" +"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. " + +#: camlib.py:3436 camlib.py:4850 camlib.py:5609 +msgid "" +"The End Move X,Y field in Edit -> Preferences has to be in the format (x, y) " +"but now there is only one value, not two." +msgstr "" +"The End Move X,Y field in Edit -> Preferences has to be in the format (x, y) " +"but now there is only one value, not two." + +#: camlib.py:3675 camlib.py:3911 camlib.py:4904 camlib.py:5191 camlib.py:5659 +msgid "The Cut Z parameter is zero. There will be no cut, skipping file" +msgstr "The Cut Z parameter is zero. There will be no cut, skipping file" + +#: camlib.py:4757 +msgid "Finished G-Code generation..." +msgstr "Finished G-Code generation..." + +#: camlib.py:4873 +msgid "" +"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 "" +"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." + +#: camlib.py:4887 camlib.py:5175 camlib.py:5642 +msgid "" +"Cut_Z parameter is None or zero. Most likely a bad combinations of other " +"parameters." +msgstr "" +"Cut_Z parameter is None or zero. Most likely a bad combinations of other " +"parameters." + +#: camlib.py:4896 camlib.py:5183 camlib.py:5651 +msgid "" +"The Cut Z parameter has positive value. It is the depth value to cut into " +"material.\n" +"The Cut Z parameter needs to have a negative value, assuming it is a typo " +"therefore the app will convert the value to negative.Check the resulting CNC " +"code (Gcode etc)." +msgstr "" +"The Cut Z parameter has positive value. It is the depth value to cut into " +"material.\n" +"The Cut Z parameter needs to have a negative value, assuming it is a typo " +"therefore the app will convert the value to negative.Check the resulting CNC " +"code (Gcode etc)." + +#: camlib.py:4909 camlib.py:5196 camlib.py:5665 +msgid "Travel Z parameter is None or zero." +msgstr "Travel Z parameter is None or zero." + +#: camlib.py:4914 camlib.py:5201 camlib.py:5670 +msgid "" +"The Travel Z parameter has negative value. It is the height value to travel " +"between cuts.\n" +"The Z Travel parameter needs to have a positive value, assuming it is a typo " +"therefore the app will convert the value to positive.Check the resulting CNC " +"code (Gcode etc)." +msgstr "" +"The Travel Z parameter has negative value. It is the height value to travel " +"between cuts.\n" +"The Z Travel parameter needs to have a positive value, assuming it is a typo " +"therefore the app will convert the value to positive.Check the resulting CNC " +"code (Gcode etc)." + +#: camlib.py:4922 camlib.py:5209 camlib.py:5678 +msgid "The Z Travel parameter is zero. This is dangerous, skipping file" +msgstr "The Z Travel parameter is zero. This is dangerous, skipping file" + +#: camlib.py:5086 camlib.py:5447 camlib.py:5852 msgid "Finished G-Code generation" msgstr "Finished G-Code generation" -#: camlib.py:4008 +#: camlib.py:5086 camlib.py:5447 msgid "paths traced" msgstr "paths traced" -#: camlib.py:4058 -msgid "Expected a Geometry, got" -msgstr "Expected a Geometry, got" - -#: camlib.py:4065 +#: camlib.py:5500 msgid "" "Trying to generate a CNC Job from a Geometry object without solid_geometry." msgstr "" "Trying to generate a CNC Job from a Geometry object without solid_geometry." -#: camlib.py:4106 +#: camlib.py:5542 msgid "" "The Tool Offset value is too negative to use for the current_geometry.\n" "Raise the value (in module) and try again." @@ -18353,39 +19669,57 @@ msgstr "" "The Tool Offset value is too negative to use for the current_geometry.\n" "Raise the value (in module) and try again." -#: camlib.py:4419 +#: camlib.py:5852 msgid " paths traced." msgstr " paths traced." -#: camlib.py:4447 +#: camlib.py:5880 msgid "There is no tool data in the SolderPaste geometry." msgstr "There is no tool data in the SolderPaste geometry." -#: camlib.py:4536 +#: camlib.py:5969 msgid "Finished SolderPaste G-Code generation" msgstr "Finished SolderPaste G-Code generation" -#: camlib.py:4536 +#: camlib.py:5969 msgid "paths traced." msgstr "paths traced." -#: camlib.py:4871 +#: camlib.py:6292 msgid "Parsing GCode file. Number of lines" msgstr "Parsing GCode file. Number of lines" -#: camlib.py:4978 +#: camlib.py:6404 msgid "Creating Geometry from the parsed GCode file. " msgstr "Creating Geometry from the parsed GCode file. " -#: camlib.py:5146 camlib.py:5419 camlib.py:5567 camlib.py:5736 +#: camlib.py:6461 +#, fuzzy +#| msgid "Starting G-Code for tool with diameter" +msgid "Parsing GCode file for tool diameter" +msgstr "Starting G-Code for tool with diameter" + +#: camlib.py:6462 +#, fuzzy +#| msgid "Nr of slots" +msgid "Number of lines" +msgstr "Nr of slots" + +#: camlib.py:6551 +#, fuzzy +#| msgid "Creating Geometry from the parsed GCode file. " +msgid "Creating Geometry from the parsed GCode file for tool diameter" +msgstr "Creating Geometry from the parsed GCode file. " + +#: camlib.py:6985 camlib.py:7133 camlib.py:7302 msgid "G91 coordinates not implemented ..." msgstr "G91 coordinates not implemented ..." -#: defaults.py:786 +#: defaults.py:845 msgid "Could not load defaults file." msgstr "Could not load defaults file." -#: defaults.py:799 +#: defaults.py:858 msgid "Failed to parse defaults file." msgstr "Failed to parse defaults file." @@ -18401,12 +19735,12 @@ msgstr "Expected a list of objects names separated by comma. Got" msgid "TclCommand Bounds done." msgstr "TclCommand Bounds done." -#: tclCommands/TclCommandCopperClear.py:281 tclCommands/TclCommandPaint.py:283 +#: tclCommands/TclCommandCopperClear.py:287 tclCommands/TclCommandPaint.py:283 #: tclCommands/TclCommandScale.py:81 msgid "Could not retrieve box object" msgstr "Could not retrieve box object" -#: tclCommands/TclCommandCopperClear.py:304 +#: tclCommands/TclCommandCopperClear.py:310 msgid "Expected either -box or -all." msgstr "Expected either -box or -all." @@ -18481,6 +19815,355 @@ msgstr "Origin set by offsetting all loaded objects with " msgid "No Geometry name in args. Provide a name and try again." msgstr "No Geometry name in args. Provide a name and try again." +#~ msgid "Basic Geo Parameters" +#~ msgstr "Basic Geo Parameters" + +#~ msgid "Advanced Geo Parameters" +#~ msgstr "Advanced Geo Parameters" + +#~ msgid "ReadMe?" +#~ msgstr "ReadMe?" + +#~ msgid "" +#~ "Toggle the display of the Gerber Apertures Table.\n" +#~ "When unchecked, it will delete all mark shapes\n" +#~ "that are drawn on canvas." +#~ msgstr "" +#~ "Toggle the display of the Gerber Apertures Table.\n" +#~ "When unchecked, it will delete all mark shapes\n" +#~ "that are drawn on canvas." + +#~ msgid "" +#~ "Generate the CNC Job.\n" +#~ "If milling then an additional Geometry object will be created" +#~ msgstr "" +#~ "Generate the CNC Job.\n" +#~ "If milling then an additional Geometry object will be created" + +#~ msgid "Travelled dist." +#~ msgstr "Travelled dist." + +#~ msgid "Prepend to CNC Code" +#~ msgstr "Prepend to CNC Code" + +#~ msgid "Append to CNC Code" +#~ msgstr "Append to CNC Code" + +#~ msgid "Toolchange G-Code" +#~ msgstr "Toolchange G-Code" + +#~ msgid "" +#~ "Type here any G-Code commands you would\n" +#~ "like to be executed when Toolchange event is encountered.\n" +#~ "This will constitute a Custom Toolchange GCode,\n" +#~ "or a Toolchange Macro.\n" +#~ "The FlatCAM variables are surrounded by '%' symbol.\n" +#~ "\n" +#~ "WARNING: it can be used only with a preprocessor file\n" +#~ "that has 'toolchange_custom' in it's name and this is built\n" +#~ "having as template the 'Toolchange Custom' posprocessor file." +#~ msgstr "" +#~ "Type here any G-Code commands you would\n" +#~ "like to be executed when Toolchange event is encountered.\n" +#~ "This will constitute a Custom Toolchange GCode,\n" +#~ "or a Toolchange Macro.\n" +#~ "The FlatCAM variables are surrounded by '%' symbol.\n" +#~ "\n" +#~ "WARNING: it can be used only with a preprocessor file\n" +#~ "that has 'toolchange_custom' in it's name and this is built\n" +#~ "having as template the 'Toolchange Custom' posprocessor file." + +#~ msgid "" +#~ "Type here any G-Code commands you would\n" +#~ "like to be executed when Toolchange event is encountered.\n" +#~ "This will constitute a Custom Toolchange GCode,\n" +#~ "or a Toolchange Macro.\n" +#~ "The FlatCAM variables are surrounded by '%' symbol.\n" +#~ "WARNING: it can be used only with a preprocessor file\n" +#~ "that has 'toolchange_custom' in it's name." +#~ msgstr "" +#~ "Type here any G-Code commands you would\n" +#~ "like to be executed when Toolchange event is encountered.\n" +#~ "This will constitute a Custom Toolchange GCode,\n" +#~ "or a Toolchange Macro.\n" +#~ "The FlatCAM variables are surrounded by '%' symbol.\n" +#~ "WARNING: it can be used only with a preprocessor file\n" +#~ "that has 'toolchange_custom' in it's name." + +#~ msgid "Use Toolchange Macro" +#~ msgstr "Use Toolchange Macro" + +#~ msgid "" +#~ "Check this box if you want to use\n" +#~ "a Custom Toolchange GCode (macro)." +#~ msgstr "" +#~ "Check this box if you want to use\n" +#~ "a Custom Toolchange GCode (macro)." + +#~ 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 "" +#~ "A list of the FlatCAM variables that can be used\n" +#~ "in the Toolchange event.\n" +#~ "They have to be surrounded by the '%' symbol" + +#~ msgid "FlatCAM CNC parameters" +#~ msgstr "FlatCAM CNC parameters" + +#~ msgid "tool number" +#~ msgstr "tool number" + +#~ msgid "tool diameter" +#~ msgstr "tool diameter" + +#~ msgid "for Excellon, total number of drills" +#~ msgstr "for Excellon, total number of drills" + +#~ msgid "X coord for Toolchange" +#~ msgstr "X coord for Toolchange" + +#~ msgid "Y coord for Toolchange" +#~ msgstr "Y coord for Toolchange" + +#~ msgid "Z coord for Toolchange" +#~ msgstr "Z coord for Toolchange" + +#~ msgid "depth where to cut" +#~ msgstr "depth where to cut" + +#~ msgid "height where to travel" +#~ msgstr "height where to travel" + +#~ msgid "the step value for multidepth cut" +#~ msgstr "the step value for multidepth cut" + +#~ msgid "the value for the spindle speed" +#~ msgstr "the value for the spindle speed" + +#~ msgid "time to dwell to allow the spindle to reach it's set RPM" +#~ msgstr "time to dwell to allow the spindle to reach it's set RPM" + +#~ msgid "" +#~ "Opens TAB to view/modify/print G-Code\n" +#~ "file." +#~ msgstr "" +#~ "Opens TAB to view/modify/print G-Code\n" +#~ "file." + +#~ msgid "" +#~ "Type here any G-Code commands you would like to be executed when " +#~ "Toolchange event is encountered.\n" +#~ "This will constitute a Custom Toolchange GCode, or a Toolchange Macro.\n" +#~ "The FlatCAM variables are surrounded by '%' symbol.\n" +#~ "WARNING: it can be used only with a preprocessor file that has " +#~ "'toolchange_custom' in it's name." +#~ msgstr "" +#~ "Type here any G-Code commands you would like to be executed when " +#~ "Toolchange event is encountered.\n" +#~ "This will constitute a Custom Toolchange GCode, or a Toolchange Macro.\n" +#~ "The FlatCAM variables are surrounded by '%' symbol.\n" +#~ "WARNING: it can be used only with a preprocessor file that has " +#~ "'toolchange_custom' in it's name." + +#~ msgid "Z depth for the cut" +#~ msgstr "Z depth for the cut" + +#~ msgid "Z height for travel" +#~ msgstr "Z height for travel" + +#~ 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" + +#~ msgid "Excellon Optimization" +#~ msgstr "Excellon Optimization" + +#~ msgid "Gcode" +#~ msgstr "Gcode" + +#~ msgid "" +#~ "Choose what to use for GCode generation:\n" +#~ "'Drills', 'Slots' or 'Both'.\n" +#~ "When choosing 'Slots' or 'Both', slots will be\n" +#~ "converted to drills." +#~ msgstr "" +#~ "Choose what to use for GCode generation:\n" +#~ "'Drills', 'Slots' or 'Both'.\n" +#~ "When choosing 'Slots' or 'Both', slots will be\n" +#~ "converted to drills." + +#~ msgid "Display Hover Shape" +#~ msgstr "Display Hover Shape" + +#~ msgid "A list of Geometry Editor parameters." +#~ msgstr "A list of Geometry Editor parameters." + +#~ 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 "" +#~ "Toggle the display of the Gerber Apertures Table.\n" +#~ "Also, on hide, it will delete all mark shapes\n" +#~ "that are drawn on canvas." + +#~ msgid "" +#~ "The axis should pass through a point or cut\n" +#~ " a specified box (in a FlatCAM object) through \n" +#~ "the center." +#~ msgstr "" +#~ "The axis should pass through a point or cut\n" +#~ " a specified box (in a FlatCAM object) through \n" +#~ "the center." + +#~ msgid "" +#~ "G-code does not have a G94 code and we will not include the code in the " +#~ "'Prepend to GCode' text box" +#~ msgstr "" +#~ "G-code does not have a G94 code and we will not include the code in the " +#~ "'Prepend to GCode' text box" + +#~ msgid "Cancelled. The Toolchange Custom code is enabled but it's empty." +#~ msgstr "Cancelled. The Toolchange Custom code is enabled but it's empty." + +#~ msgid "Toolchange G-code was replaced by a custom code." +#~ msgstr "Toolchange G-code was replaced by a custom code." + +#~ msgid "" +#~ "The used preprocessor file has to have in it's name: 'toolchange_custom'" +#~ msgstr "" +#~ "The used preprocessor file has to have in it's name: 'toolchange_custom'" + +#~ msgid "There is no preprocessor file." +#~ msgstr "There is no preprocessor file." + +#~ msgid "" +#~ "Excellon.create_geometry() -> a drill location was skipped due of not " +#~ "having a tool associated.\n" +#~ "Check the resulting GCode." +#~ msgstr "" +#~ "Excellon.create_geometry() -> a drill location was skipped due of not " +#~ "having a tool associated.\n" +#~ "Check the resulting GCode." + +#~ msgid "A. Automatic Bridge Gaps" +#~ msgstr "A. Automatic Bridge Gaps" + +#~ msgid "Generate Freeform Geometry" +#~ msgstr "Generate Freeform Geometry" + +#~ msgid "Generate Rectangular Geometry" +#~ msgstr "Generate Rectangular Geometry" + +#~ msgid "Added manual Bridge Gap." +#~ msgstr "Added manual Bridge Gap." + +#~ msgid "Gerber to be mirrored" +#~ msgstr "Gerber to be mirrored" + +#~ msgid "Excellon Object to be mirrored." +#~ msgstr "Excellon Object to be mirrored." + +#~ msgid "Geometry Obj to be mirrored." +#~ msgstr "Geometry Obj to be mirrored." + +#~ msgid "Mirror Parameters" +#~ msgstr "Mirror Parameters" + +#~ msgid "Mirror Axis" +#~ msgstr "Mirror Axis" + +#~ msgid "was mirrored" +#~ msgstr "was mirrored" + +#~ msgid "There is no Geometry object loaded ..." +#~ msgstr "There is no Geometry object loaded ..." + +#~ msgid "Image to PCB" +#~ msgstr "Image to PCB" + +#~ msgid "Generate Isolation Geometry" +#~ msgstr "Generate Isolation Geometry" + +#~ msgid "Wrong Tool Dia value format entered, use a number." +#~ msgstr "Wrong Tool Dia value format entered, use a number." + +#~ msgid "" +#~ "- 'Area Selection' - left mouse click to start selection of the area to " +#~ "be painted.\n" +#~ "Keeping a modifier key pressed (CTRL or SHIFT) will allow to add multiple " +#~ "areas.\n" +#~ "- 'All Polygons' - the Paint will start after click.\n" +#~ "- 'Reference Object' - will do non copper clearing within the area\n" +#~ "specified by another object." +#~ msgstr "" +#~ "- 'Area Selection' - left mouse click to start selection of the area to " +#~ "be painted.\n" +#~ "Keeping a modifier key pressed (CTRL or SHIFT) will allow to add multiple " +#~ "areas.\n" +#~ "- 'All Polygons' - the Paint will start after click.\n" +#~ "- 'Reference Object' - will do non copper clearing within the area\n" +#~ "specified by another object." + +#~ msgid "Paint Single failed." +#~ msgstr "Paint Single failed." + +#~ msgid "Paint Single Done." +#~ msgstr "Paint Single Done." + +#~ msgid "Polygon Paint started ..." +#~ msgstr "Polygon Paint started ..." + +#~ msgid "Painting polygons..." +#~ msgstr "Painting polygons..." + +#~ msgid "Paint All Done." +#~ msgstr "Paint All Done." + +#~ msgid "Paint All with Rest-Machining done." +#~ msgstr "Paint All with Rest-Machining done." + +#~ msgid "Paint Poly All Done." +#~ msgstr "Paint Poly All Done." + +#~ msgid "Paint Area Done." +#~ msgstr "Paint Area Done." + +#~ msgid "Paint Area failed." +#~ msgstr "Paint Area failed." + +#~ msgid "Paint Poly Area Done." +#~ msgstr "Paint Poly Area Done." + +#~ msgid "Import 2-file Excellon" +#~ msgstr "Import 2-file Excellon" + +#~ msgid "Data" +#~ msgstr "Data" + +#~ msgid "If you like or use this program you can make a donation" +#~ msgstr "If you like or use this program you can make a donation" + +#, python-format +#~ msgid "" +#~ "You don't have to make a donation %s, and it is totally optional but:" +#~ msgstr "" +#~ "You don't have to make a donation %s, and it is totally optional but:" + +#~ msgid "it will be welcomed with joy" +#~ msgstr "it will be welcomed with joy" + +#~ msgid "it will give me a reason to continue" +#~ msgstr "it will give me a reason to continue" + +#~ msgid "Could not export Gerber file." +#~ msgstr "Could not export Gerber file." + +#~ msgid "Expected a Geometry, got" +#~ msgstr "Expected a Geometry, got" + #~ msgid "Angle:" #~ msgstr "Angle:" @@ -18674,9 +20357,6 @@ msgstr "No Geometry name in args. Provide a name and try again." #~ "Or enter the coords in format (x, y) in the\n" #~ "Point Entry field and click Flip on X(Y)" -#~ msgid "Mirror Reference point" -#~ msgstr "Mirror Reference point" - #~ 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" @@ -18689,9 +20369,6 @@ msgstr "No Geometry name in args. Provide a name and try again." #~ msgid "Ref. Point" #~ msgstr "Ref. Point" -#~ msgid "Add Tool from Tools DB" -#~ msgstr "Add Tool from Tools DB" - #~ msgid "FlatCAM Object" #~ msgstr "FlatCAM Object" @@ -18839,13 +20516,6 @@ msgstr "No Geometry name in args. Provide a name and try again." #~ msgid "New Blank Excellon" #~ msgstr "New Blank Excellon" -#~ msgid "" -#~ "Relative measurement.\n" -#~ "Reference is last click position" -#~ msgstr "" -#~ "Relative measurement.\n" -#~ "Reference is last click position" - #~| msgid "Clearance" #~ msgid "Clear areas" #~ msgstr "Clear areas" @@ -19258,18 +20928,12 @@ msgstr "No Geometry name in args. Provide a name and try again." #~ msgid "Move action cancelled." #~ msgstr "Move action cancelled." -#~ msgid "Diameter for the new tool." -#~ msgstr "Diameter for the new tool." - #~ msgid "Create Paint Geometry" #~ msgstr "Create Paint Geometry" #~ msgid "Paint Tool. Reading parameters." #~ msgstr "Paint Tool. Reading parameters." -#~ msgid "Paint Tool. Rest machining painting area task started." -#~ msgstr "Paint Tool. Rest machining painting area task started." - #~ msgid "Properties Tool was not displayed. No object selected." #~ msgstr "Properties Tool was not displayed. No object selected." @@ -19312,9 +20976,6 @@ msgstr "No Geometry name in args. Provide a name and try again." #~ msgid "Default Units" #~ msgstr "Default Units" -#~ msgid "Optimization Time" -#~ msgstr "Optimization Time" - #~ msgid "Coordinates decimals" #~ msgstr "Coordinates decimals" @@ -19627,9 +21288,6 @@ msgstr "No Geometry name in args. Provide a name and try again." #~ msgid "Generate Gap" #~ msgstr "Generate Gap" -#~ msgid "Reset" -#~ msgstr "Reset" - #~ msgid "Resets all the fields." #~ msgstr "Resets all the fields." @@ -19778,9 +21436,6 @@ msgstr "No Geometry name in args. Provide a name and try again." #~ msgid "tool = tool number" #~ msgstr "tool = tool number" -#~ msgid "tooldia = tool diameter" -#~ msgstr "tooldia = tool diameter" - #~ msgid "t_drills = for Excellon, total number of drills" #~ msgstr "t_drills = for Excellon, total number of drills" @@ -19959,9 +21614,6 @@ msgstr "No Geometry name in args. Provide a name and try again." #~ msgid "Stop" #~ msgstr "Stop" -#~ msgid "Generating panel ..." -#~ msgstr "Generating panel ..." - #~ msgid "Spawning copies" #~ msgstr "Spawning copies" diff --git a/locale/es/LC_MESSAGES/strings.mo b/locale/es/LC_MESSAGES/strings.mo index b45004afe88cdb59851951a4ab8124c494a30c73..deafd0e961d8ce8a26bd0587df52f2e983d9a655 100644 GIT binary patch delta 67715 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