@things-factory/figure-ui 10.1.26 → 10.1.28

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 (83) hide show
  1. package/client/graphql/index.ts +23 -0
  2. package/client/modeller/base-box.ts +104 -0
  3. package/client/modeller/figure-animations.ts +253 -32
  4. package/client/modeller/figure-canvas.ts +18 -3
  5. package/client/modeller/figure-inspector.ts +292 -3
  6. package/client/modeller/figure-preview.ts +57 -2
  7. package/client/modeller/figure-report.ts +9 -4
  8. package/client/modeller/figure-side.ts +9 -1
  9. package/client/modeller/figure-source.ts +24 -4
  10. package/client/modeller/figure-view.ts +20 -0
  11. package/client/modeller/joint-edits.ts +262 -0
  12. package/client/modeller/joint-gizmo.ts +118 -0
  13. package/client/modeller/pose-defaults.ts +67 -0
  14. package/client/modeller/proposal.ts +9 -3
  15. package/client/modeller/scene-budget.ts +31 -40
  16. package/client/pages/figure-list-page.ts +4 -9
  17. package/client/pages/figure-modeller-page.ts +124 -41
  18. package/dist-client/graphql/index.d.ts +7 -0
  19. package/dist-client/graphql/index.js +21 -0
  20. package/dist-client/graphql/index.js.map +1 -1
  21. package/dist-client/modeller/base-box.d.ts +47 -0
  22. package/dist-client/modeller/base-box.js +52 -0
  23. package/dist-client/modeller/base-box.js.map +1 -0
  24. package/dist-client/modeller/figure-animations.d.ts +29 -0
  25. package/dist-client/modeller/figure-animations.js +228 -25
  26. package/dist-client/modeller/figure-animations.js.map +1 -1
  27. package/dist-client/modeller/figure-canvas.d.ts +9 -0
  28. package/dist-client/modeller/figure-canvas.js +14 -3
  29. package/dist-client/modeller/figure-canvas.js.map +1 -1
  30. package/dist-client/modeller/figure-inspector.d.ts +37 -0
  31. package/dist-client/modeller/figure-inspector.js +253 -2
  32. package/dist-client/modeller/figure-inspector.js.map +1 -1
  33. package/dist-client/modeller/figure-preview.d.ts +15 -0
  34. package/dist-client/modeller/figure-preview.js +48 -2
  35. package/dist-client/modeller/figure-preview.js.map +1 -1
  36. package/dist-client/modeller/figure-report.d.ts +3 -2
  37. package/dist-client/modeller/figure-report.js +9 -4
  38. package/dist-client/modeller/figure-report.js.map +1 -1
  39. package/dist-client/modeller/figure-side.d.ts +5 -1
  40. package/dist-client/modeller/figure-side.js +12 -0
  41. package/dist-client/modeller/figure-side.js.map +1 -1
  42. package/dist-client/modeller/figure-source.d.ts +15 -0
  43. package/dist-client/modeller/figure-source.js +8 -4
  44. package/dist-client/modeller/figure-source.js.map +1 -1
  45. package/dist-client/modeller/figure-view.d.ts +16 -0
  46. package/dist-client/modeller/figure-view.js +15 -0
  47. package/dist-client/modeller/figure-view.js.map +1 -1
  48. package/dist-client/modeller/joint-edits.d.ts +49 -0
  49. package/dist-client/modeller/joint-edits.js +223 -0
  50. package/dist-client/modeller/joint-edits.js.map +1 -0
  51. package/dist-client/modeller/joint-gizmo.d.ts +31 -0
  52. package/dist-client/modeller/joint-gizmo.js +104 -0
  53. package/dist-client/modeller/joint-gizmo.js.map +1 -0
  54. package/dist-client/modeller/pose-defaults.d.ts +9 -0
  55. package/dist-client/modeller/pose-defaults.js +35 -0
  56. package/dist-client/modeller/pose-defaults.js.map +1 -0
  57. package/dist-client/modeller/proposal.d.ts +1 -1
  58. package/dist-client/modeller/proposal.js +8 -3
  59. package/dist-client/modeller/proposal.js.map +1 -1
  60. package/dist-client/modeller/scene-budget.d.ts +31 -34
  61. package/dist-client/modeller/scene-budget.js +28 -37
  62. package/dist-client/modeller/scene-budget.js.map +1 -1
  63. package/dist-client/pages/figure-list-page.js +4 -9
  64. package/dist-client/pages/figure-list-page.js.map +1 -1
  65. package/dist-client/pages/figure-modeller-page.d.ts +43 -0
  66. package/dist-client/pages/figure-modeller-page.js +121 -40
  67. package/dist-client/pages/figure-modeller-page.js.map +1 -1
  68. package/dist-client/tsconfig.tsbuildinfo +1 -1
  69. package/dist-server/tsconfig.tsbuildinfo +1 -1
  70. package/package.json +3 -3
  71. package/test/ai-proposal-contract.test.ts +16 -11
  72. package/test/base-box.test.ts +154 -0
  73. package/test/figure-source.test.ts +32 -0
  74. package/test/joint-edits.test.ts +165 -0
  75. package/test/joint-gizmo.test.ts +174 -0
  76. package/test/pose-defaults.test.ts +71 -0
  77. package/test/preview-board-depth.test.ts +27 -0
  78. package/test/scene-budget.test.ts +53 -0
  79. package/translations/en.json +37 -2
  80. package/translations/ja.json +37 -2
  81. package/translations/ko.json +37 -2
  82. package/translations/ms.json +37 -2
  83. package/translations/zh.json +37 -2
@@ -12,6 +12,7 @@
12
12
  "figure.button.delete-figure": "delete",
13
13
  "figure.button.discard": "discard",
14
14
  "figure.button.duplicate-part": "duplicate",
15
+ "figure.button.fit-base-to-parts": "部品に合わせる",
15
16
  "figure.button.mirror-x": "mirror X",
16
17
  "figure.button.mirror-z": "mirror Z",
17
18
  "figure.button.move-part-down": "move down",
@@ -19,6 +20,7 @@
19
20
  "figure.button.new-figure": "new figure",
20
21
  "figure.button.pivot-clear": "部品の中心",
21
22
  "figure.button.pivot-set": "設定",
23
+ "figure.button.pose-as-default": "この姿勢を既定に",
22
24
  "figure.button.preview-fix": "修正案をプレビュー · {part} {axis} 固定面: {from} → {to}",
23
25
  "figure.button.redo": "やり直す",
24
26
  "figure.button.release-figure": "公開する",
@@ -82,6 +84,7 @@
82
84
  "figure.label.axis-scale": "scale",
83
85
  "figure.label.axis-scale-short": "scale",
84
86
  "figure.label.axis-width": "width",
87
+ "figure.label.base-box": "基準ボックス (mm)",
85
88
  "figure.label.budget-animations": "animation points",
86
89
  "figure.label.budget-groups": "material groups",
87
90
  "figure.label.budget-parts": "part count",
@@ -96,6 +99,8 @@
96
99
  "figure.label.channel-path": "動かすもの",
97
100
  "figure.label.channel-pivot": "回転中心",
98
101
  "figure.label.channel-target": "部品",
102
+ "figure.label.channel-target-joints": "関節",
103
+ "figure.label.channel-target-parts": "部品",
99
104
  "figure.label.channels": "チャンネル",
100
105
  "figure.label.clip-name": "clip 名",
101
106
  "figure.label.clips": "アニメーション (時間に沿って再生)",
@@ -137,6 +142,21 @@
137
142
  "figure.label.intensity": "intensity",
138
143
  "figure.label.interpolation-linear": "なめらか",
139
144
  "figure.label.interpolation-step": "段階",
145
+ "figure.label.joint": "関節",
146
+ "figure.label.joint-axis": "軸",
147
+ "figure.label.joint-limit-max": "最大",
148
+ "figure.label.joint-limit-min": "最小",
149
+ "figure.label.joint-limits-deg": "可動範囲 (度)",
150
+ "figure.label.joint-limits-mm": "可動範囲 (mm)",
151
+ "figure.label.joint-origin": "基準点",
152
+ "figure.label.joint-parent": "取り付け先",
153
+ "figure.label.joint-parent-none": "なし (Figure の枠)",
154
+ "figure.label.joint-type": "動き",
155
+ "figure.label.joint-type-continuous": "連続回転",
156
+ "figure.label.joint-type-none": "固定",
157
+ "figure.label.joint-type-prismatic": "直線移動",
158
+ "figure.label.joint-type-revolute": "回転 (範囲内)",
159
+ "figure.label.joint-value": "関節値",
140
160
  "figure.label.keep-round": "section",
141
161
  "figure.label.key-at": "時刻 (秒)",
142
162
  "figure.label.key-at-value": "値の位置 (0〜1)",
@@ -245,6 +265,8 @@
245
265
  "figure.label.triangles": "triangles",
246
266
  "figure.label.triangles-at-100": "triangles for 100",
247
267
  "figure.label.triangles-at-10k": "triangles at 10k instances",
268
+ "figure.label.unit-none": "単位なし",
269
+ "figure.label.unit-type-it": "直接入力…",
248
270
  "figure.label.weight": "weight",
249
271
  "figure.label.what-this-does": "この Figure の役割",
250
272
  "figure.text.accepts-anything": "空欄なら何でも可",
@@ -261,8 +283,10 @@
261
283
  "figure.text.animation-needs-a-named-part": "先に部品を追加してください。",
262
284
  "figure.text.assistant-proposed-a-figure": "提案を右側に表示しました。",
263
285
  "figure.text.axes-not-measurable-yet": "測定できない項目はチャートから外しました: {axes}。理由は下にあります。",
264
- "figure.text.bound-by-drawCalls": "draw call が先に上限に達します (1 個あたり {per}、図面あたり {budget})。",
286
+ "figure.text.base-box-explained": "図面に置くときの倍率を決めるボックスです。部品がこのボックスを越えると発行できません。サイズを変えても部品はその場に残ります。",
287
+ "figure.text.bound-by-groups": "部品グループが先に埋まります — この図形は {per} グループで、1 画面は {budget} グループまで 60fps で描きます。",
265
288
  "figure.text.bound-by-triangles": "三角形が先に上限に達します (1 個あたり {per}、図面あたり {budget})。",
289
+ "figure.text.budget-measured-on": "{gpu} で {on} に測定した値です。静止している図形は負荷になりません — 画面に見えて再描画されるものだけを数えます。",
266
290
  "figure.text.budget-not-measured-yet": "this target has not been measured yet.",
267
291
  "figure.text.cannot-release-now": "今は公開できません",
268
292
  "figure.text.canvas-appears-once-a-part-exists": "左の「図形」から 1 つ選んで最初の部品を追加してください。",
@@ -279,6 +303,7 @@
279
303
  "figure.text.change-capabilities": "能力",
280
304
  "figure.text.change-changed": "a changed part",
281
305
  "figure.text.change-detail": "the detail level",
306
+ "figure.text.change-joints": "関節",
282
307
  "figure.text.change-placement": "配置基準",
283
308
  "figure.text.change-removed": "a part being removed",
284
309
  "figure.text.change-styleKit": "the style kit",
@@ -290,6 +315,7 @@
290
315
  "figure.text.clip-needs-a-name": "名前を入力してください。",
291
316
  "figure.text.collapse-parts-pane": "collapse the part list",
292
317
  "figure.text.collapse-properties-pane": "collapse the property pane",
318
+ "figure.text.contract-not-compared": "この修正がすでに配置されたものを壊すか確認できませんでした — {why}",
293
319
  "figure.text.coordinate-ground-explained": "原点と目盛りを床に表示します",
294
320
  "figure.text.delete-figure-confirm": "delete {name}? drawings already using this type will no longer find it.",
295
321
  "figure.text.designate-in-properties": "まだ指定された部品がありません。部品を選び、プロパティタブで「能力での役割」を指定してください。",
@@ -306,6 +332,7 @@
306
332
  "figure.text.figure-type-example": "例: OHT, AGV_LIFTER",
307
333
  "figure.text.figure-type-placeholder": "Figure 識別タイプ (例: OHT)",
308
334
  "figure.text.find-by-this-tag": "find by this tag",
335
+ "figure.text.fit-base-explained": "すべての部品を包む最小のボックスに変えます。中心はそのままなので、偏った部品があると反対側に余裕が残ります。",
309
336
  "figure.text.fits-n-instances": "up to {n}",
310
337
  "figure.text.floor-explained": "座標の下地と重なるため、通常はオフにします",
311
338
  "figure.text.follow-camera-explained": "オフにすると影の向きが固定されます",
@@ -316,9 +343,16 @@
316
343
  "figure.text.hemisphere-light-explained": "空と床から均一に照らす光です。陰になった面を明るくします。",
317
344
  "figure.text.hide-all-parts": "hide all",
318
345
  "figure.text.hide-this-part": "hide this part while you work. not saved",
319
- "figure.text.how-many-fit": "1 つの図面に画面が遅くならずに置ける数",
346
+ "figure.text.how-many-fit": "画面に出しても遅くならない数",
320
347
  "figure.text.instances-unit": "instances",
321
348
  "figure.text.interpolation-explained": "キーの間をどうつなぐか。",
349
+ "figure.text.joint-channel-value-deg": "キーの値は関節の角度 (度) です。",
350
+ "figure.text.joint-channel-value-mm": "キーの値は関節の移動距離 (mm) です。",
351
+ "figure.text.joint-driven-by": "パラメーター「{name}」がこの関節を動かします。プレビューで確認します。",
352
+ "figure.text.joint-explained": "取り付け先の部品が動くと、この部品も一緒に動きます。関節を設定すると、取り付け先に対してこの部品が回転する軸または移動する方向と、可動範囲を決めます。関節の値は一緒に作られるパラメーターで与えます。",
353
+ "figure.text.joint-limits-must-include-zero": "可動範囲に 0 を含めてください。いま描いている姿勢が 0 です。",
354
+ "figure.text.joint-not-driven": "この関節を動かすパラメーターがありません。アニメーションタブでパラメーターを追加します。",
355
+ "figure.text.joint-value-beyond-limits": "関節の可動範囲外です。",
322
356
  "figure.text.keep-round-cost": "1 draw call",
323
357
  "figure.text.keep-round-merged": "merged into a group",
324
358
  "figure.text.keep-round-off": "off",
@@ -368,6 +402,7 @@
368
402
  "figure.text.picked-changes-do-not-validate": "the selected changes do not make a valid figure",
369
403
  "figure.text.pivot-defaults-to-the-part-centre": "未設定なら部品の中心で回転します。座標は部品基準です。",
370
404
  "figure.text.placement-explained": "3D シーンでの基準面を決めます (床: AGV/コンベヤ、天井: OHT/ホイスト、中心: センサー/ドローン)。",
405
+ "figure.text.pose-as-default-explained": "今の姿勢をパラメータの既定値として書き込みます。値が与えられないとき、この姿勢で立ちます。",
371
406
  "figure.text.preview-blocked-by-errors": "形式エラーのためプレビューを表示できません。成熟度タブで理由を確認してください。",
372
407
  "figure.text.preview-needs-a-part": "部品を追加すると、図面に置いたときの姿が表示されます。",
373
408
  "figure.text.proposal-feedback-note": "次の提案に反映するメモ (このセッションのみ)",
@@ -12,6 +12,7 @@
12
12
  "figure.button.delete-figure": "삭제",
13
13
  "figure.button.discard": "취소",
14
14
  "figure.button.duplicate-part": "복제",
15
+ "figure.button.fit-base-to-parts": "부품에 맞추기",
15
16
  "figure.button.mirror-x": "X 대칭",
16
17
  "figure.button.mirror-z": "Z 대칭",
17
18
  "figure.button.move-part-down": "아래로",
@@ -19,6 +20,7 @@
19
20
  "figure.button.new-figure": "새 Figure",
20
21
  "figure.button.pivot-clear": "제 중심으로",
21
22
  "figure.button.pivot-set": "적기",
23
+ "figure.button.pose-as-default": "이 자세를 기본으로",
22
24
  "figure.button.preview-fix": "수정안 미리보기 · {part} {axis} 고정 면: {from} → {to}",
23
25
  "figure.button.redo": "다시 실행",
24
26
  "figure.button.release-figure": "발행하기",
@@ -82,6 +84,7 @@
82
84
  "figure.label.axis-scale": "배치 규모",
83
85
  "figure.label.axis-scale-short": "규모",
84
86
  "figure.label.axis-width": "가로",
87
+ "figure.label.base-box": "기준 상자 (mm)",
85
88
  "figure.label.budget-animations": "움직이는 부품",
86
89
  "figure.label.budget-groups": "재질 그룹",
87
90
  "figure.label.budget-parts": "부품 수",
@@ -96,6 +99,8 @@
96
99
  "figure.label.channel-path": "무엇을",
97
100
  "figure.label.channel-pivot": "회전 중심",
98
101
  "figure.label.channel-target": "부품",
102
+ "figure.label.channel-target-joints": "관절",
103
+ "figure.label.channel-target-parts": "부품",
99
104
  "figure.label.channels": "채널",
100
105
  "figure.label.clip-name": "clip 이름",
101
106
  "figure.label.clips": "애니메이션 (시간에 따라 재생)",
@@ -137,6 +142,21 @@
137
142
  "figure.label.intensity": "세기",
138
143
  "figure.label.interpolation-linear": "이어서",
139
144
  "figure.label.interpolation-step": "끊어서",
145
+ "figure.label.joint": "관절",
146
+ "figure.label.joint-axis": "축",
147
+ "figure.label.joint-limit-max": "최대",
148
+ "figure.label.joint-limit-min": "최소",
149
+ "figure.label.joint-limits-deg": "가동 범위 (도)",
150
+ "figure.label.joint-limits-mm": "가동 범위 (mm)",
151
+ "figure.label.joint-origin": "기준점",
152
+ "figure.label.joint-parent": "붙은 부품",
153
+ "figure.label.joint-parent-none": "없음 (Figure 틀)",
154
+ "figure.label.joint-type": "움직임",
155
+ "figure.label.joint-type-continuous": "연속 회전",
156
+ "figure.label.joint-type-none": "고정",
157
+ "figure.label.joint-type-prismatic": "직선 이동",
158
+ "figure.label.joint-type-revolute": "회전 (범위 안)",
159
+ "figure.label.joint-value": "관절 값",
140
160
  "figure.label.keep-round": "단면 유지",
141
161
  "figure.label.key-at": "시각(초)",
142
162
  "figure.label.key-at-value": "값 위치(0~1)",
@@ -245,6 +265,8 @@
245
265
  "figure.label.triangles": "삼각형",
246
266
  "figure.label.triangles-at-100": "100개 기준 삼각형",
247
267
  "figure.label.triangles-at-10k": "1만개 기준 삼각형",
268
+ "figure.label.unit-none": "단위 없음",
269
+ "figure.label.unit-type-it": "직접 적기…",
248
270
  "figure.label.weight": "그리는 비용",
249
271
  "figure.label.what-this-does": "이 Figure 가 하는 일",
250
272
  "figure.text.accepts-anything": "비우면 아무거나",
@@ -261,8 +283,10 @@
261
283
  "figure.text.animation-needs-a-named-part": "부품을 먼저 추가하세요.",
262
284
  "figure.text.assistant-proposed-a-figure": "제안을 오른쪽에 표시했습니다.",
263
285
  "figure.text.axes-not-measurable-yet": "측정할 수 없는 항목은 차트에서 뺐습니다: {axes}. 이유는 아래에 있습니다.",
264
- "figure.text.bound-by-drawCalls": "draw call먼저 한도에 도달합니다 (1개당 {per}, 도면당 {budget}).",
286
+ "figure.text.base-box-explained": "도면에 놓일 때의 배율을 정하는 상자입니다. 부품이 상자를 넘으면 발행이 막힙니다. 크기를 바꿔도 부품은 제자리에 남습니다.",
287
+ "figure.text.bound-by-groups": "부품 묶음이 먼저 찹니다 — 이 도형은 {per} 묶음이고, 한 화면에 {budget} 묶음까지 60fps 로 돕니다.",
265
288
  "figure.text.bound-by-triangles": "삼각형이 먼저 한도에 도달합니다 (1개당 {per}, 도면당 {budget}).",
289
+ "figure.text.budget-measured-on": "{gpu} 에서 {on} 에 잰 값입니다. 가만히 서 있는 도형은 값을 치르지 않습니다 — 화면에 보이고 다시 그려지는 것만 셉니다.",
266
290
  "figure.text.budget-not-measured-yet": "아직 실측 전 목표치입니다.",
267
291
  "figure.text.cannot-release-now": "지금은 발행할 수 없습니다",
268
292
  "figure.text.canvas-appears-once-a-part-exists": "왼쪽 「도형」에서 하나를 선택해 첫 부품을 추가하세요.",
@@ -279,6 +303,7 @@
279
303
  "figure.text.change-capabilities": "능력",
280
304
  "figure.text.change-changed": "바뀐 부품",
281
305
  "figure.text.change-detail": "디테일 등급",
306
+ "figure.text.change-joints": "관절",
282
307
  "figure.text.change-placement": "배치 기준",
283
308
  "figure.text.change-removed": "삭제되는 부품",
284
309
  "figure.text.change-styleKit": "스타일 킷",
@@ -290,6 +315,7 @@
290
315
  "figure.text.clip-needs-a-name": "이름을 입력하세요.",
291
316
  "figure.text.collapse-parts-pane": "부품 목록 접기",
292
317
  "figure.text.collapse-properties-pane": "속성 칸 접기",
318
+ "figure.text.contract-not-compared": "이 고침이 이미 놓인 것을 깨는지 확인하지 못했습니다 — {why}",
293
319
  "figure.text.coordinate-ground-explained": "원점과 눈금을 바닥에 표시합니다",
294
320
  "figure.text.delete-figure-confirm": "{name} 을 삭제하시겠습니까? 이 타입을 쓰고 있는 도면은 더 이상 찾지 못합니다.",
295
321
  "figure.text.designate-in-properties": "아직 지정된 부품이 없습니다. 부품을 선택하고 속성 탭에서 「능력에서의 역할」을 지정하세요.",
@@ -306,6 +332,7 @@
306
332
  "figure.text.figure-type-example": "예: OHT, AGV_LIFTER",
307
333
  "figure.text.figure-type-placeholder": "Figure 식별 타입 (예: OHT)",
308
334
  "figure.text.find-by-this-tag": "이 태그로 찾기",
335
+ "figure.text.fit-base-explained": "부품 전부를 감싸는 가장 작은 상자로 바꿉니다. 한가운데는 그대로 두므로 치우친 부품이 있으면 반대쪽에 여유가 남습니다.",
309
336
  "figure.text.fits-n-instances": "{n}개까지",
310
337
  "figure.text.floor-explained": "좌표 바탕과 겹쳐 보통 끕니다",
311
338
  "figure.text.follow-camera-explained": "끄면 그림자 방향이 고정됩니다",
@@ -316,9 +343,16 @@
316
343
  "figure.text.hemisphere-light-explained": "하늘과 바닥에서 고르게 비추는 빛입니다. 그늘진 면을 밝힙니다.",
317
344
  "figure.text.hide-all-parts": "모두 감추기",
318
345
  "figure.text.hide-this-part": "이 부품을 잠깐 가립니다. 저장되지 않습니다",
319
- "figure.text.how-many-fit": "한 도면에 화면이 느려지지 않고 놓을 있는 수",
346
+ "figure.text.how-many-fit": "한 화면에 보여도 느려지지 않는 수",
320
347
  "figure.text.instances-unit": "개",
321
348
  "figure.text.interpolation-explained": "키프레임 사이를 어떻게 잇습니까.",
349
+ "figure.text.joint-channel-value-deg": "키 값은 관절 각도(도)입니다.",
350
+ "figure.text.joint-channel-value-mm": "키 값은 관절 이동 거리(mm)입니다.",
351
+ "figure.text.joint-driven-by": "파라미터 「{name}」 가 이 관절을 움직입니다. 미리보기에서 확인합니다.",
352
+ "figure.text.joint-explained": "붙은 부품이 움직이면 이 부품도 함께 움직입니다. 관절을 정하면 이 부품이 붙은 부품에 대해 도는 축이나 이동하는 방향과 가동 범위를 정합니다. 관절 값은 함께 만들어지는 파라미터로 줍니다.",
353
+ "figure.text.joint-limits-must-include-zero": "가동 범위에 0 이 들어가야 합니다. 지금 그린 자세가 0 입니다.",
354
+ "figure.text.joint-not-driven": "이 관절을 움직이는 파라미터가 없습니다. 애니메이션 탭에서 파라미터를 추가합니다.",
355
+ "figure.text.joint-value-beyond-limits": "관절의 가동 범위 밖입니다.",
322
356
  "figure.text.keep-round-cost": "draw call 1",
323
357
  "figure.text.keep-round-merged": "묶음에 합쳐짐",
324
358
  "figure.text.keep-round-off": "끔",
@@ -368,6 +402,7 @@
368
402
  "figure.text.picked-changes-do-not-validate": "선택한 조합은 형식에 맞지 않습니다",
369
403
  "figure.text.pivot-defaults-to-the-part-centre": "적지 않으면 부품 제 중심입니다. 부품 기준 좌표입니다.",
370
404
  "figure.text.placement-explained": "3D 씬에서 객체의 기준면을 정합니다 (바닥: AGV/컨베이어, 천장: OHT/호이스트, 중심: 센서/드론).",
405
+ "figure.text.pose-as-default-explained": "지금 세운 자세를 파라미터의 기본값으로 적습니다. 아무도 값을 주지 않을 때 도형이 이 자세로 섭니다.",
371
406
  "figure.text.preview-blocked-by-errors": "형식 오류로 미리보기를 표시할 수 없습니다. 성숙도 탭에서 사유를 확인하세요.",
372
407
  "figure.text.preview-needs-a-part": "부품을 추가하면 도면에 놓았을 때의 모습이 표시됩니다.",
373
408
  "figure.text.proposal-feedback-note": "다음 제안에 반영할 메모 (현재 세션에만 사용)",
@@ -12,6 +12,7 @@
12
12
  "figure.button.delete-figure": "delete",
13
13
  "figure.button.discard": "discard",
14
14
  "figure.button.duplicate-part": "duplicate",
15
+ "figure.button.fit-base-to-parts": "muatkan pada bahagian",
15
16
  "figure.button.mirror-x": "mirror X",
16
17
  "figure.button.mirror-z": "mirror Z",
17
18
  "figure.button.move-part-down": "move down",
@@ -19,6 +20,7 @@
19
20
  "figure.button.new-figure": "new figure",
20
21
  "figure.button.pivot-clear": "pusat bahagian",
21
22
  "figure.button.pivot-set": "tetapkan",
23
+ "figure.button.pose-as-default": "jadikan postur ini lalai",
22
24
  "figure.button.preview-fix": "pratonton pembetulan · {part} {axis} muka: {from} → {to}",
23
25
  "figure.button.redo": "Buat semula",
24
26
  "figure.button.release-figure": "terbitkan",
@@ -82,6 +84,7 @@
82
84
  "figure.label.axis-scale": "scale",
83
85
  "figure.label.axis-scale-short": "scale",
84
86
  "figure.label.axis-width": "width",
87
+ "figure.label.base-box": "kotak asas (mm)",
85
88
  "figure.label.budget-animations": "animation points",
86
89
  "figure.label.budget-groups": "material groups",
87
90
  "figure.label.budget-parts": "part count",
@@ -96,6 +99,8 @@
96
99
  "figure.label.channel-path": "digerakkan",
97
100
  "figure.label.channel-pivot": "pangsi",
98
101
  "figure.label.channel-target": "bahagian",
102
+ "figure.label.channel-target-joints": "sendi",
103
+ "figure.label.channel-target-parts": "bahagian",
99
104
  "figure.label.channels": "saluran",
100
105
  "figure.label.clip-name": "nama clip",
101
106
  "figure.label.clips": "animasi (dimainkan mengikut masa)",
@@ -137,6 +142,21 @@
137
142
  "figure.label.intensity": "intensity",
138
143
  "figure.label.interpolation-linear": "licin",
139
144
  "figure.label.interpolation-step": "berperingkat",
145
+ "figure.label.joint": "sendi",
146
+ "figure.label.joint-axis": "paksi",
147
+ "figure.label.joint-limit-max": "maks",
148
+ "figure.label.joint-limit-min": "min",
149
+ "figure.label.joint-limits-deg": "had (darjah)",
150
+ "figure.label.joint-limits-mm": "had (mm)",
151
+ "figure.label.joint-origin": "titik asal",
152
+ "figure.label.joint-parent": "dilekatkan pada",
153
+ "figure.label.joint-parent-none": "tiada (bingkai figure)",
154
+ "figure.label.joint-type": "pergerakan",
155
+ "figure.label.joint-type-continuous": "putar tanpa had",
156
+ "figure.label.joint-type-none": "tetap",
157
+ "figure.label.joint-type-prismatic": "gelongsor",
158
+ "figure.label.joint-type-revolute": "putar dalam had",
159
+ "figure.label.joint-value": "nilai sendi",
140
160
  "figure.label.keep-round": "section",
141
161
  "figure.label.key-at": "masa (s)",
142
162
  "figure.label.key-at-value": "kedudukan (0–1)",
@@ -245,6 +265,8 @@
245
265
  "figure.label.triangles": "triangles",
246
266
  "figure.label.triangles-at-100": "triangles for 100",
247
267
  "figure.label.triangles-at-10k": "triangles at 10k instances",
268
+ "figure.label.unit-none": "tiada unit",
269
+ "figure.label.unit-type-it": "taip sendiri…",
248
270
  "figure.label.weight": "weight",
249
271
  "figure.label.what-this-does": "apa yang dilakukan figure ini",
250
272
  "figure.text.accepts-anything": "kosong bermaksud apa sahaja",
@@ -261,8 +283,10 @@
261
283
  "figure.text.animation-needs-a-named-part": "tambah bahagian dahulu.",
262
284
  "figure.text.assistant-proposed-a-figure": "cadangan dipaparkan di sebelah kanan.",
263
285
  "figure.text.axes-not-measurable-yet": "tidak dimasukkan dalam carta kerana tidak dapat diukur: {axes}. sebabnya di bawah.",
264
- "figure.text.bound-by-drawCalls": "draw call mencapai had dahulu ({per} setiap satu, {budget} setiap lukisan).",
286
+ "figure.text.base-box-explained": "Kotak yang menetapkan skala apabila figura diletakkan pada lukisan. Bahagian yang terkeluar daripadanya menghalang penerbitan. Menukar saiz membiarkan bahagian di tempatnya.",
287
+ "figure.text.bound-by-groups": "Kumpulan bahagian penuh dahulu — figura ini {per} kumpulan, dan satu skrin melukis {budget} kumpulan pada 60fps.",
265
288
  "figure.text.bound-by-triangles": "segi tiga mencapai had dahulu ({per} setiap satu, {budget} setiap lukisan).",
289
+ "figure.text.budget-measured-on": "Diukur pada {gpu}, {on}. Figura yang diam tidak menelan kos — hanya yang kelihatan dan dilukis semula dikira.",
266
290
  "figure.text.budget-not-measured-yet": "this target has not been measured yet.",
267
291
  "figure.text.cannot-release-now": "belum boleh diterbitkan",
268
292
  "figure.text.canvas-appears-once-a-part-exists": "pilih bentuk di sebelah kiri untuk menambah bahagian pertama.",
@@ -279,6 +303,7 @@
279
303
  "figure.text.change-capabilities": "keupayaan",
280
304
  "figure.text.change-changed": "a changed part",
281
305
  "figure.text.change-detail": "the detail level",
306
+ "figure.text.change-joints": "sendi",
282
307
  "figure.text.change-placement": "asas letak",
283
308
  "figure.text.change-removed": "a part being removed",
284
309
  "figure.text.change-styleKit": "the style kit",
@@ -290,6 +315,7 @@
290
315
  "figure.text.clip-needs-a-name": "masukkan nama.",
291
316
  "figure.text.collapse-parts-pane": "collapse the part list",
292
317
  "figure.text.collapse-properties-pane": "collapse the property pane",
318
+ "figure.text.contract-not-compared": "Tidak dapat menyemak sama ada perubahan ini merosakkan yang sudah diletakkan — {why}",
293
319
  "figure.text.coordinate-ground-explained": "melukis asalan dan grid pada lantai",
294
320
  "figure.text.delete-figure-confirm": "delete {name}? drawings already using this type will no longer find it.",
295
321
  "figure.text.designate-in-properties": "belum ada yang ditetapkan. pilih bahagian dan tetapkan peranannya dalam tab sifat.",
@@ -306,6 +332,7 @@
306
332
  "figure.text.figure-type-example": "cth. OHT, AGV_LIFTER",
307
333
  "figure.text.figure-type-placeholder": "pengecam jenis figure (cth. OHT)",
308
334
  "figure.text.find-by-this-tag": "find by this tag",
335
+ "figure.text.fit-base-explained": "Mengecilkan kotak kepada yang terkecil memuatkan setiap bahagian. Pusatnya kekal, jadi bahagian yang tersasar meninggalkan ruang di sebelah lagi.",
309
336
  "figure.text.fits-n-instances": "up to {n}",
310
337
  "figure.text.floor-explained": "bertindih dengan asas koordinat, jadi biasanya dimatikan",
311
338
  "figure.text.follow-camera-explained": "matikan untuk menetapkan arah bayang",
@@ -316,9 +343,16 @@
316
343
  "figure.text.hemisphere-light-explained": "cahaya sekata dari langit dan tanah. ia mencerahkan muka yang berbayang.",
317
344
  "figure.text.hide-all-parts": "hide all",
318
345
  "figure.text.hide-this-part": "hide this part while you work. not saved",
319
- "figure.text.how-many-fit": "berapa banyak muat pada satu lukisan tanpa melambatkannya",
346
+ "figure.text.how-many-fit": "berapa banyak boleh ada di skrin sebelum ia perlahan",
320
347
  "figure.text.instances-unit": "instances",
321
348
  "figure.text.interpolation-explained": "cara jurang antara kunci diisi.",
349
+ "figure.text.joint-channel-value-deg": "nilai kunci ialah sudut sendi dalam darjah.",
350
+ "figure.text.joint-channel-value-mm": "nilai kunci ialah jarak gerak sendi dalam mm.",
351
+ "figure.text.joint-driven-by": "parameter \"{name}\" menggerakkan sendi ini. semak dalam pratonton.",
352
+ "figure.text.joint-explained": "apabila bahagian yang dilekatkan bergerak, bahagian ini turut bergerak. sendi menetapkan paksi putaran atau arah gelongsor bahagian ini berbanding bahagian tersebut, serta hadnya. parameter yang dicipta bersama sendi memberi nilainya.",
353
+ "figure.text.joint-limits-must-include-zero": "had mesti merangkumi 0. pose seperti dilukis ialah 0.",
354
+ "figure.text.joint-not-driven": "tiada parameter menggerakkan sendi ini. tambah satu dalam tab animasi.",
355
+ "figure.text.joint-value-beyond-limits": "di luar had sendi.",
322
356
  "figure.text.keep-round-cost": "1 draw call",
323
357
  "figure.text.keep-round-merged": "merged into a group",
324
358
  "figure.text.keep-round-off": "off",
@@ -368,6 +402,7 @@
368
402
  "figure.text.picked-changes-do-not-validate": "the selected changes do not make a valid figure",
369
403
  "figure.text.pivot-defaults-to-the-part-centre": "jika tidak ditetapkan, bahagian berputar pada pusatnya sendiri. koordinat adalah setempat kepada bahagian.",
370
404
  "figure.text.placement-explained": "menetapkan satah rujukan dalam adegan 3D (lantai: AGV/penghantar, siling: OHT/hois, pusat: sensor/dron).",
405
+ "figure.text.pose-as-default-explained": "Menulis postur semasa sebagai nilai lalai parameter, supaya figura berdiri begini apabila tiada nilai diberi.",
371
406
  "figure.text.preview-blocked-by-errors": "pratonton tidak dapat dipaparkan kerana ralat format. lihat tab kematangan untuk sebabnya.",
372
407
  "figure.text.preview-needs-a-part": "tambah bahagian untuk melihat rupanya apabila diletakkan pada lukisan.",
373
408
  "figure.text.proposal-feedback-note": "nota pilihan untuk cadangan seterusnya (sesi ini sahaja)",
@@ -12,6 +12,7 @@
12
12
  "figure.button.delete-figure": "delete",
13
13
  "figure.button.discard": "discard",
14
14
  "figure.button.duplicate-part": "duplicate",
15
+ "figure.button.fit-base-to-parts": "适配部件",
15
16
  "figure.button.mirror-x": "mirror X",
16
17
  "figure.button.mirror-z": "mirror Z",
17
18
  "figure.button.move-part-down": "move down",
@@ -19,6 +20,7 @@
19
20
  "figure.button.new-figure": "new figure",
20
21
  "figure.button.pivot-clear": "部件中心",
21
22
  "figure.button.pivot-set": "设置",
23
+ "figure.button.pose-as-default": "将此姿态设为默认",
22
24
  "figure.button.preview-fix": "预览修正 · {part} {axis} 固定面: {from} → {to}",
23
25
  "figure.button.redo": "重做",
24
26
  "figure.button.release-figure": "发布",
@@ -82,6 +84,7 @@
82
84
  "figure.label.axis-scale": "scale",
83
85
  "figure.label.axis-scale-short": "scale",
84
86
  "figure.label.axis-width": "width",
87
+ "figure.label.base-box": "基准盒 (mm)",
85
88
  "figure.label.budget-animations": "animation points",
86
89
  "figure.label.budget-groups": "material groups",
87
90
  "figure.label.budget-parts": "part count",
@@ -96,6 +99,8 @@
96
99
  "figure.label.channel-path": "移动内容",
97
100
  "figure.label.channel-pivot": "旋转中心",
98
101
  "figure.label.channel-target": "部件",
102
+ "figure.label.channel-target-joints": "关节",
103
+ "figure.label.channel-target-parts": "部件",
99
104
  "figure.label.channels": "通道",
100
105
  "figure.label.clip-name": "clip 名称",
101
106
  "figure.label.clips": "动画 (随时间播放)",
@@ -137,6 +142,21 @@
137
142
  "figure.label.intensity": "intensity",
138
143
  "figure.label.interpolation-linear": "平滑",
139
144
  "figure.label.interpolation-step": "阶梯",
145
+ "figure.label.joint": "关节",
146
+ "figure.label.joint-axis": "轴",
147
+ "figure.label.joint-limit-max": "最大",
148
+ "figure.label.joint-limit-min": "最小",
149
+ "figure.label.joint-limits-deg": "活动范围(度)",
150
+ "figure.label.joint-limits-mm": "活动范围(mm)",
151
+ "figure.label.joint-origin": "基准点",
152
+ "figure.label.joint-parent": "附着于",
153
+ "figure.label.joint-parent-none": "无(Figure 框架)",
154
+ "figure.label.joint-type": "运动",
155
+ "figure.label.joint-type-continuous": "连续旋转",
156
+ "figure.label.joint-type-none": "固定",
157
+ "figure.label.joint-type-prismatic": "直线移动",
158
+ "figure.label.joint-type-revolute": "旋转(范围内)",
159
+ "figure.label.joint-value": "关节值",
140
160
  "figure.label.keep-round": "section",
141
161
  "figure.label.key-at": "时间 (秒)",
142
162
  "figure.label.key-at-value": "值位置 (0–1)",
@@ -245,6 +265,8 @@
245
265
  "figure.label.triangles": "triangles",
246
266
  "figure.label.triangles-at-100": "triangles for 100",
247
267
  "figure.label.triangles-at-10k": "triangles at 10k instances",
268
+ "figure.label.unit-none": "无单位",
269
+ "figure.label.unit-type-it": "直接输入…",
248
270
  "figure.label.weight": "weight",
249
271
  "figure.label.what-this-does": "此 Figure 的作用",
250
272
  "figure.text.accepts-anything": "留空表示不限",
@@ -261,8 +283,10 @@
261
283
  "figure.text.animation-needs-a-named-part": "请先添加部件。",
262
284
  "figure.text.assistant-proposed-a-figure": "提案显示在右侧。",
263
285
  "figure.text.axes-not-measurable-yet": "无法测量的项目已从图表中移除: {axes}。原因见下方。",
264
- "figure.text.bound-by-drawCalls": "draw call 先达到上限 (每个 {per},每个图面 {budget})。",
286
+ "figure.text.base-box-explained": "决定放到图纸上时缩放比例的盒子。部件超出它就无法发布。改变尺寸时部件保持原位。",
287
+ "figure.text.bound-by-groups": "部件组先到上限 — 此图形为 {per} 组,一屏可在 60fps 下绘制 {budget} 组。",
265
288
  "figure.text.bound-by-triangles": "三角形先达到上限 (每个 {per},每个图面 {budget})。",
289
+ "figure.text.budget-measured-on": "于 {on} 在 {gpu} 上实测。静止的图形不产生开销 — 只计算屏幕上被重绘的部分。",
266
290
  "figure.text.budget-not-measured-yet": "this target has not been measured yet.",
267
291
  "figure.text.cannot-release-now": "现在无法发布",
268
292
  "figure.text.canvas-appears-once-a-part-exists": "从左侧「形状」中选择一个来添加第一个部件。",
@@ -279,6 +303,7 @@
279
303
  "figure.text.change-capabilities": "能力",
280
304
  "figure.text.change-changed": "a changed part",
281
305
  "figure.text.change-detail": "the detail level",
306
+ "figure.text.change-joints": "关节",
282
307
  "figure.text.change-placement": "放置基准",
283
308
  "figure.text.change-removed": "a part being removed",
284
309
  "figure.text.change-styleKit": "the style kit",
@@ -290,6 +315,7 @@
290
315
  "figure.text.clip-needs-a-name": "请输入名称。",
291
316
  "figure.text.collapse-parts-pane": "collapse the part list",
292
317
  "figure.text.collapse-properties-pane": "collapse the property pane",
318
+ "figure.text.contract-not-compared": "无法确认此修改是否会破坏已放置的图形 — {why}",
293
319
  "figure.text.coordinate-ground-explained": "在地面显示原点和网格",
294
320
  "figure.text.delete-figure-confirm": "delete {name}? drawings already using this type will no longer find it.",
295
321
  "figure.text.designate-in-properties": "还没有指定部件。请选择部件,在属性标签页中设置「在能力中的角色」。",
@@ -306,6 +332,7 @@
306
332
  "figure.text.figure-type-example": "例: OHT, AGV_LIFTER",
307
333
  "figure.text.figure-type-placeholder": "Figure 识别类型 (例: OHT)",
308
334
  "figure.text.find-by-this-tag": "find by this tag",
335
+ "figure.text.fit-base-explained": "缩到能包住全部部件的最小盒子。中心不变,所以偏向一侧的部件会在另一侧留出余量。",
309
336
  "figure.text.fits-n-instances": "up to {n}",
310
337
  "figure.text.floor-explained": "与坐标底图重叠,通常关闭",
311
338
  "figure.text.follow-camera-explained": "关闭后阴影方向固定",
@@ -316,9 +343,16 @@
316
343
  "figure.text.hemisphere-light-explained": "来自天空和地面的均匀光线。可提亮阴影面。",
317
344
  "figure.text.hide-all-parts": "hide all",
318
345
  "figure.text.hide-this-part": "hide this part while you work. not saved",
319
- "figure.text.how-many-fit": "一个图面上不致变慢可放置的数量",
346
+ "figure.text.how-many-fit": "同屏显示而不变慢的数量",
320
347
  "figure.text.instances-unit": "instances",
321
348
  "figure.text.interpolation-explained": "关键帧之间如何衔接。",
349
+ "figure.text.joint-channel-value-deg": "关键帧的值是关节角度(度)。",
350
+ "figure.text.joint-channel-value-mm": "关键帧的值是关节移动距离(mm)。",
351
+ "figure.text.joint-driven-by": "参数“{name}”驱动此关节。请在预览中确认。",
352
+ "figure.text.joint-explained": "所附着的部件移动时,此部件也随之移动。设置关节后,可确定此部件相对于所附着部件旋转的轴或滑动的方向,以及活动范围。关节的值由同时创建的参数提供。",
353
+ "figure.text.joint-limits-must-include-zero": "活动范围必须包含 0。当前绘制的姿势即为 0。",
354
+ "figure.text.joint-not-driven": "没有驱动此关节的参数。请在“动画”选项卡中添加参数。",
355
+ "figure.text.joint-value-beyond-limits": "超出关节的活动范围。",
322
356
  "figure.text.keep-round-cost": "1 draw call",
323
357
  "figure.text.keep-round-merged": "merged into a group",
324
358
  "figure.text.keep-round-off": "off",
@@ -368,6 +402,7 @@
368
402
  "figure.text.picked-changes-do-not-validate": "the selected changes do not make a valid figure",
369
403
  "figure.text.pivot-defaults-to-the-part-centre": "未设置时部件绕自身中心旋转。坐标以部件为基准。",
370
404
  "figure.text.placement-explained": "设置 3D 场景中的基准面 (地面: AGV/输送机,天花板: OHT/吊车,中心: 传感器/无人机)。",
405
+ "figure.text.pose-as-default-explained": "把当前姿态写为参数默认值。没有给值时,图形以此姿态站立。",
371
406
  "figure.text.preview-blocked-by-errors": "由于格式错误无法显示预览。请在成熟度标签页查看原因。",
372
407
  "figure.text.preview-needs-a-part": "添加部件后会显示放置到图面上的效果。",
373
408
  "figure.text.proposal-feedback-note": "供下一次提案参考的备注 (仅限本次会话)",