jscad-electronics 0.0.196 → 0.0.198
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 +32 -2
- package/dist/index.js +1097 -946
- package/dist/index.js.map +1 -1
- package/dist/vanilla.d.ts +32 -2
- package/dist/vanilla.js +199 -58
- package/dist/vanilla.js.map +1 -1
- package/package.json +1 -1
package/dist/vanilla.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { BufferGeometry } from 'three';
|
|
|
3
3
|
import * as jscadModeling from '@jscad/modeling';
|
|
4
4
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
5
5
|
import * as _jscad_modeling_src_geometries_types from '@jscad/modeling/src/geometries/types';
|
|
6
|
-
import { FlatHeadScrewModelPropsInput, SpurGearModelPropsInput, HelicalGearModelPropsInput, HexBoltModelPropsInput, HexSocketBoltModelPropsInput, NemaMotorModelPropsInput, PanScrewModelPropsInput, SheetMetalModelPropsInput, WormGearModelPropsInput } from '@tscircuit/modelprinter';
|
|
6
|
+
import { FlangedBushingModelPropsInput, FlatHeadScrewModelPropsInput, SpurGearModelPropsInput, HelicalGearModelPropsInput, HexBoltModelPropsInput, HexSocketBoltModelPropsInput, NemaMotorModelPropsInput, PanScrewModelPropsInput, PlainBushingModelPropsInput, SheetMetalModelPropsInput, WormGearModelPropsInput } from '@tscircuit/modelprinter';
|
|
7
7
|
|
|
8
8
|
type VNode = {
|
|
9
9
|
type: any;
|
|
@@ -26,6 +26,21 @@ type RenderResult = {
|
|
|
26
26
|
|
|
27
27
|
declare function convertCSGToThreeGeom(csg: any): BufferGeometry;
|
|
28
28
|
|
|
29
|
+
/** Shared ring vertices and outward counterclockwise triangles, in millimeters. */
|
|
30
|
+
interface FlangedBushingMesh {
|
|
31
|
+
positions: number[];
|
|
32
|
+
indices: number[];
|
|
33
|
+
}
|
|
34
|
+
/** Integral flange at Z=0..flangeThickness; total length includes the flange. */
|
|
35
|
+
declare function createFlangedBushingMesh(input: FlangedBushingModelPropsInput): FlangedBushingMesh;
|
|
36
|
+
|
|
37
|
+
type FlangedBushingProps = FlangedBushingModelPropsInput & {
|
|
38
|
+
color?: string;
|
|
39
|
+
};
|
|
40
|
+
/** Square integral flange at the Z=0 end; bore continues through overall length. */
|
|
41
|
+
declare function createFlangedBushingGeom(input: FlangedBushingModelPropsInput): _jscad_modeling_src_geometries_types.Geom3;
|
|
42
|
+
declare function FlangedBushing({ color, ...props }: FlangedBushingProps): react_jsx_runtime.JSX.Element;
|
|
43
|
+
|
|
29
44
|
interface FlatHeadScrewMeshOptions {
|
|
30
45
|
radialSegments?: number;
|
|
31
46
|
threadStepsPerTurn?: number;
|
|
@@ -141,6 +156,21 @@ type PanScrewProps = PanScrewModelPropsInput & {
|
|
|
141
156
|
declare function createPanScrewGeom(input: PanScrewModelPropsInput, options?: PanScrewMeshOptions): _jscad_modeling_src_geometries_types.Geom3;
|
|
142
157
|
declare function PanScrew({ color, ...props }: PanScrewProps): react_jsx_runtime.JSX.Element;
|
|
143
158
|
|
|
159
|
+
/** Shared ring vertices and outward counterclockwise triangles, in millimeters. */
|
|
160
|
+
interface PlainBushingMesh {
|
|
161
|
+
positions: number[];
|
|
162
|
+
indices: number[];
|
|
163
|
+
}
|
|
164
|
+
/** Annular end faces at Z=0/length; chamfers cut all four bore/outside rims. */
|
|
165
|
+
declare function createPlainBushingMesh(input: PlainBushingModelPropsInput): PlainBushingMesh;
|
|
166
|
+
|
|
167
|
+
type PlainBushingProps = PlainBushingModelPropsInput & {
|
|
168
|
+
color?: string;
|
|
169
|
+
};
|
|
170
|
+
/** Through sleeve from Z=0 to length, with four optional 45-degree rim chamfers. */
|
|
171
|
+
declare function createPlainBushingGeom(input: PlainBushingModelPropsInput): _jscad_modeling_src_geometries_types.Geom3;
|
|
172
|
+
declare function PlainBushing({ color, ...props }: PlainBushingProps): react_jsx_runtime.JSX.Element;
|
|
173
|
+
|
|
144
174
|
interface SheetMetalMesh {
|
|
145
175
|
positions: number[];
|
|
146
176
|
indices: number[];
|
|
@@ -195,4 +225,4 @@ declare function createJSCADRenderer(jscad: typeof jscadModeling): {
|
|
|
195
225
|
};
|
|
196
226
|
};
|
|
197
227
|
|
|
198
|
-
export { type ColoredGeom, FlatHeadScrew, type FlatHeadScrewMesh, type FlatHeadScrewMeshOptions, type FlatHeadScrewProps, Fragment, HelicalGear, type HelicalGearMesh, type HelicalGearProps, HexBolt, type HexBoltMesh, type HexBoltMeshOptions, type HexBoltProps, HexSocketBolt, type HexSocketBoltMesh, type HexSocketBoltProps, NEMA17, NEMA23, NEMA8, type NemaFrameMotorProps, NemaMotor, type NemaMotorProps, PanScrew, type PanScrewMesh, type PanScrewMeshOptions, type PanScrewProps, type RenderResult, SheetMetal, type SheetMetalMesh, type SheetMetalProps, SpurGear, type SpurGearMesh, type SpurGearProps, type VNode, WormGear, type WormGearMesh, type WormGearProps, convertCSGToThreeGeom, createFlatHeadScrewGeom, createFlatHeadScrewMesh, createHelicalGearGeom, createHelicalGearMesh, createHexBoltGeom, createHexBoltMesh, createHexSocketBoltGeom, createHexSocketBoltMesh, createJSCADRenderer, createPanScrewGeom, createPanScrewMesh, createSheetMetalGeom, createSheetMetalMesh, createSpurGearGeom, createSpurGearMesh, createWormGearGeom, createWormGearMesh, getJscadModelForFootprint, getJscadModelForFootprintWithPads, h };
|
|
228
|
+
export { type ColoredGeom, FlangedBushing, type FlangedBushingMesh, type FlangedBushingProps, FlatHeadScrew, type FlatHeadScrewMesh, type FlatHeadScrewMeshOptions, type FlatHeadScrewProps, Fragment, HelicalGear, type HelicalGearMesh, type HelicalGearProps, HexBolt, type HexBoltMesh, type HexBoltMeshOptions, type HexBoltProps, HexSocketBolt, type HexSocketBoltMesh, type HexSocketBoltProps, NEMA17, NEMA23, NEMA8, type NemaFrameMotorProps, NemaMotor, type NemaMotorProps, PanScrew, type PanScrewMesh, type PanScrewMeshOptions, type PanScrewProps, PlainBushing, type PlainBushingMesh, type PlainBushingProps, type RenderResult, SheetMetal, type SheetMetalMesh, type SheetMetalProps, SpurGear, type SpurGearMesh, type SpurGearProps, type VNode, WormGear, type WormGearMesh, type WormGearProps, convertCSGToThreeGeom, createFlangedBushingGeom, createFlangedBushingMesh, createFlatHeadScrewGeom, createFlatHeadScrewMesh, createHelicalGearGeom, createHelicalGearMesh, createHexBoltGeom, createHexBoltMesh, createHexSocketBoltGeom, createHexSocketBoltMesh, createJSCADRenderer, createPanScrewGeom, createPanScrewMesh, createPlainBushingGeom, createPlainBushingMesh, createSheetMetalGeom, createSheetMetalMesh, createSpurGearGeom, createSpurGearMesh, createWormGearGeom, createWormGearMesh, getJscadModelForFootprint, getJscadModelForFootprintWithPads, h };
|
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/flangedbushing/register.tsx
|
|
183
|
+
import { flangedBushingModelDefinitionSchema } from "@tscircuit/modelprinter";
|
|
184
184
|
|
|
185
185
|
// lib/model-registry.ts
|
|
186
|
-
function defineModelRenderer(
|
|
187
|
-
return
|
|
186
|
+
function defineModelRenderer(model13) {
|
|
187
|
+
return model13;
|
|
188
188
|
}
|
|
189
189
|
var ModelRendererRegistry = class {
|
|
190
190
|
models = /* @__PURE__ */ new Map();
|
|
191
|
-
register(
|
|
192
|
-
if (typeof
|
|
191
|
+
register(model13) {
|
|
192
|
+
if (typeof model13.name !== "string" || !/^[a-z]+$/.test(model13.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(model13.name)) {
|
|
198
|
+
throw new Error(`Model renderer "${model13.name}" is already registered`);
|
|
199
199
|
}
|
|
200
|
-
if (
|
|
200
|
+
if (model13.pads !== "none" && model13.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 } = model13;
|
|
204
204
|
this.models.set(name, {
|
|
205
205
|
name,
|
|
206
206
|
schema,
|
|
@@ -226,6 +226,84 @@ 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/flangedbushing/mesh.ts
|
|
245
|
+
import {
|
|
246
|
+
flangedBushingModelPropsSchema,
|
|
247
|
+
getFlangedBushingDimensions
|
|
248
|
+
} from "@tscircuit/modelprinter";
|
|
249
|
+
function createFlangedBushingMesh(input) {
|
|
250
|
+
const props = flangedBushingModelPropsSchema.parse(input);
|
|
251
|
+
const d = getFlangedBushingDimensions(props);
|
|
252
|
+
const ri = d.innerDiameter / 2;
|
|
253
|
+
const ro = d.outerDiameter / 2;
|
|
254
|
+
const rf = d.flangeDiameter / 2;
|
|
255
|
+
const profile = [
|
|
256
|
+
[rf, 0],
|
|
257
|
+
[rf, d.shoulderZ],
|
|
258
|
+
[ro, d.shoulderZ],
|
|
259
|
+
[ro, d.length],
|
|
260
|
+
[ri, d.length],
|
|
261
|
+
[ri, 0]
|
|
262
|
+
];
|
|
263
|
+
const segments = 96;
|
|
264
|
+
const positions = [];
|
|
265
|
+
const indices = [];
|
|
266
|
+
for (const [radius, z] of profile)
|
|
267
|
+
for (let i = 0; i < segments; i++) {
|
|
268
|
+
const angle = i * Math.PI * 2 / segments;
|
|
269
|
+
positions.push(radius * Math.cos(angle), radius * Math.sin(angle), z);
|
|
270
|
+
}
|
|
271
|
+
for (let ring = 0; ring < profile.length; ring++) {
|
|
272
|
+
const a = ring * segments;
|
|
273
|
+
const b = (ring + 1) % profile.length * segments;
|
|
274
|
+
for (let i = 0; i < segments; i++) {
|
|
275
|
+
const next = (i + 1) % segments;
|
|
276
|
+
indices.push(a + i, a + next, b + next, a + i, b + next, b + i);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return { positions, indices };
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
// lib/models/flangedbushing/FlangedBushing.tsx
|
|
283
|
+
function createFlangedBushingGeom(input) {
|
|
284
|
+
return indexedMeshToGeom3(createFlangedBushingMesh(input));
|
|
285
|
+
}
|
|
286
|
+
function FlangedBushing({
|
|
287
|
+
color = "#a18450",
|
|
288
|
+
...props
|
|
289
|
+
}) {
|
|
290
|
+
return /* @__PURE__ */ jsx(Colorize, { color, children: /* @__PURE__ */ jsx(Custom, { geometry: createFlangedBushingGeom(props) }) });
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// lib/models/flangedbushing/register.tsx
|
|
294
|
+
var model = defineModelRenderer({
|
|
295
|
+
name: "flangedbushing",
|
|
296
|
+
schema: flangedBushingModelDefinitionSchema,
|
|
297
|
+
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(FlangedBushing, { ...props }),
|
|
298
|
+
pads: "none"
|
|
299
|
+
});
|
|
300
|
+
function register(registry) {
|
|
301
|
+
registry.register(model);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// lib/models/flatheadscrew/register.tsx
|
|
305
|
+
import { flatHeadScrewModelDefinitionSchema } from "@tscircuit/modelprinter";
|
|
306
|
+
|
|
229
307
|
// lib/models/flatheadscrew/mesh.ts
|
|
230
308
|
import {
|
|
231
309
|
flatHeadScrewModelPropsSchema
|
|
@@ -341,21 +419,6 @@ function createFlatHeadScrewMesh(input, options = {}) {
|
|
|
341
419
|
return { positions, indices };
|
|
342
420
|
}
|
|
343
421
|
|
|
344
|
-
// lib/mechanical/indexedMeshToGeom3.ts
|
|
345
|
-
import jscad from "@jscad/modeling";
|
|
346
|
-
function indexedMeshToGeom3(mesh) {
|
|
347
|
-
const polygons = [];
|
|
348
|
-
for (let i = 0; i < mesh.indices.length; i += 3)
|
|
349
|
-
polygons.push(
|
|
350
|
-
mesh.indices.slice(i, i + 3).map((index) => [
|
|
351
|
-
mesh.positions[index * 3],
|
|
352
|
-
mesh.positions[index * 3 + 1],
|
|
353
|
-
mesh.positions[index * 3 + 2]
|
|
354
|
-
])
|
|
355
|
-
);
|
|
356
|
-
return jscad.geometries.geom3.fromPoints(polygons);
|
|
357
|
-
}
|
|
358
|
-
|
|
359
422
|
// lib/models/flatheadscrew/FlatHeadScrew.tsx
|
|
360
423
|
function createFlatHeadScrewGeom(input, options) {
|
|
361
424
|
return indexedMeshToGeom3(createFlatHeadScrewMesh(input, options));
|
|
@@ -368,14 +431,14 @@ function FlatHeadScrew({
|
|
|
368
431
|
}
|
|
369
432
|
|
|
370
433
|
// lib/models/flatheadscrew/register.tsx
|
|
371
|
-
var
|
|
434
|
+
var model2 = defineModelRenderer({
|
|
372
435
|
name: "flatheadscrew",
|
|
373
436
|
schema: flatHeadScrewModelDefinitionSchema,
|
|
374
437
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(FlatHeadScrew, { ...props }),
|
|
375
438
|
pads: "none"
|
|
376
439
|
});
|
|
377
|
-
function
|
|
378
|
-
registry.register(
|
|
440
|
+
function register2(registry) {
|
|
441
|
+
registry.register(model2);
|
|
379
442
|
}
|
|
380
443
|
|
|
381
444
|
// lib/models/flexscreen/register.tsx
|
|
@@ -1053,14 +1116,14 @@ var FlexScreen = (props) => {
|
|
|
1053
1116
|
};
|
|
1054
1117
|
|
|
1055
1118
|
// lib/models/flexscreen/register.tsx
|
|
1056
|
-
var
|
|
1119
|
+
var model3 = defineModelRenderer({
|
|
1057
1120
|
name: "flexscreen",
|
|
1058
1121
|
schema: flexScreenModelDefinitionSchema,
|
|
1059
1122
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(FlexScreen, { ...props }),
|
|
1060
1123
|
pads: "footprinter"
|
|
1061
1124
|
});
|
|
1062
|
-
function
|
|
1063
|
-
registry.register(
|
|
1125
|
+
function register3(registry) {
|
|
1126
|
+
registry.register(model3);
|
|
1064
1127
|
}
|
|
1065
1128
|
|
|
1066
1129
|
// lib/models/helicalgear/register.tsx
|
|
@@ -1266,14 +1329,14 @@ function HelicalGear({ color = "#737e8f", ...props }) {
|
|
|
1266
1329
|
}
|
|
1267
1330
|
|
|
1268
1331
|
// lib/models/helicalgear/register.tsx
|
|
1269
|
-
var
|
|
1332
|
+
var model4 = defineModelRenderer({
|
|
1270
1333
|
name: "helicalgear",
|
|
1271
1334
|
schema: helicalGearModelDefinitionSchema,
|
|
1272
1335
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(HelicalGear, { ...props }),
|
|
1273
1336
|
pads: "none"
|
|
1274
1337
|
});
|
|
1275
|
-
function
|
|
1276
|
-
registry.register(
|
|
1338
|
+
function register4(registry) {
|
|
1339
|
+
registry.register(model4);
|
|
1277
1340
|
}
|
|
1278
1341
|
|
|
1279
1342
|
// lib/models/hexbolt/register.tsx
|
|
@@ -1414,14 +1477,14 @@ function HexBolt({ color = "#737e8f", ...props }) {
|
|
|
1414
1477
|
}
|
|
1415
1478
|
|
|
1416
1479
|
// lib/models/hexbolt/register.tsx
|
|
1417
|
-
var
|
|
1480
|
+
var model5 = defineModelRenderer({
|
|
1418
1481
|
name: "hexbolt",
|
|
1419
1482
|
schema: hexBoltModelDefinitionSchema,
|
|
1420
1483
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(HexBolt, { ...props }),
|
|
1421
1484
|
pads: "none"
|
|
1422
1485
|
});
|
|
1423
|
-
function
|
|
1424
|
-
registry.register(
|
|
1486
|
+
function register5(registry) {
|
|
1487
|
+
registry.register(model5);
|
|
1425
1488
|
}
|
|
1426
1489
|
|
|
1427
1490
|
// lib/models/hexsocketbolt/register.tsx
|
|
@@ -1533,14 +1596,14 @@ function HexSocketBolt({
|
|
|
1533
1596
|
}
|
|
1534
1597
|
|
|
1535
1598
|
// lib/models/hexsocketbolt/register.tsx
|
|
1536
|
-
var
|
|
1599
|
+
var model6 = defineModelRenderer({
|
|
1537
1600
|
name: "hexsocketbolt",
|
|
1538
1601
|
schema: hexSocketBoltModelDefinitionSchema,
|
|
1539
1602
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(HexSocketBolt, { ...props }),
|
|
1540
1603
|
pads: "none"
|
|
1541
1604
|
});
|
|
1542
|
-
function
|
|
1543
|
-
registry.register(
|
|
1605
|
+
function register6(registry) {
|
|
1606
|
+
registry.register(model6);
|
|
1544
1607
|
}
|
|
1545
1608
|
|
|
1546
1609
|
// lib/models/nema/register.tsx
|
|
@@ -1809,14 +1872,14 @@ var NEMA17 = (props) => /* @__PURE__ */ jsx(NemaMotor, { ...props, nemaSize: 17
|
|
|
1809
1872
|
var NEMA23 = (props) => /* @__PURE__ */ jsx(NemaMotor, { ...props, nemaSize: 23 });
|
|
1810
1873
|
|
|
1811
1874
|
// lib/models/nema/register.tsx
|
|
1812
|
-
var
|
|
1875
|
+
var model7 = defineModelRenderer({
|
|
1813
1876
|
name: "nema",
|
|
1814
1877
|
schema: nemaMotorModelDefinitionSchema,
|
|
1815
1878
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(NemaMotor, { ...props }),
|
|
1816
1879
|
pads: "none"
|
|
1817
1880
|
});
|
|
1818
|
-
function
|
|
1819
|
-
registry.register(
|
|
1881
|
+
function register7(registry) {
|
|
1882
|
+
registry.register(model7);
|
|
1820
1883
|
}
|
|
1821
1884
|
|
|
1822
1885
|
// lib/models/panscrew/register.tsx
|
|
@@ -2028,14 +2091,84 @@ function PanScrew({ color = "#737e8f", ...props }) {
|
|
|
2028
2091
|
}
|
|
2029
2092
|
|
|
2030
2093
|
// lib/models/panscrew/register.tsx
|
|
2031
|
-
var
|
|
2094
|
+
var model8 = defineModelRenderer({
|
|
2032
2095
|
name: "panscrew",
|
|
2033
2096
|
schema: panScrewModelDefinitionSchema,
|
|
2034
2097
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(PanScrew, { ...props }),
|
|
2035
2098
|
pads: "none"
|
|
2036
2099
|
});
|
|
2037
|
-
function
|
|
2038
|
-
registry.register(
|
|
2100
|
+
function register8(registry) {
|
|
2101
|
+
registry.register(model8);
|
|
2102
|
+
}
|
|
2103
|
+
|
|
2104
|
+
// lib/models/plainbushing/register.tsx
|
|
2105
|
+
import { plainBushingModelDefinitionSchema } from "@tscircuit/modelprinter";
|
|
2106
|
+
|
|
2107
|
+
// lib/models/plainbushing/mesh.ts
|
|
2108
|
+
import {
|
|
2109
|
+
getPlainBushingDimensions,
|
|
2110
|
+
plainBushingModelPropsSchema
|
|
2111
|
+
} from "@tscircuit/modelprinter";
|
|
2112
|
+
function createPlainBushingMesh(input) {
|
|
2113
|
+
const props = plainBushingModelPropsSchema.parse(input);
|
|
2114
|
+
const d = getPlainBushingDimensions(props);
|
|
2115
|
+
const ri = d.innerDiameter / 2;
|
|
2116
|
+
const ro = d.outerDiameter / 2;
|
|
2117
|
+
const c = props.edgeChamfer;
|
|
2118
|
+
const profile = c > 0 ? [
|
|
2119
|
+
[d.endOuterDiameter / 2, 0],
|
|
2120
|
+
[ro, c],
|
|
2121
|
+
[ro, d.length - c],
|
|
2122
|
+
[d.endOuterDiameter / 2, d.length],
|
|
2123
|
+
[d.endInnerDiameter / 2, d.length],
|
|
2124
|
+
[ri, d.length - c],
|
|
2125
|
+
[ri, c],
|
|
2126
|
+
[d.endInnerDiameter / 2, 0]
|
|
2127
|
+
] : [
|
|
2128
|
+
[ro, 0],
|
|
2129
|
+
[ro, d.length],
|
|
2130
|
+
[ri, d.length],
|
|
2131
|
+
[ri, 0]
|
|
2132
|
+
];
|
|
2133
|
+
const segments = 96;
|
|
2134
|
+
const positions = [];
|
|
2135
|
+
const indices = [];
|
|
2136
|
+
for (const [radius, z] of profile)
|
|
2137
|
+
for (let i = 0; i < segments; i++) {
|
|
2138
|
+
const angle = i * Math.PI * 2 / segments;
|
|
2139
|
+
positions.push(radius * Math.cos(angle), radius * Math.sin(angle), z);
|
|
2140
|
+
}
|
|
2141
|
+
for (let ring = 0; ring < profile.length; ring++) {
|
|
2142
|
+
const a = ring * segments;
|
|
2143
|
+
const b = (ring + 1) % profile.length * segments;
|
|
2144
|
+
for (let i = 0; i < segments; i++) {
|
|
2145
|
+
const next = (i + 1) % segments;
|
|
2146
|
+
indices.push(a + i, a + next, b + next, a + i, b + next, b + i);
|
|
2147
|
+
}
|
|
2148
|
+
}
|
|
2149
|
+
return { positions, indices };
|
|
2150
|
+
}
|
|
2151
|
+
|
|
2152
|
+
// lib/models/plainbushing/PlainBushing.tsx
|
|
2153
|
+
function createPlainBushingGeom(input) {
|
|
2154
|
+
return indexedMeshToGeom3(createPlainBushingMesh(input));
|
|
2155
|
+
}
|
|
2156
|
+
function PlainBushing({
|
|
2157
|
+
color = "#a18450",
|
|
2158
|
+
...props
|
|
2159
|
+
}) {
|
|
2160
|
+
return /* @__PURE__ */ jsx(Colorize, { color, children: /* @__PURE__ */ jsx(Custom, { geometry: createPlainBushingGeom(props) }) });
|
|
2161
|
+
}
|
|
2162
|
+
|
|
2163
|
+
// lib/models/plainbushing/register.tsx
|
|
2164
|
+
var model9 = defineModelRenderer({
|
|
2165
|
+
name: "plainbushing",
|
|
2166
|
+
schema: plainBushingModelDefinitionSchema,
|
|
2167
|
+
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(PlainBushing, { ...props }),
|
|
2168
|
+
pads: "none"
|
|
2169
|
+
});
|
|
2170
|
+
function register9(registry) {
|
|
2171
|
+
registry.register(model9);
|
|
2039
2172
|
}
|
|
2040
2173
|
|
|
2041
2174
|
// lib/models/sheetmetal/register.tsx
|
|
@@ -2195,14 +2328,14 @@ function SheetMetal({ color = "#737e8f", ...props }) {
|
|
|
2195
2328
|
}
|
|
2196
2329
|
|
|
2197
2330
|
// lib/models/sheetmetal/register.tsx
|
|
2198
|
-
var
|
|
2331
|
+
var model10 = defineModelRenderer({
|
|
2199
2332
|
name: "sheetmetal",
|
|
2200
2333
|
schema: sheetMetalModelDefinitionSchema,
|
|
2201
2334
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(SheetMetal, { ...props }),
|
|
2202
2335
|
pads: "none"
|
|
2203
2336
|
});
|
|
2204
|
-
function
|
|
2205
|
-
registry.register(
|
|
2337
|
+
function register10(registry) {
|
|
2338
|
+
registry.register(model10);
|
|
2206
2339
|
}
|
|
2207
2340
|
|
|
2208
2341
|
// lib/models/spurgear/register.tsx
|
|
@@ -2217,14 +2350,14 @@ function SpurGear({ color = "#737e8f", ...props }) {
|
|
|
2217
2350
|
}
|
|
2218
2351
|
|
|
2219
2352
|
// lib/models/spurgear/register.tsx
|
|
2220
|
-
var
|
|
2353
|
+
var model11 = defineModelRenderer({
|
|
2221
2354
|
name: "spurgear",
|
|
2222
2355
|
schema: spurGearModelDefinitionSchema,
|
|
2223
2356
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(SpurGear, { ...props }),
|
|
2224
2357
|
pads: "none"
|
|
2225
2358
|
});
|
|
2226
|
-
function
|
|
2227
|
-
registry.register(
|
|
2359
|
+
function register11(registry) {
|
|
2360
|
+
registry.register(model11);
|
|
2228
2361
|
}
|
|
2229
2362
|
|
|
2230
2363
|
// lib/models/wormgear/register.tsx
|
|
@@ -2416,14 +2549,14 @@ function WormGear({ color = "#737e8f", ...props }) {
|
|
|
2416
2549
|
}
|
|
2417
2550
|
|
|
2418
2551
|
// lib/models/wormgear/register.tsx
|
|
2419
|
-
var
|
|
2552
|
+
var model12 = defineModelRenderer({
|
|
2420
2553
|
name: "wormgear",
|
|
2421
2554
|
schema: wormGearModelDefinitionSchema,
|
|
2422
2555
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(WormGear, { ...props }),
|
|
2423
2556
|
pads: "none"
|
|
2424
2557
|
});
|
|
2425
|
-
function
|
|
2426
|
-
registry.register(
|
|
2558
|
+
function register12(registry) {
|
|
2559
|
+
registry.register(model12);
|
|
2427
2560
|
}
|
|
2428
2561
|
|
|
2429
2562
|
// lib/generated/model-renderers.ts
|
|
@@ -2438,6 +2571,8 @@ function registerAllModelRenderers(registry) {
|
|
|
2438
2571
|
register8(registry);
|
|
2439
2572
|
register9(registry);
|
|
2440
2573
|
register10(registry);
|
|
2574
|
+
register11(registry);
|
|
2575
|
+
register12(registry);
|
|
2441
2576
|
}
|
|
2442
2577
|
|
|
2443
2578
|
// lib/default-model-registry.ts
|
|
@@ -9994,10 +10129,10 @@ var SOT143 = ({ footprint = "sot143" }) => {
|
|
|
9994
10129
|
var Footprinter3d = ({ footprint }) => {
|
|
9995
10130
|
const modelFn = mp3.string(footprint.split("_", 1)[0]).params().fn;
|
|
9996
10131
|
if (mp3.getModelNames().includes(modelFn)) {
|
|
9997
|
-
const
|
|
9998
|
-
const renderer = modelRendererRegistry.get(
|
|
10132
|
+
const model13 = mp3.string(footprint).json();
|
|
10133
|
+
const renderer = modelRendererRegistry.get(model13.fn);
|
|
9999
10134
|
if (renderer) {
|
|
10000
|
-
return renderer.render(
|
|
10135
|
+
return renderer.render(model13);
|
|
10001
10136
|
}
|
|
10002
10137
|
}
|
|
10003
10138
|
let normalizedFootprint = footprint;
|
|
@@ -10948,6 +11083,7 @@ function createJSCADRenderer(jscad4) {
|
|
|
10948
11083
|
return { createJSCADRoot };
|
|
10949
11084
|
}
|
|
10950
11085
|
export {
|
|
11086
|
+
FlangedBushing,
|
|
10951
11087
|
FlatHeadScrew,
|
|
10952
11088
|
Fragment,
|
|
10953
11089
|
HelicalGear,
|
|
@@ -10958,10 +11094,13 @@ export {
|
|
|
10958
11094
|
NEMA8,
|
|
10959
11095
|
NemaMotor,
|
|
10960
11096
|
PanScrew,
|
|
11097
|
+
PlainBushing,
|
|
10961
11098
|
SheetMetal,
|
|
10962
11099
|
SpurGear,
|
|
10963
11100
|
WormGear,
|
|
10964
11101
|
convertCSGToThreeGeom,
|
|
11102
|
+
createFlangedBushingGeom,
|
|
11103
|
+
createFlangedBushingMesh,
|
|
10965
11104
|
createFlatHeadScrewGeom,
|
|
10966
11105
|
createFlatHeadScrewMesh,
|
|
10967
11106
|
createHelicalGearGeom,
|
|
@@ -10973,6 +11112,8 @@ export {
|
|
|
10973
11112
|
createJSCADRenderer,
|
|
10974
11113
|
createPanScrewGeom,
|
|
10975
11114
|
createPanScrewMesh,
|
|
11115
|
+
createPlainBushingGeom,
|
|
11116
|
+
createPlainBushingMesh,
|
|
10976
11117
|
createSheetMetalGeom,
|
|
10977
11118
|
createSheetMetalMesh,
|
|
10978
11119
|
createSpurGearGeom,
|