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/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/flatheadscrew/register.tsx
183
- import { flatHeadScrewModelDefinitionSchema } from "@tscircuit/modelprinter";
182
+ // lib/models/flangedbushing/register.tsx
183
+ import { flangedBushingModelDefinitionSchema } from "@tscircuit/modelprinter";
184
184
 
185
185
  // lib/model-registry.ts
186
- function defineModelRenderer(model11) {
187
- return model11;
186
+ function defineModelRenderer(model13) {
187
+ return model13;
188
188
  }
189
189
  var ModelRendererRegistry = class {
190
190
  models = /* @__PURE__ */ new Map();
191
- register(model11) {
192
- if (typeof model11.name !== "string" || !/^[a-z]+$/.test(model11.name)) {
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(model11.name)) {
198
- throw new Error(`Model renderer "${model11.name}" is already registered`);
197
+ if (this.models.has(model13.name)) {
198
+ throw new Error(`Model renderer "${model13.name}" is already registered`);
199
199
  }
200
- if (model11.pads !== "none" && model11.pads !== "footprinter") {
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 } = model11;
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 model = defineModelRenderer({
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 register(registry) {
378
- registry.register(model);
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 model2 = defineModelRenderer({
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 register2(registry) {
1063
- registry.register(model2);
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 model3 = defineModelRenderer({
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 register3(registry) {
1276
- registry.register(model3);
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 model4 = defineModelRenderer({
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 register4(registry) {
1424
- registry.register(model4);
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 model5 = defineModelRenderer({
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 register5(registry) {
1543
- registry.register(model5);
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 model6 = defineModelRenderer({
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 register6(registry) {
1819
- registry.register(model6);
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 model7 = defineModelRenderer({
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 register7(registry) {
2038
- registry.register(model7);
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 model8 = defineModelRenderer({
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 register8(registry) {
2205
- registry.register(model8);
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 model9 = defineModelRenderer({
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 register9(registry) {
2227
- registry.register(model9);
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 model10 = defineModelRenderer({
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 register10(registry) {
2426
- registry.register(model10);
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 model11 = mp3.string(footprint).json();
9998
- const renderer = modelRendererRegistry.get(model11.fn);
10132
+ const model13 = mp3.string(footprint).json();
10133
+ const renderer = modelRendererRegistry.get(model13.fn);
9999
10134
  if (renderer) {
10000
- return renderer.render(model11);
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,