brepjs 12.8.2 → 12.9.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/lib/svgPath.d.ts.map +1 -1
- package/dist/2d/lib/vectorOperations.d.ts +4 -1
- package/dist/2d/lib/vectorOperations.d.ts.map +1 -1
- package/dist/2d.cjs +2 -2
- package/dist/2d.js +5 -5
- package/dist/{Blueprint-DbVaf6k7.js → Blueprint-1HGbugaC.js} +33 -63
- package/dist/{Blueprint-CQ28WJhz.cjs → Blueprint-CUyXM6CV.cjs} +15 -45
- package/dist/{boolean2D-0blbVtJ8.cjs → boolean2D-9OnbotKT.cjs} +9 -9
- package/dist/{boolean2D-y3E92F0u.js → boolean2D-CR4efa35.js} +11 -11
- package/dist/{booleanFns-gmsX3Cv2.cjs → booleanFns-BBd2oTvv.cjs} +43 -40
- package/dist/{booleanFns-BCTjYZAg.js → booleanFns-Br2KdGJq.js} +53 -50
- package/dist/brepjs.cjs +379 -284
- package/dist/brepjs.js +1437 -1341
- package/dist/core/definitionMaps.d.ts +2 -7
- package/dist/core/definitionMaps.d.ts.map +1 -1
- package/dist/core/dimensionTypes.d.ts +52 -0
- package/dist/core/dimensionTypes.d.ts.map +1 -0
- package/dist/core/disposal.d.ts +18 -0
- package/dist/core/disposal.d.ts.map +1 -1
- package/dist/core/errors.d.ts +1 -8
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/kernelErrorTranslation.d.ts +15 -0
- package/dist/core/kernelErrorTranslation.d.ts.map +1 -0
- package/dist/core/planeOps.d.ts +14 -0
- package/dist/core/planeOps.d.ts.map +1 -1
- package/dist/core/result.d.ts +4 -0
- package/dist/core/result.d.ts.map +1 -1
- package/dist/core/shapeTypes.d.ts +14 -146
- package/dist/core/shapeTypes.d.ts.map +1 -1
- package/dist/core/typeDiscriminants.d.ts +14 -0
- package/dist/core/typeDiscriminants.d.ts.map +1 -0
- package/dist/core/validityTypes.d.ts +100 -0
- package/dist/core/validityTypes.d.ts.map +1 -0
- package/dist/core.cjs +52 -11
- package/dist/core.d.ts +1 -1
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +118 -75
- package/dist/{curveFns-mROFhiuG.js → curveFns-1u0oZ0u0.js} +14 -14
- package/dist/{curveFns-BZngcnQ1.cjs → curveFns-BwLvO_Ia.cjs} +2 -2
- package/dist/{drawFns-Bwakrq7w.js → drawFns-B0na6sbo.js} +16 -16
- package/dist/{drawFns-CjRc1NfQ.cjs → drawFns-CzlEePor.cjs} +18 -18
- package/dist/{faceFns-DB1Fc5gy.cjs → faceFns-BAKkZG6D.cjs} +2 -2
- package/dist/{faceFns-B8GnxjdY.js → faceFns-DGMp47Os.js} +3 -3
- package/dist/{helpers-C8NoT0Wu.cjs → helpers-DVdscQxW.cjs} +73 -8
- package/dist/{helpers-X0juxnwj.js → helpers-sJjnIXDA.js} +85 -20
- package/dist/index.d.ts +10 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/io.cjs +4 -4
- package/dist/io.js +4 -4
- package/dist/kernel/brepkit/booleanOps.d.ts +23 -0
- package/dist/kernel/brepkit/booleanOps.d.ts.map +1 -0
- package/dist/kernel/brepkit/constructionOps.d.ts +51 -0
- package/dist/kernel/brepkit/constructionOps.d.ts.map +1 -0
- package/dist/kernel/brepkit/evolutionOps.d.ts +31 -0
- package/dist/kernel/brepkit/evolutionOps.d.ts.map +1 -0
- package/dist/kernel/brepkit/geometryOps.d.ts +56 -0
- package/dist/kernel/brepkit/geometryOps.d.ts.map +1 -0
- package/dist/kernel/brepkit/helpers.d.ts +84 -0
- package/dist/kernel/brepkit/helpers.d.ts.map +1 -0
- package/dist/kernel/brepkit/internalOps.d.ts +28 -0
- package/dist/kernel/brepkit/internalOps.d.ts.map +1 -0
- package/dist/kernel/brepkit/ioOps.d.ts +43 -0
- package/dist/kernel/brepkit/ioOps.d.ts.map +1 -0
- package/dist/kernel/brepkit/measureOps.d.ts +30 -0
- package/dist/kernel/brepkit/measureOps.d.ts.map +1 -0
- package/dist/kernel/brepkit/meshOps.d.ts +7 -0
- package/dist/kernel/brepkit/meshOps.d.ts.map +1 -0
- package/dist/kernel/brepkit/modifierOps.d.ts +15 -0
- package/dist/kernel/brepkit/modifierOps.d.ts.map +1 -0
- package/dist/kernel/brepkit/repairOps.d.ts +14 -0
- package/dist/kernel/brepkit/repairOps.d.ts.map +1 -0
- package/dist/kernel/brepkit/sweepOps.d.ts +27 -0
- package/dist/kernel/brepkit/sweepOps.d.ts.map +1 -0
- package/dist/kernel/brepkit/topologyOps.d.ts +16 -0
- package/dist/kernel/brepkit/topologyOps.d.ts.map +1 -0
- package/dist/kernel/brepkit/transformOps.d.ts +14 -0
- package/dist/kernel/brepkit/transformOps.d.ts.map +1 -0
- package/dist/kernel/brepkitAdapter.d.ts +1 -1
- package/dist/kernel/brepkitAdapter.d.ts.map +1 -1
- package/dist/kernel/brepkitWasmTypes.d.ts +8 -0
- package/dist/kernel/brepkitWasmTypes.d.ts.map +1 -1
- package/dist/kernel/defaultAdapter.d.ts.map +1 -1
- package/dist/kernel/extendedConstructorOps.d.ts +9 -1
- package/dist/kernel/extendedConstructorOps.d.ts.map +1 -1
- package/dist/kernel/index.d.ts +1 -0
- package/dist/kernel/index.d.ts.map +1 -1
- package/dist/kernel/interfaces/boolean-ops.d.ts +25 -0
- package/dist/kernel/interfaces/boolean-ops.d.ts.map +1 -0
- package/dist/kernel/interfaces/construction-ops.d.ts +76 -0
- package/dist/kernel/interfaces/construction-ops.d.ts.map +1 -0
- package/dist/kernel/interfaces/core.d.ts +45 -0
- package/dist/kernel/interfaces/core.d.ts.map +1 -0
- package/dist/kernel/interfaces/evolution-ops.d.ts +19 -0
- package/dist/kernel/interfaces/evolution-ops.d.ts.map +1 -0
- package/dist/kernel/interfaces/geometry-ops.d.ts +77 -0
- package/dist/kernel/interfaces/geometry-ops.d.ts.map +1 -0
- package/dist/kernel/interfaces/index.d.ts +29 -0
- package/dist/kernel/interfaces/index.d.ts.map +1 -0
- package/dist/kernel/interfaces/io-ops.d.ts +66 -0
- package/dist/kernel/interfaces/io-ops.d.ts.map +1 -0
- package/dist/kernel/interfaces/measure-ops.d.ts +35 -0
- package/dist/kernel/interfaces/measure-ops.d.ts.map +1 -0
- package/dist/kernel/interfaces/mesh-ops.d.ts +21 -0
- package/dist/kernel/interfaces/mesh-ops.d.ts.map +1 -0
- package/dist/kernel/interfaces/modifier-ops.d.ts +22 -0
- package/dist/kernel/interfaces/modifier-ops.d.ts.map +1 -0
- package/dist/kernel/interfaces/repair-ops.d.ts +36 -0
- package/dist/kernel/interfaces/repair-ops.d.ts.map +1 -0
- package/dist/kernel/interfaces/sweep-ops.d.ts +49 -0
- package/dist/kernel/interfaces/sweep-ops.d.ts.map +1 -0
- package/dist/kernel/interfaces/topology-ops.d.ts +30 -0
- package/dist/kernel/interfaces/topology-ops.d.ts.map +1 -0
- package/dist/kernel/interfaces/transform-ops.d.ts +20 -0
- package/dist/kernel/interfaces/transform-ops.d.ts.map +1 -0
- package/dist/kernel/modifierOps.d.ts +2 -2
- package/dist/kernel/modifierOps.d.ts.map +1 -1
- package/dist/kernel/types.d.ts +2 -446
- package/dist/kernel/types.d.ts.map +1 -1
- package/dist/{loft-hp3pc1M7.cjs → loft-BNvBZzqe.cjs} +5 -5
- package/dist/{loft-Bhw-FMoL.js → loft-D0aCZRaB.js} +7 -7
- package/dist/measurement/measureFns.d.ts +2 -2
- package/dist/measurement/measureFns.d.ts.map +1 -1
- package/dist/{measurement-D8EJ694A.js → measurement-C7o5jE6G.js} +2 -2
- package/dist/{measurement-BoNTUBAp.cjs → measurement-DZcaxo1A.cjs} +2 -2
- package/dist/measurement.cjs +1 -1
- package/dist/measurement.js +1 -1
- package/dist/{meshFns-BnV0ZR8w.cjs → meshFns-7dgZgNYK.cjs} +4 -4
- package/dist/{meshFns-nQjK38EC.js → meshFns-CtUl9fGY.js} +3 -3
- package/dist/operations/compoundOpsFns.d.ts +38 -0
- package/dist/operations/compoundOpsFns.d.ts.map +1 -0
- package/dist/operations/extrude.d.ts +2 -12
- package/dist/operations/extrude.d.ts.map +1 -1
- package/dist/operations/extrudeFns.d.ts +2 -93
- package/dist/operations/extrudeFns.d.ts.map +1 -1
- package/dist/operations/guidedSweepFns.d.ts +3 -22
- package/dist/operations/guidedSweepFns.d.ts.map +1 -1
- package/dist/operations/loft.d.ts +2 -16
- package/dist/operations/loft.d.ts.map +1 -1
- package/dist/operations/multiSweepFns.d.ts +3 -29
- package/dist/operations/multiSweepFns.d.ts.map +1 -1
- package/dist/operations/roofFns.d.ts +2 -2
- package/dist/operations/roofFns.d.ts.map +1 -1
- package/dist/operations/sweepFns.d.ts +121 -0
- package/dist/operations/sweepFns.d.ts.map +1 -0
- package/dist/{operations-BfbkK6DU.js → operations-DisJ5F8s.js} +110 -57
- package/dist/{operations-CYpmLSC4.cjs → operations-DwZ-RBO1.cjs} +97 -44
- package/dist/operations.cjs +2 -2
- package/dist/operations.js +14 -14
- package/dist/originTrackingFns-NJ1dWoiF.js +137 -0
- package/dist/originTrackingFns-dhaCe8Yb.cjs +136 -0
- package/dist/query/edgeFinder.d.ts +4 -14
- package/dist/query/edgeFinder.d.ts.map +1 -1
- package/dist/query/faceFinder.d.ts +4 -14
- package/dist/query/faceFinder.d.ts.map +1 -1
- package/dist/query/finderCore.d.ts +6 -0
- package/dist/query/finderCore.d.ts.map +1 -1
- package/dist/query/shapeFinders.d.ts +32 -0
- package/dist/query/shapeFinders.d.ts.map +1 -0
- package/dist/query/wireFinder.d.ts +4 -9
- package/dist/query/wireFinder.d.ts.map +1 -1
- package/dist/query.cjs +54 -32
- package/dist/query.js +56 -34
- package/dist/{result-fAX0OZzI.cjs → result-DJAAj1yb.cjs} +8 -59
- package/dist/{result-BaSD1fqR.js → result-DtuwWSUD.js} +38 -89
- package/dist/result.cjs +1 -1
- package/dist/result.js +22 -22
- package/dist/shapeFns-BJbua5kT.js +34 -0
- package/dist/shapeFns-w9tWELHX.cjs +33 -0
- package/dist/{shapeTypes-CpSaBLDv.js → shapeTypes-CAEAyk8j.js} +233 -172
- package/dist/{shapeTypes-7xEam9Ri.cjs → shapeTypes-owrg2MNK.cjs} +421 -360
- package/dist/sketching/Sketcher.d.ts.map +1 -1
- package/dist/sketching.cjs +2 -2
- package/dist/sketching.js +2 -2
- package/dist/{solidBuilders-994_MQwB.cjs → solidBuilders-BLQ4I6Ig.cjs} +3 -3
- package/dist/{solidBuilders-DmwhTCCd.js → solidBuilders-BS-1220W.js} +3 -3
- package/dist/{surfaceBuilders-nQdJ56fe.js → surfaceBuilders-Dj6AjhOv.js} +7 -7
- package/dist/{surfaceBuilders-5VA34a3_.cjs → surfaceBuilders-KU_7OD2q.cjs} +3 -3
- package/dist/topology/booleanFns.d.ts.map +1 -1
- package/dist/topology/compoundOpsFns.d.ts +3 -35
- package/dist/topology/compoundOpsFns.d.ts.map +1 -1
- package/dist/topology/index.d.ts +0 -1
- package/dist/topology/index.d.ts.map +1 -1
- package/dist/topology/metadataPropagation.d.ts +30 -0
- package/dist/topology/metadataPropagation.d.ts.map +1 -0
- package/dist/topology/modifierFns.d.ts.map +1 -1
- package/dist/topology/originTrackingFns.d.ts +23 -0
- package/dist/topology/originTrackingFns.d.ts.map +1 -0
- package/dist/topology/shapeFns.d.ts +6 -120
- package/dist/topology/shapeFns.d.ts.map +1 -1
- package/dist/topology/topologyQueryFns.d.ts +67 -0
- package/dist/topology/topologyQueryFns.d.ts.map +1 -0
- package/dist/topology/transformFns.d.ts +49 -0
- package/dist/topology/transformFns.d.ts.map +1 -0
- package/dist/topology/wrapperFns.d.ts.map +1 -1
- package/dist/{topology-ANwCzGL8.cjs → topology-CyPHYYjV.cjs} +205 -20
- package/dist/{topology-C7x98OVn.js → topology-D6LeuhI_.js} +235 -50
- package/dist/topology.cjs +18 -17
- package/dist/topology.js +92 -91
- package/dist/topologyQueryFns-De439iBP.js +119 -0
- package/dist/topologyQueryFns-fz5kz5e1.cjs +118 -0
- package/dist/{types-CWDdqcrq.js → types-CcKqsmd0.js} +2 -2
- package/dist/utils/precisionRound.d.ts +4 -0
- package/dist/utils/precisionRound.d.ts.map +1 -1
- package/dist/utils/vec2d.d.ts +5 -0
- package/dist/utils/vec2d.d.ts.map +1 -1
- package/dist/{vecOps-ZDdZWbwT.js → vecOps-LTN--A58.js} +15 -15
- package/dist/{vectors-D_IiZx0q.cjs → vectors-C8N_QeEX.cjs} +9 -1
- package/dist/{vectors-Bx8wkNui.js → vectors-DTREgnVp.js} +15 -7
- package/dist/vectors.cjs +1 -1
- package/dist/vectors.js +23 -23
- package/package.json +3 -3
- package/dist/core/geometryHelpers.d.ts +0 -30
- package/dist/core/geometryHelpers.d.ts.map +0 -1
- package/dist/core/memory.d.ts +0 -6
- package/dist/core/memory.d.ts.map +0 -1
- package/dist/core/typeErrors.d.ts +0 -17
- package/dist/core/typeErrors.d.ts.map +0 -1
- package/dist/cornerFinder-Ckz-mPHE.js +0 -59
- package/dist/cornerFinder-ZmOyOOsh.cjs +0 -58
- package/dist/shapeFns-C2SnNvdH.cjs +0 -468
- package/dist/shapeFns-FDuKkrDR.js +0 -469
- package/dist/utils/round2.d.ts +0 -3
- package/dist/utils/round2.d.ts.map +0 -1
- package/dist/utils/round5.d.ts +0 -3
- package/dist/utils/round5.d.ts.map +0 -1
|
@@ -1,14 +1,191 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
const result = require("./result-
|
|
4
|
-
const shapeTypes = require("./shapeTypes-
|
|
2
|
+
require("./shapeFns-w9tWELHX.cjs");
|
|
3
|
+
const result = require("./result-DJAAj1yb.cjs");
|
|
4
|
+
const shapeTypes = require("./shapeTypes-owrg2MNK.cjs");
|
|
5
5
|
const vecOps = require("./vecOps-CjRL1jau.cjs");
|
|
6
|
-
const surfaceBuilders = require("./surfaceBuilders-
|
|
7
|
-
const
|
|
8
|
-
require("./
|
|
9
|
-
const
|
|
10
|
-
require("./
|
|
11
|
-
require("./
|
|
6
|
+
const surfaceBuilders = require("./surfaceBuilders-KU_7OD2q.cjs");
|
|
7
|
+
const booleanFns = require("./booleanFns-BBd2oTvv.cjs");
|
|
8
|
+
const solidBuilders = require("./solidBuilders-BLQ4I6Ig.cjs");
|
|
9
|
+
const core = require("./core.cjs");
|
|
10
|
+
const faceFns = require("./faceFns-BAKkZG6D.cjs");
|
|
11
|
+
require("./curveFns-BwLvO_Ia.cjs");
|
|
12
|
+
require("./meshFns-7dgZgNYK.cjs");
|
|
13
|
+
const topologyQueryFns = require("./topologyQueryFns-fz5kz5e1.cjs");
|
|
14
|
+
function translate(shape, v) {
|
|
15
|
+
const inputFaceHashes = booleanFns.collectInputFaceHashes([shape]);
|
|
16
|
+
const { shape: resultShape, evolution } = shapeTypes.getKernel().translateWithHistory(
|
|
17
|
+
shape.wrapped,
|
|
18
|
+
v[0],
|
|
19
|
+
v[1],
|
|
20
|
+
v[2],
|
|
21
|
+
inputFaceHashes,
|
|
22
|
+
vecOps.HASH_CODE_MAX
|
|
23
|
+
);
|
|
24
|
+
const result2 = shapeTypes.castShape(resultShape);
|
|
25
|
+
booleanFns.propagateAllMetadata(evolution, [shape], result2);
|
|
26
|
+
return result2;
|
|
27
|
+
}
|
|
28
|
+
function rotate(shape, angle, position = [0, 0, 0], direction = [0, 0, 1]) {
|
|
29
|
+
const inputFaceHashes = booleanFns.collectInputFaceHashes([shape]);
|
|
30
|
+
const { shape: resultShape, evolution } = shapeTypes.getKernel().rotateWithHistory(
|
|
31
|
+
shape.wrapped,
|
|
32
|
+
angle * vecOps.DEG2RAD,
|
|
33
|
+
inputFaceHashes,
|
|
34
|
+
vecOps.HASH_CODE_MAX,
|
|
35
|
+
direction,
|
|
36
|
+
position
|
|
37
|
+
);
|
|
38
|
+
const result2 = shapeTypes.castShape(resultShape);
|
|
39
|
+
booleanFns.propagateAllMetadata(evolution, [shape], result2);
|
|
40
|
+
return result2;
|
|
41
|
+
}
|
|
42
|
+
function mirror(shape, planeNormal = [0, 1, 0], planeOrigin = [0, 0, 0]) {
|
|
43
|
+
const inputFaceHashes = booleanFns.collectInputFaceHashes([shape]);
|
|
44
|
+
const { shape: resultShape, evolution } = shapeTypes.getKernel().mirrorWithHistory(
|
|
45
|
+
shape.wrapped,
|
|
46
|
+
planeOrigin,
|
|
47
|
+
planeNormal,
|
|
48
|
+
inputFaceHashes,
|
|
49
|
+
vecOps.HASH_CODE_MAX
|
|
50
|
+
);
|
|
51
|
+
const result2 = shapeTypes.castShape(resultShape);
|
|
52
|
+
booleanFns.propagateAllMetadata(evolution, [shape], result2);
|
|
53
|
+
return result2;
|
|
54
|
+
}
|
|
55
|
+
function scale(shape, factor, center = [0, 0, 0]) {
|
|
56
|
+
const inputFaceHashes = booleanFns.collectInputFaceHashes([shape]);
|
|
57
|
+
const { shape: resultShape, evolution } = shapeTypes.getKernel().scaleWithHistory(
|
|
58
|
+
shape.wrapped,
|
|
59
|
+
center,
|
|
60
|
+
factor,
|
|
61
|
+
inputFaceHashes,
|
|
62
|
+
vecOps.HASH_CODE_MAX
|
|
63
|
+
);
|
|
64
|
+
const result2 = shapeTypes.castShape(resultShape);
|
|
65
|
+
booleanFns.propagateAllMetadata(evolution, [shape], result2);
|
|
66
|
+
return result2;
|
|
67
|
+
}
|
|
68
|
+
function resize(shape, dimensions, options) {
|
|
69
|
+
const bbox = shapeTypes.getKernel().boundingBox(shape.wrapped);
|
|
70
|
+
const size = [
|
|
71
|
+
bbox.max[0] - bbox.min[0],
|
|
72
|
+
bbox.max[1] - bbox.min[1],
|
|
73
|
+
bbox.max[2] - bbox.min[2]
|
|
74
|
+
];
|
|
75
|
+
const auto = options?.auto === true;
|
|
76
|
+
function factor(dim, sz, baseFactor) {
|
|
77
|
+
if (dim !== void 0 && sz > 1e-12) return dim / sz;
|
|
78
|
+
if (dim === void 0 && auto) return baseFactor;
|
|
79
|
+
return 1;
|
|
80
|
+
}
|
|
81
|
+
let autoFactor = 1;
|
|
82
|
+
if (auto) {
|
|
83
|
+
if (dimensions[0] !== void 0 && size[0] > 1e-12) autoFactor = dimensions[0] / size[0];
|
|
84
|
+
else if (dimensions[1] !== void 0 && size[1] > 1e-12) autoFactor = dimensions[1] / size[1];
|
|
85
|
+
else if (dimensions[2] !== void 0 && size[2] > 1e-12) autoFactor = dimensions[2] / size[2];
|
|
86
|
+
}
|
|
87
|
+
const factors = [
|
|
88
|
+
factor(dimensions[0], size[0], autoFactor),
|
|
89
|
+
factor(dimensions[1], size[1], autoFactor),
|
|
90
|
+
factor(dimensions[2], size[2], autoFactor)
|
|
91
|
+
];
|
|
92
|
+
const isUniform = Math.abs(factors[0] - factors[1]) < 1e-6 && Math.abs(factors[1] - factors[2]) < 1e-6;
|
|
93
|
+
if (!isUniform) {
|
|
94
|
+
throw new Error(
|
|
95
|
+
"resize: non-uniform scaling is not supported (WASM build lacks BRepBuilderAPI_GTransform). Use auto: true to scale proportionally, or set all three dimensions to achieve uniform scaling."
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
return scale(shape, factors[0]);
|
|
99
|
+
}
|
|
100
|
+
function parseMatrixInput(input) {
|
|
101
|
+
if ("linear" in input) {
|
|
102
|
+
return { linear: input.linear, translation: input.translation };
|
|
103
|
+
}
|
|
104
|
+
const [r0, r1, r2, r3] = input;
|
|
105
|
+
const TOL = 1e-10;
|
|
106
|
+
if (Math.abs(r3[0]) > TOL || Math.abs(r3[1]) > TOL || Math.abs(r3[2]) > TOL || Math.abs(r3[3] - 1) > TOL) {
|
|
107
|
+
throw new Error(
|
|
108
|
+
`applyMatrix: invalid bottom row [${String(r3[0])}, ${String(r3[1])}, ${String(r3[2])}, ${String(r3[3])}]. Must be [0, 0, 0, 1] for an affine transform.`
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
linear: [r0[0], r0[1], r0[2], r1[0], r1[1], r1[2], r2[0], r2[1], r2[2]],
|
|
113
|
+
translation: [r0[3], r1[3], r2[3]]
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function det3x3(m) {
|
|
117
|
+
return m[0] * (m[4] * m[8] - m[5] * m[7]) - m[1] * (m[3] * m[8] - m[5] * m[6]) + m[2] * (m[3] * m[7] - m[4] * m[6]);
|
|
118
|
+
}
|
|
119
|
+
function isOrthogonalMatrix(m) {
|
|
120
|
+
const TOL = 1e-8;
|
|
121
|
+
const d00 = m[0] * m[0] + m[3] * m[3] + m[6] * m[6];
|
|
122
|
+
const d11 = m[1] * m[1] + m[4] * m[4] + m[7] * m[7];
|
|
123
|
+
const d22 = m[2] * m[2] + m[5] * m[5] + m[8] * m[8];
|
|
124
|
+
const d01 = m[0] * m[1] + m[3] * m[4] + m[6] * m[7];
|
|
125
|
+
const d02 = m[0] * m[2] + m[3] * m[5] + m[6] * m[8];
|
|
126
|
+
const d12 = m[1] * m[2] + m[4] * m[5] + m[7] * m[8];
|
|
127
|
+
if (Math.abs(d01) > TOL) return false;
|
|
128
|
+
if (Math.abs(d02) > TOL) return false;
|
|
129
|
+
if (Math.abs(d12) > TOL) return false;
|
|
130
|
+
if (Math.abs(d00 - d11) > TOL) return false;
|
|
131
|
+
if (Math.abs(d00 - d22) > TOL) return false;
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
function applyMatrix(shape, matrix) {
|
|
135
|
+
const { linear, translation } = parseMatrixInput(matrix);
|
|
136
|
+
const d = det3x3(linear);
|
|
137
|
+
if (Math.abs(d) < 1e-12) {
|
|
138
|
+
throw new Error(
|
|
139
|
+
"applyMatrix: singular matrix (determinant ≈ 0). Cannot apply a non-invertible transform."
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
const orthogonal = isOrthogonalMatrix(linear);
|
|
143
|
+
if (orthogonal) {
|
|
144
|
+
const inputFaceHashes = booleanFns.collectInputFaceHashes([shape]);
|
|
145
|
+
const { shape: resultShape2, evolution } = shapeTypes.getKernel().generalTransformWithHistory(
|
|
146
|
+
shape.wrapped,
|
|
147
|
+
linear,
|
|
148
|
+
translation,
|
|
149
|
+
true,
|
|
150
|
+
inputFaceHashes,
|
|
151
|
+
vecOps.HASH_CODE_MAX
|
|
152
|
+
);
|
|
153
|
+
const result22 = shapeTypes.castShape(resultShape2);
|
|
154
|
+
booleanFns.propagateAllMetadata(evolution, [shape], result22);
|
|
155
|
+
return result22;
|
|
156
|
+
}
|
|
157
|
+
const resultShape = shapeTypes.getKernel().generalTransformNonOrthogonal(shape.wrapped, linear, translation);
|
|
158
|
+
const result2 = shapeTypes.castShape(resultShape);
|
|
159
|
+
booleanFns.propagateMetadataByHash([shape], result2);
|
|
160
|
+
return result2;
|
|
161
|
+
}
|
|
162
|
+
function composeTransforms(ops) {
|
|
163
|
+
const kernelOps = ops.map((op) => {
|
|
164
|
+
if (op.type === "translate") {
|
|
165
|
+
return { type: "translate", x: op.v[0], y: op.v[1], z: op.v[2] };
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
type: "rotate",
|
|
169
|
+
angle: op.angle,
|
|
170
|
+
axis: op.axis,
|
|
171
|
+
center: op.center
|
|
172
|
+
};
|
|
173
|
+
});
|
|
174
|
+
const { handle, dispose } = shapeTypes.getKernel().composeTransform(kernelOps);
|
|
175
|
+
return { trsf: handle, cleanup: dispose };
|
|
176
|
+
}
|
|
177
|
+
function transformCopy(shape, composed) {
|
|
178
|
+
const inputFaceHashes = booleanFns.collectInputFaceHashes([shape]);
|
|
179
|
+
const { shape: resultShape, evolution } = shapeTypes.getKernel().applyComposedTransformWithHistory(
|
|
180
|
+
shape.wrapped,
|
|
181
|
+
composed.trsf,
|
|
182
|
+
inputFaceHashes,
|
|
183
|
+
vecOps.HASH_CODE_MAX
|
|
184
|
+
);
|
|
185
|
+
const result2 = shapeTypes.castShape(resultShape);
|
|
186
|
+
booleanFns.propagateAllMetadata(evolution, [shape], result2);
|
|
187
|
+
return result2;
|
|
188
|
+
}
|
|
12
189
|
function toBufferGeometryData(mesh) {
|
|
13
190
|
return {
|
|
14
191
|
position: mesh.vertices,
|
|
@@ -316,8 +493,8 @@ function autoHeal(shape, options) {
|
|
|
316
493
|
});
|
|
317
494
|
}
|
|
318
495
|
steps.push("Shape invalid — applying shape-level healing");
|
|
319
|
-
const wiresBefore =
|
|
320
|
-
const facesBefore =
|
|
496
|
+
const wiresBefore = topologyQueryFns.getWires(shape).length;
|
|
497
|
+
const facesBefore = topologyQueryFns.getFaces(shape).length;
|
|
321
498
|
let current = shape;
|
|
322
499
|
let solidHealed = false;
|
|
323
500
|
if (sewTolerance !== void 0) {
|
|
@@ -338,7 +515,7 @@ function autoHeal(shape, options) {
|
|
|
338
515
|
}
|
|
339
516
|
}
|
|
340
517
|
if (fixSelfIntersection && fixWires) {
|
|
341
|
-
const wires =
|
|
518
|
+
const wires = topologyQueryFns.getWires(current);
|
|
342
519
|
let fixCount = 0;
|
|
343
520
|
for (const wire2 of wires) {
|
|
344
521
|
try {
|
|
@@ -383,8 +560,8 @@ function autoHeal(shape, options) {
|
|
|
383
560
|
detail: "skipped by options"
|
|
384
561
|
});
|
|
385
562
|
}
|
|
386
|
-
const wiresAfter =
|
|
387
|
-
const facesAfter =
|
|
563
|
+
const wiresAfter = topologyQueryFns.getWires(current).length;
|
|
564
|
+
const facesAfter = topologyQueryFns.getFaces(current).length;
|
|
388
565
|
const wiresHealed = Math.abs(wiresAfter - wiresBefore);
|
|
389
566
|
const facesHealed = Math.abs(facesAfter - facesBefore);
|
|
390
567
|
if (wiresHealed > 0) steps.push(`Wire count changed by ${wiresHealed}`);
|
|
@@ -409,7 +586,7 @@ function box(width, depth, height, options) {
|
|
|
409
586
|
const solid2 = shapeTypes.createSolid(shapeTypes.getKernel().makeBox(width, depth, height));
|
|
410
587
|
const center = options?.at ?? (options?.centered ? [0, 0, 0] : void 0);
|
|
411
588
|
if (center) {
|
|
412
|
-
return
|
|
589
|
+
return translate(solid2, [center[0] - width / 2, center[1] - depth / 2, center[2] - height / 2]);
|
|
413
590
|
}
|
|
414
591
|
return solid2;
|
|
415
592
|
}
|
|
@@ -423,14 +600,14 @@ function cylinder(radius, height, options) {
|
|
|
423
600
|
-axis[1] * height * 0.5,
|
|
424
601
|
-axis[2] * height * 0.5
|
|
425
602
|
];
|
|
426
|
-
solid2 =
|
|
603
|
+
solid2 = translate(solid2, halfShift);
|
|
427
604
|
}
|
|
428
605
|
return solid2;
|
|
429
606
|
}
|
|
430
607
|
function sphere(radius, options) {
|
|
431
608
|
let solid2 = solidBuilders.makeSphere(radius);
|
|
432
609
|
if (options?.at) {
|
|
433
|
-
solid2 =
|
|
610
|
+
solid2 = translate(solid2, options.at);
|
|
434
611
|
}
|
|
435
612
|
return solid2;
|
|
436
613
|
}
|
|
@@ -444,7 +621,7 @@ function cone(bottomRadius, topRadius, height, options) {
|
|
|
444
621
|
-axis[1] * height * 0.5,
|
|
445
622
|
-axis[2] * height * 0.5
|
|
446
623
|
];
|
|
447
|
-
solid2 =
|
|
624
|
+
solid2 = translate(solid2, halfShift);
|
|
448
625
|
}
|
|
449
626
|
return solid2;
|
|
450
627
|
}
|
|
@@ -454,7 +631,7 @@ function torus(majorRadius, minorRadius, options) {
|
|
|
454
631
|
function ellipsoid(rx, ry, rz, options) {
|
|
455
632
|
let solid2 = solidBuilders.makeEllipsoid(rx, ry, rz);
|
|
456
633
|
if (options?.at) {
|
|
457
|
-
solid2 =
|
|
634
|
+
solid2 = translate(solid2, options.at);
|
|
458
635
|
}
|
|
459
636
|
return solid2;
|
|
460
637
|
}
|
|
@@ -508,7 +685,7 @@ function wire(listOfEdges) {
|
|
|
508
685
|
}
|
|
509
686
|
function wireLoop(listOfEdges) {
|
|
510
687
|
return result.andThen(surfaceBuilders.assembleWire(listOfEdges), (w) => {
|
|
511
|
-
if (
|
|
688
|
+
if (core.isClosedWire(w)) return result.ok(w);
|
|
512
689
|
return result.err(
|
|
513
690
|
result.validationError(
|
|
514
691
|
"WIRE_NOT_CLOSED",
|
|
@@ -549,12 +726,14 @@ function addHoles(f, holes) {
|
|
|
549
726
|
}
|
|
550
727
|
exports.addHoles = addHoles;
|
|
551
728
|
exports.adjacentFaces = adjacentFaces;
|
|
729
|
+
exports.applyMatrix = applyMatrix;
|
|
552
730
|
exports.autoHeal = autoHeal;
|
|
553
731
|
exports.bezier = bezier;
|
|
554
732
|
exports.box = box;
|
|
555
733
|
exports.bsplineApprox = bsplineApprox;
|
|
556
734
|
exports.chamferDistAngle = chamferDistAngle;
|
|
557
735
|
exports.circle = circle;
|
|
736
|
+
exports.composeTransforms = composeTransforms;
|
|
558
737
|
exports.compound = compound;
|
|
559
738
|
exports.cone = cone;
|
|
560
739
|
exports.cylinder = cylinder;
|
|
@@ -572,8 +751,12 @@ exports.healWire = healWire;
|
|
|
572
751
|
exports.helix = helix;
|
|
573
752
|
exports.isValid = isValid;
|
|
574
753
|
exports.line = line;
|
|
754
|
+
exports.mirror = mirror;
|
|
575
755
|
exports.offsetFace = offsetFace;
|
|
576
756
|
exports.polygon = polygon;
|
|
757
|
+
exports.resize = resize;
|
|
758
|
+
exports.rotate = rotate;
|
|
759
|
+
exports.scale = scale;
|
|
577
760
|
exports.sewShells = sewShells;
|
|
578
761
|
exports.sharedEdges = sharedEdges;
|
|
579
762
|
exports.solid = solid;
|
|
@@ -585,6 +768,8 @@ exports.toBufferGeometryData = toBufferGeometryData;
|
|
|
585
768
|
exports.toGroupedBufferGeometryData = toGroupedBufferGeometryData;
|
|
586
769
|
exports.toLineGeometryData = toLineGeometryData;
|
|
587
770
|
exports.torus = torus;
|
|
771
|
+
exports.transformCopy = transformCopy;
|
|
772
|
+
exports.translate = translate;
|
|
588
773
|
exports.vertex = vertex;
|
|
589
774
|
exports.verticesOfEdge = verticesOfEdge;
|
|
590
775
|
exports.wire = wire;
|
|
@@ -1,13 +1,190 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { e as err,
|
|
3
|
-
import {
|
|
4
|
-
import { H as HASH_CODE_MAX, D as DEG2RAD } from "./vecOps-
|
|
5
|
-
import { d as addHolesInFace, j as makeBezierCurve, g as makeBSplineApproximation, e as makeCircle, f as makeEllipse, k as makeEllipseArc,
|
|
6
|
-
import {
|
|
7
|
-
import "./
|
|
8
|
-
import {
|
|
9
|
-
import "./
|
|
10
|
-
import "./
|
|
1
|
+
import "./shapeFns-BJbua5kT.js";
|
|
2
|
+
import { e as err, v as validationError, k as kernelError, b as isErr, t as typeCastError, o as ok, u as unwrap, f as isOk, B as BrepErrorCode, a as andThen } from "./result-DtuwWSUD.js";
|
|
3
|
+
import { g as getKernel, c as castShape, j as isShape3D, k as isSolid, o as isFace, b as isWire, h as createSolid } from "./shapeTypes-CAEAyk8j.js";
|
|
4
|
+
import { H as HASH_CODE_MAX, D as DEG2RAD } from "./vecOps-LTN--A58.js";
|
|
5
|
+
import { d as addHolesInFace, j as makeBezierCurve, g as makeBSplineApproximation, e as makeCircle, f as makeEllipse, k as makeEllipseArc, c as makeFace, l as makeNonPlanarFace, b as makeHelix, m as makeLine, n as makePolygon, h as makeNewFaceWithinFace, o as makeTangentArc, p as makeThreePointArc, a as assembleWire } from "./surfaceBuilders-Dj6AjhOv.js";
|
|
6
|
+
import { c as collectInputFaceHashes, p as propagateAllMetadata, u as propagateMetadataByHash } from "./booleanFns-Br2KdGJq.js";
|
|
7
|
+
import { a as makeCompound, d as makeCone, c as makeCylinder, e as makeEllipsoid, f as makeOffset, w as weldShellsAndFaces, b as makeSolid, g as makeSphere, h as makeTorus, m as makeVertex } from "./solidBuilders-BS-1220W.js";
|
|
8
|
+
import { isClosedWire } from "./core.js";
|
|
9
|
+
import { d as downcast } from "./faceFns-DGMp47Os.js";
|
|
10
|
+
import "./curveFns-1u0oZ0u0.js";
|
|
11
|
+
import "./meshFns-CtUl9fGY.js";
|
|
12
|
+
import { c as getWires, b as getFaces } from "./topologyQueryFns-De439iBP.js";
|
|
13
|
+
function translate(shape, v) {
|
|
14
|
+
const inputFaceHashes = collectInputFaceHashes([shape]);
|
|
15
|
+
const { shape: resultShape, evolution } = getKernel().translateWithHistory(
|
|
16
|
+
shape.wrapped,
|
|
17
|
+
v[0],
|
|
18
|
+
v[1],
|
|
19
|
+
v[2],
|
|
20
|
+
inputFaceHashes,
|
|
21
|
+
HASH_CODE_MAX
|
|
22
|
+
);
|
|
23
|
+
const result = castShape(resultShape);
|
|
24
|
+
propagateAllMetadata(evolution, [shape], result);
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
function rotate(shape, angle, position = [0, 0, 0], direction = [0, 0, 1]) {
|
|
28
|
+
const inputFaceHashes = collectInputFaceHashes([shape]);
|
|
29
|
+
const { shape: resultShape, evolution } = getKernel().rotateWithHistory(
|
|
30
|
+
shape.wrapped,
|
|
31
|
+
angle * DEG2RAD,
|
|
32
|
+
inputFaceHashes,
|
|
33
|
+
HASH_CODE_MAX,
|
|
34
|
+
direction,
|
|
35
|
+
position
|
|
36
|
+
);
|
|
37
|
+
const result = castShape(resultShape);
|
|
38
|
+
propagateAllMetadata(evolution, [shape], result);
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
function mirror(shape, planeNormal = [0, 1, 0], planeOrigin = [0, 0, 0]) {
|
|
42
|
+
const inputFaceHashes = collectInputFaceHashes([shape]);
|
|
43
|
+
const { shape: resultShape, evolution } = getKernel().mirrorWithHistory(
|
|
44
|
+
shape.wrapped,
|
|
45
|
+
planeOrigin,
|
|
46
|
+
planeNormal,
|
|
47
|
+
inputFaceHashes,
|
|
48
|
+
HASH_CODE_MAX
|
|
49
|
+
);
|
|
50
|
+
const result = castShape(resultShape);
|
|
51
|
+
propagateAllMetadata(evolution, [shape], result);
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
function scale(shape, factor, center = [0, 0, 0]) {
|
|
55
|
+
const inputFaceHashes = collectInputFaceHashes([shape]);
|
|
56
|
+
const { shape: resultShape, evolution } = getKernel().scaleWithHistory(
|
|
57
|
+
shape.wrapped,
|
|
58
|
+
center,
|
|
59
|
+
factor,
|
|
60
|
+
inputFaceHashes,
|
|
61
|
+
HASH_CODE_MAX
|
|
62
|
+
);
|
|
63
|
+
const result = castShape(resultShape);
|
|
64
|
+
propagateAllMetadata(evolution, [shape], result);
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
function resize(shape, dimensions, options) {
|
|
68
|
+
const bbox = getKernel().boundingBox(shape.wrapped);
|
|
69
|
+
const size = [
|
|
70
|
+
bbox.max[0] - bbox.min[0],
|
|
71
|
+
bbox.max[1] - bbox.min[1],
|
|
72
|
+
bbox.max[2] - bbox.min[2]
|
|
73
|
+
];
|
|
74
|
+
const auto = options?.auto === true;
|
|
75
|
+
function factor(dim, sz, baseFactor) {
|
|
76
|
+
if (dim !== void 0 && sz > 1e-12) return dim / sz;
|
|
77
|
+
if (dim === void 0 && auto) return baseFactor;
|
|
78
|
+
return 1;
|
|
79
|
+
}
|
|
80
|
+
let autoFactor = 1;
|
|
81
|
+
if (auto) {
|
|
82
|
+
if (dimensions[0] !== void 0 && size[0] > 1e-12) autoFactor = dimensions[0] / size[0];
|
|
83
|
+
else if (dimensions[1] !== void 0 && size[1] > 1e-12) autoFactor = dimensions[1] / size[1];
|
|
84
|
+
else if (dimensions[2] !== void 0 && size[2] > 1e-12) autoFactor = dimensions[2] / size[2];
|
|
85
|
+
}
|
|
86
|
+
const factors = [
|
|
87
|
+
factor(dimensions[0], size[0], autoFactor),
|
|
88
|
+
factor(dimensions[1], size[1], autoFactor),
|
|
89
|
+
factor(dimensions[2], size[2], autoFactor)
|
|
90
|
+
];
|
|
91
|
+
const isUniform = Math.abs(factors[0] - factors[1]) < 1e-6 && Math.abs(factors[1] - factors[2]) < 1e-6;
|
|
92
|
+
if (!isUniform) {
|
|
93
|
+
throw new Error(
|
|
94
|
+
"resize: non-uniform scaling is not supported (WASM build lacks BRepBuilderAPI_GTransform). Use auto: true to scale proportionally, or set all three dimensions to achieve uniform scaling."
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
return scale(shape, factors[0]);
|
|
98
|
+
}
|
|
99
|
+
function parseMatrixInput(input) {
|
|
100
|
+
if ("linear" in input) {
|
|
101
|
+
return { linear: input.linear, translation: input.translation };
|
|
102
|
+
}
|
|
103
|
+
const [r0, r1, r2, r3] = input;
|
|
104
|
+
const TOL = 1e-10;
|
|
105
|
+
if (Math.abs(r3[0]) > TOL || Math.abs(r3[1]) > TOL || Math.abs(r3[2]) > TOL || Math.abs(r3[3] - 1) > TOL) {
|
|
106
|
+
throw new Error(
|
|
107
|
+
`applyMatrix: invalid bottom row [${String(r3[0])}, ${String(r3[1])}, ${String(r3[2])}, ${String(r3[3])}]. Must be [0, 0, 0, 1] for an affine transform.`
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
linear: [r0[0], r0[1], r0[2], r1[0], r1[1], r1[2], r2[0], r2[1], r2[2]],
|
|
112
|
+
translation: [r0[3], r1[3], r2[3]]
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function det3x3(m) {
|
|
116
|
+
return m[0] * (m[4] * m[8] - m[5] * m[7]) - m[1] * (m[3] * m[8] - m[5] * m[6]) + m[2] * (m[3] * m[7] - m[4] * m[6]);
|
|
117
|
+
}
|
|
118
|
+
function isOrthogonalMatrix(m) {
|
|
119
|
+
const TOL = 1e-8;
|
|
120
|
+
const d00 = m[0] * m[0] + m[3] * m[3] + m[6] * m[6];
|
|
121
|
+
const d11 = m[1] * m[1] + m[4] * m[4] + m[7] * m[7];
|
|
122
|
+
const d22 = m[2] * m[2] + m[5] * m[5] + m[8] * m[8];
|
|
123
|
+
const d01 = m[0] * m[1] + m[3] * m[4] + m[6] * m[7];
|
|
124
|
+
const d02 = m[0] * m[2] + m[3] * m[5] + m[6] * m[8];
|
|
125
|
+
const d12 = m[1] * m[2] + m[4] * m[5] + m[7] * m[8];
|
|
126
|
+
if (Math.abs(d01) > TOL) return false;
|
|
127
|
+
if (Math.abs(d02) > TOL) return false;
|
|
128
|
+
if (Math.abs(d12) > TOL) return false;
|
|
129
|
+
if (Math.abs(d00 - d11) > TOL) return false;
|
|
130
|
+
if (Math.abs(d00 - d22) > TOL) return false;
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
function applyMatrix(shape, matrix) {
|
|
134
|
+
const { linear, translation } = parseMatrixInput(matrix);
|
|
135
|
+
const d = det3x3(linear);
|
|
136
|
+
if (Math.abs(d) < 1e-12) {
|
|
137
|
+
throw new Error(
|
|
138
|
+
"applyMatrix: singular matrix (determinant ≈ 0). Cannot apply a non-invertible transform."
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
const orthogonal = isOrthogonalMatrix(linear);
|
|
142
|
+
if (orthogonal) {
|
|
143
|
+
const inputFaceHashes = collectInputFaceHashes([shape]);
|
|
144
|
+
const { shape: resultShape2, evolution } = getKernel().generalTransformWithHistory(
|
|
145
|
+
shape.wrapped,
|
|
146
|
+
linear,
|
|
147
|
+
translation,
|
|
148
|
+
true,
|
|
149
|
+
inputFaceHashes,
|
|
150
|
+
HASH_CODE_MAX
|
|
151
|
+
);
|
|
152
|
+
const result2 = castShape(resultShape2);
|
|
153
|
+
propagateAllMetadata(evolution, [shape], result2);
|
|
154
|
+
return result2;
|
|
155
|
+
}
|
|
156
|
+
const resultShape = getKernel().generalTransformNonOrthogonal(shape.wrapped, linear, translation);
|
|
157
|
+
const result = castShape(resultShape);
|
|
158
|
+
propagateMetadataByHash([shape], result);
|
|
159
|
+
return result;
|
|
160
|
+
}
|
|
161
|
+
function composeTransforms(ops) {
|
|
162
|
+
const kernelOps = ops.map((op) => {
|
|
163
|
+
if (op.type === "translate") {
|
|
164
|
+
return { type: "translate", x: op.v[0], y: op.v[1], z: op.v[2] };
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
type: "rotate",
|
|
168
|
+
angle: op.angle,
|
|
169
|
+
axis: op.axis,
|
|
170
|
+
center: op.center
|
|
171
|
+
};
|
|
172
|
+
});
|
|
173
|
+
const { handle, dispose } = getKernel().composeTransform(kernelOps);
|
|
174
|
+
return { trsf: handle, cleanup: dispose };
|
|
175
|
+
}
|
|
176
|
+
function transformCopy(shape, composed) {
|
|
177
|
+
const inputFaceHashes = collectInputFaceHashes([shape]);
|
|
178
|
+
const { shape: resultShape, evolution } = getKernel().applyComposedTransformWithHistory(
|
|
179
|
+
shape.wrapped,
|
|
180
|
+
composed.trsf,
|
|
181
|
+
inputFaceHashes,
|
|
182
|
+
HASH_CODE_MAX
|
|
183
|
+
);
|
|
184
|
+
const result = castShape(resultShape);
|
|
185
|
+
propagateAllMetadata(evolution, [shape], result);
|
|
186
|
+
return result;
|
|
187
|
+
}
|
|
11
188
|
function toBufferGeometryData(mesh) {
|
|
12
189
|
return {
|
|
13
190
|
position: mesh.vertices,
|
|
@@ -547,47 +724,55 @@ function addHoles(f, holes) {
|
|
|
547
724
|
return addHolesInFace(f, holes);
|
|
548
725
|
}
|
|
549
726
|
export {
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
727
|
+
filledFace as A,
|
|
728
|
+
healFace as B,
|
|
729
|
+
healSolid as C,
|
|
730
|
+
healWire as D,
|
|
731
|
+
helix as E,
|
|
732
|
+
line as F,
|
|
733
|
+
offsetFace as G,
|
|
734
|
+
polygon as H,
|
|
735
|
+
resize as I,
|
|
736
|
+
sewShells as J,
|
|
737
|
+
sharedEdges as K,
|
|
738
|
+
solid as L,
|
|
739
|
+
sphere as M,
|
|
740
|
+
subFace as N,
|
|
741
|
+
tangentArc as O,
|
|
742
|
+
threePointArc as P,
|
|
743
|
+
toBufferGeometryData as Q,
|
|
744
|
+
toGroupedBufferGeometryData as R,
|
|
745
|
+
toLineGeometryData as S,
|
|
746
|
+
torus as T,
|
|
747
|
+
vertex as U,
|
|
748
|
+
verticesOfEdge as V,
|
|
749
|
+
wire as W,
|
|
750
|
+
wireLoop as X,
|
|
751
|
+
wiresOfFace as Y,
|
|
752
|
+
applyMatrix as a,
|
|
753
|
+
translate as b,
|
|
569
754
|
chamferDistAngle as c,
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
755
|
+
addHoles as d,
|
|
756
|
+
adjacentFaces as e,
|
|
757
|
+
autoHeal as f,
|
|
758
|
+
bezier as g,
|
|
574
759
|
heal as h,
|
|
575
760
|
isValid as i,
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
761
|
+
box as j,
|
|
762
|
+
bsplineApprox as k,
|
|
763
|
+
circle as l,
|
|
764
|
+
mirror as m,
|
|
765
|
+
composeTransforms as n,
|
|
766
|
+
compound as o,
|
|
767
|
+
cone as p,
|
|
768
|
+
cylinder as q,
|
|
769
|
+
rotate as r,
|
|
770
|
+
scale as s,
|
|
771
|
+
transformCopy as t,
|
|
772
|
+
edgesOfFace as u,
|
|
773
|
+
ellipse as v,
|
|
774
|
+
ellipseArc as w,
|
|
775
|
+
ellipsoid as x,
|
|
776
|
+
face as y,
|
|
777
|
+
facesOfEdge as z
|
|
593
778
|
};
|
package/dist/topology.cjs
CHANGED
|
@@ -1,25 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const shapeFns = require("./shapeFns-
|
|
4
|
-
const topology = require("./topology-
|
|
5
|
-
const booleanFns = require("./booleanFns-
|
|
6
|
-
const curveFns = require("./curveFns-
|
|
7
|
-
const faceFns = require("./faceFns-
|
|
8
|
-
const meshFns = require("./meshFns-
|
|
9
|
-
|
|
10
|
-
exports.getEdges = shapeFns.getEdges;
|
|
11
|
-
exports.getFaces = shapeFns.getFaces;
|
|
3
|
+
const shapeFns = require("./shapeFns-w9tWELHX.cjs");
|
|
4
|
+
const topology = require("./topology-CyPHYYjV.cjs");
|
|
5
|
+
const booleanFns = require("./booleanFns-BBd2oTvv.cjs");
|
|
6
|
+
const curveFns = require("./curveFns-BwLvO_Ia.cjs");
|
|
7
|
+
const faceFns = require("./faceFns-BAKkZG6D.cjs");
|
|
8
|
+
const meshFns = require("./meshFns-7dgZgNYK.cjs");
|
|
9
|
+
const topologyQueryFns = require("./topologyQueryFns-fz5kz5e1.cjs");
|
|
12
10
|
exports.getHashCode = shapeFns.getHashCode;
|
|
13
|
-
exports.getVertices = shapeFns.getVertices;
|
|
14
|
-
exports.getWires = shapeFns.getWires;
|
|
15
|
-
exports.invalidateShapeCache = shapeFns.invalidateShapeCache;
|
|
16
11
|
exports.isEqualShape = shapeFns.isEqualShape;
|
|
17
12
|
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;
|
|
23
13
|
exports.addHoles = topology.addHoles;
|
|
24
14
|
exports.adjacentFaces = topology.adjacentFaces;
|
|
25
15
|
exports.autoHeal = topology.autoHeal;
|
|
@@ -102,3 +92,14 @@ exports.createMeshCache = meshFns.createMeshCache;
|
|
|
102
92
|
exports.exportIGES = meshFns.exportIGES;
|
|
103
93
|
exports.exportSTEP = meshFns.exportSTEP;
|
|
104
94
|
exports.exportSTL = meshFns.exportSTL;
|
|
95
|
+
exports.getBounds = topologyQueryFns.getBounds;
|
|
96
|
+
exports.getEdges = topologyQueryFns.getEdges;
|
|
97
|
+
exports.getFaces = topologyQueryFns.getFaces;
|
|
98
|
+
exports.getVertices = topologyQueryFns.getVertices;
|
|
99
|
+
exports.getWires = topologyQueryFns.getWires;
|
|
100
|
+
exports.invalidateShapeCache = topologyQueryFns.invalidateShapeCache;
|
|
101
|
+
exports.iterEdges = topologyQueryFns.iterEdges;
|
|
102
|
+
exports.iterFaces = topologyQueryFns.iterFaces;
|
|
103
|
+
exports.iterVertices = topologyQueryFns.iterVertices;
|
|
104
|
+
exports.iterWires = topologyQueryFns.iterWires;
|
|
105
|
+
exports.vertexPosition = topologyQueryFns.vertexPosition;
|