Ich arbeite mit openSCAD.
Ich habe vor kurzem eine kurze Starthilfe verfasst. Sie wendet sich ursprünglich nicht an Fortgeschrittene, ich kopiere sie trotzdem einfach mal unverändert hier rein.
so long
Editor: Notepad++
http://notepad-plus-plus.org
Der Editor ist auch für andere Programmierarbeiten die beste Wahl.
Syntax-Highlighting im Notepad++:
- Menü: Sprachen - Eigene Sprache definieren
- Knopf: Importieren
- dann das File Notepad-Plus-Plus-OpenSCAD-Language-Bluish.xml aus http://www.thingiverse.com/thing:26853 einlesen
- oben rechts im Fenster neben "Erw." die Dateiendung eintragen: scad
- Knopf: Speichern als
- Namen vergeben, z.B. openscad
openSCAD
http://www.openscad.org
Auf der Seite ist auch eine gute Dokumentation.
Wenn man mit notepad++ statt mit dem internen Editor arbeiten will, kann man openSCAD folgendermaßen einstellen:
- Menü: View - Hide Editor
- Menü: Design - Automatic Reload and Compile
Wenn man nun mit dem Editor ein File speichert, das in openSCAD schon geöffnet ist, dann wird immer sofort die neuste Version eingelesen und dargestellt.
Ein Fallstrick sollte bekannt sein: OpenSCAD ist eine Compilersprache, die die Variablen schon beim Compilieren auflöst und in den Code einbaut. Das bedeutet, man kann nicht mit Variablen arbeiten, deren Wert bei der Compilierung noch offen ist und erst bei der Programmausführung bestimmt wird. Es ist also z.B. nicht möglich, in einer if-Bedingung einen Variableninhalt zu ändern und diesen dann als Maß für ein Objekt zu benutzen, denn die if-Bedingung kann nicht schon bei der Compilierung ausgewertet werden.
Mit der Variablen $fn legt man die Auflösung für runde Gebilde fest. Wenn man bei hohen $fn mit Kugeln arbeitet, wird es fürchterlich langsam. Dann $fn heruntersetzen, z.B. 8 oder 16. Höher als 64 braucht man ohnehin in der Regel nicht gehen.
Ein Beispiel habe ich unten angehängt. Es ist ein Halter für einen Bohrfutterschlüssel, der bei mir im Keller an der Tischbohrmaschine seinen Einsatz tut. Um das Programm zu verstehen, kann man in einzelnen Zeilen ein "#" an den Anfang setzen. In der Darstellung wird dann das so gekennzeichnete Objekt farblich hervorgehoben.
$fn = 64;
d = 12.3;
w = 2;
l = d+2*w+14;
h = 6;
s = 7;
b = 12;
difference() {
cube([l, h, b]);
translate([l-b/2, -1, b/2]) rotate([-90, 0, 0]) cylinder(h=h+2, r=s/2);
}
cube([w, h+d, b]);
translate([d+w, 0, 0]) cube([w, h+d, b]);
translate([w, h+d, 0]) cylinder(h=b, r=w);
translate([d+w, h+d, 0]) cylinder(h=b, r=w);
difference() {
translate([w, h, 0]) cube([w, w, b]);
translate([2*w, h+w, -1]) cylinder(h=b+2, r=w);
}
difference() {
translate([d, h, 0]) cube([w, w, b]);
translate([d, h+w, -1]) cylinder(h=b+2, r=w);
}
Edit:
- Formatierung (Einrückungen)
- Referenz auf Syntax File