@tscircuit/footprinter 0.0.341 → 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],
@@ -8427,20 +8439,35 @@ var son = (raw_params) => {
8427
8439
  silkscreenBoxHeight / 2 + 0.5,
8428
8440
  0.3
8429
8441
  );
8430
- const courtyardPadding = 0.25;
8431
- const padCenterX = length54.parse("1.4mm");
8432
- const crtMinX = -(padCenterX + pl / 2) - courtyardPadding;
8433
- const crtMaxX = padCenterX + pl / 2 + courtyardPadding;
8434
- const crtMinY = -silkscreenBoxHeight / 2 - courtyardPadding;
8435
- 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);
8436
8452
  const courtyard = {
8437
- type: "pcb_courtyard_rect",
8438
- pcb_courtyard_rect_id: "",
8453
+ type: "pcb_courtyard_outline",
8454
+ pcb_courtyard_outline_id: "",
8439
8455
  pcb_component_id: "",
8440
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
8441
- width: crtMaxX - crtMinX,
8442
- height: crtMaxY - crtMinY,
8443
- 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
+ ])
8444
8471
  };
8445
8472
  return {
8446
8473
  circuitJson: [