Update bottle clip generator
This commit is contained in:
		@@ -11,6 +11,25 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
include <write/Write.scad>
 | 
					include <write/Write.scad>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Module for multi colored print.
 | 
				
			||||||
 | 
					 * All children are the given color.
 | 
				
			||||||
 | 
					 * Using the global CURRENT_COLOR it is possible to only render and export everything of one color.
 | 
				
			||||||
 | 
					 * Doing this for all colors the resulting stls can be put together again to a multi filament print in the slicer.
 | 
				
			||||||
 | 
					 * If CURRENT_COLOR is set to "ALL" all colors are displayed.
 | 
				
			||||||
 | 
					 * If color is "DEFAULT", it is not colored in the preview.
 | 
				
			||||||
 | 
					 * Inspired by https://erik.nygren.org/2018-3dprint-multicolor-openscad.html
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					module multicolor(color) {
 | 
				
			||||||
 | 
						if (is_undef(CURRENT_COLOR) || CURRENT_COLOR == "ALL" || CURRENT_COLOR == color) {
 | 
				
			||||||
 | 
							if (color != "DEFAULT") {
 | 
				
			||||||
 | 
								color(color) children();
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								children();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Creates one instance of a bottle clip name tag. The default values are
 | 
					 * Creates one instance of a bottle clip name tag. The default values are
 | 
				
			||||||
 * suitable for 0.5l Club Mate bottles (and similar bottles). By default, logo
 | 
					 * suitable for 0.5l Club Mate bottles (and similar bottles). By default, logo
 | 
				
			||||||
@@ -35,24 +54,27 @@ include <write/Write.scad>
 | 
				
			|||||||
 *   in mm. This parameter can be empty; in this case, the text uses the total
 | 
					 *   in mm. This parameter can be empty; in this case, the text uses the total
 | 
				
			||||||
 *   height of the name tag.
 | 
					 *   height of the name tag.
 | 
				
			||||||
 * font: the path to a font for Write.scad.
 | 
					 * font: the path to a font for Write.scad.
 | 
				
			||||||
 | 
					 * bg_color: The color of the background (the clip itself)
 | 
				
			||||||
 | 
					 * text_color: The color of the text
 | 
				
			||||||
 | 
					 * logo_color: The color of the logo
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module bottle_clip(ru=13, rl=17.5, ht=26, width=2.5, name="", gap=90,
 | 
					module bottle_clip(ru=13, rl=17.5, ht=26, width=2.5, name="", gap=90,
 | 
				
			||||||
		logo="thing-logos/stratum0-lowres.dxf", font="write/orbitron.dxf") {
 | 
							logo="thing-logos/stratum0-lowres.dxf", font="write/orbitron.dxf",
 | 
				
			||||||
 | 
							bg_color="DEFAULT", text_color="DEFAULT", logo_color="DEFAULT") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	e=100;  // should be big enough, used for the outer boundary of the text/logo
 | 
						e=100;  // should be big enough, used for the outer boundary of the text/logo
 | 
				
			||||||
 | 
					 | 
				
			||||||
	difference() {
 | 
						difference() {
 | 
				
			||||||
		rotate([0,0,-45]) union() {
 | 
							rotate([0,0,-45]) union() {
 | 
				
			||||||
			// main cylinder
 | 
								// main cylinder
 | 
				
			||||||
			cylinder(r1=rl+width, r2=ru+width, h=ht);
 | 
								multicolor(bg_color) cylinder(r1=rl+width, r2=ru+width, h=ht);
 | 
				
			||||||
			// text and logo
 | 
								// text and logo
 | 
				
			||||||
			if(logo == "") {
 | 
								if(logo == "") {
 | 
				
			||||||
				writecylinder(name, [0,0,3], rl+0.5, ht/13*7, h=ht/13*8, t=max(rl,ru),
 | 
									multicolor(text_color) writecylinder(name, [0,0,3], rl+0.5, ht/13*7, h=ht/13*8, t=max(rl,ru),
 | 
				
			||||||
					font=font);
 | 
										font=font);
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				writecylinder(name, [0,0,0], rl+0.5, ht/13*7, h=ht/13*4, t=max(rl,ru),
 | 
									multicolor(text_color) writecylinder(name, [0,0,0], rl+0.5, ht/13*7, h=ht/13*4, t=max(rl,ru),
 | 
				
			||||||
					font=font);
 | 
										font=font);
 | 
				
			||||||
				translate([0,0,ht*3/4-0.1])
 | 
									multicolor(logo_color) translate([0,0,ht*3/4-0.1])
 | 
				
			||||||
					rotate([90,0,0])
 | 
										rotate([90,0,0])
 | 
				
			||||||
					scale([ht/100,ht/100,1])
 | 
										scale([ht/100,ht/100,1])
 | 
				
			||||||
					translate([-25,-25,0.5])
 | 
										translate([-25,-25,0.5])
 | 
				
			||||||
@@ -89,9 +111,10 @@ module bottle_clip(ru=13, rl=17.5, ht=26, width=2.5, name="", gap=90,
 | 
				
			|||||||
 * bottle_clip(), see there for their documentation.
 | 
					 * bottle_clip(), see there for their documentation.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module bottle_clip_longneck(name="", width=2.5, gap=90,
 | 
					module bottle_clip_longneck(name="", width=2.5, gap=90,
 | 
				
			||||||
		logo="thing-logos/stratum0-lowres.dxf", font="write/orbitron.dxf") {
 | 
							logo="thing-logos/stratum0-lowres.dxf", font="write/orbitron.dxf",
 | 
				
			||||||
 | 
							bg_color="DEFAULT", text_color="DEFAULT", logo_color="DEFAULT") {
 | 
				
			||||||
	bottle_clip(name=name, ru=13, rl=15, ht=26, width=width, logo=logo, gap=gap,
 | 
						bottle_clip(name=name, ru=13, rl=15, ht=26, width=width, logo=logo, gap=gap,
 | 
				
			||||||
		font=font);
 | 
							font=font, bg_color=bg_color, text_color=text_color, logo_color=logo_color);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -100,9 +123,10 @@ module bottle_clip_longneck(name="", width=2.5, gap=90,
 | 
				
			|||||||
 * reasons, there is no logo, but all other parameters are passed to the module
 | 
					 * reasons, there is no logo, but all other parameters are passed to the module
 | 
				
			||||||
 * bottle_clip(), see there for their documentation.
 | 
					 * bottle_clip(), see there for their documentation.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module bottle_clip_steinie(name="", width=2.5, gap=90, font="write/orbitron.dxf") {
 | 
					module bottle_clip_steinie(name="", width=2.5, gap=90, font="write/orbitron.dxf",
 | 
				
			||||||
 | 
							bg_color="DEFAULT", text_color="DEFAULT", logo_color="DEFAULT") {
 | 
				
			||||||
	bottle_clip(name=name, ru=13, rl=17.5, ht=13, width=width, logo="", gap=gap,
 | 
						bottle_clip(name=name, ru=13, rl=17.5, ht=13, width=width, logo="", gap=gap,
 | 
				
			||||||
		font=font);
 | 
							font=font, bg_color=bg_color, text_color=text_color, logo_color=logo_color);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
@@ -111,9 +135,10 @@ module bottle_clip_steinie(name="", width=2.5, gap=90, font="write/orbitron.dxf"
 | 
				
			|||||||
 * passed to the module bottle_clip(), see there for their documentation.
 | 
					 * passed to the module bottle_clip(), see there for their documentation.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module bottle_clip_euro2(name="", width=2.5, gap=90,
 | 
					module bottle_clip_euro2(name="", width=2.5, gap=90,
 | 
				
			||||||
    logo="thing-logos/stratum0-lowres.dxf", font="write/orbitron.dxf") {
 | 
							logo="thing-logos/stratum0-lowres.dxf", font="write/orbitron.dxf",
 | 
				
			||||||
 | 
							bg_color="DEFAULT", text_color="DEFAULT", logo_color="DEFAULT") {
 | 
				
			||||||
	bottle_clip(name=name, ru=13, rl=22.5, ht=26, width=width, logo=logo, gap=gap,
 | 
						bottle_clip(name=name, ru=13, rl=22.5, ht=26, width=width, logo=logo, gap=gap,
 | 
				
			||||||
    font=font);
 | 
							font=font, bg_color=bg_color, text_color=text_color, logo_color=logo_color);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// vim: set noet ts=2 sw=2 tw=80:
 | 
					// vim: set noet ts=2 sw=2 tw=80:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,5 @@
 | 
				
			|||||||
/* 	Version 3
 | 
					/* 	Version 4
 | 
				
			||||||
 | 
						Added bold property  bold=0 (not bold) bold=1(bolder by 1.1) bold=2(bolder by 1.2) 
 | 
				
			||||||
	Added support for font selection (default is Letters.dxf)
 | 
						Added support for font selection (default is Letters.dxf)
 | 
				
			||||||
	Added WriteCube module
 | 
						Added WriteCube module
 | 
				
			||||||
	Added Rotate for text (rotates on the plane of the text)
 | 
						Added Rotate for text (rotates on the plane of the text)
 | 
				
			||||||
@@ -26,6 +27,7 @@
 | 
				
			|||||||
// defaults.
 | 
					// defaults.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//default settings
 | 
					//default settings
 | 
				
			||||||
 | 
						bold=0;
 | 
				
			||||||
	center=false;
 | 
						center=false;
 | 
				
			||||||
	h = 4;			 //mm letter height
 | 
						h = 4;			 //mm letter height
 | 
				
			||||||
	t = 1; 			//mm letter thickness
 | 
						t = 1; 			//mm letter thickness
 | 
				
			||||||
@@ -73,19 +75,19 @@ module writecylinder(text,where,radius,height){
 | 
				
			|||||||
		if (face=="top" ){
 | 
							if (face=="top" ){
 | 
				
			||||||
			if (center==true){
 | 
								if (center==true){
 | 
				
			||||||
				writecircle(text,where+[0,0,height/2],radius-h,rotate=rotate,font=font,h=h,t=t,
 | 
									writecircle(text,where+[0,0,height/2],radius-h,rotate=rotate,font=font,h=h,t=t,
 | 
				
			||||||
				space=space,east=east,west=west,middle=middle,ccw=ccw);
 | 
									space=space,east=east,west=west,middle=middle,ccw=ccw,bold=bold);
 | 
				
			||||||
			}else{
 | 
								}else{
 | 
				
			||||||
				writecircle(text,where+[0,0,height],radius-h,rotate=rotate,font=font,h=h,t=t,
 | 
									writecircle(text,where+[0,0,height],radius-h,rotate=rotate,font=font,h=h,t=t,
 | 
				
			||||||
				space=space,east=east,west=west,middle=middle,ccw=ccw);
 | 
									space=space,east=east,west=west,middle=middle,ccw=ccw,bold=bold);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}else{
 | 
							}else{
 | 
				
			||||||
			rotate(180,[1,0,0])
 | 
								rotate(180,[1,0,0])
 | 
				
			||||||
			if (center==true){
 | 
								if (center==true){
 | 
				
			||||||
				writecircle(text,where+[0,0,height/2],radius-h,rotate=rotate,font=font,h=h,t=t,
 | 
									writecircle(text,where+[0,0,height/2],radius-h,rotate=rotate,font=font,h=h,t=t,
 | 
				
			||||||
				space=space,east=east,west=west,middle=middle,ccw=ccw);
 | 
									space=space,east=east,west=west,middle=middle,ccw=ccw,bold=bold);
 | 
				
			||||||
			}else{
 | 
								}else{
 | 
				
			||||||
				writecircle(text,where+[0,0,0],radius-h,rotate=rotate,font=font,h=h,t=t,
 | 
									writecircle(text,where+[0,0,0],radius-h,rotate=rotate,font=font,h=h,t=t,
 | 
				
			||||||
				space=space,east=east,west=west,middle=middle,ccw=ccw);
 | 
									space=space,east=east,west=west,middle=middle,ccw=ccw,bold=bold);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
@@ -96,13 +98,13 @@ module writecylinder(text,where,radius,height){
 | 
				
			|||||||
				translate(where)
 | 
									translate(where)
 | 
				
			||||||
				writethecylinder(text,where,radius,height,r1=radius,r2=radius,h=h,
 | 
									writethecylinder(text,where,radius,height,r1=radius,r2=radius,h=h,
 | 
				
			||||||
					rotate=rotate,t=t,font=font,face=face,up=up,down=down,
 | 
										rotate=rotate,t=t,font=font,face=face,up=up,down=down,
 | 
				
			||||||
					east=east,west=west,center=center,space=space,rounded=rounded);
 | 
										east=east,west=west,center=center,space=space,rounded=rounded,bold=bold);
 | 
				
			||||||
			} else{
 | 
								} else{
 | 
				
			||||||
				rotate(-mmangle(radius)*(1-abs(rotate)/90),[0,0,1])
 | 
									rotate(-mmangle(radius)*(1-abs(rotate)/90),[0,0,1])
 | 
				
			||||||
				translate(where+[0,0,height/2])
 | 
									translate(where+[0,0,height/2])
 | 
				
			||||||
					writethecylinder(text,where,radius,height,r1=radius,r2=radius,h=h,
 | 
										writethecylinder(text,where,radius,height,r1=radius,r2=radius,h=h,
 | 
				
			||||||
					rotate=rotate,t=t,font=font,face=face,up=up,down=down,
 | 
										rotate=rotate,t=t,font=font,face=face,up=up,down=down,
 | 
				
			||||||
					east=east,west=west,center=center,space=space,rounded=rounded);
 | 
										east=east,west=west,center=center,space=space,rounded=rounded,bold=bold);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
// the remarked out code is for cone shaped cylinders (not complete)
 | 
					// the remarked out code is for cone shaped cylinders (not complete)
 | 
				
			||||||
//		}else{
 | 
					//		}else{
 | 
				
			||||||
@@ -140,7 +142,7 @@ module writecircle(text,where,radius){
 | 
				
			|||||||
					//rotate(90,[1,0,0])
 | 
										//rotate(90,[1,0,0])
 | 
				
			||||||
					//rotate(90,[0,1,0])
 | 
										//rotate(90,[0,1,0])
 | 
				
			||||||
					rotate(-270,[0,0,1])  // flip text (botom out = -270)
 | 
										rotate(-270,[0,0,1])  // flip text (botom out = -270)
 | 
				
			||||||
					write(text[r],center=true,h=h,t=t,font=font);
 | 
										write(text[r],center=true,h=h,t=t,font=font,bold=bold);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -154,7 +156,7 @@ module writecircle(text,where,radius){
 | 
				
			|||||||
					//rotate(90,[1,0,0])
 | 
										//rotate(90,[1,0,0])
 | 
				
			||||||
					//rotate(90,[0,1,0])
 | 
										//rotate(90,[0,1,0])
 | 
				
			||||||
					rotate(270,[0,0,1])  // flip text (botom out = -270)
 | 
										rotate(270,[0,0,1])  // flip text (botom out = -270)
 | 
				
			||||||
					write(text[r],center=true,h=h,t=t,font=font);
 | 
										write(text[r],center=true,h=h,t=t,font=font,bold=bold);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}		
 | 
							}		
 | 
				
			||||||
@@ -176,7 +178,7 @@ module writethecylinder(text,where,radius,height,r1,r2){
 | 
				
			|||||||
				translate([radius,0,-r*((rotate)/90*wid)+(len(text)-1)/2*((rotate)/90*wid)])
 | 
									translate([radius,0,-r*((rotate)/90*wid)+(len(text)-1)/2*((rotate)/90*wid)])
 | 
				
			||||||
				rotate(90,[1,0,0])
 | 
									rotate(90,[1,0,0])
 | 
				
			||||||
				rotate(90,[0,1,0])
 | 
									rotate(90,[0,1,0])
 | 
				
			||||||
				write(text[r],center=true,h=h,rotate=rotate,t=t,font=font);
 | 
									write(text[r],center=true,h=h,rotate=rotate,t=t,font=font,bold=bold);
 | 
				
			||||||
		//echo("zloc=",height/2-r*((rotate)/90*wid)+(len(text)-1)/2*((rotate)/90*wid));
 | 
							//echo("zloc=",height/2-r*((rotate)/90*wid)+(len(text)-1)/2*((rotate)/90*wid));
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -204,7 +206,7 @@ module writesphere(text,where,radius){
 | 
				
			|||||||
				translate([radius,0,0])
 | 
									translate([radius,0,0])
 | 
				
			||||||
				rotate(90,[1,0,0])
 | 
									rotate(90,[1,0,0])
 | 
				
			||||||
				rotate(90,[0,1,0])
 | 
									rotate(90,[0,1,0])
 | 
				
			||||||
				write(text[r],center=true,h=h,rotate=rotate,t=t,font=font);
 | 
									write(text[r],center=true,h=h,rotate=rotate,t=t,font=font,bold=bold);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}else{
 | 
							}else{
 | 
				
			||||||
			difference(){
 | 
								difference(){
 | 
				
			||||||
@@ -214,7 +216,7 @@ module writesphere(text,where,radius){
 | 
				
			|||||||
					translate([radius,0,0])
 | 
										translate([radius,0,0])
 | 
				
			||||||
					rotate(90,[1,0,0])
 | 
										rotate(90,[1,0,0])
 | 
				
			||||||
					rotate(90,[0,1,0])
 | 
										rotate(90,[0,1,0])
 | 
				
			||||||
					write(text[r],center=true,h=h,rotate=rotate,t=t*2+h,font=font);
 | 
										write(text[r],center=true,h=h,rotate=rotate,t=t*2+h,font=font,bold=bold);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				difference(){ //rounded outside
 | 
									difference(){ //rounded outside
 | 
				
			||||||
					sphere(radius+(t*2+h)*2);
 | 
										sphere(radius+(t*2+h)*2);
 | 
				
			||||||
@@ -232,12 +234,12 @@ module writecube(text,where,size){
 | 
				
			|||||||
	if (str(size)[0] != "["){  
 | 
						if (str(size)[0] != "["){  
 | 
				
			||||||
		// its a square cube (size was not a matrix so make it one)
 | 
							// its a square cube (size was not a matrix so make it one)
 | 
				
			||||||
		writethecube(text,where,[size,size,size],h=h,rotate=rotate,space=space,
 | 
							writethecube(text,where,[size,size,size],h=h,rotate=rotate,space=space,
 | 
				
			||||||
		t=t,font=font,face=face,up=up,down=down,right=right,left=left);
 | 
							t=t,font=font,face=face,up=up,down=down,right=right,left=left,bold=bold);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	}else{
 | 
						}else{
 | 
				
			||||||
		// its not square
 | 
							// its not square
 | 
				
			||||||
		writethecube(text,where,size,h=h,rotate=rotate,space=space,
 | 
							writethecube(text,where,size,h=h,rotate=rotate,space=space,
 | 
				
			||||||
		t=t,font=font,face=face,up=up,down=down,right=right,left=left);
 | 
							t=t,font=font,face=face,up=up,down=down,right=right,left=left,bold=bold);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
// I split the writecube module into 2 pieces.. easier to add features later
 | 
					// I split the writecube module into 2 pieces.. easier to add features later
 | 
				
			||||||
@@ -245,34 +247,34 @@ module writethecube(text,where,size){
 | 
				
			|||||||
		if (face=="front") {
 | 
							if (face=="front") {
 | 
				
			||||||
			translate([where[0]+right-left,where[1]-size[1]/2,where[2]+up-down])
 | 
								translate([where[0]+right-left,where[1]-size[1]/2,where[2]+up-down])
 | 
				
			||||||
			rotate(90,[1,0,0])
 | 
								rotate(90,[1,0,0])
 | 
				
			||||||
			write(text,center=true,h=h,rotate=rotate,t=t,font=font);
 | 
								write(text,center=true,h=h,rotate=rotate,t=t,font=font,space=space,bold=bold);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (face=="back") {
 | 
							if (face=="back") {
 | 
				
			||||||
			translate([where[0]+right-left,where[1]+size[1]/2,where[2]+up-down])
 | 
								translate([where[0]+right-left,where[1]+size[1]/2,where[2]+up-down])
 | 
				
			||||||
			rotate(90,[1,0,0])   // rotate around the x axis
 | 
								rotate(90,[1,0,0])   // rotate around the x axis
 | 
				
			||||||
			rotate(180,[0,1,0])  // rotate around the y axis (z before rotation)
 | 
								rotate(180,[0,1,0])  // rotate around the y axis (z before rotation)
 | 
				
			||||||
			write(text,center=true,h=h,rotate=rotate,t=t,font=font);
 | 
								write(text,center=true,h=h,rotate=rotate,t=t,font=font,space=space,bold=bold);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (face=="left") {
 | 
							if (face=="left") {
 | 
				
			||||||
			translate([where[0]-size[0]/2,where[1]-right+left,where[2]+up-down ])
 | 
								translate([where[0]-size[0]/2,where[1]-right+left,where[2]+up-down ])
 | 
				
			||||||
			rotate(90,[1,0,0])   // rotate around the x axis
 | 
								rotate(90,[1,0,0])   // rotate around the x axis
 | 
				
			||||||
			rotate(90,[0,-1,0])  // rotate around the y axis  (z before rotation)
 | 
								rotate(90,[0,-1,0])  // rotate around the y axis  (z before rotation)
 | 
				
			||||||
			write(text,center=true,h=h,rotate=rotate,t=t,font=font);
 | 
								write(text,center=true,h=h,rotate=rotate,t=t,font=font,space=space,bold=bold);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (face=="right") {
 | 
							if (face=="right") {
 | 
				
			||||||
			translate([where[0]+size[0]/2,where[1]+right-left,where[2] +up-down])
 | 
								translate([where[0]+size[0]/2,where[1]+right-left,where[2] +up-down])
 | 
				
			||||||
			rotate(90,[1,0,0])   // rotate around the x axis
 | 
								rotate(90,[1,0,0])   // rotate around the x axis
 | 
				
			||||||
			rotate(90,[0,1,0])  // rotate around the y axis  (z before rotation)
 | 
								rotate(90,[0,1,0])  // rotate around the y axis  (z before rotation)
 | 
				
			||||||
			write(text,center=true,h=h,rotate=rotate,t=t,font=font);
 | 
								write(text,center=true,h=h,rotate=rotate,t=t,font=font,space=space,bold=bold);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (face=="top") {
 | 
							if (face=="top") {
 | 
				
			||||||
			translate([where[0]+right-left,where[1]+up-down,where[2]+size[2]/2 ])
 | 
								translate([where[0]+right-left,where[1]+up-down,where[2]+size[2]/2 ])
 | 
				
			||||||
			write(text,center=true,h=h,rotate=rotate,t=t,font=font);
 | 
								write(text,center=true,h=h,rotate=rotate,t=t,font=font,space=space,bold=bold);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (face=="bottom") {
 | 
							if (face=="bottom") {
 | 
				
			||||||
			translate([where[0]+right-left,where[1]-up+down,where[2]-size[2]/2 ])
 | 
								translate([where[0]+right-left,where[1]-up+down,where[2]-size[2]/2 ])
 | 
				
			||||||
			rotate(180,[1,0,0])
 | 
								rotate(180,[1,0,0])
 | 
				
			||||||
			write(text,center=true,h=h,rotate=rotate,t=t,font=font);
 | 
								write(text,center=true,h=h,rotate=rotate,t=t,font=font,space=space,bold=bold);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -283,7 +285,9 @@ module write(word){
 | 
				
			|||||||
	echo ("There are " ,len(word) ," letters in this string");
 | 
						echo ("There are " ,len(word) ," letters in this string");
 | 
				
			||||||
//	echo ("The second letter is ",word[1]);
 | 
					//	echo ("The second letter is ",word[1]);
 | 
				
			||||||
//	echo (str(word[0],"_"));
 | 
					//	echo (str(word[0],"_"));
 | 
				
			||||||
 | 
					minkowski() {
 | 
				
			||||||
rotate(rotate,[0,0,-1]){
 | 
					rotate(rotate,[0,0,-1]){
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	for (r = [0:len(word)]){   // count off each character
 | 
						for (r = [0:len(word)]){   // count off each character
 | 
				
			||||||
		// if the letter is lower case, add an underscore to the end for file lookup
 | 
							// if the letter is lower case, add an underscore to the end for file lookup
 | 
				
			||||||
		if ((word[r] == "a" ) || (word[r]== "b")  || (word[r]== "c") 
 | 
							if ((word[r] == "a" ) || (word[r]== "b")  || (word[r]== "c") 
 | 
				
			||||||
@@ -299,18 +303,20 @@ rotate(rotate,[0,0,-1]){
 | 
				
			|||||||
				translate([0,-h/2,0]){
 | 
									translate([0,-h/2,0]){
 | 
				
			||||||
					scale([.125*h,.125*h,t]){	
 | 
										scale([.125*h,.125*h,t]){	
 | 
				
			||||||
						translate([ (-len(word)*5.5*space/2) + (r*5.5*space),0,0])
 | 
											translate([ (-len(word)*5.5*space/2) + (r*5.5*space),0,0])
 | 
				
			||||||
 | 
											//offset(delta = 20, join_type = "round") {
 | 
				
			||||||
						linear_extrude(height=1,convexity=10,center=true){
 | 
											linear_extrude(height=1,convexity=10,center=true){
 | 
				
			||||||
							import(file = font,layer=str(word[r],"_"));
 | 
												import(file = font,layer=str(word[r],"_"));
 | 
				
			||||||
						}
 | 
											}//}
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}else{
 | 
								}else{
 | 
				
			||||||
				translate([0,0,t/2]){
 | 
									translate([0,0,t/2]){
 | 
				
			||||||
					scale([.125*h,.125*h,t]){	
 | 
										scale([.125*h,.125*h,t]){	
 | 
				
			||||||
						translate([r*5.5*space,0,0])
 | 
											translate([r*5.5*space,0,0])
 | 
				
			||||||
 | 
											//offset(delta = 20, join_type = "round") {
 | 
				
			||||||
						linear_extrude(height=1,convexity=10,center=true){
 | 
											linear_extrude(height=1,convexity=10,center=true){
 | 
				
			||||||
							import(file = font,layer=str(word[r],"_"));
 | 
												import(file = font,layer=str(word[r],"_"));
 | 
				
			||||||
						}
 | 
											}//}
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -320,23 +326,27 @@ rotate(rotate,[0,0,-1]){
 | 
				
			|||||||
				translate([0,-h/2,0]){
 | 
									translate([0,-h/2,0]){
 | 
				
			||||||
					scale([.125*h,.125*h,t]){
 | 
										scale([.125*h,.125*h,t]){
 | 
				
			||||||
						translate([ (-len(word)*5.5*space/2) + (r*5.5*space),0,0])
 | 
											translate([ (-len(word)*5.5*space/2) + (r*5.5*space),0,0])
 | 
				
			||||||
 | 
											//offset(delta = 20, join_type = "round") {
 | 
				
			||||||
						linear_extrude(height=1,convexity=10,center=true){
 | 
											linear_extrude(height=1,convexity=10,center=true){
 | 
				
			||||||
							import(file = font,layer=str(word[r]));
 | 
												import(file = font,layer=str(word[r]));
 | 
				
			||||||
						}
 | 
											}//}
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}else{
 | 
								}else{
 | 
				
			||||||
				translate([0,0,t/2]){
 | 
									translate([0,0,t/2]){
 | 
				
			||||||
					scale([.125*h,.125*h,t]){
 | 
										scale([.125*h,.125*h,t]){
 | 
				
			||||||
						translate([r*5.5*space,0,0])
 | 
											translate([r*5.5*space,0,0])
 | 
				
			||||||
 | 
											//offset(delta = 20, join_type = "round") {
 | 
				
			||||||
						linear_extrude(height=1,convexity=10,center=true){
 | 
											linear_extrude(height=1,convexity=10,center=true){
 | 
				
			||||||
							import(file = font,layer=str(word[r]));
 | 
												import(file = font,layer=str(word[r]));
 | 
				
			||||||
 | 
											}//}
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	}
 | 
					}
 | 
				
			||||||
 | 
					cube([bold*.1*h,bold*.1*h,.00001]);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user