diff --git a/cad/openscad/stamp_holder.scad b/cad/openscad/stamp_holder.scad index 30962c5..3ff7eac 100644 --- a/cad/openscad/stamp_holder.scad +++ b/cad/openscad/stamp_holder.scad @@ -20,17 +20,11 @@ module middle() { linear_extrude(height=wall_thickness) { common(); translate([-size / 2, 0]) - round_rect((wall_thickness+output_thickness)*2,size/2,[1,1,1,1]); + round_rect((wall_thickness*3/2+output_thickness)*2,size/2+wall_thickness/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); - } - } + linear_extrude(height=internal_height) middle(); 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]); @@ -38,6 +32,12 @@ translate([0,0,wall_thickness]) difference() { } } +translate([0,0,wall_thickness]) linear_extrude(height=internal_height+wall_thickness) 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,wall_thickness+internal_height]) linear_extrude(height=wall_thickness/2) { intersection() { middle(); @@ -47,10 +47,4 @@ translate([0,0,wall_thickness+internal_height]) linear_extrude(height=wall_thick } } - 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_top.scad b/cad/openscad/stamp_holder_top.scad index 705d428..b10e2d3 100644 --- a/cad/openscad/stamp_holder_top.scad +++ b/cad/openscad/stamp_holder_top.scad @@ -1,24 +1,46 @@ include module finger() { - translate([center_radius-wall_thickness*2-0.25,0,0]) square([wall_thickness,internal_height*1/3]); + translate([center_radius-wall_thickness*2-0.25,0,0]) square([wall_thickness,internal_height*1/3-2]); } 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]) + translate([center_radius-wall_thickness*2-0.25,0]) { + square([wall_thickness,internal_height*1/3+1]); + translate([wall_thickness,internal_height*1/3-1]) polygon([[0,-1],[1,0.5],[0,2]]); } } -linear_extrude(wall_thickness) { +module alignment_socket() { + hull() { + translate([-size/2-output_thickness-wall_thickness/2,size/4-wall_thickness/2]) circle(wall_thickness*5/8); + translate([-size/2-output_thickness-wall_thickness/2,-size/4+wall_thickness/2]) circle(wall_thickness*5/8); + } +} + +linear_extrude(wall_thickness/2) { 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]); + round_rect((wall_thickness*3/2+output_thickness)*2,size/2+wall_thickness,[1,1,1,1]); + } + circle(center_radius-wall_thickness*2-0.25); + } +} + +translate([0,0,wall_thickness/2]) linear_extrude(wall_thickness/2) { + difference() { + mirror([1,0,0]) { + translate([0,(wall_thickness+output_thickness)/2]) + round_rect(total_length, total_width, [5, 5, 15, 1]); + difference() { + translate([-size / 2, 0]) + round_rect((wall_thickness*3/2+output_thickness)*2,size/2+wall_thickness,[1,1,1,1]); + alignment_socket(); + } } circle(center_radius-wall_thickness*2-0.25); } @@ -30,14 +52,10 @@ translate([0,0,wall_thickness]) linear_extrude(wall_thickness/2) { 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); - } + translate([-size / 2-output_thickness-wall_thickness/2, 0]) + round_rect(wall_thickness*2,size/2+wall_thickness,[1,1,1,1]); + + alignment_socket(); } } circle(center_radius-wall_thickness*2-0.25); @@ -53,5 +71,4 @@ translate([0,0,wall_thickness*3/2+internal_height/6]) { 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