/* code to make a coaster decorated with plane groups made up of MaakMijnldee's cat -thing:35495 /* bd = diameter of the coaster in mm bthick = thickness of the coaster in mm radius = radius used to smooth edge thick - 2*radius must be positive rthick - allowance for rim pcm */ bd = 110; bthick = 3; radius = 1; rthick = 2; /* mark determines type ofoutput mark = 0 - none mark = 1 - p3 coaster with indentations mark = 2 - p3 decorations mark = 3 - p3m1 coaster with indentations mark = 4 - p3m1 decorations mark = 5 - p31m coaster with indentations mark = 6 - p31m decorations mark = 7 - p6 coaster with indentations mark = 8 - p6 decorations */ //mark = 0; //mark = 1; //mark = 2; //mark = 3; //mark = 4; //mark = 5; //mark = 6; //mark = 7; //mark = 8; mark =8; // code starts here if (mark==0) coin(bd,bthick,radius); else if (mark==1) translate([0,0,bthick]) rotate([0,180,0]) difference() { coin(bd,bthick,radius); translate([0,0,bthick-1]) linear_extrude(height=1.5) import("coasters_dxf_04/p3.dxf"); } else if (mark==2) translate([0,0,bthick]) rotate([0,180,0]) intersection() { coin(bd,bthick,radius); translate([0,0,bthick-1]) linear_extrude(height=1.5) import("coasters_dxf_04/p3.dxf"); } else if (mark==3) translate([0,0,bthick]) rotate([0,180,0]) difference() { coin(bd,bthick,radius); translate([0,0,bthick-1]) linear_extrude(height=1.5) import("coasters_dxf_04/p3m1.dxf"); } else if (mark==4) translate([0,0,bthick]) rotate([0,180,0]) intersection() { coin(bd,bthick,radius); translate([0,0,bthick-1]) linear_extrude(height=1.5) import("coasters_dxf_04/p3m1.dxf"); } else if (mark==5) translate([0,0,bthick]) rotate([0,180,0]) difference() { coin(bd,bthick,radius); translate([0,0,bthick-1]) linear_extrude(height=1.5) import("coasters_dxf_04/p31m.dxf"); } else if (mark==6) translate([0,0,bthick]) rotate([0,180,0]) intersection() { coin(bd,bthick,radius); translate([0,0,bthick-1]) linear_extrude(height=1.5) import("coasters_dxf_04/p31m.dxf"); } else if (mark==7) translate([0,0,bthick]) rotate([0,180,0]) difference() { coin(bd,bthick,radius); translate([0,0,bthick-1]) linear_extrude(height=1.5) import("coasters_dxf_04/p6.dxf"); } else if (mark==8) translate([0,0,bthick]) rotate([0,180,0]) intersection() { coin(bd,bthick,radius); translate([0,0,bthick-1]) linear_extrude(height=1.5) import("coasters_dxf_04/p6.dxf"); } // end of code module coin(db,thick,tradius) { /* db = diameter of the coin in mm thick = thickness of the coin in mm tradius = radius used to smooth edge thick - 2*radius must be positive */ tr = thick - 2*tradius; l1=(db - 2* tradius)/2; n1 = 5; /* l1 is length of straight portion */ rotate_extrude (convexity = 10,$fn=100) translate([0,tradius,0]) polygon (points = [ [ 0,0 ],[0,-tradius], [ tradius*cos(-18*n1) + l1, tradius*sin(-18*n1)], [ tradius*cos(-17*n1) + l1, tradius*sin(-17*n1)], [ tradius*cos(-16*n1) + l1, tradius*sin(-16*n1)], [ tradius*cos(-15*n1) + l1, tradius*sin(-15*n1)], [ tradius*cos(-14*n1) + l1, tradius*sin(-14*n1)], [ tradius*cos(-13*n1) + l1, tradius*sin(-13*n1)], [ tradius*cos(-12*n1) + l1, tradius*sin(-12*n1)], [ tradius*cos(-11*n1) + l1, tradius*sin(-11*n1)], [ tradius*cos(-10*n1) + l1, tradius*sin(-10*n1)], [ tradius*cos(-9*n1) + l1, tradius*sin(-9*n1)], [ tradius*cos(-8*n1) + l1, tradius*sin(-8*n1)], [ tradius*cos(-7*n1) + l1, tradius*sin(-7*n1)], [ tradius*cos(-6*n1) + l1, tradius*sin(-6*n1)], [ tradius*cos(-5*n1) + l1, tradius*sin(-5*n1)], [ tradius*cos(-4*n1) + l1, tradius*sin(-4*n1)], [ tradius*cos(-3*n1) + l1, tradius*sin(-3*n1)], [ tradius*cos(-2*n1) + l1, tradius*sin(-2*n1)], [ tradius*cos(-1*n1) + l1, tradius*sin(-1*n1)], [ tradius*cos(-0*n1) + l1, tradius*sin(0*n1)], [ tradius*cos(-0*n1) + l1,tr], [ tradius*cos(0*n1) + l1,tr + tradius*sin(0*n1)], [ tradius*cos(1*n1) + l1,tr + tradius*sin(1*n1)], [ tradius*cos(2*n1) + l1,tr + tradius*sin(2*n1)], [ tradius*cos(3*n1) + l1,tr + tradius*sin(3*n1)], [ tradius*cos(4*n1) + l1,tr + tradius*sin(4*n1)], [ tradius*cos(5*n1) + l1,tr + tradius*sin(5*n1)], [ tradius*cos(6*n1) + l1,tr + tradius*sin(6*n1)], [ tradius*cos(7*n1) + l1,tr + tradius*sin(7*n1)], [ tradius*cos(8*n1) + l1,tr + tradius*sin(8*n1)], [ tradius*cos(9*n1) + l1,tr + tradius*sin(9*n1)], [ tradius*cos(10*n1) + l1,tr + tradius*sin(10*n1)], [ tradius*cos(11*n1) + l1,tr + tradius*sin(11*n1)], [ tradius*cos(12*n1) + l1,tr + tradius*sin(12*n1)], [ tradius*cos(13*n1) + l1,tr + tradius*sin(13*n1)], [ tradius*cos(14*n1) + l1,tr + tradius*sin(14*n1)], [ tradius*cos(15*n1) + l1,tr + tradius*sin(15*n1)], [ tradius*cos(16*n1) + l1,tr + tradius*sin(16*n1)], [ tradius*cos(17*n1) + l1,tr + tradius*sin(17*n1)], [ tradius*cos(18*n1) + l1,tr + tradius*sin(18*n1)], [ 0,tr + tradius*sin(18*n1)],[0,0], ] ); }