summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--Makefile4
-rw-r--r--another.scad38
2 files changed, 40 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index 9444a03..31135cb 100644
--- a/Makefile
+++ b/Makefile
@@ -2,21 +2,23 @@
OPENSCAD_APP?=/Applications/OpenSCAD.app
OPENSCAD_BIN?=${OPENSCAD_APP}/Contents/MacOS/OpenSCAD
OPENSCAD_FLAGS=-D draft=false
default:
@echo "And?"
clean:
rm -f *.stl *.gcode
stl-another-%:
- $(MAKE) another-$*-{body,lever}.stl
+ $(MAKE) another-$*-{body,lever,knob}.stl
another-%-body.stl: another-%.scad another.scad
$(OPENSCAD_BIN) $(OPENSCAD_FLAGS) -D 'what="body"' -o "$@" "$<"
another-%-lever.stl: another-%.scad another.scad
$(OPENSCAD_BIN) $(OPENSCAD_FLAGS) -D 'what="lever"' -o "$@" "$<"
+another-%-knob.stl: another-%.scad another.scad
+ $(OPENSCAD_BIN) $(OPENSCAD_FLAGS) -D 'what="knob"' -o "$@" "$<"
%.stl: %.scad
${OPENSCAD_BIN} ${OPENSCAD_FLAGS} -o "$@" "$<"
diff --git a/another.scad b/another.scad
index fa60676..9f42f46 100644
--- a/another.scad
+++ b/another.scad
@@ -23,39 +23,45 @@ module the_extruder(
// pulley properties
pulley_d = 11.5, pulley_h=10,
pulley_elevation = 1, // pulley elevation above the protrusion
teeth_elevation = 7.5, // distance from the bottom of the pulley to its teeth
// idler properties
idler_d = 9.5, idler_h = 4, idler_id = 3, // idler dimensions: outer and inner diameters and height
// spring properties
spring_d = 10, spring_lc = 9.6, // spring diameter and compressed length
// filament path properties
filament_d = 1.75,
filament_path_d = 2,
filament_guide_d = 4, // PTFE filament guide diameter
+ // knob properties
+ knob_h = 10,
+ knob_bore_l = 4,
+ knob_indent_d = 4,
+ knob_indents = 12,
// screw it
mount_screw_d = 3, mount_screw_l = 20,
mount_screwhead_d=6, mount_screwhead_h=3,
// empty spaces
idler_travel = 3, // how far should idler travel when pressed
idler_clearance=1,
pulley_clearance=2,
lever_v_clearance=.7, // vertical clearance for the lever
spring_d_clearance=1,
protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion
protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion
mount_screw_d_tolerance=.5,
idler_v_tolerance=.5,
+ knob_bore_d_tolerance=.6,
what="lever",
left=false,
vitamins = true
) {
lever_shell = mount_screwhead_h+0.5;
lever_thickness=max(spring_d+layer_height*8,idler_h+idler_v_tolerance+2*lever_shell);
lsd = idler_d-idler_clearance*2;
longwing=gearbox_d/2+spring_d/2+lsd/2;
h_ = (pulley_d+idler_d)/(2*sqrt(2));
ri = sqrt( pow(h_,2) + pow(mount_d/2-h_,2) );
spring_dl = idler_travel*longwing/ri;
@@ -283,23 +289,53 @@ module the_extruder(
if(false) { // parallel
for(y=[-gearbox_d:4:gearbox_d])
translate([0,y-extrusion_width/2,0])
cube(size=[gearbox_d,extrusion_width,body_h]);
}else{ // radial
for(zr=[-65:(65+50)/7:50])
rotate([0,0,zr]) translate([0,-extrusion_width/2,0])
cube(size=[gearbox_d,extrusion_width,body_h]);
}
}
}//body module
+
+ module knob() {
+ ch = knob_indent_d/2;
+ translate([0,0,body_h+epsilon]) {
+ mirror([0,0,1]) translate([0,0,-epsilon]) {
+ difference() {
+ cylinder(d=pulley_d,h=knob_bore_l,$fn=pulley_d*PI*2);
+ translate([0,0,-1]) difference() {
+ cylinder(d=bore_d+knob_bore_d_tolerance,h=knob_bore_l+2);
+ translate([-bore_d/2-1,bore_dd-bore_d/2+knob_bore_d_tolerance/2,-1])
+ cube([bore_d+2,bore_d/2,knob_bore_l+4]);
+ }
+ }
+ }
+ difference() {
+ union() {
+ cylinder(d1=gearbox_d-2*ch,d2=gearbox_d,h=ch+epsilon,$fn=PI*gearbox_d*2);
+ translate([0,0,ch])
+ cylinder(d=gearbox_d,h=knob_h-2*ch+epsilon,$fn=PI*gearbox_d*2);
+ translate([0,0,knob_h-ch])
+ cylinder(d1=gearbox_d,d2=gearbox_d-2*ch,h=ch,$fn=PI*gearbox_d*2);
+ }
+ for(a=[0:360/knob_indents:359]) rotate([0,0,a])
+ translate([0,gearbox_d/2,-1])
+ cylinder(d=knob_indent_d,h=knob_h+2,$fn=knob_indent_d*PI*2);
+ }
+ }
+ }//knob module
mirrorleft()
if(what=="lever") color("green",0.7) lever();
else if(what=="body") color("yellow",0.7) body();
- else if(what=="both") {
+ else if(what=="knob") color("red",0.7) knob();
+ else if(what=="both" || what=="*") {
color("green",0.7) lever();
color("yellow",0.7) body();
+ color("red",0.7) knob();
}
}
the_extruder(what="both",left=false);