@tscircuit/footprinter 0.0.274 → 0.0.275

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 CHANGED
@@ -3437,6 +3437,29 @@ var pad = (params) => {
3437
3437
 
3438
3438
  // src/fn/to92.ts
3439
3439
  import { z as z25 } from "zod";
3440
+ import "@tscircuit/mm";
3441
+
3442
+ // src/helpers/platedHolePill.ts
3443
+ import { mm as mm6 } from "@tscircuit/mm";
3444
+ var platedHolePill = (pn, x, y, holeDiameter, outerWidth, outerHeight) => {
3445
+ return {
3446
+ pcb_plated_hole_id: "",
3447
+ type: "pcb_plated_hole",
3448
+ shape: "pill",
3449
+ x,
3450
+ y,
3451
+ outer_width: mm6(outerWidth),
3452
+ outer_height: mm6(outerHeight),
3453
+ hole_width: mm6(holeDiameter),
3454
+ hole_height: mm6(holeDiameter),
3455
+ pcb_port_id: "",
3456
+ layers: ["top", "bottom"],
3457
+ port_hints: [pn.toString()],
3458
+ ccw_rotation: 0
3459
+ };
3460
+ };
3461
+
3462
+ // src/fn/to92.ts
3440
3463
  var to92_def = base_def.extend({
3441
3464
  fn: z25.string(),
3442
3465
  num_pins: z25.union([z25.literal(3), z25.literal(2)]).default(3),
@@ -3457,15 +3480,6 @@ var generateSemicircle = (centerX, centerY, radius) => {
3457
3480
  };
3458
3481
  });
3459
3482
  };
3460
- var to92_2 = (parameters) => {
3461
- const { p, id, od, h } = parameters;
3462
- const holeY = Number.parseFloat(h) / 2;
3463
- const padSpacing = Number.parseFloat(p);
3464
- return [
3465
- platedhole(1, -padSpacing, holeY - padSpacing, id, od),
3466
- platedhole(2, padSpacing, holeY - padSpacing, id, od)
3467
- ];
3468
- };
3469
3483
  var to92 = (raw_params) => {
3470
3484
  const match = raw_params.string?.match(/^to92_(\d+)/);
3471
3485
  const numPins = match ? Number.parseInt(match[1], 10) : 3;
@@ -3476,19 +3490,71 @@ var to92 = (raw_params) => {
3476
3490
  const { p, id, od, w, h, inline } = parameters;
3477
3491
  const holeY = Number.parseFloat(h) / 2;
3478
3492
  const padSpacing = Number.parseFloat(p);
3493
+ const holeDia = Number.parseFloat(id);
3494
+ const padDia = Number.parseFloat(od);
3495
+ const padWidth = padDia;
3496
+ const padHeight = padDia * (1.5 / 1.05);
3479
3497
  let platedHoles = [];
3480
3498
  if (parameters.num_pins === 3) {
3481
- platedHoles = inline ? [
3482
- platedhole(1, -padSpacing, holeY - padSpacing, id, od),
3483
- platedhole(2, 0, holeY - padSpacing, id, od),
3484
- platedhole(3, padSpacing, holeY - padSpacing, id, od)
3485
- ] : [
3486
- platedhole(1, 0, holeY, id, od),
3487
- platedhole(2, -padSpacing, holeY - padSpacing, id, od),
3488
- platedhole(3, padSpacing, holeY - padSpacing, id, od)
3489
- ];
3499
+ if (inline) {
3500
+ platedHoles = [
3501
+ platedHoleWithRectPad(
3502
+ 1,
3503
+ -padSpacing,
3504
+ holeY - padSpacing,
3505
+ holeDia,
3506
+ padDia,
3507
+ padHeight,
3508
+ 0,
3509
+ 0
3510
+ ),
3511
+ platedHolePill(2, 0, holeY - padSpacing, holeDia, padWidth, padHeight),
3512
+ platedHolePill(
3513
+ 3,
3514
+ padSpacing,
3515
+ holeY - padSpacing,
3516
+ holeDia,
3517
+ padWidth,
3518
+ padHeight
3519
+ )
3520
+ ];
3521
+ } else {
3522
+ platedHoles = [
3523
+ platedHoleWithRectPad(
3524
+ 1,
3525
+ -padSpacing,
3526
+ holeY - padSpacing,
3527
+ holeDia,
3528
+ padDia,
3529
+ padDia,
3530
+ 0,
3531
+ 0
3532
+ ),
3533
+ platedhole(2, 0, holeY, holeDia, padDia),
3534
+ platedhole(3, padSpacing, holeY - padSpacing, holeDia, padDia)
3535
+ ];
3536
+ }
3490
3537
  } else if (parameters.num_pins === 2) {
3491
- platedHoles = to92_2(parameters);
3538
+ platedHoles = [
3539
+ platedHoleWithRectPad(
3540
+ 1,
3541
+ -padSpacing,
3542
+ holeY - padSpacing,
3543
+ holeDia,
3544
+ padWidth,
3545
+ padHeight,
3546
+ 0,
3547
+ 0
3548
+ ),
3549
+ platedHolePill(
3550
+ 2,
3551
+ padSpacing,
3552
+ holeY - padSpacing,
3553
+ holeDia,
3554
+ padWidth,
3555
+ padHeight
3556
+ )
3557
+ ];
3492
3558
  } else {
3493
3559
  throw new Error("Invalid number of pins for TO-92");
3494
3560
  }
@@ -7187,7 +7253,7 @@ var sot323_3 = (parameters) => {
7187
7253
  // src/fn/smtpad.ts
7188
7254
  import { z as z63 } from "zod";
7189
7255
  import { length as length48 } from "circuit-json";
7190
- import { mm as mm6 } from "@tscircuit/mm";
7256
+ import { mm as mm8 } from "@tscircuit/mm";
7191
7257
  var smtpad_def = base_def.extend({
7192
7258
  fn: z63.string(),
7193
7259
  circle: z63.boolean().optional(),
@@ -7219,27 +7285,27 @@ var smtpad_def = base_def.extend({
7219
7285
  let width;
7220
7286
  let height;
7221
7287
  if (shape === "circle") {
7222
- if (v.r !== void 0) radius = mm6(v.r);
7223
- else if (v.pr !== void 0) radius = mm6(v.pr);
7224
- else if (v.radius !== void 0) radius = mm6(v.radius);
7225
- else if (v.d !== void 0) radius = mm6(v.d) / 2;
7226
- else if (v.pd !== void 0) radius = mm6(v.pd) / 2;
7227
- else if (v.diameter !== void 0) radius = mm6(v.diameter) / 2;
7228
- else radius = mm6("1mm") / 2;
7288
+ if (v.r !== void 0) radius = mm8(v.r);
7289
+ else if (v.pr !== void 0) radius = mm8(v.pr);
7290
+ else if (v.radius !== void 0) radius = mm8(v.radius);
7291
+ else if (v.d !== void 0) radius = mm8(v.d) / 2;
7292
+ else if (v.pd !== void 0) radius = mm8(v.pd) / 2;
7293
+ else if (v.diameter !== void 0) radius = mm8(v.diameter) / 2;
7294
+ else radius = mm8("1mm") / 2;
7229
7295
  } else {
7230
- if (v.w !== void 0) width = mm6(v.w);
7231
- else if (v.pw !== void 0) width = mm6(v.pw);
7232
- else if (v.width !== void 0) width = mm6(v.width);
7233
- else if (v.s !== void 0) width = mm6(v.s);
7234
- else if (v.size !== void 0) width = mm6(v.size);
7235
- else width = mm6("1mm");
7236
- if (v.h !== void 0) height = mm6(v.h);
7237
- else if (v.ph !== void 0) height = mm6(v.ph);
7238
- else if (v.height !== void 0) height = mm6(v.height);
7296
+ if (v.w !== void 0) width = mm8(v.w);
7297
+ else if (v.pw !== void 0) width = mm8(v.pw);
7298
+ else if (v.width !== void 0) width = mm8(v.width);
7299
+ else if (v.s !== void 0) width = mm8(v.s);
7300
+ else if (v.size !== void 0) width = mm8(v.size);
7301
+ else width = mm8("1mm");
7302
+ if (v.h !== void 0) height = mm8(v.h);
7303
+ else if (v.ph !== void 0) height = mm8(v.ph);
7304
+ else if (v.height !== void 0) height = mm8(v.height);
7239
7305
  else if (shape === "square") height = width;
7240
7306
  else if (shape === "rect")
7241
7307
  height = width;
7242
- else height = mm6("1mm");
7308
+ else height = mm8("1mm");
7243
7309
  }
7244
7310
  return {
7245
7311
  fn: v.fn,
@@ -7276,7 +7342,7 @@ var smtpad = (raw_params) => {
7276
7342
  // src/fn/platedhole.ts
7277
7343
  import { z as z64 } from "zod";
7278
7344
  import { length as length49 } from "circuit-json";
7279
- import { mm as mm7 } from "@tscircuit/mm";
7345
+ import { mm as mm9 } from "@tscircuit/mm";
7280
7346
  var platedhole_def = base_def.extend({
7281
7347
  fn: z64.string(),
7282
7348
  d: length49.optional(),
@@ -7288,14 +7354,14 @@ var platedhole_def = base_def.extend({
7288
7354
  squarepad: z64.boolean().optional().default(false)
7289
7355
  }).transform((v) => {
7290
7356
  let holeD;
7291
- if (v.d !== void 0) holeD = mm7(v.d);
7292
- else if (v.hd !== void 0) holeD = mm7(v.hd);
7293
- else if (v.r !== void 0) holeD = mm7(v.r) * 2;
7294
- else if (v.hr !== void 0) holeD = mm7(v.hr) * 2;
7295
- else holeD = mm7("1mm");
7357
+ if (v.d !== void 0) holeD = mm9(v.d);
7358
+ else if (v.hd !== void 0) holeD = mm9(v.hd);
7359
+ else if (v.r !== void 0) holeD = mm9(v.r) * 2;
7360
+ else if (v.hr !== void 0) holeD = mm9(v.hr) * 2;
7361
+ else holeD = mm9("1mm");
7296
7362
  let padD;
7297
- if (v.pd !== void 0) padD = mm7(v.pd);
7298
- else if (v.pr !== void 0) padD = mm7(v.pr) * 2;
7363
+ if (v.pd !== void 0) padD = mm9(v.pd);
7364
+ else if (v.pr !== void 0) padD = mm9(v.pr) * 2;
7299
7365
  else padD = holeD * (1.5 / 1);
7300
7366
  return {
7301
7367
  fn: v.fn,