@things-factory/figure-service 10.1.74 → 10.1.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist-server/service/figure/figure-format.d.ts +6 -6
- package/dist-server/service/figure/figure-format.js +32 -32
- package/dist-server/service/figure/figure-format.js.map +1 -1
- package/dist-server/service/figure/figure-history.js +1 -1
- package/dist-server/service/figure/figure-history.js.map +1 -1
- package/dist-server/service/figure/figure-mutation.d.ts +1 -1
- package/dist-server/service/figure/figure-mutation.js +12 -12
- package/dist-server/service/figure/figure-mutation.js.map +1 -1
- package/dist-server/service/figure/{figure-propose-v3.d.ts → figure-propose-steps.d.ts} +16 -16
- package/dist-server/service/figure/{figure-propose-v3.js → figure-propose-steps.js} +27 -27
- package/dist-server/service/figure/figure-propose-steps.js.map +1 -0
- package/dist-server/service/figure/figure-propose-type.js +3 -3
- package/dist-server/service/figure/figure-propose-type.js.map +1 -1
- package/dist-server/service/figure/figure-query.d.ts +2 -2
- package/dist-server/service/figure/figure-query.js +5 -5
- package/dist-server/service/figure/figure-query.js.map +1 -1
- package/dist-server/service/figure/figure-tools.js +14 -14
- package/dist-server/service/figure/figure-tools.js.map +1 -1
- package/dist-server/service/figure/figure-type.js +2 -2
- package/dist-server/service/figure/figure-type.js.map +1 -1
- package/dist-server/service/figure/{figure-v3-write.d.ts → figure-write.d.ts} +3 -3
- package/dist-server/service/figure/{figure-v3-write.js → figure-write.js} +10 -10
- package/dist-server/service/figure/figure-write.js.map +1 -0
- package/dist-server/service/figure/figure.d.ts +2 -2
- package/dist-server/service/figure/figure.js +2 -2
- package/dist-server/service/figure/figure.js.map +1 -1
- package/dist-server/service/figure-recipe/figure-recipe-templates.d.ts +2 -2
- package/dist-server/service/figure-recipe/figure-recipe-templates.js +1 -1
- package/dist-server/service/figure-recipe/figure-recipe-templates.js.map +1 -1
- package/dist-server/service/figure-recipe/figure-recipe-type.js +1 -1
- package/dist-server/service/figure-recipe/figure-recipe-type.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/recipes/_lib/model.mts +19 -19
- package/recipes/air-cylinder/models/default.json +1 -1
- package/recipes/air-shower/models/default.json +1 -1
- package/recipes/barrier-gate/models/default.json +1 -1
- package/recipes/base-frame/models/default.json +1 -1
- package/recipes/belt-surface/models/default.json +1 -1
- package/recipes/bin-row/models/default.json +1 -1
- package/recipes/bollard-row/models/default.json +1 -1
- package/recipes/buzzer/models/default.json +1 -1
- package/recipes/cabinet-doors/models/default.json +1 -1
- package/recipes/cabinet-doors/models/doors=1.json +1 -1
- package/recipes/cabinet-doors/models/doors=2.json +1 -1
- package/recipes/cable-tray/models/default.json +1 -1
- package/recipes/camera-mount/models/default.json +1 -1
- package/recipes/canopy/models/default.json +1 -1
- package/recipes/cart/models/default.json +1 -1
- package/recipes/cart-handle/models/default.json +1 -1
- package/recipes/casters-four/models/default.json +1 -1
- package/recipes/ceiling-rail-carriage/models/default.json +1 -1
- package/recipes/chain-rails/models/default.json +1 -1
- package/recipes/charging-station/models/default.json +1 -1
- package/recipes/column-row/models/default.json +1 -1
- package/recipes/control-cabinet/models/default.json +1 -1
- package/recipes/conveyor-skirts/models/default.json +1 -1
- package/recipes/counter-display/models/default.json +1 -1
- package/recipes/dock-bumpers/models/default.json +1 -1
- package/recipes/dock-leveler/models/default.json +1 -1
- package/recipes/double-hinged-door/models/default.json +1 -1
- package/recipes/drawer-stack/models/default.json +1 -1
- package/recipes/drawer-stack/models/drawers=2.json +1 -1
- package/recipes/drawer-stack/models/drawers=3.json +1 -1
- package/recipes/drawer-stack/models/drawers=4.json +1 -1
- package/recipes/drip-tray/models/default.json +1 -1
- package/recipes/duct-fan/models/default.json +1 -1
- package/recipes/emergency-stop/models/default.json +1 -1
- package/recipes/end-covers/models/default.json +1 -1
- package/recipes/ffu-row/models/default.json +1 -1
- package/recipes/fire-extinguisher/models/default.json +1 -1
- package/recipes/first-aid-box/models/default.json +1 -1
- package/recipes/floor-zone/models/default.json +1 -1
- package/recipes/folding-door/models/default.json +1 -1
- package/recipes/fork/models/default.json +1 -1
- package/recipes/gantry-frame/models/default.json +1 -1
- package/recipes/gripper-2f/models/default.json +1 -1
- package/recipes/guard-cover/models/default.json +1 -1
- package/recipes/handrail/models/default.json +1 -1
- package/recipes/hatch/models/default.json +1 -1
- package/recipes/hinged-door/models/default.json +1 -1
- package/recipes/hinged-door/models/hinge=left.json +1 -1
- package/recipes/hinged-door/models/hinge=right.json +1 -1
- package/recipes/hmi-monitor/models/default.json +1 -1
- package/recipes/hopper/models/default.json +1 -1
- package/recipes/interlock-switch/models/default.json +1 -1
- package/recipes/junction-box/models/default.json +1 -1
- package/recipes/ladder/models/default.json +1 -1
- package/recipes/legs-four/models/default.json +1 -1
- package/recipes/leveling-feet/models/default.json +1 -1
- package/recipes/lift-updown/models/default.json +1 -1
- package/recipes/light-curtain/models/default.json +1 -1
- package/recipes/limit-switch/models/default.json +1 -1
- package/recipes/linear-guide/models/default.json +1 -1
- package/recipes/locker-row/models/default.json +1 -1
- package/recipes/motor-box/models/default.json +1 -1
- package/recipes/observation-window/models/default.json +1 -1
- package/recipes/operator-panel/models/buttons=2.json +1 -1
- package/recipes/operator-panel/models/buttons=3.json +1 -1
- package/recipes/operator-panel/models/buttons=4.json +1 -1
- package/recipes/operator-panel/models/buttons=5.json +1 -1
- package/recipes/operator-panel/models/default.json +1 -1
- package/recipes/pallet/models/default.json +1 -1
- package/recipes/partition-wall/models/default.json +1 -1
- package/recipes/pass-box/models/default.json +1 -1
- package/recipes/peg-board/models/default.json +1 -1
- package/recipes/photo-sensor-pair/models/default.json +1 -1
- package/recipes/pipe-run/models/default.json +1 -1
- package/recipes/platform/models/default.json +1 -1
- package/recipes/power-box/models/default.json +1 -1
- package/recipes/pressure-gauge/models/default.json +1 -1
- package/recipes/pull-cord/models/default.json +1 -1
- package/recipes/pump/models/default.json +1 -1
- package/recipes/pusher/models/default.json +1 -1
- package/recipes/robot-plinth/models/default.json +1 -1
- package/recipes/roll-up-shutter/models/default.json +1 -1
- package/recipes/roller-row/models/default.json +1 -1
- package/recipes/room-shell/models/default.json +1 -1
- package/recipes/rotating-beacon/models/default.json +1 -1
- package/recipes/safety-fence/models/default.json +1 -1
- package/recipes/safety-mat/models/default.json +1 -1
- package/recipes/safety-sign-stand/models/default.json +1 -1
- package/recipes/scanner-mount/models/default.json +1 -1
- package/recipes/selector-switch/models/default.json +1 -1
- package/recipes/shelf-tiers/models/default.json +1 -1
- package/recipes/shelf-tiers/models/tiers=2.json +1 -1
- package/recipes/shelf-tiers/models/tiers=3.json +1 -1
- package/recipes/shelf-tiers/models/tiers=4.json +1 -1
- package/recipes/shelf-tiers/models/tiers=5.json +1 -1
- package/recipes/side-guides/models/default.json +1 -1
- package/recipes/sign-board/models/default.json +1 -1
- package/recipes/signal-tower-3/models/default.json +1 -1
- package/recipes/sliding-door/models/default.json +1 -1
- package/recipes/sliding-door/models/leaves=1,lamp=false.json +1 -1
- package/recipes/sliding-door/models/leaves=1,lamp=true.json +1 -1
- package/recipes/sliding-door/models/leaves=2,lamp=false.json +1 -1
- package/recipes/sliding-door/models/leaves=2,lamp=true.json +1 -1
- package/recipes/stairs/models/default.json +1 -1
- package/recipes/status-lamp/models/default.json +1 -1
- package/recipes/stopper/models/default.json +1 -1
- package/recipes/suction-pads/models/default.json +1 -1
- package/recipes/tank/models/default.json +1 -1
- package/recipes/telescopic-arm/models/default.json +1 -1
- package/recipes/toe-board/models/default.json +1 -1
- package/recipes/tote/models/default.json +1 -1
- package/recipes/traffic-cones/models/default.json +1 -1
- package/recipes/transfer-belts/models/default.json +1 -1
- package/recipes/tray-stack/models/default.json +1 -1
- package/recipes/tray-stack/models/trays=3.json +1 -1
- package/recipes/tray-stack/models/trays=4.json +1 -1
- package/recipes/tray-stack/models/trays=5.json +1 -1
- package/recipes/trough/models/default.json +1 -1
- package/recipes/turntable/models/default.json +1 -1
- package/recipes/valve-handle/models/default.json +1 -1
- package/recipes/waste-bin/models/default.json +1 -1
- package/recipes/work-light/models/default.json +1 -1
- package/recipes/workbench-top/models/default.json +1 -1
- package/scripts/build-templates.mts +7 -7
- package/scripts/templates.test.mts +16 -16
- package/server/service/figure/figure-blueprint-query.test.ts +3 -3
- package/server/service/figure/figure-format.test.ts +57 -57
- package/server/service/figure/figure-format.ts +39 -39
- package/server/service/figure/figure-history.ts +1 -1
- package/server/service/figure/figure-inspect-db.test.ts +14 -14
- package/server/service/figure/figure-llm-smoke.test.ts +7 -7
- package/server/service/figure/figure-mutation.ts +12 -12
- package/server/service/figure/{figure-propose-v3.test.ts → figure-propose-steps.test.ts} +18 -18
- package/server/service/figure/{figure-propose-v3.ts → figure-propose-steps.ts} +33 -33
- package/server/service/figure/figure-propose-type.ts +3 -3
- package/server/service/figure/figure-query.ts +5 -5
- package/server/service/figure/figure-rename-db.test.ts +5 -5
- package/server/service/figure/figure-rename.test.ts +7 -7
- package/server/service/figure/figure-tools.test.ts +22 -22
- package/server/service/figure/figure-tools.ts +14 -14
- package/server/service/figure/figure-type.ts +2 -2
- package/server/service/figure/{figure-v3-write.ts → figure-write.ts} +10 -10
- package/server/service/figure/figure.ts +3 -3
- package/server/service/figure-recipe/figure-recipe-templates.test.ts +2 -2
- package/server/service/figure-recipe/figure-recipe-templates.ts +4 -4
- package/server/service/figure-recipe/figure-recipe-type.ts +1 -1
- package/translations/en.json +2 -3
- package/translations/ko.json +2 -3
- package/dist-server/service/figure/figure-propose-v3.js.map +0 -1
- package/dist-server/service/figure/figure-v3-write.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"figure-
|
|
1
|
+
{"version":"figure-asset-1","name":"TPL_TROUGH","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":"trough.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"trough.dimension.depth","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"trough.dimension.roundX","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"trough.dimension.roundZ","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"trough.dimension.wallX","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"trough.dimension.wallZ","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"trough.dimension.floor","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"}],"constants":[{"id":"d.mm.0","unit":"mm","value":0},{"id":"a.deg.0","unit":"deg","value":0},{"id":"k.ratio.0_5","unit":"ratio","value":0.5},{"id":"k.ratio.1","unit":"ratio","value":1}],"nodes":[{"id":"host.shape","op":"box-shape@1","args":["host.dimension.x.value","host.size.y","host.size.z"],"outputs":{"shape":"host.shapeValue"},"params":{"frame":"host.local"}},{"id":"host.pose","op":"rigid@1","args":["d.mm.0","host.on.plane.stand.y.1.sum.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":"trough.shape","op":"hollow-box@2","args":["trough.dimension.x.value","trough.dimension.height","trough.dimension.depth","trough.dimension.roundX","trough.dimension.roundZ","trough.dimension.wallX","trough.dimension.wallZ","trough.dimension.floor"],"outputs":{"shape":"trough.shapeValue"},"params":{"frame":"trough.local"}},{"id":"trough.pose","op":"rigid@1","args":["d.mm.0","trough.on.host.along.y.1.sum.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"trough.poseValue"},"params":{"from":"trough.local","to":"trough.seat"}},{"id":"trough","op":"place@1","args":["trough.shapeValue","trough.world.value"],"outputs":{"placed":"trough.placed"}},{"id":"trough.dimension.x","op":"mul@1","args":["host.dimension.x.value","k.ratio.1"],"outputs":{"value":"trough.dimension.x.value"}},{"id":"host.dimension.x","op":"mul@1","args":["host.size.x","k.ratio.1"],"outputs":{"value":"host.dimension.x.value"}},{"id":"host.on.plane.stand.y.0.times","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"host.on.plane.stand.y.0.times.value"}},{"id":"host.on.plane.stand.y.1.sum","op":"add@1","args":["host.on.plane.stand.y.0.times.value","d.mm.0"],"outputs":{"value":"host.on.plane.stand.y.1.sum.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":"trough.on.host.seat.y.0.times","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"trough.on.host.seat.y.0.times.value"}},{"id":"trough.on.host.along.y.0.times","op":"mul@1","args":["trough.dimension.height","k.ratio.0_5"],"outputs":{"value":"trough.on.host.along.y.0.times.value"}},{"id":"trough.on.host.along.y.1.sum","op":"add@1","args":["trough.on.host.along.y.0.times.value","d.mm.0"],"outputs":{"value":"trough.on.host.along.y.1.sum.value"}},{"id":"trough.seat.rigid","op":"rigid@1","args":["d.mm.0","trough.on.host.seat.y.0.times.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"trough.seat.value"},"params":{"from":"trough.seat","to":"host.local"}},{"id":"trough.chain","op":"compose@1","args":["trough.seat.value","trough.poseValue"],"outputs":{"pose":"trough.chain.value"}},{"id":"trough.world","op":"compose@1","args":["host.chain.value","trough.chain.value"],"outputs":{"pose":"trough.world.value"}}]},"capabilities":{"version":"r3-capability-3","assetFrame":"asset","bindings":[]}},"designInputs":{"host.size.x":3000,"host.size.y":700,"host.size.z":800,"trough.dimension.height":150,"trough.dimension.depth":300,"trough.dimension.roundX":0,"trough.dimension.roundZ":0,"trough.dimension.wallX":8,"trough.dimension.wallZ":8,"trough.dimension.floor":8},"stateDefaults":{},"palette":{"palette.primary":"#477b9e","palette.host":"#d9dde2","palette.tpl-b8c1c9":"#b8c1c9"},"appearance":[{"target":"host","material":{"token":"palette.host"}},{"target":"trough","material":{"token":"palette.tpl-b8c1c9"}}],"joints":[{"id":"host","type":"fixed","body0":{"plane":"mounting-plane"},"body1":{"part":"host","face":"bottom"},"origin":{}},{"id":"trough","type":"fixed","body0":{"part":"host","face":"top"},"body1":{"part":"trough","face":"bottom"},"origin":{}}]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"figure-
|
|
1
|
+
{"version":"figure-asset-1","name":"TPL_TURNTABLE","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":"disc.dimension.length","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"mark.dimension.width","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"mark.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"mark.dimension.depth","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"turn","unit":"deg","min":-180,"max":180,"role":"state"}],"constants":[{"id":"d.mm.0","unit":"mm","value":0},{"id":"a.deg.0","unit":"deg","value":0},{"id":"k.ratio.0_5","unit":"ratio","value":0.5},{"id":"k.ratio.1","unit":"ratio","value":1},{"id":"k.ratio.0_45","unit":"ratio","value":0.45},{"id":"axis.ratio.0","unit":"ratio","value":0},{"id":"k.ratio._0_5","unit":"ratio","value":-0.5}],"nodes":[{"id":"host.shape","op":"box-shape@1","args":["host.size.x","host.size.y","host.dimension.z.value"],"outputs":{"shape":"host.shapeValue"},"params":{"frame":"host.local"}},{"id":"host.pose","op":"rigid@1","args":["d.mm.0","host.on.plane.stand.y.1.sum.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":"disc.shape","op":"cylinder-shape@1","args":["disc.dimension.x.value","disc.dimension.length"],"outputs":{"shape":"disc.shapeValue"},"params":{"frame":"disc.local"}},{"id":"disc.pose","op":"rigid@1","args":["d.mm.0","disc.on.host.along.y.1.sum.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"disc.poseValue"},"params":{"from":"disc.local","to":"disc.seat"}},{"id":"disc","op":"place@1","args":["disc.shapeValue","disc.world.value"],"outputs":{"placed":"disc.placed"}},{"id":"disc.dimension.x","op":"mul@1","args":["disc.x.follows.times.value","k.ratio.1"],"outputs":{"value":"disc.dimension.x.value"}},{"id":"host.dimension.z","op":"mul@1","args":["host.size.z","k.ratio.1"],"outputs":{"value":"host.dimension.z.value"}},{"id":"disc.x.follows.times","op":"mul@1","args":["host.dimension.z.value","k.ratio.0_45"],"outputs":{"value":"disc.x.follows.times.value"}},{"id":"mark.shape","op":"box-shape@1","args":["mark.dimension.width","mark.dimension.height","mark.dimension.depth"],"outputs":{"shape":"mark.shapeValue"},"params":{"frame":"mark.local"}},{"id":"mark.pose","op":"rigid@1","args":["mark.on.disc.own-edge.x.0.times.value","mark.on.disc.along.y.1.sum.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"mark.poseValue"},"params":{"from":"mark.local","to":"mark.seat"}},{"id":"mark","op":"place@1","args":["mark.shapeValue","mark.world.value"],"outputs":{"placed":"mark.placed"}},{"id":"host.on.plane.stand.y.0.times","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"host.on.plane.stand.y.0.times.value"}},{"id":"host.on.plane.stand.y.1.sum","op":"add@1","args":["host.on.plane.stand.y.0.times.value","d.mm.0"],"outputs":{"value":"host.on.plane.stand.y.1.sum.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":"disc.on.host.seat.y.0.times","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"disc.on.host.seat.y.0.times.value"}},{"id":"disc.on.host.along.y.0.times","op":"mul@1","args":["disc.dimension.length","k.ratio.0_5"],"outputs":{"value":"disc.on.host.along.y.0.times.value"}},{"id":"disc.on.host.along.y.1.sum","op":"add@1","args":["disc.on.host.along.y.0.times.value","d.mm.0"],"outputs":{"value":"disc.on.host.along.y.1.sum.value"}},{"id":"disc.seat.rigid","op":"rigid@1","args":["d.mm.0","disc.on.host.seat.y.0.times.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"disc.seat.value"},"params":{"from":"disc.joint","to":"host.local"}},{"id":"disc.chain","op":"compose@1","args":["disc.seat.value","disc.turned.value"],"outputs":{"pose":"disc.chain.value"}},{"id":"disc.world","op":"compose@1","args":["host.chain.value","disc.chain.value"],"outputs":{"pose":"disc.world.value"}},{"id":"disc.motion","op":"axis-turn@1","args":["axis.ratio.0","k.ratio.1","axis.ratio.0","turn"],"outputs":{"pose":"disc.motion.value"},"params":{"from":"disc.seat","to":"disc.joint"}},{"id":"disc.turned","op":"compose@1","args":["disc.motion.value","disc.poseValue"],"outputs":{"pose":"disc.turned.value"}},{"id":"mark.on.disc.seat.y.0.times","op":"mul@1","args":["disc.dimension.length","k.ratio.0_5"],"outputs":{"value":"mark.on.disc.seat.y.0.times.value"}},{"id":"mark.on.disc.along.y.0.times","op":"mul@1","args":["mark.dimension.height","k.ratio.0_5"],"outputs":{"value":"mark.on.disc.along.y.0.times.value"}},{"id":"mark.on.disc.along.y.1.sum","op":"add@1","args":["mark.on.disc.along.y.0.times.value","d.mm.0"],"outputs":{"value":"mark.on.disc.along.y.1.sum.value"}},{"id":"mark.on.disc.own-edge.x.0.times","op":"mul@1","args":["mark.dimension.width","k.ratio._0_5"],"outputs":{"value":"mark.on.disc.own-edge.x.0.times.value"}},{"id":"mark.seat.rigid","op":"rigid@1","args":["disc.dimension.x.value","mark.on.disc.seat.y.0.times.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"mark.seat.value"},"params":{"from":"mark.seat","to":"disc.local"}},{"id":"mark.chain","op":"compose@1","args":["mark.seat.value","mark.poseValue"],"outputs":{"pose":"mark.chain.value"}},{"id":"mark.world","op":"compose@1","args":["disc.world.value","mark.chain.value"],"outputs":{"pose":"mark.world.value"}}]},"capabilities":{"version":"r3-capability-3","assetFrame":"asset","bindings":[]}},"designInputs":{"host.size.x":1200,"host.size.y":700,"host.size.z":1200,"disc.dimension.length":40,"mark.dimension.width":400,"mark.dimension.height":10,"mark.dimension.depth":60},"stateDefaults":{"turn":0},"palette":{"palette.primary":"#477b9e","palette.host":"#d9dde2","palette.tpl-6c8ea8":"#6c8ea8","palette.tpl-e0a800":"#e0a800"},"appearance":[{"target":"host","material":{"token":"palette.host"}},{"target":"disc","material":{"token":"palette.tpl-6c8ea8"},"segments":12},{"target":"mark","material":{"token":"palette.tpl-e0a800"}}],"joints":[{"id":"host","type":"fixed","body0":{"plane":"mounting-plane"},"body1":{"part":"host","face":"bottom"},"origin":{}},{"id":"disc","type":"revolute","body0":{"part":"host","face":"top"},"body1":{"part":"disc","face":"bottom"},"origin":{},"axis":"Y","lowerLimit":-180,"upperLimit":180,"state":{"id":"turn"}},{"id":"mark","type":"fixed","body0":{"part":"disc","face":"top"},"body1":{"part":"mark","face":"bottom"},"origin":{"align":{"x":"max"}}}]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"figure-
|
|
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":"d.mm.0","unit":"mm","value":0},{"id":"a.deg.0","unit":"deg","value":0},{"id":"k.ratio.0_5","unit":"ratio","value":0.5},{"id":"axis.ratio.0","unit":"ratio","value":0},{"id":"axis.ratio.1","unit":"ratio","value":1}],"nodes":[{"id":"host.shape","op":"box-shape@1","args":["host.size.x","host.size.y","host.size.z"],"outputs":{"shape":"host.shapeValue"},"params":{"frame":"host.local"}},{"id":"host.pose","op":"rigid@1","args":["d.mm.0","host.on.plane.stand.y.1.sum.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":"box-shape@1","args":["body.dimension.width","body.dimension.height","body.dimension.depth"],"outputs":{"shape":"body.shapeValue"},"params":{"frame":"body.local"}},{"id":"body.pose","op":"rigid@1","args":["d.mm.0","body.on.host.along.y.1.sum.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":"stem.shape","op":"cylinder-shape@1","args":["stem.dimension.radius","stem.dimension.length"],"outputs":{"shape":"stem.shapeValue"},"params":{"frame":"stem.local"}},{"id":"stem.pose","op":"rigid@1","args":["d.mm.0","stem.on.body.along.y.1.sum.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":"wheel.shape","op":"cylinder-shape@1","args":["wheel.dimension.radius","wheel.dimension.length"],"outputs":{"shape":"wheel.shapeValue"},"params":{"frame":"wheel.local"}},{"id":"wheel.pose","op":"rigid@1","args":["d.mm.0","wheel.on.stem.along.y.1.sum.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":"host.on.plane.stand.y.0.times","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"host.on.plane.stand.y.0.times.value"}},{"id":"host.on.plane.stand.y.1.sum","op":"add@1","args":["host.on.plane.stand.y.0.times.value","d.mm.0"],"outputs":{"value":"host.on.plane.stand.y.1.sum.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.0.times","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"body.on.host.seat.y.0.times.value"}},{"id":"body.on.host.along.y.0.times","op":"mul@1","args":["body.dimension.height","k.ratio.0_5"],"outputs":{"value":"body.on.host.along.y.0.times.value"}},{"id":"body.on.host.along.y.1.sum","op":"add@1","args":["body.on.host.along.y.0.times.value","d.mm.0"],"outputs":{"value":"body.on.host.along.y.1.sum.value"}},{"id":"body.seat.rigid","op":"rigid@1","args":["d.mm.0","body.on.host.seat.y.0.times.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.0.times","op":"mul@1","args":["body.dimension.height","k.ratio.0_5"],"outputs":{"value":"stem.on.body.seat.y.0.times.value"}},{"id":"stem.on.body.along.y.0.times","op":"mul@1","args":["stem.dimension.length","k.ratio.0_5"],"outputs":{"value":"stem.on.body.along.y.0.times.value"}},{"id":"stem.on.body.along.y.1.sum","op":"add@1","args":["stem.on.body.along.y.0.times.value","d.mm.0"],"outputs":{"value":"stem.on.body.along.y.1.sum.value"}},{"id":"stem.seat.rigid","op":"rigid@1","args":["d.mm.0","stem.on.body.seat.y.0.times.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.0.times","op":"mul@1","args":["stem.dimension.length","k.ratio.0_5"],"outputs":{"value":"wheel.on.stem.seat.y.0.times.value"}},{"id":"wheel.on.stem.along.y.0.times","op":"mul@1","args":["wheel.dimension.length","k.ratio.0_5"],"outputs":{"value":"wheel.on.stem.along.y.0.times.value"}},{"id":"wheel.on.stem.along.y.1.sum","op":"add@1","args":["wheel.on.stem.along.y.0.times.value","d.mm.0"],"outputs":{"value":"wheel.on.stem.along.y.1.sum.value"}},{"id":"wheel.seat.rigid","op":"rigid@1","args":["d.mm.0","wheel.on.stem.seat.y.0.times.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","face":"bottom"},"origin":{}},{"id":"body","type":"fixed","body0":{"part":"host","face":"top"},"body1":{"part":"body","face":"bottom"},"origin":{}},{"id":"stem","type":"fixed","body0":{"part":"body","face":"top"},"body1":{"part":"stem","face":"bottom"},"origin":{}},{"id":"wheel","type":"revolute","body0":{"part":"stem","face":"top"},"body1":{"part":"wheel","face":"bottom"},"origin":{},"axis":"Y","lowerLimit":0,"upperLimit":360,"state":{"id":"turn"}}]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"figure-
|
|
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":"d.mm.0","unit":"mm","value":0},{"id":"a.deg.0","unit":"deg","value":0},{"id":"k.ratio.0_5","unit":"ratio","value":0.5}],"nodes":[{"id":"host.shape","op":"box-shape@1","args":["host.size.x","host.size.y","host.size.z"],"outputs":{"shape":"host.shapeValue"},"params":{"frame":"host.local"}},{"id":"host.pose","op":"rigid@1","args":["d.mm.0","host.on.plane.stand.y.1.sum.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":"hollow-box@2","args":["bin.dimension.width","bin.dimension.height","bin.dimension.depth","bin.dimension.roundX","bin.dimension.roundZ","bin.dimension.wallX","bin.dimension.wallZ","bin.dimension.floor"],"outputs":{"shape":"bin.shapeValue"},"params":{"frame":"bin.local"}},{"id":"bin.pose","op":"rigid@1","args":["d.mm.0","bin.on.host.along.y.1.sum.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":"host.on.plane.stand.y.0.times","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"host.on.plane.stand.y.0.times.value"}},{"id":"host.on.plane.stand.y.1.sum","op":"add@1","args":["host.on.plane.stand.y.0.times.value","d.mm.0"],"outputs":{"value":"host.on.plane.stand.y.1.sum.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.0.times","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"bin.on.host.seat.y.0.times.value"}},{"id":"bin.on.host.along.y.0.times","op":"mul@1","args":["bin.dimension.height","k.ratio.0_5"],"outputs":{"value":"bin.on.host.along.y.0.times.value"}},{"id":"bin.on.host.along.y.1.sum","op":"add@1","args":["bin.on.host.along.y.0.times.value","d.mm.0"],"outputs":{"value":"bin.on.host.along.y.1.sum.value"}},{"id":"bin.seat.rigid","op":"rigid@1","args":["d.mm.0","bin.on.host.seat.y.0.times.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","face":"bottom"},"origin":{}},{"id":"bin","type":"fixed","body0":{"part":"host","face":"top"},"body1":{"part":"bin","face":"bottom"},"origin":{}}]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"figure-
|
|
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":"d.mm.0","unit":"mm","value":0},{"id":"a.deg.0","unit":"deg","value":0},{"id":"k.ratio.0_5","unit":"ratio","value":0.5},{"id":"k.ratio._0_5","unit":"ratio","value":-0.5},{"id":"k.ratio._1","unit":"ratio","value":-1},{"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.shape","op":"box-shape@1","args":["host.size.x","host.size.y","host.size.z"],"outputs":{"shape":"host.shapeValue"},"params":{"frame":"host.local"}},{"id":"host.pose","op":"rigid@1","args":["d.mm.0","host.on.plane.stand.y.1.sum.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":"box-shape@1","args":["arm.dimension.width","arm.dimension.height","arm.dimension.depth"],"outputs":{"shape":"arm.shapeValue"},"params":{"frame":"arm.local"}},{"id":"arm.pose","op":"rigid@1","args":["d.mm.0","arm.on.host.along.y.1.sum.value","arm.on.host.own-edge.z.0.times.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":"head.shape","op":"box-shape@1","args":["head.dimension.width","head.dimension.height","head.dimension.depth"],"outputs":{"shape":"head.shapeValue"},"params":{"frame":"head.local"}},{"id":"head.pose","op":"rigid@1","args":["d.mm.0","head.on.arm.along.y.1.sum.value","head.on.arm.own-edge.z.0.times.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":"light.shape","op":"box-shape@1","args":["light.dimension.width","light.dimension.height","light.dimension.depth"],"outputs":{"shape":"light.shapeValue"},"params":{"frame":"light.local"}},{"id":"light.pose","op":"rigid@1","args":["d.mm.0","light.on.head.along.y.1.sum.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":"host.on.plane.stand.y.0.times","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"host.on.plane.stand.y.0.times.value"}},{"id":"host.on.plane.stand.y.1.sum","op":"add@1","args":["host.on.plane.stand.y.0.times.value","d.mm.0"],"outputs":{"value":"host.on.plane.stand.y.1.sum.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.0.times","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"arm.on.host.seat.y.0.times.value"}},{"id":"arm.on.host.along.y.0.times","op":"mul@1","args":["arm.dimension.height","k.ratio.0_5"],"outputs":{"value":"arm.on.host.along.y.0.times.value"}},{"id":"arm.on.host.along.y.1.sum","op":"add@1","args":["arm.on.host.along.y.0.times.value","d.mm.0"],"outputs":{"value":"arm.on.host.along.y.1.sum.value"}},{"id":"arm.on.host.edge.z.0.times","op":"mul@1","args":["host.size.z","k.ratio._0_5"],"outputs":{"value":"arm.on.host.edge.z.0.times.value"}},{"id":"arm.on.host.own-edge.z.0.times","op":"mul@1","args":["arm.dimension.depth","k.ratio.0_5"],"outputs":{"value":"arm.on.host.own-edge.z.0.times.value"}},{"id":"arm.seat.rigid","op":"rigid@1","args":["d.mm.0","arm.on.host.seat.y.0.times.value","arm.on.host.edge.z.0.times.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.0.times","op":"mul@1","args":["arm.dimension.height","k.ratio.0_5"],"outputs":{"value":"head.on.arm.seat.y.0.times.value"}},{"id":"head.on.arm.along.y.0.times","op":"mul@1","args":["head.dimension.height","k.ratio.0_5"],"outputs":{"value":"head.on.arm.along.y.0.times.value"}},{"id":"head.on.arm.along.y.1.sum","op":"add@1","args":["head.on.arm.along.y.0.times.value","d.mm.0"],"outputs":{"value":"head.on.arm.along.y.1.sum.value"}},{"id":"head.on.arm.edge.z.0.times","op":"mul@1","args":["arm.dimension.depth","k.ratio._0_5"],"outputs":{"value":"head.on.arm.edge.z.0.times.value"}},{"id":"head.on.arm.own-edge.z.0.times","op":"mul@1","args":["head.dimension.depth","k.ratio.0_5"],"outputs":{"value":"head.on.arm.own-edge.z.0.times.value"}},{"id":"head.seat.rigid","op":"rigid@1","args":["d.mm.0","head.on.arm.seat.y.0.times.value","head.on.arm.edge.z.0.times.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.0.times","op":"mul@1","args":["head.dimension.height","k.ratio._0_5"],"outputs":{"value":"light.on.head.seat.y.0.times.value"}},{"id":"light.on.head.along.y.0.times","op":"mul@1","args":["light.dimension.height","k.ratio._0_5"],"outputs":{"value":"light.on.head.along.y.0.times.value"}},{"id":"light.on.head.along.y.1.times","op":"mul@1","args":["d.mm.0","k.ratio._1"],"outputs":{"value":"light.on.head.along.y.1.times.value"}},{"id":"light.on.head.along.y.1.sum","op":"add@1","args":["light.on.head.along.y.0.times.value","light.on.head.along.y.1.times.value"],"outputs":{"value":"light.on.head.along.y.1.sum.value"}},{"id":"light.seat.rigid","op":"rigid@1","args":["d.mm.0","light.on.head.seat.y.0.times.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","face":"bottom"},"origin":{}},{"id":"arm","type":"fixed","body0":{"part":"host","face":"top"},"body1":{"part":"arm","face":"bottom"},"origin":{"align":{"z":"min"}}},{"id":"head","type":"fixed","body0":{"part":"arm","face":"top"},"body1":{"part":"head","face":"bottom"},"origin":{"align":{"z":"min"}}},{"id":"light","type":"prismatic","body0":{"part":"head","face":"bottom"},"body1":{"part":"light","face":"top"},"origin":{},"axis":"Y","lowerLimit":0,"upperLimit":0.001,"state":{"id":"on"}}]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"figure-
|
|
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":"d.mm.0","unit":"mm","value":0},{"id":"a.deg.0","unit":"deg","value":0},{"id":"k.ratio.0_5","unit":"ratio","value":0.5},{"id":"k.ratio.1","unit":"ratio","value":1}],"nodes":[{"id":"host.shape","op":"box-shape@1","args":["host.dimension.x.value","host.size.y","host.dimension.z.value"],"outputs":{"shape":"host.shapeValue"},"params":{"frame":"host.local"}},{"id":"host.pose","op":"rigid@1","args":["d.mm.0","host.on.plane.stand.y.1.sum.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":"box-shape@1","args":["top.dimension.x.value","top.dimension.height","top.dimension.z.value"],"outputs":{"shape":"top.shapeValue"},"params":{"frame":"top.local"}},{"id":"top.pose","op":"rigid@1","args":["d.mm.0","top.on.host.along.y.1.sum.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.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.stand.y.0.times","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"host.on.plane.stand.y.0.times.value"}},{"id":"host.on.plane.stand.y.1.sum","op":"add@1","args":["host.on.plane.stand.y.0.times.value","d.mm.0"],"outputs":{"value":"host.on.plane.stand.y.1.sum.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.0.times","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"top.on.host.seat.y.0.times.value"}},{"id":"top.on.host.along.y.0.times","op":"mul@1","args":["top.dimension.height","k.ratio.0_5"],"outputs":{"value":"top.on.host.along.y.0.times.value"}},{"id":"top.on.host.along.y.1.sum","op":"add@1","args":["top.on.host.along.y.0.times.value","d.mm.0"],"outputs":{"value":"top.on.host.along.y.1.sum.value"}},{"id":"top.seat.rigid","op":"rigid@1","args":["d.mm.0","top.on.host.seat.y.0.times.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","face":"bottom"},"origin":{}},{"id":"top","type":"fixed","body0":{"part":"host","face":"top"},"body1":{"part":"top","face":"bottom"},"origin":{}}]}
|
|
@@ -5,22 +5,22 @@
|
|
|
5
5
|
*
|
|
6
6
|
* For each recipes/<name>/ with build.mts and spec.json: builds a model for every combination of the template's
|
|
7
7
|
* choices (models/<choices>.json, and models/default.json at its defaults) -- figures the modeller opens as they are --
|
|
8
|
-
* then merges them into recipe.json (figure-model `
|
|
8
|
+
* then merges them into recipe.json (figure-model `buildFigureRecipe`). The tests check the models and that recipe.json is
|
|
9
9
|
* what they build; `figure-ui/scripts/template-thumbnails.mjs` draws thumbnail.png from models/default.json.
|
|
10
10
|
*/
|
|
11
11
|
import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs'
|
|
12
12
|
import { join, resolve } from 'node:path'
|
|
13
13
|
import { pathToFileURL } from 'node:url'
|
|
14
14
|
|
|
15
|
-
import {
|
|
16
|
-
import type {
|
|
15
|
+
import { buildFigureRecipe, serializeFigureAsset } from '@hatiolab/figure-model'
|
|
16
|
+
import type { FigureRecipeSpec } from '@hatiolab/figure-model'
|
|
17
17
|
|
|
18
18
|
export const RECIPES = resolve(import.meta.dirname, '..', 'recipes')
|
|
19
19
|
|
|
20
20
|
type Values = Record<string, number | string | boolean>
|
|
21
21
|
|
|
22
22
|
/** Every combination of a spec's choices and flags, the defaults first. */
|
|
23
|
-
export function combinationsOf(spec:
|
|
23
|
+
export function combinationsOf(spec: FigureRecipeSpec): Values[] {
|
|
24
24
|
let combos: Values[] = [{}]
|
|
25
25
|
for (const p of spec.params.filter(p => p.kind === 'choice' || p.kind === 'flag')) {
|
|
26
26
|
const values = p.kind === 'flag' ? [true, false] : [...(p.options ?? [])]
|
|
@@ -36,11 +36,11 @@ export const modelFileOf = (values: Values) => (Object.keys(values).length ? Obj
|
|
|
36
36
|
/** One template built: its models and its recipe, as the files hold them. */
|
|
37
37
|
export async function buildTemplate(name: string) {
|
|
38
38
|
const dir = join(RECIPES, name)
|
|
39
|
-
const spec = JSON.parse(readFileSync(join(dir, 'spec.json'), 'utf-8')) as
|
|
39
|
+
const spec = JSON.parse(readFileSync(join(dir, 'spec.json'), 'utf-8')) as FigureRecipeSpec
|
|
40
40
|
const build = (await import(pathToFileURL(join(dir, 'build.mts')).href)).default as (values: Values) => unknown
|
|
41
41
|
const combos = combinationsOf(spec)
|
|
42
42
|
const models = combos.map(values => ({ values, asset: build(values) as never }))
|
|
43
|
-
const recipe =
|
|
43
|
+
const recipe = buildFigureRecipe(spec, models)
|
|
44
44
|
return { spec, models, recipe, combos }
|
|
45
45
|
}
|
|
46
46
|
|
|
@@ -52,7 +52,7 @@ async function main() {
|
|
|
52
52
|
rmSync(out, { recursive: true, force: true })
|
|
53
53
|
mkdirSync(out)
|
|
54
54
|
models.forEach(({ values, asset }, i) => {
|
|
55
|
-
const text =
|
|
55
|
+
const text = serializeFigureAsset(asset)
|
|
56
56
|
writeFileSync(join(out, modelFileOf(values)), text)
|
|
57
57
|
if (i === 0) writeFileSync(join(out, 'default.json'), text)
|
|
58
58
|
})
|
|
@@ -12,8 +12,8 @@ import assert from 'node:assert/strict'
|
|
|
12
12
|
import { existsSync, readdirSync, readFileSync } from 'node:fs'
|
|
13
13
|
import { join } from 'node:path'
|
|
14
14
|
|
|
15
|
-
import {
|
|
16
|
-
import type {
|
|
15
|
+
import { applyFigureProposal, applyFigureRecipe, checkFigureRecipe, compileFigureAsset, compileFigureDocument, inspectFigureAsset, serializeFigureAsset } from '@hatiolab/figure-model'
|
|
16
|
+
import type { FigureAsset } from '@hatiolab/figure-model'
|
|
17
17
|
|
|
18
18
|
import { buildTemplate, modelFileOf, RECIPES } from './build-templates.mts'
|
|
19
19
|
import { host } from '../recipes/_lib/model.mts'
|
|
@@ -21,8 +21,8 @@ import { host } from '../recipes/_lib/model.mts'
|
|
|
21
21
|
const names = readdirSync(RECIPES).filter(n => !n.startsWith('_') && existsSync(join(RECIPES, n, 'build.mts'))).sort()
|
|
22
22
|
|
|
23
23
|
/** The bodies of a figure, rounded: what a person sees, to compare two figures by. */
|
|
24
|
-
const bodies = (asset:
|
|
25
|
-
(
|
|
24
|
+
const bodies = (asset: FigureAsset, state: Record<string, number> = {}) =>
|
|
25
|
+
(compileFigureAsset(asset).evaluate(state).geometry as unknown as Array<{ id: string; visible?: boolean; pose: { t: number[] }; shape: { dimensions: Record<string, number> } }>)
|
|
26
26
|
.map(g => ({ id: g.id, shown: g.visible !== false, t: g.pose.t.map(v => Math.round(v)), d: Object.fromEntries(Object.entries(g.shape.dimensions).map(([k, v]) => [k, Math.round(v)])) }))
|
|
27
27
|
.sort((a, b) => a.id.localeCompare(b.id))
|
|
28
28
|
/** A model's parts named as a recipe names them, so the two can be laid side by side. */
|
|
@@ -30,39 +30,39 @@ const renamed = (list: ReturnType<typeof bodies>, id: string, parts: string[]) =
|
|
|
30
30
|
list
|
|
31
31
|
.map(b => ({ ...b, id: parts.reduce((text, p) => text.replace(new RegExp(`(^|[^\\w-])${p.replace(/[-]/g, '\\-')}(?=[^\\w-]|$)`, 'g'), `$1${id}-${p}`), b.id) }))
|
|
32
32
|
.sort((a, b) => a.id.localeCompare(b.id))
|
|
33
|
-
const partsOf = (asset:
|
|
33
|
+
const partsOf = (asset: FigureAsset) => asset.appearance.map(a => a.target).filter(t => t !== 'host')
|
|
34
34
|
/** How high the model's host stands off the floor: the new host stands the same. */
|
|
35
|
-
const hostGap = (asset:
|
|
35
|
+
const hostGap = (asset: FigureAsset) => {
|
|
36
36
|
const gap = asset.joints?.find(j => j.body1.part === 'host')?.origin?.gap
|
|
37
37
|
return typeof gap === 'number' ? gap : 0
|
|
38
38
|
}
|
|
39
|
-
const hostSize = (asset:
|
|
40
|
-
const withHost = (asset:
|
|
39
|
+
const hostSize = (asset: FigureAsset) => ({ x: asset.designInputs['host.size.x']!, y: asset.designInputs['host.size.y']!, z: asset.designInputs['host.size.z']! })
|
|
40
|
+
const withHost = (asset: FigureAsset, k: number) => ({ ...asset, designInputs: { ...asset.designInputs, ...Object.fromEntries(['x', 'y', 'z'].map(a => [`host.size.${a}`, asset.designInputs[`host.size.${a}`]! * k])) } })
|
|
41
41
|
|
|
42
42
|
for (const name of names) {
|
|
43
43
|
test(`${name}: the files are what the models build`, async () => {
|
|
44
44
|
const { models, recipe } = await buildTemplate(name)
|
|
45
45
|
assert.deepEqual(JSON.parse(readFileSync(join(RECIPES, name, 'recipe.json'), 'utf-8')), JSON.parse(JSON.stringify(recipe)), 'recipe.json is up to date -- run scripts/build-templates.mts')
|
|
46
|
-
for (const { values, asset } of models) assert.equal(readFileSync(join(RECIPES, name, 'models', modelFileOf(values)), 'utf-8'),
|
|
46
|
+
for (const { values, asset } of models) assert.equal(readFileSync(join(RECIPES, name, 'models', modelFileOf(values)), 'utf-8'), serializeFigureAsset(asset), `models/${modelFileOf(values)} is up to date`)
|
|
47
47
|
})
|
|
48
48
|
|
|
49
49
|
test(`${name}: each model passes the gate, holds at half and twice its host, and moves through its controls`, async () => {
|
|
50
50
|
const { models } = await buildTemplate(name)
|
|
51
51
|
for (const { values, asset } of models) {
|
|
52
52
|
const at = JSON.stringify(values)
|
|
53
|
-
const declared =
|
|
54
|
-
assert.deepEqual(
|
|
55
|
-
for (const k of [0.5, 2]) assert.doesNotThrow(() =>
|
|
53
|
+
const declared = applyFigureProposal(asset, [{ kind: 'fit-room', placement: 'floor' } as never])
|
|
54
|
+
assert.deepEqual(inspectFigureAsset(declared).violations, [], `${at}: the release gate`)
|
|
55
|
+
for (const k of [0.5, 2]) assert.doesNotThrow(() => compileFigureAsset(withHost(asset, k)).evaluate(), `${at}: host × ${k}`)
|
|
56
56
|
for (const input of asset.document.model.inputs.filter(i => i.role === 'state'))
|
|
57
|
-
for (const v of [input.min!, input.max!]) assert.doesNotThrow(() =>
|
|
57
|
+
for (const v of [input.min!, input.max!]) assert.doesNotThrow(() => compileFigureAsset(asset).evaluate({ [input.id]: v }), `${at}: ${input.id} at ${v}`)
|
|
58
58
|
}
|
|
59
59
|
})
|
|
60
60
|
|
|
61
61
|
test(`${name}: the recipe put into a new host shows each model, shut and at every control's end`, async () => {
|
|
62
62
|
const { models, recipe } = await buildTemplate(name)
|
|
63
|
-
assert.doesNotThrow(() =>
|
|
63
|
+
assert.doesNotThrow(() => checkFigureRecipe(structuredClone(recipe)))
|
|
64
64
|
for (const { values, asset } of models) {
|
|
65
|
-
const put =
|
|
65
|
+
const put = applyFigureRecipe(host(hostSize(asset), 'Template check', hostGap(asset)), recipe, { target: 'host', values })
|
|
66
66
|
assert.deepEqual(bodies(put.asset), renamed(bodies(asset), put.id, partsOf(asset)), `${JSON.stringify(values)}: as the model`)
|
|
67
67
|
for (const input of asset.document.model.inputs.filter(i => i.role === 'state'))
|
|
68
68
|
assert.deepEqual(bodies(put.asset, { [`${put.id}-${input.id}`]: input.max! }), renamed(bodies(asset, { [input.id]: input.max! }), put.id, partsOf(asset)), `${JSON.stringify(values)}: ${input.id} at its end`)
|
|
@@ -73,7 +73,7 @@ for (const name of names) {
|
|
|
73
73
|
/* The per-instance evaluator runs again only what changed (2026-09-26); it must answer as a whole evaluation does. */
|
|
74
74
|
const { models } = await buildTemplate(name)
|
|
75
75
|
for (const { values, asset } of models) {
|
|
76
|
-
const plan =
|
|
76
|
+
const plan = compileFigureDocument(asset.document)
|
|
77
77
|
const own = plan.evaluator()
|
|
78
78
|
const base = { ...asset.designInputs, ...asset.stateDefaults }
|
|
79
79
|
const states = asset.document.model.inputs.filter(i => i.role === 'state')
|
|
@@ -30,7 +30,7 @@ const model = require('@hatiolab/figure-model')
|
|
|
30
30
|
|
|
31
31
|
/** A released figure's source: one box, named `part`, `size` mm on each side. */
|
|
32
32
|
const box = (part = 'box-1', size = 100) =>
|
|
33
|
-
model.
|
|
33
|
+
model.serializeFigureAsset(model.addFigureBox(model.createFigureAsset('Test box'), { id: part, size: { x: size, y: size, z: size }, position: { x: 0, y: size / 2, z: 0 } }))
|
|
34
34
|
const sampleSource = box()
|
|
35
35
|
|
|
36
36
|
/** The same box under a different part name, so a test can tell the sources apart. */
|
|
@@ -122,9 +122,9 @@ describe('figureBlueprint 질의 — 소비처(board, twin, things-scene)에 발
|
|
|
122
122
|
const query = new FigureQuery()
|
|
123
123
|
const result = await query.figureBlueprint('RELEASED_FIGURE', makeContext())
|
|
124
124
|
expect(result).not.toBeNull()
|
|
125
|
-
expect(result.format).
|
|
125
|
+
expect(result.format).toBeUndefined()
|
|
126
126
|
expect(result.type).toBe('RELEASED_FIGURE')
|
|
127
|
-
expect(result.asset.version).toBe('figure-
|
|
127
|
+
expect(result.asset.version).toBe('figure-asset-1')
|
|
128
128
|
expect(partsOf(result)).toEqual(['box-1'])
|
|
129
129
|
})
|
|
130
130
|
|