@things-factory/figure-service 10.1.208 → 10.1.212

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 (298) hide show
  1. package/README.md +1 -1
  2. package/dist-server/service/figure/event-subscriber.js +2 -2
  3. package/dist-server/service/figure/event-subscriber.js.map +1 -1
  4. package/dist-server/service/figure/figure-context.d.ts +2 -1
  5. package/dist-server/service/figure/figure-context.js +2 -1
  6. package/dist-server/service/figure/figure-context.js.map +1 -1
  7. package/dist-server/service/figure/figure-format.js +1 -1
  8. package/dist-server/service/figure/figure-format.js.map +1 -1
  9. package/dist-server/service/figure/figure-mutation.d.ts +5 -5
  10. package/dist-server/service/figure/figure-mutation.js +6 -6
  11. package/dist-server/service/figure/figure-mutation.js.map +1 -1
  12. package/dist-server/service/figure/figure-query.d.ts +3 -3
  13. package/dist-server/service/figure/figure-query.js +4 -4
  14. package/dist-server/service/figure/figure-query.js.map +1 -1
  15. package/dist-server/service/figure/figure-rename.d.ts +4 -4
  16. package/dist-server/service/figure/figure-rename.js +2 -2
  17. package/dist-server/service/figure/figure-rename.js.map +1 -1
  18. package/dist-server/service/figure/figure-tools.js +9 -9
  19. package/dist-server/service/figure/figure-tools.js.map +1 -1
  20. package/dist-server/service/figure/figure-type.d.ts +2 -2
  21. package/dist-server/service/figure/figure-type.js +2 -2
  22. package/dist-server/service/figure/figure-type.js.map +1 -1
  23. package/dist-server/service/figure/figure.d.ts +2 -2
  24. package/dist-server/service/figure/figure.js +1 -1
  25. package/dist-server/service/figure/figure.js.map +1 -1
  26. package/dist-server/tsconfig.tsbuildinfo +1 -1
  27. package/package.json +7 -7
  28. package/recipes/_lib/model.mts +12 -8
  29. package/recipes/air-cylinder/models/default.json +1 -1
  30. package/recipes/air-cylinder/recipe.json +13 -10
  31. package/recipes/air-cylinder/spec.json +1 -1
  32. package/recipes/air-shower/models/default.json +1 -1
  33. package/recipes/air-shower/recipe.json +11 -8
  34. package/recipes/barrier-gate/models/default.json +1 -1
  35. package/recipes/barrier-gate/recipe.json +11 -7
  36. package/recipes/base-frame/models/default.json +1 -1
  37. package/recipes/base-frame/recipe.json +0 -4
  38. package/recipes/belt-surface/guide.ko.md +1 -1
  39. package/recipes/belt-surface/models/default.json +1 -1
  40. package/recipes/belt-surface/recipe.json +0 -1
  41. package/recipes/bin-row/models/default.json +1 -1
  42. package/recipes/bin-row/recipe.json +0 -1
  43. package/recipes/bollard-row/models/default.json +1 -1
  44. package/recipes/bollard-row/recipe.json +0 -1
  45. package/recipes/buzzer/models/default.json +1 -1
  46. package/recipes/buzzer/recipe.json +0 -1
  47. package/recipes/cabinet-doors/build.mts +1 -1
  48. package/recipes/cabinet-doors/models/default.json +1 -1
  49. package/recipes/cabinet-doors/models/doors=1.json +1 -1
  50. package/recipes/cabinet-doors/models/doors=2.json +1 -1
  51. package/recipes/cabinet-doors/recipe.json +21 -13
  52. package/recipes/cable-tray/models/default.json +1 -1
  53. package/recipes/cable-tray/recipe.json +0 -3
  54. package/recipes/camera-mount/models/default.json +1 -1
  55. package/recipes/camera-mount/recipe.json +11 -8
  56. package/recipes/canopy/models/default.json +1 -1
  57. package/recipes/canopy/recipe.json +0 -5
  58. package/recipes/cart/models/default.json +1 -1
  59. package/recipes/cart/recipe.json +0 -12
  60. package/recipes/cart-handle/models/default.json +1 -1
  61. package/recipes/cart-handle/recipe.json +0 -3
  62. package/recipes/casters-four/models/default.json +1 -1
  63. package/recipes/casters-four/recipe.json +0 -8
  64. package/recipes/ceiling-rail-carriage/build.mts +1 -1
  65. package/recipes/ceiling-rail-carriage/models/default.json +1 -1
  66. package/recipes/ceiling-rail-carriage/recipe.json +19 -16
  67. package/recipes/chain-rails/models/default.json +1 -1
  68. package/recipes/chain-rails/recipe.json +0 -2
  69. package/recipes/charging-station/models/default.json +1 -1
  70. package/recipes/charging-station/recipe.json +0 -2
  71. package/recipes/column-row/models/default.json +1 -1
  72. package/recipes/column-row/recipe.json +0 -1
  73. package/recipes/control-cabinet/models/default.json +1 -1
  74. package/recipes/control-cabinet/recipe.json +11 -8
  75. package/recipes/conveyor-skirts/models/default.json +1 -1
  76. package/recipes/conveyor-skirts/recipe.json +0 -2
  77. package/recipes/counter-display/models/default.json +1 -1
  78. package/recipes/counter-display/recipe.json +0 -2
  79. package/recipes/dock-bumpers/models/default.json +1 -1
  80. package/recipes/dock-bumpers/recipe.json +0 -2
  81. package/recipes/dock-leveler/models/default.json +1 -1
  82. package/recipes/dock-leveler/recipe.json +11 -7
  83. package/recipes/double-hinged-door/build.mts +1 -1
  84. package/recipes/double-hinged-door/models/default.json +1 -1
  85. package/recipes/double-hinged-door/recipe.json +21 -14
  86. package/recipes/drawer-stack/models/default.json +1 -1
  87. package/recipes/drawer-stack/models/drawers=2.json +1 -1
  88. package/recipes/drawer-stack/models/drawers=3.json +1 -1
  89. package/recipes/drawer-stack/models/drawers=4.json +1 -1
  90. package/recipes/drawer-stack/recipe.json +99 -63
  91. package/recipes/drip-tray/models/default.json +1 -1
  92. package/recipes/drip-tray/recipe.json +0 -1
  93. package/recipes/duct-fan/models/default.json +1 -1
  94. package/recipes/duct-fan/recipe.json +11 -8
  95. package/recipes/emergency-stop/models/default.json +1 -1
  96. package/recipes/emergency-stop/recipe.json +11 -8
  97. package/recipes/end-covers/models/default.json +1 -1
  98. package/recipes/end-covers/recipe.json +0 -2
  99. package/recipes/ffu-row/models/default.json +1 -1
  100. package/recipes/ffu-row/recipe.json +0 -1
  101. package/recipes/fire-extinguisher/models/default.json +1 -1
  102. package/recipes/fire-extinguisher/recipe.json +0 -2
  103. package/recipes/first-aid-box/models/default.json +1 -1
  104. package/recipes/first-aid-box/recipe.json +0 -2
  105. package/recipes/floor-zone/models/default.json +1 -1
  106. package/recipes/floor-zone/recipe.json +0 -4
  107. package/recipes/folding-door/build.mts +1 -1
  108. package/recipes/folding-door/models/default.json +1 -1
  109. package/recipes/folding-door/recipe.json +21 -14
  110. package/recipes/fork/build.mts +1 -1
  111. package/recipes/fork/models/default.json +1 -1
  112. package/recipes/fork/recipe.json +23 -15
  113. package/recipes/fork/spec.json +1 -1
  114. package/recipes/gantry-frame/models/default.json +1 -1
  115. package/recipes/gantry-frame/recipe.json +0 -3
  116. package/recipes/gripper-2f/build.mts +1 -1
  117. package/recipes/gripper-2f/models/default.json +1 -1
  118. package/recipes/gripper-2f/recipe.json +23 -16
  119. package/recipes/gripper-2f/spec.json +1 -1
  120. package/recipes/guard-cover/models/default.json +1 -1
  121. package/recipes/guard-cover/recipe.json +11 -7
  122. package/recipes/handrail/models/default.json +1 -1
  123. package/recipes/handrail/recipe.json +0 -2
  124. package/recipes/hatch/models/default.json +1 -1
  125. package/recipes/hatch/recipe.json +11 -8
  126. package/recipes/hinged-door/build.mts +2 -3
  127. package/recipes/hinged-door/models/default.json +1 -1
  128. package/recipes/hinged-door/models/hinge=left.json +1 -1
  129. package/recipes/hinged-door/models/hinge=right.json +1 -1
  130. package/recipes/hinged-door/recipe.json +22 -15
  131. package/recipes/hmi-monitor/models/default.json +1 -1
  132. package/recipes/hmi-monitor/recipe.json +11 -8
  133. package/recipes/hopper/models/default.json +1 -1
  134. package/recipes/hopper/recipe.json +0 -2
  135. package/recipes/interlock-switch/models/default.json +1 -1
  136. package/recipes/interlock-switch/recipe.json +0 -1
  137. package/recipes/junction-box/models/default.json +1 -1
  138. package/recipes/junction-box/recipe.json +0 -1
  139. package/recipes/ladder/models/default.json +1 -1
  140. package/recipes/ladder/recipe.json +0 -3
  141. package/recipes/legs-four/models/default.json +1 -1
  142. package/recipes/legs-four/recipe.json +0 -4
  143. package/recipes/leveling-feet/models/default.json +1 -1
  144. package/recipes/leveling-feet/recipe.json +0 -4
  145. package/recipes/lift-updown/models/default.json +1 -1
  146. package/recipes/lift-updown/recipe.json +13 -9
  147. package/recipes/lift-updown/spec.json +1 -1
  148. package/recipes/light-curtain/models/default.json +1 -1
  149. package/recipes/light-curtain/recipe.json +0 -2
  150. package/recipes/limit-switch/models/default.json +1 -1
  151. package/recipes/limit-switch/recipe.json +11 -8
  152. package/recipes/linear-guide/build.mts +1 -1
  153. package/recipes/linear-guide/models/default.json +1 -1
  154. package/recipes/linear-guide/recipe.json +19 -16
  155. package/recipes/locker-row/models/default.json +1 -1
  156. package/recipes/locker-row/recipe.json +0 -1
  157. package/recipes/motor-box/models/default.json +1 -1
  158. package/recipes/motor-box/recipe.json +0 -1
  159. package/recipes/observation-window/models/default.json +1 -1
  160. package/recipes/observation-window/recipe.json +0 -2
  161. package/recipes/operator-panel/models/buttons=2.json +1 -1
  162. package/recipes/operator-panel/models/buttons=3.json +1 -1
  163. package/recipes/operator-panel/models/buttons=4.json +1 -1
  164. package/recipes/operator-panel/models/buttons=5.json +1 -1
  165. package/recipes/operator-panel/models/default.json +1 -1
  166. package/recipes/operator-panel/recipe.json +0 -5
  167. package/recipes/pallet/models/default.json +1 -1
  168. package/recipes/pallet/recipe.json +0 -4
  169. package/recipes/partition-wall/models/default.json +1 -1
  170. package/recipes/partition-wall/recipe.json +0 -3
  171. package/recipes/pass-box/models/default.json +1 -1
  172. package/recipes/pass-box/recipe.json +11 -8
  173. package/recipes/peg-board/models/default.json +1 -1
  174. package/recipes/peg-board/recipe.json +0 -2
  175. package/recipes/photo-sensor-pair/models/default.json +1 -1
  176. package/recipes/photo-sensor-pair/recipe.json +0 -2
  177. package/recipes/pipe-run/models/default.json +1 -1
  178. package/recipes/pipe-run/recipe.json +0 -1
  179. package/recipes/platform/models/default.json +1 -1
  180. package/recipes/platform/recipe.json +0 -5
  181. package/recipes/power-box/models/default.json +1 -1
  182. package/recipes/power-box/recipe.json +0 -1
  183. package/recipes/pressure-gauge/models/default.json +1 -1
  184. package/recipes/pressure-gauge/recipe.json +0 -1
  185. package/recipes/pull-cord/models/default.json +1 -1
  186. package/recipes/pull-cord/recipe.json +0 -1
  187. package/recipes/pump/models/default.json +1 -1
  188. package/recipes/pump/recipe.json +0 -2
  189. package/recipes/pusher/build.mts +1 -1
  190. package/recipes/pusher/models/default.json +1 -1
  191. package/recipes/pusher/recipe.json +19 -15
  192. package/recipes/robot-plinth/models/default.json +1 -1
  193. package/recipes/robot-plinth/recipe.json +0 -2
  194. package/recipes/roll-up-shutter/build.mts +1 -1
  195. package/recipes/roll-up-shutter/models/default.json +1 -1
  196. package/recipes/roll-up-shutter/recipe.json +19 -16
  197. package/recipes/roller-row/facts.md +1 -1
  198. package/recipes/roller-row/guide.ko.md +1 -1
  199. package/recipes/roller-row/models/default.json +1 -1
  200. package/recipes/roller-row/recipe.json +11 -7
  201. package/recipes/room-shell/models/default.json +1 -1
  202. package/recipes/room-shell/recipe.json +0 -5
  203. package/recipes/rotating-beacon/models/default.json +1 -1
  204. package/recipes/rotating-beacon/recipe.json +11 -9
  205. package/recipes/safety-fence/models/default.json +1 -1
  206. package/recipes/safety-fence/recipe.json +0 -2
  207. package/recipes/safety-mat/models/default.json +1 -1
  208. package/recipes/safety-mat/recipe.json +0 -1
  209. package/recipes/safety-sign-stand/models/default.json +1 -1
  210. package/recipes/safety-sign-stand/recipe.json +0 -3
  211. package/recipes/scanner-mount/models/default.json +1 -1
  212. package/recipes/scanner-mount/recipe.json +0 -3
  213. package/recipes/selector-switch/models/default.json +1 -1
  214. package/recipes/selector-switch/recipe.json +11 -8
  215. package/recipes/shelf-tiers/models/default.json +1 -1
  216. package/recipes/shelf-tiers/models/tiers=2.json +1 -1
  217. package/recipes/shelf-tiers/models/tiers=3.json +1 -1
  218. package/recipes/shelf-tiers/models/tiers=4.json +1 -1
  219. package/recipes/shelf-tiers/models/tiers=5.json +1 -1
  220. package/recipes/shelf-tiers/recipe.json +0 -4
  221. package/recipes/side-guides/models/default.json +1 -1
  222. package/recipes/side-guides/recipe.json +0 -2
  223. package/recipes/sign-board/models/default.json +1 -1
  224. package/recipes/sign-board/recipe.json +0 -1
  225. package/recipes/signal-tower-3/build.mts +1 -1
  226. package/recipes/signal-tower-3/models/default.json +1 -1
  227. package/recipes/signal-tower-3/recipe.json +11 -10
  228. package/recipes/sliding-door/build.mts +4 -7
  229. package/recipes/sliding-door/facts.md +1 -1
  230. package/recipes/sliding-door/guide.ko.md +1 -1
  231. package/recipes/sliding-door/models/default.json +1 -1
  232. package/recipes/sliding-door/models/leaves=1,lamp=false.json +1 -1
  233. package/recipes/sliding-door/models/leaves=1,lamp=true.json +1 -1
  234. package/recipes/sliding-door/models/leaves=2,lamp=false.json +1 -1
  235. package/recipes/sliding-door/models/leaves=2,lamp=true.json +1 -1
  236. package/recipes/sliding-door/recipe.json +48 -38
  237. package/recipes/stairs/models/default.json +1 -1
  238. package/recipes/stairs/recipe.json +0 -1
  239. package/recipes/status-lamp/models/default.json +1 -1
  240. package/recipes/status-lamp/recipe.json +11 -9
  241. package/recipes/stopper/models/default.json +1 -1
  242. package/recipes/stopper/recipe.json +11 -7
  243. package/recipes/suction-pads/models/default.json +1 -1
  244. package/recipes/suction-pads/recipe.json +0 -1
  245. package/recipes/tank/models/default.json +1 -1
  246. package/recipes/tank/recipe.json +0 -1
  247. package/recipes/telescopic-arm/build.mts +1 -1
  248. package/recipes/telescopic-arm/models/default.json +1 -1
  249. package/recipes/telescopic-arm/recipe.json +21 -13
  250. package/recipes/toe-board/models/default.json +1 -1
  251. package/recipes/toe-board/recipe.json +0 -1
  252. package/recipes/tote/models/default.json +1 -1
  253. package/recipes/tote/recipe.json +0 -1
  254. package/recipes/traffic-cones/models/default.json +1 -1
  255. package/recipes/traffic-cones/recipe.json +0 -2
  256. package/recipes/transfer-belts/build.mts +1 -1
  257. package/recipes/transfer-belts/models/default.json +1 -1
  258. package/recipes/transfer-belts/recipe.json +23 -15
  259. package/recipes/transfer-belts/spec.json +1 -1
  260. package/recipes/tray-stack/models/default.json +1 -1
  261. package/recipes/tray-stack/models/trays=3.json +1 -1
  262. package/recipes/tray-stack/models/trays=4.json +1 -1
  263. package/recipes/tray-stack/models/trays=5.json +1 -1
  264. package/recipes/tray-stack/recipe.json +0 -5
  265. package/recipes/trough/models/default.json +1 -1
  266. package/recipes/trough/recipe.json +0 -1
  267. package/recipes/turntable/models/default.json +1 -1
  268. package/recipes/turntable/recipe.json +11 -8
  269. package/recipes/valve-handle/models/default.json +1 -1
  270. package/recipes/valve-handle/recipe.json +11 -9
  271. package/recipes/waste-bin/models/default.json +1 -1
  272. package/recipes/waste-bin/recipe.json +0 -1
  273. package/recipes/work-light/models/default.json +1 -1
  274. package/recipes/work-light/recipe.json +11 -9
  275. package/recipes/workbench-top/models/default.json +1 -1
  276. package/recipes/workbench-top/recipe.json +0 -1
  277. package/server/service/figure/catalog-db.test.ts +1 -1
  278. package/server/service/figure/event-subscriber.ts +2 -2
  279. package/server/service/figure/figure-blueprint-query.test.ts +3 -3
  280. package/server/service/figure/figure-context.test.ts +3 -3
  281. package/server/service/figure/figure-context.ts +4 -2
  282. package/server/service/figure/figure-format.test.ts +7 -7
  283. package/server/service/figure/figure-format.ts +1 -1
  284. package/server/service/figure/figure-llm-smoke.test.ts +1 -1
  285. package/server/service/figure/figure-mutation.ts +6 -6
  286. package/server/service/figure/figure-propose-clips.test.ts +1 -1
  287. package/server/service/figure/figure-propose-steps.test.ts +2 -2
  288. package/server/service/figure/figure-query.ts +4 -4
  289. package/server/service/figure/figure-release-record-db.test.ts +3 -3
  290. package/server/service/figure/figure-rename-db.test.ts +2 -2
  291. package/server/service/figure/figure-rename.test.ts +3 -3
  292. package/server/service/figure/figure-rename.ts +6 -6
  293. package/server/service/figure/figure-subject.test.ts +1 -1
  294. package/server/service/figure/figure-tools.test.ts +19 -19
  295. package/server/service/figure/figure-tools.ts +9 -9
  296. package/server/service/figure/figure-type.ts +2 -2
  297. package/server/service/figure/figure.ts +2 -2
  298. package/translations/ko.json +31 -31
@@ -1 +1 @@
1
- {"version":"figure-asset-1","name":"TPL_VALVE_HANDLE","document":{"version":"figure-prototype-1","model":{"version":"r3-spatial-1","inputs":[{"id":"host.size.x","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.y","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.z","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"body.dimension.width","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"body.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"body.dimension.depth","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"stem.dimension.radius","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"stem.dimension.length","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"wheel.dimension.radius","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"wheel.dimension.length","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"turn","unit":"deg","min":0,"max":360,"role":"state"}],"constants":[{"id":"host.k.centre","unit":"ratio","value":-0.5},{"id":"d.mm.0","unit":"mm","value":0},{"id":"k.ratio.0_5","unit":"ratio","value":0.5},{"id":"a.deg.0","unit":"deg","value":0},{"id":"body.k.centre","unit":"ratio","value":-0.5},{"id":"stem.k.centre","unit":"ratio","value":-0.5},{"id":"wheel.k.centre","unit":"ratio","value":-0.5},{"id":"axis.ratio.0","unit":"ratio","value":0},{"id":"axis.ratio.1","unit":"ratio","value":1}],"nodes":[{"id":"host.start","op":"mul@1","args":["host.size.y","host.k.centre"],"outputs":{"value":"host.start.value"}},{"id":"host.shape","op":"extrude@1","args":["host.start.value","host.size.y","host.size.x","host.size.z"],"outputs":{"shape":"host.shapeValue"},"params":{"frame":"host.local","axis":"y","section":"rectangle"}},{"id":"host.pose","op":"rigid@1","args":["d.mm.0","host.on.plane.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.poseValue"},"params":{"from":"host.local","to":"host.seat"}},{"id":"host","op":"place@1","args":["host.shapeValue","host.chain.value"],"outputs":{"placed":"host.placed"}},{"id":"body.shape","op":"extrude@1","args":["body.start.value","body.dimension.height","body.dimension.width","body.dimension.depth"],"outputs":{"shape":"body.shapeValue"},"params":{"frame":"body.local","axis":"y","section":"rectangle"}},{"id":"body.pose","op":"rigid@1","args":["d.mm.0","body.on.host.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"body.poseValue"},"params":{"from":"body.local","to":"body.seat"}},{"id":"body","op":"place@1","args":["body.shapeValue","body.world.value"],"outputs":{"placed":"body.placed"}},{"id":"body.start","op":"mul@1","args":["body.dimension.height","body.k.centre"],"outputs":{"value":"body.start.value"}},{"id":"stem.shape","op":"extrude@1","args":["stem.start.value","stem.dimension.length","stem.dimension.radius","stem.dimension.radius"],"outputs":{"shape":"stem.shapeValue"},"params":{"frame":"stem.local","axis":"y","section":"ellipse"}},{"id":"stem.pose","op":"rigid@1","args":["d.mm.0","stem.on.body.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"stem.poseValue"},"params":{"from":"stem.local","to":"stem.seat"}},{"id":"stem","op":"place@1","args":["stem.shapeValue","stem.world.value"],"outputs":{"placed":"stem.placed"}},{"id":"stem.start","op":"mul@1","args":["stem.dimension.length","stem.k.centre"],"outputs":{"value":"stem.start.value"}},{"id":"wheel.shape","op":"extrude@1","args":["wheel.start.value","wheel.dimension.length","wheel.dimension.radius","wheel.dimension.radius"],"outputs":{"shape":"wheel.shapeValue"},"params":{"frame":"wheel.local","axis":"y","section":"ellipse"}},{"id":"wheel.pose","op":"rigid@1","args":["d.mm.0","wheel.on.stem.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"wheel.poseValue"},"params":{"from":"wheel.local","to":"wheel.seat"}},{"id":"wheel","op":"place@1","args":["wheel.shapeValue","wheel.world.value"],"outputs":{"placed":"wheel.placed"}},{"id":"wheel.start","op":"mul@1","args":["wheel.dimension.length","wheel.k.centre"],"outputs":{"value":"wheel.start.value"}},{"id":"host.on.plane.pose.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"host.on.plane.pose.y.t0.value"}},{"id":"host.seat.rigid","op":"rigid@1","args":["d.mm.0","d.mm.0","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.seat.value"},"params":{"from":"host.seat","to":"asset"}},{"id":"host.chain","op":"compose@1","args":["host.seat.value","host.poseValue"],"outputs":{"pose":"host.chain.value"}},{"id":"body.on.host.seat.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"body.on.host.seat.y.t0.value"}},{"id":"body.on.host.pose.y.t0","op":"mul@1","args":["body.dimension.height","k.ratio.0_5"],"outputs":{"value":"body.on.host.pose.y.t0.value"}},{"id":"body.seat.rigid","op":"rigid@1","args":["d.mm.0","body.on.host.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"body.seat.value"},"params":{"from":"body.seat","to":"host.local"}},{"id":"body.chain","op":"compose@1","args":["body.seat.value","body.poseValue"],"outputs":{"pose":"body.chain.value"}},{"id":"body.world","op":"compose@1","args":["host.chain.value","body.chain.value"],"outputs":{"pose":"body.world.value"}},{"id":"stem.on.body.seat.y.t0","op":"mul@1","args":["body.dimension.height","k.ratio.0_5"],"outputs":{"value":"stem.on.body.seat.y.t0.value"}},{"id":"stem.on.body.pose.y.t0","op":"mul@1","args":["stem.dimension.length","k.ratio.0_5"],"outputs":{"value":"stem.on.body.pose.y.t0.value"}},{"id":"stem.seat.rigid","op":"rigid@1","args":["d.mm.0","stem.on.body.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"stem.seat.value"},"params":{"from":"stem.seat","to":"body.local"}},{"id":"stem.chain","op":"compose@1","args":["stem.seat.value","stem.poseValue"],"outputs":{"pose":"stem.chain.value"}},{"id":"stem.world","op":"compose@1","args":["body.world.value","stem.chain.value"],"outputs":{"pose":"stem.world.value"}},{"id":"wheel.on.stem.seat.y.t0","op":"mul@1","args":["stem.dimension.length","k.ratio.0_5"],"outputs":{"value":"wheel.on.stem.seat.y.t0.value"}},{"id":"wheel.on.stem.pose.y.t0","op":"mul@1","args":["wheel.dimension.length","k.ratio.0_5"],"outputs":{"value":"wheel.on.stem.pose.y.t0.value"}},{"id":"wheel.seat.rigid","op":"rigid@1","args":["d.mm.0","wheel.on.stem.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"wheel.seat.value"},"params":{"from":"wheel.joint","to":"stem.local"}},{"id":"wheel.chain","op":"compose@1","args":["wheel.seat.value","wheel.turned.value"],"outputs":{"pose":"wheel.chain.value"}},{"id":"wheel.world","op":"compose@1","args":["stem.world.value","wheel.chain.value"],"outputs":{"pose":"wheel.world.value"}},{"id":"wheel.motion","op":"axis-turn@1","args":["axis.ratio.0","axis.ratio.1","axis.ratio.0","turn"],"outputs":{"pose":"wheel.motion.value"},"params":{"from":"wheel.seat","to":"wheel.joint"}},{"id":"wheel.turned","op":"compose@1","args":["wheel.motion.value","wheel.poseValue"],"outputs":{"pose":"wheel.turned.value"}}]},"capabilities":{"version":"r3-capability-3","assetFrame":"asset","bindings":[]}},"designInputs":{"host.size.x":3000,"host.size.y":700,"host.size.z":800,"body.dimension.width":150,"body.dimension.height":150,"body.dimension.depth":150,"stem.dimension.radius":12,"stem.dimension.length":120,"wheel.dimension.radius":120,"wheel.dimension.length":20},"stateDefaults":{"turn":0},"palette":{"palette.primary":"#477b9e","palette.host":"#d9dde2","palette.tpl-8e9aa6":"#8e9aa6","palette.tpl-d0d4d8":"#d0d4d8","palette.tpl-d62828":"#d62828"},"appearance":[{"target":"host","material":{"token":"palette.host"}},{"target":"body","material":{"token":"palette.tpl-8e9aa6"}},{"target":"stem","material":{"token":"palette.tpl-d0d4d8"},"segments":12},{"target":"wheel","material":{"token":"palette.tpl-d62828"},"segments":12}],"joints":[{"id":"host","type":"fixed","body0":{"plane":"mounting-plane"},"body1":{"part":"host"},"origin":{}},{"id":"body","type":"fixed","body0":{"part":"host","face":"top"},"body1":{"part":"body"},"origin":{}},{"id":"stem","type":"fixed","body0":{"part":"body","face":"top"},"body1":{"part":"stem"},"origin":{}},{"id":"wheel","type":"revolute","body0":{"part":"stem","face":"top"},"body1":{"part":"wheel"},"origin":{},"axis":"Y","lowerLimit":0,"upperLimit":360,"state":{"id":"turn"}}]}
1
+ {"version":"figure-asset-1","name":"TPL_VALVE_HANDLE","document":{"version":"figure-prototype-1","model":{"version":"r3-spatial-1","inputs":[{"id":"host.size.x","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.y","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.z","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"body.dimension.width","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"body.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"body.dimension.depth","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"stem.dimension.radius","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"stem.dimension.length","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"wheel.dimension.radius","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"wheel.dimension.length","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"turn","unit":"deg","min":0,"max":360,"role":"state"}],"constants":[{"id":"host.k.centre","unit":"ratio","value":-0.5},{"id":"d.mm.0","unit":"mm","value":0},{"id":"k.ratio.0_5","unit":"ratio","value":0.5},{"id":"a.deg.0","unit":"deg","value":0},{"id":"body.k.centre","unit":"ratio","value":-0.5},{"id":"stem.k.centre","unit":"ratio","value":-0.5},{"id":"wheel.k.centre","unit":"ratio","value":-0.5},{"id":"axis.ratio.0","unit":"ratio","value":0},{"id":"axis.ratio.1","unit":"ratio","value":1}],"nodes":[{"id":"host.start","op":"mul@1","args":["host.size.y","host.k.centre"],"outputs":{"value":"host.start.value"}},{"id":"host.shape","op":"extrude@1","args":["host.start.value","host.size.y","host.size.x","host.size.z"],"outputs":{"shape":"host.shapeValue"},"params":{"frame":"host.local","axis":"y","section":"rectangle"}},{"id":"host.pose","op":"rigid@1","args":["d.mm.0","host.on.plane.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.poseValue"},"params":{"from":"host.local","to":"host.seat"}},{"id":"host","op":"place@1","args":["host.shapeValue","host.chain.value"],"outputs":{"placed":"host.placed"}},{"id":"body.shape","op":"extrude@1","args":["body.start.value","body.dimension.height","body.dimension.width","body.dimension.depth"],"outputs":{"shape":"body.shapeValue"},"params":{"frame":"body.local","axis":"y","section":"rectangle"}},{"id":"body.pose","op":"rigid@1","args":["d.mm.0","body.on.host.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"body.poseValue"},"params":{"from":"body.local","to":"body.seat"}},{"id":"body","op":"place@1","args":["body.shapeValue","body.world.value"],"outputs":{"placed":"body.placed"}},{"id":"body.start","op":"mul@1","args":["body.dimension.height","body.k.centre"],"outputs":{"value":"body.start.value"}},{"id":"stem.shape","op":"extrude@1","args":["stem.start.value","stem.dimension.length","stem.dimension.radius","stem.dimension.radius"],"outputs":{"shape":"stem.shapeValue"},"params":{"frame":"stem.local","axis":"y","section":"ellipse"}},{"id":"stem.pose","op":"rigid@1","args":["d.mm.0","stem.on.body.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"stem.poseValue"},"params":{"from":"stem.local","to":"stem.seat"}},{"id":"stem","op":"place@1","args":["stem.shapeValue","stem.world.value"],"outputs":{"placed":"stem.placed"}},{"id":"stem.start","op":"mul@1","args":["stem.dimension.length","stem.k.centre"],"outputs":{"value":"stem.start.value"}},{"id":"wheel.shape","op":"extrude@1","args":["wheel.start.value","wheel.dimension.length","wheel.dimension.radius","wheel.dimension.radius"],"outputs":{"shape":"wheel.shapeValue"},"params":{"frame":"wheel.local","axis":"y","section":"ellipse"}},{"id":"wheel.pose","op":"rigid@1","args":["d.mm.0","wheel.on.stem.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"wheel.poseValue"},"params":{"from":"wheel.local","to":"wheel.seat"}},{"id":"wheel","op":"place@1","args":["wheel.shapeValue","wheel.world.value"],"outputs":{"placed":"wheel.placed"}},{"id":"wheel.start","op":"mul@1","args":["wheel.dimension.length","wheel.k.centre"],"outputs":{"value":"wheel.start.value"}},{"id":"host.on.plane.pose.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"host.on.plane.pose.y.t0.value"}},{"id":"host.seat.rigid","op":"rigid@1","args":["d.mm.0","d.mm.0","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.seat.value"},"params":{"from":"host.seat","to":"asset"}},{"id":"host.chain","op":"compose@1","args":["host.seat.value","host.poseValue"],"outputs":{"pose":"host.chain.value"}},{"id":"body.on.host.seat.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"body.on.host.seat.y.t0.value"}},{"id":"body.on.host.pose.y.t0","op":"mul@1","args":["body.dimension.height","k.ratio.0_5"],"outputs":{"value":"body.on.host.pose.y.t0.value"}},{"id":"body.seat.rigid","op":"rigid@1","args":["d.mm.0","body.on.host.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"body.seat.value"},"params":{"from":"body.seat","to":"host.local"}},{"id":"body.chain","op":"compose@1","args":["body.seat.value","body.poseValue"],"outputs":{"pose":"body.chain.value"}},{"id":"body.world","op":"compose@1","args":["host.chain.value","body.chain.value"],"outputs":{"pose":"body.world.value"}},{"id":"stem.on.body.seat.y.t0","op":"mul@1","args":["body.dimension.height","k.ratio.0_5"],"outputs":{"value":"stem.on.body.seat.y.t0.value"}},{"id":"stem.on.body.pose.y.t0","op":"mul@1","args":["stem.dimension.length","k.ratio.0_5"],"outputs":{"value":"stem.on.body.pose.y.t0.value"}},{"id":"stem.seat.rigid","op":"rigid@1","args":["d.mm.0","stem.on.body.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"stem.seat.value"},"params":{"from":"stem.seat","to":"body.local"}},{"id":"stem.chain","op":"compose@1","args":["stem.seat.value","stem.poseValue"],"outputs":{"pose":"stem.chain.value"}},{"id":"stem.world","op":"compose@1","args":["body.world.value","stem.chain.value"],"outputs":{"pose":"stem.world.value"}},{"id":"wheel.on.stem.seat.y.t0","op":"mul@1","args":["stem.dimension.length","k.ratio.0_5"],"outputs":{"value":"wheel.on.stem.seat.y.t0.value"}},{"id":"wheel.on.stem.pose.y.t0","op":"mul@1","args":["wheel.dimension.length","k.ratio.0_5"],"outputs":{"value":"wheel.on.stem.pose.y.t0.value"}},{"id":"wheel.seat.rigid","op":"rigid@1","args":["d.mm.0","wheel.on.stem.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"wheel.seat.value"},"params":{"from":"wheel.joint","to":"stem.local"}},{"id":"wheel.chain","op":"compose@1","args":["wheel.seat.value","wheel.turned.value"],"outputs":{"pose":"wheel.chain.value"}},{"id":"wheel.world","op":"compose@1","args":["stem.world.value","wheel.chain.value"],"outputs":{"pose":"wheel.world.value"}},{"id":"wheel.motion","op":"axis-turn@1","args":["axis.ratio.0","axis.ratio.1","axis.ratio.0","turn"],"outputs":{"pose":"wheel.motion.value"},"params":{"from":"wheel.seat","to":"wheel.joint"}},{"id":"wheel.turned","op":"compose@1","args":["wheel.motion.value","wheel.poseValue"],"outputs":{"pose":"wheel.turned.value"}}]},"capabilities":{"version":"r3-capability-3","assetFrame":"asset","bindings":[]}},"designInputs":{"host.size.x":3000,"host.size.y":700,"host.size.z":800,"body.dimension.width":150,"body.dimension.height":150,"body.dimension.depth":150,"stem.dimension.radius":12,"stem.dimension.length":120,"wheel.dimension.radius":120,"wheel.dimension.length":20},"stateDefaults":{"turn":0},"palette":{"palette.primary":"#477b9e","palette.host":"#d9dde2","palette.tpl-8e9aa6":"#8e9aa6","palette.tpl-d0d4d8":"#d0d4d8","palette.tpl-d62828":"#d62828"},"appearance":[{"target":"host","material":{"token":"palette.host"}},{"target":"body","material":{"token":"palette.tpl-8e9aa6"}},{"target":"stem","material":{"token":"palette.tpl-d0d4d8"},"segments":12},{"target":"wheel","material":{"token":"palette.tpl-d62828"},"segments":12}],"joints":[{"id":"host","body0":{"plane":"mounting-plane"},"body1":{"part":"host"},"origin":{}},{"id":"body","body0":{"part":"host","face":"top"},"body1":{"part":"body"},"origin":{}},{"id":"stem","body0":{"part":"body","face":"top"},"body1":{"part":"stem"},"origin":{}},{"id":"wheel","body0":{"part":"stem","face":"top"},"body1":{"part":"wheel"},"origin":{},"motion":[{"type":"revolute","axis":"Y","lowerLimit":0,"upperLimit":360,"state":{"id":"turn"}}]}]}
@@ -55,7 +55,6 @@
55
55
  "kind": "set-joint",
56
56
  "joint": {
57
57
  "id": "{id}-body",
58
- "type": "fixed",
59
58
  "body0": {
60
59
  "part": "{target}",
61
60
  "face": "top"
@@ -70,7 +69,6 @@
70
69
  "kind": "set-joint",
71
70
  "joint": {
72
71
  "id": "{id}-stem",
73
- "type": "fixed",
74
72
  "body0": {
75
73
  "part": "{id}-body",
76
74
  "face": "top"
@@ -85,7 +83,6 @@
85
83
  "kind": "set-joint",
86
84
  "joint": {
87
85
  "id": "{id}-wheel",
88
- "type": "revolute",
89
86
  "body0": {
90
87
  "part": "{id}-stem",
91
88
  "face": "top"
@@ -94,12 +91,17 @@
94
91
  "part": "{id}-wheel"
95
92
  },
96
93
  "origin": {},
97
- "axis": "Y",
98
- "lowerLimit": 0,
99
- "upperLimit": 360,
100
- "state": {
101
- "id": "{id}-turn"
102
- }
94
+ "motion": [
95
+ {
96
+ "type": "revolute",
97
+ "axis": "Y",
98
+ "lowerLimit": 0,
99
+ "upperLimit": 360,
100
+ "state": {
101
+ "id": "{id}-turn"
102
+ }
103
+ }
104
+ ]
103
105
  }
104
106
  },
105
107
  {
@@ -1 +1 @@
1
- {"version":"figure-asset-1","name":"TPL_WASTE_BIN","document":{"version":"figure-prototype-1","model":{"version":"r3-spatial-1","inputs":[{"id":"host.size.x","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.y","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.z","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.width","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.depth","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.roundX","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.roundZ","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.wallX","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.wallZ","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.floor","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"}],"constants":[{"id":"host.k.centre","unit":"ratio","value":-0.5},{"id":"d.mm.0","unit":"mm","value":0},{"id":"k.ratio.0_5","unit":"ratio","value":0.5},{"id":"a.deg.0","unit":"deg","value":0},{"id":"bin.k.centre","unit":"ratio","value":-0.5}],"nodes":[{"id":"host.start","op":"mul@1","args":["host.size.y","host.k.centre"],"outputs":{"value":"host.start.value"}},{"id":"host.shape","op":"extrude@1","args":["host.start.value","host.size.y","host.size.x","host.size.z"],"outputs":{"shape":"host.shapeValue"},"params":{"frame":"host.local","axis":"y","section":"rectangle"}},{"id":"host.pose","op":"rigid@1","args":["d.mm.0","host.on.plane.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.poseValue"},"params":{"from":"host.local","to":"host.seat"}},{"id":"host","op":"place@1","args":["host.shapeValue","host.chain.value"],"outputs":{"placed":"host.placed"}},{"id":"bin.shape","op":"extrude@1","args":["bin.start.value","bin.dimension.height","bin.dimension.width","bin.dimension.depth","bin.dimension.roundX","bin.dimension.roundZ","bin.dimension.wallX","bin.dimension.wallX","bin.dimension.wallZ","bin.dimension.wallZ","bin.dimension.floor"],"outputs":{"shape":"bin.shapeValue"},"params":{"frame":"bin.local","axis":"y","section":"rectangle","corner":"round","cavity":"inside","cavity-end":"open","cavity-start":"closed"}},{"id":"bin.pose","op":"rigid@1","args":["d.mm.0","bin.on.host.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"bin.poseValue"},"params":{"from":"bin.local","to":"bin.seat"}},{"id":"bin","op":"place@1","args":["bin.shapeValue","bin.world.value"],"outputs":{"placed":"bin.placed"}},{"id":"bin.start","op":"mul@1","args":["bin.dimension.height","bin.k.centre"],"outputs":{"value":"bin.start.value"}},{"id":"host.on.plane.pose.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"host.on.plane.pose.y.t0.value"}},{"id":"host.seat.rigid","op":"rigid@1","args":["d.mm.0","d.mm.0","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.seat.value"},"params":{"from":"host.seat","to":"asset"}},{"id":"host.chain","op":"compose@1","args":["host.seat.value","host.poseValue"],"outputs":{"pose":"host.chain.value"}},{"id":"bin.on.host.seat.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"bin.on.host.seat.y.t0.value"}},{"id":"bin.on.host.pose.y.t0","op":"mul@1","args":["bin.dimension.height","k.ratio.0_5"],"outputs":{"value":"bin.on.host.pose.y.t0.value"}},{"id":"bin.seat.rigid","op":"rigid@1","args":["d.mm.0","bin.on.host.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"bin.seat.value"},"params":{"from":"bin.seat","to":"host.local"}},{"id":"bin.chain","op":"compose@1","args":["bin.seat.value","bin.poseValue"],"outputs":{"pose":"bin.chain.value"}},{"id":"bin.world","op":"compose@1","args":["host.chain.value","bin.chain.value"],"outputs":{"pose":"bin.world.value"}}]},"capabilities":{"version":"r3-capability-3","assetFrame":"asset","bindings":[]}},"designInputs":{"host.size.x":6000,"host.size.y":50,"host.size.z":4000,"bin.dimension.width":600,"bin.dimension.height":800,"bin.dimension.depth":600,"bin.dimension.roundX":40,"bin.dimension.roundZ":40,"bin.dimension.wallX":15,"bin.dimension.wallZ":15,"bin.dimension.floor":20},"stateDefaults":{},"palette":{"palette.primary":"#477b9e","palette.host":"#d9dde2","palette.tpl-27ae60":"#27ae60"},"appearance":[{"target":"host","material":{"token":"palette.host"}},{"target":"bin","material":{"token":"palette.tpl-27ae60"}}],"joints":[{"id":"host","type":"fixed","body0":{"plane":"mounting-plane"},"body1":{"part":"host"},"origin":{}},{"id":"bin","type":"fixed","body0":{"part":"host","face":"top"},"body1":{"part":"bin"},"origin":{}}]}
1
+ {"version":"figure-asset-1","name":"TPL_WASTE_BIN","document":{"version":"figure-prototype-1","model":{"version":"r3-spatial-1","inputs":[{"id":"host.size.x","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.y","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.z","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.width","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.depth","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.roundX","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.roundZ","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.wallX","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.wallZ","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"bin.dimension.floor","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"}],"constants":[{"id":"host.k.centre","unit":"ratio","value":-0.5},{"id":"d.mm.0","unit":"mm","value":0},{"id":"k.ratio.0_5","unit":"ratio","value":0.5},{"id":"a.deg.0","unit":"deg","value":0},{"id":"bin.k.centre","unit":"ratio","value":-0.5}],"nodes":[{"id":"host.start","op":"mul@1","args":["host.size.y","host.k.centre"],"outputs":{"value":"host.start.value"}},{"id":"host.shape","op":"extrude@1","args":["host.start.value","host.size.y","host.size.x","host.size.z"],"outputs":{"shape":"host.shapeValue"},"params":{"frame":"host.local","axis":"y","section":"rectangle"}},{"id":"host.pose","op":"rigid@1","args":["d.mm.0","host.on.plane.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.poseValue"},"params":{"from":"host.local","to":"host.seat"}},{"id":"host","op":"place@1","args":["host.shapeValue","host.chain.value"],"outputs":{"placed":"host.placed"}},{"id":"bin.shape","op":"extrude@1","args":["bin.start.value","bin.dimension.height","bin.dimension.width","bin.dimension.depth","bin.dimension.roundX","bin.dimension.roundZ","bin.dimension.wallX","bin.dimension.wallX","bin.dimension.wallZ","bin.dimension.wallZ","bin.dimension.floor"],"outputs":{"shape":"bin.shapeValue"},"params":{"frame":"bin.local","axis":"y","section":"rectangle","corner":"round","cavity":"inside","cavity-end":"open","cavity-start":"closed"}},{"id":"bin.pose","op":"rigid@1","args":["d.mm.0","bin.on.host.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"bin.poseValue"},"params":{"from":"bin.local","to":"bin.seat"}},{"id":"bin","op":"place@1","args":["bin.shapeValue","bin.world.value"],"outputs":{"placed":"bin.placed"}},{"id":"bin.start","op":"mul@1","args":["bin.dimension.height","bin.k.centre"],"outputs":{"value":"bin.start.value"}},{"id":"host.on.plane.pose.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"host.on.plane.pose.y.t0.value"}},{"id":"host.seat.rigid","op":"rigid@1","args":["d.mm.0","d.mm.0","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.seat.value"},"params":{"from":"host.seat","to":"asset"}},{"id":"host.chain","op":"compose@1","args":["host.seat.value","host.poseValue"],"outputs":{"pose":"host.chain.value"}},{"id":"bin.on.host.seat.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"bin.on.host.seat.y.t0.value"}},{"id":"bin.on.host.pose.y.t0","op":"mul@1","args":["bin.dimension.height","k.ratio.0_5"],"outputs":{"value":"bin.on.host.pose.y.t0.value"}},{"id":"bin.seat.rigid","op":"rigid@1","args":["d.mm.0","bin.on.host.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"bin.seat.value"},"params":{"from":"bin.seat","to":"host.local"}},{"id":"bin.chain","op":"compose@1","args":["bin.seat.value","bin.poseValue"],"outputs":{"pose":"bin.chain.value"}},{"id":"bin.world","op":"compose@1","args":["host.chain.value","bin.chain.value"],"outputs":{"pose":"bin.world.value"}}]},"capabilities":{"version":"r3-capability-3","assetFrame":"asset","bindings":[]}},"designInputs":{"host.size.x":6000,"host.size.y":50,"host.size.z":4000,"bin.dimension.width":600,"bin.dimension.height":800,"bin.dimension.depth":600,"bin.dimension.roundX":40,"bin.dimension.roundZ":40,"bin.dimension.wallX":15,"bin.dimension.wallZ":15,"bin.dimension.floor":20},"stateDefaults":{},"palette":{"palette.primary":"#477b9e","palette.host":"#d9dde2","palette.tpl-27ae60":"#27ae60"},"appearance":[{"target":"host","material":{"token":"palette.host"}},{"target":"bin","material":{"token":"palette.tpl-27ae60"}}],"joints":[{"id":"host","body0":{"plane":"mounting-plane"},"body1":{"part":"host"},"origin":{}},{"id":"bin","body0":{"part":"host","face":"top"},"body1":{"part":"bin"},"origin":{}}]}
@@ -56,7 +56,6 @@
56
56
  "kind": "set-joint",
57
57
  "joint": {
58
58
  "id": "{id}-bin",
59
- "type": "fixed",
60
59
  "body0": {
61
60
  "part": "{target}",
62
61
  "face": "top"
@@ -1 +1 @@
1
- {"version":"figure-asset-1","name":"TPL_WORK_LIGHT","document":{"version":"figure-prototype-1","model":{"version":"r3-spatial-1","inputs":[{"id":"host.size.x","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.y","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.z","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"arm.dimension.width","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"arm.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"arm.dimension.depth","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"head.dimension.width","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"head.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"head.dimension.depth","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"light.dimension.width","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"light.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"light.dimension.depth","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"on","unit":"mm","min":0,"max":0.001,"role":"state"}],"constants":[{"id":"host.k.centre","unit":"ratio","value":-0.5},{"id":"d.mm.0","unit":"mm","value":0},{"id":"k.ratio.0_5","unit":"ratio","value":0.5},{"id":"a.deg.0","unit":"deg","value":0},{"id":"arm.k.centre","unit":"ratio","value":-0.5},{"id":"head.k.centre","unit":"ratio","value":-0.5},{"id":"light.k.centre","unit":"ratio","value":-0.5},{"id":"axis.ratio.0","unit":"ratio","value":0},{"id":"axis.ratio.1","unit":"ratio","value":1},{"id":"k.light.shown.at","unit":"mm","value":0.0005}],"nodes":[{"id":"host.start","op":"mul@1","args":["host.size.y","host.k.centre"],"outputs":{"value":"host.start.value"}},{"id":"host.shape","op":"extrude@1","args":["host.start.value","host.size.y","host.size.x","host.size.z"],"outputs":{"shape":"host.shapeValue"},"params":{"frame":"host.local","axis":"y","section":"rectangle"}},{"id":"host.pose","op":"rigid@1","args":["d.mm.0","host.on.plane.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.poseValue"},"params":{"from":"host.local","to":"host.seat"}},{"id":"host","op":"place@1","args":["host.shapeValue","host.chain.value"],"outputs":{"placed":"host.placed"}},{"id":"arm.shape","op":"extrude@1","args":["arm.start.value","arm.dimension.height","arm.dimension.width","arm.dimension.depth"],"outputs":{"shape":"arm.shapeValue"},"params":{"frame":"arm.local","axis":"y","section":"rectangle"}},{"id":"arm.pose","op":"rigid@1","args":["d.mm.0","arm.on.host.pose.y.t0.value","arm.on.host.pose.z.t0.value","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"arm.poseValue"},"params":{"from":"arm.local","to":"arm.seat"}},{"id":"arm","op":"place@1","args":["arm.shapeValue","arm.world.value"],"outputs":{"placed":"arm.placed"}},{"id":"arm.start","op":"mul@1","args":["arm.dimension.height","arm.k.centre"],"outputs":{"value":"arm.start.value"}},{"id":"head.shape","op":"extrude@1","args":["head.start.value","head.dimension.height","head.dimension.width","head.dimension.depth"],"outputs":{"shape":"head.shapeValue"},"params":{"frame":"head.local","axis":"y","section":"rectangle"}},{"id":"head.pose","op":"rigid@1","args":["d.mm.0","head.on.arm.pose.y.t0.value","head.on.arm.pose.z.t0.value","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"head.poseValue"},"params":{"from":"head.local","to":"head.seat"}},{"id":"head","op":"place@1","args":["head.shapeValue","head.world.value"],"outputs":{"placed":"head.placed"}},{"id":"head.start","op":"mul@1","args":["head.dimension.height","head.k.centre"],"outputs":{"value":"head.start.value"}},{"id":"light.shape","op":"extrude@1","args":["light.start.value","light.dimension.height","light.dimension.width","light.dimension.depth"],"outputs":{"shape":"light.shapeValue"},"params":{"frame":"light.local","axis":"y","section":"rectangle"}},{"id":"light.pose","op":"rigid@1","args":["d.mm.0","light.on.head.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"light.poseValue"},"params":{"from":"light.local","to":"light.seat"}},{"id":"light","op":"place@1","args":["light.shapeValue","light.world.value"],"outputs":{"placed":"light.placed"}},{"id":"light.start","op":"mul@1","args":["light.dimension.height","light.k.centre"],"outputs":{"value":"light.start.value"}},{"id":"host.on.plane.pose.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"host.on.plane.pose.y.t0.value"}},{"id":"host.seat.rigid","op":"rigid@1","args":["d.mm.0","d.mm.0","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.seat.value"},"params":{"from":"host.seat","to":"asset"}},{"id":"host.chain","op":"compose@1","args":["host.seat.value","host.poseValue"],"outputs":{"pose":"host.chain.value"}},{"id":"arm.on.host.seat.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"arm.on.host.seat.y.t0.value"}},{"id":"arm.on.host.seat.z.t0","op":"mul@1","args":["host.size.z","host.k.centre"],"outputs":{"value":"arm.on.host.seat.z.t0.value"}},{"id":"arm.on.host.pose.y.t0","op":"mul@1","args":["arm.dimension.height","k.ratio.0_5"],"outputs":{"value":"arm.on.host.pose.y.t0.value"}},{"id":"arm.on.host.pose.z.t0","op":"mul@1","args":["arm.dimension.depth","k.ratio.0_5"],"outputs":{"value":"arm.on.host.pose.z.t0.value"}},{"id":"arm.seat.rigid","op":"rigid@1","args":["d.mm.0","arm.on.host.seat.y.t0.value","arm.on.host.seat.z.t0.value","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"arm.seat.value"},"params":{"from":"arm.seat","to":"host.local"}},{"id":"arm.chain","op":"compose@1","args":["arm.seat.value","arm.poseValue"],"outputs":{"pose":"arm.chain.value"}},{"id":"arm.world","op":"compose@1","args":["host.chain.value","arm.chain.value"],"outputs":{"pose":"arm.world.value"}},{"id":"head.on.arm.seat.y.t0","op":"mul@1","args":["arm.dimension.height","k.ratio.0_5"],"outputs":{"value":"head.on.arm.seat.y.t0.value"}},{"id":"head.on.arm.seat.z.t0","op":"mul@1","args":["arm.dimension.depth","host.k.centre"],"outputs":{"value":"head.on.arm.seat.z.t0.value"}},{"id":"head.on.arm.pose.y.t0","op":"mul@1","args":["head.dimension.height","k.ratio.0_5"],"outputs":{"value":"head.on.arm.pose.y.t0.value"}},{"id":"head.on.arm.pose.z.t0","op":"mul@1","args":["head.dimension.depth","k.ratio.0_5"],"outputs":{"value":"head.on.arm.pose.z.t0.value"}},{"id":"head.seat.rigid","op":"rigid@1","args":["d.mm.0","head.on.arm.seat.y.t0.value","head.on.arm.seat.z.t0.value","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"head.seat.value"},"params":{"from":"head.seat","to":"arm.local"}},{"id":"head.chain","op":"compose@1","args":["head.seat.value","head.poseValue"],"outputs":{"pose":"head.chain.value"}},{"id":"head.world","op":"compose@1","args":["arm.world.value","head.chain.value"],"outputs":{"pose":"head.world.value"}},{"id":"light.on.head.seat.y.t0","op":"mul@1","args":["head.dimension.height","host.k.centre"],"outputs":{"value":"light.on.head.seat.y.t0.value"}},{"id":"light.on.head.pose.y.t0","op":"mul@1","args":["light.dimension.height","host.k.centre"],"outputs":{"value":"light.on.head.pose.y.t0.value"}},{"id":"light.seat.rigid","op":"rigid@1","args":["d.mm.0","light.on.head.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"light.seat.value"},"params":{"from":"light.joint","to":"head.local"}},{"id":"light.chain","op":"compose@1","args":["light.seat.value","light.turned.value"],"outputs":{"pose":"light.chain.value"}},{"id":"light.world","op":"compose@1","args":["head.world.value","light.chain.value"],"outputs":{"pose":"light.world.value"}},{"id":"light.motion","op":"axis-slide@1","args":["axis.ratio.0","axis.ratio.1","axis.ratio.0","on"],"outputs":{"pose":"light.motion.value"},"params":{"from":"light.seat","to":"light.joint"}},{"id":"light.turned","op":"compose@1","args":["light.motion.value","light.poseValue"],"outputs":{"pose":"light.turned.value"}},{"id":"light.shown","op":"at-least@1","args":["on","k.light.shown.at"],"outputs":{"value":"light.shown.value"}}]},"capabilities":{"version":"r3-capability-3","assetFrame":"asset","bindings":[]}},"designInputs":{"host.size.x":1800,"host.size.y":900,"host.size.z":800,"arm.dimension.width":40,"arm.dimension.height":700,"arm.dimension.depth":40,"head.dimension.width":300,"head.dimension.height":40,"head.dimension.depth":120,"light.dimension.width":280,"light.dimension.height":10,"light.dimension.depth":100},"stateDefaults":{"on":0},"palette":{"palette.primary":"#477b9e","palette.host":"#d9dde2","palette.tpl-7d8790":"#7d8790","palette.tpl-44505a":"#44505a","palette.tpl-fff4c2":"#fff4c2"},"appearance":[{"target":"host","material":{"token":"palette.host"}},{"target":"arm","material":{"token":"palette.tpl-7d8790"}},{"target":"head","material":{"token":"palette.tpl-44505a"}},{"target":"light","material":{"token":"palette.tpl-fff4c2","emissive":{"on":true,"token":"palette.tpl-fff4c2","intensity":1}},"visibility":"light.shown.value"}],"joints":[{"id":"host","type":"fixed","body0":{"plane":"mounting-plane"},"body1":{"part":"host"},"origin":{}},{"id":"arm","type":"fixed","body0":{"part":"host","face":"top"},"body1":{"part":"arm"},"origin":{"align":{"z":"min"}}},{"id":"head","type":"fixed","body0":{"part":"arm","face":"top"},"body1":{"part":"head"},"origin":{"align":{"z":"min"}}},{"id":"light","type":"prismatic","body0":{"part":"head","face":"bottom"},"body1":{"part":"light"},"origin":{},"axis":"Y","lowerLimit":0,"upperLimit":0.001,"state":{"id":"on"}}]}
1
+ {"version":"figure-asset-1","name":"TPL_WORK_LIGHT","document":{"version":"figure-prototype-1","model":{"version":"r3-spatial-1","inputs":[{"id":"host.size.x","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.y","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.z","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"arm.dimension.width","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"arm.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"arm.dimension.depth","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"head.dimension.width","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"head.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"head.dimension.depth","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"light.dimension.width","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"light.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"light.dimension.depth","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"on","unit":"mm","min":0,"max":0.001,"role":"state"}],"constants":[{"id":"host.k.centre","unit":"ratio","value":-0.5},{"id":"d.mm.0","unit":"mm","value":0},{"id":"k.ratio.0_5","unit":"ratio","value":0.5},{"id":"a.deg.0","unit":"deg","value":0},{"id":"arm.k.centre","unit":"ratio","value":-0.5},{"id":"head.k.centre","unit":"ratio","value":-0.5},{"id":"light.k.centre","unit":"ratio","value":-0.5},{"id":"axis.ratio.0","unit":"ratio","value":0},{"id":"axis.ratio.1","unit":"ratio","value":1},{"id":"k.light.shown.at","unit":"mm","value":0.0005}],"nodes":[{"id":"host.start","op":"mul@1","args":["host.size.y","host.k.centre"],"outputs":{"value":"host.start.value"}},{"id":"host.shape","op":"extrude@1","args":["host.start.value","host.size.y","host.size.x","host.size.z"],"outputs":{"shape":"host.shapeValue"},"params":{"frame":"host.local","axis":"y","section":"rectangle"}},{"id":"host.pose","op":"rigid@1","args":["d.mm.0","host.on.plane.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.poseValue"},"params":{"from":"host.local","to":"host.seat"}},{"id":"host","op":"place@1","args":["host.shapeValue","host.chain.value"],"outputs":{"placed":"host.placed"}},{"id":"arm.shape","op":"extrude@1","args":["arm.start.value","arm.dimension.height","arm.dimension.width","arm.dimension.depth"],"outputs":{"shape":"arm.shapeValue"},"params":{"frame":"arm.local","axis":"y","section":"rectangle"}},{"id":"arm.pose","op":"rigid@1","args":["d.mm.0","arm.on.host.pose.y.t0.value","arm.on.host.pose.z.t0.value","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"arm.poseValue"},"params":{"from":"arm.local","to":"arm.seat"}},{"id":"arm","op":"place@1","args":["arm.shapeValue","arm.world.value"],"outputs":{"placed":"arm.placed"}},{"id":"arm.start","op":"mul@1","args":["arm.dimension.height","arm.k.centre"],"outputs":{"value":"arm.start.value"}},{"id":"head.shape","op":"extrude@1","args":["head.start.value","head.dimension.height","head.dimension.width","head.dimension.depth"],"outputs":{"shape":"head.shapeValue"},"params":{"frame":"head.local","axis":"y","section":"rectangle"}},{"id":"head.pose","op":"rigid@1","args":["d.mm.0","head.on.arm.pose.y.t0.value","head.on.arm.pose.z.t0.value","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"head.poseValue"},"params":{"from":"head.local","to":"head.seat"}},{"id":"head","op":"place@1","args":["head.shapeValue","head.world.value"],"outputs":{"placed":"head.placed"}},{"id":"head.start","op":"mul@1","args":["head.dimension.height","head.k.centre"],"outputs":{"value":"head.start.value"}},{"id":"light.shape","op":"extrude@1","args":["light.start.value","light.dimension.height","light.dimension.width","light.dimension.depth"],"outputs":{"shape":"light.shapeValue"},"params":{"frame":"light.local","axis":"y","section":"rectangle"}},{"id":"light.pose","op":"rigid@1","args":["d.mm.0","light.on.head.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"light.poseValue"},"params":{"from":"light.local","to":"light.seat"}},{"id":"light","op":"place@1","args":["light.shapeValue","light.world.value"],"outputs":{"placed":"light.placed"}},{"id":"light.start","op":"mul@1","args":["light.dimension.height","light.k.centre"],"outputs":{"value":"light.start.value"}},{"id":"host.on.plane.pose.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"host.on.plane.pose.y.t0.value"}},{"id":"host.seat.rigid","op":"rigid@1","args":["d.mm.0","d.mm.0","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.seat.value"},"params":{"from":"host.seat","to":"asset"}},{"id":"host.chain","op":"compose@1","args":["host.seat.value","host.poseValue"],"outputs":{"pose":"host.chain.value"}},{"id":"arm.on.host.seat.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"arm.on.host.seat.y.t0.value"}},{"id":"arm.on.host.seat.z.t0","op":"mul@1","args":["host.size.z","host.k.centre"],"outputs":{"value":"arm.on.host.seat.z.t0.value"}},{"id":"arm.on.host.pose.y.t0","op":"mul@1","args":["arm.dimension.height","k.ratio.0_5"],"outputs":{"value":"arm.on.host.pose.y.t0.value"}},{"id":"arm.on.host.pose.z.t0","op":"mul@1","args":["arm.dimension.depth","k.ratio.0_5"],"outputs":{"value":"arm.on.host.pose.z.t0.value"}},{"id":"arm.seat.rigid","op":"rigid@1","args":["d.mm.0","arm.on.host.seat.y.t0.value","arm.on.host.seat.z.t0.value","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"arm.seat.value"},"params":{"from":"arm.seat","to":"host.local"}},{"id":"arm.chain","op":"compose@1","args":["arm.seat.value","arm.poseValue"],"outputs":{"pose":"arm.chain.value"}},{"id":"arm.world","op":"compose@1","args":["host.chain.value","arm.chain.value"],"outputs":{"pose":"arm.world.value"}},{"id":"head.on.arm.seat.y.t0","op":"mul@1","args":["arm.dimension.height","k.ratio.0_5"],"outputs":{"value":"head.on.arm.seat.y.t0.value"}},{"id":"head.on.arm.seat.z.t0","op":"mul@1","args":["arm.dimension.depth","host.k.centre"],"outputs":{"value":"head.on.arm.seat.z.t0.value"}},{"id":"head.on.arm.pose.y.t0","op":"mul@1","args":["head.dimension.height","k.ratio.0_5"],"outputs":{"value":"head.on.arm.pose.y.t0.value"}},{"id":"head.on.arm.pose.z.t0","op":"mul@1","args":["head.dimension.depth","k.ratio.0_5"],"outputs":{"value":"head.on.arm.pose.z.t0.value"}},{"id":"head.seat.rigid","op":"rigid@1","args":["d.mm.0","head.on.arm.seat.y.t0.value","head.on.arm.seat.z.t0.value","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"head.seat.value"},"params":{"from":"head.seat","to":"arm.local"}},{"id":"head.chain","op":"compose@1","args":["head.seat.value","head.poseValue"],"outputs":{"pose":"head.chain.value"}},{"id":"head.world","op":"compose@1","args":["arm.world.value","head.chain.value"],"outputs":{"pose":"head.world.value"}},{"id":"light.on.head.seat.y.t0","op":"mul@1","args":["head.dimension.height","host.k.centre"],"outputs":{"value":"light.on.head.seat.y.t0.value"}},{"id":"light.on.head.pose.y.t0","op":"mul@1","args":["light.dimension.height","host.k.centre"],"outputs":{"value":"light.on.head.pose.y.t0.value"}},{"id":"light.seat.rigid","op":"rigid@1","args":["d.mm.0","light.on.head.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"light.seat.value"},"params":{"from":"light.joint","to":"head.local"}},{"id":"light.chain","op":"compose@1","args":["light.seat.value","light.turned.value"],"outputs":{"pose":"light.chain.value"}},{"id":"light.world","op":"compose@1","args":["head.world.value","light.chain.value"],"outputs":{"pose":"light.world.value"}},{"id":"light.motion","op":"axis-slide@1","args":["axis.ratio.0","axis.ratio.1","axis.ratio.0","on"],"outputs":{"pose":"light.motion.value"},"params":{"from":"light.seat","to":"light.joint"}},{"id":"light.turned","op":"compose@1","args":["light.motion.value","light.poseValue"],"outputs":{"pose":"light.turned.value"}},{"id":"light.shown","op":"at-least@1","args":["on","k.light.shown.at"],"outputs":{"value":"light.shown.value"}}]},"capabilities":{"version":"r3-capability-3","assetFrame":"asset","bindings":[]}},"designInputs":{"host.size.x":1800,"host.size.y":900,"host.size.z":800,"arm.dimension.width":40,"arm.dimension.height":700,"arm.dimension.depth":40,"head.dimension.width":300,"head.dimension.height":40,"head.dimension.depth":120,"light.dimension.width":280,"light.dimension.height":10,"light.dimension.depth":100},"stateDefaults":{"on":0},"palette":{"palette.primary":"#477b9e","palette.host":"#d9dde2","palette.tpl-7d8790":"#7d8790","palette.tpl-44505a":"#44505a","palette.tpl-fff4c2":"#fff4c2"},"appearance":[{"target":"host","material":{"token":"palette.host"}},{"target":"arm","material":{"token":"palette.tpl-7d8790"}},{"target":"head","material":{"token":"palette.tpl-44505a"}},{"target":"light","material":{"token":"palette.tpl-fff4c2","emissive":{"on":true,"token":"palette.tpl-fff4c2","intensity":1}},"visibility":"light.shown.value"}],"joints":[{"id":"host","body0":{"plane":"mounting-plane"},"body1":{"part":"host"},"origin":{}},{"id":"arm","body0":{"part":"host","face":"top"},"body1":{"part":"arm"},"origin":{"align":{"z":"min"}}},{"id":"head","body0":{"part":"arm","face":"top"},"body1":{"part":"head"},"origin":{"align":{"z":"min"}}},{"id":"light","body0":{"part":"head","face":"bottom"},"body1":{"part":"light"},"origin":{},"motion":[{"type":"prismatic","axis":"Y","lowerLimit":0,"upperLimit":0.001,"state":{"id":"on"}}]}]}
@@ -57,7 +57,6 @@
57
57
  "kind": "set-joint",
58
58
  "joint": {
59
59
  "id": "{id}-arm",
60
- "type": "fixed",
61
60
  "body0": {
62
61
  "part": "{target}",
63
62
  "face": "top"
@@ -76,7 +75,6 @@
76
75
  "kind": "set-joint",
77
76
  "joint": {
78
77
  "id": "{id}-head",
79
- "type": "fixed",
80
78
  "body0": {
81
79
  "part": "{id}-arm",
82
80
  "face": "top"
@@ -95,7 +93,6 @@
95
93
  "kind": "set-joint",
96
94
  "joint": {
97
95
  "id": "{id}-light",
98
- "type": "prismatic",
99
96
  "body0": {
100
97
  "part": "{id}-head",
101
98
  "face": "bottom"
@@ -104,12 +101,17 @@
104
101
  "part": "{id}-light"
105
102
  },
106
103
  "origin": {},
107
- "axis": "Y",
108
- "lowerLimit": 0,
109
- "upperLimit": 0.001,
110
- "state": {
111
- "id": "{id}-on"
112
- }
104
+ "motion": [
105
+ {
106
+ "type": "prismatic",
107
+ "axis": "Y",
108
+ "lowerLimit": 0,
109
+ "upperLimit": 0.001,
110
+ "state": {
111
+ "id": "{id}-on"
112
+ }
113
+ }
114
+ ]
113
115
  }
114
116
  },
115
117
  {
@@ -1 +1 @@
1
- {"version":"figure-asset-1","name":"TPL_WORKBENCH_TOP","document":{"version":"figure-prototype-1","model":{"version":"r3-spatial-1","inputs":[{"id":"host.size.x","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.y","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.z","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"top.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"}],"constants":[{"id":"host.k.centre","unit":"ratio","value":-0.5},{"id":"d.mm.0","unit":"mm","value":0},{"id":"k.ratio.0_5","unit":"ratio","value":0.5},{"id":"a.deg.0","unit":"deg","value":0},{"id":"top.k.centre","unit":"ratio","value":-0.5},{"id":"k.ratio.1","unit":"ratio","value":1}],"nodes":[{"id":"host.start","op":"mul@1","args":["host.size.y","host.k.centre"],"outputs":{"value":"host.start.value"}},{"id":"host.shape","op":"extrude@1","args":["host.start.value","host.size.y","host.dimension.x.value","host.dimension.z.value"],"outputs":{"shape":"host.shapeValue"},"params":{"frame":"host.local","axis":"y","section":"rectangle"}},{"id":"host.pose","op":"rigid@1","args":["d.mm.0","host.on.plane.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.poseValue"},"params":{"from":"host.local","to":"host.seat"}},{"id":"host","op":"place@1","args":["host.shapeValue","host.chain.value"],"outputs":{"placed":"host.placed"}},{"id":"top.shape","op":"extrude@1","args":["top.start.value","top.dimension.height","top.dimension.x.value","top.dimension.z.value"],"outputs":{"shape":"top.shapeValue"},"params":{"frame":"top.local","axis":"y","section":"rectangle"}},{"id":"top.pose","op":"rigid@1","args":["d.mm.0","top.on.host.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"top.poseValue"},"params":{"from":"top.local","to":"top.seat"}},{"id":"top","op":"place@1","args":["top.shapeValue","top.world.value"],"outputs":{"placed":"top.placed"}},{"id":"top.start","op":"mul@1","args":["top.dimension.height","top.k.centre"],"outputs":{"value":"top.start.value"}},{"id":"top.dimension.x","op":"mul@1","args":["host.dimension.x.value","k.ratio.1"],"outputs":{"value":"top.dimension.x.value"}},{"id":"host.dimension.x","op":"mul@1","args":["host.size.x","k.ratio.1"],"outputs":{"value":"host.dimension.x.value"}},{"id":"top.dimension.z","op":"mul@1","args":["host.dimension.z.value","k.ratio.1"],"outputs":{"value":"top.dimension.z.value"}},{"id":"host.dimension.z","op":"mul@1","args":["host.size.z","k.ratio.1"],"outputs":{"value":"host.dimension.z.value"}},{"id":"host.on.plane.pose.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"host.on.plane.pose.y.t0.value"}},{"id":"host.seat.rigid","op":"rigid@1","args":["d.mm.0","d.mm.0","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.seat.value"},"params":{"from":"host.seat","to":"asset"}},{"id":"host.chain","op":"compose@1","args":["host.seat.value","host.poseValue"],"outputs":{"pose":"host.chain.value"}},{"id":"top.on.host.seat.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"top.on.host.seat.y.t0.value"}},{"id":"top.on.host.pose.y.t0","op":"mul@1","args":["top.dimension.height","k.ratio.0_5"],"outputs":{"value":"top.on.host.pose.y.t0.value"}},{"id":"top.seat.rigid","op":"rigid@1","args":["d.mm.0","top.on.host.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"top.seat.value"},"params":{"from":"top.seat","to":"host.local"}},{"id":"top.chain","op":"compose@1","args":["top.seat.value","top.poseValue"],"outputs":{"pose":"top.chain.value"}},{"id":"top.world","op":"compose@1","args":["host.chain.value","top.chain.value"],"outputs":{"pose":"top.world.value"}}]},"capabilities":{"version":"r3-capability-3","assetFrame":"asset","bindings":[]}},"designInputs":{"host.size.x":1800,"host.size.y":800,"host.size.z":800,"top.dimension.height":40},"stateDefaults":{},"palette":{"palette.primary":"#477b9e","palette.host":"#d9dde2","palette.tpl-b08d57":"#b08d57"},"appearance":[{"target":"host","material":{"token":"palette.host"}},{"target":"top","material":{"token":"palette.tpl-b08d57"}}],"joints":[{"id":"host","type":"fixed","body0":{"plane":"mounting-plane"},"body1":{"part":"host"},"origin":{}},{"id":"top","type":"fixed","body0":{"part":"host","face":"top"},"body1":{"part":"top"},"origin":{}}]}
1
+ {"version":"figure-asset-1","name":"TPL_WORKBENCH_TOP","document":{"version":"figure-prototype-1","model":{"version":"r3-spatial-1","inputs":[{"id":"host.size.x","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.y","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"host.size.z","unit":"mm","min":5e-324,"max":1.7976931348623157e+308,"role":"design"},{"id":"top.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"}],"constants":[{"id":"host.k.centre","unit":"ratio","value":-0.5},{"id":"d.mm.0","unit":"mm","value":0},{"id":"k.ratio.0_5","unit":"ratio","value":0.5},{"id":"a.deg.0","unit":"deg","value":0},{"id":"top.k.centre","unit":"ratio","value":-0.5},{"id":"k.ratio.1","unit":"ratio","value":1}],"nodes":[{"id":"host.start","op":"mul@1","args":["host.size.y","host.k.centre"],"outputs":{"value":"host.start.value"}},{"id":"host.shape","op":"extrude@1","args":["host.start.value","host.size.y","host.dimension.x.value","host.dimension.z.value"],"outputs":{"shape":"host.shapeValue"},"params":{"frame":"host.local","axis":"y","section":"rectangle"}},{"id":"host.pose","op":"rigid@1","args":["d.mm.0","host.on.plane.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.poseValue"},"params":{"from":"host.local","to":"host.seat"}},{"id":"host","op":"place@1","args":["host.shapeValue","host.chain.value"],"outputs":{"placed":"host.placed"}},{"id":"top.shape","op":"extrude@1","args":["top.start.value","top.dimension.height","top.dimension.x.value","top.dimension.z.value"],"outputs":{"shape":"top.shapeValue"},"params":{"frame":"top.local","axis":"y","section":"rectangle"}},{"id":"top.pose","op":"rigid@1","args":["d.mm.0","top.on.host.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"top.poseValue"},"params":{"from":"top.local","to":"top.seat"}},{"id":"top","op":"place@1","args":["top.shapeValue","top.world.value"],"outputs":{"placed":"top.placed"}},{"id":"top.start","op":"mul@1","args":["top.dimension.height","top.k.centre"],"outputs":{"value":"top.start.value"}},{"id":"top.dimension.x","op":"mul@1","args":["host.dimension.x.value","k.ratio.1"],"outputs":{"value":"top.dimension.x.value"}},{"id":"host.dimension.x","op":"mul@1","args":["host.size.x","k.ratio.1"],"outputs":{"value":"host.dimension.x.value"}},{"id":"top.dimension.z","op":"mul@1","args":["host.dimension.z.value","k.ratio.1"],"outputs":{"value":"top.dimension.z.value"}},{"id":"host.dimension.z","op":"mul@1","args":["host.size.z","k.ratio.1"],"outputs":{"value":"host.dimension.z.value"}},{"id":"host.on.plane.pose.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"host.on.plane.pose.y.t0.value"}},{"id":"host.seat.rigid","op":"rigid@1","args":["d.mm.0","d.mm.0","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"host.seat.value"},"params":{"from":"host.seat","to":"asset"}},{"id":"host.chain","op":"compose@1","args":["host.seat.value","host.poseValue"],"outputs":{"pose":"host.chain.value"}},{"id":"top.on.host.seat.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"top.on.host.seat.y.t0.value"}},{"id":"top.on.host.pose.y.t0","op":"mul@1","args":["top.dimension.height","k.ratio.0_5"],"outputs":{"value":"top.on.host.pose.y.t0.value"}},{"id":"top.seat.rigid","op":"rigid@1","args":["d.mm.0","top.on.host.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"top.seat.value"},"params":{"from":"top.seat","to":"host.local"}},{"id":"top.chain","op":"compose@1","args":["top.seat.value","top.poseValue"],"outputs":{"pose":"top.chain.value"}},{"id":"top.world","op":"compose@1","args":["host.chain.value","top.chain.value"],"outputs":{"pose":"top.world.value"}}]},"capabilities":{"version":"r3-capability-3","assetFrame":"asset","bindings":[]}},"designInputs":{"host.size.x":1800,"host.size.y":800,"host.size.z":800,"top.dimension.height":40},"stateDefaults":{},"palette":{"palette.primary":"#477b9e","palette.host":"#d9dde2","palette.tpl-b08d57":"#b08d57"},"appearance":[{"target":"host","material":{"token":"palette.host"}},{"target":"top","material":{"token":"palette.tpl-b08d57"}}],"joints":[{"id":"host","body0":{"plane":"mounting-plane"},"body1":{"part":"host"},"origin":{}},{"id":"top","body0":{"part":"host","face":"top"},"body1":{"part":"top"},"origin":{}}]}
@@ -71,7 +71,6 @@
71
71
  "kind": "set-joint",
72
72
  "joint": {
73
73
  "id": "{id}-top",
74
- "type": "fixed",
75
74
  "body0": {
76
75
  "part": "{target}",
77
76
  "face": "top"
@@ -121,7 +121,7 @@ describe('태그가 정말 써진다', () => {
121
121
  expect((await readBack(saved.id))!.tags).toEqual([])
122
122
  })
123
123
 
124
- it('안 준 도형은 태그가 없다 — 빈 배열로 갈음하지 않는다', async () => {
124
+ it('안 준 피규어는 태그가 없다 — 빈 배열로 갈음하지 않는다', async () => {
125
125
  const saved = await seed()
126
126
 
127
127
  expect((await readBack(saved.id))!.tags).toBeNull()
@@ -8,14 +8,14 @@ import { FigureHistory } from './figure-history.js'
8
8
  /**
9
9
  * 판본을 남긴다 — **발행된 저장에만.**
10
10
  *
11
- * `@operato/typeorm-history` 는 원래 모든 저장을 베낀다. 그런데 도형은 저작 중에 수십 번 저장되고,
11
+ * `@operato/typeorm-history` 는 원래 모든 저장을 베낀다. 그런데 피규어는 저작 중에 수십 번 저장되고,
12
12
  * 그 전부를 남기면 판본 목록이 「내가 오늘 몇 번 눌렀나」가 된다. 사람이 판이라고 부르는 것은
13
13
  * **발행한 것**이므로 그때만 베낀다. board 가 같은 규칙으로 돈다(`board-service` 의 같은 이름 파일).
14
14
  *
15
15
  * 발행판의 정본(`__releaseSource`)은 크기 범위를 적은 발행판 사본이다 — Figure 행에는 작성자가 좁힌 끝만 남는다.
16
16
  *
17
17
  * 발행 메모는 Figure 의 칸이 아니다. `releaseFigure` 가 저장할 엔티티에 `__releaseComment` 로 얹어
18
- * 두면 여기서 판본의 `comment` 로 옮긴다 — 메모는 그 판의 것이지 도형의 것이 아니다. 정본 형식
18
+ * 두면 여기서 판본의 `comment` 로 옮긴다 — 메모는 그 판의 것이지 피규어의 것이 아니다. 정본 형식
19
19
  * (`__releaseFormat`), 잰 커널의 판(`__releaseKernel`, ADR-0109 C1), 직전 판에 견준 변경(`__releaseChanges`), 발행 때 잰 값(`__releaseMetrics`)과
20
20
  * 윗모습(`__releaseTopView`)도 같은 길로 옮긴다(ADR-0104).
21
21
  */
@@ -100,7 +100,7 @@ describe('figureBlueprint 질의 — 소비처(board, twin, things-scene)에 발
100
100
  await repo.save({
101
101
  domain: testDomain,
102
102
  type: 'DRAFT_FIGURE',
103
- name: '초안 도형',
103
+ name: '초안 피규어',
104
104
  state: 'draft',
105
105
  source: sampleSource,
106
106
  version: 0
@@ -116,7 +116,7 @@ describe('figureBlueprint 질의 — 소비처(board, twin, things-scene)에 발
116
116
  await repo.save({
117
117
  domain: testDomain,
118
118
  type: 'RELEASED_FIGURE',
119
- name: '발행 도형',
119
+ name: '발행 피규어',
120
120
  state: 'released',
121
121
  source: sampleSource,
122
122
  version: 1
@@ -141,7 +141,7 @@ describe('figureBlueprint 질의 — 소비처(board, twin, things-scene)에 발
141
141
  const figure = await repo.save({
142
142
  domain: testDomain,
143
143
  type: 'UPDATING_FIGURE',
144
- name: '수정 중인 도형',
144
+ name: '수정 중인 피규어',
145
145
  state: 'draft',
146
146
  source: draftSource,
147
147
  version: 1
@@ -69,7 +69,7 @@ describe('the budget is the model’s, not the kernel’s', () => {
69
69
  expect(JSON.stringify(view.outline).length).toBeLessThan(FIGURE_CONTEXT_BUDGET)
70
70
  expect(view.outline!.chars).toBe(size(over))
71
71
  expect(view.outline!.parts.map(p => p.id)).toEqual(partsOf(over))
72
- expect(view.outline!.parts[1]).toMatchObject({ id: 'shelf-1', on: 'shelf-0.top', joint: { id: 'shelf-1', type: 'fixed' } })
72
+ expect(view.outline!.parts[1]).toMatchObject({ id: 'shelf-1', on: 'shelf-0.top', joint: { id: 'shelf-1' } })
73
73
  expect(view.outline!.parts[0].on).toBe('mounting-plane')
74
74
  expect(view.outline!.document.model.nodes).toBe(over.document.model.nodes.length)
75
75
  expect(view.outline!.palette).toEqual(over.palette)
@@ -163,7 +163,7 @@ describe('a proposal changes only what it was shown', () => {
163
163
  })
164
164
 
165
165
  it('a joint is its moving part’s: refastening or removing it changes that part', () => {
166
- const set = { kind: 'set-joint', joint: { id: 'shelf-5', type: 'fixed', body0: { part: 'shelf-2', face: 'top' }, body1: { part: 'shelf-5' }, origin: {} } }
166
+ const set = { kind: 'set-joint', joint: { id: 'shelf-5', body0: { part: 'shelf-2', face: 'top' }, body1: { part: 'shelf-5' }, origin: {} } }
167
167
  const remove = { kind: 'remove-joint', id: 'shelf-5' }
168
168
  expect(unreadPartEdits(over, [set, remove] as never, shown)).toHaveLength(2)
169
169
  })
@@ -178,7 +178,7 @@ describe('a proposal changes only what it was shown', () => {
178
178
  { ...decoys, kind: 'set-material', target: 'shelf-5', material: { token: 'palette.primary' } },
179
179
  { ...decoys, kind: 'attach', part: 'shelf-5', to: { part: 'shelf-2', face: 'top' } },
180
180
  { ...decoys, kind: 'remove-joint', joint: 'shelf-2', id: 'shelf-5' },
181
- { ...decoys, kind: 'set-joint', joint: { id: 'shelf-2', type: 'fixed', body0: { part: 'shelf-2', face: 'top' }, body1: { part: 'shelf-5' }, origin: {} } }
181
+ { ...decoys, kind: 'set-joint', joint: { id: 'shelf-2', body0: { part: 'shelf-2', face: 'top' }, body1: { part: 'shelf-5' }, origin: {} } }
182
182
  ]
183
183
  const reasons = unreadPartEdits(over, steps as never, shown)
184
184
  expect(reasons).toHaveLength(steps.length)
@@ -30,7 +30,8 @@ export interface FigureOutlinePart {
30
30
  shape?: string
31
31
  /** What it is fastened to: `<part>.<face>`, `mounting-plane`, or nothing when unfastened. */
32
32
  on?: string
33
- joint?: { id: string; type: string }
33
+ /** Its joint, and how it moves: each axis's type in order (ADR-0159); no motion for a fastening. */
34
+ joint?: { id: string; motion?: string[] }
34
35
  material?: string
35
36
  /** How long its part read is: what reading it costs. */
36
37
  chars: number
@@ -178,7 +179,8 @@ function outlinePartsOf(asset: FigureAsset): FigureOutlinePart[] {
178
179
  id,
179
180
  ...(shape ? { shape } : {}),
180
181
  ...(on ? { on } : {}),
181
- ...(joint ? { joint: { id: joint.id, type: joint.type } } : {}),
182
+ /* How it moves: each axis of its joint in order (ADR-0159); none for a fastening. */
183
+ ...(joint ? { joint: { id: joint.id, ...(joint.motion?.length ? { motion: joint.motion.map((m: Dynamic) => m.type) } : {}) } } : {}),
182
184
  ...(look.material?.token ? { material: look.material.token } : {}),
183
185
  chars: length(figurePartReadOf(asset, id))
184
186
  }
@@ -158,8 +158,8 @@ describe('figure-format — 판을 알아보는 문', () => {
158
158
  })
159
159
 
160
160
  /*
161
- (2026-09-24) 드라이룸 램프처럼 — 붙어 있던 부품이 도형을 키우면 떨어진다.
162
- 여기서는 손으로 만든다: 램프의 높이가 도형 높이(size.y)를 따라 올라가고, 몸통은 그대로다.
161
+ (2026-09-24) 드라이룸 램프처럼 — 붙어 있던 부품이 피규어를 키우면 떨어진다.
162
+ 여기서는 손으로 만든다: 램프의 높이가 피규어 높이(size.y)를 따라 올라가고, 몸통은 그대로다.
163
163
  */
164
164
  const splitting = () => {
165
165
  let asset = createFigureAsset('Lamp post')
@@ -185,8 +185,8 @@ describe('figure-format — 판을 알아보는 문', () => {
185
185
  expect(`${finding!.message}${finding!.why}${finding!.how}`).not.toMatch(/come away|piece/)
186
186
  })
187
187
 
188
- /* 한 비율로 커진다고 선언한 도형에서 제 숫자를 가진 부품(수석 아키텍트 판정 2026-09-24 조건 ②). */
189
- it('한 비율로 커진다고 선언한 도형에서 따라 커지지 않는 부품을 막고 이름을 댄다', () => {
188
+ /* 한 비율로 커진다고 선언한 피규어에서 제 숫자를 가진 부품(수석 아키텍트 판정 2026-09-24 조건 ②). */
189
+ it('한 비율로 커진다고 선언한 피규어에서 따라 커지지 않는 부품을 막고 이름을 댄다', () => {
190
190
  let asset = createFigureAsset('Uniform')
191
191
  asset = addFigureBox(asset, { id: 'body', size: { x: 100, y: 100, z: 100 }, position: { x: 0, y: 50, z: 0 } })
192
192
  for (const axis of ['x', 'y', 'z']) {
@@ -197,7 +197,7 @@ describe('figure-format — 판을 알아보는 문', () => {
197
197
  const finding = inspectSource(serializeFigureAsset(asset), null, translatorOf(KO)).findings.find(f => f.code === 'sizing-not-uniform')
198
198
 
199
199
  expect(finding?.blocking).toBe(true)
200
- expect(finding!.message).toBe("이 도형은 한 비율로 커지는데, 크기를 X 로 2배로 하면 'body' 부품은 같이 커지지 않습니다.")
200
+ expect(finding!.message).toBe("이 피규어는 한 비율로 커지는데, 크기를 X 로 2배로 하면 'body' 부품은 같이 커지지 않습니다.")
201
201
  expect(finding!.how).toContain('크기에 비례')
202
202
  })
203
203
 
@@ -234,10 +234,10 @@ describe('figure-format — 판을 알아보는 문', () => {
234
234
  })
235
235
 
236
236
  /*
237
- 자산에는 type 이 없어 임시 이름 검사가 돌지 않았고, 새 도형이 `FIGURE_<uuid>` 로 발행됐다(:3300, 2026-09-24).
237
+ 자산에는 type 이 없어 임시 이름 검사가 돌지 않았고, 새 피규어가 `FIGURE_<uuid>` 로 발행됐다(:3300, 2026-09-24).
238
238
  발행하면 이름이 굳으므로 행의 type 으로 거절한다.
239
239
  */
240
- it('임시 이름인 도형은 발행을 막는다 — 이름은 행에 있다', () => {
240
+ it('임시 이름인 피규어는 발행을 막는다 — 이름은 행에 있다', () => {
241
241
  /* The name a new figure gets — the format's rule, the one the gate recognises. */
242
242
  const placeholder = placeholderType()
243
243
  const finding = inspectSource(figureSource(), null, translatorOf(KO), placeholder).findings.find(f => f.code === 'type-is-placeholder')
@@ -107,7 +107,7 @@ function assertFormat(sourceJson: string): void {
107
107
  }
108
108
  if ((parsed as { version?: unknown } | null)?.version !== FIGURE_ASSET_VERSION)
109
109
  throw new FigureSourceError([
110
- { code: 'source-format-unknown', message: `정본의 판을 알 수 없다 — 도형 자산은 version '${FIGURE_ASSET_VERSION}' 을 적는다`, at: 'version' }
110
+ { code: 'source-format-unknown', message: `정본의 판을 알 수 없다 — 피규어 자산은 version '${FIGURE_ASSET_VERSION}' 을 적는다`, at: 'version' }
111
111
  ])
112
112
  }
113
113
 
@@ -2,7 +2,7 @@
2
2
  * 실제 LLM Figure 후보 생성 smoke test (기본 비활성).
3
3
  *
4
4
  * 결정적 시험은 프롬프트·도구·검사 배선을 고정하지만, 실제 모델이 명령 목록(ADR-0094)을 써서 게이트를
5
- * 지나는 도형을 만드는지는 대신할 수 없다. 이 시험은 `RUN_FIGURE_LLM_SMOKE=1`과 공급자 API 키가 모두 있을 때만 실행한다.
5
+ * 지나는 피규어를 만드는지는 대신할 수 없다. 이 시험은 `RUN_FIGURE_LLM_SMOKE=1`과 공급자 API 키가 모두 있을 때만 실행한다.
6
6
  * DB·GraphQL·Figure 저장을 건드리지 않고 후보 생성 함수만 호출하므로, 외부 영향은 API 비용뿐이다.
7
7
  *
8
8
  * 실행:
@@ -273,7 +273,7 @@ export class FigureMutation {
273
273
  **타입은 발행 전에만 바뀐다** — ADR-0063 결정 4.
274
274
 
275
275
  발행된 뒤에는 이미 배치된 도면이 이 이름을 가리키고, 바꾸면 그 도면이 아무 오류 없이
276
- 빈 자리가 된다. 발행된 적 없는 도형은 가리키는 도면이 있을 수 없다 — 도면은 최신
276
+ 빈 자리가 된다. 발행된 적 없는 피규어는 가리키는 도면이 있을 수 없다 — 도면은 최신
277
277
  발행판을 그리므로 그려질 자리가 없다.
278
278
 
279
279
  행과 정본 둘 다 고친다. 정본 안에도 `type` 이 있어서 한쪽만 고치면 저장된 JSON 과
@@ -358,7 +358,7 @@ export class FigureMutation {
358
358
  *
359
359
  * ## 무엇이 일어나나
360
360
  *
361
- * `state` 가 `released` 가 되고, 판 번호가 하나 오르고, 그 순간의 도형이 판본으로 남는다
361
+ * `state` 가 `released` 가 되고, 판 번호가 하나 오르고, 그 순간의 피규어가 판본으로 남는다
362
362
  * (`FigureHistory` — 스냅샷은 구독자가 뜬다). 저작 중 저장은 이 셋 중 아무것도 하지 않는다.
363
363
  *
364
364
  * ## 왜 이미 발행된 것을 거절하나
@@ -368,12 +368,12 @@ export class FigureMutation {
368
368
  *
369
369
  * ## 번호는 판본에서 센다
370
370
  *
371
- * 도형의 현재 번호가 아니라 **판본의 최대 번호 + 1** 이다. 되돌리기로 옛 판이 현재가 되어도
371
+ * 피규어의 현재 번호가 아니라 **판본의 최대 번호 + 1** 이다. 되돌리기로 옛 판이 현재가 되어도
372
372
  * 다음 발행이 이미 쓴 번호를 다시 쓰지 않는다.
373
373
  *
374
374
  * ## 게이트를 통과해야 한다
375
375
  *
376
- * 크기를 바꿨을 때 조각이 갈라지는 도형은 발행되지 않는다(`figure-gate.ts`). 소비처는 형상을
376
+ * 크기를 바꿨을 때 조각이 갈라지는 피규어는 발행되지 않는다(`figure-gate.ts`). 소비처는 형상을
377
377
  * 늘려 쓰므로 — 그것이 이 형식의 값이다 — 늘려도 견디는지가 약속의 일부다. 화면은 같은 판정을
378
378
  * `inspectFigure` 로 미리 물어 이유를 보여 준다.
379
379
  */
@@ -473,7 +473,7 @@ export class FigureMutation {
473
473
  *
474
474
  * ## 비용은 다시 잰다
475
475
  *
476
- * 판본이 든 점수·삼각형은 **그때의 형식**으로 잰 값이다. 지금 이 도형이 그 내용이 되었으므로
476
+ * 판본이 든 점수·삼각형은 **그때의 형식**으로 잰 값이다. 지금 이 피규어가 그 내용이 되었으므로
477
477
  * 오늘 기준으로 다시 계산한다. 옛 값은 판본에 그대로 남아 있다.
478
478
  */
479
479
  @Directive('@transaction')
@@ -592,7 +592,7 @@ export class FigureMutation {
592
592
  /**
593
593
  * 저작 보조에게 제안을 시킨다(ADR-0094).
594
594
  *
595
- * **저장하지 않는다.** 모델러 명령 목록과 그것이 만드는 도형을 돌려줄 뿐이고, 정본이 되는 것은 저작자가 모델러에
595
+ * **저장하지 않는다.** 모델러 명령 목록과 그것이 만드는 피규어를 돌려줄 뿐이고, 정본이 되는 것은 저작자가 모델러에
596
596
  * 적용하고 저장한 뒤다. 커널이 거절한 명령이나 게이트가 잡은 것은 여기까지 오지 않는다 — 제안기가 사유를 모델에
597
597
  * 돌려주고 다시 시킨다. 끝내 못 만들면 **사유와 함께 던진다.** 반쯤 만든 것을 돌려주지 않는다.
598
598
  */
@@ -32,7 +32,7 @@ function door(): FigureAsset {
32
32
  a = addFigureBox(a, { id: 'sign', size: { x: 200, y: 100, z: 10 }, position: { x: 0, y: 2200, z: 200 } })
33
33
  a = applyFigureAuthoring(a, { kind: 'attach', part: 'leaf', to: { part: 'frame', face: 'top' } })
34
34
  const j = a.joints!.find(k => k.body1.part === 'leaf')!
35
- a = applyFigureAuthoring(a, { kind: 'set-joint', joint: { ...j, type: 'revolute', axis: 'Y', state: { id: 'open' } } })
35
+ a = applyFigureAuthoring(a, { kind: 'set-joint', joint: { ...j, motion: [{ type: 'revolute', axis: 'Y', state: { id: 'open' } }] } })
36
36
  return editFigurePart(a, { kind: 'set-driver', state: 'open', clip: 'swing', duration: 2, keys: [{ seconds: 0, value: 0 }, { seconds: 2, value: 80 }] })
37
37
  }
38
38
  const lossy = { steps: [{ kind: 'rename', name: 'Door by AI' }, { kind: 'remove-part', target: 'leaf' }] }
@@ -256,8 +256,8 @@ describe('a failure told to a person', () => {
256
256
 
257
257
  it('says the first line in the reader\'s language, the reasons as they were', () => {
258
258
  const said: any[] = []
259
- const text = proposalFailureForPerson(failure, (key, params) => (said.push([key, params]), '도형을 만들지 못했습니다.'))
260
- expect(text).toBe('도형을 만들지 못했습니다.\nATTACH_FACE: steps[4]: attach: faces along x')
259
+ const text = proposalFailureForPerson(failure, (key, params) => (said.push([key, params]), '피규어를 만들지 못했습니다.'))
260
+ expect(text).toBe('피규어를 만들지 못했습니다.\nATTACH_FACE: steps[4]: attach: faces along x')
261
261
  expect(said).toEqual([['error.figure-proposal-failed', { defaultValue: 'The figure could not be made.' }]])
262
262
  })
263
263