brepjs 18.116.0 → 18.117.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 (57) hide show
  1. package/dist/2d.cjs +4 -4
  2. package/dist/2d.js +4 -4
  3. package/dist/{blueprint-BwkD2qeC.cjs → blueprint-Bb6y8xmG.cjs} +1 -1
  4. package/dist/{blueprint-Dw0QqImu.js → blueprint-ccFH0CU4.js} +1 -1
  5. package/dist/{blueprintFns-B-aybpEo.cjs → blueprintFns-B7nDXYsr.cjs} +2 -2
  6. package/dist/{blueprintFns-BowWsZgJ.js → blueprintFns-Cvhzcmrk.js} +2 -2
  7. package/dist/{blueprintSketcher-RK-cH6ps.cjs → blueprintSketcher-BY6R2umG.cjs} +2 -2
  8. package/dist/{blueprintSketcher-7rtwqUHZ.js → blueprintSketcher-Cw_Epicg.js} +2 -2
  9. package/dist/{boolean2D-y0SSZfe2.js → boolean2D-BiPWJMSB.js} +3 -3
  10. package/dist/{boolean2D-CZUEOoAh.cjs → boolean2D-mBIMAMP3.cjs} +3 -3
  11. package/dist/brepjs.cjs +156 -50
  12. package/dist/brepjs.js +156 -51
  13. package/dist/{cornerFinder-DUGeBIvD.js → cornerFinder-Baa3j5Ph.js} +1 -1
  14. package/dist/{cornerFinder-B4q88TRb.cjs → cornerFinder-DaHVcKSL.cjs} +1 -1
  15. package/dist/{drawFns-SQIBls6p.js → drawFns-Blkxt9ei.js} +6 -6
  16. package/dist/{drawFns-DNxs7PAT.cjs → drawFns-NEdyNRo-.cjs} +6 -6
  17. package/dist/{healingFns-xLJ6Cp_O.cjs → healingFns-DiVnJgwh.cjs} +2 -2
  18. package/dist/{healingFns-2TJHHDg5.js → healingFns-TnTWI_K_.js} +2 -2
  19. package/dist/{helpers-DhJwFrkC.js → helpers-BuJ2542Q.js} +1 -1
  20. package/dist/{helpers-BSLPCflF.cjs → helpers-Cy4IH0Dc.cjs} +1 -1
  21. package/dist/{importFns-CgMQIi0z.cjs → importFns-2X1Bh_-e.cjs} +1 -1
  22. package/dist/{importFns-nR9lEx22.js → importFns-DU6m8NVC.js} +1 -1
  23. package/dist/index.d.ts +1 -1
  24. package/dist/io.cjs +2 -2
  25. package/dist/io.js +2 -2
  26. package/dist/{meshFns-DbmidUzH.js → meshFns-DBsxqJd3.js} +1 -1
  27. package/dist/{meshFns-1hQSn1p2.cjs → meshFns-HyzvCIhb.cjs} +1 -1
  28. package/dist/operations.cjs +1 -1
  29. package/dist/operations.js +1 -1
  30. package/dist/{primitiveFns-DLIWtQWA.cjs → primitiveFns-DvGRmEox.cjs} +2 -2
  31. package/dist/{primitiveFns-CBrOyk5S.js → primitiveFns-LYeAjO6E.js} +2 -2
  32. package/dist/query.cjs +2 -2
  33. package/dist/query.js +2 -2
  34. package/dist/{refResolveFns-BiEBAREW.cjs → refResolveFns-BGcsRo5a.cjs} +1 -1
  35. package/dist/{refResolveFns-Ck6kJzLE.js → refResolveFns-BzIXnBrs.js} +1 -1
  36. package/dist/{shapeFns-DrZOVwHX.js → shapeFns-DJHbIsRX.js} +26 -1
  37. package/dist/{shapeFns-ybo0INGL.cjs → shapeFns-aI4Hr4XV.cjs} +31 -0
  38. package/dist/shapeRef.cjs +1 -1
  39. package/dist/shapeRef.js +1 -1
  40. package/dist/sketching.cjs +3 -3
  41. package/dist/sketching.js +3 -3
  42. package/dist/{solidBuilders-C32wXQWG.js → solidBuilders-CjrjwCtG.js} +1 -1
  43. package/dist/{solidBuilders-DiUv_mD0.cjs → solidBuilders-DSokszEg.cjs} +1 -1
  44. package/dist/text.cjs +2 -2
  45. package/dist/text.js +2 -2
  46. package/dist/{textBlueprints-D5lsZswr.cjs → textBlueprints-BvD0c2S0.cjs} +2 -2
  47. package/dist/{textBlueprints-BnkWAqwS.js → textBlueprints-gMoNCh6B.js} +2 -2
  48. package/dist/{textMetrics-COGYk0LE.js → textMetrics-7Je4nat3.js} +1 -1
  49. package/dist/{textMetrics-IC_IoI7l.cjs → textMetrics-BZwyjpX_.cjs} +1 -1
  50. package/dist/{threadFns-Dgr2qyJv.js → threadFns-B9udL9Zs.js} +5 -5
  51. package/dist/{threadFns-KrG_i9_w.cjs → threadFns-cKaZIY34.cjs} +10 -4
  52. package/dist/topology/api.d.ts +7 -0
  53. package/dist/topology/shapeFns.d.ts +1 -1
  54. package/dist/topology/transformFns.d.ts +15 -0
  55. package/dist/topology.cjs +5 -5
  56. package/dist/topology.js +5 -5
  57. package/package.json +1 -1
package/dist/brepjs.js CHANGED
@@ -8,30 +8,30 @@ import { n as toVec2, r as toVec3, t as resolveDirection } from "./types-D24Y27N
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
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-B86WGqDg.js";
11
- import { A as getFaceOrigins, C as getFaceColor, D as getTagMetadata, E as getFaceTags, O as setTagMetadata, S as colorShape, T as findFacesByTag, _ as hasAnyMetadata, a as isSameShape, b as propagateMetadataThroughRelocation, c as applyMatrix$1, d as resize, f as rotate$2, h as translate$2, i as isEqualShape, j as setShapeOrigin, k as tagFaces, 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 getShapeColor, x as colorFaces } from "./shapeFns-DrZOVwHX.js";
11
+ import { A as tagFaces, C as colorShape, D as getFaceTags, E as findFacesByTag, M as setShapeOrigin, O as getTagMetadata, S as colorFaces, T as getShapeColor, a as isSameShape, c as applyMatrix$1, d as mirror$2, f as resize, g as translate$2, h as transformCopy$1, i as isEqualShape, j as getFaceOrigins, k as setTagMetadata, l as composeTransforms, m as scale$3, n as getHashCode, o as simplify$1, p as rotate$2, r as isEmpty$2, s as toBREP$1, t as clone$1, u as locate$1, v as hasAnyMetadata, w as getFaceColor, x as propagateMetadataThroughRelocation } from "./shapeFns-DJHbIsRX.js";
12
12
  import { a as curveIsPeriodic, c as curvePointAt, d as flipOrientation, f as getCurveType, h as offsetWire2D, i as curveIsClosed, l as curveStartPoint, m as interpolateCurve, n as curveAxis, o as curveLength, p as getOrientation, r as curveEndPoint, s as curvePeriod, t as approximateCurve, u as curveTangentAt } from "./curveFns-CcSn4-Rf.js";
13
- import { a as meshEdges$1, c as meshMultiLOD, d as createMeshCache, i as mesh$1, l as buildMeshCacheKey, n as exportSTEP, o as meshLODs, r as exportSTL, s as meshLODsProgressive, t as exportIGES, u as clearMeshCache } from "./meshFns-DbmidUzH.js";
13
+ import { a as meshEdges$1, c as meshMultiLOD, d as createMeshCache, i as mesh$1, l as buildMeshCacheKey, n as exportSTEP, o as meshLODs, r as exportSTL, s as meshLODsProgressive, t as exportIGES, u as clearMeshCache } from "./meshFns-DBsxqJd3.js";
14
14
  import { n as getAtOrThrow, r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
15
15
  import { _ as makeThreePointArc, d as makeCircle, h as makeLine, l as makeBSplineInterpolation, n as fill, r as makeFace, s as assembleWire } from "./surfaceBuilders-rkE-jE90.js";
16
- import { _ as section$1, b as split$1, d as booleanPipeline, f as cut$2, g as intersect$2, h as fuseAll$2, m as fuse$2, p as cutAll$2, r as makeCylinder, t as makeCompound, v as sectionToFace$1, y as slice$1 } from "./solidBuilders-C32wXQWG.js";
17
- import { A as toBufferGeometryData, C as shellWithEvolution, D as getNurbsCurveData, E as fuseAllBisect, M as toLODGeometryData, N as toLODGeometryLevels, O as getNurbsSurfaceData, P as toLineGeometryData, S as intersectWithEvolution, T as cutAllBisect, _ as positionOnCurve, a as healFace, b as filletWithEvolution, c as isValid$1, d as draft$1, f as fillet$1, g as variableFillet, h as thicken$1, i as heal$1, j as toGroupedBufferGeometryData, k as chamferDistAngle, l as solidFromShell, m as shell$1, n as fixSelfIntersection, o as healSolid, p as offset$1, r as fixShape, s as healWire, t as autoHeal, u as chamfer$1, v as chamferWithEvolution, w as checkBoolean, x as fuseWithEvolution, y as cutWithEvolution } from "./healingFns-2TJHHDg5.js";
18
- import { A as setJointValue, B as findNode, C as cylindricalJoint, D as planarJoint, E as mechanismDOF, F as quatRotate, G as gridPattern, H as updateNode, I as addChild, J as createAssembly, K as linearPattern, L as collectShapes, M as sphericalJoint, N as quatFromAxisAngle, O as prismaticJoint, P as quatFromTo, R as countNodes, S as addJoint, T as jointTransform, U as walkAssembly, V as removeChild, W as circularPattern, _ as exportURDF, a as deserializeHistory, b as inverseKinematics, c as modifyStep, d as replayFrom, f as replayHistory, g as undoLast, h as stepsFrom, i as createRegistry, j as setJointValues, k as revoluteJoint, l as registerOperation, m as stepCount, n as addStep, o as findStep, p as serializeHistory, q as exportAssemblySTEP, r as createHistory, s as getShape, t as thread, u as registerShape, v as importURDF, w as forwardKinematics, x as jointTrajectory, y as jointsFromDH, z as createAssemblyNode } from "./threadFns-Dgr2qyJv.js";
19
- import { n as BaseSketcher2d, r as organiseBlueprints, t as BlueprintSketcher } from "./blueprintSketcher-7rtwqUHZ.js";
20
- import { a as createTypedFinder, i as wireFinder, n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-DhJwFrkC.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-SQIBls6p.js";
16
+ import { _ as section$1, b as split$1, d as booleanPipeline, f as cut$2, g as intersect$2, h as fuseAll$2, m as fuse$2, p as cutAll$2, r as makeCylinder, t as makeCompound, v as sectionToFace$1, y as slice$1 } from "./solidBuilders-CjrjwCtG.js";
17
+ import { A as toBufferGeometryData, C as shellWithEvolution, D as getNurbsCurveData, E as fuseAllBisect, M as toLODGeometryData, N as toLODGeometryLevels, O as getNurbsSurfaceData, P as toLineGeometryData, S as intersectWithEvolution, T as cutAllBisect, _ as positionOnCurve, a as healFace, b as filletWithEvolution, c as isValid$1, d as draft$1, f as fillet$1, g as variableFillet, h as thicken$1, i as heal$1, j as toGroupedBufferGeometryData, k as chamferDistAngle, l as solidFromShell, m as shell$1, n as fixSelfIntersection, o as healSolid, p as offset$1, r as fixShape, s as healWire, t as autoHeal, u as chamfer$1, v as chamferWithEvolution, w as checkBoolean, x as fuseWithEvolution, y as cutWithEvolution } from "./healingFns-TnTWI_K_.js";
18
+ import { A as setJointValue, B as createAssemblyNode, C as cylindricalJoint, D as planarJoint, E as mechanismDOF, F as quatMultiply, G as circularPattern, H as removeChild, I as quatRotate, J as exportAssemblySTEP, K as gridPattern, L as addChild, M as sphericalJoint, N as quatFromAxisAngle, O as prismaticJoint, P as quatFromTo, R as collectShapes, S as addJoint, T as jointTransform, U as updateNode, V as findNode, W as walkAssembly, Y as createAssembly, _ as exportURDF, a as deserializeHistory, b as inverseKinematics, c as modifyStep, d as replayFrom, f as replayHistory, g as undoLast, h as stepsFrom, i as createRegistry, j as setJointValues, k as revoluteJoint, l as registerOperation, m as stepCount, n as addStep, o as findStep, p as serializeHistory, q as linearPattern, r as createHistory, s as getShape, t as thread, u as registerShape, v as importURDF, w as forwardKinematics, x as jointTrajectory, y as jointsFromDH, z as countNodes } from "./threadFns-B9udL9Zs.js";
19
+ import { n as BaseSketcher2d, r as organiseBlueprints, t as BlueprintSketcher } from "./blueprintSketcher-Cw_Epicg.js";
20
+ import { a as createTypedFinder, i as wireFinder, n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-BuJ2542Q.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-Blkxt9ei.js";
22
22
  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-a5Vx25or.js";
23
- import { t as cornerFinder } from "./cornerFinder-DUGeBIvD.js";
24
- 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-y0SSZfe2.js";
25
- 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-BowWsZgJ.js";
26
- 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-nR9lEx22.js";
23
+ import { t as cornerFinder } from "./cornerFinder-Baa3j5Ph.js";
24
+ 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-BiPWJMSB.js";
25
+ 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-Cvhzcmrk.js";
26
+ 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-DU6m8NVC.js";
27
27
  import { a as revolve$1, c as multiSectionSweep, d as twistExtrude, i as extrudeAll, l as supportExtrude, n as loftAll, o as complexExtrude, r as extrude$1, s as guidedSweep, t as loft$1, u as sweep$1 } from "./loftFns-CmShFQlv.js";
28
- import { a as Sketch, 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 } from "./textBlueprints-BnkWAqwS.js";
28
+ import { a as Sketch, 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 } from "./textBlueprints-gMoNCh6B.js";
29
29
  import { a as makeProjectedEdges, i as projectEdges, n as cameraLookAt, r as createCamera, s as isProjectionPlane, t as cameraFromPlane } from "./cameraFns-bk9e0F-T.js";
30
- import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-COGYk0LE.js";
30
+ import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-7Je4nat3.js";
31
31
  import { a as sharedEdges, c as wiresOfFace, i as facesOfVertex, n as edgesOfFace, o as verticesOfEdge, r as facesOfEdge, s as verticesOfFace, t as adjacentFaces } from "./adjacencyFns-BYnyXXqt.js";
32
- import { _ as createRef, a as isVertexRef, b as defaultScorer, c as resolveRefParams, d as createVertexRef, f as resolveVertexRef, g as captureHint, h as assignRoles, i as isLineageRef, l as createDerivedFaceRef, m as resolveEdgeRef, n as isEdgeRef, o as resolveLineageRef, p as createEdgeRef, r as isFaceRef, s as resolveRefIn, t as isDerivedFaceRef, u as resolveDerivedFaceRef, v as resolveRef, y as updateRoles } from "./refResolveFns-Ck6kJzLE.js";
32
+ import { _ as createRef, a as isVertexRef, b as defaultScorer, c as resolveRefParams, d as createVertexRef, f as resolveVertexRef, g as captureHint, h as assignRoles, i as isLineageRef, l as createDerivedFaceRef, m as resolveEdgeRef, n as isEdgeRef, o as resolveLineageRef, p as createEdgeRef, r as isFaceRef, s as resolveRefIn, t as isDerivedFaceRef, u as resolveDerivedFaceRef, v as resolveRef, y as updateRoles } from "./refResolveFns-BzIXnBrs.js";
33
33
  import { _ as isSuccessResponse, a as createWorkerClient, c as enqueueTask, d as rejectAll, f as isBatchRequest, g as isOperationRequest, h as isInitRequest, i as registerHandler, l as isEmpty$1, m as isErrorResponse, n as createOperationRegistry, o as createTaskQueue, p as isDisposeRequest, r as createWorkerHandler, s as dequeueTask, t as createWorkerPool, u as pendingCount } from "./workerPool-XcYX2UZ0.js";
34
- import { C as threePointArc, D as wireLoop, E as wire, S as tangentArc, T as vertex, _ as polygon, a as circle, b as sphere$1, c as cylinder, d as ellipsoid, f as face, g as offsetFace, h as line, i as bsplineApprox, l as ellipse, m as helix, n as bezier, o as compound, p as filledFace, r as box, s as cone, t as addHoles, u as ellipseArc, v as sewShells, w as torus$1, x as subFace, y as solid } from "./primitiveFns-CBrOyk5S.js";
34
+ import { C as threePointArc, D as wireLoop, E as wire, S as tangentArc, T as vertex, _ as polygon, a as circle, b as sphere$1, c as cylinder, d as ellipsoid, f as face, g as offsetFace, h as line, i as bsplineApprox, l as ellipse, m as helix, n as bezier, o as compound, p as filledFace, r as box, s as cone, t as addHoles, u as ellipseArc, v as sewShells, w as torus$1, x as subFace, y as solid } from "./primitiveFns-LYeAjO6E.js";
35
35
  //#region \0rolldown/runtime.js
36
36
  var __defProp = Object.defineProperty;
37
37
  var __exportAll = (all, no_symbols) => {
@@ -3485,6 +3485,15 @@ function applyMatrix(shape, matrix) {
3485
3485
  function transformCopy(shape, composed) {
3486
3486
  return transformCopy$1(resolve(shape), composed);
3487
3487
  }
3488
+ /**
3489
+ * Placement-only rigid move (translate / rotate) via the kernel's cheap location
3490
+ * re-tag — O(1) on occt-wasm ≥3.6.0, falling back to a copy elsewhere. Same
3491
+ * face-metadata guarantee as `translate`, at location-swap cost. Ideal for
3492
+ * placing one cached cell at N positions without paying for N deep copies.
3493
+ */
3494
+ function locate(shape, placement) {
3495
+ return locate$1(resolve(shape), placement);
3496
+ }
3488
3497
  /** Fuse two 3D shapes (boolean union). */
3489
3498
  function fuse(a, b, options) {
3490
3499
  return fuse$2(resolve(a), resolve(b), {
@@ -5840,48 +5849,144 @@ function cacheKey(node, env, kernelId, tolerance) {
5840
5849
  const tolHash = tolerance === void 0 ? "d" : fnvMixNumber(fnvInit(), tolerance).toString(16);
5841
5850
  return `${toHex(node.structuralHash)}:${kernelId}:${toHex(projHash)}:${tolHash}`;
5842
5851
  }
5852
+ var IDENTITY_QUAT = [
5853
+ 1,
5854
+ 0,
5855
+ 0,
5856
+ 0
5857
+ ];
5858
+ /** Resolve a Rotate node's angle/axis/center in `env`, applying the same
5859
+ * defaults as the evaluator (Z axis, origin pivot). Null if any free param
5860
+ * can't be evaluated, so the caller stops peeling there. */
5861
+ function evalRotateParams(node, env) {
5862
+ const a = evalScalar(node.angle, env, "evaluateMesh.peelRigid");
5863
+ if (!a.ok) return null;
5864
+ const axis = node.axis ? evalVec3(node.axis, env, "evaluateMesh.peelRigid") : ok([
5865
+ 0,
5866
+ 0,
5867
+ 1
5868
+ ]);
5869
+ if (!axis.ok) return null;
5870
+ const center = node.at ? evalVec3(node.at, env, "evaluateMesh.peelRigid") : ok([
5871
+ 0,
5872
+ 0,
5873
+ 0
5874
+ ]);
5875
+ if (!center.ok) return null;
5876
+ return {
5877
+ angle: a.value,
5878
+ axis: axis.value,
5879
+ center: center.value
5880
+ };
5881
+ }
5843
5882
  /**
5844
- * Peel outer Translate nodes off `node`, accumulating their env-evaluated
5845
- * offsets. Pure translations compose by addition, so the inner geometry is
5846
- * placement-independent: it meshes once and the cached mesh is shifted per
5847
- * placement instead of re-tessellating. Stops at the first non-Translate node
5848
- * (or one whose offset can't be evaluated in `env`).
5883
+ * Peel outer rigid-motion nodes (Translate / Rotate) off `node`, composing them
5884
+ * into a single rotation + translation. A rigid motion shares its inner
5885
+ * geometry's tessellation the shape path re-tags it via `locate` (#1633) — so
5886
+ * the inner meshes once and the cached mesh is moved per placement instead of
5887
+ * re-tessellating. Stops at the first non-rigid node (Scale/Mirror/boolean/…) or
5888
+ * one whose parameters can't be evaluated in `env`.
5889
+ *
5890
+ * Composition is outer∘inner: peeling outward, each node's local transform acts
5891
+ * on points the inner nodes already placed, so it post-multiplies the
5892
+ * accumulator. A pure-translation chain keeps the identity rotation, so the mesh
5893
+ * move below degenerates to the exact vertex-shift fast path (normals untouched).
5849
5894
  */
5850
- function peelTranslate(node, env) {
5895
+ function peelRigid(node, env) {
5851
5896
  let inner = node;
5852
- let ox = 0;
5853
- let oy = 0;
5854
- let oz = 0;
5855
- while (inner.kind === "Translate") {
5856
- const v = evalVec3(inner.vector, env, "evaluateMesh.peelTranslate");
5897
+ let rot = IDENTITY_QUAT;
5898
+ let trans = [
5899
+ 0,
5900
+ 0,
5901
+ 0
5902
+ ];
5903
+ for (;;) if (inner.kind === "Translate") {
5904
+ const v = evalVec3(inner.vector, env, "evaluateMesh.peelRigid");
5857
5905
  if (!v.ok) break;
5858
- ox += v.value[0];
5859
- oy += v.value[1];
5860
- oz += v.value[2];
5906
+ const rv = quatRotate(rot, v.value);
5907
+ trans = [
5908
+ trans[0] + rv[0],
5909
+ trans[1] + rv[1],
5910
+ trans[2] + rv[2]
5911
+ ];
5861
5912
  inner = inner.target;
5862
- }
5913
+ } else if (inner.kind === "Rotate") {
5914
+ const p = evalRotateParams(inner, env);
5915
+ if (!p) break;
5916
+ const r = quatFromAxisAngle(p.axis, p.angle * Math.PI / 180);
5917
+ const newRot = quatMultiply(rot, r);
5918
+ const rotC = quatRotate(rot, p.center);
5919
+ const newRotC = quatRotate(newRot, p.center);
5920
+ trans = [
5921
+ trans[0] + rotC[0] - newRotC[0],
5922
+ trans[1] + rotC[1] - newRotC[1],
5923
+ trans[2] + rotC[2] - newRotC[2]
5924
+ ];
5925
+ rot = newRot;
5926
+ inner = inner.target;
5927
+ } else break;
5863
5928
  return {
5864
5929
  inner,
5865
- offset: [
5866
- ox,
5867
- oy,
5868
- oz
5869
- ]
5930
+ rot,
5931
+ trans
5870
5932
  };
5871
5933
  }
5872
- /** Shift every vertex of a mesh by `offset`; normals, UVs and triangles are unchanged. */
5873
- function translateMesh(m, offset) {
5874
- const [dx, dy, dz] = offset;
5875
- if (dx === 0 && dy === 0 && dz === 0) return m;
5876
- const vertices = new Float32Array(m.vertices.length);
5877
- for (let i = 0; i < m.vertices.length; i += 3) {
5878
- vertices[i] = (m.vertices[i] ?? 0) + dx;
5879
- vertices[i + 1] = (m.vertices[i + 1] ?? 0) + dy;
5880
- vertices[i + 2] = (m.vertices[i + 2] ?? 0) + dz;
5934
+ function isIdentityQuat(q) {
5935
+ return q[0] === 1 && q[1] === 0 && q[2] === 0 && q[3] === 0;
5936
+ }
5937
+ /**
5938
+ * Write `src` (flat xyz) rigidly transformed by quaternion (qw,qx,qy,qz) then
5939
+ * translation (tx,ty,tz) into `dst`. The quaternion-rotate math is inlined with
5940
+ * scalar locals no per-vertex array allocation — because this runs once per
5941
+ * mesh vertex/normal and helper-allocated vector math regressed the gridfinity
5942
+ * benchmark 17% (see `utils/vec3.ts`). Pass zero translation for normals.
5943
+ */
5944
+ function rotateXyzBuffer(dst, src, qw, qx, qy, qz, tx, ty, tz) {
5945
+ for (let i = 0; i < src.length; i += 3) {
5946
+ const vx = src[i] ?? 0;
5947
+ const vy = src[i + 1] ?? 0;
5948
+ const vz = src[i + 2] ?? 0;
5949
+ const cx = 2 * (qy * vz - qz * vy);
5950
+ const cy = 2 * (qz * vx - qx * vz);
5951
+ const cz = 2 * (qx * vy - qy * vx);
5952
+ dst[i] = vx + qw * cx + (qy * cz - qz * cy) + tx;
5953
+ dst[i + 1] = vy + qw * cy + (qz * cx - qx * cz) + ty;
5954
+ dst[i + 2] = vz + qw * cz + (qx * cy - qy * cx) + tz;
5955
+ }
5956
+ }
5957
+ /**
5958
+ * Apply a rigid motion to a mesh: vertices get the rotation then translation,
5959
+ * normals get the rotation only (a unit rotation preserves length, so no
5960
+ * renormalization). UVs and triangles are motion-invariant. A pure translation
5961
+ * (identity rotation) keeps the source normals array by reference and only
5962
+ * shifts vertices — the exact previous translation-only fast path.
5963
+ */
5964
+ function transformMeshRigid(m, rot, trans) {
5965
+ const [tx, ty, tz] = trans;
5966
+ const pureTranslation = isIdentityQuat(rot);
5967
+ if (pureTranslation && tx === 0 && ty === 0 && tz === 0) return m;
5968
+ const src = m.vertices;
5969
+ const vertices = new Float32Array(src.length);
5970
+ if (pureTranslation) {
5971
+ for (let i = 0; i < src.length; i += 3) {
5972
+ vertices[i] = (src[i] ?? 0) + tx;
5973
+ vertices[i + 1] = (src[i + 1] ?? 0) + ty;
5974
+ vertices[i + 2] = (src[i + 2] ?? 0) + tz;
5975
+ }
5976
+ return {
5977
+ ...m,
5978
+ vertices
5979
+ };
5881
5980
  }
5981
+ const [qw, qx, qy, qz] = rot;
5982
+ rotateXyzBuffer(vertices, src, qw, qx, qy, qz, tx, ty, tz);
5983
+ const sn = m.normals;
5984
+ const normals = new Float32Array(sn.length);
5985
+ rotateXyzBuffer(normals, sn, qw, qx, qy, qz, 0, 0, 0);
5882
5986
  return {
5883
5987
  ...m,
5884
- vertices
5988
+ vertices,
5989
+ normals
5885
5990
  };
5886
5991
  }
5887
5992
  /**
@@ -5889,8 +5994,8 @@ function translateMesh(m, offset) {
5889
5994
  * moved faces location-dependent hashes, so the inner mesh's `faceId`s describe
5890
5995
  * the *unplaced* shape; remap them to the placed faces (1:1 by iteration order,
5891
5996
  * since `locate` shares the source TShape) so face picking and metadata lookup
5892
- * resolve against the placed mesh. Origins are translation-invariant, so only
5893
- * `faceId` changes.
5997
+ * resolve against the placed mesh. Origins are boolean-lineage tags, invariant
5998
+ * under any rigid motion, so only `faceId` changes.
5894
5999
  *
5895
6000
  * Takes pre-captured hash arrays (not shapes): a bounded shape cache can evict
5896
6001
  * and dispose one shape while the other is being evaluated, so the caller reads
@@ -5986,7 +6091,7 @@ var Evaluator = class {
5986
6091
  }
5987
6092
  return ok(cached);
5988
6093
  }
5989
- const { inner, offset } = peelTranslate(node, env);
6094
+ const { inner, rot, trans } = peelRigid(node, env);
5990
6095
  if (inner !== node) {
5991
6096
  const innerMesh = this.evaluateMesh(inner, env, meshOpts);
5992
6097
  if (!innerMesh.ok) return innerMesh;
@@ -5996,7 +6101,7 @@ var Evaluator = class {
5996
6101
  const placedShape = this.evaluate(node, env);
5997
6102
  if (!placedShape.ok) return placedShape;
5998
6103
  const placedHashes = getFaces(placedShape.value).map(getHashCode);
5999
- const moved = translateMesh(innerMesh.value, offset);
6104
+ const moved = transformMeshRigid(innerMesh.value, rot, trans);
6000
6105
  const faceGroups = relocateFaceGroups(moved.faceGroups, innerHashes, placedHashes);
6001
6106
  const placedSet = new Set(placedHashes);
6002
6107
  if (faceGroups.every((g) => placedSet.has(g.faceId))) {
@@ -6880,4 +6985,4 @@ var csg_exports = /* @__PURE__ */ __exportAll({
6880
6985
  withEvaluator: () => withEvaluator
6881
6986
  });
6882
6987
  //#endregion
6883
- 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, createDerivedFaceRef, createDistanceQuery, createEdge, createEdgeRef, createFace, createHandle, createHistory, createKernelHandle, createMeshCache, createNamedPlane, createOperationRegistry, createPlane, createRef, createRegistry, createShell, createSolid, createTaskQueue, createVertex, createVertexRef, createWire, createWorkerClient, createWorkerHandler, createWorkerPool, csg_exports as csg, currentQuality, curve2dBoundingBox, curve2dDistanceFrom, curve2dFirstPoint, curve2dIsOnCurve, curve2dLastPoint, curve2dParameter, curve2dSplitAt, curve2dTangentAt, curveAxis, curveEndPoint, curveIsClosed, curveIsPeriodic, curveLength, curvePeriod, curvePointAt, curveStartPoint, curveTangentAt, cut, cut2D, cutAll, cutAllBisect, cutBlueprints, cutWithEvolution, cylinder, cylindricalJoint, 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, exportURDF, extrude, extrudeAll, face, faceAxis, faceCenter, faceFinder, faceGeomType, faceOrientation, facesOfEdge, facesOfVertex, fieldBoolean, fieldContour, fieldOffset, fieldReinit, fieldShell, fill, filledFace, fillet, filletWithEvolution, findFacesByTag, findNode, findStep, fixSelfIntersection, fixShape, flatMap, flatten, flipFaceOrientation, flipOrientation, fontMetrics, forwardKinematics, 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, gridPattern, guidedSweep, heal, healFace, healSolid, healWire, helix, hull, importDXF, importGLB, importIGES, importOBJ, importSTEP, importSTL, importSVG, importSVGPathD, importThreeMF, importURDF, init, initFromManifold, initFromOC, initVoxel, innerWires, instance, instanceCount, instanceGrid, instancedMesh, interpolateCurve, intersect, intersect2D, intersectBlueprints, intersectWithEvolution, invalidateShapeCache, inverseKinematics, ioNs_exports as io, ioError, is2D, is3D, isBatchRequest, isChamferRadius, isClosedWire, isCompSolid, isCompound, isDerivedFaceRef, isDisposeRequest, isEdge, isEdgeRef, isEmpty, isEqualShape, isErr, isErrorResponse, isFace, isFaceRef, isFilletRadius, isInitRequest, isInside2D, isInstanced, isLineageRef, isLive, isManifoldShell, isNumber, isOk, isOperationRequest, isOrientedFace, isPlanarFace, isPlanarWire, isProjectionPlane, isEmpty$1 as isQueueEmpty, isSameShape, isShape1D, isShape3D, isShell, isSolid, isSuccessResponse, isValid, isValidSolid, isVertex, isVertexRef, isWire, iterCompSolids, iterEdges, iterFaces, iterShells, iterSolids, iterTopo, iterVertices, iterWires, jointTrajectory, jointTransform, jointsFromDH, kernelCall, kernelCallRaw, kernelCallScoped, kernelError, latticeInfill, latticeInfillShape, line, linearPattern, loadFont, loft, loftAll, makeBaseBox, makeExternalGear, makeInternalGear, makePlane, makePlanetaryGear, makeProjectedEdges, manifoldShell, map, mapBoth, mapErr, match, materialize, measureArea, measureCurvatureAt, measureCurvatureAtMid, measureDistance, measureDistanceProps, measureLength, measureLinearProps, measureSurfaceProps, measureVolume, measureVolumeProps, measurement_exports as measurement, mechanismDOF, mesh, meshEdges, meshLODs, meshLODsProgressive, 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, planarJoint, 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, resolveDerivedFaceRef, resolveDirection, resolveEdgeRef, resolveLineageRef, resolvePlane, resolveRef, resolveRefIn, resolveRefParams, resolveVertexRef, 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, setJointValues, 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, sphericalJoint, split, stepCount, stepsFrom, stretch2D, subFace, supportExtrude, supportsConstraintSketch, supportsProjection, surfaceFromGrid, surfaceFromImage, sweep$1 as sweep, tagFaces, tangentArc, tap, tapErr, textBlueprints, textMetrics, thicken, thread, threePointArc, toBREP, toBufferGeometryData, toGroupedBufferGeometryData, toKernelVec, toLODGeometryData, toLODGeometryLevels, 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, verticesOfFace, voxelBoolean, voxelBooleanField, voxelBooleanFieldShapes, voxelBooleanShapes, voxelField, voxelFieldFromShape, walkAssembly, windingNumbers, wire, wireFinder, wireLoop, wiresOfFace, withKernel, withKernelDir, withKernelPnt, withKernelVec, withQuality, withScope, withScopeResult, withScopeResultAsync, withTier, zip as zipResults };
6988
+ 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, createDerivedFaceRef, createDistanceQuery, createEdge, createEdgeRef, createFace, createHandle, createHistory, createKernelHandle, createMeshCache, createNamedPlane, createOperationRegistry, createPlane, createRef, createRegistry, createShell, createSolid, createTaskQueue, createVertex, createVertexRef, createWire, createWorkerClient, createWorkerHandler, createWorkerPool, csg_exports as csg, currentQuality, curve2dBoundingBox, curve2dDistanceFrom, curve2dFirstPoint, curve2dIsOnCurve, curve2dLastPoint, curve2dParameter, curve2dSplitAt, curve2dTangentAt, curveAxis, curveEndPoint, curveIsClosed, curveIsPeriodic, curveLength, curvePeriod, curvePointAt, curveStartPoint, curveTangentAt, cut, cut2D, cutAll, cutAllBisect, cutBlueprints, cutWithEvolution, cylinder, cylindricalJoint, 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, exportURDF, extrude, extrudeAll, face, faceAxis, faceCenter, faceFinder, faceGeomType, faceOrientation, facesOfEdge, facesOfVertex, fieldBoolean, fieldContour, fieldOffset, fieldReinit, fieldShell, fill, filledFace, fillet, filletWithEvolution, findFacesByTag, findNode, findStep, fixSelfIntersection, fixShape, flatMap, flatten, flipFaceOrientation, flipOrientation, fontMetrics, forwardKinematics, 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, gridPattern, guidedSweep, heal, healFace, healSolid, healWire, helix, hull, importDXF, importGLB, importIGES, importOBJ, importSTEP, importSTL, importSVG, importSVGPathD, importThreeMF, importURDF, init, initFromManifold, initFromOC, initVoxel, innerWires, instance, instanceCount, instanceGrid, instancedMesh, interpolateCurve, intersect, intersect2D, intersectBlueprints, intersectWithEvolution, invalidateShapeCache, inverseKinematics, ioNs_exports as io, ioError, is2D, is3D, isBatchRequest, isChamferRadius, isClosedWire, isCompSolid, isCompound, isDerivedFaceRef, isDisposeRequest, isEdge, isEdgeRef, isEmpty, isEqualShape, isErr, isErrorResponse, isFace, isFaceRef, isFilletRadius, isInitRequest, isInside2D, isInstanced, isLineageRef, isLive, isManifoldShell, isNumber, isOk, isOperationRequest, isOrientedFace, isPlanarFace, isPlanarWire, isProjectionPlane, isEmpty$1 as isQueueEmpty, isSameShape, isShape1D, isShape3D, isShell, isSolid, isSuccessResponse, isValid, isValidSolid, isVertex, isVertexRef, isWire, iterCompSolids, iterEdges, iterFaces, iterShells, iterSolids, iterTopo, iterVertices, iterWires, jointTrajectory, jointTransform, jointsFromDH, kernelCall, kernelCallRaw, kernelCallScoped, kernelError, latticeInfill, latticeInfillShape, line, linearPattern, loadFont, locate, loft, loftAll, makeBaseBox, makeExternalGear, makeInternalGear, makePlane, makePlanetaryGear, makeProjectedEdges, manifoldShell, map, mapBoth, mapErr, match, materialize, measureArea, measureCurvatureAt, measureCurvatureAtMid, measureDistance, measureDistanceProps, measureLength, measureLinearProps, measureSurfaceProps, measureVolume, measureVolumeProps, measurement_exports as measurement, mechanismDOF, mesh, meshEdges, meshLODs, meshLODsProgressive, 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, planarJoint, 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, resolveDerivedFaceRef, resolveDirection, resolveEdgeRef, resolveLineageRef, resolvePlane, resolveRef, resolveRefIn, resolveRefParams, resolveVertexRef, 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, setJointValues, 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, sphericalJoint, split, stepCount, stepsFrom, stretch2D, subFace, supportExtrude, supportsConstraintSketch, supportsProjection, surfaceFromGrid, surfaceFromImage, sweep$1 as sweep, tagFaces, tangentArc, tap, tapErr, textBlueprints, textMetrics, thicken, thread, threePointArc, toBREP, toBufferGeometryData, toGroupedBufferGeometryData, toKernelVec, toLODGeometryData, toLODGeometryLevels, 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, verticesOfFace, 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
1
  import { t as DEG2RAD } from "./constants-ITRzCnCp.js";
2
2
  import { n as getAtOrThrow } from "./arrayAccess-DrUGPADn.js";
3
- import { _ as samePoint, p as distance2d, u as angle2d } from "./helpers-DhJwFrkC.js";
3
+ import { _ as samePoint, p as distance2d, u as angle2d } from "./helpers-BuJ2542Q.js";
4
4
  //#region src/query/cornerFinder.ts
5
5
  var PI_2 = 2 * Math.PI;
6
6
  function positiveHalfAngle(angle) {
@@ -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-BSLPCflF.cjs");
3
+ const require_helpers = require("./helpers-Cy4IH0Dc.cjs");
4
4
  //#region src/query/cornerFinder.ts
5
5
  var PI_2 = 2 * Math.PI;
6
6
  function positiveHalfAngle(angle) {
@@ -10,12 +10,12 @@ import { d as pointOnSurface, l as normalAt, m as uvBounds, r as faceCenter, u a
10
10
  import { h as offsetWire2D, i as curveIsClosed, l as curveStartPoint } from "./curveFns-CcSn4-Rf.js";
11
11
  import { n as getAtOrThrow, r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
12
12
  import { c as makeBSplineApproximation, d as makeCircle, f as makeEllipse, m as makeHelix, r as makeFace, s as assembleWire } from "./surfaceBuilders-rkE-jE90.js";
13
- import { a as Blueprints, c as make2dOffset, i as CompoundBlueprint, l as intersectCurves, n as BaseSketcher2d, o as chamferCurves, s as filletCurves, u as Flatbush } from "./blueprintSketcher-7rtwqUHZ.js";
14
- import { _ as samePoint$1, b as subtract2d, c as PRECISION_OFFSET, l as add2d, y as squareDistance2d } from "./helpers-DhJwFrkC.js";
15
- import { _ as Curve2D, a as edgeToCurve, c as make2dCircle, d as make2dInerpolatedBSplineCurve, f as make2dSegmentCurve, g as approximateAsSvgCompatibleCurve, i as curvesAsEdgesOnPlane, l as make2dEllipse, o as make2dArcFromCenter, t as Blueprint, v as deserializeCurve2D, y as BoundingBox2d } from "./blueprint-Dw0QqImu.js";
16
- import { t as cornerFinder } from "./cornerFinder-DUGeBIvD.js";
17
- import { c as roundedRectangleBlueprint, n as fuse2D, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-y0SSZfe2.js";
18
- import { _ as wrapSketchDataArray, a as Sketch, g as wrapSketchData, i as Sketches, t as textBlueprints } from "./textBlueprints-BnkWAqwS.js";
13
+ import { a as Blueprints, c as make2dOffset, i as CompoundBlueprint, l as intersectCurves, n as BaseSketcher2d, o as chamferCurves, s as filletCurves, u as Flatbush } from "./blueprintSketcher-Cw_Epicg.js";
14
+ import { _ as samePoint$1, b as subtract2d, c as PRECISION_OFFSET, l as add2d, y as squareDistance2d } from "./helpers-BuJ2542Q.js";
15
+ import { _ as Curve2D, a as edgeToCurve, c as make2dCircle, d as make2dInerpolatedBSplineCurve, f as make2dSegmentCurve, g as approximateAsSvgCompatibleCurve, i as curvesAsEdgesOnPlane, l as make2dEllipse, o as make2dArcFromCenter, t as Blueprint, v as deserializeCurve2D, y as BoundingBox2d } from "./blueprint-ccFH0CU4.js";
16
+ import { t as cornerFinder } from "./cornerFinder-Baa3j5Ph.js";
17
+ import { c as roundedRectangleBlueprint, n as fuse2D, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-BiPWJMSB.js";
18
+ import { _ as wrapSketchDataArray, a as Sketch, g as wrapSketchData, i as Sketches, t as textBlueprints } from "./textBlueprints-gMoNCh6B.js";
19
19
  import { i as projectEdges, t as cameraFromPlane } from "./cameraFns-bk9e0F-T.js";
20
20
  //#region src/2d/lib/stitching.ts
21
21
  /**
@@ -1,4 +1,4 @@
1
- const require_textBlueprints = require("./textBlueprints-D5lsZswr.cjs");
1
+ const require_textBlueprints = require("./textBlueprints-BvD0c2S0.cjs");
2
2
  const require_shapeTypes = require("./shapeTypes-BTTwjHy5.cjs");
3
3
  const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
4
4
  const require_errors = require("./errors-CXJtc4I7.cjs");
@@ -11,11 +11,11 @@ const require_faceFns = require("./faceFns-BV0GnTlt.cjs");
11
11
  const require_curveFns = require("./curveFns-DgUJpH4z.cjs");
12
12
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
13
13
  const require_surfaceBuilders = require("./surfaceBuilders-UyyfZy8w.cjs");
14
- const require_blueprintSketcher = require("./blueprintSketcher-RK-cH6ps.cjs");
15
- const require_helpers = require("./helpers-BSLPCflF.cjs");
16
- const require_blueprint = require("./blueprint-BwkD2qeC.cjs");
17
- const require_cornerFinder = require("./cornerFinder-B4q88TRb.cjs");
18
- const require_boolean2D = require("./boolean2D-CZUEOoAh.cjs");
14
+ const require_blueprintSketcher = require("./blueprintSketcher-BY6R2umG.cjs");
15
+ const require_helpers = require("./helpers-Cy4IH0Dc.cjs");
16
+ const require_blueprint = require("./blueprint-Bb6y8xmG.cjs");
17
+ const require_cornerFinder = require("./cornerFinder-DaHVcKSL.cjs");
18
+ const require_boolean2D = require("./boolean2D-mBIMAMP3.cjs");
19
19
  const require_cameraFns = require("./cameraFns-uo1sZbBT.cjs");
20
20
  //#region src/2d/lib/stitching.ts
21
21
  /**
@@ -3,9 +3,9 @@ const require_errors = require("./errors-CXJtc4I7.cjs");
3
3
  const require_topologyQueryFns = require("./topologyQueryFns-CoXVHuN7.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
5
  const require_faceFns = require("./faceFns-BV0GnTlt.cjs");
6
- const require_shapeFns = require("./shapeFns-ybo0INGL.cjs");
6
+ const require_shapeFns = require("./shapeFns-aI4Hr4XV.cjs");
7
7
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
8
- const require_solidBuilders = require("./solidBuilders-DiUv_mD0.cjs");
8
+ const require_solidBuilders = require("./solidBuilders-DSokszEg.cjs");
9
9
  //#region src/topology/threeHelpers.ts
10
10
  /**
11
11
  * Convert a ShapeMesh into BufferGeometry-compatible typed arrays.
@@ -3,9 +3,9 @@ import { A as ok, T as isOk, b as err, d as validationError, i as kernelError, l
3
3
  import { c as getFaces, i as getCachedIsValid, m as invalidateShapeCache, p as getWires, s as getEdges } from "./topologyQueryFns-BeKaWpNm.js";
4
4
  import { n as HASH_CODE_MAX } from "./constants-ITRzCnCp.js";
5
5
  import { v as downcast } from "./faceFns-B86WGqDg.js";
6
- import { g as collectInputFaceHashes, v as propagateAllMetadata } from "./shapeFns-DrZOVwHX.js";
6
+ import { _ as collectInputFaceHashes, y as propagateAllMetadata } from "./shapeFns-DJHbIsRX.js";
7
7
  import { t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
8
- import { f as cut, h as fuseAll, m as fuse, p as cutAll } from "./solidBuilders-C32wXQWG.js";
8
+ import { f as cut, h as fuseAll, m as fuse, p as cutAll } from "./solidBuilders-CjrjwCtG.js";
9
9
  //#region src/topology/threeHelpers.ts
10
10
  /**
11
11
  * Convert a ShapeMesh into BufferGeometry-compatible typed arrays.
@@ -4,7 +4,7 @@ import { c as getFaces, f as getVertices, p as getWires, s as getEdges } from ".
4
4
  import { t as DEG2RAD } from "./constants-ITRzCnCp.js";
5
5
  import { a as vecDot, d as vecNormalize } from "./vecOps-SKPRvPH-.js";
6
6
  import { l as normalAt, s as getSurfaceType } from "./faceFns-B86WGqDg.js";
7
- import { a as isSameShape, n as getHashCode } from "./shapeFns-DrZOVwHX.js";
7
+ import { a as isSameShape, n as getHashCode } from "./shapeFns-DJHbIsRX.js";
8
8
  import { f as getCurveType, i as curveIsClosed, o as curveLength } from "./curveFns-CcSn4-Rf.js";
9
9
  import { n as measureArea } from "./measureFns-a5Vx25or.js";
10
10
  //#region src/utils/vec2d.ts
@@ -4,7 +4,7 @@ const require_topologyQueryFns = require("./topologyQueryFns-CoXVHuN7.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
5
  const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
6
6
  const require_faceFns = require("./faceFns-BV0GnTlt.cjs");
7
- const require_shapeFns = require("./shapeFns-ybo0INGL.cjs");
7
+ const require_shapeFns = require("./shapeFns-aI4Hr4XV.cjs");
8
8
  const require_curveFns = require("./curveFns-DgUJpH4z.cjs");
9
9
  const require_measureFns = require("./measureFns-DblG0Yaz.cjs");
10
10
  //#region src/utils/vec2d.ts
@@ -2,7 +2,7 @@ const require_shapeTypes = require("./shapeTypes-BTTwjHy5.cjs");
2
2
  const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
3
3
  const require_errors = require("./errors-CXJtc4I7.cjs");
4
4
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
5
- const require_blueprint = require("./blueprint-BwkD2qeC.cjs");
5
+ const require_blueprint = require("./blueprint-Bb6y8xmG.cjs");
6
6
  //#region src/io/objExportFns.ts
7
7
  /** Read a vec3 from a typed array at the given vertex index. */
8
8
  function vec3At(arr, i) {
@@ -2,7 +2,7 @@ import { Z as getKernel, t as castShape } from "./shapeTypes-Dpu6mD3m.js";
2
2
  import { n as wasmIndex, t as vec3At$1 } from "./vec3-Dpha8d5k.js";
3
3
  import { A as ok, b as err, r as ioError, t as BrepErrorCode } from "./errors-DNWJsfVU.js";
4
4
  import { n as getAtOrThrow } from "./arrayAccess-DrUGPADn.js";
5
- import { f as make2dSegmentCurve, m as make2dThreePointArc, s as make2dBezierCurve, t as Blueprint } from "./blueprint-Dw0QqImu.js";
5
+ import { f as make2dSegmentCurve, m as make2dThreePointArc, s as make2dBezierCurve, t as Blueprint } from "./blueprint-ccFH0CU4.js";
6
6
  //#region src/io/objExportFns.ts
7
7
  /** Read a vec3 from a typed array at the given vertex index. */
8
8
  function vec3At(arr, i) {
package/dist/index.d.ts CHANGED
@@ -142,7 +142,7 @@ export type { Shapeable, WrappedMarker, FinderFn, FilletRadius, ChamferDistance,
142
142
  export { resolve, resolve3D } from './topology/apiTypes.js';
143
143
  export { box, cylinder, sphere, cone, torus, ellipsoid, line, circle, ellipse, helix, threePointArc, ellipseArc, bsplineApprox, bezier, tangentArc, wire, wireLoop, face, filledFace, subFace, polygon, vertex, compound, solid, offsetFace, sewShells, addHoles, type BoxOptions, type CylinderOptions, type SphereOptions, type ConeOptions, type TorusOptions, type EllipsoidOptions, type CircleOptions, type EllipseOptions, type HelixOptions, type EllipseArcOptions, } from './topology/primitiveFns.js';
144
144
  export { fill } from './topology/surfaceBuilders.js';
145
- export { translate, rotate, mirror, scale, clone, applyMatrix, composeTransforms, transformCopy, type TransformOp, type ComposedTransform, fuse, cut, fuseAll, cutAll, intersect, section, sectionToFace, split, slice, fillet, chamfer, shell, offset, thicken, draft, heal, simplify, mesh, meshEdges, describe, toBREP, fromBREP, isValid, isEmpty, type RotateOptions, type MirrorOptions, type ScaleOptions, } from './topology/api.js';
145
+ export { translate, rotate, mirror, scale, clone, locate, applyMatrix, composeTransforms, transformCopy, type TransformOp, type ComposedTransform, fuse, cut, fuseAll, cutAll, intersect, section, sectionToFace, split, slice, fillet, chamfer, shell, offset, thicken, draft, heal, simplify, mesh, meshEdges, describe, toBREP, fromBREP, isValid, isEmpty, type RotateOptions, type MirrorOptions, type ScaleOptions, } from './topology/api.js';
146
146
  export { extrude, revolve, loft, type RevolveOptions, type LoftOptions as CleanLoftOptions, type SweepOptions as CleanSweepOptions, } from './operations/api.js';
147
147
  export { loftAll, type LoftAllEntry } from './operations/loftFns.js';
148
148
  export { thread, type ThreadOptions } from './operations/threadFns.js';
package/dist/io.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_meshFns = require("./meshFns-1hQSn1p2.cjs");
3
- const require_importFns = require("./importFns-CgMQIi0z.cjs");
2
+ const require_meshFns = require("./meshFns-HyzvCIhb.cjs");
3
+ const require_importFns = require("./importFns-2X1Bh_-e.cjs");
4
4
  exports.blueprintToDXF = require_importFns.blueprintToDXF;
5
5
  exports.exportDXF = require_importFns.exportDXF;
6
6
  exports.exportGlb = require_importFns.exportGlb;
package/dist/io.js CHANGED
@@ -1,3 +1,3 @@
1
- import { n as exportSTEP, r as exportSTL, t as exportIGES } from "./meshFns-DbmidUzH.js";
2
- 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-nR9lEx22.js";
1
+ import { n as exportSTEP, r as exportSTL, t as exportIGES } from "./meshFns-DBsxqJd3.js";
2
+ 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-DU6m8NVC.js";
3
3
  export { blueprintToDXF, exportDXF, exportGlb, exportGltf, exportIGES, exportOBJ, exportSTEP, exportSTEPConfigured, exportSTL, exportThreeMF, importIGES, importSTEP, importSTL, importSVG, importSVGPathD };
@@ -1,7 +1,7 @@
1
1
  import { Z as getKernel, gt as qualityDeflection } from "./shapeTypes-Dpu6mD3m.js";
2
2
  import { A as ok, b as err, r as ioError } from "./errors-DNWJsfVU.js";
3
3
  import { d as getSolids, n as getBounds } from "./topologyQueryFns-BeKaWpNm.js";
4
- import { A as getFaceOrigins } from "./shapeFns-DrZOVwHX.js";
4
+ import { j as getFaceOrigins } from "./shapeFns-DJHbIsRX.js";
5
5
  //#region src/topology/meshCache.ts
6
6
  /**
7
7
  * Build a parameter key for the inner cache map (excludes shape identity).
@@ -1,7 +1,7 @@
1
1
  const require_shapeTypes = require("./shapeTypes-BTTwjHy5.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
3
  const require_topologyQueryFns = require("./topologyQueryFns-CoXVHuN7.cjs");
4
- const require_shapeFns = require("./shapeFns-ybo0INGL.cjs");
4
+ const require_shapeFns = require("./shapeFns-aI4Hr4XV.cjs");
5
5
  //#region src/topology/meshCache.ts
6
6
  /**
7
7
  * Build a parameter key for the inner cache map (excludes shape identity).
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_threadFns = require("./threadFns-KrG_i9_w.cjs");
2
+ const require_threadFns = require("./threadFns-cKaZIY34.cjs");
3
3
  const require_loftFns = require("./loftFns-fpTmrIdd.cjs");
4
4
  exports.addChild = require_threadFns.addChild;
5
5
  exports.addJoint = require_threadFns.addJoint;
@@ -1,3 +1,3 @@
1
- import { A as setJointValue, B as findNode, C as cylindricalJoint, D as planarJoint, E as mechanismDOF, G as gridPattern, H as updateNode, I as addChild, J as createAssembly, K as linearPattern, L as collectShapes, M as sphericalJoint, O as prismaticJoint, R as countNodes, S as addJoint, T as jointTransform, U as walkAssembly, V as removeChild, W as circularPattern, _ as exportURDF, b as inverseKinematics, c as modifyStep, d as replayFrom, f as replayHistory, g as undoLast, h as stepsFrom, i as createRegistry, j as setJointValues, k as revoluteJoint, l as registerOperation, m as stepCount, n as addStep, o as findStep, q as exportAssemblySTEP, r as createHistory, s as getShape, t as thread, u as registerShape, v as importURDF, w as forwardKinematics, x as jointTrajectory, y as jointsFromDH, z as createAssemblyNode } from "./threadFns-Dgr2qyJv.js";
1
+ import { A as setJointValue, B as createAssemblyNode, C as cylindricalJoint, D as planarJoint, E as mechanismDOF, G as circularPattern, H as removeChild, J as exportAssemblySTEP, K as gridPattern, L as addChild, M as sphericalJoint, O as prismaticJoint, R as collectShapes, S as addJoint, T as jointTransform, U as updateNode, V as findNode, W as walkAssembly, Y as createAssembly, _ as exportURDF, b as inverseKinematics, c as modifyStep, d as replayFrom, f as replayHistory, g as undoLast, h as stepsFrom, i as createRegistry, j as setJointValues, k as revoluteJoint, l as registerOperation, m as stepCount, n as addStep, o as findStep, q as linearPattern, r as createHistory, s as getShape, t as thread, u as registerShape, v as importURDF, w as forwardKinematics, x as jointTrajectory, y as jointsFromDH, z as countNodes } from "./threadFns-B9udL9Zs.js";
2
2
  import { d as twistExtrude, l as supportExtrude, o as complexExtrude, u as sweep } from "./loftFns-CmShFQlv.js";
3
3
  export { addChild, addJoint, addStep, circularPattern, collectShapes, complexExtrude, countNodes, createAssembly, createAssemblyNode, createHistory, createRegistry, cylindricalJoint, exportAssemblySTEP, exportURDF, findNode, findStep, forwardKinematics, getShape as getHistoryShape, gridPattern, importURDF, inverseKinematics, jointTrajectory, jointTransform, jointsFromDH, linearPattern, mechanismDOF, modifyStep, planarJoint, prismaticJoint, registerOperation, registerShape, removeChild, replayFrom, replayHistory, revoluteJoint, setJointValue, setJointValues, sphericalJoint, stepCount, stepsFrom, supportExtrude, sweep, thread, twistExtrude, undoLast, updateNode, walkAssembly };
@@ -1,9 +1,9 @@
1
1
  const require_shapeTypes = require("./shapeTypes-BTTwjHy5.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
3
  const require_constants = require("./constants-BOVyEYGH.cjs");
4
- const require_shapeFns = require("./shapeFns-ybo0INGL.cjs");
4
+ const require_shapeFns = require("./shapeFns-aI4Hr4XV.cjs");
5
5
  const require_surfaceBuilders = require("./surfaceBuilders-UyyfZy8w.cjs");
6
- const require_solidBuilders = require("./solidBuilders-DiUv_mD0.cjs");
6
+ const require_solidBuilders = require("./solidBuilders-DSokszEg.cjs");
7
7
  //#region src/topology/primitiveFns.ts
8
8
  /**
9
9
  * Create a box with the given dimensions.
@@ -1,9 +1,9 @@
1
1
  import { Z as getKernel, c as createSolid, x as isClosedWire } from "./shapeTypes-Dpu6mD3m.js";
2
2
  import { A as ok, b as err, d as validationError, v as andThen } from "./errors-DNWJsfVU.js";
3
3
  import { t as DEG2RAD } from "./constants-ITRzCnCp.js";
4
- import { h as translate } from "./shapeFns-DrZOVwHX.js";
4
+ import { g as translate } from "./shapeFns-DJHbIsRX.js";
5
5
  import { _ as makeThreePointArc, a as makeNonPlanarFace, c as makeBSplineApproximation, d as makeCircle, f as makeEllipse, g as makeTangentArc, h as makeLine, i as makeNewFaceWithinFace, m as makeHelix, o as makePolygon, p as makeEllipseArc, r as makeFace, s as assembleWire, t as addHolesInFace, u as makeBezierCurve } from "./surfaceBuilders-rkE-jE90.js";
6
- import { a as makeOffset, c as makeTorus, i as makeEllipsoid, l as makeVertex, n as makeCone, o as makeSolid, r as makeCylinder, s as makeSphere, t as makeCompound, u as weldShellsAndFaces } from "./solidBuilders-C32wXQWG.js";
6
+ import { a as makeOffset, c as makeTorus, i as makeEllipsoid, l as makeVertex, n as makeCone, o as makeSolid, r as makeCylinder, s as makeSphere, t as makeCompound, u as weldShellsAndFaces } from "./solidBuilders-CjrjwCtG.js";
7
7
  //#region src/topology/primitiveFns.ts
8
8
  /**
9
9
  * Create a box with the given dimensions.
package/dist/query.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_helpers = require("./helpers-BSLPCflF.cjs");
3
- const require_cornerFinder = require("./cornerFinder-B4q88TRb.cjs");
2
+ const require_helpers = require("./helpers-Cy4IH0Dc.cjs");
3
+ const require_cornerFinder = require("./cornerFinder-DaHVcKSL.cjs");
4
4
  exports.cornerFinder = require_cornerFinder.cornerFinder;
5
5
  exports.edgeFinder = require_helpers.edgeFinder;
6
6
  exports.faceFinder = require_helpers.faceFinder;
package/dist/query.js CHANGED
@@ -1,3 +1,3 @@
1
- import { n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-DhJwFrkC.js";
2
- import { t as cornerFinder } from "./cornerFinder-DUGeBIvD.js";
1
+ import { n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-BuJ2542Q.js";
2
+ import { t as cornerFinder } from "./cornerFinder-Baa3j5Ph.js";
3
3
  export { cornerFinder, edgeFinder, faceFinder, getSingleFace };
@@ -1,6 +1,6 @@
1
1
  const require_topologyQueryFns = require("./topologyQueryFns-CoXVHuN7.cjs");
2
2
  const require_faceFns = require("./faceFns-BV0GnTlt.cjs");
3
- const require_shapeFns = require("./shapeFns-ybo0INGL.cjs");
3
+ const require_shapeFns = require("./shapeFns-aI4Hr4XV.cjs");
4
4
  const require_measureFns = require("./measureFns-DblG0Yaz.cjs");
5
5
  const require_adjacencyFns = require("./adjacencyFns-d8ZabkvX.cjs");
6
6
  //#region src/topology/shapeRef/scoring.ts
@@ -1,6 +1,6 @@
1
1
  import { S as vertexPosition, c as getFaces } from "./topologyQueryFns-BeKaWpNm.js";
2
2
  import { i as faceGeomType, l as normalAt, r as faceCenter } from "./faceFns-B86WGqDg.js";
3
- import { n as getHashCode } from "./shapeFns-DrZOVwHX.js";
3
+ import { n as getHashCode } from "./shapeFns-DJHbIsRX.js";
4
4
  import { n as measureArea, s as measureLength } from "./measureFns-a5Vx25or.js";
5
5
  import { a as sharedEdges, i as facesOfVertex, o as verticesOfEdge, r as facesOfEdge, s as verticesOfFace, t as adjacentFaces } from "./adjacencyFns-BYnyXXqt.js";
6
6
  //#region src/topology/shapeRef/scoring.ts