brepjs 15.1.9 → 15.1.10

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 (73) hide show
  1. package/dist/2d/blueprints/blueprintOffset.d.ts.map +1 -1
  2. package/dist/2d/blueprints/intersectionSegments.d.ts.map +1 -1
  3. package/dist/2d/curve2dGeometryFns.d.ts +6 -0
  4. package/dist/2d/curve2dGeometryFns.d.ts.map +1 -1
  5. package/dist/2d/curves.d.ts.map +1 -1
  6. package/dist/2d.cjs +22 -5
  7. package/dist/2d.d.ts +1 -1
  8. package/dist/2d.d.ts.map +1 -1
  9. package/dist/2d.js +20 -6
  10. package/dist/{blueprint-BqfmnE-a.cjs → blueprint-BvUKWbkE.cjs} +28 -23
  11. package/dist/{blueprint-TAP5VKvS.js → blueprint-DD20bL3n.js} +28 -23
  12. package/dist/{blueprintFns-CBw4356y.cjs → blueprintFns-DFLtehf-.cjs} +2 -2
  13. package/dist/{blueprintFns-CjV2S9wl.js → blueprintFns-DLDx4XFc.js} +2 -2
  14. package/dist/{boolean2D-DC81hlIZ.cjs → boolean2D-CQE7rswO.cjs} +39 -20
  15. package/dist/{boolean2D-BqZa2eCz.js → boolean2D-CpSRx5_U.js} +39 -20
  16. package/dist/{booleanFns-D1kEkLvp.js → booleanFns-C-IpkYUW.js} +4 -4
  17. package/dist/{booleanFns-Y3xwUQYq.cjs → booleanFns-D3wX7_qO.cjs} +4 -4
  18. package/dist/brepjs.cjs +20 -20
  19. package/dist/brepjs.js +20 -20
  20. package/dist/core.cjs +1 -1
  21. package/dist/core.js +1 -1
  22. package/dist/{cornerFinder-Ct8gd2nn.cjs → cornerFinder-BybcZVxL.cjs} +1 -1
  23. package/dist/{cornerFinder-QAC3VdiI.js → cornerFinder-C7k0yipe.js} +1 -1
  24. package/dist/{curveFns-xOx617Vs.cjs → curveFns-BErRtKDj.cjs} +1 -1
  25. package/dist/{curveFns-DkM157b8.js → curveFns-DbIakl9J.js} +1 -1
  26. package/dist/{drawFns-JPBjBePH.cjs → drawFns-Bk5q5z-m.cjs} +24 -13
  27. package/dist/{drawFns-DtC9rW-f.js → drawFns-tyuGCCqm.js} +24 -13
  28. package/dist/{extrudeFns-Bzsx_rmn.cjs → extrudeFns-7_WDVoEg.cjs} +1 -1
  29. package/dist/{extrudeFns-DtHg7Uao.js → extrudeFns-pjrR5ECA.js} +1 -1
  30. package/dist/{faceFns-DLQ0-OBU.cjs → faceFns-B8y0xqpK.cjs} +1 -1
  31. package/dist/{faceFns-C7_zbEch.js → faceFns-wSgaAQrJ.js} +1 -1
  32. package/dist/{helpers-DU_FI6Oh.cjs → helpers-CpCe09zS.cjs} +5 -5
  33. package/dist/{helpers-BTv-yY8r.js → helpers-DsVYL2Ri.js} +5 -5
  34. package/dist/{historyFns-BtesqCmL.cjs → historyFns-DAY8a7Ss.cjs} +4 -4
  35. package/dist/{historyFns-CY-46Ivn.js → historyFns-s3knhOiM.js} +4 -4
  36. package/dist/{importFns-DCru75oa.cjs → importFns-B-5chCzB.cjs} +2 -2
  37. package/dist/{importFns-DVMhnD9T.js → importFns-C0Edyiov.js} +2 -2
  38. package/dist/io.cjs +2 -2
  39. package/dist/io.js +2 -2
  40. package/dist/kernel/geometry2d.d.ts.map +1 -1
  41. package/dist/kernel/occtWasm/occtWasmAdapter.cjs +1 -1
  42. package/dist/kernel/occtWasm/occtWasmAdapter.js +1 -1
  43. package/dist/{measureFns-BcRXbP7I.js → measureFns-gRr84qGk.js} +2 -2
  44. package/dist/{measureFns-5TTtVcT9.cjs → measureFns-vgnbVhDc.cjs} +2 -2
  45. package/dist/measurement.cjs +1 -1
  46. package/dist/measurement.js +1 -1
  47. package/dist/{meshFns-B2T-lpvP.js → meshFns-CA6fJ-Z0.js} +2 -2
  48. package/dist/{meshFns-ULSYlg76.cjs → meshFns-rMEka_pV.cjs} +2 -2
  49. package/dist/{occtWasmAdapter-B8K7kN7m.js → occtWasmAdapter-BBr9e9ej.js} +30 -1
  50. package/dist/{occtWasmAdapter-DYjViuTQ.cjs → occtWasmAdapter-DcGOi3MQ.cjs} +30 -1
  51. package/dist/operations.cjs +2 -2
  52. package/dist/operations.js +2 -2
  53. package/dist/{primitiveFns-7P5Hf3WY.cjs → primitiveFns-B1R8RWjt.cjs} +5 -5
  54. package/dist/{primitiveFns-VqIM41Rz.js → primitiveFns-DtfUR91z.js} +5 -5
  55. package/dist/query.cjs +2 -2
  56. package/dist/query.js +2 -2
  57. package/dist/{shapeFns-BXaKHIQ3.cjs → shapeFns-BtGq6ZqD.cjs} +2 -2
  58. package/dist/{shapeFns-C_RXS-bz.js → shapeFns-ClKIHb3P.js} +2 -2
  59. package/dist/shapeRef.cjs +1 -1
  60. package/dist/shapeRef.js +1 -1
  61. package/dist/{shapeRefFns-BJNRYexW.js → shapeRefFns-DjWRttT2.js} +3 -3
  62. package/dist/{shapeRefFns-DvwSQrkl.cjs → shapeRefFns-MA4_U4Fn.cjs} +3 -3
  63. package/dist/{shapeTypes-rKIgWjDk.cjs → shapeTypes-Cs7uihz8.cjs} +1 -1
  64. package/dist/{shapeTypes-cnUTQRbe.js → shapeTypes-Qh4ErtGx.js} +1 -1
  65. package/dist/sketching.cjs +2 -2
  66. package/dist/sketching.js +2 -2
  67. package/dist/{solidBuilders-D687wjsQ.cjs → solidBuilders-BMv6UQUY.cjs} +2 -2
  68. package/dist/{solidBuilders-Ca7lRUxh.js → solidBuilders-CHvrwtLL.js} +2 -2
  69. package/dist/{surfaceBuilders-CuTfdkEc.cjs → surfaceBuilders-Bgc5TlIe.cjs} +2 -2
  70. package/dist/{surfaceBuilders-Dd49hsUf.js → surfaceBuilders-CL8MJABt.js} +2 -2
  71. package/dist/topology.cjs +6 -6
  72. package/dist/topology.js +6 -6
  73. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"blueprintOffset.d.ts","sourceRoot":"","sources":["../../../src/2d/blueprints/blueprintOffset.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,OAAO,EAQR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAGvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAiO9C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,cAAmB,GAChC,OAAO,EAAE,CAgGX;AAOD,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;CAC5C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,cAAmB,GAChC,OAAO,CA6CT;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAC5B,EAAE,EAAE,OAAO,EACX,cAAc,EAAE,MAAM,EACtB,YAAY,GAAE,cAAmB,GAChC,OAAO,CAeT"}
1
+ {"version":3,"file":"blueprintOffset.d.ts","sourceRoot":"","sources":["../../../src/2d/blueprints/blueprintOffset.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,OAAO,EAQR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAGvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAiO9C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,cAAmB,GAChC,OAAO,EAAE,CAgGX;AAOD,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;CAC5C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,cAAmB,GAChC,OAAO,CA6DT;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAC5B,EAAE,EAAE,OAAO,EACX,cAAc,EAAE,MAAM,EACtB,YAAY,GAAE,cAAmB,GAChC,OAAO,CAeT"}
@@ -1 +1 @@
1
- {"version":3,"file":"intersectionSegments.d.ts","sourceRoot":"","sources":["../../../src/2d/blueprints/intersectionSegments.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAW,MAAM,mBAAmB,CAAC;AAG1D,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAY5C,OAAO,KAAK,EAAW,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AA2KxE;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,oBAAoB,EAAE,OAAO,EAAE,EAAE,EACjC,YAAY,EAAE,OAAO,EACrB,UAAU,EAAE,OAAO,GAClB,OAAO,CAQT;AAMD;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,SAAS,GAChB,mBAAmB,EAAE,GAAG,IAAI,CAwE9B"}
1
+ {"version":3,"file":"intersectionSegments.d.ts","sourceRoot":"","sources":["../../../src/2d/blueprints/intersectionSegments.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAW,MAAM,mBAAmB,CAAC;AAG1D,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAY5C,OAAO,KAAK,EAAW,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAuLxE;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,oBAAoB,EAAE,OAAO,EAAE,EAAE,EACjC,YAAY,EAAE,OAAO,EACrB,UAAU,EAAE,OAAO,GAClB,OAAO,CAQT;AAMD;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,SAAS,GAChB,mBAAmB,EAAE,GAAG,IAAI,CAsF9B"}
@@ -104,4 +104,10 @@ export declare function distanceBetweenCurves2d(c1: Curve2DHandle, c2: Curve2DHa
104
104
  export declare function liftCurve2dToPlane(curve: Curve2DHandle, plane: Plane): Result<Edge>;
105
105
  /** Extract the 2D parametric curve of a 3D edge on a face. */
106
106
  export declare function extractCurve2dFromEdge(edge: Edge, face: Face): Result<Curve2DHandle>;
107
+ /** Trim a 2D curve to a sub-range of its parameter domain. */
108
+ export declare function trimCurve2d(curve: Curve2DHandle, start: number, end: number): Result<Curve2DHandle>;
109
+ /** Create an independent deep copy of a 2D curve. */
110
+ export declare function copyCurve2d(curve: Curve2DHandle): Result<Curve2DHandle>;
111
+ /** Split a 2D curve at the given parameter values. */
112
+ export declare function splitCurve2d(curve: Curve2DHandle, params: number[]): Result<Curve2DHandle[]>;
107
113
  //# sourceMappingURL=curve2dGeometryFns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"curve2dGeometryFns.d.ts","sourceRoot":"","sources":["../../src/2d/curve2dGeometryFns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,kBAAkB,CAAC;AA4DxD,mDAAmD;AACnD,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAMxE;AAED,+BAA+B;AAC/B,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAWhG;AAED,4CAA4C;AAC5C,wBAAgB,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAMnF;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,OAAO,GACX,MAAM,CAAC,aAAa,CAAC,CAOvB;AAED,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,gCAAgC;AAChC,wBAAgB,SAAS,CACvB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAAC,aAAa,CAAC,CAiBvB;AAED,kCAAkC;AAClC,wBAAgB,YAAY,CAC1B,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAAC,aAAa,CAAC,CAmBvB;AAED,uDAAuD;AACvD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,CAcjE;AAED,yCAAyC;AACzC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CACtD;AAED,+DAA+D;AAC/D,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC,aAAa,CAAC,CAc9F;AAMD,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,aAAa,EACpB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,MAAM,CAAC,aAAa,CAAC,CAMvB;AAED,0FAA0F;AAC1F,wBAAgB,aAAa,CAC3B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,OAAgB,GACvB,MAAM,CAAC,aAAa,CAAC,CAMvB;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAC1B,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,OAAgB,GACvB,MAAM,CAAC,aAAa,CAAC,CAMvB;AAED,6DAA6D;AAC7D,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAMzF;AAED,6FAA6F;AAC7F,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,OAAO,GACjB,MAAM,CAAC,aAAa,CAAC,CAavB;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,CAM3F;AAMD,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAMpF;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAC5B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAM9C;AAED,8CAA8C;AAC9C,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAM3F;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAMhE;AAMD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,aAAa,EACjB,EAAE,EAAE,aAAa,EACjB,SAAS,SAAO,GACf,MAAM,CAAC;IAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC,CAqB1D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,OAAO,GACb,MAAM,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAMpD;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,aAAa,EACjB,EAAE,EAAE,aAAa,EACjB,OAAO,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACzC,OAAO,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACxC,MAAM,CAAC,MAAM,CAAC,CAWhB;AAMD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAcnF;AAED,8DAA8D;AAC9D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAMpF"}
1
+ {"version":3,"file":"curve2dGeometryFns.d.ts","sourceRoot":"","sources":["../../src/2d/curve2dGeometryFns.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"curves.d.ts","sourceRoot":"","sources":["../../src/2d/curves.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAIvD,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAExD,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,GAAI,QAAQ,OAAO,EAAE,KAAG,aAOrD,CAAC;AAEF,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,CAO5E;AAED,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,GAAI,QAAQ,OAAO,EAAE,EAAE,UAAU,UAAU,KAAG,IAAI,EAKpF,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,eAAe,GAC1B,QAAQ,OAAO,EAAE,EAEjB,gBAAgB,UAAU,GAAG,IAAI,KAChC,OAAO,EAMT,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAE1C,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,GAC7B,OAAO,MAAM,EACb,WAAW,OAAO,EAClB,SAAQ,OAAgB,KACvB,gBAEF,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,sBAAsB,GAAI,aAAa,OAAO,KAAG,gBAE7D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAC5B,mBAAmB,OAAO,EAC1B,SAAQ,OAAgB,EACxB,aAAe,KACd,gBAaF,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,EAAE,SAAQ,OAAgB,KAAG,gBAE3E,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,GAC3B,aAAa,MAAM,EACnB,SAAQ,OAAgB,KACvB,gBAEF,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,EAAE,EACjB,IAAI,EAAE,IAAI,EACV,KAAK,GAAE,SAAsB,GAC5B,MAAM,CAAC,IAAI,EAAE,CAAC,CAoEhB;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAQxD"}
1
+ {"version":3,"file":"curves.d.ts","sourceRoot":"","sources":["../../src/2d/curves.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAIvD,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAExD,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,GAAI,QAAQ,OAAO,EAAE,KAAG,aAOrD,CAAC;AAEF,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,CAO5E;AAED,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,GAAI,QAAQ,OAAO,EAAE,EAAE,UAAU,UAAU,KAAG,IAAI,EAKpF,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,eAAe,GAC1B,QAAQ,OAAO,EAAE,EAEjB,gBAAgB,UAAU,GAAG,IAAI,KAChC,OAAO,EAMT,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAE1C,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,GAC7B,OAAO,MAAM,EACb,WAAW,OAAO,EAClB,SAAQ,OAAgB,KACvB,gBAEF,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,sBAAsB,GAAI,aAAa,OAAO,KAAG,gBAE7D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAC5B,mBAAmB,OAAO,EAC1B,SAAQ,OAAgB,EACxB,aAAe,KACd,gBAaF,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,EAAE,SAAQ,OAAgB,KAAG,gBAE3E,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,GAC3B,aAAa,MAAM,EACnB,SAAQ,OAAgB,KACvB,gBAEF,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,EAAE,EACjB,IAAI,EAAE,IAAI,EACV,KAAK,GAAE,SAAsB,GAC5B,MAAM,CAAC,IAAI,EAAE,CAAC,CAyEhB;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAQxD"}
package/dist/2d.cjs CHANGED
@@ -1,10 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_shapeTypes = require("./shapeTypes-rKIgWjDk.cjs");
2
+ const require_shapeTypes = require("./shapeTypes-Cs7uihz8.cjs");
3
3
  const require_errors = require("./errors-CXRNVCec.cjs");
4
- const require_faceFns = require("./faceFns-DLQ0-OBU.cjs");
5
- const require_boolean2D = require("./boolean2D-DC81hlIZ.cjs");
6
- const require_blueprint = require("./blueprint-BqfmnE-a.cjs");
7
- const require_blueprintFns = require("./blueprintFns-CBw4356y.cjs");
4
+ const require_faceFns = require("./faceFns-B8y0xqpK.cjs");
5
+ const require_boolean2D = require("./boolean2D-CQE7rswO.cjs");
6
+ const require_blueprint = require("./blueprint-BvUKWbkE.cjs");
7
+ const require_blueprintFns = require("./blueprintFns-DFLtehf-.cjs");
8
8
  //#region src/core/curve2dHandle.ts
9
9
  /**
10
10
  * Wrap a raw kernel 2D curve handle with brand + disposal tracking.
@@ -204,6 +204,20 @@ function liftCurve2dToPlane(curve, plane) {
204
204
  function extractCurve2dFromEdge(edge, face) {
205
205
  return curveCall(() => require_shapeTypes.getKernel2D().extractCurve2dFromEdge(edge.wrapped, face.wrapped), CURVE2D_BRIDGE_FAILED, "Failed to extract 2D curve from edge");
206
206
  }
207
+ /** Trim a 2D curve to a sub-range of its parameter domain. */
208
+ function trimCurve2d(curve, start, end) {
209
+ return curveCall(() => require_shapeTypes.getKernel2D().trimCurve2d(curve.raw, start, end), CURVE2D_CONSTRUCTION_FAILED, "Failed to trim 2D curve");
210
+ }
211
+ /** Create an independent deep copy of a 2D curve. */
212
+ function copyCurve2d(curve) {
213
+ return curveCall(() => require_shapeTypes.getKernel2D().copyCurve2d(curve.raw), CURVE2D_CONSTRUCTION_FAILED, "Failed to copy 2D curve");
214
+ }
215
+ /** Split a 2D curve at the given parameter values. */
216
+ function splitCurve2d(curve, params) {
217
+ return require_faceFns.kernelCallRaw(() => {
218
+ return require_shapeTypes.getKernel2D().splitCurve2d(curve.raw, params).map((h) => wrapRawHandle(h));
219
+ }, CURVE2D_CONSTRUCTION_FAILED, "Failed to split 2D curve");
220
+ }
207
221
  //#endregion
208
222
  exports.Blueprint = require_blueprint.Blueprint;
209
223
  exports.Blueprints = require_boolean2D.Blueprints;
@@ -216,6 +230,7 @@ exports.bezier2d = bezier2d;
216
230
  exports.boundsCurve2d = boundsCurve2d;
217
231
  exports.bspline2d = bspline2d;
218
232
  exports.circle2d = circle2d;
233
+ exports.copyCurve2d = copyCurve2d;
219
234
  exports.createBlueprint = require_blueprintFns.createBlueprint;
220
235
  exports.createCurve2DHandle = createCurve2DHandle;
221
236
  exports.curve2dBoundingBox = require_blueprintFns.curve2dBoundingBox;
@@ -258,9 +273,11 @@ exports.scale2D = require_blueprintFns.scale2D;
258
273
  exports.scaleCurve2d = scaleCurve2d;
259
274
  exports.sketchOnFace2D = require_blueprintFns.sketchOnFace2D;
260
275
  exports.sketchOnPlane2D = require_blueprintFns.sketchOnPlane2D;
276
+ exports.splitCurve2d = splitCurve2d;
261
277
  exports.stretch2D = require_blueprintFns.stretch2D;
262
278
  exports.tangentCurve2d = tangentCurve2d;
263
279
  exports.toSVGPathD = require_blueprintFns.toSVGPathD;
264
280
  exports.translate2D = require_blueprintFns.translate2D;
265
281
  exports.translateCurve2d = translateCurve2d;
282
+ exports.trimCurve2d = trimCurve2d;
266
283
  exports.typeCurve2d = typeCurve2d;
package/dist/2d.d.ts CHANGED
@@ -17,7 +17,7 @@ export { createBlueprint, getBounds2D, getOrientation2D, isInside2D, toSVGPathD,
17
17
  export { fuseBlueprints, cutBlueprints, intersectBlueprints, } from './2d/blueprints/booleanOperations.js';
18
18
  export { fuse2D, cut2D, intersect2D, type Shape2D } from './2d/blueprints/boolean2D.js';
19
19
  export { reverseCurve, curve2dBoundingBox, curve2dFirstPoint, curve2dLastPoint, curve2dSplitAt, curve2dParameter, curve2dTangentAt, curve2dIsOnCurve, curve2dDistanceFrom, } from './2d/lib/curve2dFns.js';
20
- export { line2d, circle2d, arc2d, arc2dTangent, ellipse2d, ellipseArc2d, bezier2d, bspline2d, translateCurve2d, rotateCurve2d, scaleCurve2d, mirrorCurve2d, mirrorCurve2dAcrossAxis, offsetCurve2d, evaluateCurve2d, tangentCurve2d, boundsCurve2d, typeCurve2d, intersectCurves2d, projectPointOnCurve2d, distanceBetweenCurves2d, liftCurve2dToPlane, extractCurve2dFromEdge, type Ellipse2dOptions, type BSpline2dOptions, } from './2d/curve2dGeometryFns.js';
20
+ export { line2d, circle2d, arc2d, arc2dTangent, ellipse2d, ellipseArc2d, bezier2d, bspline2d, translateCurve2d, rotateCurve2d, scaleCurve2d, mirrorCurve2d, mirrorCurve2dAcrossAxis, offsetCurve2d, evaluateCurve2d, tangentCurve2d, boundsCurve2d, typeCurve2d, intersectCurves2d, projectPointOnCurve2d, distanceBetweenCurves2d, liftCurve2dToPlane, extractCurve2dFromEdge, trimCurve2d, copyCurve2d, splitCurve2d, type Ellipse2dOptions, type BSpline2dOptions, } from './2d/curve2dGeometryFns.js';
21
21
  export { type Point2D, BoundingBox2d, Curve2D } from './2d/lib/index.js';
22
22
  export { type Curve2DHandle, createCurve2DHandle } from './core/curve2dHandle.js';
23
23
  export { organiseBlueprints } from './2d/blueprints/lib.js';
package/dist/2d.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"2d.d.ts","sourceRoot":"","sources":["../src/2d.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAItE,OAAO,EACL,eAAe,EAEf,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,WAAW,EACX,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,eAAe,EACf,cAAc,GACf,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EACL,cAAc,EACd,aAAa,EACb,mBAAmB,GACpB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAIxF,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,MAAM,EACN,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EAAE,KAAK,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,KAAK,aAAa,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AACpG,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"2d.d.ts","sourceRoot":"","sources":["../src/2d.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAItE,OAAO,EACL,eAAe,EAEf,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,WAAW,EACX,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,eAAe,EACf,cAAc,GACf,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EACL,cAAc,EACd,aAAa,EACb,mBAAmB,GACpB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAIxF,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,MAAM,EACN,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EAAE,KAAK,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,KAAK,aAAa,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AACpG,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/2d.js CHANGED
@@ -1,9 +1,9 @@
1
- import { B as createKernelHandle, Z as getKernel2D, a as createEdge } from "./shapeTypes-cnUTQRbe.js";
1
+ import { B as createKernelHandle, Z as getKernel2D, a as createEdge } from "./shapeTypes-Qh4ErtGx.js";
2
2
  import { A as ok, b as err, d as validationError, t as BrepErrorCode } from "./errors-DboJwVCf.js";
3
- import { B as kernelCallRaw } from "./faceFns-C7_zbEch.js";
4
- import { _ as Blueprints, a as fuseBlueprints, c as roundedRectangleBlueprint, g as CompoundBlueprint, h as organiseBlueprints, i as cutBlueprints, n as fuse2D, o as intersectBlueprints, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-BqZa2eCz.js";
5
- import { _ as Curve2D, t as Blueprint, y as BoundingBox2d } from "./blueprint-TAP5VKvS.js";
6
- 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, 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-CjV2S9wl.js";
3
+ import { B as kernelCallRaw } from "./faceFns-wSgaAQrJ.js";
4
+ import { _ as Blueprints, a as fuseBlueprints, c as roundedRectangleBlueprint, g as CompoundBlueprint, h as organiseBlueprints, i as cutBlueprints, n as fuse2D, o as intersectBlueprints, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-CpSRx5_U.js";
5
+ import { _ as Curve2D, t as Blueprint, y as BoundingBox2d } from "./blueprint-DD20bL3n.js";
6
+ 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, 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-DLDx4XFc.js";
7
7
  //#region src/core/curve2dHandle.ts
8
8
  /**
9
9
  * Wrap a raw kernel 2D curve handle with brand + disposal tracking.
@@ -203,5 +203,19 @@ function liftCurve2dToPlane(curve, plane) {
203
203
  function extractCurve2dFromEdge(edge, face) {
204
204
  return curveCall(() => getKernel2D().extractCurve2dFromEdge(edge.wrapped, face.wrapped), CURVE2D_BRIDGE_FAILED, "Failed to extract 2D curve from edge");
205
205
  }
206
+ /** Trim a 2D curve to a sub-range of its parameter domain. */
207
+ function trimCurve2d(curve, start, end) {
208
+ return curveCall(() => getKernel2D().trimCurve2d(curve.raw, start, end), CURVE2D_CONSTRUCTION_FAILED, "Failed to trim 2D curve");
209
+ }
210
+ /** Create an independent deep copy of a 2D curve. */
211
+ function copyCurve2d(curve) {
212
+ return curveCall(() => getKernel2D().copyCurve2d(curve.raw), CURVE2D_CONSTRUCTION_FAILED, "Failed to copy 2D curve");
213
+ }
214
+ /** Split a 2D curve at the given parameter values. */
215
+ function splitCurve2d(curve, params) {
216
+ return kernelCallRaw(() => {
217
+ return getKernel2D().splitCurve2d(curve.raw, params).map((h) => wrapRawHandle(h));
218
+ }, CURVE2D_CONSTRUCTION_FAILED, "Failed to split 2D curve");
219
+ }
206
220
  //#endregion
207
- export { Blueprint, Blueprints, BoundingBox2d, CompoundBlueprint, Curve2D, arc2d, arc2dTangent, bezier2d, boundsCurve2d, bspline2d, circle2d, createBlueprint, createCurve2DHandle, curve2dBoundingBox, curve2dDistanceFrom, curve2dFirstPoint, curve2dIsOnCurve, curve2dLastPoint, curve2dParameter, curve2dSplitAt, curve2dTangentAt, cut2D, cutBlueprints, distanceBetweenCurves2d, ellipse2d, ellipseArc2d, evaluateCurve2d, extractCurve2dFromEdge, fuse2D, fuseBlueprints, getBounds2D, getOrientation2D, intersect2D, intersectBlueprints, intersectCurves2d, isInside2D, liftCurve2dToPlane, line2d, mirror2D, mirrorCurve2d, mirrorCurve2dAcrossAxis, offsetCurve2d, organiseBlueprints, polysidesBlueprint, projectPointOnCurve2d, reverseCurve, rotate2D, rotateCurve2d, roundedRectangleBlueprint, scale2D, scaleCurve2d, sketchOnFace2D, sketchOnPlane2D, stretch2D, tangentCurve2d, toSVGPathD, translate2D, translateCurve2d, typeCurve2d };
221
+ export { Blueprint, Blueprints, BoundingBox2d, CompoundBlueprint, Curve2D, arc2d, arc2dTangent, bezier2d, boundsCurve2d, bspline2d, circle2d, copyCurve2d, createBlueprint, createCurve2DHandle, curve2dBoundingBox, curve2dDistanceFrom, curve2dFirstPoint, curve2dIsOnCurve, curve2dLastPoint, curve2dParameter, curve2dSplitAt, curve2dTangentAt, cut2D, cutBlueprints, distanceBetweenCurves2d, ellipse2d, ellipseArc2d, evaluateCurve2d, extractCurve2dFromEdge, fuse2D, fuseBlueprints, getBounds2D, getOrientation2D, intersect2D, intersectBlueprints, intersectCurves2d, isInside2D, liftCurve2dToPlane, line2d, mirror2D, mirrorCurve2d, mirrorCurve2dAcrossAxis, offsetCurve2d, organiseBlueprints, polysidesBlueprint, projectPointOnCurve2d, reverseCurve, rotate2D, rotateCurve2d, roundedRectangleBlueprint, scale2D, scaleCurve2d, sketchOnFace2D, sketchOnPlane2D, splitCurve2d, stretch2D, tangentCurve2d, toSVGPathD, translate2D, translateCurve2d, trimCurve2d, typeCurve2d };
@@ -1,12 +1,12 @@
1
- const require_shapeTypes = require("./shapeTypes-rKIgWjDk.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-Cs7uihz8.cjs");
2
2
  const require_errors = require("./errors-CXRNVCec.cjs");
3
- const require_faceFns = require("./faceFns-DLQ0-OBU.cjs");
3
+ const require_faceFns = require("./faceFns-B8y0xqpK.cjs");
4
4
  const require_types = require("./types-hXSlplF3.cjs");
5
5
  const require_planeOps = require("./planeOps-DoTESDTM.cjs");
6
- const require_curveFns = require("./curveFns-xOx617Vs.cjs");
6
+ const require_curveFns = require("./curveFns-BErRtKDj.cjs");
7
7
  const require_arrayAccess = require("./arrayAccess-CmulMesb.cjs");
8
- const require_surfaceBuilders = require("./surfaceBuilders-CuTfdkEc.cjs");
9
- const require_helpers = require("./helpers-DU_FI6Oh.cjs");
8
+ const require_surfaceBuilders = require("./surfaceBuilders-Bgc5TlIe.cjs");
9
+ const require_helpers = require("./helpers-CpCe09zS.cjs");
10
10
  //#region src/2d/lib/definitions.ts
11
11
  /** Type guard that checks whether a value is a `Point2D`. */
12
12
  function isPoint2D(point) {
@@ -626,24 +626,29 @@ function curvesAsEdgesOnFace(curves, face, scale = "original") {
626
626
  }
627
627
  if (scale === "bounds") {
628
628
  transformation = kernel.createIdentityGTrsf2d();
629
- kernel.setGTrsf2dTranslationPart(transformation, 0, 0);
630
- const uAffinity = kernel.createAffinityGTrsf2d(0, 0, 0, 1, bounds.uMax - bounds.uMin);
631
- kernel.multiplyGTrsf2d(transformation, uAffinity);
632
- uAffinity.delete();
633
- if (bounds.uMin !== 0) {
634
- const trans = kernel.createIdentityGTrsf2d();
635
- kernel.setGTrsf2dTranslationPart(trans, -bounds.uMin, 0);
636
- kernel.multiplyGTrsf2d(transformation, trans);
637
- trans.delete();
638
- }
639
- const vAffinity = kernel.createAffinityGTrsf2d(0, 0, 1, 0, bounds.vMax - bounds.vMin);
640
- kernel.multiplyGTrsf2d(transformation, vAffinity);
641
- vAffinity.delete();
642
- if (bounds.vMin !== 0) {
643
- const trans = kernel.createIdentityGTrsf2d();
644
- kernel.setGTrsf2dTranslationPart(trans, 0, -bounds.vMin);
645
- kernel.multiplyGTrsf2d(transformation, trans);
646
- trans.delete();
629
+ try {
630
+ kernel.setGTrsf2dTranslationPart(transformation, 0, 0);
631
+ const uAffinity = kernel.createAffinityGTrsf2d(0, 0, 0, 1, bounds.uMax - bounds.uMin);
632
+ kernel.multiplyGTrsf2d(transformation, uAffinity);
633
+ uAffinity.delete();
634
+ if (bounds.uMin !== 0) {
635
+ const trans = kernel.createIdentityGTrsf2d();
636
+ kernel.setGTrsf2dTranslationPart(trans, -bounds.uMin, 0);
637
+ kernel.multiplyGTrsf2d(transformation, trans);
638
+ trans.delete();
639
+ }
640
+ const vAffinity = kernel.createAffinityGTrsf2d(0, 0, 1, 0, bounds.vMax - bounds.vMin);
641
+ kernel.multiplyGTrsf2d(transformation, vAffinity);
642
+ vAffinity.delete();
643
+ if (bounds.vMin !== 0) {
644
+ const trans = kernel.createIdentityGTrsf2d();
645
+ kernel.setGTrsf2dTranslationPart(trans, 0, -bounds.vMin);
646
+ kernel.multiplyGTrsf2d(transformation, trans);
647
+ trans.delete();
648
+ }
649
+ } catch (e) {
650
+ transformation.delete();
651
+ throw e;
647
652
  }
648
653
  }
649
654
  const edges = curvesAsEdgesOnSurface(transformCurves(curves, transformation), geomSurf);
@@ -1,12 +1,12 @@
1
- import { G as unregisterFromCleanup, U as registerForCleanup, X as getKernel, Z as getKernel2D, a as createEdge, u as createWire } from "./shapeTypes-cnUTQRbe.js";
1
+ import { G as unregisterFromCleanup, U as registerForCleanup, X as getKernel, Z as getKernel2D, a as createEdge, u as createWire } from "./shapeTypes-Qh4ErtGx.js";
2
2
  import { A as ok, R as unwrap, b as err, d as validationError, h as bug, n as computationError } from "./errors-DboJwVCf.js";
3
- import { N as cast, m as uvCoordinates, n as faceCenter, p as uvBounds, r as faceGeomType } from "./faceFns-C7_zbEch.js";
3
+ import { N as cast, m as uvCoordinates, n as faceCenter, p as uvBounds, r as faceGeomType } from "./faceFns-wSgaAQrJ.js";
4
4
  import { i as DEG2RAD, o as RAD2DEG, r as toVec3 } from "./types-SLY3VwcI.js";
5
5
  import { r as makePlane } from "./planeOps-C94s53Ia.js";
6
- import { f as getOrientation } from "./curveFns-DkM157b8.js";
6
+ import { f as getOrientation } from "./curveFns-DbIakl9J.js";
7
7
  import { n as getAtOrThrow, r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-xxcB3YNq.js";
8
- import { r as makeFace } from "./surfaceBuilders-Dd49hsUf.js";
9
- import { _ as samePoint, b as subtract2d, l as add2d, o as normalize2d, p as distance2d, t as getSingleFace, v as scalarMultiply2d } from "./helpers-BTv-yY8r.js";
8
+ import { r as makeFace } from "./surfaceBuilders-CL8MJABt.js";
9
+ import { _ as samePoint, b as subtract2d, l as add2d, o as normalize2d, p as distance2d, t as getSingleFace, v as scalarMultiply2d } from "./helpers-DsVYL2Ri.js";
10
10
  //#region src/2d/lib/definitions.ts
11
11
  /** Type guard that checks whether a value is a `Point2D`. */
12
12
  function isPoint2D(point) {
@@ -626,24 +626,29 @@ function curvesAsEdgesOnFace(curves, face, scale = "original") {
626
626
  }
627
627
  if (scale === "bounds") {
628
628
  transformation = kernel.createIdentityGTrsf2d();
629
- kernel.setGTrsf2dTranslationPart(transformation, 0, 0);
630
- const uAffinity = kernel.createAffinityGTrsf2d(0, 0, 0, 1, bounds.uMax - bounds.uMin);
631
- kernel.multiplyGTrsf2d(transformation, uAffinity);
632
- uAffinity.delete();
633
- if (bounds.uMin !== 0) {
634
- const trans = kernel.createIdentityGTrsf2d();
635
- kernel.setGTrsf2dTranslationPart(trans, -bounds.uMin, 0);
636
- kernel.multiplyGTrsf2d(transformation, trans);
637
- trans.delete();
638
- }
639
- const vAffinity = kernel.createAffinityGTrsf2d(0, 0, 1, 0, bounds.vMax - bounds.vMin);
640
- kernel.multiplyGTrsf2d(transformation, vAffinity);
641
- vAffinity.delete();
642
- if (bounds.vMin !== 0) {
643
- const trans = kernel.createIdentityGTrsf2d();
644
- kernel.setGTrsf2dTranslationPart(trans, 0, -bounds.vMin);
645
- kernel.multiplyGTrsf2d(transformation, trans);
646
- trans.delete();
629
+ try {
630
+ kernel.setGTrsf2dTranslationPart(transformation, 0, 0);
631
+ const uAffinity = kernel.createAffinityGTrsf2d(0, 0, 0, 1, bounds.uMax - bounds.uMin);
632
+ kernel.multiplyGTrsf2d(transformation, uAffinity);
633
+ uAffinity.delete();
634
+ if (bounds.uMin !== 0) {
635
+ const trans = kernel.createIdentityGTrsf2d();
636
+ kernel.setGTrsf2dTranslationPart(trans, -bounds.uMin, 0);
637
+ kernel.multiplyGTrsf2d(transformation, trans);
638
+ trans.delete();
639
+ }
640
+ const vAffinity = kernel.createAffinityGTrsf2d(0, 0, 1, 0, bounds.vMax - bounds.vMin);
641
+ kernel.multiplyGTrsf2d(transformation, vAffinity);
642
+ vAffinity.delete();
643
+ if (bounds.vMin !== 0) {
644
+ const trans = kernel.createIdentityGTrsf2d();
645
+ kernel.setGTrsf2dTranslationPart(trans, 0, -bounds.vMin);
646
+ kernel.multiplyGTrsf2d(transformation, trans);
647
+ trans.delete();
648
+ }
649
+ } catch (e) {
650
+ transformation.delete();
651
+ throw e;
647
652
  }
648
653
  }
649
654
  const edges = curvesAsEdgesOnSurface(transformCurves(curves, transformation), geomSurf);
@@ -1,6 +1,6 @@
1
1
  const require_errors = require("./errors-CXRNVCec.cjs");
2
- const require_boolean2D = require("./boolean2D-DC81hlIZ.cjs");
3
- const require_blueprint = require("./blueprint-BqfmnE-a.cjs");
2
+ const require_boolean2D = require("./boolean2D-CQE7rswO.cjs");
3
+ const require_blueprint = require("./blueprint-BvUKWbkE.cjs");
4
4
  //#region src/2d/lib/curve2dFns.ts
5
5
  /**
6
6
  * Return a reversed copy of the curve (non-mutating).
@@ -1,6 +1,6 @@
1
1
  import { A as ok, b as err, d as validationError, t as BrepErrorCode } from "./errors-DboJwVCf.js";
2
- import { g as CompoundBlueprint } from "./boolean2D-BqZa2eCz.js";
3
- import { t as Blueprint } from "./blueprint-TAP5VKvS.js";
2
+ import { g as CompoundBlueprint } from "./boolean2D-CpSRx5_U.js";
3
+ import { t as Blueprint } from "./blueprint-DD20bL3n.js";
4
4
  //#region src/2d/lib/curve2dFns.ts
5
5
  /**
6
6
  * Return a reversed copy of the curve (non-mutating).
@@ -1,15 +1,15 @@
1
- const require_shapeTypes = require("./shapeTypes-rKIgWjDk.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-Cs7uihz8.cjs");
2
2
  const require_errors = require("./errors-CXRNVCec.cjs");
3
- const require_faceFns = require("./faceFns-DLQ0-OBU.cjs");
3
+ const require_faceFns = require("./faceFns-B8y0xqpK.cjs");
4
4
  const require_types = require("./types-hXSlplF3.cjs");
5
5
  const require_vecOps = require("./vecOps-BXvBYIor.cjs");
6
6
  const require_planeOps = require("./planeOps-DoTESDTM.cjs");
7
- const require_curveFns = require("./curveFns-xOx617Vs.cjs");
7
+ const require_curveFns = require("./curveFns-BErRtKDj.cjs");
8
8
  const require_arrayAccess = require("./arrayAccess-CmulMesb.cjs");
9
- const require_surfaceBuilders = require("./surfaceBuilders-CuTfdkEc.cjs");
10
- const require_helpers = require("./helpers-DU_FI6Oh.cjs");
11
- const require_blueprint = require("./blueprint-BqfmnE-a.cjs");
12
- const require_extrudeFns = require("./extrudeFns-Bzsx_rmn.cjs");
9
+ const require_surfaceBuilders = require("./surfaceBuilders-Bgc5TlIe.cjs");
10
+ const require_helpers = require("./helpers-CpCe09zS.cjs");
11
+ const require_blueprint = require("./blueprint-BvUKWbkE.cjs");
12
+ const require_extrudeFns = require("./extrudeFns-7_WDVoEg.cjs");
13
13
  //#region node_modules/flatqueue/index.js
14
14
  /** @template T */
15
15
  var FlatQueue = class {
@@ -2099,17 +2099,26 @@ function findAllIntersections(first, second) {
2099
2099
  const allCommonSegments = [];
2100
2100
  const firstCurvePoints = first.curves.map(() => []);
2101
2101
  const secondCurvePoints = second.curves.map(() => []);
2102
- first.curves.forEach((thisCurve, firstIndex) => {
2103
- second.curves.forEach((otherCurve, secondIndex) => {
2102
+ const secondIndex = new Flatbush(second.curves.length);
2103
+ for (const curve of second.curves) {
2104
+ const [[xMin, yMin], [xMax, yMax]] = curve.boundingBox.bounds;
2105
+ secondIndex.add(xMin, yMin, xMax, yMax);
2106
+ }
2107
+ secondIndex.finish();
2108
+ first.curves.forEach((thisCurve, firstIdx) => {
2109
+ const [[xMin, yMin], [xMax, yMax]] = thisCurve.boundingBox.bounds;
2110
+ const candidates = secondIndex.search(xMin, yMin, xMax, yMax);
2111
+ for (const secondIdx of candidates) {
2112
+ const otherCurve = second.curves[secondIdx];
2104
2113
  const { intersections, commonSegments, commonSegmentsPoints } = require_errors.unwrap(intersectCurves(thisCurve, otherCurve, require_helpers.PRECISION_INTERSECTION / 100));
2105
2114
  allIntersections.push(...intersections);
2106
- firstCurvePoints[firstIndex]?.push(...intersections);
2107
- secondCurvePoints[secondIndex]?.push(...intersections);
2115
+ firstCurvePoints[firstIdx]?.push(...intersections);
2116
+ secondCurvePoints[secondIdx]?.push(...intersections);
2108
2117
  allCommonSegments.push(...commonSegments);
2109
2118
  allIntersections.push(...commonSegmentsPoints);
2110
- firstCurvePoints[firstIndex]?.push(...commonSegmentsPoints);
2111
- secondCurvePoints[secondIndex]?.push(...commonSegmentsPoints);
2112
- });
2119
+ firstCurvePoints[firstIdx]?.push(...commonSegmentsPoints);
2120
+ secondCurvePoints[secondIdx]?.push(...commonSegmentsPoints);
2121
+ }
2113
2122
  });
2114
2123
  return {
2115
2124
  allIntersections: require_blueprint.removeDuplicatePoints(allIntersections, require_helpers.PRECISION_INTERSECTION),
@@ -2152,7 +2161,7 @@ function blueprintsIntersectionSegments(first, second) {
2152
2161
  let firstCurveSegments = splitCurvesAtIntersections(first.curves, firstCurvePoints);
2153
2162
  let secondCurveSegments = splitCurvesAtIntersections(second.curves, secondCurvePoints);
2154
2163
  const commonSegmentsPoints = allCommonSegments.map((c) => [c.firstPoint, c.lastPoint]);
2155
- const allIntersections = removeNonCrossingPoints(rawIntersections, firstCurveSegments, second);
2164
+ const allIntersections = removeNonCrossingPoints(removeNonCrossingPoints(rawIntersections, firstCurveSegments, second), secondCurveSegments, first);
2156
2165
  if (allIntersections.length === 0 && allCommonSegments.length === 0) return null;
2157
2166
  if (allCommonSegments.length === 0) {
2158
2167
  const startAt = allIntersections[0];
@@ -2174,11 +2183,21 @@ function blueprintsIntersectionSegments(first, second) {
2174
2183
  const commonSegmentLengthMismatch = allCommonSegments.length > 0 && secondSeg.length !== 1;
2175
2184
  if (endpointsMismatch || commonSegmentLengthMismatch) secondIntersectedSegments = reverseSegments(secondIntersectedSegments);
2176
2185
  }
2177
- return require_surfaceBuilders.zip([firstIntersectedSegments, secondIntersectedSegments]).map(([first, second]) => {
2178
- if (first === void 0 || second === void 0) require_errors.bug("blueprintsIntersectionSegments", "Mismatched segment counts between blueprints");
2179
- if (isCommonSegmentMatch(commonSegmentsPoints, startOfSegment(first), endOfSegment(first))) return [first, "same"];
2180
- return [first, second];
2181
- });
2186
+ const maxLen = Math.max(firstIntersectedSegments.length, secondIntersectedSegments.length);
2187
+ const result = [];
2188
+ for (let i = 0; i < maxLen; i++) {
2189
+ const firstSeg2 = firstIntersectedSegments[i];
2190
+ const secondSeg2 = secondIntersectedSegments[i];
2191
+ if (firstSeg2 === void 0 || secondSeg2 === void 0) {
2192
+ const available = firstSeg2 ?? secondSeg2;
2193
+ if (available === void 0) continue;
2194
+ result.push([available, available]);
2195
+ continue;
2196
+ }
2197
+ if (isCommonSegmentMatch(commonSegmentsPoints, startOfSegment(firstSeg2), endOfSegment(firstSeg2))) result.push([firstSeg2, "same"]);
2198
+ else result.push([firstSeg2, secondSeg2]);
2199
+ }
2200
+ return result;
2182
2201
  }
2183
2202
  //#endregion
2184
2203
  //#region src/2d/blueprints/segmentAssembly.ts
@@ -1,15 +1,15 @@
1
- import { R as DisposalScope, X as getKernel, Y as _usingCtx, Z as getKernel2D, a as createEdge, h as isShape3D, o as createFace, t as castShape, u as createWire } from "./shapeTypes-cnUTQRbe.js";
1
+ import { R as DisposalScope, X as getKernel, Y as _usingCtx, Z as getKernel2D, a as createEdge, h as isShape3D, o as createFace, t as castShape, u as createWire } from "./shapeTypes-Qh4ErtGx.js";
2
2
  import { A as ok, R as unwrap, T as isOk, b as err, d as validationError, h as bug, i as kernelError, l as typeCastError, n as computationError, s as safeIndex } from "./errors-DboJwVCf.js";
3
- import { P as downcast, c as normalAt, p as uvBounds, u as pointOnSurface } from "./faceFns-C7_zbEch.js";
3
+ import { P as downcast, c as normalAt, p as uvBounds, u as pointOnSurface } from "./faceFns-wSgaAQrJ.js";
4
4
  import { i as DEG2RAD, o as RAD2DEG, r as toVec3 } from "./types-SLY3VwcI.js";
5
5
  import { d as vecNormalize, h as vecScale, r as vecCross } from "./vecOps-D9etjPgV.js";
6
6
  import { n as createPlane } from "./planeOps-C94s53Ia.js";
7
- import { c as curveStartPoint, l as curveTangentAt, r as curveIsClosed } from "./curveFns-DkM157b8.js";
7
+ import { c as curveStartPoint, l as curveTangentAt, r as curveIsClosed } from "./curveFns-DbIakl9J.js";
8
8
  import { r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-xxcB3YNq.js";
9
- import { _ as zip, i as makeNewFaceWithinFace, r as makeFace, s as assembleWire } from "./surfaceBuilders-Dd49hsUf.js";
10
- import { _ as samePoint$1, b as subtract2d, d as cartesianToPolar, f as crossProduct2d, g as rotate2d, h as polarToCartesian, l as add2d, m as polarAngle2d, o as normalize2d, p as distance2d, s as PRECISION_INTERSECTION, v as scalarMultiply2d } from "./helpers-BTv-yY8r.js";
11
- import { _ as Curve2D, b as removeDuplicatePoints, c as make2dCircle, f as make2dSegmentCurve, h as approximateAsBSpline, m as make2dThreePointArc, n as asSVG, o as make2dArcFromCenter, p as make2dTangentArc, r as viewbox, s as make2dBezierCurve, t as Blueprint, u as make2dEllipseArc, x as isPoint2D, y as BoundingBox2d } from "./blueprint-TAP5VKvS.js";
12
- import { c as sweep, i as complexExtrude, l as twistExtrude, r as revolve, t as extrude } from "./extrudeFns-DtHg7Uao.js";
9
+ import { _ as zip, i as makeNewFaceWithinFace, r as makeFace, s as assembleWire } from "./surfaceBuilders-CL8MJABt.js";
10
+ import { _ as samePoint$1, b as subtract2d, d as cartesianToPolar, f as crossProduct2d, g as rotate2d, h as polarToCartesian, l as add2d, m as polarAngle2d, o as normalize2d, p as distance2d, s as PRECISION_INTERSECTION, v as scalarMultiply2d } from "./helpers-DsVYL2Ri.js";
11
+ import { _ as Curve2D, b as removeDuplicatePoints, c as make2dCircle, f as make2dSegmentCurve, h as approximateAsBSpline, m as make2dThreePointArc, n as asSVG, o as make2dArcFromCenter, p as make2dTangentArc, r as viewbox, s as make2dBezierCurve, t as Blueprint, u as make2dEllipseArc, x as isPoint2D, y as BoundingBox2d } from "./blueprint-DD20bL3n.js";
12
+ import { c as sweep, i as complexExtrude, l as twistExtrude, r as revolve, t as extrude } from "./extrudeFns-pjrR5ECA.js";
13
13
  //#region node_modules/flatqueue/index.js
14
14
  /** @template T */
15
15
  var FlatQueue = class {
@@ -2099,17 +2099,26 @@ function findAllIntersections(first, second) {
2099
2099
  const allCommonSegments = [];
2100
2100
  const firstCurvePoints = first.curves.map(() => []);
2101
2101
  const secondCurvePoints = second.curves.map(() => []);
2102
- first.curves.forEach((thisCurve, firstIndex) => {
2103
- second.curves.forEach((otherCurve, secondIndex) => {
2102
+ const secondIndex = new Flatbush(second.curves.length);
2103
+ for (const curve of second.curves) {
2104
+ const [[xMin, yMin], [xMax, yMax]] = curve.boundingBox.bounds;
2105
+ secondIndex.add(xMin, yMin, xMax, yMax);
2106
+ }
2107
+ secondIndex.finish();
2108
+ first.curves.forEach((thisCurve, firstIdx) => {
2109
+ const [[xMin, yMin], [xMax, yMax]] = thisCurve.boundingBox.bounds;
2110
+ const candidates = secondIndex.search(xMin, yMin, xMax, yMax);
2111
+ for (const secondIdx of candidates) {
2112
+ const otherCurve = second.curves[secondIdx];
2104
2113
  const { intersections, commonSegments, commonSegmentsPoints } = unwrap(intersectCurves(thisCurve, otherCurve, PRECISION_INTERSECTION / 100));
2105
2114
  allIntersections.push(...intersections);
2106
- firstCurvePoints[firstIndex]?.push(...intersections);
2107
- secondCurvePoints[secondIndex]?.push(...intersections);
2115
+ firstCurvePoints[firstIdx]?.push(...intersections);
2116
+ secondCurvePoints[secondIdx]?.push(...intersections);
2108
2117
  allCommonSegments.push(...commonSegments);
2109
2118
  allIntersections.push(...commonSegmentsPoints);
2110
- firstCurvePoints[firstIndex]?.push(...commonSegmentsPoints);
2111
- secondCurvePoints[secondIndex]?.push(...commonSegmentsPoints);
2112
- });
2119
+ firstCurvePoints[firstIdx]?.push(...commonSegmentsPoints);
2120
+ secondCurvePoints[secondIdx]?.push(...commonSegmentsPoints);
2121
+ }
2113
2122
  });
2114
2123
  return {
2115
2124
  allIntersections: removeDuplicatePoints(allIntersections, PRECISION_INTERSECTION),
@@ -2152,7 +2161,7 @@ function blueprintsIntersectionSegments(first, second) {
2152
2161
  let firstCurveSegments = splitCurvesAtIntersections(first.curves, firstCurvePoints);
2153
2162
  let secondCurveSegments = splitCurvesAtIntersections(second.curves, secondCurvePoints);
2154
2163
  const commonSegmentsPoints = allCommonSegments.map((c) => [c.firstPoint, c.lastPoint]);
2155
- const allIntersections = removeNonCrossingPoints(rawIntersections, firstCurveSegments, second);
2164
+ const allIntersections = removeNonCrossingPoints(removeNonCrossingPoints(rawIntersections, firstCurveSegments, second), secondCurveSegments, first);
2156
2165
  if (allIntersections.length === 0 && allCommonSegments.length === 0) return null;
2157
2166
  if (allCommonSegments.length === 0) {
2158
2167
  const startAt = allIntersections[0];
@@ -2174,11 +2183,21 @@ function blueprintsIntersectionSegments(first, second) {
2174
2183
  const commonSegmentLengthMismatch = allCommonSegments.length > 0 && secondSeg.length !== 1;
2175
2184
  if (endpointsMismatch || commonSegmentLengthMismatch) secondIntersectedSegments = reverseSegments(secondIntersectedSegments);
2176
2185
  }
2177
- return zip([firstIntersectedSegments, secondIntersectedSegments]).map(([first, second]) => {
2178
- if (first === void 0 || second === void 0) bug("blueprintsIntersectionSegments", "Mismatched segment counts between blueprints");
2179
- if (isCommonSegmentMatch(commonSegmentsPoints, startOfSegment(first), endOfSegment(first))) return [first, "same"];
2180
- return [first, second];
2181
- });
2186
+ const maxLen = Math.max(firstIntersectedSegments.length, secondIntersectedSegments.length);
2187
+ const result = [];
2188
+ for (let i = 0; i < maxLen; i++) {
2189
+ const firstSeg2 = firstIntersectedSegments[i];
2190
+ const secondSeg2 = secondIntersectedSegments[i];
2191
+ if (firstSeg2 === void 0 || secondSeg2 === void 0) {
2192
+ const available = firstSeg2 ?? secondSeg2;
2193
+ if (available === void 0) continue;
2194
+ result.push([available, available]);
2195
+ continue;
2196
+ }
2197
+ if (isCommonSegmentMatch(commonSegmentsPoints, startOfSegment(firstSeg2), endOfSegment(firstSeg2))) result.push([firstSeg2, "same"]);
2198
+ else result.push([firstSeg2, secondSeg2]);
2199
+ }
2200
+ return result;
2182
2201
  }
2183
2202
  //#endregion
2184
2203
  //#region src/2d/blueprints/segmentAssembly.ts
@@ -1,12 +1,12 @@
1
- import { X as getKernel, h as isShape3D, t as castShape } from "./shapeTypes-cnUTQRbe.js";
1
+ import { X as getKernel, h as isShape3D, t as castShape } from "./shapeTypes-Qh4ErtGx.js";
2
2
  import { A as ok, R as unwrap, b as err, d as validationError, i as kernelError, l as typeCastError, t as BrepErrorCode, w as isErr } from "./errors-DboJwVCf.js";
3
- import { C as getVertices, b as getEdges, j as getOrQueryHashCode, w as getWires } from "./faceFns-C7_zbEch.js";
3
+ import { C as getVertices, b as getEdges, j as getOrQueryHashCode, w as getWires } from "./faceFns-wSgaAQrJ.js";
4
4
  import { a as HASH_CODE_MAX } from "./types-SLY3VwcI.js";
5
5
  import { h as vecScale, t as vecAdd } from "./vecOps-D9etjPgV.js";
6
6
  import { o as resolvePlane } from "./planeOps-C94s53Ia.js";
7
- import { _ as propagateAllMetadata, g as collectInputFaceHashes, v as propagateMetadataByHash } from "./shapeFns-C_RXS-bz.js";
7
+ import { _ as propagateAllMetadata, g as collectInputFaceHashes, v as propagateMetadataByHash } from "./shapeFns-ClKIHb3P.js";
8
8
  import { n as getAtOrThrow, t as firstOrThrow } from "./arrayAccess-xxcB3YNq.js";
9
- import { r as makeFace } from "./surfaceBuilders-Dd49hsUf.js";
9
+ import { r as makeFace } from "./surfaceBuilders-CL8MJABt.js";
10
10
  //#region src/topology/booleanFns.ts
11
11
  /**
12
12
  * Boolean and compound operations — functional replacements for _3DShape boolean methods.
@@ -1,12 +1,12 @@
1
- const require_shapeTypes = require("./shapeTypes-rKIgWjDk.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-Cs7uihz8.cjs");
2
2
  const require_errors = require("./errors-CXRNVCec.cjs");
3
- const require_faceFns = require("./faceFns-DLQ0-OBU.cjs");
3
+ const require_faceFns = require("./faceFns-B8y0xqpK.cjs");
4
4
  const require_types = require("./types-hXSlplF3.cjs");
5
5
  const require_vecOps = require("./vecOps-BXvBYIor.cjs");
6
6
  const require_planeOps = require("./planeOps-DoTESDTM.cjs");
7
- const require_shapeFns = require("./shapeFns-BXaKHIQ3.cjs");
7
+ const require_shapeFns = require("./shapeFns-BtGq6ZqD.cjs");
8
8
  const require_arrayAccess = require("./arrayAccess-CmulMesb.cjs");
9
- const require_surfaceBuilders = require("./surfaceBuilders-CuTfdkEc.cjs");
9
+ const require_surfaceBuilders = require("./surfaceBuilders-Bgc5TlIe.cjs");
10
10
  //#region src/topology/booleanFns.ts
11
11
  /**
12
12
  * Boolean and compound operations — functional replacements for _3DShape boolean methods.
package/dist/brepjs.cjs CHANGED
@@ -1,29 +1,29 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_drawFns = require("./drawFns-JPBjBePH.cjs");
3
- const require_shapeTypes = require("./shapeTypes-rKIgWjDk.cjs");
4
- const require_occtWasmAdapter = require("./occtWasmAdapter-DYjViuTQ.cjs");
2
+ const require_drawFns = require("./drawFns-Bk5q5z-m.cjs");
3
+ const require_shapeTypes = require("./shapeTypes-Cs7uihz8.cjs");
4
+ const require_occtWasmAdapter = require("./occtWasmAdapter-DcGOi3MQ.cjs");
5
5
  const require_errors = require("./errors-CXRNVCec.cjs");
6
- const require_faceFns = require("./faceFns-DLQ0-OBU.cjs");
6
+ const require_faceFns = require("./faceFns-B8y0xqpK.cjs");
7
7
  const require_types = require("./types-hXSlplF3.cjs");
8
8
  const require_vecOps = require("./vecOps-BXvBYIor.cjs");
9
9
  const require_planeOps = require("./planeOps-DoTESDTM.cjs");
10
- const require_shapeFns = require("./shapeFns-BXaKHIQ3.cjs");
11
- const require_curveFns = require("./curveFns-xOx617Vs.cjs");
12
- const require_meshFns = require("./meshFns-ULSYlg76.cjs");
10
+ const require_shapeFns = require("./shapeFns-BtGq6ZqD.cjs");
11
+ const require_curveFns = require("./curveFns-BErRtKDj.cjs");
12
+ const require_meshFns = require("./meshFns-rMEka_pV.cjs");
13
13
  const require_arrayAccess = require("./arrayAccess-CmulMesb.cjs");
14
- const require_surfaceBuilders = require("./surfaceBuilders-CuTfdkEc.cjs");
15
- const require_booleanFns = require("./booleanFns-Y3xwUQYq.cjs");
16
- const require_primitiveFns = require("./primitiveFns-7P5Hf3WY.cjs");
17
- const require_historyFns = require("./historyFns-BtesqCmL.cjs");
18
- const require_boolean2D = require("./boolean2D-DC81hlIZ.cjs");
19
- const require_helpers = require("./helpers-DU_FI6Oh.cjs");
20
- const require_solidBuilders = require("./solidBuilders-D687wjsQ.cjs");
21
- const require_measureFns = require("./measureFns-5TTtVcT9.cjs");
22
- const require_cornerFinder = require("./cornerFinder-Ct8gd2nn.cjs");
23
- const require_extrudeFns = require("./extrudeFns-Bzsx_rmn.cjs");
24
- const require_blueprintFns = require("./blueprintFns-CBw4356y.cjs");
25
- const require_importFns = require("./importFns-DCru75oa.cjs");
26
- const require_shapeRefFns = require("./shapeRefFns-DvwSQrkl.cjs");
14
+ const require_surfaceBuilders = require("./surfaceBuilders-Bgc5TlIe.cjs");
15
+ const require_booleanFns = require("./booleanFns-D3wX7_qO.cjs");
16
+ const require_primitiveFns = require("./primitiveFns-B1R8RWjt.cjs");
17
+ const require_historyFns = require("./historyFns-DAY8a7Ss.cjs");
18
+ const require_boolean2D = require("./boolean2D-CQE7rswO.cjs");
19
+ const require_helpers = require("./helpers-CpCe09zS.cjs");
20
+ const require_solidBuilders = require("./solidBuilders-BMv6UQUY.cjs");
21
+ const require_measureFns = require("./measureFns-vgnbVhDc.cjs");
22
+ const require_cornerFinder = require("./cornerFinder-BybcZVxL.cjs");
23
+ const require_extrudeFns = require("./extrudeFns-7_WDVoEg.cjs");
24
+ const require_blueprintFns = require("./blueprintFns-DFLtehf-.cjs");
25
+ const require_importFns = require("./importFns-B-5chCzB.cjs");
26
+ const require_shapeRefFns = require("./shapeRefFns-MA4_U4Fn.cjs");
27
27
  const require_workerHandler = require("./workerHandler-C-7OUJsa.cjs");
28
28
  //#region src/topology/shapeBooleans.ts
29
29
  var BOPAlgo_GlueShift = 1;