jscad-electronics 0.0.204 → 0.0.205

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 { ButtonScrewModelPropsInput, CableGrommetModelPropsInput, CompressionSpringModelPropsInput, FlangedBushingModelPropsInput, FlatHeadScrewModelPropsInput, SpurGearModelPropsInput, HelicalGearModelPropsInput, HexBoltModelPropsInput, HexNutModelPropsInput, HexSocketBoltModelPropsInput, NemaMotorModelPropsInput, PanScrewModelPropsInput, PlainBushingModelPropsInput, SheetMetalModelPropsInput, TSlotExtrusionModelPropsInput, TSlotInsideCornerModelPropsInput, WormGearModelPropsInput } from '@tscircuit/modelprinter';
6
+ import { ButtonScrewModelPropsInput, CableGrommetModelPropsInput, CompressionSpringModelPropsInput, FlangedBushingModelPropsInput, FlatHeadScrewModelPropsInput, SpurGearModelPropsInput, HelicalGearModelPropsInput, HexBoltModelPropsInput, HexNutModelPropsInput, HexSocketBoltModelPropsInput, NemaMotorModelPropsInput, PanScrewModelPropsInput, PlainBushingModelPropsInput, SheetMetalModelPropsInput, TSlotExtrusionModelPropsInput, TSlotGussetModelPropsInput, TSlotInsideCornerModelPropsInput, WormGearModelPropsInput } from '@tscircuit/modelprinter';
7
7
 
8
8
  type VNode = {
9
9
  type: any;
@@ -284,6 +284,21 @@ type TSlotExtrusionProps = TSlotExtrusionModelPropsInput & {
284
284
  declare function createTSlotExtrusionGeom(input?: TSlotExtrusionModelPropsInput): _jscad_modeling_src_geometries_types.Geom3;
285
285
  declare function TSlotExtrusion({ color, ...props }: TSlotExtrusionProps): react_jsx_runtime.JSX.Element;
286
286
 
287
+ interface TSlotGussetMesh {
288
+ positions: number[];
289
+ indices: number[];
290
+ }
291
+ /** Right triangular flat plate at Z=0..thickness, with both complete through
292
+ * capsules at the mounting centers/orientations resolved by modelprinter.
293
+ */
294
+ declare function createTSlotGussetMesh(input?: TSlotGussetModelPropsInput): TSlotGussetMesh;
295
+
296
+ type TSlotGussetProps = TSlotGussetModelPropsInput & {
297
+ color?: string;
298
+ };
299
+ declare function createTSlotGussetGeom(input?: TSlotGussetModelPropsInput): _jscad_modeling_src_geometries_types.Geom3;
300
+ declare function TSlotGusset({ color, ...props }: TSlotGussetProps): react_jsx_runtime.JSX.Element;
301
+
287
302
  interface TSlotInsideCornerMesh {
288
303
  positions: number[];
289
304
  indices: number[];
@@ -327,4 +342,4 @@ declare function createJSCADRenderer(jscad: typeof jscadModeling): {
327
342
  };
328
343
  };
329
344
 
330
- export { ButtonScrew, type ButtonScrewMesh, type ButtonScrewMeshOptions, type ButtonScrewProps, CableGrommet, type CableGrommetMesh, type CableGrommetMeshOptions, type CableGrommetProps, type ColoredGeom, CompressionSpring, type CompressionSpringMesh, type CompressionSpringMeshOptions, type CompressionSpringProps, 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, HexNut, type HexNutMesh, type HexNutMeshOptions, type HexNutProps, 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, TSlotExtrusion, type TSlotExtrusionMesh, type TSlotExtrusionProps, TSlotInsideCorner, type TSlotInsideCornerMesh, type TSlotInsideCornerProps, type VNode, WormGear, type WormGearMesh, type WormGearProps, convertCSGToThreeGeom, createButtonScrewGeom, createButtonScrewMesh, createCableGrommetGeom, createCableGrommetMesh, createCompressionSpringGeom, createCompressionSpringMesh, createFlangedBushingGeom, createFlangedBushingMesh, createFlatHeadScrewGeom, createFlatHeadScrewMesh, createHelicalGearGeom, createHelicalGearMesh, createHexBoltGeom, createHexBoltMesh, createHexNutGeom, createHexNutMesh, createHexSocketBoltGeom, createHexSocketBoltMesh, createJSCADRenderer, createPanScrewGeom, createPanScrewMesh, createPlainBushingGeom, createPlainBushingMesh, createSheetMetalGeom, createSheetMetalMesh, createSpurGearGeom, createSpurGearMesh, createTSlotExtrusionGeom, createTSlotExtrusionMesh, createTSlotInsideCornerGeom, createTSlotInsideCornerMesh, createWormGearGeom, createWormGearMesh, getJscadModelForFootprint, getJscadModelForFootprintWithPads, h };
345
+ export { ButtonScrew, type ButtonScrewMesh, type ButtonScrewMeshOptions, type ButtonScrewProps, CableGrommet, type CableGrommetMesh, type CableGrommetMeshOptions, type CableGrommetProps, type ColoredGeom, CompressionSpring, type CompressionSpringMesh, type CompressionSpringMeshOptions, type CompressionSpringProps, 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, HexNut, type HexNutMesh, type HexNutMeshOptions, type HexNutProps, 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, TSlotExtrusion, type TSlotExtrusionMesh, type TSlotExtrusionProps, TSlotGusset, type TSlotGussetMesh, type TSlotGussetProps, TSlotInsideCorner, type TSlotInsideCornerMesh, type TSlotInsideCornerProps, type VNode, WormGear, type WormGearMesh, type WormGearProps, convertCSGToThreeGeom, createButtonScrewGeom, createButtonScrewMesh, createCableGrommetGeom, createCableGrommetMesh, createCompressionSpringGeom, createCompressionSpringMesh, createFlangedBushingGeom, createFlangedBushingMesh, createFlatHeadScrewGeom, createFlatHeadScrewMesh, createHelicalGearGeom, createHelicalGearMesh, createHexBoltGeom, createHexBoltMesh, createHexNutGeom, createHexNutMesh, createHexSocketBoltGeom, createHexSocketBoltMesh, createJSCADRenderer, createPanScrewGeom, createPanScrewMesh, createPlainBushingGeom, createPlainBushingMesh, createSheetMetalGeom, createSheetMetalMesh, createSpurGearGeom, createSpurGearMesh, createTSlotExtrusionGeom, createTSlotExtrusionMesh, createTSlotGussetGeom, createTSlotGussetMesh, createTSlotInsideCornerGeom, createTSlotInsideCornerMesh, createWormGearGeom, createWormGearMesh, getJscadModelForFootprint, getJscadModelForFootprintWithPads, h };
package/dist/vanilla.js CHANGED
@@ -183,24 +183,24 @@ var FootprintPlatedHole = ({
183
183
  import { buttonScrewModelDefinitionSchema } from "@tscircuit/modelprinter";
184
184
 
185
185
  // lib/model-registry.ts
186
- function defineModelRenderer(model19) {
187
- return model19;
186
+ function defineModelRenderer(model20) {
187
+ return model20;
188
188
  }
189
189
  var ModelRendererRegistry = class {
190
190
  models = /* @__PURE__ */ new Map();
191
- register(model19) {
192
- if (typeof model19.name !== "string" || !/^[a-z]+$/.test(model19.name)) {
191
+ register(model20) {
192
+ if (typeof model20.name !== "string" || !/^[a-z]+$/.test(model20.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(model19.name)) {
198
- throw new Error(`Model renderer "${model19.name}" is already registered`);
197
+ if (this.models.has(model20.name)) {
198
+ throw new Error(`Model renderer "${model20.name}" is already registered`);
199
199
  }
200
- if (model19.pads !== "none" && model19.pads !== "footprinter") {
200
+ if (model20.pads !== "none" && model20.pads !== "footprinter") {
201
201
  throw new Error('Model renderer pads must be "none" or "footprinter"');
202
202
  }
203
- const { name, schema, render: render2, pads } = model19;
203
+ const { name, schema, render: render2, pads } = model20;
204
204
  this.models.set(name, {
205
205
  name,
206
206
  schema,
@@ -3076,6 +3076,66 @@ function register16(registry) {
3076
3076
  registry.register(model16);
3077
3077
  }
3078
3078
 
3079
+ // lib/models/tslotgusset/register.tsx
3080
+ import { tSlotGussetModelDefinitionSchema } from "@tscircuit/modelprinter";
3081
+
3082
+ // lib/models/tslotgusset/mesh.ts
3083
+ import {
3084
+ getTSlotGussetMountingSlots,
3085
+ tSlotGussetModelPropsSchema
3086
+ } from "@tscircuit/modelprinter";
3087
+ function createTSlotGussetMesh(input = {}) {
3088
+ const props = tSlotGussetModelPropsSchema.parse(input);
3089
+ const holes = getTSlotGussetMountingSlots(props).map((slot) => {
3090
+ const radius = slot.width / 2;
3091
+ const halfStraight = (slot.length - slot.width) / 2;
3092
+ const rotate = (u, v) => slot.orientation === 0 ? [slot.center.x + u, slot.center.y + v] : [slot.center.x - v, slot.center.y + u];
3093
+ if (halfStraight === 0)
3094
+ return circularProfile(0, 0, radius).map(([u, v]) => rotate(u, v));
3095
+ const loop = [];
3096
+ for (const side of [1, -1])
3097
+ for (let step = 0; step <= 48; step++) {
3098
+ const angle = -Math.PI / 2 + step * Math.PI / 48 + (side < 0 ? Math.PI : 0);
3099
+ loop.push(
3100
+ rotate(
3101
+ side * halfStraight + radius * Math.cos(angle),
3102
+ radius * Math.sin(angle)
3103
+ )
3104
+ );
3105
+ }
3106
+ return loop;
3107
+ });
3108
+ return extrudePlanarProfile({
3109
+ outer: [
3110
+ [0, 0],
3111
+ [props.width, 0],
3112
+ [0, props.height]
3113
+ ],
3114
+ holes,
3115
+ start: 0,
3116
+ end: props.thickness
3117
+ });
3118
+ }
3119
+
3120
+ // lib/models/tslotgusset/TSlotGusset.tsx
3121
+ function createTSlotGussetGeom(input = {}) {
3122
+ return indexedMeshToGeom3(createTSlotGussetMesh(input));
3123
+ }
3124
+ function TSlotGusset({ color = "#8995a3", ...props }) {
3125
+ return /* @__PURE__ */ jsx(Colorize, { color, children: /* @__PURE__ */ jsx(Custom, { geometry: createTSlotGussetGeom(props) }) });
3126
+ }
3127
+
3128
+ // lib/models/tslotgusset/register.tsx
3129
+ var model17 = defineModelRenderer({
3130
+ name: "tslotgusset",
3131
+ schema: tSlotGussetModelDefinitionSchema,
3132
+ render: ({ fn, ...props }) => /* @__PURE__ */ jsx(TSlotGusset, { ...props }),
3133
+ pads: "none"
3134
+ });
3135
+ function register17(registry) {
3136
+ registry.register(model17);
3137
+ }
3138
+
3079
3139
  // lib/models/tslotinsidecorner/register.tsx
3080
3140
  import { tSlotInsideCornerModelDefinitionSchema } from "@tscircuit/modelprinter";
3081
3141
 
@@ -3153,14 +3213,14 @@ function TSlotInsideCorner({
3153
3213
  }
3154
3214
 
3155
3215
  // lib/models/tslotinsidecorner/register.tsx
3156
- var model17 = defineModelRenderer({
3216
+ var model18 = defineModelRenderer({
3157
3217
  name: "tslotinsidecorner",
3158
3218
  schema: tSlotInsideCornerModelDefinitionSchema,
3159
3219
  render: ({ fn, ...props }) => /* @__PURE__ */ jsx(TSlotInsideCorner, { ...props }),
3160
3220
  pads: "none"
3161
3221
  });
3162
- function register17(registry) {
3163
- registry.register(model17);
3222
+ function register18(registry) {
3223
+ registry.register(model18);
3164
3224
  }
3165
3225
 
3166
3226
  // lib/models/wormgear/register.tsx
@@ -3352,14 +3412,14 @@ function WormGear({ color = "#737e8f", ...props }) {
3352
3412
  }
3353
3413
 
3354
3414
  // lib/models/wormgear/register.tsx
3355
- var model18 = defineModelRenderer({
3415
+ var model19 = defineModelRenderer({
3356
3416
  name: "wormgear",
3357
3417
  schema: wormGearModelDefinitionSchema,
3358
3418
  render: ({ fn, ...props }) => /* @__PURE__ */ jsx(WormGear, { ...props }),
3359
3419
  pads: "none"
3360
3420
  });
3361
- function register18(registry) {
3362
- registry.register(model18);
3421
+ function register19(registry) {
3422
+ registry.register(model19);
3363
3423
  }
3364
3424
 
3365
3425
  // lib/generated/model-renderers.ts
@@ -3382,6 +3442,7 @@ function registerAllModelRenderers(registry) {
3382
3442
  register16(registry);
3383
3443
  register17(registry);
3384
3444
  register18(registry);
3445
+ register19(registry);
3385
3446
  }
3386
3447
 
3387
3448
  // lib/default-model-registry.ts
@@ -10938,10 +10999,10 @@ var SOT143 = ({ footprint = "sot143" }) => {
10938
10999
  var Footprinter3d = ({ footprint }) => {
10939
11000
  const modelFn = mp3.string(footprint.split("_", 1)[0]).params().fn;
10940
11001
  if (mp3.getModelNames().includes(modelFn)) {
10941
- const model19 = mp3.string(footprint).json();
10942
- const renderer = modelRendererRegistry.get(model19.fn);
11002
+ const model20 = mp3.string(footprint).json();
11003
+ const renderer = modelRendererRegistry.get(model20.fn);
10943
11004
  if (renderer) {
10944
- return renderer.render(model19);
11005
+ return renderer.render(model20);
10945
11006
  }
10946
11007
  }
10947
11008
  let normalizedFootprint = footprint;
@@ -11911,6 +11972,7 @@ export {
11911
11972
  SheetMetal,
11912
11973
  SpurGear,
11913
11974
  TSlotExtrusion,
11975
+ TSlotGusset,
11914
11976
  TSlotInsideCorner,
11915
11977
  WormGear,
11916
11978
  convertCSGToThreeGeom,
@@ -11943,6 +12005,8 @@ export {
11943
12005
  createSpurGearMesh,
11944
12006
  createTSlotExtrusionGeom,
11945
12007
  createTSlotExtrusionMesh,
12008
+ createTSlotGussetGeom,
12009
+ createTSlotGussetMesh,
11946
12010
  createTSlotInsideCornerGeom,
11947
12011
  createTSlotInsideCornerMesh,
11948
12012
  createWormGearGeom,