jscad-electronics 0.0.203 → 0.0.204
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 +17 -2
- package/dist/index.js +941 -826
- package/dist/index.js.map +1 -1
- package/dist/vanilla.d.ts +17 -2
- package/dist/vanilla.js +124 -14
- 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 { ButtonScrewModelPropsInput, CableGrommetModelPropsInput, CompressionSpringModelPropsInput, FlangedBushingModelPropsInput, FlatHeadScrewModelPropsInput, SpurGearModelPropsInput, HelicalGearModelPropsInput, HexBoltModelPropsInput, HexNutModelPropsInput, HexSocketBoltModelPropsInput, NemaMotorModelPropsInput, PanScrewModelPropsInput, PlainBushingModelPropsInput, SheetMetalModelPropsInput, TSlotExtrusionModelPropsInput, WormGearModelPropsInput } from '@tscircuit/modelprinter';
|
|
6
|
+
import { ButtonScrewModelPropsInput, CableGrommetModelPropsInput, CompressionSpringModelPropsInput, FlangedBushingModelPropsInput, FlatHeadScrewModelPropsInput, SpurGearModelPropsInput, HelicalGearModelPropsInput, HexBoltModelPropsInput, HexNutModelPropsInput, HexSocketBoltModelPropsInput, NemaMotorModelPropsInput, PanScrewModelPropsInput, PlainBushingModelPropsInput, SheetMetalModelPropsInput, TSlotExtrusionModelPropsInput, 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 TSlotInsideCornerMesh {
|
|
288
|
+
positions: number[];
|
|
289
|
+
indices: number[];
|
|
290
|
+
}
|
|
291
|
+
/** Constant-thickness quarter bend joining two perpendicular drilled legs.
|
|
292
|
+
* Virtual inside corner is X=Z=0; width is centered on Y. No internal seam caps.
|
|
293
|
+
*/
|
|
294
|
+
declare function createTSlotInsideCornerMesh(input?: TSlotInsideCornerModelPropsInput): TSlotInsideCornerMesh;
|
|
295
|
+
|
|
296
|
+
type TSlotInsideCornerProps = TSlotInsideCornerModelPropsInput & {
|
|
297
|
+
color?: string;
|
|
298
|
+
};
|
|
299
|
+
declare function createTSlotInsideCornerGeom(input?: TSlotInsideCornerModelPropsInput): _jscad_modeling_src_geometries_types.Geom3;
|
|
300
|
+
declare function TSlotInsideCorner({ color, ...props }: TSlotInsideCornerProps): react_jsx_runtime.JSX.Element;
|
|
301
|
+
|
|
287
302
|
/** Indexed triangles, counterclockwise from outside; millimeters, Z up. */
|
|
288
303
|
interface WormGearMesh {
|
|
289
304
|
positions: number[];
|
|
@@ -312,4 +327,4 @@ declare function createJSCADRenderer(jscad: typeof jscadModeling): {
|
|
|
312
327
|
};
|
|
313
328
|
};
|
|
314
329
|
|
|
315
|
-
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, 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, createWormGearGeom, createWormGearMesh, getJscadModelForFootprint, getJscadModelForFootprintWithPads, h };
|
|
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 };
|
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(
|
|
187
|
-
return
|
|
186
|
+
function defineModelRenderer(model19) {
|
|
187
|
+
return model19;
|
|
188
188
|
}
|
|
189
189
|
var ModelRendererRegistry = class {
|
|
190
190
|
models = /* @__PURE__ */ new Map();
|
|
191
|
-
register(
|
|
192
|
-
if (typeof
|
|
191
|
+
register(model19) {
|
|
192
|
+
if (typeof model19.name !== "string" || !/^[a-z]+$/.test(model19.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(model19.name)) {
|
|
198
|
+
throw new Error(`Model renderer "${model19.name}" is already registered`);
|
|
199
199
|
}
|
|
200
|
-
if (
|
|
200
|
+
if (model19.pads !== "none" && model19.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 } = model19;
|
|
204
204
|
this.models.set(name, {
|
|
205
205
|
name,
|
|
206
206
|
schema,
|
|
@@ -2984,6 +2984,25 @@ function extrudePlanarProfile({
|
|
|
2984
2984
|
[indices[i + 1], indices[i + 2]] = [indices[i + 2], indices[i + 1]];
|
|
2985
2985
|
return { positions, indices };
|
|
2986
2986
|
}
|
|
2987
|
+
function joinProfileMeshes(meshes) {
|
|
2988
|
+
const positions = [];
|
|
2989
|
+
const indices = [];
|
|
2990
|
+
const vertices = /* @__PURE__ */ new Map();
|
|
2991
|
+
for (const mesh of meshes) {
|
|
2992
|
+
for (const index of mesh.indices) {
|
|
2993
|
+
const point = mesh.positions.slice(index * 3, index * 3 + 3);
|
|
2994
|
+
const key = point.map((value) => value.toFixed(12)).join(",");
|
|
2995
|
+
let shared = vertices.get(key);
|
|
2996
|
+
if (shared === void 0) {
|
|
2997
|
+
shared = positions.length / 3;
|
|
2998
|
+
vertices.set(key, shared);
|
|
2999
|
+
positions.push(...point);
|
|
3000
|
+
}
|
|
3001
|
+
indices.push(shared);
|
|
3002
|
+
}
|
|
3003
|
+
}
|
|
3004
|
+
return { positions, indices };
|
|
3005
|
+
}
|
|
2987
3006
|
function circularProfile(x, y, radius, segments = 96) {
|
|
2988
3007
|
return Array.from({ length: segments }, (_, index) => {
|
|
2989
3008
|
const angle = index * 2 * Math.PI / segments;
|
|
@@ -3057,6 +3076,93 @@ function register16(registry) {
|
|
|
3057
3076
|
registry.register(model16);
|
|
3058
3077
|
}
|
|
3059
3078
|
|
|
3079
|
+
// lib/models/tslotinsidecorner/register.tsx
|
|
3080
|
+
import { tSlotInsideCornerModelDefinitionSchema } from "@tscircuit/modelprinter";
|
|
3081
|
+
|
|
3082
|
+
// lib/models/tslotinsidecorner/mesh.ts
|
|
3083
|
+
import {
|
|
3084
|
+
tSlotInsideCornerModelPropsSchema
|
|
3085
|
+
} from "@tscircuit/modelprinter";
|
|
3086
|
+
function createTSlotInsideCornerMesh(input = {}) {
|
|
3087
|
+
const props = tSlotInsideCornerModelPropsSchema.parse(input);
|
|
3088
|
+
const { width: width10, legLength, thickness, bendRadius, holeOffset, holeDiameter } = props;
|
|
3089
|
+
const r = bendRadius;
|
|
3090
|
+
const outerRadius = r + thickness;
|
|
3091
|
+
const panel = [
|
|
3092
|
+
[r, -width10 / 2],
|
|
3093
|
+
[legLength, -width10 / 2],
|
|
3094
|
+
[legLength, width10 / 2],
|
|
3095
|
+
[r, width10 / 2]
|
|
3096
|
+
];
|
|
3097
|
+
const holes = [circularProfile(holeOffset, 0, holeDiameter / 2)];
|
|
3098
|
+
const bend = [];
|
|
3099
|
+
if (r === 0) bend.push([0, 0]);
|
|
3100
|
+
else
|
|
3101
|
+
for (let step = 0; step <= 48; step++) {
|
|
3102
|
+
const angle = -Math.PI / 2 - step * Math.PI / 96;
|
|
3103
|
+
bend.push(
|
|
3104
|
+
step === 0 ? [r, 0] : step === 48 ? [0, r] : [r + r * Math.cos(angle), r + r * Math.sin(angle)]
|
|
3105
|
+
);
|
|
3106
|
+
}
|
|
3107
|
+
for (let step = 0; step <= 48; step++) {
|
|
3108
|
+
const angle = -Math.PI + step * Math.PI / 96;
|
|
3109
|
+
bend.push(
|
|
3110
|
+
step === 0 ? [-thickness, r] : step === 48 ? [r, -thickness] : [
|
|
3111
|
+
r + outerRadius * Math.cos(angle),
|
|
3112
|
+
r + outerRadius * Math.sin(angle)
|
|
3113
|
+
]
|
|
3114
|
+
);
|
|
3115
|
+
}
|
|
3116
|
+
return joinProfileMeshes([
|
|
3117
|
+
extrudePlanarProfile({
|
|
3118
|
+
outer: panel,
|
|
3119
|
+
holes,
|
|
3120
|
+
start: -thickness,
|
|
3121
|
+
end: 0,
|
|
3122
|
+
skipWall: (a, b) => a[0] === r && b[0] === r
|
|
3123
|
+
}),
|
|
3124
|
+
extrudePlanarProfile({
|
|
3125
|
+
outer: panel,
|
|
3126
|
+
holes,
|
|
3127
|
+
start: -thickness,
|
|
3128
|
+
end: 0,
|
|
3129
|
+
project: (u, v, depth) => [depth, v, u],
|
|
3130
|
+
reverse: true,
|
|
3131
|
+
skipWall: (a, b) => a[0] === r && b[0] === r
|
|
3132
|
+
}),
|
|
3133
|
+
extrudePlanarProfile({
|
|
3134
|
+
outer: bend,
|
|
3135
|
+
start: -width10 / 2,
|
|
3136
|
+
end: width10 / 2,
|
|
3137
|
+
project: (u, v, depth) => [u, depth, v],
|
|
3138
|
+
reverse: true,
|
|
3139
|
+
skipWall: (a, b) => a[0] === r && b[0] === r || a[1] === r && b[1] === r
|
|
3140
|
+
})
|
|
3141
|
+
]);
|
|
3142
|
+
}
|
|
3143
|
+
|
|
3144
|
+
// lib/models/tslotinsidecorner/TSlotInsideCorner.tsx
|
|
3145
|
+
function createTSlotInsideCornerGeom(input = {}) {
|
|
3146
|
+
return indexedMeshToGeom3(createTSlotInsideCornerMesh(input));
|
|
3147
|
+
}
|
|
3148
|
+
function TSlotInsideCorner({
|
|
3149
|
+
color = "#8995a3",
|
|
3150
|
+
...props
|
|
3151
|
+
}) {
|
|
3152
|
+
return /* @__PURE__ */ jsx(Colorize, { color, children: /* @__PURE__ */ jsx(Custom, { geometry: createTSlotInsideCornerGeom(props) }) });
|
|
3153
|
+
}
|
|
3154
|
+
|
|
3155
|
+
// lib/models/tslotinsidecorner/register.tsx
|
|
3156
|
+
var model17 = defineModelRenderer({
|
|
3157
|
+
name: "tslotinsidecorner",
|
|
3158
|
+
schema: tSlotInsideCornerModelDefinitionSchema,
|
|
3159
|
+
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(TSlotInsideCorner, { ...props }),
|
|
3160
|
+
pads: "none"
|
|
3161
|
+
});
|
|
3162
|
+
function register17(registry) {
|
|
3163
|
+
registry.register(model17);
|
|
3164
|
+
}
|
|
3165
|
+
|
|
3060
3166
|
// lib/models/wormgear/register.tsx
|
|
3061
3167
|
import { wormGearModelDefinitionSchema } from "@tscircuit/modelprinter";
|
|
3062
3168
|
|
|
@@ -3246,14 +3352,14 @@ function WormGear({ color = "#737e8f", ...props }) {
|
|
|
3246
3352
|
}
|
|
3247
3353
|
|
|
3248
3354
|
// lib/models/wormgear/register.tsx
|
|
3249
|
-
var
|
|
3355
|
+
var model18 = defineModelRenderer({
|
|
3250
3356
|
name: "wormgear",
|
|
3251
3357
|
schema: wormGearModelDefinitionSchema,
|
|
3252
3358
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(WormGear, { ...props }),
|
|
3253
3359
|
pads: "none"
|
|
3254
3360
|
});
|
|
3255
|
-
function
|
|
3256
|
-
registry.register(
|
|
3361
|
+
function register18(registry) {
|
|
3362
|
+
registry.register(model18);
|
|
3257
3363
|
}
|
|
3258
3364
|
|
|
3259
3365
|
// lib/generated/model-renderers.ts
|
|
@@ -3275,6 +3381,7 @@ function registerAllModelRenderers(registry) {
|
|
|
3275
3381
|
register15(registry);
|
|
3276
3382
|
register16(registry);
|
|
3277
3383
|
register17(registry);
|
|
3384
|
+
register18(registry);
|
|
3278
3385
|
}
|
|
3279
3386
|
|
|
3280
3387
|
// lib/default-model-registry.ts
|
|
@@ -10831,10 +10938,10 @@ var SOT143 = ({ footprint = "sot143" }) => {
|
|
|
10831
10938
|
var Footprinter3d = ({ footprint }) => {
|
|
10832
10939
|
const modelFn = mp3.string(footprint.split("_", 1)[0]).params().fn;
|
|
10833
10940
|
if (mp3.getModelNames().includes(modelFn)) {
|
|
10834
|
-
const
|
|
10835
|
-
const renderer = modelRendererRegistry.get(
|
|
10941
|
+
const model19 = mp3.string(footprint).json();
|
|
10942
|
+
const renderer = modelRendererRegistry.get(model19.fn);
|
|
10836
10943
|
if (renderer) {
|
|
10837
|
-
return renderer.render(
|
|
10944
|
+
return renderer.render(model19);
|
|
10838
10945
|
}
|
|
10839
10946
|
}
|
|
10840
10947
|
let normalizedFootprint = footprint;
|
|
@@ -11804,6 +11911,7 @@ export {
|
|
|
11804
11911
|
SheetMetal,
|
|
11805
11912
|
SpurGear,
|
|
11806
11913
|
TSlotExtrusion,
|
|
11914
|
+
TSlotInsideCorner,
|
|
11807
11915
|
WormGear,
|
|
11808
11916
|
convertCSGToThreeGeom,
|
|
11809
11917
|
createButtonScrewGeom,
|
|
@@ -11835,6 +11943,8 @@ export {
|
|
|
11835
11943
|
createSpurGearMesh,
|
|
11836
11944
|
createTSlotExtrusionGeom,
|
|
11837
11945
|
createTSlotExtrusionMesh,
|
|
11946
|
+
createTSlotInsideCornerGeom,
|
|
11947
|
+
createTSlotInsideCornerMesh,
|
|
11838
11948
|
createWormGearGeom,
|
|
11839
11949
|
createWormGearMesh,
|
|
11840
11950
|
getJscadModelForFootprint,
|