diff --git a/locales/ar-SA/opencadstudio.ftl b/locales/ar-SA/opencadstudio.ftl index 506cc6a3a..29309aebe 100644 --- a/locales/ar-SA/opencadstudio.ftl +++ b/locales/ar-SA/opencadstudio.ftl @@ -4436,6 +4436,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP حدد الكائنات المراد حذفها: + .delete-objects-option = حذف الكائنات + .mvsetup-enable-paper-space = MVSETUP تمكين فضاء الورق؟ [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP أدخل معامل المقياس <1>: + .mvsetup-enter-paper-width = MVSETUP أدخل عرض الورقة: + .mvsetup-enter-paper-height = MVSETUP أدخل ارتفاع الورقة: + .mvsetup-enter-option = MVSETUP أدخل خيارًا [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP أدخل تخطيط منافذ العرض [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP حدد الزاوية الأولى لمنطقة منافذ العرض : + .mvsetup-specify-opposite-corner = MVSETUP حدد الزاوية المقابلة: + .mvsetup-viewports-in-x = MVSETUP أدخل عدد منافذ العرض في اتجاه X <2>: + .mvsetup-viewports-in-y = MVSETUP أدخل عدد منافذ العرض في اتجاه Y <2>: + .mvsetup-distance-in-x = MVSETUP حدد المسافة بين منافذ العرض في اتجاه X <0>: + .mvsetup-distance-in-y = MVSETUP حدد المسافة بين منافذ العرض في اتجاه Y <0>: + .mvsetup-select-viewports = MVSETUP حدد منافذ العرض المراد تغيير مقياسها: + .mvsetup-paper-space-units = MVSETUP أدخل عدد وحدات فضاء الورق <1>: + .mvsetup-model-space-units = MVSETUP أدخل عدد وحدات فضاء النموذج <1>: + .mvsetup-viewports-do-not-fit = MVSETUP منافذ العرض لا تتسع في المنطقة المحددة. + .scale-viewports-option = تغيير مقياس منافذ العرض .active = نشط .inactive = غير نشط .insert-view = إدراج عرض diff --git a/locales/bg-BG/opencadstudio.ftl b/locales/bg-BG/opencadstudio.ftl index 491097bb2..0e9311cba 100644 --- a/locales/bg-BG/opencadstudio.ftl +++ b/locales/bg-BG/opencadstudio.ftl @@ -4423,6 +4423,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP Изберете обектите за изтриване: + .delete-objects-option = Изтриване на обекти + .mvsetup-enable-paper-space = MVSETUP Активиране на хартиеното пространство? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP Въведете мащабен коефициент <1>: + .mvsetup-enter-paper-width = MVSETUP Въведете ширина на листа: + .mvsetup-enter-paper-height = MVSETUP Въведете височина на листа: + .mvsetup-enter-option = MVSETUP Въведете опция [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP Въведете подредба на прозорците [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP Задайте първи ъгъл на областта за прозорците : + .mvsetup-specify-opposite-corner = MVSETUP Задайте противоположен ъгъл: + .mvsetup-viewports-in-x = MVSETUP Въведете брой прозорци по X <2>: + .mvsetup-viewports-in-y = MVSETUP Въведете брой прозорци по Y <2>: + .mvsetup-distance-in-x = MVSETUP Задайте разстояние между прозорците по X <0>: + .mvsetup-distance-in-y = MVSETUP Задайте разстояние между прозорците по Y <0>: + .mvsetup-select-viewports = MVSETUP Изберете прозорците за мащабиране: + .mvsetup-paper-space-units = MVSETUP Въведете броя единици в хартиеното пространство <1>: + .mvsetup-model-space-units = MVSETUP Въведете броя единици в пространството на модела <1>: + .mvsetup-viewports-do-not-fit = MVSETUP Прозорците не се побират в областта. + .scale-viewports-option = Мащабиране на прозорците .active = Активно .inactive = Неактивно .insert-view = Вмъкни изглед diff --git a/locales/cs-CZ/opencadstudio.ftl b/locales/cs-CZ/opencadstudio.ftl index 678e9179d..776d38f4f 100644 --- a/locales/cs-CZ/opencadstudio.ftl +++ b/locales/cs-CZ/opencadstudio.ftl @@ -4421,6 +4421,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP Vyberte objekty k odstranění: + .delete-objects-option = Odstranit objekty + .mvsetup-enable-paper-space = MVSETUP Povolit výkresový prostor? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP Zadejte měřítko <1>: + .mvsetup-enter-paper-width = MVSETUP Zadejte šířku papíru: + .mvsetup-enter-paper-height = MVSETUP Zadejte výšku papíru: + .mvsetup-enter-option = MVSETUP Zadejte možnost [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP Zadejte rozvržení výřezů [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP Zadejte první roh oblasti pro výřezy : + .mvsetup-specify-opposite-corner = MVSETUP Zadejte protější roh: + .mvsetup-viewports-in-x = MVSETUP Zadejte počet výřezů ve směru X <2>: + .mvsetup-viewports-in-y = MVSETUP Zadejte počet výřezů ve směru Y <2>: + .mvsetup-distance-in-x = MVSETUP Zadejte vzdálenost mezi výřezy ve směru X <0>: + .mvsetup-distance-in-y = MVSETUP Zadejte vzdálenost mezi výřezy ve směru Y <0>: + .mvsetup-select-viewports = MVSETUP Vyberte výřezy ke změně měřítka: + .mvsetup-paper-space-units = MVSETUP Zadejte počet jednotek výkresového prostoru <1>: + .mvsetup-model-space-units = MVSETUP Zadejte počet jednotek modelového prostoru <1>: + .mvsetup-viewports-do-not-fit = MVSETUP Výřezy se do oblasti nevejdou. + .scale-viewports-option = Měřítko výřezů .active = Aktivní .inactive = Neaktivní .insert-view = Vložit pohled diff --git a/locales/de-DE/opencadstudio.ftl b/locales/de-DE/opencadstudio.ftl index b5d3e3009..4b79b2aaf 100644 --- a/locales/de-DE/opencadstudio.ftl +++ b/locales/de-DE/opencadstudio.ftl @@ -4422,6 +4422,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP Zu löschende Objekte wählen: + .delete-objects-option = Objekte löschen + .mvsetup-enable-paper-space = MVSETUP Papierbereich aktivieren? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP Skalierfaktor eingeben <1>: + .mvsetup-enter-paper-width = MVSETUP Papierbreite eingeben: + .mvsetup-enter-paper-height = MVSETUP Papierhöhe eingeben: + .mvsetup-enter-option = MVSETUP Option eingeben [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP Ansichtsfensteranordnung eingeben [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP Erste Ecke des Bereichs für Ansichtsfenster angeben : + .mvsetup-specify-opposite-corner = MVSETUP Gegenüberliegende Ecke angeben: + .mvsetup-viewports-in-x = MVSETUP Anzahl der Ansichtsfenster in X-Richtung eingeben <2>: + .mvsetup-viewports-in-y = MVSETUP Anzahl der Ansichtsfenster in Y-Richtung eingeben <2>: + .mvsetup-distance-in-x = MVSETUP Abstand zwischen Ansichtsfenstern in X-Richtung angeben <0>: + .mvsetup-distance-in-y = MVSETUP Abstand zwischen Ansichtsfenstern in Y-Richtung angeben <0>: + .mvsetup-select-viewports = MVSETUP Zu skalierende Ansichtsfenster wählen: + .mvsetup-paper-space-units = MVSETUP Anzahl der Papierbereichseinheiten eingeben <1>: + .mvsetup-model-space-units = MVSETUP Anzahl der Modellbereichseinheiten eingeben <1>: + .mvsetup-viewports-do-not-fit = MVSETUP Die Ansichtsfenster passen nicht in den Bereich. + .scale-viewports-option = Ansichtsfenster skalieren .active = Aktiv .inactive = Inaktiv .insert-view = Ansicht einfügen diff --git a/locales/el-GR/opencadstudio.ftl b/locales/el-GR/opencadstudio.ftl index 3cd9057c4..ea2c1bc31 100644 --- a/locales/el-GR/opencadstudio.ftl +++ b/locales/el-GR/opencadstudio.ftl @@ -4424,6 +4424,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP Επιλέξτε τα αντικείμενα για διαγραφή: + .delete-objects-option = Διαγραφή αντικειμένων + .mvsetup-enable-paper-space = MVSETUP Ενεργοποίηση χώρου χαρτιού; [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP Εισαγάγετε συντελεστή κλίμακας <1>: + .mvsetup-enter-paper-width = MVSETUP Εισαγάγετε πλάτος χαρτιού: + .mvsetup-enter-paper-height = MVSETUP Εισαγάγετε ύψος χαρτιού: + .mvsetup-enter-option = MVSETUP Εισαγάγετε επιλογή [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP Εισαγάγετε διάταξη παραθύρων [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP Καθορίστε πρώτη γωνία της περιοχής παραθύρων : + .mvsetup-specify-opposite-corner = MVSETUP Καθορίστε την απέναντι γωνία: + .mvsetup-viewports-in-x = MVSETUP Εισαγάγετε αριθμό παραθύρων στην κατεύθυνση X <2>: + .mvsetup-viewports-in-y = MVSETUP Εισαγάγετε αριθμό παραθύρων στην κατεύθυνση Y <2>: + .mvsetup-distance-in-x = MVSETUP Καθορίστε απόσταση μεταξύ παραθύρων στην κατεύθυνση X <0>: + .mvsetup-distance-in-y = MVSETUP Καθορίστε απόσταση μεταξύ παραθύρων στην κατεύθυνση Y <0>: + .mvsetup-select-viewports = MVSETUP Επιλέξτε τα παράθυρα για κλιμάκωση: + .mvsetup-paper-space-units = MVSETUP Εισαγάγετε αριθμό μονάδων χώρου χαρτιού <1>: + .mvsetup-model-space-units = MVSETUP Εισαγάγετε αριθμό μονάδων χώρου μοντέλου <1>: + .mvsetup-viewports-do-not-fit = MVSETUP Τα παράθυρα δεν χωρούν στην περιοχή. + .scale-viewports-option = Κλιμάκωση παραθύρων .active = Ενεργή .inactive = Ανενεργή .insert-view = Εισαγωγή προβολής diff --git a/locales/en-US/opencadstudio.ftl b/locales/en-US/opencadstudio.ftl index 47dd8e2b0..5aaf066de 100644 --- a/locales/en-US/opencadstudio.ftl +++ b/locales/en-US/opencadstudio.ftl @@ -4423,6 +4423,25 @@ model = .cube = Cube layout = + .mvsetup-select-objects-to-delete = MVSETUP Select the objects to delete: + .delete-objects-option = Delete objects + .mvsetup-enable-paper-space = MVSETUP Enable paper space? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP Enter the scale factor <1>: + .mvsetup-enter-paper-width = MVSETUP Enter the paper width: + .mvsetup-enter-paper-height = MVSETUP Enter the paper height: + .mvsetup-enter-option = MVSETUP Enter an option [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP Enter viewport layout [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP Specify first corner of bounding area for viewport(s) : + .mvsetup-specify-opposite-corner = MVSETUP Specify opposite corner: + .mvsetup-viewports-in-x = MVSETUP Enter number of viewports in X direction <2>: + .mvsetup-viewports-in-y = MVSETUP Enter number of viewports in Y direction <2>: + .mvsetup-distance-in-x = MVSETUP Specify distance between viewports in X direction <0>: + .mvsetup-distance-in-y = MVSETUP Specify distance between viewports in Y direction <0>: + .mvsetup-select-viewports = MVSETUP Select the viewports to scale: + .mvsetup-paper-space-units = MVSETUP Enter the number of paper space units <1>: + .mvsetup-model-space-units = MVSETUP Enter the number of model space units <1>: + .mvsetup-viewports-do-not-fit = MVSETUP The viewports do not fit in the bounding area. + .scale-viewports-option = Scale viewports .active = Active .inactive = Inactive .insert-view = Insert view diff --git a/locales/es-ES/opencadstudio.ftl b/locales/es-ES/opencadstudio.ftl index 5ee417586..a736af26d 100644 --- a/locales/es-ES/opencadstudio.ftl +++ b/locales/es-ES/opencadstudio.ftl @@ -4424,6 +4424,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP Seleccione los objetos que desea suprimir: + .delete-objects-option = Suprimir objetos + .mvsetup-enable-paper-space = MVSETUP ¿Activar espacio papel? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP Indique el factor de escala <1>: + .mvsetup-enter-paper-width = MVSETUP Indique la anchura del papel: + .mvsetup-enter-paper-height = MVSETUP Indique la altura del papel: + .mvsetup-enter-option = MVSETUP Indique una opción [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP Indique la disposición de ventanas [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP Precise la primera esquina del área de ventanas : + .mvsetup-specify-opposite-corner = MVSETUP Precise la esquina opuesta: + .mvsetup-viewports-in-x = MVSETUP Indique el número de ventanas en dirección X <2>: + .mvsetup-viewports-in-y = MVSETUP Indique el número de ventanas en dirección Y <2>: + .mvsetup-distance-in-x = MVSETUP Precise la distancia entre ventanas en dirección X <0>: + .mvsetup-distance-in-y = MVSETUP Precise la distancia entre ventanas en dirección Y <0>: + .mvsetup-select-viewports = MVSETUP Seleccione las ventanas que desea escalar: + .mvsetup-paper-space-units = MVSETUP Indique el número de unidades de espacio papel <1>: + .mvsetup-model-space-units = MVSETUP Indique el número de unidades de espacio modelo <1>: + .mvsetup-viewports-do-not-fit = MVSETUP Las ventanas no caben en el área. + .scale-viewports-option = Escalar ventanas .active = Activo .inactive = Inactivo .insert-view = Insertar vista diff --git a/locales/fi-FI/opencadstudio.ftl b/locales/fi-FI/opencadstudio.ftl index 9af55c14a..8965ec556 100644 --- a/locales/fi-FI/opencadstudio.ftl +++ b/locales/fi-FI/opencadstudio.ftl @@ -4423,6 +4423,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP Valitse poistettavat objektit: + .delete-objects-option = Poista objektit + .mvsetup-enable-paper-space = MVSETUP Otetaanko paperitila käyttöön? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP Anna mittakaavakerroin <1>: + .mvsetup-enter-paper-width = MVSETUP Anna paperin leveys: + .mvsetup-enter-paper-height = MVSETUP Anna paperin korkeus: + .mvsetup-enter-option = MVSETUP Anna valinta [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP Anna näkymäikkunoiden asettelu [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP Määritä näkymäikkunoiden alueen ensimmäinen kulma : + .mvsetup-specify-opposite-corner = MVSETUP Määritä vastakkainen kulma: + .mvsetup-viewports-in-x = MVSETUP Anna näkymäikkunoiden määrä X-suunnassa <2>: + .mvsetup-viewports-in-y = MVSETUP Anna näkymäikkunoiden määrä Y-suunnassa <2>: + .mvsetup-distance-in-x = MVSETUP Määritä näkymäikkunoiden väli X-suunnassa <0>: + .mvsetup-distance-in-y = MVSETUP Määritä näkymäikkunoiden väli Y-suunnassa <0>: + .mvsetup-select-viewports = MVSETUP Valitse skaalattavat näkymäikkunat: + .mvsetup-paper-space-units = MVSETUP Anna paperitilan yksiköiden määrä <1>: + .mvsetup-model-space-units = MVSETUP Anna mallitilan yksiköiden määrä <1>: + .mvsetup-viewports-do-not-fit = MVSETUP Näkymäikkunat eivät mahdu alueelle. + .scale-viewports-option = Skaalaa näkymäikkunat .active = Aktiivinen .inactive = Ei-aktiivinen .insert-view = Lisää näkymä diff --git a/locales/fr-FR/opencadstudio.ftl b/locales/fr-FR/opencadstudio.ftl index 08b0e100d..df8ae715c 100644 --- a/locales/fr-FR/opencadstudio.ftl +++ b/locales/fr-FR/opencadstudio.ftl @@ -4425,6 +4425,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP Sélectionnez les objets à supprimer : + .delete-objects-option = Supprimer des objets + .mvsetup-enable-paper-space = MVSETUP Activer l’espace papier ? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP Entrez le facteur d’échelle <1> : + .mvsetup-enter-paper-width = MVSETUP Entrez la largeur du papier : + .mvsetup-enter-paper-height = MVSETUP Entrez la hauteur du papier : + .mvsetup-enter-option = MVSETUP Entrez une option [Create/Delete objects/Scale viewports] : + .mvsetup-enter-viewport-layout = MVSETUP Entrez la disposition des fenêtres [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP Spécifiez le premier coin de la zone des fenêtres : + .mvsetup-specify-opposite-corner = MVSETUP Spécifiez le coin opposé : + .mvsetup-viewports-in-x = MVSETUP Entrez le nombre de fenêtres en X <2> : + .mvsetup-viewports-in-y = MVSETUP Entrez le nombre de fenêtres en Y <2> : + .mvsetup-distance-in-x = MVSETUP Spécifiez la distance entre les fenêtres en X <0> : + .mvsetup-distance-in-y = MVSETUP Spécifiez la distance entre les fenêtres en Y <0> : + .mvsetup-select-viewports = MVSETUP Sélectionnez les fenêtres à mettre à l’échelle : + .mvsetup-paper-space-units = MVSETUP Entrez le nombre d’unités de l’espace papier <1> : + .mvsetup-model-space-units = MVSETUP Entrez le nombre d’unités de l’espace objet <1> : + .mvsetup-viewports-do-not-fit = MVSETUP Les fenêtres ne tiennent pas dans la zone. + .scale-viewports-option = Échelle des fenêtres .active = Actif .inactive = Inactif .insert-view = Insérer une vue diff --git a/locales/hi-IN/opencadstudio.ftl b/locales/hi-IN/opencadstudio.ftl index c520b2135..b27d163e6 100644 --- a/locales/hi-IN/opencadstudio.ftl +++ b/locales/hi-IN/opencadstudio.ftl @@ -4412,6 +4412,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP हटाने के लिए ऑब्जेक्ट चुनें: + .delete-objects-option = ऑब्जेक्ट हटाएँ + .mvsetup-enable-paper-space = MVSETUP पेपर स्पेस सक्षम करें? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP स्केल फ़ैक्टर दर्ज करें <1>: + .mvsetup-enter-paper-width = MVSETUP पेपर की चौड़ाई दर्ज करें: + .mvsetup-enter-paper-height = MVSETUP पेपर की ऊँचाई दर्ज करें: + .mvsetup-enter-option = MVSETUP विकल्प दर्ज करें [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP व्यूपोर्ट लेआउट दर्ज करें [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP व्यूपोर्ट क्षेत्र का पहला कोना निर्दिष्ट करें : + .mvsetup-specify-opposite-corner = MVSETUP विपरीत कोना निर्दिष्ट करें: + .mvsetup-viewports-in-x = MVSETUP X दिशा में व्यूपोर्ट की संख्या दर्ज करें <2>: + .mvsetup-viewports-in-y = MVSETUP Y दिशा में व्यूपोर्ट की संख्या दर्ज करें <2>: + .mvsetup-distance-in-x = MVSETUP X दिशा में व्यूपोर्ट के बीच दूरी निर्दिष्ट करें <0>: + .mvsetup-distance-in-y = MVSETUP Y दिशा में व्यूपोर्ट के बीच दूरी निर्दिष्ट करें <0>: + .mvsetup-select-viewports = MVSETUP स्केल करने के लिए व्यूपोर्ट चुनें: + .mvsetup-paper-space-units = MVSETUP पेपर स्पेस इकाइयों की संख्या दर्ज करें <1>: + .mvsetup-model-space-units = MVSETUP मॉडल स्पेस इकाइयों की संख्या दर्ज करें <1>: + .mvsetup-viewports-do-not-fit = MVSETUP व्यूपोर्ट क्षेत्र में फिट नहीं होते। + .scale-viewports-option = व्यूपोर्ट स्केल करें .active = सक्रिय .inactive = निष्क्रिय .insert-view = दृश्य डालें diff --git a/locales/hu-HU/opencadstudio.ftl b/locales/hu-HU/opencadstudio.ftl index 9b40b57ca..5a1cfd97e 100644 --- a/locales/hu-HU/opencadstudio.ftl +++ b/locales/hu-HU/opencadstudio.ftl @@ -4421,6 +4421,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP Válassza ki a törlendő objektumokat: + .delete-objects-option = Objektumok törlése + .mvsetup-enable-paper-space = MVSETUP Papírtér engedélyezése? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP Adja meg a léptéktényezőt <1>: + .mvsetup-enter-paper-width = MVSETUP Adja meg a papír szélességét: + .mvsetup-enter-paper-height = MVSETUP Adja meg a papír magasságát: + .mvsetup-enter-option = MVSETUP Adja meg a lehetőséget [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP Adja meg a nézetablak-elrendezést [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP Adja meg a nézetablakok területének első sarkát : + .mvsetup-specify-opposite-corner = MVSETUP Adja meg a szemközti sarkot: + .mvsetup-viewports-in-x = MVSETUP Adja meg a nézetablakok számát X irányban <2>: + .mvsetup-viewports-in-y = MVSETUP Adja meg a nézetablakok számát Y irányban <2>: + .mvsetup-distance-in-x = MVSETUP Adja meg a nézetablakok távolságát X irányban <0>: + .mvsetup-distance-in-y = MVSETUP Adja meg a nézetablakok távolságát Y irányban <0>: + .mvsetup-select-viewports = MVSETUP Válassza ki a méretezendő nézetablakokat: + .mvsetup-paper-space-units = MVSETUP Adja meg a papírtér egységeinek számát <1>: + .mvsetup-model-space-units = MVSETUP Adja meg a modelltér egységeinek számát <1>: + .mvsetup-viewports-do-not-fit = MVSETUP A nézetablakok nem férnek el a területen. + .scale-viewports-option = Nézetablakok méretezése .active = Aktív .inactive = Inaktív .insert-view = Nézet beszúrása diff --git a/locales/it-IT/opencadstudio.ftl b/locales/it-IT/opencadstudio.ftl index b494306f2..330532d2c 100644 --- a/locales/it-IT/opencadstudio.ftl +++ b/locales/it-IT/opencadstudio.ftl @@ -4423,6 +4423,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP Selezionare gli oggetti da eliminare: + .delete-objects-option = Elimina oggetti + .mvsetup-enable-paper-space = MVSETUP Attivare lo spazio carta? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP Immettere il fattore di scala <1>: + .mvsetup-enter-paper-width = MVSETUP Immettere la larghezza del foglio: + .mvsetup-enter-paper-height = MVSETUP Immettere l'altezza del foglio: + .mvsetup-enter-option = MVSETUP Immettere un'opzione [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP Immettere la disposizione delle finestre [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP Specificare il primo angolo dell'area delle finestre : + .mvsetup-specify-opposite-corner = MVSETUP Specificare l'angolo opposto: + .mvsetup-viewports-in-x = MVSETUP Immettere il numero di finestre in direzione X <2>: + .mvsetup-viewports-in-y = MVSETUP Immettere il numero di finestre in direzione Y <2>: + .mvsetup-distance-in-x = MVSETUP Specificare la distanza tra le finestre in direzione X <0>: + .mvsetup-distance-in-y = MVSETUP Specificare la distanza tra le finestre in direzione Y <0>: + .mvsetup-select-viewports = MVSETUP Selezionare le finestre da scalare: + .mvsetup-paper-space-units = MVSETUP Immettere il numero di unità dello spazio carta <1>: + .mvsetup-model-space-units = MVSETUP Immettere il numero di unità dello spazio modello <1>: + .mvsetup-viewports-do-not-fit = MVSETUP Le finestre non entrano nell'area. + .scale-viewports-option = Scala finestre .active = Attivo .inactive = Inattivo .insert-view = Inserisci vista diff --git a/locales/ja-JP/opencadstudio.ftl b/locales/ja-JP/opencadstudio.ftl index 88381d6b0..5a03654fe 100644 --- a/locales/ja-JP/opencadstudio.ftl +++ b/locales/ja-JP/opencadstudio.ftl @@ -4412,6 +4412,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP 削除するオブジェクトを選択: + .delete-objects-option = オブジェクトを削除 + .mvsetup-enable-paper-space = MVSETUP ペーパー空間を有効にしますか? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP 尺度を入力 <1>: + .mvsetup-enter-paper-width = MVSETUP 用紙の幅を入力: + .mvsetup-enter-paper-height = MVSETUP 用紙の高さを入力: + .mvsetup-enter-option = MVSETUP オプションを入力 [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP ビューポートの配置を入力 [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP ビューポート領域の最初のコーナーを指定 : + .mvsetup-specify-opposite-corner = MVSETUP もう一方のコーナーを指定: + .mvsetup-viewports-in-x = MVSETUP X 方向のビューポート数を入力 <2>: + .mvsetup-viewports-in-y = MVSETUP Y 方向のビューポート数を入力 <2>: + .mvsetup-distance-in-x = MVSETUP X 方向のビューポート間隔を指定 <0>: + .mvsetup-distance-in-y = MVSETUP Y 方向のビューポート間隔を指定 <0>: + .mvsetup-select-viewports = MVSETUP 尺度を設定するビューポートを選択: + .mvsetup-paper-space-units = MVSETUP ペーパー空間の単位数を入力 <1>: + .mvsetup-model-space-units = MVSETUP モデル空間の単位数を入力 <1>: + .mvsetup-viewports-do-not-fit = MVSETUP ビューポートが領域に収まりません。 + .scale-viewports-option = ビューポートの尺度 .active = アクティブ .inactive = 非アクティブ .insert-view = ビューを挿入 diff --git a/locales/ko-KR/opencadstudio.ftl b/locales/ko-KR/opencadstudio.ftl index 265f722ce..34e1b6146 100644 --- a/locales/ko-KR/opencadstudio.ftl +++ b/locales/ko-KR/opencadstudio.ftl @@ -4423,6 +4423,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP 삭제할 객체 선택: + .delete-objects-option = 객체 삭제 + .mvsetup-enable-paper-space = MVSETUP 도면 공간을 사용하시겠습니까? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP 축척 비율 입력 <1>: + .mvsetup-enter-paper-width = MVSETUP 용지 폭 입력: + .mvsetup-enter-paper-height = MVSETUP 용지 높이 입력: + .mvsetup-enter-option = MVSETUP 옵션 입력 [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP 뷰포트 배치 입력 [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP 뷰포트 영역의 첫 번째 구석 지정 : + .mvsetup-specify-opposite-corner = MVSETUP 반대 구석 지정: + .mvsetup-viewports-in-x = MVSETUP X 방향 뷰포트 수 입력 <2>: + .mvsetup-viewports-in-y = MVSETUP Y 방향 뷰포트 수 입력 <2>: + .mvsetup-distance-in-x = MVSETUP X 방향 뷰포트 간 거리 지정 <0>: + .mvsetup-distance-in-y = MVSETUP Y 방향 뷰포트 간 거리 지정 <0>: + .mvsetup-select-viewports = MVSETUP 축척할 뷰포트 선택: + .mvsetup-paper-space-units = MVSETUP 도면 공간 단위 수 입력 <1>: + .mvsetup-model-space-units = MVSETUP 모형 공간 단위 수 입력 <1>: + .mvsetup-viewports-do-not-fit = MVSETUP 뷰포트가 영역에 맞지 않습니다. + .scale-viewports-option = 뷰포트 축척 .active = 활성 .inactive = 비활성 .insert-view = 삽입 뷰 diff --git a/locales/lo-LA/opencadstudio.ftl b/locales/lo-LA/opencadstudio.ftl index f419faa2a..c0320371c 100644 --- a/locales/lo-LA/opencadstudio.ftl +++ b/locales/lo-LA/opencadstudio.ftl @@ -4424,6 +4424,25 @@ model = .cube = ລູກບາດກ໌ layout = + .mvsetup-select-objects-to-delete = MVSETUP ເລືອກວັດຖຸທີ່ຈະລຶບ: + .delete-objects-option = ລຶບວັດຖຸ + .mvsetup-enable-paper-space = MVSETUP ເປີດໃຊ້ພື້ນທີ່ເຈ້ຍບໍ? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP ໃສ່ຕົວຄູນມາດຕາສ່ວນ <1>: + .mvsetup-enter-paper-width = MVSETUP ໃສ່ຄວາມກວ້າງເຈ້ຍ: + .mvsetup-enter-paper-height = MVSETUP ໃສ່ຄວາມສູງເຈ້ຍ: + .mvsetup-enter-option = MVSETUP ໃສ່ຕົວເລືອກ [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP ໃສ່ການຈັດວາງຊ່ອງມອງ [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP ກຳນົດມຸມທຳອິດຂອງພື້ນທີ່ຊ່ອງມອງ : + .mvsetup-specify-opposite-corner = MVSETUP ກຳນົດມຸມກົງກັນຂ້າມ: + .mvsetup-viewports-in-x = MVSETUP ໃສ່ຈຳນວນຊ່ອງມອງໃນທິດ X <2>: + .mvsetup-viewports-in-y = MVSETUP ໃສ່ຈຳນວນຊ່ອງມອງໃນທິດ Y <2>: + .mvsetup-distance-in-x = MVSETUP ກຳນົດໄລຍະຫ່າງລະຫວ່າງຊ່ອງມອງໃນທິດ X <0>: + .mvsetup-distance-in-y = MVSETUP ກຳນົດໄລຍະຫ່າງລະຫວ່າງຊ່ອງມອງໃນທິດ Y <0>: + .mvsetup-select-viewports = MVSETUP ເລືອກຊ່ອງມອງທີ່ຈະປັບມາດຕາສ່ວນ: + .mvsetup-paper-space-units = MVSETUP ໃສ່ຈຳນວນຫົວໜ່ວຍພື້ນທີ່ເຈ້ຍ <1>: + .mvsetup-model-space-units = MVSETUP ໃສ່ຈຳນວນຫົວໜ່ວຍພື້ນທີ່ແບບຈຳລອງ <1>: + .mvsetup-viewports-do-not-fit = MVSETUP ຊ່ອງມອງບໍ່ພໍດີກັບພື້ນທີ່. + .scale-viewports-option = ປັບມາດຕາສ່ວນຊ່ອງມອງ .active = ໃຊ້ງານຢູ່ .inactive = ບໍ່ໄດ້ໃຊ້ງານ .insert-view = ແຊກມຸມມອງ diff --git a/locales/nl-NL/opencadstudio.ftl b/locales/nl-NL/opencadstudio.ftl index 64b4faa7c..ba4b42c03 100644 --- a/locales/nl-NL/opencadstudio.ftl +++ b/locales/nl-NL/opencadstudio.ftl @@ -4422,6 +4422,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP Selecteer de te verwijderen objecten: + .delete-objects-option = Objecten verwijderen + .mvsetup-enable-paper-space = MVSETUP Papierruimte inschakelen? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP Geef schaalfactor op <1>: + .mvsetup-enter-paper-width = MVSETUP Geef papierbreedte op: + .mvsetup-enter-paper-height = MVSETUP Geef papierhoogte op: + .mvsetup-enter-option = MVSETUP Geef optie op [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP Geef viewportindeling op [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP Geef eerste hoek van het viewportgebied op : + .mvsetup-specify-opposite-corner = MVSETUP Geef tegenoverliggende hoek op: + .mvsetup-viewports-in-x = MVSETUP Geef aantal viewports in X-richting op <2>: + .mvsetup-viewports-in-y = MVSETUP Geef aantal viewports in Y-richting op <2>: + .mvsetup-distance-in-x = MVSETUP Geef afstand tussen viewports in X-richting op <0>: + .mvsetup-distance-in-y = MVSETUP Geef afstand tussen viewports in Y-richting op <0>: + .mvsetup-select-viewports = MVSETUP Selecteer de te schalen viewports: + .mvsetup-paper-space-units = MVSETUP Geef aantal papierruimte-eenheden op <1>: + .mvsetup-model-space-units = MVSETUP Geef aantal modelruimte-eenheden op <1>: + .mvsetup-viewports-do-not-fit = MVSETUP De viewports passen niet in het gebied. + .scale-viewports-option = Viewports schalen .active = Actief .inactive = Inactief .insert-view = Beeld invoegen diff --git a/locales/pl-PL/opencadstudio.ftl b/locales/pl-PL/opencadstudio.ftl index e0c88c3a4..5bff69231 100644 --- a/locales/pl-PL/opencadstudio.ftl +++ b/locales/pl-PL/opencadstudio.ftl @@ -4423,6 +4423,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP Wybierz obiekty do usunięcia: + .delete-objects-option = Usuń obiekty + .mvsetup-enable-paper-space = MVSETUP Włączyć obszar papieru? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP Podaj współczynnik skali <1>: + .mvsetup-enter-paper-width = MVSETUP Podaj szerokość papieru: + .mvsetup-enter-paper-height = MVSETUP Podaj wysokość papieru: + .mvsetup-enter-option = MVSETUP Podaj opcję [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP Podaj układ rzutni [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP Określ pierwszy narożnik obszaru rzutni : + .mvsetup-specify-opposite-corner = MVSETUP Określ przeciwległy narożnik: + .mvsetup-viewports-in-x = MVSETUP Podaj liczbę rzutni w kierunku X <2>: + .mvsetup-viewports-in-y = MVSETUP Podaj liczbę rzutni w kierunku Y <2>: + .mvsetup-distance-in-x = MVSETUP Określ odstęp między rzutniami w kierunku X <0>: + .mvsetup-distance-in-y = MVSETUP Określ odstęp między rzutniami w kierunku Y <0>: + .mvsetup-select-viewports = MVSETUP Wybierz rzutnie do skalowania: + .mvsetup-paper-space-units = MVSETUP Podaj liczbę jednostek obszaru papieru <1>: + .mvsetup-model-space-units = MVSETUP Podaj liczbę jednostek obszaru modelu <1>: + .mvsetup-viewports-do-not-fit = MVSETUP Rzutnie nie mieszczą się w obszarze. + .scale-viewports-option = Skaluj rzutnie .active = Aktywny .inactive = Nieaktywny .insert-view = Wstaw widok diff --git a/locales/pt-BR/opencadstudio.ftl b/locales/pt-BR/opencadstudio.ftl index 18d9cd8cd..2fbe84c78 100644 --- a/locales/pt-BR/opencadstudio.ftl +++ b/locales/pt-BR/opencadstudio.ftl @@ -4424,6 +4424,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP Selecione os objetos a excluir: + .delete-objects-option = Excluir objetos + .mvsetup-enable-paper-space = MVSETUP Ativar espaço do papel? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP Informe o fator de escala <1>: + .mvsetup-enter-paper-width = MVSETUP Informe a largura do papel: + .mvsetup-enter-paper-height = MVSETUP Informe a altura do papel: + .mvsetup-enter-option = MVSETUP Informe uma opção [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP Informe o arranjo das janelas [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP Especifique o primeiro canto da área das janelas : + .mvsetup-specify-opposite-corner = MVSETUP Especifique o canto oposto: + .mvsetup-viewports-in-x = MVSETUP Informe o número de janelas na direção X <2>: + .mvsetup-viewports-in-y = MVSETUP Informe o número de janelas na direção Y <2>: + .mvsetup-distance-in-x = MVSETUP Especifique a distância entre janelas na direção X <0>: + .mvsetup-distance-in-y = MVSETUP Especifique a distância entre janelas na direção Y <0>: + .mvsetup-select-viewports = MVSETUP Selecione as janelas a escalar: + .mvsetup-paper-space-units = MVSETUP Informe o número de unidades do espaço do papel <1>: + .mvsetup-model-space-units = MVSETUP Informe o número de unidades do espaço do modelo <1>: + .mvsetup-viewports-do-not-fit = MVSETUP As janelas não cabem na área. + .scale-viewports-option = Escalar janelas .active = Ativo .inactive = Inativo .insert-view = Inserir vista diff --git a/locales/ru-RU/opencadstudio.ftl b/locales/ru-RU/opencadstudio.ftl index df43b135a..5a3b3eec2 100644 --- a/locales/ru-RU/opencadstudio.ftl +++ b/locales/ru-RU/opencadstudio.ftl @@ -4425,6 +4425,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP Выберите объекты для удаления: + .delete-objects-option = Удалить объекты + .mvsetup-enable-paper-space = MVSETUP Включить пространство листа? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP Введите масштабный коэффициент <1>: + .mvsetup-enter-paper-width = MVSETUP Введите ширину листа: + .mvsetup-enter-paper-height = MVSETUP Введите высоту листа: + .mvsetup-enter-option = MVSETUP Задайте параметр [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP Задайте компоновку видовых экранов [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP Укажите первый угол области видовых экранов : + .mvsetup-specify-opposite-corner = MVSETUP Укажите противоположный угол: + .mvsetup-viewports-in-x = MVSETUP Введите число видовых экранов по X <2>: + .mvsetup-viewports-in-y = MVSETUP Введите число видовых экранов по Y <2>: + .mvsetup-distance-in-x = MVSETUP Укажите расстояние между видовыми экранами по X <0>: + .mvsetup-distance-in-y = MVSETUP Укажите расстояние между видовыми экранами по Y <0>: + .mvsetup-select-viewports = MVSETUP Выберите видовые экраны для масштабирования: + .mvsetup-paper-space-units = MVSETUP Введите число единиц пространства листа <1>: + .mvsetup-model-space-units = MVSETUP Введите число единиц пространства модели <1>: + .mvsetup-viewports-do-not-fit = MVSETUP Видовые экраны не помещаются в области. + .scale-viewports-option = Масштаб видовых экранов .active = Включён .inactive = неактивный .insert-view = Включить вид diff --git a/locales/tr-TR/opencadstudio.ftl b/locales/tr-TR/opencadstudio.ftl index 83e54cc6a..131d2af77 100644 --- a/locales/tr-TR/opencadstudio.ftl +++ b/locales/tr-TR/opencadstudio.ftl @@ -4382,6 +4382,25 @@ model = .cube = Küp layout = + .mvsetup-select-objects-to-delete = MVSETUP Silinecek nesneleri seçin: + .delete-objects-option = Nesneleri sil + .mvsetup-enable-paper-space = MVSETUP Kâğıt alanı etkinleştirilsin mi? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP Ölçek faktörünü girin <1>: + .mvsetup-enter-paper-width = MVSETUP Kâğıt genişliğini girin: + .mvsetup-enter-paper-height = MVSETUP Kâğıt yüksekliğini girin: + .mvsetup-enter-option = MVSETUP Seçenek girin [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP Görünüm penceresi düzenini girin [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP Görünüm pencereleri alanının ilk köşesini belirtin : + .mvsetup-specify-opposite-corner = MVSETUP Karşı köşeyi belirtin: + .mvsetup-viewports-in-x = MVSETUP X yönündeki görünüm penceresi sayısını girin <2>: + .mvsetup-viewports-in-y = MVSETUP Y yönündeki görünüm penceresi sayısını girin <2>: + .mvsetup-distance-in-x = MVSETUP X yönünde görünüm pencereleri arasındaki mesafeyi belirtin <0>: + .mvsetup-distance-in-y = MVSETUP Y yönünde görünüm pencereleri arasındaki mesafeyi belirtin <0>: + .mvsetup-select-viewports = MVSETUP Ölçeklenecek görünüm pencerelerini seçin: + .mvsetup-paper-space-units = MVSETUP Kâğıt alanı birim sayısını girin <1>: + .mvsetup-model-space-units = MVSETUP Model alanı birim sayısını girin <1>: + .mvsetup-viewports-do-not-fit = MVSETUP Görünüm pencereleri alana sığmıyor. + .scale-viewports-option = Görünüm pencerelerini ölçekle .active = Etkin .inactive = Etkin Değil .insert-view = Görünüm Ekle diff --git a/locales/zh-CN/opencadstudio.ftl b/locales/zh-CN/opencadstudio.ftl index 373580f22..ae45b0d03 100644 --- a/locales/zh-CN/opencadstudio.ftl +++ b/locales/zh-CN/opencadstudio.ftl @@ -4407,6 +4407,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP 选择要删除的对象: + .delete-objects-option = 删除对象 + .mvsetup-enable-paper-space = MVSETUP 启用图纸空间? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP 输入比例因子 <1>: + .mvsetup-enter-paper-width = MVSETUP 输入图纸宽度: + .mvsetup-enter-paper-height = MVSETUP 输入图纸高度: + .mvsetup-enter-option = MVSETUP 输入选项 [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP 输入视口布局 [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP 指定视口区域的第一个角点 : + .mvsetup-specify-opposite-corner = MVSETUP 指定对角点: + .mvsetup-viewports-in-x = MVSETUP 输入 X 方向的视口数 <2>: + .mvsetup-viewports-in-y = MVSETUP 输入 Y 方向的视口数 <2>: + .mvsetup-distance-in-x = MVSETUP 指定 X 方向的视口间距 <0>: + .mvsetup-distance-in-y = MVSETUP 指定 Y 方向的视口间距 <0>: + .mvsetup-select-viewports = MVSETUP 选择要缩放的视口: + .mvsetup-paper-space-units = MVSETUP 输入图纸空间单位数 <1>: + .mvsetup-model-space-units = MVSETUP 输入模型空间单位数 <1>: + .mvsetup-viewports-do-not-fit = MVSETUP 视口无法放入该区域。 + .scale-viewports-option = 缩放视口 .active = 激活 .inactive = 不活动 .insert-view = 插入视图 diff --git a/locales/zh-TW/opencadstudio.ftl b/locales/zh-TW/opencadstudio.ftl index fe9ae1a53..62df4ca51 100644 --- a/locales/zh-TW/opencadstudio.ftl +++ b/locales/zh-TW/opencadstudio.ftl @@ -4419,6 +4419,25 @@ model = layout = + .mvsetup-select-objects-to-delete = MVSETUP 選擇要刪除的物件: + .delete-objects-option = 刪除物件 + .mvsetup-enable-paper-space = MVSETUP 啟用圖紙空間? [No/Yes] : + .mvsetup-enter-scale-factor = MVSETUP 輸入比例係數 <1>: + .mvsetup-enter-paper-width = MVSETUP 輸入圖紙寬度: + .mvsetup-enter-paper-height = MVSETUP 輸入圖紙高度: + .mvsetup-enter-option = MVSETUP 輸入選項 [Create/Delete objects/Scale viewports]: + .mvsetup-enter-viewport-layout = MVSETUP 輸入視埠配置 [Single/Engineering/Array] : + .mvsetup-specify-first-corner = MVSETUP 指定視埠區域的第一個角點 : + .mvsetup-specify-opposite-corner = MVSETUP 指定對角點: + .mvsetup-viewports-in-x = MVSETUP 輸入 X 方向的視埠數 <2>: + .mvsetup-viewports-in-y = MVSETUP 輸入 Y 方向的視埠數 <2>: + .mvsetup-distance-in-x = MVSETUP 指定 X 方向的視埠間距 <0>: + .mvsetup-distance-in-y = MVSETUP 指定 Y 方向的視埠間距 <0>: + .mvsetup-select-viewports = MVSETUP 選擇要縮放的視埠: + .mvsetup-paper-space-units = MVSETUP 輸入圖紙空間單位數 <1>: + .mvsetup-model-space-units = MVSETUP 輸入模型空間單位數 <1>: + .mvsetup-viewports-do-not-fit = MVSETUP 視埠無法放入該區域。 + .scale-viewports-option = 縮放視埠 .active = 激活 .inactive = 不活動 .insert-view = 插入視圖 diff --git a/src/app/command_driver/mod.rs b/src/app/command_driver/mod.rs index 5f28a6a94..5a7580e02 100644 --- a/src/app/command_driver/mod.rs +++ b/src/app/command_driver/mod.rs @@ -882,6 +882,13 @@ impl OpenCADStudio { CmdResult::ZoomToWindow { p1, p2 } => { self.handle_zoom_to_window(p1, p2); } + CmdResult::CommitAndZoom { entity, p1, p2 } => { + self.handle_commit_entities_and_exit(vec![entity], false, false); + self.handle_zoom_to_window(p1, p2); + } + CmdResult::ScaleViewports { handles, factor } => { + self.handle_scale_viewports(handles, factor); + } CmdResult::TwistView(twist) => { self.handle_twist_view(twist); } diff --git a/src/app/command_driver/viewport.rs b/src/app/command_driver/viewport.rs index 025a38d4b..05c5bfb5c 100644 --- a/src/app/command_driver/viewport.rs +++ b/src/app/command_driver/viewport.rs @@ -447,6 +447,33 @@ impl OpenCADStudio { .push_output(crate::t!("Zoom Window").as_ref()); } + /// MVSETUP Scale viewports: each picked layout viewport shows the model + /// at `factor` paper units per model unit. One undo step. + pub(in crate::app) fn handle_scale_viewports(&mut self, handles: Vec, factor: f64) { + let i = self.active_tab; + self.tabs[i].active_cmd = None; + self.tabs[i].snap_result = None; + let handles: Vec = handles + .into_iter() + .filter(|handle| { + matches!( + self.tabs[i].scene.document.get_entity(*handle), + Some(codec::EntityType::Viewport(viewport)) if viewport.id > 1 + ) + }) + .collect(); + if handles.is_empty() { + return; + } + self.push_undo_snapshot(i, "MVSETUP"); + for handle in handles { + self.tabs[i] + .scene + .set_viewport_scale_factor_for(handle, factor); + } + self.tabs[i].dirty = true; + } + /// Turn the active view about its line of sight so the drawing shows /// `twist` radians counter-clockwise from its untwisted orientation. pub(in crate::app) fn handle_twist_view(&mut self, twist: f64) { diff --git a/src/app/commands/view.rs b/src/app/commands/view.rs index 97ba45e33..42740de6e 100644 --- a/src/app/commands/view.rs +++ b/src/app/commands/view.rs @@ -647,6 +647,34 @@ impl OpenCADStudio { } } + // MVSETUP — sheet border in model space, viewports on a layout. + "MVSETUP" => { + let scene = &mut self.tabs[i].scene; + let target = (scene.current_layout == "Model").then(|| { + scene + .layout_names() + .into_iter() + .find(|name| name != "Model") + .unwrap_or_else(|| "Layout1".to_string()) + }); + // The sheet MVSETUP lays viewports out on: the layout it + // switches to from model space, or the current one. + let current = target + .clone() + .map(|name| std::mem::replace(&mut scene.current_layout, name)); + let paper_bounds = scene + .printable_area_limits() + .or_else(|| scene.paper_limits()) + .unwrap_or(((0.0, 0.0), (297.0, 210.0))); + if let Some(current) = current { + scene.current_layout = current; + } + use crate::modules::layout::mvsetup::MvsetupCommand; + let command = MvsetupCommand::new(target, paper_bounds); + self.command_line.push_info(&command.prompt()); + self.tabs[i].active_cmd = Some(Box::new(command)); + } + // ── MSPACE / PSPACE ─────────────────────────────────────────── "MSPACE" => { return Some(Task::done(Message::MspaceCommand)); diff --git a/src/app/update/viewport.rs b/src/app/update/viewport.rs index f685696ef..4782dba1a 100644 --- a/src/app/update/viewport.rs +++ b/src/app/update/viewport.rs @@ -6445,10 +6445,10 @@ properties={:.1}ms picked={}", && self.tabs[i] .active_cmd .as_ref() - .is_some_and(|command| command.name() == "MVIEW"); + .is_some_and(|command| matches!(command.name(), "MVIEW" | "MVSETUP")); if context_changed { if preserve_active_command { - // MVIEW keeps its command-owned step data, but all host-owned + // MVIEW and MVSETUP keep their step data, but all host-owned // cursor/snap/dynamic-input state belongs to the old space. self.reset_space_interaction_state(); } diff --git a/src/command.rs b/src/command.rs index adb883d84..a7a24d303 100644 --- a/src/command.rs +++ b/src/command.rs @@ -1943,6 +1943,18 @@ pub enum CmdResult { p1: DVec3, p2: DVec3, }, + /// Commit `entity`, then zoom to the given corner points; end command. + CommitAndZoom { + entity: EntityType, + p1: DVec3, + p2: DVec3, + }, + /// Scale the given layout viewports to `factor` paper units per model + /// unit; end command. + ScaleViewports { + handles: Vec, + factor: f64, + }, /// Print a measurement result to the command line and end the command. Measurement(String), /// Print a measurement result and keep the command active. diff --git a/src/locale_catalog.rs b/src/locale_catalog.rs index 62719b52e..6647f6f77 100644 --- a/src/locale_catalog.rs +++ b/src/locale_catalog.rs @@ -2089,6 +2089,25 @@ pub(super) fn message_attribute(source: &str) -> Option<(&'static str, &'static "MText" => Some(("common", "mtext")), "MVIEW Specify corner of viewport or [Polygonal/Object/Fit/Insert view]:" => Some(("layout", "mview-specify-corner-of-viewport-or-polygonal")), "MVIEW Specify opposite corner:" => Some(("layout", "mview-specify-opposite-corner")), + "MVSETUP Enable paper space? [No/Yes] :" => Some(("layout", "mvsetup-enable-paper-space")), + "MVSETUP Enter the scale factor <1>:" => Some(("layout", "mvsetup-enter-scale-factor")), + "MVSETUP Enter the paper width:" => Some(("layout", "mvsetup-enter-paper-width")), + "MVSETUP Enter the paper height:" => Some(("layout", "mvsetup-enter-paper-height")), + "MVSETUP Enter an option [Create/Delete objects/Scale viewports]:" => Some(("layout", "mvsetup-enter-option")), + "MVSETUP Select the objects to delete:" => Some(("layout", "mvsetup-select-objects-to-delete")), + "Delete objects" => Some(("layout", "delete-objects-option")), + "MVSETUP Enter viewport layout [Single/Engineering/Array] :" => Some(("layout", "mvsetup-enter-viewport-layout")), + "MVSETUP Specify first corner of bounding area for viewport(s) :" => Some(("layout", "mvsetup-specify-first-corner")), + "MVSETUP Specify opposite corner:" => Some(("layout", "mvsetup-specify-opposite-corner")), + "MVSETUP Enter number of viewports in X direction <2>:" => Some(("layout", "mvsetup-viewports-in-x")), + "MVSETUP Enter number of viewports in Y direction <2>:" => Some(("layout", "mvsetup-viewports-in-y")), + "MVSETUP Specify distance between viewports in X direction <0>:" => Some(("layout", "mvsetup-distance-in-x")), + "MVSETUP Specify distance between viewports in Y direction <0>:" => Some(("layout", "mvsetup-distance-in-y")), + "MVSETUP Select the viewports to scale:" => Some(("layout", "mvsetup-select-viewports")), + "MVSETUP Enter the number of paper space units <1>:" => Some(("layout", "mvsetup-paper-space-units")), + "MVSETUP Enter the number of model space units <1>:" => Some(("layout", "mvsetup-model-space-units")), + "MVSETUP The viewports do not fit in the bounding area." => Some(("layout", "mvsetup-viewports-do-not-fit")), + "Scale viewports" => Some(("layout", "scale-viewports-option")), "MVIEW Insert view Choose a named view or [New]:" => Some(("layout", "mview-insert-view-choose-a-named-view-or-new")), "MVIEW Insert view No named views; choose [New]:" => Some(("layout", "mview-insert-view-no-named-views-choose-new")), "MVIEW Insert view Specify placement point:" => Some(("layout", "mview-insert-view-specify-placement-point")), diff --git a/src/modules/layout/mod.rs b/src/modules/layout/mod.rs index 699fdc5b4..eb1d6d2db 100644 --- a/src/modules/layout/mod.rs +++ b/src/modules/layout/mod.rs @@ -2,6 +2,7 @@ // This tab is only shown when the active layout is not "Model". pub mod mview; +pub mod mvsetup; pub mod vplayer; use crate::modules::{CadModule, IconKind, ModuleEvent, RibbonGroup, ToolDef}; diff --git a/src/modules/layout/mvsetup.rs b/src/modules/layout/mvsetup.rs new file mode 100644 index 000000000..724b12089 --- /dev/null +++ b/src/modules/layout/mvsetup.rs @@ -0,0 +1,374 @@ +// MVSETUP — set a drawing up for plotting. +// +// In model space without paper space it draws the sheet border at the +// drawing scale: +// Enable paper space? [No/Yes] : +// Enter the scale factor <1>: +// Enter the paper width: +// Enter the paper height: +// On a layout it lays out viewports or scales them: +// Enter an option [Create/Delete objects/Scale viewports]: +// Enter viewport layout [Single/Engineering/Array] : +// Specify first corner of bounding area for viewport(s) : +// Specify opposite corner: +// Enter number of viewports in X direction <2>: (Array) +// Enter number of viewports in Y direction <2>: (Array) +// Specify distance between viewports in X direction <0>: +// Specify distance between viewports in Y direction <0>: +// Select the objects to delete: +// Select the viewports to scale: +// Enter the number of paper space units <1>: +// Enter the number of model space units <1>: + +use crate::t; +use codec::entities::{LwPolyline, LwVertex, Viewport}; +use codec::types::{Vector2, Vector3}; +use codec::{EntityType, Handle}; +use glam::{DVec2, DVec3}; + +use crate::command::{CadCommand, CmdOption, CmdResult}; + +#[derive(Clone, Copy, PartialEq)] +enum Step { + PaperSpace, + Scale, + Width, + Height, + Option, + Arrangement, + FirstCorner, + SecondCorner, + Columns, + Rows, + GapX, + GapY, + Delete, + Viewports, + PaperUnits, + ModelUnits, +} + +#[derive(Clone, Copy, PartialEq)] +enum Arrangement { + Single, + Engineering, + Array, +} + +pub struct MvsetupCommand { + step: Step, + /// The layout model space switches to when paper space is enabled. + layout: String, + paper_bounds: ((f64, f64), (f64, f64)), + scale: f64, + width: f64, + arrangement: Arrangement, + first: DVec2, + area: (DVec2, DVec2), + columns: u32, + rows: u32, + gap_x: f64, + picked: Vec, + paper_units: f64, +} + +impl MvsetupCommand { + /// `layout` is `None` on a layout, or the layout to switch to from model + /// space; `paper_bounds` is the sheet's printable area. + pub fn new(layout: Option, paper_bounds: ((f64, f64), (f64, f64))) -> Self { + Self { + step: if layout.is_some() { + Step::PaperSpace + } else { + Step::Option + }, + layout: layout.unwrap_or_default(), + paper_bounds, + scale: 1.0, + width: 0.0, + arrangement: Arrangement::Single, + first: DVec2::ZERO, + area: (DVec2::ZERO, DVec2::ZERO), + columns: 2, + rows: 2, + gap_x: 0.0, + picked: Vec::new(), + paper_units: 1.0, + } + } + + fn after_area(&mut self) -> CmdResult { + self.step = match self.arrangement { + Arrangement::Single => return self.create(0.0), + Arrangement::Engineering => Step::GapX, + Arrangement::Array => Step::Columns, + }; + CmdResult::NeedPoint + } + + /// The viewports of the chosen arrangement, `gap_y` apart vertically. + fn create(&self, gap_y: f64) -> CmdResult { + let (columns, rows, gap_x) = match self.arrangement { + Arrangement::Single => (1, 1, 0.0), + Arrangement::Engineering => (2, 2, self.gap_x), + Arrangement::Array => (self.columns, self.rows, self.gap_x), + }; + let (min, max) = self.area; + let width = (max.x - min.x - gap_x * (columns - 1) as f64) / columns as f64; + let height = (max.y - min.y - gap_y * (rows - 1) as f64) / rows as f64; + if width <= 1e-6 || height <= 1e-6 { + return CmdResult::ReportError( + t!("MVSETUP The viewports do not fit in the bounding area.").into_owned(), + ); + } + // Engineering: top view over front view, right view beside it, and + // an isometric view in the remaining corner. + let directions = [ + Vector3::new(0.0, 0.0, 1.0), + Vector3::new(1.0, -1.0, 1.0), + Vector3::new(0.0, -1.0, 0.0), + Vector3::new(1.0, 0.0, 0.0), + ]; + let mut viewports = Vec::new(); + for row in 0..rows { + for column in 0..columns { + let mut viewport = Viewport::new(); + viewport.center = Vector3::new( + min.x + column as f64 * (width + gap_x) + width / 2.0, + max.y - row as f64 * (height + gap_y) - height / 2.0, + 0.0, + ); + viewport.width = width; + viewport.height = height; + viewport.id = 2; + if self.arrangement == Arrangement::Engineering { + viewport.view_direction = directions[(row * 2 + column) as usize].clone(); + } + viewports.push(EntityType::Viewport(viewport)); + } + } + CmdResult::CommitEntitiesAndExit(viewports) + } + + fn sheet_border(&self, height: f64) -> CmdResult { + let (width, height) = (self.width * self.scale, height * self.scale); + let mut border = LwPolyline::new(); + border.is_closed = true; + border.vertices = [(0.0, 0.0), (width, 0.0), (width, height), (0.0, height)] + .into_iter() + .map(|(x, y)| LwVertex::new(Vector2::new(x, y))) + .collect(); + CmdResult::CommitAndZoom { + entity: EntityType::LwPolyline(border), + p1: DVec3::ZERO, + p2: DVec3::new(width, height, 0.0), + } + } +} + +/// A positive number, or `default` for an empty answer. +fn positive(text: &str, default: f64) -> Option { + if text.is_empty() { + return Some(default); + } + crate::entities::common::parse_typed_length(text).filter(|value| *value > 0.0) +} + +impl CadCommand for MvsetupCommand { + fn name(&self) -> &'static str { + "MVSETUP" + } + + fn prompt(&self) -> String { + t!(match self.step { + Step::PaperSpace => "MVSETUP Enable paper space? [No/Yes] :", + Step::Scale => "MVSETUP Enter the scale factor <1>:", + Step::Width => "MVSETUP Enter the paper width:", + Step::Height => "MVSETUP Enter the paper height:", + Step::Option => "MVSETUP Enter an option [Create/Delete objects/Scale viewports]:", + Step::Arrangement => { + "MVSETUP Enter viewport layout [Single/Engineering/Array] :" + } + Step::FirstCorner => { + "MVSETUP Specify first corner of bounding area for viewport(s) :" + } + Step::SecondCorner => "MVSETUP Specify opposite corner:", + Step::Columns => "MVSETUP Enter number of viewports in X direction <2>:", + Step::Rows => "MVSETUP Enter number of viewports in Y direction <2>:", + Step::GapX => "MVSETUP Specify distance between viewports in X direction <0>:", + Step::GapY => "MVSETUP Specify distance between viewports in Y direction <0>:", + Step::Delete => "MVSETUP Select the objects to delete:", + Step::Viewports => "MVSETUP Select the viewports to scale:", + Step::PaperUnits => "MVSETUP Enter the number of paper space units <1>:", + Step::ModelUnits => "MVSETUP Enter the number of model space units <1>:", + }) + .into_owned() + } + + fn options(&self) -> Vec { + match self.step { + Step::PaperSpace => vec![CmdOption::new("No", "N"), CmdOption::new("Yes", "Y")], + Step::Option => vec![ + CmdOption::new("Create", "C"), + CmdOption::new("Delete objects", "D"), + CmdOption::new("Scale viewports", "S"), + ], + Step::Arrangement => vec![ + CmdOption::new("Single", "S"), + CmdOption::new("Engineering", "E"), + CmdOption::new("Array", "A"), + ], + _ => Vec::new(), + } + } + + fn wants_text_input(&self) -> bool { + !matches!(self.step, Step::Delete | Step::Viewports) + } + + fn needs_entity_pick(&self) -> bool { + matches!(self.step, Step::Delete | Step::Viewports) + } + + fn entity_pick_highlights_hover(&self) -> bool { + true + } + + fn on_entity_pick(&mut self, handle: Handle, _pt: DVec3) -> CmdResult { + if !handle.is_null() && !self.picked.contains(&handle) { + self.picked.push(handle); + } + CmdResult::NeedPoint + } + + fn on_text_input(&mut self, text: &str) -> Option { + let text = text.trim(); + let word = text.trim_start_matches('_').to_ascii_uppercase(); + match self.step { + Step::PaperSpace => match word.as_str() { + "N" | "NO" => self.step = Step::Scale, + "" | "Y" | "YES" => { + self.step = Step::Option; + return Some(CmdResult::MviewSwitchLayout(self.layout.clone())); + } + _ => return None, + }, + Step::Scale => { + self.scale = positive(text, 1.0)?; + self.step = Step::Width; + } + Step::Width => { + self.width = positive(text, f64::NAN).filter(|value| value.is_finite())?; + self.step = Step::Height; + } + Step::Height => { + let height = positive(text, f64::NAN).filter(|value| value.is_finite())?; + return Some(self.sheet_border(height)); + } + Step::Option => match word.as_str() { + "C" | "CREATE" => self.step = Step::Arrangement, + "D" | "DELETE" => self.step = Step::Delete, + "S" | "SCALE" => self.step = Step::Viewports, + _ => return None, + }, + Step::Arrangement => { + self.arrangement = match word.as_str() { + "" | "S" | "SINGLE" | "1" => Arrangement::Single, + "E" | "ENGINEERING" | "2" => Arrangement::Engineering, + "A" | "ARRAY" | "3" => Arrangement::Array, + _ => return None, + }; + self.step = Step::FirstCorner; + } + Step::FirstCorner if text.is_empty() => { + let ((x0, y0), (x1, y1)) = self.paper_bounds; + self.area = ( + DVec2::new(x0.min(x1), y0.min(y1)), + DVec2::new(x0.max(x1), y0.max(y1)), + ); + return Some(self.after_area()); + } + Step::Columns | Step::Rows => { + let count = if text.is_empty() { + 2 + } else { + text.parse::().ok().filter(|count| (1..=100).contains(count))? + }; + if self.step == Step::Columns { + self.columns = count; + self.step = Step::Rows; + } else { + self.rows = count; + self.step = Step::GapX; + } + } + Step::GapX | Step::GapY => { + let gap = if text.is_empty() { + 0.0 + } else { + crate::entities::common::parse_typed_length(text).filter(|v| *v >= 0.0)? + }; + if self.step == Step::GapY { + return Some(self.create(gap)); + } + self.gap_x = gap; + self.step = Step::GapY; + } + Step::PaperUnits => { + self.paper_units = positive(text, 1.0)?; + self.step = Step::ModelUnits; + } + Step::ModelUnits => { + let model_units = positive(text, 1.0)?; + return Some(CmdResult::ScaleViewports { + handles: std::mem::take(&mut self.picked), + factor: self.paper_units / model_units, + }); + } + Step::FirstCorner | Step::SecondCorner | Step::Delete | Step::Viewports => { + return None + } + } + Some(CmdResult::NeedPoint) + } + + fn on_point(&mut self, pt: DVec3) -> CmdResult { + match self.step { + Step::FirstCorner => { + self.first = pt.truncate(); + self.step = Step::SecondCorner; + CmdResult::NeedPoint + } + Step::SecondCorner => { + let second = pt.truncate(); + self.area = (self.first.min(second), self.first.max(second)); + self.after_area() + } + _ => CmdResult::NeedPoint, + } + } + + fn on_enter(&mut self) -> CmdResult { + match self.step { + Step::Delete => { + self.step = Step::Option; + let erased = std::mem::take(&mut self.picked); + if erased.is_empty() { + return CmdResult::NeedPoint; + } + CmdResult::ReplaceManyContinue( + erased.into_iter().map(|handle| (handle, Vec::new())).collect(), + ) + } + Step::Viewports if self.picked.is_empty() => CmdResult::Cancel, + Step::Viewports => { + self.step = Step::PaperUnits; + CmdResult::NeedPoint + } + Step::Option | Step::Width | Step::Height | Step::SecondCorner => CmdResult::Cancel, + _ => self.on_text_input("").unwrap_or(CmdResult::NeedPoint), + } + } +} + +inventory::submit!(crate::command::CommandRegistration { names: &["MVSETUP"] }); diff --git a/src/scene/mod.rs b/src/scene/mod.rs index b7604f004..42256cccb 100644 --- a/src/scene/mod.rs +++ b/src/scene/mod.rs @@ -6656,6 +6656,12 @@ impl Scene { let Some(viewport) = self.explicit_viewport_handle() else { return false; }; + self.set_viewport_scale_factor_for(viewport, factor) + } + + /// Scale `viewport` to `factor` paper units per model unit, as + /// [`Self::set_viewport_scale_factor`] does for the active one. + pub fn set_viewport_scale_factor_for(&mut self, viewport: Handle, factor: f64) -> bool { let unit_factor = self.annotation_scale_unit_factor(); let named = self .document @@ -12990,22 +12996,49 @@ vis_index={:.1} visible_probe={:.1}", Some(e) => e, None => return, }; + let (min, max) = (min.as_dvec3(), max.as_dvec3()); let center = (min + max) * 0.5; - let content_w = (max.x - min.x).max(1e-3); - let content_h = (max.y - min.y).max(1e-3); let vp = match self.document.get_entity_mut(vp_handle) { Some(codec::EntityType::Viewport(vp)) => vp, _ => return, }; - // Set the view target to the model-space centroid (XY plane, z=0). - vp.view_target.x = center.x as f64; - vp.view_target.y = center.y as f64; - vp.view_target.z = 0.0; + let direction = glam::DVec3::new( + vp.view_direction.x, + vp.view_direction.y, + vp.view_direction.z, + ) + .normalize_or(glam::DVec3::Z); + // The extents box as seen along the view direction: its span across + // the view's right and up axes. Looking down Z that is its X/Y size. + let right = glam::DVec3::Z.cross(direction).normalize_or(glam::DVec3::X); + let up = direction.cross(right); + let (mut span_right, mut span_up) = ((f64::MAX, f64::MIN), (f64::MAX, f64::MIN)); + for corner in 0..8 { + let point = glam::DVec3::new( + if corner & 1 == 0 { min.x } else { max.x }, + if corner & 2 == 0 { min.y } else { max.y }, + if corner & 4 == 0 { min.z } else { max.z }, + ); + let (along_right, along_up) = (point.dot(right), point.dot(up)); + span_right = (span_right.0.min(along_right), span_right.1.max(along_right)); + span_up = (span_up.0.min(along_up), span_up.1.max(along_up)); + } + let content_w = (span_right.1 - span_right.0).max(1e-3); + let content_h = (span_up.1 - span_up.0).max(1e-3); + + // Aim at the model's centre; a plan view keeps it on the XY plane. + vp.view_target.x = center.x; + vp.view_target.y = center.y; + vp.view_target.z = if direction == glam::DVec3::Z { + 0.0 + } else { + center.z + }; // Choose the scale that fits both dimensions with the margin. - let scale_w = vp.width / (content_w as f64 * margin); - let scale_h = vp.height / (content_h as f64 * margin); + let scale_w = vp.width / (content_w * margin); + let scale_h = vp.height / (content_h * margin); let fit_scale = scale_w.min(scale_h).min(1000.0).max(1e-6); vp.custom_scale = fit_scale;