@things-factory/figure-ui 10.1.200 → 10.1.201

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/client/modeller/editor.ts +7 -3
  2. package/client/modeller/fasten-form.ts +18 -35
  3. package/client/modeller/fasten-geometry.ts +67 -115
  4. package/client/modeller/figure-fasten-dialog.ts +4 -12
  5. package/client/modeller/figure-links.ts +6 -7
  6. package/client/modeller/joint-drag.ts +5 -5
  7. package/client/modeller/links.ts +35 -99
  8. package/client/modeller/refusals.ts +2 -6
  9. package/dist-client/modeller/editor.js +7 -2
  10. package/dist-client/modeller/editor.js.map +1 -1
  11. package/dist-client/modeller/fasten-form.d.ts +5 -8
  12. package/dist-client/modeller/fasten-form.js +16 -28
  13. package/dist-client/modeller/fasten-form.js.map +1 -1
  14. package/dist-client/modeller/fasten-geometry.d.ts +20 -19
  15. package/dist-client/modeller/fasten-geometry.js +54 -113
  16. package/dist-client/modeller/fasten-geometry.js.map +1 -1
  17. package/dist-client/modeller/figure-fasten-dialog.js +4 -12
  18. package/dist-client/modeller/figure-fasten-dialog.js.map +1 -1
  19. package/dist-client/modeller/figure-links.d.ts +1 -1
  20. package/dist-client/modeller/figure-links.js +6 -7
  21. package/dist-client/modeller/figure-links.js.map +1 -1
  22. package/dist-client/modeller/joint-drag.js +5 -5
  23. package/dist-client/modeller/joint-drag.js.map +1 -1
  24. package/dist-client/modeller/links.d.ts +19 -26
  25. package/dist-client/modeller/links.js +36 -94
  26. package/dist-client/modeller/links.js.map +1 -1
  27. package/dist-client/modeller/refusals.d.ts +1 -1
  28. package/dist-client/modeller/refusals.js +2 -6
  29. package/dist-client/modeller/refusals.js.map +1 -1
  30. package/dist-client/tsconfig.tsbuildinfo +1 -1
  31. package/package.json +6 -6
  32. package/test/ai-proposal.test.ts +1 -1
  33. package/test/browser/acceptance-page.js +11 -11
  34. package/test/browser/detail-page.js +1 -1
  35. package/test/browser/detail-tabs-page.js +1 -1
  36. package/test/browser/editing-page.js +1 -1
  37. package/test/browser/fix-alignment.check.mjs +3 -3
  38. package/test/browser/links.check.mjs +20 -8
  39. package/test/browser/modeller-page.js +3 -3
  40. package/test/browser/part-ids.check.mjs +2 -2
  41. package/test/browser/parts-page.js +2 -2
  42. package/test/browser/product-page.check.mjs +3 -3
  43. package/test/browser/product-page.js +1 -1
  44. package/test/browser/row-preview.check.mjs +2 -2
  45. package/test/browser/screen-page.js +3 -3
  46. package/test/browser/section-page.js +3 -3
  47. package/test/browser/section.check.mjs +4 -4
  48. package/test/clip-ai-proposal.test.ts +1 -1
  49. package/test/clip-consent.test.ts +1 -1
  50. package/test/command-preview.test.ts +8 -8
  51. package/test/face-mapping.test.ts +2 -2
  52. package/test/fasten-drawing.test.ts +14 -2
  53. package/test/fasten-form.test.ts +11 -3
  54. package/test/fasten-geometry.test.ts +22 -31
  55. package/test/fix-alignment.test.ts +16 -4
  56. package/test/gizmo.test.ts +2 -2
  57. package/test/joint-drag.test.ts +13 -2
  58. package/test/joint-fan.test.ts +1 -1
  59. package/test/joint-frames.test.ts +45 -23
  60. package/test/joints.ts +1 -1
  61. package/test/links.test.ts +68 -68
  62. package/test/live.test.ts +2 -2
  63. package/test/preview-size.test.ts +1 -1
  64. package/test/refusals.test.ts +18 -20
  65. package/test/resize-with-placement.test.ts +6 -6
  66. package/test/revision.test.ts +4 -5
  67. package/test/section-panel.test.ts +1 -1
  68. package/translations/en.json +9 -11
  69. package/translations/es.json +9 -11
  70. package/translations/ja.json +9 -11
  71. package/translations/ko.json +9 -11
  72. package/translations/ms.json +9 -11
  73. package/translations/zh.json +9 -11
@@ -532,8 +532,9 @@
532
532
  "figure.text.overhang-out": "It comes past the edge of {on}'s {face}: {sides}. This is apart from the figure's room.",
533
533
  "figure.text.overhang-larger": "Wider than {on}'s {face}, it comes past its edges: {sides}.",
534
534
  "figure.text.overhang-lopsided": "It sits off to one side along {axes}.",
535
- "figure.text.overhang-possible": "It may come past the edge of {on}'s {face}: it is fastened turned, so only its box was measured.",
535
+ "figure.text.overhang-possible": "It may come past the edge of {on}'s {face}.",
536
536
  "figure.text.overhang-unknown": "Whether it lies within the edges of {on}'s {face} could not be read.",
537
+ "figure.text.overhang-off": "Where it touches is off {on}'s {face}: it rests on nothing there.",
537
538
  "figure.text.overhang-held": "Parts fastened to this one ({parts}) come, or may come, past the edge of the face they are on.",
538
539
  "figure.text.overhang-side-low": "{axis} low side {mm} mm",
539
540
  "figure.text.overhang-side-high": "{axis} high side {mm} mm",
@@ -562,7 +563,6 @@
562
563
  "figure.label.facing": "How faces meet",
563
564
  "figure.text.fasten-summary-gap": "gap {mm} mm",
564
565
  "figure.text.fasten-summary-gap-worked-out": "gap worked out by a formula",
565
- "figure.text.fasten-summary-twist": "twist {degrees}°",
566
566
  "figure.label.gap": "gap (mm)",
567
567
  "figure.label.align": "within the face",
568
568
  "figure.label.align-centre": "centred",
@@ -709,7 +709,6 @@
709
709
  "figure.text.row-ends": "{low} mm left at the low end · {high} mm at the high end",
710
710
  "figure.text.row-ends-unknown": "What is left at the ends could not be read.",
711
711
  "figure.text.row-companions": "copied along: {parts}",
712
- "figure.label.twist": "twist (°)",
713
712
  "figure.text.instance-size-undeclared": "set a range and a drawing can resize it.",
714
713
  "figure.button.declare-instance-size": "set the range it stretches over",
715
714
  "figure.text.proposal-applied": "applied {n} commands as one step.",
@@ -739,7 +738,7 @@
739
738
  "figure.button.follow-size-in-proportion": "make every part follow",
740
739
  "figure.text.proportion-kept": "keeps its own number: {what}",
741
740
  "figure.text.preview-clamped": "{axis} {asked} → {used}",
742
- "figure.text.placement-plane-refused": "{parts} cannot go on a {placement} by the face fastened to the mounting plane. detach it or fasten it by its {faces} first.",
741
+ "figure.text.placement-plane-refused": "Parts are fastened to the mounting plane, so the placement cannot change: {parts}. Detach them first.",
743
742
  "figure.label.face-centre": "centre",
744
743
  "figure.label.budget-moving": "parts recomputed every frame",
745
744
  "figure.label.performance-cost": "performance cost",
@@ -838,9 +837,9 @@
838
837
  "figure.button.resize-scoped-center": "{scope}: follow size, keeping the current centre",
839
838
  "figure.text.resize-move": "(moves {mm} mm on {axis})",
840
839
  "figure.text.held-by-rule": "A rule places this part.",
841
- "figure.text.held-on-plane": "{face} kept on the {place} (gap {gap} mm)",
842
- "figure.text.held-on-plane-worked-out": "{face} kept on the {place} (gap worked out by a formula)",
843
- "figure.text.held-on-part": "Attached by its {face} to the {otherFace} of {other}",
840
+ "figure.text.held-on-plane": "Kept on the {place} (gap {gap} mm)",
841
+ "figure.text.held-on-plane-worked-out": "Kept on the {place} (gap worked out by a formula)",
842
+ "figure.text.held-on-part": "Attached to the {otherFace} of {other}",
844
843
  "figure.button.open-fastening": "Open attachment settings",
845
844
  "figure.button.detach-held": "Detach",
846
845
  "figure.text.gizmo-size-turned-fastening": "{part} is attached turned, so its size cannot be dragged.",
@@ -870,7 +869,6 @@
870
869
  "figure.text.placement-is-intent": "What the figure is authored from. You can choose it before any part; it does not change the declared space.",
871
870
  "figure.button.show-model-settings": "Show model settings",
872
871
  "figure.text.new-figure-name": "New figure",
873
- "figure.text.fasten-editing": "Editing the current attachment: its {face} on {target}",
874
872
  "figure.text.fasten-start": "Attach this part to a face on another part so they keep their relationship when either changes.",
875
873
  "figure.button.fasten-start": "Attach to another part",
876
874
  "figure.text.fasten-target-first": "Choose the part to attach to first.",
@@ -941,9 +939,9 @@
941
939
  "figure.label.fasten-mode-centre": "centre on it",
942
940
  "figure.text.fasten-off-face": "It does not touch {face}.",
943
941
  "figure.text.fasten-past-edges": "It comes past the edges: {sides}",
944
- "figure.text.fasten-sentence-meet": "{part}'s {face} set on {to}",
945
- "figure.text.fasten-sentence-flush": "{part}'s {face} flush with {to}",
946
- "figure.text.fasten-sentence-centre": "{part}'s centre on {to}",
942
+ "figure.text.fasten-sentence-meet": "Set on {to}",
943
+ "figure.text.fasten-sentence-flush": "Flush with {to}",
944
+ "figure.text.fasten-sentence-centre": "By its middle on {to}",
947
945
  "figure.label.measure-x": "width",
948
946
  "figure.label.measure-y": "height",
949
947
  "figure.label.measure-z": "depth",
@@ -532,8 +532,9 @@
532
532
  "figure.text.overhang-out": "Sobresale del borde de {face} de {on}: {sides}. Esto es independiente del espacio de la figura.",
533
533
  "figure.text.overhang-larger": "Al ser más ancha que {face} de {on}, sobresale de sus bordes: {sides}.",
534
534
  "figure.text.overhang-lopsided": "Está desplazada hacia un lado a lo largo de {axes}.",
535
- "figure.text.overhang-possible": "Puede sobresalir del borde de {face} de {on}: está sujeta girada, por lo que solo se midió su caja envolvente.",
535
+ "figure.text.overhang-possible": "Puede sobresalir del borde de {face} de {on}.",
536
536
  "figure.text.overhang-unknown": "No se pudo determinar si queda dentro de los bordes de {face} de {on}.",
537
+ "figure.text.overhang-off": "Donde toca queda fuera de {face} de {on}: ahí no se apoya en nada.",
537
538
  "figure.text.overhang-held": "Las piezas sujetas a esta ({parts}) sobresalen, o pueden sobresalir, del borde de la cara en la que están.",
538
539
  "figure.text.overhang-side-low": "{axis} lado inferior {mm} mm",
539
540
  "figure.text.overhang-side-high": "{axis} lado superior {mm} mm",
@@ -562,7 +563,6 @@
562
563
  "figure.label.facing": "Cómo se unen las caras",
563
564
  "figure.text.fasten-summary-gap": "separación {mm} mm",
564
565
  "figure.text.fasten-summary-gap-worked-out": "separación calculada por una fórmula",
565
- "figure.text.fasten-summary-twist": "torsión {degrees}°",
566
566
  "figure.label.gap": "separación (mm)",
567
567
  "figure.label.align": "dentro de la cara",
568
568
  "figure.label.align-centre": "centrada",
@@ -709,7 +709,6 @@
709
709
  "figure.text.row-ends": "quedan {low} mm en el extremo inferior · {high} mm en el superior",
710
710
  "figure.text.row-ends-unknown": "No se pudo determinar lo que queda en los extremos.",
711
711
  "figure.text.row-companions": "copiadas con ella: {parts}",
712
- "figure.label.twist": "torsión (°)",
713
712
  "figure.text.instance-size-undeclared": "la figura no tiene tamaño, por lo que un tablero no puede cambiar su tamaño.",
714
713
  "figure.button.declare-instance-size": "declarar el tamaño de la figura",
715
714
  "figure.text.proposal-applied": "se aplicaron {n} comandos como un solo paso.",
@@ -739,7 +738,7 @@
739
738
  "figure.button.follow-size-in-proportion": "hacer que sigan todas las piezas",
740
739
  "figure.text.proportion-kept": "mantiene su propio número: {what}",
741
740
  "figure.text.preview-clamped": "{axis} {asked} → {used}",
742
- "figure.text.placement-plane-refused": "{parts} no puede ir en {placement} por la cara sujeta al plano de montaje. sepárela o sujétela primero por sus caras {faces}.",
741
+ "figure.text.placement-plane-refused": "Hay piezas sujetas al plano de montaje, así que la colocación no puede cambiar: {parts}. Sepárelas primero.",
743
742
  "figure.label.face-centre": "centro",
744
743
  "figure.label.budget-moving": "piezas recalculadas en cada fotograma",
745
744
  "figure.label.performance-cost": "coste de rendimiento",
@@ -838,9 +837,9 @@
838
837
  "figure.button.resize-scoped-center": "{scope}: seguir el tamaño, manteniendo el centro actual",
839
838
  "figure.text.resize-move": "(se mueve {mm} mm en {axis})",
840
839
  "figure.text.held-by-rule": "Una regla coloca esta pieza.",
841
- "figure.text.held-on-plane": "{face} mantenida en {place} (separación {gap} mm)",
842
- "figure.text.held-on-plane-worked-out": "{face} mantenida en {place} (separación calculada por una fórmula)",
843
- "figure.text.held-on-part": "Unida por su {face} a {otherFace} de {other}",
840
+ "figure.text.held-on-plane": "Mantenida en {place} (separación {gap} mm)",
841
+ "figure.text.held-on-plane-worked-out": "Mantenida en {place} (separación calculada por una fórmula)",
842
+ "figure.text.held-on-part": "Unida a {otherFace} de {other}",
844
843
  "figure.button.open-fastening": "Abrir la configuración de unión",
845
844
  "figure.button.detach-held": "Separar",
846
845
  "figure.text.gizmo-size-turned-fastening": "{part} está unida girada, así que su tamaño no se puede arrastrar.",
@@ -870,7 +869,6 @@
870
869
  "figure.text.placement-is-intent": "La referencia con la que se crea la figura. Puede elegirla antes de añadir piezas; no cambia el espacio declarado.",
871
870
  "figure.button.show-model-settings": "Mostrar la configuración del modelo",
872
871
  "figure.text.new-figure-name": "Nueva figura",
873
- "figure.text.fasten-editing": "Editando la unión actual: su {face} en {target}",
874
872
  "figure.text.fasten-start": "Una esta pieza a una cara de otra pieza para que mantengan su relación cuando cualquiera de ellas cambie.",
875
873
  "figure.button.fasten-start": "Unir a otra pieza",
876
874
  "figure.text.fasten-target-first": "Elija primero la pieza a la que unirla.",
@@ -941,9 +939,9 @@
941
939
  "figure.label.fasten-mode-centre": "centrada sobre ella",
942
940
  "figure.text.fasten-off-face": "No toca {face}.",
943
941
  "figure.text.fasten-past-edges": "Sobresale de los bordes: {sides}",
944
- "figure.text.fasten-sentence-meet": "{face} de {part} apoyada en {to}",
945
- "figure.text.fasten-sentence-flush": "{face} de {part} a ras con {to}",
946
- "figure.text.fasten-sentence-centre": "centro de {part} sobre {to}",
942
+ "figure.text.fasten-sentence-meet": "Apoyada en {to}",
943
+ "figure.text.fasten-sentence-flush": "A ras con {to}",
944
+ "figure.text.fasten-sentence-centre": "Por su centro en {to}",
947
945
  "figure.label.measure-x": "ancho",
948
946
  "figure.label.measure-y": "altura",
949
947
  "figure.label.measure-z": "profundidad",
@@ -532,8 +532,9 @@
532
532
  "figure.text.overhang-out": "{on} の {face} の縁から出ています: {sides}。モデルの占有空間とは別に扱います。",
533
533
  "figure.text.overhang-larger": "{on} の {face} より広いため縁から出ています: {sides}。",
534
534
  "figure.text.overhang-lopsided": "{axes} 方向で片側に寄っています。",
535
- "figure.text.overhang-possible": "{on} の {face} の縁から出る可能性があります。回して取り付けた部品なので外接箱でのみ測りました。",
535
+ "figure.text.overhang-possible": "{on} の {face} の縁から出る可能性があります。",
536
536
  "figure.text.overhang-unknown": "{on} の {face} の縁の内側にあるか確認できませんでした。",
537
+ "figure.text.overhang-off": "{on} の {face} の外で接しています。そこでは何にも載っていません。",
537
538
  "figure.text.overhang-held": "この部品に取り付いた {parts} が取り付け面の縁から出ているか、出る可能性があります。",
538
539
  "figure.text.overhang-side-low": "{axis} 低い側 {mm} mm",
539
540
  "figure.text.overhang-side-high": "{axis} 高い側 {mm} mm",
@@ -562,7 +563,6 @@
562
563
  "figure.label.facing": "接し方",
563
564
  "figure.text.fasten-summary-gap": "間隔 {mm} mm",
564
565
  "figure.text.fasten-summary-gap-worked-out": "間隔は式で決まる",
565
- "figure.text.fasten-summary-twist": "ひねり {degrees}°",
566
566
  "figure.label.gap": "gap (mm)",
567
567
  "figure.label.align": "within the face",
568
568
  "figure.label.align-centre": "中央",
@@ -709,7 +709,6 @@
709
709
  "figure.text.row-ends": "低い側の端 {low} mm · 高い側の端 {high} mm 残る",
710
710
  "figure.text.row-ends-unknown": "両端に残る長さは確認できませんでした。",
711
711
  "figure.text.row-companions": "一緒に複製: {parts}",
712
- "figure.label.twist": "ひねり (°)",
713
712
  "figure.text.instance-size-undeclared": "図形サイズがないため、ボードでサイズを変えられません。",
714
713
  "figure.button.declare-instance-size": "図形サイズを宣言",
715
714
  "figure.text.proposal-applied": "{n} 個のコマンドを 1 ステップとして適用しました。",
@@ -739,7 +738,7 @@
739
738
  "figure.button.follow-size-in-proportion": "すべての部品を追従させる",
740
739
  "figure.text.proportion-kept": "固有の数値のまま: {what}",
741
740
  "figure.text.preview-clamped": "{axis} {asked} → {used}",
742
- "figure.text.placement-plane-refused": "{parts} は取付平面に付いている面では {placement} に付けられません。外すか {faces} 面で付け直してから変更してください。",
741
+ "figure.text.placement-plane-refused": "取付平面に付いている部品があるため、配置を変えられません: {parts}。先にこの部品を外してください。",
743
742
  "figure.label.face-centre": "中心",
744
743
  "figure.label.budget-moving": "毎フレーム再計算する部品",
745
744
  "figure.label.performance-cost": "性能コスト",
@@ -838,9 +837,9 @@
838
837
  "figure.button.resize-scoped-center": "{scope}を今の中心を保ってサイズに追従",
839
838
  "figure.text.resize-move": "({axis} {mm} mm 移動)",
840
839
  "figure.text.held-by-rule": "規則がこの部品の位置を決めます。",
841
- "figure.text.held-on-plane": "{face}を{place}に保持中 (間隔 {gap} mm)",
842
- "figure.text.held-on-plane-worked-out": "{face}を{place}に保持中 (間隔は式で決まる)",
843
- "figure.text.held-on-part": "{other}の{otherFace}に{face}で取り付け",
840
+ "figure.text.held-on-plane": "{place}に保持中 (間隔 {gap} mm)",
841
+ "figure.text.held-on-plane-worked-out": "{place}に保持中 (間隔は式で決まる)",
842
+ "figure.text.held-on-part": "{other}の{otherFace}に取り付け",
844
843
  "figure.button.open-fastening": "取り付け設定を開く",
845
844
  "figure.button.detach-held": "取り付けを外す",
846
845
  "figure.text.gizmo-size-turned-fastening": "{part} は回して取り付けられているため、ドラッグでサイズを変えられません。",
@@ -870,7 +869,6 @@
870
869
  "figure.text.placement-is-intent": "作成の基準です。部品がなくても決められ、空間の宣言は変えません。",
871
870
  "figure.button.show-model-settings": "モデル設定を表示",
872
871
  "figure.text.new-figure-name": "新しい Figure",
873
- "figure.text.fasten-editing": "現在の取り付けを編集: {face}を{target}に",
874
872
  "figure.text.fasten-start": "別の部品の面に取り付けると、相手の部品が変わっても関係を保ちます。",
875
873
  "figure.button.fasten-start": "別の部品に取り付ける",
876
874
  "figure.text.fasten-target-first": "先に取り付ける部品を選んでください。",
@@ -941,9 +939,9 @@
941
939
  "figure.label.fasten-mode-centre": "中心を面に",
942
940
  "figure.text.fasten-off-face": "{face}に接していません。",
943
941
  "figure.text.fasten-past-edges": "縁からはみ出しています: {sides}",
944
- "figure.text.fasten-sentence-meet": "{part}の{face}を{to}に接して",
945
- "figure.text.fasten-sentence-flush": "{part}の{face}を{to}と同じ面に",
946
- "figure.text.fasten-sentence-centre": "{part}の中心を{to}の上に",
942
+ "figure.text.fasten-sentence-meet": "{to}に載せる",
943
+ "figure.text.fasten-sentence-flush": "{to}と同じ面に付ける",
944
+ "figure.text.fasten-sentence-centre": "{to}の中心に付ける",
947
945
  "figure.label.measure-x": "幅",
948
946
  "figure.label.measure-y": "高さ",
949
947
  "figure.label.measure-z": "奥行き",
@@ -532,8 +532,9 @@
532
532
  "figure.text.overhang-out": "{on}의 {face} 가장자리 밖으로 나와 있습니다: {sides}. 모델의 점유 공간과는 따로 봅니다.",
533
533
  "figure.text.overhang-larger": "{on}의 {face}보다 넓어 가장자리 밖으로 나와 있습니다: {sides}.",
534
534
  "figure.text.overhang-lopsided": "{axes} 방향으로 한쪽에 치우쳐 있습니다.",
535
- "figure.text.overhang-possible": "{on}의 {face} 가장자리 밖으로 나올 수 있습니다. 돌려 붙인 부품이라 둘러싼 상자로만 쟀습니다.",
535
+ "figure.text.overhang-possible": "{on}의 {face} 가장자리 밖으로 나올 수 있습니다.",
536
536
  "figure.text.overhang-unknown": "{on}의 {face} 가장자리 안에 있는지 확인하지 못했습니다.",
537
+ "figure.text.overhang-off": "닿는 곳이 {on}의 {face} 밖에 있어 그 자리에서는 받쳐지지 않습니다.",
537
538
  "figure.text.overhang-held": "이 부품에 붙은 {parts}이(가) 붙은 면 가장자리 밖으로 나와 있거나 나올 수 있습니다.",
538
539
  "figure.text.overhang-side-low": "{axis} 낮은 쪽 {mm} mm",
539
540
  "figure.text.overhang-side-high": "{axis} 높은 쪽 {mm} mm",
@@ -562,7 +563,6 @@
562
563
  "figure.label.facing": "닿는 방식",
563
564
  "figure.text.fasten-summary-gap": "간격 {mm} mm",
564
565
  "figure.text.fasten-summary-gap-worked-out": "간격은 식으로 정해짐",
565
- "figure.text.fasten-summary-twist": "비틀기 {degrees}°",
566
566
  "figure.label.gap": "간격 (mm)",
567
567
  "figure.label.align": "면 안 위치",
568
568
  "figure.label.align-centre": "가운데",
@@ -709,7 +709,6 @@
709
709
  "figure.text.row-ends": "낮은 쪽 끝 {low} mm · 높은 쪽 끝 {high} mm 남음",
710
710
  "figure.text.row-ends-unknown": "양 끝에 남는 길이는 확인하지 못했습니다.",
711
711
  "figure.text.row-companions": "함께 복제: {parts}",
712
- "figure.label.twist": "비틀기 (°)",
713
712
  "figure.text.instance-size-undeclared": "범위를 정하면 도면에서 크기를 바꿀 수 있습니다.",
714
713
  "figure.button.declare-instance-size": "늘어나는 범위 정하기",
715
714
  "figure.text.proposal-applied": "명령 {n}개를 한 단계로 적용했습니다.",
@@ -739,7 +738,7 @@
739
738
  "figure.button.follow-size-in-proportion": "모든 부품이 따라가게",
740
739
  "figure.text.proportion-kept": "자기 숫자로 남는 것: {what}",
741
740
  "figure.text.preview-clamped": "{axis} {asked} → {used}",
742
- "figure.text.placement-plane-refused": "{parts} 가 장착 평면에 붙은 면으로는 {placement} 에 붙일 수 없습니다. 떼거나 {faces} 면으로 다시 붙인 뒤 바꾸세요.",
741
+ "figure.text.placement-plane-refused": "장착 평면에 붙은 부품이 있어 놓이는 곳을 바꿀 수 없습니다: {parts}. 먼저 이 부품을 떼어 주십시오.",
743
742
  "figure.label.face-centre": "가운데",
744
743
  "figure.label.budget-moving": "매 프레임 다시 계산하는 부품",
745
744
  "figure.label.performance-cost": "성능 비용",
@@ -838,9 +837,9 @@
838
837
  "figure.button.resize-scoped-center": "{scope} 현재 중심을 유지하며 크기 따라가기",
839
838
  "figure.text.resize-move": "({axis} {mm} mm 이동)",
840
839
  "figure.text.held-by-rule": "규칙이 이 부품의 자리를 정합니다.",
841
- "figure.text.held-on-plane": "{face}을 {place}에 유지 중 (간격 {gap} mm)",
842
- "figure.text.held-on-plane-worked-out": "{face}을 {place}에 유지 중 (간격은 식으로 정해짐)",
843
- "figure.text.held-on-part": "{other}의 {otherFace}에 {face}으로 붙어 있음",
840
+ "figure.text.held-on-plane": "{place}에 붙어 있음 (간격 {gap} mm)",
841
+ "figure.text.held-on-plane-worked-out": "{place}에 붙어 있음 (간격은 식으로 정해짐)",
842
+ "figure.text.held-on-part": "{other}의 {otherFace}에 붙어 있음",
844
843
  "figure.button.open-fastening": "붙임 설정 열기",
845
844
  "figure.button.detach-held": "붙임 풀기",
846
845
  "figure.text.gizmo-size-turned-fastening": "{part} 부품은 돌려 붙어 있어 끌어서 크기를 바꿀 수 없습니다.",
@@ -870,7 +869,6 @@
870
869
  "figure.text.placement-is-intent": "작성 기준입니다. 부품이 없어도 정할 수 있고, 공간 선언은 바꾸지 않습니다.",
871
870
  "figure.button.show-model-settings": "모델 설정 보기",
872
871
  "figure.text.new-figure-name": "새 Figure",
873
- "figure.text.fasten-editing": "현재 관계 수정 — {face} → {target}",
874
872
  "figure.text.fasten-start": "이 부품을 다른 부품의 면에 붙여 두면, 상대 부품의 크기나 위치가 바뀌어도 함께 움직입니다.",
875
873
  "figure.button.fasten-start": "다른 부품에 붙이기",
876
874
  "figure.text.fasten-target-first": "먼저 붙일 부품을 선택해 주세요.",
@@ -941,9 +939,9 @@
941
939
  "figure.label.fasten-mode-centre": "가운데를 면에",
942
940
  "figure.text.fasten-off-face": "{face}과 닿지 않습니다.",
943
941
  "figure.text.fasten-past-edges": "가장자리 밖으로 나와 있습니다: {sides}",
944
- "figure.text.fasten-sentence-meet": "{part}의 {face}을 {to}에 맞닿게",
945
- "figure.text.fasten-sentence-flush": "{part}의 {face}을 {to}과 같은 면으로",
946
- "figure.text.fasten-sentence-centre": "{part}의 가운데를 {to} 위에",
942
+ "figure.text.fasten-sentence-meet": "{to}에 올려놓기",
943
+ "figure.text.fasten-sentence-flush": "{to}과 같은 면에 붙이기",
944
+ "figure.text.fasten-sentence-centre": "{to} 가운데에 붙이기",
947
945
  "figure.label.measure-x": "너비",
948
946
  "figure.label.measure-y": "높이",
949
947
  "figure.label.measure-z": "깊이",
@@ -532,8 +532,9 @@
532
532
  "figure.text.overhang-out": "Ia terkeluar melepasi tepi {face} {on}: {sides}. Ini berasingan daripada ruang rajah.",
533
533
  "figure.text.overhang-larger": "Lebih lebar daripada {face} {on}, ia melepasi tepinya: {sides}.",
534
534
  "figure.text.overhang-lopsided": "Ia terletak ke satu sisi sepanjang {axes}.",
535
- "figure.text.overhang-possible": "Ia mungkin terkeluar melepasi tepi {face} {on}: ia dilekatkan berpusing, jadi hanya kotaknya diukur.",
535
+ "figure.text.overhang-possible": "Ia mungkin terkeluar melepasi tepi {face} {on}.",
536
536
  "figure.text.overhang-unknown": "Sama ada ia berada dalam tepi {face} {on} tidak dapat dibaca.",
537
+ "figure.text.overhang-off": "Tempat ia bersentuh berada di luar {face} {on}: di situ ia tidak disokong.",
537
538
  "figure.text.overhang-held": "Bahagian yang dilekatkan padanya ({parts}) terkeluar, atau mungkin terkeluar, melepasi tepi muka tempatnya.",
538
539
  "figure.text.overhang-side-low": "{axis} sisi bawah {mm} mm",
539
540
  "figure.text.overhang-side-high": "{axis} sisi atas {mm} mm",
@@ -562,7 +563,6 @@
562
563
  "figure.label.facing": "Cara muka bertemu",
563
564
  "figure.text.fasten-summary-gap": "jarak {mm} mm",
564
565
  "figure.text.fasten-summary-gap-worked-out": "jarak ditentukan oleh formula",
565
- "figure.text.fasten-summary-twist": "pulasan {degrees}°",
566
566
  "figure.label.gap": "gap (mm)",
567
567
  "figure.label.align": "within the face",
568
568
  "figure.label.align-centre": "di tengah",
@@ -709,7 +709,6 @@
709
709
  "figure.text.row-ends": "{low} mm tinggal di hujung bawah · {high} mm di hujung atas",
710
710
  "figure.text.row-ends-unknown": "Baki di hujung tidak dapat dibaca.",
711
711
  "figure.text.row-companions": "disalin bersama: {parts}",
712
- "figure.label.twist": "pusingan (°)",
713
712
  "figure.text.instance-size-undeclared": "rajah tiada saiz, jadi papan tidak boleh mengubah saiznya.",
714
713
  "figure.button.declare-instance-size": "isytihar saiz rajah",
715
714
  "figure.text.proposal-applied": "{n} arahan digunakan sebagai satu langkah.",
@@ -739,7 +738,7 @@
739
738
  "figure.button.follow-size-in-proportion": "jadikan semua bahagian mengikut",
740
739
  "figure.text.proportion-kept": "kekal dengan nombor sendiri: {what}",
741
740
  "figure.text.preview-clamped": "{axis} {asked} → {used}",
742
- "figure.text.placement-plane-refused": "{parts} tidak boleh dipasang pada {placement} dengan muka yang dipasang pada satah pemasangan. tanggalkan atau pasang semula dengan muka {faces} dahulu.",
741
+ "figure.text.placement-plane-refused": "Ada bahagian yang dilekatkan pada satah pemasangan, jadi penempatan tidak boleh ditukar: {parts}. Tanggalkan bahagian itu dahulu.",
743
742
  "figure.label.face-centre": "tengah",
744
743
  "figure.label.budget-moving": "bahagian dikira semula setiap bingkai",
745
744
  "figure.label.performance-cost": "kos prestasi",
@@ -838,9 +837,9 @@
838
837
  "figure.button.resize-scoped-center": "{scope}: ikut saiz, kekalkan tengah sekarang",
839
838
  "figure.text.resize-move": "(bergerak {mm} mm pada {axis})",
840
839
  "figure.text.held-by-rule": "Satu peraturan meletakkan bahagian ini.",
841
- "figure.text.held-on-plane": "{face} dikekalkan pada {place} (jarak {gap} mm)",
842
- "figure.text.held-on-plane-worked-out": "{face} dikekalkan pada {place} (jarak ditentukan oleh formula)",
843
- "figure.text.held-on-part": "Dilekatkan dengan {face} pada {otherFace} {other}",
840
+ "figure.text.held-on-plane": "Dikekalkan pada {place} (jarak {gap} mm)",
841
+ "figure.text.held-on-plane-worked-out": "Dikekalkan pada {place} (jarak ditentukan oleh formula)",
842
+ "figure.text.held-on-part": "Dilekatkan pada {otherFace} {other}",
844
843
  "figure.button.open-fastening": "Buka tetapan lekatan",
845
844
  "figure.button.detach-held": "Tanggalkan",
846
845
  "figure.text.gizmo-size-turned-fastening": "{part} dilekatkan dalam keadaan berpusing, jadi saiznya tidak boleh diseret.",
@@ -870,7 +869,6 @@
870
869
  "figure.text.placement-is-intent": "Asas pengarangan rajah. Boleh dipilih sebelum ada bahagian; ia tidak mengubah ruang yang diisytiharkan.",
871
870
  "figure.button.show-model-settings": "Tunjukkan tetapan model",
872
871
  "figure.text.new-figure-name": "Rajah baharu",
873
- "figure.text.fasten-editing": "Menyunting lekatan semasa: {face} pada {target}",
874
872
  "figure.text.fasten-start": "Lekatkan bahagian ini pada muka bahagian lain supaya hubungannya kekal apabila salah satu berubah.",
875
873
  "figure.button.fasten-start": "Lekatkan pada bahagian lain",
876
874
  "figure.text.fasten-target-first": "Pilih bahagian yang hendak dilekatkan dahulu.",
@@ -941,9 +939,9 @@
941
939
  "figure.label.fasten-mode-centre": "tengah pada muka",
942
940
  "figure.text.fasten-off-face": "Ia tidak menyentuh {face}.",
943
941
  "figure.text.fasten-past-edges": "Ia melepasi tepi: {sides}",
944
- "figure.text.fasten-sentence-meet": "{face} {part} diletakkan pada {to}",
945
- "figure.text.fasten-sentence-flush": "{face} {part} sama rata dengan {to}",
946
- "figure.text.fasten-sentence-centre": "Tengah {part} pada {to}",
942
+ "figure.text.fasten-sentence-meet": "Diletakkan pada {to}",
943
+ "figure.text.fasten-sentence-flush": "Sama rata dengan {to}",
944
+ "figure.text.fasten-sentence-centre": "Dengan tengahnya pada {to}",
947
945
  "figure.label.measure-x": "lebar",
948
946
  "figure.label.measure-y": "tinggi",
949
947
  "figure.label.measure-z": "dalam",
@@ -532,8 +532,9 @@
532
532
  "figure.text.overhang-out": "超出了 {on} 的 {face} 边缘:{sides}。这与模型的占用空间分开看待。",
533
533
  "figure.text.overhang-larger": "比 {on} 的 {face} 宽,超出边缘:{sides}。",
534
534
  "figure.text.overhang-lopsided": "沿 {axes} 偏向一侧。",
535
- "figure.text.overhang-possible": "可能超出 {on} 的 {face} 边缘。部件是旋转后附着的,只按包围盒测量。",
535
+ "figure.text.overhang-possible": "可能超出 {on} 的 {face} 边缘。",
536
536
  "figure.text.overhang-unknown": "无法确认是否在 {on} 的 {face} 边缘内。",
537
+ "figure.text.overhang-off": "接触处在 {on} 的 {face} 之外,那里没有支撑。",
537
538
  "figure.text.overhang-held": "附着在此部件上的 {parts} 超出或可能超出所附着面的边缘。",
538
539
  "figure.text.overhang-side-low": "{axis} 低侧 {mm} mm",
539
540
  "figure.text.overhang-side-high": "{axis} 高侧 {mm} mm",
@@ -562,7 +563,6 @@
562
563
  "figure.label.facing": "接触方式",
563
564
  "figure.text.fasten-summary-gap": "间距 {mm} mm",
564
565
  "figure.text.fasten-summary-gap-worked-out": "间距由公式决定",
565
- "figure.text.fasten-summary-twist": "扭转 {degrees}°",
566
566
  "figure.label.gap": "gap (mm)",
567
567
  "figure.label.align": "within the face",
568
568
  "figure.label.align-centre": "居中",
@@ -709,7 +709,6 @@
709
709
  "figure.text.row-ends": "低端留 {low} mm · 高端留 {high} mm",
710
710
  "figure.text.row-ends-unknown": "无法读取两端剩余长度。",
711
711
  "figure.text.row-companions": "一起复制:{parts}",
712
- "figure.label.twist": "扭转 (°)",
713
712
  "figure.text.instance-size-undeclared": "图形没有尺寸,看板上无法调整大小。",
714
713
  "figure.button.declare-instance-size": "声明图形尺寸",
715
714
  "figure.text.proposal-applied": "已将 {n} 条命令作为一步应用。",
@@ -739,7 +738,7 @@
739
738
  "figure.button.follow-size-in-proportion": "让所有部件跟随",
740
739
  "figure.text.proportion-kept": "保留自身数值: {what}",
741
740
  "figure.text.preview-clamped": "{axis} {asked} → {used}",
742
- "figure.text.placement-plane-refused": "{parts} 贴在安装平面上的面不能用于 {placement}。请先拆下或改用 {faces} 面贴合后再更改。",
741
+ "figure.text.placement-plane-refused": "有部件贴在安装平面上,无法更改放置位置:{parts}。请先拆下这些部件。",
743
742
  "figure.label.face-centre": "中心",
744
743
  "figure.label.budget-moving": "每帧重新计算的部件",
745
744
  "figure.label.performance-cost": "性能成本",
@@ -838,9 +837,9 @@
838
837
  "figure.button.resize-scoped-center": "{scope}:保持当前中心并跟随尺寸",
839
838
  "figure.text.resize-move": "({axis} 方向移动 {mm} mm)",
840
839
  "figure.text.held-by-rule": "由规则决定此部件的位置。",
841
- "figure.text.held-on-plane": "{face}保持在{place}上(间距 {gap} mm)",
842
- "figure.text.held-on-plane-worked-out": "{face}保持在{place}上(间距由公式决定)",
843
- "figure.text.held-on-part": "以{face}附着在{other}的{otherFace}上",
840
+ "figure.text.held-on-plane": "保持在{place}上(间距 {gap} mm)",
841
+ "figure.text.held-on-plane-worked-out": "保持在{place}上(间距由公式决定)",
842
+ "figure.text.held-on-part": "附着在{other}的{otherFace}上",
844
843
  "figure.button.open-fastening": "打开附着设置",
845
844
  "figure.button.detach-held": "解除附着",
846
845
  "figure.text.gizmo-size-turned-fastening": "{part} 是旋转后附着的,无法拖动改变尺寸。",
@@ -870,7 +869,6 @@
870
869
  "figure.text.placement-is-intent": "这是创作基准。没有部件也可以选择,不会更改声明的空间。",
871
870
  "figure.button.show-model-settings": "查看模型设置",
872
871
  "figure.text.new-figure-name": "新 Figure",
873
- "figure.text.fasten-editing": "编辑当前附着:{face}附着在{target}上",
874
872
  "figure.text.fasten-start": "将此部件附着到另一部件的面上,任一部件变化时都会保持该关系。",
875
873
  "figure.button.fasten-start": "附着到另一部件",
876
874
  "figure.text.fasten-target-first": "请先选择要附着的部件。",
@@ -941,9 +939,9 @@
941
939
  "figure.label.fasten-mode-centre": "中心在面上",
942
940
  "figure.text.fasten-off-face": "未接触{face}。",
943
941
  "figure.text.fasten-past-edges": "超出边缘: {sides}",
944
- "figure.text.fasten-sentence-meet": "{part}的{face}贴在{to}上",
945
- "figure.text.fasten-sentence-flush": "{part}的{face}与{to}齐平",
946
- "figure.text.fasten-sentence-centre": "{part}的中心在{to}上",
942
+ "figure.text.fasten-sentence-meet": "放在{to}上",
943
+ "figure.text.fasten-sentence-flush": "与{to}齐平",
944
+ "figure.text.fasten-sentence-centre": "贴在{to}中间",
947
945
  "figure.label.measure-x": "宽度",
948
946
  "figure.label.measure-y": "高度",
949
947
  "figure.label.measure-z": "深度",