From 00062153c133849f4a81dbcb7b84e055194c9c4e Mon Sep 17 00:00:00 2001 From: Artemis Tosini Date: Thu, 31 Aug 2023 06:57:03 +0000 Subject: [PATCH] Try making a stamp holder --- cad/openscad/.gitignore | 1 + cad/openscad/stamp_holder.scad | 56 ++++++++++++++++++++++++++ cad/openscad/stamp_holder_common.scad | 49 +++++++++++++++++++++++ cad/openscad/stamp_holder_top.scad | 57 +++++++++++++++++++++++++++ 4 files changed, 163 insertions(+) create mode 100644 cad/openscad/.gitignore create mode 100644 cad/openscad/stamp_holder.scad create mode 100644 cad/openscad/stamp_holder_common.scad create mode 100644 cad/openscad/stamp_holder_top.scad diff --git a/cad/openscad/.gitignore b/cad/openscad/.gitignore new file mode 100644 index 0000000..1567411 --- /dev/null +++ b/cad/openscad/.gitignore @@ -0,0 +1 @@ +*.stl diff --git a/cad/openscad/stamp_holder.scad b/cad/openscad/stamp_holder.scad new file mode 100644 index 0000000..30962c5 --- /dev/null +++ b/cad/openscad/stamp_holder.scad @@ -0,0 +1,56 @@ +include + + +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); + } + + +} \ No newline at end of file diff --git a/cad/openscad/stamp_holder_common.scad b/cad/openscad/stamp_holder_common.scad new file mode 100644 index 0000000..2df94d1 --- /dev/null +++ b/cad/openscad/stamp_holder_common.scad @@ -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); + } +} diff --git a/cad/openscad/stamp_holder_top.scad b/cad/openscad/stamp_holder_top.scad new file mode 100644 index 0000000..705d428 --- /dev/null +++ b/cad/openscad/stamp_holder_top.scad @@ -0,0 +1,57 @@ +include + +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(); + +} \ No newline at end of file