From c17f7752cba97a8404bb2615b8c72a540e23a361 Mon Sep 17 00:00:00 2001 From: Kuzemko Alexsandr Date: Sat, 23 Jul 2022 16:19:23 +0300 Subject: [PATCH 1/5] Initial commit for translate WB --- InitGui.py | 3 +- kicadStepUpCMD.py | 273 +++++++------- translations/ksu.ts | 901 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1040 insertions(+), 137 deletions(-) create mode 100644 translations/ksu.ts diff --git a/InitGui.py b/InitGui.py index 53f3c68..23a4eec 100644 --- a/InitGui.py +++ b/InitGui.py @@ -32,12 +32,13 @@ import ksu_locator from kicadStepUpCMD import * + ksuWBpath = os.path.dirname(ksu_locator.__file__) #sys.path.append(ksuWB + '/Gui') ksuWB_icons_path = os.path.join( ksuWBpath, 'Resources', 'icons') ksuWB_ui_path = os.path.join( ksuWBpath, 'Resources','ui' ) -# FreeCADGui.addLanguagePath(ksuWBpath+"/translations") +FreeCADGui.addLanguagePath(ksuWBpath+"/translations") global main_ksu_Icon main_ksu_Icon = os.path.join( ksuWB_icons_path , 'kicad-StepUp-tools-WB.svg') diff --git a/kicadStepUpCMD.py b/kicadStepUpCMD.py index 711a0e8..e8148eb 100644 --- a/kicadStepUpCMD.py +++ b/kicadStepUpCMD.py @@ -16,6 +16,7 @@ import Draft, DraftGeomUtils #, OpenSCAD2Dgeom import PySide from PySide import QtGui, QtCore +from PySide.QtCore import QT_TRANSLATE_NOOP QtWidgets = QtGui from pivy import coin @@ -652,7 +653,7 @@ class Ui_Offset_value(object): def setupUi(self, Offset_value): Offset_value.setObjectName("Offset_value") Offset_value.resize(292, 177) - Offset_value.setWindowTitle("Offset value") + Offset_value.setWindowTitle(translate("ksu","Offset value")) Offset_value.setToolTip("") self.buttonBoxLayer = QtWidgets.QDialogButtonBox(Offset_value) self.buttonBoxLayer.setGeometry(QtCore.QRect(10, 130, 271, 32)) @@ -668,19 +669,19 @@ def setupUi(self, Offset_value): self.offset_label = QtWidgets.QLabel(self.gridLayoutWidget) self.offset_label.setMinimumSize(QtCore.QSize(0, 0)) self.offset_label.setToolTip("") - self.offset_label.setText("Offset [+/- mm]:") + self.offset_label.setText(translate("ksu","Offset [+/- mm]:")) self.offset_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.offset_label.setObjectName("offset_label") self.gridLayout.addWidget(self.offset_label, 0, 0, 1, 1) self.lineEdit_offset = QtWidgets.QLineEdit(self.gridLayoutWidget) - self.lineEdit_offset.setToolTip("Offset value [+/- mm]") + self.lineEdit_offset.setToolTip(translate("ksu","Offset value [+/- mm]")) self.lineEdit_offset.setText("0.16") self.lineEdit_offset.setObjectName("lineEdit_offset") self.gridLayout.addWidget(self.lineEdit_offset, 0, 1, 1, 1) self.checkBox = QtWidgets.QCheckBox(self.gridLayoutWidget) - self.checkBox.setToolTip("Arc or Intersection Offset method") + self.checkBox.setToolTip(translate("ksu","Arc or Intersection Offset method")) self.checkBox.setLayoutDirection(QtCore.Qt.RightToLeft) - self.checkBox.setText("Arc") + self.checkBox.setText(translate("ksu","Arc")) self.checkBox.setChecked(True) self.checkBox.setObjectName("checkBox") self.gridLayout.addWidget(self.checkBox, 2, 0, 1, 1) @@ -688,12 +689,12 @@ def setupUi(self, Offset_value): self.offset_label_2 = QtWidgets.QLabel(self.gridLayoutWidget) self.offset_label_2.setMinimumSize(QtCore.QSize(0, 0)) self.offset_label_2.setToolTip("") - self.offset_label_2.setText("Offset Y [mm]:") + self.offset_label_2.setText(translate("ksu","Offset Y [mm]:")) self.offset_label_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.offset_label_2.setObjectName("offset_label_2") self.gridLayout.addWidget(self.offset_label_2, 1, 0, 1, 1) self.lineEdit_offset_2 = QtWidgets.QLineEdit(self.gridLayoutWidget) - self.lineEdit_offset_2.setToolTip("Offset Y value [+/- mm]") + self.lineEdit_offset_2.setToolTip(translate("ksu","Offset Y value [+/- mm]")) self.lineEdit_offset_2.setText("5.0") self.lineEdit_offset_2.setObjectName("lineEdit_offset_2") self.gridLayout.addWidget(self.lineEdit_offset_2, 1, 1, 1, 1) @@ -732,19 +733,19 @@ def setupUi(self, CDialog): self.buttonBox.setObjectName("buttonBox") self.Label_howto = QtGui.QLabel(CDialog) self.Label_howto.setGeometry(QtCore.QRect(20, 5, 265, 61)) - self.Label_howto.setToolTip("Select a Sketch and Parameters\n" + self.Label_howto.setToolTip(translate("ksu","Select a Sketch and Parameters\n" "to constraint the sketch\n" -"NB the Sketch will be modified!") +"NB the Sketch will be modified!")) self.Label_howto.setStatusTip("") self.Label_howto.setWhatsThis("") - self.Label_howto.setText("Select a Sketch and Parameters to
constrain the sketch.
NB the Sketch will be modified!
") + self.Label_howto.setText(translate("ksu","Select a Sketch and Parameters to
constrain the sketch.
NB the Sketch will be modified!
")) self.Label_howto.setObjectName("Label_howto") self.Constraints = QtGui.QGroupBox(CDialog) self.Constraints.setGeometry(QtCore.QRect(10, 70, 145, 166)) self.Constraints.setToolTip("") self.Constraints.setStatusTip("") self.Constraints.setWhatsThis("") - self.Constraints.setTitle("Constraints") + self.Constraints.setTitle(translate("ksu","Constraints")) self.Constraints.setObjectName("Constraints") self.verticalLayoutWidget = QtGui.QWidget(self.Constraints) self.verticalLayoutWidget.setGeometry(QtCore.QRect(12, 20, 125, 137)) @@ -754,8 +755,8 @@ def setupUi(self, CDialog): self.verticalLayout.setObjectName("verticalLayout") self.all_constraints = QtGui.QRadioButton(self.verticalLayoutWidget) self.all_constraints.setMinimumSize(QtCore.QSize(92, 64)) - self.all_constraints.setToolTip("Lock Coincident, Horizontal\n" -"and Vertical") + self.all_constraints.setToolTip(translate("ksu","Lock Coincident, Horizontal\n" +"and Vertical")) self.all_constraints.setText("") self.all_constraints.setIcon(icon) self.all_constraints.setIconSize(QtCore.QSize(48, 48)) @@ -764,7 +765,7 @@ def setupUi(self, CDialog): self.verticalLayout.addWidget(self.all_constraints) self.coincident = QtGui.QRadioButton(self.verticalLayoutWidget) self.coincident.setMinimumSize(QtCore.QSize(92, 64)) - self.coincident.setToolTip("Lock Coincident") + self.coincident.setToolTip(translate("ksu","Lock Coincident")) self.coincident.setText("") icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap("Sketcher_LockCoincident.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) @@ -778,7 +779,7 @@ def setupUi(self, CDialog): self.Tolerance.setToolTip("") self.Tolerance.setStatusTip("") self.Tolerance.setWhatsThis("") - self.Tolerance.setTitle("Tolerance") + self.Tolerance.setTitle(translate("ksu","Tolerance")) self.Tolerance.setObjectName("Tolerance") self.verticalLayoutWidget_2 = QtGui.QWidget(self.Tolerance) self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(8, 20, 125, 57)) @@ -790,13 +791,13 @@ def setupUi(self, CDialog): self.label.setToolTip("mm") self.label.setStatusTip("") self.label.setWhatsThis("") - self.label.setText("tolerance in mm") + self.label.setText(translate("ksu","tolerance in mm")) self.label.setObjectName("label") self.verticalLayout_2.addWidget(self.label) self.tolerance = QtGui.QLineEdit(self.verticalLayoutWidget_2) self.tolerance.setMinimumSize(QtCore.QSize(64, 22)) self.tolerance.setMaximumSize(QtCore.QSize(64, 22)) - self.tolerance.setToolTip("Tolerance on Constraints") + self.tolerance.setToolTip(translate("ksu","Tolerance on Constraints")) self.tolerance.setStatusTip("") self.tolerance.setWhatsThis("") self.tolerance.setInputMethodHints(QtCore.Qt.ImhPreferNumbers) @@ -807,7 +808,7 @@ def setupUi(self, CDialog): self.verticalLayout_2.addWidget(self.tolerance) self.rmvXGeo = QtGui.QCheckBox(CDialog) self.rmvXGeo.setGeometry(QtCore.QRect(170, 180, 141, 20)) - self.rmvXGeo.setToolTip("remove duplicated geometries") + self.rmvXGeo.setToolTip(translate("ksu","remove duplicated geometries")) self.rmvXGeo.setStatusTip("") self.rmvXGeo.setText("rmv xtr geo") self.rmvXGeo.setObjectName("rmvXGeo") @@ -861,8 +862,8 @@ class ksuTools: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'kicad-StepUp-icon.svg') , # the name of a svg file available in the resources - 'MenuText': "ksu Tools" , - 'ToolTip' : "Activate the main\nkicad StepUp Tools Dialog"} + 'MenuText': QT_TRANSLATE_NOOP("ksuTools","ksu Tools") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuTools","Activate the main\nkicad StepUp Tools Dialog")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -890,7 +891,7 @@ class ksuToolsContour2Poly: "ksu tools Shapes Selection to PolyLine Sketch" def GetResources(self): - mybtn_tooltip ="ksu tools \'RF PolyLined Sketch\'\nSelection\'s Shapes to PolyLine Sketch" + mybtn_tooltip = QT_TRANSLATE_NOOP("ksuToolsContour2Poly","ksu tools \'RF PolyLined Sketch\'\nSelection\'s Shapes to PolyLine Sketch") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Sketcher_CreatePolyline-RF.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -993,8 +994,8 @@ def __init__(self, xs, ys, xe, ye): doc.commitTransaction() - msg="""PolyLine Contour generated

""" - msg+="For PolyLine Pads, please add \'circles\' inside each closed polyline
" + msg=translate("ksu","""PolyLine Contour generated

""") + msg+=translate("ksu","For PolyLine Pads, please add \'circles\' inside each closed polyline
") info_msg(msg) #stop #FreeCAD.ActiveDocument.recompute() @@ -1007,8 +1008,8 @@ class ksuToolsMoveSketch: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Sketcher_Move.svg') , # the name of a svg file available in the resources - 'MenuText': "Move Sketch" , - 'ToolTip' : "ksu Move 2D Sketch"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsMoveSketch","Move Sketch") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsMoveSketch","ksu Move 2D Sketch")} def IsActive(self): sel = FreeCADGui.Selection.getSelection() @@ -1027,7 +1028,7 @@ def Activated(self): offsetDlg = QtGui.QDialog() ui = Ui_Offset_value() ui.setupUi(offsetDlg) - ui.offset_label.setText("Select a Sketch and Parameters to
move the sketch.
Offset X:") + ui.offset_label.setText(translate("ksu","Select a Sketch and Parameters to
move the sketch.
Offset X:")) ui.lineEdit_offset.setText("10.0") ui.offset_label_2.setText("Offset Y [mm]:") ui.lineEdit_offset_2.setToolTip("Offset Y value [+/- mm]") @@ -1079,8 +1080,8 @@ class ksuToolsOffset2D: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Offset2D.svg') , # the name of a svg file available in the resources - 'MenuText': "Offset 2D" , - 'ToolTip' : "ksu Offset 2D object"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsOffset2D","Offset 2D") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsOffset2D","ksu Offset 2D object")} def IsActive(self): sel = FreeCADGui.Selection.getSelection() @@ -1128,7 +1129,7 @@ class ksuToolsExtrude: "ksu tools Extrude Selection" def GetResources(self): - mybtn_tooltip ="ksu tools \'Extrude\'\nExtrude selection" + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsExtrude","ksu tools \'Extrude\'\nExtrude selection") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Part_Extrude.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -1155,7 +1156,7 @@ class ksuToolsSkValidate: "ksu tools Sketcher Validate Selection" def GetResources(self): - mybtn_tooltip ="ksu tools \'Sketcher Validate\'\nValidate selected Sketch" + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsSkValidate","ksu tools \'Sketcher Validate\'\nValidate selected Sketch") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Sketcher_Validate.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -1183,8 +1184,8 @@ class ksuToolsOpenBoard: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'importBoard.svg') , # the name of a svg file available in the resources - 'MenuText': "Load Board" , - 'ToolTip' : "ksu Load KiCad PCB Board and Parts"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsOpenBoard","Load Board") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsOpenBoard","ksu Load KiCad PCB Board and Parts")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -1219,8 +1220,8 @@ class ksuToolsLoadFootprint: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'importFP.svg') , # the name of a svg file available in the resources - 'MenuText': "Load FootPrint" , - 'ToolTip' : "ksu Load KiCad PCB FootPrint"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsLoadFootprint","Load FootPrint") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsLoadFootprint","ksu Load KiCad PCB FootPrint")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -1251,8 +1252,8 @@ class ksuToolsExportModel: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'export3DModel.svg') , # the name of a svg file available in the resources - 'MenuText': "Export 3D Model" , - 'ToolTip' : "ksu Export 3D Model to KiCad"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsExportModel","Export 3D Model") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsExportModel","ksu Export 3D Model to KiCad")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -1300,8 +1301,8 @@ class ksuToolsImport3DStep: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'add_block_y.svg') , # the name of a svg file available in the resources - 'MenuText': "Import 3D Step" , - 'ToolTip' : "ksu Import 3D Step Model"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsImport3DStep","Import 3D Step") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsImport3DStep","ksu Import 3D Step Model")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -1330,8 +1331,8 @@ class ksuToolsExport3DStep: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'export3DStep.svg') , # the name of a svg file available in the resources - 'MenuText': "Export 3D to Step" , - 'ToolTip' : "ksu Export selected objects to Step Model"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsExport3DStep","Export 3D to Step") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsExport3DStep","ksu Export selected objects to Step Model")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -1360,8 +1361,8 @@ class ksuToolsMakeUnion: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'fusion.svg') , # the name of a svg file available in the resources - 'MenuText': "Make Union" , - 'ToolTip' : "ksu Make a Union of selected objects"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsMakeUnion","Make Union") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsMakeUnion","ksu Make a Union of selected objects")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -1390,8 +1391,8 @@ class ksuToolsMakeCompound: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'compound.svg') , # the name of a svg file available in the resources - 'MenuText': "Make Compound" , - 'ToolTip' : "ksu Make a Compound of selected objects"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsMakeCompound","Make Compound") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsMakeCompound","ksu Make a Compound of selected objects")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -1420,8 +1421,8 @@ class ksuToolsPushPCB: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Sketcher_Rectangle.svg') , # the name of a svg file available in the resources - 'MenuText': "Push Sketch to PCB" , - 'ToolTip' : "ksu Push Sketch to PCB Edge"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsPushPCB","Push Sketch to PCB") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsPushPCB","ksu Push Sketch to PCB Edge")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -1512,8 +1513,8 @@ class ksuToolsPullPCB: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Sketcher_Pull.svg') , # the name of a svg file available in the resources - 'MenuText': "Pull Sketch from PCB" , - 'ToolTip' : "ksu Pull Sketch from PCB Edge"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsPullPCB","Pull Sketch from PCB") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsPullPCB","ksu Pull Sketch from PCB Edge")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -1549,8 +1550,8 @@ class ksuToolsPushMoved: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'PushMoved.svg') , # the name of a svg file available in the resources - 'MenuText': "Push 3D moved model(s) to PCB" , - 'ToolTip' : "ksu Push 3D moved model(s) to PCB"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsPushMoved","Push 3D moved model(s) to PCB") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsPushMoved","ksu Push 3D moved model(s) to PCB")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -1583,8 +1584,8 @@ class ksuToolsPullMoved: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'PullMoved.svg') , # the name of a svg file available in the resources - 'MenuText': "Pull 3D model(s) placement from PCB" , - 'ToolTip' : "ksu Pull 3D model(s) placement from PCB"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsPullMoved","Pull 3D model(s) placement from PCB") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsPullMoved","ksu Pull 3D model(s) placement from PCB")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -1617,8 +1618,8 @@ class ksuAsm2Part: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Assembly_To_Part.svg') , # the name of a svg file available in the resources - 'MenuText': "Convert an Assembly (A3) to Part hierarchy" , - 'ToolTip' : "ksu Convert an Assembly (A3) to Part hierarchy"} + 'MenuText': QT_TRANSLATE_NOOP("ksuAsm2Part","Convert an Assembly (A3) to Part hierarchy") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuAsm2Part","ksu Convert an Assembly (A3) to Part hierarchy")} def IsActive(self): import FreeCADGui @@ -1753,8 +1754,8 @@ class ksuToolsSync3DModels: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Sync3Dmodels.svg') , # the name of a svg file available in the resources - 'MenuText': "Sync 3D model(s) Ref & TimeStamps with PCB" , - 'ToolTip' : "ksu Sync 3D model(s) Ref & TimeStamps\nof the Selected 3D model with kicad PCB"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsSync3DModels","Sync 3D model(s) Ref & TimeStamps with PCB") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsSync3DModels","ksu Sync 3D model(s) Ref & TimeStamps\nof the Selected 3D model with kicad PCB")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -1788,8 +1789,8 @@ class ksuToolsGeneratePositions: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'File_Positions.svg') , # the name of a svg file available in the resources - 'MenuText': "tools Generate 3D models Positions" , - 'ToolTip' : "ksu Generate 3D models Positions\nData for Active Document\n[MCAD Synchronize]"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsGeneratePositions","tools Generate 3D models Positions") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsGeneratePositions","ksu Generate 3D models Positions\nData for Active Document\n[MCAD Synchronize]")} def IsActive(self): if FreeCAD.ActiveDocument is None: @@ -1815,8 +1816,8 @@ class ksuToolsComparePositions: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Compare_Positions.svg') , # the name of a svg file available in the resources - 'MenuText': "tools Compare 3D models Positions" , - 'ToolTip' : "ksu Compare 3D models Positions\nData with the Active Document\n[MCAD Synchronize]"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsComparePositions","tools Compare 3D models Positions") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsComparePositions","ksu Compare 3D models Positions\nData with the Active Document\n[MCAD Synchronize]")} def IsActive(self): if FreeCAD.ActiveDocument is None: @@ -1863,8 +1864,8 @@ class ksuToolsCollisions: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'collisions.svg') , # the name of a svg file available in the resources - 'MenuText': "Check Collisions" , - 'ToolTip' : "ksu Check Collisions and Interferences"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsCollisions","Check Collisions") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsCollisions","ksu Check Collisions and Interferences")} def IsActive(self): return True @@ -1889,8 +1890,8 @@ class ksuTools3D2D: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , '3Dto2D.svg') , # the name of a svg file available in the resources - 'MenuText': "3D to 2D" , - 'ToolTip' : "ksu 3D object to 2D projection"} + 'MenuText': QT_TRANSLATE_NOOP("ksuTools3D2D","3D to 2D") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuTools3D2D","ksu 3D object to 2D projection")} def IsActive(self): return True @@ -1937,8 +1938,8 @@ class ksuToolsTurnTable: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'texture_turntable.svg') , # the name of a svg file available in the resources - 'MenuText': "TurnTable" , - 'ToolTip' : "ksu TurnTable"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsTurnTable","TurnTable") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsTurnTable","ksu TurnTable")} def IsActive(self): if FreeCAD.ActiveDocument is None: @@ -1999,8 +2000,8 @@ class ksuToolsConstrainator: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Sketcher_LockAll.svg') , # the name of a svg file available in the resources - 'MenuText': "Constrain a Sketch" , - 'ToolTip' : "ksu Fix & auto Constrain a Sketch"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsTurnTable","Constrain a Sketch") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsTurnTable","ksu Fix & auto Constrain a Sketch")} def IsActive(self): return True @@ -2068,8 +2069,8 @@ class ksuToolsDiscretize: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Discretize.svg') , # the name of a svg file available in the resources - 'MenuText': "Discretize" , - 'ToolTip' : "ksu Discretize a shape/outline to a Sketch"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsDiscretize","Discretize") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsDiscretize","ksu Discretize a shape/outline to a Sketch")} def IsActive(self): return True @@ -2109,8 +2110,8 @@ class ksuToolsEdges2Sketch: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Edges2Sketch.svg') , # the name of a svg file available in the resources - 'MenuText': "Edges to Sketch" , - 'ToolTip' : "ksu Select coplanar edge(s) or Face(s) or \na single Vertex of a coplanar outline \nto get a corresponding Sketch"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsEdges2Sketch","Edges to Sketch") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsEdges2Sketch","ksu Select coplanar edge(s) or Face(s) or \na single Vertex of a coplanar outline \nto get a corresponding Sketch")} def IsActive(self): sel = FreeCADGui.Selection.getSelection() @@ -2141,8 +2142,8 @@ class ksuToolsResetPartPlacement: ##################################### def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'resetPartPlacement.svg') , # the name of a svg file available in the resources - 'MenuText': "Reset Part Placement" , - 'ToolTip' : "ksu Reset Placement for all Part containers in selection"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsResetPartPlacement","Reset Part Placement") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsResetPartPlacement","ksu Reset Placement for all Part containers in selection")} def getLinkGlobalPlacement(self,ob): # print(ob.Name,'Link object') # FreeCAD.Console.PrintMessage(ob.Parents) @@ -2275,8 +2276,8 @@ class ksuToolsResetPlacement: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'resetPlacement.svg') , # the name of a svg file available in the resources - 'MenuText': "Reset Placement" , - 'ToolTip' : "ksu Reset Placement for a Shape"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsResetPlacement","Reset Placement") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsResetPlacement","ksu Reset Placement for a Shape")} def IsActive(self): doc = FreeCAD.activeDocument() @@ -2312,8 +2313,8 @@ class ksuTools2D2Sketch: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , '2DtoSketch.svg') , # the name of a svg file available in the resources - 'MenuText': "2D to Sketch" , - 'ToolTip' : "ksu 2D object (or DXF) to Sketch"} + 'MenuText': QT_TRANSLATE_NOOP("ksuTools2D2Sketch","2D to Sketch") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuTools2D2Sketch","ksu 2D object (or DXF) to Sketch")} def IsActive(self): return True @@ -2503,8 +2504,8 @@ class ksuTools2DtoFace: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , '2DtoFace.svg') , # the name of a svg file available in the resources - 'MenuText': "2D to Face" , - 'ToolTip' : "ksu 2D object (or DXF) to Surface for extruding"} + 'MenuText': QT_TRANSLATE_NOOP("ksuTools2DtoFace","2D to Face") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuTools2DtoFace","ksu 2D object (or DXF) to Surface for extruding")} def IsActive(self): return True @@ -2548,8 +2549,8 @@ class ksuToolsSimplifySketck: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'SimplifySketch.svg') , # the name of a svg file available in the resources - 'MenuText': "Simplify Sketch" , - 'ToolTip' : "ksu Simplifying Sketch to Arcs and Lines"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsSimplifySketck","Simplify Sketch") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsSimplifySketck","ksu Simplifying Sketch to Arcs and Lines")} def IsActive(self): return True @@ -2575,8 +2576,8 @@ class ksuToolsBsplineNormalize: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Sketcher_BSplineNormalize.svg') , # the name of a svg file available in the resources - 'MenuText': "Geo to Bspline" , - 'ToolTip' : "ksu Convert Geometry to Bspline for KiCAD format"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsBsplineNormalize","Geo to Bspline") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsBsplineNormalize","ksu Convert Geometry to Bspline for KiCAD format")} def IsActive(self): return True @@ -2602,8 +2603,8 @@ class ksuToolsFootprintGen: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'exportFootprint.svg') , # the name of a svg file available in the resources - 'MenuText': "Footprint generator" , - 'ToolTip' : "ksu Footprint editor and exporter"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsFootprintGen","Footprint generator") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsFootprintGen","ksu Footprint editor and exporter")} def IsActive(self): return True @@ -2632,8 +2633,8 @@ class ksuToolsStepImportModeSTD: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'ImportModeSTD.svg') , # the name of a svg file available in the resources - 'MenuText': "disable Full STEP Import Mode" , - 'ToolTip' : "ksu tools disable Full STEP Import Mode"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsStepImportModeSTD","disable Full STEP Import Mode") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsStepImportModeSTD","ksu tools disable Full STEP Import Mode")} def IsActive(self): paramGetVS = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Import/hSTEP") @@ -2667,8 +2668,8 @@ class ksuToolsStepImportModeComp: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'ImportModeSimplified.svg') , # the name of a svg file available in the resources - 'MenuText': "disable Simplified STEP Import Mode" , - 'ToolTip' : "ksu tools disable Simplified STEP Import Mode"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsStepImportModeComp","disable Simplified STEP Import Mode") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsStepImportModeComp","ksu tools disable Simplified STEP Import Mode")} def IsActive(self): paramGetVS = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Import/hSTEP") @@ -2702,8 +2703,8 @@ class ksuToolsCopyPlacement: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Placement_Copy.svg') , # the name of a svg file available in the resources - 'MenuText': "Copy Placement 1st to 2nd" , - 'ToolTip' : "ksu tools Copy Placement 1st to 2nd"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsCopyPlacement","Copy Placement 1st to 2nd") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsCopyPlacement","ksu tools Copy Placement 1st to 2nd")} def IsActive(self): return True @@ -2743,8 +2744,8 @@ class ksuToolsColoredClone: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'CloneYlw.svg') , # the name of a svg file available in the resources - 'MenuText': "Colored Clone" , - 'ToolTip' : "Colored Clone object"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsColoredClone","Colored Clone") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsColoredClone","Colored Clone object")} def IsActive(self): return True @@ -2812,8 +2813,8 @@ class ksuToolsColoredBinder: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'SubShapeBinderYlw.svg') , # the name of a svg file available in the resources - 'MenuText': "Colored Binder" , - 'ToolTip' : "Colored Binder object"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsColoredBinder","Colored Binder") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsColoredBinder","Colored Binder object")} def IsActive(self): return True @@ -2891,8 +2892,8 @@ class ksuToolsReLinkBinder: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'SubShapeBinderRelink.svg') , # the name of a svg file available in the resources - 'MenuText': "Relink Binder" , - 'ToolTip' : "Relink Binder object Select Binder and an Object to be linked"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsReLinkBinder","Relink Binder") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsReLinkBinder","Relink Binder object Select Binder and an Object to be linked")} def IsActive(self): return True @@ -2946,8 +2947,8 @@ class ksuToolsUnion: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Part-Fuse.svg') , # the name of a svg file available in the resources - 'MenuText': "Fuse objects" , - 'ToolTip' : "Make Union (Fuse) objects"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsUnion","Fuse objects") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsUnion","Make Union (Fuse) objects")} def IsActive(self): return True @@ -2992,8 +2993,8 @@ class ksuToolsSimpleCopy: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'simple_copy.svg') , # the name of a svg file available in the resources - 'MenuText': "Simple Copy" , - 'ToolTip' : "ksu Simple Copy object"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsSimpleCopy","Simple Copy") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsSimpleCopy","ksu Simple Copy object")} def IsActive(self): return True @@ -3090,8 +3091,8 @@ class ksuToolsDeepCopy: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'deep_copy.svg') , # the name of a svg file available in the resources - 'MenuText': "PartDN Copy" , - 'ToolTip' : "ksu PartDN Copy object\nwith relative placement\n[flattened model]"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsDeepCopy","PartDN Copy") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsDeepCopy","ksu PartDN Copy object\nwith relative placement\n[flattened model]")} def IsActive(self): if int(float(FreeCAD.Version()[0]))==0 and int(float(FreeCAD.Version()[1]))<=16: #active only for FC>0.16 @@ -3350,8 +3351,8 @@ class ksuToolsRemoveFromTree: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'TreeItemOutMinus.svg') , # the name of a svg file available in the resources - 'MenuText': "Remove from Tree" , - 'ToolTip' : "ksu Remove Object(s) from Container Tree\nkeeping Placement\nFirst Selection is the Container"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsRemoveFromTree","Remove from Tree") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsRemoveFromTree","ksu Remove Object(s) from Container Tree\nkeeping Placement\nFirst Selection is the Container")} def IsActive(self): return True @@ -3412,8 +3413,8 @@ class ksuToolsAddToTree: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'TreeItemInPlus.svg') , # the name of a svg file available in the resources - 'MenuText': "Add to Tree" , - 'ToolTip' : "ksu Add Object(s) to Container Tree\nkeeping Placement\nFirst Selection is the Container"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsAddToTree","Add to Tree") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsAddToTree","ksu Add Object(s) to Container Tree\nkeeping Placement\nFirst Selection is the Container")} def IsActive(self): return True @@ -3494,8 +3495,8 @@ class ksuToolsTransparencyToggle: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'transparency_toggle.svg') , # the name of a svg file available in the resources - 'MenuText': "Transparency Toggle" , - 'ToolTip' : "ksu Selection Transparency Toggle"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsTransparencyToggle","Transparency Toggle") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsTransparencyToggle","ksu Selection Transparency Toggle")} def IsActive(self): return True @@ -3529,8 +3530,8 @@ class ksuToolsHighlightToggle: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'select_toggle.svg') , # the name of a svg file available in the resources - 'MenuText': "Highlight Toggle" , - 'ToolTip' : "ksu Selection Highlight Toggle"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsHighlightToggle","Highlight Toggle") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsHighlightToggle","ksu Selection Highlight Toggle")} def IsActive(self): return True @@ -3557,8 +3558,8 @@ class ksuToolsVisibilityToggle: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'visibility_toggle.svg') , # the name of a svg file available in the resources - 'MenuText': "Visibility Toggle" , - 'ToolTip' : "ksu Selection Visibility Toggle"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsVisibilityToggle","Visibility Toggle") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsVisibilityToggle","ksu Selection Visibility Toggle")} def IsActive(self): return True @@ -3581,8 +3582,8 @@ class ksuToolsCheckSolid: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'ShapeInfo_check.svg') , # the name of a svg file available in the resources - 'MenuText': "Check Solid property" , - 'ToolTip' : "ksu Check Solid property\nToggle suffix"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsCheckSolid","Check Solid property") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsCheckSolid","ksu Check Solid property\nToggle suffix")} def IsActive(self): return True @@ -3686,8 +3687,8 @@ class ksuToolsToggleTreeView: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'expand_all.svg') , # the name of a svg file available in the resources - 'MenuText': "Expand/Collapse Tree View" , - 'ToolTip' : "ksu tools Expand/Collapse Tree View"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsToggleTreeView","Expand/Collapse Tree View") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsToggleTreeView","ksu tools Expand/Collapse Tree View")} def IsActive(self): return True @@ -3717,7 +3718,7 @@ class ksuToolsAligner: "ksu tools Aligner" def GetResources(self): - mybtn_tooltip ="Manipulator tools \'Aligner\'" + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsAligner","Manipulator tools \'Aligner\'") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Align.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -3745,7 +3746,7 @@ class ksuToolsMover: "ksu tools Mover" def GetResources(self): - mybtn_tooltip ="Manipulator tools \'Mover\'" + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsMover","Manipulator tools \'Mover\'") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Mover.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -3772,7 +3773,7 @@ class ksuToolsCaliper: "ksu tools Caliper" def GetResources(self): - mybtn_tooltip ="Manipulator tools \'Caliper\'" + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsCaliper","Manipulator tools \'Caliper\'") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Caliper.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -3799,7 +3800,7 @@ class ksuToolsLoopSelection: "ksu tools Loop Selection" def GetResources(self): - mybtn_tooltip ="ksu tools \'LoopSelection\'\nLoop selection on a xy outline" + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsLoopSelection","ksu tools \'LoopSelection\'\nLoop selection on a xy outline") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Path-SelectLoop.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -3831,7 +3832,7 @@ class ksuToolsMergeSketches: "ksu tools Merge Sketches" def GetResources(self): - mybtn_tooltip ="Merge Sketches" + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsMergeSketches","Merge Sketches") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Sketcher_MergeSketch.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -3858,7 +3859,7 @@ class ksuToolsEditPrefs: "ksu tools Edit Preferences" def GetResources(self): - mybtn_tooltip ="Edit Preferences" + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsEditPrefs","Edit Preferences") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Preferences-Edit.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -4055,7 +4056,7 @@ class ksuRemoveTimeStamp: "ksu Remove TimeStamp" def GetResources(self): - mybtn_tooltip ="Remove TimeStamp from Labels" + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuRemoveTimeStamp","Remove TimeStamp from Labels") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'remove_TimeStamp.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -4132,7 +4133,7 @@ class ksuRemoveSuffix: "ksu Remove Suffix" def GetResources(self): - mybtn_tooltip ="Remove \'custom\' Suffix from Labels" + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuRemoveSuffix","Remove \'custom\' Suffix from Labels") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'RemoveSuffix.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -4246,7 +4247,7 @@ class ksuToolsExplode: "ksu tools Explode" def GetResources(self): - mybtn_tooltip ="ksu Tools PCB Explode\nSelect the top container of a kicad PCB to exlode it" + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsExplode","ksu Tools PCB Explode\nSelect the top container of a kicad PCB to exlode it") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Explode_Pcb.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -4269,7 +4270,7 @@ class ksuToolsDefeaturingTools: "ksu tools DefeaturingTools" def GetResources(self): - mybtn_tooltip ="Defeaturing Tools from Defeaturing WorkBench" + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsDefeaturingTools","Defeaturing Tools from Defeaturing WorkBench") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'DefeaturingTools.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -4296,7 +4297,7 @@ class ksuToolsRemoveSubTree: "ksu tools Remove Sub Tree" def GetResources(self): - mybtn_tooltip ="Remove Sub Tree" + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsRemoveSubTree","Remove Sub Tree") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'RemoveSubtree.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -4323,7 +4324,7 @@ class ksuToolsAddTracks: "ksu tools Add Tracks" def GetResources(self): - mybtn_tooltip ="ksu tools Add Tracks\nNB: it could be a very intensive loading!" + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsAddTracks","ksu tools Add Tracks\nNB: it could be a very intensive loading!") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'tracks.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -4380,7 +4381,7 @@ class ksuToolsAddSilks: "ksu tools Add Silks" def GetResources(self): - mybtn_tooltip ="ksu tools Add Silks from kicad exported DXF\nNB: it could be a very intensive loading!" + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsAddSilks","ksu tools Add Silks from kicad exported DXF\nNB: it could be a very intensive loading!") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Silks.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -4556,7 +4557,7 @@ class checkSolidExpSTEP(): "ksu tools check Export Step" def GetResources(self): - mybtn_tooltip ="Check if the selected part would be\nexported to STEP as a single solid" + mybtn_tooltip =QT_TRANSLATE_NOOP("checkSolidExpSTEP","Check if the selected part would be\nexported to STEP as a single solid") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Import-Export-STEP.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -4632,7 +4633,7 @@ class Restore_Transparency(): "ksu tools Restore Transparency to Active Document Objects" def GetResources(self): - mybtn_tooltip ="Restore Transparency to Active Document Objects" + mybtn_tooltip =QT_TRANSLATE_NOOP("Restore_Transparency","Restore Transparency to Active Document Objects") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Restore_Transparency.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -4663,7 +4664,7 @@ class Arcs2Circles(): "ksu tools Convert Arcs to Circles in Sketch" def GetResources(self): - mybtn_tooltip ="Convert Arcs to Circles in Sketch" + mybtn_tooltip =QT_TRANSLATE_NOOP("Arcs2Circles","Convert Arcs to Circles in Sketch") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'arc2circle.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -4712,9 +4713,9 @@ class approximateCenter(): "ksu tools Create Center of Circle through 3 Vertices" def GetResources(self): - mybtn_tooltip ="Create Center of Circle through 3 Vertices or Select two vertices to create a mid point or Select a Shape to create a center point" + mybtn_tooltip =QT_TRANSLATE_NOOP("approximateCenter","Create Center of Circle through 3 Vertices or Select two vertices to create a mid point or Select a Shape to create a center point") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Three-Points-Center.svg') , # the name of a svg file available in the resources - 'MenuText': "Create Center of Circle through 3 Vertices" , + 'MenuText': QT_TRANSLATE_NOOP("ksu","Create Center of Circle through 3 Vertices") , 'ToolTip' : mybtn_tooltip} def Activated(self): diff --git a/translations/ksu.ts b/translations/ksu.ts new file mode 100644 index 0000000..cf115c8 --- /dev/null +++ b/translations/ksu.ts @@ -0,0 +1,901 @@ + + + + + Arcs2Circles + + + Convert Arcs to Circles in Sketch + + + + + Restore_Transparency + + + Restore Transparency to Active Document Objects + + + + + approximateCenter + + + Create Center of Circle through 3 Vertices or Select two vertices to create a mid point or Select a Shape to create a center point + + + + + checkSolidExpSTEP + + + Check if the selected part would be +exported to STEP as a single solid + + + + + ksu + + + Offset value + + + + + Offset [+/- mm]: + + + + + Offset value [+/- mm] + + + + + Arc or Intersection Offset method + + + + + Arc + + + + + Offset Y [mm]: + + + + + Offset Y value [+/- mm] + + + + + Select a Sketch and Parameters +to constraint the sketch +NB the Sketch will be modified! + + + + + <b>Select a Sketch and Parameters to<br>constrain the sketch.<br>NB the Sketch will be modified!</b> + + + + + Constraints + + + + + Lock Coincident, Horizontal +and Vertical + + + + + Lock Coincident + + + + + Tolerance + + + + + tolerance in mm + + + + + Tolerance on Constraints + + + + + remove duplicated geometries + + + + + PolyLine Contour generated<br><br> + + + + + <b>For PolyLine Pads, please add 'circles' inside each closed polyline</b><br> + + + + + Select a Sketch and Parameters to<br>move the sketch.<br>Offset X: + + + + + Create Center of Circle through 3 Vertices + + + + + ksuAsm2Part + + + Convert an Assembly (A3) to Part hierarchy + + + + + ksu Convert an Assembly (A3) to Part hierarchy + + + + + ksuRemoveSuffix + + + Remove 'custom' Suffix from Labels + + + + + ksuRemoveTimeStamp + + + Remove TimeStamp from Labels + + + + + ksuTools + + + ksu Tools + + + + + Activate the main +kicad StepUp Tools Dialog + + + + + ksuTools2D2Sketch + + + 2D to Sketch + + + + + ksu 2D object (or DXF) to Sketch + + + + + ksuTools2DtoFace + + + 2D to Face + + + + + ksu 2D object (or DXF) to Surface for extruding + + + + + ksuTools3D2D + + + 3D to 2D + + + + + ksu 3D object to 2D projection + + + + + ksuToolsAddSilks + + + ksu tools Add Silks from kicad exported DXF +NB: it could be a very intensive loading! + + + + + ksuToolsAddToTree + + + Add to Tree + + + + + ksu Add Object(s) to Container Tree +keeping Placement +First Selection is the Container + + + + + ksuToolsAddTracks + + + ksu tools Add Tracks +NB: it could be a very intensive loading! + + + + + ksuToolsAligner + + + Manipulator tools 'Aligner' + + + + + ksuToolsBsplineNormalize + + + Geo to Bspline + + + + + ksu Convert Geometry to Bspline for KiCAD format + + + + + ksuToolsCaliper + + + Manipulator tools 'Caliper' + + + + + ksuToolsCheckSolid + + + Check Solid property + + + + + ksu Check Solid property +Toggle suffix + + + + + ksuToolsCollisions + + + Check Collisions + + + + + ksu Check Collisions and Interferences + + + + + ksuToolsColoredBinder + + + Colored Binder + + + + + Colored Binder object + + + + + ksuToolsColoredClone + + + Colored Clone + + + + + Colored Clone object + + + + + ksuToolsComparePositions + + + tools Compare 3D models Positions + + + + + ksu Compare 3D models Positions +Data with the Active Document +[MCAD Synchronize] + + + + + ksuToolsContour2Poly + + + ksu tools 'RF PolyLined Sketch' +Selection's Shapes to PolyLine Sketch + + + + + ksuToolsCopyPlacement + + + Copy Placement 1st to 2nd + + + + + ksu tools Copy Placement 1st to 2nd + + + + + ksuToolsDeepCopy + + + PartDN Copy + + + + + ksu PartDN Copy object +with relative placement +[flattened model] + + + + + ksuToolsDefeaturingTools + + + Defeaturing Tools from Defeaturing WorkBench + + + + + ksuToolsDiscretize + + + Discretize + + + + + ksu Discretize a shape/outline to a Sketch + + + + + ksuToolsEdges2Sketch + + + Edges to Sketch + + + + + ksu Select coplanar edge(s) or Face(s) or +a single Vertex of a coplanar outline +to get a corresponding Sketch + + + + + ksuToolsEditPrefs + + + Edit Preferences + + + + + ksuToolsExplode + + + ksu Tools PCB Explode +Select the top container of a kicad PCB to exlode it + + + + + ksuToolsExport3DStep + + + Export 3D to Step + + + + + ksu Export selected objects to Step Model + + + + + ksuToolsExportModel + + + Export 3D Model + + + + + ksu Export 3D Model to KiCad + + + + + ksuToolsExtrude + + + ksu tools 'Extrude' +Extrude selection + + + + + ksuToolsFootprintGen + + + Footprint generator + + + + + ksu Footprint editor and exporter + + + + + ksuToolsGeneratePositions + + + tools Generate 3D models Positions + + + + + ksu Generate 3D models Positions +Data for Active Document +[MCAD Synchronize] + + + + + ksuToolsHighlightToggle + + + Highlight Toggle + + + + + ksu Selection Highlight Toggle + + + + + ksuToolsImport3DStep + + + Import 3D Step + + + + + ksu Import 3D Step Model + + + + + ksuToolsLoadFootprint + + + Load FootPrint + + + + + ksu Load KiCad PCB FootPrint + + + + + ksuToolsLoopSelection + + + ksu tools 'LoopSelection' +Loop selection on a xy outline + + + + + ksuToolsMakeCompound + + + Make Compound + + + + + ksu Make a Compound of selected objects + + + + + ksuToolsMakeUnion + + + Make Union + + + + + ksu Make a Union of selected objects + + + + + ksuToolsMergeSketches + + + Merge Sketches + + + + + ksuToolsMoveSketch + + + Move Sketch + + + + + ksu Move 2D Sketch + + + + + ksuToolsMover + + + Manipulator tools 'Mover' + + + + + ksuToolsOffset2D + + + Offset 2D + + + + + ksu Offset 2D object + + + + + ksuToolsOpenBoard + + + Load Board + + + + + ksu Load KiCad PCB Board and Parts + + + + + ksuToolsPullMoved + + + Pull 3D model(s) placement from PCB + + + + + ksu Pull 3D model(s) placement from PCB + + + + + ksuToolsPullPCB + + + Pull Sketch from PCB + + + + + ksu Pull Sketch from PCB Edge + + + + + ksuToolsPushMoved + + + Push 3D moved model(s) to PCB + + + + + ksu Push 3D moved model(s) to PCB + + + + + ksuToolsPushPCB + + + Push Sketch to PCB + + + + + ksu Push Sketch to PCB Edge + + + + + ksuToolsReLinkBinder + + + Relink Binder + + + + + Relink Binder object Select Binder and an Object to be linked + + + + + ksuToolsRemoveFromTree + + + Remove from Tree + + + + + ksu Remove Object(s) from Container Tree +keeping Placement +First Selection is the Container + + + + + ksuToolsRemoveSubTree + + + Remove Sub Tree + + + + + ksuToolsResetPartPlacement + + + Reset Part Placement + + + + + ksu Reset Placement for all Part containers in selection + + + + + ksuToolsResetPlacement + + + Reset Placement + + + + + ksu Reset Placement for a Shape + + + + + ksuToolsSimpleCopy + + + Simple Copy + + + + + ksu Simple Copy object + + + + + ksuToolsSimplifySketck + + + Simplify Sketch + + + + + ksu Simplifying Sketch to Arcs and Lines + + + + + ksuToolsSkValidate + + + ksu tools 'Sketcher Validate' +Validate selected Sketch + + + + + ksuToolsStepImportModeComp + + + disable Simplified STEP Import Mode + + + + + ksu tools disable Simplified STEP Import Mode + + + + + ksuToolsStepImportModeSTD + + + disable Full STEP Import Mode + + + + + ksu tools disable Full STEP Import Mode + + + + + ksuToolsSync3DModels + + + Sync 3D model(s) Ref & TimeStamps with PCB + + + + + ksu Sync 3D model(s) Ref & TimeStamps +of the Selected 3D model with kicad PCB + + + + + ksuToolsToggleTreeView + + + Expand/Collapse Tree View + + + + + ksu tools Expand/Collapse Tree View + + + + + ksuToolsTransparencyToggle + + + Transparency Toggle + + + + + ksu Selection Transparency Toggle + + + + + ksuToolsTurnTable + + + TurnTable + + + + + ksu TurnTable + + + + + Constrain a Sketch + + + + + ksu Fix & auto Constrain a Sketch + + + + + ksuToolsUnion + + + Fuse objects + + + + + Make Union (Fuse) objects + + + + + ksuToolsVisibilityToggle + + + Visibility Toggle + + + + + ksu Selection Visibility Toggle + + + + From 101f183f93fcf3d70385a13cc2629df0e0c3f3b8 Mon Sep 17 00:00:00 2001 From: hasecilu Date: Thu, 7 Mar 2024 12:39:27 -0600 Subject: [PATCH 2/5] Continue translation support - Script to get strings from code and UI files - Add toolbars, menus, - The base `ksu.ts` file is updated to have the new context groups and to have the correct location path, this is useful to show code in Qt Linguist to help on translation. - TranslateUtils.py to define `translate()` - Fix some typos - Fix some capitalizations - Fix some contexts - Some UI translations are overriden via code, mark those strings for translation - Remove ' notr="true"' from some strings be available for translation on UI files Co-authored-by: kaktus Jacek <39754351+kaktusus@users.noreply.github.com> --- InitGui.py | 34 +- Resources/ui/ksu-docked-v3.2.ui | 2 +- Resources/ui/ksu_prefs-v1.ui | 2 +- Resources/ui/ksu_prefs-v2b.ui | 24 +- Resources/ui/ksu_prefs.ui | 84 +- TranslateUtils.py | 39 + demo/kicad-StepUp-tools.FCMacro | 2 +- hlp.py | 120 +- kicadStepUpCMD.py | 88 +- kicadStepUptools.py | 226 ++-- translations/ksu.ts | 1738 +++++++++++++++++++++++++--- translations/update_translation.sh | 125 ++ 12 files changed, 2021 insertions(+), 463 deletions(-) create mode 100644 TranslateUtils.py create mode 100755 translations/update_translation.sh diff --git a/InitGui.py b/InitGui.py index 23a4eec..376fdf8 100644 --- a/InitGui.py +++ b/InitGui.py @@ -37,8 +37,10 @@ #sys.path.append(ksuWB + '/Gui') ksuWB_icons_path = os.path.join( ksuWBpath, 'Resources', 'icons') ksuWB_ui_path = os.path.join( ksuWBpath, 'Resources','ui' ) +ksuWB_trans_path = os.path.join( ksuWBpath, 'translations') -FreeCADGui.addLanguagePath(ksuWBpath+"/translations") +FreeCADGui.addLanguagePath(ksuWB_trans_path) +FreeCADGui.updateLocale() global main_ksu_Icon main_ksu_Icon = os.path.join( ksuWB_icons_path , 'kicad-StepUp-tools-WB.svg') @@ -151,14 +153,15 @@ def loadSettings(self): print(FreeCAD.getUserAppDataDir()) ## class KiCadStepUpWB ( Workbench ): + from TranslateUtils import translate global main_ksu_Icon, ksu_wb_version, myurlKWB, mycommitsKWB, verKSU global ksuWB_ui_path, kSU_MainPrefPage, ksuWB_icons_path "KiCadStepUp WB object" Icon = main_ksu_Icon #Icon = ":Resources/icons/kicad-StepUp-tools-WB.svg" - MenuText = "KiCadStepUp" - ToolTip = "KiCadStepUp workbench" + MenuText = translate("KiCadStepUpWB", "KiCadStepUp") + ToolTip = translate("KiCadStepUpWB", "KiCadStepUp workbench") def GetClassName(self): return "Gui::PythonWorkbench" @@ -168,6 +171,7 @@ def Initialize(self): global pref_page pref_page = True # False #True # import FreeCADGui + from TranslateUtils import translate submenu = ['demo.kicad_pcb','d-pak.kicad_mod', 'demo-sketch.FCStd', 'demo.step',\ 'footprint-template.FCStd', 'footprint-Edge-template.FCStd', 'footprint-template-roundrect-polylines.FCStd',\ @@ -179,14 +183,14 @@ def Initialize(self): 'ECAD-MCAD-collaboration.pdf'] dirs = self.ListDemos() - #self.appendToolbar("ksu Tools", ["ksuTools"]) - self.appendToolbar("ksu Tools", ["ksuToolsEditPrefs","ksuTools","ksuToolsOpenBoard","ksuToolsImportFootprint",\ + #self.appendToolbar(translate("Toolbar", "ksu Tools"), ["ksuTools"]) + self.appendToolbar(translate("Toolbar", "ksu Tools"), ["ksuToolsEditPrefs","ksuTools","ksuToolsOpenBoard","ksuToolsImportFootprint",\ "ksuToolsExportModel","ksuToolsPushPCB","ksuToolsFootprintGen","Separator","ksuToolsAddTracks","ksuToolsAddSilks","Separator",\ "ksuToolsCollisions","ksuToolsImport3DStep","ksuToolsExport3DStep","ksuToolsMakeUnion",\ "ksuToolsMakeCompound", "ksuToolsUnion", "ksuToolsSimpleCopy", "ksuToolsDeepCopy", "ksuToolsColoredClone",\ "ksuToolsColoredBinder", "ksuToolsReLinkBinder", "ksuToolsCheckSolid"]) #, "ksuToolsPushMoved","ksuToolsSync3DModels"]) - self.appendToolbar("ksu Sketching", ["ksuTools3D2D", "ksuTools2D2Sketch", "ksuTools2DtoFace",\ + self.appendToolbar(translate("Toolbar", "ksu Sketching"), ["ksuTools3D2D", "ksuTools2D2Sketch", "ksuTools2DtoFace",\ "ksuToolsLoopSelection","ksuToolsEdges2Sketch","ksuToolsMoveSketch","ksuToolsOffset2D","ksuToolsExtrude","Create_BoundBox","ksuToolsMergeSketches",\ "ksuToolsSimplifySketck", "ksuToolsBsplineNormalize", "ksuToolsConstrainator", "ksuToolsSkValidate", "ksuToolsDiscretize",\ "ksuToolsContour2Poly", "Arcs2Circles", "approximateCenter"]) @@ -195,29 +199,29 @@ def Initialize(self): "Separator","ksuToolsGeneratePositions","ksuToolsComparePositions",\ "Separator","ksuToolsToggleTreeView","Separator","ksuRemoveTimeStamp","ksuRemoveSuffix","Separator","ksuToolsImportFootprint","ksuToolsFootprintGen"] #ksuTB.extend(["Separator","ksuToolsAligner","ksuToolsMover","ksuToolsCaliper"]) - self.appendToolbar("ksu PushPull", ksuTB) + self.appendToolbar(translate("Toolbar", "ksu PushPull"), ksuTB) combined_path = '\t'.join(sys.path) if 'Manipulator' in combined_path: ksuDTB=["ksuToolsAligner","ksuToolsMover","ksuToolsCaliper", "ksuToolsAlignView","Separator","ksuToolsDefeaturingTools"] - self.appendToolbar("ksu Design Tools", ksuDTB) + self.appendToolbar(translate("Toolbar", "ksu Design Tools"), ksuDTB) else: ksuDTB=["ksuToolsAlignView"] - self.appendToolbar("ksu Design Tools", ksuDTB) + self.appendToolbar(translate("Toolbar", "ksu Design Tools"), ksuDTB) Hlp_TB = ["ksuToolsToggleTreeView", "Restore_Transparency", "ksuToolsTransparencyToggle", "ksuToolsHighlightToggle",\ "ksuToolsVisibilityToggle", "ksuToolsStepImportModeSTD", "ksuToolsStepImportModeComp",\ "ksuToolsCopyPlacement", "ksuToolsResetPlacement", "ksuToolsResetPartPlacement", "ksuToolsAddToTree",\ "ksuToolsRemoveFromTree", "ksuToolsRemoveSubTree", "checkSolidExpSTEP"] #if 'LinkView' in dir(FreeCADGui): # Hlp_TB.remove("ksuToolsHighlightToggle") - self.appendToolbar("ksu Show", ["ksuToolsTurnTable", "ksuToolsExplode"]) - self.appendToolbar("ksu Helpers", Hlp_TB) - #self.appendMenu("ksu Tools", ["ksuTools","ksuToolsEdit"]) - self.appendMenu("ksu Tools", ["ksuTools","ksuToolsEditPrefs","ksuImpDXF","ksuOpDXF","ksuOpEzDXF"]) - self.appendMenu("ksu PushPull", ["ksuToolsOpenBoard","ksuToolsPushPCB","ksuToolsPushMoved","ksuToolsSync3DModels","ksuToolsPullPCB","ksuToolsPullMoved",\ + self.appendToolbar(translate("Toolbar", "ksu Show"), ["ksuToolsTurnTable", "ksuToolsExplode"]) + self.appendToolbar(translate("Toolbar", "ksu Helpers"), Hlp_TB) + #self.appendMenu(translate("Menu", "ksu Tools"), ["ksuTools","ksuToolsEdit"]) + self.appendMenu(translate("Menu", "ksu Tools"), ["ksuTools","ksuToolsEditPrefs","ksuImpDXF","ksuOpDXF","ksuOpEzDXF"]) + self.appendMenu(translate("Menu", "ksu PushPull"), ["ksuToolsOpenBoard","ksuToolsPushPCB","ksuToolsPushMoved","ksuToolsSync3DModels","ksuToolsPullPCB","ksuToolsPullMoved",\ "Separator","ksuToolsGeneratePositions","ksuToolsComparePositions",\ "Separator","ksuRemoveTimeStamp","ksuRemoveSuffix",\ "Separator","ksuToolsImportFootprint","ksuToolsFootprintGen"]) - self.appendMenu(["ksu Tools", "Demo"], submenu) + self.appendMenu([translate("Menu", "ksu Tools"), translate("Menu", "Demo")], submenu) #FreeCADGui.addPreferencePage( a2plib.pathOfModule() + '/GuiA2p/ui/a2p_prefs.ui','A2plus' ) if pref_page: diff --git a/Resources/ui/ksu-docked-v3.2.ui b/Resources/ui/ksu-docked-v3.2.ui index 1d0b804..19d1893 100644 --- a/Resources/ui/ksu-docked-v3.2.ui +++ b/Resources/ui/ksu-docked-v3.2.ui @@ -826,7 +826,7 @@ STEP & scaled VRML 1/2.54 - enalble loading + enable loading virtual & mechanical models diff --git a/Resources/ui/ksu_prefs-v1.ui b/Resources/ui/ksu_prefs-v1.ui index 3af0d30..a188040 100644 --- a/Resources/ui/ksu_prefs-v1.ui +++ b/Resources/ui/ksu_prefs-v1.ui @@ -133,7 +133,7 @@ - sdfsdfsdfds + Temporary directories diff --git a/Resources/ui/ksu_prefs-v2b.ui b/Resources/ui/ksu_prefs-v2b.ui index f11a5c4..92a5735 100644 --- a/Resources/ui/ksu_prefs-v2b.ui +++ b/Resources/ui/ksu_prefs-v2b.ui @@ -927,13 +927,13 @@ Allowing or not Loading Multi Parts objects - Enable Materials for VRML exporting + Enable Materials for VRML exporting - Enable Materials for VRML exporting + Enable Materials for VRML exporting true @@ -1011,10 +1011,10 @@ Allowing or not Loading Multi Parts objects - Enable compressed STEP file ('.stpZ') generation exporting + Enable compressed STEP file ('.stpZ') generation exporting - Enable compressed STEP file ('.stpZ') generation exporting + Enable compressed STEP file ('.stpZ') generation exporting false @@ -1042,10 +1042,10 @@ Allowing or not Loading Multi Parts objects - Enable compressed VRML file ('.wrz') generation exporting + Enable compressed VRML file ('.wrz') generation exporting - Enable compressed VRML file ('.wrz') generation exporting + Enable compressed VRML file ('.wrz') generation exporting false @@ -1073,10 +1073,10 @@ Allowing or not Loading Multi Parts objects - Display STEP import settings warning + Display STEP import settings warning - Display STEP import settings warning + Display STEP import settings warning true @@ -1104,10 +1104,10 @@ Allowing or not Loading Multi Parts objects - <html><head/><body><p>Apply Transparency for 'Glass' Materials:</p><p>Force Transparency to STEP model if 'Glass' is found in '.wrl' model</p></body></html> + <html><head/><body><p>Apply Transparency for 'Glass' Materials:</p><p>Force Transparency to STEP model if 'Glass' is found in '.wrl' model</p></body></html> - Apply Transparency for 'Glass' Materials + Apply Transparency for 'Glass' Materials false @@ -1135,10 +1135,10 @@ Allowing or not Loading Multi Parts objects - <html><head/><body><p>Apply Transparency for 'Led' Materials:</p><p>Force Transparency to STEP model if 'Led' is found in '.wrl' model</p></body></html> + <html><head/><body><p>Apply Transparency for 'Led' Materials:</p><p>Force Transparency to STEP model if 'Led' is found in '.wrl' model</p></body></html> - Apply Transparency for 'Led' Materials + Apply Transparency for 'Led' Materials false diff --git a/Resources/ui/ksu_prefs.ui b/Resources/ui/ksu_prefs.ui index 47cfa77..b6548c5 100644 --- a/Resources/ui/ksu_prefs.ui +++ b/Resources/ui/ksu_prefs.ui @@ -54,7 +54,7 @@ 0 0 - 517 + 522 900 @@ -88,7 +88,7 @@ 10 25 501 - 34 + 39 @@ -129,9 +129,6 @@ or 'KICAD6_3DMODEL_DIR' Mod/kicadStepUpGui - - Gui::FileChooser::Directory - @@ -142,7 +139,7 @@ or 'KICAD6_3DMODEL_DIR' 10 65 501 - 34 + 39 @@ -182,9 +179,6 @@ or 'KICAD6_3DMODEL_DIR' Mod/kicadStepUpGui - - - Gui::FileChooser::Directory @@ -208,14 +202,14 @@ or 'KICAD6_3DMODEL_DIR' 10 20 491 - 26 + 29 - PCB color + PCBs color. PCB color @@ -317,7 +311,7 @@ or 'KICAD6_3DMODEL_DIR' 10 50 491 - 26 + 29 @@ -386,7 +380,7 @@ or 'KICAD6_3DMODEL_DIR' 10 80 491 - 26 + 29 @@ -812,14 +806,14 @@ LED_D5.0mm_IRBlack;USB_Mini-B_Lumberg_2486_01_Horizontal;<br/><span sty 9 80 491 - 26 + 29 - STEP export mode + STEP export mode. STEP export mode @@ -881,14 +875,14 @@ LED_D5.0mm_IRBlack;USB_Mini-B_Lumberg_2486_01_Horizontal;<br/><span sty 8 110 491 - 26 + 29 - 3D Loading mode + 3D Loading mode. 3D Loading mode @@ -960,7 +954,7 @@ Allowing or not Loading Multi Parts objects - Assembly3 Links allowed + Assembly3 Links allowed. Assembly3 Links allowed @@ -985,13 +979,13 @@ Allowing or not Loading Multi Parts objects - Enable Materials for VRML exporting + Enables Materials for VRML exporting. - Enable Materials for VRML exporting + Enable Materials for VRML exporting true @@ -1016,7 +1010,7 @@ Allowing or not Loading Multi Parts objects - Start Turntable after loading + Start Turntable after loading. Start Turntable after loading @@ -1041,7 +1035,7 @@ Allowing or not Loading Multi Parts objects - Assembly3 LinkGroups allowed + Assembly3 LinkGroups allowed. Assembly3 LinkGroups allowed @@ -1069,10 +1063,10 @@ Allowing or not Loading Multi Parts objects - Enable compressed STEP file ('.stpZ') generation exporting + Enables compressed STEP file ('.stpZ') generation exporting. - Enable compressed STEP file ('.stpZ') generation exporting + Enable compressed STEP file ('.stpZ') generation exporting false @@ -1100,10 +1094,10 @@ Allowing or not Loading Multi Parts objects - Enable compressed VRML file ('.wrz') generation exporting + Enables compressed VRML file ('.wrz') generation exporting. - Enable compressed VRML file ('.wrz') generation exporting + Enable compressed VRML file ('.wrz') generation exporting false @@ -1131,10 +1125,10 @@ Allowing or not Loading Multi Parts objects - Display STEP import settings warning + Displays STEP import settings warning. - Display STEP import settings warning + Display STEP import settings warning true @@ -1162,10 +1156,10 @@ Allowing or not Loading Multi Parts objects - <html><head/><body><p>Apply Transparency for 'Glass' Materials:</p><p>Force Transparency to STEP model if 'Glass' is found in '.wrl' model</p></body></html> + <html><head/><body><p>Apply Transparency for 'Glass' Materials:</p><p>Force Transparency to STEP model if 'Glass' is found in '.wrl' model</p></body></html> - Apply Transparency for 'Glass' Materials + Apply Transparency for 'Glass' Materials false @@ -1193,10 +1187,10 @@ Allowing or not Loading Multi Parts objects - <html><head/><body><p>Apply Transparency for 'Led' Materials:</p><p>Force Transparency to STEP model if 'Led' is found in '.wrl' model</p></body></html> + <html><head/><body><p>Apply Transparency for 'Led' Materials:</p><p>Force Transparency to STEP model if 'Led' is found in '.wrl' model</p></body></html> - Apply Transparency for 'Led' Materials + Apply Transparency for 'Led' Materials false @@ -1224,10 +1218,10 @@ Allowing or not Loading Multi Parts objects - <html><head/><body><p>Skip importing pcb zone(s)</p></body></html> + <html><head/><body><p>Skip importing pcb zone(s)</p></body></html> - skpZone + skpZone false @@ -1255,10 +1249,10 @@ Allowing or not Loading Multi Parts objects - <html><head/><body><p>Skip importing pcb tracks and vias</p></body></html> + <html><head/><body><p>Skip importing pcb tracks and vias</p></body></html> - skpTracks + skpTracks false @@ -1286,10 +1280,10 @@ Allowing or not Loading Multi Parts objects - <html><head/><body><p>Skip importing pcb pads</p></body></html> + <html><head/><body><p>Skip importing pcb pads</p></body></html> - skpPads + skpPads false @@ -1311,7 +1305,7 @@ Allowing or not Loading Multi Parts objects 10 105 501 - 34 + 39 @@ -1352,10 +1346,7 @@ Allowing or not Loading Multi Parts objects Mod/kicadStepUpGui - - Gui::FileChooser::Directory - - + @@ -1365,7 +1356,7 @@ Allowing or not Loading Multi Parts objects 10 145 501 - 34 + 39 @@ -1405,9 +1396,6 @@ Allowing or not Loading Multi Parts objects Mod/kicadStepUpGui - - - Gui::FileChooser::Directory @@ -1461,7 +1449,7 @@ Allowing or not Loading Multi Parts objects - Generate Sketches for differences on PCB Edge + Generates Sketches for differences on PCB Edge. Generate Sketches for differences on PCB Edge diff --git a/TranslateUtils.py b/TranslateUtils.py new file mode 100644 index 0000000..cf803c2 --- /dev/null +++ b/TranslateUtils.py @@ -0,0 +1,39 @@ +# -*- coding: utf8 -*- + +# *************************************************************************** +# * * +# * Copyright (c) 2017 Yorik van Havre * +# * * +# * This program is free software; you can redistribute it and/or modify * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * +# * the License, or (at your option) any later version. * +# * for detail see the LICENCE text file. * +# * * +# * This program is distributed in the hope that it will be useful, * +# * but WITHOUT ANY WARRANTY; without even the implied warranty of * +# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +# * GNU Library General Public License for more details. * +# * * +# * You should have received a copy of the GNU Library General Public * +# * License along with this program; if not, write to the Free Software * +# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +# * USA * +# * * +# *************************************************************************** + +"""Locate the translation utils""" + +import FreeCAD + + +# dummy function for the QT translator +def QT_TRANSLATE_NOOP(ctx, txt): + return txt + + +# use latest available translate function +if hasattr(FreeCAD, "Qt"): + translate = FreeCAD.Qt.translate +else: + from DraftTools import translate diff --git a/demo/kicad-StepUp-tools.FCMacro b/demo/kicad-StepUp-tools.FCMacro index 2bbfecb..60f9ed8 100644 --- a/demo/kicad-StepUp-tools.FCMacro +++ b/demo/kicad-StepUp-tools.FCMacro @@ -14656,7 +14656,7 @@ class Ui_DockWidget(object): "Board .kicad_pcb") self.ScaleVRML.setToolTip("export to kicad:\n" "STEP & scaled VRML 1/2.54") - self.cb_virtual.setToolTip("enalble loading\n" + self.cb_virtual.setToolTip("enable loading\n" "virtual & mechanical\n" "models") self.cb_materials.setToolTip("use wrl\n" diff --git a/hlp.py b/hlp.py index 2cf6a34..76fc91c 100644 --- a/hlp.py +++ b/hlp.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -#**************************************************************************** +# **************************************************************************** global ksuWBpath @@ -7,60 +7,76 @@ ksuWBpath = os.path.dirname(ksu_locator.__file__) -font_color="""""" +font_color = "" import FreeCAD, FreeCADGui + # paramGet = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/MainWindow") # if 'dark' in paramGet.GetString("StyleSheet").lower(): #we are using a StyleSheet -font_color="""""" +font_color = "" from PySide2 import QtGui -font_color="""""" -#FreeCADGui.getMainWindow().palette().background().color() +from TranslateUtils import translate + +font_color = ( + "" +) +# FreeCADGui.getMainWindow().palette().background().color() -#help_txt="""kicad StepUp version """+verKSU+"""
""" -help_txt="""""" -help_txt+=font_color -help_txt+="""Kicad StepUp is a tool set to easily collaborate between kicad pcb EDA (board and 3D parts) as STEP models and FreeCAD MCAD modeler.
""" -help_txt+="""
""" -help_txt+=font_color -help_txt+="StepUp can also be used to align 3D model to kicad footprint.
" -help_txt+="The artwork can be used for MCAD interchange and collaboration, and for enclosure design.
" -help_txt+="The 3D visualization of components on board assemblies in kicad 3dviewer, will be the same in your mechanical software, " -help_txt+="because of the STEP interchange format.
" -help_txt+="It is also possible to Update a pcb Edge from a FC Sketcher.
" -pdf_name='kicadStepUp-starter-Guide.pdf' -help_txt+="configuration options:
Configuration options are located in the preferences system of FreeCAD, which is located in the Edit menu -> Preferences.
" -help_txt+="starter Guide:
"+pdf_name+"
" -help_txt+="Note: each button has its own Tooltip
" -help_txt+="useful buttons:
Load kicad Board directly -> will load kicad board and parts in FreeCAD coming from kicad '.kicad_pcb' file
" -help_txt+="Load kicad Footprint module -> will load directly kicad footprint in FreeCAD to easily align the 3D model to footprint
" -help_txt+="Export to kicad STEP & scaled VRML -> will convert MCAD model to STEP and VRML to be used by Kicad and kicad StepUp
" -help_txt+=" -> VRML can be multipart;
-> STEP must be single part

('Part Boolean Union' or 'Part Makecompound')
" -help_txt+="assign material to selected colors and your VRML 3D models will have nice shiny effects
" -help_txt+="Push pcb Sketch to kicad_pcb Edge -> will push pcb Sketch to kicad_pcb Edge in your design; it can be done with an empty or with an existing pcb Edge
" -help_txt+="
for a more detailed help have a look at
kicadStepUp-starter-Guide.pdf
" -help_txt+="or just follow the YouTube video tutorials
kicadStepUp basics
" -help_txt+="kicadStepUp STEP alignment to Kicad footprint
" -help_txt+="check always the latest release of kicadStepUp

" -help_txt+="Designing in kicad native 3d-viewer will produce a fully aligned STEP MCAD version " -help_txt+="with the same view of kicad 3d render.
" -help_txt+="Moreover, KiCad StepUp tool set will let you to load the kicad footprint inside FreeCAD and align the 3D part with a visual real time feedback " -help_txt+="of the 3d model and footprint reciprocal position.
" -help_txt+="With this tool is possible to download a part from on-line libraries, align the model to kicad footprint " -help_txt+="and export the model to wrl, for immediate 3d-viewer alignment in pcbnew.
" -help_txt+="Now the two words are connected for a better collaboration; just design in kicad EDA and transfer " -help_txt+="the artwork to MCAD (FreeCAD) smoothly.
" -help_txt+="The workflow is very simple and maintains the usual way to work with kicad:
" -help_txt+="Add models to your library creating 3D models in FreeCAD, or getting models from online libs " -help_txt+="or from the parametric 3D lib expressly done to kicad kicadStepUp 3D STEP models generator
" -help_txt+="Once you have your 3D MCAD model, you need to have a copy of that in STEP and VRML format.
" -help_txt+="(with the latest kicad release you can only have STEP model, VRML is not needed anymore, but it is possible" -help_txt+=" to mix VRML, STEP and IGES format)
" -help_txt+="Just exporting the model with FreeCAD and put your model in the same folder in which " -help_txt+="normally you are used to put vrml models; the script will assembly the MCAD board and models as in 3d-viewer of kicad." -help_txt+="
NB
STEP model has to be fused in single object

(Part Boolean Union of objects)" -help_txt+="
or a Compoud (Part Makecompound of objects)" -help_txt+="
enable 'Report view' Panel to see helping messages" -help_txt+="
" -help_txt+="
" - \ No newline at end of file +# help_txt="""kicad StepUp version """+verKSU+"""
""" +help_txt = "" +help_txt += font_color +help_txt += translate( + "Help", + "Kicad StepUp is a tool set to easily collaborate between kicad pcb EDA (board and 3D parts) as STEP models and FreeCAD MCAD modeler.
\n" + "
", +) +help_txt += font_color +help_txt += translate( + "Help", + "StepUp can also be used to align 3D model to kicad footprint.
\n" + "The artwork can be used for MCAD interchange and collaboration, and for enclosure design.
\n" + "The 3D visualization of components on board assemblies in kicad 3dviewer, will be the same in your mechanical software, \n" + "because of the STEP interchange format.
\n" + "It is also possible to Update a pcb Edge from a FC Sketcher.
\n" + "configuration options:
Configuration options are located in the preferences system of FreeCAD, which is located in the Edit menu -> Preferences.
\n", +) +pdf_name = "kicadStepUp-starter-Guide.pdf" +# help_txt+="starter Guide:
"+pdf_name+"
" +help_txt += translate( + "Help", "starter Guide:
{}
" +).format(ksuWBpath, os.sep, os.sep, pdf_name, pdf_name) +help_txt += translate( + "Help", + "Note: each button has its own Tooltip
\n" + "useful buttons:
Load kicad Board directly -> will load kicad board and parts in FreeCAD coming from kicad '.kicad_pcb' file
\n" + "Load kicad Footprint module -> will load directly kicad footprint in FreeCAD to easily align the 3D model to footprint
\n" + "Export to kicad STEP & scaled VRML -> will convert MCAD model to STEP and VRML to be used by Kicad and kicad StepUp
\n" + " -> VRML can be multipart;
-> STEP must be single part

('Part Boolean Union' or 'Part Makecompound')
\n" + "assign material to selected colors and your VRML 3D models will have nice shiny effects
\n" + "Push pcb Sketch to kicad_pcb Edge -> will push pcb Sketch to kicad_pcb Edge in your design; it can be done with an empty or with an existing pcb Edge
\n" + "
for a more detailed help have a look at
kicadStepUp-starter-Guide.pdf
\n" + "or just follow the YouTube video tutorials
kicadStepUp basics
\n" + "kicadStepUp STEP alignment to Kicad footprint
\n" + "check always the latest release of kicadStepUp

\n" + "Designing in kicad native 3d-viewer will produce a fully aligned STEP MCAD version \n" + "with the same view of kicad 3d render.
\n" + "Moreover, KiCad StepUp tool set will let you to load the kicad footprint inside FreeCAD and align the 3D part with a visual real time feedback \n" + "of the 3d model and footprint reciprocal position.
\n" + "With this tool is possible to download a part from on-line libraries, align the model to kicad footprint \n" + "and export the model to wrl, for immediate 3d-viewer alignment in pcbnew.
\n" + "Now the two words are connected for a better collaboration; just design in kicad EDA and transfer \n" + "the artwork to MCAD (FreeCAD) smoothly.
\n" + "The workflow is very simple and maintains the usual way to work with kicad:
\n" + "Add models to your library creating 3D models in FreeCAD, or getting models from online libs \n" + "or from the parametric 3D lib expressly done to kicad kicadStepUp 3D STEP models generator
\n" + "Once you have your 3D MCAD model, you need to have a copy of that in STEP and VRML format.
\n" + "(with the latest kicad release you can only have STEP model, VRML is not needed anymore, but it is possible\n" + " to mix VRML, STEP and IGES format)
\n" + "Just exporting the model with FreeCAD and put your model in the same folder in which \n" + "normally you are used to put vrml models; the script will assembly the MCAD board and models as in 3d-viewer of kicad.\n" + "
NB
STEP model has to be fused in single object

(Part Boolean Union of objects)\n" + "
or a Compoud (Part Makecompound of objects)\n" + "
enable 'Report view' Panel to see helping messages\n" + "
\n" + "
", +) diff --git a/kicadStepUpCMD.py b/kicadStepUpCMD.py index e8148eb..9b142f0 100644 --- a/kicadStepUpCMD.py +++ b/kicadStepUpCMD.py @@ -17,6 +17,8 @@ import PySide from PySide import QtGui, QtCore from PySide.QtCore import QT_TRANSLATE_NOOP +from TranslateUtils import translate + QtWidgets = QtGui from pivy import coin @@ -653,7 +655,7 @@ class Ui_Offset_value(object): def setupUi(self, Offset_value): Offset_value.setObjectName("Offset_value") Offset_value.resize(292, 177) - Offset_value.setWindowTitle(translate("ksu","Offset value")) + Offset_value.setWindowTitle(translate("Ui_Offset_value", "Offset value")) Offset_value.setToolTip("") self.buttonBoxLayer = QtWidgets.QDialogButtonBox(Offset_value) self.buttonBoxLayer.setGeometry(QtCore.QRect(10, 130, 271, 32)) @@ -669,19 +671,19 @@ def setupUi(self, Offset_value): self.offset_label = QtWidgets.QLabel(self.gridLayoutWidget) self.offset_label.setMinimumSize(QtCore.QSize(0, 0)) self.offset_label.setToolTip("") - self.offset_label.setText(translate("ksu","Offset [+/- mm]:")) + self.offset_label.setText(translate("Ui_Offset_value", "Offset [+/- mm]:")) self.offset_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.offset_label.setObjectName("offset_label") self.gridLayout.addWidget(self.offset_label, 0, 0, 1, 1) self.lineEdit_offset = QtWidgets.QLineEdit(self.gridLayoutWidget) - self.lineEdit_offset.setToolTip(translate("ksu","Offset value [+/- mm]")) + self.lineEdit_offset.setToolTip(translate("Ui_Offset_value", "Offset value [+/- mm]")) self.lineEdit_offset.setText("0.16") self.lineEdit_offset.setObjectName("lineEdit_offset") self.gridLayout.addWidget(self.lineEdit_offset, 0, 1, 1, 1) self.checkBox = QtWidgets.QCheckBox(self.gridLayoutWidget) - self.checkBox.setToolTip(translate("ksu","Arc or Intersection Offset method")) + self.checkBox.setToolTip(translate("Ui_Offset_value", "Arc or Intersection Offset method")) self.checkBox.setLayoutDirection(QtCore.Qt.RightToLeft) - self.checkBox.setText(translate("ksu","Arc")) + self.checkBox.setText(translate("Ui_Offset_value", "Arc")) self.checkBox.setChecked(True) self.checkBox.setObjectName("checkBox") self.gridLayout.addWidget(self.checkBox, 2, 0, 1, 1) @@ -689,12 +691,12 @@ def setupUi(self, Offset_value): self.offset_label_2 = QtWidgets.QLabel(self.gridLayoutWidget) self.offset_label_2.setMinimumSize(QtCore.QSize(0, 0)) self.offset_label_2.setToolTip("") - self.offset_label_2.setText(translate("ksu","Offset Y [mm]:")) + self.offset_label_2.setText(translate("Ui_Offset_value", "Offset Y [mm]:")) self.offset_label_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.offset_label_2.setObjectName("offset_label_2") self.gridLayout.addWidget(self.offset_label_2, 1, 0, 1, 1) self.lineEdit_offset_2 = QtWidgets.QLineEdit(self.gridLayoutWidget) - self.lineEdit_offset_2.setToolTip(translate("ksu","Offset Y value [+/- mm]")) + self.lineEdit_offset_2.setToolTip(translate("Ui_Offset_value", "Offset Y value [+/- mm]")) self.lineEdit_offset_2.setText("5.0") self.lineEdit_offset_2.setObjectName("lineEdit_offset_2") self.gridLayout.addWidget(self.lineEdit_offset_2, 1, 1, 1, 1) @@ -733,19 +735,19 @@ def setupUi(self, CDialog): self.buttonBox.setObjectName("buttonBox") self.Label_howto = QtGui.QLabel(CDialog) self.Label_howto.setGeometry(QtCore.QRect(20, 5, 265, 61)) - self.Label_howto.setToolTip(translate("ksu","Select a Sketch and Parameters\n" + self.Label_howto.setToolTip(translate("Ui_CDialog", "Select a Sketch and Parameters\n" "to constraint the sketch\n" "NB the Sketch will be modified!")) self.Label_howto.setStatusTip("") self.Label_howto.setWhatsThis("") - self.Label_howto.setText(translate("ksu","Select a Sketch and Parameters to
constrain the sketch.
NB the Sketch will be modified!
")) + self.Label_howto.setText(translate("Ui_CDialog", "Select a Sketch and Parameters to
constrain the sketch.
NB the Sketch will be modified!
")) self.Label_howto.setObjectName("Label_howto") self.Constraints = QtGui.QGroupBox(CDialog) self.Constraints.setGeometry(QtCore.QRect(10, 70, 145, 166)) self.Constraints.setToolTip("") self.Constraints.setStatusTip("") self.Constraints.setWhatsThis("") - self.Constraints.setTitle(translate("ksu","Constraints")) + self.Constraints.setTitle(translate("Ui_CDialog", "Constraints")) self.Constraints.setObjectName("Constraints") self.verticalLayoutWidget = QtGui.QWidget(self.Constraints) self.verticalLayoutWidget.setGeometry(QtCore.QRect(12, 20, 125, 137)) @@ -755,7 +757,7 @@ def setupUi(self, CDialog): self.verticalLayout.setObjectName("verticalLayout") self.all_constraints = QtGui.QRadioButton(self.verticalLayoutWidget) self.all_constraints.setMinimumSize(QtCore.QSize(92, 64)) - self.all_constraints.setToolTip(translate("ksu","Lock Coincident, Horizontal\n" + self.all_constraints.setToolTip(translate("Ui_CDialog", "Lock Coincident, Horizontal\n" "and Vertical")) self.all_constraints.setText("") self.all_constraints.setIcon(icon) @@ -765,7 +767,7 @@ def setupUi(self, CDialog): self.verticalLayout.addWidget(self.all_constraints) self.coincident = QtGui.QRadioButton(self.verticalLayoutWidget) self.coincident.setMinimumSize(QtCore.QSize(92, 64)) - self.coincident.setToolTip(translate("ksu","Lock Coincident")) + self.coincident.setToolTip(translate("Ui_CDialog", "Lock Coincident")) self.coincident.setText("") icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap("Sketcher_LockCoincident.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) @@ -779,7 +781,7 @@ def setupUi(self, CDialog): self.Tolerance.setToolTip("") self.Tolerance.setStatusTip("") self.Tolerance.setWhatsThis("") - self.Tolerance.setTitle(translate("ksu","Tolerance")) + self.Tolerance.setTitle(translate("Ui_CDialog", "Tolerance")) self.Tolerance.setObjectName("Tolerance") self.verticalLayoutWidget_2 = QtGui.QWidget(self.Tolerance) self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(8, 20, 125, 57)) @@ -791,13 +793,13 @@ def setupUi(self, CDialog): self.label.setToolTip("mm") self.label.setStatusTip("") self.label.setWhatsThis("") - self.label.setText(translate("ksu","tolerance in mm")) + self.label.setText(translate("Ui_CDialog", "tolerance in mm")) self.label.setObjectName("label") self.verticalLayout_2.addWidget(self.label) self.tolerance = QtGui.QLineEdit(self.verticalLayoutWidget_2) self.tolerance.setMinimumSize(QtCore.QSize(64, 22)) self.tolerance.setMaximumSize(QtCore.QSize(64, 22)) - self.tolerance.setToolTip(translate("ksu","Tolerance on Constraints")) + self.tolerance.setToolTip(translate("Ui_CDialog", "Tolerance on Constraints")) self.tolerance.setStatusTip("") self.tolerance.setWhatsThis("") self.tolerance.setInputMethodHints(QtCore.Qt.ImhPreferNumbers) @@ -808,7 +810,7 @@ def setupUi(self, CDialog): self.verticalLayout_2.addWidget(self.tolerance) self.rmvXGeo = QtGui.QCheckBox(CDialog) self.rmvXGeo.setGeometry(QtCore.QRect(170, 180, 141, 20)) - self.rmvXGeo.setToolTip(translate("ksu","remove duplicated geometries")) + self.rmvXGeo.setToolTip(translate("Ui_CDialog", "remove duplicated geometries")) self.rmvXGeo.setStatusTip("") self.rmvXGeo.setText("rmv xtr geo") self.rmvXGeo.setObjectName("rmvXGeo") @@ -863,7 +865,7 @@ class ksuTools: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'kicad-StepUp-icon.svg') , # the name of a svg file available in the resources 'MenuText': QT_TRANSLATE_NOOP("ksuTools","ksu Tools") , - 'ToolTip' : QT_TRANSLATE_NOOP("ksuTools","Activate the main\nkicad StepUp Tools Dialog")} + 'ToolTip' : QT_TRANSLATE_NOOP("ksuTools","Activate the main\nKiCad StepUp Tools Dialog")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -994,8 +996,10 @@ def __init__(self, xs, ys, xe, ye): doc.commitTransaction() - msg=translate("ksu","""PolyLine Contour generated

""") - msg+=translate("ksu","For PolyLine Pads, please add \'circles\' inside each closed polyline
") + msg=translate( + "ksu", + "PolyLine Contour generated\n\n" + "For PolyLine Pads, please add \'circles\' inside each closed polyline
") info_msg(msg) #stop #FreeCAD.ActiveDocument.recompute() @@ -1276,10 +1280,10 @@ def Activated(self): ##or made something as in load board #ini_content=kicadStepUptools.cfg_read_all() if FreeCAD.ActiveDocument.FileName == "": - msg="""please save your job file before exporting.""" + msg = translate("Save", "Please save your job file before exporting.") QtGui.QApplication.restoreOverrideCursor() - QtGui.QMessageBox.information(None,"Info ...",msg) - FreeCADGui.SendMsgToActiveView("Save") + QtGui.QMessageBox.information(None,translate("Save", "Info ..."),msg) + FreeCADGui.SendMsgToActiveView(translate("Save", "Save")) from kicadStepUptools import routineScaleVRML if reload_Gui: @@ -1301,8 +1305,8 @@ class ksuToolsImport3DStep: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'add_block_y.svg') , # the name of a svg file available in the resources - 'MenuText': QT_TRANSLATE_NOOP("ksuToolsImport3DStep","Import 3D Step") , - 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsImport3DStep","ksu Import 3D Step Model")} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsImport3DStep","Import 3D STEP") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsImport3DStep","ksu Import 3D STEP Model")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -1331,8 +1335,8 @@ class ksuToolsExport3DStep: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'export3DStep.svg') , # the name of a svg file available in the resources - 'MenuText': QT_TRANSLATE_NOOP("ksuToolsExport3DStep","Export 3D to Step") , - 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsExport3DStep","ksu Export selected objects to Step Model")} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsExport3DStep","Export 3D to STEP") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsExport3DStep","ksu Export selected objects to STEP Model")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -1755,7 +1759,7 @@ class ksuToolsSync3DModels: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Sync3Dmodels.svg') , # the name of a svg file available in the resources 'MenuText': QT_TRANSLATE_NOOP("ksuToolsSync3DModels","Sync 3D model(s) Ref & TimeStamps with PCB") , - 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsSync3DModels","ksu Sync 3D model(s) Ref & TimeStamps\nof the Selected 3D model with kicad PCB")} + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsSync3DModels","ksu Sync 3D model(s) Ref & TimeStamps\nof the Selected 3D model with KiCad PCB")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -1938,7 +1942,7 @@ class ksuToolsTurnTable: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'texture_turntable.svg') , # the name of a svg file available in the resources - 'MenuText': QT_TRANSLATE_NOOP("ksuToolsTurnTable","TurnTable") , + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsTurnTable","TurnTable"), 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsTurnTable","ksu TurnTable")} def IsActive(self): @@ -2000,8 +2004,8 @@ class ksuToolsConstrainator: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Sketcher_LockAll.svg') , # the name of a svg file available in the resources - 'MenuText': QT_TRANSLATE_NOOP("ksuToolsTurnTable","Constrain a Sketch") , - 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsTurnTable","ksu Fix & auto Constrain a Sketch")} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsConstrainator","Constrain a Sketch") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsConstrainator","ksu Fix & auto Constrain a Sketch")} def IsActive(self): return True @@ -3887,7 +3891,7 @@ class ksuOpDXF: "ksu tools open Legacy DXF" def GetResources(self): - mybtn_tooltip ="open Legacy DXF" + mybtn_tooltip = QT_TRANSLATE_NOOP("ksuOpDXF", "open Legacy DXF") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'openDXF.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip+' v1.4.0'} @@ -3933,7 +3937,7 @@ class ksuOpEzDXF: "ksu tools open ezDXF" def GetResources(self): - mybtn_tooltip ="open ezDXF" + mybtn_tooltip = QT_TRANSLATE_NOOP("ksuOpEzDXF", "open ezDXF") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'openEzDXF.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip } @@ -3981,7 +3985,7 @@ class ksuImpDXF: "ksu tools import Legacy DXF" def GetResources(self): - mybtn_tooltip ="import Legacy DXF" + mybtn_tooltip = QT_TRANSLATE_NOOP("ksuImpDXF", "Import Legacy DXF") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'importDXF.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip+' v1.4.0'} @@ -4247,7 +4251,7 @@ class ksuToolsExplode: "ksu tools Explode" def GetResources(self): - mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsExplode","ksu Tools PCB Explode\nSelect the top container of a kicad PCB to exlode it") + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsExplode","ksu Tools PCB Explode\nSelect the top container of a KiCad PCB to exlode it") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Explode_Pcb.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -4381,7 +4385,7 @@ class ksuToolsAddSilks: "ksu tools Add Silks" def GetResources(self): - mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsAddSilks","ksu tools Add Silks from kicad exported DXF\nNB: it could be a very intensive loading!") + mybtn_tooltip =QT_TRANSLATE_NOOP("ksuToolsAddSilks","ksu tools Add Silks from KiCad exported DXF\nNB: it could be a very intensive loading!") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Silks.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -4715,7 +4719,7 @@ class approximateCenter(): def GetResources(self): mybtn_tooltip =QT_TRANSLATE_NOOP("approximateCenter","Create Center of Circle through 3 Vertices or Select two vertices to create a mid point or Select a Shape to create a center point") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'Three-Points-Center.svg') , # the name of a svg file available in the resources - 'MenuText': QT_TRANSLATE_NOOP("ksu","Create Center of Circle through 3 Vertices") , + 'MenuText': QT_TRANSLATE_NOOP("approximateCenter","Create Center of Circle through 3 Vertices") , 'ToolTip' : mybtn_tooltip} def Activated(self): @@ -4822,7 +4826,7 @@ class Create_BoundBox(): "Create BoundBox of the Selected Object" def GetResources(self): - mybtn_tooltip ="Create BoundBox of the Selected Object" + mybtn_tooltip = QT_TRANSLATE_NOOP("Create_BoundBox", "Create BoundBox of the Selected Object") return {'Pixmap' : os.path.join( ksuWB_icons_path , 'BoundBox.svg') , # the name of a svg file available in the resources 'MenuText': mybtn_tooltip , 'ToolTip' : mybtn_tooltip} @@ -4977,8 +4981,8 @@ class ksuToolsImportFootprint: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'importFPs.svg') , # the name of a svg file available in the resources - 'MenuText': "Load FootPrint" , - 'ToolTip' : "ksu Load KiCad PCB FootPrint"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsImportFootprint", "Load FootPrint"), + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsImportFootprint", "ksu Load KiCad PCB FootPrint")} def IsActive(self): #if FreeCAD.ActiveDocument == None: @@ -5013,8 +5017,8 @@ class ksuToolsAlignView: def GetResources(self): return {'Pixmap' : os.path.join( ksuWB_icons_path , 'AlignView2Face.svg') , # the name of a svg file available in the resources - 'MenuText': "AlignView to Face" , - 'ToolTip' : "ksu AlignView to Face"} + 'MenuText': QT_TRANSLATE_NOOP("ksuToolsAlignView", "AlignView to Face") , + 'ToolTip' : QT_TRANSLATE_NOOP("ksuToolsAlignView", "ksu AlignView to Face")} def IsActive(self): doc = FreeCAD.ActiveDocument @@ -5090,4 +5094,4 @@ def pointAt(normal, up): ## -##### \ No newline at end of file +##### diff --git a/kicadStepUptools.py b/kicadStepUptools.py index 6fd1552..3ab4ed1 100644 --- a/kicadStepUptools.py +++ b/kicadStepUptools.py @@ -429,6 +429,7 @@ import PySide from PySide import QtGui, QtCore +from TranslateUtils import translate QtWidgets = QtGui from time import sleep @@ -1328,9 +1329,10 @@ def clear_console(): def close_ksu(): #def closeEvent(self, e): spc="""****************************************************************************
""" - msg="""Do you want to quit? - Have you saved your STEP artwork?
- """ + msg=translate("Close", + "Do you want to quit? " + "Have you saved your STEP artwork?
" + ) #confirm on exit QtGui.QApplication.restoreOverrideCursor() #self.setGeometry(25, 250, 500, 500) @@ -1338,7 +1340,9 @@ def close_ksu(): res='' if test_flag_exit==False: QtGui.QApplication.restoreOverrideCursor() - res = QtGui.QMessageBox.question(None,"Close",msg,QtGui.QMessageBox.Yes|QtGui.QMessageBox.No) + res = QtGui.QMessageBox.question( + None,translate("Close", "Close"),msg,QtGui.QMessageBox.Yes|QtGui.QMessageBox.No + ) if res is not QtGui.QMessageBox.No: #e.ignore() # KSUWidget.close() @@ -1966,13 +1970,13 @@ def SIGNAL_comboBox_Changed(self,text): comboBox_Changed(text) def retranslateUi(self, Dialog): - Dialog.setWindowTitle("Material Properties") - self.label.setText("Materials") - self.label_2.setText("Original") - self.plainTextEdit.setToolTip("Shape Color") - self.plainTextEdit_2.setToolTip("Diffuse Color") - self.label_3.setText("New") - self.label_4.setText("NB: set Material will unmatch colors between wrl and STEP") + Dialog.setWindowTitle(translate("Ui_Dialog", "Material Properties")) + self.label.setText(translate("Ui_Dialog", "Materials")) + self.label_2.setText(translate("Ui_Dialog", "Original")) + self.plainTextEdit.setToolTip(translate("Ui_Dialog", "Shape Color")) + self.plainTextEdit_2.setToolTip(translate("Ui_Dialog", "Diffuse Color")) + self.label_3.setText(translate("Ui_Dialog", "New")) + self.label_4.setText(translate("Ui_Dialog", "NB: set Material will unmatch colors between wrl and STEP")) ### def isWritable(path): try: @@ -7331,7 +7335,7 @@ def routineR_XYZ(axe,alpha): doc.commitTransaction() #say("end of rotineZ!") else: - say("Select ONE single part object !") + say(translate("Say", "Select ONE single part object !")) say_single_obj() #QtGui.QMessageBox.information(None,"Info ...","Select ONE single part object !\r\n"+"\r\n") ### end RotateXYZ @@ -7379,7 +7383,7 @@ def routineT_XYZ(axe,v): doc.commitTransaction() #say("end of rotineT!") else: - say("Select ONE single part object !") + say(translate("Say", "Select ONE single part object !")) say_single_obj() #QtGui.QMessageBox.information(None,"Info ...","Select ONE single part object !\r\n"+"\r\n") ### end TranslateXYZ @@ -7456,7 +7460,7 @@ def routineResetPlacement(keepWB=None): #FreeCAD.activeDocument().recompute() #say("end of rotineRP!") else: - say("Select ONE single part object !") + say(translate("Say", "Select ONE single part object !")) say_single_obj() #QtGui.QMessageBox.information(None,"Info ...","Select ONE single part object !\r\n"+"\r\n") del objs @@ -7465,11 +7469,11 @@ def routineResetPlacement(keepWB=None): def routineScaleVRML(): global exportV, exportS, applymaterials if FreeCAD.ActiveDocument.FileName == "": - msg="""please save your job file before exporting.""" + msg = translate("Save", "please save your job file before exporting.") QtGui.QApplication.restoreOverrideCursor() - QtGui.QMessageBox.information(None,"Info ...",msg) - FreeCADGui.SendMsgToActiveView("Save") - say('routine Scale to VRML 1/2.54') + QtGui.QMessageBox.information(None,translate("Save", "Info ..."),msg) + FreeCADGui.SendMsgToActiveView(translate("Save", "Save")) + say(translate("Say", 'routine Scale to VRML 1/2.54')) cfg_read_all() doc = FreeCAD.ActiveDocument doc.openTransaction('exportModel') @@ -7541,7 +7545,7 @@ def routineScaleVRML(): say('done') FreeCAD.ActiveDocument.commitTransaction() else: - say("Select ONE single part object !") + say(translate("Say", "Select ONE single part object !")) say_single_obj() #QtGui.QMessageBox.information(None,"Info ...","Select ONE single part object !\r\n"+"\r\n") return 0 @@ -7610,7 +7614,7 @@ def routineScaleVRML_1(): QtGui.QMessageBox.information(None,"Info ...",msg) self.setWindowState(QtCore.Qt.WindowActive) else: - say("Select ONE single part object !") + say(translate("Say", "Select ONE single part object !")) say_single_obj() #QtGui.QMessageBox.information(None,"Info ...","Select ONE single part object !\r\n"+"\r\n") return 0 @@ -7702,7 +7706,7 @@ def routineP_XYZ(axe): #FreeCADGui.SendMsgToActiveView("ViewFit") ##FreeCADGui.activeDocument().activeView().viewTop() doc = FreeCAD.ActiveDocument - say("Put on Axe XYZ !") + say(translate("Say", "Put on Axe XYZ !")) selEx = FreeCADGui.Selection.getSelectionEx() objs = [selobj.Object for selobj in selEx] if len(objs) == 1: @@ -7755,18 +7759,22 @@ def routineP_XYZ(axe): routineResetPlacement() doc.commitTransaction() else: - say("Select ONE single part object !") + say(translate("Say", "Select ONE single part object !")) say_single_obj() #QtGui.QMessageBox.information(None,"Info ...","Select ONE single part object !\r\n") ### end routineP_XYZ def say_single_obj(): QtGui.QApplication.restoreOverrideCursor() - msg="""Select ONE single part object !
- suggestion for multi-part:
  Part Boolean Union (recommended)
or
  Part Make compound (alternative choice)
""" + msg = translate("Say", "Select ONE single part object !
\n" + "suggestion for multi-part:
\n" + "  Part Boolean Union (recommended)
\n" + "or
\n" + "  Part Make compound (alternative choice)" + ) spc="""*******************************************************************************
""" - msg1="Error in selection" + msg1=translate("Say", "Error in selection") QtGui.QApplication.restoreOverrideCursor() #RotateXYZGuiClass().setGeometry(25, 250, 500, 500) diag = QtGui.QMessageBox(QtGui.QMessageBox.Icon.Critical, @@ -7777,10 +7785,14 @@ def say_single_obj(): def say_select_obj(): QtGui.QApplication.restoreOverrideCursor() - msg="""Select a Compound or
a Part Design group
or more than one Part object !
""" + msg = translate("Say", + "Select a Compound or
\n" + "a Part Design group
\n" + "or more than one Part object !
" + ) spc="""*******************************************************************************
""" - msg1="Error in selection" + msg1=translate("Say", "Error in selection") QtGui.QApplication.restoreOverrideCursor() #RotateXYZGuiClass().setGeometry(25, 250, 500, 500) diag = QtGui.QMessageBox(QtGui.QMessageBox.Icon.Critical, @@ -7794,7 +7806,7 @@ def say_warning(msg): # msg="""Select a Compound or
a Part Design group
or more than one Part object !
""" spc="""*******************************************************************************
""" - msg1="Warning ..." + msg1 = translate("Say", "Warning ...") QtGui.QApplication.restoreOverrideCursor() #RotateXYZGuiClass().setGeometry(25, 250, 500, 500) diag = QtGui.QMessageBox(QtGui.QMessageBox.Icon.Warning, @@ -7808,7 +7820,7 @@ def say_error(msg): # msg="""Select a Compound or
a Part Design group
or more than one Part object !
""" spc="""*******************************************************************************
""" - msg1="ERROR! ..." + msg1 = translate("Say", "ERROR! ...") QtGui.QApplication.restoreOverrideCursor() #RotateXYZGuiClass().setGeometry(25, 250, 500, 500) diag = QtGui.QMessageBox(QtGui.QMessageBox.Icon.Critical, @@ -7822,7 +7834,7 @@ def say_info(msg): # msg="""Select a Compound or
a Part Design group
or more than one Part object !
""" spc="""*******************************************************************************
""" - msg1="Info ..." + msg1 = translate("Say","Info ...") QtGui.QApplication.restoreOverrideCursor() #RotateXYZGuiClass().setGeometry(25, 250, 500, 500) diag = QtGui.QMessageBox(QtGui.QMessageBox.Icon.Information, @@ -7878,7 +7890,7 @@ def get_position(): pass else: if exportS: - say("Select ONE single part object !") + say(translate("Say", "Select ONE single part object !")) ##QtGui.QMessageBox.information(None,"Info ...","Select ONE single part object !\r\n"+"\r\n") #QtGui.QApplication.restoreOverrideCursor() #msg="""Select ONE single part object !
@@ -7944,7 +7956,7 @@ def routineM_XYZ(axe,v): doc.commitTransaction() #say("end of rotineM!") else: - say("Select an object !") + say(translate("Say", "Select an object !")) #QtGui.QMessageBox.information(None,"Info ...","Select ONE single part object !\r\n"+"\r\n") ### end Move to Point XYZ @@ -14435,7 +14447,7 @@ def setupUi(self, DockWidget): local_link=""+ini_file_full_path_bold+"" #self.config_ini_Lbl.setText(local_link) self.config_ini_Lbl.setText('') - self.config_ini_Lbl.setToolTip("ksu config ini file\nlocation") + self.config_ini_Lbl.setToolTip(translate("Ui_DockWidget", "ksu config ini file\nlocation")) self.textInputRX.setAlignment(QtCore.Qt.AlignRight) self.textInputRY.setAlignment(QtCore.Qt.AlignRight) self.textInputRZ.setAlignment(QtCore.Qt.AlignRight) @@ -14488,62 +14500,62 @@ def setupUi(self, DockWidget): ## retraslateUi Qt5 compatibility ############################################################################################################# def retranslateUi(self, DockWidget): #DockWidget.setWindowTitle(QtGui.QApplication.translate("DockWidget", "kicad StepUp tools", None, QtGui.QApplication.UnicodeUTF8)) - DockWidget.setWindowTitle("kicad StepUp tools") - self.dock_left.setToolTip("dock left") - self.dock_float.setToolTip("un-dock (floating)") - self.dock_minimize.setToolTip("minimize") - self.dock_right.setToolTip("dock right") - self.close.setToolTip("close") - self.textInputX.setToolTip("translate (+/- mm)") + DockWidget.setWindowTitle(translate("Ui_DockWidget", "KiCad StepUp tools")) + self.dock_left.setToolTip(translate("Ui_DockWidget", "dock left")) + self.dock_float.setToolTip(translate("Ui_DockWidget", "un-dock (floating)")) + self.dock_minimize.setToolTip(translate("Ui_DockWidget", "minimize")) + self.dock_right.setToolTip(translate("Ui_DockWidget", "dock right")) + self.close.setToolTip(translate("Ui_DockWidget", "close")) + self.textInputX.setToolTip(translate("Ui_DockWidget", "translate (+/- mm)")) self.textInputX.setText("0.10") - self.textInputZ.setToolTip("translate (+/- mm)") + self.textInputZ.setToolTip(translate("Ui_DockWidget", "translate (+/- mm)")) self.textInputZ.setText("0.10") - self.textInputY.setToolTip("translate (+/- mm)") + self.textInputY.setToolTip(translate("Ui_DockWidget", "translate (+/- mm)")) self.textInputY.setText("0.10") - self.TranslateX.setToolTip("translate X (+/- mm)") - self.TranslateY.setToolTip("translate Y (+/- mm)") - self.TranslateZ.setToolTip("translate Z (+/- mm)") - self.PutOnX.setToolTip("put on X") - self.PutOnY.setToolTip("put on Y") - self.PutOnZ.setToolTip("put on Z") - self.textInputRX.setToolTip("rotation angle (+/- deg)") + self.TranslateX.setToolTip(translate("Ui_DockWidget", "translate X (+/- mm)")) + self.TranslateY.setToolTip(translate("Ui_DockWidget", "translate Y (+/- mm)")) + self.TranslateZ.setToolTip(translate("Ui_DockWidget", "translate Z (+/- mm)")) + self.PutOnX.setToolTip(translate("Ui_DockWidget", "put on X")) + self.PutOnY.setToolTip(translate("Ui_DockWidget", "put on Y")) + self.PutOnZ.setToolTip(translate("Ui_DockWidget", "put on Z")) + self.textInputRX.setToolTip(translate("Ui_DockWidget", "rotation angle (+/- deg)")) self.textInputRX.setText("90") - self.textInputRY.setToolTip("rotation angle (+/- deg)") + self.textInputRY.setToolTip(translate("Ui_DockWidget", "rotation angle (+/- deg)")) self.textInputRY.setText("90") - self.textInputRZ.setToolTip("rotation angle (+/- deg)") + self.textInputRZ.setToolTip(translate("Ui_DockWidget", "rotation angle (+/- deg)")) self.textInputRZ.setText("90") - self.RotateX.setToolTip("rotate X (+/- deg)") - self.RotateY.setToolTip("rotate Y (+/- deg)") - self.RotateZ.setToolTip("rotate Z (+/- deg)") - self.CenterX.setToolTip("center X") - self.CenterY.setToolTip("center Y") - self.CenterZ.setToolTip("center Z") - self.makeCompound.setToolTip("make Compound of Parts") - self.LoadBoard.setToolTip("Load kicad\n" -"Board .kicad_pcb") - self.ScaleVRML.setToolTip("export to kicad:\n" -"STEP & scaled VRML 1/2.54") - self.cb_virtual.setToolTip("enalble loading\n" + self.RotateX.setToolTip(translate("Ui_DockWidget", "rotate X (+/- deg)")) + self.RotateY.setToolTip(translate("Ui_DockWidget", "rotate Y (+/- deg)")) + self.RotateZ.setToolTip(translate("Ui_DockWidget", "rotate Z (+/- deg)")) + self.CenterX.setToolTip(translate("Ui_DockWidget", "center X")) + self.CenterY.setToolTip(translate("Ui_DockWidget", "center Y")) + self.CenterZ.setToolTip(translate("Ui_DockWidget", "center Z")) + self.makeCompound.setToolTip(translate("Ui_DockWidget", "make Compound of Parts")) + self.LoadBoard.setToolTip(translate("Ui_DockWidget", "Load KiCad\n" +"Board .kicad_pcb")) + self.ScaleVRML.setToolTip(translate("Ui_DockWidget", "export to KiCad:\n" +"STEP & scaled VRML 1/2.54")) + self.cb_virtual.setToolTip(translate("Ui_DockWidget", "enable loading\n" "virtual & mechanical\n" -"models") - self.cb_materials.setToolTip("use wrl\n" -"material") - self.LoadFootprint.setToolTip("load kicad footprint\n" -"\'kicad_mod\'") - self.cb_expStep.setToolTip("export STEP Board\n" -"and Parts after loading") - self.makeUnion.setToolTip("make Union of Parts") - self.import3D.setToolTip("import STEP\n" -"3D model") - self.checkCollisions.setToolTip("check Collisions\n" -"tolerance 1e-06") - self.export3DStep.setToolTip("export selected objects to STEP") - self.CreateAxis.setToolTip("create reference Axis") - self.HelpPB.setToolTip("Help & starting Guide") - self.ConfigPB.setToolTip("view Config File content") - self.pushPCB.setToolTip("push PCB Edge to KiCad\n" -"from Sketcher to pcbnew") - #self.config_ini_Lbl.setText("TextLabel") +"models")) + self.cb_materials.setToolTip(translate("Ui_DockWidget", "use wrl\n" +"material")) + self.LoadFootprint.setToolTip(translate("Ui_DockWidget", "load KiCad footprint\n" +"\'kicad_mod\'")) + self.cb_expStep.setToolTip(translate("Ui_DockWidget", "export STEP Board\n" +"and Parts after loading")) + self.makeUnion.setToolTip(translate("Ui_DockWidget", "make Union of Parts")) + self.import3D.setToolTip(translate("Ui_DockWidget", "import STEP\n" +"3D model")) + self.checkCollisions.setToolTip(translate("Ui_DockWidget", "check Collisions\n" +"tolerance 1e-06")) + self.export3DStep.setToolTip(translate("Ui_DockWidget", "export selected objects to STEP")) + self.CreateAxis.setToolTip(translate("Ui_DockWidget", "create reference Axis")) + self.HelpPB.setToolTip(translate("Ui_DockWidget", "Help & starting Guide")) + self.ConfigPB.setToolTip(translate("Ui_DockWidget", "view Config File content")) + self.pushPCB.setToolTip(translate("Ui_DockWidget", "push PCB Edge to KiCad\n" +"from Sketcher to pcbnew")) + #self.config_ini_Lbl.setText("TextLabel")) #self.config_ini_Lbl.setText("TextLabel") @@ -14694,7 +14706,7 @@ def changePixmap_stop_disabled(self): pm.loadFromData(base64.b64decode(stop_b64)) self.collisionLbl.setPixmap(pm) self.collisionLbl.setEnabled(False) - self.collisionLbl.setToolTip('collisions result status') + self.collisionLbl.setToolTip(translate("Ui_DockWidget", 'collisions result status')) #self.setPixmap(pm) #self.pixmap = QtGui.QPixmap(pm) #self.repaint() # repaint() will trigger the paintEvent(self, event), this way the new pixmap will be drawn on the label @@ -14710,7 +14722,7 @@ def changePixmap_ok(self): self.checkCollisions.setIcon(pm) #self.checkCollisions.setEnabled(True) QtCore.QTimer.singleShot(timer_Collisions, self.changePixmap_button_base) - self.checkCollisions.setToolTip('NO collisions found') + self.checkCollisions.setToolTip(translate("Ui_DockWidget", 'NO collisions found')) #self.setPixmap(pm) ##self.pixmap = QtGui.QPixmap(pm) #self.repaint() # repaint() will trigger the paintEvent(self, event), this way the new pixmap will be drawn on the label @@ -14725,7 +14737,7 @@ def changePixmap_button_base(self): self.checkCollisions.setIcon(pm) #self.checkCollisions.setEnabled(True) #QtCore.QTimer.singleShot(timer_Collisions, self.changePixmap_stop_disabled) - self.checkCollisions.setToolTip('check Collisions\ntolerance 1e-06') + self.checkCollisions.setToolTip(translate("Ui_DockWidget", 'check Collisions\ntolerance 1e-06')) #self.setPixmap(pm) ##self.pixmap = QtGui.QPixmap(pm) #self.repaint() # repaint() will trigger the paintEvent(self, event), this way the new pixmap will be drawn on the label @@ -14737,7 +14749,7 @@ def changePixmap_collisions(self): self.checkCollisions.setIconSize(QtCore.QSize(btn_md_sizeX,btn_md_sizeY)) self.checkCollisions.setIcon(pm) QtCore.QTimer.singleShot(timer_Collisions, self.changePixmap_button_base) - self.checkCollisions.setToolTip('collisions FOUND!') + self.checkCollisions.setToolTip(translate("Ui_DockWidget", 'collisions FOUND!')) #self.setPixmap(pm) #self.pixmap = QtGui.QPixmap(pm) #self.repaint() # repaint() will trigger the paintEvent(self, event), this way the new pixmap will be drawn on the label @@ -14749,7 +14761,7 @@ def changePixmap_stop(self): self.collisionLbl.setPixmap(pm) self.collisionLbl.setEnabled(True) QtCore.QTimer.singleShot(timer_Collisions, self.changePixmap_stop_disabled) - self.collisionLbl.setToolTip('collisions FOUND!') + self.collisionLbl.setToolTip(translate("Ui_DockWidget", 'collisions FOUND!')) #self.setPixmap(pm) #self.pixmap = QtGui.QPixmap(pm) #self.repaint() # repaint() will trigger the paintEvent(self, event), this way the new pixmap will be drawn on the label @@ -14855,7 +14867,7 @@ def onCfg(self): #KSUWidget.setGeometry(xp, yp, sizeXMax, sizeY) textEdit_dim = textEdit_dim_base self.textEdit.setGeometry(textEdit_dim[0],textEdit_dim[1],textEdit_dim[2],textEdit_dim[3]) - self.textEdit.setToolTip("ksu config ini file\ncontent") + self.textEdit.setToolTip(translate("Ui_DockWidget", "ksu config ini file\ncontent")) centerOnScreen (KSUWidget) #say("your home path is "+ expanduser("~")) sayw("kicad StepUp version "+str(___ver___)) @@ -15006,7 +15018,7 @@ def onHelp(self): #KSUWidget.setGeometry(xp, yp, sizeXMax, sizeY) textEdit_dim = textEdit_dim_base self.textEdit.setGeometry(textEdit_dim[0],textEdit_dim[1],textEdit_dim[2],textEdit_dim[3]) - self.textEdit.setToolTip("Help Start Guide") + self.textEdit.setToolTip(translate("Ui_DockWidget", "Help Start Guide")) centerOnScreen (KSUWidget) #ini_content=read_ini_file() font_color="""""" @@ -15440,19 +15452,19 @@ def setupUi(self, LayerSelection): self.comboBoxLayerSel.setObjectName("comboBoxLayerSel") self.verticalLayout.addWidget(self.comboBoxLayerSel) self.radioBtn_newdoc = QtWidgets.QRadioButton(self.verticalLayoutWidget) - self.radioBtn_newdoc.setToolTip("open in new FreeCAD document") - self.radioBtn_newdoc.setText("open in new document") + self.radioBtn_newdoc.setToolTip(translate("Ui_LayerSelection", "open in new FreeCAD document")) + self.radioBtn_newdoc.setText(translate("Ui_LayerSelection", "open in new document")) self.radioBtn_newdoc.setChecked(True) self.radioBtn_newdoc.setObjectName("radioBtn_newdoc") self.verticalLayout.addWidget(self.radioBtn_newdoc) self.radioBtn_replace_pcb = QtWidgets.QRadioButton(self.verticalLayoutWidget) - self.radioBtn_replace_pcb.setToolTip("

replace PCB in current document

N.B. Sketch constrains will be deleted!

") - self.radioBtn_replace_pcb.setText("replace PCB and Sketch in current document") + self.radioBtn_replace_pcb.setToolTip(translate("Ui_LayerSelection", "

replace PCB in current document

N.B. Sketch constrains will be deleted!

")) + self.radioBtn_replace_pcb.setText(translate("Ui_LayerSelection", "replace PCB and Sketch in current document")) self.radioBtn_replace_pcb.setObjectName("radioBtn_replace_pcb") self.verticalLayout.addWidget(self.radioBtn_replace_pcb) self.radioBtn_keep_sketch = QtWidgets.QRadioButton(self.verticalLayoutWidget) - self.radioBtn_keep_sketch.setToolTip("

keep Sketch in current document

N.B. this option will keep Sketch & constrains but replace the PCB

This could lead to a unsynced Sketch feature

") - self.radioBtn_keep_sketch.setText("replace PCB and keep Sketch in curr. doc") + self.radioBtn_keep_sketch.setToolTip(translate("Ui_LayerSelection", "

keep Sketch in current document

N.B. this option will keep Sketch & constrains but replace the PCB

This could lead to a unsynced Sketch feature

")) + self.radioBtn_keep_sketch.setText(translate("Ui_LayerSelection", "replace PCB and keep Sketch in curr. doc")) self.radioBtn_keep_sketch.setObjectName("radioBtn_keep_sketch") self.verticalLayout.addWidget(self.radioBtn_keep_sketch) @@ -15517,12 +15529,12 @@ def setupUi(self, LayerSelectionOut): self.width_label = QtWidgets.QLabel(self.verticalLayoutWidget_2) self.width_label.setMinimumSize(QtCore.QSize(150, 0)) self.width_label.setToolTip("") - self.width_label.setText("Line Width:") + self.width_label.setText(translate("Ui_LayerSelectionOut", "Line Width:")) self.width_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.width_label.setObjectName("width_label") self.horizontalLayout.addWidget(self.width_label) self.lineEdit_width = QtWidgets.QLineEdit(self.verticalLayoutWidget_2) - self.lineEdit_width.setToolTip("Line width for drawings") + self.lineEdit_width.setToolTip(translate("Ui_LayerSelectionOut", "Line width for drawings")) self.lineEdit_width.setText("0.16") self.lineEdit_width.setObjectName("lineEdit_width") self.horizontalLayout.addWidget(self.lineEdit_width) @@ -15555,9 +15567,9 @@ def PushPCB(): global last_3d_path, start_time, load_sketch, last_pcb_path, edge_width #say("export3DSTEP") if load_sketch==False: - msg="""Edge editing NOT supported on FC0.15!
please upgrade your FC release""" + msg = translate("PushPCB", "Edge editing NOT supported on FC0.15!
please upgrade your FC release") say_warning(msg) - msg="Edge editing NOT supported on FC0.15!" + msg = translate("PushPCB", "Edge editing NOT supported on FC0.15!") sayerr(msg) #if 0: #if FreeCAD.ActiveDocument is None: @@ -15575,7 +15587,7 @@ def PushPCB(): if 0: from pivy import coin from math import degrees - print('getting camera view') + print(translate("PushPCB", "getting camera view")) pcam = FreeCADGui.ActiveDocument.ActiveView.getCamera() sketch = sel[0] rot = sketch.getGlobalPlacement().Rotation @@ -15583,10 +15595,10 @@ def PushPCB(): cam = FreeCADGui.ActiveDocument.ActiveView.getCameraNode() if rot.Angle < 0.001: rot.Angle = 0 - print ('forcing rotAngle to 0') + print (translate("PushPCB", "forcing rotAngle to 0")) cam.orientation.setValue(coin.SbVec3f(rot.Axis.x, rot.Axis.y, rot.Axis.z), rot.Angle) #-pi) FreeCADGui.ActiveDocument.ActiveView.fitAll() - print('evaluate to recompute') + print(translate("PushPCB", "evaluate to recompute")) FreeCAD.ActiveDocument.recompute() #sel[0].ViewObject.Visibility = False #print(sel[0].Label) @@ -15639,7 +15651,7 @@ def PushPCB(): else: if not (name.endswith("kicad_pcb")): name = name + ".kicad_pcb" - msg="Saving to an empty KiCad pcb file"+'\n'+name + msg = translate("PushPCB", "Saving to an empty KiCad pcb file")+'\n'+name sayw(msg) last_pcb_path=os.path.dirname(name) pg = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/kicadStepUp") @@ -15655,19 +15667,19 @@ def PushPCB(): # msg="Save to an EXISTING KiCad pcb file to update your Edge!" # sayerr(msg) else: #cancel - print('Cancel') + print(translate("PushPCB", "Cancel")) pass if 0: - print('restoring cam view') + print(translate("PushPCB", "Restoring cam view")) FreeCADGui.ActiveDocument.ActiveView.setCamera(pcam) # sel[0].ViewObject.Visibility = True else: - msg="""select one Sketch to be pushed to kicad board!""" + msg = translate("PushPCB", "Select one Sketch to be pushed to kicad board!") sayerr(msg) say_warning(msg) else: - msg="""select one Sketch to be pushed to kicad board!""" + msg = translate("PushPCB", "Select one Sketch to be pushed to kicad board!") sayerr(msg) say_warning(msg) ## diff --git a/translations/ksu.ts b/translations/ksu.ts index cf115c8..07cf2a4 100644 --- a/translations/ksu.ts +++ b/translations/ksu.ts @@ -1,162 +1,1503 @@ + + CDialog + + + Dialog + + + + + explode_dwg + + + Explode 3D PCB + kicad StepUp 3D tools + + + + + 1.0 + + + + + kSUGui::DlgSettingskStepUp + + + + + General + + + + + + 3D Prefix working folder + + + + + + <html><head/><body><p>your <span style=" font-weight:600;">KISYS3DMOD</span> path</p><p>or 3D model <span style=" font-weight:600;">main prefix path</span></p></body></html> + + + + + + main 3D folder location 'KISYS3DMOD' +or 'KICAD6_3DMODEL_DIR' + + + + + + <html><head/><body><p>main 3D folder location</p><p><span style=" font-weight:600;">'KISYS3DMOD'</span></p></body></html> + + + + + + + + + + <html><head/><body><p>your <span style=" font-weight:600;">ALIAS</span> 3D</p><p>model prefix path</p></body></html> + + + + + + secondary 3D folder loc +'ALT2 3DMOD' + + + + + + + + + + <html><head/><body><p>secondary 3D folder location</p><p><span style=" font-weight:600;">'ALT3DMOD'</span></p></body></html> + + + + + + PCB settings + + + + + PCBs color. + + + + + + + + + PCB color + + + + + LightGreen + + + + + + Green + + + + + + Blue + + + + + + Red + + + + + + Purple + + + + + + DarkGreen + + + + + + DarkBlue + + + + + + LightBlue + + + + + + Yellow + + + + + + Black + + + + + + White + + + + + + + + PCB Reference Placement in mechanical environment + + + + + + PCB Placement + + + + + + Grid Origin + + + + + + Aux Origin + + + + + + Pcb Center (approx) + + + + + + + + Constraints to be added to PCB Sketch + + + + + + PCB Sketch mode (constraints) + + + + + + Coincident + + + + + + V&H, Coincident + + + + + + Full + + + + + + None + + + + + + Enable/Disable Virtual 3D +(mechanical) models + + + + + + Virtual 3D Models loading + + + + + + + + minimum Drill size applied to PCB +'0.0' -> all drills are loaded +'-1' -> all drills and vias are loaded + + + + + + minimum Drill size applied to PCB + + + + + + 0.0 + + + + + + <html><head/><body><p><span style=" font-weight:600;">Bounding Box LIST:</span><br/>configure which 3D models will be converted to Bounding Box<br/><span style=" font-weight:600;">Examples:</span><br/><span style=" font-weight:600;">ALL</span><span style=" font-style:italic;">-&gt; all models will be converted to bounding boxes</span><br/><span style=" font-weight:600;">LIST</span> DSUB-15-HD_FH, DSUB-9_FH <span style=" font-style:italic;">-&gt; these two models will NOT be converted to BBox</span><br/><span style=" font-style:italic;">(list of 3D model's names separated by a semicolon)</span></p></body></html> + + + + + + Bounding Boxes + + + + + + <html><head/><body><p><span style=" font-weight:600;">Black List:</span><br/>put here your model names that you don't want to load (e.g. smallest ones)<br/>separated by a semicolon.<br/>DNP or DNF attribute.<br/>volume and height are also configurable.<br/>(volume=1 means all models with a volume &lt; 1mm3 will not be included)<br/>(height=1 means all models with a height &lt; 1mm will not be included)<br/><br/><span style=" font-weight:600;">Examples:</span><br/>DNP;R_0402_1005Metric;C_0402_1005Metric;<br/>height=1.0<br/>volume=1.0<br/><span style=" font-weight:600;">An empty list means all the models will be parsed.</span></p></body></html> + + + + + + Black List + + + + + + + + minimum Edge Tolerance applied to PCB +default '0.01mm' + + + + + + minimum edge tolerance + + + + + + 0.01 + + + + + + <html><head/><body><p><span style=" font-weight:600;">White List:</span><br/>put here your model names that you must load (e.g. smallest ones)<br/>separated by a semicolon.<br/><br/><span style=" font-weight:600;">Examples:</span><br/> +LED_D5.0mm_IRBlack;USB_Mini-B_Lumberg_2486_01_Horizontal;<br/><span style=" font-weight:600;">An empty list means all the models will behave as usual.</span></p></body></html> + + + + + White List + + + + + + Import/Export settings + + + + + + <html><head/><body><p>Enable/Disable <span style=" font-weight:600;">fusion (union)</span> of all 3D models.</p><p>Be careful ... fusion can be heavy or generate FC crash with a lot of objects.</p><p>Please consider to use bbox or blacklist small objects</p></body></html> + + + + + + Make a Union of 3D models + + + + + + <html><head/><body><p>Directly <span style=" font-weight:600;">Export STEP</span> after Loading</p></body></html> + + + + + + Directly Export STEP after Loading + + + + + STEP export mode. + + + + + + + + + STEP export mode + + + + + + + + Hierarchy + + + + + + Flat + + + + + + One Container + + + + + 3D Loading mode. + + + + + + + 3D Loading mode + + + + + + 3D_loading_mode +Allowing or not Loading Multi Parts objects + + + + + + Simplified + + + + + + NotMultiParts + + + + + + Standard + + + + + Assembly3 Links allowed. + + + + + + + Assembly3 Links allowed + + + + + Enables Materials for VRML exporting. + + + + + + + Enable Materials for VRML exporting + + + + + Start Turntable after loading. + + + + + + + Start Turntable after loading + + + + + Assembly3 LinkGroups allowed. + + + + + + + Assembly3 LinkGroups allowed + + + + + Enables compressed STEP file ('.stpZ') generation exporting. + + + + + + + Enable compressed STEP file ('.stpZ') generation exporting + + + + + Enables compressed VRML file ('.wrz') generation exporting. + + + + + + + Enable compressed VRML file ('.wrz') generation exporting + + + + + Displays STEP import settings warning. + + + + + + + Display STEP import settings warning + + + + + + <html><head/><body><p>Apply Transparency for 'Glass' Materials:</p><p>Force Transparency to STEP model if 'Glass' is found in '.wrl' model</p></body></html> + + + + + + Apply Transparency for 'Glass' Materials + + + + + + <html><head/><body><p>Apply Transparency for 'Led' Materials:</p><p>Force Transparency to STEP model if 'Led' is found in '.wrl' model</p></body></html> + + + + + + Apply Transparency for 'Led' Materials + + + + + <html><head/><body><p>Skip importing pcb zone(s)</p></body></html> + + + + + skpZone + + + + + <html><head/><body><p>Skip importing pcb tracks and vias</p></body></html> + + + + + skpTracks + + + + + <html><head/><body><p>Skip importing pcb pads</p></body></html> + + + + + skpPads + + + + + + third 3D folder loc +'ALT3 3DMOD' + + + + + + fourth 3D folder loc +'ALT4 3DMOD' + + + + + <html><head/><body><p>Select to NOT use the native dialog box in Open/Save files<br/>(suggested for Snap or FlatPack)</p></body></html> + + + + + don't use native dialog in Open/Save files (for Snap or FlatPack) + + + + + + Mechanical Check + + + + + Generates Sketches for differences on PCB Edge. + + + + + + + Generate Sketches for differences on PCB Edge + + + + + Working directory ccx tools + + + + + + Use custom directory + + + + + Working directory general FEM solver frame work + + + + + Temporary directories + + + + + Let FreeCAD manage (create, delete) the working directories for all solver. Use temporary directories. + + + + + Beside .fcstd file + + + + + Create a directory in the same folder in which the fcstd file of the document is located. Use Subfolder for each solver (e.g. for a file ./mydoc.fcstd and a solver with the label Elmer002 use ./mydoc/Elmer002). + + + + + Use directory set below. Create own subdirectory for every solver. Name directory after the solver label prefixed with the document name. + + + + + Path: + + + + + Mesh + + + + + Create mesh groups for analysis reference shapes + + + + + + choice#1 + + + + + choice#2 + + + + + choice#3 + + + + + Results + + + + + Keep results on calculation re-run + + + + + Restore result dialog settings + + + + + Hide constraints when open result dialog + + + + + + <html><head/><body><p><span style=" font-weight:600;">Bounding Box LIST:</span></p><p>configure which 3D models will be converted to Bounding Box</p><p><span style=" font-weight:600;">Examples:</span></p><p><span style=" font-weight:600;">ALL</span><span style=" font-style:italic;">-&gt; all models will be converted to bounding boxes</span></p><p><span style=" font-weight:600;">LIST</span> DSUB-15-HD_FH, DSUB-9_FH <span style=" font-style:italic;">-&gt; these two models will NOT be converted to BBox</span></p><p><span style=" font-style:italic;">(list of 3D model's names separated by a semicolon)</span></p></body></html> + + + + + + <html><head/><body><p><span style=" font-weight:600;">Black List:</span></p><p>put here your model names that you don't want to load (e.g. smallest ones)</p><p>separated by a semicolon.</p><p>volume and height are also configurable.</p><p>(volume=1 means all models with a volume &lt; 1mm3 will not be included)</p><p>(height=1 means all models with a height &lt; 1mm will not be included)</p><p><br/><span style=" font-weight:600;">Examples:</span></p><p>r_0603;r_0402;c_0402;c_0603</p><p>height=1.0</p><p>volume=1.0</p><p><span style=" font-weight:600;">An empty list means all the models will be parsed.</span></p></body></html> + + + Arcs2Circles - + Convert Arcs to Circles in Sketch - Restore_Transparency + Close + + + <b>Do you want to quit?</b> <i>Have you saved your STEP artwork?</i><br> + + + + + Close + + + + + Create_BoundBox + + + Create BoundBox of the Selected Object + + + + + Help + + + <b>Kicad StepUp</b> is a tool set to easily <b>collaborate between kicad pcb EDA</b> (board and 3D parts) as STEP models <b>and FreeCAD MCAD</b> modeler.<br> +</font> + + + + + <b>StepUp</b> can also be used <b>to align 3D model to kicad footprint</b>.<br> +The artwork can be used for MCAD interchange and collaboration, and for enclosure design.<br> +The 3D visualization of components on board assemblies in kicad 3dviewer, will be the same in your mechanical software, +because of the STEP interchange format.<br> +It is also possible to <b>Update a pcb Edge from a FC Sketcher.</b><br> +<b>configuration options:</b><br>Configuration options are located in the preferences system of FreeCAD, which is located in the Edit menu -&gt; Preferences.<br> + + + + + + starter Guide:<br><a href='{}{}demo{}{}' target='_blank'>{}</a><br> + + + + + <b>Note:</b> each button has its own <b>Tooltip</b><br> +useful buttons:<br><b>Load kicad Board directly</b> -> will load kicad board and parts in FreeCAD coming from kicad '.kicad_pcb' file<br> +<b>Load kicad Footprint module</b> -> will load directly kicad footprint in FreeCAD to easily align the 3D model to footprint<br> +<b>Export to kicad STEP & scaled VRML</b> -> will convert MCAD model to STEP and VRML to be used by Kicad and kicad StepUp<br> +<b> -> VRML can be multipart;<br> -> STEP must be single part</b><br>(<i>'Part Boolean Union'</i> or <i>'Part Makecompound'</i>)<br> +<i>assign material to selected colors and your VRML 3D models will have nice shiny effects</i><br> +<b>Push pcb Sketch to kicad_pcb Edge</b> -> will push pcb Sketch to kicad_pcb Edge in your design; it can be done with an empty or with an existing pcb Edge<br> +<br>for a more detailed help have a look at <br><b>kicadStepUp-starter-Guide.pdf</b><br> +or just follow the <b>YouTube video tutorials</b> <br><a href='https://youtu.be/h6wMU3lE_sA' target='_blank'>kicadStepUp basics</a><br> +<a href='https://youtu.be/O6vr8QFnYGw' target='_blank'>kicadStepUp STEP alignment to Kicad footprint</a><br> +<a href='https://github.com/easyw/kicadStepUpMod' target='_blank'>check always the latest release of kicadStepUp</a><br><br> +Designing in kicad native 3d-viewer will produce a fully aligned STEP MCAD version +with the same view of kicad 3d render.<br> +Moreover, KiCad StepUp tool set <b>will let you to load the kicad footprint inside FreeCAD and align the 3D part with a visual real time feedback +of the 3d model and footprint reciprocal position.</b><br> +With this tool is possible to download a part from on-line libraries, align the model to kicad footprint +and export the model to wrl, for immediate 3d-viewer alignment in pcbnew.<br> +Now the two words are connected for a better collaboration; just <b>design in kicad EDA</b> and transfer +the artwork to <b>MCAD (FreeCAD)</b> smoothly.<br> +<b>The workflow is very simple</b> and maintains the usual way to work with kicad:<br> +Add models to your library creating 3D models in FreeCAD, or getting models from online libs +or from the parametric 3D lib expressly done to kicad <a href='https://github.com/easyw/kicad-3d-models-in-freecad' target='_blank'>kicadStepUp 3D STEP models generator</a><br> +Once you have your 3D MCAD model, <b>you need to have a copy of that in STEP and VRML format.</b> <br> +(with the latest kicad release you can only have STEP model, VRML is not needed anymore, but <b>it is possible + to mix VRML, STEP and IGES format</b>)<br> +Just exporting the model with FreeCAD and put your model in the same folder in which +normally you are used to put vrml models; the script will assembly the MCAD board and models as in 3d-viewer of kicad. +<br><b>NB<br>STEP model has to be fused in single object</b><br>(Part Boolean Union of objects) +<br><b>or a Compoud</b> (Part Makecompound of objects)</b> +<hr><b>enable 'Report view' Panel to see helping messages</b> +</font> +<br> + + + + + KiCadStepUpWB + + + KiCadStepUp + + + + + KiCadStepUp workbench + + + + + Menu + + + ksu PushPull + + + + + + ksu Tools + + + + + Demo + + + + + PushPCB + + + <b>Edge editing NOT supported on FC0.15!</b><br>please upgrade your FC release + + + + + Edge editing NOT supported on FC0.15! + + + + + getting camera view + + + + + forcing rotAngle to 0 + + + + + evaluate to recompute + + + + + Saving to an empty KiCad pcb file + + + + + Cancel + + + + + Restoring cam view + + + + + + Select one Sketch to be pushed to kicad board! + + + + + Restore_Transparency + + + Restore Transparency to Active Document Objects + + + + + Save + + + please <b>save</b> your job file before exporting. + + + + + Please <b>save</b> your job file before exporting. + + + + + + Info ... + + + + + + Save + + + + + Say + + + routine Scale to VRML 1/2.54 + + + + + Put on Axe XYZ ! + + + + + Select <b>ONE single part</b> object !<br> +suggestion for multi-part:<br> +&nbsp;&nbsp;<b>Part Boolean Union (recommended)</b><br> +or<br> +&nbsp;&nbsp;<i>Part Make compound (alternative choice)</i> + + + + + Select <b>a Compound</b> or <br> +<b>a Part Design group</b><br> +or <b>more than one Part</b> object !<br> + + + + + + Error in selection + + + + + Warning ... + + + + + ERROR! ... + + + + + Info ... + + + + + + + + + + + Select ONE single part object ! + + + + + Select an object ! + + + + + Toolbar + + + ksu Tools + + + + + ksu Sketching + + + + + ksu PushPull + + + + + + ksu Design Tools + + + + + ksu Show + + + + + ksu Helpers + + + + + Ui_CDialog + + + Select a Sketch and Parameters +to constraint the sketch +NB the Sketch will be modified! + + + + + <b>Select a Sketch and Parameters to<br>constrain the sketch.<br>NB the Sketch will be modified!</b> + + + + + Constraints + + + + + Lock Coincident, Horizontal +and Vertical + + + + + Lock Coincident + + + + + Tolerance + + + + + tolerance in mm + + + + + Tolerance on Constraints + + + + + remove duplicated geometries + + + + + Ui_Dialog - - Restore Transparency to Active Document Objects + + Material Properties - - - approximateCenter - - Create Center of Circle through 3 Vertices or Select two vertices to create a mid point or Select a Shape to create a center point + + Materials + + + + + Original + + + + + Shape Color + + + + + Diffuse Color + + + + + New + + + + + NB: set Material will unmatch colors between wrl and STEP - checkSolidExpSTEP + Ui_DockWidget - - Check if the selected part would be -exported to STEP as a single solid + + ksu config ini file +location + + + + + KiCad StepUp tools + + + + + dock left + + + + + un-dock (floating) + + + + + minimize + + + + + dock right + + + + + close + + + + + + + translate (+/- mm) + + + + + translate X (+/- mm) + + + + + translate Y (+/- mm) + + + + + translate Z (+/- mm) + + + + + put on X + + + + + put on Y + + + + + put on Z + + + + + + + rotation angle (+/- deg) + + + + + rotate X (+/- deg) + + + + + rotate Y (+/- deg) + + + + + rotate Z (+/- deg) + + + + + center X + + + + + center Y + + + + + center Z + + + + + make Compound of Parts + + + + + Load KiCad +Board .kicad_pcb + + + + + export to KiCad: +STEP & scaled VRML 1/2.54 + + + + + enable loading +virtual & mechanical +models + + + + + use wrl +material + + + + + load KiCad footprint +'kicad_mod' + + + + + export STEP Board +and Parts after loading + + + + + make Union of Parts + + + + + import STEP +3D model + + + + + export selected objects to STEP + + + + + create reference Axis + + + + + Help & starting Guide + + + + + view Config File content + + + + + push PCB Edge to KiCad +from Sketcher to pcbnew + + + + + collisions result status + + + + + NO collisions found + + + + + + check Collisions +tolerance 1e-06 + + + + + + collisions FOUND! + + + + + ksu config ini file +content + + + + + Help Start Guide - ksu + Ui_LayerSelection - - Offset value + + open in new FreeCAD document - - Offset [+/- mm]: + + open in new document - - Offset value [+/- mm] + + <html><head/><body><p>replace PCB in current document</p><p><span style=" font-weight:600; color:#aa0000;">N.B.</span> Sketch constrains will be deleted!</p></body></html> - - Arc or Intersection Offset method + + replace PCB and Sketch in current document - - Arc + + <html><head/><body><p>keep Sketch in current document</p><p><span style=" font-weight:600; color:#aa0000;">N.B.</span> this option will keep Sketch &amp; constrains but replace the PCB</p><p>This could lead to a unsynced Sketch feature</p></body></html> - - Offset Y [mm]: + + replace PCB and keep Sketch in curr. doc + + + Ui_LayerSelectionOut - - Offset Y value [+/- mm] + + Line Width: - - Select a Sketch and Parameters -to constraint the sketch -NB the Sketch will be modified! + + Line width for drawings + + + Ui_Offset_value - - <b>Select a Sketch and Parameters to<br>constrain the sketch.<br>NB the Sketch will be modified!</b> + + Offset value - - Constraints + + Offset [+/- mm]: - - Lock Coincident, Horizontal -and Vertical + + Offset value [+/- mm] - - Lock Coincident + + Arc or Intersection Offset method - - Tolerance + + Arc - - tolerance in mm + + Offset Y [mm]: - - Tolerance on Constraints + + Offset Y value [+/- mm] + + + approximateCenter - - remove duplicated geometries + + Create Center of Circle through 3 Vertices or Select two vertices to create a mid point or Select a Shape to create a center point - - PolyLine Contour generated<br><br> + + Create Center of Circle through 3 Vertices + + + checkSolidExpSTEP - - <b>For PolyLine Pads, please add 'circles' inside each closed polyline</b><br> + + Check if the selected part would be +exported to STEP as a single solid + + + ksu - - Select a Sketch and Parameters to<br>move the sketch.<br>Offset X: + + PolyLine Contour generated + +<b>For PolyLine Pads, please add 'circles' inside each closed polyline</b><br> - - Create Center of Circle through 3 Vertices + + Select a Sketch and Parameters to<br>move the sketch.<br>Offset X: ksuAsm2Part - + Convert an Assembly (A3) to Part hierarchy - + ksu Convert an Assembly (A3) to Part hierarchy + + ksuImpDXF + + + Import Legacy DXF + + + + + ksuOpDXF + + + open Legacy DXF + + + + + ksuOpEzDXF + + + open ezDXF + + + ksuRemoveSuffix - + Remove 'custom' Suffix from Labels @@ -164,7 +1505,7 @@ and Vertical ksuRemoveTimeStamp - + Remove TimeStamp from Labels @@ -172,26 +1513,26 @@ and Vertical ksuTools - + ksu Tools - + Activate the main -kicad StepUp Tools Dialog +KiCad StepUp Tools Dialog ksuTools2D2Sketch - + 2D to Sketch - + ksu 2D object (or DXF) to Sketch @@ -199,12 +1540,12 @@ kicad StepUp Tools Dialog ksuTools2DtoFace - + 2D to Face - + ksu 2D object (or DXF) to Surface for extruding @@ -212,12 +1553,12 @@ kicad StepUp Tools Dialog ksuTools3D2D - + 3D to 2D - + ksu 3D object to 2D projection @@ -225,8 +1566,8 @@ kicad StepUp Tools Dialog ksuToolsAddSilks - - ksu tools Add Silks from kicad exported DXF + + ksu tools Add Silks from KiCad exported DXF NB: it could be a very intensive loading! @@ -234,12 +1575,12 @@ NB: it could be a very intensive loading! ksuToolsAddToTree - + Add to Tree - + ksu Add Object(s) to Container Tree keeping Placement First Selection is the Container @@ -249,16 +1590,29 @@ First Selection is the Container ksuToolsAddTracks - + ksu tools Add Tracks NB: it could be a very intensive loading! + + ksuToolsAlignView + + + AlignView to Face + + + + + ksu AlignView to Face + + + ksuToolsAligner - + Manipulator tools 'Aligner' @@ -266,12 +1620,12 @@ NB: it could be a very intensive loading! ksuToolsBsplineNormalize - + Geo to Bspline - + ksu Convert Geometry to Bspline for KiCAD format @@ -279,7 +1633,7 @@ NB: it could be a very intensive loading! ksuToolsCaliper - + Manipulator tools 'Caliper' @@ -287,12 +1641,12 @@ NB: it could be a very intensive loading! ksuToolsCheckSolid - + Check Solid property - + ksu Check Solid property Toggle suffix @@ -301,12 +1655,12 @@ Toggle suffix ksuToolsCollisions - + Check Collisions - + ksu Check Collisions and Interferences @@ -314,12 +1668,12 @@ Toggle suffix ksuToolsColoredBinder - + Colored Binder - + Colored Binder object @@ -327,12 +1681,12 @@ Toggle suffix ksuToolsColoredClone - + Colored Clone - + Colored Clone object @@ -340,22 +1694,35 @@ Toggle suffix ksuToolsComparePositions - + tools Compare 3D models Positions - + ksu Compare 3D models Positions Data with the Active Document [MCAD Synchronize] + + ksuToolsConstrainator + + + Constrain a Sketch + + + + + ksu Fix & auto Constrain a Sketch + + + ksuToolsContour2Poly - + ksu tools 'RF PolyLined Sketch' Selection's Shapes to PolyLine Sketch @@ -364,12 +1731,12 @@ Selection's Shapes to PolyLine Sketch ksuToolsCopyPlacement - + Copy Placement 1st to 2nd - + ksu tools Copy Placement 1st to 2nd @@ -377,12 +1744,12 @@ Selection's Shapes to PolyLine Sketch ksuToolsDeepCopy - + PartDN Copy - + ksu PartDN Copy object with relative placement [flattened model] @@ -392,7 +1759,7 @@ with relative placement ksuToolsDefeaturingTools - + Defeaturing Tools from Defeaturing WorkBench @@ -400,12 +1767,12 @@ with relative placement ksuToolsDiscretize - + Discretize - + ksu Discretize a shape/outline to a Sketch @@ -413,12 +1780,12 @@ with relative placement ksuToolsEdges2Sketch - + Edges to Sketch - + ksu Select coplanar edge(s) or Face(s) or a single Vertex of a coplanar outline to get a corresponding Sketch @@ -428,42 +1795,42 @@ to get a corresponding Sketch ksuToolsEditPrefs - + Edit Preferences ksuToolsExplode - - + + ksu Tools PCB Explode -Select the top container of a kicad PCB to exlode it +Select the top container of a KiCad PCB to exlode it ksuToolsExport3DStep - - Export 3D to Step + + Export 3D to STEP - - ksu Export selected objects to Step Model + + ksu Export selected objects to STEP Model ksuToolsExportModel - + Export 3D Model - + ksu Export 3D Model to KiCad @@ -471,7 +1838,7 @@ Select the top container of a kicad PCB to exlode it ksuToolsExtrude - + ksu tools 'Extrude' Extrude selection @@ -480,12 +1847,12 @@ Extrude selection ksuToolsFootprintGen - + Footprint generator - + ksu Footprint editor and exporter @@ -493,12 +1860,12 @@ Extrude selection ksuToolsGeneratePositions - + tools Generate 3D models Positions - + ksu Generate 3D models Positions Data for Active Document [MCAD Synchronize] @@ -508,12 +1875,12 @@ Data for Active Document ksuToolsHighlightToggle - + Highlight Toggle - + ksu Selection Highlight Toggle @@ -521,25 +1888,38 @@ Data for Active Document ksuToolsImport3DStep - - Import 3D Step + + Import 3D STEP + + + + + ksu Import 3D STEP Model + + + + + ksuToolsImportFootprint + + + Load FootPrint - - ksu Import 3D Step Model + + ksu Load KiCad PCB FootPrint ksuToolsLoadFootprint - + Load FootPrint - + ksu Load KiCad PCB FootPrint @@ -547,7 +1927,7 @@ Data for Active Document ksuToolsLoopSelection - + ksu tools 'LoopSelection' Loop selection on a xy outline @@ -556,12 +1936,12 @@ Loop selection on a xy outline ksuToolsMakeCompound - + Make Compound - + ksu Make a Compound of selected objects @@ -569,12 +1949,12 @@ Loop selection on a xy outline ksuToolsMakeUnion - + Make Union - + ksu Make a Union of selected objects @@ -582,7 +1962,7 @@ Loop selection on a xy outline ksuToolsMergeSketches - + Merge Sketches @@ -590,12 +1970,12 @@ Loop selection on a xy outline ksuToolsMoveSketch - + Move Sketch - + ksu Move 2D Sketch @@ -603,7 +1983,7 @@ Loop selection on a xy outline ksuToolsMover - + Manipulator tools 'Mover' @@ -611,12 +1991,12 @@ Loop selection on a xy outline ksuToolsOffset2D - + Offset 2D - + ksu Offset 2D object @@ -624,12 +2004,12 @@ Loop selection on a xy outline ksuToolsOpenBoard - + Load Board - + ksu Load KiCad PCB Board and Parts @@ -637,12 +2017,12 @@ Loop selection on a xy outline ksuToolsPullMoved - + Pull 3D model(s) placement from PCB - + ksu Pull 3D model(s) placement from PCB @@ -650,12 +2030,12 @@ Loop selection on a xy outline ksuToolsPullPCB - + Pull Sketch from PCB - + ksu Pull Sketch from PCB Edge @@ -663,12 +2043,12 @@ Loop selection on a xy outline ksuToolsPushMoved - + Push 3D moved model(s) to PCB - + ksu Push 3D moved model(s) to PCB @@ -676,12 +2056,12 @@ Loop selection on a xy outline ksuToolsPushPCB - + Push Sketch to PCB - + ksu Push Sketch to PCB Edge @@ -689,12 +2069,12 @@ Loop selection on a xy outline ksuToolsReLinkBinder - + Relink Binder - + Relink Binder object Select Binder and an Object to be linked @@ -702,12 +2082,12 @@ Loop selection on a xy outline ksuToolsRemoveFromTree - + Remove from Tree - + ksu Remove Object(s) from Container Tree keeping Placement First Selection is the Container @@ -717,7 +2097,7 @@ First Selection is the Container ksuToolsRemoveSubTree - + Remove Sub Tree @@ -725,12 +2105,12 @@ First Selection is the Container ksuToolsResetPartPlacement - + Reset Part Placement - + ksu Reset Placement for all Part containers in selection @@ -738,12 +2118,12 @@ First Selection is the Container ksuToolsResetPlacement - + Reset Placement - + ksu Reset Placement for a Shape @@ -751,12 +2131,12 @@ First Selection is the Container ksuToolsSimpleCopy - + Simple Copy - + ksu Simple Copy object @@ -764,12 +2144,12 @@ First Selection is the Container ksuToolsSimplifySketck - + Simplify Sketch - + ksu Simplifying Sketch to Arcs and Lines @@ -777,7 +2157,7 @@ First Selection is the Container ksuToolsSkValidate - + ksu tools 'Sketcher Validate' Validate selected Sketch @@ -786,12 +2166,12 @@ Validate selected Sketch ksuToolsStepImportModeComp - + disable Simplified STEP Import Mode - + ksu tools disable Simplified STEP Import Mode @@ -799,12 +2179,12 @@ Validate selected Sketch ksuToolsStepImportModeSTD - + disable Full STEP Import Mode - + ksu tools disable Full STEP Import Mode @@ -812,26 +2192,26 @@ Validate selected Sketch ksuToolsSync3DModels - + Sync 3D model(s) Ref & TimeStamps with PCB - + ksu Sync 3D model(s) Ref & TimeStamps -of the Selected 3D model with kicad PCB +of the Selected 3D model with KiCad PCB ksuToolsToggleTreeView - + Expand/Collapse Tree View - + ksu tools Expand/Collapse Tree View @@ -839,12 +2219,12 @@ of the Selected 3D model with kicad PCB ksuToolsTransparencyToggle - + Transparency Toggle - + ksu Selection Transparency Toggle @@ -852,35 +2232,25 @@ of the Selected 3D model with kicad PCB ksuToolsTurnTable - + TurnTable - + ksu TurnTable - - - Constrain a Sketch - - - - - ksu Fix & auto Constrain a Sketch - - ksuToolsUnion - + Fuse objects - + Make Union (Fuse) objects @@ -888,12 +2258,12 @@ of the Selected 3D model with kicad PCB ksuToolsVisibilityToggle - + Visibility Toggle - + ksu Selection Visibility Toggle diff --git a/translations/update_translation.sh b/translations/update_translation.sh new file mode 100755 index 0000000..d073238 --- /dev/null +++ b/translations/update_translation.sh @@ -0,0 +1,125 @@ +#!/usr/bin/env bash + +# -------------------------------------------------------------------------------------------------- +# +# Update translation files +# +# Supported locales on FreeCAD <2024-01-20, FreeCADGui.supportedLocales(), total=40>: +# {'English': 'en', 'Afrikaans': 'af', 'Arabic': 'ar', 'Basque': 'eu', 'Belarusian': 'be', +# 'Bulgarian': 'bg', 'Catalan': 'ca', 'Chinese Simplified': 'zh-CN', +# 'Chinese Traditional': 'zh-TW', 'Croatian': 'hr', 'Czech': 'cs', 'Dutch': 'nl', +# 'Filipino': 'fil', 'Finnish': 'fi', 'French': 'fr', 'Galician': 'gl', 'Georgian': 'ka', +# 'German': 'de', 'Greek': 'el', 'Hungarian': 'hu', 'Indonesian': 'id', 'Italian': 'it', +# 'Japanese': 'ja', 'Kabyle': 'kab', 'Korean': 'ko', 'Lithuanian': 'lt', 'Norwegian': 'no', +# 'Polish': 'pl', 'Portuguese': 'pt-PT', 'Portuguese, Brazilian': 'pt-BR', 'Romanian': 'ro', +# 'Russian': 'ru', 'Serbian': 'sr', 'Serbian, Latin': 'sr-CS', 'Slovak': 'sk', +# 'Slovenian': 'sl', 'Spanish': 'es-ES', 'Spanish, Argentina': 'es-AR', 'Swedish': 'sv-SE', +# 'Turkish': 'tr', 'Ukrainian': 'uk', 'Valencian': 'val-ES', 'Vietnamese': 'vi'} +# +# NOTE: WORKFLOW +# 0. Install Qt tools +# Debian-based (e.g., Ubuntu): $ sudo apt-get install qttools5-dev-tools pyqt6-dev-tools +# Fedora-based: $ sudo dnf install qt6-linguist qt6-devel +# Arch-based: $ sudo pacman -S qt6-tools python-pyqt6 +# 1. Make the script executable +# $ chmod +x update_translation.sh +# 2. Execute the script passing the locale code as first parameter +# The script has to be executed within the `resources/translations` directory +# Only update the files you're translating! +# $ ./update_translation.sh es-ES +# 3. Do the translation via Qt Linguist and use `File>Release` +# 4. If releasing with the script execute the script passing the locale code as first parameter +# and use '-r' flag next +# $ ./update_translation.sh es-ES -r +# +# The usage of `pylupdate6` is preferred over 'pylupdate5' when extracting text strings from +# Python files. +# +# -------------------------------------------------------------------------------------------------- + +supported_locales=( + "en" "af" "ar" "eu" "be" "bg" "ca" "zh-CN" "zh-TW" "hr" + "cs" "nl" "fil" "fi" "fr" "gl" "ka" "de" "el" "hu" + "id" "it" "ja" "kab" "ko" "lt" "no" "pl" "pt-PT" "pt-BR" + "ro" "ru" "sr" "es-ES" "es-AR" "sv-SE" "tr" "uk" "val-ES" "vi" +) + +is_locale_supported() { + local locale="$1" + for supported_locale in "${supported_locales[@]}"; do + if [[ "$supported_locale" == "$locale" ]]; then + return 0 + fi + done + return 1 +} + +get_strings() { + # Get translatable strings from ../ui/*.ui Qt Designer files + lupdate ../Resources/ui/constrinator-v1.2.ui ../Resources/ui/explode.ui \ + ../Resources/ui/ksu_prefs.ui ../Resources/ui/STEP-preferences.ui \ + -ts uifiles.ts -no-obsolete + # Get translatable strings from ../../*.py Python files + # pylupdate5 -verbose ../*.py -ts pyfiles.ts + pylupdate6 ../InitGui.py ../hlp.py \ + ../kicadStepUptools.py ../kicadStepUpCMD.py \ + -ts pyfiles.ts +} + +delete_files() { + # Delete files that are no longer needed + rm uifiles.ts + rm pyfiles.ts + rm -f _${WB}.ts +} + +add_new_locale() { + echo -e "\033[1;33m\n\t<<< Creating '${WB}_${LOCALE}.ts' file >>>\n\033[m" + get_strings + # Join strings from Qt Designer and Python files into temp file + lconvert -i uifiles.ts pyfiles.ts -o _${WB}.ts + # Add generic file + lconvert -i _${WB}.ts -o ${WB}.ts + # Add specified locale file + lconvert -source-language en -target-language $LOCALE \ + -i _${WB}.ts -o ${WB}_${LOCALE}.ts +} + +update_locale() { + echo -e "\033[1;32m\n\t<<< Updating '${WB}_${LOCALE}.ts' file >>>\n\033[m" + get_strings + # Join strings from Qt Designer and Python files + lconvert -i uifiles.ts pyfiles.ts -o _${WB}.ts + # Join newly created file with older file (-no-obsolete) + # Update generic file + lconvert -i _${WB}.ts ${WB}.ts -o ${WB}.ts + # Update specified locale file + lconvert -source-language en -target-language $LOCALE \ + -i _${WB}.ts ${WB}_${LOCALE}.ts -o ${WB}_${LOCALE}.ts +} + +release_translation() { + # Release translation (creation of *.qm file from *.ts file) + lrelease ${WB}_${LOCALE}.ts +} + +# Main function ------------------------------------------------------------------------------------ + +WB="ksu" +LOCALE="$1" + +if is_locale_supported "$LOCALE"; then + if [ "$2" == "-r" ]; then + release_translation + else + if [ ! -f "${WB}_${LOCALE}.ts" ]; then + add_new_locale + else + update_locale + fi + delete_files + fi +else + echo "Verify your language code. Case sensitive." + echo "If it's correct ask a maintainer to add support for your language on FreeCAD." +fi From 67f5b61c8433c9f4696aaf407d46d13cc67dc9c2 Mon Sep 17 00:00:00 2001 From: hasecilu Date: Thu, 7 Mar 2024 18:44:49 -0600 Subject: [PATCH 3/5] Add Spanish translation Added es-ES translations Co-authored-by: EdgarJRobles --- translations/ksu_es-ES.qm | Bin 0 -> 61040 bytes translations/ksu_es-ES.ts | 2332 +++++++++++++++++++++++++++++++++++++ 2 files changed, 2332 insertions(+) create mode 100644 translations/ksu_es-ES.qm create mode 100644 translations/ksu_es-ES.ts diff --git a/translations/ksu_es-ES.qm b/translations/ksu_es-ES.qm new file mode 100644 index 0000000000000000000000000000000000000000..7e0619a313e2da263f5e1aee06d4d34718b858db GIT binary patch literal 61040 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 literal 0 HcmV?d00001 diff --git a/translations/ksu_es-ES.ts b/translations/ksu_es-ES.ts new file mode 100644 index 0000000..50f1314 --- /dev/null +++ b/translations/ksu_es-ES.ts @@ -0,0 +1,2332 @@ + + + + + CDialog + + + Dialog + Diálogo + + + + explode_dwg + + + Explode 3D PCB + kicad StepUp 3D tools + Explosionar PCB 3D + + + + 1.0 + 1.0 + + + + kSUGui::DlgSettingskStepUp + + + + + General + General + + + + + 3D Prefix working folder + Carpeta de trabajo de prefijo 3D + + + + + <html><head/><body><p>your <span style=" font-weight:600;">KISYS3DMOD</span> path</p><p>or 3D model <span style=" font-weight:600;">main prefix path</span></p></body></html> + <html><head/><body><p>tu <span style=" font-weight:600;">ruta</span> KISYS3DMOD</p><p>o prefijo de ruta principal <span style=" font-weight:600;">de modelos 3D</span></p></body></html> + + + + + main 3D folder location 'KISYS3DMOD' +or 'KICAD6_3DMODEL_DIR' + ubicación de la carpeta principal 3D 'KISYS3DMOD' + o 'KICAD6_3DMODEL_DIR' + + + + + <html><head/><body><p>main 3D folder location</p><p><span style=" font-weight:600;">'KISYS3DMOD'</span></p></body></html> + <html><head/><body><p>ubicación de la carpeta principal 3D</p><p><span style=" font-weight:600;">'KISYS3DMOD'</span></p></body></html> + + + + + + + + + <html><head/><body><p>your <span style=" font-weight:600;">ALIAS</span> 3D</p><p>model prefix path</p></body></html> + <html><head/><body><p>tu <span style=" font-weight:600;">ALIAS</span> 3D</p><p>ruta del prefijo del modelo</p></body></html> + + + + + secondary 3D folder loc +'ALT2 3DMOD' + carpeta secundaria 3D loc + 'ALT2 3DMOD' + + + + + + + + + <html><head/><body><p>secondary 3D folder location</p><p><span style=" font-weight:600;">'ALT3DMOD'</span></p></body></html> + <html><head/><body><p>ubicación de carpeta 3D secundaria</p><p><span style=" font-weight:600;">'ALT3DMOD'</span></p></body></html> + + + + + PCB settings + Ajustes de PCB + + + + PCBs color. + Color de PCB + + + + + + + + + PCB color + Color de PCB + + + + LightGreen + Verde claro + + + + + Green + Verde + + + + + Blue + Azul + + + + + Red + Rojo + + + + + Purple + Púrpura + + + + + DarkGreen + Verde oscuro + + + + + DarkBlue + Azul oscuro + + + + + LightBlue + Azul claro + + + + + Yellow + Amarillo + + + + + Black + Negro + + + + + White + Blanco + + + + + + + PCB Reference Placement in mechanical environment + Colocación de referencia de PCB en entorno mecánico + + + + + PCB Placement + Colocación de PCB + + + + + Grid Origin + Origen de cuadrícula + + + + + Aux Origin + Origen auxiliar + + + + + Pcb Center (approx) + Centro de PCB (aproximado) + + + + + + + Constraints to be added to PCB Sketch + Restricciones que se agregarán al croquis de PCB + + + + + PCB Sketch mode (constraints) + Modo de croquis de PCB (restricciones) + + + + + Coincident + Coincidente + + + + + V&H, Coincident + V y H, coincidente + + + + + Full + Completo + + + + + None + Ninguno + + + + + Enable/Disable Virtual 3D +(mechanical) models + Habilitar/deshabilitar modelos +(mecánicos) 3D virtuales + + + + + Virtual 3D Models loading + Cargando modelos virtuales 3D + + + + + + + minimum Drill size applied to PCB +'0.0' -> all drills are loaded +'-1' -> all drills and vias are loaded + Tamaño mínimo de perforación aplicado a PCB +'0.0' -> todos los taladros son cargados +'-1' -> todos los taladros y vías son cargados + + + + + minimum Drill size applied to PCB + Tamaño mínimo de perforación aplicado a PCB + + + + + 0.0 + 0.0 + + + + + <html><head/><body><p><span style=" font-weight:600;">Bounding Box LIST:</span><br/>configure which 3D models will be converted to Bounding Box<br/><span style=" font-weight:600;">Examples:</span><br/><span style=" font-weight:600;">ALL</span><span style=" font-style:italic;">-&gt; all models will be converted to bounding boxes</span><br/><span style=" font-weight:600;">LIST</span> DSUB-15-HD_FH, DSUB-9_FH <span style=" font-style:italic;">-&gt; these two models will NOT be converted to BBox</span><br/><span style=" font-style:italic;">(list of 3D model's names separated by a semicolon)</span></p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Lista de caja delimitadora:</span><br/>configurar qué modelos 3D se convertirán en caja delimitadora<br/><span style=" font-weight:600;">Ejemplos:</span><br/><span style=" font-weight:600;">TODO</span><span style=" font-style:italic;">-&gt; todos los modelos se convertirán en cajas delimitadoras</span><br/><span style=" font-weight:600;">LISTA</span> DSUB-15-HD_FH, DSUB-9_FH <span style=" font-style:italic;">-&gt; estos dos modelos NO se convertirán a caja delimitadora</span><br/><span style=" font-style:italic;">(lista de nombres de modelos 3D separados por punto y coma)</span></p></body></html> + + + + + Bounding Boxes + Cajas delimitadoras + + + + + <html><head/><body><p><span style=" font-weight:600;">Black List:</span><br/>put here your model names that you don't want to load (e.g. smallest ones)<br/>separated by a semicolon.<br/>DNP or DNF attribute.<br/>volume and height are also configurable.<br/>(volume=1 means all models with a volume &lt; 1mm3 will not be included)<br/>(height=1 means all models with a height &lt; 1mm will not be included)<br/><br/><span style=" font-weight:600;">Examples:</span><br/>DNP;R_0402_1005Metric;C_0402_1005Metric;<br/>height=1.0<br/>volume=1.0<br/><span style=" font-weight:600;">An empty list means all the models will be parsed.</span></p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Black List:</span><br/>put here your model names that you don't want to load (e.g. smallest ones)<br/>separated by a semicolon.<br/>DNP or DNF attribute.<br/>volume and height are also configurable.<br/>(volume=1 means all models with a volume &lt; 1mm3 will not be included)<br/>(height=1 means all models with a height &lt; 1mm will not be included)<br/><br/><span style=" font-weight:600;">Examples:</span><br/>DNP;R_0402_1005Metric;C_0402_1005Metric;<br/>height=1.0<br/>volume=1.0<br/><span style=" font-weight:600;">Una lista vacia significa que todos los modelos seran analizados.</span></p></body></html> + + + + + Black List + Lista negra + + + + + + + minimum Edge Tolerance applied to PCB +default '0.01mm' + Tolerancia de borde mínima aplicada a PCB + predeterminado '0.01 mm' + + + + + minimum edge tolerance + Tolerancia de borde mínima + + + + + 0.01 + 0.01 + + + + + <html><head/><body><p><span style=" font-weight:600;">White List:</span><br/>put here your model names that you must load (e.g. smallest ones)<br/>separated by a semicolon.<br/><br/><span style=" font-weight:600;">Examples:</span><br/> +LED_D5.0mm_IRBlack;USB_Mini-B_Lumberg_2486_01_Horizontal;<br/><span style=" font-weight:600;">An empty list means all the models will behave as usual.</span></p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Lista blanca:</span><br/>Coloca aqui los nombre de tus modelos que debes cargar (e.j. los mas pequeños)<br/>separados por un punto y coma.<br/><br/><span style=" font-weight:600;">Examples:</span><br/> +LED_D5.0mm_IRBlack;USB_Mini-B_Lumberg_2486_01_Horizontal;<br/><span style=" font-weight:600;">Una lista vacia significa que todos los modelos se comportaran de forma usual.</span></p></body></html> + + + + White List + Lista blanca + + + + + Import/Export settings + Ajustes para importar/exportar + + + + + <html><head/><body><p>Enable/Disable <span style=" font-weight:600;">fusion (union)</span> of all 3D models.</p><p>Be careful ... fusion can be heavy or generate FC crash with a lot of objects.</p><p>Please consider to use bbox or blacklist small objects</p></body></html> + <html><head/><body><p>Habilitar/Deshabilitar <span style=" font-weight:600;">fusion (union)</span> de todos los modelos 3D.</p><p>Tener cuidado ... la fusion puede ser pesada o generar colapso de FreCAD con muchos objetos.</p><p>Por favor considere el uso de bbox o lista negra para objetos pequeños </p></body></html> + + + + + Make a Union of 3D models + Crear una unión de modelos 3D + + + + + <html><head/><body><p>Directly <span style=" font-weight:600;">Export STEP</span> after Loading</p></body></html> + <html><head/><body><p>Directly <span style=" font-weight:600;">Exportar a STEP</span> despues de cargar</p></body></html> + + + + + Directly Export STEP after Loading + Exportar STEP directamente después de cargar + + + + STEP export mode. + Modo de exportación STEP. + + + + + + + + + STEP export mode + Modo de exportación STEP + + + + + + + Hierarchy + Jerarquía + + + + + Flat + Plano + + + + + One Container + Un contenedor + + + + 3D Loading mode. + Modo de carga 3D. + + + + + + + 3D Loading mode + Modo de carga 3D + + + + + 3D_loading_mode +Allowing or not Loading Multi Parts objects + Modo de carga 3D +Permitir o no cargar objetos Multi Partes + + + + + Simplified + Simplificado + + + + + NotMultiParts + No Multi Partes + + + + + Standard + Estándar + + + + Assembly3 Links allowed. + Enlaces de Assembly3 permitidos. + + + + + + + Assembly3 Links allowed + Enlaces de Assembly3 permitidos + + + + Enables Materials for VRML exporting. + Habilita la exportación de materiales para VRML. + + + + + + + Enable Materials for VRML exporting + Habilita la exportación de materiales para VRML + + + + Start Turntable after loading. + Iniciar Turntable después de cargar. + + + + + + + Start Turntable after loading + Iniciar Turntable después de cargar + + + + Assembly3 LinkGroups allowed. + Enlaces de grupo de Assembly3 permitidos. + + + + + + + Assembly3 LinkGroups allowed + Enlaces de grupo de Assembly3 permitidos + + + + Enables compressed STEP file ('.stpZ') generation exporting. + Habilita la exportación de generación de archivos STEP comprimidos ('.stpZ'). + + + + + + Enable compressed STEP file ('.stpZ') generation exporting + Habilita la exportación de generación de archivos STEP comprimidos ('.stpZ') + + + + Enables compressed VRML file ('.wrz') generation exporting. + Habilita la exportación de generación de archivos VRML comprimidos ('.wrz'). + + + + + + Enable compressed VRML file ('.wrz') generation exporting + Habilita la exportación de generación de archivos VRML comprimidos ('.wrz') + + + + Displays STEP import settings warning. + Muestra la advertencia de configuración de importación STEP. + + + + + + + Display STEP import settings warning + Muestra la advertencia de configuración de importación STEP + + + + + <html><head/><body><p>Apply Transparency for 'Glass' Materials:</p><p>Force Transparency to STEP model if 'Glass' is found in '.wrl' model</p></body></html> + <html><head/><body><p>Aplicar transparencia para Materiales de 'Cristal:'</p><p>Forza transparencia a modelo STEP si 'Cristal' es encontrado en el modelo'.wrl'</p></body></html> + + + + + Apply Transparency for 'Glass' Materials + Aplicar transparencia para materiales 'de cristal' + + + + + <html><head/><body><p>Apply Transparency for 'Led' Materials:</p><p>Force Transparency to STEP model if 'Led' is found in '.wrl' model</p></body></html> + <html><head/><body><p>Aplicar transparencia para Materiales de 'LED:'</p><p>Forza transparencia a modelo STEP si 'LED' es encontrado en el modelo'.wrl'</p></body></html> + + + + + Apply Transparency for 'Led' Materials + Aplicar transparencia para materiales 'LED' + + + + <html><head/><body><p>Skip importing pcb zone(s)</p></body></html> + <html><head/><body><p>Omitir importar zona(s) de PCB</p></body></html> + + + + skpZone + Saltar zona + + + + <html><head/><body><p>Skip importing pcb tracks and vias</p></body></html> + <html><head/><body><p>Saltar la importación de pistas y vías de PCB</p></body></html> + + + + skpTracks + Saltar pistas + + + + <html><head/><body><p>Skip importing pcb pads</p></body></html> + <html><head/><body><p>Saltar la importación de pads de PCB</p></body></html> + + + + skpPads + Saltar pads + + + + + third 3D folder loc +'ALT3 3DMOD' + ubicación de tercera carpeta de 3D'ALT3 3DMOD' + + + + + fourth 3D folder loc +'ALT4 3DMOD' + ubicación de cuarta carpeta de 3D'ALT4 3DMOD' + + + + <html><head/><body><p>Select to NOT use the native dialog box in Open/Save files<br/>(suggested for Snap or FlatPack)</p></body></html> + <html><head/><body><p>Seleccionar para NO utilizar la caja de dialogo en Abrir/Guardar archivos<br/>(Sugerido para Snap o FlatPack)</p></body></html> + + + + don't use native dialog in Open/Save files (for Snap or FlatPack) + No usar el diálogo nativo en Abrir/Guardar archivos (para Snap o FlatPack) + + + + + Mechanical Check + Comprobación mecánica + + + + Generates Sketches for differences on PCB Edge. + Genera croquis para diferencias en el borde de la PCB. + + + + + + + Generate Sketches for differences on PCB Edge + Generar croquis para diferencias en el borde de la PCB. + + + + Working directory ccx tools + Directorio de trabajo herramientas ccx + + + + + Use custom directory + Usar directorio personalizado + + + + Working directory general FEM solver frame work + Directorio de trabajo general para el framework del solucionador FEM + + + + Temporary directories + Directorios temporales + + + + Let FreeCAD manage (create, delete) the working directories for all solver. Use temporary directories. + Permitir que FreeCAD administre (crear, eliminar) el directorio funcionando para todos los solucionadores. Usar directorios temporales. + + + + Beside .fcstd file + Junto al archivo .FCStd + + + + Create a directory in the same folder in which the fcstd file of the document is located. Use Subfolder for each solver (e.g. for a file ./mydoc.fcstd and a solver with the label Elmer002 use ./mydoc/Elmer002). + Crear un directorio en la misma carpeta en la que se encuentra el archivo FCStd del documento. Utilice la subcarpeta para cada solucionador (por ejemplo, para un archivo ./mydoc.FCStd y un solucionador con la etiqueta Elmer002 use ./mydoc/Elmer002). + + + + Use directory set below. Create own subdirectory for every solver. Name directory after the solver label prefixed with the document name. + Utilice el directorio establecido a continuación. Cree su propio subdirectorio para cada solver. Directorio de nombres después de la etiqueta del solucionador con el nombre del documento. + + + + Path: + Ruta: + + + + Mesh + Malla + + + + Create mesh groups for analysis reference shapes + Crea un grupo de mallas para formas de analisis de referencia + + + + + choice#1 + opción #1 + + + + choice#2 + opción #2 + + + + choice#3 + opción #3 + + + + Results + Resultados + + + + Keep results on calculation re-run + Mantener resultados al re-ejecutar el cálculo + + + + Restore result dialog settings + Restaurar la configuración del diálogo de resultados + + + + Hide constraints when open result dialog + Ocultar restricciones al abrir el diálogo de resultados + + + + + <html><head/><body><p><span style=" font-weight:600;">Bounding Box LIST:</span></p><p>configure which 3D models will be converted to Bounding Box</p><p><span style=" font-weight:600;">Examples:</span></p><p><span style=" font-weight:600;">ALL</span><span style=" font-style:italic;">-&gt; all models will be converted to bounding boxes</span></p><p><span style=" font-weight:600;">LIST</span> DSUB-15-HD_FH, DSUB-9_FH <span style=" font-style:italic;">-&gt; these two models will NOT be converted to BBox</span></p><p><span style=" font-style:italic;">(list of 3D model's names separated by a semicolon)</span></p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Lista de cajas delimitadoras:</span></p><p>configure which 3D models will be converted to Bounding Box</p><p><span style=" font-weight:600;">Examples:</span></p><p><span style=" font-weight:600;">ALL</span><span style=" font-style:italic;">-&gt; Todos los modelos seran convertidos a cajas delimitadoras</span></p><p><span style=" font-weight:600;">LIST</span> DSUB-15-HD_FH, DSUB-9_FH <span style=" font-style:italic;">-&gt; estos dos modelos no seran convertidos a BBox</span></p><p><span style=" font-style:italic;">(lista de modelo's 3D nombres separatos por un punto y coma)</span></p></body></html> + + + + + <html><head/><body><p><span style=" font-weight:600;">Black List:</span></p><p>put here your model names that you don't want to load (e.g. smallest ones)</p><p>separated by a semicolon.</p><p>volume and height are also configurable.</p><p>(volume=1 means all models with a volume &lt; 1mm3 will not be included)</p><p>(height=1 means all models with a height &lt; 1mm will not be included)</p><p><br/><span style=" font-weight:600;">Examples:</span></p><p>r_0603;r_0402;c_0402;c_0603</p><p>height=1.0</p><p>volume=1.0</p><p><span style=" font-weight:600;">An empty list means all the models will be parsed.</span></p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Lista negra:</span></p><p>coloca aqui los nombres de los modelos que no quieres cargar(e.j. los mas pequeños)</p><p>separados por punto y coma.</p><p>volumen y altura son tambien configurables.</p><p>(volume=1 significa que todos los modelos con un volumen &lt; 1mm3 no seran incluidos)</p><p>(height=1 means all models with a height &lt; 1mm will not be included)</p><p><br/><span style=" font-weight:600;">Examples:</span></p><p>r_0603;r_0402;c_0402;c_0603</p><p>height=1.0</p><p>volume=1.0</p><p><span style=" font-weight:600;">una lista vacia significa que todos los modelos seran analizados.</span></p></body></html> + + + + Arcs2Circles + + + Convert Arcs to Circles in Sketch + Convertir arcos a círculos en croquis + + + + Close + + + <b>Do you want to quit?</b> <i>Have you saved your STEP artwork?</i><br> + + + + + Close + + + + + Create_BoundBox + + + Create BoundBox of the Selected Object + Crea una caja delimitadora del objeto seleccionado + + + + Help + + + <b>Kicad StepUp</b> is a tool set to easily <b>collaborate between kicad pcb EDA</b> (board and 3D parts) as STEP models <b>and FreeCAD MCAD</b> modeler.<br> +</font> + + + + + <b>StepUp</b> can also be used <b>to align 3D model to kicad footprint</b>.<br> +The artwork can be used for MCAD interchange and collaboration, and for enclosure design.<br> +The 3D visualization of components on board assemblies in kicad 3dviewer, will be the same in your mechanical software, +because of the STEP interchange format.<br> +It is also possible to <b>Update a pcb Edge from a FC Sketcher.</b><br> +<b>configuration options:</b><br>Configuration options are located in the preferences system of FreeCAD, which is located in the Edit menu -&gt; Preferences.<br> + + + + + + starter Guide:<br><a href='{}{}demo{}{}' target='_blank'>{}</a><br> + + + + + <b>Note:</b> each button has its own <b>Tooltip</b><br> +useful buttons:<br><b>Load kicad Board directly</b> -> will load kicad board and parts in FreeCAD coming from kicad '.kicad_pcb' file<br> +<b>Load kicad Footprint module</b> -> will load directly kicad footprint in FreeCAD to easily align the 3D model to footprint<br> +<b>Export to kicad STEP & scaled VRML</b> -> will convert MCAD model to STEP and VRML to be used by Kicad and kicad StepUp<br> +<b> -> VRML can be multipart;<br> -> STEP must be single part</b><br>(<i>'Part Boolean Union'</i> or <i>'Part Makecompound'</i>)<br> +<i>assign material to selected colors and your VRML 3D models will have nice shiny effects</i><br> +<b>Push pcb Sketch to kicad_pcb Edge</b> -> will push pcb Sketch to kicad_pcb Edge in your design; it can be done with an empty or with an existing pcb Edge<br> +<br>for a more detailed help have a look at <br><b>kicadStepUp-starter-Guide.pdf</b><br> +or just follow the <b>YouTube video tutorials</b> <br><a href='https://youtu.be/h6wMU3lE_sA' target='_blank'>kicadStepUp basics</a><br> +<a href='https://youtu.be/O6vr8QFnYGw' target='_blank'>kicadStepUp STEP alignment to Kicad footprint</a><br> +<a href='https://github.com/easyw/kicadStepUpMod' target='_blank'>check always the latest release of kicadStepUp</a><br><br> +Designing in kicad native 3d-viewer will produce a fully aligned STEP MCAD version +with the same view of kicad 3d render.<br> +Moreover, KiCad StepUp tool set <b>will let you to load the kicad footprint inside FreeCAD and align the 3D part with a visual real time feedback +of the 3d model and footprint reciprocal position.</b><br> +With this tool is possible to download a part from on-line libraries, align the model to kicad footprint +and export the model to wrl, for immediate 3d-viewer alignment in pcbnew.<br> +Now the two words are connected for a better collaboration; just <b>design in kicad EDA</b> and transfer +the artwork to <b>MCAD (FreeCAD)</b> smoothly.<br> +<b>The workflow is very simple</b> and maintains the usual way to work with kicad:<br> +Add models to your library creating 3D models in FreeCAD, or getting models from online libs +or from the parametric 3D lib expressly done to kicad <a href='https://github.com/easyw/kicad-3d-models-in-freecad' target='_blank'>kicadStepUp 3D STEP models generator</a><br> +Once you have your 3D MCAD model, <b>you need to have a copy of that in STEP and VRML format.</b> <br> +(with the latest kicad release you can only have STEP model, VRML is not needed anymore, but <b>it is possible + to mix VRML, STEP and IGES format</b>)<br> +Just exporting the model with FreeCAD and put your model in the same folder in which +normally you are used to put vrml models; the script will assembly the MCAD board and models as in 3d-viewer of kicad. +<br><b>NB<br>STEP model has to be fused in single object</b><br>(Part Boolean Union of objects) +<br><b>or a Compoud</b> (Part Makecompound of objects)</b> +<hr><b>enable 'Report view' Panel to see helping messages</b> +</font> +<br> + + + + + KiCadStepUpWB + + + KiCadStepUp + KiCadStepUp + + + + KiCadStepUp workbench + Entorno de trabajo KiCadStepUp + + + + Menu + + + ksu PushPull + KSU PushPull + + + + + ksu Tools + KSU Herramientas + + + + Demo + Demostración + + + + PushPCB + + + <b>Edge editing NOT supported on FC0.15!</b><br>please upgrade your FC release + + + + + Edge editing NOT supported on FC0.15! + + + + + getting camera view + + + + + forcing rotAngle to 0 + + + + + evaluate to recompute + + + + + Saving to an empty KiCad pcb file + + + + + Cancel + + + + + Restoring cam view + + + + + + Select one Sketch to be pushed to kicad board! + + + + + Restore_Transparency + + + Restore Transparency to Active Document Objects + Restaurar transparencia de objetos del documento activo + + + + Save + + + please <b>save</b> your job file before exporting. + + + + + Please <b>save</b> your job file before exporting. + + + + + + Info ... + + + + + + Save + + + + + Say + + + routine Scale to VRML 1/2.54 + + + + + Put on Axe XYZ ! + + + + + Select <b>ONE single part</b> object !<br> +suggestion for multi-part:<br> +&nbsp;&nbsp;<b>Part Boolean Union (recommended)</b><br> +or<br> +&nbsp;&nbsp;<i>Part Make compound (alternative choice)</i> + + + + + Select <b>a Compound</b> or <br> +<b>a Part Design group</b><br> +or <b>more than one Part</b> object !<br> + + + + + + Error in selection + + + + + Warning ... + + + + + ERROR! ... + + + + + Info ... + + + + + + + + + + + Select ONE single part object ! + + + + + Select an object ! + + + + + Toolbar + + + ksu Tools + KSU Herramientas + + + + ksu Sketching + KSU Croquis + + + + ksu PushPull + KSU PushPull + + + + + ksu Design Tools + KSU Herramientas de diseño + + + + ksu Show + KSU Mostrar + + + + ksu Helpers + KSU Ayudantes + + + + Ui_CDialog + + + Select a Sketch and Parameters +to constraint the sketch +NB the Sketch will be modified! + Seleccione un croquis y parámetros +para restringir el croquis +Nota: ¡el croquis será modificado! + + + + <b>Select a Sketch and Parameters to<br>constrain the sketch.<br>NB the Sketch will be modified!</b> + <b>Seleccione un croquis y parámetros para restringir el croquis.<br>Nota: ¡el croquis será modificado! </b> + + + + Constraints + Restricciones + + + + Lock Coincident, Horizontal +and Vertical + Bloquear coincidencia, horizontal +y vertical + + + + Lock Coincident + Bloquear coincidencia + + + + Tolerance + Tolerancia + + + + tolerance in mm + tolerancia en mm + + + + Tolerance on Constraints + Tolerancia en restricciones + + + + remove duplicated geometries + eliminar geometrías duplicadas + + + + Ui_Dialog + + + Material Properties + Propiedades de material + + + + Materials + Materiales + + + + Original + Original + + + + Shape Color + Color de forma + + + + Diffuse Color + Color difuso + + + + New + Nuevo + + + + NB: set Material will unmatch colors between wrl and STEP + Nota: el material establecido no coincidirá con los colores entre wrl y STEP + + + + Ui_DockWidget + + + ksu config ini file +location + KSU ubicación del archivo +de configuración ini + + + + + KiCad StepUp tools + Herramientas de KiCad StepUp + + + + dock left + Incrustar en la izquierda + + + + un-dock (floating) + Desincrustar (flotante) + + + + minimize + Minimizar + + + + dock right + Incrustar en la derecha + + + + close + Cerrar + + + + + + translate (+/- mm) + Trasladar (+/- mm) + + + + translate X (+/- mm) + Trasladar X (+/- mm) + + + + translate Y (+/- mm) + Trasladar Y (+/- mm) + + + + translate Z (+/- mm) + Trasladar Z (+/- mm) + + + + put on X + Poner en X + + + + put on Y + Poner en Y + + + + put on Z + Poner en Z + + + + + + rotation angle (+/- deg) + Ángulo de rotación (+/- °) + + + + rotate X (+/- deg) + Rotar X (+/- °) + + + + rotate Y (+/- deg) + Rotar Y (+/- °) + + + + rotate Z (+/- deg) + Rotar Z (+/- °) + + + + center X + Centrar X + + + + center Y + Centrar Y + + + + center Z + Centrar Z + + + + make Compound of Parts + Crear compuesto de partes + + + + Load KiCad +Board .kicad_pcb + Cargar placa de +KiCad .kicad_pcb + + + + export to KiCad: +STEP & scaled VRML 1/2.54 + Exportar a KiCad: +STEP y VRML escalado 1/2.54 + + + + enable loading +virtual & mechanical +models + Habilitar carga +virtual y modelos +mecánicos + + + + use wrl +material + Utilizar +material wrl + + + + load KiCad footprint +'kicad_mod' + Cargar huella de KiCad +'kicad_mod' + + + + export STEP Board +and Parts after loading + Exportar placa STEP +y partes despúes de la carga + + + + make Union of Parts + Hacer unión de partes + + + + import STEP +3D model + Importar STEP +modelo 3D + + + + export selected objects to STEP + Exportar objetos seleccionados a STEP + + + + create reference Axis + Crear eje de referencia + + + + Help & starting Guide + Ayuda y guía de comienzo + + + + view Config File content + Ver contenido de archivo de configuración + + + + push PCB Edge to KiCad +from Sketcher to pcbnew + Enviar el borde de la PCB a KiCad +desde Sketcher a PCBNew + + + + collisions result status + estado del resultado de colisiones + + + + NO collisions found + NO se encontraron colisiones + + + + + check Collisions +tolerance 1e-06 + Comprobar colisiones +tolerancia 1e-06 + + + + + collisions FOUND! + ¡colisiones ENCONTRADAS! + + + + ksu config ini file +content + KSU contenido de archivo +de configuración ini + + + + + Help Start Guide + Guía de inicio de ayuda + + + + Ui_LayerSelection + + + open in new FreeCAD document + Abrir en un nuevo documento de FreeCAD + + + + open in new document + Abrir en nuevo documento + + + + <html><head/><body><p>replace PCB in current document</p><p><span style=" font-weight:600; color:#aa0000;">N.B.</span> Sketch constrains will be deleted!</p></body></html> + <html><head/><body><p>reemplazar PCB en el documento actual</p><p><span style=" font-weight:600; color:#aa0000;">Nota:</span> ¡Se eliminarán las restricciones del croquis!</p></body></html> + + + + replace PCB and Sketch in current document + reemplazar PCB y croquis en el documento actual + + + + <html><head/><body><p>keep Sketch in current document</p><p><span style=" font-weight:600; color:#aa0000;">N.B.</span> this option will keep Sketch &amp; constrains but replace the PCB</p><p>This could lead to a unsynced Sketch feature</p></body></html> + <html><head/><body><p>keep Sketch in current document</p><p><span style=" font-weight:600; color:#aa0000;">N.B.</span> this option will keep Sketch & constrains but replace the PCB</p><p>This could lead to a unsynced Sketch feature</p></body></html> + + + + replace PCB and keep Sketch in curr. doc + reemplazar PCB y croquis en el documento actual + + + + Ui_LayerSelectionOut + + + Line Width: + Grosor de línea: + + + + Line width for drawings + Ancho de línea para dibujos + + + + Ui_Offset_value + + + Offset value + Valor de desplazamiento + + + + Offset [+/- mm]: + Desplazamiento [+/- mm]: + + + + Offset value [+/- mm] + Valor de desplazamiento [+/- mm] + + + + Arc or Intersection Offset method + Método de desplazamiento de arco o intersección + + + + Arc + Arco + + + + Offset Y [mm]: + Desplazamiento Y [mm]: + + + + Offset Y value [+/- mm] + Valor de desplazamiento Y [+/- mm] + + + + approximateCenter + + + Create Center of Circle through 3 Vertices or Select two vertices to create a mid point or Select a Shape to create a center point + Crear centro de círculo a través de 3 vértices o seleccionar 2 vértices para crear un punto medio o seleccionar una forma para crear un punto central + + + + Create Center of Circle through 3 Vertices + Crear centro de círculo a través de 3 vértices + + + + checkSolidExpSTEP + + + Check if the selected part would be +exported to STEP as a single solid + Comprobar si la parte seleccionada será +exportada a STEP como un único sólido + + + + ksu + + + PolyLine Contour generated + +<b>For PolyLine Pads, please add 'circles' inside each closed polyline</b><br> + Contorno polilínea generado + +<b>Para los pads polilínea, agregue 'círculos' dentro de cada polilínea cerrada</b><br> + + + + Select a Sketch and Parameters to<br>move the sketch.<br>Offset X: + Seleccionar un croquis y parámetros para <br>mover el croquis.<br>Desplazamiento X: + + + + ksuAsm2Part + + + Convert an Assembly (A3) to Part hierarchy + Convertir un ensamblaje (de A3) a jerarquía de parte + + + + ksu Convert an Assembly (A3) to Part hierarchy + KSU Convertir un ensamblaje (de A3) a jerarquía de parte + + + + ksuImpDXF + + + Import Legacy DXF + Importar DXF heredado + + + + ksuOpDXF + + + open Legacy DXF + Abrir DXF heredado + + + + ksuOpEzDXF + + + open ezDXF + Abrir ezDXF + + + + ksuRemoveSuffix + + + Remove 'custom' Suffix from Labels + Eliminar sufijo 'custom' de las etiquetas + + + + ksuRemoveTimeStamp + + + Remove TimeStamp from Labels + Eliminar marcas de tiempo de las etiquetas + + + + ksuTools + + + ksu Tools + KSU Herramientas + + + + Activate the main +KiCad StepUp Tools Dialog + Activar el diálogo de herramientas +principal de KiCad StepUp + + + + ksuTools2D2Sketch + + + 2D to Sketch + 2D a croquis + + + + ksu 2D object (or DXF) to Sketch + KSU Objeto 2D (o DXF) a croquis + + + + ksuTools2DtoFace + + + 2D to Face + 2D a cara + + + + ksu 2D object (or DXF) to Surface for extruding + KSU Objeto 2D (o DXF) a superficie para extruir + + + + ksuTools3D2D + + + 3D to 2D + 3D a 2D + + + + ksu 3D object to 2D projection + KSU Objeto 3D a proyección 2D + + + + ksuToolsAddSilks + + + ksu tools Add Silks from KiCad exported DXF +NB: it could be a very intensive loading! + Herramientas KSU Agregar serigrafías DXF exportadas desde KiCad +Nota: ¡podría ser una carga muy intensiva! + + + + ksuToolsAddToTree + + + Add to Tree + Agregar a árbol + + + + ksu Add Object(s) to Container Tree +keeping Placement +First Selection is the Container + KSU Agregar objetos al árbol contenedor +manteniendo la ubicación +La primer selección es el contenedor + + + + ksuToolsAddTracks + + + ksu tools Add Tracks +NB: it could be a very intensive loading! + Herramientas KSU Agregar pistas +Nota: ¡podría ser una carga muy intensiva! + + + + ksuToolsAlignView + + + AlignView to Face + Alinear vista a cara + + + + ksu AlignView to Face + KSU Alinear vista a cara + + + + ksuToolsAligner + + + Manipulator tools 'Aligner' + Herramientas manipuladoras 'Alineador' + + + + ksuToolsBsplineNormalize + + + Geo to Bspline + Geometría a B-spline + + + + ksu Convert Geometry to Bspline for KiCAD format + KSU Convertir geometría a B-spline para formato KiCad + + + + ksuToolsCaliper + + + Manipulator tools 'Caliper' + Herramientas manipuladoras 'Vernier' + + + + ksuToolsCheckSolid + + + Check Solid property + Verificar propiedad sólida + + + + ksu Check Solid property +Toggle suffix + KSU Comprobar propiedad sólida +Alternar sufijo + + + + ksuToolsCollisions + + + Check Collisions + Comprobar colisiones + + + + ksu Check Collisions and Interferences + KSU Comprobar colisiones e interferencias + + + + ksuToolsColoredBinder + + + Colored Binder + Conector coloreado + + + + Colored Binder object + Objeto conector coloreado + + + + ksuToolsColoredClone + + + Colored Clone + Clon coloreado + + + + Colored Clone object + Clon conector coloreado + + + + ksuToolsComparePositions + + + tools Compare 3D models Positions + Herramientas KSU Comparar posiciones de modelos 3D + + + + ksu Compare 3D models Positions +Data with the Active Document +[MCAD Synchronize] + KSU Comparar datos de posiciones de +modelos 3D con el documento activo +[Sincronizar MCAD] + + + + ksuToolsConstrainator + + + Constrain a Sketch + Restringir + + + + ksu Fix & auto Constrain a Sketch + KSU Reparar y restringir automáticamente un croquis + + + + ksuToolsContour2Poly + + + ksu tools 'RF PolyLined Sketch' +Selection's Shapes to PolyLine Sketch + Herramientas KSU 'Croquis de polilínea de RF' +Formas de selección a croquis de polilínea + + + + ksuToolsCopyPlacement + + + Copy Placement 1st to 2nd + Copiar ubicación del 1.º al 2.º + + + + ksu tools Copy Placement 1st to 2nd + Herramientas KSU Copiar ubicación del 1.º al 2.º + + + + ksuToolsDeepCopy + + + PartDN Copy + Copia de parte DN + + + + ksu PartDN Copy object +with relative placement +[flattened model] + KSU Objeto de copia PartDN +con colocación relativa +[modelo aplanado] + + + + ksuToolsDefeaturingTools + + + Defeaturing Tools from Defeaturing WorkBench + Herramientas de eliminación de características del entorno de trabajo Defeaturing + + + + ksuToolsDiscretize + + + Discretize + Discretizar + + + + ksu Discretize a shape/outline to a Sketch + KSU Discretizar una forma/contorno a un croquis + + + + ksuToolsEdges2Sketch + + + Edges to Sketch + Bordes a croquis + + + + ksu Select coplanar edge(s) or Face(s) or +a single Vertex of a coplanar outline +to get a corresponding Sketch + KSU Seleccionar arista(s) coplanar(es) o cara(s) o +un único vértice de un contorno coplanar +para obtener el croquis correspondiente + + + + ksuToolsEditPrefs + + + Edit Preferences + Editar preferencias + + + + ksuToolsExplode + + + ksu Tools PCB Explode +Select the top container of a KiCad PCB to exlode it + Heramientas KSU Explosionar PCB +Seleccione el contenedor superior de una PCB de KiCad para explosionarla + + + + ksuToolsExport3DStep + + + Export 3D to STEP + Exportar 3D a STEP + + + + ksu Export selected objects to STEP Model + KSU Exportar objetos seleccionados a modelo STEP + + + + ksuToolsExportModel + + + Export 3D Model + Exportar modelo 3D + + + + ksu Export 3D Model to KiCad + KSU Exportar modelo 3D a KiCad + + + + ksuToolsExtrude + + + ksu tools 'Extrude' +Extrude selection + Herramientas KSU 'Extruir' +Extruir la selección + + + + ksuToolsFootprintGen + + + Footprint generator + Generador de huellas + + + + ksu Footprint editor and exporter + KSU Editor y exportador de huellas + + + + ksuToolsGeneratePositions + + + tools Generate 3D models Positions + Herramientas KSU Generar posiciones de modelos 3D + + + + ksu Generate 3D models Positions +Data for Active Document +[MCAD Synchronize] + KSU Generar datos de posiciones de +modelos 3D para el documento activo +[Sincronizar MCAD] + + + + ksuToolsHighlightToggle + + + Highlight Toggle + Alternar resaltado + + + + ksu Selection Highlight Toggle + KSU Alternar resaltado de selección + + + + ksuToolsImport3DStep + + + Import 3D STEP + Importar STEP 3D + + + + ksu Import 3D STEP Model + KSU Importar modelo 3D STEP + + + + ksuToolsImportFootprint + + + Load FootPrint + Cargar huella + + + + ksu Load KiCad PCB FootPrint + KSU Cargar huella de PCB de KiCad + + + + ksuToolsLoadFootprint + + + Load FootPrint + Cargar huella + + + + ksu Load KiCad PCB FootPrint + KSU Cargar huella de PCB de KiCad + + + + ksuToolsLoopSelection + + + ksu tools 'LoopSelection' +Loop selection on a xy outline + Herramientas KSU 'Selección de bucle' +Selección de bucle en un contorno XY + + + + ksuToolsMakeCompound + + + Make Compound + Crear cuerpo compuesto + + + + ksu Make a Compound of selected objects + KSU Crear una composición de objetos seleccionados + + + + ksuToolsMakeUnion + + + Make Union + Crear unión + + + + ksu Make a Union of selected objects + KSU Crear una unión de objetos seleccionados. + + + + ksuToolsMergeSketches + + + Merge Sketches + Combinar croquis + + + + ksuToolsMoveSketch + + + Move Sketch + Mover croquis + + + + ksu Move 2D Sketch + KSU Mover croquis 2D + + + + ksuToolsMover + + + Manipulator tools 'Mover' + Herramientas manipuladoras 'Movedor' + +the mover moves things + + + + ksuToolsOffset2D + + + Offset 2D + Desplazamiento 2D + + + + ksu Offset 2D object + KSU Desplazamiento de objeto 2D + + + + ksuToolsOpenBoard + + + Load Board + Cargar placa + + + + ksu Load KiCad PCB Board and Parts + KSU Cargar placa PCB y partes de KiCad + + + + ksuToolsPullMoved + + + Pull 3D model(s) placement from PCB + Recibir la ubicación de los modelos 3D de la PCB + + + + ksu Pull 3D model(s) placement from PCB + KSU Recibir la ubicación de los modelos 3D de la PCB + + + + ksuToolsPullPCB + + + Pull Sketch from PCB + Recibir croquis desde PCB + + + + ksu Pull Sketch from PCB Edge + KSU Recibir croquis desde borde de PCB + + + + ksuToolsPushMoved + + + Push 3D moved model(s) to PCB + Enviar los modelos movidos en 3D a la PCB + + + + ksu Push 3D moved model(s) to PCB + KSU Enviar los modelos movidos en 3D a la PCB + + + + ksuToolsPushPCB + + + Push Sketch to PCB + Enviar croquis a PCB + + + + ksu Push Sketch to PCB Edge + KSU Enviar croquis a borde de PCB + + + + ksuToolsReLinkBinder + + + Relink Binder + Revincular vínculo + + + + Relink Binder object Select Binder and an Object to be linked + Revincular el objeto vínculo Seleccione vínculo y un objeto a vincular + + + + ksuToolsRemoveFromTree + + + Remove from Tree + Eliminar del árbol + + + + ksu Remove Object(s) from Container Tree +keeping Placement +First Selection is the Container + KSU Eliminar objeto(s) del árbol contenedor +manteniendo la colocación +La primera selección es el contenedor + + + + ksuToolsRemoveSubTree + + + Remove Sub Tree + Eliminar sub árbol + + + + ksuToolsResetPartPlacement + + + Reset Part Placement + Restablecer ubicación de parte + + + + ksu Reset Placement for all Part containers in selection + KSU Restablecer ubicación para todos los contenedores de piezas en la selección + + + + ksuToolsResetPlacement + + + Reset Placement + Restablecer ubicación + + + + ksu Reset Placement for a Shape + KSU Restablecer ubicación para una forma + + + + ksuToolsSimpleCopy + + + Simple Copy + Copia simple + + + + ksu Simple Copy object + KSU Objeto de copia simple + + + + ksuToolsSimplifySketck + + + Simplify Sketch + Simplificar croquis + + + + ksu Simplifying Sketch to Arcs and Lines + KSU Simplificar croquis a arcos y líneas + + + + ksuToolsSkValidate + + + ksu tools 'Sketcher Validate' +Validate selected Sketch + Herramientas KSU 'Validación de Sketcher' +Validar croquis seleccionado + + + + ksuToolsStepImportModeComp + + + disable Simplified STEP Import Mode + Deshabilitar el modo de importación STEP simplificado + + + + ksu tools disable Simplified STEP Import Mode + Herramientas KSU Deshabilitar el modo de importación STEP simplificado + + + + ksuToolsStepImportModeSTD + + + disable Full STEP Import Mode + Deshabilitar el modo de importación STEP completo + + + + ksu tools disable Full STEP Import Mode + Herramientas KSU Deshabilitar el modo de importación STEP completo + + + + ksuToolsSync3DModels + + + Sync 3D model(s) Ref & TimeStamps with PCB + Sincronizar modelos 3D Ref y TimeStamps con PCB + + + + ksu Sync 3D model(s) Ref & TimeStamps +of the Selected 3D model with KiCad PCB + KSU Sincronizar referencias y marcas de tiempo del +modelo(s) 3D seleccionado con KiCad PCB + + + + ksuToolsToggleTreeView + + + Expand/Collapse Tree View + Expandir/Colapsar vista de árbol + + + + ksu tools Expand/Collapse Tree View + Herramientas KSU Expandir/Colapsar vista de árbol + + + + ksuToolsTransparencyToggle + + + Transparency Toggle + Alternar transparencia + + + + ksu Selection Transparency Toggle + KSU Alternar transparencia de selección + + + + ksuToolsTurnTable + + + TurnTable + Mesa giratoria + + + + ksu TurnTable + KSU Mesa giratoria + + + + ksuToolsUnion + + + Fuse objects + Fusionar objetos + + + + Make Union (Fuse) objects + Hacer unión (fusionar) objetos + + + + ksuToolsVisibilityToggle + + + Visibility Toggle + Alternar visibilidad + + + + ksu Selection Visibility Toggle + KSU Alternar visibilidad de selección + + + From e3137e417e257149a4e29024e3eab64757c6854b Mon Sep 17 00:00:00 2001 From: hasecilu Date: Sat, 9 Mar 2024 11:37:30 -0600 Subject: [PATCH 4/5] Add Polish translation Co-authored-by: kaktus Jacek <39754351+kaktusus@users.noreply.github.com> --- translations/ksu_pl.qm | Bin 0 -> 60946 bytes translations/ksu_pl.ts | 2335 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 2335 insertions(+) create mode 100644 translations/ksu_pl.qm create mode 100644 translations/ksu_pl.ts diff --git a/translations/ksu_pl.qm b/translations/ksu_pl.qm new file mode 100644 index 0000000000000000000000000000000000000000..b1072a517ae68991a6ba8d5bbca73063b20ae7a9 GIT binary patch literal 60946 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 Q6Nz6hp40ft^~v-951wL7c>n+a literal 0 HcmV?d00001 diff --git a/translations/ksu_pl.ts b/translations/ksu_pl.ts new file mode 100644 index 0000000..16edad6 --- /dev/null +++ b/translations/ksu_pl.ts @@ -0,0 +1,2335 @@ + + + + + CDialog + + + Dialog + Okno dialogowe + + + + explode_dwg + + + Explode 3D PCB + kicad StepUp 3D tools + Rozłóż trójwymiarową płytę PCB. + + + + 1.0 + 1,0 + + + + kSUGui::DlgSettingskStepUp + + + + + General + Ogólne + + + + + 3D Prefix working folder + Prefiks katalogu roboczego z obiektami 3D + + + + + <html><head/><body><p>your <span style=" font-weight:600;">KISYS3DMOD</span> path</p><p>or 3D model <span style=" font-weight:600;">main prefix path</span></p></body></html> + <html><head/><body><p>Twoja <span style=" font-weight:600;">ścieżka KISYS3DMOD</span></p><p>lub modelu 3D <span style=" font-weight:600;">główny prefiks ścieżki</span></p></body></html> + + + + + main 3D folder location 'KISYS3DMOD' +or 'KICAD6_3DMODEL_DIR' + lokalizacja głównego folderu obiektów 3D +"KISYS3DMOD" lub "KICAD6_3DMODEL_DIR" + + + + + <html><head/><body><p>main 3D folder location</p><p><span style=" font-weight:600;">'KISYS3DMOD'</span></p></body></html> + <html><head/><body><p>Lokalizacja głównego folderu obiektów 3D</p><p><span style=" font-weight:600;">"KISYS3DMOD"</span></p></body></html> + + + + + + + + + <html><head/><body><p>your <span style=" font-weight:600;">ALIAS</span> 3D</p><p>model prefix path</p></body></html> + <html><head/><body><p>Twój <span style=" font-weight:600;">ALIAS</span>modelu 3D</p><p>prefiks scieżki</p></body></html> + + + + + secondary 3D folder loc +'ALT2 3DMOD' + lokalizacja dodatkowego folderu +obiektów 3D "ALT2 3DMOD" + + + + + + + + + <html><head/><body><p>secondary 3D folder location</p><p><span style=" font-weight:600;">'ALT3DMOD'</span></p></body></html> + <html><head/><body><p>lokalizacja dodatkowego folderu obiektów 3D</p><p><span style=" font-weight:600;">"ALT3DMOD"</span></p></body></html> + + + + + PCB settings + Ustawienia PCB + + + + PCBs color. + Kolor wybrany dla Twojej płytki. + + + + + + + + + PCB color + Kolor PCB + + + + LightGreen + Jasny zielony + + + + + Green + Zielony + + + + + Blue + Niebieski + + + + + Red + Czerwony + + + + + Purple + Fioletowy + + + + + DarkGreen + Ciemny zielony + + + + + DarkBlue + Ciemny niebieski + + + + + LightBlue + Jasny niebieski + + + + + Yellow + Żółty + + + + + Black + Czarny + + + + + White + Biały + + + + + + + PCB Reference Placement in mechanical environment + Odniesienie umiejscowienia PCB +w środowisku mechanicznym + + + + + PCB Placement + Umiejscowienie PCB + + + + + Grid Origin + Punkt początkowy siatki + + + + + Aux Origin + Pomocniczy punkt początkowy + + + + + Pcb Center (approx) + Środek PCB (w przybliżeniu) + + + + + + + Constraints to be added to PCB Sketch + Wiązania do dodania do szkicu PCB + + + + + PCB Sketch mode (constraints) + Tryb szkicu PCB (wiązania) + + + + + Coincident + Zbieżność + + + + + V&H, Coincident + V&H, Zbieżność + + + + + Full + Wszystkie + + + + + None + Brak + + + + + Enable/Disable Virtual 3D +(mechanical) models + Włączanie / wyłączanie wirtualnych modeli 3D +(mechanicznych) + + + + + Virtual 3D Models loading + Ładowanie wirtualnych modeli 3D + + + + + + + minimum Drill size applied to PCB +'0.0' -> all drills are loaded +'-1' -> all drills and vias are loaded + Minimalna średnica wiertła zastosowana do PCB +"0.0" -> ładowane są wszystkie wiercenia +"-1" -> ładowane są wszystkie wiercenia i przelotki + + + + + minimum Drill size applied to PCB + Minimalna średnica wiertła do zastosowania + + + + + 0.0 + 0,0 + + + + + <html><head/><body><p><span style=" font-weight:600;">Bounding Box LIST:</span><br/>configure which 3D models will be converted to Bounding Box<br/><span style=" font-weight:600;">Examples:</span><br/><span style=" font-weight:600;">ALL</span><span style=" font-style:italic;">-&gt; all models will be converted to bounding boxes</span><br/><span style=" font-weight:600;">LIST</span> DSUB-15-HD_FH, DSUB-9_FH <span style=" font-style:italic;">-&gt; these two models will NOT be converted to BBox</span><br/><span style=" font-style:italic;">(list of 3D model's names separated by a semicolon)</span></p></body></html> + <html><head/><body><p><span style=" font-weight:600;">LISTA ramek otaczających:</span><br/>skonfiguruj, które modele 3D zostaną przekonwertowane na ramki otaczające<br/><span style=" font-weight:600;">Przykład:</span><br/><span style=" font-weight:600;">ALL</span><span style=" font-style:italic;">-&gt; wszystkie modele zostaną przekonwertowane na ramki ograniczające</span><br/><span style=" font-weight:600;">LIST</span> DSUB-15-HD_FH, DSUB-9_FH <span style=" font-style:italic;">-&gt; Te dwa modele NIE zostaną przekonwertowane na ramki obwiedni</span><br/><span style=" font-style:italic;">(lista nazw modeli 3D oddzielonych średnikiem)</span></p></body></html> + + + + + Bounding Boxes + Ramki otaczające + + + + + <html><head/><body><p><span style=" font-weight:600;">Black List:</span><br/>put here your model names that you don't want to load (e.g. smallest ones)<br/>separated by a semicolon.<br/>DNP or DNF attribute.<br/>volume and height are also configurable.<br/>(volume=1 means all models with a volume &lt; 1mm3 will not be included)<br/>(height=1 means all models with a height &lt; 1mm will not be included)<br/><br/><span style=" font-weight:600;">Examples:</span><br/>DNP;R_0402_1005Metric;C_0402_1005Metric;<br/>height=1.0<br/>volume=1.0<br/><span style=" font-weight:600;">An empty list means all the models will be parsed.</span></p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Czarna lista:</span><br/>umieść tutaj nazwy modeli, których nie chcesz ładować (np. najmniejszych).<br/>oddiel je średnikiem.<br/>atrybut DNP lub DNF.<br/>objętość i wysokość są również konfigurowalne.<br/>(volume=1 oznacza że wszystkie modele z objętością &lt; 1mm3 nie zostaną wuwzględnione)<br/>(height=1 oznacza, że wszystkie modele o wysokości &lt; 1mm nie zostaną uwzględnione).<br/><br/><span style=" font-weight:600;">Przykłady:</span><br/>DNP;R_0402_1005Metric;C_0402_1005Metric;<br/>height=1.0<br/>volume=1.0<br/><span style=" font-weight:600;">Pusta lista oznacza, że wszystkie modele zostaną przetworzone.</span></p></body></html> + + + + + Black List + "Czarna" lista + + + + + + + minimum Edge Tolerance applied to PCB +default '0.01mm' + Minimalna tolerancja krawędzi zastosowana do PCB +wartość domyślna: 0.01mm + + + + + minimum edge tolerance + Minimalna tolerancja krawędzi + + + + + 0.01 + 0,01 + + + + + <html><head/><body><p><span style=" font-weight:600;">White List:</span><br/>put here your model names that you must load (e.g. smallest ones)<br/>separated by a semicolon.<br/><br/><span style=" font-weight:600;">Examples:</span><br/> +LED_D5.0mm_IRBlack;USB_Mini-B_Lumberg_2486_01_Horizontal;<br/><span style=" font-weight:600;">An empty list means all the models will behave as usual.</span></p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Biała lista:</span><br/>Umieść tutaj nazwy modeli, które musisz załadować (np. najmniejsze).<br/>oddiel je średnikiem..<br/><br/><span style=" font-weight:600;">Przykłady:</span><br/> +LED_D5.0mm_IRBlack;USB_Mini-B_Lumberg_2486_01_Horizontal;<br/><span style=" font-weight:600;">Pusta lista oznacza, że wszystkie modele będą zachowywać się jak zwykle.</span></p></body></html> + + + + White List + "Biała" lista + + + + + Import/Export settings + Konfiguracja importu / eksportu + + + + + <html><head/><body><p>Enable/Disable <span style=" font-weight:600;">fusion (union)</span> of all 3D models.</p><p>Be careful ... fusion can be heavy or generate FC crash with a lot of objects.</p><p>Please consider to use bbox or blacklist small objects</p></body></html> + <html><head/><body><p>Włacz / Wyłącz <span style=" font-weight:600;">połączenie (scalenie)</span> wszystkich modeli 3D.</p><p>Bądź ostrożny ... operacja scalenia może być trudna lub wygenerować kolizję FC z wieloma obiektami.</p><p>Rozważ użycie ramki otaczającej lub czarnej listy małych obiektów</p></body></html> + + + + + Make a Union of 3D models + Twórz scalenie modeli 3D + + + + + <html><head/><body><p>Directly <span style=" font-weight:600;">Export STEP</span> after Loading</p></body></html> + <html><head/><body><p>Bezpośredni <span style=" font-weight:600;">Eksport STEP</span> po załadowaniu</p></body></html> + + + + + Directly Export STEP after Loading + Eksport STEP bezpośrednio po załadowaniu projektu + + + + STEP export mode. + Tryb eksportu do formatu STEP. + + + + + + + + + STEP export mode + Tryb eksportu STEP + + + + + + + Hierarchy + Hierarchia + + + + + Flat + Płaskie + + + + + One Container + Jeden kontener + + + + 3D Loading mode. + Tryb ładowania obiektów 3D. + + + + + + + 3D Loading mode + Tryb ładowania obiektów 3D + + + + + 3D_loading_mode +Allowing or not Loading Multi Parts objects + 3D_loading_mode +Zezwolenie lub nie na ładowanie obiektów wieloczęściowych. + + + + + Simplified + Uproszczony + + + + + NotMultiParts + Bez wieloczęściowych + + + + + Standard + Standardowy + + + + Assembly3 Links allowed. + Powiązania ze środowiskiem pracy Złożenie 3 będą dozwolone. + + + + + + + Assembly3 Links allowed + Zezwól na łącza ze środowiska Złożenie 3 + + + + Enables Materials for VRML exporting. + Umożliwia eksportowanie materiałów VRML. + + + + + + + Enable Materials for VRML exporting + Eksport materiałów VRML + + + + Start Turntable after loading. + Po załadowaniu uruchomiona będzie obsługa manipulatora TurnTable. + + + + + + + Start Turntable after loading + Uruchom obsługę Turntable po załadowaniu + + + + Assembly3 LinkGroups allowed. + Grupy powiązań ze środowiskiem pracy Złożenie 3 będą dozwolone. + + + + + + + Assembly3 LinkGroups allowed + Zezwól na grupy łączy ze środowiska Złożenie 3 + + + + Enables compressed STEP file ('.stpZ') generation exporting. + Włącza możliwość eksportu do skompresowanego pliku STEP (.stpZ). + + + + + + Enable compressed STEP file ('.stpZ') generation exporting + Włącz eksport do skompresowanego pliku STEP (.stpZ). + + + + Enables compressed VRML file ('.wrz') generation exporting. + Włącza możliwość eksportu do skompresowanego pliku VRML (.wrz). + + + + + + Enable compressed VRML file ('.wrz') generation exporting + Włącz eksport do skompresowanego pliku VRML (.wrz). + + + + Displays STEP import settings warning. + Wyświetlane będą ostrzeżenia o ustawieniach importu STEP + + + + + + + Display STEP import settings warning + Pokaż ostrzeżenia o ustawieniach importu STEP + + + + + <html><head/><body><p>Apply Transparency for 'Glass' Materials:</p><p>Force Transparency to STEP model if 'Glass' is found in '.wrl' model</p></body></html> + <html><head/><body><p>Zastosuje przezroczystość dla materiałów typu "szkło":</p><p>Spowoduje wymuszenie przezroczystości na obiekcie modelu STEP, jeśli materiał "szkło" znajduje się w modelu ".wrl".</p></body></html> + + + + + Apply Transparency for 'Glass' Materials + Zastosuj przezroczystość dla "szkła" + + + + + <html><head/><body><p>Apply Transparency for 'Led' Materials:</p><p>Force Transparency to STEP model if 'Led' is found in '.wrl' model</p></body></html> + <html><head/><body><p>Zastosuje przezroczystość dla materiałów typu "LED":</p><p>Spowoduje wymuszenie przezroczystości na obiekcie modelu STEP, jeśli "LED" znajduje się w modelu ".wrl".</p></body></html> + + + + + Apply Transparency for 'Led' Materials + Zastosuj przezroczystość dla "LED" + + + + <html><head/><body><p>Skip importing pcb zone(s)</p></body></html> + <html><head/><body><p>Wyłącza import stref z płytek drukowanych.</p></body></html> + + + + skpZone + Strefa + + + + <html><head/><body><p>Skip importing pcb tracks and vias</p></body></html> + <html><head/><body><p>Wyłącza import ścieżek i przelotek z płytek drukowanych.</p></body></html> + + + + skpTracks + Ścieżka + + + + + <html><head/><body><p>Skip importing pcb pads</p></body></html> + <html><head/><body><p>Wyłącza import pół lutowniczych z płytek drukowanych.</p></body></html> + + + + skpPads + "Pady" + + + + + third 3D folder loc +'ALT3 3DMOD' + trzecia lokalizacja folderu +obiektów 3D "ALT3 3DMOD" + + + + + fourth 3D folder loc +'ALT4 3DMOD' + czwarta lokalizacja folderu +obiektów 3D "ALT4 3DMOD" + + + + <html><head/><body><p>Select to NOT use the native dialog box in Open/Save files<br/>(suggested for Snap or FlatPack)</p></body></html> + <html><head/><body><p>Wybierz, aby NIE używać systemowego okna dialogowego podczas otwierania / zapisywania plików<br/>(zalecane dla dystrybucji Snap lub FlatPack)</p></body></html> + + + + don't use native dialog in Open/Save files (for Snap or FlatPack) + Nie używaj natywnego okna otwierania / zapisywania plików (dla Snap lub FlatPack) + + + + + Mechanical Check + Kontrola mechaniczna + + + + Generates Sketches for differences on PCB Edge. + Zostaną wygenerowane szkice dla różnic na krawędzi PCB. + + + + + + + Generate Sketches for differences on PCB Edge + Generuj szkice dla różnic na krawędziach PCB + + + + Working directory ccx tools + Katalog roboczy narzędzi ccx + + + + + Use custom directory + Użyj katalogu użytkownika + + + + Working directory general FEM solver frame work + Katalog roboczy solwera MES + + + + Temporary directories + Katalogi tymczasowe + + + + Let FreeCAD manage (create, delete) the working directories for all solver. Use temporary directories. + Pozwól aby FreeCAD zarządzał (tworzył, usuwał) +katalogami roboczymi dla wszystkich solverów. +Użyj katalogów tymczasowych. + + + + Beside .fcstd file + Oprócz pliku .fcstd + + + + Create a directory in the same folder in which the fcstd file of the document is located. Use Subfolder for each solver (e.g. for a file ./mydoc.fcstd and a solver with the label Elmer002 use ./mydoc/Elmer002). + Utwórz katalog w tym samym katalogu, w którym znajduje się plik fcstd dokumentu. +Użyj katalogu podrzędnego dla każdego solvera +(np. dla pliku ./mydoc.fcstd i solvera z etykietą Elmer002 użyj ./mydoc/Elmer002). + + + + Use directory set below. Create own subdirectory for every solver. Name directory after the solver label prefixed with the document name. + Użyj poniższego ustawienia katalogu. Utwórz własny katalog podrzędny dla każdego solvera. +Nazwij katalog na podstawie etykiety solvera poprzedzonej nazwą dokumentu. + + + + Path: + Ścieżka: + + + + Mesh + Siatka + + + + Create mesh groups for analysis reference shapes + Utwórz grupy siatek dla kształtów referencyjnych analizy + + + + + choice#1 + Wybór#1 + + + + choice#2 + Wybór#2 + + + + choice#3 + Wybór#3 + + + + Results + Wyniki + + + + Keep results on calculation re-run + Zachowaj wyniki przy ponownym uruchomieniu obliczeń + + + + Restore result dialog settings + Przywróć ustawienia okna dialogowego wyników + + + + Hide constraints when open result dialog + Ukryj wiązania po otwarciu okna dialogowego wyników + + + + + <html><head/><body><p><span style=" font-weight:600;">Bounding Box LIST:</span></p><p>configure which 3D models will be converted to Bounding Box</p><p><span style=" font-weight:600;">Examples:</span></p><p><span style=" font-weight:600;">ALL</span><span style=" font-style:italic;">-&gt; all models will be converted to bounding boxes</span></p><p><span style=" font-weight:600;">LIST</span> DSUB-15-HD_FH, DSUB-9_FH <span style=" font-style:italic;">-&gt; these two models will NOT be converted to BBox</span></p><p><span style=" font-style:italic;">(list of 3D model's names separated by a semicolon)</span></p></body></html> + <html><head/><body><p><span style=" font-weight:600;">LISTA ramek otaczających:</span></p><p>skonfiguruj, które modele 3D zostaną przekonwertowane na ramki otaczające</p><p><span style=" font-weight:600;">Przykłady:</span></p><p><span style=" font-weight:600;">ALL</span><span style=" font-style:italic;">-&gt; wszystkie modele zostaną przekonwertowane na ramki ograniczające</span></p><p><span style=" font-weight:600;">LIST</span> DSUB-15-HD_FH, DSUB-9_FH <span style=" font-style:italic;">-&gt; ee dwa modele NIE zostaną przekonwertowane na ramki ograniczające</span></p><p><span style=" font-style:italic;">(lista nazw modeli 3D oddzielonych średnikiem)</span></p></body></html> + + + + + <html><head/><body><p><span style=" font-weight:600;">Black List:</span></p><p>put here your model names that you don't want to load (e.g. smallest ones)</p><p>separated by a semicolon.</p><p>volume and height are also configurable.</p><p>(volume=1 means all models with a volume &lt; 1mm3 will not be included)</p><p>(height=1 means all models with a height &lt; 1mm will not be included)</p><p><br/><span style=" font-weight:600;">Examples:</span></p><p>r_0603;r_0402;c_0402;c_0603</p><p>height=1.0</p><p>volume=1.0</p><p><span style=" font-weight:600;">An empty list means all the models will be parsed.</span></p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Czarna lista:</span></p><p>umieść tutaj nazwy modeli, których nie chcesz ładować (np. najmniejszych).</p><p>oddiel je średnikiem</p><p>Objętość i wysokość są również konfigurowalne.</p><p>(volume=1 oznacza, że wszystkie modele o objętości &lt; 1mm3 nie zostaną uwzględnione)</p><p>(height=1 oznacza, że wszystkie modele o wysokości <&lt; 1 mm nie zostaną uwzględnione)</p><p><br/><span style=" font-weight:600;">Przykłady:</span></p><p>r_0603;r_0402;c_0402;c_0603</p><p>height=1.0</p><p>volume=1.0</p><p><span style=" font-weight:600;">Pusta lista oznacza, że wszystkie modele zostaną przeanalizowane.</span></p></body></html> + + + + Arcs2Circles + + + Convert Arcs to Circles in Sketch + Konwertuj łuki na okręgi w Szkicowniku + + + + Close + + + <b>Do you want to quit?</b> <i>Have you saved your STEP artwork?</i><br> + + + + + Close + + + + + Create_BoundBox + + + Create BoundBox of the Selected Object + Utwórz ramkę otaczającą wybranego obiektu + + + + Help + + + <b>Kicad StepUp</b> is a tool set to easily <b>collaborate between kicad pcb EDA</b> (board and 3D parts) as STEP models <b>and FreeCAD MCAD</b> modeler.<br> +</font> + + + + + <b>StepUp</b> can also be used <b>to align 3D model to kicad footprint</b>.<br> +The artwork can be used for MCAD interchange and collaboration, and for enclosure design.<br> +The 3D visualization of components on board assemblies in kicad 3dviewer, will be the same in your mechanical software, +because of the STEP interchange format.<br> +It is also possible to <b>Update a pcb Edge from a FC Sketcher.</b><br> +<b>configuration options:</b><br>Configuration options are located in the preferences system of FreeCAD, which is located in the Edit menu -&gt; Preferences.<br> + + + + + + starter Guide:<br><a href='{}{}demo{}{}' target='_blank'>{}</a><br> + + + + + <b>Note:</b> each button has its own <b>Tooltip</b><br> +useful buttons:<br><b>Load kicad Board directly</b> -> will load kicad board and parts in FreeCAD coming from kicad '.kicad_pcb' file<br> +<b>Load kicad Footprint module</b> -> will load directly kicad footprint in FreeCAD to easily align the 3D model to footprint<br> +<b>Export to kicad STEP & scaled VRML</b> -> will convert MCAD model to STEP and VRML to be used by Kicad and kicad StepUp<br> +<b> -> VRML can be multipart;<br> -> STEP must be single part</b><br>(<i>'Part Boolean Union'</i> or <i>'Part Makecompound'</i>)<br> +<i>assign material to selected colors and your VRML 3D models will have nice shiny effects</i><br> +<b>Push pcb Sketch to kicad_pcb Edge</b> -> will push pcb Sketch to kicad_pcb Edge in your design; it can be done with an empty or with an existing pcb Edge<br> +<br>for a more detailed help have a look at <br><b>kicadStepUp-starter-Guide.pdf</b><br> +or just follow the <b>YouTube video tutorials</b> <br><a href='https://youtu.be/h6wMU3lE_sA' target='_blank'>kicadStepUp basics</a><br> +<a href='https://youtu.be/O6vr8QFnYGw' target='_blank'>kicadStepUp STEP alignment to Kicad footprint</a><br> +<a href='https://github.com/easyw/kicadStepUpMod' target='_blank'>check always the latest release of kicadStepUp</a><br><br> +Designing in kicad native 3d-viewer will produce a fully aligned STEP MCAD version +with the same view of kicad 3d render.<br> +Moreover, KiCad StepUp tool set <b>will let you to load the kicad footprint inside FreeCAD and align the 3D part with a visual real time feedback +of the 3d model and footprint reciprocal position.</b><br> +With this tool is possible to download a part from on-line libraries, align the model to kicad footprint +and export the model to wrl, for immediate 3d-viewer alignment in pcbnew.<br> +Now the two words are connected for a better collaboration; just <b>design in kicad EDA</b> and transfer +the artwork to <b>MCAD (FreeCAD)</b> smoothly.<br> +<b>The workflow is very simple</b> and maintains the usual way to work with kicad:<br> +Add models to your library creating 3D models in FreeCAD, or getting models from online libs +or from the parametric 3D lib expressly done to kicad <a href='https://github.com/easyw/kicad-3d-models-in-freecad' target='_blank'>kicadStepUp 3D STEP models generator</a><br> +Once you have your 3D MCAD model, <b>you need to have a copy of that in STEP and VRML format.</b> <br> +(with the latest kicad release you can only have STEP model, VRML is not needed anymore, but <b>it is possible + to mix VRML, STEP and IGES format</b>)<br> +Just exporting the model with FreeCAD and put your model in the same folder in which +normally you are used to put vrml models; the script will assembly the MCAD board and models as in 3d-viewer of kicad. +<br><b>NB<br>STEP model has to be fused in single object</b><br>(Part Boolean Union of objects) +<br><b>or a Compoud</b> (Part Makecompound of objects)</b> +<hr><b>enable 'Report view' Panel to see helping messages</b> +</font> +<br> + + + + + KiCadStepUpWB + + + KiCadStepUp + KiCad krok w górę + + + + KiCadStepUp workbench + Środowisko pracy wspierające możliwości KiCad + + + + Menu + + + ksu PushPull + KSU - wyciągnij + + + + + ksu Tools + KSU - narzędzia + + + + Demo + Prezentacja + + + + PushPCB + + + <b>Edge editing NOT supported on FC0.15!</b><br>please upgrade your FC release + + + + + Edge editing NOT supported on FC0.15! + + + + + getting camera view + + + + + forcing rotAngle to 0 + + + + + evaluate to recompute + + + + + Saving to an empty KiCad pcb file + + + + + Cancel + + + + + Restoring cam view + + + + + + Select one Sketch to be pushed to kicad board! + + + + + Restore_Transparency + + + Restore Transparency to Active Document Objects + Przywróć przezroczystość aktywnym obiektom dokumentu + + + + Save + + + please <b>save</b> your job file before exporting. + + + + + Please <b>save</b> your job file before exporting. + + + + + + Info ... + + + + + + Save + + + + + Say + + + routine Scale to VRML 1/2.54 + + + + + Put on Axe XYZ ! + + + + + Select <b>ONE single part</b> object !<br> +suggestion for multi-part:<br> +&nbsp;&nbsp;<b>Part Boolean Union (recommended)</b><br> +or<br> +&nbsp;&nbsp;<i>Part Make compound (alternative choice)</i> + + + + + Select <b>a Compound</b> or <br> +<b>a Part Design group</b><br> +or <b>more than one Part</b> object !<br> + + + + + + Error in selection + + + + + Warning ... + + + + + ERROR! ... + + + + + Info ... + + + + + + + + + + + Select ONE single part object ! + + + + + Select an object ! + + + + + Toolbar + + + ksu Tools + KSU - Narzędzia + + + + ksu Sketching + KSU - Szkicowanie + + + + ksu PushPull + KSU - Wyciągnij + + + + + ksu Design Tools + KSU - Narzędzia projektowe + + + + ksu Show + KSU - Pokaz + + + + ksu Helpers + KSU - Pomocnik + + + + Ui_CDialog + + + Select a Sketch and Parameters +to constraint the sketch +NB the Sketch will be modified! + Wybierz szkic i parametry +aby związać szkic +Uwaga: szkic zostanie zmodyfikowany! + + + + <b>Select a Sketch and Parameters to<br>constrain the sketch.<br>NB the Sketch will be modified!</b> + <b>Wybierz szkic i parametry aby<br>nałożyć wiązania na szkic.<br> Uwaga: Szkic zostanie zmodyfikowany!</b> + + + + Constraints + Wiązania + + + + Lock Coincident, Horizontal +and Vertical + Zablokuj zbieżność, +poziome i pionowe + + + + Lock Coincident + Zablokuj zbieżność + + + + Tolerance + Tolerancja + + + + tolerance in mm + Tolerancja w mm + + + + Tolerance on Constraints + Tolerancja dla wiązań + + + + remove duplicated geometries + Usuń powielone geometrie + + + + Ui_Dialog + + + Material Properties + Właściwości materiału + + + + Materials + Materiały + + + + Original + Oryginalne + + + + Shape Color + Kolor kształtu + + + + Diffuse Color + Kolor rozproszenia + + + + New + Nowy + + + + NB: set Material will unmatch colors between wrl and STEP + Uwaga: ustawiony materiał spowoduje niedopasowanie kolorów między wrl i STEP. + + + + Ui_DockWidget + + + ksu config ini file +location + KSU lokalizacja pliku konfiguracyjnego ini + + + + KiCad StepUp tools + Narzędzia KiCad krok w górę + + + + dock left + Dokuj po lewej + + + + un-dock (floating) + Oddokowane + + + + minimize + Minimalizuj + + + + dock right + Dokuj po prawej + + + + close + Zamknij + + + + + + translate (+/- mm) + Przesunięcie (+/- mm) + + + + translate X (+/- mm) + Przesunięcie X (+/- mm) + + + + translate Y (+/- mm) + Przesunięcie Y (+/- mm) + + + + translate Z (+/- mm) + Przesunięcie Z (+/- mm) + + + + put on X + postaw na X + + + + put on Y + postaw na Y + + + + put on Z + postaw na Z + + + + + + rotation angle (+/- deg) + Kąt obrotu (+/- °) + + + + rotate X (+/- deg) + Obrót X (+/-°) + + + + rotate Y (+/- deg) + Obrót Y (+/-°) + + + + rotate Z (+/- deg) + Obrót Z (+/-°) + + + + center X + Środek X + + + + center Y + Środek Y + + + + center Z + Środek Z + + + + make Compound of Parts + Tworzenie zespołu części + + + + Load KiCad +Board .kicad_pcb + Załaduj płytkę +KiCad .kicad_pcb + + + + export to KiCad: +STEP & scaled VRML 1/2.54 + Eksport do KiCad: +STEP & skalowany VRML 1/2.54 + + + + enable loading +virtual & mechanical +models + Włącz wczytywanie modeli +wirtualnych i mechanicznych + + + + use wrl +material + użyj materiału +wrl + + + + load KiCad footprint +'kicad_mod' + Wczytaj odcisk +z KiCad "kicad_mod" + + + + export STEP Board +and Parts after loading + Eksportuj płytkę i części +do formatu STEP, po załadowaniu + + + + make Union of Parts + Złącz części + + + + import STEP +3D model + Import obiektu STEP +modelu 3D + + + + export selected objects to STEP + eksport wybranych obiektów do pliku STEP + + + + create reference Axis + Utwórz oś odniesienia + + + + Help & starting Guide + Pomoc i przewodnik uruchomienia + + + + view Config File content + Wyświetl zawartość pliku konfiguracyjnego + + + + push PCB Edge to KiCad +from Sketcher to pcbnew + Zastosuj PCB Edge do KiCad +ze Szkicownika do pcbnew + + + + collisions result status + Stan wyników kolizji + + + + NO collisions found + Kolizji nie stwierdzono + + + + + check Collisions +tolerance 1e-06 + Sprawdź kolizje +tolerancja 1e-06 + + + + + collisions FOUND! + Występują kolizje! + + + + ksu config ini file +content + KSU zawartość pliku konfiguracyjnego ini + + + + Help Start Guide + Pomoc — przewodnik startowy + + + + Ui_LayerSelection + + + open in new FreeCAD document + Otwórz nowy dokument FreeCAD + + + + open in new document + Otwórz nowy dokument + + + + <html><head/><body><p>replace PCB in current document</p><p><span style=" font-weight:600; color:#aa0000;">N.B.</span> Sketch constrains will be deleted!</p></body></html> + <html><head/><body><p>Zastąp PCB w bieżącym dokumencie</p><p><span style=" font-weight:600; color:#aa0000;">Uwaga</span> Wiązania szkicu zostaną usunięte!</p></body></html> + + + + replace PCB and Sketch in current document + Zastąp PCB i Szkic w bieżącym dokumencie + + + + <html><head/><body><p>keep Sketch in current document</p><p><span style=" font-weight:600; color:#aa0000;">N.B.</span> this option will keep Sketch &amp; constrains but replace the PCB</p><p>This could lead to a unsynced Sketch feature</p></body></html> + <html><head/><body><p>Zachowaj szkic w bieżącym dokumencie</p><p><span style=" font-weight:600; color:#aa0000;">Uwaga</span> ta opcja zachowa Szkic oraz wiązania, zastępując płytkę drukowaną.</p><p>Może to prowadzić do niezsynchronizowanej funkcji Szkicu.</p></body></html> + + + + replace PCB and keep Sketch in curr. doc + Zamień płytkę drukowaną i zachowaj szkic w aktualnym dokumencie + + + + Ui_LayerSelectionOut + + + Line Width: + Szerokość linii: + + + + Line width for drawings + Szerokość linii na rysunkach + + + + Ui_Offset_value + + + Offset value + Wartość odsunięcia + + + + Offset [+/- mm]: + Odsunięcie [+/- mm]: + + + + Offset value [+/- mm] + Wartość odsunięcia [+/- mm] + + + + Arc or Intersection Offset method + Metoda odsunięcia łuku lub przecięcia + + + + Arc + Łuk + + + + Offset Y [mm]: + Odsunięcie Y [mm]: + + + + Offset Y value [+/- mm] + Wartość odsunięcia Y [+/- mm] + + + + approximateCenter + + + Create Center of Circle through 3 Vertices or Select two vertices to create a mid point or Select a Shape to create a center point + Stwórz środek okręgu przez 3 wierzchołki lub +wybierz dwa wierzchołki, aby utworzyć punkt środkowy, +albo wybierz kształt, aby utworzyć punkt środkowy. + + + + Create Center of Circle through 3 Vertices + Utwórz środek okręgu przez 3 wierzchołki + + + + checkSolidExpSTEP + + + Check if the selected part would be +exported to STEP as a single solid + Sprawdź, czy wybrana część zostanie wyeksportowana do STEP +jako pojedynczy obiekt bryłowy. + + + + ksu + + + PolyLine Contour generated + +<b>For PolyLine Pads, please add 'circles' inside each closed polyline</b><br> + Wygenerowany kontur PolyLine + +<b>W przypadku "padów" PolyLine należy dodać "okręgi" wewnątrz każdej zamkniętej poliginii.</b><br> + + + + Select a Sketch and Parameters to<br>move the sketch.<br>Offset X: + Wybierz Szkic i Parametry, aby +przenieść szkic. +<br>Odsunięcie X: + + + + ksuAsm2Part + + + Convert an Assembly (A3) to Part hierarchy + Konwertuj złożenie (A3) na strukturę części + + + + ksu Convert an Assembly (A3) to Part hierarchy + KSU skonwertuje złożenie (środowiska A3) na strukturę części. + + + + ksuImpDXF + + + Import Legacy DXF + Import starszym importerem DXF + + + + ksuOpDXF + + + open Legacy DXF + Otwórz starszy importer DXF + + + + ksuOpEzDXF + + + open ezDXF + Otwórz ezDXF + + + + ksuRemoveSuffix + + + Remove 'custom' Suffix from Labels + Usuń przyrostek "niestandardowy" z etykiet. + + + + ksuRemoveTimeStamp + + + Remove TimeStamp from Labels + Usuń znacznik czasu z etykiet. + + + + ksuTools + + + ksu Tools + Narzędzia KSU + + + + Activate the main +KiCad StepUp Tools Dialog + Aktywuje główne okno dialogowe +KiCad krok w górę — Narzędzia + + + + ksuTools2D2Sketch + + + 2D to Sketch + 2D na Szkic + + + + ksu 2D object (or DXF) to Sketch + KSU przekonwertuje obiekt 2D (lub DXF) na Szkic + + + + ksuTools2DtoFace + + + 2D to Face + 2D na Powierzchnię + + + + ksu 2D object (or DXF) to Surface for extruding + KSU przekonwertuje obiekt 2D (lub DXF) do powierzchni na potrzeby wyciągnięcia + + + + ksuTools3D2D + + + 3D to 2D + 3D na 2D + + + + ksu 3D object to 2D projection + KSU wykona rzut 2D obiektu przestrzennego + + + + ksuToolsAddSilks + + + ksu tools Add Silks from KiCad exported DXF +NB: it could be a very intensive loading! + Narzędzia KSU: Dodaj maskę lutów z eksportowanego DXF z KiCad. +Uwaga: może to być bardzo intensywne obciążenie! + + + + ksuToolsAddToTree + + + Add to Tree + Dodaj do Widoku drzewa + + + + ksu Add Object(s) to Container Tree +keeping Placement +First Selection is the Container + KSU Dodaj obiekt(y) do drzewa kontenerów +utrzymując położenie. +Najpierw zaznacz kontener. + + + + ksuToolsAddTracks + + + ksu tools Add Tracks +NB: it could be a very intensive loading! + Narzędzia KSU: Dodaj ścieżki +Uwaga: może to być bardzo intensywne obciążenie! + + + + ksuToolsAlignView + + + AlignView to Face + Wyrównaj widok do ściany + + + + ksu AlignView to Face + KSU wyrówna widok do ściany + + + + ksuToolsAligner + + + Manipulator tools 'Aligner' + Narzędzia manipulacji: "Wyrównywacz" + + + + ksuToolsBsplineNormalize + + + Geo to Bspline + Geometria na krzywą złożoną + + + + ksu Convert Geometry to Bspline for KiCAD format + KSU konwersja geometrii na krzywą złożoną w formacie KiCad. + + + + ksuToolsCaliper + + + Manipulator tools 'Caliper' + Narzędzia manipulacji: "Suwmiarka" + + + + ksuToolsCheckSolid + + + Check Solid property + Sprawdź właściwości bryły + + + + ksu Check Solid property +Toggle suffix + KSU sprawdzi właściwości bryły. +Przełącz przyrostek. + + + + ksuToolsCollisions + + + Check Collisions + Kontrola kolizji + + + + ksu Check Collisions and Interferences + KSU sprawdzi występowanie kolizji i przeszkód + + + + ksuToolsColoredBinder + + + Colored Binder + Kolorowy łącznik + + + + Colored Binder object + Utworzy obiekt kolorowego łacznika + + + + ksuToolsColoredClone + + + Colored Clone + Kolorowy klon + + + + Colored Clone object + Utworzy obiekt kolorowego klona + + + + ksuToolsComparePositions + + + tools Compare 3D models Positions + Narzędzia Porównanie pozycji modeli 3D + + + + ksu Compare 3D models Positions +Data with the Active Document +[MCAD Synchronize] + KSU porówna dane pozycji modeli 3D +z aktywnym dokumentem +[MCAD Synchronize]. + + + + ksuToolsConstrainator + + + Constrain a Sketch + Wiązania szkicu + + + + ksu Fix & auto Constrain a Sketch + KSU Popraw i automatycznie nałóż wiązania na szkic + + + + ksuToolsContour2Poly + + + ksu tools 'RF PolyLined Sketch' +Selection's Shapes to PolyLine Sketch + KSU Narzędzia: "RF PolyLined Sketch" +Wybrane kształty do szkicu jako polilinie. + + + + ksuToolsCopyPlacement + + + Copy Placement 1st to 2nd + Kopiuje umiejscowienie pierwszego obiektu do drugiego + + + + ksu tools Copy Placement 1st to 2nd + KSU Narzędzia: Skopiuj położenie pierwszego do drugiego + + + + ksuToolsDeepCopy + + + PartDN Copy + Kopiuj DN części + + + + ksu PartDN Copy object +with relative placement +[flattened model] + KSU DN części: Skopiuje obiekt +wraz z względnym położeniem +[spłaszczony model] + + + + ksuToolsDefeaturingTools + + + Defeaturing Tools from Defeaturing WorkBench + Narzędzia wygładzania z środowiska pracy Defeaturing + + + + ksuToolsDiscretize + + + Discretize + Oddziel + + + + ksu Discretize a shape/outline to a Sketch + KSU oddzieli kształt / kontur do Szkicu + + + + ksuToolsEdges2Sketch + + + Edges to Sketch + Krawędzie do Szkicu + + + + ksu Select coplanar edge(s) or Face(s) or +a single Vertex of a coplanar outline +to get a corresponding Sketch + KSU wybierz współpłaszczyznowe krawędzie lub ściany +albo pojedynczy wierzchołek współpłaszczyznowego konturu, +aby uzyskać odpowiadający Szkic. + + + + ksuToolsEditPrefs + + + Edit Preferences + Edycja ustawień + + + + ksuToolsExplode + + + ksu Tools PCB Explode +Select the top container of a KiCad PCB to exlode it + KSU Narzędzia: Rozbij PCB +Wybierz główny kontener płytki PCB z programu KiCad, aby ją rozbić. + + + + ksuToolsExport3DStep + + + Export 3D to STEP + Eksportuj obiekt 3D do formatu STEP + + + + ksu Export selected objects to STEP Model + KSU wyeksportuje wybrane obiekty do modelu Step + + + + ksuToolsExportModel + + + Export 3D Model + Eksport modelu 3D + + + + ksu Export 3D Model to KiCad + KSU wyeksportuje model 3D do KiCad + + + + ksuToolsExtrude + + + ksu tools 'Extrude' +Extrude selection + KSU Narzędzia: "Wyciągnij" wybrany + + + + ksuToolsFootprintGen + + + Footprint generator + Generator odcisków + + + + ksu Footprint editor and exporter + KSU Edycja i kesport odcisków + + + + ksuToolsGeneratePositions + + + tools Generate 3D models Positions + Narzędzia Generator pozycji modeli 3D + + + + ksu Generate 3D models Positions +Data for Active Document +[MCAD Synchronize] + KSU wygeneruje pozycje modeli 3D +Dane dla aktywnego dokumentu +[Synchronizacja MCAD] + + + + ksuToolsHighlightToggle + + + Highlight Toggle + Przełącz podświetlenie + + + + ksu Selection Highlight Toggle + KSU przełączy podświetlenie wyboru + + + + ksuToolsImport3DStep + + + Import 3D STEP + Import 3D STEP + + + + ksu Import 3D STEP Model + KSU zaimportuje model 3D z pliku STEP + + + + ksuToolsImportFootprint + + + Load FootPrint + Wczytaj odcisk + + + + ksu Load KiCad PCB FootPrint + KSU Wczytaj odcisk płytki drukowanej z KiCad + + + + ksuToolsLoadFootprint + + + Load FootPrint + Wczytaj odcisk + + + + ksu Load KiCad PCB FootPrint + KSU Wczytaj odcisk płytki drukowanej z KiCad + + + + ksuToolsLoopSelection + + + ksu tools 'LoopSelection' +Loop selection on a xy outline + Wybierz narzędzie "Wybór pętli” +Wybierz pętlę na konturze xy. + + + + ksuToolsMakeCompound + + + Make Compound + Utwórz złożenie + + + + ksu Make a Compound of selected objects + KSU utworzy złożenie z wybranych obiektów + + + + ksuToolsMakeUnion + + + Make Union + Utworz scalenie + + + + ksu Make a Union of selected objects + KSU scali wybrane obiekty + + + + ksuToolsMergeSketches + + + Merge Sketches + Połacz szkice + + + + ksuToolsMoveSketch + + + Move Sketch + Przesuń szkic + + + + ksu Move 2D Sketch + KSU Przesuń szkic 2D + + + + ksuToolsMover + + + Manipulator tools 'Mover' + Narzędzia manipulacji "Przesuwacz" + + + + ksuToolsOffset2D + + + Offset 2D + Odsunięcie 2D + + + + ksu Offset 2D object + KSU Odsunięcie obiektu 2D + + + + ksuToolsOpenBoard + + + Load Board + Wczytaj płytkę + + + + ksu Load KiCad PCB Board and Parts + KSU załaduje płytę PCB i części z KiCad + + + + ksuToolsPullMoved + + + Pull 3D model(s) placement from PCB + Pobierz położenie modeli 3D z płytki PCB + + + + ksu Pull 3D model(s) placement from PCB + KSU pobierze położenie modeli 3D z płytki PCB + + + + ksuToolsPullPCB + + + Pull Sketch from PCB + Pobierz Szkiz z PCB + + + + ksu Pull Sketch from PCB Edge + KSU pobierze szkic z krawędzi PCB + + + + ksuToolsPushMoved + + + Push 3D moved model(s) to PCB + Zastosuj zmiany z modeli 3D do PCB + + + + ksu Push 3D moved model(s) to PCB + KSU zastosuje zmiany z modeli 3D do PCB + + + + ksuToolsPushPCB + + + Push Sketch to PCB + Zastosuj szkic na PCB + + + + ksu Push Sketch to PCB Edge + KSU zastosuje szkic na PCB + + + + ksuToolsReLinkBinder + + + Relink Binder + Przypisz łącznik + + + + Relink Binder object Select Binder and an Object to be linked + Przypisze ponownie łącznik. Wybierz łącznik oraz obiekt, który ma zostać połączony. + + + + ksuToolsRemoveFromTree + + + Remove from Tree + Usuń z drzewa + + + + ksu Remove Object(s) from Container Tree +keeping Placement +First Selection is the Container + KSU Usuń obiek(y z drzewa kontenera, +zachowując umiejscowienie. +Najpierw wybierz kontener. + + + + ksuToolsRemoveSubTree + + + Remove Sub Tree + Usuń pozycję z drzewa + + + + ksuToolsResetPartPlacement + + + Reset Part Placement + Resetuj umiejscowienie części + + + + ksu Reset Placement for all Part containers in selection + KSU zresetuje położenie dla wszystkich kontenerów części w zaznaczeniu. + + + + ksuToolsResetPlacement + + + Reset Placement + Resetuj umiejscowienie + + + + ksu Reset Placement for a Shape + KSU zresetuje umiejscowienie kształtu + + + + ksuToolsSimpleCopy + + + Simple Copy + Prosta kopia + + + + ksu Simple Copy object + KSU utworzy prostą kopię obiektu + + + + ksuToolsSimplifySketck + + + Simplify Sketch + Uprość szkic + + + + ksu Simplifying Sketch to Arcs and Lines + KSU uprości szkic do łuków i linii. + + + + ksuToolsSkValidate + + + ksu tools 'Sketcher Validate' +Validate selected Sketch + KSU Narzędzia: "Sprawdź poprawność szkicu" Sprawdź wybrany szkic. + + + + ksuToolsStepImportModeComp + + + disable Simplified STEP Import Mode + Wyłącz tryb uproszczonego importu plików STEP + + + + ksu tools disable Simplified STEP Import Mode + KSU wyłączy tryb uproszczonego importu plików STEP + + + + ksuToolsStepImportModeSTD + + + disable Full STEP Import Mode + Wyłącz tryb pełnego importu plików STEP + + + + ksu tools disable Full STEP Import Mode + KSU Narzędzia: Wyłącz tryb pełnego importu plików STEP + + + + ksuToolsSync3DModels + + + Sync 3D model(s) Ref & TimeStamps with PCB + Synchronizuj odniesienia 3D modeli i znaczniki czasu z PCB + + + + ksu Sync 3D model(s) Ref & TimeStamps +of the Selected 3D model with KiCad PCB + KSU zsynchronizuje odniesienia 3D modeli i znaczniki czasu z PCB KiCad + + + + ksuToolsToggleTreeView + + + Expand/Collapse Tree View + Zwiń / rozwiń Widok drzewa + + + + ksu tools Expand/Collapse Tree View + KSU Narzędzia: Zwiń / rozwiń Widok drzewa + + + + ksuToolsTransparencyToggle + + + Transparency Toggle + Przełącz przezroczystość + + + + ksu Selection Transparency Toggle + KSU Zaznaczenie: Przełącz przezroczystość + + + + ksuToolsTurnTable + + + TurnTable + TurnTable + + + + ksu TurnTable + KSU manipulator TurnTable + + + + ksuToolsUnion + + + Fuse objects + Scal obiekt + + + + Make Union (Fuse) objects + Utworzy scalenie (połączenie) obiektu + + + + ksuToolsVisibilityToggle + + + Visibility Toggle + Włącz / wyłącz widoczność + + + + ksu Selection Visibility Toggle + KSU Zaznaczenie: Przełącz widoczność + + + From 19842919877560838c735341ae29c2e071bf4c36 Mon Sep 17 00:00:00 2001 From: EdgarJRobles Date: Mon, 11 Mar 2024 23:49:21 -0600 Subject: [PATCH 5/5] Add Spanish Translation --- translations/ksu_es-ES.qm | Bin 61040 -> 64031 bytes translations/ksu_es-ES.ts | 203 +++++++++++++++----------------------- 2 files changed, 79 insertions(+), 124 deletions(-) diff --git a/translations/ksu_es-ES.qm b/translations/ksu_es-ES.qm index 7e0619a313e2da263f5e1aee06d4d34718b858db..730e47daae379e27d10acf741b096a4950f6f144 100644 GIT binary patch delta 8319 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 delta 5030 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 aa_;j!Th`s&TS;`;Wc@P268y_!$NvH(iMb5` diff --git a/translations/ksu_es-ES.ts b/translations/ksu_es-ES.ts index 50f1314..b7a135f 100644 --- a/translations/ksu_es-ES.ts +++ b/translations/ksu_es-ES.ts @@ -769,7 +769,18 @@ Permitir o no cargar objetos Multi Partes <b>Kicad StepUp</b> is a tool set to easily <b>collaborate between kicad pcb EDA</b> (board and 3D parts) as STEP models <b>and FreeCAD MCAD</b> modeler.<br> </font> - + <b>Kicad StepUp</b> es un conjunto herramientas que de forma sencilla <b>colabora entre kicad pcb EDA</b> (tarjetas y piezas 3D) como modelo STEP <b>y FreeCAD MCAD</b> modelador.<br> +</font> + + + + The artwork can be used for MCAD interchange and collaboration, and for enclosure design.<br> + La obra de arte puede ser utilizada para intercambio y colaboración en MCAD y para diseño de recintos + + + + The 3D visualization of components on board assemblies in kicad 3dviewer, will be the same in your mechanical software, because of the STEP interchange format.<br>It is also possible to <b>Update a pcb Edge from a FC Sketcher.</b><br> + La visualización 3D de los componentes en el ensamblaje de la placa en KiCad 3DViewer, será la misma en su software mecánico, debido al formato de intercambio STEP. <br>También es posible <b>actualizar un borde de PCB desde un croquis de Sketcher FC. </b><br> @@ -779,49 +790,18 @@ The 3D visualization of components on board assemblies in kicad 3dviewer, will b because of the STEP interchange format.<br> It is also possible to <b>Update a pcb Edge from a FC Sketcher.</b><br> <b>configuration options:</b><br>Configuration options are located in the preferences system of FreeCAD, which is located in the Edit menu -&gt; Preferences.<br> - + - - starter Guide:<br><a href='{}{}demo{}{}' target='_blank'>{}</a><br> - + + starter Guide:<br><a href='{}{}demo{}{}{}{}' target='_blank'>{}</a><br> + Guía de inicio:<br><a href='{}{}demo{}{}{}{}' target='_blank'>{}</a><br> - - <b>Note:</b> each button has its own <b>Tooltip</b><br> -useful buttons:<br><b>Load kicad Board directly</b> -> will load kicad board and parts in FreeCAD coming from kicad '.kicad_pcb' file<br> -<b>Load kicad Footprint module</b> -> will load directly kicad footprint in FreeCAD to easily align the 3D model to footprint<br> -<b>Export to kicad STEP & scaled VRML</b> -> will convert MCAD model to STEP and VRML to be used by Kicad and kicad StepUp<br> -<b> -> VRML can be multipart;<br> -> STEP must be single part</b><br>(<i>'Part Boolean Union'</i> or <i>'Part Makecompound'</i>)<br> -<i>assign material to selected colors and your VRML 3D models will have nice shiny effects</i><br> -<b>Push pcb Sketch to kicad_pcb Edge</b> -> will push pcb Sketch to kicad_pcb Edge in your design; it can be done with an empty or with an existing pcb Edge<br> -<br>for a more detailed help have a look at <br><b>kicadStepUp-starter-Guide.pdf</b><br> -or just follow the <b>YouTube video tutorials</b> <br><a href='https://youtu.be/h6wMU3lE_sA' target='_blank'>kicadStepUp basics</a><br> -<a href='https://youtu.be/O6vr8QFnYGw' target='_blank'>kicadStepUp STEP alignment to Kicad footprint</a><br> -<a href='https://github.com/easyw/kicadStepUpMod' target='_blank'>check always the latest release of kicadStepUp</a><br><br> -Designing in kicad native 3d-viewer will produce a fully aligned STEP MCAD version -with the same view of kicad 3d render.<br> -Moreover, KiCad StepUp tool set <b>will let you to load the kicad footprint inside FreeCAD and align the 3D part with a visual real time feedback -of the 3d model and footprint reciprocal position.</b><br> -With this tool is possible to download a part from on-line libraries, align the model to kicad footprint -and export the model to wrl, for immediate 3d-viewer alignment in pcbnew.<br> -Now the two words are connected for a better collaboration; just <b>design in kicad EDA</b> and transfer -the artwork to <b>MCAD (FreeCAD)</b> smoothly.<br> -<b>The workflow is very simple</b> and maintains the usual way to work with kicad:<br> -Add models to your library creating 3D models in FreeCAD, or getting models from online libs -or from the parametric 3D lib expressly done to kicad <a href='https://github.com/easyw/kicad-3d-models-in-freecad' target='_blank'>kicadStepUp 3D STEP models generator</a><br> -Once you have your 3D MCAD model, <b>you need to have a copy of that in STEP and VRML format.</b> <br> -(with the latest kicad release you can only have STEP model, VRML is not needed anymore, but <b>it is possible - to mix VRML, STEP and IGES format</b>)<br> -Just exporting the model with FreeCAD and put your model in the same folder in which -normally you are used to put vrml models; the script will assembly the MCAD board and models as in 3d-viewer of kicad. -<br><b>NB<br>STEP model has to be fused in single object</b><br>(Part Boolean Union of objects) -<br><b>or a Compoud</b> (Part Makecompound of objects)</b> -<hr><b>enable 'Report view' Panel to see helping messages</b> -</font> -<br> - + + starter Guide:<br><a href='{}{}demo{}{}' target='_blank'>{}</a><br> + Guía de inicio:<br><a href='{}{}demo{}{}' target='_blank'>{}</a><br> @@ -964,28 +944,30 @@ or<br> Select <b>a Compound</b> or <br> <b>a Part Design group</b><br> or <b>more than one Part</b> object !<br> - + Selecciona <b>un compuesto</b> o <br> +<b>un grupo de Part Design</b><br> +o <b>mas de un objeto pieza!</b><br> Error in selection - + Error en selección Warning ... - + Advertencia ... ERROR! ... - + ERROR! ... Info ... - + Informacion ... @@ -996,12 +978,12 @@ or <b>more than one Part</b> object !<br> Select ONE single part object ! - + Selecciona UN objecto simple pieza ! Select an object ! - + Selecciona un objecto ! @@ -1009,17 +991,16 @@ or <b>more than one Part</b> object !<br> ksu Tools - KSU Herramientas + Herramientas ksu ksu Sketching - KSU Croquis ksu PushPull - KSU PushPull + ksu EnviarCargar @@ -1136,9 +1117,7 @@ y vertical ksu config ini file location - KSU ubicación del archivo -de configuración ini - + ksu ubicación de archivo de configuración INI @@ -1329,8 +1308,8 @@ modelo 3D push PCB Edge to KiCad from Sketcher to pcbnew - Enviar el borde de la PCB a KiCad -desde Sketcher a PCBNew + Envia arista de PCB a KiCad +from Sketcher to pcbnew @@ -1390,17 +1369,17 @@ de configuración ini replace PCB and Sketch in current document - reemplazar PCB y croquis en el documento actual + Remplaza PCB y Croquis en el documento actual <html><head/><body><p>keep Sketch in current document</p><p><span style=" font-weight:600; color:#aa0000;">N.B.</span> this option will keep Sketch &amp; constrains but replace the PCB</p><p>This could lead to a unsynced Sketch feature</p></body></html> - <html><head/><body><p>keep Sketch in current document</p><p><span style=" font-weight:600; color:#aa0000;">N.B.</span> this option will keep Sketch & constrains but replace the PCB</p><p>This could lead to a unsynced Sketch feature</p></body></html> + <html><head/><body><p>Mantiene croquis en el documento actual</p><p><span style=" font-weight:600; color:#aa0000;">N.B.</span> Esta opcion mantendra las restricciones del croquis & pero remplazara la PCB</p><p>Esto podria conducir a caracteristicas del croquis desincronizadas</p></body></html> replace PCB and keep Sketch in curr. doc - reemplazar PCB y croquis en el documento actual + Remplaza PCB y mantiene croquis en documento actual @@ -1436,7 +1415,7 @@ de configuración ini Arc or Intersection Offset method - Método de desplazamiento de arco o intersección + Metodo de arco o interseccion @@ -1464,7 +1443,7 @@ de configuración ini Create Center of Circle through 3 Vertices - Crear centro de círculo a través de 3 vértices + Crea un centro de circulo a travez de 3 vertices @@ -1481,12 +1460,8 @@ exportada a STEP como un único sólido ksu - PolyLine Contour generated - -<b>For PolyLine Pads, please add 'circles' inside each closed polyline</b><br> - Contorno polilínea generado - -<b>Para los pads polilínea, agregue 'círculos' dentro de cada polilínea cerrada</b><br> + PolyLine Contour generated<b>For PolyLine Pads, please add 'circles' inside each closed polyline</b><br> + Contorno de polilinea generada<b>For PolyLine Pads, please add 'circles' inside each closed polyline</b><br> @@ -1536,7 +1511,7 @@ exportada a STEP como un único sólido Remove 'custom' Suffix from Labels - Eliminar sufijo 'custom' de las etiquetas + Elimina sufijo 'custom' de las etiquetas @@ -1544,7 +1519,7 @@ exportada a STEP como un único sólido Remove TimeStamp from Labels - Eliminar marcas de tiempo de las etiquetas + Elimina marcas de tiempo de las etiquetas @@ -1598,7 +1573,7 @@ principal de KiCad StepUp ksu 3D object to 2D projection - KSU Objeto 3D a proyección 2D + ksu Objecto 3D a proyeccion 2D @@ -1623,9 +1598,9 @@ Nota: ¡podría ser una carga muy intensiva! ksu Add Object(s) to Container Tree keeping Placement First Selection is the Container - KSU Agregar objetos al árbol contenedor -manteniendo la ubicación -La primer selección es el contenedor + ksu Agrega objecto(s) a un contenedor de arbol +manteniendo ubicación +Primera seleccion es el contenedor @@ -1643,12 +1618,12 @@ Nota: ¡podría ser una carga muy intensiva! AlignView to Face - Alinear vista a cara + Alinea vista a la cara ksu AlignView to Face - KSU Alinear vista a cara + ksu Alinea vista a la cara @@ -1656,7 +1631,7 @@ Nota: ¡podría ser una carga muy intensiva! Manipulator tools 'Aligner' - Herramientas manipuladoras 'Alineador' + Herramientas de manipulador 'Alineador' @@ -1739,16 +1714,12 @@ Alternar sufijo tools Compare 3D models Positions - Herramientas KSU Comparar posiciones de modelos 3D + herramientas Compara posiciones de modelos 3D - ksu Compare 3D models Positions -Data with the Active Document -[MCAD Synchronize] - KSU Comparar datos de posiciones de -modelos 3D con el documento activo -[Sincronizar MCAD] + ksu Compare 3D models Positions Data with the Active Document [MCAD Synchronize] + ksu Compara datos de posiciones de modelos 3D con el documento activo [MCAD sincronizado] @@ -1761,7 +1732,7 @@ modelos 3D con el documento activo ksu Fix & auto Constrain a Sketch - KSU Reparar y restringir automáticamente un croquis + ksu repara & auto restriciones de un croquis @@ -1770,8 +1741,8 @@ modelos 3D con el documento activo ksu tools 'RF PolyLined Sketch' Selection's Shapes to PolyLine Sketch - Herramientas KSU 'Croquis de polilínea de RF' -Formas de selección a croquis de polilínea + ksu herramientas 'Croquis con polilinea RF' +Selecciona'es formas a croquis polilinea @@ -1779,12 +1750,12 @@ Formas de selección a croquis de polilínea Copy Placement 1st to 2nd - Copiar ubicación del 1.º al 2.º + Copia primera ubicacion a segunda ksu tools Copy Placement 1st to 2nd - Herramientas KSU Copiar ubicación del 1.º al 2.º + herramientas ksu copia primera ubicación a la segunda @@ -1792,16 +1763,12 @@ Formas de selección a croquis de polilínea PartDN Copy - Copia de parte DN + Copia PartDN - ksu PartDN Copy object -with relative placement -[flattened model] - KSU Objeto de copia PartDN -con colocación relativa -[modelo aplanado] + ksu PartDN Copy object with relative placement [flattened model] + ksu copia objecto PartDN con ubicacion relativa [flattened model] @@ -1809,7 +1776,7 @@ con colocación relativa Defeaturing Tools from Defeaturing WorkBench - Herramientas de eliminación de características del entorno de trabajo Defeaturing + Herramientas de decaraterizado desde el entorno de trabajo Defeaturing @@ -1834,12 +1801,8 @@ con colocación relativa - ksu Select coplanar edge(s) or Face(s) or -a single Vertex of a coplanar outline -to get a corresponding Sketch - KSU Seleccionar arista(s) coplanar(es) o cara(s) o -un único vértice de un contorno coplanar -para obtener el croquis correspondiente + ksu Select coplanar edge(s) or Face(s) or a single Vertex of a coplanar outline to get a corresponding Sketch + ksu Selecciona arista(s) coplanar o cara(s) o un simple vertize de una linea exterior coplanar para obtener una croquis correspondiente @@ -1854,10 +1817,8 @@ para obtener el croquis correspondiente ksuToolsExplode - ksu Tools PCB Explode -Select the top container of a KiCad PCB to exlode it - Heramientas KSU Explosionar PCB -Seleccione el contenedor superior de una PCB de KiCad para explosionarla + ksu Tools PCB Explode Select the top container of a KiCad PCB to explode it + Herramientas ksu Explosionar PCB Explode Selecciona el contenedor superior de una PCB de KiCad para explosionar @@ -1906,7 +1867,7 @@ Extruir la selección ksu Footprint editor and exporter - KSU Editor y exportador de huellas + ksu Editor de huellas y exportador @@ -1914,16 +1875,12 @@ Extruir la selección tools Generate 3D models Positions - Herramientas KSU Generar posiciones de modelos 3D + herramientas Generar posiciones de modelos 3D - ksu Generate 3D models Positions -Data for Active Document -[MCAD Synchronize] - KSU Generar datos de posiciones de -modelos 3D para el documento activo -[Sincronizar MCAD] + ksu Generate 3D models Positions Data for Active Document [MCAD Synchronize] + ksu Generar posiciones de modelos 3D para un documento activo [MCAD Synchronize] @@ -1982,10 +1939,8 @@ modelos 3D para el documento activo ksuToolsLoopSelection - ksu tools 'LoopSelection' -Loop selection on a xy outline - Herramientas KSU 'Selección de bucle' -Selección de bucle en un contorno XY + ksu tools 'LoopSelection'Loop selection on a xy outline + Herramientas ksu'Seleccionar bucle'seleccionar bucle sobre una linea exterior en XY @@ -1993,12 +1948,12 @@ Selección de bucle en un contorno XY Make Compound - Crear cuerpo compuesto + Crear compuesto ksu Make a Compound of selected objects - KSU Crear una composición de objetos seleccionados + ksu Crear un compuesto de los objetos seleccionados @@ -2055,7 +2010,7 @@ the mover moves things ksu Offset 2D object - KSU Desplazamiento de objeto 2D + ksu Desfasar objetos 2D @@ -2076,12 +2031,12 @@ the mover moves things Pull 3D model(s) placement from PCB - Recibir la ubicación de los modelos 3D de la PCB + Cargar ubicacion de modelo(s) 3D desde la PCB ksu Pull 3D model(s) placement from PCB - KSU Recibir la ubicación de los modelos 3D de la PCB + ksu Cargar ubicacion de modelo(s) 3D desde la PCB @@ -2089,12 +2044,12 @@ the mover moves things Pull Sketch from PCB - Recibir croquis desde PCB + Cargar croquis desde PCB ksu Pull Sketch from PCB Edge - KSU Recibir croquis desde borde de PCB + ksu Cargar croquis desde borde de PCB @@ -2102,7 +2057,7 @@ the mover moves things Push 3D moved model(s) to PCB - Enviar los modelos movidos en 3D a la PCB + Enviar modelos 3D desplazados a la PCB