@tscircuit/3d-viewer 0.0.448 → 0.0.450

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 +34 -13
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -28464,7 +28464,7 @@ import * as THREE15 from "three";
28464
28464
  // package.json
28465
28465
  var package_default = {
28466
28466
  name: "@tscircuit/3d-viewer",
28467
- version: "0.0.447",
28467
+ version: "0.0.449",
28468
28468
  main: "./dist/index.js",
28469
28469
  module: "./dist/index.js",
28470
28470
  type: "module",
@@ -32175,11 +32175,12 @@ function addFauxBoardIfNeeded(circuitJson) {
32175
32175
  if (element.type === "cad_component") {
32176
32176
  const cadComponent = element;
32177
32177
  if (cadComponent.position) {
32178
+ const positionZOffset = cadComponent.position.z ?? 0;
32178
32179
  return {
32179
32180
  ...cadComponent,
32180
32181
  position: {
32181
32182
  ...cadComponent.position,
32182
- z: componentZ
32183
+ z: positionZOffset + componentZ
32183
32184
  }
32184
32185
  };
32185
32186
  }
@@ -32726,12 +32727,12 @@ function createPlatedHoleDrill({
32726
32727
  Manifold,
32727
32728
  x,
32728
32729
  y,
32729
- outerDiameter,
32730
+ holeDiameter,
32730
32731
  thickness,
32731
32732
  zOffset = 1e-3,
32732
32733
  segments = 32
32733
32734
  }) {
32734
- const boardHoleRadius = outerDiameter / 2 + zOffset;
32735
+ const boardHoleRadius = holeDiameter / 2 + zOffset;
32735
32736
  const drill = Manifold.cylinder(
32736
32737
  thickness * 1.2,
32737
32738
  boardHoleRadius,
@@ -33004,7 +33005,7 @@ function processPlatedHolesForManifold(Manifold, CrossSection, circuitJson, pcbT
33004
33005
  Manifold,
33005
33006
  x: ph.x,
33006
33007
  y: ph.y,
33007
- outerDiameter: ph.hole_diameter * 1.02,
33008
+ holeDiameter: ph.hole_diameter * 1.02,
33008
33009
  thickness: pcbThickness,
33009
33010
  zOffset: MANIFOLD_Z_OFFSET,
33010
33011
  segments: SMOOTH_CIRCLE_SEGMENTS
@@ -33487,22 +33488,42 @@ function createViaCopper({
33487
33488
  zOffset = 1e-3,
33488
33489
  segments = 32
33489
33490
  }) {
33490
- const copperPartThickness = thickness + 2 * zOffset;
33491
- let viaCopper = Manifold.cylinder(
33492
- copperPartThickness,
33491
+ const padThickness = zOffset;
33492
+ const platingThickness = zOffset;
33493
+ if (outerDiameter < holeDiameter) {
33494
+ throw new Error(
33495
+ `Invalid via geometry: outerDiameter (${outerDiameter}) must be >= holeDiameter (${holeDiameter})`
33496
+ );
33497
+ }
33498
+ const barrelRadius = Math.min(
33499
+ outerDiameter / 2,
33500
+ holeDiameter / 2 + platingThickness
33501
+ );
33502
+ const barrel = Manifold.cylinder(thickness, barrelRadius, -1, segments, true);
33503
+ const topPad = Manifold.cylinder(
33504
+ padThickness,
33493
33505
  outerDiameter / 2,
33494
33506
  -1,
33495
33507
  segments,
33496
33508
  true
33497
- );
33509
+ ).translate([0, 0, thickness / 2]);
33510
+ const bottomPad = Manifold.cylinder(
33511
+ padThickness,
33512
+ outerDiameter / 2,
33513
+ -1,
33514
+ segments,
33515
+ true
33516
+ ).translate([0, 0, -thickness / 2]);
33517
+ const viaSolid = Manifold.union([barrel, topPad, bottomPad]);
33518
+ const drillHeight = thickness + padThickness * 2;
33498
33519
  const drill = Manifold.cylinder(
33499
- copperPartThickness * 1.05,
33520
+ drillHeight,
33500
33521
  holeDiameter / 2,
33501
33522
  -1,
33502
33523
  segments,
33503
33524
  true
33504
33525
  );
33505
- const finalViaCopperOp = viaCopper.subtract(drill);
33526
+ const finalViaCopperOp = viaSolid.subtract(drill);
33506
33527
  return finalViaCopperOp.translate([x, y, 0]);
33507
33528
  }
33508
33529
 
@@ -33513,12 +33534,12 @@ function processViasForManifold(Manifold, circuitJson, pcbThickness, manifoldIns
33513
33534
  const pcbVias = su11(circuitJson).pcb_via.list();
33514
33535
  const viaCopperGeoms = [];
33515
33536
  pcbVias.forEach((via, index2) => {
33516
- if (typeof via.outer_diameter === "number") {
33537
+ if (typeof via.hole_diameter === "number") {
33517
33538
  const translatedDrill = createPlatedHoleDrill({
33518
33539
  Manifold,
33519
33540
  x: via.x,
33520
33541
  y: via.y,
33521
- outerDiameter: via.outer_diameter,
33542
+ holeDiameter: via.hole_diameter,
33522
33543
  thickness: pcbThickness,
33523
33544
  zOffset: MANIFOLD_Z_OFFSET,
33524
33545
  segments: SMOOTH_CIRCLE_SEGMENTS
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tscircuit/3d-viewer",
3
- "version": "0.0.448",
3
+ "version": "0.0.450",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.js",
6
6
  "type": "module",