brepjs 18.124.1 → 18.124.2

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 (81) hide show
  1. package/dist/2d.cjs +6 -6
  2. package/dist/2d.js +6 -6
  3. package/dist/{adjacencyFns-Dxx7ftVV.cjs → adjacencyFns-CpKlADYt.cjs} +2 -2
  4. package/dist/{adjacencyFns-Syimhi5A.js → adjacencyFns-DECdcer5.js} +2 -2
  5. package/dist/{blueprint-DvJhiSQF.js → blueprint-CaY00-X2.js} +5 -5
  6. package/dist/{blueprint-BxwG1Gza.cjs → blueprint-CpJLcUJV.cjs} +5 -5
  7. package/dist/{blueprintFns-CURJa6gK.cjs → blueprintFns-B5nFaJI0.cjs} +2 -2
  8. package/dist/{blueprintFns-CiOJiPIw.js → blueprintFns-vgwEIgI0.js} +2 -2
  9. package/dist/{blueprintSketcher-COLNJfbg.cjs → blueprintSketcher-4e0yYtCY.cjs} +3 -3
  10. package/dist/{blueprintSketcher-CfgOzgxc.js → blueprintSketcher-BjBjj2cK.js} +3 -3
  11. package/dist/{boolean2D-BQqC_nps.cjs → boolean2D-7heWA1co.cjs} +4 -4
  12. package/dist/{boolean2D-Cdh2qVf6.js → boolean2D-Bk-VrRyQ.js} +4 -4
  13. package/dist/brepjs.cjs +27 -27
  14. package/dist/brepjs.js +27 -27
  15. package/dist/{cameraFns-CFVDwvGj.cjs → cameraFns-CGwrxgqB.cjs} +3 -3
  16. package/dist/{cameraFns-USpwGr6_.js → cameraFns-DKEilV2v.js} +3 -3
  17. package/dist/core.cjs +2 -2
  18. package/dist/core.js +2 -2
  19. package/dist/{cornerFinder-CIiXl5Kq.js → cornerFinder-C4s6pVZ-.js} +1 -1
  20. package/dist/{cornerFinder-DyWf9i1I.cjs → cornerFinder-zEgIFMnk.cjs} +1 -1
  21. package/dist/{curveFns-CSY23hP9.cjs → curveFns-BZZYHVow.cjs} +1 -1
  22. package/dist/{curveFns-F4E56Inv.js → curveFns-RczIU30U.js} +1 -1
  23. package/dist/{drawFns-r8PNRpEn.cjs → drawFns-BcXzWFfn.cjs} +12 -12
  24. package/dist/{drawFns-BiTlyKMy.js → drawFns-BjT3RaeQ.js} +12 -12
  25. package/dist/{faceFns-D9LdZArB.cjs → faceFns-C4xNv2zn.cjs} +2 -2
  26. package/dist/{faceFns-Dy4lA0f_.js → faceFns-fvp_zfuI.js} +2 -2
  27. package/dist/{healingFns-B6tDq40C.js → healingFns-AE5182Ds.js} +4 -4
  28. package/dist/{healingFns-jxoJQApv.cjs → healingFns-SxSiVPQa.cjs} +4 -4
  29. package/dist/{helpers-CeX5zwCS.cjs → helpers-CHYzwQMk.cjs} +6 -6
  30. package/dist/{helpers-ClZ_C5nP.js → helpers-CyLQ07aD.js} +6 -6
  31. package/dist/{importFns-CR3k4ct3.cjs → importFns-90S7P_7P.cjs} +2 -2
  32. package/dist/{importFns-DpbQ02xU.js → importFns-DdXOAX6k.js} +2 -2
  33. package/dist/io.cjs +2 -2
  34. package/dist/io.js +2 -2
  35. package/dist/{loftFns-Bd6Qs7uB.cjs → loftFns-B3mbh5RA.cjs} +1 -1
  36. package/dist/{loftFns-sILTLlrA.js → loftFns-CyY4qfvC.js} +1 -1
  37. package/dist/{measureFns-B9CjOY97.js → measureFns-B1uLQugf.js} +3 -3
  38. package/dist/{measureFns-D3wAgSGr.cjs → measureFns-Cx2XJVVC.cjs} +3 -3
  39. package/dist/measurement.cjs +1 -1
  40. package/dist/measurement.js +1 -1
  41. package/dist/{meshFns-C5Mni6NE.cjs → meshFns-2ZxW-X9I.cjs} +3 -3
  42. package/dist/{meshFns-BWgXP2-7.js → meshFns-DrO3d03M.js} +3 -3
  43. package/dist/operations.cjs +2 -2
  44. package/dist/operations.js +2 -2
  45. package/dist/{originTrackingFns-BVmoGfxj.cjs → originTrackingFns-D3rUK08B.cjs} +2 -2
  46. package/dist/{originTrackingFns-CgXHRXve.js → originTrackingFns-DIAwMSih.js} +2 -2
  47. package/dist/{primitiveFns-CSOkiKA7.js → primitiveFns-CDPqVTcc.js} +4 -4
  48. package/dist/{primitiveFns-BI3xR_wX.cjs → primitiveFns-c7wqS-K2.cjs} +4 -4
  49. package/dist/projection.cjs +1 -1
  50. package/dist/projection.js +1 -1
  51. package/dist/query.cjs +2 -2
  52. package/dist/query.js +2 -2
  53. package/dist/{refResolveFns-D_RnidoD.cjs → refResolveFns-Cm8ZHPl5.cjs} +6 -6
  54. package/dist/{refResolveFns-DxjdVw1p.js → refResolveFns-o3-Gdnjn.js} +6 -6
  55. package/dist/{shapeFns-XPAVA2ZZ.cjs → shapeFns-CJ6mph9b.cjs} +2 -2
  56. package/dist/{shapeFns-lw5Mzj__.js → shapeFns-DEpbxB9Z.js} +2 -2
  57. package/dist/shapeRef.cjs +1 -1
  58. package/dist/shapeRef.js +1 -1
  59. package/dist/{shapeTypes-7_c5mEYb.js → shapeTypes-BHRboc_x.js} +210 -3
  60. package/dist/{shapeTypes-Dm6f4xsN.cjs → shapeTypes-D5Y41q7x.cjs} +210 -3
  61. package/dist/sketching.cjs +3 -3
  62. package/dist/sketching.js +3 -3
  63. package/dist/{solidBuilders-D0dqmSE6.cjs → solidBuilders-CsUkRC69.cjs} +5 -5
  64. package/dist/{solidBuilders-Cyfx4vIB.js → solidBuilders-DQQ0re9T.js} +5 -5
  65. package/dist/{surfaceBuilders-DEMrBvXW.cjs → surfaceBuilders-BXNZydNl.cjs} +3 -3
  66. package/dist/{surfaceBuilders-BCDBd5Ii.js → surfaceBuilders-C8k0K7DR.js} +3 -3
  67. package/dist/text.cjs +2 -2
  68. package/dist/text.js +2 -2
  69. package/dist/{textBlueprints-DnCz3w4s.js → textBlueprints-BAyLXffK.js} +7 -7
  70. package/dist/{textBlueprints-B-7POKfB.cjs → textBlueprints-t8MdWfki.cjs} +7 -7
  71. package/dist/{textMetrics-m_H1URz5.js → textMetrics-CefI-bMN.js} +1 -1
  72. package/dist/{textMetrics-4a8KfRbQ.cjs → textMetrics-DUEI9s5M.cjs} +1 -1
  73. package/dist/{threadFns-CJDOHziO.js → threadFns-Bau5Sqad.js} +7 -7
  74. package/dist/{threadFns-ZrJsQtPC.cjs → threadFns-OVYAleOH.cjs} +7 -7
  75. package/dist/topology.cjs +9 -9
  76. package/dist/topology.js +9 -9
  77. package/dist/{topologyQueryFns-Bihcwoz0.js → topologyQueryFns-QvPyCF-7.js} +1 -1
  78. package/dist/{topologyQueryFns-RjAzu76K.cjs → topologyQueryFns-gah07J7-.cjs} +1 -1
  79. package/dist/{validityTypes-C1GMwI9t.js → validityTypes-DokbYKzd.js} +1 -1
  80. package/dist/{validityTypes-DeiK-KFO.cjs → validityTypes-Dx-04qO0.cjs} +1 -1
  81. package/package.json +3 -3
@@ -1,12 +1,12 @@
1
- const require_shapeTypes = require("./shapeTypes-Dm6f4xsN.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-D5Y41q7x.cjs");
2
2
  const require_errors = require("./errors-RHkKO5bZ.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-RjAzu76K.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-gah07J7-.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
5
  const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
6
- const require_faceFns = require("./faceFns-D9LdZArB.cjs");
7
- const require_shapeFns = require("./shapeFns-XPAVA2ZZ.cjs");
8
- const require_curveFns = require("./curveFns-CSY23hP9.cjs");
9
- const require_measureFns = require("./measureFns-D3wAgSGr.cjs");
6
+ const require_faceFns = require("./faceFns-C4xNv2zn.cjs");
7
+ const require_shapeFns = require("./shapeFns-CJ6mph9b.cjs");
8
+ const require_curveFns = require("./curveFns-BZZYHVow.cjs");
9
+ const require_measureFns = require("./measureFns-Cx2XJVVC.cjs");
10
10
  //#region src/utils/vec2d.ts
11
11
  /** Precision for curve intersection and parameter operations. */
12
12
  var PRECISION_INTERSECTION = 1e-9;
@@ -1,12 +1,12 @@
1
- import { K as getKernel, y as isFace } from "./shapeTypes-7_c5mEYb.js";
1
+ import { K as getKernel, y as isFace } from "./shapeTypes-BHRboc_x.js";
2
2
  import { E as ok, g as err, o as queryError, x as isOk } from "./errors-MHLiNE-C.js";
3
- import { c as getFaces, f as getVertices, p as getWires, s as getEdges } from "./topologyQueryFns-Bihcwoz0.js";
3
+ import { c as getFaces, f as getVertices, p as getWires, s as getEdges } from "./topologyQueryFns-QvPyCF-7.js";
4
4
  import { t as DEG2RAD } from "./constants-ITRzCnCp.js";
5
5
  import { a as vecDot, d as vecNormalize } from "./vecOps-SKPRvPH-.js";
6
- import { l as normalAt, s as getSurfaceType } from "./faceFns-Dy4lA0f_.js";
7
- import { a as isSameShape, n as getHashCode } from "./shapeFns-lw5Mzj__.js";
8
- import { f as getCurveType, i as curveIsClosed, o as curveLength } from "./curveFns-F4E56Inv.js";
9
- import { n as measureArea } from "./measureFns-B9CjOY97.js";
6
+ import { l as normalAt, s as getSurfaceType } from "./faceFns-fvp_zfuI.js";
7
+ import { a as isSameShape, n as getHashCode } from "./shapeFns-DEpbxB9Z.js";
8
+ import { f as getCurveType, i as curveIsClosed, o as curveLength } from "./curveFns-RczIU30U.js";
9
+ import { n as measureArea } from "./measureFns-B1uLQugf.js";
10
10
  //#region src/utils/vec2d.ts
11
11
  /** Precision for curve intersection and parameter operations. */
12
12
  var PRECISION_INTERSECTION = 1e-9;
@@ -1,8 +1,8 @@
1
- const require_shapeTypes = require("./shapeTypes-Dm6f4xsN.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-D5Y41q7x.cjs");
2
2
  const require_bug = require("./bug-O02CsAmt.cjs");
3
3
  const require_errors = require("./errors-RHkKO5bZ.cjs");
4
4
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
5
- const require_blueprint = require("./blueprint-BxwG1Gza.cjs");
5
+ const require_blueprint = require("./blueprint-CpJLcUJV.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) {
@@ -1,8 +1,8 @@
1
- import { K as getKernel, n as castResultShape } from "./shapeTypes-7_c5mEYb.js";
1
+ import { K as getKernel, n as castResultShape } from "./shapeTypes-BHRboc_x.js";
2
2
  import { i as wasmIndex, r as vec3At$1 } from "./bug-BdOHwn_e.js";
3
3
  import { E as ok, g as err, r as ioError, t as BrepErrorCode } from "./errors-MHLiNE-C.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-DvJhiSQF.js";
5
+ import { f as make2dSegmentCurve, m as make2dThreePointArc, s as make2dBezierCurve, t as Blueprint } from "./blueprint-CaY00-X2.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/io.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_meshFns = require("./meshFns-C5Mni6NE.cjs");
3
- const require_importFns = require("./importFns-CR3k4ct3.cjs");
2
+ const require_meshFns = require("./meshFns-2ZxW-X9I.cjs");
3
+ const require_importFns = require("./importFns-90S7P_7P.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-BWgXP2-7.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-DpbQ02xU.js";
1
+ import { n as exportSTEP, r as exportSTL, t as exportIGES } from "./meshFns-DrO3d03M.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-DdXOAX6k.js";
3
3
  export { blueprintToDXF, exportDXF, exportGlb, exportGltf, exportIGES, exportOBJ, exportSTEP, exportSTEPConfigured, exportSTL, exportThreeMF, importIGES, importSTEP, importSTL, importSVG, importSVGPathD };
@@ -1,4 +1,4 @@
1
- const require_shapeTypes = require("./shapeTypes-Dm6f4xsN.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-D5Y41q7x.cjs");
2
2
  const require_errors = require("./errors-RHkKO5bZ.cjs");
3
3
  const require_types = require("./types-KjA8tY4Y.cjs");
4
4
  const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
@@ -1,4 +1,4 @@
1
- import { K as getKernel, T as isWire, W as _usingCtx, h as disposeResultShape, n as castResultShape, x as isShape3D } from "./shapeTypes-7_c5mEYb.js";
1
+ import { K as getKernel, T as isWire, W as _usingCtx, h as disposeResultShape, n as castResultShape, x as isShape3D } from "./shapeTypes-BHRboc_x.js";
2
2
  import { E as ok, b as isErr, d as validationError, g as err, i as kernelError, l as typeCastError, t as BrepErrorCode } from "./errors-MHLiNE-C.js";
3
3
  import { r as toVec3 } from "./types-D24Y27N0.js";
4
4
  import { c as vecLength, t as vecAdd } from "./vecOps-SKPRvPH-.js";
@@ -1,7 +1,7 @@
1
- import { K as getKernel } from "./shapeTypes-7_c5mEYb.js";
1
+ import { K as getKernel } from "./shapeTypes-BHRboc_x.js";
2
2
  import { E as ok, d as validationError, g as err, t as BrepErrorCode } from "./errors-MHLiNE-C.js";
3
- import { T as kernelCallRaw } from "./topologyQueryFns-Bihcwoz0.js";
4
- import { m as uvBounds } from "./faceFns-Dy4lA0f_.js";
3
+ import { T as kernelCallRaw } from "./topologyQueryFns-QvPyCF-7.js";
4
+ import { m as uvBounds } from "./faceFns-fvp_zfuI.js";
5
5
  //#region src/measurement/measureCache.ts
6
6
  var cache = /* @__PURE__ */ new WeakMap();
7
7
  function getCachedMeasurement(shape, key) {
@@ -1,7 +1,7 @@
1
- const require_shapeTypes = require("./shapeTypes-Dm6f4xsN.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-D5Y41q7x.cjs");
2
2
  const require_errors = require("./errors-RHkKO5bZ.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-RjAzu76K.cjs");
4
- const require_faceFns = require("./faceFns-D9LdZArB.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-gah07J7-.cjs");
4
+ const require_faceFns = require("./faceFns-C4xNv2zn.cjs");
5
5
  //#region src/measurement/measureCache.ts
6
6
  var cache = /* @__PURE__ */ new WeakMap();
7
7
  function getCachedMeasurement(shape, key) {
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_measureFns = require("./measureFns-D3wAgSGr.cjs");
2
+ const require_measureFns = require("./measureFns-Cx2XJVVC.cjs");
3
3
  exports.createDistanceQuery = require_measureFns.createDistanceQuery;
4
4
  exports.measureArea = require_measureFns.measureArea;
5
5
  exports.measureDistance = require_measureFns.measureDistance;
@@ -1,2 +1,2 @@
1
- import { a as measureDistance, c as measureLinearProps, d as measureVolumeProps, l as measureSurfaceProps, n as measureArea, o as measureDistanceProps, s as measureLength, t as createDistanceQuery, u as measureVolume } from "./measureFns-B9CjOY97.js";
1
+ import { a as measureDistance, c as measureLinearProps, d as measureVolumeProps, l as measureSurfaceProps, n as measureArea, o as measureDistanceProps, s as measureLength, t as createDistanceQuery, u as measureVolume } from "./measureFns-B1uLQugf.js";
2
2
  export { createDistanceQuery, measureArea, measureDistance, measureDistanceProps, measureLength, measureLinearProps, measureSurfaceProps, measureVolume, measureVolumeProps };
@@ -1,7 +1,7 @@
1
- const require_shapeTypes = require("./shapeTypes-Dm6f4xsN.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-D5Y41q7x.cjs");
2
2
  const require_errors = require("./errors-RHkKO5bZ.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-RjAzu76K.cjs");
4
- const require_originTrackingFns = require("./originTrackingFns-BVmoGfxj.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-gah07J7-.cjs");
4
+ const require_originTrackingFns = require("./originTrackingFns-D3rUK08B.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,7 +1,7 @@
1
- import { K as getKernel, lt as qualityDeflection } from "./shapeTypes-7_c5mEYb.js";
1
+ import { K as getKernel, lt as qualityDeflection } from "./shapeTypes-BHRboc_x.js";
2
2
  import { E as ok, g as err, r as ioError } from "./errors-MHLiNE-C.js";
3
- import { d as getSolids, n as getBounds } from "./topologyQueryFns-Bihcwoz0.js";
4
- import { t as getFaceOrigins } from "./originTrackingFns-CgXHRXve.js";
3
+ import { d as getSolids, n as getBounds } from "./topologyQueryFns-QvPyCF-7.js";
4
+ import { t as getFaceOrigins } from "./originTrackingFns-DIAwMSih.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,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_threadFns = require("./threadFns-ZrJsQtPC.cjs");
3
- const require_loftFns = require("./loftFns-Bd6Qs7uB.cjs");
2
+ const require_threadFns = require("./threadFns-OVYAleOH.cjs");
3
+ const require_loftFns = require("./loftFns-B3mbh5RA.cjs");
4
4
  exports.addChild = require_threadFns.addChild;
5
5
  exports.addJoint = require_threadFns.addJoint;
6
6
  exports.addStep = require_threadFns.addStep;
@@ -1,3 +1,3 @@
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-CJDOHziO.js";
2
- import { c as twistExtrude, o as supportExtrude, r as complexExtrude, s as sweep } from "./loftFns-sILTLlrA.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-Bau5Sqad.js";
2
+ import { c as twistExtrude, o as supportExtrude, r as complexExtrude, s as sweep } from "./loftFns-CyY4qfvC.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,5 +1,5 @@
1
- const require_shapeTypes = require("./shapeTypes-Dm6f4xsN.cjs");
2
- const require_topologyQueryFns = require("./topologyQueryFns-RjAzu76K.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-D5Y41q7x.cjs");
2
+ const require_topologyQueryFns = require("./topologyQueryFns-gah07J7-.cjs");
3
3
  const require_constants = require("./constants-BOVyEYGH.cjs");
4
4
  //#region src/topology/metadata/originTrackingFns.ts
5
5
  /**
@@ -1,5 +1,5 @@
1
- import { K as getKernel } from "./shapeTypes-7_c5mEYb.js";
2
- import { S as subShapeHashes, c as getFaces, l as getOrCreateCache, r as getCacheEntry } from "./topologyQueryFns-Bihcwoz0.js";
1
+ import { K as getKernel } from "./shapeTypes-BHRboc_x.js";
2
+ import { S as subShapeHashes, c as getFaces, l as getOrCreateCache, r as getCacheEntry } from "./topologyQueryFns-QvPyCF-7.js";
3
3
  import { n as HASH_CODE_MAX } from "./constants-ITRzCnCp.js";
4
4
  //#region src/topology/metadata/originTrackingFns.ts
5
5
  /**
@@ -1,9 +1,9 @@
1
- import { K as getKernel, W as _usingCtx, d as createSolid, n as castResultShape } from "./shapeTypes-7_c5mEYb.js";
1
+ import { K as getKernel, W as _usingCtx, d as createSolid, n as castResultShape } from "./shapeTypes-BHRboc_x.js";
2
2
  import { E as ok, d as validationError, g as err, m as andThen, t as BrepErrorCode } from "./errors-MHLiNE-C.js";
3
- import { n as isClosedWire } from "./validityTypes-C1GMwI9t.js";
3
+ import { n as isClosedWire } from "./validityTypes-DokbYKzd.js";
4
4
  import { n as HASH_CODE_MAX, t as DEG2RAD } from "./constants-ITRzCnCp.js";
5
- import { C as propagateAllMetadata, S as hasAnyMetadata, T as propagateMetadataThroughRelocation, 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, w as propagateMetadataByHash, x as collectInputFaceHashes } from "./solidBuilders-Cyfx4vIB.js";
6
- 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-BCDBd5Ii.js";
5
+ import { C as propagateAllMetadata, S as hasAnyMetadata, T as propagateMetadataThroughRelocation, 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, w as propagateMetadataByHash, x as collectInputFaceHashes } from "./solidBuilders-DQQ0re9T.js";
6
+ 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-C8k0K7DR.js";
7
7
  //#region src/topology/transformFns.ts
8
8
  /**
9
9
  * Immutable shape transforms — translate, rotate, scale, mirror, applyMatrix.
@@ -1,9 +1,9 @@
1
- const require_shapeTypes = require("./shapeTypes-Dm6f4xsN.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-D5Y41q7x.cjs");
2
2
  const require_errors = require("./errors-RHkKO5bZ.cjs");
3
- const require_validityTypes = require("./validityTypes-DeiK-KFO.cjs");
3
+ const require_validityTypes = require("./validityTypes-Dx-04qO0.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
- const require_solidBuilders = require("./solidBuilders-D0dqmSE6.cjs");
6
- const require_surfaceBuilders = require("./surfaceBuilders-DEMrBvXW.cjs");
5
+ const require_solidBuilders = require("./solidBuilders-CsUkRC69.cjs");
6
+ const require_surfaceBuilders = require("./surfaceBuilders-BXNZydNl.cjs");
7
7
  //#region src/topology/transformFns.ts
8
8
  /**
9
9
  * Immutable shape transforms — translate, rotate, scale, mirror, applyMatrix.
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_cameraFns = require("./cameraFns-CFVDwvGj.cjs");
2
+ const require_cameraFns = require("./cameraFns-CGwrxgqB.cjs");
3
3
  exports.PROJECTION_PLANES = require_cameraFns.PROJECTION_PLANES;
4
4
  exports.cameraFromPlane = require_cameraFns.cameraFromPlane;
5
5
  exports.cameraLookAt = require_cameraFns.cameraLookAt;
@@ -1,2 +1,2 @@
1
- import { a as makeProjectedEdges, i as projectEdges, n as cameraLookAt, o as PROJECTION_PLANES, r as createCamera, s as isProjectionPlane, t as cameraFromPlane } from "./cameraFns-USpwGr6_.js";
1
+ import { a as makeProjectedEdges, i as projectEdges, n as cameraLookAt, o as PROJECTION_PLANES, r as createCamera, s as isProjectionPlane, t as cameraFromPlane } from "./cameraFns-DKEilV2v.js";
2
2
  export { PROJECTION_PLANES, cameraFromPlane, cameraLookAt, createCamera, isProjectionPlane, makeProjectedEdges, projectEdges };
package/dist/query.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_helpers = require("./helpers-CeX5zwCS.cjs");
3
- const require_cornerFinder = require("./cornerFinder-DyWf9i1I.cjs");
2
+ const require_helpers = require("./helpers-CHYzwQMk.cjs");
3
+ const require_cornerFinder = require("./cornerFinder-zEgIFMnk.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-ClZ_C5nP.js";
2
- import { t as cornerFinder } from "./cornerFinder-CIiXl5Kq.js";
1
+ import { n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-CyLQ07aD.js";
2
+ import { t as cornerFinder } from "./cornerFinder-C4s6pVZ-.js";
3
3
  export { cornerFinder, edgeFinder, faceFinder, getSingleFace };
@@ -1,9 +1,9 @@
1
- const require_shapeTypes = require("./shapeTypes-Dm6f4xsN.cjs");
2
- const require_topologyQueryFns = require("./topologyQueryFns-RjAzu76K.cjs");
3
- const require_faceFns = require("./faceFns-D9LdZArB.cjs");
4
- const require_shapeFns = require("./shapeFns-XPAVA2ZZ.cjs");
5
- const require_measureFns = require("./measureFns-D3wAgSGr.cjs");
6
- const require_adjacencyFns = require("./adjacencyFns-Dxx7ftVV.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-D5Y41q7x.cjs");
2
+ const require_topologyQueryFns = require("./topologyQueryFns-gah07J7-.cjs");
3
+ const require_faceFns = require("./faceFns-C4xNv2zn.cjs");
4
+ const require_shapeFns = require("./shapeFns-CJ6mph9b.cjs");
5
+ const require_measureFns = require("./measureFns-Cx2XJVVC.cjs");
6
+ const require_adjacencyFns = require("./adjacencyFns-CpKlADYt.cjs");
7
7
  //#region src/topology/shapeRef/scoring.ts
8
8
  /**
9
9
  * Default face scorer combining surface type, normal alignment, centroid proximity,
@@ -1,9 +1,9 @@
1
- import { K as getKernel, g as disposeTransientSubShape, o as castShapeWithKnownType } from "./shapeTypes-7_c5mEYb.js";
2
- import { C as vertexPosition, c as getFaces } from "./topologyQueryFns-Bihcwoz0.js";
3
- import { i as faceGeomType, l as normalAt, r as faceCenter } from "./faceFns-Dy4lA0f_.js";
4
- import { n as getHashCode } from "./shapeFns-lw5Mzj__.js";
5
- import { n as measureArea, s as measureLength } from "./measureFns-B9CjOY97.js";
6
- import { a as facesOfVertex, c as verticesOfFace, i as facesOfEdge, o as sharedEdges, s as verticesOfEdge, t as adjacentFaceHashes } from "./adjacencyFns-Syimhi5A.js";
1
+ import { K as getKernel, g as disposeTransientSubShape, o as castShapeWithKnownType } from "./shapeTypes-BHRboc_x.js";
2
+ import { C as vertexPosition, c as getFaces } from "./topologyQueryFns-QvPyCF-7.js";
3
+ import { i as faceGeomType, l as normalAt, r as faceCenter } from "./faceFns-fvp_zfuI.js";
4
+ import { n as getHashCode } from "./shapeFns-DEpbxB9Z.js";
5
+ import { n as measureArea, s as measureLength } from "./measureFns-B1uLQugf.js";
6
+ import { a as facesOfVertex, c as verticesOfFace, i as facesOfEdge, o as sharedEdges, s as verticesOfEdge, t as adjacentFaceHashes } from "./adjacencyFns-DECdcer5.js";
7
7
  //#region src/topology/shapeRef/scoring.ts
8
8
  /**
9
9
  * Default face scorer combining surface type, normal alignment, centroid proximity,
@@ -1,6 +1,6 @@
1
- const require_shapeTypes = require("./shapeTypes-Dm6f4xsN.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-D5Y41q7x.cjs");
2
2
  const require_errors = require("./errors-RHkKO5bZ.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-RjAzu76K.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-gah07J7-.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
5
  //#region src/topology/shapeFns.ts
6
6
  /**
@@ -1,6 +1,6 @@
1
- import { K as getKernel } from "./shapeTypes-7_c5mEYb.js";
1
+ import { K as getKernel } from "./shapeTypes-BHRboc_x.js";
2
2
  import { t as BrepErrorCode } from "./errors-MHLiNE-C.js";
3
- import { T as kernelCallRaw, w as kernelCall } from "./topologyQueryFns-Bihcwoz0.js";
3
+ import { T as kernelCallRaw, w as kernelCall } from "./topologyQueryFns-QvPyCF-7.js";
4
4
  import { n as HASH_CODE_MAX } from "./constants-ITRzCnCp.js";
5
5
  //#region src/topology/shapeFns.ts
6
6
  /**
package/dist/shapeRef.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_refResolveFns = require("./refResolveFns-D_RnidoD.cjs");
2
+ const require_refResolveFns = require("./refResolveFns-Cm8ZHPl5.cjs");
3
3
  exports.assignRoles = require_refResolveFns.assignRoles;
4
4
  exports.captureHint = require_refResolveFns.captureHint;
5
5
  exports.createDerivedFaceRef = require_refResolveFns.createDerivedFaceRef;
package/dist/shapeRef.js CHANGED
@@ -1,2 +1,2 @@
1
- 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-DxjdVw1p.js";
1
+ 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-o3-Gdnjn.js";
2
2
  export { assignRoles, captureHint, createDerivedFaceRef, createEdgeRef, createRef, createVertexRef, defaultScorer, isDerivedFaceRef, isEdgeRef, isFaceRef, isLineageRef, isVertexRef, resolveDerivedFaceRef, resolveEdgeRef, resolveLineageRef, resolveRef, resolveRefIn, resolveRefParams, resolveVertexRef, updateRoles };
@@ -6689,8 +6689,6 @@ function fuseAll(bk, shapes, options) {
6689
6689
  }
6690
6690
  function cutAll(bk, shape, tools, options) {
6691
6691
  if (tools.length === 0) return shape;
6692
- if (tools.length === 1) return cut(bk, shape, tools[0], options);
6693
- const baseId = unwrapSolidOrThrow(shape, "cutAll");
6694
6692
  const toolIds = [];
6695
6693
  for (const tool of tools) {
6696
6694
  const h = tool;
@@ -6698,7 +6696,24 @@ function cutAll(bk, shape, tools, options) {
6698
6696
  else toolIds.push(unwrapSolidOrThrow(tool, "cutAll"));
6699
6697
  }
6700
6698
  if (toolIds.length === 0) return shape;
6701
- return solidHandle(bk.compoundCut(baseId, new Uint32Array(toolIds)));
6699
+ const baseHandle = shape;
6700
+ if (isBrepkitHandle(shape) && baseHandle.type === "compound") {
6701
+ const survivors = [];
6702
+ for (const childId of toArray(bk.getCompoundSolids(baseHandle.id))) try {
6703
+ survivors.push(bk.compoundCut(childId, toolIds));
6704
+ } catch (e) {
6705
+ if (!isEmptyBooleanError(e)) throw e;
6706
+ }
6707
+ return compoundHandle(bk.makeCompound(survivors));
6708
+ }
6709
+ if (tools.length === 1) return cut(bk, shape, tools[0], options);
6710
+ const baseId = unwrapSolidOrThrow(shape, "cutAll");
6711
+ try {
6712
+ return solidHandle(bk.compoundCut(baseId, new Uint32Array(toolIds)));
6713
+ } catch (e) {
6714
+ if (isEmptyBooleanError(e)) return emptyCompound(bk);
6715
+ throw e;
6716
+ }
6702
6717
  }
6703
6718
  function split(bk, shape, tools) {
6704
6719
  if (tools.length === 0) throw new Error("brepkit: split requires at least one tool");
@@ -10474,7 +10489,181 @@ function affineMatrix(linear, translation) {
10474
10489
  m[14] = translation[2];
10475
10490
  return m;
10476
10491
  }
10492
+ /**
10493
+ * Profile shapes — edges, wires and faces — have no Manifold counterpart, so
10494
+ * they carry a placeholder value and live purely as op-graph nodes holding
10495
+ * their points. Calling Manifold's solid transform on one throws
10496
+ * `solid.transform is not a function`.
10497
+ *
10498
+ * Transform them by baking the matrix into the recorded points and emitting a
10499
+ * node of the same kind. `ringOrPts` reads points off the node and does not
10500
+ * walk inputs, so a transform-shaped node would read as an empty profile;
10501
+ * replay rebuilds profile nodes from those same points, so a baked transform
10502
+ * applies exactly once.
10503
+ */
10504
+ var PROFILE_POINT_KEYS = [
10505
+ "pts",
10506
+ "ring",
10507
+ "outline"
10508
+ ];
10509
+ function isVec3(v) {
10510
+ return Array.isArray(v) && v.length === 3 && v.every((n) => typeof n === "number");
10511
+ }
10512
+ function applyMat4(m, v) {
10513
+ const g = (i) => m[i] ?? 0;
10514
+ return [
10515
+ g(0) * v[0] + g(4) * v[1] + g(8) * v[2] + g(12),
10516
+ g(1) * v[0] + g(5) * v[1] + g(9) * v[2] + g(13),
10517
+ g(2) * v[0] + g(6) * v[1] + g(10) * v[2] + g(14)
10518
+ ];
10519
+ }
10520
+ function numOf(v, fallback = 0) {
10521
+ return typeof v === "number" ? v : fallback;
10522
+ }
10523
+ function transformDir(matrix, v) {
10524
+ const o = applyMat4(matrix, [
10525
+ 0,
10526
+ 0,
10527
+ 0
10528
+ ]);
10529
+ const p = applyMat4(matrix, v);
10530
+ return [
10531
+ p[0] - o[0],
10532
+ p[1] - o[1],
10533
+ p[2] - o[2]
10534
+ ];
10535
+ }
10536
+ function unit3(v) {
10537
+ const n = Math.hypot(v[0], v[1], v[2]);
10538
+ return n < 1e-12 ? v : [
10539
+ v[0] / n,
10540
+ v[1] / n,
10541
+ v[2] / n
10542
+ ];
10543
+ }
10544
+ function similarityScale(m) {
10545
+ const g = (i) => m[i] ?? 0;
10546
+ const cx = [
10547
+ g(0),
10548
+ g(1),
10549
+ g(2)
10550
+ ];
10551
+ const cy = [
10552
+ g(4),
10553
+ g(5),
10554
+ g(6)
10555
+ ];
10556
+ const cz = [
10557
+ g(8),
10558
+ g(9),
10559
+ g(10)
10560
+ ];
10561
+ const len = (v) => Math.hypot(v[0], v[1], v[2]);
10562
+ const dot = (a, b) => a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
10563
+ const nx = len(cx);
10564
+ const ny = len(cy);
10565
+ const nz = len(cz);
10566
+ if (nx < 1e-12 || ny < 1e-12 || nz < 1e-12) return void 0;
10567
+ const tol = 1e-9 * nx;
10568
+ if (Math.abs(nx - ny) > tol || Math.abs(nx - nz) > tol) return void 0;
10569
+ if (Math.abs(dot(cx, cy)) > tol * ny) return void 0;
10570
+ if (Math.abs(dot(cx, cz)) > tol * nz) return void 0;
10571
+ if (Math.abs(dot(cy, cz)) > tol * nz) return void 0;
10572
+ return nx;
10573
+ }
10574
+ function transformCurveDesc(desc, matrix) {
10575
+ const kind = desc["k"];
10576
+ if (kind === "line") {
10577
+ const p1 = desc["p1"];
10578
+ const p2 = desc["p2"];
10579
+ if (!isVec3(p1) || !isVec3(p2)) return void 0;
10580
+ return {
10581
+ ...desc,
10582
+ p1: applyMat4(matrix, p1),
10583
+ p2: applyMat4(matrix, p2)
10584
+ };
10585
+ }
10586
+ if (kind === "bezier") {
10587
+ const pts = desc["points"];
10588
+ if (!Array.isArray(pts)) return void 0;
10589
+ return {
10590
+ ...desc,
10591
+ points: pts.map((p) => isVec3(p) ? applyMat4(matrix, p) : p)
10592
+ };
10593
+ }
10594
+ const s = similarityScale(matrix);
10595
+ if (s === void 0) return void 0;
10596
+ if (kind === "conic") {
10597
+ const c = desc["center"];
10598
+ const x = desc["x"];
10599
+ const y = desc["y"];
10600
+ if (!isVec3(c) || !isVec3(x) || !isVec3(y)) return void 0;
10601
+ return {
10602
+ ...desc,
10603
+ center: applyMat4(matrix, c),
10604
+ x: unit3(transformDir(matrix, x)),
10605
+ y: unit3(transformDir(matrix, y)),
10606
+ rx: numOf(desc["rx"]) * s,
10607
+ ry: numOf(desc["ry"]) * s
10608
+ };
10609
+ }
10610
+ if (kind === "helix") {
10611
+ const c = desc["center"];
10612
+ const ax = desc["axis"];
10613
+ const x = desc["x"];
10614
+ const y = desc["y"];
10615
+ if (!isVec3(c) || !isVec3(ax) || !isVec3(x) || !isVec3(y)) return void 0;
10616
+ return {
10617
+ ...desc,
10618
+ center: applyMat4(matrix, c),
10619
+ axis: unit3(transformDir(matrix, ax)),
10620
+ x: unit3(transformDir(matrix, x)),
10621
+ y: unit3(transformDir(matrix, y)),
10622
+ radius: numOf(desc["radius"]) * s,
10623
+ pitch: numOf(desc["pitch"]) * s
10624
+ };
10625
+ }
10626
+ }
10627
+ function transformProfileNode(node, matrix, input) {
10628
+ const src = node.params ?? {};
10629
+ const params = { ...src };
10630
+ for (const k of PROFILE_POINT_KEYS) {
10631
+ const pts = src[k];
10632
+ if (!Array.isArray(pts)) continue;
10633
+ params[k] = pts.map((v) => isVec3(v) ? applyMat4(matrix, v) : v);
10634
+ }
10635
+ for (const k of ["origin"]) {
10636
+ const v = src[k];
10637
+ if (isVec3(v)) params[k] = applyMat4(matrix, v);
10638
+ }
10639
+ for (const k of ["xAxis", "yAxis"]) {
10640
+ const v = src[k];
10641
+ if (!isVec3(v)) continue;
10642
+ const a = applyMat4(matrix, [
10643
+ 0,
10644
+ 0,
10645
+ 0
10646
+ ]);
10647
+ const b = applyMat4(matrix, v);
10648
+ params[k] = [
10649
+ b[0] - a[0],
10650
+ b[1] - a[1],
10651
+ b[2] - a[2]
10652
+ ];
10653
+ }
10654
+ const curve = src["curve"];
10655
+ if (curve !== null && typeof curve === "object") {
10656
+ const moved = transformCurveDesc(curve, matrix);
10657
+ if (moved === void 0) delete params["curve"];
10658
+ else params["curve"] = moved;
10659
+ }
10660
+ return wrap({
10661
+ delete: () => {},
10662
+ isEmpty: () => false
10663
+ }, makeNode(node.op ?? "profileWire", params, [input]));
10664
+ }
10477
10665
  function applyMatrix(solid, matrix, op, params, input) {
10666
+ if (typeof solid.transform !== "function") return transformProfileNode(input, matrix, input);
10478
10667
  return wrap(solid.transform(matrix), makeNode(op, params, [input]));
10479
10668
  }
10480
10669
  function translate(shape, x, y, z) {
@@ -12762,6 +12951,14 @@ var HANDLERS = {
12762
12951
  0,
12763
12952
  0
12764
12953
  ];
12954
+ if (pts.length > 2) {
12955
+ const through = pts.map((q) => [
12956
+ q[0],
12957
+ q[1],
12958
+ q[2]
12959
+ ]);
12960
+ return t.interpolatePoints(through);
12961
+ }
12765
12962
  const b = pts.length > 1 ? pts[pts.length - 1] ?? a : [
12766
12963
  a[0] + .001,
12767
12964
  a[1],
@@ -13261,6 +13458,16 @@ function makeMeasureOps(_module) {
13261
13458
  if (e && e.__nativeEdge && typeof e.length === "number") return e.length;
13262
13459
  const node = asManifoldShape(shape)?.node;
13263
13460
  if (node?.op === "profileEdge" && node.params?.curve) return descLength(node.params.curve);
13461
+ const pts = node?.op === "profileEdge" ? node.params?.pts : void 0;
13462
+ if (pts && pts.length > 1) {
13463
+ let total = 0;
13464
+ for (let i = 1; i < pts.length; i++) {
13465
+ const a = pts[i - 1] ?? [];
13466
+ const b = pts[i] ?? [];
13467
+ total += Math.hypot((b[0] ?? 0) - (a[0] ?? 0), (b[1] ?? 0) - (a[1] ?? 0), (b[2] ?? 0) - (a[2] ?? 0));
13468
+ }
13469
+ return total;
13470
+ }
13264
13471
  return notImplemented("length");
13265
13472
  },
13266
13473
  centerOfMass: (shape) => centerOfMass(shape),