—-
In einer der Eagle Newsgroups kam die Frage auf, ob es möglich sei, Eagle- Layouts in einer 3D-Darstellung zu betrachten. Das war es zu diesem Zeitpunkt nicht.
Ich hatte zu der Zeit gerade Ferien. Also beschloss ich, mich an die Arbeit zu machen. Das erste Problem war natürlich gleich: Wie kann man ein 2D-Bild in eines mit drei Dimensionen bringen. Da fiel mir POVRay ein.
POVRay ist ein bereits über 10 Jahre altes Open Source Projekt. Es ist ein Raytracer, der über eine Art Scriptsprache (SDL, Scene Description Language) gesteuert wird. Für das Eagle3D Projekt also geradezu ideal.
Eagle kann über ein User Language Programm (ULP) eine Textdatei erzeugen. Diese Textdatei muss dann die entsprechende SDL-Befehle enthalten, um die Platine in schönstem, dreidimensionalen Glanz erstrahlen zu lassen.
Des weiteren sind Eagle die Abmaße der Bauteile in der dritten Dimension nicht bekannt. Es musste also eine Bibliothek erstellt werden, welche Modelle verschiedenster Bauteile enthält, um diese dann in POVRay nutzen zu können.
Matthias Weißer
| Dateiname | Was ist das |
|---|---|
| Eagledateien (Unterverzeichnis /ulp) | |
| 3d40.ulp | ULP für Eagle ⇐4.09r2 |
| 3d41.ulp | ULP für Eagle >=4.1 |
| 3dfunc.ulp | Diverse Funktionen, die 3d.ulp benötigt |
| 3dpack.dat | Gehäusezuordnungsdatei |
| 3dconf.dat | Konfigurationsdatei (leer) |
| 3dlang(_x).dat | Sprachdatei Deutsch (andere Sprachen) |
| 3dcol(_x).dat | Farbzuordnungsdatei Deutsch (andere Sprachen) |
| 3d_cam.png | Grafik für Dialog |
| 3d_ko.png | Grafik für Dialog |
| Bilderpacket (Unterverzeichnis /ulp/img) | |
| *.png | Hier die Bilddateien aus dem Bilderpacket entpacken. |
| POVRay-Dateien (Unterverzeichnis /povray) | |
| cap.inc | Makros Kondensatoren |
| cap_wima.inc | Makros WIMA-Kondensatoren |
| connector.inc | Makros Steckverbinder |
| diode.inc | Makros Dioden |
| ic.inc | Makros ICs |
| qfp.inc | Makros xQFP-Gehäuse |
| resistor.inc | Makros Widerstände (alt) |
| socket.inc | Makros IC-Sockel |
| special.inc | Makros, die nirgends anders reinpassen |
| switch.inc | Makros Schalter/Taster |
| transistor.inc | Makros Transistoren |
| tools.inc | Diverse Makros, declares usw. |
| user.inc | Benutzer-Einstellungen (leer) |
| tex_elko.png | Texturdatei für Elkos |
| tex_elko_axial.png | Texturdatei für axiale Elkos |
| Beispieldateien (Unterverzeichnis /examples) | |
| MoDsMega.brd | Boarddatei zur Erstellung des Beispiels |
| MoDsMega.pov | POVRay Datei mit allen Optionen (v1.00) aktiviert |
| MoDsMega.png | Aus MoDsMega.pov erzeugtes Bild |
| MoDsMega.ini | INI-Datei für POVRay |
Es werden weiterhin diverse BRD-Dateien mitgeliefert, aus denen ein Großteil der bisher verfügbaren 3D-Modelle ersichtlich ist. Das zusätzlich Bilderpacket enthält Bilder aller Bauteile die z.Zt. erstellt sind. Die Bilder müssen sich in diesem Verzeichnis befinden, damit sie bei der Zuordnung unbekannter Bauelemente angezeigt werden können.
Benötigte Softwareversionen:
Für diese Version muss 3d40.ulp gestartet werden.
Zur Erzeugung der POVRay-Datei kann auch die Freeware zum Einsatz kommen, falls nur eine lizensierte 3.xx vorhanden ist.
www.cadsoft.de
Dies ist die aktuelle Release-Version von Eagle. Für diese Version muss 3d41.ulp gestartet werden.
www.cadsoft.de
Diese Software wird benötigt um aus der .pov-Datei ein Bild zu erzeugen.
www.povray.org
Für private Personen und Bildungseinrichtungen ist die Nutzung frei von jeglichen Auflagen. Für Firmen und kommerzielle Nutzung sollte ein kleiner Beitrag zur Bauteilebibliothek geleistet werden. Also einfach irgend ein Bauteil in der SDL erstellen und an mich einsenden. Da ich allerdings des öfteren mit Digitalelektronik rumbastle, bin ich auch an realen ICs interessiert. Insbesondere µC, Speicher, Displays, CPLDs und FPGAs sind gerne gesehen. Auch an geätzte Platinen besteht hin und wieder Bedarf. Einfach mal mit mir Kontakt aufnehmen.
Es ist allerdings jeder Nutzer angehalten, alle 3D-Modelle, die er erstellt, an mich zu senden, so dass ich die Bibliothek erweitern kann. Die Weiterverbreitung und Verwendung der 3D-Biblitheken und des ULPs in eigenen Projekten ist nur mit der Genehmigung des Autors gestattet. Das Copyright sämtlicher eingesandter Modelle verbleibt beim jeweiligen Autor.
Die Platine wird entweder als “prism” (Standard) oder als “box” erzeugt. Beim Erstellen der Umrandung der Platine im Layer 20 sollte eine Linie an die andere gezeichnet werden. Ansonsten können sehr merkwürdige Platinen entstehen. Sollte es Probleme bei der Darstellung geben, sollte die Option “rechteckige Platine” im Startdialog ausgewählt werden. Die Unterstützung für runde Platinen ist in der Version 0.97 zum ersten mal realisiert. Es sind nur Platinen möglich, die entweder komplett aus WIREs oder aus einem CIRCLE bestehen. Die Verwendung von ARCs wird nur für Eagle 4.1 unterstützt.
Diskrete Widerstände werden abhängig vom Value des Bauteils automatisch mit den richtigen Ringfarben versehen. Es werden jedoch nur 4 Ringe mit fester Toleranz (5% sprich goldener Toleranzring) erzeugt. Ebenso werden SMD-Widerstände mit der korrekten Kombination von drei Zahlen versehen. Das Value des Bauteils muss dabei ein bestimmtes Format haben.
Dabei sind folgende Formate möglich:
Die einzelnen Zahlen dürfen allerdings auch unterschiedlich viele Ziffern haben. So ist z.B. auch ‘12k’ oder ‘470’ möglich. Wird dieses Format nicht eingehalten, ist es nicht unbedingt vorauszusehen, was die Routine zur Berechnung der entsprechenden Farben/Zahlen ausgibt. Nach dem eigentlichen Widerstandswert können noch weitere Informationen folgen, die nicht mehr ausgewertet werden. Diese Informationen sollten aber nicht durch ‘R’; ‘k’; ‘M’; ‘,’ und ‘.’ abgetrennt werden.
Die innere Struktur von Multilayerplatinen kann betrachtet werden, wenn die Platine abgeschaltet wird und die Dicke der Platine sowie des Kupfers stark erhöht wird. Empfehlenswert ist hier eine Platinenstärke von etwa 30 mm und eine Kupferstärke von etwa 1 mm. Wird die Platine bei einer Multilayerplatine eingeblendet werden sämtlich inneren Kupferlagen sowie nicht sichtbare Durchkontaktierungen nicht ausgegeben.
Um ein Polygon korrekt auszugeben, muss es vor dem Start des ULP per “ratsnest” freigerechnet werden. Polygone werden in der POVRay-Datei aus vielen kleinen Boxen zusammengesetzt. Die Breite und damit die Anzahl dieser hängt direkt vom Parameter “width” des Polygons in Eagle ab. Ist dieser sehr klein eingestellt, können riesige POVRay-Dateien entstehen (>100 MB!). Um diese Dateien zu verarbeiten, benötigt POVRay eine Menge Arbeitsspeicher und sehr (und ich meine sehr) viel Zeit. Es sollte also darauf geachtet werden, die Breite nicht zu klein zu wählen. Als Faustregel sollten 0,1 mm nicht unterschritten werden. Allerdings kann es auch bei größeren Breiten schon zu enormen Renderzeiten kommen. Pro 500 bis 1000 Objekte wird etwa ein Megabyte Speicher benötigt. Ein gerades Stück Leiterbahn besteht dabei bereits aus 3 Objekten.
Es kann sich durchaus lohnen, die manuelle Zuordnung von Bauteilen zu verwenden. Oftmals ist zwar ein Modell in der Bibliothek vorhanden, es findet sich aber keine entsprechende Zuordnung. So kann dann ein Modell einem Eagle-Device zugeordnet werden. Diese Zuordnung wird in einer boardname.mpd gespeichert, welche bei weiteren Durchläufen wieder verwendet werden kann.
Bohrungen (VIAs, Pads und Holes) werden in den Standardeinstellungen grundsätzlich als schwarze Zylinder ausgeben. Für Übersichten über die Platine macht das fast keinen Unterschied zu realen Bohrungen. Wird diese Option genutzt, kann eingestellt werden, ab welchem Durchmesser reale Bohrungen erzeugt werden sollen. Standard sind hier 2 mm, was sich als recht brauchbarer Wert herausgestellt hat. Ist die reale Bohrung eine Durchkontaktierung, dann werden evtl. Leiterbahnen in die Bohrung gezeichnet. Dieses wird jedoch fast immer verhindert. Unter bestimmten Bedingungen kann es allerdings noch vorkommen. Wenn ein Polygon über eine Durckkontaktierung gezeichnet ist, wird diese ebenfalls geschlossen.
Jede einzelne POVRay-Datei kann auch als Modul verwendet werden, um z.B. ein Gesamtsystem aus mehreren einzelnen Modulen zusammenzusetzen. Dazu muss die Datei, die als Modul verwendet werden soll, in den Modulmodus geschaltet werden. Dies geschieht, indem man
#local use_file_as_inc = off;
auf “on” setzt. Nun kann diese Datei als .inc verwendet werden. In der Zieldatei wird nun
#include “filename”
direkt vor den anderen .inc-Dateien hinzugefügt. Nun kann über den Aufruf des Makros, das in der Moduldatei definiert ist und die Platine samt aller Bauteile enthält, das Modul hinzugefügt werden. Das Makro hat 6 Parameter.
mac_x_verVerschiebung des Moduls auf der x-Achse
mac_y_verVerschiebung des Moduls auf der y-Achse
mac_z_verVerschiebung des Moduls auf der z-Achse
mac_x_rotRotation des Moduls um die x-Achse
mac_y_rotRotation des Moduls um die y-Achse
mac_z_rotRotation des Moduls um die z-Achse
Das Makro sollte erst am Ende der Zieldatei aufgerufen werden, oder auf jeden Fall nach sämtlichen #declare, #include und #local.
Der Name des Makros ist entweder am Ende der Moduldatei ersichtlich, oder er kann aus dem Dateinamen der BRD-Datei ermittelt werden. Der Dateiname der BRD- Datei wird allerdings etwas abgeändert.
Beginnt der Dateiname mit einer Zahl, so wird diese durch ein ‘Z’ ersetzt.
Um verschiedene Bestückungsvarianten zu ermöglichen, unterstützt Eagle3D Exclude- Listen. Diese werden auf die POVRay-Datei angewendet, welche alle Bauteile enthält. Eine solche Exclude-Liste muss alle Bauteile enthalten, welche nicht gerendert werden sollen. Ein Eintrag einer solchen Liste könnte z.B. heißen
#declare pack_R32=off;
Hierbei bezeichnet der Teil nach dem Unterstrich (hier R32) den Namen des Bauteils wie er in Eagle hinterlegt ist. Enthält dieser Namen Sonderzeichen (Ü,Ä,Ö,ü,ä,ö,ß,”.”,”-”,” “,”$”) werden diese entweder durch die jeweiligen Vokale (als ä durch a usw.) oder durch einen Unterstrich ersetzt. Ein Zahl am Anfang des Namens wird durch ein “Z” ersetzt. Diese Änderungen sind nötig, da POVRay keine dieser Sonderzeichen in Bezeichnern akzeptiert. Eine Datei die mehrere solcher Einträge enthält, kann dann z.B. per
#include “exclude.ex”
in die POVRay-Datei aufgenommen werden.
Die Layer, die für den Bestückungsdruck verwendet werden, können im Startdialog (Reiter “Diverses”) eingestellt werden. Im Eingabefeld “Text aus Package” werden hierzu die gewünschten Layer-Nummern eingetragen. Beispiel: 21,22,25,26
Diese Werte werden in der 3dconf.dat gespeichert. Die Zuordnung, ob das entsprechende Element oben oder unten auf der Platine gezeichnet wird, wird anhand der Layernummer getroffen. Ist der Layer ungerade, wird oben gezeichnet, ist der Layer gerade, wird unten gezeichnet. Dies entspricht der Zuordnung der vordefinierten Layer von Eagle.
Einige Gehäuse können für mehrere Bauteile verwendet werden. Das typische Beispiel sind SMD-Gehäuse wie 1206 oder 0805. Aus diesem Grund wird für Gehäuse mit den Bezeichnungen 1210, 1206, 0805, 0603 und 0402 der erste Buchstabe des Bauteilnames vorangestellt und dann die Zuordnung vorgenommen. Es wird also einem Bauteil mit dem Namen R12 und dem Gehäuse 0805 ein Widerstand und einem mit dem Namen C58 und dem Gehäuse 0805 ein Kondensator zugeordnet.
Es können Animationen erstellt werden. Um eine Animation erstellen zu können, benötigt POVRay einen Kamerapfad, an dem die Kamera entlangfliegen kann. Dieser Pfad wird mit einer mathematischen Funktion (einem sog. Spline) realisiert. Dieser Spline benötigt mindestens drei Kontrollpunkte. Diese Punkte werden als einzelne Textelemente in einem frei definierbaren Layer (standardmäßig 230) erzeugt. Der Text dieser Textelemente muss einem bestimmten Format entsprechen. Dieses Format besteht aus zwei Zahlen.
Die erste Zahl stellt die Sequenzinformation dar, das heißt in dieser Reihenfolge werden die einzelnen Punkte angeflogen. Es darf also keine Zahl fehlen und es muss eine ganze Zahl angegeben werden.
Die zweite Zahl stellt die Höhe des Punktes über der Platinenoberfläche in mm dar. Diese Zahl darf auch als Kommazahl angegeben werden.
Ein solches Textelement könnte also so aussehen: “3 4.2” Das bedeutet, es ist der dritte Kontrollpunkt der Animation und befindet sich 4,2mm über der Platine.
Der Blickpunkt der Kamera befindet sich normalerweise auf dem Flugpfad kurz vor der Kamera. Es ist auch möglich einen gesonderten Blickpunktpfad einzufügen. Dazu werden einfach weitere Punkte wie für den Flugpfad eingefügt. Diesen Punkten wird aber ein “V” vorangestellt: z.B. “V1 3.1”.
Da POVRay eine INI-Datei benötigt, um eine Animation erstellen zu können, wird eine solche geschrieben sobald mindestens drei Kontrollpunkte angegeben wurden. Die INI-Datei hat den selben Namen wie die POVRay-Datei, allerdings mit der Endung INI. Wird diese Datei an POVRay zusammen mit der POVRay-Datei übergeben, so wird eine Folge von Einzelbildern erzeugt, die dann mit geeigneten Programmen (z.B. VirtualDub) zu einer Videodatei zusammengesetzt werden kann. Zusätzlich muss vor dem Start der Parameter
Um die Animation zu Rendern muss man die *.ini sowie die *.pov Datei öffnen. Nun wechselt man zur *.ini Datei und fügt oben folgende Zeile ein:
Input_File_Name=DATEINAME.pov
DATEINAME durch den Namen eurer *.pov Datei ersetzten und dann bei geöffneter *.ini Datei auf RUN klicken.
#declare global_anim = off;
muss auf ‘on’ gestellt werden. Wird der Parameter
#local global_anim_showcampath = no;
auf ‘yes’ gestellt, sorgt er dafür dass, der Pfad der Kamera dargestellt wird. Da dieser jedoch mit Kugeln visualisiert wird, sieht die Kamera lediglich das langweilige Innenleben der Kugeln. Auf der Registerkarte “Diverses” kann der Layer für die Angabe der Kontrollpunkte und die Anzahl der zu erzeugenden Bilder eingestellt werden. In der mitgelieferten modsmega.brd sind Kontrollpunkte gesetzt.
Aus speziell formatierten Objekten in Bibliothekselementen können Bauteile generiert werden. Die Darstellung erreicht zwar nicht die Qualität von “handgemalten” Bauteilen, reicht aber für eine einfache Darstellung aus. Die Kontur des Bauteils wird dazu in einem sonst ungenutzten Layer mit wire gezeichnet. Im selben Layer wird ein Textelement abgelegt, welches Informationen zur Höhe und Farbgebung des Bauteils enthält. Es können auch mehrere Layer verwendet werden so dass unterschiedlich hohe und gefärbte Teile eines Bauteils erzeugt werden können. Ein Beispiel, wie so etwas aussehen kann, findet sich in der mitgelieferten Bibliothek eagle3d.lbr.
Einige Beispiele für die beschreibenden Textelemente und was sie bewirken:
Ein Bauteil das 3 mm hoch und rot eingefärbt ist.
Ein Bauteil das 4,3 mm hoch ist und die Eagle3D Textur für silbrige Metalle nutzt.
Ein Bauteil das 2,5 mm hoch ist und eine selbstdefinierte POVRay Textur nutzt.
Bauteile werden ausgegeben
Leiterbahnen werden ausgegeben
Lötpads und SMD-Pads werden ausgeben
Ein roter Zylinder wird bei unbekannten Bauelementen ausgegeben.
Wird ein unbekanntes Bauteil gefunden, kann über einen Dialog ein Ge-häuse aus der Bibliothek verwendet werden. (siehe 4.5)
Wenn diese Option aktiviert ist, werden die Pins diskreter Bauelemente auf einige mm gekürzt.
Der Bestückungsdruck wird ausgegeben
Wird ein Durchlauf mit Bauteilzuordnung vorgenommen so wird diese auch in eine <boardname>.mpd geschrieben. Bei späteren Durchläufen kann diese Zuordnung mit dieser Option wieder übernommen werden. Ist diese Option selektiert kann keine automatische bzw. manuelle Zuordnung erfolgen.
Polygone werden ausgegeben. (siehe 4.4)
Bohrungen werden als echte Durchbrüche durch die Platine erzeugt. Allerdings werden bei Durchkontaktierungen die Leiterbahnen hinein-gezeichnet. (siehe 4.6)
Bohrungen werden nur als schwarze Punkte auf der Platine erzeugt. Erzeugt optisch beinahe den selben Effekt. (siehe 4.6)
Es werden drei Zylinder entlang den Koordinatenachsen ausgeben.
Die Platine wird ausgegeben. (siehe 4.1)
Die Platine wird als einfaches Rechteck ausgegeben.
Die Umgebung der Platine wird mit Wellen und Wolken dargestellt.
In der Platine werden Durchbrüche im Layer 20 erzeugt.
Der Dateiname der Ausgabedatei wird hier festgelegt. Dieser Dateiname wird in der Konfigurationsdatei gespeichert.
Der Pfad der Ausgabedatei wird auf den Pfad der Board-Datei gesetzt.
Na, die Einstellung der Sprache halt
Die POVRay-Datei wird geschrieben und das ULP beendet sich danach.
Die POVRay-Datei wird geschrieben, das ULP aber nicht beendet. Damit bleiben die Einstellungen im Dialog erhalten.
Die Dicke des Platinenmaterials.
Die Stärke der Kupferauflage auf der Platine.
Ab diesem Durchmesser werden echte Durchbrüche erzeugt. Bei kleinerem Durchmesser werden „Pseudobohrungen“ erzeugt.
Ab diesem Durchmesser werden VIA’s mit Lötstoplack überzogen.
Die Platine wird um die jeweilige Achse um den angegebenen Winkel gedreht.
An dieser Position befindet sich die Kamera
Auf diesen Punkt blickt die Kamera
Unter diesem Winkel öffnet sich der Kamerakegel
Diese Lichtquelle wird aktiviert.
Die Lichtquelle hat die angegebene Farbe.
Hier befindet sich die Lichtquelle
Hier zielt das Licht hin, wenn die Option Spotlight aktiviert wird
Das Licht ist kein Rundumlicht, sondern zielt auf einen bestimmten Punkt (s.o.)
Unter diesem Winkel öffnet sich der Lichtkegel mit voller Intensität.
Dieser Winkel sollte größer sein als der des Radius. Wenn dem so ist, nimmt die Intensität vom vollen Lichtkegel bis zu diesem Winkel stetig ab.
Die Lichtquelle wirft keinen Schatten, beleuchtet aber die Umgebung.
Die in der Textbox angegebenen Layer (Wire’s aus Packages) werden als Bestückungsdruck auf der Platine ausgegeben. (siehe 4.9)
Die in der Textbox angegebenen Layer (Wire’s aus Board) werden als Bestückungsdruck auf der Platine ausgegeben. (siehe 4.9)
Die in der Textbox angegebenen Layer (Text’s aus Packages) werden als Bestückungsdruck auf der Platine ausgegeben. (siehe 4.9)
Die in der Textbox angegebenen Layer (Text’s aus Board) werden als Bestückungsdruck auf der Platine ausgegeben. (siehe 4.9)
Hier können verschiedene Farbvoreinstellungen ausgewählt werden. Diese Einstellung kann im POVRay-File wieder verändert werden.
Wurde unter Farbpreset “Benutzer definiert” gewählt können hier die Farben ausgewählt werden.
Eine neue Farbe mit den gegebenen RGB-Werten und der Bezeichnung wird in der 3dcol.inc gespeichert und steht in Zukunft im Farbauswahl-dialog zur Verfügung.
Wer ein eigenes Modell einbinden will, muss zuerst mal das Makro erstellen. Das Format sollte ähnlich dem sein wie es in den mitgelieferten Bibliotheken. D.h. für Bauteile, die in verschiedenen Größen vorkommen (ICs, Kondensatoren), wird ein Grundmakro erstellt und an dieses dann nur noch die Parameter der einzelnen Bauteile übergeben. Für SMD-ICs sind bereits zwei relativ mächtige Makros vorhanden(QFP_grnd und SIC_grnd). Ist ein Bauteil erstellt, muss es noch in der Zuordnungsdatei eingetragen werden. In dieser Datei ordnet jede Zeile einem Eagle-Package ein 3D-Modell zu. Eine Zeile der 3dpack.dat beinhaltet einzelne Felder, die jeweils durch einen Doppelpunkt getrennt sind.
Diese Felder beinhalten folgendes:
| Field index | Field meaning | Boolean |
|---|---|---|
| [00] | EaglePackageName | |
| [01] | Name ausgeben | X |
| [02] | Value ausgeben | X |
| [03] | Farbringe erzeugen | X |
| [04] | SMD-Offset (Bauteile werden pcb_cuhight nach oben/unten gesetzt) | X |
| [05] | LED-Optionen (Der Dialog für LED-Optionen wird eingeblendet) | X |
| [06] | Sockelfähig (siehe Erklärung) | X |
| [07] | Höhe von Quarz erfragen | X |
| [08] | Bauteil hat kein Makro (z.B. SMD-Lötjumper) | X |
| [09] | SMD-Widerstand Zahlenkombination erzeugen | X |
| [10] | Sockelmakro | |
| [11] | Höhe des Sockels in 1/10mm | |
| [12] | Kommentar zum Sockel | |
| [13] | intern zur Verwaltung (z.Z. nicht verwendet) | |
| [14] | Korrekturwinkel (y-Achse) (Gehäuse zu Makro) | |
| [15] | Korrekturverschiebung x (in mm) | |
| [16] | Korrekturverschiebung y (in mm) | |
| [17] | Korrekturverschiebung z (in mm) | |
| [18] | Prefix des Namens benutzen | |
| [19] | Jumper auf Stiftleiste? (ein Dialog wird eingeblendet) | X |
| [20] | Dialog zur Logoauswahl wird eingeblendet | |
| [21] | Reserviert[8] | |
| [29] | Bounding-Box Minimum | |
| [30] | Bounding-Box Maximum | |
| [31] | POVRay-Makro(Makroname und eine öffnende Klammer) | |
| [32] | Kommentar zum Gehäuse (Deutsch) | |
| [33] | Kommentar zum Gehäuse (Englisch) |
Alle Felder, die mit einem Fragezeichen versehen sind, sind boolsche Variablen. D.h. es darf nur eine 1 oder eine 0 eingetragen werden. Ist die Option [06]
aktiviert, wird zusätzlich zum normalen Bauteil ein Sockel erzeugt. Die Informationen zum Sockel können den Feldern [10], [11] und [12] entnommen werden. Die Optionen für die einzelnen Gehäuse müssen genau zur Definition des Makros aus POVRay passen. Ansonsten wird eine fehlerhaft Datei erzeugt. Wer in der 3dpack.dat etwas ändert, sollte obigen Text also zu 100% verstanden haben. Zum Einbauen von neuen Makros hab ich zwar Zeit, aber um jedem die Details der Zuordnung zu erklären, fehlt sie mir dann doch etwas.
Diese Datei hat das selbe Format wie die 3dpack.dat und wird zusätzlich zu dieser als Zuordnungsdatei verwendet. Da diese Datei nicht mitgeliefert wird, können hier Zuordnungen eingetragen werden, die z.B. für selbst erstellt Librarys nötig sind.
Diese Dateien beinhalten sämtlich in den Dialogen verwendeten Texte in Deutsch bzw. in Englisch. Wenn jemand Interesse daran hat, kann er jede Zeile dieser Datei in eine andere Sprache übersetzen und mir schicken. Ich binde sie dann in das ULP ein.
In der user.inc können die Einstellungen, die in der POVRay-Datei selbst vorgenommen werden (Kamera usw. am Anfang der Datei die Zeilen mit #declare ...) festgelegt werden. Dazu einfach die Zeilen aus der erzeugten Datei in die user.inc kopieren und die gewünschten Einstellungen vor-nehmen. Die Zeilen mit #local können ebenfalls in der user.inc festgestellt werden. Dazu muß #local aber durch #declare ersetzt werden. Danach haben die Optionen in der erzeugten Datei keine Wirkungen mehr. Sie werden von denen der user.inc überschrieben.
Nach dem Herunterladen der Installationsdatei kann Eagle3D in ein beliebiges Verzeichnis installiert werden. Nach dem Installieren wählen sie File→Run im Boardeditor von Eagle und starten sie 3d40.ulp (Eagle 4.0x) bzw. 3d41.ulp (Eagle 4.1x) aus <installdir>/ulp. Die dann erzeugte POV-Datei muss in <installdir>/povray gespeichert werden. Alternativ kann der Pfad der INC-Dateien auch per INI-Datei an POVRay übergeben werden. Näheres dazu finden sie im Abschnitt 9.1.
Nach dem Entpacken der ZIP-Datei in ein beliebiges Verzeichnis ist das Vorgehen identisch zur Windows Version.
In der vom 3d.ulp erzeugten POVRay-Datei können noch einige Einstellungen getroffen werden. Was die einzelnen Punkte bewirken, soll hier kurz erklärt werden.
#declare use_file_as_inc = off;Wird dieser Wert auf “on” gesetzt kann die Datei als Includedatei in einer anderen POVRay-Datei benutzt werden. Z.B. um eine Platine aus mehreren Modulen zusammenzusetzen. Die Platine ist als Makro mit 6 Parametern definiert. Der Name des Makros kann der POVRay-Datei nach den Lichtzeilen entnommen werden.
#declare global_res_shape = 1;Mit “0” oder “1” wird die Form von diskreten Widerständen umgeschaltet.
#declare global_res_colselect = 0;Steht dieser Wert auf “0” werden die Farben der Widerstände durch die nächste Zeile vorgegeben. Steht er auf “1” erfolgt die Farbgebung nach dem Zufallsprinzip.
#declare global_res_col = 1;Mit diesem Wert kann die Farbe von diskreten Widerständen beeinflusst werden. Welche Zahl welche Farbe ergibt, ist in der POVRay-Datei ersichtlich.
#declare pcb_upsidedown = off;Wird hier ein “on” eingetragen wird die Unterseite der Platine dargestellt.
#declare pcb_rotdir = x;Um diese Achse wird das Board gedreht.
#declare environment = on;Die umgebenden Wellen können hier ausgeschaltet werden
#declare pin_length = 2.5;Die Länge der Pins von diskreten Bauteilen wird hier eingestellt.
#declare col_preset = 2;Verschiedene Farbvorgaben für Platine, Lötaugen, Bestückungsdruck usw. können hier umgestellt werden.
#declare pin_short = on;Steht dieser Wert auf “on” werden die Pins diskreter Bauteile auf das oben angegebene Maß gekürzt.
#local cam_x = 0; #local cam_y = 64; #local cam_z = -16; #local cam_a = 45; #local cam_look_x = 0; #local cam_look_y = 0; #local cam_look_z = 0;Hier können die Einstellungen der Kamera einfach vorgenommen werden.
#local pcb_rotate_x = 0; #local pcb_rotate_y = 0; #local pcb_rotate_z = 0;Die Platine wird um diese Werte gedreht.
#local pcb_parts = on; #local pcb_polygons = on; #local pcb_silkscreen = on; #local pcb_wires = on;Einzelne Teile der Platine können ausgeschaltet werden.
#local lgtx_pos_x = 12; #local lgtx_pos_y = 19; #local lgtx_pos_z = 8; #local lgtx_intense = 0.400000;Die Einstellungen der 4 Lichter kann hier vorgenommen werden.
#declare pcb_layer1_used = 1; #declare pcb_layer16_used = 1; #declare pcb_height = 1.500000; #declare pcb_cuhight = 0.035000; #declare inc_testmode = off;Diese Werte bitte nicht verändern
Die INC-Dateien werden in der erzeugten POVRay-Datei nicht mit absoluten Pfaden, sondern nur per Dateiname angegeben. Die INC-Dateien müssen also entweder im selben Verzeichnis wie die POVRay-Datei liegen oder man muss den Suchpfad für die Dateien an POVRay übergeben. Dies kann mit einer INI-Datei geschehen. Eine solche INI-Datei hat z.B. folgendes Format (Windows-Pfade):
;Pfad zum Windows-Font Verzeichnis Library_Path=C:\WINDOWS\Fonts ;Pfad zu den INC-Dateien Library_Path=C:\Daten\MATTHIAS\POVRay\eagle3D\inc
;Hierhin gehen die erzeugten Bilder ;wird das hier auskommentiert, landen sie ;im Verzeichnis der POVRay-Datei Output_File_Name=c:\temp\povout\ ;Format der Bilddatei Output_File_Type=S ;Typ N für PNG ;Typ S für Systemformat (Windows BMP, Mac Pict ...) ;Typ C für compressed Targa (RLE) ;Typ T für uncompressed Targa ;Typ P für Unix-PPM
;Einstellungen für Animationen Initial_Frame = 1 Final_Frame = 1 Initial_Clock = 0.0 Final_Clock = 1.0
Diese INI-Datei wird an die Windows-Version von POVRay z.B. dadurch übergeben, indem man ihren Pfad samt Dateinamen in die leere Zeile oberhalb des Dateireiters einfügt.
Zur Beschriftung der Bauteile kommt Courier Fett (courbd.ttf) zum Einsatz. Soll diese Schrift geändert werden, z.B. weil sie nicht vorhanden ist, kann der Name der Schriftdatei in der Datei tools.inc hier
#declare besch_font = “courbd.ttf”
entsprechend angepasst werden.
Dies ist das in POVRay verwendete Koordinatensystem. Die runden Pfeile geben jeweils die positive Drehrichtung um diese Achse an (linke Hand System).
Ein kleines Tutorial zum erstellen eigener Bauteile gibts hier
Es kann hier natürlich kein Grundkurs im Erstellen von Bauteilen gegeben werden. Ziel dieses Abschnittes ist es eine Art Styleguide aufzustellen wie die Makros gestaltet werden sollten damit sie einfach in Eagle3D integriert werden können. Folgende Punkte sind dabei zu beachten:
Es werden auch Makros angenommen die obige Bedingungen nicht erfüllen. Allerdings kann es dann etwas dauern bis sie in Eagle3D integriert werden. Makros die alle obigen Bedingungen erfüllen werden in den nächsten Release aufgenommen.
| In chronologischer Reihenfolge |
|---|
| Andreas Fecht <info(replace with at)vetter-und-fecht.de> |
| Robert Eckelmann <dc6xs(replace with at)dc6xs.de> |
| Axel Rühl <axel.ruehl(replace with at)gmx.de> |
| Tino Böhme <boehme.t(replace with at)web.de> |
| Andreas Rebmann <A.Rebmann-Elektrotechnik(replace with at)t-online.de> |
| Klaus Schmidinger <kls(replace with at)cadsoft.de> |
| Ing. J.M. Rafetseder <aon.912412027(replace with at)aon.at> |
| Uwe Bonnes <bon(replace with at)elektron.ikp.physik.tu-darmstadt.de> |
| Tobias Müller <Tobias_Mueller(replace with at)twam.info> |
| Tobyas Hennig <Tobyas.Hennig(replace with at)t-online.de> |
| Ulrich Trettner <ulrich(replace with at)trettner.de> |
| Rudi Hofer <rudi.hofer(replace with at)t-online.de> |
| Falk Stricker <Falk.Stricker(replace with at)gmx.de> |
| Frank Albert <ich(replace with at)ossiostborn.de> |
| Uwe Lorenz <u.lorenz(replace with at)er-dresden.net> |
| A. Zihlmann <berti(replace with at)wueschomania.org> |
| Walter Mücke <hochberg3(replace with at)01019freenet.de> |
| Joseph Zeglinski <JAZeglinski(replace with at)rogers.com> |
| Nigel Eke <nigel(replace with at)eke.name> |
| Duane Clark <dclark(replace with at)akamail.com> |
| Tilmann Reh <tilmann.reh(replace with at)autometer.de> |
| Richard Hammerl <hotline(replace with at)cadsoft.de> |
| MOSES <iloff(replace with at)mosesele.de> |
| Christian Hostelet <c.hostelet(replace with at)wanadoo.fr> |
| Henry Nestler <henry.nestler(replace with at)nexgo.de> |
| Friedrich Bleikamp <fbleikamp(replace with at)web.de> |
| Jan Bartels <j.bartels(replace with at)arcor.de> |
| Willi Ring <willi.ring(replace with at)web.de> |
| Oliver Saal <osaal(replace with at)gmx.de> |
| Juraj Rojko <juraj(replace with at)rojko.cz> |
| Daniel Cardona <dancardona50(replace with at)hotmail.com> |
| Frantiek Burian <BuFran(replace with at)seznam.cz> |
| Michael <info(replace with at)elk-tronic.de> |
| Carsten Kögler <koegler(replace with at)ftz-leipzig.de> |
| hebel23 <hebel(replace with at)hebel23.de> |
| Patrik Arvén-Mayer <patrik.arven(replace with at)home.se> |
| Björn Schrader <b.schrader(replace with at)gmx.de> |
| Bernd Karle <info(replace with at)bksoft.de> |
| Philippe Boucheny <philippe.boucheny(replace with at)free.fr> |
Sollte ich jemanden vergessen haben, einfach melden.
| Kontakt: |
|---|
| Matthias Weißer |
| Albert-Schweitzer-Str. 29 |
| D-78087 Mönchweiler |
| matthias@matwei.de |
| http://www.matwei.de |
Bei eMails an mich bitte ich darum in den Betreff “[Eagle3D]” einzufügen. Es kann ansonsten vorkommen, dass einzelne Mails in meinem Spamfilter hängenbleiben. Ich bin immer offen für neue Bauteile, Vorschläge und Fragen, was das ULP und die 3D-Bibliothek betrifft.
Ich bitte aber darum, bei zugesendeten Dateien die üblichen Packverfahren (jpg für Bilder, png bzw. gif für Schaltpläne, zip um alles herum) zu verwenden. Bilder in 1024×768 mit ISDN als BMP herunterzuladen, macht keinen Spaß. Sollte es wirklich mal unvermeidlich sein, große Datenmengen per Mail zu schicken (> 2 MB), bitte vorher Kontakt aufnehmen.
Sollte irgendein Fehler auftreten, bitte ich darum die betreffende BRD-Datei oder eine Datei, in der der Fehler auftritt, mitzusenden. Erleichtert mir die Fehlersuche. Vielen Dank für das Verständnis.