@tscircuit/3d-viewer 0.0.479 → 0.0.481

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 +47 -124
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -29492,7 +29492,7 @@ import * as THREE16 from "three";
29492
29492
  // package.json
29493
29493
  var package_default = {
29494
29494
  name: "@tscircuit/3d-viewer",
29495
- version: "0.0.478",
29495
+ version: "0.0.480",
29496
29496
  main: "./dist/index.js",
29497
29497
  module: "./dist/index.js",
29498
29498
  type: "module",
@@ -30712,6 +30712,7 @@ var MANIFOLD_Z_OFFSET = 1e-3;
30712
30712
  var SMOOTH_CIRCLE_SEGMENTS = 32;
30713
30713
  var DEFAULT_SMT_PAD_THICKNESS = 0.035;
30714
30714
  var TRACE_TEXTURE_RESOLUTION = 150;
30715
+ var FAUX_BOARD_OPACITY = 0.6;
30715
30716
  var boardMaterialColors = {
30716
30717
  fr1: colors.fr1Tan,
30717
30718
  fr4: colors.fr4Tan
@@ -31551,7 +31552,6 @@ var buildStateOrder = [
31551
31552
  "processing_plated_holes",
31552
31553
  "processing_holes",
31553
31554
  "processing_cutouts",
31554
- "processing_traces",
31555
31555
  "processing_vias",
31556
31556
  "finalizing",
31557
31557
  "done"
@@ -31569,7 +31569,6 @@ var BoardGeomBuilder = class {
31569
31569
  boardGeom = null;
31570
31570
  platedHoleGeoms = [];
31571
31571
  padGeoms = [];
31572
- traceGeoms = [];
31573
31572
  viaGeoms = [];
31574
31573
  // Combined with platedHoleGeoms
31575
31574
  copperPourGeoms = [];
@@ -31701,14 +31700,6 @@ var BoardGeomBuilder = class {
31701
31700
  this.goToNextState();
31702
31701
  }
31703
31702
  break;
31704
- case "processing_traces":
31705
- if (this.currentIndex < this.traces.length) {
31706
- this.processTrace(this.traces[this.currentIndex]);
31707
- this.currentIndex++;
31708
- } else {
31709
- this.goToNextState();
31710
- }
31711
- break;
31712
31703
  case "processing_vias":
31713
31704
  if (this.currentIndex < this.pcb_vias.length) {
31714
31705
  this.processVia(this.pcb_vias[this.currentIndex]);
@@ -32132,93 +32123,6 @@ var BoardGeomBuilder = class {
32132
32123
  this.padGeoms.push(padGeom);
32133
32124
  }
32134
32125
  }
32135
- processTrace(trace) {
32136
- const { route: mixedRoute } = trace;
32137
- if (mixedRoute.length < 2) return;
32138
- let currentSegmentPoints = [];
32139
- let currentLayer = null;
32140
- let currentWidth = 0.1;
32141
- const finishSegment = () => {
32142
- if (currentSegmentPoints.length >= 2 && currentLayer) {
32143
- const layerSign = currentLayer === "bottom" ? -1 : 1;
32144
- const traceOffset = BOARD_SURFACE_OFFSET.traces - 2e-3;
32145
- const zCenter = layerSign * this.ctx.pcbThickness / 2 + layerSign * traceOffset;
32146
- const linePath = (0, import_primitives7.line)(currentSegmentPoints);
32147
- const expandedPath = (0, import_expansions2.expand)(
32148
- { delta: currentWidth / 2, corners: "round" },
32149
- linePath
32150
- );
32151
- let traceGeom = (0, import_transforms6.translate)(
32152
- [0, 0, zCenter - M / 2],
32153
- (0, import_extrusions4.extrudeLinear)({ height: M }, expandedPath)
32154
- );
32155
- const startPointCoords = currentSegmentPoints[0];
32156
- const endPointCoords = currentSegmentPoints[currentSegmentPoints.length - 1];
32157
- const startHole = this.getHoleToCut(
32158
- startPointCoords[0],
32159
- startPointCoords[1]
32160
- );
32161
- if (startHole) {
32162
- const cuttingCylinder = (0, import_primitives7.cylinder)({
32163
- center: [startPointCoords[0], startPointCoords[1], zCenter],
32164
- radius: startHole.diameter / 2 + M,
32165
- height: M
32166
- });
32167
- traceGeom = (0, import_booleans5.subtract)(traceGeom, cuttingCylinder);
32168
- }
32169
- const endHole = this.getHoleToCut(endPointCoords[0], endPointCoords[1]);
32170
- if (endHole) {
32171
- const cuttingCylinder = (0, import_primitives7.cylinder)({
32172
- center: [endPointCoords[0], endPointCoords[1], zCenter],
32173
- radius: endHole.diameter / 2 + M,
32174
- height: M
32175
- });
32176
- traceGeom = (0, import_booleans5.subtract)(traceGeom, cuttingCylinder);
32177
- }
32178
- const tracesMaterialColor = tracesMaterialColors[this.board.material] ?? colors.fr4TracesWithoutMaskTan;
32179
- if (this.boardClipGeom) {
32180
- traceGeom = (0, import_booleans5.intersect)(this.boardClipGeom, traceGeom);
32181
- }
32182
- traceGeom = (0, import_colors3.colorize)(tracesMaterialColor, traceGeom);
32183
- this.traceGeoms.push(traceGeom);
32184
- }
32185
- currentSegmentPoints = [];
32186
- currentLayer = null;
32187
- };
32188
- for (let i = 0; i < mixedRoute.length; i++) {
32189
- const point2 = mixedRoute[i];
32190
- if (point2.route_type === "wire") {
32191
- if (currentLayer === null) {
32192
- currentLayer = point2.layer;
32193
- currentWidth = point2.width;
32194
- currentSegmentPoints.push([point2.x, point2.y]);
32195
- } else if (point2.layer === currentLayer) {
32196
- currentSegmentPoints.push([point2.x, point2.y]);
32197
- } else {
32198
- currentSegmentPoints.push([point2.x, point2.y]);
32199
- finishSegment();
32200
- currentLayer = point2.layer;
32201
- currentWidth = point2.width;
32202
- const prevPoint = mixedRoute[i - 1];
32203
- if (prevPoint) {
32204
- currentSegmentPoints.push([point2.x, point2.y]);
32205
- } else {
32206
- currentSegmentPoints.push([point2.x, point2.y]);
32207
- }
32208
- }
32209
- } else if (point2.route_type === "via") {
32210
- currentSegmentPoints.push([point2.x, point2.y]);
32211
- finishSegment();
32212
- const nextPoint = mixedRoute[i + 1];
32213
- if (nextPoint && nextPoint.route_type === "wire") {
32214
- currentLayer = nextPoint.layer;
32215
- currentWidth = nextPoint.width;
32216
- currentSegmentPoints.push([point2.x, point2.y]);
32217
- }
32218
- }
32219
- }
32220
- finishSegment();
32221
- }
32222
32126
  processVia(via) {
32223
32127
  if (!this.boardGeom) return;
32224
32128
  if (typeof via.outer_diameter === "number" && typeof via.hole_diameter === "number") {
@@ -32257,7 +32161,6 @@ var BoardGeomBuilder = class {
32257
32161
  this.boardGeom,
32258
32162
  ...this.platedHoleGeoms,
32259
32163
  ...this.padGeoms,
32260
- ...this.traceGeoms,
32261
32164
  ...this.viaGeoms,
32262
32165
  ...this.copperPourGeoms
32263
32166
  ];
@@ -34256,7 +34159,8 @@ function createPanelOutlineTextureForLayer({
34256
34159
  // src/three-components/JscadBoardTextures.tsx
34257
34160
  function JscadBoardTextures({
34258
34161
  circuitJson,
34259
- pcbThickness
34162
+ pcbThickness,
34163
+ isFaux = false
34260
34164
  }) {
34261
34165
  const { rootObject } = useThree();
34262
34166
  const { visibility } = useLayerVisibility();
@@ -34381,7 +34285,8 @@ function JscadBoardTextures({
34381
34285
  depthWrite,
34382
34286
  polygonOffset: usePolygonOffset,
34383
34287
  polygonOffsetFactor: usePolygonOffset ? -1 : 0,
34384
- polygonOffsetUnits: usePolygonOffset ? -1 : 0
34288
+ polygonOffsetUnits: usePolygonOffset ? -1 : 0,
34289
+ opacity: isFaux ? FAUX_BOARD_OPACITY : 1
34385
34290
  });
34386
34291
  const mesh = new THREE24.Mesh(planeGeom, material);
34387
34292
  mesh.position.set(
@@ -34729,7 +34634,8 @@ var CadViewerJscad = forwardRef3(
34729
34634
  JscadBoardTextures,
34730
34635
  {
34731
34636
  circuitJson: internalCircuitJson,
34732
- pcbThickness
34637
+ pcbThickness,
34638
+ isFaux: isFauxBoard
34733
34639
  }
34734
34640
  ),
34735
34641
  cad_components.map((cad_component2) => /* @__PURE__ */ jsx16(
@@ -36037,7 +35943,8 @@ function createTexturePlane(config, boardData) {
36037
35943
  isBottomLayer,
36038
35944
  textureType,
36039
35945
  usePolygonOffset = false,
36040
- renderOrder = 0
35946
+ renderOrder = 0,
35947
+ isFaux = false
36041
35948
  } = config;
36042
35949
  if (!texture) return null;
36043
35950
  const boardOutlineBounds = calculateOutlineBounds(boardData);
@@ -36053,7 +35960,8 @@ function createTexturePlane(config, boardData) {
36053
35960
  polygonOffset: usePolygonOffset,
36054
35961
  polygonOffsetFactor: usePolygonOffset ? -4 : 0,
36055
35962
  // Increased for better z-fighting prevention
36056
- polygonOffsetUnits: usePolygonOffset ? -4 : 0
35963
+ polygonOffsetUnits: usePolygonOffset ? -4 : 0,
35964
+ opacity: isFaux ? FAUX_BOARD_OPACITY : 1
36057
35965
  });
36058
35966
  const mesh = new THREE30.Mesh(planeGeom, material);
36059
35967
  mesh.position.set(
@@ -36068,7 +35976,7 @@ function createTexturePlane(config, boardData) {
36068
35976
  mesh.renderOrder = renderOrder;
36069
35977
  return mesh;
36070
35978
  }
36071
- function createTextureMeshes(textures, boardData, pcbThickness) {
35979
+ function createTextureMeshes(textures, boardData, pcbThickness, isFaux = false) {
36072
35980
  const meshes = [];
36073
35981
  if (!textures || !boardData || pcbThickness === null) return meshes;
36074
35982
  const topTraceMesh = createTexturePlane(
@@ -36079,8 +35987,9 @@ function createTextureMeshes(textures, boardData, pcbThickness) {
36079
35987
  isBottomLayer: false,
36080
35988
  textureType: "trace",
36081
35989
  usePolygonOffset: false,
36082
- renderOrder: 2
35990
+ renderOrder: 2,
36083
35991
  // Render after soldermask
35992
+ isFaux
36084
35993
  },
36085
35994
  boardData
36086
35995
  );
@@ -36092,8 +36001,9 @@ function createTextureMeshes(textures, boardData, pcbThickness) {
36092
36001
  isBottomLayer: false,
36093
36002
  textureType: "trace-with-mask",
36094
36003
  usePolygonOffset: false,
36095
- renderOrder: 2
36004
+ renderOrder: 2,
36096
36005
  // Render after soldermask
36006
+ isFaux
36097
36007
  },
36098
36008
  boardData
36099
36009
  );
@@ -36106,8 +36016,9 @@ function createTextureMeshes(textures, boardData, pcbThickness) {
36106
36016
  isBottomLayer: false,
36107
36017
  textureType: "silkscreen",
36108
36018
  usePolygonOffset: false,
36109
- renderOrder: 3
36019
+ renderOrder: 3,
36110
36020
  // Render after traces
36021
+ isFaux
36111
36022
  },
36112
36023
  boardData
36113
36024
  );
@@ -36120,8 +36031,9 @@ function createTextureMeshes(textures, boardData, pcbThickness) {
36120
36031
  isBottomLayer: true,
36121
36032
  textureType: "trace",
36122
36033
  usePolygonOffset: false,
36123
- renderOrder: 2
36034
+ renderOrder: 2,
36124
36035
  // Render after soldermask
36036
+ isFaux
36125
36037
  },
36126
36038
  boardData
36127
36039
  );
@@ -36133,8 +36045,9 @@ function createTextureMeshes(textures, boardData, pcbThickness) {
36133
36045
  isBottomLayer: true,
36134
36046
  textureType: "trace-with-mask",
36135
36047
  usePolygonOffset: false,
36136
- renderOrder: 2
36048
+ renderOrder: 2,
36137
36049
  // Render after soldermask
36050
+ isFaux
36138
36051
  },
36139
36052
  boardData
36140
36053
  );
@@ -36146,8 +36059,9 @@ function createTextureMeshes(textures, boardData, pcbThickness) {
36146
36059
  isBottomLayer: true,
36147
36060
  textureType: "silkscreen",
36148
36061
  usePolygonOffset: false,
36149
- renderOrder: 3
36062
+ renderOrder: 3,
36150
36063
  // Render after traces
36064
+ isFaux
36151
36065
  },
36152
36066
  boardData
36153
36067
  );
@@ -36161,8 +36075,9 @@ function createTextureMeshes(textures, boardData, pcbThickness) {
36161
36075
  textureType: "soldermask",
36162
36076
  usePolygonOffset: true,
36163
36077
  // Enable polygon offset
36164
- renderOrder: 1
36078
+ renderOrder: 1,
36165
36079
  // Render after board (renderOrder)
36080
+ isFaux
36166
36081
  },
36167
36082
  boardData
36168
36083
  );
@@ -36176,8 +36091,9 @@ function createTextureMeshes(textures, boardData, pcbThickness) {
36176
36091
  textureType: "soldermask",
36177
36092
  usePolygonOffset: true,
36178
36093
  // Enable polygon offset
36179
- renderOrder: 1
36094
+ renderOrder: 1,
36180
36095
  // Render after board (renderOrder)
36096
+ isFaux
36181
36097
  },
36182
36098
  boardData
36183
36099
  );
@@ -36189,8 +36105,9 @@ function createTextureMeshes(textures, boardData, pcbThickness) {
36189
36105
  isBottomLayer: false,
36190
36106
  textureType: "copper-text",
36191
36107
  usePolygonOffset: false,
36192
- renderOrder: 2
36108
+ renderOrder: 2,
36193
36109
  // Render after soldermask
36110
+ isFaux
36194
36111
  },
36195
36112
  boardData
36196
36113
  );
@@ -36202,8 +36119,9 @@ function createTextureMeshes(textures, boardData, pcbThickness) {
36202
36119
  isBottomLayer: true,
36203
36120
  textureType: "copper-text",
36204
36121
  usePolygonOffset: false,
36205
- renderOrder: 2
36122
+ renderOrder: 2,
36206
36123
  // Render after soldermask
36124
+ isFaux
36207
36125
  },
36208
36126
  boardData
36209
36127
  );
@@ -36215,8 +36133,9 @@ function createTextureMeshes(textures, boardData, pcbThickness) {
36215
36133
  isBottomLayer: false,
36216
36134
  textureType: "copper",
36217
36135
  usePolygonOffset: false,
36218
- renderOrder: 2
36136
+ renderOrder: 2,
36219
36137
  // Render after soldermask
36138
+ isFaux
36220
36139
  },
36221
36140
  boardData
36222
36141
  );
@@ -36228,8 +36147,9 @@ function createTextureMeshes(textures, boardData, pcbThickness) {
36228
36147
  isBottomLayer: true,
36229
36148
  textureType: "copper",
36230
36149
  usePolygonOffset: false,
36231
- renderOrder: 2
36150
+ renderOrder: 2,
36232
36151
  // Render after soldermask
36152
+ isFaux
36233
36153
  },
36234
36154
  boardData
36235
36155
  );
@@ -36242,7 +36162,8 @@ function createTextureMeshes(textures, boardData, pcbThickness) {
36242
36162
  isBottomLayer: false,
36243
36163
  textureType: "panel-outlines",
36244
36164
  usePolygonOffset: false,
36245
- renderOrder: 4
36165
+ renderOrder: 4,
36166
+ isFaux
36246
36167
  },
36247
36168
  boardData
36248
36169
  );
@@ -36255,7 +36176,8 @@ function createTextureMeshes(textures, boardData, pcbThickness) {
36255
36176
  isBottomLayer: true,
36256
36177
  textureType: "panel-outlines",
36257
36178
  usePolygonOffset: false,
36258
- renderOrder: 4
36179
+ renderOrder: 4,
36180
+ isFaux
36259
36181
  },
36260
36182
  boardData
36261
36183
  );
@@ -36633,7 +36555,7 @@ var createBoardMaterial = ({
36633
36555
  sheen: 0,
36634
36556
  clearcoat: 0,
36635
36557
  transparent: isFaux,
36636
- opacity: isFaux ? 0.6 : 1,
36558
+ opacity: isFaux ? FAUX_BOARD_OPACITY : 1,
36637
36559
  flatShading: true
36638
36560
  });
36639
36561
  }
@@ -36644,7 +36566,7 @@ var createBoardMaterial = ({
36644
36566
  metalness: 0.1,
36645
36567
  roughness: 0.8,
36646
36568
  transparent: true,
36647
- opacity: isFaux ? 0.6 : 0.9
36569
+ opacity: isFaux ? FAUX_BOARD_OPACITY : 0.9
36648
36570
  });
36649
36571
  };
36650
36572
 
@@ -36852,12 +36774,13 @@ try {
36852
36774
  pcbThickness,
36853
36775
  error: builderError,
36854
36776
  isLoading: builderIsLoading,
36855
- boardData
36777
+ boardData,
36778
+ isFauxBoard
36856
36779
  } = useManifoldBoardBuilder(manifoldJSModule, circuitJson);
36857
36780
  const geometryMeshes = useMemo22(() => createGeometryMeshes(geoms), [geoms]);
36858
36781
  const textureMeshes = useMemo22(
36859
- () => createTextureMeshes(textures, boardData, pcbThickness),
36860
- [textures, boardData, pcbThickness]
36782
+ () => createTextureMeshes(textures, boardData, pcbThickness, isFauxBoard),
36783
+ [textures, boardData, pcbThickness, isFauxBoard]
36861
36784
  );
36862
36785
  const cadComponents = useMemo22(
36863
36786
  () => su19(circuitJson).cad_component.list(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tscircuit/3d-viewer",
3
- "version": "0.0.479",
3
+ "version": "0.0.481",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.js",
6
6
  "type": "module",