@things-factory/figure-service 10.1.208 → 10.1.210

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 (253) hide show
  1. package/dist-server/service/figure/figure-context.d.ts +2 -1
  2. package/dist-server/service/figure/figure-context.js +2 -1
  3. package/dist-server/service/figure/figure-context.js.map +1 -1
  4. package/dist-server/tsconfig.tsbuildinfo +1 -1
  5. package/package.json +3 -3
  6. package/recipes/_lib/model.mts +12 -8
  7. package/recipes/air-cylinder/models/default.json +1 -1
  8. package/recipes/air-cylinder/recipe.json +13 -10
  9. package/recipes/air-cylinder/spec.json +1 -1
  10. package/recipes/air-shower/models/default.json +1 -1
  11. package/recipes/air-shower/recipe.json +11 -8
  12. package/recipes/barrier-gate/models/default.json +1 -1
  13. package/recipes/barrier-gate/recipe.json +11 -7
  14. package/recipes/base-frame/models/default.json +1 -1
  15. package/recipes/base-frame/recipe.json +0 -4
  16. package/recipes/belt-surface/models/default.json +1 -1
  17. package/recipes/belt-surface/recipe.json +0 -1
  18. package/recipes/bin-row/models/default.json +1 -1
  19. package/recipes/bin-row/recipe.json +0 -1
  20. package/recipes/bollard-row/models/default.json +1 -1
  21. package/recipes/bollard-row/recipe.json +0 -1
  22. package/recipes/buzzer/models/default.json +1 -1
  23. package/recipes/buzzer/recipe.json +0 -1
  24. package/recipes/cabinet-doors/build.mts +1 -1
  25. package/recipes/cabinet-doors/models/default.json +1 -1
  26. package/recipes/cabinet-doors/models/doors=1.json +1 -1
  27. package/recipes/cabinet-doors/models/doors=2.json +1 -1
  28. package/recipes/cabinet-doors/recipe.json +21 -13
  29. package/recipes/cable-tray/models/default.json +1 -1
  30. package/recipes/cable-tray/recipe.json +0 -3
  31. package/recipes/camera-mount/models/default.json +1 -1
  32. package/recipes/camera-mount/recipe.json +11 -8
  33. package/recipes/canopy/models/default.json +1 -1
  34. package/recipes/canopy/recipe.json +0 -5
  35. package/recipes/cart/models/default.json +1 -1
  36. package/recipes/cart/recipe.json +0 -12
  37. package/recipes/cart-handle/models/default.json +1 -1
  38. package/recipes/cart-handle/recipe.json +0 -3
  39. package/recipes/casters-four/models/default.json +1 -1
  40. package/recipes/casters-four/recipe.json +0 -8
  41. package/recipes/ceiling-rail-carriage/build.mts +1 -1
  42. package/recipes/ceiling-rail-carriage/models/default.json +1 -1
  43. package/recipes/ceiling-rail-carriage/recipe.json +19 -16
  44. package/recipes/chain-rails/models/default.json +1 -1
  45. package/recipes/chain-rails/recipe.json +0 -2
  46. package/recipes/charging-station/models/default.json +1 -1
  47. package/recipes/charging-station/recipe.json +0 -2
  48. package/recipes/column-row/models/default.json +1 -1
  49. package/recipes/column-row/recipe.json +0 -1
  50. package/recipes/control-cabinet/models/default.json +1 -1
  51. package/recipes/control-cabinet/recipe.json +11 -8
  52. package/recipes/conveyor-skirts/models/default.json +1 -1
  53. package/recipes/conveyor-skirts/recipe.json +0 -2
  54. package/recipes/counter-display/models/default.json +1 -1
  55. package/recipes/counter-display/recipe.json +0 -2
  56. package/recipes/dock-bumpers/models/default.json +1 -1
  57. package/recipes/dock-bumpers/recipe.json +0 -2
  58. package/recipes/dock-leveler/models/default.json +1 -1
  59. package/recipes/dock-leveler/recipe.json +11 -7
  60. package/recipes/double-hinged-door/build.mts +1 -1
  61. package/recipes/double-hinged-door/models/default.json +1 -1
  62. package/recipes/double-hinged-door/recipe.json +21 -14
  63. package/recipes/drawer-stack/models/default.json +1 -1
  64. package/recipes/drawer-stack/models/drawers=2.json +1 -1
  65. package/recipes/drawer-stack/models/drawers=3.json +1 -1
  66. package/recipes/drawer-stack/models/drawers=4.json +1 -1
  67. package/recipes/drawer-stack/recipe.json +99 -63
  68. package/recipes/drip-tray/models/default.json +1 -1
  69. package/recipes/drip-tray/recipe.json +0 -1
  70. package/recipes/duct-fan/models/default.json +1 -1
  71. package/recipes/duct-fan/recipe.json +11 -8
  72. package/recipes/emergency-stop/models/default.json +1 -1
  73. package/recipes/emergency-stop/recipe.json +11 -8
  74. package/recipes/end-covers/models/default.json +1 -1
  75. package/recipes/end-covers/recipe.json +0 -2
  76. package/recipes/ffu-row/models/default.json +1 -1
  77. package/recipes/ffu-row/recipe.json +0 -1
  78. package/recipes/fire-extinguisher/models/default.json +1 -1
  79. package/recipes/fire-extinguisher/recipe.json +0 -2
  80. package/recipes/first-aid-box/models/default.json +1 -1
  81. package/recipes/first-aid-box/recipe.json +0 -2
  82. package/recipes/floor-zone/models/default.json +1 -1
  83. package/recipes/floor-zone/recipe.json +0 -4
  84. package/recipes/folding-door/build.mts +1 -1
  85. package/recipes/folding-door/models/default.json +1 -1
  86. package/recipes/folding-door/recipe.json +21 -14
  87. package/recipes/fork/build.mts +1 -1
  88. package/recipes/fork/models/default.json +1 -1
  89. package/recipes/fork/recipe.json +23 -15
  90. package/recipes/fork/spec.json +1 -1
  91. package/recipes/gantry-frame/models/default.json +1 -1
  92. package/recipes/gantry-frame/recipe.json +0 -3
  93. package/recipes/gripper-2f/build.mts +1 -1
  94. package/recipes/gripper-2f/models/default.json +1 -1
  95. package/recipes/gripper-2f/recipe.json +23 -16
  96. package/recipes/gripper-2f/spec.json +1 -1
  97. package/recipes/guard-cover/models/default.json +1 -1
  98. package/recipes/guard-cover/recipe.json +11 -7
  99. package/recipes/handrail/models/default.json +1 -1
  100. package/recipes/handrail/recipe.json +0 -2
  101. package/recipes/hatch/models/default.json +1 -1
  102. package/recipes/hatch/recipe.json +11 -8
  103. package/recipes/hinged-door/build.mts +2 -3
  104. package/recipes/hinged-door/models/default.json +1 -1
  105. package/recipes/hinged-door/models/hinge=left.json +1 -1
  106. package/recipes/hinged-door/models/hinge=right.json +1 -1
  107. package/recipes/hinged-door/recipe.json +22 -15
  108. package/recipes/hmi-monitor/models/default.json +1 -1
  109. package/recipes/hmi-monitor/recipe.json +11 -8
  110. package/recipes/hopper/models/default.json +1 -1
  111. package/recipes/hopper/recipe.json +0 -2
  112. package/recipes/interlock-switch/models/default.json +1 -1
  113. package/recipes/interlock-switch/recipe.json +0 -1
  114. package/recipes/junction-box/models/default.json +1 -1
  115. package/recipes/junction-box/recipe.json +0 -1
  116. package/recipes/ladder/models/default.json +1 -1
  117. package/recipes/ladder/recipe.json +0 -3
  118. package/recipes/legs-four/models/default.json +1 -1
  119. package/recipes/legs-four/recipe.json +0 -4
  120. package/recipes/leveling-feet/models/default.json +1 -1
  121. package/recipes/leveling-feet/recipe.json +0 -4
  122. package/recipes/lift-updown/models/default.json +1 -1
  123. package/recipes/lift-updown/recipe.json +13 -9
  124. package/recipes/lift-updown/spec.json +1 -1
  125. package/recipes/light-curtain/models/default.json +1 -1
  126. package/recipes/light-curtain/recipe.json +0 -2
  127. package/recipes/limit-switch/models/default.json +1 -1
  128. package/recipes/limit-switch/recipe.json +11 -8
  129. package/recipes/linear-guide/build.mts +1 -1
  130. package/recipes/linear-guide/models/default.json +1 -1
  131. package/recipes/linear-guide/recipe.json +19 -16
  132. package/recipes/locker-row/models/default.json +1 -1
  133. package/recipes/locker-row/recipe.json +0 -1
  134. package/recipes/motor-box/models/default.json +1 -1
  135. package/recipes/motor-box/recipe.json +0 -1
  136. package/recipes/observation-window/models/default.json +1 -1
  137. package/recipes/observation-window/recipe.json +0 -2
  138. package/recipes/operator-panel/models/buttons=2.json +1 -1
  139. package/recipes/operator-panel/models/buttons=3.json +1 -1
  140. package/recipes/operator-panel/models/buttons=4.json +1 -1
  141. package/recipes/operator-panel/models/buttons=5.json +1 -1
  142. package/recipes/operator-panel/models/default.json +1 -1
  143. package/recipes/operator-panel/recipe.json +0 -5
  144. package/recipes/pallet/models/default.json +1 -1
  145. package/recipes/pallet/recipe.json +0 -4
  146. package/recipes/partition-wall/models/default.json +1 -1
  147. package/recipes/partition-wall/recipe.json +0 -3
  148. package/recipes/pass-box/models/default.json +1 -1
  149. package/recipes/pass-box/recipe.json +11 -8
  150. package/recipes/peg-board/models/default.json +1 -1
  151. package/recipes/peg-board/recipe.json +0 -2
  152. package/recipes/photo-sensor-pair/models/default.json +1 -1
  153. package/recipes/photo-sensor-pair/recipe.json +0 -2
  154. package/recipes/pipe-run/models/default.json +1 -1
  155. package/recipes/pipe-run/recipe.json +0 -1
  156. package/recipes/platform/models/default.json +1 -1
  157. package/recipes/platform/recipe.json +0 -5
  158. package/recipes/power-box/models/default.json +1 -1
  159. package/recipes/power-box/recipe.json +0 -1
  160. package/recipes/pressure-gauge/models/default.json +1 -1
  161. package/recipes/pressure-gauge/recipe.json +0 -1
  162. package/recipes/pull-cord/models/default.json +1 -1
  163. package/recipes/pull-cord/recipe.json +0 -1
  164. package/recipes/pump/models/default.json +1 -1
  165. package/recipes/pump/recipe.json +0 -2
  166. package/recipes/pusher/build.mts +1 -1
  167. package/recipes/pusher/models/default.json +1 -1
  168. package/recipes/pusher/recipe.json +19 -15
  169. package/recipes/robot-plinth/models/default.json +1 -1
  170. package/recipes/robot-plinth/recipe.json +0 -2
  171. package/recipes/roll-up-shutter/build.mts +1 -1
  172. package/recipes/roll-up-shutter/models/default.json +1 -1
  173. package/recipes/roll-up-shutter/recipe.json +19 -16
  174. package/recipes/roller-row/models/default.json +1 -1
  175. package/recipes/roller-row/recipe.json +11 -7
  176. package/recipes/room-shell/models/default.json +1 -1
  177. package/recipes/room-shell/recipe.json +0 -5
  178. package/recipes/rotating-beacon/models/default.json +1 -1
  179. package/recipes/rotating-beacon/recipe.json +11 -9
  180. package/recipes/safety-fence/models/default.json +1 -1
  181. package/recipes/safety-fence/recipe.json +0 -2
  182. package/recipes/safety-mat/models/default.json +1 -1
  183. package/recipes/safety-mat/recipe.json +0 -1
  184. package/recipes/safety-sign-stand/models/default.json +1 -1
  185. package/recipes/safety-sign-stand/recipe.json +0 -3
  186. package/recipes/scanner-mount/models/default.json +1 -1
  187. package/recipes/scanner-mount/recipe.json +0 -3
  188. package/recipes/selector-switch/models/default.json +1 -1
  189. package/recipes/selector-switch/recipe.json +11 -8
  190. package/recipes/shelf-tiers/models/default.json +1 -1
  191. package/recipes/shelf-tiers/models/tiers=2.json +1 -1
  192. package/recipes/shelf-tiers/models/tiers=3.json +1 -1
  193. package/recipes/shelf-tiers/models/tiers=4.json +1 -1
  194. package/recipes/shelf-tiers/models/tiers=5.json +1 -1
  195. package/recipes/shelf-tiers/recipe.json +0 -4
  196. package/recipes/side-guides/models/default.json +1 -1
  197. package/recipes/side-guides/recipe.json +0 -2
  198. package/recipes/sign-board/models/default.json +1 -1
  199. package/recipes/sign-board/recipe.json +0 -1
  200. package/recipes/signal-tower-3/build.mts +1 -1
  201. package/recipes/signal-tower-3/models/default.json +1 -1
  202. package/recipes/signal-tower-3/recipe.json +11 -10
  203. package/recipes/sliding-door/build.mts +4 -7
  204. package/recipes/sliding-door/models/default.json +1 -1
  205. package/recipes/sliding-door/models/leaves=1,lamp=false.json +1 -1
  206. package/recipes/sliding-door/models/leaves=1,lamp=true.json +1 -1
  207. package/recipes/sliding-door/models/leaves=2,lamp=false.json +1 -1
  208. package/recipes/sliding-door/models/leaves=2,lamp=true.json +1 -1
  209. package/recipes/sliding-door/recipe.json +48 -38
  210. package/recipes/stairs/models/default.json +1 -1
  211. package/recipes/stairs/recipe.json +0 -1
  212. package/recipes/status-lamp/models/default.json +1 -1
  213. package/recipes/status-lamp/recipe.json +11 -9
  214. package/recipes/stopper/models/default.json +1 -1
  215. package/recipes/stopper/recipe.json +11 -7
  216. package/recipes/suction-pads/models/default.json +1 -1
  217. package/recipes/suction-pads/recipe.json +0 -1
  218. package/recipes/tank/models/default.json +1 -1
  219. package/recipes/tank/recipe.json +0 -1
  220. package/recipes/telescopic-arm/build.mts +1 -1
  221. package/recipes/telescopic-arm/models/default.json +1 -1
  222. package/recipes/telescopic-arm/recipe.json +21 -13
  223. package/recipes/toe-board/models/default.json +1 -1
  224. package/recipes/toe-board/recipe.json +0 -1
  225. package/recipes/tote/models/default.json +1 -1
  226. package/recipes/tote/recipe.json +0 -1
  227. package/recipes/traffic-cones/models/default.json +1 -1
  228. package/recipes/traffic-cones/recipe.json +0 -2
  229. package/recipes/transfer-belts/build.mts +1 -1
  230. package/recipes/transfer-belts/models/default.json +1 -1
  231. package/recipes/transfer-belts/recipe.json +23 -15
  232. package/recipes/transfer-belts/spec.json +1 -1
  233. package/recipes/tray-stack/models/default.json +1 -1
  234. package/recipes/tray-stack/models/trays=3.json +1 -1
  235. package/recipes/tray-stack/models/trays=4.json +1 -1
  236. package/recipes/tray-stack/models/trays=5.json +1 -1
  237. package/recipes/tray-stack/recipe.json +0 -5
  238. package/recipes/trough/models/default.json +1 -1
  239. package/recipes/trough/recipe.json +0 -1
  240. package/recipes/turntable/models/default.json +1 -1
  241. package/recipes/turntable/recipe.json +11 -8
  242. package/recipes/valve-handle/models/default.json +1 -1
  243. package/recipes/valve-handle/recipe.json +11 -9
  244. package/recipes/waste-bin/models/default.json +1 -1
  245. package/recipes/waste-bin/recipe.json +0 -1
  246. package/recipes/work-light/models/default.json +1 -1
  247. package/recipes/work-light/recipe.json +11 -9
  248. package/recipes/workbench-top/models/default.json +1 -1
  249. package/recipes/workbench-top/recipe.json +0 -1
  250. package/server/service/figure/figure-context.test.ts +3 -3
  251. package/server/service/figure/figure-context.ts +4 -2
  252. package/server/service/figure/figure-propose-clips.test.ts +1 -1
  253. package/server/service/figure/figure-release-record-db.test.ts +3 -3
@@ -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"
@@ -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
  }
@@ -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' }] }
@@ -123,9 +123,9 @@ describe('a release of a figure that moves keeps its joint list', () => {
123
123
  const { asset } = palletizerRobotFigure()
124
124
  if (!j4Axis) return serializeFigureAsset(asset)
125
125
  const j4 = asset.joints.find((j: any) => j.id === 'j4')
126
- return serializeFigureAsset(applyFigureAuthoring(asset, { kind: 'set-joint', joint: { ...j4, axis: j4Axis } }))
126
+ return serializeFigureAsset(applyFigureAuthoring(asset, { kind: 'set-joint', joint: { ...j4, motion: [{ ...j4.motion[0], axis: j4Axis }] } }))
127
127
  }
128
- it('schema 2, the wrist following -(j2 + j3), controls with both units; another axis is refused', async () => {
128
+ it('schema 3, the wrist following -(j2 + j3), controls with both units; another axis is refused', async () => {
129
129
  const domain = await namespaced(await dataSource!.getRepository(shell.Domain).save({ name: 'release-joints', subdomain: 'release-joints' }))
130
130
  const context = { state: { domain, user: undefined, tx: dataSource!.manager } }
131
131
  const figure = await dataSource!.getRepository(Figure).save({ namespace: domain.subdomain, type: 'PALLETIZER', name: 'palletizer', source: palletizer(), state: 'draft', version: 0, domain })
@@ -133,7 +133,7 @@ describe('a release of a figure that moves keeps its joint list', () => {
133
133
 
134
134
  const [row] = await dataSource!.getRepository(FigureHistory).find({ where: { originalId: figure.id } })
135
135
  const list = JSON.parse(row.metrics).joints
136
- expect(list.schema).toBe(2)
136
+ expect(list.schema).toBe(3)
137
137
  const byId = new Map(list.joints.map((j: any) => [j.id, j]))
138
138
  expect(byId.get('wrist')).toMatchObject({
139
139
  type: 'revolute',