@tscircuit/3d-viewer 0.0.471 → 0.0.472
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 +36 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -28509,7 +28509,7 @@ import * as THREE15 from "three";
|
|
|
28509
28509
|
// package.json
|
|
28510
28510
|
var package_default = {
|
|
28511
28511
|
name: "@tscircuit/3d-viewer",
|
|
28512
|
-
version: "0.0.
|
|
28512
|
+
version: "0.0.471",
|
|
28513
28513
|
main: "./dist/index.js",
|
|
28514
28514
|
module: "./dist/index.js",
|
|
28515
28515
|
type: "module",
|
|
@@ -32420,6 +32420,7 @@ function createSilkscreenTextureForLayer({
|
|
|
32420
32420
|
const pcbSilkscreenRects = su6(circuitJson).pcb_silkscreen_rect.list();
|
|
32421
32421
|
const pcbSilkscreenCircles = su6(circuitJson).pcb_silkscreen_circle.list();
|
|
32422
32422
|
const pcbFabricationNoteRects = su6(circuitJson).pcb_fabrication_note_rect.list();
|
|
32423
|
+
const pcbNoteLines = su6(circuitJson).pcb_note_line.list();
|
|
32423
32424
|
const textsOnLayer = pcbSilkscreenTexts.filter((t) => t.layer === layer);
|
|
32424
32425
|
const pathsOnLayer = pcbSilkscreenPaths.filter((p) => p.layer === layer);
|
|
32425
32426
|
const linesOnLayer = pcbSilkscreenLines.filter((l) => l.layer === layer);
|
|
@@ -32428,7 +32429,10 @@ function createSilkscreenTextureForLayer({
|
|
|
32428
32429
|
const fabricationNoteRectsOnLayer = pcbFabricationNoteRects.filter(
|
|
32429
32430
|
(r) => r.layer === layer
|
|
32430
32431
|
);
|
|
32431
|
-
|
|
32432
|
+
const noteLinesOnLayer = pcbNoteLines.filter(
|
|
32433
|
+
(l) => l.layer === layer
|
|
32434
|
+
);
|
|
32435
|
+
if (textsOnLayer.length === 0 && pathsOnLayer.length === 0 && linesOnLayer.length === 0 && rectsOnLayer.length === 0 && circlesOnLayer.length === 0 && fabricationNoteRectsOnLayer.length === 0 && noteLinesOnLayer.length === 0) {
|
|
32432
32436
|
return null;
|
|
32433
32437
|
}
|
|
32434
32438
|
const canvas = document.createElement("canvas");
|
|
@@ -32459,6 +32463,36 @@ function createSilkscreenTextureForLayer({
|
|
|
32459
32463
|
ctx.lineTo(canvasXFromPcb(endXmm), canvasYFromPcb(endYmm));
|
|
32460
32464
|
ctx.stroke();
|
|
32461
32465
|
});
|
|
32466
|
+
noteLinesOnLayer.forEach((lineEl) => {
|
|
32467
|
+
const startXmm = parseDimensionToMm(lineEl.x1) ?? 0;
|
|
32468
|
+
const startYmm = parseDimensionToMm(lineEl.y1) ?? 0;
|
|
32469
|
+
const endXmm = parseDimensionToMm(lineEl.x2) ?? 0;
|
|
32470
|
+
const endYmm = parseDimensionToMm(lineEl.y2) ?? 0;
|
|
32471
|
+
if (startXmm === endXmm && startYmm === endYmm) return;
|
|
32472
|
+
ctx.save();
|
|
32473
|
+
let strokeColor = silkscreenColor;
|
|
32474
|
+
if (lineEl.color) {
|
|
32475
|
+
strokeColor = parseFabricationNoteColor(lineEl.color);
|
|
32476
|
+
} else {
|
|
32477
|
+
strokeColor = "rgb(255, 243, 204)";
|
|
32478
|
+
}
|
|
32479
|
+
ctx.strokeStyle = strokeColor;
|
|
32480
|
+
ctx.beginPath();
|
|
32481
|
+
ctx.lineWidth = coerceDimensionToMm(lineEl.stroke_width, 0.1) * traceTextureResolution;
|
|
32482
|
+
ctx.lineCap = "round";
|
|
32483
|
+
const isDashed = lineEl.is_dashed ?? false;
|
|
32484
|
+
if (isDashed) {
|
|
32485
|
+
const dashLength = Math.max(ctx.lineWidth * 2, 1);
|
|
32486
|
+
ctx.setLineDash([dashLength, dashLength]);
|
|
32487
|
+
}
|
|
32488
|
+
ctx.moveTo(canvasXFromPcb(startXmm), canvasYFromPcb(startYmm));
|
|
32489
|
+
ctx.lineTo(canvasXFromPcb(endXmm), canvasYFromPcb(endYmm));
|
|
32490
|
+
ctx.stroke();
|
|
32491
|
+
if (isDashed) {
|
|
32492
|
+
ctx.setLineDash([]);
|
|
32493
|
+
}
|
|
32494
|
+
ctx.restore();
|
|
32495
|
+
});
|
|
32462
32496
|
pathsOnLayer.forEach((path) => {
|
|
32463
32497
|
if (path.route.length < 2) return;
|
|
32464
32498
|
ctx.beginPath();
|