@tscircuit/3d-viewer 0.0.489 → 0.0.490
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 +68 -9
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -7502,7 +7502,7 @@ var require_ellipse = __commonJS({
|
|
|
7502
7502
|
var geom2 = require_geom2();
|
|
7503
7503
|
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
7504
7504
|
var { isGTE, isNumberArray } = require_commonChecks();
|
|
7505
|
-
var
|
|
7505
|
+
var ellipse3 = (options) => {
|
|
7506
7506
|
const defaults = {
|
|
7507
7507
|
center: [0, 0],
|
|
7508
7508
|
radius: [1, 1],
|
|
@@ -7544,7 +7544,7 @@ var require_ellipse = __commonJS({
|
|
|
7544
7544
|
if (rotation2 < TAU) points.push(centerv);
|
|
7545
7545
|
return geom2.fromPoints(points);
|
|
7546
7546
|
};
|
|
7547
|
-
module.exports =
|
|
7547
|
+
module.exports = ellipse3;
|
|
7548
7548
|
}
|
|
7549
7549
|
});
|
|
7550
7550
|
|
|
@@ -7553,7 +7553,7 @@ var require_circle = __commonJS({
|
|
|
7553
7553
|
"node_modules/@jscad/modeling/src/primitives/circle.js"(exports, module) {
|
|
7554
7554
|
"use strict";
|
|
7555
7555
|
var { TAU } = require_constants();
|
|
7556
|
-
var
|
|
7556
|
+
var ellipse3 = require_ellipse();
|
|
7557
7557
|
var { isGTE } = require_commonChecks();
|
|
7558
7558
|
var circle = (options) => {
|
|
7559
7559
|
const defaults = {
|
|
@@ -7566,7 +7566,7 @@ var require_circle = __commonJS({
|
|
|
7566
7566
|
let { center, radius, startAngle, endAngle, segments } = Object.assign({}, defaults, options);
|
|
7567
7567
|
if (!isGTE(radius, 0)) throw new Error("radius must be positive");
|
|
7568
7568
|
radius = [radius, radius];
|
|
7569
|
-
return
|
|
7569
|
+
return ellipse3({ center, radius, startAngle, endAngle, segments });
|
|
7570
7570
|
};
|
|
7571
7571
|
module.exports = circle;
|
|
7572
7572
|
}
|
|
@@ -30825,7 +30825,7 @@ import * as THREE16 from "three";
|
|
|
30825
30825
|
// package.json
|
|
30826
30826
|
var package_default = {
|
|
30827
30827
|
name: "@tscircuit/3d-viewer",
|
|
30828
|
-
version: "0.0.
|
|
30828
|
+
version: "0.0.489",
|
|
30829
30829
|
main: "./dist/index.js",
|
|
30830
30830
|
module: "./dist/index.js",
|
|
30831
30831
|
type: "module",
|
|
@@ -30854,7 +30854,7 @@ var package_default = {
|
|
|
30854
30854
|
dependencies: {
|
|
30855
30855
|
"@jscad/regl-renderer": "^2.6.12",
|
|
30856
30856
|
"@jscad/stl-serializer": "^2.1.20",
|
|
30857
|
-
"circuit-to-canvas": "^0.0.
|
|
30857
|
+
"circuit-to-canvas": "^0.0.49",
|
|
30858
30858
|
"react-hot-toast": "^2.6.0",
|
|
30859
30859
|
three: "^0.165.0",
|
|
30860
30860
|
"three-stdlib": "^2.36.0",
|
|
@@ -30891,7 +30891,7 @@ var package_default = {
|
|
|
30891
30891
|
"react-use-gesture": "^9.1.3",
|
|
30892
30892
|
semver: "^7.7.0",
|
|
30893
30893
|
"strip-ansi": "^7.1.0",
|
|
30894
|
-
tscircuit: "^0.0.
|
|
30894
|
+
tscircuit: "^0.0.1141",
|
|
30895
30895
|
tsup: "^8.3.6",
|
|
30896
30896
|
typescript: "^5.7.3",
|
|
30897
30897
|
vite: "^7.1.5",
|
|
@@ -33407,6 +33407,41 @@ var BoardGeomBuilder = class {
|
|
|
33407
33407
|
this.platedHoleGeoms = this.platedHoleGeoms.map(
|
|
33408
33408
|
(phg) => (0, import_colors3.colorize)(colors.copper, (0, import_booleans5.subtract)(phg, copperPill))
|
|
33409
33409
|
);
|
|
33410
|
+
} else if (hole.hole_shape === "oval") {
|
|
33411
|
+
const holeWidth = hole.hole_width;
|
|
33412
|
+
const holeHeight = hole.hole_height;
|
|
33413
|
+
const ellipseGeom = (0, import_transforms6.translate)(
|
|
33414
|
+
[hole.x, hole.y, 0],
|
|
33415
|
+
(0, import_transforms6.translate)(
|
|
33416
|
+
[0, 0, -holeDepth / 2],
|
|
33417
|
+
(0, import_extrusions4.extrudeLinear)(
|
|
33418
|
+
{ height: holeDepth },
|
|
33419
|
+
(0, import_primitives7.ellipse)({ radius: [holeWidth / 2, holeHeight / 2] })
|
|
33420
|
+
)
|
|
33421
|
+
)
|
|
33422
|
+
);
|
|
33423
|
+
this.boardGeom = (0, import_booleans5.subtract)(this.boardGeom, ellipseGeom);
|
|
33424
|
+
this.padGeoms = this.padGeoms.map(
|
|
33425
|
+
(pg) => (0, import_colors3.colorize)(colors.copper, (0, import_booleans5.subtract)(pg, ellipseGeom))
|
|
33426
|
+
);
|
|
33427
|
+
const copperEllipseGeom = (0, import_transforms6.translate)(
|
|
33428
|
+
[hole.x, hole.y, 0],
|
|
33429
|
+
(0, import_transforms6.translate)(
|
|
33430
|
+
[0, 0, -holeDepth / 2],
|
|
33431
|
+
(0, import_extrusions4.extrudeLinear)(
|
|
33432
|
+
{ height: holeDepth },
|
|
33433
|
+
(0, import_primitives7.ellipse)({
|
|
33434
|
+
radius: [
|
|
33435
|
+
holeWidth / 2 - copperInset,
|
|
33436
|
+
holeHeight / 2 - copperInset
|
|
33437
|
+
]
|
|
33438
|
+
})
|
|
33439
|
+
)
|
|
33440
|
+
)
|
|
33441
|
+
);
|
|
33442
|
+
this.platedHoleGeoms = this.platedHoleGeoms.map(
|
|
33443
|
+
(phg) => (0, import_colors3.colorize)(colors.copper, (0, import_booleans5.subtract)(phg, copperEllipseGeom))
|
|
33444
|
+
);
|
|
33410
33445
|
}
|
|
33411
33446
|
}
|
|
33412
33447
|
processPad(pad2) {
|
|
@@ -34288,6 +34323,14 @@ function createSoldermaskTextureForLayer({
|
|
|
34288
34323
|
);
|
|
34289
34324
|
ctx.fill();
|
|
34290
34325
|
}
|
|
34326
|
+
} else if (holeShape === "oval" && typeof hole.hole_width === "number" && typeof hole.hole_height === "number") {
|
|
34327
|
+
const width10 = hole.hole_width * traceTextureResolution;
|
|
34328
|
+
const height10 = hole.hole_height * traceTextureResolution;
|
|
34329
|
+
const radiusX = width10 / 2;
|
|
34330
|
+
const radiusY = height10 / 2;
|
|
34331
|
+
ctx.beginPath();
|
|
34332
|
+
ctx.ellipse(canvasX, canvasY, radiusX, radiusY, 0, 0, 2 * Math.PI);
|
|
34333
|
+
ctx.fill();
|
|
34291
34334
|
}
|
|
34292
34335
|
});
|
|
34293
34336
|
const pcbCopperPours = su5(circuitJson).pcb_copper_pour.list();
|
|
@@ -36355,6 +36398,21 @@ function processNonPlatedHolesForManifold(Manifold, circuitJson, pcbThickness, m
|
|
|
36355
36398
|
const translatedPillDrill = pillDrillOp.translate([hole.x, hole.y, 0]);
|
|
36356
36399
|
manifoldInstancesForCleanup.push(translatedPillDrill);
|
|
36357
36400
|
nonPlatedHoleBoardDrills.push(translatedPillDrill);
|
|
36401
|
+
} else if (hole.hole_shape === "oval") {
|
|
36402
|
+
const holeW = hole.hole_width;
|
|
36403
|
+
const holeH = hole.hole_height;
|
|
36404
|
+
const drillDepth = pcbThickness * 1.2;
|
|
36405
|
+
const ovalDrillOp = Manifold.cylinder(
|
|
36406
|
+
drillDepth,
|
|
36407
|
+
1,
|
|
36408
|
+
1,
|
|
36409
|
+
SMOOTH_CIRCLE_SEGMENTS,
|
|
36410
|
+
true
|
|
36411
|
+
).scale([holeW / 2, holeH / 2, 1]);
|
|
36412
|
+
manifoldInstancesForCleanup.push(ovalDrillOp);
|
|
36413
|
+
const translatedOvalDrill = ovalDrillOp.translate([hole.x, hole.y, 0]);
|
|
36414
|
+
manifoldInstancesForCleanup.push(translatedOvalDrill);
|
|
36415
|
+
nonPlatedHoleBoardDrills.push(translatedOvalDrill);
|
|
36358
36416
|
}
|
|
36359
36417
|
});
|
|
36360
36418
|
return { nonPlatedHoleBoardDrills };
|
|
@@ -37189,6 +37247,7 @@ function createCopperPourTextureForLayer({
|
|
|
37189
37247
|
const copperPours = circuitJson.filter(
|
|
37190
37248
|
(e) => e.type === "pcb_copper_pour"
|
|
37191
37249
|
);
|
|
37250
|
+
const pcbRenderLayer2 = layer === "top" ? "top_copper" : "bottom_copper";
|
|
37192
37251
|
const poursOnLayer = copperPours.filter((p) => p.layer === layer);
|
|
37193
37252
|
if (poursOnLayer.length === 0) return null;
|
|
37194
37253
|
const boardOutlineBounds = calculateOutlineBounds(boardData);
|
|
@@ -37244,7 +37303,7 @@ function createCopperPourTextureForLayer({
|
|
|
37244
37303
|
}
|
|
37245
37304
|
}
|
|
37246
37305
|
});
|
|
37247
|
-
drawer.drawElements(coveredPours, { layers: [
|
|
37306
|
+
drawer.drawElements(coveredPours, { layers: [pcbRenderLayer2] });
|
|
37248
37307
|
}
|
|
37249
37308
|
if (uncoveredPours.length > 0) {
|
|
37250
37309
|
drawer.configure({
|
|
@@ -37261,7 +37320,7 @@ function createCopperPourTextureForLayer({
|
|
|
37261
37320
|
}
|
|
37262
37321
|
}
|
|
37263
37322
|
});
|
|
37264
|
-
drawer.drawElements(uncoveredPours, { layers: [
|
|
37323
|
+
drawer.drawElements(uncoveredPours, { layers: [pcbRenderLayer2] });
|
|
37265
37324
|
}
|
|
37266
37325
|
}
|
|
37267
37326
|
for (const pour of brepPours) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tscircuit/3d-viewer",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.490",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@jscad/regl-renderer": "^2.6.12",
|
|
31
31
|
"@jscad/stl-serializer": "^2.1.20",
|
|
32
|
-
"circuit-to-canvas": "^0.0.
|
|
32
|
+
"circuit-to-canvas": "^0.0.49",
|
|
33
33
|
"react-hot-toast": "^2.6.0",
|
|
34
34
|
"three": "^0.165.0",
|
|
35
35
|
"three-stdlib": "^2.36.0",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"react-use-gesture": "^9.1.3",
|
|
67
67
|
"semver": "^7.7.0",
|
|
68
68
|
"strip-ansi": "^7.1.0",
|
|
69
|
-
"tscircuit": "^0.0.
|
|
69
|
+
"tscircuit": "^0.0.1141",
|
|
70
70
|
"tsup": "^8.3.6",
|
|
71
71
|
"typescript": "^5.7.3",
|
|
72
72
|
"vite": "^7.1.5",
|