forked from 1b-agent/opencadstudio-upstream
feat(layout): MVSETUP sets a drawing up for plotting
In model space MVSETUP draws the sheet border at the drawing scale (scale factor, paper width and height) and zooms to it, or switches to a layout. On a layout it creates viewports in a bounding area (a single one, a 2x2 engineering set of top/front/right/isometric views, or an array with spacing), deletes picked objects, and scales picked viewports to a paper/model unit ratio. A viewport's fit to the model now measures the model along the viewport's own view direction, so side and isometric views frame it too. Refs #1501 Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
b1d4c9bd9b
commit
57eb7fe4db
31 files changed
+929
-10
No files matched your search
@@ -4436,6 +4436,25 @@ model =
|
||||
|
||||
|
||||
layout =
|
||||
.mvsetup-select-objects-to-delete = MVSETUP حدد الكائنات المراد حذفها:
|
||||
.delete-objects-option = حذف الكائنات
|
||||
.mvsetup-enable-paper-space = MVSETUP تمكين فضاء الورق؟ [No/Yes] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP حدد الزاوية الأولى لمنطقة منافذ العرض <Sheet>:
|
||||
.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 = إدراج عرض
|
||||
|
||||
@@ -4423,6 +4423,25 @@ model =
|
||||
|
||||
|
||||
layout =
|
||||
.mvsetup-select-objects-to-delete = MVSETUP Изберете обектите за изтриване:
|
||||
.delete-objects-option = Изтриване на обекти
|
||||
.mvsetup-enable-paper-space = MVSETUP Активиране на хартиеното пространство? [No/Yes] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP Задайте първи ъгъл на областта за прозорците <Sheet>:
|
||||
.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 = Вмъкни изглед
|
||||
|
||||
@@ -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] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP Zadejte první roh oblasti pro výřezy <Sheet>:
|
||||
.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
|
||||
|
||||
@@ -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] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP Erste Ecke des Bereichs für Ansichtsfenster angeben <Sheet>:
|
||||
.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
|
||||
|
||||
@@ -4424,6 +4424,25 @@ model =
|
||||
|
||||
|
||||
layout =
|
||||
.mvsetup-select-objects-to-delete = MVSETUP Επιλέξτε τα αντικείμενα για διαγραφή:
|
||||
.delete-objects-option = Διαγραφή αντικειμένων
|
||||
.mvsetup-enable-paper-space = MVSETUP Ενεργοποίηση χώρου χαρτιού; [No/Yes] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP Καθορίστε πρώτη γωνία της περιοχής παραθύρων <Sheet>:
|
||||
.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 = Εισαγωγή προβολής
|
||||
|
||||
@@ -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] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP Specify first corner of bounding area for viewport(s) <Sheet>:
|
||||
.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
|
||||
|
||||
@@ -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] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP Precise la primera esquina del área de ventanas <Sheet>:
|
||||
.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
|
||||
|
||||
@@ -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] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP Määritä näkymäikkunoiden alueen ensimmäinen kulma <Sheet>:
|
||||
.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ä
|
||||
|
||||
@@ -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] <Y> :
|
||||
.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] <Single> :
|
||||
.mvsetup-specify-first-corner = MVSETUP Spécifiez le premier coin de la zone des fenêtres <Sheet> :
|
||||
.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
|
||||
|
||||
@@ -4412,6 +4412,25 @@ model =
|
||||
|
||||
|
||||
layout =
|
||||
.mvsetup-select-objects-to-delete = MVSETUP हटाने के लिए ऑब्जेक्ट चुनें:
|
||||
.delete-objects-option = ऑब्जेक्ट हटाएँ
|
||||
.mvsetup-enable-paper-space = MVSETUP पेपर स्पेस सक्षम करें? [No/Yes] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP व्यूपोर्ट क्षेत्र का पहला कोना निर्दिष्ट करें <Sheet>:
|
||||
.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 = दृश्य डालें
|
||||
|
||||
@@ -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] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP Adja meg a nézetablakok területének első sarkát <Sheet>:
|
||||
.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
|
||||
|
||||
@@ -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] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP Specificare il primo angolo dell'area delle finestre <Sheet>:
|
||||
.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
|
||||
|
||||
@@ -4412,6 +4412,25 @@ model =
|
||||
|
||||
|
||||
layout =
|
||||
.mvsetup-select-objects-to-delete = MVSETUP 削除するオブジェクトを選択:
|
||||
.delete-objects-option = オブジェクトを削除
|
||||
.mvsetup-enable-paper-space = MVSETUP ペーパー空間を有効にしますか? [No/Yes] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP ビューポート領域の最初のコーナーを指定 <Sheet>:
|
||||
.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 = ビューを挿入
|
||||
|
||||
@@ -4423,6 +4423,25 @@ model =
|
||||
|
||||
|
||||
layout =
|
||||
.mvsetup-select-objects-to-delete = MVSETUP 삭제할 객체 선택:
|
||||
.delete-objects-option = 객체 삭제
|
||||
.mvsetup-enable-paper-space = MVSETUP 도면 공간을 사용하시겠습니까? [No/Yes] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP 뷰포트 영역의 첫 번째 구석 지정 <Sheet>:
|
||||
.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 = 삽입 뷰
|
||||
|
||||
@@ -4424,6 +4424,25 @@ model =
|
||||
.cube = ລູກບາດກ໌
|
||||
|
||||
layout =
|
||||
.mvsetup-select-objects-to-delete = MVSETUP ເລືອກວັດຖຸທີ່ຈະລຶບ:
|
||||
.delete-objects-option = ລຶບວັດຖຸ
|
||||
.mvsetup-enable-paper-space = MVSETUP ເປີດໃຊ້ພື້ນທີ່ເຈ້ຍບໍ? [No/Yes] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP ກຳນົດມຸມທຳອິດຂອງພື້ນທີ່ຊ່ອງມອງ <Sheet>:
|
||||
.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 = ແຊກມຸມມອງ
|
||||
|
||||
@@ -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] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP Geef eerste hoek van het viewportgebied op <Sheet>:
|
||||
.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
|
||||
|
||||
@@ -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] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP Określ pierwszy narożnik obszaru rzutni <Sheet>:
|
||||
.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
|
||||
|
||||
@@ -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] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP Especifique o primeiro canto da área das janelas <Sheet>:
|
||||
.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
|
||||
|
||||
@@ -4425,6 +4425,25 @@ model =
|
||||
|
||||
|
||||
layout =
|
||||
.mvsetup-select-objects-to-delete = MVSETUP Выберите объекты для удаления:
|
||||
.delete-objects-option = Удалить объекты
|
||||
.mvsetup-enable-paper-space = MVSETUP Включить пространство листа? [No/Yes] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP Укажите первый угол области видовых экранов <Sheet>:
|
||||
.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 = Включить вид
|
||||
|
||||
@@ -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] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP Görünüm pencereleri alanının ilk köşesini belirtin <Sheet>:
|
||||
.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
|
||||
|
||||
@@ -4407,6 +4407,25 @@ model =
|
||||
|
||||
|
||||
layout =
|
||||
.mvsetup-select-objects-to-delete = MVSETUP 选择要删除的对象:
|
||||
.delete-objects-option = 删除对象
|
||||
.mvsetup-enable-paper-space = MVSETUP 启用图纸空间? [No/Yes] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP 指定视口区域的第一个角点 <Sheet>:
|
||||
.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 = 插入视图
|
||||
|
||||
@@ -4419,6 +4419,25 @@ model =
|
||||
|
||||
|
||||
layout =
|
||||
.mvsetup-select-objects-to-delete = MVSETUP 選擇要刪除的物件:
|
||||
.delete-objects-option = 刪除物件
|
||||
.mvsetup-enable-paper-space = MVSETUP 啟用圖紙空間? [No/Yes] <Y>:
|
||||
.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] <Single>:
|
||||
.mvsetup-specify-first-corner = MVSETUP 指定視埠區域的第一個角點 <Sheet>:
|
||||
.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 = 插入視圖
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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<Handle>, factor: f64) {
|
||||
let i = self.active_tab;
|
||||
self.tabs[i].active_cmd = None;
|
||||
self.tabs[i].snap_result = None;
|
||||
let handles: Vec<Handle> = 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) {
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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<Handle>,
|
||||
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.
|
||||
|
||||
@@ -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] <Y>:" => 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] <Single>:" => Some(("layout", "mvsetup-enter-viewport-layout")),
|
||||
"MVSETUP Specify first corner of bounding area for viewport(s) <Sheet>:" => 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")),
|
||||
|
||||
@@ -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};
|
||||
|
||||
@@ -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] <Y>:
|
||||
// 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] <Single>:
|
||||
// Specify first corner of bounding area for viewport(s) <Sheet>:
|
||||
// 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<Handle>,
|
||||
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<String>, 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<f64> {
|
||||
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] <Y>:",
|
||||
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] <Single>:"
|
||||
}
|
||||
Step::FirstCorner => {
|
||||
"MVSETUP Specify first corner of bounding area for viewport(s) <Sheet>:"
|
||||
}
|
||||
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<CmdOption> {
|
||||
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<CmdResult> {
|
||||
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::<u32>().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"] });
|
||||
+41
-8
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user