// 3D Usta madalyon: 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 = "Aras"; satir2 = "Demir"; satir3 = ""; motif = "yok"; // yok, yildiz, kalp, elmas, halka, cizgi, nokta zeminRenk = "#8a5a2b"; kabartmaRenk = "#c8964f"; parca = "montaj"; // tum, on, arka // ------------------------------------- // 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); } // İki isimli madalyon Ø32: iki yarım ayrı basılır (her biri yazılı yüzü yukarıda, destek yok) ve sırt sırta yapıştırılır; // bir yüzde satir1, öbür yüzde satir2 okunur. Kenarda burgu (halat) deseni, üstte zincir halkası. Tek renk (ipek bronz PLA). CAP = 32; ZEMIN = 1.4; KABARTMA = 0.6; KENAR = 1.2; BURGU_IC = 11.2; BURGU_DIS = 14.2; HALKA = [7, 3.2]; YAZI_FONT = "Liberation Serif:style=Bold Italic"; module isim(t) { if (len(t) > 0) resize([min(19, len(t) * 3.9), 0], auto = [true, true]) text(t, size = 6.2, font = YAZI_FONT, halign = "center", valign = "center"); } module burgu() { r = (BURGU_IC + BURGU_DIS) / 2; for (i = [0 : 39]) rotate(i * 9) translate([r, 0]) rotate(40) scale([1, 0.42]) circle(d = BURGU_DIS - BURGU_IC + 0.9, $fn = 24); } module halka_2d() { // halka gövdeye 1,5 mm gömülü: tek parça olsun translate([0, CAP / 2 + HALKA[0] / 2 - 1.5]) difference() { circle(d = HALKA[0]); circle(d = HALKA[1]); } } module zemin() { color(zeminRenk) linear_extrude(ZEMIN) union() { circle(d = CAP); halka_2d(); } } module kabartma_2d(t) { difference() { circle(d = CAP - 0.04); circle(d = CAP - 2 * KENAR); } intersection() { burgu(); difference() { circle(r = BURGU_DIS); circle(r = BURGU_IC); } } difference() { circle(r = BURGU_IC - 0.6); circle(r = BURGU_IC - 1.2); } translate([0, 0.6]) isim(t); if (motif == "yok") translate([0, -5.4]) square([10, 0.6], center = true); else translate([0, -6.2]) motif2d(motif, 2.6); } module yarim(t) { zemin(); color(kabartmaRenk) translate([0, 0, ZEMIN - 0.01]) linear_extrude(KABARTMA + 0.01) kabartma_2d(t); } module on() { yarim(satir1); } module arka() { yarim(satir2); } // Görünüm: iki yarım yan yana (iki yüz birden görünsün) module montaj() { translate([-CAP / 2 - 3, 0]) on(); translate([CAP / 2 + 3, 0]) arka(); } if (parca == "on") on(); else if (parca == "arka") arka(); else montaj();