RSS
Twitter
Google+
http://web2-unterricht.ch/2018/02/3d-objekte-programmieren-mit-openscad/
Facebook

Der Einstieg ins Zeichnen eigener 3D-Objekte kann eine Mühsame Sache sein. Viele CAD-Programme bieten eine sehr unübersichtliche Vielfalt an Features, die Einsteigerinnen und Anfänger davon abhalten können, sich in die Materie zu vertiefen. Einen ganz anderen Ansatz verfolg OpenSCAD: 3D-Objekte werden nicht mit der Maus gezeichnet und in einer grafischen Oberfläche platziert, sondern mit einer auch für Anfänger sehr einfachen Skriptsprache erzeugt.  Der Befehl sphere(d=10); erzeugt eine Kugel mit 10 mm Durchmesser. So einfach kann 3D-Zeichnen sein.

 

OpenSCAD verfolgt einen ganz anderen Ansatz als CAD-Probgramme. Der Buchstabe „S“ im Namen deutet es an, dass OpenSCAD ein skriptbasiertes CAD-Programm ist. Für sämtliche Operationen zur Erzeugung und Manipulation (Verschieben, Drehen, Skalieren etc.) eines Objekts gibt es  Skript-Befehle. Auf den ersten Blick scheint dies komplizierter, weil wir uns sehr gwöhnt sind, grafische Objekte mit der Maus oder dem Stift zu manipulieren. Wer aber einmal versucht hat ein grösseres, mit einem CAD-Programm selbst gezeichnetes 3D-Objekt – auch nur geringfügig – abzuändern, weiss, dass die Manipulation mit der Maus sehr mühsam sein kann.

OpenSCAD schafft hier Abhilfe. Möchte man in den 3D-Druck einsteigen und selber Objekte zeichnen, beginnt man ja meist mit einfachen Objekten von denen man die Position und auch die Masse sehr genau kennt. Das ist ideal für den Einstieg in OpenSCAD. Denn die Masse und die Position sind sehr einfach in ein Skript umzusetzen. Und OpenSCAD verfügt über eine sehr aufgeräumte grafische Benutzeroberfläche.

 

 

Grundidee

Jedes Objekt, das mit dem Skript erzeugt wird standardmässig im Ursprung des Koordinatensystems platziert. Als Basis-Objekte stehen Kugel, Quader, Zylinder, Pyramide, Kegel und Polyeder zur Auswahl.

So erzeugt etwa der Befehl cube([3,6,8]); einen Quader, der in x-Richtung die Breite 3 mm, in y-Richtung die Länge 6 mm und in z-Richtung die Höhe 8 mm hat (siehe Bild).

Möchte man ein Objekt verschieben oder drehen oder beides, setzt man im Skript einen Befehl vor das Objekt und gibt die entsprechenden Daten ein. So bewirkt etwa der Befehl rotate([45,30,0]); eine Rotation um 45° um die x-Achse und eine Rotation von 30° um die y-Achse.

Um den Körper auch noch zu verschieben, setzt man einen Befehl translate([5,7,0]); davor, der eine Verschiebung in x-Richtung um 5 mm und eine Verschiebung von 7 mm in y-Richtung bewirkt.

Körper zusammensetzen

Um kompliziertere Gebilde zu erzeugen, benötigt man im Grundsatz drei Operationen:

  • Zusammenfügen von verschiedenen Teilen
  • Wegschneiden eines Teils von einem  anderen
  • Schnittmenge bilden von mehreren Teilen

In OpenSCAD ist dies sehr einfach realisiert. Um beispielsweise mehrere Objekte zusammenzufügen, gibt es den Befehl union(){...}, der alle Objekte, die innerhalb der geschweiften Klammern aufgelistet werden, zu einem Objekt zusammenfügt.

Beispiel:


union(){
  cube([3,6,8]);
  translate([0,6,0])cube([3,3,4]);
}

fügt den obigen Quader und einen zweiten Quader (rot eingefärbt) zu einem Objekt zusammen.

Ähnlich funktioniert es auch, wenn man von einem Objekt etwas wegschneiden möchte. So bewirkt der folgende Code, dass von den zwei Quadern 5 verschieden platzierte Quader weggeschnitten werden:


difference(){
  union(){
    cube([3,6,8]);
    translate([0,6,0])cube([3,3,4]);
  }
  translate([0.5,0.5,0.5]) cube([2.55,2.25,3]);
  translate([0.5,3.25,0.5]) cube([2.55,2.25,3]);
  translate([0.5,6.25,0.5]) cube([2.55,2.25,3]);
  translate([0.5,0.5,4.5]) cube([2.55,2.25,3]);
  translate([0.5,3.25,4.5]) cube([2.55,2.25,3]);
}

Kompliziertere Figuren

Mit den sechs Grundfiguren, den zwei Transformationen „translate“ und „rotate“ sowie den Operationen „union“, „difference“ und „intersection“ lassen sich die meisten 3D-Objekte, die man mit Anfängerinnen und Anfängern überhaupt ausprobieren kann, realisieren. 

Über die hier beschriebenen Funktionen und Transformationen stehen jedoch noch eine Vielzahl an Funktionalitäten zur Verfügung, die man sich nach und nach aneignen kann. Insbesondere sind in OpenSCAD etliche Konzepte aus der Programmierung implementiert. So steht beispielsweise eine for-Schleife zur Auswahl, mit der man relativ einfach mehre Objekte in einer iterativen Schleife erzeugen kann. 

Im Unterschied zu anderen CAD-Programmen ist aber die Anzahl an Features und Funktionalitäten in OpenSCAD sehr übersichtlich. Die Vielfalt ensteht durch das geschickte Anordnen und Verknüpfen der verschiedenen Optionen. Sämtliche Funktionen von OpenSCAD haben auf einem Cheatsheet platz, das ziemlich übersichtlich ist.

Sämtliche in OpenSCAD vefügbaren Befehle und Operationen im Überblick.

Flexibel durch Variablen

Der grosse Unterschied von OpenSCAD zu anderen CAD-Programmen ist seine Skriptbasiertheit. Diese macht es möglich, dass man Grössen, die man später verändern können möchte, in Variablen speichern kann – genau so wie jeder anderen Programmiersprache. Dies macht es möglich, dass man mit einem Skript eine ganze Palette an verschiedenen Objekten speichern kann, die sich nur durch unterschiedliche Werte für die Variablen unterscheiden.  Die Verwendung von Variablen im Skript bietet einem maximale Flexibilität. 

So liefert das folgende Skript unzählige Objekte, sich lediglich in ihrer Höhe unterscheiden:


hoehe = 6;
difference(){
    union(){
        cube([3,6,hoehe]);
        translate([0,6,0])cube([3,3,hoehe/2]);
    }
    translate([0.5,0.5,0.5]) cube([2.55,2.25,hoehe/2-1]);
    translate([0.5,3.25,0.5]) cube([2.55,2.25,hoehe/2-1]);
    translate([0.5,6.25,0.5]) cube([2.55,2.25,hoehe/2-1]);
    translate([0.5,0.5,hoehe/2+0.5]) cube([2.55,2.25,hoehe/2-1]);
    translate([0.5,3.25,hoehe/2+0.5]) cube([2.55,2.25,hoehe/2-1]);
}

Zum Beispiel mit Höhe=6 (statt 8):

 

3D-Druck

Hat man sein 3D-Objekt fertig programmiert, möchte man es auf einem 3D-Drucker ausdrucken. Auch dieser Vorgang ist in OpenSCAD sehr einfach. Ein Klick auf den Button „STL“ genügt, und die Software erzeugt einem ein stl-File, das auf auf jedem beliebigen 3D-Drucker ausgedruckt werden kann. 

Einführung in die Programmierung

Mich überzeugt OpenSCAD vor allem deshalb, weil es für jeden Anfänger sehr einfach ist, mit wenigen Befehlen sein eigenes 3D-Objekt zu erstellen. Darüber hinaus dient es aber auch dem übergeordneten Ziel, möglichst vielen Schülerinnen und Schülern einen Einstieg ins Programmieren zu bieten. Bei OpenSCAD ist dieser meines Erachtens besonders einfach, weil man mit intuitiven Befehlen, die jede Gymnasiastin und jeder Gymnasiast nach einer kurzen Einführung versteht, 3D-Objekte konstruiert. Dass man dabei programmiert ist Nebensache. Im Vordergrund steht die Erzeugung eines 3D-Objekts. Dennoch lernen die SuS dadurch die Grundzüge jedes Computer-Programms (Abfolge von Befehlen, Zusammenfassen von Befehlen in Funktionen etc.) kennen und auf eine sehr intuitive Art auch anwenden. Durch die Einfachheit der Skriptsprache und das hervorragende Cheat-Sheet ist es den SuS nach sehr kurzer Zeit möglich, selbst aktiv zu werden und ihre eigenen Kreationen zu verwirklichen. 

 

Posts, die sie auch interessieren könnten:

RSS
Twitter
Google+
http://web2-unterricht.ch/2018/02/3d-objekte-programmieren-mit-openscad/
Facebook
3D-Objekte programmieren mit OpenSCAD
Markiert in:             

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.