@hatiolab/figure-model 0.2.14 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/authoring-actions.d.ts +68 -25
  2. package/dist/authoring-actions.d.ts.map +1 -1
  3. package/dist/authoring-actions.js +331 -71
  4. package/dist/authoring-actions.js.map +1 -1
  5. package/dist/cost.d.ts.map +1 -1
  6. package/dist/cost.js +3 -4
  7. package/dist/cost.js.map +1 -1
  8. package/dist/index.d.ts +3 -2
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +3 -2
  11. package/dist/index.js.map +1 -1
  12. package/dist/joint-list.d.ts +76 -0
  13. package/dist/joint-list.d.ts.map +1 -0
  14. package/dist/joint-list.js +259 -0
  15. package/dist/joint-list.js.map +1 -0
  16. package/dist/kernel-version.d.ts +1 -1
  17. package/dist/kernel-version.d.ts.map +1 -1
  18. package/dist/kernel-version.js +1 -1
  19. package/dist/kernel-version.js.map +1 -1
  20. package/dist/proposal.d.ts.map +1 -1
  21. package/dist/proposal.js +5 -4
  22. package/dist/proposal.js.map +1 -1
  23. package/dist/recipe.d.ts +11 -2
  24. package/dist/recipe.d.ts.map +1 -1
  25. package/dist/recipe.js +3 -1
  26. package/dist/recipe.js.map +1 -1
  27. package/dist/release-contract.d.ts +1 -1
  28. package/dist/release-contract.d.ts.map +1 -1
  29. package/dist/release-contract.js +83 -0
  30. package/dist/release-contract.js.map +1 -1
  31. package/dist/release-metrics.d.ts +3 -0
  32. package/dist/release-metrics.d.ts.map +1 -1
  33. package/dist/release-metrics.js +13 -2
  34. package/dist/release-metrics.js.map +1 -1
  35. package/dist/render-batches.d.ts +44 -2
  36. package/dist/render-batches.d.ts.map +1 -1
  37. package/dist/render-batches.js +168 -3
  38. package/dist/render-batches.js.map +1 -1
  39. package/dist/robots.d.ts +23 -26
  40. package/dist/robots.d.ts.map +1 -1
  41. package/dist/robots.js +52 -20
  42. package/dist/robots.js.map +1 -1
  43. package/dist/score.d.ts.map +1 -1
  44. package/dist/score.js +11 -20
  45. package/dist/score.js.map +1 -1
  46. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAExE,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAA;IACjB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAA;IACd,qGAAqG;IACrG,MAAM,EAAE,MAAM,CAAA;CACf;AAaD,+HAA+H;AAC/H,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAoCnE;AAED,+GAA+G;AAC/G,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAU3D"}
1
+ {"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAExE,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAA;IACjB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAA;IACd,qGAAqG;IACrG,MAAM,EAAE,MAAM,CAAA;CACf;AAaD,+HAA+H;AAC/H,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAoCnE;AAED,+GAA+G;AAC/G,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAS3D"}
package/dist/cost.js CHANGED
@@ -11,7 +11,7 @@
11
11
  * (designer's ruling 2026-09-22); this counts what reaches the screen.
12
12
  */
13
13
  import { figureCavitySectionOf } from "./section.js";
14
- import { figureRenderBatchesOf } from "./render-batches.js";
14
+ import { figureDrawPlanOf, figureDrawsOf } from "./render-batches.js";
15
15
  import { SEGMENT_PRESETS } from "./words.js";
16
16
  import { compileFigureAsset } from "./asset.js";
17
17
  const DEFAULT_SEGMENTS = 12;
@@ -69,11 +69,10 @@ export function figureTrianglesOf(body) {
69
69
  export function figureCostOf(asset) {
70
70
  const geometry = compileFigureAsset(asset).evaluate().geometry;
71
71
  const drawn = geometry.filter(body => body.visible !== false);
72
- /* A draw group per batch of a row's copies and per body drawn alone: as the renderer draws them (ADR-0087 amended 2026-09-26). */
73
- const plan = figureRenderBatchesOf(drawn);
72
+ /* A draw group per batch of a row's copies, per still group merged by look and per body drawn alone: as the renderer draws them (ADR-0087 amended 2026-09-26, ADR-0109). */
74
73
  return {
75
74
  triangles: drawn.reduce((sum, body) => sum + figureTrianglesOf(body), 0),
76
- groups: plan.batches.length + plan.alone.length,
75
+ groups: figureDrawsOf(figureDrawPlanOf(asset, drawn)),
77
76
  hidden: geometry.length - drawn.length
78
77
  };
79
78
  }
package/dist/cost.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -16,7 +16,7 @@ export { FIGURE_OPERATORS, FIGURE_NON_AFFINE_OPERATORS, FIGURE_STATE_NON_AFFINE_
16
16
  export { FIGURE_KERNEL_VERSION } from './kernel-version.ts';
17
17
  export { FIGURE_FACE_NORMALS } from './surface.ts';
18
18
  export { figureCostOf, figureTrianglesOf, type FigureCost } from './cost.ts';
19
- export { figureRenderBatchesOf, type FigureRenderBatch, type FigureRenderPlan, type FigureUnbatchedReason } from './render-batches.ts';
19
+ export { figureRenderBatchesOf, figureStillBodiesOf, figureStillJudgeOf, figureCarrierJudgeOf, figureBodyMovesOf, figureDrawPlanOf, figureDrawsOf, type FigureRenderBatch, type FigureRenderPlan, type FigureMergedGroup, type FigureCarriedGroup, type FigureUnbatchedReason } from './render-batches.ts';
20
20
  export { figureScoreOf, figurePartCountOf, figurePartBudgetOf, figureGradeOf, figureMaterialKeyOf, figureIndependentBodiesOf, FIGURE_GRADE_SCALE, FIGURE_BUDGET_KEYS, FIGURE_PER_INSTANCE, type FigureScore, type FigureBudgetUse, type FigureBudgetKey } from './score.ts';
21
21
  export { applyFigureAuthoring, proposeFigureOccupancy, proposeFigureProportion, type FigureProportionPlan, figureAttachmentsOf, figureBindingsOf, FIGURE_FACES, type FigureBindingPlace, type FigureAuthoringAction, type FigureFaceRemap, type FigureDimensionSource, type FigureMeasure, type FigureFaceAlignment, type FigureFace, type FigureMotionRequest, type FigureOccupancyProposal, type RemovalNotice, type FigureJoint, type FigureJointType, type FigureJointAxis, FIGURE_JOINT_TYPES, checkFigureJoints } from './authoring-actions.ts';
22
22
  export type * from './asset-types.ts';
@@ -39,9 +39,10 @@ export { assertFigureJson, parseFigureJson, figureUtf8ByteLength, FIGURE_JSON_MA
39
39
  export { FIGURE_INSTANCE_SIZE_DEFAULT, FIGURE_INSTANCE_SIZE_INPUTS, FIGURE_SIZE_POSITIVE_STEP, defaultInstanceSizeRange, foldInstanceSizeRange, figureInstanceSizeLimitsOf, type FigureSizeLimit, type FigureSizeRange, type FigureSizeRangeMove } from './instance-size.ts';
40
40
  export { figureContractChanges, type FigureContractChange, type FigureContractChangeCode } from './release-contract.ts';
41
41
  export { figureReleaseMetricsOf, figureOriginCentredOf, FIGURE_LINEAR_PROBE, type FigureReleaseMetrics } from './release-metrics.ts';
42
+ export { figureJointsOf, figureJointMotionOf, figureMimicTermsOf, FIGURE_JOINT_LIST_SCHEMA, FIGURE_JOINT_LIST_DERIVATION, type FigureJointList, type FigureListedJoint, type FigureJointInputUnit, type FigureJointMotionUnit, type FigureUnlistedInput } from './joint-list.ts';
42
43
  export { figureTopViewOf, figureTopShapesOf, figureSectionOutline, figureConvexHull, figureClampedSizeOf, type FigureTopView, type FigureTopShape } from './top-view.ts';
43
44
  export { robotArmFigure, ROBOT_ARM_CHAIN } from './examples.ts';
44
- export { quadrupedRobotFigure, mobileManipulatorFigure, scaraRobotFigure, humanoidRobotFigure, QUADRUPED_LEGS, COBOT_CHAIN, type RobotJoint } from './robots.ts';
45
+ export { quadrupedRobotFigure, mobileManipulatorFigure, scaraRobotFigure, humanoidRobotFigure, palletizerRobotFigure, QUADRUPED_LEGS, COBOT_CHAIN, type RobotFigure } from './robots.ts';
45
46
  export { settleFigureClips, FigureClipsDroppedError, type FigureClipConsent, type FigureClipLoss, type FigurePartRenamed } from './clip-keeping.ts';
46
47
  export { previewFigureCommand, figurePartFaceOf, figureBodyOwnerOf, figureRowOf, figureFaceOverhangOf, type FigureFaceOverhang, type FigureCommandPreview, type FigureBodyMove, type FigureFaceArea, type FigureRowReading } from './command-preview.ts';
47
48
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -24,7 +24,7 @@ export { FIGURE_OPERATORS, FIGURE_NON_AFFINE_OPERATORS, FIGURE_STATE_NON_AFFINE_
24
24
  export { FIGURE_KERNEL_VERSION } from "./kernel-version.js";
25
25
  export { FIGURE_FACE_NORMALS } from "./surface.js";
26
26
  export { figureCostOf, figureTrianglesOf } from "./cost.js";
27
- export { figureRenderBatchesOf } from "./render-batches.js";
27
+ export { figureRenderBatchesOf, figureStillBodiesOf, figureStillJudgeOf, figureCarrierJudgeOf, figureBodyMovesOf, figureDrawPlanOf, figureDrawsOf } from "./render-batches.js";
28
28
  export { figureScoreOf, figurePartCountOf, figurePartBudgetOf, figureGradeOf, figureMaterialKeyOf, figureIndependentBodiesOf, FIGURE_GRADE_SCALE, FIGURE_BUDGET_KEYS, FIGURE_PER_INSTANCE } from "./score.js";
29
29
  export { applyFigureAuthoring, proposeFigureOccupancy, proposeFigureProportion, figureAttachmentsOf, figureBindingsOf, FIGURE_FACES, FIGURE_JOINT_TYPES, checkFigureJoints } from "./authoring-actions.js";
30
30
  export { FIGURE_PLACEMENTS } from "./asset-types.js";
@@ -46,9 +46,10 @@ export { assertFigureJson, parseFigureJson, figureUtf8ByteLength, FIGURE_JSON_MA
46
46
  export { FIGURE_INSTANCE_SIZE_DEFAULT, FIGURE_INSTANCE_SIZE_INPUTS, FIGURE_SIZE_POSITIVE_STEP, defaultInstanceSizeRange, foldInstanceSizeRange, figureInstanceSizeLimitsOf } from "./instance-size.js";
47
47
  export { figureContractChanges } from "./release-contract.js";
48
48
  export { figureReleaseMetricsOf, figureOriginCentredOf, FIGURE_LINEAR_PROBE } from "./release-metrics.js";
49
+ export { figureJointsOf, figureJointMotionOf, figureMimicTermsOf, FIGURE_JOINT_LIST_SCHEMA, FIGURE_JOINT_LIST_DERIVATION } from "./joint-list.js";
49
50
  export { figureTopViewOf, figureTopShapesOf, figureSectionOutline, figureConvexHull, figureClampedSizeOf } from "./top-view.js";
50
51
  export { robotArmFigure, ROBOT_ARM_CHAIN } from "./examples.js";
51
- export { quadrupedRobotFigure, mobileManipulatorFigure, scaraRobotFigure, humanoidRobotFigure, QUADRUPED_LEGS, COBOT_CHAIN } from "./robots.js";
52
+ export { quadrupedRobotFigure, mobileManipulatorFigure, scaraRobotFigure, humanoidRobotFigure, palletizerRobotFigure, QUADRUPED_LEGS, COBOT_CHAIN } from "./robots.js";
52
53
  export { settleFigureClips, FigureClipsDroppedError } from "./clip-keeping.js";
53
54
  export { previewFigureCommand, figurePartFaceOf, figureBodyOwnerOf, figureRowOf, figureFaceOverhangOf } from "./command-preview.js";
54
55
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import type { FigureAsset } from './asset-types.ts';
2
+ import type { FigureUnit } from './graph-types.ts';
3
+ /** The record's shape: 2, the control's two units and `unlisted`. */
4
+ export declare const FIGURE_JOINT_LIST_SCHEMA = 2;
5
+ /** How the values are measured: 1, the rest-pose axis read from two evaluations of the compiled graph. */
6
+ export declare const FIGURE_JOINT_LIST_DERIVATION = 1;
7
+ /** The unit a control's state input is written in. */
8
+ export type FigureJointInputUnit = 'deg' | 'mm' | 'ratio';
9
+ /** The unit a joint moves in: degrees for a turn, millimetres for a slide. */
10
+ export type FigureJointMotionUnit = 'deg' | 'mm';
11
+ export interface FigureListedJoint {
12
+ id: string;
13
+ type: 'fixed' | 'revolute' | 'prismatic';
14
+ parent: string | null;
15
+ parentPart: string | null;
16
+ child: string;
17
+ /** Unit vector, rest pose, the figure's own frame, right-hand rule. Moving joints only. */
18
+ axis?: [number, number, number];
19
+ /** Independent moving joints only. */
20
+ control?: {
21
+ input: string;
22
+ inputUnit: FigureJointInputUnit;
23
+ motionUnit: FigureJointMotionUnit;
24
+ min?: number;
25
+ max?: number;
26
+ };
27
+ /** Followers only. */
28
+ follows?: {
29
+ sum: Array<{
30
+ joint: string;
31
+ multiplier: number;
32
+ }>;
33
+ offset: number;
34
+ };
35
+ }
36
+ /** A state input that moves a part and is no listed joint's: a diagnostic, not a joint (no axis, child or parent). */
37
+ export interface FigureUnlistedInput {
38
+ input: string;
39
+ unit: FigureUnit;
40
+ }
41
+ export interface FigureJointList {
42
+ schema: typeof FIGURE_JOINT_LIST_SCHEMA;
43
+ derivation: number;
44
+ joints: FigureListedJoint[];
45
+ /** State inputs that move parts outside every listed joint; empty when the joints cover every motion. */
46
+ unlisted: FigureUnlistedInput[];
47
+ }
48
+ /**
49
+ * A mimic in either form the record takes: one leader (`{ joint, multiplier, offset? }`), or a sum
50
+ * (`{ sum: [{ joint, multiplier }], offset? }`, ADR-0107 decision 2). Both read as a sum.
51
+ */
52
+ export declare function figureMimicTermsOf(mimic: unknown): {
53
+ sum: Array<{
54
+ joint: string;
55
+ multiplier: number;
56
+ }>;
57
+ offset: number;
58
+ } | undefined;
59
+ /**
60
+ * The joint list of a figure, from its validated joint records. Refuses (`JOINT_DRIFT`, or `JOINT_AXIS_UNREAD`
61
+ * naming the joint) rather than say an axis it could not read.
62
+ */
63
+ export declare function figureJointsOf(asset: FigureAsset): FigureJointList;
64
+ /**
65
+ * The list, read by one instance evaluator stepping from the rest pose (`incremental`, what `figureJointsOf` does) or by
66
+ * a whole evaluation for every reading (`fresh`). Not exported from the package: the two are compared by a test, so a
67
+ * reused result cannot go stale unseen.
68
+ */
69
+ export declare function jointListOf(asset: FigureAsset, evaluation: 'incremental' | 'fresh'): FigureJointList;
70
+ /**
71
+ * How far a moving joint has gone -- degrees for a turn, millimetres for a slide -- as the kernel evaluates the figure
72
+ * at `inputs` (design inputs, instance size and state; the stored values for the rest). A slide whose control is a
73
+ * share reads its distance here: a consumer never works it out from the length its stroke follows.
74
+ */
75
+ export declare function figureJointMotionOf(asset: FigureAsset, jointId: string, inputs?: Record<string, number>): number;
76
+ //# sourceMappingURL=joint-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joint-list.d.ts","sourceRoot":"","sources":["../src/joint-list.ts"],"names":[],"mappings":"AAuDA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAKnD,OAAO,KAAK,EAAuD,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAEvG,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,IAAI,CAAA;AACzC,0GAA0G;AAC1G,eAAO,MAAM,4BAA4B,IAAI,CAAA;AAE7C,sDAAsD;AACtD,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,CAAA;AACzD,8EAA8E;AAC9E,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,IAAI,CAAA;AAEhD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,CAAA;IACxC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,2FAA2F;IAC3F,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,sCAAsC;IACtC,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,oBAAoB,CAAC;QAAC,UAAU,EAAE,qBAAqB,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3H,sBAAsB;IACtB,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAChF;AAED,sHAAsH;AACtH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,wBAAwB,CAAA;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,iBAAiB,EAAE,CAAA;IAC3B,yGAAyG;IACzG,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAChC;AAKD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,GAAG,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAGpI;AA0JD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe,CAElE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,GAAG,eAAe,CAiEpG;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,MAAM,CAQpH"}
@@ -0,0 +1,259 @@
1
+ import { compileFigureAsset } from "./asset.js";
2
+ import { checkFigureJoints, figureMimicLeadersOf } from "./authoring-actions.js";
3
+ import { FigureContractError } from "./contract.js";
4
+ import { compileFigureGraph } from "./graph.js";
5
+ /** The record's shape: 2, the control's two units and `unlisted`. */
6
+ export const FIGURE_JOINT_LIST_SCHEMA = 2;
7
+ /** How the values are measured: 1, the rest-pose axis read from two evaluations of the compiled graph. */
8
+ export const FIGURE_JOINT_LIST_DERIVATION = 1;
9
+ /**
10
+ * A mimic in either form the record takes: one leader (`{ joint, multiplier, offset? }`), or a sum
11
+ * (`{ sum: [{ joint, multiplier }], offset? }`, ADR-0107 decision 2). Both read as a sum.
12
+ */
13
+ export function figureMimicTermsOf(mimic) {
14
+ if (!mimic || typeof mimic !== 'object')
15
+ return undefined;
16
+ return { sum: figureMimicLeadersOf({ mimic }).map(t => ({ joint: t.joint, multiplier: t.multiplier })), offset: mimic.offset ?? 0 };
17
+ }
18
+ const refuse = (joint, detail) => {
19
+ throw new FigureContractError('JOINT_AXIS_UNREAD', `joints.${joint}`, detail);
20
+ };
21
+ const stateIdOf = (j) => j.state?.id ?? j.id;
22
+ /** Parents first, then record order. The records make a tree (validated), so this ends. */
23
+ function treeOrder(joints) {
24
+ const byChild = new Map(joints.map(j => [j.body1.part, j]));
25
+ const depth = (j) => {
26
+ let n = 0;
27
+ const above = (o) => ('part' in o.body0 ? byChild.get(o.body0.part) : undefined);
28
+ for (let up = above(j); up; up = above(up))
29
+ n++;
30
+ return n;
31
+ };
32
+ return joints.map((j, i) => ({ j, i, d: depth(j) })).sort((a, b) => a.d - b.d || a.i - b.i).map(o => o.j);
33
+ }
34
+ /* ---- reading two evaluations ---- */
35
+ /** A drawn body's part and which copy it is: `part`, or `[row, index, ..., "part.placed"]` for a copy in a row. */
36
+ function bodyName(id) {
37
+ if (!id.startsWith('['))
38
+ return { part: id, copy: [] };
39
+ const path = JSON.parse(id);
40
+ const last = path.at(-1);
41
+ if (typeof last !== 'string' || !last.endsWith('.placed'))
42
+ return undefined;
43
+ return { part: last.slice(0, -'.placed'.length), copy: path.slice(0, -1) };
44
+ }
45
+ const isPrefix = (a, b) => a.length <= b.length && a.every((x, i) => x === b[i]);
46
+ /** The drawn bodies of one evaluation, named once: the rest pose's are read for every joint. */
47
+ const named = new WeakMap();
48
+ function bodiesOf(geometry) {
49
+ let bodies = named.get(geometry);
50
+ if (!bodies) {
51
+ bodies = geometry.flatMap(g => {
52
+ const name = typeof g.id === 'string' && g.pose ? bodyName(g.id) : undefined;
53
+ return name ? [{ ...name, pose: g.pose }] : [];
54
+ });
55
+ named.set(geometry, bodies);
56
+ }
57
+ return bodies;
58
+ }
59
+ /**
60
+ * The child's pose relative to its parent part, from one evaluation: the first copy of the child, and the parent's
61
+ * copy it hangs in (the one whose row path is the longest prefix of the child's). The mounting plane is the figure's
62
+ * own frame.
63
+ */
64
+ function relativeOf(geometry, parent, child, joint) {
65
+ const bodies = bodiesOf(geometry);
66
+ const kid = bodies.find(b => b.part === child);
67
+ if (!kid)
68
+ return refuse(joint, `${child} is not drawn at the rest pose (a row with no copies?); its axis cannot be read`);
69
+ let above = { r: IDENTITY, t: [0, 0, 0] };
70
+ if (parent) {
71
+ const holders = bodies.filter(b => b.part === parent && isPrefix(b.copy, kid.copy)).sort((a, b) => b.copy.length - a.copy.length);
72
+ if (!holders.length)
73
+ return refuse(joint, `${parent} is not drawn where ${child} hangs; its axis cannot be read`);
74
+ above = holders[0].pose;
75
+ }
76
+ return { rel: compose(inverse(above), kid.pose), parentR: above.r };
77
+ }
78
+ const IDENTITY = [
79
+ [1, 0, 0],
80
+ [0, 1, 0],
81
+ [0, 0, 1]
82
+ ];
83
+ const mv = (r, v) => [0, 1, 2].map(i => r[i][0] * v[0] + r[i][1] * v[1] + r[i][2] * v[2]);
84
+ const mm = (a, b) => a.map(row => [0, 1, 2].map(k => row[0] * b[0][k] + row[1] * b[1][k] + row[2] * b[2][k]));
85
+ const transpose = (r) => [0, 1, 2].map(i => [r[0][i], r[1][i], r[2][i]]);
86
+ const compose = (a, b) => ({ r: mm(a.r, b.r), t: mv(a.r, b.t).map((v, i) => v + a.t[i]) });
87
+ const inverse = (p) => {
88
+ const rt = transpose(p.r);
89
+ return { r: rt, t: mv(rt, p.t).map(v => -v) };
90
+ };
91
+ const round = (v) => {
92
+ const r = Math.round(v * 1e9) / 1e9;
93
+ return r === 0 ? 0 : r;
94
+ };
95
+ /** The ref a joint's motion moves by: its control, or the node that makes its distance or angle. */
96
+ const quantityRefOf = (asset, child) => asset.document.model.nodes.find(n => n.id === `${child}.motion`)?.args[3];
97
+ /** How far a joint's own value went in one evaluation: its motion's quantity, in base units, as the graph computed it. */
98
+ function quantityOf(ref, values) {
99
+ const v = values[ref];
100
+ return typeof v === 'number' && Number.isFinite(v) ? v : undefined;
101
+ }
102
+ /**
103
+ * A moving joint's axis at rest, measured. `drivers` are the state inputs that can move it: its own control, or its
104
+ * leaders' controls. Each is tried, a step of at most 45 (degrees, millimetres or a share) into its range, smaller
105
+ * until a turn stays under a quarter: what a turn of 180° and more says about its axis is ambiguous.
106
+ */
107
+ function axisOf(reader, asset, j, drivers) {
108
+ const parent = 'part' in j.body0 ? j.body0.part : null;
109
+ const child = j.body1.part;
110
+ const ref = quantityRefOf(asset, child);
111
+ const q0 = ref === undefined ? undefined : quantityOf(ref, reader.atRest.values);
112
+ if (q0 === undefined)
113
+ return refuse(j.id, `${child} has no motion in the graph for ${j.type} joint ${j.id}`);
114
+ const at0 = relativeOf(reader.atRest.geometry, parent, child, j.id);
115
+ for (const input of drivers) {
116
+ const room = input.max > 0 ? input.max : input.min;
117
+ for (let step = Math.sign(room) * Math.min(Math.abs(room), input.unit === 'ratio' ? 0.5 : 45), n = 0; step !== 0 && n < 12; step /= 2, n++) {
118
+ const after = reader.evaluate({ ...reader.rest, [input.id]: step });
119
+ const dq = quantityOf(ref, after.values) - q0;
120
+ if (!(Math.abs(dq) > 1e-9))
121
+ break;
122
+ const at1 = relativeOf(after.geometry, parent, child, j.id);
123
+ /* The child's motion in its parent's frame: at1 = D · at0, D a turn about the joint's axis or a slide along it. */
124
+ const d = compose(at1.rel, inverse(at0.rel));
125
+ let local;
126
+ if (j.type === 'revolute') {
127
+ const r = d.r;
128
+ const v = [(r[2][1] - r[1][2]) / 2, (r[0][2] - r[2][0]) / 2, (r[1][0] - r[0][1]) / 2];
129
+ const sin = Math.hypot(...v);
130
+ const cos = (r[0][0] + r[1][1] + r[2][2] - 1) / 2;
131
+ /* Past a quarter turn, or nearly none: try a smaller step. */
132
+ if (cos < 1e-6 || sin < 1e-6)
133
+ continue;
134
+ local = v.map(x => (x / sin) * Math.sign(dq));
135
+ }
136
+ else {
137
+ /* A slide turns nothing; what it moves is its distance along the axis, the same length the value went. */
138
+ const turned = d.r.some((row, i) => row.some((x, k) => Math.abs(x - (i === k ? 1 : 0)) > 1e-9));
139
+ if (turned)
140
+ return refuse(j.id, `${child} turns as ${j.id} slides; a slide's axis cannot be read from a turn`);
141
+ local = d.t.map(x => x / dq);
142
+ if (Math.abs(Math.hypot(...local) - 1) > 1e-6)
143
+ return refuse(j.id, `${child} moved ${Math.hypot(...d.t)} mm as ${j.id}'s value went ${Math.abs(dq)}; the slide is not along a unit axis`);
144
+ }
145
+ const axis = mv(at0.parentR, local);
146
+ const n2 = Math.hypot(...axis);
147
+ return axis.map(x => round(x / n2));
148
+ }
149
+ }
150
+ return refuse(j.id, `moving ${drivers.map(i => i.id).join(', ') || 'nothing'} does not move ${child}; ${j.id}'s axis cannot be seen`);
151
+ }
152
+ const MOTION_OPS = new Set(['axis-slide@1', 'axis-turn@1']);
153
+ /** The state inputs a motion reads, in the model's order: what moves a part, by a joint record or by none. */
154
+ function movingInputsOf(asset, dependence) {
155
+ const moving = new Set(asset.document.model.nodes.filter(n => MOTION_OPS.has(n.op)).flatMap(n => Object.values(n.outputs).flatMap(ref => dependence[ref] ?? [])));
156
+ return asset.document.model.inputs.filter(i => i.role === 'state' && moving.has(i.id));
157
+ }
158
+ /**
159
+ * The joint list of a figure, from its validated joint records. Refuses (`JOINT_DRIFT`, or `JOINT_AXIS_UNREAD`
160
+ * naming the joint) rather than say an axis it could not read.
161
+ */
162
+ export function figureJointsOf(asset) {
163
+ return jointListOf(asset, 'incremental');
164
+ }
165
+ /**
166
+ * The list, read by one instance evaluator stepping from the rest pose (`incremental`, what `figureJointsOf` does) or by
167
+ * a whole evaluation for every reading (`fresh`). Not exported from the package: the two are compared by a test, so a
168
+ * reused result cannot go stale unseen.
169
+ */
170
+ export function jointListOf(asset, evaluation) {
171
+ const records = (asset.joints ?? []);
172
+ checkFigureJoints(asset);
173
+ /* The asset is compiled once to be sure it stands; the graph under it is what is evaluated, values and all. */
174
+ compileFigureAsset(asset);
175
+ const inputs = new Map(asset.document.model.inputs.filter(i => i.role === 'state').map(i => [i.id, i]));
176
+ /* The rest pose: every independent joint at 0 (ADR-0093); any other state input at its default. */
177
+ const rest = {};
178
+ for (const j of records)
179
+ if (j.type !== 'fixed' && !j.mimic && inputs.has(stateIdOf(j)))
180
+ rest[stateIdOf(j)] = 0;
181
+ /*
182
+ 0 is evaluated as is, also where a joint's limits do not hold it (10..80): the graph is compiled for this reading
183
+ with those controls' ranges widened to 0. Only here -- a board's evaluation, the state defaults and every command
184
+ still hold a control to its limits.
185
+ */
186
+ const outside = asset.document.model.inputs.some(i => Object.hasOwn(rest, i.id) && !(i.min <= 0 && 0 <= i.max));
187
+ const model = outside ? structuredClone(asset.document.model) : asset.document.model;
188
+ if (outside)
189
+ for (const i of model.inputs)
190
+ if (Object.hasOwn(rest, i.id))
191
+ Object.assign(i, { min: Math.min(i.min, 0), max: Math.max(i.max, 0) });
192
+ const plan = compileFigureGraph(model);
193
+ const list = { schema: FIGURE_JOINT_LIST_SCHEMA, derivation: FIGURE_JOINT_LIST_DERIVATION, joints: [], unlisted: [] };
194
+ const covered = new Set();
195
+ if (records.length) {
196
+ const byId = new Map(records.map(j => [j.id, j]));
197
+ const byChild = new Map(records.map(j => [j.body1.part, j]));
198
+ const instance = evaluation === 'incremental' ? plan.evaluator() : plan;
199
+ const evaluate = (state) => instance.evaluate({ ...asset.designInputs, ...asset.stateDefaults, ...state });
200
+ const reader = { rest, atRest: evaluate(rest), evaluate };
201
+ for (const j of treeOrder(records)) {
202
+ const parentPart = 'part' in j.body0 ? j.body0.part : null;
203
+ const entry = {
204
+ id: j.id,
205
+ type: j.type,
206
+ parent: parentPart ? (byChild.get(parentPart)?.id ?? null) : null,
207
+ parentPart,
208
+ child: j.body1.part
209
+ };
210
+ if (j.type !== 'fixed') {
211
+ const follows = figureMimicTermsOf(j.mimic);
212
+ if (follows) {
213
+ const drivers = follows.sum.flatMap(t => {
214
+ const leader = byId.get(t.joint);
215
+ const input = leader && inputs.get(stateIdOf(leader));
216
+ return input ? [input] : [];
217
+ });
218
+ entry.axis = axisOf(reader, asset, j, drivers);
219
+ entry.follows = follows;
220
+ }
221
+ else {
222
+ const input = inputs.get(stateIdOf(j));
223
+ if (!input)
224
+ return refuse(j.id, `${stateIdOf(j)}, the state input of ${j.id}, is not in the model`);
225
+ /* A revolute joint without limits turns without end: its input's -180..180 is a phase, not a limit. */
226
+ const limited = j.lowerLimit !== undefined || j.upperLimit !== undefined || j.type === 'prismatic';
227
+ entry.axis = axisOf(reader, asset, j, [input]);
228
+ entry.control = {
229
+ input: input.id,
230
+ inputUnit: input.unit,
231
+ motionUnit: j.type === 'revolute' ? 'deg' : 'mm',
232
+ ...(limited ? { min: input.min, max: input.max } : {})
233
+ };
234
+ covered.add(input.id);
235
+ }
236
+ }
237
+ list.joints.push(entry);
238
+ }
239
+ }
240
+ list.unlisted = movingInputsOf(asset, plan.dependence).filter(i => !covered.has(i.id)).map(i => ({ input: i.id, unit: i.unit }));
241
+ return list;
242
+ }
243
+ /**
244
+ * How far a moving joint has gone -- degrees for a turn, millimetres for a slide -- as the kernel evaluates the figure
245
+ * at `inputs` (design inputs, instance size and state; the stored values for the rest). A slide whose control is a
246
+ * share reads its distance here: a consumer never works it out from the length its stroke follows.
247
+ */
248
+ export function figureJointMotionOf(asset, jointId, inputs = {}) {
249
+ const j = (asset.joints ?? []).find(o => o.id === jointId);
250
+ if (!j)
251
+ throw new FigureContractError('TARGET_ABSENT', `joints.${jointId}`, `${jointId} is not a joint of this figure`);
252
+ const ref = j.type === 'fixed' ? undefined : quantityRefOf(asset, j.body1.part);
253
+ if (ref === undefined)
254
+ throw new FigureContractError('JOINT_SCHEMA', `joints.${jointId}`, `${jointId} does not move; it has no value to give`);
255
+ const values = compileFigureGraph(asset.document.model).evaluate({ ...asset.designInputs, ...asset.stateDefaults, ...inputs }).values;
256
+ const value = quantityOf(ref, values);
257
+ return j.type === 'revolute' ? (value * 180) / Math.PI : value;
258
+ }
259
+ //# sourceMappingURL=joint-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joint-list.js","sourceRoot":"","sources":["../src/joint-list.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,5 @@
4
4
  * different result. Kept equal to package.json's version by `npm version` (the `version` script rewrites this file)
5
5
  * and by `kernel-version.test.ts`.
6
6
  */
7
- export declare const FIGURE_KERNEL_VERSION = "0.2.14";
7
+ export declare const FIGURE_KERNEL_VERSION = "0.3.0";
8
8
  //# sourceMappingURL=kernel-version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kernel-version.d.ts","sourceRoot":"","sources":["../src/kernel-version.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,WAAW,CAAA"}
1
+ {"version":3,"file":"kernel-version.d.ts","sourceRoot":"","sources":["../src/kernel-version.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,UAAU,CAAA"}
@@ -7,5 +7,5 @@
7
7
  * different result. Kept equal to package.json's version by `npm version` (the `version` script rewrites this file)
8
8
  * and by `kernel-version.test.ts`.
9
9
  */
10
- export const FIGURE_KERNEL_VERSION = '0.2.14';
10
+ export const FIGURE_KERNEL_VERSION = '0.3.0';
11
11
  //# sourceMappingURL=kernel-version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kernel-version.js","sourceRoot":"","sources":["../src/kernel-version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAQ,CAAA"}
1
+ {"version":3,"file":"kernel-version.js","sourceRoot":"","sources":["../src/kernel-version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../src/proposal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAGnF,OAAO,EAAsB,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAkF,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AACnJ,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAG5F,qGAAqG;AACrG,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,uBAAuB,CAAC,UAAU,CAAC,CAAA;KAAE,CAAA;CACrG;AACD,iGAAiG;AACjG,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,eAAe,CAAA;CAC3B;AACD,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,cAAc,CAAA;AAGvH,QAAA,MAAM,eAAe,kOAciC,CAAA;AACtD,KAAK,UAAU,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAA;AACpC,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAElH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,kBAAkB,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,WAAW,CA2BvI;AAED,mGAAmG;AACnG,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAQD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,kBAAkB,EAkGhE,CAAA;AAMD,sGAAsG;AACtG,KAAK,OAAO,GAAG,mBAAmB,CAAA;AAClC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC5J,eAAO,MAAM,qBAAqB,iwBA8CxB,CAAA"}
1
+ {"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../src/proposal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAGnF,OAAO,EAAsB,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAkF,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AACnJ,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAG5F,qGAAqG;AACrG,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,uBAAuB,CAAC,UAAU,CAAC,CAAA;KAAE,CAAA;CACrG;AACD,iGAAiG;AACjG,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,eAAe,CAAA;CAC3B;AACD,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,cAAc,CAAA;AAGvH,QAAA,MAAM,eAAe,kOAciC,CAAA;AACtD,KAAK,UAAU,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAA;AACpC,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAElH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,kBAAkB,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,WAAW,CA2BvI;AAED,mGAAmG;AACnG,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AASD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,kBAAkB,EAkGhE,CAAA;AAMD,sGAAsG;AACtG,KAAK,OAAO,GAAG,mBAAmB,CAAA;AAClC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC5J,eAAO,MAAM,qBAAqB,iwBA8CxB,CAAA"}
package/dist/proposal.js CHANGED
@@ -75,7 +75,8 @@ export function applyFigureProposal(source, steps, consent) {
75
75
  const faces = Object.keys(FIGURE_FACES).join(' | ');
76
76
  const axes = AXES.join(' | ');
77
77
  const upper = AXES.map(a => a.toUpperCase()).join(' | ');
78
- const measure = `number (mm) | { from: { of: 'instance', axis: ${axes} } | { of: 'part', part, axis }, times?, plus? }`;
78
+ const source = `{ of: 'instance', axis: ${axes} } | { of: 'part', part, axis }`;
79
+ const measure = `number (mm) | { from: ${source}, times?, plus? } | { sum: [{ from: ${source}, times? }, ...], plus? }`;
79
80
  const alignment = `'centre' | 'min' | 'max' | { mm: ${measure} }`;
80
81
  /**
81
82
  * The words, in the order a figure is usually made. Each shape is the command's own, written short; the means say
@@ -109,8 +110,8 @@ export const FIGURE_PROPOSAL_GRAMMAR = [
109
110
  },
110
111
  {
111
112
  kind: 'set-joint',
112
- shape: `{ kind: 'set-joint', joint: { id, type: ${FIGURE_JOINT_TYPES.map(t => `'${t}'`).join(' | ')}, body0, body1, origin, axis?: ${upper}, lowerLimit?, upperLimit?, state?: { id, label? }, mimic?: { joint, multiplier, offset? }, travel?: { source: { of: 'instance', axis } | { of: 'part', part, axis }, times?, plus? } }, narrowRange?: true }`,
113
- means: 'The fastening record, made to move: a revolute turns about axis (limits in degrees, none = turns without end), a prismatic slides along it (limits in mm, or a travel that is a share of a length with a ratio control 0..1). mimic follows another joint. Take body0, body1 and origin from the fastening as it is.'
113
+ shape: `{ kind: 'set-joint', joint: { id, type: ${FIGURE_JOINT_TYPES.map(t => `'${t}'`).join(' | ')}, body0, body1, origin, axis?: ${upper}, lowerLimit?, upperLimit?, state?: { id, label? }, mimic?: { joint, multiplier, offset? } | { sum: [{ joint, multiplier }, ...], offset? }, travel?: { source: { of: 'instance', axis } | { of: 'part', part, axis }, times?, plus? } | { sum: [{ from, times? }, ...], plus? } }, narrowRange?: true }`,
114
+ means: 'The fastening record, made to move: a revolute turns about axis (limits in degrees, none = turns without end), a prismatic slides along it (limits in mm, or a travel that is a share of a length with a ratio control 0..1). mimic follows another joint, or the sum of several (a palletizer wrist is -(J2 + J3)). Take body0, body1 and origin from the fastening as it is.'
114
115
  },
115
116
  {
116
117
  kind: 'declare-instance-size',
@@ -119,7 +120,7 @@ export const FIGURE_PROPOSAL_GRAMMAR = [
119
120
  },
120
121
  {
121
122
  kind: 'link-dimension',
122
- shape: `{ kind: 'link-dimension', part, axis: ${axes}, source: { of: 'instance', axis } | { of: 'part', part, axis }, times?, plus?, replace?: true, narrowRange?: true }`,
123
+ shape: `{ kind: 'link-dimension', part, axis: ${axes}, source: { of: 'instance', axis } | { of: 'part', part, axis }, times?, plus?, replace?: true, narrowRange?: true } | { ..., sum: [{ from, times? }, ...], plus? }`,
123
124
  means: "This measure of the part follows the figure's size, or another part's measure, times a share plus a difference. A cylinder's X is its radius (read as the diameter), its Y its length."
124
125
  },
125
126
  {