@code3d/core 0.0.1-alpha.4 → 0.0.1-alpha.7

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 (43) hide show
  1. package/README.md +42 -5
  2. package/bld/chunks/{chunk-J77FMYFY.js → chunk-4WLVDYUJ.js} +992 -545
  3. package/bld/chunks/chunk-4WLVDYUJ.js.map +7 -0
  4. package/bld/chunks/{chunk-PAIFBNU4.js → chunk-C3AJ6WNB.js} +2 -2
  5. package/bld/chunks/{chunk-OQLJDJIF.js → chunk-TCMEEKWL.js} +2 -2
  6. package/bld/chunks/{chunk-ZMT6EFHL.js → chunk-VHSPHJ5F.js} +3 -3
  7. package/bld/library/bound-solver.d.ts +29 -5
  8. package/bld/library/bound-solver.d.ts.map +1 -1
  9. package/bld/library/cached.d.ts +5 -3
  10. package/bld/library/cached.d.ts.map +1 -1
  11. package/bld/library/index.d.ts +4 -4
  12. package/bld/library/index.d.ts.map +1 -1
  13. package/bld/library/index.js +17 -3
  14. package/bld/library/kernel-cache.d.ts +6 -3
  15. package/bld/library/kernel-cache.d.ts.map +1 -1
  16. package/bld/library/relation-solver.d.ts +12 -7
  17. package/bld/library/relation-solver.d.ts.map +1 -1
  18. package/bld/library/replicad.js +2 -2
  19. package/bld/library/runtime.d.ts +218 -82
  20. package/bld/library/runtime.d.ts.map +1 -1
  21. package/bld/library/sketch.d.ts +2 -2
  22. package/bld/library/sketch.d.ts.map +1 -1
  23. package/bld/library/topology.d.ts +2 -0
  24. package/bld/library/topology.d.ts.map +1 -1
  25. package/bld/node/index.js +19 -5
  26. package/bld/node/replicad.js +4 -4
  27. package/bld/tooling/index.d.ts +3 -3
  28. package/bld/tooling/index.d.ts.map +1 -1
  29. package/bld/tooling/index.js +18 -10
  30. package/package.json +1 -1
  31. package/src/library/bound-solver.ts +103 -73
  32. package/src/library/cached.ts +29 -8
  33. package/src/library/index.ts +15 -4
  34. package/src/library/kernel-cache.ts +37 -5
  35. package/src/library/relation-solver.ts +194 -110
  36. package/src/library/runtime.ts +1046 -442
  37. package/src/library/sketch.ts +3 -3
  38. package/src/library/topology.ts +13 -2
  39. package/src/tooling/index.ts +15 -7
  40. package/bld/chunks/chunk-J77FMYFY.js.map +0 -7
  41. /package/bld/chunks/{chunk-PAIFBNU4.js.map → chunk-C3AJ6WNB.js.map} +0 -0
  42. /package/bld/chunks/{chunk-OQLJDJIF.js.map → chunk-TCMEEKWL.js.map} +0 -0
  43. /package/bld/chunks/{chunk-ZMT6EFHL.js.map → chunk-VHSPHJ5F.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { SketchFrame, type Constraint, type FaceAnchor, type FaceModel } from './runtime.js';
1
+ import { SketchFrame, type Relation, type FaceAnchor, type FaceModel } from './runtime.js';
2
2
  /** Current coordinates in a sketch's local two-dimensional plane. */
3
3
  export type SketchPosition = readonly [x: number, y: number];
4
4
  export type SketchArcDirection = 'cw' | 'ccw';
@@ -52,7 +52,7 @@ export interface Sketch {
52
52
  /** The unbounded local XZ plane (+Y normal), independent of closed regions. */
53
53
  readonly plane: FaceAnchor;
54
54
  /** Relates this immutable sketch's frame without changing its two-dimensional data. */
55
- relate(build: (self: Sketch) => Constraint | readonly Constraint[]): Sketch;
55
+ relate(build: (self: Sketch) => Relation | readonly Relation[]): Sketch;
56
56
  /** References a point defined in this layer. */
57
57
  point(id: number): SketchPoint;
58
58
  /** Adds a local layer while retaining the upstream sketch as read-only input. */
@@ -1 +1 @@
1
- {"version":3,"file":"sketch.d.ts","sourceRoot":"","sources":["../../src/library/sketch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sketch.d.ts","sourceRoot":"","sources":["../../src/library/sketch.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,WAAW,EAGX,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAStB,qEAAqE;AACrE,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,KAAK,CAAC;AAE9C,MAAM,MAAM,WAAW,GACnB,SAAS;IACP,IAAI,EAAE,OAAO;IACb,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,WAAW;CAC5C,GACD,SAAS;IACP,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,MAAM;IACV,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;CAC1E,GACD,SAAS;IACP,IAAI,EAAE,QAAQ;IACd,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC;CAC9D,GACD,SAAS;IACP,IAAI,EAAE,KAAK;IACX,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,SAAS;QACb,MAAM,EAAE,MAAM,GAAG,WAAW;QAC5B,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,MAAM,GAAG,WAAW;QAC3B,GAAG,EAAE,MAAM,GAAG,WAAW;QACzB,SAAS,EAAE,kBAAkB;KAC9B;CACF,CAAC;AAEN,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,6EAA6E;AAC7E,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,MAAM,GAAG,WAAW,IACjD,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,GAClC,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,GACxD,SAAS;IACP,IAAI,EAAE,UAAU,GAAG,eAAe;IAClC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;CACjC;AACH,0FAA0F;GACxF,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GACzE,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACtD,SAAS;IACP,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CACjD,GACD,SAAS;IACP,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO;IAC7C,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;CACd,GACD,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACnC,WAAW,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC3C,CAAC,CAAC;AAEH,yEAAyE;AACzE,MAAM,WAAW,MAAM;IACrB,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,uFAAuF;IACvF,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,MAAM,CAAC;IACxE,gDAAgD;IAChD,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,CAAC;IAC/B,iFAAiF;IACjF,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;IAC1E,kFAAkF;IAClF,IAAI,IAAI,SAAS,CAAC;IAClB,4FAA4F;IAC5F,KAAK,IAAI,SAAS,SAAS,EAAE,CAAC;CAC/B;AAED,KAAK,UAAU,GAAG,QAAQ,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,KAAK,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACzC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC;AA+TH,gFAAgF;AAChF,wBAAgB,MAAM,CACpB,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,EAChC,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM,CAER;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAE1D;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9D;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAEtD;AAED,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,uEAAuE;IACvE,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC;AAEvE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;CAC3D,CAAC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAC1D,SAAS,EAAE,kBAAkB,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAC5B,mBAAmB,GACnB,kBAAkB,GAClB,oBAAoB,GACpB,iBAAiB,CAAC;AAEtB,4EAA4E;AAC5E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,oBAAoB,GAC3B,SAAS,MAAM,EAAE,CAUnB;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,oBAAoB,EAC5B,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,oBAAoB,CAYtB;AAED,iFAAiF;AACjF,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC1C,WAAW,EAAE,SAAS,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC7D,gBAAgB,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC;AAEH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GACnC,cAAc,CAsChB;AAyCD,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,SAiB7C,kBAAkB,KAAG,kBAAkB,CAkB9D;AA8ED,wEAAwE;AACxE,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,cAAc,EAAE,GAChC,OAAO,CAaT;AAED,kFAAkF;AAClF,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,SAAS,cAAc,EAAE,EACjC,SAAS,EAAE,cAAc,GACxB,IAAI,CAiBN;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,cAAc,EAAE,EACjC,IAAI,CAAC,EAAE,QAAQ,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,gFAAgF;IAChF,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,uEAAuE;IACvE,KAAK,CAAC,EAAE,SAAS,QAAQ,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC,EAAE,CAAC;CAC7E,CAAC,GACD,cAAc,CAmPhB"}
@@ -61,6 +61,7 @@ type StableEdgeGroup = Readonly<{
61
61
  start: number;
62
62
  count: number;
63
63
  edgeId: EdgeId;
64
+ linear: boolean;
64
65
  }>;
65
66
  type StableSurfaceGroup = Readonly<{
66
67
  start: number;
@@ -81,6 +82,7 @@ export declare function resolveTopologySelection(kind: TopologyKind, topology: S
81
82
  export declare function topologyVertexPoints(shape: AnyShape, topology: VertexTopology, vertexIds: readonly VertexId[]): readonly TopologyPointData[];
82
83
  export declare function topologyEdgeDirections(shape: AnyShape, topology: EdgeTopology, edgeIds: readonly EdgeId[]): readonly TopologyDirectionData[];
83
84
  export declare function topologySurfaceDirections(shape: AnyShape, topology: SurfaceTopology, surfaceIds: readonly SurfaceId[]): readonly TopologyDirectionData[];
85
+ export declare function assertTopologyId(kind: TopologyKind, id: TopologyId): void;
84
86
  export type TopologyInput = Readonly<{
85
87
  shape: AnyShape;
86
88
  topology: ShapeTopology;
@@ -1 +1 @@
1
- {"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../../src/library/topology.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../../src/library/topology.ts"],"names":[],"mappings":"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"}
package/bld/node/index.js CHANGED
@@ -1,11 +1,13 @@
1
- import "../chunks/chunk-ZMT6EFHL.js";
1
+ import "../chunks/chunk-VHSPHJ5F.js";
2
2
  import "../chunks/chunk-TJIN6S4R.js";
3
- import "../chunks/chunk-OQLJDJIF.js";
3
+ import "../chunks/chunk-TCMEEKWL.js";
4
4
  import {
5
5
  arc,
6
+ axisEdge,
7
+ axisLine,
6
8
  bezier,
7
9
  box,
8
- cached,
10
+ cache,
9
11
  circle,
10
12
  coil,
11
13
  cut,
@@ -19,22 +21,29 @@ import {
19
21
  intersect,
20
22
  line,
21
23
  loft,
24
+ offset,
25
+ pivot,
26
+ pivotPoint,
27
+ pivotVertex,
22
28
  point,
23
29
  rectangle,
24
30
  regularPolygon,
25
31
  regularPrism,
32
+ rotate,
26
33
  sketch,
27
34
  sphere,
28
35
  spline,
29
36
  text,
30
37
  tube,
31
38
  union
32
- } from "../chunks/chunk-J77FMYFY.js";
39
+ } from "../chunks/chunk-4WLVDYUJ.js";
33
40
  export {
34
41
  arc,
42
+ axisEdge,
43
+ axisLine,
35
44
  bezier,
36
45
  box,
37
- cached,
46
+ cache,
38
47
  circle,
39
48
  coil,
40
49
  cut,
@@ -48,10 +57,15 @@ export {
48
57
  intersect,
49
58
  line,
50
59
  loft,
60
+ offset,
61
+ pivot,
62
+ pivotPoint,
63
+ pivotVertex,
51
64
  point,
52
65
  rectangle,
53
66
  regularPolygon,
54
67
  regularPrism,
68
+ rotate,
55
69
  sketch,
56
70
  sphere,
57
71
  spline,
@@ -1,11 +1,11 @@
1
- import "../chunks/chunk-ZMT6EFHL.js";
1
+ import "../chunks/chunk-VHSPHJ5F.js";
2
2
  import "../chunks/chunk-TJIN6S4R.js";
3
3
  import {
4
4
  definePrimitive,
5
5
  replicad
6
- } from "../chunks/chunk-PAIFBNU4.js";
7
- import "../chunks/chunk-OQLJDJIF.js";
8
- import "../chunks/chunk-J77FMYFY.js";
6
+ } from "../chunks/chunk-C3AJ6WNB.js";
7
+ import "../chunks/chunk-TCMEEKWL.js";
8
+ import "../chunks/chunk-4WLVDYUJ.js";
9
9
  export {
10
10
  definePrimitive,
11
11
  replicad
@@ -2,7 +2,7 @@ export { identifyCachedFunction } from '../library/cached.js';
2
2
  export { installFontEngine, installModelResourceReader, } from '../library/font.js';
3
3
  export { googleFontSources, googleFontUrl } from '../library/google-font.js';
4
4
  export { installOpenCascade } from '../library/open-cascade.js';
5
- export { clearKernelOperationCache, kernelOperationCacheStats, setKernelArtifactStore, setKernelExternalBytes, } from '../library/kernel-cache.js';
5
+ export { clearKernelOperationCache, kernelOperationCacheStats, setKernelCacheBudget, setKernelCachePersistenceThreshold, setKernelArtifactStore, setKernelExternalBytes, } from '../library/kernel-cache.js';
6
6
  export type { KernelArtifactStore } from '../library/kernel-cache.js';
7
7
  export { SketchConstraintError, installSketchSolver, } from '../library/sketch-solver.js';
8
8
  export { assertSketchDragConnections, isSketch, sketchDefinition, sketchDragRequiresSolver, sketchEntityParameters, sketchFrame, sketchPointResolver, sketchSource, snapshotSketch, solveSketchSnapshot, withSketchEntityParameters, } from '../library/sketch.js';
@@ -14,8 +14,8 @@ export type { SketchCurve } from '../library/sketch-curves.js';
14
14
  export { sketchRegions } from '../library/sketch-regions.js';
15
15
  export type { SketchRegion } from '../library/sketch-regions.js';
16
16
  export { describeOpenCascadeException } from '../library/open-cascade-error.js';
17
- export { authoringApi, beginModelEvaluation, constraintPreview, constraintTraceReference, createModelSnapshotter, disposeModelObjects, executeSnapshotQueryBatch, instrumentConstraint, instrumentModelOperation, isConstraint, isConstraintExpression, isModelObject, modelElementReference, modelObjectRuntimeInfo, modelTopologyIds, modelTopologyReference, planModelSnapshotQueries, relatedModelObjects, retainModelGeometry, } from '../library/runtime.js';
18
- export type { Constraint, ConstraintAnchorSnapshot, ConstraintExpression, ConstraintPreview, ConstraintSnapshot, ConstraintSpatialReference, ConstraintTraceReference, ElementKind, ElementSnapshot, ModelElementReference, ModelGeometryKind, ModelGeometrySnapshot, ModelKind, ModelObject, ModelObjectRuntimeInfo, ModelOperationInputRole, ModelOperationInstrumentation, ModelOperationKind, ModelOperationRegionSnapshot, ModelOperationSelectionSnapshot, ModelOperationSnapshot, ModelParameterDimension, ModelSnapshotObject, ModelSpatialOperation, ModelTopologyReference, ParameterKind, ParameterTarget, ParameterUsage, RelationObject, RenderMesh, SnapshotQuery, SnapshotQueryBatch, SnapshotQueryResult, SourceRef, Transform, } from '../library/runtime.js';
17
+ export { authoringApi, beginModelEvaluation, relationPreview, currentRelationSelf, relationSelectionPreview, relationTraceReference, createModelSnapshotter, disposeModelObjects, executeSnapshotQueryBatch, instrumentRelation, instrumentModelOperation, isConstraint, isRelationExpression, isModelObject, modelElementReference, modelObjectRuntimeInfo, modelTopologyIds, modelTopologyReference, planModelSnapshotQueries, relatedModelObjects, retainModelGeometry, } from '../library/runtime.js';
18
+ export type { Constraint, ConstraintAnchorSnapshot, RelationExpression, RelationPreview, ConstraintSnapshot, TransformationSnapshot, RelationStageSnapshot, RelationSpatialReference, ConstraintTraceReference, RelationTraceReference, ElementKind, ElementSnapshot, ModelElementReference, ModelGeometryKind, ModelGeometrySnapshot, ModelKind, ModelObject, ModelObjectRuntimeInfo, ModelOperationInputRole, ModelOperationInstrumentation, ModelOperationKind, ModelOperationRegionSnapshot, ModelOperationSelectionSnapshot, ModelOperationSnapshot, ModelParameterDimension, ModelSnapshotObject, ModelSpatialOperation, RotationReferenceSnapshot, ModelTopologyReference, ParameterKind, ParameterTarget, ParameterUsage, RelationObject, RenderMesh, SnapshotQuery, SnapshotQueryBatch, SnapshotQueryResult, SourceRef, Transform, } from '../library/runtime.js';
19
19
  export { composeTransforms, identityRigidTransform, invertTransform, quaternionAxisAngle, relativeTransform, rotateVector, rotationAround, transformsAreEquivalent, xyzRotation, } from '../library/spatial.js';
20
20
  export type { Quaternion, RigidTransform, Vec3 } from '../library/spatial.js';
21
21
  export type { TopologyGeometry, TopologyInspection, TopologyInspectionItem, TopologyInspectionOptions, } from '../library/topology-inspection.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tooling/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tooling/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  installOpenCascade
3
- } from "../chunks/chunk-OQLJDJIF.js";
3
+ } from "../chunks/chunk-TCMEEKWL.js";
4
4
  import {
5
5
  SketchConstraintError,
6
6
  TopologyIdSet,
@@ -11,9 +11,8 @@ import {
11
11
  clearKernelOperationCache,
12
12
  compareTopologyIds,
13
13
  composeTransforms,
14
- constraintPreview,
15
- constraintTraceReference,
16
14
  createModelSnapshotter,
15
+ currentRelationSelf,
17
16
  describeOpenCascadeException,
18
17
  disposeModelObjects,
19
18
  executeSnapshotQueryBatch,
@@ -25,12 +24,12 @@ import {
25
24
  installFontEngine,
26
25
  installModelResourceReader,
27
26
  installSketchSolver,
28
- instrumentConstraint,
29
27
  instrumentModelOperation,
28
+ instrumentRelation,
30
29
  invertTransform,
31
30
  isConstraint,
32
- isConstraintExpression,
33
31
  isModelObject,
32
+ isRelationExpression,
34
33
  isSketch,
35
34
  isTopologyId,
36
35
  kernelOperationCacheStats,
@@ -43,12 +42,17 @@ import {
43
42
  planModelSnapshotQueries,
44
43
  quaternionAxisAngle,
45
44
  relatedModelObjects,
45
+ relationPreview,
46
+ relationSelectionPreview,
47
+ relationTraceReference,
46
48
  relativeTransform,
47
49
  retainModelGeometry,
48
50
  rotateVector,
49
51
  rotationAround,
50
52
  sameTopologyId,
51
53
  setKernelArtifactStore,
54
+ setKernelCacheBudget,
55
+ setKernelCachePersistenceThreshold,
52
56
  setKernelExternalBytes,
53
57
  sketchArcGeometry,
54
58
  sketchCurveBounds,
@@ -71,7 +75,7 @@ import {
71
75
  transformsAreEquivalent,
72
76
  withSketchEntityParameters,
73
77
  xyzRotation
74
- } from "../chunks/chunk-J77FMYFY.js";
78
+ } from "../chunks/chunk-4WLVDYUJ.js";
75
79
  export {
76
80
  SketchConstraintError,
77
81
  TopologyIdSet,
@@ -82,9 +86,8 @@ export {
82
86
  clearKernelOperationCache,
83
87
  compareTopologyIds,
84
88
  composeTransforms,
85
- constraintPreview,
86
- constraintTraceReference,
87
89
  createModelSnapshotter,
90
+ currentRelationSelf,
88
91
  describeOpenCascadeException,
89
92
  disposeModelObjects,
90
93
  executeSnapshotQueryBatch,
@@ -97,12 +100,12 @@ export {
97
100
  installModelResourceReader,
98
101
  installOpenCascade,
99
102
  installSketchSolver,
100
- instrumentConstraint,
101
103
  instrumentModelOperation,
104
+ instrumentRelation,
102
105
  invertTransform,
103
106
  isConstraint,
104
- isConstraintExpression,
105
107
  isModelObject,
108
+ isRelationExpression,
106
109
  isSketch,
107
110
  isTopologyId,
108
111
  kernelOperationCacheStats,
@@ -115,12 +118,17 @@ export {
115
118
  planModelSnapshotQueries,
116
119
  quaternionAxisAngle,
117
120
  relatedModelObjects,
121
+ relationPreview,
122
+ relationSelectionPreview,
123
+ relationTraceReference,
118
124
  relativeTransform,
119
125
  retainModelGeometry,
120
126
  rotateVector,
121
127
  rotationAround,
122
128
  sameTopologyId,
123
129
  setKernelArtifactStore,
130
+ setKernelCacheBudget,
131
+ setKernelCachePersistenceThreshold,
124
132
  setKernelExternalBytes,
125
133
  sketchArcGeometry,
126
134
  sketchCurveBounds,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code3d/core",
3
- "version": "0.0.1-alpha.4",
3
+ "version": "0.0.1-alpha.7",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -7,17 +7,56 @@ import {
7
7
  origin,
8
8
  rotateVector,
9
9
  rotation,
10
- transformsAreEquivalent,
11
10
  type Quaternion,
12
11
  type RigidTransform,
13
12
  type Vec3,
14
13
  } from './spatial.js';
15
14
 
16
15
  export type Bounds = readonly [minimum: Vec3, maximum: Vec3];
17
- export type BodyRotation =
18
- | Readonly<{local: RigidTransform}>
19
- | Readonly<{axis: RigidTransform; body: number; angle: number}>;
16
+ export type ExternalRotation =
17
+ | Readonly<{axis: RigidTransform; body: number; angle: number}>
18
+ | Readonly<{
19
+ point: Vec3;
20
+ body: number;
21
+ rotation: Quaternion;
22
+ displacement: Vec3;
23
+ }>;
24
+ export type BodyRotation = Readonly<{local: RigidTransform}> | ExternalRotation;
20
25
 
26
+ /** External center relative to its owning body; point references retain self's axes. */
27
+ export function externalRotationFrame(
28
+ action: ExternalRotation,
29
+ self: Quaternion,
30
+ reference: Quaternion,
31
+ inverse = false,
32
+ ): {center: Vec3; quaternion: Quaternion} {
33
+ if ('axis' in action) {
34
+ const axis = composeTransforms(rotation(reference), action.axis);
35
+ return {
36
+ center: axis.position,
37
+ quaternion: axisRotation(axis, inverse ? -action.angle : action.angle)
38
+ .quaternion,
39
+ };
40
+ }
41
+ const local = inverse
42
+ ? invertTransform(rotation(action.rotation))
43
+ : rotation(action.rotation);
44
+ const before = inverse
45
+ ? composeTransforms(rotation(self), local)
46
+ : rotation(self);
47
+ return {
48
+ center: addVectors(
49
+ rotateVector(action.point, reference),
50
+ rotateVector(action.displacement, before.quaternion),
51
+ ),
52
+ quaternion: composeTransforms(
53
+ composeTransforms(before, local),
54
+ invertTransform(before),
55
+ ).quaternion,
56
+ };
57
+ }
58
+
59
+ export type BodyAction = BodyRotation | Readonly<{offset: Vec3}>;
21
60
  export type BodyRelation = Readonly<{
22
61
  id: string;
23
62
  source: Readonly<{
@@ -26,11 +65,16 @@ export type BodyRelation = Readonly<{
26
65
  bounds: (orientation: Quaternion) => Bounds;
27
66
  }>;
28
67
  target: Readonly<{body: number; transform: RigidTransform; facing: 1 | -1}>;
29
- offset: Vec3 | undefined;
30
- rotations: readonly BodyRotation[];
31
68
  }>;
32
69
 
33
- export type Body = Readonly<{name: string; relations: readonly BodyRelation[]}>;
70
+ export type Body = Readonly<{
71
+ name: string;
72
+ relations: readonly BodyRelation[];
73
+ /** Pose inherited from the preceding placement segment. */
74
+ initial?: RigidTransform;
75
+ /** Independent actions apply after the joint constraint solution. */
76
+ transformations?: readonly BodyAction[];
77
+ }>;
34
78
  type AffinePoint = {constant: Vec3; columns: Vec3[]};
35
79
  type AffinePose = {position: AffinePoint; quaternion: Quaternion};
36
80
  type Equation = {id: string; coefficients: number[]; value: number};
@@ -74,37 +118,21 @@ export function solveBodies(
74
118
  'Cyclic external rotation axes cannot determine an authored orientation.',
75
119
  );
76
120
  visiting.add(index);
77
- const candidates = bodies[index].relations
78
- .filter(r => r.rotations.length)
79
- .map(relation => {
80
- let pose = identityRigidTransform;
81
- for (const action of relation.rotations) {
82
- pose =
83
- 'local' in action
84
- ? composeTransforms(pose, action.local)
85
- : composeTransforms(
86
- axisRotation(
87
- composeTransforms(seed(action.body), action.axis),
88
- action.angle,
89
- ),
90
- pose,
91
- );
92
- }
93
- return pose;
94
- });
95
- const pose = candidates[0] ?? identityRigidTransform;
96
- if (
97
- candidates.some(
98
- candidate =>
99
- !transformsAreEquivalent(
100
- rotation(candidate.quaternion),
101
- rotation(pose.quaternion),
102
- ),
103
- )
104
- ) {
105
- throw new Error(
106
- `Conflicting explicit rotations for ${bodies[index].name}.`,
107
- );
121
+ let pose = bodies[index].initial ?? identityRigidTransform;
122
+ for (const action of bodies[index].transformations ?? []) {
123
+ if ('offset' in action) continue;
124
+ pose =
125
+ 'local' in action
126
+ ? composeTransforms(pose, action.local)
127
+ : 'point' in action
128
+ ? composeTransforms(pose, rotation(action.rotation))
129
+ : composeTransforms(
130
+ axisRotation(
131
+ composeTransforms(seed(action.body), action.axis),
132
+ action.angle,
133
+ ),
134
+ pose,
135
+ );
108
136
  }
109
137
  visiting.delete(index);
110
138
  seeds.set(index, pose);
@@ -120,19 +148,18 @@ export function solveBodies(
120
148
  const known = positioned.get(index);
121
149
  if (known) return known;
122
150
  let pose: AffinePose = {
123
- quaternion: identityRigidTransform.quaternion,
151
+ quaternion: (bodies[index].initial ?? identityRigidTransform).quaternion,
124
152
  position: {
125
- constant: origin,
153
+ constant: (bodies[index].initial ?? identityRigidTransform).position,
126
154
  columns: variables.flatMap(body =>
127
155
  axes.map(axis => (body === index ? axis : origin)),
128
156
  ),
129
157
  },
130
158
  };
131
- const actions =
132
- bodies[index].relations.find(relation => relation.rotations.length)
133
- ?.rotations ?? [];
134
- for (const action of actions) {
135
- if ('local' in action) {
159
+ for (const action of bodies[index].transformations ?? []) {
160
+ if ('offset' in action) {
161
+ pose = {...pose, position: shiftPoint(pose.position, action.offset)};
162
+ } else if ('local' in action) {
136
163
  pose = {
137
164
  position: shiftPoint(
138
165
  pose.position,
@@ -145,12 +172,12 @@ export function solveBodies(
145
172
  };
146
173
  } else {
147
174
  const axisPose = positionBody(action.body);
148
- const axis = composeTransforms(
149
- rotation(axisPose.quaternion),
150
- action.axis,
175
+ const {center, quaternion: q} = externalRotationFrame(
176
+ action,
177
+ pose.quaternion,
178
+ axisPose.quaternion,
151
179
  );
152
- const q = axisRotation(axis, action.angle).quaternion;
153
- const axisPoint = shiftPoint(axisPose.position, axis.position);
180
+ const axisPoint = shiftPoint(axisPose.position, center);
154
181
  const rotatedAxis = rotatePoint(axisPoint, q);
155
182
  pose = {
156
183
  position: addPoints(
@@ -173,16 +200,19 @@ export function solveBodies(
173
200
  const preferences = new Map<string, Equation>();
174
201
  bodies.forEach((body, owner) =>
175
202
  body.relations.forEach(relation => {
176
- // A chain describes contact followed by its explicit rotations. Invert only
177
- // this chain; every other relation still sees and constrains the final pose.
178
- const baseline = undoRotations(poses[owner], relation.rotations, poses);
179
- // All authored contact stages contribute equally to the free-position
180
- // choice. Deduplicate identical stages so repeated conditions add no bias.
203
+ // Every contact constrains the joint result before independent transforms.
204
+ const baseline = undoActions(
205
+ poses[owner],
206
+ body.transformations ?? [],
207
+ poses,
208
+ );
181
209
  for (let axis = 0; axis < 3; axis++) {
182
210
  const preference = {
183
211
  id: relation.id,
184
212
  coefficients: baseline.position.columns.map(column => column[axis]),
185
- value: -baseline.position.constant[axis],
213
+ value:
214
+ (body.initial?.position[axis] ?? 0) -
215
+ baseline.position.constant[axis],
186
216
  };
187
217
  preferences.set(
188
218
  JSON.stringify([preference.coefficients, preference.value]),
@@ -212,14 +242,8 @@ export function solveBodies(
212
242
  source.position,
213
243
  rotateVector(center, targetFrame.quaternion),
214
244
  );
215
- const targetPoint = shiftPoint(
216
- target.position,
217
- addVectors(
218
- targetFrame.position,
219
- rotateVector(relation.offset ?? origin, targetFrame.quaternion),
220
- ),
221
- );
222
- for (const localAxis of relation.offset ? axes : [axes[1]]) {
245
+ const targetPoint = shiftPoint(target.position, targetFrame.position);
246
+ for (const localAxis of [axes[1]]) {
223
247
  const normal = rotateVector(localAxis, targetFrame.quaternion);
224
248
  equations.push({
225
249
  id: relation.id,
@@ -272,13 +296,18 @@ function addPoints(left: AffinePoint, right: AffinePoint): AffinePoint {
272
296
  };
273
297
  }
274
298
 
275
- function undoRotations(
299
+ function undoActions(
276
300
  pose: AffinePose,
277
- actions: readonly BodyRotation[],
301
+ actions: readonly BodyAction[],
278
302
  poses: readonly AffinePose[],
279
303
  ): AffinePose {
280
304
  for (const action of [...actions].reverse()) {
281
- if ('local' in action) {
305
+ if ('offset' in action) {
306
+ pose = {
307
+ ...pose,
308
+ position: shiftPoint(pose.position, negateVector(action.offset)),
309
+ };
310
+ } else if ('local' in action) {
282
311
  const inverse = invertTransform(action.local);
283
312
  pose = {
284
313
  position: shiftPoint(
@@ -292,12 +321,13 @@ function undoRotations(
292
321
  };
293
322
  } else {
294
323
  const axisPose = poses[action.body];
295
- const axis = composeTransforms(
296
- rotation(axisPose.quaternion),
297
- action.axis,
324
+ const {center, quaternion: q} = externalRotationFrame(
325
+ action,
326
+ pose.quaternion,
327
+ axisPose.quaternion,
328
+ true,
298
329
  );
299
- const q = axisRotation(axis, -action.angle).quaternion;
300
- const axisPoint = shiftPoint(axisPose.position, axis.position);
330
+ const axisPoint = shiftPoint(axisPose.position, center);
301
331
  const rotatedAxis = rotatePoint(axisPoint, q);
302
332
  pose = {
303
333
  position: addPoints(
@@ -316,7 +346,7 @@ function undoRotations(
316
346
  }
317
347
 
318
348
  /** Solve Ax=b, then minimize contact-stage displacement in its nullspace. */
319
- function solveTranslations(
349
+ export function solveTranslations(
320
350
  equations: readonly Equation[],
321
351
  preferences: readonly Equation[],
322
352
  dimension: number,
@@ -13,7 +13,7 @@ import {
13
13
  } from './kernel-cache.js';
14
14
  import {estimateRetainedBytes} from './retained-memory.js';
15
15
 
16
- export type CachedOptions<Value> = CacheCodec<Value>;
16
+ export type CacheOptions<Value> = CacheCodec<Value>;
17
17
 
18
18
  const identities = new WeakMap<Function, string>();
19
19
  const sessionIdentities = new WeakMap<Function, string>();
@@ -56,18 +56,34 @@ const dataLifecycle: KernelValueLifecycle<unknown> = {
56
56
 
57
57
  /**
58
58
  * Memoizes a synchronous, deterministic computation in the shared cache.
59
+ * Omit args to create a function, or pass an argument tuple to return its value.
59
60
  * Pass changing captured state as arguments and treat returned data as immutable.
60
61
  * The engine fingerprints definitions and dependencies for persistent reuse.
61
62
  * Outside the engine, function identity provides process-local memory reuse.
62
63
  * Custom encoder/decoder pairs run only when writing/restoring persistent data;
63
64
  * memory hits return the retained value without decoding or copying it.
64
65
  */
65
- export function cached<Args extends unknown[], Value>(
66
+ export function cache<Args extends unknown[], Value>(
66
67
  compute: (
67
68
  ...args: Args
68
69
  ) => Value & (Value extends PromiseLike<unknown> ? never : unknown),
69
- options?: CachedOptions<NoInfer<Value>>,
70
- ): (...args: Args) => Value {
70
+ args: Readonly<NoInfer<Args>>,
71
+ options?: CacheOptions<NoInfer<Value>>,
72
+ ): Value;
73
+ export function cache<Args extends unknown[], Value>(
74
+ compute: (
75
+ ...args: Args
76
+ ) => Value & (Value extends PromiseLike<unknown> ? never : unknown),
77
+ args?: undefined,
78
+ options?: CacheOptions<NoInfer<Value>>,
79
+ ): (...args: Args) => Value;
80
+ export function cache<Args extends unknown[], Value>(
81
+ compute: (
82
+ ...args: Args
83
+ ) => Value & (Value extends PromiseLike<unknown> ? never : unknown),
84
+ args?: Readonly<Args>,
85
+ options?: CacheOptions<Value>,
86
+ ): Value | ((...args: Args) => Value) {
71
87
  const operation = cachedArtifact(
72
88
  (...args: Args): Value => {
73
89
  const value = compute(...args);
@@ -77,12 +93,14 @@ export function cached<Args extends unknown[], Value>(
77
93
  'then' in value &&
78
94
  typeof value.then === 'function'
79
95
  )
80
- throw new Error('cached() requires a synchronous computation.');
96
+ throw new Error('cache() requires a synchronous computation.');
81
97
  return value;
82
98
  },
83
99
  {identity: compute, codec: options},
84
100
  );
85
- return (...args) => operation(...args).value;
101
+ return args === undefined
102
+ ? (...args: Args) => operation(...args).value
103
+ : operation(...args).value;
86
104
  }
87
105
 
88
106
  /** Internal artifact form also supports native ownership and remote admission. */
@@ -116,8 +134,11 @@ export function cachedArtifact<Args extends unknown[], Value>(
116
134
  findKernelOperation(key, lifecycle, persistence);
117
135
  const findMany = (keys: readonly KernelOperationKey[]) =>
118
136
  findKernelOperations(keys, lifecycle, persistence);
119
- const accept = (key: KernelOperationKey, value: Value) =>
120
- acceptKernelOperation(key, lifecycle, value, persistence);
137
+ const accept = (
138
+ key: KernelOperationKey,
139
+ value: Value,
140
+ milliseconds: number,
141
+ ) => acceptKernelOperation(key, lifecycle, value, milliseconds, persistence);
121
142
  return Object.assign(
122
143
  (...args: Args): KernelArtifact<Value> => {
123
144
  return evaluateCachedArtifact(