jscad-electronics 0.0.196 → 0.0.197

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 { FlatHeadScrewModelPropsInput, SpurGearModelPropsInput, HelicalGearModelPropsInput, HexBoltModelPropsInput, HexSocketBoltModelPropsInput, NemaMotorModelPropsInput, PanScrewModelPropsInput, PlainBushingModelPropsInput, SheetMetalModelPropsInput, WormGearModelPropsInput } from '@tscircuit/modelprinter';
7
7
 
8
8
  type VNode = {
9
9
  type: any;
@@ -141,6 +141,21 @@ type PanScrewProps = PanScrewModelPropsInput & {
141
141
  declare function createPanScrewGeom(input: PanScrewModelPropsInput, options?: PanScrewMeshOptions): _jscad_modeling_src_geometries_types.Geom3;
142
142
  declare function PanScrew({ color, ...props }: PanScrewProps): react_jsx_runtime.JSX.Element;
143
143
 
144
+ /** Shared ring vertices and outward counterclockwise triangles, in millimeters. */
145
+ interface PlainBushingMesh {
146
+ positions: number[];
147
+ indices: number[];
148
+ }
149
+ /** Annular end faces at Z=0/length; chamfers cut all four bore/outside rims. */
150
+ declare function createPlainBushingMesh(input: PlainBushingModelPropsInput): PlainBushingMesh;
151
+
152
+ type PlainBushingProps = PlainBushingModelPropsInput & {
153
+ color?: string;
154
+ };
155
+ /** Through sleeve from Z=0 to length, with four optional 45-degree rim chamfers. */
156
+ declare function createPlainBushingGeom(input: PlainBushingModelPropsInput): _jscad_modeling_src_geometries_types.Geom3;
157
+ declare function PlainBushing({ color, ...props }: PlainBushingProps): react_jsx_runtime.JSX.Element;
158
+
144
159
  interface SheetMetalMesh {
145
160
  positions: number[];
146
161
  indices: number[];
@@ -195,4 +210,4 @@ declare function createJSCADRenderer(jscad: typeof jscadModeling): {
195
210
  };
196
211
  };
197
212
 
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 };
213
+ 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, 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, 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
@@ -183,24 +183,24 @@ var FootprintPlatedHole = ({
183
183
  import { flatHeadScrewModelDefinitionSchema } from "@tscircuit/modelprinter";
184
184
 
185
185
  // lib/model-registry.ts
186
- function defineModelRenderer(model11) {
187
- return model11;
186
+ function defineModelRenderer(model12) {
187
+ return model12;
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(model12) {
192
+ if (typeof model12.name !== "string" || !/^[a-z]+$/.test(model12.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(model12.name)) {
198
+ throw new Error(`Model renderer "${model12.name}" is already registered`);
199
199
  }
200
- if (model11.pads !== "none" && model11.pads !== "footprinter") {
200
+ if (model12.pads !== "none" && model12.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 } = model12;
204
204
  this.models.set(name, {
205
205
  name,
206
206
  schema,
@@ -2038,6 +2038,76 @@ function register7(registry) {
2038
2038
  registry.register(model7);
2039
2039
  }
2040
2040
 
2041
+ // lib/models/plainbushing/register.tsx
2042
+ import { plainBushingModelDefinitionSchema } from "@tscircuit/modelprinter";
2043
+
2044
+ // lib/models/plainbushing/mesh.ts
2045
+ import {
2046
+ getPlainBushingDimensions,
2047
+ plainBushingModelPropsSchema
2048
+ } from "@tscircuit/modelprinter";
2049
+ function createPlainBushingMesh(input) {
2050
+ const props = plainBushingModelPropsSchema.parse(input);
2051
+ const d = getPlainBushingDimensions(props);
2052
+ const ri = d.innerDiameter / 2;
2053
+ const ro = d.outerDiameter / 2;
2054
+ const c = props.edgeChamfer;
2055
+ const profile = c > 0 ? [
2056
+ [d.endOuterDiameter / 2, 0],
2057
+ [ro, c],
2058
+ [ro, d.length - c],
2059
+ [d.endOuterDiameter / 2, d.length],
2060
+ [d.endInnerDiameter / 2, d.length],
2061
+ [ri, d.length - c],
2062
+ [ri, c],
2063
+ [d.endInnerDiameter / 2, 0]
2064
+ ] : [
2065
+ [ro, 0],
2066
+ [ro, d.length],
2067
+ [ri, d.length],
2068
+ [ri, 0]
2069
+ ];
2070
+ const segments = 96;
2071
+ const positions = [];
2072
+ const indices = [];
2073
+ for (const [radius, z] of profile)
2074
+ for (let i = 0; i < segments; i++) {
2075
+ const angle = i * Math.PI * 2 / segments;
2076
+ positions.push(radius * Math.cos(angle), radius * Math.sin(angle), z);
2077
+ }
2078
+ for (let ring = 0; ring < profile.length; ring++) {
2079
+ const a = ring * segments;
2080
+ const b = (ring + 1) % profile.length * segments;
2081
+ for (let i = 0; i < segments; i++) {
2082
+ const next = (i + 1) % segments;
2083
+ indices.push(a + i, a + next, b + next, a + i, b + next, b + i);
2084
+ }
2085
+ }
2086
+ return { positions, indices };
2087
+ }
2088
+
2089
+ // lib/models/plainbushing/PlainBushing.tsx
2090
+ function createPlainBushingGeom(input) {
2091
+ return indexedMeshToGeom3(createPlainBushingMesh(input));
2092
+ }
2093
+ function PlainBushing({
2094
+ color = "#a18450",
2095
+ ...props
2096
+ }) {
2097
+ return /* @__PURE__ */ jsx(Colorize, { color, children: /* @__PURE__ */ jsx(Custom, { geometry: createPlainBushingGeom(props) }) });
2098
+ }
2099
+
2100
+ // lib/models/plainbushing/register.tsx
2101
+ var model8 = defineModelRenderer({
2102
+ name: "plainbushing",
2103
+ schema: plainBushingModelDefinitionSchema,
2104
+ render: ({ fn, ...props }) => /* @__PURE__ */ jsx(PlainBushing, { ...props }),
2105
+ pads: "none"
2106
+ });
2107
+ function register8(registry) {
2108
+ registry.register(model8);
2109
+ }
2110
+
2041
2111
  // lib/models/sheetmetal/register.tsx
2042
2112
  import { sheetMetalModelDefinitionSchema } from "@tscircuit/modelprinter";
2043
2113
 
@@ -2195,14 +2265,14 @@ function SheetMetal({ color = "#737e8f", ...props }) {
2195
2265
  }
2196
2266
 
2197
2267
  // lib/models/sheetmetal/register.tsx
2198
- var model8 = defineModelRenderer({
2268
+ var model9 = defineModelRenderer({
2199
2269
  name: "sheetmetal",
2200
2270
  schema: sheetMetalModelDefinitionSchema,
2201
2271
  render: ({ fn, ...props }) => /* @__PURE__ */ jsx(SheetMetal, { ...props }),
2202
2272
  pads: "none"
2203
2273
  });
2204
- function register8(registry) {
2205
- registry.register(model8);
2274
+ function register9(registry) {
2275
+ registry.register(model9);
2206
2276
  }
2207
2277
 
2208
2278
  // lib/models/spurgear/register.tsx
@@ -2217,14 +2287,14 @@ function SpurGear({ color = "#737e8f", ...props }) {
2217
2287
  }
2218
2288
 
2219
2289
  // lib/models/spurgear/register.tsx
2220
- var model9 = defineModelRenderer({
2290
+ var model10 = defineModelRenderer({
2221
2291
  name: "spurgear",
2222
2292
  schema: spurGearModelDefinitionSchema,
2223
2293
  render: ({ fn, ...props }) => /* @__PURE__ */ jsx(SpurGear, { ...props }),
2224
2294
  pads: "none"
2225
2295
  });
2226
- function register9(registry) {
2227
- registry.register(model9);
2296
+ function register10(registry) {
2297
+ registry.register(model10);
2228
2298
  }
2229
2299
 
2230
2300
  // lib/models/wormgear/register.tsx
@@ -2416,14 +2486,14 @@ function WormGear({ color = "#737e8f", ...props }) {
2416
2486
  }
2417
2487
 
2418
2488
  // lib/models/wormgear/register.tsx
2419
- var model10 = defineModelRenderer({
2489
+ var model11 = defineModelRenderer({
2420
2490
  name: "wormgear",
2421
2491
  schema: wormGearModelDefinitionSchema,
2422
2492
  render: ({ fn, ...props }) => /* @__PURE__ */ jsx(WormGear, { ...props }),
2423
2493
  pads: "none"
2424
2494
  });
2425
- function register10(registry) {
2426
- registry.register(model10);
2495
+ function register11(registry) {
2496
+ registry.register(model11);
2427
2497
  }
2428
2498
 
2429
2499
  // lib/generated/model-renderers.ts
@@ -2438,6 +2508,7 @@ function registerAllModelRenderers(registry) {
2438
2508
  register8(registry);
2439
2509
  register9(registry);
2440
2510
  register10(registry);
2511
+ register11(registry);
2441
2512
  }
2442
2513
 
2443
2514
  // lib/default-model-registry.ts
@@ -9994,10 +10065,10 @@ var SOT143 = ({ footprint = "sot143" }) => {
9994
10065
  var Footprinter3d = ({ footprint }) => {
9995
10066
  const modelFn = mp3.string(footprint.split("_", 1)[0]).params().fn;
9996
10067
  if (mp3.getModelNames().includes(modelFn)) {
9997
- const model11 = mp3.string(footprint).json();
9998
- const renderer = modelRendererRegistry.get(model11.fn);
10068
+ const model12 = mp3.string(footprint).json();
10069
+ const renderer = modelRendererRegistry.get(model12.fn);
9999
10070
  if (renderer) {
10000
- return renderer.render(model11);
10071
+ return renderer.render(model12);
10001
10072
  }
10002
10073
  }
10003
10074
  let normalizedFootprint = footprint;
@@ -10958,6 +11029,7 @@ export {
10958
11029
  NEMA8,
10959
11030
  NemaMotor,
10960
11031
  PanScrew,
11032
+ PlainBushing,
10961
11033
  SheetMetal,
10962
11034
  SpurGear,
10963
11035
  WormGear,
@@ -10973,6 +11045,8 @@ export {
10973
11045
  createJSCADRenderer,
10974
11046
  createPanScrewGeom,
10975
11047
  createPanScrewMesh,
11048
+ createPlainBushingGeom,
11049
+ createPlainBushingMesh,
10976
11050
  createSheetMetalGeom,
10977
11051
  createSheetMetalMesh,
10978
11052
  createSpurGearGeom,