brepjs 18.69.3 → 18.71.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 (92) hide show
  1. package/dist/2d.cjs +6 -6
  2. package/dist/2d.js +6 -6
  3. package/dist/{blueprint-DIQeD9xj.cjs → blueprint-jlSsZ0sZ.cjs} +5 -5
  4. package/dist/{blueprint-Dgl9IkCV.js → blueprint-qVw9ZkE4.js} +5 -5
  5. package/dist/{blueprintFns-BO44cqFY.cjs → blueprintFns-DsuY7gCu.cjs} +2 -2
  6. package/dist/{blueprintFns-sKzHcJ4U.js → blueprintFns-zLwbytjs.js} +2 -2
  7. package/dist/{blueprintSketcher-DbINWerx.js → blueprintSketcher-BRKbVgE2.js} +3 -3
  8. package/dist/{blueprintSketcher-BpOknLmX.cjs → blueprintSketcher-dZZ8e5ey.cjs} +3 -3
  9. package/dist/{boolean2D-DZcOTOSA.cjs → boolean2D-4E1kbwQx.cjs} +4 -4
  10. package/dist/{boolean2D-CreNaKXt.js → boolean2D-CANP43pN.js} +4 -4
  11. package/dist/{booleanFns-DvXg6a2Y.cjs → booleanFns-Bp_wYEwG.cjs} +4 -4
  12. package/dist/{booleanFns-0jDBFjAv.js → booleanFns-DYSaupiG.js} +4 -4
  13. package/dist/brepjs.cjs +375 -65
  14. package/dist/brepjs.js +372 -68
  15. package/dist/{cameraFns-Bwxq0IDz.js → cameraFns-BFRGMXSn.js} +2 -2
  16. package/dist/{cameraFns-CsGSVYgb.cjs → cameraFns-dRK1CnFi.cjs} +2 -2
  17. package/dist/core.cjs +1 -1
  18. package/dist/core.js +1 -1
  19. package/dist/{cornerFinder-ChltJ_ur.cjs → cornerFinder-CQPXY8Aw.cjs} +1 -1
  20. package/dist/{cornerFinder-fMf9-El_.js → cornerFinder-DcHCKoUh.js} +1 -1
  21. package/dist/{curveFns-BhTtS18d.js → curveFns-CXhOkKR4.js} +1 -1
  22. package/dist/{curveFns-CXytEfTr.cjs → curveFns-uPVW6eo-.cjs} +1 -1
  23. package/dist/{drawFns-Bzr38vZx.js → drawFns-ZqWpAG8b.js} +12 -12
  24. package/dist/{drawFns-Bn4vzbUr.cjs → drawFns-eMU4H__w.cjs} +12 -12
  25. package/dist/{extrudeFns-rnUgev_g.js → extrudeFns-CSy2C7WW.js} +1 -1
  26. package/dist/{extrudeFns-C0FsOXev.cjs → extrudeFns-CzQans6p.cjs} +1 -1
  27. package/dist/{faceFns-Dreo5ksY.js → faceFns-BBcrvY7r.js} +11 -3
  28. package/dist/{faceFns-FAZgMVCx.cjs → faceFns-CcLFCtg4.cjs} +16 -2
  29. package/dist/{helpers-D8ycrNeD.cjs → helpers-BmY5kO0w.cjs} +6 -6
  30. package/dist/{helpers--BMa_zB7.js → helpers-CxT3j8jG.js} +6 -6
  31. package/dist/{historyFns-mnmeZ0kB.cjs → historyFns-BEB2Yjld.cjs} +4 -4
  32. package/dist/{historyFns-CR0RejKJ.js → historyFns-ClLT60_V.js} +4 -4
  33. package/dist/{importFns-DRPQExAD.js → importFns-BNDWuBuq.js} +2 -2
  34. package/dist/{importFns-4mi5Ih46.cjs → importFns-DA0Klh7_.cjs} +2 -2
  35. package/dist/index.d.ts +2 -1
  36. package/dist/io.cjs +2 -2
  37. package/dist/io.js +2 -2
  38. package/dist/kernel/brepkit/geometryOps.d.ts +1 -0
  39. package/dist/kernel/interfaces/surfaceOps.d.ts +9 -0
  40. package/dist/kernel/occt/geometryQueryOps.d.ts +9 -0
  41. package/dist/kernel/occtWasm/occtWasmAdapter.cjs +1 -1
  42. package/dist/kernel/occtWasm/occtWasmAdapter.d.ts +4 -0
  43. package/dist/kernel/occtWasm/occtWasmAdapter.js +1 -1
  44. package/dist/kernel/occtWasm/surfaceOps.d.ts +17 -0
  45. package/dist/kernel/solverAdapter.d.ts +8 -7
  46. package/dist/{measureFns-BLEx4ZU3.js → measureFns-DAP8LjBB.js} +3 -3
  47. package/dist/{measureFns-CT0XaSOt.cjs → measureFns-zGABZl6o.cjs} +3 -3
  48. package/dist/measurement.cjs +1 -1
  49. package/dist/measurement.js +1 -1
  50. package/dist/{meshFns-lwgHYQ79.cjs → meshFns-CEGnFm33.cjs} +3 -3
  51. package/dist/{meshFns-B3MjIqk1.js → meshFns-D-nLiHvU.js} +3 -3
  52. package/dist/{occtWasmAdapter-BH7r2nTq.cjs → occtWasmAdapter-Crs07qIe.cjs} +67 -0
  53. package/dist/{occtWasmAdapter-C7FDeTaw.js → occtWasmAdapter-D0MtWZYO.js} +67 -0
  54. package/dist/operations/assemblyFns.d.ts +2 -0
  55. package/dist/operations/jointFns.d.ts +55 -0
  56. package/dist/operations.cjs +2 -2
  57. package/dist/operations.js +2 -2
  58. package/dist/{primitiveFns-DcZDTQ_R.js → primitiveFns-CDbe5gjc.js} +7 -7
  59. package/dist/{primitiveFns-DZmgvzvk.cjs → primitiveFns-CpkG8ZkI.cjs} +7 -7
  60. package/dist/projection.cjs +1 -1
  61. package/dist/projection.js +1 -1
  62. package/dist/query.cjs +2 -2
  63. package/dist/query.js +2 -2
  64. package/dist/{shapeFns-w1YoIn_p.cjs → shapeFns-CDHya-nt.cjs} +2 -2
  65. package/dist/{shapeFns-BnkizFjV.js → shapeFns-DVUNOG2I.js} +2 -2
  66. package/dist/shapeRef.cjs +1 -1
  67. package/dist/shapeRef.js +1 -1
  68. package/dist/{shapeRefFns-B3myHs0D.cjs → shapeRefFns-B1Tygk9V.cjs} +4 -4
  69. package/dist/{shapeRefFns-OVWdFOAC.js → shapeRefFns-CAJUDLTi.js} +4 -4
  70. package/dist/{shapeTypes-yCQ8z5Hc.js → shapeTypes-2cKwu2z4.js} +35 -1
  71. package/dist/{shapeTypes-BIlZar9m.cjs → shapeTypes-DRxArFIc.cjs} +35 -1
  72. package/dist/sketching.cjs +3 -3
  73. package/dist/sketching.js +3 -3
  74. package/dist/{solidBuilders-CPOTKI5i.js → solidBuilders-Bx3UdW91.js} +2 -2
  75. package/dist/{solidBuilders-dNhToZgl.cjs → solidBuilders-ibLq_9EK.cjs} +2 -2
  76. package/dist/{surfaceBuilders-CS1QccDv.js → surfaceBuilders-BtNrSolT.js} +2 -2
  77. package/dist/{surfaceBuilders-CzHPZtd3.cjs → surfaceBuilders-D2PBBoja.cjs} +2 -2
  78. package/dist/text.cjs +2 -2
  79. package/dist/text.js +2 -2
  80. package/dist/{textBlueprints-TG6AH06v.cjs → textBlueprints-COG8m1aE.cjs} +7 -7
  81. package/dist/{textBlueprints-B57ej88L.js → textBlueprints-HfRD4iNF.js} +7 -7
  82. package/dist/{textMetrics-Dag-YREs.cjs → textMetrics-CTSpUXtk.cjs} +1 -1
  83. package/dist/{textMetrics-BxtB3sjj.js → textMetrics-Zp8rzokO.js} +1 -1
  84. package/dist/topology/faceFns.d.ts +9 -0
  85. package/dist/topology/index.d.ts +1 -1
  86. package/dist/topology.cjs +8 -7
  87. package/dist/topology.d.ts +1 -1
  88. package/dist/topology.js +8 -8
  89. package/dist/{topologyQueryFns-BuWZAQ_o.cjs → topologyQueryFns-024l64sD.cjs} +1 -1
  90. package/dist/{topologyQueryFns-Bxdnl5Vt.js → topologyQueryFns-c2RQIcfW.js} +1 -1
  91. package/dist/utils/quaternion.d.ts +15 -0
  92. package/package.json +1 -1
package/dist/brepjs.js CHANGED
@@ -1,35 +1,35 @@
1
- import { $ as getKernelCapabilities, A as planarWire, B as createKernelHandle, C as isOrientedFace, D as manifoldShell, E as isValidSolid, F as as3D, H as isLive, I as is2D, J as withScopeResultAsync, K as withScope, L as is3D, M as getShapeKind, O as orientedFace, P as as2D, R as DisposalScope, S as isManifoldShell, T as isPlanarWire, V as getDisposalStats, W as resetDisposalStats, X as getActiveKernelId, Y as _usingCtx, Z as getKernel, _ as isSolid, a as createEdge, at as registerKernel, b as closedWire, c as createSolid, ct as withQuality, d as isCompound, dt as supportsProjection, et as getKernelTier, f as isEdge, ft as BrepkitAdapter, g as isShell, h as isShape3D, ht as currentQuality, i as createCompound, it as prewarm, j as validSolid, k as planarFace, l as createVertex, lt as withTier, m as isShape1D, mt as resetPerformanceStats, n as castShape3D, nt as initFromManifold, o as createFace, ot as registerKernelTier, p as isFace, pt as getPerformanceStats, q as withScopeResult, rt as initFromOC, s as createShell, st as withKernel, t as castShape, tt as init, u as createWire, ut as supportsConstraintSketch, v as isVertex, w as isPlanarFace, x as isClosedWire, y as isWire, z as createHandle } from "./shapeTypes-yCQ8z5Hc.js";
2
- import { E as EXACT_BREP_CAPABILITIES, T as DEFAULT_CAPABILITIES, t as OcctWasmAdapter } from "./occtWasmAdapter-C7FDeTaw.js";
1
+ import { $ as getKernelCapabilities, A as planarWire, B as createKernelHandle, C as isOrientedFace, D as manifoldShell, E as isValidSolid, F as as3D, H as isLive, I as is2D, J as withScopeResultAsync, K as withScope, L as is3D, M as getShapeKind, O as orientedFace, P as as2D, R as DisposalScope, S as isManifoldShell, T as isPlanarWire, V as getDisposalStats, W as resetDisposalStats, X as getActiveKernelId, Y as _usingCtx, Z as getKernel, _ as isSolid, a as createEdge, at as registerKernel, b as closedWire, c as createSolid, ct as withQuality, d as isCompound, dt as supportsProjection, et as getKernelTier, f as isEdge, ft as BrepkitAdapter, g as isShell, h as isShape3D, ht as currentQuality, i as createCompound, it as prewarm, j as validSolid, k as planarFace, l as createVertex, lt as withTier, m as isShape1D, mt as resetPerformanceStats, n as castShape3D, nt as initFromManifold, o as createFace, ot as registerKernelTier, p as isFace, pt as getPerformanceStats, q as withScopeResult, rt as initFromOC, s as createShell, st as withKernel, t as castShape, tt as init, u as createWire, ut as supportsConstraintSketch, v as isVertex, w as isPlanarFace, x as isClosedWire, y as isWire, z as createHandle } from "./shapeTypes-2cKwu2z4.js";
2
+ import { E as EXACT_BREP_CAPABILITIES, T as DEFAULT_CAPABILITIES, t as OcctWasmAdapter } from "./occtWasmAdapter-D0MtWZYO.js";
3
3
  import { n as wasmIndex } from "./vec3-Dpha8d5k.js";
4
4
  import { A as ok, B as unwrapOr, C as fromNullable, D as mapBoth, E as map, F as tapErr, H as zip, I as tryCatch, L as tryCatchAsync, M as orElse, N as pipeline, O as mapErr, P as tap, R as unwrap, S as flatten, T as isOk, V as unwrapOrElse, _ as all, a as moduleInitError, b as err, c as sketcherStateError, d as validationError, g as OK, h as bug, i as kernelError, j as or, k as match, l as typeCastError, m as BrepBugError, n as computationError, o as queryError, r as ioError, t as BrepErrorCode, u as unsupportedError, v as andThen, w as isErr, x as flatMap, y as collect, z as unwrapErr } from "./errors-DNWJsfVU.js";
5
- import { C as kernelCall, S as vertexPosition, T as kernelCallScoped, _ as iterFaces, a as getCachedSurfaceType, b as iterVertices, c as getFaces, d as getSolids, f as getVertices, g as iterEdges, h as iterCompSolids, m as invalidateShapeCache, n as getBounds, o as getCompSolids, p as getWires, s as getEdges, t as describe$1, u as getShells, v as iterShells, w as kernelCallRaw, x as iterWires, y as iterSolids } from "./topologyQueryFns-Bxdnl5Vt.js";
5
+ import { C as kernelCall, S as vertexPosition, T as kernelCallScoped, _ as iterFaces, a as getCachedSurfaceType, b as iterVertices, c as getFaces, d as getSolids, f as getVertices, g as iterEdges, h as iterCompSolids, m as invalidateShapeCache, n as getBounds, o as getCompSolids, p as getWires, s as getEdges, t as describe$1, u as getShells, v as iterShells, w as kernelCallRaw, x as iterWires, y as iterSolids } from "./topologyQueryFns-c2RQIcfW.js";
6
6
  import { n as HASH_CODE_MAX, r as RAD2DEG, t as DEG2RAD } from "./constants-ITRzCnCp.js";
7
7
  import { n as toVec2, r as toVec3, t as resolveDirection } from "./types-D24Y27N0.js";
8
8
  import { a as vecDot, c as vecLength, d as vecNormalize, f as vecProjectToPlane, g as vecSub, h as vecScale, i as vecDistance, l as vecLengthSq, m as vecRotate, n as vecAngle, o as vecEquals, p as vecRepr, r as vecCross, s as vecIsZero, t as vecAdd, u as vecNegate } from "./vecOps-SKPRvPH-.js";
9
9
  import { i as pivotPlane, n as createPlane, o as resolvePlane, r as makePlane, s as translatePlane, t as createNamedPlane } from "./planeOps-DSjjtrjg.js";
10
- import { _ as downcast, a as flipFaceOrientation, b as iterTopo, c as normalAt, d as projectPointOnFace, f as removeHolesFromFace, g as cast, h as asTopo, i as faceOrientation, l as outerWire, m as uvCoordinates, n as faceCenter, o as getSurfaceType, p as uvBounds, r as faceGeomType, s as innerWires, t as classifyPointOnFace, u as pointOnSurface, v as fromBREP, x as shapeType, y as isCompSolid } from "./faceFns-Dreo5ksY.js";
11
- import { C as findFacesByTag, D as tagFaces, E as setTagMetadata, O as getFaceOrigins, S as getShapeColor, T as getTagMetadata, a as isSameShape, b as colorShape, c as applyMatrix$1, d as resize, f as rotate$2, h as translate$2, i as isEqualShape, k as setShapeOrigin, l as composeTransforms, m as transformCopy$1, n as getHashCode, o as simplify$1, p as scale$2, r as isEmpty$2, s as toBREP$1, t as clone$1, u as mirror$2, w as getFaceTags, x as getFaceColor, y as colorFaces } from "./shapeFns-BnkizFjV.js";
12
- import { a as curveLength, c as curveStartPoint, d as getCurveType, f as getOrientation, i as curveIsPeriodic, l as curveTangentAt, m as offsetWire2D, n as curveEndPoint, o as curvePeriod, p as interpolateCurve, r as curveIsClosed, s as curvePointAt, t as approximateCurve, u as flipOrientation } from "./curveFns-BhTtS18d.js";
13
- import { a as meshEdges$1, c as createMeshCache, i as mesh$1, n as exportSTEP, o as meshMultiLOD, r as exportSTL, s as clearMeshCache, t as exportIGES } from "./meshFns-B3MjIqk1.js";
10
+ import { S as shapeType, _ as cast, a as faceOrientation, b as isCompSolid, c as innerWires, d as pointOnSurface, f as projectPointOnFace, g as asTopo, h as uvCoordinates, i as faceGeomType, l as normalAt, m as uvBounds, n as faceAxis, o as flipFaceOrientation, p as removeHolesFromFace, r as faceCenter, s as getSurfaceType, t as classifyPointOnFace, u as outerWire, v as downcast, x as iterTopo, y as fromBREP } from "./faceFns-BBcrvY7r.js";
11
+ import { C as findFacesByTag, D as tagFaces, E as setTagMetadata, O as getFaceOrigins, S as getShapeColor, T as getTagMetadata, a as isSameShape, b as colorShape, c as applyMatrix$1, d as resize, f as rotate$2, h as translate$2, i as isEqualShape, k as setShapeOrigin, l as composeTransforms, m as transformCopy$1, n as getHashCode, o as simplify$1, p as scale$3, r as isEmpty$2, s as toBREP$1, t as clone$1, u as mirror$2, w as getFaceTags, x as getFaceColor, y as colorFaces } from "./shapeFns-DVUNOG2I.js";
12
+ import { a as curveLength, c as curveStartPoint, d as getCurveType, f as getOrientation, i as curveIsPeriodic, l as curveTangentAt, m as offsetWire2D, n as curveEndPoint, o as curvePeriod, p as interpolateCurve, r as curveIsClosed, s as curvePointAt, t as approximateCurve, u as flipOrientation } from "./curveFns-CXhOkKR4.js";
13
+ import { a as meshEdges$1, c as createMeshCache, i as mesh$1, n as exportSTEP, o as meshMultiLOD, r as exportSTL, s as clearMeshCache, t as exportIGES } from "./meshFns-D-nLiHvU.js";
14
14
  import { n as getAtOrThrow, r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
15
- import { _ as makeThreePointArc, d as makeCircle, h as makeLine, l as makeBSplineInterpolation, n as fill, r as makeFace, s as assembleWire } from "./surfaceBuilders-CS1QccDv.js";
16
- import { a as fuseAll, c as sectionToFace$1, i as fuse$2, l as slice$1, n as cut$2, o as intersect$2, r as cutAll, s as section$1, t as booleanPipeline, u as split$1 } from "./booleanFns-0jDBFjAv.js";
17
- import { $ as fuseAllBisect, A as fixShape, B as offset$1, C as threePointArc, D as wireLoop, E as wire, F as isValid$1, G as chamferWithEvolution, H as thicken$1, I as solidFromShell, J as fuseWithEvolution, K as cutWithEvolution, L as chamfer$1, M as healFace, N as healSolid, O as autoHeal, P as healWire, Q as cutAllBisect, R as draft$1, S as tangentArc, T as vertex, U as variableFillet, V as shell$1, W as positionOnCurve, X as shellWithEvolution, Y as intersectWithEvolution, Z as checkBoolean, _ as polygon, a as circle, at as sharedEdges, b as sphere$1, c as cylinder, ct as chamferDistAngle, d as ellipsoid, dt as toLODGeometryData, et as getNurbsCurveData, f as face, ft as toLineGeometryData, g as offsetFace, h as line, i as bsplineApprox, it as facesOfEdge, j as heal$1, k as fixSelfIntersection, l as ellipse, lt as toBufferGeometryData, m as helix, n as bezier, nt as adjacentFaces, o as compound, ot as verticesOfEdge, p as filledFace, q as filletWithEvolution, r as box, rt as edgesOfFace, s as cone, st as wiresOfFace, t as addHoles, tt as getNurbsSurfaceData, u as ellipseArc, ut as toGroupedBufferGeometryData, v as sewShells, w as torus$1, x as subFace, y as solid, z as fillet$1 } from "./primitiveFns-DcZDTQ_R.js";
18
- import { C as walkAssembly, D as exportAssemblySTEP, E as linearPattern, O as createAssembly, S as updateNode, _ as collectShapes, a as findStep, b as findNode, c as registerOperation, d as replayHistory, f as serializeHistory, g as addChild, h as undoLast, i as deserializeHistory, l as registerShape, m as stepsFrom, n as createHistory, o as getShape, p as stepCount, r as createRegistry, s as modifyStep, t as addStep, u as replayFrom, v as countNodes, w as circularPattern, x as removeChild, y as createAssemblyNode } from "./historyFns-CR0RejKJ.js";
19
- import { n as BaseSketcher2d, r as organiseBlueprints, t as BlueprintSketcher } from "./blueprintSketcher-DbINWerx.js";
20
- import { a as createTypedFinder, i as wireFinder, n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers--BMa_zB7.js";
21
- import { A as sketchEllipse, D as makeBaseBox, E as deserializeDrawing, F as sketchRectangle, I as sketchRoundedRectangle, L as FaceSketcher, M as sketchHelix, N as sketchParametricFunction, O as polysideInnerRadius, P as sketchPolysides, R as Sketcher, S as drawText, _ as drawPolysides, a as drawingIntersect, b as drawSingleCircle, c as rotateDrawing, d as drawFaceOutline, f as drawProjection, g as drawPointsInterpolation, h as drawParametricFunction, i as drawingFuse, j as sketchFaceOffset, k as sketchCircle, l as scaleDrawing, m as drawEllipse, n as drawingCut, o as drawingToSketchOnPlane, p as drawCircle, r as drawingFillet, s as mirrorDrawing, t as drawingChamfer, u as translateDrawing, v as drawRectangle, w as draw, x as drawSingleEllipse, y as drawRoundedRectangle } from "./drawFns-Bzr38vZx.js";
22
- import { r as makeCylinder } from "./solidBuilders-CPOTKI5i.js";
23
- import { a as measureDistance, c as measureLinearProps, d as measureVolumeProps, i as measureCurvatureAtMid, l as measureSurfaceProps, n as measureArea, o as measureDistanceProps, r as measureCurvatureAt, s as measureLength, t as createDistanceQuery, u as measureVolume } from "./measureFns-BLEx4ZU3.js";
24
- import { t as cornerFinder } from "./cornerFinder-fMf9-El_.js";
25
- import { a as fuseBlueprints, c as roundedRectangleBlueprint, i as cutBlueprints, n as fuse2D, o as intersectBlueprints, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-CreNaKXt.js";
26
- import { S as reverseCurve, _ as curve2dIsOnCurve, a as isInside2D, b as curve2dSplitAt, c as scale2D, d as stretch2D, f as toSVGPathD, g as curve2dFirstPoint, h as curve2dDistanceFrom, i as getOrientation2D, l as sketchOnFace2D, m as curve2dBoundingBox, n as createCompoundBlueprint, o as mirror2D, p as translate2D, r as getBounds2D, s as rotate2D, t as createBlueprint, u as sketchOnPlane2D, v as curve2dLastPoint, x as curve2dTangentAt, y as curve2dParameter } from "./blueprintFns-sKzHcJ4U.js";
27
- import { a as importSVG, c as blueprintToDXF, d as exportGltf, f as exportOBJ, i as exportSTEPConfigured, l as exportDXF, n as importSTEP, o as importSVGPathD, r as importSTL, s as exportThreeMF, t as importIGES, u as exportGlb } from "./importFns-DRPQExAD.js";
28
- import { a as guidedSweep, c as sweep$1, i as complexExtrude, l as twistExtrude, n as extrudeAll, o as multiSectionSweep, r as revolve$1, s as supportExtrude, t as extrude$1 } from "./extrudeFns-rnUgev_g.js";
29
- import { a as Sketch, b as loftAll, c as compoundSketchLoft, d as sketchFace, f as sketchLoft, h as sketchWires, i as Sketches, l as compoundSketchRevolve, m as sketchSweep, n as getFont, o as compoundSketchExtrude, p as sketchRevolve, r as loadFont, s as compoundSketchFace, t as textBlueprints, u as sketchExtrude, v as CompoundSketch, y as loft$1 } from "./textBlueprints-B57ej88L.js";
30
- import { a as makeProjectedEdges, i as projectEdges, n as cameraLookAt, r as createCamera, s as isProjectionPlane, t as cameraFromPlane } from "./cameraFns-Bwxq0IDz.js";
31
- import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-BxtB3sjj.js";
32
- import { a as updateRoles, i as resolveRef, n as captureHint, o as defaultScorer, r as createRef, t as assignRoles } from "./shapeRefFns-OVWdFOAC.js";
15
+ import { _ as makeThreePointArc, d as makeCircle, h as makeLine, l as makeBSplineInterpolation, n as fill, r as makeFace, s as assembleWire } from "./surfaceBuilders-BtNrSolT.js";
16
+ import { a as fuseAll, c as sectionToFace$1, i as fuse$2, l as slice$1, n as cut$2, o as intersect$2, r as cutAll, s as section$1, t as booleanPipeline, u as split$1 } from "./booleanFns-DYSaupiG.js";
17
+ import { $ as fuseAllBisect, A as fixShape, B as offset$1, C as threePointArc, D as wireLoop, E as wire, F as isValid$1, G as chamferWithEvolution, H as thicken$1, I as solidFromShell, J as fuseWithEvolution, K as cutWithEvolution, L as chamfer$1, M as healFace, N as healSolid, O as autoHeal, P as healWire, Q as cutAllBisect, R as draft$1, S as tangentArc, T as vertex, U as variableFillet, V as shell$1, W as positionOnCurve, X as shellWithEvolution, Y as intersectWithEvolution, Z as checkBoolean, _ as polygon, a as circle, at as sharedEdges, b as sphere$1, c as cylinder, ct as chamferDistAngle, d as ellipsoid, dt as toLODGeometryData, et as getNurbsCurveData, f as face, ft as toLineGeometryData, g as offsetFace, h as line, i as bsplineApprox, it as facesOfEdge, j as heal$1, k as fixSelfIntersection, l as ellipse, lt as toBufferGeometryData, m as helix, n as bezier, nt as adjacentFaces, o as compound, ot as verticesOfEdge, p as filledFace, q as filletWithEvolution, r as box, rt as edgesOfFace, s as cone, st as wiresOfFace, t as addHoles, tt as getNurbsSurfaceData, u as ellipseArc, ut as toGroupedBufferGeometryData, v as sewShells, w as torus$1, x as subFace, y as solid, z as fillet$1 } from "./primitiveFns-CDbe5gjc.js";
18
+ import { C as walkAssembly, D as exportAssemblySTEP, E as linearPattern, O as createAssembly, S as updateNode, _ as collectShapes, a as findStep, b as findNode, c as registerOperation, d as replayHistory, f as serializeHistory, g as addChild, h as undoLast, i as deserializeHistory, l as registerShape, m as stepsFrom, n as createHistory, o as getShape, p as stepCount, r as createRegistry, s as modifyStep, t as addStep, u as replayFrom, v as countNodes, w as circularPattern, x as removeChild, y as createAssemblyNode } from "./historyFns-ClLT60_V.js";
19
+ import { n as BaseSketcher2d, r as organiseBlueprints, t as BlueprintSketcher } from "./blueprintSketcher-BRKbVgE2.js";
20
+ import { a as createTypedFinder, i as wireFinder, n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-CxT3j8jG.js";
21
+ import { A as sketchEllipse, D as makeBaseBox, E as deserializeDrawing, F as sketchRectangle, I as sketchRoundedRectangle, L as FaceSketcher, M as sketchHelix, N as sketchParametricFunction, O as polysideInnerRadius, P as sketchPolysides, R as Sketcher, S as drawText, _ as drawPolysides, a as drawingIntersect, b as drawSingleCircle, c as rotateDrawing, d as drawFaceOutline, f as drawProjection, g as drawPointsInterpolation, h as drawParametricFunction, i as drawingFuse, j as sketchFaceOffset, k as sketchCircle, l as scaleDrawing, m as drawEllipse, n as drawingCut, o as drawingToSketchOnPlane, p as drawCircle, r as drawingFillet, s as mirrorDrawing, t as drawingChamfer, u as translateDrawing, v as drawRectangle, w as draw, x as drawSingleEllipse, y as drawRoundedRectangle } from "./drawFns-ZqWpAG8b.js";
22
+ import { r as makeCylinder } from "./solidBuilders-Bx3UdW91.js";
23
+ import { a as measureDistance, c as measureLinearProps, d as measureVolumeProps, i as measureCurvatureAtMid, l as measureSurfaceProps, n as measureArea, o as measureDistanceProps, r as measureCurvatureAt, s as measureLength, t as createDistanceQuery, u as measureVolume } from "./measureFns-DAP8LjBB.js";
24
+ import { t as cornerFinder } from "./cornerFinder-DcHCKoUh.js";
25
+ import { a as fuseBlueprints, c as roundedRectangleBlueprint, i as cutBlueprints, n as fuse2D, o as intersectBlueprints, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-CANP43pN.js";
26
+ import { S as reverseCurve, _ as curve2dIsOnCurve, a as isInside2D, b as curve2dSplitAt, c as scale2D, d as stretch2D, f as toSVGPathD, g as curve2dFirstPoint, h as curve2dDistanceFrom, i as getOrientation2D, l as sketchOnFace2D, m as curve2dBoundingBox, n as createCompoundBlueprint, o as mirror2D, p as translate2D, r as getBounds2D, s as rotate2D, t as createBlueprint, u as sketchOnPlane2D, v as curve2dLastPoint, x as curve2dTangentAt, y as curve2dParameter } from "./blueprintFns-zLwbytjs.js";
27
+ import { a as importSVG, c as blueprintToDXF, d as exportGltf, f as exportOBJ, i as exportSTEPConfigured, l as exportDXF, n as importSTEP, o as importSVGPathD, r as importSTL, s as exportThreeMF, t as importIGES, u as exportGlb } from "./importFns-BNDWuBuq.js";
28
+ import { a as guidedSweep, c as sweep$1, i as complexExtrude, l as twistExtrude, n as extrudeAll, o as multiSectionSweep, r as revolve$1, s as supportExtrude, t as extrude$1 } from "./extrudeFns-CSy2C7WW.js";
29
+ import { a as Sketch, b as loftAll, c as compoundSketchLoft, d as sketchFace, f as sketchLoft, h as sketchWires, i as Sketches, l as compoundSketchRevolve, m as sketchSweep, n as getFont, o as compoundSketchExtrude, p as sketchRevolve, r as loadFont, s as compoundSketchFace, t as textBlueprints, u as sketchExtrude, v as CompoundSketch, y as loft$1 } from "./textBlueprints-HfRD4iNF.js";
30
+ import { a as makeProjectedEdges, i as projectEdges, n as cameraLookAt, r as createCamera, s as isProjectionPlane, t as cameraFromPlane } from "./cameraFns-BFRGMXSn.js";
31
+ import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-Zp8rzokO.js";
32
+ import { a as updateRoles, i as resolveRef, n as captureHint, o as defaultScorer, r as createRef, t as assignRoles } from "./shapeRefFns-CAJUDLTi.js";
33
33
  import { a as createTaskQueue, c as isEmpty$1, d as isDisposeRequest, f as isErrorResponse, h as isSuccessResponse, i as createWorkerClient, l as pendingCount, m as isOperationRequest, n as createWorkerHandler, o as dequeueTask, p as isInitRequest, r as registerHandler, s as enqueueTask, t as createOperationRegistry, u as rejectAll } from "./workerHandler-CFetYgIm.js";
34
34
  //#region \0rolldown/runtime.js
35
35
  var __defProp = Object.defineProperty;
@@ -2143,13 +2143,94 @@ function roof(w, options) {
2143
2143
  }
2144
2144
  }
2145
2145
  //#endregion
2146
+ //#region src/utils/quaternion.ts
2147
+ function dot$1(a, b) {
2148
+ return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
2149
+ }
2150
+ function cross$1(a, b) {
2151
+ return [
2152
+ a[1] * b[2] - a[2] * b[1],
2153
+ a[2] * b[0] - a[0] * b[2],
2154
+ a[0] * b[1] - a[1] * b[0]
2155
+ ];
2156
+ }
2157
+ function normalize$1(a) {
2158
+ const l = Math.hypot(a[0], a[1], a[2]) || 1;
2159
+ return [
2160
+ a[0] / l,
2161
+ a[1] / l,
2162
+ a[2] / l
2163
+ ];
2164
+ }
2165
+ /** A unit vector perpendicular to `v` (for the 180°/parallel degenerate cases). */
2166
+ function anyPerpendicular$1(v) {
2167
+ return normalize$1(cross$1(v, Math.abs(v[0]) < .9 ? [
2168
+ 1,
2169
+ 0,
2170
+ 0
2171
+ ] : [
2172
+ 0,
2173
+ 1,
2174
+ 0
2175
+ ]));
2176
+ }
2177
+ /** Rotate vector `v` by quaternion `q`. */
2178
+ function quatRotate(q, v) {
2179
+ const [w, x, y, z] = q;
2180
+ const tx = 2 * (y * v[2] - z * v[1]);
2181
+ const ty = 2 * (z * v[0] - x * v[2]);
2182
+ const tz = 2 * (x * v[1] - y * v[0]);
2183
+ return [
2184
+ v[0] + w * tx + (y * tz - z * ty),
2185
+ v[1] + w * ty + (z * tx - x * tz),
2186
+ v[2] + w * tz + (x * ty - y * tx)
2187
+ ];
2188
+ }
2189
+ /** Quaternion for a rotation of `angle` radians about (unit-normalized) `axis`. */
2190
+ function quatFromAxisAngle(axis, angle) {
2191
+ const h = angle / 2;
2192
+ const s = Math.sin(h);
2193
+ const u = normalize$1(axis);
2194
+ return [
2195
+ Math.cos(h),
2196
+ u[0] * s,
2197
+ u[1] * s,
2198
+ u[2] * s
2199
+ ];
2200
+ }
2201
+ /** Shortest-arc quaternion rotating unit vector `from` onto unit vector `to`. */
2202
+ function quatFromTo(from, to) {
2203
+ const a = normalize$1(from);
2204
+ const b = normalize$1(to);
2205
+ const d = dot$1(a, b);
2206
+ if (d >= .999999999) return [
2207
+ 1,
2208
+ 0,
2209
+ 0,
2210
+ 0
2211
+ ];
2212
+ if (d <= -.999999999) return quatFromAxisAngle(anyPerpendicular$1(a), Math.PI);
2213
+ const c = cross$1(a, b);
2214
+ const len = Math.hypot(1 + d, c[0], c[1], c[2]) || 1;
2215
+ return [
2216
+ (1 + d) / len,
2217
+ c[0] / len,
2218
+ c[1] / len,
2219
+ c[2] / len
2220
+ ];
2221
+ }
2222
+ //#endregion
2146
2223
  //#region src/kernel/solverAdapter.ts
2147
2224
  /**
2148
- * Standard degrees of freedom left unresolved by each unsupported constraint type.
2149
- * coincident: 3 translational (plane normal alignment + contact)
2150
- * concentric: 2 rotational (axis alignment) + 2 translational (axis centering) = 4
2151
- * distance: 1 translational (offset along normal)
2152
- * angle: 1 rotational
2225
+ * Constraint solver adapter analytical solver for simple assembly mates.
2226
+ */
2227
+ /**
2228
+ * Degrees of freedom each constraint leaves unresolved when it can't be applied
2229
+ * (entity-type mismatch or an unreachable reference). All four types now solve
2230
+ * for well-typed inputs; these counts only feed the diagnostic `dof` for the
2231
+ * unsupported cases.
2232
+ * coincident: 3 translational · concentric: 2 rotational + 2 translational = 4
2233
+ * distance: 1 translational · angle: 1 rotational
2153
2234
  */
2154
2235
  var UNSUPPORTED_DOF = {
2155
2236
  coincident: 3,
@@ -2170,51 +2251,162 @@ function add$1(a, b) {
2170
2251
  a[2] + b[2]
2171
2252
  ];
2172
2253
  }
2254
+ function sub(a, b) {
2255
+ return [
2256
+ a[0] - b[0],
2257
+ a[1] - b[1],
2258
+ a[2] - b[2]
2259
+ ];
2260
+ }
2173
2261
  function dot(a, b) {
2174
2262
  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
2175
2263
  }
2264
+ function cross(a, b) {
2265
+ return [
2266
+ a[1] * b[2] - a[2] * b[1],
2267
+ a[2] * b[0] - a[0] * b[2],
2268
+ a[0] * b[1] - a[1] * b[0]
2269
+ ];
2270
+ }
2271
+ function scale$2(a, s) {
2272
+ return [
2273
+ a[0] * s,
2274
+ a[1] * s,
2275
+ a[2] * s
2276
+ ];
2277
+ }
2278
+ function normalize(a) {
2279
+ const l = Math.hypot(a[0], a[1], a[2]) || 1;
2280
+ return [
2281
+ a[0] / l,
2282
+ a[1] / l,
2283
+ a[2] / l
2284
+ ];
2285
+ }
2286
+ /** A unit vector perpendicular to `v` (for the parallel-normals degenerate case). */
2287
+ function anyPerpendicular(v) {
2288
+ return normalize(cross(v, Math.abs(v[0]) < .9 ? [
2289
+ 1,
2290
+ 0,
2291
+ 0
2292
+ ] : [
2293
+ 0,
2294
+ 1,
2295
+ 0
2296
+ ]));
2297
+ }
2298
+ /** Apply a pose (rotate then translate) to an entity's origin and any directions. */
2299
+ function transformEntity(e, pose) {
2300
+ const origin = add$1(quatRotate(pose.rotation, e.origin), pose.position);
2301
+ return {
2302
+ type: e.type,
2303
+ origin,
2304
+ ...e.normal ? { normal: quatRotate(pose.rotation, e.normal) } : {},
2305
+ ...e.direction ? { direction: quatRotate(pose.rotation, e.direction) } : {}
2306
+ };
2307
+ }
2176
2308
  /**
2177
2309
  * Position a dependent plane against an already-placed reference plane.
2178
2310
  *
2179
- * The reference's solved translation is applied to its (local) entity origin
2180
- * before measuring, so a chain composes down already-solved poses instead of
2181
- * reading original geometry. The dependent is at the origin (a node is only
2182
- * solved once, while unplaced), so the returned position is its absolute
2183
- * translation. `extra` is the gap for a distance mate (0 for coincident).
2184
- * Rotation stays identity — coincident/distance produce pure translations;
2185
- * Phase 1 rotational constraints will extend this.
2311
+ * `ref` is the reference entity already in world space. The dependent is at the
2312
+ * origin (a node is only solved once, while unplaced), so the returned position
2313
+ * is its absolute translation along the reference normal. `extra` is the gap for
2314
+ * a distance mate (0 for coincident). Plane mates don't reorient the dependent.
2186
2315
  */
2187
- function solvePlanePair(ref, refPos, dep, extra) {
2316
+ function solvePlanePair(ref, dep, extra) {
2188
2317
  const n = ref.normal ?? [
2189
2318
  0,
2190
2319
  0,
2191
2320
  1
2192
2321
  ];
2193
- const refOrigin = add$1(ref.origin, refPos);
2194
- const offset = dot(n, [
2195
- refOrigin[0] - dep.origin[0],
2196
- refOrigin[1] - dep.origin[1],
2197
- refOrigin[2] - dep.origin[2]
2198
- ]) + extra;
2322
+ return {
2323
+ position: scale$2(n, dot(n, sub(ref.origin, dep.origin)) + extra),
2324
+ rotation: IDENTITY_ROTATION
2325
+ };
2326
+ }
2327
+ /**
2328
+ * Concentric (axis-axis) mate: rotate the dependent so its axis is parallel to
2329
+ * the reference axis, then translate so the two axes are collinear (the
2330
+ * dependent's axis point is placed on the reference axis). `ref` is in world
2331
+ * space; the dependent is at the origin.
2332
+ */
2333
+ function solveConcentric(ref, dep) {
2334
+ const dRef = ref.direction ?? [
2335
+ 0,
2336
+ 0,
2337
+ 1
2338
+ ];
2339
+ const rotation = quatFromTo(dep.direction ?? [
2340
+ 0,
2341
+ 0,
2342
+ 1
2343
+ ], dRef);
2344
+ const rotatedOrigin = quatRotate(rotation, dep.origin);
2345
+ return {
2346
+ position: sub(ref.origin, rotatedOrigin),
2347
+ rotation
2348
+ };
2349
+ }
2350
+ /**
2351
+ * Angle mate: rotate the dependent so the angle between its (plane) normal and
2352
+ * the reference normal equals `angleRad`. Orientation-only — position is left at
2353
+ * the origin. `ref` is in world space; the dependent is at the origin.
2354
+ */
2355
+ function solveAngle(ref, dep, angleRad) {
2356
+ const nRef = normalize(ref.normal ?? [
2357
+ 0,
2358
+ 0,
2359
+ 1
2360
+ ]);
2361
+ const nDep = normalize(dep.normal ?? [
2362
+ 0,
2363
+ 0,
2364
+ 1
2365
+ ]);
2366
+ const phi = Math.acos(Math.max(-1, Math.min(1, dot(nDep, nRef))));
2367
+ const c = cross(nDep, nRef);
2199
2368
  return {
2200
2369
  position: [
2201
- offset * n[0],
2202
- offset * n[1],
2203
- offset * n[2]
2370
+ 0,
2371
+ 0,
2372
+ 0
2204
2373
  ],
2205
- rotation: IDENTITY_ROTATION
2374
+ rotation: quatFromAxisAngle(Math.hypot(c[0], c[1], c[2]) < 1e-9 ? anyPerpendicular(nDep) : c, phi - angleRad)
2206
2375
  };
2207
2376
  }
2377
+ /** Entity types each positioning constraint requires of (entityA, entityB). */
2378
+ var REQUIRED_ENTITIES = {
2379
+ coincident: "plane",
2380
+ distance: "plane",
2381
+ angle: "plane",
2382
+ concentric: "axis"
2383
+ };
2384
+ var POSITIONING_TYPES = new Set([
2385
+ "coincident",
2386
+ "distance",
2387
+ "angle",
2388
+ "concentric"
2389
+ ]);
2390
+ /** Dispatch a positioning mate to its solver. `ref` is already in world space. */
2391
+ function solveMate(c, ref, dep) {
2392
+ switch (c.type) {
2393
+ case "concentric": return solveConcentric(ref, dep);
2394
+ case "angle": return solveAngle(ref, dep, (c.value ?? 0) * Math.PI / 180);
2395
+ case "distance": return solvePlanePair(ref, dep, c.value ?? 0);
2396
+ default: return solvePlanePair(ref, dep, 0);
2397
+ }
2398
+ }
2208
2399
  /**
2209
2400
  * Solve assembly constraints analytically.
2210
2401
  *
2211
- * Handles: fixed, coincident (plane-plane), distance (plane-plane). For a
2212
- * positioning mate, entityA is the reference and entityB the dependent. Chain
2213
- * roots (nodes never positioned by a mate) and explicit `fixed` nodes anchor at
2214
- * the origin; constraints then resolve in topological order each places its
2215
- * dependent against the reference's solved pose, so multi-body chains compose.
2216
- * Returns `converged: false` with unsupported details for concentric, angle,
2217
- * non-plane pairs, and any constraint whose reference never resolves.
2402
+ * Handles: fixed, coincident/distance (plane-plane), concentric (axis-axis), and
2403
+ * angle (plane-plane orientation). For a positioning mate, entityA is the
2404
+ * reference and entityB the dependent. Chain roots (nodes never positioned by a
2405
+ * mate) and explicit `fixed` nodes anchor at the origin; constraints then resolve
2406
+ * in topological order — each places its dependent against the reference's solved
2407
+ * pose (rotation included), so multi-body chains compose. Returns
2408
+ * `converged: false` with details for entity-type mismatches and any constraint
2409
+ * whose reference never resolves.
2218
2410
  */
2219
2411
  function solveConstraints(nodes, constraints) {
2220
2412
  const transforms = /* @__PURE__ */ new Map();
@@ -2227,17 +2419,17 @@ function solveConstraints(nodes, constraints) {
2227
2419
  rotation: IDENTITY_ROTATION
2228
2420
  });
2229
2421
  const unsupported = [];
2230
- const positioning = constraints.filter((c) => (c.type === "coincident" || c.type === "distance") && c.entityA && c.entityB);
2422
+ const positioning = constraints.filter((c) => POSITIONING_TYPES.has(c.type) && c.entityA && c.entityB);
2231
2423
  const dependents = /* @__PURE__ */ new Set();
2232
2424
  for (const c of positioning) if (c.entityB) dependents.add(c.entityB.node);
2233
2425
  const placed = /* @__PURE__ */ new Set();
2234
2426
  for (const node of nodes) if (!dependents.has(node)) placed.add(node);
2235
2427
  for (const c of constraints) if (c.type === "fixed" && c.entityA) placed.add(c.entityA.node);
2236
- for (const c of constraints) if (c.type === "concentric" || c.type === "angle") unsupported.push(c.type);
2237
2428
  const pending = [];
2238
2429
  for (const c of positioning) {
2239
2430
  if (!c.entityA || !c.entityB) continue;
2240
- if (c.entityA.entity.type !== "plane" || c.entityB.entity.type !== "plane") {
2431
+ const required = REQUIRED_ENTITIES[c.type];
2432
+ if (c.entityA.entity.type !== required || c.entityB.entity.type !== required) {
2241
2433
  unsupported.push(`${c.type}(${c.entityA.entity.type}-${c.entityB.entity.type})`);
2242
2434
  continue;
2243
2435
  }
@@ -2263,8 +2455,8 @@ function solveConstraints(nodes, constraints) {
2263
2455
  ],
2264
2456
  rotation: IDENTITY_ROTATION
2265
2457
  };
2266
- const extra = c.type === "distance" ? c.value ?? 0 : 0;
2267
- transforms.set(dep.node, solvePlanePair(ref.entity, refPose.position, dep.entity, extra));
2458
+ const refWorld = transformEntity(ref.entity, refPose);
2459
+ transforms.set(dep.node, solveMate(c, refWorld, dep.entity));
2268
2460
  placed.add(dep.node);
2269
2461
  }
2270
2462
  }
@@ -2281,11 +2473,27 @@ function solveConstraints(nodes, constraints) {
2281
2473
  //#endregion
2282
2474
  //#region src/operations/mateFns.ts
2283
2475
  function extractEntity(mate) {
2284
- if (mate.face) return {
2285
- type: "plane",
2286
- origin: faceCenter(mate.face),
2287
- normal: normalAt(mate.face)
2288
- };
2476
+ if (mate.face) {
2477
+ const axis = faceAxis(mate.face);
2478
+ if (axis) return {
2479
+ type: "axis",
2480
+ origin: axis.origin,
2481
+ direction: axis.direction
2482
+ };
2483
+ return {
2484
+ type: "plane",
2485
+ origin: faceCenter(mate.face),
2486
+ normal: normalAt(mate.face)
2487
+ };
2488
+ }
2489
+ if (mate.edge) {
2490
+ if (getCurveType(mate.edge) === "LINE") return {
2491
+ type: "axis",
2492
+ origin: curveStartPoint(mate.edge),
2493
+ direction: curveTangentAt(mate.edge)
2494
+ };
2495
+ return null;
2496
+ }
2289
2497
  if (mate.point) return {
2290
2498
  type: "point",
2291
2499
  origin: mate.point
@@ -2405,6 +2613,102 @@ function solveAssembly(assembly) {
2405
2613
  }
2406
2614
  }
2407
2615
  //#endregion
2616
+ //#region src/operations/jointFns.ts
2617
+ var DEG2RAD$1 = Math.PI / 180;
2618
+ function clamp(value, min, max) {
2619
+ return Math.min(max, Math.max(min, value));
2620
+ }
2621
+ function unit(v) {
2622
+ const l = Math.hypot(v[0], v[1], v[2]) || 1;
2623
+ return [
2624
+ v[0] / l,
2625
+ v[1] / l,
2626
+ v[2] / l
2627
+ ];
2628
+ }
2629
+ function makeJoint(type, parent, child, axis, opts, defMin, defMax) {
2630
+ const a = opts.min ?? defMin;
2631
+ const b = opts.max ?? defMax;
2632
+ const min = Math.min(a, b);
2633
+ const max = Math.max(a, b);
2634
+ return {
2635
+ type,
2636
+ parent,
2637
+ child,
2638
+ axis: {
2639
+ origin: axis.origin,
2640
+ direction: unit(axis.direction)
2641
+ },
2642
+ min,
2643
+ max,
2644
+ value: clamp(opts.value ?? 0, min, max)
2645
+ };
2646
+ }
2647
+ /** A revolute (hinge) joint — the child rotates about `axis` by `value` degrees. */
2648
+ function revoluteJoint(parent, child, axis, opts = {}) {
2649
+ return makeJoint("revolute", parent, child, axis, opts, -180, 180);
2650
+ }
2651
+ /**
2652
+ * A prismatic (slider) joint — the child translates along `axis` by `value`
2653
+ * units. Only `axis.direction` is used; `axis.origin` is ignored (a pure
2654
+ * translation has no anchor point), unlike a revolute joint which rotates about
2655
+ * the axis line through `origin`.
2656
+ */
2657
+ function prismaticJoint(parent, child, axis, opts = {}) {
2658
+ return makeJoint("prismatic", parent, child, axis, opts, 0, 100);
2659
+ }
2660
+ /** Return a copy of `joint` with its drivable parameter set (clamped to range). */
2661
+ function setJointValue(joint, value) {
2662
+ return {
2663
+ ...joint,
2664
+ value: clamp(value, joint.min, joint.max)
2665
+ };
2666
+ }
2667
+ /**
2668
+ * The child's local rigid transform (relative to the parent) for a joint value.
2669
+ * Defaults to the joint's stored value; an explicit value is clamped to range.
2670
+ *
2671
+ * - **revolute**: rotation of `value` degrees about the axis line. Rotating
2672
+ * about a line through `origin` is `p ↦ R·p + (origin − R·origin)`.
2673
+ * - **prismatic**: translation of `value` units along the axis direction.
2674
+ */
2675
+ function jointTransform(joint, value = joint.value) {
2676
+ const v = clamp(value, joint.min, joint.max);
2677
+ const dir = unit(joint.axis.direction);
2678
+ if (joint.type === "prismatic") return {
2679
+ position: [
2680
+ dir[0] * v,
2681
+ dir[1] * v,
2682
+ dir[2] * v
2683
+ ],
2684
+ rotation: [
2685
+ 1,
2686
+ 0,
2687
+ 0,
2688
+ 0
2689
+ ]
2690
+ };
2691
+ const rotation = quatFromAxisAngle(dir, v * DEG2RAD$1);
2692
+ const o = joint.axis.origin;
2693
+ const ro = quatRotate(rotation, o);
2694
+ return {
2695
+ position: [
2696
+ o[0] - ro[0],
2697
+ o[1] - ro[1],
2698
+ o[2] - ro[2]
2699
+ ],
2700
+ rotation
2701
+ };
2702
+ }
2703
+ /** Attach a joint to an assembly node. Returns a new node (immutable). */
2704
+ function addJoint(assembly, joint) {
2705
+ const existing = assembly.joints ?? [];
2706
+ return {
2707
+ ...assembly,
2708
+ joints: [...existing, joint]
2709
+ };
2710
+ }
2711
+ //#endregion
2408
2712
  //#region src/measurement/interferenceFns.ts
2409
2713
  /**
2410
2714
  * Interference detection between shapes.
@@ -3045,7 +3349,7 @@ function mirror(shape, options) {
3045
3349
  }
3046
3350
  /** Scale a shape uniformly. Returns a new shape. */
3047
3351
  function scale(shape, factor, options) {
3048
- return scale$2(resolve(shape), factor, options?.center);
3352
+ return scale$3(resolve(shape), factor, options?.center);
3049
3353
  }
3050
3354
  /** Clone a shape (deep copy). */
3051
3355
  function clone(shape) {
@@ -5264,7 +5568,7 @@ function evalScale(node, ctx) {
5264
5568
  if (!center.ok) return center;
5265
5569
  const r = ctx.evalNode(node.target);
5266
5570
  if (!r.ok) return r;
5267
- return ok(scale$2(r.value, f.value, center.value));
5571
+ return ok(scale$3(r.value, f.value, center.value));
5268
5572
  }
5269
5573
  function evalMirror(node, ctx) {
5270
5574
  if (node.target.kind === "Empty") return emptyResult("Mirror");
@@ -6174,4 +6478,4 @@ var csg_exports = /* @__PURE__ */ __exportAll({
6174
6478
  withEvaluator: () => withEvaluator
6175
6479
  });
6176
6480
  //#endregion
6177
- export { BaseSketcher2d, BlueprintSketcher, BrepBugError, BrepErrorCode, BrepWrapperError, BrepkitAdapter, CompoundSketch, DEFAULT_CAPABILITIES, DEG2RAD, DisposalScope, EXACT_BREP_CAPABILITIES, FaceSketcher, HASH_CODE_MAX, OK, OcctWasmAdapter, RAD2DEG, Sketch, Sketcher, Sketches, addChild, addHoles, addMate, addStep, adjacentFaces, all, andThen, applyGlue, applyMatrix, approximateCurve, as2D, as3D, asTopo, assignRoles, autoHeal, bezier, blueprintToDXF, booleanPipeline, booleans_exports as booleans, boss, box, bsplineApprox, bug, cameraFromPlane, cameraLookAt, captureHint, cast, castShape, castShape3D, chamfer, chamferDistAngle as chamferDistAngleShape, chamferWithEvolution, checkAllInterferences, checkBoolean, checkInterference, circle, circularPattern, classifyPointOnFace, clearMeshCache, clone, closedWire, collect, collectShapes, colorFaces, colorShape, complexExtrude, composeTransforms, compound, compoundSketchExtrude, compoundSketchFace, compoundSketchLoft, compoundSketchRevolve, computationError, computeStraightSkeleton, cone, construction_exports as construction, convexHull, cornerFinder, countNodes, createAssembly, createAssemblyNode, createBlueprint, createCamera, createCompound, createCompoundBlueprint, createDistanceQuery, createEdge, createFace, createHandle, createHistory, createKernelHandle, createMeshCache, createNamedPlane, createOperationRegistry, createPlane, createRef, createRegistry, createShell, createSolid, createTaskQueue, createVertex, createWire, createWorkerClient, createWorkerHandler, csg_exports as csg, currentQuality, curve2dBoundingBox, curve2dDistanceFrom, curve2dFirstPoint, curve2dIsOnCurve, curve2dLastPoint, curve2dParameter, curve2dSplitAt, curve2dTangentAt, curveEndPoint, curveIsClosed, curveIsPeriodic, curveLength, curvePeriod, curvePointAt, curveStartPoint, curveTangentAt, cut, cut2D, cutAll, cutAllBisect, cutBlueprints, cutWithEvolution, cylinder, defaultScorer, dequeueTask, describe, deserializeDrawing, deserializeHistory, fromBREP as deserializeShape, downcast, draft, draw, drawCircle, drawEllipse, drawFaceOutline, drawParametricFunction, drawPointsInterpolation, drawPolysides, drawProjection, drawRectangle, drawRoundedRectangle, drawSingleCircle, drawSingleEllipse, drawText, drawingChamfer, drawingCut, drawingFillet, drawingFuse, drawingIntersect, drawingToSketchOnPlane, drill, edgeFinder, edgesOfFace, ellipse, ellipseArc, ellipsoid, enqueueTask, err, exportAssemblySTEP, exportDXF, exportGlb, exportGltf, exportIGES, exportOBJ, exportSTEP, exportSTEPConfigured, exportSTL, exportThreeMF, extrude, extrudeAll, face, faceCenter, faceFinder, faceGeomType, faceOrientation, facesOfEdge, fieldBoolean, fieldContour, fieldOffset, fieldReinit, fieldShell, fill, filledFace, fillet, filletWithEvolution, findFacesByTag, findNode, findStep, fixSelfIntersection, fixShape, flatMap, flatten, flipFaceOrientation, flipOrientation, fontMetrics, fromBREP$1 as fromBREP, fromKernelDir, fromKernelPnt, fromKernelVec, fromNullable, fuse, fuse2D, fuseAll, fuseAllBisect, fuseBlueprints, fuseWithEvolution, gearGeometry, getActiveVoxelId, getBounds, getBounds2D, getCompSolids, getCurveType, getDisposalStats, getEdges, getFaceColor, getFaceOrigins, getFaceTags, getFaces, getFont, getHashCode, getShape as getHistoryShape, getKernel, getKernelCapabilities, getKernelTier, getNurbsCurveData, getNurbsSurfaceData, getOrientation, getOrientation2D, getPerformanceStats, getShapeColor, getShapeKind, getShells, getSingleFace, getSolids, getSurfaceType, getTagMetadata, getVertices, getVoxel, getWires, guidedSweep, heal, healFace, healSolid, healWire, helix, hull, importDXF, importGLB, importIGES, importOBJ, importSTEP, importSTL, importSVG, importSVGPathD, importThreeMF, init, initFromManifold, initFromOC, initVoxel, innerWires, interpolateCurve, intersect, intersect2D, intersectBlueprints, intersectWithEvolution, invalidateShapeCache, ioNs_exports as io, ioError, is2D, is3D, isChamferRadius, isClosedWire, isCompSolid, isCompound, isDisposeRequest, isEdge, isEmpty, isEqualShape, isErr, isErrorResponse, isFace, isFilletRadius, isInitRequest, isInside2D, isLive, isManifoldShell, isNumber, isOk, isOperationRequest, isOrientedFace, isPlanarFace, isPlanarWire, isProjectionPlane, isEmpty$1 as isQueueEmpty, isSameShape, isShape1D, isShape3D, isShell, isSolid, isSuccessResponse, isValid, isValidSolid, isVertex, isWire, iterCompSolids, iterEdges, iterFaces, iterShells, iterSolids, iterTopo, iterVertices, iterWires, kernelCall, kernelCallRaw, kernelCallScoped, kernelError, latticeInfill, latticeInfillShape, line, linearPattern, loadFont, loft, loftAll, makeBaseBox, makeExternalGear, makeInternalGear, makePlane, makePlanetaryGear, makeProjectedEdges, manifoldShell, map, mapBoth, mapErr, match, measureArea, measureCurvatureAt, measureCurvatureAtMid, measureDistance, measureDistanceProps, measureLength, measureLinearProps, measureSurfaceProps, measureVolume, measureVolumeProps, measurement_exports as measurement, mesh, meshEdges, meshMultiLOD, minkowski, mirror, mirror2D, mirrorDrawing, mirrorJoin, modifiers_exports as modifiers, modifyStep, moduleInitError, multiSectionSweep, normalAt, offset, offsetFace, offsetMesh, offsetShape, offsetWire2D, ok, or, orElse, organiseBlueprints, orientedFace, outerWire, patterns_exports as patterns, pendingCount, pipeline, pivotPlane, planarFace, planarWire, planetPlacements, pocket, pointOnSurface, pointsInside, polygon, polyhedron, polysideInnerRadius, polysidesBlueprint, positionOnCurve, prewarm, primitives_exports as primitives, projectEdges, projectPointOnFace, query_exports as query, queryError, rectangularPattern, registerHandler, registerKernel, registerKernelTier, registerOperation, registerShape, registerVoxel, rejectAll, removeChild, removeHolesFromFace, repairMesh, replayFrom, replayHistory, resetDisposalStats, resetPerformanceStats, resize, resolve, resolve3D, resolveDirection, resolvePlane, resolveRef, reverseCurve, revolve, roof, rotate, rotate2D, rotateDrawing, roundedRectangleBlueprint, scale, scale2D, scaleDrawing, box$1 as sdfBox, capsule as sdfCapsule, cone$1 as sdfCone, cylinder$1 as sdfCylinder, fieldAxialRamp as sdfFieldAxialRamp, fieldClamp as sdfFieldClamp, fieldConst as sdfFieldConst, fieldFromSdf as sdfFieldFromSdf, fieldRadialRamp as sdfFieldRadialRamp, lattice as sdfLattice, plane as sdfPlane, roundedBox as sdfRoundedBox, sphere as sdfSphere, strutLattice as sdfStrutLattice, sweep as sdfSweep, torus as sdfTorus, section, sectionToFace, serializeHistory, setShapeOrigin, setTagMetadata, sewShells, shape, shapeToMeshInput, shapeType, sharedEdges, shell, shellMesh, shellShape, shellWithEvolution, simplify, sketchCircle, sketchEllipse, sketchExtrude, sketchFace, sketchFaceOffset, sketchHelix, sketchLoft, sketchOnFace2D, sketchOnPlane2D, sketchParametricFunction, sketchPolysides, sketchRectangle, sketchRevolve, sketchRoundedRectangle, sketchSweep, sketchText, sketchWires, sketcherStateError, slice, solid, solidFromShell, solveAssembly, sphere$1 as sphere, split, stepCount, stepsFrom, stretch2D, subFace, supportExtrude, supportsConstraintSketch, supportsProjection, surfaceFromGrid, surfaceFromImage, sweep$1 as sweep, tagFaces, tangentArc, tap, tapErr, textBlueprints, textMetrics, thicken, threePointArc, toBREP, toBufferGeometryData, toGroupedBufferGeometryData, toKernelVec, toLODGeometryData, toLineGeometryData, toSVGPathD, toVec2, toVec3, torus$1 as torus, tpmsLattice, transformCopy, transforms_exports as transforms, translate, translate2D, translateDrawing, translatePlane, tryCatch, tryCatchAsync, twistExtrude, typeCastError, undoLast, unsupportedError, unwrap, unwrapErr, unwrapOr, unwrapOrElse, updateNode, updateRoles, uvBounds, uvCoordinates, validSolid, validatePlanetary, validationError, variableFillet, vecAdd, vecAngle, vecCross, vecDistance, vecDot, vecEquals, vecIsZero, vecLength, vecLengthSq, vecNegate, vecNormalize, vecProjectToPlane, vecRepr, vecRotate, vecScale, vecSub, vertex, vertexFinder, vertexPosition, verticesOfEdge, voxelBoolean, voxelBooleanField, voxelBooleanFieldShapes, voxelBooleanShapes, voxelField, voxelFieldFromShape, walkAssembly, windingNumbers, wire, wireFinder, wireLoop, wiresOfFace, withKernel, withKernelDir, withKernelPnt, withKernelVec, withQuality, withScope, withScopeResult, withScopeResultAsync, withTier, zip as zipResults };
6481
+ export { BaseSketcher2d, BlueprintSketcher, BrepBugError, BrepErrorCode, BrepWrapperError, BrepkitAdapter, CompoundSketch, DEFAULT_CAPABILITIES, DEG2RAD, DisposalScope, EXACT_BREP_CAPABILITIES, FaceSketcher, HASH_CODE_MAX, OK, OcctWasmAdapter, RAD2DEG, Sketch, Sketcher, Sketches, addChild, addHoles, addJoint, addMate, addStep, adjacentFaces, all, andThen, applyGlue, applyMatrix, approximateCurve, as2D, as3D, asTopo, assignRoles, autoHeal, bezier, blueprintToDXF, booleanPipeline, booleans_exports as booleans, boss, box, bsplineApprox, bug, cameraFromPlane, cameraLookAt, captureHint, cast, castShape, castShape3D, chamfer, chamferDistAngle as chamferDistAngleShape, chamferWithEvolution, checkAllInterferences, checkBoolean, checkInterference, circle, circularPattern, classifyPointOnFace, clearMeshCache, clone, closedWire, collect, collectShapes, colorFaces, colorShape, complexExtrude, composeTransforms, compound, compoundSketchExtrude, compoundSketchFace, compoundSketchLoft, compoundSketchRevolve, computationError, computeStraightSkeleton, cone, construction_exports as construction, convexHull, cornerFinder, countNodes, createAssembly, createAssemblyNode, createBlueprint, createCamera, createCompound, createCompoundBlueprint, createDistanceQuery, createEdge, createFace, createHandle, createHistory, createKernelHandle, createMeshCache, createNamedPlane, createOperationRegistry, createPlane, createRef, createRegistry, createShell, createSolid, createTaskQueue, createVertex, createWire, createWorkerClient, createWorkerHandler, csg_exports as csg, currentQuality, curve2dBoundingBox, curve2dDistanceFrom, curve2dFirstPoint, curve2dIsOnCurve, curve2dLastPoint, curve2dParameter, curve2dSplitAt, curve2dTangentAt, curveEndPoint, curveIsClosed, curveIsPeriodic, curveLength, curvePeriod, curvePointAt, curveStartPoint, curveTangentAt, cut, cut2D, cutAll, cutAllBisect, cutBlueprints, cutWithEvolution, cylinder, defaultScorer, dequeueTask, describe, deserializeDrawing, deserializeHistory, fromBREP as deserializeShape, downcast, draft, draw, drawCircle, drawEllipse, drawFaceOutline, drawParametricFunction, drawPointsInterpolation, drawPolysides, drawProjection, drawRectangle, drawRoundedRectangle, drawSingleCircle, drawSingleEllipse, drawText, drawingChamfer, drawingCut, drawingFillet, drawingFuse, drawingIntersect, drawingToSketchOnPlane, drill, edgeFinder, edgesOfFace, ellipse, ellipseArc, ellipsoid, enqueueTask, err, exportAssemblySTEP, exportDXF, exportGlb, exportGltf, exportIGES, exportOBJ, exportSTEP, exportSTEPConfigured, exportSTL, exportThreeMF, extrude, extrudeAll, face, faceAxis, faceCenter, faceFinder, faceGeomType, faceOrientation, facesOfEdge, fieldBoolean, fieldContour, fieldOffset, fieldReinit, fieldShell, fill, filledFace, fillet, filletWithEvolution, findFacesByTag, findNode, findStep, fixSelfIntersection, fixShape, flatMap, flatten, flipFaceOrientation, flipOrientation, fontMetrics, fromBREP$1 as fromBREP, fromKernelDir, fromKernelPnt, fromKernelVec, fromNullable, fuse, fuse2D, fuseAll, fuseAllBisect, fuseBlueprints, fuseWithEvolution, gearGeometry, getActiveVoxelId, getBounds, getBounds2D, getCompSolids, getCurveType, getDisposalStats, getEdges, getFaceColor, getFaceOrigins, getFaceTags, getFaces, getFont, getHashCode, getShape as getHistoryShape, getKernel, getKernelCapabilities, getKernelTier, getNurbsCurveData, getNurbsSurfaceData, getOrientation, getOrientation2D, getPerformanceStats, getShapeColor, getShapeKind, getShells, getSingleFace, getSolids, getSurfaceType, getTagMetadata, getVertices, getVoxel, getWires, guidedSweep, heal, healFace, healSolid, healWire, helix, hull, importDXF, importGLB, importIGES, importOBJ, importSTEP, importSTL, importSVG, importSVGPathD, importThreeMF, init, initFromManifold, initFromOC, initVoxel, innerWires, interpolateCurve, intersect, intersect2D, intersectBlueprints, intersectWithEvolution, invalidateShapeCache, ioNs_exports as io, ioError, is2D, is3D, isChamferRadius, isClosedWire, isCompSolid, isCompound, isDisposeRequest, isEdge, isEmpty, isEqualShape, isErr, isErrorResponse, isFace, isFilletRadius, isInitRequest, isInside2D, isLive, isManifoldShell, isNumber, isOk, isOperationRequest, isOrientedFace, isPlanarFace, isPlanarWire, isProjectionPlane, isEmpty$1 as isQueueEmpty, isSameShape, isShape1D, isShape3D, isShell, isSolid, isSuccessResponse, isValid, isValidSolid, isVertex, isWire, iterCompSolids, iterEdges, iterFaces, iterShells, iterSolids, iterTopo, iterVertices, iterWires, jointTransform, kernelCall, kernelCallRaw, kernelCallScoped, kernelError, latticeInfill, latticeInfillShape, line, linearPattern, loadFont, loft, loftAll, makeBaseBox, makeExternalGear, makeInternalGear, makePlane, makePlanetaryGear, makeProjectedEdges, manifoldShell, map, mapBoth, mapErr, match, measureArea, measureCurvatureAt, measureCurvatureAtMid, measureDistance, measureDistanceProps, measureLength, measureLinearProps, measureSurfaceProps, measureVolume, measureVolumeProps, measurement_exports as measurement, mesh, meshEdges, meshMultiLOD, minkowski, mirror, mirror2D, mirrorDrawing, mirrorJoin, modifiers_exports as modifiers, modifyStep, moduleInitError, multiSectionSweep, normalAt, offset, offsetFace, offsetMesh, offsetShape, offsetWire2D, ok, or, orElse, organiseBlueprints, orientedFace, outerWire, patterns_exports as patterns, pendingCount, pipeline, pivotPlane, planarFace, planarWire, planetPlacements, pocket, pointOnSurface, pointsInside, polygon, polyhedron, polysideInnerRadius, polysidesBlueprint, positionOnCurve, prewarm, primitives_exports as primitives, prismaticJoint, projectEdges, projectPointOnFace, query_exports as query, queryError, rectangularPattern, registerHandler, registerKernel, registerKernelTier, registerOperation, registerShape, registerVoxel, rejectAll, removeChild, removeHolesFromFace, repairMesh, replayFrom, replayHistory, resetDisposalStats, resetPerformanceStats, resize, resolve, resolve3D, resolveDirection, resolvePlane, resolveRef, reverseCurve, revoluteJoint, revolve, roof, rotate, rotate2D, rotateDrawing, roundedRectangleBlueprint, scale, scale2D, scaleDrawing, box$1 as sdfBox, capsule as sdfCapsule, cone$1 as sdfCone, cylinder$1 as sdfCylinder, fieldAxialRamp as sdfFieldAxialRamp, fieldClamp as sdfFieldClamp, fieldConst as sdfFieldConst, fieldFromSdf as sdfFieldFromSdf, fieldRadialRamp as sdfFieldRadialRamp, lattice as sdfLattice, plane as sdfPlane, roundedBox as sdfRoundedBox, sphere as sdfSphere, strutLattice as sdfStrutLattice, sweep as sdfSweep, torus as sdfTorus, section, sectionToFace, serializeHistory, setJointValue, setShapeOrigin, setTagMetadata, sewShells, shape, shapeToMeshInput, shapeType, sharedEdges, shell, shellMesh, shellShape, shellWithEvolution, simplify, sketchCircle, sketchEllipse, sketchExtrude, sketchFace, sketchFaceOffset, sketchHelix, sketchLoft, sketchOnFace2D, sketchOnPlane2D, sketchParametricFunction, sketchPolysides, sketchRectangle, sketchRevolve, sketchRoundedRectangle, sketchSweep, sketchText, sketchWires, sketcherStateError, slice, solid, solidFromShell, solveAssembly, sphere$1 as sphere, split, stepCount, stepsFrom, stretch2D, subFace, supportExtrude, supportsConstraintSketch, supportsProjection, surfaceFromGrid, surfaceFromImage, sweep$1 as sweep, tagFaces, tangentArc, tap, tapErr, textBlueprints, textMetrics, thicken, threePointArc, toBREP, toBufferGeometryData, toGroupedBufferGeometryData, toKernelVec, toLODGeometryData, toLineGeometryData, toSVGPathD, toVec2, toVec3, torus$1 as torus, tpmsLattice, transformCopy, transforms_exports as transforms, translate, translate2D, translateDrawing, translatePlane, tryCatch, tryCatchAsync, twistExtrude, typeCastError, undoLast, unsupportedError, unwrap, unwrapErr, unwrapOr, unwrapOrElse, updateNode, updateRoles, uvBounds, uvCoordinates, validSolid, validatePlanetary, validationError, variableFillet, vecAdd, vecAngle, vecCross, vecDistance, vecDot, vecEquals, vecIsZero, vecLength, vecLengthSq, vecNegate, vecNormalize, vecProjectToPlane, vecRepr, vecRotate, vecScale, vecSub, vertex, vertexFinder, vertexPosition, verticesOfEdge, voxelBoolean, voxelBooleanField, voxelBooleanFieldShapes, voxelBooleanShapes, voxelField, voxelFieldFromShape, walkAssembly, windingNumbers, wire, wireFinder, wireLoop, wiresOfFace, withKernel, withKernelDir, withKernelPnt, withKernelVec, withQuality, withScope, withScopeResult, withScopeResultAsync, withTier, zip as zipResults };
@@ -1,6 +1,6 @@
1
- import { Z as getKernel, t as castShape } from "./shapeTypes-yCQ8z5Hc.js";
1
+ import { Z as getKernel, t as castShape } from "./shapeTypes-2cKwu2z4.js";
2
2
  import { A as ok, b as err, d as validationError } from "./errors-DNWJsfVU.js";
3
- import { s as getEdges } from "./topologyQueryFns-Bxdnl5Vt.js";
3
+ import { s as getEdges } from "./topologyQueryFns-c2RQIcfW.js";
4
4
  import { c as vecLength, d as vecNormalize, g as vecSub, r as vecCross } from "./vecOps-SKPRvPH-.js";
5
5
  //#region src/projection/projectionPlanes.ts
6
6
  /** Lookup table mapping each {@link ProjectionPlane} to its camera configuration. */
@@ -1,6 +1,6 @@
1
- const require_shapeTypes = require("./shapeTypes-BIlZar9m.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-DRxArFIc.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-BuWZAQ_o.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-024l64sD.cjs");
4
4
  const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
5
5
  //#region src/projection/projectionPlanes.ts
6
6
  /** Lookup table mapping each {@link ProjectionPlane} to its camera configuration. */
package/dist/core.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_shapeTypes = require("./shapeTypes-BIlZar9m.cjs");
2
+ const require_shapeTypes = require("./shapeTypes-DRxArFIc.cjs");
3
3
  const require_errors = require("./errors-CXJtc4I7.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
5
  const require_types = require("./types-KjA8tY4Y.cjs");
package/dist/core.js CHANGED
@@ -1,4 +1,4 @@
1
- import { B as createKernelHandle, C as isOrientedFace, D as manifoldShell, E as isValidSolid, H as isLive, I as is2D, J as withScopeResultAsync, K as withScope, L as is3D, M as getShapeKind, O as orientedFace, R as DisposalScope, S as isManifoldShell, _ as isSolid, b as closedWire, d as isCompound, f as isEdge, g as isShell, h as isShape3D, j as validSolid, m as isShape1D, p as isFace, q as withScopeResult, t as castShape, v as isVertex, x as isClosedWire, y as isWire, z as createHandle } from "./shapeTypes-yCQ8z5Hc.js";
1
+ import { B as createKernelHandle, C as isOrientedFace, D as manifoldShell, E as isValidSolid, H as isLive, I as is2D, J as withScopeResultAsync, K as withScope, L as is3D, M as getShapeKind, O as orientedFace, R as DisposalScope, S as isManifoldShell, _ as isSolid, b as closedWire, d as isCompound, f as isEdge, g as isShell, h as isShape3D, j as validSolid, m as isShape1D, p as isFace, q as withScopeResult, t as castShape, v as isVertex, x as isClosedWire, y as isWire, z as createHandle } from "./shapeTypes-2cKwu2z4.js";
2
2
  import { A as ok, B as unwrapOr, E as map, I as tryCatch, L as tryCatchAsync, O as mapErr, R as unwrap, T as isOk, V as unwrapOrElse, a as moduleInitError, b as err, c as sketcherStateError, d as validationError, g as OK, h as bug, i as kernelError, k as match, l as typeCastError, m as BrepBugError, n as computationError, o as queryError, r as ioError, u as unsupportedError, v as andThen, w as isErr, x as flatMap, y as collect, z as unwrapErr } from "./errors-DNWJsfVU.js";
3
3
  import { n as HASH_CODE_MAX, r as RAD2DEG, t as DEG2RAD } from "./constants-ITRzCnCp.js";
4
4
  import { n as toVec2, r as toVec3, t as resolveDirection } from "./types-D24Y27N0.js";
@@ -1,6 +1,6 @@
1
1
  const require_constants = require("./constants-BOVyEYGH.cjs");
2
2
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
3
- const require_helpers = require("./helpers-D8ycrNeD.cjs");
3
+ const require_helpers = require("./helpers-BmY5kO0w.cjs");
4
4
  //#region src/query/cornerFinder.ts
5
5
  var PI_2 = 2 * Math.PI;
6
6
  function positiveHalfAngle(angle) {