Merge pull request #1642 from ramox81/codex/sweep-corner-followups

This commit is contained in:
Hakan Seven committed 2026-10-07 12:55:08 +03:00
commit 737981791b
29 files changed
+482 -108

No files matched your search

+13 -2
View File
@@ -3898,13 +3898,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP حدد نقطة الأساس:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP حدد نقطة المرجع الثانية:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP أدخل التعبير:
.sweep-specify-start-reference-length = SWEEP حدد طول المرجع الابتدائي
.sweep-specify-end-reference-length = SWEEP حدد طول المرجع النهائي
.sweep-specify-second-point = SWEEP حدد النقطة الثانية:
.sweep-expression-invalid = الصيغة غير صحيحة أو أن متغيرًا غير معرّف. أعد إدخال التعبير أو القيمة.
.sweep-modeling-operation-error = خطأ في عملية النمذجة:
.sweep-error-code-number = رقم رمز الخطأ: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = تعذر مسح __ocs_fmt_0__ من الكائنات المحددة.
.sweep-scale-closed-path = لا يمكن استخدام خيار المقياس عندما يكون منحنى المسار مغلقًا.
.sweep-scale-smooth-path = يجب أن يكون منحنى المسار سلسًا عند استخدام خيار المقياس.
.sweep-path-curve-not-valid = منحنى المسار المحدد غير صالح.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = تُسمح المقاطع النقطية عند البداية أو النهاية فقط، مع وجود منحنى بين الطرفين النقطيين.
.loft-requires-at-least-two-cross-sections = يتطلب LOFT مقطعين على الأقل.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = يتطلب التشكيل المغلق ثلاثة مقاطع منحنية على الأقل دون أطراف نقطية.
+13 -2
View File
@@ -3885,13 +3885,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP Посочи базова точка:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP Посочи втора референтна точка:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP Въведете израз:
.sweep-specify-start-reference-length = SWEEP Задайте начална референтна дължина
.sweep-specify-end-reference-length = SWEEP Задайте крайна референтна дължина
.sweep-specify-second-point = SWEEP Задайте втора точка:
.sweep-expression-invalid = Синтаксисът е грешен или променлива не е дефинирана. Въведете отново израза или стойността.
.sweep-modeling-operation-error = Грешка при моделираща операция:
.sweep-error-code-number = Номер на кода на грешката: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = __ocs_fmt_0__ избрани обекта не могат да бъдат изтеглени.
.sweep-scale-closed-path = Опцията за мащаб не може да се използва при затворена крива на траекторията.
.sweep-scale-smooth-path = Кривата на траекторията трябва да е гладка при опцията за мащаб.
.sweep-path-curve-not-valid = Избраната крива на траекторията е невалидна.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = Точкови сечения са разрешени само в началото или края, с крива между точковите краища.
.loft-requires-at-least-two-cross-sections = LOFT изисква поне две сечения.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = Затвореният лофт изисква поне три криви сечения и никакви точкови краища.
+13 -2
View File
@@ -3883,13 +3883,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP Určete základní bod:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP Zadejte druhý referenční bod:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP Zadejte výraz:
.sweep-specify-start-reference-length = SWEEP Zadejte počáteční referenční délku
.sweep-specify-end-reference-length = SWEEP Zadejte koncovou referenční délku
.sweep-specify-second-point = SWEEP Zadejte druhý bod:
.sweep-expression-invalid = Syntaxe je nesprávná nebo proměnná není definována. Zadejte znovu výraz nebo hodnotu.
.sweep-modeling-operation-error = Chyba operace modelování:
.sweep-error-code-number = Číslo kódu chyby: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = Nelze tažením vytvořit __ocs_fmt_0__ vybraných objektů.
.sweep-scale-closed-path = Volbu měřítka nelze použít, je-li křivka trajektorie uzavřená.
.sweep-scale-smooth-path = Při použití volby měřítka musí být křivka trajektorie hladká.
.sweep-path-curve-not-valid = Vybraná křivka trajektorie není platná.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = Bodové průřezy jsou povoleny jen na začátku nebo konci, s křivkou mezi bodovými konci.
.loft-requires-at-least-two-cross-sections = LOFT vyžaduje alespoň dva průřezy.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = Uzavřené šablonování vyžaduje alespoň tři křivkové průřezy a žádné bodové konce.
+13 -2
View File
@@ -3884,13 +3884,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP Basispunkt angeben:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP Zweiter Bezugspunkt angeben:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP Ausdruck eingeben:
.sweep-specify-start-reference-length = SWEEP Anfängliche Referenzlänge angeben
.sweep-specify-end-reference-length = SWEEP End-Referenzlänge angeben
.sweep-specify-second-point = SWEEP Zweiten Punkt angeben:
.sweep-expression-invalid = Die Syntax ist falsch oder eine Variable ist nicht definiert. Ausdruck oder Wert erneut eingeben.
.sweep-modeling-operation-error = Modellierungsfehler:
.sweep-error-code-number = Fehlercode-Nummer: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = __ocs_fmt_0__ gewählte Objekte konnten nicht gesweept werden.
.sweep-scale-closed-path = Die Skalierungsoption kann bei geschlossener Pfadkurve nicht verwendet werden.
.sweep-scale-smooth-path = Die Pfadkurve muss bei Verwendung der Skalierungsoption glatt sein.
.sweep-path-curve-not-valid = Die gewählte Pfadkurve ist ungültig.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = Punktquerschnitte sind nur am Anfang oder Ende zulässig; zwischen Punktenden muss eine Kurve liegen.
.loft-requires-at-least-two-cross-sections = LOFT erfordert mindestens zwei Querschnitte.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = Ein geschlossener Loft erfordert mindestens drei Kurvenquerschnitte und keine Punktenden.
+13 -2
View File
@@ -3895,13 +3895,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP Ορίστε σημείο βάσης:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP Ορίστε δεύτερο σημείο αναφοράς:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP Εισαγάγετε έκφραση:
.sweep-specify-start-reference-length = SWEEP Καθορίστε το αρχικό μήκος αναφοράς
.sweep-specify-end-reference-length = SWEEP Καθορίστε το τελικό μήκος αναφοράς
.sweep-specify-second-point = SWEEP Καθορίστε το δεύτερο σημείο:
.sweep-expression-invalid = Η σύνταξη είναι λανθασμένη ή μια μεταβλητή δεν έχει οριστεί. Εισαγάγετε ξανά την έκφραση ή την τιμή.
.sweep-modeling-operation-error = Σφάλμα λειτουργίας μοντελοποίησης:
.sweep-error-code-number = Αριθμός κωδικού σφάλματος: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = Δεν είναι δυνατή η σάρωση __ocs_fmt_0__ επιλεγμένων αντικειμένων.
.sweep-scale-closed-path = Η επιλογή κλίμακας δεν μπορεί να χρησιμοποιηθεί όταν η καμπύλη διαδρομής είναι κλειστή.
.sweep-scale-smooth-path = Η καμπύλη διαδρομής πρέπει να είναι ομαλή όταν χρησιμοποιείται η επιλογή κλίμακας.
.sweep-path-curve-not-valid = Η επιλεγμένη καμπύλη διαδρομής δεν είναι έγκυρη.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = Οι σημειακές διατομές επιτρέπονται μόνο στα άκρα, με καμπύλη ανάμεσα σε σημειακά άκρα.
.loft-requires-at-least-two-cross-sections = Το LOFT απαιτεί τουλάχιστον δύο διατομές.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = Κλειστή διαμόρφωση απαιτεί τουλάχιστον τρεις καμπύλες διατομές και κανένα σημειακό άκρο.
+13 -2
View File
@@ -3896,13 +3896,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP Select sweep path or [Alignment/Base point/Scale/Twist]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP Align sweep object perpendicular to path [Yes/No]
.sweep-specify-base-point = SWEEP Specify base point:
.sweep-enter-scale-factor-or-reference = SWEEP Enter scale factor or [Reference]
.sweep-enter-scale-factor-or-reference = SWEEP Enter scale factor or [Reference/Expression]
.sweep-specify-reference-length-or-first-point = SWEEP Specify reference length or first point
.sweep-specify-second-reference-point = SWEEP Specify second reference point:
.sweep-specify-new-length-or-points = SWEEP Specify new length or [Points]
.sweep-specify-first-point-of-new-length = SWEEP Specify first point of new length:
.sweep-specify-second-point-of-new-length = SWEEP Specify second point of new length:
.sweep-specify-twist-angle-or-bank = SWEEP Specify twist angle or [Bank]
.sweep-specify-twist-angle-or-bank = SWEEP Enter twist angle or allow banking for a non-planar sweep path [Bank/EXpression]
.sweep-enter-expression = SWEEP Enter expression:
.sweep-specify-start-reference-length = SWEEP Specify start reference length
.sweep-specify-end-reference-length = SWEEP Specify end reference length
.sweep-specify-second-point = SWEEP Specify second point:
.sweep-expression-invalid = The syntax is incorrect or a variable is not defined. Reenter the expression or value.
.sweep-modeling-operation-error = Modeling Operation Error:
.sweep-error-code-number = Error Code Number is __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = Unable to sweep __ocs_fmt_0__ selected objects.
.sweep-scale-closed-path = Cannot use scale option when path curve is closed.
.sweep-scale-smooth-path = Path curve must be smooth when using scale option.
.sweep-path-curve-not-valid = The selected path curve is not valid.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = Point cross-sections are allowed only at the first or last end, with a curve between point ends.
.loft-requires-at-least-two-cross-sections = LOFT requires at least two cross-sections.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = A closed loft requires at least three curve cross-sections and no point ends.
+13 -2
View File
@@ -3886,13 +3886,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP Especifique el punto base:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP Precise el segundo punto de referencia:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP Introduzca la expresión:
.sweep-specify-start-reference-length = SWEEP Precise la longitud de referencia inicial
.sweep-specify-end-reference-length = SWEEP Precise la longitud de referencia final
.sweep-specify-second-point = SWEEP Precise el segundo punto:
.sweep-expression-invalid = La sintaxis es incorrecta o una variable no está definida. Vuelva a introducir la expresión o el valor.
.sweep-modeling-operation-error = Error de operación de modelado:
.sweep-error-code-number = Número de código de error: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = No se pueden barrer __ocs_fmt_0__ objetos seleccionados.
.sweep-scale-closed-path = No se puede usar la opción de escala si la curva de trayectoria está cerrada.
.sweep-scale-smooth-path = La curva de trayectoria debe ser suave al usar la opción de escala.
.sweep-path-curve-not-valid = La curva de trayectoria seleccionada no es válida.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = Las secciones de punto solo se permiten en los extremos, con una curva entre extremos de punto.
.loft-requires-at-least-two-cross-sections = LOFT requiere al menos dos secciones.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = Un solevado cerrado requiere al menos tres secciones de curva y ningún extremo de punto.
+13 -2
View File
@@ -3885,13 +3885,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP Määritä peruspiste:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP Määritä toinen vertailupiste:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP Anna lauseke:
.sweep-specify-start-reference-length = SWEEP Määritä alkuviitepituus
.sweep-specify-end-reference-length = SWEEP Määritä loppuviitepituus
.sweep-specify-second-point = SWEEP Määritä toinen piste:
.sweep-expression-invalid = Syntaksi on virheellinen tai muuttujaa ei ole määritetty. Anna lauseke tai arvo uudelleen.
.sweep-modeling-operation-error = Mallinnustoiminnon virhe:
.sweep-error-code-number = Virhekoodin numero: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = __ocs_fmt_0__ valittua objektia ei voitu pyyhkäistä.
.sweep-scale-closed-path = Skaalausasetusta ei voi käyttää, kun polkukäyrä on suljettu.
.sweep-scale-smooth-path = Polkukäyrän on oltava sileä skaalausasetusta käytettäessä.
.sweep-path-curve-not-valid = Valittu polkukäyrä ei kelpaa.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = Pistepoikkileikkaukset sallitaan vain alku- tai loppupäässä, ja pistepäiden välissä on oltava käyrä.
.loft-requires-at-least-two-cross-sections = LOFT vaatii vähintään kaksi poikkileikkausta.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = Suljettu loft vaatii vähintään kolme käyräpoikkileikkausta ilman pistepäitä.
+13 -2
View File
@@ -3886,13 +3886,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP Spécifier le point de base:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP Préciser le deuxième point de référence:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP Entrez l'expression :
.sweep-specify-start-reference-length = SWEEP Spécifiez la longueur de référence de départ
.sweep-specify-end-reference-length = SWEEP Spécifiez la longueur de référence de fin
.sweep-specify-second-point = SWEEP Spécifiez le deuxième point :
.sweep-expression-invalid = La syntaxe est incorrecte ou une variable n'est pas définie. Entrez de nouveau l'expression ou la valeur.
.sweep-modeling-operation-error = Erreur d'opération de modélisation :
.sweep-error-code-number = Numéro du code d'erreur : __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = Impossible de balayer __ocs_fmt_0__ objets sélectionnés.
.sweep-scale-closed-path = Impossible d'utiliser l'option d'échelle lorsque la courbe de trajectoire est fermée.
.sweep-scale-smooth-path = La courbe de trajectoire doit être lisse avec l'option d'échelle.
.sweep-path-curve-not-valid = La courbe de trajectoire sélectionnée n'est pas valide.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = Les sections ponctuelles ne sont autorisées qu’aux extrémités, avec une courbe entre deux extrémités ponctuelles.
.loft-requires-at-least-two-cross-sections = LOFT nécessite au moins deux sections.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = Un lissage fermé nécessite au moins trois sections courbes et aucune extrémité ponctuelle.
+13 -2
View File
@@ -3874,13 +3874,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP आधार बिंदु निर्दिष्ट करें:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP दूसरे संदर्भ बिंदु को निर्दिष्ट करें:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP व्यंजक दर्ज करें:
.sweep-specify-start-reference-length = SWEEP प्रारंभिक संदर्भ लंबाई निर्दिष्ट करें
.sweep-specify-end-reference-length = SWEEP अंतिम संदर्भ लंबाई निर्दिष्ट करें
.sweep-specify-second-point = SWEEP दूसरा बिंदु निर्दिष्ट करें:
.sweep-expression-invalid = सिंटैक्स गलत है या कोई चर परिभाषित नहीं है। व्यंजक या मान फिर से दर्ज करें।
.sweep-modeling-operation-error = मॉडलिंग ऑपरेशन त्रुटि:
.sweep-error-code-number = त्रुटि कोड संख्या: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = __ocs_fmt_0__ चयनित ऑब्जेक्ट स्वीप नहीं किए जा सके।
.sweep-scale-closed-path = पथ वक्र बंद होने पर स्केल विकल्प का उपयोग नहीं किया जा सकता।
.sweep-scale-smooth-path = स्केल विकल्प का उपयोग करते समय पथ वक्र चिकना होना चाहिए।
.sweep-path-curve-not-valid = चयनित पथ वक्र मान्य नहीं है।
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = बिंदु अनुप्रस्थ काट केवल पहले या अंतिम सिरे पर हो सकते हैं; बिंदु सिरों के बीच एक वक्र होना चाहिए।
.loft-requires-at-least-two-cross-sections = LOFT के लिए कम से कम दो अनुप्रस्थ काट आवश्यक हैं।
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = बंद लॉफ्ट के लिए कम से कम तीन वक्र अनुप्रस्थ काट चाहिए और कोई बिंदु सिरा नहीं होना चाहिए।
+13 -2
View File
@@ -3885,13 +3885,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP Adja meg a bázispontot:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP Második referenciapont megadása:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP Adja meg a kifejezést:
.sweep-specify-start-reference-length = SWEEP Adja meg a kezdő referenciahosszt
.sweep-specify-end-reference-length = SWEEP Adja meg a záró referenciahosszt
.sweep-specify-second-point = SWEEP Adja meg a második pontot:
.sweep-expression-invalid = A szintaxis hibás, vagy egy változó nincs definiálva. Adja meg újra a kifejezést vagy az értéket.
.sweep-modeling-operation-error = Modellezési művelet hiba:
.sweep-error-code-number = Hibakód száma: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = __ocs_fmt_0__ kijelölt objektum nem söpörhető.
.sweep-scale-closed-path = A méretezés lehetőség nem használható zárt pályagörbénél.
.sweep-scale-smooth-path = A méretezés lehetőség használatakor a pályagörbének simának kell lennie.
.sweep-path-curve-not-valid = A kijelölt pályagörbe érvénytelen.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = Pontkeresztmetszet csak a kezdő- vagy végponton lehet, a pontvégek között görbének kell lennie.
.loft-requires-at-least-two-cross-sections = A LOFT legalább két keresztmetszetet igényel.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = A zárt pásztázás legalább három görbekeresztmetszetet igényel pontvégek nélkül.
+13 -2
View File
@@ -3885,13 +3885,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP Specificare il punto base:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP Specificare il secondo punto di riferimento:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP Immettere l'espressione:
.sweep-specify-start-reference-length = SWEEP Specificare la lunghezza di riferimento iniziale
.sweep-specify-end-reference-length = SWEEP Specificare la lunghezza di riferimento finale
.sweep-specify-second-point = SWEEP Specificare il secondo punto:
.sweep-expression-invalid = La sintassi non è corretta o una variabile non è definita. Immettere di nuovo l'espressione o il valore.
.sweep-modeling-operation-error = Errore operazione di modellazione:
.sweep-error-code-number = Numero codice errore: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = Impossibile eseguire lo sweep di __ocs_fmt_0__ oggetti selezionati.
.sweep-scale-closed-path = Impossibile usare l'opzione di scala se la curva del percorso è chiusa.
.sweep-scale-smooth-path = La curva del percorso deve essere continua quando si usa l'opzione di scala.
.sweep-path-curve-not-valid = La curva del percorso selezionata non è valida.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = Le sezioni puntiformi sono ammesse solo alle estremità, con una curva tra estremità puntiformi.
.loft-requires-at-least-two-cross-sections = LOFT richiede almeno due sezioni.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = Un loft chiuso richiede almeno tre sezioni curve e nessuna estremità puntiforme.
+13 -2
View File
@@ -3874,13 +3874,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP 基点を指定:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP 2 番目の参照点を指定:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP 式を入力:
.sweep-specify-start-reference-length = SWEEP 開始参照長さを指定
.sweep-specify-end-reference-length = SWEEP 終了参照長さを指定
.sweep-specify-second-point = SWEEP 2 点目を指定:
.sweep-expression-invalid = 構文が正しくないか、変数が定義されていません。 式または値を再入力してください。
.sweep-modeling-operation-error = モデリング操作エラー:
.sweep-error-code-number = エラー コード番号: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = 選択した __ocs_fmt_0__ 個のオブジェクトをスイープできません。
.sweep-scale-closed-path = パス曲線が閉じている場合、尺度オプションは使用できません。
.sweep-scale-smooth-path = 尺度オプションを使用する場合、パス曲線は滑らかである必要があります。
.sweep-path-curve-not-valid = 選択したパス曲線は無効です。
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = 点の断面は始端または終端にのみ使用でき、点の端部の間には曲線が必要です。
.loft-requires-at-least-two-cross-sections = LOFTには少なくとも2つの断面が必要です。
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = 閉じたロフトには少なくとも3つの曲線断面が必要で、点の端部は使用できません。
+13 -2
View File
@@ -3885,13 +3885,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP 기준점을 지정하세요:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP 두 번째 참조점 지정:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP 식 입력:
.sweep-specify-start-reference-length = SWEEP 시작 참조 길이 지정
.sweep-specify-end-reference-length = SWEEP 끝 참조 길이 지정
.sweep-specify-second-point = SWEEP 두 번째 점 지정:
.sweep-expression-invalid = 구문이 잘못되었거나 변수가 정의되지 않았습니다. 식 또는 값을 다시 입력하십시오.
.sweep-modeling-operation-error = 모델링 작업 오류:
.sweep-error-code-number = 오류 코드 번호: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = 선택한 객체 __ocs_fmt_0__개를 스윕할 수 없습니다.
.sweep-scale-closed-path = 경로 곡선이 닫혀 있으면 축척 옵션을 사용할 수 없습니다.
.sweep-scale-smooth-path = 축척 옵션을 사용할 때 경로 곡선은 매끄러워야 합니다.
.sweep-path-curve-not-valid = 선택한 경로 곡선이 유효하지 않습니다.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = 점 단면은 시작 또는 끝에만 허용되며 점 끝 사이에 곡선이 있어야 합니다.
.loft-requires-at-least-two-cross-sections = LOFT에는 두 개 이상의 단면이 필요합니다.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = 닫힌 로프트에는 곡선 단면이 세 개 이상 필요하며 점 끝은 사용할 수 없습니다.
+13 -2
View File
@@ -3884,13 +3884,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP Basispunt specificeren:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP Tweede referentiepunt opgeven:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP Voer de expressie in:
.sweep-specify-start-reference-length = SWEEP Geef de begin-referentielengte op
.sweep-specify-end-reference-length = SWEEP Geef de eind-referentielengte op
.sweep-specify-second-point = SWEEP Geef het tweede punt op:
.sweep-expression-invalid = De syntaxis is onjuist of een variabele is niet gedefinieerd. Voer de expressie of waarde opnieuw in.
.sweep-modeling-operation-error = Fout bij modelleerbewerking:
.sweep-error-code-number = Foutcodenummer: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = Kan __ocs_fmt_0__ geselecteerde objecten niet sweepen.
.sweep-scale-closed-path = De schaaloptie kan niet worden gebruikt als de padcurve gesloten is.
.sweep-scale-smooth-path = De padcurve moet vloeiend zijn bij gebruik van de schaaloptie.
.sweep-path-curve-not-valid = De geselecteerde padcurve is ongeldig.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = Puntdoorsneden zijn alleen aan het begin of einde toegestaan, met een kromme tussen puntuiteinden.
.loft-requires-at-least-two-cross-sections = LOFT vereist minstens twee doorsneden.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = Een gesloten loft vereist minstens drie krommedoorsneden en geen puntuiteinden.
+13 -2
View File
@@ -3885,13 +3885,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP Określ punkt bazowy:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP Określ drugi punkt odniesienia:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP Wprowadź wyrażenie:
.sweep-specify-start-reference-length = SWEEP Określ początkową długość odniesienia
.sweep-specify-end-reference-length = SWEEP Określ końcową długość odniesienia
.sweep-specify-second-point = SWEEP Określ drugi punkt:
.sweep-expression-invalid = Składnia jest niepoprawna lub zmienna nie jest zdefiniowana. Wprowadź ponownie wyrażenie lub wartość.
.sweep-modeling-operation-error = Błąd operacji modelowania:
.sweep-error-code-number = Numer kodu błędu: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = Nie można przeciągnąć __ocs_fmt_0__ wybranych obiektów.
.sweep-scale-closed-path = Nie można użyć opcji skali, gdy krzywa ścieżki jest zamknięta.
.sweep-scale-smooth-path = Krzywa ścieżki musi być gładka przy użyciu opcji skali.
.sweep-path-curve-not-valid = Wybrana krzywa ścieżki jest nieprawidłowa.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = Przekroje punktowe są dozwolone tylko na początku lub końcu, z krzywą między punktowymi końcami.
.loft-requires-at-least-two-cross-sections = LOFT wymaga co najmniej dwóch przekrojów.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = Zamknięte wyciągnięcie po przekrojach wymaga co najmniej trzech przekrojów krzywych i braku punktowych końców.
+13 -2
View File
@@ -3887,13 +3887,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP Especifique o ponto base:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP Especifique o segundo ponto de referência:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP Insira a expressão:
.sweep-specify-start-reference-length = SWEEP Especifique o comprimento de referência inicial
.sweep-specify-end-reference-length = SWEEP Especifique o comprimento de referência final
.sweep-specify-second-point = SWEEP Especifique o segundo ponto:
.sweep-expression-invalid = A sintaxe está incorreta ou uma variável não está definida. Insira novamente a expressão ou o valor.
.sweep-modeling-operation-error = Erro de operação de modelagem:
.sweep-error-code-number = Número do código de erro: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = Não foi possível varrer __ocs_fmt_0__ objetos selecionados.
.sweep-scale-closed-path = Não é possível usar a opção de escala quando a curva do caminho está fechada.
.sweep-scale-smooth-path = A curva do caminho deve ser suave ao usar a opção de escala.
.sweep-path-curve-not-valid = A curva do caminho selecionada não é válida.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = Seções pontuais são permitidas apenas nas extremidades, com uma curva entre extremidades pontuais.
.loft-requires-at-least-two-cross-sections = LOFT exige pelo menos duas seções.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = Uma transição fechada exige pelo menos três seções de curva e nenhuma extremidade pontual.
+13 -2
View File
@@ -3887,13 +3887,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP Укажите базовую точку:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP Укажите вторую точку отсчета:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP Введите выражение:
.sweep-specify-start-reference-length = SWEEP Укажите начальную опорную длину
.sweep-specify-end-reference-length = SWEEP Укажите конечную опорную длину
.sweep-specify-second-point = SWEEP Укажите вторую точку:
.sweep-expression-invalid = Неверный синтаксис или переменная не определена. Повторите ввод выражения или значения.
.sweep-modeling-operation-error = Ошибка операции моделирования:
.sweep-error-code-number = Номер кода ошибки: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = Невозможно выполнить сдвиг для выбранных объектов: __ocs_fmt_0__.
.sweep-scale-closed-path = Нельзя использовать масштаб, если кривая траектории замкнута.
.sweep-scale-smooth-path = При использовании масштаба кривая траектории должна быть гладкой.
.sweep-path-curve-not-valid = Выбранная кривая траектории недопустима.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = Точечные сечения допустимы только в начале или конце; между точечными концами должна быть кривая.
.loft-requires-at-least-two-cross-sections = LOFT требует не менее двух сечений.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = Замкнутое тело по сечениям требует не менее трёх кривых сечений без точечных концов.
+13 -2
View File
@@ -3853,13 +3853,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP Temel noktayı belirtin:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP İkinci referans noktasını belirtin:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP İfadeyi girin:
.sweep-specify-start-reference-length = SWEEP Başlangıç referans uzunluğunu belirtin
.sweep-specify-end-reference-length = SWEEP Bitiş referans uzunluğunu belirtin
.sweep-specify-second-point = SWEEP İkinci noktayı belirtin:
.sweep-expression-invalid = Sözdizimi hatalı veya bir değişken tanımlı değil. İfadeyi veya değeri yeniden girin.
.sweep-modeling-operation-error = Modelleme İşlemi Hatası:
.sweep-error-code-number = Hata Kodu Numarası: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = Seçilen __ocs_fmt_0__ nesne süpürülemedi.
.sweep-scale-closed-path = Yol eğrisi kapalıyken ölçek seçeneği kullanılamaz.
.sweep-scale-smooth-path = Ölçek seçeneği kullanılırken yol eğrisi düzgün olmalıdır.
.sweep-path-curve-not-valid = Seçilen yol eğrisi geçerli değil.
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = Nokta kesitleri yalnızca ilk veya son uçta olabilir; nokta uçları arasında bir eğri bulunmalıdır.
.loft-requires-at-least-two-cross-sections = LOFT en az iki kesit gerektirir.
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = Kapalı bir loft en az üç eğri kesiti gerektirir ve nokta ucu içeremez.
+13 -2
View File
@@ -3869,13 +3869,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP 指定基点:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP 指定第二个参照点:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP 输入表达式:
.sweep-specify-start-reference-length = SWEEP 指定起点参照长度
.sweep-specify-end-reference-length = SWEEP 指定端点参照长度
.sweep-specify-second-point = SWEEP 指定第二点:
.sweep-expression-invalid = 语法不正确或变量未定义。 请重新输入表达式或值。
.sweep-modeling-operation-error = 建模操作错误:
.sweep-error-code-number = 错误代码号: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = 无法扫掠 __ocs_fmt_0__ 个选定对象。
.sweep-scale-closed-path = 路径曲线闭合时不能使用比例选项。
.sweep-scale-smooth-path = 使用比例选项时路径曲线必须平滑。
.sweep-path-curve-not-valid = 选定的路径曲线无效。
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = 点截面仅允许位于起点或终点,点端之间必须有曲线。
.loft-requires-at-least-two-cross-sections = LOFT 至少需要两个截面。
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = 闭合放样至少需要三个曲线截面,且不能包含点端。
+13 -2
View File
@@ -3881,13 +3881,24 @@ insert =
.sweep-select-sweep-path-or-alignment-base-point-scale-twist = SWEEP { draw.select }: { model.sweep } · { common.path } [{ common.alignment-title-case }/{ styles.basepoint }/{ common.scale }/{ properties.twist }]:
.sweep-align-sweep-object-perpendicular-to-path-yes-no = SWEEP { common.alignment-title-case }: { model.sweep } ⟂ { common.path } [{ common.yes }/{ common.no }]
.sweep-specify-base-point = SWEEP 指定基點:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }]:
.sweep-enter-scale-factor-or-reference = SWEEP { common.specify }: { style-manager.scale-factor } [{ common.reference }/{ common.expression }]
.sweep-specify-reference-length-or-first-point = SWEEP { common.specify }: { common.reference-length } · { draw.first-point }:
.sweep-specify-second-reference-point = SWEEP 指定第二個參照點:
.sweep-specify-new-length-or-points = SWEEP { common.specify }: { common.new-length } [{ common.points }]:
.sweep-specify-first-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { draw.first-point }:
.sweep-specify-second-point-of-new-length = SWEEP { common.specify }: { common.new-length } · { model.second-point }:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }]:
.sweep-specify-twist-angle-or-bank = SWEEP { common.specify }: { properties.twist } · { common.angle } [{ common.bank }/{ common.expression }]
.sweep-enter-expression = SWEEP 輸入運算式:
.sweep-specify-start-reference-length = SWEEP 指定起點參考長度
.sweep-specify-end-reference-length = SWEEP 指定終點參考長度
.sweep-specify-second-point = SWEEP 指定第二點:
.sweep-expression-invalid = 語法不正確或變數未定義。 請重新輸入運算式或值。
.sweep-modeling-operation-error = 塑型作業錯誤:
.sweep-error-code-number = 錯誤代碼編號: __ocs_fmt_0__
.sweep-unable-to-sweep-selected-objects = 無法掃掠 __ocs_fmt_0__ 個選取的物件。
.sweep-scale-closed-path = 路徑曲線封閉時無法使用比例選項。
.sweep-scale-smooth-path = 使用比例選項時路徑曲線必須平滑。
.sweep-path-curve-not-valid = 選取的路徑曲線無效。
.point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p = 點斷面僅允許位於起點或終點,點端之間必須有曲線。
.loft-requires-at-least-two-cross-sections = LOFT 至少需要兩個斷面。
.a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends = 封閉斷面混成至少需要三個曲線斷面,且不能包含點端。
+26 -19
View File
@@ -497,22 +497,34 @@ impl OpenCADStudio {
let mut created_handles = Vec::new();
let mut consumed = Vec::new();
for (handle, profile) in profiles {
let result = path.as_ref().zip(options).and_then(|(path, options)| {
let mut record = sweep_model::sweep_record(&profile, path, options)?;
// A refused sweep reports the modeler error code, as the
// reference does.
let result = (|| -> Result<_, Option<u32>> {
let (path, options) = path.as_ref().zip(options).ok_or(None)?;
let mut record = sweep_model::sweep_record(&profile, path, options).ok_or(None)?;
record.flags_294_296[0] |= picked_base;
let (_, _, closed) = kernel::acis::sweep_profile_geometry(
record.sweep_entity.as_ref()?,
record.sweep_entity.as_ref().ok_or(None)?,
record.sweep_entity_transform,
)
.ok()?;
.map_err(|_| None)?;
let surface = mode == ExtrudeMode::Surface || !closed;
let body =
kernel::acis::rebuild_sweep_with_mode(&record, surface).ok()?;
Some((body, record, surface))
});
let Some((body, record, surface)) = result else {
failed += 1;
continue;
let body = kernel::acis::rebuild_sweep_with_mode(&record, surface).map_err(|error| match error {
kernel::acis::HistoryRebuildError::Refused(why) => Some(sweep_model::sweep_refusal_code(why)),
_ => None,
})?;
Ok((body, record, surface))
})();
let (body, record, surface) = match result {
Ok(value) => value,
Err(code) => {
if let Some(code) = code {
self.command_line.push_output(crate::t!("Modeling Operation Error:").as_ref());
self.command_line.push_output(crate::tf!("Error Code Number is {code}", code = code).as_ref());
}
failed += 1;
continue;
}
};
let deletes_path =
crate::app::delobj_deletes_auxiliary(delete_objects, surface);
@@ -550,14 +562,9 @@ impl OpenCADStudio {
self.tabs[i].scene.select_entity(*handle, true);
}
self.tabs[i].dirty = true;
self.command_line.push_output(crate::tf!(
"SWEEP: created {created} object(s); {failed} source(s) could not be swept.",
created = created_handles.len(), failed = failed
).as_ref());
} else {
self.command_line.push_error(
crate::t!("SWEEP: could not sweep the profile along the path.").as_ref(),
);
}
if failed > 0 {
self.command_line.push_output(crate::tf!("Unable to sweep {failed} selected objects.", failed = failed).as_ref());
}
if let Some(pending) = pending {
self.commit_undo_delta(i, pending);
+1
View File
@@ -817,6 +817,7 @@ impl OpenCADStudio {
let color = self.tabs[i].scene.layer_color(&self.tabs[i].active_layer);
let isolines = crate::entities::solid3d::clamp_header_isolines(self.tabs[i].scene.document.header.isolines);
let mut cmd = SweepCommand::new(color, isolines);
cmd.set_parameters(self.tabs[i].scene.named_parameters().clone());
let selected = self.tabs[i].scene.selected_handles_in_order()
.into_iter()
.filter_map(|handle| self.tabs[i].scene.document.get_entity(handle)
+12 -2
View File
@@ -3951,11 +3951,21 @@ pub(super) fn on_tab_close(&mut self, idx: usize) -> Task<Message> {
if crate::scene::model::solid_history::is_primitive_property(
field,
) {
self.tabs[i].scene.apply_solid_history_property(
if !self.tabs[i].scene.apply_solid_history_property(
handle,
field,
&val,
);
) {
if let Some(code) = self.tabs[i]
.scene
.solid_history_property_refusal(handle, field, &val)
{
self.command_line.push_output(crate::t!("Modeling Operation Error:").as_ref());
self.command_line.push_output(
crate::tf!("Error Code Number is {code}", code = code).as_ref(),
);
}
}
} else if self.tabs[i]
.scene
.apply_solid_position_property(
+13 -2
View File
@@ -4463,13 +4463,24 @@ pub(super) fn message_attribute(source: &str) -> Option<(&'static str, &'static
"SWEEP Select sweep path or [Alignment/Base point/Scale/Twist]:" => Some(("insert", "sweep-select-sweep-path-or-alignment-base-point-scale-twist")),
"SWEEP Align sweep object perpendicular to path [Yes/No]" => Some(("insert", "sweep-align-sweep-object-perpendicular-to-path-yes-no")),
"SWEEP Specify base point:" => Some(("insert", "sweep-specify-base-point")),
"SWEEP Enter scale factor or [Reference]" => Some(("insert", "sweep-enter-scale-factor-or-reference")),
"SWEEP Enter scale factor or [Reference/Expression]" => Some(("insert", "sweep-enter-scale-factor-or-reference")),
"SWEEP Specify reference length or first point" => Some(("insert", "sweep-specify-reference-length-or-first-point")),
"SWEEP Specify second reference point:" => Some(("insert", "sweep-specify-second-reference-point")),
"SWEEP Specify new length or [Points]" => Some(("insert", "sweep-specify-new-length-or-points")),
"SWEEP Specify first point of new length:" => Some(("insert", "sweep-specify-first-point-of-new-length")),
"SWEEP Specify second point of new length:" => Some(("insert", "sweep-specify-second-point-of-new-length")),
"SWEEP Specify twist angle or [Bank]" => Some(("insert", "sweep-specify-twist-angle-or-bank")),
"SWEEP Enter twist angle or allow banking for a non-planar sweep path [Bank/EXpression]" => Some(("insert", "sweep-specify-twist-angle-or-bank")),
"SWEEP Enter expression:" => Some(("insert", "sweep-enter-expression")),
"SWEEP Specify start reference length" => Some(("insert", "sweep-specify-start-reference-length")),
"SWEEP Specify end reference length" => Some(("insert", "sweep-specify-end-reference-length")),
"SWEEP Specify second point:" => Some(("insert", "sweep-specify-second-point")),
"The syntax is incorrect or a variable is not defined. Reenter the expression or value." => Some(("insert", "sweep-expression-invalid")),
"Modeling Operation Error:" => Some(("insert", "sweep-modeling-operation-error")),
"Error Code Number is {code}" => Some(("insert", "sweep-error-code-number")),
"Unable to sweep {failed} selected objects." => Some(("insert", "sweep-unable-to-sweep-selected-objects")),
"Cannot use scale option when path curve is closed." => Some(("insert", "sweep-scale-closed-path")),
"Path curve must be smooth when using scale option." => Some(("insert", "sweep-scale-smooth-path")),
"The selected path curve is not valid." => Some(("insert", "sweep-path-curve-not-valid")),
"Point cross-sections are allowed only at the first or last end, with a curve between point ends." => Some(("insert", "point-cross-sections-are-allowed-only-at-the-first-or-last-end-with-a-curve-between-p")),
"LOFT requires at least two cross-sections." => Some(("insert", "loft-requires-at-least-two-cross-sections")),
"A closed loft requires at least three curve cross-sections and no point ends." => Some(("insert", "a-closed-loft-requires-at-least-three-curve-cross-sections-and-no-point-ends")),
+93 -35
View File
@@ -1606,6 +1606,10 @@ impl CadCommand for RevolveCommand {
// ── SWEEP command ──────────────────────────────────────────────────────────
/// Banking stays on for later sweeps until a twist angle is entered, as in
/// the reference.
static SWEEP_BANK: std::sync::atomic::AtomicBool = std::sync::atomic::AtomicBool::new(false);
pub struct SweepCommand {
step: SweepStep,
profiles: Vec<(Handle, EntityType)>,
@@ -1618,6 +1622,9 @@ pub struct SweepCommand {
reference_start: Option<DVec3>,
reference_length: f64,
new_length_start: Option<DVec3>,
end_length: f64,
/// The drawing's named parameters, for Expression input.
parameters: crate::scene::named_parameters::ParameterTable,
isolines: usize,
color: [f32; 4],
}
@@ -1630,12 +1637,15 @@ enum SweepStep {
Alignment,
BasePoint,
Scale,
/// The start reference length: a distance, or two points.
ReferenceLength,
ReferenceEnd,
/// The end reference length: a distance, or two points.
NewLength,
NewLengthStart,
NewLengthEnd,
Twist,
ScaleExpression,
TwistExpression,
}
impl SweepCommand {
@@ -1648,15 +1658,31 @@ impl SweepCommand {
preview_key: None,
preview_cache: Vec::new(),
mode: ExtrudeMode::Solid,
options: SweepOptions::default(),
options: SweepOptions {
bank: SWEEP_BANK.load(std::sync::atomic::Ordering::Relaxed),
..SweepOptions::default()
},
reference_start: None,
reference_length: 1.0,
new_length_start: None,
end_length: 1.0,
parameters: Default::default(),
isolines,
color,
}
}
pub fn set_parameters(&mut self, parameters: crate::scene::named_parameters::ParameterTable) {
self.parameters = parameters;
}
/// An Expression input, evaluated against the drawing's parameters.
fn evaluate(&self, text: &str) -> Option<f64> {
let mut table = self.parameters.clone();
table.set("sweepExpression", text).ok()?;
table.resolve("sweepExpression").ok().filter(|value| value.is_finite())
}
pub fn set_preselection(&mut self, profiles: Vec<(Handle, EntityType)>) {
self.set_profiles(profiles);
if !self.profiles.is_empty() {
@@ -1715,10 +1741,13 @@ impl SweepCommand {
true
}
fn length_anchor(&self) -> DVec3 {
self.reference_start
.or_else(|| self.selection_options().and_then(|options| options.base_point))
.unwrap_or(DVec3::ZERO)
/// The Reference scale is the start reference length over the end one.
fn set_end_length(&mut self, length: f64) -> bool {
if !length.is_finite() || length <= 1e-12 {
return false;
}
self.end_length = length;
self.set_scale(self.reference_length / length)
}
}
@@ -1742,25 +1771,28 @@ impl CadCommand for SweepCommand {
),
SweepStep::BasePoint => t!("SWEEP Specify base point:").into_owned(),
SweepStep::Scale => format!(
"{} <{}>:", t!("SWEEP Enter scale factor or [Reference]"), self.options.scale,
"{}<{:.4}>:", t!("SWEEP Enter scale factor or [Reference/Expression]"), self.options.scale,
),
SweepStep::ScaleExpression | SweepStep::TwistExpression => t!("SWEEP Enter expression:").into_owned(),
SweepStep::ReferenceLength => format!(
"{} <{}>:",
t!("SWEEP Specify reference length or first point"),
t!("SWEEP Specify start reference length"),
crate::entities::common::format_length(self.reference_length),
),
SweepStep::ReferenceEnd => t!("SWEEP Specify second reference point:").into_owned(),
SweepStep::ReferenceEnd | SweepStep::NewLengthEnd => t!("SWEEP Specify second point:").into_owned(),
SweepStep::NewLength => format!(
"{} <{}>:",
t!("SWEEP Specify new length or [Points]"),
crate::entities::common::format_length(self.reference_length * self.options.scale),
t!("SWEEP Specify end reference length"),
crate::entities::common::format_length(self.end_length),
),
SweepStep::NewLengthStart => t!("SWEEP Specify first point of new length:").into_owned(),
SweepStep::NewLengthEnd => t!("SWEEP Specify second point of new length:").into_owned(),
SweepStep::Twist => format!(
"{} <{}>:",
t!("SWEEP Specify twist angle or [Bank]"),
crate::entities::common::format_angle(self.options.twist_angle),
"{}<{}>:",
t!("SWEEP Enter twist angle or allow banking for a non-planar sweep path [Bank/EXpression]"),
if self.options.bank {
"Bank".to_string()
} else {
format!("{:.4}", self.options.twist_angle.to_degrees())
},
),
}
}
@@ -1776,9 +1808,8 @@ impl CadCommand for SweepCommand {
CmdOption::new("Twist", "TWIST"),
],
SweepStep::Alignment => vec![CmdOption::new("Yes", "YES"), CmdOption::new("No", "NO")],
SweepStep::Scale => vec![CmdOption::new("Reference", "REFERENCE")],
SweepStep::NewLength => vec![CmdOption::new("Points", "POINTS")],
SweepStep::Twist => vec![CmdOption::new("Bank", "BANK")],
SweepStep::Scale => vec![CmdOption::new("Reference", "REFERENCE"), CmdOption::new("Expression", "EXPRESSION")],
SweepStep::Twist => vec![CmdOption::new("Bank", "BANK"), CmdOption::new("EXpression", "EXPRESSION")],
_ => Vec::new(),
}
}
@@ -1801,11 +1832,18 @@ impl CadCommand for SweepCommand {
.filter(|(hovered, _)| *hovered == handle)
.map(|(_, entity)| entity.clone())
});
if path.as_ref().is_some_and(crate::scene::model::sweep_model::is_sweep_path) {
self.finish(handle)
} else {
CmdResult::NeedPoint
let Some(path) = path.filter(crate::scene::model::sweep_model::is_sweep_path) else {
return CmdResult::NeedPoint;
};
if (self.options.scale - 1.0).abs() > 1e-12 {
if let Some(message) = crate::scene::model::sweep_model::scaled_sweep_path_refusal(&path) {
return CmdResult::ReportMeasurement(format!(
"{}
{}", t!(message), t!("The selected path curve is not valid."),
));
}
}
self.finish(handle)
}
fn on_point(&mut self, point: DVec3) -> CmdResult {
@@ -1827,15 +1865,12 @@ impl CadCommand for SweepCommand {
}
}
SweepStep::NewLength => {
self.set_scale(point.distance(self.length_anchor()) / self.reference_length);
}
SweepStep::NewLengthStart => {
self.new_length_start = Some(point);
self.step = SweepStep::NewLengthEnd;
}
SweepStep::NewLengthEnd => {
if let Some(start) = self.new_length_start {
self.set_scale(point.distance(start) / self.reference_length);
self.set_end_length(point.distance(start));
}
}
_ => {}
@@ -1848,6 +1883,7 @@ impl CadCommand for SweepCommand {
SweepStep::PickProfiles | SweepStep::Mode | SweepStep::PickPath
| SweepStep::Alignment | SweepStep::Scale | SweepStep::ReferenceLength
| SweepStep::NewLength | SweepStep::Twist
| SweepStep::ScaleExpression | SweepStep::TwistExpression
)
}
@@ -1900,7 +1936,9 @@ impl CadCommand for SweepCommand {
self.step = SweepStep::PickPath;
}
SweepStep::Scale => {
if "REFERENCE".starts_with(&keyword) {
if "EXPRESSION".starts_with(&keyword) {
self.step = SweepStep::ScaleExpression;
} else if "REFERENCE".starts_with(&keyword) {
self.reference_start = None;
self.new_length_start = None;
self.step = SweepStep::ReferenceLength;
@@ -1916,22 +1954,39 @@ impl CadCommand for SweepCommand {
}
}
SweepStep::NewLength => {
if "POINTS".starts_with(&keyword) {
self.step = SweepStep::NewLengthStart;
} else if let Some(length) = crate::entities::common::parse_typed_length(value) {
self.set_scale(length / self.reference_length);
if let Some(length) = crate::entities::common::parse_typed_length(value) {
self.set_end_length(length);
} else {
return None;
}
}
SweepStep::ScaleExpression | SweepStep::TwistExpression => {
let Some(value) = self.evaluate(value) else {
return Some(CmdResult::ReportMeasurement(t!(
"The syntax is incorrect or a variable is not defined. Reenter the expression or value."
).into_owned()));
};
if self.step == SweepStep::ScaleExpression {
self.set_scale(value);
} else {
self.options.twist_angle = value.to_radians();
self.options.bank = false;
SWEEP_BANK.store(false, std::sync::atomic::Ordering::Relaxed);
}
self.step = SweepStep::PickPath;
}
SweepStep::Twist => {
if "BANK".starts_with(&keyword) {
if keyword.len() >= 2 && "EXPRESSION".starts_with(&keyword) {
self.step = SweepStep::TwistExpression;
} else if "BANK".starts_with(&keyword) {
self.options.bank = true;
SWEEP_BANK.store(true, std::sync::atomic::Ordering::Relaxed);
self.step = SweepStep::PickPath;
} else if let Some(angle) = crate::entities::common::parse_angle(value) {
if angle.is_finite() {
self.options.twist_angle = angle;
self.options.bank = false;
SWEEP_BANK.store(false, std::sync::atomic::Ordering::Relaxed);
self.step = SweepStep::PickPath;
}
}
@@ -1947,9 +2002,12 @@ impl CadCommand for SweepCommand {
self.step = SweepStep::PickPath;
}
SweepStep::Mode => self.step = SweepStep::PickProfiles,
SweepStep::Alignment | SweepStep::Scale | SweepStep::Twist
| SweepStep::NewLength => self.step = SweepStep::PickPath,
SweepStep::Alignment | SweepStep::Scale | SweepStep::Twist => self.step = SweepStep::PickPath,
SweepStep::ScaleExpression | SweepStep::TwistExpression => {}
SweepStep::ReferenceLength => self.step = SweepStep::NewLength,
SweepStep::NewLength => {
self.set_end_length(self.end_length);
}
_ => return CmdResult::Cancel,
}
CmdResult::NeedPoint
+50 -7
View File
@@ -9,20 +9,25 @@ use kernel::brep::Body;
use crate::command::{ExtrudeMode, SweepOptions};
use super::sweep_model::{embedded_path, embedded_revolve_profile};
/// A 3D polyline profile or path as the reference records it: a wire body.
fn embedded_sweep_profile(entity: &EntityType) -> Option<(codec::entities::EmbeddedEntity, [f64; 16])> {
if let EntityType::Region(region) = entity {
Some((codec::entities::EmbeddedEntity::Region(region.clone()), glam::DMat4::IDENTITY.to_cols_array()))
} else {
embedded_revolve_profile(entity)
match entity {
EntityType::Region(region) => Some((codec::entities::EmbeddedEntity::Region(region.clone()), glam::DMat4::IDENTITY.to_cols_array())),
EntityType::Polyline3D(value) => Some((polyline_wire(value)?, glam::DMat4::IDENTITY.to_cols_array())),
_ => embedded_revolve_profile(entity),
}
}
/// The sweep path as the reference records it: a 3D polyline as a wire
/// body, anything else as its embedded entity.
fn embedded_sweep_path(path: &EntityType) -> Option<codec::entities::EmbeddedEntity> {
let EntityType::Polyline3D(value) = path else {
return embedded_path(path);
};
match path {
EntityType::Polyline3D(value) => polyline_wire(value),
_ => embedded_path(path),
}
}
fn polyline_wire(value: &codec::entities::Polyline3D) -> Option<codec::entities::EmbeddedEntity> {
let points = value.vertices.iter()
.map(|vertex| [vertex.position.x, vertex.position.y, vertex.position.z])
.collect::<Vec<_>>();
@@ -41,6 +46,44 @@ pub fn is_sweep_profile(entity: &EntityType) -> bool {
})
}
/// The modeling error code the reference reports for a refused sweep.
pub fn sweep_refusal_code(refusal: kernel::brep::SweepRefusal) -> u32 {
match refusal {
kernel::brep::SweepRefusal::Scale => 5016,
kernel::brep::SweepRefusal::Twist => 115065,
kernel::brep::SweepRefusal::Bank => 115007,
}
}
/// Why the reference refuses a path for a scaled sweep: scaling needs an
/// open path, and a spatial path must be smooth.
pub fn scaled_sweep_path_refusal(path: &EntityType) -> Option<&'static str> {
let (closed, smooth) = match crate::entities::curve::entity_curve(path) {
Some(planar) => (planar.curve.is_closed(), true),
None => match path {
EntityType::Polyline3D(value) => {
let points = value.vertices.iter()
.map(|vertex| glam::DVec3::new(vertex.position.x, vertex.position.y, vertex.position.z))
.collect::<Vec<_>>();
let directions = points.windows(2)
.filter_map(|pair| (pair[1] - pair[0]).try_normalize())
.collect::<Vec<_>>();
let straight = directions.windows(2).all(|pair| pair[0].dot(pair[1]) >= 1.0 - 1e-9);
(value.is_closed(), straight && !value.is_closed())
}
EntityType::Spline(value) => (value.flags.closed, value.degree > 1),
_ => (false, true),
},
};
if closed {
Some("Cannot use scale option when path curve is closed.")
} else if !smooth {
Some("Path curve must be smooth when using scale option.")
} else {
None
}
}
pub fn is_sweep_path(entity: &EntityType) -> bool {
match embedded_path(entity) {
Some(codec::entities::EmbeddedEntity::Spline(value)) => {
+1 -1
View File
@@ -13,7 +13,7 @@ use codec::EntityType;
use crate::entities::curve::entity_curve;
pub use super::sweep_command_model::{
is_sweep_path, is_sweep_profile, sweep_record, sweep_selection_options, swept_surface_entity, swept_with_options,
is_sweep_path, is_sweep_profile, scaled_sweep_path_refusal, sweep_record, sweep_refusal_code, sweep_selection_options, swept_surface_entity, swept_with_options,
};
/// A drawn profile, as the kernel wants it: the plane it lies in and the
+13
View File
@@ -1454,6 +1454,19 @@ impl Scene {
self.rebuild_solid_history(handle, operation)
}
/// The modeler error code the reference reports when it refuses a sweep
/// property edit (twist or scale along a path with a corner).
pub fn solid_history_property_refusal(&self, handle: Handle, field: &str, value: &str) -> Option<u32> {
let mut operation = crate::scene::model::solid_history::primitive_property_operation(&self.document, handle)?;
if !crate::scene::model::solid_history::apply_primitive_property(&mut operation, field, value) {
return None;
}
let codec::objects::SolidHistoryOperation::Sweep(record) = &operation else {
return None;
};
kernel::acis::sweep_history_refusal(record).map(crate::scene::model::sweep_model::sweep_refusal_code)
}
pub fn apply_solid_position_property(
&mut self,
handle: Handle,