@tscircuit/footprinter 0.0.341 → 0.0.343

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],
@@ -7947,20 +7959,33 @@ var vssop = (raw_params) => {
7947
7959
  silkscreenBoxHeight / 2 + 0.5,
7948
7960
  0.3
7949
7961
  );
7950
- const courtyardPadding = 0.25;
7951
- const padCenterX = parameters.num_pins === 10 ? length50.parse("2.2mm") : length50.parse("1.8mm");
7952
- const crtMinX = -(padCenterX + pl / 2) - courtyardPadding;
7953
- const crtMaxX = padCenterX + pl / 2 + courtyardPadding;
7954
- const crtMinY = -silkscreenBoxHeight / 2 - courtyardPadding;
7955
- const crtMaxY = silkscreenBoxHeight / 2 + courtyardPadding;
7962
+ const roundToCourtyardGrid = (value) => Math.round(value / 0.01) * 0.01;
7963
+ const pinRowSpanY = (parameters.num_pins / 2 - 1) * p + pw;
7964
+ const courtyardStepInnerHalfX = roundToCourtyardGrid(w / 2 + 0.25);
7965
+ const courtyardStepOuterHalfX = roundToCourtyardGrid(
7966
+ courtyardStepInnerHalfX + 1.43
7967
+ );
7968
+ const courtyardStepInnerHalfY = roundToCourtyardGrid(pinRowSpanY / 2 + 0.255);
7969
+ const courtyardStepOuterHalfY = roundToCourtyardGrid(h / 2 + 0.25);
7956
7970
  const courtyard = {
7957
- type: "pcb_courtyard_rect",
7958
- pcb_courtyard_rect_id: "",
7971
+ type: "pcb_courtyard_outline",
7972
+ pcb_courtyard_outline_id: "",
7959
7973
  pcb_component_id: "",
7960
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
7961
- width: crtMaxX - crtMinX,
7962
- height: crtMaxY - crtMinY,
7963
- layer: "top"
7974
+ layer: "top",
7975
+ outline: createRectUnionOutline([
7976
+ {
7977
+ minX: -courtyardStepOuterHalfX,
7978
+ maxX: courtyardStepOuterHalfX,
7979
+ minY: -courtyardStepInnerHalfY,
7980
+ maxY: courtyardStepInnerHalfY
7981
+ },
7982
+ {
7983
+ minX: -courtyardStepInnerHalfX,
7984
+ maxX: courtyardStepInnerHalfX,
7985
+ minY: -courtyardStepOuterHalfY,
7986
+ maxY: courtyardStepOuterHalfY
7987
+ }
7988
+ ])
7964
7989
  };
7965
7990
  return {
7966
7991
  circuitJson: [
@@ -8427,20 +8452,35 @@ var son = (raw_params) => {
8427
8452
  silkscreenBoxHeight / 2 + 0.5,
8428
8453
  0.3
8429
8454
  );
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;
8455
+ const roundToCourtyardGrid = (value) => Math.round(value / 0.01) * 0.01;
8456
+ const pinColumnCenterX = Math.abs(
8457
+ getSonPadCoord(parameters.num_pins, 1, w, p).x
8458
+ );
8459
+ const pinRowSpanY = (parameters.num_pins / 2 - 1) * p + pw;
8460
+ const pinRowSpanX = pinColumnCenterX * 2 + pl;
8461
+ const courtyardStepInnerHalfX = roundToCourtyardGrid(w / 2 + 0.25);
8462
+ const courtyardStepOuterHalfX = roundToCourtyardGrid(pinRowSpanX / 2 + 0.25);
8463
+ const courtyardStepInnerHalfY = roundToCourtyardGrid(pinRowSpanY / 2 + 0.25);
8464
+ const courtyardStepOuterHalfY = roundToCourtyardGrid(h / 2 + 0.25);
8436
8465
  const courtyard = {
8437
- type: "pcb_courtyard_rect",
8438
- pcb_courtyard_rect_id: "",
8466
+ type: "pcb_courtyard_outline",
8467
+ pcb_courtyard_outline_id: "",
8439
8468
  pcb_component_id: "",
8440
- center: { x: (crtMinX + crtMaxX) / 2, y: (crtMinY + crtMaxY) / 2 },
8441
- width: crtMaxX - crtMinX,
8442
- height: crtMaxY - crtMinY,
8443
- layer: "top"
8469
+ layer: "top",
8470
+ outline: createRectUnionOutline([
8471
+ {
8472
+ minX: -courtyardStepOuterHalfX,
8473
+ maxX: courtyardStepOuterHalfX,
8474
+ minY: -courtyardStepInnerHalfY,
8475
+ maxY: courtyardStepInnerHalfY
8476
+ },
8477
+ {
8478
+ minX: -courtyardStepInnerHalfX,
8479
+ maxX: courtyardStepInnerHalfX,
8480
+ minY: -courtyardStepOuterHalfY,
8481
+ maxY: courtyardStepOuterHalfY
8482
+ }
8483
+ ])
8444
8484
  };
8445
8485
  return {
8446
8486
  circuitJson: [