brepjs 18.76.0 → 18.77.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/2d.cjs +6 -6
- package/dist/2d.js +6 -6
- package/dist/{blueprint-BHyTsY5E.cjs → blueprint-BE93BNYE.cjs} +5 -5
- package/dist/{blueprint-DuT3LJGx.js → blueprint-BVe9JU-L.js} +5 -5
- package/dist/{blueprintFns-dPHJgrqC.cjs → blueprintFns-B_7kKwEZ.cjs} +2 -2
- package/dist/{blueprintFns-qaEV4X2R.js → blueprintFns-DWinspVK.js} +2 -2
- package/dist/{blueprintSketcher-Th4H1tao.cjs → blueprintSketcher-D75tuXkF.cjs} +3 -3
- package/dist/{blueprintSketcher-IY1gJ613.js → blueprintSketcher-DL-wgnVs.js} +3 -3
- package/dist/{boolean2D-BGK18W_l.cjs → boolean2D-C4Txi8U1.cjs} +4 -4
- package/dist/{boolean2D-DUDg_dMv.js → boolean2D-OtHT7POp.js} +4 -4
- package/dist/{booleanFns-DxnTjP19.cjs → booleanFns-CFa3bgbG.cjs} +4 -4
- package/dist/{booleanFns-Cu-J1THp.js → booleanFns-D7Xgt-Og.js} +4 -4
- package/dist/brepjs.cjs +25 -25
- package/dist/brepjs.js +25 -25
- package/dist/{cameraFns-Ctxe8ev-.js → cameraFns-DCXqzH_m.js} +2 -2
- package/dist/{cameraFns-G2lc5c9M.cjs → cameraFns-DfSRnD1k.cjs} +2 -2
- package/dist/core.cjs +1 -1
- package/dist/core.js +1 -1
- package/dist/{cornerFinder-DamaTij5.js → cornerFinder-DPkLU1Of.js} +1 -1
- package/dist/{cornerFinder-CxqA_AYe.cjs → cornerFinder-KuLU-4pQ.cjs} +1 -1
- package/dist/{curveFns-CwOY58kC.js → curveFns-B4KEYU1M.js} +1 -1
- package/dist/{curveFns-B8UdENpg.cjs → curveFns-C0oCmjV2.cjs} +1 -1
- package/dist/{drawFns-CcR9_01X.js → drawFns-BBoTkSta.js} +12 -12
- package/dist/{drawFns-BwfhGs8Z.cjs → drawFns-DNokXs9U.cjs} +12 -12
- package/dist/{extrudeFns-b7JHaMsv.cjs → extrudeFns-BJSW3EaV.cjs} +1 -1
- package/dist/{extrudeFns-msxcCUm2.js → extrudeFns-CSWqlW-n.js} +1 -1
- package/dist/{faceFns-BJ0mbRh5.js → faceFns-BJ2hzXJp.js} +2 -2
- package/dist/{faceFns-CZvemlPW.cjs → faceFns-p0lyVuyw.cjs} +2 -2
- package/dist/{helpers-DsaGpuUh.js → helpers-C78MY-s6.js} +6 -6
- package/dist/{helpers-90SKWHEY.cjs → helpers-DTBDjbdR.cjs} +6 -6
- package/dist/{historyFns-xUNAdUYV.cjs → historyFns-4ggYGJB2.cjs} +4 -4
- package/dist/{historyFns-BV5sQxft.js → historyFns-Ck2tXVAL.js} +4 -4
- package/dist/{importFns-CXH2OmJ6.cjs → importFns-CUAiLgt_.cjs} +2 -2
- package/dist/{importFns-B02-HKco.js → importFns-Rv22QSn6.js} +2 -2
- package/dist/io.cjs +2 -2
- package/dist/io.js +2 -2
- package/dist/kernel/occt/geometryQueryOps.d.ts +5 -1
- package/dist/kernel/occtWasm/occtWasmAdapter.cjs +1 -1
- package/dist/kernel/occtWasm/occtWasmAdapter.js +1 -1
- package/dist/kernel/occtWasm/surfaceOps.d.ts +5 -1
- package/dist/{measureFns-DYeTPyHr.js → measureFns-C8c6xRUE.js} +3 -3
- package/dist/{measureFns-CRS3U8gj.cjs → measureFns-DnxobCbD.cjs} +3 -3
- package/dist/measurement.cjs +1 -1
- package/dist/measurement.js +1 -1
- package/dist/{meshFns-CvmTzMPL.cjs → meshFns-BawS1xNA.cjs} +3 -3
- package/dist/{meshFns-CLQL2D95.js → meshFns-CuYzpojl.js} +3 -3
- package/dist/{occtWasmAdapter-m4Nua92H.js → occtWasmAdapter-BrTkhQYK.js} +83 -6
- package/dist/{occtWasmAdapter-DdghAlnN.cjs → occtWasmAdapter-W86SRBpi.cjs} +83 -6
- package/dist/operations.cjs +2 -2
- package/dist/operations.js +2 -2
- package/dist/{primitiveFns-B6Q6lx9-.js → primitiveFns-DWIzRvTY.js} +7 -7
- package/dist/{primitiveFns-FudrSXrp.cjs → primitiveFns-ItlGYe3M.cjs} +7 -7
- package/dist/projection.cjs +1 -1
- package/dist/projection.js +1 -1
- package/dist/query.cjs +2 -2
- package/dist/query.js +2 -2
- package/dist/{shapeFns-CQmd2W5F.cjs → shapeFns-D5WNrq3s.cjs} +2 -2
- package/dist/{shapeFns-CQRGTifg.js → shapeFns-DZ6poxP7.js} +2 -2
- package/dist/shapeRef.cjs +1 -1
- package/dist/shapeRef.js +1 -1
- package/dist/{shapeRefFns-DoPplxoN.cjs → shapeRefFns-BOWP8n4j.cjs} +4 -4
- package/dist/{shapeRefFns-DvIvS0do.js → shapeRefFns-ClsyeZp4.js} +4 -4
- package/dist/{shapeTypes-C4cMKLoj.cjs → shapeTypes-CxSqNvHA.cjs} +55 -26
- package/dist/{shapeTypes-VCBsDI43.js → shapeTypes-CyTY0prh.js} +55 -26
- package/dist/sketching.cjs +3 -3
- package/dist/sketching.js +3 -3
- package/dist/{solidBuilders-DBsHetmI.js → solidBuilders-BtEFUFQ9.js} +2 -2
- package/dist/{solidBuilders-B0Hzin8a.cjs → solidBuilders-diw2zyyN.cjs} +2 -2
- package/dist/{surfaceBuilders-QK_Cnn_u.cjs → surfaceBuilders-CPHOXRLE.cjs} +2 -2
- package/dist/{surfaceBuilders-DllH3kXs.js → surfaceBuilders-Do0rypyD.js} +2 -2
- package/dist/text.cjs +2 -2
- package/dist/text.js +2 -2
- package/dist/{textBlueprints-C_ThSDVg.js → textBlueprints-CYc0xi6l.js} +7 -7
- package/dist/{textBlueprints-8lNMcsUv.cjs → textBlueprints-D31dKTZS.cjs} +7 -7
- package/dist/{textMetrics-Bn5VPcTV.cjs → textMetrics-CjbXCzpg.cjs} +1 -1
- package/dist/{textMetrics-CxdhimFF.js → textMetrics-DfxB-y9A.js} +1 -1
- package/dist/topology.cjs +7 -7
- package/dist/topology.js +7 -7
- package/dist/{topologyQueryFns-BtfhAVY2.js → topologyQueryFns-BomrmBie.js} +1 -1
- package/dist/{topologyQueryFns-Bj5wpC75.cjs → topologyQueryFns-Dzxrwn-E.cjs} +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
1
|
+
const require_shapeTypes = require("./shapeTypes-CxSqNvHA.cjs");
|
|
2
2
|
const require_errors = require("./errors-CXJtc4I7.cjs");
|
|
3
3
|
const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
|
|
4
|
-
const require_faceFns = require("./faceFns-
|
|
5
|
-
const require_shapeFns = require("./shapeFns-
|
|
6
|
-
const require_booleanFns = require("./booleanFns-
|
|
4
|
+
const require_faceFns = require("./faceFns-p0lyVuyw.cjs");
|
|
5
|
+
const require_shapeFns = require("./shapeFns-D5WNrq3s.cjs");
|
|
6
|
+
const require_booleanFns = require("./booleanFns-CFa3bgbG.cjs");
|
|
7
7
|
//#region src/utils/uuid.ts
|
|
8
8
|
/** Generate a v4-style UUID string using `crypto.getRandomValues`. */
|
|
9
9
|
function uuidv() {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { B as createKernelHandle, Z as getKernel, t as castShape } from "./shapeTypes-
|
|
1
|
+
import { B as createKernelHandle, Z as getKernel, t as castShape } from "./shapeTypes-CyTY0prh.js";
|
|
2
2
|
import { A as ok, b as err, d as validationError, n as computationError, r as ioError } from "./errors-DNWJsfVU.js";
|
|
3
3
|
import { d as vecNormalize, s as vecIsZero } from "./vecOps-SKPRvPH-.js";
|
|
4
|
-
import { y as fromBREP } from "./faceFns-
|
|
5
|
-
import { s as toBREP } from "./shapeFns-
|
|
6
|
-
import { a as fuseAll } from "./booleanFns-
|
|
4
|
+
import { y as fromBREP } from "./faceFns-BJ2hzXJp.js";
|
|
5
|
+
import { s as toBREP } from "./shapeFns-DZ6poxP7.js";
|
|
6
|
+
import { a as fuseAll } from "./booleanFns-D7Xgt-Og.js";
|
|
7
7
|
//#region src/utils/uuid.ts
|
|
8
8
|
/** Generate a v4-style UUID string using `crypto.getRandomValues`. */
|
|
9
9
|
function uuidv() {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
1
|
+
const require_shapeTypes = require("./shapeTypes-CxSqNvHA.cjs");
|
|
2
2
|
const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
|
|
3
3
|
const require_errors = require("./errors-CXJtc4I7.cjs");
|
|
4
4
|
const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
|
|
5
|
-
const require_blueprint = require("./blueprint-
|
|
5
|
+
const require_blueprint = require("./blueprint-BE93BNYE.cjs");
|
|
6
6
|
//#region src/io/objExportFns.ts
|
|
7
7
|
/** Read a vec3 from a typed array at the given vertex index. */
|
|
8
8
|
function vec3At(arr, i) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Z as getKernel, t as castShape } from "./shapeTypes-
|
|
1
|
+
import { Z as getKernel, t as castShape } from "./shapeTypes-CyTY0prh.js";
|
|
2
2
|
import { n as wasmIndex, t as vec3At$1 } from "./vec3-Dpha8d5k.js";
|
|
3
3
|
import { A as ok, b as err, r as ioError, t as BrepErrorCode } from "./errors-DNWJsfVU.js";
|
|
4
4
|
import { n as getAtOrThrow } from "./arrayAccess-DrUGPADn.js";
|
|
5
|
-
import { f as make2dSegmentCurve, m as make2dThreePointArc, s as make2dBezierCurve, t as Blueprint } from "./blueprint-
|
|
5
|
+
import { f as make2dSegmentCurve, m as make2dThreePointArc, s as make2dBezierCurve, t as Blueprint } from "./blueprint-BVe9JU-L.js";
|
|
6
6
|
//#region src/io/objExportFns.ts
|
|
7
7
|
/** Read a vec3 from a typed array at the given vertex index. */
|
|
8
8
|
function vec3At(arr, i) {
|
package/dist/io.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_meshFns = require("./meshFns-
|
|
3
|
-
const require_importFns = require("./importFns-
|
|
2
|
+
const require_meshFns = require("./meshFns-BawS1xNA.cjs");
|
|
3
|
+
const require_importFns = require("./importFns-CUAiLgt_.cjs");
|
|
4
4
|
exports.blueprintToDXF = require_importFns.blueprintToDXF;
|
|
5
5
|
exports.exportDXF = require_importFns.exportDXF;
|
|
6
6
|
exports.exportGlb = require_importFns.exportGlb;
|
package/dist/io.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as exportSTEP, r as exportSTL, t as exportIGES } from "./meshFns-
|
|
2
|
-
import { a as importSVG, c as blueprintToDXF, d as exportGltf, f as exportOBJ, i as exportSTEPConfigured, l as exportDXF, n as importSTEP, o as importSVGPathD, r as importSTL, s as exportThreeMF, t as importIGES, u as exportGlb } from "./importFns-
|
|
1
|
+
import { n as exportSTEP, r as exportSTL, t as exportIGES } from "./meshFns-CuYzpojl.js";
|
|
2
|
+
import { a as importSVG, c as blueprintToDXF, d as exportGltf, f as exportOBJ, i as exportSTEPConfigured, l as exportDXF, n as importSTEP, o as importSVGPathD, r as importSTL, s as exportThreeMF, t as importIGES, u as exportGlb } from "./importFns-Rv22QSn6.js";
|
|
3
3
|
export { blueprintToDXF, exportDXF, exportGlb, exportGltf, exportIGES, exportOBJ, exportSTEP, exportSTEPConfigured, exportSTL, exportThreeMF, importIGES, importSTEP, importSTL, importSVG, importSVGPathD };
|
|
@@ -69,7 +69,11 @@ export declare function getSurfaceCylinderData(oc: KernelInstance, surface: Kern
|
|
|
69
69
|
radius: number;
|
|
70
70
|
isDirect: boolean;
|
|
71
71
|
} | null;
|
|
72
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* Get the axis of symmetry (point on axis + unit direction) for an analytic
|
|
74
|
+
* face that has one: cylinder, cone, torus, or surface of revolution. Null
|
|
75
|
+
* otherwise (plane, sphere, free-form).
|
|
76
|
+
*/
|
|
73
77
|
export declare function getSurfaceAxis(oc: KernelInstance, face: KernelShape): {
|
|
74
78
|
origin: [number, number, number];
|
|
75
79
|
direction: [number, number, number];
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_occtWasmAdapter = require("../../occtWasmAdapter-
|
|
2
|
+
const require_occtWasmAdapter = require("../../occtWasmAdapter-W86SRBpi.cjs");
|
|
3
3
|
exports.OcctWasmAdapter = require_occtWasmAdapter.OcctWasmAdapter;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as OcctWasmAdapter } from "../../occtWasmAdapter-
|
|
1
|
+
import { t as OcctWasmAdapter } from "../../occtWasmAdapter-BrTkhQYK.js";
|
|
2
2
|
export { OcctWasmAdapter };
|
|
@@ -12,7 +12,11 @@ export declare function outerWire(k: OcctKernelWasm, face: KernelShape): KernelS
|
|
|
12
12
|
export declare function surfaceNormal(k: OcctKernelWasm, face: KernelShape, u: number, v: number): [number, number, number];
|
|
13
13
|
export declare function pointOnSurface(k: OcctKernelWasm, face: KernelShape, u: number, v: number): [number, number, number];
|
|
14
14
|
type V3 = [number, number, number];
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Axis of symmetry (point on axis + unit direction) for an analytic face that
|
|
17
|
+
* has one. Cylinders use the exact normal-cross derivation; cones, tori, and
|
|
18
|
+
* surfaces of revolution fall back to circle-center sampling. Null otherwise.
|
|
19
|
+
*/
|
|
16
20
|
export declare function getSurfaceAxis(k: OcctKernelWasm, face: KernelShape): {
|
|
17
21
|
origin: V3;
|
|
18
22
|
direction: V3;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Z as getKernel } from "./shapeTypes-
|
|
1
|
+
import { Z as getKernel } from "./shapeTypes-CyTY0prh.js";
|
|
2
2
|
import { A as ok, b as err, d as validationError, t as BrepErrorCode } from "./errors-DNWJsfVU.js";
|
|
3
|
-
import { w as kernelCallRaw } from "./topologyQueryFns-
|
|
4
|
-
import { m as uvBounds } from "./faceFns-
|
|
3
|
+
import { w as kernelCallRaw } from "./topologyQueryFns-BomrmBie.js";
|
|
4
|
+
import { m as uvBounds } from "./faceFns-BJ2hzXJp.js";
|
|
5
5
|
//#region src/measurement/measureCache.ts
|
|
6
6
|
var cache = /* @__PURE__ */ new WeakMap();
|
|
7
7
|
function getCachedMeasurement(shape, key) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
1
|
+
const require_shapeTypes = require("./shapeTypes-CxSqNvHA.cjs");
|
|
2
2
|
const require_errors = require("./errors-CXJtc4I7.cjs");
|
|
3
|
-
const require_topologyQueryFns = require("./topologyQueryFns-
|
|
4
|
-
const require_faceFns = require("./faceFns-
|
|
3
|
+
const require_topologyQueryFns = require("./topologyQueryFns-Dzxrwn-E.cjs");
|
|
4
|
+
const require_faceFns = require("./faceFns-p0lyVuyw.cjs");
|
|
5
5
|
//#region src/measurement/measureCache.ts
|
|
6
6
|
var cache = /* @__PURE__ */ new WeakMap();
|
|
7
7
|
function getCachedMeasurement(shape, key) {
|
package/dist/measurement.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_measureFns = require("./measureFns-
|
|
2
|
+
const require_measureFns = require("./measureFns-DnxobCbD.cjs");
|
|
3
3
|
exports.createDistanceQuery = require_measureFns.createDistanceQuery;
|
|
4
4
|
exports.measureArea = require_measureFns.measureArea;
|
|
5
5
|
exports.measureDistance = require_measureFns.measureDistance;
|
package/dist/measurement.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as measureDistance, c as measureLinearProps, d as measureVolumeProps, l as measureSurfaceProps, n as measureArea, o as measureDistanceProps, s as measureLength, t as createDistanceQuery, u as measureVolume } from "./measureFns-
|
|
1
|
+
import { a as measureDistance, c as measureLinearProps, d as measureVolumeProps, l as measureSurfaceProps, n as measureArea, o as measureDistanceProps, s as measureLength, t as createDistanceQuery, u as measureVolume } from "./measureFns-C8c6xRUE.js";
|
|
2
2
|
export { createDistanceQuery, measureArea, measureDistance, measureDistanceProps, measureLength, measureLinearProps, measureSurfaceProps, measureVolume, measureVolumeProps };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
1
|
+
const require_shapeTypes = require("./shapeTypes-CxSqNvHA.cjs");
|
|
2
2
|
const require_errors = require("./errors-CXJtc4I7.cjs");
|
|
3
|
-
const require_topologyQueryFns = require("./topologyQueryFns-
|
|
4
|
-
const require_shapeFns = require("./shapeFns-
|
|
3
|
+
const require_topologyQueryFns = require("./topologyQueryFns-Dzxrwn-E.cjs");
|
|
4
|
+
const require_shapeFns = require("./shapeFns-D5WNrq3s.cjs");
|
|
5
5
|
//#region src/topology/meshCache.ts
|
|
6
6
|
/**
|
|
7
7
|
* Build a parameter key for the inner cache map (excludes shape identity).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Z as getKernel, gt as qualityDeflection } from "./shapeTypes-
|
|
1
|
+
import { Z as getKernel, gt as qualityDeflection } from "./shapeTypes-CyTY0prh.js";
|
|
2
2
|
import { A as ok, b as err, r as ioError } from "./errors-DNWJsfVU.js";
|
|
3
|
-
import { d as getSolids, n as getBounds } from "./topologyQueryFns-
|
|
4
|
-
import { O as getFaceOrigins } from "./shapeFns-
|
|
3
|
+
import { d as getSolids, n as getBounds } from "./topologyQueryFns-BomrmBie.js";
|
|
4
|
+
import { O as getFaceOrigins } from "./shapeFns-DZ6poxP7.js";
|
|
5
5
|
//#region src/topology/meshCache.ts
|
|
6
6
|
/**
|
|
7
7
|
* Build a parameter key for the inner cache map (excludes shape identity).
|
|
@@ -1842,13 +1842,90 @@ function deriveCylinder(k, face) {
|
|
|
1842
1842
|
isDirect: (shapeOrientation(k, face) === "reversed" ? -1 : 1) * dotV(n1, subV(p1, origin)) > 0
|
|
1843
1843
|
};
|
|
1844
1844
|
}
|
|
1845
|
-
/**
|
|
1845
|
+
/** Circumcenter of three points (the center of the unique circle through them). */
|
|
1846
|
+
function circumcenter(a, p, q) {
|
|
1847
|
+
const ab = subV(p, a);
|
|
1848
|
+
const ac = subV(q, a);
|
|
1849
|
+
const m = crossV(ab, ac);
|
|
1850
|
+
const mSq = dotV(m, m);
|
|
1851
|
+
if (mSq < 1e-18) return null;
|
|
1852
|
+
const abSq = dotV(ab, ab);
|
|
1853
|
+
const acSq = dotV(ac, ac);
|
|
1854
|
+
const dxm = crossV([
|
|
1855
|
+
abSq * ac[0] - acSq * ab[0],
|
|
1856
|
+
abSq * ac[1] - acSq * ab[1],
|
|
1857
|
+
abSq * ac[2] - acSq * ab[2]
|
|
1858
|
+
], m);
|
|
1859
|
+
const inv = 1 / (2 * mSq);
|
|
1860
|
+
return [
|
|
1861
|
+
a[0] + dxm[0] * inv,
|
|
1862
|
+
a[1] + dxm[1] * inv,
|
|
1863
|
+
a[2] + dxm[2] * inv
|
|
1864
|
+
];
|
|
1865
|
+
}
|
|
1866
|
+
/** Center of the iso-v circle at height v (three u-samples → circumcenter). */
|
|
1867
|
+
function isoCircleCenter(k, face, uMin, uMax, v) {
|
|
1868
|
+
return circumcenter(pointOnSurface(k, face, uMin + .1 * (uMax - uMin), v), pointOnSurface(k, face, uMin + .45 * (uMax - uMin), v), pointOnSurface(k, face, uMin + .8 * (uMax - uMin), v));
|
|
1869
|
+
}
|
|
1870
|
+
/**
|
|
1871
|
+
* Axis of a surface of revolution (cone, torus, general revolution) by sampling.
|
|
1872
|
+
* occt-wasm exposes no analytic accessor for these. Their U parameter is the
|
|
1873
|
+
* angle of revolution, so the iso-v curve at a fixed v is a circle centered on
|
|
1874
|
+
* the axis; two such centers at different heights span the axis.
|
|
1875
|
+
*
|
|
1876
|
+
* Samples three v-levels and uses the farthest-apart pair of centers. Two levels
|
|
1877
|
+
* suffice for a cone or general revolution (v is monotonic along the axis), but
|
|
1878
|
+
* a torus parameterizes v as the tube angle: on a v-symmetric partial torus (a
|
|
1879
|
+
* half-torus, v in [0, pi]) two symmetric samples land at equal heights and
|
|
1880
|
+
* their centers coincide. A third level breaks that symmetry. Avoids the v
|
|
1881
|
+
* extremes so a cone apex (a degenerate zero-radius circle) is not sampled.
|
|
1882
|
+
*/
|
|
1883
|
+
function deriveAxisBySampling(k, face) {
|
|
1884
|
+
const b = uvBounds(k, face);
|
|
1885
|
+
const centers = [
|
|
1886
|
+
.2,
|
|
1887
|
+
.5,
|
|
1888
|
+
.8
|
|
1889
|
+
].map((f) => isoCircleCenter(k, face, b.uMin, b.uMax, b.vMin + f * (b.vMax - b.vMin))).filter((c) => c !== null);
|
|
1890
|
+
if (centers.length < 2) return null;
|
|
1891
|
+
let best = null;
|
|
1892
|
+
let bestLen = 1e-9;
|
|
1893
|
+
for (let i = 0; i < centers.length; i++) for (let j = i + 1; j < centers.length; j++) {
|
|
1894
|
+
const ci = centers[i];
|
|
1895
|
+
const cj = centers[j];
|
|
1896
|
+
if (!ci || !cj) continue;
|
|
1897
|
+
const d = subV(cj, ci);
|
|
1898
|
+
const len = lenV(d);
|
|
1899
|
+
if (len > bestLen) {
|
|
1900
|
+
bestLen = len;
|
|
1901
|
+
best = {
|
|
1902
|
+
origin: ci,
|
|
1903
|
+
direction: [
|
|
1904
|
+
d[0] / len,
|
|
1905
|
+
d[1] / len,
|
|
1906
|
+
d[2] / len
|
|
1907
|
+
]
|
|
1908
|
+
};
|
|
1909
|
+
}
|
|
1910
|
+
}
|
|
1911
|
+
return best;
|
|
1912
|
+
}
|
|
1913
|
+
/**
|
|
1914
|
+
* Axis of symmetry (point on axis + unit direction) for an analytic face that
|
|
1915
|
+
* has one. Cylinders use the exact normal-cross derivation; cones, tori, and
|
|
1916
|
+
* surfaces of revolution fall back to circle-center sampling. Null otherwise.
|
|
1917
|
+
*/
|
|
1846
1918
|
function getSurfaceAxis(k, face) {
|
|
1847
|
-
const
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1919
|
+
const type = surfaceType(k, face);
|
|
1920
|
+
if (type === "cylinder") {
|
|
1921
|
+
const cyl = deriveCylinder(k, face);
|
|
1922
|
+
return cyl ? {
|
|
1923
|
+
origin: cyl.origin,
|
|
1924
|
+
direction: cyl.direction
|
|
1925
|
+
} : null;
|
|
1926
|
+
}
|
|
1927
|
+
if (type === "cone" || type === "torus" || type === "revolution") return deriveAxisBySampling(k, face);
|
|
1928
|
+
return null;
|
|
1852
1929
|
}
|
|
1853
1930
|
/** Cylinder radius + handedness for a cylindrical surface. Null for non-cylinders. */
|
|
1854
1931
|
function getSurfaceCylinderData(k, surface) {
|
|
@@ -1842,13 +1842,90 @@ function deriveCylinder(k, face) {
|
|
|
1842
1842
|
isDirect: (shapeOrientation(k, face) === "reversed" ? -1 : 1) * dotV(n1, subV(p1, origin)) > 0
|
|
1843
1843
|
};
|
|
1844
1844
|
}
|
|
1845
|
-
/**
|
|
1845
|
+
/** Circumcenter of three points (the center of the unique circle through them). */
|
|
1846
|
+
function circumcenter(a, p, q) {
|
|
1847
|
+
const ab = subV(p, a);
|
|
1848
|
+
const ac = subV(q, a);
|
|
1849
|
+
const m = crossV(ab, ac);
|
|
1850
|
+
const mSq = dotV(m, m);
|
|
1851
|
+
if (mSq < 1e-18) return null;
|
|
1852
|
+
const abSq = dotV(ab, ab);
|
|
1853
|
+
const acSq = dotV(ac, ac);
|
|
1854
|
+
const dxm = crossV([
|
|
1855
|
+
abSq * ac[0] - acSq * ab[0],
|
|
1856
|
+
abSq * ac[1] - acSq * ab[1],
|
|
1857
|
+
abSq * ac[2] - acSq * ab[2]
|
|
1858
|
+
], m);
|
|
1859
|
+
const inv = 1 / (2 * mSq);
|
|
1860
|
+
return [
|
|
1861
|
+
a[0] + dxm[0] * inv,
|
|
1862
|
+
a[1] + dxm[1] * inv,
|
|
1863
|
+
a[2] + dxm[2] * inv
|
|
1864
|
+
];
|
|
1865
|
+
}
|
|
1866
|
+
/** Center of the iso-v circle at height v (three u-samples → circumcenter). */
|
|
1867
|
+
function isoCircleCenter(k, face, uMin, uMax, v) {
|
|
1868
|
+
return circumcenter(pointOnSurface(k, face, uMin + .1 * (uMax - uMin), v), pointOnSurface(k, face, uMin + .45 * (uMax - uMin), v), pointOnSurface(k, face, uMin + .8 * (uMax - uMin), v));
|
|
1869
|
+
}
|
|
1870
|
+
/**
|
|
1871
|
+
* Axis of a surface of revolution (cone, torus, general revolution) by sampling.
|
|
1872
|
+
* occt-wasm exposes no analytic accessor for these. Their U parameter is the
|
|
1873
|
+
* angle of revolution, so the iso-v curve at a fixed v is a circle centered on
|
|
1874
|
+
* the axis; two such centers at different heights span the axis.
|
|
1875
|
+
*
|
|
1876
|
+
* Samples three v-levels and uses the farthest-apart pair of centers. Two levels
|
|
1877
|
+
* suffice for a cone or general revolution (v is monotonic along the axis), but
|
|
1878
|
+
* a torus parameterizes v as the tube angle: on a v-symmetric partial torus (a
|
|
1879
|
+
* half-torus, v in [0, pi]) two symmetric samples land at equal heights and
|
|
1880
|
+
* their centers coincide. A third level breaks that symmetry. Avoids the v
|
|
1881
|
+
* extremes so a cone apex (a degenerate zero-radius circle) is not sampled.
|
|
1882
|
+
*/
|
|
1883
|
+
function deriveAxisBySampling(k, face) {
|
|
1884
|
+
const b = uvBounds(k, face);
|
|
1885
|
+
const centers = [
|
|
1886
|
+
.2,
|
|
1887
|
+
.5,
|
|
1888
|
+
.8
|
|
1889
|
+
].map((f) => isoCircleCenter(k, face, b.uMin, b.uMax, b.vMin + f * (b.vMax - b.vMin))).filter((c) => c !== null);
|
|
1890
|
+
if (centers.length < 2) return null;
|
|
1891
|
+
let best = null;
|
|
1892
|
+
let bestLen = 1e-9;
|
|
1893
|
+
for (let i = 0; i < centers.length; i++) for (let j = i + 1; j < centers.length; j++) {
|
|
1894
|
+
const ci = centers[i];
|
|
1895
|
+
const cj = centers[j];
|
|
1896
|
+
if (!ci || !cj) continue;
|
|
1897
|
+
const d = subV(cj, ci);
|
|
1898
|
+
const len = lenV(d);
|
|
1899
|
+
if (len > bestLen) {
|
|
1900
|
+
bestLen = len;
|
|
1901
|
+
best = {
|
|
1902
|
+
origin: ci,
|
|
1903
|
+
direction: [
|
|
1904
|
+
d[0] / len,
|
|
1905
|
+
d[1] / len,
|
|
1906
|
+
d[2] / len
|
|
1907
|
+
]
|
|
1908
|
+
};
|
|
1909
|
+
}
|
|
1910
|
+
}
|
|
1911
|
+
return best;
|
|
1912
|
+
}
|
|
1913
|
+
/**
|
|
1914
|
+
* Axis of symmetry (point on axis + unit direction) for an analytic face that
|
|
1915
|
+
* has one. Cylinders use the exact normal-cross derivation; cones, tori, and
|
|
1916
|
+
* surfaces of revolution fall back to circle-center sampling. Null otherwise.
|
|
1917
|
+
*/
|
|
1846
1918
|
function getSurfaceAxis(k, face) {
|
|
1847
|
-
const
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1919
|
+
const type = surfaceType(k, face);
|
|
1920
|
+
if (type === "cylinder") {
|
|
1921
|
+
const cyl = deriveCylinder(k, face);
|
|
1922
|
+
return cyl ? {
|
|
1923
|
+
origin: cyl.origin,
|
|
1924
|
+
direction: cyl.direction
|
|
1925
|
+
} : null;
|
|
1926
|
+
}
|
|
1927
|
+
if (type === "cone" || type === "torus" || type === "revolution") return deriveAxisBySampling(k, face);
|
|
1928
|
+
return null;
|
|
1852
1929
|
}
|
|
1853
1930
|
/** Cylinder radius + handedness for a cylindrical surface. Null for non-cylinders. */
|
|
1854
1931
|
function getSurfaceCylinderData(k, surface) {
|
package/dist/operations.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_historyFns = require("./historyFns-
|
|
3
|
-
const require_extrudeFns = require("./extrudeFns-
|
|
2
|
+
const require_historyFns = require("./historyFns-4ggYGJB2.cjs");
|
|
3
|
+
const require_extrudeFns = require("./extrudeFns-BJSW3EaV.cjs");
|
|
4
4
|
exports.addChild = require_historyFns.addChild;
|
|
5
5
|
exports.addStep = require_historyFns.addStep;
|
|
6
6
|
exports.circularPattern = require_historyFns.circularPattern;
|
package/dist/operations.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { C as walkAssembly, D as exportAssemblySTEP, E as linearPattern, O as createAssembly, S as updateNode, T as gridPattern, _ as collectShapes, a as findStep, b as findNode, c as registerOperation, d as replayHistory, g as addChild, h as undoLast, l as registerShape, m as stepsFrom, n as createHistory, o as getShape, p as stepCount, r as createRegistry, s as modifyStep, t as addStep, u as replayFrom, v as countNodes, w as circularPattern, x as removeChild, y as createAssemblyNode } from "./historyFns-
|
|
2
|
-
import { c as sweep, i as complexExtrude, l as twistExtrude, s as supportExtrude } from "./extrudeFns-
|
|
1
|
+
import { C as walkAssembly, D as exportAssemblySTEP, E as linearPattern, O as createAssembly, S as updateNode, T as gridPattern, _ as collectShapes, a as findStep, b as findNode, c as registerOperation, d as replayHistory, g as addChild, h as undoLast, l as registerShape, m as stepsFrom, n as createHistory, o as getShape, p as stepCount, r as createRegistry, s as modifyStep, t as addStep, u as replayFrom, v as countNodes, w as circularPattern, x as removeChild, y as createAssemblyNode } from "./historyFns-Ck2tXVAL.js";
|
|
2
|
+
import { c as sweep, i as complexExtrude, l as twistExtrude, s as supportExtrude } from "./extrudeFns-CSWqlW-n.js";
|
|
3
3
|
export { addChild, addStep, circularPattern, collectShapes, complexExtrude, countNodes, createAssembly, createAssemblyNode, createHistory, createRegistry, exportAssemblySTEP, findNode, findStep, getShape as getHistoryShape, gridPattern, linearPattern, modifyStep, registerOperation, registerShape, removeChild, replayFrom, replayHistory, stepCount, stepsFrom, supportExtrude, sweep, twistExtrude, undoLast, updateNode, walkAssembly };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Z as getKernel, _ as isSolid, c as createSolid, h as isShape3D, p as isFace, r as castShapeWithKnownType, t as castShape, x as isClosedWire, y as isWire } from "./shapeTypes-
|
|
1
|
+
import { Z as getKernel, _ as isSolid, c as createSolid, h as isShape3D, p as isFace, r as castShapeWithKnownType, t as castShape, x as isClosedWire, y as isWire } from "./shapeTypes-CyTY0prh.js";
|
|
2
2
|
import { A as ok, T as isOk, b as err, d as validationError, i as kernelError, l as typeCastError, t as BrepErrorCode, v as andThen, w as isErr } from "./errors-DNWJsfVU.js";
|
|
3
|
-
import { c as getFaces, i as getCachedIsValid, l as getOrCreateCache, m as invalidateShapeCache, p as getWires, s as getEdges } from "./topologyQueryFns-
|
|
3
|
+
import { c as getFaces, i as getCachedIsValid, l as getOrCreateCache, m as invalidateShapeCache, p as getWires, s as getEdges } from "./topologyQueryFns-BomrmBie.js";
|
|
4
4
|
import { n as HASH_CODE_MAX, t as DEG2RAD } from "./constants-ITRzCnCp.js";
|
|
5
|
-
import { v as downcast } from "./faceFns-
|
|
6
|
-
import { _ as propagateAllMetadata, g as collectInputFaceHashes, h as translate } from "./shapeFns-
|
|
5
|
+
import { v as downcast } from "./faceFns-BJ2hzXJp.js";
|
|
6
|
+
import { _ as propagateAllMetadata, g as collectInputFaceHashes, h as translate } from "./shapeFns-DZ6poxP7.js";
|
|
7
7
|
import { t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
|
|
8
|
-
import { _ as makeThreePointArc, a as makeNonPlanarFace, c as makeBSplineApproximation, d as makeCircle, f as makeEllipse, g as makeTangentArc, h as makeLine, i as makeNewFaceWithinFace, m as makeHelix, o as makePolygon, p as makeEllipseArc, r as makeFace, s as assembleWire, t as addHolesInFace, u as makeBezierCurve } from "./surfaceBuilders-
|
|
9
|
-
import { a as fuseAll, i as fuse, n as cut, r as cutAll } from "./booleanFns-
|
|
10
|
-
import { a as makeOffset, c as makeTorus, i as makeEllipsoid, l as makeVertex, n as makeCone, o as makeSolid, r as makeCylinder, s as makeSphere, t as makeCompound, u as weldShellsAndFaces } from "./solidBuilders-
|
|
8
|
+
import { _ as makeThreePointArc, a as makeNonPlanarFace, c as makeBSplineApproximation, d as makeCircle, f as makeEllipse, g as makeTangentArc, h as makeLine, i as makeNewFaceWithinFace, m as makeHelix, o as makePolygon, p as makeEllipseArc, r as makeFace, s as assembleWire, t as addHolesInFace, u as makeBezierCurve } from "./surfaceBuilders-Do0rypyD.js";
|
|
9
|
+
import { a as fuseAll, i as fuse, n as cut, r as cutAll } from "./booleanFns-D7Xgt-Og.js";
|
|
10
|
+
import { a as makeOffset, c as makeTorus, i as makeEllipsoid, l as makeVertex, n as makeCone, o as makeSolid, r as makeCylinder, s as makeSphere, t as makeCompound, u as weldShellsAndFaces } from "./solidBuilders-BtEFUFQ9.js";
|
|
11
11
|
//#region src/topology/threeHelpers.ts
|
|
12
12
|
/**
|
|
13
13
|
* Convert a ShapeMesh into BufferGeometry-compatible typed arrays.
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
1
|
+
const require_shapeTypes = require("./shapeTypes-CxSqNvHA.cjs");
|
|
2
2
|
const require_errors = require("./errors-CXJtc4I7.cjs");
|
|
3
|
-
const require_topologyQueryFns = require("./topologyQueryFns-
|
|
3
|
+
const require_topologyQueryFns = require("./topologyQueryFns-Dzxrwn-E.cjs");
|
|
4
4
|
const require_constants = require("./constants-BOVyEYGH.cjs");
|
|
5
|
-
const require_faceFns = require("./faceFns-
|
|
6
|
-
const require_shapeFns = require("./shapeFns-
|
|
5
|
+
const require_faceFns = require("./faceFns-p0lyVuyw.cjs");
|
|
6
|
+
const require_shapeFns = require("./shapeFns-D5WNrq3s.cjs");
|
|
7
7
|
const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
|
|
8
|
-
const require_surfaceBuilders = require("./surfaceBuilders-
|
|
9
|
-
const require_booleanFns = require("./booleanFns-
|
|
10
|
-
const require_solidBuilders = require("./solidBuilders-
|
|
8
|
+
const require_surfaceBuilders = require("./surfaceBuilders-CPHOXRLE.cjs");
|
|
9
|
+
const require_booleanFns = require("./booleanFns-CFa3bgbG.cjs");
|
|
10
|
+
const require_solidBuilders = require("./solidBuilders-diw2zyyN.cjs");
|
|
11
11
|
//#region src/topology/threeHelpers.ts
|
|
12
12
|
/**
|
|
13
13
|
* Convert a ShapeMesh into BufferGeometry-compatible typed arrays.
|
package/dist/projection.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_cameraFns = require("./cameraFns-
|
|
2
|
+
const require_cameraFns = require("./cameraFns-DfSRnD1k.cjs");
|
|
3
3
|
exports.PROJECTION_PLANES = require_cameraFns.PROJECTION_PLANES;
|
|
4
4
|
exports.cameraFromPlane = require_cameraFns.cameraFromPlane;
|
|
5
5
|
exports.cameraLookAt = require_cameraFns.cameraLookAt;
|
package/dist/projection.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as makeProjectedEdges, i as projectEdges, n as cameraLookAt, o as PROJECTION_PLANES, r as createCamera, s as isProjectionPlane, t as cameraFromPlane } from "./cameraFns-
|
|
1
|
+
import { a as makeProjectedEdges, i as projectEdges, n as cameraLookAt, o as PROJECTION_PLANES, r as createCamera, s as isProjectionPlane, t as cameraFromPlane } from "./cameraFns-DCXqzH_m.js";
|
|
2
2
|
export { PROJECTION_PLANES, cameraFromPlane, cameraLookAt, createCamera, isProjectionPlane, makeProjectedEdges, projectEdges };
|
package/dist/query.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_helpers = require("./helpers-
|
|
3
|
-
const require_cornerFinder = require("./cornerFinder-
|
|
2
|
+
const require_helpers = require("./helpers-DTBDjbdR.cjs");
|
|
3
|
+
const require_cornerFinder = require("./cornerFinder-KuLU-4pQ.cjs");
|
|
4
4
|
exports.cornerFinder = require_cornerFinder.cornerFinder;
|
|
5
5
|
exports.edgeFinder = require_helpers.edgeFinder;
|
|
6
6
|
exports.faceFinder = require_helpers.faceFinder;
|
package/dist/query.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-
|
|
2
|
-
import { t as cornerFinder } from "./cornerFinder-
|
|
1
|
+
import { n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-C78MY-s6.js";
|
|
2
|
+
import { t as cornerFinder } from "./cornerFinder-DPkLU1Of.js";
|
|
3
3
|
export { cornerFinder, edgeFinder, faceFinder, getSingleFace };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const require_shapeTypes = require("./shapeTypes-
|
|
1
|
+
const require_shapeTypes = require("./shapeTypes-CxSqNvHA.cjs");
|
|
2
2
|
const require_errors = require("./errors-CXJtc4I7.cjs");
|
|
3
|
-
const require_topologyQueryFns = require("./topologyQueryFns-
|
|
3
|
+
const require_topologyQueryFns = require("./topologyQueryFns-Dzxrwn-E.cjs");
|
|
4
4
|
const require_constants = require("./constants-BOVyEYGH.cjs");
|
|
5
5
|
//#region src/topology/metadata/originTrackingFns.ts
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Z as getKernel, t as castShape } from "./shapeTypes-
|
|
1
|
+
import { Z as getKernel, t as castShape } from "./shapeTypes-CyTY0prh.js";
|
|
2
2
|
import { A as ok, b as err, d as validationError, t as BrepErrorCode } from "./errors-DNWJsfVU.js";
|
|
3
|
-
import { C as kernelCall, c as getFaces, l as getOrCreateCache, r as getCacheEntry, w as kernelCallRaw } from "./topologyQueryFns-
|
|
3
|
+
import { C as kernelCall, c as getFaces, l as getOrCreateCache, r as getCacheEntry, w as kernelCallRaw } from "./topologyQueryFns-BomrmBie.js";
|
|
4
4
|
import { n as HASH_CODE_MAX, t as DEG2RAD } from "./constants-ITRzCnCp.js";
|
|
5
5
|
//#region src/topology/metadata/originTrackingFns.ts
|
|
6
6
|
/**
|
package/dist/shapeRef.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_shapeRefFns = require("./shapeRefFns-
|
|
2
|
+
const require_shapeRefFns = require("./shapeRefFns-BOWP8n4j.cjs");
|
|
3
3
|
exports.assignRoles = require_shapeRefFns.assignRoles;
|
|
4
4
|
exports.captureHint = require_shapeRefFns.captureHint;
|
|
5
5
|
exports.createRef = require_shapeRefFns.createRef;
|
package/dist/shapeRef.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as updateRoles, i as resolveRef, n as captureHint, o as defaultScorer, r as createRef, t as assignRoles } from "./shapeRefFns-
|
|
1
|
+
import { a as updateRoles, i as resolveRef, n as captureHint, o as defaultScorer, r as createRef, t as assignRoles } from "./shapeRefFns-ClsyeZp4.js";
|
|
2
2
|
export { assignRoles, captureHint, createRef, defaultScorer, resolveRef, updateRoles };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
|
|
2
|
-
const require_topologyQueryFns = require("./topologyQueryFns-
|
|
3
|
-
const require_faceFns = require("./faceFns-
|
|
4
|
-
const require_shapeFns = require("./shapeFns-
|
|
5
|
-
const require_measureFns = require("./measureFns-
|
|
2
|
+
const require_topologyQueryFns = require("./topologyQueryFns-Dzxrwn-E.cjs");
|
|
3
|
+
const require_faceFns = require("./faceFns-p0lyVuyw.cjs");
|
|
4
|
+
const require_shapeFns = require("./shapeFns-D5WNrq3s.cjs");
|
|
5
|
+
const require_measureFns = require("./measureFns-DnxobCbD.cjs");
|
|
6
6
|
//#region src/topology/shapeRef/scoring.ts
|
|
7
7
|
/**
|
|
8
8
|
* Default face scorer combining surface type, normal alignment, centroid proximity,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as wasmIndex } from "./vec3-Dpha8d5k.js";
|
|
2
|
-
import { c as getFaces } from "./topologyQueryFns-
|
|
3
|
-
import { i as faceGeomType, l as normalAt, r as faceCenter } from "./faceFns-
|
|
4
|
-
import { n as getHashCode } from "./shapeFns-
|
|
5
|
-
import { n as measureArea } from "./measureFns-
|
|
2
|
+
import { c as getFaces } from "./topologyQueryFns-BomrmBie.js";
|
|
3
|
+
import { i as faceGeomType, l as normalAt, r as faceCenter } from "./faceFns-BJ2hzXJp.js";
|
|
4
|
+
import { n as getHashCode } from "./shapeFns-DZ6poxP7.js";
|
|
5
|
+
import { n as measureArea } from "./measureFns-C8c6xRUE.js";
|
|
6
6
|
//#region src/topology/shapeRef/scoring.ts
|
|
7
7
|
/**
|
|
8
8
|
* Default face scorer combining surface type, normal alignment, centroid proximity,
|