diff --git a/assets/icons/layers/layvpfrz.svg b/assets/icons/layers/layvpfrz.svg
new file mode 100644
index 000000000..67da9cae9
--- /dev/null
+++ b/assets/icons/layers/layvpfrz.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/icons/layers/layvpthw.svg b/assets/icons/layers/layvpthw.svg
new file mode 100644
index 000000000..525158289
--- /dev/null
+++ b/assets/icons/layers/layvpthw.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/icons/model/shell.svg b/assets/icons/model/shell.svg
new file mode 100644
index 000000000..f3c9079b8
--- /dev/null
+++ b/assets/icons/model/shell.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/icons/osnap/geometric_center.svg b/assets/icons/osnap/geometric_center.svg
new file mode 100644
index 000000000..8f82c5570
--- /dev/null
+++ b/assets/icons/osnap/geometric_center.svg
@@ -0,0 +1 @@
+
diff --git a/locales/ar-SA/opencadstudio.ftl b/locales/ar-SA/opencadstudio.ftl
index 260bfa07f..d7ddef4f1 100644
--- a/locales/ar-SA/opencadstudio.ftl
+++ b/locales/ar-SA/opencadstudio.ftl
@@ -1531,10 +1531,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = هل تريد بالتأكيد إعادة الضبط؟ ستفقد جميع اختصاراتك الحالية!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = الاختصار مستخدم بالفعل للأمر: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = ستُتجاهل التغييرات غير المحفوظة.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = التحكم عبر MCP متوقف
.mcp-is-handling-a-request = يعالج MCP طلبًا
@@ -2333,6 +2333,21 @@ common =
.wblock-err-no-path = يرجى تحديد اسم الملف والمسار.
.wblock-err-current-drawing = لا يمكن الكتابة إلى ملف الرسم الحالي.
.wblock-help-info = يقوم WBLOCK بكتابة كائنات أو كتلة أو الرسم بالكامل إلى ملف رسم جديد.
+ .blank-drawing = رسم فارغ
+ .default-template-new-drawings = القالب الافتراضي للرسومات الجديدة
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = ملفات أنواع الخطوط
+ .load-linetypes = تحميل أنواع الخطوط
+ .requires-two-positive-values = يتطلب قيمتين موجبتين (x,y) أو قيمة واحدة لكليهما.
+ .snap-marker-color = لون علامة الالتقاط
+ .linetypes-loaded = تم تحميل __ocs_fmt_0__ من أنواع الخطوط.
+ .geometric-center-snap = المركز الهندسي
+ .no-trim-option = بدون تشذيب
+ .chspace-model-tab = CHSPACE: الأمر غير مسموح به في علامة تبويب النموذج.
+ .chspace-no-viewport = CHSPACE: لا توجد نافذة عرض مسقطية لتغيير الفضاء من خلالها.
+ .chspace-to-paper = CHSPACE: تم نقل __ocs_fmt_0__ كائن إلى فضاء الورق.
+ .chspace-to-model = CHSPACE: تم نقل __ocs_fmt_0__ كائن إلى فضاء النموذج.
errors =
.save-warning = تحذير الحفظ
.unable-to-save-drawing = تعذر حفظ الرسم
@@ -5502,7 +5517,7 @@ styles =
.isavebak-set-to-1 = عُيّن ISAVEBAK إلى 1
.keep-with-dim-line = إبقاء مع خط البُعد
.layers = الطبقات
- .linetype-list-set = LINETYPE [قائمة / تعيين]:
+ .linetype-list-set = LINETYPE [قائمة / تعيين / تحميل]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET اسم نوع الخط (حسب الطبقة / حسب الكتلة / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: لم يُحمّل "__ocs_fmt_0__". استخدم LINETYPE LIST لرؤية أنواع الخطوط المتاحة.
.ltscale-new-global-line-type-scale = LTSCALE مقياس نوع الخط العام الجديد:
diff --git a/locales/bg-BG/opencadstudio.ftl b/locales/bg-BG/opencadstudio.ftl
index 788dad7f7..1c951e903 100644
--- a/locales/bg-BG/opencadstudio.ftl
+++ b/locales/bg-BG/opencadstudio.ftl
@@ -1518,10 +1518,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = Сигурни ли сте, че искате нулиране? Ще загубите всички текущи преки пътища!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = Прекият път вече се използва за команда: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = Незаписаните промени ще бъдат отхвърлени.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = Управлението чрез MCP е изключено
.mcp-is-handling-a-request = MCP обработва заявка
@@ -2320,6 +2320,21 @@ common =
.wblock-err-no-path = Моля, задайте име и път на файла.
.wblock-err-current-drawing = Не може да се записва в текущия файл с чертеж.
.wblock-help-info = WBLOCK записва обекти, блок или целия чертеж в нов чертожен файл.
+ .blank-drawing = Празен чертеж
+ .default-template-new-drawings = Шаблон по подразбиране за нови чертежи
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = Файлове с типове линии
+ .load-linetypes = Зареждане на типове линии
+ .requires-two-positive-values = Изискват се две положителни стойности (x,y) или една за двете.
+ .snap-marker-color = Цвят на маркера за прихващане
+ .linetypes-loaded = Заредени типове линии: __ocs_fmt_0__.
+ .geometric-center-snap = Геометричен център
+ .no-trim-option = Без подрязване
+ .chspace-model-tab = CHSPACE: Командата не е разрешена в раздела Модел.
+ .chspace-no-viewport = CHSPACE: Няма прозорец в план, през който да се смени пространството.
+ .chspace-to-paper = CHSPACE: __ocs_fmt_0__ обекта преместени в пространството на листа.
+ .chspace-to-model = CHSPACE: __ocs_fmt_0__ обекта преместени в пространството на модела.
errors =
.save-warning = Предупреждение при запазване
.unable-to-save-drawing = Чертежът не може да бъде запазен
@@ -5490,7 +5505,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK зададен на 1
.keep-with-dim-line = Пази с линията за оразм.
.layers = СЛоеве
- .linetype-list-set = LINETYPE [Списък / Задай]:
+ .linetype-list-set = LINETYPE [Списък / Задай / Зареждане]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET име на тип линия (ByLayer / ByBlock / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: "__ocs_fmt_0__" не е зареден. Използвай LINETYPE LIST, за да видиш наличните типове линии.
.ltscale-new-global-line-type-scale = LTSCALE нов глобален мащаб на тип линия:
diff --git a/locales/cs-CZ/opencadstudio.ftl b/locales/cs-CZ/opencadstudio.ftl
index fabfead9e..a1adf8088 100644
--- a/locales/cs-CZ/opencadstudio.ftl
+++ b/locales/cs-CZ/opencadstudio.ftl
@@ -1518,10 +1518,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = Opravdu chcete obnovit výchozí nastavení? Ztratíte všechny aktuální zkratky!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = Zkratka je již použita pro příkaz: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = Neuložené změny budou zahozeny.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = Ovládání MCP je vypnuté
.mcp-is-handling-a-request = MCP zpracovává požadavek
@@ -2320,6 +2320,21 @@ common =
.wblock-err-no-path = Zadejte název souboru a cestu.
.wblock-err-current-drawing = Nelze zapisovat do aktuálního souboru výkresu.
.wblock-help-info = WBLOCK zapíše objekty, blok nebo celý výkres do nového výkresového souboru.
+ .blank-drawing = Prázdný výkres
+ .default-template-new-drawings = Výchozí šablona pro nové výkresy
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = Soubory typů čar
+ .load-linetypes = Načíst typy čar
+ .requires-two-positive-values = Vyžaduje dvě kladné hodnoty (x,y) nebo jednu pro obě.
+ .snap-marker-color = Barva značky uchopení
+ .linetypes-loaded = Načteno typů čar: __ocs_fmt_0__.
+ .geometric-center-snap = Geometrický střed
+ .no-trim-option = Neoříznout
+ .chspace-model-tab = CHSPACE: Příkaz není povolen na kartě Model.
+ .chspace-no-viewport = CHSPACE: Není výřez v půdorysném pohledu, přes který změnit prostor.
+ .chspace-to-paper = CHSPACE: __ocs_fmt_0__ objektů přesunuto do výkresového prostoru.
+ .chspace-to-model = CHSPACE: __ocs_fmt_0__ objektů přesunuto do modelového prostoru.
errors =
.save-warning = Uložit varování
.unable-to-save-drawing = Nákres nelze uložit
@@ -5487,7 +5502,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK nastaven na 1
.keep-with-dim-line = Držte se tlumené linie
.layers = Vrstvy
- .linetype-list-set = LINETYPE [Seznam / sada]:
+ .linetype-list-set = LINETYPE [Seznam / sada / Načíst]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET název typu čáry (podle hladiny / podle bloku / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: "__ocs_fmt_0__" není načteno. Pomocí LINETYPE LIST zobrazíte dostupné typy čar.
.ltscale-new-global-line-type-scale = LTSCALE nové globální měřítko typu čáry:
diff --git a/locales/de-DE/opencadstudio.ftl b/locales/de-DE/opencadstudio.ftl
index 0a2bec567..113bb8981 100644
--- a/locales/de-DE/opencadstudio.ftl
+++ b/locales/de-DE/opencadstudio.ftl
@@ -1519,10 +1519,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = Wirklich zurücksetzen? Alle aktuellen Tastenkürzel gehen verloren!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = Tastenkürzel bereits für Befehl verwendet: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = Nicht gespeicherte Änderungen werden verworfen.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = MCP-Steuerung ausgeschaltet
.mcp-is-handling-a-request = MCP verarbeitet eine Anfrage
@@ -2321,6 +2321,21 @@ common =
.wblock-err-no-path = Bitte geben Sie einen Dateinamen und Pfad an.
.wblock-err-current-drawing = In die aktuelle Zeichnungsdatei kann nicht geschrieben werden.
.wblock-help-info = WBLOCK schreibt Objekte, einen Block oder die gesamte Zeichnung in eine neue Zeichnungsdatei.
+ .blank-drawing = Leere Zeichnung
+ .default-template-new-drawings = Standardvorlage für neue Zeichnungen
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = Linientypdateien
+ .load-linetypes = Linientypen laden
+ .requires-two-positive-values = Erfordert zwei positive Werte (x,y) oder einen für beide.
+ .snap-marker-color = Farbe der Fangmarkierung
+ .linetypes-loaded = __ocs_fmt_0__ Linientyp(en) geladen.
+ .geometric-center-snap = Geometrischer Mittelpunkt
+ .no-trim-option = Nicht stutzen
+ .chspace-model-tab = CHSPACE: Befehl in der Registerkarte Modell nicht zulässig.
+ .chspace-no-viewport = CHSPACE: Kein Ansichtsfenster in Draufsicht zum Wechseln des Bereichs.
+ .chspace-to-paper = CHSPACE: __ocs_fmt_0__ Objekt(e) in den Papierbereich verschoben.
+ .chspace-to-model = CHSPACE: __ocs_fmt_0__ Objekt(e) in den Modellbereich verschoben.
errors =
.save-warning = Warnhinweise speichern
.unable-to-save-drawing = Zeichnung konnte nicht gespeichert werden
@@ -5488,7 +5503,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK auf 1 gesetzt
.keep-with-dim-line = Halten Sie mit Dim Line
.layers = SCHIENEN
- .linetype-list-set = LINETYPE [Liste / Festlegen]:
+ .linetype-list-set = LINETYPE [Liste / Festlegen / Laden]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET Linientypname (ByLayer / ByBlock / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: "__ocs_fmt_0__" ist nicht geladen. Mit LINETYPE LIST werden die verfügbaren Linientypen angezeigt.
.ltscale-new-global-line-type-scale = LTSCALE Neuer globaler Linientypfaktor:
diff --git a/locales/el-GR/opencadstudio.ftl b/locales/el-GR/opencadstudio.ftl
index b8be984f4..f316b9d5e 100644
--- a/locales/el-GR/opencadstudio.ftl
+++ b/locales/el-GR/opencadstudio.ftl
@@ -1520,10 +1520,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = Σίγουρα θέλετε επαναφορά; Θα χαθούν όλες οι τρέχουσες συντομεύσεις σας!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = Η συντόμευση χρησιμοποιείται ήδη για την εντολή: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = Οι μη αποθηκευμένες αλλαγές θα απορριφθούν.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = Έλεγχος MCP απενεργοποιημένος
.mcp-is-handling-a-request = Το MCP επεξεργάζεται ένα αίτημα
@@ -2320,6 +2320,21 @@ common =
.wblock-err-no-path = Καθορίστε ένα όνομα και διαδρομή αρχείου.
.wblock-err-current-drawing = Δεν είναι δυνατή η εγγραφή στο τρέχον αρχείο σχεδίου.
.wblock-help-info = Η εντολή WBLOCK εγγράφει αντικείμενα, ένα μπλοκ ή ολόκληρο το σχέδιο σε ένα νέο αρχείο σχεδίου.
+ .blank-drawing = Κενό σχέδιο
+ .default-template-new-drawings = Προεπιλεγμένο πρότυπο για νέα σχέδια
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = Αρχεία τύπων γραμμής
+ .load-linetypes = Φόρτωση τύπων γραμμής
+ .requires-two-positive-values = Απαιτούνται δύο θετικές τιμές (x,y) ή μία και για τις δύο.
+ .snap-marker-color = Χρώμα δείκτη έλξης
+ .linetypes-loaded = Φορτώθηκαν __ocs_fmt_0__ τύποι γραμμής.
+ .geometric-center-snap = Γεωμετρικό κέντρο
+ .no-trim-option = Χωρίς περικοπή
+ .chspace-model-tab = CHSPACE: Η εντολή δεν επιτρέπεται στην καρτέλα Μοντέλο.
+ .chspace-no-viewport = CHSPACE: Δεν υπάρχει παράθυρο προβολής κάτοψης για αλλαγή χώρου.
+ .chspace-to-paper = CHSPACE: __ocs_fmt_0__ αντικείμενα μεταφέρθηκαν στον χώρο χαρτιού.
+ .chspace-to-model = CHSPACE: __ocs_fmt_0__ αντικείμενα μεταφέρθηκαν στον χώρο μοντέλου.
errors =
.save-warning = Προειδοποίηση αποθήκευσης
.unable-to-save-drawing = Αδυναμία αποθήκευσης σχεδίου
@@ -5490,7 +5505,7 @@ styles =
.isavebak-set-to-1 = Το ISAVEBAK ορίστηκε σε 1
.keep-with-dim-line = Διατήρηση με τη γραμμή διάστασης
.layers = ΕΠίπεδα
- .linetype-list-set = LINETYPE [Λίστα / Ορισμός]:
+ .linetype-list-set = LINETYPE [Λίστα / Ορισμός / Φόρτωση]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET όνομα τύπου γραμμής (ByLayer / ByBlock / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: το "__ocs_fmt_0__" δεν έχει φορτωθεί. Χρησιμοποιήστε LINETYPE LIST για να δείτε τους διαθέσιμους τύπους γραμμών.
.ltscale-new-global-line-type-scale = LTSCALE νέα καθολική κλίμακα τύπου γραμμής:
diff --git a/locales/en-US/opencadstudio.ftl b/locales/en-US/opencadstudio.ftl
index 904b74d72..ca46303af 100644
--- a/locales/en-US/opencadstudio.ftl
+++ b/locales/en-US/opencadstudio.ftl
@@ -1520,10 +1520,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = Are you sure you want to reset? You will lose all your current shortcuts!
.yes-reset = Yes, reset
.reset-to-default = Reset to default
- .apply-exit = Apply && Exit
+ .apply-exit = Apply & Exit
.shortcut-already-used-for-command = Shortcut already used for command: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = Unsaved changes will be discarded.
- .discard-close = Discard && close
+ .discard-close = Discard & close
.keep-editing = Keep editing
.mcp-control-is-off = MCP control is off
.mcp-is-handling-a-request = MCP is handling a request
@@ -2321,6 +2321,21 @@ common =
.wblock-err-no-path = Please specify a file name and path.
.wblock-err-current-drawing = Cannot write to the current drawing file.
.wblock-help-info = WBLOCK writes objects, a block, or the entire drawing to a new drawing file.
+ .blank-drawing = Blank drawing
+ .default-template-new-drawings = Default template for new drawings
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = Linetype Files
+ .load-linetypes = Load Linetypes
+ .requires-two-positive-values = Requires two positive values (x,y) or one for both.
+ .snap-marker-color = Snap marker color
+ .linetypes-loaded = __ocs_fmt_0__ linetype(s) loaded.
+ .geometric-center-snap = Geometric Center
+ .no-trim-option = No trim
+ .chspace-model-tab = CHSPACE: Command not allowed in the Model tab.
+ .chspace-no-viewport = CHSPACE: No plan-view viewport to change space through.
+ .chspace-to-paper = CHSPACE: __ocs_fmt_0__ object(s) changed to paper space.
+ .chspace-to-model = CHSPACE: __ocs_fmt_0__ object(s) changed to model space.
errors =
.save-warning = Save Warning
.unable-to-save-drawing = Unable to Save Drawing
@@ -5491,7 +5506,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK set to 1
.keep-with-dim-line = Keep with dim line
.layers = LAyers
- .linetype-list-set = LINETYPE [List / Set]:
+ .linetype-list-set = LINETYPE [List / Set / Load]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET linetype name (ByLayer / ByBlock / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: "__ocs_fmt_0__" is not loaded. Use LINETYPE LIST to see available linetypes.
.ltscale-new-global-line-type-scale = LTSCALE new global line-type scale:
diff --git a/locales/es-ES/opencadstudio.ftl b/locales/es-ES/opencadstudio.ftl
index fb3957553..2cf8237be 100644
--- a/locales/es-ES/opencadstudio.ftl
+++ b/locales/es-ES/opencadstudio.ftl
@@ -1519,10 +1519,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = ¿Seguro que desea restablecer? ¡Perderá todos sus atajos actuales!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = Atajo ya usado para el comando: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = Se descartarán los cambios sin guardar.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = Control MCP desactivado
.mcp-is-handling-a-request = MCP está procesando una solicitud
@@ -2321,6 +2321,21 @@ common =
.wblock-err-no-path = Especifique un nombre de archivo y una ruta.
.wblock-err-current-drawing = No se puede escribir en el archivo de dibujo actual.
.wblock-help-info = WBLOCK escribe objetos, un bloque o el dibujo completo en un nuevo archivo de dibujo.
+ .blank-drawing = Dibujo en blanco
+ .default-template-new-drawings = Plantilla predeterminada para dibujos nuevos
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = Archivos de tipos de línea
+ .load-linetypes = Cargar tipos de línea
+ .requires-two-positive-values = Requiere dos valores positivos (x,y) o uno para ambos.
+ .snap-marker-color = Color del marcador de referencia
+ .linetypes-loaded = __ocs_fmt_0__ tipo(s) de línea cargado(s).
+ .geometric-center-snap = Centro geométrico
+ .no-trim-option = No recortar
+ .chspace-model-tab = CHSPACE: Comando no permitido en la ficha Modelo.
+ .chspace-no-viewport = CHSPACE: No hay ventana gráfica en vista en planta para cambiar de espacio.
+ .chspace-to-paper = CHSPACE: __ocs_fmt_0__ objeto(s) pasado(s) al espacio papel.
+ .chspace-to-model = CHSPACE: __ocs_fmt_0__ objeto(s) pasado(s) al espacio modelo.
errors =
.save-warning = Advertencia de guardado
.unable-to-save-drawing = No se puede guardar el dibujo
@@ -5490,7 +5505,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK definido como 1
.keep-with-dim-line = Mantener con línea de cota
.layers = Capas
- .linetype-list-set = LINETYPE [Listar/Definir]:
+ .linetype-list-set = LINETYPE [Listar/Definir / Cargar]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET Nombre del tipo de línea (PorCapa/PorBloque/…):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: «__ocs_fmt_0__» no está cargado. Use LINETYPE LIST para ver los tipos disponibles.
.ltscale-new-global-line-type-scale = LTSCALE Nueva escala global de tipo de línea:
diff --git a/locales/fi-FI/opencadstudio.ftl b/locales/fi-FI/opencadstudio.ftl
index afe7bb535..c44d1f1c2 100644
--- a/locales/fi-FI/opencadstudio.ftl
+++ b/locales/fi-FI/opencadstudio.ftl
@@ -1518,10 +1518,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = Haluatko varmasti palauttaa oletukset? Kaikki nykyiset pikanäppäimet menetetään!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = Pikanäppäin on jo käytössä komennolla: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = Tallentamattomat muutokset hylätään.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = MCP-ohjaus pois käytöstä
.mcp-is-handling-a-request = MCP käsittelee pyyntöä
@@ -2320,6 +2320,21 @@ common =
.wblock-err-no-path = Määritä tiedoston nimi ja polku.
.wblock-err-current-drawing = Nykyiseen piirustustiedostoon ei voi kirjoittaa.
.wblock-help-info = WBLOCK kirjoittaa kohteet, lohkon tai koko piirustuksen uuteen piirustustiedostoon.
+ .blank-drawing = Tyhjä piirustus
+ .default-template-new-drawings = Uusien piirustusten oletusmalli
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = Viivatyyppitiedostot
+ .load-linetypes = Lataa viivatyypit
+ .requires-two-positive-values = Vaatii kaksi positiivista arvoa (x,y) tai yhden molemmille.
+ .snap-marker-color = Kohdistusmerkin väri
+ .linetypes-loaded = Ladattu __ocs_fmt_0__ viivatyyppiä.
+ .geometric-center-snap = Geometrinen keskipiste
+ .no-trim-option = Ei trimmausta
+ .chspace-model-tab = CHSPACE: Komento ei ole sallittu Malli-välilehdellä.
+ .chspace-no-viewport = CHSPACE: Ei tasokuvan näkymäikkunaa tilan vaihtoon.
+ .chspace-to-paper = CHSPACE: __ocs_fmt_0__ objektia siirretty paperitilaan.
+ .chspace-to-model = CHSPACE: __ocs_fmt_0__ objektia siirretty mallitilaan.
errors =
.save-warning = Tallenna varoitus
.unable-to-save-drawing = Piirustusta ei voi tallentaa
@@ -5489,7 +5504,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK asetettu arvoon 1
.keep-with-dim-line = Pysy himmeällä viivalla
.layers = Kerrokset
- .linetype-list-set = LINETYPE [Lista / sarja]:
+ .linetype-list-set = LINETYPE [Lista / sarja / Lataa]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET viivatyypin nimi (ByLayer / ByBlock / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: "__ocs_fmt_0__" ei ole ladattu. Käytä LINETYPE LIST nähdäksesi käytettävissä olevat linjatyypit.
.ltscale-new-global-line-type-scale = LTSCALE uusi globaali viivatyyppinen asteikko:
diff --git a/locales/fr-FR/opencadstudio.ftl b/locales/fr-FR/opencadstudio.ftl
index 68179d0f4..dfeb98f84 100644
--- a/locales/fr-FR/opencadstudio.ftl
+++ b/locales/fr-FR/opencadstudio.ftl
@@ -1519,10 +1519,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = Voulez-vous vraiment réinitialiser ? Tous vos raccourcis actuels seront perdus !
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = Raccourci déjà utilisé pour la commande : __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = Les modifications non enregistrées seront perdues.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = Contrôle MCP désactivé
.mcp-is-handling-a-request = MCP traite une requête
@@ -2321,6 +2321,21 @@ common =
.wblock-err-no-path = Veuillez spécifier un nom de fichier et un chemin d'accès.
.wblock-err-current-drawing = Impossible d'écrire dans le fichier de dessin actuel.
.wblock-help-info = WBLOCK écrit des objets, un bloc ou l'ensemble du dessin dans un nouveau fichier de dessin.
+ .blank-drawing = Dessin vierge
+ .default-template-new-drawings = Gabarit par défaut des nouveaux dessins
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = Fichiers de types de ligne
+ .load-linetypes = Charger des types de ligne
+ .requires-two-positive-values = Nécessite deux valeurs positives (x,y) ou une seule pour les deux.
+ .snap-marker-color = Couleur du marqueur d'accrochage
+ .linetypes-loaded = __ocs_fmt_0__ type(s) de ligne chargé(s).
+ .geometric-center-snap = Centre géométrique
+ .no-trim-option = Sans ajuster
+ .chspace-model-tab = CHSPACE : commande non autorisée dans l'onglet Objet.
+ .chspace-no-viewport = CHSPACE : aucune fenêtre en vue en plan pour changer d'espace.
+ .chspace-to-paper = CHSPACE : __ocs_fmt_0__ objet(s) déplacé(s) dans l'espace papier.
+ .chspace-to-model = CHSPACE : __ocs_fmt_0__ objet(s) déplacé(s) dans l'espace objet.
errors =
.save-warning = Enregistrer l' avertissement
.unable-to-save-drawing = Impossible de sauvegarder le dessin
@@ -5490,7 +5505,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK réglé à 1
.keep-with-dim-line = Gardez avec la ligne dim
.layers = Autres
- .linetype-list-set = LINETYPE [Liste / Définir] :
+ .linetype-list-set = LINETYPE [Liste / Définir / Charger] :
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET nom de type de ligne (ByLayer / ByBlock / ...):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: "__ocs_fmt_0__" n'est pas chargé. Utilisez LINETYPE LIST pour voir les types de lignes disponibles.
.ltscale-new-global-line-type-scale = LTSCALE nouvelle échelle de type ligne mondiale:
diff --git a/locales/hi-IN/opencadstudio.ftl b/locales/hi-IN/opencadstudio.ftl
index 3fe0ddd95..fe5621a45 100644
--- a/locales/hi-IN/opencadstudio.ftl
+++ b/locales/hi-IN/opencadstudio.ftl
@@ -1507,10 +1507,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = क्या आप वाकई रीसेट करना चाहते हैं? आपके सभी वर्तमान शॉर्टकट खो जाएँगे!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = शॉर्टकट पहले से इस कमांड के लिए उपयोग में है: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = बिना सहेजे बदलाव हटा दिए जाएँगे।
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = MCP नियंत्रण बंद है
.mcp-is-handling-a-request = MCP अनुरोध संसाधित कर रहा है
@@ -2309,6 +2309,21 @@ common =
.wblock-err-no-path = कृपया फ़ाइल का नाम और पथ निर्दिष्ट करें।
.wblock-err-current-drawing = वर्तमान आरेखण फ़ाइल में नहीं लिखा जा सकता।
.wblock-help-info = WBLOCK ऑब्जेक्ट, एक ब्लॉक, या संपूर्ण रेखाचित्र को एक नई रेखाचित्र फ़ाइल में लिखता है।
+ .blank-drawing = रिक्त ड्रॉइंग
+ .default-template-new-drawings = नई ड्रॉइंग के लिए डिफ़ॉल्ट टेम्पलेट
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = लाइनटाइप फ़ाइलें
+ .load-linetypes = लाइनटाइप लोड करें
+ .requires-two-positive-values = दो धनात्मक मान (x,y) या दोनों के लिए एक मान आवश्यक है।
+ .snap-marker-color = स्नैप मार्कर का रंग
+ .linetypes-loaded = __ocs_fmt_0__ लाइनटाइप लोड हुए।
+ .geometric-center-snap = ज्यामितीय केंद्र
+ .no-trim-option = ट्रिम नहीं
+ .chspace-model-tab = CHSPACE: मॉडल टैब में कमांड की अनुमति नहीं है।
+ .chspace-no-viewport = CHSPACE: स्पेस बदलने के लिए कोई प्लान-व्यू व्यूपोर्ट नहीं।
+ .chspace-to-paper = CHSPACE: __ocs_fmt_0__ ऑब्जेक्ट पेपर स्पेस में बदले गए।
+ .chspace-to-model = CHSPACE: __ocs_fmt_0__ ऑब्जेक्ट मॉडल स्पेस में बदले गए।
errors =
.save-warning = चेतावनी सहेजें
.unable-to-save-drawing = ड्रॉइंग सहेजी नहीं जा सकी
@@ -5478,7 +5493,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK सेट 1
.keep-with-dim-line = डिम लाइन के साथ रखें
.layers = लेयर
- .linetype-list-set = LINETYPE [सूची / सेट]:
+ .linetype-list-set = LINETYPE [सूची / सेट / लोड]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET लाइनटाइप का नाम (ByLayer / ByBlock / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: "__ocs_fmt_0__" को लोड नहीं किया गया है। उपलब्ध लाइनटाइप देखने के लिए LINETYPE LIST का प्रयोग करें।
.ltscale-new-global-line-type-scale = LTSCALE नई वैश्विक लाइन-प्रकार पैमाने:
diff --git a/locales/hu-HU/opencadstudio.ftl b/locales/hu-HU/opencadstudio.ftl
index 03ab9ef83..041e9061e 100644
--- a/locales/hu-HU/opencadstudio.ftl
+++ b/locales/hu-HU/opencadstudio.ftl
@@ -1518,10 +1518,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = Biztosan visszaállítja? Az összes jelenlegi gyorsbillentyű elveszik!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = A gyorsbillentyű már használatban van: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = A nem mentett módosítások elvesznek.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = MCP-vezérlés kikapcsolva
.mcp-is-handling-a-request = Az MCP kérést dolgoz fel
@@ -2320,6 +2320,21 @@ common =
.wblock-err-no-path = Adja meg a fájlnevet és az elérési utat.
.wblock-err-current-drawing = Nem lehet írni az aktuális rajzfájlba.
.wblock-help-info = A WBLOCK objektumokat, egy blokkot vagy a teljes rajzot új rajzfájlba menti.
+ .blank-drawing = Üres rajz
+ .default-template-new-drawings = Alapértelmezett sablon új rajzokhoz
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = Vonaltípus-fájlok
+ .load-linetypes = Vonaltípusok betöltése
+ .requires-two-positive-values = Két pozitív érték (x,y) vagy egy közös érték szükséges.
+ .snap-marker-color = Illesztési jelölő színe
+ .linetypes-loaded = __ocs_fmt_0__ vonaltípus betöltve.
+ .geometric-center-snap = Geometriai középpont
+ .no-trim-option = Nincs vágás
+ .chspace-model-tab = CHSPACE: A parancs a Modell lapon nem engedélyezett.
+ .chspace-no-viewport = CHSPACE: Nincs felülnézeti nézetablak a tér váltásához.
+ .chspace-to-paper = CHSPACE: __ocs_fmt_0__ objektum papírtérbe helyezve.
+ .chspace-to-model = CHSPACE: __ocs_fmt_0__ objektum modelltérbe helyezve.
errors =
.save-warning = Figyelmeztetés mentése
.unable-to-save-drawing = Nem sikerült menteni a rajzot
@@ -5489,7 +5504,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK 1-re állítva
.keep-with-dim-line = Tartsa halvány vonallal
.layers = Rétegek
- .linetype-list-set = LINETYPE [Lista / Készlet]:
+ .linetype-list-set = LINETYPE [Lista / Készlet / Betöltés]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET vonaltípus neve (ByLayer / ByBlock / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: A "__ocs_fmt_0__" nincs betöltve. A rendelkezésre álló vonaltípusok megtekintéséhez használja a LINETYPE LIST parancsot.
.ltscale-new-global-line-type-scale = LTSCALE új globális vonal típusú skála:
diff --git a/locales/it-IT/opencadstudio.ftl b/locales/it-IT/opencadstudio.ftl
index 0e47586df..a1df56f45 100644
--- a/locales/it-IT/opencadstudio.ftl
+++ b/locales/it-IT/opencadstudio.ftl
@@ -1518,10 +1518,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = Vuoi davvero reimpostare? Perderai tutte le scorciatoie attuali!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = Scorciatoia già usata per il comando: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = Le modifiche non salvate verranno scartate.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = Controllo MCP disattivato
.mcp-is-handling-a-request = MCP sta elaborando una richiesta
@@ -2320,6 +2320,21 @@ common =
.wblock-err-no-path = Specificare un nome file e un percorso.
.wblock-err-current-drawing = Impossibile scrivere nel file di disegno corrente.
.wblock-help-info = WBLOCK scrive gli oggetti, un blocco o l'intero disegno in un nuovo file di disegno.
+ .blank-drawing = Disegno vuoto
+ .default-template-new-drawings = Modello predefinito per i nuovi disegni
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = File dei tipi di linea
+ .load-linetypes = Carica tipi di linea
+ .requires-two-positive-values = Richiede due valori positivi (x,y) o uno per entrambi.
+ .snap-marker-color = Colore del marcatore di snap
+ .linetypes-loaded = __ocs_fmt_0__ tipo/i di linea caricato/i.
+ .geometric-center-snap = Centro geometrico
+ .no-trim-option = Non tagliare
+ .chspace-model-tab = CHSPACE: comando non consentito nella scheda Modello.
+ .chspace-no-viewport = CHSPACE: nessuna finestra in vista in pianta attraverso cui cambiare spazio.
+ .chspace-to-paper = CHSPACE: __ocs_fmt_0__ oggetto/i spostato/i nello spazio carta.
+ .chspace-to-model = CHSPACE: __ocs_fmt_0__ oggetto/i spostato/i nello spazio modello.
errors =
.save-warning = Salva avviso
.unable-to-save-drawing = Impossibile salvare il disegno
@@ -5489,7 +5504,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK impostato su 1
.keep-with-dim-line = Continua con la linea debole
.layers = Livelli
- .linetype-list-set = LINETYPE [Elenco/Imposta]:
+ .linetype-list-set = LINETYPE [Elenco/Imposta / Carica]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET nome del tipo di linea (DaLayer / DaBlocco / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: "__ocs_fmt_0__" non è caricato. Utilizza LINETYPE LIST per vedere i tipi di linea disponibili.
.ltscale-new-global-line-type-scale = LTSCALE nuova scala globale di tipo linea:
diff --git a/locales/ja-JP/opencadstudio.ftl b/locales/ja-JP/opencadstudio.ftl
index c1def5ba7..ade38d6d5 100644
--- a/locales/ja-JP/opencadstudio.ftl
+++ b/locales/ja-JP/opencadstudio.ftl
@@ -1509,10 +1509,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = リセットしてもよろしいですか?現在のすべてのショートカットが失われます!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = ショートカットは既に次のコマンドで使用されています: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = 未保存の変更は破棄されます。
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = MCP制御は無効です
.mcp-is-handling-a-request = MCPがリクエストを処理中です
@@ -2311,6 +2311,21 @@ common =
.wblock-err-no-path = ファイル名とパスを指定してください。
.wblock-err-current-drawing = 現在の図面ファイルには書き込めません。
.wblock-help-info = WBLOCK はオブジェクト、ブロック、または図面全体を新しい図面ファイルに書き出します。
+ .blank-drawing = 空の図面
+ .default-template-new-drawings = 新規図面の既定テンプレート
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = 線種ファイル
+ .load-linetypes = 線種をロード
+ .requires-two-positive-values = 2つの正の値 (x,y)、または両方に共通の1つの値が必要です。
+ .snap-marker-color = スナップ マーカーの色
+ .linetypes-loaded = __ocs_fmt_0__ 個の線種をロードしました。
+ .geometric-center-snap = 図心
+ .no-trim-option = トリムしない
+ .chspace-model-tab = CHSPACE: モデル タブではこのコマンドを使用できません。
+ .chspace-no-viewport = CHSPACE: 空間を変更できる平面ビューのビューポートがありません。
+ .chspace-to-paper = CHSPACE: __ocs_fmt_0__ 個のオブジェクトをペーパー空間に移動しました。
+ .chspace-to-model = CHSPACE: __ocs_fmt_0__ 個のオブジェクトをモデル空間に移動しました。
errors =
.save-warning = 保存の警告
.unable-to-save-drawing = 図面を保存できません
@@ -5478,7 +5493,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK を 1 に設定しました
.keep-with-dim-line = 寸法線と共に保持
.layers = レイヤー
- .linetype-list-set = LINETYPE [一覧 / 設定]:
+ .linetype-list-set = LINETYPE [一覧 / 設定 / ロード]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET 線種名(レイヤー依存 / ブロック依存 / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: "__ocs_fmt_0__" は未読込です。LINETYPE LIST で利用可能な線種を確認してください。
.ltscale-new-global-line-type-scale = LTSCALE 新しいグローバル線種尺度:
diff --git a/locales/ko-KR/opencadstudio.ftl b/locales/ko-KR/opencadstudio.ftl
index 38deb29bd..939c2e0c2 100644
--- a/locales/ko-KR/opencadstudio.ftl
+++ b/locales/ko-KR/opencadstudio.ftl
@@ -1518,10 +1518,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = 정말 초기화하시겠습니까? 현재 단축키가 모두 삭제됩니다!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = 단축키가 이미 다음 명령에 사용 중입니다: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = 저장하지 않은 변경 사항은 삭제됩니다.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = MCP 제어가 꺼져 있습니다
.mcp-is-handling-a-request = MCP가 요청을 처리 중입니다
@@ -2320,6 +2320,21 @@ common =
.wblock-err-no-path = 파일 이름과 경로를 지정하십시오.
.wblock-err-current-drawing = 현재 도면 파일에는 쓸 수 없습니다.
.wblock-help-info = WBLOCK은 객체, 블록 또는 도면 전체를 새 도면 파일로 내보냅니다.
+ .blank-drawing = 빈 도면
+ .default-template-new-drawings = 새 도면의 기본 템플릿
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = 선종류 파일
+ .load-linetypes = 선종류 로드
+ .requires-two-positive-values = 양수 값 두 개(x,y) 또는 둘 다에 쓸 값 하나가 필요합니다.
+ .snap-marker-color = 스냅 마커 색상
+ .linetypes-loaded = 선종류 __ocs_fmt_0__개를 로드했습니다.
+ .geometric-center-snap = 기하학적 중심
+ .no-trim-option = 자르지 않기
+ .chspace-model-tab = CHSPACE: 모델 탭에서는 명령을 사용할 수 없습니다.
+ .chspace-no-viewport = CHSPACE: 공간을 변경할 평면 뷰포트가 없습니다.
+ .chspace-to-paper = CHSPACE: 객체 __ocs_fmt_0__개를 도면 공간으로 옮겼습니다.
+ .chspace-to-model = CHSPACE: 객체 __ocs_fmt_0__개를 모형 공간으로 옮겼습니다.
errors =
.save-warning = 경고 저장
.unable-to-save-drawing = 도면을 저장할 수 없습니다
@@ -5489,7 +5504,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK가 1로 설정됨
.keep-with-dim-line = 희미한 선으로 유지
.layers = 레이어
- .linetype-list-set = LINETYPE [목록/설정]:
+ .linetype-list-set = LINETYPE [목록/설정 / 로드]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET 선종류 이름(ByLayer / ByBlock / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: "__ocs_fmt_0__"가 로드되지 않았습니다. 사용 가능한 선종류를 보려면 LINETYPE LIST를 사용하세요.
.ltscale-new-global-line-type-scale = LTSCALE 새로운 글로벌 라인형 스케일:
diff --git a/locales/nl-NL/opencadstudio.ftl b/locales/nl-NL/opencadstudio.ftl
index eebd34be8..a7e3748bc 100644
--- a/locales/nl-NL/opencadstudio.ftl
+++ b/locales/nl-NL/opencadstudio.ftl
@@ -1517,10 +1517,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = Weet u zeker dat u wilt herstellen? Al uw huidige sneltoetsen gaan verloren!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = Sneltoets al gebruikt voor opdracht: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = Niet-opgeslagen wijzigingen worden verworpen.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = MCP-besturing uitgeschakeld
.mcp-is-handling-a-request = MCP verwerkt een verzoek
@@ -2321,6 +2321,21 @@ common =
.wblock-err-no-path = Geef een bestandsnaam en pad op.
.wblock-err-current-drawing = Kan niet schrijven naar het huidige tekeningbestand.
.wblock-help-info = WBLOCK schrijft objecten, een blok of de volledige tekening naar een nieuw tekeningbestand.
+ .blank-drawing = Lege tekening
+ .default-template-new-drawings = Standaardsjabloon voor nieuwe tekeningen
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = Lijntypebestanden
+ .load-linetypes = Lijntypen laden
+ .requires-two-positive-values = Vereist twee positieve waarden (x,y) of één voor beide.
+ .snap-marker-color = Kleur van snapmarkering
+ .linetypes-loaded = __ocs_fmt_0__ lijntype(n) geladen.
+ .geometric-center-snap = Geometrisch middelpunt
+ .no-trim-option = Niet trimmen
+ .chspace-model-tab = CHSPACE: opdracht niet toegestaan op het tabblad Model.
+ .chspace-no-viewport = CHSPACE: geen viewport in bovenaanzicht om de ruimte via te wisselen.
+ .chspace-to-paper = CHSPACE: __ocs_fmt_0__ object(en) naar de papierruimte verplaatst.
+ .chspace-to-model = CHSPACE: __ocs_fmt_0__ object(en) naar de modelruimte verplaatst.
errors =
.save-warning = Waarschuwing opslaan
.unable-to-save-drawing = Kan tekening niet opslaan
@@ -5488,7 +5503,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK ingesteld op 1
.keep-with-dim-line = Houden met dim lijn
.layers = Lagen
- .linetype-list-set = LINETYPE [Lijst / Instellen]:
+ .linetype-list-set = LINETYPE [Lijst / Instellen / Laden]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET Lijntypenaam (ByLayer / ByBlock / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: "__ocs_fmt_0__" is niet geladen. Gebruik LINETYPE LIST om de beschikbare lijntypen te bekijken.
.ltscale-new-global-line-type-scale = LTSCALE nieuwe mondiale lijnschaal:
diff --git a/locales/pl-PL/opencadstudio.ftl b/locales/pl-PL/opencadstudio.ftl
index fdb7cc4c7..0331ad907 100644
--- a/locales/pl-PL/opencadstudio.ftl
+++ b/locales/pl-PL/opencadstudio.ftl
@@ -1518,10 +1518,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = Na pewno zresetować? Wszystkie bieżące skróty zostaną utracone!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = Skrót jest już używany dla polecenia: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = Niezapisane zmiany zostaną odrzucone.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = Sterowanie MCP wyłączone
.mcp-is-handling-a-request = MCP przetwarza żądanie
@@ -2320,6 +2320,21 @@ common =
.wblock-err-no-path = Podaj nazwę pliku i ścieżkę.
.wblock-err-current-drawing = Nie można zapisać do bieżącego pliku rysunku.
.wblock-help-info = WBLOCK zapisuje obiekty, blok lub cały rysunek do nowego pliku rysunku.
+ .blank-drawing = Pusty rysunek
+ .default-template-new-drawings = Domyślny szablon nowych rysunków
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = Pliki rodzajów linii
+ .load-linetypes = Wczytaj rodzaje linii
+ .requires-two-positive-values = Wymaga dwóch wartości dodatnich (x,y) lub jednej dla obu.
+ .snap-marker-color = Kolor znacznika przyciągania
+ .linetypes-loaded = Wczytano rodzaje linii: __ocs_fmt_0__.
+ .geometric-center-snap = Środek geometryczny
+ .no-trim-option = Bez przycinania
+ .chspace-model-tab = CHSPACE: polecenie niedostępne na karcie Model.
+ .chspace-no-viewport = CHSPACE: brak rzutni w widoku z góry do zmiany obszaru.
+ .chspace-to-paper = CHSPACE: przeniesiono obiekty do obszaru papieru: __ocs_fmt_0__.
+ .chspace-to-model = CHSPACE: przeniesiono obiekty do obszaru modelu: __ocs_fmt_0__.
errors =
.save-warning = Zapisz ostrzeżenie
.unable-to-save-drawing = Nie można zapisać rysunku
@@ -5489,7 +5504,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK ustawione na 1
.keep-with-dim-line = Trzymaj się ciemnej linii
.layers = Warstwy
- .linetype-list-set = LINETYPE [Lista / Zestaw]:
+ .linetype-list-set = LINETYPE [Lista / Zestaw / Wczytaj]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET nazwa rodzaju linii (JakWarstwa / JakBlok / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: „__ocs_fmt_0__” nie jest załadowany. Użyj LINETYPE LIST, aby zobaczyć dostępne rodzaje linii.
.ltscale-new-global-line-type-scale = LTSCALE nowa globalna skala liniowa:
diff --git a/locales/pt-BR/opencadstudio.ftl b/locales/pt-BR/opencadstudio.ftl
index e09630951..f2d153fad 100644
--- a/locales/pt-BR/opencadstudio.ftl
+++ b/locales/pt-BR/opencadstudio.ftl
@@ -1519,10 +1519,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = Deseja mesmo redefinir? Todos os atalhos atuais serão perdidos!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = Atalho já usado para o comando: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = As alterações não salvas serão descartadas.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = Controle MCP desativado
.mcp-is-handling-a-request = MCP está processando uma solicitação
@@ -2321,6 +2321,21 @@ common =
.wblock-err-no-path = Especifique um nome de arquivo e caminho.
.wblock-err-current-drawing = Não é possível gravar no arquivo de desenho atual.
.wblock-help-info = O WBLOCK grava objetos, um bloco ou o desenho inteiro em um novo arquivo de desenho.
+ .blank-drawing = Desenho em branco
+ .default-template-new-drawings = Modelo padrão para novos desenhos
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = Arquivos de tipos de linha
+ .load-linetypes = Carregar tipos de linha
+ .requires-two-positive-values = Requer dois valores positivos (x,y) ou um para ambos.
+ .snap-marker-color = Cor do marcador de snap
+ .linetypes-loaded = __ocs_fmt_0__ tipo(s) de linha carregado(s).
+ .geometric-center-snap = Centro geométrico
+ .no-trim-option = Não aparar
+ .chspace-model-tab = CHSPACE: comando não permitido na guia Modelo.
+ .chspace-no-viewport = CHSPACE: nenhuma janela de vista em planta para mudar de espaço.
+ .chspace-to-paper = CHSPACE: __ocs_fmt_0__ objeto(s) movido(s) para o espaço do papel.
+ .chspace-to-model = CHSPACE: __ocs_fmt_0__ objeto(s) movido(s) para o espaço do modelo.
errors =
.save-warning = Aviso de salvamento
.unable-to-save-drawing = Não foi possível salvar o desenho
@@ -5490,7 +5505,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK definido como 1
.keep-with-dim-line = Manter com a linha de cota
.layers = CAmadas
- .linetype-list-set = LINETYPE [Listar / Definir]:
+ .linetype-list-set = LINETYPE [Listar / Definir / Carregar]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET nome do tipo de linha (PorCamada / PorBloco / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: “__ocs_fmt_0__” não está carregado. Use LINETYPE LIST para ver os tipos disponíveis.
.ltscale-new-global-line-type-scale = LTSCALE nova escala global de tipos de linha:
diff --git a/locales/ru-RU/opencadstudio.ftl b/locales/ru-RU/opencadstudio.ftl
index 045c83bdb..213aa7a0a 100644
--- a/locales/ru-RU/opencadstudio.ftl
+++ b/locales/ru-RU/opencadstudio.ftl
@@ -1522,10 +1522,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = Сбросить настройки? Все текущие сочетания клавиш будут потеряны!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = Сочетание уже используется для команды: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = Несохранённые изменения будут потеряны.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = Управление MCP выключено
.mcp-is-handling-a-request = MCP обрабатывает запрос
@@ -2324,6 +2324,21 @@ common =
.wblock-err-no-path = Укажите имя файла и путь к нему.
.wblock-err-current-drawing = Невозможно записать в текущий файл чертежа.
.wblock-help-info = WBLOCK записывает объекты, блок или весь чертеж в новый файл чертежа.
+ .blank-drawing = Пустой чертёж
+ .default-template-new-drawings = Шаблон по умолчанию для новых чертежей
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = Файлы типов линий
+ .load-linetypes = Загрузить типы линий
+ .requires-two-positive-values = Требуются два положительных значения (x,y) или одно для обоих.
+ .snap-marker-color = Цвет маркера привязки
+ .linetypes-loaded = Загружено типов линий: __ocs_fmt_0__.
+ .geometric-center-snap = Геометрический центр
+ .no-trim-option = Без обрезки
+ .chspace-model-tab = CHSPACE: команда недоступна на вкладке «Модель».
+ .chspace-no-viewport = CHSPACE: нет видового экрана в плане для смены пространства.
+ .chspace-to-paper = CHSPACE: перенесено в пространство листа объектов: __ocs_fmt_0__.
+ .chspace-to-model = CHSPACE: перенесено в пространство модели объектов: __ocs_fmt_0__.
errors =
.save-warning = Спасти предостережение
.unable-to-save-drawing = Не удалось сохранить чертёж
@@ -5491,7 +5506,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK установленный на 1
.keep-with-dim-line = Оставлять рядом с размерной линией
.layers = Лэйерс
- .linetype-list-set = LINETYPE [Список / Задать]:
+ .linetype-list-set = LINETYPE [Список / Задать / Загрузить]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET Имя типа линии (ByLayer / ByBlock / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: "__ocs_fmt_0__" не загружен. Используйте LINETYPE LIST для просмотра доступных типов линий.
.ltscale-new-global-line-type-scale = LTSCALE Новый глобальный масштаб типов линий:
diff --git a/locales/tr-TR/opencadstudio.ftl b/locales/tr-TR/opencadstudio.ftl
index 1906ccc46..6974aef5c 100644
--- a/locales/tr-TR/opencadstudio.ftl
+++ b/locales/tr-TR/opencadstudio.ftl
@@ -1505,10 +1505,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = Sıfırlamak istediğinizden emin misiniz? Mevcut tüm kısayollarınız silinecek!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = Kısayol zaten şu komut için kullanılıyor: __ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = Kaydedilmemiş değişiklikler atılacak.
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = MCP denetimi kapalı
.mcp-is-handling-a-request = MCP bir isteği işliyor
@@ -2305,6 +2305,21 @@ common =
.wblock-err-no-path = Lütfen bir dosya adı ve yolu belirtin.
.wblock-err-current-drawing = Geçerli çizim dosyasına yazılamıyor.
.wblock-help-info = WBLOCK nesneleri, bir bloğu veya tüm çizimi yeni bir çizim dosyasına yazar.
+ .blank-drawing = Boş çizim
+ .default-template-new-drawings = Yeni çizimler için varsayılan şablon
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = Çizgi tipi dosyaları
+ .load-linetypes = Çizgi tiplerini yükle
+ .requires-two-positive-values = İki pozitif değer (x,y) ya da ikisi için tek değer gerekir.
+ .snap-marker-color = Yakalama işaretçisi rengi
+ .linetypes-loaded = __ocs_fmt_0__ çizgi tipi yüklendi.
+ .geometric-center-snap = Geometrik merkez
+ .no-trim-option = Budama yok
+ .chspace-model-tab = CHSPACE: Komut Model sekmesinde kullanılamaz.
+ .chspace-no-viewport = CHSPACE: Alan değiştirmek için plan görünümlü görünüm penceresi yok.
+ .chspace-to-paper = CHSPACE: __ocs_fmt_0__ nesne kağıt alanına taşındı.
+ .chspace-to-model = CHSPACE: __ocs_fmt_0__ nesne model alanına taşındı.
errors =
.save-warning = Kaydetme Uyarısı
.unable-to-save-drawing = Çizim Kaydedilemiyor
@@ -5430,7 +5445,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK 1 olarak ayarlandı
.keep-with-dim-line = Ölçü çizgisiyle birlikte tut
.layers = Katmanlar
- .linetype-list-set = LINETYPE [Listele / Ayarla]:
+ .linetype-list-set = LINETYPE [Listele / Ayarla / Yükle]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET Çizgi tipi adı (Katmandan / Bloktan / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE: "__ocs_fmt_0__" yüklü değil. Kullanılabilir çizgi tipleri için LINETYPE LIST komutunu kullanın.
.ltscale-new-global-line-type-scale = LTSCALE Yeni genel çizgi tipi ölçeği:
diff --git a/locales/zh-CN/opencadstudio.ftl b/locales/zh-CN/opencadstudio.ftl
index 7f8940169..768db134b 100644
--- a/locales/zh-CN/opencadstudio.ftl
+++ b/locales/zh-CN/opencadstudio.ftl
@@ -1506,10 +1506,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = 确定要重置吗?所有当前快捷键都将丢失!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = 快捷键已用于命令:__ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = 未保存的更改将被丢弃。
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = MCP 控制已关闭
.mcp-is-handling-a-request = MCP 正在处理请求
@@ -2308,6 +2308,21 @@ common =
.wblock-err-no-path = 请指定文件名和路径。
.wblock-err-current-drawing = 无法写入当前图形文件。
.wblock-help-info = WBLOCK 将对象、块或整个图形写入新的图形文件。
+ .blank-drawing = 空白图形
+ .default-template-new-drawings = 新图形的默认样板
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = 线型文件
+ .load-linetypes = 加载线型
+ .requires-two-positive-values = 需要两个正值 (x,y),或一个同时用于两者的值。
+ .snap-marker-color = 捕捉标记颜色
+ .linetypes-loaded = 已加载 __ocs_fmt_0__ 个线型。
+ .geometric-center-snap = 几何中心
+ .no-trim-option = 不修剪
+ .chspace-model-tab = CHSPACE: 在“模型”选项卡中不允许使用此命令。
+ .chspace-no-viewport = CHSPACE: 没有可用于更改空间的平面视图视口。
+ .chspace-to-paper = CHSPACE: 已将 __ocs_fmt_0__ 个对象移到图纸空间。
+ .chspace-to-model = CHSPACE: 已将 __ocs_fmt_0__ 个对象移到模型空间。
errors =
.save-warning = 保存警告
.unable-to-save-drawing = 无法保存图形
@@ -5473,7 +5488,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK 设置为 1
.keep-with-dim-line = 保持暗线
.layers = 图层
- .linetype-list-set = LINETYPE [列表 / 设置]:
+ .linetype-list-set = LINETYPE [列表 / 设置 / 加载]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET 线型名称(ByLayer / ByBlock / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE:“__ocs_fmt_0__”未加载。使用 LINETYPE LIST 查看可用线型。
.ltscale-new-global-line-type-scale = LTSCALE 新的全局线型尺度 :
diff --git a/locales/zh-TW/opencadstudio.ftl b/locales/zh-TW/opencadstudio.ftl
index 532c0056b..57a0647ee 100644
--- a/locales/zh-TW/opencadstudio.ftl
+++ b/locales/zh-TW/opencadstudio.ftl
@@ -1518,10 +1518,10 @@ common =
.are-you-sure-you-want-to-reset-you-will-lose-all-your-current-shortcuts = 確定要重設嗎?所有目前快捷鍵都將遺失!
.yes-reset = { common.yes }, { common.reset }
.reset-to-default = { common.reset } · { common.default-title-case }
- .apply-exit = { common.apply } && { draw.sketch-exit }
+ .apply-exit = { common.apply } & { draw.sketch-exit }
.shortcut-already-used-for-command = 快捷鍵已用於指令:__ocs_fmt_0__ → __ocs_fmt_1__
.unsaved-changes-will-be-discarded = 未儲存的變更將被捨棄。
- .discard-close = { common.discard } && { action.close }
+ .discard-close = { common.discard } & { action.close }
.keep-editing = { common.continue } · { layers.edit }
.mcp-control-is-off = MCP 控制已關閉
.mcp-is-handling-a-request = MCP 正在處理要求
@@ -2320,6 +2320,21 @@ common =
.wblock-err-no-path = 請指定檔名和路徑。
.wblock-err-current-drawing = 無法寫入目前圖面檔案。
.wblock-help-info = WBLOCK 將物件、圖塊或整個圖面寫入新的圖面檔案。
+ .blank-drawing = 空白圖面
+ .default-template-new-drawings = 新圖面的預設樣板
+ .fillet-trim-mode-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .fillet-trim-mode-no-trim = FILLET Enter Trim mode option [Trim/No trim] :
+ .linetype-files = 線型檔案
+ .load-linetypes = 載入線型
+ .requires-two-positive-values = 需要兩個正值 (x,y),或一個同時用於兩者的值。
+ .snap-marker-color = 鎖點標記顏色
+ .linetypes-loaded = 已載入 __ocs_fmt_0__ 個線型。
+ .geometric-center-snap = 幾何中心
+ .no-trim-option = 不修剪
+ .chspace-model-tab = CHSPACE: 在「模型」頁籤中不允許使用此指令。
+ .chspace-no-viewport = CHSPACE: 沒有可用於變更空間的平面視圖視埠。
+ .chspace-to-paper = CHSPACE: 已將 __ocs_fmt_0__ 個物件移到圖紙空間。
+ .chspace-to-model = CHSPACE: 已將 __ocs_fmt_0__ 個物件移到模型空間。
errors =
.save-warning = 儲存警告
.unable-to-save-drawing = 無法儲存圖形
@@ -5485,7 +5500,7 @@ styles =
.isavebak-set-to-1 = ISAVEBAK 設定為 1
.keep-with-dim-line = 保持暗線
.layers = 圖層
- .linetype-list-set = LINETYPE [清單 / 設定]:
+ .linetype-list-set = LINETYPE [清單 / 設定 / 載入]:
.linetype-set-linetype-name-bylayer-byblock = LINETYPE SET 線型名稱(ByLayer / ByBlock / …):
.linetype-name-is-not-loaded-use-linetype-list = LINETYPE:“__ocs_fmt_0__”未載入。使用 LINETYPE LIST 查看可用線型。
.ltscale-new-global-line-type-scale = LTSCALE 新的全局線型尺度 :
diff --git a/src/app/command_driver/utilities.rs b/src/app/command_driver/utilities.rs
index 3cd862ae0..05759388d 100644
--- a/src/app/command_driver/utilities.rs
+++ b/src/app/command_driver/utilities.rs
@@ -677,6 +677,7 @@ impl OpenCADStudio {
None
};
let is_escape = matches!(&input, StepInput::Escape);
+ let keyed = matches!(&input, StepInput::Text(_) | StepInput::Enter);
let result: Option = {
let Some(cmd) = self.tabs[i].active_cmd.as_mut() else {
return (Task::none(), false);
@@ -703,7 +704,15 @@ impl OpenCADStudio {
self.tabs[i].pending_pause_tokens = None;
}
match result {
- Some(r) => (self.apply_cmd_result(r), true),
+ Some(r) => {
+ let task = self.apply_cmd_result(r);
+ // A keyword can move the step without the cursor moving
+ // (PEDIT Next vertex): redraw its preview now (#1628).
+ if keyed && self.active_tab == i {
+ self.refresh_active_cmd_preview(i);
+ }
+ (task, true)
+ }
None => (Task::none(), false),
}
}
diff --git a/src/app/commands/dim.rs b/src/app/commands/dim.rs
index 297e89d2a..bb0f570ff 100644
--- a/src/app/commands/dim.rs
+++ b/src/app/commands/dim.rs
@@ -911,13 +911,29 @@ impl OpenCADStudio {
.or_else(|| cmd.strip_prefix("ZOOM S "))
.or_else(|| cmd.strip_prefix("ZS "))
.unwrap_or("1");
- if let Ok(factor) = rest.trim().parse::() {
- if factor > 0.0 {
- self.tabs[i].scene.remember_current_view();
- self.tabs[i].scene.zoom_camera(1.0 / factor);
+ // nXP scales the active viewport against paper space, nX (or
+ // a bare n) the current view (#1465). n may be an expression
+ // such as 1/50.
+ let rest = rest.trim().to_ascii_uppercase();
+ let (number, xp) = match rest.strip_suffix("XP") {
+ Some(n) => (n, true),
+ None => (rest.strip_suffix('X').unwrap_or(&rest), false),
+ };
+ let factor = crate::app::expr_eval::eval_number(number.trim())
+ .filter(|f| f.is_finite() && *f > 0.0);
+ match factor {
+ Some(factor) if xp && self.tabs[i].scene.set_viewport_scale_factor(factor) => {
+ self.tabs[i].dirty = true;
self.command_line
.push_output(crate::tf!("Zoom Scale ×{factor:.3}").as_ref());
}
+ Some(factor) => {
+ self.tabs[i].scene.remember_current_view();
+ self.tabs[i].scene.zoom_camera(1.0 / factor as f32);
+ self.command_line
+ .push_output(crate::tf!("Zoom Scale ×{factor:.3}").as_ref());
+ }
+ None => {}
}
}
diff --git a/src/app/commands/mod.rs b/src/app/commands/mod.rs
index 67f5be6a3..0e1df27d3 100644
--- a/src/app/commands/mod.rs
+++ b/src/app/commands/mod.rs
@@ -634,6 +634,9 @@ inventory::submit!(crate::command::CommandRegistration {
"FITSPLINE",
// System variables (typeable directly).
"MIRRTEXT",
+ "PERSPECTIVE",
+ "GRIDMODE",
+ "GRIDUNIT",
"ZOOMWHEEL",
"ZOOMFACTOR",
"SHORTCUTMENU",
@@ -844,6 +847,7 @@ inventory::submit!(crate::command::CommandRegistration {
"MLSTYLE",
"MS",
"MSPACE",
+ "CHSPACE",
"NAVVCUBE",
"NEW",
"OBJIMPORT",
diff --git a/src/app/commands/styleprops.rs b/src/app/commands/styleprops.rs
index c669354e8..3d8b08aeb 100644
--- a/src/app/commands/styleprops.rs
+++ b/src/app/commands/styleprops.rs
@@ -3,6 +3,65 @@ use super::*;
impl OpenCADStudio {
pub(super) fn dispatch_styleprops(&mut self, cmd: &str, i: usize) -> Option> {
match cmd {
+ // View / grid variables held by the app rather than the header,
+ // typed bare or through SETVAR (#1524, #1618).
+ cmd if matches!(
+ cmd.strip_prefix("SETVAR ").unwrap_or(cmd).split_whitespace().next(),
+ Some("PERSPECTIVE" | "GRIDMODE" | "GRIDUNIT")
+ ) =>
+ {
+ let mut words = cmd.strip_prefix("SETVAR ").unwrap_or(cmd).splitn(2, ' ');
+ let name = words.next().unwrap_or_default().to_string();
+ let value = words.next().map(str::trim).filter(|v| !v.is_empty());
+ let current = match name.as_str() {
+ "PERSPECTIVE" => {
+ let persp = self.tabs[i].scene.camera.borrow().projection
+ == crate::scene::Projection::Perspective;
+ (persp as i32).to_string()
+ }
+ "GRIDMODE" => (self.show_grid as i32).to_string(),
+ _ => format!("{},{}", self.grid_spacing_x, self.grid_spacing_y),
+ };
+ let Some(value) = value else {
+ self.command_line
+ .push_output(&crate::tf!("Enter new value for {name} <{current}>:"));
+ self.pending_setvar = Some(name);
+ return Some(Task::none());
+ };
+ match (name.as_str(), value) {
+ ("PERSPECTIVE", "0" | "1") => {
+ return Some(Task::done(Message::SetProjection(value == "0")));
+ }
+ ("GRIDMODE", "0" | "1") => {
+ if (value == "1") != self.show_grid {
+ return Some(Task::done(Message::ToggleGrid));
+ }
+ }
+ ("GRIDUNIT", _) => {
+ let mut parts = value.split(',').map(|p| p.trim().parse::());
+ let x = parts.next().and_then(Result::ok).filter(|v| *v > 0.0);
+ let y = match parts.next() {
+ Some(p) => p.ok().filter(|v| *v > 0.0),
+ None => x,
+ };
+ let (Some(x), Some(y)) = (x, y) else {
+ self.command_line.push_error(
+ crate::t!("Requires two positive values (x,y) or one for both.")
+ .as_ref(),
+ );
+ return Some(Task::none());
+ };
+ self.grid_spacing_x = x;
+ self.grid_spacing_y = y;
+ self.sync_vport_display(i);
+ self.persist_settings_if_changed();
+ }
+ _ => self
+ .command_line
+ .push_error(crate::t!("Requires 0 or 1").as_ref()),
+ }
+ return Some(Task::none());
+ }
"CETRANSPARENCY" => return self.dispatch_styleprops("SETVAR CETRANSPARENCY", i),
cmd if cmd.starts_with("CETRANSPARENCY ") => {
return self.dispatch_styleprops(&format!("SETVAR {cmd}"), i);
@@ -84,9 +143,10 @@ impl OpenCADStudio {
use crate::command::KeywordCommand;
let c = KeywordCommand::new(
"LINETYPE",
- "LINETYPE [List / Set]:",
+ "LINETYPE [List / Set / Load]:",
vec![
("List", "LIST", None),
+ ("Load", "LOAD", None),
("Set", "SET", Some("LINETYPE SET linetype name (ByLayer / ByBlock / …):")),
],
);
@@ -98,6 +158,13 @@ impl OpenCADStudio {
let parts: Vec<&str> = raw_rest.split_whitespace().collect();
let sub = parts.get(0).map(|s| s.to_uppercase()).unwrap_or_default();
match sub.as_str() {
+ // Load the definitions of a `.lin` file (#1588).
+ "LOAD" | "L" => {
+ return Some(Task::perform(
+ crate::io::pick_linetype_file(),
+ Message::LinetypeLoaded,
+ ));
+ }
"" | "LIST" | "?" => {
let ltypes: Vec = self.tabs[i]
.scene
@@ -3247,7 +3314,7 @@ impl OpenCADStudio {
);
}
}
- cmd if cmd == "DDPTYPE" => {
+ cmd if cmd == "DDPTYPE" || cmd == "PTYPE" => {
// The dialog shows the magnitude; the sign (relative/absolute)
// is driven by the radio buttons. A positive PDSIZE is absolute;
// zero or negative is relative.
diff --git a/src/app/commands/view.rs b/src/app/commands/view.rs
index 5a7e3a81d..3c6bc31dd 100644
--- a/src/app/commands/view.rs
+++ b/src/app/commands/view.rs
@@ -548,6 +548,102 @@ impl OpenCADStudio {
return Some(Task::done(Message::PspaceCommand));
}
+ // ── CHSPACE — move objects between model and paper space through
+ // a viewport, keeping their apparent size and place (#1428).
+ // Inside a viewport the selection goes to the sheet; on the
+ // sheet it goes into the model through the viewport under it.
+ "CHSPACE" => {
+ let handles: Vec = self.tabs[i]
+ .scene
+ .selected_entities()
+ .into_iter()
+ .map(|(h, _)| h)
+ .collect();
+ if self.tabs[i].scene.current_layout == "Model" {
+ self.command_line
+ .push_error(crate::t!("CHSPACE: Command not allowed in the Model tab.").as_ref());
+ return Some(Task::none());
+ }
+ if handles.is_empty() {
+ use crate::modules::draw::select::SelectObjectsCommand;
+ let cmd = SelectObjectsCommand::new("CHSPACE");
+ self.command_line.push_info(&cmd.prompt());
+ self.tabs[i].active_cmd = Some(Box::new(cmd));
+ return Some(Task::none());
+ }
+ let scene = &self.tabs[i].scene;
+ let to_paper = scene.active_viewport.is_some();
+ let frame = match scene.active_viewport {
+ Some(vp) => scene.viewport_frame(vp),
+ None => {
+ // The viewport under the middle of the selection.
+ let (mut lo, mut hi) = (glam::DVec2::MAX, glam::DVec2::MIN);
+ for wire in scene.wire_models_for(&handles) {
+ let [x0, y0, x1, y1] = wire.aabb.map(f64::from);
+ if [x0, y0, x1, y1].iter().all(|v| v.is_finite()) {
+ lo = lo.min(glam::DVec2::new(x0, y0));
+ hi = hi.max(glam::DVec2::new(x1, y1));
+ }
+ }
+ let mid = (lo + hi) * 0.5;
+ mid.is_finite()
+ .then(|| scene.viewport_frames_at_paper_point(mid.extend(0.0)))
+ .and_then(|frames| frames.into_iter().next())
+ }
+ };
+ let Some(frame) = frame else {
+ self.command_line.push_error(
+ crate::t!("CHSPACE: No plan-view viewport to change space through.").as_ref(),
+ );
+ return Some(Task::none());
+ };
+ use crate::command::EntityTransform as T;
+ let z = glam::DVec3::Z;
+ let steps = if to_paper {
+ [
+ T::Translate((-frame.model_target).extend(0.0)),
+ T::Rotate { center: glam::DVec3::ZERO, axis: z, angle_rad: frame.twist },
+ T::Scale { center: glam::DVec3::ZERO, factor: frame.scale },
+ T::Translate(frame.paper_center.extend(0.0)),
+ ]
+ } else {
+ [
+ T::Translate((-frame.paper_center).extend(0.0)),
+ T::Scale { center: glam::DVec3::ZERO, factor: 1.0 / frame.scale },
+ T::Rotate { center: glam::DVec3::ZERO, axis: z, angle_rad: -frame.twist },
+ T::Translate(frame.model_target.extend(0.0)),
+ ]
+ };
+ self.push_undo_snapshot(i, "CHSPACE");
+ let scene = &mut self.tabs[i].scene;
+ let entities: Vec = handles
+ .iter()
+ .filter_map(|h| scene.document.get_entity(*h).cloned())
+ .collect();
+ scene.deselect_all();
+ scene.erase_entities(&handles);
+ // The clones land in the other space: the sheet with no active
+ // viewport, the model with one.
+ let active = scene.active_viewport;
+ scene.active_viewport = if to_paper { None } else { Some(frame.viewport) };
+ let moved: Vec =
+ entities.into_iter().map(|e| scene.add_entity_clone(e)).collect();
+ scene.active_viewport = active;
+ for step in &steps {
+ scene.transform_entities(&moved, step);
+ }
+ self.tabs[i].dirty = true;
+ let count = moved.len();
+ self.command_line.push_output(
+ if to_paper {
+ crate::tf!("CHSPACE: {count} object(s) changed to paper space.")
+ } else {
+ crate::tf!("CHSPACE: {count} object(s) changed to model space.")
+ }
+ .as_ref(),
+ );
+ }
+
// ── Viewport arrangement shortcuts ────────────────────────────
// Tile the model viewports into preset splits. Each delegates to the
// matching VPORTS configuration so the Model/paper handling stays in
diff --git a/src/app/layers.rs b/src/app/layers.rs
index 07e7d8b66..4bedc8968 100644
--- a/src/app/layers.rs
+++ b/src/app/layers.rs
@@ -88,6 +88,11 @@ impl OpenCADStudio {
return;
}
let active = self.tabs[i].active_layer.clone();
+ let vp_column = self.tabs[i].scene.active_viewport.and_then(|vp| {
+ (self.tabs[i].scene.current_layout != "Model")
+ .then(|| self.tabs[i].layers.vp_cols.iter().position(|c| c.handle == vp))
+ .flatten()
+ });
let infos: Vec = self.tabs[i]
.layers
.layers
@@ -100,6 +105,8 @@ impl OpenCADStudio {
visible: l.visible,
frozen: l.frozen,
locked: l.locked,
+ vp_frozen: vp_column
+ .map(|column| (column, l.vp_frozen.get(column).copied().unwrap_or(false))),
})
.collect();
let names: Vec = infos.iter().map(|l| l.name.clone()).collect();
diff --git a/src/app/mod.rs b/src/app/mod.rs
index 06f190af8..258eef13d 100644
--- a/src/app/mod.rs
+++ b/src/app/mod.rs
@@ -590,6 +590,10 @@ pub(super) struct OpenCADStudio {
crosshair_color: Option<[u8; 3]>,
/// Editable Options buffer for the crosshair colour.
crosshair_color_input: String,
+ /// Explicit object-snap marker colour; `None` keeps the automatic one.
+ snap_marker_color: Option<[u8; 3]>,
+ /// Editable Options buffer for the snap marker colour.
+ snap_marker_color_input: String,
/// Defer the ISOLINES mesh rebuild until the slider is released.
isolines_awaiting_regen: bool,
/// Edit buffer for the SNAPANG field on the Options Drafting page. Kept
@@ -1024,6 +1028,8 @@ pub(super) struct OpenCADStudio {
check_missing_fonts: bool,
/// Custom font source base URL; empty selects the community repository.
font_source_url: String,
+ /// Template a new drawing starts from (QNEW); empty = blank.
+ qnew_template: String,
/// Editable copy of `font_source_url` shown in the missing-fonts prompt.
font_source_input: String,
donation_prompt_version: String,
@@ -2289,6 +2295,10 @@ pub enum Message {
LineweightDisplayScaleChanged(i32),
/// Edit the optional crosshair RGB value; blank restores automatic contrast.
CrosshairColorChanged(String),
+ SnapMarkerColorChanged(String),
+ /// Options → Files: the default template for new drawings.
+ QnewTemplateChanged(String),
+ QnewTemplateBrowse,
/// Set the default type/version used when first saving a new drawing.
DefaultSaveFormatChanged(String),
/// Select one of Iced's built-in themes or the editable Custom theme.
@@ -3678,6 +3688,8 @@ pub enum Message {
// ── Plot Style Table ─────────────────────────────────────────────────
/// Open file dialog to load a CTB/STB plot style table.
PlotStyleLoad,
+ /// LINETYPE Load: the picked `.lin` file's text, `None` when cancelled.
+ LinetypeLoaded(Option),
/// Callback when the user picks (or cancels) a CTB/STB file.
/// The Load… picker finished: a table, nothing (cancelled), or why the
/// file could not be read.
@@ -4151,6 +4163,8 @@ impl OpenCADStudio {
cursor_type: settings::CursorType::Crosshair,
crosshair_color: None,
crosshair_color_input: String::new(),
+ snap_marker_color: None,
+ snap_marker_color_input: String::new(),
isolines_awaiting_regen: false,
snap_angle_input: "0".to_string(),
lineweight_display_scale: 100,
@@ -4338,6 +4352,7 @@ impl OpenCADStudio {
default_assoc_prompted: false,
check_missing_fonts: true,
font_source_url: String::new(),
+ qnew_template: String::new(),
font_source_input: String::new(),
donation_prompt_version: String::new(),
read_only: false,
diff --git a/src/app/settings.rs b/src/app/settings.rs
index 3f597c41e..6c80f27d8 100644
--- a/src/app/settings.rs
+++ b/src/app/settings.rs
@@ -251,6 +251,7 @@ const SNAP_ORDER: &[SnapType] = &[
SnapType::Endpoint,
SnapType::Midpoint,
SnapType::Center,
+ SnapType::GeometricCenter,
SnapType::Node,
SnapType::Quadrant,
SnapType::Intersection,
@@ -276,6 +277,7 @@ fn snap_bit(s: SnapType) -> Option {
SnapType::Midpoint => 2,
SnapType::Center => 4,
SnapType::Node => 8,
+ SnapType::GeometricCenter => 1024,
SnapType::Quadrant => 16,
SnapType::Intersection => 32,
SnapType::Insertion => 64,
@@ -430,6 +432,8 @@ pub struct UserSettings {
pub cursor_type: CursorType,
/// Explicit crosshair RGB. `None` keeps automatic background contrast.
pub crosshair_color: Option<[u8; 3]>,
+ /// Explicit object-snap marker RGB. `None` keeps the automatic colour.
+ pub snap_marker_color: Option<[u8; 3]>,
/// Model-space lineweight preview scale as a percentage.
pub lineweight_display_scale: i32,
/// Isometric drafting changes the grid and crosshair to the active axis
@@ -459,6 +463,9 @@ pub struct UserSettings {
/// so an intranet folder or a private GitHub raw folder both work.
#[serde(default)]
pub font_source_url: String,
+ /// Drawing new tabs start from (QNEW template); empty = a blank drawing.
+ #[serde(default)]
+ pub qnew_template: String,
/// App version whose donation prompt has been displayed.
pub donation_prompt_version: String,
/// The graphics verdict (`GpuStatus::identity()`) whose warning popup the
@@ -819,6 +826,7 @@ impl Default for UserSettings {
ncopy_bind: false,
cursor_type: CursorType::Crosshair,
crosshair_color: None,
+ snap_marker_color: None,
lineweight_display_scale: 100,
isometric_drafting: false,
iso_plane: IsoPlane::Left,
@@ -827,6 +835,7 @@ impl Default for UserSettings {
default_assoc_prompted: false,
check_missing_fonts: true,
font_source_url: String::new(),
+ qnew_template: String::new(),
donation_prompt_version: String::new(),
gpu_warning_silenced: String::new(),
disabled_plugins: Vec::new(),
diff --git a/src/app/update/command.rs b/src/app/update/command.rs
index dfd004c20..ebbc09abb 100644
--- a/src/app/update/command.rs
+++ b/src/app/update/command.rs
@@ -1311,6 +1311,7 @@ pub(super) fn on_tab_close(&mut self, idx: usize) -> Task {
self.tabs[i]
.layers
.sync_with_viewports(&doc_layers, vp_info);
+ self.sync_ribbon_layers();
// Per-viewport layer visibility changes the resident
// assembly, not any entity's tessellated geometry.
self.tabs[i].scene.bump_geometry_no_blocks();
diff --git a/src/app/update/file.rs b/src/app/update/file.rs
index 3f1f17652..935bb7dff 100644
--- a/src/app/update/file.rs
+++ b/src/app/update/file.rs
@@ -681,6 +681,7 @@ impl OpenCADStudio {
ncopy_bind: self.ncopy_bind,
cursor_type: self.cursor_type,
crosshair_color: self.crosshair_color,
+ snap_marker_color: self.snap_marker_color,
lineweight_display_scale: self.lineweight_display_scale,
isometric_drafting: self.isometric_drafting,
iso_plane: self.iso_plane,
@@ -689,6 +690,7 @@ impl OpenCADStudio {
default_assoc_prompted: self.default_assoc_prompted,
check_missing_fonts: self.check_missing_fonts,
font_source_url: self.font_source_url.clone(),
+ qnew_template: self.qnew_template.clone(),
donation_prompt_version: self.donation_prompt_version.clone(),
gpu_warning_silenced: self.gpu_warning_silenced.clone(),
disabled_plugins: {
@@ -791,6 +793,11 @@ impl OpenCADStudio {
.crosshair_color
.map(crate::app::config::rgb_to_hex)
.unwrap_or_default();
+ self.snap_marker_color = s.snap_marker_color;
+ self.snap_marker_color_input = s
+ .snap_marker_color
+ .map(crate::app::config::rgb_to_hex)
+ .unwrap_or_default();
self.lineweight_display_scale = s.lineweight_display_scale.clamp(25, 200);
self.isometric_drafting = s.isometric_drafting;
self.iso_plane = s.iso_plane;
@@ -808,6 +815,7 @@ impl OpenCADStudio {
self.default_assoc_prompted = s.default_assoc_prompted;
self.check_missing_fonts = s.check_missing_fonts;
self.font_source_url = s.font_source_url.clone();
+ self.qnew_template = s.qnew_template.clone();
self.font_source_input = s.font_source_url.clone();
self.donation_prompt_version = s.donation_prompt_version.clone();
self.gpu_warning_silenced = s.gpu_warning_silenced.clone();
@@ -3603,10 +3611,13 @@ impl OpenCADStudio {
pub(super) fn apply_plot_page_settings(&mut self) {
let i = self.active_tab;
let layout_name = self.tabs[i].scene.current_layout.clone();
+ let ps = self.plot_settings_from_dialog(self.dialog_base_settings());
if layout_name == "Model" {
+ // Model keeps its page setup too (#1620); it has no sheet limits.
+ self.tabs[i].scene.set_layout_plot_settings(&layout_name, &ps);
+ self.tabs[i].dirty = true;
return;
}
- let ps = self.plot_settings_from_dialog(self.dialog_base_settings());
let (w, h) = plot_dialog_sheet_mm(&self.plot_dialog);
let plot_area = self.plot_dialog.area.clone();
let center = ps.flags.plot_centered;
@@ -5360,7 +5371,7 @@ impl OpenCADStudio {
// into it when "Save changes to layout" is on, so the page setup
// remembers the last plot the way other applications expect. The
// runtime paper/scale choices drive this one plot operation either way.
- if !preview && d.save_to_layout && d.paper_space {
+ if !preview && d.save_to_layout {
self.apply_dialog_to_layout();
} else {
self.sync_dialog_plot_runtime();
diff --git a/src/app/update/mod.rs b/src/app/update/mod.rs
index 2479c1878..b598c2c87 100644
--- a/src/app/update/mod.rs
+++ b/src/app/update/mod.rs
@@ -1877,6 +1877,20 @@ impl OpenCADStudio {
self.sync_ribbon_from_selection();
// A fresh drawing starts with grid/snap off (its tile defaults).
self.adopt_view_display(self.active_tab);
+ // QNEW: start from the default template when one is set (#1113).
+ let template = self.qnew_template.trim().to_string();
+ if !template.is_empty() {
+ match self.apply_template(&template) {
+ Ok(_) => {
+ self.tabs[idx].dirty = false;
+ self.refresh_layer_panel();
+ self.sync_ribbon_styles();
+ }
+ Err(error) => self.command_line.push_error(
+ error["error"].as_str().unwrap_or("template"),
+ ),
+ }
+ }
Task::none()
}
@@ -5809,6 +5823,10 @@ impl OpenCADStudio {
if id == crate::modules::insert::insert_block::GALLERY_ID {
self.refresh_block_palette();
}
+ // The per-viewport freeze column follows the active viewport.
+ if id == crate::ui::ribbon::widgets::LAYER_COMBO_ID {
+ self.refresh_layer_panel();
+ }
self.ribbon.toggle_dropdown(&id);
}
Task::none()
@@ -8005,6 +8023,39 @@ impl OpenCADStudio {
Task::none()
}
+ Message::QnewTemplateChanged(path) => {
+ self.qnew_template = path;
+ self.persist_settings_if_changed();
+ Task::none()
+ }
+ Message::QnewTemplateBrowse => Task::perform(
+ async {
+ crate::sys::file_dialog()
+ .add_filter(
+ crate::t!("Drawing Template (*.dwt)").as_ref(),
+ &["dwt", "DWT", "dwg", "DWG", "dxf", "DXF"],
+ )
+ .pick_file()
+ .await
+ .map(|handle| crate::sys::handle_path(&handle).display().to_string())
+ },
+ |path| match path {
+ Some(path) => Message::QnewTemplateChanged(path),
+ None => Message::Noop,
+ },
+ ),
+ Message::SnapMarkerColorChanged(value) => {
+ self.snap_marker_color_input = value.clone();
+ if value.trim().is_empty() {
+ self.snap_marker_color = None;
+ self.persist_settings_if_changed();
+ } else if let Some(rgb) = crate::app::config::parse_hex(&value) {
+ self.snap_marker_color = Some(rgb);
+ self.persist_settings_if_changed();
+ }
+ Task::none()
+ }
+
Message::DefaultSaveFormatChanged(format) => {
self.default_save_format = crate::io::canonical_save_format(&format).to_string();
self.persist_settings_if_changed();
@@ -9835,6 +9886,22 @@ impl OpenCADStudio {
}
// ── Plot Style Table ──────────────────────────────────────────────
+ Message::LinetypeLoaded(Some(source)) => {
+ let i = self.active_tab;
+ self.push_undo_snapshot(i, "LINETYPE");
+ let added = crate::io::linetypes::populate_document_from_source(
+ &mut self.tabs[i].scene.document,
+ &source,
+ );
+ if added > 0 {
+ self.tabs[i].dirty = true;
+ self.tabs[i].scene.bump_geometry();
+ }
+ self.command_line
+ .push_output(crate::tf!("{added} linetype(s) loaded.").as_ref());
+ Task::none()
+ }
+ Message::LinetypeLoaded(None) => Task::none(),
Message::PlotStyleLoad => {
Task::perform(crate::io::pick_plot_style(), Message::PlotStyleLoaded)
}
diff --git a/src/app/view/mod.rs b/src/app/view/mod.rs
index 6b3c81c15..5c275089d 100644
--- a/src/app/view/mod.rs
+++ b/src/app/view/mod.rs
@@ -925,6 +925,13 @@ bg={bg_ms:.1}ms n={view_count}"
iso_plane: self.iso_plane,
snap_angle_deg: self.snap_angle_deg,
pick_pending: self.pending_pick_label().is_some(),
+ // An infinite-line preview runs along the arms; drop them
+ // so the preview stays visible (#1437).
+ hide_arms: tab
+ .active_cmd
+ .as_ref()
+ .is_some_and(|c| matches!(c.name(), "XLINE" | "RAY")),
+ snap_color: self.snap_marker_color,
},
crate::ui::overlay::SelectionVisualOptions {
area: self.model_space.selection_area,
diff --git a/src/app/view/modal.rs b/src/app/view/modal.rs
index 87b0fb129..4426936dd 100644
--- a/src/app/view/modal.rs
+++ b/src/app/view/modal.rs
@@ -383,11 +383,14 @@ impl OpenCADStudio {
crate::ui::window::options::Folders::default()
}
},
+ &self.qnew_template,
self.double_click_block_refedit,
self.double_click_block_attedit,
self.cursor_type,
self.crosshair_color,
&self.crosshair_color_input,
+ self.snap_marker_color,
+ &self.snap_marker_color_input,
self.lineweight_display_scale,
&self.model_space,
&self.model_bg_input,
diff --git a/src/entities/common.rs b/src/entities/common.rs
index 4f5e799d7..6816f66ac 100644
--- a/src/entities/common.rs
+++ b/src/entities/common.rs
@@ -951,25 +951,34 @@ pub(crate) fn tapered_band_points(
let seg_count = if is_closed { n } else { n.saturating_sub(1) };
let mut pts: Vec<[f64; 3]> = Vec::with_capacity(seg_count + 1);
let mut widths: Vec = Vec::with_capacity(seg_count + 1);
- let mut push = |x: f64, y: f64, w: f32| {
- let (wx, wy, wz) = to_wcs(x, y);
- pts.push([wx, wy, wz]);
+ let mut push = |xy: Option<(f64, f64)>, w: f32| {
+ // `None` is the NaN separator that breaks the band.
+ pts.push(xy.map_or([f64::NAN; 3], |(x, y)| to_wcs(x, y).into()));
widths.push(w);
};
+ let mut prev_end_width: Option = None;
for i in 0..seg_count {
let (p0, bulge, sw0, ew0) = verts[i];
let (p1, _, _, _) = verts[(i + 1) % n];
- if i == 0 {
- push(p0[0], p0[1], sw0 as f32);
+ match prev_end_width {
+ None => push(Some((p0[0], p0[1])), sw0 as f32),
+ // A segment starting at another width than the last one ended
+ // steps there: break the band and restart it (#1628).
+ Some(prev) if (prev - sw0).abs() > 1e-9 => {
+ push(None, 0.0);
+ push(Some((p0[0], p0[1])), sw0 as f32);
+ }
+ Some(_) => {}
}
+ prev_end_width = Some(ew0);
if bulge.abs() < 1e-9 {
- push(p1[0], p1[1], ew0 as f32);
+ push(Some((p1[0], p1[1])), ew0 as f32);
} else if let Some(arc) = BulgeArc::from_bulge(p0, p1, bulge) {
let samples = arc.tessellate_angle(kernel::tessellation::DEFAULT_ANGLE);
let segments = samples.len().saturating_sub(1).max(1);
for (index, s) in samples.into_iter().enumerate().skip(1) {
let t = index as f64 / segments as f64;
- push(s[0], s[1], (sw0 + (ew0 - sw0) * t) as f32);
+ push(Some((s[0], s[1])), (sw0 + (ew0 - sw0) * t) as f32);
}
}
}
diff --git a/src/entities/dimension.rs b/src/entities/dimension.rs
index 28f1428d8..71104f254 100644
--- a/src/entities/dimension.rs
+++ b/src/entities/dimension.rs
@@ -842,12 +842,22 @@ fn large_radial_rotation(d: &DimensionLargeRadial) -> f64 {
}
fn apply_transform(dim: &mut Dimension, t: &EntityTransform) {
+ // A zero text point is the "placed automatically" sentinel, not a
+ // location: moving it to wherever the origin lands left the text there.
+ let auto_text = {
+ let base = dim.base();
+ let p = base.text_middle_point;
+ !base.text_user_positioned && p.x == 0.0 && p.y == 0.0 && p.z == 0.0
+ };
crate::scene::view::transform::apply_standard_entity_transform(dim, t, |entity, p1, p2| {
codec::Entity::apply_transform(
entity,
&crate::scene::view::transform::reflection_about_xy_line(p1, p2),
);
});
+ if auto_text {
+ reset_automatic_text_position(dim.base_mut());
+ }
}
impl PropertyEditable for Dimension {
diff --git a/src/io/font_repo.rs b/src/io/font_repo.rs
index 4b681499e..23e66cc74 100644
--- a/src/io/font_repo.rs
+++ b/src/io/font_repo.rs
@@ -82,7 +82,10 @@ pub fn missing_shx_fonts(doc: &CadDocument) -> Vec {
// The primary font and the big font (Asian double-byte glyphs) are
// both plain .shx files the style depends on.
for file in [style.font_file.trim(), style.big_font_file.trim()] {
- if file.is_empty() || !file.to_ascii_lowercase().ends_with(".shx") {
+ if file.is_empty()
+ || !file.to_ascii_lowercase().ends_with(".shx")
+ || crate::io::linetypes::is_bundled_shape_file(file)
+ {
continue;
}
let resolved = crate::io::resolve_image_file(file, base).is_some()
diff --git a/src/io/linetypes.rs b/src/io/linetypes.rs
index 4d286baf6..b5018bce0 100644
--- a/src/io/linetypes.rs
+++ b/src/io/linetypes.rs
@@ -345,6 +345,13 @@ fn bundled_shape_name(file: &str, number: i16) -> Option<&'static str> {
.map(|(_, name, _)| *name)
}
+/// Whether `file` is a shape file the bundled LFF substitutes stand in for,
+/// so its absence on disk never needs reporting.
+pub fn is_bundled_shape_file(file: &str) -> bool {
+ let stem = shape_file_stem(file);
+ BUNDLED_SHAPES.iter().any(|(f, _, _)| *f == stem)
+}
+
/// The drawing's shape-file STYLE for `file`, added when missing (an empty
/// name, as shape files are stored).
fn shape_file_style(doc: &mut CadDocument, file: &str) -> codec::Handle {
diff --git a/src/io/mod.rs b/src/io/mod.rs
index ffaeba33b..6ff41327a 100644
--- a/src/io/mod.rs
+++ b/src/io/mod.rs
@@ -170,9 +170,10 @@ impl From<&str> for OpenLoadError {
pub async fn pick_open_path() -> Option<(PathBuf, u64)> {
let handle = crate::sys::file_dialog()
.set_title(crate::t!("Open CAD file").as_ref())
- .add_filter(crate::t!("CAD Files").as_ref(), &["dwg", "dxf", "bak", "sv$", "DWG", "DXF", "BAK"])
+ .add_filter(crate::t!("CAD Files").as_ref(), &["dwg", "dxf", "dwt", "bak", "sv$", "DWG", "DXF", "DWT", "BAK"])
.add_filter(crate::t!("DWG Files").as_ref(), &["dwg", "DWG"])
.add_filter(crate::t!("DXF Files").as_ref(), &["dxf", "DXF"])
+ .add_filter(crate::t!("Drawing Template (*.dwt)").as_ref(), &["dwt", "DWT"])
.add_filter(crate::t!("Backup / Autosave").as_ref(), &["bak", "sv$", "BAK"])
.add_filter(crate::t!("All Files").as_ref(), &["*"])
.pick_file()
@@ -1761,6 +1762,16 @@ mod save_failure_tests {
/// picked from outside the plot styles folder is copied into it (unless a
/// file of that name is already there), so the dialog lists it from now on
/// and page setups naming it resolve after a restart.
+/// Pick a `.lin` linetype definition file and return its text (#1588).
+pub async fn pick_linetype_file() -> Option {
+ let handle = crate::sys::file_dialog()
+ .set_title(crate::t!("Load Linetypes").as_ref())
+ .add_filter(crate::t!("Linetype Files").as_ref(), &["lin", "LIN"])
+ .pick_file()
+ .await?;
+ Some(String::from_utf8_lossy(&handle.read().await).into_owned())
+}
+
pub async fn pick_plot_style() -> Result