@things-factory/figure-service 10.1.204 → 10.1.205

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/figure-service",
3
- "version": "10.1.204",
3
+ "version": "10.1.205",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "@things-factory:registry": "https://registry.npmjs.org"
@@ -25,18 +25,18 @@
25
25
  "test:templates": "node --test scripts/templates.test.mts"
26
26
  },
27
27
  "dependencies": {
28
- "@hatiolab/figure-model": "^0.9.4",
28
+ "@hatiolab/figure-model": "^0.9.5",
29
29
  "@operato/typeorm-history": "^10.0.0",
30
- "@things-factory/ai-client-base": "^10.1.203",
31
- "@things-factory/attachment-base": "^10.1.203",
32
- "@things-factory/auth-base": "^10.1.203",
30
+ "@things-factory/ai-client-base": "^10.1.205",
31
+ "@things-factory/attachment-base": "^10.1.205",
32
+ "@things-factory/auth-base": "^10.1.205",
33
33
  "@things-factory/env": "^10.1.149",
34
- "@things-factory/setting-base": "^10.1.203",
35
- "@things-factory/shell": "^10.1.188",
34
+ "@things-factory/setting-base": "^10.1.205",
35
+ "@things-factory/shell": "^10.1.205",
36
36
  "graphql-scalars": "^1.22.4",
37
37
  "graphql-upload": "^15.0.2",
38
38
  "jszip": "^3.10.1",
39
39
  "koa-router": "^7.4.0"
40
40
  },
41
- "gitHead": "b85c845b52c08389413c0038b2b3b4b4f952ada1"
41
+ "gitHead": "7311492aa5eaa00993c0325053f5f7ae8b1fb024"
42
42
  }
@@ -40,6 +40,13 @@ export class Model {
40
40
  on(part: string, to: string, toFace: string, align?: Record<string, unknown>, gap?: number): this {
41
41
  return this.do({ kind: 'attach', part, to: { part: to, face: toFace }, ...(align ? { align } : {}), ...(gap ? { gap } : {}) } as FigureAuthoringAction)
42
42
  }
43
+ /**
44
+ * Fastened to a point on another part's curved surface (ADR-0140 3.9): on a cylinder's side `around` its push axis in
45
+ * degrees and `along` it, on a sphere `toward` its outward normal there.
46
+ */
47
+ onSurface(part: string, to: string, surface: Record<string, unknown>): this {
48
+ return this.do({ kind: 'attach', part, to: { part: to, surface } } as FigureAuthoringAction)
49
+ }
43
50
  /**
44
51
  * A part's colour. The palette is the figure's, shared by every template put into it: a token named for its value
45
52
  * (`palette.tpl-5c7c96`) means two templates never recolour each other's parts. The name given says what it is for.
@@ -10,7 +10,8 @@ export default function build() {
10
10
  .on('post', 'base', 'top')
11
11
  .colour('post', 'rail', '#9aa3ab')
12
12
  .box('sign', 450, 450, 10)
13
- .on('sign', 'post', 'front', { y: 'max' })
13
+ /* On the post's side facing +Z (270° round its push Y), level with its top. */
14
+ .onSurface('sign', 'post', { around: 270, along: 'max' })
14
15
  .colour('sign', 'sign-yellow', '#f2c200')
15
16
  return m.asset
16
17
  }
@@ -1 +1 @@
1
- {"version":"figure-asset-1","name":"TPL_SAFETY_SIGN_STAND","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":"base.dimension.width","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"base.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"base.dimension.depth","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"post.dimension.radius","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"post.dimension.length","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"sign.dimension.width","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"sign.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"sign.dimension.depth","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":"base.k.centre","unit":"ratio","value":-0.5},{"id":"post.k.centre","unit":"ratio","value":-0.5},{"id":"sign.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":"base.shape","op":"extrude@1","args":["base.start.value","base.dimension.height","base.dimension.width","base.dimension.depth"],"outputs":{"shape":"base.shapeValue"},"params":{"frame":"base.local","axis":"y","section":"rectangle"}},{"id":"base.pose","op":"rigid@1","args":["d.mm.0","base.on.host.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"base.poseValue"},"params":{"from":"base.local","to":"base.seat"}},{"id":"base","op":"place@1","args":["base.shapeValue","base.world.value"],"outputs":{"placed":"base.placed"}},{"id":"base.start","op":"mul@1","args":["base.dimension.height","base.k.centre"],"outputs":{"value":"base.start.value"}},{"id":"post.shape","op":"extrude@1","args":["post.start.value","post.dimension.length","post.dimension.radius","post.dimension.radius"],"outputs":{"shape":"post.shapeValue"},"params":{"frame":"post.local","axis":"y","section":"ellipse"}},{"id":"post.pose","op":"rigid@1","args":["d.mm.0","post.on.base.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"post.poseValue"},"params":{"from":"post.local","to":"post.seat"}},{"id":"post","op":"place@1","args":["post.shapeValue","post.world.value"],"outputs":{"placed":"post.placed"}},{"id":"post.start","op":"mul@1","args":["post.dimension.length","post.k.centre"],"outputs":{"value":"post.start.value"}},{"id":"sign.shape","op":"extrude@1","args":["sign.start.value","sign.dimension.height","sign.dimension.width","sign.dimension.depth"],"outputs":{"shape":"sign.shapeValue"},"params":{"frame":"sign.local","axis":"y","section":"rectangle"}},{"id":"sign.pose","op":"rigid@1","args":["d.mm.0","sign.on.post.pose.y.t0.value","sign.on.post.pose.z.t0.value","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"sign.poseValue"},"params":{"from":"sign.local","to":"sign.seat"}},{"id":"sign","op":"place@1","args":["sign.shapeValue","sign.world.value"],"outputs":{"placed":"sign.placed"}},{"id":"sign.start","op":"mul@1","args":["sign.dimension.height","sign.k.centre"],"outputs":{"value":"sign.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":"base.on.host.seat.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"base.on.host.seat.y.t0.value"}},{"id":"base.on.host.pose.y.t0","op":"mul@1","args":["base.dimension.height","k.ratio.0_5"],"outputs":{"value":"base.on.host.pose.y.t0.value"}},{"id":"base.seat.rigid","op":"rigid@1","args":["d.mm.0","base.on.host.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"base.seat.value"},"params":{"from":"base.seat","to":"host.local"}},{"id":"base.chain","op":"compose@1","args":["base.seat.value","base.poseValue"],"outputs":{"pose":"base.chain.value"}},{"id":"base.world","op":"compose@1","args":["host.chain.value","base.chain.value"],"outputs":{"pose":"base.world.value"}},{"id":"post.on.base.seat.y.t0","op":"mul@1","args":["base.dimension.height","k.ratio.0_5"],"outputs":{"value":"post.on.base.seat.y.t0.value"}},{"id":"post.on.base.pose.y.t0","op":"mul@1","args":["post.dimension.length","k.ratio.0_5"],"outputs":{"value":"post.on.base.pose.y.t0.value"}},{"id":"post.seat.rigid","op":"rigid@1","args":["d.mm.0","post.on.base.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"post.seat.value"},"params":{"from":"post.seat","to":"base.local"}},{"id":"post.chain","op":"compose@1","args":["post.seat.value","post.poseValue"],"outputs":{"pose":"post.chain.value"}},{"id":"post.world","op":"compose@1","args":["base.world.value","post.chain.value"],"outputs":{"pose":"post.world.value"}},{"id":"sign.on.post.seat.y.t0","op":"mul@1","args":["post.dimension.length","k.ratio.0_5"],"outputs":{"value":"sign.on.post.seat.y.t0.value"}},{"id":"sign.on.post.pose.y.t0","op":"mul@1","args":["sign.dimension.height","host.k.centre"],"outputs":{"value":"sign.on.post.pose.y.t0.value"}},{"id":"sign.on.post.pose.z.t0","op":"mul@1","args":["sign.dimension.depth","k.ratio.0_5"],"outputs":{"value":"sign.on.post.pose.z.t0.value"}},{"id":"sign.seat.rigid","op":"rigid@1","args":["d.mm.0","sign.on.post.seat.y.t0.value","post.dimension.radius","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"sign.seat.value"},"params":{"from":"sign.seat","to":"post.local"}},{"id":"sign.chain","op":"compose@1","args":["sign.seat.value","sign.poseValue"],"outputs":{"pose":"sign.chain.value"}},{"id":"sign.world","op":"compose@1","args":["post.world.value","sign.chain.value"],"outputs":{"pose":"sign.world.value"}}]},"capabilities":{"version":"r3-capability-3","assetFrame":"asset","bindings":[]}},"designInputs":{"host.size.x":3000,"host.size.y":50,"host.size.z":2000,"base.dimension.width":400,"base.dimension.height":30,"base.dimension.depth":300,"post.dimension.radius":20,"post.dimension.length":1100,"sign.dimension.width":450,"sign.dimension.height":450,"sign.dimension.depth":10},"stateDefaults":{},"palette":{"palette.primary":"#477b9e","palette.host":"#d9dde2","palette.tpl-2f3437":"#2f3437","palette.tpl-9aa3ab":"#9aa3ab","palette.tpl-f2c200":"#f2c200"},"appearance":[{"target":"host","material":{"token":"palette.host"}},{"target":"base","material":{"token":"palette.tpl-2f3437"}},{"target":"post","material":{"token":"palette.tpl-9aa3ab"},"segments":12},{"target":"sign","material":{"token":"palette.tpl-f2c200"}}],"joints":[{"id":"host","type":"fixed","body0":{"plane":"mounting-plane"},"body1":{"part":"host"},"origin":{}},{"id":"base","type":"fixed","body0":{"part":"host","face":"top"},"body1":{"part":"base"},"origin":{}},{"id":"post","type":"fixed","body0":{"part":"base","face":"top"},"body1":{"part":"post"},"origin":{}},{"id":"sign","type":"fixed","body0":{"part":"post","face":"front"},"body1":{"part":"sign"},"origin":{"align":{"y":"max"}}}]}
1
+ {"version":"figure-asset-1","name":"TPL_SAFETY_SIGN_STAND","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":"base.dimension.width","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"base.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"base.dimension.depth","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"post.dimension.radius","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"post.dimension.length","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"sign.dimension.width","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"sign.dimension.height","unit":"mm","min":0,"max":1.7976931348623157e+308,"role":"design"},{"id":"sign.dimension.depth","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":"base.k.centre","unit":"ratio","value":-0.5},{"id":"post.k.centre","unit":"ratio","value":-0.5},{"id":"sign.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":"base.shape","op":"extrude@1","args":["base.start.value","base.dimension.height","base.dimension.width","base.dimension.depth"],"outputs":{"shape":"base.shapeValue"},"params":{"frame":"base.local","axis":"y","section":"rectangle"}},{"id":"base.pose","op":"rigid@1","args":["d.mm.0","base.on.host.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"base.poseValue"},"params":{"from":"base.local","to":"base.seat"}},{"id":"base","op":"place@1","args":["base.shapeValue","base.world.value"],"outputs":{"placed":"base.placed"}},{"id":"base.start","op":"mul@1","args":["base.dimension.height","base.k.centre"],"outputs":{"value":"base.start.value"}},{"id":"post.shape","op":"extrude@1","args":["post.start.value","post.dimension.length","post.dimension.radius","post.dimension.radius"],"outputs":{"shape":"post.shapeValue"},"params":{"frame":"post.local","axis":"y","section":"ellipse"}},{"id":"post.pose","op":"rigid@1","args":["d.mm.0","post.on.base.pose.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"post.poseValue"},"params":{"from":"post.local","to":"post.seat"}},{"id":"post","op":"place@1","args":["post.shapeValue","post.world.value"],"outputs":{"placed":"post.placed"}},{"id":"post.start","op":"mul@1","args":["post.dimension.length","post.k.centre"],"outputs":{"value":"post.start.value"}},{"id":"sign.shape","op":"extrude@1","args":["sign.start.value","sign.dimension.height","sign.dimension.width","sign.dimension.depth"],"outputs":{"shape":"sign.shapeValue"},"params":{"frame":"sign.local","axis":"y","section":"rectangle"}},{"id":"sign.pose","op":"rigid@1","args":["d.mm.0","sign.on.post.pose.y.t0.value","sign.on.post.pose.z.t0.value","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"sign.poseValue"},"params":{"from":"sign.local","to":"sign.seat"}},{"id":"sign","op":"place@1","args":["sign.shapeValue","sign.world.value"],"outputs":{"placed":"sign.placed"}},{"id":"sign.start","op":"mul@1","args":["sign.dimension.height","sign.k.centre"],"outputs":{"value":"sign.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":"base.on.host.seat.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"base.on.host.seat.y.t0.value"}},{"id":"base.on.host.pose.y.t0","op":"mul@1","args":["base.dimension.height","k.ratio.0_5"],"outputs":{"value":"base.on.host.pose.y.t0.value"}},{"id":"base.seat.rigid","op":"rigid@1","args":["d.mm.0","base.on.host.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"base.seat.value"},"params":{"from":"base.seat","to":"host.local"}},{"id":"base.chain","op":"compose@1","args":["base.seat.value","base.poseValue"],"outputs":{"pose":"base.chain.value"}},{"id":"base.world","op":"compose@1","args":["host.chain.value","base.chain.value"],"outputs":{"pose":"base.world.value"}},{"id":"post.on.base.seat.y.t0","op":"mul@1","args":["base.dimension.height","k.ratio.0_5"],"outputs":{"value":"post.on.base.seat.y.t0.value"}},{"id":"post.on.base.pose.y.t0","op":"mul@1","args":["post.dimension.length","k.ratio.0_5"],"outputs":{"value":"post.on.base.pose.y.t0.value"}},{"id":"post.seat.rigid","op":"rigid@1","args":["d.mm.0","post.on.base.seat.y.t0.value","d.mm.0","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"post.seat.value"},"params":{"from":"post.seat","to":"base.local"}},{"id":"post.chain","op":"compose@1","args":["post.seat.value","post.poseValue"],"outputs":{"pose":"post.chain.value"}},{"id":"post.world","op":"compose@1","args":["base.world.value","post.chain.value"],"outputs":{"pose":"post.world.value"}},{"id":"sign.on.post.seat.y.t0","op":"mul@1","args":["post.dimension.length","k.ratio.0_5"],"outputs":{"value":"sign.on.post.seat.y.t0.value"}},{"id":"sign.on.post.pose.y.t0","op":"mul@1","args":["sign.dimension.height","host.k.centre"],"outputs":{"value":"sign.on.post.pose.y.t0.value"}},{"id":"sign.on.post.pose.z.t0","op":"mul@1","args":["sign.dimension.depth","k.ratio.0_5"],"outputs":{"value":"sign.on.post.pose.z.t0.value"}},{"id":"sign.seat.rigid","op":"rigid@1","args":["d.mm.0","sign.on.post.seat.y.t0.value","post.dimension.radius","a.deg.0","a.deg.0","a.deg.0"],"outputs":{"pose":"sign.seat.value"},"params":{"from":"sign.seat","to":"post.local"}},{"id":"sign.chain","op":"compose@1","args":["sign.seat.value","sign.poseValue"],"outputs":{"pose":"sign.chain.value"}},{"id":"sign.world","op":"compose@1","args":["post.world.value","sign.chain.value"],"outputs":{"pose":"sign.world.value"}}]},"capabilities":{"version":"r3-capability-3","assetFrame":"asset","bindings":[]}},"designInputs":{"host.size.x":3000,"host.size.y":50,"host.size.z":2000,"base.dimension.width":400,"base.dimension.height":30,"base.dimension.depth":300,"post.dimension.radius":20,"post.dimension.length":1100,"sign.dimension.width":450,"sign.dimension.height":450,"sign.dimension.depth":10},"stateDefaults":{},"palette":{"palette.primary":"#477b9e","palette.host":"#d9dde2","palette.tpl-2f3437":"#2f3437","palette.tpl-9aa3ab":"#9aa3ab","palette.tpl-f2c200":"#f2c200"},"appearance":[{"target":"host","material":{"token":"palette.host"}},{"target":"base","material":{"token":"palette.tpl-2f3437"}},{"target":"post","material":{"token":"palette.tpl-9aa3ab"},"segments":12},{"target":"sign","material":{"token":"palette.tpl-f2c200"}}],"joints":[{"id":"host","type":"fixed","body0":{"plane":"mounting-plane"},"body1":{"part":"host"},"origin":{}},{"id":"base","type":"fixed","body0":{"part":"host","face":"top"},"body1":{"part":"base"},"origin":{}},{"id":"post","type":"fixed","body0":{"part":"base","face":"top"},"body1":{"part":"post"},"origin":{}},{"id":"sign","type":"fixed","body0":{"part":"post","surface":{"around":270,"along":"max"}},"body1":{"part":"sign"},"origin":{}}]}
@@ -90,16 +90,15 @@
90
90
  "type": "fixed",
91
91
  "body0": {
92
92
  "part": "{id}-post",
93
- "face": "front"
93
+ "surface": {
94
+ "around": 270,
95
+ "along": "max"
96
+ }
94
97
  },
95
98
  "body1": {
96
99
  "part": "{id}-sign"
97
100
  },
98
- "origin": {
99
- "align": {
100
- "y": "max"
101
- }
102
- }
101
+ "origin": {}
103
102
  }
104
103
  },
105
104
  {
@@ -1 +1 @@
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":"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":"disc.k.centre","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":"mark.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.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":"disc.shape","op":"extrude@1","args":["disc.start.value","disc.dimension.length","disc.dimension.x.value","disc.dimension.x.value"],"outputs":{"shape":"disc.shapeValue"},"params":{"frame":"disc.local","axis":"y","section":"ellipse"}},{"id":"disc.pose","op":"rigid@1","args":["d.mm.0","disc.on.host.pose.y.t0.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.start","op":"mul@1","args":["disc.dimension.length","disc.k.centre"],"outputs":{"value":"disc.start.value"}},{"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":"extrude@1","args":["mark.start.value","mark.dimension.height","mark.dimension.width","mark.dimension.depth"],"outputs":{"shape":"mark.shapeValue"},"params":{"frame":"mark.local","axis":"y","section":"rectangle"}},{"id":"mark.pose","op":"rigid@1","args":["mark.on.disc.pose.x.t0.value","mark.on.disc.pose.y.t0.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":"mark.start","op":"mul@1","args":["mark.dimension.height","mark.k.centre"],"outputs":{"value":"mark.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":"disc.on.host.seat.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"disc.on.host.seat.y.t0.value"}},{"id":"disc.on.host.pose.y.t0","op":"mul@1","args":["disc.dimension.length","k.ratio.0_5"],"outputs":{"value":"disc.on.host.pose.y.t0.value"}},{"id":"disc.seat.rigid","op":"rigid@1","args":["d.mm.0","disc.on.host.seat.y.t0.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.t0","op":"mul@1","args":["disc.dimension.length","k.ratio.0_5"],"outputs":{"value":"mark.on.disc.seat.y.t0.value"}},{"id":"mark.on.disc.pose.x.t0","op":"mul@1","args":["mark.dimension.width","host.k.centre"],"outputs":{"value":"mark.on.disc.pose.x.t0.value"}},{"id":"mark.on.disc.pose.y.t0","op":"mul@1","args":["mark.dimension.height","k.ratio.0_5"],"outputs":{"value":"mark.on.disc.pose.y.t0.value"}},{"id":"mark.seat.rigid","op":"rigid@1","args":["disc.dimension.x.value","mark.on.disc.seat.y.t0.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"},"origin":{}},{"id":"disc","type":"revolute","body0":{"part":"host","face":"top"},"body1":{"part":"disc"},"origin":{},"axis":"Y","lowerLimit":-180,"upperLimit":180,"state":{"id":"turn"}},{"id":"mark","type":"fixed","body0":{"part":"disc","face":"top"},"body1":{"part":"mark"},"origin":{"align":{"x":"max"}}}]}
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":"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":"disc.k.centre","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":"mark.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.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":"disc.shape","op":"extrude@1","args":["disc.start.value","disc.dimension.length","disc.dimension.x.value","disc.dimension.x.value"],"outputs":{"shape":"disc.shapeValue"},"params":{"frame":"disc.local","axis":"y","section":"ellipse"}},{"id":"disc.pose","op":"rigid@1","args":["d.mm.0","disc.on.host.pose.y.t0.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.start","op":"mul@1","args":["disc.dimension.length","disc.k.centre"],"outputs":{"value":"disc.start.value"}},{"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":"extrude@1","args":["mark.start.value","mark.dimension.height","mark.dimension.width","mark.dimension.depth"],"outputs":{"shape":"mark.shapeValue"},"params":{"frame":"mark.local","axis":"y","section":"rectangle"}},{"id":"mark.pose","op":"rigid@1","args":["mark.on.disc.pose.x.t0.value","mark.on.disc.pose.y.t0.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":"mark.start","op":"mul@1","args":["mark.dimension.height","mark.k.centre"],"outputs":{"value":"mark.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":"disc.on.host.seat.y.t0","op":"mul@1","args":["host.size.y","k.ratio.0_5"],"outputs":{"value":"disc.on.host.seat.y.t0.value"}},{"id":"disc.on.host.pose.y.t0","op":"mul@1","args":["disc.dimension.length","k.ratio.0_5"],"outputs":{"value":"disc.on.host.pose.y.t0.value"}},{"id":"disc.seat.rigid","op":"rigid@1","args":["d.mm.0","disc.on.host.seat.y.t0.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.x.0.g0.0.t1","op":"mul@1","args":["mark.dimension.depth","host.k.centre"],"outputs":{"value":"mark.on.disc.seat.x.0.g0.0.t1.value"}},{"id":"mark.on.disc.seat.x.0.g0.0.s0","op":"add@1","args":["disc.dimension.x.value","mark.on.disc.seat.x.0.g0.0.t1.value"],"outputs":{"value":"mark.on.disc.seat.x.0.g0.0.s0.value"}},{"id":"mark.on.disc.seat.x.0.g0","op":"max@1","args":["mark.on.disc.seat.x.0.g0.0.s0.value","d.mm.0"],"outputs":{"value":"mark.on.disc.seat.x.0.g0.value"}},{"id":"mark.on.disc.seat.x.0.g1.t1","op":"mul@1","args":["mark.dimension.depth","k.ratio.0_5"],"outputs":{"value":"mark.on.disc.seat.x.0.g1.t1.value"}},{"id":"mark.on.disc.seat.x.0.g1.s0","op":"add@1","args":["disc.dimension.x.value","mark.on.disc.seat.x.0.g1.t1.value"],"outputs":{"value":"mark.on.disc.seat.x.0.g1.s0.value"}},{"id":"mark.on.disc.seat.x.0","op":"geomean@1","args":["mark.on.disc.seat.x.0.g0.value","mark.on.disc.seat.x.0.g1.s0.value"],"outputs":{"value":"mark.on.disc.seat.x.0.value"}},{"id":"mark.on.disc.seat.y.t0","op":"mul@1","args":["disc.dimension.length","k.ratio.0_5"],"outputs":{"value":"mark.on.disc.seat.y.t0.value"}},{"id":"mark.on.disc.pose.x.t0","op":"mul@1","args":["mark.dimension.width","host.k.centre"],"outputs":{"value":"mark.on.disc.pose.x.t0.value"}},{"id":"mark.on.disc.pose.y.t0","op":"mul@1","args":["mark.dimension.height","k.ratio.0_5"],"outputs":{"value":"mark.on.disc.pose.y.t0.value"}},{"id":"mark.seat.rigid","op":"rigid@1","args":["mark.on.disc.seat.x.0.value","mark.on.disc.seat.y.t0.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"},"origin":{}},{"id":"disc","type":"revolute","body0":{"part":"host","face":"top"},"body1":{"part":"disc"},"origin":{},"axis":"Y","lowerLimit":-180,"upperLimit":180,"state":{"id":"turn"}},{"id":"mark","type":"fixed","body0":{"part":"disc","face":"top"},"body1":{"part":"mark"},"origin":{"align":{"x":"max"}}}]}
@@ -41,7 +41,8 @@ function mixerDraft(): FigureAsset {
41
41
  { kind: 'add-part', part: { id: 'body', kind: 'cylinder', dimensions: { radius: 140, length: 320 } } },
42
42
  { kind: 'add-part', part: { id: 'port', kind: 'box', dimensions: { width: 80, height: 60, depth: 30 } } },
43
43
  { kind: 'attach', part: 'body', to: { plane: 'mounting-plane' } },
44
- { kind: 'attach', part: 'port', to: { part: 'body', face: 'front' } },
44
+ /* The body's front is its curved side: a point on it, by the outward normal there (ADR-0140 3.9; push Y, +Z is 270°). */
45
+ { kind: 'attach', part: 'port', to: { part: 'body', surface: { around: 270, along: 'centre' } } },
45
46
  { kind: 'fit-room', placement: 'floor' }
46
47
  ] as any)
47
48
  }