Try making a stamp holder
This commit is contained in:
parent
788b2d0e22
commit
00062153c1
1
cad/openscad/.gitignore
vendored
Normal file
1
cad/openscad/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
*.stl
|
56
cad/openscad/stamp_holder.scad
Normal file
56
cad/openscad/stamp_holder.scad
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
include <stamp_holder_common.scad>
|
||||||
|
|
||||||
|
|
||||||
|
module middle() {
|
||||||
|
difference() {
|
||||||
|
common();
|
||||||
|
ring(size/2-wall_thickness,center_radius);
|
||||||
|
translate([-size/2, size/2-output_radius]) difference() {
|
||||||
|
square(output_radius);
|
||||||
|
translate([output_radius,0]) circle(output_radius);
|
||||||
|
}
|
||||||
|
translate([-size/2, size/2])
|
||||||
|
square([size-15,output_thickness]);
|
||||||
|
translate([size/2-15,total_width-size/2-15])
|
||||||
|
right_arc(15-wall_thickness, 15-wall_thickness-output_thickness);
|
||||||
|
translate([size/2-output_thickness-wall_thickness,0])
|
||||||
|
square([output_thickness,total_width-size/2-15]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
linear_extrude(height=wall_thickness) {
|
||||||
|
common();
|
||||||
|
translate([-size / 2, 0])
|
||||||
|
round_rect((wall_thickness+output_thickness)*2,size/2,[1,1,1,1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
translate([0,0,wall_thickness]) difference() {
|
||||||
|
linear_extrude(height=internal_height) {
|
||||||
|
middle();
|
||||||
|
hull() {
|
||||||
|
translate([-size/2-output_thickness-wall_thickness/2,size/4-wall_thickness/2]) circle(wall_thickness/2);
|
||||||
|
translate([-size/2-output_thickness-wall_thickness/2,-size/4+wall_thickness/2]) circle(wall_thickness/2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translate([0,0,internal_height*1/2]) {
|
||||||
|
rotate([0,0,-30]) rotate_extrude(angle=60) square([center_radius-1,1]);
|
||||||
|
rotate([0,0,150]) rotate_extrude(angle=60) square([center_radius-1,1]);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
translate([0,0,wall_thickness+internal_height]) linear_extrude(height=wall_thickness/2) {
|
||||||
|
intersection() {
|
||||||
|
middle();
|
||||||
|
translate([0,(wall_thickness+output_thickness)/2]) difference() {
|
||||||
|
round_rect(total_length, total_width, [5, 5, 15, 1]);
|
||||||
|
round_rect(total_length-wall_thickness, total_width-wall_thickness, [5 - wall_thickness/2, 5-wall_thickness/2, 15-wall_thickness/2, 1-wall_thickness/2]);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
hull() {
|
||||||
|
translate([-size/2-output_thickness-wall_thickness/2,size/4-wall_thickness/2]) circle(wall_thickness/4);
|
||||||
|
translate([-size/2-output_thickness-wall_thickness/2,-size/4+wall_thickness/2]) circle(wall_thickness/4);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
49
cad/openscad/stamp_holder_common.scad
Normal file
49
cad/openscad/stamp_holder_common.scad
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
wall_thickness = 1.5;
|
||||||
|
output_thickness = 1.5;
|
||||||
|
internal_height = 26;
|
||||||
|
center_radius = 10;
|
||||||
|
output_radius = 3;
|
||||||
|
size = 40;
|
||||||
|
$fn = 500;
|
||||||
|
|
||||||
|
total_length = size;
|
||||||
|
total_width = size + wall_thickness + output_thickness;
|
||||||
|
total_height = internal_height + wall_thickness * 3/2;
|
||||||
|
|
||||||
|
|
||||||
|
module round_rect(length, width, radii) {
|
||||||
|
points = [
|
||||||
|
[-length/2 + radii[0], -width/2 + radii[0]],
|
||||||
|
[ length/2 - radii[1], -width/2 + radii[1]],
|
||||||
|
[ length/2 - radii[2], width/2 - radii[2]],
|
||||||
|
[-length/2 + radii[3], width/2 - radii[3]]
|
||||||
|
];
|
||||||
|
|
||||||
|
hull() {
|
||||||
|
for(i = [0:3]) {
|
||||||
|
translate(points[i]) circle(r=radii[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module ring(or, ir) {
|
||||||
|
difference() {
|
||||||
|
circle(or);
|
||||||
|
circle(ir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module right_arc(or, ir) {
|
||||||
|
intersection() {
|
||||||
|
ring(or, ir);
|
||||||
|
square(or);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module common() {
|
||||||
|
difference() {
|
||||||
|
translate([0,(wall_thickness+output_thickness)/2])
|
||||||
|
round_rect(total_length, total_width, [5, 5, 15, 1]);
|
||||||
|
circle(center_radius - wall_thickness);
|
||||||
|
}
|
||||||
|
}
|
57
cad/openscad/stamp_holder_top.scad
Normal file
57
cad/openscad/stamp_holder_top.scad
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
include <stamp_holder_common.scad>
|
||||||
|
|
||||||
|
module finger() {
|
||||||
|
translate([center_radius-wall_thickness*2-0.25,0,0]) square([wall_thickness,internal_height*1/3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
module hook() {
|
||||||
|
translate([center_radius-wall_thickness*2-0.25,0,0]) {
|
||||||
|
square([wall_thickness,internal_height*1/3+2]);
|
||||||
|
translate([wall_thickness,internal_height*1/3])
|
||||||
|
polygon([[0,-1],[1,0.5],[0,2]]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
linear_extrude(wall_thickness) {
|
||||||
|
difference() {
|
||||||
|
mirror([1,0,0]) {
|
||||||
|
translate([0,(wall_thickness+output_thickness)/2])
|
||||||
|
round_rect(total_length, total_width, [5, 5, 15, 1]);
|
||||||
|
translate([-size / 2, 0])
|
||||||
|
round_rect((wall_thickness+output_thickness)*2,size/2,[1,1,1,1]);
|
||||||
|
}
|
||||||
|
circle(center_radius-wall_thickness*2-0.25);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
translate([0,0,wall_thickness]) linear_extrude(wall_thickness/2) {
|
||||||
|
difference() {
|
||||||
|
mirror([1,0,0]) {
|
||||||
|
translate([0,(wall_thickness+output_thickness)/2])
|
||||||
|
round_rect(total_length-wall_thickness-.5, total_width-wall_thickness-.5, [5, 5, 15, 1]);
|
||||||
|
difference() {
|
||||||
|
hull() {
|
||||||
|
translate([-size/2-output_thickness-wall_thickness/2,size/4-wall_thickness/2]) circle(wall_thickness/2);
|
||||||
|
translate([-size/2-output_thickness-wall_thickness/2,-size/4+wall_thickness/2]) circle(wall_thickness/2);
|
||||||
|
}
|
||||||
|
hull() {
|
||||||
|
translate([-size/2-output_thickness-wall_thickness/2,size/4-wall_thickness/2]) circle(wall_thickness*3/8);
|
||||||
|
translate([-size/2-output_thickness-wall_thickness/2,-size/4+wall_thickness/2]) circle(wall_thickness*3/8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
circle(center_radius-wall_thickness*2-0.25);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
translate([0,0,wall_thickness*3/2]) linear_extrude(internal_height / 6) {
|
||||||
|
ring(center_radius-wall_thickness-0.25, center_radius-wall_thickness*2-0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
translate([0,0,wall_thickness*3/2+internal_height/6]) {
|
||||||
|
rotate([0,0,-25]) rotate_extrude(angle=50) hook();
|
||||||
|
rotate([0,0,35]) rotate_extrude(angle=110) finger();
|
||||||
|
rotate([0,0,155]) rotate_extrude(angle=50) hook();
|
||||||
|
rotate([0,0,215]) rotate_extrude(angle=110) finger();
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue