// Zahnriemenscheibe für Fischertechnik // Version 2 11.11.2018 // Design von Martin's Bastelstube $fs = 0.1; $fa = 5; // Naturkonstanten für Fischertechnik fitec_axe_adurm = 4.0; fitec_axe_idurm = 4.1; fitec_rad_dicke = 5.6; fitec_nabe_adurm = 25.4; fitec_nabe_idurm1 = 25.8; fitec_nabe_dicke1 = 1.3; fitec_nabe_faktor = 0.87; fitec_nabe_dicke2 = 0.8; fitec_nabe_idurm3 = 22.5; fitec_nabe_dicke3 = 0.3; fitec_nabe_idurm4 = 20.2; fitec_aussp_dicke = 3.0; fitec_izahn_bohr = 1.7; // Eigenschaften der inneren Scheibe rad1_adurm = 40; rad1_dicke = fitec_rad_dicke; rad1_dhalb = (rad1_dicke / 2); // Eigenschaften der äußeren Scheibe // Außendurchmesser ergibt sich aus Anzahl + Größe der Zähne rad2_idurm1 = (rad1_adurm - 0.1); rad2_idurm2 = (rad1_adurm - 4); rad2_dicke = 7.5; rad2_dhalb = (rad2_dicke / 2); rad2_offset = ((rad2_dicke - rad1_dicke) / 2); // Eigenschaften des Zahnkranzes // Nicht vergessen, die Beschriftung entsprechend anzupassen! rand_hohe = 1.0; rand_breite = 1.0; rand_trapez = 0.9; zahn_abst = 2.0; zahn_num = 75; zahn_wnkl = (360 / zahn_num); zahn_wnkl2 = (180 / zahn_num); zahn_wnkl4 = ( 90 / zahn_num); zahn_hohe = 0.8; zahn_breite = (rad2_dicke - 2 * rand_breite); zahn_trapez = 0.04 * zahn_breite; riem_dicke = 0.65; wirk_umfang = zahn_num * zahn_abst; wirk_durm = wirk_umfang / 3.1412; zahn_durm1 = wirk_durm - (riem_dicke / 2); zahn_durm2 = zahn_durm1 - zahn_hohe; rad2_adurm = zahn_durm1 + rand_hohe; // Numerische Darstellung in Einzelziffern für Beschriftung text_num100 = ""; text_num10 = "7"; text_num1 = "5"; text_zahn10 = ""; text_zahn1 = "2"; text_zahn0 = "0"; // Winkel-Offset für Textausgabe text_wofs_info = 60; text_wofs_jnfo = 100; text_wofs_bastu = 260; text_wofs_1 = 0; text_wofs_2 = (text_num100 == "" ? text_wofs_1 + 32 : text_wofs_1 + 46); text_wofs_3 = (text_num10 == "" ? text_wofs_2 : text_wofs_2 + 14); text_wofs_4 = (text_zahn10 == "" ? text_wofs_3 + 45 : text_wofs_3 + 59); // Beschriftung ein-oder ausschalten text_info_oben = 1; text_info_unten = 1; text_bastu_oben = 1; text_bastu_unten = 1; // Eigenschaften der Beschriftung text_font_info = "Tahoma"; text_font_bastu = "Cooper Black"; text_size_raw = ((rad2_adurm - rad2_idurm1) / 2) - 2; text_size_info = (text_size_raw > 4 ? 4 : text_size_raw); text_size_bastu = (text_size_raw > 4 ? 4 : text_size_raw); text_durm_info = rad2_idurm1 + 2; text_durm_bastu = rad2_idurm1 + 2; text_dicke = 0.2; text_offs_oben = rad2_offset + rad2_dhalb - text_dicke; text_offs_unten = rad2_offset - rad2_dhalb + text_dicke; $text_winkl = 0; text_wfak_info = 0.16 * text_size_info; text_wfak_bastu = 0.16 * text_size_bastu; // Unterfunktionen für Erstellung von Buchstaben als 3D-Objekte module buchst_info_oben(buchst) { // Erstelle Buchstaben als 3D-objekt linear_extrude(height = text_dicke + 0.01) { text(buchst, size = text_size_info, font = text_font_info, halign = "center", valign = "bottom", $fn = 16); } } module buchst_info_unten(buchst) { // Erstelle Buchstaben als 3D-objekt // Gedreht für Verwendung auf Unterseite rotate ([180, 0, 180]) linear_extrude(height = text_dicke + 0.01) { text(buchst, size = text_size_info, font = text_font_info, halign = "center", valign = "bottom", $fn = 16); } } module buchst_bastu_oben(buchst) { // Erstelle Buchstaben als 3D-objekt linear_extrude(height = text_dicke + 0.01) { text(buchst, size = text_size_bastu, font = text_font_bastu, halign = "center", valign = "bottom", $fn = 16); } } module buchst_bastu_unten(buchst) { // Erstelle Buchstaben als 3D-objekt // Gedreht für Verwendung auf Unterseite rotate ([180, 0, 180]) linear_extrude(height = text_dicke + 0.01) { text(buchst, size = text_size_bastu, font = text_font_bastu, halign = "center", valign = "bottom", $fn = 16); } } module rotibuch_info_oben(buchst, winkl) { // Rotiere Buchstaben an Winkelposition rotate (a = text_wofs_info - winkl * text_wfak_info, v = [0, 0, 1]) translate ([0, text_durm_info / 2, text_offs_oben]) buchst_info_oben (buchst); } module rotibuch_bastu_oben(buchst, winkl) { // Rotiere Buchstaben an Winkelposition rotate (a = text_wofs_bastu - winkl * text_wfak_bastu, v = [0, 0, 1]) translate ([0, text_durm_bastu / 2, text_offs_oben]) buchst_bastu_oben (buchst); } module rotibuch_info_unten(buchst, winkl) { // Rotiere Buchstaben an Winkelposition rotate (a = text_wofs_jnfo + winkl * text_wfak_info, v = [0, 0, 1]) translate ([0, text_durm_info / 2, text_offs_unten]) buchst_info_unten (buchst); } module rotibuch_bastu_unten(buchst, winkl) { // Rotiere Buchstaben an Winkelposition rotate (a = text_wofs_bastu + winkl * text_wfak_bastu, v = [0, 0, 1]) translate ([0, text_durm_bastu / 2, text_offs_unten]) buchst_bastu_unten (buchst); } // Radnabe mit Aufnahme für // Fischertechnik-Verschraubung difference () { translate ([0, 0, -rad1_dhalb]) // Radscheibe linear_extrude(height = rad1_dicke) circle (rad1_adurm / 2, 0, 0); translate ([0, 0, -rad1_dhalb - 0.01]) // Mittleres Loch linear_extrude(height = rad1_dicke + 0.02) circle (fitec_nabe_idurm4 / 2, 0, 0); translate ([0, 0, -rad1_dhalb - 0.01]) // Verjüngung unten linear_extrude(height = fitec_nabe_dicke1 + 0.01) circle (fitec_nabe_idurm1 / 2, 0, 0); translate ([0, 0, -rad1_dhalb + fitec_nabe_dicke1 - 0.01]) linear_extrude(height = fitec_nabe_dicke2 + 0.01, scale = fitec_nabe_faktor) circle (fitec_nabe_idurm1 / 2, 0, 0); translate ([0, 0, -rad1_dhalb + fitec_nabe_dicke1 + fitec_nabe_dicke2 - 0.01]) linear_extrude(height = fitec_nabe_dicke3 + 0.01) circle (fitec_nabe_idurm3 / 2, 0, 0); translate ([0, 0, rad1_dhalb - fitec_nabe_dicke1]) // Verjüngung oben linear_extrude(height = fitec_nabe_dicke1 + 0.01) circle (fitec_nabe_idurm1 / 2, 0, 0); translate ([0, 0, rad1_dhalb - fitec_nabe_dicke1 + 0.01]) rotate ([180, 0, 0]) linear_extrude(height = fitec_nabe_dicke2 + 0.01, scale = fitec_nabe_faktor) circle (fitec_nabe_idurm1 / 2, 0, 0); translate ([0, 0, rad1_dhalb - fitec_nabe_dicke1 - fitec_nabe_dicke2 - fitec_nabe_dicke3 + 0.01]) linear_extrude(height = fitec_nabe_dicke3 + 0.01) circle (fitec_nabe_idurm3 / 2, 0, 0); translate ([- fitec_nabe_idurm1 / 2 + 0.1, // Aussparung X fitec_aussp_dicke / 2, - rad1_dhalb - 0.01]) rotate ([90, 0, 0]) linear_extrude(height = fitec_aussp_dicke) square ([fitec_nabe_idurm1 - 0.2, rad1_dicke + 0.02], 0, 0); translate ([- fitec_aussp_dicke / 2, // Aussparung Y - fitec_nabe_idurm1 / 2 + 0.1, - rad1_dhalb - 0.01]) rotate ([0, 0, 90]) rotate ([90, 0, 0]) linear_extrude(height = fitec_aussp_dicke) square ([fitec_nabe_idurm1 - 0.2, rad1_dicke + 0.02], 0, 0); for (wi = [0 : 90 : 270]) { // Lochreihe innen for (bo = [0 : 5]) { bowi = 15 * bo; rotate ([0, 0, wi + bowi]) translate ([fitec_nabe_idurm4 / 2, 0, -rad1_dhalb - 0.01]) // Kleines Loch linear_extrude(height = rad1_dicke + 0.02) circle (fitec_izahn_bohr / 2, 0, 0); } rotate ([0, 0, wi + 10,5]) translate ([fitec_nabe_idurm4 / 2 - fitec_izahn_bohr / 2 - 0.04, -fitec_izahn_bohr / 2, -rad1_dhalb - 0.01]) // Abschluss linear_extrude(height = rad1_dicke + 0.02) square (fitec_izahn_bohr, 0, 0); rotate ([0, 0, wi - 10,5]) translate ([fitec_nabe_idurm4 / 2 - fitec_izahn_bohr / 2 - 0.04, -fitec_izahn_bohr / 2, -rad1_dhalb - 0.01]) linear_extrude(height = rad1_dicke + 0.02) square (fitec_izahn_bohr, 0, 0); } } // Zahnriemenscheibe difference () { translate ([0, 0, rad2_offset - rad2_dhalb]) // Riemenscheibe linear_extrude(height = rad2_dicke) circle (rad2_adurm / 2, 0, 0); translate ([0, 0, rad2_offset - rad2_dhalb - 0.01]) // Mittleres Loch für Radnabe linear_extrude(height = rad2_dicke + 0.02) circle (fitec_nabe_idurm1 / 2, 0, 0); translate ([0, 0, rad2_offset - rad2_dhalb - 0.01]) // Trapezförmiger Übergang unten linear_extrude(height = rad2_dhalb + 0.01, scale = 0.7) circle (rad2_idurm1 / 2, 0, 0); translate ([0, 0, rad2_offset + rad2_dhalb + 0.01]) // Trapezförmiger Übergang oben rotate ([180, 0, 0]) linear_extrude(height = rad2_dhalb + 0.01, scale = 0.7) circle (rad2_idurm1 / 2, 0, 0); difference () { // Aussparung für Zahnkranz translate ([0, 0, rad2_offset - (rad2_dhalb - rand_breite)]) linear_extrude(height = (zahn_breite)) circle ((rad2_adurm / 2 + 0.01), 0, 0); translate ([0, 0, rad2_offset - (rad2_dhalb - rand_breite)]) linear_extrude(height = (zahn_breite)) circle (zahn_durm2 / 2, 0, 0); translate ([0, 0, rad2_offset - (rad2_dhalb - rand_breite)]) // Schräger Rand linear_extrude(height = rand_breite, scale = rand_trapez) circle (rad2_adurm / 2, 0, 0); translate ([0, 0, rad2_offset + (rad2_dhalb - rand_breite)]) rotate ([180, 0, 0]) linear_extrude(height = rand_breite, scale = rand_trapez) circle (rad2_adurm / 2, 0, 0); } if (text_info_oben > 0) { union () { // Beschriftung oben, Teil 1 rotibuch_info_oben ("Z", text_wofs_1); rotibuch_info_oben ("=", text_wofs_1 + 16); if (text_num100 != "") rotibuch_info_oben (text_num100, text_wofs_1 + 32); if (text_num10 != "") rotibuch_info_oben (text_num10, text_wofs_2); rotibuch_info_oben (text_num1, text_wofs_3); rotibuch_info_oben ("@", text_wofs_3 + 23); if (text_zahn10 != "") rotibuch_info_oben (text_zahn10, text_wofs_3 + 45); rotibuch_info_oben (text_zahn1, text_wofs_4); rotibuch_info_oben (".", text_wofs_4 + 9); rotibuch_info_oben (text_zahn0, text_wofs_4 + 18); rotibuch_info_oben ("m", text_wofs_4 + 35); rotibuch_info_oben ("m", text_wofs_4 + 54); } } if (text_bastu_oben > 0) { union () { // Beschriftung oben, Teil 2 rotibuch_bastu_oben ("M", 1); rotibuch_bastu_oben ("a", 19); rotibuch_bastu_oben ("r", 34); rotibuch_bastu_oben ("t", 47); rotibuch_bastu_oben ("i", 59); rotibuch_bastu_oben ("n", 74); rotibuch_bastu_oben ("'", 84); rotibuch_bastu_oben ("s", 94); rotibuch_bastu_oben ("B", 122); rotibuch_bastu_oben ("a", 138); rotibuch_bastu_oben ("s", 151); rotibuch_bastu_oben ("t", 163); rotibuch_bastu_oben ("e", 175); rotibuch_bastu_oben ("l", 186); rotibuch_bastu_oben ("s", 198); rotibuch_bastu_oben ("t", 210); rotibuch_bastu_oben ("u", 224); rotibuch_bastu_oben ("b", 240); rotibuch_bastu_oben ("e", 254); } } if (text_info_unten > 0) { union () { // Beschriftung unten, Teil 1 rotibuch_info_unten ("Z", text_wofs_1); rotibuch_info_unten ("=", text_wofs_1 + 16); if (text_num100 != "") rotibuch_info_unten (text_num100, text_wofs_1 + 32); if (text_num10 != "") rotibuch_info_unten (text_num10, text_wofs_2); rotibuch_info_unten (text_num1, text_wofs_3); rotibuch_info_unten ("@", text_wofs_3 + 23); if (text_zahn10 != "") rotibuch_info_unten (text_zahn10, text_wofs_3 + 45); rotibuch_info_unten (text_zahn1, text_wofs_4); rotibuch_info_unten (".", text_wofs_4 + 8); rotibuch_info_unten (text_zahn0, text_wofs_4 + 16); rotibuch_info_unten ("m", text_wofs_4 + 33); rotibuch_info_unten ("m", text_wofs_4 + 52); } } if (text_bastu_unten > 0) { union () { // Beschriftung unten, Teil 2 rotibuch_bastu_unten ("M", 1); rotibuch_bastu_unten ("a", 19); rotibuch_bastu_unten ("r", 34); rotibuch_bastu_unten ("t", 47); rotibuch_bastu_unten ("i", 59); rotibuch_bastu_unten ("n", 74); rotibuch_bastu_unten ("'", 84); rotibuch_bastu_unten ("s", 94); rotibuch_bastu_unten ("B", 122); rotibuch_bastu_unten ("a", 138); rotibuch_bastu_unten ("s", 151); rotibuch_bastu_unten ("t", 163); rotibuch_bastu_unten ("e", 175); rotibuch_bastu_unten ("l", 186); rotibuch_bastu_unten ("s", 198); rotibuch_bastu_unten ("t", 210); rotibuch_bastu_unten ("u", 224); rotibuch_bastu_unten ("b", 240); rotibuch_bastu_unten ("e", 254); } } } // Zähne for (z = [0:(zahn_num - 1)]) { zax = -sin(zahn_trapez) * zahn_durm2 / 2; zay = zahn_durm2 / 2; zbx = sin(zahn_trapez) * zahn_durm1 / 2; zby = zahn_durm1 / 2; zcx = sin(zahn_wnkl4) * zahn_durm1 / 2; zcy = cos(zahn_wnkl4) * zahn_durm1 / 2; zdx = sin(zahn_wnkl2 - zahn_trapez) * zahn_durm1 / 2; zdy = cos(zahn_wnkl2 - zahn_trapez) * zahn_durm1 / 2; zex = sin(zahn_wnkl2 + zahn_trapez) * zahn_durm2 / 2; zey = cos(zahn_wnkl2 + zahn_trapez) * zahn_durm2 / 2; zw = zahn_wnkl * z; zv = zw + zahn_wnkl2; rotate (a = zw, v = [0, 0, 1]) translate ([0, 0, rad2_offset - (rad2_dhalb - 1)]) linear_extrude(height = zahn_breite) polygon(points=[[zax,zay],[zbx,zby], [zcx,zcy],[zdx,zdy],[zex,zey]]); }