@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.
Files changed (2) hide show
  1. package/dist/index.js +36 -5
  2. 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.529",
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)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tscircuit/3d-viewer",
3
- "version": "0.0.530",
3
+ "version": "0.0.531",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.js",
6
6
  "type": "module",