jscad-electronics 0.0.210 → 0.0.211
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 +31 -2
- package/dist/index.js +1406 -1131
- package/dist/index.js.map +1 -1
- package/dist/vanilla.d.ts +31 -2
- package/dist/vanilla.js +367 -97
- package/dist/vanilla.js.map +1 -1
- package/package.json +2 -2
package/dist/vanilla.js
CHANGED
|
@@ -179,28 +179,28 @@ var FootprintPlatedHole = ({
|
|
|
179
179
|
throw new Error("Shape not supported: " + hole.shape);
|
|
180
180
|
};
|
|
181
181
|
|
|
182
|
-
// lib/models/
|
|
183
|
-
import {
|
|
182
|
+
// lib/models/ballbearing/register.tsx
|
|
183
|
+
import { ballBearingModelDefinitionSchema } from "@tscircuit/modelprinter";
|
|
184
184
|
|
|
185
185
|
// lib/model-registry.ts
|
|
186
|
-
function defineModelRenderer(
|
|
187
|
-
return
|
|
186
|
+
function defineModelRenderer(model25) {
|
|
187
|
+
return model25;
|
|
188
188
|
}
|
|
189
189
|
var ModelRendererRegistry = class {
|
|
190
190
|
models = /* @__PURE__ */ new Map();
|
|
191
|
-
register(
|
|
192
|
-
if (typeof
|
|
191
|
+
register(model25) {
|
|
192
|
+
if (typeof model25.name !== "string" || !/^[a-z]+$/.test(model25.name)) {
|
|
193
193
|
throw new Error(
|
|
194
194
|
"Model renderer names must contain only lowercase letters"
|
|
195
195
|
);
|
|
196
196
|
}
|
|
197
|
-
if (this.models.has(
|
|
198
|
-
throw new Error(`Model renderer "${
|
|
197
|
+
if (this.models.has(model25.name)) {
|
|
198
|
+
throw new Error(`Model renderer "${model25.name}" is already registered`);
|
|
199
199
|
}
|
|
200
|
-
if (
|
|
200
|
+
if (model25.pads !== "none" && model25.pads !== "footprinter") {
|
|
201
201
|
throw new Error('Model renderer pads must be "none" or "footprinter"');
|
|
202
202
|
}
|
|
203
|
-
const { name, schema, render: render2, pads } =
|
|
203
|
+
const { name, schema, render: render2, pads } = model25;
|
|
204
204
|
this.models.set(name, {
|
|
205
205
|
name,
|
|
206
206
|
schema,
|
|
@@ -226,6 +226,287 @@ var ModelRendererRegistry = class {
|
|
|
226
226
|
}
|
|
227
227
|
};
|
|
228
228
|
|
|
229
|
+
// lib/mechanical/indexedMeshToGeom3.ts
|
|
230
|
+
import jscad from "@jscad/modeling";
|
|
231
|
+
function indexedMeshToGeom3(mesh) {
|
|
232
|
+
const polygons = [];
|
|
233
|
+
for (let i = 0; i < mesh.indices.length; i += 3)
|
|
234
|
+
polygons.push(
|
|
235
|
+
mesh.indices.slice(i, i + 3).map((index) => [
|
|
236
|
+
mesh.positions[index * 3],
|
|
237
|
+
mesh.positions[index * 3 + 1],
|
|
238
|
+
mesh.positions[index * 3 + 2]
|
|
239
|
+
])
|
|
240
|
+
);
|
|
241
|
+
return jscad.geometries.geom3.fromPoints(polygons);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// lib/models/ballbearing/mesh.ts
|
|
245
|
+
import {
|
|
246
|
+
getBallBearingDimensions
|
|
247
|
+
} from "@tscircuit/modelprinter";
|
|
248
|
+
function createBallBearingMesh(input = {}, options = {}) {
|
|
249
|
+
const d = getBallBearingDimensions(input);
|
|
250
|
+
const segments = segmentsFor(options.segments);
|
|
251
|
+
checkPrecision([
|
|
252
|
+
d.outerDiameter,
|
|
253
|
+
d.boreRadius,
|
|
254
|
+
d.width,
|
|
255
|
+
d.outerRadius - d.boreRadius,
|
|
256
|
+
d.ballRadius
|
|
257
|
+
]);
|
|
258
|
+
const c = d.rimChamfer, mid = d.midZ, half = d.grooveHalfWidth;
|
|
259
|
+
const innerProfile = [
|
|
260
|
+
[d.innerRaceOuterRadius - c, 0],
|
|
261
|
+
[d.innerRaceOuterRadius, c]
|
|
262
|
+
];
|
|
263
|
+
for (let i = 0; i <= 24; i++) {
|
|
264
|
+
const z = mid - half + 2 * half * i / 24;
|
|
265
|
+
innerProfile.push([
|
|
266
|
+
d.pitchRadius - Math.sqrt(Math.max(0, d.grooveRadius ** 2 - (z - mid) ** 2)),
|
|
267
|
+
z
|
|
268
|
+
]);
|
|
269
|
+
}
|
|
270
|
+
innerProfile.push(
|
|
271
|
+
[d.innerRaceOuterRadius, d.width - c],
|
|
272
|
+
[d.innerRaceOuterRadius - c, d.width],
|
|
273
|
+
[d.boreRadius + c, d.width],
|
|
274
|
+
[d.boreRadius, d.width - c],
|
|
275
|
+
[d.boreRadius, c],
|
|
276
|
+
[d.boreRadius + c, 0]
|
|
277
|
+
);
|
|
278
|
+
const outerProfile = [
|
|
279
|
+
[d.outerRadius - c, 0],
|
|
280
|
+
[d.outerRadius, c],
|
|
281
|
+
[d.outerRadius, d.width - c],
|
|
282
|
+
[d.outerRadius - c, d.width],
|
|
283
|
+
[d.outerRaceInnerRadius + c, d.width],
|
|
284
|
+
[d.outerRaceInnerRadius, d.width - c]
|
|
285
|
+
];
|
|
286
|
+
for (let i = 0; i <= 24; i++) {
|
|
287
|
+
const z = mid + half - 2 * half * i / 24;
|
|
288
|
+
outerProfile.push([
|
|
289
|
+
d.pitchRadius + Math.sqrt(Math.max(0, d.grooveRadius ** 2 - (z - mid) ** 2)),
|
|
290
|
+
z
|
|
291
|
+
]);
|
|
292
|
+
}
|
|
293
|
+
outerProfile.push(
|
|
294
|
+
[d.outerRaceInnerRadius, c],
|
|
295
|
+
[d.outerRaceInnerRadius + c, 0]
|
|
296
|
+
);
|
|
297
|
+
const parts = [
|
|
298
|
+
{
|
|
299
|
+
name: "inner race",
|
|
300
|
+
color: "#9da4ac",
|
|
301
|
+
mesh: revolve(innerProfile, segments)
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
name: "outer race",
|
|
305
|
+
color: "#9da4ac",
|
|
306
|
+
mesh: revolve(outerProfile, segments)
|
|
307
|
+
}
|
|
308
|
+
];
|
|
309
|
+
for (let i = 0; i < d.ballCount; i++) {
|
|
310
|
+
const phase = i * Math.PI * 2 / d.ballCount;
|
|
311
|
+
const center = [
|
|
312
|
+
d.pitchRadius * Math.cos(phase),
|
|
313
|
+
d.pitchRadius * Math.sin(phase),
|
|
314
|
+
mid
|
|
315
|
+
];
|
|
316
|
+
parts.push({
|
|
317
|
+
name: `ball ${i + 1}`,
|
|
318
|
+
color: "#d5d9df",
|
|
319
|
+
mesh: sphere(center, d.ballRadius),
|
|
320
|
+
center,
|
|
321
|
+
radius: d.ballRadius
|
|
322
|
+
});
|
|
323
|
+
const separator = (i + 0.5) * Math.PI * 2 / d.ballCount;
|
|
324
|
+
parts.push({
|
|
325
|
+
name: `cage separator ${i + 1}`,
|
|
326
|
+
color: "#b89b58",
|
|
327
|
+
mesh: annularSector(
|
|
328
|
+
d.cageInnerRadius,
|
|
329
|
+
d.cageOuterRadius,
|
|
330
|
+
mid - 1.1 * d.ballRadius,
|
|
331
|
+
mid + 1.1 * d.ballRadius,
|
|
332
|
+
separator - d.cageSeparatorHalfAngle,
|
|
333
|
+
separator + d.cageSeparatorHalfAngle,
|
|
334
|
+
segments
|
|
335
|
+
)
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
for (const sign of [-1, 1]) {
|
|
339
|
+
const z0 = mid + (sign === -1 ? -1.25 : 1.1) * d.ballRadius;
|
|
340
|
+
const z1 = mid + (sign === -1 ? -1.1 : 1.25) * d.ballRadius;
|
|
341
|
+
parts.push({
|
|
342
|
+
name: `cage ${sign < 0 ? "lower" : "upper"} band`,
|
|
343
|
+
color: "#b89b58",
|
|
344
|
+
mesh: revolve(
|
|
345
|
+
[
|
|
346
|
+
[d.cageOuterRadius, z0],
|
|
347
|
+
[d.cageOuterRadius, z1],
|
|
348
|
+
[d.cageInnerRadius, z1],
|
|
349
|
+
[d.cageInnerRadius, z0]
|
|
350
|
+
],
|
|
351
|
+
segments
|
|
352
|
+
)
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
for (const sign of [-1, 1]) {
|
|
356
|
+
const face2 = sign < 0 ? d.bottomSideShielded ? "shielded" : d.bottomSideSealed ? "sealed" : "open" : d.topSideShielded ? "shielded" : d.topSideSealed ? "sealed" : "open";
|
|
357
|
+
if (face2 === "open") continue;
|
|
358
|
+
const t = d.closureThickness;
|
|
359
|
+
const ri = d.innerRaceOuterRadius, ro = d.outerRaceInnerRadius;
|
|
360
|
+
const shape = face2 === "shielded" ? [
|
|
361
|
+
[ro, 0],
|
|
362
|
+
[ro, t * 0.45],
|
|
363
|
+
[ri, t * 0.45],
|
|
364
|
+
[ri, 0]
|
|
365
|
+
] : [
|
|
366
|
+
[ro, 0],
|
|
367
|
+
[ro, t],
|
|
368
|
+
[ri, t],
|
|
369
|
+
[ri, 0],
|
|
370
|
+
[ri + 0.15 * (ro - ri), 0.5 * t],
|
|
371
|
+
[ro - 0.15 * (ro - ri), 0.5 * t]
|
|
372
|
+
];
|
|
373
|
+
const profile = sign === -1 ? shape : shape.map(([r, z]) => [r, d.width - z]).reverse();
|
|
374
|
+
parts.push({
|
|
375
|
+
name: `${face2} ${sign < 0 ? "lower" : "upper"}`,
|
|
376
|
+
color: face2 === "sealed" ? "#252a30" : "#b5bbc3",
|
|
377
|
+
mesh: revolve(profile, segments)
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
return { ...combine(parts), parts };
|
|
381
|
+
}
|
|
382
|
+
function segmentsFor(value = 96) {
|
|
383
|
+
if (!Number.isInteger(value) || value < 96 || value > 192 || value % 24 !== 0)
|
|
384
|
+
throw new Error("Segments must be a multiple of 24 from 96 to 192");
|
|
385
|
+
return value;
|
|
386
|
+
}
|
|
387
|
+
function checkPrecision(lengths) {
|
|
388
|
+
const largest = Math.max(...lengths);
|
|
389
|
+
if (!lengths.every(Number.isFinite) || largest > 1e6 || Math.min(...lengths) < Math.max(1e-5, largest * 1e-7))
|
|
390
|
+
throw new Error(
|
|
391
|
+
"Bearing dimensions exceed the renderer's numerical resolution"
|
|
392
|
+
);
|
|
393
|
+
}
|
|
394
|
+
function revolve(profile, segments) {
|
|
395
|
+
const positions = [];
|
|
396
|
+
const indices = [];
|
|
397
|
+
for (const [radius, z] of profile)
|
|
398
|
+
for (let i = 0; i < segments; i++) {
|
|
399
|
+
const angle = i * Math.PI * 2 / segments;
|
|
400
|
+
const r = typeof radius === "number" ? radius : radius(angle);
|
|
401
|
+
positions.push(r * Math.cos(angle), r * Math.sin(angle), z);
|
|
402
|
+
}
|
|
403
|
+
for (let j = 0; j < profile.length; j++)
|
|
404
|
+
for (let i = 0; i < segments; i++) {
|
|
405
|
+
const a = j * segments + i;
|
|
406
|
+
const b = j * segments + (i + 1) % segments;
|
|
407
|
+
const c = (j + 1) % profile.length * segments + (i + 1) % segments;
|
|
408
|
+
const e = (j + 1) % profile.length * segments + i;
|
|
409
|
+
indices.push(a, b, c, a, c, e);
|
|
410
|
+
}
|
|
411
|
+
return { positions, indices };
|
|
412
|
+
}
|
|
413
|
+
function annularSector(inner, outer, z0, z1, start, end, segments) {
|
|
414
|
+
const steps = Math.max(
|
|
415
|
+
2,
|
|
416
|
+
Math.ceil((end - start) / (2 * Math.PI) * segments)
|
|
417
|
+
);
|
|
418
|
+
const count = steps + 1;
|
|
419
|
+
const profile = [
|
|
420
|
+
[outer, z0],
|
|
421
|
+
[outer, z1],
|
|
422
|
+
[inner, z1],
|
|
423
|
+
[inner, z0]
|
|
424
|
+
];
|
|
425
|
+
const positions = [];
|
|
426
|
+
const indices = [];
|
|
427
|
+
for (const [r, z] of profile)
|
|
428
|
+
for (let i = 0; i <= steps; i++) {
|
|
429
|
+
const angle = start + (end - start) * i / steps;
|
|
430
|
+
positions.push(r * Math.cos(angle), r * Math.sin(angle), z);
|
|
431
|
+
}
|
|
432
|
+
for (let j = 0; j < 4; j++)
|
|
433
|
+
for (let i = 0; i < steps; i++) {
|
|
434
|
+
const a2 = j * count + i;
|
|
435
|
+
const b2 = a2 + 1;
|
|
436
|
+
const c2 = (j + 1) % 4 * count + i + 1;
|
|
437
|
+
const e2 = (j + 1) % 4 * count + i;
|
|
438
|
+
indices.push(a2, b2, c2, a2, c2, e2);
|
|
439
|
+
}
|
|
440
|
+
indices.push(0, count, 2 * count, 0, 2 * count, 3 * count);
|
|
441
|
+
const a = steps, b = count + steps, c = 2 * count + steps, e = 3 * count + steps;
|
|
442
|
+
indices.push(a, c, b, a, e, c);
|
|
443
|
+
return { positions, indices };
|
|
444
|
+
}
|
|
445
|
+
function sphere(center, radius) {
|
|
446
|
+
const longitude = 24;
|
|
447
|
+
const latitude = 12;
|
|
448
|
+
const positions = [center[0], center[1], center[2] + radius];
|
|
449
|
+
const indices = [];
|
|
450
|
+
for (let j = 1; j < latitude; j++) {
|
|
451
|
+
const polar = j * Math.PI / latitude;
|
|
452
|
+
for (let i = 0; i < longitude; i++) {
|
|
453
|
+
const azimuth = i * Math.PI * 2 / longitude;
|
|
454
|
+
positions.push(
|
|
455
|
+
center[0] + radius * Math.sin(polar) * Math.cos(azimuth),
|
|
456
|
+
center[1] + radius * Math.sin(polar) * Math.sin(azimuth),
|
|
457
|
+
center[2] + radius * Math.cos(polar)
|
|
458
|
+
);
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
const south = positions.length / 3;
|
|
462
|
+
positions.push(center[0], center[1], center[2] - radius);
|
|
463
|
+
for (let i = 0; i < longitude; i++) {
|
|
464
|
+
const next = (i + 1) % longitude;
|
|
465
|
+
indices.push(0, 1 + i, 1 + next);
|
|
466
|
+
for (let j = 0; j < latitude - 2; j++) {
|
|
467
|
+
const a = 1 + j * longitude + i, b = 1 + (j + 1) * longitude + i;
|
|
468
|
+
const c = 1 + (j + 1) * longitude + next, e = 1 + j * longitude + next;
|
|
469
|
+
indices.push(a, b, c, a, c, e);
|
|
470
|
+
}
|
|
471
|
+
const last = 1 + (latitude - 2) * longitude;
|
|
472
|
+
indices.push(south, last + next, last + i);
|
|
473
|
+
}
|
|
474
|
+
return { positions, indices };
|
|
475
|
+
}
|
|
476
|
+
function combine(parts) {
|
|
477
|
+
const positions = [];
|
|
478
|
+
const indices = [];
|
|
479
|
+
for (const { mesh } of parts) {
|
|
480
|
+
const offset = positions.length / 3;
|
|
481
|
+
positions.push(...mesh.positions);
|
|
482
|
+
indices.push(...mesh.indices.map((index) => index + offset));
|
|
483
|
+
}
|
|
484
|
+
return { positions, indices };
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
// lib/models/ballbearing/BallBearing.tsx
|
|
488
|
+
function createBallBearingGeom(input = {}) {
|
|
489
|
+
return indexedMeshToGeom3(createBallBearingMesh(input));
|
|
490
|
+
}
|
|
491
|
+
function BallBearing({ color, ...props }) {
|
|
492
|
+
const { parts } = createBallBearingMesh(props);
|
|
493
|
+
return /* @__PURE__ */ jsx(Fragment2, { children: parts.map((part) => /* @__PURE__ */ jsx(Colorize, { color: color ?? part.color, children: /* @__PURE__ */ jsx(Custom, { geometry: indexedMeshToGeom3(part.mesh) }) }, part.name)) });
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
// lib/models/ballbearing/register.tsx
|
|
497
|
+
var model = defineModelRenderer({
|
|
498
|
+
name: "ballbearing",
|
|
499
|
+
schema: ballBearingModelDefinitionSchema,
|
|
500
|
+
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(BallBearing, { ...props }),
|
|
501
|
+
pads: "none"
|
|
502
|
+
});
|
|
503
|
+
function register(registry) {
|
|
504
|
+
registry.register(model);
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
// lib/models/buttonscrew/register.tsx
|
|
508
|
+
import { buttonScrewModelDefinitionSchema } from "@tscircuit/modelprinter";
|
|
509
|
+
|
|
229
510
|
// lib/models/buttonscrew/mesh.ts
|
|
230
511
|
import {
|
|
231
512
|
buttonScrewModelPropsSchema,
|
|
@@ -338,21 +619,6 @@ function createButtonScrewMesh(input, options = {}) {
|
|
|
338
619
|
return { positions: m.positions, indices: m.indices };
|
|
339
620
|
}
|
|
340
621
|
|
|
341
|
-
// lib/mechanical/indexedMeshToGeom3.ts
|
|
342
|
-
import jscad from "@jscad/modeling";
|
|
343
|
-
function indexedMeshToGeom3(mesh) {
|
|
344
|
-
const polygons = [];
|
|
345
|
-
for (let i = 0; i < mesh.indices.length; i += 3)
|
|
346
|
-
polygons.push(
|
|
347
|
-
mesh.indices.slice(i, i + 3).map((index) => [
|
|
348
|
-
mesh.positions[index * 3],
|
|
349
|
-
mesh.positions[index * 3 + 1],
|
|
350
|
-
mesh.positions[index * 3 + 2]
|
|
351
|
-
])
|
|
352
|
-
);
|
|
353
|
-
return jscad.geometries.geom3.fromPoints(polygons);
|
|
354
|
-
}
|
|
355
|
-
|
|
356
622
|
// lib/models/buttonscrew/ButtonScrew.tsx
|
|
357
623
|
function createButtonScrewGeom(input, resolution4) {
|
|
358
624
|
return indexedMeshToGeom3(createButtonScrewMesh(input, resolution4));
|
|
@@ -362,14 +628,14 @@ function ButtonScrew({ color = "#737e8f", ...props }) {
|
|
|
362
628
|
}
|
|
363
629
|
|
|
364
630
|
// lib/models/buttonscrew/register.tsx
|
|
365
|
-
var
|
|
631
|
+
var model2 = defineModelRenderer({
|
|
366
632
|
name: "buttonscrew",
|
|
367
633
|
schema: buttonScrewModelDefinitionSchema,
|
|
368
634
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(ButtonScrew, { ...props }),
|
|
369
635
|
pads: "none"
|
|
370
636
|
});
|
|
371
|
-
function
|
|
372
|
-
registry.register(
|
|
637
|
+
function register2(registry) {
|
|
638
|
+
registry.register(model2);
|
|
373
639
|
}
|
|
374
640
|
|
|
375
641
|
// lib/models/cablegrommet/register.tsx
|
|
@@ -444,14 +710,14 @@ function CableGrommet({
|
|
|
444
710
|
}
|
|
445
711
|
|
|
446
712
|
// lib/models/cablegrommet/register.tsx
|
|
447
|
-
var
|
|
713
|
+
var model3 = defineModelRenderer({
|
|
448
714
|
name: "cablegrommet",
|
|
449
715
|
schema: cableGrommetModelDefinitionSchema,
|
|
450
716
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(CableGrommet, { ...props }),
|
|
451
717
|
pads: "none"
|
|
452
718
|
});
|
|
453
|
-
function
|
|
454
|
-
registry.register(
|
|
719
|
+
function register3(registry) {
|
|
720
|
+
registry.register(model3);
|
|
455
721
|
}
|
|
456
722
|
|
|
457
723
|
// lib/models/clampingshaftcollar/register.tsx
|
|
@@ -752,14 +1018,14 @@ function ClampingShaftCollar({
|
|
|
752
1018
|
}
|
|
753
1019
|
|
|
754
1020
|
// lib/models/clampingshaftcollar/register.tsx
|
|
755
|
-
var
|
|
1021
|
+
var model4 = defineModelRenderer({
|
|
756
1022
|
name: "clampingshaftcollar",
|
|
757
1023
|
schema: clampingShaftCollarModelDefinitionSchema,
|
|
758
1024
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(ClampingShaftCollar, { ...props }),
|
|
759
1025
|
pads: "none"
|
|
760
1026
|
});
|
|
761
|
-
function
|
|
762
|
-
registry.register(
|
|
1027
|
+
function register4(registry) {
|
|
1028
|
+
registry.register(model4);
|
|
763
1029
|
}
|
|
764
1030
|
|
|
765
1031
|
// lib/models/compressionspring/register.tsx
|
|
@@ -965,14 +1231,14 @@ function CompressionSpring({
|
|
|
965
1231
|
}
|
|
966
1232
|
|
|
967
1233
|
// lib/models/compressionspring/register.tsx
|
|
968
|
-
var
|
|
1234
|
+
var model5 = defineModelRenderer({
|
|
969
1235
|
name: "compressionspring",
|
|
970
1236
|
schema: compressionSpringModelDefinitionSchema,
|
|
971
1237
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(CompressionSpring, { ...props }),
|
|
972
1238
|
pads: "none"
|
|
973
1239
|
});
|
|
974
|
-
function
|
|
975
|
-
registry.register(
|
|
1240
|
+
function register5(registry) {
|
|
1241
|
+
registry.register(model5);
|
|
976
1242
|
}
|
|
977
1243
|
|
|
978
1244
|
// lib/models/flangedbushing/register.tsx
|
|
@@ -1028,14 +1294,14 @@ function FlangedBushing({
|
|
|
1028
1294
|
}
|
|
1029
1295
|
|
|
1030
1296
|
// lib/models/flangedbushing/register.tsx
|
|
1031
|
-
var
|
|
1297
|
+
var model6 = defineModelRenderer({
|
|
1032
1298
|
name: "flangedbushing",
|
|
1033
1299
|
schema: flangedBushingModelDefinitionSchema,
|
|
1034
1300
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(FlangedBushing, { ...props }),
|
|
1035
1301
|
pads: "none"
|
|
1036
1302
|
});
|
|
1037
|
-
function
|
|
1038
|
-
registry.register(
|
|
1303
|
+
function register6(registry) {
|
|
1304
|
+
registry.register(model6);
|
|
1039
1305
|
}
|
|
1040
1306
|
|
|
1041
1307
|
// lib/models/flatheadscrew/register.tsx
|
|
@@ -1168,14 +1434,14 @@ function FlatHeadScrew({
|
|
|
1168
1434
|
}
|
|
1169
1435
|
|
|
1170
1436
|
// lib/models/flatheadscrew/register.tsx
|
|
1171
|
-
var
|
|
1437
|
+
var model7 = defineModelRenderer({
|
|
1172
1438
|
name: "flatheadscrew",
|
|
1173
1439
|
schema: flatHeadScrewModelDefinitionSchema,
|
|
1174
1440
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(FlatHeadScrew, { ...props }),
|
|
1175
1441
|
pads: "none"
|
|
1176
1442
|
});
|
|
1177
|
-
function
|
|
1178
|
-
registry.register(
|
|
1443
|
+
function register7(registry) {
|
|
1444
|
+
registry.register(model7);
|
|
1179
1445
|
}
|
|
1180
1446
|
|
|
1181
1447
|
// lib/models/flexscreen/register.tsx
|
|
@@ -1853,14 +2119,14 @@ var FlexScreen = (props) => {
|
|
|
1853
2119
|
};
|
|
1854
2120
|
|
|
1855
2121
|
// lib/models/flexscreen/register.tsx
|
|
1856
|
-
var
|
|
2122
|
+
var model8 = defineModelRenderer({
|
|
1857
2123
|
name: "flexscreen",
|
|
1858
2124
|
schema: flexScreenModelDefinitionSchema,
|
|
1859
2125
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(FlexScreen, { ...props }),
|
|
1860
2126
|
pads: "footprinter"
|
|
1861
2127
|
});
|
|
1862
|
-
function
|
|
1863
|
-
registry.register(
|
|
2128
|
+
function register8(registry) {
|
|
2129
|
+
registry.register(model8);
|
|
1864
2130
|
}
|
|
1865
2131
|
|
|
1866
2132
|
// lib/models/helicalgear/register.tsx
|
|
@@ -2066,14 +2332,14 @@ function HelicalGear({ color = "#737e8f", ...props }) {
|
|
|
2066
2332
|
}
|
|
2067
2333
|
|
|
2068
2334
|
// lib/models/helicalgear/register.tsx
|
|
2069
|
-
var
|
|
2335
|
+
var model9 = defineModelRenderer({
|
|
2070
2336
|
name: "helicalgear",
|
|
2071
2337
|
schema: helicalGearModelDefinitionSchema,
|
|
2072
2338
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(HelicalGear, { ...props }),
|
|
2073
2339
|
pads: "none"
|
|
2074
2340
|
});
|
|
2075
|
-
function
|
|
2076
|
-
registry.register(
|
|
2341
|
+
function register9(registry) {
|
|
2342
|
+
registry.register(model9);
|
|
2077
2343
|
}
|
|
2078
2344
|
|
|
2079
2345
|
// lib/models/hexbolt/register.tsx
|
|
@@ -2214,14 +2480,14 @@ function HexBolt({ color = "#737e8f", ...props }) {
|
|
|
2214
2480
|
}
|
|
2215
2481
|
|
|
2216
2482
|
// lib/models/hexbolt/register.tsx
|
|
2217
|
-
var
|
|
2483
|
+
var model10 = defineModelRenderer({
|
|
2218
2484
|
name: "hexbolt",
|
|
2219
2485
|
schema: hexBoltModelDefinitionSchema,
|
|
2220
2486
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(HexBolt, { ...props }),
|
|
2221
2487
|
pads: "none"
|
|
2222
2488
|
});
|
|
2223
|
-
function
|
|
2224
|
-
registry.register(
|
|
2489
|
+
function register10(registry) {
|
|
2490
|
+
registry.register(model10);
|
|
2225
2491
|
}
|
|
2226
2492
|
|
|
2227
2493
|
// lib/models/hexnut/register.tsx
|
|
@@ -2344,14 +2610,14 @@ function HexNut({ color = "#737e8f", ...props }) {
|
|
|
2344
2610
|
}
|
|
2345
2611
|
|
|
2346
2612
|
// lib/models/hexnut/register.tsx
|
|
2347
|
-
var
|
|
2613
|
+
var model11 = defineModelRenderer({
|
|
2348
2614
|
name: "hexnut",
|
|
2349
2615
|
schema: hexNutModelDefinitionSchema,
|
|
2350
2616
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(HexNut, { ...props }),
|
|
2351
2617
|
pads: "none"
|
|
2352
2618
|
});
|
|
2353
|
-
function
|
|
2354
|
-
registry.register(
|
|
2619
|
+
function register11(registry) {
|
|
2620
|
+
registry.register(model11);
|
|
2355
2621
|
}
|
|
2356
2622
|
|
|
2357
2623
|
// lib/models/hexsocketbolt/register.tsx
|
|
@@ -2463,14 +2729,14 @@ function HexSocketBolt({
|
|
|
2463
2729
|
}
|
|
2464
2730
|
|
|
2465
2731
|
// lib/models/hexsocketbolt/register.tsx
|
|
2466
|
-
var
|
|
2732
|
+
var model12 = defineModelRenderer({
|
|
2467
2733
|
name: "hexsocketbolt",
|
|
2468
2734
|
schema: hexSocketBoltModelDefinitionSchema,
|
|
2469
2735
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(HexSocketBolt, { ...props }),
|
|
2470
2736
|
pads: "none"
|
|
2471
2737
|
});
|
|
2472
|
-
function
|
|
2473
|
-
registry.register(
|
|
2738
|
+
function register12(registry) {
|
|
2739
|
+
registry.register(model12);
|
|
2474
2740
|
}
|
|
2475
2741
|
|
|
2476
2742
|
// lib/models/nema/register.tsx
|
|
@@ -2739,14 +3005,14 @@ var NEMA17 = (props) => /* @__PURE__ */ jsx(NemaMotor, { ...props, nemaSize: 17
|
|
|
2739
3005
|
var NEMA23 = (props) => /* @__PURE__ */ jsx(NemaMotor, { ...props, nemaSize: 23 });
|
|
2740
3006
|
|
|
2741
3007
|
// lib/models/nema/register.tsx
|
|
2742
|
-
var
|
|
3008
|
+
var model13 = defineModelRenderer({
|
|
2743
3009
|
name: "nema",
|
|
2744
3010
|
schema: nemaMotorModelDefinitionSchema,
|
|
2745
3011
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(NemaMotor, { ...props }),
|
|
2746
3012
|
pads: "none"
|
|
2747
3013
|
});
|
|
2748
|
-
function
|
|
2749
|
-
registry.register(
|
|
3014
|
+
function register13(registry) {
|
|
3015
|
+
registry.register(model13);
|
|
2750
3016
|
}
|
|
2751
3017
|
|
|
2752
3018
|
// lib/models/panscrew/register.tsx
|
|
@@ -2958,14 +3224,14 @@ function PanScrew({ color = "#737e8f", ...props }) {
|
|
|
2958
3224
|
}
|
|
2959
3225
|
|
|
2960
3226
|
// lib/models/panscrew/register.tsx
|
|
2961
|
-
var
|
|
3227
|
+
var model14 = defineModelRenderer({
|
|
2962
3228
|
name: "panscrew",
|
|
2963
3229
|
schema: panScrewModelDefinitionSchema,
|
|
2964
3230
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(PanScrew, { ...props }),
|
|
2965
3231
|
pads: "none"
|
|
2966
3232
|
});
|
|
2967
|
-
function
|
|
2968
|
-
registry.register(
|
|
3233
|
+
function register14(registry) {
|
|
3234
|
+
registry.register(model14);
|
|
2969
3235
|
}
|
|
2970
3236
|
|
|
2971
3237
|
// lib/models/plainbushing/register.tsx
|
|
@@ -3028,14 +3294,14 @@ function PlainBushing({
|
|
|
3028
3294
|
}
|
|
3029
3295
|
|
|
3030
3296
|
// lib/models/plainbushing/register.tsx
|
|
3031
|
-
var
|
|
3297
|
+
var model15 = defineModelRenderer({
|
|
3032
3298
|
name: "plainbushing",
|
|
3033
3299
|
schema: plainBushingModelDefinitionSchema,
|
|
3034
3300
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(PlainBushing, { ...props }),
|
|
3035
3301
|
pads: "none"
|
|
3036
3302
|
});
|
|
3037
|
-
function
|
|
3038
|
-
registry.register(
|
|
3303
|
+
function register15(registry) {
|
|
3304
|
+
registry.register(model15);
|
|
3039
3305
|
}
|
|
3040
3306
|
|
|
3041
3307
|
// lib/models/rigidcoupler/register.tsx
|
|
@@ -3079,14 +3345,14 @@ function RigidCoupler({
|
|
|
3079
3345
|
}
|
|
3080
3346
|
|
|
3081
3347
|
// lib/models/rigidcoupler/register.tsx
|
|
3082
|
-
var
|
|
3348
|
+
var model16 = defineModelRenderer({
|
|
3083
3349
|
name: "rigidcoupler",
|
|
3084
3350
|
schema: rigidCouplerModelDefinitionSchema,
|
|
3085
3351
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(RigidCoupler, { ...props }),
|
|
3086
3352
|
pads: "none"
|
|
3087
3353
|
});
|
|
3088
|
-
function
|
|
3089
|
-
registry.register(
|
|
3354
|
+
function register16(registry) {
|
|
3355
|
+
registry.register(model16);
|
|
3090
3356
|
}
|
|
3091
3357
|
|
|
3092
3358
|
// lib/models/shaftcollar/register.tsx
|
|
@@ -3125,14 +3391,14 @@ function ShaftCollar({ color = "#737e8f", ...props }) {
|
|
|
3125
3391
|
}
|
|
3126
3392
|
|
|
3127
3393
|
// lib/models/shaftcollar/register.tsx
|
|
3128
|
-
var
|
|
3394
|
+
var model17 = defineModelRenderer({
|
|
3129
3395
|
name: "shaftcollar",
|
|
3130
3396
|
schema: shaftCollarModelDefinitionSchema,
|
|
3131
3397
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(ShaftCollar, { ...props }),
|
|
3132
3398
|
pads: "none"
|
|
3133
3399
|
});
|
|
3134
|
-
function
|
|
3135
|
-
registry.register(
|
|
3400
|
+
function register17(registry) {
|
|
3401
|
+
registry.register(model17);
|
|
3136
3402
|
}
|
|
3137
3403
|
|
|
3138
3404
|
// lib/models/sheetmetal/register.tsx
|
|
@@ -3292,14 +3558,14 @@ function SheetMetal({ color = "#737e8f", ...props }) {
|
|
|
3292
3558
|
}
|
|
3293
3559
|
|
|
3294
3560
|
// lib/models/sheetmetal/register.tsx
|
|
3295
|
-
var
|
|
3561
|
+
var model18 = defineModelRenderer({
|
|
3296
3562
|
name: "sheetmetal",
|
|
3297
3563
|
schema: sheetMetalModelDefinitionSchema,
|
|
3298
3564
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(SheetMetal, { ...props }),
|
|
3299
3565
|
pads: "none"
|
|
3300
3566
|
});
|
|
3301
|
-
function
|
|
3302
|
-
registry.register(
|
|
3567
|
+
function register18(registry) {
|
|
3568
|
+
registry.register(model18);
|
|
3303
3569
|
}
|
|
3304
3570
|
|
|
3305
3571
|
// lib/models/spurgear/register.tsx
|
|
@@ -3314,14 +3580,14 @@ function SpurGear({ color = "#737e8f", ...props }) {
|
|
|
3314
3580
|
}
|
|
3315
3581
|
|
|
3316
3582
|
// lib/models/spurgear/register.tsx
|
|
3317
|
-
var
|
|
3583
|
+
var model19 = defineModelRenderer({
|
|
3318
3584
|
name: "spurgear",
|
|
3319
3585
|
schema: spurGearModelDefinitionSchema,
|
|
3320
3586
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(SpurGear, { ...props }),
|
|
3321
3587
|
pads: "none"
|
|
3322
3588
|
});
|
|
3323
|
-
function
|
|
3324
|
-
registry.register(
|
|
3589
|
+
function register19(registry) {
|
|
3590
|
+
registry.register(model19);
|
|
3325
3591
|
}
|
|
3326
3592
|
|
|
3327
3593
|
// lib/models/threadedrod/register.tsx
|
|
@@ -3423,14 +3689,14 @@ function ThreadedRod({ color = "#737e8f", ...props }) {
|
|
|
3423
3689
|
}
|
|
3424
3690
|
|
|
3425
3691
|
// lib/models/threadedrod/register.tsx
|
|
3426
|
-
var
|
|
3692
|
+
var model20 = defineModelRenderer({
|
|
3427
3693
|
name: "threadedrod",
|
|
3428
3694
|
schema: threadedRodModelDefinitionSchema,
|
|
3429
3695
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(ThreadedRod, { ...props }),
|
|
3430
3696
|
pads: "none"
|
|
3431
3697
|
});
|
|
3432
|
-
function
|
|
3433
|
-
registry.register(
|
|
3698
|
+
function register20(registry) {
|
|
3699
|
+
registry.register(model20);
|
|
3434
3700
|
}
|
|
3435
3701
|
|
|
3436
3702
|
// lib/models/tslotextrusion/register.tsx
|
|
@@ -3580,14 +3846,14 @@ function TSlotExtrusion({
|
|
|
3580
3846
|
}
|
|
3581
3847
|
|
|
3582
3848
|
// lib/models/tslotextrusion/register.tsx
|
|
3583
|
-
var
|
|
3849
|
+
var model21 = defineModelRenderer({
|
|
3584
3850
|
name: "tslotextrusion",
|
|
3585
3851
|
schema: tSlotExtrusionModelDefinitionSchema,
|
|
3586
3852
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(TSlotExtrusion, { ...props }),
|
|
3587
3853
|
pads: "none"
|
|
3588
3854
|
});
|
|
3589
|
-
function
|
|
3590
|
-
registry.register(
|
|
3855
|
+
function register21(registry) {
|
|
3856
|
+
registry.register(model21);
|
|
3591
3857
|
}
|
|
3592
3858
|
|
|
3593
3859
|
// lib/models/tslotgusset/register.tsx
|
|
@@ -3640,14 +3906,14 @@ function TSlotGusset({ color = "#8995a3", ...props }) {
|
|
|
3640
3906
|
}
|
|
3641
3907
|
|
|
3642
3908
|
// lib/models/tslotgusset/register.tsx
|
|
3643
|
-
var
|
|
3909
|
+
var model22 = defineModelRenderer({
|
|
3644
3910
|
name: "tslotgusset",
|
|
3645
3911
|
schema: tSlotGussetModelDefinitionSchema,
|
|
3646
3912
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(TSlotGusset, { ...props }),
|
|
3647
3913
|
pads: "none"
|
|
3648
3914
|
});
|
|
3649
|
-
function
|
|
3650
|
-
registry.register(
|
|
3915
|
+
function register22(registry) {
|
|
3916
|
+
registry.register(model22);
|
|
3651
3917
|
}
|
|
3652
3918
|
|
|
3653
3919
|
// lib/models/tslotinsidecorner/register.tsx
|
|
@@ -3727,14 +3993,14 @@ function TSlotInsideCorner({
|
|
|
3727
3993
|
}
|
|
3728
3994
|
|
|
3729
3995
|
// lib/models/tslotinsidecorner/register.tsx
|
|
3730
|
-
var
|
|
3996
|
+
var model23 = defineModelRenderer({
|
|
3731
3997
|
name: "tslotinsidecorner",
|
|
3732
3998
|
schema: tSlotInsideCornerModelDefinitionSchema,
|
|
3733
3999
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(TSlotInsideCorner, { ...props }),
|
|
3734
4000
|
pads: "none"
|
|
3735
4001
|
});
|
|
3736
|
-
function
|
|
3737
|
-
registry.register(
|
|
4002
|
+
function register23(registry) {
|
|
4003
|
+
registry.register(model23);
|
|
3738
4004
|
}
|
|
3739
4005
|
|
|
3740
4006
|
// lib/models/wormgear/register.tsx
|
|
@@ -3926,14 +4192,14 @@ function WormGear({ color = "#737e8f", ...props }) {
|
|
|
3926
4192
|
}
|
|
3927
4193
|
|
|
3928
4194
|
// lib/models/wormgear/register.tsx
|
|
3929
|
-
var
|
|
4195
|
+
var model24 = defineModelRenderer({
|
|
3930
4196
|
name: "wormgear",
|
|
3931
4197
|
schema: wormGearModelDefinitionSchema,
|
|
3932
4198
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(WormGear, { ...props }),
|
|
3933
4199
|
pads: "none"
|
|
3934
4200
|
});
|
|
3935
|
-
function
|
|
3936
|
-
registry.register(
|
|
4201
|
+
function register24(registry) {
|
|
4202
|
+
registry.register(model24);
|
|
3937
4203
|
}
|
|
3938
4204
|
|
|
3939
4205
|
// lib/generated/model-renderers.ts
|
|
@@ -3961,6 +4227,7 @@ function registerAllModelRenderers(registry) {
|
|
|
3961
4227
|
register21(registry);
|
|
3962
4228
|
register22(registry);
|
|
3963
4229
|
register23(registry);
|
|
4230
|
+
register24(registry);
|
|
3964
4231
|
}
|
|
3965
4232
|
|
|
3966
4233
|
// lib/default-model-registry.ts
|
|
@@ -11517,10 +11784,10 @@ var SOT143 = ({ footprint = "sot143" }) => {
|
|
|
11517
11784
|
var Footprinter3d = ({ footprint }) => {
|
|
11518
11785
|
const modelFn = mp3.string(footprint.split("_", 1)[0]).params().fn;
|
|
11519
11786
|
if (mp3.getModelNames().includes(modelFn)) {
|
|
11520
|
-
const
|
|
11521
|
-
const renderer = modelRendererRegistry.get(
|
|
11787
|
+
const model25 = mp3.string(footprint).json();
|
|
11788
|
+
const renderer = modelRendererRegistry.get(model25.fn);
|
|
11522
11789
|
if (renderer) {
|
|
11523
|
-
return renderer.render(
|
|
11790
|
+
return renderer.render(model25);
|
|
11524
11791
|
}
|
|
11525
11792
|
}
|
|
11526
11793
|
let normalizedFootprint = footprint;
|
|
@@ -12471,6 +12738,7 @@ function createJSCADRenderer(jscad8) {
|
|
|
12471
12738
|
return { createJSCADRoot };
|
|
12472
12739
|
}
|
|
12473
12740
|
export {
|
|
12741
|
+
BallBearing,
|
|
12474
12742
|
ButtonScrew,
|
|
12475
12743
|
CableGrommet,
|
|
12476
12744
|
ClampingShaftCollar,
|
|
@@ -12498,6 +12766,8 @@ export {
|
|
|
12498
12766
|
ThreadedRod,
|
|
12499
12767
|
WormGear,
|
|
12500
12768
|
convertCSGToThreeGeom,
|
|
12769
|
+
createBallBearingGeom,
|
|
12770
|
+
createBallBearingMesh,
|
|
12501
12771
|
createButtonScrewGeom,
|
|
12502
12772
|
createButtonScrewMesh,
|
|
12503
12773
|
createCableGrommetGeom,
|