@tscircuit/footprinter 0.0.337 → 0.0.338

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
@@ -2018,6 +2018,20 @@ var tssop = (raw_params) => {
2018
2018
  // src/fn/sot363.ts
2019
2019
  import { z as z18 } from "zod";
2020
2020
  import { length as length13 } from "circuit-json";
2021
+ var sot363CourtyardOutline = [
2022
+ { x: -1.45, y: 0.93 },
2023
+ { x: -0.73, y: 0.93 },
2024
+ { x: -0.73, y: 1.1 },
2025
+ { x: 0.73, y: 1.1 },
2026
+ { x: 0.73, y: 0.93 },
2027
+ { x: 1.45, y: 0.93 },
2028
+ { x: 1.45, y: -0.93 },
2029
+ { x: 0.73, y: -0.93 },
2030
+ { x: 0.73, y: -1.1 },
2031
+ { x: -0.73, y: -1.1 },
2032
+ { x: -0.73, y: -0.93 },
2033
+ { x: -1.45, y: -0.93 }
2034
+ ];
2021
2035
  var sot363_def = base_def.extend({
2022
2036
  fn: z18.string(),
2023
2037
  num_pins: z18.literal(6).default(6),
@@ -2077,18 +2091,11 @@ var sot363 = (raw_params) => {
2077
2091
  pcb_silkscreen_path_id: "pin_marker_1"
2078
2092
  };
2079
2093
  const silkscreenRefText = silkscreenRef(0, h / 2 + 0.4, 0.25);
2080
- const courtyardPadding = 0.25;
2081
- const crtMinX = -(0.84 + pl / 2) - courtyardPadding;
2082
- const crtMaxX = 0.84 + pl / 2 + courtyardPadding;
2083
- const crtMinY = -(h / 2 + 0.1) - courtyardPadding;
2084
- const crtMaxY = h / 2 + 0.1 + courtyardPadding;
2085
2094
  const courtyard = {
2086
- type: "pcb_courtyard_rect",
2087
- pcb_courtyard_rect_id: "",
2095
+ type: "pcb_courtyard_outline",
2096
+ pcb_courtyard_outline_id: "",
2088
2097
  pcb_component_id: "",
2089
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
2090
- width: crtMaxX - crtMinX,
2091
- height: crtMaxY - crtMinY,
2098
+ outline: sot363CourtyardOutline,
2092
2099
  layer: "top"
2093
2100
  };
2094
2101
  return {
@@ -2114,6 +2121,12 @@ var getSot363PadCoord = (pn, w, p, pl) => {
2114
2121
  // src/fn/sot886.ts
2115
2122
  import { z as z19 } from "zod";
2116
2123
  import { length as length14 } from "circuit-json";
2124
+ var sot886CourtyardOutline = [
2125
+ { x: -0.75, y: 1 },
2126
+ { x: -0.75, y: -1 },
2127
+ { x: 0.75, y: -1 },
2128
+ { x: 0.75, y: 1 }
2129
+ ];
2117
2130
  var sot886_def = base_def.extend({
2118
2131
  fn: z19.string(),
2119
2132
  num_pins: z19.literal(6).default(6),
@@ -2173,18 +2186,11 @@ var sot886 = (raw_params) => {
2173
2186
  pcb_silkscreen_path_id: "pin_marker_1"
2174
2187
  };
2175
2188
  const silkscreenRefText = silkscreenRef(0, h / 2 + 0.4, 0.25);
2176
- const courtyardPadding = 0.25;
2177
- const crtMinX = -w / 2 - courtyardPadding;
2178
- const crtMaxX = w / 2 + courtyardPadding;
2179
- const crtMinY = -h / 2 - courtyardPadding;
2180
- const crtMaxY = h / 2 + courtyardPadding;
2181
2189
  const courtyard = {
2182
- type: "pcb_courtyard_rect",
2183
- pcb_courtyard_rect_id: "",
2190
+ type: "pcb_courtyard_outline",
2191
+ pcb_courtyard_outline_id: "",
2184
2192
  pcb_component_id: "",
2185
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
2186
- width: crtMaxX - crtMinX,
2187
- height: crtMaxY - crtMinY,
2193
+ outline: sot886CourtyardOutline,
2188
2194
  layer: "top"
2189
2195
  };
2190
2196
  return {
@@ -2209,6 +2215,42 @@ var getSot886PadCoord = (pn, w, p, pl) => {
2209
2215
 
2210
2216
  // src/fn/sot23.ts
2211
2217
  import { z as z20 } from "zod";
2218
+ var sot23_3CourtyardOutline = [
2219
+ { x: -2.05, y: 1.5 },
2220
+ { x: -1.05, y: 1.5 },
2221
+ { x: -1.05, y: 1.7 },
2222
+ { x: 1.05, y: 1.7 },
2223
+ { x: 1.05, y: 0.55 },
2224
+ { x: 2.05, y: 0.55 },
2225
+ { x: 2.05, y: -0.55 },
2226
+ { x: 1.05, y: -0.55 },
2227
+ { x: 1.05, y: -1.7 },
2228
+ { x: -1.05, y: -1.7 },
2229
+ { x: -1.05, y: -1.5 },
2230
+ { x: -2.05, y: -1.5 },
2231
+ { x: -2.05, y: -0.39 },
2232
+ { x: -1.05, y: -0.39 },
2233
+ { x: -1.05, y: 0.39 },
2234
+ { x: -2.05, y: 0.39 }
2235
+ ];
2236
+ var sot23_5CourtyardOutline = [
2237
+ { x: -2.05, y: 1.5 },
2238
+ { x: -1.05, y: 1.5 },
2239
+ { x: -1.05, y: 1.7 },
2240
+ { x: 1.05, y: 1.7 },
2241
+ { x: 1.05, y: 1.5 },
2242
+ { x: 2.05, y: 1.5 },
2243
+ { x: 2.05, y: 0.39 },
2244
+ { x: 1.05, y: 0.39 },
2245
+ { x: 1.05, y: -0.39 },
2246
+ { x: 2.05, y: -0.39 },
2247
+ { x: 2.05, y: -1.5 },
2248
+ { x: 1.05, y: -1.5 },
2249
+ { x: 1.05, y: -1.7 },
2250
+ { x: -1.05, y: -1.7 },
2251
+ { x: -1.05, y: -1.5 },
2252
+ { x: -2.05, y: -1.5 }
2253
+ ];
2212
2254
  var sot23_def = base_def.extend({
2213
2255
  fn: z20.string(),
2214
2256
  num_pins: z20.number().default(3),
@@ -2291,21 +2333,11 @@ var sot23_3 = (parameters) => {
2291
2333
  Number.parseInt(parameters.h),
2292
2334
  0.3
2293
2335
  );
2294
- const courtyardPadding = 0.25;
2295
- const pl_val = Number.parseFloat(parameters.pl);
2296
- const pw_val = Number.parseFloat(parameters.pw);
2297
- const p_val = Number.parseFloat(parameters.p);
2298
- const crtMinX = -1.1375 - pl_val / 2 - courtyardPadding;
2299
- const crtMaxX = 1.1375 + pl_val / 2 + courtyardPadding;
2300
- const crtMinY = -(p_val + pw_val / 2) - courtyardPadding;
2301
- const crtMaxY = p_val + pw_val / 2 + courtyardPadding;
2302
2336
  const courtyard = {
2303
- type: "pcb_courtyard_rect",
2304
- pcb_courtyard_rect_id: "",
2337
+ type: "pcb_courtyard_outline",
2338
+ pcb_courtyard_outline_id: "",
2305
2339
  pcb_component_id: "",
2306
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
2307
- width: crtMaxX - crtMinX,
2308
- height: crtMaxY - crtMinY,
2340
+ outline: sot23_3CourtyardOutline,
2309
2341
  layer: "top"
2310
2342
  };
2311
2343
  return [...pads, silkscreenRefText, courtyard];
@@ -2409,24 +2441,11 @@ var sot23_5 = (parameters) => {
2409
2441
  ],
2410
2442
  stroke_width: 0.05
2411
2443
  };
2412
- const courtyardPadding = 0.25;
2413
- const pl_val = Number.parseFloat(parameters.pl);
2414
- const pw_val = Number.parseFloat(parameters.pw);
2415
- const p_val = Number.parseFloat(parameters.p);
2416
- const silkY = height / 2 + p_val / 1.3;
2417
- const padYExtent = p_val + pw_val / 2;
2418
- const padXExtent = 1.1375 + pl_val / 2;
2419
- const crtMinX = -padXExtent - courtyardPadding;
2420
- const crtMaxX = padXExtent + courtyardPadding;
2421
- const crtMinY = -Math.max(silkY, padYExtent) - courtyardPadding;
2422
- const crtMaxY = Math.max(silkY, padYExtent) + courtyardPadding;
2423
2444
  const courtyard = {
2424
- type: "pcb_courtyard_rect",
2425
- pcb_courtyard_rect_id: "",
2445
+ type: "pcb_courtyard_outline",
2446
+ pcb_courtyard_outline_id: "",
2426
2447
  pcb_component_id: "",
2427
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
2428
- width: crtMaxX - crtMinX,
2429
- height: crtMaxY - crtMinY,
2448
+ outline: sot23_5CourtyardOutline,
2430
2449
  layer: "top"
2431
2450
  };
2432
2451
  return [
@@ -2940,6 +2959,20 @@ var pinrow = (raw_params) => {
2940
2959
  // src/fn/sot563.ts
2941
2960
  import { z as z24 } from "zod";
2942
2961
  import { length as length16 } from "circuit-json";
2962
+ var sot563CourtyardOutline = [
2963
+ { x: -1.2, y: 0.83 },
2964
+ { x: -0.75, y: 0.83 },
2965
+ { x: -0.75, y: 0.95 },
2966
+ { x: 0.75, y: 0.95 },
2967
+ { x: 0.75, y: 0.83 },
2968
+ { x: 1.2, y: 0.83 },
2969
+ { x: 1.2, y: -0.83 },
2970
+ { x: 0.75, y: -0.83 },
2971
+ { x: 0.75, y: -0.95 },
2972
+ { x: -0.75, y: -0.95 },
2973
+ { x: -0.75, y: -0.83 },
2974
+ { x: -1.2, y: -0.83 }
2975
+ ];
2943
2976
  var sot563_def = base_def.extend({
2944
2977
  fn: z24.string(),
2945
2978
  num_pins: z24.literal(6).default(6),
@@ -2999,18 +3032,11 @@ var sot563 = (raw_params) => {
2999
3032
  pcb_silkscreen_path_id: "pin_marker_1"
3000
3033
  };
3001
3034
  const silkscreenRefText = silkscreenRef(0, h / 2 + 0.4, 0.25);
3002
- const courtyardPadding = 0.25;
3003
- const crtMinX = -w / 2 - courtyardPadding;
3004
- const crtMaxX = w / 2 + courtyardPadding;
3005
- const crtMinY = -h / 2 - courtyardPadding;
3006
- const crtMaxY = h / 2 + courtyardPadding;
3007
3035
  const courtyard = {
3008
- type: "pcb_courtyard_rect",
3009
- pcb_courtyard_rect_id: "",
3036
+ type: "pcb_courtyard_outline",
3037
+ pcb_courtyard_outline_id: "",
3010
3038
  pcb_component_id: "",
3011
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
3012
- width: crtMaxX - crtMinX,
3013
- height: crtMaxY - crtMinY,
3039
+ outline: sot563CourtyardOutline,
3014
3040
  layer: "top"
3015
3041
  };
3016
3042
  return {
@@ -3083,22 +3109,18 @@ var sot723 = (raw_params) => {
3083
3109
  length17.parse(parameters.h),
3084
3110
  0.2
3085
3111
  );
3086
- const p_val = length17.parse(parameters.p);
3087
- const pl_val = length17.parse(parameters.pl);
3088
- const pw_val = length17.parse(parameters.pw);
3089
- const h_val = length17.parse(parameters.h);
3090
- const courtyardPadding = 0.25;
3091
- const crtMinX = -(p_val + pl_val / 2 + courtyardPadding);
3092
- const crtMaxX = p_val + pl_val / 2 + courtyardPadding;
3093
- const crtMinY = -(Math.max(h_val / 2, 0.4 + pw_val / 2) + courtyardPadding);
3094
- const crtMaxY = Math.max(h_val / 2, 0.4 + pw_val / 2) + courtyardPadding;
3112
+ const courtyardWidthMm = 1.8;
3113
+ const courtyardHeightMm = 1.8;
3095
3114
  const courtyard = {
3096
- type: "pcb_courtyard_rect",
3097
- pcb_courtyard_rect_id: "",
3115
+ type: "pcb_courtyard_outline",
3116
+ pcb_courtyard_outline_id: "",
3098
3117
  pcb_component_id: "",
3099
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
3100
- width: crtMaxX - crtMinX,
3101
- height: crtMaxY - crtMinY,
3118
+ outline: [
3119
+ { x: -courtyardWidthMm / 2, y: courtyardHeightMm / 2 },
3120
+ { x: courtyardWidthMm / 2, y: courtyardHeightMm / 2 },
3121
+ { x: courtyardWidthMm / 2, y: -courtyardHeightMm / 2 },
3122
+ { x: -courtyardWidthMm / 2, y: -courtyardHeightMm / 2 }
3123
+ ],
3102
3124
  layer: "top"
3103
3125
  };
3104
3126
  return {
@@ -3392,18 +3414,13 @@ var radial = (raw_params) => {
3392
3414
  if (hasPolarity) {
3393
3415
  circuitJson.push(plusHoriz, plusVert);
3394
3416
  }
3395
- const courtyardPadding = 0.25;
3396
- const crtMinX = hasPolarity ? plusX - plusSize - courtyardPadding : -(bodyR + courtyardPadding);
3397
- const crtMaxX = bodyR + courtyardPadding;
3398
- const crtMinY = -(bodyR + courtyardPadding);
3399
- const crtMaxY = bodyR + courtyardPadding;
3417
+ const courtyardRadiusMm = p + 0.25;
3400
3418
  const courtyard = {
3401
- type: "pcb_courtyard_rect",
3402
- pcb_courtyard_rect_id: "",
3419
+ type: "pcb_courtyard_circle",
3420
+ pcb_courtyard_circle_id: "",
3403
3421
  pcb_component_id: "",
3404
- center: { x: (crtMinX + crtMaxX) / 2, y: 0 },
3405
- width: crtMaxX - crtMinX,
3406
- height: crtMaxY - crtMinY,
3422
+ center: { x: 0, y: 0 },
3423
+ radius: courtyardRadiusMm,
3407
3424
  layer: "top"
3408
3425
  };
3409
3426
  circuitJson.push(courtyard);
@@ -4560,6 +4577,12 @@ var platedHolePill = (pn, x, y, holeDiameter, outerWidth, outerHeight) => {
4560
4577
  };
4561
4578
 
4562
4579
  // src/fn/to92.ts
4580
+ var to92CourtyardOutline = [
4581
+ { x: -2.73, y: 3.71 },
4582
+ { x: -2.73, y: -1.03 },
4583
+ { x: 2.73, y: -1.03 },
4584
+ { x: 2.73, y: 3.71 }
4585
+ ];
4563
4586
  var to92_def = base_def.extend({
4564
4587
  fn: z35.string(),
4565
4588
  num_pins: z35.union([z35.literal(3), z35.literal(2)]).default(3),
@@ -4668,18 +4691,11 @@ var to92 = (raw_params) => {
4668
4691
  pcb_silkscreen_path_id: ""
4669
4692
  };
4670
4693
  const silkscreenRefText = silkscreenRef(0, holeY + 1, 0.5);
4671
- const courtyardPadding = 0.25;
4672
- const crtMinX = -(radius + courtyardPadding);
4673
- const crtMaxX = radius + courtyardPadding;
4674
- const crtMaxY = holeY + radius + courtyardPadding;
4675
- const crtMinY = -courtyardPadding;
4676
4694
  const courtyard = {
4677
- type: "pcb_courtyard_rect",
4678
- pcb_courtyard_rect_id: "",
4695
+ type: "pcb_courtyard_outline",
4696
+ pcb_courtyard_outline_id: "",
4679
4697
  pcb_component_id: "",
4680
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
4681
- width: crtMaxX - crtMinX,
4682
- height: crtMaxY - crtMinY,
4698
+ outline: to92CourtyardOutline,
4683
4699
  layer: "top"
4684
4700
  };
4685
4701
  return {
@@ -5762,6 +5778,18 @@ var sodWithoutParsing11 = (parameters) => {
5762
5778
 
5763
5779
  // src/fn/sot89.ts
5764
5780
  import { z as z47 } from "zod";
5781
+ var sot89_3CourtyardOutline = [
5782
+ { x: -3.0875, y: -2.5 },
5783
+ { x: -3.0875, y: 2.5 },
5784
+ { x: 2.0125, y: 2.5 },
5785
+ { x: 2.0125, y: -2.5 }
5786
+ ];
5787
+ var sot89_5CourtyardOutline = [
5788
+ { x: -2.85, y: -2.5 },
5789
+ { x: -2.85, y: 2.5 },
5790
+ { x: 2.85, y: 2.5 },
5791
+ { x: 2.85, y: -2.5 }
5792
+ ];
5765
5793
  var sot89_def = base_def.extend({
5766
5794
  fn: z47.string(),
5767
5795
  num_pins: z47.union([z47.literal(3), z47.literal(5)]).default(3),
@@ -5812,19 +5840,11 @@ var sot89_3 = (parameters) => {
5812
5840
  type: "pcb_silkscreen_path",
5813
5841
  stroke_width: 0.1
5814
5842
  };
5815
- const courtyardPadding = 0.25;
5816
- const padOuterX = length63 / 2 + (padHeight + centerExtra) / 2;
5817
- const crtMinX = -(padOuterX + courtyardPadding);
5818
- const crtMaxX = length63 / 2 - 1 + courtyardPadding;
5819
- const crtMinY = -(height + courtyardPadding);
5820
- const crtMaxY = height + courtyardPadding;
5821
5843
  const courtyard = {
5822
- type: "pcb_courtyard_rect",
5823
- pcb_courtyard_rect_id: "",
5844
+ type: "pcb_courtyard_outline",
5845
+ pcb_courtyard_outline_id: "",
5824
5846
  pcb_component_id: "",
5825
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
5826
- width: crtMaxX - crtMinX,
5827
- height: crtMaxY - crtMinY,
5847
+ outline: sot89_3CourtyardOutline,
5828
5848
  layer: "top"
5829
5849
  };
5830
5850
  return [
@@ -5876,18 +5896,11 @@ var sot89_5 = (parameters) => {
5876
5896
  type: "pcb_silkscreen_path",
5877
5897
  stroke_width: 0.1
5878
5898
  };
5879
- const courtyardPadding = 0.25;
5880
- const crtMinX = -(2.6 + courtyardPadding);
5881
- const crtMaxX = 2.6 + courtyardPadding;
5882
- const crtMinY = -(height + courtyardPadding);
5883
- const crtMaxY = height + courtyardPadding;
5884
5899
  const courtyard = {
5885
- type: "pcb_courtyard_rect",
5886
- pcb_courtyard_rect_id: "",
5900
+ type: "pcb_courtyard_outline",
5901
+ pcb_courtyard_outline_id: "",
5887
5902
  pcb_component_id: "",
5888
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
5889
- width: crtMaxX - crtMinX,
5890
- height: crtMaxY - crtMinY,
5903
+ outline: sot89_5CourtyardOutline,
5891
5904
  layer: "top"
5892
5905
  };
5893
5906
  return [
@@ -6132,23 +6145,15 @@ var minimelf = (raw_params) => {
6132
6145
  stroke_width: 0.1,
6133
6146
  pcb_silkscreen_path_id: ""
6134
6147
  };
6135
- const p_v = length40.parse(parameters.p);
6136
- const pl_v = length40.parse(parameters.pl);
6137
- const pw_v = length40.parse(parameters.pw);
6138
- const h_v = length40.parse(parameters.h);
6139
- const w_v = length40.parse(parameters.w);
6140
- const courtyardPadding = 0.25;
6141
- const crtMinX = -(Math.max(w_v / 2, p_v / 2 + pl_v / 2) + courtyardPadding);
6142
- const crtMaxX = p_v / 2 + pl_v / 2 + courtyardPadding;
6143
- const crtMinY = -(Math.max(h_v / 2, pw_v / 2) + courtyardPadding);
6144
- const crtMaxY = Math.max(h_v / 2, pw_v / 2) + courtyardPadding;
6148
+ const courtyardWidthMm = 5.3;
6149
+ const courtyardHeightMm = 2.2;
6145
6150
  const courtyard = {
6146
6151
  type: "pcb_courtyard_rect",
6147
6152
  pcb_courtyard_rect_id: "",
6148
6153
  pcb_component_id: "",
6149
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
6150
- width: crtMaxX - crtMinX,
6151
- height: crtMaxY - crtMinY,
6154
+ center: { x: 0, y: 0 },
6155
+ width: courtyardWidthMm,
6156
+ height: courtyardHeightMm,
6152
6157
  layer: "top"
6153
6158
  };
6154
6159
  return {
@@ -6320,23 +6325,15 @@ var melf = (raw_params) => {
6320
6325
  stroke_width: 0.1,
6321
6326
  pcb_silkscreen_path_id: ""
6322
6327
  };
6323
- const p_v = length42.parse(parameters.p);
6324
- const pl_v = length42.parse(parameters.pl);
6325
- const pw_v = length42.parse(parameters.pw);
6326
- const h_v = length42.parse(parameters.h);
6327
- const w_v = length42.parse(parameters.w);
6328
- const courtyardPadding = 0.25;
6329
- const crtMinX = -(Math.max(w_v / 2, p_v / 2 + pl_v / 2) + courtyardPadding);
6330
- const crtMaxX = p_v / 2 + pl_v / 2 + courtyardPadding;
6331
- const crtMinY = -(Math.max(h_v / 2, pw_v / 2) + courtyardPadding);
6332
- const crtMaxY = Math.max(h_v / 2, pw_v / 2) + courtyardPadding;
6328
+ const courtyardWidthMm = 6.8;
6329
+ const courtyardHeightMm = 3.2;
6333
6330
  const courtyard = {
6334
6331
  type: "pcb_courtyard_rect",
6335
6332
  pcb_courtyard_rect_id: "",
6336
6333
  pcb_component_id: "",
6337
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
6338
- width: crtMaxX - crtMinX,
6339
- height: crtMaxY - crtMinY,
6334
+ center: { x: 0, y: 0 },
6335
+ width: courtyardWidthMm,
6336
+ height: courtyardHeightMm,
6340
6337
  layer: "top"
6341
6338
  };
6342
6339
  return {
@@ -6420,23 +6417,15 @@ var micromelf = (raw_params) => {
6420
6417
  stroke_width: 0.1,
6421
6418
  pcb_silkscreen_path_id: ""
6422
6419
  };
6423
- const p_v = length43.parse(parameters.p);
6424
- const pl_v = length43.parse(parameters.pl);
6425
- const pw_v = length43.parse(parameters.pw);
6426
- const h_v = length43.parse(parameters.h);
6427
- const w_v = length43.parse(parameters.w);
6428
- const courtyardPadding = 0.25;
6429
- const crtMinX = -(Math.max(w_v / 2 + 0.1, p_v / 2 + pl_v / 2) + courtyardPadding);
6430
- const crtMaxX = p_v / 2 + pl_v / 2 + courtyardPadding;
6431
- const crtMinY = -(Math.max(h_v / 2, pw_v / 2) + courtyardPadding);
6432
- const crtMaxY = Math.max(h_v / 2, pw_v / 2) + courtyardPadding;
6420
+ const courtyardWidthMm = 2.9;
6421
+ const courtyardHeightMm = 1.7;
6433
6422
  const courtyard = {
6434
6423
  type: "pcb_courtyard_rect",
6435
6424
  pcb_courtyard_rect_id: "",
6436
6425
  pcb_component_id: "",
6437
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
6438
- width: crtMaxX - crtMinX,
6439
- height: crtMaxY - crtMinY,
6426
+ center: { x: 0, y: 0 },
6427
+ width: courtyardWidthMm,
6428
+ height: courtyardHeightMm,
6440
6429
  layer: "top"
6441
6430
  };
6442
6431
  return {
@@ -8745,6 +8734,12 @@ var sot457 = (rawParams) => {
8745
8734
  // src/fn/sot963.ts
8746
8735
  import { z as z70 } from "zod";
8747
8736
  import { length as length57 } from "circuit-json";
8737
+ var sot963CourtyardOutline = [
8738
+ { x: -0.8, y: 0.75 },
8739
+ { x: 0.8, y: 0.75 },
8740
+ { x: 0.8, y: -0.75 },
8741
+ { x: -0.8, y: -0.75 }
8742
+ ];
8748
8743
  var sot963_def = base_def.extend({
8749
8744
  fn: z70.string(),
8750
8745
  num_pins: z70.literal(6).default(6),
@@ -8804,18 +8799,11 @@ var sot963 = (raw_params) => {
8804
8799
  pcb_silkscreen_path_id: "pin_marker_1"
8805
8800
  };
8806
8801
  const silkscreenRefText = silkscreenRef(0, h / 2 + 0.4, 0.25);
8807
- const courtyardPadding = 0.25;
8808
- const crtMinX = -(w / 2 + courtyardPadding);
8809
- const crtMaxX = w / 2 + courtyardPadding;
8810
- const crtMinY = -(Math.max(h / 2, p + pw / 2) + courtyardPadding);
8811
- const crtMaxY = Math.max(h / 2, p + pw / 2) + courtyardPadding;
8812
8802
  const courtyard = {
8813
- type: "pcb_courtyard_rect",
8814
- pcb_courtyard_rect_id: "",
8803
+ type: "pcb_courtyard_outline",
8804
+ pcb_courtyard_outline_id: "",
8815
8805
  pcb_component_id: "",
8816
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
8817
- width: crtMaxX - crtMinX,
8818
- height: crtMaxY - crtMinY,
8806
+ outline: sot963CourtyardOutline,
8819
8807
  layer: "top"
8820
8808
  };
8821
8809
  return {
@@ -9159,6 +9147,24 @@ var smbfWithoutParsing = (parameters) => {
9159
9147
 
9160
9148
  // src/fn/sot323.ts
9161
9149
  import { z as z74 } from "zod";
9150
+ var sot323CourtyardOutline = [
9151
+ { x: -1.45, y: 0.98 },
9152
+ { x: -0.73, y: 0.98 },
9153
+ { x: -0.73, y: 1.1 },
9154
+ { x: 0.73, y: 1.1 },
9155
+ { x: 0.73, y: 0.33 },
9156
+ { x: 1.45, y: 0.33 },
9157
+ { x: 1.45, y: -0.33 },
9158
+ { x: 0.73, y: -0.33 },
9159
+ { x: 0.73, y: -1.1 },
9160
+ { x: -0.73, y: -1.1 },
9161
+ { x: -0.73, y: -0.98 },
9162
+ { x: -1.45, y: -0.98 },
9163
+ { x: -1.45, y: -0.32 },
9164
+ { x: -0.73, y: -0.32 },
9165
+ { x: -0.73, y: 0.32 },
9166
+ { x: -1.45, y: 0.32 }
9167
+ ];
9162
9168
  var sot323_def = base_def.extend({
9163
9169
  fn: z74.string(),
9164
9170
  num_pins: z74.number().default(3),
@@ -9246,22 +9252,11 @@ var sot323_3 = (parameters) => {
9246
9252
  type: "pcb_silkscreen_path",
9247
9253
  stroke_width: 0.1
9248
9254
  };
9249
- const p = Number.parseFloat(parameters.p);
9250
- const pl = Number.parseFloat(parameters.pl);
9251
- const pw = Number.parseFloat(parameters.pw);
9252
- const h = Number.parseFloat(parameters.h);
9253
- const courtyardPadding = 0.25;
9254
- const crtMinX = -(p + pl / 2 + courtyardPadding);
9255
- const crtMaxX = p + pl / 2 + courtyardPadding;
9256
- const crtMinY = -(Math.max(h / 2 + 0.3, 0.65 + pw / 2) + courtyardPadding);
9257
- const crtMaxY = Math.max(h / 2 + 0.3, 0.65 + pw / 2) + courtyardPadding;
9258
9255
  const courtyard = {
9259
- type: "pcb_courtyard_rect",
9260
- pcb_courtyard_rect_id: "",
9256
+ type: "pcb_courtyard_outline",
9257
+ pcb_courtyard_outline_id: "",
9261
9258
  pcb_component_id: "",
9262
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
9263
- width: crtMaxX - crtMinX,
9264
- height: crtMaxY - crtMinY,
9259
+ outline: sot323CourtyardOutline,
9265
9260
  layer: "top"
9266
9261
  };
9267
9262
  return [
@@ -9559,6 +9554,20 @@ var sotWithoutParsing = (parameters) => {
9559
9554
 
9560
9555
  // src/fn/sot343.ts
9561
9556
  import { z as z78 } from "zod";
9557
+ var sot343CourtyardOutline = [
9558
+ { x: -1.703, y: 0.98 },
9559
+ { x: -0.983, y: 0.98 },
9560
+ { x: -0.983, y: 1.1 },
9561
+ { x: 0.477, y: 1.1 },
9562
+ { x: 0.477, y: 0.98 },
9563
+ { x: 1.197, y: 0.98 },
9564
+ { x: 1.197, y: -0.98 },
9565
+ { x: 0.477, y: -0.98 },
9566
+ { x: 0.477, y: -1.1 },
9567
+ { x: -0.983, y: -1.1 },
9568
+ { x: -0.983, y: -0.98 },
9569
+ { x: -1.703, y: -0.98 }
9570
+ ];
9562
9571
  var sot343_def = base_def.extend({
9563
9572
  fn: z78.string(),
9564
9573
  num_pins: z78.number().default(4),
@@ -9653,18 +9662,11 @@ var sot343_4 = (parameters) => {
9653
9662
  type: "pcb_silkscreen_path",
9654
9663
  stroke_width: 0.1
9655
9664
  };
9656
- const courtyardPadding = 0.25;
9657
- const crtMinX = minX - pl / 2 - courtyardPadding;
9658
- const crtMaxX = maxX + pl / 2 + courtyardPadding;
9659
- const crtMinY = -(offsetY + courtyardPadding);
9660
- const crtMaxY = offsetY + courtyardPadding;
9661
9665
  const courtyard = {
9662
- type: "pcb_courtyard_rect",
9663
- pcb_courtyard_rect_id: "",
9666
+ type: "pcb_courtyard_outline",
9667
+ pcb_courtyard_outline_id: "",
9664
9668
  pcb_component_id: "",
9665
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
9666
- width: crtMaxX - crtMinX,
9667
- height: crtMaxY - crtMinY,
9669
+ outline: sot343CourtyardOutline,
9668
9670
  layer: "top"
9669
9671
  };
9670
9672
  return [
@@ -10278,6 +10280,18 @@ var mountedpcbmodule = (raw_params) => {
10278
10280
 
10279
10281
  // src/fn/to92l.ts
10280
10282
  import { z as z81 } from "zod";
10283
+ var to92lCourtyardOutline = [
10284
+ { x: -1.45, y: 2.75 },
10285
+ { x: -1.45, y: -1.85 },
10286
+ { x: 4.05, y: -1.85 },
10287
+ { x: 4.05, y: 2.75 }
10288
+ ];
10289
+ var to92lInlineCourtyardOutline = [
10290
+ { x: -1.55, y: 2.75 },
10291
+ { x: -1.55, y: -1.85 },
10292
+ { x: 3.95, y: -1.85 },
10293
+ { x: 3.95, y: 2.75 }
10294
+ ];
10281
10295
  var to92l_def = base_def.extend({
10282
10296
  fn: z81.string(),
10283
10297
  num_pins: z81.number().default(3),
@@ -10336,18 +10350,11 @@ var to92l = (raw_params) => {
10336
10350
  cy + radius + 1,
10337
10351
  0.5
10338
10352
  );
10339
- const courtyardPadding = 0.25;
10340
- const crtMinX = cx - radius - courtyardPadding;
10341
- const crtMaxX = cx + radius + courtyardPadding;
10342
- const crtMaxY = cy + radius + courtyardPadding;
10343
- const crtMinY = y_bottom - courtyardPadding;
10344
10353
  const courtyard = {
10345
- type: "pcb_courtyard_rect",
10346
- pcb_courtyard_rect_id: "",
10354
+ type: "pcb_courtyard_outline",
10355
+ pcb_courtyard_outline_id: "",
10347
10356
  pcb_component_id: "",
10348
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
10349
- width: crtMaxX - crtMinX,
10350
- height: crtMaxY - crtMinY,
10357
+ outline: parameters.inline ? to92lInlineCourtyardOutline : to92lCourtyardOutline,
10351
10358
  layer: "top"
10352
10359
  };
10353
10360
  return {