@hatiolab/figure-model 0.1.90 → 0.1.91
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/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/v3-authoring-actions.d.ts +54 -8
- package/dist/v3-authoring-actions.d.ts.map +1 -1
- package/dist/v3-authoring-actions.js +259 -45
- package/dist/v3-authoring-actions.js.map +1 -1
- package/dist/v3-editor-workspace.d.ts +32 -0
- package/dist/v3-editor-workspace.d.ts.map +1 -1
- package/dist/v3-editor-workspace.js +5 -3
- package/dist/v3-editor-workspace.js.map +1 -1
- package/dist/v3-kernel-version.d.ts +1 -1
- package/dist/v3-kernel-version.js +1 -1
- package/dist/v3-part-edit.d.ts +13 -0
- package/dist/v3-part-edit.d.ts.map +1 -1
- package/dist/v3-part-edit.js +189 -61
- package/dist/v3-part-edit.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from './v3-words.ts';
|
|
2
2
|
export { V3ContractError } from './v3-contract.ts';
|
|
3
3
|
export { compileV3Graph } from './v3-graph.ts';
|
|
4
|
-
export { editV3Part, type V3PartEdit } from './v3-part-edit.ts';
|
|
4
|
+
export { editV3Part, removePart, type V3PartEdit } from './v3-part-edit.ts';
|
|
5
5
|
export { createV3Asset, addV3Box, addV3Primitive, type V3BoxCreation, type V3PrimitiveCreation } from './v3-create.ts';
|
|
6
6
|
export { createV3AuthoringSession, type V3AuthoringSession, type V3EditControl, type V3EditRequest, type V3InputChange } from './v3-authoring-session.ts';
|
|
7
7
|
export { createV3EditorWorkspace, type V3EditorWorkspace, type V3WorkspaceView, type V3WorkspaceExport, type V3LeaveOptions } from './v3-editor-workspace.ts';
|
|
@@ -18,7 +18,7 @@ export { V3_FACE_NORMALS } from './v3-surface.ts';
|
|
|
18
18
|
export { v3CostOf, v3TrianglesOf, type V3Cost } from './v3-cost.ts';
|
|
19
19
|
export { v3RenderBatchesOf, type V3RenderBatch, type V3RenderPlan, type V3UnbatchedReason } from './v3-render-batches.ts';
|
|
20
20
|
export { v3ScoreOf, v3PartCountOf, v3PartBudgetOf, v3GradeOf, v3MaterialKeyOf, v3IndependentBodiesOf, V3_GRADE_SCALE, V3_BUDGET_KEYS, V3_PER_INSTANCE, type V3Score, type V3BudgetUse, type V3BudgetKey } from './v3-score.ts';
|
|
21
|
-
export { applyV3Authoring, proposeV3Occupancy, proposeV3Proportion, type V3ProportionPlan, v3AttachmentsOf, v3BindingsOf, V3_FACES, type V3BindingPlace, type V3AuthoringAction, type V3DimensionSource, type V3Measure, type V3FaceAlignment, type V3Face, type V3MotionRequest, type V3OccupancyProposal, type V3Joint, type V3JointType, type V3JointAxis, V3_JOINT_TYPES, checkV3Joints } from './v3-authoring-actions.ts';
|
|
21
|
+
export { applyV3Authoring, proposeV3Occupancy, proposeV3Proportion, type V3ProportionPlan, v3AttachmentsOf, v3BindingsOf, V3_FACES, type V3BindingPlace, type V3AuthoringAction, type V3DimensionSource, type V3Measure, type V3FaceAlignment, type V3Face, type V3MotionRequest, type V3OccupancyProposal, type RemovalNotice, type V3Joint, type V3JointType, type V3JointAxis, V3_JOINT_TYPES, checkV3Joints } from './v3-authoring-actions.ts';
|
|
22
22
|
export type * from './v3-asset-types.ts';
|
|
23
23
|
export { V3_PLACEMENTS } from './v3-asset-types.ts';
|
|
24
24
|
export { applyV3Proposal, V3_PROPOSAL_GRAMMAR, V3_PROPOSAL_KINDS, type V3ProposalStep, type V3ProposalWord } from './v3-proposal.ts';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
export * from "./v3-words.js";
|
|
10
10
|
export { V3ContractError } from "./v3-contract.js";
|
|
11
11
|
export { compileV3Graph } from "./v3-graph.js";
|
|
12
|
-
export { editV3Part } from "./v3-part-edit.js";
|
|
12
|
+
export { editV3Part, removePart } from "./v3-part-edit.js";
|
|
13
13
|
export { createV3Asset, addV3Box, addV3Primitive } from "./v3-create.js";
|
|
14
14
|
export { createV3AuthoringSession } from "./v3-authoring-session.js";
|
|
15
15
|
export { createV3EditorWorkspace } from "./v3-editor-workspace.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAmB,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -454,17 +454,63 @@ export declare function renameV3PartInJoints(asset: V3Asset, from: string, to: s
|
|
|
454
454
|
*/
|
|
455
455
|
export declare function copyV3PartJoint(asset: V3Asset, from: string, to: string): void;
|
|
456
456
|
/**
|
|
457
|
-
*
|
|
458
|
-
*
|
|
457
|
+
* What taking a part away changed besides the part (chief architect's ruling 2026-09-27, ADR-0093): nothing the author
|
|
458
|
+
* did not pick goes with it; what hung from it, moved with it or followed it is let go, and named here, and one undo
|
|
459
|
+
* brings it all back.
|
|
459
460
|
*/
|
|
461
|
+
export interface RemovalNotice {
|
|
462
|
+
/** Parts that hung from it: they stand where they stood at rest, fastened to nothing; `control` moved one and went with its joint. */
|
|
463
|
+
released: Array<{
|
|
464
|
+
part: string;
|
|
465
|
+
control?: string;
|
|
466
|
+
}>;
|
|
467
|
+
/** Values that followed its size or place, now the numbers they were. */
|
|
468
|
+
fixed: Array<{
|
|
469
|
+
part: string;
|
|
470
|
+
value: number;
|
|
471
|
+
unit: string;
|
|
472
|
+
}>;
|
|
473
|
+
/** Parts that moved with its joint (or a released part's), each with a control of its own now. */
|
|
474
|
+
controls: Array<{
|
|
475
|
+
part: string;
|
|
476
|
+
control: string;
|
|
477
|
+
min: number;
|
|
478
|
+
max: number;
|
|
479
|
+
}>;
|
|
480
|
+
/** The figure stood on its face; it stands on no face of its own now. */
|
|
481
|
+
mountingFace?: boolean;
|
|
482
|
+
/** Places declared on it (a gripper's grip): they were its, and went with it. */
|
|
483
|
+
bindings?: Array<{
|
|
484
|
+
id: string;
|
|
485
|
+
label?: string;
|
|
486
|
+
}>;
|
|
487
|
+
}
|
|
460
488
|
/**
|
|
461
|
-
*
|
|
462
|
-
*
|
|
489
|
+
* Before a part is taken away (chief architect's ruling 2026-09-27, replacing the refusals of 2026-09-25). What hung
|
|
490
|
+
* from it stays where it stood at rest -- every control at zero -- fastened to nothing: its joint, and the motion and
|
|
491
|
+
* control the joint gave it, go. A part that moved with its joint gets a control of its own, named after the part,
|
|
492
|
+
* over the leader's range put through the multiplier and offset, starting where it stood. A value that followed its
|
|
493
|
+
* size or place becomes the number it is now. One thing is refused, by name: a row laid along it, or hanging in it --
|
|
494
|
+
* a row is made from its record, and a record needs the part (ADR-0093).
|
|
463
495
|
*/
|
|
464
|
-
export declare function
|
|
465
|
-
|
|
466
|
-
}
|
|
467
|
-
|
|
496
|
+
export declare function releaseV3PartJoints(asset: V3Asset, part: string, options?: {
|
|
497
|
+
spaceFittedAgain?: boolean;
|
|
498
|
+
}): RemovalNotice;
|
|
499
|
+
/**
|
|
500
|
+
* The nodes that make the declared space and nothing else: reached from what \`occupancy\` names, not from any drawn
|
|
501
|
+
* body, record or binding. Named by what they do, not by their names -- an older fitting named them \`occ.*\`
|
|
502
|
+
* (FORKLIFT), a still older one left some the declaration no longer reaches (WALL_LAMP), and a part's own chain the
|
|
503
|
+
* space also reads is the part's (2026-09-27).
|
|
504
|
+
*/
|
|
505
|
+
export declare function spaceOnlyNodesOf(asset: V3Asset): Set<string>;
|
|
506
|
+
/**
|
|
507
|
+
* A node no drawn body, declaration or record reaches, reading a value that is gone: an earlier fitting's space left
|
|
508
|
+
* reading a joint's node that went with its part (WALL_LAMP's shade, 2026-09-27). It was read by nothing before, and it
|
|
509
|
+
* goes with what it read. A node something does reach is left, and the figure is refused as broken.
|
|
510
|
+
*/
|
|
511
|
+
export declare function dropDeadDanglers(asset: V3Asset): void;
|
|
512
|
+
/** Every value a drawn body, a declaration or a record reaches, however far up. */
|
|
513
|
+
export declare function liveRefsOf(asset: V3Asset): Set<string>;
|
|
468
514
|
/**
|
|
469
515
|
* The records are the canon: made again from them, the joints' nodes must be the nodes the asset holds. An asset
|
|
470
516
|
* whose nodes or records were edited apart is refused, not quietly rebuilt (ADR-0093, chief architect's condition).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3-authoring-actions.d.ts","sourceRoot":"","sources":["../src/v3-authoring-actions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"v3-authoring-actions.d.ts","sourceRoot":"","sources":["../src/v3-authoring-actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1727,7 +1727,8 @@ export function renameV3PartInJoints(asset, from, to) {
|
|
|
1727
1727
|
* What reads a part that is to be taken away, said in the author's words: the space declared from the parts, another
|
|
1728
1728
|
* part's size or place that follows it. Taking it would leave them reading nothing (빈틈 H, 2026-09-25).
|
|
1729
1729
|
*/
|
|
1730
|
-
|
|
1730
|
+
/** `spaceFittedAgain`: the space is declared again once the part is gone, so its reading the part is no refusal. */
|
|
1731
|
+
function refuseIfRead(asset, part, spaceFittedAgain = false) {
|
|
1731
1732
|
const m = asset.document.model;
|
|
1732
1733
|
const own = (id) => id === part || id.startsWith(`${part}.`);
|
|
1733
1734
|
const mine = new Set([
|
|
@@ -1737,20 +1738,9 @@ function refuseIfRead(asset, part) {
|
|
|
1737
1738
|
]);
|
|
1738
1739
|
const readsOf = (refs) => (n) => [...n.args, ...Object.values(n.params ?? {})].some((r) => typeof r === 'string' && refs.has(r));
|
|
1739
1740
|
const readers = m.nodes.filter((n) => !own(n.id) && readsOf(mine)(n));
|
|
1740
|
-
|
|
1741
|
+
const space = spaceOnlyNodesOf(asset);
|
|
1742
|
+
if (!spaceFittedAgain && (readers.some((n) => space.has(n.id)) || stringsIn(asset.occupancy).some(r => mine.has(r))))
|
|
1741
1743
|
fail('PART_REFERENCED', part, `${part} is in the space the figure declares; declare the space again, or fit it to the parts, without it first`);
|
|
1742
|
-
/*
|
|
1743
|
-
Values another part shares stay when this one goes (the pruning keeps what is still read). The joint's own nodes
|
|
1744
|
-
do not: they go with the joint, so a part reading them -- following where this one is fastened -- is named.
|
|
1745
|
-
*/
|
|
1746
|
-
const jointOwned = new Set(m.nodes
|
|
1747
|
-
.filter((n) => n.id.startsWith(`${part}.on.`) || [`${part}.seat.rigid`, `${part}.chain`, `${part}.world`, `${part}.turned`, `${part}.motion`].includes(n.id))
|
|
1748
|
-
.flatMap((n) => Object.values(n.outputs)));
|
|
1749
|
-
const followers = [...new Set(m.nodes.filter((n) => !own(n.id) && readsOf(jointOwned)(n)).map((n) => String(n.id).split('.')[0]))].filter(p => p !== part && !String(p).startsWith('occupancy'));
|
|
1750
|
-
const children = new Set(((asset.joints ?? []).filter(j => 'part' in j.body0 && j.body0.part === part)).map(j => j.body1.part));
|
|
1751
|
-
const others = followers.filter(p => !children.has(p));
|
|
1752
|
-
if (others.length)
|
|
1753
|
-
fail('PART_REFERENCED', part, `${others.join(', ')} ${others.length > 1 ? 'follow' : 'follows'} ${part}'s size or place; make ${others.length > 1 ? 'them' : 'it'} ${others.length > 1 ? 'their' : 'its'} own number first`);
|
|
1754
1744
|
}
|
|
1755
1745
|
/**
|
|
1756
1746
|
* A copied part is fastened as the original is: its own record, the same faces and place, so it is not held by nodes
|
|
@@ -1777,43 +1767,267 @@ export function copyV3PartJoint(asset, from, to) {
|
|
|
1777
1767
|
asset.joints = [...joints, copy];
|
|
1778
1768
|
rewriteJoints(asset);
|
|
1779
1769
|
}
|
|
1770
|
+
/** XYZ angles in degrees of a rotation written as rigid@1 writes it, Rx·Ry·Rz. */
|
|
1771
|
+
function eulerXYZ(r) {
|
|
1772
|
+
const deg = (v) => round6((v * 180) / Math.PI) + 0;
|
|
1773
|
+
const sy = Math.max(-1, Math.min(1, r[0][2]));
|
|
1774
|
+
const ry = Math.asin(sy);
|
|
1775
|
+
if (Math.abs(Math.cos(ry)) < 1e-9)
|
|
1776
|
+
return [deg(Math.atan2(r[2][1], r[1][1])), deg(ry), 0];
|
|
1777
|
+
return [deg(Math.atan2(-r[1][2], r[2][2])), deg(ry), deg(Math.atan2(-r[0][1], r[0][0]))];
|
|
1778
|
+
}
|
|
1779
|
+
/** The unit a value of this type is written in, as the graph keeps it (base units), or undefined for a pose and the rest. */
|
|
1780
|
+
function baseUnitOf(type) {
|
|
1781
|
+
const t = JSON.stringify(type);
|
|
1782
|
+
if (t === '[1,0,0]')
|
|
1783
|
+
return 'mm';
|
|
1784
|
+
if (t === '[0,1,0]')
|
|
1785
|
+
return 'rad';
|
|
1786
|
+
if (t === '[0,0,1]')
|
|
1787
|
+
return 's';
|
|
1788
|
+
if (t === '[0,0,0]')
|
|
1789
|
+
return 'ratio';
|
|
1790
|
+
if (t === '{"kind":"count"}')
|
|
1791
|
+
return 'count';
|
|
1792
|
+
return undefined;
|
|
1793
|
+
}
|
|
1780
1794
|
/**
|
|
1781
|
-
* Before a part is taken away
|
|
1782
|
-
*
|
|
1795
|
+
* Before a part is taken away (chief architect's ruling 2026-09-27, replacing the refusals of 2026-09-25). What hung
|
|
1796
|
+
* from it stays where it stood at rest -- every control at zero -- fastened to nothing: its joint, and the motion and
|
|
1797
|
+
* control the joint gave it, go. A part that moved with its joint gets a control of its own, named after the part,
|
|
1798
|
+
* over the leader's range put through the multiplier and offset, starting where it stood. A value that followed its
|
|
1799
|
+
* size or place becomes the number it is now. One thing is refused, by name: a row laid along it, or hanging in it --
|
|
1800
|
+
* a row is made from its record, and a record needs the part (ADR-0093).
|
|
1783
1801
|
*/
|
|
1802
|
+
export function releaseV3PartJoints(asset, part, options = {}) {
|
|
1803
|
+
const a = asset;
|
|
1804
|
+
const m = a.document.model;
|
|
1805
|
+
const notice = { released: [], fixed: [], controls: [] };
|
|
1806
|
+
refuseIfRead(a, part, options.spaceFittedAgain);
|
|
1807
|
+
let joints = (a.joints ?? []);
|
|
1808
|
+
const rows = joints.filter(j => 'part' in j.body0 && j.body0.part === part && j.repeat).map(j => j.body1.part);
|
|
1809
|
+
if (rows.length)
|
|
1810
|
+
fail('PART_ROW', part, `${rows.join(', ')} ${rows.length > 1 ? 'are rows' : 'is a row'} laid along ${part}; fasten ${rows.length > 1 ? 'them' : 'it'} to another part, or make ${rows.length > 1 ? 'them' : 'it'} one part, first`);
|
|
1811
|
+
const own = joints.find(j => j.body1.part === part);
|
|
1812
|
+
const children = joints.filter(j => 'part' in j.body0 && j.body0.part === part);
|
|
1813
|
+
if (own?.repeat && children.length)
|
|
1814
|
+
fail('PART_ROW', part, `${children.map(j => j.body1.part).join(', ')} ${children.length > 1 ? 'hang' : 'hangs'} in the row ${part}, on every copy; take ${children.length > 1 ? 'them' : 'it'} off first`);
|
|
1815
|
+
const inputs = (over = {}) => ({ ...a.designInputs, ...a.stateDefaults, ...over });
|
|
1816
|
+
const controls = m.inputs.filter((i) => i.role === 'state');
|
|
1817
|
+
const rest = Object.fromEntries(controls.map((i) => [i.id, Math.min(i.max, Math.max(i.min, 0))]));
|
|
1818
|
+
const graph = compileV3Graph(m);
|
|
1819
|
+
const atRest = graph.evaluate(inputs(rest)).values;
|
|
1820
|
+
const now = graph.evaluate(inputs()).values;
|
|
1821
|
+
/* A part moving with a joint that goes: its own control, over what the leader's distance or angle came to. */
|
|
1822
|
+
const going = new Set([...(own ? [own.id] : []), ...children.map(j => j.id)]);
|
|
1823
|
+
/* A follower has no control of its own, so its own record's nominal id is not taken. */
|
|
1824
|
+
const taken = new Set([...m.inputs.map((i) => i.id), ...joints.filter(j => !j.mimic).map(stateIdOf)]);
|
|
1825
|
+
for (const f of joints.filter(o => o.mimic && going.has(o.mimic.joint) && !going.has(o.id))) {
|
|
1826
|
+
const leader = joints.find(o => o.id === f.mimic.joint);
|
|
1827
|
+
const leaderPart = leader.body1.part;
|
|
1828
|
+
const quantity = nodeById(m, `${leaderPart}.motion`)?.args[3] ?? stateIdOf(leader);
|
|
1829
|
+
const state = m.inputs.find((i) => i.id === stateIdOf(leader));
|
|
1830
|
+
const distance = (value) => Number(graph.evaluate(inputs({ [stateIdOf(leader)]: value })).values[quantity]);
|
|
1831
|
+
const turn = f.type === 'revolute';
|
|
1832
|
+
const toUnit = (base) => round6(turn ? (base * 180) / Math.PI : base);
|
|
1833
|
+
const offset = (f.mimic.offset ?? 0) * (turn ? Math.PI / 180 : 1);
|
|
1834
|
+
const follow = (base) => toUnit(base * f.mimic.multiplier + offset);
|
|
1835
|
+
const [lo, hi] = [follow(distance(state?.min ?? 0)), follow(distance(state?.max ?? 1))].sort((x, y) => x - y);
|
|
1836
|
+
let id = f.body1.part;
|
|
1837
|
+
for (let n = 2; taken.has(id); n++)
|
|
1838
|
+
id = `${f.body1.part}-${n}`;
|
|
1839
|
+
taken.add(id);
|
|
1840
|
+
const start = Math.min(hi, Math.max(lo, follow(Number(now[quantity]))));
|
|
1841
|
+
const { mimic: _led, travel: _share, ...alone } = f;
|
|
1842
|
+
joints = joints.map(o => (o.id === f.id ? { ...alone, lowerLimit: lo, upperLimit: hi, state: { ...(f.state ?? {}), id, start } } : o));
|
|
1843
|
+
notice.controls.push({ part: f.body1.part, control: id, min: lo, max: hi });
|
|
1844
|
+
}
|
|
1845
|
+
/* A value in a record that followed the part: the number it is now. */
|
|
1846
|
+
const freezeMeasure = (measure, where) => {
|
|
1847
|
+
if (!measure || typeof measure !== 'object' || measure.from.of !== 'part' || measure.from.part !== part)
|
|
1848
|
+
return measure;
|
|
1849
|
+
const probe = structuredClone(m);
|
|
1850
|
+
const ref = stableDimension(probe, part, measure.from.axis, where);
|
|
1851
|
+
const value = round6(Number(compileV3Graph(probe).evaluate(inputs()).values[ref]) * (measure.times ?? 1) + (measure.plus ?? 0));
|
|
1852
|
+
notice.fixed.push({ part: where, value, unit: 'mm' });
|
|
1853
|
+
return value;
|
|
1854
|
+
};
|
|
1855
|
+
joints = joints.map(j => {
|
|
1856
|
+
if (j.id === own?.id || children.includes(j))
|
|
1857
|
+
return j;
|
|
1858
|
+
const out = structuredClone(j);
|
|
1859
|
+
if (out.origin?.gap !== undefined)
|
|
1860
|
+
out.origin.gap = freezeMeasure(out.origin.gap, j.body1.part);
|
|
1861
|
+
if (out.repeat)
|
|
1862
|
+
out.repeat.pitch = freezeMeasure(out.repeat.pitch, j.body1.part);
|
|
1863
|
+
if (out.travel?.source?.of === 'part' && out.travel.source.part === part) {
|
|
1864
|
+
const plus = freezeMeasure({ from: out.travel.source, times: out.travel.times, plus: out.travel.plus }, j.body1.part);
|
|
1865
|
+
out.travel = { plus };
|
|
1866
|
+
}
|
|
1867
|
+
return out;
|
|
1868
|
+
});
|
|
1869
|
+
/*
|
|
1870
|
+
What reads a value that goes -- where the part, or a part let go of, is fastened (its joint's nodes), or where it is
|
|
1871
|
+
drawn -- and is not the space (fitted again, or refused above): the number it is now. Values the part shares with
|
|
1872
|
+
another (a shape two placements draw) stay, as before; they do not go.
|
|
1873
|
+
*/
|
|
1874
|
+
const jointNodes = (p) => (n) => n.id.startsWith(`${p}.on.`) || n.id.startsWith(`${p}.row`) || [`${p}.seat.rigid`, `${p}.chain`, `${p}.world`, `${p}.turned`, `${p}.motion`, `${p}.layout`, `${p}.assembly`, `${p}.repeat`].includes(n.id);
|
|
1875
|
+
const leaving = [part, ...children.map(j => j.body1.part)];
|
|
1876
|
+
const goingNodes = new Set(m.nodes.filter(n => leaving.some(p => jointNodes(p)(n))).map(n => n.id));
|
|
1877
|
+
const goingRefs = new Set(m.nodes.filter(n => goingNodes.has(n.id)).flatMap(n => Object.values(n.outputs)));
|
|
1878
|
+
const types = graph.outputTypes;
|
|
1879
|
+
const live = liveRefsOf(a);
|
|
1880
|
+
const space = spaceOnlyNodesOf(a);
|
|
1881
|
+
const partOf = (id) => String(id).split('.')[0];
|
|
1882
|
+
for (const n of m.nodes) {
|
|
1883
|
+
/* The parts leaving are released below; a row's copies are gathered again from the records. */
|
|
1884
|
+
if (goingNodes.has(n.id) || leaving.includes(partOf(n.id)) || n.op === 'assembly@1' || space.has(n.id) || !Object.values(n.outputs).some(o => live.has(o)))
|
|
1885
|
+
continue;
|
|
1886
|
+
/* A joint's own nodes are made again from its record, from where its parent stands then. */
|
|
1887
|
+
if (joints.some(j => jointNodes(j.body1.part)(n)))
|
|
1888
|
+
continue;
|
|
1889
|
+
n.args = n.args.map((ref, i) => {
|
|
1890
|
+
if (!goingRefs.has(ref))
|
|
1891
|
+
return ref;
|
|
1892
|
+
const unit = baseUnitOf(types[ref]);
|
|
1893
|
+
const value = now[ref];
|
|
1894
|
+
if (typeof value === 'number' && unit) {
|
|
1895
|
+
notice.fixed.push({ part: partOf(n.id), value: round6(unit === 'rad' ? (value * 180) / Math.PI : value), unit: unit === 'rad' ? 'deg' : unit });
|
|
1896
|
+
return constantOf(m, unit, round6(value) + 0, 'fixed');
|
|
1897
|
+
}
|
|
1898
|
+
const pose = value;
|
|
1899
|
+
const type = types[ref];
|
|
1900
|
+
if (pose?.r && pose.t && type?.kind === 'transform') {
|
|
1901
|
+
const id = namer(m, `${n.id}.fixed`)(`pose.${i}`);
|
|
1902
|
+
const [rx, ry, rz] = eulerXYZ(pose.r);
|
|
1903
|
+
m.nodes.push({ id, op: 'rigid@1', args: [...pose.t.map(v => constantOf(m, 'mm', round6(v) + 0, 'fixed')), ...[rx, ry, rz].map(v => constantOf(m, 'rad', round6((v * Math.PI) / 180), 'fixed'))], outputs: { pose: `${id}.value` }, params: { from: type.from, to: type.to } });
|
|
1904
|
+
notice.fixed.push({ part: partOf(n.id), value: 0, unit: 'pose' });
|
|
1905
|
+
return `${id}.value`;
|
|
1906
|
+
}
|
|
1907
|
+
fail('PART_REFERENCED', part, `${partOf(n.id)} reads ${part}'s ${ref}, which cannot be written as a number`);
|
|
1908
|
+
});
|
|
1909
|
+
}
|
|
1910
|
+
/* What hung from it: where it stood at rest, fastened to nothing. */
|
|
1911
|
+
const standing = new Map(children.map(j => [j.body1.part, atRest[nodeById(m, j.body1.part).args[1]]]));
|
|
1912
|
+
a.joints = joints.filter(j => j.id !== own?.id && !children.includes(j));
|
|
1913
|
+
if (!a.joints.length)
|
|
1914
|
+
delete a.joints;
|
|
1915
|
+
for (const j of children) {
|
|
1916
|
+
const child = j.body1.part;
|
|
1917
|
+
const control = j.type !== 'fixed' && !j.mimic ? stateIdOf(j) : undefined;
|
|
1918
|
+
stripJoint(a, j);
|
|
1919
|
+
const at = standing.get(child);
|
|
1920
|
+
const pose = nodeById(m, `${child}.pose`);
|
|
1921
|
+
const turn = eulerXYZ(at.r);
|
|
1922
|
+
const values = [...at.t.map(v => round6(v) + 0), ...turn];
|
|
1923
|
+
const old = pose.args.slice(0, 6);
|
|
1924
|
+
pose.args = [...AXES.map(axis => `${child}.position.${axis}`), ...AXES.map(axis => `${child}.rotation.${axis}`)].map((id, i) => {
|
|
1925
|
+
if (!m.inputs.some((n) => n.id === id))
|
|
1926
|
+
m.inputs.push({ id, unit: i < 3 ? 'mm' : 'deg', min: -Number.MAX_VALUE, max: Number.MAX_VALUE, role: 'design' });
|
|
1927
|
+
a.designInputs[id] = values[i];
|
|
1928
|
+
return id;
|
|
1929
|
+
});
|
|
1930
|
+
for (const ref of old)
|
|
1931
|
+
if (!pose.args.includes(ref))
|
|
1932
|
+
dropIfUnused(a, ref, ownInput(m, child, ref) ? ref : undefined);
|
|
1933
|
+
notice.released.push({ part: child, ...(control && !m.inputs.some((i) => i.id === control) ? { control } : {}) });
|
|
1934
|
+
}
|
|
1935
|
+
if (own)
|
|
1936
|
+
stripJoint(a, own);
|
|
1937
|
+
dropDeadDanglers(a);
|
|
1938
|
+
if (a.joints?.length)
|
|
1939
|
+
rewriteJoints(a);
|
|
1940
|
+
return notice;
|
|
1941
|
+
}
|
|
1784
1942
|
/**
|
|
1785
|
-
* The
|
|
1786
|
-
*
|
|
1943
|
+
* The nodes that make the declared space and nothing else: reached from what \`occupancy\` names, not from any drawn
|
|
1944
|
+
* body, record or binding. Named by what they do, not by their names -- an older fitting named them \`occ.*\`
|
|
1945
|
+
* (FORKLIFT), a still older one left some the declaration no longer reaches (WALL_LAMP), and a part's own chain the
|
|
1946
|
+
* space also reads is the part's (2026-09-27).
|
|
1787
1947
|
*/
|
|
1788
|
-
export function
|
|
1948
|
+
export function spaceOnlyNodesOf(asset) {
|
|
1789
1949
|
const a = asset;
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1950
|
+
const m = a.document.model;
|
|
1951
|
+
const reach = (from) => {
|
|
1952
|
+
const seen = new Set();
|
|
1953
|
+
for (const pending = [...from]; pending.length;) {
|
|
1954
|
+
const writer = writerOf(m, pending.pop());
|
|
1955
|
+
if (!writer || seen.has(writer.id))
|
|
1956
|
+
continue;
|
|
1957
|
+
seen.add(writer.id);
|
|
1958
|
+
pending.push(...writer.args, ...stringsIn(writer.params));
|
|
1959
|
+
}
|
|
1960
|
+
return seen;
|
|
1961
|
+
};
|
|
1962
|
+
const drawn = reach([
|
|
1963
|
+
...m.nodes.filter((n) => n.op === 'place@1' || n.op === 'repeat@1').flatMap((n) => Object.values(n.outputs)),
|
|
1964
|
+
...stringsIn(a.appearance),
|
|
1965
|
+
...stringsIn(a.document.capabilities),
|
|
1966
|
+
...stringsIn(a.drivers),
|
|
1967
|
+
...stringsIn(a.publicInputs),
|
|
1968
|
+
...stringsIn(a.joints)
|
|
1969
|
+
]);
|
|
1970
|
+
return new Set([...reach(stringsIn(a.occupancy))].filter(id => !drawn.has(id)));
|
|
1800
1971
|
}
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
const
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1972
|
+
/**
|
|
1973
|
+
* A node no drawn body, declaration or record reaches, reading a value that is gone: an earlier fitting's space left
|
|
1974
|
+
* reading a joint's node that went with its part (WALL_LAMP's shade, 2026-09-27). It was read by nothing before, and it
|
|
1975
|
+
* goes with what it read. A node something does reach is left, and the figure is refused as broken.
|
|
1976
|
+
*/
|
|
1977
|
+
export function dropDeadDanglers(asset) {
|
|
1978
|
+
const model = asset.document.model;
|
|
1979
|
+
const strings = (v) => typeof v === 'string' ? [v] : Array.isArray(v) ? v.flatMap(strings) : v && typeof v === 'object' ? Object.values(v).flatMap(strings) : [];
|
|
1980
|
+
for (;;) {
|
|
1981
|
+
const written = new Set([...model.nodes.flatMap(n => Object.values(n.outputs)), ...model.inputs.map(i => i.id), ...model.constants.map(c => c.id)]);
|
|
1982
|
+
const live = new Set();
|
|
1983
|
+
const pending = [
|
|
1984
|
+
...model.nodes.filter(n => n.op === 'place@1' || n.op === 'repeat@1').flatMap(n => Object.values(n.outputs)),
|
|
1985
|
+
...strings(asset.appearance),
|
|
1986
|
+
...strings(asset.occupancy),
|
|
1987
|
+
...strings(asset.document.capabilities),
|
|
1988
|
+
...strings(asset.drivers),
|
|
1989
|
+
...strings(asset.publicInputs),
|
|
1990
|
+
...strings(asset.joints)
|
|
1991
|
+
];
|
|
1992
|
+
while (pending.length) {
|
|
1993
|
+
const ref = pending.pop();
|
|
1994
|
+
if (live.has(ref))
|
|
1995
|
+
continue;
|
|
1996
|
+
live.add(ref);
|
|
1997
|
+
const writer = model.nodes.find(n => Object.values(n.outputs).includes(ref));
|
|
1998
|
+
if (writer)
|
|
1999
|
+
pending.push(...writer.args, ...strings(writer.params));
|
|
2000
|
+
}
|
|
2001
|
+
const dead = model.nodes.filter(n => n.args.some(a => !written.has(a)) && !Object.values(n.outputs).some(o => live.has(o)));
|
|
2002
|
+
if (!dead.length)
|
|
2003
|
+
return;
|
|
2004
|
+
model.nodes = model.nodes.filter(n => !dead.includes(n));
|
|
2005
|
+
}
|
|
2006
|
+
}
|
|
2007
|
+
/** Every value a drawn body, a declaration or a record reaches, however far up. */
|
|
2008
|
+
export function liveRefsOf(asset) {
|
|
2009
|
+
const a = asset;
|
|
2010
|
+
const m = a.document.model;
|
|
2011
|
+
const live = new Set();
|
|
2012
|
+
const pending = [
|
|
2013
|
+
...m.nodes.filter((n) => n.op === 'place@1' || n.op === 'repeat@1').flatMap((n) => Object.values(n.outputs)),
|
|
2014
|
+
...stringsIn(a.appearance),
|
|
2015
|
+
...stringsIn(a.occupancy),
|
|
2016
|
+
...stringsIn(a.document.capabilities),
|
|
2017
|
+
...stringsIn(a.drivers),
|
|
2018
|
+
...stringsIn(a.publicInputs),
|
|
2019
|
+
...stringsIn(a.joints)
|
|
2020
|
+
];
|
|
2021
|
+
while (pending.length) {
|
|
2022
|
+
const ref = pending.pop();
|
|
2023
|
+
if (live.has(ref))
|
|
2024
|
+
continue;
|
|
2025
|
+
live.add(ref);
|
|
2026
|
+
const writer = writerOf(m, ref);
|
|
2027
|
+
if (writer)
|
|
2028
|
+
pending.push(...writer.args, ...stringsIn(writer.params));
|
|
2029
|
+
}
|
|
2030
|
+
return live;
|
|
1817
2031
|
}
|
|
1818
2032
|
function setJoint(asset, joint) {
|
|
1819
2033
|
// As JSON: a field left undefined is a field not there, which is how the asset stores it.
|