@things-factory/figure-ui 10.1.25 → 10.1.26
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.
- package/client/graphql/index.ts +4 -1
- package/client/modeller/figure-animations.ts +57 -5
- package/client/modeller/figure-history-panel.ts +2 -2
- package/client/modeller/figure-inspector.ts +8 -2
- package/client/modeller/figure-preview.ts +3 -3
- package/client/modeller/figure-source.ts +17 -41
- package/client/modeller/proposal-session.ts +8 -2
- package/client/pages/figure-modeller-page.ts +50 -15
- package/dist-client/graphql/index.js +4 -1
- package/dist-client/graphql/index.js.map +1 -1
- package/dist-client/modeller/figure-animations.d.ts +5 -0
- package/dist-client/modeller/figure-animations.js +55 -5
- package/dist-client/modeller/figure-animations.js.map +1 -1
- package/dist-client/modeller/figure-history-panel.js +2 -2
- package/dist-client/modeller/figure-history-panel.js.map +1 -1
- package/dist-client/modeller/figure-inspector.js +8 -2
- package/dist-client/modeller/figure-inspector.js.map +1 -1
- package/dist-client/modeller/figure-preview.js +3 -3
- package/dist-client/modeller/figure-preview.js.map +1 -1
- package/dist-client/modeller/figure-source.d.ts +4 -1
- package/dist-client/modeller/figure-source.js +5 -36
- package/dist-client/modeller/figure-source.js.map +1 -1
- package/dist-client/modeller/proposal-session.d.ts +5 -0
- package/dist-client/modeller/proposal-session.js +3 -2
- package/dist-client/modeller/proposal-session.js.map +1 -1
- package/dist-client/pages/figure-modeller-page.d.ts +2 -22
- package/dist-client/pages/figure-modeller-page.js +46 -15
- package/dist-client/pages/figure-modeller-page.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/package.json +3 -3
- package/test/ai-proposal-contract.test.ts +3 -2
- package/test/figure-source.test.ts +11 -57
- package/test/i18n-prefix-guard.test.ts +2 -3
- package/translations/en.json +95 -80
- package/translations/ja.json +184 -58
- package/translations/ko.json +115 -100
- package/translations/ms.json +182 -56
- package/translations/zh.json +183 -57
package/translations/en.json
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"figure.button.add-clip": "add clip",
|
|
4
4
|
"figure.button.add-key": "add key",
|
|
5
5
|
"figure.button.add-parameter": "add parameter",
|
|
6
|
+
"figure.button.apply-fix": "apply fix · {part} {axis} face: {from} → {to}",
|
|
6
7
|
"figure.button.ask": "ask",
|
|
7
8
|
"figure.button.cancel": "cancel",
|
|
8
9
|
"figure.button.center-x": "centre X",
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
"figure.button.new-figure": "new figure",
|
|
19
20
|
"figure.button.pivot-clear": "part centre",
|
|
20
21
|
"figure.button.pivot-set": "set",
|
|
22
|
+
"figure.button.preview-fix": "preview fix · {part} {axis} face: {from} → {to}",
|
|
21
23
|
"figure.button.redo": "redo",
|
|
22
24
|
"figure.button.release-figure": "release",
|
|
23
25
|
"figure.button.remove": "remove",
|
|
@@ -31,7 +33,7 @@
|
|
|
31
33
|
"figure.button.to-floor": "to floor",
|
|
32
34
|
"figure.button.undo": "undo",
|
|
33
35
|
"figure.label.accepts": "accepts",
|
|
34
|
-
"figure.label.anchor": "
|
|
36
|
+
"figure.label.anchor": "anchored face",
|
|
35
37
|
"figure.label.anchor-advanced": "advanced proportional sizing",
|
|
36
38
|
"figure.label.anchor-aspect-x": "grows only as much as x does (keeps ratio)",
|
|
37
39
|
"figure.label.anchor-aspect-y": "grows only as much as y does (keeps ratio)",
|
|
@@ -70,6 +72,7 @@
|
|
|
70
72
|
"figure.label.axis-detail-short": "fidelity",
|
|
71
73
|
"figure.label.axis-height": "height",
|
|
72
74
|
"figure.label.axis-labels": "axis labels",
|
|
75
|
+
"figure.label.axis-name": "{axis} axis",
|
|
73
76
|
"figure.label.axis-reactive": "state display",
|
|
74
77
|
"figure.label.axis-reactive-short": "state",
|
|
75
78
|
"figure.label.axis-readable": "recognisability",
|
|
@@ -85,7 +88,7 @@
|
|
|
85
88
|
"figure.label.budget-surface": "surfaces outside the palette",
|
|
86
89
|
"figure.label.budget-transparent": "transparent materials",
|
|
87
90
|
"figure.label.budgets": "budgets",
|
|
88
|
-
"figure.label.by-axis": "maturity by
|
|
91
|
+
"figure.label.by-axis": "maturity by item",
|
|
89
92
|
"figure.label.candidate-review": "candidate review",
|
|
90
93
|
"figure.label.cast-shadow": "cast shadow",
|
|
91
94
|
"figure.label.category": "category",
|
|
@@ -95,7 +98,7 @@
|
|
|
95
98
|
"figure.label.channel-target": "part",
|
|
96
99
|
"figure.label.channels": "channels",
|
|
97
100
|
"figure.label.clip-name": "clip name",
|
|
98
|
-
"figure.label.clips": "animation
|
|
101
|
+
"figure.label.clips": "animation (plays over time)",
|
|
99
102
|
"figure.label.coordinate-ground": "coordinate ground",
|
|
100
103
|
"figure.label.corner-round": "corner round",
|
|
101
104
|
"figure.label.detail-L": "detailed",
|
|
@@ -136,6 +139,7 @@
|
|
|
136
139
|
"figure.label.interpolation-step": "stepped",
|
|
137
140
|
"figure.label.keep-round": "section",
|
|
138
141
|
"figure.label.key-at": "at (s)",
|
|
142
|
+
"figure.label.key-at-value": "at (0–1)",
|
|
139
143
|
"figure.label.key-light": "key light",
|
|
140
144
|
"figure.label.maturity": "maturity",
|
|
141
145
|
"figure.label.mode-edit": "edit",
|
|
@@ -160,9 +164,10 @@
|
|
|
160
164
|
"figure.label.palette-role": "color role",
|
|
161
165
|
"figure.label.palette-token": "palette token",
|
|
162
166
|
"figure.label.parameter-default": "default",
|
|
167
|
+
"figure.label.parameter-duration": "full travel (s)",
|
|
163
168
|
"figure.label.parameter-name": "parameter name",
|
|
164
169
|
"figure.label.parameter-range": "range",
|
|
165
|
-
"figure.label.parameters": "parameters
|
|
170
|
+
"figure.label.parameters": "parameters (pose set by value)",
|
|
166
171
|
"figure.label.part": "part",
|
|
167
172
|
"figure.label.part-material": "material",
|
|
168
173
|
"figure.label.part-position": "position (centre)",
|
|
@@ -176,6 +181,7 @@
|
|
|
176
181
|
"figure.label.placement-center": "center-based (center)",
|
|
177
182
|
"figure.label.placement-floor": "floor-based (floor)",
|
|
178
183
|
"figure.label.placement-limit": "placement limit",
|
|
184
|
+
"figure.label.playback-speed": "speed",
|
|
179
185
|
"figure.label.preset": "preset",
|
|
180
186
|
"figure.label.preset-ceramic": "ceramic",
|
|
181
187
|
"figure.label.preset-default": "default",
|
|
@@ -184,6 +190,7 @@
|
|
|
184
190
|
"figure.label.preset-plastic": "plastic",
|
|
185
191
|
"figure.label.preset-rubber": "rubber",
|
|
186
192
|
"figure.label.preset-wood": "wood",
|
|
193
|
+
"figure.label.preview-base": "base",
|
|
187
194
|
"figure.label.primitive-cube": "box",
|
|
188
195
|
"figure.label.primitive-cylinder": "cylinder",
|
|
189
196
|
"figure.label.primitive-polygon": "polygon",
|
|
@@ -241,30 +248,29 @@
|
|
|
241
248
|
"figure.label.weight": "drawing cost",
|
|
242
249
|
"figure.label.what-this-does": "what this figure does",
|
|
243
250
|
"figure.text.accepts-anything": "empty means anything",
|
|
244
|
-
"figure.text.accepts-explained": "
|
|
251
|
+
"figure.text.accepts-explained": "types allowed in this slot. separate with commas; leave empty for no limit.",
|
|
245
252
|
"figure.text.add-a-shape": "click to add a part",
|
|
246
|
-
"figure.text.all-lights-off": "both lights are off
|
|
253
|
+
"figure.text.all-lights-off": "both lights are off; only emissive surfaces show.",
|
|
247
254
|
"figure.text.already-released-edit-to-release-again": "already released. edit and save to go back to draft, then release again.",
|
|
248
|
-
"figure.text.anchor-explained": "where this part stays as the box grows.
|
|
249
|
-
"figure.text.anchors-are-not-drawn": "
|
|
250
|
-
"figure.text.animated-parts-cost": "
|
|
251
|
-
"figure.text.animated-parts-over": "
|
|
252
|
-
"figure.text.animation-empty-examples": "
|
|
253
|
-
"figure.text.animation-empty-what-it-is": "
|
|
254
|
-
"figure.text.animation-
|
|
255
|
-
"figure.text.
|
|
256
|
-
"figure.text.
|
|
257
|
-
"figure.text.
|
|
258
|
-
"figure.text.bound-by-
|
|
259
|
-
"figure.text.bound-by-triangles": "triangles reach the limit first — {per} per instance, against {budget} for a drawing.",
|
|
255
|
+
"figure.text.anchor-explained": "where this part stays as the box grows. two touching parts on different faces drift apart as it grows.",
|
|
256
|
+
"figure.text.anchors-are-not-drawn": "slots and ports are not drawn on a drawing; only the editor shows them.",
|
|
257
|
+
"figure.text.animated-parts-cost": "each moving part adds one draw call.",
|
|
258
|
+
"figure.text.animated-parts-over": "over the limit. many of these on one drawing will slow it down.",
|
|
259
|
+
"figure.text.animation-empty-examples": "a turning roller · a sliding door leaf · a rising lift · a blinking beacon.",
|
|
260
|
+
"figure.text.animation-empty-what-it-is": "no motion yet. add a clip to move parts.",
|
|
261
|
+
"figure.text.animation-needs-a-named-part": "add a part first.",
|
|
262
|
+
"figure.text.assistant-proposed-a-figure": "the proposal is shown on the right.",
|
|
263
|
+
"figure.text.axes-not-measurable-yet": "left off the chart because they cannot be measured: {axes}. the reasons are below.",
|
|
264
|
+
"figure.text.bound-by-drawCalls": "draw calls reach the limit first ({per} per instance, {budget} per drawing).",
|
|
265
|
+
"figure.text.bound-by-triangles": "triangles reach the limit first ({per} per instance, {budget} per drawing).",
|
|
260
266
|
"figure.text.budget-not-measured-yet": "this target has not been measured yet.",
|
|
261
267
|
"figure.text.cannot-release-now": "cannot be released yet",
|
|
262
|
-
"figure.text.canvas-appears-once-a-part-exists": "
|
|
263
|
-
"figure.text.capability-hand-written": "
|
|
268
|
+
"figure.text.canvas-appears-once-a-part-exists": "pick a shape on the left to add the first part.",
|
|
269
|
+
"figure.text.capability-hand-written": "set by hand, so it matches none of the levels above. it is saved under the names below.",
|
|
264
270
|
"figure.text.capacity-from-repeat": "capacity comes from the repeat setting and the instance size",
|
|
265
|
-
"figure.text.category-explained": "how the palette groups figures. one per figure
|
|
271
|
+
"figure.text.category-explained": "how the palette groups figures. one per figure.",
|
|
266
272
|
"figure.text.category-placeholder": "e.g. conveyor",
|
|
267
|
-
"figure.text.ceiling-height-explained": "
|
|
273
|
+
"figure.text.ceiling-height-explained": "the height a ceiling figure hangs from in the preview.",
|
|
268
274
|
"figure.text.center-on-x": "move to the centre of the base box on X.",
|
|
269
275
|
"figure.text.center-on-z": "move to the centre of the base box on Z.",
|
|
270
276
|
"figure.text.change-added": "a new part",
|
|
@@ -276,54 +282,57 @@
|
|
|
276
282
|
"figure.text.change-placement": "placement",
|
|
277
283
|
"figure.text.change-removed": "a part being removed",
|
|
278
284
|
"figure.text.change-styleKit": "the style kit",
|
|
279
|
-
"figure.text.channel-target-is-gone": "
|
|
280
|
-
"figure.text.clip-is-time-running": "
|
|
281
|
-
"figure.text.clip-name-is-how-it-is-driven": "
|
|
282
|
-
"figure.text.clip-name-taken": "
|
|
283
|
-
"figure.text.clip-needs-a-channel": "
|
|
284
|
-
"figure.text.clip-needs-a-name": "
|
|
285
|
+
"figure.text.channel-target-is-gone": "no such part. if you renamed the part, pick it again here.",
|
|
286
|
+
"figure.text.clip-is-time-running": "plays over time. the value an instance gives is the playback speed.",
|
|
287
|
+
"figure.text.clip-name-is-how-it-is-driven": "an instance gives a speed by this name.",
|
|
288
|
+
"figure.text.clip-name-taken": "another clip already has this name. enter a different name.",
|
|
289
|
+
"figure.text.clip-needs-a-channel": "add at least one channel.",
|
|
290
|
+
"figure.text.clip-needs-a-name": "enter a name.",
|
|
285
291
|
"figure.text.collapse-parts-pane": "collapse the part list",
|
|
286
292
|
"figure.text.collapse-properties-pane": "collapse the property pane",
|
|
287
293
|
"figure.text.coordinate-ground-explained": "draws the origin and a grid on the floor",
|
|
288
294
|
"figure.text.delete-figure-confirm": "delete {name}? drawings already using this type will no longer find it.",
|
|
289
|
-
"figure.text.designate-in-properties": "nothing designated yet. select a part and set its role in the properties tab",
|
|
290
|
-
"figure.text.detail-level-explained": "
|
|
295
|
+
"figure.text.designate-in-properties": "nothing designated yet. select a part and set its role in the properties tab.",
|
|
296
|
+
"figure.text.detail-level-explained": "S for signs and posts, M for most equipment, L for the large equipment a view centres on. the level sets the part limit.",
|
|
291
297
|
"figure.text.discard-changes-and-start-new": "there are unsaved changes. discard them and start a new figure?",
|
|
292
298
|
"figure.text.does-not-block": "does not block",
|
|
293
|
-
"figure.text.emissive-explained": "the surface
|
|
294
|
-
"figure.text.
|
|
299
|
+
"figure.text.emissive-explained": "how bright the surface itself is. 0 is unlit, and it does not light its surroundings.",
|
|
300
|
+
"figure.text.enter-a-type-name": "enter a type name.",
|
|
301
|
+
"figure.text.environment-explained": "sets what metal surfaces reflect. the shape does not change.",
|
|
295
302
|
"figure.text.expand-parts-pane": "expand the part list",
|
|
296
303
|
"figure.text.expand-properties-pane": "expand the property pane",
|
|
297
304
|
"figure.text.figure-display-name": "display name",
|
|
305
|
+
"figure.text.figure-name-example": "e.g. overhead hoist transport",
|
|
306
|
+
"figure.text.figure-type-example": "e.g. OHT, AGV_LIFTER",
|
|
298
307
|
"figure.text.figure-type-placeholder": "Figure type identifier (e.g. OHT)",
|
|
299
308
|
"figure.text.find-by-this-tag": "find by this tag",
|
|
300
309
|
"figure.text.fits-n-instances": "up to {n}",
|
|
301
|
-
"figure.text.floor-explained": "overlaps the coordinate ground, so usually off",
|
|
310
|
+
"figure.text.floor-explained": "overlaps the coordinate ground, so it is usually off",
|
|
302
311
|
"figure.text.follow-camera-explained": "turn off to fix the shadow direction",
|
|
303
312
|
"figure.text.grade-decided-by": "what decided the grade",
|
|
304
|
-
"figure.text.grade-explained": "the grade
|
|
313
|
+
"figure.text.grade-explained": "the grade is set by the usage of the item closest to its limit.",
|
|
305
314
|
"figure.text.grade-scale-lead": "grade scale (limit used)",
|
|
306
315
|
"figure.text.headroom-percent": "{percent}% headroom",
|
|
307
|
-
"figure.text.hemisphere-light-explained": "even light from sky and ground. it
|
|
316
|
+
"figure.text.hemisphere-light-explained": "even light from sky and ground. it brightens shaded faces.",
|
|
308
317
|
"figure.text.hide-all-parts": "hide all",
|
|
309
318
|
"figure.text.hide-this-part": "hide this part while you work. not saved",
|
|
310
|
-
"figure.text.how-many-fit": "how many fit on one drawing
|
|
319
|
+
"figure.text.how-many-fit": "how many fit on one drawing without slowing it down",
|
|
311
320
|
"figure.text.instances-unit": "instances",
|
|
312
|
-
"figure.text.interpolation-explained": "
|
|
321
|
+
"figure.text.interpolation-explained": "how the gap between keys is filled.",
|
|
313
322
|
"figure.text.keep-round-cost": "1 draw call",
|
|
314
323
|
"figure.text.keep-round-merged": "merged into a group",
|
|
315
324
|
"figure.text.keep-round-off": "off",
|
|
316
325
|
"figure.text.keep-round-on": "keep round",
|
|
317
|
-
"figure.text.keys-must-rise": "
|
|
326
|
+
"figure.text.keys-must-rise": "each key must come after the one before it.",
|
|
318
327
|
"figure.text.limit-comes-from-level": "the detail level sets this limit.",
|
|
319
|
-
"figure.text.maturity-blocked-no-binding": "
|
|
328
|
+
"figure.text.maturity-blocked-no-binding": "state display is not measured yet.",
|
|
320
329
|
"figure.text.maturity-blocked-no-parts": "nothing to measure — there are no parts.",
|
|
321
|
-
"figure.text.maturity-consistency-because": "checks
|
|
330
|
+
"figure.text.maturity-consistency-because": "checks texture use, recommended segment counts and the number of materials.",
|
|
322
331
|
"figure.text.maturity-consistency-clean": "no issues",
|
|
323
332
|
"figure.text.maturity-consistency-faults": "has issues",
|
|
324
|
-
"figure.text.maturity-detail-because": "
|
|
325
|
-
"figure.text.maturity-readable-because": "how many distinct colour regions
|
|
326
|
-
"figure.text.maturity-reuse-because": "shapes saved because several parts share one.
|
|
333
|
+
"figure.text.maturity-detail-because": "the share of the declared level's part limit that is used.",
|
|
334
|
+
"figure.text.maturity-readable-because": "how many distinct colour regions show from above, and how evenly.",
|
|
335
|
+
"figure.text.maturity-reuse-because": "shapes saved because several parts share one.",
|
|
327
336
|
"figure.text.maturity-scale-because": "measured against a drawing holding 500 assets.",
|
|
328
337
|
"figure.text.mirror-explained": "adds a mirrored copy on the other side — for parts that come in pairs, like legs or arms.",
|
|
329
338
|
"figure.text.mirror-would-overlap": "already centred — a mirror would land in the same place and overlap.",
|
|
@@ -339,78 +348,84 @@
|
|
|
339
348
|
"figure.text.no-findings": "nothing to report.",
|
|
340
349
|
"figure.text.not-measurable-yet": "not measurable",
|
|
341
350
|
"figure.text.not-measured-yet": "not measured",
|
|
342
|
-
"figure.text.nothing-released-yet": "nothing released yet.
|
|
343
|
-
"figure.text.on-by-default-explained": "the starting state when placed on a drawing.
|
|
351
|
+
"figure.text.nothing-released-yet": "nothing released yet.",
|
|
352
|
+
"figure.text.on-by-default-explained": "the starting state when placed on a drawing. a value set on the instance takes priority.",
|
|
344
353
|
"figure.text.other-segment-count": "enter a value",
|
|
345
|
-
"figure.text.palette-purpose-explained": "
|
|
346
|
-
"figure.text.parameter-curve-is-the-value-axis": "
|
|
347
|
-
"figure.text.parameter-
|
|
348
|
-
"figure.text.parameter-
|
|
349
|
-
"figure.text.parameter-
|
|
354
|
+
"figure.text.palette-purpose-explained": "choose the color role this part plays on screen.",
|
|
355
|
+
"figure.text.parameter-curve-is-the-value-axis": "keys sit on the value (0 = minimum, 1 = maximum). full travel time is set separately.",
|
|
356
|
+
"figure.text.parameter-duration-empty-is-instant": "seconds to move from minimum to maximum. leave empty to apply a new value at once.",
|
|
357
|
+
"figure.text.parameter-is-a-value-not-a-timeline": "shows the pose for the value an instance gives (e.g. hoist 1200mm down).",
|
|
358
|
+
"figure.text.parameter-key-within-span": "enter a key between 0 (minimum) and 1 (maximum).",
|
|
359
|
+
"figure.text.parameter-name-is-how-a-value-arrives": "an instance gives a value by this name.",
|
|
360
|
+
"figure.text.parameter-needs-a-name": "enter a name.",
|
|
350
361
|
"figure.text.part-limit-reached": "the detail level allows no more parts — raise the level or remove a part.",
|
|
351
|
-
"figure.text.part-limit-reached-short": "level {level} allows {limit} parts.
|
|
362
|
+
"figure.text.part-limit-reached-short": "level {level} allows {limit} parts. raise the level or remove a part.",
|
|
352
363
|
"figure.text.part-name-cannot-be-empty": "give the part a name.",
|
|
353
|
-
"figure.text.path-rotation-unit": "
|
|
354
|
-
"figure.text.path-scale-unit": "
|
|
355
|
-
"figure.text.path-translation-unit": "
|
|
364
|
+
"figure.text.path-rotation-unit": "euler angles in degrees, the same convention as the part's rotation.",
|
|
365
|
+
"figure.text.path-scale-unit": "a ratio. 1 is full size; 0 makes the part vanish.",
|
|
366
|
+
"figure.text.path-translation-unit": "offset from where the part sits. 0 leaves it in place.",
|
|
356
367
|
"figure.text.pick-a-shape-above-to-start": "pick a shape above to add the first part.",
|
|
357
368
|
"figure.text.picked-changes-do-not-validate": "the selected changes do not make a valid figure",
|
|
358
|
-
"figure.text.pivot-defaults-to-the-part-centre": "
|
|
369
|
+
"figure.text.pivot-defaults-to-the-part-centre": "left unset, the part turns about its own centre. coordinates are local to the part.",
|
|
359
370
|
"figure.text.placement-explained": "sets the anchor plane in 3D scene (floor: AGV/conveyor, ceiling: OHT/hoist, center: sensor/drone).",
|
|
360
|
-
"figure.text.preview-blocked-by-errors": "cannot
|
|
361
|
-
"figure.text.preview-needs-a-part": "
|
|
362
|
-
"figure.text.proposal-feedback-note": "
|
|
371
|
+
"figure.text.preview-blocked-by-errors": "cannot show the preview because of format errors. see the maturity tab for the reason.",
|
|
372
|
+
"figure.text.preview-needs-a-part": "add a part to see how it looks placed on a drawing.",
|
|
373
|
+
"figure.text.proposal-feedback-note": "optional note for the next suggestion (this session only)",
|
|
363
374
|
"figure.text.proposal-feedback-placeholder": "e.g. keep the silhouette, but make the port easier to read",
|
|
364
375
|
"figure.text.put-on-floor": "drop it to the floor (Z=0).",
|
|
365
|
-
"figure.text.range-needs-room": "
|
|
376
|
+
"figure.text.range-needs-room": "the maximum must be above the minimum.",
|
|
366
377
|
"figure.text.recipe-conveyor": "animation · an instance gives it a speed",
|
|
367
378
|
"figure.text.recipe-gate": "parameter · an instance gives how far open, 0 to 100 %",
|
|
368
379
|
"figure.text.recipe-lift": "parameter · an instance gives the height, 0 to 100 mm",
|
|
369
380
|
"figure.text.recipe-pusher": "parameter · an instance gives the travel, 0 to 100 mm",
|
|
370
|
-
"figure.text.release-
|
|
381
|
+
"figure.text.release-check-fix": "release check fix · {part} {axis} face: {from} → {to}",
|
|
382
|
+
"figure.text.release-needs-a-save-first": "there are unsaved changes. save first.",
|
|
371
383
|
"figure.text.releasing": "releasing…",
|
|
372
|
-
"figure.text.renaming-a-part-breaks-bindings": "
|
|
373
|
-
"figure.text.repeat-count-capped": "
|
|
384
|
+
"figure.text.renaming-a-part-breaks-bindings": "renaming breaks bindings on instances already placed.",
|
|
385
|
+
"figure.text.repeat-count-capped": "up to {limit}. each copy adds one draw call.",
|
|
374
386
|
"figure.text.repeat-count-now": "{count} at the authored size",
|
|
375
|
-
"figure.text.repeat-edits-the-unit": "
|
|
387
|
+
"figure.text.repeat-edits-the-unit": "repeated copies are edited as one. to change a single copy, add it as a separate part.",
|
|
376
388
|
"figure.text.repeat-grows-with-instance": "the count grows as the instance grows on this axis. the pitch stays",
|
|
377
|
-
"figure.text.repeat-keeps-count": "the count stays and each copy grows
|
|
378
|
-
"figure.text.repeat-pitch-explained": "centre
|
|
389
|
+
"figure.text.repeat-keeps-count": "the count stays and each copy grows.",
|
|
390
|
+
"figure.text.repeat-pitch-explained": "centre-to-centre distance. it stays when the part size changes.",
|
|
379
391
|
"figure.text.report-appears-when-you-add-a-part": "shows triangles, draw calls, and how many fit on one drawing. measured once you make a part.",
|
|
380
392
|
"figure.text.reuse-score-explained": "how much headroom is left in the declared limits. the one closest to its cap sets the score.",
|
|
381
|
-
"figure.text.revert-to-version-confirm": "revert to v{version}? what you are
|
|
393
|
+
"figure.text.revert-to-version-confirm": "revert to v{version}? what you are editing will be replaced by that version.",
|
|
382
394
|
"figure.text.role-none-means-drawn": "with none checked this is just a drawn part",
|
|
383
|
-
"figure.text.rung-flow-note": "holds
|
|
384
|
-
"figure.text.rung-hold-note": "has
|
|
395
|
+
"figure.text.rung-flow-note": "holds things and takes them in and out through ports. conveyors, chutes, sorters",
|
|
396
|
+
"figure.text.rung-hold-note": "has slots to put things in. racks, pallets, benches",
|
|
385
397
|
"figure.text.rung-none-note": "takes nothing. most figures belong here",
|
|
386
|
-
"figure.text.save-new-figure-desc": "
|
|
398
|
+
"figure.text.save-new-figure-desc": "set the unique type code and display name for this figure.",
|
|
387
399
|
"figure.text.save-the-figure-before-releasing": "this figure has not been saved yet. save it and you can release it.",
|
|
388
400
|
"figure.text.saving-figure": "saving",
|
|
389
|
-
"figure.text.scene-reference-explained": "
|
|
401
|
+
"figure.text.scene-reference-explained": "the kind of drawing the preview places the figure on. the figure's own placement does not change.",
|
|
390
402
|
"figure.text.search-figure": "search by name, type, description, category or tag",
|
|
391
403
|
"figure.text.select-a-part-to-edit": "select a part to edit it here.",
|
|
404
|
+
"figure.text.server-returned-no-data": "the server response had no data. try again.",
|
|
392
405
|
"figure.text.show-all-parts": "show all",
|
|
393
406
|
"figure.text.show-this-part": "show this part again",
|
|
394
|
-
"figure.text.sizing-costs-one-draw-call": "a part that does not scale proportionally
|
|
407
|
+
"figure.text.sizing-costs-one-draw-call": "a part that does not scale proportionally adds one draw call.",
|
|
395
408
|
"figure.text.sizing-fixed-explained": "the size stays, only the position follows — like a motor or a gauge.",
|
|
396
|
-
"figure.text.sizing-repeat-explained": "the count grows instead of the size.
|
|
409
|
+
"figure.text.sizing-repeat-explained": "the count grows instead of the size. each copy adds one draw call.",
|
|
397
410
|
"figure.text.sizing-scale-explained": "this part grows with the instance.",
|
|
398
411
|
"figure.text.sizing-stretch-explained": "only one axis stretches — like a frame, a belt or a rail.",
|
|
399
|
-
"figure.text.slots-need-capability": "select \"holds things\" or above before designating a slot",
|
|
412
|
+
"figure.text.slots-need-capability": "select \"holds things\" or above before designating a slot.",
|
|
400
413
|
"figure.text.snap-explained": "rounds position and size to the grid — the same spacing you see on the canvas.",
|
|
401
|
-
"figure.text.
|
|
414
|
+
"figure.text.source-changed-ask-again": "the source changed. discard the candidate and ask again in AI assist.",
|
|
415
|
+
"figure.text.tags-explained": "tags used for search. separate several with commas.",
|
|
402
416
|
"figure.text.tags-placeholder": "e.g. outbound, automatic, level 2",
|
|
403
417
|
"figure.text.thumbnail-not-made-yet": "no thumbnail yet",
|
|
404
|
-
"figure.text.tools-explained": "
|
|
418
|
+
"figure.text.tools-explained": "from left: centre X, centre Z, to floor, mirror X, mirror Z, snap to grid.",
|
|
405
419
|
"figure.text.triangle-count": "{count} triangles",
|
|
406
|
-
"figure.text.two-keys-at-least": "
|
|
420
|
+
"figure.text.two-keys-at-least": "add at least two keys.",
|
|
407
421
|
"figure.text.type-name-already-taken": "the type name {type} is already in use. pick another one — it cannot be changed later.",
|
|
408
|
-
"figure.text.type-name-cannot-change": "the type name
|
|
409
|
-
"figure.text.
|
|
422
|
+
"figure.text.type-name-cannot-change": "the type name cannot be changed after creation.",
|
|
423
|
+
"figure.text.type-name-will-not-release": "this name cannot be released. use capitals, digits and single underscores, 3 to 32 characters (e.g. AGV_LIFTER).",
|
|
424
|
+
"figure.text.unit-is-a-word-not-a-rule": "a display unit (e.g. mm, deg, %). it is not used in calculation.",
|
|
410
425
|
"figure.text.unsaved-changes": "unsaved",
|
|
411
426
|
"figure.text.version-number": "v{version}",
|
|
412
|
-
"figure.text.view-settings-are-not-saved": "these settings are not saved.
|
|
413
|
-
"figure.text.what-a-figure-is": "a Figure is a 3D component you author.
|
|
427
|
+
"figure.text.view-settings-are-not-saved": "these settings are not saved.",
|
|
428
|
+
"figure.text.what-a-figure-is": "a Figure is a 3D component you author. compose it from simple shapes and it becomes a component you can place on a drawing, sharing shape and material across every instance.",
|
|
414
429
|
"figure.text.what-changed-in-this-release": "what changed in this release",
|
|
415
430
|
"figure.title.figures": "figures",
|
|
416
431
|
"figure.title.new-figure": "new figure",
|