diff --git a/c3cat-bottle-clip/c3cat-bottle-clip.scad b/c3cat-bottle-clip/c3cat-bottle-clip.scad index 99d4552..95f6176 100644 --- a/c3cat-bottle-clip/c3cat-bottle-clip.scad +++ b/c3cat-bottle-clip/c3cat-bottle-clip.scad @@ -34,7 +34,7 @@ LOGO_FILE = ""; // empty string is catear model FONT = ""; // empty string is for Orbitron font // Format of the bottle clip you want to create. -FORMAT = 0; // [0=Club Mate 50cL, 1=Long Neck as 25cL Club Mate or Fritz-kola, 2=Euroform 2, 3=Steinie bottles] +FORMAT = 0; // [0=Club Mate 50cL, 1=Long Neck as 25cL Club Mate or Fritz-kola, 2=Euroform 2, 3=Steinie bottles, 4=Monster can] // Style of the ears to add... or not add. This parameter can add a LOT of calculation time. EARS_STYLE = 0; // [0=No ears, 1=Just arcs, 2=Filled ears with the same thickness, 3=Filled ears with the a thinner thickness inside, 4=Filled ears with the same thickness but shifted] @@ -131,7 +131,7 @@ module render_bottle_clip(name="", font="", logo="", format=0, ears_style=1) { name = name == "" ? "c3cat" : name ; font = font == "" ? "write/orbitron.dxf" : font ; - if (format < 0 || format > 3) { + if (format < 0 || format > 4) { assert(false, str("Unknown format ", format, ".")); } @@ -139,9 +139,10 @@ module render_bottle_clip(name="", font="", logo="", format=0, ears_style=1) { // Format == 1: Long Neck bottle (like fritz-kola) 0.25L // Format == 2: Euroform 2 bottle // Format == 3: Steinie bottle - ru = 13; - rl = format == 1 ? 15 : format == 2 ? 22.5 : 17.5 ; - ht = format == 3 ? 13 : 26 ; + // Format == 4: Monster Can + ru = format == 4 ? 26 : 13; + rl = format == 4 ? 32 : format == 1 ? 15 : format == 2 ? 22.5 : 17.5 ; + ht = format == 4 ? 10 : format == 3 ? 13 : 26 ; width = 2.5; @@ -154,7 +155,8 @@ module render_bottle_clip(name="", font="", logo="", format=0, ears_style=1) { ru=ru, rl=rl, ht=ht, - width=width); + width=width, + format=format); // Render ears if requested if (ears_style > 0) { @@ -195,18 +197,18 @@ module render_bottle_clip(name="", font="", logo="", format=0, ears_style=1) { } } -module name(name, font, rl, ht, ru) { +module name(name, font, rl, ht, ru, format) { writecylinder( text=name, where=[0, 0, 0], radius=rl+0.5, - height=ht/13*7, - h=ht/13*4, + height=format == 4 ? ht : ht/13*7, + h=format == 4 ? ht/13*7 : ht/13*4, t=max(rl,ru), font=font); } -module logo(logo, rl, ht, ru, width) { +module logo(logo, rl, ht, ru, width, format) { echo(logo=logo); if(logo == "") { // No logo file specified? Let's print a catear headband instead! @@ -215,21 +217,20 @@ module logo(logo, rl, ht, ru, width) { echo(ru=ru); echo(rl=rl); echo(width=width); - translate([0, -max(ru,rl), ht*3/4+.5]) + translate([0, -max(ru,rl), format == 4 ? ht/2 : ht*3/4+.5]) rotate([90, 0, 0]) - scale([1, 1, 1]) - scale([ht/100, ht/100, 1]) - translate([0, -ht/2, 0]) - rotate(-90, [0, 0, 1]) - catear_headband( - size=ear_size, - height=max(ru, rl), - thickness=width, - stretch_len=0, - tip_len=0, - details=false, - with_rake=false - ); + scale([format == 4 ? ht/50 : ht/100, format == 4 ? ht/50 : ht/100, 1]) + translate([0, format == 4 ? 0 : -ht/2, 0]) + rotate(-90, [0, 0, 1]) + catear_headband( + size=ear_size, + height=max(ru, rl), + thickness=width, + stretch_len=0, + tip_len=0, + details=false, + with_rake=false + ); } else { translate([0, 0, ht*3/4-0.1]) rotate([90, 0, 0]) @@ -260,7 +261,7 @@ module logo(logo, rl, ht, ru, width) { * * An empty logo file will create a headband with cat ears as a logo. */ -module bottle_clip(ru=13, rl=17.5, ht=26, width=2.5, name="c3cat", font="write/orbitron.dxf", logo="") { +module bottle_clip(ru=13, rl=17.5, ht=26, width=2.5, name="c3cat", font="write/orbitron.dxf", logo="", format=0) { e = 100; // should be big enough, used for the outer boundary of the text/logo // main cylinder @@ -269,8 +270,12 @@ module bottle_clip(ru=13, rl=17.5, ht=26, width=2.5, name="c3cat", font="write/o cylinder(r1=rl+width, r2=ru+width, h=ht); difference() { union() { - name(name=name, font=font, rl=rl, ht=ht, ru=ru); - logo(logo=logo, rl=rl, ht=ht, ru=ru, width=width); + if (name != "" || format != 4) { + name(name=name, font=font, rl=rl, ht=ht, ru=ru, format=format); + } + if (name == "" || format != 4) { + logo(logo=logo, rl=rl, ht=ht, ru=ru, width=width, format=format); + } } cylinder(r1=rl+width/2, r2=ru+width/2, h=ht); } @@ -285,17 +290,17 @@ module bottle_clip(ru=13, rl=17.5, ht=26, width=2.5, name="c3cat", font="write/o } } // text - if (RENDER_COLOR_TEXT) { + if (RENDER_COLOR_TEXT && (name != "" || format != 4)) { color("orange") difference() { - name(name=name, font=font, rl=rl, ht=ht, ru=ru); + name(name=name, font=font, rl=rl, ht=ht, ru=ru, format=format); cylinder(r1=rl+width/2, r2=ru+width/2, h=ht); outer_cutoff(rl, e, ru, ht, width); } } // logo - if (RENDER_COLOR_LOGO) { + if (RENDER_COLOR_LOGO && (name == "" || format != 4)) { color("yellow") difference() { - logo(logo=logo, rl=rl, ht=ht, ru=ru, width=2*width); + logo(logo=logo, rl=rl, ht=ht, ru=ru, width=2*width, format=format); cylinder(r1=rl+width/2, r2=ru+width/2, h=ht); outer_cutoff(rl, e, ru, ht, width); }