@tscircuit/3d-viewer 0.0.530 → 0.0.531
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 -5
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -28769,7 +28769,7 @@ import * as THREE16 from "three";
|
|
|
28769
28769
|
// package.json
|
|
28770
28770
|
var package_default = {
|
|
28771
28771
|
name: "@tscircuit/3d-viewer",
|
|
28772
|
-
version: "0.0.
|
|
28772
|
+
version: "0.0.530",
|
|
28773
28773
|
main: "./dist/index.js",
|
|
28774
28774
|
module: "./dist/index.js",
|
|
28775
28775
|
type: "module",
|
|
@@ -31916,10 +31916,43 @@ function createPanelOutlineTextureForLayer({
|
|
|
31916
31916
|
// src/utils/trace-texture.ts
|
|
31917
31917
|
import * as THREE21 from "three";
|
|
31918
31918
|
import { CircuitToCanvasDrawer } from "circuit-to-canvas";
|
|
31919
|
-
import { su as su7 } from "@tscircuit/circuit-json-util";
|
|
31919
|
+
import { getElementRenderLayers, su as su7 } from "@tscircuit/circuit-json-util";
|
|
31920
|
+
|
|
31921
|
+
// src/utils/trace-layer-segments.ts
|
|
31920
31922
|
function isWireRoutePoint(point) {
|
|
31921
31923
|
return point && point.route_type === "wire" && typeof point.layer === "string" && typeof point.width === "number";
|
|
31922
31924
|
}
|
|
31925
|
+
function splitTraceIntoLayerSegments(trace, layer) {
|
|
31926
|
+
const segments = [];
|
|
31927
|
+
let currentRoute = [];
|
|
31928
|
+
const pushCurrentSegment = () => {
|
|
31929
|
+
if (currentRoute.length < 2) {
|
|
31930
|
+
currentRoute = [];
|
|
31931
|
+
return;
|
|
31932
|
+
}
|
|
31933
|
+
segments.push({
|
|
31934
|
+
...trace,
|
|
31935
|
+
pcb_trace_id: `${trace.pcb_trace_id}_${layer}_${segments.length}`,
|
|
31936
|
+
route: currentRoute
|
|
31937
|
+
});
|
|
31938
|
+
currentRoute = [];
|
|
31939
|
+
};
|
|
31940
|
+
for (const point of trace.route) {
|
|
31941
|
+
if (!isWireRoutePoint(point)) {
|
|
31942
|
+
pushCurrentSegment();
|
|
31943
|
+
continue;
|
|
31944
|
+
}
|
|
31945
|
+
if (point.layer !== layer) {
|
|
31946
|
+
pushCurrentSegment();
|
|
31947
|
+
continue;
|
|
31948
|
+
}
|
|
31949
|
+
currentRoute.push(point);
|
|
31950
|
+
}
|
|
31951
|
+
pushCurrentSegment();
|
|
31952
|
+
return segments;
|
|
31953
|
+
}
|
|
31954
|
+
|
|
31955
|
+
// src/utils/trace-texture.ts
|
|
31923
31956
|
function createTraceTextureForLayer({
|
|
31924
31957
|
layer,
|
|
31925
31958
|
circuitJson,
|
|
@@ -31931,9 +31964,7 @@ function createTraceTextureForLayer({
|
|
|
31931
31964
|
const pcbVias = su7(circuitJson).pcb_via.list();
|
|
31932
31965
|
const pcbPlatedHoles = su7(circuitJson).pcb_plated_hole.list();
|
|
31933
31966
|
const pcbRenderLayer = layer === "top" ? "top_copper" : "bottom_copper";
|
|
31934
|
-
const tracesOnLayer = pcbTraces.filter(
|
|
31935
|
-
(t) => t.route.some((p) => isWireRoutePoint(p) && p.layer === layer)
|
|
31936
|
-
);
|
|
31967
|
+
const tracesOnLayer = pcbTraces.filter((trace) => getElementRenderLayers(trace).includes(pcbRenderLayer)).flatMap((trace) => splitTraceIntoLayerSegments(trace, layer));
|
|
31937
31968
|
if (tracesOnLayer.length === 0) return null;
|
|
31938
31969
|
const platedHolesOnLayer = pcbPlatedHoles.filter(
|
|
31939
31970
|
(hole) => hole.layers.includes(layer)
|