// 3D Usta kalemlik: 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 = "ÖĞRETMENİM"; satir2 = "İYİ Kİ VARSINIZ"; satir3 = ""; motif = "kalp"; // yok, yildiz, kalp, elmas, halka, cizgi, nokta zeminRenk = "#1b1b1b"; kabartmaRenk = "#f4f1ea"; 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); } // Kalemlik 84 x 84 x 100 mm: ön yüzde 0,8 mm kabartma yazı. İki renk için kabartma katmanında renk değiştirilmez: tek renk basılır. GENISLIK = 84; DERINLIK = 84; YUKSEKLIK = 100; KOSE = 6; DUVAR = 1.6; TABAN = 2.0; KABARTMA = 0.8; YAZI_Z = 58; module govde() { color(zeminRenk) difference() { linear_extrude(YUKSEKLIK) yuvarlak_dikdortgen(GENISLIK, DERINLIK, KOSE); translate([0, 0, TABAN]) linear_extrude(YUKSEKLIK) yuvarlak_dikdortgen(GENISLIK - 2 * DUVAR, DERINLIK - 2 * DUVAR, KOSE - DUVAR); } } module yazilar_2d() { translate([0, 7]) yazi(satir1, 9, 62); if (motif == "yok") translate([0, -2]) square([40, 0.8], center = true); else translate([0, -2.5]) motif2d(motif, 4.4); translate([0, -9]) yazi(satir2, 4.6, 62); } module kabartma() { color(kabartmaRenk) translate([0, -DERINLIK / 2 + 0.01, YAZI_Z]) rotate([90, 0, 0]) linear_extrude(KABARTMA + 0.01) yazilar_2d(); } module tum() { govde(); kabartma(); } if (parca == "govde") govde(); else tum();