@tscircuit/footprinter 0.0.323 → 0.0.325

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
@@ -316,12 +316,27 @@ var dip = (raw_params) => {
316
316
  });
317
317
  }
318
318
  const silkscreenRefText = silkscreenRef(0, sh / 2 + 0.5, 0.4);
319
+ const courtyardPadding = 0.25;
320
+ const crtMinX = -(parameters.w / 2 + parameters.od / 2) - courtyardPadding;
321
+ const crtMaxX = parameters.w / 2 + parameters.od / 2 + courtyardPadding;
322
+ const crtMinY = -sh / 2 - courtyardPadding;
323
+ const crtMaxY = sh / 2 + courtyardPadding;
324
+ const courtyard = {
325
+ type: "pcb_courtyard_rect",
326
+ pcb_courtyard_rect_id: "",
327
+ pcb_component_id: "",
328
+ center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
329
+ width: crtMaxX - crtMinX,
330
+ height: crtMaxY - crtMinY,
331
+ layer: "top"
332
+ };
319
333
  return {
320
334
  circuitJson: [
321
335
  ...platedHoles,
322
336
  silkscreenBorder,
323
337
  silkscreenRefText,
324
- ...silkscreenPins
338
+ ...silkscreenPins,
339
+ courtyard
325
340
  ],
326
341
  parameters
327
342
  };
@@ -1217,7 +1232,29 @@ var soicWithoutParsing = (parameters) => {
1217
1232
  { x: -sw / 2, y: -sh / 2 }
1218
1233
  ]
1219
1234
  };
1220
- return [...pads, silkscreenBorder, silkscreenRefText];
1235
+ const courtyardPadding = 0.25;
1236
+ const silkXs = silkscreenBorder.route.map((pt) => pt.x);
1237
+ const silkYs = silkscreenBorder.route.map((pt) => pt.y);
1238
+ const padXExtent = parameters.legsoutside ? parameters.w / 2 + parameters.pl : parameters.w / 2;
1239
+ const crtMinX = Math.min(-padXExtent, ...silkXs) - courtyardPadding;
1240
+ const crtMaxX = Math.max(padXExtent, ...silkXs) + courtyardPadding;
1241
+ const crtMinY = Math.min(...silkYs) - courtyardPadding;
1242
+ const crtMaxY = Math.max(...silkYs) + courtyardPadding;
1243
+ const courtyard = {
1244
+ type: "pcb_courtyard_rect",
1245
+ pcb_courtyard_rect_id: "",
1246
+ pcb_component_id: "",
1247
+ center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
1248
+ width: crtMaxX - crtMinX,
1249
+ height: crtMaxY - crtMinY,
1250
+ layer: "top"
1251
+ };
1252
+ return [
1253
+ ...pads,
1254
+ silkscreenBorder,
1255
+ silkscreenRefText,
1256
+ courtyard
1257
+ ];
1221
1258
  };
1222
1259
 
1223
1260
  // src/fn/quad.ts
@@ -1542,11 +1579,28 @@ var quad = (raw_params) => {
1542
1579
  parameters.h / 2 + (parameters.legsoutside ? parameters.pl * 1.2 : 0.5),
1543
1580
  0.3
1544
1581
  );
1582
+ const courtyardPadding = 0.25;
1583
+ const padExtentX = parameters.legsoutside ? parameters.w / 2 + parameters.pl : parameters.w / 2;
1584
+ const padExtentY = parameters.legsoutside ? parameters.h / 2 + parameters.pl : parameters.h / 2;
1585
+ const crtMinX = -padExtentX - courtyardPadding;
1586
+ const crtMaxX = padExtentX + courtyardPadding;
1587
+ const crtMinY = -padExtentY - courtyardPadding;
1588
+ const crtMaxY = padExtentY + courtyardPadding;
1589
+ const courtyard = {
1590
+ type: "pcb_courtyard_rect",
1591
+ pcb_courtyard_rect_id: "",
1592
+ pcb_component_id: "",
1593
+ center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
1594
+ width: crtMaxX - crtMinX,
1595
+ height: crtMaxY - crtMinY,
1596
+ layer: "top"
1597
+ };
1545
1598
  return {
1546
1599
  circuitJson: [
1547
1600
  ...pads,
1548
1601
  ...silkscreen_corners,
1549
- silkscreenRefText
1602
+ silkscreenRefText,
1603
+ courtyard
1550
1604
  ],
1551
1605
  parameters
1552
1606
  };
@@ -1764,8 +1818,25 @@ var ssop = (raw_params) => {
1764
1818
  { x: -sw / 2, y: -sh / 2 }
1765
1819
  ]
1766
1820
  };
1821
+ const courtyardPadding = 0.25;
1822
+ const silkXs = silkscreenBorder.route.map((pt) => pt.x);
1823
+ const silkYs = silkscreenBorder.route.map((pt) => pt.y);
1824
+ const padXExtent = parameters.legsoutside ? parameters.w / 2 + parameters.pl : (parameters.w + 0.2) / 2 + parameters.pl / 2;
1825
+ const crtMinX = Math.min(-padXExtent, ...silkXs) - courtyardPadding;
1826
+ const crtMaxX = Math.max(padXExtent, ...silkXs) + courtyardPadding;
1827
+ const crtMinY = Math.min(...silkYs) - courtyardPadding;
1828
+ const crtMaxY = Math.max(...silkYs) + courtyardPadding;
1829
+ const courtyard = {
1830
+ type: "pcb_courtyard_rect",
1831
+ pcb_courtyard_rect_id: "",
1832
+ pcb_component_id: "",
1833
+ center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
1834
+ width: crtMaxX - crtMinX,
1835
+ height: crtMaxY - crtMinY,
1836
+ layer: "top"
1837
+ };
1767
1838
  return {
1768
- circuitJson: [...pads, silkscreenBorder, silkscreenRefText],
1839
+ circuitJson: [...pads, silkscreenBorder, silkscreenRefText, courtyard],
1769
1840
  parameters
1770
1841
  };
1771
1842
  };
@@ -1840,8 +1911,25 @@ var tssop = (raw_params) => {
1840
1911
  { x: -sw / 2, y: -sh / 2 }
1841
1912
  ]
1842
1913
  };
1914
+ const courtyardPadding = 0.25;
1915
+ const silkXs = silkscreenBorder.route.map((pt) => pt.x);
1916
+ const silkYs = silkscreenBorder.route.map((pt) => pt.y);
1917
+ const padXExtent = parameters.legsoutside ? parameters.w / 2 + parameters.pl : parameters.w / 2;
1918
+ const crtMinX = Math.min(-padXExtent, ...silkXs) - courtyardPadding;
1919
+ const crtMaxX = Math.max(padXExtent, ...silkXs) + courtyardPadding;
1920
+ const crtMinY = Math.min(...silkYs) - courtyardPadding;
1921
+ const crtMaxY = Math.max(...silkYs) + courtyardPadding;
1922
+ const courtyard = {
1923
+ type: "pcb_courtyard_rect",
1924
+ pcb_courtyard_rect_id: "",
1925
+ pcb_component_id: "",
1926
+ center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
1927
+ width: crtMaxX - crtMinX,
1928
+ height: crtMaxY - crtMinY,
1929
+ layer: "top"
1930
+ };
1843
1931
  return {
1844
- circuitJson: [...pads, silkscreenBorder, silkscreenRefText],
1932
+ circuitJson: [...pads, silkscreenBorder, silkscreenRefText, courtyard],
1845
1933
  parameters
1846
1934
  };
1847
1935
  };
@@ -1908,13 +1996,28 @@ var sot363 = (raw_params) => {
1908
1996
  pcb_silkscreen_path_id: "pin_marker_1"
1909
1997
  };
1910
1998
  const silkscreenRefText = silkscreenRef(0, h / 2 + 0.4, 0.25);
1999
+ const courtyardPadding = 0.25;
2000
+ const crtMinX = -(0.84 + pl / 2) - courtyardPadding;
2001
+ const crtMaxX = 0.84 + pl / 2 + courtyardPadding;
2002
+ const crtMinY = -(h / 2 + 0.1) - courtyardPadding;
2003
+ const crtMaxY = h / 2 + 0.1 + courtyardPadding;
2004
+ const courtyard = {
2005
+ type: "pcb_courtyard_rect",
2006
+ pcb_courtyard_rect_id: "",
2007
+ pcb_component_id: "",
2008
+ center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
2009
+ width: crtMaxX - crtMinX,
2010
+ height: crtMaxY - crtMinY,
2011
+ layer: "top"
2012
+ };
1911
2013
  return {
1912
2014
  circuitJson: [
1913
2015
  ...pads,
1914
2016
  silkscreenTopLine,
1915
2017
  silkscreenBottomLine,
1916
2018
  silkscreenRefText,
1917
- pin1Marking
2019
+ pin1Marking,
2020
+ courtyard
1918
2021
  ],
1919
2022
  parameters
1920
2023
  };
@@ -1989,13 +2092,28 @@ var sot886 = (raw_params) => {
1989
2092
  pcb_silkscreen_path_id: "pin_marker_1"
1990
2093
  };
1991
2094
  const silkscreenRefText = silkscreenRef(0, h / 2 + 0.4, 0.25);
2095
+ const courtyardPadding = 0.25;
2096
+ const crtMinX = -w / 2 - courtyardPadding;
2097
+ const crtMaxX = w / 2 + courtyardPadding;
2098
+ const crtMinY = -h / 2 - courtyardPadding;
2099
+ const crtMaxY = h / 2 + courtyardPadding;
2100
+ const courtyard = {
2101
+ type: "pcb_courtyard_rect",
2102
+ pcb_courtyard_rect_id: "",
2103
+ pcb_component_id: "",
2104
+ center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
2105
+ width: crtMaxX - crtMinX,
2106
+ height: crtMaxY - crtMinY,
2107
+ layer: "top"
2108
+ };
1992
2109
  return {
1993
2110
  circuitJson: [
1994
2111
  ...pads,
1995
2112
  silkscreenTopLine,
1996
2113
  silkscreenBottomLine,
1997
2114
  silkscreenRefText,
1998
- pin1Marking
2115
+ pin1Marking,
2116
+ courtyard
1999
2117
  ],
2000
2118
  parameters
2001
2119
  };
@@ -2092,7 +2210,24 @@ var sot23_3 = (parameters) => {
2092
2210
  Number.parseInt(parameters.h),
2093
2211
  0.3
2094
2212
  );
2095
- return [...pads, silkscreenRefText];
2213
+ const courtyardPadding = 0.25;
2214
+ const pl_val = Number.parseFloat(parameters.pl);
2215
+ const pw_val = Number.parseFloat(parameters.pw);
2216
+ const p_val = Number.parseFloat(parameters.p);
2217
+ const crtMinX = -1.155 - pl_val / 2 - courtyardPadding;
2218
+ const crtMaxX = 1.15 + pl_val / 2 + courtyardPadding;
2219
+ const crtMinY = -(p_val + pw_val / 2) - courtyardPadding;
2220
+ const crtMaxY = p_val + pw_val / 2 + courtyardPadding;
2221
+ const courtyard = {
2222
+ type: "pcb_courtyard_rect",
2223
+ pcb_courtyard_rect_id: "",
2224
+ pcb_component_id: "",
2225
+ center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
2226
+ width: crtMaxX - crtMinX,
2227
+ height: crtMaxY - crtMinY,
2228
+ layer: "top"
2229
+ };
2230
+ return [...pads, silkscreenRefText, courtyard];
2096
2231
  };
2097
2232
  var getCcwSot235Coords = (parameters) => {
2098
2233
  const { p, h, pn } = parameters;
@@ -2193,12 +2328,32 @@ var sot23_5 = (parameters) => {
2193
2328
  ],
2194
2329
  stroke_width: 0.05
2195
2330
  };
2331
+ const courtyardPadding = 0.25;
2332
+ const pl_val = Number.parseFloat(parameters.pl);
2333
+ const pw_val = Number.parseFloat(parameters.pw);
2334
+ const p_val = Number.parseFloat(parameters.p);
2335
+ const silkY = height / 2 + p_val / 1.3;
2336
+ const padYExtent = p_val + pw_val / 2;
2337
+ const crtMinX = -(height / 2 + 0.5 + pl_val / 2) - courtyardPadding;
2338
+ const crtMaxX = height / 2 + 0.5 + pl_val / 2 + courtyardPadding;
2339
+ const crtMinY = -Math.max(silkY, padYExtent) - courtyardPadding;
2340
+ const crtMaxY = Math.max(silkY, padYExtent) + courtyardPadding;
2341
+ const courtyard = {
2342
+ type: "pcb_courtyard_rect",
2343
+ pcb_courtyard_rect_id: "",
2344
+ pcb_component_id: "",
2345
+ center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
2346
+ width: crtMaxX - crtMinX,
2347
+ height: crtMaxY - crtMinY,
2348
+ layer: "top"
2349
+ };
2196
2350
  return [
2197
2351
  ...pads,
2198
2352
  silkscreenRefText,
2199
2353
  silkscreenPath1,
2200
2354
  silkscreenPath2,
2201
- pin1Indicator
2355
+ pin1Indicator,
2356
+ courtyard
2202
2357
  ];
2203
2358
  };
2204
2359
 
@@ -2297,11 +2452,26 @@ var dfn = (raw_params) => {
2297
2452
  sh / 2 + 0.4,
2298
2453
  sh / 12
2299
2454
  );
2455
+ const courtyardPadding = 0.25;
2456
+ const crtMinX = -sw / 2 - courtyardPadding;
2457
+ const crtMaxX = sw / 2 + courtyardPadding;
2458
+ const crtMinY = -sh / 2 - courtyardPadding;
2459
+ const crtMaxY = sh / 2 + courtyardPadding;
2460
+ const courtyard = {
2461
+ type: "pcb_courtyard_rect",
2462
+ pcb_courtyard_rect_id: "",
2463
+ pcb_component_id: "",
2464
+ center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
2465
+ width: crtMaxX - crtMinX,
2466
+ height: crtMaxY - crtMinY,
2467
+ layer: "top"
2468
+ };
2300
2469
  return {
2301
2470
  circuitJson: [
2302
2471
  ...pads,
2303
2472
  silkscreenRefText,
2304
- ...silkscreenPaths
2473
+ ...silkscreenPaths,
2474
+ courtyard
2305
2475
  ],
2306
2476
  parameters
2307
2477
  };
@@ -2732,13 +2902,28 @@ var sot563 = (raw_params) => {
2732
2902
  pcb_silkscreen_path_id: "pin_marker_1"
2733
2903
  };
2734
2904
  const silkscreenRefText = silkscreenRef(0, h / 2 + 0.4, 0.25);
2905
+ const courtyardPadding = 0.25;
2906
+ const crtMinX = -w / 2 - courtyardPadding;
2907
+ const crtMaxX = w / 2 + courtyardPadding;
2908
+ const crtMinY = -h / 2 - courtyardPadding;
2909
+ const crtMaxY = h / 2 + courtyardPadding;
2910
+ const courtyard = {
2911
+ type: "pcb_courtyard_rect",
2912
+ pcb_courtyard_rect_id: "",
2913
+ pcb_component_id: "",
2914
+ center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
2915
+ width: crtMaxX - crtMinX,
2916
+ height: crtMaxY - crtMinY,
2917
+ layer: "top"
2918
+ };
2735
2919
  return {
2736
2920
  circuitJson: [
2737
2921
  ...pads,
2738
2922
  silkscreenTopLine,
2739
2923
  silkscreenBottomLine,
2740
2924
  silkscreenRefText,
2741
- pin1Marking
2925
+ pin1Marking,
2926
+ courtyard
2742
2927
  ],
2743
2928
  parameters
2744
2929
  };
@@ -4422,11 +4607,26 @@ var sop8 = (raw_params) => {
4422
4607
  ],
4423
4608
  stroke_width: 0.1
4424
4609
  };
4610
+ const courtyardPadding = 0.25;
4611
+ const crtMinX = -parameters.w / 2 - courtyardPadding;
4612
+ const crtMaxX = parameters.w / 2 + courtyardPadding;
4613
+ const crtMinY = -sh / 2 - courtyardPadding;
4614
+ const crtMaxY = sh / 2 + 0.4 + courtyardPadding;
4615
+ const courtyard = {
4616
+ type: "pcb_courtyard_rect",
4617
+ pcb_courtyard_rect_id: "",
4618
+ pcb_component_id: "",
4619
+ center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
4620
+ width: crtMaxX - crtMinX,
4621
+ height: crtMaxY - crtMinY,
4622
+ layer: "top"
4623
+ };
4425
4624
  return {
4426
4625
  circuitJson: [
4427
4626
  ...pads,
4428
4627
  silkscreenRefText,
4429
- silkscreenLine
4628
+ silkscreenLine,
4629
+ courtyard
4430
4630
  ],
4431
4631
  parameters
4432
4632
  };
@@ -6959,13 +7159,29 @@ var vssop = (raw_params) => {
6959
7159
  silkscreenBoxHeight / 2 + 0.5,
6960
7160
  0.3
6961
7161
  );
7162
+ const courtyardPadding = 0.25;
7163
+ const padCenterX = parameters.num_pins === 10 ? length50.parse("2.2mm") : length50.parse("1.8mm");
7164
+ const crtMinX = -(padCenterX + pl / 2) - courtyardPadding;
7165
+ const crtMaxX = padCenterX + pl / 2 + courtyardPadding;
7166
+ const crtMinY = -silkscreenBoxHeight / 2 - courtyardPadding;
7167
+ const crtMaxY = silkscreenBoxHeight / 2 + courtyardPadding;
7168
+ const courtyard = {
7169
+ type: "pcb_courtyard_rect",
7170
+ pcb_courtyard_rect_id: "",
7171
+ pcb_component_id: "",
7172
+ center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
7173
+ width: crtMaxX - crtMinX,
7174
+ height: crtMaxY - crtMinY,
7175
+ layer: "top"
7176
+ };
6962
7177
  return {
6963
7178
  circuitJson: [
6964
7179
  ...pads,
6965
7180
  silkscreenTopLine,
6966
7181
  silkscreenBottomLine,
6967
7182
  silkscreenRefText,
6968
- pin1Marking
7183
+ pin1Marking,
7184
+ courtyard
6969
7185
  ],
6970
7186
  parameters
6971
7187
  };
@@ -7105,13 +7321,29 @@ var msop = (raw_params) => {
7105
7321
  silkscreenBoxHeight / 2 + 0.5,
7106
7322
  0.3
7107
7323
  );
7324
+ const courtyardPadding = 0.25;
7325
+ const padCenterX = length51.parse("2mm");
7326
+ const crtMinX = -(padCenterX + pl / 2) - courtyardPadding;
7327
+ const crtMaxX = padCenterX + pl / 2 + courtyardPadding;
7328
+ const crtMinY = -silkscreenBoxHeight / 2 - courtyardPadding;
7329
+ const crtMaxY = silkscreenBoxHeight / 2 + courtyardPadding;
7330
+ const courtyard = {
7331
+ type: "pcb_courtyard_rect",
7332
+ pcb_courtyard_rect_id: "",
7333
+ pcb_component_id: "",
7334
+ center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
7335
+ width: crtMaxX - crtMinX,
7336
+ height: crtMaxY - crtMinY,
7337
+ layer: "top"
7338
+ };
7108
7339
  return {
7109
7340
  circuitJson: [
7110
7341
  ...pads,
7111
7342
  silkscreenTopLine,
7112
7343
  silkscreenBottomLine,
7113
7344
  silkscreenRefText,
7114
- pin1Marking
7345
+ pin1Marking,
7346
+ courtyard
7115
7347
  ],
7116
7348
  parameters
7117
7349
  };
@@ -7370,13 +7602,29 @@ var son = (raw_params) => {
7370
7602
  silkscreenBoxHeight / 2 + 0.5,
7371
7603
  0.3
7372
7604
  );
7605
+ const courtyardPadding = 0.25;
7606
+ const padCenterX = length54.parse("1.4mm");
7607
+ const crtMinX = -(padCenterX + pl / 2) - courtyardPadding;
7608
+ const crtMaxX = padCenterX + pl / 2 + courtyardPadding;
7609
+ const crtMinY = -silkscreenBoxHeight / 2 - courtyardPadding;
7610
+ const crtMaxY = silkscreenBoxHeight / 2 + courtyardPadding;
7611
+ const courtyard = {
7612
+ type: "pcb_courtyard_rect",
7613
+ pcb_courtyard_rect_id: "",
7614
+ pcb_component_id: "",
7615
+ center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
7616
+ width: crtMaxX - crtMinX,
7617
+ height: crtMaxY - crtMinY,
7618
+ layer: "top"
7619
+ };
7373
7620
  return {
7374
7621
  circuitJson: [
7375
7622
  ...pads,
7376
7623
  silkscreenTopLine,
7377
7624
  silkscreenBottomLine,
7378
7625
  silkscreenRefText,
7379
- pin1Marking
7626
+ pin1Marking,
7627
+ courtyard
7380
7628
  ],
7381
7629
  parameters
7382
7630
  };