@tscircuit/footprinter 0.0.340 → 0.0.342

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
@@ -2132,22 +2132,34 @@ var tssop = (raw_params) => {
2132
2132
  { x: -sw / 2, y: -sh / 2 }
2133
2133
  ]
2134
2134
  };
2135
- const courtyardPadding = 0.25;
2136
- const silkXs = silkscreenBorder.route.map((pt) => pt.x);
2137
- const silkYs = silkscreenBorder.route.map((pt) => pt.y);
2138
- const padXExtent = parameters.legsoutside ? parameters.w / 2 + parameters.pl : parameters.w / 2;
2139
- const crtMinX = Math.min(-padXExtent, ...silkXs) - courtyardPadding;
2140
- const crtMaxX = Math.max(padXExtent, ...silkXs) + courtyardPadding;
2141
- const crtMinY = Math.min(...silkYs) - courtyardPadding;
2142
- const crtMaxY = Math.max(...silkYs) + courtyardPadding;
2135
+ const roundToCourtyardGrid = (value) => Math.round(value / 0.01) * 0.01;
2136
+ const pinRowSpanY = (parameters.num_pins / 2 - 1) * parameters.p + parameters.pw;
2137
+ const pinToeHalfSpanX = parameters.w / 2 + (parameters.legsoutside ? parameters.pl : 0);
2138
+ const courtyardStepInnerHalfX = roundToCourtyardGrid(parameters.w / 2 + 0.25);
2139
+ const courtyardStepOuterHalfX = roundToCourtyardGrid(pinToeHalfSpanX + 0.18);
2140
+ const courtyardStepInnerHalfY = roundToCourtyardGrid(pinRowSpanY / 2 + 0.25);
2141
+ const courtyardStepOuterHalfY = roundToCourtyardGrid(
2142
+ courtyardStepInnerHalfY + 0.35
2143
+ );
2143
2144
  const courtyard = {
2144
- type: "pcb_courtyard_rect",
2145
- pcb_courtyard_rect_id: "",
2145
+ type: "pcb_courtyard_outline",
2146
+ pcb_courtyard_outline_id: "",
2146
2147
  pcb_component_id: "",
2147
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
2148
- width: crtMaxX - crtMinX,
2149
- height: crtMaxY - crtMinY,
2150
- layer: "top"
2148
+ layer: "top",
2149
+ outline: createRectUnionOutline([
2150
+ {
2151
+ minX: -courtyardStepOuterHalfX,
2152
+ maxX: courtyardStepOuterHalfX,
2153
+ minY: -courtyardStepInnerHalfY,
2154
+ maxY: courtyardStepInnerHalfY
2155
+ },
2156
+ {
2157
+ minX: -courtyardStepInnerHalfX,
2158
+ maxX: courtyardStepInnerHalfX,
2159
+ minY: -courtyardStepOuterHalfY,
2160
+ maxY: courtyardStepOuterHalfY
2161
+ }
2162
+ ])
2151
2163
  };
2152
2164
  return {
2153
2165
  circuitJson: [...pads, silkscreenBorder, silkscreenRefText, courtyard],
@@ -4976,19 +4988,31 @@ var sop8 = (raw_params) => {
4976
4988
  ],
4977
4989
  stroke_width: 0.1
4978
4990
  };
4979
- const courtyardPadding = 0.25;
4980
- const crtMinX = -parameters.w / 2 - courtyardPadding;
4981
- const crtMaxX = parameters.w / 2 + courtyardPadding;
4982
- const crtMinY = -sh / 2 - courtyardPadding;
4983
- const crtMaxY = sh / 2 + 0.4 + courtyardPadding;
4991
+ const roundToCourtyardGrid = (value) => Math.round(value / 0.01) * 0.01;
4992
+ const pinRowSpanY = (parameters.num_pins / 2 - 1) * parameters.p + parameters.pw;
4993
+ const courtyardStepInnerHalfX = roundToCourtyardGrid(parameters.w / 2 - 1.395);
4994
+ const courtyardStepOuterHalfX = roundToCourtyardGrid(parameters.w / 2 + 0.255);
4995
+ const courtyardStepInnerHalfY = roundToCourtyardGrid(pinRowSpanY / 2 + 0.25);
4996
+ const courtyardStepOuterHalfY = roundToCourtyardGrid(pinRowSpanY / 2 + 0.5);
4984
4997
  const courtyard = {
4985
- type: "pcb_courtyard_rect",
4986
- pcb_courtyard_rect_id: "",
4998
+ type: "pcb_courtyard_outline",
4999
+ pcb_courtyard_outline_id: "",
4987
5000
  pcb_component_id: "",
4988
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
4989
- width: crtMaxX - crtMinX,
4990
- height: crtMaxY - crtMinY,
4991
- layer: "top"
5001
+ layer: "top",
5002
+ outline: createRectUnionOutline([
5003
+ {
5004
+ minX: -courtyardStepOuterHalfX,
5005
+ maxX: courtyardStepOuterHalfX,
5006
+ minY: -courtyardStepInnerHalfY,
5007
+ maxY: courtyardStepInnerHalfY
5008
+ },
5009
+ {
5010
+ minX: -courtyardStepInnerHalfX,
5011
+ maxX: courtyardStepInnerHalfX,
5012
+ minY: -courtyardStepOuterHalfY,
5013
+ maxY: courtyardStepOuterHalfY
5014
+ }
5015
+ ])
4992
5016
  };
4993
5017
  return {
4994
5018
  circuitJson: [
@@ -8415,20 +8439,35 @@ var son = (raw_params) => {
8415
8439
  silkscreenBoxHeight / 2 + 0.5,
8416
8440
  0.3
8417
8441
  );
8418
- const courtyardPadding = 0.25;
8419
- const padCenterX = length54.parse("1.4mm");
8420
- const crtMinX = -(padCenterX + pl / 2) - courtyardPadding;
8421
- const crtMaxX = padCenterX + pl / 2 + courtyardPadding;
8422
- const crtMinY = -silkscreenBoxHeight / 2 - courtyardPadding;
8423
- const crtMaxY = silkscreenBoxHeight / 2 + courtyardPadding;
8442
+ const roundToCourtyardGrid = (value) => Math.round(value / 0.01) * 0.01;
8443
+ const pinColumnCenterX = Math.abs(
8444
+ getSonPadCoord(parameters.num_pins, 1, w, p).x
8445
+ );
8446
+ const pinRowSpanY = (parameters.num_pins / 2 - 1) * p + pw;
8447
+ const pinRowSpanX = pinColumnCenterX * 2 + pl;
8448
+ const courtyardStepInnerHalfX = roundToCourtyardGrid(w / 2 + 0.25);
8449
+ const courtyardStepOuterHalfX = roundToCourtyardGrid(pinRowSpanX / 2 + 0.25);
8450
+ const courtyardStepInnerHalfY = roundToCourtyardGrid(pinRowSpanY / 2 + 0.25);
8451
+ const courtyardStepOuterHalfY = roundToCourtyardGrid(h / 2 + 0.25);
8424
8452
  const courtyard = {
8425
- type: "pcb_courtyard_rect",
8426
- pcb_courtyard_rect_id: "",
8453
+ type: "pcb_courtyard_outline",
8454
+ pcb_courtyard_outline_id: "",
8427
8455
  pcb_component_id: "",
8428
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
8429
- width: crtMaxX - crtMinX,
8430
- height: crtMaxY - crtMinY,
8431
- layer: "top"
8456
+ layer: "top",
8457
+ outline: createRectUnionOutline([
8458
+ {
8459
+ minX: -courtyardStepOuterHalfX,
8460
+ maxX: courtyardStepOuterHalfX,
8461
+ minY: -courtyardStepInnerHalfY,
8462
+ maxY: courtyardStepInnerHalfY
8463
+ },
8464
+ {
8465
+ minX: -courtyardStepInnerHalfX,
8466
+ maxX: courtyardStepInnerHalfX,
8467
+ minY: -courtyardStepOuterHalfY,
8468
+ maxY: courtyardStepOuterHalfY
8469
+ }
8470
+ ])
8432
8471
  };
8433
8472
  return {
8434
8473
  circuitJson: [