brepjs 8.2.0 → 8.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/2d/lib/Curve2D.d.ts.map +1 -1
  2. package/dist/2d.cjs +2 -2
  3. package/dist/2d.js +3 -3
  4. package/dist/{Blueprint-D_luVeES.js → Blueprint-Bp45tnh0.js} +16 -12
  5. package/dist/{Blueprint-CTAwjJMN.cjs → Blueprint-zgFe_5Qj.cjs} +17 -13
  6. package/dist/{boolean2D-B5axNhjN.cjs → boolean2D-CfEbRMPF.cjs} +11 -11
  7. package/dist/{boolean2D-vw76Gayn.js → boolean2D-DN6ETTCq.js} +11 -11
  8. package/dist/{booleanFns-Yc3EBxdm.cjs → booleanFns-5dDG0jpA.cjs} +46 -9
  9. package/dist/{booleanFns-BhqXpQoZ.js → booleanFns-C-M6qqvB.js} +46 -9
  10. package/dist/brepjs.cjs +364 -109
  11. package/dist/brepjs.js +433 -177
  12. package/dist/{cast-C107o5ow.cjs → cast-CPNOTNFm.cjs} +3 -3
  13. package/dist/{cast-D0OhP1nV.js → cast-Cerqtxtb.js} +3 -3
  14. package/dist/core/errors.d.ts +7 -0
  15. package/dist/core/errors.d.ts.map +1 -1
  16. package/dist/core.cjs +4 -4
  17. package/dist/core.js +4 -4
  18. package/dist/{cornerFinder-DuStF5jK.cjs → cornerFinder-BQ-_VJx0.cjs} +1 -1
  19. package/dist/{cornerFinder-CPm2baSJ.js → cornerFinder-CC_MunIh.js} +1 -1
  20. package/dist/{curveBuilders-CN72XaIQ.js → curveBuilders-BREwqvuc.js} +3 -3
  21. package/dist/{curveBuilders-Du03_Yyf.cjs → curveBuilders-BkEJ-RVn.cjs} +3 -3
  22. package/dist/curveFns-VMxgfkqw.cjs +177 -0
  23. package/dist/curveFns-ZuQUBZvd.js +178 -0
  24. package/dist/{drawFns-CzBbcoXA.js → drawFns-BbhX1IUq.js} +19 -15
  25. package/dist/{drawFns-CiNxPu6J.cjs → drawFns-CKaHgGSK.cjs} +22 -18
  26. package/dist/{errors-wGhcJMpB.js → errors-CSYOlCCR.js} +10 -1
  27. package/dist/{errors-DK1VAdP4.cjs → errors-D13q2HCk.cjs} +10 -1
  28. package/dist/{faceFns-ub3CugDN.js → faceFns-CfJIbHY3.js} +4 -4
  29. package/dist/{faceFns-D1Sqnlu6.cjs → faceFns-es3GENII.cjs} +4 -4
  30. package/dist/{helpers-Dje6wrKi.cjs → helpers-C0q_FVxq.cjs} +10 -10
  31. package/dist/{helpers-BSQfs538.js → helpers-CmVkMubc.js} +7 -7
  32. package/dist/index.d.ts +3 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/io.cjs +5 -5
  35. package/dist/io.js +5 -5
  36. package/dist/kernel/hullOps.d.ts +22 -0
  37. package/dist/kernel/hullOps.d.ts.map +1 -0
  38. package/dist/kernel/occtAdapter.d.ts +6 -0
  39. package/dist/kernel/occtAdapter.d.ts.map +1 -1
  40. package/dist/kernel/types.d.ts +6 -0
  41. package/dist/kernel/types.d.ts.map +1 -1
  42. package/dist/{loft-PMRx9iMG.cjs → loft-B-UCPW9P.cjs} +5 -5
  43. package/dist/{loft-BHn7GKm8.js → loft-oJq2OD3A.js} +5 -5
  44. package/dist/{measurement-B06hNs89.cjs → measurement-CYmT-C77.cjs} +3 -3
  45. package/dist/{measurement-BfhEneUl.js → measurement-Cf_SoIiR.js} +3 -3
  46. package/dist/measurement.cjs +1 -1
  47. package/dist/measurement.js +1 -1
  48. package/dist/{meshFns-BKSPaPXS.js → meshFns-CqNwW0PO.js} +6 -3
  49. package/dist/{meshFns-CFVxKBlE.cjs → meshFns-DDC_2U81.cjs} +6 -3
  50. package/dist/{occtBoundary-BFAaUtA7.cjs → occtBoundary-CocN2VKx.cjs} +419 -2
  51. package/dist/{occtBoundary-CoXB2xvx.js → occtBoundary-D_gjqgzo.js} +419 -2
  52. package/dist/{operations-CjQHEu1h.js → operations-6hdpuYmY.js} +6 -6
  53. package/dist/{operations-CdGb6IBU.cjs → operations-BQeW_DSM.cjs} +6 -6
  54. package/dist/operations.cjs +2 -2
  55. package/dist/operations.js +2 -2
  56. package/dist/query.cjs +5 -5
  57. package/dist/query.js +6 -6
  58. package/dist/result.cjs +1 -1
  59. package/dist/result.js +1 -1
  60. package/dist/{curveFns-ByeCqutv.cjs → shapeFns-B0zSdO9c.cjs} +98 -177
  61. package/dist/{curveFns-C5gSZ5EY.js → shapeFns-k1YHFwmB.js} +117 -196
  62. package/dist/{shapeTypes-UqVCIO_T.cjs → shapeTypes-BxVxLdiD.cjs} +1 -1
  63. package/dist/{shapeTypes-BU2LKv2S.js → shapeTypes-c-_pgYCx.js} +1 -1
  64. package/dist/sketching.cjs +2 -2
  65. package/dist/sketching.js +2 -2
  66. package/dist/text/textBlueprints.d.ts.map +1 -1
  67. package/dist/topology/booleanFns.d.ts.map +1 -1
  68. package/dist/topology/hullFns.d.ts +16 -0
  69. package/dist/topology/hullFns.d.ts.map +1 -0
  70. package/dist/topology/meshFns.d.ts +1 -0
  71. package/dist/topology/meshFns.d.ts.map +1 -1
  72. package/dist/topology/minkowskiFns.d.ts +20 -0
  73. package/dist/topology/minkowskiFns.d.ts.map +1 -0
  74. package/dist/topology/modifierFns.d.ts.map +1 -1
  75. package/dist/topology/shapeFns.d.ts +30 -0
  76. package/dist/topology/shapeFns.d.ts.map +1 -1
  77. package/dist/{topology-D8Au8q4i.cjs → topology-CycEc6Oe.cjs} +14 -13
  78. package/dist/{topology-BFB3LI_y.js → topology-tMKHJgw2.js} +9 -8
  79. package/dist/topology.cjs +34 -33
  80. package/dist/topology.js +59 -58
  81. package/dist/{vectors-BhfKwL9J.js → vectors-DE0XriuQ.js} +2 -2
  82. package/dist/{vectors-t1XG4LpL.cjs → vectors-DVmHF4zt.cjs} +2 -2
  83. package/dist/vectors.cjs +2 -2
  84. package/dist/vectors.js +2 -2
  85. package/package.json +5 -5
@@ -1,32 +1,8 @@
1
- import { g as getKernel, c as toOcVec, e as makeOcAx1, m as makeOcAx2, b as toOcPnt } from "./occtBoundary-CoXB2xvx.js";
2
- import { c as castShape, g as getShapeKind, p as gcWithScope, d as isEdge, m as isWire } from "./shapeTypes-BU2LKv2S.js";
1
+ import { g as getKernel, c as toOcVec, e as makeOcAx1, m as makeOcAx2, b as toOcPnt } from "./occtBoundary-D_gjqgzo.js";
2
+ import { c as castShape, g as getShapeKind, p as gcWithScope } from "./shapeTypes-c-_pgYCx.js";
3
3
  import { D as DEG2RAD, H as HASH_CODE_MAX } from "./vecOps-ZDdZWbwT.js";
4
- import { i as iterTopo, d as downcast } from "./cast-D0OhP1nV.js";
5
- import { e as err, p as typeCastError, l as ok, u as unwrap } from "./errors-wGhcJMpB.js";
6
- let CURVE_TYPES_MAP = null;
7
- const getCurveTypesMap = (refresh) => {
8
- if (CURVE_TYPES_MAP && !refresh) return CURVE_TYPES_MAP;
9
- const oc = getKernel().oc;
10
- const ga = oc.GeomAbs_CurveType;
11
- CURVE_TYPES_MAP = /* @__PURE__ */ new Map([
12
- [ga.GeomAbs_Line, "LINE"],
13
- [ga.GeomAbs_Circle, "CIRCLE"],
14
- [ga.GeomAbs_Ellipse, "ELLIPSE"],
15
- [ga.GeomAbs_Hyperbola, "HYPERBOLA"],
16
- [ga.GeomAbs_Parabola, "PARABOLA"],
17
- [ga.GeomAbs_BezierCurve, "BEZIER_CURVE"],
18
- [ga.GeomAbs_BSplineCurve, "BSPLINE_CURVE"],
19
- [ga.GeomAbs_OffsetCurve, "OFFSET_CURVE"],
20
- [ga.GeomAbs_OtherCurve, "OTHER_CURVE"]
21
- ]);
22
- return CURVE_TYPES_MAP;
23
- };
24
- const findCurveType = (type) => {
25
- let shapeType = getCurveTypesMap().get(type);
26
- if (!shapeType) shapeType = getCurveTypesMap(true).get(type);
27
- if (!shapeType) return err(typeCastError("UNKNOWN_CURVE_TYPE", "Unknown curve type"));
28
- return ok(shapeType);
29
- };
4
+ import { i as iterTopo, d as downcast } from "./cast-Cerqtxtb.js";
5
+ import { u as unwrap } from "./errors-CSYOlCCR.js";
30
6
  function clone(shape) {
31
7
  return castShape(unwrap(downcast(shape.wrapped)));
32
8
  }
@@ -60,6 +36,7 @@ function translate(shape, v) {
60
36
  trsf.SetTranslation_1(vec);
61
37
  const transformer = new oc.BRepBuilderAPI_Transform_2(shape.wrapped, trsf, true);
62
38
  const result = castShape(transformer.Shape());
39
+ propagateOrigins(transformer, [shape], result);
63
40
  transformer.delete();
64
41
  trsf.delete();
65
42
  vec.delete();
@@ -72,6 +49,7 @@ function rotate(shape, angle, position = [0, 0, 0], direction = [0, 0, 1]) {
72
49
  trsf.SetRotation_1(ax1, angle * DEG2RAD);
73
50
  const transformer = new oc.BRepBuilderAPI_Transform_2(shape.wrapped, trsf, true);
74
51
  const result = castShape(transformer.Shape());
52
+ propagateOrigins(transformer, [shape], result);
75
53
  transformer.delete();
76
54
  trsf.delete();
77
55
  ax1.delete();
@@ -84,6 +62,7 @@ function mirror(shape, planeNormal = [0, 1, 0], planeOrigin = [0, 0, 0]) {
84
62
  trsf.SetMirror_3(ax2);
85
63
  const transformer = new oc.BRepBuilderAPI_Transform_2(shape.wrapped, trsf, true);
86
64
  const result = castShape(transformer.Shape());
65
+ propagateOrigins(transformer, [shape], result);
87
66
  transformer.delete();
88
67
  trsf.delete();
89
68
  ax2.delete();
@@ -96,6 +75,7 @@ function scale(shape, factor, center = [0, 0, 0]) {
96
75
  trsf.SetScale(pnt, factor);
97
76
  const transformer = new oc.BRepBuilderAPI_Transform_2(shape.wrapped, trsf, true);
98
77
  const result = castShape(transformer.Shape());
78
+ propagateOrigins(transformer, [shape], result);
99
79
  transformer.delete();
100
80
  trsf.delete();
101
81
  pnt.delete();
@@ -163,6 +143,7 @@ function applyMatrix(shape, matrix) {
163
143
  );
164
144
  const transformer2 = new oc.BRepBuilderAPI_Transform_2(shape.wrapped, trsf, true);
165
145
  const result2 = castShape(transformer2.Shape());
146
+ propagateOrigins(transformer2, [shape], result2);
166
147
  transformer2.delete();
167
148
  trsf.delete();
168
149
  return result2;
@@ -178,6 +159,7 @@ function applyMatrix(shape, matrix) {
178
159
  xyz.delete();
179
160
  const transformer = new oc.BRepBuilderAPI_GTransform_2(shape.wrapped, gtrsf, true);
180
161
  const result = castShape(transformer.Shape());
162
+ propagateOrigins(transformer, [shape], result);
181
163
  transformer.delete();
182
164
  gtrsf.delete();
183
165
  return result;
@@ -205,6 +187,7 @@ function transformCopy(shape, composed) {
205
187
  const oc = getKernel().oc;
206
188
  const transformer = new oc.BRepBuilderAPI_Transform_2(shape.wrapped, composed.trsf, true);
207
189
  const result = castShape(transformer.Shape());
190
+ propagateOrigins(transformer, [shape], result);
208
191
  transformer.delete();
209
192
  return result;
210
193
  }
@@ -244,6 +227,89 @@ function getWires(shape) {
244
227
  cache.wires = wires;
245
228
  return wires;
246
229
  }
230
+ function setShapeOrigin(shape, origin) {
231
+ const cache = getOrCreateCache(shape);
232
+ const map = /* @__PURE__ */ new Map();
233
+ for (const f of getFaces(shape)) {
234
+ map.set(f.wrapped.HashCode(HASH_CODE_MAX), origin);
235
+ }
236
+ cache.faceOrigins = map;
237
+ }
238
+ function getFaceOrigins(shape) {
239
+ return topoCache.get(shape.wrapped)?.faceOrigins;
240
+ }
241
+ function iterOcList(list, callback) {
242
+ const oc = getKernel().oc;
243
+ const copy = new oc.TopTools_ListOfShape_3(list);
244
+ while (copy.Size() > 0) {
245
+ callback(copy.First_1());
246
+ copy.RemoveFirst();
247
+ }
248
+ copy.delete();
249
+ }
250
+ function propagateOrigins(op, inputs, result) {
251
+ const inputOrigins = [];
252
+ for (const input of inputs) {
253
+ const origins = getFaceOrigins(input);
254
+ if (!origins) continue;
255
+ for (const f of getFaces(input)) {
256
+ const hash = f.wrapped.HashCode(HASH_CODE_MAX);
257
+ const origin = origins.get(hash);
258
+ if (origin !== void 0) {
259
+ inputOrigins.push({ face: f.wrapped, origin });
260
+ }
261
+ }
262
+ }
263
+ if (inputOrigins.length === 0) return;
264
+ const resultMap = /* @__PURE__ */ new Map();
265
+ for (const { face, origin } of inputOrigins) {
266
+ if (op.IsDeleted?.(face)) continue;
267
+ const modifiedList = op.Modified(face);
268
+ if (modifiedList.Size() > 0) {
269
+ iterOcList(modifiedList, (modFace) => {
270
+ resultMap.set(modFace.HashCode(HASH_CODE_MAX), origin);
271
+ });
272
+ } else {
273
+ resultMap.set(face.HashCode(HASH_CODE_MAX), origin);
274
+ }
275
+ const generatedList = op.Generated(face);
276
+ if (generatedList.Size() > 0) {
277
+ iterOcList(generatedList, (genFace) => {
278
+ const hash = genFace.HashCode(HASH_CODE_MAX);
279
+ if (!resultMap.has(hash)) {
280
+ resultMap.set(hash, 0);
281
+ }
282
+ });
283
+ }
284
+ }
285
+ if (resultMap.size > 0) {
286
+ const cache = getOrCreateCache(result);
287
+ cache.faceOrigins = resultMap;
288
+ }
289
+ }
290
+ function propagateOriginsByHash(inputs, result) {
291
+ const lookup = /* @__PURE__ */ new Map();
292
+ for (const input of inputs) {
293
+ const origins = getFaceOrigins(input);
294
+ if (!origins) continue;
295
+ for (const [hash, origin] of origins) {
296
+ lookup.set(hash, origin);
297
+ }
298
+ }
299
+ if (lookup.size === 0) return;
300
+ const resultMap = /* @__PURE__ */ new Map();
301
+ for (const f of getFaces(result)) {
302
+ const hash = f.wrapped.HashCode(HASH_CODE_MAX);
303
+ const origin = lookup.get(hash);
304
+ if (origin !== void 0) {
305
+ resultMap.set(hash, origin);
306
+ }
307
+ }
308
+ if (resultMap.size > 0) {
309
+ const cache = getOrCreateCache(result);
310
+ cache.faceOrigins = resultMap;
311
+ }
312
+ }
247
313
  function getVertices(shape) {
248
314
  return Array.from(iterTopo(shape.wrapped, "vertex")).map(
249
315
  (e) => castShape(unwrap(downcast(e)))
@@ -308,179 +374,34 @@ function vertexPosition(vertex) {
308
374
  pnt.delete();
309
375
  return result;
310
376
  }
311
- function getAdaptor(shape) {
312
- const oc = getKernel().oc;
313
- const st = shape.wrapped.ShapeType();
314
- const e = oc.TopAbs_ShapeEnum;
315
- if (st === e.TopAbs_WIRE) {
316
- return new oc.BRepAdaptor_CompCurve_2(shape.wrapped, false);
317
- }
318
- return new oc.BRepAdaptor_Curve_2(shape.wrapped);
319
- }
320
- function mapParam(adaptor, t) {
321
- const first = Number(adaptor.FirstParameter());
322
- const last = Number(adaptor.LastParameter());
323
- return first + (last - first) * t;
324
- }
325
- function getCurveType(shape) {
326
- const r = gcWithScope();
327
- const adaptor = r(getAdaptor(shape));
328
- const technicalType = adaptor.GetType && adaptor.GetType();
329
- return unwrap(findCurveType(technicalType));
330
- }
331
- function curveStartPoint(shape) {
332
- const r = gcWithScope();
333
- const adaptor = r(getAdaptor(shape));
334
- const pnt = r(adaptor.Value(adaptor.FirstParameter()));
335
- return [pnt.X(), pnt.Y(), pnt.Z()];
336
- }
337
- function curveEndPoint(shape) {
338
- const r = gcWithScope();
339
- const adaptor = r(getAdaptor(shape));
340
- const pnt = r(adaptor.Value(adaptor.LastParameter()));
341
- return [pnt.X(), pnt.Y(), pnt.Z()];
342
- }
343
- function curvePointAt(shape, position = 0.5) {
344
- const r = gcWithScope();
345
- const adaptor = r(getAdaptor(shape));
346
- const pnt = r(adaptor.Value(mapParam(adaptor, position)));
347
- return [pnt.X(), pnt.Y(), pnt.Z()];
348
- }
349
- function curveTangentAt(shape, position = 0.5) {
350
- const oc = getKernel().oc;
351
- const r = gcWithScope();
352
- const adaptor = r(getAdaptor(shape));
353
- const param = mapParam(adaptor, position);
354
- const tmpPnt = r(new oc.gp_Pnt_1());
355
- const tmpVec = r(new oc.gp_Vec_1());
356
- adaptor.D1(param, tmpPnt, tmpVec);
357
- return [tmpVec.X(), tmpVec.Y(), tmpVec.Z()];
358
- }
359
- function curveLength(shape) {
360
- const oc = getKernel().oc;
361
- const r = gcWithScope();
362
- const props = r(new oc.GProp_GProps_1());
363
- oc.BRepGProp.LinearProperties(shape.wrapped, props, true, false);
364
- return props.Mass();
365
- }
366
- function curveIsClosed(shape) {
367
- const r = gcWithScope();
368
- const adaptor = r(getAdaptor(shape));
369
- return adaptor.IsClosed();
370
- }
371
- function curveIsPeriodic(shape) {
372
- const r = gcWithScope();
373
- const adaptor = r(getAdaptor(shape));
374
- return adaptor.IsPeriodic();
375
- }
376
- function curvePeriod(shape) {
377
- const adaptor = getAdaptor(shape);
378
- const result = adaptor.Period();
379
- adaptor.delete();
380
- return result;
381
- }
382
- function getOrientation(shape) {
383
- const oc = getKernel().oc;
384
- const orient = shape.wrapped.Orientation_1();
385
- return orient === oc.TopAbs_Orientation.TopAbs_FORWARD ? "forward" : "backward";
386
- }
387
- function flipOrientation(shape) {
388
- return castShape(shape.wrapped.Reversed());
389
- }
390
- function interpolateCurve(points, options = {}) {
391
- if (points.length < 2) {
392
- return err(typeCastError("INTERPOLATE_MIN_POINTS", "Interpolation requires at least 2 points"));
393
- }
394
- try {
395
- const result = getKernel().interpolatePoints(points, options);
396
- const cast = castShape(result);
397
- if (!isEdge(cast)) {
398
- return err(typeCastError("INTERPOLATE_NOT_EDGE", "Interpolation did not produce an edge"));
399
- }
400
- return ok(cast);
401
- } catch (e) {
402
- return err(
403
- typeCastError(
404
- "INTERPOLATE_FAILED",
405
- `Interpolation failed: ${e instanceof Error ? e.message : String(e)}`
406
- )
407
- );
408
- }
409
- }
410
- function approximateCurve(points, options = {}) {
411
- if (points.length < 2) {
412
- return err(typeCastError("APPROXIMATE_MIN_POINTS", "Approximation requires at least 2 points"));
413
- }
414
- try {
415
- const result = getKernel().approximatePoints(points, options);
416
- const cast = castShape(result);
417
- if (!isEdge(cast)) {
418
- return err(typeCastError("APPROXIMATE_NOT_EDGE", "Approximation did not produce an edge"));
419
- }
420
- return ok(cast);
421
- } catch (e) {
422
- return err(
423
- typeCastError(
424
- "APPROXIMATE_FAILED",
425
- `Approximation failed: ${e instanceof Error ? e.message : String(e)}`
426
- )
427
- );
428
- }
429
- }
430
- function offsetWire2D(wire, offset, kind = "arc") {
431
- const oc = getKernel().oc;
432
- const joinTypes = {
433
- arc: oc.GeomAbs_JoinType.GeomAbs_Arc,
434
- intersection: oc.GeomAbs_JoinType.GeomAbs_Intersection,
435
- tangent: oc.GeomAbs_JoinType.GeomAbs_Tangent
436
- };
437
- const resultShape = getKernel().offsetWire2D(wire.wrapped, offset, joinTypes[kind]);
438
- const wrapped = castShape(resultShape);
439
- if (!isWire(wrapped)) {
440
- wrapped[Symbol.dispose]();
441
- return err(typeCastError("OFFSET_NOT_WIRE", "Offset did not produce a Wire"));
442
- }
443
- return ok(wrapped);
444
- }
445
377
  export {
446
- composeTransforms as A,
447
- curveIsPeriodic as B,
448
- curvePeriod as C,
449
- findCurveType as D,
450
- flipOrientation as E,
451
- getCurveType as F,
452
- getOrientation as G,
453
- interpolateCurve as H,
454
- isEqualShape as I,
455
- iterEdges as J,
456
- iterFaces as K,
457
- iterVertices as L,
458
- iterWires as M,
459
- offsetWire2D as N,
460
- getEdges as a,
461
- applyMatrix as b,
462
- curveIsClosed as c,
463
- clone as d,
464
- describe as e,
465
- isEmpty as f,
466
- getHashCode as g,
467
- simplify as h,
378
+ iterVertices as A,
379
+ iterWires as B,
380
+ setShapeOrigin as C,
381
+ propagateOriginsByHash as a,
382
+ getHashCode as b,
383
+ getFaces as c,
384
+ getVertices as d,
385
+ getEdges as e,
386
+ applyMatrix as f,
387
+ getFaceOrigins as g,
388
+ clone as h,
468
389
  isSameShape as i,
469
- toBREP as j,
470
- transformCopy as k,
471
- getBounds as l,
390
+ describe as j,
391
+ isEmpty as k,
392
+ simplify as l,
472
393
  mirror as m,
473
- getFaces as n,
474
- curveTangentAt as o,
475
- curvePointAt as p,
476
- curveEndPoint as q,
394
+ toBREP as n,
395
+ transformCopy as o,
396
+ propagateOrigins as p,
397
+ getBounds as q,
477
398
  rotate as r,
478
399
  scale as s,
479
400
  translate as t,
480
- curveStartPoint as u,
401
+ getWires as u,
481
402
  vertexPosition as v,
482
- curveLength as w,
483
- getVertices as x,
484
- getWires as y,
485
- approximateCurve as z
403
+ composeTransforms as w,
404
+ isEqualShape as x,
405
+ iterEdges as y,
406
+ iterFaces as z
486
407
  };
@@ -44,7 +44,7 @@ var __callDispose = (stack, error, hasError) => {
44
44
  };
45
45
  return next();
46
46
  };
47
- const occtBoundary = require("./occtBoundary-BFAaUtA7.cjs");
47
+ const occtBoundary = require("./occtBoundary-CocN2VKx.cjs");
48
48
  const globalWithRegistry = globalThis;
49
49
  if (!globalWithRegistry.FinalizationRegistry) {
50
50
  console.warn("brepjs: FinalizationRegistry unavailable — garbage collection will not work");
@@ -43,7 +43,7 @@ var __callDispose = (stack, error, hasError) => {
43
43
  };
44
44
  return next();
45
45
  };
46
- import { g as getKernel } from "./occtBoundary-CoXB2xvx.js";
46
+ import { g as getKernel } from "./occtBoundary-D_gjqgzo.js";
47
47
  const globalWithRegistry = globalThis;
48
48
  if (!globalWithRegistry.FinalizationRegistry) {
49
49
  console.warn("brepjs: FinalizationRegistry unavailable — garbage collection will not work");
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const drawFns = require("./drawFns-CiNxPu6J.cjs");
4
- const boolean2D = require("./boolean2D-B5axNhjN.cjs");
3
+ const drawFns = require("./drawFns-CKaHgGSK.cjs");
4
+ const boolean2D = require("./boolean2D-CfEbRMPF.cjs");
5
5
  exports.CompoundSketch = drawFns.CompoundSketch;
6
6
  exports.Drawing = drawFns.Drawing;
7
7
  exports.DrawingPen = drawFns.DrawingPen;
package/dist/sketching.js CHANGED
@@ -1,5 +1,5 @@
1
- import { C, D, a, S, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, T, U, V, W } from "./drawFns-CzBbcoXA.js";
2
- import { B as B2, a as a2, F as F2, S as S2 } from "./boolean2D-vw76Gayn.js";
1
+ import { C, D, a, S, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, T, U, V, W } from "./drawFns-BbhX1IUq.js";
2
+ import { B as B2, a as a2, F as F2, S as S2 } from "./boolean2D-DN6ETTCq.js";
3
3
  export {
4
4
  B2 as BaseSketcher2d,
5
5
  a2 as BlueprintSketcher,
@@ -1 +1 @@
1
- {"version":3,"file":"textBlueprints.d.ts","sourceRoot":"","sources":["../../src/text/textBlueprints.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC;AAK7D,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAQhD;;;;;;;;;;;GAWG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,GAAG,WAAW,EAC9B,UAAU,SAAY,EACtB,KAAK,UAAQ,GAEZ,OAAO,CAAC,GAAG,CAAC,CAmCd;AAED;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,GAAI,mBAAsB,KAAG,GAEhD,CAAC;AA8CF;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,EAAE,MAAU,EAAE,MAAU,EAAE,QAAa,EAAE,UAAsB,EAAE;;;;;CAAK,GACrE,UAAU,CASZ;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,EACD,WAAW,GAAE;IACX,KAAK,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAC1B,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CACzB,GACL,QAAQ,CAWV"}
1
+ {"version":3,"file":"textBlueprints.d.ts","sourceRoot":"","sources":["../../src/text/textBlueprints.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC;AAK7D,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAQhD;;;;;;;;;;;GAWG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,GAAG,WAAW,EAC9B,UAAU,SAAY,EACtB,KAAK,UAAQ,GAEZ,OAAO,CAAC,GAAG,CAAC,CAsCd;AAED;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,GAAI,mBAAsB,KAAG,GAEhD,CAAC;AA8CF;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,EAAE,MAAU,EAAE,MAAU,EAAE,QAAa,EAAE,UAAsB,EAAE;;;;;CAAK,GACrE,UAAU,CASZ;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,EACD,WAAW,GAAE;IACX,KAAK,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAC1B,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CACzB,GACL,QAAQ,CAWV"}
@@ -1 +1 @@
1
- {"version":3,"file":"booleanFns.d.ts","sourceRoot":"","sources":["../../src/topology/booleanFns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAG/D,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,mBAAmB,CAAC;AAGhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAoBxD,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;IAClD,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sHAAsH;IACtH,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjC,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA6CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAClB,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,EAAE,YAAqB,EAAE,QAAgB,EAAE,MAAM,EAAE,GAAE,cAAmB,GACvE,MAAM,CAAC,OAAO,CAAC,CAcjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,GAAG,CACjB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,EAAE,YAAqB,EAAE,QAAgB,EAAE,MAAM,EAAE,GAAE,cAAmB,GACvE,MAAM,CAAC,OAAO,CAAC,CAcjB;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,EAAE,QAAgB,EAAE,MAAM,EAAE,GAAE,cAAmB,GAChD,MAAM,CAAC,OAAO,CAAC,CAajB;AA4CD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,OAAO,EAAE,EACjB,EAAE,YAAqB,EAAE,QAAgB,EAAE,QAAmB,EAAE,MAAM,EAAE,GAAE,cAAmB,GAC5F,MAAM,CAAC,OAAO,CAAC,CAyBjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CACpB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,OAAO,EAAE,EAChB,EAAE,YAAqB,EAAE,QAAgB,EAAE,MAAM,EAAE,GAAE,cAAmB,GACvE,MAAM,CAAC,OAAO,CAAC,CAsBjB;AA4DD;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,UAAU,EACjB,EAAE,aAAoB,EAAE,SAAe,EAAE,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9F,MAAM,CAAC,QAAQ,CAAC,CAyBlB;AAMD;;;GAGG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAiC1E;AAMD;;;GAGG;AACH,wBAAgB,KAAK,CACnB,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5D,MAAM,CAAC,QAAQ,EAAE,CAAC,CAQpB"}
1
+ {"version":3,"file":"booleanFns.d.ts","sourceRoot":"","sources":["../../src/topology/booleanFns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAG/D,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,mBAAmB,CAAC;AAGhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAqBxD,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;IAClD,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sHAAsH;IACtH,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjC,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA6CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAClB,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,EAAE,YAAqB,EAAE,QAAgB,EAAE,MAAM,EAAE,GAAE,cAAmB,GACvE,MAAM,CAAC,OAAO,CAAC,CAsBjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,GAAG,CACjB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,EAAE,YAAqB,EAAE,QAAgB,EAAE,MAAM,EAAE,GAAE,cAAmB,GACvE,MAAM,CAAC,OAAO,CAAC,CAkBjB;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,EAAE,QAAgB,EAAE,MAAM,EAAE,GAAE,cAAmB,GAChD,MAAM,CAAC,OAAO,CAAC,CAqBjB;AA4CD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,OAAO,EAAE,EACjB,EAAE,YAAqB,EAAE,QAAgB,EAAE,QAAmB,EAAE,MAAM,EAAE,GAAE,cAAmB,GAC5F,MAAM,CAAC,OAAO,CAAC,CAiCjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CACpB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,OAAO,EAAE,EAChB,EAAE,YAAqB,EAAE,QAAgB,EAAE,MAAM,EAAE,GAAE,cAAmB,GACvE,MAAM,CAAC,OAAO,CAAC,CA8BjB;AA4DD;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,UAAU,EACjB,EAAE,aAAoB,EAAE,SAAe,EAAE,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9F,MAAM,CAAC,QAAQ,CAAC,CAyBlB;AAMD;;;GAGG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAiC1E;AAMD;;;GAGG;AACH,wBAAgB,KAAK,CACnB,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5D,MAAM,CAAC,QAAQ,EAAE,CAAC,CAQpB"}
@@ -0,0 +1,16 @@
1
+ import { Solid, AnyShape } from '../core/shapeTypes.js';
2
+ import { Result } from '../core/result.js';
3
+ export interface HullOptions {
4
+ /** Meshing / sewing tolerance (default: 0.1). */
5
+ tolerance?: number;
6
+ }
7
+ /**
8
+ * Compute the 3D convex hull of one or more shapes.
9
+ *
10
+ * Returns the tightest convex solid enclosing all input geometry.
11
+ *
12
+ * @param shapes - One or more 3D shapes to hull.
13
+ * @param options - Optional tolerance settings.
14
+ */
15
+ export declare function hull(shapes: ReadonlyArray<AnyShape>, options?: HullOptions): Result<Solid>;
16
+ //# sourceMappingURL=hullFns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hullFns.d.ts","sourceRoot":"","sources":["../../src/topology/hullFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,mBAAmB,CAAC;AAOhE,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoBD;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CA2C9F"}
@@ -15,6 +15,7 @@ export interface ShapeMesh {
15
15
  start: number;
16
16
  count: number;
17
17
  faceId: number;
18
+ origin: number;
18
19
  }[];
19
20
  }
20
21
  /** Line segment mesh data for edge rendering (wireframe). */
@@ -1 +1 @@
1
- {"version":3,"file":"meshFns.d.ts","sourceRoot":"","sources":["../../src/topology/meshFns.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,mBAAmB,CAAC;AAuCzD,0EAA0E;AAC1E,MAAM,WAAW,SAAS;IACxB,gDAAgD;IAChD,SAAS,EAAE,WAAW,CAAC;IACvB,0DAA0D;IAC1D,QAAQ,EAAE,YAAY,CAAC;IACvB,wDAAwD;IACxD,OAAO,EAAE,YAAY,CAAC;IACtB,8EAA8E;IAC9E,GAAG,EAAE,YAAY,CAAC;IAClB,mEAAmE;IACnE,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAChE;AAED,6DAA6D;AAC7D,MAAM,WAAW,QAAQ;IACvB,uFAAuF;IACvF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,4EAA4E;IAC5E,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAChE;AAED,6CAA6C;AAC7C,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sGAAsG;IACtG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAClB,KAAK,EAAE,QAAQ,EACf,EACE,SAAgB,EAChB,gBAAsB,EACtB,WAAmB,EACnB,UAAkB,EAClB,KAAY,EACZ,MAAM,GACP,GAAE,WAAW,GAAG;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACrF,SAAS,CAmCX;AAMD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,QAAQ,EACf,EAAE,SAAgB,EAAE,gBAAsB,EAAE,KAAY,EAAE,GAAE,WAAW,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACjG,QAAQ,CAyBV;AAMD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CA4BxD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,QAAQ,EACf,EACE,SAAgB,EAChB,gBAAsB,EACtB,MAAc,GACf,GAAE,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACzC,MAAM,CAAC,IAAI,CAAC,CA0Bd;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAwBxD"}
1
+ {"version":3,"file":"meshFns.d.ts","sourceRoot":"","sources":["../../src/topology/meshFns.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,mBAAmB,CAAC;AAwCzD,0EAA0E;AAC1E,MAAM,WAAW,SAAS;IACxB,gDAAgD;IAChD,SAAS,EAAE,WAAW,CAAC;IACvB,0DAA0D;IAC1D,QAAQ,EAAE,YAAY,CAAC;IACvB,wDAAwD;IACxD,OAAO,EAAE,YAAY,CAAC;IACtB,8EAA8E;IAC9E,GAAG,EAAE,YAAY,CAAC;IAClB,mEAAmE;IACnE,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAChF;AAED,6DAA6D;AAC7D,MAAM,WAAW,QAAQ;IACvB,uFAAuF;IACvF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,4EAA4E;IAC5E,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAChE;AAED,6CAA6C;AAC7C,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sGAAsG;IACtG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAClB,KAAK,EAAE,QAAQ,EACf,EACE,SAAgB,EAChB,gBAAsB,EACtB,WAAmB,EACnB,UAAkB,EAClB,KAAY,EACZ,MAAM,GACP,GAAE,WAAW,GAAG;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACrF,SAAS,CAqCX;AAMD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,QAAQ,EACf,EAAE,SAAgB,EAAE,gBAAsB,EAAE,KAAY,EAAE,GAAE,WAAW,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACjG,QAAQ,CAyBV;AAMD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CA4BxD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,QAAQ,EACf,EACE,SAAgB,EAChB,gBAAsB,EACtB,MAAc,GACf,GAAE,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACzC,MAAM,CAAC,IAAI,CAAC,CA0Bd;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAwBxD"}
@@ -0,0 +1,20 @@
1
+ import { Shape3D, Solid } from '../core/shapeTypes.js';
2
+ import { Result } from '../core/result.js';
3
+ /** Options for the minkowski sum operation. */
4
+ export interface MinkowskiOptions {
5
+ /** Tolerance for geometric operations (default: 1e-6). */
6
+ tolerance?: number;
7
+ }
8
+ /**
9
+ * Approximate the Minkowski sum of two 3D shapes.
10
+ *
11
+ * When the tool is a sphere, uses the fast offset-shell path.
12
+ * Otherwise, uses vertex placement + edge sweep + boolean fuse.
13
+ *
14
+ * @param shape - The base shape.
15
+ * @param tool - The tool shape (structuring element).
16
+ * @param options - Operation options.
17
+ * @returns Ok with the resulting solid, or Err on failure.
18
+ */
19
+ export declare function minkowski(shape: Shape3D, tool: Shape3D, options?: MinkowskiOptions): Result<Solid>;
20
+ //# sourceMappingURL=minkowskiFns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minkowskiFns.d.ts","sourceRoot":"","sources":["../../src/topology/minkowskiFns.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAQ,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,mBAAmB,CAAC;AAQzD,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwJD;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,gBAAqB,GAC7B,MAAM,CAAC,KAAK,CAAC,CA4Bf"}
@@ -1 +1 @@
1
- {"version":3,"file":"modifierFns.d.ts","sourceRoot":"","sources":["../../src/topology/modifierFns.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE/E,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,mBAAmB,CAAC;AAmBhE;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAQ7E;AAMD;;;;;;GAMG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,SAAS,EACtC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GACrF,MAAM,CAAC,OAAO,CAAC,CAwEjB;AAMD;;;;;;GAMG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,SAAS,EACtC,QAAQ,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GACvF,MAAM,CAAC,OAAO,CAAC,CAgEjB;AAMD;;;;;;;GAOG;AACH,wBAAgB,KAAK,CACnB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,EAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,SAAO,GACf,MAAM,CAAC,OAAO,CAAC,CAiCjB;AAMD;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAY1F"}
1
+ {"version":3,"file":"modifierFns.d.ts","sourceRoot":"","sources":["../../src/topology/modifierFns.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE/E,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,mBAAmB,CAAC;AAmBhE;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAoB7E;AAMD;;;;;;GAMG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,SAAS,EACtC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GACrF,MAAM,CAAC,OAAO,CAAC,CAyEjB;AAMD;;;;;;GAMG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,SAAS,EACtC,QAAQ,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GACvF,MAAM,CAAC,OAAO,CAAC,CAmGjB;AAMD;;;;;;;GAOG;AACH,wBAAgB,KAAK,CACnB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,EAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,SAAO,GACf,MAAM,CAAC,OAAO,CAAC,CAiDjB;AAMD;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAmC1F"}
@@ -62,6 +62,35 @@ export declare function getEdges(shape: AnyShape): Edge[];
62
62
  export declare function getFaces(shape: AnyShape): Face[];
63
63
  /** Get all wires of a shape as branded Wire handles. Results are cached per shape. */
64
64
  export declare function getWires(shape: AnyShape): Wire[];
65
+ /**
66
+ * Tag all faces of a shape with an opaque integer origin.
67
+ * Consumers assign meaning (e.g., source line number).
68
+ */
69
+ export declare function setShapeOrigin(shape: AnyShape, origin: number): void;
70
+ /**
71
+ * Get the face origin map for a shape (faceHash → originTag).
72
+ * Returns undefined if no origins have been set or propagated.
73
+ */
74
+ export declare function getFaceOrigins(shape: AnyShape): Map<number, number> | undefined;
75
+ type OcMakeShapeLike = {
76
+ Modified(s: any): any;
77
+ Generated(s: any): any;
78
+ IsDeleted?(s: any): boolean;
79
+ };
80
+ /**
81
+ * Propagate face origins from input shapes to a result shape
82
+ * using an OCCT operation's Modified/Generated history.
83
+ *
84
+ * @param op - OCCT operation with Modified/Generated methods (alive, not yet deleted)
85
+ * @param inputs - Source shapes whose face origins should propagate
86
+ * @param result - The result shape to populate origins on
87
+ */
88
+ export declare function propagateOrigins(op: OcMakeShapeLike, inputs: AnyShape[], result: AnyShape): void;
89
+ /**
90
+ * Fallback origin propagation when no OCCT op object is available.
91
+ * Matches result faces to input faces by hash code (works for unmodified faces only).
92
+ */
93
+ export declare function propagateOriginsByHash(inputs: AnyShape[], result: AnyShape): void;
65
94
  /** Get all vertices of a shape as branded Vertex handles. */
66
95
  export declare function getVertices(shape: AnyShape): Vertex[];
67
96
  /** Lazily iterate edges of a shape, yielding branded Edge handles one at a time. */
@@ -97,4 +126,5 @@ export interface ShapeDescription {
97
126
  export declare function describe(shape: AnyShape): ShapeDescription;
98
127
  /** Get the position of a vertex as a Vec3 tuple. */
99
128
  export declare function vertexPosition(vertex: Vertex): Vec3;
129
+ export {};
100
130
  //# sourceMappingURL=shapeFns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shapeFns.d.ts","sourceRoot":"","sources":["../../src/topology/shapeFns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shapeFns.d.ts","sourceRoot":"","sources":["../../src/topology/shapeFns.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
1
  "use strict";
2
- const curveFns = require("./curveFns-ByeCqutv.cjs");
3
- require("./booleanFns-Yc3EBxdm.cjs");
4
- const occtBoundary = require("./occtBoundary-BFAaUtA7.cjs");
5
- const shapeTypes = require("./shapeTypes-UqVCIO_T.cjs");
6
- const cast = require("./cast-C107o5ow.cjs");
7
- const errors = require("./errors-DK1VAdP4.cjs");
8
- require("./faceFns-D1Sqnlu6.cjs");
2
+ const shapeFns = require("./shapeFns-B0zSdO9c.cjs");
3
+ require("./booleanFns-5dDG0jpA.cjs");
4
+ const occtBoundary = require("./occtBoundary-CocN2VKx.cjs");
5
+ const shapeTypes = require("./shapeTypes-BxVxLdiD.cjs");
6
+ const cast = require("./cast-CPNOTNFm.cjs");
7
+ const errors = require("./errors-D13q2HCk.cjs");
8
+ require("./curveFns-VMxgfkqw.cjs");
9
+ require("./faceFns-es3GENII.cjs");
9
10
  const vecOps = require("./vecOps-CjRL1jau.cjs");
10
- require("./meshFns-CFVxKBlE.cjs");
11
+ require("./meshFns-DDC_2U81.cjs");
11
12
  function toBufferGeometryData(mesh) {
12
13
  return {
13
14
  position: mesh.vertices,
@@ -333,8 +334,8 @@ function autoHeal(shape, options) {
333
334
  });
334
335
  }
335
336
  steps.push("Shape invalid — applying shape-level healing");
336
- const wiresBefore = curveFns.getWires(shape).length;
337
- const facesBefore = curveFns.getFaces(shape).length;
337
+ const wiresBefore = shapeFns.getWires(shape).length;
338
+ const facesBefore = shapeFns.getFaces(shape).length;
338
339
  let current = shape;
339
340
  let solidHealed = false;
340
341
  if (sewTolerance !== void 0) {
@@ -355,7 +356,7 @@ function autoHeal(shape, options) {
355
356
  }
356
357
  }
357
358
  if (fixSelfIntersection && fixWires) {
358
- const wires = curveFns.getWires(current);
359
+ const wires = shapeFns.getWires(current);
359
360
  let fixCount = 0;
360
361
  for (const wire of wires) {
361
362
  try {
@@ -404,8 +405,8 @@ function autoHeal(shape, options) {
404
405
  detail: "skipped by options"
405
406
  });
406
407
  }
407
- const wiresAfter = curveFns.getWires(current).length;
408
- const facesAfter = curveFns.getFaces(current).length;
408
+ const wiresAfter = shapeFns.getWires(current).length;
409
+ const facesAfter = shapeFns.getFaces(current).length;
409
410
  const wiresHealed = Math.abs(wiresAfter - wiresBefore);
410
411
  const facesHealed = Math.abs(facesAfter - facesBefore);
411
412
  if (wiresHealed > 0) steps.push(`Wire count changed by ${wiresHealed}`);
@@ -1,12 +1,13 @@
1
- import { y as getWires, n as getFaces } from "./curveFns-C5gSZ5EY.js";
2
- import "./booleanFns-BhqXpQoZ.js";
3
- import { g as getKernel } from "./occtBoundary-CoXB2xvx.js";
4
- import { c as castShape, h as isShape3D, k as isSolid, e as isFace, m as isWire } from "./shapeTypes-BU2LKv2S.js";
5
- import { d as downcast } from "./cast-D0OhP1nV.js";
6
- import { e as err, x as validationError, o as occtError, d as isErr, p as typeCastError, l as ok, u as unwrap, g as isOk, B as BrepErrorCode } from "./errors-wGhcJMpB.js";
7
- import "./faceFns-ub3CugDN.js";
1
+ import { u as getWires, c as getFaces } from "./shapeFns-k1YHFwmB.js";
2
+ import "./booleanFns-C-M6qqvB.js";
3
+ import { g as getKernel } from "./occtBoundary-D_gjqgzo.js";
4
+ import { c as castShape, h as isShape3D, k as isSolid, e as isFace, m as isWire } from "./shapeTypes-c-_pgYCx.js";
5
+ import { d as downcast } from "./cast-Cerqtxtb.js";
6
+ import { e as err, x as validationError, o as occtError, d as isErr, p as typeCastError, l as ok, u as unwrap, g as isOk, B as BrepErrorCode } from "./errors-CSYOlCCR.js";
7
+ import "./curveFns-ZuQUBZvd.js";
8
+ import "./faceFns-CfJIbHY3.js";
8
9
  import { H as HASH_CODE_MAX } from "./vecOps-ZDdZWbwT.js";
9
- import "./meshFns-BKSPaPXS.js";
10
+ import "./meshFns-CqNwW0PO.js";
10
11
  function toBufferGeometryData(mesh) {
11
12
  return {
12
13
  position: mesh.vertices,