jscad-electronics 0.0.170 → 0.0.171
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.d.ts +7 -2
- package/dist/index.js +251 -250
- package/dist/index.js.map +1 -1
- package/dist/vanilla.js +133 -132
- package/dist/vanilla.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1058,9 +1058,150 @@ var Tssop = ({
|
|
|
1058
1058
|
] });
|
|
1059
1059
|
};
|
|
1060
1060
|
|
|
1061
|
-
// lib/
|
|
1061
|
+
// lib/utils/DualRowGullWing.tsx
|
|
1062
|
+
import {
|
|
1063
|
+
Colorize as Colorize7,
|
|
1064
|
+
Cuboid as Cuboid14,
|
|
1065
|
+
Cylinder as Cylinder5,
|
|
1066
|
+
Hull as Hull4,
|
|
1067
|
+
Subtract as Subtract3,
|
|
1068
|
+
Translate as Translate8,
|
|
1069
|
+
Union as Union4
|
|
1070
|
+
} from "jscad-fiber";
|
|
1062
1071
|
import { Fragment as Fragment15, jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1063
|
-
|
|
1072
|
+
function createDualRowGullWing(p) {
|
|
1073
|
+
const {
|
|
1074
|
+
pinCount,
|
|
1075
|
+
pitch,
|
|
1076
|
+
bodyWidth,
|
|
1077
|
+
bodyLength: bodyLength10,
|
|
1078
|
+
bodyHeight,
|
|
1079
|
+
standoff,
|
|
1080
|
+
leadSpan,
|
|
1081
|
+
leadWidth,
|
|
1082
|
+
leadThickness,
|
|
1083
|
+
contactLength,
|
|
1084
|
+
taperInset,
|
|
1085
|
+
exposedPadWidth = 0,
|
|
1086
|
+
exposedPadLength = 0
|
|
1087
|
+
} = p;
|
|
1088
|
+
for (const key of [
|
|
1089
|
+
"pitch",
|
|
1090
|
+
"bodyWidth",
|
|
1091
|
+
"bodyLength",
|
|
1092
|
+
"bodyHeight",
|
|
1093
|
+
"leadSpan",
|
|
1094
|
+
"leadWidth",
|
|
1095
|
+
"leadThickness",
|
|
1096
|
+
"contactLength"
|
|
1097
|
+
])
|
|
1098
|
+
if (!Number.isFinite(p[key]) || p[key] <= 0)
|
|
1099
|
+
throw new Error(`${key} must be finite and positive`);
|
|
1100
|
+
for (const [name, value] of Object.entries({
|
|
1101
|
+
standoff,
|
|
1102
|
+
taperInset,
|
|
1103
|
+
exposedPadWidth,
|
|
1104
|
+
exposedPadLength
|
|
1105
|
+
}))
|
|
1106
|
+
if (!Number.isFinite(value) || value < 0)
|
|
1107
|
+
throw new Error(`${name} must be finite and nonnegative`);
|
|
1108
|
+
if (!Number.isInteger(pinCount) || pinCount < 4 || pinCount % 2)
|
|
1109
|
+
throw new Error("pinCount must be even and at least 4");
|
|
1110
|
+
const moldHeight = bodyHeight - standoff;
|
|
1111
|
+
const reach = (leadSpan - bodyWidth) / 2;
|
|
1112
|
+
const rowLength = (pinCount / 2 - 1) * pitch + leadWidth;
|
|
1113
|
+
if (moldHeight <= leadThickness * 2 || leadWidth >= pitch || rowLength >= bodyLength10 - 2 * taperInset || taperInset * 2 >= Math.min(bodyWidth, bodyLength10) || contactLength >= reach)
|
|
1114
|
+
throw new Error("Invalid mold, lead spacing, or terminal reach");
|
|
1115
|
+
if (exposedPadWidth === 0 !== (exposedPadLength === 0) || exposedPadWidth >= bodyWidth - 2 * taperInset || exposedPadLength >= bodyLength10 - 2 * taperInset)
|
|
1116
|
+
throw new Error("Exposed pad must fit inside the bottom mold face");
|
|
1117
|
+
const midZ = standoff + moldHeight / 2;
|
|
1118
|
+
const slice = Math.min(2e-3, moldHeight / 100);
|
|
1119
|
+
const body = /* @__PURE__ */ jsxs17(Hull4, { children: [
|
|
1120
|
+
/* @__PURE__ */ jsx19(Translate8, { z: standoff + slice / 2, children: /* @__PURE__ */ jsx19(
|
|
1121
|
+
Cuboid14,
|
|
1122
|
+
{
|
|
1123
|
+
size: [
|
|
1124
|
+
bodyWidth - 2 * taperInset,
|
|
1125
|
+
bodyLength10 - 2 * taperInset,
|
|
1126
|
+
slice
|
|
1127
|
+
]
|
|
1128
|
+
}
|
|
1129
|
+
) }),
|
|
1130
|
+
/* @__PURE__ */ jsx19(Translate8, { z: midZ, children: /* @__PURE__ */ jsx19(Cuboid14, { size: [bodyWidth, bodyLength10, slice] }) }),
|
|
1131
|
+
/* @__PURE__ */ jsx19(Translate8, { z: bodyHeight - slice / 2, children: /* @__PURE__ */ jsx19(
|
|
1132
|
+
Cuboid14,
|
|
1133
|
+
{
|
|
1134
|
+
size: [
|
|
1135
|
+
bodyWidth - 2 * taperInset,
|
|
1136
|
+
bodyLength10 - 2 * taperInset,
|
|
1137
|
+
slice
|
|
1138
|
+
]
|
|
1139
|
+
}
|
|
1140
|
+
) })
|
|
1141
|
+
] });
|
|
1142
|
+
const dimpleRadius = Math.min(bodyWidth, bodyLength10) * 0.045;
|
|
1143
|
+
const dimpleDepth = Math.min(0.04, moldHeight / 10);
|
|
1144
|
+
const lead = (side, y) => {
|
|
1145
|
+
const outer = leadSpan / 2;
|
|
1146
|
+
const root = bodyWidth / 2 - Math.min(bodyWidth / 8, 0.15);
|
|
1147
|
+
const bendStart = outer - contactLength;
|
|
1148
|
+
const bendEnd = bodyWidth / 2 + Math.min(0.08, (reach - contactLength) / 4);
|
|
1149
|
+
const points = [
|
|
1150
|
+
[outer - slice / 2, leadThickness / 2],
|
|
1151
|
+
[bendStart, leadThickness / 2]
|
|
1152
|
+
];
|
|
1153
|
+
for (let i = 1; i <= 12; i++) {
|
|
1154
|
+
const t = i / 12;
|
|
1155
|
+
points.push([
|
|
1156
|
+
bendStart + (bendEnd - bendStart) * t,
|
|
1157
|
+
leadThickness / 2 + (midZ - leadThickness / 2) * t * t * (3 - 2 * t)
|
|
1158
|
+
]);
|
|
1159
|
+
}
|
|
1160
|
+
points.push([root, midZ]);
|
|
1161
|
+
const section = ([x, z]) => /* @__PURE__ */ jsx19(Translate8, { offset: { x: side * x, y, z }, children: /* @__PURE__ */ jsx19(Cuboid14, { size: [slice, leadWidth, leadThickness] }) });
|
|
1162
|
+
return /* @__PURE__ */ jsx19(Union4, { children: points.slice(1).map((point, i) => /* @__PURE__ */ jsxs17(Hull4, { children: [
|
|
1163
|
+
section(points[i]),
|
|
1164
|
+
section(point)
|
|
1165
|
+
] }, i)) });
|
|
1166
|
+
};
|
|
1167
|
+
return /* @__PURE__ */ jsxs17(Fragment15, { children: [
|
|
1168
|
+
/* @__PURE__ */ jsx19(Colorize7, { color: "#353535", children: /* @__PURE__ */ jsxs17(Subtract3, { children: [
|
|
1169
|
+
body,
|
|
1170
|
+
/* @__PURE__ */ jsx19(
|
|
1171
|
+
Translate8,
|
|
1172
|
+
{
|
|
1173
|
+
offset: {
|
|
1174
|
+
x: -bodyWidth / 2 + taperInset + dimpleRadius * 2,
|
|
1175
|
+
y: bodyLength10 / 2 - taperInset - dimpleRadius * 2,
|
|
1176
|
+
z: bodyHeight
|
|
1177
|
+
},
|
|
1178
|
+
children: /* @__PURE__ */ jsx19(Cylinder5, { radius: dimpleRadius, height: dimpleDepth * 2 })
|
|
1179
|
+
}
|
|
1180
|
+
)
|
|
1181
|
+
] }) }),
|
|
1182
|
+
/* @__PURE__ */ jsx19(Colorize7, { color: "#bfc1c4", children: Array.from(
|
|
1183
|
+
{ length: pinCount },
|
|
1184
|
+
(_, i) => lead(
|
|
1185
|
+
i < pinCount / 2 ? -1 : 1,
|
|
1186
|
+
((pinCount / 2 - 1) / 2 - i % (pinCount / 2)) * pitch
|
|
1187
|
+
)
|
|
1188
|
+
) }),
|
|
1189
|
+
exposedPadWidth > 0 && /* @__PURE__ */ jsx19(Colorize7, { color: "#bfc1c4", children: /* @__PURE__ */ jsx19(Translate8, { z: (standoff + leadThickness) / 2, children: /* @__PURE__ */ jsx19(
|
|
1190
|
+
Cuboid14,
|
|
1191
|
+
{
|
|
1192
|
+
size: [
|
|
1193
|
+
exposedPadWidth,
|
|
1194
|
+
exposedPadLength,
|
|
1195
|
+
standoff + leadThickness
|
|
1196
|
+
]
|
|
1197
|
+
}
|
|
1198
|
+
) }) })
|
|
1199
|
+
] });
|
|
1200
|
+
}
|
|
1201
|
+
|
|
1202
|
+
// lib/MSOP.tsx
|
|
1203
|
+
import { Fragment as Fragment16, jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1204
|
+
var LegacyMSOP = ({
|
|
1064
1205
|
pinCount,
|
|
1065
1206
|
padContactLength = 0.4,
|
|
1066
1207
|
leadWidth = 0.2,
|
|
@@ -1070,8 +1211,8 @@ var MSOP = ({
|
|
|
1070
1211
|
const sidePinCount = Math.ceil(pinCount / 2);
|
|
1071
1212
|
const pinOffsetToCenter = (sidePinCount - 1) * pitch / 2;
|
|
1072
1213
|
const leadThickness = 0.2;
|
|
1073
|
-
return /* @__PURE__ */
|
|
1074
|
-
Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */
|
|
1214
|
+
return /* @__PURE__ */ jsxs18(Fragment16, { children: [
|
|
1215
|
+
Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ jsx20(
|
|
1075
1216
|
SmdChipLead,
|
|
1076
1217
|
{
|
|
1077
1218
|
position: {
|
|
@@ -1087,7 +1228,7 @@ var MSOP = ({
|
|
|
1087
1228
|
},
|
|
1088
1229
|
i
|
|
1089
1230
|
)),
|
|
1090
|
-
Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */
|
|
1231
|
+
Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ jsx20(
|
|
1091
1232
|
SmdChipLead,
|
|
1092
1233
|
{
|
|
1093
1234
|
rotation: Math.PI,
|
|
@@ -1104,7 +1245,7 @@ var MSOP = ({
|
|
|
1104
1245
|
},
|
|
1105
1246
|
i
|
|
1106
1247
|
)),
|
|
1107
|
-
/* @__PURE__ */
|
|
1248
|
+
/* @__PURE__ */ jsx20(
|
|
1108
1249
|
ChipBody,
|
|
1109
1250
|
{
|
|
1110
1251
|
center: { x: 0, y: 0, z: leadThickness / 2 },
|
|
@@ -1118,9 +1259,10 @@ var MSOP = ({
|
|
|
1118
1259
|
)
|
|
1119
1260
|
] });
|
|
1120
1261
|
};
|
|
1262
|
+
var MSOP = (props) => "leadSpan" in props ? createDualRowGullWing(props) : LegacyMSOP(props);
|
|
1121
1263
|
|
|
1122
1264
|
// lib/qfp.tsx
|
|
1123
|
-
import { Fragment as
|
|
1265
|
+
import { Fragment as Fragment17, jsx as jsx21, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1124
1266
|
var QFP = ({
|
|
1125
1267
|
pinCount,
|
|
1126
1268
|
pitch,
|
|
@@ -1144,8 +1286,8 @@ var QFP = ({
|
|
|
1144
1286
|
const bodyDistance = leadReach;
|
|
1145
1287
|
const fullPadContactLength = leadReach * 0.5;
|
|
1146
1288
|
const curveLength = leadReach * 0.18;
|
|
1147
|
-
return /* @__PURE__ */
|
|
1148
|
-
Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */
|
|
1289
|
+
return /* @__PURE__ */ jsxs19(Fragment17, { children: [
|
|
1290
|
+
Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ jsx21(
|
|
1149
1291
|
SmdChipLead,
|
|
1150
1292
|
{
|
|
1151
1293
|
position: {
|
|
@@ -1162,7 +1304,7 @@ var QFP = ({
|
|
|
1162
1304
|
},
|
|
1163
1305
|
`left-${i}`
|
|
1164
1306
|
)),
|
|
1165
|
-
Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */
|
|
1307
|
+
Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ jsx21(
|
|
1166
1308
|
SmdChipLead,
|
|
1167
1309
|
{
|
|
1168
1310
|
rotation: Math.PI,
|
|
@@ -1180,7 +1322,7 @@ var QFP = ({
|
|
|
1180
1322
|
},
|
|
1181
1323
|
`right-${i}`
|
|
1182
1324
|
)),
|
|
1183
|
-
Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */
|
|
1325
|
+
Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ jsx21(
|
|
1184
1326
|
SmdChipLead,
|
|
1185
1327
|
{
|
|
1186
1328
|
rotation: Math.PI / 2,
|
|
@@ -1198,7 +1340,7 @@ var QFP = ({
|
|
|
1198
1340
|
},
|
|
1199
1341
|
`bottom-${i}`
|
|
1200
1342
|
)),
|
|
1201
|
-
Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */
|
|
1343
|
+
Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ jsx21(
|
|
1202
1344
|
SmdChipLead,
|
|
1203
1345
|
{
|
|
1204
1346
|
rotation: -Math.PI / 2,
|
|
@@ -1216,7 +1358,7 @@ var QFP = ({
|
|
|
1216
1358
|
},
|
|
1217
1359
|
`top-${i}`
|
|
1218
1360
|
)),
|
|
1219
|
-
/* @__PURE__ */
|
|
1361
|
+
/* @__PURE__ */ jsx21(
|
|
1220
1362
|
ChipBody,
|
|
1221
1363
|
{
|
|
1222
1364
|
center: { x: 0, y: 0, z: 0 },
|
|
@@ -1278,8 +1420,8 @@ var getLeadWidth = (pinCount, width10) => {
|
|
|
1278
1420
|
};
|
|
1279
1421
|
|
|
1280
1422
|
// lib/PinHeader.tsx
|
|
1281
|
-
import { Colorize as
|
|
1282
|
-
import { Fragment as
|
|
1423
|
+
import { Colorize as Colorize8, Cuboid as Cuboid15, Hull as Hull5, Rotate as Rotate6, Translate as Translate9 } from "jscad-fiber";
|
|
1424
|
+
import { Fragment as Fragment18, jsx as jsx22, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1283
1425
|
var PIN_METAL_COLOR = "#c0c0c0";
|
|
1284
1426
|
var PinHeader = ({
|
|
1285
1427
|
x,
|
|
@@ -1294,16 +1436,16 @@ var PinHeader = ({
|
|
|
1294
1436
|
smd,
|
|
1295
1437
|
rightangle
|
|
1296
1438
|
}) => {
|
|
1297
|
-
return /* @__PURE__ */
|
|
1298
|
-
/* @__PURE__ */
|
|
1299
|
-
|
|
1439
|
+
return /* @__PURE__ */ jsxs20(Fragment18, { children: [
|
|
1440
|
+
/* @__PURE__ */ jsx22(Translate9, { y: rightangle ? -3 : 0, children: /* @__PURE__ */ jsx22(
|
|
1441
|
+
Cuboid15,
|
|
1300
1442
|
{
|
|
1301
1443
|
color: "#222",
|
|
1302
1444
|
size: [bodyLength10, bodyWidth, bodyHeight],
|
|
1303
1445
|
center: [x, y, flipZ(bodyHeight / 2)]
|
|
1304
1446
|
}
|
|
1305
1447
|
) }),
|
|
1306
|
-
/* @__PURE__ */
|
|
1448
|
+
/* @__PURE__ */ jsx22(Colorize8, { color: PIN_METAL_COLOR, children: smd ? /* @__PURE__ */ jsx22(
|
|
1307
1449
|
SmdChipLead,
|
|
1308
1450
|
{
|
|
1309
1451
|
rotation: -Math.PI / 2,
|
|
@@ -1318,17 +1460,17 @@ var PinHeader = ({
|
|
|
1318
1460
|
padContactLength: 2,
|
|
1319
1461
|
bodyDistance: 3
|
|
1320
1462
|
}
|
|
1321
|
-
) : /* @__PURE__ */
|
|
1322
|
-
/* @__PURE__ */
|
|
1323
|
-
|
|
1463
|
+
) : /* @__PURE__ */ jsxs20(Hull5, { children: [
|
|
1464
|
+
/* @__PURE__ */ jsx22(
|
|
1465
|
+
Cuboid15,
|
|
1324
1466
|
{
|
|
1325
1467
|
color: PIN_METAL_COLOR,
|
|
1326
1468
|
size: [pinThickness, pinThickness, shortSidePinLength * 0.9],
|
|
1327
1469
|
center: [x, y, flipZ(bodyHeight * 0.9 + bodyHeight / 2)]
|
|
1328
1470
|
}
|
|
1329
1471
|
),
|
|
1330
|
-
/* @__PURE__ */
|
|
1331
|
-
|
|
1472
|
+
/* @__PURE__ */ jsx22(
|
|
1473
|
+
Cuboid15,
|
|
1332
1474
|
{
|
|
1333
1475
|
color: PIN_METAL_COLOR,
|
|
1334
1476
|
size: [
|
|
@@ -1340,17 +1482,17 @@ var PinHeader = ({
|
|
|
1340
1482
|
}
|
|
1341
1483
|
)
|
|
1342
1484
|
] }) }),
|
|
1343
|
-
/* @__PURE__ */
|
|
1344
|
-
/* @__PURE__ */
|
|
1345
|
-
|
|
1485
|
+
/* @__PURE__ */ jsx22(Colorize8, { color: PIN_METAL_COLOR, children: /* @__PURE__ */ jsx22(Translate9, { y: rightangle ? -3.9 : 0, z: rightangle ? 1 : 0, children: /* @__PURE__ */ jsx22(Rotate6, { rotation: rightangle ? [-Math.PI / 2, 0, 0] : [0, 0, 0], children: /* @__PURE__ */ jsxs20(Hull5, { children: [
|
|
1486
|
+
/* @__PURE__ */ jsx22(
|
|
1487
|
+
Cuboid15,
|
|
1346
1488
|
{
|
|
1347
1489
|
color: PIN_METAL_COLOR,
|
|
1348
1490
|
size: [pinThickness, pinThickness, longSidePinLength * 0.9],
|
|
1349
1491
|
center: [x, y, flipZ(-longSidePinLength / 2 * 0.9)]
|
|
1350
1492
|
}
|
|
1351
1493
|
),
|
|
1352
|
-
/* @__PURE__ */
|
|
1353
|
-
|
|
1494
|
+
/* @__PURE__ */ jsx22(
|
|
1495
|
+
Cuboid15,
|
|
1354
1496
|
{
|
|
1355
1497
|
color: PIN_METAL_COLOR,
|
|
1356
1498
|
size: [
|
|
@@ -1366,7 +1508,7 @@ var PinHeader = ({
|
|
|
1366
1508
|
};
|
|
1367
1509
|
|
|
1368
1510
|
// lib/PinRow.tsx
|
|
1369
|
-
import { Fragment as
|
|
1511
|
+
import { Fragment as Fragment19, jsx as jsx23 } from "react/jsx-runtime";
|
|
1370
1512
|
var PinRow = ({
|
|
1371
1513
|
numberOfPins,
|
|
1372
1514
|
pitch = 2.54,
|
|
@@ -1385,12 +1527,12 @@ var PinRow = ({
|
|
|
1385
1527
|
const throughHole = !smd && !rightangle;
|
|
1386
1528
|
const flipped = throughHole ? !invert : Boolean(invert);
|
|
1387
1529
|
const flipZ = (z) => flipped ? -z + bodyHeight : z;
|
|
1388
|
-
return /* @__PURE__ */
|
|
1530
|
+
return /* @__PURE__ */ jsx23(Fragment19, { children: Array.from({ length: numberOfPins }, (_, i) => {
|
|
1389
1531
|
const row = Math.floor(i / pinsPerRow);
|
|
1390
1532
|
const col = i % pinsPerRow;
|
|
1391
1533
|
const x = xoff + col * pitch;
|
|
1392
1534
|
const y = ((rows - 1) / 2 - row) * rowSpacing;
|
|
1393
|
-
return /* @__PURE__ */
|
|
1535
|
+
return /* @__PURE__ */ jsx23(
|
|
1394
1536
|
PinHeader,
|
|
1395
1537
|
{
|
|
1396
1538
|
x,
|
|
@@ -1409,7 +1551,7 @@ var PinRow = ({
|
|
|
1409
1551
|
};
|
|
1410
1552
|
|
|
1411
1553
|
// lib/qfn.tsx
|
|
1412
|
-
import { Cuboid as
|
|
1554
|
+
import { Cuboid as Cuboid16, Colorize as Colorize9 } from "jscad-fiber";
|
|
1413
1555
|
|
|
1414
1556
|
// lib/utils/getQuadCoords.ts
|
|
1415
1557
|
var getQuadCoords = (params) => {
|
|
@@ -1499,7 +1641,7 @@ var getQuadPinMap = ({
|
|
|
1499
1641
|
};
|
|
1500
1642
|
|
|
1501
1643
|
// lib/qfn.tsx
|
|
1502
|
-
import { Fragment as
|
|
1644
|
+
import { Fragment as Fragment20, jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
1503
1645
|
var QFN = ({
|
|
1504
1646
|
num_pins = 16,
|
|
1505
1647
|
bodyWidth = 9,
|
|
@@ -1541,24 +1683,24 @@ var QFN = ({
|
|
|
1541
1683
|
const pn = pin_map[i + 1];
|
|
1542
1684
|
pinPositions.push({ pn, x, y, pw, pl });
|
|
1543
1685
|
}
|
|
1544
|
-
return /* @__PURE__ */
|
|
1545
|
-
/* @__PURE__ */
|
|
1546
|
-
|
|
1686
|
+
return /* @__PURE__ */ jsxs21(Fragment20, { children: [
|
|
1687
|
+
/* @__PURE__ */ jsx24(Colorize9, { color: "grey", children: /* @__PURE__ */ jsx24(
|
|
1688
|
+
Cuboid16,
|
|
1547
1689
|
{
|
|
1548
1690
|
center: [0, 0, bodyThickness / 2],
|
|
1549
1691
|
size: [bodyWidth, bodyLength10, bodyThickness]
|
|
1550
1692
|
}
|
|
1551
1693
|
) }),
|
|
1552
|
-
pinPositions.map((p, i) => /* @__PURE__ */
|
|
1553
|
-
|
|
1694
|
+
pinPositions.map((p, i) => /* @__PURE__ */ jsx24(
|
|
1695
|
+
Cuboid16,
|
|
1554
1696
|
{
|
|
1555
1697
|
center: [p.x, p.y, thermalPadThickness / 2],
|
|
1556
1698
|
size: [p.pw, p.pl, thermalPadThickness]
|
|
1557
1699
|
},
|
|
1558
1700
|
i
|
|
1559
1701
|
)),
|
|
1560
|
-
thermalPadSize?.length !== void 0 && thermalPadSize?.width !== void 0 && /* @__PURE__ */
|
|
1561
|
-
|
|
1702
|
+
thermalPadSize?.length !== void 0 && thermalPadSize?.width !== void 0 && /* @__PURE__ */ jsx24(
|
|
1703
|
+
Cuboid16,
|
|
1562
1704
|
{
|
|
1563
1705
|
center: [0, 0, thermalPadThickness / 2],
|
|
1564
1706
|
size: [
|
|
@@ -1573,7 +1715,7 @@ var QFN = ({
|
|
|
1573
1715
|
var qfn_default = QFN;
|
|
1574
1716
|
|
|
1575
1717
|
// lib/SOT-235.tsx
|
|
1576
|
-
import { Fragment as
|
|
1718
|
+
import { Fragment as Fragment21, jsx as jsx25, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
1577
1719
|
var SOT235 = () => {
|
|
1578
1720
|
const fullWidth = 2.8;
|
|
1579
1721
|
const bodyWidth = 1.6;
|
|
@@ -1585,8 +1727,8 @@ var SOT235 = () => {
|
|
|
1585
1727
|
const padContactLength = 0.5;
|
|
1586
1728
|
const padPitch = 0.95;
|
|
1587
1729
|
const extendedBodyDistance = fullWidth - bodyWidth;
|
|
1588
|
-
return /* @__PURE__ */
|
|
1589
|
-
/* @__PURE__ */
|
|
1730
|
+
return /* @__PURE__ */ jsxs22(Fragment21, { children: [
|
|
1731
|
+
/* @__PURE__ */ jsx25(
|
|
1590
1732
|
SmdChipLead,
|
|
1591
1733
|
{
|
|
1592
1734
|
rotation: Math.PI,
|
|
@@ -1603,7 +1745,7 @@ var SOT235 = () => {
|
|
|
1603
1745
|
},
|
|
1604
1746
|
1
|
|
1605
1747
|
),
|
|
1606
|
-
/* @__PURE__ */
|
|
1748
|
+
/* @__PURE__ */ jsx25(
|
|
1607
1749
|
SmdChipLead,
|
|
1608
1750
|
{
|
|
1609
1751
|
rotation: Math.PI,
|
|
@@ -1620,7 +1762,7 @@ var SOT235 = () => {
|
|
|
1620
1762
|
},
|
|
1621
1763
|
2
|
|
1622
1764
|
),
|
|
1623
|
-
/* @__PURE__ */
|
|
1765
|
+
/* @__PURE__ */ jsx25(
|
|
1624
1766
|
SmdChipLead,
|
|
1625
1767
|
{
|
|
1626
1768
|
position: {
|
|
@@ -1636,7 +1778,7 @@ var SOT235 = () => {
|
|
|
1636
1778
|
},
|
|
1637
1779
|
3
|
|
1638
1780
|
),
|
|
1639
|
-
/* @__PURE__ */
|
|
1781
|
+
/* @__PURE__ */ jsx25(
|
|
1640
1782
|
SmdChipLead,
|
|
1641
1783
|
{
|
|
1642
1784
|
position: {
|
|
@@ -1652,7 +1794,7 @@ var SOT235 = () => {
|
|
|
1652
1794
|
},
|
|
1653
1795
|
1
|
|
1654
1796
|
),
|
|
1655
|
-
/* @__PURE__ */
|
|
1797
|
+
/* @__PURE__ */ jsx25(
|
|
1656
1798
|
SmdChipLead,
|
|
1657
1799
|
{
|
|
1658
1800
|
position: {
|
|
@@ -1668,7 +1810,7 @@ var SOT235 = () => {
|
|
|
1668
1810
|
},
|
|
1669
1811
|
2
|
|
1670
1812
|
),
|
|
1671
|
-
/* @__PURE__ */
|
|
1813
|
+
/* @__PURE__ */ jsx25(
|
|
1672
1814
|
ChipBody,
|
|
1673
1815
|
{
|
|
1674
1816
|
center: { x: 0, y: 0, z: 0 },
|
|
@@ -1682,7 +1824,7 @@ var SOT235 = () => {
|
|
|
1682
1824
|
var SOT_235_default = SOT235;
|
|
1683
1825
|
|
|
1684
1826
|
// lib/SOT-23-3P.tsx
|
|
1685
|
-
import { Fragment as
|
|
1827
|
+
import { Fragment as Fragment22, jsx as jsx26, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
1686
1828
|
var SOT233P = ({
|
|
1687
1829
|
fullWidth = 2.9,
|
|
1688
1830
|
fullLength: fullLength10 = 2.8,
|
|
@@ -1697,8 +1839,8 @@ var SOT233P = ({
|
|
|
1697
1839
|
const padContactLength = 0.4;
|
|
1698
1840
|
const padThickness = leadThickness / 2;
|
|
1699
1841
|
const extendedBodyDistance = (fullWidth - bodyWidth) / 2 + 0.3;
|
|
1700
|
-
return /* @__PURE__ */
|
|
1701
|
-
/* @__PURE__ */
|
|
1842
|
+
return /* @__PURE__ */ jsxs23(Fragment22, { children: [
|
|
1843
|
+
/* @__PURE__ */ jsx26(
|
|
1702
1844
|
SmdChipLead,
|
|
1703
1845
|
{
|
|
1704
1846
|
position: {
|
|
@@ -1714,7 +1856,7 @@ var SOT233P = ({
|
|
|
1714
1856
|
},
|
|
1715
1857
|
1
|
|
1716
1858
|
),
|
|
1717
|
-
/* @__PURE__ */
|
|
1859
|
+
/* @__PURE__ */ jsx26(
|
|
1718
1860
|
SmdChipLead,
|
|
1719
1861
|
{
|
|
1720
1862
|
position: {
|
|
@@ -1730,7 +1872,7 @@ var SOT233P = ({
|
|
|
1730
1872
|
},
|
|
1731
1873
|
2
|
|
1732
1874
|
),
|
|
1733
|
-
/* @__PURE__ */
|
|
1875
|
+
/* @__PURE__ */ jsx26(
|
|
1734
1876
|
SmdChipLead,
|
|
1735
1877
|
{
|
|
1736
1878
|
rotation: Math.PI,
|
|
@@ -1747,7 +1889,7 @@ var SOT233P = ({
|
|
|
1747
1889
|
},
|
|
1748
1890
|
3
|
|
1749
1891
|
),
|
|
1750
|
-
/* @__PURE__ */
|
|
1892
|
+
/* @__PURE__ */ jsx26(
|
|
1751
1893
|
ChipBody,
|
|
1752
1894
|
{
|
|
1753
1895
|
center: { x: 0, y: 0, z: 0 },
|
|
@@ -1761,7 +1903,7 @@ var SOT233P = ({
|
|
|
1761
1903
|
};
|
|
1762
1904
|
|
|
1763
1905
|
// lib/SOT-23W.tsx
|
|
1764
|
-
import { Fragment as
|
|
1906
|
+
import { Fragment as Fragment23, jsx as jsx27, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
1765
1907
|
var SOT23W = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
|
|
1766
1908
|
const bodyWidth = 1.92;
|
|
1767
1909
|
const bodyLength10 = 2.9;
|
|
@@ -1772,8 +1914,8 @@ var SOT23W = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
|
|
|
1772
1914
|
const padContactLength = 0.25;
|
|
1773
1915
|
const padThickness = leadThickness / 2;
|
|
1774
1916
|
const extendedBodyDistance = (fullWidth - bodyWidth) / 2 + 0.3;
|
|
1775
|
-
return /* @__PURE__ */
|
|
1776
|
-
/* @__PURE__ */
|
|
1917
|
+
return /* @__PURE__ */ jsxs24(Fragment23, { children: [
|
|
1918
|
+
/* @__PURE__ */ jsx27(
|
|
1777
1919
|
SmdChipLead,
|
|
1778
1920
|
{
|
|
1779
1921
|
rotation: Math.PI,
|
|
@@ -1790,7 +1932,7 @@ var SOT23W = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
|
|
|
1790
1932
|
},
|
|
1791
1933
|
1
|
|
1792
1934
|
),
|
|
1793
|
-
/* @__PURE__ */
|
|
1935
|
+
/* @__PURE__ */ jsx27(
|
|
1794
1936
|
SmdChipLead,
|
|
1795
1937
|
{
|
|
1796
1938
|
position: {
|
|
@@ -1806,7 +1948,7 @@ var SOT23W = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
|
|
|
1806
1948
|
},
|
|
1807
1949
|
2
|
|
1808
1950
|
),
|
|
1809
|
-
/* @__PURE__ */
|
|
1951
|
+
/* @__PURE__ */ jsx27(
|
|
1810
1952
|
SmdChipLead,
|
|
1811
1953
|
{
|
|
1812
1954
|
position: {
|
|
@@ -1822,7 +1964,7 @@ var SOT23W = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
|
|
|
1822
1964
|
},
|
|
1823
1965
|
3
|
|
1824
1966
|
),
|
|
1825
|
-
/* @__PURE__ */
|
|
1967
|
+
/* @__PURE__ */ jsx27(
|
|
1826
1968
|
ChipBody,
|
|
1827
1969
|
{
|
|
1828
1970
|
center: { x: 0, y: 0, z: 0 },
|
|
@@ -1837,8 +1979,8 @@ var SOT23W = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
|
|
|
1837
1979
|
};
|
|
1838
1980
|
|
|
1839
1981
|
// lib/FemaleHeader.tsx
|
|
1840
|
-
import { Colorize as
|
|
1841
|
-
import { Fragment as
|
|
1982
|
+
import { Colorize as Colorize10, Cuboid as Cuboid17, Hull as Hull6, Subtract as Subtract4 } from "jscad-fiber";
|
|
1983
|
+
import { Fragment as Fragment24, jsx as jsx28, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
1842
1984
|
var FemaleHeader = ({
|
|
1843
1985
|
x,
|
|
1844
1986
|
y,
|
|
@@ -1860,33 +2002,33 @@ var FemaleHeader = ({
|
|
|
1860
2002
|
const socketCenterZ = flipZ(z + socketDepth / 2);
|
|
1861
2003
|
const socketEntryBaseZ = z + bodyHeight - socketEntryHeight;
|
|
1862
2004
|
const gapWidth = pinThickness * 1.6;
|
|
1863
|
-
return /* @__PURE__ */
|
|
1864
|
-
/* @__PURE__ */
|
|
1865
|
-
/* @__PURE__ */
|
|
1866
|
-
|
|
2005
|
+
return /* @__PURE__ */ jsxs25(Fragment24, { children: [
|
|
2006
|
+
/* @__PURE__ */ jsx28(Colorize10, { color: "#1a1a1a", children: /* @__PURE__ */ jsxs25(Subtract4, { children: [
|
|
2007
|
+
/* @__PURE__ */ jsx28(
|
|
2008
|
+
Cuboid17,
|
|
1867
2009
|
{
|
|
1868
2010
|
color: "#000",
|
|
1869
2011
|
size: [bodyLength10, bodyWidth, bodyHeight],
|
|
1870
2012
|
center: [x, y, flipZ(z + bodyHeight / 2)]
|
|
1871
2013
|
}
|
|
1872
2014
|
),
|
|
1873
|
-
/* @__PURE__ */
|
|
1874
|
-
|
|
2015
|
+
/* @__PURE__ */ jsx28(
|
|
2016
|
+
Cuboid17,
|
|
1875
2017
|
{
|
|
1876
2018
|
size: [socketWidth, socketWidth, socketDepth],
|
|
1877
2019
|
center: [x, y, socketCenterZ]
|
|
1878
2020
|
}
|
|
1879
2021
|
),
|
|
1880
|
-
/* @__PURE__ */
|
|
1881
|
-
/* @__PURE__ */
|
|
1882
|
-
|
|
2022
|
+
/* @__PURE__ */ jsxs25(Hull6, { children: [
|
|
2023
|
+
/* @__PURE__ */ jsx28(
|
|
2024
|
+
Cuboid17,
|
|
1883
2025
|
{
|
|
1884
2026
|
size: [socketWidth, socketWidth, 0.01],
|
|
1885
2027
|
center: [x, y, flipZ(socketEntryBaseZ)]
|
|
1886
2028
|
}
|
|
1887
2029
|
),
|
|
1888
|
-
/* @__PURE__ */
|
|
1889
|
-
|
|
2030
|
+
/* @__PURE__ */ jsx28(
|
|
2031
|
+
Cuboid17,
|
|
1890
2032
|
{
|
|
1891
2033
|
size: [socketEntryWidth, socketEntryWidth, 0.01],
|
|
1892
2034
|
center: [x, y, flipZ(z + bodyHeight)]
|
|
@@ -1894,18 +2036,18 @@ var FemaleHeader = ({
|
|
|
1894
2036
|
)
|
|
1895
2037
|
] })
|
|
1896
2038
|
] }) }),
|
|
1897
|
-
/* @__PURE__ */
|
|
1898
|
-
/* @__PURE__ */
|
|
1899
|
-
/* @__PURE__ */
|
|
1900
|
-
|
|
2039
|
+
/* @__PURE__ */ jsxs25(Colorize10, { color: "silver", children: [
|
|
2040
|
+
/* @__PURE__ */ jsxs25(Hull6, { children: [
|
|
2041
|
+
/* @__PURE__ */ jsx28(
|
|
2042
|
+
Cuboid17,
|
|
1901
2043
|
{
|
|
1902
2044
|
color: "silver",
|
|
1903
2045
|
size: [pinThickness, pinThickness, legsLength * 0.9],
|
|
1904
2046
|
center: [x, y, flipZ(z + -legsLength / 2 * 0.9)]
|
|
1905
2047
|
}
|
|
1906
2048
|
),
|
|
1907
|
-
/* @__PURE__ */
|
|
1908
|
-
|
|
2049
|
+
/* @__PURE__ */ jsx28(
|
|
2050
|
+
Cuboid17,
|
|
1909
2051
|
{
|
|
1910
2052
|
color: "silver",
|
|
1911
2053
|
size: [pinThickness / 1.8, pinThickness / 1.8, legsLength],
|
|
@@ -1913,8 +2055,8 @@ var FemaleHeader = ({
|
|
|
1913
2055
|
}
|
|
1914
2056
|
)
|
|
1915
2057
|
] }),
|
|
1916
|
-
/* @__PURE__ */
|
|
1917
|
-
|
|
2058
|
+
/* @__PURE__ */ jsx28(
|
|
2059
|
+
Cuboid17,
|
|
1918
2060
|
{
|
|
1919
2061
|
color: "silver",
|
|
1920
2062
|
size: [gapWidth, gapWidth, gapWidth * 0.5],
|
|
@@ -1926,7 +2068,7 @@ var FemaleHeader = ({
|
|
|
1926
2068
|
};
|
|
1927
2069
|
|
|
1928
2070
|
// lib/FemaleHeaderRow.tsx
|
|
1929
|
-
import { Fragment as
|
|
2071
|
+
import { Fragment as Fragment25, jsx as jsx29 } from "react/jsx-runtime";
|
|
1930
2072
|
var FemaleHeaderRow = ({
|
|
1931
2073
|
numberOfPins,
|
|
1932
2074
|
pitch = 2.54,
|
|
@@ -1940,12 +2082,12 @@ var FemaleHeaderRow = ({
|
|
|
1940
2082
|
const rowSpacing = 2.54;
|
|
1941
2083
|
const xoff = -((pinsPerRow - 1) / 2) * pitch;
|
|
1942
2084
|
const flipZ = (z) => invert ? -z + bodyHeight : z;
|
|
1943
|
-
return /* @__PURE__ */
|
|
2085
|
+
return /* @__PURE__ */ jsx29(Fragment25, { children: Array.from({ length: numberOfPins }, (_, i) => {
|
|
1944
2086
|
const row = Math.floor(i / pinsPerRow);
|
|
1945
2087
|
const col = i % pinsPerRow;
|
|
1946
2088
|
const x = xoff + col * pitch;
|
|
1947
2089
|
const y = ((rows - 1) / 2 - row) * rowSpacing;
|
|
1948
|
-
return /* @__PURE__ */
|
|
2090
|
+
return /* @__PURE__ */ jsx29(
|
|
1949
2091
|
FemaleHeader,
|
|
1950
2092
|
{
|
|
1951
2093
|
x,
|
|
@@ -1962,15 +2104,15 @@ var FemaleHeaderRow = ({
|
|
|
1962
2104
|
|
|
1963
2105
|
// lib/PushButton.tsx
|
|
1964
2106
|
import {
|
|
1965
|
-
Colorize as
|
|
1966
|
-
Cylinder as
|
|
2107
|
+
Colorize as Colorize11,
|
|
2108
|
+
Cylinder as Cylinder6,
|
|
1967
2109
|
ExtrudeLinear as ExtrudeLinear5,
|
|
1968
2110
|
Polygon as Polygon5,
|
|
1969
2111
|
Rotate as Rotate7,
|
|
1970
2112
|
RoundedCuboid,
|
|
1971
|
-
Translate as
|
|
2113
|
+
Translate as Translate10
|
|
1972
2114
|
} from "jscad-fiber";
|
|
1973
|
-
import { Fragment as
|
|
2115
|
+
import { Fragment as Fragment26, jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
1974
2116
|
var PushButton = ({
|
|
1975
2117
|
width: width10,
|
|
1976
2118
|
length,
|
|
@@ -1980,8 +2122,8 @@ var PushButton = ({
|
|
|
1980
2122
|
const bodyLength10 = length;
|
|
1981
2123
|
const bodyHeight = width10 * 0.7;
|
|
1982
2124
|
const legWidth = innerDiameter / 2.5;
|
|
1983
|
-
return /* @__PURE__ */
|
|
1984
|
-
/* @__PURE__ */
|
|
2125
|
+
return /* @__PURE__ */ jsxs26(Fragment26, { children: [
|
|
2126
|
+
/* @__PURE__ */ jsx30(
|
|
1985
2127
|
RoundedCuboid,
|
|
1986
2128
|
{
|
|
1987
2129
|
color: "#1a1a1f",
|
|
@@ -1990,7 +2132,7 @@ var PushButton = ({
|
|
|
1990
2132
|
roundRadius: 0.3
|
|
1991
2133
|
}
|
|
1992
2134
|
),
|
|
1993
|
-
/* @__PURE__ */
|
|
2135
|
+
/* @__PURE__ */ jsx30(
|
|
1994
2136
|
RoundedCuboid,
|
|
1995
2137
|
{
|
|
1996
2138
|
color: "#f2f2f2",
|
|
@@ -1999,8 +2141,8 @@ var PushButton = ({
|
|
|
1999
2141
|
roundRadius: 0.14
|
|
2000
2142
|
}
|
|
2001
2143
|
),
|
|
2002
|
-
/* @__PURE__ */
|
|
2003
|
-
|
|
2144
|
+
/* @__PURE__ */ jsx30(
|
|
2145
|
+
Cylinder6,
|
|
2004
2146
|
{
|
|
2005
2147
|
color: "#1a1a1f",
|
|
2006
2148
|
height: bodyHeight * 0.8,
|
|
@@ -2008,8 +2150,8 @@ var PushButton = ({
|
|
|
2008
2150
|
center: [0, 0, bodyHeight + bodyHeight * 0.8 / 2]
|
|
2009
2151
|
}
|
|
2010
2152
|
),
|
|
2011
|
-
/* @__PURE__ */
|
|
2012
|
-
|
|
2153
|
+
/* @__PURE__ */ jsx30(
|
|
2154
|
+
Cylinder6,
|
|
2013
2155
|
{
|
|
2014
2156
|
color: "#1a1a1f",
|
|
2015
2157
|
height: bodyHeight * 0.2,
|
|
@@ -2021,8 +2163,8 @@ var PushButton = ({
|
|
|
2021
2163
|
]
|
|
2022
2164
|
}
|
|
2023
2165
|
),
|
|
2024
|
-
/* @__PURE__ */
|
|
2025
|
-
|
|
2166
|
+
/* @__PURE__ */ jsx30(
|
|
2167
|
+
Cylinder6,
|
|
2026
2168
|
{
|
|
2027
2169
|
color: "#1a1a1f",
|
|
2028
2170
|
height: bodyHeight * 0.2,
|
|
@@ -2034,8 +2176,8 @@ var PushButton = ({
|
|
|
2034
2176
|
]
|
|
2035
2177
|
}
|
|
2036
2178
|
),
|
|
2037
|
-
/* @__PURE__ */
|
|
2038
|
-
|
|
2179
|
+
/* @__PURE__ */ jsx30(
|
|
2180
|
+
Cylinder6,
|
|
2039
2181
|
{
|
|
2040
2182
|
color: "#1a1a1f",
|
|
2041
2183
|
height: bodyHeight * 0.2,
|
|
@@ -2047,8 +2189,8 @@ var PushButton = ({
|
|
|
2047
2189
|
]
|
|
2048
2190
|
}
|
|
2049
2191
|
),
|
|
2050
|
-
/* @__PURE__ */
|
|
2051
|
-
|
|
2192
|
+
/* @__PURE__ */ jsx30(
|
|
2193
|
+
Cylinder6,
|
|
2052
2194
|
{
|
|
2053
2195
|
color: "#1a1a1f",
|
|
2054
2196
|
height: bodyHeight * 0.2,
|
|
@@ -2060,7 +2202,7 @@ var PushButton = ({
|
|
|
2060
2202
|
]
|
|
2061
2203
|
}
|
|
2062
2204
|
),
|
|
2063
|
-
/* @__PURE__ */
|
|
2205
|
+
/* @__PURE__ */ jsx30(
|
|
2064
2206
|
PushButtonLeg,
|
|
2065
2207
|
{
|
|
2066
2208
|
thickness: innerDiameter / 3,
|
|
@@ -2074,7 +2216,7 @@ var PushButton = ({
|
|
|
2074
2216
|
}
|
|
2075
2217
|
}
|
|
2076
2218
|
),
|
|
2077
|
-
/* @__PURE__ */
|
|
2219
|
+
/* @__PURE__ */ jsx30(
|
|
2078
2220
|
PushButtonLeg,
|
|
2079
2221
|
{
|
|
2080
2222
|
thickness: innerDiameter / 3,
|
|
@@ -2089,7 +2231,7 @@ var PushButton = ({
|
|
|
2089
2231
|
rotation: Math.PI
|
|
2090
2232
|
}
|
|
2091
2233
|
),
|
|
2092
|
-
/* @__PURE__ */
|
|
2234
|
+
/* @__PURE__ */ jsx30(
|
|
2093
2235
|
PushButtonLeg,
|
|
2094
2236
|
{
|
|
2095
2237
|
thickness: innerDiameter / 3,
|
|
@@ -2100,7 +2242,7 @@ var PushButton = ({
|
|
|
2100
2242
|
rotation: Math.PI
|
|
2101
2243
|
}
|
|
2102
2244
|
),
|
|
2103
|
-
/* @__PURE__ */
|
|
2245
|
+
/* @__PURE__ */ jsx30(
|
|
2104
2246
|
PushButtonLeg,
|
|
2105
2247
|
{
|
|
2106
2248
|
thickness: innerDiameter / 3,
|
|
@@ -2132,160 +2274,19 @@ var PushButtonLeg = (props) => {
|
|
|
2132
2274
|
[0, 0]
|
|
2133
2275
|
];
|
|
2134
2276
|
const polygon = getExpandedStroke(points, thickness);
|
|
2135
|
-
return /* @__PURE__ */
|
|
2136
|
-
|
|
2277
|
+
return /* @__PURE__ */ jsx30(Colorize11, { color: "#f2f2f2", children: /* @__PURE__ */ jsx30(
|
|
2278
|
+
Translate10,
|
|
2137
2279
|
{
|
|
2138
2280
|
offset: {
|
|
2139
2281
|
x: position?.x || 0,
|
|
2140
2282
|
y: position?.y || 0,
|
|
2141
2283
|
z: position?.z || 0
|
|
2142
2284
|
},
|
|
2143
|
-
children: /* @__PURE__ */
|
|
2285
|
+
children: /* @__PURE__ */ jsx30(Rotate7, { rotation: [0, 55, rotation], children: /* @__PURE__ */ jsx30(ExtrudeLinear5, { height: width10, children: /* @__PURE__ */ jsx30(Polygon5, { points: polygon.map((p) => [p.y, p.x]) }) }) })
|
|
2144
2286
|
}
|
|
2145
2287
|
) });
|
|
2146
2288
|
};
|
|
2147
2289
|
|
|
2148
|
-
// lib/utils/DualRowGullWing.tsx
|
|
2149
|
-
import {
|
|
2150
|
-
Colorize as Colorize11,
|
|
2151
|
-
Cuboid as Cuboid18,
|
|
2152
|
-
Cylinder as Cylinder6,
|
|
2153
|
-
Hull as Hull6,
|
|
2154
|
-
Subtract as Subtract4,
|
|
2155
|
-
Translate as Translate10,
|
|
2156
|
-
Union as Union4
|
|
2157
|
-
} from "jscad-fiber";
|
|
2158
|
-
import { Fragment as Fragment26, jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
2159
|
-
function createDualRowGullWing(p) {
|
|
2160
|
-
const {
|
|
2161
|
-
pinCount,
|
|
2162
|
-
pitch,
|
|
2163
|
-
bodyWidth,
|
|
2164
|
-
bodyLength: bodyLength10,
|
|
2165
|
-
bodyHeight,
|
|
2166
|
-
standoff,
|
|
2167
|
-
leadSpan,
|
|
2168
|
-
leadWidth,
|
|
2169
|
-
leadThickness,
|
|
2170
|
-
contactLength,
|
|
2171
|
-
taperInset,
|
|
2172
|
-
exposedPadWidth = 0,
|
|
2173
|
-
exposedPadLength = 0
|
|
2174
|
-
} = p;
|
|
2175
|
-
for (const key of [
|
|
2176
|
-
"pitch",
|
|
2177
|
-
"bodyWidth",
|
|
2178
|
-
"bodyLength",
|
|
2179
|
-
"bodyHeight",
|
|
2180
|
-
"leadSpan",
|
|
2181
|
-
"leadWidth",
|
|
2182
|
-
"leadThickness",
|
|
2183
|
-
"contactLength"
|
|
2184
|
-
])
|
|
2185
|
-
if (!Number.isFinite(p[key]) || p[key] <= 0)
|
|
2186
|
-
throw new Error(`${key} must be finite and positive`);
|
|
2187
|
-
for (const [name, value] of Object.entries({
|
|
2188
|
-
standoff,
|
|
2189
|
-
taperInset,
|
|
2190
|
-
exposedPadWidth,
|
|
2191
|
-
exposedPadLength
|
|
2192
|
-
}))
|
|
2193
|
-
if (!Number.isFinite(value) || value < 0)
|
|
2194
|
-
throw new Error(`${name} must be finite and nonnegative`);
|
|
2195
|
-
if (!Number.isInteger(pinCount) || pinCount < 4 || pinCount % 2)
|
|
2196
|
-
throw new Error("pinCount must be even and at least 4");
|
|
2197
|
-
const moldHeight = bodyHeight - standoff;
|
|
2198
|
-
const reach = (leadSpan - bodyWidth) / 2;
|
|
2199
|
-
const rowLength = (pinCount / 2 - 1) * pitch + leadWidth;
|
|
2200
|
-
if (moldHeight <= leadThickness * 2 || leadWidth >= pitch || rowLength >= bodyLength10 - 2 * taperInset || taperInset * 2 >= Math.min(bodyWidth, bodyLength10) || contactLength >= reach)
|
|
2201
|
-
throw new Error("Invalid mold, lead spacing, or terminal reach");
|
|
2202
|
-
if (exposedPadWidth === 0 !== (exposedPadLength === 0) || exposedPadWidth >= bodyWidth - 2 * taperInset || exposedPadLength >= bodyLength10 - 2 * taperInset)
|
|
2203
|
-
throw new Error("Exposed pad must fit inside the bottom mold face");
|
|
2204
|
-
const midZ = standoff + moldHeight / 2;
|
|
2205
|
-
const slice = Math.min(2e-3, moldHeight / 100);
|
|
2206
|
-
const body = /* @__PURE__ */ jsxs26(Hull6, { children: [
|
|
2207
|
-
/* @__PURE__ */ jsx30(Translate10, { z: standoff + slice / 2, children: /* @__PURE__ */ jsx30(
|
|
2208
|
-
Cuboid18,
|
|
2209
|
-
{
|
|
2210
|
-
size: [
|
|
2211
|
-
bodyWidth - 2 * taperInset,
|
|
2212
|
-
bodyLength10 - 2 * taperInset,
|
|
2213
|
-
slice
|
|
2214
|
-
]
|
|
2215
|
-
}
|
|
2216
|
-
) }),
|
|
2217
|
-
/* @__PURE__ */ jsx30(Translate10, { z: midZ, children: /* @__PURE__ */ jsx30(Cuboid18, { size: [bodyWidth, bodyLength10, slice] }) }),
|
|
2218
|
-
/* @__PURE__ */ jsx30(Translate10, { z: bodyHeight - slice / 2, children: /* @__PURE__ */ jsx30(
|
|
2219
|
-
Cuboid18,
|
|
2220
|
-
{
|
|
2221
|
-
size: [
|
|
2222
|
-
bodyWidth - 2 * taperInset,
|
|
2223
|
-
bodyLength10 - 2 * taperInset,
|
|
2224
|
-
slice
|
|
2225
|
-
]
|
|
2226
|
-
}
|
|
2227
|
-
) })
|
|
2228
|
-
] });
|
|
2229
|
-
const dimpleRadius = Math.min(bodyWidth, bodyLength10) * 0.045;
|
|
2230
|
-
const dimpleDepth = Math.min(0.04, moldHeight / 10);
|
|
2231
|
-
const lead = (side, y) => {
|
|
2232
|
-
const outer = leadSpan / 2;
|
|
2233
|
-
const root = bodyWidth / 2 - Math.min(bodyWidth / 8, 0.15);
|
|
2234
|
-
const bendStart = outer - contactLength;
|
|
2235
|
-
const bendEnd = bodyWidth / 2 + Math.min(0.08, (reach - contactLength) / 4);
|
|
2236
|
-
const points = [
|
|
2237
|
-
[outer - slice / 2, leadThickness / 2],
|
|
2238
|
-
[bendStart, leadThickness / 2]
|
|
2239
|
-
];
|
|
2240
|
-
for (let i = 1; i <= 12; i++) {
|
|
2241
|
-
const t = i / 12;
|
|
2242
|
-
points.push([
|
|
2243
|
-
bendStart + (bendEnd - bendStart) * t,
|
|
2244
|
-
leadThickness / 2 + (midZ - leadThickness / 2) * t * t * (3 - 2 * t)
|
|
2245
|
-
]);
|
|
2246
|
-
}
|
|
2247
|
-
points.push([root, midZ]);
|
|
2248
|
-
const section = ([x, z]) => /* @__PURE__ */ jsx30(Translate10, { offset: { x: side * x, y, z }, children: /* @__PURE__ */ jsx30(Cuboid18, { size: [slice, leadWidth, leadThickness] }) });
|
|
2249
|
-
return /* @__PURE__ */ jsx30(Union4, { children: points.slice(1).map((point, i) => /* @__PURE__ */ jsxs26(Hull6, { children: [
|
|
2250
|
-
section(points[i]),
|
|
2251
|
-
section(point)
|
|
2252
|
-
] }, i)) });
|
|
2253
|
-
};
|
|
2254
|
-
return /* @__PURE__ */ jsxs26(Fragment26, { children: [
|
|
2255
|
-
/* @__PURE__ */ jsx30(Colorize11, { color: "#353535", children: /* @__PURE__ */ jsxs26(Subtract4, { children: [
|
|
2256
|
-
body,
|
|
2257
|
-
/* @__PURE__ */ jsx30(
|
|
2258
|
-
Translate10,
|
|
2259
|
-
{
|
|
2260
|
-
offset: {
|
|
2261
|
-
x: -bodyWidth / 2 + taperInset + dimpleRadius * 2,
|
|
2262
|
-
y: bodyLength10 / 2 - taperInset - dimpleRadius * 2,
|
|
2263
|
-
z: bodyHeight
|
|
2264
|
-
},
|
|
2265
|
-
children: /* @__PURE__ */ jsx30(Cylinder6, { radius: dimpleRadius, height: dimpleDepth * 2 })
|
|
2266
|
-
}
|
|
2267
|
-
)
|
|
2268
|
-
] }) }),
|
|
2269
|
-
/* @__PURE__ */ jsx30(Colorize11, { color: "#bfc1c4", children: Array.from(
|
|
2270
|
-
{ length: pinCount },
|
|
2271
|
-
(_, i) => lead(
|
|
2272
|
-
i < pinCount / 2 ? -1 : 1,
|
|
2273
|
-
((pinCount / 2 - 1) / 2 - i % (pinCount / 2)) * pitch
|
|
2274
|
-
)
|
|
2275
|
-
) }),
|
|
2276
|
-
exposedPadWidth > 0 && /* @__PURE__ */ jsx30(Colorize11, { color: "#bfc1c4", children: /* @__PURE__ */ jsx30(Translate10, { z: (standoff + leadThickness) / 2, children: /* @__PURE__ */ jsx30(
|
|
2277
|
-
Cuboid18,
|
|
2278
|
-
{
|
|
2279
|
-
size: [
|
|
2280
|
-
exposedPadWidth,
|
|
2281
|
-
exposedPadLength,
|
|
2282
|
-
standoff + leadThickness
|
|
2283
|
-
]
|
|
2284
|
-
}
|
|
2285
|
-
) }) })
|
|
2286
|
-
] });
|
|
2287
|
-
}
|
|
2288
|
-
|
|
2289
2290
|
// lib/SOIC.tsx
|
|
2290
2291
|
import { Fragment as Fragment27, jsx as jsx31, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
2291
2292
|
var LegacySOIC = ({
|