@tscircuit/3d-viewer 0.0.331 → 0.0.333

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.
Files changed (2) hide show
  1. package/dist/index.js +69 -62
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -16749,10 +16749,9 @@ var u_curve = Array.from(
16749
16749
  function convertMilToMm(value) {
16750
16750
  if (typeof value === "string") {
16751
16751
  if (value.trim().toLowerCase().endsWith("mil")) {
16752
- const num = Number.parseFloat(value);
16753
- return num * 0.0254;
16752
+ return parseFloat(value) * 0.0254;
16754
16753
  }
16755
- return Number.parseFloat(value);
16754
+ return parseFloat(value);
16756
16755
  }
16757
16756
  return Number(value);
16758
16757
  }
@@ -16799,9 +16798,9 @@ var getCcwDipCoords = (pinCount, pn, w, p) => {
16799
16798
  const gs = p;
16800
16799
  const h = gs * leftPinGaps;
16801
16800
  if (isLeft) {
16802
- return { x: -w / 2 - 0.4, y: h / 2 - (pn - 1) * gs };
16801
+ return { x: -w / 2, y: h / 2 - (pn - 1) * gs };
16803
16802
  }
16804
- return { x: w / 2 + 0.4, y: -h / 2 + (pn - ph - 1) * gs };
16803
+ return { x: w / 2, y: -h / 2 + (pn - ph - 1) * gs };
16805
16804
  };
16806
16805
  var dip = (raw_params) => {
16807
16806
  const parameters = dip_def.parse(raw_params);
@@ -16817,7 +16816,9 @@ var dip = (raw_params) => {
16817
16816
  platedhole(i + 1, x, y, parameters.id ?? "0.8mm", parameters.od ?? "1mm")
16818
16817
  );
16819
16818
  }
16820
- const sw = parameters.w - parameters.od - 0.4;
16819
+ const padEdgeHeight = (parameters.num_pins / 2 - 1) * parameters.p + parameters.od;
16820
+ const innerGap = parameters.w - parameters.od;
16821
+ const sw = innerGap - 1;
16821
16822
  const sh = (parameters.num_pins / 2 - 1) * parameters.p + parameters.od + 0.4;
16822
16823
  const silkscreenBorder = {
16823
16824
  layer: "top",
@@ -16826,7 +16827,7 @@ var dip = (raw_params) => {
16826
16827
  route: [
16827
16828
  { x: -sw / 2, y: -sh / 2 },
16828
16829
  { x: -sw / 2, y: sh / 2 },
16829
- // Little U shape at the top
16830
+ // U-notch curve outside the pads
16830
16831
  ...u_curve.map(({ x, y }) => ({
16831
16832
  x: x * sw / 6,
16832
16833
  y: y * sw / 6 + sh / 2
@@ -16841,24 +16842,26 @@ var dip = (raw_params) => {
16841
16842
  const silkscreenPins = [];
16842
16843
  for (let i = 0; i < parameters.num_pins; i++) {
16843
16844
  const isLeft = i < parameters.num_pins / 2;
16844
- const pinLabelX = isLeft ? -parameters.w / 2 - parameters.p / 2 - 0.2 : parameters.p / 2 + parameters.w / 2 + 0.2;
16845
- const pinLabelY = isLeft ? (-sh + 1.6) / 2 + i * parameters.p : (-sh + 1.6) / 2 + (i - parameters.num_pins / 2) * parameters.p;
16846
- const silkscreenPin2 = {
16845
+ const clearance = 0.6;
16846
+ const { y: pinCenterY } = getCcwDipCoords(
16847
+ parameters.num_pins,
16848
+ i + 1,
16849
+ parameters.w,
16850
+ parameters.p ?? 2.54
16851
+ );
16852
+ const pinLabelX = isLeft ? -parameters.w / 2 - parameters.od / 2 - clearance : parameters.w / 2 + parameters.od / 2 + clearance;
16853
+ const pinLabelY = pinCenterY;
16854
+ silkscreenPins.push({
16847
16855
  type: "pcb_fabrication_note_text",
16856
+ pcb_fabrication_note_text_id: `pin_${i + 1}`,
16848
16857
  layer: "top",
16849
16858
  pcb_component_id: `pin_${i + 1}`,
16850
- pcb_silkscreen_text_id: `pin_${i + 1}`,
16851
16859
  text: `{pin${i + 1}}`,
16852
- anchor_position: {
16853
- x: pinLabelX,
16854
- y: pinLabelY
16855
- },
16860
+ anchor_position: { x: pinLabelX, y: pinLabelY },
16856
16861
  font_size: 0.3,
16857
- font_color: "red",
16858
16862
  font: "tscircuit2024",
16859
- anchor_alignment: "top-left"
16860
- };
16861
- silkscreenPins.push(silkscreenPin2);
16863
+ anchor_alignment: "top_left"
16864
+ });
16862
16865
  }
16863
16866
  const silkscreenRefText = silkscreenRef(0, sh / 2 + 0.5, 0.4);
16864
16867
  return {
@@ -16906,11 +16909,11 @@ var footprintSizes = [
16906
16909
  {
16907
16910
  imperial: "1812",
16908
16911
  metric: "4532",
16909
- p_mm_min: 4.1,
16910
- pw_mm_min: 1.4,
16912
+ p_mm_min: 4.275,
16913
+ pw_mm_min: 1.125,
16911
16914
  ph_mm_min: 3.4,
16912
- w_mm_min: 0.58,
16913
- h_mm_min: 0.21
16915
+ w_mm_min: 5.4,
16916
+ h_mm_min: 3.4
16914
16917
  },
16915
16918
  {
16916
16919
  imperial: "0201",
@@ -16924,65 +16927,65 @@ var footprintSizes = [
16924
16927
  {
16925
16928
  imperial: "0402",
16926
16929
  metric: "1005",
16927
- p_mm_min: 1,
16928
- pw_mm_min: 0.6,
16929
- ph_mm_min: 0.6,
16930
- w_mm_min: 1.6,
16931
- h_mm_min: 0.7
16930
+ p_mm_min: 1.02,
16931
+ pw_mm_min: 0.54,
16932
+ ph_mm_min: 0.64,
16933
+ w_mm_min: 1.56,
16934
+ h_mm_min: 0.64
16932
16935
  },
16933
16936
  {
16934
16937
  imperial: "0603",
16935
16938
  metric: "1608",
16936
- p_mm_min: 1.7,
16937
- pw_mm_min: 1.1,
16938
- ph_mm_min: 1,
16939
- w_mm_min: 2.6,
16940
- h_mm_min: 1
16939
+ p_mm_min: 1.65,
16940
+ pw_mm_min: 0.8,
16941
+ ph_mm_min: 0.95,
16942
+ w_mm_min: 2.45,
16943
+ h_mm_min: 0.95
16941
16944
  },
16942
16945
  {
16943
16946
  imperial: "0805",
16944
16947
  metric: "2012",
16945
- p_mm_min: 2.15,
16946
- pw_mm_min: 0.85,
16947
- ph_mm_min: 1.2,
16948
- w_mm_min: 3,
16949
- h_mm_min: 1.2
16948
+ p_mm_min: 1.825,
16949
+ pw_mm_min: 1.025,
16950
+ ph_mm_min: 1.4,
16951
+ w_mm_min: 2.8499999999999996,
16952
+ h_mm_min: 1.4
16950
16953
  },
16951
16954
  {
16952
16955
  imperial: "1206",
16953
16956
  metric: "3216",
16954
- p_mm_min: 3.2,
16955
- pw_mm_min: 1,
16956
- ph_mm_min: 1.9,
16957
- w_mm_min: 4.2,
16958
- h_mm_min: 2.5
16957
+ p_mm_min: 2.925,
16958
+ pw_mm_min: 1.125,
16959
+ ph_mm_min: 1.75,
16960
+ w_mm_min: 4.05,
16961
+ h_mm_min: 1.75
16959
16962
  },
16960
16963
  {
16961
16964
  imperial: "1210",
16962
16965
  metric: "3225",
16963
- p_mm_min: 2.8,
16964
- pw_mm_min: 1.25,
16966
+ p_mm_min: 2.925,
16967
+ pw_mm_min: 1.125,
16965
16968
  ph_mm_min: 2.65,
16966
- w_mm_min: 4.5,
16967
- h_mm_min: 3.3
16969
+ w_mm_min: 4.05,
16970
+ h_mm_min: 2.65
16968
16971
  },
16969
16972
  {
16970
16973
  imperial: "2010",
16971
16974
  metric: "5025",
16972
- p_mm_min: 3.6,
16973
- pw_mm_min: 1.2,
16974
- ph_mm_min: 1.2,
16975
- w_mm_min: 5,
16976
- h_mm_min: 2.5
16975
+ p_mm_min: 4.625,
16976
+ pw_mm_min: 1.225,
16977
+ ph_mm_min: 2.65,
16978
+ w_mm_min: 5.85,
16979
+ h_mm_min: 2.65
16977
16980
  },
16978
16981
  {
16979
16982
  imperial: "2512",
16980
16983
  metric: "6332",
16981
- p_mm_min: 5.8,
16982
- pw_mm_min: 1.35,
16984
+ p_mm_min: 5.925,
16985
+ pw_mm_min: 1.225,
16983
16986
  ph_mm_min: 3.35,
16984
- w_mm_min: 6.3,
16985
- h_mm_min: 3.2
16987
+ w_mm_min: 7.15,
16988
+ h_mm_min: 3.35
16986
16989
  }
16987
16990
  ];
16988
16991
  var metricMap = Object.fromEntries(footprintSizes.map((s) => [s.metric, s]));
@@ -23496,11 +23499,11 @@ var applyOrigin = (elements, origin) => {
23496
23499
  var string2 = (def) => {
23497
23500
  let fp2 = footprinter();
23498
23501
  const modifiedDef = def.replace(/^((?:\d{4}|\d{5}))(?=$|_)/, "res$1");
23499
- const def_parts = modifiedDef.split("_").map((s) => {
23502
+ const def_parts = modifiedDef.split(/_(?!metric)/).map((s) => {
23500
23503
  const m = s.match(/([a-z]+)([\(\d\.\+\?].*)?/);
23501
23504
  const [_, fn, v] = m ?? [];
23502
23505
  if (v?.includes("?")) return null;
23503
- return { fn, v: m?.[2] };
23506
+ return { fn, v };
23504
23507
  }).filter(isNotNull);
23505
23508
  for (const { fn, v } of def_parts) {
23506
23509
  fp2 = fp2[fn](v);
@@ -23564,7 +23567,11 @@ var footprinter = () => {
23564
23567
  target.fn = prop;
23565
23568
  if (prop === "res" || prop === "cap") {
23566
23569
  if (v) {
23567
- target.imperial = v;
23570
+ if (typeof v === "string" && v.includes("_metric")) {
23571
+ target.metric = v.split("_metric")[0];
23572
+ } else {
23573
+ target.imperial = v;
23574
+ }
23568
23575
  }
23569
23576
  } else {
23570
23577
  target.num_pins = Number.isNaN(Number.parseFloat(v)) ? void 0 : Number.parseFloat(v);
@@ -25337,7 +25344,7 @@ import * as THREE9 from "three";
25337
25344
  // package.json
25338
25345
  var package_default = {
25339
25346
  name: "@tscircuit/3d-viewer",
25340
- version: "0.0.330",
25347
+ version: "0.0.332",
25341
25348
  main: "./dist/index.js",
25342
25349
  module: "./dist/index.js",
25343
25350
  type: "module",
@@ -25385,8 +25392,8 @@ var package_default = {
25385
25392
  "@jscad/modeling": "^2.12.5",
25386
25393
  "@storybook/blocks": "9.0.0-alpha.17",
25387
25394
  "@storybook/react-vite": "^9.1.2",
25388
- "@tscircuit/circuit-json-util": "^0.0.64",
25389
- "@tscircuit/core": "^0.0.626",
25395
+ "@tscircuit/circuit-json-util": "^0.0.65",
25396
+ "@tscircuit/core": "^0.0.629",
25390
25397
  "@tscircuit/props": "^0.0.285",
25391
25398
  "@types/jsdom": "^21.1.7",
25392
25399
  "@types/react": "19",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tscircuit/3d-viewer",
3
- "version": "0.0.331",
3
+ "version": "0.0.333",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.js",
6
6
  "type": "module",
@@ -48,8 +48,8 @@
48
48
  "@jscad/modeling": "^2.12.5",
49
49
  "@storybook/blocks": "9.0.0-alpha.17",
50
50
  "@storybook/react-vite": "^9.1.2",
51
- "@tscircuit/circuit-json-util": "^0.0.64",
52
- "@tscircuit/core": "^0.0.626",
51
+ "@tscircuit/circuit-json-util": "^0.0.65",
52
+ "@tscircuit/core": "^0.0.629",
53
53
  "@tscircuit/props": "^0.0.285",
54
54
  "@types/jsdom": "^21.1.7",
55
55
  "@types/react": "19",