Create initial receptacle design

This commit is contained in:
Nettika 2025-10-05 06:01:12 +00:00
parent 561427774a
commit 26c5a213df
3 changed files with 119 additions and 32 deletions

View file

@ -1,5 +1,3 @@
$fn = $preview ? 32 : 128;
// Cartridge base dimensions // Cartridge base dimensions
cartridge_width = 102; cartridge_width = 102;
cartridge_length = 133; cartridge_length = 133;
@ -61,8 +59,6 @@ nfc_coin_depth = 1;
nfc_coin_diameter = 25; nfc_coin_diameter = 25;
nfc_coin_tolerance = 0.1; nfc_coin_tolerance = 0.1;
cartridge();
module cartridge() { module cartridge() {
difference() { difference() {
base(); base();
@ -189,35 +185,27 @@ module nfc_coin() {
module footprint() { module footprint() {
hull() { hull() {
one_side_vertical_fillets();
translate([0, cartridge_width]) mirror([0, 1]) one_side_vertical_fillets();
}
}
module one_side_vertical_fillets() {
translate([ translate([
cartridge_length - back_vertical_fillet_radius, cartridge_length - back_vertical_fillet_radius,
back_vertical_fillet_radius, back_vertical_fillet_radius,
]) { ])
circle(back_vertical_fillet_radius); circle(back_vertical_fillet_radius);
// translate([0, cartridge_width - back_vertical_fillet_radius])
// circle(back_vertical_fillet_radius);
}
translate([
cartridge_length - back_vertical_fillet_radius,
cartridge_width - back_vertical_fillet_radius,
]) circle(back_vertical_fillet_radius);
translate([ translate([
tape_guide_depth + side_vertical_fillet_radius * tan(0.5 * atan(tape_guide_slope)), tape_guide_depth + side_vertical_fillet_radius * tan(0.5 * atan(tape_guide_slope)),
side_vertical_fillet_radius, side_vertical_fillet_radius,
]) circle(side_vertical_fillet_radius); ])
translate([ circle(side_vertical_fillet_radius);
tape_guide_depth + side_vertical_fillet_radius * tan(0.5 * atan(tape_guide_slope)),
cartridge_width - side_vertical_fillet_radius,
]) circle(side_vertical_fillet_radius);
translate([ translate([
front_vertical_fillet_radius, front_vertical_fillet_radius,
tape_guide_width + front_vertical_fillet_radius * tan(0.5 * atan(1 / tape_guide_slope)), tape_guide_width + front_vertical_fillet_radius * tan(0.5 * atan(1 / tape_guide_slope)),
]) circle(front_vertical_fillet_radius); ])
translate([ circle(front_vertical_fillet_radius);
front_vertical_fillet_radius,
cartridge_width - tape_guide_width - front_vertical_fillet_radius * tan(0.5 * atan(1 / tape_guide_slope)),
]) circle(front_vertical_fillet_radius);
}
} }
module tracks() { module tracks() {

6
justfile Normal file
View file

@ -0,0 +1,6 @@
default: (build "cartridge") (build "receptacle")
build target:
echo 'use <{{target}}.scad>; $fn = 128; {{target}}();' > part.scad
openscad -o {{target}}.stl part.scad
rm part.scad

93
receptacle.scad Normal file
View file

@ -0,0 +1,93 @@
include <cartridge.scad>;
cartridge_clearance = 0.3;
module receptacle() {
difference() {
box();
hole();
feet_grooves();
track_grooves();
}
tape_guides();
}
module box() {
translate([
-5,
-cartridge_clearance - 5,
-cartridge_clearance - 10,
])
cube([
cartridge_length + 5 - grip_count * grip_wedge_width - back_vertical_fillet_radius,
cartridge_width + 10,
cartridge_height + 20,
]);
}
module hole() {
translate([
-cartridge_clearance,
-cartridge_clearance,
-cartridge_clearance,
])
cube([
cartridge_length + cartridge_clearance,
cartridge_width + 2 * cartridge_clearance,
cartridge_height + 2 * cartridge_clearance,
]);
}
module feet_grooves() {
foot_groove_interval = cartridge_width - 2 * foot_side_inset - foot_width + cartridge_clearance;
foot_groove();
translate([0, foot_groove_interval]) foot_groove();
}
module foot_groove() {
translate([
foot_front_inset - cartridge_clearance,
foot_side_inset - cartridge_clearance,
-foot_height,
])
cube([
cartridge_length + 2 * cartridge_clearance,
foot_width + cartridge_clearance,
foot_height,
]);
}
module track_grooves() {
translate([
track_back_inset + cartridge_clearance,
0,
cartridge_height + cartridge_clearance
])
rotate([0, 90, 0]) {
translate([0, track_side_inset]) track_groove();
translate([0, cartridge_width - track_side_inset]) track_groove();
}
}
module track_groove() {
cylinder(
h=cartridge_length + cartridge_clearance,
r=track_radius + cartridge_clearance,
);
}
module tape_guides() {
translate([0, cartridge_width])
mirror([0, 1])
tape_guide();
tape_guide();
}
module tape_guide() {
linear_extrude(cartridge_height + 2 * cartridge_clearance)
polygon([
[0, 0],
[0, tape_guide_width - cartridge_clearance],
[tape_guide_depth - cartridge_clearance, 0],
]);
}