-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathbirthday.scad
90 lines (77 loc) · 19.3 KB
/
birthday.scad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
thickness = 0.7;
textThickness = 2;
cakeThickness = 2;
cakeLineWidth = 2;
width = 175;
height = 125;
textSize = 18;
textSpacing = 23;
line1 = "Happy __th";
line2 = "Birthday to";
line3 = "[name]!";
line4 = "From,";
line5 = "[name]";
font = "Great Vibes";
module dummy() {}
nudge = 0.01;
// birthday cake
// by Hopkins
// https://thenounproject.com/search/?q=birthday&i=912002
// Creative Commons 3.0 license: https://creativecommons.org/licenses/by/3.0/us/
height_svg = cakeThickness;
width_svg = cakeLineWidth/0.4;
center_svg_1 = [2.634092848,53.580651643];
size_svg_1 = [5.268185695,22.646921348];
color_svg_1 = [0.00000,0.00000,0.00000];
// paths for svg_1
points_svg_1_1 = [ [39.238314496,157.705348357],[39.143825905,156.651102808],[38.875579241,155.535698410],[38.456403166,154.366258657],[37.909126343,153.149907040],[36.521585109,150.604962186],[34.895584842,147.957851789],[33.213754847,145.265563790],[31.658724427,142.585086128],[30.413122889,139.973406746],[29.963429607,138.711175140],[29.659579535,137.487513582],[29.512875080,135.990349556],[29.585578665,134.671293100],[29.839036982,133.520782837],[30.234596721,132.529257384],[30.733604573,131.687155364],[31.297407228,130.984915395],[32.464783713,129.961776095],[35.201549004,129.961776095],[35.062244117,130.742014676],[35.133081894,131.706191583],[35.450290186,132.773603942],[35.981431297,133.896919450],[37.369615359,136.212610020],[38.665840839,138.455963510],[39.082033723,139.488857667],[39.238314496,140.429680135],[39.396055274,139.488857667],[39.816097018,138.455963510],[41.123999883,136.212610020],[42.523856038,133.896919450],[43.058839396,132.773603942],[43.377498431,131.706191583],[43.437925736,130.748576342],[43.275023544,129.961776095],[46.045965945,129.961776095],[47.199773274,130.992297270],[47.755459340,131.694844817],[48.244561688,132.535819051],[48.627751330,133.525396508],[48.865699276,134.673753725],[48.919076537,135.991067238],[48.748554125,137.487513582],[48.454105319,138.711367376],[48.012992847,139.974124428],[46.782209628,142.587546753],[45.239069914,145.270177461],[43.566439151,147.964413455],[41.947182782,150.612651639],[40.564166253,153.157288915],[40.018393380,154.372756245],[39.600255010,155.540722186],[39.332609321,156.653986353],[39.238314496,157.705348357],[39.238314496,157.705348357] ];
points_svg_1_2 = [ [87.268246188,157.705348357],[87.173567262,156.651102808],[86.904800526,155.535698410],[86.484851041,154.366258657],[85.936623869,153.149907040],[84.546956707,150.604962186],[82.919039534,147.957851789],[81.236112841,145.265563790],[79.681417119,142.585086128],[78.438192862,139.973406746],[77.990645186,138.711175140],[77.689680560,137.487513582],[77.537936178,135.990349556],[77.608258569,134.671293100],[77.861385550,133.520782837],[78.258054940,132.529257384],[78.759004558,131.687155364],[79.324972222,130.984915395],[80.494912961,129.961776095],[83.231480696,129.961776095],[83.092235781,130.742014676],[83.163154697,131.706191583],[83.480365028,132.773603942],[84.011493958,133.896919450],[85.399628189,136.212610020],[86.695798548,138.455963510],[87.111972635,139.488857667],[87.268246188,140.429680135],[87.425991981,139.488857667],[87.846047672,138.455963510],[89.153998603,136.212610020],[90.553918699,133.896919450],[91.088935846,132.773603942],[91.407627679,131.706191583],[91.478557178,130.748576342],[91.339301680,129.961776095],[94.076066970,129.961776095],[95.229839463,130.992297270],[95.785490416,131.694844817],[96.274553352,132.535819051],[96.657704905,133.525396508],[96.895621707,134.673753725],[96.948980393,135.991067238],[96.778457594,137.487513582],[96.484041661,138.711367376],[96.042954249,139.974124428],[94.812200851,142.587546753],[93.269069130,145.270177461],[91.596430815,147.964413455],[89.977157634,150.612651639],[88.594121316,153.157288915],[88.048339397,154.372756245],[87.630193592,155.540722186],[87.362542867,156.653986353],[87.268246188,157.705348357] ];
points_svg_1_3 = [ [135.298318991,157.705348357],[135.203832308,156.651102808],[134.935591066,155.535698410],[134.516423473,154.366258657],[133.969157737,153.149907040],[132.581644670,150.604962186],[130.955677531,147.957851789],[129.273881987,145.265563790],[127.718883703,142.585086128],[126.473308347,139.973406746],[126.023624788,138.711175140],[125.719781585,137.487513582],[125.573069854,135.990349556],[125.645754257,134.671293100],[125.899185454,133.520782837],[126.294714104,132.529257384],[126.793690868,131.687155364],[127.357466403,130.984915395],[128.524816430,129.961776095],[131.261581721,129.961776095],[131.105177695,130.742014676],[131.158937500,131.706191583],[131.477605024,132.773603942],[132.012610761,133.896919450],[133.412534826,136.212610020],[134.720505601,138.455963510],[135.140569725,139.488857667],[135.298318991,140.429680135],[135.456067099,139.488857667],[135.876128412,138.455963510],[137.184092572,136.212610020],[138.584015314,133.896919450],[139.119024855,132.773603942],[139.437700482,131.706191583],[139.508545314,130.748576342],[139.369205149,129.961776095],[142.105998662,129.961776095],[143.262672751,130.992297270],[143.821666936,131.694844817],[144.315082488,132.535819051],[144.703406866,133.525396508],[144.947127524,134.673753725],[145.006731919,135.991067238],[144.842707508,137.487513582],[144.545014903,138.711367376],[144.100695633,139.974124428],[142.863704904,142.587546753],[141.314790934,145.270177461],[139.637009340,147.964413455],[138.013415733,150.612651639],[136.627065730,153.157288915],[136.080061960,154.372756245],[135.661014945,155.540722186],[135.392806638,156.653986353],[135.298318991,157.705348357] ];
points_svg_1_4 = [ [35.030437673,125.377358494],[35.030437673,96.094546291],[20.115162796,96.094546291],[18.215918560,95.904400178],[17.312128539,95.673738504],[15.620217629,94.964641142],[14.841698718,94.495566743],[13.443538928,93.351769730],[12.289223103,91.964979393],[11.417159151,90.372640887],[11.098974099,89.511092681],[10.722302784,87.680641586],[10.673418499,86.721099986],[10.673418499,68.179382924],[12.766586605,65.571614413],[17.435847366,59.069726192],[18.758325906,57.501000645],[20.104247852,56.185785609],[21.519958942,55.138223063],[23.051804917,54.372454985],[24.746131513,53.902623353],[26.649284471,53.742870148],[28.553157702,53.902623353],[30.249568168,54.372454985],[31.784682684,55.138223063],[33.204668063,56.185785609],[34.555691120,57.501000645],[35.883918670,59.069726192],[38.656654505,62.911140905],[41.748026721,67.133709943],[43.479360367,69.144047657],[45.400262677,70.975887538],[46.447224809,71.798808301],[47.560086380,72.545829617],[48.745016480,73.206526490],[50.008184202,73.770473923],[51.355758637,74.227246921],[52.793908874,74.566420485],[54.328804006,74.777569622],[55.966613123,74.850269333],[57.598061443,74.777764959],[59.127019153,74.567149743],[60.559624296,74.228770548],[61.902014915,73.772974236],[63.160329056,73.210107667],[64.340704761,72.550517703],[65.449280075,71.804551206],[66.492193041,70.982555038],[68.405584106,69.151861133],[70.129982307,67.141210881],[73.208217519,62.911140905],[75.980952913,59.069726192],[77.309205213,57.501000645],[78.660263934,56.185785609],[80.080291591,55.138223063],[81.615450700,54.372454985],[83.311903775,53.902623353],[85.215813331,53.742870148],[87.119744330,53.902623353],[88.816569751,54.372454985],[90.352882387,55.138223063],[91.775275034,56.185785609],[93.130340484,57.501000645],[94.464671530,59.069726192],[97.257501587,62.911140905],[100.321354049,67.133709943],[102.052429672,69.144047657],[103.977399565,70.975887538],[105.026921740,71.798808301],[106.142109736,72.545829617],[107.328694302,73.206526490],[108.592406191,73.770473923],[109.938976152,74.227246921],[111.374134937,74.566420485],[112.903613297,74.777569622],[114.533141983,74.850269333],[116.176916662,74.777764959],[117.716625632,74.567149743],[119.158514591,74.228770548],[120.508829233,73.772974236],[121.773815256,73.210107667],[122.959718355,72.550517703],[124.072784226,71.804551206],[125.119258567,70.982555038],[127.037415439,69.151861133],[128.764154541,67.141210881],[131.843241712,62.911140905],[134.645974682,59.069726192],[135.982780850,57.501000645],[137.338672737,56.185785609],[138.760244789,55.138223063],[140.294091454,54.372454985],[141.986807179,53.902623353],[143.884986412,53.742870148],[145.768759964,53.902623353],[147.455743050,54.372454985],[148.989638222,55.138223063],[150.414148032,56.185785609],[151.772975030,57.501000645],[153.109821767,59.069726192],[155.892384668,62.911140905],[157.778052416,65.571614413],[159.860654828,68.179382924],[159.860654828,86.721099986],[159.812153093,87.680641586],[159.438564134,89.511092681],[159.123093520,90.372640887],[158.258841556,91.964979393],[157.115563982,93.351769730],[155.731727245,94.495566743],[154.961619955,94.964641142],[153.289069063,95.673738504],[152.396242072,95.904400178],[150.521526530,96.094546291],[139.540344702,96.094546291],[139.540344702,125.377358494],[131.090667946,125.377358494],[131.090667946,96.094546291],[91.510215455,96.094546291],[91.510215455,125.377358494],[83.060538698,125.377358494],[83.060538698,96.094546291],[43.480170874,96.094546291],[43.480170874,125.377358494],[35.030437673,125.377358494],[35.030437673,125.377358494] ];
points_svg_1_5 = [ [55.966613123,68.453138469],[54.063399641,68.291232216],[52.368316006,67.816171757],[50.834153274,67.043944539],[49.413702503,65.990538008],[48.059754753,64.671939613],[46.725101080,63.104136800],[42.445483700,57.152512989],[40.866328353,55.039959021],[39.140727455,53.028733852],[37.222034306,51.200365524],[36.175701042,50.380230189],[35.063602201,49.636382081],[33.879906947,48.979012206],[32.618784440,48.418311569],[31.274403844,47.964471174],[29.840934320,47.627682029],[28.312545030,47.418135137],[26.683405137,47.346021506],[25.221457070,47.403360295],[23.841032789,47.570562348],[22.537904627,47.840406194],[21.307844913,48.205670362],[20.146625977,48.659133380],[19.050020152,49.193573778],[17.033737150,50.476500829],[15.225174551,51.996679746],[13.590510999,53.696338761],[12.095925137,55.517706104],[10.707595610,57.403010006],[10.707595610,20.731055866],[10.853832580,19.173224538],[11.289058045,17.720591538],[159.313454170,17.720591538],[159.724923580,19.173224538],[159.860654828,20.731055866],[159.860654828,57.403010006],[158.473063654,55.517706104],[156.980608845,53.696338761],[155.349279539,51.996679746],[153.545064872,50.476500829],[151.533953978,49.193573778],[150.440184051,48.659133380],[149.281935994,48.205670362],[148.054958448,47.840406194],[146.755000056,47.570562348],[145.377809459,47.403360295],[143.919135300,47.346021506],[142.274211882,47.417946002],[140.731318162,47.626975922],[139.284616522,47.962995916],[137.928269345,48.415890631],[136.656439014,48.975544718],[135.463287909,49.631842824],[134.342978414,50.374669599],[133.289672911,51.193909691],[131.360723409,53.021168422],[129.629738462,55.032696209],[128.050017126,57.147570242],[126.574858461,59.284867712],[123.772153713,63.104136800],[122.435353057,64.671939613],[121.079462714,65.990538008],[119.657889559,67.043944539],[118.124040468,67.816171757],[116.431322318,68.291232216],[114.533141983,68.453138469],[112.634290158,68.291232216],[110.940231782,67.816171757],[109.405416852,67.043944539],[107.984295363,65.990538008],[106.631317311,64.671939613],[105.300932690,63.104136800],[101.026205802,57.152512989],[99.436828608,55.039959021],[97.707645583,53.028733852],[95.788690166,51.200365524],[94.742433259,50.380230189],[93.629995793,49.636382081],[92.445131948,48.979012206],[91.181595904,48.418311569],[89.833141841,47.964471174],[88.393523938,47.627682029],[86.856496375,47.418135137],[85.215813331,47.346021506],[83.583585813,47.417946002],[82.052516728,47.626975922],[80.616775612,47.962995916],[79.270531997,48.415890631],[78.007955419,48.975544718],[76.823215412,49.631842824],[75.710481510,50.374669599],[74.663923247,51.193909691],[72.746011775,53.021168422],[71.022837272,55.032696209],[67.974124268,59.284867712],[65.164449073,63.104136800],[63.828502524,64.671939613],[62.476114438,65.990538008],[61.060508133,67.043944539],[59.534906932,67.816171757],[57.852534155,68.291232216],[55.966613123,68.453138469] ];
points_svg_1_6 = [ [56.171873342,48.303883691],[57.016474096,48.217889150],[57.804721577,47.971474433],[58.519275325,47.581992899],[59.142794879,47.066797905],[59.657939778,46.443242812],[60.047369562,45.728680978],[60.293743771,44.940465761],[60.379721943,44.095950520],[60.293743771,43.249805887],[60.047369562,42.457646174],[59.657939778,41.737605260],[59.142794879,41.107817024],[58.519275325,40.586415347],[57.804721577,40.191534108],[57.016474096,39.941307187],[56.171873342,39.853868462],[55.325795111,39.941307187],[54.533687579,40.191534108],[53.813686281,40.586415347],[53.183926750,41.107817024],[52.662544519,41.737605260],[52.267675122,42.457646174],[52.017454092,43.249805887],[51.930016964,44.095950520],[52.018174090,44.940465761],[52.270143684,45.728680978],[52.667173074,46.443242812],[53.190509583,47.066797905],[53.821400539,47.581992899],[54.541093267,47.971474433],[55.330835093,48.217889150],[56.171873342,48.303883691] ];
points_svg_1_7 = [ [114.191060433,48.303883691],[115.037130947,48.217889150],[115.829253251,47.971474433],[116.549285197,47.581992899],[117.179084636,47.066797905],[117.700509421,46.443242812],[118.095417403,45.728680978],[118.345666434,44.940465761],[118.433114366,44.095950520],[118.345666434,43.249805887],[118.095417403,42.457646174],[117.700509421,41.737605260],[117.179084636,41.107817024],[116.549285197,40.586415347],[115.829253251,40.191534108],[115.037130947,39.941307187],[114.191060433,39.853868462],[113.331386312,39.941307187],[112.536076716,40.191534108],[111.820622337,40.586415347],[111.200513868,41.107817024],[110.691242002,41.737605260],[110.308297431,42.457646174],[110.067170847,43.249805887],[109.983352943,44.095950520],[110.067170847,44.940465761],[110.308297431,45.728680978],[110.691242002,46.443242812],[111.200513868,47.066797905],[111.820622337,47.581992899],[112.536076716,47.971474433],[113.331386312,48.217889150],[114.191060433,48.303883691] ];
points_svg_1_8 = [ [30.822786628,34.962110873],[31.668847441,34.876127907],[32.460944168,34.629741302],[33.180939954,34.240294494],[33.810697942,33.725130920],[34.332081276,33.101594017],[34.726953098,32.387027222],[34.977176553,31.598773971],[35.064614784,30.754177702],[34.977176553,29.908207253],[34.726953098,29.116155578],[34.332081276,28.396169785],[33.810697942,27.766396984],[33.180939954,27.244984283],[32.460944168,26.850078790],[31.668847441,26.599827615],[30.822786628,26.512377866],[29.961613587,26.599827615],[29.162404970,26.850078790],[28.441452826,27.244984283],[27.815049203,27.766396984],[27.299486152,28.396169785],[26.911055721,29.116155578],[26.666049959,29.908207253],[26.580760917,30.754177702],[26.666049959,31.598773971],[26.911055721,32.387027222],[27.299486152,33.101594017],[27.815049203,33.725130920],[28.441452826,34.240294494],[29.162404970,34.629741302],[29.961613587,34.876127907],[30.822786628,34.962110873] ];
points_svg_1_9 = [ [85.249962220,34.962110873],[86.096023418,34.876127907],[86.888138722,34.629741302],[87.608165651,34.240294494],[88.237961728,33.725130920],[88.759384474,33.101594017],[89.154291408,32.387027222],[89.404540054,31.598773971],[89.491987931,30.754177702],[89.404540054,29.908207253],[89.154291408,29.116155578],[88.759384474,28.396169785],[88.237961728,27.766396984],[87.608165651,27.244984283],[86.888138722,26.850078790],[86.096023418,26.599827615],[85.249962220,26.512377866],[84.405352150,26.599827615],[83.617097669,26.850078790],[82.902538905,27.244984283],[82.279015988,27.766396984],[81.763869049,28.396169785],[81.374438218,29.116155578],[81.128063624,29.908207253],[81.042085397,30.754177702],[81.128782463,31.598773971],[81.376902812,32.387027222],[81.768490163,33.101594017],[82.285588238,33.725130920],[82.910240760,34.240294494],[83.624491450,34.629741302],[84.410384029,34.876127907],[85.249962220,34.962110873] ];
points_svg_1_10 = [ [143.782313969,34.962110873],[144.626924865,34.876127907],[145.415163968,34.629741302],[146.129696108,34.240294494],[146.753186117,33.725130920],[147.268298825,33.101594017],[147.657699065,32.387027222],[147.904051665,31.598773971],[147.990021459,30.754177702],[147.904051665,29.908207253],[147.657699065,29.116155578],[147.268298825,28.396169785],[146.753186117,27.766396984],[146.129696108,27.244984283],[145.415163968,26.850078790],[144.626924865,26.599827615],[143.782313969,26.512377866],[142.916135783,26.599827615],[142.114583068,26.850078790],[141.393333378,27.244984283],[140.768064266,27.766396984],[140.254453289,28.396169785],[139.868177999,29.116155578],[139.624915952,29.908207253],[139.540344702,30.754177702],[139.625633634,31.598773971],[139.870638624,32.387027222],[140.259066960,33.101594017],[140.774625933,33.725130920],[141.401022831,34.240294494],[142.121964943,34.629741302],[142.921159559,34.876127907],[143.782313969,34.962110873] ];
points_svg_1_11 = [ [2.634092848,11.323460674],[1.572960294,11.216318760],[0.584345071,10.909079093],[-0.310495868,10.423020787],[-1.090305566,9.779422956],[-1.733827069,8.999564713],[-2.219803420,8.104725173],[-2.526977665,7.116183449],[-2.634092848,6.055218655],[-2.634092848,-6.055218655],[-2.526977665,-7.116345507],[-2.219803420,-8.104963298],[-1.733827069,-8.999812760],[-1.090305566,-9.779634623],[-0.310495868,-10.423169615],[0.584345071,-10.909158468],[1.572960294,-11.216341911],[2.634092848,-11.323460674],[167.934101146,-11.323460674],[168.995245440,-11.216341911],[169.983874058,-10.909158468],[170.878729053,-10.423169615],[171.658552477,-9.779634623],[172.302086381,-8.999812760],[172.788072820,-8.104963298],[173.095253845,-7.116345507],[173.202371508,-6.055218655],[173.202371508,6.055218655],[173.095253845,7.116183449],[172.788072820,8.104725173],[172.302086381,8.999564713],[171.658552477,9.779422956],[170.878729053,10.423020787],[169.983874058,10.909079093],[168.995245440,11.216318760],[167.934101146,11.323460674],[2.634092848,11.323460674],[2.634092848,11.323460674] ];
module ribbon(points, thickness=width_svg) {
p = points;
union() {
for (i=[1:len(p)-1]) {
hull() {
translate(p[i-1]) circle(d=thickness, $fn=8);
translate(p[i]) circle(d=thickness, $fn=8);
}
}
}
}
module ribbon_svg_1() {
color(color_svg_1) linear_extrude(height=height_svg) {
ribbon(points_svg_1_1, thickness=width_svg);
ribbon(points_svg_1_2, thickness=width_svg);
ribbon(points_svg_1_3, thickness=width_svg);
ribbon(points_svg_1_4, thickness=width_svg);
ribbon(points_svg_1_5, thickness=width_svg);
ribbon(points_svg_1_6, thickness=width_svg);
ribbon(points_svg_1_7, thickness=width_svg);
ribbon(points_svg_1_8, thickness=width_svg);
ribbon(points_svg_1_9, thickness=width_svg);
ribbon(points_svg_1_10, thickness=width_svg);
ribbon(points_svg_1_11, thickness=width_svg);
}
}
module front() {
translate([10,20,thickness/2]) color("red") scale([.4,.4,1]) ribbon_svg_1();
color("red")
linear_extrude(height=textThickness+thickness) {
translate([width-10,height-5,0])
text(line1, font=font, size=textSize, halign="right", valign="top");
translate([width-10,height-textSpacing-5,0]) text(line2, font=font, size=textSize, halign="right", valign="top");
translate([width-10,height-5-2*textSpacing,0]) text(line3, font=font, size=textSize, halign="right", valign="top");
translate([width-10,height-5-3*textSpacing,0]) text(line4, font=font, size=textSize, halign="right", valign="top");
translate([width-10,height-5-4*textSpacing,0]) text(line5, font=font, size=textSize, halign="right", valign="top");
}
cube([width,height,thickness]);
}
front();