Warum ein solches Gittermuster gedruckt wird, kann ich dir nicht sagen, der Programm Code gibt es nicht her. Das ist also ein Thema des Slicer und keins von OpenSCAD.
Ich möchte kurz ein anderes Thema einschieben, anhand deines Beispiels, was nur indirekt mit OpenSCAD zu tun hat.
Im Programmieren, gibt es einige Paradigmen an die man sich halten sollte, soweit es geht.
Hier mal drei Kernpunkte:
1.) Halte deinen Code es so einfach wie möglich
2.) Zerlege deine Probleme in kleine Pakete, und lagere Problemstellungen soweit es geht aus in einzelne Sub Teile und einzelne Module.
3.) Habe keinen Code, der nicht benutzt wird. Der vergammelt, wird unwartbar und verwirrt. Das gilt auch für Variablen.
Ich habe in meiner Rolle als Chefentwickler habe ich viele Jahre Erfahrung im analysieren und prüfen der Qualität von fremden Code. Ich kann dir aus meiner Erfahrung sagen, dass es oft schwerer ist, fremden Code zu verstehen und zu beurteilen als wenn man es selbst geschrieben hat.
Nehmen wir das Beispiel von dir, da ist lustig einiges zusammen kopiert worden, was so keinen Sinn macht.
Der erste Abschnitt, wenn man ihn sich mal genauer ansieht, erzeugt ein Objekt, welches innerhalb des anderen Objektes entsteht. Man kann das auch weg lassen und es kommt das gleiche raus. Mag sogar sein, dass dein Slicer deswegen durcheinander kommt.
Code: Alles auswählen
difference() {
linear_extrude(height=h) circle(d=d,$fn=6); //outer part
translate([0,10,-eps]) linear_extrude(height=h-wt) circle(d=(w-2*wt)/cos(30),$fn=6); //inner part
}
Wie erkennt man dass, nun durch spielen mit den Parametern, * # !
Indem ich die abwechselnd mal vor die difference setze und mir anschaue, was passiert da eigentlich.
Das nächste, wenn ich schon variablen definiere, sollte man sie auch benutzen. Der relevante Code nutzt bis auf eine keine der Variablen.
cos(30) sieht echt cool aus, und es macht sicherlich sinn einen Cosinus in einer Formel zu berechnen, wenn der Eingangsparameter sich ändert, wenn das aber eine Konstante ist, bin ich ein Freund von schreib doch die Zahl, außer du bist Mathematiker und hast das im Kopf.
Ich möchte dir also raten, fang einfach an ohne fremden Code, schau dir die Befehle an und bau das Zeug Schritt für Schritt zusammen, sonst kommst du nie über das Level raus, an fremden Sachen zu drehen und vollkommen überrascht zu staunen, was da gerade passiert.
In dem Fall deines Beispiels folgender Ablauf, und mache es wirklich als einzelne Schritte, es macht keinen Sinn, zu Punkt 4 zu springen, dass macht kein professioneller Entwickler so. Wenn man eine Aufgabe hat, die komplexer ist als man es in einem Stück programmieren kann, wird das Ding in kleine Aufgaben Pakete zerlegt, die werden getestet, abgeschlossen und dann kommt erst der nächste Schritt. Was zu komplex ist, ist für dich sicherlich früher erreicht als für mich aber für uns beide gleichen die gleichen Regeln. Wenn es zu kompliziert wird, arbeite ich in kleinen Schritten, teste die und erst dann geht es weiter.
1.) Ich will ein Hexagon, deswegen $fn=6, weil der Kreis aus 6 Segmenten besteht, Spiele mal mit der fn Zahl, damit du den Effekt siehst.
2.) Ich will ein Fuß unten drunter. Was bedeutet das, es muss ein weiteres Hexagon her, das kleiner ist und er muss verschoben werden, da er sonst einfach im großen erzeugt wird. Also muss er in der Z-Achse um seine eigene Hoehe nach unten. Wenn er also 3mm unten raus stehen soll muss der Cylinder 3 hoch sein und 3 nach unten.
Code: Alles auswählen
cylinder(d=52.1, h=10, $fn=6);
//Schau ihn dir mit dem # Symbol an, damit du siehst ob das passt, spiele mit der -3 um zu sehen was passiert
#translate([0,0,-3]) cylinder(d=34.0, h=3.00, $fn=6);
3.) Wir wollen oben ein Loch reinschneiden, was bedeutet das, wir erzeugen ein neues Hexagon von der Größe des Lochs und ziehen es vom ersten ab indem wir es an die Stelle absenken an die es muss. das geht aber nur, wenn wir die beiden Befehle aus Abschnitt 2 in einem Union zusammenfassen. Merke : Ich hatte gesagt, Difference zieht alles ab vom ersten Objekt. Lasse also mal das union weg um zu sehen was dann passiert. Versuch dir dann zu erklären, warum das Ergebnis, dann eben aussieht wie es aussieht.
Code: Alles auswählen
difference() {
union() {
cylinder(d=52.1, h=10, $fn=6);
//Schau ihn dir mit dem # Symbol an, damit du siehst ob das passt, spiele mit der -3 um zu sehen was passiert
translate([0,0,-3]) cylinder(d=34.0, h=3.00, $fn=6);
}
translate([0,0,6.01]) cylinder(d=33.8, h=4.00, $fn=6);
}
4.) du willst das ganze Teil auf den Kopf drehen, es muss also in der Y Achse um 180 Grad rotiert werden.
Code: Alles auswählen
rotate([0,180,0]) difference() {
union() {
cylinder(d=52.1, h=10, $fn=6);
//Schau ihn dir mit dem # Symbol an, damit du siehst ob das passt, spiele mit der -3 um zu sehen was passiert
translate([0,0,-3]) cylinder(d=34.0, h=3.00, $fn=6);
}
translate([0,0,6.01]) cylinder(d=33.8, h=4.00, $fn=6);
}