jscad-electronics 0.0.203 → 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/index.d.ts +32 -2
- package/dist/index.js +1010 -826
- package/dist/index.js.map +1 -1
- package/dist/vanilla.d.ts +32 -2
- package/dist/vanilla.js +188 -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, TSlotGussetModelPropsInput, TSlotInsideCornerModelPropsInput, WormGearModelPropsInput } from '@tscircuit/modelprinter';
|
|
7
7
|
|
|
8
8
|
type VNode = {
|
|
9
9
|
type: any;
|
|
@@ -284,6 +284,36 @@ 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
|
+
|
|
302
|
+
interface TSlotInsideCornerMesh {
|
|
303
|
+
positions: number[];
|
|
304
|
+
indices: number[];
|
|
305
|
+
}
|
|
306
|
+
/** Constant-thickness quarter bend joining two perpendicular drilled legs.
|
|
307
|
+
* Virtual inside corner is X=Z=0; width is centered on Y. No internal seam caps.
|
|
308
|
+
*/
|
|
309
|
+
declare function createTSlotInsideCornerMesh(input?: TSlotInsideCornerModelPropsInput): TSlotInsideCornerMesh;
|
|
310
|
+
|
|
311
|
+
type TSlotInsideCornerProps = TSlotInsideCornerModelPropsInput & {
|
|
312
|
+
color?: string;
|
|
313
|
+
};
|
|
314
|
+
declare function createTSlotInsideCornerGeom(input?: TSlotInsideCornerModelPropsInput): _jscad_modeling_src_geometries_types.Geom3;
|
|
315
|
+
declare function TSlotInsideCorner({ color, ...props }: TSlotInsideCornerProps): react_jsx_runtime.JSX.Element;
|
|
316
|
+
|
|
287
317
|
/** Indexed triangles, counterclockwise from outside; millimeters, Z up. */
|
|
288
318
|
interface WormGearMesh {
|
|
289
319
|
positions: number[];
|
|
@@ -312,4 +342,4 @@ declare function createJSCADRenderer(jscad: typeof jscadModeling): {
|
|
|
312
342
|
};
|
|
313
343
|
};
|
|
314
344
|
|
|
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 };
|
|
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(
|
|
187
|
-
return
|
|
186
|
+
function defineModelRenderer(model20) {
|
|
187
|
+
return model20;
|
|
188
188
|
}
|
|
189
189
|
var ModelRendererRegistry = class {
|
|
190
190
|
models = /* @__PURE__ */ new Map();
|
|
191
|
-
register(
|
|
192
|
-
if (typeof
|
|
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(
|
|
198
|
-
throw new Error(`Model renderer "${
|
|
197
|
+
if (this.models.has(model20.name)) {
|
|
198
|
+
throw new Error(`Model renderer "${model20.name}" is already registered`);
|
|
199
199
|
}
|
|
200
|
-
if (
|
|
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 } =
|
|
203
|
+
const { name, schema, render: render2, pads } = model20;
|
|
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,153 @@ function register16(registry) {
|
|
|
3057
3076
|
registry.register(model16);
|
|
3058
3077
|
}
|
|
3059
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
|
+
|
|
3139
|
+
// lib/models/tslotinsidecorner/register.tsx
|
|
3140
|
+
import { tSlotInsideCornerModelDefinitionSchema } from "@tscircuit/modelprinter";
|
|
3141
|
+
|
|
3142
|
+
// lib/models/tslotinsidecorner/mesh.ts
|
|
3143
|
+
import {
|
|
3144
|
+
tSlotInsideCornerModelPropsSchema
|
|
3145
|
+
} from "@tscircuit/modelprinter";
|
|
3146
|
+
function createTSlotInsideCornerMesh(input = {}) {
|
|
3147
|
+
const props = tSlotInsideCornerModelPropsSchema.parse(input);
|
|
3148
|
+
const { width: width10, legLength, thickness, bendRadius, holeOffset, holeDiameter } = props;
|
|
3149
|
+
const r = bendRadius;
|
|
3150
|
+
const outerRadius = r + thickness;
|
|
3151
|
+
const panel = [
|
|
3152
|
+
[r, -width10 / 2],
|
|
3153
|
+
[legLength, -width10 / 2],
|
|
3154
|
+
[legLength, width10 / 2],
|
|
3155
|
+
[r, width10 / 2]
|
|
3156
|
+
];
|
|
3157
|
+
const holes = [circularProfile(holeOffset, 0, holeDiameter / 2)];
|
|
3158
|
+
const bend = [];
|
|
3159
|
+
if (r === 0) bend.push([0, 0]);
|
|
3160
|
+
else
|
|
3161
|
+
for (let step = 0; step <= 48; step++) {
|
|
3162
|
+
const angle = -Math.PI / 2 - step * Math.PI / 96;
|
|
3163
|
+
bend.push(
|
|
3164
|
+
step === 0 ? [r, 0] : step === 48 ? [0, r] : [r + r * Math.cos(angle), r + r * Math.sin(angle)]
|
|
3165
|
+
);
|
|
3166
|
+
}
|
|
3167
|
+
for (let step = 0; step <= 48; step++) {
|
|
3168
|
+
const angle = -Math.PI + step * Math.PI / 96;
|
|
3169
|
+
bend.push(
|
|
3170
|
+
step === 0 ? [-thickness, r] : step === 48 ? [r, -thickness] : [
|
|
3171
|
+
r + outerRadius * Math.cos(angle),
|
|
3172
|
+
r + outerRadius * Math.sin(angle)
|
|
3173
|
+
]
|
|
3174
|
+
);
|
|
3175
|
+
}
|
|
3176
|
+
return joinProfileMeshes([
|
|
3177
|
+
extrudePlanarProfile({
|
|
3178
|
+
outer: panel,
|
|
3179
|
+
holes,
|
|
3180
|
+
start: -thickness,
|
|
3181
|
+
end: 0,
|
|
3182
|
+
skipWall: (a, b) => a[0] === r && b[0] === r
|
|
3183
|
+
}),
|
|
3184
|
+
extrudePlanarProfile({
|
|
3185
|
+
outer: panel,
|
|
3186
|
+
holes,
|
|
3187
|
+
start: -thickness,
|
|
3188
|
+
end: 0,
|
|
3189
|
+
project: (u, v, depth) => [depth, v, u],
|
|
3190
|
+
reverse: true,
|
|
3191
|
+
skipWall: (a, b) => a[0] === r && b[0] === r
|
|
3192
|
+
}),
|
|
3193
|
+
extrudePlanarProfile({
|
|
3194
|
+
outer: bend,
|
|
3195
|
+
start: -width10 / 2,
|
|
3196
|
+
end: width10 / 2,
|
|
3197
|
+
project: (u, v, depth) => [u, depth, v],
|
|
3198
|
+
reverse: true,
|
|
3199
|
+
skipWall: (a, b) => a[0] === r && b[0] === r || a[1] === r && b[1] === r
|
|
3200
|
+
})
|
|
3201
|
+
]);
|
|
3202
|
+
}
|
|
3203
|
+
|
|
3204
|
+
// lib/models/tslotinsidecorner/TSlotInsideCorner.tsx
|
|
3205
|
+
function createTSlotInsideCornerGeom(input = {}) {
|
|
3206
|
+
return indexedMeshToGeom3(createTSlotInsideCornerMesh(input));
|
|
3207
|
+
}
|
|
3208
|
+
function TSlotInsideCorner({
|
|
3209
|
+
color = "#8995a3",
|
|
3210
|
+
...props
|
|
3211
|
+
}) {
|
|
3212
|
+
return /* @__PURE__ */ jsx(Colorize, { color, children: /* @__PURE__ */ jsx(Custom, { geometry: createTSlotInsideCornerGeom(props) }) });
|
|
3213
|
+
}
|
|
3214
|
+
|
|
3215
|
+
// lib/models/tslotinsidecorner/register.tsx
|
|
3216
|
+
var model18 = defineModelRenderer({
|
|
3217
|
+
name: "tslotinsidecorner",
|
|
3218
|
+
schema: tSlotInsideCornerModelDefinitionSchema,
|
|
3219
|
+
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(TSlotInsideCorner, { ...props }),
|
|
3220
|
+
pads: "none"
|
|
3221
|
+
});
|
|
3222
|
+
function register18(registry) {
|
|
3223
|
+
registry.register(model18);
|
|
3224
|
+
}
|
|
3225
|
+
|
|
3060
3226
|
// lib/models/wormgear/register.tsx
|
|
3061
3227
|
import { wormGearModelDefinitionSchema } from "@tscircuit/modelprinter";
|
|
3062
3228
|
|
|
@@ -3246,14 +3412,14 @@ function WormGear({ color = "#737e8f", ...props }) {
|
|
|
3246
3412
|
}
|
|
3247
3413
|
|
|
3248
3414
|
// lib/models/wormgear/register.tsx
|
|
3249
|
-
var
|
|
3415
|
+
var model19 = defineModelRenderer({
|
|
3250
3416
|
name: "wormgear",
|
|
3251
3417
|
schema: wormGearModelDefinitionSchema,
|
|
3252
3418
|
render: ({ fn, ...props }) => /* @__PURE__ */ jsx(WormGear, { ...props }),
|
|
3253
3419
|
pads: "none"
|
|
3254
3420
|
});
|
|
3255
|
-
function
|
|
3256
|
-
registry.register(
|
|
3421
|
+
function register19(registry) {
|
|
3422
|
+
registry.register(model19);
|
|
3257
3423
|
}
|
|
3258
3424
|
|
|
3259
3425
|
// lib/generated/model-renderers.ts
|
|
@@ -3275,6 +3441,8 @@ function registerAllModelRenderers(registry) {
|
|
|
3275
3441
|
register15(registry);
|
|
3276
3442
|
register16(registry);
|
|
3277
3443
|
register17(registry);
|
|
3444
|
+
register18(registry);
|
|
3445
|
+
register19(registry);
|
|
3278
3446
|
}
|
|
3279
3447
|
|
|
3280
3448
|
// lib/default-model-registry.ts
|
|
@@ -10831,10 +10999,10 @@ var SOT143 = ({ footprint = "sot143" }) => {
|
|
|
10831
10999
|
var Footprinter3d = ({ footprint }) => {
|
|
10832
11000
|
const modelFn = mp3.string(footprint.split("_", 1)[0]).params().fn;
|
|
10833
11001
|
if (mp3.getModelNames().includes(modelFn)) {
|
|
10834
|
-
const
|
|
10835
|
-
const renderer = modelRendererRegistry.get(
|
|
11002
|
+
const model20 = mp3.string(footprint).json();
|
|
11003
|
+
const renderer = modelRendererRegistry.get(model20.fn);
|
|
10836
11004
|
if (renderer) {
|
|
10837
|
-
return renderer.render(
|
|
11005
|
+
return renderer.render(model20);
|
|
10838
11006
|
}
|
|
10839
11007
|
}
|
|
10840
11008
|
let normalizedFootprint = footprint;
|
|
@@ -11804,6 +11972,8 @@ export {
|
|
|
11804
11972
|
SheetMetal,
|
|
11805
11973
|
SpurGear,
|
|
11806
11974
|
TSlotExtrusion,
|
|
11975
|
+
TSlotGusset,
|
|
11976
|
+
TSlotInsideCorner,
|
|
11807
11977
|
WormGear,
|
|
11808
11978
|
convertCSGToThreeGeom,
|
|
11809
11979
|
createButtonScrewGeom,
|
|
@@ -11835,6 +12005,10 @@ export {
|
|
|
11835
12005
|
createSpurGearMesh,
|
|
11836
12006
|
createTSlotExtrusionGeom,
|
|
11837
12007
|
createTSlotExtrusionMesh,
|
|
12008
|
+
createTSlotGussetGeom,
|
|
12009
|
+
createTSlotGussetMesh,
|
|
12010
|
+
createTSlotInsideCornerGeom,
|
|
12011
|
+
createTSlotInsideCornerMesh,
|
|
11838
12012
|
createWormGearGeom,
|
|
11839
12013
|
createWormGearMesh,
|
|
11840
12014
|
getJscadModelForFootprint,
|