jscad-electronics 0.0.140 → 0.0.142
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 +55 -1
- package/dist/index.js +445 -90
- package/dist/index.js.map +1 -1
- package/dist/vanilla.js +341 -0
- package/dist/vanilla.js.map +1 -1
- package/package.json +2 -2
package/dist/vanilla.js
CHANGED
|
@@ -5042,6 +5042,314 @@ var FPC = ({
|
|
|
5042
5042
|
] });
|
|
5043
5043
|
};
|
|
5044
5044
|
|
|
5045
|
+
// lib/SmdPinHeader.tsx
|
|
5046
|
+
var SmdPinHeader = ({
|
|
5047
|
+
numberOfPins,
|
|
5048
|
+
pitch = 2.54,
|
|
5049
|
+
pinThickness = 0.64,
|
|
5050
|
+
bodyWidth = 2.5,
|
|
5051
|
+
bodyHeight = 2.54,
|
|
5052
|
+
standoffHeight = 1.27,
|
|
5053
|
+
matingPinLength = 5.8,
|
|
5054
|
+
tailSpan = 5.08
|
|
5055
|
+
}) => {
|
|
5056
|
+
const xStart = -((numberOfPins - 1) * pitch) / 2;
|
|
5057
|
+
const bodyTop = standoffHeight + bodyHeight;
|
|
5058
|
+
const tailLength = tailSpan / 2;
|
|
5059
|
+
const tipChamferHeight = pinThickness * 0.35;
|
|
5060
|
+
return /* @__PURE__ */ jsx(Fragment2, { children: Array.from({ length: numberOfPins }, (_, index) => {
|
|
5061
|
+
const x = xStart + index * pitch;
|
|
5062
|
+
const tailDirection = index % 2 === 0 ? 1 : -1;
|
|
5063
|
+
const postBodyLength = matingPinLength - tipChamferHeight;
|
|
5064
|
+
const verticalTailLength = standoffHeight - pinThickness / 2;
|
|
5065
|
+
return /* @__PURE__ */ jsxs(Translate, { x, children: [
|
|
5066
|
+
/* @__PURE__ */ jsx(
|
|
5067
|
+
Cuboid,
|
|
5068
|
+
{
|
|
5069
|
+
color: "#222",
|
|
5070
|
+
size: [pitch, bodyWidth, bodyHeight],
|
|
5071
|
+
center: [0, 0, standoffHeight + bodyHeight / 2]
|
|
5072
|
+
}
|
|
5073
|
+
),
|
|
5074
|
+
/* @__PURE__ */ jsxs(Colorize, { color: "#d4af37", children: [
|
|
5075
|
+
/* @__PURE__ */ jsx(
|
|
5076
|
+
Cuboid,
|
|
5077
|
+
{
|
|
5078
|
+
size: [pinThickness, tailLength, pinThickness],
|
|
5079
|
+
center: [0, tailDirection * (tailLength / 2), pinThickness / 2]
|
|
5080
|
+
}
|
|
5081
|
+
),
|
|
5082
|
+
/* @__PURE__ */ jsx(
|
|
5083
|
+
Cuboid,
|
|
5084
|
+
{
|
|
5085
|
+
size: [pinThickness, pinThickness, verticalTailLength],
|
|
5086
|
+
center: [0, 0, pinThickness / 2 + verticalTailLength / 2]
|
|
5087
|
+
}
|
|
5088
|
+
),
|
|
5089
|
+
/* @__PURE__ */ jsx(
|
|
5090
|
+
Cuboid,
|
|
5091
|
+
{
|
|
5092
|
+
size: [pinThickness, pinThickness, postBodyLength],
|
|
5093
|
+
center: [0, 0, bodyTop + postBodyLength / 2]
|
|
5094
|
+
}
|
|
5095
|
+
),
|
|
5096
|
+
/* @__PURE__ */ jsxs(Hull, { children: [
|
|
5097
|
+
/* @__PURE__ */ jsx(
|
|
5098
|
+
Cuboid,
|
|
5099
|
+
{
|
|
5100
|
+
size: [pinThickness, pinThickness, 0.01],
|
|
5101
|
+
center: [0, 0, bodyTop + postBodyLength]
|
|
5102
|
+
}
|
|
5103
|
+
),
|
|
5104
|
+
/* @__PURE__ */ jsx(
|
|
5105
|
+
Cuboid,
|
|
5106
|
+
{
|
|
5107
|
+
size: [pinThickness * 0.65, pinThickness * 0.65, 0.01],
|
|
5108
|
+
center: [0, 0, bodyTop + matingPinLength]
|
|
5109
|
+
}
|
|
5110
|
+
)
|
|
5111
|
+
] })
|
|
5112
|
+
] })
|
|
5113
|
+
] }, index);
|
|
5114
|
+
}) });
|
|
5115
|
+
};
|
|
5116
|
+
|
|
5117
|
+
// lib/RJ45.tsx
|
|
5118
|
+
var range2 = (length) => Array.from({ length }, (_, index) => index);
|
|
5119
|
+
var RJ45 = ({
|
|
5120
|
+
bodyWidth = 16.26,
|
|
5121
|
+
bodyDepth = 15.88,
|
|
5122
|
+
bodyHeight = 13.5,
|
|
5123
|
+
bodyCenterY = -0.96,
|
|
5124
|
+
ledPins = false,
|
|
5125
|
+
firstPinLeft = false,
|
|
5126
|
+
firstPinTop = false,
|
|
5127
|
+
signalPitch = 1.02,
|
|
5128
|
+
signalRowPitch = 1.78,
|
|
5129
|
+
signalHoleDiameter = 0.9144,
|
|
5130
|
+
shieldPinX = 8.13,
|
|
5131
|
+
shieldPinY = 0.13,
|
|
5132
|
+
shieldHoleDiameter = 1.8,
|
|
5133
|
+
locatorHoleX = 6.35,
|
|
5134
|
+
locatorHoleY = -3.43,
|
|
5135
|
+
locatorHoleDiameter = 3.25,
|
|
5136
|
+
ledPinX = 4.57,
|
|
5137
|
+
ledPinPitch = 2.29,
|
|
5138
|
+
ledPinY = 5.7,
|
|
5139
|
+
openingDirection,
|
|
5140
|
+
shellColor = "#b7bdc2",
|
|
5141
|
+
housingColor = "#20242a",
|
|
5142
|
+
contactColor = "#d6a928"
|
|
5143
|
+
}) => {
|
|
5144
|
+
const frontDirection = openingDirection ?? (bodyCenterY > 0 ? 1 : -1);
|
|
5145
|
+
const frontY = bodyCenterY + frontDirection * bodyDepth / 2;
|
|
5146
|
+
const shellThickness = Math.min(0.38, bodyWidth * 0.024);
|
|
5147
|
+
const openingWidth = Math.max(bodyWidth - 2.5, bodyWidth * 0.72);
|
|
5148
|
+
const openingHeight = Math.min(bodyHeight - 2.4, 9.6);
|
|
5149
|
+
const openingCenterZ = 1.3 + openingHeight / 2;
|
|
5150
|
+
const cavityDepth = Math.min(4.4, bodyDepth * 0.34);
|
|
5151
|
+
const cavityCenterY = frontY - frontDirection * cavityDepth / 2;
|
|
5152
|
+
const backWallY = frontY - frontDirection * (cavityDepth + shellThickness * 0.7);
|
|
5153
|
+
const signalLeadRadius = Math.max(
|
|
5154
|
+
0.22,
|
|
5155
|
+
Math.min(signalHoleDiameter * 0.36, 0.38)
|
|
5156
|
+
);
|
|
5157
|
+
const signalPinPositions = range2(8).map((index) => {
|
|
5158
|
+
const defaultX = (3.5 - index) * signalPitch;
|
|
5159
|
+
const defaultY = index % 2 === 0 ? -signalRowPitch / 2 : signalRowPitch / 2;
|
|
5160
|
+
return {
|
|
5161
|
+
x: firstPinLeft ? -defaultX : defaultX,
|
|
5162
|
+
y: firstPinTop ? -defaultY : defaultY
|
|
5163
|
+
};
|
|
5164
|
+
});
|
|
5165
|
+
const ledPinPositions = [
|
|
5166
|
+
-ledPinX - ledPinPitch,
|
|
5167
|
+
-ledPinX,
|
|
5168
|
+
ledPinX,
|
|
5169
|
+
ledPinX + ledPinPitch
|
|
5170
|
+
];
|
|
5171
|
+
const contactPitch = openingWidth / 10;
|
|
5172
|
+
const contactY = frontY - frontDirection * Math.max(cavityDepth * 0.48, 1.2);
|
|
5173
|
+
const contactZ = openingCenterZ + openingHeight * 0.18;
|
|
5174
|
+
const frontLipY = frontY + frontDirection * shellThickness * 0.2;
|
|
5175
|
+
return /* @__PURE__ */ jsxs(Fragment2, { children: [
|
|
5176
|
+
/* @__PURE__ */ jsxs(Colorize, { color: shellColor, children: [
|
|
5177
|
+
/* @__PURE__ */ jsxs(Subtract, { children: [
|
|
5178
|
+
/* @__PURE__ */ jsx(
|
|
5179
|
+
Cuboid,
|
|
5180
|
+
{
|
|
5181
|
+
center: [0, bodyCenterY, bodyHeight / 2],
|
|
5182
|
+
size: [bodyWidth, bodyDepth, bodyHeight]
|
|
5183
|
+
}
|
|
5184
|
+
),
|
|
5185
|
+
/* @__PURE__ */ jsx(
|
|
5186
|
+
Cuboid,
|
|
5187
|
+
{
|
|
5188
|
+
center: [0, cavityCenterY, openingCenterZ],
|
|
5189
|
+
size: [
|
|
5190
|
+
openingWidth,
|
|
5191
|
+
cavityDepth + shellThickness * 2,
|
|
5192
|
+
openingHeight
|
|
5193
|
+
]
|
|
5194
|
+
}
|
|
5195
|
+
)
|
|
5196
|
+
] }),
|
|
5197
|
+
/* @__PURE__ */ jsx(
|
|
5198
|
+
Cuboid,
|
|
5199
|
+
{
|
|
5200
|
+
center: [0, frontLipY, 0.72],
|
|
5201
|
+
size: [openingWidth + 0.5, shellThickness * 1.25, 1.05]
|
|
5202
|
+
}
|
|
5203
|
+
),
|
|
5204
|
+
[-1, 1].map((direction) => /* @__PURE__ */ jsx(
|
|
5205
|
+
Cuboid,
|
|
5206
|
+
{
|
|
5207
|
+
center: [direction * shieldPinX, shieldPinY, 0.25],
|
|
5208
|
+
size: [
|
|
5209
|
+
Math.max(shieldHoleDiameter * 0.46, 0.65),
|
|
5210
|
+
Math.max(shieldHoleDiameter * 0.72, 1.1),
|
|
5211
|
+
3.4
|
|
5212
|
+
]
|
|
5213
|
+
},
|
|
5214
|
+
`shield-tab:${direction}`
|
|
5215
|
+
)),
|
|
5216
|
+
[-1, 1].map((direction) => /* @__PURE__ */ jsx(
|
|
5217
|
+
Cuboid,
|
|
5218
|
+
{
|
|
5219
|
+
center: [
|
|
5220
|
+
direction * bodyWidth * 0.24,
|
|
5221
|
+
bodyCenterY - frontDirection * bodyDepth * 0.08,
|
|
5222
|
+
bodyHeight + 0.04
|
|
5223
|
+
],
|
|
5224
|
+
size: [bodyWidth * 0.22, bodyDepth * 0.42, 0.1]
|
|
5225
|
+
},
|
|
5226
|
+
`top-seam:${direction}`
|
|
5227
|
+
))
|
|
5228
|
+
] }),
|
|
5229
|
+
/* @__PURE__ */ jsxs(Colorize, { color: housingColor, children: [
|
|
5230
|
+
/* @__PURE__ */ jsxs(Subtract, { children: [
|
|
5231
|
+
/* @__PURE__ */ jsx(
|
|
5232
|
+
RoundedCuboid,
|
|
5233
|
+
{
|
|
5234
|
+
center: [0, cavityCenterY, openingCenterZ],
|
|
5235
|
+
size: [
|
|
5236
|
+
openingWidth - 0.2,
|
|
5237
|
+
cavityDepth + shellThickness * 0.5,
|
|
5238
|
+
openingHeight - 0.2
|
|
5239
|
+
],
|
|
5240
|
+
roundRadius: 0.22
|
|
5241
|
+
}
|
|
5242
|
+
),
|
|
5243
|
+
/* @__PURE__ */ jsx(
|
|
5244
|
+
Cuboid,
|
|
5245
|
+
{
|
|
5246
|
+
center: [
|
|
5247
|
+
0,
|
|
5248
|
+
cavityCenterY - frontDirection * shellThickness * 0.2,
|
|
5249
|
+
openingCenterZ - 0.05
|
|
5250
|
+
],
|
|
5251
|
+
size: [
|
|
5252
|
+
openingWidth - 1.25,
|
|
5253
|
+
cavityDepth + shellThickness,
|
|
5254
|
+
openingHeight - 1.35
|
|
5255
|
+
]
|
|
5256
|
+
}
|
|
5257
|
+
)
|
|
5258
|
+
] }),
|
|
5259
|
+
/* @__PURE__ */ jsx(
|
|
5260
|
+
Cuboid,
|
|
5261
|
+
{
|
|
5262
|
+
center: [0, backWallY, openingCenterZ],
|
|
5263
|
+
size: [openingWidth - 1.15, shellThickness, openingHeight - 1.25]
|
|
5264
|
+
}
|
|
5265
|
+
),
|
|
5266
|
+
/* @__PURE__ */ jsx(
|
|
5267
|
+
RoundedCuboid,
|
|
5268
|
+
{
|
|
5269
|
+
center: [0, frontY - frontDirection * cavityDepth * 0.28, 1.55],
|
|
5270
|
+
size: [openingWidth - 2.6, cavityDepth * 0.5, 1.15],
|
|
5271
|
+
roundRadius: 0.16
|
|
5272
|
+
}
|
|
5273
|
+
),
|
|
5274
|
+
[-1, 1].map((direction) => /* @__PURE__ */ jsx(
|
|
5275
|
+
Cylinder,
|
|
5276
|
+
{
|
|
5277
|
+
center: [direction * locatorHoleX, locatorHoleY, -0.25],
|
|
5278
|
+
radius: Math.max(locatorHoleDiameter * 0.41, 0.65),
|
|
5279
|
+
height: 2.7
|
|
5280
|
+
},
|
|
5281
|
+
`locator:${direction}`
|
|
5282
|
+
))
|
|
5283
|
+
] }),
|
|
5284
|
+
/* @__PURE__ */ jsxs(Colorize, { color: contactColor, children: [
|
|
5285
|
+
signalPinPositions.map(({ x, y }, index) => /* @__PURE__ */ jsx(
|
|
5286
|
+
Cylinder,
|
|
5287
|
+
{
|
|
5288
|
+
center: [x, y, 0.15],
|
|
5289
|
+
radius: signalLeadRadius,
|
|
5290
|
+
height: 3.1
|
|
5291
|
+
},
|
|
5292
|
+
`signal-lead:${index}`
|
|
5293
|
+
)),
|
|
5294
|
+
range2(8).map((index) => /* @__PURE__ */ jsx(
|
|
5295
|
+
Translate,
|
|
5296
|
+
{
|
|
5297
|
+
offset: [
|
|
5298
|
+
(index - 3.5) * contactPitch,
|
|
5299
|
+
contactY,
|
|
5300
|
+
contactZ + (index % 2 === 0 ? 0.03 : -0.03)
|
|
5301
|
+
],
|
|
5302
|
+
children: /* @__PURE__ */ jsx(Rotate, { rotation: [frontDirection * 0.2, 0, 0], children: /* @__PURE__ */ jsx(
|
|
5303
|
+
RoundedCuboid,
|
|
5304
|
+
{
|
|
5305
|
+
size: [Math.max(contactPitch * 0.28, 0.28), 3.25, 0.16],
|
|
5306
|
+
roundRadius: 0.05
|
|
5307
|
+
}
|
|
5308
|
+
) })
|
|
5309
|
+
},
|
|
5310
|
+
`socket-contact:${index}`
|
|
5311
|
+
)),
|
|
5312
|
+
ledPins && ledPinPositions.map((x, index) => /* @__PURE__ */ jsx(
|
|
5313
|
+
Cylinder,
|
|
5314
|
+
{
|
|
5315
|
+
center: [x, ledPinY, 0.15],
|
|
5316
|
+
radius: signalLeadRadius,
|
|
5317
|
+
height: 3.1
|
|
5318
|
+
},
|
|
5319
|
+
`led-lead:${index}`
|
|
5320
|
+
))
|
|
5321
|
+
] }),
|
|
5322
|
+
ledPins && /* @__PURE__ */ jsxs(Fragment2, { children: [
|
|
5323
|
+
/* @__PURE__ */ jsx(
|
|
5324
|
+
RoundedCuboid,
|
|
5325
|
+
{
|
|
5326
|
+
color: "#73b744",
|
|
5327
|
+
center: [
|
|
5328
|
+
-bodyWidth / 2 + 2.05,
|
|
5329
|
+
frontY + frontDirection * shellThickness * 0.35,
|
|
5330
|
+
bodyHeight - 2.05
|
|
5331
|
+
],
|
|
5332
|
+
size: [2.15, shellThickness * 1.55, 1.45],
|
|
5333
|
+
roundRadius: 0.18
|
|
5334
|
+
}
|
|
5335
|
+
),
|
|
5336
|
+
/* @__PURE__ */ jsx(
|
|
5337
|
+
RoundedCuboid,
|
|
5338
|
+
{
|
|
5339
|
+
color: "#e0aa35",
|
|
5340
|
+
center: [
|
|
5341
|
+
bodyWidth / 2 - 2.05,
|
|
5342
|
+
frontY + frontDirection * shellThickness * 0.35,
|
|
5343
|
+
bodyHeight - 2.05
|
|
5344
|
+
],
|
|
5345
|
+
size: [2.15, shellThickness * 1.55, 1.45],
|
|
5346
|
+
roundRadius: 0.18
|
|
5347
|
+
}
|
|
5348
|
+
)
|
|
5349
|
+
] })
|
|
5350
|
+
] });
|
|
5351
|
+
};
|
|
5352
|
+
|
|
5045
5353
|
// lib/Footprinter3d.tsx
|
|
5046
5354
|
var Footprinter3d = ({ footprint }) => {
|
|
5047
5355
|
let normalizedFootprint = footprint;
|
|
@@ -5167,6 +5475,15 @@ var Footprinter3d = ({ footprint }) => {
|
|
|
5167
5475
|
}
|
|
5168
5476
|
);
|
|
5169
5477
|
}
|
|
5478
|
+
case "smdpinheader":
|
|
5479
|
+
return /* @__PURE__ */ jsx(
|
|
5480
|
+
SmdPinHeader,
|
|
5481
|
+
{
|
|
5482
|
+
numberOfPins: fpJson.num_pins,
|
|
5483
|
+
pitch: fpJson.p,
|
|
5484
|
+
bodyWidth: fpJson.bh
|
|
5485
|
+
}
|
|
5486
|
+
);
|
|
5170
5487
|
case "cap": {
|
|
5171
5488
|
switch (fpJson.imperial) {
|
|
5172
5489
|
case "0402":
|
|
@@ -5243,6 +5560,30 @@ var Footprinter3d = ({ footprint }) => {
|
|
|
5243
5560
|
mountPadLength: fpJson.mpl
|
|
5244
5561
|
}
|
|
5245
5562
|
);
|
|
5563
|
+
case "rj45":
|
|
5564
|
+
return /* @__PURE__ */ jsx(
|
|
5565
|
+
RJ45,
|
|
5566
|
+
{
|
|
5567
|
+
bodyWidth: fpJson.w,
|
|
5568
|
+
bodyDepth: fpJson.h,
|
|
5569
|
+
bodyCenterY: fpJson.bodyy,
|
|
5570
|
+
ledPins: fpJson.ledpins || fpJson.num_pins === 14,
|
|
5571
|
+
firstPinLeft: fpJson.firstpinleft,
|
|
5572
|
+
firstPinTop: fpJson.firstpintop,
|
|
5573
|
+
signalPitch: fpJson.p,
|
|
5574
|
+
signalRowPitch: fpJson.py,
|
|
5575
|
+
signalHoleDiameter: fpJson.id,
|
|
5576
|
+
shieldPinX: fpJson.shieldx,
|
|
5577
|
+
shieldPinY: fpJson.shieldy,
|
|
5578
|
+
shieldHoleDiameter: fpJson.shieldid,
|
|
5579
|
+
locatorHoleX: fpJson.holex,
|
|
5580
|
+
locatorHoleY: fpJson.holey,
|
|
5581
|
+
locatorHoleDiameter: fpJson.holed,
|
|
5582
|
+
ledPinX: fpJson.ledx,
|
|
5583
|
+
ledPinPitch: fpJson.ledp,
|
|
5584
|
+
ledPinY: fpJson.ledy
|
|
5585
|
+
}
|
|
5586
|
+
);
|
|
5246
5587
|
case "soic":
|
|
5247
5588
|
return /* @__PURE__ */ jsx(
|
|
5248
5589
|
SOIC,
|