// 3D Usta altlik: parametreli tasarım (CC BY 4.0, https://3dusta.com) // Üstteki değerleri değiştir, F6 ile hesaplat, Dosya > Dışa aktar > STL. // ---- Değiştirebileceğin değerler ---- satir1 = "TÜRK KAHVESİ"; satir2 = "5 ARALIK"; satir3 = "KIRK YIL HATIRI"; motif = "nokta"; // yok, yildiz, kalp, elmas, halka, cizgi, nokta zeminRenk = "#3b2416"; kabartmaRenk = "#efe3cf"; parca = "tum"; // tum // ------------------------------------- // 3D Usta ortak kütüphane (CC BY 4.0, https://3dusta.com) // Yazı yazı tipi OpenSCAD ile birlikte gelen Liberation Sans'tır. FONT = "Liberation Sans:style=Bold"; $fn = 96; // Yazı en fazla `en` mm genişliğe sığdırılır: uzun metin kenara taşmaz module yazi(t, boy, en = 1000) { if (len(t) > 0) resize([min(en, len(t) * boy * 0.72), 0], auto = [true, true]) text(t, size = boy, font = FONT, halign = "center", valign = "center"); } module yuvarlak_dikdortgen(w, d, r) { offset(r = r) square([w - 2 * r, d - 2 * r], center = true); } module yildiz(ro, ri, n = 5) { polygon([for (i = [0 : 2 * n - 1]) let(r = (i % 2 == 0) ? ro : ri, a = 90 + i * 180 / n) [r * cos(a), r * sin(a)]]); } module kalp(s) { a = s / 1.707; union() { // elmasın ucu iki dairenin kesişimine tam oturursa tek noktada sıkışan (kapalı olmayan) gövde çıkar: 0,02 a aşağıda translate([0, -a * 0.02]) rotate(45) square(a, center = true); translate([-a * 0.3535, a * 0.3535]) circle(d = a); translate([a * 0.3535, a * 0.3535]) circle(d = a); } } // Düz motifler: telifsiz, jenerik şekiller (karakter ya da logo yok) module motif2d(m, s) { if (m == "yildiz") yildiz(s / 2, s / 4.2); else if (m == "kalp") translate([0, -s * 0.12]) kalp(s); else if (m == "elmas") rotate(45) square(s * 0.7, center = true); else if (m == "halka") difference() { circle(d = s); circle(d = s * 0.62); } else if (m == "cizgi") square([s * 1.8, s * 0.14], center = true); else if (m == "nokta") for (x = [-1, 0, 1]) translate([x * s * 0.6, 0]) circle(d = s * 0.32); } // Bardak altlığı Ø100: iki renk (koyu zemin + açık kabartma). Zemin 3 mm, kabartma 0,8 mm; altında keçe ya da silikon // ayak için 4 adet Ø10 x 0,6 mm yuva. ZEMIN = 3.0; KABARTMA = 0.8; CAP = 100; KENAR = 3.0; AYAK = [10, 0.6]; module zemin() { color(zeminRenk) difference() { cylinder(h = ZEMIN, r = CAP / 2); for (a = [45 : 90 : 315]) rotate(a) translate([CAP / 2 - 13, 0, -0.01]) cylinder(h = AYAK[1] + 0.01, d = AYAK[0]); } } module kabartma(ek = 0) { r = CAP / 2; color(kabartmaRenk) linear_extrude(KABARTMA + ek) { difference() { circle(r = r - 0.02); circle(r = r - KENAR); } translate([0, 20]) yazi(satir1, 9, 66); if (motif == "yok") translate([-16, 6.6]) square([32, 1.2]); else translate([0, 7.2]) motif2d(motif, 8); translate([0, -9]) yazi(satir2, 13, 64); translate([0, -27]) yazi(satir3, 6.5, 52); } } module tum() { zemin(); translate([0, 0, ZEMIN - 0.01]) kabartma(0.01); } if (parca == "zemin") zemin(); else if (parca == "kabartma") kabartma(); else tum();