Ein Flugzeug bauen

Ähnlich wie der Bleistift setzt sich auch das Modell eines Flugzeugs aus Grundelementen zusammen. Für die Flügel erstellen Sie ein eigenes Modul und nennen es wing. Ein Modul ähnelt vom Prinzip her einer Funktion: Es nimmt Parameter entgegen und liefert ein Objekt zurück, hier einen Flügel (Listing 2, Zeile 24).

Listing 2

$fn=100;
sep() flugzeug();
module flugzeug(){
// Flügel
wing(0.7);
translate([18,0,0]) wing(1);
translate([0,0,2.1]) rotate([90,-20,0]) wing(0.45);
// Rumpf
hull(){
  translate([-3,0,0]) sphere(1.5);
  translate([24,0,0]) sphere(3);
};
// Kanzel
translate([19,0,2]) scale([2,1,1]) color("red",0.6) sphere(2);
//Propeller
translate([26.5,0,0]) scale([2,1,1]) color("grey") sphere(1);
translate([27.3,0,0]) rotate([0,90,0]) color("grey",0.5) cylinder(h=0.5, r=5);
// Flügelmodul
module wing(s=1){
  rotate([90,0,0])
  scale([3*s,0.4*s,1*s*s])
  cylinder(h=35,r=1,center=true);
  };
};
module sep(){
  translate([0,0,-0.5]) difference(){
    children();
    translate([-40,-40,0]) cube(100);
  };
  translate([0,0,0.5]) intersection(){
    children();
    translate([-40,-40,0]) cube(100);
  };
};

Die geschweiften Klammern sind notwendig, da ein Modul typischerweise mehr als ein Objekt enthält. Die Flügel erzeugen wir aus einem deformierten Zylinder:

scale([3,0.4,1]) cylinder(h=35,r=1)

Der Befehl streckt die X-Achse um den Faktor 3, staucht die Y-Achse um 0,4 und belässt die Z-Achse, wie sie ist. Der Aufruf wing(1) erzeugt die Tragflächen, wings(0.7) das Höhenleitwerk. Der im Skript vorangestellte Befehl translate() verschiebt die Komponenten an die richtige Position.

Der Rumpf besteht aus zwei Kugeln, je eine vorne und hinten. Der Befehl hull() umschließt beide Objekte mit einer Schale und verknüpft sie zu einem neuen Objekt. Die anderen Elemente fügen Sie nach den bekannten Mustern hinzu (Abbildung 5).

Abbildung 5: Um das Modell eines kleinen Flugzeugs für den 3D-Druck vorzubereiten, teilen Sie die Zeichnung. So erhalten Sie eine glatte Fläche.

Für die Ausgabe auf einem 3D-Drucker bietet es sich an, das Objekt in zwei Teile zu zerlegen, um eine ebene Unterlage zu bekommen. Diese Arbeit übernimmt das Modul sep(). Das Objekt children() – beziehungsweise child(), sofern Sie eine Version vor 2015 nutzen – ist der Name des Objekts, auf dem sep() arbeitet. Der Befehl difference() zieht den oberen Teil des Flugzeugs ab, während intersection() genau den Bereich beschreibt, den es mit dem Würfel gemeinsam hat.

Code auslagern

Das Programm fällt etwas übersichtlicher aus, wenn Sie den Hauptteil des Programms in eine eigene Datei auslagern. Ein Beispiel für Lego-Steine verdeutlicht das Verfahren. Der Nachbau der Steine funktioniert genauso wie das Zusammensetzen des Flugzeugs aus einzelnen geometrischen Objekten. Mühsam ist das Ausmessen und Platzieren der Elemente. Wir stützen uns hier auf eine der zahlreichen Bibliotheken [2].

Als kleines Gimmick platziert der Code einen Schriftzug auf den Noppen der Steine. Bei der aktuellen OpenSCAD-Version genügt es, die Zeilen import("tech.stl"); durch linear_extrude(2) text("Linux"); in der Bibliothek zu ersetzen, um den Text zu platzieren. Der Befehl linear_extrude(2) macht aus dem Text ein 3D-Objekt, denn CGAL ist nicht in der Lage, gemischte 2D- und 3D-Objekte zu berechnen.

Wenn die Datei mit den Daten für den Spielstein den Namen lego_brici_builder.scad trägt, genügen zwei Zeilen zum Darstellen eines 6x2-Steins:

use <lego_brici_builder.scad>
brick(6,2,3);

Mit zusätzlichen Befehlen lässt sich selbst ein Turm schnell aufbauen. Die Schleife for (i=[0:1:6]) iteriert über die Variable i von 0 bis einschließlich 6 in Einerschritten. Da der Schleife nur ein Objekt folgt, ist eine geschweifte Klammer nicht zwingend. Die Befehle rotate() und translate() drehen und erhöhen die Bausteine mit jedem Durchlauf (Abbildung 6).

Abbildung 6: Durch das Auslagern von Code in eine separate Datei erstellen Sie mit einer Schleife Modelle aus mehreren Instanzen eines Moduls.

Sie möchten dem Bau zuschauen? Dazu ersetzen Sie die Zahl 6 in der Definition der Schleife durch die Variable $t*10 und wählen den Menüpunkt View | animate aus. Damit schalten Sie unter dem Fenster für die Ausgabe eine neue Eingabezeile frei. Dort geben Sie für Steps die Zahl 10 ein und für FPS (frames per second) eine 1.

Mit diesen Einstellungen erhöht sich die interne Variable $t jede Sekunde um ein Zehntel, um bei Erreichen von 1 wieder bei 0 anzufangen. Jede Sekunde baut die Schleife den Turm neu auf, jedes Mal um einen Schritt weiter. Sie speichern die Bilder, indem Sie die Checkbox rechts neben dem Feld Steps aktivieren. Ein Programm wie Ffmpeg macht daraus ein Video. Da die Software die Position des Betrachters über interne Variablen steuert, gelingen auch Kamerafahrten.

Falls es sich noch nicht herumgesprochen hat: Ein offen herumliegender Schlüssel stellt ein Sicherheitsrisiko dar. Zur Demonstration der Gefahr kam im Beispiel ein Foto eines Schlüssels aus der Wikipedia [3] zum Einsatz. Ein einfaches Programm zum Digitalisieren half dabei, über den Verlauf des Barts über 25 Referenzpunkte zu bestimmen. In OpenSCAD fungieren diese Werte als Vektor, mit den 2D-Punkten als Komponenten. Über folgendes Kommando übertragen Sie die Punkte in einen Polygonzug und anschließend in den Schlüsselbart mit einer Dicke von 0,2 Zentimetern:

linear_extrude(height=0.2) polygon(points);

Vier weitere Befehle fräsen mittels difference() zwei Fugen in die Oberseite und zwei in die Unterseite des Schlüssels. Hinzu kommt ein Ring zum Anfassen – fertig ist die 3D-Druckvorlage (Abbildung 7).

Abbildung 7: Mit OpenSCAD erstellen Sie von einfachen Schlüsseln im Handumdrehen ein Duplikat.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Programm der Tübix steht
    Am 13. Juni findet der Linuxtag in Tübingen, kurz Tübix, statt. Die Veranstalter haben jetzt das recht umfangreiche Programm veröffentlicht.
  • Fedora 19 Beta veröffentlicht

    Das Fedora-Projekt hat leicht verspätet die Beta für die kommende Version 19 seiner Linux-Distribution veröffentlicht.
  • Ubuntu, Linux Mint und Knoppix
    Ubuntu, Linux Mint und Knoppix basieren auf der Distribution Debian – wir verraten Tricks und Kniffe, welche die Arbeit auf diesen Systemen angenehmer machen.
  • Easy Programming
    Die Java-Software Processing verwandelt auch Nicht-Programmierer in Computerkünstler: Damit erzeugen Sie schnell und einfach bewegliche Figuren und stellen sie als Flash-ähnliches Applet ins Netz.
  • Neues auf den Heft-DVDs
    Nur mit dem optimalen System und der richtigen Software nutzen Sie das volle Potenzial Ihres Rechners. Mit der Heft-DVD erhalten Sie nicht nur topaktuelle Distributionen, sondern auch die passenden Programme zu den Artikeln.
Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Broadcom Adapter 802.11n nachinstallieren
Thomas Mengel, 31.10.2017 20:06, 2 Antworten
Hallo, kann man nachträglich auf einer Liveversion, MX Linux auf einem USB-Stick, nachträglich...
RUN fsck Manually / Stromausfall
Arno Krug, 29.10.2017 12:51, 1 Antworten
Hallo, nach Absturz des Rechners aufgrund fehlendem Stroms startet Linux nicht mehr wie gewohn...
source.list öffnet sich nicht
sebastian reimann, 27.10.2017 09:32, 2 Antworten
hallo Zusammen Ich habe das problem Das ich meine source.list nicht öffnen kann weiß vlt jemman...
Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 6 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...