brepjs 12.7.3 → 12.8.1
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.
- package/dist/2d/blueprints/boolean2D.d.ts.map +1 -1
- package/dist/2d/blueprints/lib.d.ts.map +1 -1
- package/dist/2d/blueprints/offset.d.ts.map +1 -1
- package/dist/2d.cjs +2 -2
- package/dist/2d.js +3 -3
- package/dist/{Blueprint-CnDVffSX.cjs → Blueprint-CQ28WJhz.cjs} +29 -30
- package/dist/{Blueprint-C3lWY1Jf.js → Blueprint-DbVaf6k7.js} +7 -8
- package/dist/{boolean2D-DyQJt8Na.cjs → boolean2D-0blbVtJ8.cjs} +70 -61
- package/dist/{boolean2D-CwZAIJDS.js → boolean2D-y3E92F0u.js} +37 -28
- package/dist/{booleanFns-CcNUsgI8.js → booleanFns-BCTjYZAg.js} +4 -4
- package/dist/{booleanFns-D7HmkpYt.cjs → booleanFns-gmsX3Cv2.cjs} +59 -59
- package/dist/brepjs.cjs +319 -372
- package/dist/brepjs.js +358 -411
- package/dist/core/errors.d.ts +14 -5
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core.cjs +30 -31
- package/dist/core.js +19 -20
- package/dist/{cornerFinder-BV-l1BCw.js → cornerFinder-Ckz-mPHE.js} +1 -1
- package/dist/{cornerFinder-3zfbQvXg.cjs → cornerFinder-ZmOyOOsh.cjs} +1 -1
- package/dist/{curveFns-Ch87sD5O.cjs → curveFns-BZngcnQ1.cjs} +17 -17
- package/dist/{curveFns-CloOqAQ_.js → curveFns-mROFhiuG.js} +1 -1
- package/dist/{drawFns-5myJTgtX.js → drawFns-Bwakrq7w.js} +24 -25
- package/dist/{drawFns-CDNafQhv.cjs → drawFns-CjRc1NfQ.cjs} +51 -52
- package/dist/{faceFns-B6ebRh5I.js → faceFns-B8GnxjdY.js} +1 -1
- package/dist/{faceFns-BLTEPBKq.cjs → faceFns-DB1Fc5gy.cjs} +20 -20
- package/dist/{helpers-6kn30cSD.cjs → helpers-C8NoT0Wu.cjs} +14 -14
- package/dist/{helpers-C9KvE1RW.js → helpers-X0juxnwj.js} +4 -4
- package/dist/io.cjs +26 -26
- package/dist/io.js +3 -3
- package/dist/kernel/brepkitAdapter.d.ts +8 -8
- package/dist/kernel/brepkitAdapter.d.ts.map +1 -1
- package/dist/kernel/brepkitWasmTypes.d.ts +6 -0
- package/dist/kernel/brepkitWasmTypes.d.ts.map +1 -1
- package/dist/kernel/historyOps.d.ts +3 -3
- package/dist/kernel/historyOps.d.ts.map +1 -1
- package/dist/kernel/types.d.ts +8 -8
- package/dist/kernel/types.d.ts.map +1 -1
- package/dist/{loft-BcZUCGKi.js → loft-Bhw-FMoL.js} +4 -4
- package/dist/{loft-DR1UN5uN.cjs → loft-hp3pc1M7.cjs} +43 -43
- package/dist/{measurement-DoYXRaKI.cjs → measurement-BoNTUBAp.cjs} +1 -1
- package/dist/{measurement-oWvhSVZG.js → measurement-D8EJ694A.js} +1 -1
- package/dist/measurement.cjs +1 -1
- package/dist/measurement.js +1 -1
- package/dist/{meshFns-3gy0empP.cjs → meshFns-BnV0ZR8w.cjs} +17 -17
- package/dist/{meshFns-DsLRd3tA.js → meshFns-nQjK38EC.js} +2 -2
- package/dist/{operations-Dcz6YlOt.js → operations-BfbkK6DU.js} +5 -5
- package/dist/{operations-DLFzmdFX.cjs → operations-CYpmLSC4.cjs} +75 -75
- package/dist/operations.cjs +2 -2
- package/dist/operations.js +2 -2
- package/dist/query.cjs +3 -3
- package/dist/query.js +4 -4
- package/dist/{errors-B7kgv0cd.js → result-BaSD1fqR.js} +43 -23
- package/dist/{errors-9fDehDNc.cjs → result-fAX0OZzI.cjs} +20 -0
- package/dist/result.cjs +30 -41
- package/dist/result.js +18 -29
- package/dist/{shapeFns-D-MOoqJd.cjs → shapeFns-C2SnNvdH.cjs} +39 -39
- package/dist/{shapeFns-D2PlLFE6.js → shapeFns-FDuKkrDR.js} +4 -4
- package/dist/sketching.cjs +2 -2
- package/dist/sketching.js +2 -2
- package/dist/{solidBuilders-BzfRBizW.cjs → solidBuilders-994_MQwB.cjs} +12 -12
- package/dist/{solidBuilders-BXhh5hP2.js → solidBuilders-DmwhTCCd.js} +2 -2
- package/dist/{surfaceBuilders-Be_ENWSA.cjs → surfaceBuilders-5VA34a3_.cjs} +27 -27
- package/dist/{surfaceBuilders-D6iDVPIM.js → surfaceBuilders-nQdJ56fe.js} +2 -2
- package/dist/{topology-CKtCGLmb.cjs → topology-ANwCzGL8.cjs} +54 -54
- package/dist/{topology-DxD58iQ6.js → topology-C7x98OVn.js} +8 -8
- package/dist/topology.cjs +6 -6
- package/dist/topology.js +6 -6
- package/dist/{vectors-CESkzEm6.js → vectors-Bx8wkNui.js} +1 -1
- package/dist/{vectors-BafmMf96.cjs → vectors-D_IiZx0q.cjs} +6 -6
- package/dist/vectors.cjs +1 -1
- package/dist/vectors.js +1 -1
- package/package.json +5 -8
package/dist/brepjs.js
CHANGED
|
@@ -45,43 +45,42 @@ var __callDispose = (stack, error, hasError) => {
|
|
|
45
45
|
};
|
|
46
46
|
import { c as castShape, D as DisposalScope, B as getKernel, k as isFace, q as isShell, r as isSolid, p as isShape3D, F as createSolid, G as createWire, j as isEdge, u as isWire } from "./shapeTypes-CpSaBLDv.js";
|
|
47
47
|
import { M, N, O, a, C, H, I, b, d, P, E, g, Q, i, e, f, h, l, m, n, o, s, t, v, w, R, x, S, y, z, A } from "./shapeTypes-CpSaBLDv.js";
|
|
48
|
-
import { o as ok,
|
|
49
|
-
import { O as O2,
|
|
48
|
+
import { o as ok, D as translateKernelError, e as err, r as typeCastError, q as queryError, z as validationError, A as BrepErrorCode, k as kernelError, i as ioError, g as isErr, v as unwrap$1 } from "./result-BaSD1fqR.js";
|
|
49
|
+
import { B, O as O2, E as E2, a as a2, b as b2, c, d as d2, f as f2, F, h as h2, m as m2, j, l as l2, n as n2, G, H as H2, I as I2, s as s2, J, K, t as t2, p, u, w as w2, x as x2, y as y2, L } from "./result-BaSD1fqR.js";
|
|
50
50
|
import { c as vecDistance, H as HASH_CODE_MAX, n as vecScale, j as vecNormalize, f as vecIsZero } from "./vecOps-ZDdZWbwT.js";
|
|
51
|
-
import { D
|
|
52
|
-
import { B, e as e3, C as
|
|
53
|
-
import { b as b4, g as
|
|
54
|
-
import { w as walkAssembly, e as extrude$1, r as revolve$1, s as sweep, c as circularPattern, l as linearPattern } from "./operations-
|
|
55
|
-
import { a as a4, b as b5, d as
|
|
56
|
-
import { B as
|
|
51
|
+
import { D, R as R2, v as v2, a as a3, b as b3, d as d3, e as e2, g as g2, h as h3, i as i2, k, l as l3, m as m3, o as o2 } from "./vecOps-ZDdZWbwT.js";
|
|
52
|
+
import { B as B2, e as e3, C as C2, u as u2 } from "./Blueprint-DbVaf6k7.js";
|
|
53
|
+
import { b as b4, g as g3, r } from "./loft-Bhw-FMoL.js";
|
|
54
|
+
import { w as walkAssembly, e as extrude$1, r as revolve$1, s as sweep, c as circularPattern, l as linearPattern } from "./operations-BfbkK6DU.js";
|
|
55
|
+
import { a as a4, b as b5, d as d4, f as f3, g as g4, h as h4, i as i3, j as j2, k as k2, m as m4, n as n3, o as o3, p as p2, q, t as t3, u as u3, v as v3, x as x3, y as y3, z as z2, A as A2, B as B3, C as C3, D as D2, E as E3, F as F2, G as G2 } from "./operations-BfbkK6DU.js";
|
|
56
|
+
import { B as B4, a as a5, c as c2, C as C4, F as F3, S as S2, d as d5, j as j3, f as f4, k as k3, h as h5, l as l4, o as o4, p as p3, r as r2 } from "./boolean2D-y3E92F0u.js";
|
|
57
57
|
import { createBlueprint, curve2dBoundingBox, curve2dDistanceFrom, curve2dFirstPoint, curve2dIsOnCurve, curve2dLastPoint, curve2dParameter, curve2dSplitAt, curve2dTangentAt, getBounds2D, getOrientation2D, isInside2D, mirror2D, reverseCurve, rotate2D, scale2D, sketch2DOnFace, sketch2DOnPlane, stretch2D, toSVGPathD, translate2D } from "./2d.js";
|
|
58
|
-
import { l as createTypedFinder, m as faceFinder } from "./helpers-
|
|
59
|
-
import { g as
|
|
58
|
+
import { l as createTypedFinder, m as faceFinder } from "./helpers-X0juxnwj.js";
|
|
59
|
+
import { g as g5 } from "./helpers-X0juxnwj.js";
|
|
60
60
|
import { blueprintToDXF, exportDXF, exportGlb, exportGltf, exportOBJ, exportThreeMF, importIGES, importSTEP, importSTL, importSVG, importSVGPathD } from "./io.js";
|
|
61
|
-
import { C as
|
|
61
|
+
import { C as C5, D as D3, a as a6, S as S3, b as b6, X, Y, c as c3, d as d6, e as e4, f as f5, Z, g as g6, h as h6, i as i4, j as j4, k as k4, l as l5, m as m5, n as n4, o as o5, p as p4, q as q2, r as r3, s as s3, t as t4, u as u4, v as v4, w as w3, x as x4, y as y4, z as z3, _, $, a0, a1, A as A3, a2 as a22, B as B5, E as E4, a3 as a32, F as F4, G as G3, H as H3, I as I3, J as J2, K as K2, L as L2, M as M2, N as N2, O as O3, P as P2, Q as Q2, R as R3, T, U, a4 as a42, V, a5 as a52, a6 as a62, W } from "./drawFns-Bwakrq7w.js";
|
|
62
62
|
import { a as toVec3 } from "./types-CWDdqcrq.js";
|
|
63
63
|
import { r as r4, t as t5 } from "./types-CWDdqcrq.js";
|
|
64
|
-
import { c as c4, a as a7, p as
|
|
65
|
-
import { v as vertexPosition, a as getFaces, e as getVertices, d as getEdges, h as getBounds, b as propagateOriginsFromEvolution, g as getFaceOrigins, j as applyMatrix$1, k as clone$1, l as describe$1, m as isEmpty$1, n as mirror$1, r as rotate$1, s as scale$1, o as simplify$1, t as toBREP$1, q as transformCopy$1, u as translate$1, c as getWires } from "./shapeFns-
|
|
66
|
-
import { w as w4, f as f6, x as x5, y as
|
|
67
|
-
import { p as propagateFaceTagsFromEvolution, a as propagateColorsFromEvolution, h as hasFaceTags, b as hasColorMetadata, c as cut$1, f as fuse$1, i as intersect$1, s as section$1, d as sectionToFace$1, e as slice$1, g as split$1, j as fuseAll, k as cutAll } from "./booleanFns-
|
|
68
|
-
import { l as l6, m as m6, n as n5, o as o6, q as q3, r as r6, t as t7, u as u5, v as
|
|
69
|
-
import { c as chamferDistAngle, h as heal$1, i as isValid$1 } from "./topology-
|
|
70
|
-
import { a as a8, b as b7, d as
|
|
71
|
-
import { b as curveIsClosed, c as curveStartPoint, a as curveTangentAt, d as curvePointAt, e as curveEndPoint, f as curveLength } from "./curveFns-
|
|
72
|
-
import { h as h7, i as i6, j as j6, k as k6, l as l8, g as
|
|
73
|
-
import { i as iterTopo, e as faceCenter, n as normalAt, j as fromBREP$1, k as innerWires, o as outerWire, g as getSurfaceType } from "./faceFns-
|
|
74
|
-
import { l as l9, c as c5, m as m9, d as
|
|
75
|
-
import { m as mesh$1, a as meshEdges$1 } from "./meshFns-
|
|
76
|
-
import { c as c6, b as b8, e as e6, d as
|
|
77
|
-
import { m as measureArea, a as measureSurfaceProps, b as measureVolumeProps, c as measureVolume } from "./measurement-
|
|
78
|
-
import { d as
|
|
79
|
-
import { m as makeFace } from "./surfaceBuilders-
|
|
80
|
-
import { i as i8 } from "./surfaceBuilders-
|
|
64
|
+
import { c as c4, a as a7, p as p5, r as r5, t as t6 } from "./vectors-Bx8wkNui.js";
|
|
65
|
+
import { v as vertexPosition, a as getFaces, e as getVertices, d as getEdges, h as getBounds, b as propagateOriginsFromEvolution, g as getFaceOrigins, j as applyMatrix$1, k as clone$1, l as describe$1, m as isEmpty$1, n as mirror$1, r as rotate$1, s as scale$1, o as simplify$1, t as toBREP$1, q as transformCopy$1, u as translate$1, c as getWires } from "./shapeFns-FDuKkrDR.js";
|
|
66
|
+
import { w as w4, f as f6, x as x5, y as y5, i as i5, z as z4, A as A4, B as B6, C as C6, D as D4, E as E5 } from "./shapeFns-FDuKkrDR.js";
|
|
67
|
+
import { p as propagateFaceTagsFromEvolution, a as propagateColorsFromEvolution, h as hasFaceTags, b as hasColorMetadata, c as cut$1, f as fuse$1, i as intersect$1, s as section$1, d as sectionToFace$1, e as slice$1, g as split$1, j as fuseAll, k as cutAll } from "./booleanFns-BCTjYZAg.js";
|
|
68
|
+
import { l as l6, m as m6, n as n5, o as o6, q as q3, r as r6, t as t7, u as u5, v as v5 } from "./booleanFns-BCTjYZAg.js";
|
|
69
|
+
import { c as chamferDistAngle, h as heal$1, i as isValid$1 } from "./topology-C7x98OVn.js";
|
|
70
|
+
import { a as a8, b as b7, d as d7, e as e5, f as f7, g as g7, j as j5, k as k5, l as l7, m as m7, n as n6, o as o7, p as p6, q as q4, r as r7, s as s4, t as t8, u as u6, v as v6, w as w5, x as x6, y as y6, z as z5, A as A5, B as B7, C as C7, D as D5, E as E6, F as F5, G as G4, H as H4, I as I4, J as J3, K as K3, L as L3, M as M3, N as N3, O as O4, P as P3, Q as Q3 } from "./topology-C7x98OVn.js";
|
|
71
|
+
import { b as curveIsClosed, c as curveStartPoint, a as curveTangentAt, d as curvePointAt, e as curveEndPoint, f as curveLength } from "./curveFns-mROFhiuG.js";
|
|
72
|
+
import { h as h7, i as i6, j as j6, k as k6, l as l8, g as g8, m as m8, o as o8 } from "./curveFns-mROFhiuG.js";
|
|
73
|
+
import { i as iterTopo, e as faceCenter, n as normalAt, j as fromBREP$1, k as innerWires, o as outerWire, g as getSurfaceType } from "./faceFns-B8GnxjdY.js";
|
|
74
|
+
import { l as l9, c as c5, m as m9, d as d8, f as f8, q as q5, r as r8, s as s5, p as p7, t as t9, v as v7, w as w6, u as u7, h as h8 } from "./faceFns-B8GnxjdY.js";
|
|
75
|
+
import { m as mesh$1, a as meshEdges$1 } from "./meshFns-nQjK38EC.js";
|
|
76
|
+
import { c as c6, b as b8, e as e6, d as d9, f as f9 } from "./meshFns-nQjK38EC.js";
|
|
77
|
+
import { m as measureArea, a as measureSurfaceProps, b as measureVolumeProps, c as measureVolume } from "./measurement-D8EJ694A.js";
|
|
78
|
+
import { d as d10, e as e7, f as f10, g as g9, h as h9, i as i7 } from "./measurement-D8EJ694A.js";
|
|
79
|
+
import { m as makeFace } from "./surfaceBuilders-nQdJ56fe.js";
|
|
80
|
+
import { i as i8 } from "./surfaceBuilders-nQdJ56fe.js";
|
|
81
81
|
import { edgeFinder } from "./query.js";
|
|
82
|
-
import { c as makeCylinder } from "./solidBuilders-
|
|
83
|
-
import {
|
|
84
|
-
import { c as c7 } from "./cornerFinder-BV-l1BCw.js";
|
|
82
|
+
import { c as makeCylinder } from "./solidBuilders-DmwhTCCd.js";
|
|
83
|
+
import { c as c7 } from "./cornerFinder-Ckz-mPHE.js";
|
|
85
84
|
import { createOperationRegistry, createTaskQueue, createWorkerClient, createWorkerHandler, dequeueTask, enqueueTask, isDisposeRequest, isErrorResponse, isInitRequest, isOperationRequest, isQueueEmpty, isSuccessResponse, pendingCount, registerHandler, rejectAll } from "./worker.js";
|
|
86
85
|
function supportsProjection(kernel) {
|
|
87
86
|
return "projectShape" in kernel;
|
|
@@ -102,8 +101,8 @@ function evaluateCurve2d(c8, t10) {
|
|
|
102
101
|
const cos = Math.cos(c8.xDirAngle);
|
|
103
102
|
const sin = Math.sin(c8.xDirAngle);
|
|
104
103
|
const x7 = c8.majorRadius * Math.cos(angle);
|
|
105
|
-
const
|
|
106
|
-
return [c8.cx + x7 * cos -
|
|
104
|
+
const y7 = c8.minorRadius * Math.sin(angle);
|
|
105
|
+
return [c8.cx + x7 * cos - y7 * sin, c8.cy + x7 * sin + y7 * cos];
|
|
107
106
|
}
|
|
108
107
|
case "bezier":
|
|
109
108
|
return evaluateBezier(c8.poles, t10);
|
|
@@ -227,9 +226,9 @@ function translateCurve2d(c8, dx, dy) {
|
|
|
227
226
|
case "ellipse":
|
|
228
227
|
return { ...c8, cx: c8.cx + dx, cy: c8.cy + dy };
|
|
229
228
|
case "bezier":
|
|
230
|
-
return { ...c8, poles: c8.poles.map(([x7,
|
|
229
|
+
return { ...c8, poles: c8.poles.map(([x7, y7]) => [x7 + dx, y7 + dy]) };
|
|
231
230
|
case "bspline":
|
|
232
|
-
return { ...c8, poles: c8.poles.map(([x7,
|
|
231
|
+
return { ...c8, poles: c8.poles.map(([x7, y7]) => [x7 + dx, y7 + dy]) };
|
|
233
232
|
case "trimmed":
|
|
234
233
|
return { ...c8, basis: translateCurve2d(c8.basis, dx, dy) };
|
|
235
234
|
}
|
|
@@ -237,9 +236,9 @@ function translateCurve2d(c8, dx, dy) {
|
|
|
237
236
|
function rotateCurve2d(c8, angle, cx, cy) {
|
|
238
237
|
const cos = Math.cos(angle);
|
|
239
238
|
const sin = Math.sin(angle);
|
|
240
|
-
const rotatePoint = (x7,
|
|
239
|
+
const rotatePoint = (x7, y7) => {
|
|
241
240
|
const rx = x7 - cx;
|
|
242
|
-
const ry =
|
|
241
|
+
const ry = y7 - cy;
|
|
243
242
|
return [cx + rx * cos - ry * sin, cy + rx * sin + ry * cos];
|
|
244
243
|
};
|
|
245
244
|
switch (c8.__bk2d) {
|
|
@@ -258,17 +257,17 @@ function rotateCurve2d(c8, angle, cx, cy) {
|
|
|
258
257
|
return { ...c8, cx: ncx, cy: ncy, xDirAngle: c8.xDirAngle + angle };
|
|
259
258
|
}
|
|
260
259
|
case "bezier":
|
|
261
|
-
return { ...c8, poles: c8.poles.map(([x7,
|
|
260
|
+
return { ...c8, poles: c8.poles.map(([x7, y7]) => rotatePoint(x7, y7)) };
|
|
262
261
|
case "bspline":
|
|
263
|
-
return { ...c8, poles: c8.poles.map(([x7,
|
|
262
|
+
return { ...c8, poles: c8.poles.map(([x7, y7]) => rotatePoint(x7, y7)) };
|
|
264
263
|
case "trimmed":
|
|
265
264
|
return { ...c8, basis: rotateCurve2d(c8.basis, angle, cx, cy) };
|
|
266
265
|
}
|
|
267
266
|
}
|
|
268
267
|
function scaleCurve2d(c8, factor, cx, cy) {
|
|
269
|
-
const scalePoint = (x7,
|
|
268
|
+
const scalePoint = (x7, y7) => [
|
|
270
269
|
cx + (x7 - cx) * factor,
|
|
271
|
-
cy + (
|
|
270
|
+
cy + (y7 - cy) * factor
|
|
272
271
|
];
|
|
273
272
|
switch (c8.__bk2d) {
|
|
274
273
|
case "line": {
|
|
@@ -290,9 +289,9 @@ function scaleCurve2d(c8, factor, cx, cy) {
|
|
|
290
289
|
};
|
|
291
290
|
}
|
|
292
291
|
case "bezier":
|
|
293
|
-
return { ...c8, poles: c8.poles.map(([x7,
|
|
292
|
+
return { ...c8, poles: c8.poles.map(([x7, y7]) => scalePoint(x7, y7)) };
|
|
294
293
|
case "bspline":
|
|
295
|
-
return { ...c8, poles: c8.poles.map(([x7,
|
|
294
|
+
return { ...c8, poles: c8.poles.map(([x7, y7]) => scalePoint(x7, y7)) };
|
|
296
295
|
case "trimmed":
|
|
297
296
|
return { ...c8, basis: scaleCurve2d(c8.basis, factor, cx, cy) };
|
|
298
297
|
}
|
|
@@ -304,9 +303,9 @@ function mirrorAcrossAxis(c8, ox, oy, dx, dy) {
|
|
|
304
303
|
const len = Math.sqrt(dx * dx + dy * dy);
|
|
305
304
|
const nx = dx / len;
|
|
306
305
|
const ny = dy / len;
|
|
307
|
-
const reflectPoint = (x7,
|
|
306
|
+
const reflectPoint = (x7, y7) => {
|
|
308
307
|
const rx = x7 - ox;
|
|
309
|
-
const ry =
|
|
308
|
+
const ry = y7 - oy;
|
|
310
309
|
const dot = rx * nx + ry * ny;
|
|
311
310
|
return [ox + 2 * dot * nx - rx, oy + 2 * dot * ny - ry];
|
|
312
311
|
};
|
|
@@ -332,9 +331,9 @@ function mirrorAcrossAxis(c8, ox, oy, dx, dy) {
|
|
|
332
331
|
return { ...c8, cx: ncx, cy: ncy, xDirAngle: newAngle, sense: !c8.sense };
|
|
333
332
|
}
|
|
334
333
|
case "bezier":
|
|
335
|
-
return { ...c8, poles: c8.poles.map(([x7,
|
|
334
|
+
return { ...c8, poles: c8.poles.map(([x7, y7]) => reflectPoint(x7, y7)) };
|
|
336
335
|
case "bspline":
|
|
337
|
-
return { ...c8, poles: c8.poles.map(([x7,
|
|
336
|
+
return { ...c8, poles: c8.poles.map(([x7, y7]) => reflectPoint(x7, y7)) };
|
|
338
337
|
case "trimmed":
|
|
339
338
|
return { ...c8, basis: mirrorAcrossAxis(c8.basis, ox, oy, dx, dy) };
|
|
340
339
|
}
|
|
@@ -376,9 +375,9 @@ function refineParam(c8, px, py) {
|
|
|
376
375
|
for (let i9 = 0; i9 <= N4; i9++) {
|
|
377
376
|
const t10 = bounds.first + i9 * dt;
|
|
378
377
|
const [ex2, ey2] = evaluateCurve2d(c8, t10);
|
|
379
|
-
const
|
|
380
|
-
if (
|
|
381
|
-
bestD =
|
|
378
|
+
const d11 = (ex2 - px) ** 2 + (ey2 - py) ** 2;
|
|
379
|
+
if (d11 < bestD) {
|
|
380
|
+
bestD = d11;
|
|
382
381
|
bestT = t10;
|
|
383
382
|
}
|
|
384
383
|
}
|
|
@@ -450,18 +449,18 @@ function intersectLineCircle(cLine, line, cCirc, circ, tol) {
|
|
|
450
449
|
function intersectCircleCircle(c1, circ1, c22, circ2, tol) {
|
|
451
450
|
const dx = circ2.cx - circ1.cx;
|
|
452
451
|
const dy = circ2.cy - circ1.cy;
|
|
453
|
-
const
|
|
454
|
-
if (
|
|
455
|
-
if (
|
|
456
|
-
if (
|
|
457
|
-
const a9 = (circ1.radius * circ1.radius - circ2.radius * circ2.radius +
|
|
452
|
+
const d11 = Math.sqrt(dx * dx + dy * dy);
|
|
453
|
+
if (d11 > circ1.radius + circ2.radius + tol) return [];
|
|
454
|
+
if (d11 < Math.abs(circ1.radius - circ2.radius) - tol) return [];
|
|
455
|
+
if (d11 < 1e-14) return [];
|
|
456
|
+
const a9 = (circ1.radius * circ1.radius - circ2.radius * circ2.radius + d11 * d11) / (2 * d11);
|
|
458
457
|
const h22 = circ1.radius * circ1.radius - a9 * a9;
|
|
459
458
|
const h10 = Math.sqrt(Math.max(0, h22));
|
|
460
|
-
const mx = circ1.cx + a9 * dx /
|
|
461
|
-
const my = circ1.cy + a9 * dy /
|
|
459
|
+
const mx = circ1.cx + a9 * dx / d11;
|
|
460
|
+
const my = circ1.cy + a9 * dy / d11;
|
|
462
461
|
const candidates = h10 < tol ? [[mx, my]] : [
|
|
463
|
-
[mx + h10 * dy /
|
|
464
|
-
[mx - h10 * dy /
|
|
462
|
+
[mx + h10 * dy / d11, my - h10 * dx / d11],
|
|
463
|
+
[mx - h10 * dy / d11, my + h10 * dx / d11]
|
|
465
464
|
];
|
|
466
465
|
const results = [];
|
|
467
466
|
for (const [px, py] of candidates) {
|
|
@@ -573,16 +572,16 @@ function addCurveToBBox(bbox, c8, _tol) {
|
|
|
573
572
|
const dt = (bounds.last - bounds.first) / nSamples;
|
|
574
573
|
for (let i9 = 0; i9 <= nSamples; i9++) {
|
|
575
574
|
const t10 = bounds.first + i9 * dt;
|
|
576
|
-
const [x7,
|
|
575
|
+
const [x7, y7] = evaluateCurve2d(c8, t10);
|
|
577
576
|
if (x7 < bbox.xMin) bbox.xMin = x7;
|
|
578
|
-
if (
|
|
577
|
+
if (y7 < bbox.yMin) bbox.yMin = y7;
|
|
579
578
|
if (x7 > bbox.xMax) bbox.xMax = x7;
|
|
580
|
-
if (
|
|
579
|
+
if (y7 > bbox.yMax) bbox.yMax = y7;
|
|
581
580
|
}
|
|
582
581
|
}
|
|
583
582
|
function evaluateBezier(poles, t10) {
|
|
584
583
|
const n7 = poles.length;
|
|
585
|
-
const work = poles.map(([x7,
|
|
584
|
+
const work = poles.map(([x7, y7]) => [x7, y7]);
|
|
586
585
|
for (let r9 = 1; r9 < n7; r9++) {
|
|
587
586
|
for (let i9 = 0; i9 < n7 - r9; i9++) {
|
|
588
587
|
const wi = work[i9];
|
|
@@ -601,38 +600,38 @@ function evaluateBSpline2d(c8, t10) {
|
|
|
601
600
|
fullKnots.push(c8.knots[i9]);
|
|
602
601
|
}
|
|
603
602
|
}
|
|
604
|
-
const
|
|
603
|
+
const p8 = c8.degree;
|
|
605
604
|
const n7 = c8.poles.length;
|
|
606
605
|
const k7 = fullKnots.length;
|
|
607
|
-
const tClamped = Math.max(fullKnots[
|
|
608
|
-
let span =
|
|
609
|
-
for (let i9 =
|
|
606
|
+
const tClamped = Math.max(fullKnots[p8], Math.min(fullKnots[k7 - p8 - 1], t10));
|
|
607
|
+
let span = p8;
|
|
608
|
+
for (let i9 = p8; i9 < k7 - p8 - 1; i9++) {
|
|
610
609
|
if (tClamped >= fullKnots[i9] && tClamped < fullKnots[i9 + 1]) {
|
|
611
610
|
span = i9;
|
|
612
611
|
break;
|
|
613
612
|
}
|
|
614
613
|
}
|
|
615
|
-
if (tClamped >= fullKnots[k7 -
|
|
616
|
-
const
|
|
617
|
-
for (let j7 = 0; j7 <=
|
|
618
|
-
const idx = Math.min(span -
|
|
614
|
+
if (tClamped >= fullKnots[k7 - p8 - 1]) span = k7 - p8 - 2;
|
|
615
|
+
const d11 = [];
|
|
616
|
+
for (let j7 = 0; j7 <= p8; j7++) {
|
|
617
|
+
const idx = Math.min(span - p8 + j7, n7 - 1);
|
|
619
618
|
const pole = c8.poles[Math.max(0, idx)];
|
|
620
|
-
|
|
619
|
+
d11.push([pole[0], pole[1]]);
|
|
621
620
|
}
|
|
622
|
-
for (let r9 = 1; r9 <=
|
|
623
|
-
for (let j7 =
|
|
624
|
-
const i9 = span -
|
|
621
|
+
for (let r9 = 1; r9 <= p8; r9++) {
|
|
622
|
+
for (let j7 = p8; j7 >= r9; j7--) {
|
|
623
|
+
const i9 = span - p8 + j7;
|
|
625
624
|
const left = fullKnots[i9] ?? 0;
|
|
626
|
-
const right = fullKnots[i9 +
|
|
625
|
+
const right = fullKnots[i9 + p8 - r9 + 1] ?? 1;
|
|
627
626
|
const denom = right - left;
|
|
628
627
|
const alpha = denom > 1e-15 ? (tClamped - left) / denom : 0;
|
|
629
|
-
const dj =
|
|
630
|
-
const djPrev =
|
|
628
|
+
const dj = d11[j7];
|
|
629
|
+
const djPrev = d11[j7 - 1];
|
|
631
630
|
dj[0] = (1 - alpha) * djPrev[0] + alpha * dj[0];
|
|
632
631
|
dj[1] = (1 - alpha) * djPrev[1] + alpha * dj[1];
|
|
633
632
|
}
|
|
634
633
|
}
|
|
635
|
-
return
|
|
634
|
+
return d11[p8];
|
|
636
635
|
}
|
|
637
636
|
function isBrepkitHandle(shape2) {
|
|
638
637
|
return shape2 !== null && shape2 !== void 0 && typeof shape2 === "object" && shape2.__brepkit;
|
|
@@ -724,7 +723,7 @@ function dist3(x1, y1, z1, x22, y22, z22) {
|
|
|
724
723
|
function copyWasmBytes(bytes) {
|
|
725
724
|
return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
|
|
726
725
|
}
|
|
727
|
-
function translationMatrix(x7,
|
|
726
|
+
function translationMatrix(x7, y7, z6) {
|
|
728
727
|
return [
|
|
729
728
|
1,
|
|
730
729
|
0,
|
|
@@ -733,7 +732,7 @@ function translationMatrix(x7, y6, z6) {
|
|
|
733
732
|
0,
|
|
734
733
|
1,
|
|
735
734
|
0,
|
|
736
|
-
|
|
735
|
+
y7,
|
|
737
736
|
0,
|
|
738
737
|
0,
|
|
739
738
|
1,
|
|
@@ -833,20 +832,20 @@ function mirrorMatrix(origin, normal) {
|
|
|
833
832
|
const nx = normal[0] / len;
|
|
834
833
|
const ny = normal[1] / len;
|
|
835
834
|
const nz = normal[2] / len;
|
|
836
|
-
const
|
|
835
|
+
const d11 = 2 * (ox * nx + oy * ny + oz * nz);
|
|
837
836
|
return [
|
|
838
837
|
1 - 2 * nx * nx,
|
|
839
838
|
-2 * nx * ny,
|
|
840
839
|
-2 * nx * nz,
|
|
841
|
-
|
|
840
|
+
d11 * nx,
|
|
842
841
|
-2 * ny * nx,
|
|
843
842
|
1 - 2 * ny * ny,
|
|
844
843
|
-2 * ny * nz,
|
|
845
|
-
|
|
844
|
+
d11 * ny,
|
|
846
845
|
-2 * nz * nx,
|
|
847
846
|
-2 * nz * ny,
|
|
848
847
|
1 - 2 * nz * nz,
|
|
849
|
-
|
|
848
|
+
d11 * nz,
|
|
850
849
|
0,
|
|
851
850
|
0,
|
|
852
851
|
0,
|
|
@@ -1034,8 +1033,8 @@ class BrepkitAdapter {
|
|
|
1034
1033
|
hullFromPoints(points, _tolerance) {
|
|
1035
1034
|
if (points.length < 4) throw new Error("brepkit: hull needs at least 4 points");
|
|
1036
1035
|
const coords = [];
|
|
1037
|
-
for (const
|
|
1038
|
-
coords.push(
|
|
1036
|
+
for (const p8 of points) {
|
|
1037
|
+
coords.push(p8.x, p8.y, p8.z);
|
|
1039
1038
|
}
|
|
1040
1039
|
const id = this.bk.convexHull(coords);
|
|
1041
1040
|
return solidHandle(id);
|
|
@@ -1043,10 +1042,10 @@ class BrepkitAdapter {
|
|
|
1043
1042
|
buildSolidFromFaces(points, faces, _tolerance) {
|
|
1044
1043
|
const positions = new Float64Array(points.length * 3);
|
|
1045
1044
|
for (let i9 = 0; i9 < points.length; i9++) {
|
|
1046
|
-
const
|
|
1047
|
-
positions[i9 * 3] =
|
|
1048
|
-
positions[i9 * 3 + 1] =
|
|
1049
|
-
positions[i9 * 3 + 2] =
|
|
1045
|
+
const p8 = points[i9];
|
|
1046
|
+
positions[i9 * 3] = p8.x;
|
|
1047
|
+
positions[i9 * 3 + 1] = p8.y;
|
|
1048
|
+
positions[i9 * 3 + 2] = p8.z;
|
|
1050
1049
|
}
|
|
1051
1050
|
const indices = new Uint32Array(faces.length * 3);
|
|
1052
1051
|
for (let i9 = 0; i9 < faces.length; i9++) {
|
|
@@ -1061,8 +1060,8 @@ class BrepkitAdapter {
|
|
|
1061
1060
|
// ═══════════════════════════════════════════════════════════════════════
|
|
1062
1061
|
// Shape construction
|
|
1063
1062
|
// ═══════════════════════════════════════════════════════════════════════
|
|
1064
|
-
makeVertex(x7,
|
|
1065
|
-
const id = this.bk.makeVertex(x7,
|
|
1063
|
+
makeVertex(x7, y7, z6) {
|
|
1064
|
+
const id = this.bk.makeVertex(x7, y7, z6);
|
|
1066
1065
|
return vertexHandle(id);
|
|
1067
1066
|
}
|
|
1068
1067
|
makeEdge(curve, start, end) {
|
|
@@ -1197,19 +1196,19 @@ class BrepkitAdapter {
|
|
|
1197
1196
|
nz[2] * ux[0] - nz[0] * ux[2],
|
|
1198
1197
|
nz[0] * ux[1] - nz[1] * ux[0]
|
|
1199
1198
|
];
|
|
1200
|
-
const proj = (
|
|
1201
|
-
const dx =
|
|
1199
|
+
const proj = (p8) => {
|
|
1200
|
+
const dx = p8[0] - p1[0], dy = p8[1] - p1[1], dz = p8[2] - p1[2];
|
|
1202
1201
|
return [dx * ux[0] + dy * ux[1] + dz * ux[2], dx * uy[0] + dy * uy[1] + dz * uy[2]];
|
|
1203
1202
|
};
|
|
1204
1203
|
const [ax2, ay2] = proj(p1);
|
|
1205
1204
|
const [bx2, by2] = proj(p22);
|
|
1206
1205
|
const [cx2, cy2] = proj(p32);
|
|
1207
|
-
const
|
|
1208
|
-
if (Math.abs(
|
|
1206
|
+
const d11 = 2 * (ax2 * (by2 - cy2) + bx2 * (cy2 - ay2) + cx2 * (ay2 - by2));
|
|
1207
|
+
if (Math.abs(d11) < 1e-12) {
|
|
1209
1208
|
return this.makeLineEdge(p1, p32);
|
|
1210
1209
|
}
|
|
1211
|
-
const ccx = ((ax2 ** 2 + ay2 ** 2) * (by2 - cy2) + (bx2 ** 2 + by2 ** 2) * (cy2 - ay2) + (cx2 ** 2 + cy2 ** 2) * (ay2 - by2)) /
|
|
1212
|
-
const ccy = ((ax2 ** 2 + ay2 ** 2) * (cx2 - bx2) + (bx2 ** 2 + by2 ** 2) * (ax2 - cx2) + (cx2 ** 2 + cy2 ** 2) * (bx2 - ax2)) /
|
|
1210
|
+
const ccx = ((ax2 ** 2 + ay2 ** 2) * (by2 - cy2) + (bx2 ** 2 + by2 ** 2) * (cy2 - ay2) + (cx2 ** 2 + cy2 ** 2) * (ay2 - by2)) / d11;
|
|
1211
|
+
const ccy = ((ax2 ** 2 + ay2 ** 2) * (cx2 - bx2) + (bx2 ** 2 + by2 ** 2) * (ax2 - cx2) + (cx2 ** 2 + cy2 ** 2) * (bx2 - ax2)) / d11;
|
|
1213
1212
|
const center = [
|
|
1214
1213
|
p1[0] + ccx * ux[0] + ccy * uy[0],
|
|
1215
1214
|
p1[1] + ccx * ux[1] + ccy * uy[1],
|
|
@@ -1251,7 +1250,7 @@ class BrepkitAdapter {
|
|
|
1251
1250
|
const n7 = points.length;
|
|
1252
1251
|
const knots = [...Array(degree + 1).fill(0), ...Array(degree + 1).fill(1)];
|
|
1253
1252
|
const weights = Array(n7).fill(1);
|
|
1254
|
-
const flatCp = points.flatMap(([x7,
|
|
1253
|
+
const flatCp = points.flatMap(([x7, y7, z6]) => [x7, y7, z6]);
|
|
1255
1254
|
const startPt = points[0];
|
|
1256
1255
|
const endPt = points[n7 - 1];
|
|
1257
1256
|
const id = this.bk.makeNurbsEdge(
|
|
@@ -1269,73 +1268,21 @@ class BrepkitAdapter {
|
|
|
1269
1268
|
return edgeHandle(id);
|
|
1270
1269
|
}
|
|
1271
1270
|
makeTangentArc(startPoint, startTangent, endPoint) {
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
ch[1] - chDotT * t10[1],
|
|
1288
|
-
ch[2] - chDotT * t10[2]
|
|
1289
|
-
];
|
|
1290
|
-
const perpLen = Math.sqrt(perp[0] ** 2 + perp[1] ** 2 + perp[2] ** 2);
|
|
1291
|
-
if (perpLen < 1e-12) return this.makeLineEdge(startPoint, endPoint);
|
|
1292
|
-
const n7 = [perp[0] / perpLen, perp[1] / perpLen, perp[2] / perpLen];
|
|
1293
|
-
const chord2 = ch[0] ** 2 + ch[1] ** 2 + ch[2] ** 2;
|
|
1294
|
-
const nDotCh = n7[0] * ch[0] + n7[1] * ch[1] + n7[2] * ch[2];
|
|
1295
|
-
const s6 = -chord2 / (2 * nDotCh);
|
|
1296
|
-
const center = [
|
|
1297
|
-
startPoint[0] + s6 * n7[0],
|
|
1298
|
-
startPoint[1] + s6 * n7[1],
|
|
1299
|
-
startPoint[2] + s6 * n7[2]
|
|
1300
|
-
];
|
|
1301
|
-
const radius = Math.abs(s6);
|
|
1302
|
-
const e1 = [
|
|
1303
|
-
(startPoint[0] - center[0]) / radius,
|
|
1304
|
-
(startPoint[1] - center[1]) / radius,
|
|
1305
|
-
(startPoint[2] - center[2]) / radius
|
|
1306
|
-
];
|
|
1307
|
-
const e22 = [
|
|
1308
|
-
(endPoint[0] - center[0]) / radius,
|
|
1309
|
-
(endPoint[1] - center[1]) / radius,
|
|
1310
|
-
(endPoint[2] - center[2]) / radius
|
|
1311
|
-
];
|
|
1312
|
-
let mx = e1[0] + e22[0];
|
|
1313
|
-
let my = e1[1] + e22[1];
|
|
1314
|
-
let mz = e1[2] + e22[2];
|
|
1315
|
-
let mLen = Math.sqrt(mx * mx + my * my + mz * mz);
|
|
1316
|
-
if (mLen < 1e-12) {
|
|
1317
|
-
mx = t10[0];
|
|
1318
|
-
my = t10[1];
|
|
1319
|
-
mz = t10[2];
|
|
1320
|
-
mLen = 1;
|
|
1321
|
-
}
|
|
1322
|
-
const mid = [
|
|
1323
|
-
center[0] + radius * mx / mLen,
|
|
1324
|
-
center[1] + radius * my / mLen,
|
|
1325
|
-
center[2] + radius * mz / mLen
|
|
1326
|
-
];
|
|
1327
|
-
const toMid = [
|
|
1328
|
-
mid[0] - startPoint[0],
|
|
1329
|
-
mid[1] - startPoint[1],
|
|
1330
|
-
mid[2] - startPoint[2]
|
|
1331
|
-
];
|
|
1332
|
-
const dotTM = t10[0] * toMid[0] + t10[1] * toMid[1] + t10[2] * toMid[2];
|
|
1333
|
-
if (dotTM < 0) {
|
|
1334
|
-
mid[0] = center[0] - radius * mx / mLen;
|
|
1335
|
-
mid[1] = center[1] - radius * my / mLen;
|
|
1336
|
-
mid[2] = center[2] - radius * mz / mLen;
|
|
1337
|
-
}
|
|
1338
|
-
return this.makeArcEdge(startPoint, mid, endPoint);
|
|
1271
|
+
if (!this.bk.makeTangentArc3d) {
|
|
1272
|
+
throw new Error("makeTangentArc requires brepkit-wasm >= 1.1.0");
|
|
1273
|
+
}
|
|
1274
|
+
const id = this.bk.makeTangentArc3d(
|
|
1275
|
+
startPoint[0],
|
|
1276
|
+
startPoint[1],
|
|
1277
|
+
startPoint[2],
|
|
1278
|
+
startTangent[0],
|
|
1279
|
+
startTangent[1],
|
|
1280
|
+
startTangent[2],
|
|
1281
|
+
endPoint[0],
|
|
1282
|
+
endPoint[1],
|
|
1283
|
+
endPoint[2]
|
|
1284
|
+
);
|
|
1285
|
+
return edgeHandle(id);
|
|
1339
1286
|
}
|
|
1340
1287
|
makeHelixWire(pitch, height, radius, center, _direction, leftHanded) {
|
|
1341
1288
|
const turns = height / pitch;
|
|
@@ -1388,8 +1335,8 @@ class BrepkitAdapter {
|
|
|
1388
1335
|
makeBoxFromCorners(p1, p22) {
|
|
1389
1336
|
const w7 = Math.abs(p22[0] - p1[0]);
|
|
1390
1337
|
const h10 = Math.abs(p22[1] - p1[1]);
|
|
1391
|
-
const
|
|
1392
|
-
const box = this.makeBox(w7, h10,
|
|
1338
|
+
const d11 = Math.abs(p22[2] - p1[2]);
|
|
1339
|
+
const box = this.makeBox(w7, h10, d11);
|
|
1393
1340
|
const minX = Math.min(p1[0], p22[0]);
|
|
1394
1341
|
const minY = Math.min(p1[1], p22[1]);
|
|
1395
1342
|
const minZ = Math.min(p1[2], p22[2]);
|
|
@@ -1550,7 +1497,7 @@ class BrepkitAdapter {
|
|
|
1550
1497
|
return solidHandle(this.bk.filletVariable(solidId, JSON.stringify(spec)));
|
|
1551
1498
|
}
|
|
1552
1499
|
chamfer(shape2, edges, distance) {
|
|
1553
|
-
const
|
|
1500
|
+
const d11 = typeof distance === "number" ? distance : Array.isArray(distance) ? distance[0] : 1;
|
|
1554
1501
|
if (typeof distance !== "number") {
|
|
1555
1502
|
warnOnce(
|
|
1556
1503
|
"chamfer-asymmetric",
|
|
@@ -1558,7 +1505,7 @@ class BrepkitAdapter {
|
|
|
1558
1505
|
);
|
|
1559
1506
|
}
|
|
1560
1507
|
const edgeIds = edges.map((e8) => unwrap(e8, "edge"));
|
|
1561
|
-
const id = this.bk.chamfer(unwrapSolidOrThrow(shape2, "chamfer"), edgeIds,
|
|
1508
|
+
const id = this.bk.chamfer(unwrapSolidOrThrow(shape2, "chamfer"), edgeIds, d11);
|
|
1562
1509
|
return solidHandle(id);
|
|
1563
1510
|
}
|
|
1564
1511
|
chamferDistAngle(shape2, edges, distance, angleDeg) {
|
|
@@ -1638,8 +1585,8 @@ class BrepkitAdapter {
|
|
|
1638
1585
|
}
|
|
1639
1586
|
throw new Error("brepkit: transform expects a 16-element matrix array");
|
|
1640
1587
|
}
|
|
1641
|
-
translate(shape2, x7,
|
|
1642
|
-
return this.applyMatrix(shape2, translationMatrix(x7,
|
|
1588
|
+
translate(shape2, x7, y7, z6) {
|
|
1589
|
+
return this.applyMatrix(shape2, translationMatrix(x7, y7, z6));
|
|
1643
1590
|
}
|
|
1644
1591
|
rotate(shape2, angle, axis, center) {
|
|
1645
1592
|
return this.applyMatrix(shape2, rotationMatrix(angle, axis, center));
|
|
@@ -1916,9 +1863,9 @@ class BrepkitAdapter {
|
|
|
1916
1863
|
}
|
|
1917
1864
|
}
|
|
1918
1865
|
}
|
|
1919
|
-
translateWithHistory(shape2, x7,
|
|
1866
|
+
translateWithHistory(shape2, x7, y7, z6, inputFaceHashes, hashUpperBound) {
|
|
1920
1867
|
return this.buildEvolution(
|
|
1921
|
-
this.translate(shape2, x7,
|
|
1868
|
+
this.translate(shape2, x7, y7, z6),
|
|
1922
1869
|
inputFaceHashes,
|
|
1923
1870
|
hashUpperBound,
|
|
1924
1871
|
true
|
|
@@ -1992,20 +1939,20 @@ class BrepkitAdapter {
|
|
|
1992
1939
|
result.evolution.deleted,
|
|
1993
1940
|
intermediateOutputs
|
|
1994
1941
|
);
|
|
1995
|
-
for (const [k7,
|
|
1942
|
+
for (const [k7, v8] of result.evolution.modified) {
|
|
1996
1943
|
if (!combinedModified.has(k7) && !intermediateOutputs.has(k7)) {
|
|
1997
|
-
combinedModified.set(k7, [...
|
|
1944
|
+
combinedModified.set(k7, [...v8]);
|
|
1998
1945
|
}
|
|
1999
1946
|
}
|
|
2000
|
-
for (const [k7,
|
|
1947
|
+
for (const [k7, v8] of result.evolution.generated) {
|
|
2001
1948
|
if (!intermediateOutputs.has(k7)) {
|
|
2002
1949
|
const existing = combinedGenerated.get(k7) ?? [];
|
|
2003
|
-
combinedGenerated.set(k7, [...existing, ...
|
|
1950
|
+
combinedGenerated.set(k7, [...existing, ...v8]);
|
|
2004
1951
|
}
|
|
2005
1952
|
}
|
|
2006
|
-
for (const
|
|
2007
|
-
if (inputFaceHashSet.has(
|
|
2008
|
-
combinedDeleted.add(
|
|
1953
|
+
for (const d11 of result.evolution.deleted) {
|
|
1954
|
+
if (inputFaceHashSet.has(d11)) {
|
|
1955
|
+
combinedDeleted.add(d11);
|
|
2009
1956
|
}
|
|
2010
1957
|
}
|
|
2011
1958
|
}
|
|
@@ -2210,7 +2157,7 @@ class BrepkitAdapter {
|
|
|
2210
2157
|
}
|
|
2211
2158
|
exportSTEPAssembly(parts, _options) {
|
|
2212
2159
|
if (parts.length === 0) return "";
|
|
2213
|
-
const shapes = parts.map((
|
|
2160
|
+
const shapes = parts.map((p8) => p8.shape);
|
|
2214
2161
|
return this.exportSTEP(shapes);
|
|
2215
2162
|
}
|
|
2216
2163
|
// ═══════════════════════════════════════════════════════════════════════
|
|
@@ -2288,11 +2235,11 @@ class BrepkitAdapter {
|
|
|
2288
2235
|
const vertices = this.iterShapes(shape2, "vertex");
|
|
2289
2236
|
if (vertices.length > 0) {
|
|
2290
2237
|
let sx = 0, sy = 0, sz = 0;
|
|
2291
|
-
for (const
|
|
2292
|
-
const
|
|
2293
|
-
sx +=
|
|
2294
|
-
sy +=
|
|
2295
|
-
sz +=
|
|
2238
|
+
for (const v8 of vertices) {
|
|
2239
|
+
const p8 = this.vertexPosition(v8);
|
|
2240
|
+
sx += p8[0];
|
|
2241
|
+
sy += p8[1];
|
|
2242
|
+
sz += p8[2];
|
|
2296
2243
|
}
|
|
2297
2244
|
return [sx / vertices.length, sy / vertices.length, sz / vertices.length];
|
|
2298
2245
|
}
|
|
@@ -2331,13 +2278,13 @@ class BrepkitAdapter {
|
|
|
2331
2278
|
let minX = first[0], minY = first[1], minZ = first[2];
|
|
2332
2279
|
let maxX = first[0], maxY = first[1], maxZ = first[2];
|
|
2333
2280
|
for (let i9 = 1; i9 < vertices.length; i9++) {
|
|
2334
|
-
const
|
|
2335
|
-
if (
|
|
2336
|
-
if (
|
|
2337
|
-
if (
|
|
2338
|
-
if (
|
|
2339
|
-
if (
|
|
2340
|
-
if (
|
|
2281
|
+
const p8 = this.vertexPosition(vertices[i9]);
|
|
2282
|
+
if (p8[0] < minX) minX = p8[0];
|
|
2283
|
+
if (p8[0] > maxX) maxX = p8[0];
|
|
2284
|
+
if (p8[1] < minY) minY = p8[1];
|
|
2285
|
+
if (p8[1] > maxY) maxY = p8[1];
|
|
2286
|
+
if (p8[2] < minZ) minZ = p8[2];
|
|
2287
|
+
if (p8[2] > maxZ) maxZ = p8[2];
|
|
2341
2288
|
}
|
|
2342
2289
|
return { min: [minX, minY, minZ], max: [maxX, maxY, maxZ] };
|
|
2343
2290
|
}
|
|
@@ -2439,11 +2386,11 @@ class BrepkitAdapter {
|
|
|
2439
2386
|
[verts[0], verts[1], verts[2]],
|
|
2440
2387
|
[verts[3], verts[4], verts[5]]
|
|
2441
2388
|
];
|
|
2442
|
-
for (const [x7,
|
|
2443
|
-
const key = `${x7},${
|
|
2389
|
+
for (const [x7, y7, z6] of coords) {
|
|
2390
|
+
const key = `${x7},${y7},${z6}`;
|
|
2444
2391
|
if (!seen.has(key)) {
|
|
2445
2392
|
seen.add(key);
|
|
2446
|
-
results.push(vertexHandle(this.bk.makeVertex(x7,
|
|
2393
|
+
results.push(vertexHandle(this.bk.makeVertex(x7, y7, z6)));
|
|
2447
2394
|
}
|
|
2448
2395
|
}
|
|
2449
2396
|
}
|
|
@@ -2519,13 +2466,13 @@ class BrepkitAdapter {
|
|
|
2519
2466
|
const id = this.bk.getFaceOuterWire(unwrap(face, "face"));
|
|
2520
2467
|
return wireHandle(id);
|
|
2521
2468
|
}
|
|
2522
|
-
surfaceNormal(face, u8,
|
|
2523
|
-
const n7 = this.bk.evaluateSurfaceNormal(unwrap(face, "face"), u8,
|
|
2469
|
+
surfaceNormal(face, u8, v8) {
|
|
2470
|
+
const n7 = this.bk.evaluateSurfaceNormal(unwrap(face, "face"), u8, v8);
|
|
2524
2471
|
return [n7[0], n7[1], n7[2]];
|
|
2525
2472
|
}
|
|
2526
|
-
pointOnSurface(face, u8,
|
|
2527
|
-
const
|
|
2528
|
-
return [
|
|
2473
|
+
pointOnSurface(face, u8, v8) {
|
|
2474
|
+
const p8 = this.bk.evaluateSurface(unwrap(face, "face"), u8, v8);
|
|
2475
|
+
return [p8[0], p8[1], p8[2]];
|
|
2529
2476
|
}
|
|
2530
2477
|
uvFromPoint(face, point) {
|
|
2531
2478
|
try {
|
|
@@ -2562,11 +2509,11 @@ class BrepkitAdapter {
|
|
|
2562
2509
|
edgeId = edgeIds[edgeIds.length - 1];
|
|
2563
2510
|
let cumulative = 0;
|
|
2564
2511
|
for (const eid of edgeIds) {
|
|
2565
|
-
const
|
|
2566
|
-
const span =
|
|
2512
|
+
const p8 = this.bk.getEdgeCurveParameters(eid);
|
|
2513
|
+
const span = p8[1] - p8[0];
|
|
2567
2514
|
if (param <= cumulative + span || eid === edgeId) {
|
|
2568
2515
|
edgeId = eid;
|
|
2569
|
-
evalParam = Math.min(
|
|
2516
|
+
evalParam = Math.min(p8[0] + (param - cumulative), p8[1]);
|
|
2570
2517
|
break;
|
|
2571
2518
|
}
|
|
2572
2519
|
cumulative += span;
|
|
@@ -2587,8 +2534,8 @@ class BrepkitAdapter {
|
|
|
2587
2534
|
if (edgeIds.length === 0) return [0, 0];
|
|
2588
2535
|
let total = 0;
|
|
2589
2536
|
for (const eid of edgeIds) {
|
|
2590
|
-
const
|
|
2591
|
-
total +=
|
|
2537
|
+
const p8 = this.bk.getEdgeCurveParameters(eid);
|
|
2538
|
+
total += p8[1] - p8[0];
|
|
2592
2539
|
}
|
|
2593
2540
|
return [0, total];
|
|
2594
2541
|
}
|
|
@@ -2615,8 +2562,8 @@ class BrepkitAdapter {
|
|
|
2615
2562
|
return [pt[0], pt[1], pt[2]];
|
|
2616
2563
|
}
|
|
2617
2564
|
const edgeId = unwrap(shape2, "edge");
|
|
2618
|
-
const
|
|
2619
|
-
return [
|
|
2565
|
+
const p8 = this.bk.evaluateEdgeCurve(edgeId, param);
|
|
2566
|
+
return [p8[0], p8[1], p8[2]];
|
|
2620
2567
|
}
|
|
2621
2568
|
curveIsClosed(shape2) {
|
|
2622
2569
|
const h10 = shape2;
|
|
@@ -2804,8 +2751,8 @@ class BrepkitAdapter {
|
|
|
2804
2751
|
const h1 = shape1;
|
|
2805
2752
|
const h22 = shape2;
|
|
2806
2753
|
if (h1.type === "solid" && h22.type === "solid") {
|
|
2807
|
-
const
|
|
2808
|
-
return { value:
|
|
2754
|
+
const d11 = this.bk.solidToSolidDistance(h1.id, h22.id);
|
|
2755
|
+
return { value: d11, point1: [0, 0, 0], point2: [0, 0, 0] };
|
|
2809
2756
|
}
|
|
2810
2757
|
if (h1.type === "vertex" && h22.type === "solid") {
|
|
2811
2758
|
const pos = this.bk.getVertexPosition(h1.id);
|
|
@@ -2836,8 +2783,8 @@ class BrepkitAdapter {
|
|
|
2836
2783
|
}
|
|
2837
2784
|
const getPos = (s6) => {
|
|
2838
2785
|
if (s6.type === "vertex") {
|
|
2839
|
-
const
|
|
2840
|
-
return [
|
|
2786
|
+
const p8 = this.bk.getVertexPosition(s6.id);
|
|
2787
|
+
return [p8[0], p8[1], p8[2]];
|
|
2841
2788
|
}
|
|
2842
2789
|
if (s6.type === "solid") {
|
|
2843
2790
|
const bb = this.bk.boundingBox(s6.id);
|
|
@@ -2855,7 +2802,7 @@ class BrepkitAdapter {
|
|
|
2855
2802
|
// ═══════════════════════════════════════════════════════════════════════
|
|
2856
2803
|
// Classification
|
|
2857
2804
|
// ═══════════════════════════════════════════════════════════════════════
|
|
2858
|
-
classifyPointOnFace(face, u8,
|
|
2805
|
+
classifyPointOnFace(face, u8, v8, tolerance) {
|
|
2859
2806
|
if (tolerance !== void 0) {
|
|
2860
2807
|
warnOnce(
|
|
2861
2808
|
"classify-tolerance",
|
|
@@ -2864,7 +2811,7 @@ class BrepkitAdapter {
|
|
|
2864
2811
|
}
|
|
2865
2812
|
const faceId = unwrap(face, "face");
|
|
2866
2813
|
const domain = this.bk.getSurfaceDomain(faceId);
|
|
2867
|
-
if (u8 < domain[0] || u8 > domain[1] ||
|
|
2814
|
+
if (u8 < domain[0] || u8 > domain[1] || v8 < domain[2] || v8 > domain[3]) {
|
|
2868
2815
|
return "out";
|
|
2869
2816
|
}
|
|
2870
2817
|
return "in";
|
|
@@ -2884,7 +2831,7 @@ class BrepkitAdapter {
|
|
|
2884
2831
|
return this.makeLineEdge(points[0], points[1]);
|
|
2885
2832
|
}
|
|
2886
2833
|
const degree = Math.min(3, points.length - 1);
|
|
2887
|
-
const coords = points.flatMap(([x7,
|
|
2834
|
+
const coords = points.flatMap(([x7, y7, z6]) => [x7, y7, z6]);
|
|
2888
2835
|
const id = this.bk.interpolatePoints(coords, degree);
|
|
2889
2836
|
return edgeHandle(id);
|
|
2890
2837
|
}
|
|
@@ -2892,7 +2839,7 @@ class BrepkitAdapter {
|
|
|
2892
2839
|
const degree = options?.degMax ?? 3;
|
|
2893
2840
|
const tol = options?.tolerance ?? 1e-6;
|
|
2894
2841
|
const coords = [];
|
|
2895
|
-
for (const
|
|
2842
|
+
for (const p8 of points) coords.push(p8[0], p8[1], p8[2]);
|
|
2896
2843
|
const numCps = Math.max(degree + 1, Math.min(points.length, Math.ceil(points.length * 0.7)));
|
|
2897
2844
|
const id = this.bk.approximateCurveLspia(coords, degree, numCps, tol, 100);
|
|
2898
2845
|
return edgeHandle(id);
|
|
@@ -3088,8 +3035,8 @@ class BrepkitAdapter {
|
|
|
3088
3035
|
}
|
|
3089
3036
|
bsplineSurface(points, rows, cols) {
|
|
3090
3037
|
const coords = [];
|
|
3091
|
-
for (const [x7,
|
|
3092
|
-
coords.push(x7,
|
|
3038
|
+
for (const [x7, y7, z6] of points) {
|
|
3039
|
+
coords.push(x7, y7, z6);
|
|
3093
3040
|
}
|
|
3094
3041
|
const degreeU = Math.min(3, rows - 1);
|
|
3095
3042
|
const degreeV = Math.min(3, cols - 1);
|
|
@@ -3162,9 +3109,9 @@ class BrepkitAdapter {
|
|
|
3162
3109
|
// ═══════════════════════════════════════════════════════════════════════
|
|
3163
3110
|
// Measurement (advanced)
|
|
3164
3111
|
// ═══════════════════════════════════════════════════════════════════════
|
|
3165
|
-
surfaceCurvature(face, u8,
|
|
3112
|
+
surfaceCurvature(face, u8, v8) {
|
|
3166
3113
|
const fid = unwrap(face, "face");
|
|
3167
|
-
const data = this.bk.measureCurvatureAtSurface(fid, u8,
|
|
3114
|
+
const data = this.bk.measureCurvatureAtSurface(fid, u8, v8);
|
|
3168
3115
|
if (data.length < 8) {
|
|
3169
3116
|
throw new Error(
|
|
3170
3117
|
`brepkit: measureCurvatureAtSurface returned ${data.length} values, expected 8`
|
|
@@ -3305,15 +3252,15 @@ class BrepkitAdapter {
|
|
|
3305
3252
|
// ═══════════════════════════════════════════════════════════════════════
|
|
3306
3253
|
// 3D geometry primitive factories
|
|
3307
3254
|
// ═══════════════════════════════════════════════════════════════════════
|
|
3308
|
-
createPoint3d(x7,
|
|
3309
|
-
return { x: x7, y:
|
|
3255
|
+
createPoint3d(x7, y7, z6) {
|
|
3256
|
+
return { x: x7, y: y7, z: z6 };
|
|
3310
3257
|
}
|
|
3311
|
-
createDirection3d(x7,
|
|
3312
|
-
const len = Math.sqrt(x7 * x7 +
|
|
3313
|
-
return { x: x7 / len, y:
|
|
3258
|
+
createDirection3d(x7, y7, z6) {
|
|
3259
|
+
const len = Math.sqrt(x7 * x7 + y7 * y7 + z6 * z6);
|
|
3260
|
+
return { x: x7 / len, y: y7 / len, z: z6 / len };
|
|
3314
3261
|
}
|
|
3315
|
-
createVector3d(x7,
|
|
3316
|
-
return { x: x7, y:
|
|
3262
|
+
createVector3d(x7, y7, z6) {
|
|
3263
|
+
return { x: x7, y: y7, z: z6 };
|
|
3317
3264
|
}
|
|
3318
3265
|
createAxis1(cx, cy, cz, dx, dy, dz) {
|
|
3319
3266
|
return { origin: [cx, cy, cz], direction: [dx, dy, dz] };
|
|
@@ -3382,15 +3329,15 @@ class BrepkitAdapter {
|
|
|
3382
3329
|
bb2d(h10) {
|
|
3383
3330
|
return h10;
|
|
3384
3331
|
}
|
|
3385
|
-
createPoint2d(x7,
|
|
3386
|
-
return { x: x7, y:
|
|
3332
|
+
createPoint2d(x7, y7) {
|
|
3333
|
+
return { x: x7, y: y7 };
|
|
3387
3334
|
}
|
|
3388
|
-
createDirection2d(x7,
|
|
3389
|
-
const l10 = Math.sqrt(x7 * x7 +
|
|
3390
|
-
return { x: x7 / l10, y:
|
|
3335
|
+
createDirection2d(x7, y7) {
|
|
3336
|
+
const l10 = Math.sqrt(x7 * x7 + y7 * y7);
|
|
3337
|
+
return { x: x7 / l10, y: y7 / l10 };
|
|
3391
3338
|
}
|
|
3392
|
-
createVector2d(x7,
|
|
3393
|
-
return { x: x7, y:
|
|
3339
|
+
createVector2d(x7, y7) {
|
|
3340
|
+
return { x: x7, y: y7 };
|
|
3394
3341
|
}
|
|
3395
3342
|
createAxis2d(px, py, dx, dy) {
|
|
3396
3343
|
return { px, py, dx, dy, delete: noop };
|
|
@@ -3408,12 +3355,12 @@ class BrepkitAdapter {
|
|
|
3408
3355
|
return makeCircle2d(cx, cy, radius, sense);
|
|
3409
3356
|
}
|
|
3410
3357
|
makeArc2dThreePoints(x1, y1, xm, ym, x22, y22) {
|
|
3411
|
-
const
|
|
3412
|
-
if (Math.abs(
|
|
3358
|
+
const d11 = 2 * (x1 * (ym - y22) + xm * (y22 - y1) + x22 * (y1 - ym));
|
|
3359
|
+
if (Math.abs(d11) < 1e-12) {
|
|
3413
3360
|
return makeLine2d(x1, y1, x22, y22);
|
|
3414
3361
|
}
|
|
3415
|
-
const cx = ((x1 * x1 + y1 * y1) * (ym - y22) + (xm * xm + ym * ym) * (y22 - y1) + (x22 * x22 + y22 * y22) * (y1 - ym)) /
|
|
3416
|
-
const cy = ((x1 * x1 + y1 * y1) * (x22 - xm) + (xm * xm + ym * ym) * (x1 - x22) + (x22 * x22 + y22 * y22) * (xm - x1)) /
|
|
3362
|
+
const cx = ((x1 * x1 + y1 * y1) * (ym - y22) + (xm * xm + ym * ym) * (y22 - y1) + (x22 * x22 + y22 * y22) * (y1 - ym)) / d11;
|
|
3363
|
+
const cy = ((x1 * x1 + y1 * y1) * (x22 - xm) + (xm * xm + ym * ym) * (x1 - x22) + (x22 * x22 + y22 * y22) * (xm - x1)) / d11;
|
|
3417
3364
|
const radius = Math.sqrt((x1 - cx) ** 2 + (y1 - cy) ** 2);
|
|
3418
3365
|
const a12 = Math.atan2(y1 - cy, x1 - cx);
|
|
3419
3366
|
const am = Math.atan2(ym - cy, xm - cx);
|
|
@@ -3663,23 +3610,23 @@ class BrepkitAdapter {
|
|
|
3663
3610
|
);
|
|
3664
3611
|
return { points: result.points, segments };
|
|
3665
3612
|
}
|
|
3666
|
-
projectPointOnCurve2d(curve, x7,
|
|
3613
|
+
projectPointOnCurve2d(curve, x7, y7) {
|
|
3667
3614
|
const c8 = this.c2d(curve);
|
|
3668
3615
|
const bounds = curveBounds(c8);
|
|
3669
3616
|
if (c8.__bk2d === "line") {
|
|
3670
3617
|
const dx = x7 - c8.ox;
|
|
3671
|
-
const dy =
|
|
3618
|
+
const dy = y7 - c8.oy;
|
|
3672
3619
|
const t10 = Math.max(bounds.first, Math.min(bounds.last, dx * c8.dx + dy * c8.dy));
|
|
3673
3620
|
const [px, py] = evaluateCurve2d(c8, t10);
|
|
3674
|
-
return { param: t10, distance: Math.sqrt((px - x7) ** 2 + (py -
|
|
3621
|
+
return { param: t10, distance: Math.sqrt((px - x7) ** 2 + (py - y7) ** 2) };
|
|
3675
3622
|
}
|
|
3676
3623
|
if (c8.__bk2d === "circle") {
|
|
3677
|
-
const angle = Math.atan2(
|
|
3624
|
+
const angle = Math.atan2(y7 - c8.cy, x7 - c8.cx);
|
|
3678
3625
|
let t10 = c8.sense ? angle : -angle;
|
|
3679
3626
|
while (t10 < 0) t10 += 2 * Math.PI;
|
|
3680
3627
|
while (t10 > 2 * Math.PI) t10 -= 2 * Math.PI;
|
|
3681
3628
|
const [px, py] = evaluateCurve2d(c8, t10);
|
|
3682
|
-
return { param: t10, distance: Math.sqrt((px - x7) ** 2 + (py -
|
|
3629
|
+
return { param: t10, distance: Math.sqrt((px - x7) ** 2 + (py - y7) ** 2) };
|
|
3683
3630
|
}
|
|
3684
3631
|
if (!isFinite(bounds.first) || !isFinite(bounds.last)) return null;
|
|
3685
3632
|
let bestT = bounds.first;
|
|
@@ -3689,16 +3636,16 @@ class BrepkitAdapter {
|
|
|
3689
3636
|
for (let i9 = 0; i9 <= N4; i9++) {
|
|
3690
3637
|
const t10 = bounds.first + i9 * dt;
|
|
3691
3638
|
const [px, py] = evaluateCurve2d(c8, t10);
|
|
3692
|
-
const
|
|
3693
|
-
if (
|
|
3694
|
-
bestDist =
|
|
3639
|
+
const d11 = (px - x7) ** 2 + (py - y7) ** 2;
|
|
3640
|
+
if (d11 < bestDist) {
|
|
3641
|
+
bestDist = d11;
|
|
3695
3642
|
bestT = t10;
|
|
3696
3643
|
}
|
|
3697
3644
|
}
|
|
3698
3645
|
for (let iter = 0; iter < 10; iter++) {
|
|
3699
3646
|
const [px, py] = evaluateCurve2d(c8, bestT);
|
|
3700
3647
|
const [tx, ty] = tangentCurve2d(c8, bestT);
|
|
3701
|
-
const dot = (px - x7) * tx + (py -
|
|
3648
|
+
const dot = (px - x7) * tx + (py - y7) * ty;
|
|
3702
3649
|
const denom = tx * tx + ty * ty;
|
|
3703
3650
|
if (denom < 1e-20) break;
|
|
3704
3651
|
const step = dot / denom;
|
|
@@ -3707,7 +3654,7 @@ class BrepkitAdapter {
|
|
|
3707
3654
|
bestT = newT;
|
|
3708
3655
|
}
|
|
3709
3656
|
const [fx, fy] = evaluateCurve2d(c8, bestT);
|
|
3710
|
-
return { param: bestT, distance: Math.sqrt((fx - x7) ** 2 + (fy -
|
|
3657
|
+
return { param: bestT, distance: Math.sqrt((fx - x7) ** 2 + (fy - y7) ** 2) };
|
|
3711
3658
|
}
|
|
3712
3659
|
distanceBetweenCurves2d(c1, c22, p1s, p1e, p2s, p2e) {
|
|
3713
3660
|
const curve1 = this.c2d(c1);
|
|
@@ -3722,9 +3669,9 @@ class BrepkitAdapter {
|
|
|
3722
3669
|
for (let j7 = 0; j7 <= N4; j7++) {
|
|
3723
3670
|
const t222 = p2s + (p2e - p2s) * j7 / N4;
|
|
3724
3671
|
const [x22, y22] = evaluateCurve2d(curve2, t222);
|
|
3725
|
-
const
|
|
3726
|
-
if (
|
|
3727
|
-
minDistSq =
|
|
3672
|
+
const d11 = (x22 - x1) ** 2 + (y22 - y1) ** 2;
|
|
3673
|
+
if (d11 < minDistSq) {
|
|
3674
|
+
minDistSq = d11;
|
|
3728
3675
|
bestT1 = t12;
|
|
3729
3676
|
bestT2 = t222;
|
|
3730
3677
|
}
|
|
@@ -3844,9 +3791,9 @@ class BrepkitAdapter {
|
|
|
3844
3791
|
const ba = this.bb2d(a9), bb = this.bb2d(b9);
|
|
3845
3792
|
return ba.xMax < bb.xMin || bb.xMax < ba.xMin || ba.yMax < bb.yMin || bb.yMax < ba.yMin;
|
|
3846
3793
|
}
|
|
3847
|
-
isBBox2dOutPoint(bbox, x7,
|
|
3794
|
+
isBBox2dOutPoint(bbox, x7, y7) {
|
|
3848
3795
|
const b9 = this.bb2d(bbox);
|
|
3849
|
-
return x7 < b9.xMin || x7 > b9.xMax ||
|
|
3796
|
+
return x7 < b9.xMin || x7 > b9.xMax || y7 < b9.yMin || y7 > b9.yMax;
|
|
3850
3797
|
}
|
|
3851
3798
|
// --- 2D type extraction ---
|
|
3852
3799
|
getCurve2dCircleData(curve) {
|
|
@@ -3913,15 +3860,15 @@ class BrepkitAdapter {
|
|
|
3913
3860
|
// --- 2D → 3D projection ---
|
|
3914
3861
|
liftCurve2dToPlane(curve, origin, planeZ, planeX) {
|
|
3915
3862
|
const c8 = this.c2d(curve);
|
|
3916
|
-
const
|
|
3863
|
+
const y7 = [
|
|
3917
3864
|
planeZ[1] * planeX[2] - planeZ[2] * planeX[1],
|
|
3918
3865
|
planeZ[2] * planeX[0] - planeZ[0] * planeX[2],
|
|
3919
3866
|
planeZ[0] * planeX[1] - planeZ[1] * planeX[0]
|
|
3920
3867
|
];
|
|
3921
|
-
const lift = (u8,
|
|
3922
|
-
origin[0] + u8 * planeX[0] +
|
|
3923
|
-
origin[1] + u8 * planeX[1] +
|
|
3924
|
-
origin[2] + u8 * planeX[2] +
|
|
3868
|
+
const lift = (u8, v8) => [
|
|
3869
|
+
origin[0] + u8 * planeX[0] + v8 * y7[0],
|
|
3870
|
+
origin[1] + u8 * planeX[1] + v8 * y7[1],
|
|
3871
|
+
origin[2] + u8 * planeX[2] + v8 * y7[2]
|
|
3925
3872
|
];
|
|
3926
3873
|
if (c8.__bk2d === "line") {
|
|
3927
3874
|
const p1 = lift(c8.ox, c8.oy);
|
|
@@ -3957,7 +3904,7 @@ class BrepkitAdapter {
|
|
|
3957
3904
|
}
|
|
3958
3905
|
}
|
|
3959
3906
|
if (c8.__bk2d === "bezier" || c8.__bk2d === "bspline") {
|
|
3960
|
-
const points3d = c8.poles.map(([u8,
|
|
3907
|
+
const points3d = c8.poles.map(([u8, v8]) => lift(u8, v8));
|
|
3961
3908
|
if (points3d.length === 2) return this.makeLineEdge(points3d[0], points3d[1]);
|
|
3962
3909
|
const degree = Math.min(3, points3d.length - 1);
|
|
3963
3910
|
const coords = points3d.flatMap(([px, py, pz]) => [px, py, pz]);
|
|
@@ -3969,8 +3916,8 @@ class BrepkitAdapter {
|
|
|
3969
3916
|
const points = [];
|
|
3970
3917
|
for (let i9 = 0; i9 <= nSamples; i9++) {
|
|
3971
3918
|
const t10 = bounds.first + (bounds.last - bounds.first) * i9 / nSamples;
|
|
3972
|
-
const [u8,
|
|
3973
|
-
points.push(lift(u8,
|
|
3919
|
+
const [u8, v8] = evaluateCurve2d(c8, t10);
|
|
3920
|
+
points.push(lift(u8, v8));
|
|
3974
3921
|
}
|
|
3975
3922
|
return this.interpolatePoints(points);
|
|
3976
3923
|
}
|
|
@@ -3985,9 +3932,9 @@ class BrepkitAdapter {
|
|
|
3985
3932
|
const points = [];
|
|
3986
3933
|
for (let i9 = 0; i9 <= N4; i9++) {
|
|
3987
3934
|
const t10 = bounds.first + (bounds.last - bounds.first) * i9 / N4;
|
|
3988
|
-
const [u8,
|
|
3989
|
-
const
|
|
3990
|
-
points.push([
|
|
3935
|
+
const [u8, v8] = evaluateCurve2d(c8, t10);
|
|
3936
|
+
const p8 = this.bk.evaluateSurface(fid, u8, v8);
|
|
3937
|
+
points.push([p8[0], p8[1], p8[2]]);
|
|
3991
3938
|
}
|
|
3992
3939
|
return this.interpolatePoints(points);
|
|
3993
3940
|
}
|
|
@@ -4072,8 +4019,8 @@ class BrepkitAdapter {
|
|
|
4072
4019
|
const pts = [];
|
|
4073
4020
|
for (let i9 = 0; i9 <= N4; i9++) {
|
|
4074
4021
|
const t10 = tMin + (tMax - tMin) * i9 / N4;
|
|
4075
|
-
const
|
|
4076
|
-
pts.push(
|
|
4022
|
+
const p8 = this.bk.evaluateEdgeCurve(edgeId, t10);
|
|
4023
|
+
pts.push(p8[0], p8[1], p8[2]);
|
|
4077
4024
|
}
|
|
4078
4025
|
allCoords.push(...pts);
|
|
4079
4026
|
curveLengths.push(N4 + 1);
|
|
@@ -4248,7 +4195,7 @@ class BrepkitAdapter {
|
|
|
4248
4195
|
const vertCount = positions.length / 3;
|
|
4249
4196
|
if (vertCount === 0) continue;
|
|
4250
4197
|
const triStart = allTriangles.length;
|
|
4251
|
-
for (const
|
|
4198
|
+
for (const v8 of positions) allVertices.push(v8);
|
|
4252
4199
|
for (const n7 of normals) allNormals.push(n7);
|
|
4253
4200
|
for (const idx of indices) {
|
|
4254
4201
|
allTriangles.push(idx + vertexOffset);
|
|
@@ -4518,8 +4465,8 @@ class BrepkitAdapter {
|
|
|
4518
4465
|
return this.bk.sketchNew();
|
|
4519
4466
|
}
|
|
4520
4467
|
/** Add a point to a constraint sketch. Returns the point index. */
|
|
4521
|
-
sketchAddPoint(sketch, x7,
|
|
4522
|
-
return this.bk.sketchAddPoint(sketch, x7,
|
|
4468
|
+
sketchAddPoint(sketch, x7, y7, fixed) {
|
|
4469
|
+
return this.bk.sketchAddPoint(sketch, x7, y7, fixed);
|
|
4523
4470
|
}
|
|
4524
4471
|
/** Add a constraint to a sketch (JSON-encoded constraint descriptor). */
|
|
4525
4472
|
sketchAddConstraint(sketch, constraintJson) {
|
|
@@ -4871,9 +4818,9 @@ function withNearestPostFilter(baseFinder, nearestPoint) {
|
|
|
4871
4818
|
let bestIdx = 0;
|
|
4872
4819
|
let bestDist = vecDistance(vertexPosition(candidates[0]), nearestPoint);
|
|
4873
4820
|
for (let i9 = 1; i9 < candidates.length; i9++) {
|
|
4874
|
-
const
|
|
4875
|
-
if (
|
|
4876
|
-
bestDist =
|
|
4821
|
+
const d11 = vecDistance(vertexPosition(candidates[i9]), nearestPoint);
|
|
4822
|
+
if (d11 < bestDist) {
|
|
4823
|
+
bestDist = d11;
|
|
4877
4824
|
bestIdx = i9;
|
|
4878
4825
|
}
|
|
4879
4826
|
}
|
|
@@ -4916,14 +4863,14 @@ function buildVertexFinder(filters) {
|
|
|
4916
4863
|
function vertexFinder() {
|
|
4917
4864
|
return buildVertexFinder([]);
|
|
4918
4865
|
}
|
|
4919
|
-
function toKernelVec(
|
|
4920
|
-
return getKernel().createVector3d(
|
|
4866
|
+
function toKernelVec(v8) {
|
|
4867
|
+
return getKernel().createVector3d(v8[0], v8[1], v8[2]);
|
|
4921
4868
|
}
|
|
4922
|
-
function toKernelPnt(
|
|
4923
|
-
return getKernel().createPoint3d(
|
|
4869
|
+
function toKernelPnt(v8) {
|
|
4870
|
+
return getKernel().createPoint3d(v8[0], v8[1], v8[2]);
|
|
4924
4871
|
}
|
|
4925
|
-
function toKernelDir(
|
|
4926
|
-
return getKernel().createDirection3d(
|
|
4872
|
+
function toKernelDir(v8) {
|
|
4873
|
+
return getKernel().createDirection3d(v8[0], v8[1], v8[2]);
|
|
4927
4874
|
}
|
|
4928
4875
|
function fromKernelVec(ocVec) {
|
|
4929
4876
|
return [ocVec.X(), ocVec.Y(), ocVec.Z()];
|
|
@@ -4934,24 +4881,24 @@ function fromKernelPnt(ocPnt) {
|
|
|
4934
4881
|
function fromKernelDir(ocDir) {
|
|
4935
4882
|
return [ocDir.X(), ocDir.Y(), ocDir.Z()];
|
|
4936
4883
|
}
|
|
4937
|
-
function withKernelVec(
|
|
4938
|
-
const ocVec = toKernelVec(
|
|
4884
|
+
function withKernelVec(v8, fn) {
|
|
4885
|
+
const ocVec = toKernelVec(v8);
|
|
4939
4886
|
try {
|
|
4940
4887
|
return fn(ocVec);
|
|
4941
4888
|
} finally {
|
|
4942
4889
|
ocVec.delete();
|
|
4943
4890
|
}
|
|
4944
4891
|
}
|
|
4945
|
-
function withKernelPnt(
|
|
4946
|
-
const ocPnt = toKernelPnt(
|
|
4892
|
+
function withKernelPnt(v8, fn) {
|
|
4893
|
+
const ocPnt = toKernelPnt(v8);
|
|
4947
4894
|
try {
|
|
4948
4895
|
return fn(ocPnt);
|
|
4949
4896
|
} finally {
|
|
4950
4897
|
ocPnt.delete();
|
|
4951
4898
|
}
|
|
4952
4899
|
}
|
|
4953
|
-
function withKernelDir(
|
|
4954
|
-
const ocDir = toKernelDir(
|
|
4900
|
+
function withKernelDir(v8, fn) {
|
|
4901
|
+
const ocDir = toKernelDir(v8);
|
|
4955
4902
|
try {
|
|
4956
4903
|
return fn(ocDir);
|
|
4957
4904
|
} finally {
|
|
@@ -5099,12 +5046,12 @@ async function surfaceFromImage(blob, options = {}) {
|
|
|
5099
5046
|
const imageData = ctx.getImageData(0, 0, w7, h10);
|
|
5100
5047
|
const data = imageData.data;
|
|
5101
5048
|
const rows = [];
|
|
5102
|
-
for (let
|
|
5049
|
+
for (let y7 = 0; y7 < h10; y7 += downsample) {
|
|
5103
5050
|
const row = [];
|
|
5104
5051
|
for (let x7 = 0; x7 < w7; x7 += downsample) {
|
|
5105
|
-
const idx = (
|
|
5052
|
+
const idx = (y7 * w7 + x7) * 4;
|
|
5106
5053
|
const r9 = data[idx] ?? 0;
|
|
5107
|
-
const
|
|
5054
|
+
const g10 = data[idx + 1] ?? 0;
|
|
5108
5055
|
const b9 = data[idx + 2] ?? 0;
|
|
5109
5056
|
let value;
|
|
5110
5057
|
switch (channel) {
|
|
@@ -5112,13 +5059,13 @@ async function surfaceFromImage(blob, options = {}) {
|
|
|
5112
5059
|
value = r9 / 255;
|
|
5113
5060
|
break;
|
|
5114
5061
|
case "g":
|
|
5115
|
-
value =
|
|
5062
|
+
value = g10 / 255;
|
|
5116
5063
|
break;
|
|
5117
5064
|
case "b":
|
|
5118
5065
|
value = b9 / 255;
|
|
5119
5066
|
break;
|
|
5120
5067
|
default:
|
|
5121
|
-
value = (REC601_R * r9 + REC601_G *
|
|
5068
|
+
value = (REC601_R * r9 + REC601_G * g10 + REC601_B * b9) / 255;
|
|
5122
5069
|
break;
|
|
5123
5070
|
}
|
|
5124
5071
|
row.push(value);
|
|
@@ -5312,7 +5259,7 @@ function polyhedron(points, faces, options = {}) {
|
|
|
5312
5259
|
}
|
|
5313
5260
|
try {
|
|
5314
5261
|
const kernel = getKernel();
|
|
5315
|
-
const ptObjs = points.map(([x7,
|
|
5262
|
+
const ptObjs = points.map(([x7, y7, z6]) => ({ x: x7, y: y7, z: z6 }));
|
|
5316
5263
|
const resultOc = kernel.buildSolidFromFaces(ptObjs, triangles, tolerance);
|
|
5317
5264
|
const cast = castShape(resultOc);
|
|
5318
5265
|
if (!isSolid(cast)) {
|
|
@@ -5423,13 +5370,13 @@ function cross2(ax, ay, bx, by) {
|
|
|
5423
5370
|
function dot2(ax, ay, bx, by) {
|
|
5424
5371
|
return ax * bx + ay * by;
|
|
5425
5372
|
}
|
|
5426
|
-
function len2(x7,
|
|
5427
|
-
return Math.sqrt(x7 * x7 +
|
|
5373
|
+
function len2(x7, y7) {
|
|
5374
|
+
return Math.sqrt(x7 * x7 + y7 * y7);
|
|
5428
5375
|
}
|
|
5429
5376
|
function polyAt(poly, i9) {
|
|
5430
|
-
const
|
|
5431
|
-
if (!
|
|
5432
|
-
return
|
|
5377
|
+
const p8 = poly[(i9 % poly.length + poly.length) % poly.length];
|
|
5378
|
+
if (!p8) throw new Error(`Invalid polygon index ${i9} for length ${poly.length}`);
|
|
5379
|
+
return p8;
|
|
5433
5380
|
}
|
|
5434
5381
|
function ensureCCW(poly) {
|
|
5435
5382
|
let area = 0;
|
|
@@ -5474,11 +5421,11 @@ function isLavNodeReflex(node) {
|
|
|
5474
5421
|
return cross2(node.x - prev.x, node.y - prev.y, next.x - node.x, next.y - node.y) < -EPS;
|
|
5475
5422
|
}
|
|
5476
5423
|
function createLav(poly) {
|
|
5477
|
-
const nodes = poly.map((
|
|
5424
|
+
const nodes = poly.map((p8, i9) => {
|
|
5478
5425
|
const b9 = bisector(poly, i9);
|
|
5479
5426
|
return {
|
|
5480
|
-
x:
|
|
5481
|
-
y:
|
|
5427
|
+
x: p8.x,
|
|
5428
|
+
y: p8.y,
|
|
5482
5429
|
bx: b9.dx,
|
|
5483
5430
|
by: b9.dy,
|
|
5484
5431
|
origIdx: i9,
|
|
@@ -5564,8 +5511,8 @@ function computeEvents(lavNodes) {
|
|
|
5564
5511
|
const t10 = bisectorIntersectTime(node, node.next);
|
|
5565
5512
|
if (t10 !== null && t10 > EPS) {
|
|
5566
5513
|
const x7 = node.x + t10 * node.bx;
|
|
5567
|
-
const
|
|
5568
|
-
events.push({ time: t10, x: x7, y:
|
|
5514
|
+
const y7 = node.y + t10 * node.by;
|
|
5515
|
+
events.push({ time: t10, x: x7, y: y7, nodeA: node, nodeB: node.next, type: "edge" });
|
|
5569
5516
|
}
|
|
5570
5517
|
if (isLavNodeReflex(node)) {
|
|
5571
5518
|
let cur = node.next.next;
|
|
@@ -5574,8 +5521,8 @@ function computeEvents(lavNodes) {
|
|
|
5574
5521
|
const st = raySplitTime(node, cur, cur.next);
|
|
5575
5522
|
if (st !== null && st > EPS) {
|
|
5576
5523
|
const x7 = node.x + st * node.bx;
|
|
5577
|
-
const
|
|
5578
|
-
events.push({ time: st, x: x7, y:
|
|
5524
|
+
const y7 = node.y + st * node.by;
|
|
5525
|
+
events.push({ time: st, x: x7, y: y7, nodeA: node, nodeB: cur, type: "split" });
|
|
5579
5526
|
}
|
|
5580
5527
|
cur = cur.next;
|
|
5581
5528
|
count++;
|
|
@@ -5814,9 +5761,9 @@ function earClipTriangulate(poly) {
|
|
|
5814
5761
|
if (cross2d(a9.x, a9.y, b9.x, b9.y, c8.x, c8.y) <= 0) return false;
|
|
5815
5762
|
for (const vi of idx) {
|
|
5816
5763
|
if (vi === prev || vi === curr || vi === next) continue;
|
|
5817
|
-
const
|
|
5818
|
-
if (!
|
|
5819
|
-
if (pointInTriangle(
|
|
5764
|
+
const p8 = poly[vi];
|
|
5765
|
+
if (!p8) continue;
|
|
5766
|
+
if (pointInTriangle(p8.x, p8.y, a9.x, a9.y, b9.x, b9.y, c8.x, c8.y)) return false;
|
|
5820
5767
|
}
|
|
5821
5768
|
return true;
|
|
5822
5769
|
};
|
|
@@ -5865,9 +5812,9 @@ function roof(w7, options) {
|
|
|
5865
5812
|
const triFaces = [];
|
|
5866
5813
|
for (const skFace of skeleton.faces) {
|
|
5867
5814
|
const verts3d = skFace.vertices.map(
|
|
5868
|
-
(
|
|
5869
|
-
|
|
5870
|
-
|
|
5815
|
+
(v8, i9) => [
|
|
5816
|
+
v8.x,
|
|
5817
|
+
v8.y,
|
|
5871
5818
|
(skFace.heights[i9] ?? 0) * tanAngle
|
|
5872
5819
|
]
|
|
5873
5820
|
);
|
|
@@ -6147,9 +6094,9 @@ function parseEntities(text) {
|
|
|
6147
6094
|
return entities;
|
|
6148
6095
|
}
|
|
6149
6096
|
function getNum(data, code, fallback = 0) {
|
|
6150
|
-
const
|
|
6151
|
-
if (
|
|
6152
|
-
const n7 = parseFloat(
|
|
6097
|
+
const v8 = data.get(code);
|
|
6098
|
+
if (v8 === void 0) return fallback;
|
|
6099
|
+
const n7 = parseFloat(v8);
|
|
6153
6100
|
return isNaN(n7) ? fallback : n7;
|
|
6154
6101
|
}
|
|
6155
6102
|
function entityToEdge(entity) {
|
|
@@ -6226,15 +6173,15 @@ async function importOBJ(blob) {
|
|
|
6226
6173
|
if (line.startsWith("v ")) {
|
|
6227
6174
|
const parts = line.split(/\s+/);
|
|
6228
6175
|
const x7 = parseFloat(parts[1] ?? "");
|
|
6229
|
-
const
|
|
6176
|
+
const y7 = parseFloat(parts[2] ?? "");
|
|
6230
6177
|
const z6 = parseFloat(parts[3] ?? "");
|
|
6231
|
-
if (isNaN(x7) || isNaN(
|
|
6232
|
-
vertices.push([x7,
|
|
6178
|
+
if (isNaN(x7) || isNaN(y7) || isNaN(z6)) continue;
|
|
6179
|
+
vertices.push([x7, y7, z6]);
|
|
6233
6180
|
} else if (line.startsWith("f ")) {
|
|
6234
6181
|
const parts = line.split(/\s+/).slice(1);
|
|
6235
6182
|
const indices = [];
|
|
6236
|
-
for (const
|
|
6237
|
-
const idx = parseInt(
|
|
6183
|
+
for (const p8 of parts) {
|
|
6184
|
+
const idx = parseInt(p8.split("/")[0] ?? "", 10);
|
|
6238
6185
|
if (!isNaN(idx)) indices.push(idx);
|
|
6239
6186
|
}
|
|
6240
6187
|
if (indices.length >= 3) faces.push(indices);
|
|
@@ -6384,7 +6331,7 @@ function parseModelXml(xml) {
|
|
|
6384
6331
|
}
|
|
6385
6332
|
function buildSolidFromMesh(mesh2) {
|
|
6386
6333
|
const kernel = getKernel();
|
|
6387
|
-
const points = mesh2.vertices.map(([x7,
|
|
6334
|
+
const points = mesh2.vertices.map(([x7, y7, z6]) => ({ x: x7, y: y7, z: z6 }));
|
|
6388
6335
|
const faces = mesh2.triangles;
|
|
6389
6336
|
try {
|
|
6390
6337
|
const solid = kernel.buildSolidFromFaces(points, faces, 1e-6);
|
|
@@ -6629,19 +6576,19 @@ function chamfer$1(shape2, edges, distance) {
|
|
|
6629
6576
|
filteredEdges = [];
|
|
6630
6577
|
const distMap = /* @__PURE__ */ new Map();
|
|
6631
6578
|
for (const edge of selectedEdges) {
|
|
6632
|
-
const
|
|
6633
|
-
if (typeof
|
|
6634
|
-
if (Array.isArray(
|
|
6579
|
+
const d11 = distance(edge) ?? 0;
|
|
6580
|
+
if (typeof d11 === "number" && d11 <= 0) continue;
|
|
6581
|
+
if (Array.isArray(d11) && (d11[0] <= 0 || d11[1] <= 0)) continue;
|
|
6635
6582
|
filteredEdges.push(edge);
|
|
6636
|
-
distMap.set(edge,
|
|
6583
|
+
distMap.set(edge, d11);
|
|
6637
6584
|
}
|
|
6638
6585
|
const hashToDist = /* @__PURE__ */ new Map();
|
|
6639
|
-
for (const [edge,
|
|
6640
|
-
hashToDist.set(getKernel().hashCode(edge.wrapped, HASH_CODE_MAX),
|
|
6586
|
+
for (const [edge, d11] of distMap) {
|
|
6587
|
+
hashToDist.set(getKernel().hashCode(edge.wrapped, HASH_CODE_MAX), d11);
|
|
6641
6588
|
}
|
|
6642
6589
|
kernelDistance = (ocEdge) => {
|
|
6643
|
-
const
|
|
6644
|
-
return
|
|
6590
|
+
const d11 = hashToDist.get(ocEdge.HashCode(HASH_CODE_MAX));
|
|
6591
|
+
return d11 ?? 1;
|
|
6645
6592
|
};
|
|
6646
6593
|
} else {
|
|
6647
6594
|
filteredEdges = [...selectedEdges];
|
|
@@ -6748,8 +6695,8 @@ function offset$1(shape2, distance, tolerance = 1e-6) {
|
|
|
6748
6695
|
return err(kernelError("OFFSET_FAILED", `Offset operation failed: ${raw}`, e8));
|
|
6749
6696
|
}
|
|
6750
6697
|
}
|
|
6751
|
-
function translate(shape2,
|
|
6752
|
-
return translate$1(resolve(shape2),
|
|
6698
|
+
function translate(shape2, v8) {
|
|
6699
|
+
return translate$1(resolve(shape2), v8);
|
|
6753
6700
|
}
|
|
6754
6701
|
function rotate(shape2, angle, options) {
|
|
6755
6702
|
const pivotPoint = options?.at;
|
|
@@ -7132,14 +7079,14 @@ function createWrappedBase(val) {
|
|
|
7132
7079
|
const self = {
|
|
7133
7080
|
val,
|
|
7134
7081
|
__wrapped: true,
|
|
7135
|
-
translate: (
|
|
7082
|
+
translate: (v8) => wrapAny(translate(val, v8)),
|
|
7136
7083
|
rotate: (angle, opts) => wrapAny(rotate(val, angle, opts)),
|
|
7137
7084
|
mirror: (opts) => wrapAny(mirror(val, opts)),
|
|
7138
7085
|
scale: (factor, opts) => wrapAny(scale(val, factor, opts)),
|
|
7139
7086
|
applyMatrix: (matrix) => wrapAny(applyMatrix(val, matrix)),
|
|
7140
|
-
moveX: (
|
|
7141
|
-
moveY: (
|
|
7142
|
-
moveZ: (
|
|
7087
|
+
moveX: (d11) => wrapAny(translate(val, [d11, 0, 0])),
|
|
7088
|
+
moveY: (d11) => wrapAny(translate(val, [0, d11, 0])),
|
|
7089
|
+
moveZ: (d11) => wrapAny(translate(val, [0, 0, d11])),
|
|
7143
7090
|
rotateX: (a9) => wrapAny(rotate(val, a9, { axis: [1, 0, 0] })),
|
|
7144
7091
|
rotateY: (a9) => wrapAny(rotate(val, a9, { axis: [0, 1, 0] })),
|
|
7145
7092
|
rotateZ: (a9) => wrapAny(rotate(val, a9, { axis: [0, 0, 1] })),
|
|
@@ -7270,21 +7217,21 @@ function shape(s6) {
|
|
|
7270
7217
|
throw new Error("shape() requires a Sketch or branded shape type");
|
|
7271
7218
|
}
|
|
7272
7219
|
export {
|
|
7273
|
-
|
|
7274
|
-
|
|
7220
|
+
B4 as BaseSketcher2d,
|
|
7221
|
+
B2 as Blueprint,
|
|
7275
7222
|
a5 as BlueprintSketcher,
|
|
7276
7223
|
c2 as Blueprints,
|
|
7277
7224
|
e3 as BoundingBox2d,
|
|
7278
|
-
BrepBugError,
|
|
7225
|
+
B as BrepBugError,
|
|
7279
7226
|
BrepErrorCode,
|
|
7280
7227
|
BrepWrapperError,
|
|
7281
7228
|
BrepkitAdapter,
|
|
7282
|
-
|
|
7283
|
-
|
|
7284
|
-
|
|
7285
|
-
|
|
7229
|
+
C4 as CompoundBlueprint,
|
|
7230
|
+
C5 as CompoundSketch,
|
|
7231
|
+
C2 as Curve2D,
|
|
7232
|
+
D as DEG2RAD,
|
|
7286
7233
|
DisposalScope,
|
|
7287
|
-
|
|
7234
|
+
D3 as Drawing,
|
|
7288
7235
|
a6 as DrawingPen,
|
|
7289
7236
|
F3 as FaceSketcher,
|
|
7290
7237
|
HASH_CODE_MAX,
|
|
@@ -7298,7 +7245,7 @@ export {
|
|
|
7298
7245
|
addMate,
|
|
7299
7246
|
b5 as addStep,
|
|
7300
7247
|
b7 as adjacentFaces,
|
|
7301
|
-
|
|
7248
|
+
E2 as all,
|
|
7302
7249
|
a2 as andThen,
|
|
7303
7250
|
applyGlue,
|
|
7304
7251
|
applyMatrix,
|
|
@@ -7306,14 +7253,14 @@ export {
|
|
|
7306
7253
|
M as as2D,
|
|
7307
7254
|
N as as3D,
|
|
7308
7255
|
l9 as asTopo,
|
|
7309
|
-
|
|
7256
|
+
d7 as autoHeal,
|
|
7310
7257
|
b4 as basicFaceExtrusion,
|
|
7311
7258
|
e5 as bezier,
|
|
7312
7259
|
blueprintToDXF,
|
|
7313
7260
|
boss,
|
|
7314
7261
|
f7 as box,
|
|
7315
|
-
|
|
7316
|
-
bug,
|
|
7262
|
+
g7 as bsplineApprox,
|
|
7263
|
+
b2 as bug,
|
|
7317
7264
|
X as cameraFromPlane,
|
|
7318
7265
|
Y as cameraLookAt,
|
|
7319
7266
|
c5 as cast,
|
|
@@ -7330,27 +7277,27 @@ export {
|
|
|
7330
7277
|
clone,
|
|
7331
7278
|
a as closedWire,
|
|
7332
7279
|
c as collect,
|
|
7333
|
-
|
|
7280
|
+
d4 as collectShapes,
|
|
7334
7281
|
l6 as colorFaces,
|
|
7335
7282
|
m6 as colorShape,
|
|
7336
7283
|
f3 as complexExtrude,
|
|
7337
7284
|
w4 as composeTransforms,
|
|
7338
7285
|
k5 as compound,
|
|
7339
7286
|
c3 as compoundSketchExtrude,
|
|
7340
|
-
|
|
7287
|
+
d6 as compoundSketchFace,
|
|
7341
7288
|
e4 as compoundSketchLoft,
|
|
7342
7289
|
f5 as compoundSketchRevolve,
|
|
7343
|
-
|
|
7290
|
+
d2 as computationError,
|
|
7344
7291
|
computeStraightSkeleton,
|
|
7345
7292
|
l7 as cone,
|
|
7346
7293
|
c7 as cornerFinder,
|
|
7347
|
-
|
|
7294
|
+
g4 as countNodes,
|
|
7348
7295
|
h4 as createAssembly,
|
|
7349
7296
|
i3 as createAssemblyNode,
|
|
7350
7297
|
createBlueprint,
|
|
7351
7298
|
Z as createCamera,
|
|
7352
7299
|
C as createCompound,
|
|
7353
|
-
|
|
7300
|
+
d10 as createDistanceQuery,
|
|
7354
7301
|
H as createEdge,
|
|
7355
7302
|
I as createFace,
|
|
7356
7303
|
b as createHandle,
|
|
@@ -7385,16 +7332,16 @@ export {
|
|
|
7385
7332
|
curveStartPoint,
|
|
7386
7333
|
curveTangentAt,
|
|
7387
7334
|
cut,
|
|
7388
|
-
|
|
7335
|
+
d5 as cut2D,
|
|
7389
7336
|
cutAll,
|
|
7390
7337
|
j3 as cutBlueprints,
|
|
7391
7338
|
m7 as cylinder,
|
|
7392
7339
|
dequeueTask,
|
|
7393
7340
|
describe,
|
|
7394
|
-
|
|
7341
|
+
g6 as deserializeDrawing,
|
|
7395
7342
|
m4 as deserializeHistory,
|
|
7396
7343
|
fromBREP$1 as deserializeShape,
|
|
7397
|
-
|
|
7344
|
+
d8 as downcast,
|
|
7398
7345
|
h6 as draw,
|
|
7399
7346
|
i4 as drawCircle,
|
|
7400
7347
|
j4 as drawEllipse,
|
|
@@ -7403,22 +7350,22 @@ export {
|
|
|
7403
7350
|
m5 as drawPointsInterpolation,
|
|
7404
7351
|
n4 as drawPolysides,
|
|
7405
7352
|
o5 as drawProjection,
|
|
7406
|
-
|
|
7353
|
+
p4 as drawRectangle,
|
|
7407
7354
|
q2 as drawRoundedRectangle,
|
|
7408
7355
|
r3 as drawSingleCircle,
|
|
7409
7356
|
s3 as drawSingleEllipse,
|
|
7410
7357
|
t4 as drawText,
|
|
7411
7358
|
u4 as drawingChamfer,
|
|
7412
|
-
|
|
7359
|
+
v4 as drawingCut,
|
|
7413
7360
|
w3 as drawingFillet,
|
|
7414
7361
|
x4 as drawingFuse,
|
|
7415
|
-
|
|
7362
|
+
y4 as drawingIntersect,
|
|
7416
7363
|
z3 as drawingToSketchOnPlane,
|
|
7417
7364
|
drill,
|
|
7418
7365
|
edgeFinder,
|
|
7419
7366
|
n6 as edgesOfFace,
|
|
7420
7367
|
o7 as ellipse,
|
|
7421
|
-
|
|
7368
|
+
p6 as ellipseArc,
|
|
7422
7369
|
q4 as ellipsoid,
|
|
7423
7370
|
enqueueTask,
|
|
7424
7371
|
err,
|
|
@@ -7428,7 +7375,7 @@ export {
|
|
|
7428
7375
|
exportGltf,
|
|
7429
7376
|
e6 as exportIGES,
|
|
7430
7377
|
exportOBJ,
|
|
7431
|
-
|
|
7378
|
+
d9 as exportSTEP,
|
|
7432
7379
|
f9 as exportSTL,
|
|
7433
7380
|
exportThreeMF,
|
|
7434
7381
|
extrude,
|
|
@@ -7444,7 +7391,7 @@ export {
|
|
|
7444
7391
|
findCurveType,
|
|
7445
7392
|
n5 as findFacesByTag,
|
|
7446
7393
|
o3 as findNode,
|
|
7447
|
-
|
|
7394
|
+
p2 as findStep,
|
|
7448
7395
|
f2 as flatMap,
|
|
7449
7396
|
r8 as flipFaceOrientation,
|
|
7450
7397
|
k6 as flipOrientation,
|
|
@@ -7453,12 +7400,12 @@ export {
|
|
|
7453
7400
|
fromKernelDir,
|
|
7454
7401
|
fromKernelPnt,
|
|
7455
7402
|
fromKernelVec,
|
|
7456
|
-
|
|
7403
|
+
F as fromNullable,
|
|
7457
7404
|
fuse,
|
|
7458
7405
|
f4 as fuse2D,
|
|
7459
7406
|
fuseAll,
|
|
7460
7407
|
k3 as fuseBlueprints,
|
|
7461
|
-
|
|
7408
|
+
g3 as genericSweep,
|
|
7462
7409
|
getBounds,
|
|
7463
7410
|
getBounds2D,
|
|
7464
7411
|
l8 as getCurveType,
|
|
@@ -7471,11 +7418,11 @@ export {
|
|
|
7471
7418
|
f6 as getHashCode,
|
|
7472
7419
|
q as getHistoryShape,
|
|
7473
7420
|
getKernel,
|
|
7474
|
-
|
|
7421
|
+
g8 as getOrientation,
|
|
7475
7422
|
getOrientation2D,
|
|
7476
7423
|
r6 as getShapeColor,
|
|
7477
7424
|
g as getShapeKind,
|
|
7478
|
-
|
|
7425
|
+
g5 as getSingleFace,
|
|
7479
7426
|
getSurfaceType,
|
|
7480
7427
|
t7 as getTagMetadata,
|
|
7481
7428
|
getVertices,
|
|
@@ -7483,7 +7430,7 @@ export {
|
|
|
7483
7430
|
guidedSweep,
|
|
7484
7431
|
heal,
|
|
7485
7432
|
u6 as healFace,
|
|
7486
|
-
|
|
7433
|
+
v6 as healSolid,
|
|
7487
7434
|
w5 as healWire,
|
|
7488
7435
|
x6 as helix,
|
|
7489
7436
|
hull,
|
|
@@ -7512,7 +7459,7 @@ export {
|
|
|
7512
7459
|
isDisposeRequest,
|
|
7513
7460
|
isEdge,
|
|
7514
7461
|
isEmpty,
|
|
7515
|
-
|
|
7462
|
+
y5 as isEqualShape,
|
|
7516
7463
|
isErr,
|
|
7517
7464
|
isErrorResponse,
|
|
7518
7465
|
isFace,
|
|
@@ -7522,7 +7469,7 @@ export {
|
|
|
7522
7469
|
l as isLive,
|
|
7523
7470
|
m as isManifoldShell,
|
|
7524
7471
|
isNumber,
|
|
7525
|
-
|
|
7472
|
+
h2 as isOk,
|
|
7526
7473
|
isOperationRequest,
|
|
7527
7474
|
n as isOrientedFace,
|
|
7528
7475
|
a0 as isProjectionPlane,
|
|
@@ -7538,29 +7485,29 @@ export {
|
|
|
7538
7485
|
t as isVertex,
|
|
7539
7486
|
isWire,
|
|
7540
7487
|
z4 as iterEdges,
|
|
7541
|
-
|
|
7488
|
+
A4 as iterFaces,
|
|
7542
7489
|
iterTopo,
|
|
7543
|
-
|
|
7544
|
-
|
|
7490
|
+
B6 as iterVertices,
|
|
7491
|
+
C6 as iterWires,
|
|
7545
7492
|
kernelCall,
|
|
7546
7493
|
kernelCallRaw,
|
|
7547
7494
|
kernelCallScoped,
|
|
7548
7495
|
kernelError,
|
|
7549
|
-
|
|
7496
|
+
y6 as line,
|
|
7550
7497
|
linearPattern,
|
|
7551
7498
|
a1 as loadFont,
|
|
7552
7499
|
loft,
|
|
7553
|
-
|
|
7500
|
+
A3 as makeBaseBox,
|
|
7554
7501
|
u2 as makePlane,
|
|
7555
7502
|
a22 as makeProjectedEdges,
|
|
7556
7503
|
v as manifoldShell,
|
|
7557
7504
|
m2 as map,
|
|
7558
|
-
|
|
7559
|
-
|
|
7505
|
+
j as mapErr,
|
|
7506
|
+
l2 as match,
|
|
7560
7507
|
measureArea,
|
|
7561
7508
|
e7 as measureCurvatureAt,
|
|
7562
7509
|
f10 as measureCurvatureAtMid,
|
|
7563
|
-
|
|
7510
|
+
g9 as measureDistance,
|
|
7564
7511
|
h9 as measureLength,
|
|
7565
7512
|
i7 as measureLinearProps,
|
|
7566
7513
|
measureSurfaceProps,
|
|
@@ -7571,30 +7518,30 @@ export {
|
|
|
7571
7518
|
minkowski,
|
|
7572
7519
|
mirror,
|
|
7573
7520
|
mirror2D,
|
|
7574
|
-
|
|
7521
|
+
B5 as mirrorDrawing,
|
|
7575
7522
|
mirrorJoin,
|
|
7576
7523
|
t3 as modifyStep,
|
|
7577
|
-
|
|
7524
|
+
n2 as moduleInitError,
|
|
7578
7525
|
multiSectionSweep,
|
|
7579
7526
|
normalAt,
|
|
7580
7527
|
offset,
|
|
7581
7528
|
z5 as offsetFace,
|
|
7582
7529
|
o8 as offsetWire2D,
|
|
7583
7530
|
ok,
|
|
7584
|
-
|
|
7585
|
-
|
|
7531
|
+
G as or,
|
|
7532
|
+
H2 as orElse,
|
|
7586
7533
|
o4 as organiseBlueprints,
|
|
7587
7534
|
w as orientedFace,
|
|
7588
7535
|
outerWire,
|
|
7589
7536
|
pendingCount,
|
|
7590
|
-
|
|
7591
|
-
|
|
7537
|
+
I2 as pipeline,
|
|
7538
|
+
p5 as pivotPlane,
|
|
7592
7539
|
pocket,
|
|
7593
|
-
|
|
7594
|
-
|
|
7540
|
+
p7 as pointOnSurface,
|
|
7541
|
+
A5 as polygon,
|
|
7595
7542
|
polyhedron,
|
|
7596
7543
|
E4 as polysideInnerRadius,
|
|
7597
|
-
|
|
7544
|
+
p3 as polysidesBlueprint,
|
|
7598
7545
|
a32 as projectEdges,
|
|
7599
7546
|
t9 as projectPointOnFace,
|
|
7600
7547
|
queryError,
|
|
@@ -7602,13 +7549,13 @@ export {
|
|
|
7602
7549
|
registerHandler,
|
|
7603
7550
|
R as registerKernel,
|
|
7604
7551
|
u3 as registerOperation,
|
|
7605
|
-
|
|
7552
|
+
v3 as registerShape,
|
|
7606
7553
|
rejectAll,
|
|
7607
7554
|
x3 as removeChild,
|
|
7608
|
-
|
|
7609
|
-
|
|
7555
|
+
v7 as removeHolesFromFace,
|
|
7556
|
+
y3 as replayFrom,
|
|
7610
7557
|
z2 as replayHistory,
|
|
7611
|
-
|
|
7558
|
+
D4 as resize,
|
|
7612
7559
|
resolve,
|
|
7613
7560
|
resolve3D,
|
|
7614
7561
|
r4 as resolveDirection,
|
|
@@ -7626,22 +7573,22 @@ export {
|
|
|
7626
7573
|
G3 as scaleDrawing,
|
|
7627
7574
|
section,
|
|
7628
7575
|
sectionToFace,
|
|
7629
|
-
|
|
7576
|
+
A2 as serializeHistory,
|
|
7630
7577
|
E5 as setShapeOrigin,
|
|
7631
7578
|
u5 as setTagMetadata,
|
|
7632
|
-
|
|
7579
|
+
B7 as sewShells,
|
|
7633
7580
|
shape,
|
|
7634
7581
|
w6 as shapeType,
|
|
7635
|
-
|
|
7582
|
+
C7 as sharedEdges,
|
|
7636
7583
|
shell,
|
|
7637
7584
|
simplify,
|
|
7638
7585
|
sketch2DOnFace,
|
|
7639
7586
|
sketch2DOnPlane,
|
|
7640
7587
|
H3 as sketchCircle,
|
|
7641
7588
|
I3 as sketchEllipse,
|
|
7642
|
-
|
|
7643
|
-
|
|
7644
|
-
|
|
7589
|
+
J2 as sketchExtrude,
|
|
7590
|
+
K2 as sketchFace,
|
|
7591
|
+
L2 as sketchFaceOffset,
|
|
7645
7592
|
M2 as sketchHelix,
|
|
7646
7593
|
N2 as sketchLoft,
|
|
7647
7594
|
O3 as sketchParametricFunction,
|
|
@@ -7654,65 +7601,65 @@ export {
|
|
|
7654
7601
|
V as sketchWires,
|
|
7655
7602
|
s2 as sketcherStateError,
|
|
7656
7603
|
slice,
|
|
7657
|
-
|
|
7604
|
+
D5 as solid,
|
|
7658
7605
|
solveAssembly,
|
|
7659
7606
|
E6 as sphere,
|
|
7660
7607
|
split,
|
|
7661
|
-
|
|
7662
|
-
|
|
7608
|
+
B3 as stepCount,
|
|
7609
|
+
C3 as stepsFrom,
|
|
7663
7610
|
stretch2D,
|
|
7664
7611
|
F5 as subFace,
|
|
7665
|
-
|
|
7612
|
+
D2 as supportExtrude,
|
|
7666
7613
|
supportsConstraintSketch,
|
|
7667
7614
|
supportsProjection,
|
|
7668
7615
|
surfaceFromGrid,
|
|
7669
7616
|
surfaceFromImage,
|
|
7670
7617
|
sweep,
|
|
7671
|
-
|
|
7618
|
+
v5 as tagFaces,
|
|
7672
7619
|
G4 as tangentArc,
|
|
7673
|
-
|
|
7674
|
-
|
|
7620
|
+
J as tap,
|
|
7621
|
+
K as tapErr,
|
|
7675
7622
|
a52 as textBlueprints,
|
|
7676
7623
|
a62 as textMetrics,
|
|
7677
7624
|
thicken,
|
|
7678
7625
|
H4 as threePointArc,
|
|
7679
7626
|
toBREP,
|
|
7680
7627
|
I4 as toBufferGeometryData,
|
|
7681
|
-
|
|
7628
|
+
J3 as toGroupedBufferGeometryData,
|
|
7682
7629
|
toKernelVec,
|
|
7683
|
-
|
|
7630
|
+
K3 as toLineGeometryData,
|
|
7684
7631
|
toSVGPathD,
|
|
7685
7632
|
t5 as toVec2,
|
|
7686
7633
|
toVec3,
|
|
7687
|
-
|
|
7634
|
+
L3 as torus,
|
|
7688
7635
|
transformCopy,
|
|
7689
7636
|
translate,
|
|
7690
7637
|
translate2D,
|
|
7691
7638
|
W as translateDrawing,
|
|
7692
7639
|
t6 as translatePlane,
|
|
7693
7640
|
t2 as tryCatch,
|
|
7694
|
-
|
|
7641
|
+
p as tryCatchAsync,
|
|
7695
7642
|
E3 as twistExtrude,
|
|
7696
7643
|
typeCastError,
|
|
7697
7644
|
F2 as undoLast,
|
|
7698
7645
|
u as unsupportedError,
|
|
7699
7646
|
unwrap$1 as unwrap,
|
|
7700
|
-
|
|
7701
|
-
|
|
7702
|
-
|
|
7647
|
+
w2 as unwrapErr,
|
|
7648
|
+
x2 as unwrapOr,
|
|
7649
|
+
y2 as unwrapOrElse,
|
|
7703
7650
|
G2 as updateNode,
|
|
7704
7651
|
u7 as uvBounds,
|
|
7705
7652
|
h8 as uvCoordinates,
|
|
7706
7653
|
x as validSolid,
|
|
7707
7654
|
validationError,
|
|
7708
|
-
|
|
7655
|
+
v2 as vecAdd,
|
|
7709
7656
|
a3 as vecAngle,
|
|
7710
7657
|
b3 as vecCross,
|
|
7711
7658
|
vecDistance,
|
|
7712
|
-
|
|
7659
|
+
d3 as vecDot,
|
|
7713
7660
|
e2 as vecEquals,
|
|
7714
7661
|
vecIsZero,
|
|
7715
|
-
|
|
7662
|
+
g2 as vecLength,
|
|
7716
7663
|
h3 as vecLengthSq,
|
|
7717
7664
|
i2 as vecNegate,
|
|
7718
7665
|
vecNormalize,
|
|
@@ -7737,5 +7684,5 @@ export {
|
|
|
7737
7684
|
y as withScope,
|
|
7738
7685
|
z as withScopeResult,
|
|
7739
7686
|
A as withScopeResultAsync,
|
|
7740
|
-
|
|
7687
|
+
L as zipResults
|
|
7741
7688
|
};
|