circuit-json-to-gltf 0.0.95 → 0.0.97
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/index.js +306 -234
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -860,13 +860,13 @@ var require_squaredLength = __commonJS({
|
|
|
860
860
|
var require_subtract = __commonJS({
|
|
861
861
|
"node_modules/@jscad/modeling/src/maths/vec3/subtract.js"(exports, module) {
|
|
862
862
|
"use strict";
|
|
863
|
-
var
|
|
863
|
+
var subtract3 = (out, a, b) => {
|
|
864
864
|
out[0] = a[0] - b[0];
|
|
865
865
|
out[1] = a[1] - b[1];
|
|
866
866
|
out[2] = a[2] - b[2];
|
|
867
867
|
return out;
|
|
868
868
|
};
|
|
869
|
-
module.exports =
|
|
869
|
+
module.exports = subtract3;
|
|
870
870
|
}
|
|
871
871
|
});
|
|
872
872
|
|
|
@@ -1407,7 +1407,7 @@ var require_scale2 = __commonJS({
|
|
|
1407
1407
|
var require_subtract2 = __commonJS({
|
|
1408
1408
|
"node_modules/@jscad/modeling/src/maths/mat4/subtract.js"(exports, module) {
|
|
1409
1409
|
"use strict";
|
|
1410
|
-
var
|
|
1410
|
+
var subtract3 = (out, a, b) => {
|
|
1411
1411
|
out[0] = a[0] - b[0];
|
|
1412
1412
|
out[1] = a[1] - b[1];
|
|
1413
1413
|
out[2] = a[2] - b[2];
|
|
@@ -1426,7 +1426,7 @@ var require_subtract2 = __commonJS({
|
|
|
1426
1426
|
out[15] = a[15] - b[15];
|
|
1427
1427
|
return out;
|
|
1428
1428
|
};
|
|
1429
|
-
module.exports =
|
|
1429
|
+
module.exports = subtract3;
|
|
1430
1430
|
}
|
|
1431
1431
|
});
|
|
1432
1432
|
|
|
@@ -1936,12 +1936,12 @@ var require_squaredLength2 = __commonJS({
|
|
|
1936
1936
|
var require_subtract3 = __commonJS({
|
|
1937
1937
|
"node_modules/@jscad/modeling/src/maths/vec2/subtract.js"(exports, module) {
|
|
1938
1938
|
"use strict";
|
|
1939
|
-
var
|
|
1939
|
+
var subtract3 = (out, a, b) => {
|
|
1940
1940
|
out[0] = a[0] - b[0];
|
|
1941
1941
|
out[1] = a[1] - b[1];
|
|
1942
1942
|
return out;
|
|
1943
1943
|
};
|
|
1944
|
-
module.exports =
|
|
1944
|
+
module.exports = subtract3;
|
|
1945
1945
|
}
|
|
1946
1946
|
});
|
|
1947
1947
|
|
|
@@ -2402,14 +2402,14 @@ var require_point_line_distance = __commonJS({
|
|
|
2402
2402
|
"node_modules/@jscad/modeling/src/operations/hulls/quickhull/point-line-distance.js"(exports, module) {
|
|
2403
2403
|
"use strict";
|
|
2404
2404
|
var cross2 = require_cross();
|
|
2405
|
-
var
|
|
2405
|
+
var subtract3 = require_subtract();
|
|
2406
2406
|
var squaredLength = require_squaredLength();
|
|
2407
2407
|
var distanceSquared = (p, a, b) => {
|
|
2408
2408
|
const ab = [];
|
|
2409
2409
|
const ap = [];
|
|
2410
2410
|
const cr = [];
|
|
2411
|
-
|
|
2412
|
-
|
|
2411
|
+
subtract3(ab, b, a);
|
|
2412
|
+
subtract3(ap, p, a);
|
|
2413
2413
|
const area = squaredLength(cross2(cr, ap, ab));
|
|
2414
2414
|
const s = squaredLength(ab);
|
|
2415
2415
|
if (s === 0) {
|
|
@@ -2428,11 +2428,11 @@ var require_get_plane_normal = __commonJS({
|
|
|
2428
2428
|
"use strict";
|
|
2429
2429
|
var cross2 = require_cross();
|
|
2430
2430
|
var normalize = require_normalize();
|
|
2431
|
-
var
|
|
2431
|
+
var subtract3 = require_subtract();
|
|
2432
2432
|
var planeNormal = (out, point1, point2, point3) => {
|
|
2433
2433
|
const tmp = [0, 0, 0];
|
|
2434
|
-
|
|
2435
|
-
|
|
2434
|
+
subtract3(out, point1, point2);
|
|
2435
|
+
subtract3(tmp, point2, point3);
|
|
2436
2436
|
cross2(out, out, tmp);
|
|
2437
2437
|
return normalize(out, out);
|
|
2438
2438
|
};
|
|
@@ -2646,7 +2646,7 @@ var require_Face = __commonJS({
|
|
|
2646
2646
|
var length = require_length();
|
|
2647
2647
|
var normalize = require_normalize();
|
|
2648
2648
|
var scale = require_scale();
|
|
2649
|
-
var
|
|
2649
|
+
var subtract3 = require_subtract();
|
|
2650
2650
|
var HalfEdge = require_HalfEdge();
|
|
2651
2651
|
var VISIBLE = 0;
|
|
2652
2652
|
var NON_CONVEX = 1;
|
|
@@ -2680,14 +2680,14 @@ var require_Face = __commonJS({
|
|
|
2680
2680
|
const e0 = this.edge;
|
|
2681
2681
|
const e1 = e0.next;
|
|
2682
2682
|
let e2 = e1.next;
|
|
2683
|
-
const v2 =
|
|
2683
|
+
const v2 = subtract3([], e1.head().point, e0.head().point);
|
|
2684
2684
|
const t = [];
|
|
2685
2685
|
const v1 = [];
|
|
2686
2686
|
this.nVertices = 2;
|
|
2687
2687
|
this.normal = [0, 0, 0];
|
|
2688
2688
|
while (e2 !== e0) {
|
|
2689
2689
|
copy(v1, v2);
|
|
2690
|
-
|
|
2690
|
+
subtract3(v2, e2.head().point, e0.head().point);
|
|
2691
2691
|
add(this.normal, this.normal, cross2(t, v1, v2));
|
|
2692
2692
|
e2 = e2.next;
|
|
2693
2693
|
this.nVertices += 1;
|
|
@@ -2711,7 +2711,7 @@ var require_Face = __commonJS({
|
|
|
2711
2711
|
} while (edge !== this.edge);
|
|
2712
2712
|
const p1 = maxEdge.tail().point;
|
|
2713
2713
|
const p2 = maxEdge.head().point;
|
|
2714
|
-
const maxVector =
|
|
2714
|
+
const maxVector = subtract3([], p2, p1);
|
|
2715
2715
|
const maxLength = Math.sqrt(maxSquaredLength);
|
|
2716
2716
|
scale(maxVector, maxVector, 1 / maxLength);
|
|
2717
2717
|
const maxProjection = dot2(this.normal, maxVector);
|
|
@@ -3985,7 +3985,7 @@ var require_measureBoundingBox = __commonJS({
|
|
|
3985
3985
|
"node_modules/@jscad/modeling/src/geometries/poly3/measureBoundingBox.js"(exports, module) {
|
|
3986
3986
|
"use strict";
|
|
3987
3987
|
var vec3 = require_vec3();
|
|
3988
|
-
var
|
|
3988
|
+
var measureBoundingBox3 = (polygon3) => {
|
|
3989
3989
|
const vertices = polygon3.vertices;
|
|
3990
3990
|
const numvertices = vertices.length;
|
|
3991
3991
|
const min = numvertices === 0 ? vec3.create() : vec3.clone(vertices[0]);
|
|
@@ -3996,7 +3996,7 @@ var require_measureBoundingBox = __commonJS({
|
|
|
3996
3996
|
}
|
|
3997
3997
|
return [min, max];
|
|
3998
3998
|
};
|
|
3999
|
-
module.exports =
|
|
3999
|
+
module.exports = measureBoundingBox3;
|
|
4000
4000
|
}
|
|
4001
4001
|
});
|
|
4002
4002
|
|
|
@@ -4339,8 +4339,8 @@ var require_toPolygons = __commonJS({
|
|
|
4339
4339
|
"node_modules/@jscad/modeling/src/geometries/geom3/toPolygons.js"(exports, module) {
|
|
4340
4340
|
"use strict";
|
|
4341
4341
|
var applyTransforms = require_applyTransforms2();
|
|
4342
|
-
var
|
|
4343
|
-
module.exports =
|
|
4342
|
+
var toPolygons4 = (geometry) => applyTransforms(geometry).polygons;
|
|
4343
|
+
module.exports = toPolygons4;
|
|
4344
4344
|
}
|
|
4345
4345
|
});
|
|
4346
4346
|
|
|
@@ -4350,9 +4350,9 @@ var require_invert3 = __commonJS({
|
|
|
4350
4350
|
"use strict";
|
|
4351
4351
|
var poly3 = require_poly3();
|
|
4352
4352
|
var create = require_create5();
|
|
4353
|
-
var
|
|
4353
|
+
var toPolygons4 = require_toPolygons();
|
|
4354
4354
|
var invert = (geometry) => {
|
|
4355
|
-
const polygons =
|
|
4355
|
+
const polygons = toPolygons4(geometry);
|
|
4356
4356
|
const newpolygons = polygons.map((polygon3) => poly3.invert(polygon3));
|
|
4357
4357
|
return create(newpolygons);
|
|
4358
4358
|
};
|
|
@@ -4384,14 +4384,14 @@ var require_isConvex2 = __commonJS({
|
|
|
4384
4384
|
"use strict";
|
|
4385
4385
|
var { EPS } = require_constants();
|
|
4386
4386
|
var vec3 = require_vec3();
|
|
4387
|
-
var
|
|
4388
|
-
var
|
|
4387
|
+
var geom34 = require_isA3();
|
|
4388
|
+
var toPolygons4 = require_toPolygons();
|
|
4389
4389
|
var poly3 = require_poly3();
|
|
4390
4390
|
var isConvex = (geometry) => {
|
|
4391
|
-
if (!
|
|
4391
|
+
if (!geom34(geometry)) {
|
|
4392
4392
|
throw new Error("isConvex requires a geom3 geometry");
|
|
4393
4393
|
}
|
|
4394
|
-
const polygons =
|
|
4394
|
+
const polygons = toPolygons4(geometry);
|
|
4395
4395
|
if (polygons.length === 0) {
|
|
4396
4396
|
return true;
|
|
4397
4397
|
}
|
|
@@ -4429,9 +4429,9 @@ var require_toPoints3 = __commonJS({
|
|
|
4429
4429
|
"node_modules/@jscad/modeling/src/geometries/geom3/toPoints.js"(exports, module) {
|
|
4430
4430
|
"use strict";
|
|
4431
4431
|
var poly3 = require_poly3();
|
|
4432
|
-
var
|
|
4432
|
+
var toPolygons4 = require_toPolygons();
|
|
4433
4433
|
var toPoints = (geometry) => {
|
|
4434
|
-
const polygons =
|
|
4434
|
+
const polygons = toPolygons4(geometry);
|
|
4435
4435
|
const listofpoints = polygons.map((polygon3) => poly3.toPoints(polygon3));
|
|
4436
4436
|
return listofpoints;
|
|
4437
4437
|
};
|
|
@@ -4444,9 +4444,9 @@ var require_toString7 = __commonJS({
|
|
|
4444
4444
|
"node_modules/@jscad/modeling/src/geometries/geom3/toString.js"(exports, module) {
|
|
4445
4445
|
"use strict";
|
|
4446
4446
|
var poly3 = require_poly3();
|
|
4447
|
-
var
|
|
4447
|
+
var toPolygons4 = require_toPolygons();
|
|
4448
4448
|
var toString = (geometry) => {
|
|
4449
|
-
const polygons =
|
|
4449
|
+
const polygons = toPolygons4(geometry);
|
|
4450
4450
|
let result = "geom3 (" + polygons.length + " polygons):\n";
|
|
4451
4451
|
polygons.forEach((polygon3) => {
|
|
4452
4452
|
result += " " + poly3.toString(polygon3) + "\n";
|
|
@@ -5181,7 +5181,7 @@ var require_colorize = __commonJS({
|
|
|
5181
5181
|
"use strict";
|
|
5182
5182
|
var flatten = require_flatten();
|
|
5183
5183
|
var geom2 = require_geom2();
|
|
5184
|
-
var
|
|
5184
|
+
var geom34 = require_geom3();
|
|
5185
5185
|
var path2 = require_path2();
|
|
5186
5186
|
var poly3 = require_poly3();
|
|
5187
5187
|
var colorGeom2 = (color, object) => {
|
|
@@ -5190,7 +5190,7 @@ var require_colorize = __commonJS({
|
|
|
5190
5190
|
return newgeom2;
|
|
5191
5191
|
};
|
|
5192
5192
|
var colorGeom3 = (color, object) => {
|
|
5193
|
-
const newgeom3 =
|
|
5193
|
+
const newgeom3 = geom34.clone(object);
|
|
5194
5194
|
newgeom3.color = color;
|
|
5195
5195
|
return newgeom3;
|
|
5196
5196
|
};
|
|
@@ -5212,7 +5212,7 @@ var require_colorize = __commonJS({
|
|
|
5212
5212
|
if (objects.length === 0) throw new Error("wrong number of arguments");
|
|
5213
5213
|
const results = objects.map((object) => {
|
|
5214
5214
|
if (geom2.isA(object)) return colorGeom2(color, object);
|
|
5215
|
-
if (
|
|
5215
|
+
if (geom34.isA(object)) return colorGeom3(color, object);
|
|
5216
5216
|
if (path2.isA(object)) return colorPath2(color, object);
|
|
5217
5217
|
if (poly3.isA(object)) return colorPoly3(color, object);
|
|
5218
5218
|
object.color = color;
|
|
@@ -6657,7 +6657,7 @@ var require_measureArea3 = __commonJS({
|
|
|
6657
6657
|
"use strict";
|
|
6658
6658
|
var flatten = require_flatten();
|
|
6659
6659
|
var geom2 = require_geom2();
|
|
6660
|
-
var
|
|
6660
|
+
var geom34 = require_geom3();
|
|
6661
6661
|
var path2 = require_path2();
|
|
6662
6662
|
var poly3 = require_poly3();
|
|
6663
6663
|
var cache = /* @__PURE__ */ new WeakMap();
|
|
@@ -6674,7 +6674,7 @@ var require_measureArea3 = __commonJS({
|
|
|
6674
6674
|
var measureAreaOfGeom3 = (geometry) => {
|
|
6675
6675
|
let area = cache.get(geometry);
|
|
6676
6676
|
if (area) return area;
|
|
6677
|
-
const polygons =
|
|
6677
|
+
const polygons = geom34.toPolygons(geometry);
|
|
6678
6678
|
area = polygons.reduce((area2, polygon3) => area2 + poly3.measureArea(polygon3), 0);
|
|
6679
6679
|
cache.set(geometry, area);
|
|
6680
6680
|
return area;
|
|
@@ -6685,7 +6685,7 @@ var require_measureArea3 = __commonJS({
|
|
|
6685
6685
|
const results = geometries.map((geometry) => {
|
|
6686
6686
|
if (path2.isA(geometry)) return measureAreaOfPath2(geometry);
|
|
6687
6687
|
if (geom2.isA(geometry)) return measureAreaOfGeom2(geometry);
|
|
6688
|
-
if (
|
|
6688
|
+
if (geom34.isA(geometry)) return measureAreaOfGeom3(geometry);
|
|
6689
6689
|
return 0;
|
|
6690
6690
|
});
|
|
6691
6691
|
return results.length === 1 ? results[0] : results;
|
|
@@ -6722,7 +6722,7 @@ var require_measureBoundingBox2 = __commonJS({
|
|
|
6722
6722
|
var vec2 = require_vec2();
|
|
6723
6723
|
var vec3 = require_vec3();
|
|
6724
6724
|
var geom2 = require_geom2();
|
|
6725
|
-
var
|
|
6725
|
+
var geom34 = require_geom3();
|
|
6726
6726
|
var path2 = require_path2();
|
|
6727
6727
|
var poly3 = require_poly3();
|
|
6728
6728
|
var cache = /* @__PURE__ */ new WeakMap();
|
|
@@ -6771,7 +6771,7 @@ var require_measureBoundingBox2 = __commonJS({
|
|
|
6771
6771
|
var measureBoundingBoxOfGeom3 = (geometry) => {
|
|
6772
6772
|
let boundingBox = cache.get(geometry);
|
|
6773
6773
|
if (boundingBox) return boundingBox;
|
|
6774
|
-
const polygons =
|
|
6774
|
+
const polygons = geom34.toPolygons(geometry);
|
|
6775
6775
|
let minpoint = vec3.create();
|
|
6776
6776
|
if (polygons.length > 0) {
|
|
6777
6777
|
const points = poly3.toPoints(polygons[0]);
|
|
@@ -6790,18 +6790,18 @@ var require_measureBoundingBox2 = __commonJS({
|
|
|
6790
6790
|
cache.set(geometry, boundingBox);
|
|
6791
6791
|
return boundingBox;
|
|
6792
6792
|
};
|
|
6793
|
-
var
|
|
6793
|
+
var measureBoundingBox3 = (...geometries) => {
|
|
6794
6794
|
geometries = flatten(geometries);
|
|
6795
6795
|
if (geometries.length === 0) throw new Error("wrong number of arguments");
|
|
6796
6796
|
const results = geometries.map((geometry) => {
|
|
6797
6797
|
if (path2.isA(geometry)) return measureBoundingBoxOfPath2(geometry);
|
|
6798
6798
|
if (geom2.isA(geometry)) return measureBoundingBoxOfGeom2(geometry);
|
|
6799
|
-
if (
|
|
6799
|
+
if (geom34.isA(geometry)) return measureBoundingBoxOfGeom3(geometry);
|
|
6800
6800
|
return [[0, 0, 0], [0, 0, 0]];
|
|
6801
6801
|
});
|
|
6802
6802
|
return results.length === 1 ? results[0] : results;
|
|
6803
6803
|
};
|
|
6804
|
-
module.exports =
|
|
6804
|
+
module.exports = measureBoundingBox3;
|
|
6805
6805
|
}
|
|
6806
6806
|
});
|
|
6807
6807
|
|
|
@@ -6812,11 +6812,11 @@ var require_measureAggregateBoundingBox = __commonJS({
|
|
|
6812
6812
|
var flatten = require_flatten();
|
|
6813
6813
|
var vec3min = require_min();
|
|
6814
6814
|
var vec3max = require_max();
|
|
6815
|
-
var
|
|
6815
|
+
var measureBoundingBox3 = require_measureBoundingBox2();
|
|
6816
6816
|
var measureAggregateBoundingBox = (...geometries) => {
|
|
6817
6817
|
geometries = flatten(geometries);
|
|
6818
6818
|
if (geometries.length === 0) throw new Error("measureAggregateBoundingBox: no geometries supplied");
|
|
6819
|
-
const bounds =
|
|
6819
|
+
const bounds = measureBoundingBox3(geometries);
|
|
6820
6820
|
if (geometries.length === 1) {
|
|
6821
6821
|
return bounds;
|
|
6822
6822
|
}
|
|
@@ -6853,7 +6853,7 @@ var require_measureAggregateEpsilon = __commonJS({
|
|
|
6853
6853
|
var flatten = require_flatten();
|
|
6854
6854
|
var measureAggregateBoundingBox = require_measureAggregateBoundingBox();
|
|
6855
6855
|
var calculateEpsilonFromBounds = require_calculateEpsilonFromBounds();
|
|
6856
|
-
var { geom2, geom3:
|
|
6856
|
+
var { geom2, geom3: geom34, path2 } = require_geometries();
|
|
6857
6857
|
var measureAggregateEpsilon = (...geometries) => {
|
|
6858
6858
|
geometries = flatten(geometries);
|
|
6859
6859
|
if (geometries.length === 0) throw new Error("measureAggregateEpsilon: no geometries supplied");
|
|
@@ -6861,7 +6861,7 @@ var require_measureAggregateEpsilon = __commonJS({
|
|
|
6861
6861
|
let dimensions = 0;
|
|
6862
6862
|
dimensions = geometries.reduce((dimensions2, geometry) => {
|
|
6863
6863
|
if (path2.isA(geometry) || geom2.isA(geometry)) return Math.max(dimensions2, 2);
|
|
6864
|
-
if (
|
|
6864
|
+
if (geom34.isA(geometry)) return Math.max(dimensions2, 3);
|
|
6865
6865
|
return 0;
|
|
6866
6866
|
}, dimensions);
|
|
6867
6867
|
return calculateEpsilonFromBounds(bounds, dimensions);
|
|
@@ -6876,7 +6876,7 @@ var require_measureVolume = __commonJS({
|
|
|
6876
6876
|
"use strict";
|
|
6877
6877
|
var flatten = require_flatten();
|
|
6878
6878
|
var geom2 = require_geom2();
|
|
6879
|
-
var
|
|
6879
|
+
var geom34 = require_geom3();
|
|
6880
6880
|
var path2 = require_path2();
|
|
6881
6881
|
var poly3 = require_poly3();
|
|
6882
6882
|
var cache = /* @__PURE__ */ new WeakMap();
|
|
@@ -6885,7 +6885,7 @@ var require_measureVolume = __commonJS({
|
|
|
6885
6885
|
var measureVolumeOfGeom3 = (geometry) => {
|
|
6886
6886
|
let volume = cache.get(geometry);
|
|
6887
6887
|
if (volume) return volume;
|
|
6888
|
-
const polygons =
|
|
6888
|
+
const polygons = geom34.toPolygons(geometry);
|
|
6889
6889
|
volume = polygons.reduce((volume2, polygon3) => volume2 + poly3.measureSignedVolume(polygon3), 0);
|
|
6890
6890
|
cache.set(geometry, volume);
|
|
6891
6891
|
return volume;
|
|
@@ -6896,7 +6896,7 @@ var require_measureVolume = __commonJS({
|
|
|
6896
6896
|
const results = geometries.map((geometry) => {
|
|
6897
6897
|
if (path2.isA(geometry)) return measureVolumeOfPath2(geometry);
|
|
6898
6898
|
if (geom2.isA(geometry)) return measureVolumeOfGeom2(geometry);
|
|
6899
|
-
if (
|
|
6899
|
+
if (geom34.isA(geometry)) return measureVolumeOfGeom3(geometry);
|
|
6900
6900
|
return 0;
|
|
6901
6901
|
});
|
|
6902
6902
|
return results.length === 1 ? results[0] : results;
|
|
@@ -6933,7 +6933,7 @@ var require_measureBoundingSphere2 = __commonJS({
|
|
|
6933
6933
|
var vec2 = require_vec2();
|
|
6934
6934
|
var vec3 = require_vec3();
|
|
6935
6935
|
var geom2 = require_geom2();
|
|
6936
|
-
var
|
|
6936
|
+
var geom34 = require_geom3();
|
|
6937
6937
|
var path2 = require_path2();
|
|
6938
6938
|
var poly3 = require_poly3();
|
|
6939
6939
|
var cacheOfBoundingSpheres = /* @__PURE__ */ new WeakMap();
|
|
@@ -6988,7 +6988,7 @@ var require_measureBoundingSphere2 = __commonJS({
|
|
|
6988
6988
|
if (boundingSphere !== void 0) return boundingSphere;
|
|
6989
6989
|
const centroid = vec3.create();
|
|
6990
6990
|
let radius = 0;
|
|
6991
|
-
const polygons =
|
|
6991
|
+
const polygons = geom34.toPolygons(geometry);
|
|
6992
6992
|
if (polygons.length > 0) {
|
|
6993
6993
|
let numPoints = 0;
|
|
6994
6994
|
polygons.forEach((polygon3) => {
|
|
@@ -7014,7 +7014,7 @@ var require_measureBoundingSphere2 = __commonJS({
|
|
|
7014
7014
|
const results = geometries.map((geometry) => {
|
|
7015
7015
|
if (path2.isA(geometry)) return measureBoundingSphereOfPath2(geometry);
|
|
7016
7016
|
if (geom2.isA(geometry)) return measureBoundingSphereOfGeom2(geometry);
|
|
7017
|
-
if (
|
|
7017
|
+
if (geom34.isA(geometry)) return measureBoundingSphereOfGeom3(geometry);
|
|
7018
7018
|
return [[0, 0, 0], 0];
|
|
7019
7019
|
});
|
|
7020
7020
|
return results.length === 1 ? results[0] : results;
|
|
@@ -7028,11 +7028,11 @@ var require_measureCenter = __commonJS({
|
|
|
7028
7028
|
"node_modules/@jscad/modeling/src/measurements/measureCenter.js"(exports, module) {
|
|
7029
7029
|
"use strict";
|
|
7030
7030
|
var flatten = require_flatten();
|
|
7031
|
-
var
|
|
7031
|
+
var measureBoundingBox3 = require_measureBoundingBox2();
|
|
7032
7032
|
var measureCenter = (...geometries) => {
|
|
7033
7033
|
geometries = flatten(geometries);
|
|
7034
7034
|
const results = geometries.map((geometry) => {
|
|
7035
|
-
const bounds =
|
|
7035
|
+
const bounds = measureBoundingBox3(geometry);
|
|
7036
7036
|
return [
|
|
7037
7037
|
bounds[0][0] + (bounds[1][0] - bounds[0][0]) / 2,
|
|
7038
7038
|
bounds[0][1] + (bounds[1][1] - bounds[0][1]) / 2,
|
|
@@ -7052,7 +7052,7 @@ var require_measureCenterOfMass = __commonJS({
|
|
|
7052
7052
|
var flatten = require_flatten();
|
|
7053
7053
|
var vec3 = require_vec3();
|
|
7054
7054
|
var geom2 = require_geom2();
|
|
7055
|
-
var
|
|
7055
|
+
var geom34 = require_geom3();
|
|
7056
7056
|
var cacheOfCenterOfMass = /* @__PURE__ */ new WeakMap();
|
|
7057
7057
|
var measureCenterOfMassGeom2 = (geometry) => {
|
|
7058
7058
|
let centerOfMass = cacheOfCenterOfMass.get(geometry);
|
|
@@ -7083,7 +7083,7 @@ var require_measureCenterOfMass = __commonJS({
|
|
|
7083
7083
|
let centerOfMass = cacheOfCenterOfMass.get(geometry);
|
|
7084
7084
|
if (centerOfMass !== void 0) return centerOfMass;
|
|
7085
7085
|
centerOfMass = vec3.create();
|
|
7086
|
-
const polygons =
|
|
7086
|
+
const polygons = geom34.toPolygons(geometry);
|
|
7087
7087
|
if (polygons.length === 0) return centerOfMass;
|
|
7088
7088
|
let totalVolume = 0;
|
|
7089
7089
|
const vector = vec3.create();
|
|
@@ -7107,7 +7107,7 @@ var require_measureCenterOfMass = __commonJS({
|
|
|
7107
7107
|
geometries = flatten(geometries);
|
|
7108
7108
|
const results = geometries.map((geometry) => {
|
|
7109
7109
|
if (geom2.isA(geometry)) return measureCenterOfMassGeom2(geometry);
|
|
7110
|
-
if (
|
|
7110
|
+
if (geom34.isA(geometry)) return measureCenterOfMassGeom3(geometry);
|
|
7111
7111
|
return [0, 0, 0];
|
|
7112
7112
|
});
|
|
7113
7113
|
return results.length === 1 ? results[0] : results;
|
|
@@ -7121,11 +7121,11 @@ var require_measureDimensions = __commonJS({
|
|
|
7121
7121
|
"node_modules/@jscad/modeling/src/measurements/measureDimensions.js"(exports, module) {
|
|
7122
7122
|
"use strict";
|
|
7123
7123
|
var flatten = require_flatten();
|
|
7124
|
-
var
|
|
7124
|
+
var measureBoundingBox3 = require_measureBoundingBox2();
|
|
7125
7125
|
var measureDimensions = (...geometries) => {
|
|
7126
7126
|
geometries = flatten(geometries);
|
|
7127
7127
|
const results = geometries.map((geometry) => {
|
|
7128
|
-
const boundingBox =
|
|
7128
|
+
const boundingBox = measureBoundingBox3(geometry);
|
|
7129
7129
|
return [
|
|
7130
7130
|
boundingBox[1][0] - boundingBox[0][0],
|
|
7131
7131
|
boundingBox[1][1] - boundingBox[0][1],
|
|
@@ -7143,19 +7143,19 @@ var require_measureEpsilon = __commonJS({
|
|
|
7143
7143
|
"node_modules/@jscad/modeling/src/measurements/measureEpsilon.js"(exports, module) {
|
|
7144
7144
|
"use strict";
|
|
7145
7145
|
var flatten = require_flatten();
|
|
7146
|
-
var { geom2, geom3:
|
|
7146
|
+
var { geom2, geom3: geom34, path2 } = require_geometries();
|
|
7147
7147
|
var calculateEpsilonFromBounds = require_calculateEpsilonFromBounds();
|
|
7148
|
-
var
|
|
7149
|
-
var measureEpsilonOfPath2 = (geometry) => calculateEpsilonFromBounds(
|
|
7150
|
-
var measureEpsilonOfGeom2 = (geometry) => calculateEpsilonFromBounds(
|
|
7151
|
-
var measureEpsilonOfGeom3 = (geometry) => calculateEpsilonFromBounds(
|
|
7148
|
+
var measureBoundingBox3 = require_measureBoundingBox2();
|
|
7149
|
+
var measureEpsilonOfPath2 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox3(geometry), 2);
|
|
7150
|
+
var measureEpsilonOfGeom2 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox3(geometry), 2);
|
|
7151
|
+
var measureEpsilonOfGeom3 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox3(geometry), 3);
|
|
7152
7152
|
var measureEpsilon = (...geometries) => {
|
|
7153
7153
|
geometries = flatten(geometries);
|
|
7154
7154
|
if (geometries.length === 0) throw new Error("wrong number of arguments");
|
|
7155
7155
|
const results = geometries.map((geometry) => {
|
|
7156
7156
|
if (path2.isA(geometry)) return measureEpsilonOfPath2(geometry);
|
|
7157
7157
|
if (geom2.isA(geometry)) return measureEpsilonOfGeom2(geometry);
|
|
7158
|
-
if (
|
|
7158
|
+
if (geom34.isA(geometry)) return measureEpsilonOfGeom3(geometry);
|
|
7159
7159
|
return 0;
|
|
7160
7160
|
});
|
|
7161
7161
|
return results.length === 1 ? results[0] : results;
|
|
@@ -7354,7 +7354,7 @@ var require_circle = __commonJS({
|
|
|
7354
7354
|
var require_cuboid = __commonJS({
|
|
7355
7355
|
"node_modules/@jscad/modeling/src/primitives/cuboid.js"(exports, module) {
|
|
7356
7356
|
"use strict";
|
|
7357
|
-
var
|
|
7357
|
+
var geom34 = require_geom3();
|
|
7358
7358
|
var poly3 = require_poly3();
|
|
7359
7359
|
var { isNumberArray } = require_commonChecks();
|
|
7360
7360
|
var cuboid = (options) => {
|
|
@@ -7366,8 +7366,8 @@ var require_cuboid = __commonJS({
|
|
|
7366
7366
|
if (!isNumberArray(center, 3)) throw new Error("center must be an array of X, Y and Z values");
|
|
7367
7367
|
if (!isNumberArray(size, 3)) throw new Error("size must be an array of width, depth and height values");
|
|
7368
7368
|
if (!size.every((n) => n >= 0)) throw new Error("size values must be positive");
|
|
7369
|
-
if (size[0] === 0 || size[1] === 0 || size[2] === 0) return
|
|
7370
|
-
const result =
|
|
7369
|
+
if (size[0] === 0 || size[1] === 0 || size[2] === 0) return geom34.create();
|
|
7370
|
+
const result = geom34.create(
|
|
7371
7371
|
// adjust a basic shape to size
|
|
7372
7372
|
[
|
|
7373
7373
|
[[0, 4, 6, 2], [-1, 0, 0]],
|
|
@@ -7420,7 +7420,7 @@ var require_cylinderElliptic = __commonJS({
|
|
|
7420
7420
|
"use strict";
|
|
7421
7421
|
var { EPS, TAU } = require_constants();
|
|
7422
7422
|
var vec3 = require_vec3();
|
|
7423
|
-
var
|
|
7423
|
+
var geom34 = require_geom3();
|
|
7424
7424
|
var poly3 = require_poly3();
|
|
7425
7425
|
var { sin, cos } = require_trigonometry();
|
|
7426
7426
|
var { isGT, isGTE, isNumberArray } = require_commonChecks();
|
|
@@ -7509,7 +7509,7 @@ var require_cylinderElliptic = __commonJS({
|
|
|
7509
7509
|
polygons.push(fromPoints(start, end, point(0, 1, startRadius)));
|
|
7510
7510
|
polygons.push(fromPoints(point(0, 1, startRadius), end, point(1, 1, endRadius)));
|
|
7511
7511
|
}
|
|
7512
|
-
const result =
|
|
7512
|
+
const result = geom34.create(polygons);
|
|
7513
7513
|
return result;
|
|
7514
7514
|
};
|
|
7515
7515
|
module.exports = cylinderElliptic;
|
|
@@ -7520,7 +7520,7 @@ var require_cylinderElliptic = __commonJS({
|
|
|
7520
7520
|
var require_cylinder = __commonJS({
|
|
7521
7521
|
"node_modules/@jscad/modeling/src/primitives/cylinder.js"(exports, module) {
|
|
7522
7522
|
"use strict";
|
|
7523
|
-
var
|
|
7523
|
+
var geom34 = require_geom3();
|
|
7524
7524
|
var cylinderElliptic = require_cylinderElliptic();
|
|
7525
7525
|
var { isGTE } = require_commonChecks();
|
|
7526
7526
|
var cylinder2 = (options) => {
|
|
@@ -7532,7 +7532,7 @@ var require_cylinder = __commonJS({
|
|
|
7532
7532
|
};
|
|
7533
7533
|
const { center, height, radius, segments } = Object.assign({}, defaults, options);
|
|
7534
7534
|
if (!isGTE(radius, 0)) throw new Error("radius must be positive");
|
|
7535
|
-
if (height === 0 || radius === 0) return
|
|
7535
|
+
if (height === 0 || radius === 0) return geom34.create();
|
|
7536
7536
|
const newoptions = {
|
|
7537
7537
|
center,
|
|
7538
7538
|
height,
|
|
@@ -7552,7 +7552,7 @@ var require_ellipsoid = __commonJS({
|
|
|
7552
7552
|
"use strict";
|
|
7553
7553
|
var { TAU } = require_constants();
|
|
7554
7554
|
var vec3 = require_vec3();
|
|
7555
|
-
var
|
|
7555
|
+
var geom34 = require_geom3();
|
|
7556
7556
|
var poly3 = require_poly3();
|
|
7557
7557
|
var { sin, cos } = require_trigonometry();
|
|
7558
7558
|
var { isGTE, isNumberArray } = require_commonChecks();
|
|
@@ -7568,7 +7568,7 @@ var require_ellipsoid = __commonJS({
|
|
|
7568
7568
|
if (!isNumberArray(radius, 3)) throw new Error("radius must be an array of X, Y and Z values");
|
|
7569
7569
|
if (!radius.every((n) => n >= 0)) throw new Error("radius values must be positive");
|
|
7570
7570
|
if (!isGTE(segments, 4)) throw new Error("segments must be four or more");
|
|
7571
|
-
if (radius[0] === 0 || radius[1] === 0 || radius[2] === 0) return
|
|
7571
|
+
if (radius[0] === 0 || radius[1] === 0 || radius[2] === 0) return geom34.create();
|
|
7572
7572
|
const xvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), axes[0]), radius[0]);
|
|
7573
7573
|
const yvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), axes[1]), radius[1]);
|
|
7574
7574
|
const zvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), axes[2]), radius[2]);
|
|
@@ -7620,7 +7620,7 @@ var require_ellipsoid = __commonJS({
|
|
|
7620
7620
|
}
|
|
7621
7621
|
prevcylinderpoint = cylinderpoint;
|
|
7622
7622
|
}
|
|
7623
|
-
return
|
|
7623
|
+
return geom34.create(polygons);
|
|
7624
7624
|
};
|
|
7625
7625
|
module.exports = ellipsoid;
|
|
7626
7626
|
}
|
|
@@ -7630,7 +7630,7 @@ var require_ellipsoid = __commonJS({
|
|
|
7630
7630
|
var require_polyhedron = __commonJS({
|
|
7631
7631
|
"node_modules/@jscad/modeling/src/primitives/polyhedron.js"(exports, module) {
|
|
7632
7632
|
"use strict";
|
|
7633
|
-
var
|
|
7633
|
+
var geom34 = require_geom3();
|
|
7634
7634
|
var poly3 = require_poly3();
|
|
7635
7635
|
var { isNumberArray } = require_commonChecks();
|
|
7636
7636
|
var polyhedron = (options) => {
|
|
@@ -7673,7 +7673,7 @@ var require_polyhedron = __commonJS({
|
|
|
7673
7673
|
if (colors && colors[findex]) polygon3.color = colors[findex];
|
|
7674
7674
|
return polygon3;
|
|
7675
7675
|
});
|
|
7676
|
-
return
|
|
7676
|
+
return geom34.create(polygons);
|
|
7677
7677
|
};
|
|
7678
7678
|
module.exports = polyhedron;
|
|
7679
7679
|
}
|
|
@@ -7685,7 +7685,7 @@ var require_geodesicSphere = __commonJS({
|
|
|
7685
7685
|
"use strict";
|
|
7686
7686
|
var mat4 = require_mat4();
|
|
7687
7687
|
var vec3 = require_vec3();
|
|
7688
|
-
var
|
|
7688
|
+
var geom34 = require_geom3();
|
|
7689
7689
|
var polyhedron = require_polyhedron();
|
|
7690
7690
|
var { isGTE } = require_commonChecks();
|
|
7691
7691
|
var geodesicSphere = (options) => {
|
|
@@ -7696,7 +7696,7 @@ var require_geodesicSphere = __commonJS({
|
|
|
7696
7696
|
let { radius, frequency } = Object.assign({}, defaults, options);
|
|
7697
7697
|
if (!isGTE(radius, 0)) throw new Error("radius must be positive");
|
|
7698
7698
|
if (!isGTE(frequency, 6)) throw new Error("frequency must be six or more");
|
|
7699
|
-
if (radius === 0) return
|
|
7699
|
+
if (radius === 0) return geom34.create();
|
|
7700
7700
|
frequency = Math.floor(frequency / 6);
|
|
7701
7701
|
const ci = [
|
|
7702
7702
|
// hard-coded data of icosahedron (20 faces, all triangles)
|
|
@@ -7799,7 +7799,7 @@ var require_geodesicSphere = __commonJS({
|
|
|
7799
7799
|
offset = g.offset;
|
|
7800
7800
|
}
|
|
7801
7801
|
let geometry = polyhedron({ points, faces, orientation: "inward" });
|
|
7802
|
-
if (radius !== 1) geometry =
|
|
7802
|
+
if (radius !== 1) geometry = geom34.transform(mat4.fromScaling(mat4.create(), [radius, radius, radius]), geometry);
|
|
7803
7803
|
return geometry;
|
|
7804
7804
|
};
|
|
7805
7805
|
module.exports = geodesicSphere;
|
|
@@ -7907,7 +7907,7 @@ var require_roundedCuboid = __commonJS({
|
|
|
7907
7907
|
var { EPS, TAU } = require_constants();
|
|
7908
7908
|
var vec2 = require_vec2();
|
|
7909
7909
|
var vec3 = require_vec3();
|
|
7910
|
-
var
|
|
7910
|
+
var geom34 = require_geom3();
|
|
7911
7911
|
var poly3 = require_poly3();
|
|
7912
7912
|
var { sin, cos } = require_trigonometry();
|
|
7913
7913
|
var { isGTE, isNumberArray } = require_commonChecks();
|
|
@@ -8012,7 +8012,7 @@ var require_roundedCuboid = __commonJS({
|
|
|
8012
8012
|
if (!size.every((n) => n >= 0)) throw new Error("size values must be positive");
|
|
8013
8013
|
if (!isGTE(roundRadius, 0)) throw new Error("roundRadius must be positive");
|
|
8014
8014
|
if (!isGTE(segments, 4)) throw new Error("segments must be four or more");
|
|
8015
|
-
if (size[0] === 0 || size[1] === 0 || size[2] === 0) return
|
|
8015
|
+
if (size[0] === 0 || size[1] === 0 || size[2] === 0) return geom34.create();
|
|
8016
8016
|
if (roundRadius === 0) return cuboid({ center, size });
|
|
8017
8017
|
size = size.map((v) => v / 2);
|
|
8018
8018
|
if (roundRadius > size[0] - EPS || roundRadius > size[1] - EPS || roundRadius > size[2] - EPS) throw new Error("roundRadius must be smaller than the radius of all dimensions");
|
|
@@ -8047,7 +8047,7 @@ var require_roundedCuboid = __commonJS({
|
|
|
8047
8047
|
prevCornersPos = cornersPos;
|
|
8048
8048
|
prevCornersNeg = cornersNeg;
|
|
8049
8049
|
}
|
|
8050
|
-
return
|
|
8050
|
+
return geom34.create(polygons);
|
|
8051
8051
|
};
|
|
8052
8052
|
module.exports = roundedCuboid;
|
|
8053
8053
|
}
|
|
@@ -8059,7 +8059,7 @@ var require_roundedCylinder = __commonJS({
|
|
|
8059
8059
|
"use strict";
|
|
8060
8060
|
var { EPS, TAU } = require_constants();
|
|
8061
8061
|
var vec3 = require_vec3();
|
|
8062
|
-
var
|
|
8062
|
+
var geom34 = require_geom3();
|
|
8063
8063
|
var poly3 = require_poly3();
|
|
8064
8064
|
var { sin, cos } = require_trigonometry();
|
|
8065
8065
|
var { isGTE, isNumberArray } = require_commonChecks();
|
|
@@ -8079,7 +8079,7 @@ var require_roundedCylinder = __commonJS({
|
|
|
8079
8079
|
if (!isGTE(roundRadius, 0)) throw new Error("roundRadius must be positive");
|
|
8080
8080
|
if (roundRadius > radius) throw new Error("roundRadius must be smaller than the radius");
|
|
8081
8081
|
if (!isGTE(segments, 4)) throw new Error("segments must be four or more");
|
|
8082
|
-
if (height === 0 || radius === 0) return
|
|
8082
|
+
if (height === 0 || radius === 0) return geom34.create();
|
|
8083
8083
|
if (roundRadius === 0) return cylinder2({ center, height, radius });
|
|
8084
8084
|
const start = [0, 0, -(height / 2)];
|
|
8085
8085
|
const end = [0, 0, height / 2];
|
|
@@ -8159,7 +8159,7 @@ var require_roundedCylinder = __commonJS({
|
|
|
8159
8159
|
}
|
|
8160
8160
|
prevcylinderpoint = cylinderpoint;
|
|
8161
8161
|
}
|
|
8162
|
-
const result =
|
|
8162
|
+
const result = geom34.create(polygons);
|
|
8163
8163
|
return result;
|
|
8164
8164
|
};
|
|
8165
8165
|
module.exports = roundedCylinder;
|
|
@@ -8330,7 +8330,7 @@ var require_mirror = __commonJS({
|
|
|
8330
8330
|
var mat4 = require_mat4();
|
|
8331
8331
|
var plane = require_plane();
|
|
8332
8332
|
var geom2 = require_geom2();
|
|
8333
|
-
var
|
|
8333
|
+
var geom34 = require_geom3();
|
|
8334
8334
|
var path2 = require_path2();
|
|
8335
8335
|
var mirror = (options, ...objects) => {
|
|
8336
8336
|
const defaults = {
|
|
@@ -8349,7 +8349,7 @@ var require_mirror = __commonJS({
|
|
|
8349
8349
|
const results = objects.map((object) => {
|
|
8350
8350
|
if (path2.isA(object)) return path2.transform(matrix, object);
|
|
8351
8351
|
if (geom2.isA(object)) return geom2.transform(matrix, object);
|
|
8352
|
-
if (
|
|
8352
|
+
if (geom34.isA(object)) return geom34.transform(matrix, object);
|
|
8353
8353
|
return object;
|
|
8354
8354
|
});
|
|
8355
8355
|
return results.length === 1 ? results[0] : results;
|
|
@@ -9129,7 +9129,7 @@ var require_toPolygons2 = __commonJS({
|
|
|
9129
9129
|
var poly3 = require_poly3();
|
|
9130
9130
|
var earcut2 = require_earcut();
|
|
9131
9131
|
var PolygonHierarchy = require_polygonHierarchy();
|
|
9132
|
-
var
|
|
9132
|
+
var toPolygons4 = (slice) => {
|
|
9133
9133
|
const hierarchy = new PolygonHierarchy(slice);
|
|
9134
9134
|
const polygons = [];
|
|
9135
9135
|
hierarchy.roots.forEach(({ solid, holes }) => {
|
|
@@ -9150,7 +9150,7 @@ var require_toPolygons2 = __commonJS({
|
|
|
9150
9150
|
});
|
|
9151
9151
|
return polygons;
|
|
9152
9152
|
};
|
|
9153
|
-
module.exports =
|
|
9153
|
+
module.exports = toPolygons4;
|
|
9154
9154
|
}
|
|
9155
9155
|
});
|
|
9156
9156
|
|
|
@@ -9326,7 +9326,7 @@ var require_extrudeFromSlices = __commonJS({
|
|
|
9326
9326
|
"use strict";
|
|
9327
9327
|
var mat4 = require_mat4();
|
|
9328
9328
|
var geom2 = require_geom2();
|
|
9329
|
-
var
|
|
9329
|
+
var geom34 = require_geom3();
|
|
9330
9330
|
var poly3 = require_poly3();
|
|
9331
9331
|
var slice = require_slice();
|
|
9332
9332
|
var repairSlice = require_repair();
|
|
@@ -9393,7 +9393,7 @@ var require_extrudeFromSlices = __commonJS({
|
|
|
9393
9393
|
}
|
|
9394
9394
|
}
|
|
9395
9395
|
}
|
|
9396
|
-
return
|
|
9396
|
+
return geom34.create(polygons);
|
|
9397
9397
|
};
|
|
9398
9398
|
module.exports = extrudeFromSlices;
|
|
9399
9399
|
}
|
|
@@ -9497,7 +9497,7 @@ var require_rotate3 = __commonJS({
|
|
|
9497
9497
|
var flatten = require_flatten();
|
|
9498
9498
|
var mat4 = require_mat4();
|
|
9499
9499
|
var geom2 = require_geom2();
|
|
9500
|
-
var
|
|
9500
|
+
var geom34 = require_geom3();
|
|
9501
9501
|
var path2 = require_path2();
|
|
9502
9502
|
var rotate = (angles, ...objects) => {
|
|
9503
9503
|
if (!Array.isArray(angles)) throw new Error("angles must be an array");
|
|
@@ -9512,7 +9512,7 @@ var require_rotate3 = __commonJS({
|
|
|
9512
9512
|
const results = objects.map((object) => {
|
|
9513
9513
|
if (path2.isA(object)) return path2.transform(matrix, object);
|
|
9514
9514
|
if (geom2.isA(object)) return geom2.transform(matrix, object);
|
|
9515
|
-
if (
|
|
9515
|
+
if (geom34.isA(object)) return geom34.transform(matrix, object);
|
|
9516
9516
|
return object;
|
|
9517
9517
|
});
|
|
9518
9518
|
return results.length === 1 ? results[0] : results;
|
|
@@ -9536,7 +9536,7 @@ var require_translate2 = __commonJS({
|
|
|
9536
9536
|
var flatten = require_flatten();
|
|
9537
9537
|
var mat4 = require_mat4();
|
|
9538
9538
|
var geom2 = require_geom2();
|
|
9539
|
-
var
|
|
9539
|
+
var geom34 = require_geom3();
|
|
9540
9540
|
var path2 = require_path2();
|
|
9541
9541
|
var translate3 = (offset, ...objects) => {
|
|
9542
9542
|
if (!Array.isArray(offset)) throw new Error("offset must be an array");
|
|
@@ -9548,7 +9548,7 @@ var require_translate2 = __commonJS({
|
|
|
9548
9548
|
const results = objects.map((object) => {
|
|
9549
9549
|
if (path2.isA(object)) return path2.transform(matrix, object);
|
|
9550
9550
|
if (geom2.isA(object)) return geom2.transform(matrix, object);
|
|
9551
|
-
if (
|
|
9551
|
+
if (geom34.isA(object)) return geom34.transform(matrix, object);
|
|
9552
9552
|
return object;
|
|
9553
9553
|
});
|
|
9554
9554
|
return results.length === 1 ? results[0] : results;
|
|
@@ -10031,14 +10031,14 @@ var require_areAllShapesTheSameType = __commonJS({
|
|
|
10031
10031
|
"node_modules/@jscad/modeling/src/utils/areAllShapesTheSameType.js"(exports, module) {
|
|
10032
10032
|
"use strict";
|
|
10033
10033
|
var geom2 = require_geom2();
|
|
10034
|
-
var
|
|
10034
|
+
var geom34 = require_geom3();
|
|
10035
10035
|
var path2 = require_path2();
|
|
10036
10036
|
var areAllShapesTheSameType = (shapes) => {
|
|
10037
10037
|
let previousType;
|
|
10038
10038
|
for (const shape of shapes) {
|
|
10039
10039
|
let currentType = 0;
|
|
10040
10040
|
if (geom2.isA(shape)) currentType = 1;
|
|
10041
|
-
if (
|
|
10041
|
+
if (geom34.isA(shape)) currentType = 2;
|
|
10042
10042
|
if (path2.isA(shape)) currentType = 3;
|
|
10043
10043
|
if (previousType && currentType !== previousType) return false;
|
|
10044
10044
|
previousType = currentType;
|
|
@@ -10180,7 +10180,7 @@ var require_to3DWalls = __commonJS({
|
|
|
10180
10180
|
"use strict";
|
|
10181
10181
|
var vec3 = require_vec3();
|
|
10182
10182
|
var geom2 = require_geom2();
|
|
10183
|
-
var
|
|
10183
|
+
var geom34 = require_geom3();
|
|
10184
10184
|
var poly3 = require_poly3();
|
|
10185
10185
|
var to3DWall = (z0, z1, side) => {
|
|
10186
10186
|
const points = [
|
|
@@ -10194,7 +10194,7 @@ var require_to3DWalls = __commonJS({
|
|
|
10194
10194
|
var to3DWalls = (options, geometry) => {
|
|
10195
10195
|
const sides = geom2.toSides(geometry);
|
|
10196
10196
|
const polygons = sides.map((side) => to3DWall(options.z0, options.z1, side));
|
|
10197
|
-
const result =
|
|
10197
|
+
const result = geom34.create(polygons);
|
|
10198
10198
|
return result;
|
|
10199
10199
|
};
|
|
10200
10200
|
module.exports = to3DWalls;
|
|
@@ -10565,7 +10565,7 @@ var require_reTesselateCoplanarPolygons = __commonJS({
|
|
|
10565
10565
|
var require_retessellate = __commonJS({
|
|
10566
10566
|
"node_modules/@jscad/modeling/src/operations/modifiers/retessellate.js"(exports, module) {
|
|
10567
10567
|
"use strict";
|
|
10568
|
-
var
|
|
10568
|
+
var geom34 = require_geom3();
|
|
10569
10569
|
var poly3 = require_poly3();
|
|
10570
10570
|
var { NEPS } = require_constants();
|
|
10571
10571
|
var reTesselateCoplanarPolygons = require_reTesselateCoplanarPolygons();
|
|
@@ -10573,7 +10573,7 @@ var require_retessellate = __commonJS({
|
|
|
10573
10573
|
if (geometry.isRetesselated) {
|
|
10574
10574
|
return geometry;
|
|
10575
10575
|
}
|
|
10576
|
-
const polygons =
|
|
10576
|
+
const polygons = geom34.toPolygons(geometry).map((polygon3, index) => ({ vertices: polygon3.vertices, plane: poly3.plane(polygon3), index }));
|
|
10577
10577
|
const classified = classifyPolygons(polygons);
|
|
10578
10578
|
const destPolygons = [];
|
|
10579
10579
|
classified.forEach((group) => {
|
|
@@ -10586,7 +10586,7 @@ var require_retessellate = __commonJS({
|
|
|
10586
10586
|
destPolygons.push(group);
|
|
10587
10587
|
}
|
|
10588
10588
|
});
|
|
10589
|
-
const result =
|
|
10589
|
+
const result = geom34.create(destPolygons);
|
|
10590
10590
|
result.isRetesselated = true;
|
|
10591
10591
|
return result;
|
|
10592
10592
|
};
|
|
@@ -10643,15 +10643,15 @@ var require_mayOverlap = __commonJS({
|
|
|
10643
10643
|
"node_modules/@jscad/modeling/src/operations/booleans/mayOverlap.js"(exports, module) {
|
|
10644
10644
|
"use strict";
|
|
10645
10645
|
var { EPS } = require_constants();
|
|
10646
|
-
var
|
|
10646
|
+
var measureBoundingBox3 = require_measureBoundingBox2();
|
|
10647
10647
|
var mayOverlap = (geometry1, geometry2) => {
|
|
10648
10648
|
if (geometry1.polygons.length === 0 || geometry2.polygons.length === 0) {
|
|
10649
10649
|
return false;
|
|
10650
10650
|
}
|
|
10651
|
-
const bounds1 =
|
|
10651
|
+
const bounds1 = measureBoundingBox3(geometry1);
|
|
10652
10652
|
const min1 = bounds1[0];
|
|
10653
10653
|
const max1 = bounds1[1];
|
|
10654
|
-
const bounds2 =
|
|
10654
|
+
const bounds2 = measureBoundingBox3(geometry2);
|
|
10655
10655
|
const min2 = bounds2[0];
|
|
10656
10656
|
const max2 = bounds2[1];
|
|
10657
10657
|
if (min2[0] - max1[0] > EPS) return false;
|
|
@@ -11191,15 +11191,15 @@ var require_trees = __commonJS({
|
|
|
11191
11191
|
var require_intersectGeom3Sub = __commonJS({
|
|
11192
11192
|
"node_modules/@jscad/modeling/src/operations/booleans/intersectGeom3Sub.js"(exports, module) {
|
|
11193
11193
|
"use strict";
|
|
11194
|
-
var
|
|
11194
|
+
var geom34 = require_geom3();
|
|
11195
11195
|
var mayOverlap = require_mayOverlap();
|
|
11196
11196
|
var { Tree } = require_trees();
|
|
11197
11197
|
var intersectGeom3Sub = (geometry1, geometry2) => {
|
|
11198
11198
|
if (!mayOverlap(geometry1, geometry2)) {
|
|
11199
|
-
return
|
|
11199
|
+
return geom34.create();
|
|
11200
11200
|
}
|
|
11201
|
-
const a = new Tree(
|
|
11202
|
-
const b = new Tree(
|
|
11201
|
+
const a = new Tree(geom34.toPolygons(geometry1));
|
|
11202
|
+
const b = new Tree(geom34.toPolygons(geometry2));
|
|
11203
11203
|
a.invert();
|
|
11204
11204
|
b.clipTo(a);
|
|
11205
11205
|
b.invert();
|
|
@@ -11208,7 +11208,7 @@ var require_intersectGeom3Sub = __commonJS({
|
|
|
11208
11208
|
a.addPolygons(b.allPolygons());
|
|
11209
11209
|
a.invert();
|
|
11210
11210
|
const newpolygons = a.allPolygons();
|
|
11211
|
-
return
|
|
11211
|
+
return geom34.create(newpolygons);
|
|
11212
11212
|
};
|
|
11213
11213
|
module.exports = intersectGeom3Sub;
|
|
11214
11214
|
}
|
|
@@ -11239,7 +11239,7 @@ var require_intersectGeom2 = __commonJS({
|
|
|
11239
11239
|
"node_modules/@jscad/modeling/src/operations/booleans/intersectGeom2.js"(exports, module) {
|
|
11240
11240
|
"use strict";
|
|
11241
11241
|
var flatten = require_flatten();
|
|
11242
|
-
var
|
|
11242
|
+
var geom34 = require_geom3();
|
|
11243
11243
|
var measureEpsilon = require_measureEpsilon();
|
|
11244
11244
|
var fromFakePolygons = require_fromFakePolygons();
|
|
11245
11245
|
var to3DWalls = require_to3DWalls();
|
|
@@ -11249,7 +11249,7 @@ var require_intersectGeom2 = __commonJS({
|
|
|
11249
11249
|
const newgeometries = geometries.map((geometry) => to3DWalls({ z0: -1, z1: 1 }, geometry));
|
|
11250
11250
|
const newgeom3 = intersectGeom3(newgeometries);
|
|
11251
11251
|
const epsilon = measureEpsilon(newgeom3);
|
|
11252
|
-
return fromFakePolygons(epsilon,
|
|
11252
|
+
return fromFakePolygons(epsilon, geom34.toPolygons(newgeom3));
|
|
11253
11253
|
};
|
|
11254
11254
|
module.exports = intersect;
|
|
11255
11255
|
}
|
|
@@ -11262,7 +11262,7 @@ var require_intersect2 = __commonJS({
|
|
|
11262
11262
|
var flatten = require_flatten();
|
|
11263
11263
|
var areAllShapesTheSameType = require_areAllShapesTheSameType();
|
|
11264
11264
|
var geom2 = require_geom2();
|
|
11265
|
-
var
|
|
11265
|
+
var geom34 = require_geom3();
|
|
11266
11266
|
var intersectGeom2 = require_intersectGeom2();
|
|
11267
11267
|
var intersectGeom3 = require_intersectGeom3();
|
|
11268
11268
|
var intersect = (...geometries) => {
|
|
@@ -11273,7 +11273,7 @@ var require_intersect2 = __commonJS({
|
|
|
11273
11273
|
}
|
|
11274
11274
|
const geometry = geometries[0];
|
|
11275
11275
|
if (geom2.isA(geometry)) return intersectGeom2(geometries);
|
|
11276
|
-
if (
|
|
11276
|
+
if (geom34.isA(geometry)) return intersectGeom3(geometries);
|
|
11277
11277
|
return geometry;
|
|
11278
11278
|
};
|
|
11279
11279
|
module.exports = intersect;
|
|
@@ -11302,28 +11302,28 @@ var require_hullPoints3 = __commonJS({
|
|
|
11302
11302
|
var require_unionGeom3Sub = __commonJS({
|
|
11303
11303
|
"node_modules/@jscad/modeling/src/operations/booleans/unionGeom3Sub.js"(exports, module) {
|
|
11304
11304
|
"use strict";
|
|
11305
|
-
var
|
|
11305
|
+
var geom34 = require_geom3();
|
|
11306
11306
|
var mayOverlap = require_mayOverlap();
|
|
11307
11307
|
var { Tree } = require_trees();
|
|
11308
11308
|
var unionSub = (geometry1, geometry2) => {
|
|
11309
11309
|
if (!mayOverlap(geometry1, geometry2)) {
|
|
11310
11310
|
return unionForNonIntersecting(geometry1, geometry2);
|
|
11311
11311
|
}
|
|
11312
|
-
const a = new Tree(
|
|
11313
|
-
const b = new Tree(
|
|
11312
|
+
const a = new Tree(geom34.toPolygons(geometry1));
|
|
11313
|
+
const b = new Tree(geom34.toPolygons(geometry2));
|
|
11314
11314
|
a.clipTo(b, false);
|
|
11315
11315
|
b.clipTo(a);
|
|
11316
11316
|
b.invert();
|
|
11317
11317
|
b.clipTo(a);
|
|
11318
11318
|
b.invert();
|
|
11319
11319
|
const newpolygons = a.allPolygons().concat(b.allPolygons());
|
|
11320
|
-
const result =
|
|
11320
|
+
const result = geom34.create(newpolygons);
|
|
11321
11321
|
return result;
|
|
11322
11322
|
};
|
|
11323
11323
|
var unionForNonIntersecting = (geometry1, geometry2) => {
|
|
11324
|
-
let newpolygons =
|
|
11325
|
-
newpolygons = newpolygons.concat(
|
|
11326
|
-
return
|
|
11324
|
+
let newpolygons = geom34.toPolygons(geometry1);
|
|
11325
|
+
newpolygons = newpolygons.concat(geom34.toPolygons(geometry2));
|
|
11326
|
+
return geom34.create(newpolygons);
|
|
11327
11327
|
};
|
|
11328
11328
|
module.exports = unionSub;
|
|
11329
11329
|
}
|
|
@@ -11355,7 +11355,7 @@ var require_minkowskiSum = __commonJS({
|
|
|
11355
11355
|
"node_modules/@jscad/modeling/src/operations/minkowski/minkowskiSum.js"(exports, module) {
|
|
11356
11356
|
"use strict";
|
|
11357
11357
|
var flatten = require_flatten();
|
|
11358
|
-
var
|
|
11358
|
+
var geom34 = require_geom3();
|
|
11359
11359
|
var poly3 = require_poly3();
|
|
11360
11360
|
var hullPoints3 = require_hullPoints3();
|
|
11361
11361
|
var unionGeom3 = require_unionGeom3();
|
|
@@ -11365,11 +11365,11 @@ var require_minkowskiSum = __commonJS({
|
|
|
11365
11365
|
throw new Error("minkowskiSum requires exactly two geometries");
|
|
11366
11366
|
}
|
|
11367
11367
|
const [geomA, geomB] = geometries;
|
|
11368
|
-
if (!
|
|
11368
|
+
if (!geom34.isA(geomA) || !geom34.isA(geomB)) {
|
|
11369
11369
|
throw new Error("minkowskiSum requires geom3 geometries");
|
|
11370
11370
|
}
|
|
11371
|
-
const aConvex =
|
|
11372
|
-
const bConvex =
|
|
11371
|
+
const aConvex = geom34.isConvex(geomA);
|
|
11372
|
+
const bConvex = geom34.isConvex(geomB);
|
|
11373
11373
|
if (aConvex && bConvex) {
|
|
11374
11374
|
return minkowskiSumConvex(geomA, geomB);
|
|
11375
11375
|
}
|
|
@@ -11384,7 +11384,7 @@ var require_minkowskiSum = __commonJS({
|
|
|
11384
11384
|
var minkowskiSumNonConvexConvex = (geomA, geomB) => {
|
|
11385
11385
|
const tetrahedra = decomposeIntoTetrahedra(geomA);
|
|
11386
11386
|
if (tetrahedra.length === 0) {
|
|
11387
|
-
return
|
|
11387
|
+
return geom34.create();
|
|
11388
11388
|
}
|
|
11389
11389
|
const parts = tetrahedra.map((tet) => minkowskiSumConvex(tet, geomB));
|
|
11390
11390
|
if (parts.length === 1) {
|
|
@@ -11393,7 +11393,7 @@ var require_minkowskiSum = __commonJS({
|
|
|
11393
11393
|
return unionGeom3(parts);
|
|
11394
11394
|
};
|
|
11395
11395
|
var decomposeIntoTetrahedra = (geometry) => {
|
|
11396
|
-
const polygons =
|
|
11396
|
+
const polygons = geom34.toPolygons(geometry);
|
|
11397
11397
|
if (polygons.length === 0) {
|
|
11398
11398
|
return [];
|
|
11399
11399
|
}
|
|
@@ -11424,7 +11424,7 @@ var require_minkowskiSum = __commonJS({
|
|
|
11424
11424
|
const v1 = vertices[j];
|
|
11425
11425
|
const v2 = vertices[j + 1];
|
|
11426
11426
|
const tetPolygons = createTetrahedronPolygons(apex, v0, v1, v2);
|
|
11427
|
-
tetrahedra.push(
|
|
11427
|
+
tetrahedra.push(geom34.create(tetPolygons));
|
|
11428
11428
|
}
|
|
11429
11429
|
}
|
|
11430
11430
|
return tetrahedra;
|
|
@@ -11445,7 +11445,7 @@ var require_minkowskiSum = __commonJS({
|
|
|
11445
11445
|
const pointsA = extractUniqueVertices(geomA);
|
|
11446
11446
|
const pointsB = extractUniqueVertices(geomB);
|
|
11447
11447
|
if (pointsA.length === 0 || pointsB.length === 0) {
|
|
11448
|
-
return
|
|
11448
|
+
return geom34.create();
|
|
11449
11449
|
}
|
|
11450
11450
|
const summedPoints = [];
|
|
11451
11451
|
for (let i = 0; i < pointsA.length; i++) {
|
|
@@ -11456,12 +11456,12 @@ var require_minkowskiSum = __commonJS({
|
|
|
11456
11456
|
}
|
|
11457
11457
|
}
|
|
11458
11458
|
const hullPolygons = hullPoints3(summedPoints);
|
|
11459
|
-
return
|
|
11459
|
+
return geom34.create(hullPolygons);
|
|
11460
11460
|
};
|
|
11461
11461
|
var extractUniqueVertices = (geometry) => {
|
|
11462
11462
|
const found = /* @__PURE__ */ new Set();
|
|
11463
11463
|
const unique = [];
|
|
11464
|
-
const polygons =
|
|
11464
|
+
const polygons = geom34.toPolygons(geometry);
|
|
11465
11465
|
for (let i = 0; i < polygons.length; i++) {
|
|
11466
11466
|
const vertices = polygons[i].vertices;
|
|
11467
11467
|
for (let j = 0; j < vertices.length; j++) {
|
|
@@ -11485,7 +11485,7 @@ var require_scissionGeom3 = __commonJS({
|
|
|
11485
11485
|
"use strict";
|
|
11486
11486
|
var vec3 = require_vec3();
|
|
11487
11487
|
var measureEpsilon = require_measureEpsilon();
|
|
11488
|
-
var
|
|
11488
|
+
var geom34 = require_geom3();
|
|
11489
11489
|
var sortNb = (array) => array.sort((a, b) => a - b).filter((item, pos, ary) => !pos || item !== ary[pos - 1]);
|
|
11490
11490
|
var insertMapping = (map, point, index) => {
|
|
11491
11491
|
const key = `${point}`;
|
|
@@ -11502,7 +11502,7 @@ var require_scissionGeom3 = __commonJS({
|
|
|
11502
11502
|
};
|
|
11503
11503
|
var scissionGeom3 = (geometry) => {
|
|
11504
11504
|
const eps = measureEpsilon(geometry);
|
|
11505
|
-
const polygons =
|
|
11505
|
+
const polygons = geom34.toPolygons(geometry);
|
|
11506
11506
|
const pl = polygons.length;
|
|
11507
11507
|
const indexesPerPoint = /* @__PURE__ */ new Map();
|
|
11508
11508
|
const temp = vec3.create();
|
|
@@ -11547,7 +11547,7 @@ var require_scissionGeom3 = __commonJS({
|
|
|
11547
11547
|
if (indexesPerPolygon[i].indexes) {
|
|
11548
11548
|
const newpolygons = [];
|
|
11549
11549
|
indexesPerPolygon[i].indexes.forEach((e, p) => newpolygons.push(polygons[p]));
|
|
11550
|
-
newgeometries.push(
|
|
11550
|
+
newgeometries.push(geom34.create(newpolygons));
|
|
11551
11551
|
}
|
|
11552
11552
|
}
|
|
11553
11553
|
return newgeometries;
|
|
@@ -11561,13 +11561,13 @@ var require_scission = __commonJS({
|
|
|
11561
11561
|
"node_modules/@jscad/modeling/src/operations/booleans/scission.js"(exports, module) {
|
|
11562
11562
|
"use strict";
|
|
11563
11563
|
var flatten = require_flatten();
|
|
11564
|
-
var
|
|
11564
|
+
var geom34 = require_geom3();
|
|
11565
11565
|
var scissionGeom3 = require_scissionGeom3();
|
|
11566
11566
|
var scission = (...objects) => {
|
|
11567
11567
|
objects = flatten(objects);
|
|
11568
11568
|
if (objects.length === 0) throw new Error("wrong number of arguments");
|
|
11569
11569
|
const results = objects.map((object) => {
|
|
11570
|
-
if (
|
|
11570
|
+
if (geom34.isA(object)) return scissionGeom3(object);
|
|
11571
11571
|
return object;
|
|
11572
11572
|
});
|
|
11573
11573
|
return results.length === 1 ? results[0] : results;
|
|
@@ -11580,22 +11580,22 @@ var require_scission = __commonJS({
|
|
|
11580
11580
|
var require_subtractGeom3Sub = __commonJS({
|
|
11581
11581
|
"node_modules/@jscad/modeling/src/operations/booleans/subtractGeom3Sub.js"(exports, module) {
|
|
11582
11582
|
"use strict";
|
|
11583
|
-
var
|
|
11583
|
+
var geom34 = require_geom3();
|
|
11584
11584
|
var mayOverlap = require_mayOverlap();
|
|
11585
11585
|
var { Tree } = require_trees();
|
|
11586
11586
|
var subtractGeom3Sub = (geometry1, geometry2) => {
|
|
11587
11587
|
if (!mayOverlap(geometry1, geometry2)) {
|
|
11588
|
-
return
|
|
11588
|
+
return geom34.clone(geometry1);
|
|
11589
11589
|
}
|
|
11590
|
-
const a = new Tree(
|
|
11591
|
-
const b = new Tree(
|
|
11590
|
+
const a = new Tree(geom34.toPolygons(geometry1));
|
|
11591
|
+
const b = new Tree(geom34.toPolygons(geometry2));
|
|
11592
11592
|
a.invert();
|
|
11593
11593
|
a.clipTo(b);
|
|
11594
11594
|
b.clipTo(a, true);
|
|
11595
11595
|
a.addPolygons(b.allPolygons());
|
|
11596
11596
|
a.invert();
|
|
11597
11597
|
const newpolygons = a.allPolygons();
|
|
11598
|
-
return
|
|
11598
|
+
return geom34.create(newpolygons);
|
|
11599
11599
|
};
|
|
11600
11600
|
module.exports = subtractGeom3Sub;
|
|
11601
11601
|
}
|
|
@@ -11608,7 +11608,7 @@ var require_subtractGeom3 = __commonJS({
|
|
|
11608
11608
|
var flatten = require_flatten();
|
|
11609
11609
|
var retessellate = require_retessellate();
|
|
11610
11610
|
var subtractSub = require_subtractGeom3Sub();
|
|
11611
|
-
var
|
|
11611
|
+
var subtract3 = (...geometries) => {
|
|
11612
11612
|
geometries = flatten(geometries);
|
|
11613
11613
|
let newgeometry = geometries.shift();
|
|
11614
11614
|
geometries.forEach((geometry) => {
|
|
@@ -11617,7 +11617,7 @@ var require_subtractGeom3 = __commonJS({
|
|
|
11617
11617
|
newgeometry = retessellate(newgeometry);
|
|
11618
11618
|
return newgeometry;
|
|
11619
11619
|
};
|
|
11620
|
-
module.exports =
|
|
11620
|
+
module.exports = subtract3;
|
|
11621
11621
|
}
|
|
11622
11622
|
});
|
|
11623
11623
|
|
|
@@ -11626,19 +11626,19 @@ var require_subtractGeom2 = __commonJS({
|
|
|
11626
11626
|
"node_modules/@jscad/modeling/src/operations/booleans/subtractGeom2.js"(exports, module) {
|
|
11627
11627
|
"use strict";
|
|
11628
11628
|
var flatten = require_flatten();
|
|
11629
|
-
var
|
|
11629
|
+
var geom34 = require_geom3();
|
|
11630
11630
|
var measureEpsilon = require_measureEpsilon();
|
|
11631
11631
|
var fromFakePolygons = require_fromFakePolygons();
|
|
11632
11632
|
var to3DWalls = require_to3DWalls();
|
|
11633
11633
|
var subtractGeom3 = require_subtractGeom3();
|
|
11634
|
-
var
|
|
11634
|
+
var subtract3 = (...geometries) => {
|
|
11635
11635
|
geometries = flatten(geometries);
|
|
11636
11636
|
const newgeometries = geometries.map((geometry) => to3DWalls({ z0: -1, z1: 1 }, geometry));
|
|
11637
11637
|
const newgeom3 = subtractGeom3(newgeometries);
|
|
11638
11638
|
const epsilon = measureEpsilon(newgeom3);
|
|
11639
|
-
return fromFakePolygons(epsilon,
|
|
11639
|
+
return fromFakePolygons(epsilon, geom34.toPolygons(newgeom3));
|
|
11640
11640
|
};
|
|
11641
|
-
module.exports =
|
|
11641
|
+
module.exports = subtract3;
|
|
11642
11642
|
}
|
|
11643
11643
|
});
|
|
11644
11644
|
|
|
@@ -11649,10 +11649,10 @@ var require_subtract4 = __commonJS({
|
|
|
11649
11649
|
var flatten = require_flatten();
|
|
11650
11650
|
var areAllShapesTheSameType = require_areAllShapesTheSameType();
|
|
11651
11651
|
var geom2 = require_geom2();
|
|
11652
|
-
var
|
|
11652
|
+
var geom34 = require_geom3();
|
|
11653
11653
|
var subtractGeom2 = require_subtractGeom2();
|
|
11654
11654
|
var subtractGeom3 = require_subtractGeom3();
|
|
11655
|
-
var
|
|
11655
|
+
var subtract3 = (...geometries) => {
|
|
11656
11656
|
geometries = flatten(geometries);
|
|
11657
11657
|
if (geometries.length === 0) throw new Error("wrong number of arguments");
|
|
11658
11658
|
if (!areAllShapesTheSameType(geometries)) {
|
|
@@ -11660,10 +11660,10 @@ var require_subtract4 = __commonJS({
|
|
|
11660
11660
|
}
|
|
11661
11661
|
const geometry = geometries[0];
|
|
11662
11662
|
if (geom2.isA(geometry)) return subtractGeom2(geometries);
|
|
11663
|
-
if (
|
|
11663
|
+
if (geom34.isA(geometry)) return subtractGeom3(geometries);
|
|
11664
11664
|
return geometry;
|
|
11665
11665
|
};
|
|
11666
|
-
module.exports =
|
|
11666
|
+
module.exports = subtract3;
|
|
11667
11667
|
}
|
|
11668
11668
|
});
|
|
11669
11669
|
|
|
@@ -11672,7 +11672,7 @@ var require_unionGeom2 = __commonJS({
|
|
|
11672
11672
|
"node_modules/@jscad/modeling/src/operations/booleans/unionGeom2.js"(exports, module) {
|
|
11673
11673
|
"use strict";
|
|
11674
11674
|
var flatten = require_flatten();
|
|
11675
|
-
var
|
|
11675
|
+
var geom34 = require_geom3();
|
|
11676
11676
|
var measureEpsilon = require_measureEpsilon();
|
|
11677
11677
|
var fromFakePolygons = require_fromFakePolygons();
|
|
11678
11678
|
var to3DWalls = require_to3DWalls();
|
|
@@ -11682,7 +11682,7 @@ var require_unionGeom2 = __commonJS({
|
|
|
11682
11682
|
const newgeometries = geometries.map((geometry) => to3DWalls({ z0: -1, z1: 1 }, geometry));
|
|
11683
11683
|
const newgeom3 = unionGeom3(newgeometries);
|
|
11684
11684
|
const epsilon = measureEpsilon(newgeom3);
|
|
11685
|
-
return fromFakePolygons(epsilon,
|
|
11685
|
+
return fromFakePolygons(epsilon, geom34.toPolygons(newgeom3));
|
|
11686
11686
|
};
|
|
11687
11687
|
module.exports = union2;
|
|
11688
11688
|
}
|
|
@@ -11695,7 +11695,7 @@ var require_union = __commonJS({
|
|
|
11695
11695
|
var flatten = require_flatten();
|
|
11696
11696
|
var areAllShapesTheSameType = require_areAllShapesTheSameType();
|
|
11697
11697
|
var geom2 = require_geom2();
|
|
11698
|
-
var
|
|
11698
|
+
var geom34 = require_geom3();
|
|
11699
11699
|
var unionGeom2 = require_unionGeom2();
|
|
11700
11700
|
var unionGeom3 = require_unionGeom3();
|
|
11701
11701
|
var union2 = (...geometries) => {
|
|
@@ -11706,7 +11706,7 @@ var require_union = __commonJS({
|
|
|
11706
11706
|
}
|
|
11707
11707
|
const geometry = geometries[0];
|
|
11708
11708
|
if (geom2.isA(geometry)) return unionGeom2(geometries);
|
|
11709
|
-
if (
|
|
11709
|
+
if (geom34.isA(geometry)) return unionGeom3(geometries);
|
|
11710
11710
|
return geometry;
|
|
11711
11711
|
};
|
|
11712
11712
|
module.exports = union2;
|
|
@@ -11900,7 +11900,7 @@ var require_extrudePolygon = __commonJS({
|
|
|
11900
11900
|
"use strict";
|
|
11901
11901
|
var mat4 = require_mat4();
|
|
11902
11902
|
var vec3 = require_vec3();
|
|
11903
|
-
var
|
|
11903
|
+
var geom34 = require_geom3();
|
|
11904
11904
|
var poly3 = require_poly3();
|
|
11905
11905
|
var extrudePolygon = (offsetvector, polygon1) => {
|
|
11906
11906
|
const direction = vec3.dot(poly3.plane(polygon1), offsetvector);
|
|
@@ -11921,7 +11921,7 @@ var require_extrudePolygon = __commonJS({
|
|
|
11921
11921
|
newpolygons.push(sideFacePolygon);
|
|
11922
11922
|
}
|
|
11923
11923
|
newpolygons.push(poly3.invert(polygon22));
|
|
11924
|
-
return
|
|
11924
|
+
return geom34.create(newpolygons);
|
|
11925
11925
|
};
|
|
11926
11926
|
module.exports = extrudePolygon;
|
|
11927
11927
|
}
|
|
@@ -11935,7 +11935,7 @@ var require_expandShell = __commonJS({
|
|
|
11935
11935
|
var mat4 = require_mat4();
|
|
11936
11936
|
var vec3 = require_vec3();
|
|
11937
11937
|
var fnNumberSort = require_fnNumberSort();
|
|
11938
|
-
var
|
|
11938
|
+
var geom34 = require_geom3();
|
|
11939
11939
|
var poly3 = require_poly3();
|
|
11940
11940
|
var sphere = require_sphere();
|
|
11941
11941
|
var retessellate = require_retessellate();
|
|
@@ -11975,12 +11975,12 @@ var require_expandShell = __commonJS({
|
|
|
11975
11975
|
segments: 12
|
|
11976
11976
|
};
|
|
11977
11977
|
const { delta, segments } = Object.assign({}, defaults, options);
|
|
11978
|
-
let result =
|
|
11978
|
+
let result = geom34.create();
|
|
11979
11979
|
const vertices2planes = /* @__PURE__ */ new Map();
|
|
11980
11980
|
const edges2planes = /* @__PURE__ */ new Map();
|
|
11981
11981
|
const v1 = vec3.create();
|
|
11982
11982
|
const v2 = vec3.create();
|
|
11983
|
-
const polygons =
|
|
11983
|
+
const polygons = geom34.toPolygons(geometry);
|
|
11984
11984
|
polygons.forEach((polygon3, index) => {
|
|
11985
11985
|
const extrudevector = vec3.scale(vec3.create(), poly3.plane(polygon3), 2 * delta);
|
|
11986
11986
|
const translatedpolygon = poly3.transform(mat4.fromTranslation(mat4.create(), vec3.scale(vec3.create(), extrudevector, -0.5)), polygon3);
|
|
@@ -12055,7 +12055,7 @@ var require_expandShell = __commonJS({
|
|
|
12055
12055
|
endfacevertices.reverse();
|
|
12056
12056
|
polygons2.push(poly3.create(startfacevertices));
|
|
12057
12057
|
polygons2.push(poly3.create(endfacevertices));
|
|
12058
|
-
const cylinder2 =
|
|
12058
|
+
const cylinder2 = geom34.create(polygons2);
|
|
12059
12059
|
result = unionGeom3Sub(result, cylinder2);
|
|
12060
12060
|
});
|
|
12061
12061
|
vertices2planes.forEach((item) => {
|
|
@@ -12099,7 +12099,7 @@ var require_expandShell = __commonJS({
|
|
|
12099
12099
|
var require_expandGeom3 = __commonJS({
|
|
12100
12100
|
"node_modules/@jscad/modeling/src/operations/expansions/expandGeom3.js"(exports, module) {
|
|
12101
12101
|
"use strict";
|
|
12102
|
-
var
|
|
12102
|
+
var geom34 = require_geom3();
|
|
12103
12103
|
var union2 = require_union();
|
|
12104
12104
|
var expandShell = require_expandShell();
|
|
12105
12105
|
var expandGeom3 = (options, geometry) => {
|
|
@@ -12112,7 +12112,7 @@ var require_expandGeom3 = __commonJS({
|
|
|
12112
12112
|
if (!(corners === "round")) {
|
|
12113
12113
|
throw new Error('corners must be "round" for 3D geometries');
|
|
12114
12114
|
}
|
|
12115
|
-
const polygons =
|
|
12115
|
+
const polygons = geom34.toPolygons(geometry);
|
|
12116
12116
|
if (polygons.length === 0) throw new Error("the given geometry cannot be empty");
|
|
12117
12117
|
options = { delta, corners, segments };
|
|
12118
12118
|
const expanded = expandShell(options, geometry);
|
|
@@ -12209,7 +12209,7 @@ var require_expand = __commonJS({
|
|
|
12209
12209
|
"use strict";
|
|
12210
12210
|
var flatten = require_flatten();
|
|
12211
12211
|
var geom2 = require_geom2();
|
|
12212
|
-
var
|
|
12212
|
+
var geom34 = require_geom3();
|
|
12213
12213
|
var path2 = require_path2();
|
|
12214
12214
|
var expandGeom2 = require_expandGeom2();
|
|
12215
12215
|
var expandGeom3 = require_expandGeom3();
|
|
@@ -12220,7 +12220,7 @@ var require_expand = __commonJS({
|
|
|
12220
12220
|
const results = objects.map((object) => {
|
|
12221
12221
|
if (path2.isA(object)) return expandPath2(options, object);
|
|
12222
12222
|
if (geom2.isA(object)) return expandGeom2(options, object);
|
|
12223
|
-
if (
|
|
12223
|
+
if (geom34.isA(object)) return expandGeom3(options, object);
|
|
12224
12224
|
return object;
|
|
12225
12225
|
});
|
|
12226
12226
|
return results.length === 1 ? results[0] : results;
|
|
@@ -12582,7 +12582,7 @@ var require_project = __commonJS({
|
|
|
12582
12582
|
var plane = require_plane();
|
|
12583
12583
|
var mat4 = require_mat4();
|
|
12584
12584
|
var geom2 = require_geom2();
|
|
12585
|
-
var
|
|
12585
|
+
var geom34 = require_geom3();
|
|
12586
12586
|
var poly3 = require_poly3();
|
|
12587
12587
|
var measureEpsilon = require_measureEpsilon();
|
|
12588
12588
|
var unionGeom2 = require_unionGeom2();
|
|
@@ -12594,7 +12594,7 @@ var require_project = __commonJS({
|
|
|
12594
12594
|
const epsilon = measureEpsilon(geometry);
|
|
12595
12595
|
const epsilonArea = epsilon * epsilon * Math.sqrt(3) / 4;
|
|
12596
12596
|
if (epsilon === 0) return geom2.create();
|
|
12597
|
-
const polygons =
|
|
12597
|
+
const polygons = geom34.toPolygons(geometry);
|
|
12598
12598
|
let projpolys = [];
|
|
12599
12599
|
for (let i = 0; i < polygons.length; i++) {
|
|
12600
12600
|
const newpoints = polygons[i].vertices.map((v) => plane.projectionOfPoint(projplane, v));
|
|
@@ -12623,7 +12623,7 @@ var require_project = __commonJS({
|
|
|
12623
12623
|
if (objects.length === 0) throw new Error("wrong number of arguments");
|
|
12624
12624
|
options = { axis, origin };
|
|
12625
12625
|
const results = objects.map((object) => {
|
|
12626
|
-
if (
|
|
12626
|
+
if (geom34.isA(object)) return projectGeom3(options, object);
|
|
12627
12627
|
return object;
|
|
12628
12628
|
});
|
|
12629
12629
|
return results.length === 1 ? results[0] : results;
|
|
@@ -12695,7 +12695,7 @@ var require_toUniquePoints = __commonJS({
|
|
|
12695
12695
|
"node_modules/@jscad/modeling/src/operations/hulls/toUniquePoints.js"(exports, module) {
|
|
12696
12696
|
"use strict";
|
|
12697
12697
|
var geom2 = require_geom2();
|
|
12698
|
-
var
|
|
12698
|
+
var geom34 = require_geom3();
|
|
12699
12699
|
var path2 = require_path2();
|
|
12700
12700
|
var toUniquePoints = (geometries) => {
|
|
12701
12701
|
const found = /* @__PURE__ */ new Set();
|
|
@@ -12710,8 +12710,8 @@ var require_toUniquePoints = __commonJS({
|
|
|
12710
12710
|
geometries.forEach((geometry) => {
|
|
12711
12711
|
if (geom2.isA(geometry)) {
|
|
12712
12712
|
geom2.toPoints(geometry).forEach(addPoint);
|
|
12713
|
-
} else if (
|
|
12714
|
-
|
|
12713
|
+
} else if (geom34.isA(geometry)) {
|
|
12714
|
+
geom34.toPoints(geometry).forEach((points) => points.forEach(addPoint));
|
|
12715
12715
|
} else if (path2.isA(geometry)) {
|
|
12716
12716
|
path2.toPoints(geometry).forEach(addPoint);
|
|
12717
12717
|
}
|
|
@@ -12764,14 +12764,14 @@ var require_hullGeom3 = __commonJS({
|
|
|
12764
12764
|
"node_modules/@jscad/modeling/src/operations/hulls/hullGeom3.js"(exports, module) {
|
|
12765
12765
|
"use strict";
|
|
12766
12766
|
var flatten = require_flatten();
|
|
12767
|
-
var
|
|
12767
|
+
var geom34 = require_geom3();
|
|
12768
12768
|
var toUniquePoints = require_toUniquePoints();
|
|
12769
12769
|
var hullPoints3 = require_hullPoints3();
|
|
12770
12770
|
var hullGeom3 = (...geometries) => {
|
|
12771
12771
|
geometries = flatten(geometries);
|
|
12772
12772
|
const unique = toUniquePoints(geometries);
|
|
12773
|
-
if (unique.length === 0) return
|
|
12774
|
-
return
|
|
12773
|
+
if (unique.length === 0) return geom34.create();
|
|
12774
|
+
return geom34.create(hullPoints3(unique));
|
|
12775
12775
|
};
|
|
12776
12776
|
module.exports = hullGeom3;
|
|
12777
12777
|
}
|
|
@@ -12784,7 +12784,7 @@ var require_hull = __commonJS({
|
|
|
12784
12784
|
var flatten = require_flatten();
|
|
12785
12785
|
var areAllShapesTheSameType = require_areAllShapesTheSameType();
|
|
12786
12786
|
var geom2 = require_geom2();
|
|
12787
|
-
var
|
|
12787
|
+
var geom34 = require_geom3();
|
|
12788
12788
|
var path2 = require_path2();
|
|
12789
12789
|
var hullPath2 = require_hullPath2();
|
|
12790
12790
|
var hullGeom2 = require_hullGeom2();
|
|
@@ -12798,7 +12798,7 @@ var require_hull = __commonJS({
|
|
|
12798
12798
|
const geometry = geometries[0];
|
|
12799
12799
|
if (path2.isA(geometry)) return hullPath2(geometries);
|
|
12800
12800
|
if (geom2.isA(geometry)) return hullGeom2(geometries);
|
|
12801
|
-
if (
|
|
12801
|
+
if (geom34.isA(geometry)) return hullGeom3(geometries);
|
|
12802
12802
|
return geometry;
|
|
12803
12803
|
};
|
|
12804
12804
|
module.exports = hull;
|
|
@@ -13337,7 +13337,7 @@ var require_generalize = __commonJS({
|
|
|
13337
13337
|
var flatten = require_flatten();
|
|
13338
13338
|
var measureEpsilon = require_measureEpsilon();
|
|
13339
13339
|
var geom2 = require_geom2();
|
|
13340
|
-
var
|
|
13340
|
+
var geom34 = require_geom3();
|
|
13341
13341
|
var path2 = require_path2();
|
|
13342
13342
|
var snapPolygons = require_snapPolygons();
|
|
13343
13343
|
var mergePolygons = require_mergePolygons();
|
|
@@ -13353,7 +13353,7 @@ var require_generalize = __commonJS({
|
|
|
13353
13353
|
};
|
|
13354
13354
|
const { snap, simplify, triangulate } = Object.assign({}, defaults, options);
|
|
13355
13355
|
const epsilon = measureEpsilon(geometry);
|
|
13356
|
-
let polygons =
|
|
13356
|
+
let polygons = geom34.toPolygons(geometry);
|
|
13357
13357
|
if (snap) {
|
|
13358
13358
|
polygons = snapPolygons(epsilon, polygons);
|
|
13359
13359
|
}
|
|
@@ -13374,7 +13374,7 @@ var require_generalize = __commonJS({
|
|
|
13374
13374
|
const results = geometries.map((geometry) => {
|
|
13375
13375
|
if (path2.isA(geometry)) return generalizePath2(options, geometry);
|
|
13376
13376
|
if (geom2.isA(geometry)) return generalizeGeom2(options, geometry);
|
|
13377
|
-
if (
|
|
13377
|
+
if (geom34.isA(geometry)) return generalizeGeom3(options, geometry);
|
|
13378
13378
|
throw new Error("invalid geometry");
|
|
13379
13379
|
});
|
|
13380
13380
|
return results.length === 1 ? results[0] : results;
|
|
@@ -13390,7 +13390,7 @@ var require_snap3 = __commonJS({
|
|
|
13390
13390
|
var flatten = require_flatten();
|
|
13391
13391
|
var vec2 = require_vec2();
|
|
13392
13392
|
var geom2 = require_geom2();
|
|
13393
|
-
var
|
|
13393
|
+
var geom34 = require_geom3();
|
|
13394
13394
|
var path2 = require_path2();
|
|
13395
13395
|
var measureEpsilon = require_measureEpsilon();
|
|
13396
13396
|
var snapPolygons = require_snapPolygons();
|
|
@@ -13409,9 +13409,9 @@ var require_snap3 = __commonJS({
|
|
|
13409
13409
|
};
|
|
13410
13410
|
var snapGeom3 = (geometry) => {
|
|
13411
13411
|
const epsilon = measureEpsilon(geometry);
|
|
13412
|
-
const polygons =
|
|
13412
|
+
const polygons = geom34.toPolygons(geometry);
|
|
13413
13413
|
const newpolygons = snapPolygons(epsilon, polygons);
|
|
13414
|
-
return
|
|
13414
|
+
return geom34.create(newpolygons);
|
|
13415
13415
|
};
|
|
13416
13416
|
var snap = (...geometries) => {
|
|
13417
13417
|
geometries = flatten(geometries);
|
|
@@ -13419,7 +13419,7 @@ var require_snap3 = __commonJS({
|
|
|
13419
13419
|
const results = geometries.map((geometry) => {
|
|
13420
13420
|
if (path2.isA(geometry)) return snapPath2(geometry);
|
|
13421
13421
|
if (geom2.isA(geometry)) return snapGeom2(geometry);
|
|
13422
|
-
if (
|
|
13422
|
+
if (geom34.isA(geometry)) return snapGeom3(geometry);
|
|
13423
13423
|
return geometry;
|
|
13424
13424
|
});
|
|
13425
13425
|
return results.length === 1 ? results[0] : results;
|
|
@@ -13533,9 +13533,9 @@ var require_center = __commonJS({
|
|
|
13533
13533
|
"use strict";
|
|
13534
13534
|
var flatten = require_flatten();
|
|
13535
13535
|
var geom2 = require_geom2();
|
|
13536
|
-
var
|
|
13536
|
+
var geom34 = require_geom3();
|
|
13537
13537
|
var path2 = require_path2();
|
|
13538
|
-
var
|
|
13538
|
+
var measureBoundingBox3 = require_measureBoundingBox2();
|
|
13539
13539
|
var { translate: translate3 } = require_translate2();
|
|
13540
13540
|
var centerGeometry = (options, object) => {
|
|
13541
13541
|
const defaults = {
|
|
@@ -13543,7 +13543,7 @@ var require_center = __commonJS({
|
|
|
13543
13543
|
relativeTo: [0, 0, 0]
|
|
13544
13544
|
};
|
|
13545
13545
|
const { axes, relativeTo } = Object.assign({}, defaults, options);
|
|
13546
|
-
const bounds =
|
|
13546
|
+
const bounds = measureBoundingBox3(object);
|
|
13547
13547
|
const offset = [0, 0, 0];
|
|
13548
13548
|
if (axes[0]) offset[0] = relativeTo[0] - (bounds[0][0] + (bounds[1][0] - bounds[0][0]) / 2);
|
|
13549
13549
|
if (axes[1]) offset[1] = relativeTo[1] - (bounds[0][1] + (bounds[1][1] - bounds[0][1]) / 2);
|
|
@@ -13564,7 +13564,7 @@ var require_center = __commonJS({
|
|
|
13564
13564
|
const results = objects.map((object) => {
|
|
13565
13565
|
if (path2.isA(object)) return centerGeometry(options, object);
|
|
13566
13566
|
if (geom2.isA(object)) return centerGeometry(options, object);
|
|
13567
|
-
if (
|
|
13567
|
+
if (geom34.isA(object)) return centerGeometry(options, object);
|
|
13568
13568
|
return object;
|
|
13569
13569
|
});
|
|
13570
13570
|
return results.length === 1 ? results[0] : results;
|
|
@@ -13588,7 +13588,7 @@ var require_scale4 = __commonJS({
|
|
|
13588
13588
|
var flatten = require_flatten();
|
|
13589
13589
|
var mat4 = require_mat4();
|
|
13590
13590
|
var geom2 = require_geom2();
|
|
13591
|
-
var
|
|
13591
|
+
var geom34 = require_geom3();
|
|
13592
13592
|
var path2 = require_path2();
|
|
13593
13593
|
var scale = (factors, ...objects) => {
|
|
13594
13594
|
if (!Array.isArray(factors)) throw new Error("factors must be an array");
|
|
@@ -13601,7 +13601,7 @@ var require_scale4 = __commonJS({
|
|
|
13601
13601
|
const results = objects.map((object) => {
|
|
13602
13602
|
if (path2.isA(object)) return path2.transform(matrix, object);
|
|
13603
13603
|
if (geom2.isA(object)) return geom2.transform(matrix, object);
|
|
13604
|
-
if (
|
|
13604
|
+
if (geom34.isA(object)) return geom34.transform(matrix, object);
|
|
13605
13605
|
return object;
|
|
13606
13606
|
});
|
|
13607
13607
|
return results.length === 1 ? results[0] : results;
|
|
@@ -13624,7 +13624,7 @@ var require_transform12 = __commonJS({
|
|
|
13624
13624
|
"use strict";
|
|
13625
13625
|
var flatten = require_flatten();
|
|
13626
13626
|
var geom2 = require_geom2();
|
|
13627
|
-
var
|
|
13627
|
+
var geom34 = require_geom3();
|
|
13628
13628
|
var path2 = require_path2();
|
|
13629
13629
|
var transform = (matrix, ...objects) => {
|
|
13630
13630
|
objects = flatten(objects);
|
|
@@ -13632,7 +13632,7 @@ var require_transform12 = __commonJS({
|
|
|
13632
13632
|
const results = objects.map((object) => {
|
|
13633
13633
|
if (path2.isA(object)) return path2.transform(matrix, object);
|
|
13634
13634
|
if (geom2.isA(object)) return geom2.transform(matrix, object);
|
|
13635
|
-
if (
|
|
13635
|
+
if (geom34.isA(object)) return geom34.transform(matrix, object);
|
|
13636
13636
|
return object;
|
|
13637
13637
|
});
|
|
13638
13638
|
return results.length === 1 ? results[0] : results;
|
|
@@ -15582,11 +15582,99 @@ var filterCutoutsForBoard = (cutouts, board) => {
|
|
|
15582
15582
|
};
|
|
15583
15583
|
|
|
15584
15584
|
// lib/utils/pcb-board-geometry.ts
|
|
15585
|
-
var
|
|
15585
|
+
var geom32 = __toESM(require_geom3(), 1);
|
|
15586
15586
|
var import_extrusions2 = __toESM(require_extrusions(), 1);
|
|
15587
|
-
var
|
|
15587
|
+
var import_transforms3 = __toESM(require_transforms(), 1);
|
|
15588
15588
|
var import_primitives2 = __toESM(require_primitives(), 1);
|
|
15589
15589
|
|
|
15590
|
+
// lib/utils/cut-board-mesh-outside-board-boundary.ts
|
|
15591
|
+
var geom3 = __toESM(require_geom3(), 1);
|
|
15592
|
+
var import_measureBoundingBox = __toESM(require_measureBoundingBox2(), 1);
|
|
15593
|
+
var import_booleans2 = __toESM(require_booleans(), 1);
|
|
15594
|
+
var import_transforms2 = __toESM(require_transforms(), 1);
|
|
15595
|
+
|
|
15596
|
+
// lib/utils/batched-union.ts
|
|
15597
|
+
var import_booleans = __toESM(require_booleans(), 1);
|
|
15598
|
+
var batchedUnion = (geoms, batchSize = 50) => {
|
|
15599
|
+
if (geoms.length === 0) {
|
|
15600
|
+
throw new Error("Cannot union empty array");
|
|
15601
|
+
}
|
|
15602
|
+
if (geoms.length === 1) {
|
|
15603
|
+
return geoms[0];
|
|
15604
|
+
}
|
|
15605
|
+
let results = [...geoms];
|
|
15606
|
+
while (results.length > 1) {
|
|
15607
|
+
const newResults = [];
|
|
15608
|
+
for (let i = 0; i < results.length; i += batchSize) {
|
|
15609
|
+
const batch = results.slice(i, i + batchSize);
|
|
15610
|
+
if (batch.length === 1) {
|
|
15611
|
+
newResults.push(batch[0]);
|
|
15612
|
+
} else {
|
|
15613
|
+
newResults.push((0, import_booleans.union)(...batch));
|
|
15614
|
+
}
|
|
15615
|
+
}
|
|
15616
|
+
results = newResults;
|
|
15617
|
+
}
|
|
15618
|
+
return results[0];
|
|
15619
|
+
};
|
|
15620
|
+
|
|
15621
|
+
// lib/utils/cut-board-mesh-outside-board-boundary.ts
|
|
15622
|
+
var cutBoardMeshOutsideBoardBoundary = ({
|
|
15623
|
+
board,
|
|
15624
|
+
center,
|
|
15625
|
+
thickness,
|
|
15626
|
+
holes,
|
|
15627
|
+
platedHoles,
|
|
15628
|
+
cutouts,
|
|
15629
|
+
segments
|
|
15630
|
+
}) => {
|
|
15631
|
+
let boardGeom = createBoardOutlineGeom(board, center, thickness);
|
|
15632
|
+
const subtractGeoms = [
|
|
15633
|
+
...createHoleGeoms(center, thickness, holes, platedHoles, segments),
|
|
15634
|
+
...createCutoutGeoms(center, thickness, cutouts, segments)
|
|
15635
|
+
];
|
|
15636
|
+
if (subtractGeoms.length > 0) {
|
|
15637
|
+
boardGeom = (0, import_booleans2.subtract)(boardGeom, batchedUnion(subtractGeoms));
|
|
15638
|
+
}
|
|
15639
|
+
boardGeom = (0, import_transforms2.rotateX)(-Math.PI / 2, boardGeom);
|
|
15640
|
+
const polygons = geom3.toPolygons(boardGeom);
|
|
15641
|
+
return {
|
|
15642
|
+
triangles: geom3ToTriangles(boardGeom, polygons),
|
|
15643
|
+
boundingBox: createBoundingBox((0, import_measureBoundingBox.default)(boardGeom))
|
|
15644
|
+
};
|
|
15645
|
+
};
|
|
15646
|
+
|
|
15647
|
+
// lib/utils/has-boundary-crossing-loops.ts
|
|
15648
|
+
var LOOP_CONTAINMENT_EPSILON = 1e-8;
|
|
15649
|
+
var hasBoundaryCrossingLoops = (outerLoop, innerLoops) => {
|
|
15650
|
+
return innerLoops.some(
|
|
15651
|
+
(loop) => loop.some((point) => !isPointStrictlyInsideLoop(point, outerLoop))
|
|
15652
|
+
);
|
|
15653
|
+
};
|
|
15654
|
+
var isPointStrictlyInsideLoop = (point, loop) => {
|
|
15655
|
+
let inside = false;
|
|
15656
|
+
for (let i = 0, j = loop.length - 1; i < loop.length; j = i++) {
|
|
15657
|
+
const a = loop[i];
|
|
15658
|
+
const b = loop[j];
|
|
15659
|
+
if (isPointOnSegment(point, a, b)) {
|
|
15660
|
+
return false;
|
|
15661
|
+
}
|
|
15662
|
+
const intersects = a.y > point.y !== b.y > point.y && point.x < (b.x - a.x) * (point.y - a.y) / (b.y - a.y) + a.x;
|
|
15663
|
+
if (intersects) {
|
|
15664
|
+
inside = !inside;
|
|
15665
|
+
}
|
|
15666
|
+
}
|
|
15667
|
+
return inside;
|
|
15668
|
+
};
|
|
15669
|
+
var isPointOnSegment = (point, a, b) => {
|
|
15670
|
+
const cross2 = (point.y - a.y) * (b.x - a.x) - (point.x - a.x) * (b.y - a.y);
|
|
15671
|
+
if (Math.abs(cross2) > LOOP_CONTAINMENT_EPSILON) return false;
|
|
15672
|
+
const dot2 = (point.x - a.x) * (b.x - a.x) + (point.y - a.y) * (b.y - a.y);
|
|
15673
|
+
if (dot2 < -LOOP_CONTAINMENT_EPSILON) return false;
|
|
15674
|
+
const squaredLength = (b.x - a.x) ** 2 + (b.y - a.y) ** 2;
|
|
15675
|
+
return dot2 <= squaredLength + LOOP_CONTAINMENT_EPSILON;
|
|
15676
|
+
};
|
|
15677
|
+
|
|
15590
15678
|
// lib/utils/geometry-loops.ts
|
|
15591
15679
|
var POINT_EPSILON = 1e-8;
|
|
15592
15680
|
var RADIUS_EPSILON = 1e-4;
|
|
@@ -16069,12 +16157,12 @@ var createBoardOutlineGeom = (board, center, thickness) => {
|
|
|
16069
16157
|
}
|
|
16070
16158
|
const shape2d = (0, import_primitives2.polygon)({ points: outlinePoints });
|
|
16071
16159
|
let geom2 = (0, import_extrusions2.extrudeLinear)({ height: thickness }, shape2d);
|
|
16072
|
-
geom2 = (0,
|
|
16160
|
+
geom2 = (0, import_transforms3.translate)([0, 0, -thickness / 2], geom2);
|
|
16073
16161
|
return geom2;
|
|
16074
16162
|
}
|
|
16075
16163
|
const baseRect = (0, import_primitives2.rectangle)({ size: [board.width, board.height] });
|
|
16076
16164
|
let geom = (0, import_extrusions2.extrudeLinear)({ height: thickness }, baseRect);
|
|
16077
|
-
geom = (0,
|
|
16165
|
+
geom = (0, import_transforms3.translate)([0, 0, -thickness / 2], geom);
|
|
16078
16166
|
return geom;
|
|
16079
16167
|
};
|
|
16080
16168
|
var createPillHoleWithSegments = (x, y, width, height, thickness, rotationRad = 0, segments = DEFAULT_QUALITY_MODE_SEGMENTS) => {
|
|
@@ -16087,11 +16175,11 @@ var createPillHoleWithSegments = (x, y, width, height, thickness, rotationRad =
|
|
|
16087
16175
|
segments
|
|
16088
16176
|
});
|
|
16089
16177
|
let hole3d = (0, import_extrusions2.extrudeLinear)({ height: thickness + 1 }, hole2d);
|
|
16090
|
-
hole3d = (0,
|
|
16178
|
+
hole3d = (0, import_transforms3.translate)([0, 0, -(thickness + 1) / 2], hole3d);
|
|
16091
16179
|
if (rotationRad !== 0) {
|
|
16092
|
-
hole3d = (0,
|
|
16180
|
+
hole3d = (0, import_transforms3.rotateZ)(rotationRad, hole3d);
|
|
16093
16181
|
}
|
|
16094
|
-
return (0,
|
|
16182
|
+
return (0, import_transforms3.translate)([x, y, 0], hole3d);
|
|
16095
16183
|
};
|
|
16096
16184
|
var createHoleGeoms = (boardCenter, thickness, holes = [], platedHoles = [], segments = DEFAULT_QUALITY_MODE_SEGMENTS) => {
|
|
16097
16185
|
const holeGeoms = [];
|
|
@@ -16179,7 +16267,7 @@ var createHoleGeoms = (boardCenter, thickness, holes = [], platedHoles = [], seg
|
|
|
16179
16267
|
return holeGeoms;
|
|
16180
16268
|
};
|
|
16181
16269
|
var geom3ToTriangles = (geometry, polygons) => {
|
|
16182
|
-
const sourcePolygons = polygons ??
|
|
16270
|
+
const sourcePolygons = polygons ?? geom32.toPolygons(geometry);
|
|
16183
16271
|
const triangles = [];
|
|
16184
16272
|
for (const poly of sourcePolygons) {
|
|
16185
16273
|
if (!poly || poly.vertices.length < 3) continue;
|
|
@@ -16250,6 +16338,17 @@ var createBoardMesh = (board, options) => {
|
|
|
16250
16338
|
segments
|
|
16251
16339
|
})
|
|
16252
16340
|
];
|
|
16341
|
+
if (hasBoundaryCrossingLoops(outerLoop, holeLoops)) {
|
|
16342
|
+
return cutBoardMeshOutsideBoardBoundary({
|
|
16343
|
+
board,
|
|
16344
|
+
center,
|
|
16345
|
+
thickness,
|
|
16346
|
+
holes,
|
|
16347
|
+
platedHoles,
|
|
16348
|
+
cutouts,
|
|
16349
|
+
segments
|
|
16350
|
+
});
|
|
16351
|
+
}
|
|
16253
16352
|
return buildBoardMeshFromLoops({ outerLoop, holeLoops, thickness });
|
|
16254
16353
|
};
|
|
16255
16354
|
var createBoardOuterLoop = (board, center) => {
|
|
@@ -16273,37 +16372,10 @@ var createBoardOuterLoop = (board, center) => {
|
|
|
16273
16372
|
};
|
|
16274
16373
|
|
|
16275
16374
|
// lib/utils/pcb-panel-geometry.ts
|
|
16276
|
-
var
|
|
16277
|
-
var
|
|
16278
|
-
var
|
|
16279
|
-
var
|
|
16280
|
-
|
|
16281
|
-
// lib/utils/batched-union.ts
|
|
16282
|
-
var import_booleans = __toESM(require_booleans(), 1);
|
|
16283
|
-
var batchedUnion = (geoms, batchSize = 50) => {
|
|
16284
|
-
if (geoms.length === 0) {
|
|
16285
|
-
throw new Error("Cannot union empty array");
|
|
16286
|
-
}
|
|
16287
|
-
if (geoms.length === 1) {
|
|
16288
|
-
return geoms[0];
|
|
16289
|
-
}
|
|
16290
|
-
let results = [...geoms];
|
|
16291
|
-
while (results.length > 1) {
|
|
16292
|
-
const newResults = [];
|
|
16293
|
-
for (let i = 0; i < results.length; i += batchSize) {
|
|
16294
|
-
const batch = results.slice(i, i + batchSize);
|
|
16295
|
-
if (batch.length === 1) {
|
|
16296
|
-
newResults.push(batch[0]);
|
|
16297
|
-
} else {
|
|
16298
|
-
newResults.push((0, import_booleans.union)(...batch));
|
|
16299
|
-
}
|
|
16300
|
-
}
|
|
16301
|
-
results = newResults;
|
|
16302
|
-
}
|
|
16303
|
-
return results[0];
|
|
16304
|
-
};
|
|
16305
|
-
|
|
16306
|
-
// lib/utils/pcb-panel-geometry.ts
|
|
16375
|
+
var geom33 = __toESM(require_geom3(), 1);
|
|
16376
|
+
var import_measureBoundingBox2 = __toESM(require_measureBoundingBox2(), 1);
|
|
16377
|
+
var import_booleans3 = __toESM(require_booleans(), 1);
|
|
16378
|
+
var import_transforms4 = __toESM(require_transforms(), 1);
|
|
16307
16379
|
var createPanelMesh = (panel, options) => {
|
|
16308
16380
|
const { thickness, holes = [], platedHoles = [], cutouts = [] } = options;
|
|
16309
16381
|
const drillQuality = options.drillQuality ?? "fast";
|
|
@@ -16322,12 +16394,12 @@ var createPanelMesh = (panel, options) => {
|
|
|
16322
16394
|
const subtractGeoms = [...holeGeoms, ...cutoutGeoms];
|
|
16323
16395
|
if (subtractGeoms.length > 0) {
|
|
16324
16396
|
const unifiedHoles = batchedUnion(subtractGeoms);
|
|
16325
|
-
panelGeom = (0,
|
|
16397
|
+
panelGeom = (0, import_booleans3.subtract)(panelGeom, unifiedHoles);
|
|
16326
16398
|
}
|
|
16327
|
-
panelGeom = (0,
|
|
16328
|
-
const polygons =
|
|
16399
|
+
panelGeom = (0, import_transforms4.rotateX)(-Math.PI / 2, panelGeom);
|
|
16400
|
+
const polygons = geom33.toPolygons(panelGeom);
|
|
16329
16401
|
const triangles = geom3ToTriangles(panelGeom, polygons);
|
|
16330
|
-
const bboxValues = (0,
|
|
16402
|
+
const bboxValues = (0, import_measureBoundingBox2.default)(panelGeom);
|
|
16331
16403
|
const boundingBox = createBoundingBox(bboxValues);
|
|
16332
16404
|
return {
|
|
16333
16405
|
triangles,
|