diff --git a/c3cat-bottle-clip/c3cat-bottle-clip.scad b/c3cat-bottle-clip/c3cat-bottle-clip.scad index 3c42e6f..19a51e7 100644 --- a/c3cat-bottle-clip/c3cat-bottle-clip.scad +++ b/c3cat-bottle-clip/c3cat-bottle-clip.scad @@ -150,8 +150,13 @@ module bottle_clip(ru=13, rl=17.5, ht=26, width=2.5, name="c3cat", font="write/o if (RENDER_COLOR_ONE) { color("black") difference() { cylinder(r1=rl+width, r2=ru+width, h=ht); - name(name=name, font=font, rl=rl, ht=ht, ru=ru); - logo(logo=logo, rl=rl, ht=ht, ru=ru, width=width); + difference() { + union() { + name(name=name, font=font, rl=rl, ht=ht, ru=ru); + logo(logo=logo, rl=rl, ht=ht, ru=ru, width=width); + } + cylinder(r1=rl+width/2, r2=ru+width/2, h=ht); + } translate([0,0,-1]) cylinder(r1=rl, r2=ru, h=ht+2); // finally, substract a cube as a gap so we can clip it to the bottle @@ -164,7 +169,7 @@ module bottle_clip(ru=13, rl=17.5, ht=26, width=2.5, name="c3cat", font="write/o if (RENDER_COLOR_TWO) { color("orange") difference() { name(name=name, font=font, rl=rl, ht=ht, ru=ru); - cylinder(r1=rl+width, r2=ru+width, h=ht); + cylinder(r1=rl+width/2, r2=ru+width/2, h=ht); outer_cutoff(rl, e, ru, ht, width); } } @@ -172,7 +177,7 @@ module bottle_clip(ru=13, rl=17.5, ht=26, width=2.5, name="c3cat", font="write/o if (RENDER_COLOR_THREE) { color("yellow") difference() { logo(logo=logo, rl=rl, ht=ht, ru=ru, width=2*width); - cylinder(r1=rl+width, r2=ru+width, h=ht); + cylinder(r1=rl+width/2, r2=ru+width/2, h=ht); outer_cutoff(rl, e, ru, ht, width); } } diff --git a/globals.scad b/globals.scad index 2f53cd2..d3d8a35 100644 --- a/globals.scad +++ b/globals.scad @@ -12,7 +12,7 @@ RAKE_WIDTH=1; RAKE_STRETCH=1; RAKE_CHAMFER=0.5; CHAMFER=1; -CHAMFER_SHAPE="curve"; +CHAMFER_SHAPE="cone"; INSERTICLE_X = 4.6; INSERTICLE_Y = 7.4; diff --git a/pressfit_headband.scad b/pressfit_headband.scad index 93cc684..7d592a7 100644 --- a/pressfit_headband.scad +++ b/pressfit_headband.scad @@ -2,32 +2,69 @@ include use +RENDER_PLA = true; +RENDER_PETG = true; + module inserticle() { - cube([INSERTICLE_X, INSERTICLE_Y, INSERTICLE_Z], center=true); + cube([INSERTICLE_X, INSERTICLE_Y, INSERTICLE_Z], center=true); } -module pressfit_headband(debug=DEBUG, size=SIZE, height=HEIGHT, thickness=THICKNESS, part=PART, stretch_len=STRETCH_LEN, tip_len=TIP_LEN, tip_bend=TIP_BEND) { - union() { - color("pink") { $a=48; - rotate( $a, [0, 0, 1]) { - translate([-size-4, 0,]) rotate(90, [0, 1, 0]) inserticle(); - translate([-size-3, 0,]) rotate(90, [0, 1, 0]) inserticle(); - } - rotate(-$a, [0, 0, 1]) { - translate([-size-4, 0,]) rotate(90, [0, 1, 0]) inserticle(); - translate([-size-3, 0,]) rotate(90, [0, 1, 0]) inserticle(); - } +module anchored_inserticle() { + translate([-1, 0, 0]) rotate(90, [0, 1, 0]) inserticle(); + rotate(90, [0, 1, 0]) { + cube([INSERTICLE_X-2*CHAMFER, INSERTICLE_Y, INSERTICLE_Z], center=true); + translate([0, 0, INSERTICLE_Z/2+0.5]) + cube([INSERTICLE_X/2, INSERTICLE_Y+2, 1], center=true); + } +} + +module pla_parts(size, a) { + color("pink") { + for (i=[-1, 1]) { + union() { + rotate(i*a, [0, 0, 1]) { + translate([-size-3, 0, 0]) anchored_inserticle(); + translate([-size-4, 0,]) rotate(90, [0, 1, 0]) inserticle(); + translate([-size-3, 0,]) rotate(90, [0, 1, 0]) { + cube([INSERTICLE_X-2*CHAMFER, INSERTICLE_Y, INSERTICLE_Z], center=true); + translate([0, 0, INSERTICLE_Z/2+0.5]) + cube([INSERTICLE_X/2, INSERTICLE_Y+2, 1], center=true); + } } - headband( - size=size, - height=height, - thickness=thickness, - part=part, - stretch_len=stretch_len, - tip_len=tip_len, - tip_bend=tip_bend - ); - }; + } + } + } +} + +module petg_parts(size, height, thickness, part, stretch_len, tip_len, tip_bend) { + headband( + size=size, + height=height, + thickness=thickness, + part=part, + stretch_len=stretch_len, + tip_len=tip_len, + tip_bend=tip_bend + ); +} + +module pressfit_headband(debug=DEBUG, size=SIZE, height=HEIGHT, thickness=THICKNESS, part=PART, stretch_len=STRETCH_LEN, tip_len=TIP_LEN, tip_bend=TIP_BEND, a=48) { + if (RENDER_PLA && RENDER_PETG) { + union() { + petg_parts(size, height, thickness, part, stretch_len, tip_len, tip_bend); + pla_parts(size, a); + } + } else { + if (RENDER_PETG) { + difference() { + petg_parts(size, height, thickness, part, stretch_len, tip_len, tip_bend); + pla_parts(size, a); + } + } + if (RENDER_PLA) { + pla_parts(size, a); + } + } } pressfit_headband();