brepjs 8.2.0 → 8.3.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 (45) hide show
  1. package/dist/2d.cjs +2 -2
  2. package/dist/2d.js +3 -3
  3. package/dist/{Blueprint-D_luVeES.js → Blueprint-CdVaHDSx.js} +3 -2
  4. package/dist/{Blueprint-CTAwjJMN.cjs → Blueprint-a3ukJMG4.cjs} +4 -3
  5. package/dist/{boolean2D-vw76Gayn.js → boolean2D-DzA0STqC.js} +3 -3
  6. package/dist/{boolean2D-B5axNhjN.cjs → boolean2D-pvPIs21j.cjs} +3 -3
  7. package/dist/{booleanFns-BhqXpQoZ.js → booleanFns-BcQUqjUu.js} +42 -5
  8. package/dist/{booleanFns-Yc3EBxdm.cjs → booleanFns-Cd414V3l.cjs} +42 -5
  9. package/dist/brepjs.cjs +189 -100
  10. package/dist/brepjs.js +255 -165
  11. package/dist/{cornerFinder-DuStF5jK.cjs → cornerFinder-BdKtobgb.cjs} +1 -1
  12. package/dist/{cornerFinder-CPm2baSJ.js → cornerFinder-DvPiz-VR.js} +1 -1
  13. package/dist/curveFns-B5EQsSwv.cjs +177 -0
  14. package/dist/curveFns-CyHyk29c.js +178 -0
  15. package/dist/{drawFns-CzBbcoXA.js → drawFns-CAAE4Z88.js} +6 -5
  16. package/dist/{drawFns-CiNxPu6J.cjs → drawFns-Mr2pghU8.cjs} +9 -8
  17. package/dist/{helpers-Dje6wrKi.cjs → helpers-CP2KrBZl.cjs} +4 -4
  18. package/dist/{helpers-BSQfs538.js → helpers-r_e-u1JM.js} +1 -1
  19. package/dist/index.d.ts +1 -1
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/io.cjs +2 -2
  22. package/dist/io.js +2 -2
  23. package/dist/{meshFns-BKSPaPXS.js → meshFns-BEvGVcym.js} +4 -1
  24. package/dist/{meshFns-CFVxKBlE.cjs → meshFns-CJV_k_EQ.cjs} +4 -1
  25. package/dist/{operations-CjQHEu1h.js → operations-B314mytX.js} +1 -1
  26. package/dist/{operations-CdGb6IBU.cjs → operations-CYGNxn5D.cjs} +1 -1
  27. package/dist/operations.cjs +1 -1
  28. package/dist/operations.js +1 -1
  29. package/dist/query.cjs +3 -3
  30. package/dist/query.js +4 -4
  31. package/dist/{curveFns-C5gSZ5EY.js → shapeFns-CWd_ASDV.js} +115 -194
  32. package/dist/{curveFns-ByeCqutv.cjs → shapeFns-Z_ScEjmn.cjs} +94 -173
  33. package/dist/sketching.cjs +2 -2
  34. package/dist/sketching.js +2 -2
  35. package/dist/topology/booleanFns.d.ts.map +1 -1
  36. package/dist/topology/meshFns.d.ts +1 -0
  37. package/dist/topology/meshFns.d.ts.map +1 -1
  38. package/dist/topology/modifierFns.d.ts.map +1 -1
  39. package/dist/topology/shapeFns.d.ts +30 -0
  40. package/dist/topology/shapeFns.d.ts.map +1 -1
  41. package/dist/{topology-D8Au8q4i.cjs → topology-A7-jUtHB.cjs} +9 -8
  42. package/dist/{topology-BFB3LI_y.js → topology-BupialMm.js} +4 -3
  43. package/dist/topology.cjs +32 -31
  44. package/dist/topology.js +57 -56
  45. package/package.json +1 -1
@@ -4,30 +4,6 @@ const shapeTypes = require("./shapeTypes-UqVCIO_T.cjs");
4
4
  const vecOps = require("./vecOps-CjRL1jau.cjs");
5
5
  const cast = require("./cast-C107o5ow.cjs");
6
6
  const errors = require("./errors-DK1VAdP4.cjs");
7
- let CURVE_TYPES_MAP = null;
8
- const getCurveTypesMap = (refresh) => {
9
- if (CURVE_TYPES_MAP && !refresh) return CURVE_TYPES_MAP;
10
- const oc = occtBoundary.getKernel().oc;
11
- const ga = oc.GeomAbs_CurveType;
12
- CURVE_TYPES_MAP = /* @__PURE__ */ new Map([
13
- [ga.GeomAbs_Line, "LINE"],
14
- [ga.GeomAbs_Circle, "CIRCLE"],
15
- [ga.GeomAbs_Ellipse, "ELLIPSE"],
16
- [ga.GeomAbs_Hyperbola, "HYPERBOLA"],
17
- [ga.GeomAbs_Parabola, "PARABOLA"],
18
- [ga.GeomAbs_BezierCurve, "BEZIER_CURVE"],
19
- [ga.GeomAbs_BSplineCurve, "BSPLINE_CURVE"],
20
- [ga.GeomAbs_OffsetCurve, "OFFSET_CURVE"],
21
- [ga.GeomAbs_OtherCurve, "OTHER_CURVE"]
22
- ]);
23
- return CURVE_TYPES_MAP;
24
- };
25
- const findCurveType = (type) => {
26
- let shapeType = getCurveTypesMap().get(type);
27
- if (!shapeType) shapeType = getCurveTypesMap(true).get(type);
28
- if (!shapeType) return errors.err(errors.typeCastError("UNKNOWN_CURVE_TYPE", "Unknown curve type"));
29
- return errors.ok(shapeType);
30
- };
31
7
  function clone(shape) {
32
8
  return shapeTypes.castShape(errors.unwrap(cast.downcast(shape.wrapped)));
33
9
  }
@@ -61,6 +37,7 @@ function translate(shape, v) {
61
37
  trsf.SetTranslation_1(vec);
62
38
  const transformer = new oc.BRepBuilderAPI_Transform_2(shape.wrapped, trsf, true);
63
39
  const result = shapeTypes.castShape(transformer.Shape());
40
+ propagateOrigins(transformer, [shape], result);
64
41
  transformer.delete();
65
42
  trsf.delete();
66
43
  vec.delete();
@@ -73,6 +50,7 @@ function rotate(shape, angle, position = [0, 0, 0], direction = [0, 0, 1]) {
73
50
  trsf.SetRotation_1(ax1, angle * vecOps.DEG2RAD);
74
51
  const transformer = new oc.BRepBuilderAPI_Transform_2(shape.wrapped, trsf, true);
75
52
  const result = shapeTypes.castShape(transformer.Shape());
53
+ propagateOrigins(transformer, [shape], result);
76
54
  transformer.delete();
77
55
  trsf.delete();
78
56
  ax1.delete();
@@ -85,6 +63,7 @@ function mirror(shape, planeNormal = [0, 1, 0], planeOrigin = [0, 0, 0]) {
85
63
  trsf.SetMirror_3(ax2);
86
64
  const transformer = new oc.BRepBuilderAPI_Transform_2(shape.wrapped, trsf, true);
87
65
  const result = shapeTypes.castShape(transformer.Shape());
66
+ propagateOrigins(transformer, [shape], result);
88
67
  transformer.delete();
89
68
  trsf.delete();
90
69
  ax2.delete();
@@ -97,6 +76,7 @@ function scale(shape, factor, center = [0, 0, 0]) {
97
76
  trsf.SetScale(pnt, factor);
98
77
  const transformer = new oc.BRepBuilderAPI_Transform_2(shape.wrapped, trsf, true);
99
78
  const result = shapeTypes.castShape(transformer.Shape());
79
+ propagateOrigins(transformer, [shape], result);
100
80
  transformer.delete();
101
81
  trsf.delete();
102
82
  pnt.delete();
@@ -164,6 +144,7 @@ function applyMatrix(shape, matrix) {
164
144
  );
165
145
  const transformer2 = new oc.BRepBuilderAPI_Transform_2(shape.wrapped, trsf, true);
166
146
  const result2 = shapeTypes.castShape(transformer2.Shape());
147
+ propagateOrigins(transformer2, [shape], result2);
167
148
  transformer2.delete();
168
149
  trsf.delete();
169
150
  return result2;
@@ -179,6 +160,7 @@ function applyMatrix(shape, matrix) {
179
160
  xyz.delete();
180
161
  const transformer = new oc.BRepBuilderAPI_GTransform_2(shape.wrapped, gtrsf, true);
181
162
  const result = shapeTypes.castShape(transformer.Shape());
163
+ propagateOrigins(transformer, [shape], result);
182
164
  transformer.delete();
183
165
  gtrsf.delete();
184
166
  return result;
@@ -206,6 +188,7 @@ function transformCopy(shape, composed) {
206
188
  const oc = occtBoundary.getKernel().oc;
207
189
  const transformer = new oc.BRepBuilderAPI_Transform_2(shape.wrapped, composed.trsf, true);
208
190
  const result = shapeTypes.castShape(transformer.Shape());
191
+ propagateOrigins(transformer, [shape], result);
209
192
  transformer.delete();
210
193
  return result;
211
194
  }
@@ -245,6 +228,89 @@ function getWires(shape) {
245
228
  cache.wires = wires;
246
229
  return wires;
247
230
  }
231
+ function setShapeOrigin(shape, origin) {
232
+ const cache = getOrCreateCache(shape);
233
+ const map = /* @__PURE__ */ new Map();
234
+ for (const f of getFaces(shape)) {
235
+ map.set(f.wrapped.HashCode(vecOps.HASH_CODE_MAX), origin);
236
+ }
237
+ cache.faceOrigins = map;
238
+ }
239
+ function getFaceOrigins(shape) {
240
+ return topoCache.get(shape.wrapped)?.faceOrigins;
241
+ }
242
+ function iterOcList(list, callback) {
243
+ const oc = occtBoundary.getKernel().oc;
244
+ const copy = new oc.TopTools_ListOfShape_3(list);
245
+ while (copy.Size() > 0) {
246
+ callback(copy.First_1());
247
+ copy.RemoveFirst();
248
+ }
249
+ copy.delete();
250
+ }
251
+ function propagateOrigins(op, inputs, result) {
252
+ const inputOrigins = [];
253
+ for (const input of inputs) {
254
+ const origins = getFaceOrigins(input);
255
+ if (!origins) continue;
256
+ for (const f of getFaces(input)) {
257
+ const hash = f.wrapped.HashCode(vecOps.HASH_CODE_MAX);
258
+ const origin = origins.get(hash);
259
+ if (origin !== void 0) {
260
+ inputOrigins.push({ face: f.wrapped, origin });
261
+ }
262
+ }
263
+ }
264
+ if (inputOrigins.length === 0) return;
265
+ const resultMap = /* @__PURE__ */ new Map();
266
+ for (const { face, origin } of inputOrigins) {
267
+ if (op.IsDeleted?.(face)) continue;
268
+ const modifiedList = op.Modified(face);
269
+ if (modifiedList.Size() > 0) {
270
+ iterOcList(modifiedList, (modFace) => {
271
+ resultMap.set(modFace.HashCode(vecOps.HASH_CODE_MAX), origin);
272
+ });
273
+ } else {
274
+ resultMap.set(face.HashCode(vecOps.HASH_CODE_MAX), origin);
275
+ }
276
+ const generatedList = op.Generated(face);
277
+ if (generatedList.Size() > 0) {
278
+ iterOcList(generatedList, (genFace) => {
279
+ const hash = genFace.HashCode(vecOps.HASH_CODE_MAX);
280
+ if (!resultMap.has(hash)) {
281
+ resultMap.set(hash, 0);
282
+ }
283
+ });
284
+ }
285
+ }
286
+ if (resultMap.size > 0) {
287
+ const cache = getOrCreateCache(result);
288
+ cache.faceOrigins = resultMap;
289
+ }
290
+ }
291
+ function propagateOriginsByHash(inputs, result) {
292
+ const lookup = /* @__PURE__ */ new Map();
293
+ for (const input of inputs) {
294
+ const origins = getFaceOrigins(input);
295
+ if (!origins) continue;
296
+ for (const [hash, origin] of origins) {
297
+ lookup.set(hash, origin);
298
+ }
299
+ }
300
+ if (lookup.size === 0) return;
301
+ const resultMap = /* @__PURE__ */ new Map();
302
+ for (const f of getFaces(result)) {
303
+ const hash = f.wrapped.HashCode(vecOps.HASH_CODE_MAX);
304
+ const origin = lookup.get(hash);
305
+ if (origin !== void 0) {
306
+ resultMap.set(hash, origin);
307
+ }
308
+ }
309
+ if (resultMap.size > 0) {
310
+ const cache = getOrCreateCache(result);
311
+ cache.faceOrigins = resultMap;
312
+ }
313
+ }
248
314
  function getVertices(shape) {
249
315
  return Array.from(cast.iterTopo(shape.wrapped, "vertex")).map(
250
316
  (e) => shapeTypes.castShape(errors.unwrap(cast.downcast(e)))
@@ -309,164 +375,17 @@ function vertexPosition(vertex) {
309
375
  pnt.delete();
310
376
  return result;
311
377
  }
312
- function getAdaptor(shape) {
313
- const oc = occtBoundary.getKernel().oc;
314
- const st = shape.wrapped.ShapeType();
315
- const e = oc.TopAbs_ShapeEnum;
316
- if (st === e.TopAbs_WIRE) {
317
- return new oc.BRepAdaptor_CompCurve_2(shape.wrapped, false);
318
- }
319
- return new oc.BRepAdaptor_Curve_2(shape.wrapped);
320
- }
321
- function mapParam(adaptor, t) {
322
- const first = Number(adaptor.FirstParameter());
323
- const last = Number(adaptor.LastParameter());
324
- return first + (last - first) * t;
325
- }
326
- function getCurveType(shape) {
327
- const r = shapeTypes.gcWithScope();
328
- const adaptor = r(getAdaptor(shape));
329
- const technicalType = adaptor.GetType && adaptor.GetType();
330
- return errors.unwrap(findCurveType(technicalType));
331
- }
332
- function curveStartPoint(shape) {
333
- const r = shapeTypes.gcWithScope();
334
- const adaptor = r(getAdaptor(shape));
335
- const pnt = r(adaptor.Value(adaptor.FirstParameter()));
336
- return [pnt.X(), pnt.Y(), pnt.Z()];
337
- }
338
- function curveEndPoint(shape) {
339
- const r = shapeTypes.gcWithScope();
340
- const adaptor = r(getAdaptor(shape));
341
- const pnt = r(adaptor.Value(adaptor.LastParameter()));
342
- return [pnt.X(), pnt.Y(), pnt.Z()];
343
- }
344
- function curvePointAt(shape, position = 0.5) {
345
- const r = shapeTypes.gcWithScope();
346
- const adaptor = r(getAdaptor(shape));
347
- const pnt = r(adaptor.Value(mapParam(adaptor, position)));
348
- return [pnt.X(), pnt.Y(), pnt.Z()];
349
- }
350
- function curveTangentAt(shape, position = 0.5) {
351
- const oc = occtBoundary.getKernel().oc;
352
- const r = shapeTypes.gcWithScope();
353
- const adaptor = r(getAdaptor(shape));
354
- const param = mapParam(adaptor, position);
355
- const tmpPnt = r(new oc.gp_Pnt_1());
356
- const tmpVec = r(new oc.gp_Vec_1());
357
- adaptor.D1(param, tmpPnt, tmpVec);
358
- return [tmpVec.X(), tmpVec.Y(), tmpVec.Z()];
359
- }
360
- function curveLength(shape) {
361
- const oc = occtBoundary.getKernel().oc;
362
- const r = shapeTypes.gcWithScope();
363
- const props = r(new oc.GProp_GProps_1());
364
- oc.BRepGProp.LinearProperties(shape.wrapped, props, true, false);
365
- return props.Mass();
366
- }
367
- function curveIsClosed(shape) {
368
- const r = shapeTypes.gcWithScope();
369
- const adaptor = r(getAdaptor(shape));
370
- return adaptor.IsClosed();
371
- }
372
- function curveIsPeriodic(shape) {
373
- const r = shapeTypes.gcWithScope();
374
- const adaptor = r(getAdaptor(shape));
375
- return adaptor.IsPeriodic();
376
- }
377
- function curvePeriod(shape) {
378
- const adaptor = getAdaptor(shape);
379
- const result = adaptor.Period();
380
- adaptor.delete();
381
- return result;
382
- }
383
- function getOrientation(shape) {
384
- const oc = occtBoundary.getKernel().oc;
385
- const orient = shape.wrapped.Orientation_1();
386
- return orient === oc.TopAbs_Orientation.TopAbs_FORWARD ? "forward" : "backward";
387
- }
388
- function flipOrientation(shape) {
389
- return shapeTypes.castShape(shape.wrapped.Reversed());
390
- }
391
- function interpolateCurve(points, options = {}) {
392
- if (points.length < 2) {
393
- return errors.err(errors.typeCastError("INTERPOLATE_MIN_POINTS", "Interpolation requires at least 2 points"));
394
- }
395
- try {
396
- const result = occtBoundary.getKernel().interpolatePoints(points, options);
397
- const cast2 = shapeTypes.castShape(result);
398
- if (!shapeTypes.isEdge(cast2)) {
399
- return errors.err(errors.typeCastError("INTERPOLATE_NOT_EDGE", "Interpolation did not produce an edge"));
400
- }
401
- return errors.ok(cast2);
402
- } catch (e) {
403
- return errors.err(
404
- errors.typeCastError(
405
- "INTERPOLATE_FAILED",
406
- `Interpolation failed: ${e instanceof Error ? e.message : String(e)}`
407
- )
408
- );
409
- }
410
- }
411
- function approximateCurve(points, options = {}) {
412
- if (points.length < 2) {
413
- return errors.err(errors.typeCastError("APPROXIMATE_MIN_POINTS", "Approximation requires at least 2 points"));
414
- }
415
- try {
416
- const result = occtBoundary.getKernel().approximatePoints(points, options);
417
- const cast2 = shapeTypes.castShape(result);
418
- if (!shapeTypes.isEdge(cast2)) {
419
- return errors.err(errors.typeCastError("APPROXIMATE_NOT_EDGE", "Approximation did not produce an edge"));
420
- }
421
- return errors.ok(cast2);
422
- } catch (e) {
423
- return errors.err(
424
- errors.typeCastError(
425
- "APPROXIMATE_FAILED",
426
- `Approximation failed: ${e instanceof Error ? e.message : String(e)}`
427
- )
428
- );
429
- }
430
- }
431
- function offsetWire2D(wire, offset, kind = "arc") {
432
- const oc = occtBoundary.getKernel().oc;
433
- const joinTypes = {
434
- arc: oc.GeomAbs_JoinType.GeomAbs_Arc,
435
- intersection: oc.GeomAbs_JoinType.GeomAbs_Intersection,
436
- tangent: oc.GeomAbs_JoinType.GeomAbs_Tangent
437
- };
438
- const resultShape = occtBoundary.getKernel().offsetWire2D(wire.wrapped, offset, joinTypes[kind]);
439
- const wrapped = shapeTypes.castShape(resultShape);
440
- if (!shapeTypes.isWire(wrapped)) {
441
- wrapped[Symbol.dispose]();
442
- return errors.err(errors.typeCastError("OFFSET_NOT_WIRE", "Offset did not produce a Wire"));
443
- }
444
- return errors.ok(wrapped);
445
- }
446
378
  exports.applyMatrix = applyMatrix;
447
- exports.approximateCurve = approximateCurve;
448
379
  exports.clone = clone;
449
380
  exports.composeTransforms = composeTransforms;
450
- exports.curveEndPoint = curveEndPoint;
451
- exports.curveIsClosed = curveIsClosed;
452
- exports.curveIsPeriodic = curveIsPeriodic;
453
- exports.curveLength = curveLength;
454
- exports.curvePeriod = curvePeriod;
455
- exports.curvePointAt = curvePointAt;
456
- exports.curveStartPoint = curveStartPoint;
457
- exports.curveTangentAt = curveTangentAt;
458
381
  exports.describe = describe;
459
- exports.findCurveType = findCurveType;
460
- exports.flipOrientation = flipOrientation;
461
382
  exports.getBounds = getBounds;
462
- exports.getCurveType = getCurveType;
463
383
  exports.getEdges = getEdges;
384
+ exports.getFaceOrigins = getFaceOrigins;
464
385
  exports.getFaces = getFaces;
465
386
  exports.getHashCode = getHashCode;
466
- exports.getOrientation = getOrientation;
467
387
  exports.getVertices = getVertices;
468
388
  exports.getWires = getWires;
469
- exports.interpolateCurve = interpolateCurve;
470
389
  exports.isEmpty = isEmpty;
471
390
  exports.isEqualShape = isEqualShape;
472
391
  exports.isSameShape = isSameShape;
@@ -475,9 +394,11 @@ exports.iterFaces = iterFaces;
475
394
  exports.iterVertices = iterVertices;
476
395
  exports.iterWires = iterWires;
477
396
  exports.mirror = mirror;
478
- exports.offsetWire2D = offsetWire2D;
397
+ exports.propagateOrigins = propagateOrigins;
398
+ exports.propagateOriginsByHash = propagateOriginsByHash;
479
399
  exports.rotate = rotate;
480
400
  exports.scale = scale;
401
+ exports.setShapeOrigin = setShapeOrigin;
481
402
  exports.simplify = simplify;
482
403
  exports.toBREP = toBREP;
483
404
  exports.transformCopy = transformCopy;
@@ -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-Mr2pghU8.cjs");
4
+ const boolean2D = require("./boolean2D-pvPIs21j.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-CAAE4Z88.js";
2
+ import { B as B2, a as a2, F as F2, S as S2 } from "./boolean2D-DzA0STqC.js";
3
3
  export {
4
4
  B2 as BaseSketcher2d,
5
5
  a2 as BlueprintSketcher,
@@ -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"}
@@ -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"}
@@ -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":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAY3F,qDAAqD;AACrD,wBAAgB,KAAK,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAErD;AAED,+CAA+C;AAC/C,wBAAgB,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAG9C;AAED,6CAA6C;AAC7C,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAEnD;AAED,gCAAgC;AAChC,wBAAgB,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAEhD;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAE7D;AAED,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAE9D;AAED,gFAAgF;AAChF,wBAAgB,QAAQ,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAMxD;AAMD,0DAA0D;AAC1D,wBAAgB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,CAYlE;AAED,+EAA+E;AAC/E,wBAAgB,MAAM,CAAC,CAAC,SAAS,QAAQ,EACvC,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,IAAgB,EAC1B,SAAS,GAAE,IAAgB,GAC1B,CAAC,CAYH;AAED,wFAAwF;AACxF,wBAAgB,MAAM,CAAC,CAAC,SAAS,QAAQ,EACvC,KAAK,EAAE,CAAC,EACR,WAAW,GAAE,IAAgB,EAC7B,WAAW,GAAE,IAAgB,GAC5B,CAAC,CAYH;AAED,oDAAoD;AACpD,wBAAgB,KAAK,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,IAAgB,GAAG,CAAC,CAY/F;AA8ED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,CAuDhF;AAMD,yDAAyD;AACzD,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAA;CAAE,GAChD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;CACxB,CAAC;AAEN,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAEhC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,WAAW,EAAE,GAAG,iBAAiB,CAoBhF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,GAAG,CAAC,CAM1F;AAiBD,sFAAsF;AACtF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,CAQhD;AAED,sFAAsF;AACtF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,CAQhD;AAED,sFAAsF;AACtF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,CAQhD;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,EAAE,CAIrD;AAMD,oFAAoF;AACpF,wBAAiB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAI3D;AAED,oFAAoF;AACpF,wBAAiB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAI3D;AAED,oFAAoF;AACpF,wBAAiB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAI3D;AAED,yFAAyF;AACzF,wBAAiB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAIhE;AAED,sCAAsC;AACtC,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,oDAAoD;AACpD,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAsBnD;AAMD,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;CAC3B;AAED,mEAAmE;AACnE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,gBAAgB,CAU1D;AAMD,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAMnD"}
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");
2
+ const shapeFns = require("./shapeFns-Z_ScEjmn.cjs");
3
+ require("./booleanFns-Cd414V3l.cjs");
4
4
  const occtBoundary = require("./occtBoundary-BFAaUtA7.cjs");
5
5
  const shapeTypes = require("./shapeTypes-UqVCIO_T.cjs");
6
6
  const cast = require("./cast-C107o5ow.cjs");
7
7
  const errors = require("./errors-DK1VAdP4.cjs");
8
+ require("./curveFns-B5EQsSwv.cjs");
8
9
  require("./faceFns-D1Sqnlu6.cjs");
9
10
  const vecOps = require("./vecOps-CjRL1jau.cjs");
10
- require("./meshFns-CFVxKBlE.cjs");
11
+ require("./meshFns-CJV_k_EQ.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";
1
+ import { u as getWires, o as getFaces } from "./shapeFns-CWd_ASDV.js";
2
+ import "./booleanFns-BcQUqjUu.js";
3
3
  import { g as getKernel } from "./occtBoundary-CoXB2xvx.js";
4
4
  import { c as castShape, h as isShape3D, k as isSolid, e as isFace, m as isWire } from "./shapeTypes-BU2LKv2S.js";
5
5
  import { d as downcast } from "./cast-D0OhP1nV.js";
6
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 "./curveFns-CyHyk29c.js";
7
8
  import "./faceFns-ub3CugDN.js";
8
9
  import { H as HASH_CODE_MAX } from "./vecOps-ZDdZWbwT.js";
9
- import "./meshFns-BKSPaPXS.js";
10
+ import "./meshFns-BEvGVcym.js";
10
11
  function toBufferGeometryData(mesh) {
11
12
  return {
12
13
  position: mesh.vertices,
package/dist/topology.cjs CHANGED
@@ -1,38 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const curveFns = require("./curveFns-ByeCqutv.cjs");
4
- const booleanFns = require("./booleanFns-Yc3EBxdm.cjs");
5
- const topology = require("./topology-D8Au8q4i.cjs");
3
+ const shapeFns = require("./shapeFns-Z_ScEjmn.cjs");
4
+ const booleanFns = require("./booleanFns-Cd414V3l.cjs");
5
+ const topology = require("./topology-A7-jUtHB.cjs");
6
+ const curveFns = require("./curveFns-B5EQsSwv.cjs");
6
7
  const faceFns = require("./faceFns-D1Sqnlu6.cjs");
7
- const meshFns = require("./meshFns-CFVxKBlE.cjs");
8
+ const meshFns = require("./meshFns-CJV_k_EQ.cjs");
8
9
  const cast = require("./cast-C107o5ow.cjs");
9
- exports.approximateCurve = curveFns.approximateCurve;
10
- exports.curveEndPoint = curveFns.curveEndPoint;
11
- exports.curveIsClosed = curveFns.curveIsClosed;
12
- exports.curveIsPeriodic = curveFns.curveIsPeriodic;
13
- exports.curveLength = curveFns.curveLength;
14
- exports.curvePeriod = curveFns.curvePeriod;
15
- exports.curvePointAt = curveFns.curvePointAt;
16
- exports.curveStartPoint = curveFns.curveStartPoint;
17
- exports.curveTangentAt = curveFns.curveTangentAt;
18
- exports.flipOrientation = curveFns.flipOrientation;
19
- exports.getBounds = curveFns.getBounds;
20
- exports.getCurveType = curveFns.getCurveType;
21
- exports.getEdges = curveFns.getEdges;
22
- exports.getFaces = curveFns.getFaces;
23
- exports.getHashCode = curveFns.getHashCode;
24
- exports.getOrientation = curveFns.getOrientation;
25
- exports.getVertices = curveFns.getVertices;
26
- exports.getWires = curveFns.getWires;
27
- exports.interpolateCurve = curveFns.interpolateCurve;
28
- exports.isEqualShape = curveFns.isEqualShape;
29
- exports.isSameShape = curveFns.isSameShape;
30
- exports.iterEdges = curveFns.iterEdges;
31
- exports.iterFaces = curveFns.iterFaces;
32
- exports.iterVertices = curveFns.iterVertices;
33
- exports.iterWires = curveFns.iterWires;
34
- exports.offsetWire2D = curveFns.offsetWire2D;
35
- exports.vertexPosition = curveFns.vertexPosition;
10
+ exports.getBounds = shapeFns.getBounds;
11
+ exports.getEdges = shapeFns.getEdges;
12
+ exports.getFaces = shapeFns.getFaces;
13
+ exports.getHashCode = shapeFns.getHashCode;
14
+ exports.getVertices = shapeFns.getVertices;
15
+ exports.getWires = shapeFns.getWires;
16
+ exports.isEqualShape = shapeFns.isEqualShape;
17
+ exports.isSameShape = shapeFns.isSameShape;
18
+ exports.iterEdges = shapeFns.iterEdges;
19
+ exports.iterFaces = shapeFns.iterFaces;
20
+ exports.iterVertices = shapeFns.iterVertices;
21
+ exports.iterWires = shapeFns.iterWires;
22
+ exports.vertexPosition = shapeFns.vertexPosition;
36
23
  exports.cutAll = booleanFns.cutAll;
37
24
  exports.fuseAll = booleanFns.fuseAll;
38
25
  exports.adjacentFaces = topology.adjacentFaces;
@@ -49,6 +36,20 @@ exports.toGroupedBufferGeometryData = topology.toGroupedBufferGeometryData;
49
36
  exports.toLineGeometryData = topology.toLineGeometryData;
50
37
  exports.verticesOfEdge = topology.verticesOfEdge;
51
38
  exports.wiresOfFace = topology.wiresOfFace;
39
+ exports.approximateCurve = curveFns.approximateCurve;
40
+ exports.curveEndPoint = curveFns.curveEndPoint;
41
+ exports.curveIsClosed = curveFns.curveIsClosed;
42
+ exports.curveIsPeriodic = curveFns.curveIsPeriodic;
43
+ exports.curveLength = curveFns.curveLength;
44
+ exports.curvePeriod = curveFns.curvePeriod;
45
+ exports.curvePointAt = curveFns.curvePointAt;
46
+ exports.curveStartPoint = curveFns.curveStartPoint;
47
+ exports.curveTangentAt = curveFns.curveTangentAt;
48
+ exports.flipOrientation = curveFns.flipOrientation;
49
+ exports.getCurveType = curveFns.getCurveType;
50
+ exports.getOrientation = curveFns.getOrientation;
51
+ exports.interpolateCurve = curveFns.interpolateCurve;
52
+ exports.offsetWire2D = curveFns.offsetWire2D;
52
53
  exports.classifyPointOnFace = faceFns.classifyPointOnFace;
53
54
  exports.faceCenter = faceFns.faceCenter;
54
55
  exports.faceGeomType = faceFns.faceGeomType;